From 41a25b6e417501cb6287df498ef6badcaced0801 Mon Sep 17 00:00:00 2001
From: dorababu <dorababu@subcom.tech>
Date: Wed, 3 Aug 2022 16:27:59 +0530
Subject: [PATCH] Compare sha256 hash with Crypto lib

---
 .../.pio/build/Teensy_SHA/.sconsign310.dblite |  Bin 0 -> 253489 bytes
 .../FrameworkArduino/AudioStream.cpp.o        |  Bin 0 -> 5652 bytes
 .../FrameworkArduino/CrashReport.cpp.o        |  Bin 0 -> 1920 bytes
 .../FrameworkArduino/DMAChannel.cpp.o         |  Bin 0 -> 2988 bytes
 .../FrameworkArduino/EventResponder.cpp.o     |  Bin 0 -> 6820 bytes
 .../FrameworkArduino/HardwareSerial.cpp.o     |  Bin 0 -> 1572 bytes
 .../FrameworkArduino/HardwareSerial1.cpp.o    |  Bin 0 -> 8892 bytes
 .../FrameworkArduino/HardwareSerial2.cpp.o    |  Bin 0 -> 9356 bytes
 .../FrameworkArduino/HardwareSerial3.cpp.o    |  Bin 0 -> 9356 bytes
 .../FrameworkArduino/HardwareSerial4.cpp.o    |  Bin 0 -> 776 bytes
 .../FrameworkArduino/HardwareSerial5.cpp.o    |  Bin 0 -> 776 bytes
 .../FrameworkArduino/HardwareSerial6.cpp.o    |  Bin 0 -> 776 bytes
 .../FrameworkArduino/IPAddress.cpp.o          |  Bin 0 -> 1676 bytes
 .../FrameworkArduino/IntervalTimer.cpp.o      |  Bin 0 -> 2608 bytes
 .../Teensy_SHA/FrameworkArduino/Print.cpp.o   |  Bin 0 -> 5292 bytes
 .../Teensy_SHA/FrameworkArduino/Stream.cpp.o  |  Bin 0 -> 5400 bytes
 .../Teensy_SHA/FrameworkArduino/Time.cpp.o    |  Bin 0 -> 2016 bytes
 .../Teensy_SHA/FrameworkArduino/Tone.cpp.o    |  Bin 0 -> 4048 bytes
 .../Teensy_SHA/FrameworkArduino/WMath.cpp.o   |  Bin 0 -> 2516 bytes
 .../Teensy_SHA/FrameworkArduino/WString.cpp.o |  Bin 0 -> 20164 bytes
 .../Teensy_SHA/FrameworkArduino/analog.c.o    |  Bin 0 -> 4484 bytes
 .../FrameworkArduino/avr_emulation.cpp.o      |  Bin 0 -> 1304 bytes
 .../Teensy_SHA/FrameworkArduino/eeprom.c.o    |  Bin 0 -> 3948 bytes
 .../FrameworkArduino/keylayouts.c.o           |  Bin 0 -> 992 bytes
 .../Teensy_SHA/FrameworkArduino/main.cpp.o    |  Bin 0 -> 1028 bytes
 .../FrameworkArduino/math_helper.c.o          |  Bin 0 -> 4912 bytes
 .../FrameworkArduino/memcpy-armv7m.S.o        |  Bin 0 -> 1016 bytes
 .../Teensy_SHA/FrameworkArduino/memset.S.o    |  Bin 0 -> 552 bytes
 .../Teensy_SHA/FrameworkArduino/mk20dx128.c.o |  Bin 0 -> 10140 bytes
 .../Teensy_SHA/FrameworkArduino/new.cpp.o     |  Bin 0 -> 1796 bytes
 .../Teensy_SHA/FrameworkArduino/nonstd.c.o    |  Bin 0 -> 2600 bytes
 .../FrameworkArduino/pins_teensy.c.o          |  Bin 0 -> 12472 bytes
 .../Teensy_SHA/FrameworkArduino/ser_print.c.o |  Bin 0 -> 768 bytes
 .../Teensy_SHA/FrameworkArduino/serial1.c.o   |  Bin 0 -> 11040 bytes
 .../Teensy_SHA/FrameworkArduino/serial2.c.o   |  Bin 0 -> 9628 bytes
 .../Teensy_SHA/FrameworkArduino/serial3.c.o   |  Bin 0 -> 8928 bytes
 .../Teensy_SHA/FrameworkArduino/serial4.c.o   |  Bin 0 -> 764 bytes
 .../Teensy_SHA/FrameworkArduino/serial5.c.o   |  Bin 0 -> 764 bytes
 .../Teensy_SHA/FrameworkArduino/serial6.c.o   |  Bin 0 -> 764 bytes
 .../FrameworkArduino/serial6_lpuart.c.o       |  Bin 0 -> 772 bytes
 .../FrameworkArduino/serialEvent.cpp.o        |  Bin 0 -> 1032 bytes
 .../FrameworkArduino/serialEvent1.cpp.o       |  Bin 0 -> 1036 bytes
 .../FrameworkArduino/serialEvent2.cpp.o       |  Bin 0 -> 1036 bytes
 .../FrameworkArduino/serialEvent3.cpp.o       |  Bin 0 -> 1036 bytes
 .../FrameworkArduino/serialEvent4.cpp.o       |  Bin 0 -> 772 bytes
 .../FrameworkArduino/serialEvent5.cpp.o       |  Bin 0 -> 772 bytes
 .../FrameworkArduino/serialEvent6.cpp.o       |  Bin 0 -> 772 bytes
 .../FrameworkArduino/serialEventUSB1.cpp.o    |  Bin 0 -> 1052 bytes
 .../FrameworkArduino/serialEventUSB2.cpp.o    |  Bin 0 -> 1052 bytes
 .../Teensy_SHA/FrameworkArduino/touch.c.o     |  Bin 0 -> 1368 bytes
 .../FrameworkArduino/usb_audio.cpp.o          |  Bin 0 -> 768 bytes
 .../Teensy_SHA/FrameworkArduino/usb_desc.c.o  |  Bin 0 -> 2752 bytes
 .../Teensy_SHA/FrameworkArduino/usb_dev.c.o   |  Bin 0 -> 8544 bytes
 .../FrameworkArduino/usb_flightsim.cpp.o      |  Bin 0 -> 772 bytes
 .../FrameworkArduino/usb_inst.cpp.o           |  Bin 0 -> 3848 bytes
 .../FrameworkArduino/usb_joystick.c.o         |  Bin 0 -> 772 bytes
 .../FrameworkArduino/usb_keyboard.c.o         |  Bin 0 -> 772 bytes
 .../Teensy_SHA/FrameworkArduino/usb_mem.c.o   |  Bin 0 -> 2540 bytes
 .../Teensy_SHA/FrameworkArduino/usb_midi.c.o  |  Bin 0 -> 768 bytes
 .../Teensy_SHA/FrameworkArduino/usb_mouse.c.o |  Bin 0 -> 768 bytes
 .../Teensy_SHA/FrameworkArduino/usb_mtp.c.o   |  Bin 0 -> 764 bytes
 .../FrameworkArduino/usb_rawhid.c.o           |  Bin 0 -> 768 bytes
 .../FrameworkArduino/usb_seremu.c.o           |  Bin 0 -> 768 bytes
 .../FrameworkArduino/usb_serial.c.o           |  Bin 0 -> 5112 bytes
 .../FrameworkArduino/usb_serial2.c.o          |  Bin 0 -> 768 bytes
 .../FrameworkArduino/usb_serial3.c.o          |  Bin 0 -> 768 bytes
 .../Teensy_SHA/FrameworkArduino/usb_touch.c.o |  Bin 0 -> 768 bytes
 .../Teensy_SHA/FrameworkArduino/yield.cpp.o   |  Bin 0 -> 1916 bytes
 TestSHA256/.pio/build/Teensy_SHA/firmware.elf |  Bin 0 -> 125524 bytes
 TestSHA256/.pio/build/Teensy_SHA/firmware.hex | 1331 +++++++++++++++++
 .../lib1ac/DFRobot_ID809/DFRobot_ID809.cpp.o  |  Bin 0 -> 20752 bytes
 .../Teensy_SHA/lib1ac/libDFRobot_ID809.a      |  Bin 0 -> 23306 bytes
 .../build/Teensy_SHA/lib516/SHA256/sha256.c.o |  Bin 0 -> 2612 bytes
 .../.pio/build/Teensy_SHA/lib516/libSHA256.a  |  Bin 0 -> 2816 bytes
 .../lib537/DFRobot_ID809/DFRobot_ID809.cpp.o  |  Bin 0 -> 20752 bytes
 .../Teensy_SHA/lib537/libDFRobot_ID809.a      |  Bin 0 -> 23306 bytes
 .../build/Teensy_SHA/lib6bd/SHA256/sha256.c.o |  Bin 0 -> 2612 bytes
 .../.pio/build/Teensy_SHA/lib6bd/libSHA256.a  |  Bin 0 -> 2816 bytes
 .../build/Teensy_SHA/libFrameworkArduino.a    |  Bin 0 -> 235286 bytes
 .../build/Teensy_SHA/libbc6/Wire/Wire.cpp.o   |  Bin 0 -> 764 bytes
 .../Teensy_SHA/libbc6/Wire/WireIMXRT.cpp.o    |  Bin 0 -> 768 bytes
 .../Teensy_SHA/libbc6/Wire/WireKinetis.cpp.o  |  Bin 0 -> 9956 bytes
 .../Teensy_SHA/libbc6/Wire/utility/twi.c.o    |  Bin 0 -> 760 bytes
 .../.pio/build/Teensy_SHA/libbc6/libWire.a    |  Bin 0 -> 13350 bytes
 .../.pio/build/Teensy_SHA/src/main.cpp.o      |  Bin 0 -> 5172 bytes
 TestSHA256/.pio/build/project.checksum        |    1 +
 .../libdeps/Teensy_SHA/DFRobot_ID809/.piopm   |    1 +
 .../DFRobot_ID809/DFRobot_ID809.cpp           | 1089 ++++++++++++++
 .../Teensy_SHA/DFRobot_ID809/DFRobot_ID809.h  |  504 +++++++
 .../Teensy_SHA/DFRobot_ID809/library.json     |    4 +
 .../.pio/libdeps/Teensy_SHA/SHA256/.piopm     |    1 +
 .../libdeps/Teensy_SHA/SHA256/library.json    |    4 +
 .../.pio/libdeps/Teensy_SHA/SHA256/sha256.c   |  169 +++
 .../.pio/libdeps/Teensy_SHA/SHA256/sha256.h   |   48 +
 .../.pio/libdeps/Teensy_SHA/integrity.dat     |    2 +
 .../lib/DFRobot_ID809/DFRobot_ID809.cpp       | 1089 ++++++++++++++
 TestSHA256/lib/DFRobot_ID809/DFRobot_ID809.h  |  504 +++++++
 TestSHA256/lib/SHA256/sha256.c                |  169 +++
 TestSHA256/lib/SHA256/sha256.h                |   48 +
 TestSHA256/platformio.ini                     |    9 +
 TestSHA256/src/main.cpp                       |  178 +++
 101 files changed, 5151 insertions(+)
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/.sconsign310.dblite
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/AudioStream.cpp.o
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/CrashReport.cpp.o
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/DMAChannel.cpp.o
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/EventResponder.cpp.o
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/HardwareSerial.cpp.o
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/HardwareSerial1.cpp.o
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/HardwareSerial2.cpp.o
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/HardwareSerial3.cpp.o
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/HardwareSerial4.cpp.o
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/HardwareSerial5.cpp.o
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/HardwareSerial6.cpp.o
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/IPAddress.cpp.o
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/IntervalTimer.cpp.o
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/Print.cpp.o
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/Stream.cpp.o
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/Time.cpp.o
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/Tone.cpp.o
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/WMath.cpp.o
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/WString.cpp.o
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/analog.c.o
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/avr_emulation.cpp.o
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/eeprom.c.o
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/keylayouts.c.o
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/main.cpp.o
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/math_helper.c.o
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/memcpy-armv7m.S.o
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/memset.S.o
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/mk20dx128.c.o
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/new.cpp.o
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/nonstd.c.o
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/pins_teensy.c.o
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/ser_print.c.o
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/serial1.c.o
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/serial2.c.o
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/serial3.c.o
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/serial4.c.o
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/serial5.c.o
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/serial6.c.o
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/serial6_lpuart.c.o
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/serialEvent.cpp.o
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/serialEvent1.cpp.o
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/serialEvent2.cpp.o
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/serialEvent3.cpp.o
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/serialEvent4.cpp.o
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/serialEvent5.cpp.o
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/serialEvent6.cpp.o
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/serialEventUSB1.cpp.o
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/serialEventUSB2.cpp.o
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/touch.c.o
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/usb_audio.cpp.o
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/usb_desc.c.o
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/usb_dev.c.o
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/usb_flightsim.cpp.o
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/usb_inst.cpp.o
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/usb_joystick.c.o
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/usb_keyboard.c.o
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/usb_mem.c.o
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/usb_midi.c.o
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/usb_mouse.c.o
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/usb_mtp.c.o
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/usb_rawhid.c.o
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/usb_seremu.c.o
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/usb_serial.c.o
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/usb_serial2.c.o
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/usb_serial3.c.o
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/usb_touch.c.o
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/yield.cpp.o
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/firmware.elf
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/firmware.hex
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/lib1ac/DFRobot_ID809/DFRobot_ID809.cpp.o
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/lib1ac/libDFRobot_ID809.a
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/lib516/SHA256/sha256.c.o
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/lib516/libSHA256.a
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/lib537/DFRobot_ID809/DFRobot_ID809.cpp.o
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/lib537/libDFRobot_ID809.a
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/lib6bd/SHA256/sha256.c.o
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/lib6bd/libSHA256.a
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/libFrameworkArduino.a
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/libbc6/Wire/Wire.cpp.o
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/libbc6/Wire/WireIMXRT.cpp.o
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/libbc6/Wire/WireKinetis.cpp.o
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/libbc6/Wire/utility/twi.c.o
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/libbc6/libWire.a
 create mode 100644 TestSHA256/.pio/build/Teensy_SHA/src/main.cpp.o
 create mode 100644 TestSHA256/.pio/build/project.checksum
 create mode 100644 TestSHA256/.pio/libdeps/Teensy_SHA/DFRobot_ID809/.piopm
 create mode 100644 TestSHA256/.pio/libdeps/Teensy_SHA/DFRobot_ID809/DFRobot_ID809.cpp
 create mode 100644 TestSHA256/.pio/libdeps/Teensy_SHA/DFRobot_ID809/DFRobot_ID809.h
 create mode 100644 TestSHA256/.pio/libdeps/Teensy_SHA/DFRobot_ID809/library.json
 create mode 100644 TestSHA256/.pio/libdeps/Teensy_SHA/SHA256/.piopm
 create mode 100644 TestSHA256/.pio/libdeps/Teensy_SHA/SHA256/library.json
 create mode 100644 TestSHA256/.pio/libdeps/Teensy_SHA/SHA256/sha256.c
 create mode 100644 TestSHA256/.pio/libdeps/Teensy_SHA/SHA256/sha256.h
 create mode 100644 TestSHA256/.pio/libdeps/Teensy_SHA/integrity.dat
 create mode 100644 TestSHA256/lib/DFRobot_ID809/DFRobot_ID809.cpp
 create mode 100644 TestSHA256/lib/DFRobot_ID809/DFRobot_ID809.h
 create mode 100644 TestSHA256/lib/SHA256/sha256.c
 create mode 100644 TestSHA256/lib/SHA256/sha256.h
 create mode 100644 TestSHA256/platformio.ini
 create mode 100644 TestSHA256/src/main.cpp

diff --git a/TestSHA256/.pio/build/Teensy_SHA/.sconsign310.dblite b/TestSHA256/.pio/build/Teensy_SHA/.sconsign310.dblite
new file mode 100644
index 0000000000000000000000000000000000000000..f0c67470b2da7559a81dfecdea3dd8e4012f1984
GIT binary patch
literal 253489
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
JtI4xD{U<zn1N;C0

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/AudioStream.cpp.o b/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/AudioStream.cpp.o
new file mode 100644
index 0000000000000000000000000000000000000000..d1a64ce43fb28140797eac9b21049b937a6cba67
GIT binary patch
literal 5652
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

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/CrashReport.cpp.o b/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/CrashReport.cpp.o
new file mode 100644
index 0000000000000000000000000000000000000000..c7ca06f5fe697043e383db4d4af319de995390f9
GIT binary patch
literal 1920
zcma)6OKTHR6h4zlpJ{6wT3R2-RZ304PLrBcDk7GU1hFk8L=kI|nPen^Bok)F(5}R_
z{(vsJ5D`}*Zd{5h|A7k^{sMR6!kzUyGjr4F)JG4TIgjt$^SF<BQdlc0ib9eUO3|T3
z^e*lpeOXVWC`qSi{C%Q6QrxO9UK}i{xAsb+c<}Srfg;8~&_@pIlpqDZA<EmjQ!kqx
z%XUS>5pByAdRK2Wb)#ttt1T*~*>-ltT3*bFE7}eX^4d~9e@&!H8+Sy-vYL)~WZ7c1
zye<kY!>rZJn%K0hs_8hE?aYgumen$1DV<qPuVhw4$~K#(?wIpp3riNwV97#m!Lapq
zwJvP4+i)5vy_8L7SC+SFHI0(GsT&Pa=AicF(X6?%u%4y<(Sh}$STa7TOexdqjB;8z
zqnwX%i(v}yTb#ZhgfaEVt`ezqbh!#om{f|>MA!j)685>C&p#Mxs?;Be@0XA#RT_xk
z0}*`C%YW$fPM~M1G#tT)dl)M!B_entf{#Y*F`9;l_e_A3nC}Lpq;V)^Fyp*aNzB&?
zY@R%cd7eQsjesX`V_td|ArsrEAG&l}wbP+lmu749@czc_%yJ0JH+9Fk+OZpLw_+8_
zxlPtM%-4LR*)DY1cYI~8ii>9d4Xt(!531ZfzB1e(dQO6er~EUHjgj{TVtnYJ*bF|J
zv)giY1Jbp9S(h3vs!Li;cXiSX#~}^ZUt_0s!f|`S$J^`;_>UNWOs}eKaT}=n$C0%F
zM&lVR>-Xu!hYp0as?}<lI0OxESJPeBZWxbU)A6?AM4z*W;=3bXf&c$HTq<ARg&<D8
zzGxihV7dh67xBM1{)a^C3iu?+S9=+bA@I!rc#gz;=b1T%nd@zX!}%%!2H}y+_Y_t*
z?jCH3aiG*+2XS)#2eA45NRn~<mcsq*qd)G4`(w#*EI)y{?h=@(4(2_O#Bq#&38dV=
zJ=n4q)SmtsdbsYZP+k6`$hzO4b6#0%AG!sW#2E7rFj91+KLKY(8ju{r#Q$2^8{2PS
ls1k%NRhDw^IPN+eFTlKh63qSa9`Ov}d|$EXEqsz>zTW_6`Y-?h

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/DMAChannel.cpp.o b/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/DMAChannel.cpp.o
new file mode 100644
index 0000000000000000000000000000000000000000..8c95899153b2c2f9312a13e0898f7f1fa5237993
GIT binary patch
literal 2988
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

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/EventResponder.cpp.o b/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/EventResponder.cpp.o
new file mode 100644
index 0000000000000000000000000000000000000000..2d0d76acdfacb6c681e908131b06b25fd458a26b
GIT binary patch
literal 6820
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

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/HardwareSerial.cpp.o b/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/HardwareSerial.cpp.o
new file mode 100644
index 0000000000000000000000000000000000000000..e161113cd36e0ddef244d9e1d781bd129ee4a5e2
GIT binary patch
literal 1572
zcmb7EPfrt35TEUq|DuIpKqR^f(W0`pWg+58D5a9LgdkopX5H>S?8dgc*|!up852K*
z#-pD=;?a-50lgV7#*0_QgWPmxyHB<a3QjVe`OW|Lc3z+63Ja1XfglNzaEJg#;(@14
z3q%rnp&Q({iKRqQ+uD6|z5HTsVDH)jjLM%^4&oP|&Gqg{lb?28&;5MAHu7Pob1`=?
z3O!pHH~TFn_qgsmH$S={UEcpH`UNtd&E8g$`K9~Hs^e6+vhH}w>`GC|RZGmWn58Ux
zj>$N8JU*^WshXNrGO6@*Y9>9SBt2GP24~~S15CNe!jy@riIQj3%(CLKy3K8;rew5~
zHZ%PYW>eVIU`ELX=?bcCS;zC))<jW*_TG+SSFAriAf1&4<ss>uG%Q_+HO-13dOvaa
z{wwO2o4f!rG^fjGiINO)7>F7W4<erbV{3c>0cB_p`~m~wD9O;#;_ryMv3q9=?t)>o
z(3zHz`>}sM5|KdtQHUv~59_}S@u>h~|GS1~Z5kfC$2{ApsHW?}m=9wX=xa-9t=XGN
z8<w@|G(vNAR`Yqm=6<dY+cv9Mx?%cuo#|$onNRffit(5qRb^7+y6J4xe4Ph9xxQ)p
z<q+sBD4RPfF>{OmGllLw){RFZiC0x1c?N$}zFqZ=5=!4|$g<FId3;bU!#6-JaSkf3
zq)JBhzs^s&M`j!|^561Kc1Nn|RIB(EK*i^y8ouw@r465PJn~8DJO<Kkh)rz#R~%-G
z7jP+z6EC1Oj%pBHMW!u1E{@)DYhT)7LE`1yKtmVuozRiM!b7O{AX5x6^)o{$`aVZY
zJ1$7ndxeJRd=w{Ur&ytX40W25h~k_;Yy40g@fT$5={BqYKTt^vfKt@!LtV^9?j(YJ
lQbH1OB*mSRYYYtvGM(i#GMyuVOm`BkH;+lXXcHvr{RZzB`KAB>

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/HardwareSerial1.cpp.o b/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/HardwareSerial1.cpp.o
new file mode 100644
index 0000000000000000000000000000000000000000..53770c4c91a32fc7062484471f0ca1b9a0a82a8d
GIT binary patch
literal 8892
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
G^!^7sKG7fm

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/HardwareSerial2.cpp.o b/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/HardwareSerial2.cpp.o
new file mode 100644
index 0000000000000000000000000000000000000000..a6a25be9145014014f933fe527ba950b13c031a4
GIT binary patch
literal 9356
zcmcgxTWnO<72Pw}fO)lskm3X|gE0lmc<k{5;{pO|#)jBf#5e^7(qSIgo*^?H_s+F}
zmNYG;^dZuZmi{5NRjJfeZIz_(k+v53;3HL{Dy>i(RjJeuR7FZZnxCdpXzAK_&Y62=
zXYSyBv|GBf&pvCNb<Tb5eP-tQ_}FkL6e4XQ+ChFqbZEVYEa~&y4tk0vJbV*k=51Df
zi}G8Q-=_R_<=d6-P`*?7F6Cp&_bT77{DAU<%I{HrpYr>aKdAhW@^R%yls^LBIQm56
zBZr!9H4Oja!}tIG;DdiZSTefdy!CR^LS%U1-KGQRxlM<@+XyN(-fA3XMkvy_V77Oo
zf3=4+42Onyc&*6r?u91wuNz*Y;--bha{IRStgUsZyZN@MTZt=Uyp>>V+4E=9t)-*u
zhOPIWq?gp%tJlmNd05${Pi)A3=hI7m*L3UkSAgPdnihWZO7jTa=5zdC<2=Xz!@L`Y
ziQcu0*+zzjJ{8$9GX7L#vRKTQB2z^ta&Y2kBwk3_nT(x@9CM0kyHqMVrS?dFv@aTq
z^mNB|bq~e{BRd>BZzoH3d*l>`blGZ1XMbnPNzSCR5yzg-m2$<INKapP-{7ui=wLUd
zPTI*-jzXVAbIDNAaqaV+NBd~$>Saflhu1c&3q2ZIZ#9P=3q2lc2^%Z*n&vy#K<_^=
zaf_PGkSuyk#E*-313g;Rv%ynntMqNCw76l>Cc)>o+cyhud9~hVA4JQdEdu9k;G0ET
z1<qN*H;c9joU?~-7Ht<eXBFQpY8N<X8{aJI5IAQc-z@4BIA<r{Eb0<CXD#0>iV2*v
znQs>L3Y@c?Zx;0noU@;A77Yk|z`LItD-_O>zF9OV_?$g`vuKaNIjj0+(LRB5w)M@T
z{Q}?bgJ@ZFP~e=MeY0pt;6vhkIE(vcQC#rjg3sCBH;YCDe?;)PD)?s65y3wq_*^}F
zvuM=A{hm?3iIzoU0v{9jxWLB+eoVwqirCB+JYRJ>vCw0hMGa;Mbcu+Uig=lbb%rf>
zTeMu@D@43f#H&QSTErg{@yA8nB;qw9UMu29M7&PK)!EFVPY8THafalpyc5S-M7s?J
zuVz@pB^C3SEqFe@0ncqd^H${7pTKM5@xR33<D2P^D&|bz3Wa~bYh(VubO6usN(|=l
z+-^mF?NBk_saE9E6AUV2j$4Iqr|${;R|@ARr4{+~ZGrz);pO={XqoZIao>8xJfw_w
z(r$qtR(N@RT{I=|Ife6+*ou7mZGr!w3h$*i1b$E9<@NW|1A(u^E5YlFc=`j>ZoDGA
z=G_V}j~}E-fhVi*J@lNwU#P<O(a#0`S{1&Z{w(nKs&M2_<CW$0bs_fGKSX0yah!5h
z@d#b1ijU9_5wm4+tU-QyS;hQjtf6swRmIHV`RH)c$(&0%_Ho<ECG$Pe^z1CPxzv`S
z#M9%kegXHV?CIQ0yg;QgJ>kV3wNFrE$xLRlSeA{?+cR!yELU>l^OPu$_4;}e8G9-@
zmv?K<Hh9j-x%OZx=NdE4&bjGq(y2M1-y0Cm)&q}?rm5sQd3&aE65go#W3p#!;;{jo
z<x#s(bS?}RofEv=__6u36=k4_f(IwCF--(d6x(GAP1wmyJsk&l&Gq!Bv7vQvk@fxY
z;+oXKr0XWr*&(-t>!s->+fAh1QoR8a9~s~T4Csg2<jHt8RVDA9uc^-D36QI}PHk>%
zz{UQ&RLHrm?Zju2sk|))YCJKUo2fZnuRW77E)$}fH2u8$4?J#TAzAxz?VGjjXAMyf
zYpV9~{WFNucJL!Tn4C}M^4=->ceT=2Q@(#HKUc~c`d(a<isx6$SDs&g8t-vUq~@lk
zY$q}0*mg|~_0r|)frWZtz8=W$-Q;IJl8De7>oF6_JQ43MR-7XIvOyGnrd$JBPLsDQ
zT9NQQ*Pa!ra{gP9#%}-|!*gnEnNpq;D92~jxV-W+3ZKOsj62G^9-Uf@b#RSuIj{OZ
zulz;jzo`6|l)t3bk9G2XKYZrDkNG@!9PdTKnezFCzf8orKm0s-d(rT7O8*Px>l3~}
z)W-PJ>bjjP?}fs1MBUtv4No8Y&!Kj*FB0u#Um!Zb{#pEX#6E{o!hV`ib>MBHW9%;z
zO|t(g(Mk4Kh;U0N{1u`z?2|-TDuq9b5B6VE>*kGBv~;21CR6aPQ}$Wi!k2EBqM4+d
zq-d&CqA0$~N4Yavw`|p?Rn?pN)JmmU6pd@nB8ez8^_f8>=OLqN*O&T(D%GSut*VkN
zidwEA^{IaKcsS219QA3nYexMssz}r)`6Z%0PgjSBuvBTN&#Ed4^{JI&P@h)25Y!)2
zN&JhV6&~_jE4BRMXn0HT+DB{eCB5}HMa~XL2eqn)$MEpu<&7*w)5SsoyHtwer@$!o
zMoum@=i10D(@t>?*?#fHdvf!eE9Xzn&Bt+Yngi?|lE-;f^Ul=a9Wr=GpMiRuhqWH(
z*r0hiKWiS+b|8=Qw&o$t2l99>%|lrT<e{Wicqk)*JlEi%>;&>I8a$M#K;C78hq4yP
zyK3<Gdw<aNyJqlEHUoLr4IavDAn%63LwOG5{nX&0oCor58a$N$K;Ewn9<~dCygLRD
z+lxTnn+6Z%K9G0U;PJf)y3X$yJZvWddG`z+wi^|m{;h}ie{6p%yUHi;=h(L32;s0e
zfJq)>Y};}0bN(<M@1uB(Iqy!y+W36gxNkX*131|3HI?^loHuyw%;Wh^;PCX+f}0Vn
zLZ3FR$Ky=B`_R+x<tAWS?-JUkUR!`3Z&^*f1|&JHx7pBpQRsC;kN3jb^!k2;4pVOx
z^sq!PPi}$N>-#<0=K2mJV4gOu_gi$BdK-=PZ3U+F?xSt$okYOrp-t=k6CI{ro1wQ2
znAYpTcvJ68fL;{+rru6NkDn#2H!bwCi1nIyjk=u{dVPjoyP@|jp_fNo>-v3D=<PN1
zIt;y6h2F&gy<0->kfF!_yy)}2C-kl&u5~~DBJ{=#J^rUg>#f3j0V*w3@5i+Oy++{X
z{g^cLVuoI?(7PU>*Cq5$8+yHl-n7uW0X=<BL94XWLN8<J@jplUe6I?<A44y~LdvxE
z*M(jldis4E09WhX6nd`*tnVeEchOiM{}ZM4{v`C?4AA?7(7SBt?J@K?;X<Nvf8Pqw
zyD#*v8hZN-y$+#wH$ZPYc;@qR&CuI#=uHSc{*7JV1JEk%aiMqJ&^u`8T@iZkKrg~V
z%Cz<+p?3p%`u+}qtMA9pgx>uCy%&YvO+znk=-m~18*$wuYHjTF`rZ<HcMQD|#pCz>
zL!q}fK<@*gch}H6V(7JC0jvwUXQ!cuQ?8h9?*ot9fIVYgR<+sb^B6?Kd=Bnm-q(P0
zy&Y3Lo-d*F^t^YVw+{W<wB9M9cLRTO>H9VgGV@rkp!B+xz}wK{eXcfMJ0J7lVa{3I
zKY}2p1I6JG%dT7#j&EY#7kDyd`ns6cgrW1$`#u&li8g*V^47=e<!hqP6-{c!rsRzp
GdjA2?A|D?B

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/HardwareSerial3.cpp.o b/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/HardwareSerial3.cpp.o
new file mode 100644
index 0000000000000000000000000000000000000000..4c3aedb49c24019f269a75784ed2655eb29ae7b4
GIT binary patch
literal 9356
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
MwBn}Z%?5h^0gCY-+yDRo

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/HardwareSerial4.cpp.o b/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/HardwareSerial4.cpp.o
new file mode 100644
index 0000000000000000000000000000000000000000..a8547e522c3b7ca2e3f53fd69a483159dede62de
GIT binary patch
literal 776
zcma)3NlODU6n^P+u?IoL;sz2g+JcSKGA-0wskI)gh|595L#7kyK--jL+)n-#!N24m
z@fYYzXM$4?;)9p(?MvQk_w<+$0+tAr;YR~_i<O)=3n)Vo@&LU~=a80rXV>&f%8{n`
zQqlHBpLWN-2m%q%b0r5tYpHaFHkik1wC>iLZmZU!WhF*}Yf+)Mm~tSJlxm~uD?S+v
zsS=N&4&{W_J=beB@1X5sZ!WkW0@+0|*O4j`&(*#M`NcxNm|4lLk`h^S*2xChB-<Ig
zi^cRlS@`_2c7x8`wnm>%chHh12eN4uy*Ypru7W47#HCOnA9-vrodPiZGLE>97^xVC
zR>J8cU;&RfFkfq6134ax3EJ>W7>^<q`VW!NbDjQHw$N?%#Our`zE`3k*sXR@HgR^V
z-*NV@_AqAQA94FhJ#!;Nrk<Qh@nh;4ZXjb%{Fj*C5o%UJw0)ORwzC=c4LZ6;NXW(+
fv^yEs2eK({W-cI`D=i@xk<;~#FtLO-OSaxO5x7xc

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/HardwareSerial5.cpp.o b/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/HardwareSerial5.cpp.o
new file mode 100644
index 0000000000000000000000000000000000000000..cae6578c219a898eee0f7928fb0de7b170cd2e7e
GIT binary patch
literal 776
zcma)3NlU{(6n@jy9t0JO8_0Ok6l`otQmD65Ydu&ImxG9hNi)(w(<w7?JNZ`x|B`>i
zU!ZTA45l8$2XDT&FY{h|r^kd4FhszD9}VCwQHt&?z=8^t0Q%kTA+`Ev*Yrw=v7+}v
z($2+z_9CAL0T1Z86hp3*kg7&K+qE6qY&fk(+i6ov@-b(M*XS*#9Pl)y?$v$CCc_bx
z{4rFan9!!%aNDgr=rpi5<IE3%?4nrg3K{d~`oM+KVtG)>trS*Cm8|90$p+aZ+c~p~
z!R$T-`1~?<jrqB4wLYJoM@yFSP{^w2Edrb{89Xt`FS!ia*t3VzDS)kBqL}%Ju}pAe
zB%D45J76&b+gA$gp@<?rK^uOF&Ei;w{zJ^wT&KU4Ep+QW@j5d~?v*MCW~&{Pb)4Di
zcbxgFJ&alSN8El|Pv1zBt|w+v^5}Y+J!I^O|B}!<f@2g!({~wVGn;nbprfaSluVpP
fvy*mxAnW3K<}$Lr(h_n7Ia}`t6RT)5Wa@nb6Kzpp

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/HardwareSerial6.cpp.o b/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/HardwareSerial6.cpp.o
new file mode 100644
index 0000000000000000000000000000000000000000..af44c9ce3ca67e24571c289657cde50dab481937
GIT binary patch
literal 776
zcma)3NlODU6n^P+u?IoL;sz2gIt4p+%Ct~#rPg||A}$9J51CG+18q~1xSjkff`7?B
z;xEvb&IDTz;)9p(?MvQk=k%Bm0+tB4@S_2|B}y)s2Dng!JV3YIKBR8<?3!K)F;w(k
zNZPvS(atF3QN$y9E=8X!C8R3Tx)*pptyTR-wdpshEBTN!#mn>-Qx15VQmI!$$;SNw
zmHaVQu^7`@Pz{=mJ7`t0H{&dff$XA~YYVCQbEOwRezDLiW>&JRq(s)7b+SP=$#%x>
zVsUn#EPQ@hyFq7eTcgjXJ7}3D2ePv&dUF6LOh!*k@=GpbHf(tP$ppYtFC)!DL@g5>
zSP7@s;6+R`@Is})>x<EdkI{x-;xVmd96o5S<~seYY@yriiPxD@a<5cDuv_h*Y~t)z
zzvJv*?P1KqKjQY&dgexkOg%A`lE>6DTt~*9_%8{)BluQ9w0)ORwzC=c4LUkTNXf<-
fv^yEs2eK({W-cI`D=i@xk!R~2VPXkwmTbLm6(Uh$

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/IPAddress.cpp.o b/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/IPAddress.cpp.o
new file mode 100644
index 0000000000000000000000000000000000000000..23a1555c582afb3d3e39c6d23a9a76d94a6d14b2
GIT binary patch
literal 1676
zcmb7E%}*0i5TEUCTd082VEiDFg%T|S%N7e-Pc2Pb2p={G9yHo)yNhi?*>!hoBr!43
zqlstF#(zKqi5`dt{R7}8cN1es6uektVx4LG+ASW?Nv88=elzoa@4eYRO3WoWjsqqf
z1fl5xgoP^N4p&VOjzb3+n?ll)>`b;LA<$D6`g{YGAHOT!$>F@z-<uC6pQn1tTpt8{
z1HmLA8&d~6f@o~*Z^9rK2_(DA+}Mi)+0E}g@qT>`dqUUaSM8GfqkAvKSBAgsg1EmW
zUHrAfkNn(zRu*I~41rId`H}BC@9%Ml87X+j_*QKy9=|FEQwz)DlCG~>;)-sHvBh~Y
zQOs(ps;Oey)N`6;>83R#PDo)XB#z6WNjVaVh(S|Z)f7t`5^rJ2m{u<tofyrU%33Zj
zn%ez>RnXVO@vt0@Ox}i=jGHQ&k}Uvt9+&R8Zra*|(fKfVI=%DlF2B&jo#amOr@1rS
zS?-*xg)2JF`xW4z;>7tD6o7};avmd2;X%MRaZ2sMScC`9A>6~Ds^!6Z2={^?5#mTY
zyAXE@4{Z>22GDm34?d@hY>z=dMyTHvR6p{KJ2Fn-`VK1L)2M#r`w%Tj2WmI<pGn75
z)x-ysa)tqeHe^zB*QR1~nT%D+W@a*(n+vm%M$%=&EUei}dSY=RO)D5w0W)e&C{#rk
zO8CxZqL|MU)T|B3E2dt&Ze!iuM0z%d=+ccQO#A?R-2fwXOQ(0yAtY<PXe(K?wpp`z
zw!-1CK~fc40V!))AmPYK6qJr2-biXP_={jI$FddEE*aAQT}+jTsS`7#(sEEKrx%MF
zUY>+sg{0VcBiWLzS$NWamR`)HcV!b-`wwZBv&m-j!6y4~9`zu(fJ*m$R33ewhxet~
zW5T`=dc$_qXdRHTF+F7`D&>&Ue#@xNeyiwDqcUOr)-mAB+d!XTl*`s{>v`<_Z_uY%
zXTtI}G2rAEMSjGG_>rYNvfHS%FP)p@1FBwK)qV&g-9^O~MlA|(34<Z#prsrV9Ph>*
qlRu3`UuaPmmPeMIfglwFQPeJ6(>)SDvUCP)(U6x|^t9nM_x%HChV%LW

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/IntervalTimer.cpp.o b/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/IntervalTimer.cpp.o
new file mode 100644
index 0000000000000000000000000000000000000000..4dbc151942ce4373c8ef9f175d93b90685996ab7
GIT binary patch
literal 2608
zcma)7U1%d!6h4zln#OFl$=cf3F56iXYZluvX|qc!eaJR{YLjkRDu|18@-u59`EzC(
z3<&l`d=Uj%P;gxY_eJ(W7WPpr`0T^(gHH;svZ#+KSSTv!IWu#U$<^u}xVh(i=eys%
zbLP&;TiHTR5CmW*Kn#WvKxfR%c#`H6gD^}%ClC8#t$*i_+wi0i{Y3d*nJvsHr!&!z
z`yk_aEhNr=05_EBOJlw1jr>tG=sHl=U5BN0Pk+uMNbtMo@aOF*rT=9oA1p*_>EA$%
zD6oHW<7DyX;XBEjhc^si{)`gIxs~fRSh#yPxO{6}RF3XJL{!4LpMHV&|J<kJWFEl%
zwLNzVI$|pIx|kAbpWpUx^zZmHv!O>e{g?d3+)<<>9%Nju{+wHgTn>Gff@t>WiTJyU
z+uR@anHK5o{RsD6FNhn$*^n|@3+GRuCgBXbg4k&e`xvnW4*L$VH5;S#BbHC6pOs?y
z%@?KZcDtcVSKFF&@p4hhHp^<Ys#c{ftzA)dy{+lzr1Nr8PDo4f#D(~3VpWQ1YC|pQ
z>N)8OE_p_^mn@!NENi7!r6y@=x31UQEomtkPp)2g1un*M^O9OB*Fl&^*OP8*hWf^0
zF$rS<Z_(#E<(?F#glRD>JTA-#XIvv^#lU$N+;H%hGcS&00Yn&GE+XPI5!~>o6TtW}
zjA;*A>B87)B6v8y2X809n*)+(;E^MOm*aa)zIAtr;iaE}iQwb-K9hf9!0-(`azyZR
zd_TwcbNm3u4{-bd$DiQ%6C8hn<A==r5DdZ7b`Zo_fY307p2(?-FbQiW58xWkr?B1?
zJI<J~*Q_<YpGh<J!P|D;iv953NF0C<M`Aqh^DRTwx~0Z;y{T$)rPG0^0Xr`j5{c?=
zv)S9Zy4$K4U5HjK&<uBsQn{fbu$fpMS)WLh)mQ7Sbg$A-_3T!z+s!urg|@7=s@X1d
z>PCF0u508Zn6t#3Wz*Ti^SWjLR_vMT;lgV|^&|Ya8Pg_@ZY=S~?V0Wl#USgwCO!tv
zhGxw*=HUlufLtvZC6LRy4l)7qKWif6=gx8uRf+#vVAo_w8B}Kkvg$MfSrr?BtlF6n
zJ%)95=c|(|?PgPL;bUT>l1ql6)yunvs$*du&SsHD_s;tJ0T_P6)_T@y&e}ZIX?PxK
zkUfQi-qHW@7Ldd5>+DL*e~#nP{kevN8RKOTpe~YP32a$(4(fZ<y@*F~4~KK#Z!o5{
z%$VLT0#3bg6rnpxdUWlW-gWeydO-~6n`OrIK0?5$7j~SFaHjVK`cA#*F?zQ+J;|X*
z-I3{i&FQTiqxTi37jx)Q_hfqCa(abh^zLzbafcptSEl!?t;g<*f_hYEX2c_VfWuk8
z71WauqxV7Gm+8?TCrUsZ2U!P$w&j|?l%p|@Ke%UyrGCIT!2+8@A!)O-QT!6_8zuqU
jm`gMJRwxz3U<=1I`g1tweDqxO3{E`-6Q3f+jOqOiW}ZO6

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/Print.cpp.o b/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/Print.cpp.o
new file mode 100644
index 0000000000000000000000000000000000000000..697c56ff705d1b21a12e75c8b0eaf6e4a4c6b3f6
GIT binary patch
literal 5292
zcma)9eQZ<L6+h1}pAL}3B!v)49mgpNB*qCzAcd{@yiOKA0;TJ=sB)dy;kj~R*B@En
zk2NXX#>BE#Ri&kWpjFzm@iocu8m*uqGYw5_+8+d}t!Vorn~(y7YDveaM=P>(-h0=6
zx%1i`a((VOzu!Ig+|PG;wPzobBnh}kPzxCgU`?@#<Tk6S7VJ=^;(2HjFQ5F@kSpYZ
zWNL05du8_cY(6VvP_svQA|+K;D!bW?OWK>;{cygPr7jm>DZ$ckcd6_9%BlGMS*Xcl
z-(x%2c2;GR&i1mEPadx{Dc1UGR-3d|-$><5N@q7QCwsE{_NFVY{BEefJHMM1#V_Ak
zI<b}gdl8b(xg2&PZmQYFq%*mF)V^B5`q@Fnihav*=VeGznk93xQpN_A8JCrnpl{uK
zF!x$qK6f~kQz^Yg?M(3(Q#tqKc*ym6*wS1+I~9j*JFiRI3X*2qp<h(lVc|hy_S295
zW%{(d^je~@4wjwLO!8X7eD-8=m$Rz-Wb#TvO4-+pY^h_=aA$t!thD!b!hF8EyTK->
z?DcyT>0D{WAkNm+Wt(ZnRTN*k?6gg%YOGcEJBzaNyF?}CO<o*J-KAt-XG1kqn{AkN
z66ezOR{V5IdFga2@UG-Ic&m&($&UOzSDs>B*B>Te>%pat0%^hh=tRoO>R1!oqt0>#
zgF4KA+s%ZPSuV)S&UM}0PbYWnMBZcfqaQrpgWQ}{_x&c7ox|3uF$<PgcHWx5v<$@s
z*Rj6a{pe)Ma=uF)M|b_L6gZ`Grh5g_pwi2(EqCHrEVNeNbyiQOdYqKW!Xj8TA0$I_
zur0C-(rfYjKbxz-K7Gdm+De2jo2w3Y9$b?0hVOOB(|0=4ep*Y~Ki`f|vI<tho?uV0
z(<$cwwS(IBrP;}?OVI6PRqWu>O4HZ-$v<<E+s~`^*DijDnLgJysI)WLHshLNy)0MV
zQ%=@~?Oy8KukxTaG|xSKy633s0UK0nJr2)L;hOrcclP7)u$5p=&;0o2T@96*i`ZWi
z)14;v@rM+LS`@Q9eMZSLu_D~v8q$wQF*Dn$Si8n-s7)5vNG*=)DfUrfn&uXJsO#ta
zbR^tIR}#4AOmeEEUW_U=-%ecUq{s{NG-?~3fp+G{v%$wq-txYQ#r$P(;fxpla1m_9
z>0T&aKa(&oEvqS}EK-ZYKKCLn#k=pkbMe`gm4CcifClOgEWZX=cox9ko<oa;vevBW
zY`<fkF$j*2fPZWRz}40DjJ4Kv;CbtjU@#D|js(Njj>G${J)=WDuh-|b4upflzDOh(
zj?`IO9L<hKYm>9F)!EkAW~~kT0zOZ~S7#l>COdq3lZKXtp|EFcSh0qE<Nk<0IA(2X
zb~d-Qz6c#oOvvN&4EaHN8mqZo!En?!(XhW6^48|>FEm+l%A|5>gS=6ykTywMOk)1V
zyD|rsSB$s}ve86~&xYofAy>fjplFqcZrO~;c-yYV)!R2skfA`pX+<(3L!p2dW<adT
zh^~%b1nbamPqS8|GOQK&Ytu}s$k=*y3yPKz8A=4aBm-hi28)1O1bn@KuNUxg0WTNu
z4FbMFz$*m2LY<G3=|!&)_?0T2aaLxkSd(G1fNvJ?Edstpz@HLqt6--SQ~ffSpcHH5
zrJZMkJfQtfHf>}Z?x#-Ou19Ub{qurue?_$m;T6<eXmw6uq4u>{Xmx&snhW7S#X>l(
zv<>&i&vlzdYC-RBP;(*vAFvQ#!%N_yZhs541^<;INH}pVupX+((1m=>I(`Z37AS{9
zx=rsD3v7U4fgcv^DZzeIuulv2dBOgrU|$vNn}WR{*dL)yt~mZ!paSyr8)hT=N^w?7
z4L1&r7Y4%qv8ZD>6asq`>|Stx<3Nk*Yux1-_xJ;zp@5GC!!LyWQD4t^25uP%#3ITn
z&o@=hK)>>`ffl0pJ%{^SpNnGcC?UMQ`=~G4c`WLS^b9C38`|tr+XTii_^5AmICKo$
zYUoVVR+TZ*GtfVL9LBwxl?`rebGuo<6H&C@dwqeBFMK@1Y;0899*E)99_|@clnm6O
zB0T|cyVVQb9SeB<<D)_26zw#$Zf)*4mZkkfy1jRJG!z?KWd?k!&1l9Pjb(cFHpTpy
zw4R5*2~*JP-bidHV_*kI4Iw<<3^As*O0TU`O`HXSo@kGk27TnK+Nxu);R%mB6bt*@
z<Nk0o<_W+i+$QE7+8H!AYWKIPO1JS~(AhMjUW0l|E1n^;cLNORx{P!i0Nn|sReO(a
zquxt?{PB{;3uK)1mjJ$_>z|PRGQj(!y8y0`#@E1aNp}O>Al(7*H`3U@3HLtn&7_gH
znRGkeF{C>H6w(+cKpOE0(%9~8)TSDMGrGQ@Yx?S$T-x|d4cgsd+OCbmM1yifj*Uh=
zL#U%+O)I>HAO9#gyq>5B97B-^ILP7nf<q>d(nn478xEWUpDH4(ZQ#t&%fc}nHNCZV
z(y~xjow?7&|Hq*d();hDmnCTW5N5#|vz)#xG(E%wWWgGRbKnREwWXrj)atla>9fII
zxVVjuW^fD#M@M~QxW4#0ba<k8!41XmIs?bia4;6ajq(2p-O2P_<wEC&_M8n1ZZq{;
zOW#|ON9Ts~Xd4oT3cV6=>*Cj06FefT1iMqE3V(^mUzH+{Fp{lUsGl$5Q4VUqdIuDb
z^5MekhtOf<^`gx&;_|wm^T>&^4-56dh4W6LLye~c6R3&Hh4WrV2fa|+b>IVhO!E07
zKk>-EfW;W^D%!PJxbS#q&|!@C7mP>WR9ZKzrsL5)WsG+pZS~uWnuN#u6V{Eq&(PjX
z1YJ1qCfde+?;FNJcQNs39G_q@#@mQSws`+Uo-y77Lp;ip$J>hSjq&KMG>JGDp5H!!
z_a55W#@ma2W51sn`lXjQ@0adt{7dg=dK3MMcdGNq^a}BE)@0U$Ug|vF8$!HE+^=-z
zxbShD65^E^;?c{V$D=nK{-yJKALG&ciwms<$<Ks%c8nKCKkXNK`SW<c*W+OrRTKnx
zog6&BKMK460`$(~!g)7@em}r|tw^GNX+IE;a=fd@Yr;Co>j)q<EyP0#q;#HBN8Usr
zm}Y4l;z^h^-WeedtsoDd4{0F|3Eh4CZXx>tcDm6pV9q0LaDx;7yE}<7tI@w53*|@q
QjP{f<UK|~ELqi_#Kcw*Ac>n+a

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/Stream.cpp.o b/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/Stream.cpp.o
new file mode 100644
index 0000000000000000000000000000000000000000..9772f1f630bac01dc8d8e7e10e07e763457061be
GIT binary patch
literal 5400
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
Ha=!lqD5~dt

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/Time.cpp.o b/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/Time.cpp.o
new file mode 100644
index 0000000000000000000000000000000000000000..8852eb7cb49f3444825cdf63ca83640d083bde1a
GIT binary patch
literal 2016
zcma)7Yitx%6h3!m_R-h2Y`3(~(oX4C+F*xmyI@PA>0`UC_Oa4HqGFZV?vOTgyUWao
zTjHY%#1f1I<cCobNiks1AEy1`TcFj(5Px(96A~kope`_p**2}#jESDR?ZAMEc$z!s
zp4WHIJ@?%0%Pk##LI@Z{paSkl03TUW7K=B<D!>65u;VeYz3OH%Fsg$bxaI6PiM%_l
zr>m#qna-<=u_GsS=K3ie_H0kfoaJo4r%!5Z?t8kmYgF6Ep4Kfb6B^?@p}h)w3oTkV
z6S!6EI%?-MA2*>*FsHPyt)Hz1_l2lE+8%u)y4K$?7cLAWL-xS@w|gBkQ`#?i>3ZJA
z*ym8?I{Sn_F#mCs@f~a7W(k*jF)?PF8&eMItmR7nlqTimCRvAF&+%NJMwA@GPy62g
z(Ba)*%|do|yr%6+{;<wAOldn@p>m7v^6no;Ow}?&k>d%Bb6v@=Y^&@<uPAyII18t=
znUx_o))NJN<t9!qsGHC-8Nx#uGebP*#z-w$e|2ot^wT}Znz+lE6{8x*%*AbfQj@+r
zu=~p!$-@|{B1#U2wLt~VVLwZ=UP#cY(&L}tHzN*$>uiyGjeE3-z342ACyLyECdj%U
z6KmWH30sRWad2d0<eTx)BOjbObEf>!qwbOe+7^0EcsGr&4b^p=p7pc-4V=!-m;Q8h
z@zObe8TQeExnrc3og0u}*O`^^{PWt*ymy-%dS1C>8vB)<jGxzjU18T(lxBSjl{e$u
z!uwus;hg$&qH$=;cv-u<%iW1xetw^BdqmHl)CP+}YbUkeiV;^~_2QQpz32rfvn5%Z
zW#;W3QhTV$qBFj%X|n#0IBZyme}QLPHO(y)xVVMEt<*jnZ;l;^kr*@NXrr?dm=|}x
z16JKqo8cpyL1#R?54-jX?adEZ&r;;I#Bl93Vw`z+3xSfNl4ATzeW10uc{5+p+O>_}
z8i@=j{LYBXH+FaOE#aUP3P~aUaXHc}DN00ED*26qSE%M|Jk^^#_0{!!g)9w7q9RrD
z+c9K=v>Z~ku_`EwgS~ycEbZx6`XhsUjo0I?-_!$*9_+g)iNSs#58&3)9FbKiR@LbR
zYnH7ujd5}=l1K8{0<wy%CdCZBCo`Gf90#+1n{Dh}FA{)-yTe)3n27}r(#;B#vryiD
zI|+A}l?CfP{??TLjoV(<+dH~p!Je|;QQ9GAS;$0A&~7Fc(##^pr$ced58wpW<iz?O
zUX~Y;JFy<v+8>sL-e?ruD!4=N>{A`};mDxc=M#q%l<I@BB<`Y4;qGd$PgEtk_xDQ!
zA!@D*i@Q>q?)HCK;W*}GG60g8i*gW@p|C0jk*o3&?=yCIi7E&oQ58W5DhdcV8Uj@c
z_o>0`_+Qlsa)hEIocVx4ZzLR+1~D}bpdhNM+#h^Sl@u)Y|4|{j(d#yDZt3^?POLFO
zrOSTC1l{XLF(|FWMQ`<fe)JvOo0s0PLB`}ghzdFt4a<gkG*EmxKh%dVDnE(KjCTnI
zIwJ-dc-v56#{0{JM|)u4y@-2?XPo~#+|Zl`8F+7^g8I?(P`ZqMk)>_wOKo%=$AvwK
zrj+<;MWNadkW(K@D{vXTqcVs8S3jhiWitFIH)^A%7zXjEr0+Ke7p;$SdR8;uTWHvh
JI)e<ne*im_yVL*x

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/Tone.cpp.o b/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/Tone.cpp.o
new file mode 100644
index 0000000000000000000000000000000000000000..c730ae7d87794caf1c29a96e720626dd27edbeda
GIT binary patch
literal 4048
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
Le<+h6Ce{A}ix+qC

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/WMath.cpp.o b/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/WMath.cpp.o
new file mode 100644
index 0000000000000000000000000000000000000000..3d466783f2687cef145460cd8144d5f8eec71c38
GIT binary patch
literal 2516
zcma)7&2Jl35TEsP9Or|`+1mL+w3{XZmo$rA+(3Xs6Q^+?c7$k9B`DPEc#9L_>}q!j
zMM6TfLV^Pa{sn~KN)=V=p-~Q~y&xfR;ZT9ffdh~tB_#r+MVOiOKJVsX1S5^#{NBv_
zy_xrBpWiuKoR=gCxJZzO00AUpo~I+{4QUvH6zp9eC_P&1-by_?uz2^63*TRHrPtnd
zBgt<DzaCD`-QFFYxxG6+$K2>apWA<Y?*3;-m>bE%MC1<JhrIOkmb-U<q71H_+1rjS
zPLv5Z5$w=57kiej-aBYCX20q^_Ry~q#IH$<LuIo-KHu`<CVw(nsyJ5b*-AZ^S{him
z>P9}e;<C~22H9>`WO(k@?(x}Mm`%);9|u?3$4nC7vIL}W?!Z2rf&E5?&5xD0e>9m{
z=v*8t56w62AP?G~=Mulx`2DXPv+(|G>`vl(bUr?UxS`A?w#@=&w=?rIC^SMLpMOe8
z7nWXBmJMUwRxTNqGV?-7Ia{yj)v8`qp0|t@-L?(OKB1geb81#OmB~(JrnA#Z+S1o`
z&DKvSFXNKObbra@>B)+vZLHK3OW$0zSB(wjR4$X7o_YmlGI%bUu2oh+dKk@)ykR-|
z<;hYGVh?ndx*~EkDW#-AHY5#8Bht|bonu(S_Z`JU3H#WgZUA6#csawFurP>1Pj~`x
zA7a|WM2#R;aJ+!plqfg6kwHvYAM@hlt*B;0a>yVq#K(pBU?r_#&@IGw3;A?&YHwuF
zE5!E-{yxD^)ds>KA@~!46D<b)g1=wz%U*uLqzq#|pp%n84qRw4I3nOAob=)VD*=p-
z!83<&92R^`_ao!^obxfAoQ$hp^>Na}eX!<Z>I50<d(+2sGcwi#=S!MXQ&&tA#vQo$
z(iAps)u`81Q?nd31LIYkEaq%oCnK9_y3Zl3BYwhe;<aGqW?)i;&$qsg_LFt(b^W|y
zRVlm$YBfy7>#@iPV25Deg+}T<!j%8fPQZ#$aRk+VtL|tO9387U*0_Zqlmlv2b2LyZ
zwhbzNrYcRUt$bSbg?)#s3wwe(!?S*En{78}H;Jdf^Jta7_RlFi5y~60^$%WM!5h&x
zuqb?HRLya$)yf-=ZsRfhUwIG%B~<=JHvc1n)%>Lx_2c+UA;u90$s?$ASN|19@13|W
z^)46wqEO#=p`P&_-=c%~2T&=7lyDI>%=Zam`c}A59LWM|nC}O4a6UQ%&UXpzFyH5h
z+woNdzI!1);^lmA3w$>bx2yNEz;_VhqaNpc9|?RXF<IJ=3&oLqh#Ic<&k!Hg!}&f%
zJ6vxL0lgJmIN!%O5$20_1m{PuCg;0>c9?Gg0p}o2ZhtAn6)~<|9d|K~=6PQ&{|nzQ
zJ|FcL3B?&r)B8o}<@Fnm$kn=nFVK+{;t0}9&i5qTi}l8c#20ST$iEeG9pFS6CkD|z
WhD!A&Q0eT#e9P!~59hdWzP|xn_DQDz

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/WString.cpp.o b/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/WString.cpp.o
new file mode 100644
index 0000000000000000000000000000000000000000..3e3e4b52ea15a0b558cb5c89f7a281dbacb8b415
GIT binary patch
literal 20164
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

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/analog.c.o b/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/analog.c.o
new file mode 100644
index 0000000000000000000000000000000000000000..0e025aef55ee53f14ec8df4c8a9fe1214a6db4f4
GIT binary patch
literal 4484
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
NK0i9FoCITB{U1=P=j{Lh

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/avr_emulation.cpp.o b/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/avr_emulation.cpp.o
new file mode 100644
index 0000000000000000000000000000000000000000..8b0b10b06e4a931c961c49bac8fddb751b39e5d7
GIT binary patch
literal 1304
zcma)5&2G~`5FXb~LJ$=V|34C1Bm}8MjGelX!mSEU6^WFng&shtTHD*kQXE^mP6a34
zfGZEcffwRMcmkMpys2ZkDkF{O=bIVN?9P63-wriR14SCN;lcvg(leyyWTFk5a2;TO
zFnCSc`v)J$`#7EnavF28cQ__)<gp-N0h#dFXF|kWY?EEnF>TVd?4H%P`=rg;j8Vb1
z$tO&C#qyNSZpY(v?oSD4=b;GWIq5o<)9-zTJq!O$8TCTYo}*eD#5`qRI%5awn~iaE
z<CbwpyQ|&TA7~G?N7|E(tkuG&IFA8;{uUt6*QN!u*VA?M6iEjIZWkSB7fFX&39l7l
ztX41K^%CAF;f)f0tz<XhUha{dw6K0Bx8>X|Xuz8_+knxUjs4Mce!`-~jHY<*rk^D6
zEP#`b2X^;pG8&GC@BA4RVu!Ocx5AzH!iA&B;4s5>q_!&7OTu})NL>I^e2r4-p-lNw
zPL+n2nSvS6l!ECAk$udppfpX{$R$-*ctxX^U|F}OA4d_J<6m(HO`4`W^cE=-`N8~$
zc#JXfeAVqO-^WFw+M=g<oZ6ytoZ8J77$<M`s<@XGajFJFt8MIE5vOvFE8>b9t#n=y
zr)nUydPU!JUA|dKa^5)8mLHiT`3Ex2nk>BlKT)xjfl}3Op{~wE!c#ohUsB0Q#Yw5o
eTtdH*Ep*;Mc@tUAv4z}3F4i+JDL|hhRqr1`XOCL|

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/eeprom.c.o b/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/eeprom.c.o
new file mode 100644
index 0000000000000000000000000000000000000000..e5f8bd3cc3ee6e1c8e3923dbb5ebedf91ae821eb
GIT binary patch
literal 3948
zcma)8Z%k8H6u+;prBKVCQjwx_dnhU}so+2X=K@6v6i{Y#e%K7Q^f|f#eQCS-T+DRK
zOi0`^S@=MfxS1?VT=+1?g5MYzvt%Y))}kcnw!{xE7@0{~G-I35opay2<@SNeF1fwu
z&+q*1x##|QoNn&$3W7jb6G$mp)(E*{qaI5&9ZJbYvYsR-&W`16Dr)QXKKbkM6PGVv
z9kOnmEo>|7w5j<?#pIf@DFtooe4_Wvwu07Ng=~GHL@ahIX2qdIE@yW%B?VFPj<f_W
zZ&sa2Ma)WMw`a5ow}m~XxJ{k0{xfSCOHOW9@E4~Qh^c`<H$%5Vw?SV6y)j!PV-HE#
zHj_7z)xJUf#cK9u%$gT3b`f=YJa3XnN(*MlS*DPy;m^m>5l_}!-bAJzWznJr4Kbi=
z_(!YbdkuKd5wA?-QeL}PSTI>Kyw2GP$g<p9I(6Uy2@HE|Gmz2Cm0r{0#e<F|VGn^m
z<oP?HOk%co=aIwI?ovroAW93NIpaDDXKE?)Eo-*d>~+wbMRn9;i?8uHX(e4#PQ~i8
zC{C!wquJWY<@F<OA@PuMV=ZeZv?}bLlW4BUxRWy8vF6+m2S+{S@%0?*I-li?Q=Ox%
zqI$uzChp|C3*$LH5oWy!{wB4;HtKPv<#c~M!`Gb3itWiA>&+Y2=4)xqSWZ~!9dj>2
zPG;{Mtn=vX+N3BJ$4$>~N#H(;gBM`EHQd})G&5Xp(_n>t)bmQbg7cR7nj!DsXx=ow
zchpmtsGX!TUB@O4y)eF!uH#q0k1Yw6Wwvv$(jpE~;Jdga<Y_Cts#fHTdY+3rIRE|e
zY~S~3E5-ajPfX8eawxOUa!li>oy0$FkFf^dz&`iQBq#RLT{$~u_a2`e2b(x^&h;&f
zZ(P6fkOX$`uW1Kf!4)@^)x}{ghplRv`mu*B3M4aLr8<&|;F_vZb|^*aHCT&KFI1EA
z-xGMF#B%ATMLoYHOuq-e;%$gN(tOXprTL!FxVN|QUXK4O;4uSFjaraYEUu{<rS4df
z`ZMsD>&?J(C2?zBD8GvH9s!=)g1UDQ;)*|lI8%DunIiQkh%?ojAnwb=ck@b%_=#yq
zIFDyQxMckS*EV#0c%GCGC%&Fvu0uF^S`-x#PW74Gf8%fqTAG^brP7xDhowW|a9>n9
z9*#(j2Ro(a{(u||%0a0s67G?s(QqVMCe^sB-Br@g%Bo$JbyamzX+-Xm{ZYA0dKE%;
z$a+XcO+_H$AL!|oBJ$gzXec}&?X0e>uG@8#G*%Kq{IWj~BEnV>EluG_Ojav8t4T(-
zwKL0<Z(b`D2!*0cC=%8S&zb;}*7!HnOctN;PBHC;B}63Y;UZZ0CK5Bzo?&J+lWY+C
zm<oQri6p~-&!Bi*lh!hrKu3{e8t|DEzdeP@Oi3t+fKJcHX27R=MPfJL?G)dTVzs9v
z6hx9^z~@l>GAhS_&o$t4DZVv@%1ucqh{R#QJ1G9c6v~m3G`!P*cT)VL6v~;BG<<;p
zUqJE8+g@P67i#{LwJ;@Vd@h4tMDoCbXAE=BhyCBgA<$O_9sT&-&WH0*uj_aQ@?pQ*
z({vj-s_Xlx-%i51j$HY$AE$M_i|V;#NY{s{?jT?2x)~<TCr)x%*E6XO>y>3C67F~R
zkdhcF3F>NhXdn~|`TIie$fRHH?@>-NM@04qy8|a<a+={pIFbsbh~NrKpfB9>CJPEh
zyAhURJrN1T<TP5%!n0_WG-5rBGQ+y?blXa``)Arrh=lsKl_S<1?X~)NN*`zR@vc4+
zcl2a`%pZU;7SYCDCc&c<BkrI-<|pnzG)mm?l)2I9)(Xm3aD{KVh^xEkvR8L$>tEfc
zl{h^MR_GNGT*;r}TRjVY8=exV=Mf2O<>?9c_sauNEqLSI{#Yy$3cMAQqfq4k*){+U
z?+kk#wf}jSgV`%xtmD`#ZNwo5HrRT&Y53k~?P)l?lg4?M-y)KF-M0fS3wi@|Y}KIP
z{lvWS3xFNx>wwPlO@q$Q&At|`VCVVvfr9bKhc#e)uY=6<JpdhZW{vUnfPv@h;P{Z2
z@x2c+&sPG<YJBe+_zrP=cn2BZX9m7Qz_$-<tg-w)1p}YoYaE{)e2kC1UF;l;03X(w
zHO3bQ1HX<-pmZ@1j12c9$o#xPZeIK{v3dUhnde&qWf*L%F}}NC;Q9JEKKybqK74z5
zz7OF5<NM4S<3k(I7vuQw%f|S&82HY^!NxgQV|>L1zEd0@e)$;ROFAFBS0mt9t<GK@
zSE)~Q32^v*VhvNkegJ+TC571wEre7tMaQ6uHDY%X^$#GwZY0nf6LDm@p{o`6BnW&4
XWW3wB4$K#8$Mf~VVZR18))?P^SL*B(

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/keylayouts.c.o b/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/keylayouts.c.o
new file mode 100644
index 0000000000000000000000000000000000000000..64c5a696aca54eb701d43545d51acc7c7016e257
GIT binary patch
literal 992
zcmah{TUXOS5T4K*ML~)nH^oH}iid_2(`tR=)KV`kRs?T=bdxNSW81}SiuB1p;Scaf
z`A0m*cb#prhm;4Mb0#z2%r}$Gm;F|$ZE2bY$~4Hr1p;Uc^*af(AF?n4DOmgHH>u^A
z$DdfIn0xqWW#KkiymNQy-m-Xbrhh#@dQ#b{K7IE5MXkR5vhix?_3qxAx9{G6*grU2
z&l`5T5Kkmi!|9PLS4YRLjb|pVPfp#Ko|&DSzj=#)IqlwuYPtNFWUJeIWS8@nAjjMz
zn>%$<X<N*3m_r&Kx0w*!6RV`4n|hvX82O@6%9lviV=YDnTP6EAvd+ShTp?$9v}2zT
zkDa-~<sGtN8fK|@2%83e8)ejTL0iT&QRbe{&U1AWlB215dT1g(sZD9qu^DYvo6{Bo
zMf!RKkEmX8`1L2!g4lqXfOv2`hLxzrAP!^E0^+E}AQ6Q)orFwSX=2Ps{%6)}(H`&m
zLbqYbk=W)A6Gv3ot_z@xUfZV@M&AqKiOTT9eb621Q_w9TK=-%=`lS`R&D(9(K`M%@
zQ{VSotLrl{aJGMed2CAEk|8O$Ul$WfrNxk^RJzPl+OHsQ82x{|wQ!%>FZVUkl_|B$
zSdhEr-H`Sjo%gfgA$!tm==jdlpo%#b^9o>;9BJ|&sk2G^8yg2Q2~F{2RA-Yd6AM2u
WrbCzK8xQm7zMse=SXU<ZNc#(#lXhAF

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/main.cpp.o b/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/main.cpp.o
new file mode 100644
index 0000000000000000000000000000000000000000..646edfb579e70b7d1bfb4db30d16b3e40e26ddca
GIT binary patch
literal 1028
zcmah{PiqrF6o1oA+cdRcgT<;SBZ^JIOp~%L#FHh~UJ?<}lX{rVPU%86v&>Azp8Qbi
z_wd*cQ1GfJ!GrO=-3*=PpbviY{?EKW^XYK#oG}KT7_{J00~jonp2fIiEm(y*)W1%D
z{h50F{tid|{uAChdhv$8)_QFDu{QkR)sP?NiAqzI@|Q-Bl(pK}ZN4XB(dE0H?tZ7&
z?eUgTV<oNH=5H}&N6k{&d+o%?$>@X|^&zvFp77nc6ZiJt!$AjYkxC{Rutz8^_O)^9
zV|y6G(%SNHWuaNS!8X{<Xp`Myx7od_gR=hW2>YwS&uQR-=t}p1`qlIZEg?lvgGOjT
zJ){VhLKU-@VGS)*!*xUx<C{SQ**53&yK_3^GMk7|QNTl2%3zf{Enuv50cV*Sr%+bi
zz{2SD#wvpNH9Ukp%biS+J5%u!FX0d!h*UZWBC!?(u11g%W2M0t1U(F5r1M-&FccRi
zq;n=qPMxwrmH!s+pqu*lld1mJWsaZt{aKu!_<Wq-;}*u%5&w&$e>49s&D)dT++#GX
zAfC<~=a@u0AsfXI=)FFI?xTB&o*{H8RR{S90|eGqR91k`D0IDooMMR95xxh~f1u+X
i2{ZC>#QluOb%FSXpdI@fsV|bl`@Ue}1GIVa_x%OX3vnX=

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/math_helper.c.o b/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/math_helper.c.o
new file mode 100644
index 0000000000000000000000000000000000000000..bca292c6f306a4273b1c6238b28e0cda1befa9f1
GIT binary patch
literal 4912
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
XabU$J>o4s+YrIA@e8Phu#+&~DQQ_{n

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/memcpy-armv7m.S.o b/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/memcpy-armv7m.S.o
new file mode 100644
index 0000000000000000000000000000000000000000..16eb7dc08c819ae3bcfdde6f55b2f81971dccb3e
GIT binary patch
literal 1016
zcmc&y%}WA76o2E)YN>@51eHO7ko2*Lcv^!L`+&?t{Re9ac@P(O0;NNTj{OszqFV$V
zIuso`b+g@L9XuC7K?l3_MxEM?#A9!H{NBg!y?yg$4p%qV2q7SaKn#97fGbZsqa@o9
zg8@*0TxOnuj=oV^c}Qy+d#lA#Y1IG1w02{~6XCvdgtS*Hm{7iXO#8H0!r!obk=t;K
zqyUxLff_Y(wX8v|jdi#U&TZHsJZZRb_s*y_@#x_CY+3b<$Xx!|KaXEB?S29)g1D2M
zXMVgv=L3zXUu<Z~yYj3s+*dBL#<UM>tQj3{$35=2zZn(PsVU};v&6+qki@T<c48Av
z{`u3Ab061^y0d4d@zV67UMK+>LsQ9Cs=QcR%qPJ+<jW6st`-wLgt}e=00nmi#fbB*
zz%P#i!><!PMdFCaM>&*><sG9ApqlkE*9(Ze+QB_(;g}rMU7hQo7EBY=%ywSYIj@!q
z`@CrO82FFyWcUBxZce=8Gsn<kJ|Q!xB20yY^5ozMU%Ins51{trEp#{rLR&<?8R;O(
seqpp_FOfdL6)y>+E0QPBwS9C%b04ZWn>a@Zbr99r&p=)PV^U<lF9|om3jhEB

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/memset.S.o b/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/memset.S.o
new file mode 100644
index 0000000000000000000000000000000000000000..6cf45a0c765f77bbeca0ca482fd88959a05d93c4
GIT binary patch
literal 552
zcmah_Jr4mv5Pj>Mk3vGD(NIyal~N-@<q}b8_u>)?A$KdG@^|=WeulU1hNEDTmw7Y$
z_RZ{Grt_In3K9xEyer_I9{9s&?x6x7<2DNunQ#l$B=slz*hZ&8Fhr?V4ypzAeueij
z0r2p7!(%5O9*Qh=a^6`JGTS)K8(|!7q1VP5=rBp3$ICz)YvXNrv{91x`o~)oxc8Sb
zVfya(E!nh_>15Myo%~^!x(e}6*H1MEre`=mH$y`F8f=J{JG&7hN3sx|%d)FGS`iDP
UO!$QR(K=Bj@_tv=;z9c25Bn-1MgRZ+

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/mk20dx128.c.o b/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/mk20dx128.c.o
new file mode 100644
index 0000000000000000000000000000000000000000..2fa574b507045aac386be8927495541c01e4fd74
GIT binary patch
literal 10140
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
BvgiN+

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/new.cpp.o b/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/new.cpp.o
new file mode 100644
index 0000000000000000000000000000000000000000..2bb4a3bdf22e686ba39ba6603ecbffb83d18257b
GIT binary patch
literal 1796
zcma)6L2nX46n<MMQi4s3ZE7{CYhsi}S%J_-8V^*g^-v5kdeJmy7p5r$ShBmedeVcx
zz^ncPFWxoruXyy}K~H+Jes6cD%uY!3C2!vQ=6mz;W_E^GJA3yG!yst}6={NqKBq!v
zwibpWEmMI`e*O6}&1tvU+%k*14<4J3TzBA`2d-ysKWv#hLq~MGqHDH2w<CPt_55{n
z!>U;ovs$ifmg|+eS@gs}*uGddpJK^P5icoilpN0<bq-BW9QFL3J2I=aa;?6(Pupem
zWDDErk#QC2Y}54u@uJkKQReKK*4#`Xy<{vKE2;Cws&T<sn+dm|4C+49^z%faD3v$`
z0!}VZVMetSrD;x`09GwU8I8}VG}N*hpVj!B#^*FXukm?}pV#<#jbG64BC!IW5$~jc
zv7l6N^(uVAXXsJ_XNf<GG_Jo6pVa55n!tJ5N?`Oi6313&Jf<rFJ$o`b?$gj74BQR_
zyN|IuXdlsmCj{p<@@Oig0Q=BmTU*lNN{pvP%YQixY=<mA@S=DqGhD8Ktgao{WI4W1
z7Ot$tlUCGS0;53{hpi?ixZlJCHlwWx_h5D0;ZTh5%Xk--9Ryy_c^(Kq+Qa{h7g5CL
zE^l1)mM1Ia&AuGh$(ya$u?E{UIN#2H)$#k(e^-4KGQWX3eme~~+gCKi`sd(W!_K$?
zSM_cIOAVx_`EBH?-Zw>$&p_(6k*j*VZkpbnruRe9<G!Sxt?4yl4k0wDy$_`J_gm59
zS1t8C<Z6F+V-6uSsW$>r_4vcc^W!%x_1+*?_3p<ULTFO&HIS;8RrL5@L+ZUn&U*Zv
z+4!8?FpCD}*x$h+F^*=5J|U?{fXFp$i*R|T7%u>P;3PI##}P+%YTuE4#3Vm+d1n@o
Q^Bz>a_gHiXbJC>VUkBr>-v9sr

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/nonstd.c.o b/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/nonstd.c.o
new file mode 100644
index 0000000000000000000000000000000000000000..076a9ab653d8200d41c46b4cf6609a754e4cf4c9
GIT binary patch
literal 2600
zcma)8e@xR?5Wm-Np%i2=MFnK!3k9sQekoE>WQ(Q1104vHEz>w91<Jrc`(0a%X2}45
zByMie>5?&*EM#+uKb9e8OEl<eHWTBPC9T_%1vKLy!AUY(ani(O?5^K_p|C%;OWybH
zb9e9F-MxE--s(Ee7z33U7-1d(_;nFWoF&4HkOE5}_;r1@#32vHndRcsN7I_8%Rq00
zkXiSxZ-Y5}>H4MkFiT12Q21vcF{4SY8&2K7Jj`51nU#!Z9<ph|tn;t21RlI9*Q9=<
z%@)S4-A}d7&iw5&8ANWiE#WN8$`Q|sJoOs*On(F$lKGK~M;_ce!1zJFl4tRAQ}+&#
z2N<ovqW-l(sI~H&TNF)Az{+n#<amzu0OT}s#ggXJih@{M{oELsu0QhjH*&}!OFpk1
z*^;v@mm6~A7Ws2ouz&=?ef@(OqCtzf4BDOsz#zzR7q8t99>={?`uOot^4Z@1Mbzg@
z^ikts6N9<^P+&3?%3WE3NzDazzKknbjPO2wH>^DYMX&j9g+Lgw!SsiH)<}l&e7O3u
zkCk2tL5ejv(8o&eh7-oWMbzYHrDs=xQ9BjSn(i35DK`_lNq((?4a1q-ENa4<BuU&M
zFXP8-;_c?FfiQ@f@^M>2h$UqB+3AL$^i0zDp)ecQlpM1OA*M^dogQXM>FA^PvrX(I
ztbOP&$K7NL{hYz6N9Xzg?<6T&Ih}VVa3TzS-CLYnnSq`9m|qTAQr`0&<tKPUaJJ;5
zNi|FB^lyEvDwng34MA}U-uaK;g_s~z8LFUg=8pJa+`~!?RaDzRfZ~4Q|7;YB2K{rj
ztZtTXO=$$&nRJT!pUX~uFnKcsdR8!8ZRTp9eh-`bf5Lule%vwSd-BE*6m5RoHl&}@
z2?I7=NE6@tWH;(`cN@7aG7}>qmUNKM1T+_f^E;z=LiZt@ek%*l)10;?`1B#B@8bzR
ziu>Z^zvriXRGESDv4-H=O?2z6)7hX*5*RB2+YA-C2Ardo$Rxe&SLf(3)-gJ9Hlxx8
zg{}txy)%tNiCoOb8h0t(Ns8%CMwN9^naVZtUipH2KkMoQm{yEI!S|D&4#&>j;w+91
ztFw1yGM_)hH9P^n+1cJ+t@_YGte`9lG45WBe0)OW?@t)`ujpq+pJITT%F0cmv1Z$=
z;wvs!mq%=Oxy6d@^<s5*i=(a0(Iz&!U9Ap}$L02{5!Xu=saRZRE-p2f6_<%dx1-Bp
z_c+#wyKqa9Bf7=3-qhl@J6k(Mw_{(Yr_<#W*ICS#veMm9L8sas_Lfdy1t`W<y4+sJ
zep9^#;*)jtdd*U88e7g*3h69^WwLC|Tp@Ep?C+KqLbG!Q6odu8YJ?XC5Kt3K0%##I
zR)IK{1c+N?kBc>9G~FV*4wBKMcJ3I(z9R<51`t3W@t@b}=S7r+MbQOFf>hK~59)9&
z#eAQQ;@k+1gB8eCBHw%!ASbN+#w$v~m5Lbo5^lsr@tv6SQmk)B#G-u2zGo2zr_1T_
zwn?p!=Y_mB=;`vh?9kjCx#i~e)^54Sxd3)~7edE8?C$A;Hm}R$b+<!%>ppKgpxEVb
z(vg|C60umiuWaP$gqH!Vjq+0B%K@s0rzv?7|0;@qAdZ_Rh-Uz7#nDK_X6+%4`oqN0
z|7?^?SU=%9<Qlxx#wZ8LbD-O6Z$a*LE4)LMaFo3uwb{LPkXk$*kVqjZ9g*;{C^*uf
zd8igFxm~oA!WK*Tr>WJ|-R*E<JbYV{-RpICw)A)%9!&p#(<=0&yNr+Suq@h%rA8<R
zzvPD{Mrg4g*@#x-O2GABe$S)N;&W+URZ?Hs3#f?o>qDHUIw4p6Hlj=~!-|XO1{OrK
zNN<f^B>7QZFX4)fcLuSnCX2EfuLkAVc)wu0{ivgO^skT_ZzswWZyhe8G&HEaBusu}
z?}&0Ua-vK$xD+w+B_CRE;=**~h!Q{VpkJ{HkdqG)j`v)T3D;p#{Uk(5^&_s{A(^gX
dyg^hxgEGaS{HRY<YfKy9bu7YxI+fIT{{W{zG<X02

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/pins_teensy.c.o b/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/pins_teensy.c.o
new file mode 100644
index 0000000000000000000000000000000000000000..3e7f12b3d5a4b9c60e468d9493264f49d90e2074
GIT binary patch
literal 12472
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

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/ser_print.c.o b/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/ser_print.c.o
new file mode 100644
index 0000000000000000000000000000000000000000..392b7272443e426d1ee9179c5fe0896c4861746e
GIT binary patch
literal 768
zcma)3%}T>S5T0%NV-E!t#XpesqAA#zl(bN9rPf}osOU*VHtk9SO}6Z=q9<R&yRYPn
z_yjuJbg}gy4otrJ=65Ia+C4iZgn$(SF8nZnw~Q3RX@U!7C<634onz|u&Tr_o5MxCj
zgrx1OKJ6wE9}fADUPv+EN(rf|wBdzbK<j?c^jkrTx{{AMQ@l!VvE+!)N@|T-Bw0Eb
zQOTcT6^oSCLqBXa@1X7DY{pp>1KCHj&=FGe=UP96Vx`nC=T`G;WSwj{n`Db@lii%%
z#p3)vdHDRYeuK`!wuUd3JLs7g2lDe2qXhuP<^4p)srCi{o_a|%ix9QUaAYlfwFYm<
zGy^YE3cP_x5}u+De}%`imT~l`xmuX;H`&3k*$=NWmF!M4f?&7VL)+xpZGPw3e{_I3
zOaI6_ob@xeF=G0Osg-?9Kcfv)oH@z70Pko7mLS@>D`?xdneZhBy2hA^%`<3sGNBJt
a)7-qdglev{j9NyW?{|WQ74%uL{k{RGeolM<

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/serial1.c.o b/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/serial1.c.o
new file mode 100644
index 0000000000000000000000000000000000000000..f0c78f5c0ecb507e63a3726ea32fe1ca40e2424d
GIT binary patch
literal 11040
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
Tq2~%sDSWUR;J2EAobUeumnUY4

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/serial2.c.o b/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/serial2.c.o
new file mode 100644
index 0000000000000000000000000000000000000000..a18f967efc257ec52ea69c2ea723bcd25ebf5e33
GIT binary patch
literal 9628
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
BX(0dr

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/serial3.c.o b/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/serial3.c.o
new file mode 100644
index 0000000000000000000000000000000000000000..ff1f331b44b88131e58579f6b58706b3a90a296c
GIT binary patch
literal 8928
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
b^!qga$*#N)Ixlo4O~YXjo&Rha$oT#r8u@tM

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/serial4.c.o b/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/serial4.c.o
new file mode 100644
index 0000000000000000000000000000000000000000..2229f50d51e8d414e258eaf244da2ccb289e08ba
GIT binary patch
literal 764
zcma)3%}T>S5T0%NV-Z0`@egFZXbLtaB`wrjskIlYB6<=Jn`EVdrYpNq^yEwU2ELLn
z;uGj>lf~47I50ck{O*1`uY<EwLI@ZkV8f3G@Rm6he^y{a9jXAse*c)-!}A+@EyP68
zdm(A>YD5P~z@vyq^iqnDD<!0A(6-|{9&Nc^$L)GuYD+%hOz{T2#g-$Uw=~<$K(c8#
zrjkF!Di%}P@?F2%xr3gIcQej{7|1@tN?*v7KQ~7{RF`U_dTF)1M%KxOwMn+fHrXv1
zF2)x5l;QKs#I?2N*lK^i-NHywEGQRU%vJytmoc08P6*(rmn3BY+EiwCY!JRV1t(%D
z11C@loKPeQpJEI@!eMDD<KQvnYHt2t&JHFuH{8ffvK{3P8pC7{v92>re%G1*Il!8Q
zf7Bi3^YmV{=y_s>vO~|)+D64YAF?RGI|9!*XwAJVh|Sw{`T`RJ4RSGc+8Rze^?|B~
Y>o?a>^=6h)>!`(fC)l`%F(YQ)H@@*rQUCw|

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/serial5.c.o b/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/serial5.c.o
new file mode 100644
index 0000000000000000000000000000000000000000..e356a2cdfbbc19351eaf45a0c6e11f84c8a6ea7e
GIT binary patch
literal 764
zcma)3%}T>S5T0%NV-Z0`@egFZXbLtaB`MTfskIlYB6<=Jn`EVdwkx|)^yEwU2ELLn
z;uGj>lf~47I50ck{O*1`ul=)ALI@ZkV8f3G@Rm6he^y{a9jX9>UhkONgYz4DEyP&S
zdm(A}YDoK&kjF8P>7^7AS4v3Lpn>B%9&Nc^+wFKAYD+%mOz{T2#g-$Uw={!hDA_a`
zQOTbYm53>A`L5q--$B>KyBTL;0%RXyr6**{pPNG;s!O$Dy|h|hBkN?t+9X?Ko9vbh
z7h{Wj%JBJR;@VnsY_&h%ZegS-7L<!FW-9=S%Y=;sCjxNP%OqtX+EiwCWDveN1t(@H
z11D4poJdS2e2Ovr2#2MqOv1;MtGW4qIXjrt+;Af^$##@GXbh7*#JbKf`CVuJ=KyOK
z{!w?B&(nL+qUVVj$__nGYk-P(K4ejVcLbhs(3*Q!5SzE@^aUpR8suW?v^AV`>H}2|
Y*Ke+&>dh>p)=`V|POxziV@AxpZ@{8WQvd(}

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/serial6.c.o b/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/serial6.c.o
new file mode 100644
index 0000000000000000000000000000000000000000..608aa25c1b0751c7ebd4a6612c5a01e1aacefb65
GIT binary patch
literal 764
zcma)3%}T>S5T0%NV-Z0`@egFZXbLtaB`wrjskIlYB6<=Jn`EVdrYpNq^yEwU2ELLn
z;uGj>lf~47I50ck{O*1`uY<EwLI@ZkV8f3G@Rm6he^y{a9jXAse*c)-!}A+@EyP68
zdm(A>YD5P~z@vyq^iqnDD<!0A(6-|{9&Nc^$L)GuYD+%hOz{T2#g-$Uw=~<$K(c8#
zrjkF!Di%}P@?F2%xr3gIcQej{7|1@tN?*v7KQ~7{RF`U_dTF)1M%KxOwMn+fHrXv1
zF2)x5l;QKs#I?2N*lK^i-NHywEGQRU%vJytmob}koDjfKFG<P*w5iPO*dTm!3QojQ
z22P+9IH5=qKE)V*gu~KQ#=&FC)!h8QoE=PRZn%+|WIM_oG=|9@VqIsL{H`<qbAUAq
z|EN36=jpv@(euO%Wrv=pwT+5*K4ejVcLbhs(3*Q!5SzE@^aUmc8suW?v^AV`>H}2|
Y*Ke+&>dh>p)=`V|POxziV@AxpZ^BbeQ~&?~

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/serial6_lpuart.c.o b/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/serial6_lpuart.c.o
new file mode 100644
index 0000000000000000000000000000000000000000..1de4d37cb6b1c79d5e09b8ba5085746e5560b430
GIT binary patch
literal 772
zcma)3%}T>S5T3Pv_8@3c`~z7p+JcQqNelH>YVE~}h<Xu`O}o-S(k;7N(UULY%~$e8
zd;*<qvY2`h2PWTq^ShII?VX<yLcj`vD*P~jw}ce@c|sM+Pz30AyC<~Tzqp~-LPUx_
z3Q0Rx1KNuNJ{s{6y_90el@e0bXw&f>k2YMd<+i;xtx6torg)9sVaYL1OX|&fAlYO%
zrjkE}Dijmi@Lj*%x`&R7vl(YW2;>0GLRU!5pX&o3iYui-d8v|LCmUolw?($e4%u6>
zyI9QblZVeQ>o=HN*w*mH@*H}yl7oDfVzdCDxC~j;dWfboCbcsJaMVkzS%9czf@5pp
z(=|9FrWrVaQs4|l9P<hK@P9Z=YZ(SJ&DFw~Kglje&5n4Pxg@tr34+~dA8nIoH~O7t
z|I;DnEdL|#DD7wNW5o0mb1V6neny+9ICGkK0p8K@EJ3t$*U+|aGvQkd^o)^;%`<3s
dGNBJt)7-qdglaCdidsg^_B+MG3i_<re&2$kP+<T7

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/serialEvent.cpp.o b/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/serialEvent.cpp.o
new file mode 100644
index 0000000000000000000000000000000000000000..855e0e31b823ee4d7d79ef3787f1e2426cac7183
GIT binary patch
literal 1032
zcma)4U2YRG5FU4v{(z8ZRa6QRGKim4A|_jHtEO*N6!Jn)h2RAQkvHqom6ABJ-4vd<
zNDsg*=qY&O5}W{LcGs;NkYJ>5=kJ^Gc-CLKFP<~Tzzc&0TzUY93q_`$6siH&VHu`9
z_{N~u>Fo1H@8ui*TI-SJN80d%SAE_crz*=-#t)4iDr>c|TYN_(BIetzc(>J#+q_}a
zNJ*=<_&Y3lrmB+WPBS%fGCbx+&2pRT3ExgyNqhG_9JFu%sbrc1dyHniqm5Ian*9V8
zZ!Gm!7S?L(>=xUIZnI5xhutg3E{4ANg!ih!&tDe_G@>iFCjV-O2qU3HP=nPlfPN?u
z)I%4m7w7yXSjPy>L?=DK`bQOmVyjedmC5C(J5v)UhSMoLbTD`u$3b`ogTNbP>PVi9
z9DuN&$4;iGohkLPw{U9?L?)dCky;Ca0^*Op1w;I`yBO;67-s^3KTk;KOrD-NWvlW3
zOWj2l-P3QSd|#KPe*5<;p5OjFk9v?iK`bNw#e0gJ`E$cR=j~3#^ZoWJA5|g#+z;rH
zP0y30jnIWveke!yh`?UcG79h&jo3S=eLs3r{!B`L$HXZam3SU$zavWhK%674RiJy^
RM64jferH&?k1;R4-)}F8b@KoK

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/serialEvent1.cpp.o b/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/serialEvent1.cpp.o
new file mode 100644
index 0000000000000000000000000000000000000000..1d267a7bba612566b10a5d78d12744d6605159cf
GIT binary patch
literal 1036
zcma)4?`ji45TETO{i6uBv}hG%710!$H5abM2!1Fr=8F-L`bCj+FSn%!NjB_mgZ<=-
z_yE2|eGS2v@CkJ0?zY`VK?mmMH~)S+vwNR=uU<07zzc&0TzUY9OGT!h6s7^!VHIY5
zIA_rBcAxP^|Mfe5sP)+LV{Q1s+X3%QQk7*Y<8O=}DQmT{JA6+hBIfN@yx;1?9o{f%
ztfW;t`~$W;QB_NGubCP-9i4Ea=DE%Fl(&;s(%JtA2Q3^xDw*cM9wDrEwQ=fGbCAID
zjg`UL(nf8QZLwR?ZMMzsuzTg$#n2a@aIYHt{B@B)5M9}t{HqKRMnZ|81{+}j{ZJyP
zhc0$6FZe64g%O&GPI`d-kE;rbty8~MCYR&hTuogpMza|_bTE7$x5M}xhM_ym)UiAr
zI{;zNCQhbkohj{!M|g1#L?)dCky;Ca0^(2RqD1_iUySr*f`fs;7ZlPtlc%Rn*=mRX
zF?X?ucJ((?{$rP&{srz=b^Zkw>xhGd?r#<KUv;}!vv_X!dLF;1>O9}m%12X(Klcbd
z!t{%hbWnAH$`9p8b5!J-l~I7N2x9M`^?d7y{h5^hj)^k@mH0Zc{*Ea11N9r~wMuD^
So2YB3A>S8le2y_Mp6@qa=yv}A

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/serialEvent2.cpp.o b/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/serialEvent2.cpp.o
new file mode 100644
index 0000000000000000000000000000000000000000..a296ca5a7db63020e0ca7f56d24a3ec4cc150442
GIT binary patch
literal 1036
zcma)4?`ji45TETO{i6uBv}hG%710!$H5abM2!1Fr=8F-L`bCj+FSn%!NjB_mgZ<=-
z_yE2|eGS2v@CkJ0?zY`VK?mmMH~)S+vwNR=uU<07zzc&0TzUY9OGT!h6s7^!VHIY5
zIA_rBcAxP^|Mfe5sP)+LV{Q1s+X3%QQk7*Y<8O=}DQmT{JA6+hBIfN@yx;1?9o{f%
ztfW;t`~$W;QB_NGubCP-9i4Ea=DE%Fl(&;s(%JtA2Q3^xDw*cM9wDrEwQ=fGbCAID
zjg`UL(nf8QZLwR?ZMMzsuzTg$#n2a@aIYHt{B@B)5M9}t{HqKRMnZ|81{+}j{ZJyP
zhc0$6FZe64g%O&GPI`d-kE;rbty8~MCYR&hTuohDjAk=<=wSFhZin$X3`2LAsbhIM
zb^yYjO`J^8I#b#ckMQCgh)g;OBDEF-1;n4sMTz)3zZmJs1P23wFDRsQCQnbDvegd%
zWA0)R?dor){Kqak{R`Z$>ii2V))5B@-QOzezv_0eX7Swc^*nx2)p@?Bm5-(nf9?@_
zgy|P0>7eQYl^@EH=BUUuE298k5yaj>>-p9Z`!gy19TR5+D)Dt>{T)&22kJM}Yn9R-
SH&NG6L%uKA_#9(iJl}6=q;~`W

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/serialEvent3.cpp.o b/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/serialEvent3.cpp.o
new file mode 100644
index 0000000000000000000000000000000000000000..f4028231ad011ca8aceef23bdf8d31c6083ca897
GIT binary patch
literal 1036
zcma)4?`ji45TETO{i6uBShNbVif9UE&BbeJ1V5A*^Tmir{h~<R%WdgFk`24tU_bdH
zK0x21zJ}mS_yjt0ciV2GpaXOBn}5HZ*}X5lS1%c3;Dtd0E<AvPr6N;L3e$kAunMz2
zoH6KkyU%!||N0$2(0Xk7p*DQ~?SS_tsmd~y@i#_~l(pK}ZN4KC5%YE{-feZ_4sRGW
zR?@0%{sCK_sH&y8(@c$=j*hrd^W5fo%G*gR>Fj=l{T2=&l}vMB4-wY8+Bo&OIY?mn
z+R9*UX`^<7ZL*uuEw;sOv%BTk#n9)UaIYHt{B@o{5MA1u{L2gxMnZ|81{+}j{ZJyP
zhc0$6FZe64i4mHKPP&i%kE#laty8~MCYR&hTut3mF`CWbfrH`uxE;plFbv&crVi!t
z*Z~N8GI26R>r82nJi?1}ATsGBh}2pT6cB$h7bW8F{9>dh6C4Z#zMzoKnLIsq%2qr4
zkGX?Iw5z|F@*lhC^e=F)s`D?fSVtTrbbqU;|Ehb8HH+tlujlcLs?PK6RX&<R{JEdd
zBTT<2Ne5LIsQgflG)G0QSs4X5MG$)jt>;@u?9Zh1cTAiRsKnQi^>;+6AE@6@uT)BV
TTt{6)4f(!e<8zF8@qE7lbYOQ0

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/serialEvent4.cpp.o b/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/serialEvent4.cpp.o
new file mode 100644
index 0000000000000000000000000000000000000000..9d4013bd3ceaae18f3c357267ddeb35de0be4601
GIT binary patch
literal 772
zcma)3%}xR_5T3I9$iYO3#=peWi!O;&APWiJ2qG6T#;6zLp}W+u2~g5jq9<R(o3G@H
z_yjs-X<R%QCz*aToxgsa*Y3qRAq1Qd@ZrY;cuSmIFi-HI2zh{Br*lgE-sLU5k#eNz
zqg1qg-KX7gC<X&DpjS#pLTjmXnKoF!YP4RhHLI;!i~3581lOWW@3G`WEJ`YkN~riG
z8d4=@v5w`0)`M!$YCb@_inF=kVGQID&0I$+Bc3b$0P?Gaelb(ZZjeo~<!zH4vP<?e
zj*G)IpDcWSxqFM=5?kvpmwR}V77wy%7o#}<EmX`$-I<t}fJM_O0MjpH!$U-)5*#`U
zpKgE+xZ%J;t${^yJjP03_#ccLqvG(%2)#7sPiGIKmLqOvF3GMI4uWHJfVRzZjDF|2
ze>%dPm4D<NFZ$X2Sh4-&+)57H&uRk|XX3Xc@{Uk*4x*d8j<$Q74c}p)YmJ4tJd2K#
d4Sk^6=Jw46RJ)-y)FNuS-x(H`@Xm?r_YGTbP)Yy*

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/serialEvent5.cpp.o b/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/serialEvent5.cpp.o
new file mode 100644
index 0000000000000000000000000000000000000000..cbb213c3eeb9bccc1b55c6a32be64fcd8df6c186
GIT binary patch
literal 772
zcma)3%}N6?5T5kc9t16le<1OqTd=V$+d{pST6?h~qF%&9b~n<6wkb(0dh$iQ`AWWs
zPoR_T23rr}z~r0B{N>BM_Abr|A>f372R|ObTjJ#Xd4dNeC;;@k-BarIFK_9Mlp{?a
zrJ|kd0qu<g5k(@RS4xILYpHaFHkr@rv{9?KYVCTPdP<B0*P=r2vE)RgCDmp%P<#>&
zsS>kT$8tg&e$8*U9-vdh*<A1-26BjIzAKdx&((nsh1KGqlqu&n$R^p!Zj&9dOZGF4
zi^D}eIr#i?_ZG8DY^}dsp2eF*$wF??#b_Qt3l;NGZzd+D$-?Orfa#a9;Q^vi2@aiw
zPdC6KZaA<&Yha-qkFgRM{s-g6s5p2sLNAT^)7itQ<%pY^OR}rfL2!%?(6)Jw(eFI>
zPe+)u@{hdZw4dFN728kFt>m!%tTs_`CVopI?+A70AiBBhXuG%B@Erzv)=0(WS#+Fi
c=mXU@w{I?@+6}FtmQWY_onc`a@0_@P-(4e6O8@`>

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/serialEvent6.cpp.o b/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/serialEvent6.cpp.o
new file mode 100644
index 0000000000000000000000000000000000000000..61f14c6edcd56c62004d719450845ef62f90a649
GIT binary patch
literal 772
zcma)3%}N6?5T5kc9t16le<1OqTd=V$+d{pST6?h~qF%&9b~n<6wkb(0dh$iQ`AWWs
zPoR_T23rr}z~r0B{N>BM_Abr|A>f372R|ObTjJ#Xd4dNeC;;@k-BarIFK_9Mlp{?a
zrJ|kd0qu<g5k(@RS4xILYpHaFHkr@rv{9?KYVCTPdP<B0*P=r2vE)RgCDmp%P<#>&
zsS>kT$8tg&e$8*U9-vdh*<A1-26BjIzAKdx&((nsh1KGqlqu&n$R^p!Zj&9dOZGF4
zi^D}eIr#i?_ZG8DY^}dsp2eF*$wF??#b_Qt3l;NGZzd+D#lq<nfa#a9;Q^vi2@aiw
zPdC6KZaA<&Yha-qkFgRM{s-g6s5p2sLNAT^)7itQ<%pY^OR}rfL2!%?(6)Jw(eFI>
zPe+)u@{hdZw4dFN728kFt>m!%tTs_`CVopI?+A70AiBBhXuG%B@Erzv)=0(WS#+Fi
c=mXU@w{I?@+6}FtmQWY_onc`a@0_@P-(J^HOaK4?

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/serialEventUSB1.cpp.o b/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/serialEventUSB1.cpp.o
new file mode 100644
index 0000000000000000000000000000000000000000..f27e64a652722e144ce0a8e2ad1c972b9f72a38a
GIT binary patch
literal 1052
zcma)4-D(p-6h6~U`lAT8v{)5n6wwr#F<UmJ@veq6H%3J5jUr(-JE03nCd^Djd({{5
z0ep-4AYS<fK7pRIyVGtLMGu@gf8Y6=nTy`*BgPnbV$gtV3m{p_BK0T}4Y&=fFz>@9
zgMPRBk~jKqj`;_zCzg-3;fL=Ayf=+ilBk5gHF~71)yD4dwunT?_gdk8s}pv3!>Eap
zR_*XlnDRmuDb02>HgYyP;YKY|o9Y?gi&{}<|1%u6Z~&=foC14>YQ3wCQ)kUV1j~0;
z25U<jwN19g?giWIK6}6(<zr_<UmfMWYVh;dRRERX#@1xttPr55OaatjtL#9#Oaau(
zCT1^J>=oEX56wiKo?w2nK#*^p@~twdob(oI=8oUL3dLwXho=sPAH#Mfw18p7GfdQ2
zo=zNqu;)`JW0cP1^2BR+gAPO@odgkE3xXWtkM%Q@_-hw2($gu<2?8HfNasu%pE_lW
zmHtaSL=^4rZz}(D*Qx$R9v3+OB2^sKAbO6xiu^C!E@G;E%dhG6eu4A#4hkDZM!xSD
zEz;@B5_OPursW64h{=bw=D8Q(D=MKkQ2Ki7sQaE2{(*rDQVQ}olKze;^d0#d@~wht
TkGsfg$mM!pF!2a|o_xLEiF13}

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/serialEventUSB2.cpp.o b/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/serialEventUSB2.cpp.o
new file mode 100644
index 0000000000000000000000000000000000000000..8c8a98d9a94698f2ee3ae17d52024a0eeb03f1ab
GIT binary patch
literal 1052
zcma)4-D(p-6h6~U`lAR|ELH^>MKpzG%!W;AysIJ2jS*3Mqez&|PUu3C2{Y56SA7v5
zz_+Lm(yP9KPoU@Q?zG!Q(F14B-*^6I=CuF%kTC|H7&PF@0!UV}NIl9#18%}PECz7K
zV9@Km<c-0bBmP0_spS)G_`$m&@6TeDBr4%=jUFp&wXr+ABO(#<b}QU#b;B-i7&TSW
zsvZ6bQ(mYdrP*o5M$X5_+^A)0Q$6SHs1<ehKEpu^2arm}DX?d#)_dAG^`$wCVD;A8
zaAW08?JnD5_kwM9pFLoY^0Bj_FOTwGHTe1KGJr~OZELcxR|wEkrT}WNRd%3VrU2??
z6SG$<_8M%Xhi0NqPcXk(Ajr2#`Bs@!PWwwWcSrAEwZ(X`fTs>dAHz;1w1iQ`GfLD%
zo=hEpuwQ3R#weZ1<+0cB1|5h*Ite1S76duOAM0l*@z*Y5tY<Tv69hh}kj|MjK5@zx
zEB%*vh$!0K-&FqRu2TJrJT7qlMXETeLG&DX9r<6lUBp!TmS5BBg97L4?H4wRjC|h-
zTBOsLCF&yUOv?|75t9#VEpjiwcT_@ep!D@NQTIJ5e1U;eQVQ}olKze;bdLN3`9{IC
T$8F>d<Z``ln0SajPrlx7lu~=&

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/touch.c.o b/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/touch.c.o
new file mode 100644
index 0000000000000000000000000000000000000000..dad043175f145995b70947593f9ca352ddee856b
GIT binary patch
literal 1368
zcma)5%}*0S6o1>@mX;6s5JFL7Mj%>@j4c!b7?Y9)ngE4D^kCGq+wMR&X*<pCV&EhP
z4<0;v^S>bRXl(ogj3ypDiSg>C-g>~)H{DKIh>8A^x9|5pX6C(lv(HyHRux472?Zi>
zW&s?it%yI~QW5Bd5Zs8+ui^EvC(WtbpGMciYbT9rP5oJe`rBmjq*44nyfu;@*@Ve!
zxo-`KDkNDa>dVAO<iol8#6phdJ~W`F-246ca`BD-^h<a`@b2}{@oZxdj*jc^fK*fP
zUe*K|EfGY~Pyl=?Y-@=lWepaNv_z=8=|vv|f?dt#rT%8G>+bPGDw$j&k<{ix@__S_
zO?J6OmUq%*rJQGm!3>hIc!AkAx9ll0N8>a`W}>nA=wfV<L@ZWfy3MA@V_b5VwU<oK
zP3JAWQYaFOJu_{SSIA5}8eg1$3d>O}TW5OS1mz}Df0A1cJD5(#A<);A4*7<(VP!-a
zRl~}daz(lB>vY*6-uu_!SF;m9qMn<Mu+MLxqQ?srG@O_h8qN@4wd2xY0{M=|UP4~<
z*d2;Qg#d{783J&>ZH%K<Fz$s4U0xH{2Vtd^2k;8@5Z1Tl$rupa;roRmEx@D$8`;_U
ztiek9VcINM+-3z{F>G|l=l<fJG@xo$W*pme_t;^&0fxC}I(jLKk*veBW@VRWGpV%O
zqpusFgh%?s!PGu1J9-|qW4XF08II5aYUqv*G;iBL@nKNmq^)9G2T_ZQ1S(6Q1zs+*
z3a-PqLv_co%>2H?Y|-NX;wmPJ_aJZ8{SVJp%jw@}=gH|`%#&~G7Ul&}{*@<Q@x^n+
zyd<<Xxr17~uSDBE#e&3D;<e&rT@mLcP{e++-Wu|86bZRs1|1?#oG<VLg}0dd5iuc;
zP_T!p>jl_GXG|KXMUKEAitJU`y=a(%v?23^mbHn{3v>*i^dRp?5%r0_M6cfcUgM%Y
J^hwD5{s8IE$dLd5

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/usb_audio.cpp.o b/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/usb_audio.cpp.o
new file mode 100644
index 0000000000000000000000000000000000000000..9ca51ec59115b95bfdefd3aa41bcfc25e58b9656
GIT binary patch
literal 768
zcma)3NlU{(6n<m6*n_yBxPgopO~J;bq=kAbwf15~Tuve~X+|1oI%OsmJ^44h`<MJ9
z{sMi|WH9w0K6vxJeVO;#JwGFafFS}l{Ad7gsZ#W30X9^i1kmerPN?0xxTQBjj1+wo
zlD4n<v>OLJ40%W|r5JFfgj7}9aD2z3b=PaUEw4pw$w!<iUZr=Ka?G=oTB8<7HXaPA
z<WG@`#F*B7*KalNq3vRC##s;nIY6=45i;S=wZ0FfrE<TruvS<n8)VbkBHLt#>@ApG
z4CePKz~`5-YqaLJ)%tw8g_b;7P{^z3Edoqc@W7^FB%Hxy0^q2ZIAH-|B2ye13Fl70
z30cCx36uh7AmW&h(T1Pluq2UDFip6c>+zSei%z{CUS&q<oiYW%Y_pHDjx*c*jx&FB
zh%t-*h&#&a>Dy@1^~6j{A6-v#0~vebucY*j;28zc^j$^S%%<Jf=;&%8BNM05?4(^E
b$hx?mxs0r@vw~bf&euD|#AUP@GWEUz#xPGs

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/usb_desc.c.o b/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/usb_desc.c.o
new file mode 100644
index 0000000000000000000000000000000000000000..fbb5a6878eb963ae7075d887f9f098ca8b596c17
GIT binary patch
literal 2752
zcma)7L2MgE6#cVn$FbEUcABI~O3}J8#Z{Ya65L3s5ONxtA|*knq^GK~*7l~cWP4Y;
zYt)_^LGIj84jkZwdMlNv5E4ocT#(?vfeT!@AWm>;4~X#o?oKjUr-Hwlo&V;)`7{5|
z?B9ns)>nlPBt=k}ju6pjnb4B1gk71&s6g&lyN|u6Q)^Qj)9<+FmoJQzc8b%k=}xbv
z+$s0;{j&pq|2(!fxm|xcwl=oDcYSZ4{@5Y$Xm7ttx$_6l|2Ytkj8&Q`ybzbf8`r+f
zT{2#1SDybgF*D<)9=qS(p<kaw8toHl)ePDI+92A)PxgpqROE$5RDCw_QL3j2O~<Au
z^-Z$zbjha&)TAD@pgWY+R!9@{Y$2N>5*pNWiSi;{Lg1;AHjpk2kjSJz)bmu$rUYp@
zERad-T9vz9?uf>x#${qg8Dnvl6@KabibUwVNF<t~>xwSz+)wDY>3zCR2HrM#*s(=z
zjHkdqrTA6m++10?W|VKfd)wG_oVIUlIi9h6Ys0wFsoTw_-8A0woQCcDj^|%Au9_8d
z-dLEMUz}T-Uoy&`-L@^?zG&RRlq+^TW%lZ9-LtxlZNsxaX!$LtYb;deDocxZX?YGy
zTeekik+=Xgz2bO*eSdbNLIXpYjjT4B8WZE<j6Nx*#I$%d&Wo~NnYM5!MSmWsHvO2D
zQ+eEht|k`~bxP4G)dBDbFy}0i!}Nzxr-9HetppsN9|pJ=z^dq!N${f&Kyq{%OxOph
z6dU<22-sE8DVyMDRWstrCG33pjzmYa9N&=~k6x#tgnj6U3Qecsgnc++Kki+pJS~F3
zHDDKQ6!~3OX5^vYiZN%pfcRwYH$$AGo!CAR;$iw+!A0!n8wD2--!BR-0{<1`N%RGr
z#~I!XgmDqL660un#M|@hwWjSi%m$SLDmAHzTime2F|XwYjz<lryVbg<j_{;bw-wZU
z+iO|vZV%srN4<97SfN9^+jN~)H>kx^1FPP)50{GE*4iyU2*>=uYjy9%zG{&(thQyr
z;Y$gs!S$SGuMyO`R);s<H&L~#^Ey_yw`Dbgo@aY6o!m#FXuosx7IK<9N8y=iNHFJA
z!xiRp){xp)xW{*2=KeJz{tsv~D7@Sk@iP4f9i#?*;6?qm)KDe@GMiRlky-bBGEsa?
z9yCwReMmL?&n_D0IdPWz!Z}P>MD0Ip6WPT+!i7&h*l=?Si|><q$bFko4<xa^Om5$t
z=&B{JhuLsC9lMKMp(dMFfU8vR1-6gu{%<)8CVv*PnnnNXqv^7$@{uu5{#ueewz0g9
z#+B^9c>H%ruDgpdDSV$;E~9bftD=R1jq)Ai8q6GSydKvYb$?$2Ge?T_*TjIz`vI8i
zgA~d87y~NrH(;*QQY7yS3@}gTsSF@(%$53&3EpM!xb8`jyzeof#+ygHoGXrnD?IZ!
z-rv#G{p|p7-IOBzjbL2m?Ey#|bESSR!TS{WB!6$mJl+$_6JRG&!#7~K-Ubxh0au!e
zNYK0lF^6FRP2Ls8Rm6Ljox~zl?q!bIv<cv%orcb}hU4IS!MRiYeFwvv(g|!*{TGZs
Bgp&XO

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/usb_dev.c.o b/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/usb_dev.c.o
new file mode 100644
index 0000000000000000000000000000000000000000..e9175687efb9f53d63c861dbb7d8f691fba2e66d
GIT binary patch
literal 8544
zcmd5=eRLDomA^A1Te1;Yw)n7RAY;i8V}lXKWC_lu@&^J-{-6X3G_aCv3#7)jrjneB
z{U{R9tVk$LN}8rXT0*mDn{JYWi9<I%6tih|*WHut;$1kUn>`073pT;KIb#=+NxHl2
zy)znlG;z-6&wa;F_uY4Y@4ox)yZ6qF4{U66GYkW2W1tFVIDntnWJzAVOsb#;<;_dE
zn)%nF=L=iEEIA-FC=3;}<)!N-EAI|9N)G?l@=6?cofj?$oA7rN@YpkrS<h9OubI4$
zNW3$8-a81qE&XW7(gHP~j;h#F_a_qsC+r;D$0(zl5&LL}aYD`SbCJV@6^EkdZLQ@U
zjH6g$yk(sypwieRGI@DdzarJSdIrBDt>b?_$gIt)`4Cr^c)@NH#0&R6{-5EZwxafm
zgmJRjYH~6U?(|m(o20reUFSu#-sCB0wW92A4Jd2y`>iNjXF-{4AMHym4K5hLPJUT(
zt=!{cT%rY>Lzb54`O>!ccXQR{*RJ1UMYd$YBF;WH{r)zKXeydNJmN?@ns4Vdo7Ob?
zIe*uAC++BD?f*HEXP=xfISuw(69t~F=;QT+CYd(+n<NMB|G@-N&hv4O9b^mHV7=xX
zaxsN%WCf2lnA&dc-acq@!m<)WlbB>1{WrI<nf;h$cV={4gyB^mh@ID^`LARD@t>b<
z8GE&}^Y(F*adM=9dHA=If#*aM_tCjCQzqcVdj_a+iCk)jwBA{6{=qrBWLk^?B2Fb=
z^xCETwkFBY_K38chiVXeQ!lh{mzFzs`cJiOl$Jxiw9r}BQYkI8;2qq<pc1#Gp7VU)
zTZWzi)LuGlb^l5-z$Vmfay%u0^P~i>8|VDS@~g+Z<%z!<Jl0y6V8we}^&r#m?zuSv
z?fk}}BeTqYlr+d13}`!A%@Xoz@&xL9_uSHgZ;zfb#XEOM^}KQNZRV}t9b%acts!&u
zH|0A^rT$EAP55gBQz+_<wKK<iy`E6CW0O?xOr3L0r+WIlU-MV_!Ork6Hf;#l{67yk
z1(^OQIe7PSBq`oHICwX80K|Ve2-DY6$rT{Brw*=giQhf=aysB;!~=|B1xz13=xaLy
zb6V^|mtadAH@c?QAL0d;-|*gcFLT@$>Uw>rcUSASj?%O_@tg!>uBtruVUaOc4ZD`L
zh^*n_6cnW-xO93l5AY;r^KiOiq#}9ln8?g)yq(wh4&GjA@(Em7-GY`|EN{A2l@6oL
zCvE<Ry|(nZyQd?DQK&eP*d@5UHo@g#99F?K@dus->89xl_*N5$TT`n%xRw_uYCJ3D
zyP|udJ6btG_gL?#Z{3QwOdej9+8H{!rwQ+xn=-L@mpr#J4}EG7ONth-2K$rSZE3n~
zw9_$ydB8TycRj(PWNL!L-w!blp4>h;F=m9RM5-bmrp~0!81t_#_AJ4yWchc`Sp}2u
z@A>T2GOq>m*?9IBx5V#|9r-gcO-X@`@{{uP^V%iem?L~1`DZnAX&fi9KaKro=!5lO
zO)zV%!rAd=JmFCL@p1H#;YIY(t4Wximm0ilicm}s-nB$r;tQ!)JTE7Tg;&}QmFyT(
zKYyk9GDe)UEMK~sH~BWl)b9+L)|2J)S5A-qxb-FPOCI)_ms<a#?S*#k*}UgEMJPzS
z7rPg_4d3HKRf8KtgspPJs!vA2;qV(yIzu)$IGUstPMy?V=VwnmkFj3t279AqsNqhq
z&#(=sk+Dl<7On=Shf>#XS;hC6*BI(Y+E|`q@OJuOQ&OCJ@QK#B30L(-k)8Lf+c^1a
zs2c7RU1r0inQQU0$KRP`q4TzRbEn7@fPJL0<+h3YmdF@3Ne?^g1ha5my71oP-s{qp
z6jZrHK6PQrRa8Do@rp6Zu|K*loqEsbhiaF2e~QKGlx8tPpPnliTRJe#8r-fbj7ff<
zhxvgeImf?Oj>*CCr}mKDl_};7R!8xBc&XHXn+I?m`*+h_Z|?T|;}U!lG_Vr$rEfQV
zGP=uC5_$sb(65qPTeo(Y5_Jie$mS(Q2229hcLu7_Be2<jP-IvobEwkS2~Ui>rrEk@
znq1=9<jZL_SKml}EloBLCR;FP%`GW+MWRt;nF;}T_UWYiu-o8XkA5Ssq0hKCF*kSn
zQE%l)W#0rwO67~F@fd0ZtOHG{dT+gFU0ZqR)r8fbau>Rn3I94#)5?3-Y+l}RT{?To
z*^V9@TiwZ4nuXPErT*Ri=l!*tula3(6M?yoI$>qoQM}=rj(d(8f#H9&>=<$zgtfvl
z%nv0i!12`fuij+vcgM{|t#)tHK9@HMHsOr%z}-K3ZTq;vGpDU2VHdawke{cYmnWY$
zPq}gr8_D&#M0rQ~Lpi0cKaAs}*eRz5JVh17Lfyn5Rv_aj*eRC2N?t<0e|$OOEyCRH
zmv4UPrmO0}M`N#1{LI5@&Hk{%|I@)k7%}@iX$iKhb-UKP)>7o$9A{5bBvDL_uyX}Y
zj;G&@6P7)>M@FmIe;QZn5bNO3KYxEiz30EVMz?%%v?F`R74jXMCptXaLa=i1awz?V
zWEkVd%yq=SeA${l)Fh2Ql8$Y>I|_yPrZdbZEJt>Y<B2%5&si|V6udcQC^AeL4Ea-r
zeA5(TI&f#<YYpDKA2#3}i%H;11v-Bz#%`WuXs{W}u5{i$V!#u#Eh1+C2fm#+>B-~t
zzR*PaJ{ZNP!P7@DZZF|JAn)@Jay2e}-8k85rPU^U?($w*MRg-I*n;*LCx6MBoLl^5
zSk2b*zn)0BPmi-aH(u&RDO;YvePDryYTTs>tGC2co*+%kTGRqoj8C}esyghRsRr*%
zf?NsM<H`+wb6kxDiVc1JeH-VlU?&W|b2O4&;JB~V=4K{;35{qGvvz(>lOIoHDBFBz
zw9I4cw1#Z0w)S$&i1;P!W7w0;cajdP|I+V_js^jLo975H@1BFbTUA#jT&bh1u(VS)
z6m4EBFb=u{VR=g0;_AEuaZ80!Dt)L{F!+lFd~&47minZ@bqeh|i+u>Y1$*la7&E;G
zV-%|t$8;XT{=aUUnwvN9Rhv4t^V=ek-Wb0(66G7Ww(}eNx`I7D!5)4~G}0Z6#Ujzz
z3VvN}eeD{)&bj6R=Ywk=<g22=-e4dWT){tzOI8OnOIEF0)fEl&cZc|B@bPdg9O>ul
z>YeouKClNGo#>1}FwhkSW;qV?nj_J8FtMt=9`ffJ+Y8td!+d4|vxqBY$`~87l-2uA
z`^{m1DY=fQ7%u0F1b~Cw<s8mv8wUoMqn$v09`edJ3<(T5QV#NU_<R{(l||)eM>OET
zq{EwZc#{rasKXb^cp-}_%#LWlfmw$)%XmJEQsk8yp3WE7@Yx{_I9#3Uk9o4b8Gq2~
znZ|)dhqufKal}EfPF^hQvt%z(;d`>zq~Jpuo^~A3@MK?Q_8OJ-pK5rLv)OA?<U<;s
z<Zo+u(r?IKo3ejg!;`!%drig2%`^_Iy7O7(^QE&8Yj#8f4i?DrnaKs{A*GQ?49c~Q
zgM~W$LRg#ukf#}xYa0iPbofP3nE{Xs8I)@q2c<fEDXh)_Tu2#|Ya0h;I(!*4WB`gi
zWm-6%*9I+_8M<-?`P>Ln{%N2t;-Fk7FIPn}<?!^m>lee048nz!$$Ceb<Y0*ozXZB7
zc*Wi&8BWD7)!~;yQ6^STBZPsaI{bY){C&`yK`8p~)8Tm?p3mkYg%|_84qpL(oS9Ml
zSD{;9p~KsCa=T9M(8(R}WCo$^@6h2Zb$B(J6c`7~bn<2J{fq`Bo)!6$j1M7G50+|p
z?S>rCBVnd-a6g<zmf#OzFTr~Jmq<xB*;@?L_bwtO`AY01Sf4NF@FuvC;SbC5LYPLX
zHoBwVs|-@&7oalIr{K-7IKwOZ&x6$&p7N;#SF~jKI2u%f7PZmhOe1|ebo|$K{4pJW
zM#uk5$N#gAAJ_4pB2QC8*h{cJaoO6boUbgy6Q&sRtvZLVgoko?JHSA!%hwZpytW%E
z<51ZHLBZ*ZCwxLY3ekkGHxP@fQ@z1{c^FMNeO&{4NxU~4ossth;sIYgvTt8+FoRno
z<4~J|!-1?X7K{%Fs@ATaxUVbF{}@DrLhpWBus0Y5gvR25cu+Pkn#d4e*Zz3W*Bu$?
zkNaphc^aWJ)9Q>6=zc61SD@<RzF=P@x?kq@MuUp#V1JJg38T91NdMmOK3_c0h1Qc#
z;>xC|JsgX4hoX`G$UqEy(O_3368CKj2K!_Cdj`V&5uXeX$D%Ur3-tCzy5(Uk7!3z{
zeS3QcVj*8Q&Uc|vvZTAG+ZV?-s90Y(o{`7HeRyozn1sFIemZAQxPKqS_Q&Gk?#Fz6
z;ojbGOmn0xFdC2b#G@HNt`0>c&-Daj-O;cRk3>;D-Wu%{?hnrle2T&S1NfS!n36fH
z#x~hY1JOVnU;1PX7zB!6ef_~8zD{D;$?sR}dI0<bHURifJ*3SuR3Lt@@}9!F0TRS-
z1$Y4I(x7gB7r>up)+dR!X7uAaSwG67IA8b}zy^%%LR|kAQ7qK-UP1cbA&TJ3MDYQ5
zg(%uJMid_~H;6tAaEoXkz<&_Mf+G@b1GqyJAB6u!bQ^Al?;~s-)+wT$n0G|+eDjHt
zy-3N9pJeFYWhlL;u=vRP>kPe+p_ek0-c!gACZcGknJC(4A?il`MDhHkMDaX}i8cf9
zL~-9rqU3L)Xy;0zXrGfP+Fwr;?S6=8KY%MkHxrHEdk|5)oGnDZ4&W!c4xopq3;k(S
z{EYvHll@KaP2@K}QM`m6qG-QBbgxp!3*+>Eapc|jQybgghZ%-69#v>a9pOhp9BSpH
zuI-A&pcX$pYH6~T;uI@D?nG|Ve@2#*{<+d@z<x&KXC`toUomFZ{LkHhDuHf>vW!ku
zt0}HBuU1&CkjiY9S8J_`RtjlWjBe0YU3p&imr|va#Lc3k38f&*6Sy>^3>VDQ2BiS1
z2)SI#j8e0+s>uIp;g%<rThi46S&~!Nvsk6xs+B~ZMx9E{ukDWX^#%LUXZY1w8;HlF
z;jV#rFoqHIg&U@s{G7zlm0Nv=ssvM6ZWZ{;V8;}dn;u6pYWHKuu>L=BPQ=g}?Y{JG
zp*Bo)xzYPf0d|+nVea9pKD|$@z)l$Iv|l53tv;%qv{r4ZzCXkXt-jr;kJghuvPIRm
z2gh1{r;wjbAC{9GeLWg|q*vAVCpvv2$REb8Hr2jw;Dpw`Uew3q9N9--y{f+BIM&)n
z?_0C!`wrr?`i^S!nKk-e(&@X5`ewV2(>i^xpg#3J=$k~f?-x3KW(*{fsZAaK8%}7?
zVL=?dL#j>1UBe0OIWFM7&*MV!3w=AP`+kUHt-izPv>}{Ro2u_NPH6RQE1fw9eXXkc
z{u{?+jvDvt@xxiwfz#RXT-;QTBfqFkU1OUCr{)-8)p7MKIG3snsj9DG7Tj$6w$6gX
zsccinfiH;r#w<8jR@;ny=~-~I+4mgc@Gr;Dr)SakQ=PtRcptOrqwfXneGpC)R$2eO
zH4BdHP@6jb%@@Q?&4Qb4U-}-=+o$eDd#hvHEI9S<38#*$5JzjAG>MJQi?1r#Ml$Ma
z5QniWsDe#c1lFib216|6lp6EI_h5cB;##$-_7T-gLjv_B@x7-S=l$5pKDr;uHLX4g
MlkCfyg{r>)1;goI?*IS*

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/usb_flightsim.cpp.o b/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/usb_flightsim.cpp.o
new file mode 100644
index 0000000000000000000000000000000000000000..88be23845791fe617b592ab8651d2adb91752bbd
GIT binary patch
literal 772
zcma)3OG^VW5T3Yw*n{8`Um)?KE!eeNwuO2twf15~MDZXZ**3Kc-KHd|=*d6g&A;Ry
z@fYZ%yTPpoabWVz`;mEVpPvyzz!HHX{Ad7gv6A&?0YxZ44xrO&ozP<E;)Y%eF;a9O
zByC=GX*&vdzt8*hQi>i|N=Q|rHP?4NTCI5XO2cc=qU0ma6fe;`OgZLBO1V}JBpdgJ
zRPv`#g<?#re#LLp@1a@2-i)&#1ag34wk4$I&*iQUxutx!u&|n0CmUqb*&^FyhwLrb
zT`Z>e$-w8AwHtKiwl(^Ex`UQ9Igm-K=*<F5Rq!wvg^xq6!pQASCIGH_i8KokwTy9S
zC7fM@+h>}A8z=>CPec(PqYXdAWm?NHm};)(`uwHrqSNe%mzhy~t3*Mt8||ZP;_ODh
z<Lo~jV$9+{;*OGf=01i@Ju#Ew$J8@iL&l!?D>1zzcveBQeOFMnvl;g-I@(4^$i^A8
eI~mspvMFw6&Lf)(Eh86@)Add<aSd&jY`t%QYf%OO

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/usb_inst.cpp.o b/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/usb_inst.cpp.o
new file mode 100644
index 0000000000000000000000000000000000000000..818c283fa0d285f2c72fba020d2e589f91c587e9
GIT binary patch
literal 3848
zcma)8O>7%Q6n^$5X##}Sq){45(@hA)p=1*WCn%_gmNcnQo2r6PPyv~>y{-*T*4kZ%
zzlv6f0|yQuA#vdXq8zv&aRsRo;zq=w;)0X|NE|qDK|&xQMETx&W_Nb*)_KzGdvCrs
z-^|W?yE9i;&#h%L8IqErJjEW-p`j4zFNP{l$LRhLABN9y`-RR4JtFj|&|^Z63w>DV
zBha`0`u9e+Hn^5s<Nm?$NjDI>Cm9q`zZ$|gv$FD-nLl&>X>-GMo4#3dJ@eF)>*nfa
z*{N2Ys(Hb4D~|8Go<CzQT1Bg1F3cB}=9df0X5Mp}j_o@$=5rV_=ZGP*i?e0V-m271
z&)IJH4R_02D9#s`mtLS#^O)9l>~e!L$6)raxL)AAI=fz^f#H4YL)m-!4rWF(W5%J(
zc;?>BL{_XaQtH0<(eJk+0ER(#s4o0FHUBQnAEvt#J)E&v3}h~eb0%XkD5v3^;aChB
z(QwXuEC!8gI9Eh0290SrS4u1fjcYhpP%H)=)^M(@SPVLXH&BHuE*681YWUF@gk{jA
z=1*z9nk|k`rqe)=DhBnbF3^6>AJF`LnlG!n({0cY9fZlNVCE?rriBg^J`dpe1X_&m
zr<#Vpp1^bTp@x5+z(;6D!+%cTqofur&p(FA<N3$vadw0-UJ^LJ*%b19O~c<8IPc69
z^8JN|e<S=n@JZzRN8vMf4*8|FUoJJa{J^TTS~MNdbd^e%&KH)r-*>!*-7Hm_w(l=i
z@Tq&N+u;BK)S7L-j?t}l(0x#`<v1@V$8b-jZhI*MJjbpk2V8c7^!R0a+io=Na??o;
zin_Z`vly;CIi&M4ZaYYQo5G_J?V9U7<23?p)>pWzRBqR5j#sLAj*~Kb7`J-iZ2cv5
zH^biBj;O2QSf<#Qjf?+J7d;i`4p}Cecpy|X@u1K%LLV1;R_M9TcQR3+@JpR|gox`d
zi;sr?oY{FIuA8hy;dhmN7-t{*4-wtR8bxNZ#-DwfH9uJM!D#ufZ3cE3I`BHWE-f4Y
z0a;Z$u*oX>K3O<cEbg>!Ux_{9WbyS16D8LpEKzAaVx#iv5!bz-dJI}rs%LMZ_0EoZ
zE^jgRv}?VDRAGRq9IN7PZaQ1Y49<4T4g#-HZU+w1bJ=s-tuV8Ddwhp~j(W~;IdENZ
zd2s6!O^-W)ei?_7N{u_M#GwRJ<IX8@DB0Aw4J8gGo*MVO5{FMBHLj|};S)-YYbtSk
zPNnTjpv3WB$~bv%<g<X~N=HRcdHPPGhmQey`s#6vvGDJL_rF&hzY~uc5EC#TuStru
zc`x~@d{O{kW1%v?eDmTs_Mb&l`L4m2955rB^Q7{9tMKtnP4ZoZt@6FCaKMcC-hi$0
z?I?U)zmo4W*ec&U3J1)H?-ST6-wz5O-vlM!P1q{my9x))i0^yYD&MZc$2UjG_cv^n
z?>&VBX2ka=Y?bd9g^zEVl5Y-VD&GgdI8RbIj^#LlRKDL7KE9bszDpY4N5H!AUDWvg
zQ24mkCEr_uFDvTrQ($>CDRO;pYJC5I?<9hz(fH;o`K}8-S@%1@4xmYqd>?CkCvY9*
z_h3H0DNDXD1s{JWEW2oKXmuWd!~OjV2Ig!@=q!93#gT9v3)iAt8~dj*?@bB9mnLhm
gB^*Xq(D5P$@^ygM$m`?x;+&~`y8wQYB*3KkA6bC(-2eap

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/usb_joystick.c.o b/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/usb_joystick.c.o
new file mode 100644
index 0000000000000000000000000000000000000000..9b37ee0dbba40f8e2e785f7b984fdabeed5bcd5f
GIT binary patch
literal 772
zcma)3%}&BV5T4~%4kl_e{v~F;C?rw~DI|C!h+M=NgC}E5Th>qo*6c1uPQHjYU&$Bo
z33P_Cv3Su*rr&(?yVH4XpPw<tzzTyR{4jvGm}I?KLJ<m(1L(9`C%o9XxaK`6hnn9@
z#hX`M-W~;_-xqy;sbna$mP(g+&GDQHuez1G+o&{nQHi1OwJ7l$EIAhQl5(vaD1RId
zxDwBij^vnEJ=bg0Z=vbpY+v|61ndCKY)dL5Udmk$a?AN{A+?rSXB%uYy~VcK4%<uF
zT`VT|$-w8A^%JHSwk5t;o<>hn(vV3~jAj8QI=Fj~Q*EN~(Fp+@JslZ8Kr|}Gfwl1A
z2AsZcd~gD-!3pJPB*y5&zv1}Cs3@2ip%;eyL3S}tJK|+#65nc05bQ?#Xj7iu=y#s|
zPluSZ^pCuwc|W=j3H6gREB;VF(i$qxe2TpQ?`TvkL9}yM(Y9}+a1R4*GUj6Q2<=W3
b`aq@T^yWM&U1$ZhfST-giiPC2V*7mqw}ns1

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/usb_keyboard.c.o b/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/usb_keyboard.c.o
new file mode 100644
index 0000000000000000000000000000000000000000..3fa272f77552709b1a9b52408bfc05c70bac75b3
GIT binary patch
literal 772
zcma)3%}&BV5T3RC$iYO7#=pd@7llMBkV1ktg2+XTF?ce@Z0Q;rfi=6u$jKM+<}3Lk
zK7r2AZY*AOlIb_!{O)vKI~V7SF|fj*2tN$qEhbrSo=}7W<N&(u_9-uRFK>8XsgdCi
zO7qrrk9Wqt3<4SOE3F377^O{#*Im!8@>-?Zs5GlhUet0Vg^?wGizO#ADJj>>z7~_g
zkZbuInov!6&8v9L#vQaOI9o{JhrkZe%(j(|<V(5dL2f1AD=e*NHrOWHa<<tH+hzMp
zb{C83eKPR*W&MQC!nVX0%N_Kj#eqzkVl)ddHU9mhocT)Vz#Ra%W;Tw5j~M9~ht|S}
zN8kn`65#sAfICp*v7Dd}|As4~NQeG3l4fDZA7l^Xv?E?-F7d4rf?zi~K%4UHM!)my
ze>%dP<$vTIC;jL?B-BsMt@uOzNb9IL^C|WMyrWUI1kui2L)*TM!hH;M$VkNI5!#(7
b^npsv>CJgmy3i_W0X5z43=7F`#rFFKf-q02

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/usb_mem.c.o b/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/usb_mem.c.o
new file mode 100644
index 0000000000000000000000000000000000000000..d540e75fa0f544fbcb90d611740abab45f73916d
GIT binary patch
literal 2540
zcmeHJ%}*0S6o1<-g;G#xKoJtMDA6Lawxkdt9!mHqK~N-kG6Z(pscq7Bo7sgxJopjM
zUgR(EPw+tE$qzVq^oY@$H@#pum|!BlH{G$@^`Hljykz?3_ug;b%)EIs+XvJ0Gm4^s
z6a`{XLjc>2!qboxDh8*a1^7<uY#{&Q=<#7>u<g^W1DN=bI{!rp1lG)*###02uKE$)
zc0u2p#kQH-Yn8OQ16m~wujCx9H%`s%c0d22Ug!x&23z(cbJ5MEmwcyrmSP3+eMjnH
z_asHDq(kU~%Lng|zyB2D$DV$^CgYGkM)Bg4{z(Q-GVq@>ke-|z*JA0LceG{8D%x7k
z;@ZU0f;L?;SvJeE+9J0y%(g9V4`?HLQcq~Z@x*9+EHS3VI4d&4W&_$?9CDSpLxx6%
zOm37jd5yD;f?cr6+Hf+S92;GMi8wCbV1`)$<sx<)CN1u;&7p-PgjyRH!hvY8L+Mn`
zs$I%CrCaF@_;>4lzk=|s?tM_}UN-<0>W8an@rnvTh<FW%Pa&>7Lcuz(3Lzgq<l~2Y
z{3hYA8JnQp1r%9<rkV?TDujLfu+QJ@!x5k)QchCXqPYHqi{}Ln!8mFuZP=NW05#zi
zAGTb)hN)`D^}xDqu9jFy&p^Ke{aJy{^<0keRb#^_6b-Y;swAUWv@)Wb<E(1qn>5zq
zTf+Pst(F<X(h|muRn8Uet#iY{IuRB(x;qfpL+25|gSt){4@h9tDZ-rqQ?8%(7B~Yy
z-?QEh{L$^Ll4F>t9bVOW*~6l9K+hVE0lI11pkpcPWYoomt9z+8id~5zg7Zfb$XYdG
zxQtaQu`*797ehB3hZoFshuOHOf0G`h(YeZss(zzuV`XLcxjb3fexAH9myk!*_BS5g
zPyf6rv`LXS;tCq5I#aIW9WIpWsTCV>sL_1W*u3!^#8jJ7WV{J9c;oG3ycpUj9_2vB
zTgE=cllyq>`cMgx@u-fyygkHJ(^4ewJ{pKe`zGl}hr9!X$w%!8HXL3-CFB|M=&ng2
x4hh|F&olt|A8T89sy~uPTAm?!_AuT<G}8MM#fDJilXBvXH-*V~gf=NM-Y=4I)*k=>

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/usb_midi.c.o b/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/usb_midi.c.o
new file mode 100644
index 0000000000000000000000000000000000000000..19ad04dbd68bae482b9dce313469b3c8deff0eb8
GIT binary patch
literal 768
zcma)3%}T>S5T0%NV?jYh@egFZXbLtaB`wrjskIj?Mf4;hn`WhfrYpOt=*idc?ko8s
zK7r0QSxmj?z~q~6es?mjy^C`~2pAz?!w&;^OG(L}C)iMhGC;rEJ*9U4@`hduF;VnE
zNZPp?&|VzyFytW}N-^R}38`wd>G+OE8?M)K+g_X6l215Oyhd-a<b-D>^=3VgY&sfK
z$)6$>i79RPuHSCmLC3|}jI$sDa)@TBD`di->jNLkE0saDuwL9Cn`Fz{COc%8>=(=~
z2J`zA;q%M*HChYXYQ9)*p(igE6!R3LC4iX<?&BzooDqPdUgCrWh>1*bY%F|q0#3*h
z22P+9I3p3qe2PB&6Anuf83nV1tAzo7kUfm+{qQPtN$->q1hdTn+B(l{^E=P{qa(~&
z`bXYz)=%F?i|!}pR{GKXv^G(3=40vwct^uC1kuc0L)*Mfhld#GX(JPpr_t=BLm#NR
Zxqfp6RbOWnwThbWcZP+_=rdyaeFM|XP4EB!

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/usb_mouse.c.o b/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/usb_mouse.c.o
new file mode 100644
index 0000000000000000000000000000000000000000..43c71425b52434a091a858b42db5b181d58104b6
GIT binary patch
literal 768
zcma)3%}T>S5T0%NV-E!t#XpesqAA#zl(bN9rPf}osOU*VHt9+OO;>hP(UY&?-B<EO
zd;*<qvY2`h2PWTq^ShII?Vp_zLcj<C8-5tTTS`j)Ji&%4lmQ04-Z8ZY=Qs3Ph>4;P
zLelQlkoMz%k4Ah%FQf>$QbMXaZ8^T<(WdLQ-Hz9xw&WAe6tB};EIHy?Nu$*WB%6j~
zD*02SA~B^+-}O7~JLtMNn{gIIK=#or^@L3Lb7Sa3xmFog3#-L7vQ9RvO|nI{$!@{y
zVlcl?5k9|+U!%3Kt>%m67JBkxK`~D;S^}7<;64^J#hnnqQ7>`A0>nh7I5rl(Iss?I
z5(ZA76gZ)XV?IS6{tAaBiHw3-!qvirzsU}U^?rDjxukc>2!h#W4{e=iw)vfB{?P&E
zEd3+zFzcspqeb@<b1VJmep*|oIP)>}0=%Q)8G>l$uApt+ro)#Q=xZYrlc&+_q(dL5
ay19OH1yx^X8MTU<?{|WQHS`%V{k{R9%uaX!

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/usb_mtp.c.o b/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/usb_mtp.c.o
new file mode 100644
index 0000000000000000000000000000000000000000..111e45d77843ae5dc21e21283a84028b0377b3aa
GIT binary patch
literal 764
zcma)3%}T>S5S}&tv526e_y@9HGzA-zk{0T%)Y^+x5j}}WlCCt+bj$8m^yEwU2ELLn
z;uGj>lf~47I50ck{O*1`uif)ALI@ZkV8f3G@RmA7e^y{a1xf(DPUnQ$y^C9V!}&<k
zM=oglx=*`F$OZ#8pjU!NOiC_fl{OsT@o3%knr_Q$QCqMP3nZ)3J8U^-Sxc=^3q>%F
zhE%YpSjK!z>%Qx^n)lFl@$P^HVGQH|VX?!7V$Zd{52fXDzp}7aSSK4~)7m22WQXi6
z7%s-<`4r&u%fz*{=Gba~zTLt|UMwi&UCb5%rZRj;)WnGZ9Ql%{AVjM~YKI2ln-w^N
zKn380Qi2olBw=HW;YT=uQX&qgipjb8e>uCD)ZB0*Gf8)pIcN-%eZ;!XF!^0){^t;D
z7XMLql+Dw7(W2+^8A=a5Piq4e@0_GjfOiC*anPE3R}q`H>GUNgx*B9+>a;bSbm{|D
Z57%!lqw3A9pjJ@x^G>mG31ddgyl*vnO_%@x

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/usb_rawhid.c.o b/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/usb_rawhid.c.o
new file mode 100644
index 0000000000000000000000000000000000000000..5f030a7f19ecc436951fb9ae6c486179626e9f96
GIT binary patch
literal 768
zcma)3%}T>S5T0#XYY&Qw;vdL*(G+ZKN?NG5Qfn_(r07XRHpxl@O;>hPe@?!JcVEdD
z@d<Rc$ztk39GHCb&F@a;wRe6-2mvDmZ1`aSZz(BxvjiI|umI5Sc2B6?zqqDXLW~u?
z7m{{{1KNvy9)>)mmr?{=DIryrHXYA#X`}A8>TS18ZOO-+DPE;FSaQs>l3KIoOEw8c
zRPx72MPfo5UfpZAZlP1h*^Dzk0&;+6sVii{pKAjT7M99`N@1<IPBzG<wMDkc4%sW1
zT@2>;DZ=NM@oTi^w$*&T+(J)YEGXtFMoR!w<=;v6G>Sqe0C3bxoG>3TktvRhh0jjF
z30cCx@s$E65OK^W=)-^Euq2U@KTWur8}TRE#i-s7uQHSLP8mTk+w7yQ^UOBC^UOaw
z#GJ){<Q--G^lh~0eqv^&AKg!D6BTDZq+Wn`G+aXv&D>SA&D(T%h=HCqGBJ4?%}zS>
bfvTJ9H<wZMbyiR-sQG@USh$QnBc|Us8+}gD

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/usb_seremu.c.o b/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/usb_seremu.c.o
new file mode 100644
index 0000000000000000000000000000000000000000..fc1fbadc4e4701c9b7230b9785d291e2bda73337
GIT binary patch
literal 768
zcma)3%}T>S5T0%NV-Jdo;vdL*(G+Y<N?NG5Qfn_(r07XRHt9+OO;>hP(UY&?-B<EO
zd;*<qvY2`h2PWTq^ShII?OmJ`Lcj<C8-5tTTS`j)Ji&%4lmYtP?kTnVmpAlUh>4;P
zLekD~Kznh(M<YI>S5kyrDIryjHXYybXv6hdZrf{9Tk;8Kir45ZmYndcq~5Ftl1;-g
zmHa7Ek(knk@A~c59dulr%{U7pActs{x<V%Wxjyiryj&Sn3+u%VvPrhAZL&jl$$r7?
zVlcl?5k9|+U!%3Kt>%m67JBkxK`~D;S^}7<;9hab<CzlzIO-)%Sb&(w6vxKGXD8r{
zSi-;wlmaIdam=Ua!++thB#}`tOSoDX@h92CsNN5+GMDsD89^}H9H6c9%r?LC%s)E9
zoTY!{9cTUYZM5iqVs51$-A`*16=y!CUVwKrJVOx8+%>e#+jMw{fu1%pF?kxzPCE2~
as+;RKS5WnJR#B^{`F>|uxPm?-rr$R@1y14s

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/usb_serial.c.o b/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/usb_serial.c.o
new file mode 100644
index 0000000000000000000000000000000000000000..bd12757b435bd323ac6c3e4291471d3d01d2594f
GIT binary patch
literal 5112
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

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/usb_serial2.c.o b/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/usb_serial2.c.o
new file mode 100644
index 0000000000000000000000000000000000000000..fd76a0ad4e677222c86ed7b994c9c60371ab21c5
GIT binary patch
literal 768
zcma)3OH0E*5T0%Num|yh;tOQGXbLtaB`wrjskIj?;^QPDn{=gtrYpOt=*hp~-M{1?
z@fYZ9lf~47I57F<o99mEwRd((2mvDmZ1`aSZz(DHvjiKePzLCCyT{b-pWo1HA;yY6
z2uVAa1KNuNJ{<BPy^td0N(rfIwCVVcM;or!a@$^;+LDhsQ@loRvE+znCG}=KkZcl;
zsN_$Pio}FAeAjQc?x5r1Y{pp-0og~h)D<$}&-H;1<;BXNT39Wvk#(|RZIUgrO?C@r
z7lZkIitzbm{2HyfZ8e`Sx6qRp3yOJ)(GtK^1^0@}h>aUg2;iufIAH-|B2ye03*Vi9
zGh_(^Cr}EUP{c8xpbvkB!;(Zs!8GA&ZpL3^2ZMS)yvj_{J7omHY_o^9&NJKm&NKh$
z0CN`pk$0H&)3?#0`-z#Aesn*rO;nuun0f);(eMmGG;>$bHgD76D-86sk%`IEXm-+}
c4^-V;zqx{{ud|F=Ma}m+!NMi<88Q970b0UO1poj5

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/usb_serial3.c.o b/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/usb_serial3.c.o
new file mode 100644
index 0000000000000000000000000000000000000000..c47bde9b105baa48fafe03d0d367794f93d36ae4
GIT binary patch
literal 768
zcma)3OH0E*5S}%C*n{{$@ddJ8GzA-*nilG<)Y^*`@o^H7O|sHJ)0N#+^yJ_0?qBkc
z_zQHl$ztk39GHCb&2uO7+B-WXgn$tOHvBMvx0DpUX@U(EC;{}l-D7I^&u{3p5F<q&
zgruFz0qw;;4?`Z(3n>Dwl#r@Qn~vwWv{83k^|srlw&Wwu6tB`-EIH&^Nv&D)B^w7r
zD*02SA~B{7ukN*5chIThY{r=%0og;d*cCG2&$WRErG@gKGPhD#C2M5e+8~=`i|ovq
zT@2>;DZuBK@oThZw$*&L+(J)YEGXnDMvDLw<=-nVBQ`p60su$7#0m2e6Pe=BSorP)
zoRB399A7DL0ujf2j6VDs4oeal`ICgJnHhhPZ4B!D@G4VD@01Y)v&}BrI?rtLJJ0;1
zeaxBvN8Ul!Pv1t1?kA>J`qBNgHc@frW9kKXN5eG)(ac>&+q_MOuQ1TlMkXdtquEJ^
cK2UXY{pK>NzRnVA1vTIA1Pd3@XT<dT23&Jb1^@s6

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/usb_touch.c.o b/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/usb_touch.c.o
new file mode 100644
index 0000000000000000000000000000000000000000..3c25595d16d5e263f83256cf3a1c0297d8130dd9
GIT binary patch
literal 768
zcma)3%}T>S5T0%NV-E!t#XpesqAA#zl(bN9rPf}osOU*Vl60kkrYpN!(UY&?-B<EO
zd;*<qvY2`h2PWTq^ShII?Vp_zLcj<C8-5tTTS`j)Ji&%4lmQ04-Z8ZY=Qs44^NFMn
zT+r^-koJ?1jYe!lF9eU6lw8O<Z8^T<(WdLQ-Hz9xwqO$$NLHt}SaQU&l18f$ieMUz
zsbEjBjQNx{eb?`_@1X1A?0^Mf3}he8QjZJ8o*P3S%C*X{T39Wvk#(|RZIUgrO?C@r
z7lZkIitzbm{2Hx=Z8cvkx6qRp3yOJ)(GtK+hWCokqOlVJIPxV?L5QeCieqEps}(q-
zKn380Qi2olBw<tZ;jeH4r9>Rg6q5@R{w6yZ*8AaA=91niBM4@jJ+yV6+2(hi`9}ws
zv-FR=!>pgajTYUH&#m;M`)O^V;>^d?3-FGHX9%L1yMnfPn+{)Mps$TgOrA!wlMa2L
a>gM{*6;yqlWz;HazTXKJ*3f6f^!o;urcQDI

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/yield.cpp.o b/TestSHA256/.pio/build/Teensy_SHA/FrameworkArduino/yield.cpp.o
new file mode 100644
index 0000000000000000000000000000000000000000..c4d076d5154d1460b58add2f91f264b6c6320bb4
GIT binary patch
literal 1916
zcmah}O>7%g5T4D(2?-R^w1u=$(KdC9laR%mIH8G<padsKX+kLF&{oy<t@ou~VSCNK
zwc{cr3Y8EC4w1N6T)81}a1TK~Aoak31BW05iAqSRP$dTmQ9=*+)G)K&jW?DdPn!K^
z=6y47-p}ku$qRFmBtbAFh(Xf=a3kJKB;i2}4nZ%B{a&BdmL^JHRJ6BdN*`3Ep?lpk
z`Kiq>yN_?e&{fnUKaVb)NcUGBK8k$OTlsFge*590zK@;tf%HJ-?1iBcjHnwh{P$1B
zI?Zj>*KU>Tpuou1##a5aHHb#;O9}MEAKdxs_5OR8>(S-WbZl<WD$he~XJZuc&)V)k
zk9U8l9$6SH4OS;gcWVui|9UJ><g2x$b@IA&`gHzU<!dHYjdeJaT)mwx&!5SE>qY)n
z>smN@eWw=e`@c|v`PtbSB{skGu5!t?GeTLh9p(JRMJ1UvxM^}zS$6Cc7s7VLurjG8
zR81L=Yg6%QZCZ&rJj0pb!^%|*d5QZWW0PZs!*Z##;_#v+EIX%+C*q0escUdPj+HRZ
z3=5>Qs77XO$K|E5#RPO6>R#;W=<hr#9h07u2c+ZD3F-NcHid`puM>85!xVYn?E=WK
zKZA^(@Q|Sso(wzCej4o`_k5ju8Ywb#!C~J+bx3Fvzd5>^Drz!xx7bg#*gX(M59Rs;
zWeC?F2{HOmf3?M4Zn58QvCA#?H!XH^Zvd1(5;{<_&-pgNVXFV8#WSXw%I6{KLevEP
z%9TmamweeN<Z@Q-MuP$cVd#Q87R%_Y$gB)AG91~O)^H|^Jm(hCv7{wD{UR56J7;o7
zi?3LYa4*wB$+m<kf2BFc&IYtlR^8+)tdMcr#ZG6~{?u<W$6RF&f5$6zA|dpYUC6n9
z=|W$%+;p%HPBja^ru~8A=fwYpct@nOlxr2ao=Wr7d-_U--4JvgpQ7|W18|oR51sC$
z10UiBAwH2!LVRey5cUK7N_Yg|KH*V-2ZYA}wh5obk1B3vU1lJ<P6N|{hW+J&YBHCB
zY6t-;cCAWI)vM5Rs%`Gn3u$oL?Ltl2*(@FosMz}|b6v+W3NH7yhXoxx29ZK<Ea;fV
zKe!nebnYpi7j$kb&wsA)0`jQ44&ufAeBpJe_kt00{EO)5L3z!eDC5L3>h!-L4hgOI
zijTp%3KkU9gj0L^C0{>?M<+<}R40v7XxI(a`_dfAhbWjU?>X_ahE6Ro5Q#&B{#U`8
tWN%~PpOfN`fJYddIZb_!j$0^Cp-%re+HW5Uok=*~8)&>8B*D2r{TCu+RJZ^D

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/Teensy_SHA/firmware.elf b/TestSHA256/.pio/build/Teensy_SHA/firmware.elf
new file mode 100644
index 0000000000000000000000000000000000000000..f94059cc7e6743363a4748d4caae78e826c18fad
GIT binary patch
literal 125524
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

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/Teensy_SHA/firmware.hex b/TestSHA256/.pio/build/Teensy_SHA/firmware.hex
new file mode 100644
index 0000000..a351707
--- /dev/null
+++ b/TestSHA256/.pio/build/Teensy_SHA/firmware.hex
@@ -0,0 +1,1331 @@
+:1000000000800020BD010000F5160000AD160000C4
+:10001000AD160000AD160000AD160000AD160000D4
+:10002000AD160000AD160000AD160000F51600007C
+:10003000F5160000AD1600005530000059300000E4
+:10004000F5160000F5160000F5160000F516000084
+:10005000F5160000F5160000F5160000F516000074
+:10006000F5160000F5160000F5160000F516000064
+:10007000F5160000F5160000F5160000F516000054
+:10008000F5160000F5160000F5160000F516000044
+:10009000F5160000F5160000F5160000F516000034
+:1000A000F5160000F5160000F5160000F516000024
+:1000B000F5160000F5160000F5160000F516000014
+:1000C000F5160000F5160000F5160000F516000004
+:1000D000F5160000F5160000F5160000F5160000F4
+:1000E000F5160000F5160000F5160000F5160000E4
+:1000F000F5160000F5160000F5160000F5160000D4
+:10010000F5160000811F0000F5160000F51600002E
+:10011000F5160000F5160000F5160000F5160000B3
+:10012000F5160000F5160000F5160000F5160000A3
+:10013000F5160000F5160000F5160000F516000093
+:10014000F5160000F5160000F5160000F516000083
+:10015000F5160000F5160000F5160000F516000073
+:10016000F516000075220000F5160000F5160000D7
+:10017000F5160000F5160000F5160000F516000053
+:10018000F5160000F5160000F5160000F516000043
+:10019000F5160000F5160000F5160000F516000033
+:1001A000F5160000F5160000F5160000F516000023
+:1001B000F5160000F5160000F5160000564B4CF23F
+:1001C000205210B51A804DF628121A8000BF00BFC9
+:1001D00001F094FA514B4FF010621A60504A9A6045
+:1001E000504ADA60504A136813F4807304D14F49BF
+:1001F0000B604FF4A85313604D4B1A78110703D5C9
+:100200001A7842F008021A704A4B4B492A221A7097
+:100210004A4A4B4B8B4204D252F8040F43F8040B6A
+:10022000F8E7484B484900228B4202D243F8042B9E
+:10023000FAE74649464A002352F8230041F82300D2
+:1002400001336F2BF8D1434B434A802103F8011B44
+:100250009342FBD1414B3D4A1A60414B8A221A70AE
+:10026000A3F5805324225A70A0221A709A7992071B
+:10027000FCD59A79D406FCD43A4A937903F00C035E
+:10028000082B384BF9D105221A7143225A719A79F9
+:100290009006FCD5334A9179324B4906FBD5324A58
+:1002A0004FF0817111600521516020221A709A79F6
+:1002B00002F00C020C2AFAD12C4B2D4A1A602D4B5D
+:1002C0002D4A1A6000225A60072243F8042C2B4A58
+:1002D000C3F80C2D62B601F041FB144B1B68DA0722
+:1002E00005D5274801F0CAFA264B274A1A60274B42
+:1002F0001B785B0609D5234C234B22689A4204D114
+:100300001F4801F0BBFA0023236001F0FDF902F061
+:1003100099FF01F0EFF8FEE70E2005403080044021
+:10032000823F04000100002B10D0034014D0034092
+:1003300002D0074000E007404C90FF1FD04900006A
+:100340002087FF1F4C90FF1F9C96FF1F0082FF1FFE
+:100350000000000000E400E05FE400E008ED00E0E1
+:1003600000500640004006404480044004800440A1
+:10037000C010050014E000E03F190100000020203B
+:100380000954EA621CE00340A5C3945A00F00740F8
+:10039000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6D
+:1003A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D
+:1003B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4D
+:1003C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3D
+:1003D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2D
+:1003E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1D
+:1003F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0D
+:10040000FFFFFFFFFFFFFFFFFFFFFFFFDEF9FFFF23
+:1004100010B5054C237833B9044B13B10448AFF33E
+:1004200000800123237010BD4C90FF1F00000000CE
+:10043000CC490000084B10B51BB108490848AFF380
+:1004400000800848036803B910BD074B002BFBD0A0
+:10045000BDE81040184700BF000000005090FF1F8B
+:10046000CC4900004C90FF1F0000000000B59DB07B
+:10047000684600F013FA68464FF47C72044900F0B5
+:1004800039FA6846034900F057FA1DB05DF804FBDD
+:100490009490FF1F8494FF1F08B501210D2001F0E7
+:1004A00001FA4FF4FA7001F009FA0D20002101F071
+:1004B000F9F94FF4FA70BDE8084001F0FFB900BF48
+:1004C00070B5002304220121564800F03BFD1D2198
+:1004D000554802F023FC554800F034FF4FF0FF323E
+:1004E0000021504800F028FEFF2800F093800323ED
+:1004F0001A4602214B4800F025FD12214C4802F01B
+:100500000DFC4A4800F01EFF1A214A4802F006FC82
+:10051000464800F017FF434800F086FD05460028D6
+:10052000F9D1404800F09CFD0646002838D02B4603
+:10053000012203213B48404C00F004FD15213F48B7
+:1005400002F0ECFB2B460A223146384800F00EFF41
+:10055000364800F0F7FE3A4A3248B1B200F0A8FC43
+:10056000FFF784FF1421374802F0D8FB2F4800F032
+:10057000E9FE04F120050AE0002310222B4800F0D8
+:10058000F5FE0121304802F0C9FBA5422AD014F83B
+:10059000011F0F29F0D8302002F044FC2178EBE74E
+:1005A0000346022203211F4800F0CCFC0E212748FD
+:1005B00002F0B4FB1D4800F0C5FE1D21244802F0E6
+:1005C000ADFB1A4800F0BEFE4FF47A7001F076F9E8
+:1005D000002304220121134800F0B4FCBDE8704060
+:1005E000FFF75ABF15211B481B4C02F097FB0F4821
+:1005F00000F0A8FE04F57C7514F8011F0B480023D9
+:10060000102200F0B3FE01210F4802F087FBA54243
+:10061000F2D1D2E70F21114802F080FB034800F02D
+:1006200091FECAE76890FF1FB44200005087FF1F89
+:10063000D4420000E84200008394FF1F04430000FE
+:100640009490FF1F1C430000344300003843000017
+:1006500058430000604300009390FF1F4843000090
+:1006600010B5054C204600F0D5F92046034A044950
+:10067000BDE8104002F0D4BD6890FF1F2087FF1F27
+:10068000290A0000F8B50D20012101F011F91B48DD
+:100690001B4A04681B4D1C4F40F2EE2613783BB1F9
+:1006A0002B78DB0704D5036839685B1A0E2B06D854
+:1006B000036811781B1BE9B1B3F5FA6FEED94FF45B
+:1006C000E131124800F086FD1049114800F0C8FBE6
+:1006D00009E0104802F022FB0F4800F033FE4FF40F
+:1006E0007A7001F0EBF80A4800F050FB2421002852
+:1006F000EFD0F8BDB342D1D9E1E700BFA894FF1F06
+:100700001096FF1F2896FF1F9496FF1F2487FF1F38
+:100710006890FF1F784300005087FF1F2DE9F04FBE
+:10072000CDB00DF12C0A0390013156461BAC087870
+:1007300011F8013C8A784D78000440EA03631343C2
+:1007400043EA052346F8043FA64201F10401EED135
+:1007500010200DF1640E14AF0CAE554684465EF8C1
+:10076000049F56F8043F57F8041F55F8040F4FEA4A
+:10077000F9484FEAB34288EA794888EA992801445F
+:1007800082EAF312414482EAD3030CF1010C0B44D8
+:10079000BCF1400F44F8043FE1D1039ADFF8F89030
+:1007A000136D05931E461346526D06921946104668
+:1007B0001A469B6D07931F46D36D126E08931C4615
+:1007C00015464B6E09928A6E0493C96E304B0A929D
+:1007D0000B918646A346DDF8108001919446029362
+:1007E0000BE0CDF804C0C446A8461D4659F8043FA6
+:1007F0000293BB467746B64606464FEAF52205EA1F
+:10080000080182EAB5122CEA050482EA75624C40BE
+:100810005AF8041F019B144487EA0E0221444FEA50
+:10082000763002EA06040EEA070219445440029B9D
+:10083000184A80EAB60080EAB650194420444A4576
+:1008400001EB0B030844CCD10899059A39440F46B3
+:1008500009991944049B2B4402441D460A9B1446E3
+:10086000069A4344184632440B9B1646079A634443
+:1008700072448E461946039B1C655E659A65DF656A
+:10088000C3F860E05D669866D9664DB0BDE8F08F4C
+:10089000982F8A429C440000A043000000220023BD
+:1008A000F0B4C0E912230C4B0365A3F16263A3F516
+:1008B00011230A4F0A4E0B4D0B4C0C490264A3F650
+:1008C0004E130B4A47658665C565046641668266B8
+:1008D000C366F0BC704700BF67E6096A85AE67BBB8
+:1008E00072F36E3C3AF54FA57F520E518C68059B12
+:1008F000ABD9831FFAB1F8B504460D468E18002710
+:1009000001E0B54216D0236C15F8011BE154013308
+:10091000402B2364F5D121462046FFF7FFFED4E9A2
+:10092000122312F5007243F10003B542C4E9122309
+:100930002764E8D1F8BD7047F8B5036C372B05463E
+:100940000C464ED84FF08002C25406D0C218002187
+:10095000373002F8011F8242FBD1D5E91201DB00DA
+:10096000C01841F10001030A0A0C4FEA104E070EAD
+:100970000E0A85F83E300B0EC5E9120185F83F00DE
+:1009800085F83B1085F8392085F83DE085F83C7006
+:1009900085F83A6085F8383029462846FFF7BEFECC
+:1009A0000322296DD300D9402170696DD94021718E
+:1009B000A96DD9402172E96DD9402173296ED940C2
+:1009C0002174696ED9402175A96ED9402176E96EEE
+:1009D000013A21FA03F32377531C04F10104E0D117
+:1009E000F8BD5A1C80213F2AC15407D8034400F1A6
+:1009F0003F01002203F8012F8B42FBD129462846F4
+:100A0000FFF78CFE38220021284602F06FFF2B6C86
+:100A1000A3E700BF002250210180426080F824201B
+:100A200080F8252002857047704700BF2DE9F04F00
+:100A3000DFF8988085B0D8F800300293029C0191CD
+:100A40009146002A40D0824600254FF0000B41F22B
+:100A500088360027DAF8040003681B69984759466E
+:100A600068B9D8F800300393039A0023121B63EB94
+:100A70000503964277EB030321DB8B46EAE7DAF8BE
+:100A8000040003685B699847019B03F80B00D8F8E2
+:100A900000300393039A0023121B63EB0503964275
+:100AA00077EB030309F1FF390BF1010106DBB9F123
+:100AB000000FE2D1084605B0BDE8F08F8B465946DD
+:100AC000084605B0BDE8F08F1146F3E7A894FF1F74
+:100AD00070B5044682B00E46002501220DF10701D3
+:100AE0002046FFF7A3FF012839D19DF80730AA2B34
+:100AF00029D0A52B29D0552B29D05A2BECD1022D4A
+:100B0000EAD16FF05A02737032700F25B11C0122C6
+:100B10002046FFF78BFFF11C01222046FFF786FFDE
+:100B2000311D02222046FFF781FFB11D022220461F
+:100B3000FFF77CFF06F1080120460222FFF776FF4F
+:100B4000284602B070BD0546C7E70225C5E7012D5E
+:100B5000C2D16FF0550273703270F025D6E70125CF
+:100B6000284602B070BD00BF70B4CA788B7808798F
+:100B70004E798C79CD79134440EA0620FF3353FA3D
+:100B800080F344EA052253FA82F303EB1023101298
+:100B900010FA83F080B25AB101F10803013A13FA56
+:100BA00082F3073111F8012F1044994280B2F9D134
+:100BB00070BC70472DE9F04782B00025F029074648
+:100BC00091469846ADF80650BDF828602BD006F146
+:100BD0000A05284602F05EFB0446C0B34AF25A53A7
+:100BE000ADB20380B2460023A4F80490E680A3705F
+:100BF000E3708EB921463846FFF7B6FF02A90AF125
+:100C0000080321F8020D0222E01800F07BFC3D856C
+:100C1000204602B0BDE8F0873246414604F10800A4
+:100C200000F070FCE6E71A2002F034FB044670B1D5
+:100C300003464AF6552223F8072B2946173003F8B6
+:100C4000011F8342FBD11A254FF0100ACBE7002089
+:100C5000DFE700BFF0B4CA788B784E7908798C79D9
+:100C6000CF790D7A134440EA0620FF334E7A44EAE6
+:100C7000072253FA80F345EA062453FA82F353FA23
+:100C800084F303EB102000EB1223201210FA83F000
+:100C900080B262B1023A002A01F10A0107DD0023A5
+:100CA000CC5C01339BB22044934280B2F8DBF0BCB1
+:100CB000704700BF2DE9F04F87B00DF10C098A464F
+:100CC00049460646FFF704FF00B201283FD0F0284E
+:100CD00030D0BDF8127007F10A0002F0DBFABB4613
+:100CE000054630B3A7F102087C1E99E807002B46A1
+:100CF00003C305F10A091A8049465A463046FFF7F0
+:100D000095FEA8442B199DF8144098F80A809B7A08
+:100D100086F8264014BB82B2974221D0422386F83F
+:100D20002630FF24284602F0BDFA204607B0BDE871
+:100D3000F08FFEE71A2002F0ADFA054630B14FF011
+:100D4000100B5F460F244FF00E08CEE7FEE7462358
+:100D5000FF2086F8263007B0BDE8F08FFF24E1E7DA
+:100D6000294630460193FFF775FF019B08EB0323EB
+:100D70009BB2834204D0432386F82630FF24D1E778
+:100D80005A464946504600F0BDFBCBE730B583B02C
+:100D9000002300930122F0210446FFF70BFF0546D4
+:100DA0006068228D036829465B689847284602F0F0
+:100DB00079FA04F108012046FFF77CFFB0FA80F0D1
+:100DC000400903B030BD00BF2DE9F04186B00023DB
+:100DD0000C460093042207460846F021FFF7EAFE7E
+:100DE00005466068228D036829465B689847284657
+:100DF00002F058FA04F108012046FFF75BFF20BB20
+:100E0000237A657A013303EB0525ADB28046284687
+:100E100002F040FA0646B8B100F805803146204697
+:100E2000FFF748FF314602A800F020FB304602F0F1
+:100E300039FA02A9384600F043FB02A800F0D6FABE
+:100E4000384606B0BDE8F081FEE70449384600F0B8
+:100E50000DFB384606B0BDE8F08100BF304300000E
+:100E600010B5044684B0416068462146FFF7ACFFE8
+:100E700002996846013900F02FFB0378342B13D018
+:100E800002996846013900F027FB0378332B04BF31
+:100E9000C823238064686846003418BF012400F02A
+:100EA000A5FA204604B010BD50232380F2E700BF0E
+:100EB000F0B585B004258DF80C1003AB0095F0213A
+:100EC00000251746412204468DF80D508DF80E502E
+:100ED0008DF80F50FFF76EFE05466068228D03689F
+:100EE00029465B68984704F10806284602F0DAF9BB
+:100EF00031462046FFF7DEFE10B1FF2005B0F0BD01
+:100F00000222054603AB0092F021422220468DF8D2
+:100F10000C508DF80D50FFF74DFE05466068228D90
+:100F2000036829465B689847284602F0BBF93146BA
+:100F30002046FFF7BFFE39462046FFF7BBFE05B04F
+:100F4000F0BD00BF30B50446008885B000255028AC
+:100F5000039544D0012933D002293CD003294DD038
+:100F6000052904BF03238DF80C30012A2DD0022A55
+:100F70003ED0032A46D0042A4AD0052A4ED0062A5B
+:100F80000CBF832387238DF80D308DF80E3004239A
+:100F90000093242203ABF0212046FFF70BFE054609
+:100FA0006068228D036829465B689847284602F0EE
+:100FB00079F904F108012046FFF77CFE05B030BD49
+:100FC0000223012A8DF80C30D1D184238DF80D3005
+:100FD0008DF80E30DBE704238DF80C30C5E78DF873
+:100FE0000C108DF80D208DF80E208DF80F30CEE707
+:100FF00082238DF80D308DF80E30C8E701238DF86F
+:101000000C30B2E786238DF80D308DF80E30BEE738
+:1010100081238DF80D308DF80E30B8E785238DF8DB
+:101020000D308DF80E30B2E730B583B00023009359
+:101030002122F0210446FFF7BDFD05466068228DA0
+:10104000036829465B689847284602F02BF904F1AB
+:1010500008012046FFF72EFE00B9207A03B030BD0C
+:10106000F0B590F82550012D85B002D0002005B0D4
+:10107000F0BD0024062280F82440009202AB0788CD
+:10108000ADF80C406322F021064602948DF80C70F6
+:101090008DF80A50FFF78EFD05467068328D0368A3
+:1010A00029465B689847284602F0FCF806F10801DB
+:1010B0003046FFF7FFFD08B9307AD8E72046D6E77B
+:1010C00030B583B0002300932022F0210446FFF7BF
+:1010D00071FD05466068228D036829465B68984764
+:1010E000284602F0DFF804F10801204603B0BDE80D
+:1010F0003040FFF7DFBD00BF30B585B004AB002244
+:10110000ADF80C20022203F8041D0092F0216022A9
+:101110000446FFF74FFD05466068228D03682946A7
+:101120005B689847284602F0BDF804F108012046A4
+:10113000FFF7C0FD05B030BD2DE9F843531C28D0A2
+:1011400001EB81030E46054690464FEA430900270E
+:1011500000E07EB92846FFF767FF04460028F8D074
+:101160002846FFF7ADFFF0B1002385F82530FF20BA
+:10117000BDE8F88301370A20BFB200F09FFB4F455E
+:10118000E8DD232385F8254085F82630FF20BDE8DB
+:10119000F88390F82430022BD2D9452380F82630EA
+:1011A000FF20BDE8F883B8F1FF3F14BF5FFA88F174
+:1011B00095F824102846FFF79FFF0028D4D195F812
+:1011C00024300122134485F8243085F82520BDE819
+:1011D000F88300BF084B4A08134410B50446B3FB1C
+:1011E000F1F000F099FC054B1B7803B110BD2046CF
+:1011F000BDE8104001F038BF00A24A044D87FF1F30
+:1012000008B5084600F0ECFD012008BD08B5084609
+:1012100000F0E6FD012008BD38B508460D4602F095
+:101220002FFE04460146284600F0E4FD204638BD66
+:1012300010B508461446114600F0DCFD204610BDEE
+:101240000846114600F04EBF0846114600F030BF78
+:1012500000F084BE08B5084600F0A2FD003018BFBB
+:10126000012008BD08B5084600F078FD003018BF21
+:10127000012008BD0846114600F046BD084600F0B2
+:101280006BBD00BF084600F023BD00BF00F0E6BC08
+:1012900010B5064B144603EB5100B0FBF1F000F023
+:1012A0003BFC2046BDE8104000F086BC00A24A048A
+:1012B00000F02EBE00F0ECBD00F0D6BD00F0B0BDD9
+:1012C00000F0BABD0368064A1B68934205D110B509
+:1012D000C8B200F085FD012010BDC9B2184700BF9B
+:1012E0000D1200000368064A1B68934205D110B531
+:1012F000C8B200F075FD012010BDC9B2184700BF8B
+:101300000D1200000368064A1B68934205D110B510
+:10131000C8B200F065FD012010BDC9B2184700BF7A
+:101320000D1200000368064A1B68934205D110B5F0
+:10133000C8B200F055FD012010BDC9B2184700BF6A
+:101340000D12000030B5044683B002252A4601A8DC
+:10135000054900F0D7F823682A4601A95B682046B2
+:10136000984703B030BD00BF18480000F0B50746ED
+:101370008BB0002A33D0012A08BF0A2251B321249E
+:1013800000E0F4B2B1FBF2F502FB1511C8B2092975
+:1013900000F1300198BFC8B20AA988BF3730214494
+:1013A00088BFC0B201F8240C661E2946002DE8D182
+:1013B00033B1013CE4B20AAB23442D2203F8242CC0
+:1013C0003B6801AA11195B683846C4F122029847AC
+:1013D0000BB0F0BD30228DF825202124E8E703680A
+:1013E000C9B21B6898470BB0F0BD00BF10B50446EA
+:1013F000006801F057FF204610BD00BF38B54368B4
+:101400008B4201D3012038BD0D46044601310068EE
+:1014100002F0BEFA0028F6D0A36884E82100002B71
+:10142000F0D10370EEE700BFF8B50446154632B9B7
+:10143000036803B11A700023A3602046F8BD0E466E
+:101440001146FFF7DBFF074648B9206810B101F0ED
+:1014500029FF276000236360A3602046F8BDA560D4
+:101460003146206802F09EFCE7E700BF38B5002354
+:101470000446036043608360037341B108460D4630
+:1014800002F0FEFC294602462046FFF7CDFF20462B
+:1014900038BD00BF814211D038B5054600680C4602
+:1014A00008B101F0FFFE23686168A2682B60002389
+:1014B0006960AA6023606360A36038BD704700BFA5
+:1014C00010B5002304460360436083600373FFF795
+:1014D000E1FF204610BD00BF83688B4203D900683E
+:1014E00008B108447047024900230B700846704752
+:1014F000A494FF1F08B5FFF7C5F8FEF7E1FF01F060
+:1015000011FDFAE701B441EA000313F003036FD1C0
+:10151000403A41D351F8043B40F8043B51F8043BB6
+:1015200040F8043B51F8043B40F8043B51F8043BBD
+:1015300040F8043B51F8043B40F8043B51F8043BAD
+:1015400040F8043B51F8043B40F8043B51F8043B9D
+:1015500040F8043B51F8043B40F8043B51F8043B8D
+:1015600040F8043B51F8043B40F8043B51F8043B7D
+:1015700040F8043B51F8043B40F8043B51F8043B6D
+:1015800040F8043B51F8043B40F8043B51F8043B5D
+:1015900040F8043B403ABDD2303211D351F8043BFD
+:1015A00040F8043B51F8043B40F8043B51F8043B3D
+:1015B00040F8043B51F8043B40F8043B103AEDD2AC
+:1015C0000C3205D351F8043B40F8043B043AF9D2FD
+:1015D00004320AD0D2071CBF11F8013B00F8013BCE
+:1015E00003D30B7803704B78437001BC704700BF86
+:1015F0000C2A4AD310F0030311D0C3F10403D21A0A
+:10160000DB071CBF11F8013B00F8013B07D311F8C1
+:10161000013B00F8013B11F8013B00F8013B11F0E0
+:1016200003033FF475AF30B4043AC91AC3F1040C94
+:1016300051F8044B022B19D0032B0BD0240A51F87C
+:10164000043B1D0644EA050440F8044B1C46043ADA
+:10165000F4D216E0240E51F8043B1D0244EA0504BE
+:1016600040F8044B1C46043AF4D20AE0240C51F82A
+:10167000043B1D0444EA050440F8044B1C46043AAC
+:10168000F4D20432B1EB0C0130BC043AA0D3013ADD
+:1016900011F8013B00F8013BF9D20B7803704B784D
+:1016A00043708B78837001BC704700BF08B5104C45
+:1016B00008E0236859050DD423681A050FD4236860
+:1016C000DB0411D423685803F3D500F0D3FD23685D
+:1016D0005905F1D500F00EF823681A05EFD500F092
+:1016E00009F82368DB04EDD500F04AFCEAE700BF07
+:1016F0003480044008B5FFF7D9FF00BF014B10222A
+:101700001A80704700200540704700BF094908B59E
+:101710000B6830B16A461844A2F58052904202D25A
+:101720000860184608BD01F087FD0C2303604FF0E8
+:10173000FF3008BD3887FF1FEFF3138070B9EFF358
+:1017400010836BB9EFF305825AB94FF48070EFF351
+:1017500011832BB1984228BF184670474FF0FF30D5
+:1017600070470F2A01D81846F1E7014BD05CEEE72D
+:10177000F0E300E0F0B44D1E2E46002400E00134FA
+:10178000B0FBF2F302FB1300092800F130078ABF17
+:101790003730F8B2C0B206F8010F1846002BEED170
+:1017A0000A1953704CB1107815F8016F2870013385
+:1017B000E01A834202F80169F5DB0846F0BC704785
+:1017C00010B40F4B53F8302092F880422CB1012313
+:1017D00069B182F8803010BC704703EBC0035B68CE
+:1017E0001A6841B922F002021A6010BC704782F8F0
+:1017F000003110BC704742F003021A6010BC704701
+:101800001C4800001C4A02EBC00301295B6811D090
+:1018100004291BD052F83000002280F8802229B120
+:10182000022920D0032922D01A6070474FF4807219
+:101830001A60704752F830004FF4A27280F880129C
+:101840001A601A6822F020021A60704752F83010AD
+:101850004FF4A272012081F880021A601A6842F0E7
+:1018600020021A60704740F203121A6070474FF46A
+:1018700081721A60704700BF1C48000030B4054BED
+:10188000054D064C002210211A602A602060196064
+:1018900030BC704714D0034004D0034000D0034054
+:1018A000704700BF212801D8FFF78ABF704700BFEB
+:1018B000212801D8FFF7A6BF704700BF2DE9F843E4
+:1018C000054672B6214F224B224A1B683C681268BB
+:1018D00062B6520102D5322B88BF0134A5B3C3F5DD
+:1018E0008C331D4EDFF86890DFF8688003F23F13F9
+:1018F0004FF47A72A6FB031302FB04F404EB1314F7
+:1019000072B6D9F800103A68D8F800E062B6C1F5AE
+:101910008C3303F23F13A6FB03031EF0806FC4EB6E
+:1019200013134FF47A7002D0322988BF013200FBC2
+:101930000233B3F57A7F04D3013D05D004F57A7400
+:10194000DEE701F0EFFADBE7BDE8F883A894FF1FBC
+:1019500018E000E004ED00E0398EE338F8B52E4BD6
+:101960002E49DFF8D4E0DFF8D4C02D4E2D4D2E4C9B
+:101970002E4A2F4F4FF4000018604FF0807018600F
+:101980004FF0007018604FF0806018604FF00060FA
+:10199000186000200860282348F6FF71CCF800107A
+:1019A000CEF80030336013602B6023603B60B3627D
+:1019B0009362092245F8242CC4F8D80F05F57F65F9
+:1019C000C7F8D41F07F5FF2707F5FA67C6F8F83FF1
+:1019D0002B6006F5FF26C4F8D42F05F5FD2504F588
+:1019E000FF24386006F2F4761248316005F5FF6591
+:1019F00004F5FD642B602360026001F05DFBFFF7DE
+:101A00004FFF1420FFF75AFF01F06EF84FF48C706F
+:101A1000BDE8F840FFF752BF08E100E00480034052
+:101A200014800340248003402C8003401C8003402A
+:101A30003480034000800B400C800340088003404A
+:101A40002DE9F84F2C4B1B6807460BB101221A7089
+:101A5000DFF8BC90DFF8BC8099F80040D8F800307F
+:101A6000264D274E01349C422ABF4FF0000A5FFAF0
+:101A700084FA5446AB462B78A3421CD1FFF75CFE98
+:101A800040282BDC33791B06F5D59BF80030D8F8BD
+:101A90000010DBB25A1C8A4225D2272A29D91949BB
+:101AA000273B0968CB5CD1B2DBB2DBB2F3712970A2
+:101AB0002B78A342E2D0272C8ABF124B124B1B6813
+:101AC000124988BF283CFFB21F550D4B0120AC22A4
+:101AD000087089F800A0DA70BDE8F88FFF28CADD29
+:101AE00001F020FAC7E700210A46074B9B5CDBB2F6
+:101AF000DBE7D1B2F9E700BF2895FF1F2195FF1F53
+:101B000000C00640DC94FF1FB494FF1F2095FF1F08
+:101B10002C95FF1F4887FF1F1C4BDFF894C01A68E5
+:101B20001B49F0B542F480521A4D1A60DFF884E088
+:101B3000194F1A4E1A4C00238CF800304FF4517292
+:101B40002B701F2840F213358EF800303B70337035
+:101B500025600A6012D819460124124A124D1170EC
+:101B60001248547000212C27402693724FF4003401
+:101B700091701174D7702E700460F0BDC0F34431C1
+:101B8000C0F3471400F01F03E7E700BF34800440B0
+:101B90000CC00440B194FF1F2195FF1F2095FF1F2B
+:101BA00008C0044000C0064031E400E004E100E069
+:101BB000B094FF1F2C95FF1F234B23499B7803F004
+:101BC000EC0200F003031343420700F00F0248BF8A
+:101BD00043F01003042A8B702ED01B4B1A4A5B79FA
+:101BE000C10603F0EF0348BF43F01003537193792C
+:101BF000820603F0EF03144A48BF43F0100310F4C9
+:101C00000070937105D1114B114A1968914218D097
+:101C1000704730B491780F4D0F4B0C480C4C41F08D
+:101C2000A00191702A78046003EBC20340F24732AE
+:101C30005B6830BC1A6070478B7943F040038B714E
+:101C4000CBE71860704700BF00C006402895FF1F13
+:101C5000D400D8424C87FF1F1C480000F8B5134B36
+:101C60001B68DB041FD5124C237823B101F05AF90D
+:101C70002378002BFAD10F4B0F4A104D104F114E05
+:101C8000114C12484FF4003119600023D37040F218
+:101C900003113960316029681579D2792370037096
+:101CA00011B101230B70F8BDF8BD00BF34800440B2
+:101CB0002095FF1F84E100E000C00640AC94FF1FA8
+:101CC00008C004400CC00440B094FF1FB194FF1F33
+:101CD0000A4A38B50546137803F0FF04002BFAD101
+:101CE00001212846FFF7E4FD21462846FFF7DAFDEB
+:101CF000034A044B52F835201A6038BD2095FF1F67
+:101D00001C4800002895FF1F09B140F080000F4AD1
+:101D10001378984219D010B40D4C2468E40412D5FD
+:101D200003F07F03082B02D10A4B00241C6000291A
+:101D300000F07F0314BF60214421082B03D1054B21
+:101D400041F440711960107010BC70474C87FF1F40
+:101D5000348004400CC00440704700BF0D4B1B682A
+:101D600013F4805305D0212805D90B4B00201860AF
+:101D7000704718467047094B10B5074C53F8303080
+:101D800023600121FFF794FD236800221A700120CF
+:101D900010BD00BF34800440AC94FF1F1C480000FD
+:101DA0000C4B1B6813F4805306D00E2806D00A4A49
+:101DB000537B03F0FE03537300207047074B064A22
+:101DC00040F202311960537B43F001035373012049
+:101DD000704700BF3480044000C0064004C0044087
+:101DE000034B1B68DB0401D5FFF72ABE704700BF19
+:101DF0003480044070B5094E04464518AC4204F1E5
+:101E000001040AD03368DB04F8D514F8010CFFF79D
+:101E100017FEAC4204F10104F4D170BD34800440DB
+:101E200010B5044C237823B101F07CF82378002B03
+:101E3000FAD110BD2095FF1F084B094A1B78107876
+:101E4000DBB2C0B2834202D20138C01A7047054AE1
+:101E50001268013A1044C01A704700BF2C95FF1F4A
+:101E60002195FF1F4887FF1F064A074B10781B78F4
+:101E7000C0B2DBB2984202D2044A12681044C01ABF
+:101E8000704700BFB094FF1FB194FF1F3C87FF1F36
+:101E900070B4184B184D1B782A78D9B2D2B291423F
+:101EA00022D0164B1C68531CA34214D300221346A5
+:101EB0001348C05CC0B2134E2A7032684AB19942CE
+:101EC00038BF0919CB1A104909688B4201D8002381
+:101ED000137070BC70473F2B09D90C483F3A00681B
+:101EE000805CDAB2C0B2E6E74FF0FF30F1E7DAB279
+:101EF000DEE700BFB094FF1FB194FF1F3C87FF1FB8
+:101F0000E094FF1FAC94FF1F4087FF1F2495FF1F25
+:101F10000D4A0E4B12781B78DBB29A4211D00C4A54
+:101F200011685A1C8A4204D300220A4B985CC0B242
+:101F300070473F2AF9D9084A3F3B1268D05CC0B2CB
+:101F400070474FF0FF307047B094FF1FB194FF1FF0
+:101F50003C87FF1FE094FF1F2495FF1F054B064A97
+:101F60001B7806491268DBB20B700AB100231370AC
+:101F7000704700BFB194FF1FAC94FF1FB094FF1FC8
+:101F800030B43C4B1A79940626D53B4DDC793B4B5B
+:101F900029781A683A4BC9B2481C9042E4B232D34D
+:101FA000197801F0FF03002957D00023184635495E
+:101FB0000C542B703449096871B1344B1B78DBB277
+:101FC000834284BFD21A1318314A126898BFC31AC9
+:101FD000934224BF01230B70264AD378DBB2180644
+:101FE0001DD45A060DD5234B1B795B0609D5294B09
+:101FF00029491B6800220A7003B11A701D4B2C225C
+:10200000DA7030BC70471B789842D3D03F282FD964
+:10201000224B3F391B685C54C3B22B70CAE711795D
+:102020000906DED51E49194C08782178C9B28842C4
+:102030001BD01C4A1268481C904210D2272898BF17
+:10204000C1B20ED9184A27391268525CC1B2D2B255
+:102050000848D2B2C2712170C3E71846AAE700212E
+:102060000846124A125CD2B2F2E76C21D170B8E78E
+:10207000C3B29CE700C00640B094FF1F3C87FF1F1F
+:10208000B194FF1FE094FF1FAC94FF1F2195FF1F29
+:102090004487FF1F2895FF1F2095FF1F2495FF1FD2
+:1020A0002C95FF1F4887FF1FDC94FF1FB494FF1F70
+:1020B000084B1860084B50B101F140021A60074A02
+:1020C000074B01F11A002831106019607047402257
+:1020D0001A60F4E72495FF1F3C87FF1F4087FF1F0E
+:1020E0004487FF1F044B1860044B10B1283119605E
+:1020F000704728221A607047DC94FF1F4887FF1F33
+:10210000704700BF431E032B14D872B60A4951F81A
+:10211000230068B170B4094C058834F81320466870
+:1021200041F82360521B24F8132062B670BC70473C
+:1021300062B67047002070478895FF1F8496FF1F86
+:10214000013803280BD872B6074B53F8203043B13F
+:1021500000205B680130002BFBD162B67047002085
+:1021600070471846F9E700BFDC95FF1FF0B472B660
+:102170001A491B4E012311F8014B194F9A002407ED
+:1021800042F0010505D556F8324064B156F83520C5
+:10219000BAB10133052BEED162B6124B00221A7090
+:1021A000F0BC00F02FBD0F4C0F4D217807EB43130F
+:1021B000083001395860217047F8325062B6F0BCDF
+:1021C0007047084A0949137807EBC5040830013BFA
+:1021D0006060137047F8351062B6F0E754490000AC
+:1021E0000080FF1F0596FF1F88004000C8004000C8
+:1021F000431E032B1DD81B4A400140F0100030B491
+:10220000104472B6184CE25C032A1BD8DFE802F0D7
+:102210000212151703220D88E25410F0080F14BFA4
+:10222000C823882343EA054308314160036062B64E
+:1022300030BC704708300222EDE70522EBE708309A
+:102240000422E8E7094A52F8230038B1084A52F854
+:102250002300416042F8231062B6E9E742F82310F8
+:10226000034AF7E70080FF1F1496FF1FDC95FF1F4E
+:10227000EC95FF1F2DE9F04FDFF814B3DFF814A33E
+:1022800087B044E0AD4F4FEA930807EBC809013E21
+:10229000D9F8042003F00803F6B2A2F1080003F015
+:1022A000FF04002B40F0038157F838301B0C99B223
+:1022B00022F8081C002B00F0F180A14B22F8064CFC
+:1022C00042F8044C53F82620002A00F06C819D4D02
+:1022D00055F8263058609C4C45F8260034F81630E6
+:1022E000194424F8161000F06DFC002800F0548109
+:1022F000964A974B19F0080F00F1080018BF1346D3
+:10230000C9F8040047F8383008238BF800309BF8F0
+:102310000040E4B260071BD58E4B1B78ABB18E49F1
+:102320000A7802F0FF032AB1013BDBB20B70002BED
+:1023300000F0B58389490A7802F0FF032AB1013B16
+:10234000DBB20B70002B00F0F68004238BF800301A
+:1023500004F0080303F0FF02002B00F0D5809AF888
+:102360000030DBB21E098DD19C08744F57F8342021
+:1023700007EBC401C2F38302013A49680C2A7ED8F4
+:10238000DFE802F081817D7D7D7D7D7D427D7D7DEB
+:1023900007000868724B734D01936C4B4A68724E8C
+:1023A00047F8343081B240F281646D4B6A60286036
+:1023B00000220120A1423A611A60BA61307000F235
+:1023C000F680B1F5D06F80F0E882B1F5817F00F042
+:1023D000D38200F2D881802900F04D81822940F01B
+:1023E0009282A988614B01F07F01042900F28C825E
+:1023F0005F4C89000B44227062701A78930740F199
+:102400003883207002203AE1554B01931A6862B379
+:10241000584B5949544E18880C7896F800E04028DB
+:10242000054684F0010C28BF402544F00204BEF1AB
+:10243000000F81F800C0A0EB050007EBC40C0CBF37
+:102440008821C82180B28EF0010E41EA0541CCF806
+:102450000420188086F800E02A4447F8341010B9A8
+:10246000402D18BF0022019B1A603E4B1A88B2F51E
+:10247000A06F04D100219A785970404B1A70404ADD
+:102480000123137040E7374A158842F22100854244
+:1024900000F052812D4A47F83420F0E72B4A2C4BAC
+:1024A00019F0080F18BF134647F838302CE700F032
+:1024B000A9FB344A344952F82630002B00F02D8114
+:1024C00058688C5D42F8260003F10802C9F8042020
+:1024D000032C05D8DFE804F0120F150204228A55F8
+:1024E0001A8819F0080F0CBF8823C82343EA024357
+:1024F00047F8383008E702228A55F1E703228A5567
+:10250000EEE705228A55EBE7E00700F17881210626
+:1025100000F1A281A20706D51C4A1D4913780220AA
+:10252000DBB213700870E30602D5194B10221A7043
+:1025300007B0BDE8F08F00F0D1FC06E70080FF1F78
+:102540008895FF1F3495FF1F8496FF1FC800400029
+:10255000880040001096FF1F9995FF1F1896FF1FD7
+:102560003095FF1FFC95FF1F9895FF1FC020074067
+:102570000896FF1F4495FF1F0496FF1F98200740F1
+:1025800094200740DC95FF1F1496FF1F882007400A
+:102590008020074090200740B74A47F8380013785A
+:1025A00001331370B0E643F82600B44D93E642F2CF
+:1025B0002104A14200F0AD8000F20E81B1F5086F58
+:1025C00000F05481B1F5106F40F09D81AC4AA978BC
+:1025D0001170AC4D042402E00134142C0CD057F8D7
+:1025E00034301906F8D505EBC403013458680838AF
+:1025F00000F008FB142CF2D1A349A44BA44A029189
+:10260000A449A54C9D4D039405964FF000098846BA
+:102610001C4616460495206828B1456800F0F2FA79
+:102620002846002DF9D100232360049B30681A4608
+:10263000002342F8293028B1456800F0E3FA284623
+:10264000002DF9D100223260029A98F8003011462C
+:10265000002241F8042B039A0291023B4FF0000143
+:1026600022F81910032B00F2B481DFE813F0E20125
+:10267000AE01E201AE01894C022022706270EA884C
+:10268000824280F00D8286490D78402A45F0020E84
+:10269000944607EBCE0028BF4FF0400C04EB0C0330
+:1026A00044600293CCEB02004FEA0C484FF0010962
+:1026B0000022C82444EA080385F0010447F83E30AC
+:1026C00032700C70DFF8BCE1764BDFF8D481002863
+:1026D00040F02081BCF1400F1BD144F0020407EB15
+:1026E000C403029FDFF89CE15F60002A40F027816D
+:1026F000020442F0880286F800900D7007444EF8FC
+:1027000034203B46402804D10020674A01991080BC
+:102710000B60664A01231370B1E68B5D032B00F258
+:10272000248101A252F823F00923000009230000AC
+:102730004D28000053280000928862B95C4ACD1DE4
+:1027400011F8013B02F8013F8D42F9D1594A126854
+:10275000862A00F0C9805249524E0878327840F0FB
+:10276000020580F00100087007EBC501002A4FF058
+:102770000000486082F001020CBF8821C82147F8A0
+:102780003510327086E640F20232914240F0B0805D
+:10279000A98801F07F01042900F2B5806A88002A27
+:1027A00040F0B180444C89000C448146217841F0CE
+:1027B0000201217000200290804684460446384978
+:1027C0000D7845F0020E07EBCE03B9F1000F5C6007
+:1027D0000CBF8824C8246DE742F22124A14240F0B6
+:1027E0008E80A988002940F04281344B344A354C10
+:1027F0001B68AD78136081460A462570DAE72B49DD
+:10280000204B3148264EDFF8B0C0304DDFF8D4E021
+:102810002F4F02240C702F4C18605C6098602E487B
+:10282000D8601A619A610D2332702C4C8CF80030FC
+:102830002B4EFF232B7001209F258EF800303A701D
+:1028400033702570087007B0BDE8F08F00238B55FA
+:102850005AE501238B5557E51749224B80220D205D
+:1028600008701A70A2077FF55EAE55E6044A0B4C5D
+:102870001278227003E700BF0596FF1F3495FF1FF3
+:102880001096FF1F0080FF1FEC95FF1F8895FF1F0C
+:10289000DC95FF1F1496FF1F8496FF1F0896FF1FED
+:1028A0000496FF1F9895FF1F4495FF1F9420074033
+:1028B0008B96FF1F8C96FF1FC0200740A894FF1F18
+:1028C0009496FF1F2896FF1F88004000882007402D
+:1028D000982007404895FF1F9C95FF1F84200740C4
+:1028E0008C20074080200740754A0F21117032E785
+:1028F000B1F5A06F07D100224FF001095AE742F26B
+:1029000021329142F7D06F4B0F221A706E4A012389
+:102910001370B4E540287FF6E0AE44F002040EEBFD
+:10292000C401029E4E60AAB183F80090674A88F8FD
+:1029300000503346403840334EF83420E5E6029BE1
+:1029400086F80090020442F0C8020D7003444EF86D
+:102950003420D7E683F80090029B5D4A88F8005047
+:10296000403840334EF83420CFE619F0080F0CBF42
+:10297000022303238B55C7E4A98801F07F010429B2
+:10298000C1D86A88002ABED14E4C89000C448146C9
+:10299000217821F0020121700CE74E4A5468002C86
+:1029A000B1D06888B5F804E003E00C325468002C1C
+:1029B000A9D013888342F8D153887345F5D1000A12
+:1029C00003280CBF2078108959E64FF0010388F8DE
+:1029D000003009F10109B9F1040F04F1040406F112
+:1029E000040608F101087FF416AE3B4B059E3B4DF3
+:1029F000DFF8F080002018704FF0010918F8013B53
+:102A000005F8043B1A0719D44FEA890444F002027E
+:102A100044F00304002347F8323047F83430304B99
+:102A20009D4209F10109E9D196F8009089F001026F
+:102A3000C0E64FF0000388F80030CAE700F0C2F8A3
+:102A400018B307EB49134FEA890408305860204B4C
+:102A500047F8343000F0B6F868B144F0010307EBF2
+:102A6000C30208305060194A47F83320CEE7814648
+:102A7000A0E6022003E6184B44F001021B7847F859
+:102A80003200154A01331370C0E7134B124A1B780A
+:102A90004FEA8904013347F834001370DAE700BEC7
+:102AA0004028844628BF4FF0400C04EB0C03CCEBCD
+:102AB00000004FEA0C48029300224FF001097EE625
+:102AC0009995FF1FC020074094200740C800400090
+:102AD00088004000584900000596FF1FC4200740A9
+:102AE000D4200740544900002DE9F04100F056FB86
+:102AF00000231F491A4601EBC30041F8332001337C
+:102B0000142B42604FF000041948F4D1194A1A4FAF
+:102B100013681A491A4D1B4EDFF874C0DFF874E0D1
+:102B2000DFF8748043F480231360C0F307233B7005
+:102B3000C0F307430B70000EFF2302F52832287004
+:102B4000D4328CF80030104D8EF800300F483370BE
+:102B5000012388F80030702681F850404FF400744B
+:102B6000102107F8183C2E7004601170BDE8F08148
+:102B70000080FF1F348004409C200740B0200740A5
+:102B8000B42007401020074049E400E008E100E0DD
+:102B900080200740882007409420074000F0A2B81A
+:102BA00000F07AB800F054B800F08EB800F06AB9BE
+:102BB00000F044B90846114600F0B0B8084600F0ED
+:102BC00031B900BF72B60D480268B2FA82F30B2B1E
+:102BD00010DC4FF00041D94022EA0102026062B6E7
+:102BE000074803EBC303DB00C2180021C1501046A5
+:102BF0005160704762B60020704700BF6087FF1FBA
+:102C0000BC83FF1F0D4B0E4AC31AA2FB03231B09F3
+:102C10000B2B0CD80B4A127852B972B60A484FF0F7
+:102C20000041026821FA03F31A43026062B670475A
+:102C3000064A1278002AF0D0FFF798BABC83FF1F2B
+:102C4000398EE3380596FF1F6087FF1F1096FF1F20
+:102C500038B50F4D286878B143880288C118013310
+:102C600093420C7A02D24380204638BDFFF7CAFF58
+:102C7000002320462B6038BD064B1B782BB1032068
+:102C8000FFF740FA28600028E6D14FF0FF3038BD4A
+:102C90002496FF1F1096FF1F10B5094C206818B12D
+:102CA00043881844007A10BD064B1B782BB10320D3
+:102CB000FFF728FA20600028F2D14FF0FF3010BD56
+:102CC0002496FF1F1096FF1F044B054A1B6890882F
+:102CD0001BB11A885B88D31A184470472496FF1FCB
+:102CE0008496FF1F0B4B1B789BB110B50A4C2068D4
+:102CF00048B1FFF787FF002303202360FFF702FAA4
+:102D000030B1FFF77FFF0320FFF7FCF90028F8D16F
+:102D100010BD70471096FF1F2496FF1F2DE9F04F3E
+:102D2000DFF8F89083B0012289F80020019169B39F
+:102D3000DFF8EC80364F019E8346D8F80000B0B330
+:102D4000344D4488C4F14001B14228BF314604EB00
+:102D5000010E00221FFA8EFE2A70761AA0F802E0F9
+:102D600000F1080251B1013C224459441BF8014BC7
+:102D700002F8014F8B45F9D1B0F802E0BEF13F0FE8
+:102D80000BD8254A05211170002ED6D101980023B9
+:102D900089F8003003B0BDE8F08F40220280014680
+:102DA0000420FFF725FA0022C8F80020E9E73A7866
+:102DB0002AB3184D48F601444FF0010A07E0013CE0
+:102DC00016D02A78A2B900F0ADF83A78BAB104204A
+:102DD000FFF7B6F90728F2D889F800A0FFF7F2FE4E
+:102DE000C8F800000028ACD10C4B013C1870E8D1A9
+:102DF00001234FF0FF302B7003B0BDE8F08F0023AC
+:102E00004FF0FF3089F8003003B0BDE8F08F00BF0D
+:102E10001096FF1F2096FF1F1896FF1F1996FF1F81
+:102E20001C96FF1F00B583B002AB012103F8010D12
+:102E30001846FFF773FF03B05DF804FB38B50E4D7D
+:102E40000E4C28680123237028B14088002323708A
+:102E5000C0F1400038BD0A4B1B7813B90020207028
+:102E600038BD0420FFF76CF90728F7D8FFF7AAFE52
+:102E700028600028E9D1F1E71C96FF1F1996FF1F73
+:102E80001096FF1FF8B5114B1B788BB1104E114DEA
+:102E9000346801272F7064B10F4A638800271770C8
+:102EA000214623800420FFF7A3F9376000232B700D
+:102EB000F8BDFFF787FE084B28B1014604201C70BF
+:102EC000FFF796F9F2E71F70F0E700BF1096FF1FBB
+:102ED0001C96FF1F1996FF1F1896FF1F38B50E4B43
+:102EE0001B7873B90D4C216861B103F0FF054B8865
+:102EF0000B800420FFF77CF9256038BD084B0122C8
+:102F00001A7038BDFFF75EFE0028F7D00146BDE815
+:102F100038400420FFF76CB91996FF1F1C96FF1F5D
+:102F20001896FF1F2DE9F843314E337893B1314F96
+:102F30003A787AB90122D9073A7036D49A0719D467
+:102F400000225B073A7005D52B4B1A6812B1EFF3DC
+:102F500005820AB1BDE8F883EFF3108172B61868F4
+:102F600018B1264C2278002A2ED00029F2D162B660
+:102F7000BDE8F883DFF8908098F80020002ADFD0C1
+:102F8000DFF88890002405E0013498F80030E4B2BE
+:102F9000A34212D959F824502B6828461B69984738
+:102FA0000028F1D02B699847EEE7FFF78DFEC8B9EE
+:102FB000134B1B781BB93378C0E73378C0E73378FD
+:102FC00003F0FE033370B9E745691D6001232370E8
+:102FD0005DB1AA6101B962B600254577836898475B
+:102FE0002570B7E700F0D8F8E2E7064B1D60F1E77F
+:102FF0006487FF1F2996FF1F3896FF1F3C96FF1F0F
+:103000006787FF1F3496FF1F4C96FF1F4096FF1FD8
+:1030100070B5EFF3108272B60C4C206880B10C4E84
+:1030200000254369236073B19D6102B962B645779B
+:1030300083689847EFF3108272B620680028F0D1B9
+:1030400002B962B670BD3360EFE700BF2C96FF1F78
+:103050003096FF1FFFF7DCBF024A1368013313608D
+:10306000704700BFA894FF1F70B4104E104D347805
+:10307000CCB12B68984214D02A46002303E052F8C2
+:10308000041F81420DD00133DBB2A342F7D15A1C99
+:10309000D2B2084945F823000B78327043F002039E
+:1030A0000B7070BC704723460122F2E74C96FF1F5D
+:1030B0004096FF1F6487FF1F30B42948294A2A4BD6
+:1030C0002A4D6024E121047011701B78284C082BD4
+:1030D00030D00A2B2748284937D00C2B0CBF15229B
+:1030E0003D2212232A60236002600B60234B244997
+:1030F0001B78244ABBB101230B601360224B234988
+:103100001B78234A012B26D9042B0FD9082B1ED953
+:10311000102B94BF862387230B6013601D4B012265
+:103120001A7030BC70470B601360E7E784230B60B4
+:103130001360F3E700F58E200F49083001221323B6
+:103140002A60236002600B60D0E71922F7E785232D
+:103150000B601360E2E780230B601360DEE700BFC3
+:1031600000400740014007406587FF1F08B003404B
+:103170000CB0034008B00B400CB00B404E96FF1F44
+:1031800020B0034020B00B406687FF1F24B00340EF
+:1031900024B00B404D96FF1F704700BF70B584B040
+:1031A00072B6194B194D1A48702241260F248021FE
+:1031B0001A702E701A460470197013781B06FCD50D
+:1031C000144B186862B6144B144C984298BF00EB2D
+:1031D000800001A998BF40000A22FEF7CBFA01A99E
+:1031E0002046002311F8012B01333AB10A2B20F8B5
+:1031F000022FF7D11623237004B070BD5B00DBB241
+:10320000237004B070BD00BF000002400700024000
+:1032100006000240080002407F969800F487FF1FD6
+:103220000B460146184600F001B800BF13460A4697
+:103230000146022000F092BE014B1868704700BFA3
+:10324000388CFF1F70B50F4E0F4D761BB61018BF90
+:10325000002405D0013455F8043B9847A642F9D123
+:103260000A4E0B4D761B01F0A3FBB61018BF0024CD
+:1032700006D0013455F8043B9847A642F9D170BDF9
+:1032800070BD00BFBC490000BC490000C849000037
+:10329000BC490000024B0146186800F00BB800BFA3
+:1032A000388CFF1F024B0146186800F01BBF00BF9F
+:1032B000388CFF1F2DE9F04F01F10B05162D83B05F
+:1032C000064640F29F8035F0070500F1BF80A94215
+:1032D00000F2BC8000F058FBB5F5FC7FC0F09C828A
+:1032E0006B0A00F0BA80042B00F28381A80900F178
+:1032F000390E4FEA4E033830C44F07EB8303A3F176
+:1033000008015C68A14207D1ACE0002A80F2AC80E1
+:10331000E468A14200F0A680636823F003035A1B0F
+:103320000F2AF2DDB9493C6901F1080E744500F03D
+:10333000B381636823F003035A1B0F2A00F39981BA
+:10334000002AC1F814E0C1F810E080F29E80B3F5C5
+:10335000007F80F06781DB0803F1010C01229B10E4
+:1033600002FA03F34A6851F83C80C4F8088001EB84
+:10337000CC091A43A9F10803E3604A6041F83C40D4
+:10338000C8F80C40831001249C40944200F28A80CB
+:10339000144206D120F003006400144200F104003E
+:1033A000FAD007EBC009CC468046DCF80C108C45FF
+:1033B00007D173E1002A80F28181C9688C4500F051
+:1033C0006D814B6823F003035A1B0F2AF2DD0C4674
+:1033D000D1F80CC054F8088F4B1945F001054D6029
+:1033E00042F00101C8F80CC03046CCF808807B617F
+:1033F0003B61C3F80CE0C3F808E059609A5000F054
+:10340000C5FA1FE0102921D800F0BEFA10250623C6
+:1034100002207E4F07EB8303A3F108025C6894420D
+:1034200000F045816368E168A56823F00303234445
+:1034300030465A68E96042F001028D605A6000F03F
+:10344000A5FA0834204603B0BDE8F08F00240C2311
+:103450002046336003B0BDE8F08F80234FF0400E6C
+:103460003F2049E770465DE72344E1685A68A56854
+:1034700042F00102E96030468D605A6000F086FA41
+:103480000834204603B0BDE8F08F234430465A6824
+:1034900042F001025A6000F079FA0834204603B085
+:1034A000BDE8F08FBC68636823F00308A84504D327
+:1034B000C5EB08030F2B00F38C80554BDFF86091B0
+:1034C0001A68D9F8003001332A4404EB080A00F0E6
+:1034D000608102F580520F3222F47F6222F00F02E7
+:1034E00011463046019200F04BFCB0F1FF3F83469D
+:1034F000019A00F05881824500F2FC80454B196822
+:10350000DA451144196000F05381D9F80000DFF862
+:1035100010E101301BBFCAEB0B0A5144CEF800B0DA
+:1035200019601BF0070100F01781C1F10800C1F517
+:103530008051834408315A44C2F30B02C2EB0109A3
+:1035400049463046019300F01BFC431C019B00F0F0
+:103550003F81CBEB00024A4442F001021968C7F8F0
+:1035600008B04944BC42CBF804201960DFF8A490AD
+:1035700016D0B8F10F0F40F2FD806268A8F10C037D
+:1035800023F00703E01802F001024FF0050E1A4382
+:103590000F2B6260C0F804E0C0F808E000F21C8164
+:1035A0001D4BBC681A68914288BF19601B4B1A6892
+:1035B0009142626888BF196022F003029542A2EB33
+:1035C000050301D80F2B04DC304600F0DFF900249E
+:1035D00038E7621943F0010345F0010565603046A4
+:1035E000BA60536000F0D2F90834204603B0BDE859
+:1035F000F08F142B71D9542B00F2A480280B00F10A
+:103600006F0E4FEA4E036E3076E600BF3C8CFF1F14
+:103610005896FF1F5C96FF1F5496FF1F5096FF1F82
+:103620004890FF1F5A0A042A5ED9142A00F2B38078
+:1036300002F15C0149005B3207EB810C57F8211065
+:10364000DFF8DC81ACF1080C8C4500F088804A681A
+:1036500022F00302934202D289688C45F7D1D1F857
+:103660000CC07A68C4F80CC0A160CCF80840CC60EB
+:1036700088E6631942F0010745F0010565603046B0
+:103680004B610B61C3F80CE0C3F808E05F609A502F
+:10369000083400F07BF9D5E64A6873E608F10108C2
+:1036A00018F0030F0CF1080C7FF47FAE30E0DC68FB
+:1036B000A34208BF02303FF435AEB3E60B440C46DC
+:1036C0005A68C96854F8085F42F001025A603046EF
+:1036D000E9608D6000F05AF9B4E603F15C0E03F185
+:1036E0005B004FEA4E0307E69A0902F139014900EF
+:1036F0003832A1E7BC424A4B3FF400AF9C68626895
+:1037000022F003025AE759F80839994540F08280BF
+:1037100010F0030F00F1FF30F5D17B6823EA0403BA
+:103720007B6064009C423FF6BDAE002C3FF4BAAE15
+:103730001C4240467FF435AE64001C4200F1040098
+:10374000FAD02EE6B3F5AA7F18D8E80B00F1780E70
+:103750004FEA4E037730CFE54FF48051EBE601217D
+:10376000D8F80430921001FA02F21A43C8F8042083
+:10377000614677E70123CBF8043025E740F2545245
+:10378000934220D8A80C00F17D0E4FEA4E037C3006
+:10379000B2E51032A4E6542A26D81A0B02F16F01C2
+:1037A00049006E3248E7BC68626822F0030205E710
+:1037B000CAF30B0000287FF4A8AE4244BB6842F075
+:1037C00001025A60ECE6FE234FF07F0E7E2093E567
+:1037D00001224FF00009C1E604F10801304600F073
+:1037E00081FCD9F80010DBE6B2F5AA7F05D8DA0B28
+:1037F00002F17801490077321EE740F254518A42C3
+:1038000005D89A0C02F17D0149007C3214E7FE21B3
+:103810007E2211E77B6884E7E808431C5B00F8E53B
+:103820003C8CFF1F8842F0B50DD98B1898420AD204
+:103830008118002A51D09A1A13F8014D01F8014D50
+:103840009342F9D1F0BD0F2A48D941EA00039B0702
+:1038500046D100F1100401F11003154653F8106C25
+:1038600044F8106C53F80C6C44F80C6C53F8086C6A
+:1038700044F8086C103D53F8046C44F8046C0F2DA8
+:1038800003F1100304F11004E8D8A2F1100323F0AF
+:103890000F0302F00F0E1033BEF1030F194403445F
+:1038A00021D91E1F0D467446043C55F8047B46F88A
+:1038B000047F032CF8D8AEF1040424F0030404348C
+:1038C0002344214402F0030262B1013B0A4411F88F
+:1038D000014B03F8014F8A42F9D1F0BD0346F3E7EB
+:1038E0000346F2E7F0BD7246EEE700BF70B484070E
+:1038F00046D0541E002A41D0CDB2034602E0621EDB
+:10390000E4B3144603F8015B9A07F8D1032C2ED9CF
+:10391000CDB245EA05250F2C45EA054519D903F135
+:1039200010022646103E0F2E42F8105C42F80C5C46
+:1039300042F8085C42F8045C02F11002F2D8A4F1EB
+:10394000100222F00F0204F00F041032032C134473
+:103950000DD91E462246043A032A46F8045BFAD8DB
+:10396000221F22F003020432134404F003042CB19A
+:10397000C9B21C4403F8011BA342FBD170BC7047C1
+:1039800014460346C2E700BF704700BF704700BF40
+:10399000024B0A460146186800F002B8388CFF1F37
+:1039A0002DE9F04F174683B0002900F0C1800E4684
+:1039B000814607F10B05FFF7E7FF56F804EC162DDB
+:1039C0002EF00304A6F1080840D810221546AF4295
+:1039D00041D8944275DAC94B996808EB04008842D3
+:1039E000416800F0D98021F0010303445B68DB07E4
+:1039F0007DD51EF0010F35D039464846FFF75AFCF9
+:103A00000746E0B156F8043C23F001034344A0F11B
+:103A100008029A4200F04481221F242A00F23181D8
+:103A2000132A00F204810346324611681960516876
+:103A3000596092689A603146484600F053FB484608
+:103A4000FFF7A4FF384603B0BDE8F08F25F0070567
+:103A5000002D2A46BBDA0C230020C9F8003003B041
+:103A6000BDE8F08F56F8083CC3EB080ADAF80430DA
+:103A700023F0030C04EB0C039342BDDB5746DAF84A
+:103A80000C1057F8080F221F242AC160886000F22A
+:103A90001781132A40F212813168CAF80810716840
+:103AA000CAF80C101B2A00F22B8108360AF110020A
+:103AB0003168116071685160B16891603E461C4682
+:103AC000D046631B0F2B1DD8D8F8043003F0010338
+:103AD00023434444C8F80430636843F0010363603F
+:103AE0004846FFF753FF304603B0BDE8F08F21F0A2
+:103AF00003012144914221DBC36882680C46D360F4
+:103B00009A60DEE7D8F8042008EB050102F0010214
+:103B1000154343F001020B44C8F804504A605A6848
+:103B200042F0010208315A60484600F0DBFAD7E75C
+:103B3000114603B0BDE8F04FFFF7BCBB1EF0010F0C
+:103B40007FF45AAF56F8083CC3EB080ADAF80430A1
+:103B500023F0030C01EB0C0E96458BDBC3688268E7
+:103B60005746D3609A6057F8081FDAF80C30CB60DC
+:103B7000221F242A996000F29980132A62D933689F
+:103B8000CAF808307368CAF80C301B2A00F2A0800B
+:103B900008360AF1100356E021F0030BA34405F1A7
+:103BA0001000834559DA1EF0010F7FF425AF56F857
+:103BB000081CC1EB080ADAF8041021F0030CE344F6
+:103BC00058453FF757AF5746DAF80C1057F8080F2B
+:103BD000221F242AC160886000F2B480132A40F2B8
+:103BE000A5803168CAF808107168CAF80C101B2A41
+:103BF00000F2AF8008360AF1100231681160716876
+:103C00005160B16891600AEB0501C5EB0B0242F00F
+:103C1000010299604A60DAF8043003F001031D43A1
+:103C20004846CAF80450FFF7B1FE38465CE73368EF
+:103C30000360736843601B2A27D800F1080306F16C
+:103C40000802F2E63B4632681A6072685A60B2684F
+:103C50009A603E467446D04633E708EB0501C5EB53
+:103C60000B0B4BF0010299604A6056F8043C03F0DC
+:103C700001031D43484646F8045CFFF787FE3046C3
+:103C800032E73146FFF7CEFDD5E6B3688360F368CF
+:103C9000C360242A28D000F1100306F11002C4E604
+:103CA00050F8043C23F003031C440AE7314638462D
+:103CB0007446D046FFF7B6FD3E4602E73A46F7E6C1
+:103CC000314638461C46D046FFF7ACFD3E46F8E686
+:103CD000B368CAF81030F368CAF81430242A1BD02D
+:103CE00010360AF11803AEE7336903617369436163
+:103CF00006F1180200F1180397E600BF3C8CFF1F85
+:103D0000B168CAF81010F168CAF81410242A0FD04C
+:103D100010360AF11802CBE63369CAF81830736915
+:103D2000CAF81C3018360AF120038CE73A4664E7DB
+:103D30003269CAF818207269CAF81C2018360AF1CC
+:103D40002002B5E6314638460193FFF76BFD019B33
+:103D500059E7B168CAF81010F168CAF81410242A9B
+:103D600003D010360AF1180247E73269CAF8182062
+:103D70007269CAF81C2018360AF120023DE700BF1C
+:103D800038B5074C0023054608462360FDF7BEFC06
+:103D9000431C00D038BD2368002BFBD02B6038BDFE
+:103DA0009896FF1F80EA0102844612F0030F4FD15C
+:103DB00011F0030F32D14DF8044D11F0040F51F8FA
+:103DC000043B0BD0A3F101329A4312F0803F04BFB1
+:103DD0004CF8043B51F8043B16D100BF51F8044B9A
+:103DE000A3F101329A4312F0803FA4F101320BD1CA
+:103DF0004CF8043BA24312F0803F04BF51F8043B4F
+:103E00004CF8044BEAD023460CF8013B13F0FF0FAB
+:103E10004FEA3323F8D15DF8044B704711F0010FDE
+:103E200006D011F8012B0CF8012B002A08BF7047AF
+:103E300011F0020FBFD031F8022B12F0FF0F16BFA6
+:103E40002CF8022B8CF8002012F47F4FB3D170476E
+:103E500011F8012B0CF8012B002AF9D1704700BF93
+:103E6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF62
+:103E7000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF52
+:103E800090F800F06DE9024520F007016FF0000C9A
+:103E900010F0070491F820F040F049804FF0000442
+:103EA0006FF00700D1E9002391F840F000F108001D
+:103EB00082FA4CF2A4FA8CF283FA4CF3A2FA8CF355
+:103EC0004BBBD1E9022382FA4CF200F10800A4FABC
+:103ED0008CF283FA4CF3A2FA8CF3E3B9D1E9042310
+:103EE00082FA4CF200F10800A4FA8CF283FA4CF347
+:103EF000A2FA8CF37BB9D1E9062301F1200182FA01
+:103F00004CF200F10800A4FA8CF283FA4CF3A2FA06
+:103F10008CF3002BC6D0002A04BF04301A4612BA14
+:103F2000B2FA82F2FDE8024500EBD2007047D1E917
+:103F3000002304F00305C4F100004FEAC50514F0A6
+:103F4000040F91F840F00CFA05F562EA05021CBF77
+:103F500063EA050362464FF00004A9E72DE9F04744
+:103F6000254C2568D5F8484106468846924699462C
+:103F7000C4B360681F2817DC431C76B104EB8005CE
+:103F80000122C5F888A0D4F8881182401143022E7E
+:103F9000C4F88811C5F808911ED00230636044F857
+:103FA00020800020BDE8F087144B03B34FF4C870A5
+:103FB000FFF770F90446D0B1D5F84831002780E802
+:103FC0008800C5F8484138460123C4F88871C4F810
+:103FD0008C71002EE1D0D1E7D4F88C110A43C4F8DB
+:103FE0008C21DAE705F5A674C5F84841C1E74FF022
+:103FF000FF30BDE8F08700BFAC49000095320000FB
+:10400000024B13B1024800F005B8704700000000F1
+:1040100021400000002301461A461846FFF79EBFC4
+:1040200038B5074D074C2C1BA41005D0013C55F8A2
+:10403000043D9847002CF9D1BDE8384000F0C4BCDD
+:104040000000000000000000F8B5234F0C460646B3
+:10405000FFF79AFCBB685D6825F00305291B01F694
+:10406000EF7121F47F6121F00F01A1F58054B4F5C7
+:10407000805F07DB00213046FFF782FEBB682B44E0
+:10408000984204D03046FFF781FC0020F8BD614221
+:104090003046FFF775FE01300DD0104BBA68196835
+:1040A0002D1B45F001053046091B55601960FFF7CF
+:1040B0006DFC0120F8BD00213046FFF761FEBA68B3
+:1040C000831A0F2BDEDD064C0449246843F00103FC
+:1040D000001B53600860D5E73C8CFF1F5C96FF1FF8
+:1040E0004890FF1F002945D02DE9F0410D4680463C
+:1040F000FFF74AFC55F8047C6A4927F00103A5F153
+:104100000804E2188E685068B24220F0030062D0C2
+:10411000FE0750600BD455F8087CE41B01F1080E33
+:10412000A56875453B446FD0E768EF60BD60151822
+:104130006D68ED0742D543F001026260E350B3F5CC
+:10414000007F18D2DB085A1C4D6851F83270A76006
+:1041500001209B1000FA03F301EBC2001D43083855
+:10416000E0604D6041F83240FC604046BDE8F041FF
+:10417000FFF70CBC70475A0A042A53D89A0902F177
+:1041800039077F0002F1380501EB870051F827203D
+:104190004449083890424DD0516821F003018B42C8
+:1041A00002D292689042F7D1D068E060A260846049
+:1041B000D4604046BDE8F041FFF7E8BB95683A4F50
+:1041C000BD4203443FD0D068E86043F001028560FF
+:1041D0006260E350B3E7FF07034407D455F8082CA7
+:1041E000A41A1344A068E268C26090602F4A126863
+:1041F00043F00100934260608C60B6D32C4B404684
+:104200001968FFF721FFB0E711184968C90744D4BE
+:104210009168D268CA60034443F001009160606015
+:10422000E350A2E7142A17D802F15C077F0002F1DD
+:104230005B05A9E7AA104B68012505FA02F21343B2
+:104240004B600246B1E743F001024C610C61E5604E
+:10425000A5606260E35088E7542A06D81A0B02F181
+:104260006F077F0002F16E058EE7B2F5AA7F06D8D0
+:10427000DA0B02F178077F0002F1770584E740F25C
+:104280005450824206D89A0C02F17D077F0002F159
+:104290007C0579E7FE277E2576E743F00102626020
+:1042A000E35062E73C8CFF1F448CFF1F4490FF1FCC
+:1042B0005896FF1F506C656173652070726573734B
+:1042C00020646F776E20796F75722066696E6765FE
+:1042D00072000000436170747572696E67207375B7
+:1042E0006363656564730000506C6561736520727B
+:1042F000656C6561736520796F75722066696E679C
+:10430000657200004D61746368696E672073756340
+:1043100063656564732C49443D0000002D2D2D2DEF
+:104320002D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2DBD
+:1043300000000000200000004D61746368696E6732
+:10434000206661696C730000436170747572696EF8
+:1043500067206661696C73002D2D2D2D2D2D2D2D5F
+:104360002D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D7D
+:104370002D2D2D2D2D000000436F6D6D756E696321
+:104380006174696F6E207769746820746865206451
+:104390006576696365206661696C656400FFFFFF8F
+:1043A000982F8A4291443771CFFBC0B5A5DBB5E9A0
+:1043B0005BC25639F111F159A4823F92D55E1CAB14
+:1043C00098AA07D8015B8312BE853124C37D0C55A2
+:1043D000745DBE72FEB1DE80A706DC9B74F19BC1EA
+:1043E000C1699BE48647BEEFC69DC10FCCA10C24DA
+:1043F0006F2CE92DAA84744ADCA9B05CDA88F976BE
+:1044000052513E986DC631A8C82703B0C77F59BF27
+:10441000F30BE0C64791A7D55163CA066729291453
+:10442000850AB72738211B2EFC6D2C4D130D3853F0
+:1044300054730A65BB0A6A762EC9C281852C7292B2
+:10444000A1E8BFA24B661AA8708B4BC2A3516CC7E0
+:1044500019E892D1240699D685350EF470A06A1019
+:1044600016C1A419086C371E4C774827B5BCB03468
+:10447000B30C1C394AAAD84E4FCA9C5BF36F2E6806
+:10448000EE828F746F63A5781478C8840802C78C95
+:10449000FAFFBE90EB6C50A4F7A3F9BEF27871C698
+:1044A000436F6D6D616E642070726F6365737365C9
+:1044B00064207375636365737366756C6C79000053
+:1044C000436F6D6D616E642070726F6365737369A5
+:1044D0006E67206661696C6564000000313A3120C6
+:1044E000636F6D70617269736F6E206661696C6570
+:1044F00064000000436F6D70617269736F6E2077A6
+:1045000069746820616C6C2066696E676572707290
+:10451000696E7473206661696C6564004E6F206615
+:10452000696E6765727072696E7420696E20646569
+:104530007369676E617465642049440044657369FA
+:10454000676E617465642049442068617320666900
+:104550006E6765727072696E740000004D6F6475ED
+:104560006C6520756E726567697374657265642029
+:1045700066696E6765727072696E74004E6F207244
+:104580006567697374657261626C6520494420686F
+:10459000657265004E6F2062726F6B656E20666992
+:1045A0006E6765727072696E74000000496E7661A4
+:1045B0006C696420646573696E6761746564206604
+:1045C000696E6765727072696E74206461746100EF
+:1045D0005468652066696E6765727072696E7420D2
+:1045E000686173206265656E2072656769737465C2
+:1045F00072656400506F6F72207175616C697479B7
+:104600002066696E6765727072696E7420696D618B
+:104610006765000046696E6765727072696E742026
+:1046200073796E746865736973206661696C65641B
+:1046300000000000436F6D6D756E69636174696F92
+:104640006E2070617373776F7264206E6F74206177
+:104650007574686F72697A656400000045787465E6
+:10466000726E616C20466C617368206275726E694F
+:104670006E67206572726F7200000000496E76618D
+:104680006C69642064657369676E61746564204950
+:1046900044000000496E636F72726563742070613C
+:1046A00072616D65746572004163717569736974D7
+:1046B000696F6E2074696D656F757400496E7661FF
+:1046C0006C6964206E756D626572206F6620666924
+:1046D0006E6765727072696E742073796E74686546
+:1046E00073697300496E636F7272656374204275FB
+:1046F000666665722049442076616C75650000002D
+:104700004E6F2066696E6765727072696E7420699B
+:104710006E70757420696E746F2066696E6765725D
+:104720007072696E742072656164657200000000C9
+:10473000436F6D6D616E642063616E63656C6C6563
+:104740006400000057726F6E672064617461206CB2
+:10475000656E67746800000057726F6E6720646151
+:10476000746120636865636B20636F64650000009B
+:10477000457863656564207570706572206C696D3D
+:104780006974206F66206163717569736974696FFC
+:104790006E2074696D657300446174612072656197
+:1047A00064696E672074696D656F75740000000040
+:1047B00000000000000000000D1200003112000097
+:1047C000C1120000BD120000B9120000B5120000B5
+:1047D000B1120000D5110000911200008D120000EE
+:1047E000851200007D1200007512000065120000A5
+:1047F0005512000051120000491200004112000041
+:10480000E51200000513000025130000C51200008A
+:1048100019120000011200000D0AFFFF4008FE43BC
+:1048200040A004404408FE4344A004400018FE4356
+:1048300000C004403000FE43309004403400FE438A
+:10484000349004401C18FE431CC004401018FE4362
+:1048500010C004400818FE4308C004400C18FE4372
+:104860000CC004400C10FE430CB004401010FE437A
+:1048700010B004401810FE4318B004401C10FE4352
+:104880001CB004401410FE4314B004400418FE434E
+:1048900004C004400010FE4300B004400008FE4382
+:1048A00000A004400408FE4304A004400C08FE439A
+:1048B0000CA004400808FE4308A004401418FE435E
+:1048C00014C004401818FE4318C004400410FE43EE
+:1048D00004B004400810FE4308B004401400FE4336
+:1048E000149004404C08FE434CA004400420FE43B6
+:1048F00004D004402410FE4324B004402010FE43A2
+:1049000020B004402810FE4328B004402C10FE4381
+:104910002CB004400020FE4300D004404808FE4371
+:1049200048A004401000FE43109004400000000026
+:1049300000000000BD2B0000B52B0000B12B0000D3
+:10494000AD2B0000A92B0000A52B0000A12B00001F
+:104950009D2B000000151915000100006887FF1F3E
+:1049600012000000000200009487FF1F43000000B7
+:1049700000030000F087FF1F00000000010309048E
+:104980007C87FF1F0000000002030904D887FF1F77
+:104990000000000003030904F487FF1F000000006B
+:1049A0000000000000000000000000001088FF1F51
+:1049B000F8B500BFF8BC08BC9E4670470140000037
+:0849C00035040000610600004F
+:0449C800F8B500BF7F
+:0849CC0054E8FF7F0100000028
+:1049D40000000000B847000000000000E8030000E9
+:1049E40000000000012100009C96FF1F4000000011
+:1049F4001A00000028000000280000000801000040
+:104A04003449000000000000E8030000000000003A
+:104A1400FFFFFFFF010A0401120110010200004020
+:104A2400C016830475020102030100001803540038
+:104A3400650065006E00730079006400750069000C
+:104A44006E006F0009024300020100C03209040035
+:104A540000010202010005240010010524010101E6
+:104A64000424020605240600010705820310004001
+:104A740009040100020A00000007050302400000C7
+:104A8400070584024000000016035500530042004D
+:104A94002000530065007200690061006C00000092
+:104AA400040309040C0300000000000000000000DF
+:104AB40000000000000000000000000000000000F2
+:104AC40000000000FC8AFF1F648BFF1FCC8BFF1FBC
+:104AD40000000000000000000000000000000000D2
+:104AE40000000000000000000000000000000000C2
+:104AF40000000000000000000000000000000000B2
+:104B040000000000000000000000000000000000A1
+:104B14000000000000000000000000000000000091
+:104B24000000000000000000000000000000000081
+:104B34000000000000000000000000000000000071
+:104B44000000000000000000000000000000000061
+:104B54000000000000000000000000000000000051
+:104B64000000000000000000010000000000000040
+:104B74000E33CDAB34126DE6ECDE05000B00000005
+:104B84000000000000000000000000000000000021
+:104B94000000000000000000000000000000000011
+:104BA4000000000000000000000000000000000001
+:104BB40000000000000000000000000000000000F1
+:104BC40000000000000000000000000000000000E1
+:104BD40000000000000000000000000000000000D1
+:104BE40000000000000000000000000000000000C1
+:104BF40000000000000000000000000000000000B1
+:104C040000000000000000000000000000000000A0
+:104C14000000000000000000000000000000000090
+:104C24000000000000000000000000000000000080
+:104C34000000000000000000000000000000000070
+:104C44000000000000000000000000000000000060
+:104C54000000000000000000000000000000000050
+:104C64000000000000000000000000000000000040
+:104C74000000000000000000000000000000000030
+:104C84000000000000000000000000000000000020
+:104C94000000000000000000000000000000000010
+:104CA4000000000000000000000000000000000000
+:104CB40000000000000000000000000000000000F0
+:104CC40000000000000000000000000000000000E0
+:104CD40000000000000000000000000000000000D0
+:104CE40000000000000000000000000000000000C0
+:104CF40000000000000000000000000000000000B0
+:104D0400000000000000000000000000000000009F
+:104D1400000000000000000000000000000000008F
+:104D2400000000000000000000000000000000007F
+:104D3400000000000000000000000000000000006F
+:104D4400000000000000000000000000000000005F
+:104D5400000000000000000000000000000000004F
+:104D6400000000000000000000000000000000003F
+:104D7400000000000000000000000000000000002F
+:104D8400000000000000000000000000000000001F
+:104D9400000000000000000000000000000000000F
+:104DA40000000000000000000000000000000000FF
+:104DB40000000000000000000000000000000000EF
+:104DC40000000000000000000000000000000000DF
+:104DD40000000000000000000000000000000000CF
+:104DE40000000000000000000000000000000000BF
+:104DF40000000000000000000000000000000000AF
+:104E0400000000000000000000000000000000009E
+:104E1400000000000000000000000000000000008E
+:104E2400000000000000000000000000000000007E
+:104E3400000000000000000000000000000000006E
+:104E4400000000000000000000000000000000005E
+:104E5400000000000000000000000000000000004E
+:104E6400000000000000000000000000000000003E
+:104E7400000000000000000000000000000000002E
+:104E8400000000000000000000000000000000001E
+:104E9400000000000000000000000000000000000E
+:104EA40000000000000000000000000000000000FE
+:104EB40000000000000000000000000000000000EE
+:104EC40000000000000000000000000000000000DE
+:104ED40000000000000000000000000000000000CE
+:104EE40000000000000000001088FF1F0000000008
+:104EF400000000003C8CFF1F3C8CFF1F448CFF1FF4
+:104F0400448CFF1F4C8CFF1F4C8CFF1F548CFF1FC5
+:104F1400548CFF1F5C8CFF1F5C8CFF1F648CFF1F75
+:104F2400648CFF1F6C8CFF1F6C8CFF1F748CFF1F25
+:104F3400748CFF1F7C8CFF1F7C8CFF1F848CFF1FD5
+:104F4400848CFF1F8C8CFF1F8C8CFF1F948CFF1F85
+:104F5400948CFF1F9C8CFF1F9C8CFF1FA48CFF1F35
+:104F6400A48CFF1FAC8CFF1FAC8CFF1FB48CFF1FE5
+:104F7400B48CFF1FBC8CFF1FBC8CFF1FC48CFF1F95
+:104F8400C48CFF1FCC8CFF1FCC8CFF1FD48CFF1F45
+:104F9400D48CFF1FDC8CFF1FDC8CFF1FE48CFF1FF5
+:104FA400E48CFF1FEC8CFF1FEC8CFF1FF48CFF1FA5
+:104FB400F48CFF1FFC8CFF1FFC8CFF1F048DFF1F54
+:104FC400048DFF1F0C8DFF1F0C8DFF1F148DFF1F01
+:104FD400148DFF1F1C8DFF1F1C8DFF1F248DFF1FB1
+:104FE400248DFF1F2C8DFF1F2C8DFF1F348DFF1F61
+:104FF400348DFF1F3C8DFF1F3C8DFF1F448DFF1F11
+:10500400448DFF1F4C8DFF1F4C8DFF1F548DFF1FC0
+:10501400548DFF1F5C8DFF1F5C8DFF1F648DFF1F70
+:10502400648DFF1F6C8DFF1F6C8DFF1F748DFF1F20
+:10503400748DFF1F7C8DFF1F7C8DFF1F848DFF1FD0
+:10504400848DFF1F8C8DFF1F8C8DFF1F948DFF1F80
+:10505400948DFF1F9C8DFF1F9C8DFF1FA48DFF1F30
+:10506400A48DFF1FAC8DFF1FAC8DFF1FB48DFF1FE0
+:10507400B48DFF1FBC8DFF1FBC8DFF1FC48DFF1F90
+:10508400C48DFF1FCC8DFF1FCC8DFF1FD48DFF1F40
+:10509400D48DFF1FDC8DFF1FDC8DFF1FE48DFF1FF0
+:1050A400E48DFF1FEC8DFF1FEC8DFF1FF48DFF1FA0
+:1050B400F48DFF1FFC8DFF1FFC8DFF1F048EFF1F4F
+:1050C400048EFF1F0C8EFF1F0C8EFF1F148EFF1FFC
+:1050D400148EFF1F1C8EFF1F1C8EFF1F248EFF1FAC
+:1050E400248EFF1F2C8EFF1F2C8EFF1F348EFF1F5C
+:1050F400348EFF1F3C8EFF1F3C8EFF1F448EFF1F0C
+:10510400448EFF1F4C8EFF1F4C8EFF1F548EFF1FBB
+:10511400548EFF1F5C8EFF1F5C8EFF1F648EFF1F6B
+:10512400648EFF1F6C8EFF1F6C8EFF1F748EFF1F1B
+:10513400748EFF1F7C8EFF1F7C8EFF1F848EFF1FCB
+:10514400848EFF1F8C8EFF1F8C8EFF1F948EFF1F7B
+:10515400948EFF1F9C8EFF1F9C8EFF1FA48EFF1F2B
+:10516400A48EFF1FAC8EFF1FAC8EFF1FB48EFF1FDB
+:10517400B48EFF1FBC8EFF1FBC8EFF1FC48EFF1F8B
+:10518400C48EFF1FCC8EFF1FCC8EFF1FD48EFF1F3B
+:10519400D48EFF1FDC8EFF1FDC8EFF1FE48EFF1FEB
+:1051A400E48EFF1FEC8EFF1FEC8EFF1FF48EFF1F9B
+:1051B400F48EFF1FFC8EFF1FFC8EFF1F048FFF1F4A
+:1051C400048FFF1F0C8FFF1F0C8FFF1F148FFF1FF7
+:1051D400148FFF1F1C8FFF1F1C8FFF1F248FFF1FA7
+:1051E400248FFF1F2C8FFF1F2C8FFF1F348FFF1F57
+:1051F400348FFF1F3C8FFF1F3C8FFF1F448FFF1F07
+:10520400448FFF1F4C8FFF1F4C8FFF1F548FFF1FB6
+:10521400548FFF1F5C8FFF1F5C8FFF1F648FFF1F66
+:10522400648FFF1F6C8FFF1F6C8FFF1F748FFF1F16
+:10523400748FFF1F7C8FFF1F7C8FFF1F848FFF1FC6
+:10524400848FFF1F8C8FFF1F8C8FFF1F948FFF1F76
+:10525400948FFF1F9C8FFF1F9C8FFF1FA48FFF1F26
+:10526400A48FFF1FAC8FFF1FAC8FFF1FB48FFF1FD6
+:10527400B48FFF1FBC8FFF1FBC8FFF1FC48FFF1F86
+:10528400C48FFF1FCC8FFF1FCC8FFF1FD48FFF1F36
+:10529400D48FFF1FDC8FFF1FDC8FFF1FE48FFF1FE6
+:1052A400E48FFF1FEC8FFF1FEC8FFF1FF48FFF1F96
+:1052B400F48FFF1FFC8FFF1FFC8FFF1F0490FF1F45
+:1052C4000490FF1F0C90FF1F0C90FF1F1490FF1FF2
+:1052D4001490FF1F1C90FF1F1C90FF1F2490FF1FA2
+:1052E4002490FF1F2C90FF1F2C90FF1F3490FF1F52
+:0C52F4003490FF1F00000200FFFFFFFFCE
+:00000001FF
diff --git a/TestSHA256/.pio/build/Teensy_SHA/lib1ac/DFRobot_ID809/DFRobot_ID809.cpp.o b/TestSHA256/.pio/build/Teensy_SHA/lib1ac/DFRobot_ID809/DFRobot_ID809.cpp.o
new file mode 100644
index 0000000000000000000000000000000000000000..cf8818abf118d25a0a9f4cdfef2d69fbda73d867
GIT binary patch
literal 20752
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
VWvJwXEevc~6=Odp!$pyJ{|krq;0OQ!

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/Teensy_SHA/lib1ac/libDFRobot_ID809.a b/TestSHA256/.pio/build/Teensy_SHA/lib1ac/libDFRobot_ID809.a
new file mode 100644
index 0000000000000000000000000000000000000000..4462c797bcaca97cec6e3e3ca7722867bce58b17
GIT binary patch
literal 23306
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

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/Teensy_SHA/lib516/SHA256/sha256.c.o b/TestSHA256/.pio/build/Teensy_SHA/lib516/SHA256/sha256.c.o
new file mode 100644
index 0000000000000000000000000000000000000000..81fcf553fca2795ad52a5cc186287069143aef9b
GIT binary patch
literal 2612
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

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/Teensy_SHA/lib516/libSHA256.a b/TestSHA256/.pio/build/Teensy_SHA/lib516/libSHA256.a
new file mode 100644
index 0000000000000000000000000000000000000000..34ce9f99074f606cdcc5e3e6ebcfdfdc8d58c97e
GIT binary patch
literal 2816
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

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/Teensy_SHA/lib537/DFRobot_ID809/DFRobot_ID809.cpp.o b/TestSHA256/.pio/build/Teensy_SHA/lib537/DFRobot_ID809/DFRobot_ID809.cpp.o
new file mode 100644
index 0000000000000000000000000000000000000000..cf8818abf118d25a0a9f4cdfef2d69fbda73d867
GIT binary patch
literal 20752
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
VWvJwXEevc~6=Odp!$pyJ{|krq;0OQ!

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/Teensy_SHA/lib537/libDFRobot_ID809.a b/TestSHA256/.pio/build/Teensy_SHA/lib537/libDFRobot_ID809.a
new file mode 100644
index 0000000000000000000000000000000000000000..6047b67b9fd81852567e15108f9ab25a44ce4182
GIT binary patch
literal 23306
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

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/Teensy_SHA/lib6bd/SHA256/sha256.c.o b/TestSHA256/.pio/build/Teensy_SHA/lib6bd/SHA256/sha256.c.o
new file mode 100644
index 0000000000000000000000000000000000000000..81fcf553fca2795ad52a5cc186287069143aef9b
GIT binary patch
literal 2612
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

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/Teensy_SHA/lib6bd/libSHA256.a b/TestSHA256/.pio/build/Teensy_SHA/lib6bd/libSHA256.a
new file mode 100644
index 0000000000000000000000000000000000000000..b519e684ce7aad6ec8ac45e1dec1d1451dfca5ef
GIT binary patch
literal 2816
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

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/Teensy_SHA/libFrameworkArduino.a b/TestSHA256/.pio/build/Teensy_SHA/libFrameworkArduino.a
new file mode 100644
index 0000000000000000000000000000000000000000..fb5701eab1ac7f2e05015bc644bcfde363dd935f
GIT binary patch
literal 235286
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

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/Teensy_SHA/libbc6/Wire/Wire.cpp.o b/TestSHA256/.pio/build/Teensy_SHA/libbc6/Wire/Wire.cpp.o
new file mode 100644
index 0000000000000000000000000000000000000000..d9dde844fc7c415cdc2784f85d61592c9bf3db5e
GIT binary patch
literal 764
zcma)3%}T>S5T0%NV+BD)@egFZXbLtaB`wrjskIkdL=+F=VUw;j&~(dg6g~M8zJagg
zi}(aO+hj5IAP&ra^S}G;y!I~62_ayFfDJz$z+38+{CR;5RVV}WyWLZ2_lGz1T8N3F
z4?@z;)qwWmfR9FeL@%WXxl%%^8f`kh<I#rewcNJXrncl0&J?fFJ8U`OSxdcH4<wt0
zV=DPmq#`k;4d3<Kt$XOWcsJuLh=3fTS?UUz@aOu#hw@5gP%W$%H^?U0vbM<%*(Li0
z!^L2pPZ2)9OkAV2z*hT<?G{GzVnH$QVzvZu8%gejvl)P+UgCrWh>1*bY%F|o0?vpf
z44gnIa6%Ese2Ovr2ZtqzjDp96tA+7@I(wMa+;AgvNq3Yv2!_c4+Pcm#`CVuJ=Ll<-
z{!w?F&C`3)qUVXZl^%MY)+Q?6iQkgSJA!8%M04*N+U9LKJ;X#$8=06ojfRs>eW2>$
Y`pp$oy_r?iDr$b-88$9s%!rxy4Q;1Q6951J

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/Teensy_SHA/libbc6/Wire/WireIMXRT.cpp.o b/TestSHA256/.pio/build/Teensy_SHA/libbc6/Wire/WireIMXRT.cpp.o
new file mode 100644
index 0000000000000000000000000000000000000000..05f7e671ab2509eb84aad8106a2b1db3ef8f1b54
GIT binary patch
literal 768
zcma)3NlU{(6n@imu?KNMaRV7I+JcQqNelH>YAu2hsTBqBkY%KSrc-93=*hp~-M{1?
z@fYZuCWEa9@xhz#?aRE^?)fPp1T+z-z>fy-mMR5j8c=~U6ajjj&M~d@F0Sc-^O2+v
zT+nvkrQO(PVaP&yDR{u7<U&?y!*ooW)-Ahfwd@wH2sUD#WL0{HDMu_zsWoc8@W#QA
z3icGqh>vOAv7A=(9@-Z6_L%2KK=x5Abht>^bIo<2xL9(_xz+p{StlFDCfOp}WH+aG
z(Kx$L9zMUcU7<0zt<vYy4YbUX0r^=Ky#;`qNU$^awm&d~$ppZZFLC1eh>1vXs3n{`
z0W<Ux4@_T5FasXPY>YPi4AV;z5&4e^lXE@(Qg+a(_QR`8DZNvsAn0xOP*!nzo8NKz
zj}9<q;U95_Sv_?dMXDa3O6jBODQ+NRPyCgX-VtoAAnLv=DC^mj`wAUhC1j-I6zZLn
c>jPO8S2LH8)peGU%gD3!PB3u^ZJKnwZ_lz$wEzGB

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/Teensy_SHA/libbc6/Wire/WireKinetis.cpp.o b/TestSHA256/.pio/build/Teensy_SHA/libbc6/Wire/WireKinetis.cpp.o
new file mode 100644
index 0000000000000000000000000000000000000000..8aa1a37f5f11f502d6032c47c3424a847e5ac809
GIT binary patch
literal 9956
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

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/Teensy_SHA/libbc6/Wire/utility/twi.c.o b/TestSHA256/.pio/build/Teensy_SHA/libbc6/Wire/utility/twi.c.o
new file mode 100644
index 0000000000000000000000000000000000000000..cfea50bad493ed0cc6ab88c0b77377156ffbd183
GIT binary patch
literal 760
zcma)3%}N6?5T11VV-JFg;vY!7=oaj{E!#r9m0Ekyiin=X!)`ayg|?9-{+)aU-@#Y%
zMSKFC={C6aAP!8v`Q|T~%xm}TgfRwI7`X7m0Nzqk2&M@xl%WXF>vWE|+dIGJS5l5N
zzmtl$FZ;YZjzk=bm|rM45L!#6E4<+aUX9oNTGMaUTHIA)Btk7J{02)7#jK>-s75NB
z42E2Z$3!P`!s~$_w3@fj_VMmegi!))56wbHDkGk&{Q!!KrG7cLl3!(OY~9&ln{12i
z<m@aKv-9NP^UL}Pow;d=&zC#s$%+H{EX8O6z&s`10Kn5PV-rS*Mx{8k7QWYj7l$SU
zFVY&kfgF#;1bz4kUTBO;q6Z`NT<^cgHU?=f+{RSW{mcl0onjYl%Cl4a&a;2Bk2wqf
z$UB(zqn(gYKRLD1gZhy+Q1Q<D)C=&AM$HmLd+##Z_H7hC#Xy&gnb<r+I}?RIP^me+
Vxr9nvSwbzNX8RpuA;qoOe&3=mOXdIo

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/Teensy_SHA/libbc6/libWire.a b/TestSHA256/.pio/build/Teensy_SHA/libbc6/libWire.a
new file mode 100644
index 0000000000000000000000000000000000000000..a3601ad29ab4216640e3cdd5ee2c03d59bdadcd1
GIT binary patch
literal 13350
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
RH9-ESK2r*=l@L1K{{;^DhV1|V

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/Teensy_SHA/src/main.cpp.o b/TestSHA256/.pio/build/Teensy_SHA/src/main.cpp.o
new file mode 100644
index 0000000000000000000000000000000000000000..407e6a091a3d0c831d5e22ae725616ccafc1761a
GIT binary patch
literal 5172
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
J7wG86`!|1hmy-Yh

literal 0
HcmV?d00001

diff --git a/TestSHA256/.pio/build/project.checksum b/TestSHA256/.pio/build/project.checksum
new file mode 100644
index 0000000..5fa6083
--- /dev/null
+++ b/TestSHA256/.pio/build/project.checksum
@@ -0,0 +1 @@
+d26dc5aa4cb3393323704e8f9a79fdf21acb95b1
\ No newline at end of file
diff --git a/TestSHA256/.pio/libdeps/Teensy_SHA/DFRobot_ID809/.piopm b/TestSHA256/.pio/libdeps/Teensy_SHA/DFRobot_ID809/.piopm
new file mode 100644
index 0000000..6d0b735
--- /dev/null
+++ b/TestSHA256/.pio/libdeps/Teensy_SHA/DFRobot_ID809/.piopm
@@ -0,0 +1 @@
+{"type": "library", "name": "DFRobot_ID809", "version": "0.0.0+20220728181242", "spec": {"owner": null, "id": null, "name": "DFRobot_ID809", "requirements": null, "uri": "file://lib/DFRobot_ID809"}}
\ No newline at end of file
diff --git a/TestSHA256/.pio/libdeps/Teensy_SHA/DFRobot_ID809/DFRobot_ID809.cpp b/TestSHA256/.pio/libdeps/Teensy_SHA/DFRobot_ID809/DFRobot_ID809.cpp
new file mode 100644
index 0000000..ddf2e99
--- /dev/null
+++ b/TestSHA256/.pio/libdeps/Teensy_SHA/DFRobot_ID809/DFRobot_ID809.cpp
@@ -0,0 +1,1089 @@
+
+/*!
+ * @file DFRobot_ID809.cpp
+ * @brief Define the basic structure of DFRobot_ID809 class and the implementation of underlying methods 
+ * @copyright   Copyright (c) 2010 DFRobot Co.Ltd (http://www.dfrobot.com)
+ * @licence     The MIT License (MIT)
+ * @author [Eddard](eddard.liu@dfrobot.com)
+ * @version  V1.0
+ * @date  2020-03-19
+ * @get from https://www.dfrobot.com
+ * @url https://github.com/cdjq/DFRobot_ID809
+ */
+
+#include <DFRobot_ID809.h>
+#include <Arduino.h>
+#include <string.h>
+#include <stdio.h>
+Stream *dbg=NULL;
+
+DFRobot_ID809::DFRobot_ID809()
+  :s(NULL){
+        
+}
+
+DFRobot_ID809::~DFRobot_ID809(){
+        
+}
+
+bool DFRobot_ID809::begin(Stream &s_){
+    s = &s_;
+	String str = getDeviceInfo();
+  //Serial.println(str[str.length()-1]);
+  if(str[str.length()-1] == '4'){
+	    
+	   FINGERPRINT_CAPACITY   =    80 ;
+	  
+	  //Serial.println(str[str.length()-1]);
+  }else if(str[str.length()-1] == '3'){
+	  //Serial.println(str[str.length()-1]);
+	   FINGERPRINT_CAPACITY  =   200 ;
+	  
+  }
+	
+    if(s == NULL){
+        return false;
+    }
+    return true;
+}
+
+bool DFRobot_ID809::isConnected(){
+    pCmdPacketHeader_t header = pack(CMD_TYPE, CMD_TEST_CONNECTION, NULL, 0);
+    sendPacket(header);
+    free(header);
+    uint8_t ret = responsePayload(buf);
+    LDBG("ret=");LDBG(ret);
+    if(ret == ERR_SUCCESS){
+        return true;
+    }else{
+        return false;
+    }
+}
+
+uint8_t DFRobot_ID809::setDeviceID(uint8_t deviceID){
+    uint8_t data[5] = {0};    //data:1bytes Parameter Type+4bytes Parameter Value
+    data[1] = deviceID;
+    uint8_t ret = setParam(data);
+    return ret;
+}
+
+uint8_t DFRobot_ID809::setSecurityLevel(uint8_t securityLevel){
+    uint8_t data[5] = {0};
+    data[0] = 1;
+    data[1] = securityLevel;
+    uint8_t ret = setParam(data);
+    return ret;
+}
+
+uint8_t DFRobot_ID809::setDuplicationCheck(uint8_t duplicationCheck){
+    uint8_t data[5] = {0};
+    data[0] = 2;
+    data[1] = duplicationCheck;
+    uint8_t ret = setParam(data);
+    return ret;
+}
+
+uint8_t DFRobot_ID809::setBaudrate(eDeviceBaudrate_t baudrate){
+    uint8_t data[5] = {0};
+    data[0] = 3;
+    data[1] = baudrate;
+    uint8_t ret = setParam(data);
+    return ret;
+}
+
+uint8_t DFRobot_ID809::setSelfLearn(uint8_t selfLearn){
+    uint8_t data[5] = {0};
+    data[0] = 4;
+    data[1] = selfLearn;
+    uint8_t ret = setParam(data);
+    return ret;
+}
+
+uint8_t DFRobot_ID809::getDeviceID(){
+    uint8_t data[1];  //data:1byte Parameter Type
+    data[0] = 0;
+    uint8_t ret = getParam(data);
+    return ret;
+}
+
+uint8_t DFRobot_ID809::getSecurityLevel(){
+    uint8_t data[1];
+    data[0] = 1;
+    uint8_t ret = getParam(data);
+    return ret;
+}
+
+uint8_t DFRobot_ID809::getDuplicationCheck(){
+    uint8_t data[1];
+    data[0] = 2;
+    uint8_t ret = getParam(data);
+    return ret;
+}
+
+uint8_t DFRobot_ID809::getBaudrate(){
+    uint8_t data[1];
+    data[0] = 3;
+    uint8_t ret = getParam(data);
+    return ret;
+}
+
+uint8_t DFRobot_ID809::getSelfLearn(){
+    uint8_t data[1];
+    data[0] = 4;
+    uint8_t ret = getParam(data);
+    return ret;
+}
+
+String DFRobot_ID809::getDeviceInfo(){
+    char *data;
+    uint8_t result;
+    pCmdPacketHeader_t header = pack(CMD_TYPE, CMD_DEVICE_INFO, NULL, 0);
+    sendPacket(header);
+    free(header);
+    result = responsePayload(buf);
+    LDBG("result=");LDBG(result);
+    if(result != ERR_SUCCESS){
+        return "";
+    }
+    uint16_t dataLen = buf[0]+(buf[1]<<8)+1;
+    if((data = (char *)malloc(dataLen)) == NULL){
+        LDBG("no memory!!!\r\n");
+        while(1);
+    }
+    data[dataLen] = 0;
+    result = responsePayload(data);
+    LDBG("result=");LDBG(result);
+    String ret = String(data);
+    free(data);
+    return ret;
+}
+
+uint8_t DFRobot_ID809::setModuleSN(const char* SN){
+    char data[2];
+    data[0] = MODULE_SN_SIZE;
+    if(strlen(SN) > MODULE_SN_SIZE){
+        LDBG("The serial number exceeds 15 characters");
+        return ERR_ID809;
+    }
+    pCmdPacketHeader_t header = pack(CMD_TYPE, CMD_SET_MODULE_SN, data, 2);
+    sendPacket(header);
+    free(header);
+    uint8_t ret = responsePayload(buf);
+    LDBG("ret=");LDBG(ret);
+    if(ret != ERR_SUCCESS){
+        return ERR_ID809;
+    }
+    header = pack(DATA_TYPE, CMD_SET_MODULE_SN, SN, MODULE_SN_SIZE);
+    sendPacket(header);
+    free(header);
+    ret = responsePayload(buf);
+    LDBG("ret=");LDBG(ret);
+    if(ret == ERR_SUCCESS){
+        ret = buf[0];
+    }
+    return ret;
+}
+
+uint8_t DFRobot_ID809::getTemplate(uint16_t id,uint8_t * temp){
+  char data[4];
+  data[0] = id;
+  data[1] = 0;
+  data[2] = 0;
+  data[3] = 0;
+  pCmdPacketHeader_t header = pack(CMD_TYPE, CMD_LOAD_CHAR, data, 4);
+  sendPacket(header);
+  free(header);
+  
+  uint8_t ret = responsePayload(buf);
+  LDBG("ret=");
+  LDBG(ret);
+  if(ret != ERR_SUCCESS) {
+    return ERR_ID809;
+  }
+  data[0] = 0;
+  data[1] = 0;
+  header = pack(CMD_TYPE, CMD_UP_CHAR, data, 2);
+  sendPacket(header);
+  free(header);
+  
+  ret = responsePayload(buf);
+  LDBG("ret=");
+  LDBG(ret);
+  if(ret == ERR_SUCCESS) {
+    ret = buf[0];
+  }
+  ret = responsePayload(temp);
+
+  return ret;
+}
+
+uint8_t DFRobot_ID809::downLoadTemplate(uint16_t id,uint8_t * temp){
+
+  char data[4];
+  data[0] = 0xf2;
+  data[1] = 3;
+  pCmdPacketHeader_t header = pack(CMD_TYPE, CMD_DOWN_CHAR, data, 2);
+  sendPacket(header);
+  free(header);
+
+  uint8_t ret = responsePayload(buf);
+  LDBG("ret=");
+  LDBG(ret);
+  if(ret != ERR_SUCCESS) {
+    return ERR_ID809;
+  }
+  char *tempData= (char *)malloc(0x3f2 +1);
+  tempData[0] = 0;
+  tempData[1] = 0;
+  memcpy(tempData+2,temp,0x3f0);
+  
+
+  header = pack(DATA_TYPE, CMD_DOWN_CHAR, tempData, 0x3f2);
+
+  sendPacket(header);
+
+  free(header);
+  
+  ret = responsePayload(buf);
+  LDBG("ret=");
+  LDBG(ret);
+  if(ret == ERR_SUCCESS) {
+    ret = buf[0];
+  }
+  free(tempData);
+  
+
+  return store(id);
+}
+
+uint8_t DFRobot_ID809::contrastTemplate(uint8_t *temp){
+
+  char data[4];
+  data[0] = 0xf2;
+  data[1] = 3;
+  pCmdPacketHeader_t header = pack(CMD_TYPE, CMD_DOWN_CHAR, data, 2);
+  sendPacket(header);
+  free(header);
+
+  uint8_t ret = responsePayload(buf);
+  LDBG("ret=");
+  LDBG(ret);
+  if(ret != ERR_SUCCESS) {
+    return ERR_ID809;
+  }
+  char *tempData= (char *)malloc(0x3f2 +1);
+  tempData[0] = 2;
+  tempData[1] = 0;
+  memcpy(tempData+2,temp,0x3f0);
+  
+
+  header = pack(DATA_TYPE, CMD_DOWN_CHAR, tempData, 0x3f2);
+
+  sendPacket(header);
+
+  free(header);
+  
+  ret = responsePayload(buf);
+  LDBG("ret=");
+  LDBG(ret);
+  if(ret == ERR_SUCCESS) {
+    ret = buf[0];
+  }
+  free(tempData);
+  data[0] = 0;
+  data[1] = 0;
+  data[2] = 2;
+  data[3] = 0;
+  header = pack(CMD_TYPE, CMD_MATCH, data, 4);
+  sendPacket(header);
+  free(header);
+
+  ret = responsePayload(buf);
+  LDBG("ret=");
+  LDBG(ret);
+  if(ret != ERR_SUCCESS) {
+    return ret;
+  }
+  return ret;
+
+}
+uint8_t DFRobot_ID809::getFingerImage(uint8_t *image)
+{
+  pCmdPacketHeader_t header = pack(CMD_TYPE, CMD_GET_IMAGE, NULL, 0);
+  sendPacket(header);
+  free(header);
+
+  uint8_t ret = responsePayload(buf);
+  LDBG("ret=");
+  LDBG(ret);
+  if(ret != ERR_SUCCESS) {
+    return ERR_ID809;
+  }
+  
+  char data[1];
+  data[0] = 0;
+  header = pack(CMD_TYPE, CMD_UP_IMAGE_CODE, data, 1);
+  sendPacket(header);
+  free(header);
+
+  ret = responsePayload(buf);
+  LDBG("ret=");
+  LDBG(ret);
+  if(ret != ERR_SUCCESS) {
+    return ERR_ID809;
+  }
+  char *tempData= (char *)malloc(500 +1);
+  for(uint8_t i=0;i<52;i++){
+
+     ret = responsePayload(tempData);
+     if(i == 51)
+       memcpy(image+i*496,tempData+2,304);
+     else
+       memcpy(image+i*496,tempData+2,496);
+  }
+  free(tempData);
+}
+uint8_t DFRobot_ID809::getQuarterFingerImage(uint8_t *image){
+
+  pCmdPacketHeader_t header = pack(CMD_TYPE, CMD_GET_IMAGE, NULL, 0);
+  sendPacket(header);
+  free(header);
+
+  uint8_t ret = responsePayload(buf);
+  LDBG("ret=");
+  LDBG(ret);
+  if(ret != ERR_SUCCESS) {
+    return ERR_ID809;
+  }
+  
+  char data[1];
+  data[0] = 1;
+  header = pack(CMD_TYPE, CMD_UP_IMAGE_CODE, data, 1);
+  sendPacket(header);
+  free(header);
+
+  ret = responsePayload(buf);
+  LDBG("ret=");
+  LDBG(ret);
+  if(ret != ERR_SUCCESS) {
+    return ERR_ID809;
+  }
+  char *tempData= (char *)malloc(500 +1);
+  for(uint8_t i=0;i<13;i++){
+
+     ret = responsePayload(tempData);
+     if(i == 12)
+       memcpy(image+i*496,tempData+2,448);
+     else
+       memcpy(image+i*496,tempData+2,496);
+  }
+  free(tempData);
+
+}
+uint8_t DFRobot_ID809::downLoadImage(uint16_t id,uint8_t * temp)
+{
+  char data[4];
+  data[0] = 0xa0;
+  data[1] = 0;
+  data[2] = 0xa0;
+  data[3] = 0;
+  pCmdPacketHeader_t header = pack(CMD_TYPE, CMD_DOWN_IMAGE, data, 4);
+  sendPacket(header);
+  free(header);
+
+  uint8_t ret = responsePayload(buf);
+  LDBG("ret=");
+  LDBG(ret);
+  if(ret != ERR_SUCCESS) {
+    return ERR_ID809;
+  }
+  char *tempData= (char *)malloc(500);
+  for(uint8_t i =0 ;i<52;i++){
+     tempData[0] = i;
+	 tempData[1] = 0;
+     if(i == 51){
+       memcpy(tempData+2,temp+i*496,304);
+       header = pack(DATA_TYPE, CMD_DOWN_IMAGE, tempData, 306);
+	 }else{
+       memcpy(tempData+2,temp+i*496,496);
+       header = pack(DATA_TYPE, CMD_DOWN_IMAGE, tempData, 498);
+     }
+     sendPacket(header);
+     
+     free(header);
+     
+     ret = responsePayload(buf);
+     LDBG("ret=");
+     LDBG(ret);
+     if(ret != ERR_SUCCESS) {
+       return ERR_ID809;
+     }
+     
+  }  
+  free(tempData);
+  
+  data[0] = 0;
+  data[1] = 0;
+  header = pack(CMD_TYPE, CMD_GENERATE, data, 2);
+  sendPacket(header);
+  free(header);
+
+  ret = responsePayload(buf);
+  LDBG("ret=");
+  LDBG(ret);
+  if(ret != ERR_SUCCESS) {
+   // return ERR_ID809;
+  }
+  return store(id);
+
+}
+
+uint8_t DFRobot_ID809::receiveImageData(uint8_t * image){
+
+
+
+  uint8_t ret = responsePayload(image);
+  if(ret != ERR_SUCCESS) {
+    return ERR_ID809;
+  }
+
+}
+String DFRobot_ID809::getModuleSN(){
+    char *data;
+    pCmdPacketHeader_t header = pack(CMD_TYPE, CMD_GET_MODULE_SN, NULL, 0);
+    sendPacket(header);
+    free(header);
+    uint8_t result = responsePayload(buf);
+    LDBG("result=");LDBG(result);
+    if(result != ERR_SUCCESS){
+        return "";
+    }
+    uint16_t dataLen = buf[0]+(buf[1]<<8)+1;
+    if((data = (char *)malloc(dataLen)) == NULL){
+        LDBG("no memory!!!\r\n");
+        while(1);
+    }
+    data[dataLen] = 0;
+    result = responsePayload(data);
+    LDBG("result=");LDBG(result);
+    String ret = String(data);
+    free(data);
+    return ret;
+}
+
+uint8_t DFRobot_ID809::ctrlLED(eLEDMode_t mode,eLEDColor_t color,uint8_t blinkCount){
+    char data[4] = {0};
+  if(FINGERPRINT_CAPACITY == 80){
+    data[0] = mode;
+    data[2] = data[1] = color;
+    data[3] = blinkCount;
+  }else{
+	if(mode == 1){
+	  data[0] = 2;
+	} else if(mode == 2){
+		data[0] = 4;
+	} else if(mode == 3){
+	    data[0] = 1;
+	} else if(mode == 4){
+		data[0] = 0;
+	} else if(mode == 5){
+		data[0] = 3;
+	}
+	if(color == eLEDGreen){
+          data[2] = data[1] =  0x84;
+        }else if(color == eLEDRed){
+	  data[2] = data[1] = 0x82;
+	}else if(color == eLEDYellow){
+	  data[2] = data[1] = 0x86;
+	}else if(color == eLEDBlue){
+	  data[2] = data[1] = 0x81;
+	}else if(color == eLEDCyan){
+	  data[2] = data[1] = 0x85;
+	}else if(color == eLEDMagenta){
+	  data[2] = data[1] = 0x83;
+	}else {
+	  data[2] = data[1] = 0x87;
+	}
+  }
+    pCmdPacketHeader_t header = pack(CMD_TYPE, CMD_SLED_CTRL, data, 4);
+    sendPacket(header);
+    free(header);
+    uint8_t ret = responsePayload(buf);
+    LDBG("ret=");LDBG(ret);
+    return ret;
+}
+
+uint8_t DFRobot_ID809::detectFinger(){
+    pCmdPacketHeader_t header = pack(CMD_TYPE, CMD_FINGER_DETECT, NULL, 0);
+    sendPacket(header);
+    free(header);
+    uint8_t ret = responsePayload(buf);
+    LDBG("ret=");LDBG(ret);
+    if(ret == ERR_SUCCESS){
+        ret = buf[0];
+    }
+    return ret;
+}
+
+uint8_t DFRobot_ID809::getEmptyID(){
+    char data[4] = {0};
+    data[0] = 1;
+    data[2] = FINGERPRINT_CAPACITY;     //80 fingerprints at most, default to full range 
+    pCmdPacketHeader_t header = pack(CMD_TYPE, CMD_GET_EMPTY_ID, data, 4);
+    sendPacket(header);
+    free(header);
+    uint8_t ret = responsePayload(buf);
+    LDBG("ret=");LDBG(ret);
+    if(ret == ERR_SUCCESS){
+        ret = buf[0];
+    }
+    return ret;
+}
+
+uint8_t DFRobot_ID809::getStatusID(uint8_t ID){
+    char data[2] = {0};
+    data[0] = ID;
+    pCmdPacketHeader_t header = pack(CMD_TYPE, CMD_GET_STATUS, data, 2);
+    sendPacket(header);
+    free(header);
+    uint8_t ret = responsePayload(buf);
+    LDBG("ret=");LDBG(ret);
+    if(ret == ERR_SUCCESS){
+        ret = buf[0];
+    }
+    return ret;
+}
+
+uint8_t DFRobot_ID809::getEnrollCount(){
+    char data[4] = {0};
+    data[0] = 1;
+    data[2] = FINGERPRINT_CAPACITY;
+    pCmdPacketHeader_t header = pack(CMD_TYPE, CMD_GET_ENROLL_COUNT, data, 4);
+    sendPacket(header);
+    free(header);
+    uint8_t ret = responsePayload(buf);
+    LDBG("ret=");LDBG(ret);
+    if(ret == ERR_SUCCESS){
+        ret = buf[0];
+    }
+    return ret;
+}
+
+#define  getID(A, V)  (A[0 + V/8] & (0x01 << (V & 0x07)))
+uint8_t DFRobot_ID809::getEnrolledIDList(uint8_t* list)
+{
+    char *data;
+    uint8_t i = 0;
+    pCmdPacketHeader_t header = pack(CMD_TYPE, CMD_GET_ENROLLED_ID_LIST, NULL, 0);
+    sendPacket(header);
+    free(header);
+    uint8_t ret = responsePayload(buf);
+    LDBG("ret=");LDBG(ret);
+    uint16_t dataLen = buf[0]+(buf[1]<<8);
+    if((data = (char *)malloc(dataLen)) == NULL){
+        LDBG("no memory!!!\r\n");
+        while(1);
+    }
+    ret = responsePayload(data);
+    LDBG("ret=");LDBG(ret);
+    if(ret != ERR_SUCCESS){
+        ret = ERR_ID809;
+    }else{
+        for(uint16_t j = 0; j < (dataLen*8); j++){
+            if(getID(data, j) != 0){
+                list[i] = j;
+                i++;
+            }
+        }
+    }
+    free(data);
+    return ret;
+}
+
+uint8_t DFRobot_ID809::storeFingerprint(uint8_t ID){
+    char data[4] = {0};
+    uint8_t ret;
+    ret = merge();
+    LDBG("ret=");LDBG(ret);
+    if(ret != ERR_SUCCESS){
+        return ERR_ID809;
+    }
+    _number = 0;
+    data[0] = ID;
+    pCmdPacketHeader_t header = pack(CMD_TYPE, CMD_STORE_CHAR, data, 4);
+    sendPacket(header);
+    free(header);
+    ret = responsePayload(buf);
+    LDBG("ret=");LDBG(ret);
+    return ret;
+    
+}
+uint8_t DFRobot_ID809::store(uint8_t ID){
+
+
+  char data[4] = {0};
+  uint8_t ret;
+  LDBG("ret=");
+  LDBG(ret);
+  data[0] = ID;
+  pCmdPacketHeader_t header = pack(CMD_TYPE, CMD_STORE_CHAR, data, 4);
+  sendPacket(header);
+  free(header);
+  ret = responsePayload(buf);
+  LDBG("ret=");
+  LDBG(ret);
+  return ret;
+}
+uint8_t DFRobot_ID809::delFingerprint(uint8_t ID)
+{
+  char data[4] = {0};
+  if(ID == DELALL) {
+    data[0] = 1;
+    data[2] = FINGERPRINT_CAPACITY;
+  } else {
+    data[0] = data[2] = ID;
+  }
+  pCmdPacketHeader_t header = pack(CMD_TYPE, CMD_DEL_CHAR, data, 4);
+  sendPacket(header);
+  free(header);
+  uint8_t ret = responsePayload(buf);
+  LDBG("ret=");
+  LDBG(ret);
+  return ret;
+}
+
+uint8_t DFRobot_ID809::search(){
+    if(_state == 1){
+        char data[6] = {0};
+        data[2] = 1;
+        data[4] = FINGERPRINT_CAPACITY;
+        _number = 0;
+        pCmdPacketHeader_t header = pack(CMD_TYPE, CMD_SEARCH, data, 6);
+        sendPacket(header);
+        free(header);
+        uint8_t ret = responsePayload(buf);
+        LDBG("ret=");LDBG(ret);
+        if(ret == ERR_SUCCESS){
+            ret = buf[0];
+        }else{
+            ret = 0;
+        }
+        return ret;
+    }
+    return 0;
+}
+
+uint8_t DFRobot_ID809::verify(uint8_t ID){
+    if(_state == 1){
+        char data[4] = {0};
+        data[0] = ID;
+        _number = 0;
+        pCmdPacketHeader_t header = pack(CMD_TYPE, CMD_VERIFY, data, 4);
+        sendPacket(header);
+        free(header);
+        uint8_t ret = responsePayload(buf);
+        LDBG("ret=");LDBG(ret);
+        if(ret == ERR_SUCCESS){
+            ret = buf[0];
+        }else{
+            ret = 0;
+        }
+        return ret;
+    }
+    return 0;
+}
+
+uint8_t DFRobot_ID809::match(uint8_t RamBufferID0, uint8_t RamBufferID1){
+    char data[4] = {0};
+    data[0] = RamBufferID0;
+    data[2] = RamBufferID1;
+    pCmdPacketHeader_t header = pack(CMD_TYPE, CMD_MATCH, data, 4);
+    sendPacket(header);
+    free(header);
+    uint8_t ret = responsePayload(buf);
+    LDBG("ret=");LDBG(ret);
+    if(ret == ERR_SUCCESS){
+        ret = buf[0];
+    }else{
+        ret = 0;
+    }
+    return ret;
+}
+
+uint8_t DFRobot_ID809::getBrokenQuantity(){
+    char data[4] = {0};
+    data[0] = 1;
+    data[2] = FINGERPRINT_CAPACITY;
+    pCmdPacketHeader_t header = pack(CMD_TYPE, CMD_GET_BROKEN_ID, data, 4);
+    sendPacket(header);
+    free(header);
+    uint8_t ret = responsePayload(buf);
+    LDBG("ret=");LDBG(ret);
+    if(ret == ERR_SUCCESS){
+        ret = buf[0];
+    }
+    return ret;
+}
+
+uint8_t DFRobot_ID809::getBrokenID(){
+    char data[4] = {0};
+    data[0] = 1;
+    data[2] = FINGERPRINT_CAPACITY;
+    pCmdPacketHeader_t header = pack(CMD_TYPE, CMD_GET_BROKEN_ID, data, 4);
+    sendPacket(header);
+    free(header);
+    uint8_t ret = responsePayload(buf);
+    LDBG("ret=");LDBG(ret);
+    if(ret == ERR_SUCCESS){
+        ret = buf[2];
+    }
+    return ret;
+}
+
+uint8_t DFRobot_ID809::loadFingerprint(uint8_t ID, uint8_t RamBufferID){
+    char data[4] = {0};
+    data[0] = ID;
+    data[2] = RamBufferID;
+    pCmdPacketHeader_t header = pack(CMD_TYPE, CMD_LOAD_CHAR, data, 4);
+    sendPacket(header);
+    free(header);
+    uint8_t ret = responsePayload(buf);
+    LDBG("ret=");LDBG(ret);
+    return ret;
+}
+
+uint8_t DFRobot_ID809::enterStandbyState(){
+    pCmdPacketHeader_t header = pack(CMD_TYPE, CMD_ENTER_STANDBY_STATE, NULL, 0);
+    sendPacket(header);
+    free(header);
+    uint8_t ret = responsePayload(buf);
+    LDBG("ret=");LDBG(ret);
+    return ret;
+}
+
+uint8_t DFRobot_ID809::setParam(uint8_t* data){
+    pCmdPacketHeader_t header = pack(CMD_TYPE, CMD_SET_PARAM, (const char *)data, 5);
+    sendPacket(header);
+    free(header);
+    uint8_t ret = responsePayload(buf);
+    LDBG("ret=");LDBG(ret);
+    return ret;
+}
+
+uint8_t DFRobot_ID809::getParam(uint8_t* data){
+    pCmdPacketHeader_t header = pack(CMD_TYPE, CMD_GET_PARAM, (const char *)data, 1);
+    sendPacket(header);
+    free(header);
+    uint8_t ret = responsePayload(buf);
+    LDBG("ret=");LDBG(ret);
+    if(ret == ERR_SUCCESS){
+        ret = buf[0];
+    }
+    return ret;
+}
+
+uint8_t DFRobot_ID809::getImage(){
+    pCmdPacketHeader_t header = pack(CMD_TYPE, CMD_GET_IMAGE, NULL, 0);
+    sendPacket(header);
+    free(header);
+    uint8_t ret = responsePayload(buf);
+    LDBG("ret=");LDBG(ret);
+    return ret;
+}
+
+uint8_t DFRobot_ID809::collectionFingerprint(uint16_t timeout,int ramNumber){  //Collect fingerprint 
+    uint16_t i = 0;
+    uint8_t ret;
+   if(ramNumber == -1){
+     if(_number > 2){
+         _error = eErrorGatherOut;
+         LDBG("Exceed upper limit of acquisition times ");
+         return ERR_ID809;
+     }
+   }
+    while(!detectFinger()){
+        if(timeout != 0){
+            delay(10);
+            if(++i > timeout*10){
+                _error = eErrorTimeOut;
+                LDBG("Acquisition timeout ");
+                LDBG("ret=");LDBG(ret);
+                _state = 0;
+                return ERR_ID809;
+            }
+       }
+    }
+    ret = getImage();
+    LDBG("ret=");LDBG(ret);
+    if(ret != ERR_SUCCESS){
+        _state = 0;
+        return ERR_ID809;
+    }
+   if(ramNumber != -1){
+     ret = generate(ramNumber);
+   } else{
+     ret = generate(_number);
+   }
+	LDBG("ret=");LDBG(ret);
+    if(ret != ERR_SUCCESS){
+        _state = 0;
+        return ERR_ID809;
+    }
+    _number++;
+    _state = 1;
+    return ret;
+}
+
+uint8_t DFRobot_ID809::generate(uint8_t RamBufferID){
+    char data[2] = {0};
+    data[0] = RamBufferID;
+    pCmdPacketHeader_t header = pack(CMD_TYPE, CMD_GENERATE, (const char *)data, 2);
+    sendPacket(header);
+    free(header);
+    uint8_t ret = responsePayload(buf);
+    LDBG("ret=");LDBG(ret);
+    return ret;
+}
+
+uint8_t DFRobot_ID809::merge(){
+    char data[3] = {0};
+    data[2] = _number;
+    pCmdPacketHeader_t header = pack(CMD_TYPE, CMD_MERGE, data, 3);
+    sendPacket(header);
+    free(header);
+    uint8_t ret = responsePayload(buf);
+    LDBG("ret=");LDBG(ret);
+    return ret;
+}
+
+pCmdPacketHeader_t DFRobot_ID809::pack(uint8_t type, uint16_t cmd, const char *payload, uint16_t len){
+    pCmdPacketHeader_t header;
+    uint16_t cks=0;
+    uint16_t dataLen;
+    if(type == CMD_TYPE){    //Structure of command packet, fixed 26 bytes:10(frame header)+14(data)+2(CKS)
+        if((header = (pCmdPacketHeader_t)malloc(sizeof(sCmdPacketHeader_t)+16+2)) == NULL){
+            return NULL;
+        }
+        header->PREFIX = CMD_PREFIX_CODE;
+        for(int i=0;i<16;i++){
+            header->payload[i] = 0;
+        }
+        dataLen = 16;   //Length of data to be replicated 
+    }else{                   //Structure of command data packet, unfixed length:10(frame header)+LEN(data)+2(CKS)
+        if((header = (pCmdPacketHeader_t)malloc(sizeof(sCmdPacketHeader_t)+len+2)) == NULL){
+            return NULL;
+        }
+        header->PREFIX = CMD_DATA_PREFIX_CODE;
+        dataLen = len;   //Length of data to be replicated 
+    }
+    header->SID = 0;
+    header->DID = 0;
+    header->CMD = cmd;
+    header->LEN = len;
+    if(len){
+        memcpy(header->payload, payload, len);
+    }
+    cks = getCmdCKS(header);
+    memcpy(&header->payload[dataLen],&cks,2);
+    _PacketSize = sizeof(sCmdPacketHeader_t) + dataLen +2;
+    return header;
+}
+
+
+void DFRobot_ID809::sendPacket(pCmdPacketHeader_t header){
+    s->write((uint8_t *)header,_PacketSize);
+}
+
+uint8_t DFRobot_ID809::responsePayload(void* buf){
+    sRcmPacketHeader_t header;
+    uint16_t dataLen,dataCount,cks;
+    uint8_t ch,ret;
+    int16_t type;
+    type = readPrefix(&header);
+    if(type == 1){
+        LDBG("--recv timeout---");
+        _error = eErrorRecvTimeout;
+        return ERR_ID809;
+    }
+    pRcmPacketHeader_t packet;
+    if(type == RCM_TYPE){    //Structure of response packet, fixed 26 bytes: 10(frame header)+14(data)+2(CKS)
+        packet = (pRcmPacketHeader_t)malloc(sizeof(sRcmPacketHeader_t)+14+2);
+        dataLen = 14+2;      //Length of data+CKS
+        if(packet == NULL){
+            LDBG("");
+            while(1);
+        }
+    }else{                   //Structure of response data packet, unfixed length: 10(frame header)+(LEN-2)(data)+2(CKS)
+        packet = (pRcmPacketHeader_t)malloc(sizeof(sRcmPacketHeader_t)+header.LEN);
+        dataLen = header.LEN;  //Length of data+CKS
+        if(packet == NULL){
+            LDBG("");
+            while(1);
+        }
+    }
+    memcpy(packet, &header, 10);
+    dataCount = readN(packet->payload, dataLen);
+    cks = packet->payload[dataLen-2]+(packet->payload[dataLen-1]<<8);
+    ret = (header.RET&0xFF);
+    _error = (eError_t)ret;
+    if(ret != ERR_SUCCESS){
+        ret = ERR_ID809;
+    }else if(dataLen != dataCount){
+        LDBG("--recvRspPacket length error---");
+        _error = eErrorRecvLength;
+        ret = ERR_ID809;
+    }else if(getRcmCKS(packet) != cks){
+        LDBG("--recvRspPacket cks error---");
+        _error = eErrorRecvCks;
+        ret = ERR_ID809;
+    }else{
+        LDBG("--recvRspPacket OK---");
+        memcpy(buf, packet->payload, dataLen);
+    }
+    free(packet);
+    packet = NULL;
+    return ret;
+}
+
+uint16_t DFRobot_ID809::readPrefix( pRcmPacketHeader_t header ){
+    uint8_t ch,ret;
+    typedef enum{
+        RECV_HEADER_INIT,
+        RECV_HEADER_AA,
+        RECV_HEADER_A5,
+        RECV_HEADER_OK
+    }eRecvHeaderState;
+    eRecvHeaderState state = RECV_HEADER_INIT;
+    while(state != RECV_HEADER_OK){   //Can judge the received command packet and command data packet prefix at the same time 
+        if(readN(&ch, 1) != 1){
+            ret = 1;
+            return ret;
+        }
+        if((ch == 0xAA) && (state == RECV_HEADER_INIT)){
+            state = RECV_HEADER_AA;
+            continue;
+        }else if((ch == 0xA5) && (state == RECV_HEADER_INIT)){
+            state = RECV_HEADER_A5;
+            continue;
+        }else if((ch == 0x55) && (state == RECV_HEADER_AA)){
+            state = RECV_HEADER_OK;
+            ret = RCM_TYPE;
+            continue;
+        }else if((ch == 0x5A) && (state == RECV_HEADER_A5)){
+            state = RECV_HEADER_OK;
+            ret = DATA_TYPE;
+            continue;
+        }else{
+            state = RECV_HEADER_INIT;
+            if(ch == 0xAA){
+                state = RECV_HEADER_AA;
+            }else if(ch == 0xA5){
+                state = RECV_HEADER_A5;
+            }
+        }
+    }
+    if(ret == RCM_TYPE){
+        header->PREFIX = RCM_PREFIX_CODE;
+    }else if(ret == DATA_TYPE){
+        header->PREFIX = RCM_DATA_PREFIX_CODE;
+    }
+    readN(&header->SID, 1);
+    readN(&header->DID, 1);
+    readN(&header->RCM, 2);
+    readN(&header->LEN, 2);
+    readN(&header->RET, 2);
+    return ret;
+}
+
+size_t DFRobot_ID809::readN(void* buffer, size_t len){
+    size_t offset = 0,left = len;
+    uint8_t *buf = (uint8_t*)buffer;
+    long long curr = millis();
+    while(left){
+        if(s->available()){
+            buf[offset++] = s->read();
+            left--;
+        }
+        if(millis() - curr > 5000){
+            LDBG("----------!!!!!!!!!recv timeout----------");
+            break;
+        }
+    }
+    return offset;
+}
+
+uint16_t DFRobot_ID809::getCmdCKS(pCmdPacketHeader_t packet){
+    uint16_t cks = 0xFF;
+    cks += packet->SID;
+    cks += packet->DID;
+    cks += packet->CMD&0xFF;
+    cks += packet->CMD>>8;
+    cks += packet->LEN&0xFF;
+    cks += packet->LEN>>8;
+    if(packet->LEN > 0){
+        uint8_t *p = packet->payload;
+        for(uint16_t i = 0; i < packet->LEN; i++){
+            cks += p[i];
+        }
+    }
+    return cks&0xFFFF;
+}
+
+uint16_t DFRobot_ID809::getRcmCKS(pRcmPacketHeader_t packet){
+    uint16_t cks = 0xFF;
+    cks += packet->SID;
+    cks += packet->DID;
+    cks += packet->RCM&0xFF;
+    cks += packet->RCM>>8;
+    cks += packet->LEN&0xFF;
+    cks += packet->LEN>>8;
+    cks += packet->RET&0xFF;
+    cks += packet->RET>>8;
+    if(packet->LEN > 0){
+        uint8_t *p = packet->payload;
+        for(uint16_t i = 0; i < packet->LEN-2; i++){
+            cks += p[i];
+        }
+    }
+    return cks&0xFFFF;
+}
+
+const DFRobot_ID809::sErrorDescription_t DFRobot_ID809::errorDescriptionsTable[]={
+  {eErrorSuccess, "Command processed successfully"},
+  {eErrorFail, "Command processing failed"},
+  {eErrorVerify, "1:1 comparison failed"},
+  {eErrorIdentify, "Comparison with all fingerprints failed"},
+  {eErrorTmplEmpty, "No fingerprint in designated ID"},
+  {eErrorTmplNotEmpty, "Designated ID has fingerprint"},
+  {eErrorAllTmplEmpty, "Module unregistered fingerprint"},
+  {eErrorEmptyIDNoexist, "No registerable ID here"},
+  {eErrorBrokenIDNoexist, "No broken fingerprint"},
+  {eErrorInvalidTmplData, "Invalid desingated fingerprint data"},
+  {eErrorDuplicationID, "The fingerprint has been registered"},
+  {eErrorBadQuality, "Poor quality fingerprint image"},
+  {eErrorMergeFail, "Fingerprint synthesis failed"},
+  {eErrorNotAuthorized, "Communication password not authorized"},
+  {eErrorMemory, "External Flash burning error"},
+  {eErrorInvalidTmplNo, "Invalid designated ID"},
+  {eErrorInvalidParam, "Incorrect parameter"},
+  {eErrorTimeOut, "Acquisition timeout"},
+  {eErrorGenCount, "Invalid number of fingerprint synthesis"},
+  {eErrorInvalidBufferID, "Incorrect Buffer ID value"},
+  {eErrorFPNotDetected, "No fingerprint input into fingerprint reader"},
+  {eErrorFPCancel, "Command cancelled"},
+  {eErrorRecvLength, "Wrong data length"},
+  {eErrorRecvCks, "Wrong data check code"},
+  {eErrorGatherOut, "Exceed upper limit of acquisition times"},
+  {eErrorRecvTimeout,"Data reading timeout"}
+};
+
+String DFRobot_ID809::getErrorDescription()
+{
+    for(int i=0;i<sizeof(errorDescriptionsTable)/sizeof(errorDescriptionsTable[0]);i++){
+        if(_error == errorDescriptionsTable[i].error){
+          return errorDescriptionsTable[i].description;
+        }
+    }
+    return "";
+}
+
diff --git a/TestSHA256/.pio/libdeps/Teensy_SHA/DFRobot_ID809/DFRobot_ID809.h b/TestSHA256/.pio/libdeps/Teensy_SHA/DFRobot_ID809/DFRobot_ID809.h
new file mode 100644
index 0000000..acb9dfd
--- /dev/null
+++ b/TestSHA256/.pio/libdeps/Teensy_SHA/DFRobot_ID809/DFRobot_ID809.h
@@ -0,0 +1,504 @@
+
+/*!
+ * @file DFRobot_ID809.h
+ * @brief Define basic structure of DFRobot_ID809 class
+ * @n This is an library for capacitive fingerprint module
+ * @n Main functions: fingerprint image capturing, fingerprint comparison, fingerprint deletion
+ * @copyright   Copyright (c) 2010 DFRobot Co.Ltd (http://www.dfrobot.com)
+ * @licence     The MIT License (MIT)
+ * @author [Eddard](eddard.liu@dfrobot.com)
+ * @version  V1.0
+ * @date  2020-03-19
+ * @get from https://www.dfrobot.com
+ * @url https://github.com/cdjq/DFRobot_ID809
+ */
+
+#ifndef _DFRobot_ID809_H
+#define _DFRobot_ID809_H
+
+#if ARDUINO >= 100
+#include "Arduino.h"
+#else
+#include "WProgram.h"
+#endif
+#include <Wire.h>
+
+#include <stdint.h>
+
+//Open this macro to see the detailed running process of the program 
+
+//#define ENABLE_DBG
+#ifdef ENABLE_DBG
+#define LDBG(...) if(dbg) {dbg->print("["); dbg->print(__FUNCTION__); dbg->print("(): "); dbg->print(__LINE__); dbg->print(" ] "); dbg->println(__VA_ARGS__);}
+#else
+#define LDBG(...)
+#endif
+
+extern Stream *dbg;
+
+  /*
+   Frame struct of command packet 
+  */
+typedef struct{
+  uint16_t  PREFIX;
+  uint8_t   SID;
+  uint8_t   DID;
+  uint16_t  CMD;
+  uint16_t  LEN;
+  uint8_t payload[0];
+}__attribute__ ((packed)) sCmdPacketHeader_t, *pCmdPacketHeader_t;
+
+  /*
+   Frame struct of response packet 
+  */
+typedef struct{
+  uint16_t  PREFIX;
+  uint8_t   SID;
+  uint8_t   DID;
+  uint16_t  RCM;
+  uint16_t  LEN;
+  uint16_t  RET;
+  uint8_t   payload[0];
+}__attribute__ ((packed)) sRcmPacketHeader_t, *pRcmPacketHeader_t;
+
+  
+
+
+class DFRobot_ID809{
+public: 
+
+//#define FINGERPRINT_CAPACITY     80      //Fingerprint module capacity
+#define MODULE_SN_SIZE           16      //Module SN length 
+
+
+#define DELALL                   0xFF    //Delete all fingerprints 
+
+#define CMD_PREFIX_CODE          0xAA55  //Command packet prefix code 
+#define RCM_PREFIX_CODE          0x55AA  //Response packet prefix code 
+#define CMD_DATA_PREFIX_CODE     0xA55A  //Command data packet prefix code 
+#define RCM_DATA_PREFIX_CODE     0x5AA5  //Response data packet prefix code 
+
+#define CMD_TYPE                 0xF0    //Command packet type 
+#define RCM_TYPE                 0xF0    //Response packet type 
+#define DATA_TYPE                0x0F    //Data packet type 
+
+#define CMD_TEST_CONNECTION      0X0001  //Test connection 
+#define CMD_SET_PARAM            0X0002  //Set parameter
+#define CMD_GET_PARAM            0X0003  //Read parameter 
+#define CMD_DEVICE_INFO          0X0004  //Read device information 
+#define CMD_SET_MODULE_SN        0X0008  //Set module serial number 
+#define CMD_GET_MODULE_SN        0X0009  //Read module serial number
+#define CMD_ENTER_STANDBY_STATE  0X000C  //Enter sleep mode 
+#define CMD_GET_IMAGE            0X0020  //Capture fingerprint image 
+#define CMD_FINGER_DETECT        0X0021  //Detect fingerprint 
+    #define CMD_UP_IMAGE_CODE        0X0022  //Upload fingerprint image to host 
+    #define CMD_DOWN_IMAGE           0X0023  //Download fingerprint image to module 
+#define CMD_SLED_CTRL            0X0024  //Control collector backlight 
+#define CMD_STORE_CHAR           0X0040  //Save fingerprint template data into fingerprint library 
+#define CMD_LOAD_CHAR            0X0041  //Read fingerprint in module and save it in RAMBUFFER temporarily  
+    #define CMD_UP_CHAR              0X0042  //Upload the fingerprint template saved in RAMBUFFER to host 
+    #define CMD_DOWN_CHAR            0X0043  //Download fingerprint template to module designated RAMBUFFER
+#define CMD_DEL_CHAR             0X0044  //Delete fingerprint in specific ID range 
+#define CMD_GET_EMPTY_ID         0X0045  //Get the first registerable ID in specific ID range 
+#define CMD_GET_STATUS           0X0046  //Check if the designated ID has been registered 
+#define CMD_GET_BROKEN_ID        0X0047  //Check whether there is damaged data in fingerprint library of specific range
+#define CMD_GET_ENROLL_COUNT     0X0048  //Get the number of registered fingerprints in specific ID range 
+#define CMD_GET_ENROLLED_ID_LIST 0X0049  //Get registered ID list
+#define CMD_GENERATE             0X0060  //Generate template from the fingerprint images saved in IMAGEBUFFER temporarily 
+#define CMD_MERGE                0X0061  //Synthesize fingerprint template data 
+#define CMD_MATCH                0X0062  //Compare templates in 2 designated RAMBUFFER 
+#define CMD_SEARCH               0X0063  //1:N Recognition in specific ID range 
+#define CMD_VERIFY               0X0064  //Compare specific RAMBUFFER template with specific ID template in fingerprint library 
+
+#define ERR_SUCCESS              0x00    //Command processed successfully 
+#define ERR_ID809                0xFF    //error 
+
+
+public:
+  
+  typedef enum{
+    eBreathing = 1,  //Breathing 
+    eFastBlink,      //Quick blink
+    eKeepsOn,        //On
+    eNormalClose,    //Off
+    eFadeIn,         //Fade in 
+    eFadeOut,        //Fade out
+    eSlowBlink       //Slow blink
+  }eLEDMode_t;
+  
+  typedef enum{
+    eLEDGreen = 1,   //green 
+    eLEDRed,         //red 
+    eLEDYellow,      //yellow
+    eLEDBlue,        //blue
+    eLEDCyan,        //cyan
+    eLEDMagenta,     //magenta
+    eLEDWhite        //white
+  }eLEDColor_t;
+   
+  typedef enum{
+    e9600bps = 1,
+    e19200bps,
+    e38400bps,
+    e57600bps,
+    e115200bps
+  }eDeviceBaudrate_t;
+  
+  typedef enum{
+    eErrorSuccess            = 0x00,    //Command processed successfully
+    eErrorFail               = 0x01,    //Command processing failed 
+    eErrorVerify             = 0x10,    //1:1 Templates comparison in specific ID failed 
+    eErrorIdentify           = 0x11,    //1:N comparison has been made, no same templates here 
+    eErrorTmplEmpty          = 0x12,    //No registered template in the designated ID 
+    eErrorTmplNotEmpty       = 0x13,    //Template already exists in the specified ID 
+    eErrorAllTmplEmpty       = 0x14,    //No registered Template 
+    eErrorEmptyIDNoexist     = 0x15,    //No registerable Template ID 
+    eErrorBrokenIDNoexist    = 0x16,    //No damaged Template 
+    eErrorInvalidTmplData    = 0x17,    //The designated Template Data is invalid 
+    eErrorDuplicationID      = 0x18,    //The fingerprint has been registered 
+    eErrorBadQuality         = 0x19,    //Poor quality fingerprint image 
+    eErrorMergeFail          = 0x1A,    //Template synthesis failed 
+    eErrorNotAuthorized      = 0x1B,    //Communication password not authorized 
+    eErrorMemory             = 0x1C,    //Error in exernal Flash burning 
+    eErrorInvalidTmplNo      = 0x1D,    //The designated template ID is invalid 
+    eErrorInvalidParam       = 0x22,    //Incorrect parameter has been used 
+    eErrorTimeOut            = 0x23,    //Acquisition timeout 
+    eErrorGenCount           = 0x25,    //Invalid number of fingerprint synthesis 
+    eErrorInvalidBufferID    = 0x26,    //Wrong Buffer ID value 
+    eErrorFPNotDetected      = 0x28,    //No fingerprint input into fingerprint reader 
+    eErrorFPCancel           = 0x41,    //Command cancelled 
+    eErrorRecvLength         = 0x42,    //Wrong length of recieved data 
+    eErrorRecvCks            = 0x43,    //Wrong check code 
+    eErrorGatherOut          = 0x45,    //Exceed upper limit of acquisition times 
+    eErrorRecvTimeout        = 0x46     //Communication timeout 
+  }eError_t;
+  
+  typedef struct{
+    /**< Gesture enumeration variable X */
+    eError_t error;
+    /**< Description about the gesture enumeration variable X */
+    const char * description;
+  }sErrorDescription_t;
+
+public:
+  DFRobot_ID809();
+  ~DFRobot_ID809();
+  
+  /**
+   * @brief Init communication port
+   * @param Software serial or hardware serial 
+   * @return true or false
+   */
+  bool begin(Stream &s_);
+  
+  /**
+   * @brief Test whether the module connection is ok
+   * @return true or false
+   */
+  bool isConnected();
+  
+  /**
+   * @brief Set module ID
+   * @param ID:1-255
+   * @return 0(succeed) or ERR_ID809
+   */
+  uint8_t setDeviceID(uint8_t deviceID);
+  
+  /**
+   * @brief Set module security level 
+   * @param security level:1-5
+   * @return 0(succeed) or ERR_ID809
+   */
+  uint8_t setSecurityLevel(uint8_t securityLevel);
+  
+  /**
+   * @brief Set module fingerprint replication check (Check whether the fingperint has been registered when saving it)
+   * @param 1(ON) or 0(OFF)
+   * @return 0(succeed) or ERR_ID809
+   */
+  uint8_t setDuplicationCheck(uint8_t duplicationCheck);
+  
+  /**
+   * @brief Set module baud rate 
+   * @param Baudrate:in typedef enum eDeviceBaudrate_t
+   * @return 0(succeed) or ERR_ID809
+   */
+  uint8_t setBaudrate(eDeviceBaudrate_t baudrate);
+  
+  /**
+   * @brief Set module self-learning function (Update fingeprint when fingerprint comparison succeeds)
+   * @param 1(ON) or 0(OFF)
+   * @return 0(succeed) or ERR_ID809
+   */
+  uint8_t setSelfLearn(uint8_t selfLearn);
+  
+  /**
+   * @brief Read module ID
+   * @return ID号:1-255 or ERR_ID809
+   */
+  uint8_t getDeviceID();
+  
+  /**
+   * @brief Read module security level 
+   * @return Security level:1-5 or ERR_ID809
+   */
+  uint8_t getSecurityLevel();
+  
+  /**
+   * @brief Read module fingerprint replication check status
+   * @return Status:1(ON), 0(OFF) or ERR_ID809
+   */
+  uint8_t getDuplicationCheck();
+  
+  /**
+   * @brief Read module baud rate 
+   * @return Baudrate:in typedef enum eDEVICE_BAUDRATE_t or ERR_ID809
+   */
+  uint8_t getBaudrate();
+  
+  /**
+   * @brief Read module self-learning function status 
+   * @return Status:1(ON), 0(OFF) or ERR_ID809
+   */
+  uint8_t getSelfLearn();
+  uint8_t getTemplate(uint16_t id,uint8_t * temp);
+  uint8_t downLoadTemplate(uint16_t id,uint8_t * temp);
+  uint8_t getFingerImage(uint8_t *image);
+  uint8_t downLoadImage(uint16_t id,uint8_t * temp);
+  uint8_t receiveImageData(uint8_t *image);
+  uint8_t getQuarterFingerImage(uint8_t *image);
+  uint8_t contrastTemplate(uint8_t *temp);
+  /**
+   * @brief Read device number 
+   * @return Device number
+   */
+  String getDeviceInfo();
+  
+  /**
+   * @brief Set serial number
+   * @param String pointer 
+   * @return 0(succeed) or ERR_ID809
+   */
+  uint8_t setModuleSN(const char* SN);
+  /**
+   * @brief Read serial number 
+   * @return Serial number
+   */
+  String getModuleSN();
+  
+  /**
+   * @brief Set LED
+   * @param mode:in typedef enum eLEDMode_t
+   * @param color:in typedef enum eLEDColor_t
+   * @param blink Count: 00 represents blinking all the time
+   * @This parameter will only be valid in mode eBreathing, eFastBlink, eSlowBlink
+   * @return 0(succeed) or ERR_ID809
+   */
+  uint8_t ctrlLED(eLEDMode_t mode,eLEDColor_t color,uint8_t blinkCount);
+  
+  /**
+   * @brief Detect if there is finger touched 
+   * @return 1(Touched) or 0(No touch)
+   */
+  uint8_t detectFinger();
+  
+  /**
+   * @brief Get the first registerable ID 
+   * @return Registerable ID or ERR_ID809
+   */
+  uint8_t getEmptyID();
+  
+  /**
+   * @brief Check if the ID has been registered 
+   * @return 0(Registered), 1(Unregistered) or ERR_ID809
+   */
+  uint8_t getStatusID(uint8_t ID);
+  
+  /**
+   * @brief Get the number of registered users 
+   * @return Number of registered users or ERR_ID809
+   */
+  uint8_t getEnrollCount();
+  
+  /**
+   * @brief Get registered user list 
+   * @return 0(succeed) or ERR_ID809
+   */
+   uint8_t getEnrolledIDList(uint8_t* list);
+  
+  /**
+   * @brief Fingerprint acquisition 
+   * @return 0(succeed) or ERR_ID809
+   */
+  uint8_t collectionFingerprint(uint16_t timeout,int ramNumber = -1);
+  
+  /**
+   * @brief Save fingerprint 
+   * @param Fingerprint ID
+   * @return 0(succeed) or ERR_ID809
+   */
+  uint8_t storeFingerprint(uint8_t ID);
+  
+  /**
+   * @brief Delete fingerprint 
+   * @param Delete ID or DELALL(delete all)
+   * @return 0(succeed) or ERR_ID809
+   */
+  uint8_t delFingerprint(uint8_t ID);
+  
+  /**
+   * @brief Match the fingerprint with all fingeprints 
+   * @return Successfully matched fingerprint ID, 0(Matching failed) or ERR_ID809
+   */
+  uint8_t search();
+
+  /**
+   * @brief Match the fingerprint with specific fingerprint 
+   * @return Successfully matched fingerprint ID, 0(Matching failed) or ERR_ID809
+   */
+  uint8_t verify(uint8_t ID);
+
+  /**
+   * @brief Compare templates in two specific RamBuffers
+   * @param RamBuffer number 
+   * @param RamBuffer number 
+   * @return 0(succeed) or ERR_ID809
+   */
+  uint8_t match(uint8_t RamBufferID0, uint8_t RamBufferID1);
+  
+  /**
+   * @brief Get the number of damaged fingerprints 
+   * @return Damaged fingerprint ID or ERR_ID809
+   */
+  uint8_t getBrokenQuantity();
+
+  /**
+   * @brief Get the first damaged fingerprint ID 
+   * @return Damaged fingerprint ID or ERR_ID809
+   */
+  uint8_t getBrokenID();
+  
+  /**
+   * @brief Take out fingerprint template, temporarily save into RamBuffer
+   * @param Fingerprint ID 
+   * @param RamBuffer number 0-2
+   * @return 0(succeed) or ERR_ID809
+   */
+  uint8_t loadFingerprint(uint8_t ID, uint8_t RamBufferID);
+  
+  /**
+   * @brief Enter Standby mode
+   * @return 0(succeed) or ERR_ID809
+   */
+  uint8_t enterStandbyState();
+  
+  /**
+   * @brief Get error information
+   * @return Text description of error information
+   */
+  String getErrorDescription();
+  
+  bool setDbgSerial(Stream &s_){dbg = &s_; return true;}
+    uint16_t FINGERPRINT_CAPACITY = 80;
+protected:
+   /**
+   * @brief Set parameter 
+   * @param Data type+ data
+   * @return 0(succeed) or ERR_ID809
+   */
+  uint8_t setParam(uint8_t* data);
+  
+   /**
+   * @brief Read parameter 
+   * @param Data type 
+   * @return data or ERR_ID809
+   */
+  uint8_t getParam(uint8_t* data);
+  
+  /**
+   * @brief Capture fingerprint image 
+   * @return 0(succeed) or ERR_ID809
+   */
+  uint8_t getImage();
+   
+   /**
+   * @brief Take image as template 
+   * @param Ram Buffer number
+   * @return 0(succeed) or ERR_ID809
+   */
+  uint8_t generate(uint8_t RamBufferID);
+  
+ /**
+   * @brief Fingerprint synthesis 
+   * @return 0(succeed) or ERR_ID809
+   */
+  uint8_t merge();
+  
+ /**
+   * @brief Packing data frame 
+   * @param Data type:CMD_TYPE or DATA_TYPE
+   * @param Command
+   * @param Data 
+   * @param Length
+   * @return Data frame 
+   */
+  pCmdPacketHeader_t pack(uint8_t type, uint16_t cmd, const char *payload, uint16_t len);
+  
+ /**
+   * @brief Send data 
+   * @param Data frame
+   */
+  void sendPacket(pCmdPacketHeader_t header);
+  
+ /**
+   * @brief Read byte 
+   * @param Pointer for saving data 
+   * @param Length of data to be received 
+   * @return Actual received data length 
+   */
+  size_t readN(void* buf_, size_t len);
+  
+ /**
+   * @brief Read frame header 
+   * @param Frame header struct of response packet
+   * @return Response packet type:RCM_TYPE,DATA_TYPE or 1(reading timeout)
+   */
+  uint16_t readPrefix( pRcmPacketHeader_t header );
+  
+ /**
+   * @brief Read data
+   * @param Pointer for saving data 
+   * @return 0(success) or ERR_ID809
+   */
+  uint8_t responsePayload(void* buf);
+  
+ /**
+   * @brief Get command packet CKS
+   * @param Command packet frame 
+   * @return CKS
+   */
+  uint16_t getCmdCKS(pCmdPacketHeader_t packet);
+  
+ /**
+   * @brief Get response packet CKS
+   * @param Response packet frame 
+   * @return CKS
+   */
+  uint16_t getRcmCKS(pRcmPacketHeader_t packet);
+  uint8_t store(uint8_t ID);
+  
+private:
+  Stream *s;
+  uint8_t buf[20];     //For saving response packet data 
+  pCmdPacketHeader_t  sendHeader;
+  pRcmPacketHeader_t  recHeader;
+  
+  static const sErrorDescription_t /*PROGMEM*/ errorDescriptionsTable[26];   //Error information list 
+  
+  uint8_t _number = 0;       //Fingerprint acquisistion times 
+  uint8_t _state = 0;        //Collect fingerprint state
+  eError_t _error;           //Error code 
+  uint16_t _PacketSize = 0;  //Data packet length to be sent 
+};
+
+#endif
diff --git a/TestSHA256/.pio/libdeps/Teensy_SHA/DFRobot_ID809/library.json b/TestSHA256/.pio/libdeps/Teensy_SHA/DFRobot_ID809/library.json
new file mode 100644
index 0000000..c537b85
--- /dev/null
+++ b/TestSHA256/.pio/libdeps/Teensy_SHA/DFRobot_ID809/library.json
@@ -0,0 +1,4 @@
+{
+  "name": "DFRobot_ID809",
+  "version": "0.0.0+20220728181242"
+}
\ No newline at end of file
diff --git a/TestSHA256/.pio/libdeps/Teensy_SHA/SHA256/.piopm b/TestSHA256/.pio/libdeps/Teensy_SHA/SHA256/.piopm
new file mode 100644
index 0000000..bdcb7ef
--- /dev/null
+++ b/TestSHA256/.pio/libdeps/Teensy_SHA/SHA256/.piopm
@@ -0,0 +1 @@
+{"type": "library", "name": "SHA256", "version": "0.0.0+20220728181242", "spec": {"owner": null, "id": null, "name": "SHA256", "requirements": null, "uri": "file://lib/SHA256"}}
\ No newline at end of file
diff --git a/TestSHA256/.pio/libdeps/Teensy_SHA/SHA256/library.json b/TestSHA256/.pio/libdeps/Teensy_SHA/SHA256/library.json
new file mode 100644
index 0000000..a8c7ac2
--- /dev/null
+++ b/TestSHA256/.pio/libdeps/Teensy_SHA/SHA256/library.json
@@ -0,0 +1,4 @@
+{
+  "name": "SHA256",
+  "version": "0.0.0+20220728181242"
+}
\ No newline at end of file
diff --git a/TestSHA256/.pio/libdeps/Teensy_SHA/SHA256/sha256.c b/TestSHA256/.pio/libdeps/Teensy_SHA/SHA256/sha256.c
new file mode 100644
index 0000000..cf66018
--- /dev/null
+++ b/TestSHA256/.pio/libdeps/Teensy_SHA/SHA256/sha256.c
@@ -0,0 +1,169 @@
+/*********************************************************************
+* Filename:   sha256.c
+* Author:     Brad Conte (brad AT bradconte.com)
+* Copyright:
+* Disclaimer: This code is presented "as is" without any guarantees.
+* Details:    Implementation of the SHA-256 hashing algorithm.
+              SHA-256 is one of the three algorithms in the SHA2
+              specification. The others, SHA-384 and SHA-512, are not
+              offered in this implementation.
+              Algorithm specification can be found here:
+               * http://csrc.nist.gov/publications/fips/fips180-2/fips180-2withchangenotice.pdf
+              This implementation uses little endian byte order.
+*********************************************************************/
+
+/*************************** HEADER FILES ***************************/
+#include <stdlib.h>
+#include <string.h>
+//#include <memory.h>
+#include "sha256.h"
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+
+/****************************** MACROS ******************************/
+#define ROTLEFT(a,b) (((a) << (b)) | ((a) >> (32-(b))))
+#define ROTRIGHT(a,b) (((a) >> (b)) | ((a) << (32-(b))))
+
+#define CH(x,y,z) (((x) & (y)) ^ (~(x) & (z)))
+#define MAJ(x,y,z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
+#define EP0(x) (ROTRIGHT(x,2) ^ ROTRIGHT(x,13) ^ ROTRIGHT(x,22))
+#define EP1(x) (ROTRIGHT(x,6) ^ ROTRIGHT(x,11) ^ ROTRIGHT(x,25))
+#define SIG0(x) (ROTRIGHT(x,7) ^ ROTRIGHT(x,18) ^ ((x) >> 3))
+#define SIG1(x) (ROTRIGHT(x,17) ^ ROTRIGHT(x,19) ^ ((x) >> 10))
+
+/**************************** VARIABLES *****************************/
+static const WORD k[64] = {
+	0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5,0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5,
+	0xd807aa98,0x12835b01,0x243185be,0x550c7dc3,0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174,
+	0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc,0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da,
+	0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7,0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967,
+	0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13,0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85,
+	0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3,0xd192e819,0xd6990624,0xf40e3585,0x106aa070,
+	0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5,0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3,
+	0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208,0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2
+};
+
+/*********************** FUNCTION DEFINITIONS ***********************/
+void sha256_transform(SHA256_CTX *ctx, const BYTE data[])
+{
+	WORD a, b, c, d, e, f, g, h, i, j, t1, t2, m[64];
+
+	for (i = 0, j = 0; i < 16; ++i, j += 4)
+		m[i] = (data[j] << 24) | (data[j + 1] << 16) | (data[j + 2] << 8) | (data[j + 3]);
+	for ( ; i < 64; ++i)
+		m[i] = SIG1(m[i - 2]) + m[i - 7] + SIG0(m[i - 15]) + m[i - 16];
+
+	a = ctx->state[0];
+	b = ctx->state[1];
+	c = ctx->state[2];
+	d = ctx->state[3];
+	e = ctx->state[4];
+	f = ctx->state[5];
+	g = ctx->state[6];
+	h = ctx->state[7];
+
+	for (i = 0; i < 64; ++i) {
+		t1 = h + EP1(e) + CH(e,f,g) + k[i] + m[i];
+		t2 = EP0(a) + MAJ(a,b,c);
+		h = g;
+		g = f;
+		f = e;
+		e = d + t1;
+		d = c;
+		c = b;
+		b = a;
+		a = t1 + t2;
+	}
+
+	ctx->state[0] += a;
+	ctx->state[1] += b;
+	ctx->state[2] += c;
+	ctx->state[3] += d;
+	ctx->state[4] += e;
+	ctx->state[5] += f;
+	ctx->state[6] += g;
+	ctx->state[7] += h;
+}
+
+void sha256_init(SHA256_CTX *ctx)
+{
+	ctx->datalen = 0;
+	ctx->bitlen = 0;
+	ctx->state[0] = 0x6a09e667;
+	ctx->state[1] = 0xbb67ae85;
+	ctx->state[2] = 0x3c6ef372;
+	ctx->state[3] = 0xa54ff53a;
+	ctx->state[4] = 0x510e527f;
+	ctx->state[5] = 0x9b05688c;
+	ctx->state[6] = 0x1f83d9ab;
+	ctx->state[7] = 0x5be0cd19;
+}
+
+void sha256_update(SHA256_CTX *ctx, const BYTE data[], size_t len)
+{
+	WORD i;
+
+	for (i = 0; i < len; ++i) {
+		ctx->data[ctx->datalen] = data[i];
+		ctx->datalen++;
+		if (ctx->datalen == 64) {
+			sha256_transform(ctx, ctx->data);
+			ctx->bitlen += 512;
+			ctx->datalen = 0;
+		}
+	}
+}
+
+void sha256_final(SHA256_CTX *ctx, BYTE hash[])
+{
+	WORD i;
+
+	i = ctx->datalen;
+
+	// Pad whatever data is left in the buffer.
+	if (ctx->datalen < 56) {
+		ctx->data[i++] = 0x80;
+		while (i < 56)
+			ctx->data[i++] = 0x00;
+	}
+	else {
+		ctx->data[i++] = 0x80;
+		while (i < 64)
+			ctx->data[i++] = 0x00;
+		sha256_transform(ctx, ctx->data);
+		memset(ctx->data, 0, 56);
+	}
+
+	// Append to the padding the total message's length in bits and transform.
+	ctx->bitlen += ctx->datalen * 8;
+	ctx->data[63] = ctx->bitlen;
+	ctx->data[62] = ctx->bitlen >> 8;
+	ctx->data[61] = ctx->bitlen >> 16;
+	ctx->data[60] = ctx->bitlen >> 24;
+	ctx->data[59] = ctx->bitlen >> 32;
+	ctx->data[58] = ctx->bitlen >> 40;
+	ctx->data[57] = ctx->bitlen >> 48;
+	ctx->data[56] = ctx->bitlen >> 56;
+	sha256_transform(ctx, ctx->data);
+
+	// Since this implementation uses little endian byte ordering and SHA uses big endian,
+	// reverse all the bytes when copying the final state to the output hash.
+	for (i = 0; i < 4; ++i) {
+		hash[i]      = (ctx->state[0] >> (24 - i * 8)) & 0x000000ff;
+		hash[i + 4]  = (ctx->state[1] >> (24 - i * 8)) & 0x000000ff;
+		hash[i + 8]  = (ctx->state[2] >> (24 - i * 8)) & 0x000000ff;
+		hash[i + 12] = (ctx->state[3] >> (24 - i * 8)) & 0x000000ff;
+		hash[i + 16] = (ctx->state[4] >> (24 - i * 8)) & 0x000000ff;
+		hash[i + 20] = (ctx->state[5] >> (24 - i * 8)) & 0x000000ff;
+		hash[i + 24] = (ctx->state[6] >> (24 - i * 8)) & 0x000000ff;
+		hash[i + 28] = (ctx->state[7] >> (24 - i * 8)) & 0x000000ff;
+	}
+}
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/TestSHA256/.pio/libdeps/Teensy_SHA/SHA256/sha256.h b/TestSHA256/.pio/libdeps/Teensy_SHA/SHA256/sha256.h
new file mode 100644
index 0000000..bc64c5f
--- /dev/null
+++ b/TestSHA256/.pio/libdeps/Teensy_SHA/SHA256/sha256.h
@@ -0,0 +1,48 @@
+
+/*********************************************************************
+* Filename:   sha256.h
+* Author:     Brad Conte (brad AT bradconte.com)
+* Copyright:
+* Disclaimer: This code is presented "as is" without any guarantees.
+* Details:    Defines the API for the corresponding SHA1 implementation.
+*********************************************************************/
+
+#ifndef SHA256_H
+#define SHA256_H
+
+/*************************** HEADER FILES ***************************/
+#include <stddef.h>
+
+/****************************** MACROS ******************************/
+#define SHA256_BLOCK_SIZE 32            // SHA256 outputs a 32 byte digest
+
+
+/**************************** DATA TYPES ****************************/
+typedef unsigned char BYTE;             // 8-bit byte
+typedef unsigned int  WORD;             // 32-bit word, change to "long" for 16-bit machines
+
+typedef struct {
+	BYTE data[64];
+	WORD datalen;
+	unsigned long long bitlen;
+	WORD state[8];
+} SHA256_CTX;
+
+/*********************** FUNCTION DECLARATIONS **********************/
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+	
+void sha256_init(SHA256_CTX *ctx);
+void sha256_update(SHA256_CTX *ctx, const BYTE data[], size_t len);
+void sha256_final(SHA256_CTX *ctx, BYTE hash[]);
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif   // SHA256_H
diff --git a/TestSHA256/.pio/libdeps/Teensy_SHA/integrity.dat b/TestSHA256/.pio/libdeps/Teensy_SHA/integrity.dat
new file mode 100644
index 0000000..45a846c
--- /dev/null
+++ b/TestSHA256/.pio/libdeps/Teensy_SHA/integrity.dat
@@ -0,0 +1,2 @@
+lib/DFRobot_ID809
+lib/SHA256
\ No newline at end of file
diff --git a/TestSHA256/lib/DFRobot_ID809/DFRobot_ID809.cpp b/TestSHA256/lib/DFRobot_ID809/DFRobot_ID809.cpp
new file mode 100644
index 0000000..ddf2e99
--- /dev/null
+++ b/TestSHA256/lib/DFRobot_ID809/DFRobot_ID809.cpp
@@ -0,0 +1,1089 @@
+
+/*!
+ * @file DFRobot_ID809.cpp
+ * @brief Define the basic structure of DFRobot_ID809 class and the implementation of underlying methods 
+ * @copyright   Copyright (c) 2010 DFRobot Co.Ltd (http://www.dfrobot.com)
+ * @licence     The MIT License (MIT)
+ * @author [Eddard](eddard.liu@dfrobot.com)
+ * @version  V1.0
+ * @date  2020-03-19
+ * @get from https://www.dfrobot.com
+ * @url https://github.com/cdjq/DFRobot_ID809
+ */
+
+#include <DFRobot_ID809.h>
+#include <Arduino.h>
+#include <string.h>
+#include <stdio.h>
+Stream *dbg=NULL;
+
+DFRobot_ID809::DFRobot_ID809()
+  :s(NULL){
+        
+}
+
+DFRobot_ID809::~DFRobot_ID809(){
+        
+}
+
+bool DFRobot_ID809::begin(Stream &s_){
+    s = &s_;
+	String str = getDeviceInfo();
+  //Serial.println(str[str.length()-1]);
+  if(str[str.length()-1] == '4'){
+	    
+	   FINGERPRINT_CAPACITY   =    80 ;
+	  
+	  //Serial.println(str[str.length()-1]);
+  }else if(str[str.length()-1] == '3'){
+	  //Serial.println(str[str.length()-1]);
+	   FINGERPRINT_CAPACITY  =   200 ;
+	  
+  }
+	
+    if(s == NULL){
+        return false;
+    }
+    return true;
+}
+
+bool DFRobot_ID809::isConnected(){
+    pCmdPacketHeader_t header = pack(CMD_TYPE, CMD_TEST_CONNECTION, NULL, 0);
+    sendPacket(header);
+    free(header);
+    uint8_t ret = responsePayload(buf);
+    LDBG("ret=");LDBG(ret);
+    if(ret == ERR_SUCCESS){
+        return true;
+    }else{
+        return false;
+    }
+}
+
+uint8_t DFRobot_ID809::setDeviceID(uint8_t deviceID){
+    uint8_t data[5] = {0};    //data:1bytes Parameter Type+4bytes Parameter Value
+    data[1] = deviceID;
+    uint8_t ret = setParam(data);
+    return ret;
+}
+
+uint8_t DFRobot_ID809::setSecurityLevel(uint8_t securityLevel){
+    uint8_t data[5] = {0};
+    data[0] = 1;
+    data[1] = securityLevel;
+    uint8_t ret = setParam(data);
+    return ret;
+}
+
+uint8_t DFRobot_ID809::setDuplicationCheck(uint8_t duplicationCheck){
+    uint8_t data[5] = {0};
+    data[0] = 2;
+    data[1] = duplicationCheck;
+    uint8_t ret = setParam(data);
+    return ret;
+}
+
+uint8_t DFRobot_ID809::setBaudrate(eDeviceBaudrate_t baudrate){
+    uint8_t data[5] = {0};
+    data[0] = 3;
+    data[1] = baudrate;
+    uint8_t ret = setParam(data);
+    return ret;
+}
+
+uint8_t DFRobot_ID809::setSelfLearn(uint8_t selfLearn){
+    uint8_t data[5] = {0};
+    data[0] = 4;
+    data[1] = selfLearn;
+    uint8_t ret = setParam(data);
+    return ret;
+}
+
+uint8_t DFRobot_ID809::getDeviceID(){
+    uint8_t data[1];  //data:1byte Parameter Type
+    data[0] = 0;
+    uint8_t ret = getParam(data);
+    return ret;
+}
+
+uint8_t DFRobot_ID809::getSecurityLevel(){
+    uint8_t data[1];
+    data[0] = 1;
+    uint8_t ret = getParam(data);
+    return ret;
+}
+
+uint8_t DFRobot_ID809::getDuplicationCheck(){
+    uint8_t data[1];
+    data[0] = 2;
+    uint8_t ret = getParam(data);
+    return ret;
+}
+
+uint8_t DFRobot_ID809::getBaudrate(){
+    uint8_t data[1];
+    data[0] = 3;
+    uint8_t ret = getParam(data);
+    return ret;
+}
+
+uint8_t DFRobot_ID809::getSelfLearn(){
+    uint8_t data[1];
+    data[0] = 4;
+    uint8_t ret = getParam(data);
+    return ret;
+}
+
+String DFRobot_ID809::getDeviceInfo(){
+    char *data;
+    uint8_t result;
+    pCmdPacketHeader_t header = pack(CMD_TYPE, CMD_DEVICE_INFO, NULL, 0);
+    sendPacket(header);
+    free(header);
+    result = responsePayload(buf);
+    LDBG("result=");LDBG(result);
+    if(result != ERR_SUCCESS){
+        return "";
+    }
+    uint16_t dataLen = buf[0]+(buf[1]<<8)+1;
+    if((data = (char *)malloc(dataLen)) == NULL){
+        LDBG("no memory!!!\r\n");
+        while(1);
+    }
+    data[dataLen] = 0;
+    result = responsePayload(data);
+    LDBG("result=");LDBG(result);
+    String ret = String(data);
+    free(data);
+    return ret;
+}
+
+uint8_t DFRobot_ID809::setModuleSN(const char* SN){
+    char data[2];
+    data[0] = MODULE_SN_SIZE;
+    if(strlen(SN) > MODULE_SN_SIZE){
+        LDBG("The serial number exceeds 15 characters");
+        return ERR_ID809;
+    }
+    pCmdPacketHeader_t header = pack(CMD_TYPE, CMD_SET_MODULE_SN, data, 2);
+    sendPacket(header);
+    free(header);
+    uint8_t ret = responsePayload(buf);
+    LDBG("ret=");LDBG(ret);
+    if(ret != ERR_SUCCESS){
+        return ERR_ID809;
+    }
+    header = pack(DATA_TYPE, CMD_SET_MODULE_SN, SN, MODULE_SN_SIZE);
+    sendPacket(header);
+    free(header);
+    ret = responsePayload(buf);
+    LDBG("ret=");LDBG(ret);
+    if(ret == ERR_SUCCESS){
+        ret = buf[0];
+    }
+    return ret;
+}
+
+uint8_t DFRobot_ID809::getTemplate(uint16_t id,uint8_t * temp){
+  char data[4];
+  data[0] = id;
+  data[1] = 0;
+  data[2] = 0;
+  data[3] = 0;
+  pCmdPacketHeader_t header = pack(CMD_TYPE, CMD_LOAD_CHAR, data, 4);
+  sendPacket(header);
+  free(header);
+  
+  uint8_t ret = responsePayload(buf);
+  LDBG("ret=");
+  LDBG(ret);
+  if(ret != ERR_SUCCESS) {
+    return ERR_ID809;
+  }
+  data[0] = 0;
+  data[1] = 0;
+  header = pack(CMD_TYPE, CMD_UP_CHAR, data, 2);
+  sendPacket(header);
+  free(header);
+  
+  ret = responsePayload(buf);
+  LDBG("ret=");
+  LDBG(ret);
+  if(ret == ERR_SUCCESS) {
+    ret = buf[0];
+  }
+  ret = responsePayload(temp);
+
+  return ret;
+}
+
+uint8_t DFRobot_ID809::downLoadTemplate(uint16_t id,uint8_t * temp){
+
+  char data[4];
+  data[0] = 0xf2;
+  data[1] = 3;
+  pCmdPacketHeader_t header = pack(CMD_TYPE, CMD_DOWN_CHAR, data, 2);
+  sendPacket(header);
+  free(header);
+
+  uint8_t ret = responsePayload(buf);
+  LDBG("ret=");
+  LDBG(ret);
+  if(ret != ERR_SUCCESS) {
+    return ERR_ID809;
+  }
+  char *tempData= (char *)malloc(0x3f2 +1);
+  tempData[0] = 0;
+  tempData[1] = 0;
+  memcpy(tempData+2,temp,0x3f0);
+  
+
+  header = pack(DATA_TYPE, CMD_DOWN_CHAR, tempData, 0x3f2);
+
+  sendPacket(header);
+
+  free(header);
+  
+  ret = responsePayload(buf);
+  LDBG("ret=");
+  LDBG(ret);
+  if(ret == ERR_SUCCESS) {
+    ret = buf[0];
+  }
+  free(tempData);
+  
+
+  return store(id);
+}
+
+uint8_t DFRobot_ID809::contrastTemplate(uint8_t *temp){
+
+  char data[4];
+  data[0] = 0xf2;
+  data[1] = 3;
+  pCmdPacketHeader_t header = pack(CMD_TYPE, CMD_DOWN_CHAR, data, 2);
+  sendPacket(header);
+  free(header);
+
+  uint8_t ret = responsePayload(buf);
+  LDBG("ret=");
+  LDBG(ret);
+  if(ret != ERR_SUCCESS) {
+    return ERR_ID809;
+  }
+  char *tempData= (char *)malloc(0x3f2 +1);
+  tempData[0] = 2;
+  tempData[1] = 0;
+  memcpy(tempData+2,temp,0x3f0);
+  
+
+  header = pack(DATA_TYPE, CMD_DOWN_CHAR, tempData, 0x3f2);
+
+  sendPacket(header);
+
+  free(header);
+  
+  ret = responsePayload(buf);
+  LDBG("ret=");
+  LDBG(ret);
+  if(ret == ERR_SUCCESS) {
+    ret = buf[0];
+  }
+  free(tempData);
+  data[0] = 0;
+  data[1] = 0;
+  data[2] = 2;
+  data[3] = 0;
+  header = pack(CMD_TYPE, CMD_MATCH, data, 4);
+  sendPacket(header);
+  free(header);
+
+  ret = responsePayload(buf);
+  LDBG("ret=");
+  LDBG(ret);
+  if(ret != ERR_SUCCESS) {
+    return ret;
+  }
+  return ret;
+
+}
+uint8_t DFRobot_ID809::getFingerImage(uint8_t *image)
+{
+  pCmdPacketHeader_t header = pack(CMD_TYPE, CMD_GET_IMAGE, NULL, 0);
+  sendPacket(header);
+  free(header);
+
+  uint8_t ret = responsePayload(buf);
+  LDBG("ret=");
+  LDBG(ret);
+  if(ret != ERR_SUCCESS) {
+    return ERR_ID809;
+  }
+  
+  char data[1];
+  data[0] = 0;
+  header = pack(CMD_TYPE, CMD_UP_IMAGE_CODE, data, 1);
+  sendPacket(header);
+  free(header);
+
+  ret = responsePayload(buf);
+  LDBG("ret=");
+  LDBG(ret);
+  if(ret != ERR_SUCCESS) {
+    return ERR_ID809;
+  }
+  char *tempData= (char *)malloc(500 +1);
+  for(uint8_t i=0;i<52;i++){
+
+     ret = responsePayload(tempData);
+     if(i == 51)
+       memcpy(image+i*496,tempData+2,304);
+     else
+       memcpy(image+i*496,tempData+2,496);
+  }
+  free(tempData);
+}
+uint8_t DFRobot_ID809::getQuarterFingerImage(uint8_t *image){
+
+  pCmdPacketHeader_t header = pack(CMD_TYPE, CMD_GET_IMAGE, NULL, 0);
+  sendPacket(header);
+  free(header);
+
+  uint8_t ret = responsePayload(buf);
+  LDBG("ret=");
+  LDBG(ret);
+  if(ret != ERR_SUCCESS) {
+    return ERR_ID809;
+  }
+  
+  char data[1];
+  data[0] = 1;
+  header = pack(CMD_TYPE, CMD_UP_IMAGE_CODE, data, 1);
+  sendPacket(header);
+  free(header);
+
+  ret = responsePayload(buf);
+  LDBG("ret=");
+  LDBG(ret);
+  if(ret != ERR_SUCCESS) {
+    return ERR_ID809;
+  }
+  char *tempData= (char *)malloc(500 +1);
+  for(uint8_t i=0;i<13;i++){
+
+     ret = responsePayload(tempData);
+     if(i == 12)
+       memcpy(image+i*496,tempData+2,448);
+     else
+       memcpy(image+i*496,tempData+2,496);
+  }
+  free(tempData);
+
+}
+uint8_t DFRobot_ID809::downLoadImage(uint16_t id,uint8_t * temp)
+{
+  char data[4];
+  data[0] = 0xa0;
+  data[1] = 0;
+  data[2] = 0xa0;
+  data[3] = 0;
+  pCmdPacketHeader_t header = pack(CMD_TYPE, CMD_DOWN_IMAGE, data, 4);
+  sendPacket(header);
+  free(header);
+
+  uint8_t ret = responsePayload(buf);
+  LDBG("ret=");
+  LDBG(ret);
+  if(ret != ERR_SUCCESS) {
+    return ERR_ID809;
+  }
+  char *tempData= (char *)malloc(500);
+  for(uint8_t i =0 ;i<52;i++){
+     tempData[0] = i;
+	 tempData[1] = 0;
+     if(i == 51){
+       memcpy(tempData+2,temp+i*496,304);
+       header = pack(DATA_TYPE, CMD_DOWN_IMAGE, tempData, 306);
+	 }else{
+       memcpy(tempData+2,temp+i*496,496);
+       header = pack(DATA_TYPE, CMD_DOWN_IMAGE, tempData, 498);
+     }
+     sendPacket(header);
+     
+     free(header);
+     
+     ret = responsePayload(buf);
+     LDBG("ret=");
+     LDBG(ret);
+     if(ret != ERR_SUCCESS) {
+       return ERR_ID809;
+     }
+     
+  }  
+  free(tempData);
+  
+  data[0] = 0;
+  data[1] = 0;
+  header = pack(CMD_TYPE, CMD_GENERATE, data, 2);
+  sendPacket(header);
+  free(header);
+
+  ret = responsePayload(buf);
+  LDBG("ret=");
+  LDBG(ret);
+  if(ret != ERR_SUCCESS) {
+   // return ERR_ID809;
+  }
+  return store(id);
+
+}
+
+uint8_t DFRobot_ID809::receiveImageData(uint8_t * image){
+
+
+
+  uint8_t ret = responsePayload(image);
+  if(ret != ERR_SUCCESS) {
+    return ERR_ID809;
+  }
+
+}
+String DFRobot_ID809::getModuleSN(){
+    char *data;
+    pCmdPacketHeader_t header = pack(CMD_TYPE, CMD_GET_MODULE_SN, NULL, 0);
+    sendPacket(header);
+    free(header);
+    uint8_t result = responsePayload(buf);
+    LDBG("result=");LDBG(result);
+    if(result != ERR_SUCCESS){
+        return "";
+    }
+    uint16_t dataLen = buf[0]+(buf[1]<<8)+1;
+    if((data = (char *)malloc(dataLen)) == NULL){
+        LDBG("no memory!!!\r\n");
+        while(1);
+    }
+    data[dataLen] = 0;
+    result = responsePayload(data);
+    LDBG("result=");LDBG(result);
+    String ret = String(data);
+    free(data);
+    return ret;
+}
+
+uint8_t DFRobot_ID809::ctrlLED(eLEDMode_t mode,eLEDColor_t color,uint8_t blinkCount){
+    char data[4] = {0};
+  if(FINGERPRINT_CAPACITY == 80){
+    data[0] = mode;
+    data[2] = data[1] = color;
+    data[3] = blinkCount;
+  }else{
+	if(mode == 1){
+	  data[0] = 2;
+	} else if(mode == 2){
+		data[0] = 4;
+	} else if(mode == 3){
+	    data[0] = 1;
+	} else if(mode == 4){
+		data[0] = 0;
+	} else if(mode == 5){
+		data[0] = 3;
+	}
+	if(color == eLEDGreen){
+          data[2] = data[1] =  0x84;
+        }else if(color == eLEDRed){
+	  data[2] = data[1] = 0x82;
+	}else if(color == eLEDYellow){
+	  data[2] = data[1] = 0x86;
+	}else if(color == eLEDBlue){
+	  data[2] = data[1] = 0x81;
+	}else if(color == eLEDCyan){
+	  data[2] = data[1] = 0x85;
+	}else if(color == eLEDMagenta){
+	  data[2] = data[1] = 0x83;
+	}else {
+	  data[2] = data[1] = 0x87;
+	}
+  }
+    pCmdPacketHeader_t header = pack(CMD_TYPE, CMD_SLED_CTRL, data, 4);
+    sendPacket(header);
+    free(header);
+    uint8_t ret = responsePayload(buf);
+    LDBG("ret=");LDBG(ret);
+    return ret;
+}
+
+uint8_t DFRobot_ID809::detectFinger(){
+    pCmdPacketHeader_t header = pack(CMD_TYPE, CMD_FINGER_DETECT, NULL, 0);
+    sendPacket(header);
+    free(header);
+    uint8_t ret = responsePayload(buf);
+    LDBG("ret=");LDBG(ret);
+    if(ret == ERR_SUCCESS){
+        ret = buf[0];
+    }
+    return ret;
+}
+
+uint8_t DFRobot_ID809::getEmptyID(){
+    char data[4] = {0};
+    data[0] = 1;
+    data[2] = FINGERPRINT_CAPACITY;     //80 fingerprints at most, default to full range 
+    pCmdPacketHeader_t header = pack(CMD_TYPE, CMD_GET_EMPTY_ID, data, 4);
+    sendPacket(header);
+    free(header);
+    uint8_t ret = responsePayload(buf);
+    LDBG("ret=");LDBG(ret);
+    if(ret == ERR_SUCCESS){
+        ret = buf[0];
+    }
+    return ret;
+}
+
+uint8_t DFRobot_ID809::getStatusID(uint8_t ID){
+    char data[2] = {0};
+    data[0] = ID;
+    pCmdPacketHeader_t header = pack(CMD_TYPE, CMD_GET_STATUS, data, 2);
+    sendPacket(header);
+    free(header);
+    uint8_t ret = responsePayload(buf);
+    LDBG("ret=");LDBG(ret);
+    if(ret == ERR_SUCCESS){
+        ret = buf[0];
+    }
+    return ret;
+}
+
+uint8_t DFRobot_ID809::getEnrollCount(){
+    char data[4] = {0};
+    data[0] = 1;
+    data[2] = FINGERPRINT_CAPACITY;
+    pCmdPacketHeader_t header = pack(CMD_TYPE, CMD_GET_ENROLL_COUNT, data, 4);
+    sendPacket(header);
+    free(header);
+    uint8_t ret = responsePayload(buf);
+    LDBG("ret=");LDBG(ret);
+    if(ret == ERR_SUCCESS){
+        ret = buf[0];
+    }
+    return ret;
+}
+
+#define  getID(A, V)  (A[0 + V/8] & (0x01 << (V & 0x07)))
+uint8_t DFRobot_ID809::getEnrolledIDList(uint8_t* list)
+{
+    char *data;
+    uint8_t i = 0;
+    pCmdPacketHeader_t header = pack(CMD_TYPE, CMD_GET_ENROLLED_ID_LIST, NULL, 0);
+    sendPacket(header);
+    free(header);
+    uint8_t ret = responsePayload(buf);
+    LDBG("ret=");LDBG(ret);
+    uint16_t dataLen = buf[0]+(buf[1]<<8);
+    if((data = (char *)malloc(dataLen)) == NULL){
+        LDBG("no memory!!!\r\n");
+        while(1);
+    }
+    ret = responsePayload(data);
+    LDBG("ret=");LDBG(ret);
+    if(ret != ERR_SUCCESS){
+        ret = ERR_ID809;
+    }else{
+        for(uint16_t j = 0; j < (dataLen*8); j++){
+            if(getID(data, j) != 0){
+                list[i] = j;
+                i++;
+            }
+        }
+    }
+    free(data);
+    return ret;
+}
+
+uint8_t DFRobot_ID809::storeFingerprint(uint8_t ID){
+    char data[4] = {0};
+    uint8_t ret;
+    ret = merge();
+    LDBG("ret=");LDBG(ret);
+    if(ret != ERR_SUCCESS){
+        return ERR_ID809;
+    }
+    _number = 0;
+    data[0] = ID;
+    pCmdPacketHeader_t header = pack(CMD_TYPE, CMD_STORE_CHAR, data, 4);
+    sendPacket(header);
+    free(header);
+    ret = responsePayload(buf);
+    LDBG("ret=");LDBG(ret);
+    return ret;
+    
+}
+uint8_t DFRobot_ID809::store(uint8_t ID){
+
+
+  char data[4] = {0};
+  uint8_t ret;
+  LDBG("ret=");
+  LDBG(ret);
+  data[0] = ID;
+  pCmdPacketHeader_t header = pack(CMD_TYPE, CMD_STORE_CHAR, data, 4);
+  sendPacket(header);
+  free(header);
+  ret = responsePayload(buf);
+  LDBG("ret=");
+  LDBG(ret);
+  return ret;
+}
+uint8_t DFRobot_ID809::delFingerprint(uint8_t ID)
+{
+  char data[4] = {0};
+  if(ID == DELALL) {
+    data[0] = 1;
+    data[2] = FINGERPRINT_CAPACITY;
+  } else {
+    data[0] = data[2] = ID;
+  }
+  pCmdPacketHeader_t header = pack(CMD_TYPE, CMD_DEL_CHAR, data, 4);
+  sendPacket(header);
+  free(header);
+  uint8_t ret = responsePayload(buf);
+  LDBG("ret=");
+  LDBG(ret);
+  return ret;
+}
+
+uint8_t DFRobot_ID809::search(){
+    if(_state == 1){
+        char data[6] = {0};
+        data[2] = 1;
+        data[4] = FINGERPRINT_CAPACITY;
+        _number = 0;
+        pCmdPacketHeader_t header = pack(CMD_TYPE, CMD_SEARCH, data, 6);
+        sendPacket(header);
+        free(header);
+        uint8_t ret = responsePayload(buf);
+        LDBG("ret=");LDBG(ret);
+        if(ret == ERR_SUCCESS){
+            ret = buf[0];
+        }else{
+            ret = 0;
+        }
+        return ret;
+    }
+    return 0;
+}
+
+uint8_t DFRobot_ID809::verify(uint8_t ID){
+    if(_state == 1){
+        char data[4] = {0};
+        data[0] = ID;
+        _number = 0;
+        pCmdPacketHeader_t header = pack(CMD_TYPE, CMD_VERIFY, data, 4);
+        sendPacket(header);
+        free(header);
+        uint8_t ret = responsePayload(buf);
+        LDBG("ret=");LDBG(ret);
+        if(ret == ERR_SUCCESS){
+            ret = buf[0];
+        }else{
+            ret = 0;
+        }
+        return ret;
+    }
+    return 0;
+}
+
+uint8_t DFRobot_ID809::match(uint8_t RamBufferID0, uint8_t RamBufferID1){
+    char data[4] = {0};
+    data[0] = RamBufferID0;
+    data[2] = RamBufferID1;
+    pCmdPacketHeader_t header = pack(CMD_TYPE, CMD_MATCH, data, 4);
+    sendPacket(header);
+    free(header);
+    uint8_t ret = responsePayload(buf);
+    LDBG("ret=");LDBG(ret);
+    if(ret == ERR_SUCCESS){
+        ret = buf[0];
+    }else{
+        ret = 0;
+    }
+    return ret;
+}
+
+uint8_t DFRobot_ID809::getBrokenQuantity(){
+    char data[4] = {0};
+    data[0] = 1;
+    data[2] = FINGERPRINT_CAPACITY;
+    pCmdPacketHeader_t header = pack(CMD_TYPE, CMD_GET_BROKEN_ID, data, 4);
+    sendPacket(header);
+    free(header);
+    uint8_t ret = responsePayload(buf);
+    LDBG("ret=");LDBG(ret);
+    if(ret == ERR_SUCCESS){
+        ret = buf[0];
+    }
+    return ret;
+}
+
+uint8_t DFRobot_ID809::getBrokenID(){
+    char data[4] = {0};
+    data[0] = 1;
+    data[2] = FINGERPRINT_CAPACITY;
+    pCmdPacketHeader_t header = pack(CMD_TYPE, CMD_GET_BROKEN_ID, data, 4);
+    sendPacket(header);
+    free(header);
+    uint8_t ret = responsePayload(buf);
+    LDBG("ret=");LDBG(ret);
+    if(ret == ERR_SUCCESS){
+        ret = buf[2];
+    }
+    return ret;
+}
+
+uint8_t DFRobot_ID809::loadFingerprint(uint8_t ID, uint8_t RamBufferID){
+    char data[4] = {0};
+    data[0] = ID;
+    data[2] = RamBufferID;
+    pCmdPacketHeader_t header = pack(CMD_TYPE, CMD_LOAD_CHAR, data, 4);
+    sendPacket(header);
+    free(header);
+    uint8_t ret = responsePayload(buf);
+    LDBG("ret=");LDBG(ret);
+    return ret;
+}
+
+uint8_t DFRobot_ID809::enterStandbyState(){
+    pCmdPacketHeader_t header = pack(CMD_TYPE, CMD_ENTER_STANDBY_STATE, NULL, 0);
+    sendPacket(header);
+    free(header);
+    uint8_t ret = responsePayload(buf);
+    LDBG("ret=");LDBG(ret);
+    return ret;
+}
+
+uint8_t DFRobot_ID809::setParam(uint8_t* data){
+    pCmdPacketHeader_t header = pack(CMD_TYPE, CMD_SET_PARAM, (const char *)data, 5);
+    sendPacket(header);
+    free(header);
+    uint8_t ret = responsePayload(buf);
+    LDBG("ret=");LDBG(ret);
+    return ret;
+}
+
+uint8_t DFRobot_ID809::getParam(uint8_t* data){
+    pCmdPacketHeader_t header = pack(CMD_TYPE, CMD_GET_PARAM, (const char *)data, 1);
+    sendPacket(header);
+    free(header);
+    uint8_t ret = responsePayload(buf);
+    LDBG("ret=");LDBG(ret);
+    if(ret == ERR_SUCCESS){
+        ret = buf[0];
+    }
+    return ret;
+}
+
+uint8_t DFRobot_ID809::getImage(){
+    pCmdPacketHeader_t header = pack(CMD_TYPE, CMD_GET_IMAGE, NULL, 0);
+    sendPacket(header);
+    free(header);
+    uint8_t ret = responsePayload(buf);
+    LDBG("ret=");LDBG(ret);
+    return ret;
+}
+
+uint8_t DFRobot_ID809::collectionFingerprint(uint16_t timeout,int ramNumber){  //Collect fingerprint 
+    uint16_t i = 0;
+    uint8_t ret;
+   if(ramNumber == -1){
+     if(_number > 2){
+         _error = eErrorGatherOut;
+         LDBG("Exceed upper limit of acquisition times ");
+         return ERR_ID809;
+     }
+   }
+    while(!detectFinger()){
+        if(timeout != 0){
+            delay(10);
+            if(++i > timeout*10){
+                _error = eErrorTimeOut;
+                LDBG("Acquisition timeout ");
+                LDBG("ret=");LDBG(ret);
+                _state = 0;
+                return ERR_ID809;
+            }
+       }
+    }
+    ret = getImage();
+    LDBG("ret=");LDBG(ret);
+    if(ret != ERR_SUCCESS){
+        _state = 0;
+        return ERR_ID809;
+    }
+   if(ramNumber != -1){
+     ret = generate(ramNumber);
+   } else{
+     ret = generate(_number);
+   }
+	LDBG("ret=");LDBG(ret);
+    if(ret != ERR_SUCCESS){
+        _state = 0;
+        return ERR_ID809;
+    }
+    _number++;
+    _state = 1;
+    return ret;
+}
+
+uint8_t DFRobot_ID809::generate(uint8_t RamBufferID){
+    char data[2] = {0};
+    data[0] = RamBufferID;
+    pCmdPacketHeader_t header = pack(CMD_TYPE, CMD_GENERATE, (const char *)data, 2);
+    sendPacket(header);
+    free(header);
+    uint8_t ret = responsePayload(buf);
+    LDBG("ret=");LDBG(ret);
+    return ret;
+}
+
+uint8_t DFRobot_ID809::merge(){
+    char data[3] = {0};
+    data[2] = _number;
+    pCmdPacketHeader_t header = pack(CMD_TYPE, CMD_MERGE, data, 3);
+    sendPacket(header);
+    free(header);
+    uint8_t ret = responsePayload(buf);
+    LDBG("ret=");LDBG(ret);
+    return ret;
+}
+
+pCmdPacketHeader_t DFRobot_ID809::pack(uint8_t type, uint16_t cmd, const char *payload, uint16_t len){
+    pCmdPacketHeader_t header;
+    uint16_t cks=0;
+    uint16_t dataLen;
+    if(type == CMD_TYPE){    //Structure of command packet, fixed 26 bytes:10(frame header)+14(data)+2(CKS)
+        if((header = (pCmdPacketHeader_t)malloc(sizeof(sCmdPacketHeader_t)+16+2)) == NULL){
+            return NULL;
+        }
+        header->PREFIX = CMD_PREFIX_CODE;
+        for(int i=0;i<16;i++){
+            header->payload[i] = 0;
+        }
+        dataLen = 16;   //Length of data to be replicated 
+    }else{                   //Structure of command data packet, unfixed length:10(frame header)+LEN(data)+2(CKS)
+        if((header = (pCmdPacketHeader_t)malloc(sizeof(sCmdPacketHeader_t)+len+2)) == NULL){
+            return NULL;
+        }
+        header->PREFIX = CMD_DATA_PREFIX_CODE;
+        dataLen = len;   //Length of data to be replicated 
+    }
+    header->SID = 0;
+    header->DID = 0;
+    header->CMD = cmd;
+    header->LEN = len;
+    if(len){
+        memcpy(header->payload, payload, len);
+    }
+    cks = getCmdCKS(header);
+    memcpy(&header->payload[dataLen],&cks,2);
+    _PacketSize = sizeof(sCmdPacketHeader_t) + dataLen +2;
+    return header;
+}
+
+
+void DFRobot_ID809::sendPacket(pCmdPacketHeader_t header){
+    s->write((uint8_t *)header,_PacketSize);
+}
+
+uint8_t DFRobot_ID809::responsePayload(void* buf){
+    sRcmPacketHeader_t header;
+    uint16_t dataLen,dataCount,cks;
+    uint8_t ch,ret;
+    int16_t type;
+    type = readPrefix(&header);
+    if(type == 1){
+        LDBG("--recv timeout---");
+        _error = eErrorRecvTimeout;
+        return ERR_ID809;
+    }
+    pRcmPacketHeader_t packet;
+    if(type == RCM_TYPE){    //Structure of response packet, fixed 26 bytes: 10(frame header)+14(data)+2(CKS)
+        packet = (pRcmPacketHeader_t)malloc(sizeof(sRcmPacketHeader_t)+14+2);
+        dataLen = 14+2;      //Length of data+CKS
+        if(packet == NULL){
+            LDBG("");
+            while(1);
+        }
+    }else{                   //Structure of response data packet, unfixed length: 10(frame header)+(LEN-2)(data)+2(CKS)
+        packet = (pRcmPacketHeader_t)malloc(sizeof(sRcmPacketHeader_t)+header.LEN);
+        dataLen = header.LEN;  //Length of data+CKS
+        if(packet == NULL){
+            LDBG("");
+            while(1);
+        }
+    }
+    memcpy(packet, &header, 10);
+    dataCount = readN(packet->payload, dataLen);
+    cks = packet->payload[dataLen-2]+(packet->payload[dataLen-1]<<8);
+    ret = (header.RET&0xFF);
+    _error = (eError_t)ret;
+    if(ret != ERR_SUCCESS){
+        ret = ERR_ID809;
+    }else if(dataLen != dataCount){
+        LDBG("--recvRspPacket length error---");
+        _error = eErrorRecvLength;
+        ret = ERR_ID809;
+    }else if(getRcmCKS(packet) != cks){
+        LDBG("--recvRspPacket cks error---");
+        _error = eErrorRecvCks;
+        ret = ERR_ID809;
+    }else{
+        LDBG("--recvRspPacket OK---");
+        memcpy(buf, packet->payload, dataLen);
+    }
+    free(packet);
+    packet = NULL;
+    return ret;
+}
+
+uint16_t DFRobot_ID809::readPrefix( pRcmPacketHeader_t header ){
+    uint8_t ch,ret;
+    typedef enum{
+        RECV_HEADER_INIT,
+        RECV_HEADER_AA,
+        RECV_HEADER_A5,
+        RECV_HEADER_OK
+    }eRecvHeaderState;
+    eRecvHeaderState state = RECV_HEADER_INIT;
+    while(state != RECV_HEADER_OK){   //Can judge the received command packet and command data packet prefix at the same time 
+        if(readN(&ch, 1) != 1){
+            ret = 1;
+            return ret;
+        }
+        if((ch == 0xAA) && (state == RECV_HEADER_INIT)){
+            state = RECV_HEADER_AA;
+            continue;
+        }else if((ch == 0xA5) && (state == RECV_HEADER_INIT)){
+            state = RECV_HEADER_A5;
+            continue;
+        }else if((ch == 0x55) && (state == RECV_HEADER_AA)){
+            state = RECV_HEADER_OK;
+            ret = RCM_TYPE;
+            continue;
+        }else if((ch == 0x5A) && (state == RECV_HEADER_A5)){
+            state = RECV_HEADER_OK;
+            ret = DATA_TYPE;
+            continue;
+        }else{
+            state = RECV_HEADER_INIT;
+            if(ch == 0xAA){
+                state = RECV_HEADER_AA;
+            }else if(ch == 0xA5){
+                state = RECV_HEADER_A5;
+            }
+        }
+    }
+    if(ret == RCM_TYPE){
+        header->PREFIX = RCM_PREFIX_CODE;
+    }else if(ret == DATA_TYPE){
+        header->PREFIX = RCM_DATA_PREFIX_CODE;
+    }
+    readN(&header->SID, 1);
+    readN(&header->DID, 1);
+    readN(&header->RCM, 2);
+    readN(&header->LEN, 2);
+    readN(&header->RET, 2);
+    return ret;
+}
+
+size_t DFRobot_ID809::readN(void* buffer, size_t len){
+    size_t offset = 0,left = len;
+    uint8_t *buf = (uint8_t*)buffer;
+    long long curr = millis();
+    while(left){
+        if(s->available()){
+            buf[offset++] = s->read();
+            left--;
+        }
+        if(millis() - curr > 5000){
+            LDBG("----------!!!!!!!!!recv timeout----------");
+            break;
+        }
+    }
+    return offset;
+}
+
+uint16_t DFRobot_ID809::getCmdCKS(pCmdPacketHeader_t packet){
+    uint16_t cks = 0xFF;
+    cks += packet->SID;
+    cks += packet->DID;
+    cks += packet->CMD&0xFF;
+    cks += packet->CMD>>8;
+    cks += packet->LEN&0xFF;
+    cks += packet->LEN>>8;
+    if(packet->LEN > 0){
+        uint8_t *p = packet->payload;
+        for(uint16_t i = 0; i < packet->LEN; i++){
+            cks += p[i];
+        }
+    }
+    return cks&0xFFFF;
+}
+
+uint16_t DFRobot_ID809::getRcmCKS(pRcmPacketHeader_t packet){
+    uint16_t cks = 0xFF;
+    cks += packet->SID;
+    cks += packet->DID;
+    cks += packet->RCM&0xFF;
+    cks += packet->RCM>>8;
+    cks += packet->LEN&0xFF;
+    cks += packet->LEN>>8;
+    cks += packet->RET&0xFF;
+    cks += packet->RET>>8;
+    if(packet->LEN > 0){
+        uint8_t *p = packet->payload;
+        for(uint16_t i = 0; i < packet->LEN-2; i++){
+            cks += p[i];
+        }
+    }
+    return cks&0xFFFF;
+}
+
+const DFRobot_ID809::sErrorDescription_t DFRobot_ID809::errorDescriptionsTable[]={
+  {eErrorSuccess, "Command processed successfully"},
+  {eErrorFail, "Command processing failed"},
+  {eErrorVerify, "1:1 comparison failed"},
+  {eErrorIdentify, "Comparison with all fingerprints failed"},
+  {eErrorTmplEmpty, "No fingerprint in designated ID"},
+  {eErrorTmplNotEmpty, "Designated ID has fingerprint"},
+  {eErrorAllTmplEmpty, "Module unregistered fingerprint"},
+  {eErrorEmptyIDNoexist, "No registerable ID here"},
+  {eErrorBrokenIDNoexist, "No broken fingerprint"},
+  {eErrorInvalidTmplData, "Invalid desingated fingerprint data"},
+  {eErrorDuplicationID, "The fingerprint has been registered"},
+  {eErrorBadQuality, "Poor quality fingerprint image"},
+  {eErrorMergeFail, "Fingerprint synthesis failed"},
+  {eErrorNotAuthorized, "Communication password not authorized"},
+  {eErrorMemory, "External Flash burning error"},
+  {eErrorInvalidTmplNo, "Invalid designated ID"},
+  {eErrorInvalidParam, "Incorrect parameter"},
+  {eErrorTimeOut, "Acquisition timeout"},
+  {eErrorGenCount, "Invalid number of fingerprint synthesis"},
+  {eErrorInvalidBufferID, "Incorrect Buffer ID value"},
+  {eErrorFPNotDetected, "No fingerprint input into fingerprint reader"},
+  {eErrorFPCancel, "Command cancelled"},
+  {eErrorRecvLength, "Wrong data length"},
+  {eErrorRecvCks, "Wrong data check code"},
+  {eErrorGatherOut, "Exceed upper limit of acquisition times"},
+  {eErrorRecvTimeout,"Data reading timeout"}
+};
+
+String DFRobot_ID809::getErrorDescription()
+{
+    for(int i=0;i<sizeof(errorDescriptionsTable)/sizeof(errorDescriptionsTable[0]);i++){
+        if(_error == errorDescriptionsTable[i].error){
+          return errorDescriptionsTable[i].description;
+        }
+    }
+    return "";
+}
+
diff --git a/TestSHA256/lib/DFRobot_ID809/DFRobot_ID809.h b/TestSHA256/lib/DFRobot_ID809/DFRobot_ID809.h
new file mode 100644
index 0000000..acb9dfd
--- /dev/null
+++ b/TestSHA256/lib/DFRobot_ID809/DFRobot_ID809.h
@@ -0,0 +1,504 @@
+
+/*!
+ * @file DFRobot_ID809.h
+ * @brief Define basic structure of DFRobot_ID809 class
+ * @n This is an library for capacitive fingerprint module
+ * @n Main functions: fingerprint image capturing, fingerprint comparison, fingerprint deletion
+ * @copyright   Copyright (c) 2010 DFRobot Co.Ltd (http://www.dfrobot.com)
+ * @licence     The MIT License (MIT)
+ * @author [Eddard](eddard.liu@dfrobot.com)
+ * @version  V1.0
+ * @date  2020-03-19
+ * @get from https://www.dfrobot.com
+ * @url https://github.com/cdjq/DFRobot_ID809
+ */
+
+#ifndef _DFRobot_ID809_H
+#define _DFRobot_ID809_H
+
+#if ARDUINO >= 100
+#include "Arduino.h"
+#else
+#include "WProgram.h"
+#endif
+#include <Wire.h>
+
+#include <stdint.h>
+
+//Open this macro to see the detailed running process of the program 
+
+//#define ENABLE_DBG
+#ifdef ENABLE_DBG
+#define LDBG(...) if(dbg) {dbg->print("["); dbg->print(__FUNCTION__); dbg->print("(): "); dbg->print(__LINE__); dbg->print(" ] "); dbg->println(__VA_ARGS__);}
+#else
+#define LDBG(...)
+#endif
+
+extern Stream *dbg;
+
+  /*
+   Frame struct of command packet 
+  */
+typedef struct{
+  uint16_t  PREFIX;
+  uint8_t   SID;
+  uint8_t   DID;
+  uint16_t  CMD;
+  uint16_t  LEN;
+  uint8_t payload[0];
+}__attribute__ ((packed)) sCmdPacketHeader_t, *pCmdPacketHeader_t;
+
+  /*
+   Frame struct of response packet 
+  */
+typedef struct{
+  uint16_t  PREFIX;
+  uint8_t   SID;
+  uint8_t   DID;
+  uint16_t  RCM;
+  uint16_t  LEN;
+  uint16_t  RET;
+  uint8_t   payload[0];
+}__attribute__ ((packed)) sRcmPacketHeader_t, *pRcmPacketHeader_t;
+
+  
+
+
+class DFRobot_ID809{
+public: 
+
+//#define FINGERPRINT_CAPACITY     80      //Fingerprint module capacity
+#define MODULE_SN_SIZE           16      //Module SN length 
+
+
+#define DELALL                   0xFF    //Delete all fingerprints 
+
+#define CMD_PREFIX_CODE          0xAA55  //Command packet prefix code 
+#define RCM_PREFIX_CODE          0x55AA  //Response packet prefix code 
+#define CMD_DATA_PREFIX_CODE     0xA55A  //Command data packet prefix code 
+#define RCM_DATA_PREFIX_CODE     0x5AA5  //Response data packet prefix code 
+
+#define CMD_TYPE                 0xF0    //Command packet type 
+#define RCM_TYPE                 0xF0    //Response packet type 
+#define DATA_TYPE                0x0F    //Data packet type 
+
+#define CMD_TEST_CONNECTION      0X0001  //Test connection 
+#define CMD_SET_PARAM            0X0002  //Set parameter
+#define CMD_GET_PARAM            0X0003  //Read parameter 
+#define CMD_DEVICE_INFO          0X0004  //Read device information 
+#define CMD_SET_MODULE_SN        0X0008  //Set module serial number 
+#define CMD_GET_MODULE_SN        0X0009  //Read module serial number
+#define CMD_ENTER_STANDBY_STATE  0X000C  //Enter sleep mode 
+#define CMD_GET_IMAGE            0X0020  //Capture fingerprint image 
+#define CMD_FINGER_DETECT        0X0021  //Detect fingerprint 
+    #define CMD_UP_IMAGE_CODE        0X0022  //Upload fingerprint image to host 
+    #define CMD_DOWN_IMAGE           0X0023  //Download fingerprint image to module 
+#define CMD_SLED_CTRL            0X0024  //Control collector backlight 
+#define CMD_STORE_CHAR           0X0040  //Save fingerprint template data into fingerprint library 
+#define CMD_LOAD_CHAR            0X0041  //Read fingerprint in module and save it in RAMBUFFER temporarily  
+    #define CMD_UP_CHAR              0X0042  //Upload the fingerprint template saved in RAMBUFFER to host 
+    #define CMD_DOWN_CHAR            0X0043  //Download fingerprint template to module designated RAMBUFFER
+#define CMD_DEL_CHAR             0X0044  //Delete fingerprint in specific ID range 
+#define CMD_GET_EMPTY_ID         0X0045  //Get the first registerable ID in specific ID range 
+#define CMD_GET_STATUS           0X0046  //Check if the designated ID has been registered 
+#define CMD_GET_BROKEN_ID        0X0047  //Check whether there is damaged data in fingerprint library of specific range
+#define CMD_GET_ENROLL_COUNT     0X0048  //Get the number of registered fingerprints in specific ID range 
+#define CMD_GET_ENROLLED_ID_LIST 0X0049  //Get registered ID list
+#define CMD_GENERATE             0X0060  //Generate template from the fingerprint images saved in IMAGEBUFFER temporarily 
+#define CMD_MERGE                0X0061  //Synthesize fingerprint template data 
+#define CMD_MATCH                0X0062  //Compare templates in 2 designated RAMBUFFER 
+#define CMD_SEARCH               0X0063  //1:N Recognition in specific ID range 
+#define CMD_VERIFY               0X0064  //Compare specific RAMBUFFER template with specific ID template in fingerprint library 
+
+#define ERR_SUCCESS              0x00    //Command processed successfully 
+#define ERR_ID809                0xFF    //error 
+
+
+public:
+  
+  typedef enum{
+    eBreathing = 1,  //Breathing 
+    eFastBlink,      //Quick blink
+    eKeepsOn,        //On
+    eNormalClose,    //Off
+    eFadeIn,         //Fade in 
+    eFadeOut,        //Fade out
+    eSlowBlink       //Slow blink
+  }eLEDMode_t;
+  
+  typedef enum{
+    eLEDGreen = 1,   //green 
+    eLEDRed,         //red 
+    eLEDYellow,      //yellow
+    eLEDBlue,        //blue
+    eLEDCyan,        //cyan
+    eLEDMagenta,     //magenta
+    eLEDWhite        //white
+  }eLEDColor_t;
+   
+  typedef enum{
+    e9600bps = 1,
+    e19200bps,
+    e38400bps,
+    e57600bps,
+    e115200bps
+  }eDeviceBaudrate_t;
+  
+  typedef enum{
+    eErrorSuccess            = 0x00,    //Command processed successfully
+    eErrorFail               = 0x01,    //Command processing failed 
+    eErrorVerify             = 0x10,    //1:1 Templates comparison in specific ID failed 
+    eErrorIdentify           = 0x11,    //1:N comparison has been made, no same templates here 
+    eErrorTmplEmpty          = 0x12,    //No registered template in the designated ID 
+    eErrorTmplNotEmpty       = 0x13,    //Template already exists in the specified ID 
+    eErrorAllTmplEmpty       = 0x14,    //No registered Template 
+    eErrorEmptyIDNoexist     = 0x15,    //No registerable Template ID 
+    eErrorBrokenIDNoexist    = 0x16,    //No damaged Template 
+    eErrorInvalidTmplData    = 0x17,    //The designated Template Data is invalid 
+    eErrorDuplicationID      = 0x18,    //The fingerprint has been registered 
+    eErrorBadQuality         = 0x19,    //Poor quality fingerprint image 
+    eErrorMergeFail          = 0x1A,    //Template synthesis failed 
+    eErrorNotAuthorized      = 0x1B,    //Communication password not authorized 
+    eErrorMemory             = 0x1C,    //Error in exernal Flash burning 
+    eErrorInvalidTmplNo      = 0x1D,    //The designated template ID is invalid 
+    eErrorInvalidParam       = 0x22,    //Incorrect parameter has been used 
+    eErrorTimeOut            = 0x23,    //Acquisition timeout 
+    eErrorGenCount           = 0x25,    //Invalid number of fingerprint synthesis 
+    eErrorInvalidBufferID    = 0x26,    //Wrong Buffer ID value 
+    eErrorFPNotDetected      = 0x28,    //No fingerprint input into fingerprint reader 
+    eErrorFPCancel           = 0x41,    //Command cancelled 
+    eErrorRecvLength         = 0x42,    //Wrong length of recieved data 
+    eErrorRecvCks            = 0x43,    //Wrong check code 
+    eErrorGatherOut          = 0x45,    //Exceed upper limit of acquisition times 
+    eErrorRecvTimeout        = 0x46     //Communication timeout 
+  }eError_t;
+  
+  typedef struct{
+    /**< Gesture enumeration variable X */
+    eError_t error;
+    /**< Description about the gesture enumeration variable X */
+    const char * description;
+  }sErrorDescription_t;
+
+public:
+  DFRobot_ID809();
+  ~DFRobot_ID809();
+  
+  /**
+   * @brief Init communication port
+   * @param Software serial or hardware serial 
+   * @return true or false
+   */
+  bool begin(Stream &s_);
+  
+  /**
+   * @brief Test whether the module connection is ok
+   * @return true or false
+   */
+  bool isConnected();
+  
+  /**
+   * @brief Set module ID
+   * @param ID:1-255
+   * @return 0(succeed) or ERR_ID809
+   */
+  uint8_t setDeviceID(uint8_t deviceID);
+  
+  /**
+   * @brief Set module security level 
+   * @param security level:1-5
+   * @return 0(succeed) or ERR_ID809
+   */
+  uint8_t setSecurityLevel(uint8_t securityLevel);
+  
+  /**
+   * @brief Set module fingerprint replication check (Check whether the fingperint has been registered when saving it)
+   * @param 1(ON) or 0(OFF)
+   * @return 0(succeed) or ERR_ID809
+   */
+  uint8_t setDuplicationCheck(uint8_t duplicationCheck);
+  
+  /**
+   * @brief Set module baud rate 
+   * @param Baudrate:in typedef enum eDeviceBaudrate_t
+   * @return 0(succeed) or ERR_ID809
+   */
+  uint8_t setBaudrate(eDeviceBaudrate_t baudrate);
+  
+  /**
+   * @brief Set module self-learning function (Update fingeprint when fingerprint comparison succeeds)
+   * @param 1(ON) or 0(OFF)
+   * @return 0(succeed) or ERR_ID809
+   */
+  uint8_t setSelfLearn(uint8_t selfLearn);
+  
+  /**
+   * @brief Read module ID
+   * @return ID号:1-255 or ERR_ID809
+   */
+  uint8_t getDeviceID();
+  
+  /**
+   * @brief Read module security level 
+   * @return Security level:1-5 or ERR_ID809
+   */
+  uint8_t getSecurityLevel();
+  
+  /**
+   * @brief Read module fingerprint replication check status
+   * @return Status:1(ON), 0(OFF) or ERR_ID809
+   */
+  uint8_t getDuplicationCheck();
+  
+  /**
+   * @brief Read module baud rate 
+   * @return Baudrate:in typedef enum eDEVICE_BAUDRATE_t or ERR_ID809
+   */
+  uint8_t getBaudrate();
+  
+  /**
+   * @brief Read module self-learning function status 
+   * @return Status:1(ON), 0(OFF) or ERR_ID809
+   */
+  uint8_t getSelfLearn();
+  uint8_t getTemplate(uint16_t id,uint8_t * temp);
+  uint8_t downLoadTemplate(uint16_t id,uint8_t * temp);
+  uint8_t getFingerImage(uint8_t *image);
+  uint8_t downLoadImage(uint16_t id,uint8_t * temp);
+  uint8_t receiveImageData(uint8_t *image);
+  uint8_t getQuarterFingerImage(uint8_t *image);
+  uint8_t contrastTemplate(uint8_t *temp);
+  /**
+   * @brief Read device number 
+   * @return Device number
+   */
+  String getDeviceInfo();
+  
+  /**
+   * @brief Set serial number
+   * @param String pointer 
+   * @return 0(succeed) or ERR_ID809
+   */
+  uint8_t setModuleSN(const char* SN);
+  /**
+   * @brief Read serial number 
+   * @return Serial number
+   */
+  String getModuleSN();
+  
+  /**
+   * @brief Set LED
+   * @param mode:in typedef enum eLEDMode_t
+   * @param color:in typedef enum eLEDColor_t
+   * @param blink Count: 00 represents blinking all the time
+   * @This parameter will only be valid in mode eBreathing, eFastBlink, eSlowBlink
+   * @return 0(succeed) or ERR_ID809
+   */
+  uint8_t ctrlLED(eLEDMode_t mode,eLEDColor_t color,uint8_t blinkCount);
+  
+  /**
+   * @brief Detect if there is finger touched 
+   * @return 1(Touched) or 0(No touch)
+   */
+  uint8_t detectFinger();
+  
+  /**
+   * @brief Get the first registerable ID 
+   * @return Registerable ID or ERR_ID809
+   */
+  uint8_t getEmptyID();
+  
+  /**
+   * @brief Check if the ID has been registered 
+   * @return 0(Registered), 1(Unregistered) or ERR_ID809
+   */
+  uint8_t getStatusID(uint8_t ID);
+  
+  /**
+   * @brief Get the number of registered users 
+   * @return Number of registered users or ERR_ID809
+   */
+  uint8_t getEnrollCount();
+  
+  /**
+   * @brief Get registered user list 
+   * @return 0(succeed) or ERR_ID809
+   */
+   uint8_t getEnrolledIDList(uint8_t* list);
+  
+  /**
+   * @brief Fingerprint acquisition 
+   * @return 0(succeed) or ERR_ID809
+   */
+  uint8_t collectionFingerprint(uint16_t timeout,int ramNumber = -1);
+  
+  /**
+   * @brief Save fingerprint 
+   * @param Fingerprint ID
+   * @return 0(succeed) or ERR_ID809
+   */
+  uint8_t storeFingerprint(uint8_t ID);
+  
+  /**
+   * @brief Delete fingerprint 
+   * @param Delete ID or DELALL(delete all)
+   * @return 0(succeed) or ERR_ID809
+   */
+  uint8_t delFingerprint(uint8_t ID);
+  
+  /**
+   * @brief Match the fingerprint with all fingeprints 
+   * @return Successfully matched fingerprint ID, 0(Matching failed) or ERR_ID809
+   */
+  uint8_t search();
+
+  /**
+   * @brief Match the fingerprint with specific fingerprint 
+   * @return Successfully matched fingerprint ID, 0(Matching failed) or ERR_ID809
+   */
+  uint8_t verify(uint8_t ID);
+
+  /**
+   * @brief Compare templates in two specific RamBuffers
+   * @param RamBuffer number 
+   * @param RamBuffer number 
+   * @return 0(succeed) or ERR_ID809
+   */
+  uint8_t match(uint8_t RamBufferID0, uint8_t RamBufferID1);
+  
+  /**
+   * @brief Get the number of damaged fingerprints 
+   * @return Damaged fingerprint ID or ERR_ID809
+   */
+  uint8_t getBrokenQuantity();
+
+  /**
+   * @brief Get the first damaged fingerprint ID 
+   * @return Damaged fingerprint ID or ERR_ID809
+   */
+  uint8_t getBrokenID();
+  
+  /**
+   * @brief Take out fingerprint template, temporarily save into RamBuffer
+   * @param Fingerprint ID 
+   * @param RamBuffer number 0-2
+   * @return 0(succeed) or ERR_ID809
+   */
+  uint8_t loadFingerprint(uint8_t ID, uint8_t RamBufferID);
+  
+  /**
+   * @brief Enter Standby mode
+   * @return 0(succeed) or ERR_ID809
+   */
+  uint8_t enterStandbyState();
+  
+  /**
+   * @brief Get error information
+   * @return Text description of error information
+   */
+  String getErrorDescription();
+  
+  bool setDbgSerial(Stream &s_){dbg = &s_; return true;}
+    uint16_t FINGERPRINT_CAPACITY = 80;
+protected:
+   /**
+   * @brief Set parameter 
+   * @param Data type+ data
+   * @return 0(succeed) or ERR_ID809
+   */
+  uint8_t setParam(uint8_t* data);
+  
+   /**
+   * @brief Read parameter 
+   * @param Data type 
+   * @return data or ERR_ID809
+   */
+  uint8_t getParam(uint8_t* data);
+  
+  /**
+   * @brief Capture fingerprint image 
+   * @return 0(succeed) or ERR_ID809
+   */
+  uint8_t getImage();
+   
+   /**
+   * @brief Take image as template 
+   * @param Ram Buffer number
+   * @return 0(succeed) or ERR_ID809
+   */
+  uint8_t generate(uint8_t RamBufferID);
+  
+ /**
+   * @brief Fingerprint synthesis 
+   * @return 0(succeed) or ERR_ID809
+   */
+  uint8_t merge();
+  
+ /**
+   * @brief Packing data frame 
+   * @param Data type:CMD_TYPE or DATA_TYPE
+   * @param Command
+   * @param Data 
+   * @param Length
+   * @return Data frame 
+   */
+  pCmdPacketHeader_t pack(uint8_t type, uint16_t cmd, const char *payload, uint16_t len);
+  
+ /**
+   * @brief Send data 
+   * @param Data frame
+   */
+  void sendPacket(pCmdPacketHeader_t header);
+  
+ /**
+   * @brief Read byte 
+   * @param Pointer for saving data 
+   * @param Length of data to be received 
+   * @return Actual received data length 
+   */
+  size_t readN(void* buf_, size_t len);
+  
+ /**
+   * @brief Read frame header 
+   * @param Frame header struct of response packet
+   * @return Response packet type:RCM_TYPE,DATA_TYPE or 1(reading timeout)
+   */
+  uint16_t readPrefix( pRcmPacketHeader_t header );
+  
+ /**
+   * @brief Read data
+   * @param Pointer for saving data 
+   * @return 0(success) or ERR_ID809
+   */
+  uint8_t responsePayload(void* buf);
+  
+ /**
+   * @brief Get command packet CKS
+   * @param Command packet frame 
+   * @return CKS
+   */
+  uint16_t getCmdCKS(pCmdPacketHeader_t packet);
+  
+ /**
+   * @brief Get response packet CKS
+   * @param Response packet frame 
+   * @return CKS
+   */
+  uint16_t getRcmCKS(pRcmPacketHeader_t packet);
+  uint8_t store(uint8_t ID);
+  
+private:
+  Stream *s;
+  uint8_t buf[20];     //For saving response packet data 
+  pCmdPacketHeader_t  sendHeader;
+  pRcmPacketHeader_t  recHeader;
+  
+  static const sErrorDescription_t /*PROGMEM*/ errorDescriptionsTable[26];   //Error information list 
+  
+  uint8_t _number = 0;       //Fingerprint acquisistion times 
+  uint8_t _state = 0;        //Collect fingerprint state
+  eError_t _error;           //Error code 
+  uint16_t _PacketSize = 0;  //Data packet length to be sent 
+};
+
+#endif
diff --git a/TestSHA256/lib/SHA256/sha256.c b/TestSHA256/lib/SHA256/sha256.c
new file mode 100644
index 0000000..cf66018
--- /dev/null
+++ b/TestSHA256/lib/SHA256/sha256.c
@@ -0,0 +1,169 @@
+/*********************************************************************
+* Filename:   sha256.c
+* Author:     Brad Conte (brad AT bradconte.com)
+* Copyright:
+* Disclaimer: This code is presented "as is" without any guarantees.
+* Details:    Implementation of the SHA-256 hashing algorithm.
+              SHA-256 is one of the three algorithms in the SHA2
+              specification. The others, SHA-384 and SHA-512, are not
+              offered in this implementation.
+              Algorithm specification can be found here:
+               * http://csrc.nist.gov/publications/fips/fips180-2/fips180-2withchangenotice.pdf
+              This implementation uses little endian byte order.
+*********************************************************************/
+
+/*************************** HEADER FILES ***************************/
+#include <stdlib.h>
+#include <string.h>
+//#include <memory.h>
+#include "sha256.h"
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+
+/****************************** MACROS ******************************/
+#define ROTLEFT(a,b) (((a) << (b)) | ((a) >> (32-(b))))
+#define ROTRIGHT(a,b) (((a) >> (b)) | ((a) << (32-(b))))
+
+#define CH(x,y,z) (((x) & (y)) ^ (~(x) & (z)))
+#define MAJ(x,y,z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
+#define EP0(x) (ROTRIGHT(x,2) ^ ROTRIGHT(x,13) ^ ROTRIGHT(x,22))
+#define EP1(x) (ROTRIGHT(x,6) ^ ROTRIGHT(x,11) ^ ROTRIGHT(x,25))
+#define SIG0(x) (ROTRIGHT(x,7) ^ ROTRIGHT(x,18) ^ ((x) >> 3))
+#define SIG1(x) (ROTRIGHT(x,17) ^ ROTRIGHT(x,19) ^ ((x) >> 10))
+
+/**************************** VARIABLES *****************************/
+static const WORD k[64] = {
+	0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5,0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5,
+	0xd807aa98,0x12835b01,0x243185be,0x550c7dc3,0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174,
+	0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc,0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da,
+	0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7,0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967,
+	0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13,0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85,
+	0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3,0xd192e819,0xd6990624,0xf40e3585,0x106aa070,
+	0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5,0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3,
+	0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208,0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2
+};
+
+/*********************** FUNCTION DEFINITIONS ***********************/
+void sha256_transform(SHA256_CTX *ctx, const BYTE data[])
+{
+	WORD a, b, c, d, e, f, g, h, i, j, t1, t2, m[64];
+
+	for (i = 0, j = 0; i < 16; ++i, j += 4)
+		m[i] = (data[j] << 24) | (data[j + 1] << 16) | (data[j + 2] << 8) | (data[j + 3]);
+	for ( ; i < 64; ++i)
+		m[i] = SIG1(m[i - 2]) + m[i - 7] + SIG0(m[i - 15]) + m[i - 16];
+
+	a = ctx->state[0];
+	b = ctx->state[1];
+	c = ctx->state[2];
+	d = ctx->state[3];
+	e = ctx->state[4];
+	f = ctx->state[5];
+	g = ctx->state[6];
+	h = ctx->state[7];
+
+	for (i = 0; i < 64; ++i) {
+		t1 = h + EP1(e) + CH(e,f,g) + k[i] + m[i];
+		t2 = EP0(a) + MAJ(a,b,c);
+		h = g;
+		g = f;
+		f = e;
+		e = d + t1;
+		d = c;
+		c = b;
+		b = a;
+		a = t1 + t2;
+	}
+
+	ctx->state[0] += a;
+	ctx->state[1] += b;
+	ctx->state[2] += c;
+	ctx->state[3] += d;
+	ctx->state[4] += e;
+	ctx->state[5] += f;
+	ctx->state[6] += g;
+	ctx->state[7] += h;
+}
+
+void sha256_init(SHA256_CTX *ctx)
+{
+	ctx->datalen = 0;
+	ctx->bitlen = 0;
+	ctx->state[0] = 0x6a09e667;
+	ctx->state[1] = 0xbb67ae85;
+	ctx->state[2] = 0x3c6ef372;
+	ctx->state[3] = 0xa54ff53a;
+	ctx->state[4] = 0x510e527f;
+	ctx->state[5] = 0x9b05688c;
+	ctx->state[6] = 0x1f83d9ab;
+	ctx->state[7] = 0x5be0cd19;
+}
+
+void sha256_update(SHA256_CTX *ctx, const BYTE data[], size_t len)
+{
+	WORD i;
+
+	for (i = 0; i < len; ++i) {
+		ctx->data[ctx->datalen] = data[i];
+		ctx->datalen++;
+		if (ctx->datalen == 64) {
+			sha256_transform(ctx, ctx->data);
+			ctx->bitlen += 512;
+			ctx->datalen = 0;
+		}
+	}
+}
+
+void sha256_final(SHA256_CTX *ctx, BYTE hash[])
+{
+	WORD i;
+
+	i = ctx->datalen;
+
+	// Pad whatever data is left in the buffer.
+	if (ctx->datalen < 56) {
+		ctx->data[i++] = 0x80;
+		while (i < 56)
+			ctx->data[i++] = 0x00;
+	}
+	else {
+		ctx->data[i++] = 0x80;
+		while (i < 64)
+			ctx->data[i++] = 0x00;
+		sha256_transform(ctx, ctx->data);
+		memset(ctx->data, 0, 56);
+	}
+
+	// Append to the padding the total message's length in bits and transform.
+	ctx->bitlen += ctx->datalen * 8;
+	ctx->data[63] = ctx->bitlen;
+	ctx->data[62] = ctx->bitlen >> 8;
+	ctx->data[61] = ctx->bitlen >> 16;
+	ctx->data[60] = ctx->bitlen >> 24;
+	ctx->data[59] = ctx->bitlen >> 32;
+	ctx->data[58] = ctx->bitlen >> 40;
+	ctx->data[57] = ctx->bitlen >> 48;
+	ctx->data[56] = ctx->bitlen >> 56;
+	sha256_transform(ctx, ctx->data);
+
+	// Since this implementation uses little endian byte ordering and SHA uses big endian,
+	// reverse all the bytes when copying the final state to the output hash.
+	for (i = 0; i < 4; ++i) {
+		hash[i]      = (ctx->state[0] >> (24 - i * 8)) & 0x000000ff;
+		hash[i + 4]  = (ctx->state[1] >> (24 - i * 8)) & 0x000000ff;
+		hash[i + 8]  = (ctx->state[2] >> (24 - i * 8)) & 0x000000ff;
+		hash[i + 12] = (ctx->state[3] >> (24 - i * 8)) & 0x000000ff;
+		hash[i + 16] = (ctx->state[4] >> (24 - i * 8)) & 0x000000ff;
+		hash[i + 20] = (ctx->state[5] >> (24 - i * 8)) & 0x000000ff;
+		hash[i + 24] = (ctx->state[6] >> (24 - i * 8)) & 0x000000ff;
+		hash[i + 28] = (ctx->state[7] >> (24 - i * 8)) & 0x000000ff;
+	}
+}
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/TestSHA256/lib/SHA256/sha256.h b/TestSHA256/lib/SHA256/sha256.h
new file mode 100644
index 0000000..bc64c5f
--- /dev/null
+++ b/TestSHA256/lib/SHA256/sha256.h
@@ -0,0 +1,48 @@
+
+/*********************************************************************
+* Filename:   sha256.h
+* Author:     Brad Conte (brad AT bradconte.com)
+* Copyright:
+* Disclaimer: This code is presented "as is" without any guarantees.
+* Details:    Defines the API for the corresponding SHA1 implementation.
+*********************************************************************/
+
+#ifndef SHA256_H
+#define SHA256_H
+
+/*************************** HEADER FILES ***************************/
+#include <stddef.h>
+
+/****************************** MACROS ******************************/
+#define SHA256_BLOCK_SIZE 32            // SHA256 outputs a 32 byte digest
+
+
+/**************************** DATA TYPES ****************************/
+typedef unsigned char BYTE;             // 8-bit byte
+typedef unsigned int  WORD;             // 32-bit word, change to "long" for 16-bit machines
+
+typedef struct {
+	BYTE data[64];
+	WORD datalen;
+	unsigned long long bitlen;
+	WORD state[8];
+} SHA256_CTX;
+
+/*********************** FUNCTION DECLARATIONS **********************/
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+	
+void sha256_init(SHA256_CTX *ctx);
+void sha256_update(SHA256_CTX *ctx, const BYTE data[], size_t len);
+void sha256_final(SHA256_CTX *ctx, BYTE hash[]);
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif   // SHA256_H
diff --git a/TestSHA256/platformio.ini b/TestSHA256/platformio.ini
new file mode 100644
index 0000000..4dc36fc
--- /dev/null
+++ b/TestSHA256/platformio.ini
@@ -0,0 +1,9 @@
+[env:Teensy_SHA]
+
+platform = teensy
+framework = arduino
+board = teensy31
+
+lib_deps = 
+	lib/SHA256
+	lib/DFRobot_ID809
diff --git a/TestSHA256/src/main.cpp b/TestSHA256/src/main.cpp
new file mode 100644
index 0000000..7fc6a6b
--- /dev/null
+++ b/TestSHA256/src/main.cpp
@@ -0,0 +1,178 @@
+#include <Arduino.h>
+#include <sha256.h>
+#include <DFRobot_ID809.h>
+
+// use serial3 as interface with fingerprint
+// sensor .
+#define FPSerial Serial3
+
+// define buillt_in led
+#define BUILTIN_LED 13
+// Collect the fingerprint 3 times
+#define COLLECT_NUMBER 3
+#define SHA256_SIZE	32 
+
+/*------Funciotion dclarations----------*/
+// function to blink blitin_led
+// to make sure that code is working
+void blink_led();
+
+/*------Global variables--------------*/
+DFRobot_ID809 fingerprint;
+byte hash[SHA256_SIZE];
+
+uint8_t ID, i, ret;
+uint8_t temp[1008];
+
+void compute_hash() {
+
+	SHA256_CTX ctx;
+	sha256_init(&ctx);
+	sha256_update(&ctx, temp, sizeof(temp));
+	sha256_final(&ctx, hash);
+ // SHA256 hasher;
+ // hasher.doUpdate(temp, sizeof(temp));
+ // hasher.doFinal(hash);
+}
+
+void setup() {
+  // config led_pin as output
+  pinMode(BUILTIN_LED, OUTPUT);
+  // use serial port to print the baud rate
+  Serial.begin(9600);
+
+  FPSerial.begin(115200);
+  fingerprint.begin(FPSerial);
+
+  while (fingerprint.isConnected() == false) {
+    Serial.println("Communication with the device failed");
+    delay(1000);
+  }
+
+  // fingerprint.getTemplate(1, temp);
+
+  // for(uint8_t i=0; i<1008; i++) {
+  //         Serial.print(i);
+  //         Serial.print(": ");
+  //         Serial.println(temp[i]);
+  //         delay(100);
+  // }
+
+  // compute_hash();
+  // Serial.println("------------------------");
+  //  for (uint8_t i = 0; i < SHA256_SIZE; i++) {
+  //
+  //    if (hash[i] < 0x10) {
+  //      Serial.print('0');
+  //    }
+  //    Serial.print(hash[i], HEX);
+  //    Serial.print(" ");
+  //  }
+  //  Serial.println("------------------------");
+}
+
+void loop() {
+
+  uint8_t ret = 0;
+  /*Set fingerprint LED ring mode, color, and number of blinks
+    Can be set as follows:
+    Parameter 1:<LEDMode>
+    eBreathing   eFastBlink   eKeepsOn    eNormalClose
+    eFadeIn      eFadeOut     eSlowBlink
+    Parameter 2:<LEDColor>
+    eLEDGreen  eLEDRed      eLEDYellow   eLEDBlue
+    eLEDCyan   eLEDMagenta  eLEDWhite
+    Parameter 3:<number of blinks> 0 represents blinking all the time
+    This parameter will only be valid in mode eBreathing, eFastBlink, eSlowBlink
+   */
+  fingerprint.ctrlLED(/*LEDMode = */ fingerprint.eBreathing,
+                      /*LEDColor = */ fingerprint.eLEDBlue,
+                      /*blinkCount = */ 0);
+  Serial.println("Please press down your finger");
+  /*Capture fingerprint image, Disable the collection timeout function
+    If succeed return 0, otherwise return ERR_ID809
+   */
+  if ((fingerprint.collectionFingerprint(/*timeout=*/0)) != ERR_ID809) {
+    /*Set fingerprint LED ring to quick blink in yellow 3 times*/
+    fingerprint.ctrlLED(/*LEDMode = */ fingerprint.eFastBlink,
+                        /*LEDColor = */ fingerprint.eLEDYellow,
+                        /*blinkCount = */ 3);
+    Serial.println("Capturing succeeds");
+    Serial.println("Please release your finger");
+    /*Wait for finger to release
+      Return 1 when finger is detected, otherwise return 0
+     */
+    while (fingerprint.detectFinger())
+      ;
+
+    /*Compare the captured fingerprint with all the fingerprints in the
+      fingerprint library Return fingerprint ID(1-80) if succeed, return 0 when
+      failed
+     */
+    ret = fingerprint.search();
+    /*Compare the captured fingerprint with a fingerprint of specific ID
+      Return fingerprint ID(1-80) if succeed, return 0 when failed
+     */
+    // ret = fingerprint.verify(/*Fingerprint ID = */1);
+    if (ret != 0) {
+      /*Set fingerprint LED ring to always ON in green */
+      fingerprint.ctrlLED(/*LEDMode = */ fingerprint.eKeepsOn,
+                          /*LEDColor = */ fingerprint.eLEDGreen,
+                          /*blinkCount = */ 0);
+      Serial.print("Matching succeeds,ID=");
+      Serial.println(ret);
+
+      fingerprint.getTemplate(ret, temp);
+
+      // for(uint8_t i=0; i<1008; i++) {
+      //         Serial.print(i);
+      //         Serial.print(": ");
+      //         Serial.println(temp[i]);
+      //         delay(100);
+      // }
+
+       compute_hash();
+      Serial.println("--------------------");
+      for (uint8_t i = 0; i < SHA256_SIZE; i++) {
+
+        if (hash[i] < 0x10) {
+          Serial.print('0');
+        }
+        Serial.print(hash[i], HEX);
+        Serial.print(" ");
+      }
+      Serial.println("---------------------");
+      for (uint16_t i = 0; i < 1008; i++) {
+        Serial.print(temp[i], HEX);
+        Serial.print(" ");
+      }
+
+    } else {
+      /*Set fingerprint LED ring to always ON in red*/
+      fingerprint.ctrlLED(/*LEDMode = */ fingerprint.eKeepsOn,
+                          /*LEDColor = */ fingerprint.eLEDRed,
+                          /*blinkCount = */ 0);
+      Serial.println("Matching fails");
+    }
+  } else {
+    Serial.println("Capturing fails");
+    /*Get error code information*/
+    // desc = fingerprint.getErrorDescription();
+    // Serial.println(desc);
+  }
+  Serial.println("-----------------------------");
+  delay(1000);
+  /*Set the fingerprint LED ring as blue breathing light*/
+  fingerprint.ctrlLED(/*LEDMode = */ fingerprint.eBreathing,
+                      /*LEDColor = */ fingerprint.eLEDBlue,
+                      /*blinkCount = */ 0);
+
+  blink_led();
+}
+
+void blink_led() {
+  digitalWrite(BUILTIN_LED, HIGH);
+  delay(500);
+  digitalWrite(BUILTIN_LED, LOW);
+  delay(500);
+}
-- 
GitLab