aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--README.md49
-rw-r--r--keyboard/ergodox_ez/keymaps/default_osx/keymap.c6
-rw-r--r--keyboard/ergodox_ez/keymaps/osx_de_experimental/keymap.c239
-rw-r--r--keyboard/ergodox_ez/keymaps/osx_de_experimental/osx_de_experimental.hex1247
-rw-r--r--keyboard/ergodox_ez/keymaps/osx_de_experimental/osx_de_experimental_highres.pngbin289029 -> 303904 bytes
-rw-r--r--keyboard/ergodox_ez/keymaps/osx_de_experimental/readme.md22
-rw-r--r--keyboard/planck/keymaps/default/keymap.c11
7 files changed, 1560 insertions, 14 deletions
diff --git a/README.md b/README.md
index 071659e05..395b4a552 100644
--- a/README.md
+++ b/README.md
@@ -377,6 +377,55 @@ You can currently send 4 hex digits with your OS-specific modifier key (RALT for
Enable the backlight from the Makefile.
+## Driving a speaker - audio support
+
+Your keyboard can make sounds! If you've got a Planck, Preonic, or basically any keyboard that allows access to the C6 port, you can hook up a simple speaker and have it beep. You can use those beeps to indicate layer transitions, modifiers, special keys, or just to play some funky 8bit tunes.
+
+The audio code lives in [quantum/audio/audio.h](/quantum/audio/audio.h) and in the other files in the audio directory. It's enabled by default on the Planck [stock keymap](/keyboard/planck/keymaps/default/keymap.c). Here are the important bits:
+
+```
+#include "audio.h"
+```
+
+Then, lower down the file:
+
+```
+float tone_startup[][2] = {
+ ED_NOTE(_E7 ),
+ E__NOTE(_CS7),
+ E__NOTE(_E6 ),
+ E__NOTE(_A6 ),
+ M__NOTE(_CS7, 20)
+};
+```
+
+This is how you write a song. Each of these lines is a note, so we have a little ditty composed of five notes here.
+
+Then, we have this chunk:
+
+```
+float tone_qwerty[][2] = SONG(QWERTY_SOUND);
+float tone_dvorak[][2] = SONG(DVORAK_SOUND);
+float tone_colemak[][2] = SONG(COLEMAK_SOUND);
+float tone_plover[][2] = SONG(PLOVER_SOUND);
+float tone_plover_gb[][2] = SONG(PLOVER_GOODBYE_SOUND);
+
+float music_scale[][2] = SONG(MUSIC_SCALE_SOUND);
+float goodbye[][2] = SONG(GOODBYE_SOUND);
+```
+
+Wherein we bind predefined songs (from [audio/song_list.h](/audio/song_list.h)) into named variables. This is one optimization that helps save on memory: These songs only take up memory when you reference them in your keymap, because they're essentially all preprocessor directives.
+
+So now you have something called `tone_plover` for example. How do you make it play the Plover tune, then? If you look further down the keymap, you'll see this:
+
+```
+PLAY_NOTE_ARRAY(tone_plover, false, 0); // Signature is: Song name, repeat, rest style
+```
+
+This is inside one of the macros. So when that macro executes, your keyboard plays that particular chime.
+
+"Rest style" in the method signature above (the last parameter) specifies if there's a rest (a moment of silence) between the notes.
+
## MIDI functionalty
This is still a WIP, but check out `quantum/keymap_midi.c` to see what's happening. Enable from the Makefile.
diff --git a/keyboard/ergodox_ez/keymaps/default_osx/keymap.c b/keyboard/ergodox_ez/keymaps/default_osx/keymap.c
index 81b49ceff..c57ffbb88 100644
--- a/keyboard/ergodox_ez/keymaps/default_osx/keymap.c
+++ b/keyboard/ergodox_ez/keymaps/default_osx/keymap.c
@@ -36,7 +36,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[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(1),
+ 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),
LT(SYMB,KC_GRV),KC_QUOT, LALT(KC_LSFT), KC_LEFT,KC_RGHT,
@@ -45,7 +45,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_SPC,KC_BSPC,KC_END,
// right hand
KC_RGHT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
- TG(1), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
+ TG(SYMB), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
KC_H, KC_J, KC_K, KC_L, LT(MDIA, KC_SCLN),KC_LGUI,
MEH_T(KC_NO),KC_N, KC_M, KC_COMM,KC_DOT, CTL_T(KC_SLSH), KC_RSFT,
KC_UP, KC_DOWN,KC_LBRC,KC_RBRC, KC_FN1,
@@ -117,7 +117,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `--------------------' `--------------------'
*/
// MEDIA AND MOUSE
-KEYMAP(
+[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,
diff --git a/keyboard/ergodox_ez/keymaps/osx_de_experimental/keymap.c b/keyboard/ergodox_ez/keymaps/osx_de_experimental/keymap.c
index b3ed55f21..19e539006 100644
--- a/keyboard/ergodox_ez/keymaps/osx_de_experimental/keymap.c
+++ b/keyboard/ergodox_ez/keymaps/osx_de_experimental/keymap.c
@@ -15,6 +15,15 @@
#include "keymap_extras/keymap_spanish.h"
#include "keymap_extras/keymap_bepo.h"
+
+/**
+* This layout was generated using the ErgodoxLayoutGenerator (ELG). You can download it from https://github.com/sboesebeck/ErgodoxLayoutGenerator/releases
+* documentation about it can be found here https://boesebeck.name/2016/04/16/ergodoxlayoutgenerator-documentation/
+* Thanks to the team of Erez Zukerman for building the great Ergodox-EZ!
+*
+* use at own risk!
+**/
+
#define BASE 0
#define SYMB 1
#define MDIA 2
@@ -23,24 +32,73 @@
#define EGOS 5
#define SMLY_TOG_QUOT 0
+
#define M_TOGGLE_5 1
+
#define TGH_NUM 2
+
#define M_DE_OSX_PLUS_CTRLALT 3
+
#define SM_KISS 4
+
#define SM_FROWN 5
+
#define SM_CRY 6
+
#define SM_SMILE 7
+
#define SM_SMIRK 8
+
#define M_LGUI_SHFT 9
+
#define SM_HEART 10
+
#define TOG_HLD_MDIA 11
+
#define SM_LAUGH 12
+
#define SM_SAD 13
+
#define M_DE_OSX_CIRC_CTRLCMD 14
+
#define M_MEH_SH_ACUT 15
+
//Layout keymap.c generated with ErgodoxLayoutGenerator V1.0BETA1
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/**
+* Layer: BASE
+* /-------------------//-------------------//-------------------//-------------------//-------------------//-------------------//-------------------/ /-------------------//-------------------//-------------------//-------------------//-------------------//-------------------//-------------------/
+* | ESC | 1 | 2 | 3 | 4 | 5 | Hold or toggle | | Hold or toggle | 6 | 7 | 8 | 9 | 0 | ß |
+* | | | | | | | Layer NUMB | | Layer MDIA | | | | | | |
+* /-------------------//-------------------//-------------------//-------------------//-------------------//-------------------//-------------------/ /-------------------//-------------------//-------------------//-------------------//-------------------//-------------------//-------------------/
+* | TAB | Q | W | E | R | T | Cmd | | Cmd | Z | U | I | O | P | Ü |
+* | | | | | | | | | | | | | | | |
+* /-------------------//-------------------//-------------------//-------------------//-------------------//-------------------/\-------------------\ \-------------------\/-------------------//-------------------//-------------------//-------------------//-------------------//-------------------/
+* | Alt | A | S | D | F | G | | H | J | K | L | Ö | Ä |
+* | | | | | | | | | | | | | ALT |
+* /-------------------//-------------------//-------------------//-------------------//-------------------//-------------------//-------------------/ /-------------------//-------------------//-------------------//-------------------//-------------------//-------------------//-------------------/
+* | Shift | Y | X | C | V | B | Alt | | Alt | N | M | , | . | - | Shift |
+* | | Ctrl | | | | | | | | | | | | Ctrl | |
+* \-------------------\\-------------------\\-------------------\\-------------------\\-------------------\\-------------------\\-------------------\ \-------------------\\-------------------\\-------------------\\-------------------\\-------------------\\-------------------\\-------------------\
+*
+*
+* /-------------------//-------------------//-------------------//-------------------//-------------------/ /-------------------//-------------------//-------------------//-------------------//-------------------/
+* | < | LongPress / Type | LongPress / Type | Shift+Ctrl | Type | | # | ACUT | CMD+Shift | ALT+Shift | + |
+* | SYMB | DE_OSX_CIRC_CTRLCMD| DE_OSX_PLUS_CTRAlt | | Toggle SMLY | | Meh | Hyper | | | SYMB |
+* \-------------------\\-------------------\\-------------------\\-------------------\/-------------------//-------------------/ /-------------------//-------------------/ \-------------------\\-------------------\\-------------------\\-------------------\\-------------------\
+* | HOME | END | | LEFT | RIGHT |
+* | | | | | |
+* \-------------------\/-------------------/ /-------------------/\-------------------\
+* | PGUP | | UP |
+* | | | |
+* /-------------------//-------------------//-------------------/ /-------------------//-------------------//-------------------/
+* | BSPC | DEL | PGDN | | DOWN | ENT | SPC |
+* | | | | | | | |
+* \-------------------\\-------------------\\-------------------\ \-------------------\\-------------------\\-------------------\
+*
+*
+**/
[BASE]=KEYMAP(
//left half
KC_ESC, DE_OSX_1, DE_OSX_2, DE_OSX_3, DE_OSX_4, DE_OSX_5, M(TGH_NUM),
@@ -60,6 +118,39 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LEFT, KC_RIGHT,
KC_UP,
KC_DOWN, KC_ENT, KC_SPC),
+/**
+* Layer: SYMB
+* /-----------//-----------//-----------//-----------//-----------//-----------//-----------/ /-----------//-----------//-----------//-----------//-----------//-----------//-----------/
+* | APPLICATION| F1 | F2 | F3 | F4 | F5 | F5 | | F6 | F6 | F7 | F8 | F9 | F10 | F11 |
+* | | | | | | | | | | | | | | | |
+* /-----------//-----------//-----------//-----------//-----------//-----------//-----------/ /-----------//-----------//-----------//-----------//-----------//-----------//-----------/
+* | | < | > | ! | ? | | | | | \ | [ | ] | < | > | ! |
+* | | | | | | | | | | | | | | | |
+* /-----------//-----------//-----------//-----------//-----------//-----------/\-----------\ \-----------\/-----------//-----------//-----------//-----------//-----------//-----------/
+* | | # | $ | \ | / | . | | / | ( | ) | { | } | # |
+* | | | | | | | | | | | | | |
+* /-----------//-----------//-----------//-----------//-----------//-----------//-----------/ /-----------//-----------//-----------//-----------//-----------//-----------//-----------/
+* | | | < | % | | | ~ | | | | | | ~ | | | | |
+* | | | | | | | | | | | | | | | |
+* \-----------\\-----------\\-----------\\-----------\\-----------\\-----------\\-----------\ \-----------\\-----------\\-----------\\-----------\\-----------\\-----------\\-----------\
+*
+*
+* /-----------//-----------//-----------//-----------//-----------/ /-----------//-----------//-----------//-----------//-----------/
+* | | | | | | | ' | DQOT | | Toggle 5 | |
+* | | | | | | | | | | | |
+* \-----------\\-----------\\-----------\\-----------\/-----------//-----------/ /-----------//-----------/ \-----------\\-----------\\-----------\\-----------\\-----------\
+* | | | | F13 | F12 |
+* | | | | | |
+* \-----------\/-----------/ /-----------/\-----------\
+* | | | F14 |
+* | | | |
+* /-----------//-----------//-----------/ /-----------//-----------//-----------/
+* | | DEL | | | F15 | | |
+* | | | | | | | |
+* \-----------\\-----------\\-----------\ \-----------\\-----------\\-----------\
+*
+*
+**/
[SYMB]=KEYMAP(
//left half
KC_APPLICATION, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F5,
@@ -79,6 +170,39 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_F13, KC_F12,
KC_F14,
KC_F15, KC_TRNS, KC_TRNS),
+/**
+* Layer: MDIA
+* /-----//-----//-----//-----//-----//-----//-----/ /-----//-----//-----//-----//-----//-----//-----/
+* | | | | | | | | | | | | | | | |
+* | | | | | | | | | | | | | | | |
+* /-----//-----//-----//-----//-----//-----//-----/ /-----//-----//-----//-----//-----//-----//-----/
+* | | | BTN1 | U | BTN2 | U | | | | | | | | | |
+* | | | | | | | | | | | | | | | |
+* /-----//-----//-----//-----//-----//-----/\-----\ \-----\/-----//-----//-----//-----//-----//-----/
+* | | | L | D | R | D | | | | | | | |
+* | | | | | | | | | | | | | |
+* /-----//-----//-----//-----//-----//-----//-----/ /-----//-----//-----//-----//-----//-----//-----/
+* | | | L | D | R | BTN3 | | | | | | | | UP | |
+* | | | | | | | | | | | | | | | |
+* \-----\\-----\\-----\\-----\\-----\\-----\\-----\ \-----\\-----\\-----\\-----\\-----\\-----\\-----\
+*
+*
+* /-----//-----//-----//-----//-----/ /-----//-----//-----//-----//-----/
+* | | | | | | | | | LEFT | DOWN | RIGHT|
+* | | | | | | | | | | | |
+* \-----\\-----\\-----\\-----\/-----//-----/ /-----//-----/ \-----\\-----\\-----\\-----\\-----\
+* | | | | MPRV | MNXT |
+* | | | | | |
+* \-----\/-----/ /-----/\-----\
+* | | | VOLU |
+* | | | |
+* /-----//-----//-----/ /-----//-----//-----/
+* | | | | | VOLD | MUTE | MPLY |
+* | | | | | | | |
+* \-----\\-----\\-----\ \-----\\-----\\-----\
+*
+*
+**/
[MDIA]=KEYMAP(
//left half
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
@@ -90,14 +214,47 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS,
//right half
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_VOLU, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_VOLD, KC_TRNS, KC_MPRV, KC_MNXT, KC_UP, KC_TRNS,
- KC_MUTE, KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT,
- KC_TRNS, KC_TRNS,
- KC_TRNS,
- KC_TRNS, KC_TRNS, KC_WBAK),
+ 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_UP, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT,
+ KC_MPRV, KC_MNXT,
+ KC_VOLU,
+ KC_VOLD, KC_MUTE, KC_MPLY),
+/**
+* Layer: SMLY
+* /--------//--------//--------//--------//--------//--------//--------/ /--------//--------//--------//--------//--------//--------//--------/
+* | | | | | | | | | Typing | Typing | Typing | | | | |
+* | | | | | | | | | SM_SMILE| SM_SMIRK| SM_LAUGH| | | | |
+* /--------//--------//--------//--------//--------//--------//--------/ /--------//--------//--------//--------//--------//--------//--------/
+* | | | | | | | | | | Typing | Typing | Typing | | | |
+* | | | | | | | | | | SM_FROWN| SM_SAD | SM_CRY | | | |
+* /--------//--------//--------//--------//--------//--------/\--------\ \--------\/--------//--------//--------//--------//--------//--------/
+* | | | | | | | | Typing | Typing | | | | |
+* | | | | | | | | SM_HEART| SM_KISS | | | | |
+* /--------//--------//--------//--------//--------//--------//--------/ /--------//--------//--------//--------//--------//--------//--------/
+* | | | | | | | | | | | | | | | |
+* | | | | | | | | | | | | | | | |
+* \--------\\--------\\--------\\--------\\--------\\--------\\--------\ \--------\\--------\\--------\\--------\\--------\\--------\\--------\
+*
+*
+* /--------//--------//--------//--------//--------/ /--------//--------//--------//--------//--------/
+* | | | | | | | | | | | |
+* | | | | | | | | | | | |
+* \--------\\--------\\--------\\--------\/--------//--------/ /--------//--------/ \--------\\--------\\--------\\--------\\--------\
+* | | | | | |
+* | | | | | |
+* \--------\/--------/ /--------/\--------\
+* | | | |
+* | | | |
+* /--------//--------//--------/ /--------//--------//--------/
+* | | | | | | | |
+* | | | | | | | |
+* \--------\\--------\\--------\ \--------\\--------\\--------\
+*
+*
+**/
[SMLY]=KEYMAP(
//left half
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
@@ -117,6 +274,39 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TRNS, KC_TRNS,
KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS),
+/**
+* Layer: NUMB
+* /----//----//----//----//----//----//----/ /----//----//----//----//----//----//----/
+* | | | | | | | | | | F6 | F7 | F8 | F9 | F10 | F11 |
+* | | | | | | | | | | | | | | | |
+* /----//----//----//----//----//----//----/ /----//----//----//----//----//----//----/
+* | | | | UP | | | | | | / | 7 | 8 | 9 | * | F12 |
+* | | | | | | | | | | | | | | | |
+* /----//----//----//----//----//----/\----\ \----\/----//----//----//----//----//----/
+* | | | LEFT| DOWN| RGHT| | | / | 4 | 5 | 6 | + | - |
+* | | | | | | | | | | | | | |
+* /----//----//----//----//----//----//----/ /----//----//----//----//----//----//----/
+* | | | | | | | | | | % | 1 | 2 | 3 | | |
+* | | | | | | | | | | | | | | | |
+* \----\\----\\----\\----\\----\\----\\----\ \----\\----\\----\\----\\----\\----\\----\
+*
+*
+* /----//----//----//----//----/ /----//----//----//----//----/
+* | | | | | | | 0 | . | , | = | |
+* | | | | | | | | | | | |
+* \----\\----\\----\\----\/----//----/ /----//----/ \----\\----\\----\\----\\----\
+* | | | | | |
+* | | | | | |
+* \----\/----/ /----/\----\
+* | | | |
+* | | | |
+* /----//----//----/ /----//----//----/
+* | | | | | | | |
+* | | | | | | | |
+* \----\\----\\----\ \----\\----\\----\
+*
+*
+**/
[NUMB]=KEYMAP(
//left half
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
@@ -136,6 +326,39 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TRNS, KC_TRNS,
KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS),
+/**
+* Layer: EGOS
+* /--------//--------//--------//--------//--------//--------//--------/ /--------//--------//--------//--------//--------//--------//--------/
+* | | | | | | | | | | | | | | | |
+* | | | | | | | | | | | | | | | |
+* /--------//--------//--------//--------//--------//--------//--------/ /--------//--------//--------//--------//--------//--------//--------/
+* | | | | | | | | | | | | | | | |
+* | | | | | | | | | | | | | | | |
+* /--------//--------//--------//--------//--------//--------/\--------\ \--------\/--------//--------//--------//--------//--------//--------/
+* | Shift | | | | | | | | | | | | |
+* | | | | | | | | | | | | | |
+* /--------//--------//--------//--------//--------//--------//--------/ /--------//--------//--------//--------//--------//--------//--------/
+* | | | | | | | | | | | | | | | |
+* | | | | | | | | | | | | | | | |
+* \--------\\--------\\--------\\--------\\--------\\--------\\--------\ \--------\\--------\\--------\\--------\\--------\\--------\\--------\
+*
+*
+* /--------//--------//--------//--------//--------/ /--------//--------//--------//--------//--------/
+* | Ctrl | | | | | | | | | Toggle 5| |
+* | | | | | | | | | | | |
+* \--------\\--------\\--------\\--------\/--------//--------/ /--------//--------/ \--------\\--------\\--------\\--------\\--------\
+* | F1 | F2 | | | |
+* | | | | | |
+* \--------\/--------/ /--------/\--------\
+* | F3 | | |
+* | | | |
+* /--------//--------//--------/ /--------//--------//--------/
+* | SPC | Ctrl | F4 | | | | |
+* | | | | | | | |
+* \--------\\--------\\--------\ \--------\\--------\\--------\
+*
+*
+**/
[EGOS]=KEYMAP(
//left half
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
@@ -259,7 +482,7 @@ case M_LGUI_SHFT:
if (record->event.pressed){
return MACRO(DOWN(KC_LGUI),DOWN(KC_LSFT),END);
}else{
- return MACRO(UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),U(LGUI),U(LSFT),END);
+ return MACRO(UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),U(LGUI),U(LSFT),END);
}
break;
diff --git a/keyboard/ergodox_ez/keymaps/osx_de_experimental/osx_de_experimental.hex b/keyboard/ergodox_ez/keymaps/osx_de_experimental/osx_de_experimental.hex
new file mode 100644
index 000000000..3c7ab5859
--- /dev/null
+++ b/keyboard/ergodox_ez/keymaps/osx_de_experimental/osx_de_experimental.hex
@@ -0,0 +1,1247 @@
+:100000000C9430040C9474040C9474040C947404D4
+:100010000C9474040C9474040C9474040C94740480
+:100020000C9474040C9474040C94680F0C943A109F
+:100030000C9474040C9474040C9474040C94740460
+:100040000C9474040C9404250C9474040C9474049F
+:100050000C9474040C94931E0C9474040C94740407
+:100060000C9474040C9474040C9474040C94740430
+:100070000C9474040C9474040C9474040C94740420
+:100080000C9474040C9474040C9474040C94740410
+:100090000C9474040C9474040C9474040C94740400
+:1000A0000C9474040C9474040C9474048404BE04BE
+:1000B000D004F2040A05100516051C0522052805C2
+:1000C0002D0533055D05620567057E05A710C9107E
+:1000D000B711C910B7110E113111B711861199114D
+:1000E00085148514C214C214051543155C175C17DA
+:1000F0005C155C175D165D1630175C175C174717AB
+:1001000002E002E2012E022E02E10002E002E10220
+:10011000E20001E001E101E20002E002E301640229
+:10012000640002E002E30001E001E30001E10137C5
+:10013000023702E10138023801E10125022502E11E
+:100140000001E10137023702E10138023801E10123
+:1001500007020702E10001350235012002200002FA
+:10016000E302E102E302E102E302E102E302E1026F
+:10017000E302E102E302E102E302E102E302E1025F
+:10018000E302E102E302E102E302E102E302E1024F
+:10019000E302E102E302E102E302E102E302E1023F
+:1001A000E302E102E302E102E302E102E302E1022F
+:1001B000E302E102E302E102E302E102E302E1021F
+:1001C000E302E102E302E102E302E102E302E1020F
+:1001D000E302E102E302E102E302E102E302E102FF
+:1001E000E302E102E302E102E302E102E302E102EF
+:1001F000E302E102E302E10001E301E10001E101C8
+:1002000036023602E10138023801E10126022602F7
+:10021000E10001E10137023702E10138023801E172
+:100220000126022602E10001E10136023602E10167
+:1002300038023801E10125022502E10001E1013720
+:10024000023702E10138023801E20125022502E20B
+:100250000001E10137023702E10138023801E10112
+:1002600030023002E10002E002E20130023000021E
+:10027000E002E20001E001E20001E10131023102AD
+:10028000E10029002B00E200E100358100001E00A2
+:10029000140004001D710E304E001F001A001600DD
+:1002A0001B0003304C002000080007000600E0029D
+:1002B0002A00210015000900190000304B0022001F
+:1002C00017000A00050000004A000230E3000000A9
+:1002D000E20000004D000B30E7000000E6000000E7
+:1002E000500023001C000B00110000004F002400F0
+:1002F00018000D0010003177520025000C000E0090
+:1003000036002E7F2C00260012000F003700E10877
+:1003100028002700130033003871E10451002D003C
+:100320002F003474E50030810000650001000100F9
+:100330000100010000003A00350031000100010019
+:1003400001003B0035022102350001004C003C0059
+:100350001E0224062202010001003D002D0224029B
+:100360002404010001003E000100370011040000D8
+:1003700001003E00010000000100000001003F00FC
+:10038000010000000100000068003F002406240274
+:10039000240400004500400022042502110431021B
+:1003A000690041002304260201001F0201004200EF
+:1003B0003500250401000100010043003502260438
+:1003C000010001306A0044001E02310001000100FA
+:1003D0000000010001000100010001000000010017
+:1003E000010001000100010001000100F400F20021
+:1003F000FB00010001000100F000F100FA00010023
+:1004000001000100F500F300FC0001000100010003
+:10041000F900FA00F60000000100010001000000F0
+:1004200001000000010001000100000001000000C7
+:10043000AC0001000100010001000000AB00010060
+:100440000100010001000100A900010001000100FC
+:1004500001000100AE000100010001000100500098
+:10046000A80001000100010052005100AA00010093
+:100470000100010001004F00000001000100010027
+:100480000100010000000100010001000100010065
+:100490000100010001000100010001000100010054
+:1004A0000100010001000100010001000100010044
+:1004B0000100010001000100010001000100000035
+:1004C00001000100010000000100000001000730F0
+:1004D00001000000010000000100083005300A3072
+:1004E0000100000001000C300D300430010001005B
+:1004F00001000100063001000100010001000100BF
+:1005000001000100010001000100010001000100E3
+:1005100001000100010001000100010001000100D3
+:1005200000000100010001000100010000000100C5
+:100530000100010001000100010001000100500064
+:100540000100010001000100520051000100010002
+:100550000100010001004F00010001000100010045
+:100560000100010001000000010001000100000085
+:100570000100000001000100010000000100000076
+:1005800001003F002402240222020000010040007A
+:10059000240021001E002700010041002500220048
+:1005A0001F00370001004200260023002000360013
+:1005B0000100430030023000010027020100440026
+:1005C0004500380001000100000001000100E100C9
+:1005D0000100E00000000100010001000100010035
+:1005E0003D0001000100010001000100E0000100E8
+:1005F00001000100010001002C00010001000100C8
+:10060000010001003C0001000100010001000000A8
+:100610003A00010001000000010000003B00010061
+:1006200001000000010000000100010001000100C4
+:1006300001000000010001000100010001000100B3
+:1006400001000100010001000100010001000100A2
+:100650000100010001000100010001000100010092
+:100660000100013001000100010001000100010052
+:10067000000016034500720067006F0044006F0021
+:100680007800200045005A00000016034500720063
+:1006900067006F0044006F007800200045005A009A
+:1006A00000000403090409026D00040100A0FA0916
+:1006B0000400000103010100092111010001223F92
+:1006C000000705810308000A090401000103010273
+:1006D00000092111010001224D00070582030800D5
+:1006E0000A090402000103000000092111010001B0
+:1006F0002236000705830308000A090403000103EA
+:1007000000000009211101000122390007058403BE
+:100710001000011201100100000008EDFE07130196
+:10072000000102000105010906A101050719E029E0
+:10073000E7150025019508750181020508190129B1
+:10074000059505750191029501750391010507193C
+:1007500000297715002501957875018102C00501F2
+:100760000980A101850216010026B7001A01002A9E
+:10077000B700751095018100C0050C0901A1018524
+:1007800003160100269C021A01002A9C027510958E
+:10079000018100C005010902A1010901A1000509AB
+:1007A000190129051500250195057501810295019D
+:1007B000750381010501093009311581257F9502F5
+:1007C0007508810609381581257F95017508810610
+:1007D000050C0A38021581257F950175088106C030
+:1007E000C005010906A101050719E029E715002543
+:1007F00001950875018102950175088101050819A7
+:100800000129059505750191029501750391010571
+:1008100007190029FF150025FF950675088100C0FE
+:100820000000000000000000000000010204060AB1
+:100830000F17202C3A4A5D71879DB3C7DAE9F5FCA2
+:10084000FFFCF5E9DAC7B39D87715D4A3A2C2017A2
+:100850000F0A060402010000000000000000000072
+:1008600011241FBECFEFDAE0DEBFCDBF04B603FE1A
+:1008700024C08091F0019091F101A091F201B0911A
+:10088000F3018730904BA740B04BB9F41092F001C0
+:100890001092F1011092F2011092F30114BE84B78C
+:1008A000877F84BF88E10FB6F89480936000109230
+:1008B00060000FBEE0E0FFE3099511E0A0E0B1E0C9
+:1008C000E6E9FDE402C005900D92A433B107D9F723
+:1008D00011E0A4E3B1E001C01D92A03FB107E1F730
+:1008E0000E94AC0C0C94C9260C940000462F50E0DA
+:1008F0004031510508F01FC1DC01FA01EA5AFF4FEF
+:1009000012968C910C9479268823A9F00E945D1E82
+:1009100090933501809334018091B3019091B4019B
+:10092000A091B501B091B60128E08227887099277F
+:10093000AA27BB27AEC08091B3019091B401A091CA
+:10094000B501B091B60128E0822788709927AA27BF
+:10095000BB278093B3019093B401A093B501B093EA
+:10096000B60180913401909135010E94691E87394A
+:1009700091050CF0E0C089E792E00895882309F41E
+:10098000DAC08091B3019091B401A091B501B0910A
+:10099000B60120E2822780729927AA27BB2779C057
+:1009A000882339F00E945D1E9093350180933401B5
+:1009B0000AC080913401909135010E94691E8739E7
+:1009C00091050CF4B8C08091B3019091B401A0914D
+:1009D000B501B091B60120E1822780719927AA273D
+:1009E000BB2757C0882349F00E945D1E90933501B4
+:1009F0008093340184E792E00895809134019091CE
+:100A000035010E94691E873991050CF08EC086E67B
+:100A100092E00895882309F48EC081E592E008955C
+:100A2000882309F488C08CE392E00895882309F4B0
+:100A300082C087E292E00895882309F47CC082E1B5
+:100A400092E00895882309F476C08DEF91E008952F
+:100A500081116EC08FE591E00895882309F46BC081
+:100A600086E591E008958823E9F00E945D1E909349
+:100A70003501809334018091B3019091B401A0912C
+:100A8000B501B091B60124E0822784709927AA2786
+:100A9000BB278093B3019093B401A093B501B093A9
+:100AA000B60149C080913401909135010E94691EC0
+:100AB000873991050CF43FC0DECF8823E1F181E452
+:100AC00091E008958823B9F18CE291E0089588239C
+:100AD00049F00E945D1E909335018093340187E2B6
+:100AE00091E0089580913401909135010E94691E32
+:100AF000873991051CF589E191E00895882349F033
+:100B00000E945D1E909335018093340182E191E053
+:100B1000089580913401909135010E94691E8739B2
+:100B200091057CF480E091E008958FE692E00895CD
+:100B300088EF91E0089580E090E0089582E291E0EE
+:100B400008958BE091E0089508956091B30170914C
+:100B5000B4018091B5019091B6010E94BF1D5698D5
+:100B60005E9825982D9826982E9827982F98823051
+:100B700061F018F4813031F00895843069F08530E7
+:100B800039F00895259A2D9A0895269A2E9A089557
+:100B9000259A2D9A269A2E9A279A2F9A08950C9480
+:100BA000A50556985E9825982D9826982E982798F2
+:100BB0002F988FEF90E09093890080938800909316
+:100BC0008B0080938A0090938D0080938C00259AEF
+:100BD0002D9A2FEF80E792E0215080409040E1F77E
+:100BE00000C00000269A2E9A2FEF80E792E0215055
+:100BF00080409040E1F700C00000279A2F9A2FEF25
+:100C000080E792E0215080409040E1F700C0000072
+:100C100025982D982FEF80E792E02150804090405A
+:100C2000E1F700C0000026982E982FEF80E792E0B1
+:100C3000215080409040E1F700C0000027982F9895
+:100C400056985E9825982D9826982E9827982F9834
+:100C5000089589EA8093800089E080938100249838
+:100C60002C983F988AB18F748AB96E98479A8BB145
+:100C7000806B8BB9769A0E94D1050C94A40580E212
+:100C8000809300018091360181110EC00E948E0672
+:100C900081E0809336012FEF83ED90E32150804077
+:100CA0009040E1F700C0000080E40E949406809329
+:100CB000000181112EC00E94BE06809300018111A7
+:100CC00028C00E94BE0680930001811122C08FE3DC
+:100CD0000E94BE068093000181111BC00E94B606CF
+:100CE00080E40E94940680930001811112C08CE080
+:100CF0000E94BE068093000181110BC00E94BE06B7
+:100D000080930001811105C08FE30E94BE0680938D
+:100D100000010E94B6068091000108951092B9006A
+:100D20008AE08093B800089594EA9093BC00909173
+:100D3000BC0097FFFCCF9091B900987F983021F0CC
+:100D4000903111F081E008958093BB0084E8809396
+:100D5000BC008091BC0087FFFCCF8091B900887FE8
+:100D6000883111F0803471F780E0089584E9809330
+:100D7000BC008091BC0084FDFCCF08958093BB0033
+:100D800084E88093BC008091BC0087FFFCCF9091E9
+:100D9000B900987F81E0983209F480E0089584E8F2
+:100DA0008093BC008091BC0087FFFCCF8091BB008A
+:100DB000089580910001811115C080E40E9494067D
+:100DC0008093000181110CC082E10E94BE068093D5
+:100DD0000001811105C08FEF0E94BE0680930001C3
+:100DE0000E94B60684B1807F84B985B1807F85B9C1
+:100DF0008AB1837F8AB98BB1837F8BB93E9846983D
+:100E000008950E943F06809300010E94D90680B396
+:100E10008C7080BB81B3836F81BBA8E3B1E0E6E453
+:100E2000F1E08EE08E0F11921D928E13FCCF0C9488
+:100E30002906BF92CF92DF92EF92FF920F931F93FA
+:100E4000CF93DF9380910001882379F0809137015F
+:100E50008F5F80933701811108C00E943F06809305
+:100E60000001811102C00E94D10508E311E0C0E039
+:100E7000D0E0DD24D39482E0C82EEE24E394F12C5C
+:100E8000C730D10500F580910001811164C080E474
+:100E90000E94940680930001811112C082E10E9499
+:100EA000BE068093000181110BC0C7010C2E01C04A
+:100EB000880F0A94EAF780950E94BE06809300018D
+:100EC0000E94B60648C0CA30A1F028F4C83059F0D4
+:100ED000C93061F005C0CC3089F070F0CD3089F0B8
+:100EE000209A289810C0219A29980DC0229A2A98F1
+:100EF0000AC0239A2B9807C0529A01C0539A5B9854
+:100F000002C03E9A469890EA9A95F1F79FB1799976
+:100F100002C082E001C080E091709D25982B7C99F1
+:100F200002C084E001C080E0892B7D9902C038E0D6
+:100F300001C030E0832B7E9902C020E101C020E097
+:100F4000822B9FB19095991F9927991F9295990F80
+:100F5000907E892B0FC080910001811149C080E4EF
+:100F60000E94940680930001882379F1B12C0E949D
+:100F7000B6068B2DF8019081981719F08083C092E6
+:100F800001010E94D90621960F5F1F4FCE30D10577
+:100F900009F076CF80910101882361F1815080931F
+:100FA0000101882339F08FE99FE00197F1F700C034
+:100FB000000020C0A6E4B1E0E8E3F1E0CF01825FE9
+:100FC00091919D938E13FCCF15C083E10E94BE06C4
+:100FD000809300018111CACF81E40E94940680931E
+:100FE00000018111C3CF0E94CF06B82EB094BFCFAD
+:100FF00080E0C0CF0E94CF0581E0DF91CF911F91AB
+:101000000F91FF90EF90DF90CF90BF900895E82F61
+:10101000F0E0EA5BFE4F808108950895089596E020
+:10102000799FF001112494E5899FE00DF11D1124B1
+:10103000E60FF11DEE0FFF1FEE57FD4F85919491C6
+:101040000895880F991FFC01EE5FFE4F85919491E2
+:101050000895880F991FFC01EE57FD4F85919491DB
+:1010600008950F931F93CF93DF93EC018115904365
+:1010700050F5C11580E2D80708F0B3C0CB3BD105CD
+:1010800090F4C83AD10508F05AC0C53AD10508F025
+:101090004BC0C430D10508F0BBC1219709F0B5C1E0
+:1010A00001E010E0F5C1CF3FD10511F008F0B0C16B
+:1010B000C03FD10508F092C0CE01805E910908972B
+:1010C00008F4A6C1A2C1C11591E5D907A8F4C230A0
+:1010D00020E5D20708F09EC0C11580E5D80709F4C5
+:1010E00085C008F091C0C11520E4D20708F08DC179
+:1010F000DD278E01106CCCC1C11580E8D80758F4EB
+:10110000C11590E7D90708F07CC1C11520E6D207C8
+:1011100008F422C17AC1C11580E9D80708F075C169
+:10112000DF708E01106AB4C1C53AD10509F472C1ED
+:10113000C63AD10509F071C102E810E4A9C1C83A64
+:10114000D10509F46DC1C93AD10509F46CC1CA3A97
+:10115000D10509F46BC1CB3AD10509F46AC1CC3A87
+:10116000D10509F469C1CD3AD10509F468C1C03B84
+:10117000D10509F467C1CE3AD10509F466C1CF3A69
+:10118000D10509F465C1C13BD10509F464C1C23B75
+:10119000D10509F463C1C33BD10509F462C1C43B65
+:1011A000D10509F461C1C53BD10509F460C1C63B55
+:1011B000D10509F45FC1C73BD10509F45EC1C83B45
+:1011C000D10509F45DC1C93BD10509F45CC1CA3B35
+:1011D000D10509F45BC100E014E45AC18E01106529
+:1011E00057C1CE019F700E94290853C10E948017E9
+:1011F0009FEF24E38CE0915020408040E1F700C055
+:1012000000000E94B81E44C18091CF01816080938C
+:10121000CF013EC10E946120811102C00E9447207F
+:101220000E947E2090E09093F0018093EF01C23005
+:1012300090E5D90721F48091EF01816086C0C43028
+:1012400020E5D20721F48091EF0182607EC0C63094
+:1012500080E5D80721F48091EF01846076C0C83022
+:1012600090E5D90719F48091EF0127C0CA3020E535
+:10127000D20721F48091EF01806167C0CC3080E516
+:10128000D80721F48091EF0180625FC0CE3090E5F5
+:10129000D90721F48091EF01806457C0C03120E567
+:1012A000D20721F48091EF0180684FC0C23180E500
+:1012B000D80729F48091EF018460886046C0C3306C
+:1012C00090E5D90721F48091EF018E7F3EC0C530B3
+:1012D00020E5D20721F48091EF018D7F36C0C73021
+:1012E00080E5D80721F48091EF018B7F2EC0C930B3
+:1012F00090E5D90719F48091EF0126C0CB3020E5A5
+:10130000D20721F48091EF018F7E1FC0CD3080E5A0
+:10131000D80721F48091EF018F7D17C0CF3090E581
+:10132000D90721F48091EF018F7B0FC0C13120E5F7
+:10133000D20721F48091EF018F7707C0C331D045E8
+:1013400031F48091EF018B7F877F8093EF01809153
+:10135000EF010E9482209CC08D2F99278F709927C2
+:1013600081309105D9F49E012370332702C0880F84
+:10137000991F2A95E2F79C688E0144E0000F111F27
+:101380004A95E1F700271370802B912B53E0CC0F87
+:10139000DD1F5A95E1F7C076DD272FC08230910519
+:1013A00031F4DC2FCC278E01016F106A71C08330BD
+:1013B000910569F4CE018370992701E010E002C025
+:1013C000000F111F8A95E2F7C8019C680FC00497AF
+:1013D00009F05EC0CE018370992701E010E002C0E1
+:1013E000000F111F8A95E2F7C8019A6823E0CC0F1D
+:1013F000DD1F2A95E1F7C07ED7708C010C2B1D2BC9
+:1014000047C0DF708E01106243C000E010E040C0B2
+:101410008E013EC001E810E43BC003E810E438C090
+:1014200002EE14E435C009EE14E432C00AEE14E40E
+:101430002FC005EB14E42CC006EB14E429C007EB25
+:1014400014E426C00CEC14E423C00DEC14E420C01A
+:1014500003E815E41DC00AE815E41AC002E915E422
+:1014600017C004E915E414C001E216E411C003E258
+:1014700016E40EC004E216E40BC005E216E408C050
+:1014800006E216E405C007E216E402C00AE216E42A
+:10149000C801DF91CF911F910F91089596E0799F38
+:1014A000F001112494E5899FE00DF11D1124E60F50
+:1014B000F11DEE0FFF1FEE57FD4F85919491803E79
+:1014C0009105E0F4803C910558F58133910509F4CC
+:1014D0006FC048F48932910509F463C08A329105DE
+:1014E00009F46DC072C089339105E9F08238910525
+:1014F000D1F08533910509F44DC067C0833E910555
+:1015000081F138F4803E9105B9F0823E9105D9F021
+:101510005CC0863E910561F1873E9105A1F155C001
+:101520000E94210808952091EF0120FD02C021FFB3
+:101530004CC080EE90E049C08091EF0180FFF9CF70
+:1015400089E390E042C08091EF0182FF0EC080915C
+:10155000EF0184FF03C080E090E037C083EE90E0AD
+:1015600034C08091EF0182FFF2CF82EE90E02DC077
+:101570008091EF0183FF0BC08091EF0184FDEBCFE1
+:1015800087EE90E022C08091EF0183FFF5CF86EED9
+:1015900090E01BC08091EF0185FF07C089E290E0D9
+:1015A00014C08091EF0185FFF9CF85E390E00DC075
+:1015B0008091EF0186FF07C08AE290E006C080912B
+:1015C000EF0186FFF9CF81E390E00E943108089592
+:1015D00008950C94E80A809164010895CF93DF93F5
+:1015E00000D01F92CDB7DEB79C018091E601843018
+:1015F00019F593E099833B832A839093E9008FEF59
+:101600009091E800815095FD06C095ED9A95F1F70F
+:1016100000008111F5CF8091E80085FF0DC040E00A
+:1016200050E063E070E0CE0101960E94580D809179
+:10163000E8008E778093E8000F900F900F90DF9175
+:10164000CF910895CF93DF9300D01F92CDB7DEB72F
+:101650002091E601243021F522E029839B838A83AF
+:1016600083E08093E9008FEF9091E800815095FD31
+:1016700006C095ED9A95F1F700008111F5CF8091A4
+:10168000E80085FF0DC040E050E063E070E0CE016F
+:1016900001960E94580D8091E8008E778093E800B3
+:1016A0000F900F900F90DF91CF9108952091E60158
+:1016B0002430F1F422E02093E9002FEF3091E8008C
+:1016C000215035FD06C035ED3A95F1F700002111A6
+:1016D000F5CF2091E80025FF0BC040E050E065E029
+:1016E00070E00E94580D8091E8008E778093E800AA
+:1016F0000895CF93DF93EC019091E601943009F0C7
+:1017000046C080910C018823D9F080910D01882377
+:10171000B9F09093E9008FEF9091E800815095FD2A
+:1017200006C095E19A95F1F700008111F5CF8091FF
+:10173000E80085FF2CC040E050E060E170E017C099
+:1017400081E08093E9008FEF9091E800815095FD52
+:1017500006C095ED9A95F1F700008111F5CF8091C3
+:10176000E80085FF14C040E050E068E070E0CE0182
+:101770000E94580D8091E8008E778093E80080E108
+:10178000FE01A4E5B1E001900D928A95E1F7DF91A9
+:10179000CF9108958091E501811109C00E94ED0E5D
+:1017A0000E944A0F8091E20084608093E2000895D5
+:1017B0001092E501089508950C94F1240E944E1EA4
+:1017C0000E94F7240E94F0110C94E90A42E061ECB7
+:1017D00081E00E94670E42E061EC82E00E94670EA9
+:1017E00042E061EC83E00E94670E42E161EC84E03C
+:1017F0000C94670E8091E801833009F455C030F4F1
+:10180000813071F0823009F48EC008958A3009F475
+:101810007AC08B3009F460C0893009F09CC020C0C8
+:101820008091E701813A09F096C08091E800877FB6
+:101830008093E8008091EB019091EC01892B21F4D9
+:1018400060E184E591E003C060E080E090E070E05A
+:101850000E94A30D8091E8008B778093E8000895A3
+:101860008091E701813209F076C08091EB0190917F
+:10187000EC01009719F0039709F06DC08091E80022
+:10188000877F8093E8008091E80082FD05C0809109
+:10189000E6018111F8CF5FC08091F100809364016F
+:1018A0008091E8008B7753C08091E701813A09F07D
+:1018B00052C08091EB019091EC01892B09F04BC053
+:1018C0008091E800877F8093E8008091E80080FFA6
+:1018D000FCCF80910C0136C08091E7018132D9F5AF
+:1018E0008091EB019091EC01892BA9F58091E800A2
+:1018F000877F8093E8000E949C0E8091E90180938D
+:101900000C010C9480178091E701813221F58091C0
+:10191000E800877F8093E8000E949C0E8091EA0196
+:101920008093650108958091E701813AA1F4809147
+:10193000E800877F8093E8008091E80080FFFCCF7B
+:10194000809165018093F1008091E8008E7780930B
+:10195000E8000C949C0E089584B7877F84BF88E1CB
+:101960000FB6F89480936000109260000FBE90E074
+:1019700080E80FB6F89480936100909361000FBEE9
+:101980000E943F120E94ED0E0E944A0F8091E200D9
+:1019900084608093E20078940E94D0110E944112EA
+:1019A00082E091E00E94EB110E94DF248091E60129
+:1019B000853069F40E940F1E8091E4018823B1F301
+:1019C0000E943A1E882391F30E94420DEFCF0E949D
+:1019D0004712ECCF292F332723303105C9F064F4A7
+:1019E0002130310581F02230310509F043C08DE608
+:1019F00090E026EA36E042C021323105F1F0223291
+:101A0000310541F137C082E190E023E137E036C093
+:101A100099278130910541F08230910541F0892B61
+:101A200049F5E2EAF6E005C0EAE8F6E002C0E2E7DE
+:101A3000F6E0849190E09F0121C06430D8F4E62F55
+:101A4000F0E0EE0FFF1FEE5DFE4F2081318189E057
+:101A500090E014C0643070F470E0FB01EE0FFF1FE3
+:101A6000E65EFE4F20813181FB01EA5EFE4F808100
+:101A700090E004C080E090E020E030E0FA013183A3
+:101A80002083089580E189BD82E189BD09B400FE0B
+:101A9000FDCF8091D8008F7D8093D8008091E000A9
+:101AA00082608093E0008091E00081FDFCCF08958A
+:101AB000CF92DF92EF92FF920F931F93CF93DF931A
+:101AC000EC018B016A010E94BB0E811133C0C1146D
+:101AD000D10439F0F60180819181081B190BC80FE0
+:101AE000D91FE12CF12C0115110519F18091E800A5
+:101AF00085FD16C08091E8008E778093E800C114C0
+:101B0000D10449F0F60180819181E80EF91EF1823D
+:101B1000E08285E00FC00E94BB0E882321F30AC03B
+:101B200089918093F10001501109FFEFEF1AFF0A2C
+:101B3000DACF80E0DF91CF911F910F91FF90EF906E
+:101B4000DF90CF9008952091ED013091EE0126179E
+:101B5000370748F06115710539F42091E8002E77B8
+:101B60002093E80001C0B90140E061157105A9F1B9
+:101B70002091E601222309F443C0253009F442C034
+:101B80002091E80023FD40C02091E80022FD32C0F2
+:101B90002091E80020FFE9CF4091F3002091F2006E
+:101BA00030E0342BFC01CF016115710559F028306C
+:101BB000310540F481918093F100615071092F5FEC
+:101BC0003F4FF1CF41E02830310509F040E020914E
+:101BD000E8002E772093E800C8CF4111C9CF0AC092
+:101BE0008091E601882361F0853061F08091E80002
+:101BF00083FD0AC08091E80082FFF2CF80E0089563
+:101C000082E0089583E0089581E008952091ED0138
+:101C10003091EE012617370748F06115710539F448
+:101C20002091E8002E772093E80001C0B901FC0163
+:101C300020E06115710591F18091E601882309F496
+:101C400040C0853009F43FC08091E80083FD3DC06D
+:101C50008091E80082FD2FC08091E80080FFE9CFED
+:101C60002091F3008091F20090E0922B61157105B4
+:101C700059F08830910540F424912093F100319679
+:101C8000615071090196F2CF21E0089709F020E038
+:101C90008091E8008E778093E800CBCF2111CCCFE4
+:101CA0000AC08091E601882361F0853061F080915F
+:101CB000E80083FD0AC08091E80082FFF2CF80E057
+:101CC000089582E0089583E0089581E00895982FB3
+:101CD000973058F59093E900981739F07091EC001F
+:101CE0002091ED005091F00003C0242F762F50E09A
+:101CF00021FF19C03091EB003E7F3093EB00309113
+:101D0000ED003D7F3093ED003091EB00316030937A
+:101D1000EB007093EC002093ED005093F0002091C5
+:101D2000EE0027FF07C09F5FD3CF8F708093E9003D
+:101D300081E0089580E008958091E70187FF11C058
+:101D40008091E80082FD05C08091E6018111F8CF05
+:101D500011C08091E8008B770BC08091E601882349
+:101D600049F08091E80080FFF8CF8091E8008E77FD
+:101D70008093E80008952091E4003091E50095E615
+:101D80004091EC00842F817040FF22C08091E800D8
+:101D900080FD1CC08091E601882391F0853091F090
+:101DA0008091EB0085FD10C04091E4005091E5006A
+:101DB0004217530729F39A01915011F784E00895CF
+:101DC00082E0089583E0089581E0089580E0089519
+:101DD0004091E80042FFDECF08950E945B0F0E9411
+:101DE000630FE0EEF0E0808181608083E8EDF0E059
+:101DF00080818F77808319BCA7EDB0E08C918E7FB6
+:101E00008C9380818F7E80831092E50108950F93DB
+:101E10001F93CF93DF930E945B0F0E94630FC8ED67
+:101E2000D0E088818F7788838881806888838881E3
+:101E30008F7D888319BC1092E6011092E201109206
+:101E4000E4011092E30100EE10E0F80180818B7F45
+:101E5000808388818160888342E060E080E00E9426
+:101E6000670EE1EEF0E080818E7F8083E2EEF0E0AD
+:101E7000808181608083808188608083F801808197
+:101E80008E7F8083888180618883DF91CF911F91CD
+:101E90000F910895E8EDF0E080818F7E8083E7ED7B
+:101EA000F0E080818160808384E082BF81E0809364
+:101EB000E5010C94070FE8EDF0E080818E7F8083D0
+:101EC0001092E20008951092DA001092E100089555
+:101ED0001F920F920FB60F9211242F933F934F939F
+:101EE0005F936F937F938F939F93AF93BF93EF9382
+:101EF000FF938091E10082FF0BC08091E20082FF9E
+:101F000007C08091E1008B7F8093E1000E94CF1198
+:101F10008091DA0080FF1FC08091D80080FF1BC035
+:101F20008091DA008E7F8093DA008091D90080FF63
+:101F30000DC080E189BD82E189BD09B400FEFDCFFD
+:101F400081E08093E6010E94CA0B05C019BC109283
+:101F5000E6010E94D80B8091E10080FF19C08091BA
+:101F6000E20080FF15C08091E2008E7F8093E20046
+:101F70008091E20080618093E2008091D8008062CD
+:101F80008093D80019BC85E08093E6010E94DC0BA9
+:101F90008091E10084FF30C08091E20084FF2CC07A
+:101FA00080E189BD82E189BD09B400FEFDCF809149
+:101FB000D8008F7D8093D8008091E1008F7E809340
+:101FC000E1008091E2008F7E8093E2008091E20048
+:101FD00081608093E2008091E201882311F084E027
+:101FE00007C08091E30087FD02C081E001C083E06B
+:101FF0008093E6010E94DE0B8091E10083FF29C0FF
+:102000008091E20083FF25C08091E100877F80936B
+:10201000E10082E08093E6011092E2018091E1000C
+:102020008E7F8093E1008091E2008E7F8093E200BA
+:102030008091E20080618093E20042E060E080E015
+:102040000E94670E8091F00088608093F0000E94EB
+:10205000DB0BFF91EF91BF91AF919F918F917F919A
+:102060006F915F914F913F912F910F900FBE0F9005
+:102070001F9018951F920F920FB60F9211242F9355
+:102080003F934F935F936F937F938F939F93AF9300
+:10209000BF93CF93DF93EF93FF93C091E900CF708D
+:1020A0008091EC00D82FD17080FDD0E81092E9002B
+:1020B0008091F000877F8093F00078940E947E10DA
+:1020C0001092E9008091F00088608093F000CD2BA1
+:1020D000CF70C093E900FF91EF91DF91CF91BF9155
+:1020E000AF919F918F917F916F915F914F913F91B0
+:1020F0002F910F900FBE0F901F9018951F93CF93A5
+:10210000DF93CDB7DEB7AA970FB6F894DEBF0FBE48
+:10211000CDBFE7EEF1E088E08E0F9091F100919352
+:102120008E13FBCF0E94FA0B8091E80083FF1FC142
+:102130008091E7019091E801492F50E04A30510524
+:1021400008F015C1FA01EA59FF4F0C94792680383E
+:1021500081F0823809F00BC18091EB018F70809380
+:10216000E9008091EB0085FB882780F91092E90057
+:1021700006C08091E3019091E401911182609091F9
+:10218000E800977F9093E8008093F1001092F100AF
+:10219000C8C0282F2D7F09F0EAC0882319F08230AB
+:1021A00061F0E5C08091E901813009F0E0C0933031
+:1021B00009F080E08093E4012BC08091E901811156
+:1021C00027C08091EB018F7009F4D1C08093E900A2
+:1021D0002091EB0020FF1CC0933021F48091EB0094
+:1021E000806214C09091EB0090619093EB0021E02D
+:1021F00030E0A90102C0440F551F8A95E2F74093D1
+:10220000EA001092EA008091EB0088608093EB0076
+:102210001092E9008091E800877F86C08111A7C0F5
+:102220001091E9011F778091E3008078812B8093E2
+:10223000E3008091E800877F8093E8000E949C0E75
+:102240008091E80080FFFCCF8091E300806880935C
+:10225000E300111102C082E001C083E08093E60137
+:1022600086C08058823008F082C08091E901909148
+:10227000EA018C3D53E0950779F583E08A838AE291
+:1022800089834FB7F894DE01139620E03EE051E2D7
+:10229000E32FF0E050935700E49120FF03C0E29554
+:1022A000EF703F5FEF708E2F90E0EA3010F0C7962E
+:1022B00001C0C0968D939D932F5F243149F74FBF86
+:1022C0008091E800877F8093E8006AE270E0CE01A9
+:1022D00001960E94A30D14C0AE014F5F5F4F609145
+:1022E000EB010E94EA0CBC01892B09F440C09091DB
+:1022F000E800977F9093E80089819A810E94060EFA
+:102300008091E8008B778093E80031C0803879F5C0
+:102310008091E800877F8093E8008091E2018093BC
+:10232000F1008091E8008E778093E8000E949C0E77
+:102330001EC081111CC09091E9019230C0F48091BF
+:10234000E800877F8093E8009093E2010E949C0E52
+:102350008091E201811106C08091E30087FD02C0F7
+:1023600081E001C084E08093E6010E94E60B809149
+:10237000E80083FF0AC08091E800877F8093E8002F
+:102380008091EB0080628093EB00AA960FB6F894E0
+:10239000DEBF0FBECDBFDF91CF911F91089508958D
+:1023A000CF938091E6018823A1F0C091E900CF701E
+:1023B0009091EC00892F817090FD80E8C82B1092DD
+:1023C000E9008091E80083FD0E947E10CF70C093E9
+:1023D000E900CF91089590936B0180936A0108956D
+:1023E000E0916A01F0916B01309721F00190F0814A
+:1023F000E02D099480E00895E0916A01F0916B016D
+:10240000309721F00280F381E02D09940895E09146
+:102410006A01F0916B01309721F00480F581E02D85
+:1024200009940895209168013091690182179307FA
+:1024300071F09093690180936801E0916A01F091D5
+:102440006B01309721F00680F781E02D0994089503
+:1024500020916601309167018217930771F0909384
+:10246000670180936601E0916A01F0916B013097FA
+:1024700021F00084F185E02D0994089508950C94CD
+:102480003E120E94541E0E9401070C941A1FCF9204
+:10249000DF92EF92FF920F931F93CF93DF93CDB70D
+:1024A000DEB72B970FB6F894DEBF0FBECDBF0E94EC
+:1024B00019078DE6C82E81E0D82E00E010E0E02E4E
+:1024C000802F0E940708F60141916F01F42EF82633
+:1024D000B1F40F5F1F4F0E30110589F78FEF89831D
+:1024E0008A831B820E945D1E8160782F9D838C836E
+:1024F00049815A816B818D810E94EA1240C090917E
+:10250000CF0191FF04C08B870E940D088B8520E0CE
+:1025100030E04F2D50E0922FBA01022E02C0759587
+:1025200067950A94E2F760FF24C02E83EF8221E0D2
+:1025300030E0690102C0CC0CDD1C9A95E2F790E016
+:102540008C219D21892B09F420E028870E945D1EA3
+:102550008160782F9A8789874E815F8168858A8517
+:102560000E94EA12F801E359FE4F8081C826C0821A
+:1025700006C02F5F3F4F2630310569F6AACF0E9473
+:10258000012210916C010E94F0111817A1F00E9415
+:10259000F01180936C012B960FB6F894DEBF0FBE3E
+:1025A000CDBFDF91CF911F910F91FF90EF90DF9002
+:1025B000CF900C94E90A2B960FB6F894DEBF0FBEAD
+:1025C000CDBFDF91CF911F910F91FF90EF90DF90E2
+:1025D000CF900895CF93DF93CDB7DEB72B970FB68B
+:1025E000F894DEBF0FBECDBF4F83588769877A87C7
+:1025F0008B87DE01119686E0FD0111928A95E9F73D
+:1026000085E0FE01379601900D928A95E1F74981A8
+:102610005A816B817C818D819E810E941A1A2B9632
+:102620000FB6F894DEBF0FBECDBFDF91CF910895F6
+:102630000895CF93882309F4C2C0C82F823859F473
+:102640000E94F01181FDBBC089E30E94C31C0E945F
+:10265000901D89E30CC0833879F40E94F01180FD4D
+:10266000AEC083E50E94C31C0E94901D83E50E94BA
+:10267000051DCF910C94901D843859F40E94F011DF
+:1026800082FD9DC087E40E94C31C0E94901D87E4C8
+:10269000EECF8CEF8C0F813A48F48C2F0E944424AB
+:1026A00081118DC08C2F0E94C31CE3CF80E28C0F60
+:1026B000883048F4C77081E001C0880FCA95EAF7F6
+:1026C0000E94491DD6CF8BE58C0F833078F4C53A34
+:1026D00029F0C63A31F083E890E005C081E890E047
+:1026E00002C082E890E0CF910C94121288E58C0F22
+:1026F000833108F064C0C83A39F1C93A41F1CA3AA5
+:1027000049F1CB3A51F1CC3A59F1CD3A61F1C03BA4
+:1027100069F1CE3A71F1CF3A79F1C13B81F1C23B17
+:1027200089F1C33B91F1C43B99F1C53BA1F1C63B93
+:10273000A9F1C73BB1F1C83BB9F1C93BC1F1CA3BF3
+:10274000C9F180E090E038C082EE90E035C089EEBB
+:1027500090E032C08AEE90E02FC085EB90E02CC074
+:1027600086EB90E029C087EB90E026C08CEC90E0EF
+:1027700023C08DEC90E020C083E891E01DC08AE882
+:1027800091E01AC082E991E017C084E991E014C099
+:1027900081E292E011C083E292E00EC084E292E016
+:1027A0000BC085E292E008C086E292E005C087E2B5
+:1027B00092E002C08AE292E0CF910C942812CF916D
+:1027C0000895882309F44BC0823859F40E94F0110F
+:1027D00081FF45C089E30E94C31C0E94901D89E3CC
+:1027E0000CC0833871F40E94F01180FF38C083E57B
+:1027F0000E94C31C0E94901D83E50E94051D0C943D
+:10280000901D843859F40E94F01182FF28C087E49B
+:102810000E94C31C0E94901D87E4EFCF9CEF980F8D
+:10282000913A58F390E2980F983050F4877091E005
+:1028300001C0990F8A95EAF7892F0E944F1DDFCFBB
+:102840009BE5980F933020F480E090E00C941212F6
+:10285000885A833120F480E090E00C942812089587
+:10286000882321F00E94491D0C94901D089588230F
+:1028700021F00E944F1D0C94901D0895BF92CF929D
+:10288000DF92EF92FF920F931F93CF93DF9300D0CD
+:1028900000D000D0CDB7DEB725E0FC01DE011196F7
+:1028A00001900D922A95E1F7FC01D08011810281FF
+:1028B000258122952F7043815481452B09F4FCC258
+:1028C0001F3F21F4FFEFDF1609F4F6C27C012E83CF
+:1028D0000E941813D9821A8369817A81802F0E94FD
+:1028E000BF1C182FB92E0E94741C0E943B1B2E8106
+:1028F000002319F00E94661D2E81EB2DE295EF70EA
+:10290000F0E0E059FF4F0C9479268B2D807F9B2DB2
+:102910009F70F92E882319F0F29480EFF82200239B
+:1029200089F0FF2009F475C280E2810F883020F41D
+:102930008F2D0E94491D03C08F2D0E94591D0E949A
+:10294000901D67C2812F0E94E113FF2009F4B4C2D9
+:10295000105E8F2D183018F40E944F1D02C00E9487
+:102960005F1D26960FB6F894DEBF0FBECDBFDF9178
+:10297000CF911F910F91FF90EF90DF90CF90BF907C
+:102980000C94901D3B2D307F8B2D8F70303211F0C9
+:102990008295807F112319F0113021F12CC0002382
+:1029A000B9F0222309F4A0C1213009F09DC1269677
+:1029B0000FB6F894DEBF0FBECDBFDF91CF911F9150
+:1029C0000F91FF90EF90DF90CF90BF900C94791D06
+:1029D000222319F0213009F46FC28E830E947C1DDE
+:1029E0008E8196C1002321F0223008F065C27CC19F
+:1029F000211162C28DC1002321F0222309F474C188
+:102A000008C2222309F484C119C22B2D26952695CC
+:102A1000237030E02115310521F021303105D1F04E
+:102A20004BC2002321F0812F9B2D937002C080E0C8
+:102A300090E026960FB6F894DEBF0FBECDBFDF91B3
+:102A4000CF911F910F91FF90EF90DF90CF90BF90AB
+:102A50000C941212002321F0812F9B2D937002C041
+:102A600080E090E026960FB6F894DEBF0FBECDBF93
+:102A7000DF91CF911F910F91FF90EF90DF90CF905A
+:102A8000BF900C942812812F002319F00E94092175
+:102A900002C00E94712126960FB6F894DEBF0FBEC9
+:102AA000CDBFDF91CF911F910F91FF90EF90DF90FD
+:102AB000CF90BF900C94F6218B2D837009F07BC0D2
+:102AC0000111FAC1812F829586958770880F880F32
+:102AD000912F9F70C92ED12CE12CF12C082E04C00F
+:102AE000CC0CDD1CEE1CFF1C0A94D2F714FF12C0A4
+:102AF0004FE050E060E070E004C0440F551F661FD7
+:102B0000771F8A95D2F7CB01BA01609570958095B1
+:102B1000909503C060E070E0CB012B2D26952695A3
+:102B20002370422F50E042305105D9F04330510517
+:102B300069F16C297D298E299F294130510551F178
+:102B400026960FB6F894DEBF0FBECDBFDF91CF91B2
+:102B50001F910F91FF90EF90DF90CF90BF900C945A
+:102B6000621B6C297D298E299F2926960FB6F89421
+:102B7000DEBF0FBECDBFDF91CF911F910F91FF90B0
+:102B8000EF90DF90CF90BF900C947E1B0E94621B51
+:102B9000C701B60126960FB6F894DEBF0FBECDBFB3
+:102BA000DF91CF911F910F91FF90EF90DF90CF9029
+:102BB000BF900C94461B002319F08B2D817001C02F
+:102BC0008695882309F478C1812F82958695877030
+:102BD000880F880F912F9F70C92ED12CE12CF12CDA
+:102BE000082E04C0CC0CDD1CEE1CFF1C0A94D2F78E
+:102BF00014FF12C04FE050E060E070E004C0440FEA
+:102C0000551F661F771F8A95D2F7CB01BA016095D1
+:102C100070958095909503C060E070E0CB012B2DFE
+:102C2000269526952370422F50E042305105D9F069
+:102C30004330510569F16C297D298E299F29413046
+:102C4000510551F126960FB6F894DEBF0FBECDBFE9
+:102C5000DF91CF911F910F91FF90EF90DF90CF9078
+:102C6000BF900C943C1C6C297D298E299F292696A7
+:102C70000FB6F894DEBF0FBECDBFDF91CF911F918D
+:102C80000F91FF90EF90DF90CF90BF900C94581C65
+:102C90000E943C1CC701B60126960FB6F894DEBF11
+:102CA0000FBECDBFDF91CF911F910F91FF90EF909D
+:102CB000DF90CF90BF900C94201C103FD1F118F4FE
+:102CC000103E50F4A1C0123F09F463C008F44CC098
+:102CD000133F09F473C098C01F708B2D8F710023B0
+:102CE000A1F00E94B91B812F26960FB6F894DEBF83
+:102CF0000FBECDBFDF91CF911F910F91FF90EF904D
+:102D0000DF90CF90BF900C9430140E94DA1B812F7B
+:102D100026960FB6F894DEBF0FBECDBFDF91CF91E0
+:102D20001F910F91FF90EF90DF90CF90BF900C9488
+:102D300037140023A9F02111BFC08B2D8F71269667
+:102D40000FB6F894DEBF0FBECDBFDF91CF911F91BC
+:102D50000F91FF90EF90DF90CF90BF900C94FF1BEE
+:102D6000223008F0A9C0E9CF0023A9F08B2D8F7184
+:102D700026960FB6F894DEBF0FBECDBFDF91CF9180
+:102D80001F910F91FF90EF90DF90CF90BF900C9428
+:102D9000B91B002359F38B2D8F7126960FB6F8942B
+:102DA000DEBF0FBECDBFDF91CF911F910F91FF907E
+:102DB000EF90DF90CF90BF900C94DA1B002399F036
+:102DC0008B2D8F7126960FB6F894DEBF0FBECDBF48
+:102DD000DF91CF911F910F91FF90EF90DF90CF90F7
+:102DE000BF900C94A41B26960FB6F894DEBF0FBEBE
+:102DF000CDBFDF91CF911F910F91FF90EF90DF90AA
+:102E0000CF90BF900C949A1B0023A9F0222309F4C1
+:102E1000ADCF812F26960FB6F894DEBF0FBECDBF83
+:102E2000DF91CF911F910F91FF90EF90DF90CF90A6
+:102E3000BF900C941913222309F4ADCF812F26964D
+:102E40000FB6F894DEBF0FBECDBFDF91CF911F91BB
+:102E50000F91FF90EF90DF90CF90BF900C94E11313
+:102E60004B2D4F70612FC7010E94760426960FB636
+:102E7000F894DEBF0FBECDBFDF91CF911F910F91B0
+:102E8000FF90EF90DF90CF90BF900C94BE1A4B2D27
+:102E90004F70612FC70126960FB6F894DEBF0FBEA4
+:102EA000CDBFDF91CF911F910F91FF90EF90DF90F9
+:102EB000CF90BF900C940E0826960FB6F894DEBF04
+:102EC0000FBECDBFDF91CF911F910F91FF90EF907B
+:102ED000DF90CF90BF9008950E94661D0E94761DDE
+:102EE0000E943B1D0E94901D0E94A7220E94F62175
+:102EF00080E090E00E94121280E090E00C94281292
+:102F00000E94561D0C946C170E94B41C292F229508
+:102F10002F7030E02C3031054CF42A3031056CF440
+:102F2000225031092230310588F407C02C30310598
+:102F300049F02F30310531F009C0803E48F0803F24
+:102F400029F406C093FB882780F9089580E008954E
+:102F500081E00895CF93DF9300D000D01F92CDB7CA
+:102F6000DEB70F900F900F900F900F90DF91CF91E1
+:102F70000895CF93DF9300D000D000D0CDB7DEB757
+:102F800026960FB6F894DEBF0FBECDBFDF91CF916E
+:102F900008951F93CF93DF93C0917B0116E080913A
+:102FA0007C01C81799F0D0E01C9FF0011D9FF00D27
+:102FB0001124E358FE4F40815181628173818481E5
+:102FC00095810E94B9172196C770E9CFDF91CF9103
+:102FD0001F9108954091AD015091AE016091AF01F4
+:102FE0007091B0018091B1019091B2010C94B91728
+:102FF0008091B20182958F7009F054C08091AF0129
+:10300000882309F44FC080917B01A0917C016091DD
+:10301000AD017091AE014091B0015091B101B6E0A7
+:103020008A1709F43FC090E041155105C1F17F3F77
+:1030300011F46F3FA1F1B89FF001B99FF00D112479
+:10304000E358FE4F218172132AC02081621327C0EA
+:103050002281211124C0238134812417350710F4E3
+:1030600021503109241B350B283C3105C0F4209137
+:10307000B2012F7020612093B20126E0289FF00159
+:10308000299FF00D1124EE57FE4F80818F708061D3
+:1030900080838DEA91E00E943E140C94C91701963A
+:1030A0008770BECF0895CF92DF92EF92FF920F9379
+:1030B0001F93CF93DF93CDB7DEB762970FB6F89427
+:1030C000DEBF0FBECDBF8C0185E0F801DE011D968D
+:1030D00001900D928A95E1F7D8014C9111965C917F
+:1030E000119712966C9112971396CD90DC901497CD
+:1030F0003091AD017091AE018091B0019091B1011C
+:10310000009709F46BC17F3F19F43F3F09F466C192
+:10311000E090AF01EE2009F4C0C02091B201C816C2
+:10312000D90628F0F601E81BF90BCF0104C0809501
+:1031300090958C0D9D1DFF24F394883C910578F0AB
+:10314000F12C207F09F0C6C07C2DD98AC88A8989D4
+:103150000E94AA178DEA91E00E943E14B1C0822F0E
+:10316000807F09F046C0751314C0341312C061117A
+:1031700010C02F7020612093B2010E94EA178DEADF
+:1031800091E00E943E148091B201D80115968C9373
+:103190002EC0CD2819F15F3F11F44F3FF9F0F62E04
+:1031A00061111CC080917B0120917C0136E0821767
+:1031B00009F45AC090E0389FF001399FF00D1124B6
+:1031C000E358FE4F7181571306C07081471303C047
+:1031D0007281711103C001968770E9CFF62E6623C4
+:1031E00009F418C18091B20181608093B201F12C81
+:1031F00011C1751308C0341306C0611104C0809159
+:10320000B201D801C3C04D875E878D859E856A8BCC
+:103210000E9484176A898823E1F16623D1F1209105
+:10322000B201822F82958F7090E0029774F08091A6
+:10323000AD019091AE0198878F831986DB86CA868F
+:103240002C87CE0107960E943E1486E0F801ADEA75
+:10325000B1E001900D928A95E1F70E94F8170E9463
+:10326000EA17FF24F394D6C04D875E878D859E852F
+:103270000E94B41C292F22952F7030E02230310596
+:103280000CF0BCC09F7009F0B6C0805E883008F4B6
+:10329000C1C0C8010E943E14E4CFC816D90608F484
+:1032A00053C0F601E81BF90BCF01883C910508F4E7
+:1032B00050C0F12C7C2DD98AC88A89890E94AA170E
+:1032C000EDEAF1E086E0DF011D928A95E9F70E94C0
+:1032D000EA17A0C0751314C0341312C0611110C0D6
+:1032E0008091B201F8018583C8010E943E1486E0F6
+:1032F000EDEAF1E0DF011D928A95E9F7FE2C8AC024
+:103300004D875E878D859E856A8B0E9484176A89AA
+:10331000882309F4BECF662309F4BBCF2091B20104
+:10332000822F82958F7090E002970CF48ECF80915F
+:10333000AD019091AE019A8389831B82DD82CC829C
+:103340002E83CE0101967FCF809590958C0D9D1D8B
+:10335000ACCFF62E662309F49CCF75132EC0341320
+:103360002CC02091B20120FD1FC0822F82958F704A
+:10337000D9F0D80115962C9315978F3049F08F5FAF
+:10338000982F9295907F822F8F70892B15968C9312
+:10339000C8010E943E1486E0F801ADEAB1E0019058
+:1033A0000D928A95E1F793CF86E0F801ADEAB1E09E
+:1033B00001900D928A95E1F72DC04D875E878D852E
+:1033C0009E850E948417811140CF8091B201816057
+:1033D0008093B201C8010E943E141CC0662309F408
+:1033E00058CF4D875E878D859E850E9484178823E0
+:1033F00009F44FCF2ACF811148CF0CC024303105BA
+:103400000CF047CF9F7009F440CFF8019581907F71
+:1034100009F03BCF8F2D62960FB6F894DEBF0FBE3A
+:10342000CDBFDF91CF911F910F91FF90EF90DF9073
+:10343000CF9008951F93CF93DF93CDB7DEB72C972E
+:103440000FB6F894DEBF0FBECDBF4F835887698794
+:103450007A878B879C87CE0107960E945318882312
+:1034600069F08F8198852A853B85232BF1F19F3F59
+:1034700009F063C08F3F09F060C037C086E0FE01ED
+:103480003796DE01119601900D928A95E1F76F81D2
+:103490007885EA85FB85309741F17F3F11F46F3FD6
+:1034A00021F120917C0130E0C901019687709927B4
+:1034B00040917B0150E08417950709F447C0698368
+:1034C0007A83FD83EC8396E0929FD001939FB00DA9
+:1034D0001124A358BE4FFE01319601900D929A958A
+:1034E000E1F780937C010E94C91716E080917B016F
+:1034F00090917C018917C1F1189FC0011124835854
+:103500009E4F0E945318882379F1E0917B011E9F02
+:10351000F0011124E358FE4F408151816281738193
+:10352000848195810E94B91780917B0190E001967A
+:103530008770992780937B01D9CF4F815885698502
+:103540007A858B859C850E94B917CFCF0E94801702
+:1035500010927C0110927B01EDEAF1E086E0DF0140
+:103560001D928A95E9F7C1CF2C960FB6F894DEBF6D
+:103570000FBECDBFDF91CF911F910895EF92FF92C3
+:103580000F931F93CF93DF938C01892B09F46CC0A9
+:10359000F12CEE24E394E8012196F801849184371C
+:1035A00040F4843008F051C0813081F0823019F14C
+:1035B0005BC0853709F444C0A8F19CE7980F9037A9
+:1035C00008F052C08F770E94E11341C00E5F1F4F79
+:1035D000FE01C49180E28C0F883048F4C7708E2DB4
+:1035E00001C0880FCA95EAF70E94691D14C08C2F8C
+:1035F0000E9419132DC00E5F1F4FFE01C49180E27F
+:103600008C0F883058F4C7708E2D01C0880FCA9572
+:10361000EAF70E946F1D0E94901D1AC08C2F0E9415
+:10362000E11316C00E5F1F4FFE01C491CC2381F041
+:103630008FE99FE00197F1F700C00000C150F6CF7D
+:103640000E5F1F4FFE01F49003C00E9419138E01FC
+:103650008F2D882309F49FCFEFE9FFE03197F1F731
+:1036600000C000008150F5CFDF91CF911F910F91E5
+:10367000FF90EF90089508956093B7017093B8019B
+:103680008093B9019093BA010C946C170F931F9318
+:103690000091B7011091B8012091B9013091BA01A0
+:1036A000DC01CB01802B912BA22BB32B8093B70194
+:1036B0009093B801A093B901B093BA011F910F91F3
+:1036C0000C946C170F931F930091B7011091B801E0
+:1036D0002091B9013091BA01DC01CB018023912303
+:1036E000A223B3238093B7019093B801A093B901AB
+:1036F000B093BA011F910F910C946C170F931F9305
+:103700000091B7011091B8012091B9013091BA012F
+:10371000DC01CB0180279127A227B3278093B70133
+:103720009093B801A093B901B093BA011F910F9182
+:103730000C946C171092B3011092B4011092B50161
+:103740001092B6010C946C1741E050E060E070E01C
+:1037500004C0440F551F661F771F8A95D2F7409308
+:10376000B3015093B4016093B5017093B6010C940A
+:103770006C1741E050E060E070E004C0440F551F5A
+:10378000661F771F8A95D2F78091B3019091B4019B
+:10379000A091B501B091B601482B592B6A2B7B2B18
+:1037A0004093B3015093B4016093B5017093B60197
+:1037B0000C946C1741E050E060E070E004C0440FEE
+:1037C000551F661F771F8A95D2F7409550956095D3
+:1037D00070958091B3019091B401A091B501B09121
+:1037E000B601482359236A237B234093B3015093A6
+:1037F000B4016093B5017093B6010C946C1741E06D
+:1038000050E060E070E004C0440F551F661F771F52
+:103810008A95D2F78091B3019091B401A091B5013E
+:10382000B091B601482759276A277B274093B301F7
+:103830005093B4016093B5017093B6010C946C176A
+:103840000F931F930091B3011091B4012091B50122
+:103850003091B601DC01CB01802B912BA22BB32B35
+:103860008093B3019093B401A093B501B093B601D6
+:103870001F910F910C946C170F931F930091B3013C
+:103880001091B4012091B5013091B601DC01CB015A
+:1038900080239123A223B3238093B3019093B40197
+:1038A000A093B501B093B6011F910F910C946C17C2
+:1038B0000F931F930091B3011091B4012091B501B2
+:1038C0003091B601DC01CB0180279127A227B327D5
+:1038D0008093B3019093B401A093B501B093B60166
+:1038E0001F910F910C946C170895CF92DF92EF9275
+:1038F000FF920F931F93CF93DF938C01C090B7017A
+:10390000D090B801E090B901F090BA018091B30174
+:103910009091B401A091B501B091B601C82AD92AFD
+:10392000EA2AFB2ACFE1D0E0D701C6010C2E04C061
+:10393000B695A795979587950A94D2F780FF06C00C
+:10394000B8018C2F0E944E0A019721F4219760F74D
+:1039500080E001C08C2FDF91CF911F910F91FF90DC
+:10396000EF90DF90CF900895CF93DF93EC010E940A
+:10397000751CBE010E944E0ADF91CF910895CB01C4
+:103980000E94B41C089590910C01992321F090910C
+:103990000D01911109C020910E0130910F01F90123
+:1039A00032969FEF40E01FC0982F9695969596957A
+:1039B0009F3050F5E0910E01F0910F01E90FF11DDC
+:1039C000877021E030E0A90102C0440F551F8A959D
+:1039D000E2F7CA019181892B818308959F3F39F0D5
+:1039E0004F5F4E3041F051915813F8CF0DC0511137
+:1039F000F7CF942FF5CF9F3F39F0F901E90FF11D73
+:103A000097FDFA9582830895089590910C0199236A
+:103A100021F090910D01911109C020910E0130917A
+:103A20000F01F9013296205F3F4F1FC0982F9695E6
+:103A3000969596959F30F0F4E0910E01F0910F016C
+:103A4000E90FF11D877021E030E0A90102C0440FA9
+:103A5000551F8A95E2F7CA01809591818923818358
+:103A600008953196E217F30729F090819813F9CF62
+:103A70001082F7CF089581E090E0E0910E01F0917F
+:103A80000F01E80FF91F1082019680319105A9F707
+:103A900008959091CE01892B8093CE010895809551
+:103AA0009091CE0189238093CE0108951092CE018A
+:103AB00008959091CD01892B8093CD010895809533
+:103AC0009091CD0189238093CD0108951092CD016D
+:103AD00008959091CC01892B8093CC010895809515
+:103AE0009091CC0189238093CC0108951092CC0150
+:103AF00008958093BB0108951092BB0108958091B1
+:103B00000E0190910F01FC0131969C01205F3F4F07
+:103B100080E0919191118F5FE217F307D1F708953B
+:103B2000E0910E01F0910F018091CE018083E09130
+:103B30000E01F0910F0190818091CD01892B80833E
+:103B4000E0910E01F0910F0190818091CC01892BC1
+:103B500080838091BB01882361F0E0910E01F09198
+:103B60000F019081892B80830E947F1D811110920B
+:103B7000BB0180910E0190910F010C94FC11CF922A
+:103B8000DF92EF92FF926C01EE24FF24C114D10466
+:103B9000E104F10421F0C701B60120E101C020E0F9
+:103BA000C72ED82EE92EFF24C114D104E104F1045C
+:103BB00019F0285FC701B6016B017C0154E0F6944F
+:103BC000E794D794C7945A95D1F7C114D104E1046E
+:103BD000F10419F02C5FC701B6016B017C0142E0D2
+:103BE000F694E794D794C7944A95D1F7C114D104B9
+:103BF000E104F10419F02E5FC701B601DC01CB012D
+:103C0000B695A79597958795892B8A2B8B2B09F0CD
+:103C10002F5F822FFF90EF90DF90CF9008958091DB
+:103C2000E601843021F11092D00120E488E190E097
+:103C30000FB6F894A895809360000FBE20936000A3
+:103C400080E00E94E90A83B7817F846083BF83B7E5
+:103C5000816083BF7894889583B78E7F83BF88E126
+:103C60000FB6F89480936000109260000FBE089524
+:103C700008950895CF930E94381E0E9419070E944C
+:103C8000391EC0E08C2F0E940708811104C0CF5F4D
+:103C9000CE30C1F701C081E0CF9108950E94801716
+:103CA0000E94F0110C94E90A82E084BD93E095BD76
+:103CB0009AEF97BD80936E0008952FB7F894809186
+:103CC000D1019091D201A091D301B091D4012FBF25
+:103CD0000895CF92DF92EF92FF920F931F932FB729
+:103CE000F8944091D1015091D2016091D30170912B
+:103CF000D4012FBF6A017B01EE24FF248C0120E058
+:103D000030E0C016D106E206F30610F44150510926
+:103D10009A01281B390BC9011F910F91FF90EF9059
+:103D2000DF90CF9008951F920F920FB60F9211243B
+:103D30008F939F93AF93BF938091D1019091D201C4
+:103D4000A091D301B091D4010196A11DB11D809322
+:103D5000D1019093D201A093D301B093D401BF912C
+:103D6000AF919F918F910F900FBE0F901F9018955C
+:103D70000E94ED0EF8942FEF87EA91E621508040E3
+:103D80009040E1F700C0000087E090EBDC018093F9
+:103D9000F0019093F101A093F201B093F3019CE044
+:103DA00088E10FB6F894A895809360000FBE9093B9
+:103DB0006000FFCFEF92FF920F931F93CF93DF939B
+:103DC000D82FC0E08C2F0E94070800E010E0E82EFA
+:103DD000F12CC701002E02C0959587950A94E2F751
+:103DE00080FD06C00F5F1F4F0630110591F709C017
+:103DF000602F7C2F80E00E940F08D813F3CF81E062
+:103E000004C0CF5FCE30F1F680E0DF91CF911F91FB
+:103E10000F91FF90EF900895CF93C82F8CE20E94EE
+:103E2000DA1E882321F08C2FCF910C94DA1E80E0CB
+:103E3000CF910895CF930E946120811102C00E940A
+:103E40004720C5E6C15049F00E9419078FE39CE95D
+:103E50000197F1F700C00000F5CF89E20E940C1F26
+:103E6000811113C18AE20E940C1F81110E94472018
+:103E700085E00E940C1F81110E94B81E0E946C20D8
+:103E80008093CF0187E00E940C1F8823A9F18BE16A
+:103E90000E940C1F882351F08091CF0181FB2227C3
+:103EA00020F991E0922790FB81F90EC08EE00E94EC
+:103EB0000C1F882361F08091CF0182FB222720F91B
+:103EC00091E0922790FB82F98093CF0115C080E1A9
+:103ED0000E940C1F9091CF01882341F093FB222771
+:103EE00020F981E0822780FB93F904C0892F809517
+:103EF00080FB90F99093CF018091CF010E947020B8
+:103F00000E947E208093EF0180EE0E940C1F882388
+:103F100041F08091EF01982F909590FB80F980936C
+:103F2000EF0189E30E940C1F882359F08091EF0173
+:103F300081FB222720F991E0922790FB81F9809361
+:103F4000EF0182EE0E940C1F882359F08091EF014F
+:103F500082FB222720F991E0922790FB82F980933F
+:103F6000EF0186EE0E940C1F882359F08091EF012B
+:103F700083FB222720F991E0922790FB83F980931D
+:103F8000EF0183EE0E940C1F882359F08091EF010E
+:103F900084FB222720F991E0922790FB84F98093FB
+:103FA000EF0185E30E940C1F882359F08091EF01F7
+:103FB00085FB222720F991E0922790FB85F98093D9
+:103FC000EF0181E30E940C1F882359F08091EF01DB
+:103FD00086FB222720F991E0922790FB86F98093B7
+:103FE000EF0181E10E940C1F882359F08091EF01BD
+:103FF00087FB222720F991E0922790FB87F9809395
+:10400000EF018091EF010E9482208091EF0187FBF8
+:10401000882780F980930D0187E20E940C1FC82F2A
+:104020008EE10E940C1F8111C2608FE10E940C1F63
+:104030008111C46080E20E940C1F8111C86081E27E
+:104040000E940C1F8111C06182E20E940C1F81112D
+:10405000C06283E20E940C1F8111C06484E20E944E
+:104060000C1F882311F0C06802C0CC2329F08C2FCC
+:104070000E9479206C2F03C00E947520682F70E089
+:1040800080E090E0CF910C943C1BCF9108956DEEB1
+:104090007EEF80E090E00E94B32660E082E090E056
+:1040A0000E94A12660E083E090E00E94A12660E0EB
+:1040B00084E090E00E94A12660E085E090E00C940E
+:1040C000A12680E090E00E949B2621E08D3E9E4F3D
+:1040D00009F020E0822F089582E090E00C9493266E
+:1040E000682F82E090E00C94A12683E090E00C948D
+:1040F0009326682F83E090E00C94A12684E090E062
+:104100000C949326682F84E090E00C94A126809173
+:10411000D70180FF0BC06091130185E0689FB0015B
+:10412000112475956795759567952BC081FF09C01A
+:104130006091130185E0689FB00111247595679522
+:1041400020C082FF07C06091130185E0689FB00125
+:10415000112417C09091D8019923D1F060911201D8
+:10416000961788F72091130185E0289F900111246C
+:10417000929FA001939F500D112470E0CA010E94EC
+:1041800065266038710540F46115710539F002C08B
+:1041900065E070E0862F08958FE7089581E0089527
+:1041A0008091D70180FF08C06091110170E0759582
+:1041B00067957595679521C081FF06C060911101D3
+:1041C00070E07595679519C082FF04C06091110178
+:1041D00070E010C09091D8019923C1F06091100156
+:1041E0009617A0F780911101899FC001112470E0FA
+:1041F0000E9465266038710528F46115710521F06B
+:10420000862F08958FE7089581E0089561E070E0BA
+:10421000F4CF803F21F40E948720819504C0813F24
+:1042200029F40E9487208093DB010895823F21F4C6
+:104230000E948720819504C0833F29F40E94872033
+:104240008093DA010895893F19F40E94D02005C0B7
+:104250008A3F31F40E94D02081958093DC0108953B
+:104260008B3F21F40E94D020819504C08C3F29F41B
+:104270000E94D0208093DD010895843F21F4809135
+:10428000D901816017C0853F21F48091D9018260F6
+:1042900011C0863F21F48091D90184600BC0873F13
+:1042A00021F48091D901886005C0883F31F4809164
+:1042B000D90180618093D90108958D3F21F48091C7
+:1042C000D70181600BC08E3F21F48091D7018260BD
+:1042D00005C08F3F29F48091D70184608093D70176
+:1042E0000895803F39F48091DB0187FF6CC0109204
+:1042F000DB0169C0813F29F48091DB011816BCF312
+:1043000062C09091DA01823F29F497FF5CC010925D
+:10431000DA0159C0833F19F41916CCF354C0893F10
+:1043200041F48091DC0118160CF04DC01092DC01B4
+:104330004AC08A3F29F48091DC0187FF44C0F6CF50
+:104340008B3F39F48091DD0187FF3DC01092DD0184
+:104350003AC08C3F29F48091DD011816BCF333C0BC
+:10436000843F21F48091D9018E7F17C0853F21F4CD
+:104370008091D9018D7F11C0863F21F48091D901B0
+:104380008B7F0BC0873F21F48091D901877F05C0C7
+:10439000883F31F48091D9018F7E8093D90113C079
+:1043A0008D3F21F48091D7018E7F0BC08E3F21F489
+:1043B0008091D7018D7F05C08F3F29F48091D7016F
+:1043C0008B7F8093D7018091DA0181110EC080919B
+:1043D000DB0181110AC08091DC01811106C080914E
+:1043E000DD01811102C01092D801089589ED91E09C
+:1043F0000E9407120E945D1E9093D6018093D50102
+:1044000008951F93CF93DF938091D5019091D601AA
+:104410000E94691EAC019091D801992321F020914E
+:10442000140130E006C0209115018AE0289F900118
+:1044300011244217530708F486C08091DA01C09115
+:10444000DB01D091DC011091DD01811107C0C111A8
+:1044500076C0D11174C0111172C075C09F3F19F0A0
+:104460009F5F9093D801181624F40E9487208093B0
+:10447000DA018091DA0187FF05C00E9487208195CB
+:104480008093DA011C1624F40E9487208093DB01BC
+:104490008091DB0187FF05C00E9487208195809372
+:1044A000DB016091DA01662339F1C091DB01CC2395
+:1044B00019F1772767FD7095872F972F0E94762532
+:1044C00023E333E343E35FE30E94DA250E944325BD
+:1044D0006093DA016C2F772767FD7095872F972FF0
+:1044E0000E94762523E333E343E35FE30E94DA256A
+:1044F0000E9443256093DB011D1624F40E94D02006
+:104500008093DC018091DC0187FF05C00E94D020F0
+:1045100081958093DC01111624F40E94D0208093B1
+:10452000DD018091DD0187FF05C00E94D0208195CB
+:104530008093DD01DF91CF911F910C94F6219F3F75
+:1045400009F08ECF96CFDF91CF911F910895E9EDBD
+:10455000F1E085E0DF011D928A95E9F71092D8011C
+:104560001092D7010895833081F128F4813059F0F9
+:104570008230D1F00895853009F449C0B8F1863011
+:1045800009F456C0089580911501262F30E0280FB8
+:10459000311D2F3F310524F4680F609315010895F4
+:1045A0008FEF80931501089580911401262F30E03C
+:1045B000280F311D2F3F310524F4680F609314013B
+:1045C00008958FEF80931401089580911301262F91
+:1045D00030E0280F311D2F3F310524F4680F609320
+:1045E000130108958FEF80931301089580911201B4
+:1045F000262F30E0280F311D2F3F310524F4680F9E
+:104600006093120108958FEF8093120108958091B5
+:104610001101262F30E0280F311D2F3F310524F4E2
+:10462000680F6093110108958FEF80931101089531
+:1046300080911001262F30E0280F311D2F3F3105CA
+:1046400024F4680F6093100108958FEF8093100198
+:104650000895833011F128F4813049F0823091F0CF
+:104660000895853081F120F18630C1F1089580915F
+:104670001501681720F4861B809315010895109288
+:104680001501089580911401681720F4861B80930A
+:104690001401089510921401089580911301681770
+:1046A00020F4861B8093130108951092130108953E
+:1046B00080911201681720F4861B809312010895DF
+:1046C00010921201089580911101681720F4861B41
+:1046D00080931101089510921101089580911001A5
+:1046E000681720F4861B8093100108951092100122
+:1046F00008950F931F938D3109F46BC008F03FC0EC
+:104700008E3009F47FC0C0F4873009F469C068F4C2
+:10471000863009F0B1C08091CF01817F8E7F809378
+:10472000CF0181E08093DF01A8C0883009F4A2C0E6
+:104730008B3009F49FC0A0C0863109F49BC078F487
+:10474000803109F472C0813109F096C00E9480174F
+:1047500090910D0181E0892780930D018BC08931F3
+:1047600009F488C08B3109F087C08091CF0181FBAB
+:10477000222720F991E0922790FB81F94CC08533E4
+:1047800009F470C048F4873209F46CC008F459C0C9
+:10479000893209F467C070C0833438F48A3308F072
+:1047A0004EC0883309F466C067C0833409F45AC028
+:1047B000883409F061C00E9480170FEF13ED20E3E9
+:1047C000015010402040E1F700C000000E94B81ED8
+:1047D00051C00E94FD240E94F0110E94E90A4AC0C3
+:1047E0009091CF01892F8095817080FB90F929F0FD
+:1047F000966098609093CF0140C0997F977F909387
+:10480000CF0138C08091CF0182FB222720F991E0AF
+:10481000922790FB82F98093CF01992359F18091DF
+:10482000CF0181608093CF0125C08091CF0183FBB0
+:10483000222720F991E0922790FB83F9ECCF89534E
+:1048400001C08D5141E050E060E070E08A019B01C1
+:1048500004C0000F111F221F331F8A95D2F7C90110
+:10486000B80104C061E070E080E090E00E943C1B71
+:104870000E94801781E001C080E01F910F91089590
+:1048800080E0089580E00895CF93C82F8091DF01E4
+:10489000813079F018F08230E9F187C0E0910E01A3
+:1048A000F0910F018081813169F0823209F07FC07F
+:1048B00009C0E0910E01F0910F018081813111F06A
+:1048C000823261F48C2F0E944024811104C08C2F0D
+:1048D0000E9479231DC081E090E01AC08C2F0E94B5
+:1048E0004224811114C0C43179F048F4CB3079F0FE
+:1048F000C03109F060C082E08093DF0108C0C93296
+:1049000019F0C83321F057C01092DF0154C081E084
+:10491000817053C0C93289F118F5C43171F1A8F41E
+:10492000C73009F046C08AE08093150194E1909366
+:10493000140193E0909313018093120188E0809317
+:10494000110188E28093100134C0CE51C63088F541
+:10495000EC2FF0E0E65DFE4F80818093DE0129C000
+:10496000CE34E9F020F4CB3421F56AE013C0C13530
+:1049700079F0C235F1F461E00DC08091DE01882349
+:1049800019F01092DE0115C081E08093DF0115C09F
+:1049900061E006C08091DE010E94B3220AC06AE095
+:1049A0008091DE010E94292304C01092DF0180E083
+:1049B00004C081E002C080E0ABCFCF910895E1E870
+:1049C000F0E08081886080838081816080838FB700
+:1049D000F89493E09093890090ED909388008FBFB6
+:1049E0000895EFE6F0E08081826080830895EFE62D
+:1049F000F0E080818D7F80830895EFE6F0E0908184
+:104A000082E08927808308951F920F920FB60F923C
+:104A100011242F933F934F935F936F937F938F93C3
+:104A20009F93AF93BF93EF93FF938091E001909199
+:104A3000E10101969093E1018093E001811103C0AF
+:104A400082E00E94E90AE091E101E695E695F0E056
+:104A5000E05EF74FE4918091E0018E1303C080E0A7
+:104A60000E94E90AFF91EF91BF91AF919F918F91C1
+:104A70007F916F915F914F913F912F910F900FBE5A
+:104A80000F901F90189504D06894B1118DC00895AF
+:104A900070D088F09F5790F0B92F9927B751A0F0A8
+:104AA000D1F0660F771F881F991F1AF0BA95C9F7C2
+:104AB00012C0B13081F077D0B1E0089574C0672F93
+:104AC000782F8827B85F39F0B93FCCF38695779572
+:104AD0006795B395D9F73EF490958095709561955B
+:104AE0007F4F8F4F9F4F0895E89409C097FB3EF486
+:104AF00090958095709561957F4F8F4F9F4F99232B
+:104B0000A9F0F92F96E9BB279395F69587957795A8
+:104B10006795B795F111F8CFFAF4BB0F11F460FF68
+:104B20001BC06F5F7F4F8F4F9F4F16C0882311F0C0
+:104B300096E911C0772321F09EE8872F762F05C0D4
+:104B4000662371F096E8862F70E060E02AF09A956F
+:104B5000660F771F881FDAF7880F9695879597F964
+:104B6000089557FD9058440F551F59F05F3F71F05D
+:104B70004795880F97FB991F61F09F3F79F08795C4
+:104B80000895121613061406551FF2CF4695F1DF4D
+:104B900008C0161617061806991FF1CF86957105DD
+:104BA000610508940895E894BB2766277727CB0111
+:104BB00097F908950BD078C069D028F06ED018F01E
+:104BC000952309F05AC05FC01124EECFCADFA0F3CD
+:104BD000959FD1F3950F50E0551F629FF001729F92
+:104BE000BB27F00DB11D639FAA27F00DB11DAA1FB1
+:104BF000649F6627B00DA11D661F829F2227B00DFE
+:104C0000A11D621F739FB00DA11D621F839FA00D88
+:104C1000611D221F749F3327A00D611D231F849FD8
+:104C2000600D211D822F762F6A2F11249F5750402F
+:104C30008AF0E1F088234AF0EE0FFF1FBB1F661FCA
+:104C4000771F881F91505040A9F79E3F510570F083
+:104C500014C0AACF5F3FECF3983EDCF386957795BE
+:104C60006795B795F795E7959F5FC1F7FE2B880F7E
+:104C7000911D9695879597F9089597F99F6780E814
+:104C800070E060E008959FEF80EC089500240A949E
+:104C90001616170618060906089500240A94121617
+:104CA0001306140605060895092E0394000C11F44A
+:104CB000882352F0BB0F40F4BF2B11F460FF04C0F7
+:104CC0006F5F7F4F8F4F9F4F089597FB072E16F40E
+:104CD000009407D077FD09D00E947F2607FC05D0FD
+:104CE0003EF4909581959F4F0895709561957F4F03
+:104CF0000895EE0FFF1F0590F491E02D0994AA1B73
+:104D0000BB1B51E107C0AA1FBB1FA617B70710F0B6
+:104D1000A61BB70B881F991F5A95A9F780959095E8
+:104D2000BC01CD010895F999FECF92BD81BDF89ADD
+:104D3000992780B50895A8E1B0E042E050E00C94D6
+:104D4000BB26262FF999FECF92BD81BDF89A019717
+:104D500000B4021639F01FBA20BD0FB6F894FA9AC3
+:104D6000F99A0FBE08950196272F0E94A2260C944F
+:104D7000A126DC01CB01FC01F999FECF06C0F2BDF2
+:104D8000E1BDF89A319600B40D9241505040B8F709
+:064D90000895F894FFCF26
+:104D96002002EB0A790B560B220BEE0A0101BC012D
+:104DA60028080A03140A3F4D3639E10794075E07BF
+:104DB6002507B806D106EA0603070102030405061D
+:044DC60007080900D1
+:00000001FF
diff --git a/keyboard/ergodox_ez/keymaps/osx_de_experimental/osx_de_experimental_highres.png b/keyboard/ergodox_ez/keymaps/osx_de_experimental/osx_de_experimental_highres.png
index 29f1099d0..031d874a7 100644
--- a/keyboard/ergodox_ez/keymaps/osx_de_experimental/osx_de_experimental_highres.png
+++ b/keyboard/ergodox_ez/keymaps/osx_de_experimental/osx_de_experimental_highres.png
Binary files differ
diff --git a/keyboard/ergodox_ez/keymaps/osx_de_experimental/readme.md b/keyboard/ergodox_ez/keymaps/osx_de_experimental/readme.md
new file mode 100644
index 000000000..e6a101841
--- /dev/null
+++ b/keyboard/ergodox_ez/keymaps/osx_de_experimental/readme.md
@@ -0,0 +1,22 @@
+
+# Ergodox und Ergodox-EZ experimentelles Layout
+
+dieses layout ist experimentell und wird im Lufe der Zeit viele Änderungen und Verbesserungen durchlaufen. Falls diese sich als vorteilhaft erweisen, werden sie evtl. auch in das `osx_de` layout übernommen.
+
+
+
+# Erstellt Mit Dem ErgodoxLayoutGenerator
+
+Der ErgodoxLayoutGenerator (ELG) ist ein kleines Werkzeug, welches die Erstellung und Pflege der eigenen Keymaps erleichtern soll. Es ist in java geschrieben und kann [hier](https://github.com/sboesebeck/ErgodoxLayoutGenerator/releases) heruntergeladen werden. Damit das Tool funktioniert sollte das offizielle Oracle JDK in aktueller Version installiert sein.
+Die Dokumentation für den ELG kann man [hier](https://boesebeck.name/2016/04/16/ergodoxlayoutgenerator-documentation/) nachlesen (momentan leider nur in Englisch verfügbar).
+---------------------------------------------------------------------------------------------------------------------
+
+# Ergodox and Ergodox-EZ experimental layout
+
+This is an experimental layout which will undergo heavy changes over time. If changes prove to be good, they might also move into the `osx_de` layout.
+
+Created Using the ErgodoxLayoutGenerator
+
+The ErgodoxLayoutGenerator (ELG) is a little tool, which makes the creation and maintenance of keycaps a lot easier. It was written in Java and can be downloaded [here](https://github.com/sboesebeck/ErgodoxLayoutGenerator/releases). To use the tool, you need to have a current version of Oracles JDK installed.
+
+The documentation of the ELG can be viewed [here](https://boesebeck.name/2016/04/16/ergodoxlayoutgenerator-documentation/). \ No newline at end of file
diff --git a/keyboard/planck/keymaps/default/keymap.c b/keyboard/planck/keymaps/default/keymap.c
index ac4937b69..56f20a3b9 100644
--- a/keyboard/planck/keymaps/default/keymap.c
+++ b/keyboard/planck/keymaps/default/keymap.c
@@ -38,6 +38,7 @@ extern keymap_config_t keymap_config;
#define VC_DE M(11)
#define PLOVER M(12)
#define EXT_PLV M(13)
+#define TOG_OUT M(14)
// Fillers to make layering more clear
#define _______ KC_TRNS
@@ -151,7 +152,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |------+------+------+------+------+-------------+------+------+------+------+------|
* | | S | T | P | H | * | * | F | P | L | T | D |
* |------+------+------+------+------+------|------+------+------+------+------+------|
- * | | S | K | W | R | * | * | R | B | G | S | Z |
+ * |TogOut| S | K | W | R | * | * | R | B | G | S | Z |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | Exit | | | A | O | | E | U | | | |
* `-----------------------------------------------------------------------------------'
@@ -160,7 +161,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_PLOVER] = {
{KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1 },
{XXXXXXX, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC},
- {XXXXXXX, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT},
+ {TOG_OUT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT},
{EXT_PLV, XXXXXXX, XXXXXXX, KC_C, KC_V, XXXXXXX, XXXXXXX, KC_N, KC_M, XXXXXXX, XXXXXXX, XXXXXXX}
},
@@ -343,7 +344,11 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
layer_off(_PLOVER);
}
break;
-
+ case 14:
+ if (record->event.pressed) {
+ return MACRO( D(E), D(R), D(F), D(V), D(O), D(L), U(E), U(R), U(F), U(V), U(O), U(L), END );
+ }
+ break;
}
return MACRO_NONE;
};