aboutsummaryrefslogtreecommitdiff
path: root/bootloaders/caterina_LUFA
diff options
context:
space:
mode:
authorZach Eveland <zeveland@blacklabel-development.com>2012-01-19 21:17:12 -0500
committerZach Eveland <zeveland@blacklabel-development.com>2012-01-19 21:17:12 -0500
commitd8cc8cdf4a44312b4789c9aaf8f2ba0f2a5437f4 (patch)
tree10c55a5c1047374b06f003412d71cb645b9e23f6 /bootloaders/caterina_LUFA
parent11334827168091350e7d96ede1fd325faaef61fb (diff)
added Board/LEDs.h to LUFA-based Caterina
Diffstat (limited to 'bootloaders/caterina_LUFA')
-rwxr-xr-xbootloaders/caterina_LUFA/Board/LEDs.h128
-rw-r--r--bootloaders/caterina_LUFA/Caterina.hex279
2 files changed, 268 insertions, 139 deletions
diff --git a/bootloaders/caterina_LUFA/Board/LEDs.h b/bootloaders/caterina_LUFA/Board/LEDs.h
new file mode 100755
index 0000000..d73b0bc
--- /dev/null
+++ b/bootloaders/caterina_LUFA/Board/LEDs.h
@@ -0,0 +1,128 @@
+/*
+ LUFA Library
+ Copyright (C) Dean Camera, 2011.
+
+ dean [at] fourwalledcubicle [dot] com
+ www.lufa-lib.org
+*/
+
+/*
+ Copyright 2011 Dean Camera (dean [at] fourwalledcubicle [dot] com)
+
+ Permission to use, copy, modify, distribute, and sell this
+ software and its documentation for any purpose is hereby granted
+ without fee, provided that the above copyright notice appear in
+ all copies and that both that the copyright notice and this
+ permission notice and warranty disclaimer appear in supporting
+ documentation, and that the name of the author not be used in
+ advertising or publicity pertaining to distribution of the
+ software without specific, written prior permission.
+
+ The author disclaim all warranties with regard to this
+ software, including all implied warranties of merchantability
+ and fitness. In no event shall the author be liable for any
+ special, indirect or consequential damages or any damages
+ whatsoever resulting from loss of use, data or profits, whether
+ in an action of contract, negligence or other tortious action,
+ arising out of or in connection with the use or performance of
+ this software.
+*/
+
+#ifndef __LEDS_LEONARDO_H__
+#define __LEDS_LEONARDO_H__
+
+ /* Enable C linkage for C++ Compilers: */
+ #if defined(__cplusplus)
+ extern "C" {
+ #endif
+
+ /* Preprocessor Checks: */
+ #if !defined(__INCLUDE_FROM_LEDS_H)
+ #error Do not include this file directly. Include LUFA/Drivers/Board/LEDS.h instead.
+ #endif
+
+ /* Public Interface - May be used in end-application: */
+ /* Macros: */
+ /** LED mask for the TX LED on the board. */
+ #define LEDS_TX_LED (1 << 5)
+ #define LEDS_TX_LED_DDR DDRD
+ #define LEDS_TX_LED_PORT PORTD
+
+ /** LED mask for the RX LED on the board. */
+ #define LEDS_RX_LED (1 << 0)
+ #define LEDS_RX_LED_DDR DDRB
+ #define LEDS_RX_LED_PORT PORTB
+
+ /** LED mask for the "L" LED on the board. */
+ #define LEDS_L_LED (1 << 7)
+ #define LEDS_L_LED_DDR DDRC
+ #define LEDS_L_LED_PORT PORTC
+
+ /** LED mask for all the LEDs on the board. */
+ #define LEDS_ALL_LEDS (LEDS_TX_LED | LEDS_RX_LED | LEDS_L_LED)
+
+ /** LED mask for none of the board LEDs. */
+ #define LEDS_NO_LEDS 0
+
+ /* Inline Functions: */
+ #if !defined(__DOXYGEN__)
+ static inline void LEDs_Init(void)
+ {
+ LEDS_TX_LED_DDR |= LEDS_TX_LED;
+ LEDS_RX_LED_DDR |= LEDS_RX_LED;
+ LEDS_L_LED_DDR |= LEDS_L_LED;
+ LEDS_TX_LED_PORT |= LEDS_TX_LED;
+ LEDS_RX_LED_PORT |= LEDS_RX_LED;
+ LEDS_L_LED_PORT &= ~LEDS_L_LED; // unlike TX and RX LEDs, L LED is active-high
+ }
+
+ static inline void LEDs_TurnOnLEDs(const uint8_t LEDMask)
+ {
+ LEDS_TX_LED_PORT &= ~(LEDMask & LEDS_TX_LED);
+ LEDS_RX_LED_PORT &= ~(LEDMask & LEDS_RX_LED);
+ LEDS_L_LED_PORT |= (LEDMask & LEDS_L_LED);
+ }
+
+ static inline void LEDs_TurnOffLEDs(const uint8_t LEDMask)
+ {
+ LEDS_TX_LED_PORT |= (LEDMask & LEDS_TX_LED);
+ LEDS_RX_LED_PORT |= (LEDMask & LEDS_RX_LED);
+ LEDS_L_LED_PORT &= ~(LEDMask & LEDS_L_LED);
+ }
+
+ static inline void LEDs_SetAllLEDs(const uint8_t LEDMask)
+ {
+// PORTD = ((PORTD & ~LEDS_ALL_LEDS) | LEDMask);
+ LEDs_TurnOffLEDs(LEDS_ALL_LEDS);
+ LEDs_TurnOnLEDs(LEDMask);
+ }
+
+ static inline void LEDs_ChangeLEDs(const uint8_t LEDMask,
+ const uint8_t ActiveMask)
+ {
+ LEDs_TurnOffLEDs(LEDMask);
+ LEDs_TurnOnLEDs(ActiveMask);
+ }
+
+ static inline void LEDs_ToggleLEDs(const uint8_t LEDMask)
+ {
+ LEDS_TX_LED_PORT ^= (LEDMask & LEDS_TX_LED);
+ LEDS_RX_LED_PORT ^= (LEDMask & LEDS_RX_LED);
+ LEDS_L_LED_PORT ^= (LEDMask & LEDS_L_LED);
+ }
+
+ static inline uint8_t LEDs_GetLEDs(void) ATTR_WARN_UNUSED_RESULT;
+ static inline uint8_t LEDs_GetLEDs(void)
+ {
+ return ((LEDS_TX_LED_PORT & LEDS_TX_LED) | (LEDS_RX_LED_PORT & LEDS_RX_LED) | (LEDS_L_LED_PORT & LEDS_L_LED));
+ }
+ #endif
+
+ /* Disable C linkage for C++ Compilers: */
+ #if defined(__cplusplus)
+ }
+ #endif
+
+#endif
+
+
diff --git a/bootloaders/caterina_LUFA/Caterina.hex b/bootloaders/caterina_LUFA/Caterina.hex
index 79bf083..c304a50 100644
--- a/bootloaders/caterina_LUFA/Caterina.hex
+++ b/bootloaders/caterina_LUFA/Caterina.hex
@@ -1,6 +1,6 @@
:1070000055C000006EC000006CC000006AC00000E7
:1070100068C0000066C0000064C0000062C00000DC
-:1070200060C000005EC0000040C400005AC0000004
+:1070200060C000005EC0000047C400005AC00000FD
:1070300058C0000056C0000054C0000052C00000FC
:1070400050C000004EC000004CC000004AC000000C
:1070500049C0000046C0000044C0000042C000001B
@@ -9,11 +9,11 @@
:1070800030C000002EC000002CC000002AC000004C
:1070900028C0000026C0000024C0000022C000005C
:1070A00020C000001EC000001CC0000011241FBE34
-:1070B000CFEFDAE0DEBFCDBF11E0A0E0B1E0EEEC53
+:1070B000CFEFDAE0DEBFCDBF11E0A0E0B1E0ECED54
:1070C000FDE702C005900D92AC38B107D9F711E089
-:1070D000ACE8B1E001C01D92AA39B107E1F719D3BC
-:1070E00074C68ECF1F920F920FB60F9211248F93FA
-:1070F0009F938BB190E389278BB99F918F910F90CC
+:1070D000ACE8B1E001C01D92AA39B107E1F71BD3BA
+:1070E0007BC68ECF1F920F920FB60F9211248F93F3
+:1070F0008BB18BB985B185B988B188B98F910F9063
:107100000FBE0F901F90189584E08093E9000DC08A
:107110008091E8008B778093E80003C08EB38823CA
:1071200051F08091E80082FFF9CF8091E80085FF5F
@@ -52,7 +52,7 @@
:10733000EE29FF29E4918E2FFFDEDD2081F082E02F
:1073400090E0A0E0B0E0E80EF91E0A1F1B1FE092DB
:107350008C01F0928D0100938E0110938F01DC243B
-:1073600018C0D801C701B695A7959795879517D5E9
+:1073600018C0D801C701B695A795979587951ED5E2
:10737000E3DE82E090E0A0E0B0E0E80EF91E0A1F34
:107380001B1FE0928C01F0928D0100938E011093EF
:107390008F012197209709F0BECF19C180908C01F1
@@ -66,7 +66,7 @@
:107410008D0100938E0110938F0102C075DE582EEE
:10742000742423C0E0908C01F0908D0100918E01B6
:1074300010918F0116950795F794E79465DE682FF4
-:10744000C701B5D480918C0190918D01A0918E01DE
+:10744000C701BCD480918C0190918D01A0918E01D7
:10745000B0918F010296A11DB11D80938C01909374
:107460008D01A0938E01B0938F01219704C0552404
:10747000772444244394209709F0A5CF96E4691615
@@ -83,12 +83,12 @@
:10752000E0918C01F0918D0105911491812F04DE81
:10753000802F4CC0843421F5E0908C01F0908D01B7
:1075400000918E0110918F0116950795F794E7949D
-:10755000DBDD682FC7012BD480918C0190918D01C8
+:10755000DBDD682FC70132D480918C0190918D01C1
:10756000A0918E01B0918F010296A11DB11D809353
:107570008C0190938D01A0938E01B0938F0115CE55
:10758000843609F5E0908C01F0908D0100918E0118
:1075900010918F01D801C701B695A795979587954A
-:1075A000FED3CADD82E090E0A0E0B0E0E80EF91E74
+:1075A00005D4CADD82E090E0A0E0B0E0E80EF91E6C
:1075B0000A1F1B1FE0928C01F0928D0100938E0137
:1075C00010938F0104C08B3111F08FE3B5DD83E0A0
:1075D0008093E9009091E8008091E8008E77809395
@@ -98,135 +98,136 @@
:1076100084E08093E9008091E8008B778093E80014
:10762000DF91CF911F910F91FF90EF90DF90CF905E
:10763000BF90AF909F908F907F906F905F904F9092
-:10764000089520919201822F8F77813269F58BB155
-:1076500090E389278BB9809193018032A1F0813228
-:1076600019F5213A09F58091E800877F8093E800B9
-:1076700089E091E067E070E0C9D18091E8008B7704
-:107680008093E8000895213279F48091E800877FA3
-:107690008093E80089E091E067E070E01BD2809180
-:1076A000E8008E778093E800089582E061EC42E084
-:1076B00073D083E061E842E16FD084E060E842E1AA
-:1076C0006BC01F9384B7877F84BF88E10FB6F8949F
-:1076D00080936000109260000FBE80E090E020E890
-:1076E0000FB6F89420936100809361000FBE11E003
-:1076F00015BF82E085BFC1D08AB1806F8AB98BB1D6
-:107700008F708BB910936F0083E0809381001F917D
-:107710000895D7DF8BB18F7080618BB9789402C0E8
-:1077200023DD2BD3809108018823D1F78091E000DD
-:1077300081608093E0002CE088E190E00FB6F8943F
-:10774000A895809360000FBE20936000FFCFFA01E0
-:10775000923071F0933089F0913029F480E191E01A
-:1077600022E130E015C080E090E020E030E010C081
-:1077700082E291E02EE330E00BC0882329F480E61A
-:1077800091E024E030E004C084E691E026E230E0BD
-:1077900091838083C90108958093E9008091EB0073
-:1077A00081608093EB001092ED006093EC004093B9
-:1077B000ED008091EE00881F8827881F0895809132
-:1077C000920188238CF403C08EB38823B1F080919A
-:1077D000E80082FFF9CF8091E8008B778093E80082
-:1077E00008958EB3882349F08091E80080FFF9CF97
-:1077F0008091E8008E778093E8000895EF92FF92E1
-:107800000F931F9345D04CD008ED10E0F801808114
-:107810008F77808380818068808380818F7D808363
-:1078200019BC1EBA1092900180EEE82EF12CF701DF
-:1078300080818B7F8083F80180818160808380E0FC
-:1078400060E042E0A9DFE1EEF0E080818E7F80839E
-:10785000E2EEF0E0808181608083808188608083B7
-:10786000F70180818E7F8083F80180818061808331
-:107870001F910F91FF90EF900895E7EDF0E0808168
-:10788000816080838AE482BF81E080939101B6CFDA
-:10789000E8EDF0E080818E7F80831092E200089511
-:1078A0001092DA001092E10008951F920F920FB625
-:1078B0000F9211242F933F934F935F936F937F9376
-:1078C0008F939F93AF93BF93EF93FF938091DA00D1
-:1078D00080FF1BC08091D80080FF17C08091DA0024
-:1078E0008E7F8093DA008091D90080FF0BC080E109
-:1078F00089BD82E189BD09B400FEFDCF81E08EBB68
-:107900003BD203C019BC1EBA37D28091E10080FF80
-:1079100017C08091E20080FF13C08091E2008E7F4B
-:107920008093E2008091E20080618093E200809188
-:10793000D80080628093D80019BC85E08EBB1CD231
-:107940008091E10084FF2CC08091E20084FF28C078
-:1079500080E189BD82E189BD09B400FEFDCF80913F
-:10796000D8008F7D8093D8008091E1008F7E809336
-:10797000E1008091E2008F7E8093E2008091E2003E
-:1079800081608093E20080919001882331F480919E
-:10799000E30087FD02C081E001C084E08EBBECD132
-:1079A0008091E10083FF21C08091E20083FF1DC030
-:1079B0008091E100877F8093E10082E08EBB10928E
-:1079C00090018091E1008E7F8093E1008091E20040
-:1079D0008E7F8093E2008091E20080618093E200DC
-:1079E00080E060E042E0D8DEC7D1FF91EF91BF9127
-:1079F000AF919F918F917F916F915F914F913F9147
-:107A00002F910F900FBE0F901F9018959C014091E1
-:107A10009801509199014617570718F4F90190E021
-:107A200044C06115710511F0AB01F8CF8091E800F9
-:107A30008E778093E80040E050E0F0CF8EB388234B
-:107A400009F444C0853009F443C08091E80083FF05
-:107A500002C081E008958091E80082FD31C08091EC
-:107A6000E80080FF22C08091F3009091F200782F0F
-:107A700060E0292F30E0262B372B07C081918093BF
-:107A8000F100415050402F5F3F4F4115510519F013
-:107A90002830310598F390E02830310509F491E061
-:107AA0008091E8008E778093E8004115510531F60A
-:107AB000992321F605C08EB3882341F0853041F02B
-:107AC0008091E80082FFF7CF80E0089582E008957A
-:107AD00083E008959C016115710529F48091E80007
-:107AE0008B778093E800F90126C08EB3882391F14B
-:107AF000853091F18091E80083FF02C081E0089514
-:107B00008091E80082FFF1CF06C08091F10081935F
-:107B10006150704059F02091F3008091F200322FB3
-:107B200020E090E0822B932B892B79F78091E8005D
-:107B30008B778093E80061157105B9F605C08EB3A7
-:107B4000882341F0853041F08091E80080FFF7CF35
-:107B500080E0089582E0089583E008950F931F93D5
-:107B6000DF93CF9300D0CDB7DEB7E2E9F1E08091AB
-:107B7000F100819381E0EA39F807C9F762DD80916D
-:107B8000E80083FFE4C080919201909193019530C9
-:107B900009F46DC0963040F4913081F1913070F06D
-:107BA000933009F0D4C02AC0983009F4A3C09930AA
-:107BB00009F4B2C0963009F0CAC07CC0803809F41C
-:107BC000C6C0823809F0C3C0809196018770809347
-:107BD000E9008091EB001092E9002091E800277FF6
-:107BE0002093E80090E025E0969587952A95E1F7A7
-:107BF00081708093F1001092F10087C0882319F002
-:107C0000823009F0A4C08F71823009F0A0C0809149
-:107C10009401882331F520919601277009F497C0CB
-:107C20002093E9008091EB0080FF1BC0933021F48A
-:107C30008091EB00806213C08091EB0080618093A3
-:107C4000EB0081E090E002C0880F991F2A95E2F7CF
-:107C50008093EA001092EA008091EB0088608093A4
-:107C6000EB001092E9008091E800877F51C08823E3
-:107C700009F06DC0109194011F770FB7F8948091AF
-:107C8000E800877F8093E8009ADD8091E80080FF1C
-:107C9000FCCF8091E3008078812B8093E3008068A3
-:107CA0008093E300112311F482E001C083E08EBBD6
-:107CB0000FBF4DC08058823008F049C080919401B8
-:107CC0009091950160919601AE014F5F5F4F3FDD4E
-:107CD000BC01009709F43BC08091E800877F809346
-:107CE000E80089819A8192DE8091E8008B77809309
-:107CF000E8002DC0803859F58091E800877F809397
-:107D0000E800809190018093F1008091E8008E77E7
-:107D10008093E80054DD1BC08823C9F4909194013E
-:107D20009230A8F48091E800877F8093E8009093D8
-:107D3000900145DD80919001882331F48091E3002A
-:107D400087FD02C081E001C084E08EBBAEDC809183
-:107D5000E80083FF0AC08091EB0080628093EB0013
-:107D60008091E800877F8093E8000F900F90CF917B
-:107D7000DF911F910F91089508951F938EB388236B
-:107D800061F01091E9001092E9008091E80083FF12
-:107D900001C0E4DE17701093E9001F910895F9996E
-:107DA000FECF92BD81BDF89A992780B50895262F00
-:107DB000F999FECF1FBA92BD81BD20BD0FB6F894D0
-:0E7DC000FA9AF99A0FBE01960895F894FFCF33
-:107DCE004C554641434443000100000000000008AA
-:107DDE001201100102000008EB034A20010000010D
-:107DEE00000109023E000201008032090400000178
-:107DFE0002020100052400100104240204052406D9
-:107E0E000001070582030800FF09040100020A00B1
-:107E1E00000007050402100001070583021000018F
-:107E2E0004030904260341005600520020004300BB
-:107E3E0044004300200042006F006F0074006C008D
-:0C7E4E006F00610064006500720000001D
+:10764000089590919201892F8F77813279F58BB1CE
+:107650008BB985B185B988B188B9809193018032A1
+:10766000A1F0813219F5913A09F58091E800877F00
+:107670008093E80089E091E067E070E0CED18091EE
+:10768000E8008B778093E8000895913279F4809137
+:10769000E800877F8093E80089E091E067E070E090
+:1076A00020D28091E8008E778093E800089582E0F0
+:1076B00061EC42E078D083E061E842E174D084E09C
+:1076C00060E842E170C01F9384B7877F84BF88E180
+:1076D0000FB6F89480936000109260000FBE80E0B7
+:1076E00090E020E80FB6F894209361008093610049
+:1076F0000FBE11E015BF82E085BFC6D0559A209A13
+:107700003F9A5D9A289A479810936F0083E0809380
+:1077100081001F910895D7DF5D9A289A47988BB111
+:107720008BB985B185B988B188B9789402C01CDD60
+:107730002BD3809108018823D1F78091E0008160EC
+:107740008093E0002CE088E190E00FB6F894A895D3
+:10775000809360000FBE20936000FFCFFA0192304B
+:1077600071F0933089F0913029F480E191E022E1C9
+:1077700030E015C080E090E020E030E010C082E210
+:1077800091E02EE330E00BC0882329F480E691E0FD
+:1077900024E030E004C084E691E026E230E091830A
+:1077A0008083C90108958093E9008091EB00816096
+:1077B0008093EB001092ED006093EC004093ED009D
+:1077C0008091EE00881F8827881F0895809192017C
+:1077D00088238CF403C08EB38823B1F08091E80035
+:1077E00082FFF9CF8091E8008B778093E8000895BD
+:1077F0008EB3882349F08091E80080FFF9CF809113
+:10780000E8008E778093E8000895EF92FF920F933F
+:107810001F9345D04CD008ED10E0F80180818F77A0
+:10782000808380818068808380818F7D808319BC84
+:107830001EBA1092900180EEE82EF12CF7018081A3
+:107840008B7F8083F80180818160808380E060E0AD
+:1078500042E0A9DFE1EEF0E080818E7F8083E2EEFE
+:10786000F0E0808181608083808188608083F7017F
+:1078700080818E7F8083F8018081806180831F9169
+:107880000F91FF90EF900895E7EDF0E08081816027
+:1078900080838AE482BF81E080939101B6CFE8EDD6
+:1078A000F0E080818E7F80831092E2000895109234
+:1078B000DA001092E10008951F920F920FB60F9216
+:1078C00011242F933F934F935F936F937F938F93E5
+:1078D0009F93AF93BF93EF93FF938091DA0080FF64
+:1078E0001BC08091D80080FF17C08091DA008E7F86
+:1078F0008093DA008091D90080FF0BC080E189BDC0
+:1079000082E189BD09B400FEFDCF81E08EBB3BD290
+:1079100003C019BC1EBA37D28091E10080FF17C0A6
+:107920008091E20080FF13C08091E2008E7F8093FF
+:10793000E2008091E20080618093E2008091D800B3
+:1079400080628093D80019BC85E08EBB1CD28091E8
+:10795000E10084FF2CC08091E20084FF28C080E118
+:1079600089BD82E189BD09B400FEFDCF8091D800B8
+:107970008F7D8093D8008091E1008F7E8093E1001D
+:107980008091E2008F7E8093E2008091E20081602E
+:107990008093E20080919001882331F48091E3008C
+:1079A00087FD02C081E001C084E08EBBECD18091F4
+:1079B000E10083FF21C08091E20083FF1DC0809120
+:1079C000E100877F8093E10082E08EBB10929001FE
+:1079D0008091E1008E7F8093E1008091E2008E7FB4
+:1079E0008093E2008091E20080618093E20080E079
+:1079F00060E042E0D8DEC7D1FF91EF91BF91AF9137
+:107A00009F918F917F916F915F914F913F912F91B6
+:107A10000F900FBE0F901F9018959C0140919801F8
+:107A2000509199014617570718F4F90190E044C0A6
+:107A30006115710511F0AB01F8CF8091E8008E77E8
+:107A40008093E80040E050E0F0CF8EB3882309F443
+:107A500044C0853009F443C08091E80083FF02C030
+:107A600081E008958091E80082FD31C08091E800B6
+:107A700080FF22C08091F3009091F200782F60E0A7
+:107A8000292F30E0262B372B07C081918093F100FE
+:107A9000415050402F5F3F4F4115510519F028309C
+:107AA000310598F390E02830310509F491E0809198
+:107AB000E8008E778093E8004115510531F699234F
+:107AC00021F605C08EB3882341F0853041F08091C6
+:107AD000E80082FFF7CF80E0089582E0089583E018
+:107AE00008959C016115710529F48091E8008B7758
+:107AF0008093E800F90126C08EB3882391F1853088
+:107B000091F18091E80083FF02C081E008958091A7
+:107B1000E80082FFF1CF06C08091F10081936150AF
+:107B2000704059F02091F3008091F200322F20E054
+:107B300090E0822B932B892B79F78091E8008B774B
+:107B40008093E80061157105B9F605C08EB38823EE
+:107B500041F0853041F08091E80080FFF7CF80E070
+:107B6000089582E0089583E008950F931F93DF93B3
+:107B7000CF9300D0CDB7DEB7E2E9F1E08091F1001C
+:107B8000819381E0EA39F807C9F75BDD8091E8006D
+:107B900083FFE4C08091920190919301953009F4A4
+:107BA0006DC0963040F4913081F1913070F0933097
+:107BB00009F0D4C02AC0983009F4A3C0993009F460
+:107BC000B2C0963009F0CAC07CC0803809F4C6C083
+:107BD000823809F0C3C08091960187708093E900D4
+:107BE0008091EB001092E9002091E800277F20931C
+:107BF000E80090E025E0969587952A95E1F7817059
+:107C00008093F1001092F10087C0882319F0823030
+:107C100009F0A4C08F71823009F0A0C08091940156
+:107C2000882331F520919601277009F497C020939D
+:107C3000E9008091EB0080FF1BC0933021F480911C
+:107C4000EB00806213C08091EB0080618093EB00B9
+:107C500081E090E002C0880F991F2A95E2F7809397
+:107C6000EA001092EA008091EB0088608093EB00BC
+:107C70001092E9008091E800877F51C0882309F0C5
+:107C80006DC0109194011F770FB7F8948091E800B0
+:107C9000877F8093E8009ADD8091E80080FFFCCF29
+:107CA0008091E3008078812B8093E300806880934B
+:107CB000E300112311F482E001C083E08EBB0FBF0B
+:107CC0004DC08058823008F049C080919401909155
+:107CD000950160919601AE014F5F5F4F3FDDBC01A2
+:107CE000009709F43BC08091E800877F8093E8000B
+:107CF00089819A8192DE8091E8008B778093E800F9
+:107D00002DC0803859F58091E800877F8093E80086
+:107D1000809190018093F1008091E8008E778093AC
+:107D2000E80054DD1BC08823C9F49091940192307F
+:107D3000A8F48091E800877F8093E80090939001F9
+:107D400045DD80919001882331F48091E30087FD27
+:107D500002C081E001C084E08EBBA9DC8091E80014
+:107D600083FF0AC08091EB0080628093EB008091DA
+:107D7000E800877F8093E8000F900F90CF91DF910C
+:107D80001F910F91089508951F938EB3882361F07A
+:107D90001091E9001092E9008091E80083FF01C092
+:107DA000E4DE17701093E9001F910895F999FECF52
+:107DB00092BD81BDF89A992780B50895262FF9992B
+:107DC000FECF1FBA92BD81BD20BD0FB6F894FA9ABE
+:0C7DD000F99A0FBE01960895F894FFCFB9
+:107DDC004C5546414344430001000000000000089C
+:107DEC001201100102000008EB034A2001000001FF
+:107DFC00000109023E00020100803209040000016A
+:107E0C0002020100052400100104240204052406CA
+:107E1C000001070582030800FF09040100020A00A3
+:107E2C000000070504021000010705830210000181
+:107E3C0004030904260341005600520020004300AD
+:107E4C0044004300200042006F006F0074006C007F
+:0C7E5C006F00610064006500720000000F
:040000030000700089
:00000001FF