summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephan Bösebeck <sb@caluga.de>2016-03-28 22:29:18 +0200
committerStephan Bösebeck <sb@caluga.de>2016-03-28 22:29:18 +0200
commit37e68596ddefcaa9ac0289a8e17672804e475327 (patch)
treea7d9016e1dbbdd11cefa6a963d86e00595b2c71a
parent94e96456b87c28299b426e8d0f047033f6d93d42 (diff)
parent4a43c5684476611370820bd9592712754c211c52 (diff)
Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware
-rw-r--r--BUILD_GUIDE.md6
-rw-r--r--keyboard/ergodox_ez/keymaps/msc/img/code_layer.pngbin0 -> 71266 bytes
-rw-r--r--keyboard/ergodox_ez/keymaps/msc/img/main_layer.pngbin0 -> 90624 bytes
-rw-r--r--keyboard/ergodox_ez/keymaps/msc/img/media_layer.pngbin0 -> 75750 bytes
-rw-r--r--keyboard/ergodox_ez/keymaps/msc/keymap.c184
-rw-r--r--keyboard/ergodox_ez/keymaps/msc/msc.hex1118
-rw-r--r--keyboard/ergodox_ez/keymaps/msc/readme.md32
-rw-r--r--keyboard/ergodox_ez/keymaps/naps62/README.md29
-rw-r--r--keyboard/ergodox_ez/keymaps/naps62/ergodox_ez.hex1474
-rw-r--r--keyboard/ergodox_ez/keymaps/naps62/keymap.c187
-rw-r--r--keyboard/ergodox_ez/keymaps/ordinary/keymap.c126
-rw-r--r--keyboard/ergodox_ez/keymaps/ordinary/ordinary-base.pngbin0 -> 95077 bytes
-rw-r--r--keyboard/ergodox_ez/keymaps/ordinary/ordinary-base.txt27
-rw-r--r--keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.pngbin0 -> 108774 bytes
-rw-r--r--keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.txt27
-rw-r--r--keyboard/ergodox_ez/keymaps/ordinary/ordinary-symbol.pngbin0 -> 93001 bytes
-rw-r--r--keyboard/ergodox_ez/keymaps/ordinary/ordinary-symbol.txt27
-rw-r--r--keyboard/ergodox_ez/keymaps/ordinary/ordinary.hex2162
-rw-r--r--keyboard/ergodox_ez/keymaps/ordinary/ordinary.pngbin93556 -> 0 bytes
-rw-r--r--keyboard/ergodox_ez/keymaps/ordinary/readme.md10
-rw-r--r--keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/readme.md6
-rw-r--r--keyboard/planck/planck.c32
-rw-r--r--keyboard/planck/planck.h1
-rw-r--r--keyboard/retro_refit/Makefile23
-rw-r--r--keyboard/retro_refit/config.h47
-rw-r--r--quantum/template/Makefile23
-rw-r--r--quantum/template/config.h47
-rw-r--r--quantum/template/template.c20
-rw-r--r--quantum/template/template.h5
-rw-r--r--tmk_core/common/action.c10
-rw-r--r--tmk_core/common/action.h3
-rw-r--r--tmk_core/common/action_macro.c4
-rw-r--r--tmk_core/common/action_util.c9
-rw-r--r--tmk_core/common/action_util.h7
-rw-r--r--tmk_core/common/command.c353
-rw-r--r--tmk_core/common/command.h121
-rw-r--r--tmk_core/common/keyboard.c6
37 files changed, 4820 insertions, 1306 deletions
diff --git a/BUILD_GUIDE.md b/BUILD_GUIDE.md
index 81c3ec44f2..e8b242e4e3 100644
--- a/BUILD_GUIDE.md
+++ b/BUILD_GUIDE.md
@@ -25,12 +25,12 @@ You can also try these instructions:
3. Install [DFU-Programmer][dfu-prog].
### Linux
-Install AVR GCC and dfu-progammer with your favorite package manager.
+Install AVR GCC, AVR libc, and dfu-progammer with your favorite package manager.
Debian/Ubuntu example:
sudo apt-get update
- sudo apt-get install gcc-avr dfu-programmer
+ sudo apt-get install gcc-avr avr-libc dfu-programmer
### Vagrant
If you have any problems building the firmware, you can try using a tool called Vagrant. It will set up a virtual computer with a known configuration that's ready-to-go for firmware building. OLKB does NOT host the files for this virtual computer. Details on how to set up Vagrant are in the [VAGRANT_GUIDE file](VAGRANT_GUIDE.md).
@@ -52,4 +52,4 @@ If you have any problems building the firmware, you can try using a tool called
## Troubleshooting
1. Try running `make clean` if the make command fails.
- WIP \ No newline at end of file
+ WIP
diff --git a/keyboard/ergodox_ez/keymaps/msc/img/code_layer.png b/keyboard/ergodox_ez/keymaps/msc/img/code_layer.png
new file mode 100644
index 0000000000..7b5efaae79
--- /dev/null
+++ b/keyboard/ergodox_ez/keymaps/msc/img/code_layer.png
Binary files differ
diff --git a/keyboard/ergodox_ez/keymaps/msc/img/main_layer.png b/keyboard/ergodox_ez/keymaps/msc/img/main_layer.png
new file mode 100644
index 0000000000..65f92dda1b
--- /dev/null
+++ b/keyboard/ergodox_ez/keymaps/msc/img/main_layer.png
Binary files differ
diff --git a/keyboard/ergodox_ez/keymaps/msc/img/media_layer.png b/keyboard/ergodox_ez/keymaps/msc/img/media_layer.png
new file mode 100644
index 0000000000..a69799b073
--- /dev/null
+++ b/keyboard/ergodox_ez/keymaps/msc/img/media_layer.png
Binary files differ
diff --git a/keyboard/ergodox_ez/keymaps/msc/keymap.c b/keyboard/ergodox_ez/keymaps/msc/keymap.c
new file mode 100644
index 0000000000..e567e513f9
--- /dev/null
+++ b/keyboard/ergodox_ez/keymaps/msc/keymap.c
@@ -0,0 +1,184 @@
+#include "ergodox_ez.h"
+#include "debug.h"
+#include "action_layer.h"
+
+#define BASE 0 // default layer
+#define SYMB 1 // symbols
+#define MDIA 2 // media keys
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * ,--------------------------------------------------. ,--------------------------------------------------.
+ * | = | 1 | 2 | 3 | 4 | 5 | LEFT | | RIGHT| 6 | 7 | 8 | 9 | 0 | - |
+ * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+ * | Del | Q | W | E | R | T | L1 | | L1 | Y | U | I | O | P | \ |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | BkSp | A | S | D | F | G |------| |------| H | J | K | L | ; |' / Cmd |
+ * |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------|
+ * | LShift |Z/Ctrl| X | C | V | B | | | | N | M | , | . |//Ctrl| RShift |
+ * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ * | Cmd | Alt |AltShf| Left | Right| | Left | Down | Up |Right | L2 |
+ * `----------------------------------' `----------------------------------'
+ * ,-------------. ,-------------.
+ * | App | LGui | | Alt |Ctrl/Esc|
+ * ,------|------|------| |------+--------+------.
+ * | | | Home | | PgUp | | |
+ * | Space|Backsp|------| |------| Tab |Enter |
+ * | |ace | End | | PgDn | | |
+ * `--------------------' `----------------------'
+ */
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+[BASE] = KEYMAP( // layer 0 : default
+ // left hand
+ KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT,
+ KC_DELT, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB),
+ KC_BSPC, KC_A, KC_S, KC_D, KC_F, KC_G,
+ KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO),
+ KC_LGUI,KC_LALT, LALT(KC_LSFT), KC_LEFT,KC_RGHT,
+ ALT_T(KC_APP), KC_LGUI,
+ KC_HOME,
+ KC_SPC,KC_BSPC,KC_END,
+ // right hand
+ KC_RGHT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
+ TG(SYMB), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
+ KC_H, KC_J, KC_K, KC_L, KC_SCLN,GUI_T(KC_QUOT),
+ MEH_T(KC_NO),KC_N, KC_M, KC_COMM,KC_DOT, CTL_T(KC_SLSH), KC_RSFT,
+ KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, TG(MDIA),
+ KC_LALT, CTL_T(KC_ESC),
+ KC_PGUP,
+ KC_PGDN,KC_TAB, KC_ENT
+ ),
+/* Keymap 1: Symbol Layer
+ *
+ * ,--------------------------------------------------. ,--------------------------------------------------.
+ * | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 |
+ * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+ * | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | F12 |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | |
+ * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ * | | | | | | | | . | 0 | = | |
+ * `----------------------------------' `----------------------------------'
+ * ,-------------. ,-------------.
+ * | | | | | |
+ * ,------|------|------| |------+------+------.
+ * | | | | | | | |
+ * | | |------| |------| | |
+ * | | | | | | | |
+ * `--------------------' `--------------------'
+ */
+// SYMBOLS
+[SYMB] = KEYMAP(
+ // left hand
+ KC_TRNS,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS,
+ KC_TRNS,KC_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
+ KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
+ KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
+ KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+ KC_TRNS,KC_TRNS,
+ KC_TRNS,
+ KC_TRNS,KC_TRNS,KC_TRNS,
+ // right hand
+ KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
+ KC_TRNS, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_F12,
+ KC_DOWN, KC_4, KC_5, KC_6, KC_PLUS, KC_TRNS,
+ KC_TRNS, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, KC_TRNS,
+ KC_TRNS,KC_DOT, KC_0, KC_EQL, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS
+),
+/* Keymap 2: Media and mouse keys
+ *
+ * ,--------------------------------------------------. ,--------------------------------------------------.
+ * | | | | | | | | | | | | | | | |
+ * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+ * | | | | MsUp | | | | | | | | | | | |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | | |MsLeft|MsDown|MsRght| |------| |------| | | | | | Play |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | | | | | | | | | | | Mute | | | | |
+ * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ * | | | | | | | Prev |VolDn |VolUp | Next | |
+ * `----------------------------------' `----------------------------------'
+ * ,-------------. ,-------------.
+ * | | | | | |
+ * ,------|------|------| |------+------+------.
+ * | | | | | | |Brwser|
+ * | Lclk | Rclk |------| |------| |Back |
+ * | | | | | | | |
+ * `--------------------' `--------------------'
+ */
+// MEDIA AND MOUSE
+[MDIA] = KEYMAP(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_BTN1, KC_BTN2, KC_TRNS,
+ // right hand
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
+ KC_TRNS, KC_TRNS, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_WBAK
+),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+ [1] = ACTION_LAYER_TAP_TOGGLE(SYMB) // FN1 - Momentary Layer 1 (Symbols)
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+ // MACRODOWN only works in this function
+ switch(id) {
+ case 0:
+ if (record->event.pressed) {
+ register_code(KC_RSFT);
+ } else {
+ unregister_code(KC_RSFT);
+ }
+ break;
+ }
+ return MACRO_NONE;
+};
+
+// Runs just one time when the keyboard initializes.
+void matrix_init_user(void) {
+
+};
+
+// Runs constantly in the background, in a loop.
+void matrix_scan_user(void) {
+
+ uint8_t layer = biton32(layer_state);
+
+ ergodox_board_led_off();
+ ergodox_right_led_1_off();
+ ergodox_right_led_2_off();
+ ergodox_right_led_3_off();
+ switch (layer) {
+ // TODO: Make this relevant to the ErgoDox EZ.
+ case 1:
+ ergodox_right_led_1_on();
+ break;
+ case 2:
+ ergodox_right_led_2_on();
+ break;
+ default:
+ // none
+ break;
+ }
+
+};
diff --git a/keyboard/ergodox_ez/keymaps/msc/msc.hex b/keyboard/ergodox_ez/keymaps/msc/msc.hex
new file mode 100644
index 0000000000..a466a37af7
--- /dev/null
+++ b/keyboard/ergodox_ez/keymaps/msc/msc.hex
@@ -0,0 +1,1118 @@
+:100000000C9465020C94A9020C94A9020C94A90208
+:100010000C94A9020C94A9020C94A9020C94A902B4
+:100020000C94A9020C94A9020C94AD0B0C947F0CB7
+:100030000C94A9020C94A9020C94A9020C94A90294
+:100040000C94A9020C9404210C94A9020C94A9020A
+:100050000C94A9020C94951A0C94A9020C94A90270
+:100060000C94A9020C94A9020C94A9020C94A90264
+:100070000C94A9020C94A9020C94A9020C94A90254
+:100080000C94A9020C94A9020C94A9020C94A90244
+:100090000C94A9020C94A9020C94A9020C94A90234
+:1000A0000C94A9020C94A9020C94A902EC0C0E0D5C
+:1000B000FC0D0E0DFC0D530D760DFC0DCB0DDE0D64
+:1000C000C010C010EF10EF10321170118913891396
+:1000D000891189138A128A125D1389138913741383
+:1000E0000000F0A12E004C002A00E100E300000017
+:1000F0001E00140004001D71E2004D001F001A00D4
+:1001000016001B00E1042A0020000800070006007A
+:1001100050002C0021001500090019004F004A0072
+:10012000220017000A000500000065745000015409
+:100130000000007F0000E3004F0001540000007742
+:100140000000E20023001C000B00110000002971D8
+:10015000240018000D00100050004B0025000C007A
+:100160000E00360051002800260012000F00370054
+:1001700052002B0027001300330038714F004E004F
+:100180002D0031003478E500025400000100010028
+:1001900001000100010000003A001E0220022202BC
+:1001A000010001003B001F022102230201000100A7
+:1001B0003C002F0226022F00010001003D0030020A
+:1001C00027023000010001003E00310235003502F7
+:1001D000000001000100010000000100000001001A
+:1001E0000100010000000100000001003F0052007A
+:1001F00051002402000001004000240021001E00E4
+:10020000010001004100250022001F00370001000D
+:1002100042002600230020002700010043002502A1
+:100220002E0231002E0001004400450001000100B3
+:1002300001000000010001000100010001000000B8
+:1002400001000100010001000100010001000100A6
+:10025000F20001000100F5000100F000F1000100D2
+:100260000100F40001000100F300010001000100A1
+:100270000100010001000100000001000100010077
+:100280000000010000000100010001000000010069
+:100290000000010001000100010001000000010058
+:1002A000010001000100A800AC00010001000100F4
+:1002B00001000100AA00B6000100010001000100D8
+:1002C000A90001000100010001000100AB000100D4
+:1002D00001000100AE00010001000000160345000E
+:1002E000720067006F0044006F0078002000450036
+:1002F0005A00000016034500720067006F004400BA
+:100300006F007800200045005A0000000403090433
+:1003100009026D00040100A0FA09040000010301B4
+:100320000100092111010001223F00070581030896
+:10033000000A090401000103010200092111010062
+:1003400001224D000705820308000A09040200018A
+:100350000300000009211101000122360007058376
+:100360000308000A09040300010300000009211129
+:100370000100012239000705840310000112011059
+:100380000100000008EDFE07130100010200010555
+:10039000010906A101050719E029E71500250195C6
+:1003A0000875018102050819012905950575019156
+:1003B000029501750391010507190029771500259C
+:1003C00001957875018102C005010980A1018502AE
+:1003D00016010026B7001A01002AB7007510950112
+:1003E0008100C0050C0901A1018503160100269CAE
+:1003F000021A01002A9C02751095018100C00501B6
+:100400000902A1010901A100050919012905150029
+:10041000250195057501810295017503810105018D
+:10042000093009311581257F950275088106093843
+:100430001581257F950175088106050C0A3802157E
+:1004400081257F950175088106C0C005010906A1B7
+:1004500001050719E029E7150025019508750181B7
+:100460000295017508810105081901290595057591
+:100470000191029501750391010507190029FF15E6
+:100480000025FF950675088100C0000000000000EF
+:100490000000000000010204060A0F17202C3A4A4F
+:1004A0005D71879DB3C7DAE9F5FCFFFCF5E9DAC7B2
+:1004B000B39D87715D4A3A2C20170F0A060402018A
+:1004C0000000000000000000000011241FBECFEF5C
+:1004D000DAE0DEBFCDBF04B603FE24C08091EE019A
+:1004E0009091EF01A091F001B091F1018730904B14
+:1004F000A740B04BB9F41092EE011092EF011092A8
+:10050000F0011092F10114BE84B7877F84BF88E1A7
+:100510000FB6F89480936000109260000FBEE0E088
+:10052000FFE3099511E0A0E0B1E0ECE8F5E402C0DA
+:1005300005900D92A433B107D9F711E0A4E3B1E01F
+:1005400001C01D92AE3EB107E1F70E94F1080C9484
+:10055000C4220C94000061110BC0FC01828188232D
+:1005600021F085EE0E945D0F03C085EE0E942510EC
+:1005700080E090E0089508956091B1017091B2011A
+:100580008091B3019091B4010E94C41956985E986D
+:1005900025982D9826982E9827982F98813019F015
+:1005A000823021F00895259A2D9A0895269A2E9A40
+:1005B00008950C94BC0256985E9825982D9826981C
+:1005C0002E9827982F988FEF90E090938900809332
+:1005D000880090938B0080938A0090938D00809385
+:1005E0008C00259A2D9A2FEF80E792E021508040D1
+:1005F0009040E1F700C00000269A2E9A2FEF80E786
+:1006000092E0215080409040E1F700C00000279A1E
+:100610002F9A2FEF80E792E0215080409040E1F741
+:1006200000C0000025982D982FEF80E792E0215020
+:1006300080409040E1F700C0000026982E982FEFF0
+:1006400080E792E0215080409040E1F700C0000038
+:1006500027982F9856985E9825982D9826982E982A
+:1006600027982F98089589EA8093800089E08093E5
+:10067000810024982C983F988AB18F748AB96E981B
+:10068000479A8BB1806B8BB9769A0E94DB020C94EF
+:10069000BB0280E2809300018091340181110EC081
+:1006A0000E94980381E0809334012FEF83ED90E363
+:1006B000215080409040E1F700C0000080E40E949B
+:1006C0009E038093000181112EC00E94C803809375
+:1006D0000001811128C00E94C8038093000181118C
+:1006E00022C08FE30E94C8038093000181111BC0C8
+:1006F0000E94C00380E40E949E0380930001811148
+:1007000012C08CE00E94C8038093000181110BC0CD
+:100710000E94C80380930001811105C08FE30E94ED
+:10072000C803809300010E94C003809100010895D6
+:100730001092B9008AE08093B800089594EA9093EB
+:10074000BC009091BC0097FFFCCF9091B900987FBE
+:10075000983021F0903111F081E008958093BB0032
+:1007600084E88093BC008091BC0087FFFCCF80911F
+:10077000B900887F883111F0803471F780E00895E6
+:1007800084E98093BC008091BC0084FDFCCF089577
+:100790008093BB0084E88093BC008091BC0087FFFD
+:1007A000FCCF9091B900987F81E0983209F480E005
+:1007B000089584E88093BC008091BC0087FFFCCF43
+:1007C0008091BB00089580910001811115C080E4E3
+:1007D0000E949E038093000181110CC082E10E945F
+:1007E000C80380930001811105C08FEF0E94C803E8
+:1007F000809300010E94C00384B1807F84B985B1D9
+:10080000807F85B98AB1837F8AB98BB1837F8BB9A9
+:100810003E98469808950E944903809300010E94E3
+:10082000E30380B38C7080BB81B3836F81BBA6E38D
+:10083000B1E0E4E4F1E08EE08E0F11921D928E1390
+:10084000FCCF0C943303BF92CF92DF92EF92FF92D2
+:100850000F931F93CF93DF9380910001882379F04A
+:10086000809135018F5F80933501811108C00E940E
+:10087000490380930001811102C00E94DB0206E35C
+:1008800011E0C0E0D0E0DD24D39482E0C82EEE2455
+:10089000E394F12CC730D10500F58091000181115E
+:1008A00064C080E40E949E0380930001811112C005
+:1008B00082E10E94C8038093000181110BC0C7012F
+:1008C0000C2E01C0880F0A94EAF780950E94C80395
+:1008D000809300010E94C00348C0CA30A1F028F4F0
+:1008E000C83059F0C93061F005C0CC3089F070F0E3
+:1008F000CD3089F0209A289810C0219A29980DC0EF
+:10090000229A2A980AC0239A2B9807C0529A01C0AB
+:10091000539A5B9802C03E9A469890EA9A95F1F7EE
+:100920009FB1799902C082E001C080E091709D255D
+:10093000982B7C9902C084E001C080E0892B7D99CE
+:1009400002C038E001C030E0832B7E9902C020E174
+:1009500001C020E0822B9FB19095991F9927991F84
+:100960009295990F907E892B0FC080910001811183
+:1009700049C080E40E949E0380930001882379F19E
+:10098000B12C0E94C0038B2DF8019081981719F0AB
+:100990008083C09201010E94E30321960F5F1F4FE5
+:1009A000CE30D10509F076CF80910101882361F125
+:1009B000815080930101882339F08FE99FE00197EE
+:1009C000F1F700C0000020C0A4E4B1E0E6E3F1E0EC
+:1009D000CF01825F91919D938E13FCCF15C083E16F
+:1009E0000E94C803809300018111CACF81E40E9454
+:1009F0009E03809300018111C3CF0E94D903B82EBA
+:100A0000B094BFCF80E0C0CF0E94D90281E0DF91D7
+:100A1000CF911F910F91FF90EF90DF90CF90BF90FB
+:100A20000895E82FF0E0EC5BFE4F80810895089573
+:100A30008B3B910578F4883A910540F5853A91050C
+:100A4000D0F48430910508F0B1C08130910509F4EB
+:100A5000ADC06BC0803E910508F467C0883E91052B
+:100A600008F4A4C09C01205F31092031310508F051
+:100A70005CC090650895853A910509F459C0863A9D
+:100A8000910509F058C082E890E40895883A9105EC
+:100A900009F454C0893A910509F453C08A3A910582
+:100AA00009F452C08B3A910509F451C08C3A910572
+:100AB00009F450C08D3A910509F44FC0803B91056F
+:100AC00009F44EC08E3A910509F44DC08F3A910554
+:100AD00009F44CC0813B910509F44BC0823B910560
+:100AE00009F44AC0833B910509F449C0843B910550
+:100AF00009F448C0853B910509F447C0863B910540
+:100B000009F446C0873B910509F445C0883B91052F
+:100B100009F444C0893B910509F443C08A3B91051F
+:100B200009F442C080E094E4089580E090E00895E4
+:100B300081E890E4089583E890E4089582EE94E4D7
+:100B4000089589EE94E408958AEE94E4089585EB7F
+:100B500094E4089586EB94E4089587EB94E4089573
+:100B60008CEC94E408958DEC94E4089583E895E486
+:100B700008958AE895E4089582E995E4089584E962
+:100B800095E4089581E296E4089583E296E4089559
+:100B900084E296E4089585E296E4089586E296E478
+:100BA000089587E296E408958AE296E40895089508
+:100BB00096E0799FF001112494E5899FE00DF11DE5
+:100BC0001124E60FF11DEE0FFF1FEC51FF4F859131
+:100BD00094910895880F991FFC01E05AF040859187
+:100BE00094910895880F991FFC01E052FF4F859161
+:100BF0009491089526E0729FF001112444E5849FAA
+:100C0000E00DF11D1124E60FF11DEE0FFF1FEC5159
+:100C1000FF4F859194919C013A9521154FE134073E
+:100C200008F41AC13F512115304120F49F700E94F1
+:100C3000F20508959C0130532115304118F499278D
+:100C4000906C0895811520E5920769F40E94AB131A
+:100C50004FEF84E39CE0415080409040E1F700C0BA
+:100C600000000C94BA1A813020E5920731F480918B
+:100C7000CC0181608093CC0108959C0130552115F1
+:100C8000304108F051C0292F33272F7033272130EE
+:100C90003105D9F4AC014370552702C0220F331F30
+:100CA0004A95E2F73C68AC0164E0440F551F6A9531
+:100CB000E1F744275370242B352B73E0880F991FDD
+:100CC0007A95E1F7807699271DC02230310529F405
+:100CD000982F8827816F906A089523303105A9F4F1
+:100CE000AC014370552721E030E002C0220F331FD2
+:100CF0004A95E2F73C6843E0880F991F4A95E1F76F
+:100D0000807E9770822B932B089524303105E1F477
+:100D1000AC014370552721E030E002C0220F331FA1
+:100D20004A95E2F73A68E7CF9C01305721153041E8
+:100D300018F49F70906208959C013058211530413D
+:100D400018F49F70906A0895803E9105E0F4803C0D
+:100D5000910558F58133910509F46FC048F4893243
+:100D6000910509F463C08A32910509F46DC072C01F
+:100D700089339105E9F082389105D1F085339105E9
+:100D800009F44DC067C0833E910581F138F4803E7F
+:100D90009105B9F0823E9105D9F05CC0863E91057F
+:100DA00061F1873E9105A1F155C00E94EA050895C1
+:100DB0002091DF0120FD02C021FF4CC080EE90E0B9
+:100DC00049C08091DF0180FFF9CF89E390E042C004
+:100DD0008091DF0182FF0EC08091DF0184FF03C09C
+:100DE00080E090E037C083EE90E034C08091DF0176
+:100DF00082FFF2CF82EE90E02DC08091DF0183FF71
+:100E00000BC08091DF0184FDEBCF87EE90E022C024
+:100E10008091DF0183FFF5CF86EE90E01BC08091CB
+:100E2000DF0185FF07C089E290E014C08091DF01F7
+:100E300085FFF9CF85E390E00DC08091DF0186FF4B
+:100E400007C08AE290E006C08091DF0186FFF9CFFB
+:100E500081E390E00E941805089508950C942D07F1
+:100E6000809162010895CF93DF9300D01F92CDB798
+:100E7000DEB79C018091E501843019F593E09983F8
+:100E80003B832A839093E9008FEF9091E800815093
+:100E900095FD06C095ED9A95F1F700008111F5CF0B
+:100EA0008091E80085FF0DC040E050E063E070E015
+:100EB000CE0101960E949D098091E8008E77809373
+:100EC000E8000F900F900F90DF91CF910895CF938E
+:100ED000DF9300D01F92CDB7DEB72091E50124301B
+:100EE00021F522E029839B838A8383E08093E900B4
+:100EF0008FEF9091E800815095FD06C095ED9A9591
+:100F0000F1F700008111F5CF8091E80085FF0DC059
+:100F100040E050E063E070E0CE0101960E949D0940
+:100F20008091E8008E778093E8000F900F900F90EB
+:100F3000DF91CF9108952091E5012430F1F422E072
+:100F40002093E9002FEF3091E800215035FD06C0D5
+:100F500035ED3A95F1F700002111F5CF2091E80029
+:100F600025FF0BC040E050E065E070E00E949D0965
+:100F70008091E8008E778093E8000895CF93DF9307
+:100F8000EC019091E501943009F046C080910C018C
+:100F90008823D9F080910D018823B9F09093E9005E
+:100FA0008FEF9091E800815095FD06C095E19A95EC
+:100FB000F1F700008111F5CF8091E80085FF2CC08A
+:100FC00040E050E060E170E017C081E08093E9000C
+:100FD0008FEF9091E800815095FD06C095ED9A95B0
+:100FE000F1F700008111F5CF8091E80085FF14C072
+:100FF00040E050E068E070E0CE010E949D098091E1
+:10100000E8008E778093E80080E1FE01A2E5B1E080
+:1010100001900D928A95E1F7DF91CF91089580912B
+:10102000E401811109C00E94320B0E948F0B809154
+:10103000E20084608093E20008951092E401089534
+:1010400008950C94F1200E94501A0E94F7200E94EB
+:10105000350E0C942E0742E061EC81E00E94AC0A50
+:1010600042E061EC82E00E94AC0A42E061EC83E085
+:101070000E94AC0A42E161EC84E00C94AC0A8091DD
+:10108000E701833009F455C030F4813071F08230CB
+:1010900009F48EC008958A3009F47AC08B3009F4BF
+:1010A00060C0893009F09CC020C08091E601813A7F
+:1010B00009F096C08091E800877F8093E8008091D6
+:1010C000EA019091EB01892B21F460E182E591E046
+:1010D00003C060E080E090E070E00E94E809809149
+:1010E000E8008B778093E80008958091E6018132D3
+:1010F00009F076C08091EA019091EB01009719F018
+:10110000039709F06DC08091E800877F8093E80025
+:101110008091E80082FD05C08091E5018111F8CF42
+:101120005FC08091F100809362018091E8008B772D
+:1011300053C08091E601813A09F052C08091EA01E2
+:101140009091EB01892B09F04BC08091E800877FDB
+:101150008093E8008091E80080FFFCCF80910C0133
+:1011600036C08091E6018132D9F58091EA019091F3
+:10117000EB01892BA9F58091E800877F8093E80037
+:101180000E94E10A8091E80180930C010C94AB135A
+:101190008091E601813221F58091E800877F80937C
+:1011A000E8000E94E10A8091E901809363010895BB
+:1011B0008091E601813AA1F48091E800877F8093D5
+:1011C000E8008091E80080FFFCCF8091630180936C
+:1011D000F1008091E8008E778093E8000C94E10A9A
+:1011E000089584B7877F84BF88E10FB6F894809311
+:1011F0006000109260000FBE90E080E80FB6F89497
+:1012000080936100909361000FBE0E94840E0E9443
+:10121000320B0E948F0B8091E20084608093E20089
+:1012200078940E94150E0E94860E82E091E00E9442
+:10123000300E0E94DF208091E501853069F40E9424
+:10124000141A8091E3018823B1F30E943C1A882389
+:1012500091F30E948709EFCF0E948C0EECCF292FCB
+:10126000332723303105C9F064F42130310581F092
+:101270002230310509F043C08DE690E020E133E0F3
+:1012800042C021323105F1F02232310541F137C03F
+:1012900082E190E02DE733E036C099278130910557
+:1012A00041F08230910541F0892B49F5ECE0F3E003
+:1012B00005C0E4EFF2E002C0ECEDF2E0849190E0D2
+:1012C0009F0121C06430D8F4E62FF0E0EE0FFF1F3D
+:1012D000EE5DFE4F2081318189E090E014C06430E2
+:1012E00070F470E0FB01EE0FFF1FE65EFE4F208101
+:1012F0003181FB01EA5EFE4F808190E004C080E016
+:1013000090E020E030E0FA0131832083089580E10D
+:1013100089BD82E189BD09B400FEFDCF8091D8006E
+:101320008F7D8093D8008091E00082608093E00000
+:101330008091E00081FDFCCF0895CF92DF92EF9283
+:10134000FF920F931F93CF93DF93EC018B016A0100
+:101350000E94000B811133C0C114D10439F0F60191
+:1013600080819181081B190BC80FD91FE12CF12C2A
+:101370000115110519F18091E80085FD16C08091D5
+:10138000E8008E778093E800C114D10449F0F6019B
+:1013900080819181E80EF91EF182E08285E00FC024
+:1013A0000E94000B882321F30AC089918093F100E9
+:1013B00001501109FFEFEF1AFF0ADACF80E0DF9149
+:1013C000CF911F910F91FF90EF90DF90CF900895F4
+:1013D0002091EC013091ED012617370748F0611597
+:1013E000710539F42091E8002E772093E80001C0C0
+:1013F000B90140E061157105A9F12091E5012223B1
+:1014000009F443C0253009F442C02091E80023FDCF
+:1014100040C02091E80022FD32C02091E80020FF6A
+:10142000E9CF4091F3002091F20030E0342BFC0131
+:10143000CF016115710559F02830310540F48191D3
+:101440008093F100615071092F5F3F4FF1CF41E070
+:101450002830310509F040E02091E8002E772093F4
+:10146000E800C8CF4111C9CF0AC08091E5018823A7
+:1014700061F0853061F08091E80083FD0AC08091C1
+:10148000E80082FFF2CF80E0089582E0089583E0D3
+:10149000089581E008952091EC013091ED01261727
+:1014A000370748F06115710539F42091E8002E776F
+:1014B0002093E80001C0B901FC0120E0611571052D
+:1014C00091F18091E501882309F440C0853009F449
+:1014D0003FC08091E80083FD3DC08091E80082FD1F
+:1014E0002FC08091E80080FFE9CF2091F300809128
+:1014F000F20090E0922B6115710559F0883091054A
+:1015000040F424912093F1003196615071090196C5
+:10151000F2CF21E0089709F020E08091E8008E7773
+:101520008093E800CBCF2111CCCF0AC08091E50198
+:10153000882361F0853061F08091E80083FD0AC066
+:101540008091E80082FFF2CF80E0089582E0089564
+:1015500083E0089581E00895982F973058F590938F
+:10156000E900981739F07091EC002091ED0050914E
+:10157000F00003C0242F762F50E021FF19C03091D6
+:10158000EB003E7F3093EB003091ED003D7F3093D8
+:10159000ED003091EB0031603093EB007093EC0084
+:1015A0002093ED005093F0002091EE0027FF07C03C
+:1015B0009F5FD3CF8F708093E90081E0089580E032
+:1015C00008958091E60187FF11C08091E80082FDB7
+:1015D00005C08091E5018111F8CF11C08091E8002C
+:1015E0008B770BC08091E501882349F08091E8005A
+:1015F00080FFF8CF8091E8008E778093E80008950F
+:101600002091E4003091E50095E64091EC00842FB4
+:10161000817040FF22C08091E80080FD1CC0809155
+:10162000E501882391F0853091F08091EB0085FDF4
+:1016300010C04091E4005091E5004217530729F390
+:101640009A01915011F784E0089582E0089583E0B3
+:10165000089581E0089580E008954091E80042FFF8
+:10166000DECF08950E94A00B0E94A80BE0EEF0E0F0
+:10167000808181608083E8EDF0E080818F778083D6
+:1016800019BCA7EDB0E08C918E7F8C9380818F7E0A
+:1016900080831092E40108950F931F93CF93DF93FB
+:1016A0000E94A00B0E94A80BC8EDD0E088818F7724
+:1016B000888388818068888388818F7D888319BC2E
+:1016C0001092E5011092E1011092E3011092E20103
+:1016D00000EE10E0F80180818B7F8083888181603B
+:1016E000888342E060E080E00E94AC0AE1EEF0E036
+:1016F00080818E7F8083E2EEF0E080818160808354
+:10170000808188608083F80180818E7F80838881DA
+:1017100080618883DF91CF911F910F910895E8ED4B
+:10172000F0E080818F7E8083E7EDF0E08081816052
+:10173000808384E082BF81E08093E4010C944C0BB1
+:10174000E8EDF0E080818E7F80831092E2000895C2
+:101750001092DA001092E10008951F920F920FB6D6
+:101760000F9211242F933F934F935F936F937F9327
+:101770008F939F93AF93BF93EF93FF938091E1007B
+:1017800082FF0BC08091E20082FF07C08091E100E0
+:101790008B7F8093E1000E94140E8091DA