]> git.donarmstrong.com Git - qmk_firmware.git/commitdiff
Merge pull request #213 from mbarkhau/master
authorErez Zukerman <bulk@ezuk.org>
Sun, 3 Apr 2016 05:56:08 +0000 (08:56 +0300)
committerErez Zukerman <bulk@ezuk.org>
Sun, 3 Apr 2016 05:56:08 +0000 (08:56 +0300)
Add manuneo layout

112 files changed:
1-setup-path-win.bat
BUILD_GUIDE.md
README.md
keyboard/alps64/Makefile
keyboard/alps64/keymap_hasu.c [deleted file]
keyboard/alps64/keymap_plain.c [deleted file]
keyboard/alps64/keymaps/default.c [new file with mode: 0644]
keyboard/alps64/keymaps/hasu.c [new file with mode: 0644]
keyboard/atomic/Makefile
keyboard/atomic/README.md
keyboard/atomic/keymaps/abienz.c [new file with mode: 0644]
keyboard/atomic/keymaps/default.c [new file with mode: 0644]
keyboard/atomic/keymaps/keymap_abienz.c [deleted file]
keyboard/atomic/keymaps/keymap_default.c [deleted file]
keyboard/atomic/keymaps/keymap_michelle.c [deleted file]
keyboard/atomic/keymaps/michelle.c [new file with mode: 0644]
keyboard/atreus/Makefile
keyboard/atreus/README.md
keyboard/atreus/keymaps/default.c [new file with mode: 0644]
keyboard/atreus/keymaps/gerb.c [new file with mode: 0644]
keyboard/atreus/keymaps/keymap_default.c [deleted file]
keyboard/atreus/keymaps/keymap_gerb.c [deleted file]
keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/README.md [new file with mode: 0644]
keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/dvorak_intl_squisher.hex [new file with mode: 0644]
keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/keyboard-layout0.png [new file with mode: 0644]
keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/keyboard-layout1.png [new file with mode: 0644]
keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/keyboard-layout2.png [new file with mode: 0644]
keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/keymap.c [new file with mode: 0644]
keyboard/ergodox_ez/keymaps/osx_de/keymap.c
keyboard/ergodox_ez/keymaps/osx_de/osx_de.hex
keyboard/ergodox_ez/keymaps/osx_de/osx_de_highres.png
keyboard/gh60/Makefile
keyboard/gh60/Makefile.pjrc
keyboard/gh60/README.md
keyboard/gh60/keymap_hasu.c [deleted file]
keyboard/gh60/keymap_hhkb.c [deleted file]
keyboard/gh60/keymap_plain.c [deleted file]
keyboard/gh60/keymap_poker.c [deleted file]
keyboard/gh60/keymap_poker_bit.c [deleted file]
keyboard/gh60/keymap_poker_set.c [deleted file]
keyboard/gh60/keymap_spacefn.c [deleted file]
keyboard/gh60/keymaps/hasu.c [new file with mode: 0644]
keyboard/gh60/keymaps/hhkb.c [new file with mode: 0644]
keyboard/gh60/keymaps/plain.c [new file with mode: 0644]
keyboard/gh60/keymaps/poker.c [new file with mode: 0644]
keyboard/gh60/keymaps/poker_bit.c [new file with mode: 0644]
keyboard/gh60/keymaps/poker_set.c [new file with mode: 0644]
keyboard/gh60/keymaps/spacefn.c [new file with mode: 0644]
keyboard/hhkb/Makefile
keyboard/hhkb/Makefile.pjrc
keyboard/hhkb/Makefile.rn42
keyboard/hhkb/README.md
keyboard/hhkb/keymap_hasu.c [deleted file]
keyboard/hhkb/keymap_hhkb.c [deleted file]
keyboard/hhkb/keymap_jp.c [deleted file]
keyboard/hhkb/keymap_spacefn.c [deleted file]
keyboard/hhkb/keymaps/hasu.c [new file with mode: 0644]
keyboard/hhkb/keymaps/hhkb.c [new file with mode: 0644]
keyboard/hhkb/keymaps/jp.c [new file with mode: 0644]
keyboard/hhkb/keymaps/spacefn.c [new file with mode: 0644]
keyboard/hhkb_qmk/Makefile
keyboard/hhkb_qmk/README.md
keyboard/hhkb_qmk/keymaps/default.c [new file with mode: 0644]
keyboard/hhkb_qmk/keymaps/keymap_default.c [deleted file]
keyboard/hhkb_qmk/keymaps/keymap_lxol.c [deleted file]
keyboard/hhkb_qmk/keymaps/lxol.c [new file with mode: 0644]
keyboard/jd45/Makefile
keyboard/jd45/keymaps/default.c [new file with mode: 0644]
keyboard/jd45/keymaps/justin.c [new file with mode: 0644]
keyboard/jd45/keymaps/keymap_default.c [deleted file]
keyboard/jd45/keymaps/keymap_justin.c [deleted file]
keyboard/planck/Makefile
keyboard/planck/README.md
keyboard/planck/common_keymaps/keymap_mitch.c [deleted file]
keyboard/planck/keymaps/default/keymap.c
keyboard/planck/keymaps/tak3over.c [new file with mode: 0644]
keyboard/planck/old_keymap_files/common_keymaps/keymap_mitch.c [new file with mode: 0644]
keyboard/preonic/Makefile
keyboard/preonic/Makefile.pjrc [deleted file]
keyboard/preonic/PCB_GUIDE.md [deleted file]
keyboard/preonic/README.md
keyboard/preonic/__avr_gdbinit [deleted file]
keyboard/preonic/analog.c [deleted file]
keyboard/preonic/analog.h [deleted file]
keyboard/preonic/beeps.c [deleted file]
keyboard/preonic/beeps.h [deleted file]
keyboard/preonic/config.h
keyboard/preonic/config_definitions.h [deleted file]
keyboard/preonic/extended_keymap_common.c [deleted file]
keyboard/preonic/extended_keymap_common.h [deleted file]
keyboard/preonic/extended_keymaps/extended_keymap_default.c [deleted file]
keyboard/preonic/extended_keymaps/extended_keymap_lock.c [deleted file]
keyboard/preonic/flash-pcb.sh [new file with mode: 0755]
keyboard/preonic/keymap_midi.c [deleted file]
keyboard/preonic/keymap_midi.h [deleted file]
keyboard/preonic/keymaps/default/README.md [new file with mode: 0644]
keyboard/preonic/keymaps/default/keymap.c [new file with mode: 0644]
keyboard/preonic/keymaps/lock/README.md [new file with mode: 0644]
keyboard/preonic/keymaps/lock/keymap.c [new file with mode: 0644]
keyboard/preonic/led.c [deleted file]
keyboard/preonic/matrix.c [deleted file]
keyboard/preonic/preonic.c [new file with mode: 0644]
keyboard/preonic/preonic.h [new file with mode: 0644]
keyboard/preonic/preonic_pcb.hex [new file with mode: 0644]
keyboard/preonic/preonic_pcb_silent.hex [new file with mode: 0644]
quantum/keymap_common.c
quantum/keymap_extras/keymap_german_osx.h
quantum/keymap_midi.c
quantum/template/README.md
quantum/template/config.h
tmk_core/common/avr/suspend.c
tmk_core/common/keyboard.c

index 49fb00e149ac26aff74756939b4012521dc9411b..2c15857bb7a759c9eafd5a494b313c9520ae0f6b 100644 (file)
@@ -1,9 +1,71 @@
-@echo off
-setx /M path "%PATH%;C:\MinGW\bin;C:\MinGW\msys\1.0\bin" > nul 2>&1
-if NOT ["%errorlevel%"]==["0"] (
-       echo FAILED. Rerun with administrator privileges.
-       pause
-) else (
-       echo Success!
-       pause
-)
+@SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
+@ECHO OFF
+SET CMDLINERUNSTR=%SystemRoot%\system32\cmd.exe
+
+SET NEWPATH1="C:\MinGW\msys\1.0\bin"
+SET NEWPATH2="C:\MinGW\bin"
+
+:: Make sure paths exist
+IF NOT EXIST !NEWPATH1! (ECHO Path not found: %NEWPATH1% && GOTO ExitBatch)
+IF NOT EXIST !NEWPATH2! (ECHO Path not found: %NEWPATH2% && GOTO ExitBatch)
+
+:: Add paths
+CALL :AddPath %NEWPATH1%
+CALL :AddPath %NEWPATH2%
+
+:: Branch to UpdateEnv if we need to update
+IF DEFINED UPDATE (GOTO UpdateEnv)
+
+GOTO ExitBatch
+
+:: -----------------------------------------------------------------------------
+
+:UpdateEnv
+ECHO Making updated PATH go live . . .
+REG delete HKCU\Environment /F /V TEMPVAR > nul 2>&1
+setx TEMPVAR 1 > nul 2>&1
+REG delete HKCU\Environment /F /V TEMPVAR > nul 2>&1
+IF NOT !cmdcmdline! == !CMDLINERUNSTR! (CALL :KillExplorer)
+GOTO ExitBatch
+
+:: -----------------------------------------------------------------------------
+
+:ExitBatch
+ENDLOCAL
+PAUSE
+EXIT /b
+
+:: -----------------------------------------------------------------------------
+
+:AddPath <pathToAdd>
+ECHO %PATH% | FINDSTR /C:"%~1" > nul
+IF ERRORLEVEL 1 (
+       REG add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /f /v PATH /t REG_SZ /d "%PATH%;%~1"  > nul 2>&1
+       IF ERRORLEVEL 0 (
+               ECHO Adding   %1 . . . Success!
+               SET "PATH=%PATH%;%~1"
+               SET UPDATE=1
+       ) ELSE (
+               ECHO Adding   %1 . . . FAILED. Run this script with administrator privileges.
+       )       
+) ELSE (
+       ECHO Skipping %1 - Already in PATH
+       )
+EXIT /b
+
+:: -----------------------------------------------------------------------------
+
+:KillExplorer
+
+ECHO Your desktop is being restarted, please wait. . .   
+ping -n 5 127.0.0.1 > NUL 2>&1   
+ECHO Killing process Explorer.exe. . .   
+taskkill /f /im explorer.exe   
+ECHO.   
+ECHO Your desktop is now loading. . .   
+ping -n 5 127.0.0.1 > NUL 2>&1   
+ECHO.   
+ping -n 5 127.0.0.1 > NUL 2>&1   
+START explorer.exe
+START explorer.exe %CD%
+EXIT /b
\ No newline at end of file
index e8b242e4e3ccb8a46899fdfa6add76fe3b7ef671..f7a57d2fc9b028e2de43d19b0f8858d6ea0182d9 100644 (file)
@@ -3,11 +3,13 @@
 ## Build Environment Setup
 
 ### Windows
-1. Install [MHV AVR Tools](https://infernoembedded.com/sites/default/files/project/MHV_AVR_Tools_20131101.exe). Disable smatch, but **be sure to leave the option to add the tools to the PATH checked**.
-2. Install [MinGW](https://sourceforge.net/projects/mingw/files/Installer/mingw-get-setup.exe/download). During installation, uncheck the option to install a graphical user interface. **DO NOT change the default installation folder.** The scripts depend on the default location.
-3. Clone this repository. [This link will download it as a zip file, which you'll need to extract.](https://github.com/jackhumbert/qmk_firmware/archive/master.zip) Open the extracted folder in Windows Explorer.
-4. Right-click on the 1-setup-path-win batch script, select "Run as administrator", and accept the User Account Control prompt. Press the spacebar to dismiss the success message in the command prompt that pops up.
-5. Right-click on the 2-setup-environment-win batch script, select "Run as administrator", and accept the User Account Control prompt. This part may take a couple of minutes, and you'll need to approve a driver installation, but once it finishes, your environment is complete!
+1. If you have ever installed WinAVR, uninstall it.
+2. Install [MHV AVR Tools](https://infernoembedded.com/sites/default/files/project/MHV_AVR_Tools_20131101.exe). Disable smatch, but **be sure to leave the option to add the tools to the PATH checked**.
+3. Install [MinGW](https://sourceforge.net/projects/mingw/files/Installer/mingw-get-setup.exe/download). During installation, uncheck the option to install a graphical user interface. **DO NOT change the default installation folder.** The scripts depend on the default location.
+4. Clone this repository. [This link will download it as a zip file, which you'll need to extract.](https://github.com/jackhumbert/qmk_firmware/archive/master.zip) Open the extracted folder in Windows Explorer.
+5. Right-click on the 1-setup-path-win batch script, select "Run as administrator", and accept the User Account Control prompt. Press the spacebar to dismiss the success message in the command prompt that pops up.
+6. Right-click on the 2-setup-environment-win batch script, select "Run as administrator", and accept the User Account Control prompt. This part may take a couple of minutes, and you'll need to approve a driver installation, but once it finishes, your environment is complete!
+7. Future build commands should be run from the standard Windows command prompt, which you can find by searching for "command prompt" from the start menu or start screen. Ignore the "MHV AVR Shell".
 
 ### Mac
 If you're using [homebrew,](http://brew.sh/) you can use the following commands:
@@ -42,7 +44,10 @@ If you have any problems building the firmware, you can try using a tool called
 4. Once you're in the correct keyboard-specific folder, run the `make` command. This should output a lot of information about the build process.
 
 ## Customizing, Building, and Deploying Your Firmware
-1. Running the `make` command from your keyboard's folder will generate a .hex file based on the default keymap. All keymaps for a particular keyboard live in the `keymaps` folder in that keyboard's folder. To create your own keymap, copy `keymaps/default/keymap.c` to the `keymaps` folder, and rename it with your name, for example jack.c. Or, if you don't care about the ability to share your keymap with the community via GitHub, you can just modify the default keymap itself. Details on how to program keymap files can be found in other guides.
+
+Note: Some keyboard folders have non-standard organizations, and may not even support specifying alternate keymaps. Until these get reorganized, you will need to edit their default keymaps directly.
+
+1. Running the `make` command from your keyboard's folder will generate a .hex file based on the default keymap. All keymaps for a particular keyboard live in the `keymaps` folder in that keyboard's folder. To create your own keymap, copy `keymaps/default/keymap.c` to the `keymaps` folder, and rename it with your name, for example jack.c. Or, if you don't care about the ability to share your keymap with the community via GitHub, you can just modify the default keymap itself. Details on how to program keymap files can be found in other guides. 
 2. To build a keymap other than the default, type `KEYMAP=<name>` after `make`. So if I've named my keymap jack.c, the full command would be `make KEYMAP=jack`.
 3. How you deploy the firmware will depend on whether you are using a PCB or a Teensy. In both cases, you'll need to put the keyboard in bootloader mode, either by pressing a button on the PCB/Teensy or pressing the key with the `RESET` keycode. Then, if you're using a PCB, just run `make KEYMAP=<name> dfu` to both build and deploy the firmware. If you're using a Teensy, you'll probably need to take the <keyboardname>.hex file that make produces in the keyboard's folder, and deploy it using the [Teensy Loader.](https://www.pjrc.com/teensy/loader.html)
 
index 6a6bbed40b0097ba50b0168d8a554de56da5e719..98573306793ab5e534413e246ce74960596dff78 100644 (file)
--- a/README.md
+++ b/README.md
@@ -269,7 +269,7 @@ For this mod, you need an unused pin wiring to DI of WS2812 strip. After wiring
 
     RGBLIGHT_ENABLE = yes
 
-Please note that the underglow is not compatible with MIDI functions. So you cannot enable both of them at the same time.
+Please note that the underglow is not compatible with audio output. So you cannot enable both of them at the same time.
 
 Please add the following options into your config.h, and set them up according your hardware configuration.
 
@@ -309,4 +309,4 @@ what things are (and likely aren't) too risky.
 - EEPROM has around a 100000 write cycle.  You shouldn't rewrite the
   firmware repeatedly and continually; that'll burn the EEPROM
   eventually.
-                                       
\ No newline at end of file
+                                       
index e90dcedb673022f1aca9933402ed75ed63869071..7634c4280ebceee82b5a2726d3b196f861312fa0 100644 (file)
@@ -53,9 +53,9 @@ SRC = keymap_common.c \
        led.c
 
 ifdef KEYMAP
-    SRC := keymap_$(KEYMAP).c $(SRC)
+    SRC := keymaps/$(KEYMAP).c $(SRC)
 else
-    SRC := keymap_plain.c $(SRC)
+    SRC := keymaps/default.c $(SRC)
 endif
 
 CONFIG_H = config.h
diff --git a/keyboard/alps64/keymap_hasu.c b/keyboard/alps64/keymap_hasu.c
deleted file mode 100644 (file)
index d297d72..0000000
+++ /dev/null
@@ -1,151 +0,0 @@
-#include "keymap_common.h"
-
-/*
- * Hasu
- */
-const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-    /* Default Layer
-     * ,-----------------------------------------------------------.
-     * |Esc|  1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =|   \   |
-     * |-----------------------------------------------------------|
-     * |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|Bspc |
-     * |-----------------------------------------------------------|
-     * |Ctrl  |  A|  S|  D|  F|  G|  H|  J|  K|  L|Fn3|  '|FN1     |
-     * |-----------------------------------------------------------|
-     * |Shift   |  Z|  X|  C|  V|  B|  N|  M|  ,|  .|Fn2|Shift     |
-     * |-----------------------------------------------------------|
-     * |Ctrl |Gui |Alt  |       Space            |Alt   |Fn5 |Ctrl |
-     * `-----------------------------------------------------------'
-     */
-    [0] = KEYMAP_AEK( \
-        ESC, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSLS, \
-        TAB, Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC,BSPC, \
-        LCTL,A,   S,   D,   F,   G,   H,   J,   K,   L,   FN3, QUOT,FN1, \
-        LSFT,Z,   X,   C,   V,   B,   N,   M,   COMM,DOT, FN2, RSFT, \
-        LCTL,LGUI,LALT,          FN4,                          RALT,FN5, FN0),
-
-    /* HHKB mode[HHKB Fn]
-     * ,-----------------------------------------------------------.
-     * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|   `   |
-     * |-----------------------------------------------------------|
-     * |Caps |   |   |   |   |   |   |   |Psc|Slk|Pus|Up |   |Del  |
-     * |-----------------------------------------------------------|
-     * |Contro|VoD|VoU|Mut|   |   |  *|  /|Hom|PgU|Lef|Rig|Enter   |
-     * |-----------------------------------------------------------|
-     * |Shift   |   |   |   |   |   |  +|  -|End|PgD|Dow|Shift     |
-     * |-----------------------------------------------------------|
-     * |Ctrl |Gui |Alt  |       Space            |Alt   |Fn5 |Ctrl |
-     * `-----------------------------------------------------------'
-     */ 
-    [1] = KEYMAP_AEK( \
-        GRV, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, GRV, \
-        CAPS,NO,  NO,  NO,  NO,  NO,  NO,  NO,  PSCR,SLCK,PAUS,UP,  NO,  DEL, \
-        LCTL,VOLD,VOLU,MUTE,NO,  NO,  PAST,PSLS,HOME,PGUP,LEFT,RGHT,TRNS, \
-        LSFT,NO,  NO,  NO,  NO,  NO,  PPLS,PMNS,END, PGDN,DOWN,RSFT, \
-        LCTL,LGUI,LALT,          TRNS,                         RALT,RGUI,TRNS),
-
-    /* Vi mode[Slash]
-     * ,-----------------------------------------------------------.
-     * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Del    |
-     * |-----------------------------------------------------------|
-     * |Tab  |Hom|PgD|Up |PgU|End|Hom|PgD|PgUlEnd|   |   |   |Backs|
-     * |-----------------------------------------------------------|
-     * |Contro|   |Lef|Dow|Rig|   |Lef|Dow|Up |Rig|   |   |Return  |
-     * |-----------------------------------------------------------|
-     * |Shift   |   |   |   |   |   |Hom|PgD|PgUlEnd|Fn0|Shift     |
-     * |-----------------------------------------------------------|
-     * |Ctrl |Gui |Alt  |       Space            |Alt   |Fn5 |Ctrl |
-     * `-----------------------------------------------------------'
-     */
-    [2] = KEYMAP_AEK( \
-        GRV, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, GRV, \
-        TAB, HOME,PGDN,UP,  PGUP,END, HOME,PGDN,PGUP,END, NO,  NO,  NO,  DEL, \
-        LCTL,NO,  LEFT,DOWN,RGHT,NO,  LEFT,DOWN,UP,  RGHT,NO,  NO,  ENT, \
-        LSFT,NO,  NO,  NO,  NO,  NO,  HOME,PGDN,PGUP,END, FN2, RSFT, \
-        LCTL,LGUI,LALT,          SPC,                          RALT,RGUI,RCTL),
-
-    /* Mouse mode(IJKL)[Semicolon]
-     * ,-----------------------------------------------------------.
-     * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
-     * |-----------------------------------------------------------|
-     * |Tab  |   |   |   |   |   |MwL|MwD|McU|MwU|MwR|Wbk|Wfr|Alt-T|
-     * |-----------------------------------------------------------|
-     * |Contro|   |   |   |   |   |Mb2|McL|McD|McR|Fn |   |Return  |
-     * |-----------------------------------------------------------|
-     * |Shift   |   |   |   |   |Mb3|Mb2|Mb1|Mb4|Mb5|   |Shift |   |
-     * |-----------------------------------------------------------|
-     * |Ctrl |Gui |Alt  |       Space            |Alt   |Fn5 |Ctrl |
-     * `-----------------------------------------------------------'
-     * Mc: Mouse Cursor / Mb: Mouse Button / Mw: Mouse Wheel
-     */
-    [3] = KEYMAP_AEK( \
-        GRV, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, GRV, \
-        FN8, NO,  NO,  NO,  NO,  NO,  NO,  WH_D,MS_U,WH_U,RGHT,FN9, FN10,FN8, \
-        LCTL,ACL0,ACL1,ACL2,ACL2,NO,  NO,  MS_L,MS_D,MS_R,TRNS,NO,  ENT, \
-        LSFT,NO,  NO,  NO,  NO,  BTN3,BTN2,BTN1,FN9, FN10,NO,  RSFT, \
-        LCTL,LGUI,LALT,          BTN1,                         TRNS,TRNS,TRNS),
-
-    /* Layer 4: Mouse mode(IJKL)[Space]
-     * ,-----------------------------------------------------------.
-     * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
-     * |-----------------------------------------------------------|
-     * |Tab  |   |   |   |   |   |MwL|MwD|McU|MwU|MwR|Wbk|Wfr|Alt-T|
-     * |-----------------------------------------------------------|
-     * |Contro|   |   |   |   |   |Mb2|McL|McD|McR|Mb1|   |Return  |
-     * |-----------------------------------------------------------|
-     * |Shift   |   |   |   |   |Mb3|Mb2|Mb1|Mb4|Mb5|   |Shift |   |
-     * |-----------------------------------------------------------|
-     * |Ctrl |Gui |Alt  |       Space            |Alt   |Fn5 |Ctrl |
-     * `-----------------------------------------------------------'
-     * Mc: Mouse Cursor / Mb: Mouse Button / Mw: Mouse Wheel
-     */
-    [4] = KEYMAP_AEK( \
-        GRV, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, GRV, \
-        FN8, NO,  NO,  NO,  NO,  NO,  NO,  WH_D,MS_U,WH_U,RGHT,FN9, FN10,FN8, \
-        LCTL,VOLD,VOLU,MUTE,NO,  NO,  NO,  MS_L,MS_D,MS_R,BTN1,NO,  ENT, \
-        LSFT,NO,  NO,  NO,  NO,  BTN3,BTN2,BTN1,FN9, FN10,NO,  RSFT, \
-        LCTL,LGUI,LALT,          TRNS,                         TRNS,TRNS,TRNS),
-};
-
-
-/* id for user defined function/macro */
-enum function_id {
-    NONE,
-};
-
-enum macro_id {
-    ALT_TAB,
-};
-
-
-/*
- * Fn action definition
- */
-const uint16_t PROGMEM fn_actions[] = {
-    [0] = ACTION_LAYER_MOMENTARY(1),                  // HHKB layer
-    [1] = ACTION_LAYER_TAP_KEY(1, KC_ENTER),          // HHKB layer
-    [2] = ACTION_LAYER_TAP_KEY(2, KC_SLASH),          // Cursor layer with Slash*
-    [3] = ACTION_LAYER_TAP_KEY(3, KC_SCLN),           // Mousekey layer with Semicolon*
-    [4] = ACTION_LAYER_TAP_KEY(4, KC_SPC),            // Mousekey layer with Space
-    [5] = ACTION_LAYER_MOMENTARY(3),                  // Mousekey layer(IJKL)
-    [6] = ACTION_LAYER_TAP_KEY(MOD_RCTL, KC_ENT),      // RControl with tap Enter
-    [7] = ACTION_MODS_ONESHOT(MOD_LSFT),              // Oneshot Shift
-    [8] = ACTION_MACRO(ALT_TAB),                      // Application switching
-    [9] = ACTION_MODS_KEY(MOD_LALT, KC_LEFT),
-   [10] = ACTION_MODS_KEY(MOD_LALT, KC_RIGHT),
-};
-
-
-/*
- * Macro definition
- */
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-    switch (id) {
-        case ALT_TAB:
-            return (record->event.pressed ?
-                    MACRO( D(LALT), D(TAB), END ) :
-                    MACRO( U(TAB), END ));
-    }
-    return MACRO_NONE;
-}
diff --git a/keyboard/alps64/keymap_plain.c b/keyboard/alps64/keymap_plain.c
deleted file mode 100644 (file)
index a548991..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-#include "keymap_common.h"
-
-const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-    /* 0: qwerty */
-    KEYMAP( \
-        GRV, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, NUHS, BSPC, \
-        TAB, Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC,BSLS, \
-        CAPS,A,   S,   D,   F,   G,   H,   J,   K,   L,   SCLN,QUOT,ENT,  \
-        LSFT,NUBS,Z,   X,   C,   V,   B,   N,   M,   COMM,DOT, SLSH,RSFT,ESC, \
-        LCTL,LGUI,LALT,          SPC,                     APP, RALT,RGUI,RCTL),
-};
-const uint16_t PROGMEM fn_actions[] = {};
diff --git a/keyboard/alps64/keymaps/default.c b/keyboard/alps64/keymaps/default.c
new file mode 100644 (file)
index 0000000..a548991
--- /dev/null
@@ -0,0 +1,12 @@
+#include "keymap_common.h"
+
+const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+    /* 0: qwerty */
+    KEYMAP( \
+        GRV, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, NUHS, BSPC, \
+        TAB, Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC,BSLS, \
+        CAPS,A,   S,   D,   F,   G,   H,   J,   K,   L,   SCLN,QUOT,ENT,  \
+        LSFT,NUBS,Z,   X,   C,   V,   B,   N,   M,   COMM,DOT, SLSH,RSFT,ESC, \
+        LCTL,LGUI,LALT,          SPC,                     APP, RALT,RGUI,RCTL),
+};
+const uint16_t PROGMEM fn_actions[] = {};
diff --git a/keyboard/alps64/keymaps/hasu.c b/keyboard/alps64/keymaps/hasu.c
new file mode 100644 (file)
index 0000000..d297d72
--- /dev/null
@@ -0,0 +1,151 @@
+#include "keymap_common.h"
+
+/*
+ * Hasu
+ */
+const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+    /* Default Layer
+     * ,-----------------------------------------------------------.
+     * |Esc|  1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =|   \   |
+     * |-----------------------------------------------------------|
+     * |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|Bspc |
+     * |-----------------------------------------------------------|
+     * |Ctrl  |  A|  S|  D|  F|  G|  H|  J|  K|  L|Fn3|  '|FN1     |
+     * |-----------------------------------------------------------|
+     * |Shift   |  Z|  X|  C|  V|  B|  N|  M|  ,|  .|Fn2|Shift     |
+     * |-----------------------------------------------------------|
+     * |Ctrl |Gui |Alt  |       Space            |Alt   |Fn5 |Ctrl |
+     * `-----------------------------------------------------------'
+     */
+    [0] = KEYMAP_AEK( \
+        ESC, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSLS, \
+        TAB, Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC,BSPC, \
+        LCTL,A,   S,   D,   F,   G,   H,   J,   K,   L,   FN3, QUOT,FN1, \
+        LSFT,Z,   X,   C,   V,   B,   N,   M,   COMM,DOT, FN2, RSFT, \
+        LCTL,LGUI,LALT,          FN4,                          RALT,FN5, FN0),
+
+    /* HHKB mode[HHKB Fn]
+     * ,-----------------------------------------------------------.
+     * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|   `   |
+     * |-----------------------------------------------------------|
+     * |Caps |   |   |   |   |   |   |   |Psc|Slk|Pus|Up |   |Del  |
+     * |-----------------------------------------------------------|
+     * |Contro|VoD|VoU|Mut|   |   |  *|  /|Hom|PgU|Lef|Rig|Enter   |
+     * |-----------------------------------------------------------|
+     * |Shift   |   |   |   |   |   |  +|  -|End|PgD|Dow|Shift     |
+     * |-----------------------------------------------------------|
+     * |Ctrl |Gui |Alt  |       Space            |Alt   |Fn5 |Ctrl |
+     * `-----------------------------------------------------------'
+     */ 
+    [1] = KEYMAP_AEK( \
+        GRV, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, GRV, \
+        CAPS,NO,  NO,  NO,  NO,  NO,  NO,  NO,  PSCR,SLCK,PAUS,UP,  NO,  DEL, \
+        LCTL,VOLD,VOLU,MUTE,NO,  NO,  PAST,PSLS,HOME,PGUP,LEFT,RGHT,TRNS, \
+        LSFT,NO,  NO,  NO,  NO,  NO,  PPLS,PMNS,END, PGDN,DOWN,RSFT, \
+        LCTL,LGUI,LALT,          TRNS,                         RALT,RGUI,TRNS),
+
+    /* Vi mode[Slash]
+     * ,-----------------------------------------------------------.
+     * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Del    |
+     * |-----------------------------------------------------------|
+     * |Tab  |Hom|PgD|Up |PgU|End|Hom|PgD|PgUlEnd|   |   |   |Backs|
+     * |-----------------------------------------------------------|
+     * |Contro|   |Lef|Dow|Rig|   |Lef|Dow|Up |Rig|   |   |Return  |
+     * |-----------------------------------------------------------|
+     * |Shift   |   |   |   |   |   |Hom|PgD|PgUlEnd|Fn0|Shift     |
+     * |-----------------------------------------------------------|
+     * |Ctrl |Gui |Alt  |       Space            |Alt   |Fn5 |Ctrl |
+     * `-----------------------------------------------------------'
+     */
+    [2] = KEYMAP_AEK( \
+        GRV, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, GRV, \
+        TAB, HOME,PGDN,UP,  PGUP,END, HOME,PGDN,PGUP,END, NO,  NO,  NO,  DEL, \
+        LCTL,NO,  LEFT,DOWN,RGHT,NO,  LEFT,DOWN,UP,  RGHT,NO,  NO,  ENT, \
+        LSFT,NO,  NO,  NO,  NO,  NO,  HOME,PGDN,PGUP,END, FN2, RSFT, \
+        LCTL,LGUI,LALT,          SPC,                          RALT,RGUI,RCTL),
+
+    /* Mouse mode(IJKL)[Semicolon]
+     * ,-----------------------------------------------------------.
+     * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
+     * |-----------------------------------------------------------|
+     * |Tab  |   |   |   |   |   |MwL|MwD|McU|MwU|MwR|Wbk|Wfr|Alt-T|
+     * |-----------------------------------------------------------|
+     * |Contro|   |   |   |   |   |Mb2|McL|McD|McR|Fn |   |Return  |
+     * |-----------------------------------------------------------|
+     * |Shift   |   |   |   |   |Mb3|Mb2|Mb1|Mb4|Mb5|   |Shift |   |
+     * |-----------------------------------------------------------|
+     * |Ctrl |Gui |Alt  |       Space            |Alt   |Fn5 |Ctrl |
+     * `-----------------------------------------------------------'
+     * Mc: Mouse Cursor / Mb: Mouse Button / Mw: Mouse Wheel
+     */
+    [3] = KEYMAP_AEK( \
+        GRV, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, GRV, \
+        FN8, NO,  NO,  NO,  NO,  NO,  NO,  WH_D,MS_U,WH_U,RGHT,FN9, FN10,FN8, \
+        LCTL,ACL0,ACL1,ACL2,ACL2,NO,  NO,  MS_L,MS_D,MS_R,TRNS,NO,  ENT, \
+        LSFT,NO,  NO,  NO,  NO,  BTN3,BTN2,BTN1,FN9, FN10,NO,  RSFT, \
+        LCTL,LGUI,LALT,          BTN1,                         TRNS,TRNS,TRNS),
+
+    /* Layer 4: Mouse mode(IJKL)[Space]
+     * ,-----------------------------------------------------------.
+     * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
+     * |-----------------------------------------------------------|
+     * |Tab  |   |   |   |   |   |MwL|MwD|McU|MwU|MwR|Wbk|Wfr|Alt-T|
+     * |-----------------------------------------------------------|
+     * |Contro|   |   |   |   |   |Mb2|McL|McD|McR|Mb1|   |Return  |
+     * |-----------------------------------------------------------|
+     * |Shift   |   |   |   |   |Mb3|Mb2|Mb1|Mb4|Mb5|   |Shift |   |
+     * |-----------------------------------------------------------|
+     * |Ctrl |Gui |Alt  |       Space            |Alt   |Fn5 |Ctrl |
+     * `-----------------------------------------------------------'
+     * Mc: Mouse Cursor / Mb: Mouse Button / Mw: Mouse Wheel
+     */
+    [4] = KEYMAP_AEK( \
+        GRV, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, GRV, \
+        FN8, NO,  NO,  NO,  NO,  NO,  NO,  WH_D,MS_U,WH_U,RGHT,FN9, FN10,FN8, \
+        LCTL,VOLD,VOLU,MUTE,NO,  NO,  NO,  MS_L,MS_D,MS_R,BTN1,NO,  ENT, \
+        LSFT,NO,  NO,  NO,  NO,  BTN3,BTN2,BTN1,FN9, FN10,NO,  RSFT, \
+        LCTL,LGUI,LALT,          TRNS,                         TRNS,TRNS,TRNS),
+};
+
+
+/* id for user defined function/macro */
+enum function_id {
+    NONE,
+};
+
+enum macro_id {
+    ALT_TAB,
+};
+
+
+/*
+ * Fn action definition
+ */
+const uint16_t PROGMEM fn_actions[] = {
+    [0] = ACTION_LAYER_MOMENTARY(1),                  // HHKB layer
+    [1] = ACTION_LAYER_TAP_KEY(1, KC_ENTER),          // HHKB layer
+    [2] = ACTION_LAYER_TAP_KEY(2, KC_SLASH),          // Cursor layer with Slash*
+    [3] = ACTION_LAYER_TAP_KEY(3, KC_SCLN),           // Mousekey layer with Semicolon*
+    [4] = ACTION_LAYER_TAP_KEY(4, KC_SPC),            // Mousekey layer with Space
+    [5] = ACTION_LAYER_MOMENTARY(3),                  // Mousekey layer(IJKL)
+    [6] = ACTION_LAYER_TAP_KEY(MOD_RCTL, KC_ENT),      // RControl with tap Enter
+    [7] = ACTION_MODS_ONESHOT(MOD_LSFT),              // Oneshot Shift
+    [8] = ACTION_MACRO(ALT_TAB),                      // Application switching
+    [9] = ACTION_MODS_KEY(MOD_LALT, KC_LEFT),
+   [10] = ACTION_MODS_KEY(MOD_LALT, KC_RIGHT),
+};
+
+
+/*
+ * Macro definition
+ */
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+    switch (id) {
+        case ALT_TAB:
+            return (record->event.pressed ?
+                    MACRO( D(LALT), D(TAB), END ) :
+                    MACRO( U(TAB), END ));
+    }
+    return MACRO_NONE;
+}
index e678b4efa88c533223f623db4540aa022ae59e93..da6d0ac60c241b7d6e87534af14e5918cc8f461d 100644 (file)
@@ -54,9 +54,9 @@ SRC = atomic.c \
        backlight.c 
 
 ifdef KEYMAP
-    SRC := keymaps/keymap_$(KEYMAP).c $(SRC)
+    SRC := keymaps/$(KEYMAP).c $(SRC)
 else
-    SRC := keymaps/keymap_default.c $(SRC)
+    SRC := keymaps/default.c $(SRC)
 endif
 
 CONFIG_H = config.h
index c8e83cf55a91c441adf6a909554262e2ebd2e8c4..0e42370ba62dd0f7016e699ad6f11077e61d753a 100644 (file)
@@ -16,10 +16,10 @@ Depending on which keymap you would like to use, you will have to compile slight
 To build with the default keymap, simply run `make`.
 
 ### Other Keymaps
-Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create file named `keymap_<name>.c` and see keymap document (you can find in top README.md) and existent keymap files.
+Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create a file in the keymaps folder named `<name>.c` and see keymap document (you can find in top README.md) and existent keymap files.
 
 To build the firmware binary hex file with a keymap just do `make` with `KEYMAP` option like:
 ```
 $ make KEYMAP=[default|jack|<name>]
 ```
-Keymaps follow the format **__keymap\_\<name\>.c__** and are stored in the `keymaps` folder.
+Keymaps follow the format **__\<name\>.c__** and are stored in the `keymaps` folder.
diff --git a/keyboard/atomic/keymaps/abienz.c b/keyboard/atomic/keymaps/abienz.c
new file mode 100644 (file)
index 0000000..589a64d
--- /dev/null
@@ -0,0 +1,36 @@
+#include "atomic.h"
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = { /* Colemak */
+  { KC_ESC,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS, KC_EQL,  KC_BSPC, KC_NO   },
+  { KC_TAB,  CM_Q,    CM_W,    CM_F,    CM_P,    CM_G,    CM_J,    CM_L,    CM_U,    CM_Y,    CM_SCLN, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL  },
+  { KC_BSPC, CM_A,    CM_R,    CM_S,    CM_T,    CM_D,    CM_H,    CM_N,    CM_E,    CM_I,    CM_O,    KC_QUOT, KC_ENT,  KC_NO,   KC_PGUP },
+  { KC_LSFT, CM_Z,    CM_X,    CM_C,    CM_V,    CM_B,    CM_K,    CM_M,    CM_COMM, CM_DOT,  CM_SLSH, KC_RSFT, KC_NO,   KC_UP,   KC_PGDN },
+  { KC_LCTL, KC_LGUI, KC_NO,   KC_LALT, FUNC(1), KC_SPC,  KC_NO,   KC_RALT, FUNC(2), KC_RGUI, KC_NO,   KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT },
+ },
+ [1] = { /* function */
+  { KC_GRV,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_BSPC, KC_NO   },
+  { 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_SLEP, 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_CALC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, KC_MPLY },
+  { KC_TRNS, KC_TRNS, KC_NO,   KC_TRNS, FUNC(1), KC_TRNS, KC_NO,   KC_TRNS, FUNC(2), KC_TRNS, KC_NO,   KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT },
+ }
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_LAYER_MOMENTARY(1),
+    [2] = ACTION_LAYER_MOMENTARY(1),
+
+};
+
+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:
+        return MACRODOWN(TYPE(KC_T), END);
+      break;
+    } 
+    return MACRO_NONE;
+};
+
diff --git a/keyboard/atomic/keymaps/default.c b/keyboard/atomic/keymaps/default.c
new file mode 100644 (file)
index 0000000..f37d9d9
--- /dev/null
@@ -0,0 +1,79 @@
+#include "atomic.h"
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = { /* Qwerty */
+  { KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS, KC_EQL,  KC_BSPC, KC_DEL   },
+// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
+// │        │        │        │        │        │        │        │        │        │        │        │        │        │        │        │
+// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+//                                                                                                                      ┌─ 2u ────────────┐
+//                                                                                                                      │   X             │
+//                                                                                                                      └─────────────────┘
+  { KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL   },
+// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
+// │        │        │        │        │        │        │        │        │        │        │        │        │        │        │        │
+// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+// ┌─ 2u ────────────┐                                                                                                  ┌─ 2u ────────────┐
+// │   X             │                                                                                                  │   X             │
+// └─────────────────┘                                                                                                  └─────────────────┘
+  { KC_ESC,  KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT, KC_ENT,  KC_ENT,  KC_PGUP  },
+// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
+// │        │        │        │        │        │        │        │        │        │        │        │        │        │        │        │
+// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+// ┌─ 2u ────────────┐                                                                                         ┌─ 2u ────────────┐
+// │   X             │                                                                                         │   X             │
+// └─────────────────┘                                                                                         └─────────────────┘
+//                                                                                                                      ┌─ 2u ────────────┐
+//                                                                                                                      │   X             │
+//                                                                                                                      └─────────────────┘
+  { KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM,  KC_DOT,  KC_SLSH, KC_RSFT, KC_RSFT, KC_UP,  KC_PGDN  },
+// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
+// │        │        │        │        │        │        │        │        │        │        │        │        │        │        │        │
+// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+//                                                                                                    ┌─ 2u ────────────┐
+//                                                                                                    │   X             │
+//                                                                                                    └─────────────────┘
+// ┌─ 2u ────────────┐                                                                                         ┌─ 2u ────────────┐
+// │   X             │                                                                                         │   X             │
+// └─────────────────┘                                                                                         └─────────────────┘
+//                                                                                                                      ┌─ 2u ────────────┐
+//                                                                                                                      │   X             │
+//                                                                                                                      └─────────────────┘
+  { BL_STEP, KC_LCTL, KC_LALT, KC_LGUI, KC_LGUI,  KC_SPC,  KC_SPC,  KC_RGUI, KC_RGUI,  KC_RALT, KC_RCTL, BL_STEP, KC_LEFT, KC_DOWN, KC_RGHT  },
+// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
+// │        │        │        │        │        │        │        │        │        │        │        │        │        │        │        │
+// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+// ┌─ 1.25u ──┬ 1.25u ───┬─── 1.25u ┬─── 1.25u ─┬─ 2u ────────────┬─ 1.25u ──┬─ 1.25u ──┬─── 1.25u ┬──── 1.25u ┐
+// │   X      │ X        │        X │      X    │   X             │   X      │ X        │        X │      X    │
+// └──────────┴──────────┴──────────┴───────────┴─────────────────┴──────────┴──────────┴──────────┴───────────┘
+//                                                                ┌─ 2u ────────────┐
+//                                                                │   X             │
+//                                                                └─────────────────┘
+//                                  ┌───────────────────── 6.25u ────────────────────────────┐
+//                                  │                        X                               │
+//                                  └────────────────────────────────────────────────────────┘
+//                       ┌─────────────────────── 6.25u ──────────────────────────┬─ 1.25u ──┬─ 1.25u ──┬─ 1.25u ──┬─── 1.25u ┬── 1.25u ──┐
+//                       │                          X                             │     X    │   X      │ X        │        X │      X    │
+//                       └────────────────────────────────────────────────────────┴──────────┴──────────┴──────────┴──────────┴───────────┘
+ }
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_LAYER_MOMENTARY(2),  // to RAISE
+    [2] = ACTION_LAYER_MOMENTARY(3),  // to LOWER
+
+    [3] = ACTION_DEFAULT_LAYER_SET(0),
+    [4] = ACTION_DEFAULT_LAYER_SET(1),
+
+};
+
+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:
+        return MACRODOWN(TYPE(KC_T), END);
+      break;
+    } 
+    return MACRO_NONE;
+};
diff --git a/keyboard/atomic/keymaps/keymap_abienz.c b/keyboard/atomic/keymaps/keymap_abienz.c
deleted file mode 100644 (file)
index 589a64d..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-#include "atomic.h"
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [0] = { /* Colemak */
-  { KC_ESC,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS, KC_EQL,  KC_BSPC, KC_NO   },
-  { KC_TAB,  CM_Q,    CM_W,    CM_F,    CM_P,    CM_G,    CM_J,    CM_L,    CM_U,    CM_Y,    CM_SCLN, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL  },
-  { KC_BSPC, CM_A,    CM_R,    CM_S,    CM_T,    CM_D,    CM_H,    CM_N,    CM_E,    CM_I,    CM_O,    KC_QUOT, KC_ENT,  KC_NO,   KC_PGUP },
-  { KC_LSFT, CM_Z,    CM_X,    CM_C,    CM_V,    CM_B,    CM_K,    CM_M,    CM_COMM, CM_DOT,  CM_SLSH, KC_RSFT, KC_NO,   KC_UP,   KC_PGDN },
-  { KC_LCTL, KC_LGUI, KC_NO,   KC_LALT, FUNC(1), KC_SPC,  KC_NO,   KC_RALT, FUNC(2), KC_RGUI, KC_NO,   KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT },
- },
- [1] = { /* function */
-  { KC_GRV,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_BSPC, KC_NO   },
-  { 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_SLEP, 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_CALC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, KC_MPLY },
-  { KC_TRNS, KC_TRNS, KC_NO,   KC_TRNS, FUNC(1), KC_TRNS, KC_NO,   KC_TRNS, FUNC(2), KC_TRNS, KC_NO,   KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT },
- }
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_LAYER_MOMENTARY(1),
-    [2] = ACTION_LAYER_MOMENTARY(1),
-
-};
-
-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:
-        return MACRODOWN(TYPE(KC_T), END);
-      break;
-    } 
-    return MACRO_NONE;
-};
-
diff --git a/keyboard/atomic/keymaps/keymap_default.c b/keyboard/atomic/keymaps/keymap_default.c
deleted file mode 100644 (file)
index f37d9d9..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-#include "atomic.h"
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [0] = { /* Qwerty */
-  { KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS, KC_EQL,  KC_BSPC, KC_DEL   },
-// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
-// │        │        │        │        │        │        │        │        │        │        │        │        │        │        │        │
-// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
-//                                                                                                                      ┌─ 2u ────────────┐
-//                                                                                                                      │   X             │
-//                                                                                                                      └─────────────────┘
-  { KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL   },
-// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
-// │        │        │        │        │        │        │        │        │        │        │        │        │        │        │        │
-// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
-// ┌─ 2u ────────────┐                                                                                                  ┌─ 2u ────────────┐
-// │   X             │                                                                                                  │   X             │
-// └─────────────────┘                                                                                                  └─────────────────┘
-  { KC_ESC,  KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT, KC_ENT,  KC_ENT,  KC_PGUP  },
-// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
-// │        │        │        │        │        │        │        │        │        │        │        │        │        │        │        │
-// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
-// ┌─ 2u ────────────┐                                                                                         ┌─ 2u ────────────┐
-// │   X             │                                                                                         │   X             │
-// └─────────────────┘                                                                                         └─────────────────┘
-//                                                                                                                      ┌─ 2u ────────────┐
-//                                                                                                                      │   X             │
-//                                                                                                                      └─────────────────┘
-  { KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM,  KC_DOT,  KC_SLSH, KC_RSFT, KC_RSFT, KC_UP,  KC_PGDN  },
-// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
-// │        │        │        │        │        │        │        │        │        │        │        │        │        │        │        │
-// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
-//                                                                                                    ┌─ 2u ────────────┐
-//                                                                                                    │   X             │
-//                                                                                                    └─────────────────┘
-// ┌─ 2u ────────────┐                                                                                         ┌─ 2u ────────────┐
-// │   X             │                                                                                         │   X             │
-// └─────────────────┘                                                                                         └─────────────────┘
-//                                                                                                                      ┌─ 2u ────────────┐
-//                                                                                                                      │   X             │
-//                                                                                                                      └─────────────────┘
-  { BL_STEP, KC_LCTL, KC_LALT, KC_LGUI, KC_LGUI,  KC_SPC,  KC_SPC,  KC_RGUI, KC_RGUI,  KC_RALT, KC_RCTL, BL_STEP, KC_LEFT, KC_DOWN, KC_RGHT  },
-// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
-// │        │        │        │        │        │        │        │        │        │        │        │        │        │        │        │
-// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
-// ┌─ 1.25u ──┬ 1.25u ───┬─── 1.25u ┬─── 1.25u ─┬─ 2u ────────────┬─ 1.25u ──┬─ 1.25u ──┬─── 1.25u ┬──── 1.25u ┐
-// │   X      │ X        │        X │      X    │   X             │   X      │ X        │        X │      X    │
-// └──────────┴──────────┴──────────┴───────────┴─────────────────┴──────────┴──────────┴──────────┴───────────┘
-//                                                                ┌─ 2u ────────────┐
-//                                                                │   X             │
-//                                                                └─────────────────┘
-//                                  ┌───────────────────── 6.25u ────────────────────────────┐
-//                                  │                        X                               │
-//                                  └────────────────────────────────────────────────────────┘
-//                       ┌─────────────────────── 6.25u ──────────────────────────┬─ 1.25u ──┬─ 1.25u ──┬─ 1.25u ──┬─── 1.25u ┬── 1.25u ──┐
-//                       │                          X                             │     X    │   X      │ X        │        X │      X    │
-//                       └────────────────────────────────────────────────────────┴──────────┴──────────┴──────────┴──────────┴───────────┘
- }
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_LAYER_MOMENTARY(2),  // to RAISE
-    [2] = ACTION_LAYER_MOMENTARY(3),  // to LOWER
-
-    [3] = ACTION_DEFAULT_LAYER_SET(0),
-    [4] = ACTION_DEFAULT_LAYER_SET(1),
-
-};
-
-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:
-        return MACRODOWN(TYPE(KC_T), END);
-      break;
-    } 
-    return MACRO_NONE;
-};
diff --git a/keyboard/atomic/keymaps/keymap_michelle.c b/keyboard/atomic/keymaps/keymap_michelle.c
deleted file mode 100644 (file)
index 2364c46..0000000
+++ /dev/null
@@ -1,183 +0,0 @@
-#include "atomic.h"
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [0] = { /* Dvorak */
-  { KC_ESC, KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_LBRC, KC_RBRC,  KC_BSPC, KC_NO   },
-// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
-// │        │        │        │        │        │        │        │        │        │        │        │        │        │        │        │
-// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
-//                                                                                                                      ┌─ 2u ────────────┐
-//                                                                                                                      │   X             │
-//                                                                                                                      └─────────────────┘
-  { KC_TAB, KC_QUOT, KC_COMM, KC_DOT,  KC_P,    KC_Y,    KC_F,    KC_G,    KC_C,    KC_R,    KC_L,    KC_SLSH, KC_EQL, KC_INS, KC_DEL   },
-// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
-// │        │        │        │        │        │        │        │        │        │        │        │        │        │        │        │
-// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
-// ┌─ 2u ────────────┐                                                                                                  ┌─ 2u ────────────┐
-// │   X             │                                                                                                  │   X             │
-// └─────────────────┘                                                                                                  └─────────────────┘
-  { KC_CAPS, KC_A,    KC_O,    KC_E,    KC_U,    KC_I,    KC_D,    KC_H,    KC_T,    KC_N,    KC_S,   KC_MINS,  KC_ENT,  KC_NO,  KC_PGUP  },
-// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
-// │        │        │        │        │        │        │        │        │        │        │        │        │        │        │        │
-// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
-// ┌─ 2u ────────────┐                                                                                         ┌─ 2u ────────────┐
-// │   X             │                                                                                         │   X             │
-// └─────────────────┘                                                                                         └─────────────────┘
-//                                                                                                                      ┌─ 2u ────────────┐
-//                                                                                                                      │   X             │
-//                                                                                                                      └─────────────────┘
-  { KC_LSFT, KC_SCLN,  KC_Q,   KC_J,    KC_K,   KC_X,    KC_B,    KC_M,    KC_W,    KC_V,     KC_Z,    KC_RSFT, KC_NO, KC_UP,  KC_PGDN  },
-// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
-// │        │        │        │        │        │        │        │        │        │        │        │        │        │        │        │
-// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
-//                                                                                                    ┌─ 2u ────────────┐
-//                                                                                                    │   X             │
-//                                                                                                    └─────────────────┘
-// ┌─ 2u ────────────┐                                                                                         ┌─ 2u ────────────┐
-// │   X             │                                                                                         │   X             │
-// └─────────────────┘                                                                                         └─────────────────┘
-//                                                                                                                      ┌─ 2u ────────────┐
-//                                                                                                                      │   X             │
-//                                                                                                                      └─────────────────┘
-  { KC_LCTL, MO(1),   KC_NO,  KC_LALT,  KC_NO,   KC_NO,  KC_SPC,   KC_NO,   KC_NO,   KC_NO,   KC_LGUI, MO(2),  KC_LEFT, KC_DOWN, KC_RGHT  },
-// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
-// │        │        │        │        │        │        │        │        │        │        │        │        │        │        │        │
-// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
-// ┌─ 1.25u ──┬ 1.25u ───┬─── 1.25u ┬─── 1.25u ─┬─ 2u ────────────┬─ 1.25u ──┬─ 1.25u ──┬─── 1.25u ┬──── 1.25u ┐
-// │   X      │ X        │        X │      X    │   X             │   X      │ X        │        X │      X    │
-// └──────────┴──────────┴──────────┴───────────┴─────────────────┴──────────┴──────────┴──────────┴───────────┘
-//                                                                ┌─ 2u ────────────┐
-//                                                                │   X             │
-//                                                                └─────────────────┘
-//                                  ┌───────────────────── 6.25u ────────────────────────────┐
-//                                  │                        X                               │
-//                                  └────────────────────────────────────────────────────────┘
-//                       ┌─────────────────────── 6.25u ──────────────────────────┬─ 1.25u ──┬─ 1.25u ──┬─ 1.25u ──┬─── 1.25u ┬── 1.25u ──┐
-//                       │                          X                             │     X    │   X      │ X        │        X │      X    │
-//                       └────────────────────────────────────────────────────────┴──────────┴──────────┴──────────┴──────────┴───────────┘
- },
- [1] = { /* Qwerty + F keys */
-  { KC_ESC, KC_F1,   KC_F2,    KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_BSPC, KC_NO   },
-// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
-// │        │        │        │        │        │        │        │        │        │        │        │        │        │        │        │
-// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
-//                                                                                                                      ┌─ 2u ────────────┐
-//                                                                                                                      │   X             │
-//                                                                                                                      └─────────────────┘
-  { KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_LBRC, KC_RBRC, KC_INS, KC_DEL   },
-// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
-// │        │        │        │        │        │        │        │        │        │        │        │        │        │        │        │
-// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
-// ┌─ 2u ────────────┐                                                                                                  ┌─ 2u ────────────┐
-// │   X             │                                                                                                  │   X             │
-// └─────────────────┘                                                                                                  └─────────────────┘
-  { KC_ESC,  KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT, KC_ENT,  KC_NO,  KC_PGUP  },
-// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
-// │        │        │        │        │        │        │        │        │        │        │        │        │        │        │        │
-// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
-// ┌─ 2u ────────────┐                                                                                         ┌─ 2u ────────────┐
-// │   X             │                                                                                         │   X             │
-// └─────────────────┘                                                                                         └─────────────────┘
-//                                                                                                                      ┌─ 2u ────────────┐
-//                                                                                                                      │   X             │
-//                                                                                                                      └─────────────────┘
-  { KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM,  KC_DOT,  KC_SLSH, KC_RSFT, KC_NO,  KC_UP,  KC_PGDN  },
-// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
-// │        │        │        │        │        │        │        │        │        │        │        │        │        │        │        │
-// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
-//                                                                                                    ┌─ 2u ────────────┐
-//                                                                                                    │   X             │
-//                                                                                                    └─────────────────┘
-// ┌─ 2u ────────────┐                                                                                         ┌─ 2u ────────────┐
-// │   X             │                                                                                         │   X             │
-// └─────────────────┘                                                                                         └─────────────────┘
-//                                                                                                                      ┌─ 2u ────────────┐
-//                                                                                                                      │   X             │
-//                                                                                                                      └─────────────────┘
-  { KC_LCTL, KC_TRNS, KC_NO,   KC_LALT,  KC_NO,   KC_NO,  KC_SPC,   KC_NO,   KC_NO,   KC_NO,   KC_LGUI, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT  },
-// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
-// │        │        │        │        │        │        │        │        │        │        │        │        │        │        │        │
-// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
-// ┌─ 1.25u ──┬ 1.25u ───┬─── 1.25u ┬─── 1.25u ─┬─ 2u ────────────┬─ 1.25u ──┬─ 1.25u ──┬─── 1.25u ┬──── 1.25u ┐
-// │   X      │ X        │        X │      X    │   X             │   X      │ X        │        X │      X    │
-// └──────────┴──────────┴──────────┴───────────┴─────────────────┴──────────┴──────────┴──────────┴───────────┘
-//                                                                ┌─ 2u ────────────┐
-//                                                                │   X             │
-//                                                                └─────────────────┘
-//                                  ┌───────────────────── 6.25u ────────────────────────────┐
-//                                  │                        X                               │
-//                                  └────────────────────────────────────────────────────────┘
-//                       ┌─────────────────────── 6.25u ──────────────────────────┬─ 1.25u ──┬─ 1.25u ──┬─ 1.25u ──┬─── 1.25u ┬── 1.25u ──┐
-//                       │                          X                             │     X    │   X      │ X        │        X │      X    │
-//                       └────────────────────────────────────────────────────────┴──────────┴──────────┴──────────┴──────────┴───────────┘
- },
- [2] = { /* Numpad + qwerty shortcut keys */
-  { KC_ESC, KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_P7,    KC_P8,   KC_P9,   KC_0,    KC_LBRC, KC_RBRC,  KC_BSPC, KC_NO   },
-// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
-// │        │        │        │        │        │        │        │        │        │        │        │        │        │        │        │
-// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
-//                                                                                                                      ┌─ 2u ────────────┐
-//                                                                                                                      │   X             │
-//                                                                                                                      └─────────────────┘
-  { KC_TAB, KC_QUOT, KC_COMM, KC_DOT,  KC_P,    KC_Y,    KC_F,    KC_P4,    KC_P5,   KC_P6,   KC_L,    KC_SLSH, KC_EQL, KC_INS, KC_DEL   },
-// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
-// │        │        │        │        │        │        │        │        │        │        │        │        │        │        │        │
-// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
-// ┌─ 2u ────────────┐                                                                                                  ┌─ 2u ────────────┐
-// │   X             │                                                                                                  │   X             │
-// └─────────────────┘                                                                                                  └─────────────────┘
-  { KC_CAPS, KC_A,    KC_O,    KC_E,    KC_U,    KC_I,    KC_D,    KC_P1,   KC_P2,   KC_P3,    KC_S,   KC_MINS,  KC_ENT,  KC_NO,  KC_PGUP  },
-// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
-// │        │        │        │        │        │        │        │        │        │        │        │        │        │        │        │
-// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
-// ┌─ 2u ────────────┐                                                                                         ┌─ 2u ────────────┐
-// │   X             │                                                                                         │   X             │
-// └─────────────────┘                                                                                         └─────────────────┘
-//                                                                                                                      ┌─ 2u ────────────┐
-//                                                                                                                      │   X             │
-//                                                                                                                      └─────────────────┘
-  { KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,   KC_X,    KC_B,     KC_P0,   KC_P0,   KC_PENT, KC_Z,    KC_RSFT, KC_NO, KC_UP,  KC_PGDN  },
-// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
-// │        │        │        │        │        │        │        │        │        │        │        │        │        │        │        │
-// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
-//                                                                                                    ┌─ 2u ────────────┐
-//                                                                                                    │   X             │
-//                                                                                                    └─────────────────┘
-// ┌─ 2u ────────────┐                                                                                         ┌─ 2u ────────────┐
-// │   X             │                                                                                         │   X             │
-// └─────────────────┘                                                                                         └─────────────────┘
-//                                                                                                                      ┌─ 2u ────────────┐
-//                                                                                                                      │   X             │
-//                                                                                                                      └─────────────────┘
-  { KC_LCTL, KC_TRNS, KC_NO,  KC_LALT,  KC_NO,   KC_NO,  KC_SPC,   KC_NO,   KC_NO,   KC_NO,   KC_LGUI, KC_TRNS,  KC_LEFT, KC_DOWN, KC_RGHT  },
-// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
-// │        │        │        │        │        │        │        │        │        │        │        │        │        │        │        │
-// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
-// ┌─ 1.25u ──┬ 1.25u ───┬─── 1.25u ┬─── 1.25u ─┬─ 2u ────────────┬─ 1.25u ──┬─ 1.25u ──┬─── 1.25u ┬──── 1.25u ┐
-// │   X      │ X        │        X │      X    │   X             │   X      │ X        │        X │      X    │
-// └──────────┴──────────┴──────────┴───────────┴─────────────────┴──────────┴──────────┴──────────┴───────────┘
-//                                                                ┌─ 2u ────────────┐
-//                                                                │   X             │
-//                                                                └─────────────────┘
-//                                  ┌───────────────────── 6.25u ────────────────────────────┐
-//                                  │                        X                               │
-//                                  └────────────────────────────────────────────────────────┘
-//                       ┌─────────────────────── 6.25u ──────────────────────────┬─ 1.25u ──┬─ 1.25u ──┬─ 1.25u ──┬─── 1.25u ┬── 1.25u ──┐
-//                       │                          X                             │     X    │   X      │ X        │        X │      X    │
-//                       └────────────────────────────────────────────────────────┴──────────┴──────────┴──────────┴──────────┴───────────┘
- },
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-};
-
-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:
-        return MACRODOWN(TYPE(KC_T), END);
-      break;
-    } 
-    return MACRO_NONE;
-};
diff --git a/keyboard/atomic/keymaps/michelle.c b/keyboard/atomic/keymaps/michelle.c
new file mode 100644 (file)
index 0000000..2364c46
--- /dev/null
@@ -0,0 +1,183 @@
+#include "atomic.h"
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = { /* Dvorak */
+  { KC_ESC, KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_LBRC, KC_RBRC,  KC_BSPC, KC_NO   },
+// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
+// │        │        │        │        │        │        │        │        │        │        │        │        │        │        │        │
+// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+//                                                                                                                      ┌─ 2u ────────────┐
+//                                                                                                                      │   X             │
+//                                                                                                                      └─────────────────┘
+  { KC_TAB, KC_QUOT, KC_COMM, KC_DOT,  KC_P,    KC_Y,    KC_F,    KC_G,    KC_C,    KC_R,    KC_L,    KC_SLSH, KC_EQL, KC_INS, KC_DEL   },
+// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
+// │        │        │        │        │        │        │        │        │        │        │        │        │        │        │        │
+// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+// ┌─ 2u ────────────┐                                                                                                  ┌─ 2u ────────────┐
+// │   X             │                                                                                                  │   X             │
+// └─────────────────┘                                                                                                  └─────────────────┘
+  { KC_CAPS, KC_A,    KC_O,    KC_E,    KC_U,    KC_I,    KC_D,    KC_H,    KC_T,    KC_N,    KC_S,   KC_MINS,  KC_ENT,  KC_NO,  KC_PGUP  },
+// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
+// │        │        │        │        │        │        │        │        │        │        │        │        │        │        │        │
+// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+// ┌─ 2u ────────────┐                                                                                         ┌─ 2u ────────────┐
+// │   X             │                                                                                         │   X             │
+// └─────────────────┘                                                                                         └─────────────────┘
+//                                                                                                                      ┌─ 2u ────────────┐
+//                                                                                                                      │   X             │
+//                                                                                                                      └─────────────────┘
+  { KC_LSFT, KC_SCLN,  KC_Q,   KC_J,    KC_K,   KC_X,    KC_B,    KC_M,    KC_W,    KC_V,     KC_Z,    KC_RSFT, KC_NO, KC_UP,  KC_PGDN  },
+// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
+// │        │        │        │        │        │        │        │        │        │        │        │        │        │        │        │
+// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+//                                                                                                    ┌─ 2u ────────────┐
+//                                                                                                    │   X             │
+//                                                                                                    └─────────────────┘
+// ┌─ 2u ────────────┐                                                                                         ┌─ 2u ────────────┐
+// │   X             │                                                                                         │   X             │
+// └─────────────────┘                                                                                         └─────────────────┘
+//                                                                                                                      ┌─ 2u ────────────┐
+//                                                                                                                      │   X             │
+//                                                                                                                      └─────────────────┘
+  { KC_LCTL, MO(1),   KC_NO,  KC_LALT,  KC_NO,   KC_NO,  KC_SPC,   KC_NO,   KC_NO,   KC_NO,   KC_LGUI, MO(2),  KC_LEFT, KC_DOWN, KC_RGHT  },
+// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
+// │        │        │        │        │        │        │        │        │        │        │        │        │        │        │        │
+// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+// ┌─ 1.25u ──┬ 1.25u ───┬─── 1.25u ┬─── 1.25u ─┬─ 2u ────────────┬─ 1.25u ──┬─ 1.25u ──┬─── 1.25u ┬──── 1.25u ┐
+// │   X      │ X        │        X │      X    │   X             │   X      │ X        │        X │      X    │
+// └──────────┴──────────┴──────────┴───────────┴─────────────────┴──────────┴──────────┴──────────┴───────────┘
+//                                                                ┌─ 2u ────────────┐
+//                                                                │   X             │
+//                                                                └─────────────────┘
+//                                  ┌───────────────────── 6.25u ────────────────────────────┐
+//                                  │                        X                               │
+//                                  └────────────────────────────────────────────────────────┘
+//                       ┌─────────────────────── 6.25u ──────────────────────────┬─ 1.25u ──┬─ 1.25u ──┬─ 1.25u ──┬─── 1.25u ┬── 1.25u ──┐
+//                       │                          X                             │     X    │   X      │ X        │        X │      X    │
+//                       └────────────────────────────────────────────────────────┴──────────┴──────────┴──────────┴──────────┴───────────┘
+ },
+ [1] = { /* Qwerty + F keys */
+  { KC_ESC, KC_F1,   KC_F2,    KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_BSPC, KC_NO   },
+// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
+// │        │        │        │        │        │        │        │        │        │        │        │        │        │        │        │
+// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+//                                                                                                                      ┌─ 2u ────────────┐
+//                                                                                                                      │   X             │
+//                                                                                                                      └─────────────────┘
+  { KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_LBRC, KC_RBRC, KC_INS, KC_DEL   },
+// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
+// │        │        │        │        │        │        │        │        │        │        │        │        │        │        │        │
+// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+// ┌─ 2u ────────────┐                                                                                                  ┌─ 2u ────────────┐
+// │   X             │                                                                                                  │   X             │
+// └─────────────────┘                                                                                                  └─────────────────┘
+  { KC_ESC,  KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT, KC_ENT,  KC_NO,  KC_PGUP  },
+// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
+// │        │        │        │        │        │        │        │        │        │        │        │        │        │        │        │
+// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+// ┌─ 2u ────────────┐                                                                                         ┌─ 2u ────────────┐
+// │   X             │                                                                                         │   X             │
+// └─────────────────┘                                                                                         └─────────────────┘
+//                                                                                                                      ┌─ 2u ────────────┐
+//                                                                                                                      │   X             │
+//                                                                                                                      └─────────────────┘
+  { KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM,  KC_DOT,  KC_SLSH, KC_RSFT, KC_NO,  KC_UP,  KC_PGDN  },
+// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
+// │        │        │        │        │        │        │        │        │        │        │        │        │        │        │        │
+// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+//                                                                                                    ┌─ 2u ────────────┐
+//                                                                                                    │   X             │
+//                                                                                                    └─────────────────┘
+// ┌─ 2u ────────────┐                                                                                         ┌─ 2u ────────────┐
+// │   X             │                                                                                         │   X             │
+// └─────────────────┘                                                                                         └─────────────────┘
+//                                                                                                                      ┌─ 2u ────────────┐
+//                                                                                                                      │   X             │
+//                                                                                                                      └─────────────────┘
+  { KC_LCTL, KC_TRNS, KC_NO,   KC_LALT,  KC_NO,   KC_NO,  KC_SPC,   KC_NO,   KC_NO,   KC_NO,   KC_LGUI, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT  },
+// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
+// │        │        │        │        │        │        │        │        │        │        │        │        │        │        │        │
+// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+// ┌─ 1.25u ──┬ 1.25u ───┬─── 1.25u ┬─── 1.25u ─┬─ 2u ────────────┬─ 1.25u ──┬─ 1.25u ──┬─── 1.25u ┬──── 1.25u ┐
+// │   X      │ X        │        X │      X    │   X             │   X      │ X        │        X │      X    │
+// └──────────┴──────────┴──────────┴───────────┴─────────────────┴──────────┴──────────┴──────────┴───────────┘
+//                                                                ┌─ 2u ────────────┐
+//                                                                │   X             │
+//                                                                └─────────────────┘
+//                                  ┌───────────────────── 6.25u ────────────────────────────┐
+//                                  │                        X                               │
+//                                  └────────────────────────────────────────────────────────┘
+//                       ┌─────────────────────── 6.25u ──────────────────────────┬─ 1.25u ──┬─ 1.25u ──┬─ 1.25u ──┬─── 1.25u ┬── 1.25u ──┐
+//                       │                          X                             │     X    │   X      │ X        │        X │      X    │
+//                       └────────────────────────────────────────────────────────┴──────────┴──────────┴──────────┴──────────┴───────────┘
+ },
+ [2] = { /* Numpad + qwerty shortcut keys */
+  { KC_ESC, KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_P7,    KC_P8,   KC_P9,   KC_0,    KC_LBRC, KC_RBRC,  KC_BSPC, KC_NO   },
+// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
+// │        │        │        │        │        │        │        │        │        │        │        │        │        │        │        │
+// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+//                                                                                                                      ┌─ 2u ────────────┐
+//                                                                                                                      │   X             │
+//                                                                                                                      └─────────────────┘
+  { KC_TAB, KC_QUOT, KC_COMM, KC_DOT,  KC_P,    KC_Y,    KC_F,    KC_P4,    KC_P5,   KC_P6,   KC_L,    KC_SLSH, KC_EQL, KC_INS, KC_DEL   },
+// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
+// │        │        │        │        │        │        │        │        │        │        │        │        │        │        │        │
+// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+// ┌─ 2u ────────────┐                                                                                                  ┌─ 2u ────────────┐
+// │   X             │                                                                                                  │   X             │
+// └─────────────────┘                                                                                                  └─────────────────┘
+  { KC_CAPS, KC_A,    KC_O,    KC_E,    KC_U,    KC_I,    KC_D,    KC_P1,   KC_P2,   KC_P3,    KC_S,   KC_MINS,  KC_ENT,  KC_NO,  KC_PGUP  },
+// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
+// │        │        │        │        │        │        │        │        │        │        │        │        │        │        │        │
+// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+// ┌─ 2u ────────────┐                                                                                         ┌─ 2u ────────────┐
+// │   X             │                                                                                         │   X             │
+// └─────────────────┘                                                                                         └─────────────────┘
+//                                                                                                                      ┌─ 2u ────────────┐
+//                                                                                                                      │   X             │
+//                                                                                                                      └─────────────────┘
+  { KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,   KC_X,    KC_B,     KC_P0,   KC_P0,   KC_PENT, KC_Z,    KC_RSFT, KC_NO, KC_UP,  KC_PGDN  },
+// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
+// │        │        │        │        │        │        │        │        │        │        │        │        │        │        │        │
+// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+//                                                                                                    ┌─ 2u ────────────┐
+//                                                                                                    │   X             │
+//                                                                                                    └─────────────────┘
+// ┌─ 2u ────────────┐                                                                                         ┌─ 2u ────────────┐
+// │   X             │                                                                                         │   X             │
+// └─────────────────┘                                                                                         └─────────────────┘
+//                                                                                                                      ┌─ 2u ────────────┐
+//                                                                                                                      │   X             │
+//                                                                                                                      └─────────────────┘
+  { KC_LCTL, KC_TRNS, KC_NO,  KC_LALT,  KC_NO,   KC_NO,  KC_SPC,   KC_NO,   KC_NO,   KC_NO,   KC_LGUI, KC_TRNS,  KC_LEFT, KC_DOWN, KC_RGHT  },
+// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
+// │        │        │        │        │        │        │        │        │        │        │        │        │        │        │        │
+// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+// ┌─ 1.25u ──┬ 1.25u ───┬─── 1.25u ┬─── 1.25u ─┬─ 2u ────────────┬─ 1.25u ──┬─ 1.25u ──┬─── 1.25u ┬──── 1.25u ┐
+// │   X      │ X        │        X │      X    │   X             │   X      │ X        │        X │      X    │
+// └──────────┴──────────┴──────────┴───────────┴─────────────────┴──────────┴──────────┴──────────┴───────────┘
+//                                                                ┌─ 2u ────────────┐
+//                                                                │   X             │
+//                                                                └─────────────────┘
+//                                  ┌───────────────────── 6.25u ────────────────────────────┐
+//                                  │                        X                               │
+//                                  └────────────────────────────────────────────────────────┘
+//                       ┌─────────────────────── 6.25u ──────────────────────────┬─ 1.25u ──┬─ 1.25u ──┬─ 1.25u ──┬─── 1.25u ┬── 1.25u ──┐
+//                       │                          X                             │     X    │   X      │ X        │        X │      X    │
+//                       └────────────────────────────────────────────────────────┴──────────┴──────────┴──────────┴──────────┴───────────┘
+ },
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+};
+
+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:
+        return MACRODOWN(TYPE(KC_T), END);
+      break;
+    } 
+    return MACRO_NONE;
+};
index 2e542d62eddf93b7901606aed42968e13feb8d3f..a6fddd70d2aaf4344c0a98c64432928112de2b66 100644 (file)
@@ -53,9 +53,9 @@ TARGET_DIR = .
 SRC = atreus.c
 
 ifdef KEYMAP
-    SRC := keymaps/keymap_$(KEYMAP).c $(SRC)
+    SRC := keymaps/$(KEYMAP).c $(SRC)
 else
-    SRC := keymaps/keymap_default.c $(SRC)
+    SRC := keymaps/default.c $(SRC)
 endif
 
 ifdef TEENSY2
index 4db7ac1203ba0835edd7820304b9c6a353f87530..aacf2841f4a7948cd5fdcc1dc77adfc4eae2eb28 100644 (file)
@@ -177,10 +177,10 @@ Depending on which keymap you would like to use, you will have to compile slight
 To build with the default keymap, simply run `make`.
 
 ### Other Keymaps
-Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create file named `keymap_<name>.c` and see keymap document (you can find in top README.md) and existent keymap files.
+Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create file named `<name>.c` and see keymap document (you can find in top README.md) and existent keymap files.
 
 To build the firmware binary hex file with a keymap just do `make` with `KEYMAP` option like:
 ```
 $ make KEYMAP=[default|jack|<name>]
 ```
-Keymaps follow the format **__keymap\_\<name\>.c__** and are stored in the `keymaps` folder.
+Keymaps follow the format **__\<name\>.c__** and are stored in the `keymaps` folder.
diff --git a/keyboard/atreus/keymaps/default.c b/keyboard/atreus/keymaps/default.c
new file mode 100644 (file)
index 0000000..1c4280f
--- /dev/null
@@ -0,0 +1,51 @@
+// this is the style you want to emulate.
+// This is the canonical layout file for the Quantum project. If you want to add another keyboard,
+
+#include "atreus.h"
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+#define _QW 0
+#define _RS 1
+#define _LW 2
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[_QW] = { /* Qwerty */
+  {KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,   KC_TRNS,  KC_Y,    KC_U,    KC_I,    KC_O,    KC_P    },
+  {KC_A,    KC_S,    KC_D,    KC_F,    KC_G,   KC_TRNS,  KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN },
+  {KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,   KC_LALT,  KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH },
+  {KC_ESC, KC_TAB, KC_LGUI,  KC_LSFT, KC_BSPC,  KC_LCTL, KC_SPC,  MO(_RS), KC_MINS, KC_QUOT, KC_ENT  }
+},
+[_RS] = { /* [> RAISE <] */
+  {KC_EXLM, KC_AT,   KC_LCBR, KC_RCBR, KC_PIPE, KC_TRNS, KC_PGUP, KC_7,    KC_8,   KC_9, KC_ASTR},
+  {KC_HASH, KC_DLR,  KC_LPRN, KC_RPRN, KC_GRV,  KC_TRNS, KC_PGDN, KC_4,    KC_5,   KC_6, KC_PLUS},
+  {KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, KC_LALT, KC_AMPR, KC_1,    KC_2,   KC_3, KC_BSLS},
+  {TG(_LW), KC_INS,  KC_LGUI, KC_LSFT, KC_BSPC, KC_LCTL, KC_SPC,  KC_TRNS, KC_DOT, KC_0, KC_EQL}
+},
+[_LW] = { /* [> LOWER <] */
+  {KC_INS,  KC_HOME, KC_UP,   KC_END,  KC_PGUP, KC_TRNS, KC_UP,   KC_F7,   KC_F8,   KC_F9,   KC_F10},
+  {KC_DELT, KC_LEFT, KC_DOWN, KC_RGHT, KC_DOWN, KC_TRNS, KC_DOWN, KC_F4,   KC_F5,   KC_F6,   KC_F11},
+  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LALT, KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F12},
+  {KC_TRNS, KC_TRNS, KC_LGUI, KC_LSFT, KC_BSPC, KC_LCTL, KC_SPC,  DF(_QW), KC_TRNS, KC_TRNS, RESET}
+}};
+
+const uint16_t PROGMEM fn_actions[] = {
+
+};
+
+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;
+};
diff --git a/keyboard/atreus/keymaps/gerb.c b/keyboard/atreus/keymaps/gerb.c
new file mode 100644 (file)
index 0000000..1ba3942
--- /dev/null
@@ -0,0 +1,66 @@
+// This is the personal keymap of Chris Gerber (@gerbercj). I haven't worked out the kinks
+// with the Colemak and Dvorak support yet, but everything else works nicely.
+
+#include "atreus.h"
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+#define _QW 0
+#define _CM 1
+#define _DV 2
+#define _L1 3
+#define _L2 4
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+  [_QW] = { /* Qwerty */
+    {KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_NO,   KC_Y,    KC_U,    KC_I,    KC_O,    KC_P   },
+    {KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_NO,   KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN},
+    {KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_LALT, KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH},
+    {KC_ESC,  KC_TAB,  KC_LGUI, KC_LSFT, KC_BSPC, KC_RCTL, KC_SPC,  MO(_L1), KC_MINS, KC_QUOT, KC_ENT }
+  },
+  [_CM] = { /* Colemak */
+    {KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_NO,   KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN},
+    {KC_A,    KC_R,    KC_S,    KC_T,    KC_D,    KC_NO,   KC_H,    KC_N,    KC_E,    KC_I,    KC_O   },
+    {KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_LALT, KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH},
+    {KC_ESC,  KC_TAB,  KC_LGUI, KC_LSFT, KC_BSPC, KC_RCTL, KC_SPC,  MO(_L1), KC_MINS, KC_QUOT, KC_ENT }
+  },
+  [_DV] = { /* Dvorak */
+    {KC_QUOT, KC_COMM, KC_DOT,  KC_P,    KC_Y,    KC_NO,   KC_F,    KC_G,    KC_C,    KC_R,    KC_L   },
+    {KC_A,    KC_O,    KC_E,    KC_U,    KC_I,    KC_NO,   KC_D,    KC_H,    KC_T,    KC_N,    KC_S   },
+    {KC_SCLN, KC_Q,    KC_J,    KC_K,    KC_X,    KC_LALT, KC_B,    KC_M,    KC_W,    KC_V,    KC_Z   },
+    {KC_ESC,  KC_TAB,  KC_LGUI, KC_LSFT, KC_BSPC, KC_RCTL, KC_SPC,  MO(_L1), KC_MINS, KC_SLSH, KC_ENT }
+  },
+  [_L1] = { /* LAYER 1 */
+    {KC_INS,  KC_HOME, KC_UP,   KC_END,  KC_PGUP, KC_NO,   KC_VOLU, KC_7,    KC_8,    KC_9,    KC_LBRC},
+    {KC_DEL,  KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_NO,   KC_VOLD, KC_4,    KC_5,    KC_6,    KC_RBRC},
+    {KC_GRV,  KC_MPRV, KC_MPLY, KC_MNXT, KC_MINS, KC_LALT, KC_MUTE, KC_1,    KC_2,    KC_3,    KC_BSLS},
+    {TG(_L2), KC_APP,  KC_LGUI, KC_LSFT, KC_BSPC, KC_RCTL, KC_SPC,  KC_TRNS, KC_DOT,  KC_0,    KC_EQL }
+  },
+  [_L2] = { /* LAYER 2 */
+    {KC_TRNS, KC_WH_L, KC_MS_U, KC_WH_R, KC_WH_U, KC_NO,   DF(_QW), KC_F7,   KC_F8,   KC_F9,   KC_F10 },
+    {KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, KC_NO,   DF(_CM), KC_F6,   KC_F5,   KC_F6,   KC_F11 },
+    {KC_BTN4, KC_BTN1, KC_BTN2, KC_BTN3, KC_BTN4, KC_LALT, DF(_DV), KC_F1,   KC_F2,   KC_F3,   KC_F12 },
+    {KC_TRNS, KC_TRNS, KC_LGUI, KC_LSFT, KC_BSPC, KC_RCTL, KC_SPC,  KC_TRNS, KC_TRNS, KC_TRNS, RESET  }
+  }
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+
+};
+
+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;
+};
diff --git a/keyboard/atreus/keymaps/keymap_default.c b/keyboard/atreus/keymaps/keymap_default.c
deleted file mode 100644 (file)
index 1c4280f..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-// this is the style you want to emulate.
-// This is the canonical layout file for the Quantum project. If you want to add another keyboard,
-
-#include "atreus.h"
-
-// Each layer gets a name for readability, which is then used in the keymap matrix below.
-// The underscores don't mean anything - you can have a layer called STUFF or any other name.
-// Layer names don't all need to be of the same length, obviously, and you can also skip them
-// entirely and just use numbers.
-#define _QW 0
-#define _RS 1
-#define _LW 2
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-[_QW] = { /* Qwerty */
-  {KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,   KC_TRNS,  KC_Y,    KC_U,    KC_I,    KC_O,    KC_P    },
-  {KC_A,    KC_S,    KC_D,    KC_F,    KC_G,   KC_TRNS,  KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN },
-  {KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,   KC_LALT,  KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH },
-  {KC_ESC, KC_TAB, KC_LGUI,  KC_LSFT, KC_BSPC,  KC_LCTL, KC_SPC,  MO(_RS), KC_MINS, KC_QUOT, KC_ENT  }
-},
-[_RS] = { /* [> RAISE <] */
-  {KC_EXLM, KC_AT,   KC_LCBR, KC_RCBR, KC_PIPE, KC_TRNS, KC_PGUP, KC_7,    KC_8,   KC_9, KC_ASTR},
-  {KC_HASH, KC_DLR,  KC_LPRN, KC_RPRN, KC_GRV,  KC_TRNS, KC_PGDN, KC_4,    KC_5,   KC_6, KC_PLUS},
-  {KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, KC_LALT, KC_AMPR, KC_1,    KC_2,   KC_3, KC_BSLS},
-  {TG(_LW), KC_INS,  KC_LGUI, KC_LSFT, KC_BSPC, KC_LCTL, KC_SPC,  KC_TRNS, KC_DOT, KC_0, KC_EQL}
-},
-[_LW] = { /* [> LOWER <] */
-  {KC_INS,  KC_HOME, KC_UP,   KC_END,  KC_PGUP, KC_TRNS, KC_UP,   KC_F7,   KC_F8,   KC_F9,   KC_F10},
-  {KC_DELT, KC_LEFT, KC_DOWN, KC_RGHT, KC_DOWN, KC_TRNS, KC_DOWN, KC_F4,   KC_F5,   KC_F6,   KC_F11},
-  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LALT, KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F12},
-  {KC_TRNS, KC_TRNS, KC_LGUI, KC_LSFT, KC_BSPC, KC_LCTL, KC_SPC,  DF(_QW), KC_TRNS, KC_TRNS, RESET}
-}};
-
-const uint16_t PROGMEM fn_actions[] = {
-
-};
-
-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;
-};
diff --git a/keyboard/atreus/keymaps/keymap_gerb.c b/keyboard/atreus/keymaps/keymap_gerb.c
deleted file mode 100644 (file)
index 1ba3942..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-// This is the personal keymap of Chris Gerber (@gerbercj). I haven't worked out the kinks
-// with the Colemak and Dvorak support yet, but everything else works nicely.
-
-#include "atreus.h"
-
-// Each layer gets a name for readability, which is then used in the keymap matrix below.
-// The underscores don't mean anything - you can have a layer called STUFF or any other name.
-// Layer names don't all need to be of the same length, obviously, and you can also skip them
-// entirely and just use numbers.
-#define _QW 0
-#define _CM 1
-#define _DV 2
-#define _L1 3
-#define _L2 4
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-  [_QW] = { /* Qwerty */
-    {KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_NO,   KC_Y,    KC_U,    KC_I,    KC_O,    KC_P   },
-    {KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_NO,   KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN},
-    {KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_LALT, KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH},
-    {KC_ESC,  KC_TAB,  KC_LGUI, KC_LSFT, KC_BSPC, KC_RCTL, KC_SPC,  MO(_L1), KC_MINS, KC_QUOT, KC_ENT }
-  },
-  [_CM] = { /* Colemak */
-    {KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_NO,   KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN},
-    {KC_A,    KC_R,    KC_S,    KC_T,    KC_D,    KC_NO,   KC_H,    KC_N,    KC_E,    KC_I,    KC_O   },
-    {KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_LALT, KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH},
-    {KC_ESC,  KC_TAB,  KC_LGUI, KC_LSFT, KC_BSPC, KC_RCTL, KC_SPC,  MO(_L1), KC_MINS, KC_QUOT, KC_ENT }
-  },
-  [_DV] = { /* Dvorak */
-    {KC_QUOT, KC_COMM, KC_DOT,  KC_P,    KC_Y,    KC_NO,   KC_F,    KC_G,    KC_C,    KC_R,    KC_L   },
-    {KC_A,    KC_O,    KC_E,    KC_U,    KC_I,    KC_NO,   KC_D,    KC_H,    KC_T,    KC_N,    KC_S   },
-    {KC_SCLN, KC_Q,    KC_J,    KC_K,    KC_X,    KC_LALT, KC_B,    KC_M,    KC_W,    KC_V,    KC_Z   },
-    {KC_ESC,  KC_TAB,  KC_LGUI, KC_LSFT, KC_BSPC, KC_RCTL, KC_SPC,  MO(_L1), KC_MINS, KC_SLSH, KC_ENT }
-  },
-  [_L1] = { /* LAYER 1 */
-    {KC_INS,  KC_HOME, KC_UP,   KC_END,  KC_PGUP, KC_NO,   KC_VOLU, KC_7,    KC_8,    KC_9,    KC_LBRC},
-    {KC_DEL,  KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_NO,   KC_VOLD, KC_4,    KC_5,    KC_6,    KC_RBRC},
-    {KC_GRV,  KC_MPRV, KC_MPLY, KC_MNXT, KC_MINS, KC_LALT, KC_MUTE, KC_1,    KC_2,    KC_3,    KC_BSLS},
-    {TG(_L2), KC_APP,  KC_LGUI, KC_LSFT, KC_BSPC, KC_RCTL, KC_SPC,  KC_TRNS, KC_DOT,  KC_0,    KC_EQL }
-  },
-  [_L2] = { /* LAYER 2 */
-    {KC_TRNS, KC_WH_L, KC_MS_U, KC_WH_R, KC_WH_U, KC_NO,   DF(_QW), KC_F7,   KC_F8,   KC_F9,   KC_F10 },
-    {KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, KC_NO,   DF(_CM), KC_F6,   KC_F5,   KC_F6,   KC_F11 },
-    {KC_BTN4, KC_BTN1, KC_BTN2, KC_BTN3, KC_BTN4, KC_LALT, DF(_DV), KC_F1,   KC_F2,   KC_F3,   KC_F12 },
-    {KC_TRNS, KC_TRNS, KC_LGUI, KC_LSFT, KC_BSPC, KC_RCTL, KC_SPC,  KC_TRNS, KC_TRNS, KC_TRNS, RESET  }
-  }
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-
-};
-
-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;
-};
diff --git a/keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/README.md b/keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/README.md
new file mode 100644 (file)
index 0000000..984106f
--- /dev/null
@@ -0,0 +1,29 @@
+# ErgoDox EZ Dvorak International Squisher
+
+Dvorak layout adjusted with several (linux) applications in mind:
+
+* Easier Escape for VIM
+* Windows/Super key for awesome WM
+* Alt+Shift for international characters
+* PrintScreen for sys-rq
+* Insert for the X11 clip-board
+
+Major layer changes:
+
+* Common multimedia keys are integrated into layer 0, less common into layer 1
+* No mouse keys
+* Layer 2 is qwerty (for easier gaming & less fortunate keyboard users)
+
+Known issues:
+
+* Alt+Shift does not work reliably (depends on the X11 kb layout? Not
+  entirely clear...)
+
+![layer0](keyboard-layout0.png)
+![layer1](keyboard-layout1.png)
+![layer2](keyboard-layout2.png)
+
+## Changelog
+
+* 2016-03-29
+  * Initial release
diff --git a/keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/dvorak_intl_squisher.hex b/keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/dvorak_intl_squisher.hex
new file mode 100644 (file)
index 0000000..bd70f58
--- /dev/null
@@ -0,0 +1,1127 @@
+:100000000C9465020C94AC020C94AC020C94AC02FF\r
+:100010000C94AC020C94AC020C94AC020C94AC02A8\r
+:100020000C94AC020C94AC020C94B50B0C94870CA1\r
+:100030000C94AC020C94AC020C94AC020C94AC0288\r
+:100040000C94AC020C943B210C94AC020C94AC02CA\r
+:100050000C94AC020C94C71A0C94AC020C94AC0235\r
+:100060000C94AC020C94AC020C94AC020C94AC0258\r
+:100070000C94AC020C94AC020C94AC020C94AC0248\r
+:100080000C94AC020C94AC020C94AC020C94AC0238\r
+:100090000C94AC020C94AC020C94AC020C94AC0228\r
+:1000A0000C94AC020C94AC020C94AC02F40C160D43\r
+:1000B000040E160D040E5B0D7E0D040ED30DE60D21\r
+:1000C000D110D11000110011431181119A139A130C\r
+:1000D0009A119A139B129B126E139A139A138513FB\r
+:1000E0000000F0A12E0029002A00E1003581000067\r
+:1000F0001E00340004003371E2004D001F00360082\r
+:1001000012001400E3002B002000370008000D004F\r
+:1001100050002C002100130018000E004F004A0070\r
+:1001200022001C000C001B0000006571B6004C0092\r
+:100130000000007F00000154AE004900000000777D\r
+:1001400000000254230009000700050000004600DB\r
+:1001500024000A000B00100052004B00250006008E\r
+:1001600017001A0051002800260015001100190080\r
+:100170002F00E51427000F0016001D7130004E00FF\r
+:10018000318238002D00E500C100000001000100AF\r
+:1001900001000100010000003A001E0220022202BC\r
+:1001A000010001003B001F022102230201000100A7\r
+:1001B0003C002F0226022F00AC0001003D0030025F\r
+:1001C00027023000AB0001003E003102350035024D\r
+:1001D000000001000100010000000100000001001A\r
+:1001E0000100010000000100000001003F0052007A\r
+:1001F00051002402000001004000240021001E00E4\r
+:100200000100A9004100250022001F003700010065\r
+:1002100042002600230020002700A80043002502FA\r
+:100220002E0231002E00AA0044004500010001000A\r
+:1002300001000000010001000100010001000000B8\r
+:100240000100140004001D710100010001001A00EA\r
+:1002500016001B0001000100010008000700060055\r
+:100260000100010001001500090019000100010052\r
+:10027000010017000A000500000001000100010054\r
+:100280000000010000000100010001000000010069\r
+:100290000000010001001C000B0011000000010023\r
+:1002A000010018000D0010000100010001000C0009\r
+:1002B0000E00360001000100010012000F0037009F\r
+:1002C00001000100010013003382387101000100B8\r
+:1002D00001000100010001000100000016034500BB\r
+:1002E000720067006F0044006F0078002000450036\r
+:1002F0005A00000016034500720067006F004400BA\r
+:100300006F007800200045005A0000000403090433\r
+:1003100009026D00040100A0FA09040000010301B4\r
+:100320000100092111010001223F00070581030896\r
+:10033000000A090401000103010200092111010062\r
+:1003400001224D000705820308000A09040200018A\r
+:100350000300000009211101000122360007058376\r
+:100360000308000A09040300010300000009211129\r
+:100370000100012239000705840310000112011059\r
+:100380000100000008EDFE07130100010200010555\r
+:10039000010906A101050719E029E71500250195C6\r
+:1003A0000875018102050819012905950575019156\r
+:1003B000029501750391010507190029771500259C\r
+:1003C00001957875018102C005010980A1018502AE\r
+:1003D00016010026B7001A01002AB7007510950112\r
+:1003E0008100C0050C0901A1018503160100269CAE\r
+:1003F000021A01002A9C02751095018100C00501B6\r
+:100400000902A1010901A100050919012905150029\r
+:10041000250195057501810295017503810105018D\r
+:10042000093009311581257F950275088106093843\r
+:100430001581257F950175088106050C0A3802157E\r
+:1004400081257F950175088106C0C005010906A1B7\r
+:1004500001050719E029E7150025019508750181B7\r
+:100460000295017508810105081901290595057591\r
+:100470000191029501750391010507190029FF15E6\r
+:100480000025FF950675088100C0000000000000EF\r
+:100490000000000000010204060A0F17202C3A4A4F\r
+:1004A0005D71879DB3C7DAE9F5FCFFFCF5E9DAC7B2\r
+:1004B000B39D87715D4A3A2C20170F0A060402018A\r
+:1004C0000000000000000000000011241FBECFEF5C\r
+:1004D000DAE0DEBFCDBF04B603FE27C08091EF0196\r
+:1004E0009091F001A091F101B091F2018730904B11\r
+:1004F000A740B04BD1F41092EF011092F00110928E\r
+:10050000F1011092F20114BE84B7877F84BF0FB649\r
+:10051000F894A895809160008861809360001092A3\r
+:1005200060000FBEE0E0FFE3099511E0A0E0B1E05C\r
+:10053000E8E1F6E402C005900D92A433B107D9F7C3\r
+:1005400021E0A4E3B1E001C01D92AF3EB207E1F7A4\r
+:100550000E94F6080C940A230C94000061110BC051\r
+:10056000FC018281882321F085EE0E94660F03C082\r
+:1005700085EE0E942E1080E090E00895089560912D\r
+:10058000B1017091B2018091B3019091B4010E94C8\r
+:10059000F01956985E9825982D9826982E982798A9\r
+:1005A0002F98813019F0823021F00895259A2D9AE4\r
+:1005B0000895269A2E9A08950C94BF0256985E9834\r
+:1005C00025982D9826982E9827982F988FEF90E0B1\r
+:1005D000909389008093880090938B0080938A0089\r
+:1005E00090938D0080938C00259A2D9A2FEF80E7B1\r
+:1005F00092E0215080409040E1F700C00000269A30\r
+:100600002E9A2FEF80E792E0215080409040E1F752\r
+:1006100000C00000279A2F9A2FEF80E792E0215028\r
+:1006200080409040E1F700C0000025982D982FEF02\r
+:1006300080E792E0215080409040E1F700C0000048\r
+:1006400026982E982FEF80E792E02150804090402E\r
+:10065000E1F700C0000027982F9856985E982598DB\r
+:100660002D9826982E9827982F98089589EA809398\r
+:10067000800089E08093810024982C983F988AB16B\r
+:100680008F748AB96E98479A8BB1806B8BB9769AC2\r
+:100690000E94DE020C94BE0280E2809300018091F1\r
+:1006A000340181110EC00E949B0381E080933401CC\r
+:1006B0002FEF83ED90E3215080409040E1F700C0A0\r
+:1006C000000080E40E94A1038093000181112EC0EC\r
+:1006D0000E94CB0380930001811128C00E94CB03AC\r
+:1006E00080930001811122C08FE30E94CB0380938D\r
+:1006F000000181111BC00E94C30380E40E94A1037A\r
+:1007000080930001811112C08CE00E94CB03809382\r
+:10071000000181110BC00E94CB0380930001811165\r
+:1007200005C08FE30E94CB03809300010E94C303A6\r
+:100730008091000108951092B9008AE08093B8007A\r
+:10074000089594EA9093BC009091BC0097FFFCCF71\r
+:100750009091B900987F983021F0903111F081E0AC\r
+:1007600008958093BB0084E88093BC008091BC0016\r
+:1007700087FFFCCF8091B900887F883111F08034E9\r
+:1007800071F780E0089584E98093BC008091BC00FB\r
+:1007900084FDFCCF08958093BB0084E88093BC0067\r
+:1007A0008091BC0087FFFCCF9091B900987F81E0D9\r
+:1007B000983209F480E0089584E88093BC00809129\r
+:1007C000BC0087FFFCCF8091BB00089580910001A1\r
+:1007D000811115C080E40E94A10380930001811162\r
+:1007E0000CC082E10E94CB0380930001811105C0FF\r
+:1007F0008FEF0E94CB03809300010E94C30384B15A\r
+:10080000807F84B985B1807F85B98AB1837F8AB9B9\r
+:100810008BB1837F8BB93E98469808950E944C0314\r
+:10082000809300010E94E60380B38C7080BB81B38B\r
+:10083000836F81BBA6E3B1E0E4E4F1E08EE08E0FCC\r
+:1008400011921D928E13FCCF0C943603BF92CF925F\r
+:10085000DF92EF92FF920F931F93CF93DF938091DC\r
+:100860000001882379F0809135018F5F80933501F5\r
+:10087000811108C00E944C0380930001811102C0C5\r
+:100880000E94DE0206E311E0C0E0D0E0DD24D39454\r
+:1008900082E0C82EEE24E394F12CC730D10500F598\r
+:1008A00080910001811164C080E40E94A1038093C3\r
+:1008B0000001811112C082E10E94CB0380930001EC\r
+:1008C00081110BC0C7010C2E01C0880F0A94EAF7F2\r
+:1008D00080950E94CB03809300010E94C30348C00F\r
+:1008E000CA30A1F028F4C83059F0C93061F005C011\r
+:1008F000CC3089F070F0CD3089F0209A289810C063\r
+:10090000219A29980DC0229A2A980AC0239A2B98D6\r
+:1009100007C0529A01C0539A5B9802C03E9A46980B\r
+:1009200090EA9A95F1F79FB1799902C082E001C0EF\r
+:1009300080E091709D25982B7C9902C084E001C0D5\r
+:1009400080E0892B7D9902C038E001C030E0832B24\r
+:100950007E9902C020E101C020E0822B9FB19095DA\r
+:10096000991F9927991F9295990F907E892B0FC0F7\r
+:1009700080910001811149C080E40E94A10380930D\r
+:100980000001882379F1B12C0E94C3038B2DF8015B\r
+:100990009081981719F08083C09201010E94E603AC\r
+:1009A00021960F5F1F4FCE30D10509F076CF809191\r
+:1009B0000101882361F1815080930101882339F07E\r
+:1009C0008FE99FE00197F1F700C0000020C0A4E488\r
+:1009D000B1E0E6E3F1E0CF01825F91919D938E1348\r
+:1009E000FCCF15C083E10E94CB03809300018111ED\r
+:1009F000CACF81E40E94A103809300018111C3CF7B\r
+:100A00000E94DC03B82EB094BFCF80E0C0CF0E941C\r
+:100A1000DC0281E0DF91CF911F910F91FF90EF9069\r
+:100A2000DF90CF90BF900895E82FF0E0EC5BFE4F91\r
+:100A30008081089508958B3B910578F4883A91055B\r
+:100A400040F5853A9105D0F48430910508F0B1C0A5\r
+:100A50008130910509F4ADC06BC0803E910508F46A\r
+:100A600067C0883E910508F4A4C09C01205F31094D\r
+:100A70002031310508F05CC090650895853A9105F4\r
+:100A800009F459C0863A910509F058C082E890E40B\r
+:100A90000895883A910509F454C0893A910509F4FA\r
+:100AA00053C08A3A910509F452C08B3A910509F472\r
+:100AB00051C08C3A910509F450C08D3A910509F462\r
+:100AC0004FC0803B910509F44EC08E3A910509F460\r
+:100AD0004DC08F3A910509F44CC0813B910509F452\r
+:100AE0004BC0823B910509F44AC0833B910509F450\r
+:100AF00049C0843B910509F448C0853B910509F440\r
+:100B000047C0863B910509F446C0873B910509F42F\r
+:100B100045C0883B910509F444C0893B910509F41F\r
+:100B200043C08A3B910509F442C080E094E40895F3\r
+:100B300080E090E0089581E890E4089583E890E4EF\r
+:100B4000089582EE94E4089589EE94E408958AEE7F\r
+:100B500094E4089585EB94E4089586EB94E4089575\r
+:100B600087EB94E408958CEC94E408958DEC94E480\r
+:100B7000089583E895E408958AE895E4089582E964\r
+:100B800095E4089584E995E4089581E296E4089552\r
+:100B900083E296E4089584E296E4089585E296E47B\r
+:100BA000089586E296E4089587E296E408958AE23D\r
+:100BB00096E40895089596E0799FF001112494E554\r
+:100BC000899FE00DF11D1124E60FF11DEE0FFF1FAF\r
+:100BD000EC51FF4F859194910895880F991FFC0166\r
+:100BE000E05AF040859194910895880F991FFC0177\r
+:100BF000E052FF4F85919491089526E0729FF00195\r
+:100C0000112444E5849FE00DF11D1124E60FF11D30\r
+:100C1000EE0FFF1FEC51FF4F859194919C013A9587\r
+:100C200021154FE1340708F41CC13F512115304113\r
+:100C300020F49F700E94F50508959C013053211502\r
+:100C4000304118F49927906C0895811520E592079A\r
+:100C500071F40E94BE134FEF84E39CE0415080404A\r
+:100C60009040E1F700C000000E94EC1AFAC0813009\r
+:100C700020E5920731F48091CD0181608093CD0110\r
+:100C8000F0C09C0130552115304108F051C0292F8A\r
+:100C900033272F70332721303105D9F4AC0143704D\r
+:100CA000552702C0220F331F4A95E2F73C68AC017A\r
+:100CB00064E0440F551F6A95E1F744275370242BD5\r
+:100CC000352B73E0880F991F7A95E1F78076992785\r
+:100CD0001DC02230310529F4982F8827816F906A32\r
+:100CE000089523303105A9F4AC014370552721E064\r
+:100CF00030E002C0220F331F4A95E2F73C6843E020\r
+:100D0000880F991F4A95E1F7807E9770822B932B6D\r
+:100D1000089524303105E1F4AC014370552721E0FA\r
+:100D200030E002C0220F331F4A95E2F73A68E7CF5E\r
+:100D30009C0130572115304118F49F70906208953E\r
+:100D40009C0130582115304118F49F70906A089525\r
+:100D5000803E9105E0F4803C910558F58133910582\r
+:100D600009F46FC048F48932910509F463C08A32EE\r
+:100D7000910509F46DC072C089339105E9F082389C\r
+:100D80009105D1F08533910509F44DC067C0833ECC\r
+:100D9000910581F138F4803E9105B9F0823E9105CC\r
+:100DA000D9F05CC0863E910561F1873E9105A1F1C5\r
+:100DB00055C00E94ED0508952091E00120FD02C07C\r
+:100DC00021FF4CC080EE90E049C08091E00180FF9F\r
+:100DD000F9CF89E390E042C08091E00182FF0EC02C\r
+:100DE0008091E00184FF03C080E090E037C083EE93\r
+:100DF00090E034C08091E00182FFF2CF82EE90E07B\r
+:100E00002DC08091E00183FF0BC08091E00184FD43\r
+:100E1000EBCF87EE90E022C08091E00183FFF5CF19\r
+:100E200086EE90E01BC08091E00185FF07C089E25B\r
+:100E300090E014C08091E00185FFF9CF85E390E058\r
+:100E40000DC08091E00186FF07C08AE290E006C0F5\r
+:100E50008091E00186FFF9CF81E390E00E941B05BD\r
+:100E60000895089508950C943207809162010895C1\r
+:100E7000CF93DF9300D01F92CDB7DEB79C01809156\r
+:100E8000E601843019F593E099833B832A8390939C\r
+:100E9000E9008FEF9091E800815095FD06C095ED37\r
+:100EA0009A95F1F700008111F5CF8091E80085FF58\r
+:100EB0000DC040E050E063E070E0CE0101960E947A\r
+:100EC000A5098091E8008E778093E8000F900F903D\r
+:100ED0000F90DF91CF910895CF93DF9300D01F92B1\r
+:100EE000CDB7DEB72091E601243021F522E0298339\r
+:100EF0009B838A8383E08093E9008FEF9091E800E1\r
+:100F0000815095FD06C095ED9A95F1F7000081118D\r
+:100F1000F5CF8091E80085FF0DC040E050E063E030\r
+:100F200070E0CE0101960E94A5098091E8008E77BD\r
+:100F30008093E8000F900F900F90DF91CF9108956C\r
+:100F40002091E6012430F1F422E02093E9002FEF14\r
+:100F50003091E800215035FD06C035ED3A95F1F7A6\r
+:100F600000002111F5CF2091E80025FF0BC040E0E3\r
+:100F700050E065E070E00E94A5098091E8008E775E\r
+:100F80008093E8000895CF93DF93EC019091E60100\r
+:100F9000943009F046C080910C018823D9F08091EB\r
+:100FA0000D018823B9F09093E9008FEF9091E8004C\r
+:100FB000815095FD06C095E19A95F1F700008111E9\r
+:100FC000F5CF8091E80085FF2CC040E050E060E163\r
+:100FD00070E017C081E08093E9008FEF9091E80006\r
+:100FE000815095FD06C095ED9A95F1F700008111AD\r
+:100FF000F5CF8091E80085FF14C040E050E068E044\r
+:1010000070E0CE010E94A5098091E8008E77809360\r
+:10101000E80080E1FE01A2E5B1E001900D928A9521\r
+:10102000E1F7DF91CF9108958091E501811109C029\r
+:101030000E943A0B0E94970B8091E200846080939B\r
+:10104000E20008951092E501089508950C94282176\r
+:101050000E94821A0E942E210E943D0E0C9433079A\r
+:1010600042E061EC81E00E94B40A42E061EC82E07F\r
+:101070000E94B40A42E061EC83E00E94B40A42E1BB\r
+:1010800061EC84E00C94B40A8091E801833009F4A7\r
+:1010900055C030F4813071F0823009F48EC008956B\r
+:1010A0008A3009F47AC08B3009F460C0893009F0C5\r
+:1010B0009CC020C08091E701813A09F096C08091E0\r
+:1010C000E800877F8093E8008091EB019091EC012C\r
+:1010D000892B21F460E182E591E003C060E080E0CB\r
+:1010E00090E070E00E94F0098091E8008B77809397\r
+:1010F000E80008958091E701813209F076C080917F\r
+:10110000EB019091EC01009719F0039709F06DC085\r
+:101110008091E800877F8093E8008091E80082FD5D\r
+:1011200005C08091E6018111F8CF5FC08091F10088\r
+:10113000809362018091E8008B7753C08091E70132\r
+:10114000813A09F052C08091EB019091EC01892B1A\r
+:1011500009F04BC08091E800877F8093E800809180\r
+:10116000E80080FFFCCF80910C0136C08091E70140\r
+:101170008132D9F58091EB019091EC01892BA9F591\r
+:101180008091E800877F8093E8000E94E90A8091BF\r
+:10119000E90180930C010C94BE138091E701813228\r
+:1011A00021F58091E800877F8093E8000E94E90A9A\r
+:1011B0008091EA018093630108958091E701813A6B\r
+:1011C000A1F48091E800877F8093E8008091E80097\r
+:1011D00080FFFCCF809163018093F1008091E80053\r
+:1011E0008E778093E8000C94E90A089584B7877F8E\r
+:1011F00084BF0FB6F894A8958091600088618093B1\r
+:101200006000109260000FBE90E080E80FB6F89486\r
+:1012100080936100909361000FBE0E948C0E0E942B\r
+:101220003A0B0E94970B8091E20084608093E20069\r
+:1012300078940E941D0E0E948E0E82E091E00E9422\r
+:10124000380E0E9416218091E601853069F40E94D3\r
+:10125000401A8091E4018823B1F30E946E1A88231A\r
+:1012600091F30E948F09EFCF0E94940EECCF292FAB\r
+:10127000332723303105C9F064F42130310581F082\r
+:101280002230310509F043C08DE690E020E133E0E3\r
+:1012900042C021323105F1F02232310541F137C02F\r
+:1012A00082E190E02DE733E036C099278130910547\r
+:1012B00041F08230910541F0892B49F5ECE0F3E0F3\r
+:1012C00005C0E4EFF2E002C0ECEDF2E0849190E0C2\r
+:1012D0009F0121C06430D8F4E62FF0E0EE0FFF1F2D\r
+:1012E000EE5DFE4F2081318189E090E014C06430D2\r
+:1012F00070F470E0FB01EE0FFF1FE65EFE4F2081F1\r
+:101300003181FB01EA5EFE4F808190E004C080E005\r
+:1013100090E020E030E0FA0131832083089580E1FD\r
+:1013200089BD82E189BD09B400FEFDCF8091D8005E\r
+:101330008F7D8093D8008091E00082608093E000F0\r
+:101340008091E00081FDFCCF0895CF92DF92EF9273\r
+:10135000FF920F931F93CF93DF93EC018B016A01F0\r
+:101360000E94080B811133C0C114D10439F0F60179\r
+:1013700080819181081B190BC80FD91FE12CF12C1A\r
+:101380000115110519F18091E80085FD16C08091C5\r
+:10139000E8008E778093E800C114D10449F0F6018B\r
+:1013A00080819181E80EF91EF182E08285E00FC014\r
+:1013B0000E94080B882321F30AC089918093F100D1\r
+:1013C00001501109FFEFEF1AFF0ADACF80E0DF9139\r
+:1013D000CF911F910F91FF90EF90DF90CF900895E4\r
+:1013E0002091ED013091EE012617370748F0611585\r
+:1013F000710539F42091E8002E772093E80001C0B0\r
+:10140000B90140E061157105A9F12091E60122239F\r
+:1014100009F443C0253009F442C02091E80023FDBF\r
+:1014200040C02091E80022FD32C02091E80020FF5A\r
+:10143000E9CF4091F3002091F20030E0342BFC0121\r
+:10144000CF016115710559F02830310540F48191C3\r
+:101450008093F100615071092F5F3F4FF1CF41E060\r
+:101460002830310509F040E02091E8002E772093E4\r
+:10147000E800C8CF4111C9CF0AC08091E601882396\r
+:1014800061F0853061F08091E80083FD0AC08091B1\r
+:10149000E80082FFF2CF80E0089582E0089583E0C3\r
+:1014A000089581E008952091ED013091EE01261715\r
+:1014B000370748F06115710539F42091E8002E775F\r
+:1014C0002093E80001C0B901FC0120E0611571051D\r
+:1014D00091F18091E601882309F440C0853009F438\r
+:1014E0003FC08091E80083FD3DC08091E80082FD0F\r
+:1014F0002FC08091E80080FFE9CF2091F300809118\r
+:10150000F20090E0922B6115710559F08830910539\r
+:1015100040F424912093F1003196615071090196B5\r
+:10152000F2CF21E0089709F020E08091E8008E7763\r
+:101530008093E800CBCF2111CCCF0AC08091E60187\r
+:10154000882361F0853061F08091E80083FD0AC056\r
+:101550008091E80082FFF2CF80E0089582E0089554\r
+:1015600083E0089581E00895982F973058F590937F\r
+:10157000E900981739F07091EC002091ED0050913E\r
+:10158000F00003C0242F762F50E021FF19C03091C6\r
+:10159000EB003E7F3093EB003091ED003D7F3093C8\r
+:1015A000ED003091EB0031603093EB007093EC0074\r
+:1015B0002093ED005093F0002091EE0027FF07C02C\r
+:1015C0009F5FD3CF8F708093E90081E0089580E022\r
+:1015D00008958091E70187FF11C08091E80082FDA6\r
+:1015E00005C08091E6018111F8CF11C08091E8001B\r
+:1015F0008B770BC08091E601882349F08091E80049\r
+:1016000080FFF8CF8091E8008E778093E8000895FE\r
+:101610002091E4003091E50095E64091EC00842FA4\r
+:10162000817040FF22C08091E80080FD1CC0809145\r
+:10163000E601882391F0853091F08091EB0085FDE3\r
+:1016400010C04091E4005091E5004217530729F380\r
+:101650009A01915011F784E0089582E0089583E0A3\r
+:10166000089581E0089580E008954091E80042FFE8\r
+:10167000DECF08950E94A80B0E94B00BE0EEF0E0D0\r
+:10168000808181608083E8EDF0E080818F778083C6\r
+:1016900019BCA7EDB0E08C918E7F8C9380818F7EFA\r
+:1016A00080831092E50108950F931F93CF93DF93EA\r
+:1016B0000E94A80B0E94B00BC8EDD0E088818F7704\r
+:1016C000888388818068888388818F7D888319BC1E\r
+:1016D0001092E6011092E2011092E4011092E301EF\r
+:1016E00000EE10E0F80180818B7F8083888181602B\r
+:1016F000888342E060E080E00E94B40AE1EEF0E01E\r
+:1017000080818E7F8083E2EEF0E080818160808343\r
+:10171000808188608083F80180818E7F80838881CA\r
+:1017200080618883DF91CF911F910F910895E8ED3B\r
+:10173000F0E080818F7E8083E7EDF0E08081816042\r
+:10174000808384E082BF81E08093E5010C94540B98\r
+:10175000E8EDF0E080818E7F80831092E2000895B2\r
+:101760001092DA001092E10008951F920F920FB6C6\r
+:101770000F9211242F933F934F935F936F937F9317\r
+:101780008F939F93AF93BF93EF93FF938091E1006B\r
+:1017900082FF0BC08091E20082FF07C08091E100D0\r
+:1017A0008B7F8093E1000E941C0E8091DA0080FF05\r
+:1017B0001FC08091D80080FF1BC08091DA008E7F0F\r
+:1017C0008093DA008091D90080FF0DC080E189BD4F\r
+:1017D00082E189BD09B400FEFDCF81E08093E6017E\r
+:1017E0000E94140805C019BC1092E6010E9422084C\r
+:1017F0008091E10080FF19C08091E20080FF15C058\r
+:101800008091E2008E7F8093E2008091E20080610F\r
+:101810008093E2008091D80080628093D80019BC48\r
+:1018200085E08093E6010E9426088091E10084FF14\r
+:1018300030C08091E20084FF2CC080E189BD82E14C\r
+:1018400089BD09B400FEFDCF8091D8008F7D8093C3\r
+:10185000D8008091E1008F7E8093E1008091E200CA\r
+:101860008F7E8093E2008091E20081608093E200AD\r
+:101870008091E201882311F084E007C08091E300A9\r
+:1018800087FD02C081E001C083E08093E6010E94F1\r
+:1018900028088091E10083FF29C08091E20083FF46\r
+:1018A00025C08091E100877F8093E10082E08093F2\r
+:1018B000E6011092E2018091E1008E7F8093E100C9\r
+:1018C0008091E2008E7F8093E2008091E20080614F\r
+:1018D0008093E20042E060E080E00E94B40A8091E0\r
+:1018E000F00088608093F0000E942508FF91EF913E\r
+:1018F000BF91AF919F918F917F916F915F914F9128\r
+:101900003F912F910F900FBE0F901F9018951F922F\r
+:101910000F920FB60F9211242F933F934F935F9323\r
+:101920006F937F938F939F93AF93BF93CF93DF93E7\r
+:10193000EF93FF93C091E900CF708091EC00D82F16\r
+:10194000D17080FDD0E81092E9008091F000877F8F\r
+:101950008093F00078940E94CB0C1092E900809163\r
+:10196000F00088608093F000CD2BCF70C093E90029\r
+:10197000FF91EF91DF91CF91BF91AF919F918F91A7\r
+:101980007F916F915F914F913F912F910F900FBE7B\r
+:101990000F901F9018951F93CF93DF93CDB7DEB7AD\r
+:1019A000AA970FB6F894DEBF0FBECDBFE7EEF1E009\r
+:1019B00088E08E0F9091F10091938E13FBCF0E94DF\r
+:1019C00044088091E80083FF1FC18091E701909156\r
+:1019D000E801492F50E04A30510508F015C1FA01DD\r
+:1019E000EA5AFF4F0C94BF22803881F0823809F008\r
+:1019F0000BC18091EB018F708093E9008091EB0027\r
+:101A000085FB882780F91092E90006C08091E301E8\r
+:101A10009091E401911182609091E800977F9093FA\r
+:101A2000E8008093F1001092F100C8C0282F2D7FAC\r
+:101A300009F0EAC0882319F0823061F0E5C0809196\r
+:101A4000E901813009F0E0C0933009F080E0809333\r
+:101A5000E4012BC08091E901811127C08091EB0145\r
+:101A60008F7009F4D1C08093E9002091EB0020FF32\r
+:101A70001CC0933021F48091EB00806214C09091DF\r
+:101A8000EB0090619093EB0021E030E0A90102C0EF\r
+:101A9000440F551F8A95E2F74093EA001092EA003E\r
+:101AA0008091EB0088608093EB001092E9008091B8\r
+:101AB000E800877F86C08111A7C01091E9011F77D8\r
+:101AC0008091E3008078812B8093E3008091E8008F\r
+:101AD000877F8093E8000E94E90A8091E80080FFF8\r
+:101AE000FCCF8091E30080688093E300111102C075\r
+:101AF00082E001C083E08093E60186C08058823096\r
+:101B000008F082C08091E9019091EA018C3D53E098\r
+:101B1000950779F583E08A838AE289834FB7F89441\r
+:101B2000DE01139620E03EE051E2E32FF0E0509317\r
+:101B30005700E49120FF03C0E295EF703F5FEF7024\r
+:101B40008E2F90E0EA3010F0C79601C0C0968D93BA\r
+:101B50009D932F5F243149F74FBF8091E800877F25\r
+:101B60008093E8006AE270E0CE0101960E94F009DD\r
+:101B700014C0AE014F5F5F4F6091EB010E943709C7\r
+:101B8000BC01892B09F440C09091E800977F9093A5\r
+:101B9000E80089819A810E94530A8091E8008B773E\r
+:101BA0008093E80031C0803879F58091E800877F24\r
+:101BB0008093E8008091E2018093F1008091E80039\r
+:101BC0008E778093E8000E94E90A1EC081111CC034\r
+:101BD0009091E9019230C0F48091E800877F809372\r
+:101BE000E8009093E2010E94E90A8091E2018111EC\r
+:101BF00006C08091E30087FD02C081E001C084E05F\r
+:101C00008093E6010E9430088091E80083FF0AC0BB\r
+:101C10008091E800877F8093E8008091EB008062EC\r
+:101C20008093EB00AA960FB6F894DEBF0FBECDBF2F\r
+:101C3000DF91CF911F9108950895CF938091E60190\r
+:101C40008823A1F0C091E900CF709091EC00892F1A\r
+:101C5000817090FD80E8C82B1092E9008091E80027\r
+:101C600083FD0E94CB0CCF70C093E900CF91089503\r
+:101C700090936901809368010895E0916801F09163\r
+:101C80006901309721F00190F081E02D099480E006\r
+:101C90000895E0916801F0916901309721F0028088\r
+:101CA000F381E02D09940895E0916801F0916901B4\r
+:101CB000309721F00480F581E02D0994089520915A\r
+:101CC0006601309167018217930771F09093670165\r
+:101CD00080936601E0916801F0916901309721F0ED\r
+:101CE0000680F781E02D09940895209164013091D8\r
+:101CF00065018217930771F09093650180936401E9\r
+:101D0000E0916801F0916901309721F00084F1853C\r
+:101D1000E02D0994089508950C948B0E0E94881A62\r
+:101D20000E940E040C944E1BCF92DF92EF92FF9212\r
+:101D30000F931F93CF93DF93CDB7DEB72B970FB6DB\r
+:101D4000F894DEBF0FBECDBF0E9426048BE6C82EDE\r
+:101D500081E0D82E00E010E0E02E802F0E941405D4\r
+:101D6000F60141916F01F42EF826B1F40F5F1F4F79\r
+:101D70000E30110589F78FEF89838A831B820E94B9\r
+:101D8000911A8160782F9D838C8349815A816B8160\r
+:101D90008D810E94370F40C09091CD0191FF04C00A\r
+:101DA0008B870E941A058B8520E030E04F2D50E094\r
+:101DB000922FBA01022E02C0759567950A94E2F738\r
+:101DC00060FF24C02E83EF8221E030E0690102C071\r
+:101DD000CC0CDD1C9A95E2F790E08C219D21892B9B\r
+:101DE00009F420E028870E94911A8160782F9A8751\r
+:101DF00089874E815F8168858A850E94370FF80147\r
+:101E0000E559FE4F8081C826C08206C02F5F3F4F34\r
+:101E10002630310569F6AACF0E94351E10916A015D\r
+:101E20000E943D0E1817A1F00E943D0E80936A019A\r
+:101E30002B960FB6F894DEBF0FBECDBFDF91CF91CA\r
+:101E40001F910F91FF90EF90DF90CF900C9433078C\r
+:101E50002B960FB6F894DEBF0FBECDBFDF91CF91AA\r
+:101E60001F910F91FF90EF90DF90CF900895CF9347\r
+:101E7000DF93CDB7DEB72B970FB6F894DEBF0FBE5A\r
+:101E8000CDBF4F83588769877A878B87DE0111968C\r
+:101E900086E0FD0111928A95E9F785E0FE0137960B\r
+:101EA00001900D928A95E1F749815A816B817C817D\r
+:101EB0008D819E810E9458162B960FB6F894DEBF36\r
+:101EC0000FBECDBFDF91CF9108950895CF938823A2\r
+:101ED00009F4C2C0C82F823859F40E943D0E81FD1A\r
+:101EE000BBC089E30E94F4180E94C11989E30CC0A9\r
+:101EF000833879F40E943D0E80FDAEC083E50E94D8\r
+:101F0000F4180E94C11983E50E943619CF910C94F0\r
+:101F1000C119843859F40E943D0E82FD9DC087E4AA\r
+:101F20000E94F4180E94C11987E4EECF8CEF8C0F49\r
+:101F3000813A48F48C2F0E947B2081118DC08C2F18\r
+:101F40000E94F418E3CF80E28C0F883048F4C77009\r
+:101F500081E001C0880FCA95EAF70E947A19D6CFAE\r
+:101F60008BE58C0F833078F4C53A29F0C63A31F00E\r
+:101F700083E890E005C081E890E002C082E890E04C\r
+:101F8000CF910C945F0E88E58C0F833108F064C00C\r
+:101F9000C83A39F1C93A41F1CA3A49F1CB3A51F15B\r
+:101FA000CC3A59F1CD3A61F1C03B69F1CE3A71F1C9\r
+:101FB000CF3A79F1C13B81F1C23B89F1C33B91F149\r
+:101FC000C43B99F1C53BA1F1C63BA9F1C73BB1F1B7\r
+:101FD000C83BB9F1C93BC1F1CA3BC9F180E090E00F\r
+:101FE00038C082EE90E035C089EE90E032C08AEED3\r
+:101FF00090E02FC085EB90E02CC086EB90E029C0EC\r
+:1020000087EB90E026C08CEC90E023C08DEC90E054\r
+:1020100020C083E891E01DC08AE891E01AC082E9FF\r
+:1020200091E017C084E991E014C081E292E011C010\r
+:1020300083E292E00EC084E292E00BC085E292E07F\r
+:1020400008C086E292E005C087E292E002C08AE220\r
+:1020500092E0CF910C94750ECF910895882309F4E6\r
+:102060004BC0823859F40E943D0E81FF45C089E380\r
+:102070000E94F4180E94C11989E30CC0833871F4DE\r
+:102080000E943D0E80FF38C083E50E94F4180E9434\r
+:10209000C11983E50E9436190C94C119843859F48A\r
+:1020A0000E943D0E82FF28C087E40E94F4180E941F\r
+:1020B000C11987E4EFCF9CEF980F913A58F390E263\r
+:1020C000980F983050F4877091E001C0990F8A956D\r
+:1020D000EAF7892F0E948019DFCF9BE5980F933094\r
+:1020E00020F480E090E00C945F0E885A833120F455\r
+:1020F00080E090E00C94750E0895882321F00E94F2\r
+:102100007A190C94C1190895882321F00E9480192E\r
+:102110000C94C1190895BF92CF92DF92EF92FF9273\r
+:102120000F931F93CF93DF9300D000D000D0CDB793\r
+:10213000DEB725E0FC01DE01119601900D922A9593\r
+:10214000E1F7FC01D08011810281258122952F7059\r
+:1021500043815481452B09F4EDC21F3F21F4FFEF69\r
+:10216000DF1609F4E7C27C012E830E94650FD98235\r
+:102170001A8389819A810E94B318182FB92E0E9460\r
+:10218000B2180E9479172E81002319F00E94971926\r
+:102190002E81EB2DE295EF70F0E0E05AFF4F0C94AA\r
+:1021A000BF228B2D807F9B2D9F70F92E882319F0E5\r
+:1021B000F29480EFF822002349F0FF2009F467C26F\r
+:1021C0008F2D0E948A190E94C11961C2812F0E941D\r
+:1021D0002E10FF2009F4AEC28F2D0E949019269672\r
+:1021E0000FB6F894DEBF0FBECDBFDF91CF911F9128\r
+:1021F0000F91FF90EF90DF90CF90BF900C94C1199A\r
+:102200003B2D307F8B2D8F70303211F08295807F87\r
+:10221000112319F0113021F12CC00023B9F0222331\r
+:1022200009F4A0C1213009F09DC126960FB6F8949B\r
+:10223000DEBF0FBECDBFDF91CF911F910F91FF90F9\r
+:10224000EF90DF90CF90BF900C94AA19222319F041\r
+:10225000213009F46FC28E830E94AD198E8196C120\r
+:10226000002321F0223008F065C27CC1211162C236\r
+:102270008DC1002321F0222309F474C108C2222356\r
+:1022800009F484C119C22B2D26952695237030E0C0\r
+:102290002115310521F021303105D1F04BC2002349\r
+:1022A00021F0812F9B2D937002C080E090E0269654\r
+:1022B0000FB6F894DEBF0FBECDBFDF91CF911F9157\r
+:1022C0000F91FF90EF90DF90CF90BF900C945F0E36\r
+:1022D000002321F0812F9B2D937002C080E090E0BD\r
+:1022E00026960FB6F894DEBF0FBECDBFDF91CF911B\r
+:1022F0001F910F91FF90EF90DF90CF90BF900C94C3\r
+:10230000750E812F002319F00E943D1D02C00E940E\r
+:10231000A51D26960FB6F894DEBF0FBECDBFDF9188\r
+:10232000CF911F910F91FF90EF90DF90CF90BF90D2\r
+:102330000C942A1E8B2D837009F07BC00111FAC109\r
+:10234000812F829586958770880F880F912F9F70B7\r
+:10235000C92ED12CE12CF12C082E04C0CC0CDD1C94\r
+:10236000EE1CFF1C0A94D2F714FF12C04FE050E09D\r
+:1023700060E070E004C0440F551F661F771F8A9508\r
+:10238000D2F7CB01BA01609570958095909503C006\r
+:1023900060E070E0CB012B2D269526952370422F0F\r
+:1023A00050E042305105D9F04330510569F16C29B4\r
+:1023B0007D298E299F294130510551F126960FB66E\r
+:1023C000F894DEBF0FBECDBFDF91CF911F910F916B\r
+:1023D000FF90EF90DF90CF90BF900C94A0176C29E6\r
+:1023E0007D298E299F2926960FB6F894DEBF0FBE51\r
+:1023F000CDBFDF91CF911F910F91FF90EF90DF90B4\r
+:10240000CF90BF900C94BC170E94A017C701B601D3\r
+:1024100026960FB6F894DEBF0FBECDBFDF91CF91E9\r
+:102420001F910F91FF90EF90DF90CF90BF900C9491\r
+:102430008417002319F08B2D817001C086958823A5\r
+:1024400009F478C1812F829586958770880F880F4F\r
+:10245000912F9F70C92ED12CE12CF12C082E04C095\r
+:10246000CC0CDD1CEE1CFF1C0A94D2F714FF12C02A\r
+:102470004FE050E060E070E004C0440F551F661F5D\r
+:10248000771F8A95D2F7CB01BA0160957095809538\r
+:10249000909503C060E070E0CB012B2D269526952A\r
+:1024A0002370422F50E042305105D9F0433051059E\r
+:1024B00069F16C297D298E299F294130510551F1FF\r
+:1024C00026960FB6F894DEBF0FBECDBFDF91CF9139\r
+:1024D0001F910F91FF90EF90DF90CF90BF900C94E1\r
+:1024E0007A186C297D298E299F2926960FB6F89493\r
+:1024F000DEBF0FBECDBFDF91CF911F910F91FF9037\r
+:10250000EF90DF90CF90BF900C9496180E947A18AD\r
+:10251000C701B60126960FB6F894DEBF0FBECDBF39\r
+:10252000DF91CF911F910F91FF90EF90DF90CF90AF\r
+:10253000BF900C945E18103FD1F118F4103E50F487\r
+:10254000A1C0123F09F463C008F44CC0133F09F462\r
+:1025500073C098C01F708B2D8F710023A1F00E9453\r
+:10256000F717812F26960FB6F894DEBF0FBECDBFAA\r
+:10257000DF91CF911F910F91FF90EF90DF90CF905F\r
+:10258000BF900C947D100E941818812F26960FB6CC\r
+:10259000F894DEBF0FBECDBFDF91CF911F910F9199\r
+:1025A000FF90EF90DF90CF90BF900C9484100023A9\r
+:1025B000A9F02111BFC08B2D8F7126960FB6F8940C\r
+:1025C000DEBF0FBECDBFDF91CF911F910F91FF9066\r
+:1025D000EF90DF90CF90BF900C943D18223008F020\r
+:1025E000A9C0E9CF0023A9F08B2D8F7126960FB6D5\r
+:1025F000F894DEBF0FBECDBFDF91CF911F910F9139\r
+:10260000FF90EF90DF90CF90BF900C94F7170023CE\r
+:1026100059F38B2D8F7126960FB6F894DEBF0FBE3F\r
+:10262000CDBFDF91CF911F910F91FF90EF90DF9081\r
+:10263000CF90BF900C941818002399F08B2D8F71B8\r
+:1026400026960FB6F894DEBF0FBECDBFDF91CF91B7\r
+:102650001F910F91FF90EF90DF90CF90BF900C945F\r
+:10266000E21726960FB6F894DEBF0FBECDBFDF91FE\r
+:10267000CF911F910F91FF90EF90DF90CF90BF907F\r
+:102680000C94D8170023A9F0222309F4ADCF812F91\r
+:1026900026960FB6F894DEBF0FBECDBFDF91CF9167\r
+:1026A0001F910F91FF90EF90DF90CF90BF900C940F\r
+:1026B000660F222309F4ADCF812F26960FB6F8942A\r
+:1026C000DEBF0FBECDBFDF91CF911F910F91FF9065\r
+:1026D000EF90DF90CF90BF900C942E104B2D4F7049\r
+:1026E000612FC7010E94AE0226960FB6F894DEBF96\r
+:1026F0000FBECDBFDF91CF911F910F91FF90EF9053\r
+:10270000DF90CF90BF900C94FC164B2D4F70612F33\r
+:10271000C70126960FB6F894DEBF0FBECDBFDF917E\r
+:10272000CF911F910F91FF90EF90DF90CF90BF90CE\r
+:102730000C94DA0526960FB6F894DEBF0FBECDBF17\r
+:10274000DF91CF911F910F91FF90EF90DF90CF908D\r
+:10275000BF9008950E9497190E94A7190E946C19B2\r
+:102760000E94C1190E94DA1E0E942A1E80E090E099\r
+:102770000E945F0E80E090E00C94750E0E94871915\r
+:102780000C94AA130E94B318292F22952F7030E0C1\r
+:102790002C3031054CF42A3031056CF422503109CB\r
+:1027A0002230310588F407C02C30310549F02F3034\r
+:1027B000310531F009C0803E48F0803F29F406C061\r
+:1027C00093FB882780F9089580E0089581E00895BB\r
+:1027D000CF93DF9300D000D01F92CDB7DEB70F901C\r
+:1027E0000F900F900F900F90DF91CF910895CF939E\r
+:1027F000DF9300D000D000D0CDB7DEB726960FB65D\r
+:10280000F894DEBF0FBECDBFDF91CF9108951F9327\r
+:10281000CF93DF93C091790116E080917A01C817B8\r
+:1028200099F0D0E01C9FF0011D9FF00D1124E55898\r
+:10283000FE4F4081518162817381848195810E9424\r
+:10284000F7132196C770E9CFDF91CF911F910895BB\r
+:102850004091AB015091AC016091AD017091AE011E\r
+:102860008091AF019091B0010C94F7138091B00169\r
+:1028700082958F7009F054C08091AD01882309F4CE\r
+:102880004FC080917901A0917A016091AB01709164\r
+:10289000AC014091AE015091AF01B6E08A1709F446\r
+:1028A0003FC090E041155105C1F17F3F11F46F3FEA\r
+:1028B000A1F1B89FF001B99FF00D1124E558FE4F2A\r
+:1028C000218172132AC02081621327C02281211125\r
+:1028D00024C0238134812417350710F42150310995\r
+:1028E000241B350B283C3105C0F42091B0012F701A\r
+:1028F00020612093B00126E0289FF001299FF00D70\r
+:102900001124E058FE4F80818F70806180838BEAB4\r
+:1029100091E00E948B100C94071401968770BECF33\r
+:102920000895CF92DF92EF92FF920F931F93CF9370\r
+:10293000DF93CDB7DEB762970FB6F894DEBF0FBE58\r
+:10294000CDBF8C0185E0F801DE011D9601900D924E\r
+:102950008A95E1F7D8014C9111965C9111971296E6\r
+:102960006C9112971396CD90DC9014973091AB0137\r
+:102970007091AC018091AE019091AF01009709F484\r
+:102980006BC17F3F19F43F3F09F466C1E090AD0190\r
+:10299000EE2009F4C0C02091B001C816D90628F075\r
+:1029A000F601E81BF90BCF0104C0809590958C0DC2\r
+:1029B0009D1DFF24F394883C910578F0F12C207F35\r
+:1029C00009F0C6C07C2DD98AC88A89890E94E8137B\r
+:1029D0008BEA91E00E948B10B1C0822F807F09F0BA\r
+:1029E00046C0751314C0341312C0611110C02F708B\r
+:1029F00020612093B0010E9428148BEA91E00E948C\r
+:102A00008B108091B001D80115968C932EC0CD28E3\r
+:102A100019F15F3F11F44F3FF9F0F62E61111CC020\r
+:102A20008091790120917A0136E0821709F45AC029\r
+:102A300090E0389FF001399FF00D1124E558FE4FCA\r
+:102A40007181571306C07081471303C072817111E1\r
+:102A500003C001968770E9CFF62E662309F418C1EA\r
+:102A60008091B00181608093B001F12C11C1751388\r
+:102A700008C0341306C0611104C08091B001D801B0\r
+:102A8000C3C04D875E878D859E856A8B0E94C21369\r
+:102A90006A898823E1F16623D1F12091B001822F68\r
+:102AA00082958F7090E0029774F08091AB019091C5\r
+:102AB000AC0198878F831986DB86CA862C87CE0166\r
+:102AC00007960E948B1086E0F801ABEAB1E0019016\r
+:102AD0000D928A95E1F70E9436140E942814FF2473\r
+:102AE000F394D6C04D875E878D859E850E94B3186E\r
+:102AF000292F22952F7030E0223031050CF0BCC018\r
+:102B00009F7009F0B6C0805E883008F4C1C0C8016B\r
+:102B10000E948B10E4CFC816D90608F453C0F60102\r
+:102B2000E81BF90BCF01883C910508F450C0F12C4B\r
+:102B30007C2DD98AC88A89890E94E813EBEAF1E0E2\r
+:102B400086E0DF011D928A95E9F70E942814A0C053\r
+:102B5000751314C0341312C0611110C08091B001FC\r
+:102B6000F8018583C8010E948B1086E0EBEAF1E052\r
+:102B7000DF011D928A95E9F7FE2C8AC04D875E879A\r
+:102B80008D859E856A8B0E94C2136A89882309F409\r
+:102B9000BECF662309F4BBCF2091B001822F82956E\r
+:102BA0008F7090E002970CF48ECF8091AB019091E2\r
+:102BB000AC019A8389831B82DD82CC822E83CE0175\r
+:102BC00001967FCF809590958C0D9D1DACCFF62EF4\r
+:102BD000662309F49CCF75132EC034132CC02091AA\r
+:102BE000B00120FD1FC0822F82958F70D9F0D801CF\r
+:102BF00015962C9315978F3049F08F5F982F9295EB\r
+:102C0000907F822F8F70892B15968C93C8010E941C\r
+:102C10008B1086E0F801ABEAB1E001900D928A9545\r
+:102C2000E1F793CF86E0F801ABEAB1E001900D92B5\r
+:102C30008A95E1F72DC04D875E878D859E850E9420\r
+:102C4000C213811140CF8091B00181608093B001A7\r
+:102C5000C8010E948B101CC0662309F458CF4D8711\r
+:102C60005E878D859E850E94C213882309F44FCF0D\r
+:102C70002ACF811148CF0CC0243031050CF047CF4A\r
+:102C80009F7009F440CFF8019581907F09F03BCF08\r
+:102C90008F2D62960FB6F894DEBF0FBECDBFDF91C9\r
+:102CA000CF911F910F91FF90EF90DF90CF900895FB\r
+:102CB0001F93CF93DF93CDB7DEB72C970FB6F89461\r
+:102CC000DEBF0FBECDBF4F83588769877A878B875A\r
+:102CD0009C87CE0107960E949114882369F08F810A\r
+:102CE00098852A853B85232BF1F19F3F09F063C02E\r
+:102CF0008F3F09F060C037C086E0FE013796DE01E5\r
+:102D0000119601900D928A95E1F76F817885EA8599\r
+:102D1000FB85309741F17F3F11F46F3F21F1209106\r
+:102D20007A0130E0C90101968770992740917901B5\r
+:102D300050E08417950709F447C069837A83FD83BF\r
+:102D4000EC8396E0929FD001939FB00D1124A5587B\r
+:102D5000BE4FFE01319601900D929A95E1F7809356\r
+:102D60007A010E94071416E08091790190917A010E\r
+:102D70008917C1F1189FC001112485589E4F0E94E8\r
+:102D80009114882379F1E09179011E9FF0011124BB\r
+:102D9000E558FE4F40815181628173818481958124\r
+:102DA0000E94F7138091790190E00196877099272E\r
+:102DB00080937901D9CF4F81588569857A858B8534\r
+:102DC0009C850E94F713CFCF0E94BE1310927A0108\r
+:102DD00010927901EBEAF1E086E0DF011D928A951D\r
+:102DE000E9F7C1CF2C960FB6F894DEBF0FBECDBF6A\r
+:102DF000DF91CF911F910895EF92FF920F931F9350\r
+:102E0000CF93DF938C01892B09F46CC0F12CEE2455\r
+:102E1000E394E8012196F8018491843740F48430EA\r
+:102E200008F051C0813081F0823019F15BC08537E4\r
+:102E300009F444C0A8F19CE7980F903708F052C0FD\r
+:102E40008F770E942E1041C00E5F1F4FFE01C4916C\r
+:102E500080E28C0F883048F4C7708E2D01C0880F37\r
+:102E6000CA95EAF70E949A1914C08C2F0E94660F27\r
+:102E70002DC00E5F1F4FFE01C49180E28C0F883081\r
+:102E800058F4C7708E2D01C0880FCA95EAF70E94CA\r
+:102E9000A0190E94C1191AC08C2F0E942E1016C0B2\r
+:102EA0000E5F1F4FFE01C491CC2381F08FE99FE09C\r
+:102EB0000197F1F700C00000C150F6CF0E5F1F4F21\r
+:102EC000FE01F49003C00E94660F8E018F2D8823AF\r
+:102ED00009F49FCFEFE9FFE03197F1F700C0000060\r
+:102EE0008150F5CFDF91CF911F910F91FF90EF901F\r
+:102EF000089508956093B5017093B6018093B7016A\r
+:102F00009093B8010C94AA130F931F930091B501ED\r
+:102F10001091B6012091B7013091B801DC01CB01CD\r
+:102F2000802B912BA22BB32B8093B5019093B601EC\r
+:102F3000A093B701B093B8011F910F910C94AA13FD\r
+:102F40000F931F930091B5011091B6012091B70125\r
+:102F50003091B801DC01CB0180239123A223B3235C\r
+:102F60008093B5019093B601A093B701B093B801D7\r
+:102F70001F910F910C94AA130F931F930091B50109\r
+:102F80001091B6012091B7013091B801DC01CB015D\r
+:102F900080279127A227B3278093B5019093B6018C\r
+:102FA000A093B701B093B8011F910F910C94AA138D\r
+:102FB0001092B1011092B2011092B3011092B401BB\r
+:102FC0000C94AA1341E050E060E070E004C0440FAC\r
+:102FD000551F661F771F8A95D2F74093B101509312\r
+:102FE000B2016093B3017093B4010C94AA1341E051\r
+:102FF00050E060E070E004C0440F551F661F771F6B\r
+:103000008A95D2F78091B1019091B201A091B3015C\r
+:10301000B091B401482B592B6A2B7B2B4093B10103\r
+:103020005093B2016093B3017093B4010C94AA134E\r
+:1030300041E050E060E070E004C0440F551F661F9F\r
+:10304000771F8A95D2F7409550956095709580913D\r
+:10305000B1019091B201A091B301B091B4014823A4\r
+:1030600059236A237B234093B1015093B2016093AB\r
+:10307000B3017093B4010C94AA1341E050E060E0F6\r
+:1030800070E004C0440F551F661F771F8A95D2F762\r
+:103090008091B1019091B201A091B301B091B401BE\r
+:1030A000482759276A277B274093B1015093B201E3\r
+:1030B0006093B3017093B4010C94AA130F931F9300\r
+:1030C0000091B1011091B2012091B3013091B4018E\r
+:1030D000DC01CB01802B912BA22BB32B8093B10170\r
+:1030E0009093B201A093B301B093B4011F910F91DB\r
+:1030F0000C94AA130F931F930091B1011091B20188\r
+:103100002091B3013091B401DC01CB0180239123E4\r
+:10311000A223B3238093B1019093B201A093B30192\r
+:10312000B093B4011F910F910C94AA130F931F93A6\r
+:103130000091B1011091B2012091B3013091B4011D\r
+:10314000DC01CB0180279127A227B3278093B1010F\r
+:103150009093B201A093B301B093B4011F910F916A\r
+:103160000C94AA130895CF92DF92EF92FF920F93DF\r
+:103170001F93CF93DF938C01C090B501D090B6011F\r
+:10318000E090B701F090B8014091B1015091B201C7\r
+:103190006091B3017091B401C42AD52AE62AF72AB6\r
+:1031A000CFE1D0E0D701C6010C2E04C0B695A7959B\r
+:1031B000979587950A94D2F780FF07C0B8018C2FA6\r
+:1031C0000E94FD058130910531F4219758F7B8012F\r
+:1031D00080E00E94FD05DF91CF911F910F91FF903C\r
+:1031E000EF90DF90CF90089590910C01992321F0FA\r
+:1031F00090910D01911109C020910E0130910F01A4\r
+:10320000F90132969FEF40E01FC0982F9695969552\r
+:1032100096959F3050F5E0910E01F0910F01E90F66\r
+:10322000F11D877021E030E0A90102C0440F551F55\r
+:103230008A95E2F7CA019181892B818308959F3F86\r
+:1032400039F04F5F4E3041F051915813F8CF0DC017\r
+:103250005111F7CF942FF5CF9F3F39F0F901E90FC6\r
+:10326000F11D97FDFA9582830895089590910C01C0\r
+:10327000992321F090910D01911109C020910E0127\r
+:1032800030910F01F9013296205F3F4F1FC0982FF8\r
+:103290009695969596959F30F0F4E0910E01F091F9\r
+:1032A0000F01E90FF11D877021E030E0A90102C094\r
+:1032B000440F551F8A95E2F7CA01809591818923B1\r
+:1032C000818308953196E217F30729F090819813CE\r
+:1032D000F9CF1082F7CF089581E090E0E0910E01E0\r
+:1032E000F0910F01E80FF91F1082019680319105CE\r
+:1032F000A9F708959091CC01892B8093CC01089572\r
+:1033000080959091CC0189238093CC0108951092EF\r
+:10331000CC0108959091CB01892B8093CB01089526\r
+:1033200080959091CB0189238093CB0108951092D1\r
+:10333000CB0108959091CA01892B8093CA01089509\r
+:1033400080959091CA0189238093CA0108951092B3\r
+:10335000CA0108958093B90108951092B9010895A2\r
+:1033600080910E0190910F01FC0131969C01205F2C\r
+:103370003F4F80E0919191118F5FE217F307D1F7F2\r
+:103380000895E0910E01F0910F018091CC018083AE\r
+:10339000E0910E01F0910F0190818091CB01892B7A\r
+:1033A0008083E0910E01F0910F0190818091CA011C\r
+:1033B000892B80838091B901882361F0E0910E010F\r
+:1033C000F0910F019081892B80830E94B0198111A7\r
+:1033D0001092B90180910E0190910F010C94490E49\r
+:1033E000CF92DF92EF92FF926C01EE24FF24C11482\r
+:1033F000D104E104F10421F0C701B60120E101C0CC\r
+:1034000020E0C72ED82EE92EFF24C114D104E104F8\r
+:10341000F10419F0285FC701B6016B017C0154E08B\r
+:10342000F694E794D794C7945A95D1F7C114D10470\r
+:10343000E104F10419F02C5FC701B6016B017C01B6\r
+:1034400042E0F694E794D794C7944A95D1F7C11413\r
+:10345000D104E104F10419F02E5FC701B601DC01CB\r
+:10346000CB01B695A79597958795892B8A2B8B2BA2\r
+:1034700009F02F5F822FFF90EF90DF90CF9008959B\r
+:103480008091E601843039F11092CE0120E488E188\r
+:1034900090E00FB6F894A895809360000FBE20933B\r
+:1034A000600080E00E94330783B7817F846083BF20\r
+:1034B00083B7816083BF7894889583B78E7F83BFFD\r
+:1034C0000FB6F894A89580916000886180936000A1\r
+:1034D000109260000FBE089508950895CF930E9442\r
+:1034E0006C1A0E9426040E946D1AC0E08C2F0E9464\r
+:1034F0001405811104C0CF5FCE30C1F701C081E057\r
+:10350000CF9108950E94BE130E943D0E0C94330784\r
+:1035100082E084BD93E095BD9AEF97BD80936E00E5\r
+:1035200008952FB7F8948091CF019091D001A09188\r
+:10353000D101B091D2012FBF0895CF92DF92EF92C7\r
+:10354000FF920F931F932FB7F8944091CF015091A2\r
+:10355000D0016091D1017091D2012FBF6A017B012E\r
+:10356000EE24FF248C0120E030E0C016D106E206F4\r
+:10357000F30610F4415051099A01281B390BC90177\r
+:103580001F910F91FF90EF90DF90CF9008951F92C1\r
+:103590000F920FB60F9211248F939F93AF93BF9307\r
+:1035A0008091CF019091D001A091D101B091D20131\r
+:1035B0000196A11DB11D8093CF019093D001A093DE\r
+:1035C000D101B093D201BF91AF919F918F910F9094\r
+:1035D0000FBE0F901F9018950E943A0BF8942FEF92\r
+:1035E00087EA91E6215080409040E1F700C000005A\r
+:1035F00087E090EBDC018093EF019093F001A093C2\r
+:10360000F101B093F2019CE088E10FB6F894A8951F\r
+:10361000809360000FBE90936000FFCFEF92FF9207\r
+:103620000F931F93CF93DF93D82FC0E08C2F0E946E\r
+:10363000140500E010E0E82EF12CC701002E02C0B6\r
+:10364000959587950A94E2F780FD06C00F5F1F4F9E\r
+:103650000630110591F709C0602F7C2F80E00E9491\r
+:10366000DB05D813F3CF81E004C0CF5FCE30F1F695\r
+:1036700080E0DF91CF911F910F91FF90EF9008951F\r
+:10368000CF93C82F8CE20E940E1B882321F08C2F31\r
+:10369000CF910C940E1B80E0CF910895CF930E94A0\r
+:1036A000951C811102C00E947B1CC5E6C15049F0E7\r
+:1036B0000E9426048FE39CE90197F1F700C0000007\r
+:1036C000F5CF89E20E94401B811113C18AE20E945A\r
+:1036D000401B81110E947B1C85E00E94401B8111D0\r
+:1036E0000E94EC1A0E94A01C8093CD0187E00E94EA\r
+:1036F000401B8823A9F18BE10E94401B882351F0D5\r
+:103700008091CD0181FB222720F991E0922790FB47\r
+:1037100081F90EC08EE00E94401B882361F08091E9\r
+:10372000CD0182FB222720F991E0922790FB82F9BC\r
+:103730008093CD0115C080E10E94401B9091CD0186\r
+:10374000882341F093FB222720F981E0822780FB28\r
+:1037500093F904C0892F809580FB90F99093CD0157\r
+:103760008091CD010E94A41C0E94B21C8093E001B4\r
+:1037700080EE0E94401B882341F08091E001982F49\r
+:10378000909590FB80F98093E00189E30E94401BB3\r
+:10379000882359F08091E00181FB222720F991E0F4\r
+:1037A000922790FB81F98093E00182EE0E94401BFA\r
+:1037B000882359F08091E00182FB222720F991E0D3\r
+:1037C000922790FB82F98093E00186EE0E94401BD5\r
+:1037D000882359F08091E00183FB222720F991E0B2\r
+:1037E000922790FB83F98093E00183EE0E94401BB7\r
+:1037F000882359F08091E00184FB222720F991E091\r
+:10380000922790FB84F98093E00185E30E94401B9E\r
+:10381000882359F08091E00185FB222720F991E06F\r
+:10382000922790FB85F98093E00181E30E94401B81\r
+:10383000882359F08091E00186FB222720F991E04E\r
+:10384000922790FB86F98093E00181E10E94401B62\r
+:10385000882359F08091E00187FB222720F991E02D\r
+:10386000922790FB87F98093E0018091E0010E940C\r
+:10387000B61C8091E00187FB882780F980930D01B9\r
+:1038800087E20E94401BC82F8EE10E94401B8111DD\r
+:10389000C2608FE10E94401B8111C46080E20E94DF\r
+:1038A000401B8111C86081E20E94401B8111C061F0\r
+:1038B00082E20E94401B8111C06283E20E94401B91\r
+:1038C0008111C06484E20E94401B882311F0C0680B\r
+:1038D00002C0CC2329F08C2F0E94AD1C6C2F03C09A\r
+:1038E0000E94A91C682F70E080E090E0CF910C94BA\r
+:1038F0007A17CF9108956DEE7EEF80E090E00E9400\r
+:10390000F52260E082E090E00E94E72260E083E040\r
+:1039100090E00E94E72260E084E090E00E94E722CD\r
+:1039200060E085E090E00C94E72280E090E00E9467\r
+:10393000E12221E08D3E9E4F09F020E0822F089584\r
+:1039400082E090E00C94D922682F82E090E00C9401\r
+:10395000E72283E090E00C94D922682F83E090E086\r
+:103960000C94E72284E090E00C94D922682F84E044\r
+:1039700090E00C94E7228091D50180FF0BC060910C\r
+:10398000130185E0689FB0011124759567957595C1\r
+:1039900067952BC081FF09C06091130185E0689F86\r
+:1039A000B00111247595679520C082FF07C0609112\r
+:1039B000130185E0689FB001112417C09091D601D2\r
+:1039C0009923D1F060911201961788F72091130185\r
+:1039D00085E0289F90011124929FA001939F500D94\r
+:1039E000112470E0CA010E94AB226038710540F4D6\r
+:1039F0006115710539F002C065E070E0862F089509\r
+:103A00008FE7089581E008958091D50180FF08C077\r
+:103A10006091110170E0759567957595679521C066\r
+:103A200081FF06C06091110170E07595679519C01E\r
+:103A300082FF04C06091110170E010C09091D60126\r
+:103A40009923C1F0609110019617A0F780911101A0\r
+:103A5000899FC001112470E00E94AB22603871057B\r
+:103A600028F46115710521F0862F08958FE70895D8\r
+:103A700081E0089561E070E0F4CF803F21F40E947E\r
+:103A8000BB1C819504C0813F29F40E94BB1C80931C\r
+:103A9000D9010895823F21F40E94BB1C819504C086\r
+:103AA000833F29F40E94BB1C8093D8010895893F6D\r
+:103AB00019F40E94041D05C08A3F31F40E94041DC0\r
+:103AC00081958093DA0108958B3F21F40E94041DB3\r
+:103AD000819504C08C3F29F40E94041D8093DB0172\r
+:103AE0000895843F21F48091D701816017C0853FFC\r
+:103AF00021F48091D701826011C0863F21F480912A\r
+:103B0000D70184600BC0873F21F48091D701886082\r
+:103B100005C0883F31F48091D70180618093D7013F\r
+:103B200008958D3F21F48091D50181600BC08E3FB7\r
+:103B300021F48091D501826005C08F3F29F48091E6\r
+:103B4000D50184608093D5010895803F39F4809138\r
+:103B5000D90187FF6CC01092D90169C0813F29F457\r
+:103B60008091D9011816BCF362C09091D801823FB0\r
+:103B700029F497FF5CC01092D80159C0833F19F413\r
+:103B80001916CCF354C0893F41F48091DA0118161C\r
+:103B90000CF04DC01092DA014AC08A3F29F480919E\r
+:103BA000DA0187FF44C0F6CF8B3F39F48091DB0107\r
+:103BB00087FF3DC01092DB013AC08C3F29F4809111\r
+:103BC000DB011816BCF333C0843F21F48091D70188\r
+:103BD0008E7F17C0853F21F48091D7018D7F11C062\r
+:103BE000863F21F48091D7018B7F0BC0873F21F462\r
+:103BF0008091D701877F05C0883F31F48091D7013C\r
+:103C00008F7E8093D70113C08D3F21F48091D50121\r
+:103C10008E7F0BC08E3F21F48091D5018D7F05C032\r
+:103C20008F3F29F48091D5018B7F8093D5018091BE\r
+:103C3000D80181110EC08091D90181110AC08091F3\r
+:103C4000DA01811106C08091DB01811102C010925E\r
+:103C5000D601089587ED91E00E94540E0E94911ABA\r
+:103C60009093D4018093D30108951F93CF93DF9352\r
+:103C70008091D3019091D4010E949D1AAC01909142\r
+:103C8000D601992321F02091140130E006C0209143\r
+:103C900015018AE0289F900111244217530708F468\r
+:103CA00085C08091D801C091D901D091DA011091DD\r
+:103CB000DB01811107C0C11175C0D11173C0111191\r
+:103CC00071C074C09F3F19F09F5F9093D601181682\r
+:103CD00024F40E94BB1C8093D8018091D80187FFF7\r
+:103CE00005C00E94BB1C81958093D8011C1624F44A\r
+:103CF0000E94BB1C8093D9018091D90187FF05C028\r
+:103D00000E94BB1C81958093D9016091D8016623E4\r
+:103D100031F1C091D901CC2311F1062E000C770BA3\r
+:103D2000880B990B0E94B22123E333E343E35FE363\r
+:103D30000E9416220E947A216093D8016C2FCC0F2A\r
+:103D4000770B880B990B0E94B22123E333E343E303\r
+:103D50005FE30E9416220E947A216093D9011D160A\r
+:103D600024F40E94041D8093DA018091DA0187FF18\r
+:103D700005C00E94041D81958093DA01111624F478\r
+:103D80000E94041D8093DB018091DB0187FF05C049\r
+:103D90000E94041D81958093DB01DF91CF911F91DB\r
+:103DA0000C942A1E9F3F09F08FCF97CFDF91CF91C0\r
+:103DB0001F910895E7EDF1E085E0DF011D928A95FE\r
+:103DC000E9F71092D6011092D5010895833081F160\r
+:103DD00028F4813059F08230D1F00895853009F40B\r
+:103DE00049C0B8F1863009F456C008958091150194\r
+:103DF000262F30E0280F311D2F3F310524F4680FA6\r
+:103E00006093150108958FEF8093150108958091B7\r
+:103E10001401262F30E0280F311D2F3F310524F4E7\r
+:103E2000680F6093140108958FEF80931401089533\r
+:103E300080911301262F30E0280F311D2F3F3105CF\r
+:103E400024F4680F6093130108958FEF809313019A\r
+:103E5000089580911201262F30E0280F311D2F3F49\r
+:103E6000310524F4680F6093120108958FEF809359\r
+:103E70001201089580911101262F30E0280F311D85\r
+:103E80002F3F310524F4680F6093110108958FEFDF\r
+:103E900080931101089580911001262F30E0280FA2\r
+:103EA000311D2F3F310524F4680F609310010895F0\r
+:103EB0008FEF809310010895833011F128F4813041\r
+:103EC00049F0823091F00895853081F120F18630FB\r
+:103ED000C1F1089580911501681720F4861B809325\r
+:103EE0001501089510921501089580911401681725\r
+:103EF00020F4861B809314010895109214010895F4\r
+:103F000080911301681720F4861B80931301089594\r
+:103F100010921301089580911201681720F4861BF6\r
+:103F20008093120108951092120108958091110159\r
+:103F3000681720F4861B80931101089510921101D7\r
+:103F4000089580911001681720F4861B809310015A\r
+:103F500008951092100108950F931F938D3109F465\r
+:103F60006AC008F03FC08E3009F484C0C0F48730C6\r
+:103F700009F46DC068F4863009F0B5C08091CD01B8\r
+:103F8000817F8E7F8093CD0181E08093DD01ACC085\r
+:103F9000883009F457C08B3009F46AC0A4C0863158\r
+:103FA00009F466C078F4803109F477C0813109F0F2\r
+:103FB0009AC00E94BE1390910D0181E089278093E1\r
+:103FC0000D0156C0893109F453C08B3109F08BC003\r
+:103FD0008091CD0181FB222720F991E0922790FB6F\r
+:103FE00081F951C0853309F475C048F4873209F46A\r
+:103FF00071C008F45EC0893209F46CC074C08334A7\r
+:1040000030F48A3308F053C0883391F16CC08334A4\r
+:1040100009F460C0883409F066C00E94BE130FEF37\r
+:1040200013ED20E3015010402040E1F700C00000F4\r
+:104030000E94EC1A1DC00E9434210E943D0E0E9475\r
+:10404000330716C00E94A01C0E94B21C11C09091A0\r
+:10405000CD01892F8095817080FB90F929F09660C1\r
+:1040600098609093CD0140C0997F977F9093CD0148\r
+:1040700081E03AC08091CD0182FB222720F991E0B6\r
+:10408000922790FB82F98093CD01992389F3809147\r
+:10409000CD0181608093CD01EBCF8091CD0183FB79\r
+:1040A000222720F991E0922790FB83F9ECCF8953E6\r
+:1040B00001C08D5141E050E060E070E08A019B0159\r
+:1040C00004C0000F111F221F331F8A95D2F7C901A8\r
+:1040D000B80104C061E070E080E090E00E947A17CF\r
+:1040E0000E94BE13C5CF80E01F910F91089580E01C\r
+:1040F000089580E00895CF93C82F8091DD0181302D\r
+:1041000079F018F08230E9F187C0E0910E01F0916A\r
+:104110000F018081813169F0823209F07FC009C0CE\r
+:10412000E0910E01F0910F018081813111F0823216\r
+:1041300061F48C2F0E947720811104C08C2F0E9483\r
+:10414000AC1F1DC081E090E01AC08C2F0E94792026\r
+:10415000811114C0C43179F048F4CB3079F0C0310A\r
+:1041600009F060C082E08093DD0108C0C93219F017\r
+:10417000C83321F057C01092DD0154C081E0817036\r
+:1041800053C0C93289F118F5C43171F1A8F4C730B0\r
+:1041900009F046C08AE08093150194E190931401E0\r
+:1041A00093E0909313018093120188E080931101B2\r
+:1041B00088E28093100134C0CE51C63088F5EC2FD0\r
+:1041C000F0E0E65DFE4F80818093DC0129C0CE34B3\r
+:1041D000E9F020F4CB3421F56AE013C0C13579F061\r
+:1041E000C235F1F461E00DC08091DC01882319F043\r
+:1041F0001092DC0115C081E08093DD0115C061E003\r
+:1042000006C08091DC010E94E61E0AC06AE080912F\r
+:10421000DC010E945C1F04C01092DD0180E004C03C\r
+:1042200081E002C080E0ABCFCF910895E1E8F0E0FB\r
+:104230008081886080838081816080838FB7F894DB\r
+:1042400093E09093890090ED909388008FBF08953C\r
+:10425000EFE6F0E08081826080830895EFE6F0E091\r
+:1042600080818D7F80830895EFE6F0E0908182E089\r
+:104270008927808308951F920F920FB60F92112401\r
+:104280002F933F934F935F936F937F938F939F935E\r
+:10429000AF93BF93EF93FF938091DE019091DF0185\r
+:1042A00001969093DF018093DE01811103C082E0CB\r
+:1042B0000E943307E091DF01E695E695F0E0E657CE\r
+:1042C000FB4FE4918091DE018E1303C080E00E94D9\r
+:1042D0003307FF91EF91BF91AF919F918F917F91A4\r
+:1042E0006F915F914F913F912F910F900FBE0F9063\r
+:1042F0001F9018950E9481216894B1110C9410228E\r
+:1043000008950E94F52188F09F5798F0B92F9927BA\r
+:10431000B751B0F0E1F0660F771F881F991F1AF0B0\r
+:10432000BA95C9F714C0B13091F00E940F22B1E0E4\r
+:1043300008950C940F22672F782F8827B85F39F0E3\r
+:10434000B93FCCF3869577956795B395D9F73EF449\r
+:1043500090958095709561957F4F8F4F9F4F0895F1\r
+:10436000E89409C097FB3EF490958095709561950F\r
+:104370007F4F8F4F9F4F9923A9F0F92F96E9BB27C5\r
+:104380009395F695879577956795B795F111F8CF41\r
+:10439000FAF4BB0F11F460FF1BC06F5F7F4F8F4FAC\r
+:1043A0009F4F16C0882311F096E911C0772321F0A2\r
+:1043B0009EE8872F762F05C0662371F096E8862F3A\r
+:1043C00070E060E02AF09A95660F771F881FDAF791\r
+:1043D000880F9695879597F9089557FD9058440F43\r
+:1043E000551F59F05F3F71F04795880F97FB991F54\r
+:1043F00061F09F3F79F08795089512161306140611\r
+:10440000551FF2CF4695F1DF08C01616170618069D\r
+:10441000991FF1CF86957105610508940895E89478\r
+:10442000BB2766277727CB0197F908950E94292299\r
+:104430000C949A220E948C2238F00E94932220F041\r
+:10444000952311F00C9483220C94892211240C944E\r
+:1044500010220E94ED2170F3959FC1F3950F50E05B\r
+:10446000551F629FF001729FBB27F00DB11D639F26\r
+:10447000AA27F00DB11DAA1F649F6627B00DA11DCC\r
+:10448000661F829F2227B00DA11D621F739FB00D72\r
+:10449000A11D621F839FA00D611D221F749F3327E2\r
+:1044A000A00D611D231F849F600D211D822F762F7B\r
+:1044B0006A2F11249F5750409AF0F1F088234AF058\r
+:1044C000EE0FFF1FBB1F661F771F881F91505040C4\r
+:1044D000A9F79E3F510580F00C9483220C94102282\r
+:1044E0005F3FE4F3983ED4F3869577956795B7954B\r
+:1044F000F795E7959F5FC1F7FE2B880F911D969565\r
+:10450000879597F9089597F99F6780E870E060E0D4\r
+:1045100008959FEF80EC089500240A94161617065C\r
+:1045200018060906089500240A94121613061406A4\r
+:1045300005060895092E0394000C11F4882352F007\r
+:10454000BB0F40F4BF2B11F460FF04C06F5F7F4FBF\r
+:104550008F4F9F4F089597FB072E16F4009407D0B6\r
+:1045600077FD09D00E94C52207FC05D03EF4909546\r
+:1045700081959F4F0895709561957F4F0895EE0F37\r
+:10458000FF1F0590F491E02D0994AA1BBB1B51E17C\r
+:1045900007C0AA1FBB1FA617B70710F0A61BB70BB3\r
+:1045A000881F991F5A95A9F780959095BC01CD0158\r
+:1045B0000895F999FECF92BD81BDF89A992780B5EB\r
+:1045C0000895A8E1B0E042E050E00C94FC22262FD0\r
+:1045D000F999FECF1FBA92BD81BD20BD0FB6F894E8\r
+:1045E000FA9AF99A0FBE019608950E94E722272FA2\r
+:1045F0000C94E822DC01CB01FC01F999FECF06C046\r
+:10460000F2BDE1BDF89A319600B40D924150504090\r
+:08461000B8F70895F894FFCFFC\r
+:1046180020023507C307A0076C0738070101BA0154\r
+:1046280028080A03140A3F4D36394B04FE03C80311\r
+:104638008F0322033B0354036D03010203040506A1\r
+:044648000708090056\r
+:00000001FF\r
diff --git a/keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/keyboard-layout0.png b/keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/keyboard-layout0.png
new file mode 100644 (file)
index 0000000..6a36f9b
Binary files /dev/null and b/keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/keyboard-layout0.png differ
diff --git a/keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/keyboard-layout1.png b/keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/keyboard-layout1.png
new file mode 100644 (file)
index 0000000..c6e6d91
Binary files /dev/null and b/keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/keyboard-layout1.png differ
diff --git a/keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/keyboard-layout2.png b/keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/keyboard-layout2.png
new file mode 100644 (file)
index 0000000..23f56ff
Binary files /dev/null and b/keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/keyboard-layout2.png differ
diff --git a/keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/keymap.c b/keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/keymap.c
new file mode 100644 (file)
index 0000000..82f55b4
--- /dev/null
@@ -0,0 +1,185 @@
+#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  | BrBck|           | Play |   6  |   7  |   8  |   9  |   0  | \ / L2 |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * | Esc    |   '  |   ,  |   .  |   P  |   Y  | Del  |           | Ins  |   F  |   G  |   C  |   R  |   L  |   /    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * | BkSp   |   A  |   O  |   E  |   U  |   I  |------|           |------|   D  |   H  |   T  |   N  |   S  |   -    |
+ * |--------+------+------+------+------+------| Hyper|           | Meh  |------+------+------+------+------+--------|
+ * | LShift |:/Ctrl|   Q  |   J  |   K  |   X  |      |           |      |   B  |   M  |   W  |   V  |Z/Ctrl| RShift |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |Grv/L1| LAlt | LGui | Left | Right|                                       |  Up  | Down |   [  |   ]  | ~L1  |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,---------------.
+ *                                        | App  | L1   |       | L2   |PrntScr |
+ *                                 ,------|------|------|       |------+--------+------.
+ *                                 |      |      | Home |       | PgUp |        |      |
+ *                                 | Space| Tab  |------|       |------| AltShf |Enter |
+ *                                 |      |      | 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_WBAK,
+        KC_ESC,         KC_QUOT,        KC_COMM, KC_DOT, KC_P,   KC_Y,   KC_DELT,
+        KC_BSPC,        KC_A,           KC_O,    KC_E,   KC_U,   KC_I,
+        KC_LSFT,        CTL_T(KC_SCLN), KC_Q,    KC_J,   KC_K,   KC_X,   ALL_T(KC_NO),
+        LT(SYMB,KC_GRV),KC_LALT,      KC_LGUI,  KC_LEFT,KC_RGHT,
+                                              CTL_T(KC_APP),  TG(1),
+                                                              KC_HOME,
+                                               KC_SPC,KC_TAB,KC_END,
+        // right hand
+             KC_MPLY,      KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             LT(MDIA, KC_BSLS),
+             KC_INS,       KC_F,   KC_G,   KC_C,   KC_R,   KC_L,             KC_SLSH,
+                          KC_D,   KC_H,   KC_T,   KC_N,   KC_S,             KC_MINS,
+             MEH_T(KC_NO),KC_B,   KC_M,   KC_W,   KC_V,   CTL_T(KC_Z),      KC_RSFT,
+                                  KC_UP,  KC_DOWN,KC_LBRC,KC_RBRC,          KC_FN1,
+             TG(2),        KC_PSCREEN,
+             KC_PGUP,
+             KC_PGDN,RALT(KC_RSFT), KC_ENT
+    ), 
+/* Keymap 1: Symbol & Media Layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      | Prev | Next |                                       |      |    . |   0  |   =  |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |VolUp |      |      |
+ *                                 |      |      |------|       |------| Mute |      |
+ *                                 |      |      |      |       |VolDn |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// 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_MPRV,KC_MNXT,
+                                       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_VOLU,
+       KC_VOLD, KC_MUTE, KC_TRNS
+),
+/* Keymap 2: QWERTY Layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |   Q  |   W  |   E  |   R  |   T  |      |           |      |   Y  |   U  |   I  |   O  |   P  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   ;  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |Z/Ctrl|   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |//Ctrl|        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |      |      |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// MEDIA AND MOUSE
+KEYMAP(  // layer 0 : default
+        // left hand
+        KC_TRNS,        KC_TRNS,      KC_TRNS,   KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+        KC_TRNS,        KC_Q,         KC_W,      KC_E,   KC_R,   KC_T,   KC_TRNS,
+        KC_TRNS,        KC_A,         KC_S,      KC_D,   KC_F,   KC_G,
+        KC_TRNS,        CTL_T(KC_Z),  KC_X,      KC_C,   KC_V,   KC_B,   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_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,          KC_TRNS,
+        KC_TRNS,     KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,             KC_TRNS,
+                     KC_H,   KC_J,   KC_K,   KC_L,   LT(MDIA, KC_SCLN),KC_TRNS,
+        KC_TRNS,     KC_N,   KC_M,   KC_COMM,KC_DOT, CTL_T(KC_SLSH),   KC_TRNS,
+                             KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,          KC_TRNS,
+        KC_TRNS, KC_TRNS,
+        KC_TRNS,
+        KC_TRNS, KC_TRNS, KC_TRNS
+    ),
+};
+
+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;
+    }
+
+};
index b31d0edcdf2d5f69008c7f3cae06b4cc90c0fdcc..dffcb21da3db485d84fa30f05160419b0fc40d61 100644 (file)
 #define M_CTRL_CMDV 1
 #define M_CTRL_CMDC 2
 #define M_MEH_SH_ACUT 3
-#define M_DE_PLUS_CTRLALT 12
-#define M_DE_CIRC_CTRLCMD 13
+#define M_DE_OSX_PLUS_CTRLALT 12
+#define M_DE_OSX_CIRC_CTRLCMD 13
 #define M_TOGGLE_5 14
+#define M_CTL_SFT_HASH 15
+#define M_LGUI_SHFT 16
 
 #define SM_SMILE 4
 #define SM_SMIRK 5
 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 /* Keymap 0: Basic layer
  *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |  ESC   |   1  |   2  |   3  |   4  |   5  |CMD-V |           |CMD-C |   6  |   7  |   8  |   9  |   0  |   ß    |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |  TAB   |   Q  |   W  |   E  |   R  |   T  | CMD  |           | CMD  |   Z  |   U  |   I  |   O  |   P  |   ü    |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |  LALT  |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   ö  |  ä/RALT|
- * |--------+------+------+------+------+------| LALT |           | RALT |------+------+------+------+------+--------|
- * | LShift |Y/Ctrl|   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |-/Ctrl| RShift |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |</L1|  ^°  |AltShf| Left | Right|                                       |  Up  | Down | CMD-SHIFT |  +  | #/L1 |
- *   `----------------------------------'                                       `----------------------------------'
+ * ,-----------------------------------------------------.           ,--------------------------------------------------.
+ * |  ESC   |   1  |   2  |   3  |   4  |   5  |CTL_SFT/#|           |CTL_SFT/#|   6  |   7  |   8  |   9  |   0  |   ß    |
+ * |--------+------+------+------+------+----------------|           |---------+------+------+------+------+------+--------|
+ * |  TAB   |   Q  |   W  |   E  |   R  |   T  | CMD     |           | CMD     |   Z  |   U  |   I  |   O  |   P  |   ü    |
+ * |--------+------+------+------+------+------|         |           |         |------+------+------+------+------+--------|
+ * |  LALT  |   A  |   S  |   D  |   F  |   G  |---------|           |---------|   H |   J  |   K  |   L  |   ö  |  ä/RALT|
+ * |--------+------+------+------+------+------| LALT    |           | RALT    |------+------+------+------+------+--------|
+ * | LShift |Y/Ctrl|   X  |   C  |   V  |   B  |         |           |         |   N  |   M  |   ,  |   .  |-/Ctrl| RShift |
+ * `--------+------+------+------+------+----------------'           `-------------+------+------+------+------+--------'
+ *   |</L1| ^°/CTRL_CMD | +/CTRL_ALT | UP | DOWN|                    |  Left  | Right | CMD-SHFT| ALT-SHIFT  | +/L1 |
+ *   `------------------------------------------'                    `---------------------------------------------'
  *                                        ,-------------.       ,---------------.
- *                                        | MDIA | Meh  |       | Hyper|  NUM   |
+ *                                        |`/Meh | Media|       | NUM | ´/Hyper |
  *                                 ,------|------|------|       |------+--------+------.
  *                                 |      |      | Home |       | PgUp |        |      |
  *                                 | Back-|  Del |------|       |------|  Enter | Space|
@@ -53,21 +55,21 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 // Otherwise, it needs KC_*
 [BASE] = KEYMAP(  // layer 0 : default
         // left hand
-        KC_ESC,                  DE_1,         DE_2,   DE_3,   DE_4,   DE_5,   M(M_CTRL_CMDV),
-        KC_TAB,                  DE_Q,         DE_W,   DE_E,   DE_R,   DE_T,   KC_LGUI,
-        KC_LALT,                   DE_A,         DE_S,   DE_D,   DE_F,   DE_G,
-        KC_LSFT,                 CTL_T(DE_Y),  DE_X,   DE_C,   DE_V,   DE_B,   KC_LALT,
-        LT(SYMB,DE_LESS),        M(M_DE_CIRC_CTRLCMD),      M(M_DE_PLUS_CTRLALT), LALT(KC_LSFT),  LGUI(KC_LSFT),
-                                                                               M(M_MEH_SH_ACUT),       TG(2),
+        KC_ESC,                  DE_OSX_1,         DE_OSX_2,   DE_OSX_3,   DE_OSX_4,   DE_OSX_5,   M(M_CTL_SFT_HASH),
+        KC_TAB,                  DE_OSX_Q,         DE_OSX_W,   DE_OSX_E,   DE_OSX_R,   DE_OSX_T,   KC_LGUI,
+        KC_LALT,                 DE_OSX_A,         DE_OSX_S,   DE_OSX_D,   DE_OSX_F,   DE_OSX_G,
+        KC_LSFT,                 CTL_T(DE_OSX_Y),  DE_OSX_X,   DE_OSX_C,   DE_OSX_V,   DE_OSX_B,   KC_LALT,
+        LT(SYMB,DE_OSX_LESS),        M(M_DE_OSX_CIRC_CTRLCMD),      M(M_DE_OSX_PLUS_CTRLALT), KC_UP,  KC_DOWN,
+                                                                               M(M_MEH_SH_ACUT),       TG(MDIA),
                                                                                                KC_HOME,
                                                                                KC_BSPC,KC_DEL,         LT(SMLY,KC_END),
         // right hand
-             M(M_CTRL_CMDC),  DE_6,   DE_7,   DE_8,   DE_9,   DE_0,            DE_SS,
-             KC_RGUI,     DE_Z,   DE_U,   DE_I,   DE_O,   DE_P,                DE_UE,
-                          DE_H,   DE_J,   DE_K,   DE_L,   DE_OE,               ALT_T(DE_AE),
-             KC_RALT,    DE_N,   DE_M,   DE_COMM,DE_DOT, CTL_T(DE_MINS),       KC_RSFT,
-                                  KC_LEFT,  KC_UP,KC_DOWN,KC_RIGHT,        LT(SYMB,DE_HASH),
-             TG(4),      ALL_T(DE_ACUT),
+             M(M_CTL_SFT_HASH),  DE_OSX_6,  DE_OSX_7,   DE_OSX_8,   DE_OSX_9,   DE_OSX_0,   DE_OSX_SS,
+             KC_RGUI,     DE_OSX_Z,   DE_OSX_U,   DE_OSX_I,   DE_OSX_O,   DE_OSX_P,            DE_OSX_UE,
+                          DE_OSX_H,   DE_OSX_J,   DE_OSX_K,   DE_OSX_L,   DE_OSX_OE,           ALT_T(DE_OSX_AE),
+             KC_RALT,    DE_OSX_N,   DE_OSX_M,   DE_OSX_COMM,DE_OSX_DOT, CTL_T(DE_OSX_MINS),           KC_RSFT,
+                                  KC_LEFT,  KC_RIGHT,LGUI(KC_LSFT),LALT(KC_LSFT),        LT(SYMB,DE_OSX_PLUS),
+             TG(NUMB),   ALL_T(DE_OSX_ACUT),
              KC_PGUP,
              KC_PGDN,KC_ENT, KC_SPC
     ),
@@ -76,42 +78,42 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * ,--------------------------------------------------.           ,--------------------------------------------------.
  * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |  L5  |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
  * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |  <   |  >   |   !  |  ?   |      |      |           |      |   \  |   [  |   ]  |   |  |   #  |   F12  |
+ * |        |  <   |  >   |   !  |  ?   |      |      |           |      |   \  |   [  |   ]  |   <  |   >  |   !    |
  * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   #  |   $  |   \  |   /  |   .  |------|           |------|   /  |   (  |   )  |   {  |   }  |        |
+ * |        |   #  |   $  |   \  |   /  |   .  |------|           |------|   /  |   (  |   )  |   {  |   }  |   #    |
  * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |   ^  |   %  |   |  |   ~  |      |           |      |   &  |   <  |   >  |   "  |   '  |    ?   |
+ * |        |      |   ^  |   %  |   |  |   ~  |      |           |      |   |  |   ~  |  ^   |   UP |      |   $    |
  * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |      |      |   .  |   !  |      |
+ *   |      |      |      |      |      |                                       |   '  |  LEFT| DOWN  | RIGHT |    |
  *   `----------------------------------'                                       `----------------------------------'
  *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
+ *                                        |      |      |       | F13  |  F12 |
  *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |      |       | F14  |      |      |
  *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |      |       | F15  |      |      |
  *                                 `--------------------'       `--------------------'
  */
 // SYMBOLS
 [SYMB] = KEYMAP(
        // left hand
        KC_TRNS,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
-       KC_TRNS,DE_LESS,DE_MORE,DE_EXLM,DE_QST, KC_TRNS,KC_TRNS,
-       KC_TRNS,DE_HASH,DE_DLR, DE_BSLS,DE_SLSH,KC_DOT,
-       KC_TRNS,KC_TRNS,DE_LESS,DE_PERC,DE_PIPE,DE_TILD,KC_TRNS,
+       KC_TRNS,DE_OSX_LESS,DE_OSX_MORE,DE_OSX_EXLM,DE_OSX_QST, KC_TRNS,KC_TRNS,
+       KC_TRNS,DE_OSX_HASH,DE_OSX_DLR, DE_OSX_BSLS,DE_OSX_SLSH,KC_DOT,
+       KC_TRNS,KC_TRNS,DE_OSX_LESS,DE_OSX_PERC,DE_OSX_PIPE,DE_OSX_TILD,KC_TRNS,
        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
                                        KC_TRNS,KC_TRNS,
                                                KC_TRNS,
                                KC_TRNS,KC_DEL,KC_TRNS,
        // right hand
-       M(M_TOGGLE_5), KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
-       KC_TRNS, LALT(LSFT(KC_7)),   LALT(KC_5),   LALT(KC_6),    LALT(KC_7),    DE_HASH, KC_F12,
-                DE_SLSH,   DE_LPRN,   DE_RPRN,    LALT(KC_8),    LALT(KC_9), KC_TRNS,
-       KC_TRNS, DE_AMPR, KC_GRV,   LSFT(KC_GRV),    DE_DQOT,    DE_QUOT, DE_QST,
-                         KC_TRNS,KC_DOT,  KC_EXLM,    KC_TRNS,  KC_TRNS,
-       KC_TRNS, KC_TRNS,
-       KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
+       M(M_TOGGLE_5), KC_F6, KC_F7,   KC_F8,  KC_F9,   KC_F10,   KC_F11,
+       KC_TRNS, LALT(LSFT(KC_7)),   LALT(KC_5),   LALT(KC_6),    DE_OSX_LESS,    DE_OSX_MORE, DE_OSX_EXLM,
+                DE_OSX_SLSH,              DE_OSX_LPRN,   DE_OSX_RPRN,    LALT(KC_8),    LALT(KC_9),  DE_OSX_HASH,
+       KC_TRNS, DE_OSX_PIPE, DE_OSX_TILD,  DE_OSX_CIRC,    KC_UP, DE_OSX_MINS,  LSFT(KC_4),
+                         DE_OSX_QUOT,   KC_LEFT,  KC_DOWN,    KC_RIGHT,  KC_TRNS,
+       KC_F13, KC_F12,
+       KC_F14,
+       KC_F15, KC_TRNS, KC_TRNS
 ),
 /* Keymap 2: Media and mouse keys
  *
@@ -135,7 +137,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_BTN1, KC_MS_U, KC_BTN2, KC_WH_U, KC_TRNS,
        KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D,
@@ -177,7 +179,7 @@ KEYMAP(
  *                                 |      |      |      |       |      |        |      |
  *                                 `--------------------'       `----------------------'
  */
-KEYMAP(
+[SMLY] = KEYMAP(
        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_TRNS,
@@ -197,7 +199,7 @@ KEYMAP(
        KC_TRNS, KC_TRNS, KC_TRNS
 ),
 //number pad
-KEYMAP(
+[NUMB] = KEYMAP(
        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_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS,
@@ -209,9 +211,9 @@ KEYMAP(
        // 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,    LSFT(KC_RBRC), KC_F12,
-                KC_DOWN, KC_4,   KC_5,    KC_6,    KC_RBRC, DE_MINS,
+                KC_DOWN, KC_4,   KC_5,    KC_6,    KC_RBRC, DE_OSX_MINS,
        KC_TRNS, LSFT(KC_6), KC_1,   KC_2,    KC_3,    LSFT(KC_7), KC_TRNS,
-                         KC_0,KC_DOT,  KC_0,    DE_EQL,  KC_TRNS,
+                         KC_0,KC_DOT,  KC_COMM,    DE_OSX_EQL,  KC_TRNS,
        KC_TRNS, KC_TRNS,
        KC_TRNS,
        KC_TRNS, KC_TRNS, KC_TRNS
@@ -238,7 +240,7 @@ KEYMAP(
  *                                 |      |      |  F4  |       |      |        |      |
  *                                 `--------------------'       `----------------------'
  */
-KEYMAP(
+[EGOS] = KEYMAP(
        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_LSFT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
@@ -308,11 +310,30 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
                        if (timer_elapsed(start) > 150){
                                return MACRO(U(LCTRL),U(LSFT),U(LALT),END);
                        } else {
-                               return MACRO(U(LCTRL),U(LALT),T(EQL),U(LSFT),END); //cannot use DE_ACUT here, as macro needs KC_ prefix
+                               return MACRO(U(LCTRL),U(LALT),T(EQL),U(LSFT),END); //cannot use DE_OSX_ACUT here, as macro needs KC_ prefix
                        }
                }
                break;
-       case M_DE_CIRC_CTRLCMD:
+       case M_LGUI_SHFT:
+               if (record->event.pressed){
+                       return MACRO(D(LGUI),D(LSFT),END);
+               }else{
+                       return MACRO(U(LGUI),U(LSFT),END);
+               }
+               break;
+       case M_CTL_SFT_HASH:
+               if (record->event.pressed) {
+                       start=timer_read(); 
+                       return MACRO(D(LCTRL),D(LSFT),END); 
+               } else {
+                       if (timer_elapsed(start) > 150){
+                               return MACRO(U(LCTRL),U(LSFT),END);
+                       } else {
+                               return MACRO(U(LCTRL),U(LSFT),T(BSLS),END);
+                       }
+               }
+               break;  
+       case M_DE_OSX_CIRC_CTRLCMD:
                if (record->event.pressed) {
                        start = timer_read();
                        return MACRO(D(LCTRL),D(LGUI),END);
@@ -324,7 +345,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
                        }
                }
                break;
-       case M_DE_PLUS_CTRLALT:
+       case M_DE_OSX_PLUS_CTRLALT:
                if (record->event.pressed) {
                        start = timer_read();
                        return MACRO(D(LCTRL),D(LALT),END);
index fde7201c10c35a117c1664f94d25bf2f66baf7e1..c7cb8d8630ae47fb0c2b8d9ba9ed35c11b6232de 100644 (file)
-:100000000C94F0030C9437040C9437040C943704CC\r
-:100010000C9437040C9437040C9437040C94370474\r
-:100020000C9437040C9437040C94370E0C94090F7D\r
-:100030000C9437040C9437040C9437040C94370454\r
-:100040000C9437040C947D230C9437040C943704DF\r
-:100050000C9437040C940F1D0C9437040C94370443\r
-:100060000C9437040C9437040C9437040C94370424\r
-:100070000C9437040C9437040C9437040C94370414\r
-:100080000C9437040C9437040C9437040C94370404\r
-:100090000C9437040C9437040C9437040C943704F4\r
-:1000A0000C9437040C9437040C943704470451041F\r
-:1000B00069048104C904CF04F004D504EB04E1040D\r
-:1000C000E604DB04B1049904F504760F980F8B1055\r
-:1000D000980F8B10DD0F00108B1055106810521305\r
-:1000E000521381138113C413FE130B160B1617142E\r
-:1000F0000B160C150C15DF150B160B16F61501E17A\r
-:100100000137023702E10138023801E201250225F8\r
-:1001100002E20001E10137023702E1013802380151\r
-:10012000E10130023002E10001E10137023702E172\r
-:100130000138023801E10107020702E1000135023E\r
-:1001400035012002200001E10137023702E10138C8\r
-:10015000023801E10125022502E10001E101360238\r
-:100160003602E10138023801E10125022502E100F1\r
-:1001700001E10136023602E10138023801E10126CF\r
-:10018000022602E10001E10137023702E1013802F3\r
-:100190003801E10126022602E10002E002E201301C\r
-:1001A00002300002E002E20001E001E20002E002AF\r
-:1001B000E3016402640002E002E30001E001E30005\r
-:1001C00002E002E2012E022E02E10002E002E10260\r
-:1001D000E20001E001E101E20002E001E3010602C8\r
-:1001E0000602E30002E00001E00002E001E3011981\r
-:1001F000021902E30002E00001E0000000F0A1F0BB\r
-:10020000A329002B00E200E100358100001E00144C\r
-:100210000004001D710D304D831F001A0016001BD5\r
-:10022000000C304C002000080007000600E1042A02\r
-:10023000002100150009001900E1084A00220017FA\r
-:10024000000A000500000003300130E3000000E276\r
-:1002500000000002540230E7000000E60000000445\r
-:100260005423001C000B00110000002E7F240018F6\r
-:10027000000D00100050004B0025000C000E003651\r
-:100280000052002C00260012000F003700510028F9\r
-:100290000027001300330038714F004E002D002F4F\r
-:1002A000003474E50031810000010001000100010B\r
-:1002B00000010000003A003500310001000100019A\r
-:1002C000003B0035022102350001004C003C001EBD\r
-:1002D0000224062202010001003D002D0224022416\r
-:1002E00004010001003E000100370011040000017C\r
-:1002F000000100010000000100000001000E3001BB\r
-:100300000000000100000001003F00240624022339\r
-:100310000200000100400022042502350001000116\r
-:100320000041002304260235023700010042002468\r
-:100330000425041F021E020100430031002604317F\r
-:1003400002010001004400450001002D02010000EF\r
-:100350000001000100010001000100000001000196\r
-:100360000001000100010001000100F400F200FBA7\r
-:1003700000010001000100F000F100FA000100019D\r
-:10038000000100F500F300FC00010001000100F98C\r
-:1003900000FA00F600000001000100010000000169\r
-:1003A0000000000100A800010000000100000001A1\r
-:1003B0000001000100A900AA0000000100010001E5\r
-:1003C000000100010001000100010001000100AC7A\r
-:1003D000000100B600010001000100AB0050000167\r
-:1003E00000010001000100520051000100AE0001B7\r
-:1003F00000010001004F00000001000100010001A8\r
-:1004000000010000000100010001000100010001E5\r
-:1004100000010001000100010001000100010001D4\r
-:1004200000010001000100010001000100010001C4\r
-:1004300000010001000100010001000100000001B5\r
-:100440000001000100000001000000010004300173\r
-:1004500000000001000000010005300630093001F5\r
-:1004600000000001000A300B3008300100010001DB\r
-:10047000000100073001000100010001000100013E\r
-:100480000001000100010001000100010001000164\r
-:100490000001000100010001000100010001000055\r
-:1004A0000001000100010001000100000001000145\r
-:1004B00000010001000100010001000100500001E5\r
-:1004C0000001000100010052005100010001000183\r
-:1004D00000010001004F00010001000100010001C6\r
-:1004E0000001000100000001000100010000000106\r
-:1004F00000000001000100010000000100000001F7\r
-:10050000003F00520051002302000001004000247F\r
-:100510000021001E00270001004100250022001FCD\r
-:1005200000370001004200260023002000270001C0\r
-:10053000004300300230002402270201004400453D\r
-:1005400000380001000100000001000100E100018D\r
-:1005500000E0000000010001000100010001003D79\r
-:100560000001000100010001000100E000010001A4\r
-:10057000000100010001002C000100010001000148\r
-:100580000001003C00010001000100010000003AF0\r
-:1005900000010001000000010000003B000E3001DE\r
-:1005A0000000000100000001000100010001000145\r
-:1005B0000000000100010001000100010001000134\r
-:1005C0000001000100010001000100010001000123\r
-:1005D0000001000100010001000100010001000113\r
-:1005E0000001000100010001000100010001000004\r
-:1005F0000016034500720067006F0044006F00782A\r
-:1006000000200045005A00000016034500720067F4\r
-:10061000006F0044006F007800200045005A000081\r
-:10062000000403090409026D00040100A0FA090492\r
-:1006300000000103010100092111010001223F0016\r
-:100640000705810308000A090401000103010200F3\r
-:10065000092111010001224D000705820308000A4B\r
-:100660000904020001030000000921110100012218\r
-:1006700036000705830308000A090403000103008C\r
-:10068000000009211101000122390007058403102F\r
-:1006900000011201100100000008EDFE0713010027\r
-:1006A0000102000105010906A101050719E029E77A\r
-:1006B0001500250195087501810205081901290514\r
-:1006C00095057501910295017503910105071900C2\r
-:1006D000297715002501957875018102C00501096A\r
-:1006E00080A101850216010026B7001A01002AB771\r
-:1006F00000751095018100C0050C0901A101850359\r
-:10070000160100269C021A01002A9C027510950110\r
-:100710008100C005010902A1010901A10005091913\r
-:1007200001290515002501950575018102950175C1\r
-:100730000381010501093009311581257F95027575\r
-:1007400008810609381581257F9501750881060500\r
-:100750000C0A38021581257F950175088106C0C0F5\r
-:1007600005010906A101050719E029E71500250182\r
-:100770009508750181029501750881010508190127\r
-:1007800029059505750191029501750391010507EC\r
-:10079000190029FF150025FF950675088100C00086\r
-:1007A00000000000000000000000010204060A0F23\r
-:1007B00017202C3A4A5D71879DB3C7DAE9F5FCFF33\r
-:1007C000FCF5E9DAC7B39D87715D4A3A2C20170F13\r
-:1007D0000A06040201000000000000000000000002\r
-:1007E00011241FBECFEFDAE0DEBFCDBF04B603FE9B\r
-:1007F00027C08091EF019091F001A091F101B0919B\r
-:10080000F2018730904BA740B04BD1F41092EF012A\r
-:100810001092F0011092F1011092F20114BE84B70F\r
-:10082000877F84BF0FB6F894A89580916000886197\r
-:1008300080936000109260000FBEE0E0FFE3099536\r
-:1008400011E0A0E0B1E0ECE9FAE402C005900D92FD\r
-:10085000A433B107D9F721E0A4E3B1E001C01D92B0\r
-:10086000AF3EB207E1F70E947E0B0C944C250C942E\r
-:100870000000462F50E04F30510508F0DEC0FA016D\r
-:10088000EA5AFF4FDC0112968C910C9401258823C3\r
-:1008900021F085EE0E94EC11D0C085EE0E94B412CA\r
-:1008A000CCC0882349F00E94D91C909335018093D5\r
-:1008B000340188EF91E008958091340190913501E1\r
-:1008C0000E94E51C873991050CF0A8C08AEE91E0E2\r
-:1008D0000895882349F00E94D91C90933501809394\r
-:1008E000340187EE91E008958091340190913501B3\r
-:1008F0000E94E51C873991050CF093C089ED91E0C9\r
-:100900000895882349F00E94D91C90933501809363\r
-:10091000340182ED91E00895809134019091350188\r
-:100920000E94E51C873991050CF07EC080EC91E0B7\r
-:100930000895882349F00E94D91C90933501809333\r
-:1009400034018BEB91E00895809134019091350151\r
-:100950000E94E51C873991050CF069C08DEA91E091\r
-:100960000895882349F00E94D91C90933501809303\r
-:10097000340188EA91E00895809134019091350125\r
-:100980000E94E51C873991050CF054C08AE991E07A\r
-:100990000895882309F451C085E891E008958823DB\r
-:1009A00009F44BC080E791E00895882309F445C01D\r
-:1009B0008BE591E00895882309F43FC086E491E037\r
-:1009C00008958823D1F18DE391E008958823A9F15A\r
-:1009D00088E291E00895882381F183E191E0089510\r
-:1009E000882359F18EEF90E00895882331F18091AA\r
-:1009F000B3019091B401A091B501B091B60120E28C\r
-:100A0000822780729927AA27BB278093B3019093EE\r
-:100A1000B401A093B501B093B6010FC085EF91E08A\r
-:100A2000089584EE91E008958BEC91E0089586EBB3\r
-:100A300091E0089583EA91E0089580E090E00895C0\r
-:100A400008956091B3017091B4018091B5019091C6\r
-:100A5000B6010E943C1C56985E9825982D982698C1\r
-:100A60002E9827982F988330C1F028F4813041F0D8\r
-:100A7000823049F00895843049F0853051F008956E\r
-:100A8000259A2D9A0895269A2E9A0895259A2D9A98\r
-:100A900004C0259A2D9A269A2E9A279A2F9A08955D\r
-:100AA0000C94210556985E9825982D9826982E9896\r
-:100AB00027982F988FEF90E090938900809388007B\r
-:100AC00090938B0080938A0090938D0080938C008C\r
-:100AD000259A2D9A2FEF80E792E021508040904098\r
-:100AE000E1F700C00000269A2E9A2FEF80E792E0EF\r
-:100AF000215080409040E1F700C00000279A2F9AD3\r
-:100B00002FEF80E792E0215080409040E1F700C055\r
-:100B1000000025982D982FEF80E792E0215080402B\r
-:100B20009040E1F700C0000026982E982FEF80E754\r
-:100B300092E0215080409040E1F700C000002798EB\r
-:100B40002F9856985E9825982D9826982E98279835\r
-:100B50002F98089589EA8093800089E0809381002E\r
-:100B600024982C983F988AB18F748AB96E98479AC6\r
-:100B70008BB1806B8BB9769A0E9452050C9420053C\r
-:100B800080E2809300018091360181110EC00E94A5\r
-:100B90000F0681E0809336012FEF83ED90E3215023\r
-:100BA00080409040E1F700C0000080E40E941506FC\r
-:100BB0008093000181112EC00E943F0680930001A6\r
-:100BC000811128C00E943F0680930001811122C03C\r
-:100BD0008FE30E943F068093000181111BC00E9499\r
-:100BE000370680E40E94150680930001811112C02F\r
-:100BF0008CE00E943F068093000181110BC00E948F\r
-:100C00003F0680930001811105C08FE30E943F06DB\r
-:100C1000809300010E943706809100010895109290\r
-:100C2000B9008AE08093B800089594EA9093BC00DC\r
-:100C30009091BC0097FFFCCF9091B900987F9830BD\r
-:100C400021F0903111F081E008958093BB0084E899\r
-:100C50008093BC008091BC0087FFFCCF8091B900DD\r
-:100C6000887F883111F0803471F780E0089584E93D\r
-:100C70008093BC008091BC0084FDFCCF08958093DC\r
-:100C8000BB0084E88093BC008091BC0087FFFCCF50\r
-:100C90009091B900987F81E0983209F480E008953E\r
-:100CA00084E88093BC008091BC0087FFFCCF8091DA\r
-:100CB000BB00089580910001811115C080E40E945D\r
-:100CC00015068093000181110CC082E10E943F064D\r
-:100CD00080930001811105C08FEF0E943F06809331\r
-:100CE00000010E94370684B1807F84B985B1807F7E\r
-:100CF00085B98AB1837F8AB98BB1837F8BB93E98DE\r
-:100D0000469808950E94C005809300010E945A06EB\r
-:100D100080B38C7080BB81B3836F81BBE6E4F1E06C\r
-:100D2000A8E3B1E011921D9281E0E435F807D1F714\r
-:100D30000C94AA059F92AF92BF92CF92DF92EF924E\r
-:100D4000FF920F931F93CF93DF938091000188232D\r
-:100D500079F0809137018F5F80933701811108C04E\r
-:100D60000E94C00580930001811102C00E945205BB\r
-:100D700088E3E82E81E0F82E8701C0E0D0E0BB24B4\r
-:100D8000B39492E0A92ECC24C394D12CC730D105C2\r
-:100D900000F580910001811164C080E40E94150675\r
-:100DA00080930001811112C082E10E943F0680936E\r
-:100DB000000181110BC0C6010C2E01C0880F0A94DE\r
-:100DC000EAF780950E943F06809300010E94370653\r
-:100DD00048C0CA30A1F028F4C83059F0C93061F0D9\r
-:100DE00005C0CC3089F070F0CD3089F0209A289879\r
-:100DF00010C0219A29980DC0229A2A980AC0239AD5\r
-:100E00002B9807C0529A01C0539A5B9802C03E9A31\r
-:100E10004698E0EAEA95F1F78FB181708B257999D0\r
-:100E200002C032E001C030E0832B7C9902C034E084\r
-:100E300001C030E0832B7D9902C028E001C020E092\r
-:100E4000822B7E9902C090E101C090E0892B9FB176\r
-:100E50009095991F9927991F9295990F907E892BAC\r
-:100E60000FC08091000181114AC080E40E941506E4\r
-:100E700080930001882381F1912C0E943706892DEF\r
-:100E8000D8019C91981719F08C93A09201010E94AF\r
-:100E90005A0621960F5F1F4FCE30D10509F076CF4D\r
-:100EA00080910101882369F1815080930101882399\r
-:100EB00039F0EFE9FFE03197F1F700C0000021C001\r
-:100EC000E6E4F1E0D7018D917D018193B6E4EB1664\r
-:100ED000B1E0FB06B9F715C083E10E943F0680939D\r
-:100EE00000018111C9CF81E40E94150680930001A1\r
-:100EF0008111C2CF0E945006982E9094BECF80E000\r
-:100F0000BFCF0E94500581E0DF91CF911F910F91DB\r
-:100F1000FF90EF90DF90CF90BF90AF909F9008959B\r
-:100F2000E82FF0E0EA5BFE4F8081089508958B3B47\r
-:100F3000910580F4883A910548F5853A9105D8F4F1\r
-:100F40008430910508F0B2C0019709F06EC081E0CD\r
-:100F500090E00895803E910508F467C0883E9105B1\r
-:100F600008F4A4C09C01205F31092031310508F04C\r
-:100F70005CC090650895853A910509F459C0863A98\r
-:100F8000910509F058C082E890E40895883A9105E7\r
-:100F900009F454C0893A910509F453C08A3A91057D\r
-:100FA00009F452C08B3A910509F451C08C3A91056D\r
-:100FB00009F450C08D3A910509F44FC0803B91056A\r
-:100FC00009F44EC08E3A910509F44DC08F3A91054F\r
-:100FD00009F44CC0813B910509F44BC0823B91055B\r
-:100FE00009F44AC0833B910509F449C0843B91054B\r
-:100FF00009F448C0853B910509F447C0863B91053B\r
-:1010000009F446C0873B910509F445C0883B91052A\r
-:1010100009F444C0893B910509F443C08A3B91051A\r
-:1010200009F442C080E094E4089580E090E00895DF\r
-:1010300081E890E4089583E890E4089582EE94E4D2\r
-:10104000089589EE94E408958AEE94E4089585EB7A\r
-:1010500094E4089586EB94E4089587EB94E408956E\r
-:101060008CEC94E408958DEC94E4089583E895E481\r
-:1010700008958AE895E4089582E995E4089584E95D\r
-:1010800095E4089581E296E4089583E296E4089554\r
-:1010900084E296E4089585E296E4089586E296E473\r
-:1010A000089587E296E408958AE296E40895089503\r
-:1010B00024E5829FC0011124FC0126E0729FE00D0F\r
-:1010C000F11D1124E60FF11DEE0FFF1FEF5FFD4F25\r
-:1010D000859194910895880F991FFC01E558FF4F61\r
-:1010E000859194910895880F991FFC01E550FE4F5A\r
-:1010F00085919491089524E5829FC0011124FC01FB\r
-:1011000046E0749FE00DF11D1124E60FF11DEE0F76\r
-:10111000FF1FEF5FFD4F859194919C013A9521153A\r
-:101120004FE1340708F425C13F512115304120F427\r
-:101130009F700E94730808959C013053211530411F\r
-:1011400018F49927906C0895811520E5920769F4A9\r
-:101150000E942D164FEF84E39CE041508040904068\r
-:10116000E1F700C000000C94341D813020E59207A7\r
-:1011700031F48091CE0181608093CE0108959C016D\r
-:1011800030552115304108F05CC0292F33272F70CE\r
-:10119000332721303105E9F4AC0164E0440F551FD9\r
-:1011A0006A95E1F744275370BC016370772702C04A\r
-:1011B000220F331F6A95E2F73C68242B352B73E02E\r
-:1011C000880F991F7A95E1F780769927822B932BC8\r
-:1011D00008952230310529F4982F8827816F906A6D\r
-:1011E000089523303105A1F4AC0133E0440F551FBD\r
-:1011F0003A95E1F7407E57708370992721E030E0FF\r
-:1012000002C0220F331F8A95E2F7C9019C6816C0FD\r
-:101210002430310531F5AC0123E0440F551F2A95E8\r
-:10122000E1F7407E57708370992721E030E002C0DB\r
-:10123000220F331F8A95E2F7C9019A68842B952BF8\r
-:1012400008959C0130572115304118F49F70906229\r
-:1012500008959C0130582115304118F49F70906A10\r
-:101260000895803E9105E0F4803C910558F5813366\r
-:10127000910509F46FC048F48932910509F463C0FF\r
-:101280008A32910509F46DC072C089339105E9F085\r
-:1012900082389105D1F08533910509F44DC067C0BE\r
-:1012A000833E910581F138F4803E9105B9F0823E8C\r
-:1012B0009105D9F05CC0863E910561F1873E9105AC\r
-:1012C000A1F155C00E946B0808952091E00120FD16\r
-:1012D00002C021FF4CC080EE90E049C08091E00147\r
-:1012E00080FFF9CF89E390E042C08091E00182FF66\r
-:1012F0000EC08091E00184FF03C080E090E037C021\r
-:1013000083EE90E034C08091E00182FFF2CF82EE64\r
-:1013100090E02DC08091E00183FF0BC08091E0013F\r
-:1013200084FDEBCF87EE90E022C08091E00183FF47\r
-:10133000F5CF86EE90E01BC08091E00185FF07C0ED\r
-:1013400089E290E014C08091E00185FFF9CF85E348\r
-:1013500090E00DC08091E00186FF07C08AE290E036\r
-:1013600006C08091E00186FFF9CF81E390E00E9402\r
-:10137000970708950895809164010895CF93DF93AE\r
-:1013800000D01F92CDB7DEB79C018091E60184307A\r
-:1013900019F593E099833B832A839093E9008FEFBB\r
-:1013A0009091E800815095FD06C095ED9A95F1F772\r
-:1013B00000008111F5CF8091E80085FF0DC040E06D\r
-:1013C00050E063E070E0CE0101960E942B0C80910A\r
-:1013D000E8008E778093E8000F900F900F90DF91D8\r
-:1013E000CF910895CF93DF9300D01F92CDB7DEB792\r
-:1013F0002091E601243021F522E029839B838A8312\r
-:1014000083E08093E9008FEF9091E800815095FD93\r
-:1014100006C095ED9A95F1F700008111F5CF809106\r
-:10142000E80085FF0DC040E050E063E070E0CE01D1\r
-:1014300001960E942B0C8091E8008E778093E80043\r
-:101440000F900F900F90DF91CF9108959C018091A4\r
-:10145000E6018430F9F482E08093E9009FEF809107\r
-:10146000E800915085FD06C085ED8A95F1F70000F2\r
-:101470009111F5CF8091E80085FF0CC040E050E06D\r
-:1014800065E070E0C9010E942B0C8091E8008E7726\r
-:101490008093E8000895CF93DF93EC018091E601FB\r
-:1014A000843009F046C090910C019923D9F09091B5\r
-:1014B0000D019923B9F08093E9008FEF9091E80036\r
-:1014C000815095FD06C095E19A95F1F700008111D4\r
-:1014D000F5CF8091E80085FF2CC040E050E060E14E\r
-:1014E00070E017C081E08093E9008FEF9091E800F1\r
-:1014F000815095FD06C095ED9A95F1F70000811198\r
-:10150000F5CF8091E80085FF14C040E050E068E02E\r
-:1015100070E0CE010E942B0C8091E8008E778093C2\r
-:10152000E80080E1FE01A4E5B1E001900D928A950A\r
-:10153000E1F7DF91CF9108958091E501811109C014\r
-:101540000E94BC0D0E94190E8091E200846080937D\r
-:10155000E20008951092E501089508950C946A231D\r
-:101560000E94CA1C0E9470230E94C4100C94BA09E5\r
-:1015700042E061EC81E00E94350D42E061EC82E0E6\r
-:101580000E94350D42E061EC83E00E94350D42E19E\r
-:1015900061EC84E00C94350D8091E801833009F40E\r
-:1015A00055C030F4813071F0823009F48EC0089556\r
-:1015B0008A3009F47AC08B3009F460C0893009F0B0\r
-:1015C0009CC020C08091E701813A09F096C08091CB\r
-:1015D000E800877F8093E8008091EB019091EC0117\r
-:1015E000892B21F460E184E591E003C060E080E0B4\r
-:1015F00090E070E00E94760C8091E8008B778093F9\r
-:10160000E80008958091E701813209F076C0809169\r
-:10161000EB019091EC01009719F0039709F06DC070\r
-:101620008091E800877F8093E8008091E80082FD48\r
-:1016300005C08091E6018111F8CF5FC08091F10073\r
-:10164000809364018091E8008B7753C08091E7011B\r
-:10165000813A09F052C08091EB019091EC01892B05\r
-:1016600009F04BC08091E800877F8093E80080916B\r
-:10167000E80080FFFCCF80910C0136C08091E7012B\r
-:101680008132D9F58091EB019091EC01892BA9F57C\r
-:101690008091E800877F8093E8000E946A0D809126\r
-:1016A000E90180930C010C942D168091E7018132A1\r
-:1016B00021F58091E800877F8093E8000E946A0D01\r
-:1016C0008091EA018093650108958091E701813A54\r
-:1016D000A1F48091E800877F8093E8008091E80082\r
-:1016E00080FFFCCF809165018093F1008091E8003C\r
-:1016F0008E778093E8000C946A0D089584B7877FF5\r
-:1017000084BF0FB6F894A89580916000886180939B\r
-:101710006000109260000FBE90E080E80FB6F89471\r
-:1017200080936100909361000FBE0E9413110E948C\r
-:10173000BC0D0E94190E8091E20084608093E2004B\r
-:1017400078940E94A4100E94151182E091E00E94FA\r
-:10175000BF100E9458238091E601853069F40E94F1\r
-:101760008C1C8091E4018823B1F30E94B61C88236D\r
-:1017700091F30E94150CEFCF0E941B11ECCF292F83\r
-:10178000332723303105C9F060F42130310581F071\r
-:101790002230310509F041C08DE690E025E236E0C7\r
-:1017A00040C021323105E1F02232310531F135C03E\r
-:1017B00082E190E022E936E034C09927813091053A\r
-:1017C00049F028F0029749F5E1EFF5E005C0E1E2C4\r
-:1017D000F6E002C0E9E0F6E0849190E09F0121C0CC\r
-:1017E0006430D8F4E62FF0E0EE0FFF1FEE5DFE4F01\r
-:1017F0002081318189E090E014C0643070F470E0A1\r
-:10180000FB01EE0FFF1FE65EFE4F20813181FB01E1\r
-:10181000EA5EFE4F808190E004C080E090E020E02E\r
-:1018200030E0FA0131832083089580E189BD82E1AF\r
-:1018300089BD09B400FEFDCF8091D8008F7D8093D3\r
-:10184000D8008091E00082608093E0008091E00009\r
-:1018500081FDFCCF0895CF92DF92EF92FF920F931C\r
-:101860001F93CF93DF93EC018B016A010E94890DD6\r
-:10187000811133C0C114D10439F0F6018081918106\r
-:10188000081B190BC80FD91FE12CF12C01151105EC\r
-:1018900019F18091E80085FD16C08091E8008E77EF\r
-:1018A0008093E800C114D10449F0F6018081918150\r
-:1018B000E80EF91EF182E08285E00FC00E94890DDA\r
-:1018C000882321F30AC089918093F1000150110906\r
-:1018D000FFEFEF1AFF0ADACF80E0DF91CF911F917F\r
-:1018E0000F91FF90EF90DF90CF9008952091ED0140\r
-:1018F0003091EE012617370748F06115710539F46C\r
-:101900002091E8002E772093E80001C0B901FC0186\r
-:1019100020E06115710579F18091E6018823F1F1EC\r
-:101920008530F1F18091E80083FD3CC08091E800B2\r
-:1019300082FD2EC08091E80080FFEBCF2091F30064\r
-:101940008091F20090E0922B6115710551F0883082\r
-:10195000910538F421912093F100615071090196AD\r
-:10196000F3CF21E0089709F020E08091E8008E771E\r
-:101970008093E800CECF2111CFCF0AC08091E6013D\r
-:10198000882361F0853061F08091E80083FD0AC012\r
-:101990008091E80082FFF2CF80E0089582E0089510\r
-:1019A00083E0089581E008952091ED013091EE01EA\r
-:1019B0002617370748F06115710539F42091E800C2\r
-:1019C0002E772093E80001C0B901FC0120E06115E9\r
-:1019D000710591F18091E601882309F440C08530BA\r
-:1019E00009F43FC08091E80083FD3DC08091E8008C\r
-:1019F00082FD2FC08091E80080FFE9CF2091F300A5\r
-:101A00008091F20090E0922B6115710559F08830B9\r
-:101A1000910540F424912093F100319661507109B1\r
-:101A20000196F2CF21E0089709F020E08091E800CC\r
-:101A30008E778093E800CBCF2111CCCF0AC0809164\r
-:101A4000E601882361F0853061F08091E80083FD34\r
-:101A50000AC08091E80082FFF2CF80E0089582E022\r
-:101A6000089583E0089581E00895982F973068F5F0\r
-:101A70009093E900981739F07091EC002091ED00F7\r
-:101A80005091F00003C0242F762F50E021FD02C0BA\r
-:101A90009F5FECCF3091EB003E7F3093EB003091B5\r
-:101AA000ED003D7F3093ED003091EB0031603093DD\r
-:101AB000EB007093EC002093ED005093F000209128\r
-:101AC000EE0027FDE5CF80E008958F708093E90058\r
-:101AD00081E008958091E70187FF11C08091E800BF\r
-:101AE00082FD05C08091E6018111F8CF11C080917F\r
-:101AF000E8008B770BC08091E601882349F0809144\r
-:101B0000E80080FFF8CF8091E8008E778093E800AE\r
-:101B100008952091E4003091E50095E64091EC00B5\r
-:101B2000842F817040FF23C08091E80080FD1DC09C\r
-:101B30008091E601882399F0853099F08091EB003F\r
-:101B400085FD11C04091E4005091E5002417350750\r
-:101B500029F3915011F09A01E1CF84E0089582E0D9\r
-:101B6000089583E0089581E0089580E0089540910C\r
-:101B7000E80042FFDDCF08950E942A0E0E94320E37\r
-:101B8000E0EEF0E0808181608083E8EDF0E080812C\r
-:101B90008F77808319BCA7EDB0E08C918E7F8C93FA\r
-:101BA00080818F7E80831092E50108950F931F93AB\r
-:101BB000CF93DF930E942A0E0E94320EC8EDD0E030\r
-:101BC00088818F77888388818068888388818F7DEA\r
-:101BD000888319BC1092E6011092E2011092E40190\r
-:101BE0001092E30100EE10E0F80180818B7F80838A\r
-:101BF00088818160888342E060E080E00E94350D4A\r
-:101C0000E1EEF0E080818E7F8083E2EEF0E0808183\r
-:101C100081608083808188608083F80180818E7FED\r
-:101C20008083888180618883DF91CF911F910F919C\r
-:101C30000895E8EDF0E080818F7E8083E7EDF0E0AD\r
-:101C400080818160808384E082BF81E08093E501B0\r
-:101C50000C94D60DE8EDF0E080818E7F80831092A9\r
-:101C6000E20008951092DA001092E10008951F92A8\r
-:101C70000F920FB60F9211242F933F934F935F93C0\r
-:101C80006F937F938F939F93AF93BF93EF93FF9344\r
-:101C90008091E10082FF0BC08091E20082FF07C0CB\r
-:101CA0008091E1008B7F8093E1000E94A3108091DE\r
-:101CB000DA0080FF1FC08091D80080FF1BC0809198\r
-:101CC000DA008E7F8093DA008091D90080FF0DC00A\r
-:101CD00080E189BD82E189BD09B400FEFDCF81E0CC\r
-:101CE0008093E6010E949C0A05C019BC1092E6018F\r
-:101CF0000E94AA0A8091E10080FF19C08091E20051\r
-:101D000080FF15C08091E2008E7F8093E200809179\r
-:101D1000E20080618093E2008091D800806280932D\r
-:101D2000D80019BC85E08093E6010E94AE0A80913C\r
-:101D3000E10084FF30C08091E20084FF2CC080E18C\r
-:101D400089BD82E189BD09B400FEFDCF8091D80034\r
-:101D50008F7D8093D8008091E1008F7E8093E10099\r
-:101D60008091E2008F7E8093E2008091E2008160AA\r
-:101D70008093E2008091E201882311F084E007C0A3\r
-:101D80008091E30087FD02C081E001C083E0809381\r
-:101D9000E6010E94B00A8091E10083FF29C0809192\r
-:101DA000E20083FF25C08091E100877F8093E100FE\r
-:101DB00082E08093E6011092E2018091E1008E7F43\r
-:101DC0008093E1008091E2008E7F8093E200809119\r
-:101DD000E20080618093E20042E060E080E00E94E7\r
-:101DE000350D8091F00088608093F0000E94AD0A6C\r
-:101DF000FF91EF91BF91AF919F918F917F916F91E3\r
-:101E00005F914F913F912F910F900FBE0F901F90B8\r
-:101E100018951F920F920FB60F9211242F933F9394\r
-:101E20004F935F936F937F938F939F93AF93BF93E2\r
-:101E3000CF93DF93EF93FF93C091E900CF70809130\r
-:101E4000EC00D82FD17080FDD0E81092E90080918D\r
-:101E5000F000877F8093F00078940E944D0F1092DD\r
-:101E6000E9008091F00088608093F000CD2BCF7066\r
-:101E7000C093E900FF91EF91DF91CF91BF91AF91B6\r
-:101E80009F918F917F916F915F914F913F912F9192\r
-:101E90000F900FBE0F901F9018951F93CF93DF9355\r
-:101EA000CDB7DEB7AA970FB6F894DEBF0FBECDBF91\r
-:101EB000E7EEF1E08091F100819321E0EF3EF2073F\r
-:101EC000C9F70E94CC0A8091E80083FF24C1809169\r
-:101ED000E7019091E801492F50E04A30510508F0A0\r
-:101EE0001AC1FA01EB59FF4F0C940125803881F09B\r
-:101EF000823809F010C18091EB018F708093E90066\r
-:101F00008091EB0085FB882780F91092E90006C0DC\r
-:101F10008091E3019091E401911182609091E80039\r
-:101F2000977F9093E8008093F1001092F100C8C071\r
-:101F3000282F2D7F09F0EFC0882319F0823061F03F\r
-:101F4000EAC08091E901813009F0E5C0933009F0E1\r
-:101F500080E08093E4012BC08091E901811127C0CA\r
-:101F60008091EB018F7009F4D6C08093E900209135\r
-:101F7000EB0020FF1CC0933021F48091EB008062C5\r
-:101F800014C09091EB0090619093EB0021E030E061\r
-:101F9000A90102C0440F551F8A95E2F74093EA0059\r
-:101FA0001092EA008091EB0088608093EB00109221\r
-:101FB000E9008091E800877F86C08111ACC0109154\r
-:101FC000E9011F778091E3008078812B8093E30003\r
-:101FD0008091E800877F8093E8000E946A0D8091DD\r
-:101FE000E80080FFFCCF8091E30080688093E300ED\r
-:101FF000111102C082E001C083E08093E6018BC032\r
-:102000008058823008F087C08091E9019091EA0100\r
-:102010008C3D53E0950779F583E08A838AE28983D2\r
-:102020004FB7F894DE01139620E03EE051E2E32F33\r
-:10203000F0E050935700E49120FF03C0E295EF7069\r
-:102040003F5FEF708E2F90E0EA3010F0C79601C02E\r
-:10205000C0968D939D932F5F243149F74FBF809198\r
-:10206000E800877F8093E8006AE270E0CE01019685\r
-:102070000E94760C14C0AE014F5F5F4F6091EB0180\r
-:102080000E94BF0BBC01892B09F445C09091E80068\r
-:10209000977F9093E80089819A810E94D40C809167\r
-:1020A000E8008B778093E80036C08038A1F58091F6\r
-:1020B000E800877F8093E8008091E2018093F1003F\r
-:1020C0008091E8008E778093E8000E946A0D23C01B\r
-:1020D000811121C08091E9019091EA01992702972D\r
-:1020E000D4F48091E800877F8093E8008091E90133\r
-:1020F0008093E2010E946A0D8091E201811106C085\r
-:102100008091E30087FD02C081E001C084E08093FC\r
-:10211000E6010E94B80A8091E80083FF0AC080911E\r
-:10212000E800877F8093E8008091EB0080628093D5\r
-:10213000EB00AA960FB6F894DEBF0FBECDBFDF91BD\r
-:10214000CF911F9108950895CF938091E601882340\r
-:10215000A1F0C091E900CF709091EC00892F8170BF\r
-:1021600090FD80E8C82B1092E9008091E80083FD83\r
-:102170000E944D0FCF70C093E900CF9108959093C6\r
-:102180006B0180936A010895E0916A01F0916B01FF\r
-:10219000309721F00190F081E02D099480E00895BE\r
-:1021A000E0916A01F0916B01309721F00280F38198\r
-:1021B000E02D09940895E0916A01F0916B01309748\r
-:1021C00021F00480F581E02D0994089520916801A3\r
-:1021D000309169012817390771F090936901809354\r
-:1021E0006801E0916A01F0916B01309721F006805F\r
-:1021F000F781E02D099408952091660130916701DF\r
-:102200002817390771F09093670180936601E09178\r
-:102210006A01F0916B01309721F00084F185E02D87\r
-:102220000994089508950C9412110E94D01C0E94E4\r
-:1022300082060C94961DCF92DF92EF92FF920F933D\r
-:102240001F93CF93DF93CDB7DEB72B970FB6F894DC\r
-:10225000DEBF0FBECDBF0E949A068DE6C82E81E07C\r
-:10226000D82E00E010E0E02E802F0E949007F601AB\r
-:1022700041916F01F82EF426B1F40F5F1F4F0E301D\r
-:10228000110589F78FEF89838A831B820E94D91CED\r
-:102290008160782F9D838C8349815A816B818D81E8\r
-:1022A0000E94BE1140C09091CE0191FF04C08B8767\r
-:1022B0000E9496078B8520E030E04F2D50E0922F52\r
-:1022C000BA01022E02C0759567950A94E2F760FF85\r
-:1022D00024C02E83EF8221E030E0690102C0CC0CE3\r
-:1022E000DD1C9A95E2F790E08C219D21892B09F461\r
-:1022F00020E028870E94D91C8160782F9A878987DF\r
-:102300004E815F8168858A850E94BE11F801E3597C\r
-:10231000FE4F8081C826C08206C02F5F3F4F263007\r
-:10232000310569F6AACF0E947D200E94C4109091C9\r
-:102330006C018917A1F00E94C41080936C012B9648\r
-:102340000FB6F894DEBF0FBECDBFDF91CF911F91C6\r
-:102350000F91FF90EF90DF90CF900C94BA092B96DD\r
-:102360000FB6F894DEBF0FBECDBFDF91CF911F91A6\r
-:102370000F91FF90EF90DF90CF900895CF93DF9370\r
-:10238000CDB7DEB72B970FB6F894DEBF0FBECDBF2B\r
-:102390004F83588769877A878B87DE01119686E09D\r
-:1023A000FD0111928A95E9F785E0FE0137960190CB\r
-:1023B0000D928A95E1F749815A816B817C818D81EB\r
-:1023C0009E810E94C1182B960FB6F894DEBF0FBEF7\r
-:1023D000CDBFDF91CF910895CF93C82F882309F403\r
-:1023E000C1C0823859F40E94C41081FDBBC089E38A\r
-:1023F0000E945E1B0E94161C89E30CC0833879F48E\r
-:102400000E94C41080FDAEC083E50E945E1B0E9446\r
-:10241000161C83E50E949D1BCF910C94161C8438DA\r
-:1024200059F40E94C41082FD9DC087E40E945E1B87\r
-:102430000E94161C87E4EECF8CEF8C0F813A48F493\r
-:102440008C2F0E94BD2281118DC08C2F0E945E1B9B\r
-:10245000E3CF80E28C0F883048F4C77081E001C080\r
-:10246000880FCA95EAF70E94DF1BD6CF8BE58C0F49\r
-:10247000833078F4C53A29F0C63A31F083E890E029\r
-:1024800005C081E890E002C082E890E0CF910C9412\r
-:10249000E61088E58C0F833108F064C0C83A39F142\r
-:1024A000C93A41F1CA3A49F1CB3A51F1CC3A59F122\r
-:1024B000CD3A61F1C03B69F1CE3A71F1CF3A79F191\r
-:1024C000C13B81F1C23B89F1C33B91F1C43B99F11E\r
-:1024D000C53BA1F1C63BA9F1C73BB1F1C83BB9F17E\r
-:1024E000C93BC1F1CA3BC9F180E090E038C082EE3F\r
-:1024F00090E035C089EE90E032C08AEE90E02FC0C7\r
-:1025000085EB90E02CC086EB90E029C087EB90E053\r
-:1025100026C08CEC90E023C08DEC90E020C083E8D6\r
-:1025200091E01DC08AE891E01AC082E991E017C0ED\r
-:1025300084E991E014C081E292E011C083E292E06C\r
-:102540000EC084E292E00BC085E292E008C086E211\r
-:1025500092E005C087E292E002C08AE292E0CF9169\r
-:102560000C94FC10CF910895882309F44BC0823855\r
-:1025700059F40E94C41081FF45C089E30E945E1B8C\r
-:102580000E94161C89E30CC0833871F40E94C410A9\r
-:1025900080FF38C083E50E945E1B0E94161C83E505\r
-:1025A0000E949D1B0C94161C843859F40E94C41080\r
-:1025B00082FF28C087E40E945E1B0E94161C87E4ED\r
-:1025C000EFCF9CEF980F913A58F390E2980F983024\r
-:1025D00050F4877091E001C0990F8A95EAF7892F2E\r
-:1025E0000E94E51BDFCF9BE5980F933020F480E03D\r
-:1025F00090E00C94E610885A833120F480E090E05B\r
-:102600000C94FC100895882321F00E94DF1B0C9489\r
-:10261000161C0895882321F00E94E51B0C94161CBB\r
-:102620000895BF92CF92DF92EF92FF920F931F9384\r
-:10263000CF93DF9300D000D000D0CDB7DEB77C01C0\r
-:1026400085E0F701DE01119601900D928A95E1F780\r
-:10265000F70183819481892B09F4DDC29081818106\r
-:102660008F3F19F49F3F09F4D6C2F70102812581FB\r
-:1026700022952F7099838A8389819A812E830E9463\r
-:102680001D1B182FB92E0E941C1B0E94E319EB2D55\r
-:10269000E295EF704E2F50E0FA01E159FF4F2E8185\r
-:1026A0000C9401258B2D807F9B2D9F70F92E882304\r
-:1026B00019F0F29480EFF822002349F0FF2009F48A\r
-:1026C00057C28F2D0E94EF1B0E94161C51C2812FF2\r
-:1026D0000E94B412FF2009F49EC28F2D0E94F51BA8\r
-:1026E00026960FB6F894DEBF0FBECDBFDF91CF9117\r
-:1026F0001F910F91FF90EF90DF90CF90BF900C94BF\r
-:10270000161C3B2D307F8B2D8F70303211F082954F\r
-:10271000807F112319F0113021F12CC00023B9F072\r
-:10272000222309F490C1213009F08DC126960FB6FD\r
-:10273000F894DEBF0FBECDBFDF91CF911F910F91F7\r
-:10274000FF90EF90DF90CF90BF900C94FF1B22235F\r
-:1027500019F0213009F45FC28E830E94021C8E8121\r
-:1027600086C1002321F0223008F055C26CC121112E\r
-:1027700052C27DC1002321F0222309F464C1F8C1B3\r
-:10278000222309F474C109C28B2D86958695837026\r
-:1027900019F08130D1F03FC2002321F0812F9B2D11\r
-:1027A000937002C080E090E026960FB6F894DEBFEA\r
-:1027B0000FBECDBFDF91CF911F910F91FF90EF9092\r
-:1027C000DF90CF90BF900C94E610002321F0812F72\r
-:1027D0009B2D937002C080E090E026960FB6F8948F\r
-:1027E000DEBF0FBECDBFDF91CF911F910F91FF9044\r
-:1027F000EF90DF90CF90BF900C94FC10812F0023BE\r
-:1028000019F00E94851F02C00E94ED1F26960FB688\r
-:10281000F894DEBF0FBECDBFDF91CF911F910F9116\r
-:10282000FF90EF90DF90CF90BF900C9472208B2D93\r
-:10283000837009F075C00111EEC1812F82958695D4\r
-:102840008770880F880F912F9F70C92ED12CE12C93\r
-:10285000F12C082E04C0CC0CDD1CEE1CFF1C0A94CD\r
-:10286000D2F714FF12C00FE010E020E030E004C007\r
-:10287000000F111F221F331F8A95D2F7C901B8011B\r
-:10288000609570958095909503C060E070E0CB01F5\r
-:102890004B2D4695469543704230C1F060F56C294A\r
-:1028A0007D298E299F29413051F126960FB6F89443\r
-:1028B000DEBF0FBECDBFDF91CF911F910F91FF9073\r
-:1028C000EF90DF90CF90BF900C940A1A6C297D296D\r
-:1028D0008E299F2926960FB6F894DEBF0FBECDBF76\r
-:1028E000DF91CF911F910F91FF90EF90DF90CF90EC\r
-:1028F000BF900C94261A0E940A1AC701B6012696A8\r
-:102900000FB6F894DEBF0FBECDBFDF91CF911F9100\r
-:102910000F91FF90EF90DF90CF90BF900C94EE1945\r
-:10292000002319F08B2D817001C08695882309F44E\r
-:1029300072C1812F829586958770880F880F912F9D\r
-:102940009F70C92ED12CE12CF12C082E04C0CC0C88\r
-:10295000DD1CEE1CFF1C0A94D2F714FF12C00FE01E\r
-:1029600010E020E030E004C0000F111F221F331FD1\r
-:102970008A95D2F7C901B8016095709580959095B8\r
-:1029800003C060E070E0CB014B2D46954695437047\r
-:102990004230C1F060F56C297D298E299F29413094\r
-:1029A00051F126960FB6F894DEBF0FBECDBFDF9172\r
-:1029B000CF911F910F91FF90EF90DF90CF90BF903C\r
-:1029C0000C94E41A6C297D298E299F2926960FB62E\r
-:1029D000F894DEBF0FBECDBFDF91CF911F910F9155\r
-:1029E000FF90EF90DF90CF90BF900C94001B0E945F\r
-:1029F000E41AC701B60126960FB6F894DEBF0FBEE3\r
-:102A0000CDBFDF91CF911F910F91FF90EF90DF909D\r
-:102A1000CF90BF900C94C81A103FD1F118F4103E1B\r
-:102A200050F4A1C0123F09F463C008F44CC0133F36\r
-:102A300009F473C098C01F708B2D8F710023A1F013\r
-:102A40000E94611A812F26960FB6F894DEBF0FBE42\r
-:102A5000CDBFDF91CF911F910F91FF90EF90DF904D\r
-:102A6000CF90BF900C9403130E94821A812F269658\r
-:102A70000FB6F894DEBF0FBECDBFDF91CF911F918F\r
-:102A80000F91FF90EF90DF90CF90BF900C940A13BE\r
-:102A90000023A9F02111BFC08B2D8F7126960FB690\r
-:102AA000F894DEBF0FBECDBFDF91CF911F910F9184\r
-:102AB000FF90EF90DF90CF90BF900C94A71A223038\r
-:102AC00008F0A9C0E9CF0023A9F08B2D8F712696BD\r
-:102AD0000FB6F894DEBF0FBECDBFDF91CF911F912F\r
-:102AE0000F91FF90EF90DF90CF90BF900C94611A00\r
-:102AF000002359F38B2D8F7126960FB6F894DEBF05\r
-:102B00000FBECDBFDF91CF911F910F91FF90EF903E\r
-:102B1000DF90CF90BF900C94821A002399F08B2DF8\r
-:102B20008F7126960FB6F894DEBF0FBECDBFDF9132\r
-:102B3000CF911F910F91FF90EF90DF90CF90BF90BA\r
-:102B40000C944C1A26960FB6F894DEBF0FBECDBF7C\r
-:102B5000DF91CF911F910F91FF90EF90DF90CF9079\r
-:102B6000BF900C94421A0023A9F0222309F4ADCFA0\r
-:102B7000812F26960FB6F894DEBF0FBECDBFDF9132\r
-:102B8000CF911F910F91FF90EF90DF90CF90BF906A\r
-:102B90000C94EC11222309F4ADCF812F26960FB6A9\r
-:102BA000F894DEBF0FBECDBFDF91CF911F910F9183\r
-:102BB000FF90EF90DF90CF90BF900C94B4124B2D0C\r
-:102BC0004F70612FC7010E94390426960FB6F89402\r
-:102BD000DEBF0FBECDBFDF91CF911F910F91FF9050\r
-:102BE000EF90DF90CF90BF900C9466194B2D4F70F3\r
-:102BF000612FC70126960FB6F894DEBF0FBECDBF7A\r
-:102C0000DF91CF911F910F91FF90EF90DF90CF90C8\r
-:102C1000BF900C94570826960FB6F894DEBF0FBEEF\r
-:102C2000CDBFDF91CF911F910F91FF90EF90DF907B\r
-:102C3000CF90BF9008950E94FC1B0E94D11B0E9460\r
-:102C4000161C0E9422210E94722080E090E00E94C7\r
-:102C5000E61080E090E00C94FC100E94EC1B0C94B9\r
-:102C60001B160E941D1B292F22952F702C3030F42B\r
-:102C70002A3048F42250223078F405C02C3041F03C\r
-:102C80002F3031F009C0803E48F0803F29F406C063\r
-:102C900093FB882780F9089580E0089581E00895E6\r
-:102CA000CF93DF9300D000D01F92CDB7DEB70F9047\r
-:102CB0000F900F900F900F90DF91CF910895CF93C9\r
-:102CC000DF9300D000D000D0CDB7DEB726960FB688\r
-:102CD000F894DEBF0FBECDBFDF91CF9108951F9353\r
-:102CE000CF93DF93C0917B0116E080917C01C817E0\r
-:102CF00099F0D0E01C9FF0011D9FF00D1124E358C6\r
-:102D0000FE4F4081518162817381848195810E944F\r
-:102D10005F162196C770E9CFDF91CF911F9108957B\r
-:102D20004091AD015091AE016091AF017091B00141\r
-:102D30008091B1019091B2010C945F168091B20123\r
-:102D400082958F7009F054C08091AF01882309F4F7\r
-:102D50004FC080917B01A0917C014091B0015091C6\r
-:102D6000B1016091AD017091AE01B6E08A1709F42E\r
-:102D70003FC090E041155105C1F17F3F11F46F3F15\r
-:102D8000A1F1B89FF001B99FF00D1124E358FE4F57\r
-:102D9000218127132AC02081261327C022812111D7\r
-:102DA00024C0238134812417350710F421503109C0\r
-:102DB000241B350B283C3105C0F42091B2012F7043\r
-:102DC00020612093B20126E0289FF001299FF00D99\r
-:102DD0001124EE57FE4F80818F70806180838DEAD1\r
-:102DE00091E00E9411130C946F1601968770BECF6C\r
-:102DF0000895CF92DF92EF92FF920F931F93CF939C\r
-:102E0000DF93CDB7DEB762970FB6F894DEBF0FBE83\r
-:102E1000CDBF8C0185E0F801DE011D9601900D9279\r
-:102E20008A95E1F7D8014C9111965C911197129611\r
-:102E30006C918091B0019091B101009709F475C136\r
-:102E40003091AD017091AE017F3F19F43F3F09F41D\r
-:102E50006CC1F801C380D480E090AF01EE2009F48A\r
-:102E6000BEC02091B201C816D90628F0D601A81B11\r
-:102E7000B90BCD0104C0809590958C0D9D1DFF244C\r
-:102E8000F394883C910578F0F12C207F09F0C4C0C0\r
-:102E90007C2DD98AC88A89890E9450168DEA91E0D2\r
-:102EA0000E941113AFC0822F807F09F045C05713D5\r
-:102EB00013C0431311C061110FC02F702061209304\r
-:102EC000B2010E9490168DEA91E00E941113809148\r
-:102ED000B201F80185832EC0CD2819F15F3F11F4AE\r
-:102EE0004F3FF9F0F62E61111CC080917B012091BB\r
-:102EF0007C0136E0821709F45BC090E0389FF00156\r
-:102F0000399FF00D1124E358FE4F7181571306C00D\r
-:102F10007081471303C07281711103C001968770DD\r
-:102F2000E9CFF62E662309F41CC18091B2018160BD\r
-:102F30008093B201F12C15C1571309C0431307C088\r
-:102F4000611105C08091B201F8018583C8C04D8729\r
-:102F50005E878D859E856A8B0E9431166A898823DB\r
-:102F6000D1F16623C1F12091B201822F82958F7039\r
-:102F700090E0029774F08091AD019091AE01988736\r
-:102F80008F831986DB86CA862C87CE0107960E941E\r
-:102F9000111386E0F801ADEAB1E001900D928A9537\r
-:102FA000E1F70E949E160E949016FF24F394D9C068\r
-:102FB0004D875E878D859E850E941D1B292F22953A\r
-:102FC0002F70223008F0C1C09F7009F0BBC0805E36\r
-:102FD000883008F4C6C0C8010E941113E6CFC81695\r
-:102FE000D90608F453C0F601E81BF90BCF01883C61\r
-:102FF000910508F450C0F12C7C2DD98AC88A8989A2\r
-:103000000E945016EDEAF1E086E0DF011D928A95FC\r
-:10301000E9F70E949016A5C0571314C0431312C0BD\r
-:10302000611110C08091B201F8018583C8010E942E\r
-:10303000111386E0EDEAF1E0DF011D928A95E9F7D0\r
-:10304000FE2C8FC04D875E878D859E856A8B0E9482\r
-:1030500031166A89882309F4BECF662309F4BBCFF1\r
-:103060002091B201822F82958F7090E002970CF42C\r
-:1030700090CF8091AD019091AE019A8389831B829C\r
-:10308000DD82CC822E83CE01019681CF80959095F2\r
-:103090008C0D9D1DACCFF62E662309F49CCF5713E3\r
-:1030A00033C0431331C02091B20120FD24C0822FD0\r
-:1030B00082958F70482F50E041155105E1F0D801FD\r
-:1030C00015962C9315974F30510549F08F5F982F27\r
-:1030D0009295907F822F8F70892B15968C93C801C3\r
-:1030E0000E94111386E0F801ADEAB1E001900D9263\r
-:1030F0008A95E1F78ECF86E0F801ADEAB1E0019064\r
-:103100000D928A95E1F72DC04D875E878D859E854E\r
-:103110000E94311681113DCF8091B2018160809370\r
-:10312000B201C8010E9411131CC0662309F453CFD9\r
-:103130004D875E878D859E850E943116882309F410\r
-:103140004ACF27CF811143CF0CC0243008F043CFA2\r
-:103150009F7009F43CCFD80115969C91907F09F09F\r
-:1031600036CF8F2D62960FB6F894DEBF0FBECDBF5F\r
-:10317000DF91CF911F910F91FF90EF90DF90CF9053\r
-:1031800008951F93CF93DF93CDB7DEB72C970FB67B\r
-:10319000F894DEBF0FBECDBF4F83588769877A870B\r
-:1031A0008B879C87CE0107960E94F916882371F0C1\r
-:1031B0008A859B85892B09F441C088858F3F09F05A\r
-:1031C00065C08F818F3F09F061C038C086E0FE0185\r
-:1031D0003796DE01119601900D928A95E1F76A8586\r
-:1031E0007B856115710551F1FF81E885EF3F11F491\r
-:1031F000FF3F21F120917C0130E0C90101968770E9\r
-:10320000992740917B0150E08417950709F447C046\r
-:10321000F983EA837D836C8396E0929FD001939F2C\r
-:10322000B00D1124A358BE4FFE01319601900D92AE\r
-:103230009A95E1F780937C010E946F1616E08091C9\r
-:103240007B0190917C018917B9F1189FC00111246D\r
-:1032500083589E4F0E94F916882371F1E0917B01FB\r
-:103260001E9FF0011124E358FE4F4081518162817D\r
-:103270007381848195810E945F1680917B0190E02B\r
-:1032800001968770992780937B01D9CF4F8158850C\r
-:1032900069857A858B859C850E945F16CFCF0E94B9\r
-:1032A0002D1610927C0110927B01EDEAF1E086E090\r
-:1032B000DF011D928A95E9F72C960FB6F894DEBFD0\r
-:1032C0000FBECDBFDF91CF911F910895EF92FF9276\r
-:1032D0000F931F93CF93DF938C01892B09F46CC05C\r
-:1032E000F12CEE24E394E8012196F80184918437CF\r
-:1032F00040F4843008F051C0813081F0823019F1FF\r
-:103300005BC0853709F444C0A8F19CE7980F90375B\r
-:1033100008F052C08F770E94B41241C00E5F1F4F59\r
-:10332000FE01849190E2980F983050F48770FE2D42\r
-:1033300001C0FF0F8A95EAF78F2F0E94EF1B14C080\r
-:103340000E94EC112DC00E5F1F4FFE01849190E290\r
-:10335000980F983060F48770FE2D01C0FF0F8A959A\r
-:10336000EAF78F2F0E94F51B0E94161C19C00E94BD\r
-:10337000B41216C00E5F1F4FFE01C491CC2381F022\r
-:103380008FE99FE00197F1F700C00000C150F6CF30\r
-:103390000E5F1F4FFE01F49003C00E94EC118E01DE\r
-:1033A0008F2D882309F49FCFEFE9FFE03197F1F7E4\r
-:1033B00000C000008150F5CFDF91CF911F910F9198\r
-:1033C000FF90EF90089508956093B7017093B8014E\r
-:1033D0008093B9019093BA010C941B160F931F931D\r
-:1033E0000091B7011091B8012091B9013091BA0153\r
-:1033F000DC01CB01802B912BA22BB32B8093B70147\r
-:103400009093B801A093B901B093BA011F910F91A5\r
-:103410000C941B160F931F930091B7011091B801E4\r
-:103420002091B9013091BA01DC01CB0180239123B5\r
-:10343000A223B3238093B7019093B801A093B9015D\r
-:10344000B093BA011F910F910C941B160F931F9309\r
-:103450000091B7011091B8012091B9013091BA01E2\r
-:10346000DC01CB0180279127A227B3278093B701E6\r
-:103470009093B801A093B901B093BA011F910F9135\r
-:103480000C941B161092B3011092B4011092B50166\r
-:103490001092B6010C941B1641E050E060E070E021\r
-:1034A00004C0440F551F661F771F8A95D2F74093BB\r
-:1034B000B3015093B4016093B5017093B6010C94BD\r
-:1034C0001B1641E050E060E070E004C0440F551F5F\r
-:1034D000661F771F8A95D2F78091B3019091B4014E\r
-:1034E000A091B501B091B601482B592B6A2B7B2BCB\r
-:1034F0004093B3015093B4016093B5017093B6014A\r
-:103500000C941B1641E050E060E070E004C0440FF2\r
-:10351000551F661F771F8A95D2F740955095609585\r
-:1035200070958091B3019091B401A091B501B091D3\r
-:10353000B601482359236A237B234093B301509358\r
-:10354000B4016093B5017093B6010C941B1641E071\r
-:1035500050E060E070E004C0440F551F661F771F05\r
-:103560008A95D2F78091B3019091B401A091B501F1\r
-:10357000B091B601482759276A277B274093B301AA\r
-:103580005093B4016093B5017093B6010C941B166F\r
-:103590000F931F930091B3011091B4012091B501D5\r
-:1035A0003091B601DC01CB01802B912BA22BB32BE8\r
-:1035B0008093B3019093B401A093B501B093B60189\r
-:1035C0001F910F910C941B160F931F930091B30141\r
-:1035D0001091B4012091B5013091B601DC01CB010D\r
-:1035E00080239123A223B3238093B3019093B4014A\r
-:1035F000A093B501B093B6011F910F910C941B16C7\r
-:103600000F931F930091B3011091B4012091B50164\r
-:103610003091B601DC01CB0180279127A227B32787\r
-:103620008093B3019093B401A093B501B093B60118\r
-:103630001F910F910C941B160895CF92DF92EF9279\r
-:10364000FF920F931F93CF93DF938C01C090B30130\r
-:10365000D090B401E090B501F090B6018091B7012F\r
-:103660009091B801A091B901B091BA01C82AD92AA4\r
-:10367000EA2AFB2ACFE1D0E0D701C6010C2E04C014\r
-:10368000B695A795979587950A94D2F780FF07C0BE\r
-:10369000B8018C2F0E947B088130910531F421976D\r
-:1036A00058F7B80180E00E947B08DF91CF911F910D\r
-:1036B0000F91FF90EF90DF90CF90089590910C01C3\r
-:1036C0009923F1F090910D019923D1F0982F9695BF\r
-:1036D000969596959F3080F5E0910E01F0910F013F\r
-:1036E000E90FF11D877021E030E0A90102C0440F0D\r
-:1036F000551F8A95E2F7CA019181892B818308952C\r
-:1037000020910E0130910F01F90132969FEF40E0B8\r
-:103710005191851789F09F3F19F4511101C0942FE1\r
-:103720004F5F4E30A9F79F3F39F0F901E90FF11DC6\r
-:1037300097FDFA9582830895089590910C0199233D\r
-:10374000F9F090910D019923D9F0982F96959695BF\r
-:1037500096959F3028F5E0910E01F0910F01E90F49\r
-:10376000F11D877021E030E0A90102C0440F551F10\r
-:103770008A95E2F7CA018095918189238183089512\r
-:1037800020910E0130910F01F9013296205F3F4FD9\r
-:103790009081891301C010823196E217F307C1F7B7\r
-:1037A000089581E090E0E0910E01F0910F01E80FA3\r
-:1037B000F91F1082019680319105A9F70895909123\r
-:1037C000CD01892B8093CD01089580959091CD01F5\r
-:1037D00089238093CD0108951092CD010895909191\r
-:1037E000CC01892B8093CC01089580959091CC01D8\r
-:1037F00089238093CC0108951092CC010895809381\r
-:10380000BB0108951092BB01089580910E01909123\r
-:103810000F01FC0131969C01205F3F4F80E09191A8\r
-:1038200091118F5FE217F307D1F70895E0910E0130\r
-:10383000F0910F018091CD018083E0910E01F09114\r
-:103840000F0190818091CC01892B80838091BB01F5\r
-:10385000882361F0E0910E01F0910F019081892B96\r
-:1038600080830E94051C81111092BB0180910E0182\r
-:1038700090910F010C94D010CF92DF92EF92FF92B3\r
-:103880006C01EE24FF24C114D104E104F10421F001\r
-:10389000C701B60120E101C020E0C72ED82EE92ED5\r
-:1038A000FF24C114D104E104F10419F0285FC70119\r
-:1038B000B6016B017C0154E0F694E794D794C79469\r
-:1038C0005A95D1F7C114D104E104F10419F02C5F29\r
-:1038D000C701B6016B017C0142E0F694E794D794EE\r
-:1038E000C7944A95D1F7C114D104E104F10419F049\r
-:1038F0002E5FC701B601DC01CB01B695A795979560\r
-:103900008795892B8A2B8B2B09F02F5F822FFF90B5\r
-:10391000EF90DF90CF9008958091E601843011F10F\r
-:1039200020E488E190E00FB6F894A89580936000B9\r
-:103930000FBE2093600083B7817F846083BF83B70D\r
-:10394000816083BF7894889583B78E7F83BF0FB6DD\r
-:10395000F894A8958091600088618093600010922F\r
-:1039600060000FBE089508950C94B31CCF930E947D\r
-:10397000B41C0E949A060E94B31CC0E08C2F0E94C7\r
-:103980009007811104C0CF5FCE30C1F701C081E044\r
-:10399000CF9108950E942D160E94C4100C94BA096C\r
-:1039A00082E084BD93E095BD9AEF97BD80936E0051\r
-:1039B00008952FB7F8948091CF019091D001A091F4\r
-:1039C000D101B091D2012FBF0895CF92DF92EF9233\r
-:1039D000FF920F931F932FB7F8944091CF0150910E\r
-:1039E000D0016091D1017091D2012FBF6A017B019A\r
-:1039F000EE24FF248C0120E030E0C016D106E20660\r
-:103A0000F30610F4415051099A01281B390BC901E2\r
-:103A10001F910F91FF90EF90DF90CF9008951F922C\r
-:103A20000F920FB60F9211248F939F93AF93BF9372\r
-:103A30008091CF019091D001A091D101B091D2019C\r
-:103A40000196A11DB11D8093CF019093D001A09349\r
-:103A5000D101B093D201BF91AF919F918F910F90FF\r
-:103A60000FBE0F901F9018950E94BC0DF8942FEF79\r
-:103A700087EA91E6215080409040E1F700C00000C5\r
-:103A800087E090EBDC018093EF019093F001A0932D\r
-:103A9000F101B093F2019CE088E10FB6F894A8958B\r
-:103AA000809360000FBE90936000FFCFEF92FF9273\r
-:103AB0000F931F93CF93DF93D82FC0E08C2F0E94DA\r
-:103AC000900700E010E0E82EF12CC701002E02C0A4\r
-:103AD000959587950A94E2F780FD06C00F5F1F4F0A\r
-:103AE0000630110591F709C0602F7C2F80E00E94FD\r
-:103AF00058088D13F3CF81E004C0CF5FCE30F1F6CC\r
-:103B000080E0DF91CF911F910F91FF90EF9008958A\r
-:103B1000CF93C82F8CE20E94561D882321F08C2F52\r
-:103B2000CF910C94561D80E0CF910895CF930E94C1\r
-:103B3000DD1E811102C00E94C31EC5E6C15049F0BE\r
-:103B40000E949A068FE39CE90197F1F700C00000FC\r
-:103B5000F5CF89E20E94881D811113C18AE20E947B\r
-:103B6000881D81110E94C31E85E00E94881D81115D\r
-:103B70000E94341D0E94E81E8093CE0187E00E94BF\r
-:103B8000881D8823A9F18BE10E94881D882351F0AC\r
-:103B90008091CE0181FB222720F991E0922790FBB2\r
-:103BA00081F90EC08EE00E94881D882361F080910B\r
-:103BB000CE0182FB222720F991E0922790FB82F927\r
-:103BC0008093CE0115C080E10E94881D9091CE01A6\r
-:103BD000882341F093FB222720F981E0822780FB94\r
-:103BE00093F904C0892F809580FB90F99093CE01C2\r
-:103BF0008091CE010E94EC1E0E94FA1E8093E0018B\r
-:103C000080EE0E94881D882341F08091E001982F6A\r
-:103C1000909590FB80F98093E00189E30E94881DD4\r
-:103C2000882359F08091E00181FB222720F991E05F\r
-:103C3000922790FB81F98093E00182EE0E94881D1B\r
-:103C4000882359F08091E00182FB222720F991E03E\r
-:103C5000922790FB82F98093E00186EE0E94881DF6\r
-:103C6000882359F08091E00183FB222720F991E01D\r
-:103C7000922790FB83F98093E00183EE0E94881DD8\r
-:103C8000882359F08091E00184FB222720F991E0FC\r
-:103C9000922790FB84F98093E00185E30E94881DC0\r
-:103CA000882359F08091E00185FB222720F991E0DB\r
-:103CB000922790FB85F98093E00181E30E94881DA3\r
-:103CC000882359F08091E00186FB222720F991E0BA\r
-:103CD000922790FB86F98093E00181E10E94881D84\r
-:103CE000882359F08091E00187FB222720F991E099\r
-:103CF000922790FB87F98093E0018091E0010E9478\r
-:103D0000FE1E8091E00187FB882780F980930D01DA\r
-:103D100087E20E94881DC82F8EE10E94881D8111B4\r
-:103D2000C2608FE10E94881D8111C46080E20E9400\r
-:103D3000881D8111C86081E20E94881D8111C061C7\r
-:103D400082E20E94881D8111C06283E20E94881D68\r
-:103D50008111C06484E20E94881D882311F0C0682C\r
-:103D600002C0CC2329F08C2F0E94F51E6C2F03C0BB\r
-:103D70000E94F11E682F70E080E090E0CF910C94DB\r
-:103D8000E419CF9108956DEE7EEF80E090E00E94FF\r
-:103D9000372560E082E090E00E94292560E083E022\r
-:103DA00090E00E94292560E084E090E00E942925AF\r
-:103DB00060E085E090E00C94292580E090E00E948E\r
-:103DC000232521E08D3E9E4F09F020E0822F0895AB\r
-:103DD00082E090E00C941B25682F82E090E00C9428\r
-:103DE000292583E090E00C941B25682F83E090E068\r
-:103DF0000C94292584E090E00C941B25682F84E026\r
-:103E000090E00C9429258091D50180FF0BC0609132\r
-:103E1000130185E0689FB00111247595679575952C\r
-:103E200067952BC081FF09C06091130185E0689FF1\r
-:103E3000B00111247595679520C082FF07C060917D\r
-:103E4000130185E0689FB001112417C09091D6013D\r
-:103E50009923D1F060911201961788F720911301F0\r
-:103E600085E0289F90011124929FA001939F500DFF\r
-:103E7000112470E0CA010E94ED246038710540F4FD\r
-:103E80006115710519F406C065E070E0862F08958C\r
-:103E90008FE7089581E008958091D50180FF08C0E3\r
-:103EA0006091110170E0759567957595679521C0D2\r
-:103EB00081FF06C06091110170E07595679519C08A\r
-:103EC00082FF04C06091110170E010C09091D60192\r
-:103ED000992399F0609110019617A0F78091110134\r
-:103EE000899FC001112470E00E94ED2460387105A3\r
-:103EF00040F46115710519F406C061E070E0862F89\r
-:103F000008958FE7089581E00895803F21F40E948D\r
-:103F1000031F819504C0813F29F40E94031F8093F1\r
-:103F2000D9010895823F21F40E94031F819504C0A6\r
-:103F3000833F29F40E94031F8093D8010895893F8D\r
-:103F400019F40E944C1F05C08A3F31F40E944C1F97\r
-:103F500081958093DA0108958B3F21F40E944C1FD4\r
-:103F6000819504C08C3F29F40E944C1F8093DB0193\r
-:103F70000895843F21F48091D701816017C0853F67\r
-:103F800021F48091D701826011C0863F21F4809195\r
-:103F9000D70184600BC0873F21F48091D7018860EE\r
-:103FA00005C0883F31F48091D70180618093D701AB\r
-:103FB00008958D3F21F48091D50181600BC08E3F23\r
-:103FC00021F48091D501826005C08F3F29F4809152\r
-:103FD000D50184608093D5010895803F39F48091A4\r
-:103FE000D90187FF6CC01092D90169C0813F29F4C3\r
-:103FF0008091D9011816BCF362C09091D801823F1C\r
-:1040000029F497FF5CC01092D80159C0833F19F47E\r
-:104010001916CCF354C0893F41F48091DA01181687\r
-:104020000CF04DC01092DA014AC08A3F29F4809109\r
-:10403000DA0187FF44C0F6CF8B3F39F48091DB0172\r
-:1040400087FF3DC01092DB013AC08C3F29F480917C\r
-:10405000DB011816BCF333C0843F21F48091D701F3\r
-:104060008E7F17C0853F21F48091D7018D7F11C0CD\r
-:10407000863F21F48091D7018B7F0BC0873F21F4CD\r
-:104080008091D701877F05C0883F31F48091D701A7\r
-:104090008F7E8093D70113C08D3F21F48091D5018D\r
-:1040A0008E7F0BC08E3F21F48091D5018D7F05C09E\r
-:1040B0008F3F29F48091D5018B7F8093D50180912A\r
-:1040C000D80181110EC08091D90181110AC080915F\r
-:1040D000DA01811106C08091DB01811102C01092CA\r
-:1040E000D601089587ED91E00E94DB100E94D91C53\r
-:1040F0009093D4018093D30108951F93CF93DF93BE\r
-:104100008091D3019091D4010E94E51CAC01909163\r
-:10411000D601992321F02091140130E006C02091AE\r
-:1041200015018AE0289F900111244217530708F4D3\r
-:1041300085C08091D801C091D901D091DA01109148\r
-:10414000DB01811107C0C11175C0D11173C01111FC\r
-:1041500071C074C09F3F19F09F5F9093D6011816ED\r
-:1041600024F40E94031F8093D8018091D80187FF17\r
-:1041700005C00E94031F81958093D8011C1624F46A\r
-:104180000E94031F8093D9018091D90187FF05C048\r
-:104190000E94031F81958093D9016091D801662305\r
-:1041A00031F1C091D901CC2311F1062E000C770B0F\r
-:1041B000880B990B0E94F42323E333E343E35FE38B\r
-:1041C0000E9458240E94BC236093D8016C2FCC0F0E\r
-:1041D000770B880B990B0E94F42323E333E343E32B\r
-:1041E0005FE30E9458240E94BC236093D9011D16EE\r
-:1041F00024F40E944C1F8093DA018091DA0187FF3A\r
-:1042000005C00E944C1F81958093DA01111624F499\r
-:104210000E944C1F8093DB018091DB0187FF05C06A\r
-:104220000E944C1F81958093DB01DF91CF911F91FC\r
-:104230000C9472209F3F09F08FCFA0CFDF91CF91D8\r
-:104240001F910895E7EDF1E085E0DF011D928A9569\r
-:10425000E9F71092D6011092D5010895833081F1CB\r
-:1042600028F4813059F08230D1F00895853009F476\r
-:1042700049C0B8F1863009F456C0089580911501FF\r
-:10428000262F30E0280F311D2F3F310524F4680F11\r
-:104290006093150108958FEF809315010895809123\r
-:1042A0001401262F30E0280F311D2F3F310524F453\r
-:1042B000680F6093140108958FEF8093140108959F\r
-:1042C00080911301262F30E0280F311D2F3F31053B\r
-:1042D00024F4680F6093130108958FEF8093130106\r
-:1042E000089580911201262F30E0280F311D2F3FB5\r
-:1042F000310524F4680F6093120108958FEF8093C5\r
-:104300001201089580911101262F30E0280F311DF0\r
-:104310002F3F310524F4680F6093110108958FEF4A\r
-:1043200080931101089580911001262F30E0280F0D\r
-:10433000311D2F3F310524F4680F6093100108955B\r
-:104340008FEF809310010895833011F128F48130AC\r
-:1043500049F0823091F00895853081F120F1863066\r
-:10436000C1F1089580911501681720F4861B809390\r
-:104370001501089510921501089580911401681790\r
-:1043800020F4861B8093140108951092140108955F\r
-:1043900080911301681720F4861B80931301089500\r
-:1043A00010921301089580911201681720F4861B62\r
-:1043B00080931201089510921201089580911101C5\r
-:1043C000681720F4861B8093110108951092110143\r
-:1043D000089580911001681720F4861B80931001C6\r
-:1043E00008951092100108950F931F938D3109F4D1\r
-:1043F0006BC008F03FC08E3009F47DC0C0F4873038\r
-:1044000009F46EC068F4863009F0AFC08091CE0127\r
-:10441000817F8E7F8093CE0181E08093DD01A6C0F5\r
-:10442000883009F458C08B3009F49BC09EC0863197\r
-:1044300009F497C078F4803109F470C0813109F033\r
-:1044400094C00E942D1690910D0181E089278093E0\r
-:104450000D0187C0893109F484C08B3109F085C012\r
-:104460008091CE0181FB222720F991E0922790FBD9\r
-:1044700081F94AC0853309F45BC048F4873209F4F6\r
-:1044800057C008F45AC0893209F452C06EC0833450\r
-:1044900038F48A3308F067C0883309F462C065C015\r
-:1044A000833409F445C0883409F05FC00E942D169A\r
-:1044B0000FEF13ED20E3015010402040E1F700C062\r
-:1044C00000000E94341D4DC00E9476230E94C4103B\r
-:1044D0000E94BA0946C00E94E81E0E94FA1E41C00E\r
-:1044E0009091CE01892F817090FF12C0917F9E7FA5\r
-:1044F0009093CE013BC08091CE0182FB222720F910\r
-:1045000091E0922790FB82F98093CE01992349F1A3\r
-:104510008091CE0181608093CE0123C08091CE0135\r
-:1045200083FB222720F991E0922790FB83F9ECCFBF\r
-:1045300061E070E080E090E010C08D5141E050E01B\r
-:1045400060E070E08A019B0104C0000F111F221F70\r
-:10455000331F8A95D2F7C901B8010E94E4190E945D\r
-:104560002D1681E003C08953E9CF80E01F910F91A0\r
-:10457000089580E008950C94B922CF93C82F8091BC\r
-:10458000DD01813079F018F08230E9F187C0E091E7\r
-:104590000E01F0910F018081813169F0823209F0C2\r
-:1045A0007FC009C0E0910E01F0910F01808181313F\r
-:1045B00011F0823261F48C2F0E94BB22811104C061\r
-:1045C0008C2F0E94F4211DC081E090E01AC08C2F36\r
-:1045D0000E94B922811114C0C43179F048F4CB3063\r
-:1045E00079F0C03109F060C082E08093DD0108C03D\r
-:1045F000C93219F0C83321F057C01092DD0154C000\r
-:1046000081E0817053C0C93289F118F5C43171F16C\r
-:10461000A8F4C73009F046C08AE08093150194E100\r
-:104620009093140193E0909313018093120188E01A\r
-:104630008093110188E28093100134C0CE51C630BE\r
-:1046400088F5EC2FF0E0E65DFE4F80818093DC0181\r
-:1046500029C0CE34E9F020F4CB3421F56AE013C050\r
-:10466000C13579F0C235F1F461E00DC08091DC0113\r
-:10467000882319F01092DC0115C081E08093DD01E0\r
-:1046800015C061E006C08091DC010E942E210AC0A5\r
-:104690006AE08091DC010E94A42104C01092DD0137\r
-:1046A00080E004C081E002C080E0ABCFCF910895EC\r
-:1046B000E1E8F0E080818860808380818160808390\r
-:1046C0008FB7F89493E09093890090ED90938800D1\r
-:1046D0008FBF0895EFE6F0E08081826080830895C7\r
-:1046E000EFE6F0E080818D7F80830895EFE6F0E0D3\r
-:1046F000908182E08927808308951F920F920FB6E0\r
-:104700000F9211242F933F934F935F936F937F9357\r
-:104710008F939F93AF93BF93EF93FF938091DE01AD\r
-:104720009091DF0101969093DF018093DE0181116A\r
-:1047300003C082E00E94BA09E091DF01E695E695A8\r
-:10474000F0E0E156F84FE4918091DE018E1303C052\r
-:1047500080E00E94BA09FF91EF91BF91AF919F91C4\r
-:104760008F917F916F915F914F913F912F910F901A\r
-:104770000FBE0F901F9018950E94C3236894B1112B\r
-:104780000C94522408950E94372488F09F5798F083\r
-:10479000B92F9927B751B0F0E1F0660F771F881F46\r
-:1047A000991F1AF0BA95C9F714C0B13091F00E9460\r
-:1047B0005124B1E008950C945124672F782F882755\r
-:1047C000B85F39F0B93FCCF3869577956795B39587\r
-:1047D000D9F73EF490958095709561957F4F8F4FF6\r
-:1047E0009F4F0895E89409C097FB3EF490958095FB\r
-:1047F000709561957F4F8F4F9F4F9923A9F0F92FA7\r
-:1048000096E9BB279395F695879577956795B79524\r
-:10481000F111F8CFFAF4BB0F11F460FF1BC06F5F0A\r
-:104820007F4F8F4F9F4F16C0882311F096E911C01C\r
-:10483000772321F09EE8872F762F05C0662371F03D\r
-:1048400096E8862F70E060E02AF09A95660F771F51\r
-:10485000881FDAF7880F9695879597F9089557FD81\r
-:104860009058440F551F59F05F3F71F04795880FDE\r
-:1048700097FB991F61F09F3F79F087950895121675\r
-:1048800013061406551FF2CF4695F1DF08C0161621\r
-:1048900017061806991FF1CF8695710561050894D2\r
-:1048A0000895E894BB2766277727CB0197F90895E9\r
-:1048B0000E946B240C94DC240E94CE2438F00E94C9\r
-:1048C000D52420F0952311F00C94C5240C94CB240E\r
-:1048D00011240C9452240E942F2470F3959FC1F34D\r
-:1048E000950F50E0551F629FF001729FBB27F00D9E\r
-:1048F000B11D639FAA27F00DB11DAA1F649F6627F3\r
-:10490000B00DA11D661F829F2227B00DA11D621F41\r
-:10491000739FB00DA11D621F839FA00D611D221FFB\r
-:10492000749F3327A00D611D231F849F600D211DDF\r
-:10493000822F762F6A2F11249F5750409AF0F1F062\r
-:1049400088234AF0EE0FFF1FBB1F661F771F881FCB\r
-:1049500091505040A9F79E3F510580F00C94C5241A\r
-:104960000C9452245F3FE4F3983ED4F386957795F8\r
-:104970006795B795F795E7959F5FC1F7FE2B880F71\r
-:10498000911D9695879597F9089597F99F6780E807\r
-:1049900070E060E008959FEF80EC089500240A9491\r
-:1049A0001616170618060906089500240A9412160A\r
-:1049B0001306140605060895092E0394000C11F43D\r
-:1049C000882352F0BB0F40F4BF2B11F460FF04C0EA\r
-:1049D0006F5F7F4F8F4F9F4F089597FB072E16F401\r
-:1049E000009407D077FD09D00E94072507FC05D069\r
-:1049F0003EF4909581959F4F0895709561957F4FF6\r
-:104A00000895EE0FFF1F0590F491E02D0994AA1B65\r
-:104A1000BB1B51E107C0AA1FBB1FA617B70710F0A9\r
-:104A2000A61BB70B881F991F5A95A9F780959095DB\r
-:104A3000BC01CD010895F999FECF92BD81BDF89AD0\r
-:104A4000992780B50895A8E1B0E042E050E00C94C9\r
-:104A50003E25262FF999FECF1FBA92BD81BD20BDFC\r
-:104A60000FB6F894FA9AF99A0FBE019608950E942B\r
-:104A70002925272F0C942A25DC01CB01FC01F9996B\r
-:104A8000FECF06C0F2BDE1BDF89A319600B40D929A\r
-:0C4A900041505040B8F70895F894FFCF53\r
-:104A9C002002BB094B0A260AF209BE090101BC011E\r
-:104AAC0028080A03140A3F4D363960071307DD0640\r
-:104ABC00A4063706500669068206010203040506A1\r
-:044ACC0007080900CE\r
-:00000001FF\r
+:100000000C94F0030C9434040C9434040C943404D5
+:100010000C9434040C9434040C9434040C94340480
+:100020000C9434040C9434040C94210E0C94F30EB0
+:100030000C9434040C9434040C9434040C94340460
+:100040000C9434040C9478230C9434040C943404ED
+:100050000C9434040C94091D0C9434040C94340452
+:100060000C9434040C9434040C9434040C94340430
+:100070000C9434040C9434040C9434040C94340420
+:100080000C9434040C9434040C9434040C94340410
+:100090000C9434040C9434040C9434040C94340400
+:1000A0000C9434040C9434040C94340444044E042E
+:1000B00066047E04C604CC04ED04D204E804DE0425
+:1000C000E304D804AE049604F204600F820F7010AB
+:1000D000820F7010C70FEA0F70103F1052103413C8
+:1000E000341363136313A613E413FD15FD15FD13F9
+:1000F000FD15FE14FE14D115FD15FD15E81501E1E1
+:100100000137023702E10138023801E201250225F8
+:1001100002E20001E10137023702E1013802380151
+:10012000E10130023002E10001E10137023702E172
+:100130000138023801E10107020702E1000135023E
+:1001400035012002200001E10137023702E10138C8
+:10015000023801E10125022502E10001E101360238
+:100160003602E10138023801E10125022502E100F1
+:1001700001E10136023602E10138023801E10126CF
+:10018000022602E10001E10137023702E1013802F3
+:100190003801E10126022602E10002E002E201301C
+:1001A00002300002E002E20001E001E20002E002AF
+:1001B000E3016402640002E002E30001E001E30005
+:1001C00002E002E2012E022E02E10002E002E10260
+:1001D000E20001E001E101E20002E001E3010602C8
+:1001E0000602E30002E00001E00002E001E3011981
+:1001F000021902E30002E00001E0000000F0A1F0BB
+:10020000A329002B00E200E100358100001E00144C
+:100210000004001D710D304D831F001A0016001BD5
+:10022000000C304C00200008000700060052002A95
+:1002300000210015000900190051004A0022001792
+:10024000000A00050000000330E101E3000000E2C5
+:1002500000000002543100E7000000E60000000446
+:100260005423001C000B00110000002E7F240018F6
+:10027000000D00100050004B0025000C000E003651
+:10028000004F002C00260012000F003700E1082864
+:10029000002700130033003871E1044E002D002FB9
+:1002A000003474E50030810000010001000100010C
+:1002B00000010000003A003500310001000100019A
+:1002C000003B0035022102350001004C003C001EBD
+:1002D0000224062202010001003D002D0224022416
+:1002E00004010001003E000100370011040000017C
+:1002F000000100010000000100000001000E3001BB
+:100300000000000100000068003F002406240224D1
+:100310000400004500400022042502110431026956
+:100320000041002304260264005000010042003511
+:100330000025045200510001004300350226043814
+:10034000004F006A0044001E02310021020100003B
+:100350000001000100010001000100000001000196
+:100360000001000100010001000100F400F200FBA7
+:1003700000010001000100F000F100FA000100019D
+:10038000000100F500F300FC00010001000100F98C
+:1003900000FA00F600000001000100010000000169
+:1003A0000000000100A800010000000100000001A1
+:1003B0000001000100A900AA0000000100010001E5
+:1003C000000100010001000100010001000100AC7A
+:1003D000000100B600010001000100AB0050000167
+:1003E00000010001000100520051000100AE0001B7
+:1003F00000010001004F00000001000100010001A8
+:1004000000010000000100010001000100010001E5
+:1004100000010001000100010001000100010001D4
+:1004200000010001000100010001000100010001C4
+:1004300000010001000100010001000100000001B5
+:100440000001000100000001000000010004300173
+:1004500000000001000000010005300630093001F5
+:1004600000000001000A300B3008300100010001DB
+:10047000000100073001000100010001000100013E
+:100480000001000100010001000100010001000164
+:100490000001000100010001000100010001000055
+:1004A0000001000100010001000100000001000145
+:1004B00000010001000100010001000100500001E5
+:1004C0000001000100010052005100010001000183
+:1004D00000010001004F00010001000100010001C6
+:1004E0000001000100000001000100010000000106
+:1004F00000000001000100010000000100000001F7
+:10050000003F00520051002302000001004000247F
+:100510000021001E00270001004100250022001FCD
+:1005200000370001004200260023002000360001B1
+:10053000004300300230002402270201004400453D
+:1005400000380001000100000001000100E100018D
+:1005500000E0000000010001000100010001003D79
+:100560000001000100010001000100E000010001A4
+:10057000000100010001002C000100010001000148
+:100580000001003C00010001000100010000003AF0
+:1005900000010001000000010000003B000E3001DE
+:1005A0000000000100000001000100010001000145
+:1005B0000000000100010001000100010001000134
+:1005C0000001000100010001000100010001000123
+:1005D0000001000100010001000100010001000113
+:1005E0000001000100010001000100010001000004
+:1005F0000016034500720067006F0044006F00782A
+:1006000000200045005A00000016034500720067F4
+:10061000006F0044006F007800200045005A000081
+:10062000000403090409026D00040100A0FA090492
+:1006300000000103010100092111010001223F0016
+:100640000705810308000A090401000103010200F3
+:10065000092111010001224D000705820308000A4B
+:100660000904020001030000000921110100012218
+:1006700036000705830308000A090403000103008C
+:10068000000009211101000122390007058403102F
+:1006900000011201100100000008EDFE0713010027
+:1006A0000102000105010906A101050719E029E77A
+:1006B0001500250195087501810205081901290514
+:1006C00095057501910295017503910105071900C2
+:1006D000297715002501957875018102C00501096A
+:1006E00080A101850216010026B7001A01002AB771
+:1006F00000751095018100C0050C0901A101850359
+:10070000160100269C021A01002A9C027510950110
+:100710008100C005010902A1010901A10005091913
+:1007200001290515002501950575018102950175C1
+:100730000381010501093009311581257F95027575
+:1007400008810609381581257F9501750881060500
+:100750000C0A38021581257F950175088106C0C0F5
+:1007600005010906A101050719E029E71500250182
+:100770009508750181029501750881010508190127
+:1007800029059505750191029501750391010507EC
+:10079000190029FF150025FF950675088100C00086
+:1007A00000000000000000000000010204060A0F23
+:1007B00017202C3A4A5D71879DB3C7DAE9F5FCFF33
+:1007C000FCF5E9DAC7B39D87715D4A3A2C20170F13
+:1007D0000A06040201000000000000000000000002
+:1007E00011241FBECFEFDAE0DEBFCDBF04B603FE9B
+:1007F00024C08091F0019091F101A091F201B0919B
+:10080000F3018730904BA740B04BB9F41092F00140
+:100810001092F1011092F2011092F30114BE84B70C
+:10082000877F84BF88E10FB6F894809360001092B0
+:1008300060000FBEE0E0FFE3099511E0A0E0B1E049
+:10084000E4E7FAE402C005900D92A433B107D9F7AA
+:1008500011E0A4E3B1E001C01D92A03FB107E1F7B0
+:100860000E94650B0C9438250C940000462F50E034
+:100870004F30510508F0DEC0DC01FA01EA5AFF4FA3
+:1008800012968C910C94ED24882321F085EE0E9421
+:10089000D111D0C085EE0E949912CCC0882349F0B6
+:1008A0000E94D31C909335018093340188EF91E02E
+:1008B000089580913401909135010E94DF1C8739A1
+:1008C00091050CF0A8C08AEE91E00895882349F0C4
+:1008D0000E94D31C909335018093340187EE91E000
+:1008E000089580913401909135010E94DF1C873971
+:1008F00091050CF093C089ED91E00895882349F0AB
+:100900000E94D31C909335018093340182ED91E0D5
+:10091000089580913401909135010E94DF1C873940
+:1009200091050CF07EC080EC91E00895882349F099
+:100930000E94D31C90933501809334018BEB91E09E
+:10094000089580913401909135010E94DF1C873910
+:1009500091050CF069C08DEA91E00895882349F073
+:100960000E94D31C909335018093340188EA91E072
+:10097000089580913401909135010E94DF1C8739E0
+:1009800091050CF054C08AE991E00895882309F498
+:1009900051C085E891E00895882309F44BC080E7B1
+:1009A00091E00895882309F445C08BE591E008950E
+:1009B000882309F43FC086E491E008958823D1F1AB
+:1009C0008DE391E008958823A9F188E291E00895EC
+:1009D000882381F183E191E00895882359F18EEF16
+:1009E00090E00895882331F18091B3019091B40192
+:1009F000A091B501B091B60120E2822780729927BB
+:100A0000AA27BB278093B3019093B401A093B501AB
+:100A1000B093B6010FC085EF91E0089584EE91E0A8
+:100A200008958BEC91E0089586EB91E0089583EAB8
+:100A300091E0089580E090E0089508956091B301F9
+:100A40007091B4018091B5019091B6010E94381C5B
+:100A500056985E9825982D9826982E9827982F9826
+:100A60008330C1F028F4813041F0823049F008959C
+:100A7000843049F0853051F00895259A2D9A0895D3
+:100A8000269A2E9A0895259A2D9A04C0259A2D9A71
+:100A9000269A2E9A279A2F9A08950C941E055698F6
+:100AA0005E9825982D9826982E9827982F988FEF46
+:100AB00090E0909389008093880090938B008093BE
+:100AC0008A0090938D0080938C00259A2D9A2FEFA9
+:100AD00080E792E0215080409040E1F700C00000A4
+:100AE000269A2E9A2FEF80E792E021508040904086
+:100AF000E1F700C00000279A2F9A2FEF80E792E0DD
+:100B0000215080409040E1F700C0000025982D98CA
+:100B10002FEF80E792E0215080409040E1F700C045
+:100B2000000026982E982FEF80E792E02150804019
+:100B30009040E1F700C0000027982F9856985E98E3
+:100B400025982D9826982E9827982F98089589EA09
+:100B50008093800089E08093810024982C983F98AE
+:100B60008AB18F748AB96E98479A8BB1806B8BB9B2
+:100B7000769A0E944F050C941D0580E28093000137
+:100B80008091360181110EC00E940C0681E0809395
+:100B900036012FEF83ED90E3215080409040E1F744
+:100BA00000C0000080E40E941206809300018111C1
+:100BB0002EC00E943C0680930001811128C00E9433
+:100BC0003C0680930001811122C08FE30E943C0605
+:100BD0008093000181111BC00E94340680E40E94B2
+:100BE000120680930001811112C08CE00E943C0625
+:100BF0008093000181110BC00E943C06809300018C
+:100C0000811105C08FE30E943C06809300010E9481
+:100C100034068091000108951092B9008AE0809313
+:100C2000B800089594EA9093BC009091BC0097FF9F
+:100C3000FCCF9091B900987F983021F0903111F05D
+:100C400081E008958093BB0084E88093BC0080918C
+:100C5000BC0087FFFCCF8091B900887F883111F0FC
+:100C6000803471F780E0089584E98093BC0080911E
+:100C7000BC0084FDFCCF08958093BB0084E8809382
+:100C8000BC008091BC0087FFFCCF9091B900987F99
+:100C900081E0983209F480E0089584E88093BC00F4
+:100CA0008091BC0087FFFCCF8091BB0008958091AC
+:100CB0000001811115C080E40E941206809300019A
+:100CC00081110CC082E10E943C06809300018111D9
+:100CD00005C08FEF0E943C06809300010E943406FD
+:100CE00084B1807F84B985B1807F85B98AB1837FE3
+:100CF0008AB98BB1837F8BB93E98469808950E943C
+:100D0000BD05809300010E94570680B38C7080BBA4
+:100D100081B3836F81BBA8E3B1E0E6E4F1E08EE04C
+:100D20008E0F11921D928E13FCCF0C94A705BF92CB
+:100D3000CF92DF92EF92FF920F931F93CF93DF93A7
+:100D400080910001882379F0809137018F5F809333
+:100D50003701811108C00E94BD05809300018111F7
+:100D600002C00E944F0508E311E0C0E0D0E0DD249E
+:100D7000D39482E0C82EEE24E394F12CC730D10541
+:100D800000F580910001811164C080E40E94120688
+:100D900080930001811112C082E10E943C06809381
+:100DA000000181110BC0C7010C2E01C0880F0A94ED
+:100DB000EAF780950E943C06809300010E94340669
+:100DC00048C0CA30A1F028F4C83059F0C93061F0E9
+:100DD00005C0CC3089F070F0CD3089F0209A289889
+:100DE00010C0219A29980DC0229A2A980AC0239AE5
+:100DF0002B9807C0529A01C0539A5B9802C03E9A42
+:100E0000469890EA9A95F1F79FB1799902C082E0ED
+:100E100001C080E091709D25982B7C9902C084E0F0
+:100E200001C080E0892B7D9902C038E001C030E02C
+:100E3000832B7E9902C020E101C020E0822B9FB16C
+:100E40009095991F9927991F9295990F907E892BBC
+:100E50000FC080910001811149C080E40E941206F8
+:100E600080930001882379F1B12C0E9434068B2DE8
+:100E7000F8019081981719F08083C09201010E94B7
+:100E8000570621960F5F1F4FCE30D10509F076CF60
+:100E900080910101882361F18150809301018823B1
+:100EA00039F08FE99FE00197F1F700C0000020C002
+:100EB000A6E4B1E0E8E3F1E0CF01825F91919D9378
+:100EC0008E13FCCF15C083E10E943C068093000185
+:100ED0008111CACF81E40E94120680930001811122
+:100EE000C3CF0E944D06B82EB094BFCF80E0C0CFD4
+:100EF0000E944D0581E0DF91CF911F910F91FF90EE
+:100F0000EF90DF90CF90BF900895E82FF0E0EA5B7C
+:100F1000FE4F8081089508958B3B910578F4883ABF
+:100F2000910540F5853A9105D0F48430910508F09B
+:100F3000B1C08130910509F4ADC06BC0803E910510
+:100F400008F467C0883E910508F4A4C09C01205FA6
+:100F500031092031310508F05CC090650895853A6B
+:100F6000910509F459C0863A910509F058C082E804
+:100F700090E40895883A910509F454C0893A91059E
+:100F800009F453C08A3A910509F452C08B3A91058D
+:100F900009F451C08C3A910509F450C08D3A91057D
+:100FA00009F44FC0803B910509F44EC08E3A91057B
+:100FB00009F44DC08F3A910509F44CC0813B91056D
+:100FC00009F44BC0823B910509F44AC0833B91056B
+:100FD00009F449C0843B910509F448C0853B91055B
+:100FE00009F447C0863B910509F446C0873B91054B
+:100FF00009F445C0883B910509F444C0893B91053B
+:1010000009F443C08A3B910509F442C080E094E4AE
+:10101000089580E090E0089581E890E4089583E8E1
+:1010200090E4089582EE94E4089589EE94E408959E
+:101030008AEE94E4089585EB94E4089586EB94E4B5
+:10104000089587EB94E408958CEC94E408958DEC76
+:1010500094E4089583E895E408958AE895E4089572
+:1010600082E995E4089584E995E4089581E296E49F
+:10107000089583E296E4089584E296E4089585E273
+:1010800096E4089586E296E4089587E296E408954A
+:101090008AE296E40895089596E0799FF00111247C
+:1010A00094E5899FE00DF11D1124E60FF11DEE0F6F
+:1010B000FF1FEF5FFD4F859194910895880F991F51
+:1010C000FC01E558FF4F859194910895880F991F71
+:1010D000FC01E550FE4F85919491089526E0729FA2
+:1010E000F001112444E5849FE00DF11D1124E60F69
+:1010F000F11DEE0FFF1FEF5FFD4F859194919C0155
+:101100003A9521154FE1340708F41AC13F512115D2
+:10111000304120F49F700E94660808959C0130536E
+:101120002115304118F49927906C0895811520E518
+:10113000920769F40E941F164FEF84E39CE0415030
+:1011400080409040E1F700C000000C942E1D8130DB
+:1011500020E5920731F48091CE0181608093CE0129
+:1011600008959C0130552115304108F051C0292FB8
+:1011700033272F70332721303105D9F4AC01437068
+:10118000552702C0220F331F4A95E2F73C68AC0195
+:1011900064E0440F551F6A95E1F744275370242BF0
+:1011A000352B73E0880F991F7A95E1F780769927A0
+:1011B0001DC02230310529F4982F8827816F906A4D
+:1011C000089523303105A9F4AC014370552721E07F
+:1011D00030E002C0220F331F4A95E2F73C6843E03B
+:1011E000880F991F4A95E1F7807E9770822B932B89
+:1011F000089524303105E1F4AC014370552721E016
+:1012000030E002C0220F331F4A95E2F73A68E7CF79
+:101210009C0130572115304118F49F709062089559
+:101220009C0130582115304118F49F70906A089540
+:10123000803E9105E0F4803C910558F5813391059D
+:1012400009F46FC048F48932910509F463C08A3209
+:10125000910509F46DC072C089339105E9F08238B7
+:101260009105D1F08533910509F44DC067C0833EE7
+:10127000910581F138F4803E9105B9F0823E9105E7
+:10128000D9F05CC0863E910561F1873E9105A1F1E0
+:1012900055C00E945E0808952091E10120FD02C022
+:1012A00021FF4CC080EE90E049C08091E10180FFB9
+:1012B000F9CF89E390E042C08091E10182FF0EC046
+:1012C0008091E10184FF03C080E090E037C083EEAD
+:1012D00090E034C08091E10182FFF2CF82EE90E095
+:1012E0002DC08091E10183FF0BC08091E10184FD5D
+:1012F000EBCF87EE90E022C08091E10183FFF5CF34
+:1013000086EE90E01BC08091E10185FF07C089E275
+:1013100090E014C08091E10185FFF9CF85E390E072
+:101320000DC08091E10186FF07C08AE290E006C00F
+:101330008091E10186FFF9CF81E390E00E948C0764
+:10134000089508950C94A109809164010895CF93A4
+:10135000DF9300D01F92CDB7DEB79C018091E701EB
+:10136000843019F593E099833B832A839093E900B5
+:101370008FEF9091E800815095FD06C095ED9A950C
+:10138000F1F700008111F5CF8091E80085FF0DC0D5
+:1013900040E050E063E070E0CE0101960E94110C45
+:1013A0008091E8008E778093E8000F900F900F9067
+:1013B000DF91CF910895CF93DF9300D01F92CDB7E7
+:1013C000DEB72091E701243021F522E029839B83B9
+:1013D0008A8383E08093E9008FEF9091E800815049
+:1013E00095FD06C095ED9A95F1F700008111F5CFB6
+:1013F0008091E80085FF0DC040E050E063E070E0C0
+:10140000CE0101960E94110C8091E8008E778093A6
+:10141000E8000F900F900F90DF91CF9108952091E9
+:10142000E7012430F1F422E02093E9002FEF30911E
+:10143000E800215035FD06C035ED3A95F1F7000082
+:101440002111F5CF2091E80025FF0BC040E050E0CE
+:1014500065E070E00E94110C8091E8008E77809327
+:10146000E8000895CF93DF93EC019091E701943069
+:1014700009F046C080910C018823D9F080910D01BC
+:101480008823B9F09093E9008FEF9091E8008150A4
+:1014900095FD06C095E19A95F1F700008111F5CF11
+:1014A0008091E80085FF2CC040E050E060E170E0F2
+:1014B00017C081E08093E9008FEF9091E8008150A0
+:1014C00095FD06C095ED9A95F1F700008111F5CFD5
+:1014D0008091E80085FF14C040E050E068E070E0D3
+:1014E000CE010E94110C8091E8008E778093E80075
+:1014F00080E1FE01A4E5B1E001900D928A95E1F74B
+:10150000DF91CF9108958091E601811109C00E9479
+:10151000A60D0E94030E8091E20084608093E20099
+:1015200008951092E601089508950C9465230E9491
+:10153000C41C0E946B230E94A9100C94A20942E0D3
+:1015400061EC81E00E94200D42E061EC82E00E94AB
+:10155000200D42E061EC83E00E94200D42E161EC4D
+:1015600084E00C94200D8091E901833009F455C08A
+:1015700030F4813071F0823009F48EC008958A30E1
+:1015800009F47AC08B3009F460C0893009F09CC03E
+:1015900020C08091E801813A09F096C08091E8006E
+:1015A000877F8093E8008091EC019091ED01892B79
+:1015B00021F460E184E591E003C060E080E090E028
+:1015C00070E00E945C0C8091E8008B778093E800CB
+:1015D00008958091E801813209F076C08091EC0194
+:1015E0009091ED01009719F0039709F06DC080917B
+:1015F000E800877F8093E8008091E80082FD05C0C5
+:101600008091E7018111F8CF5FC08091F100809354
+:1016100064018091E8008B7753C08091E801813AA2
+:1016200009F052C08091EC019091ED01892B09F0F5
+:101630004BC08091E800877F8093E8008091E800AC
+:1016400080FFFCCF80910C0136C08091E80181328F
+:10165000D9F58091EC019091ED01892BA9F580914C
+:10166000E800877F8093E8000E94550D8091EA0191
+:1016700080930C010C941F168091E801813221F5B2
+:101680008091E800877F8093E8000E94550D80914B
+:10169000EB018093650108958091E801813AA1F4FE
+:1016A0008091E800877F8093E8008091E80080FFC8
+:1016B000FCCF809165018093F1008091E8008E77E6
+:1016C0008093E8000C94550D089584B7877F84BFFC
+:1016D00088E10FB6F89480936000109260000FBE0E
+:1016E00090E080E80FB6F8948093610090936100D9
+:1016F0000FBE0E94F8100E94A60D0E94030E80915A
+:10170000E20084608093E20078940E9489100E9435
+:10171000FA1082E091E00E94A4100E94532380916D
+:10172000E701853069F40E94881C8091E5018823D7
+:10173000B1F30E94B01C882391F30E94FB0BEFCF02
+:101740000E940011ECCF292F332723303105C9F037
+:1017500064F42130310581F02230310509F043C0B5
+:101760008DE690E025E236E042C021323105F1F00D
+:101770002232310541F137C082E190E022E936E0C2
+:1017800036C099278130910541F08230910541F0B2
+:10179000892B49F5E1E2F6E005C0E9E0F6E002C098
+:1017A000E1EFF5E0849190E09F0121C06430D8F42E
+:1017B000E62FF0E0EE0FFF1FEE5DFE4F208131813E
+:1017C00089E090E014C0643070F470E0FB01EE0F2B
+:1017D000FF1FE65EFE4F20813181FB01EA5EFE4F76
+:1017E000808190E004C080E090E020E030E0FA01E9
+:1017F00031832083089580E189BD82E189BD09B4E8
+:1018000000FEFDCF8091D8008F7D8093D80080911D
+:10181000E00082608093E0008091E00081FDFCCFD9
+:101820000895CF92DF92EF92FF920F931F93CF9381
+:10183000DF93EC018B016A010E94740D811133C0AA
+:10184000C114D10439F0F60180819181081B190B74
+:10185000C80FD91FE12CF12C0115110519F1809148
+:10186000E80085FD16C08091E8008E778093E8003F
+:10187000C114D10449F0F60180819181E80EF91E6E
+:10188000F182E08285E00FC00E94740D882321F36D
+:101890000AC089918093F10001501109FFEFEF1AFE
+:1018A000FF0ADACF80E0DF91CF911F910F91FF9077
+:1018B000EF90DF90CF9008952091EE013091EF01ED
+:1018C0002617370748F06115710539F42091E800B3
+:1018D0002E772093E80001C0B90140E06115710541
+:1018E000A9F12091E701222309F443C0253009F42E
+:1018F00042C02091E80023FD40C02091E80022FD75
+:1019000032C02091E80020FFE9CF4091F300209100
+:10191000F20030E0342BFC01CF016115710559F064
+:101920002830310540F481918093F10061507109B4
+:101930002F5F3F4FF1CF41E02830310509F040E003
+:101940002091E8002E772093E800C8CF4111C9CF3D
+:101950000AC08091E701882361F0853061F08091B1
+:10196000E80083FD0AC08091E80082FFF2CF80E0AA
+:10197000089582E0089583E0089581E0089520911C
+:10198000EE013091EF012617370748F06115710518
+:1019900039F42091E8002E772093E80001C0B901C6
+:1019A000FC0120E06115710591F18091E701882328
+:1019B00009F440C0853009F43FC08091E80083FD00
+:1019C0003DC08091E80082FD2FC08091E80080FF3B
+:1019D000E9CF2091F3008091F20090E0922B611505
+:1019E000710559F08830910540F424912093F1005D
+:1019F0003196615071090196F2CF21E0089709F004
+:101A000020E08091E8008E778093E800CBCF211111
+:101A1000CCCF0AC08091E701882361F0853061F066
+:101A20008091E80083FD0AC08091E80082FFF2CF38
+:101A300080E0089582E0089583E0089581E00895AC
+:101A4000982F973058F59093E900981739F07091D6
+:101A5000EC002091ED005091F00003C0242F762F70
+:101A600050E021FF19C03091EB003E7F3093EB0036
+:101A70003091ED003D7F3093ED003091EB0031600F
+:101A80003093EB007093EC002093ED005093F00046
+:101A90002091EE0027FF07C09F5FD3CF8F70809308
+:101AA000E90081E0089580E008958091E80187FFD2
+:101AB00011C08091E80082FD05C08091E70181118D
+:101AC000F8CF11C08091E8008B770BC08091E701BF
+:101AD000882349F08091E80080FFF8CF8091E800EA
+:101AE0008E778093E80008952091E4003091E5001E
+:101AF00095E64091EC00842F817040FF22C08091D8
+:101B0000E80080FD1CC08091E701882391F08530BA
+:101B100091F08091EB0085FD10C04091E400509160
+:101B2000E5004217530729F39A01915011F784E019
+:101B3000089582E0089583E0089581E0089580E0AB
+:101B400008954091E80042FFDECF08950E94140EF0
+:101B50000E941C0EE0EEF0E0808181608083E8ED61
+:101B6000F0E080818F77808319BCA7EDB0E08C9185
+:101B70008E7F8C9380818F7E80831092E601089502
+:101B80000F931F93CF93DF930E94140E0E941C0E9D
+:101B9000C8EDD0E088818F778883888180688883CA
+:101BA00088818F7D888319BC1092E7011092E30130
+:101BB0001092E5011092E40100EE10E0F80180813E
+:101BC0008B7F808388818160888342E060E080E051
+:101BD0000E94200DE1EEF0E080818E7F8083E2EEB6
+:101BE000F0E0808181608083808188608083F8015B
+:101BF00080818E7F8083888180618883DF91CF910F
+:101C00001F910F910895E8EDF0E080818F7E808331
+:101C1000E7EDF0E080818160808384E082BF81E035
+:101C20008093E6010C94C00DE8EDF0E080818E7F9A
+:101C300080831092E20008951092DA001092E10081
+:101C400008951F920F920FB60F9211242F933F9376
+:101C50004F935F936F937F938F939F93AF93BF93B4
+:101C6000EF93FF938091E10082FF0BC08091E2002F
+:101C700082FF07C08091E1008B7F8093E1000E948A
+:101C800088108091DA0080FF1FC08091D80080FF0B
+:101C90001BC08091DA008E7F8093DA008091D9009A
+:101CA00080FF0DC080E189BD82E189BD09B400FEDD
+:101CB000FDCF81E08093E7010E94830A05C019BC33
+:101CC0001092E7010E94910A8091E10080FF19C003
+:101CD0008091E20080FF15C08091E2008E7F8093AA
+:101CE000E2008091E20080618093E2008091D80060
+:101CF00080628093D80019BC85E08093E7010E9440
+:101D0000950A8091E10084FF30C08091E20084FF59
+:101D10002CC080E189BD82E189BD09B400FEFDCF00
+:101D20008091D8008F7D8093D8008091E1008F7ED4
+:101D30008093E1008091E2008F7E8093E2008091A9
+:101D4000E20081608093E2008091E301882311F03A
+:101D500084E007C08091E30087FD02C081E001C0FC
+:101D600083E08093E7010E94970A8091E10083FF5E
+:101D700029C08091E20083FF25C08091E100877F28
+:101D80008093E10082E08093E7011092E30180916B
+:101D9000E1008E7F8093E1008091E2008E7F80934E
+:101DA000E2008091E20080618093E20042E060E026
+:101DB00080E00E94200D8091F00088608093F00008
+:101DC0000E94940AFF91EF91BF91AF919F918F91E3
+:101DD0007F916F915F914F913F912F910F900FBE27
+:101DE0000F901F9018951F920F920FB60F9211240B
+:101DF0002F933F934F935F936F937F938F939F9313
+:101E0000AF93BF93CF93DF93EF93FF93C091E9001C
+:101E1000CF708091EC00D82FD17080FDD0E8109267
+:101E2000E9008091F000877F8093F00078940E9411
+:101E3000370F1092E9008091F00088608093F000E5
+:101E4000CD2BCF70C093E900FF91EF91DF91CF913F
+:101E5000BF91AF919F918F917F916F915F914F91C2
+:101E60003F912F910F900FBE0F901F9018951F93C9
+:101E7000CF93DF93CDB7DEB7AA970FB6F894DEBF46
+:101E80000FBECDBFE8EEF1E088E08E0F9091F1003B
+:101E900091938E13FBCF0E94B30A8091E80083FFD9
+:101EA0001FC18091E8019091E901492F50E04A302B
+:101EB000510508F015C1FA01EB59FF4F0C94ED24C0
+:101EC000803881F0823809F00BC18091EC018F706D
+:101ED0008093E9008091EB0085FB882780F91092C0
+:101EE000E90006C08091E4019091E50191118260C2
+:101EF0009091E800977F9093E8008093F100109212
+:101F0000F100C8C0282F2D7F09F0EAC0882319F0FE
+:101F1000823061F0E5C08091EA01813009F0E0C0D3
+:101F2000933009F080E08093E5012BC08091EA01B5
+:101F3000811127C08091EC018F7009F4D1C080938A
+:101F4000E9002091EB0020FF1CC0933021F4809128
+:101F5000EB00806214C09091EB0090619093EB00D5
+:101F600021E030E0A90102C0440F551F8A95E2F735
+:101F70004093EA001092EA008091EB008860809321
+:101F8000EB001092E9008091E800877F86C0811104
+:101F9000A7C01091EA011F778091E3008078812B20
+:101FA0008093E3008091E800877F8093E8000E949F
+:101FB000550D8091E80080FFFCCF8091E3008068A0
+:101FC0008093E300111102C082E001C083E080939E
+:101FD000E70186C08058823008F082C08091EA0113
+:101FE0009091EB018C3D53E0950779F583E08A836E
+:101FF0008AE289834FB7F894DE01139620E03EE031
+:1020000051E2E32FF0E050935700E49120FF03C02A
+:10201000E295EF703F5FEF708E2F90E0EA3010F0A6
+:10202000C79601C0C0968D939D932F5F243149F7C9
+:102030004FBF8091E800877F8093E8006AE270E0FC
+:10204000CE0101960E945C0C14C0AE014F5F5F4F41
+:102050006091EC010E94A30BBC01892B09F440C0E4
+:102060009091E800977F9093E80089819A810E947F
+:10207000BF0C8091E8008B778093E80031C08038F6
+:1020800079F58091E800877F8093E8008091E301F3
+:102090008093F1008091E8008E778093E8000E94A1
+:1020A000550D1EC081111CC09091EA019230C0F400
+:1020B0008091E800877F8093E8009093E3010E947D
+:1020C000550D8091E301811106C08091E30087FDE9
+:1020D00002C081E001C084E08093E7010E949F0A72
+:1020E0008091E80083FF0AC08091E800877F809399
+:1020F000E8008091EB0080628093EB00AA960FB617
+:10210000F894DEBF0FBECDBFDF91CF911F91089530
+:102110000895CF938091E7018823A1F0C091E90051
+:10212000CF709091EC00892F817090FD80E8C82BD2
+:102130001092E9008091E80083FD0E94370FCF7074
+:10214000C093E900CF91089590936B0180936A0149
+:102150000895E0916A01F0916B01309721F00190B0
+:10216000F081E02D099480E00895E0916A01F091FA
+:102170006B01309721F00280F381E02D09940895DE
+:10218000E0916A01F0916B01309721F00480F581B4
+:10219000E02D09940895209168013091690182171A
+:1021A000930771F09093690180936801E0916A014F
+:1021B000F0916B01309721F00680F781E02D0994B2
+:1021C000089520916601309167018217930771F09D
+:1021D0009093670180936601E0916A01F0916B0131
+:1021E000309721F00084F185E02D09940895089539
+:1021F0000C94F7100E94CA1C0E947F060C94901D3C
+:10220000CF92DF92EF92FF920F931F93CF93DF93C2
+:10221000CDB7DEB72B970FB6F894DEBF0FBECDBF9C
+:102220000E9497068DE6C82E81E0D82E00E010E0CF
+:10223000E02E802F0E948507F60141916F01F42E58
+:10224000F826B1F40F5F1F4F0E30110589F78FEF9D
+:1022500089838A831B820E94D31C8160782F9D838F
+:102260008C8349815A816B818D810E94A31140C06A
+:102270009091CE0191FF04C08B870E948B078B85C4
+:1022800020E030E04F2D50E0922FBA01022E02C024
+:10229000759567950A94E2F760FF24C02E83EF825C
+:1022A00021E030E0690102C0CC0CDD1C9A95E2F718
+:1022B00090E08C219D21892B09F420E028870E9441
+:1022C000D31C8160782F9A8789874E815F816885CA
+:1022D0008A850E94A311F801E359FE4F8081C82628
+:1022E000C08206C02F5F3F4F2630310569F6AACF66
+:1022F0000E94772010916C010E94A9101817A1F07C
+:102300000E94A91080936C012B960FB6F894DEBF43
+:102310000FBECDBFDF91CF911F910F91FF90EF9036
+:10232000DF90CF900C94A2092B960FB6F894DEBFE5
+:102330000FBECDBFDF91CF911F910F91FF90EF9016
+:10234000DF90CF900895CF93DF93CDB7DEB72B9773
+:102350000FB6F894DEBF0FBECDBF4F835887698795
+:102360007A878B87DE01119686E0FD0111928A95AE
+:10237000E9F785E0FE01379601900D928A95E1F725
+:1023800049815A816B817C818D819E810E94B9181F
+:102390002B960FB6F894DEBF0FBECDBFDF91CF9165
+:1023A0000895CF93882309F4C2C0C82F823859F406
+:1023B0000E94A91081FDBBC089E30E94551B0E94A9
+:1023C000121C89E30CC0833879F40E94A91080FDA7
+:1023D000AEC083E50E94551B0E94121C83E50E943B
+:1023E000971BCF910C94121C843859F40E94A910A9
+:1023F00082FD9DC087E40E94551B0E94121C87E449
+:10240000EECF8CEF8C0F813A48F48C2F0E94B822CB
+:1024100081118DC08C2F0E94551BE3CF80E28C0F61
+:10242000883048F4C77081E001C0880FCA95EAF788
+:102430000E94DB1BD6CF8BE58C0F833078F4C53A36
+:1024400029F0C63A31F083E890E005C081E890E0D9
+:1024500002C082E890E0CF910C94CB1088E58C0FFD
+:10246000833108F064C0C83A39F1C93A41F1CA3A37
+:1024700049F1CB3A51F1CC3A59F1CD3A61F1C03B37
+:1024800069F1CE3A71F1CF3A79F1C13B81F1C23BAA
+:1024900089F1C33B91F1C43B99F1C53BA1F1C63B26
+:1024A000A9F1C73BB1F1C83BB9F1C93BC1F1CA3B86
+:1024B000C9F180E090E038C082EE90E035C089EE4E
+:1024C00090E032C08AEE90E02FC085EB90E02CC007
+:1024D00086EB90E029C087EB90E026C08CEC90E082
+:1024E00023C08DEC90E020C083E891E01DC08AE815
+:1024F00091E01AC082E991E017C084E991E014C02C
+:1025000081E292E011C083E292E00EC084E292E0A8
+:102510000BC085E292E008C086E292E005C087E247
+:1025200092E002C08AE292E0CF910C94E110CF9148
+:102530000895882309F44BC0823859F40E94A910E9
+:1025400081FF45C089E30E94551B0E94121C89E34C
+:102550000CC0833871F40E94A91080FF38C083E555
+:102560000E94551B0E94121C83E50E94971B0C942D
+:10257000121C843859F40E94A91082FF28C087E4F5
+:102580000E94551B0E94121C87E4EFCF9CEF980F0E
+:10259000913A58F390E2980F983050F4877091E098
+:1025A00001C0990F8A95EAF7892F0E94E11BDFCFBE
+:1025B0009BE5980F933020F480E090E00C94CB10D2
+:1025C000885A833120F480E090E00C94E110089563
+:1025D000882321F00E94DB1B0C94121C0895882391
+:1025E00021F00E94E11B0C94121C0895BF92CF921F
+:1025F000DF92EF92FF920F931F93CF93DF9300D060
+:1026000000D000D0CDB7DEB725E0FC01DE01119689
+:1026100001900D922A95E1F7FC0140813181028100
+:10262000258122952F7063817481672B09F4E5C29F
+:102630003F3F19F44F3F09F4E0C27C0149833A83DC
+:1026400089819A812E830E94141B182FB92E0E9413
+:10265000131B0E94DA19EB2DE295EF70F0E0E159BF
+:10266000FF4F2E810C94ED248B2D807F9B2D9F702E
+:10267000F92E882319F0F29480EFF822002349F014
+:10268000FF2009F467C28F2D0E94EB1B0E94121CD1
+:1026900061C2812F0E949912FF2009F4AEC28F2DD2
+:1026A0000E94F11B26960FB6F894DEBF0FBECDBF79
+:1026B000DF91CF911F910F91FF90EF90DF90CF901E
+:1026C000BF900C94121C3B2D307F8B2D8F703032BD
+:1026D00011F08295807F112319F0113021F12CC067
+:1026E0000023B9F0222309F4A0C1213009F09DC1D3
+:1026F00026960FB6F894DEBF0FBECDBFDF91CF9107
+:102700001F910F91FF90EF90DF90CF90BF900C94AE
+:10271000FB1B222319F0213009F46FC28E830E9423
+:10272000FE1B8E8196C1002321F0223008F065C285
+:102730007CC1211162C28DC1002321F0222309F442
+:1027400074C108C2222309F484C119C22B2D269515
+:102750002695237030E02115310521F02130310517
+:10276000D1F04BC2002321F0812F9B2D937002C02A
+:1027700080E090E026960FB6F894DEBF0FBECDBF86
+:10278000DF91CF911F910F91FF90EF90DF90CF904D
+:10279000BF900C94CB10002321F0812F9B2D9370C0
+:1027A00002C080E090E026960FB6F894DEBF0FBE20
+:1027B000CDBFDF91CF911F910F91FF90EF90DF90F0
+:1027C000CF90BF900C94E110812F002319F00E944C
+:1027D0007F1F02C00E94E71F26960FB6F894DEBF47
+:1027E0000FBECDBFDF91CF911F910F91FF90EF9062
+:1027F000DF90CF90BF900C946C208B2D837009F0EC
+:102800007BC00111FAC1812F829586958770880F50
+:10281000880F912F9F70C92ED12CE12CF12C082EFE
+:1028200004C0CC0CDD1CEE1CFF1C0A94D2F714FF74
+:1028300012C04FE050E060E070E004C0440F551F4C
+:10284000661F771F8A95D2F7CB01BA016095709504
+:102850008095909503C060E070E0CB012B2D26950C
+:1028600026952370422F50E042305105D9F0433075
+:10287000510569F16C297D298E299F294130510527
+:1028800051F126960FB6F894DEBF0FBECDBFDF9193
+:10289000CF911F910F91FF90EF90DF90CF90BF905D
+:1028A0000C94011A6C297D298E299F2926960FB632
+:1028B000F894DEBF0FBECDBFDF91CF911F910F9176
+:1028C000FF90EF90DF90CF90BF900C941D1A0E9464
+:1028D000011AC701B60126960FB6F894DEBF0FBEE7
+:1028E000CDBFDF91CF911F910F91FF90EF90DF90BF
+:1028F000CF90BF900C94E519002319F08B2D8170B7
+:1029000001C08695882309F478C1812F8295869528
+:102910008770880F880F912F9F70C92ED12CE12CC2
+:10292000F12C082E04C0CC0CDD1CEE1CFF1C0A94FC
+:10293000D2F714FF12C04FE050E060E070E004C036
+:10294000440F551F661F771F8A95D2F7CB01BA0136
+:10295000609570958095909503C060E070E0CB0124
+:102960002B2D269526952370422F50E0423051059D
+:10297000D9F04330510569F16C297D298E299F29B1
+:102980004130510551F126960FB6F894DEBF0FBEC7
+:10299000CDBFDF91CF911F910F91FF90EF90DF900E
+:1029A000CF90BF900C94DB1A6C297D298E299F292A
+:1029B00026960FB6F894DEBF0FBECDBFDF91CF9144
+:1029C0001F910F91FF90EF90DF90CF90BF900C94EC
+:1029D000F71A0E94DB1AC701B60126960FB6F894C3
+:1029E000DEBF0FBECDBFDF91CF911F910F91FF9042
+:1029F000EF90DF90CF90BF900C94BF1A103FD1F1B1
+:102A000018F4103E50F4A1C0123F09F463C008F45A
+:102A10004CC0133F09F473C098C01F708B2D8F7189
+:102A20000023A1F00E94581A812F26960FB6F89421
+:102A3000DEBF0FBECDBFDF91CF911F910F91FF90F1
+:102A4000EF90DF90CF90BF900C94E8120E94791A1B
+:102A5000812F26960FB6F894DEBF0FBECDBFDF9153
+:102A6000CF911F910F91FF90EF90DF90CF90BF908B
+:102A70000C94EF120023A9F02111BFC08B2D8F7190
+:102A800026960FB6F894DEBF0FBECDBFDF91CF9173
+:102A90001F910F91FF90EF90DF90CF90BF900C941B
+:102AA0009E1A223008F0A9C0E9CF0023A9F08B2D8F
+:102AB0008F7126960FB6F894DEBF0FBECDBFDF91A3
+:102AC000CF911F910F91FF90EF90DF90CF90BF902B
+:102AD0000C94581A002359F38B2D8F7126960FB63C
+:102AE000F894DEBF0FBECDBFDF91CF911F910F9144
+:102AF000FF90EF90DF90CF90BF900C94791A002355
+:102B000099F08B2D8F7126960FB6F894DEBF0FBE0D
+:102B1000CDBFDF91CF911F910F91FF90EF90DF908C
+:102B2000CF90BF900C94431A26960FB6F894DEBF50
+:102B30000FBECDBFDF91CF911F910F91FF90EF900E
+:102B4000DF90CF90BF900C94391A0023A9F0222374
+:102B500009F4ADCF812F26960FB6F894DEBF0FBED5
+:102B6000CDBFDF91CF911F910F91FF90EF90DF903C
+:102B7000CF90BF900C94D111222309F4ADCF812FB7
+:102B800026960FB6F894DEBF0FBECDBFDF91CF9172
+:102B90001F910F91FF90EF90DF90CF90BF900C941A
+:102BA00099124B2D4F70612FC7010E943604269653
+:102BB0000FB6F894DEBF0FBECDBFDF91CF911F914E
+:102BC0000F91FF90EF90DF90CF90BF900C945D1924
+:102BD0004B2D4F70612FC70126960FB6F894DEBFBC
+:102BE0000FBECDBFDF91CF911F910F91FF90EF905E
+:102BF000DF90CF90BF900C944B0826960FB6F894B8
+:102C0000DEBF0FBECDBFDF91CF911F910F91FF901F
+:102C1000EF90DF90CF90BF9008950E94F81B0E9424
+:102C2000CD1B0E94121C0E941D210E946C2080E07E
+:102C300090E00E94CB1080E090E00C94E1100E94A4
+:102C4000E81B0C940D160E94141B292F22952F703F
+:102C500030E02C3031054CF42A3031056CF4225030
+:102C600031092230310588F407C02C30310549F094
+:102C70002F30310531F009C0803E48F0803F29F403
+:102C800006C093FB882780F9089580E0089581E0CD
+:102C90000895CF93DF9300D000D01F92CDB7DEB759
+:102CA0000F900F900F900F900F90DF91CF9108959C
+:102CB000CF93DF9300D000D000D0CDB7DEB72696FB
+:102CC0000FB6F894DEBF0FBECDBFDF91CF91089550
+:102CD0001F93CF93DF93C0917B0116E080917C011D
+:102CE000C81799F0D0E01C9FF0011D9FF00D112432
+:102CF000E358FE4F408151816281738184819581C7
+:102D00000E9458162196C770E9CFDF91CF911F918D
+:102D100008954091AD015091AE016091AF01709165
+:102D2000B0018091B1019091B2010C94581680913C
+:102D3000B20182958F7009F054C08091AF01882351
+:102D400009F44FC080917B01A0917C016091AD019D
+:102D50007091AE014091B0015091B101B6E08A1777
+:102D600009F43FC090E041155105C1F17F3F11F4D6
+:102D70006F3FA1F1B89FF001B99FF00D1124E35806
+:102D8000FE4F218172132AC02081621327C0228145
+:102D9000211124C0238134812417350710F42150D8
+:102DA0003109241B350B283C3105C0F42091B201B8
+:102DB0002F7020612093B20126E0289FF001299F07
+:102DC000F00D1124EE57FE4F80818F70806180835B
+:102DD0008DEA91E00E94F6120C94681601968770B5
+:102DE000BECF0895CF92DF92EF92FF920F931F9381
+:102DF000CF93DF93CDB7DEB762970FB6F894DEBFFF
+:102E00000FBECDBF8C0185E0F801DE011D9601905B
+:102E10000D928A95E1F7D8014C9111965C9111972A
+:102E200012966C9112971396CD90DC901497309176
+:102E3000AD017091AE018091B0019091B101009708
+:102E400009F46BC17F3F19F43F3F09F466C1E0907C
+:102E5000AF01EE2009F4C0C02091B201C816D90616
+:102E600028F0F601E81BF90BCF0104C0809590957E
+:102E70008C0D9D1DFF24F394883C910578F0F12C76
+:102E8000207F09F0C6C07C2DD98AC88A89890E9412
+:102E900049168DEA91E00E94F612B1C0822F807F20
+:102EA00009F046C0751314C0341312C0611110C06C
+:102EB0002F7020612093B2010E9489168DEA91E063
+:102EC0000E94F6128091B201D80115968C932EC003
+:102ED000CD2819F15F3F11F44F3FF9F0F62E611143
+:102EE0001CC080917B0120917C0136E0821709F49F
+:102EF0005AC090E0389FF001399FF00D1124E3583B
+:102F0000FE4F7181571306C07081471303C0728151
+:102F1000711103C001968770E9CFF62E662309F47C
+:102F200018C18091B20181608093B201F12C11C16E
+:102F3000751308C0341306C0611104C08091B2013A
+:102F4000D801C3C04D875E878D859E856A8B0E94A0
+:102F500023166A898823E1F16623D1F12091B20119
+:102F6000822F82958F7090E0029774F08091AD016E
+:102F70009091AE0198878F831986DB86CA862C874D
+:102F8000CE0107960E94F61286E0F801ADEAB1E0A4
+:102F900001900D928A95E1F70E9497160E9489167A
+:102FA000FF24F394D6C04D875E878D859E850E9451
+:102FB000141B292F22952F7030E0223031050CF0A0
+:102FC000BCC09F7009F0B6C0805E883008F4C1C0F4
+:102FD000C8010E94F612E4CFC816D90608F453C0FF
+:102FE000F601E81BF90BCF01883C910508F450C0AD
+:102FF000F12C7C2DD98AC88A89890E944916EDEA6C
+:10300000F1E086E0DF011D928A95E9F70E948916BA
+:10301000A0C0751314C0341312C0611110C0809188
+:10302000B201F8018583C8010E94F61286E0EDEA3C
+:10303000F1E0DF011D928A95E9F7FE2C8AC04D87E9
+:103040005E878D859E856A8B0E9423166A898823F8
+:1030500009F4BECF662309F4BBCF2091B201822FC1
+:1030600082958F7090E002970CF48ECF8091AD0125
+:103070009091AE019A8389831B82DD82CC822E835C
+:10308000CE0101967FCF809590958C0D9D1DACCF84
+:10309000F62E662309F49CCF75132EC034132CC072
+:1030A0002091B20120FD1FC0822F82958F70D9F030
+:1030B000D80115962C9315978F3049F08F5F982F74
+:1030C0009295907F822F8F70892B15968C93C801D3
+:1030D0000E94F61286E0F801ADEAB1E001900D928F
+:1030E0008A95E1F793CF86E0F801ADEAB1E001906F
+:1030F0000D928A95E1F72DC04D875E878D859E855F
+:103100000E942316811140CF8091B201816080938B
+:10311000B201C8010E94F6121CC0662309F458CF00
+:103120004D875E878D859E850E942316882309F42E
+:103130004FCF2ACF811148CF0CC0243031050CF07D
+:1031400047CF9F7009F440CFF8019581907F09F037
+:103150003BCF8F2D62960FB6F894DEBF0FBECDBF6A
+:10316000DF91CF911F910F91FF90EF90DF90CF9063
+:1031700008951F93CF93DF93CDB7DEB72C970FB68B
+:10318000F894DEBF0FBECDBF4F83588769877A871B
+:103190008B879C87CE0107960E94F216882369F0E0
+:1031A0008F8198852A853B85232BF1F19F3F09F07C
+:1031B00063C08F3F09F060C037C086E0FE013796DC
+:1031C000DE01119601900D928A95E1F76F81788565
+:1031D000EA85FB85309741F17F3F11F46F3F21F184
+:1031E00020917C0130E0C9010196877099274091B8
+:1031F0007B0150E08417950709F447C069837A83FF
+:10320000FD83EC8396E0929FD001939FB00D112433
+:10321000A358BE4FFE01319601900D929A95E1F7A9
+:1032200080937C010E94681616E080917B0190914A
+:103230007C018917C1F1189FC001112483589E4F4A
+:103240000E94F216882379F1E0917B011E9FF00124
+:103250001124E358FE4F4081518162817381848142
+:1032600095810E94581680917B0190E001968770AD
+:10327000992780937B01D9CF4F81588569857A85BD
+:103280008B859C850E945816CFCF0E941F161092E6
+:103290007C0110927B01EDEAF1E086E0DF011D92F6
+:1032A0008A95E9F7C1CF2C960FB6F894DEBF0FBE12
+:1032B000CDBFDF91CF911F910895EF92FF920F93B1
+:1032C0001F93CF93DF938C01892B09F46CC0F12CF1
+:1032D000EE24E394E8012196F8018491843740F4C8
+:1032E000843008F051C0813081F0823019F15BC028
+:1032F000853709F444C0A8F19CE7980F903708F08F
+:1033000052C08F770E94991241C00E5F1F4FFE017D
+:10331000C49180E28C0F883048F4C7708E2D01C0B4
+:10332000880FCA95EAF70E94EB1B14C08C2F0E94ED
+:10333000D1112DC00E5F1F4FFE01C49180E28C0F92
+:10334000883058F4C7708E2D01C0880FCA95EAF7EF
+:103350000E94F11B0E94121C1AC08C2F0E9499120D
+:1033600016C00E5F1F4FFE01C491CC2381F08FE980
+:103370009FE00197F1F700C00000C150F6CF0E5F4B
+:103380001F4FFE01F49003C00E94D1118E018F2DBA
+:10339000882309F49FCFEFE9FFE03197F1F700C0F0
+:1033A00000008150F5CFDF91CF911F910F91FF90D9
+:1033B000EF90089508956093B7017093B8018093DA
+:1033C000B9019093BA010C940D160F931F930091BD
+:1033D000B7011091B8012091B9013091BA01DC0117
+:1033E000CB01802B912BA22BB32B8093B701909311
+:1033F000B801A093B901B093BA011F910F910C9439
+:103400000D160F931F930091B7011091B8012091F1
+:10341000B9013091BA01DC01CB0180239123A223B1
+:10342000B3238093B7019093B801A093B901B093EF
+:10343000BA011F910F910C940D160F931F930091D9
+:10344000B7011091B8012091B9013091BA01DC01A6
+:10345000CB0180279127A227B3278093B7019093B0
+:10346000B801A093B901B093BA011F910F910C94C8
+:103470000D161092B3011092B4011092B501109282
+:10348000B6010C940D1641E050E060E070E004C01D
+:10349000440F551F661F771F8A95D2F74093B301DB
+:1034A0005093B4016093B5017093B6010C940D165E
+:1034B00041E050E060E070E004C0440F551F661F1B
+:1034C000771F8A95D2F78091B3019091B401A091B2
+:1034D000B501B091B601482B592B6A2B7B2B409339
+:1034E000B3015093B4016093B5017093B6010C948D
+:1034F0000D1641E050E060E070E004C0440F551F3D
+:10350000661F771F8A95D2F7409550956095709504
+:103510008091B3019091B401A091B501B091B60131
+:10352000482359236A237B234093B3015093B4016A
+:103530006093B5017093B6010C940D1641E050E014
+:1035400060E070E004C0440F551F661F771F8A9526
+:10355000D2F78091B3019091B401A091B501B091DF
+:10356000B601482759276A277B274093B301509318
+:10357000B4016093B5017093B6010C940D160F93CE
+:103580001F930091B3011091B4012091B5013091C6
+:10359000B601DC01CB01802B912BA22BB32B8093A6
+:1035A000B3019093B401A093B501B093B6011F91FC
+:1035B0000F910C940D160F931F930091B30110916E
+:1035C000B4012091B5013091B601DC01CB0180231B
+:1035D0009123A223B3238093B3019093B401A093CA
+:1035E000B501B093B6011F910F910C940D160F9376
+:1035F0001F930091B3011091B4012091B501309156
+:10360000B601DC01CB0180279127A227B327809345
+:10361000B3019093B401A093B501B093B6011F918B
+:103620000F910C940D160895CF92DF92EF92FF92B6
+:103630000F931F93CF93DF938C01C090B701D0906D
+:10364000B801E090B901F090BA014091B3015091F6
+:10365000B4016091B5017091B601C42AD52AE62A59
+:10366000F72ACFE1D0E0D701C6010C2E04C0B695F1
+:10367000A795979587950A94D2F780FF07C0B80160
+:103680008C2F0E946E088130910531F4219758F7F4
+:10369000B80180E00E946E08DF91CF911F910F91D9
+:1036A000FF90EF90DF90CF90089590910C019923B7
+:1036B00021F090910D01911109C020910E013091DE
+:1036C0000F01F90132969FEF40E01FC0982F9695A9
+:1036D000969596959F3050F5E0910E01F0910F016F
+:1036E000E90FF11D877021E030E0A90102C0440F0D
+:1036F000551F8A95E2F7CA019181892B818308952C
+:103700009F3F39F04F5F4E3041F051915813F8CF41
+:103710000DC05111F7CF942FF5CF9F3F39F0F9012C
+:10372000E90FF11D97FDFA95828308950895909110
+:103730000C01992321F090910D01911109C0209164
+:103740000E0130910F01F9013296205F3F4F1FC0EB
+:10375000982F9695969596959F30F0F4E0910E01EE
+:10376000F0910F01E90FF11D877021E030E0A90110
+:1037700002C0440F551F8A95E2F7CA0180959181D6
+:103780008923818308953196E217F30729F0908108
+:103790009813F9CF1082F7CF089581E090E0E0917F
+:1037A0000E01F0910F01E80FF91F10820196803190
+:1037B0009105A9F708959091CD01892B8093CD01B2
+:1037C000089580959091CD0189238093CD0108952E
+:1037D0001092CD0108959091CC01892B8093CC015A
+:1037E000089580959091CC0189238093CC01089510
+:1037F0001092CC0108958093BB0108951092BB01F3
+:10380000089580910E0190910F01FC0131969C0169
+:10381000205F3F4F80E0919191118F5FE217F30796
+:10382000D1F70895E0910E01F0910F018091CD0143
+:103830008083E0910E01F0910F0190818091CC0185
+:10384000892B80838091BB01882361F0E0910E0178
+:10385000F0910F019081892B80830E94011C8111BE
+:103860001092BB0180910E0190910F010C94B51044
+:10387000CF92DF92EF92FF926C01EE24FF24C114ED
+:10388000D104E104F10421F0C701B60120E101C037
+:1038900020E0C72ED82EE92EFF24C114D104E10464
+:1038A000F10419F0285FC701B6016B017C0154E0F7
+:1038B000F694E794D794C7945A95D1F7C114D104DC
+:1038C000E104F10419F02C5FC701B6016B017C0122
+:1038D00042E0F694E794D794C7944A95D1F7C1147F
+:1038E000D104E104F10419F02E5FC701B601DC0137
+:1038F000CB01B695A79597958795892B8A2B8B2B0E
+:1039000009F02F5F822FFF90EF90DF90CF90089506
+:103910008091E701843009F11092CF0120E488E121
+:1039200090E00FB6F894A895809360000FBE2093A6
+:10393000600083B7817F846083BF83B7816083BF6A
+:103940007894889583B78E7F83BF88E10FB6F8940B
+:1039500080936000109260000FBE0895089508954E
+:10396000CF930E94AE1C0E9497060E94AF1CC0E03D
+:103970008C2F0E948507811104C0CF5FCE30C1F724
+:1039800001C081E0CF9108950E941F160E94A910E6
+:103990000C94A20982E084BD93E095BD9AEF97BD97
+:1039A00080936E0008952FB7F8948091D001909184
+:1039B000D101A091D201B091D3012FBF0895CF9230
+:1039C000DF92EF92FF920F931F932FB7F8944091DD
+:1039D000D0015091D1016091D2017091D3012FBFDC
+:1039E0006A017B01EE24FF248C0120E030E0C01648
+:1039F000D106E206F30610F4415051099A01281B42
+:103A0000390BC9011F910F91FF90EF90DF90CF907C
+:103A100008951F920F920FB60F9211248F939F93C8
+:103A2000AF93BF938091D0019091D101A091D20129
+:103A3000B091D3010196A11DB11D8093D001909347
+:103A4000D101A093D201B093D301BF91AF919F91C7
+:103A50008F910F900FBE0F901F9018950E94A60D8A
+:103A6000F8942FEF87EA91E6215080409040E1F7EB
+:103A700000C0000087E090EBDC018093F0019093A0
+:103A8000F101A093F201B093F3019CE088E10FB63D
+:103A9000F894A895809360000FBE90936000FFCFCC
+:103AA000EF92FF920F931F93CF93DF93D82FC0E035
+:103AB0008C2F0E94850700E010E0E82EF12CC70152
+:103AC000002E02C0959587950A94E2F780FD06C006
+:103AD0000F5F1F4F0630110591F709C0602F7C2F33
+:103AE00080E00E944C08D813F3CF81E004C0CF5F80
+:103AF000CE30F1F680E0DF91CF911F910F91FF90D2
+:103B0000EF900895CF93C82F8CE20E94501D882318
+:103B100021F08C2FCF910C94501D80E0CF9108950F
+:103B2000CF930E94D71E811102C00E94BD1EC5E620
+:103B3000C15049F00E9497068FE39CE90197F1F785
+:103B400000C00000F5CF89E20E94821D811113C1DF
+:103B50008AE20E94821D81110E94BD1E85E00E94A2
+:103B6000821D81110E942E1D0E94E21E8093CE01B3
+:103B700087E00E94821D8823A9F18BE10E94821DAB
+:103B8000882351F08091CE0181FB222720F991E01A
+:103B9000922790FB81F90EC08EE00E94821D88233F
+:103BA00061F08091CE0182FB222720F991E09227DB
+:103BB00090FB82F98093CE0115C080E10E94821DA6
+:103BC0009091CE01882341F093FB222720F981E0D8
+:103BD000822780FB93F904C0892F809580FB90F9A0
+:103BE0009093CE018091CE010E94E61E0E94F41EA9
+:103BF0008093E10180EE0E94821D882341F0809134
+:103C0000E101982F909590FB80F98093E10189E381
+:103C10000E94821D882359F08091E10181FB2227B7
+:103C200020F991E0922790FB81F98093E10182EEE7
+:103C30000E94821D882359F08091E10182FB222796
+:103C400020F991E0922790FB82F98093E10186EEC2
+:103C50000E94821D882359F08091E10183FB222775
+:103C600020F991E0922790FB83F98093E10183EEA4
+:103C70000E94821D882359F08091E10184FB222754
+:103C800020F991E0922790FB84F98093E10185E38C
+:103C90000E94821D882359F08091E10185FB222733
+:103CA00020F991E0922790FB85F98093E10181E36F
+:103CB0000E94821D882359F08091E10186FB222712
+:103CC00020F991E0922790FB86F98093E10181E150
+:103CD0000E94821D882359F08091E10187FB2227F1
+:103CE00020F991E0922790FB87F98093E101809180
+:103CF000E1010E94F81E8091E10187FB882780F98D
+:103D000080930D0187E20E94821DC82F8EE10E94E0
+:103D1000821D8111C2608FE10E94821D8111C460E9
+:103D200080E20E94821D8111C86081E20E94821D92
+:103D30008111C06182E20E94821D8111C06283E212
+:103D40000E94821D8111C06484E20E94821D88232A
+:103D500011F0C06802C0CC2329F08C2F0E94EF1E06
+:103D60006C2F03C00E94EB1E682F70E080E090E093
+:103D7000CF910C94DB19CF9108956DEE7EEF80E02A
+:103D800090E00E94232560E082E090E00E941525EB
+:103D900060E083E090E00E94152560E084E090E020
+:103DA0000E94152560E085E090E00C94152580E0E8
+:103DB00090E00E940F2521E08D3E9E4F09F020E00B
+:103DC000822F089582E090E00C940725682F82E00E
+:103DD00090E00C94152583E090E00C940725682F63
+:103DE00083E090E00C94152584E090E00C94072586
+:103DF000682F84E090E00C9415258091D60180FF17
+:103E00000BC06091130185E0689FB0011124759586
+:103E10006795759567952BC081FF09C06091130167
+:103E200085E0689FB00111247595679520C082FFD9
+:103E300007C06091130185E0689FB001112417C08D
+:103E40009091D7019923D1F060911201961788F7CC
+:103E50002091130185E0289F90011124929FA001D9
+:103E6000939F500D112470E0CA010E94D92460383C
+:103E7000710540F46115710539F002C065E070E02C
+:103E8000862F08958FE7089581E008958091D601E7
+:103E900080FF08C06091110170E075956795759578
+:103EA000679521C081FF06C06091110170E0759592
+:103EB000679519C082FF04C06091110170E010C0C5
+:103EC0009091D7019923C1F0609110019617A0F746
+:103ED00080911101899FC001112470E00E94D924B2
+:103EE0006038710528F46115710521F0862F089559
+:103EF0008FE7089581E0089561E070E0F4CF803F9E
+:103F000021F40E94FD1E819504C0813F29F40E9486
+:103F1000FD1E8093DA010895823F21F40E94FD1E68
+:103F2000819504C0833F29F40E94FD1E8093D9012E
+:103F30000895893F19F40E94461F05C08A3F31F455
+:103F40000E94461F81958093DB0108958B3F21F4E9
+:103F50000E94461F819504C08C3F29F40E94461F91
+:103F60008093DC010895843F21F48091D801816021
+:103F700017C0853F21F48091D801826011C0863F2F
+:103F800021F48091D80184600BC0873F21F4809197
+:103F9000D801886005C0883F31F48091D8018061E4
+:103FA0008093D80108958D3F21F48091D6018160DE
+:103FB0000BC08E3F21F48091D601826005C08F3FF7
+:103FC00029F48091D60184608093D6010895803FC2
+:103FD00039F48091DA0187FF6CC01092DA0169C070
+:103FE000813F29F48091DA011816BCF362C09091E8
+:103FF000D901823F29F497FF5CC01092D90159C0C2
+:10400000833F19F41916CCF354C0893F41F48091D1
+:10401000DB0118160CF04DC01092DB014AC08A3F3C
+:1040200029F48091DB0187FF44C0F6CF8B3F39F440
+:104030008091DC0187FF3DC01092DC013AC08C3FCB
+:1040400029F48091DC011816BCF333C0843F21F4BD
+:104050008091D8018E7F17C0853F21F48091D801CF
+:104060008D7F11C0863F21F48091D8018B7F0BC0DA
+:10407000873F21F48091D801877F05C0883F31F4C4
+:104080008091D8018F7E8093D80113C08D3F21F499
+:104090008091D6018E7F0BC08E3F21F48091D60196
+:1040A0008D7F05C08F3F29F48091D6018B7F80934F
+:1040B000D6018091D90181110EC08091DA01811160
+:1040C0000AC08091DB01811106C08091DC01811161
+:1040D00002C01092D701089588ED91E00E94C010AF
+:1040E0000E94D31C9093D5018093D40108951F930F
+:1040F000CF93DF938091D4019091D5010E94DF1C72
+:10410000AC019091D701992321F02091140130E066
+:1041100006C0209115018AE0289F900111244217C2
+:10412000530708F486C08091D901C091DA01D0917B
+:10413000DB011091DC01811107C0C11176C0D111E2
+:1041400074C0111172C075C09F3F19F09F5F9093AA
+:10415000D701181624F40E94FD1E8093D901809186
+:10416000D90187FF05C00E94FD1E81958093D9016A
+:104170001C1624F40E94FD1E8093DA018091DA015E
+:1041800087FF05C00E94FD1E81958093DA01609132
+:10419000D901662339F1C091DA01CC2319F17727CF
+:1041A00067FD7095872F972F0E94EA2323E333E35F
+:1041B00043E35FE30E944E240E94B7236093D9013A
+:1041C0006C2F772767FD7095872F972F0E94EA2322
+:1041D00023E333E343E35FE30E944E240E94B723CB
+:1041E0006093DA011D1624F40E94461F8093DB01C0
+:1041F0008091DB0187FF05C00E94461F8195809357
+:10420000DB01111624F40E94461F8093DC0180918B
+:10421000DC0187FF05C00E94461F81958093DC0169
+:10422000DF91CF911F910C946C209F3F09F08ECFAE
+:1042300096CFDF91CF911F910895E8EDF1E085E0F1
+:10424000DF011D928A95E9F71092D7011092D601ED
+:104250000895833081F128F4813059F08230D1F013
+:104260000895853009F449C0B8F1863009F456C084
+:10427000089580911501262F30E0280F311D2F3F22
+:10428000310524F4680F6093150108958FEF809332
+:104290001501089580911401262F30E0280F311D5B
+:1042A0002F3F310524F4680F6093140108958FEFB8
+:1042B00080931401089580911301262F30E0280F78
+:1042C000311D2F3F310524F4680F609313010895C9
+:1042D0008FEF80931301089580911201262F30E013
+:1042E000280F311D2F3F310524F4680F6093120110
+:1042F00008958FEF80931201089580911101262F68
+:1043000030E0280F311D2F3F310524F4680F6093F2
+:10431000110108958FEF809311010895809110018C
+:10432000262F30E0280F311D2F3F310524F4680F70
+:104330006093100108958FEF8093100108958330EA
+:1043400011F128F4813049F0823091F008958530E0
+:1043500081F120F18630C1F108958091150168172F
+:1043600020F4861B8093150108951092150108957D
+:1043700080911401681720F4861B8093140108951E
+:1043800010921401089580911301681720F4861B80
+:1043900080931301089510921301089580911201E2
+:1043A000681720F4861B8093120108951092120161
+:1043B000089580911101681720F4861B80931101E4
+:1043C000089510921101089580911001681720F44A
+:1043D000861B8093100108951092100108950F9389
+:1043E0001F938D3109F46BC008F03FC08E3009F483
+:1043F0007DC0C0F4873009F46EC068F4863009F0DF
+:10440000AFC08091CE01817F8E7F8093CE0181E00D
+:104410008093DE01A6C0883009F458C08B3009F4BF
+:104420009BC09EC0863109F497C078F4803109F4AE
+:1044300070C0813109F094C00E941F1690910D0147
+:1044400081E0892780930D0187C0893109F484C0F8
+:104450008B3109F085C08091CE0181FB222720F9A4
+:1044600091E0922790FB81F94AC0853309F45BC043
+:1044700048F4873209F457C008F45AC0893209F465
+:1044800052C06EC0833438F48A3308F067C0883372
+:1044900009F462C065C0833409F445C0883409F06A
+:1044A0005FC00E941F160FEF13ED20E30150104074
+:1044B0002040E1F700C000000E942E1D4DC00E9468
+:1044C00071230E94A9100E94A20946C00E94E21E08
+:1044D0000E94F41E41C09091CE01892F817090FFFF
+:1044E00012C0917F9E7F9093CE013BC08091CE0100
+:1044F00082FB222720F991E0922790FB82F980939A
+:10450000CE01992349F18091CE0181608093CE0143
+:1045100023C08091CE0183FB222720F991E09227CE
+:1045200090FB83F9ECCF61E070E080E090E010C098
+:104530008D5141E050E060E070E08A019B0104C0D1
+:10454000000F111F221F331F8A95D2F7C901B8012E
+:104550000E94DB190E941F1681E003C08953E9CF36
+:1045600080E01F910F91089580E0089580E0089504
+:10457000CF93C82F8091DE01813079F018F082301E
+:10458000E9F187C0E0910E01F0910F018081813146
+:1045900069F0823209F07FC009C0E0910E01F0910C
+:1045A0000F018081813111F0823261F48C2F0E94E1
+:1045B000B422811104C08C2F0E94EF211DC081E024
+:1045C00090E01AC08C2F0E94B622811114C0C43111
+:1045D00079F048F4CB3079F0C03109F060C082E066
+:1045E0008093DE0108C0C93219F0C83321F057C0EA
+:1045F0001092DE0154C081E0817053C0C93289F14C
+:1046000018F5C43171F1A8F4C73009F046C08AE04A
+:104610008093150194E19093140193E0909313011A
+:104620008093120188E08093110188E28093100149
+:1046300034C0CE51C63088F5EC2FF0E0E65DFE4F79
+:1046400080818093DD0129C0CE34E9F020F4CB34A1
+:1046500021F56AE013C0C13579F0C235F1F461E0AB
+:104660000DC08091DD01882319F01092DD0115C085
+:1046700081E08093DE0115C061E006C08091DD011C
+:104680000E9429210AC06AE08091DD010E949F21D9
+:1046900004C01092DE0180E004C081E002C080E02E
+:1046A000ABCFCF910895E1E8F0E08081886080830E
+:1046B0008081816080838FB7F89493E09093890024
+:1046C00090ED909388008FBF0895EFE6F0E0808131
+:1046D000826080830895EFE6F0E080818D7F8083A3
+:1046E0000895EFE6F0E0908182E0892780830895C5
+:1046F0001F920F920FB60F9211242F933F934F9357
+:104700005F936F937F938F939F93AF93BF93EF9339
+:10471000FF938091DF019091E00101969093E00179
+:104720008093DF01811103C082E00E94A209E09121
+:10473000E001E695E695F0E0E156F84FE4918091CE
+:10474000DF018E1303C080E00E94A209FF91EF9168
+:10475000BF91AF919F918F917F916F915F914F9199
+:104760003F912F910F900FBE0F901F90189504D07E
+:104770006894B1118DC0089570D088F09F5790F063
+:10478000B92F9927B751A0F0D1F0660F771F881F76
+:10479000991F1AF0BA95C9F712C0B13081F077D0DD
+:1047A000B1E0089574C0672F782F8827B85F39F07B
+:1047B000B93FCCF3869577956795B395D9F73EF4D5
+:1047C00090958095709561957F4F8F4F9F4F08957D
+:1047D000E89409C097FB3EF490958095709561959B
+:1047E0007F4F8F4F9F4F9923A9F0F92F96E9BB2751
+:1047F0009395F695879577956795B795F111F8CFCD
+:10480000FAF4BB0F11F460FF1BC06F5F7F4F8F4F37
+:104810009F4F16C0882311F096E911C0772321F02D
+:104820009EE8872F762F05C0662371F096E8862FC5
+:1048300070E060E02AF09A95660F771F881FDAF71C
+:10484000880F9695879597F9089557FD9058440FCE
+:10485000551F59F05F3F71F04795880F97FB991FDF
+:1048600061F09F3F79F0879508951216130614069C
+:10487000551FF2CF4695F1DF08C016161706180629
+:10488000991FF1CF86957105610508940895E89404
+:10489000BB2766277727CB0197F908950BD078C0FF
+:1048A00069D028F06ED018F0952309F05AC05FC087
+:1048B0001124EECFCADFA0F3959FD1F3950F50E0FE
+:1048C000551F629FF001729FBB27F00DB11D639FC2
+:1048D000AA27F00DB11DAA1F649F6627B00DA11D68
+:1048E000661F829F2227B00DA11D621F739FB00D0E
+:1048F000A11D621F839FA00D611D221F749F33277E
+:10490000A00D611D231F849F600D211D822F762F16
+:104910006A2F11249F5750408AF0E1F088234AF013
+:10492000EE0FFF1FBB1F661F771F881F915050405F
+:10493000A9F79E3F510570F014C0AACF5F3FECF37A
+:10494000983EDCF3869577956795B795F795E7954B
+:104950009F5FC1F7FE2B880F911D9695879597F95C
+:10496000089597F99F6780E870E060E008959FEFF1
+:1049700080EC089500240A941616170618060906F6
+:10498000089500240A9412161306140605060895C5
+:10499000092E0394000C11F4882352F0BB0F40F44D
+:1049A000BF2B11F460FF04C06F5F7F4F8F4F9F4F8D
+:1049B000089597FB072E16F4009407D077FD09D0D1
+:1049C0000E94F32407FC05D03EF4909581959F4FFB
+:1049D0000895709561957F4F0895EE0FFF1F059024
+:1049E000F491E02D0994AA1BBB1B51E107C0AA1F3B
+:1049F000BB1FA617B70710F0A61BB70B881F991F80
+:104A00005A95A9F780959095BC01CD010895F99923
+:104A1000FECF92BD81BDF89A992780B50895A8E18F
+:104A2000B0E042E050E00C942A25262FF999FECF01
+:104A30001FBA92BD81BD20BD0FB6F894FA9AF99ABB
+:104A40000FBE019608950E941525272F0C94162558
+:104A5000DC01CB01FC01F999FECF06C0F2BDE1BD3E
+:104A6000F89A319600B40D9241505040B8F708952D
+:044A7000F894FFCFE8
+:104A74002002A409320A0F0ADB09A7090101BC01BB
+:104A840028080A03140A3F4D363960071307DD0668
+:104A9400A4063706500669068206010203040506C9
+:044AA40007080900F6
+:00000001FF
index 1d5226974fd9c7f9896d46eaa9651c8fa8726acd..8e709ee260ed6b23e8dfbc3fff6089d582f3c8c8 100644 (file)
Binary files a/keyboard/ergodox_ez/keymaps/osx_de/osx_de_highres.png and b/keyboard/ergodox_ez/keymaps/osx_de/osx_de_highres.png differ
index daba0f6449001396a328342aefb64f57e9ad0d48..4c8f9dc8ab86a7653607cc32ea10eb7ea395681a 100644 (file)
@@ -53,9 +53,9 @@ SRC = keymap_common.c \
        led.c
 
 ifdef KEYMAP
-    SRC := keymap_$(KEYMAP).c $(SRC)
+    SRC := keymaps/$(KEYMAP).c $(SRC)
 else
-    SRC := keymap_poker.c $(SRC)
+    SRC := keymaps/poker.c $(SRC)
 endif
 
 CONFIG_H = config.h
index 11bd3b7840eae36da14795e748a0d0818649bf0b..8ed73a248d16081e9512cdf8e8fca971b7571844 100644 (file)
@@ -53,9 +53,9 @@ SRC = keymap_common.c \
        led.c
 
 ifdef KEYMAP
-    SRC := keymap_$(KEYMAP).c $(SRC)
+    SRC := keymaps/$(KEYMAP).c $(SRC)
 else
-    SRC := keymap_poker.c $(SRC)
+    SRC := keymaps/poker.c $(SRC)
 endif
 
 CONFIG_H = config.h
index 510cb5c8b65cf72a52b2472e4e8094d9cbe31e63..41a757ea3ae07f97310be8835f3747a9b57b2eec 100644 (file)
@@ -21,7 +21,7 @@ Use `make -f Makefile.pjrc` if you want to use PJRC stack but I find no reason t
 
 
 ## Keymap
-Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create file named `keymap_<name>.c` and see keymap document(you can find in top README.md) and existent keymap files.
+Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create file named `<name>.c` in the keymaps folder, and see keymap document(you can find in top README.md) and existent keymap files.
 
 To build firmware binary hex file with a certain keymap just do `make` with `KEYMAP` option like:
 
@@ -29,8 +29,8 @@ To build firmware binary hex file with a certain keymap just do `make` with `KEY
 
 
 ### 1  Poker
-[keymap_poker.c](keymap_poker.c) emulates original Poker layers
-while both [keymap_poker_bit.c](keymap_poker_bit.c) and [keymap_poker_set.c](keymap_poker_set.c) implements same layout in different way and they fix a minor issue of original Poker and enhance arrow keys.
+[poker.c](keymaps/poker.c) emulates original Poker layers
+while both [poker_bit.c](keymaps/poker_bit.c) and [poker_set.c](keymaps/poker_set.c) implement the same layout in different ways and they fix a minor issue of original Poker and enhance arrow keys.
 
     Fn + Esc = `
     Fn + {left, down, up, right}  = {home, pgdown, pgup, end}
@@ -63,7 +63,7 @@ while both [keymap_poker_bit.c](keymap_poker_bit.c) and [keymap_poker_set.c](key
 
 ### 2. Plain
 Without any Fn layer this will be useful if you want to use key remapping tool like AHK on host.
-See [keymap_plain.c](keymap_plain.c) for detail.
+See [plain.c](keymaps/plain.c) for detail.
 
 #### 1.0 Plain Default layer
     ,-----------------------------------------------------------.
@@ -80,11 +80,11 @@ See [keymap_plain.c](keymap_plain.c) for detail.
 
 
 ### 3. Hasu
-This is my favorite keymap with HHKB Fn, Vi cursor and Mousekey layer. See [keymap_hasu.c](keymap_hasu.c) for detail.
+This is my favorite keymap with HHKB Fn, Vi cursor and Mousekey layer. See [hasu.c](keymaps/hasu.c) for detail.
 
 
 ### 4. SpaceFN
-This layout proposed by spiceBar uses space bar to change layer with using Dual role key technique. See [keymap_spacefn.c](keymap_spacefn.c) and [SpaceFN discussion](http://geekhack.org/index.php?topic=51069.0).
+This layout proposed by spiceBar uses space bar to change layer with using Dual role key technique. See [spacefn.c](keymaps/spacefn.c) and [SpaceFN discussion](http://geekhack.org/index.php?topic=51069.0).
 
 #### 4.0 Default layer
     ,-----------------------------------------------------------.
@@ -113,7 +113,7 @@ This layout proposed by spiceBar uses space bar to change layer with using Dual
 
 
 ### 5. HHKB
-[keymap_hhkb.c](keymap_hhkb.c) emulates original HHKB layers.
+[hhkb.c](keymaps/hhkb.c) emulates original HHKB layers.
 #### 5.0: Default layer
     ,-----------------------------------------------------------.
     |Esc|  1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =|  \|  `|
diff --git a/keyboard/gh60/keymap_hasu.c b/keyboard/gh60/keymap_hasu.c
deleted file mode 100644 (file)
index e6af285..0000000
+++ /dev/null
@@ -1,145 +0,0 @@
-#include "keymap_common.h"
-
-/*
- * Hasu
- */
-const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-    /* Keymap 0: Default Layer
-     * ,-----------------------------------------------------------.
-     * |Esc|  1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =|Backsp |
-     * |-----------------------------------------------------------|
-     * |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|    \|
-     * |-----------------------------------------------------------|
-     * |Caps  |  A|  S|  D|  F|  G|  H|  J|  K|  L|Fn3|  '|Return  |
-     * |-----------------------------------------------------------|
-     * |Shift   |  Z|  X|  C|  V|  B|  N|  M|  ,|  .|Fn2|Shift     |
-     * |-----------------------------------------------------------|
-     * |Ctrl|Gui |Alt |      Space             |Alt |Fn4 |Fn4 |Fn1 |
-     * `-----------------------------------------------------------'
-     */
-    KEYMAP_ANSI(
-        ESC, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSPC, \
-        TAB, Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC,BSLS, \
-        LCTL,A,   S,   D,   F,   G,   H,   J,   K,   L,   FN2, QUOT,     ENT,  \
-        LSFT,Z,   X,   C,   V,   B,   N,   M,   COMM,DOT, FN1,           FN9,  \
-        LCTL,LGUI,LALT,          SPC,                     RALT,FN3, FN3, FN0),
-    /* Keymap 1: colemak */
-    KEYMAP_ANSI(
-        GRV, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSPC, \
-        TAB, Q,   W,   F,   P,   G,   J,   L,   U,   Y,   SCLN,LBRC,RBRC,BSLS, \
-        BSPC,A,   R,   S,   T,   D,   H,   N,   E,   I,   O,   QUOT,     ENT,  \
-        LSFT,Z,   X,   C,   V,   B,   K,   M,   COMM,DOT, SLSH,          RSFT, \
-        LCTL,LGUI,LALT,          SPC,                     RALT,RGUI,APP, FN0),
-    /* Keymap 2: dvorak */
-    KEYMAP_ANSI(
-        GRV, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   LBRC,RBRC,BSPC, \
-        TAB, QUOT,COMM,DOT, P,   Y,   F,   G,   C,   R,   L,   SLSH,EQL, BSLS, \
-        CAPS,A,   O,   E,   U,   I,   D,   H,   T,   N,   S,   MINS,     ENT,  \
-        LSFT,SCLN,Q,   J,   K,   X,   B,   M,   W,   V,   Z,             RSFT, \
-        LCTL,LGUI,LALT,          SPC,                     RALT,RGUI,APP, FN0),
-    /* Keymap 3: workman */
-    KEYMAP_ANSI(
-        GRV, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSPC, \
-        TAB, Q,   D,   R,   W,   B,   J,   F,   U,   P,   SCLN,LBRC,RBRC,BSLS, \
-        BSPC,A,   S,   H,   T,   G,   Y,   N,   E,   O,   I,   QUOT,     ENT,  \
-        LSFT,Z,   X,   M,   C,   V,   K,   L,   COMM,DOT, SLSH,          RSFT, \
-        LCTL,LGUI,LALT,          SPC,                     RALT,RGUI,APP, FN0),
-
-    /* Overlay 4: HHKB mode
-     * ,-----------------------------------------------------------.
-     * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Delete |
-     * |-----------------------------------------------------------|
-     * |Caps |   |   |   |   |   |   |   |Psc|Slk|Pus|Up |   |Inser|
-     * |-----------------------------------------------------------|
-     * |Contro|VoD|VoU|Mut|   |   |  *|  /|Hom|PgU|Lef|Rig|Enter   |
-     * |-----------------------------------------------------------|
-     * |Shift   |   |   |   |   |   |  +|  -|End|PgD|Dow|Shift     |
-     * |-----------------------------------------------------------|
-     * |Ctrl|Gui |Alt |      Space             |Alt |Gui |App |    |
-     * `-----------------------------------------------------------'
-     */
-    KEYMAP_ANSI(
-        GRV, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, DEL,  \
-        CAPS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PSCR,SLCK,PAUS,UP,  TRNS,INS,  \
-        LCTL,VOLD,VOLU,MUTE,TRNS,TRNS,PAST,PSLS,HOME,PGUP,LEFT,RGHT,     ENT,  \
-        LSFT,TRNS,TRNS,TRNS,TRNS,TRNS,PPLS,PMNS,END, PGDN,DOWN,          RSFT, \
-        LCTL,LGUI,LALT,          SPC,                     RALT,RGUI,FN4, TRNS),
-    /* Overlay 5: Vi mode (Slash)
-     * ,-----------------------------------------------------------.
-     * |  `| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Backsp |
-     * |-----------------------------------------------------------|
-     * |Tab  |Hom|PgD|Up |PgU|End|Hom|PgD|PgU|End|   |   |   |     |
-     * |-----------------------------------------------------------|
-     * |Contro|   |Lef|Dow|Rig|   |Lef|Dow|Up |Rig|   |   |Return  |
-     * |-----------------------------------------------------------|
-     * |Shift   |   |   |   |   |   |Hom|PgD|PgU|End|   |Shift     |
-     * |-----------------------------------------------------------|
-     * |Ctrl|Gui |Alt |      Space             |Alt |Gui |App |Ctrl|
-     * `-----------------------------------------------------------'
-     */
-    KEYMAP_ANSI(
-        GRV, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, BSPC, \
-        TAB, HOME,PGDN,UP,  PGUP,END, HOME,PGDN,PGUP,END, TRNS,TRNS,TRNS,TRNS, \
-        LCTL,TRNS,LEFT,DOWN,RGHT,TRNS,LEFT,DOWN,UP,  RGHT,TRNS,TRNS,     ENT,  \
-        LSFT,TRNS,TRNS,TRNS,TRNS,TRNS,HOME,PGDN,PGUP,END, TRNS,          RSFT, \
-        LCTL,LGUI,LALT,          SPC,                     RALT,RGUI,APP, RCTL),
-    /* Overlay 6: Mouse mode (Semicolon/App)
-     * ,-----------------------------------------------------------.
-     * |  `| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Backsp |
-     * |-----------------------------------------------------------|
-     * |Tab  |   |   |   |   |   |MwL|MwD|MwU|MwR|   |   |   |     |
-     * |-----------------------------------------------------------|
-     * |Contro|   |Ac0|Ac1|Ac1|   |McL|McD|McU|McR|   |   |Return  |
-     * |-----------------------------------------------------------|
-     * |Shift   |   |   |   |   |Mb3|Mb2|Mb1|Mb4|Mb5|   |Shift     |
-     * |-----------------------------------------------------------|
-     * |Ctrl|Gui |Alt |      Space             |    |    |    |    |
-     * `-----------------------------------------------------------'
-     * Mc: Mouse Cursor / Mb: Mouse Button / Mw: Mouse Wheel
-     */
-    KEYMAP_ANSI(
-        GRV, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, BSPC, \
-        TAB, TRNS,TRNS,TRNS,TRNS,TRNS,WH_L,WH_D,WH_U,WH_R,TRNS,TRNS,TRNS,TRNS, \
-        LCTL,TRNS,ACL0,ACL1,ACL2,TRNS,MS_L,MS_D,MS_U,MS_R,TRNS,TRNS,     ENT,  \
-        LSFT,TRNS,TRNS,TRNS,TRNS,BTN3,BTN2,BTN1,BTN4,BTN5,TRNS,          RSFT, \
-        LCTL,LGUI,LALT,          BTN1,                    TRNS,TRNS,TRNS,RCTL),
-    /* Overlay 7: Layout selector
-     * ,-----------------------------------------------------------.
-     * | Lq| Lc| Ld| Lw|   |   |   |   |   |   |   |   |   |       |
-     * |-----------------------------------------------------------|
-     * |     |Lq |Lw |   |   |   |   |   |   |   |   |   |   |     |
-     * |-----------------------------------------------------------|
-     * |      |   |   |Ld |   |   |   |   |   |   |   |   |        |
-     * |-----------------------------------------------------------|
-     * |        |   |   |Lc |   |   |   |   |   |   |   |          |
-     * |-----------------------------------------------------------|
-     * |    |    |    |                        |    |    |    |    |
-     * `-----------------------------------------------------------'
-     * Lq: set Qwerty layout
-     * Lc: set Colemak layout
-     * Ld: set Dvorak layout
-     * Lw: set Workman layout
-     */
-    KEYMAP_ANSI(
-        FN5, FN6, FN7, FN8, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
-        TRNS,FN5, FN8, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
-        TRNS,TRNS,TRNS,FN7, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,     TRNS, \
-        TRNS,TRNS,TRNS,FN6, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,          TRNS, \
-        TRNS,TRNS,TRNS,          TRNS,                    TRNS,TRNS,TRNS,TRNS),
-};
-
-/*
- * Fn action definition
- */
-const uint16_t PROGMEM fn_actions[] = {
-    [0] = ACTION_LAYER_MOMENTARY(4),
-    [1] = ACTION_LAYER_TAP_KEY(5, KC_SLASH),
-    [2] = ACTION_LAYER_TAP_KEY(6, KC_SCLN),
-    [3] = ACTION_LAYER_MOMENTARY(6),
-    [4] = ACTION_LAYER_MOMENTARY(7),   // to Layout selector
-    [5] = ACTION_DEFAULT_LAYER_SET(0),  // set qwerty layout
-    [6] = ACTION_DEFAULT_LAYER_SET(1),  // set colemak layout
-    [7] = ACTION_DEFAULT_LAYER_SET(2),  // set dvorak layout
-    [8] = ACTION_DEFAULT_LAYER_SET(3),  // set workman layout
-    [9] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_GRV),
-};
diff --git a/keyboard/gh60/keymap_hhkb.c b/keyboard/gh60/keymap_hhkb.c
deleted file mode 100644 (file)
index ce1b816..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-#include "keymap_common.h"
-
-/*
- * HHKB Layout
- */
-const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-    /* 0: Default layer
-     * ,-----------------------------------------------------------.
-     * |Esc|  1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =|  \|  `|
-     * |-----------------------------------------------------------|
-     * |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|Bspc |
-     * |-----------------------------------------------------------|
-     * |Ctrl  |  A|  S|  D|  F|  G|  H|  J|  K|  L|Fn3|  '|Return  |
-     * |-----------------------------------------------------------|
-     * |Shift   |  Z|  X|  C|  V|  B|  N|  M|  ,|  .|  /|Shift |Fn |
-     * |-----------------------------------------------------------|
-     * |    |Gui |Alt |      Space             |    |Alt |Gui |    |
-     * `-----------------------------------------------------------'
-     */
-    KEYMAP_HHKB(
-        ESC, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSLS, GRV, \
-        TAB, Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC,BSPC,      \
-        LCTL,A,   S,   D,   F,   G,   H,   J,   K,   L,   SCLN,QUOT,     ENT,       \
-        LSFT,Z,   X,   C,   V,   B,   N,   M,   COMM,DOT, SLSH,     RSFT,FN0,       \
-        NO,  LGUI,LALT,          SPC,                     NO,  RALT,RGUI,NO),
-    /* 1: HHKB Fn layer
-     * ,-----------------------------------------------------------.
-     * |Pwr| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
-     * |-----------------------------------------------------------|
-     * |Caps |   |   |   |   |   |   |   |Psc|Slk|Pus|Up |   |     |
-     * |-----------------------------------------------------------|
-     * |      |VoD|VoU|Mut|Ejc|   |  *|  /|Hom|PgU|Lef|Rig|Enter   |
-     * |-----------------------------------------------------------|
-     * |        |   |   |   |   |   |  +|  -|End|PgD|Dow|      |   |
-     * |-----------------------------------------------------------|
-     * |    |    |    |                        |    |    |    |    |
-     * `-----------------------------------------------------------'
-     */
-    KEYMAP_HHKB(
-        PWR, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, INS, DEL,  \
-        CAPS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PSCR,SLCK,PAUS,UP,  TRNS,TRNS,      \
-        TRNS,VOLD,VOLU,MUTE,EJCT,TRNS,PAST,PSLS,HOME,PGUP,LEFT,RGHT,     PENT,      \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PPLS,PMNS,END, PGDN,DOWN,     TRNS,TRNS,      \
-        TRNS,TRNS,TRNS,          TRNS,                    TRNS,TRNS,TRNS,TRNS),
-};
-
-/*
- * Fn action definition
- */
-const uint16_t PROGMEM fn_actions[] = {
-    [0] = ACTION_LAYER_MOMENTARY(1),
-};
diff --git a/keyboard/gh60/keymap_plain.c b/keyboard/gh60/keymap_plain.c
deleted file mode 100644 (file)
index 3138c18..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-#include "keymap_common.h"
-
-const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-    /* 0: qwerty */
-    KEYMAP(ESC, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSPC, \
-           TAB, Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC,BSLS, \
-           CAPS,A,   S,   D,   F,   G,   H,   J,   K,   L,   SCLN,QUOT,NO,  ENT,  \
-           LSFT,NO,  Z,   X,   C,   V,   B,   N,   M,   COMM,DOT, SLSH,NO,  RSFT, \
-           LCTL,LGUI,LALT,          SPC,                     RALT,RGUI,APP, RCTL),
-};
-const uint16_t PROGMEM fn_actions[] = {};
diff --git a/keyboard/gh60/keymap_poker.c b/keyboard/gh60/keymap_poker.c
deleted file mode 100644 (file)
index 7a612ee..0000000
+++ /dev/null
@@ -1,104 +0,0 @@
-#include "keymap_common.h"
-
-const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-    /* 0: qwerty */
-    KEYMAP_ANSI(
-        GRV, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSPC, \
-        TAB, Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC,BSLS, \
-        CAPS,A,   S,   D,   F,   G,   H,   J,   K,   L,   SCLN,QUOT,     ENT,  \
-        LSFT,Z,   X,   C,   V,   B,   N,   M,   COMM,DOT, SLSH,          RSFT, \
-        LCTL,LGUI,LALT,          SPC,                     FN0, RGUI,APP, RCTL),
-    /* 1: colemak */
-    KEYMAP_ANSI(
-        GRV, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSPC, \
-        TAB, Q,   W,   F,   P,   G,   J,   L,   U,   Y,   SCLN,LBRC,RBRC,BSLS, \
-        BSPC,A,   R,   S,   T,   D,   H,   N,   E,   I,   O,   QUOT,     ENT,  \
-        LSFT,Z,   X,   C,   V,   B,   K,   M,   COMM,DOT, SLSH,          RSFT, \
-        LCTL,LGUI,LALT,          SPC,                     FN0, RGUI,APP, RCTL),
-    /* 2: dvorak */
-    KEYMAP_ANSI(
-        GRV, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   LBRC,RBRC,BSPC, \
-        TAB, QUOT,COMM,DOT, P,   Y,   F,   G,   C,   R,   L,   SLSH,EQL, BSLS, \
-        CAPS,A,   O,   E,   U,   I,   D,   H,   T,   N,   S,   MINS,     ENT,  \
-        LSFT,SCLN,Q,   J,   K,   X,   B,   M,   W,   V,   Z,             RSFT, \
-        LCTL,LGUI,LALT,          SPC,                     FN0, RGUI,APP, RCTL),
-    /* 3: workman */
-    KEYMAP_ANSI(
-        GRV, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSPC, \
-        TAB, Q,   D,   R,   W,   B,   J,   F,   U,   P,   SCLN,LBRC,RBRC,BSLS, \
-        BSPC,A,   S,   H,   T,   G,   Y,   N,   E,   O,   I,   QUOT,     ENT,  \
-        LSFT,Z,   X,   M,   C,   V,   K,   L,   COMM,DOT, SLSH,          RSFT, \
-        LCTL,LGUI,LALT,          SPC,                     FN0, RGUI,APP, RCTL),
-    /* 4: Poker with Arrow */
-    KEYMAP_ANSI(
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,     TRNS, \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,          UP,   \
-        TRNS,TRNS,TRNS,          TRNS,                    TRNS,LEFT,DOWN,RGHT),
-    /* 5: Poker with Esc */
-    KEYMAP_ANSI(
-        ESC, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,     TRNS, \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,          TRNS, \
-        TRNS,TRNS,TRNS,          TRNS,                    TRNS,TRNS,TRNS,TRNS),
-    /* 6: Poker Fn
-     * ,-----------------------------------------------------------.
-     * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|       |
-     * |-----------------------------------------------------------|
-     * |     |FnQ| Up|   |   |   |   |   |   |Cal|   |Hom|Ins|FnL  |
-     * |-----------------------------------------------------------|
-     * |      |Lef|Dow|Rig|   |   |Psc|Slk|Pau|   |Tsk|End|        |
-     * |-----------------------------------------------------------|
-     * |        |Del|   |Web|Mut|VoU|VoD|   |PgU|PgD|Del|          |
-     * |-----------------------------------------------------------|
-     * |    |    |    |         FnS            |    |    |    |    |
-     * `-----------------------------------------------------------'
-     * Fn:  to Fn overlay
-     * FnL: to Layout selector overaly
-     * FnQ: toggle Esc overlay
-     * FnS: toggle Arrow overlay
-     */
-    KEYMAP_ANSI(
-        ESC, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, TRNS, \
-        TRNS,FN2, UP,  TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,CALC,TRNS,HOME,INS, FN4,  \
-        TRNS,LEFT,DOWN,RGHT,TRNS,TRNS,PSCR,SLCK,PAUS,TRNS,FN3, END,      TRNS, \
-        TRNS,DEL, TRNS,WHOM,MUTE,VOLU,VOLD,TRNS,PGUP,PGDN,DEL,           TRNS, \
-        TRNS,TRNS,TRNS,          FN1,                     TRNS,TRNS,TRNS,TRNS),
-    /* 7: Layout selector
-     * ,-----------------------------------------------------------.
-     * | Lq| Lc| Ld| Lw|   |   |   |   |   |   |   |   |   |       |
-     * |-----------------------------------------------------------|
-     * |     |Lq |Lw |   |   |   |   |   |   |   |   |   |   |     |
-     * |-----------------------------------------------------------|
-     * |      |   |   |Ld |   |   |   |   |   |   |   |   |        |
-     * |-----------------------------------------------------------|
-     * |        |   |   |Lc |   |   |   |   |   |   |   |          |
-     * |-----------------------------------------------------------|
-     * |    |    |    |                        |    |    |    |    |
-     * `-----------------------------------------------------------'
-     * Lq: set Qwerty layout
-     * Lc: set Colemak layout
-     * Ld: set Dvorak layout
-     * Lw: set Workman layout
-     */
-    KEYMAP_ANSI(
-        FN5, FN6, FN7, FN8, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
-        TRNS,FN5, FN8, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
-        TRNS,TRNS,TRNS,FN7, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,     TRNS, \
-        TRNS,TRNS,TRNS,FN6, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,          TRNS, \
-        TRNS,TRNS,TRNS,          TRNS,                    TRNS,TRNS,TRNS,TRNS),
-};
-const uint16_t PROGMEM fn_actions[] = {
-    /* Poker Layout */
-    [0] = ACTION_LAYER_MOMENTARY(6),  // to Fn overlay
-    [1] = ACTION_LAYER_TOGGLE(4),     // toggle arrow overlay
-    [2] = ACTION_LAYER_TOGGLE(5),     // toggle Esc overlay
-    [3] = ACTION_MODS_KEY(MOD_RCTL|MOD_RSFT, KC_ESC), // Task(RControl,RShift+Esc)
-    [4] = ACTION_LAYER_MOMENTARY(7),  // to Layout selector
-    [5] = ACTION_DEFAULT_LAYER_SET(0),  // set qwerty layout
-    [6] = ACTION_DEFAULT_LAYER_SET(1),  // set colemak layout
-    [7] = ACTION_DEFAULT_LAYER_SET(2),  // set dvorak layout
-    [8] = ACTION_DEFAULT_LAYER_SET(3),  // set workman layout
-};
diff --git a/keyboard/gh60/keymap_poker_bit.c b/keyboard/gh60/keymap_poker_bit.c
deleted file mode 100644 (file)
index b8870fd..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-#include "keymap_common.h"
-
-// Poker fix with toggle and bit operation
-// Fn + Esc = `
-// Fn + {left, down, up, right}  = {home, pgdown, pgup, end}
-const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-    /* 0: qwerty */
-    KEYMAP_ANSI(
-        GRV, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSPC, \
-        TAB, Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC,BSLS, \
-        LCTL,A,   S,   D,   F,   G,   H,   J,   K,   L,   SCLN,QUOT,     ENT,  \
-        LSFT,Z,   X,   C,   V,   B,   N,   M,   COMM,DOT, SLSH,          RSFT, \
-        LCTL,LGUI,LALT,          SPC,                     FN0, RGUI,APP, RCTL),
-    /* 4: Poker Default + Fn'd */
-    [4] = KEYMAP_ANSI(
-        TRNS,F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, TRNS, \
-        CAPS,FN2, UP,  TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,CALC,TRNS,HOME,INS, TRNS, \
-        TRNS,LEFT,DOWN,RGHT,TRNS,TRNS,PSCR,SLCK,PAUS,TRNS,FN4, END,      TRNS, \
-        TRNS,DEL, TRNS,WHOM,MUTE,VOLU,VOLD,TRNS,PGUP,PGDN,DEL,           TRNS, \
-        TRNS,TRNS,TRNS,          FN1,                     TRNS,TRNS,TRNS,TRNS),
-    /* 5: Poker with Arrow */
-    KEYMAP_ANSI(
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,     TRNS, \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,          PGUP, \
-        TRNS,TRNS,TRNS,          TRNS,                    FN3, HOME,PGDN,END),
-    /* 6: Poker with Esc */
-    KEYMAP_ANSI(
-        ESC, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,     TRNS, \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,          TRNS, \
-        TRNS,TRNS,TRNS,          TRNS,                    TRNS,TRNS,TRNS,TRNS),
-    /* 7: Poker with Arrow + Fn'd */
-    KEYMAP_ANSI(
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,     TRNS, \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,          UP,   \
-        TRNS,TRNS,TRNS,          TRNS,                    TRNS,LEFT,DOWN,RGHT),
-};
-const uint16_t PROGMEM fn_actions[] = {
-    /* Poker Layout */
-    [0] = ACTION_LAYER_BIT_XOR(1, 0b0101, ON_BOTH),   // Poker Fn(with fix for Esc)
-    [1] = ACTION_LAYER_TOGGLE(5),                     // Poker Arrow toggle
-    [2] = ACTION_LAYER_TOGGLE(6),                     // Poker Esc toggle
-    [3] = ACTION_LAYER_BIT_XOR(1, 0b1101, ON_BOTH),   // Poker Fn(with fix for Arrow)
-    [4] = ACTION_MODS_KEY(MOD_RCTL|MOD_RSFT, KC_ESC), // FN3 Task(RControl,RShift+Esc)
-};
diff --git a/keyboard/gh60/keymap_poker_set.c b/keyboard/gh60/keymap_poker_set.c
deleted file mode 100644 (file)
index aaa31fc..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-#include "keymap_common.h"
-
-// Poker fix with set(state transition)
-// Fn + Esc = `
-// Fn + {left, down, up, right}  = {home, pgdown, pgup, end}
-const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-    /* 0: qwerty */
-    KEYMAP_ANSI(
-        GRV, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSPC, \
-        TAB, Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC,BSLS, \
-        LCTL,A,   S,   D,   F,   G,   H,   J,   K,   L,   SCLN,QUOT,     ENT,  \
-        LSFT,Z,   X,   C,   V,   B,   N,   M,   COMM,DOT, SLSH,          RSFT, \
-        LCTL,LGUI,LALT,          SPC,                     FN0, RGUI,APP, RCTL),
-    /* 1: Poker with Arrow */
-    KEYMAP_ANSI(
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,     TRNS, \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,          UP,   \
-        TRNS,TRNS,TRNS,          TRNS,                    FN1, LEFT,DOWN,RGHT),
-    /* 2: Poker with Esc */
-    KEYMAP_ANSI(
-        ESC, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,     TRNS, \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,          TRNS, \
-        TRNS,TRNS,TRNS,          TRNS,                    FN2, TRNS,TRNS,TRNS),
-    /* 3: Poker with Arrow and Esc */
-    KEYMAP_ANSI(
-        ESC, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,     TRNS, \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,          UP,   \
-        TRNS,TRNS,TRNS,          TRNS,                    FN3, LEFT,DOWN,RGHT),
-    /* 4: Poker Fn'd */
-    KEYMAP_ANSI(
-        ESC, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, TRNS, \
-        TRNS,FN6, UP,  TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,CALC,TRNS,HOME,INS, TRNS, \
-        TRNS,LEFT,DOWN,RGHT,TRNS,TRNS,PSCR,SLCK,PAUS,TRNS,FN8, END,      TRNS, \
-        TRNS,DEL, TRNS,WHOM,MUTE,VOLU,VOLD,TRNS,PGUP,PGDN,DEL,           TRNS, \
-        TRNS,TRNS,TRNS,          FN5,                     FN4, TRNS,TRNS,TRNS),
-    /* 5: Poker Fn'd arrow */
-    KEYMAP_ANSI(
-        ESC, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, TRNS, \
-        TRNS,FN7, UP,  TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,CALC,TRNS,HOME,INS, TRNS, \
-        TRNS,LEFT,DOWN,RGHT,TRNS,TRNS,PSCR,SLCK,PAUS,TRNS,FN8, END,      TRNS, \
-        TRNS,DEL, TRNS,WHOM,MUTE,VOLU,VOLD,TRNS,PGUP,PGDN,DEL,           PGUP, \
-        TRNS,TRNS,TRNS,          FN4,                     FN5, HOME,PGDN,END),
-    /* 6: Poker Fn'd Esc */
-    KEYMAP_ANSI(
-        GRV, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, TRNS, \
-        TRNS,FN4, UP,  TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,CALC,TRNS,HOME,INS, TRNS, \
-        TRNS,LEFT,DOWN,RGHT,TRNS,TRNS,PSCR,SLCK,PAUS,TRNS,FN8, END,      TRNS, \
-        TRNS,DEL, TRNS,WHOM,MUTE,VOLU,VOLD,TRNS,PGUP,PGDN,DEL,           TRNS, \
-        TRNS,TRNS,TRNS,          FN7,                     FN6, TRNS,TRNS,TRNS),
-    /* 7: Poker Fn'd Arrow + Esc */
-    KEYMAP_ANSI(
-        GRV, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, TRNS, \
-        TRNS,FN5, UP,  TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,CALC,TRNS,HOME,INS, TRNS, \
-        TRNS,LEFT,DOWN,RGHT,TRNS,TRNS,PSCR,SLCK,PAUS,TRNS,FN8, END,      TRNS, \
-        TRNS,DEL, TRNS,WHOM,MUTE,VOLU,VOLD,TRNS,PGUP,PGDN,DEL,           PGUP, \
-        TRNS,TRNS,TRNS,          FN6,                     FN7, HOME,PGDN,END),
-};
-
-/*
- * Fn action definition
- */
-const uint16_t PROGMEM fn_actions[] = {
-    /* Poker Layout */
-    [0] = ACTION_LAYER_SET(4, ON_PRESS),     // FN0 move to Fn'd             when press
-    [1] = ACTION_LAYER_SET(5, ON_PRESS),     // FN1 move to Fn'd arrow       when press
-    [2] = ACTION_LAYER_SET(6, ON_PRESS),     // FN2 move to Fn'd Esc         when press
-    [3] = ACTION_LAYER_SET(7, ON_PRESS),     // FN3 move to Fn'd arrow + Esc when press
-
-    //[4] = ACTION_LAYER_CLEAR(ON_RELEASE),    // FN4 clear overlay            when release
-    [4] = ACTION_LAYER_SET(0, ON_RELEASE),   // FN4 clear overlay            when release
-    [5] = ACTION_LAYER_SET(1, ON_RELEASE),   // FN5 move to arrow            when release
-    [6] = ACTION_LAYER_SET(2, ON_RELEASE),   // FN6 move to Esc              when release
-    [7] = ACTION_LAYER_SET(3, ON_RELEASE),   // FN7 move to arrow + Esc      when release
-
-    [8] = ACTION_MODS_KEY(MOD_RCTL|MOD_RSFT, KC_ESC), // FN8 Task(RControl,RShift+Esc)
-};
diff --git a/keyboard/gh60/keymap_spacefn.c b/keyboard/gh60/keymap_spacefn.c
deleted file mode 100644 (file)
index 8077dce..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-#include "keymap_common.h"
-
-/*
- * SpaceFN
- * http://geekhack.org/index.php?topic=51069.0
- */
-const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-    /* Keymap 0: Default Layer
-     * ,-----------------------------------------------------------.
-     * |Esc|  1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =|Backsp |
-     * |-----------------------------------------------------------|
-     * |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|    \|
-     * |-----------------------------------------------------------|
-     * |Caps  |  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  '|Return  |
-     * |-----------------------------------------------------------|
-     * |Shift   |  Z|  X|  C|  V|  B|  N|  M|  ,|  .|  /|Shift     |
-     * |-----------------------------------------------------------|
-     * |Ctrl|Gui |Alt |      Space             |Alt |Gui |App |Ctrl|
-     * `-----------------------------------------------------------'
-     */
-    KEYMAP_ANSI(
-        ESC, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSPC, \
-        TAB, Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC,BSLS, \
-        CAPS,A,   S,   D,   F,   G,   H,   J,   K,   L,   SCLN,QUOT,     ENT,  \
-        LSFT,Z,   X,   C,   V,   B,   N,   M,   COMM,DOT, SLSH,          RSFT, \
-        LCTL,LGUI,LALT,          FN0,                     RALT,RGUI,APP, RCTL),
-
-    /* Overlay 1: SpaceFN
-     * ,-----------------------------------------------------------.
-     * |`  | F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Delete |
-     * |-----------------------------------------------------------|
-     * |     |   |   |   |   |   |   |Hom|Up |End|Psc|Slk|Pau|Ins  |
-     * |-----------------------------------------------------------|
-     * |      |   |   |   |   |   |PgU|Lef|Dow|Rig|   |   |        |
-     * |-----------------------------------------------------------|
-     * |        |   |   |   |   |Spc|PgD|`  |~  |   |   |          |
-     * |-----------------------------------------------------------|
-     * |    |    |    |                        |    |    |    |    |
-     * `-----------------------------------------------------------'
-     */
-    KEYMAP_ANSI(
-        GRV, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, DEL,  \
-        TRNS,TRNS,TRNS,ESC, TRNS,TRNS,TRNS,HOME,UP,  END, PSCR,SLCK,PAUS,INS,  \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PGUP,LEFT,DOWN,RGHT,TRNS,TRNS,     TRNS, \
-        TRNS,TRNS,TRNS,TRNS,TRNS,SPC, PGDN,GRV, FN1, TRNS,TRNS,          TRNS, \
-        TRNS,TRNS,TRNS,          TRNS,                    TRNS,TRNS,TRNS,TRNS),
-};
-
-/*
- * Fn action definition
- */
-const uint16_t PROGMEM fn_actions[] = {
-    [0] = ACTION_LAYER_TAP_KEY(1, KC_SPACE),
-    [1] = ACTION_MODS_KEY(MOD_LSFT, KC_GRV),    // tilde
-};
diff --git a/keyboard/gh60/keymaps/hasu.c b/keyboard/gh60/keymaps/hasu.c
new file mode 100644 (file)
index 0000000..e6af285
--- /dev/null
@@ -0,0 +1,145 @@
+#include "keymap_common.h"
+
+/*
+ * Hasu
+ */
+const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+    /* Keymap 0: Default Layer
+     * ,-----------------------------------------------------------.
+     * |Esc|  1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =|Backsp |
+     * |-----------------------------------------------------------|
+     * |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|    \|
+     * |-----------------------------------------------------------|
+     * |Caps  |  A|  S|  D|  F|  G|  H|  J|  K|  L|Fn3|  '|Return  |
+     * |-----------------------------------------------------------|
+     * |Shift   |  Z|  X|  C|  V|  B|  N|  M|  ,|  .|Fn2|Shift     |
+     * |-----------------------------------------------------------|
+     * |Ctrl|Gui |Alt |      Space             |Alt |Fn4 |Fn4 |Fn1 |
+     * `-----------------------------------------------------------'
+     */
+    KEYMAP_ANSI(
+        ESC, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSPC, \
+        TAB, Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC,BSLS, \
+        LCTL,A,   S,   D,   F,   G,   H,   J,   K,   L,   FN2, QUOT,     ENT,  \
+        LSFT,Z,   X,   C,   V,   B,   N,   M,   COMM,DOT, FN1,           FN9,  \
+        LCTL,LGUI,LALT,          SPC,                     RALT,FN3, FN3, FN0),
+    /* Keymap 1: colemak */
+    KEYMAP_ANSI(
+        GRV, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSPC, \
+        TAB, Q,   W,   F,   P,   G,   J,   L,   U,   Y,   SCLN,LBRC,RBRC,BSLS, \
+        BSPC,A,   R,   S,   T,   D,   H,   N,   E,   I,   O,   QUOT,     ENT,  \
+        LSFT,Z,   X,   C,   V,   B,   K,   M,   COMM,DOT, SLSH,          RSFT, \
+        LCTL,LGUI,LALT,          SPC,                     RALT,RGUI,APP, FN0),
+    /* Keymap 2: dvorak */
+    KEYMAP_ANSI(
+        GRV, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   LBRC,RBRC,BSPC, \
+        TAB, QUOT,COMM,DOT, P,   Y,   F,   G,   C,   R,   L,   SLSH,EQL, BSLS, \
+        CAPS,A,   O,   E,   U,   I,   D,   H,   T,   N,   S,   MINS,     ENT,  \
+        LSFT,SCLN,Q,   J,   K,   X,   B,   M,   W,   V,   Z,             RSFT, \
+        LCTL,LGUI,LALT,          SPC,                     RALT,RGUI,APP, FN0),
+    /* Keymap 3: workman */
+    KEYMAP_ANSI(
+        GRV, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSPC, \
+        TAB, Q,   D,   R,   W,   B,   J,   F,   U,   P,   SCLN,LBRC,RBRC,BSLS, \
+        BSPC,A,   S,   H,   T,   G,   Y,   N,   E,   O,   I,   QUOT,     ENT,  \
+        LSFT,Z,   X,   M,   C,   V,   K,   L,   COMM,DOT, SLSH,          RSFT, \
+        LCTL,LGUI,LALT,          SPC,                     RALT,RGUI,APP, FN0),
+
+    /* Overlay 4: HHKB mode
+     * ,-----------------------------------------------------------.
+     * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Delete |
+     * |-----------------------------------------------------------|
+     * |Caps |   |   |   |   |   |   |   |Psc|Slk|Pus|Up |   |Inser|
+     * |-----------------------------------------------------------|
+     * |Contro|VoD|VoU|Mut|   |   |  *|  /|Hom|PgU|Lef|Rig|Enter   |
+     * |-----------------------------------------------------------|
+     * |Shift   |   |   |   |   |   |  +|  -|End|PgD|Dow|Shift     |
+     * |-----------------------------------------------------------|
+     * |Ctrl|Gui |Alt |      Space             |Alt |Gui |App |    |
+     * `-----------------------------------------------------------'
+     */
+    KEYMAP_ANSI(
+        GRV, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, DEL,  \
+        CAPS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PSCR,SLCK,PAUS,UP,  TRNS,INS,  \
+        LCTL,VOLD,VOLU,MUTE,TRNS,TRNS,PAST,PSLS,HOME,PGUP,LEFT,RGHT,     ENT,  \
+        LSFT,TRNS,TRNS,TRNS,TRNS,TRNS,PPLS,PMNS,END, PGDN,DOWN,          RSFT, \
+        LCTL,LGUI,LALT,          SPC,                     RALT,RGUI,FN4, TRNS),
+    /* Overlay 5: Vi mode (Slash)
+     * ,-----------------------------------------------------------.
+     * |  `| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Backsp |
+     * |-----------------------------------------------------------|
+     * |Tab  |Hom|PgD|Up |PgU|End|Hom|PgD|PgU|End|   |   |   |     |
+     * |-----------------------------------------------------------|
+     * |Contro|   |Lef|Dow|Rig|   |Lef|Dow|Up |Rig|   |   |Return  |
+     * |-----------------------------------------------------------|
+     * |Shift   |   |   |   |   |   |Hom|PgD|PgU|End|   |Shift     |
+     * |-----------------------------------------------------------|
+     * |Ctrl|Gui |Alt |      Space             |Alt |Gui |App |Ctrl|
+     * `-----------------------------------------------------------'
+     */
+    KEYMAP_ANSI(
+        GRV, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, BSPC, \
+        TAB, HOME,PGDN,UP,  PGUP,END, HOME,PGDN,PGUP,END, TRNS,TRNS,TRNS,TRNS, \
+        LCTL,TRNS,LEFT,DOWN,RGHT,TRNS,LEFT,DOWN,UP,  RGHT,TRNS,TRNS,     ENT,  \
+        LSFT,TRNS,TRNS,TRNS,TRNS,TRNS,HOME,PGDN,PGUP,END, TRNS,          RSFT, \
+        LCTL,LGUI,LALT,          SPC,                     RALT,RGUI,APP, RCTL),
+    /* Overlay 6: Mouse mode (Semicolon/App)
+     * ,-----------------------------------------------------------.
+     * |  `| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Backsp |
+     * |-----------------------------------------------------------|
+     * |Tab  |   |   |   |   |   |MwL|MwD|MwU|MwR|   |   |   |     |
+     * |-----------------------------------------------------------|
+     * |Contro|   |Ac0|Ac1|Ac1|   |McL|McD|McU|McR|   |   |Return  |
+     * |-----------------------------------------------------------|
+     * |Shift   |   |   |   |   |Mb3|Mb2|Mb1|Mb4|Mb5|   |Shift     |
+     * |-----------------------------------------------------------|
+     * |Ctrl|Gui |Alt |      Space             |    |    |    |    |
+     * `-----------------------------------------------------------'
+     * Mc: Mouse Cursor / Mb: Mouse Button / Mw: Mouse Wheel
+     */
+    KEYMAP_ANSI(
+        GRV, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, BSPC, \
+        TAB, TRNS,TRNS,TRNS,TRNS,TRNS,WH_L,WH_D,WH_U,WH_R,TRNS,TRNS,TRNS,TRNS, \
+        LCTL,TRNS,ACL0,ACL1,ACL2,TRNS,MS_L,MS_D,MS_U,MS_R,TRNS,TRNS,     ENT,  \
+        LSFT,TRNS,TRNS,TRNS,TRNS,BTN3,BTN2,BTN1,BTN4,BTN5,TRNS,          RSFT, \
+        LCTL,LGUI,LALT,          BTN1,                    TRNS,TRNS,TRNS,RCTL),
+    /* Overlay 7: Layout selector
+     * ,-----------------------------------------------------------.
+     * | Lq| Lc| Ld| Lw|   |   |   |   |   |   |   |   |   |       |
+     * |-----------------------------------------------------------|
+     * |     |Lq |Lw |   |   |   |   |   |   |   |   |   |   |     |
+     * |-----------------------------------------------------------|
+     * |      |   |   |Ld |   |   |   |   |   |   |   |   |        |
+     * |-----------------------------------------------------------|
+     * |        |   |   |Lc |   |   |   |   |   |   |   |          |
+     * |-----------------------------------------------------------|
+     * |    |    |    |                        |    |    |    |    |
+     * `-----------------------------------------------------------'
+     * Lq: set Qwerty layout
+     * Lc: set Colemak layout
+     * Ld: set Dvorak layout
+     * Lw: set Workman layout
+     */
+    KEYMAP_ANSI(
+        FN5, FN6, FN7, FN8, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
+        TRNS,FN5, FN8, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
+        TRNS,TRNS,TRNS,FN7, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,     TRNS, \
+        TRNS,TRNS,TRNS,FN6, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,          TRNS, \
+        TRNS,TRNS,TRNS,          TRNS,                    TRNS,TRNS,TRNS,TRNS),
+};
+
+/*
+ * Fn action definition
+ */
+const uint16_t PROGMEM fn_actions[] = {
+    [0] = ACTION_LAYER_MOMENTARY(4),
+    [1] = ACTION_LAYER_TAP_KEY(5, KC_SLASH),
+    [2] = ACTION_LAYER_TAP_KEY(6, KC_SCLN),
+    [3] = ACTION_LAYER_MOMENTARY(6),
+    [4] = ACTION_LAYER_MOMENTARY(7),   // to Layout selector
+    [5] = ACTION_DEFAULT_LAYER_SET(0),  // set qwerty layout
+    [6] = ACTION_DEFAULT_LAYER_SET(1),  // set colemak layout
+    [7] = ACTION_DEFAULT_LAYER_SET(2),  // set dvorak layout
+    [8] = ACTION_DEFAULT_LAYER_SET(3),  // set workman layout
+    [9] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_GRV),
+};
diff --git a/keyboard/gh60/keymaps/hhkb.c b/keyboard/gh60/keymaps/hhkb.c
new file mode 100644 (file)
index 0000000..ce1b816
--- /dev/null
@@ -0,0 +1,52 @@
+#include "keymap_common.h"
+
+/*
+ * HHKB Layout
+ */
+const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+    /* 0: Default layer
+     * ,-----------------------------------------------------------.
+     * |Esc|  1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =|  \|  `|
+     * |-----------------------------------------------------------|
+     * |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|Bspc |
+     * |-----------------------------------------------------------|
+     * |Ctrl  |  A|  S|  D|  F|  G|  H|  J|  K|  L|Fn3|  '|Return  |
+     * |-----------------------------------------------------------|
+     * |Shift   |  Z|  X|  C|  V|  B|  N|  M|  ,|  .|  /|Shift |Fn |
+     * |-----------------------------------------------------------|
+     * |    |Gui |Alt |      Space             |    |Alt |Gui |    |
+     * `-----------------------------------------------------------'
+     */
+    KEYMAP_HHKB(
+        ESC, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSLS, GRV, \
+        TAB, Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC,BSPC,      \
+        LCTL,A,   S,   D,   F,   G,   H,   J,   K,   L,   SCLN,QUOT,     ENT,       \
+        LSFT,Z,   X,   C,   V,   B,   N,   M,   COMM,DOT, SLSH,     RSFT,FN0,       \
+        NO,  LGUI,LALT,          SPC,                     NO,  RALT,RGUI,NO),
+    /* 1: HHKB Fn layer
+     * ,-----------------------------------------------------------.
+     * |Pwr| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
+     * |-----------------------------------------------------------|
+     * |Caps |   |   |   |   |   |   |   |Psc|Slk|Pus|Up |   |     |
+     * |-----------------------------------------------------------|
+     * |      |VoD|VoU|Mut|Ejc|   |  *|  /|Hom|PgU|Lef|Rig|Enter   |
+     * |-----------------------------------------------------------|
+     * |        |   |   |   |   |   |  +|  -|End|PgD|Dow|      |   |
+     * |-----------------------------------------------------------|
+     * |    |    |    |                        |    |    |    |    |
+     * `-----------------------------------------------------------'
+     */
+    KEYMAP_HHKB(
+        PWR, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, INS, DEL,  \
+        CAPS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PSCR,SLCK,PAUS,UP,  TRNS,TRNS,      \
+        TRNS,VOLD,VOLU,MUTE,EJCT,TRNS,PAST,PSLS,HOME,PGUP,LEFT,RGHT,     PENT,      \
+        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PPLS,PMNS,END, PGDN,DOWN,     TRNS,TRNS,      \
+        TRNS,TRNS,TRNS,          TRNS,                    TRNS,TRNS,TRNS,TRNS),
+};
+
+/*
+ * Fn action definition
+ */
+const uint16_t PROGMEM fn_actions[] = {
+    [0] = ACTION_LAYER_MOMENTARY(1),
+};
diff --git a/keyboard/gh60/keymaps/plain.c b/keyboard/gh60/keymaps/plain.c
new file mode 100644 (file)
index 0000000..3138c18
--- /dev/null
@@ -0,0 +1,11 @@
+#include "keymap_common.h"
+
+const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+    /* 0: qwerty */
+    KEYMAP(ESC, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSPC, \
+           TAB, Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC,BSLS, \
+           CAPS,A,   S,   D,   F,   G,   H,   J,   K,   L,   SCLN,QUOT,NO,  ENT,  \
+           LSFT,NO,  Z,   X,   C,   V,   B,   N,   M,   COMM,DOT, SLSH,NO,  RSFT, \
+           LCTL,LGUI,LALT,          SPC,                     RALT,RGUI,APP, RCTL),
+};
+const uint16_t PROGMEM fn_actions[] = {};
diff --git a/keyboard/gh60/keymaps/poker.c b/keyboard/gh60/keymaps/poker.c
new file mode 100644 (file)
index 0000000..7a612ee
--- /dev/null
@@ -0,0 +1,104 @@
+#include "keymap_common.h"
+
+const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+    /* 0: qwerty */
+    KEYMAP_ANSI(
+        GRV, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSPC, \
+        TAB, Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC,BSLS, \
+        CAPS,A,   S,   D,   F,   G,   H,   J,   K,   L,   SCLN,QUOT,     ENT,  \
+        LSFT,Z,   X,   C,   V,   B,   N,   M,   COMM,DOT, SLSH,          RSFT, \
+        LCTL,LGUI,LALT,          SPC,                     FN0, RGUI,APP, RCTL),
+    /* 1: colemak */
+    KEYMAP_ANSI(
+        GRV, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSPC, \
+        TAB, Q,   W,   F,   P,   G,   J,   L,   U,   Y,   SCLN,LBRC,RBRC,BSLS, \
+        BSPC,A,   R,   S,   T,   D,   H,   N,   E,   I,   O,   QUOT,     ENT,  \
+        LSFT,Z,   X,   C,   V,   B,   K,   M,   COMM,DOT, SLSH,          RSFT, \
+        LCTL,LGUI,LALT,          SPC,                     FN0, RGUI,APP, RCTL),
+    /* 2: dvorak */
+    KEYMAP_ANSI(
+        GRV, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   LBRC,RBRC,BSPC, \
+        TAB, QUOT,COMM,DOT, P,   Y,   F,   G,   C,   R,   L,   SLSH,EQL, BSLS, \
+        CAPS,A,   O,   E,   U,   I,   D,   H,   T,   N,   S,   MINS,     ENT,  \
+        LSFT,SCLN,Q,   J,   K,   X,   B,   M,   W,   V,   Z,             RSFT, \
+        LCTL,LGUI,LALT,          SPC,                     FN0, RGUI,APP, RCTL),
+    /* 3: workman */
+    KEYMAP_ANSI(
+        GRV, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSPC, \
+        TAB, Q,   D,   R,   W,   B,   J,   F,   U,   P,   SCLN,LBRC,RBRC,BSLS, \
+        BSPC,A,   S,   H,   T,   G,   Y,   N,   E,   O,   I,   QUOT,     ENT,  \
+        LSFT,Z,   X,   M,   C,   V,   K,   L,   COMM,DOT, SLSH,          RSFT, \
+        LCTL,LGUI,LALT,          SPC,                     FN0, RGUI,APP, RCTL),
+    /* 4: Poker with Arrow */
+    KEYMAP_ANSI(
+        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
+        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
+        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,     TRNS, \
+        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,          UP,   \
+        TRNS,TRNS,TRNS,          TRNS,                    TRNS,LEFT,DOWN,RGHT),
+    /* 5: Poker with Esc */
+    KEYMAP_ANSI(
+        ESC, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
+        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
+        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,     TRNS, \
+        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,          TRNS, \
+        TRNS,TRNS,TRNS,          TRNS,                    TRNS,TRNS,TRNS,TRNS),
+    /* 6: Poker Fn
+     * ,-----------------------------------------------------------.
+     * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|       |
+     * |-----------------------------------------------------------|
+     * |     |FnQ| Up|   |   |   |   |   |   |Cal|   |Hom|Ins|FnL  |
+     * |-----------------------------------------------------------|
+     * |      |Lef|Dow|Rig|   |   |Psc|Slk|Pau|   |Tsk|End|        |
+     * |-----------------------------------------------------------|
+     * |        |Del|   |Web|Mut|VoU|VoD|   |PgU|PgD|Del|          |
+     * |-----------------------------------------------------------|
+     * |    |    |    |         FnS            |    |    |    |    |
+     * `-----------------------------------------------------------'
+     * Fn:  to Fn overlay
+     * FnL: to Layout selector overaly
+     * FnQ: toggle Esc overlay
+     * FnS: toggle Arrow overlay
+     */
+    KEYMAP_ANSI(
+        ESC, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, TRNS, \
+        TRNS,FN2, UP,  TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,CALC,TRNS,HOME,INS, FN4,  \
+        TRNS,LEFT,DOWN,RGHT,TRNS,TRNS,PSCR,SLCK,PAUS,TRNS,FN3, END,      TRNS, \
+        TRNS,DEL, TRNS,WHOM,MUTE,VOLU,VOLD,TRNS,PGUP,PGDN,DEL,           TRNS, \
+        TRNS,TRNS,TRNS,          FN1,                     TRNS,TRNS,TRNS,TRNS),
+    /* 7: Layout selector
+     * ,-----------------------------------------------------------.
+     * | Lq| Lc| Ld| Lw|   |   |   |   |   |   |   |   |   |       |
+     * |-----------------------------------------------------------|
+     * |     |Lq |Lw |   |   |   |   |   |   |   |   |   |   |     |
+     * |-----------------------------------------------------------|
+     * |      |   |   |Ld |   |   |   |   |   |   |   |   |        |
+     * |-----------------------------------------------------------|
+     * |        |   |   |Lc |   |   |   |   |   |   |   |          |
+     * |-----------------------------------------------------------|
+     * |    |    |    |                        |    |    |    |    |
+     * `-----------------------------------------------------------'
+     * Lq: set Qwerty layout
+     * Lc: set Colemak layout
+     * Ld: set Dvorak layout
+     * Lw: set Workman layout
+     */
+    KEYMAP_ANSI(
+        FN5, FN6, FN7, FN8, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
+        TRNS,FN5, FN8, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
+        TRNS,TRNS,TRNS,FN7, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,     TRNS, \
+        TRNS,TRNS,TRNS,FN6, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,          TRNS, \
+        TRNS,TRNS,TRNS,          TRNS,                    TRNS,TRNS,TRNS,TRNS),
+};
+const uint16_t PROGMEM fn_actions[] = {
+    /* Poker Layout */
+    [0] = ACTION_LAYER_MOMENTARY(6),  // to Fn overlay
+    [1] = ACTION_LAYER_TOGGLE(4),     // toggle arrow overlay
+    [2] = ACTION_LAYER_TOGGLE(5),     // toggle Esc overlay
+    [3] = ACTION_MODS_KEY(MOD_RCTL|MOD_RSFT, KC_ESC), // Task(RControl,RShift+Esc)
+    [4] = ACTION_LAYER_MOMENTARY(7),  // to Layout selector
+    [5] = ACTION_DEFAULT_LAYER_SET(0),  // set qwerty layout
+    [6] = ACTION_DEFAULT_LAYER_SET(1),  // set colemak layout
+    [7] = ACTION_DEFAULT_LAYER_SET(2),  // set dvorak layout
+    [8] = ACTION_DEFAULT_LAYER_SET(3),  // set workman layout
+};
diff --git a/keyboard/gh60/keymaps/poker_bit.c b/keyboard/gh60/keymaps/poker_bit.c
new file mode 100644 (file)
index 0000000..b8870fd
--- /dev/null
@@ -0,0 +1,50 @@
+#include "keymap_common.h"
+
+// Poker fix with toggle and bit operation
+// Fn + Esc = `
+// Fn + {left, down, up, right}  = {home, pgdown, pgup, end}
+const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+    /* 0: qwerty */
+    KEYMAP_ANSI(
+        GRV, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSPC, \
+        TAB, Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC,BSLS, \
+        LCTL,A,   S,   D,   F,   G,   H,   J,   K,   L,   SCLN,QUOT,     ENT,  \
+        LSFT,Z,   X,   C,   V,   B,   N,   M,   COMM,DOT, SLSH,          RSFT, \
+        LCTL,LGUI,LALT,          SPC,                     FN0, RGUI,APP, RCTL),
+    /* 4: Poker Default + Fn'd */
+    [4] = KEYMAP_ANSI(
+        TRNS,F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, TRNS, \
+        CAPS,FN2, UP,  TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,CALC,TRNS,HOME,INS, TRNS, \
+        TRNS,LEFT,DOWN,RGHT,TRNS,TRNS,PSCR,SLCK,PAUS,TRNS,FN4, END,      TRNS, \
+        TRNS,DEL, TRNS,WHOM,MUTE,VOLU,VOLD,TRNS,PGUP,PGDN,DEL,           TRNS, \
+        TRNS,TRNS,TRNS,          FN1,                     TRNS,TRNS,TRNS,TRNS),
+    /* 5: Poker with Arrow */
+    KEYMAP_ANSI(
+        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
+        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
+        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,     TRNS, \
+        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,          PGUP, \
+        TRNS,TRNS,TRNS,          TRNS,                    FN3, HOME,PGDN,END),
+    /* 6: Poker with Esc */
+    KEYMAP_ANSI(
+        ESC, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
+        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
+        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,     TRNS, \
+        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,          TRNS, \
+        TRNS,TRNS,TRNS,          TRNS,                    TRNS,TRNS,TRNS,TRNS),
+    /* 7: Poker with Arrow + Fn'd */
+    KEYMAP_ANSI(
+        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
+        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
+        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,     TRNS, \
+        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,          UP,   \
+        TRNS,TRNS,TRNS,          TRNS,                    TRNS,LEFT,DOWN,RGHT),
+};
+const uint16_t PROGMEM fn_actions[] = {
+    /* Poker Layout */
+    [0] = ACTION_LAYER_BIT_XOR(1, 0b0101, ON_BOTH),   // Poker Fn(with fix for Esc)
+    [1] = ACTION_LAYER_TOGGLE(5),                     // Poker Arrow toggle
+    [2] = ACTION_LAYER_TOGGLE(6),                     // Poker Esc toggle
+    [3] = ACTION_LAYER_BIT_XOR(1, 0b1101, ON_BOTH),   // Poker Fn(with fix for Arrow)
+    [4] = ACTION_MODS_KEY(MOD_RCTL|MOD_RSFT, KC_ESC), // FN3 Task(RControl,RShift+Esc)
+};
diff --git a/keyboard/gh60/keymaps/poker_set.c b/keyboard/gh60/keymaps/poker_set.c
new file mode 100644 (file)
index 0000000..aaa31fc
--- /dev/null
@@ -0,0 +1,82 @@
+#include "keymap_common.h"
+
+// Poker fix with set(state transition)
+// Fn + Esc = `
+// Fn + {left, down, up, right}  = {home, pgdown, pgup, end}
+const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+    /* 0: qwerty */
+    KEYMAP_ANSI(
+        GRV, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSPC, \
+        TAB, Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC,BSLS, \
+        LCTL,A,   S,   D,   F,   G,   H,   J,   K,   L,   SCLN,QUOT,     ENT,  \
+        LSFT,Z,   X,   C,   V,   B,   N,   M,   COMM,DOT, SLSH,          RSFT, \
+        LCTL,LGUI,LALT,          SPC,                     FN0, RGUI,APP, RCTL),
+    /* 1: Poker with Arrow */
+    KEYMAP_ANSI(
+        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
+        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
+        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,     TRNS, \
+        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,          UP,   \
+        TRNS,TRNS,TRNS,          TRNS,                    FN1, LEFT,DOWN,RGHT),
+    /* 2: Poker with Esc */
+    KEYMAP_ANSI(
+        ESC, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
+        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
+        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,     TRNS, \
+        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,          TRNS, \
+        TRNS,TRNS,TRNS,          TRNS,                    FN2, TRNS,TRNS,TRNS),
+    /* 3: Poker with Arrow and Esc */
+    KEYMAP_ANSI(
+        ESC, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
+        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
+        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,     TRNS, \
+        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,          UP,   \
+        TRNS,TRNS,TRNS,          TRNS,                    FN3, LEFT,DOWN,RGHT),
+    /* 4: Poker Fn'd */
+    KEYMAP_ANSI(
+        ESC, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, TRNS, \
+        TRNS,FN6, UP,  TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,CALC,TRNS,HOME,INS, TRNS, \
+        TRNS,LEFT,DOWN,RGHT,TRNS,TRNS,PSCR,SLCK,PAUS,TRNS,FN8, END,      TRNS, \
+        TRNS,DEL, TRNS,WHOM,MUTE,VOLU,VOLD,TRNS,PGUP,PGDN,DEL,           TRNS, \
+        TRNS,TRNS,TRNS,          FN5,                     FN4, TRNS,TRNS,TRNS),
+    /* 5: Poker Fn'd arrow */
+    KEYMAP_ANSI(
+        ESC, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, TRNS, \
+        TRNS,FN7, UP,  TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,CALC,TRNS,HOME,INS, TRNS, \
+        TRNS,LEFT,DOWN,RGHT,TRNS,TRNS,PSCR,SLCK,PAUS,TRNS,FN8, END,      TRNS, \
+        TRNS,DEL, TRNS,WHOM,MUTE,VOLU,VOLD,TRNS,PGUP,PGDN,DEL,           PGUP, \
+        TRNS,TRNS,TRNS,          FN4,                     FN5, HOME,PGDN,END),
+    /* 6: Poker Fn'd Esc */
+    KEYMAP_ANSI(
+        GRV, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, TRNS, \
+        TRNS,FN4, UP,  TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,CALC,TRNS,HOME,INS, TRNS, \
+        TRNS,LEFT,DOWN,RGHT,TRNS,TRNS,PSCR,SLCK,PAUS,TRNS,FN8, END,      TRNS, \
+        TRNS,DEL, TRNS,WHOM,MUTE,VOLU,VOLD,TRNS,PGUP,PGDN,DEL,           TRNS, \
+        TRNS,TRNS,TRNS,          FN7,                     FN6, TRNS,TRNS,TRNS),
+    /* 7: Poker Fn'd Arrow + Esc */
+    KEYMAP_ANSI(
+        GRV, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, TRNS, \
+        TRNS,FN5, UP,  TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,CALC,TRNS,HOME,INS, TRNS, \
+        TRNS,LEFT,DOWN,RGHT,TRNS,TRNS,PSCR,SLCK,PAUS,TRNS,FN8, END,      TRNS, \
+        TRNS,DEL, TRNS,WHOM,MUTE,VOLU,VOLD,TRNS,PGUP,PGDN,DEL,           PGUP, \
+        TRNS,TRNS,TRNS,          FN6,                     FN7, HOME,PGDN,END),
+};
+
+/*
+ * Fn action definition
+ */
+const uint16_t PROGMEM fn_actions[] = {
+    /* Poker Layout */
+    [0] = ACTION_LAYER_SET(4, ON_PRESS),     // FN0 move to Fn'd             when press
+    [1] = ACTION_LAYER_SET(5, ON_PRESS),     // FN1 move to Fn'd arrow       when press
+    [2] = ACTION_LAYER_SET(6, ON_PRESS),     // FN2 move to Fn'd Esc         when press
+    [3] = ACTION_LAYER_SET(7, ON_PRESS),     // FN3 move to Fn'd arrow + Esc when press
+
+    //[4] = ACTION_LAYER_CLEAR(ON_RELEASE),    // FN4 clear overlay            when release
+    [4] = ACTION_LAYER_SET(0, ON_RELEASE),   // FN4 clear overlay            when release
+    [5] = ACTION_LAYER_SET(1, ON_RELEASE),   // FN5 move to arrow            when release
+    [6] = ACTION_LAYER_SET(2, ON_RELEASE),   // FN6 move to Esc              when release
+    [7] = ACTION_LAYER_SET(3, ON_RELEASE),   // FN7 move to arrow + Esc      when release
+
+    [8] = ACTION_MODS_KEY(MOD_RCTL|MOD_RSFT, KC_ESC), // FN8 Task(RControl,RShift+Esc)
+};
diff --git a/keyboard/gh60/keymaps/spacefn.c b/keyboard/gh60/keymaps/spacefn.c
new file mode 100644 (file)
index 0000000..8077dce
--- /dev/null
@@ -0,0 +1,55 @@
+#include "keymap_common.h"
+
+/*
+ * SpaceFN
+ * http://geekhack.org/index.php?topic=51069.0
+ */
+const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+    /* Keymap 0: Default Layer
+     * ,-----------------------------------------------------------.
+     * |Esc|  1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =|Backsp |
+     * |-----------------------------------------------------------|
+     * |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|    \|
+     * |-----------------------------------------------------------|
+     * |Caps  |  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  '|Return  |
+     * |-----------------------------------------------------------|
+     * |Shift   |  Z|  X|  C|  V|  B|  N|  M|  ,|  .|  /|Shift     |
+     * |-----------------------------------------------------------|
+     * |Ctrl|Gui |Alt |      Space             |Alt |Gui |App |Ctrl|
+     * `-----------------------------------------------------------'
+     */
+    KEYMAP_ANSI(
+        ESC, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSPC, \
+        TAB, Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC,BSLS, \
+        CAPS,A,   S,   D,   F,   G,   H,   J,   K,   L,   SCLN,QUOT,     ENT,  \
+        LSFT,Z,   X,   C,   V,   B,   N,   M,   COMM,DOT, SLSH,          RSFT, \
+        LCTL,LGUI,LALT,          FN0,                     RALT,RGUI,APP, RCTL),
+
+    /* Overlay 1: SpaceFN
+     * ,-----------------------------------------------------------.
+     * |`  | F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Delete |
+     * |-----------------------------------------------------------|
+     * |     |   |   |   |   |   |   |Hom|Up |End|Psc|Slk|Pau|Ins  |
+     * |-----------------------------------------------------------|
+     * |      |   |   |   |   |   |PgU|Lef|Dow|Rig|   |   |        |
+     * |-----------------------------------------------------------|
+     * |        |   |   |   |   |Spc|PgD|`  |~  |   |   |          |
+     * |-----------------------------------------------------------|
+     * |    |    |    |                        |    |    |    |    |
+     * `-----------------------------------------------------------'
+     */
+    KEYMAP_ANSI(
+        GRV, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, DEL,  \
+        TRNS,TRNS,TRNS,ESC, TRNS,TRNS,TRNS,HOME,UP,  END, PSCR,SLCK,PAUS,INS,  \
+        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PGUP,LEFT,DOWN,RGHT,TRNS,TRNS,     TRNS, \
+        TRNS,TRNS,TRNS,TRNS,TRNS,SPC, PGDN,GRV, FN1, TRNS,TRNS,          TRNS, \
+        TRNS,TRNS,TRNS,          TRNS,                    TRNS,TRNS,TRNS,TRNS),
+};
+
+/*
+ * Fn action definition
+ */
+const uint16_t PROGMEM fn_actions[] = {
+    [0] = ACTION_LAYER_TAP_KEY(1, KC_SPACE),
+    [1] = ACTION_MODS_KEY(MOD_LSFT, KC_GRV),    // tilde
+};
index 5a179bd24da994f5a75eb6c543255ce5d7605ab9..d434246cef3d22618d996aeaea550b4ed02c8023 100644 (file)
@@ -129,17 +129,17 @@ NKRO_ENABLE = yes         # USB Nkey Rollover
 # Keymap file
 #
 ifdef KEYMAP
-    SRC := keymap_$(KEYMAP).c $(SRC)
+    SRC := keymaps/$(KEYMAP).c $(SRC)
 else
     ifdef HHKB_JP
-       SRC := keymap_jp.c $(SRC)
+       SRC := keymaps/jp.c $(SRC)
     else 
-       SRC := keymap_hhkb.c $(SRC)
+       SRC := keymaps/hhkb.c $(SRC)
     endif
 endif
 
 
-ifneq (, $(or $(findstring keymap_jp.c, $(SRC)), $(findstring yes, $(HHKB_JP))))
+ifneq (, $(or $(findstring jp.c, $(SRC)), $(findstring yes, $(HHKB_JP))))
     OPT_DEFS += -DHHKB_JP
 endif
 
index 7d0f8c3a9c097c2e6abd2e1c95efe5710921b341..403a8ec60ab0965323a7725aa89fc0d978df8526 100644 (file)
@@ -18,9 +18,9 @@ SRC =   keymap_common.c \
        led.c
 
 ifdef KEYMAP
-    SRC := keymap_$(KEYMAP).c $(SRC)
+    SRC := keymaps/$(KEYMAP).c $(SRC)
 else
-    SRC := keymap_hasu.c $(SRC)
+    SRC := keymaps/hasu.c $(SRC)
 endif
 
 CONFIG_H = config.h
index cbb2b744c9652db6bb22f571b69c9ef7fa010fbe..a730442af027872789568e9d1bf9e072edd0d96e 100644 (file)
@@ -122,17 +122,17 @@ COMMAND_ENABLE = yes      # Commands for debug and configuration
 # Keymap file
 #
 ifdef KEYMAP
-    SRC := keymap_$(KEYMAP).c $(SRC)
+    SRC := keymaps/$(KEYMAP).c $(SRC)
 else
     ifdef HHKB_JP
-       SRC := keymap_jp.c $(SRC)
+       SRC := keymaps/jp.c $(SRC)
     else 
-       SRC := keymap_hhkb.c $(SRC)
+       SRC := keymaps/hhkb.c $(SRC)
     endif
 endif
 
 
-ifneq (, $(or $(findstring keymap_jp.c, $(SRC)), $(findstring yes, $(HHKB_JP))))
+ifneq (, $(or $(findstring jp.c, $(SRC)), $(findstring yes, $(HHKB_JP))))
     OPT_DEFS += -DHHKB_JP
 endif
 
index fcd72e194111b529fe1e8d00d00c9e5bfaeb6c4d..e20c23d8236d886d4869e14e51678ee07b2ef281 100644 (file)
@@ -76,7 +76,7 @@ Use [Teensy Loader] if your controller is Teensy/Teensy++.
 
 
 ##Keymap
-To define your own keymap create file named `keymap_<name>.c` and see [keymap document](../../doc/keymap.md) and existent keymap files.
+To define your own keymap create a file in the keymaps folder named `<name>.c` and see keymap document (you can find in top README.md) and existent keymap files.
 
 
 ##Hardware
diff --git a/keyboard/hhkb/keymap_hasu.c b/keyboard/hhkb/keymap_hasu.c
deleted file mode 100644 (file)
index a5602de..0000000
+++ /dev/null
@@ -1,282 +0,0 @@
-/* 
- * Hasu: my personal keymap
- */
-#include "keymap_common.h"
-
-
-#ifdef KEYMAP_SECTION_ENABLE
-const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS] __attribute__ ((section (".keymap.keymaps"))) = {
-#else
-const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS] PROGMEM = {
-#endif
-    /* Layer 0: Default Layer
-     * ,-----------------------------------------------------------.
-     * |Esc|  1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =|  \|  `|
-     * |-----------------------------------------------------------|
-     * |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|Backs|
-     * |-----------------------------------------------------------|
-     * |Contro|  A|  S|  D|  F|  G|  H|  J|  K|  L|Fn3|  '|Fn6     |
-     * |-----------------------------------------------------------|
-     * |Fn7     |  Z|  X|  C|  V|  B|  N|  M|  ,|  .|Fn2|Shift |Fn1|
-     * `-----------------------------------------------------------'
-     *       |Gui|Alt  |         Fn4           |Fn5  |Gui|
-     *       `-------------------------------------------'
-     */
-    [0] = \
-    KEYMAP(ESC, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSLS,GRV, \
-           TAB, Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC,BSPC, \
-           LCTL,A,   S,   D,   F,   G,   H,   J,   K,   L,   FN3, QUOT,FN6, \
-           FN7, Z,   X,   C,   V,   B,   N,   M,   COMM,DOT, FN2, RSFT,FN1, \
-                LGUI,LALT,          FN4,                FN5, RGUI),
-
-    /* Layer 1: HHKB mode[HHKB Fn]
-     * ,-----------------------------------------------------------.
-     * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
-     * |-----------------------------------------------------------|
-     * |Caps |   |   |   |   |   |   |   |Psc|Slk|Pus|Up |   |Backs|
-     * |-----------------------------------------------------------|
-     * |Contro|VoD|VoU|Mut|   |   |  *|  /|Hom|PgU|Lef|Rig|Enter   |
-     * |-----------------------------------------------------------|
-     * |Shift   |   |   |   |   |   |  +|  -|End|PgD|Dow|Shift |   |
-     * `-----------------------------------------------------------'
-     *       |Gui|Alt  |         Space         |Alt  |Gui|
-     *       `-------------------------------------------'
-     */ 
-    [1] = \
-    KEYMAP(GRV, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, INS, DEL, \
-           CAPS,NO,  NO,  NO,  NO,  NO,  NO,  NO,  PSCR,SLCK,PAUS, UP,  NO,  BSPC, \
-           LCTL,VOLD,VOLU,MUTE,NO,  NO,  PAST,PSLS,HOME,PGUP,LEFT,RGHT,ENT, \
-           LSFT,NO,  NO,  NO,  NO,  NO,  PPLS,PMNS,END, PGDN,DOWN,RSFT,TRNS, \
-                LGUI,LALT,          TRNS,               RALT,RGUI),
-
-    /* Layer 2: Vi mode[Slash]
-     * ,-----------------------------------------------------------.
-     * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
-     * |-----------------------------------------------------------|
-     * |Tab  |Hom|PgD|Up |PgU|End|Hom|PgD|PgUlEnd|   |   |   |Backs|
-     * |-----------------------------------------------------------|
-     * |Contro|   |Lef|Dow|Rig|   |Lef|Dow|Up |Rig|   |   |Return  |
-     * |-----------------------------------------------------------|
-     * |Shift   |   |   |   |   |   |Hom|PgD|PgUlEnd|Fn0|Shift |   |
-     * `-----------------------------------------------------------'
-     *       |Gui|Alt  |          Space        |Alt  |Gui|
-     *       `-------------------------------------------'
-     */
-    [2] = \
-    KEYMAP(GRV, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, INS, DEL, \
-           TAB, HOME,PGDN,UP,  PGUP,END, HOME,PGDN,PGUP,END, NO,  NO,  NO,  BSPC, \
-           LCTL,NO,  LEFT,DOWN,RGHT,NO,  LEFT,DOWN,UP,  RGHT,NO,  NO,  ENT, \
-           LSFT,NO,  NO,  NO,  NO,  NO,  HOME,PGDN,PGUP,END, FN2, RSFT,TRNS, \
-                LGUI,LALT,          SPC,                RALT,RGUI),
-
-    /* Layer 3: Mouse mode(IJKL)[Semicolon]
-     * ,-----------------------------------------------------------.
-     * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
-     * |-----------------------------------------------------------|
-     * |Tab  |   |   |   |   |   |MwL|MwD|McU|MwU|MwR|Wbk|Wfr|Alt-T|
-     * |-----------------------------------------------------------|
-     * |Contro|   |   |   |   |   |Mb2|McL|McD|McR|Fn |   |Return  |
-     * |-----------------------------------------------------------|
-     * |Shift   |   |   |   |   |Mb3|Mb2|Mb1|Mb4|Mb5|   |Shift |   |
-     * `-----------------------------------------------------------'
-     *      |Gui |Alt  |          Mb1          |Fn   |Fn |
-     *      `--------------------------------------------'
-     * Mc: Mouse Cursor / Mb: Mouse Button / Mw: Mouse Wheel
-     */
-    [3] = \
-    KEYMAP(GRV, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, INS, DEL, \
-           FN8, NO,  NO,  NO,  NO,  NO,  WH_L,WH_D,MS_U,WH_U,WH_R,FN9, FN10,FN8, \
-           LCTL,ACL0,ACL1,ACL2,ACL2,NO,  NO,  MS_L,MS_D,MS_R,FN3, NO,  ENT, \
-           LSFT,NO,  NO,  NO,  NO,  BTN3,BTN2,BTN1,FN9, FN10,NO,  RSFT,TRNS, \
-                LGUI,LALT,          BTN1,               TRNS,TRNS),
-
-    /* Layer 4: Mouse mode(IJKL)[Space]
-     * ,-----------------------------------------------------------.
-     * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
-     * |-----------------------------------------------------------|
-     * |Tab  |   |   |   |   |   |MwL|MwD|McU|MwU|MwR|Wbk|Wfr|Alt-T|
-     * |-----------------------------------------------------------|
-     * |Contro|   |   |   |   |   |Mb2|McL|McD|McR|Mb1|   |Return  |
-     * |-----------------------------------------------------------|
-     * |Shift   |   |   |   |   |Mb3|Mb2|Mb1|Mb4|Mb5|   |Shift |   |
-     * `-----------------------------------------------------------'
-     *      |Gui |Alt  |          Mb1          |Fn   |Fn |
-     *      `--------------------------------------------'
-     * Mc: Mouse Cursor / Mb: Mouse Button / Mw: Mouse Wheel
-     */
-    [4] = \
-    KEYMAP(GRV, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, INS, DEL, \
-           FN8, NO,  NO,  NO,  NO,  NO,  WH_L,WH_D,MS_U,WH_U,WH_R,BTN4,BTN5,FN8, \
-           LCTL,VOLD,VOLU,MUTE,NO,  NO,  NO,  MS_L,MS_D,MS_R,BTN1,NO,  ENT, \
-           LSFT,NO,  NO,  NO,  NO,  BTN3,BTN2,BTN1,FN9, FN10,NO,  RSFT,TRNS, \
-                LGUI,LALT,          TRNS,               TRNS,TRNS),
-
-#if 0
-    /* Layer 3: Mouse mode(HJKL)[Semicolon]
-     * ,-----------------------------------------------------------.
-     * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
-     * |-----------------------------------------------------------|
-     * |Tab  |   |   |   |   |   |MwL|MwD|MwU|MwR|   |   |   |Backs|
-     * |-----------------------------------------------------------|
-     * |Contro|   |   |   |   |   |McL|McD|McU|McR|Fn0|   |Return  |
-     * |-----------------------------------------------------------|
-     * |Shift   |   |   |   |   |Mb3|Mb2|Mb1|Mb4|Mb5|   |Shift |   |
-     * `-----------------------------------------------------------'
-     *      |Gui |Alt  |          Mb1          |Alt  |Fn0|
-     *      `--------------------------------------------'
-     * Mc: Mouse Cursor / Mb: Mouse Button / Mw: Mouse Wheel 
-     */
-    KEYMAP(GRV, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, INS, DEL, \
-           TAB, NO,  NO,  NO,  NO,  NO,  NO,  WH_D,WH_U,RGHT,NO,  NO,  NO,  BSPC, \
-           LCTL,NO,  ACL0,ACL1,ACL2,NO,  MS_L,MS_D,MS_U,MS_R,TRNS,QUOT,ENT, \
-           LSFT,NO,  NO,  NO,  NO,  BTN3,BTN2,BTN1,FN9, FN10,SLSH,RSFT,NO, \
-                LGUI,LALT,          BTN1,               RALT,TRNS),
-
-    /* Layer4: Mouse mode(HJKL)[Space]
-     * ,-----------------------------------------------------------.
-     * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
-     * |-----------------------------------------------------------|
-     * |Tab  |   |   |   |   |   |MwL|MwD|MwU|MwR|   |Wbk|Wfr|Alt-T|
-     * |-----------------------------------------------------------|
-     * |Contro|   |   |   |   |   |McL|McD|McU|McR|Fn0|   |Return  |
-     * |-----------------------------------------------------------|
-     * |Shift   |   |   |   |   |Mb3|Mb2|Mb1|Mb4|Mb5|   |Shift |   |
-     * `-----------------------------------------------------------'
-     *      |Gui |Alt  |          Fn0          |Alt  |Fn0|
-     *      `--------------------------------------------'
-     * Mc: Mouse Cursor / Mb: Mouse Button / Mw: Mouse Wheel 
-     */
-    KEYMAP(GRV, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, INS, DEL, \
-           FN8, NO,  NO,  NO,  NO,  NO,  NO,  WH_D,WH_U,RGHT,NO,  FN9, FN10,FN8, \
-           LCTL,NO,  ACL0,ACL1,ACL2,NO,  MS_L,MS_D,MS_U,MS_R,BTN1,NO,  ENT, \
-           LSFT,NO,  NO,  NO,  NO,  BTN3,BTN2,BTN1,FN9, FN10,NO,  RSFT,NO, \
-                LGUI,LALT,          TRNS,               RALT,RGUI),
-#endif
-#if 0
-    /* Layer x: Matias half-qwerty keyboard style[Space]
-     * ,-----------------------------------------------------------.
-     * |  -|  0|  9|  8|  7|  6|  5|  4|  3|  2|  1|   |   |   |Esc|
-     * |-----------------------------------------------------------|
-     * |Backs|  P|  O|  I|  U|  Y|  T|  R|  E|  W|  Q|   |   |Tab  |
-     * |-----------------------------------------------------------|
-     * |Contro|  ;|  L|  K|  J|  H|  G|  F|  D|  S|  A|Con|Control |
-     * |-----------------------------------------------------------|
-     * |Shift   |  /|  .|  ,|  M|  N|  B|  V|  C|  X|  Z|Shift |   |
-     * `-----------------------------------------------------------'
-     *      |Gui |Alt  |          Fn0          |Alt  |Gui|
-     *      `--------------------------------------------'
-     */
-    KEYMAP(MINS,0,   9,   8,   7,   6,   5,   4,   3,   2,   1,   NO,  NO,  NO,  ESC, \
-           BSPC,P,   O,   I,   U,   Y,   T,   R,   E,   W,   Q,   NO,  NO,  TAB, \
-           LCTL,SCLN,L,   K,   J,   H,   G,   F,   D,   S,   A,   RCTL,RCTL, \
-           LSFT,SLSH,DOT, COMM,M,   N,   B,   V,   C,   X,   Z,   RSFT,NO, \
-                LGUI,LALT,          TRNS,               RALT,RGUI),
-#endif
-};
-
-
-
-/* id for user defined functions */
-enum function_id {
-    LSHIFT_LPAREN,
-};
-
-enum macro_id {
-    HELLO,
-    VOLUP,
-    ALT_TAB,
-};
-
-
-/*
- * Fn action definition
- */
-#ifdef KEYMAP_SECTION_ENABLE
-const uint16_t fn_actions[] __attribute__ ((section (".keymap.fn_actions"))) = {
-#else
-const uint16_t fn_actions[] PROGMEM = {
-#endif
-    [0] = ACTION_DEFAULT_LAYER_SET(0),                // Default layer(not used)
-    [1] = ACTION_LAYER_TAP_TOGGLE(1),                 // HHKB layer(toggle with 5 taps)
-    [2] = ACTION_LAYER_TAP_KEY(2, KC_SLASH),          // Cursor layer with Slash*
-    [3] = ACTION_LAYER_TAP_KEY(3, KC_SCLN),           // Mousekey layer with Semicolon*
-    [4] = ACTION_LAYER_TAP_KEY(4, KC_SPC),            // Mousekey layer with Space
-    [5] = ACTION_LAYER_MOMENTARY(4),                  // Mousekey layer(IJKL)
-    [6] = ACTION_MODS_TAP_KEY(MOD_RCTL, KC_ENT),      // RControl with tap Enter
-    [7] = ACTION_MODS_ONESHOT(MOD_LSFT),              // Oneshot Shift
-    [8] = ACTION_MACRO(ALT_TAB),                      // Application switching
-    [9] = ACTION_MODS_KEY(MOD_LALT, KC_LEFT),
-   [10] = ACTION_MODS_KEY(MOD_LALT, KC_RIGHT),
-
-//  [x] = ACTION_LMOD_TAP_KEY(KC_LCTL, KC_BSPC),        // LControl with tap Backspace
-//  [x] = ACTION_LMOD_TAP_KEY(KC_LCTL, KC_ESC),         // LControl with tap Esc
-//  [x] = ACTION_FUNCTION_TAP(LSHIFT_LPAREN),           // Function: LShift with tap '('
-//  [x] = ACTION_MACRO(HELLO),                          // Macro: say hello
-//  [x] = ACTION_MACRO(VOLUP),                          // Macro: media key
-};
-
-
-/*
- * Macro definition
- */
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-    switch (id) {
-        case HELLO:
-            return (record->event.pressed ?
-                    MACRO( I(0), T(H), T(E), T(L), T(L), W(255), T(O), END ) :
-                    MACRO_NONE );
-        case VOLUP:
-            return (record->event.pressed ?
-                    MACRO( D(VOLU), U(VOLU), END ) :
-                    MACRO_NONE );
-        case ALT_TAB:
-            return (record->event.pressed ?
-                    MACRO( D(LALT), D(TAB), END ) :
-                    MACRO( U(TAB), END ));
-    }
-    return MACRO_NONE;
-}
-
-
-
-/*
- * user defined action function
- */
-void action_function(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-    if (record->event.pressed) dprint("P"); else dprint("R");
-    dprintf("%d", record->tap.count);
-    if (record->tap.interrupted) dprint("i");
-    dprint("\n");
-
-    switch (id) {
-        case LSHIFT_LPAREN:
-            // Shift parentheses example: LShft + tap '('
-            // http://stevelosh.com/blog/2012/10/a-modern-space-cadet/#shift-parentheses
-            // http://geekhack.org/index.php?topic=41989.msg1304899#msg1304899
-            if (record->event.pressed) {
-                if (record->tap.count > 0 && !record->tap.interrupted) {
-                    if (record->tap.interrupted) {
-                        dprint("tap interrupted\n");
-                        register_mods(MOD_BIT(KC_LSHIFT));
-                    }
-                } else {
-                    register_mods(MOD_BIT(KC_LSHIFT));
-                }
-            } else {
-                if (record->tap.count > 0 && !(record->tap.interrupted)) {
-                    add_weak_mods(MOD_BIT(KC_LSHIFT));
-                    send_keyboard_report();
-                    register_code(KC_9);
-                    unregister_code(KC_9);
-                    del_weak_mods(MOD_BIT(KC_LSHIFT));
-                    send_keyboard_report();
-                    record->tap.count = 0;  // ad hoc: cancel tap
-                } else {
-                    unregister_mods(MOD_BIT(KC_LSHIFT));
-                }
-            }
-            break;
-    }
-}
diff --git a/keyboard/hhkb/keymap_hhkb.c b/keyboard/hhkb/keymap_hhkb.c
deleted file mode 100644 (file)
index 86ad0f5..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * HHKB Layout
- */
-#include "keymap_common.h"
-
-
-#ifdef KEYMAP_SECTION_ENABLE
-const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS] __attribute__ ((section (".keymap.keymaps"))) = {
-#else
-const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS] PROGMEM = {
-#endif
-    /* Layer 0: Default Layer
-     * ,-----------------------------------------------------------.
-     * |Esc|  1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =|  \|  `|
-     * |-----------------------------------------------------------|
-     * |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|Backs|
-     * |-----------------------------------------------------------|
-     * |Contro|  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  '|Enter   |
-     * |-----------------------------------------------------------|
-     * |Shift   |  Z|  X|  C|  V|  B|  N|  M|  ,|  .|  /|Shift |Fn0|
-     * `-----------------------------------------------------------'
-     *       |Alt|Gui  |         Space         |Gui  |Alt|
-     *       `-------------------------------------------'
-     */
-    KEYMAP(ESC, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSLS,GRV,   \
-           TAB, Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC,BSPC,       \
-           LCTL,A,   S,   D,   F,   G,   H,   J,   K,   L,   SCLN,QUOT,ENT,             \
-           LSFT,Z,   X,   C,   V,   B,   N,   M,   COMM,DOT, SLSH,RSFT,FN0,             \
-                LALT,LGUI,          SPC,                RGUI,RALT),
-
-    /* Layer 1: HHKB mode (HHKB Fn)
-     * ,-----------------------------------------------------------.
-     * |Pwr| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
-     * |-----------------------------------------------------------|
-     * |Caps |   |   |   |   |   |   |   |Psc|Slk|Pus|Up |   |Backs|
-     * |-----------------------------------------------------------|
-     * |      |VoD|VoU|Mut|   |   |  *|  /|Hom|PgU|Lef|Rig|Enter   |
-     * |-----------------------------------------------------------|
-     * |        |   |   |   |   |   |  +|  -|End|PgD|Dow|      |   |
-     * `-----------------------------------------------------------'
-     *       |   |     |                       |     |   |
-     *       `-------------------------------------------'
-     */
-    KEYMAP(PWR, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, INS, DEL,   \
-           CAPS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PSCR,SLCK,PAUS, UP, TRNS, BSPC,      \
-           TRNS,VOLD,VOLU,MUTE,TRNS,TRNS,PAST,PSLS,HOME,PGUP,LEFT,RGHT,PENT,            \
-           TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PPLS,PMNS,END, PGDN,DOWN,TRNS,TRNS,            \
-                TRNS,TRNS,          TRNS,               TRNS,TRNS),
-};
-
-
-
-/*
- * Fn action definition
- */
-#ifdef KEYMAP_SECTION_ENABLE
-const uint16_t fn_actions[] __attribute__ ((section (".keymap.fn_actions"))) = {
-    [0]  = ACTION_LAYER_MOMENTARY(1),
-    [1]  = ACTION_LAYER_MOMENTARY(2),
-    [2]  = ACTION_LAYER_MOMENTARY(3),
-    [3]  = ACTION_LAYER_MOMENTARY(4),
-    [4]  = ACTION_LAYER_MOMENTARY(5),
-    [5]  = ACTION_LAYER_MOMENTARY(6),
-    [6]  = ACTION_LAYER_MOMENTARY(7),
-    [7]  = ACTION_LAYER_TOGGLE(1),
-    [8]  = ACTION_LAYER_TOGGLE(2),
-    [9]  = ACTION_LAYER_TOGGLE(3),
-    [10] = ACTION_LAYER_TAP_TOGGLE(1),
-    [11] = ACTION_LAYER_TAP_TOGGLE(2),
-    [12] = ACTION_LAYER_TAP_TOGGLE(3),
-    [13] = ACTION_LAYER_TAP_KEY(1, KC_A),
-    [14] = ACTION_LAYER_TAP_KEY(2, KC_F),
-    [15] = ACTION_LAYER_TAP_KEY(3, KC_J),
-    [16] = ACTION_LAYER_TAP_KEY(4, KC_SPACE),
-    [17] = ACTION_LAYER_TAP_KEY(5, KC_SCOLON),
-    [18] = ACTION_LAYER_TAP_KEY(6, KC_QUOTE),
-    [19] = ACTION_LAYER_TAP_KEY(7, KC_SLASH),
-    [20] = ACTION_MODS_TAP_KEY(MOD_LSFT, KC_SPACE),
-    [21] = ACTION_MODS_TAP_KEY(MOD_LCTL, KC_SPACE),
-    [22] = ACTION_MODS_TAP_KEY(MOD_RCTL, KC_QUOTE),
-    [23] = ACTION_MODS_TAP_KEY(MOD_RCTL, KC_ENTER),
-    [24] = ACTION_MODS_TAP_KEY(MOD_LCTL, KC_ESC),
-    [25] = ACTION_MODS_TAP_KEY(MOD_LCTL, KC_BSPACE),
-    [26] = ACTION_MODS_ONESHOT(MOD_LCTL),
-    [27] = ACTION_MODS_TAP_KEY(MOD_LSFT, KC_ESC),
-    [28] = ACTION_MODS_TAP_KEY(MOD_LSFT, KC_BSPACE),
-    [29] = ACTION_MODS_ONESHOT(MOD_LSFT),
-    [30] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_ESC),
-    [31] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_BSPACE),
-};
-#else
-const uint16_t fn_actions[] PROGMEM = {
-    [0]  = ACTION_LAYER_MOMENTARY(1),
-};
-#endif
diff --git a/keyboard/hhkb/keymap_jp.c b/keyboard/hhkb/keymap_jp.c
deleted file mode 100644 (file)
index 48d0ee7..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-/* 
- * HHKB JP Layout
- */
-#include "keymap_common.h"
-
-
-#ifdef KEYMAP_SECTION_ENABLE
-const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS] __attribute__ ((section (".keymap.keymaps"))) = {
-#else
-const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS] PROGMEM = {
-#endif
-    /* Layer 0: Default Layer */
-    KEYMAP_JP(ESC, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, JYEN,BSPC, \
-              TAB, Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC, \
-              LCTL,A,   S,   D,   F,   G,   H,   J,   K,   L,   SCLN,QUOT,BSLS,ENT, \
-              LSFT,Z,   X,   C,   V,   B,   N,   M,   COMM,DOT, SLSH,RO,  UP,  RSFT, \
-              FN0, ZKHK,LGUI,LALT,MHEN,     SPC,      HENK,KANA,RALT,FN0, LEFT,DOWN,RGHT),
-
-    /* Layer 1: HHKB mode (HHKB Fn)
-     * ,-----------------------------------------------------------.
-     * |Pwr| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
-     * |-----------------------------------------------------------|
-     * |Caps |   |   |   |   |   |   |   |Psc|Slk|Pus|Up |   |     |
-     * |------------------------------------------------------`    |
-     * |      |VoD|VoU|Mut|   |   |  *|  /|Hom|PgU|Lef|Rig|   |    |
-     * |-----------------------------------------------------------|
-     * |       |   |   |   |   |   |  +|  -|End|PgD|Dow|   |   |   |
-     * |-----------------------------------------------------------|
-     * |   ||   |   |   |   |         |   |   |   |   ||   |   |   |
-     * `-----------------------------------------------------------'
-     */ 
-    KEYMAP_JP(PWR, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, INS, DEL, \
-              CAPS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PSCR,SLCK,PAUS, UP, TRNS, \
-              TRNS,VOLD,VOLU,MUTE,TRNS,TRNS,PAST,PSLS,HOME,PGUP,LEFT,RGHT,TRNS,PENT, \
-              TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PPLS,PMNS,END, PGDN,DOWN,TRNS,TRNS,TRNS, \
-              TRNS,TRNS,TRNS,TRNS,TRNS,     TRNS,     TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS),
-};
-
-
-
-/*
- * Fn action definition
- */
-#ifdef KEYMAP_SECTION_ENABLE
-const uint16_t fn_actions[] __attribute__ ((section (".keymap.fn_actions"))) = {
-#else
-const uint16_t fn_actions[] PROGMEM = {
-#endif
-    [0] = ACTION_LAYER_MOMENTARY(1),
-};
diff --git a/keyboard/hhkb/keymap_spacefn.c b/keyboard/hhkb/keymap_spacefn.c
deleted file mode 100644 (file)
index deff920..0000000
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * SpaceFN
- * http://geekhack.org/index.php?topic=51069.0
- */
-#include "keymap_common.h"
-
-
-const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-    /* Layer 0: Default Layer
-     * ,-----------------------------------------------------------.
-     * |Esc|  1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =|  `|BSp|
-     * |-----------------------------------------------------------|
-     * |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|    \|
-     * |-----------------------------------------------------------|
-     * |Contro|  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  '|Enter   |
-     * |-----------------------------------------------------------|
-     * |Shift   |  Z|  X|  C|  V|  B|  N|  M|  ,|  .|  /|Shift |Fn0|
-     * `-----------------------------------------------------------'
-     *       |Gui|Alt  |         SpaceFN       |Alt  |Gui|
-     *       `-------------------------------------------'
-     */
-    KEYMAP(ESC, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, GRV, BSPC,  \
-           TAB, Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC,BSLS,       \
-           LCTL,A,   S,   D,   F,   G,   H,   J,   K,   L,   SCLN,QUOT,ENT,             \
-           LSFT,Z,   X,   C,   V,   B,   N,   M,   COMM,DOT, SLSH,RSFT,FN0,             \
-                LGUI,LALT,          FN1,                RALT,RGUI),
-
-    /* Layer 1: HHKB mode (HHKB Fn)
-     * ,-----------------------------------------------------------.
-     * |Pwr| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
-     * |-----------------------------------------------------------|
-     * |Caps |   |   |   |   |   |   |   |Psc|Slk|Pus|Up |   |Backs|
-     * |-----------------------------------------------------------|
-     * |      |VoD|VoU|Mut|   |   |  *|  /|Hom|PgU|Lef|Rig|Enter   |
-     * |-----------------------------------------------------------|
-     * |        |   |   |   |   |   |  +|  -|End|PgD|Dow|      |   |
-     * `-----------------------------------------------------------'
-     *       |   |     |                       |     |   |
-     *       `-------------------------------------------'
-     */ 
-    KEYMAP(PWR, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, INS, DEL,   \
-           CAPS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PSCR,SLCK,PAUS, UP, TRNS, BSPC,      \
-           TRNS,VOLD,VOLU,MUTE,TRNS,TRNS,PAST,PSLS,HOME,PGUP,LEFT,RGHT,PENT,            \
-           TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PPLS,PMNS,END, PGDN,DOWN,TRNS,TRNS,            \
-                TRNS,TRNS,          SPC,                TRNS,TRNS),
-
-    /* Layer 2: SpaceFN
-     * ,-----------------------------------------------------------.
-     * |`  | F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|   |Del|
-     * |-----------------------------------------------------------|
-     * |     |   |   |Esc|   |   |   |Hom|Up |End|Psc|Slk|Pau|Ins  |
-     * |-----------------------------------------------------------|
-     * |      |   |   |   |   |   |PgU|Lef|Dow|Rig|   |   |        |
-     * |-----------------------------------------------------------|
-     * |        |   |   |   |   |Spc|PgD|`  |~  |   |   |      |   |
-     * `-----------------------------------------------------------'
-     *       |   |     |                       |     |   |
-     *       `-------------------------------------------'
-     */
-    KEYMAP(GRV, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, TRNS,DEL,   \
-           TRNS,TRNS,TRNS,ESC, TRNS,TRNS,TRNS,HOME,FN3, END, PSCR,SLCK,PAUS,INS,        \
-           TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PGUP,LEFT,DOWN,RGHT,TRNS,TRNS,TRNS,            \
-           TRNS,TRNS,TRNS,TRNS,TRNS,SPC, PGDN,GRV, FN2, TRNS,TRNS,TRNS,NO,              \
-                TRNS,TRNS,          TRNS,               TRNS,TRNS),
-};
-
-
-/*
- * user defined action function
- */
-enum function_id {
-    CTRL_SPACE_I,       // Ctrl + Up(SpaceFN) -> PgUp
-};
-
-void action_function(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-#   define MODS_CTRL_MASK   (MOD_BIT(KC_LCTRL)|MOD_BIT(KC_RCTRL))
-    static uint8_t ctrl_space_i_prev_ctrl;
-
-    switch (id) {
-        // Ctrl + Up(SpaceFN) -> PgUp
-        case CTRL_SPACE_I:
-            ctrl_space_i_prev_ctrl = get_mods()&MODS_CTRL_MASK;
-            if (record->event.pressed) {
-                if (ctrl_space_i_prev_ctrl) {
-                    del_mods(ctrl_space_i_prev_ctrl);   // remove Ctrl
-                    add_key(KC_PGUP);
-                    send_keyboard_report(); // send PgUp without Ctrl
-                    add_mods(ctrl_space_i_prev_ctrl);   // return Ctrl but not sent
-                } else {
-                    add_key(KC_UP);
-                    send_keyboard_report();
-                }
-            } else {
-                if (ctrl_space_i_prev_ctrl) {
-                    del_key(KC_PGUP);
-                    send_keyboard_report();
-                } else {
-                    del_key(KC_UP);
-                    send_keyboard_report();
-                }
-            }
-            break;
-    }
-}
-
-
-/*
- * Fn action definition
- */
-const uint16_t PROGMEM fn_actions[] = {
-    [0] = ACTION_LAYER_MOMENTARY(1),
-    [1] = ACTION_LAYER_TAP_KEY(2, KC_SPACE),
-    [2] = ACTION_MODS_KEY(MOD_LSFT, KC_GRV),    // tilde
-    [3] = ACTION_FUNCTION(CTRL_SPACE_I),        // Ctrl + Up(SpaceFN) -> PgUp
-};
diff --git a/keyboard/hhkb/keymaps/hasu.c b/keyboard/hhkb/keymaps/hasu.c
new file mode 100644 (file)
index 0000000..a5602de
--- /dev/null
@@ -0,0 +1,282 @@
+/* 
+ * Hasu: my personal keymap
+ */
+#include "keymap_common.h"
+
+
+#ifdef KEYMAP_SECTION_ENABLE
+const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS] __attribute__ ((section (".keymap.keymaps"))) = {
+#else
+const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS] PROGMEM = {
+#endif
+    /* Layer 0: Default Layer
+     * ,-----------------------------------------------------------.
+     * |Esc|  1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =|  \|  `|
+     * |-----------------------------------------------------------|
+     * |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|Backs|
+     * |-----------------------------------------------------------|
+     * |Contro|  A|  S|  D|  F|  G|  H|  J|  K|  L|Fn3|  '|Fn6     |
+     * |-----------------------------------------------------------|
+     * |Fn7     |  Z|  X|  C|  V|  B|  N|  M|  ,|  .|Fn2|Shift |Fn1|
+     * `-----------------------------------------------------------'
+     *       |Gui|Alt  |         Fn4           |Fn5  |Gui|
+     *       `-------------------------------------------'
+     */
+    [0] = \
+    KEYMAP(ESC, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSLS,GRV, \
+           TAB, Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC,BSPC, \
+           LCTL,A,   S,   D,   F,   G,   H,   J,   K,   L,   FN3, QUOT,FN6, \
+           FN7, Z,   X,   C,   V,   B,   N,   M,   COMM,DOT, FN2, RSFT,FN1, \
+                LGUI,LALT,          FN4,                FN5, RGUI),
+
+    /* Layer 1: HHKB mode[HHKB Fn]
+     * ,-----------------------------------------------------------.
+     * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
+     * |-----------------------------------------------------------|
+     * |Caps |   |   |   |   |   |   |   |Psc|Slk|Pus|Up |   |Backs|
+     * |-----------------------------------------------------------|
+     * |Contro|VoD|VoU|Mut|   |   |  *|  /|Hom|PgU|Lef|Rig|Enter   |
+     * |-----------------------------------------------------------|
+     * |Shift   |   |   |   |   |   |  +|  -|End|PgD|Dow|Shift |   |
+     * `-----------------------------------------------------------'
+     *       |Gui|Alt  |         Space         |Alt  |Gui|
+     *       `-------------------------------------------'
+     */ 
+    [1] = \
+    KEYMAP(GRV, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, INS, DEL, \
+           CAPS,NO,  NO,  NO,  NO,  NO,  NO,  NO,  PSCR,SLCK,PAUS, UP,  NO,  BSPC, \
+           LCTL,VOLD,VOLU,MUTE,NO,  NO,  PAST,PSLS,HOME,PGUP,LEFT,RGHT,ENT, \
+           LSFT,NO,  NO,  NO,  NO,  NO,  PPLS,PMNS,END, PGDN,DOWN,RSFT,TRNS, \
+                LGUI,LALT,          TRNS,               RALT,RGUI),
+
+    /* Layer 2: Vi mode[Slash]
+     * ,-----------------------------------------------------------.
+     * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
+     * |-----------------------------------------------------------|
+     * |Tab  |Hom|PgD|Up |PgU|End|Hom|PgD|PgUlEnd|   |   |   |Backs|
+     * |-----------------------------------------------------------|
+     * |Contro|   |Lef|Dow|Rig|   |Lef|Dow|Up |Rig|   |   |Return  |
+     * |-----------------------------------------------------------|
+     * |Shift   |   |   |   |   |   |Hom|PgD|PgUlEnd|Fn0|Shift |   |
+     * `-----------------------------------------------------------'
+     *       |Gui|Alt  |          Space        |Alt  |Gui|
+     *       `-------------------------------------------'
+     */
+    [2] = \
+    KEYMAP(GRV, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, INS, DEL, \
+           TAB, HOME,PGDN,UP,  PGUP,END, HOME,PGDN,PGUP,END, NO,  NO,  NO,  BSPC, \
+           LCTL,NO,  LEFT,DOWN,RGHT,NO,  LEFT,DOWN,UP,  RGHT,NO,  NO,  ENT, \
+           LSFT,NO,  NO,  NO,  NO,  NO,  HOME,PGDN,PGUP,END, FN2, RSFT,TRNS, \
+                LGUI,LALT,          SPC,                RALT,RGUI),
+
+    /* Layer 3: Mouse mode(IJKL)[Semicolon]
+     * ,-----------------------------------------------------------.
+     * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
+     * |-----------------------------------------------------------|
+     * |Tab  |   |   |   |   |   |MwL|MwD|McU|MwU|MwR|Wbk|Wfr|Alt-T|
+     * |-----------------------------------------------------------|
+     * |Contro|   |   |   |   |   |Mb2|McL|McD|McR|Fn |   |Return  |
+     * |-----------------------------------------------------------|
+     * |Shift   |   |   |   |   |Mb3|Mb2|Mb1|Mb4|Mb5|   |Shift |   |
+     * `-----------------------------------------------------------'
+     *      |Gui |Alt  |          Mb1          |Fn   |Fn |
+     *      `--------------------------------------------'
+     * Mc: Mouse Cursor / Mb: Mouse Button / Mw: Mouse Wheel
+     */
+    [3] = \
+    KEYMAP(GRV, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, INS, DEL, \
+           FN8, NO,  NO,  NO,  NO,  NO,  WH_L,WH_D,MS_U,WH_U,WH_R,FN9, FN10,FN8, \
+           LCTL,ACL0,ACL1,ACL2,ACL2,NO,  NO,  MS_L,MS_D,MS_R,FN3, NO,  ENT, \
+           LSFT,NO,  NO,  NO,  NO,  BTN3,BTN2,BTN1,FN9, FN10,NO,  RSFT,TRNS, \
+                LGUI,LALT,          BTN1,               TRNS,TRNS),
+
+    /* Layer 4: Mouse mode(IJKL)[Space]
+     * ,-----------------------------------------------------------.
+     * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
+     * |-----------------------------------------------------------|
+     * |Tab  |   |   |   |   |   |MwL|MwD|McU|MwU|MwR|Wbk|Wfr|Alt-T|
+     * |-----------------------------------------------------------|
+     * |Contro|   |   |   |   |   |Mb2|McL|McD|McR|Mb1|   |Return  |
+     * |-----------------------------------------------------------|
+     * |Shift   |   |   |   |   |Mb3|Mb2|Mb1|Mb4|Mb5|   |Shift |   |
+     * `-----------------------------------------------------------'
+     *      |Gui |Alt  |          Mb1          |Fn   |Fn |
+     *      `--------------------------------------------'
+     * Mc: Mouse Cursor / Mb: Mouse Button / Mw: Mouse Wheel
+     */
+    [4] = \
+    KEYMAP(GRV, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, INS, DEL, \
+           FN8, NO,  NO,  NO,  NO,  NO,  WH_L,WH_D,MS_U,WH_U,WH_R,BTN4,BTN5,FN8, \
+           LCTL,VOLD,VOLU,MUTE,NO,  NO,  NO,  MS_L,MS_D,MS_R,BTN1,NO,  ENT, \
+           LSFT,NO,  NO,  NO,  NO,  BTN3,BTN2,BTN1,FN9, FN10,NO,  RSFT,TRNS, \
+                LGUI,LALT,          TRNS,               TRNS,TRNS),
+
+#if 0
+    /* Layer 3: Mouse mode(HJKL)[Semicolon]
+     * ,-----------------------------------------------------------.
+     * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
+     * |-----------------------------------------------------------|
+     * |Tab  |   |   |   |   |   |MwL|MwD|MwU|MwR|   |   |   |Backs|
+     * |-----------------------------------------------------------|
+     * |Contro|   |   |   |   |   |McL|McD|McU|McR|Fn0|   |Return  |
+     * |-----------------------------------------------------------|
+     * |Shift   |   |   |   |   |Mb3|Mb2|Mb1|Mb4|Mb5|   |Shift |   |
+     * `-----------------------------------------------------------'
+     *      |Gui |Alt  |          Mb1          |Alt  |Fn0|
+     *      `--------------------------------------------'
+     * Mc: Mouse Cursor / Mb: Mouse Button / Mw: Mouse Wheel 
+     */
+    KEYMAP(GRV, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, INS, DEL, \
+           TAB, NO,  NO,  NO,  NO,  NO,  NO,  WH_D,WH_U,RGHT,NO,  NO,  NO,  BSPC, \
+           LCTL,NO,  ACL0,ACL1,ACL2,NO,  MS_L,MS_D,MS_U,MS_R,TRNS,QUOT,ENT, \
+           LSFT,NO,  NO,  NO,  NO,  BTN3,BTN2,BTN1,FN9, FN10,SLSH,RSFT,NO, \
+                LGUI,LALT,          BTN1,               RALT,TRNS),
+
+    /* Layer4: Mouse mode(HJKL)[Space]
+     * ,-----------------------------------------------------------.
+     * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
+     * |-----------------------------------------------------------|
+     * |Tab  |   |   |   |   |   |MwL|MwD|MwU|MwR|   |Wbk|Wfr|Alt-T|
+     * |-----------------------------------------------------------|
+     * |Contro|   |   |   |   |   |McL|McD|McU|McR|Fn0|   |Return  |
+     * |-----------------------------------------------------------|
+     * |Shift   |   |   |   |   |Mb3|Mb2|Mb1|Mb4|Mb5|   |Shift |   |
+     * `-----------------------------------------------------------'
+     *      |Gui |Alt  |          Fn0          |Alt  |Fn0|
+     *      `--------------------------------------------'
+     * Mc: Mouse Cursor / Mb: Mouse Button / Mw: Mouse Wheel 
+     */
+    KEYMAP(GRV, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, INS, DEL, \
+           FN8, NO,  NO,  NO,  NO,  NO,  NO,  WH_D,WH_U,RGHT,NO,  FN9, FN10,FN8, \
+           LCTL,NO,  ACL0,ACL1,ACL2,NO,  MS_L,MS_D,MS_U,MS_R,BTN1,NO,  ENT, \
+           LSFT,NO,  NO,  NO,  NO,  BTN3,BTN2,BTN1,FN9, FN10,NO,  RSFT,NO, \
+                LGUI,LALT,          TRNS,               RALT,RGUI),
+#endif
+#if 0
+    /* Layer x: Matias half-qwerty keyboard style[Space]
+     * ,-----------------------------------------------------------.
+     * |  -|  0|  9|  8|  7|  6|  5|  4|  3|  2|  1|   |   |   |Esc|
+     * |-----------------------------------------------------------|
+     * |Backs|  P|  O|  I|  U|  Y|  T|  R|  E|  W|  Q|   |   |Tab  |
+     * |-----------------------------------------------------------|
+     * |Contro|  ;|  L|  K|  J|  H|  G|  F|  D|  S|  A|Con|Control |
+     * |-----------------------------------------------------------|
+     * |Shift   |  /|  .|  ,|  M|  N|  B|  V|  C|  X|  Z|Shift |   |
+     * `-----------------------------------------------------------'
+     *      |Gui |Alt  |          Fn0          |Alt  |Gui|
+     *      `--------------------------------------------'
+     */
+    KEYMAP(MINS,0,   9,   8,   7,   6,   5,   4,   3,   2,   1,   NO,  NO,  NO,  ESC, \
+           BSPC,P,   O,   I,   U,   Y,   T,   R,   E,   W,   Q,   NO,  NO,  TAB, \
+           LCTL,SCLN,L,   K,   J,   H,   G,   F,   D,   S,   A,   RCTL,RCTL, \
+           LSFT,SLSH,DOT, COMM,M,   N,   B,   V,   C,   X,   Z,   RSFT,NO, \
+                LGUI,LALT,          TRNS,               RALT,RGUI),
+#endif
+};
+
+
+
+/* id for user defined functions */
+enum function_id {
+    LSHIFT_LPAREN,
+};
+
+enum macro_id {
+    HELLO,
+    VOLUP,
+    ALT_TAB,
+};
+
+
+/*
+ * Fn action definition
+ */
+#ifdef KEYMAP_SECTION_ENABLE
+const uint16_t fn_actions[] __attribute__ ((section (".keymap.fn_actions"))) = {
+#else
+const uint16_t fn_actions[] PROGMEM = {
+#endif
+    [0] = ACTION_DEFAULT_LAYER_SET(0),                // Default layer(not used)
+    [1] = ACTION_LAYER_TAP_TOGGLE(1),                 // HHKB layer(toggle with 5 taps)
+    [2] = ACTION_LAYER_TAP_KEY(2, KC_SLASH),          // Cursor layer with Slash*
+    [3] = ACTION_LAYER_TAP_KEY(3, KC_SCLN),           // Mousekey layer with Semicolon*
+    [4] = ACTION_LAYER_TAP_KEY(4, KC_SPC),            // Mousekey layer with Space
+    [5] = ACTION_LAYER_MOMENTARY(4),                  // Mousekey layer(IJKL)
+    [6] = ACTION_MODS_TAP_KEY(MOD_RCTL, KC_ENT),      // RControl with tap Enter
+    [7] = ACTION_MODS_ONESHOT(MOD_LSFT),              // Oneshot Shift
+    [8] = ACTION_MACRO(ALT_TAB),                      // Application switching
+    [9] = ACTION_MODS_KEY(MOD_LALT, KC_LEFT),
+   [10] = ACTION_MODS_KEY(MOD_LALT, KC_RIGHT),
+
+//  [x] = ACTION_LMOD_TAP_KEY(KC_LCTL, KC_BSPC),        // LControl with tap Backspace
+//  [x] = ACTION_LMOD_TAP_KEY(KC_LCTL, KC_ESC),         // LControl with tap Esc
+//  [x] = ACTION_FUNCTION_TAP(LSHIFT_LPAREN),           // Function: LShift with tap '('
+//  [x] = ACTION_MACRO(HELLO),                          // Macro: say hello
+//  [x] = ACTION_MACRO(VOLUP),                          // Macro: media key
+};
+
+
+/*
+ * Macro definition
+ */
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+    switch (id) {
+        case HELLO:
+            return (record->event.pressed ?
+                    MACRO( I(0), T(H), T(E), T(L), T(L), W(255), T(O), END ) :
+                    MACRO_NONE );
+        case VOLUP:
+            return (record->event.pressed ?
+                    MACRO( D(VOLU), U(VOLU), END ) :
+                    MACRO_NONE );
+        case ALT_TAB:
+            return (record->event.pressed ?
+                    MACRO( D(LALT), D(TAB), END ) :
+                    MACRO( U(TAB), END ));
+    }
+    return MACRO_NONE;
+}
+
+
+
+/*
+ * user defined action function
+ */
+void action_function(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+    if (record->event.pressed) dprint("P"); else dprint("R");
+    dprintf("%d", record->tap.count);
+    if (record->tap.interrupted) dprint("i");
+    dprint("\n");
+
+    switch (id) {
+        case LSHIFT_LPAREN:
+            // Shift parentheses example: LShft + tap '('
+            // http://stevelosh.com/blog/2012/10/a-modern-space-cadet/#shift-parentheses
+            // http://geekhack.org/index.php?topic=41989.msg1304899#msg1304899
+            if (record->event.pressed) {
+                if (record->tap.count > 0 && !record->tap.interrupted) {
+                    if (record->tap.interrupted) {
+                        dprint("tap interrupted\n");
+                        register_mods(MOD_BIT(KC_LSHIFT));
+                    }
+                } else {
+                    register_mods(MOD_BIT(KC_LSHIFT));
+                }
+            } else {
+                if (record->tap.count > 0 && !(record->tap.interrupted)) {
+                    add_weak_mods(MOD_BIT(KC_LSHIFT));
+                    send_keyboard_report();
+                    register_code(KC_9);
+                    unregister_code(KC_9);
+                    del_weak_mods(MOD_BIT(KC_LSHIFT));
+                    send_keyboard_report();
+                    record->tap.count = 0;  // ad hoc: cancel tap
+                } else {
+                    unregister_mods(MOD_BIT(KC_LSHIFT));
+                }
+            }
+            break;
+    }
+}
diff --git a/keyboard/hhkb/keymaps/hhkb.c b/keyboard/hhkb/keymaps/hhkb.c
new file mode 100644 (file)
index 0000000..86ad0f5
--- /dev/null
@@ -0,0 +1,95 @@
+/*
+ * HHKB Layout
+ */
+#include "keymap_common.h"
+
+
+#ifdef KEYMAP_SECTION_ENABLE
+const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS] __attribute__ ((section (".keymap.keymaps"))) = {
+#else
+const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS] PROGMEM = {
+#endif
+    /* Layer 0: Default Layer
+     * ,-----------------------------------------------------------.
+     * |Esc|  1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =|  \|  `|
+     * |-----------------------------------------------------------|
+     * |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|Backs|
+     * |-----------------------------------------------------------|
+     * |Contro|  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  '|Enter   |
+     * |-----------------------------------------------------------|
+     * |Shift   |  Z|  X|  C|  V|  B|  N|  M|  ,|  .|  /|Shift |Fn0|
+     * `-----------------------------------------------------------'
+     *       |Alt|Gui  |         Space         |Gui  |Alt|
+     *       `-------------------------------------------'
+     */
+    KEYMAP(ESC, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSLS,GRV,   \
+           TAB, Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC,BSPC,       \
+           LCTL,A,   S,   D,   F,   G,   H,   J,   K,   L,   SCLN,QUOT,ENT,             \
+           LSFT,Z,   X,   C,   V,   B,   N,   M,   COMM,DOT, SLSH,RSFT,FN0,             \
+                LALT,LGUI,          SPC,                RGUI,RALT),
+
+    /* Layer 1: HHKB mode (HHKB Fn)
+     * ,-----------------------------------------------------------.
+     * |Pwr| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
+     * |-----------------------------------------------------------|
+     * |Caps |   |   |   |   |   |   |   |Psc|Slk|Pus|Up |   |Backs|
+     * |-----------------------------------------------------------|
+     * |      |VoD|VoU|Mut|   |   |  *|  /|Hom|PgU|Lef|Rig|Enter   |
+     * |-----------------------------------------------------------|
+     * |        |   |   |   |   |   |  +|  -|End|PgD|Dow|      |   |
+     * `-----------------------------------------------------------'
+     *       |   |     |                       |     |   |
+     *       `-------------------------------------------'
+     */
+    KEYMAP(PWR, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, INS, DEL,   \
+           CAPS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PSCR,SLCK,PAUS, UP, TRNS, BSPC,      \
+           TRNS,VOLD,VOLU,MUTE,TRNS,TRNS,PAST,PSLS,HOME,PGUP,LEFT,RGHT,PENT,            \
+           TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PPLS,PMNS,END, PGDN,DOWN,TRNS,TRNS,            \
+                TRNS,TRNS,          TRNS,               TRNS,TRNS),
+};
+
+
+
+/*
+ * Fn action definition
+ */
+#ifdef KEYMAP_SECTION_ENABLE
+const uint16_t fn_actions[] __attribute__ ((section (".keymap.fn_actions"))) = {
+    [0]  = ACTION_LAYER_MOMENTARY(1),
+    [1]  = ACTION_LAYER_MOMENTARY(2),
+    [2]  = ACTION_LAYER_MOMENTARY(3),
+    [3]  = ACTION_LAYER_MOMENTARY(4),
+    [4]  = ACTION_LAYER_MOMENTARY(5),
+    [5]  = ACTION_LAYER_MOMENTARY(6),
+    [6]  = ACTION_LAYER_MOMENTARY(7),
+    [7]  = ACTION_LAYER_TOGGLE(1),
+    [8]  = ACTION_LAYER_TOGGLE(2),
+    [9]  = ACTION_LAYER_TOGGLE(3),
+    [10] = ACTION_LAYER_TAP_TOGGLE(1),
+    [11] = ACTION_LAYER_TAP_TOGGLE(2),
+    [12] = ACTION_LAYER_TAP_TOGGLE(3),
+    [13] = ACTION_LAYER_TAP_KEY(1, KC_A),
+    [14] = ACTION_LAYER_TAP_KEY(2, KC_F),
+    [15] = ACTION_LAYER_TAP_KEY(3, KC_J),
+    [16] = ACTION_LAYER_TAP_KEY(4, KC_SPACE),
+    [17] = ACTION_LAYER_TAP_KEY(5, KC_SCOLON),
+    [18] = ACTION_LAYER_TAP_KEY(6, KC_QUOTE),
+    [19] = ACTION_LAYER_TAP_KEY(7, KC_SLASH),
+    [20] = ACTION_MODS_TAP_KEY(MOD_LSFT, KC_SPACE),
+    [21] = ACTION_MODS_TAP_KEY(MOD_LCTL, KC_SPACE),
+    [22] = ACTION_MODS_TAP_KEY(MOD_RCTL, KC_QUOTE),
+    [23] = ACTION_MODS_TAP_KEY(MOD_RCTL, KC_ENTER),
+    [24] = ACTION_MODS_TAP_KEY(MOD_LCTL, KC_ESC),
+    [25] = ACTION_MODS_TAP_KEY(MOD_LCTL, KC_BSPACE),
+    [26] = ACTION_MODS_ONESHOT(MOD_LCTL),
+    [27] = ACTION_MODS_TAP_KEY(MOD_LSFT, KC_ESC),
+    [28] = ACTION_MODS_TAP_KEY(MOD_LSFT, KC_BSPACE),
+    [29] = ACTION_MODS_ONESHOT(MOD_LSFT),
+    [30] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_ESC),
+    [31] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_BSPACE),
+};
+#else
+const uint16_t fn_actions[] PROGMEM = {
+    [0]  = ACTION_LAYER_MOMENTARY(1),
+};
+#endif
diff --git a/keyboard/hhkb/keymaps/jp.c b/keyboard/hhkb/keymaps/jp.c
new file mode 100644 (file)
index 0000000..48d0ee7
--- /dev/null
@@ -0,0 +1,50 @@
+/* 
+ * HHKB JP Layout
+ */
+#include "keymap_common.h"
+
+
+#ifdef KEYMAP_SECTION_ENABLE
+const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS] __attribute__ ((section (".keymap.keymaps"))) = {
+#else
+const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS] PROGMEM = {
+#endif
+    /* Layer 0: Default Layer */
+    KEYMAP_JP(ESC, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, JYEN,BSPC, \
+              TAB, Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC, \
+              LCTL,A,   S,   D,   F,   G,   H,   J,   K,   L,   SCLN,QUOT,BSLS,ENT, \
+              LSFT,Z,   X,   C,   V,   B,   N,   M,   COMM,DOT, SLSH,RO,  UP,  RSFT, \
+              FN0, ZKHK,LGUI,LALT,MHEN,     SPC,      HENK,KANA,RALT,FN0, LEFT,DOWN,RGHT),
+
+    /* Layer 1: HHKB mode (HHKB Fn)
+     * ,-----------------------------------------------------------.
+     * |Pwr| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
+     * |-----------------------------------------------------------|
+     * |Caps |   |   |   |   |   |   |   |Psc|Slk|Pus|Up |   |     |
+     * |------------------------------------------------------`    |
+     * |      |VoD|VoU|Mut|   |   |  *|  /|Hom|PgU|Lef|Rig|   |    |
+     * |-----------------------------------------------------------|
+     * |       |   |   |   |   |   |  +|  -|End|PgD|Dow|   |   |   |
+     * |-----------------------------------------------------------|
+     * |   ||   |   |   |   |         |   |   |   |   ||   |   |   |
+     * `-----------------------------------------------------------'
+     */ 
+    KEYMAP_JP(PWR, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, INS, DEL, \
+              CAPS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PSCR,SLCK,PAUS, UP, TRNS, \
+              TRNS,VOLD,VOLU,MUTE,TRNS,TRNS,PAST,PSLS,HOME,PGUP,LEFT,RGHT,TRNS,PENT, \
+              TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PPLS,PMNS,END, PGDN,DOWN,TRNS,TRNS,TRNS, \
+              TRNS,TRNS,TRNS,TRNS,TRNS,     TRNS,     TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS),
+};
+
+
+
+/*
+ * Fn action definition
+ */
+#ifdef KEYMAP_SECTION_ENABLE
+const uint16_t fn_actions[] __attribute__ ((section (".keymap.fn_actions"))) = {
+#else
+const uint16_t fn_actions[] PROGMEM = {
+#endif
+    [0] = ACTION_LAYER_MOMENTARY(1),
+};
diff --git a/keyboard/hhkb/keymaps/spacefn.c b/keyboard/hhkb/keymaps/spacefn.c
new file mode 100644 (file)
index 0000000..deff920
--- /dev/null
@@ -0,0 +1,116 @@
+/*
+ * SpaceFN
+ * http://geekhack.org/index.php?topic=51069.0
+ */
+#include "keymap_common.h"
+
+
+const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+    /* Layer 0: Default Layer
+     * ,-----------------------------------------------------------.
+     * |Esc|  1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =|  `|BSp|
+     * |-----------------------------------------------------------|
+     * |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|    \|
+     * |-----------------------------------------------------------|
+     * |Contro|  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  '|Enter   |
+     * |-----------------------------------------------------------|
+     * |Shift   |  Z|  X|  C|  V|  B|  N|  M|  ,|  .|  /|Shift |Fn0|
+     * `-----------------------------------------------------------'
+     *       |Gui|Alt  |         SpaceFN       |Alt  |Gui|
+     *       `-------------------------------------------'
+     */
+    KEYMAP(ESC, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, GRV, BSPC,  \
+           TAB, Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC,BSLS,       \
+           LCTL,A,   S,   D,   F,   G,   H,   J,   K,   L,   SCLN,QUOT,ENT,             \
+           LSFT,Z,   X,   C,   V,   B,   N,   M,   COMM,DOT, SLSH,RSFT,FN0,             \
+                LGUI,LALT,          FN1,                RALT,RGUI),
+
+    /* Layer 1: HHKB mode (HHKB Fn)
+     * ,-----------------------------------------------------------.
+     * |Pwr| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
+     * |-----------------------------------------------------------|
+     * |Caps |   |   |   |   |   |   |   |Psc|Slk|Pus|Up |   |Backs|
+     * |-----------------------------------------------------------|
+     * |      |VoD|VoU|Mut|   |   |  *|  /|Hom|PgU|Lef|Rig|Enter   |
+     * |-----------------------------------------------------------|
+     * |        |   |   |   |   |   |  +|  -|End|PgD|Dow|      |   |
+     * `-----------------------------------------------------------'
+     *       |   |     |                       |     |   |
+     *       `-------------------------------------------'
+     */ 
+    KEYMAP(PWR, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, INS, DEL,   \
+           CAPS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PSCR,SLCK,PAUS, UP, TRNS, BSPC,      \
+           TRNS,VOLD,VOLU,MUTE,TRNS,TRNS,PAST,PSLS,HOME,PGUP,LEFT,RGHT,PENT,            \
+           TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PPLS,PMNS,END, PGDN,DOWN,TRNS,TRNS,            \
+                TRNS,TRNS,          SPC,                TRNS,TRNS),
+
+    /* Layer 2: SpaceFN
+     * ,-----------------------------------------------------------.
+     * |`  | F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|   |Del|
+     * |-----------------------------------------------------------|
+     * |     |   |   |Esc|   |   |   |Hom|Up |End|Psc|Slk|Pau|Ins  |
+     * |-----------------------------------------------------------|
+     * |      |   |   |   |   |   |PgU|Lef|Dow|Rig|   |   |        |
+     * |-----------------------------------------------------------|
+     * |        |   |   |   |   |Spc|PgD|`  |~  |   |   |      |   |
+     * `-----------------------------------------------------------'
+     *       |   |     |                       |     |   |
+     *       `-------------------------------------------'
+     */
+    KEYMAP(GRV, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, TRNS,DEL,   \
+           TRNS,TRNS,TRNS,ESC, TRNS,TRNS,TRNS,HOME,FN3, END, PSCR,SLCK,PAUS,INS,        \
+           TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PGUP,LEFT,DOWN,RGHT,TRNS,TRNS,TRNS,            \
+           TRNS,TRNS,TRNS,TRNS,TRNS,SPC, PGDN,GRV, FN2, TRNS,TRNS,TRNS,NO,              \
+                TRNS,TRNS,          TRNS,               TRNS,TRNS),
+};
+
+
+/*
+ * user defined action function
+ */
+enum function_id {
+    CTRL_SPACE_I,       // Ctrl + Up(SpaceFN) -> PgUp
+};
+
+void action_function(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+#   define MODS_CTRL_MASK   (MOD_BIT(KC_LCTRL)|MOD_BIT(KC_RCTRL))
+    static uint8_t ctrl_space_i_prev_ctrl;
+
+    switch (id) {
+        // Ctrl + Up(SpaceFN) -> PgUp
+        case CTRL_SPACE_I:
+            ctrl_space_i_prev_ctrl = get_mods()&MODS_CTRL_MASK;
+            if (record->event.pressed) {
+                if (ctrl_space_i_prev_ctrl) {
+                    del_mods(ctrl_space_i_prev_ctrl);   // remove Ctrl
+                    add_key(KC_PGUP);
+                    send_keyboard_report(); // send PgUp without Ctrl
+                    add_mods(ctrl_space_i_prev_ctrl);   // return Ctrl but not sent
+                } else {
+                    add_key(KC_UP);
+                    send_keyboard_report();
+                }
+            } else {
+                if (ctrl_space_i_prev_ctrl) {
+                    del_key(KC_PGUP);
+                    send_keyboard_report();
+                } else {
+                    del_key(KC_UP);
+                    send_keyboard_report();
+                }
+            }
+            break;
+    }
+}
+
+
+/*
+ * Fn action definition
+ */
+const uint16_t PROGMEM fn_actions[] = {
+    [0] = ACTION_LAYER_MOMENTARY(1),
+    [1] = ACTION_LAYER_TAP_KEY(2, KC_SPACE),
+    [2] = ACTION_MODS_KEY(MOD_LSFT, KC_GRV),    // tilde
+    [3] = ACTION_FUNCTION(CTRL_SPACE_I),        // Ctrl + Up(SpaceFN) -> PgUp
+};
index 8bd44100b76837cf4b6f6ca9f92ba12a917aa786..21ba261a2315b68a719f233bda576141f2ddfec5 100644 (file)
@@ -54,9 +54,9 @@ SRC = hhkb_qmk.c \
       matrix.c
 
 ifdef KEYMAP
-    SRC := keymaps/keymap_$(KEYMAP).c $(SRC)
+    SRC := keymaps/keymaps/$(KEYMAP).c $(SRC)
 else
-    SRC := keymaps/keymap_default.c $(SRC)
+    SRC := keymaps/keymaps/default.c $(SRC)
 endif
 
 CONFIG_H = config.h
index 606025c411c486eee95bfe5506f0577767e53f68..389407b3aaf3d5d73c20afffea918855ff897b38 100644 (file)
@@ -171,10 +171,10 @@ Depending on which keymap you would like to use, you will have to compile slight
 To build with the default keymap, simply run `make`.
 
 ### Other Keymaps
-Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create file named `keymap_<name>.c` and see keymap document (you can find in top README.md) and existent keymap files.
+Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create a file in the keymaps folder named `<name>.c` and see keymap document (you can find in top README.md) and existent keymap files.
 
 To build the firmware binary hex file with a keymap just do `make` with `KEYMAP` option like:
 ```
 $ make KEYMAP=[default|jack|<name>]
 ```
-Keymaps follow the format **__keymap\_\<name\>.c__** and are stored in the `keymaps` folder.
+Keymaps follow the format **__\<name\>.c__** and are stored in the `keymaps` folder.
diff --git a/keyboard/hhkb_qmk/keymaps/default.c b/keyboard/hhkb_qmk/keymaps/default.c
new file mode 100644 (file)
index 0000000..bcd8ead
--- /dev/null
@@ -0,0 +1,78 @@
+/*  -*-  eval: (turn-on-orgtbl); -*-
+ * default HHKB Layout
+ */
+#include "hhkb_qmk.h"
+
+#define BASE 0
+#define HHKB 1
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+    /* BASE Level: Default Layer
+     |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---|
+     | Esc   | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | -     | =   | \     | ` |
+     |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---|
+     | Tab   | Q | W | E | R | T | Y | U | I | O | P | [     | ]   | Backs |   |
+     |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---|
+     | Cont  | A | S | D | F | G | H | J | K | L | ; | '     | Ent |       |   |
+     |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---|
+     | Shift | Z | X | C | V | B | N | M | , | . | / | Shift | Fn0 |       |   |
+     |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---|
+
+            |------+------+-----------------------+------+------|
+            | LAlt | LGUI | ******* Space ******* | RGUI | RAlt |
+            |------+------+-----------------------+------+------|
+    */
+
+  [BASE] = KEYMAP(  //  default layer
+  KC_ESC,   KC_1,  KC_2,  KC_3,  KC_4,  KC_5,  KC_6,  KC_7,  KC_8,     KC_9,    KC_0,     KC_MINS,  KC_EQL,    KC_BSLS,  KC_GRV, \
+  KC_TAB,   KC_Q,  KC_W,  KC_E,  KC_R,  KC_T,  KC_Y,  KC_U,  KC_I,     KC_O,    KC_P,     KC_LBRC,  KC_RBRC,   KC_BSPC,          \
+  KC_LCTL,  KC_A,  KC_S,  KC_D,  KC_F,  KC_G,  KC_H,  KC_J,  KC_K,     KC_L,    KC_SCLN,  KC_QUOT,  KC_ENT,                      \
+  KC_LSFT,  KC_Z,  KC_X,  KC_C,  KC_V,  KC_B,  KC_N,  KC_M,  KC_COMM,  KC_DOT,  KC_SLSH,  KC_RSFT,  MO(HHKB),                    \
+                    KC_LALT,  KC_LGUI,  /*        */ KC_SPC,      KC_RGUI,  KC_RALT),
+
+
+
+    /* Layer HHKB: HHKB mode (HHKB Fn)
+      |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
+      | Pwr  | F1  | F2  | F3  | F4 | F5 | F6 | F7 | F8  | F9  | F10 | F11 | F12   | Ins   | Del |
+      |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
+      | Caps |     |     |     |    |    |    |    | Psc | Slk | Pus | Up  |       | Backs |     |
+      |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
+      |      | VoD | VoU | Mut |    |    | *  | /  | Hom | PgU | Lef | Rig | Enter |       |     |
+      |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
+      |      |     |     |     |    |    | +  | -  | End | PgD | Dow |     |       |       |     |
+      |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
+
+                 |------+------+----------------------+------+------+
+                 | **** | **** | ******************** | **** | **** |
+                 |------+------+----------------------+------+------+
+
+     */
+
+  [HHKB] = KEYMAP(
+  KC_PWR,   KC_F1,    KC_F2,    KC_F3,    KC_F4,    KC_F5,    KC_F6,    KC_F7,    KC_F8,    KC_F9,    KC_F10,   KC_F11,   KC_F12,   KC_INS,   KC_DEL, \
+  KC_CAPS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_PSCR,  KC_SLCK,  KC_PAUS,  KC_UP,    KC_TRNS,  KC_BSPC,          \
+  KC_TRNS,  KC_VOLD,  KC_VOLU,  KC_MUTE,  KC_TRNS,  KC_TRNS,  KC_PAST,  KC_PSLS,  KC_HOME,  KC_PGUP,  KC_LEFT,  KC_RGHT,  KC_PENT,                    \
+  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_PPLS,  KC_PMNS,  KC_END,   KC_PGDN,  KC_DOWN,  KC_TRNS,  KC_TRNS,                    \
+                     KC_TRNS, KC_TRNS,           KC_TRNS,                KC_TRNS, KC_TRNS)};
+
+
+const uint16_t PROGMEM fn_actions[] = {
+
+};
+
+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;
+};
diff --git a/keyboard/hhkb_qmk/keymaps/keymap_default.c b/keyboard/hhkb_qmk/keymaps/keymap_default.c
deleted file mode 100644 (file)
index bcd8ead..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-/*  -*-  eval: (turn-on-orgtbl); -*-
- * default HHKB Layout
- */
-#include "hhkb_qmk.h"
-
-#define BASE 0
-#define HHKB 1
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
-    /* BASE Level: Default Layer
-     |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---|
-     | Esc   | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | -     | =   | \     | ` |
-     |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---|
-     | Tab   | Q | W | E | R | T | Y | U | I | O | P | [     | ]   | Backs |   |
-     |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---|
-     | Cont  | A | S | D | F | G | H | J | K | L | ; | '     | Ent |       |   |
-     |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---|
-     | Shift | Z | X | C | V | B | N | M | , | . | / | Shift | Fn0 |       |   |
-     |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---|
-
-            |------+------+-----------------------+------+------|
-            | LAlt | LGUI | ******* Space ******* | RGUI | RAlt |
-            |------+------+-----------------------+------+------|
-    */
-
-  [BASE] = KEYMAP(  //  default layer
-  KC_ESC,   KC_1,  KC_2,  KC_3,  KC_4,  KC_5,  KC_6,  KC_7,  KC_8,     KC_9,    KC_0,     KC_MINS,  KC_EQL,    KC_BSLS,  KC_GRV, \
-  KC_TAB,   KC_Q,  KC_W,  KC_E,  KC_R,  KC_T,  KC_Y,  KC_U,  KC_I,     KC_O,    KC_P,     KC_LBRC,  KC_RBRC,   KC_BSPC,          \
-  KC_LCTL,  KC_A,  KC_S,  KC_D,  KC_F,  KC_G,  KC_H,  KC_J,  KC_K,     KC_L,    KC_SCLN,  KC_QUOT,  KC_ENT,                      \
-  KC_LSFT,  KC_Z,  KC_X,  KC_C,  KC_V,  KC_B,  KC_N,  KC_M,  KC_COMM,  KC_DOT,  KC_SLSH,  KC_RSFT,  MO(HHKB),                    \
-                    KC_LALT,  KC_LGUI,  /*        */ KC_SPC,      KC_RGUI,  KC_RALT),
-
-
-
-    /* Layer HHKB: HHKB mode (HHKB Fn)
-      |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
-      | Pwr  | F1  | F2  | F3  | F4 | F5 | F6 | F7 | F8  | F9  | F10 | F11 | F12   | Ins   | Del |
-      |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
-      | Caps |     |     |     |    |    |    |    | Psc | Slk | Pus | Up  |       | Backs |     |
-      |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
-      |      | VoD | VoU | Mut |    |    | *  | /  | Hom | PgU | Lef | Rig | Enter |       |     |
-      |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
-      |      |     |     |     |    |    | +  | -  | End | PgD | Dow |     |       |       |     |
-      |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
-
-                 |------+------+----------------------+------+------+
-                 | **** | **** | ******************** | **** | **** |
-                 |------+------+----------------------+------+------+
-
-     */
-
-  [HHKB] = KEYMAP(
-  KC_PWR,   KC_F1,    KC_F2,    KC_F3,    KC_F4,    KC_F5,    KC_F6,    KC_F7,    KC_F8,    KC_F9,    KC_F10,   KC_F11,   KC_F12,   KC_INS,   KC_DEL, \
-  KC_CAPS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_PSCR,  KC_SLCK,  KC_PAUS,  KC_UP,    KC_TRNS,  KC_BSPC,          \
-  KC_TRNS,  KC_VOLD,  KC_VOLU,  KC_MUTE,  KC_TRNS,  KC_TRNS,  KC_PAST,  KC_PSLS,  KC_HOME,  KC_PGUP,  KC_LEFT,  KC_RGHT,  KC_PENT,                    \
-  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_PPLS,  KC_PMNS,  KC_END,   KC_PGDN,  KC_DOWN,  KC_TRNS,  KC_TRNS,                    \
-                     KC_TRNS, KC_TRNS,           KC_TRNS,                KC_TRNS, KC_TRNS)};
-
-
-const uint16_t PROGMEM fn_actions[] = {
-
-};
-
-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;
-};
diff --git a/keyboard/hhkb_qmk/keymaps/keymap_lxol.c b/keyboard/hhkb_qmk/keymaps/keymap_lxol.c
deleted file mode 100644 (file)
index 3256fda..0000000
+++ /dev/null
@@ -1,208 +0,0 @@
-/*  -*-  eval: (turn-on-orgtbl); -*-
- * lxol HHKB Layout
- */
-#include "hhkb_qmk.h"
-
-#define BASE 0
-#define WIN 1
-#define HHKB 2
-#define RGUILEV 3
-#define LGUILEV 4
-#define RALTLEV 5
-#define LALTLEV 6
-
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
-    /* Layer 0: Default Layer
-     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
-     | Esc    | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0   | -     | =        | \     | ` |
-     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
-     | Tab    | Q | W | E | R | T | Y | U | I | O | P   | [     | ]        | Backs |   |
-     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
-     | Contro | A | S | D | F | G | H | J | K | L | ;   | '     | RCtl/Ent |       |   |
-     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
-     | Shift  | Z | X | C | V | B | N | M | , | . | Fn2 | Shift | Fn0      |       |   |
-     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
-
-                 |------+------+-------+------+------|
-                 | LAlt | LGUI | Space | RGUI | RAlt |
-                 |------+------+-------+------+------|
-    */
-
-  [BASE] = KEYMAP(  // layer 0 : default
-
-
-  KC_ESC,   KC_1,              KC_2,              KC_3,  KC_4,  KC_5,  KC_6,  KC_7,  KC_8,     KC_9,              KC_0,                 KC_MINS,  KC_EQL,    KC_BSLS,  KC_GRV,  \
-  KC_TAB,   KC_Q,              KC_W,              KC_E,  KC_R,  KC_T,  KC_Y,  KC_U,  KC_I,     KC_O,              KC_P,                 KC_LBRC,  KC_RBRC,   KC_BSPC,  \
-  KC_LCTL,  LT(LALTLEV,KC_A),  LT(LGUILEV,KC_S),  KC_D,  KC_F,  KC_G,  KC_H,  KC_J,  KC_K,     LT(RGUILEV,KC_L),  LT(RALTLEV,KC_SCLN),  KC_QUOT,  KC_FN0,    \
-  KC_LSFT,  KC_Z,              KC_X,              KC_C,  KC_V,  KC_B,  KC_N,  KC_M,  KC_COMM,  KC_DOT,            KC_SLSH,              KC_RSFT,  MO(HHKB),  \
-      KC_LALT, KC_LGUI, KC_SPC,                KC_RGUI, KC_RALT),
-
-
-
-    /* Layer 1: HHKB mode (HHKB Fn)
-      |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
-      | Pwr  | F1  | F2  | F3  | F4 | F5 | F6 | F7 | F8  | F9  | F10 | F11 | F12   | Ins   | Del |
-      |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
-      | Caps |     |     |     |    |    |    |    | Psc | Slk | Pus | Up  |       | Backs |     |
-      |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
-      |      | VoD | VoU | Mut |    |    | *  | /  | Hom | PgU | Lef | Rig | Enter |       |     |
-      |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
-      |      |     |     |     |    |    | +  | -  | End | PgD | Dow |     |       |       |     |
-      |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
-
-                      |---+---+---+---+---|
-                      |   |   |   |   |   |
-                      |---+---+---+---+---|
-     */
-
-  [HHKB] = KEYMAP(
-  KC_PWR,   KC_F1,    KC_F2,    KC_F3,    KC_F4,    KC_F5,    KC_F6,    KC_F7,    KC_F8,    KC_F9,    KC_F10,   KC_F11,   KC_F12,   KC_INS,   KC_DEL, \
-  KC_CAPS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_PSCR,  KC_SLCK,  KC_PAUS,  KC_UP,    KC_TRNS,  KC_BSPC,          \
-  KC_TRNS,  KC_VOLD,  KC_VOLU,  KC_MUTE,  KC_TRNS,  KC_TRNS,  KC_PAST,  KC_PSLS,  KC_HOME,  KC_PGUP,  KC_LEFT,  KC_RGHT,  KC_PENT,                    \
-  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_PPLS,  KC_PMNS,  KC_END,   KC_PGDN,  KC_DOWN,  KC_TRNS,  KC_TRNS,                    \
-  KC_TRNS, KC_TRNS,           KC_TRNS,                KC_TRNS, KC_TRNS),
-
-
-    /* Layer LGUI: All keys with RGUI modifier
-     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
-     | Esc    | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0   | -     | =        | \     | ` |
-     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
-     | Tab    | Q | W | E | R | T | Y | U | I | O | P   | [     | ]        | Backs |   |
-     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
-     | Contro | A | S | D | F | G | H | J | K |   | ;   | '     | RCtl/Ent |       |   |
-     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
-     | Shift  | Z | X | C | V | B | N | M | , | . | Fn2 | Shift | Fn0      |       |   |
-     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
-
-                 |------+------+-------+------+------|
-                 | LAlt | LGUI | Space | RGUI | RAlt |
-                 |------+------+-------+------+------|
-    */
-
-  [RGUILEV] = KEYMAP(  // Right GUI layer  by KC_L
-
-  RGUI(KC_ESC),   RGUI(KC_1),  RGUI(KC_2),  RGUI(KC_3),  RGUI(KC_4),  RGUI(KC_5),  RGUI(KC_6),  RGUI(KC_7),  RGUI(KC_8),     RGUI(KC_9),    RGUI(KC_0),     RGUI(KC_MINS),  RGUI(KC_EQL),   RGUI(KC_BSLS),  RGUI(KC_GRV),  \
-  RGUI(KC_TAB),   RGUI(KC_Q),  RGUI(KC_W),  RGUI(KC_E),  RGUI(KC_R),  RGUI(KC_T),  RGUI(KC_Y),  RGUI(KC_U),  RGUI(KC_I),     RGUI(KC_O),    RGUI(KC_P),     RGUI(KC_LBRC),  RGUI(KC_RBRC),  RGUI(KC_BSPC),  \
-  RGUI(KC_LCTL),  RGUI(KC_A),  RGUI(KC_S),  RGUI(KC_D),  RGUI(KC_F),  RGUI(KC_G),  RGUI(KC_H),  RGUI(KC_J),  RGUI(KC_K),     KC_TRNS,       KC_TRNS,        RGUI(KC_QUOT),  KC_FN0,         \
-  RGUI(KC_LSFT),  RGUI(KC_Z),  RGUI(KC_X),  RGUI(KC_C),  RGUI(KC_V),  RGUI(KC_B),  RGUI(KC_N),  RGUI(KC_M),  RGUI(KC_COMM),  RGUI(KC_DOT),  RGUI(KC_SLSH),  RGUI(KC_RSFT),  KC_TRNS,        \
-      KC_LALT, KC_LGUI, RGUI(KC_SPC),               KC_RGUI, KC_RALT),
-
-    /* Layer LGUI: All keys with LGUI modifier
-     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
-     | Esc    | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0   | -     | =        | \     | ` |
-     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
-     | Tab    | Q | W | E | R | T | Y | U | I | O | P   | [     | ]        | Backs |   |
-     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
-     | Contro | A | S | D | F | G | H | J | K |   | ;   | '     | RCtl/Ent |       |   |
-     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
-     | Shift  | Z | X | C | V | B | N | M | , | . | Fn2 | Shift | Fn0      |       |   |
-     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
-
-                 |------+------+-------+------+------|
-                 | LAlt | LGUI | Space | LGUI | RAlt |
-                 |------+------+-------+------+------|
-    */
-
-  [LGUILEV] = KEYMAP(  // Right GUI layer  by KC_L
-
-  LGUI(KC_ESC),   LGUI(KC_1),  LGUI(KC_2),  LGUI(KC_3),  LGUI(KC_4),  LGUI(KC_5),  LGUI(KC_6),  LGUI(KC_7),  LGUI(KC_8),     LGUI(KC_9),    LGUI(KC_0),     LGUI(KC_MINS),  LGUI(KC_EQL),   LGUI(KC_BSLS),  LGUI(KC_GRV),  \
-  LGUI(KC_TAB),   LGUI(KC_Q),  LGUI(KC_W),  LGUI(KC_E),  LGUI(KC_R),  LGUI(KC_T),  LGUI(KC_Y),  LGUI(KC_U),  LGUI(KC_I),     LGUI(KC_O),    LGUI(KC_P),     LGUI(KC_LBRC),  LGUI(KC_RBRC),  LGUI(KC_BSPC),  \
-  LGUI(KC_LCTL),  KC_TRNS,     KC_TRNS,     LGUI(KC_D),  LGUI(KC_F),  LGUI(KC_G),  LGUI(KC_H),  LGUI(KC_J),  LGUI(KC_K),     LGUI(KC_L),    LGUI(KC_SCLN),  LGUI(KC_QUOT),  KC_FN0,         \
-  KC_LSFT,        LGUI(KC_Z),  LGUI(KC_X),  LGUI(KC_C),  LGUI(KC_V),  LGUI(KC_B),  LGUI(KC_N),  LGUI(KC_M),  LGUI(KC_COMM),  LGUI(KC_DOT),  LGUI(KC_SLSH),  KC_RSFT,        KC_TRNS,        \
-      KC_LALT, KC_LGUI, LGUI(KC_SPC),               KC_LGUI, KC_RALT),
-
-    /* Layer LALT: All keys with RALT modifier
-     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
-     | Esc    | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0   | -     | =        | \     | ` |
-     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
-     | Tab    | Q | W | E | R | T | Y | U | I | O | P   | [     | ]        | Backs |   |
-     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
-     | Contro | A | S | D | F | G | H | J | K |   | ;   | '     | RCtl/Ent |       |   |
-     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
-     | Shift  | Z | X | C | V | B | N | M | , | . | Fn2 | Shift | Fn0      |       |   |
-     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
-
-                 |------+------+-------+------+------|
-                 | LAlt | LGUI | Space | RGUI | RAlt |
-                 |------+------+-------+------+------|
-    */
-
-  [RALTLEV] = KEYMAP(  // Right ALT layer  by KC_L
-
-  RALT(KC_ESC),   RALT(KC_1),  RALT(KC_2),  RALT(KC_3),  RALT(KC_4),  RALT(KC_5),  RALT(KC_6),  RALT(KC_7),  RALT(KC_8),     RALT(KC_9),    RALT(KC_0),     RALT(KC_MINS),  RALT(KC_EQL),   RALT(KC_BSLS),  RALT(KC_GRV),  \
-  RALT(KC_TAB),   RALT(KC_Q),  RALT(KC_W),  RALT(KC_E),  RALT(KC_R),  RALT(KC_T),  RALT(KC_Y),  RALT(KC_U),  RALT(KC_I),     RALT(KC_O),    RALT(KC_P),     RALT(KC_LBRC),  RALT(KC_RBRC),  RALT(KC_BSPC),  \
-  RALT(KC_LCTL),  RALT(KC_A),  RALT(KC_S),  RALT(KC_D),  RALT(KC_F),  RALT(KC_G),  RALT(KC_H),  RALT(KC_J),  RALT(KC_K),     KC_TRNS,       KC_TRNS,        RALT(KC_QUOT),  KC_FN0,         \
-  RALT(KC_LSFT),  RALT(KC_Z),  RALT(KC_X),  RALT(KC_C),  RALT(KC_V),  RALT(KC_B),  RALT(KC_N),  RALT(KC_M),  RALT(KC_COMM),  RALT(KC_DOT),  RALT(KC_SLSH),  RALT(KC_RSFT),  KC_TRNS,        \
-      KC_LALT, KC_LGUI, RALT(KC_SPC),               KC_RGUI, KC_RALT),
-
-    /* Layer LALT: All keys with LALT modifier
-     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
-     | Esc    | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0   | -     | =        | \     | ` |
-     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
-     | Tab    | Q | W | E | R | T | Y | U | I | O | P   | [     | ]        | Backs |   |
-     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
-     | Contro | A | S | D | F | G | H | J | K |   | ;   | '     | RCtl/Ent |       |   |
-     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
-     | Shift  | Z | X | C | V | B | N | M | , | . | Fn2 | Shift | Fn0      |       |   |
-     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
-
-                 |------+------+-------+------+------|
-                 | LAlt | LGUI | Space | LGUI | RAlt |
-                 |------+------+-------+------+------|
-    */
-
-  [LALTLEV] = KEYMAP(  // Right ALT layer  by KC_L
-
-  LALT(KC_ESC),   LALT(KC_1),  LALT(KC_2),  LALT(KC_3),  LALT(KC_4),  LALT(KC_5),  LALT(KC_6),  LALT(KC_7),  LALT(KC_8),     LALT(KC_9),    LALT(KC_0),     LALT(KC_MINS),  LALT(KC_EQL),   LALT(KC_BSLS),  LALT(KC_GRV),  \
-  LALT(KC_TAB),   LALT(KC_Q),  LALT(KC_W),  LALT(KC_E),  LALT(KC_R),  LALT(KC_T),  LALT(KC_Y),  LALT(KC_U),  LALT(KC_I),     LALT(KC_O),    LALT(KC_P),     LALT(KC_LBRC),  LALT(KC_RBRC),  LALT(KC_BSPC),  \
-  LALT(KC_LCTL),  KC_TRNS,     KC_TRNS,     LALT(KC_D),  LALT(KC_F),  LALT(KC_G),  LALT(KC_H),  LALT(KC_J),  LALT(KC_K),     LALT(KC_L),    LALT(KC_SCLN),  LALT(KC_QUOT),  KC_FN0,         \
-  KC_LSFT,        LALT(KC_Z),  LALT(KC_X),  LALT(KC_C),  LALT(KC_V),  LALT(KC_B),  LALT(KC_N),  LALT(KC_M),  LALT(KC_COMM),  LALT(KC_DOT),  LALT(KC_SLSH),  KC_RSFT,        KC_TRNS,        \
-      KC_LALT, KC_LGUI, LALT(KC_SPC),               KC_LGUI, KC_RALT),
-
-
-    /* Layer WIN: Win layer
-     |--------+---+---+---+---+---+---+---+---+---+---+-------+----------+-------+---|
-     | Esc    | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | -     | =        | \     | ` |
-     |--------+---+---+---+---+---+---+---+---+---+---+-------+----------+-------+---|
-     | Tab    | Q | W | E | R | T | Y | U | I | O | P | [     | ]        | Backs |   |
-     |--------+---+---+---+---+---+---+---+---+---+---+-------+----------+-------+---|
-     | Contro | A | S | D | F | G | H | J | K | L | ; | '     | RCtl/Ent |       |   |
-     |--------+---+---+---+---+---+---+---+---+---+---+-------+----------+-------+---|
-     | Shift  | Z | X | C | V | B | N | M | , | . | / | Shift | Fn0      |       |   |
-     |--------+---+---+---+---+---+---+---+---+---+---+-------+----------+-------+---|
-
-                 |------+------+-------+------+------|
-                 | LGui | LAlt | Space | RGui | Ralt |
-                 |------+------+-------+------+------|
-    */
-
-  [WIN] = KEYMAP(  // BASE level with swapped GUI/ALT
-
-
-  KC_ESC,   KC_1,              KC_2,              KC_3,  KC_4,  KC_5,  KC_6,  KC_7,  KC_8,     KC_9,              KC_0,                 KC_MINS,  KC_EQL,    KC_BSLS,  KC_GRV,  \
-  KC_TAB,   KC_Q,              KC_W,              KC_E,  KC_R,  KC_T,  KC_Y,  KC_U,  KC_I,     KC_O,              KC_P,                 KC_LBRC,  KC_RBRC,   KC_BSPC,  \
-  KC_LCTL,  LT(LGUILEV,KC_A),  LT(LALTLEV,KC_S),  KC_D,  KC_F,  KC_G,  KC_H,  KC_J,  KC_K,     LT(RALTLEV,KC_L),  LT(RGUILEV,KC_SCLN),  KC_QUOT,  KC_FN0,    \
-  KC_LSFT,  KC_Z,              KC_X,              KC_C,  KC_V,  KC_B,  KC_N,  KC_M,  KC_COMM,  KC_DOT,            KC_SLSH,              KC_RSFT,  MO(HHKB),  \
-                 KC_RGUI, KC_RALT, KC_SPC,                KC_RALT, KC_RGUI)};
-
-
-const uint16_t PROGMEM fn_actions[] = {
-    [0] = ACTION_MODS_TAP_KEY(MOD_RCTL, KC_ENT)      // RControl with tap Enter*
-};
-
-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;
-};
diff --git a/keyboard/hhkb_qmk/keymaps/lxol.c b/keyboard/hhkb_qmk/keymaps/lxol.c
new file mode 100644 (file)
index 0000000..3256fda
--- /dev/null
@@ -0,0 +1,208 @@
+/*  -*-  eval: (turn-on-orgtbl); -*-
+ * lxol HHKB Layout
+ */
+#include "hhkb_qmk.h"
+
+#define BASE 0
+#define WIN 1
+#define HHKB 2
+#define RGUILEV 3
+#define LGUILEV 4
+#define RALTLEV 5
+#define LALTLEV 6
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+    /* Layer 0: Default Layer
+     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
+     | Esc    | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0   | -     | =        | \     | ` |
+     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
+     | Tab    | Q | W | E | R | T | Y | U | I | O | P   | [     | ]        | Backs |   |
+     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
+     | Contro | A | S | D | F | G | H | J | K | L | ;   | '     | RCtl/Ent |       |   |
+     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
+     | Shift  | Z | X | C | V | B | N | M | , | . | Fn2 | Shift | Fn0      |       |   |
+     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
+
+                 |------+------+-------+------+------|
+                 | LAlt | LGUI | Space | RGUI | RAlt |
+                 |------+------+-------+------+------|
+    */
+
+  [BASE] = KEYMAP(  // layer 0 : default
+
+
+  KC_ESC,   KC_1,              KC_2,              KC_3,  KC_4,  KC_5,  KC_6,  KC_7,  KC_8,     KC_9,              KC_0,                 KC_MINS,  KC_EQL,    KC_BSLS,  KC_GRV,  \
+  KC_TAB,   KC_Q,              KC_W,              KC_E,  KC_R,  KC_T,  KC_Y,  KC_U,  KC_I,     KC_O,              KC_P,                 KC_LBRC,  KC_RBRC,   KC_BSPC,  \
+  KC_LCTL,  LT(LALTLEV,KC_A),  LT(LGUILEV,KC_S),  KC_D,  KC_F,  KC_G,  KC_H,  KC_J,  KC_K,     LT(RGUILEV,KC_L),  LT(RALTLEV,KC_SCLN),  KC_QUOT,  KC_FN0,    \
+  KC_LSFT,  KC_Z,              KC_X,              KC_C,  KC_V,  KC_B,  KC_N,  KC_M,  KC_COMM,  KC_DOT,            KC_SLSH,              KC_RSFT,  MO(HHKB),  \
+      KC_LALT, KC_LGUI, KC_SPC,                KC_RGUI, KC_RALT),
+
+
+
+    /* Layer 1: HHKB mode (HHKB Fn)
+      |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
+      | Pwr  | F1  | F2  | F3  | F4 | F5 | F6 | F7 | F8  | F9  | F10 | F11 | F12   | Ins   | Del |
+      |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
+      | Caps |     |     |     |    |    |    |    | Psc | Slk | Pus | Up  |       | Backs |     |
+      |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
+      |      | VoD | VoU | Mut |    |    | *  | /  | Hom | PgU | Lef | Rig | Enter |       |     |
+      |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
+      |      |     |     |     |    |    | +  | -  | End | PgD | Dow |     |       |       |     |
+      |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
+
+                      |---+---+---+---+---|
+                      |   |   |   |   |   |
+                      |---+---+---+---+---|
+     */
+
+  [HHKB] = KEYMAP(
+  KC_PWR,   KC_F1,    KC_F2,    KC_F3,    KC_F4,    KC_F5,    KC_F6,    KC_F7,    KC_F8,    KC_F9,    KC_F10,   KC_F11,   KC_F12,   KC_INS,   KC_DEL, \
+  KC_CAPS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_PSCR,  KC_SLCK,  KC_PAUS,  KC_UP,    KC_TRNS,  KC_BSPC,          \
+  KC_TRNS,  KC_VOLD,  KC_VOLU,  KC_MUTE,  KC_TRNS,  KC_TRNS,  KC_PAST,  KC_PSLS,  KC_HOME,  KC_PGUP,  KC_LEFT,  KC_RGHT,  KC_PENT,                    \
+  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_PPLS,  KC_PMNS,  KC_END,   KC_PGDN,  KC_DOWN,  KC_TRNS,  KC_TRNS,                    \
+  KC_TRNS, KC_TRNS,           KC_TRNS,                KC_TRNS, KC_TRNS),
+
+
+    /* Layer LGUI: All keys with RGUI modifier
+     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
+     | Esc    | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0   | -     | =        | \     | ` |
+     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
+     | Tab    | Q | W | E | R | T | Y | U | I | O | P   | [     | ]        | Backs |   |
+     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
+     | Contro | A | S | D | F | G | H | J | K |   | ;   | '     | RCtl/Ent |       |   |
+     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
+     | Shift  | Z | X | C | V | B | N | M | , | . | Fn2 | Shift | Fn0      |       |   |
+     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
+
+                 |------+------+-------+------+------|
+                 | LAlt | LGUI | Space | RGUI | RAlt |
+                 |------+------+-------+------+------|
+    */
+
+  [RGUILEV] = KEYMAP(  // Right GUI layer  by KC_L
+
+  RGUI(KC_ESC),   RGUI(KC_1),  RGUI(KC_2),  RGUI(KC_3),  RGUI(KC_4),  RGUI(KC_5),  RGUI(KC_6),  RGUI(KC_7),  RGUI(KC_8),     RGUI(KC_9),    RGUI(KC_0),     RGUI(KC_MINS),  RGUI(KC_EQL),   RGUI(KC_BSLS),  RGUI(KC_GRV),  \
+  RGUI(KC_TAB),   RGUI(KC_Q),  RGUI(KC_W),  RGUI(KC_E),  RGUI(KC_R),  RGUI(KC_T),  RGUI(KC_Y),  RGUI(KC_U),  RGUI(KC_I),     RGUI(KC_O),    RGUI(KC_P),     RGUI(KC_LBRC),  RGUI(KC_RBRC),  RGUI(KC_BSPC),  \
+  RGUI(KC_LCTL),  RGUI(KC_A),  RGUI(KC_S),  RGUI(KC_D),  RGUI(KC_F),  RGUI(KC_G),  RGUI(KC_H),  RGUI(KC_J),  RGUI(KC_K),     KC_TRNS,       KC_TRNS,        RGUI(KC_QUOT),  KC_FN0,         \
+  RGUI(KC_LSFT),  RGUI(KC_Z),  RGUI(KC_X),  RGUI(KC_C),  RGUI(KC_V),  RGUI(KC_B),  RGUI(KC_N),  RGUI(KC_M),  RGUI(KC_COMM),  RGUI(KC_DOT),  RGUI(KC_SLSH),  RGUI(KC_RSFT),  KC_TRNS,        \
+      KC_LALT, KC_LGUI, RGUI(KC_SPC),               KC_RGUI, KC_RALT),
+
+    /* Layer LGUI: All keys with LGUI modifier
+     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
+     | Esc    | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0   | -     | =        | \     | ` |
+     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
+     | Tab    | Q | W | E | R | T | Y | U | I | O | P   | [     | ]        | Backs |   |
+     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
+     | Contro | A | S | D | F | G | H | J | K |   | ;   | '     | RCtl/Ent |       |   |
+     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
+     | Shift  | Z | X | C | V | B | N | M | , | . | Fn2 | Shift | Fn0      |       |   |
+     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
+
+                 |------+------+-------+------+------|
+                 | LAlt | LGUI | Space | LGUI | RAlt |
+                 |------+------+-------+------+------|
+    */
+
+  [LGUILEV] = KEYMAP(  // Right GUI layer  by KC_L
+
+  LGUI(KC_ESC),   LGUI(KC_1),  LGUI(KC_2),  LGUI(KC_3),  LGUI(KC_4),  LGUI(KC_5),  LGUI(KC_6),  LGUI(KC_7),  LGUI(KC_8),     LGUI(KC_9),    LGUI(KC_0),     LGUI(KC_MINS),  LGUI(KC_EQL),   LGUI(KC_BSLS),  LGUI(KC_GRV),  \
+  LGUI(KC_TAB),   LGUI(KC_Q),  LGUI(KC_W),  LGUI(KC_E),  LGUI(KC_R),  LGUI(KC_T),  LGUI(KC_Y),  LGUI(KC_U),  LGUI(KC_I),     LGUI(KC_O),    LGUI(KC_P),     LGUI(KC_LBRC),  LGUI(KC_RBRC),  LGUI(KC_BSPC),  \
+  LGUI(KC_LCTL),  KC_TRNS,     KC_TRNS,     LGUI(KC_D),  LGUI(KC_F),  LGUI(KC_G),  LGUI(KC_H),  LGUI(KC_J),  LGUI(KC_K),     LGUI(KC_L),    LGUI(KC_SCLN),  LGUI(KC_QUOT),  KC_FN0,         \
+  KC_LSFT,        LGUI(KC_Z),  LGUI(KC_X),  LGUI(KC_C),  LGUI(KC_V),  LGUI(KC_B),  LGUI(KC_N),  LGUI(KC_M),  LGUI(KC_COMM),  LGUI(KC_DOT),  LGUI(KC_SLSH),  KC_RSFT,        KC_TRNS,        \
+      KC_LALT, KC_LGUI, LGUI(KC_SPC),               KC_LGUI, KC_RALT),
+
+    /* Layer LALT: All keys with RALT modifier
+     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
+     | Esc    | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0   | -     | =        | \     | ` |
+     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
+     | Tab    | Q | W | E | R | T | Y | U | I | O | P   | [     | ]        | Backs |   |
+     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
+     | Contro | A | S | D | F | G | H | J | K |   | ;   | '     | RCtl/Ent |       |   |
+     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
+     | Shift  | Z | X | C | V | B | N | M | , | . | Fn2 | Shift | Fn0      |       |   |
+     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
+
+                 |------+------+-------+------+------|
+                 | LAlt | LGUI | Space | RGUI | RAlt |
+                 |------+------+-------+------+------|
+    */
+
+  [RALTLEV] = KEYMAP(  // Right ALT layer  by KC_L
+
+  RALT(KC_ESC),   RALT(KC_1),  RALT(KC_2),  RALT(KC_3),  RALT(KC_4),  RALT(KC_5),  RALT(KC_6),  RALT(KC_7),  RALT(KC_8),     RALT(KC_9),    RALT(KC_0),     RALT(KC_MINS),  RALT(KC_EQL),   RALT(KC_BSLS),  RALT(KC_GRV),  \
+  RALT(KC_TAB),   RALT(KC_Q),  RALT(KC_W),  RALT(KC_E),  RALT(KC_R),  RALT(KC_T),  RALT(KC_Y),  RALT(KC_U),  RALT(KC_I),     RALT(KC_O),    RALT(KC_P),     RALT(KC_LBRC),  RALT(KC_RBRC),  RALT(KC_BSPC),  \
+  RALT(KC_LCTL),  RALT(KC_A),  RALT(KC_S),  RALT(KC_D),  RALT(KC_F),  RALT(KC_G),  RALT(KC_H),  RALT(KC_J),  RALT(KC_K),     KC_TRNS,       KC_TRNS,        RALT(KC_QUOT),  KC_FN0,         \
+  RALT(KC_LSFT),  RALT(KC_Z),  RALT(KC_X),  RALT(KC_C),  RALT(KC_V),  RALT(KC_B),  RALT(KC_N),  RALT(KC_M),  RALT(KC_COMM),  RALT(KC_DOT),  RALT(KC_SLSH),  RALT(KC_RSFT),  KC_TRNS,        \
+      KC_LALT, KC_LGUI, RALT(KC_SPC),               KC_RGUI, KC_RALT),
+
+    /* Layer LALT: All keys with LALT modifier
+     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
+     | Esc    | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0   | -     | =        | \     | ` |
+     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
+     | Tab    | Q | W | E | R | T | Y | U | I | O | P   | [     | ]        | Backs |   |
+     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
+     | Contro | A | S | D | F | G | H | J | K |   | ;   | '     | RCtl/Ent |       |   |
+     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
+     | Shift  | Z | X | C | V | B | N | M | , | . | Fn2 | Shift | Fn0      |       |   |
+     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
+
+                 |------+------+-------+------+------|
+                 | LAlt | LGUI | Space | LGUI | RAlt |
+                 |------+------+-------+------+------|
+    */
+
+  [LALTLEV] = KEYMAP(  // Right ALT layer  by KC_L
+
+  LALT(KC_ESC),   LALT(KC_1),  LALT(KC_2),  LALT(KC_3),  LALT(KC_4),  LALT(KC_5),  LALT(KC_6),  LALT(KC_7),  LALT(KC_8),     LALT(KC_9),    LALT(KC_0),     LALT(KC_MINS),  LALT(KC_EQL),   LALT(KC_BSLS),  LALT(KC_GRV),  \
+  LALT(KC_TAB),   LALT(KC_Q),  LALT(KC_W),  LALT(KC_E),  LALT(KC_R),  LALT(KC_T),  LALT(KC_Y),  LALT(KC_U),  LALT(KC_I),     LALT(KC_O),    LALT(KC_P),     LALT(KC_LBRC),  LALT(KC_RBRC),  LALT(KC_BSPC),  \
+  LALT(KC_LCTL),  KC_TRNS,     KC_TRNS,     LALT(KC_D),  LALT(KC_F),  LALT(KC_G),  LALT(KC_H),  LALT(KC_J),  LALT(KC_K),     LALT(KC_L),    LALT(KC_SCLN),  LALT(KC_QUOT),  KC_FN0,         \
+  KC_LSFT,        LALT(KC_Z),  LALT(KC_X),  LALT(KC_C),  LALT(KC_V),  LALT(KC_B),  LALT(KC_N),  LALT(KC_M),  LALT(KC_COMM),  LALT(KC_DOT),  LALT(KC_SLSH),  KC_RSFT,        KC_TRNS,        \
+      KC_LALT, KC_LGUI, LALT(KC_SPC),               KC_LGUI, KC_RALT),
+
+
+    /* Layer WIN: Win layer
+     |--------+---+---+---+---+---+---+---+---+---+---+-------+----------+-------+---|
+     | Esc    | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | -     | =        | \     | ` |
+     |--------+---+---+---+---+---+---+---+---+---+---+-------+----------+-------+---|
+     | Tab    | Q | W | E | R | T | Y | U | I | O | P | [     | ]        | Backs |   |
+     |--------+---+---+---+---+---+---+---+---+---+---+-------+----------+-------+---|
+     | Contro | A | S | D | F | G | H | J | K | L | ; | '     | RCtl/Ent |       |   |
+     |--------+---+---+---+---+---+---+---+---+---+---+-------+----------+-------+---|
+     | Shift  | Z | X | C | V | B | N | M | , | . | / | Shift | Fn0      |       |   |
+     |--------+---+---+---+---+---+---+---+---+---+---+-------+----------+-------+---|
+
+                 |------+------+-------+------+------|
+                 | LGui | LAlt | Space | RGui | Ralt |
+                 |------+------+-------+------+------|
+    */
+
+  [WIN] = KEYMAP(  // BASE level with swapped GUI/ALT
+
+
+  KC_ESC,   KC_1,              KC_2,              KC_3,  KC_4,  KC_5,  KC_6,  KC_7,  KC_8,     KC_9,              KC_0,                 KC_MINS,  KC_EQL,    KC_BSLS,  KC_GRV,  \
+  KC_TAB,   KC_Q,              KC_W,              KC_E,  KC_R,  KC_T,  KC_Y,  KC_U,  KC_I,     KC_O,              KC_P,                 KC_LBRC,  KC_RBRC,   KC_BSPC,  \
+  KC_LCTL,  LT(LGUILEV,KC_A),  LT(LALTLEV,KC_S),  KC_D,  KC_F,  KC_G,  KC_H,  KC_J,  KC_K,     LT(RALTLEV,KC_L),  LT(RGUILEV,KC_SCLN),  KC_QUOT,  KC_FN0,    \
+  KC_LSFT,  KC_Z,              KC_X,              KC_C,  KC_V,  KC_B,  KC_N,  KC_M,  KC_COMM,  KC_DOT,            KC_SLSH,              KC_RSFT,  MO(HHKB),  \
+                 KC_RGUI, KC_RALT, KC_SPC,                KC_RALT, KC_RGUI)};
+
+
+const uint16_t PROGMEM fn_actions[] = {
+    [0] = ACTION_MODS_TAP_KEY(MOD_RCTL, KC_ENT)      // RControl with tap Enter*
+};
+
+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;
+};
index 076dced82902cadf95c2d650f13aadb47facf08e..f6a8d10c583bda4bef5d19bc08154eed70e233fe 100644 (file)
@@ -54,9 +54,9 @@ SRC = jd45.c \
        backlight.c 
 
 ifdef KEYMAP
-    SRC := keymaps/keymap_$(KEYMAP).c $(SRC)
+    SRC := keymaps/keymaps/(KEYMAP).c $(SRC)
 else
-    SRC := keymaps/keymap_default.c $(SRC)
+    SRC := keymaps/keymaps/default.c $(SRC)
 endif
 
 CONFIG_H = config.h
diff --git a/keyboard/jd45/keymaps/default.c b/keyboard/jd45/keymaps/default.c
new file mode 100644 (file)
index 0000000..05dd46e
--- /dev/null
@@ -0,0 +1,31 @@
+#include "jd45.h"
+#include "backlight.h"
+
+/* this keymap is to provide a basic keyboard layout for testing the matrix
+ * for more practical and complicated keymap refer to other keymaps in the same folder
+ */
+/* JD45 keymap definition macro
+ */
+#define KEYMAP( \
+    K01, K02, K03, K04, K05, K06, K07, K08, K09, K10, K11, K12, K13, \
+       K14, K15, K16, K17, K18, K19, K20, K21, K22, K23, K24, K25, \
+       K26, K27, K28, K29, K30, K31, K32, K33, K34, K35, K36, K37, \
+       K38, K39, K40, K41, K42, K43, K44, K45, K46, K47 \
+) { \
+    { KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07, KC_##K08, KC_##K09, KC_##K10, KC_##K11, KC_##K12, KC_##K13 }, \
+    { KC_##K14, KC_##K15, KC_##K16, KC_##K17, KC_##K18, KC_##K19, KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_NO    }, \
+    { KC_##K26, KC_##K27, KC_##K28, KC_##K29, KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_##K34, KC_##K35, KC_##K36, KC_##K37, KC_NO    }, \
+    { KC_##K38, KC_##K39, KC_##K40, KC_##K41, KC_##K42, KC_NO,    KC_##K43, KC_NO,    KC_##K44, KC_##K45, KC_##K46, KC_##K47, KC_NO    }  \
+}
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[0] = KEYMAP(
+  ESC,   Q,    W,    E,    R,    T,    Y,    U,    I,    O,    P,     QUOT, BSPC,
+  TAB,   A,    S,    D,    F,    G,    H,    J,    K,    L,    SCLN,  ENT,
+  LSFT,  Z,    X,    C,    V,    B,    N,    M,    COMM, DOT,  SLSH,  RSFT,
+  PAUSE, LCTL, LALT, DEL,  SPC,  DEL,  LEFT, UP,   DOWN, RIGHT ),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+
+};
diff --git a/keyboard/jd45/keymaps/justin.c b/keyboard/jd45/keymaps/justin.c
new file mode 100644 (file)
index 0000000..f261b54
--- /dev/null
@@ -0,0 +1,101 @@
+#include "jd45.h"
+#include "backlight.h"
+
+/* JD45 keymap definition macro
+ */
+#define KEYMAP( \
+    K01, K02, K03, K04, K05, K06, K07, K08, K09, K10, K11, K12, K13, \
+       K14, K15, K16, K17, K18, K19, K20, K21, K22, K23, K24, K25, \
+       K26, K27, K28, K29, K30, K31, K32, K33, K34, K35, K36, K37, \
+       K38, K39, K40, K41, K42, K43, K44, K45, K46, K47 \
+) { \
+    { KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07, KC_##K08, KC_##K09, KC_##K10, KC_##K11, KC_##K12, KC_##K13 }, \
+    { KC_##K14, KC_##K15, KC_##K16, KC_##K17, KC_##K18, KC_##K19, KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_NO    }, \
+    { KC_##K26, KC_##K27, KC_##K28, KC_##K29, KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_##K34, KC_##K35, KC_##K36, KC_##K37, KC_NO    }, \
+    { KC_##K38, KC_##K39, KC_##K40, KC_##K41, KC_##K42, KC_NO,    KC_##K43, KC_NO,    KC_##K44, KC_##K45, KC_##K46, KC_##K47, KC_NO    }  \
+}
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[0] = KEYMAP(
+  ESC,  Q,    W,    F,    P,    G,    J,    L,    U,    Y,    SCLN, QUOT, BSPC,
+  FN8,  A,    R,    S,    T,    D,    H,    N,    E,    I,    O,     ENT,
+  LSFT, Z,    X,    C,    V,    B,    K,    M,    COMM, DOT,  SLSH,  FN6,
+  FN4, LGUI, FN7, FN2,  FN1,  SPC,  FN5,  RALT,  FN3, FN0 ),
+[1] = KEYMAP(
+  TRNS, FN10, FN11, FN12, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, UP, DEL,
+  TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, HOME, PGUP, LEFT, RGHT,
+  TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, END,  PGDN, DOWN, TRNS,
+  TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS ),
+[2] = KEYMAP(
+  TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS,    7,    8,    9,    0, TRNS, TRNS,
+  TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, LBRC,    4,    5,    6,  DOT, TRNS,
+  TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, RBRC,    1,    2,    3, BSLS, TRNS,
+  TRNS,FN29, TRNS, TRNS, TRNS, PAUSE,  EQL, MINS, TRNS, TRNS ),
+[3] = KEYMAP(
+  TRNS, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12,
+  TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS,
+  TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS,
+  TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS ),
+[4] = KEYMAP(
+  TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS,    7,    8,    9,    0, TRNS, TRNS,
+  TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, LBRC,    4,    5,    6,  DOT, TRNS,
+  TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, RBRC,    1,    2,    3, BSLS, TRNS,
+  TRNS,FN29, TRNS, TRNS, TRNS, PAUSE,  EQL, MINS, TRNS, TRNS ),
+};
+
+enum macro_id {
+   PSWD1,
+   PSWD2,
+   PSWD3,
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [0] = ACTION_MODS_TAP_KEY(MOD_LCTL, KC_MINS),
+    [1] = ACTION_LAYER_MOMENTARY(1),  // FN1
+    [2] = ACTION_LAYER_MOMENTARY(2),  // FN2
+    [3] = ACTION_LAYER_MOMENTARY(3),  // FN3
+    [4] = ACTION_MODS_TAP_KEY(MOD_LSFT, KC_GRV),
+    [5] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_RGUI),
+    [6] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_CAPS),
+    [7] = ACTION_LAYER_MODS(4, MOD_LSFT),  // FN4
+    [8] = ACTION_MODS_TAP_KEY(MOD_LCTL, KC_TAB),
+
+    [10] = ACTION_MACRO(PSWD1),
+    [11] = ACTION_MACRO(PSWD2),
+    [12] = ACTION_MACRO(PSWD3),
+    
+    [29] = ACTION_BACKLIGHT_TOGGLE(),
+    [30] = ACTION_BACKLIGHT_INCREASE(),
+    [31] = ACTION_BACKLIGHT_DECREASE()
+    
+};
+
+/*
+ * Macro definition
+ */
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+    switch (id) {
+        case PSWD1:
+            return (record->event.pressed ?
+                    MACRO( I(0), T(1), T(2), T(3), T(4), T(5), T(6), T(7), T(8), T(ENT), END ) :
+                    MACRO_NONE );
+        case PSWD2:
+            return (record->event.pressed ?
+                    MACRO( I(0), T(1), T(2), T(3), T(4), T(5), T(6), T(7), T(8), T(ENT), END ) :
+                    MACRO_NONE );
+        case PSWD3:
+            return (record->event.pressed ?
+                    MACRO( I(0), T(1), T(2), T(3), T(4), T(5), T(6), T(7), T(8), T(ENT), END ) :
+                    MACRO_NONE );
+        //case VOLUP:
+        //    return (record->event.pressed ?
+        //            MACRO( D(VOLU), U(VOLU), END ) :
+        //            MACRO_NONE );
+        //case ALT_TAB:
+        //    return (record->event.pressed ?
+        //            MACRO( D(LALT), D(TAB), END ) :
+        //            MACRO( U(TAB), END ));
+    }
+    return MACRO_NONE;
+}
diff --git a/keyboard/jd45/keymaps/keymap_default.c b/keyboard/jd45/keymaps/keymap_default.c
deleted file mode 100644 (file)
index 05dd46e..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-#include "jd45.h"
-#include "backlight.h"
-
-/* this keymap is to provide a basic keyboard layout for testing the matrix
- * for more practical and complicated keymap refer to other keymaps in the same folder
- */
-/* JD45 keymap definition macro
- */
-#define KEYMAP( \
-    K01, K02, K03, K04, K05, K06, K07, K08, K09, K10, K11, K12, K13, \
-       K14, K15, K16, K17, K18, K19, K20, K21, K22, K23, K24, K25, \
-       K26, K27, K28, K29, K30, K31, K32, K33, K34, K35, K36, K37, \
-       K38, K39, K40, K41, K42, K43, K44, K45, K46, K47 \
-) { \
-    { KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07, KC_##K08, KC_##K09, KC_##K10, KC_##K11, KC_##K12, KC_##K13 }, \
-    { KC_##K14, KC_##K15, KC_##K16, KC_##K17, KC_##K18, KC_##K19, KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_NO    }, \
-    { KC_##K26, KC_##K27, KC_##K28, KC_##K29, KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_##K34, KC_##K35, KC_##K36, KC_##K37, KC_NO    }, \
-    { KC_##K38, KC_##K39, KC_##K40, KC_##K41, KC_##K42, KC_NO,    KC_##K43, KC_NO,    KC_##K44, KC_##K45, KC_##K46, KC_##K47, KC_NO    }  \
-}
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-[0] = KEYMAP(
-  ESC,   Q,    W,    E,    R,    T,    Y,    U,    I,    O,    P,     QUOT, BSPC,
-  TAB,   A,    S,    D,    F,    G,    H,    J,    K,    L,    SCLN,  ENT,
-  LSFT,  Z,    X,    C,    V,    B,    N,    M,    COMM, DOT,  SLSH,  RSFT,
-  PAUSE, LCTL, LALT, DEL,  SPC,  DEL,  LEFT, UP,   DOWN, RIGHT ),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-
-};
diff --git a/keyboard/jd45/keymaps/keymap_justin.c b/keyboard/jd45/keymaps/keymap_justin.c
deleted file mode 100644 (file)
index f261b54..0000000
+++ /dev/null
@@ -1,101 +0,0 @@
-#include "jd45.h"
-#include "backlight.h"
-
-/* JD45 keymap definition macro
- */
-#define KEYMAP( \
-    K01, K02, K03, K04, K05, K06, K07, K08, K09, K10, K11, K12, K13, \
-       K14, K15, K16, K17, K18, K19, K20, K21, K22, K23, K24, K25, \
-       K26, K27, K28, K29, K30, K31, K32, K33, K34, K35, K36, K37, \
-       K38, K39, K40, K41, K42, K43, K44, K45, K46, K47 \
-) { \
-    { KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07, KC_##K08, KC_##K09, KC_##K10, KC_##K11, KC_##K12, KC_##K13 }, \
-    { KC_##K14, KC_##K15, KC_##K16, KC_##K17, KC_##K18, KC_##K19, KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_NO    }, \
-    { KC_##K26, KC_##K27, KC_##K28, KC_##K29, KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_##K34, KC_##K35, KC_##K36, KC_##K37, KC_NO    }, \
-    { KC_##K38, KC_##K39, KC_##K40, KC_##K41, KC_##K42, KC_NO,    KC_##K43, KC_NO,    KC_##K44, KC_##K45, KC_##K46, KC_##K47, KC_NO    }  \
-}
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-[0] = KEYMAP(
-  ESC,  Q,    W,    F,    P,    G,    J,    L,    U,    Y,    SCLN, QUOT, BSPC,
-  FN8,  A,    R,    S,    T,    D,    H,    N,    E,    I,    O,     ENT,
-  LSFT, Z,    X,    C,    V,    B,    K,    M,    COMM, DOT,  SLSH,  FN6,
-  FN4, LGUI, FN7, FN2,  FN1,  SPC,  FN5,  RALT,  FN3, FN0 ),
-[1] = KEYMAP(
-  TRNS, FN10, FN11, FN12, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, UP, DEL,
-  TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, HOME, PGUP, LEFT, RGHT,
-  TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, END,  PGDN, DOWN, TRNS,
-  TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS ),
-[2] = KEYMAP(
-  TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS,    7,    8,    9,    0, TRNS, TRNS,
-  TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, LBRC,    4,    5,    6,  DOT, TRNS,
-  TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, RBRC,    1,    2,    3, BSLS, TRNS,
-  TRNS,FN29, TRNS, TRNS, TRNS, PAUSE,  EQL, MINS, TRNS, TRNS ),
-[3] = KEYMAP(
-  TRNS, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12,
-  TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS,
-  TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS,
-  TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS ),
-[4] = KEYMAP(
-  TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS,    7,    8,    9,    0, TRNS, TRNS,
-  TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, LBRC,    4,    5,    6,  DOT, TRNS,
-  TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, RBRC,    1,    2,    3, BSLS, TRNS,
-  TRNS,FN29, TRNS, TRNS, TRNS, PAUSE,  EQL, MINS, TRNS, TRNS ),
-};
-
-enum macro_id {
-   PSWD1,
-   PSWD2,
-   PSWD3,
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [0] = ACTION_MODS_TAP_KEY(MOD_LCTL, KC_MINS),
-    [1] = ACTION_LAYER_MOMENTARY(1),  // FN1
-    [2] = ACTION_LAYER_MOMENTARY(2),  // FN2
-    [3] = ACTION_LAYER_MOMENTARY(3),  // FN3
-    [4] = ACTION_MODS_TAP_KEY(MOD_LSFT, KC_GRV),
-    [5] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_RGUI),
-    [6] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_CAPS),
-    [7] = ACTION_LAYER_MODS(4, MOD_LSFT),  // FN4
-    [8] = ACTION_MODS_TAP_KEY(MOD_LCTL, KC_TAB),
-
-    [10] = ACTION_MACRO(PSWD1),
-    [11] = ACTION_MACRO(PSWD2),
-    [12] = ACTION_MACRO(PSWD3),
-    
-    [29] = ACTION_BACKLIGHT_TOGGLE(),
-    [30] = ACTION_BACKLIGHT_INCREASE(),
-    [31] = ACTION_BACKLIGHT_DECREASE()
-    
-};
-
-/*
- * Macro definition
- */
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-    switch (id) {
-        case PSWD1:
-            return (record->event.pressed ?
-                    MACRO( I(0), T(1), T(2), T(3), T(4), T(5), T(6), T(7), T(8), T(ENT), END ) :
-                    MACRO_NONE );
-        case PSWD2:
-            return (record->event.pressed ?
-                    MACRO( I(0), T(1), T(2), T(3), T(4), T(5), T(6), T(7), T(8), T(ENT), END ) :
-                    MACRO_NONE );
-        case PSWD3:
-            return (record->event.pressed ?
-                    MACRO( I(0), T(1), T(2), T(3), T(4), T(5), T(6), T(7), T(8), T(ENT), END ) :
-                    MACRO_NONE );
-        //case VOLUP:
-        //    return (record->event.pressed ?
-        //            MACRO( D(VOLU), U(VOLU), END ) :
-        //            MACRO_NONE );
-        //case ALT_TAB:
-        //    return (record->event.pressed ?
-        //            MACRO( D(LALT), D(TAB), END ) :
-        //            MACRO( U(TAB), END ));
-    }
-    return MACRO_NONE;
-}
index 307b0c7f4fe4443e056c25958c8521e747337d23..03d26017617f4ce625924b6bac352c4177bc4188 100644 (file)
@@ -143,7 +143,7 @@ BACKLIGHT_ENABLE = yes  # Enable keyboard backlight functionality
 # AUDIO_ENABLE = YES           # Audio output on port C6
 # UNICODE_ENABLE = YES                 # Unicode
 # BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID
-# RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.  Do not enable this with MIDI at the same time.
+# RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.  Do not enable this with audio at the same time.
 
 ifdef BACKLIGHT_ENABLE
        SRC += backlight.c
index 3ba0cc1527384cd1aeb0f85efdee3f1799769abb..d9a1e3beeebd6e6e8e50b49a697972641cc437b2 100644 (file)
@@ -16,13 +16,13 @@ Depending on which keymap you would like to use, you will have to compile slight
 To build with the default keymap, simply run `make`.
 
 ### Other Keymaps
-Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create file named `<name>.c` and see keymap document (you can find in top README.md) and existent keymap files.
+Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create file named `<name>.c` in the keymaps folder, and see keymap document (you can find in top README.md) and existent keymap files.
 
 To build the firmware binary hex file with a keymap just do `make` with `KEYMAP` option like:
 ```
 $ make KEYMAP=[default|jack|<name>]
 ```
-Keymaps follow the format **__<name\>.c__** and are stored in the `keymaps` folder.
+Keymaps follow the format **__\<name\>.c__** and are stored in the `keymaps` folder.
 
 ### Notable forks (which some of the keymap files are from)
 - [Shane's Fork](https://github.com/shanecelis/tmk_keyboard/tree/master/keyboard/planck)
diff --git a/keyboard/planck/common_keymaps/keymap_mitch.c b/keyboard/planck/common_keymaps/keymap_mitch.c
deleted file mode 100644 (file)
index f7df7bb..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-#include "keymap_common.h"
-
-const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-[0] = KEYMAP(
-  TAB,  Q,    W,    E,    R,    T,    Y,    U,    I,    O,    P,    BSPC,
-  LCTL, A,    S,    D,    F,    G,    H,    J,    K,    L,    SCLN, QUOT,
-  LSFT, Z,    X,    C,    V,    B,    N,    M,    COMM, DOT,  SLSH, FN3,
-  ESC,  DEL,  LALT, LGUI, FN2,  SPC,        FN1,  LEFT, DOWN, UP,   RGHT),
-[1] = KEYMAP(
-  GRV,  GRV,  FN22, FN19, FN10, TRNS, TRNS, 7,    8,    9,    0,    BSPC,
-  TRNS, LBRC, RBRC, FN23, FN24, TRNS, TRNS, 4,    5,    6,    TRNS, BSLS,
-  TRNS, MINS, FN20, EQL,  FN21, TRNS, TRNS, 1,    2,    3,    TRNS, ENT,
-  TRNS, TRNS, TRNS, TRNS, TRNS, SPC,        FN1,  TRNS, PGDN, PGUP, TRNS),
-[2] = KEYMAP(
-  FN26, FN10, FN11, FN12, FN13, FN14, FN15, FN17, FN18, FN19, FN10, DEL,
-  TRNS, TRNS, MUTE, VOLD, VOLU, TRNS, BSPC, FN14, FN15, FN16, TRNS, FN25,
-  TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, FN11, FN12, FN13, TRNS, ENT,
-  TRNS, TRNS, TRNS, TRNS, FN2,  ENT,        TRNS, TRNS, PGDN, PGUP, TRNS),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-  [1] = ACTION_LAYER_MOMENTARY(1),  // Switch layer raise
-  [2] = ACTION_LAYER_MOMENTARY(2),  // Switch layer lower
-
-  [3] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_ENT), // Right shift serves as Enter on tap
-
-  // Numeric shift modifiers
-  [10] = ACTION_MODS_KEY(MOD_LSFT, KC_0),
-  [11] = ACTION_MODS_KEY(MOD_LSFT, KC_1),
-  [12] = ACTION_MODS_KEY(MOD_LSFT, KC_2),
-  [13] = ACTION_MODS_KEY(MOD_LSFT, KC_3),
-  [14] = ACTION_MODS_KEY(MOD_LSFT, KC_4),
-  [15] = ACTION_MODS_KEY(MOD_LSFT, KC_5),
-  [16] = ACTION_MODS_KEY(MOD_LSFT, KC_6),
-  [17] = ACTION_MODS_KEY(MOD_LSFT, KC_7),
-  [18] = ACTION_MODS_KEY(MOD_LSFT, KC_8),
-  [19] = ACTION_MODS_KEY(MOD_LSFT, KC_9),
-
-  // Other shift modifiers
-  [20] = ACTION_MODS_KEY(MOD_LSFT, KC_MINS), // _
-  [21] = ACTION_MODS_KEY(MOD_LSFT, KC_EQL),  // +
-  [22] = ACTION_MODS_KEY(MOD_LSFT, KC_GRV),  // ~
-  [23] = ACTION_MODS_KEY(MOD_LSFT, KC_LBRC), // {
-  [24] = ACTION_MODS_KEY(MOD_LSFT, KC_RBRC), // }
-  [25] = ACTION_MODS_KEY(MOD_LSFT, KC_BSLS), // |
-
-  // Switch windows in app
-  [26] = ACTION_MODS_KEY(MOD_LGUI, KC_GRV),
-};
index d995eb9e5857541053e72014fc063523d75154af..988deee99d67d0ae35eb2e64a9f675a196880fc7 100644 (file)
@@ -76,7 +76,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * ,-----------------------------------------------------------------------------------.
  * |   `  |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  | Bksp |
  * |------+------+------+------+------+-------------+------+------+------+------+------|
- * | Del  |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |   -  |   =  |   [  |   ]  |  \   |
+ * | Esc  |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |   -  |   =  |   [  |   ]  |  \   |
  * |------+------+------+------+------+------|------+------+------+------+------+------|
  * | Shift|  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |Qwerty|Colemk|Dvorak| Reset|Enter |
  * |------+------+------+------+------+------+------+------+------+------+------+------|
@@ -94,7 +94,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * ,-----------------------------------------------------------------------------------.
  * |   ~  |   !  |   @  |   #  |   $  |   %  |   ^  |   &  |   *  |   (  |   )  | Bksp |
  * |------+------+------+------+------+-------------+------+------+------+------+------|
- * | Del  |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |   _  |   +  |   {  |   }  |  |   |
+ * | Esc  |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |   _  |   +  |   {  |   }  |  |   |
  * |------+------+------+------+------+------|------+------+------+------+------+------|
  * | Shift|  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |Qwerty|Colemk|Dvorak| Reset|Enter |
  * |------+------+------+------+------+------+------+------+------+------+------+------|
diff --git a/keyboard/planck/keymaps/tak3over.c b/keyboard/planck/keymaps/tak3over.c
new file mode 100644 (file)
index 0000000..c49af7d
--- /dev/null
@@ -0,0 +1,136 @@
+// This is the canonical layout file for the Quantum project. If you want to add another keyboard,
+// this is the style you want to emulate.
+//
+// Custom style by tak3over.  Dropped the dvorak layer as it was not being used by me. Shifted over
+// keys to make room for a second function key on the left side.  Now has a keypad and most all
+// standard keyboard keys. Including Delete. See TK layer.
+
+#include "planck.h"
+#ifdef BACKLIGHT_ENABLE
+  #include "backlight.h"
+#endif
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+#define _QW 0
+#define _CM 1
+#define _TK 2
+#define _LW 3
+#define _RS 4
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/* Qwerty
+ * ,-----------------------------------------------------------------------------------.
+ * | Tab  |   Q  |   W  |   E  |   R  |   T  |   Y  |   U  |   I  |   O  |   P  | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Esc  |   A  |   S  |   D  |   F  |   G  |   H  |   J  |   K  |   L  |   ;  |  "   |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift|   Z  |   X  |   C  |   V  |   B  |   N  |   M  |   ,  |   .  |   /  |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Ctrl | Alt  | GUI  | TK   |Raise |    Space    |Lower | Left | Down |  Up  |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_QW] = {
+  {KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_BSPC},
+  {KC_ESC,  KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT},
+  {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_ENT },
+  {KC_LCTL, KC_LALT, KC_LGUI, MO(_TK), MO(_LW), KC_SPC,  KC_SPC,  MO(_RS), KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT}
+},
+
+/* Colemak
+ * ,-----------------------------------------------------------------------------------.
+ * | Tab  |   Q  |   W  |   F  |   P  |   G  |   J  |   L  |   U  |   Y  |   ;  | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Esc  |   A  |   R  |   S  |   T  |   D  |   H  |   N  |   E  |   I  |   O  |  "   |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift|   Z  |   X  |   C  |   V  |   B  |   K  |   M  |   ,  |   .  |   /  |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Ctrl | Alt  | GUI  | TK   |Raise |    Space    |Lower | Left | Down |  Up  |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_CM] = {
+  {KC_TAB,  KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_BSPC},
+  {KC_ESC,  KC_A,    KC_R,    KC_S,    KC_T,    KC_D,    KC_H,    KC_N,    KC_E,    KC_I,    KC_O,    KC_QUOT},
+  {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_ENT },
+  {KC_LCTL, KC_LALT, KC_LGUI, MO(_TK), MO(_LW), KC_SPC,  KC_SPC,  MO(_RS), KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT}
+},
+
+/* TenKey, Arrow, and Function key Layer
+ * ,-----------------------------------------------------------------------------------.
+ * |  `   |   1  |   2  |   3  |   4  |   5  |  6   |   7  |   8  |   9  |   0  | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Esc  | Left | Up   | Down | Right| Del  |   *  |   4  |   5  |   6  |   +  |  /   |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift| Home | PGUP | PGDN | End  | Ins  |   .  |   1  |   2  |   3  |   -  |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Ctrl | Alt  | GUI  | TK   |Raise |    Space    |Lower | Left | Down |  Up  |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_TK] = {
+  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC},
+  {KC_ESC,  KC_LEFT, KC_UP,   KC_DOWN, KC_RGHT, KC_DEL,  KC_ASTR, KC_4,    KC_5,    KC_6,    KC_PLUS, KC_SLSH},
+  {KC_LSFT, KC_HOME, KC_PGUP, KC_PGDN, KC_END,  KC_INS,  KC_DOT,  KC_1,    KC_2,    KC_3,    KC_MINS, KC_ENT },
+  {KC_LCTL, KC_LALT, KC_LGUI, MO(_TK), MO(_LW), KC_SPC,  KC_SPC,  MO(_RS), KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT}
+},
+
+/* Raise
+ * ,-----------------------------------------------------------------------------------.
+ * |   `  |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Esc  |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |   -  |   =  |   [  |   ]  |  \   |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift|  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |Qwerty|Colemk|Brite | Reset|Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Ctrl | Alt  | GUI  |  TK  |Raise |    Space    |Lower | Next | Vol- | Vol+ | Play |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_RS] = {
+  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC},
+  {KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS},
+  {KC_TRNS, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  DF(_QW), DF(_CM), M(0),    RESET,   KC_TRNS},
+  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
+},
+
+/* Lower
+ * ,-----------------------------------------------------------------------------------.
+ * |   ~  |   !  |   @  |   #  |   $  |   %  |   ^  |   &  |   *  |   (  |   )  | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Esc  |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |   _  |   +  |   {  |   }  |  |   |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift|  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |Qwerty|Colemk|Brite | Reset|Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Ctrl | Alt  | GUI  |  TK  |Raise |    Space    |Lower | Next | Vol- | Vol+ | Play |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_LW] = {
+  {KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC},
+  {KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE},
+  {KC_TRNS, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  DF(_QW), DF(_CM), M(0),    RESET,   KC_TRNS},
+  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
+}
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+
+};
+
+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);
+            #ifdef BACKLIGHT_ENABLE
+              backlight_step();
+            #endif
+          } else {
+            unregister_code(KC_RSFT);
+          }
+        break;
+      }
+    return MACRO_NONE;
+};
diff --git a/keyboard/planck/old_keymap_files/common_keymaps/keymap_mitch.c b/keyboard/planck/old_keymap_files/common_keymaps/keymap_mitch.c
new file mode 100644 (file)
index 0000000..f7df7bb
--- /dev/null
@@ -0,0 +1,49 @@
+#include "keymap_common.h"
+
+const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[0] = KEYMAP(
+  TAB,  Q,    W,    E,    R,    T,    Y,    U,    I,    O,    P,    BSPC,
+  LCTL, A,    S,    D,    F,    G,    H,    J,    K,    L,    SCLN, QUOT,
+  LSFT, Z,    X,    C,    V,    B,    N,    M,    COMM, DOT,  SLSH, FN3,
+  ESC,  DEL,  LALT, LGUI, FN2,  SPC,        FN1,  LEFT, DOWN, UP,   RGHT),
+[1] = KEYMAP(
+  GRV,  GRV,  FN22, FN19, FN10, TRNS, TRNS, 7,    8,    9,    0,    BSPC,
+  TRNS, LBRC, RBRC, FN23, FN24, TRNS, TRNS, 4,    5,    6,    TRNS, BSLS,
+  TRNS, MINS, FN20, EQL,  FN21, TRNS, TRNS, 1,    2,    3,    TRNS, ENT,
+  TRNS, TRNS, TRNS, TRNS, TRNS, SPC,        FN1,  TRNS, PGDN, PGUP, TRNS),
+[2] = KEYMAP(
+  FN26, FN10, FN11, FN12, FN13, FN14, FN15, FN17, FN18, FN19, FN10, DEL,
+  TRNS, TRNS, MUTE, VOLD, VOLU, TRNS, BSPC, FN14, FN15, FN16, TRNS, FN25,
+  TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, FN11, FN12, FN13, TRNS, ENT,
+  TRNS, TRNS, TRNS, TRNS, FN2,  ENT,        TRNS, TRNS, PGDN, PGUP, TRNS),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+  [1] = ACTION_LAYER_MOMENTARY(1),  // Switch layer raise
+  [2] = ACTION_LAYER_MOMENTARY(2),  // Switch layer lower
+
+  [3] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_ENT), // Right shift serves as Enter on tap
+
+  // Numeric shift modifiers
+  [10] = ACTION_MODS_KEY(MOD_LSFT, KC_0),
+  [11] = ACTION_MODS_KEY(MOD_LSFT, KC_1),
+  [12] = ACTION_MODS_KEY(MOD_LSFT, KC_2),
+  [13] = ACTION_MODS_KEY(MOD_LSFT, KC_3),
+  [14] = ACTION_MODS_KEY(MOD_LSFT, KC_4),
+  [15] = ACTION_MODS_KEY(MOD_LSFT, KC_5),
+  [16] = ACTION_MODS_KEY(MOD_LSFT, KC_6),
+  [17] = ACTION_MODS_KEY(MOD_LSFT, KC_7),
+  [18] = ACTION_MODS_KEY(MOD_LSFT, KC_8),
+  [19] = ACTION_MODS_KEY(MOD_LSFT, KC_9),
+
+  // Other shift modifiers
+  [20] = ACTION_MODS_KEY(MOD_LSFT, KC_MINS), // _
+  [21] = ACTION_MODS_KEY(MOD_LSFT, KC_EQL),  // +
+  [22] = ACTION_MODS_KEY(MOD_LSFT, KC_GRV),  // ~
+  [23] = ACTION_MODS_KEY(MOD_LSFT, KC_LBRC), // {
+  [24] = ACTION_MODS_KEY(MOD_LSFT, KC_RBRC), // }
+  [25] = ACTION_MODS_KEY(MOD_LSFT, KC_BSLS), // |
+
+  // Switch windows in app
+  [26] = ACTION_MODS_KEY(MOD_LGUI, KC_GRV),
+};
index 0145e44bc6b2697b5e1508e7fbb14014af1f1b92..89c48e50a9c94f28812b490f3a89983b0959ad3e 100644 (file)
@@ -27,7 +27,7 @@
 # make flip-ee = Download the eeprom file to the device, using Atmel FLIP
 #                (must have Atmel FLIP installed).
 #
-# make debug = Start either simulavr or avarice as specified for debugging, 
+# make debug = Start either simulavr or avarice as specified for debugging,
 #              with avr-gdb or avr-insight as the front end for debugging.
 #
 # make filename.s = Just compile filename.c into the assembler code only.
 #----------------------------------------------------------------------------
 
 # Target file name (without extension).
-TARGET = preonic_lufa
+TARGET = preonic
+
 
 # Directory common source filess exist
 TOP_DIR = ../..
+TMK_DIR = ../../tmk_core
 
 # Directory keyboard dependent files exist
 TARGET_DIR = .
 
 # # project specific files
-SRC = extended_keymap_common.c \
-       matrix.c \
-       led.c \
-       backlight.c
+SRC = preonic.c
+
+ifdef keymap
+       KEYMAP = $(keymap)
+endif
 
 ifdef KEYMAP
-    SRC := extended_keymaps/extended_keymap_$(KEYMAP).c $(SRC)
+ifneq ("$(wildcard keymaps/$(KEYMAP).c)","")
+       KEYMAP_FILE = keymaps/$(KEYMAP).c
 else
-    SRC := extended_keymaps/extended_keymap_default.c $(SRC)
+ifneq ("$(wildcard keymaps/$(KEYMAP)/keymap.c)","")
+       KEYMAP_FILE = keymaps/$(KEYMAP)/keymap.c
+else
+$(error Keymap file does not exist)
+endif
 endif
+else
+ifneq ("$(wildcard keymaps/default.c)","")
+       KEYMAP_FILE = keymaps/default.c
+else
+       KEYMAP_FILE = keymaps/default/keymap.c
+endif
+endif
+SRC := $(KEYMAP_FILE) $(SRC)
 
 CONFIG_H = config.h
 
@@ -120,24 +136,26 @@ EXTRAKEY_ENABLE = yes     # Audio control and System control(+450)
 CONSOLE_ENABLE = yes   # Console for debug(+400)
 COMMAND_ENABLE = yes    # Commands for debug and configuration
 # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-#SLEEP_LED_ENABLE = yes  # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes              # USB Nkey Rollover - not yet supported in LUFA
+# SLEEP_LED_ENABLE = yes  # Breathing sleep LED during USB suspend
+# NKRO_ENABLE = yes            # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
 BACKLIGHT_ENABLE = yes  # Enable keyboard backlight functionality
-MIDI_ENABLE = yes              # MIDI controls
-BACKLIGHT_ENABLE = yes
-
-ifdef MIDI_ENABLE
-       SRC += keymap_midi.c \
-                  beeps.c
+# MIDI_ENABLE = YES            # MIDI controls
+# AUDIO_ENABLE = YES           # Audio output on port C6
+# UNICODE_ENABLE = YES                 # Unicode
+# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID
+# RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.  Do not enable this with MIDI at the same time.
+
+ifdef BACKLIGHT_ENABLE
+       SRC += backlight.c
 endif
 
+
 # Optimize size but this may cause error "relocation truncated to fit"
 #EXTRALDFLAGS = -Wl,--relax
 
 # Search Path
 VPATH += $(TARGET_DIR)
 VPATH += $(TOP_DIR)
+VPATH += $(TMK_DIR)
 
-include $(TOP_DIR)/protocol/lufa.mk
-include $(TOP_DIR)/common.mk
-include $(TOP_DIR)/rules.mk
+include $(TOP_DIR)/quantum/quantum.mk
diff --git a/keyboard/preonic/Makefile.pjrc b/keyboard/preonic/Makefile.pjrc
deleted file mode 100644 (file)
index be83ba1..0000000
+++ /dev/null
@@ -1,116 +0,0 @@
-#----------------------------------------------------------------------------
-# On command line:
-#
-# make all = Make software.
-#
-# make clean = Clean out built project files.
-#
-# make coff = Convert ELF to AVR COFF.
-#
-# make extcoff = Convert ELF to AVR Extended COFF.
-#
-# make program = Download the hex file to the device.
-#                Please customize your programmer settings(PROGRAM_CMD)
-#
-# make teensy = Download the hex file to the device, using teensy_loader_cli.
-#               (must have teensy_loader_cli installed).
-#
-# make dfu = Download the hex file to the device, using dfu-programmer (must
-#            have dfu-programmer installed).
-#
-# make flip = Download the hex file to the device, using Atmel FLIP (must
-#             have Atmel FLIP installed).
-#
-# make dfu-ee = Download the eeprom file to the device, using dfu-programmer
-#               (must have dfu-programmer installed).
-#
-# make flip-ee = Download the eeprom file to the device, using Atmel FLIP
-#                (must have Atmel FLIP installed).
-#
-# make debug = Start either simulavr or avarice as specified for debugging, 
-#              with avr-gdb or avr-insight as the front end for debugging.
-#
-# make filename.s = Just compile filename.c into the assembler code only.
-#
-# make filename.i = Create a preprocessed source file for use in submitting
-#                   bug reports to the GCC project.
-#
-# To rebuild project do "make clean" then "make all".
-#----------------------------------------------------------------------------
-
-# Target file name (without extension).
-TARGET = gh60_pjrc
-
-# Directory common source filess exist
-TOP_DIR = ../..
-
-# Directory keyboard dependent files exist
-TARGET_DIR = .
-
-# project specific files
-SRC =  keymap_common.c \
-       matrix.c \
-       led.c
-
-ifdef KEYMAP
-    SRC := keymap_$(KEYMAP).c $(SRC)
-else
-    SRC := keymap_jack.c $(SRC)
-endif
-
-CONFIG_H = config.h
-
-
-# MCU name, you MUST set this to match the board you are using
-# type "make clean" after changing this, so all files will be rebuilt
-MCU = atmega32u4
-#MCU = at90usb1286
-
-
-# Processor frequency.
-#   Normally the first thing your program should do is set the clock prescaler,
-#   so your program will run at the correct speed.  You should also set this
-#   variable to same clock speed.  The _delay_ms() macro uses this, and many
-#   examples use this variable to calculate timings.  Do not add a "UL" here.
-F_CPU = 16000000
-
-
-# Boot Section Size in *bytes*
-#   Teensy halfKay   512
-#   Atmel DFU loader 4096
-#   LUFA bootloader  4096
-OPT_DEFS += -DBOOTLOADER_SIZE=4096
-
-
-# Build Options
-#   comment out to disable the options.
-#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes  # Mouse keys(+5000)
-EXTRAKEY_ENABLE = yes  # Audio control and System control(+600)
-CONSOLE_ENABLE = yes    # Console for debug
-COMMAND_ENABLE = yes    # Commands for debug and configuration
-SLEEP_LED_ENABLE = yes  # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes      # USB Nkey Rollover(+500)
-#PS2_MOUSE_ENABLE = yes        # PS/2 mouse(TrackPoint) support
-
-
-# Search Path
-VPATH += $(TARGET_DIR)
-VPATH += $(TOP_DIR)
-
-include $(TOP_DIR)/protocol/pjrc.mk
-include $(TOP_DIR)/common.mk
-include $(TOP_DIR)/rules.mk
-
-plain: OPT_DEFS += -DKEYMAP_PLAIN
-plain: all
-
-poker: OPT_DEFS += -DKEYMAP_POKER
-poker: all
-
-poker_set: OPT_DEFS += -DKEYMAP_POKER_SET
-poker_set: all
-
-poker_bit: OPT_DEFS += -DKEYMAP_POKER_BIT
-poker_bit: all
diff --git a/keyboard/preonic/PCB_GUIDE.md b/keyboard/preonic/PCB_GUIDE.md
deleted file mode 100644 (file)
index c3004c7..0000000
+++ /dev/null
@@ -1,116 +0,0 @@
-# Planck Firmware Guide
-
-## Setting up the environment
-
-### Windows
-1. Install [WinAVR Tools](http://sourceforge.net/projects/winavr/) for AVR GCC compiler.
-2. Install [DFU-Programmer][dfu-prog] (the -win one).
-3. Start DFU bootloader on the chip first time you will see 'Found New Hardware Wizard' to install driver. If you install device driver properly you can find chip name like 'ATmega32U4' under 'LibUSB-Win32 Devices' tree on 'Device Manager'. If not you will need to update its driver on 'Device Manager' to the `dfu-programmer` driver.
-
-### Mac
-1. Install [CrossPack](http://www.obdev.at/products/crosspack/index.html) or install Xcode from the App Store and install the Command Line Tools from `Xcode->Preferences->Downloads`.
-2. Install [DFU-Programmer][dfu-prog].
-
-### Linux
-1. Install AVR GCC with your favorite package manager.
-2. Install [DFU-Programmer][dfu-prog].
-
-##Verify Your Installation
-1. Clone the following repository: https://github.com/jackhumbert/tmk_keyboard
-2. Open a Terminal and `cd` into `tmk_keyboard/keyboard/planck`
-3. Run `make`. This should output a lot of information about the build process.
-
-## Using the built-in functions
-
-Here is a list of some of the functions available from the command line:
-
-* `make clean`: clean the environment - may be required in-between builds
-* `make`: compile the code
-* `make COMMON=true`: compile with the common (non-extended) keymap
-* `make MATRIX=<matrix_file>`: compile with the referenced matrix file. Default if unspecified is `matrix_pcb.c`. For handwired boards, use `matrix_handwired.c`.
-* `make KEYMAP=<keymap>`: compile with the extended keymap file `extended_keymaps/extended_keymap_<keymap>.c`
-* `make COMMON=true KEYMAP=<keymap>`: compile with the common keymap file `common_keymaps/keymap_<keymap>.c`
-* `make dfu`: build and flash the layout to the PCB
-* `make dfu-force`: build and force-flash the layout to the PCB (may be require for first flash)
-
-Generally, the instructions to flash the PCB are as follows:
-
-1. Make changes to the appropriate keymap file
-2. Save the file
-3. `make clean`
-4. Press the reset button on the PCB/press the key with the `RESET` keycode
-5. `make <arguments> dfu` - use the necessary `KEYMAP=<keymap>` and/or `COMMON=true` arguments here.
-
-## Extended keymap
-
-### Keymap
-
-Unlike the common keymap, prefixing the keycodes with `KC_` is required. A full list of the keycodes is available [here](https://github.com/jackhumbert/tmk_keyboard/blob/master/doc/keycode.txt). For the keycodes available only in the extended keymap, see this [header file](https://github.com/jackhumbert/tmk_keyboard/blob/master/keyboard/planck/extended_keymap_common.h).
-
-You can use modifiers with keycodes like this:
-
-    LCTL(KC_C)
-    
-Which will generate Ctrl+c. These are daisy-chainable, meaning you can do things like:
-
-    LCTL(LALT(KC_C))
-    
-That will generate Ctrl+Alt+c. The entire list of these functions is here:
-
-* `LCTL()`: Left control
-* `LSFT()` / `S()`: Left shift
-* `LALT()`: Left alt/opt
-* `LGUI()`: Left win/cmd
-* `RCTL()`: Right control
-* `RSFT()`: Right shift
-* `RALT()`: Right alt/opt
-* `RGUI()`: Right win/cmd
-
-`S(KC_1)`-like entries are useful in writing keymaps for the Planck.
-
-### Other keycodes
-
-A number of other keycodes have been added that you may find useful:
-
-* `CM_<key>`: the Colemak equivalent of a key (in place of `KC_<key>`), when using Colemak in software (`CM_O` generates `KC_SCLN`)
-* `RESET`: jump to bootloader for flashing (same as press the reset button)
-* `BL_STEP`: step through the backlight brightnesses
-* `BL_<0-15>`: set backlight brightness to 0-15
-* `BL_DEC`: lower the backlight brightness
-* `BL_INC`: raise the backlight brightness
-* `BL_TOGG`: toggle the backlight on/off
-
-### Function layers
-
-The extended keymap extends the number of function layers from 32 to the near-infinite value of 256. Rather than using `FN<num>` notation (still available, but limited to `FN0`-`FN31`), you can use the `FUNC(<num>)` notation. `F(<num>)` is a shortcut for this.
-
-The function actions are unchanged, and you can see the full list of them [here](https://github.com/jackhumbert/tmk_keyboard/blob/master/common/action_code.h). They are explained in detail [here](https://github.com/jackhumbert/tmk_keyboard/blob/master/doc/keymap.md#2-action).
-
-### Macros
-
-Macros have been setup in the `extended_keymaps/extended_keymaps_default.c` file so that you can use `M(<num>)` to access a macro in the `action_get_macro` section on your keymap. The switch/case structure you see here is required, and is setup for `M(0)` - you'll need to copy and paste the code to look like this (e.g. to support `M(3)`):
-
-    switch(id) {
-      case 0:
-        return MACRODOWN(TYPE(KC_A), END);
-        break;
-      case 1:
-        return MACRODOWN(TYPE(KC_B), END);
-        break;
-      case 2:
-        return MACRODOWN(TYPE(KC_C), END);
-        break;
-      case 3:
-        return MACRODOWN(TYPE(KC_D), END);
-        break;
-    } 
-    return MACRO_NONE;
-
-`MACRODOWN()` is a shortcut for `(record->event.pressed ? MACRO(__VA_ARGS__) : MACRO_NONE)` which tells the macro to execute when the key is pressed. Without this, the macro will be executed on both the down and up stroke.
-
-[cygwin]:       https://www.cygwin.com/
-[mingw]:        http://www.mingw.org/
-[mhv]:          https://infernoembedded.com/products/avr-tools
-[winavr]:       http://winavr.sourceforge.net/
-[crosspack]:    http://www.obdev.at/products/crosspack/index.html
-[dfu-prog]:     http://dfu-programmer.sourceforge.net/
index ee824d26e0d16a50a62c3c72ae068011e3de7a55..4a33a3e4e08c37b23a3b912619d689e5ea224aa2 100644 (file)
@@ -1,56 +1,25 @@
-Planck keyboard firmware
+Preonic keyboard firmware
 ======================
-DIY/Assembled compact ortholinear 40% keyboard by [Ortholinear Keyboards](http://ortholinearkeyboards.com).
+DIY/Assembled compact ortholinear 50% keyboard by [Ortholinear Keyboards](http://ortholinearkeyboards.com).
 
-## Extended Keymap
-If you include extended_keymap_common.h instead of keymap_common.h at the top of your file, you'll have access to a bunch of goodies:
+## Quantum MK Firmware
 
-- Use `LSFT()`, `LCTL()`, et. al. (listed in extended_keymap_common.h) as modifiers for keys (daisy-chain-able)
-- Use `FUNC(1)` instead of `FN1` (etc.) to access the function layers beyond the 32 function layer limit
-- Use `CM_F` instead of `KC_F` to get the ColeMak equivilent for shortcuts (maps backwards)
-- Use `MACRODOWN()` instead of `MACRO()` to easily make a keydown macro (`CM_*` works here too)
+For the full Quantum feature list, see [the parent README.md](/README.md).
 
-### Some notes on usage:
+## Building
 
-- The `KEYMAP()` macro is unable to be used due to the bitwise modifications that take place - refer to extended_keymap_jack.c to see how to set things up with the `KC_` prefix
-- Keep an eye on the Makefile - this needs to include the correct files to work
-- Don't forget to use `const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {` instead of the 8bit equivilent
-
-## Build
-
-Follow [this guide](http://deskthority.net/workshop-f7/how-to-build-your-very-own-keyboard-firmware-t7177.html) to setup your development environment before anything else. Abbreviated instructions are provide at the [bottom of this document](https://github.com/rswiernik/tmk_keyboard/tree/rswiernik_dev/keyboard/planck#environment-setup)
-
-Download the whole firmware [here](https://github.com/jackhumbert/tmk_keyboard/archive/master.zip) and navigate to the keyboard/planck folder. Once your dev env is setup, you'll be able to type `make` to generate your .hex that you can load with the Teensy app onto your Planck (once you've hit reset/shorted GND & RST). 
+Download or clone the whole firmware and navigate to the keyboard/preonic folder. Once your dev env is setup, you'll be able to type `make` to generate your .hex - you can then use `make dfu` to program your PCB once you hit the reset button. 
 
 Depending on which keymap you would like to use, you will have to compile slightly differently.
 
-####Default
-To build with the default keymap, simply move to the tmk\_keyboard/keyboard/planck/ and run `make` as follows:
-```
-$ make
-```
-
-## Keymap
-Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create file named `keymap_<name>.c` and see keymap document (you can find in top README.md) and existent keymap files.
-    
-####**Extended Keymaps**
+### Default
+To build with the default keymap, simply run `make`.
 
-To build the firmware binary hex file with an extended keymap just do `make` with `KEYMAP` option like:
-```
-$ make KEYMAP=[common|jack|<name>]
-```
-_The only applicable keymaps will work with this option._ Extended keymaps follow the format **__extended\_keymap\_\<name\>.c__**
+### Other Keymaps
+Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap, create a file in the keymaps folder named `<name>.c` and see keymap document (you can find in top README.md) and existent keymap files.
 
-####**Common Keymaps**
-
-Building with a common keymap is as simple as adding the COMMON option. Note that only 
+To build the firmware binary hex file with a keymap just do `make` with `KEYMAP` option like:
 ```
-$ make KEYMAP=[common|jack|<name>] COMMON=true
+$ make KEYMAP=[default|jack|<name>]
 ```
-_The only applicable keymaps will work with this option._ Common keymaps follow the format **__keymap\_\<name\>.c__**
-
-## Notable TMK forks (which some of the keymap files are from)
-- [Shane's Fork](https://github.com/shanecelis/tmk_keyboard/tree/master/keyboard/planck)
-- [Pierre's Fork](https://github.com/pcarrier/tmk_keyboard/blob/pcarrier/planck/keyboard/gh60/keymap_planck.c)
-- [Nathan's Fork](https://github.com/nathanrosspowell/tmk_keyboard/tree/planck-jack/keyboard/planck)
-- [Matthew's Fork](https://github.com/pepers/tmk_keyboard/tree/master/keyboard/planck_grid)
+Keymaps follow the format **__\<name\>.c__** and are stored in the `keymaps` folder.
diff --git a/keyboard/preonic/__avr_gdbinit b/keyboard/preonic/__avr_gdbinit
deleted file mode 100644 (file)
index afc51e6..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-define reset
-SIGNAL SIGHUP
-end
-file planck_lufa.elf
-target remote localhost:4242
-break main
diff --git a/keyboard/preonic/analog.c b/keyboard/preonic/analog.c
deleted file mode 100644 (file)
index 49b84ee..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-// Simple analog to digitial conversion
-
-#include <avr/io.h>
-#include <avr/pgmspace.h>
-#include <stdint.h>
-#include "analog.h"
-
-
-static uint8_t aref = (1<<REFS0); // default to AREF = Vcc
-
-
-void analogReference(uint8_t mode)
-{
-       aref = mode & 0xC0;
-}
-
-
-// Arduino compatible pin input
-int16_t analogRead(uint8_t pin)
-{
-#if defined(__AVR_ATmega32U4__)
-       static const uint8_t PROGMEM pin_to_mux[] = {
-               0x00, 0x01, 0x04, 0x05, 0x06, 0x07,
-               0x25, 0x24, 0x23, 0x22, 0x21, 0x20};
-       if (pin >= 12) return 0;
-       return adc_read(pgm_read_byte(pin_to_mux + pin));
-#elif defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB1286__)
-       if (pin >= 8) return 0;
-       return adc_read(pin);
-#else
-       return 0;
-#endif
-}
-
-// Mux input
-int16_t adc_read(uint8_t mux)
-{
-#if defined(__AVR_AT90USB162__)
-       return 0;
-#else
-       uint8_t low;
-
-       ADCSRA = (1<<ADEN) | ADC_PRESCALER;             // enable ADC
-       ADCSRB = (1<<ADHSM) | (mux & 0x20);             // high speed mode
-       ADMUX = aref | (mux & 0x1F);                    // configure mux input
-       ADCSRA = (1<<ADEN) | ADC_PRESCALER | (1<<ADSC); // start the conversion
-       while (ADCSRA & (1<<ADSC)) ;                    // wait for result
-       low = ADCL;                                     // must read LSB first
-       return (ADCH << 8) | low;                       // must read MSB only once!
-#endif
-}
-
-
diff --git a/keyboard/preonic/analog.h b/keyboard/preonic/analog.h
deleted file mode 100644 (file)
index 9b95a93..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-#ifndef _analog_h_included__
-#define _analog_h_included__
-
-#include <stdint.h>
-
-void analogReference(uint8_t mode);
-int16_t analogRead(uint8_t pin);
-int16_t adc_read(uint8_t mux);
-
-#define ADC_REF_POWER     (1<<REFS0)
-#define ADC_REF_INTERNAL  ((1<<REFS1) | (1<<REFS0))
-#define ADC_REF_EXTERNAL  (0)
-
-// These prescaler values are for high speed mode, ADHSM = 1
-#if F_CPU == 16000000L
-#define ADC_PRESCALER ((1<<ADPS2) | (1<<ADPS1))
-#elif F_CPU == 8000000L
-#define ADC_PRESCALER ((1<<ADPS2) | (1<<ADPS0))
-#elif F_CPU == 4000000L
-#define ADC_PRESCALER ((1<<ADPS2))
-#elif F_CPU == 2000000L
-#define ADC_PRESCALER ((1<<ADPS1) | (1<<ADPS0))
-#elif F_CPU == 1000000L
-#define ADC_PRESCALER ((1<<ADPS1))
-#else
-#define ADC_PRESCALER ((1<<ADPS0))
-#endif
-
-// some avr-libc versions do not properly define ADHSM
-#if defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB1286__)
-#if !defined(ADHSM)
-#define ADHSM (7)
-#endif
-#endif
-
-#endif
diff --git a/keyboard/preonic/beeps.c b/keyboard/preonic/beeps.c
deleted file mode 100644 (file)
index 8ffd70f..0000000
+++ /dev/null
@@ -1,246 +0,0 @@
-#include "beeps.h"
-#include <math.h>
-#include <avr/pgmspace.h>
-#include <avr/interrupt.h>
-#include <avr/io.h>
-
-#define PI 3.14159265
-
-void delay_us(int count) {
-  while(count--) {
-    _delay_us(1);
-  }
-}
-
-int voices = 0;
-double frequency = 0;
-int volume = 0;
-int position = 0;
-
-double frequencies[8] = {0, 0, 0, 0, 0, 0, 0, 0};
-int volumes[8] = {0, 0, 0, 0, 0, 0, 0, 0};
-bool sliding = false;
-#define RANGE 1000
-volatile int i=0; //elements of the wave
-
-
-void beeps() {
-    play_notes();
-}
-
-void send_freq(double freq, int vol) {
-    int duty = (((double)F_CPU) / freq);
-    ICR3 = duty; // Set max to the period
-    OCR3A = duty >> (0x10 - vol); // Set compare to half the period
-}
-
-void stop_all_notes() {
-    voices = 0;
-    TCCR3A = 0;
-    TCCR3B = 0;
-    frequency = 0;
-    volume = 0;
-
-    for (int i = 0; i < 8; i++) {
-        frequencies[i] = 0;
-        volumes[i] = 0;
-    }
-}
-
-void stop_note(double freq) {
-    for (int i = 7; i >= 0; i--) {
-        if (frequencies[i] == freq) {
-            frequencies[i] = 0;
-            volumes[i] = 0;
-            for (int j = i; (j < 7); j++) {
-                frequencies[j] = frequencies[j+1];
-                frequencies[j+1] = 0;
-                volumes[j] = volumes[j+1];
-                volumes[j+1] = 0;
-            }
-        }
-    }
-    voices--;
-    if (voices < 0)
-        voices = 0;
-    if (voices == 0) {
-        TCCR3A = 0;
-        TCCR3B = 0;
-        frequency = 0;
-        volume = 0;
-    } else {
-        double freq = frequencies[voices - 1];
-        int vol = volumes[voices - 1];
-        if (frequency < freq) {
-            sliding = true;
-            for (double f = frequency; f <= freq; f += ((freq - frequency) / 500.0)) {
-                send_freq(f, vol);
-            }
-            sliding = false;
-        } else if (frequency > freq) {
-            sliding = true;
-            for (double f = frequency; f >= freq; f -= ((frequency - freq) / 500.0)) {
-                send_freq(f, vol);
-            }
-            sliding = false;
-        }
-        send_freq(freq, vol);
-        frequency = freq;
-        volume = vol;
-    }
-}
-
-void init_notes() {
-    // TCCR1A = (1 << COM1A1) | (0 << COM1A0) | (1 << WGM11) | (1 << WGM10);
-    // TCCR1B = (1 << COM1B1) | (0 << COM1A0) | (1 << WGM13) | (1 << WGM12) | (0 << CS12) | (0 << CS11) | (1 << CS10);
-
-    // DDRC |= (1<<6); 
-
-    // TCCR3A = (1 << COM3A1) | (0 << COM3A0) | (1 << WGM31) | (0 << WGM30);
-    // TCCR3B = (1 << WGM33) | (1 << WGM32) | (0 << CS32) | (0 << CS31) | (1 << CS30);
-
-    // ICR3 = 0xFFFF; 
-    // OCR3A = (int)((float)wave[i]*ICR3/RANGE); //go to next array element
-
-
-    // cli();
-
-    // /* Enable interrupt on timer2 == 127, with clk/8 prescaler. At 16MHz,
-    //    this gives a timer interrupt at 15625Hz. */
-    // TIMSK3 = (1 << OCIE3A);
-
-    // /* clear/reset timer on match */
-    // // TCCR3A = 1<<WGM31 | 0<<WGM30;  CTC mode, reset on match 
-    // // TCCR3B = 0<<CS32 | 1<<CS31 | 0<<CS30; /* clk, /8 prescaler */
-
-    // TCCR3A = (1 << COM3A1) | (0 << COM3A0) | (1 << WGM31) | (0 << WGM30);
-    // TCCR3B = (0 << WGM33) | (0 << WGM32) | (0 << CS32) | (0 << CS31) | (1 << CS30);
-
-
-    // TCCR1A = (1 << COM1A1) | (0 << COM1A0) | (1 << WGM11) | (0 << WGM10);
-    // TCCR1B = (1 << WGM12) | (0 << CS12) | (0 << CS11) | (1 << CS10);
-    // // SPCR = 0x50;
-    // // SPSR = 0x01;
-    // DDRC |= (1<<6);
-    // // ICR3 = 0xFFFF; 
-    // // OCR3A=80;
-    // PORTC |= (1<<6);
-
-    // sei();
-}
-
-// #define highByte(c) ((c >> 8) & 0x00FF)
-// #define lowByte(c) (c & 0x00FF)
-
-ISR(TIMER3_COMPA_vect) {
-
-    if (ICR3 > 0 && !sliding) {
-        switch (position) {
-            case 0: {
-                int duty = (((double)F_CPU) / (frequency));
-                ICR3 = duty; // Set max to the period
-                OCR3A = duty >> 1; // Set compare to half the period
-                break;
-            }
-            case 1: {
-                int duty = (((double)F_CPU) / (frequency*2));
-                ICR3 = duty; // Set max to the period
-                OCR3A = duty >> 1; // Set compare to half the period
-                break;
-            }
-            case 2: {
-                int duty = (((double)F_CPU) / (frequency*3));
-                ICR3 = duty; // Set max to the period
-                OCR3A = duty >> 1; // Set compare to half the period
-                break;
-            }
-        }
-        position = (position + 1) % 3;
-    }
-//     /* OCR2A has been cleared, per TCCR2A above */
-//     // OCR3A = 127;
-
-//     // pos1 += incr1;
-//     // pos2 += incr2;
-//     // pos3 += incr3;
-
-//     // sample = sinewave[highByte(pos1)] + sinewave[highByte(pos2)] + sinewave[highByte(pos3)];
-
-//     // OCR3A = sample;
-
-
-//     OCR3A=pgm_read_byte(&sinewave[pos1]);
-//     pos1++;
-//     // PORTC &= ~(1<<6);
-
-//     /* buffered, 1x gain, active mode */
-//     // SPDR = highByte(sample) | 0x70;
-//     // while (!(SPSR & (1<<SPIF)));
-
-//     // SPDR = lowByte(sample);
-//     // while (!(SPSR & (1<<SPIF)));
-
-//     // PORTC |= (1<<6);
-}
-
-void play_note(double freq, int vol) {
-
-    if (freq > 0) {
-        DDRC |= (1<<6); 
-
-        TCCR3A = (1 << COM3A1) | (0 << COM3A0) | (1 << WGM31) | (0 << WGM30);
-        TCCR3B = (1 << WGM33) | (1 << WGM32) | (0 << CS32) | (1 << CS31) | (0 << CS30);
-
-        if (frequency != 0) {
-            if (frequency < freq) {
-                for (double f = frequency; f <= freq; f += ((freq - frequency) / 500.0)) {
-                    send_freq(f, vol);
-                }
-            } else if (frequency > freq) {
-                for (double f = frequency; f >= freq; f -= ((frequency - freq) / 500.0)) {
-                    send_freq(f, vol);
-                }
-            }
-        }
-        send_freq(freq, vol);
-        frequency = freq;
-        volume = vol;
-
-        frequencies[voices] = frequency;
-        volumes[voices] = volume;
-        voices++;
-    }
-    // ICR3 = 0xFFFF;
-    // for (int i = 0; i < 10000; i++) {
-    //     OCR3A = round((sin(i*freq)*.5)+.5)*0xFFFF;
-    //     // _delay_us(50);
-    // }
-
-    // TCCR3A = 0;
-    // TCCR3B = 0;
-}
-
-// void note(int x, float length) {
-//     DDRC |= (1<<6);
-//  int t = (int)(440*pow(2,-x/12.0)); // starting note
-//     for (int y = 0; y < length*1000/t; y++) { // note length
-//         PORTC |= (1<<6);
-//         delay_us(t);
-//         PORTC &= ~(1<<6);
-//         delay_us(t);
-//     }
-//  PORTC &= ~(1<<6);
-// }
-
-// void true_note(float x, float y, float length) {
-//  for (uint32_t i = 0; i < length * 50; i++) {
-//      uint32_t v = (uint32_t) (round(sin(PI*2*i*640000*pow(2, x/12.0))*.5+1 + sin(PI*2*i*640000*pow(2, y/12.0))*.5+1) / 2 * pow(2, 8)); 
-//      for (int u = 0; u < 8; u++) {
-//          if (v & (1 << u) && !(PORTC&(1<<6)))
-//              PORTC |= (1<<6);
-//          else if (PORTC&(1<<6))
-//              PORTC &= ~(1<<6);
-//      }
-//  }
-//  PORTC &= ~(1<<6);
-// }
\ No newline at end of file
diff --git a/keyboard/preonic/beeps.h b/keyboard/preonic/beeps.h
deleted file mode 100644 (file)
index 378983c..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-#include <stdint.h>
-#include <stdbool.h>
-#include <avr/io.h>
-#include <util/delay.h>
-
-void note(int x, float length);
-void beeps();
-void true_note(float x, float y, float length);
-void play_note(double freq, int vol);
-void stop_note(double freq);
-void stop_all_notes();
-void init_notes();
\ No newline at end of file
index cad269c9d4c91fa747e55afdc926a68d2d3eb6e2..5528667fa726187d1743571b4b343476a71cfcb7 100644 (file)
@@ -18,11 +18,11 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #ifndef CONFIG_H
 #define CONFIG_H
 
-#include "config_definitions.h"
+#include "config_common.h"
 
 /* USB Device descriptor parameter */
 #define VENDOR_ID       0xFEED
-#define PRODUCT_ID      0x6062
+#define PRODUCT_ID      0x6061
 #define DEVICE_VER      0x0001
 #define MANUFACTURER    Ortholinear Keyboards
 #define PRODUCT         The Preonic Keyboard
@@ -34,7 +34,10 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 /* Planck PCB default pin-out */
 #define COLS (int []){ F1, F0, B0, C7, F4, F5, F6, F7, D4, D6, B4, D7 }
-#define ROWS (int []){ D1, D0, D5, B5, B6 }
+#define ROWS (int []){ D2, D5, B5, B6, D3 }
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
 
 /* define if matrix has ghost */
 //#define MATRIX_HAS_GHOST
@@ -55,6 +58,15 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
     keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
 )
 
+/* ws2812 RGB LED */
+#define ws2812_PORTREG  PORTD
+#define ws2812_DDRREG   DDRD
+#define ws2812_pin PD1
+#define RGBLED_NUM 28     // Number of LEDs
+#define RGBLIGHT_HUE_STEP 10
+#define RGBLIGHT_SAT_STEP 17
+#define RGBLIGHT_VAL_STEP 17
+
 /*
  * Feature disable options
  *  These options are also useful to firmware size reduction.
diff --git a/keyboard/preonic/config_definitions.h b/keyboard/preonic/config_definitions.h
deleted file mode 100644 (file)
index fd138b8..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-#ifndef CONFIG_DEFINITIONS_H
-#define CONFIG_DEFINITIONS_H
-
-#define B0 0x20
-#define B1 0x21
-#define B2 0x22
-#define B3 0x23
-#define B4 0x24
-#define B5 0x25
-#define B6 0x26
-#define B7 0x27
-#define C0 0x30
-#define C1 0x31
-#define C2 0x32
-#define C3 0x33
-#define C4 0x34
-#define C5 0x35
-#define C6 0x36
-#define C7 0x37
-#define D0 0x40
-#define D1 0x41
-#define D2 0x42
-#define D3 0x43
-#define D4 0x44
-#define D5 0x45
-#define D6 0x46
-#define D7 0x47
-#define E0 0x50
-#define E1 0x51
-#define E2 0x52
-#define E3 0x53
-#define E4 0x54
-#define E5 0x55
-#define E6 0x56
-#define E7 0x57
-#define F0 0x60
-#define F1 0x61
-#define F2 0x62
-#define F3 0x63
-#define F4 0x64
-#define F5 0x65
-#define F6 0x66
-#define F7 0x67
-
-
-
-
-
-#endif
-
diff --git a/keyboard/preonic/extended_keymap_common.c b/keyboard/preonic/extended_keymap_common.c
deleted file mode 100644 (file)
index 4fa80de..0000000
+++ /dev/null
@@ -1,216 +0,0 @@
-/*
-Copyright 2012,2013 Jun Wako <wakojun@gmail.com>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "extended_keymap_common.h"
-#include "report.h"
-#include "keycode.h"
-#include "action_layer.h"
-#include "action.h"
-#include "action_macro.h"
-#include "debug.h"
-#include "backlight.h"
-#include "keymap_midi.h"
-#include <lufa.h>
-
-static action_t keycode_to_action(uint16_t keycode);
-
-/* converts key to action */
-action_t action_for_key(uint8_t layer, keypos_t key)
-{
-       // 16bit keycodes - important
-    uint16_t keycode = keymap_key_to_keycode(layer, key);
-
-    if (keycode >= 0x0100 && keycode < 0x2000) {
-       // Has a modifier
-       action_t action;
-       // Split it up
-       action.code = ACTION_MODS_KEY(keycode >> 8, keycode & 0xFF);
-       return action;
-       } else if (keycode >= 0x2000 && keycode < 0x3000) {
-               // Is a shortcut for function layer, pull last 12bits
-        return keymap_func_to_action(keycode & 0xFFF);
-       } else if (keycode >= 0x3000 && keycode < 0x4000) {
-       action_t action;
-       action.code = ACTION_MACRO(keycode & 0xFF);
-       return action;
-       } else if (keycode >= BL_0 & keycode <= BL_15) {
-        action_t action;
-        action.code = ACTION_BACKLIGHT_LEVEL(keycode & 0x000F);
-        return action;
-    } else if (keycode == BL_DEC) {
-        action_t action;
-        action.code = ACTION_BACKLIGHT_DECREASE();
-        return action;
-    } else if (keycode == BL_INC) {
-        action_t action;
-        action.code = ACTION_BACKLIGHT_INCREASE();
-        return action;
-    } else if (keycode == BL_TOGG) {
-        action_t action;
-        action.code = ACTION_BACKLIGHT_TOGGLE();
-        return action;
-    } else if (keycode == BL_STEP) {
-        action_t action;
-        action.code = ACTION_BACKLIGHT_STEP();
-        return action;
-    } else if (keycode == RESET) {
-        bootloader_jump();
-        return;
-    } else if (keycode == DEBUG) {
-        print("\nDEBUG: enabled.\n");
-        debug_enable = true;
-        return;
-    } else if (keycode >= 0x6000 && keycode < 0x7000) {
-        action_t action;
-        action.code =  ACTION_FUNCTION_OPT(keycode & 0xFF, (keycode & 0x0F00) >> 8);
-        return action;
-    }
-
-    switch (keycode) {
-        case KC_FN0 ... KC_FN31:
-            return keymap_fn_to_action(keycode);
-#ifdef BOOTMAGIC_ENABLE
-        case KC_CAPSLOCK:
-        case KC_LOCKING_CAPS:
-            if (keymap_config.swap_control_capslock || keymap_config.capslock_to_control) {
-                return keycode_to_action(KC_LCTL);
-            }
-            return keycode_to_action(keycode);
-        case KC_LCTL:
-            if (keymap_config.swap_control_capslock) {
-                return keycode_to_action(KC_CAPSLOCK);
-            }
-            return keycode_to_action(KC_LCTL);
-        case KC_LALT:
-            if (keymap_config.swap_lalt_lgui) {
-                if (keymap_config.no_gui) {
-                    return keycode_to_action(ACTION_NO);
-                }
-                return keycode_to_action(KC_LGUI);
-            }
-            return keycode_to_action(KC_LALT);
-        case KC_LGUI:
-            if (keymap_config.swap_lalt_lgui) {
-                return keycode_to_action(KC_LALT);
-            }
-            if (keymap_config.no_gui) {
-                return keycode_to_action(ACTION_NO);
-            }
-            return keycode_to_action(KC_LGUI);
-        case KC_RALT:
-            if (keymap_config.swap_ralt_rgui) {
-                if (keymap_config.no_gui) {
-                    return keycode_to_action(ACTION_NO);
-                }
-                return keycode_to_action(KC_RGUI);
-            }
-            return keycode_to_action(KC_RALT);
-        case KC_RGUI:
-            if (keymap_config.swap_ralt_rgui) {
-                return keycode_to_action(KC_RALT);
-            }
-            if (keymap_config.no_gui) {
-                return keycode_to_action(ACTION_NO);
-            }
-            return keycode_to_action(KC_RGUI);
-        case KC_GRAVE:
-            if (keymap_config.swap_grave_esc) {
-                return keycode_to_action(KC_ESC);
-            }
-            return keycode_to_action(KC_GRAVE);
-        case KC_ESC:
-            if (keymap_config.swap_grave_esc) {
-                return keycode_to_action(KC_GRAVE);
-            }
-            return keycode_to_action(KC_ESC);
-        case KC_BSLASH:
-            if (keymap_config.swap_backslash_backspace) {
-                return keycode_to_action(KC_BSPACE);
-            }
-            return keycode_to_action(KC_BSLASH);
-        case KC_BSPACE:
-            if (keymap_config.swap_backslash_backspace) {
-                return keycode_to_action(KC_BSLASH);
-            }
-            return keycode_to_action(KC_BSPACE);
-#endif
-        default:
-            return keycode_to_action(keycode);
-    }
-}
-
-
-/* Macro */
-__attribute__ ((weak))
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-    return MACRO_NONE;
-}
-
-/* Function */
-__attribute__ ((weak))
-void action_function(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-}
-
-/* translates keycode to action */
-static action_t keycode_to_action(uint16_t keycode)
-{
-    action_t action;
-    switch (keycode) {
-        case KC_A ... KC_EXSEL:
-        case KC_LCTRL ... KC_RGUI:
-            action.code = ACTION_KEY(keycode);
-            break;
-        case KC_SYSTEM_POWER ... KC_SYSTEM_WAKE:
-            action.code = ACTION_USAGE_SYSTEM(KEYCODE2SYSTEM(keycode));
-            break;
-        case KC_AUDIO_MUTE ... KC_WWW_FAVORITES:
-            action.code = ACTION_USAGE_CONSUMER(KEYCODE2CONSUMER(keycode));
-            break;
-        case KC_MS_UP ... KC_MS_ACCEL2:
-            action.code = ACTION_MOUSEKEY(keycode);
-            break;
-        case KC_TRNS:
-            action.code = ACTION_TRANSPARENT;
-            break;
-        default:
-            action.code = ACTION_NO;
-            break;
-    }
-    return action;
-}
-
-
-/* translates key to keycode */
-uint16_t keymap_key_to_keycode(uint8_t layer, keypos_t key)
-{
-       // Read entire word (16bits)
-    return pgm_read_word(&keymaps[(layer)][(key.row)][(key.col)]);
-}
-
-/* translates Fn keycode to action */
-action_t keymap_fn_to_action(uint16_t keycode)
-{
-    return (action_t){ .code = pgm_read_word(&fn_actions[FN_INDEX(keycode)]) };
-}
-
-action_t keymap_func_to_action(uint16_t keycode)
-{
-       // For FUNC without 8bit limit
-    return (action_t){ .code = pgm_read_word(&fn_actions[(int)keycode]) };
-}
diff --git a/keyboard/preonic/extended_keymap_common.h b/keyboard/preonic/extended_keymap_common.h
deleted file mode 100644 (file)
index 7ccfa1b..0000000
+++ /dev/null
@@ -1,181 +0,0 @@
-/*
-Copyright 2012,2013 Jun Wako <wakojun@gmail.com>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef KEYMAP_H
-#define KEYMAP_H
-
-#include <stdint.h>
-#include <stdbool.h>
-#include "action.h"
-#include <avr/pgmspace.h>
-#include "keycode.h"
-#include "keymap.h"
-#include "action_macro.h"
-#include "report.h"
-#include "host.h"
-// #include "print.h"
-#include "debug.h"
-
-#ifdef BOOTMAGIC_ENABLE
-/* NOTE: Not portable. Bit field order depends on implementation */
-typedef union {
-    uint16_t raw;
-    struct {
-        bool swap_control_capslock:1;
-        bool capslock_to_control:1;
-        bool swap_lalt_lgui:1;
-        bool swap_ralt_rgui:1;
-        bool no_gui:1;
-        bool swap_grave_esc:1;
-        bool swap_backslash_backspace:1;
-        bool nkro:1;
-    };
-} keymap_config_t;
-keymap_config_t keymap_config;
-#endif
-
-
-/* translates key to keycode */
-uint16_t keymap_key_to_keycode(uint8_t layer, keypos_t key);
-
-/* translates Fn keycode to action */
-action_t keymap_fn_to_action(uint16_t keycode);
-
-/* translates Fn keycode to action */
-action_t keymap_func_to_action(uint16_t keycode);
-
-extern const uint16_t keymaps[][MATRIX_ROWS][MATRIX_COLS];
-extern const uint16_t fn_actions[];
-
-// Ability to use mods in layouts
-#define LCTL(kc) kc | 0x0100
-#define LSFT(kc) kc | 0x0200
-#define LALT(kc) kc | 0x0400
-#define LGUI(kc) kc | 0x0800
-#define RCTL(kc) kc | 0x1100
-#define RSFT(kc) kc | 0x1200
-#define RALT(kc) kc | 0x1400
-#define RGUI(kc) kc | 0x1800
-
-// Alias for function layers than expand past FN31
-#define FUNC(kc) kc | 0x2000
-
-// Aliases
-#define S(kc) LSFT(kc)
-#define F(kc) FUNC(kc)
-
-// For software implementation of colemak
-#define CM_Q    KC_Q
-#define CM_W    KC_W
-#define CM_F    KC_E
-#define CM_P    KC_R
-#define CM_G    KC_T
-#define CM_J    KC_Y
-#define CM_L    KC_U
-#define CM_U    KC_I
-#define CM_Y    KC_O
-#define CM_SCLN KC_P
-
-#define CM_A    KC_A
-#define CM_R    KC_S
-#define CM_S    KC_D
-#define CM_T    KC_F
-#define CM_D    KC_G
-#define CM_H    KC_H
-#define CM_N    KC_J
-#define CM_E    KC_K
-#define CM_I    KC_L
-#define CM_O    KC_SCLN
-
-#define CM_Z    KC_Z
-#define CM_X    KC_X
-#define CM_C    KC_C
-#define CM_V    KC_V
-#define CM_B    KC_B
-#define CM_K    KC_N
-#define CM_M    KC_M
-#define CM_COMM KC_COMM
-#define CM_DOT  KC_DOT
-#define CM_SLSH KC_SLSH
-
-// Make it easy to support these in macros
-#define KC_CM_Q    CM_Q    
-#define KC_CM_W    CM_W    
-#define KC_CM_F    CM_F    
-#define KC_CM_P    CM_P    
-#define KC_CM_G    CM_G    
-#define KC_CM_J    CM_J    
-#define KC_CM_L    CM_L    
-#define KC_CM_U    CM_U    
-#define KC_CM_Y    CM_Y    
-#define KC_CM_SCLN CM_SCLN 
-
-#define KC_CM_A    CM_A    
-#define KC_CM_R    CM_R    
-#define KC_CM_S    CM_S    
-#define KC_CM_T    CM_T    
-#define KC_CM_D    CM_D    
-#define KC_CM_H    CM_H    
-#define KC_CM_N    CM_N    
-#define KC_CM_E    CM_E    
-#define KC_CM_I    CM_I    
-#define KC_CM_O    CM_O    
-
-#define KC_CM_Z    CM_Z    
-#define KC_CM_X    CM_X    
-#define KC_CM_C    CM_C    
-#define KC_CM_V    CM_V    
-#define KC_CM_B    CM_B    
-#define KC_CM_K    CM_K    
-#define KC_CM_M    CM_M    
-#define KC_CM_COMM CM_COMM 
-#define KC_CM_DOT  CM_DOT  
-#define KC_CM_SLSH CM_SLSH 
-
-#define M(kc) kc | 0x3000
-
-#define MACRODOWN(...) (record->event.pressed ? MACRO(__VA_ARGS__) : MACRO_NONE)
-
-#define BL_ON 0x4009
-#define BL_OFF 0x4000
-#define BL_0 0x4000
-#define BL_1 0x4001
-#define BL_2 0x4002
-#define BL_3 0x4003
-#define BL_4 0x4004
-#define BL_5 0x4005
-#define BL_6 0x4006
-#define BL_7 0x4007
-#define BL_8 0x4008
-#define BL_9 0x4009
-#define BL_10 0x400A
-#define BL_11 0x400B
-#define BL_12 0x400C
-#define BL_13 0x400D
-#define BL_14 0x400E
-#define BL_15 0x400F
-#define BL_DEC 0x4010
-#define BL_INC 0x4011
-#define BL_TOGG 0x4012
-#define BL_STEP 0x4013
-
-#define RESET 0x5000
-#define DEBUG 0x5001
-
-#define MIDI(n) n | 0x6000
-
-#endif
diff --git a/keyboard/preonic/extended_keymaps/extended_keymap_default.c b/keyboard/preonic/extended_keymaps/extended_keymap_default.c
deleted file mode 100644 (file)
index b52f60f..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-#include "extended_keymap_common.h"
-#include "backlight.h"
-#include "lufa.h"
-#include "debug.h"
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-[0] = { /* Qwerty */
-  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,   KC_DEL},
-  {KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,   KC_BSPC},
-  {KC_ESC,  KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN,  KC_QUOT},
-  {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_ENT},
-  {M(0), KC_LCTL, KC_LALT, KC_LGUI, FUNC(2),    KC_SPC,   KC_SPC,    FUNC(1),   KC_LEFT, KC_DOWN, KC_UP,  KC_RGHT}
-                                                // Space is repeated to accommadate for both spacebar wiring positions
-},
-[1] = { /* Colemak */
-  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,   KC_DEL},
-  {KC_TAB,  KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_BSPC},
-  {KC_ESC,  KC_A,    KC_R,    KC_S,    KC_T,    KC_D,    KC_H,    KC_N,    KC_E,    KC_I,    KC_O,     KC_QUOT},
-  {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_ENT},
-  {KC_FN3, KC_LCTL, KC_LALT, KC_LGUI, FUNC(2),    KC_SPC,   KC_SPC,    FUNC(1),   KC_LEFT, KC_DOWN, KC_UP,  KC_RGHT}
-},
-[2] = { /* RAISE */
-  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,   KC_DEL},
-  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC},
-  {KC_TRNS, FUNC(3), FUNC(4), RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS},
-  {KC_TRNS, KC_F11,  KC_F12,  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,  FUNC(1),   KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
-},
-[3] = { /* LOWER */
-  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,   KC_DEL},
-  {S(KC_GRV),  S(KC_1),    S(KC_2),    S(KC_3),    S(KC_4),    S(KC_5),    S(KC_6),    S(KC_7),    S(KC_8),    S(KC_9),    S(KC_0), KC_BSPC},
-  {KC_TRNS, FUNC(3), FUNC(4), RESET, KC_TRNS, KC_TRNS, KC_TRNS, S(KC_MINS), S(KC_EQL),  S(KC_LBRC), S(KC_RBRC), S(KC_BSLS)},
-  {KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_TRNS},
-  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, FUNC(2),   KC_TRNS,   KC_TRNS,   KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
-},
-[4] = { /* TENKEY */
-  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,   KC_DEL},
-  {KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_KP_7,    KC_KP_8,    KC_KP_9,    KC_P,   KC_BSPC},
-  {KC_ESC,  KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_KP_4,    KC_KP_5,    KC_KP_6,    KC_SCLN,  KC_QUOT},
-  {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_KP_1,    KC_KP_2,    KC_KP_3,  KC_SLSH, KC_ENT},
-  {KC_TRNS, KC_LCTL, KC_LALT, KC_LGUI, KC_TRNS,    KC_SPC,   KC_SPC, KC_KP_0,   KC_LEFT, KC_DOWN, KC_UP,  KC_RGHT}
-}
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_LAYER_MOMENTARY(2),  // to RAISE
-    [2] = ACTION_LAYER_MOMENTARY(3),  // to LOWER
-
-    [3] = ACTION_DEFAULT_LAYER_SET(0),
-    [4] = ACTION_DEFAULT_LAYER_SET(1),
-
-};
-
-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);
-          midi_send_noteon(&midi_device, 1, 64, 127);
-          backlight_step();
-        } else {
-          unregister_code(KC_RSFT);
-          midi_send_noteoff(&midi_device, 1, 64, 127);
-        }
-        break;
-      } 
-    return MACRO_NONE;
-};
diff --git a/keyboard/preonic/extended_keymaps/extended_keymap_lock.c b/keyboard/preonic/extended_keymaps/extended_keymap_lock.c
deleted file mode 100644 (file)
index ec7bc77..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-#include "extended_keymap_common.h"
-#include "backlight.h"
-#include "action_layer.h"
-#include "keymap_midi.h"
-#include "beeps.h"
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-[0] = { /* Qwerty */
-  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,   KC_BSPC},
-  {KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,   KC_BSPC},
-  {KC_ESC,  KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN,  KC_QUOT},
-  {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_ENT},
-  {M(0), KC_LCTL, KC_LALT, KC_LGUI, FUNC(2),    KC_SPC,   KC_SPC,    FUNC(1),   KC_LEFT, KC_DOWN, KC_UP,  KC_RGHT}
-                                                // Space is repeated to accommadate for both spacebar wiring positions
-},
-[1] = { /* Colemak */
-  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,   KC_BSPC},
-  {KC_TAB,  KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_BSPC},
-  {KC_ESC,  KC_A,    KC_R,    KC_S,    KC_T,    KC_D,    KC_H,    KC_N,    KC_E,    KC_I,    KC_O,     KC_QUOT},
-  {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_ENT},
-  {KC_FN3, KC_LCTL, KC_LALT, KC_LGUI, FUNC(2),    KC_SPC,   KC_SPC,    FUNC(1),   KC_LEFT, KC_DOWN, KC_UP,  KC_RGHT}
-},
-[2] = { /* RAISE */
-  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,   KC_BSPC},
-  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC},
-  {KC_TRNS, FUNC(3), FUNC(4), RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS},
-  {KC_TRNS, KC_F11,  KC_F12,  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,  FUNC(1),   KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
-},
-[3] = { /* LOWER */
-  {KC_GRV,  S(KC_1),    S(KC_2),    S(KC_3),    S(KC_4),    S(KC_5),    S(KC_6),    S(KC_7),    S(KC_8),    S(KC_9),    S(KC_0),   KC_BSPC},
-  {S(KC_GRV),  S(KC_1),    S(KC_2),    S(KC_3),    S(KC_4),    S(KC_5),    S(KC_6),    S(KC_7),    S(KC_8),    S(KC_9),    S(KC_0), KC_BSPC},
-  {KC_TRNS, FUNC(3), FUNC(4), RESET, KC_TRNS, KC_TRNS, KC_TRNS, S(KC_MINS), S(KC_EQL),  S(KC_LBRC), S(KC_RBRC), S(KC_BSLS)},
-  {KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_TRNS},
-  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, FUNC(2),   KC_TRNS,   KC_TRNS,   KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
-},
-[4] = { /* TENKEY */
-  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,   KC_BSPC},
-  {KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_KP_7,    KC_KP_8,    KC_KP_9,    KC_P,   KC_BSPC},
-  {KC_ESC,  KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_KP_4,    KC_KP_5,    KC_KP_6,    KC_SCLN,  KC_QUOT},
-  {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_KP_1,    KC_KP_2,    KC_KP_3,  KC_SLSH, KC_ENT},
-  {KC_TRNS, KC_LCTL, KC_LALT, KC_LGUI, KC_TRNS,    KC_SPC,   KC_SPC, KC_KP_0,   KC_LEFT, KC_DOWN, KC_UP,  KC_RGHT}
-},
-[5] = {
-  { MIDI12 },
-  { MIDI12 },
-  { MIDI12 },
-  { MIDI12 },
-  {M(0), KC_LCTL, KC_LALT, KC_LGUI, FUNC(2),    KC_SPC,   KC_SPC,    FUNC(1),   MIDI, MIDI, MIDI,  MIDI}
-}
-
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_LAYER_MOMENTARY(2),  // to RAISE
-    [2] = ACTION_LAYER_MOMENTARY(3),  // to LOWER
-
-    [3] = ACTION_DEFAULT_LAYER_SET(0),
-    [4] = ACTION_DEFAULT_LAYER_SET(1),
-
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) 
-{
-      switch(id) {
-        case 0:   
-        if (record->event.pressed) {
-          // register_code(KC_RSFT);
-          backlight_set(BACKLIGHT_LEVELS);
-          default_layer_and(0); 
-          default_layer_or((1<<5));
-        } else {
-          // unregister_code(KC_RSFT);
-          backlight_set(0);
-          default_layer_and(0); 
-          default_layer_or(0);
-        }
-        break;
-      } 
-    return MACRO_NONE;
-};
diff --git a/keyboard/preonic/flash-pcb.sh b/keyboard/preonic/flash-pcb.sh
new file mode 100755 (executable)
index 0000000..8b59b83
--- /dev/null
@@ -0,0 +1,3 @@
+dfu-programmer atmega32u4 erase --force
+dfu-programmer atmega32u4 flash preonic_pcb.hex
+dfu-programmer atmega32u4 reset
\ No newline at end of file
diff --git a/keyboard/preonic/keymap_midi.c b/keyboard/preonic/keymap_midi.c
deleted file mode 100644 (file)
index a0fa599..0000000
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
-Copyright 2015 Jack Humbert <jack.humb@gmail.com>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "extended_keymap_common.h"
-#include "keymap_midi.h"
-#include <lufa.h>
-
-uint8_t starting_note = 0x0C;
-int offset = 7;
-
-void action_function(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-    if (id != 0) {
-        if (record->event.pressed) {
-            midi_send_noteon(&midi_device, opt, (id & 0xFF), 127);
-        } else {
-            midi_send_noteoff(&midi_device, opt, (id & 0xFF), 127);
-        }
-    }
-
-    if (record->event.key.col == (MATRIX_COLS - 1) && record->event.key.row == (MATRIX_ROWS - 1)) {
-        if (record->event.pressed) {
-            starting_note++;
-            play_note(((double)261.6)*pow(2.0, -1.0)*pow(2.0,(starting_note + SCALE[0 + offset])/12.0+(MATRIX_ROWS - 1)), 0xC);
-            midi_send_cc(&midi_device, 0, 0x7B, 0);
-            midi_send_cc(&midi_device, 1, 0x7B, 0);
-            midi_send_cc(&midi_device, 2, 0x7B, 0);
-            midi_send_cc(&midi_device, 3, 0x7B, 0);
-            midi_send_cc(&midi_device, 4, 0x7B, 0);
-            return;
-        } else {
-            stop_note(((double)261.6)*pow(2.0, -1.0)*pow(2.0,(starting_note + SCALE[0 + offset])/12.0+(MATRIX_ROWS - 1)));
-            stop_all_notes();
-            return;
-        }
-    }
-    if (record->event.key.col == (MATRIX_COLS - 2) && record->event.key.row == (MATRIX_ROWS - 1)) {
-        if (record->event.pressed) {
-            starting_note--;
-            play_note(((double)261.6)*pow(2.0, -1.0)*pow(2.0,(starting_note + SCALE[0 + offset])/12.0+(MATRIX_ROWS - 1)), 0xC);
-            midi_send_cc(&midi_device, 0, 0x7B, 0);
-            midi_send_cc(&midi_device, 1, 0x7B, 0);
-            midi_send_cc(&midi_device, 2, 0x7B, 0);
-            midi_send_cc(&midi_device, 3, 0x7B, 0);
-            midi_send_cc(&midi_device, 4, 0x7B, 0);
-            return;
-        } else {
-            stop_note(((double)261.6)*pow(2.0, -1.0)*pow(2.0,(starting_note + SCALE[0 + offset])/12.0+(MATRIX_ROWS - 1)));
-            stop_all_notes();
-            return;
-        }
-    }
-
-    if (record->event.key.col == (MATRIX_COLS - 3) && record->event.key.row == (MATRIX_ROWS - 1) && record->event.pressed) {
-        offset++;
-        midi_send_cc(&midi_device, 0, 0x7B, 0);
-        midi_send_cc(&midi_device, 1, 0x7B, 0);
-        midi_send_cc(&midi_device, 2, 0x7B, 0);
-        midi_send_cc(&midi_device, 3, 0x7B, 0);
-        midi_send_cc(&midi_device, 4, 0x7B, 0);
-        stop_all_notes();
-        for (int i = 0; i <= 7; i++) {
-            play_note(((double)261.6)*pow(2.0, -1.0)*pow(2.0,(starting_note + SCALE[i + offset])/12.0+(MATRIX_ROWS - 1)), 0xC);
-            _delay_us(80000);
-            stop_note(((double)261.6)*pow(2.0, -1.0)*pow(2.0,(starting_note + SCALE[i + offset])/12.0+(MATRIX_ROWS - 1)));
-            _delay_us(8000);
-        }
-        return;
-    }
-    if (record->event.key.col == (MATRIX_COLS - 4) && record->event.key.row == (MATRIX_ROWS - 1) && record->event.pressed) {
-        offset--;
-        midi_send_cc(&midi_device, 0, 0x7B, 0);
-        midi_send_cc(&midi_device, 1, 0x7B, 0);
-        midi_send_cc(&midi_device, 2, 0x7B, 0);
-        midi_send_cc(&midi_device, 3, 0x7B, 0);
-        midi_send_cc(&midi_device, 4, 0x7B, 0);
-        stop_all_notes();
-        for (int i = 0; i <= 7; i++) {
-            play_note(((double)261.6)*pow(2.0, -1.0)*pow(2.0,(starting_note + SCALE[i + offset])/12.0+(MATRIX_ROWS - 1)), 0xC);
-            _delay_us(80000);
-            stop_note(((double)261.6)*pow(2.0, -1.0)*pow(2.0,(starting_note + SCALE[i + offset])/12.0+(MATRIX_ROWS - 1)));
-            _delay_us(8000);
-        }
-        return;
-    }
-
-    if (record->event.pressed) {
-        // midi_send_noteon(&midi_device, record->event.key.row, starting_note + SCALE[record->event.key.col], 127);
-        midi_send_noteon(&midi_device, 0, (starting_note + SCALE[record->event.key.col + offset])+12*(MATRIX_ROWS - record->event.key.row), 127);
-        play_note(((double)261.6)*pow(2.0, -1.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row)), 0xF);
-    } else {
-        // midi_send_noteoff(&midi_device, record->event.key.row, starting_note + SCALE[record->event.key.col], 127);
-        midi_send_noteoff(&midi_device, 0, (starting_note + SCALE[record->event.key.col + offset])+12*(MATRIX_ROWS - record->event.key.row), 127);
-        stop_note(((double)261.6)*pow(2.0, -1.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row)));
-    }
-}
\ No newline at end of file
diff --git a/keyboard/preonic/keymap_midi.h b/keyboard/preonic/keymap_midi.h
deleted file mode 100644 (file)
index c5917f8..0000000
+++ /dev/null
@@ -1,220 +0,0 @@
-/*
-Copyright 2015 Jack Humbert <jack.humb@gmail.com>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef KEYMAP_MIDI_H
-#define KEYMAP_MIDI_H
-
-#define MIDI 0x6000
-#define MIDI12 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000
-
-#define CHNL(note, channel) (note + (channel << 8))
-
-#define SCALE (int []){ 0 + (12*0), 2 + (12*0), 4 + (12*0), 5 + (12*0), 7 + (12*0), 9 + (12*0), 11 + (12*0), \
-                                               0 + (12*1), 2 + (12*1), 4 + (12*1), 5 + (12*1), 7 + (12*1), 9 + (12*1), 11 + (12*1), \
-                                               0 + (12*2), 2 + (12*2), 4 + (12*2), 5 + (12*2), 7 + (12*2), 9 + (12*2), 11 + (12*2), \
-                                               0 + (12*3), 2 + (12*3), 4 + (12*3), 5 + (12*3), 7 + (12*3), 9 + (12*3), 11 + (12*3), \
-                                               0 + (12*4), 2 + (12*4), 4 + (12*4), 5 + (12*4), 7 + (12*4), 9 + (12*4), 11 + (12*4), }
-
-#define N_CN1  (0x600C + (12 * -1) + 0 )
-#define N_CN1S (0x600C + (12 * -1) + 1 )
-#define N_DN1F (0x600C + (12 * -1) + 1 )
-#define N_DN1  (0x600C + (12 * -1) + 2 )
-#define N_DN1S (0x600C + (12 * -1) + 3 )
-#define N_EN1F (0x600C + (12 * -1) + 3 )
-#define N_EN1  (0x600C + (12 * -1) + 4 )
-#define N_FN1  (0x600C + (12 * -1) + 5 )
-#define N_FN1S (0x600C + (12 * -1) + 6 )
-#define N_GN1F (0x600C + (12 * -1) + 6 )
-#define N_GN1  (0x600C + (12 * -1) + 7 )
-#define N_GN1S (0x600C + (12 * -1) + 8 )
-#define N_AN1F (0x600C + (12 * -1) + 8 )
-#define N_AN1  (0x600C + (12 * -1) + 9 )
-#define N_AN1S (0x600C + (12 * -1) + 10)
-#define N_BN1F (0x600C + (12 * -1) + 10)
-#define N_BN1  (0x600C + (12 * -1) + 11)
-#define N_C0   (0x600C + (12 *  0) + 0 )
-#define N_C0S  (0x600C + (12 *  0) + 1 )
-#define N_D0F  (0x600C + (12 *  0) + 1 )
-#define N_D0   (0x600C + (12 *  0) + 2 )
-#define N_D0S  (0x600C + (12 *  0) + 3 )
-#define N_E0F  (0x600C + (12 *  0) + 3 )
-#define N_E0   (0x600C + (12 *  0) + 4 )
-#define N_F0   (0x600C + (12 *  0) + 5 )
-#define N_F0S  (0x600C + (12 *  0) + 6 )
-#define N_G0F  (0x600C + (12 *  0) + 6 )
-#define N_G0   (0x600C + (12 *  0) + 7 )
-#define N_G0S  (0x600C + (12 *  0) + 8 )
-#define N_A0F  (0x600C + (12 *  0) + 8 )
-#define N_A0   (0x600C + (12 *  0) + 9 )
-#define N_A0S  (0x600C + (12 *  0) + 10)
-#define N_B0F  (0x600C + (12 *  0) + 10)
-#define N_B0   (0x600C + (12 *  0) + 11)
-#define N_C1   (0x600C + (12 *  1) + 0 )
-#define N_C1S  (0x600C + (12 *  1) + 1 )
-#define N_D1F  (0x600C + (12 *  1) + 1 )
-#define N_D1   (0x600C + (12 *  1) + 2 )
-#define N_D1S  (0x600C + (12 *  1) + 3 )
-#define N_E1F  (0x600C + (12 *  1) + 3 )
-#define N_E1   (0x600C + (12 *  1) + 4 )
-#define N_F1   (0x600C + (12 *  1) + 5 )
-#define N_F1S  (0x600C + (12 *  1) + 6 )
-#define N_G1F  (0x600C + (12 *  1) + 6 )
-#define N_G1   (0x600C + (12 *  1) + 7 )
-#define N_G1S  (0x600C + (12 *  1) + 8 )
-#define N_A1F  (0x600C + (12 *  1) + 8 )
-#define N_A1   (0x600C + (12 *  1) + 9 )
-#define N_A1S  (0x600C + (12 *  1) + 10)
-#define N_B1F  (0x600C + (12 *  1) + 10)
-#define N_B1   (0x600C + (12 *  1) + 11)
-#define N_C2   (0x600C + (12 *  2) + 0 )
-#define N_C2S  (0x600C + (12 *  2) + 1 )
-#define N_D2F  (0x600C + (12 *  2) + 1 )
-#define N_D2   (0x600C + (12 *  2) + 2 )
-#define N_D2S  (0x600C + (12 *  2) + 3 )
-#define N_E2F  (0x600C + (12 *  2) + 3 )
-#define N_E2   (0x600C + (12 *  2) + 4 )
-#define N_F2   (0x600C + (12 *  2) + 5 )
-#define N_F2S  (0x600C + (12 *  2) + 6 )
-#define N_G2F  (0x600C + (12 *  2) + 6 )
-#define N_G2   (0x600C + (12 *  2) + 7 )
-#define N_G2S  (0x600C + (12 *  2) + 8 )
-#define N_A2F  (0x600C + (12 *  2) + 8 )
-#define N_A2   (0x600C + (12 *  2) + 9 )
-#define N_A2S  (0x600C + (12 *  2) + 10)
-#define N_B2F  (0x600C + (12 *  2) + 10)
-#define N_B2   (0x600C + (12 *  2) + 11)
-#define N_C3   (0x600C + (12 *  3) + 0 )
-#define N_C3S  (0x600C + (12 *  3) + 1 )
-#define N_D3F  (0x600C + (12 *  3) + 1 )
-#define N_D3   (0x600C + (12 *  3) + 2 )
-#define N_D3S  (0x600C + (12 *  3) + 3 )
-#define N_E3F  (0x600C + (12 *  3) + 3 )
-#define N_E3   (0x600C + (12 *  3) + 4 )
-#define N_F3   (0x600C + (12 *  3) + 5 )
-#define N_F3S  (0x600C + (12 *  3) + 6 )
-#define N_G3F  (0x600C + (12 *  3) + 6 )
-#define N_G3   (0x600C + (12 *  3) + 7 )
-#define N_G3S  (0x600C + (12 *  3) + 8 )
-#define N_A3F  (0x600C + (12 *  3) + 8 )
-#define N_A3   (0x600C + (12 *  3) + 9 )
-#define N_A3S  (0x600C + (12 *  3) + 10)
-#define N_B3F  (0x600C + (12 *  3) + 10)
-#define N_B3   (0x600C + (12 *  3) + 11)
-#define N_C4   (0x600C + (12 *  4) + 0 )
-#define N_C4S  (0x600C + (12 *  4) + 1 )
-#define N_D4F  (0x600C + (12 *  4) + 1 )
-#define N_D4   (0x600C + (12 *  4) + 2 )
-#define N_D4S  (0x600C + (12 *  4) + 3 )
-#define N_E4F  (0x600C + (12 *  4) + 3 )
-#define N_E4   (0x600C + (12 *  4) + 4 )
-#define N_F4   (0x600C + (12 *  4) + 5 )
-#define N_F4S  (0x600C + (12 *  4) + 6 )
-#define N_G4F  (0x600C + (12 *  4) + 6 )
-#define N_G4   (0x600C + (12 *  4) + 7 )
-#define N_G4S  (0x600C + (12 *  4) + 8 )
-#define N_A4F  (0x600C + (12 *  4) + 8 )
-#define N_A4   (0x600C + (12 *  4) + 9 )
-#define N_A4S  (0x600C + (12 *  4) + 10)
-#define N_B4F  (0x600C + (12 *  4) + 10)
-#define N_B4   (0x600C + (12 *  4) + 11)
-#define N_C5   (0x600C + (12 *  5) + 0 )
-#define N_C5S  (0x600C + (12 *  5) + 1 )
-#define N_D5F  (0x600C + (12 *  5) + 1 )
-#define N_D5   (0x600C + (12 *  5) + 2 )
-#define N_D5S  (0x600C + (12 *  5) + 3 )
-#define N_E5F  (0x600C + (12 *  5) + 3 )
-#define N_E5   (0x600C + (12 *  5) + 4 )
-#define N_F5   (0x600C + (12 *  5) + 5 )
-#define N_F5S  (0x600C + (12 *  5) + 6 )
-#define N_G5F  (0x600C + (12 *  5) + 6 )
-#define N_G5   (0x600C + (12 *  5) + 7 )
-#define N_G5S  (0x600C + (12 *  5) + 8 )
-#define N_A5F  (0x600C + (12 *  5) + 8 )
-#define N_A5   (0x600C + (12 *  5) + 9 )
-#define N_A5S  (0x600C + (12 *  5) + 10)
-#define N_B5F  (0x600C + (12 *  5) + 10)
-#define N_B5   (0x600C + (12 *  5) + 11)
-#define N_C6   (0x600C + (12 *  6) + 0 )
-#define N_C6S  (0x600C + (12 *  6) + 1 )
-#define N_D6F  (0x600C + (12 *  6) + 1 )
-#define N_D6   (0x600C + (12 *  6) + 2 )
-#define N_D6S  (0x600C + (12 *  6) + 3 )
-#define N_E6F  (0x600C + (12 *  6) + 3 )
-#define N_E6   (0x600C + (12 *  6) + 4 )
-#define N_F6   (0x600C + (12 *  6) + 5 )
-#define N_F6S  (0x600C + (12 *  6) + 6 )
-#define N_G6F  (0x600C + (12 *  6) + 6 )
-#define N_G6   (0x600C + (12 *  6) + 7 )
-#define N_G6S  (0x600C + (12 *  6) + 8 )
-#define N_A6F  (0x600C + (12 *  6) + 8 )
-#define N_A6   (0x600C + (12 *  6) + 9 )
-#define N_A6S  (0x600C + (12 *  6) + 10)
-#define N_B6F  (0x600C + (12 *  6) + 10)
-#define N_B6   (0x600C + (12 *  6) + 11)
-#define N_C7   (0x600C + (12 *  7) + 0 )
-#define N_C7S  (0x600C + (12 *  7) + 1 )
-#define N_D7F  (0x600C + (12 *  7) + 1 )
-#define N_D7   (0x600C + (12 *  7) + 2 )
-#define N_D7S  (0x600C + (12 *  7) + 3 )
-#define N_E7F  (0x600C + (12 *  7) + 3 )
-#define N_E7   (0x600C + (12 *  7) + 4 )
-#define N_F7   (0x600C + (12 *  7) + 5 )
-#define N_F7S  (0x600C + (12 *  7) + 6 )
-#define N_G7F  (0x600C + (12 *  7) + 6 )
-#define N_G7   (0x600C + (12 *  7) + 7 )
-#define N_G7S  (0x600C + (12 *  7) + 8 )
-#define N_A7F  (0x600C + (12 *  7) + 8 )
-#define N_A7   (0x600C + (12 *  7) + 9 )
-#define N_A7S  (0x600C + (12 *  7) + 10)
-#define N_B7F  (0x600C + (12 *  7) + 10)
-#define N_B7   (0x600C + (12 *  7) + 11)
-#define N_C8   (0x600C + (12 *  8) + 0 )
-#define N_C8S  (0x600C + (12 *  8) + 1 )
-#define N_D8F  (0x600C + (12 *  8) + 1 )
-#define N_D8   (0x600C + (12 *  8) + 2 )
-#define N_D8S  (0x600C + (12 *  8) + 3 )
-#define N_E8F  (0x600C + (12 *  8) + 3 )
-#define N_E8   (0x600C + (12 *  8) + 4 )
-#define N_F8   (0x600C + (12 *  8) + 5 )
-#define N_F8S  (0x600C + (12 *  8) + 6 )
-#define N_G8F  (0x600C + (12 *  8) + 6 )
-#define N_G8   (0x600C + (12 *  8) + 7 )
-#define N_G8S  (0x600C + (12 *  8) + 8 )
-#define N_A8F  (0x600C + (12 *  8) + 8 )
-#define N_A8   (0x600C + (12 *  8) + 9 )
-#define N_A8S  (0x600C + (12 *  8) + 10)
-#define N_B8F  (0x600C + (12 *  8) + 10)
-#define N_B8   (0x600C + (12 *  8) + 11)
-#define N_C8   (0x600C + (12 *  8) + 0 )
-#define N_C8S  (0x600C + (12 *  8) + 1 )
-#define N_D8F  (0x600C + (12 *  8) + 1 )
-#define N_D8   (0x600C + (12 *  8) + 2 )
-#define N_D8S  (0x600C + (12 *  8) + 3 )
-#define N_E8F  (0x600C + (12 *  8) + 3 )
-#define N_E8   (0x600C + (12 *  8) + 4 )
-#define N_F8   (0x600C + (12 *  8) + 5 )
-#define N_F8S  (0x600C + (12 *  8) + 6 )
-#define N_G8F  (0x600C + (12 *  8) + 6 )
-#define N_G8   (0x600C + (12 *  8) + 7 )
-#define N_G8S  (0x600C + (12 *  8) + 8 )
-#define N_A8F  (0x600C + (12 *  8) + 8 )
-#define N_A8   (0x600C + (12 *  8) + 9 )
-#define N_A8S  (0x600C + (12 *  8) + 10)
-#define N_B8F  (0x600C + (12 *  8) + 10)
-#define N_B8   (0x600C + (12 *  8) + 11)
-
-#endif
\ No newline at end of file
diff --git a/keyboard/preonic/keymaps/default/README.md b/keyboard/preonic/keymaps/default/README.md
new file mode 100644 (file)
index 0000000..d2f43bb
--- /dev/null
@@ -0,0 +1,34 @@
+# The Default Planck Layout
+
+    const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+    [_QW] = { /* Qwerty */
+      {KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_BSPC},
+      {KC_ESC,  KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT},
+      {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_ENT },
+      {M(0),    KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC,  KC_SPC,  MO(_RS), KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT}
+    },
+    [_CM] = { /* Colemak */
+      {KC_TAB,  KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_BSPC},
+      {KC_ESC,  KC_A,    KC_R,    KC_S,    KC_T,    KC_D,    KC_H,    KC_N,    KC_E,    KC_I,    KC_O,    KC_QUOT},
+      {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_ENT },
+      {M(0),    KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC,  KC_SPC,  MO(_RS), KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT}
+    },
+    [_DV] = { /* Dvorak */
+      {KC_TAB,  KC_QUOT, KC_COMM, KC_DOT,  KC_P,    KC_Y,    KC_F,    KC_G,    KC_C,    KC_R,    KC_L,    KC_BSPC},
+      {KC_ESC,  KC_A,    KC_O,    KC_E,    KC_U,    KC_I,    KC_D,    KC_H,    KC_T,    KC_N,    KC_S,    KC_SLSH},
+      {KC_LSFT, KC_SCLN, KC_Q,    KC_J,    KC_K,    KC_X,    KC_B,    KC_M,    KC_W,    KC_V,    KC_Z,    KC_ENT },
+      {M(0),    KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC,  KC_SPC,  MO(_RS), KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT}
+    },
+    [_RS] = { /* RAISE */
+      {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC},
+      {KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS},
+      {KC_TRNS, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  DF(_QW), DF(_CM), DF(_DV), RESET,   KC_TRNS},
+      {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
+    },
+    [_LW] = { /* LOWER */
+      {KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC},
+      {KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE},
+      {KC_TRNS, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  DF(_QW), DF(_CM), DF(_DV), RESET,   KC_TRNS},
+      {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
+    }
+    };
\ No newline at end of file
diff --git a/keyboard/preonic/keymaps/default/keymap.c b/keyboard/preonic/keymaps/default/keymap.c
new file mode 100644 (file)
index 0000000..392197f
--- /dev/null
@@ -0,0 +1,96 @@
+// This is the canonical layout file for the Quantum project. If you want to add another keyboard,
+// this is the style you want to emulate.
+
+#include "preonic.h"
+#ifdef BACKLIGHT_ENABLE
+  #include "backlight.h"
+#endif
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+#define _QW 0
+#define _CM 1
+#define _DV 2
+#define _LW 3
+#define _RS 4
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[_QW] = { /* Qwerty */
+  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC},
+  {KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_BSPC},
+  {KC_ESC,  KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT},
+  {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_ENT },
+  {M(0),    KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC,  KC_SPC,  MO(_RS), KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT}
+},
+[_CM] = { /* Colemak */
+  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC},
+  {KC_TAB,  KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_BSPC},
+  {KC_ESC,  KC_A,    KC_R,    KC_S,    KC_T,    KC_D,    KC_H,    KC_N,    KC_E,    KC_I,    KC_O,    KC_QUOT},
+  {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_ENT },
+  {M(0),    KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC,  KC_SPC,  MO(_RS), KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT}
+},
+[_DV] = { /* Dvorak */
+  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC},
+  {KC_TAB,  KC_QUOT, KC_COMM, KC_DOT,  KC_P,    KC_Y,    KC_F,    KC_G,    KC_C,    KC_R,    KC_L,    KC_BSPC},
+  {KC_ESC,  KC_A,    KC_O,    KC_E,    KC_U,    KC_I,    KC_D,    KC_H,    KC_T,    KC_N,    KC_S,    KC_SLSH},
+  {KC_LSFT, KC_SCLN, KC_Q,    KC_J,    KC_K,    KC_X,    KC_B,    KC_M,    KC_W,    KC_V,    KC_Z,    KC_ENT },
+  {M(0),    KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC,  KC_SPC,  MO(_RS), KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT}
+},
+[_RS] = { /* RAISE */
+  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC},
+  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC},
+  {KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS},
+  {KC_TRNS, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  DF(_QW), DF(_CM), DF(_DV), RESET,   KC_TRNS},
+  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
+},
+[_LW] = { /* LOWER */
+  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC},
+  {KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC},
+  {KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE},
+  {KC_TRNS, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  DF(_QW), DF(_CM), DF(_DV), RESET,   KC_TRNS},
+  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
+}
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+
+};
+
+float start_up[][2] = {
+  {440.0*pow(2.0,(67)/12.0), 600},
+  {0, 50},
+  {440.0*pow(2.0,(64)/12.0), 400},
+  {0, 50},
+  {440.0*pow(2.0,(55)/12.0), 400},
+  {0, 50},
+  {440.0*pow(2.0,(60)/12.0), 400},
+  {0, 50},
+  {440.0*pow(2.0,(64)/12.0), 1000},
+};
+
+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);
+            #ifdef BACKLIGHT_ENABLE
+              backlight_step();
+            #endif
+          } else {
+            unregister_code(KC_RSFT);
+          }
+        break;
+      }
+    return MACRO_NONE;
+};
+
+void * matrix_init_user(void) {
+#ifdef AUDIO_ENABLE
+    init_notes();
+    play_notes(&start_up, 9, false);
+#endif
+}
diff --git a/keyboard/preonic/keymaps/lock/README.md b/keyboard/preonic/keymaps/lock/README.md
new file mode 100644 (file)
index 0000000..d21cb99
--- /dev/null
@@ -0,0 +1,3 @@
+# Lock layout
+
+This layout is designed for having a lock switch in the lower-left-hand corner, and for experimenting with MIDI/audio features. It's constantly in development, so don't expect anything to work/be documented correctly!
\ No newline at end of file
diff --git a/keyboard/preonic/keymaps/lock/keymap.c b/keyboard/preonic/keymaps/lock/keymap.c
new file mode 100644 (file)
index 0000000..e253f25
--- /dev/null
@@ -0,0 +1,105 @@
+// This is the canonical layout file for the Quantum project. If you want to add another keyboard,
+// this is the style you want to emulate.
+
+#include "preonic.h"
+#ifdef BACKLIGHT_ENABLE
+  #include "backlight.h"
+#endif
+#include "action_layer.h"
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+#define _QW 0
+#define _CM 1
+#define _DV 2
+#define _LW 3
+#define _RS 4
+#define _MI 5
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[_QW] = { /* Qwerty */
+  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC},
+  {KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_BSPC},
+  {KC_ESC,  KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT},
+  {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_ENT },
+  {M(0),    KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC,  KC_SPC,  MO(_RS), KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT}
+},
+[_CM] = { /* Colemak */
+  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC},
+  {KC_TAB,  KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_BSPC},
+  {KC_ESC,  KC_A,    KC_R,    KC_S,    KC_T,    KC_D,    KC_H,    KC_N,    KC_E,    KC_I,    KC_O,    KC_QUOT},
+  {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_ENT },
+  {M(0),    KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC,  KC_SPC,  MO(_RS), KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT}
+},
+[_DV] = { /* Dvorak */
+  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC},
+  {KC_TAB,  KC_QUOT, KC_COMM, KC_DOT,  KC_P,    KC_Y,    KC_F,    KC_G,    KC_C,    KC_R,    KC_L,    KC_BSPC},
+  {KC_ESC,  KC_A,    KC_O,    KC_E,    KC_U,    KC_I,    KC_D,    KC_H,    KC_T,    KC_N,    KC_S,    KC_SLSH},
+  {KC_LSFT, KC_SCLN, KC_Q,    KC_J,    KC_K,    KC_X,    KC_B,    KC_M,    KC_W,    KC_V,    KC_Z,    KC_ENT },
+  {M(0),    KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC,  KC_SPC,  MO(_RS), KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT}
+},
+[_RS] = { /* RAISE */
+  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC},
+  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC},
+  {KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS},
+  {KC_TRNS, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  DF(_QW), DF(_CM), DF(_DV), RESET,   KC_TRNS},
+  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
+},
+[_LW] = { /* LOWER */
+  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC},
+  {KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC},
+  {KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE},
+  {KC_TRNS, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  DF(_QW), DF(_CM), DF(_DV), RESET,   KC_TRNS},
+  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
+},
+[_MI] = { /* MIDI */
+  {MIDI12},
+  {MIDI12},
+  {MIDI12},
+  {MIDI12},
+  {M(0), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MIDI, MIDI, MIDI,  MIDI}
+}
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+
+};
+
+float start_up[][2] = {
+  {440.0*pow(2.0,(67)/12.0), 600},
+  {0, 50},
+  {440.0*pow(2.0,(64)/12.0), 400},
+  {0, 50},
+  {440.0*pow(2.0,(55)/12.0), 400},
+  {0, 50},
+  {440.0*pow(2.0,(60)/12.0), 400},
+  {0, 50},
+  {440.0*pow(2.0,(64)/12.0), 1000},
+};
+
+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);
+            #ifdef BACKLIGHT_ENABLE
+              backlight_step();
+            #endif
+            default_layer_state = 1<<5;
+          } else {
+            unregister_code(KC_RSFT);
+            default_layer_state = 1<<0;
+          }
+        break;
+      }
+    return MACRO_NONE;
+};
+
+void * matrix_init_user(void) {
+    init_notes();
+    play_notes(&start_up, 9, false);
+}
diff --git a/keyboard/preonic/led.c b/keyboard/preonic/led.c
deleted file mode 100644 (file)
index 2c05746..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
-Copyright 2012 Jun Wako <wakojun@gmail.com>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include <avr/io.h>
-#include "stdint.h"
-#include "led.h"
-
-
-void led_set(uint8_t usb_led)
-{
-    // // Using PE6 Caps Lock LED
-    // if (usb_led & (1<<USB_LED_CAPS_LOCK))
-    // {
-    //     // Output high.
-    //     DDRE |= (1<<6);
-    //     PORTE |= (1<<6);
-    // }
-    // else
-    // {
-    //     // Output low.
-    //     DDRE &= ~(1<<6);
-    //     PORTE &= ~(1<<6);
-    // }
-}
diff --git a/keyboard/preonic/matrix.c b/keyboard/preonic/matrix.c
deleted file mode 100644 (file)
index 98ef55e..0000000
+++ /dev/null
@@ -1,234 +0,0 @@
-/*
-Copyright 2012 Jun Wako 
-Generated by planckkeyboard.com (2014 Jack Humbert)
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-/*
- * scan matrix
- */
-#include <stdint.h>
-#include <stdbool.h>
-#include <avr/io.h>
-#include <util/delay.h>
-#include "print.h"
-#include "debug.h"
-#include "util.h"
-#include "matrix.h"
-
-#ifndef DEBOUNCE
-#   define DEBOUNCE 10
-#endif
-static uint8_t debouncing = DEBOUNCE;
-
-/* matrix state(1:on, 0:off) */
-static matrix_row_t matrix[MATRIX_ROWS];
-static matrix_row_t matrix_debouncing[MATRIX_ROWS];
-
-static matrix_row_t read_cols(void);
-static void init_cols(void);
-static void unselect_rows(void);
-static void select_row(uint8_t row);
-
-inline
-uint8_t matrix_rows(void)
-{
-    return MATRIX_ROWS;
-}
-
-inline
-uint8_t matrix_cols(void)
-{
-    return MATRIX_COLS;
-}
-
-void matrix_init(void)
-{
-    // To use PORTF disable JTAG with writing JTD bit twice within four cycles.
-    MCUCR |= (1<<JTD);
-    MCUCR |= (1<<JTD);
-
-    backlight_init_ports();
-
-    // Turn status LED on
-    DDRE |= (1<<6);
-    PORTE |= (1<<6);
-
-    // initialize row and col
-    unselect_rows();
-    init_cols();
-
-    // initialize matrix state: all keys off
-    for (uint8_t i=0; i < MATRIX_ROWS; i++) {
-        matrix[i] = 0;
-        matrix_debouncing[i] = 0;
-    }
-}
-
-
-uint8_t matrix_scan(void)
-{
-    for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
-        select_row(i);
-        _delay_us(30);  // without this wait read unstable value.
-        matrix_row_t cols = read_cols();
-        if (matrix_debouncing[i] != cols) {
-            matrix_debouncing[i] = cols;
-            if (debouncing) {
-                debug("bounce!: "); debug_hex(debouncing); debug("\n");
-            }
-            debouncing = DEBOUNCE;
-        }
-        unselect_rows();
-    }
-
-    if (debouncing) {
-        if (--debouncing) {
-            _delay_ms(1);
-        } else {
-            for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
-                matrix[i] = matrix_debouncing[i];
-            }
-        }
-    }
-
-    return 1;
-}
-
-bool matrix_is_modified(void)
-{
-    if (debouncing) return false;
-    return true;
-}
-
-inline
-bool matrix_is_on(uint8_t row, uint8_t col)
-{
-    return (matrix[row] & ((matrix_row_t)1<col));
-}
-
-inline
-matrix_row_t matrix_get_row(uint8_t row)
-{
-    return matrix[row];
-}
-
-void matrix_print(void)
-{
-    print("\nr/c 0123456789ABCDEF\n");
-    for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
-        phex(row); print(": ");
-        pbin_reverse16(matrix_get_row(row));
-        print("\n");
-    }
-}
-
-uint8_t matrix_key_count(void)
-{
-    uint8_t count = 0;
-    for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
-        count += bitpop16(matrix[i]);
-    }
-    return count;
-}
-
-static void init_cols(void)
-{
-    int B = 0, C = 0, D = 0, E = 0, F = 0;
-    for(int x = 0; x < MATRIX_COLS; x++) { 
-        int col = COLS[x];
-        if ((col & 0xF0) == 0x20) { 
-            B |= (1<<(col & 0x0F)); 
-        } else if ((col & 0xF0) == 0x30) { 
-            C |= (1<<(col & 0x0F)); 
-        } else if ((col & 0xF0) == 0x40) { 
-            D |= (1<<(col & 0x0F)); 
-        } else if ((col & 0xF0) == 0x50) { 
-            E |= (1<<(col & 0x0F)); 
-        } else if ((col & 0xF0) == 0x60) { 
-            F |= (1<<(col & 0x0F)); 
-        } 
-    }
-    DDRB &= ~(B); PORTB |= (B);
-    DDRC &= ~(C); PORTC |= (C); 
-    DDRD &= ~(D); PORTD |= (D);
-    DDRE &= ~(E); PORTE |= (E);
-    DDRF &= ~(F); PORTF |= (F);
-}
-
-static matrix_row_t read_cols(void)
-{
-    matrix_row_t result = 0;
-    for(int x = 0; x < MATRIX_COLS; x++) {     
-        int col = COLS[x];
-        if ((col & 0xF0) == 0x20) { 
-            result |= (PINB&(1<<(col & 0x0F)) ? 0 : (1<<x)); 
-        } else if ((col & 0xF0) == 0x30) { 
-            result |= (PINC&(1<<(col & 0x0F)) ? 0 : (1<<x)); 
-        } else if ((col & 0xF0) == 0x40) { 
-            result |= (PIND&(1<<(col & 0x0F)) ? 0 : (1<<x)); 
-        } else if ((col & 0xF0) == 0x50) { 
-            result |= (PINE&(1<<(col & 0x0F)) ? 0 : (1<<x)); 
-        } else if ((col & 0xF0) == 0x60) { 
-            result |= (PINF&(1<<(col & 0x0F)) ? 0 : (1<<x)); 
-        } 
-    }
-    return result;
-}
-
-static void unselect_rows(void)
-{
-    int B = 0, C = 0, D = 0, E = 0, F = 0;
-    for(int x = 0; x < MATRIX_ROWS; x++) { 
-        int row = ROWS[x];
-        if ((row & 0xF0) == 0x20) { 
-            B |= (1<<(row & 0x0F)); 
-        } else if ((row & 0xF0) == 0x30) { 
-            C |= (1<<(row & 0x0F)); 
-        } else if ((row & 0xF0) == 0x40) { 
-            D |= (1<<(row & 0x0F)); 
-        } else if ((row & 0xF0) == 0x50) { 
-            E |= (1<<(row & 0x0F)); 
-        } else if ((row & 0xF0) == 0x60) { 
-            F |= (1<<(row & 0x0F)); 
-        } 
-    }
-    DDRB &= ~(B); PORTB |= (B);
-    DDRC &= ~(C); PORTC |= (C); 
-    DDRD &= ~(D); PORTD |= (D);
-    DDRE &= ~(E); PORTE |= (E);
-    DDRF &= ~(F); PORTF |= (F);
-}
-
-static void select_row(uint8_t row)
-{
-    int row_pin = ROWS[row];
-    if ((row_pin & 0xF0) == 0x20) { 
-        DDRB  |= (1<<(row_pin & 0x0F));
-        PORTB &= ~(1<<(row_pin & 0x0F));
-    } else if ((row_pin & 0xF0) == 0x30) { 
-        DDRC  |= (1<<(row_pin & 0x0F));
-        PORTC &= ~(1<<(row_pin & 0x0F));
-    } else if ((row_pin & 0xF0) == 0x40) { 
-        DDRD  |= (1<<(row_pin & 0x0F));
-        PORTD &= ~(1<<(row_pin & 0x0F));
-    } else if ((row_pin & 0xF0) == 0x50) { 
-        DDRE  |= (1<<(row_pin & 0x0F));
-        PORTE &= ~(1<<(row_pin & 0x0F));
-    } else if ((row_pin & 0xF0) == 0x60) { 
-        DDRF  |= (1<<(row_pin & 0x0F));
-        PORTF &= ~(1<<(row_pin & 0x0F));
-    }  
-}
\ No newline at end of file
diff --git a/keyboard/preonic/preonic.c b/keyboard/preonic/preonic.c
new file mode 100644 (file)
index 0000000..a678f7b
--- /dev/null
@@ -0,0 +1,36 @@
+#include "preonic.h"
+
+__attribute__ ((weak))
+void * matrix_init_user(void) {
+
+};
+
+__attribute__ ((weak))
+void * matrix_scan_user(void) {
+
+};
+
+void * matrix_init_kb(void) {
+       #ifdef BACKLIGHT_ENABLE
+       backlight_init_ports();
+       #endif
+
+       #ifdef RGBLIGHT_ENABLE
+               rgblight_init();
+       #endif
+
+
+    // Turn status LED on
+    DDRE |= (1<<6);
+    PORTE |= (1<<6);
+
+       if (matrix_init_user) {
+               (*matrix_init_user)();
+       }
+};
+
+void * matrix_scan_kb(void) {
+       if (matrix_scan_user) {
+               (*matrix_scan_user)();
+       }
+};
diff --git a/keyboard/preonic/preonic.h b/keyboard/preonic/preonic.h
new file mode 100644 (file)
index 0000000..42d2123
--- /dev/null
@@ -0,0 +1,50 @@
+#ifndef PREONIC_H
+#define PREONIC_H
+
+#include "matrix.h"
+#include "keymap_common.h"
+#ifdef BACKLIGHT_ENABLE
+       #include "backlight.h"
+#endif
+#ifdef RGBLIGHT_ENABLE
+  #include "rgblight.h"
+#endif
+#include <stddef.h>
+#ifdef MIDI_ENABLE
+       #include <keymap_midi.h>
+#endif
+
+#define PREONIC_MIT( \
+       k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
+       k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
+       k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
+       k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, \
+       k40, k41, k42, k43, k44,    k45,   k47, k48, k49, k4a, k4b \
+) \
+{ \
+       { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b }, \
+       { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b }, \
+       { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b }, \
+       { k30, k31, k32, k33, k34, k35, k35, k37, k38, k39, k3a, k3b }, \
+       { k40, k41, k42, k43, k44, k45, k45, k47, k48, k49, k4a, k4b } \
+}
+
+#define PREONIC_GRID( \
+       k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
+       k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
+       k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
+       k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, \
+       k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b \
+) \
+{ \
+       { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b }, \
+       { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b }, \
+       { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b }, \
+       { k30, k31, k32, k33, k34, k35, k35, k37, k38, k39, k3a, k3b }, \
+       { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b } \
+}
+
+void * matrix_init_user(void);
+void * matrix_scan_user(void);
+
+#endif
diff --git a/keyboard/preonic/preonic_pcb.hex b/keyboard/preonic/preonic_pcb.hex
new file mode 100644 (file)
index 0000000..5bdc190
--- /dev/null
@@ -0,0 +1,1702 @@
+:100000000C94D4020C9418030C9418030C94180349\r
+:100010000C9418030C9418030C9418030C941803F4\r
+:100020000C9418030C9418030C94E8160C94BA174B\r
+:100030000C946C290C9418030C9418030C9418035A\r
+:100040000C9418030C9418030C9418030C941803C4\r
+:100050000C9418030C94D9290C9418030C941803CD\r
+:100060000C9418030C9418030C9418030C941803A4\r
+:100070000C9418030C9418030C9418030C94180394\r
+:100080000C941C0E0C9418030C9418030C94180375\r
+:100090000C9418030C9418030C9418030C94180374\r
+:1000A0000C9418030C9418030C941803076342363D\r
+:1000B000B79BD8A71A39685618AEBAAB558C1D3CF9\r
+:1000C000B7CC5763BD6DEDFD753EF6177231BF00BD\r
+:1000D0000000803F08000000BE922449123EABAAF7\r
+:1000E000AA2ABECDCCCC4C3E00000080BEABAAAA52\r
+:1000F000AA3E00000000BF000000803F000000009A\r
+:1001000000084178D3BB4387D1133D190E3CC3BDD2\r
+:100110004282AD2B3E68EC8276BED98FE1A93E4C7F\r
+:1001200080EFFFBE01C4FF7F3F00000000003500EC\r
+:100130001E001F00200021002200230024002500B3\r
+:10014000260027002A002B0014001A0008001500C2\r
+:1001500017001C0018000C00120013002A002900D0\r
+:1001600004001600070009000A000B000D000E0035\r
+:100170000F0033003400E1001D001B0006001900D1\r
+:10018000050011001000360037003800280000304C\r
+:10019000E000E200E30003522C002C000452500067\r
+:1001A000510052004F0035001E001F0020002100AA\r
+:1001B0002200230024002500260027002A002B000F\r
+:1001C00014001A00090013000A000D000F001800A7\r
+:1001D0001C0033002A002900040015001600170037\r
+:1001E00007000B00110008000C0012003400E100B1\r
+:1001F0001D001B000600190005000E00100036004F\r
+:100200003700380028000030E000E200E30003522D\r
+:100210002C002C0004525000510052004F003500B9\r
+:100220001E001F00200021002200230024002500C2\r
+:10023000260027002A002B00340036003700130068\r
+:100240001C0009000A00060015000F002A00290002\r
+:1002500004001200080018000C0007000B00170033\r
+:10026000110016003800E100330014000D000E00EC\r
+:100270001B00050010001A0019001D0028000030A6\r
+:10028000E000E200E30003522C002C000452500076\r
+:10029000510052004F0035001E001F0020002100B9\r
+:1002A0002200230024002500260027002A00350212\r
+:1002B0001E021F0220022102220223022402250222\r
+:1002C000260227022A0001003A003B003C003D00C4\r
+:1002D0003E003F002D022E022F02300231020100AB\r
+:1002E00040004100420043004400450000530153D8\r
+:1002F0000253005001000100010001000100010053\r
+:10030000010001000100AB00AA00A900AE00350009\r
+:100310001E001F00200021002200230024002500D1\r
+:10032000260027002A0035001E001F0020002100A3\r
+:100330002200230024002500260027002A000100B7\r
+:100340003A003B003C003D003E003F002D002E00E7\r
+:100350002F00300031000100400041004200430006\r
+:1003600044004500005301530253005001000100B6\r
+:100370000100010001000100010001000100AB00CB\r
+:10038000AA00A900AE002A035400680065002000FE\r
+:100390005000720065006F006E006900630020006D\r
+:1003A0004B006500790062006F006100720064001C\r
+:1003B00000002C034F007200740068006F006C0096\r
+:1003C00069006E0065006100720020004B0065004E\r
+:1003D000790062006F006100720064007300000029\r
+:1003E000040309040902D000060100A0FA09040070\r
+:1003F000000103010100092111010001223F000752\r
+:1004000005810308000A0904010001030102000933\r
+:100410002111010001224D000705820308000A098D\r
+:10042000040200010300000009211101000122362D\r
+:10043000000705830308000A090403000203000003\r
+:10044000000921110100012220000705840320007A\r
+:100450000107050403200001090404000001010054\r
+:100460000009240100010900010509040500020139\r
+:1004700003000007240100014100062402010100DD\r
+:1004800006240202020009240301030102010009FB\r
+:1004900024030204010101000905060240000500D1\r
+:1004A0000005250101010905850240000500000540\r
+:1004B000250101031201100100000008EDFE61603A\r
+:1004C0000100010200010631FF0974A1010975153F\r
+:1004D0000025FF9520750881020976150025FF95F6\r
+:1004E0002075089102C005010980A101850216014D\r
+:1004F0000026B7001A01002AB70075109501810087\r
+:10050000C0050C0901A1018503160100269C021AF1\r
+:1005100001002A9C02751095018100C005010902A5\r
+:10052000A1010901A10005091901290515002501ED\r
+:100530009505750181029501750381010501093059\r
+:1005400009311581257F95027508810609381581C5\r
+:10055000257F950175088106050C0A38021581254D\r
+:100560007F950175088106C0C005010906A1010536\r
+:100570000719E029E7150025019508750181029505\r
+:100580000175088101050819012905950575019175\r
+:10059000029501750391010507190029FF15002532\r
+:1005A000FF950675088100C011241FBECFEFDAE069\r
+:1005B000DEBFCDBF04B603FE24C080910404909139\r
+:1005C0000504A0910604B09107048730904BA74022\r
+:1005D000B04BB9F410920404109205041092060472\r
+:1005E0001092070414BE84B7877F84BF88E10FB6DA\r
+:1005F000F89480936000109260000FBEE0E0F8E392\r
+:10060000099512E0A0E0B1E0EEE1F9E602C0059044\r
+:100610000D92A832B107D9F714E0A8E2B2E001C008\r
+:100620001D92A430B107E1F70E94A0130C948D3401\r
+:100630000C94000061110DC0FC018281882331F00F\r
+:1006400085EE0E94671E0E94683003C085EE0E94FE\r
+:100650002F1F80E090E008950E940F0E40E050E0D0\r
+:1006600069E070E080E091E00C94600F08950E94D2\r
+:1006700049036E9A769A8CE293E0892B11F00C94E0\r
+:100680002C03089586E393E0892B11F00C94360334\r
+:100690000895279A2F988FEF9FEF9093870080936C\r
+:1006A00086008AE08093800089E1809381000C9429\r
+:1006B000113081110BC080918000877F8093800072\r
+:1006C00010928D0010928C002F9808952F988330EF\r
+:1006D00041F4809180008860809380008FEF9FEFCD\r
+:1006E00012C09091800098609093800023E030E0E9\r
+:1006F000281B3109220F331F8FEF9FEF02C0969501\r
+:1007000087952A95E2F790938D0080938C00089549\r
+:100710008B3B910568F4883A910530F5853A91054F\r
+:10072000C0F48430910598F4019709F06FC071C04E\r
+:10073000803E910508F46AC0883E910540F09C0116\r
+:10074000205F31092031310508F060C05CC09C0198\r
+:10075000A1C0853A910509F45FC0863A910509F474\r
+:100760005EC023E830E496C0883A910509F45AC087\r
+:10077000893A910509F459C08A3A910509F458C09B\r
+:100780008B3A910509F457C08C3A910509F456C08B\r
+:100790008D3A910509F455C0803B910509F454C088\r
+:1007A0008E3A910509F453C08F3A910509F452C06D\r
+:1007B000813B910509F451C0823B910509F450C079\r
+:1007C000833B910509F44FC0843B910509F44EC069\r
+:1007D000853B910509F44DC0863B910509F44CC059\r
+:1007E000873B910509F44BC0883B910509F44AC049\r
+:1007F000893B910509F449C08A3B910509F048C03D\r
+:100800002AE236E447C09C01306544C020E030E075\r
+:1008100041C021E030E03EC021E830E43BC022E8A6\r
+:1008200030E438C022EE34E435C029EE34E432C07E\r
+:100830002AEE34E42FC025EB34E42CC026EB34E45C\r
+:1008400029C027EB34E426C02CEC34E423C02DEC83\r
+:1008500034E420C023E835E41DC02AE835E41AC09A\r
+:1008600022E935E417C024E935E414C021E236E476\r
+:1008700011C023E236E40EC024E236E40BC025E2C8\r
+:1008800036E408C026E236E405C027E236E402C0BA\r
+:1008900020E034E4C90108959CE0799FF00111241F\r
+:1008A0009CE3899FE00DF11D1124E60FF11DEE0F71\r
+:1008B000FF1FE25DFE4F25913491C9010895880F15\r
+:1008C000991F82559040FC0125913491C9010895EA\r
+:1008D000880F991F825D9E4FFC0125913491C901BB\r
+:1008E00008950E944C049C019A9581159F4110F433\r
+:1008F000C9010895C90190528115904128F4C90198\r
+:100900009F700E9468040895C90190538115904119\r
+:1009100020F4C9019927906C0895C901905440971B\r
+:1009200028F4C9018F709927946D0895203180E4CF\r
+:10093000380719F480E091ED0895213190E43907EA\r
+:1009400019F480E090ED0895223140E4340719F461\r
+:1009500080E092ED0895233180E4380719F480E0B7\r
+:1009600093ED0895211590E5390799F40E945623D7\r
+:1009700040E065E088E491E00E94600F2FEF44E3DF\r
+:100980008CE0215040408040E1F700C000000C9412\r
+:10099000FE29213090E5390731F48091F002816021\r
+:1009A0008093F0020895C90190558115904108F097\r
+:1009B00062C0432F55274F70552741305105F9F438\r
+:1009C000C90174E0880F991F7A95E1F78827937021\r
+:1009D000B901E3E0660F771FEA95E1F760767727C4\r
+:1009E000862B972B9C682370332702C0440F551F1A\r
+:1009F0002A95E2F74F715527842B952B08954230A5\r
+:100A0000510529F4922F8827816F906A0895433009\r
+:100A10005105B9F4C90153E0880F991F5A95E1F7C0\r
+:100A2000807E97702370332741E050E002C0440F6E\r
+:100A3000551F2A95E2F74F715527842B952B9C68FB\r
+:100A400008954430510589F5C90143E0880F991F85\r
+:100A50004A95E1F7807E97702370332741E050E09C\r
+:100A600002C0440F551F2A95E2F74F715527842B7A\r
+:100A7000952B9A680895C90190568115904118F4F4\r
+:100A8000C901906F0895C90190578115904120F4D4\r
+:100A9000C9019F7090620895C901905881159041D5\r
+:100AA00020F4C9019F70906A0895203E3105E0F45A\r
+:100AB000203C310568F52133310509F475C048F44F\r
+:100AC0002932310509F46BC02A32310509F07BC0A7\r
+:100AD00075C02933310501F122383105E9F025339C\r
+:100AE000310509F070C051C0233E3105B1F140F429\r
+:100AF000203E3105D1F0223E310509F064C01CC012\r
+:100B0000263E310579F1273E310509F05CC038C039\r
+:100B1000C9010E945F0408958091010380FD02C015\r
+:100B200081FF51C080EE90E04FC08091010380FFB3\r
+:100B3000F9CF89E390E048C08091010382FF0AC0A9\r
+:100B40008091010384FF03C080E090E03DC083EE0C\r
+:100B500090E03AC082EE90E037C08091010382FFBE\r
+:100B6000EFCFF8CF8091010383FF07C0809101038D\r
+:100B700084FDEACF87EE90E027C086EE90E024C0A7\r
+:100B80008091010383FFF2CFF8CF8091010385FFAD\r
+:100B900003C089E290E018C085E390E015C0809121\r
+:100BA000010385FDF9CFF5CF8091010386FF03C0D6\r
+:100BB0008AE290E009C081E390E006C080910103E1\r
+:100BC00086FDF9CFF5CFC9010E94880308950895E5\r
+:100BD0005F926F927F928F929F92AF92BF92CF92CD\r
+:100BE000DF92EF92FF920F931F93CF93DF93CDB7D6\r
+:100BF000DEB72A970FB6F894DEBF0FBECDBF9E01B9\r
+:100C00002F5F3F4F4E018BE0880E911C60E070E03B\r
+:100C100000E010E0E12CF12CC12CD12CA12CB12C46\r
+:100C20008AE0782E622E532E41E050E0E3E9F1E0B5\r
+:100C3000A62DB52D872D01900D928A95E1F7F9012A\r
+:100C4000819191919F01FC01E07FFF27E032F10546\r
+:100C500059F48F709927FA0102C0EE0FFF1F8A9591\r
+:100C6000E2F7AE2ABF2A37C0E033F10559F48F709E\r
+:100C70009927FA0102C0EE0FFF1F8A95E2F7CE2AEC\r
+:100C8000DF2A29C0E034F10559F48F709927FA0161\r
+:100C900002C0EE0FFF1F8A95E2F7EE2AFF2A1BC063\r
+:100CA000E035F10559F48F709927FA0102C0EE0F73\r
+:100CB000FF1F8A95E2F70E2B1F2B0DC0E036F105C2\r
+:100CC00051F48F709927FA0102C0EE0FFF1F8A9529\r
+:100CD000E2F76E2B7F2B2815390509F0A7CF94B1C9\r
+:100CE0008A2D8095892384B985B18A2985B997B1E0\r
+:100CF0008C2D8095892387B988B18C2988B99AB1C0\r
+:100D00008E2D809589238AB98BB18E298BB99DB19F\r
+:100D1000802F809589238DB98EB1802B8EB990B3A9\r
+:100D2000862F8095892380BB81B3862B81BB2A9631\r
+:100D30000FB6F894DEBF0FBECDBFDF91CF911F91EC\r
+:100D40000F91FF90EF90DF90CF90BF90AF909F906A\r
+:100D50008F907F906F905F9008955F926F927F92D7\r
+:100D60008F929F92AF92BF92CF92DF92EF92FF92BB\r
+:100D70000F931F93CF93DF93CDB7DEB768970FB66E\r
+:100D8000F894DEBF0FBECDBF85B7806885BF85B73D\r
+:100D9000806885BF0E94E8059E012F5F3F4F4E018E\r
+:100DA00089E1880E911C60E070E000E010E0E12C29\r
+:100DB000F12CC12CD12CA12CB12C98E1792E622ED2\r
+:100DC000532E41E050E0EDE9F1E0A62DB52D872D41\r
+:100DD00001900D928A95E1F7F901819191919F011E\r
+:100DE000FC01E07FFF27E032F10559F48F7099276D\r
+:100DF000FA0102C0EE0FFF1F8A95E2F7AE2ABF2A62\r
+:100E000037C0E033F10559F48F709927FA0102C019\r
+:100E1000EE0FFF1F8A95E2F7CE2ADF2A29C0E034C1\r
+:100E2000F10559F48F709927FA0102C0EE0FFF1FE8\r
+:100E30008A95E2F7EE2AFF2A1BC0E035F10559F446\r
+:100E40008F709927FA0102C0EE0FFF1F8A95E2F713\r
+:100E50000E2B1F2B0DC0E036F10551F48F70992732\r
+:100E6000FA0102C0EE0FFF1F8A95E2F76E2B7F2B6F\r
+:100E70002815390509F0A7CF94B18A2D80958923CB\r
+:100E800084B985B18A2985B997B18C2D809589233C\r
+:100E900087B988B18C2988B99AB18E2D809589231C\r
+:100EA0008AB98BB18E298BB99DB1802F809589230A\r
+:100EB0008DB98EB1802B8EB990B3862F8095892302\r
+:100EC00080BB81B3862B81BB10922902109228022D\r
+:100ED000109233021092320210922B0210922A02C8\r
+:100EE000109235021092340210922D0210922C02B0\r
+:100EF000109237021092360210922F0210922E0298\r
+:100F0000109239021092380210923102109230027F\r
+:100F100010923B0210923A0287E393E0892BB9F0DA\r
+:100F200068960FB6F894DEBF0FBECDBFDF91CF91AC\r
+:100F30001F910F91FF90EF90DF90CF90BF90AF90F7\r
+:100F40009F908F907F906F905F900C94370368967E\r
+:100F50000FB6F894DEBF0FBECDBFDF91CF911F91CA\r
+:100F60000F91FF90EF90DF90CF90BF90AF909F9048\r
+:100F70008F907F906F905F9008955F926F927F92B5\r
+:100F80008F929F92AF92BF92CF92DF92EF92FF9299\r
+:100F90000F931F93CF93DF93CDB7DEB7A2970FB612\r
+:100FA000F894DEBF0FBECDBF7E0149E1E40EF11C17\r
+:100FB00022E3C22E22E0D22E5E0153E2A50EB11C26\r
+:100FC0003AE0532E470101E010E048E1642E55E07D\r
+:100FD000752EE3E9F1E0D401852D01900D928A95FB\r
+:100FE000E1F7F701819191917F019C01207F3327E7\r
+:100FF0002032310589F424B18F709927A80102C0ED\r
+:10100000440F551F8A95E2F7CA01242B24B995B1E4\r
+:101010008095892385B94FC02033310589F427B1E4\r
+:101020008F709927F80102C0EE0FFF1F8A95E2F733\r
+:10103000CF012E2B27B998B18095892388B93BC061\r
+:101040002034310589F42AB18F709927A80102C094\r
+:10105000440F551F8A95E2F7CA01242B2AB99BB188\r
+:10106000809589238BB927C02035310589F42DB1AE\r
+:101070008F709927F80102C0EE0FFF1F8A95E2F7E3\r
+:10108000CF012E2B2DB99EB1809589238EB913C027\r
+:101090002036310581F420B38F709927A80102C052\r
+:1010A000440F551F8A95E2F7CA01242B20BB91B348\r
+:1010B0008095892381BB50EA5A95F1F7BE016F5F95\r
+:1010C0007F4F80E090E020E030E0EDE9F1E0DE01EC\r
+:1010D0001196462D01900D924A95E1F7FB01419141\r
+:1010E0005191BF01FA01E07FFF27E032F10511F4D1\r
+:1010F000E3B113C0E033F10511F4E6B10EC0E03402\r
+:10110000F10511F4E9B109C0E035F10511F4ECB1D4\r
+:1011100004C0E036F105B9F4EFB1F0E04F705527A7\r
+:1011200002C0F595E7954A95E2F7E0FD08C0A801F1\r
+:10113000022E02C0440F551F0A94E2F702C040E09D\r
+:1011400050E0842B952B2F5F3F4F2C30310509F059\r
+:10115000BCCFF601208131812817390721F0918316\r
+:101160008083709270010E94E805F2E0CF0ED11CDE\r
+:10117000EA14FB0409F02DCF809170018823A1F1BE\r
+:10118000815080937001882339F08FE99FE00197A7\r
+:10119000F1F700C0000028C0809132029091330224\r
+:1011A0009093290280932802809134029091350215\r
+:1011B00090932B0280932A028091360290913702FD\r
+:1011C00090932D0280932C028091380290913902E5\r
+:1011D00090932F0280932E0280913A0290913B02CD\r
+:1011E000909331028093300282E493E0892B11F0D6\r
+:1011F0000E94420381E0A2960FB6F894DEBF0FBEB4\r
+:10120000CDBFDF91CF911F910F91FF90EF90DF90B5\r
+:10121000CF90BF90AF909F908F907F906F905F9096\r
+:101220000895E82FF0E0EE0FFF1FE85DFD4F80818D\r
+:10123000918108950895CF92DF92EF92FF920F93DC\r
+:101240001F93CF93DF93CDB7DEB7CC5BD2400FB601\r
+:10125000F894DEBF0FBECDBF8C01862F642F88238C\r
+:1012600079F0F80192812FE7482F992329F083E044\r
+:1012700093E00E94C41904C083E093E00E94D41953\r
+:10128000F80180818B3091F59181943009F0A8C2EA\r
+:101290009281809173019923B1F08F5F80937301E4\r
+:1012A00096E4E5EBF1E0DE01A958BD4F01900D9207\r
+:1012B0009A95E1F7E0917101F0917201EE0FFF1F35\r
+:1012C00027E732E036C096E4E5EBF1E0DE01AF5C03\r
+:1012D000BD4F01900D929A95E1F7E0917101F09167\r
+:1012E0007201EE0FFF1F21E332E093C08A3009F054\r
+:1012F000CBC0F8019181943009F072C29281809143\r
+:101300007301992309F473C081508093730196E4AB\r
+:10131000E5EBF1E0DE01A551BE4F01900D929A95EB\r
+:10132000E1F7E0917101F0917201EE0FFF1F2BEEDA\r
+:1013300031E02C0F3D1FE20FF31F60817181680FB8\r
+:10134000711D882777FD8095982F0E94AC3120E091\r
+:1013500030E040E451E40E94113120E030E040E808\r
+:1013600050E40E94A9309B01AC0160E070E080E095\r
+:1013700090E40E94C33221E230ED42E053E40E9447\r
+:1013800060324CE050E00E94BB0F20E04BE760E091\r
+:1013900083E093E00E94B41920E04BE761E083E032\r
+:1013A00093E00E94B41920E04BE762E083E093E011\r
+:1013B0000E94B41920E04BE763E083E093E00E94D1\r
+:1013C000B41920E04BE764E083E093E0C454DD4FC0\r
+:1013D0000FB6F894DEBF0FBECDBFDF91CF911F9146\r
+:1013E0000F91FF90EF90DF90CF900C94B41996E49A\r
+:1013F000E5EBF1E0DE01AB55BE4F01900D929A9501\r
+:10140000E1F7E0917101F0917201EE0FFF1F25EA03\r
+:1014100031E02C0F3D1FE20FF31F60817181680FD7\r
+:10142000711D882777FD8095982F0E94AC3120E0B0\r
+:1014300030E040E451E40E94113120E030E040E827\r
+:1014400050E40E94A9309B01AC0160E070E080E0B4\r
+:1014500090E40E94C33221E230ED42E053E40E9466\r
+:1014600060320E94EB0CC454DD4F0FB6F894DEBF1F\r
+:101470000FBECDBFDF91CF911F910F91FF90EF90E5\r
+:10148000DF90CF900C94BE0C893009F0D3C0F801E6\r
+:101490009181943009F0A4C19281992309F4A0C1EB\r
+:1014A00080917101909172010196909372018093E5\r
+:1014B000710120E04BE760E083E093E00E94B41903\r
+:1014C00020E04BE761E083E093E00E94B41920E064\r
+:1014D0004BE762E083E093E00E94B41920E04BE721\r
+:1014E00063E083E093E00E94B41920E04BE764E0FE\r
+:1014F00083E093E00E94B4190E94BE0C00E010E06B\r
+:10150000E6E4FE2E80917301E5EBF1E0DE01A15AE5\r
+:10151000BE4F9F2D01900D929A95E1F7E0917101D8\r
+:10152000F0917201E00FF11FEE0FFF1F2FE531E088\r
+:101530002C0F3D1FE20FF31F60817181680F711D39\r
+:10154000882777FD8095982F0E94AC3120E030E00D\r
+:1015500040E451E40E94113120E030E040E850E4E2\r
+:101560000E94A9309B01AC0160E070E080E090E453\r
+:101570000E94C33221E230ED42E053E40E94603227\r
+:101580004CE050E00E94BB0F3FEF87EE93E03150FC\r
+:1015900080409040E1F700C0000080917301E5EBCE\r
+:1015A000F1E0DE01A75EBE4F9F2D01900D929A954E\r
+:1015B000E1F7E0917101F0917201E00FF11FEE0F80\r
+:1015C000FF1F29E131E02C0F3D1FE20FF31F608167\r
+:1015D0007181680F711D882777FD8095982F0E9473\r
+:1015E000AC3120E030E040E451E40E94113120E0D1\r
+:1015F00030E040E850E40E94A9309B01AC0160E07B\r
+:1016000070E080E090E40E94C33221E230ED42E0DD\r
+:1016100053E40E9460320E94EB0C8FEF9CE701972D\r
+:10162000F1F700C000000F5F1F4F0830110509F0EF\r
+:1016300069CF94C1883009F0D3C0F801918194300A\r
+:1016400009F0CEC09281992309F4CAC0809171013A\r
+:10165000909172010197909372018093710120E043\r
+:101660004BE760E083E093E00E94B41920E04BE791\r
+:1016700061E083E093E00E94B41920E04BE762E070\r
+:1016800083E093E00E94B41920E04BE763E083E03D\r
+:1016900093E00E94B41920E04BE764E083E093E01C\r
+:1016A0000E94B4190E94BE0C00E010E056E4F52E32\r
+:1016B00080917301E5EBF1E0DE01AD52BF4F9F2D4C\r
+:1016C00001900D929A95E1F7E0917101F09172010C\r
+:1016D000E00FF11FEE0FFF1F23ED30E02C0F3D1F39\r
+:1016E000E20FF31F60817181680F711D882777FDFC\r
+:1016F0008095982F0E94AC3120E030E040E451E426\r
+:101700000E94113120E030E040E850E40E94A9300E\r
+:101710009B01AC0160E070E080E090E40E94C33285\r
+:1017200021E230ED42E053E40E9460324CE050E0B0\r
+:101730000E94BB0F3FEF87EE93E031508040904016\r
+:10174000E1F700C0000080917301E5EBF1E0DE01FC\r
+:10175000A357BF4F9F2D01900D929A95E1F7E0910D\r
+:101760007101F0917201E00FF11FEE0FFF1F2DE8E4\r
+:1017700030E02C0F3D1FE20FF31F60817181680F75\r
+:10178000711D882777FD8095982F0E94AC3120E04D\r
+:1017900030E040E451E40E94113120E030E040E8C4\r
+:1017A00050E40E94A9309B01AC0160E070E080E051\r
+:1017B00090E40E94C33221E230ED42E053E40E9403\r
+:1017C00060320E94EB0C8FEF9CE70197F1F700C0AD\r
+:1017D00000000F5F1F4F0830110509F069CFBEC030\r
+:1017E000F801228190917301222309F45DC026E45F\r
+:1017F000E5EBF1E0DE01A95BBF4F01900D922A9568\r
+:10180000E1F7E0917101F0917201E80FF11DEE0F27\r
+:10181000FF1F27E430E02C0F3D1FE20FF31F608114\r
+:101820007181690F711D882777FD8095982F0E941F\r
+:10183000AC3120E030E040E451E40E9411316B0112\r
+:101840007C01F801818165E070E0681B71098827DF\r
+:1018500077FD8095982F0E94AC319B01AC01C701A8\r
+:10186000B6010E94A9309B01AC0160E070E080E00D\r
+:1018700090E40E94C33221E230ED42E053E40E9442\r
+:1018800060324FE050E0C454DD4F0FB6F894DEBF35\r
+:101890000FBECDBFDF91CF911F910F91FF90EF90C1\r
+:1018A000DF90CF900C94BB0F26E4E5EBF1E0DE0176\r
+:1018B000119601900D922A95E1F7E0917101F09156\r
+:1018C0007201E80FF11DEE0FFF1F21E030E02C0F39\r
+:1018D0003D1FE20FF31F60817181690F711D882721\r
+:1018E00077FD8095982F0E94AC3120E030E040E4F5\r
+:1018F00051E40E9411316B017C01F801818165E0A6\r
+:1019000070E0681B7109882777FD8095982F0E94E9\r
+:10191000AC319B01AC01C701B6010E94A9309B010B\r
+:10192000AC0160E070E080E090E40E94C33221E20C\r
+:1019300030ED42E053E40E946032C454DD4F0FB6F4\r
+:10194000F894DEBF0FBECDBFDF91CF911F910F91F5\r
+:10195000FF90EF90DF90CF900C94EB0CC454DD4FD0\r
+:101960000FB6F894DEBF0FBECDBFDF91CF911F91B0\r
+:101970000F91FF90EF90DF90CF9008951092870223\r
+:1019800010928602809171008D7F8093710080910A\r
+:1019900090008F7780939000109248021092470237\r
+:1019A00010928002109281021092820210928302A1\r
+:1019B00010927F0210927E02EEE5F2E0AEE4B2E019\r
+:1019C00011921192119211921D921D9282E0EE37A6\r
+:1019D000F807B1F708956F927F928F929F92AF921E\r
+:1019E000BF92CF92DF92EF92FF920F931F93CF930C\r
+:1019F000DF936B017C010EE712E04CE5A42E42E080\r
+:101A0000B42EC7E0D0E0A7019601F801929182912F\r
+:101A1000729162918F010E940D31882349F02197C4\r
+:101A2000F2E0AF1AB108CF3F8FEFD80761F734C0AB\r
+:101A3000F8011082118212821382F5011182108244\r
+:101A4000FE01EE0FFF1FEE0FFF1FE25AFD4FDE01FA\r
+:101A5000AA0FBB1FA25BBD4FCE011AC001964481E5\r
+:101A600055816681778140835183628373831482B9\r
+:101A700015821682178212962D913C91139711961A\r
+:101A80003C932E9313961C921E92129734961296A4\r
+:101A90008730910519F7C3CF809186029091870214\r
+:101AA000019797FD05C0909387028093860204C03A\r
+:101AB0001092870210928602E0918602F0918702CE\r
+:101AC0003097C9F4809171008D7F8093710080916F\r
+:101AD00090008F7780939000109280021092810284\r
+:101AE000109282021092830210927F0210927E0264\r
+:101AF0001092470285C03197DF01AA0FBB1FAA0FC2\r
+:101B0000BB1FA25ABD4FCD90DD90ED90FC90EE0F23\r
+:101B1000FF1FE25BFD4FC081D18160908002709019\r
+:101B200081028090820290908302A7019601662D27\r
+:101B3000772D882D992D0E940D3187FF25C0262DE8\r
+:101B4000372D482D592DC701B6010E94A83020E03D\r
+:101B500030E04AEF54E40E9411315B018C012A2DE0\r
+:101B60003B2D402F512F662D772D882D992D0E94CA\r
+:101B7000A9303B014C01A7019601772D992D0E94B8\r
+:101B80000D31181664F72EC0A7019601662D772D2A\r
+:101B9000882D992D0E945C32181634F5A701960104\r
+:101BA000662D772D882D992D0E94A83020E030E0F9\r
+:101BB0004AEF54E40E9411315B018C012A2D3B2D28\r
+:101BC000402F512F662D772D882D992D0E94A830FA\r
+:101BD0003B014C01A7019601772D992D0E945C32A3\r
+:101BE00087FFECCF10924D02C0928002D09281020A\r
+:101BF000E0928202F0928302D0937F02C0937E0231\r
+:101C0000DF91CF911F910F91FF90EF90DF90CF90D8\r
+:101C1000BF90AF909F908F907F906F9008953E9A65\r
+:101C2000E1E7F0E080818D7F808382E08093900007\r
+:101C30008AE18093910008951F920F920FB60F9240\r
+:101C40001124CF92DF92EF92FF922F933F934F9305\r
+:101C50005F936F937F938F939F93AF93BF93CF9334\r
+:101C6000DF93EF93FF9380914702882309F479C0B3\r
+:101C700020E030E0A90160918002709181028091A2\r
+:101C80008202909183020E945C3218160CF069C0A7\r
+:101C900020E030E040E251E46091490270914A0254\r
+:101CA00080914B0290914C020E945C321816BCF459\r
+:101CB00080918402909185020196609186027091D4\r
+:101CC00087020E9448349093850280938402109288\r
+:101CD000490210924A0210924B0210924C02C0919B\r
+:101CE0008402D0918502CC0FDD1FCC0FDD1FC25ABC\r
+:101CF000DD4F288139814A815B8160E074E284E7AD\r
+:101D00009BE40E9411310E94793170939700609397\r
+:101D10009600288139814A815B8160E074E284E722\r
+:101D20009BE40E9411310E947931759567957093FB\r
+:101D300099006093980020E030E040E85FE3609114\r
+:101D4000490270914A0280914B0290914C020E948C\r
+:101D5000A9306093490270934A0280934B0290939A\r
+:101D60004C0280914802882309F493C0C09043023A\r
+:101D7000D0904402E0904502F090460220E030E02E\r
+:101D8000A901C701B6010E945C321816F4F4A7013C\r
+:101D9000960160E074E284E79BE40E9411310E94A6\r
+:101DA00079317093970060939600A701960160E0E7\r
+:101DB00074E284E79BE40E9411310E9479317595A9\r
+:101DC0006795709399006093980060913D027091BF\r
+:101DD0003E026F5F7F4F70933E0260933D0280E052\r
+:101DE00090E00E94AA3120913F0230914002409140\r
+:101DF0004102509142020E945C3287FD4AC08091AC\r
+:101E00003C028F5F80933C029091F0038917A0F011\r
+:101E10008091F503882319F010923C020DC0809147\r
+:101E200071008D7F80937100809190008F778093F7\r
+:101E30009000109248022DC0E091F103F091F2035E\r
+:101E400080913C0298E0899FE00DF11D1124808172\r
+:101E50009181A281B3818093430290934402A09325\r
+:101E60004502B093460220E030E040E85EE3648142\r
+:101E70007581868197810E94603260933F027093E2\r
+:101E80004002809341029093420210923E021092CF\r
+:101E90003D02FF91EF91DF91CF91BF91AF919F9163\r
+:101EA0008F917F916F915F914F913F912F91FF9013\r
+:101EB000EF90DF90CF900F900FBE0F901F9018956E\r
+:101EC0000F931F93CF93DF9300D0CDB7DEB78C0174\r
+:101ED00080914702882331F04A8369830E94BE0CB7\r
+:101EE00069814A8181E0809348021093F203009354\r
+:101EF000F1036093F0034093F503109249021092AE\r
+:101F00004A0210924B0210924C0210923C02F801CD\r
+:101F10004081518162817381409343025093440216\r
+:101F2000609345027093460220E030E040E85EE3B3\r
+:101F300064817581868197810E94603260933F023F\r
+:101F400070934002809341029093420210923E02AD\r
+:101F500010923D02809171008260809371008091A7\r
+:101F600090008068809390000F900F90DF91CF9148\r
+:101F70001F910F9108956F927F928F929F92AF92CF\r
+:101F8000BF92CF92DF92EF92FF920F931F93CF9366\r
+:101F9000DF936B017C01EA018091480281110E946C\r
+:101FA000BE0C81E08093470220E030E0A901C70128\r
+:101FB000B6010E945C3218160CF09AC06090800244\r
+:101FC00070908102809082029090830220E030E045\r
+:101FD000A901662D772D882D992D0E940D31811133\r
+:101FE00028C0C0928002D0928102E0928202F092D8\r
+:101FF0008302D0937F02C0937E02809186029091EB\r
+:102000008702FC01EE0FFF1FEE0FFF1FE25AFD4F8C\r
+:10201000C082D182E282F382FC01EE0FFF1FE25BFD\r
+:10202000FD4FD183C08301969093870280938602EF\r
+:102030005FC0A7019601662D772D882D992D0E94EE\r
+:102040000D3187FF25C0262D372D482D592DC7016D\r
+:10205000B6010E94A83020E030E04AEF54E40E942C\r
+:1020600011315B018C012A2D3B2D402F512F662D04\r
+:10207000772D882D992D0E94A9303B014C01A70195\r
+:102080009601772D992D0E940D31181664F7A9CF6E\r
+:10209000A7019601662D772D882D992D0E945C321F\r
+:1020A00018160CF09ECFA7019601662D772D882D6E\r
+:1020B000992D0E94A83020E030E04AEF54E40E94BD\r
+:1020C00011315B018C012A2D3B2D402F512F662DA4\r
+:1020D000772D882D992D0E94A8303B014C01A70136\r
+:1020E0009601772D992D0E945C3287FFECCF79CF36\r
+:1020F000809171008260809371008091900080686F\r
+:1021000080939000DF91CF911F910F91FF90EF90FE\r
+:10211000DF90CF90BF90AF909F908F907F906F9007\r
+:102120000895809191020895CF93DF9300D01F927C\r
+:10213000CDB7DEB72091FA03243021F523E02983BF\r
+:102140009B838A832093E9008FEF06C095ED9A95D3\r
+:10215000F1F70000882329F09091E800815095FF65\r
+:10216000F5CF8091E80085FF0DC040E050E063E0CE\r
+:1021700070E0CE0101960E947E148091E8008E7777\r
+:102180008093E8000F900F900F90DF91CF9108950A\r
+:10219000CF93DF9300D01F92CDB7DEB72091FA0323\r
+:1021A000243029F522E029839B838A8383E080936E\r
+:1021B000E9008FEF06C095ED9A95F1F700008823AE\r
+:1021C00029F09091E800815095FFF5CF8091E800CB\r
+:1021D00085FF0DC040E050E063E070E0CE01019665\r
+:1021E0000E947E148091E8008E778093E8000F9023\r
+:1021F0000F900F90DF91CF9108952091FA03243032\r
+:10220000F9F422E02093E9002FEF06C035ED3A956E\r
+:10221000F1F70000222329F03091E800215035FF2A\r
+:10222000F5CF2091E80025FF0BC040E050E065E0CD\r
+:1022300070E00E947E148091E8008E778093E80021\r
+:102240000895CF93DF93EC018091FA03843041F538\r
+:1022500081E08093E9008FEF06C095ED9A95F1F744\r
+:102260000000882329F09091E800815095FFF5CF78\r
+:102270008091E80085FF14C040E050E068E070E025\r
+:10228000CE010E947E148091E8008E778093E80052\r
+:1022900088E0FE01A9E8B2E001900D928A95E1F78D\r
+:1022A000DF91CF910895BF92CF92DF92EF92FF928C\r
+:1022B0000F931F93CF93DF937C01B62EE90100E0CB\r
+:1022C00010E0C42ED12C0BC04991202F2B0D2F775D\r
+:1022D0004F776FE0C7010E94B4190F5F1F4F0C15B5\r
+:1022E0001D0594F3DF91CF911F910F91FF90EF9017\r
+:1022F000DF90CF90BF90089570E06F5F7F4F6F7059\r
+:1023000077270C94B4190F931F93CF93C42F633086\r
+:10231000710509F04AC0842F807F803849F18039E7\r
+:1023200009F043C0622F6F7770E080E090E00E9478\r
+:10233000AC3120E030E040E451E40E9411319B01D7\r
+:10234000AC0160E070E080E090E40E94C3320F775F\r
+:1023500010E023E0159507952A95E1F72DEC3CEC6C\r
+:1023600042E053E40E946032A8010E94BB0F1DC0EE\r
+:10237000622F6F7770E080E090E00E94AC3120E047\r
+:1023800030E040E451E40E9411319B01AC0160E077\r
+:1023900070E080E090E40E94C3322DEC3CEC42E01F\r
+:1023A00053E40E9460320E94EB0CCC3F29F4CF91A1\r
+:1023B0001F910F910C94BE0CCF911F910F91089516\r
+:1023C0000F931F93CF93DF93CDB7DEB727970FB649\r
+:1023D000F894DEBF0FBECDBF8C0114C08A810E946D\r
+:1023E0008E199A819D839B819E839C819F838111FD\r
+:1023F0001EC089818430B1F08730A1F08630A1F011\r
+:102400008530A1F0BE016F5F7F4F84E791E00E94AD\r
+:10241000FB1C8111E3CF84E791E00E94EC1C0E9439\r
+:1024200067190DC083E003C082E001C081E0AE0106\r
+:102430004B5F5F4F682FC8010E94211AE3CF279698\r
+:102440000FB6F894DEBF0FBECDBFDF91CF911F91C5\r
+:102450000F910895EF92FF920F93CF93DF9300D0E7\r
+:1024600000D000D0CDB7DEB77B014A832B830C832D\r
+:10247000842F2E834D830E948E192E814D818111D0\r
+:102480001BC082E0E816F10479F083E0E816F1045D\r
+:1024900021F0EA94EF2821F50BC0073F11F487E003\r
+:1024A00001C084E089830BC0273FD9F786E0FACFCB\r
+:1024B000473FB9F785E0F6CF42954F704983BE019B\r
+:1024C0006F5F7F4F84E791E00E94B11C84E791E049\r
+:1024D0000E94CF1C84E791E00E94EC1C0E946719C7\r
+:1024E00026960FB6F894DEBF0FBECDBFDF91CF9119\r
+:1024F0000F91FF90EF9008958091F903811109C029\r
+:102500000E946D160E94CA168091E200846080933A\r
+:10251000E20008951092F9030895089508950C9427\r
+:102520006129809192028F5F8093920262E30E9400\r
+:102530002834911135C01092920280919302882321\r
+:1025400079F18091FA03843049F58091E9008F7028\r
+:102550009091EC0090FF02C090E801C090E0982BB1\r
+:1025600084E08093E9008091EB0080FF14C08091AB\r
+:10257000EE0087FD03C00FC01092F1008091E800CB\r
+:1025800085FDFACF8091E80080FF05C08091E800CA\r
+:102590008E778093E8009F709093E90010929302E9\r
+:1025A000089542E061EC81E00E94E31542E061ECB5\r
+:1025B00082E00E94E31542E061EC83E00E94E315B3\r
+:1025C00042E261EC84E00E94E31542E361E885E0C9\r
+:1025D0000E94E31542E360E886E00C94E3158091E5\r
+:1025E000FC03833009F454C030F4813071F0823040\r
+:1025F00009F0A5C08CC08A3009F479C08B3009F489\r
+:102600005FC0893009F09BC020C08091FB03813AF4\r
+:1026100009F095C08091E800877F8093E800809161\r
+:10262000FF0390910004892B21F060E080E090E0AE\r
+:1026300003C068E089E892E070E00E941C15809178\r
+:10264000E8008B778093E80008958091FB03813246\r
+:1026500009F075C08091FF0390910004892B09F067\r
+:102660006EC08091E800877F8093E80005C080916C\r
+:10267000FA03882309F463C08091E80082FFF7CF52\r
+:102680008091F100809391028091E8008B7753C094\r
+:102690008091FB03813A09F052C08091FF03909131\r
+:1026A0000004892B09F04BC08091E800877F80935C\r
+:1026B000E8008091E80080FFFCCF80918A0136C05D\r
+:1026C0008091FB038132D9F58091FF039091000442\r
+:1026D000892BA9F58091E800877F8093E8000E940C\r
+:1026E0001A168091FD0380938A010C9456238091E1\r
+:1026F000FB03813221F58091E800877F8093E80019\r
+:102700000E941A168091FE0380938802089580919A\r
+:10271000FB03813AA1F48091E800877F8093E80071\r
+:102720008091E80080FFFCCF809188028093F100C7\r
+:102730008091E8008E778093E8000C941A16089533\r
+:1027400083E093E00E94F0196AE272E183E093E093\r
+:102750000E94461A60EE71E183E093E00E944A1AFB\r
+:1027600084B7877F84BF88E10FB6F89480936000B8\r
+:10277000109260000FBE90E080E80FB6F89480934E\r
+:102780006100909361000FBE0E94741D0E946D163F\r
+:102790000E94CA168091E20084608093E2007894DF\r
+:1027A00063E871E183E093E00E94EC196CE771E16A\r
+:1027B00083E093E00E94E41963E571E183E093E034\r
+:1027C0000E94E8190E940F0E0E9467190E94761D50\r
+:1027D00080E891E00E94201D0BC00E941E2980917C\r
+:1027E000F803882329F00E94492981110E94681466\r
+:1027F0008091FA03853089F383E093E00E94F91B0E\r
+:102800000E94801DF5CF292F332723303105B1F0E9\r
+:102810004CF42130310509F44DC02230310509F066\r
+:102820004EC007C02132310541F12232310591F10C\r
+:1028300046C0E0EDF0E084EE93E045C0992781309A\r
+:10284000910569F08230910589F0892B09F037C034\r
+:10285000E0EEF3E0E491F0E080EE93E034C0E2EBF0\r
+:10286000F3E0E491F0E082EB93E02DC0E6E8F3E0E2\r
+:10287000E491F0E086E893E026C0643000F5E62FAE\r
+:10288000F0E0EE0FFF1FE550FE4F80819181E9E0FF\r
+:10289000F0E019C0643098F4E62FF0E0DF01AA0FF1\r
+:1028A000BB1FAD5FBD4F8D919C91E55FFD4FE081FA\r
+:1028B000F0E009C0E2E1F0E084EB94E004C0E0E085\r
+:1028C000F0E080E090E0DA018D939C93CF010895D1\r
+:1028D00080E189BD82E189BD09B400FEFDCF809110\r
+:1028E000D8008F7D8093D8008091E0008260809333\r
+:1028F000E0008091E00081FDFCCF0895BF92CF926F\r
+:10290000DF92EF92FF920F931F93CF93DF937C019F\r
+:102910008B01EA010E943B16B82E811133C020972B\r
+:1029200031F028813981021B130BE20EF31EC12CFA\r
+:10293000D12C23C08091E80085FD15C08091E8006E\r
+:102940008E778093E800209749F0888199818C0DDB\r
+:102950009D1D9983888325E0B22E14C00E943B16EA\r
+:10296000882359F00EC0F70181917F018093F10017\r
+:1029700001501109FFEFCF1ADF0A01151105D1F639\r
+:1029800001C0B82E8B2DDF91CF911F910F91FF9039\r
+:10299000EF90DF90CF90BF900895BF92CF92DF92DB\r
+:1029A000EF92FF920F931F93CF93DF937C018B01E4\r
+:1029B000EA010E943B16B82E811133C0209731F0F6\r
+:1029C00028813981021B130BE20EF31EC12CD12C7E\r
+:1029D00023C08091E80085FD15C08091E8008B77C9\r
+:1029E0008093E800209749F0888199818C0D9D1D86\r
+:1029F0009983888345E0B42E14C00E943B16882337\r
+:102A000059F00EC08091F100F70181937F010150D0\r
+:102A10001109FFEFCF1ADF0A01151105D1F601C028\r
+:102A2000B82E8B2DDF91CF911F910F91FF90EF90DA\r
+:102A3000DF90CF90BF90089540910104509102041F\r
+:102A40004617570748F06115710539F44091E800C1\r
+:102A50004E774093E80001C0BA01FC0140E033C06A\r
+:102A60008091FA03882309F444C0853009F443C0F7\r
+:102A70008091E80083FD41C08091E80082FD33C071\r
+:102A80008091E80080FF1FC09091F3008091F200D8\r
+:102A9000392F20E0A901482BCA0106C0419140937B\r
+:102AA000F1006150710901966115710519F08830C6\r
+:102AB0009105A0F341E0089709F040E08091E8001B\r
+:102AC0008E778093E8006115710551F64111C8CFEA\r
+:102AD0000AC08091FA03882361F0853061F080910B\r
+:102AE000E80083FD0AC08091E80082FFF2CF80E019\r
+:102AF000089582E0089583E0089581E0089540916B\r
+:102B00000104509102044617570748F061157105FA\r
+:102B100039F44091E8004E774093E80001C0BA01D3\r
+:102B2000FC0140E034C08091FA03882309F445C0D9\r
+:102B3000853009F444C08091E80083FD42C0809153\r
+:102B4000E80082FD34C08091E80080FF20C09091B1\r
+:102B5000F3008091F200392F20E0A901482BCA012F\r
+:102B600007C044914093F10031966150710901967C\r
+:102B70006115710519F08830910598F341E00897C7\r
+:102B800009F040E08091E8008E778093E8006115BD\r
+:102B9000710549F64111C7CF0AC08091FA03882315\r
+:102BA00061F0853061F08091E80083FD0AC080917A\r
+:102BB000E80082FFF2CF80E0089582E0089583E08C\r
+:102BC000089581E00895982F2CC09093E9009817FC\r
+:102BD00039F07091EC002091ED005091F00003C0AD\r
+:102BE000242F762F50E021FD02C09F5F1AC0309144\r
+:102BF000EB003E7F3093EB003091ED003D7F309352\r
+:102C0000ED003091EB0031603093EB007093EC00FD\r
+:102C10002093ED005093F0002091EE0027FDE5CFCA\r
+:102C200007C0973090F28F708093E90081E008959B\r
+:102C300080E008958091FB0387FD05C08091E80046\r
+:102C400080FF0EC012C08091E80082FD05C0809117\r
+:102C5000FA038111F8CF08958091E8008B7708C0BE\r
+:102C60008091FA038111EACF08958091E8008E7770\r
+:102C70008093E80008958091E4009091E50045E696\r
+:102C80002091EC0020FD1FC023C02091FA032223D5\r
+:102C900091F0253091F02091EB0025FD10C020919E\r
+:102CA000E4003091E5002817390751F34150C9017C\r
+:102CB00039F784E0089582E0089583E0089581E083\r
+:102CC000089580E008952091E80020FFDECFF9CF3D\r
+:102CD0002091E80022FFD9CFF4CF0E94DB160E949A\r
+:102CE000E316E0EEF0E0808181608083E8EDF0E0C3\r
+:102CF00080818F77808319BCA7EDB0E08C918E7FA7\r
+:102D00008C9380818F7E80831092F90308950F93B6\r
+:102D10001F93CF93DF930E94DB160E94E316C8ED4A\r
+:102D2000D0E088818F7788838881806888838881D4\r
+:102D30008F7D888319BC1092FA031092F6031092CB\r
+:102D4000F8031092F70300EE10E0F80180818B7F0A\r
+:102D5000808388818160888342E060E080E00E9417\r
+:102D6000E315E1EEF0E080818E7F8083E2EEF0E01B\r
+:102D7000808181608083808188608083F801808188\r
+:102D80008E7F8083888180618883DF91CF911F91BE\r
+:102D90000F910895E8EDF0E080818F7E8083E7ED6C\r
+:102DA000F0E080818160808384E082BF81E0809355\r
+:102DB000F9030C948716E8EDF0E080818E7F808324\r
+:102DC0001092E20008951092DA001092E100089546\r
+:102DD0001F920F920FB60F9211242F933F934F9390\r
+:102DE0005F936F937F938F939F93AF93BF93EF9373\r
+:102DF000FF938091E10082FF0BC08091E20082FF8F\r
+:102E000007C08091E1008B7F8093E1000E949112C6\r
+:102E10008091DA0080FF1FC08091D80080FF1BC026\r
+:102E20008091DA008E7F8093DA008091D90080FF54\r
+:102E30000DC080E189BD82E189BD09B400FEFDCFEE\r
+:102E400081E08093FA030E947C1205C019BC1092A5\r
+:102E5000FA030E948A128091E10080FF19C08091DC\r
+:102E6000E20080FF15C08091E2008E7F8093E20037\r
+:102E70008091E20080618093E2008091D8008062BE\r
+:102E80008093D80019BC85E08093FA030E948E12CB\r
+:102E90008091E10084FF30C08091E20084FF2CC06B\r
+:102EA00080E189BD82E189BD09B400FEFDCF80913A\r
+:102EB000D8008F7D8093D8008091E1008F7E809331\r
+:102EC000E1008091E2008F7E8093E2008091E20039\r
+:102ED00081608093E2008091F603882311F084E002\r
+:102EE00007C08091E30087FF02C083E001C081E05A\r
+:102EF0008093FA030E948F128091E10083FF29C022\r
+:102F00008091E20083FF25C08091E100877F80935C\r
+:102F1000E10082E08093FA031092F6038091E100D1\r
+:102F20008E7F8093E1008091E2008E7F8093E200AB\r
+:102F30008091E20080618093E20042E060E080E006\r
+:102F40000E94E3158091F00088608093F0000E9459\r
+:102F50008D12FF91EF91BF91AF919F918F917F91D2\r
+:102F60006F915F914F913F912F910F900FBE0F90F6\r
+:102F70001F9018951F920F920FB60F9211242F9346\r
+:102F80003F934F935F936F937F938F939F93AF93F1\r
+:102F9000BF93CF93EF93FF938091E9008F7090914F\r
+:102FA000EC0090FF02C090E801C090E0C92FC82B50\r
+:102FB0001092E9008091F000877F8093F000789470\r
+:102FC0000E94FE171092E9008091F00088608093C3\r
+:102FD000F000CF70C093E900FF91EF91CF91BF91C6\r
+:102FE000AF919F918F917F916F915F914F913F91A1\r
+:102FF0002F910F900FBE0F901F9018951F93CF9396\r
+:10300000DF93CDB7DEB7AC970FB6F894DEBF0FBE37\r
+:10301000CDBFEBEFF3E08091F100819324E0E3304A\r
+:10302000F207C9F70E94EF128091E80083FF37C1D1\r
+:103030008091FB039091FC03953009F488C038F42B\r
+:103040009130B1F170F0933009F029C131C098305E\r
+:1030500009F4F8C0993009F404C1963009F01FC191\r
+:103060009DC0803821F0823809F019C108C08091D4\r
+:10307000F7039091F803992389F082600FC0809143\r
+:10308000FF03909100048F7099278093E90080914D\r
+:10309000EB0085FB882780F91092E9009091E80009\r
+:1030A000977F9093E8008093F1001092F100D5C0D3\r
+:1030B000882319F0823009F0F2C08F7121F082303C\r
+:1030C00009F0EDC00BC08091FD03813009F0E7C02D\r
+:1030D000933009F080E08093F8032FC08091FD03C6\r
+:1030E00081112BC08091FF03909100048F7099276C\r
+:1030F000009709F4D4C08093E9002091EB0020FFF1\r
+:103100001CC02091FC03233021F48091EB008062ED\r
+:1031100012C09091EB0090619093EB0021E030E0C1\r
+:1031200001C0220F8A95EAF72093EA001092EA0084\r
+:103130008091EB0088608093EB001092E900809111\r
+:10314000E800877F8093E8000E941A16A8C08111CA\r
+:10315000A6C08091FD039091FE038F779927182FC9\r
+:103160009091E3009078982B9093E3008091E80091\r
+:10317000877F8093E8000E941A168091E80080FF04\r
+:10318000FCCF8091E30080688093E300112311F06D\r
+:1031900083E001C082E08093FA0381C080588230CE\r
+:1031A00008F07DC08091FD039091FE038C3D23E0EB\r
+:1031B000920779F583E08A838AE289834FB7F8948E\r
+:1031C000DE01139620E03EE051E2E32FF0E0509361\r
+:1031D0005700E49120FF03C0E295EF703F5FEF706E\r
+:1031E0008E2F90E0EA3010F0C79601C0C0968D9304\r
+:1031F0009D932F5F243149F74FBF8091E800877F6F\r
+:103200008093E8006AE270E0CE0101960E941C15EE\r
+:1032100013C0AE01455D5F4F6091FF030E94031430\r
+:103220000097E9F12091E800277F2093E800BC0196\r
+:103230008BA59CA50E947F158091E8008B778093D9\r
+:10324000E8002DC0803859F58091E800877F809391\r
+:10325000E8008091F6038093F1008091E8008E777A\r
+:1032600071CF81111CC09091FD039230C0F4809108\r
+:10327000E800877F8093E8009093F6030E941A1677\r
+:103280008091F603811104C08091E30087FF02C0A2\r
+:1032900084E001C081E08093FA030E94D112809102\r
+:1032A000E80083FF0AC08091E800877F8093E800F0\r
+:1032B0008091EB0080628093EB00AC960FB6F8949F\r
+:1032C000DEBF0FBECDBFDF91CF911F910895CF9389\r
+:1032D0008091FA038823B1F08091E9008F7090917A\r
+:1032E000EC0090FF02C090E801C090E0C92FC82B0D\r
+:1032F0001092E9008091E80083FD0E94FE17CF70D4\r
+:10330000C093E900CF910895881F8827881F0895EA\r
+:1033100091E0883F08F490E0892F0895982F907FDE\r
+:10332000903B99F038F4903981F0903A71F09038F0\r
+:10333000C9F40BC0903DA1F018F4903C99F410C072\r
+:10334000903E19F0903F71F402C083E00895E82F99\r
+:10335000E15FEF3038F4F0E0E15FFD4F80810895E8\r
+:1033600082E0089580E008950F932F774F776F7074\r
+:10337000606BDC01ED91FC91022F242F462F63E05E\r
+:1033800070E009950F9108950F932F774F776F7025\r
+:103390006069DC01ED91FC91022F242F462F63E040\r
+:1033A00070E009950F9108950F932F774F776F7005\r
+:1033B0006068DC01ED91FC91022F242F462F63E021\r
+:1033C00070E009950F910895FC017383628308955D\r
+:1033D000FC01738F628F0895FC01758F648F0895CF\r
+:1033E000CF93DF93EC011DA21FA21EA2BC01685D5A\r
+:1033F0007F4F40EC88519F4F0E942D1C1B821A82E8\r
+:103400001D821C821F821E82198618861B861A86C0\r
+:103410001D861C861F861E86198A188A1B8A1A8A90\r
+:103420001D8A1C8A1F8A1E8A198E188E1B8E1A8E60\r
+:103430001D8E1C8E1F8E1E8E19A218A2DF91CF9199\r
+:103440000895CF92DF92FF920F931F93CF93DF9354\r
+:103450001F92CDB7DEB7F62E6A018C0108511F4FBF\r
+:1034600008C0F60161916F01C80149830E94341CB4\r
+:1034700049818C2D841B8F15A0F30F90DF91CF9184\r
+:103480001F910F91FF90DF90CF900895FC01718301\r
+:1034900060830895FC0171A360A30895AF92BF9269\r
+:1034A000CF92DF92EF92FF920F931F93CF93DF9310\r
+:1034B00000D01F92CDB7DEB77C016B01142FB22E66\r
+:1034C000A02EDC0195968C9195978430F1F45A9654\r
+:1034D000ED91FC915B97309709F4D8C0CB0101972F\r
+:1034E00063E070E00E943434DB01AA0FBB1FA60F1B\r
+:1034F000B71F49832A830B834C2D4A1B9E012F5FE4\r
+:103500003F4FBD01C7010995B1C06230710509F493\r
+:1035100053C06330710529F06130710509F09CC01A\r
+:1035200083C0842F807F803A01F130F48038B9F075\r
+:10353000803909F0ABC00DC0803EE9F0803F09F151\r
+:10354000803B09F0A3C0D7011296ED91FC9113972F\r
+:1035500023C0D7011496ED91FC9115971DC0D7019A\r
+:103560001696ED91FC91179717C0D7011896ED911B\r
+:10357000FC91199711C0D7011A96ED91FC911B97F8\r
+:103580000BC0423F09F082C0D7011C96ED91FC911F\r
+:103590001D97309731F47AC0309709F477C0123F05\r
+:1035A00021F42A2D4B2D62EF04C0612F6F702A2D5C\r
+:1035B0004B2DC70109955AC0842F807F803D59F05B\r
+:1035C000803F79F0803C09F061C0D7011E96ED91F3\r
+:1035D000FC911F9719C0D7015096ED91FC9151971E\r
+:1035E00013C0433F31F4D7015296ED91FC915397AC\r
+:1035F00008C0413F09F04AC0D7015496ED91FC91B3\r
+:103600005597309741F442C0309709F43FC0133FBB\r
+:1036100011F0113F19F44B2D612F03C0612F6F7012\r
+:103620004B2DC701099522C0842F0E948819882339\r
+:1036300031F0D7015696ED91FC91579707C0163F90\r
+:1036400029F5D7015896ED91FC9159973097F1F0F3\r
+:10365000612FC70109950AC064307105A8F416C02E\r
+:103660000A2D2B2D412FB601C7010995D7015E9672\r
+:10367000ED91FC915F97309789F00A2D2B2D412F0A\r
+:10368000B601C70109950AC0C12CD12CD7015C969F\r
+:10369000ED91FC915D97309719F7E8CF0F900F905F\r
+:1036A0000F90DF91CF911F910F91FF90EF90DF90DE\r
+:1036B000CF90BF90AF900895EF92FF920F931F931A\r
+:1036C000CF93DF93EC01162F862F0E948819882351\r
+:1036D00069F0FDA081E08DA300E020E0412F61E0D2\r
+:1036E00070E0CE010E944E1AFDA27CC0812F0E9484\r
+:1036F00084194DA1882309F440C0443029F01AA34D\r
+:1037000021E030E03FA32EA3812F0E948E1981304B\r
+:1037100031F070F0823051F0833059F507C08DA33D\r
+:1037200000E020E0412F61E070E01EC08DA35AC090\r
+:10373000103F19F0173FE9F404C084E08DA31AA3E9\r
+:103740003FC02EA13FA1C90163E070E00E94343464\r
+:103750008C0F9D1FFC0112A3B9016F5F7F4F7FA3E8\r
+:103760006EA30CA12BA14AA1CE010E944E1A1DA24C\r
+:1037700039C01DA21FA21EA235C0442399F12EA15B\r
+:103780003FA1C90163E070E00E9434347C01FE0176\r
+:10379000E80FF91F12A3B9016F5F7F4F7FA36EA3DC\r
+:1037A0008130910591F082E0E816F104D9F40CA182\r
+:1037B0002BA14AA1CE010E944E1A8DA1843091F016\r
+:1037C00081E090E09FA38EA30DC0423059F400E049\r
+:1037D0002BA14AA1CE010E944E1A8DA1843011F076\r
+:1037E000FFA2EEA2DF91CF911F910F91FF90EF907A\r
+:1037F0000895CF92DF92EF92FF920F931F93CF9392\r
+:10380000DF93EC01E8A1F9A1309709F009958E0149\r
+:1038100008511F4FC8010E94661CE12CF12CC82ED4\r
+:10382000D12C0FC060E0C8010E947A1C682FCE0125\r
+:103830000E945C1B61E0C8010E948B1C8FEFE81A9C\r
+:10384000F80AEC14FD0470F3DF91CF911F910F91F2\r
+:10385000FF90EF90DF90CF900895FC014283748336\r
+:1038600063831182108208950F931F93CF93DF9388\r
+:10387000EC01062F0E94AC1C182F298130E0C901F1\r
+:1038800001966A8170E00E944834488150E08417B4\r
+:10389000950729F4812F0E94AF1C80E012C0EB81B4\r
+:1038A000FC81E20FF31F00832981822F90E00196B3\r
+:1038B0006A8170E00E9448348983812F0E94AF1C86\r
+:1038C00081E0DF91CF911F910F910895CF93DF9306\r
+:1038D000EC010E94AC1C29819881291710F0C22F9D\r
+:1038E00002C0CA81C20FC91B0E94AF1C8C2FDF917E\r
+:1038F000CF910895FC012081862F90E0820F911DC9\r
+:10390000628170E00E9448340380F481E02DE80F6A\r
+:10391000F91F808108950F931F93CF93DF931F9218\r
+:10392000CDB7DEB78C0169830E94AC1C482FF8012B\r
+:1039300080816981262F30E0280F311D6281C90105\r
+:1039400070E00E9448348083842F0F90DF91CF91E4\r
+:103950001F910F910C94AF1C8FB7F89408958FBFEF\r
+:103960000895FC01CB012091FA032430B1F42181A8\r
+:103970002F702093E90040E050E064E070E00E9486\r
+:103980007E1481110BC09091E80095FD07C09091C5\r
+:10399000E8009E779093E800089582E008952091D2\r
+:1039A000FA032430A9F4FC0181818F708093E9002F\r
+:1039B0003091F3002091F200932F80E0822B892B2D\r
+:1039C00049F08091E8008E778093E8000C943B16D4\r
+:1039D00082E0089580E008952091FA03243051F4A4\r
+:1039E000FC0121812F702093E9002091E80020FD47\r
+:1039F0000C94CF1C0895FC01CB012091FA032430D4\r
+:103A000011F080E0089526812F702093E900209125\r
+:103A1000E80022FFF6CF2091E80025FFF2CF40E03A\r
+:103A200050E064E070E00E94CD148091E80085FDD4\r
+:103A300005C08091E8008B778093E80081E00895CD\r
+:103A400090939502809394020895E0919402F091EE\r
+:103A50009502309721F00190F081E02D099480E0EB\r
+:103A60000895E0919402F0919502309721F0028040\r
+:103A7000F381E02D09940895E0919402F09195026C\r
+:103A8000309721F00480F581E02D0994089520916C\r
+:103A90009602309197028217930771F090939702E4\r
+:103AA00080939602E0919402F0919502309721F074\r
+:103AB0000680F781E02D09940895209198023091B5\r
+:103AC00099028217930771F090939902809398025C\r
+:103AD000E0919402F0919502309721F00084F185F5\r
+:103AE000E02D0994089508950C94731D0E94952962\r
+:103AF0000E94AD060E94692A0C9411300C94E705CF\r
+:103B00005F926F927F928F929F92AF92BF92CF926D\r
+:103B1000DF92EF92FF920F931F93CF93DF93CDB776\r
+:103B2000DEB72A970FB6F894DEBF0FBECDBF0E9456\r
+:103B3000BD079AE9C92E92E0D92E00E010E0AA2430\r
+:103B4000A394B12C502E802F0E9411093C01F60144\r
+:103B5000E190F1906F01E826F926E114F10431F4C7\r
+:103B60000F5F1F4F0530110569F73AC08091F002D1\r
+:103B700081FD0E941A0920E030E04501022E02C0BA\r
+:103B8000880C991C0A94E2F7C4018E219F21892B8D\r
+:103B900009F12E835F826820792081E0672809F48B\r
+:103BA00080E088870E949E298160782F9A87898784\r
+:103BB0004E815F8168858A850E94391EF801EE0F6B\r
+:103BC000FF1FE656FD4F80819181882599259183BD\r
+:103BD000808316C02F5F3F4F2C30310571F6C0CF68\r
+:103BE0008FEF89838A831B820E949E298160782FB0\r
+:103BF0009D838C8349815A816B818D810E94391EFE\r
+:103C00000E94562D1091A4020E94251D1817D9F06C\r
+:103C10000E94251D8093A4022A960FB6F894DEBF59\r
+:103C20000FBECDBFDF91CF911F910F91FF90EF900D\r
+:103C3000DF90CF90BF90AF909F908F907F906F90CC\r
+:103C40005F900C947E1D2A960FB6F894DEBF0FBECF\r
+:103C5000CDBFDF91CF911F910F91FF90EF90DF903B\r
+:103C6000CF90BF90AF909F908F907F906F905F901C\r
+:103C70000895CF93DF93CDB7DEB72B970FB6F894A7\r
+:103C8000DEBF0FBECDBF4F83588769877A878B878A\r
+:103C9000DE01119686E0FD0111928A95E9F785E033\r
+:103CA000FE01379601900D928A95E1F749815A817C\r
+:103CB0006B817C818D819E810E9415262B960FB68B\r
+:103CC000F894DEBF0FBECDBFDF91CF910895CF93A3\r
+:103CD000C82F882309F4C1C0823859F40E94251DD9\r
+:103CE00081FDBBC089E30E947C280E94F82889E3FB\r
+:103CF0000CC0833879F40E94251D80FDAEC083E599\r
+:103D00000E947C280E94F82883E50E949E28CF917B\r
+:103D10000C94F828843859F40E94251D82FD9DC01A\r
+:103D200087E40E947C280E94F82887E4EECF845024\r
+:103D3000813A48F48C2F0E94732F81118EC08C2FF2\r
+:103D40000E947C28E4CF8C2F805E883050F4C770AE\r
+:103D500081E090E001C0880FCA95EAF70E94BF2871\r
+:103D6000D6CF8C2F855A833078F4C53A29F0C63ADD\r
+:103D700031F482E890E005C081E890E002C083E879\r
+:103D800090E0CF910C94471D8C2F885A833108F016\r
+:103D900064C0C83A39F1C93A41F1CA3A49F1CB3A5B\r
+:103DA00051F1CC3A59F1CD3A61F1C03B69F1CE3ACB\r
+:103DB00071F1CF3A79F1C13B81F1C23B89F1C33B4B\r
+:103DC00091F1C43B99F1C53BA1F1C63BA9F1C73BB9\r
+:103DD000B1F1C83BB9F1C93BC1F1CA3BC9F58AE2AF\r
+:103DE00092E038C082EE90E035C089EE90E032C0BB\r
+:103DF0008AEE90E02FC085EB90E02CC086EB90E03F\r
+:103E000029C087EB90E026C08CEC90E023C08DECBD\r
+:103E100090E020C083E891E01DC08AE891E01AC0DC\r
+:103E200082E991E017C084E991E014C081E292E058\r
+:103E300011C083E292E00EC084E292E00BC085E202\r
+:103E400092E008C086E292E005C087E292E002C0FC\r
+:103E500080E090E0CF910C945D1DCF910895882370\r
+:103E600009F44DC0823859F40E94251D81FF47C0D6\r
+:103E700089E30E947C280E94F82889E30CC08338DB\r
+:103E800071F40E94251D80FF3AC083E50E947C28C2\r
+:103E90000E94F82883E50E949E280C94F828843814\r
+:103EA00059F40E94251D82FF2AC087E40E947C28C5\r
+:103EB0000E94F82887E4EFCF982F9450913A08F4A5\r
+:103EC000EACF982F905E983058F4282F277081E021\r
+:103ED00090E001C0880F2A95EAF70E94C528DDCF3F\r
+:103EE000982F955A933020F480E090E00C94471D71\r
+:103EF000885A833120F480E090E00C945D1D089591\r
+:103F0000882321F00E94BF280C94F8280895882364\r
+:103F100021F00E94C5280C94F8280895BF92CF92F2\r
+:103F2000DF92EF92FF920F931F93CF93DF93CDB762\r
+:103F3000DEB727970FB6F894DEBF0FBECDBF8C015A\r
+:103F400085E0F801DE01119601900D928A95E1F766\r
+:103F5000F80130812181F280558152955F70838113\r
+:103F60009481892B39F02F3F41F481E090E03F3F6D\r
+:103F700031F003C081E090E002C080E090E080FD7D\r
+:103F800073C339832A8389819A815E830E94392889\r
+:103F9000B92E8F830E9438280E9460272B2D2295EE\r
+:103FA0002F7030E05E816F812530310509F4E6C065\r
+:103FB0006CF4243031050CF0A2C04B2D407F8B2DCA\r
+:103FC0008F70223031050CF045C017C02C30310500\r
+:103FD0004CF42A3031050CF0E7C12830310509F0E6\r
+:103FE00043C3E5C02D30310509F4BAC20CF4A2C2B6\r
+:103FF0002F30310509F038C323C3182F411101C0F8\r
+:1040000002C01295107FFF2059F0112309F46BC2F2\r
+:10401000812F6F830E94CF280E94F8286F8163C28E\r
+:10402000862F0E942F1F112309F41EC3812F0E9487\r
+:10403000D52827960FB6F894DEBF0FBECDBFDF910F\r
+:10404000CF911F910F91FF90EF90DF90CF90BF9095\r
+:104050000C94F828403211F08295807F662319F085\r
+:10406000613071F523C0FF20B1F0511101C032C0A1\r
+:10407000513081F527960FB6F894DEBF0FBECDBF45\r
+:10408000DF91CF911F910F91FF90EF90DF90CF9034\r
+:10409000BF900C94DF28511101C003C0513009F4C6\r
+:1040A000E3C28E830E94E2288E819AC1FF2021F014\r
+:1040B000563008F0D9C20EC0553008F0D5C290C1B4\r
+:1040C000FF20C9F0552331F0F801958190FF0BC214\r
+:1040D0009F70958327960FB6F894DEBF0FBECDBFB5\r
+:1040E000DF91CF911F910F91FF90EF90DF90CF90D4\r
+:1040F000BF900C94801F552309F472C109C22B2D67\r
+:1041000026952695237030E02115310529F02130C0\r
+:10411000310509F0A9C219C0FF2021F0862F9B2D7F\r
+:10412000937002C080E090E027960FB6F894DEBF4F\r
+:104130000FBECDBFDF91CF911F910F91FF90EF90F8\r
+:10414000DF90CF90BF900C94471DFF2021F0862F69\r
+:104150009B2D937002C080E090E027960FB6F894F4\r
+:10416000DEBF0FBECDBFDF91CF911F910F91FF90AA\r
+:10417000EF90DF90CF90BF900C945D1D862FFF20B5\r
+:1041800019F00E945C2C02C00E94C42C27960FB626\r
+:10419000F894DEBF0FBECDBFDF91CF911F910F917D\r
+:1041A000FF90EF90DF90CF90BF900C944B2D8B2D14\r
+:1041B000837009F079C0F11057C2262F22952695F9\r
+:1041C0002770220F220F862F8F70C82ED12CE12C42\r
+:1041D000F12C022E04C0CC0CDD1CEE1CFF1C0A943A\r
+:1041E000D2F764FF10C06FE070E080E090E004C0A0\r
+:1041F000660F771F881F991F2A95D2F760957095D3\r
+:104200008095909503C060E070E0CB012B2D269542\r
+:1042100026952370422F50E042305105D9F04330AB\r
+:10422000510569F16C297D298E299F29413051055D\r
+:1042300051F127960FB6F894DEBF0FBECDBFDF91C8\r
+:10424000CF911F910F91FF90EF90DF90CF90BF9093\r
+:104250000C9475276C297D298E299F2927960FB6E6\r
+:10426000F894DEBF0FBECDBFDF91CF911F910F91AC\r
+:10427000FF90EF90DF90CF90BF900C9487270E9423\r
+:104280007527C701B60127960FB6F894DEBF0FBE9B\r
+:10429000CDBFDF91CF911F910F91FF90EF90DF90F5\r
+:1042A000CF90BF900C946327FF2019F08B2D817065\r
+:1042B00001C08695882309F4D7C1262F229526951B\r
+:1042C0002770220F220F862F8F70C82ED12CE12C41\r
+:1042D000F12C022E04C0CC0CDD1CEE1CFF1C0A9439\r
+:1042E000D2F764FF10C06FE070E080E090E004C09F\r
+:1042F000660F771F881F991F2A95D2F760957095D2\r
+:104300008095909503C060E070E0CB012B2D269541\r
+:1043100026952370422F50E042305105D9F04330AA\r
+:10432000510569F16C297D298E299F29413051055C\r
+:1043300051F127960FB6F894DEBF0FBECDBFDF91C7\r
+:10434000CF911F910F91FF90EF90DF90CF90BF9092\r
+:104350000C9414286C297D298E299F2927960FB645\r
+:10436000F894DEBF0FBECDBFDF91CF911F910F91AB\r
+:10437000FF90EF90DF90CF90BF900C9426280E9482\r
+:104380001428C701B60127960FB6F894DEBF0FBEFA\r
+:10439000CDBFDF91CF911F910F91FF90EF90DF90F4\r
+:1043A000CF90BF900C940228603F59F120F4603EFA\r
+:1043B00008F494C008C0623F09F467C0F0F1633F9D\r
+:1043C00009F08CC065C0162F1F708B2D8F71FF20D8\r
+:1043D00021F00E94AD27812F7DCE0E94C827812F1A\r
+:1043E00027960FB6F894DEBF0FBECDBFDF91CF91F9\r
+:1043F0001F910F91FF90EF90DF90CF90BF900C94A2\r
+:10440000871FFF20B1F0553008F02EC18B2D8F7122\r
+:1044100027960FB6F894DEBF0FBECDBFDF91CF91C8\r
+:104420001F910F91FF90EF90DF90CF90BF900C9471\r
+:10443000E727563008F018C1E9CFFF2099F08B2DFF\r
+:104440008F7127960FB6F894DEBF0FBECDBFDF91F8\r
+:10445000CF911F910F91FF90EF90DF90CF90BF9081\r
+:104460000C94AD278B2D8F7127960FB6F894DEBF75\r
+:104470000FBECDBFDF91CF911F910F91FF90EF90B5\r
+:10448000DF90CF90BF900C94C827F110EBCFD7CF1F\r
+:10449000FF2099F08B2D8F7127960FB6F894DEBF11\r
+:1044A0000FBECDBFDF91CF911F910F91FF90EF9085\r
+:1044B000DF90CF90BF900C949E2727960FB6F8946C\r
+:1044C000DEBF0FBECDBFDF91CF911F910F91FF9047\r
+:1044D000EF90DF90CF90BF900C949927FF20A9F028\r
+:1044E000552309F4ACCF862F27960FB6F894DEBF7C\r
+:1044F0000FBECDBFDF91CF911F910F91FF90EF9035\r
+:10450000DF90CF90BF900C94671E552309F4AACF7B\r
+:10451000862F27960FB6F894DEBF0FBECDBFDF9172\r
+:10452000CF911F910F91FF90EF90DF90CF90BF90B0\r
+:104530000C942F1F4B2D4F70C8010E941A03279611\r
+:104540000FB6F894DEBF0FBECDBFDF91CF911F91A4\r
+:104550000F91FF90EF90DF90CF90BF900C94CB26FF\r
+:10456000F11082C09B2D9F70492F50E042305105C1\r
+:1045700099F144F44115510569F04130510509F0B4\r
+:1045800073C019C043305105C1F14430510509F0E1\r
+:104590006BC044C027960FB6F894DEBF0FBECDBFE8\r
+:1045A000DF91CF911F910F91FF90EF90DF90CF900F\r
+:1045B000BF900C94223027960FB6F894DEBF0FBE42\r
+:1045C000CDBFDF91CF911F910F91FF90EF90DF90C2\r
+:1045D000CF90BF900C94393027960FB6F894DEBF79\r
+:1045E0000FBECDBFDF91CF911F910F91FF90EF9044\r
+:1045F000DF90CF90BF900C94553027960FB6F8946B\r
+:10460000DEBF0FBECDBFDF91CF911F910F91FF9005\r
+:10461000EF90DF90CF90BF900C946830862F279654\r
+:104620000FB6F894DEBF0FBECDBFDF91CF911F91C3\r
+:104630000F91FF90EF90DF90CF90BF900C948C3053\r
+:104640004B2D4F70C80127960FB6F894DEBF0FBEF2\r
+:10465000CDBFDF91CF911F910F91FF90EF90DF9031\r
+:10466000CF90BF900C941B0927960FB6F894DEBF2D\r
+:104670000FBECDBFDF91CF911F910F91FF90EF90B3\r
+:10468000DF90CF90BF9008950E94DC280E94B1284F\r
+:104690000E94F8280E94F72D0E944B2D80E090E0A8\r
+:1046A0000E94471D80E090E00C945D1D0E94CC2884\r
+:1046B0000C9444230E943928292F22952F7030E032\r
+:1046C0002C3031054CF42A3031056CF4225031097C\r
+:1046D0002230310590F407C02C30310551F02F30D5\r
+:1046E000310559F406C0803E10F0803F31F481E07E\r
+:1046F000089593FB882780F9089580E00895CF936B\r
+:10470000DF9300D000D01F92CDB7DEB70F900F908F\r
+:104710000F900F900F90DF91CF910895CF93DF937B\r
+:1047200000D000D000D0CDB7DEB726960FB6F894F3\r
+:10473000DEBF0FBECDBFDF91CF9108951F93CF9302\r
+:10474000DF93C091DB0216E012C0D0E01C9FF001A5\r
+:104750001D9FF00D1124E555FD4F4081518162816F\r
+:104760007381848195810E948E232196C7708091E8\r
+:10477000DC02C813EACFDF91CF911F9108954091D9\r
+:10478000A5025091A6026091A7027091A8028091A3\r
+:10479000A9029091AA020C948E230F931F93CF939A\r
+:1047A000DF938091AA0282958F7009F069C0809191\r
+:1047B000A702882309F464C0A091DB02D091DC0237\r
+:1047C000B091A502C091A6028091A8029091A90281\r
+:1047D00021E030E0BF3F11F020E030E0122FBC01BB\r
+:1047E0006095709506E04AC0009721F0CF3F29F40C\r
+:1047F000212F05C021E030E002C020E030E020FDA4\r
+:104800003BC04A2F50E0049FF001059FF00D11249A\r
+:10481000E555FD4F2181C2132FC02081B2132CC05A\r
+:104820002281211129C0238134812817390718F0EA\r
+:10483000281B390B02C0260F371F283C3105E0F436\r
+:104840008091AA028F7080618093AA0286E0849F83\r
+:10485000F001859FF00D1124E055FD4F80818F7090\r
+:104860008061808385EA92E00E948E1FDF91CF9164\r
+:104870001F910F910C949E23AF5FA770AD13B4CF1F\r
+:10488000DF91CF911F910F910895EF92FF920F93B7\r
+:104890001F93CF93DF93CDB7DEB762970FB6F8942F\r
+:1048A000DEBF0FBECDBF8C0185E0F801DE011D9695\r
+:1048B00001900D928A95E1F7D8014C9111965C9187\r
+:1048C000119712966C9112971396ED90FC90149795\r
+:1048D0007091A502E091A6028091A8029091A90290\r
+:1048E000009739F0EF3F41F421E030E07F3F31F0B5\r
+:1048F00003C021E030E002C020E030E020FD5CC1D8\r
+:104900002091A702222309F4F1C0E816F90628F045\r
+:104910009701281B390BC90104C0809590958E0D15\r
+:104920009F1D883C910508F098C08091AA02982F9D\r
+:10493000907F09F064C0E51314C0741312C06111B4\r
+:1049400010C08F7080618093AA020E94BF2385EA05\r
+:1049500092E00E948E1F8091AA02D80115968C9336\r
+:1049600043C1EF2839F05F3F41F481E090E04F3FD1\r
+:1049700031F003C081E090E002C080E090E080FD73\r
+:1049800003C081E0862702C080E090E080FF2EC057\r
+:104990008091DB022091DC0236E013C090E0389F6A\r
+:1049A000F001399FF00D1124E555FD4F718157132A\r
+:1049B00006C07081471303C07281671317C0019648\r
+:1049C00087708213EBCF12C19F7059F0882309F4CE\r
+:1049D0000BC107C09F7029F0F8019581907F09F401\r
+:1049E00003C1805E883008F4FFC0D2C0662309F49A\r
+:1049F000FBC08091AA0281608093AA02F5C0E513F2\r
+:104A000008C0741306C0611104C0D80115968C93B8\r
+:104A10009DC04D875E878D859E856A8B0E945A2337\r
+:104A20006A89882309F4B4C0662309F4B1C02091CF\r
+:104A3000AA02822F82958F7090E002970CF4C6C074\r
+:104A40008091A5029091A60298878F831986FB8694\r
+:104A5000EA862C87CE01079646C08091AA02982F3D\r
+:104A6000907F59F47E2DF98AE88A89890E947F23F4\r
+:104A700085EA92E00E948E1F95C0E51311C0741361\r
+:104A80000FC061110DC0F8018583C8010E948E1FFF\r
+:104A9000E5EAF2E086E0DF011D928A95E9F7A2C01F\r
+:104AA0004D875E878D859E856A8B0E945A236A8911\r
+:104AB000882309F46DC0662309F46AC02091AA0214\r
+:104AC000822F82958F7090E002970CF47FC08091C6\r
+:104AD000A5029091A6029A8389831B82FD82EC82B3\r
+:104AE0002E83CE0101960E948E1F70C0E816F90633\r
+:104AF00028F09701281B390BC90104C080959095B7\r
+:104B00008E0D9F1D883C910508F046C0662309F470\r
+:104B10003FC0E51330C074132EC02091AA0220FDBF\r
+:104B200021C0322F32953F70832F90E00097D1F053\r
+:104B3000D80115962C9315970F9741F0832F8F5F0F\r
+:104B40008295807F2F70282B15962C93C8010E9488\r
+:104B50008E1F86E0F801A5EAB2E001900D928A95D9\r
+:104B6000E1F73EC086E0F801A5EAB2E001900D92BF\r
+:104B70008A95E1F737C04D875E878D859E850E94B7\r
+:104B80005A23811123C08091AA0281608093AA02D6\r
+:104B9000C8010E948E1F26C07E2DF98AE88A898965\r
+:104BA0000E947F23E5EAF2E086E0DF011D928A950C\r
+:104BB000E9F70E94BF2318C0662351F34D875E8733\r
+:104BC0008D859E850E945A23882311F386E0F80183\r
+:104BD000A5EAB2E001900D928A95E1F70E94CD23FB\r
+:104BE0000E94BF2381E014C080E012C04D875E8721\r
+:104BF0008D859E850E943928292F22952F7030E0BF\r
+:104C0000223031050CF4E0CE243031050CF6E2CE32\r
+:104C100062960FB6F894DEBF0FBECDBFDF91CF9185\r
+:104C20001F910F91FF90EF9008951F93CF93DF9303\r
+:104C3000CDB7DEB72C970FB6F894DEBF0FBECDBF51\r
+:104C40004F83588769877A878B879C87CE01079621\r
+:104C50000E9445248823D9F02F8138858A859B8539\r
+:104C6000892B39F03F3F19F080E090E004C02F3FDE\r
+:104C7000D9F781E090E0892B09F06DC04F8158850C\r
+:104C800069857A858B859C850E948E2364C086E029\r
+:104C9000FE013796DE01119601900D928A95E1F79B\r
+:104CA000FF81E8854A855B854115510539F0EF3F65\r
+:104CB00041F481E090E0FF3F31F003C081E090E0FB\r
+:104CC00002C080E090E080FD46C02091DC0230E030\r
+:104CD000C9010196877099276091DB0270E0861701\r
+:104CE000970709F440C0F983EA835D834C8396E01B\r
+:104CF000929FD001939FB00D1124A555BD4FFE0189\r
+:104D0000319601900D929A95E1F78093DC020E9412\r
+:104D10009E2321C0189FC001112485559D4F0E94DC\r
+:104D20004524882371F1E091DB021E9FF0011124DC\r
+:104D3000E555FD4F40815181628173818481958168\r
+:104D40000E948E238091DB0290E001968770992764\r
+:104D50008093DB0201C016E08091DB029091DC02BF\r
+:104D60008913D8CF0EC00E9456231092DC021092F5\r
+:104D7000DB02E5EAF2E086E0DF011D928A95E9F7C1\r
+:104D8000EACF2C960FB6F894DEBF0FBECDBFDF91F1\r
+:104D9000CF911F910895DF92EF92FF920F931F938F\r
+:104DA000CF93DF93EC01009709F46EC0D12CEE2471\r
+:104DB000E394F12C8E010F5F1F4FFE018491843725\r
+:104DC00048F4843008F04CC0813071F0823009F032\r
+:104DD0005BC01EC0853709F43FC080F1982F9458FE\r
+:104DE000903708F051C03FC02296F8018491982F67\r
+:104DF000905E983050F48770FE2D01C0FF0F8A95A9\r
+:104E0000EAF78F2F0E94CF2813C00E94671E2FC081\r
+:104E10002296F8018491982F905E983060F4877004\r
+:104E2000FE2D01C0FF0F8A95EAF78F2F0E94D5282B\r
+:104E30000E94F8281CC00E942F1F19C02296F8015A\r
+:104E4000049107C08FE99FE00197F1F700C00000CF\r
+:104E500001500111F7CF0BC02296F801D49007C082\r
+:104E60000E94671E03C08F770E942F1FE8018D2DBF\r
+:104E700007C08150EFE9FFE03197F1F700C0000073\r
+:104E8000882309F497CFF5CFDF91CF911F910F9130\r
+:104E9000FF90EF90DF9008956093E1027093E2023B\r
+:104EA0008093E3029093E4020C9444236093DD0228\r
+:104EB0007093DE028093DF029093E0020C9444230F\r
+:104EC00008950C944C270F931F930091E1021091C9\r
+:104ED000E2022091E3023091E402602B712B822BDD\r
+:104EE000932B1F910F910C944C270F931F930091BC\r
+:104EF000E1021091E2022091E3023091E40260238A\r
+:104F00007123822393231F910F910C944C270F93AD\r
+:104F10001F930091E1021091E2022091E30230918F\r
+:104F2000E40260277127822793271F910F910C9429\r
+:104F30004C2760E070E0CB010C94562741E050E034\r
+:104F400060E070E004C0440F551F661F771F8A950C\r
+:104F5000D2F7CB01BA010C94562741E050E060E053\r
+:104F600070E004C0440F551F661F771F8A95D2F763\r
+:104F70008091DD029091DE02A091DF02B091E0020B\r
+:104F8000482B592B6A2B7B2BCB01BA010C9456274B\r
+:104F900041E050E060E070E004C0440F551F661F20\r
+:104FA000771F8A95D2F740955095609570958091BE\r
+:104FB000DD029091DE02A091DF02B091E002482371\r
+:104FC00059236A237B23CB01BA010C94562741E075\r
+:104FD00050E060E070E004C0440F551F661F771F6B\r
+:104FE0008A95D2F78091DD029091DE02A091DF02D6\r
+:104FF000B091E002482759276A277B27CB01BA01E5\r
+:105000000C9456270F931F930091DD021091DE023E\r
+:105010002091DF023091E002602B712B822B932BC9\r
+:105020001F910F910C9456270F931F930091DD024F\r
+:105030001091DE022091DF023091E00260237123A3\r
+:10504000822393231F910F910C9456270F931F9344\r
+:105050000091DD021091DE022091DF023091E0022A\r
+:1050600060277127822793271F910F910C94562751\r
+:105070000895CF92DF92EF92FF920F931F93CF93F9\r
+:10508000DF93EC01C090E102D090E202E090E302F5\r
+:10509000F090E4028091DD029091DE02A091DF02A7\r
+:1050A000B091E002C82AD92AEA2AFB2A0FE110E0CF\r
+:1050B000B701A601002E04C07695679557954795D0\r
+:1050C0000A94D2F740FF08C0BE01802F0E947104ED\r
+:1050D0008130910509F007C00150110948F7BE0160\r
+:1050E00080E00E947104DF91CF911F910F91FF909A\r
+:1050F000EF90DF90CF90089540918B0150918C01FB\r
+:1051000020E030E09FEFFA01E20FF31F62816817A1\r
+:10511000A1F09F3F19F4611101C0922F2F5F3F4F03\r
+:105120002630310581F707C0FA01E90FF11D97FD1F\r
+:10513000FA95828308959F3FB9F7089540918B01B6\r
+:1051400050918C0120E030E0FA01E20FF31F9281D0\r
+:10515000981301C012822F5F3F4F26303105A1F70F\r
+:10516000089581E090E0E0918B01F0918C01E80FCF\r
+:10517000F91F1082019688309105A9F70895909142\r
+:10518000E502982B9093E502089580959091E502B1\r
+:1051900098239093E50208951092E5020895909166\r
+:1051A000E602982B9093E602089580959091E6028E\r
+:1051B00098239093E60208951092E6020895809352\r
+:1051C000E70208951092E702089540918B015091F3\r
+:1051D0008C0120E030E080E0FA01E20FF31F9181C2\r
+:1051E00091118F5F2F5F3F4F27303105A9F7089549\r
+:1051F000E0918B01F0918C018091E5028083E09138\r
+:105200008B01F0918C0180819091E602892B808343\r
+:105210009091E702992361F0E0918B01F0918C016C\r
+:105220008081892B80830E94E52881110E94E228D9\r
+:1052300080918B0190918C010C94311D8091FA0327\r
+:10524000843021F11092F10220E488E190E00FB661\r
+:10525000F894A895809360000FBE2093600080E0D2\r
+:105260000E94590383B7817F846083BF83B78160C5\r
+:1052700083BF7894889583B78E7F83BF88E10FB60C\r
+:10528000F89480936000109260000FBE0895089516\r
+:105290000895CF9380E00E9459030E9447290E94FD\r
+:1052A000BD070E944829C0E08C2F0E941109892B5C\r
+:1052B00029F4CF5FC530C1F780E001C081E0CF9114\r
+:1052C00008950E94562380E00E9459030E941130E5\r
+:1052D0000E94251D0C94E7051F920F920FB60F92A6\r
+:1052E00011248F939F93AF93BF938091F10281110B\r
+:1052F00013C08091F2029091F302A091F402B09158\r
+:10530000F5024196A11DB11D8093F2029093F30224\r
+:10531000A093F402B093F502BF91AF919F918F914A\r
+:105320000F900FBE0F901F90189582E084BD93E000\r
+:1053300095BD9AEF97BD80936E0008958FB7F8944E\r
+:105340004091F2025091F3026091F4027091F502E3\r
+:105350008FBFCA010895CF92DF92EF92FF920F9311\r
+:105360001F932FB7F8944091F2025091F30260918D\r
+:10537000F4027091F5022FBF6A017B01EE24FF2435\r
+:105380008C0120E030E0C016D106E206F30620F0E2\r
+:105390009A01281B390B05C09C0120953095240FDC\r
+:1053A000351FC9011F910F91FF90EF90DF90CF90B3\r
+:1053B00008951F920F920FB60F9211248F939F930F\r
+:1053C000AF93BF938091F2029091F302A091F40207\r
+:1053D000B091F5020196A11DB11D8093F202909348\r
+:1053E000F302A093F402B093F502BF91AF919F91A5\r
+:1053F0008F910F900FBE0F901F9018950E946D1601\r
+:10540000F8942FEF87EA91E6215080409040E1F731\r
+:1054100000C0000087E090EBDC01809304049093CF\r
+:105420000504A0930604B09307042CE088E190E003\r
+:105430000FB6F894A895809360000FBE209360008B\r
+:10544000FFCFCF92DF92EF92FF920F931F93CF93F4\r
+:10545000DF93C82ED12C01E010E08D2D0E941109A0\r
+:105460007C01C0E0D0E098010C2E02C0220F331F57\r
+:105470000A94E2F72E213F21232B29F42196CC30E8\r
+:10548000D10589F708C06C2F7D2D80E00E944C0467\r
+:10549000C812F4CF06C0D39485E0D812DECF80E0E6\r
+:1054A00001C081E0DF91CF911F910F91FF90EF90AC\r
+:1054B000DF90CF900895CF93C82F8CE20E94212ACD\r
+:1054C000882321F08C2FCF910C94212A80E0CF915A\r
+:1054D0000895CF930E94AC2B811102C00E948D2BA6\r
+:1054E000C5E608C00E94BD078FE39CE90197F1F76C\r
+:1054F00000C00000C150B1F789E20E945B2A81110F\r
+:105500000AC18AE20E945B2A81110E948D2B85E0EC\r
+:105510000E945B2A81110E94FE290E94B72B809372\r
+:10552000F00287E00E945B2A882399F18BE10E94B8\r
+:105530005B2A882351F09091F00291FB882780F933\r
+:1055400021E0822780FB91F922C08EE00E945B2A35\r
+:10555000882351F09091F00292FB882780F921E096\r
+:10556000822780FB92F913C080E10E945B2A909110\r
+:10557000F002882341F093FB882780F921E08227FD\r
+:1055800080FB93F904C0892F809580FB90F990935C\r
+:10559000F0028091F0020E94BB2B0E94C92B8093E5\r
+:1055A000010380EE0E945B2A882341F08091010371\r
+:1055B000982F909590FB80F98093010389E30E94D6\r
+:1055C0005B2A882359F09091010391FB882780F989\r
+:1055D00021E0822780FB91F99093010382EE0E94E3\r
+:1055E0005B2A882359F09091010392FB882780F968\r
+:1055F00021E0822780FB92F99093010386EE0E94BE\r
+:105600005B2A882359F09091010393FB882780F946\r
+:1056100021E0822780FB93F99093010383EE0E949F\r
+:105620005B2A882359F09091010394FB882780F925\r
+:1056300021E0822780FB94F99093010385E30E9487\r
+:105640005B2A882359F09091010395FB882780F904\r
+:1056500021E0822780FB95F99093010381E30E946A\r
+:105660005B2A882359F09091010396FB882780F9E3\r
+:1056700021E0822780FB96F99093010381E10E944B\r
+:105680005B2A882359F09091010397FB882780F9C2\r
+:1056900021E0822780FB97F9909301038091010319\r
+:1056A0000E94CD2B87E20E945B2AC82F8EE10E94C8\r
+:1056B0005B2A8111C2608FE10E945B2A8111C46064\r
+:1056C00080E20E945B2A8111C86081E20E945B2A0D\r
+:1056D0008111C06182E20E945B2A8111C06283E273\r
+:1056E0000E945B2A8111C06484E20E945B2A8823A5\r
+:1056F00011F0C06802C0CC2329F08C2F0E94C42B6B\r
+:105700006C2F03C00E94C02B682F70E080E090E0F7\r
+:10571000CF910C946127CF9108956DEE7EEF80E0DC\r
+:1057200090E00E94783460E082E090E00E946A3469\r
+:1057300060E083E090E00E946A3460E084E090E002\r
+:105740000E946A3460E085E090E00E946A3460E084\r
+:1057500086E090E00C946A3480E090E00E9464342B\r
+:1057600021E08D3E9E4F09F020E0822F089582E0D7\r
+:1057700090E00C945C34682F82E090E00C946A34E2\r
+:1057800083E090E00C945C34682F83E090E00C940C\r
+:105790006A3484E090E00C945C34682F84E090E0FC\r
+:1057A0000C946A3486E090E00C945C34682F86E0B8\r
+:1057B00090E00C946A348091FE0280FF0BC06091EF\r
+:1057C000900185E0689FB0011124759567957595E6\r
+:1057D00067952AC081FF09C06091900185E0689FAC\r
+:1057E000B0011124759567951FC082FF07C06091B5\r
+:1057F000900185E0689FB001112416C04091F80225\r
+:105800004423C9F060918F01461788F720919001D9\r
+:1058100085E0289F90011124429FC001439F900D75\r
+:10582000112470E00E9448346038710540F461151D\r
+:10583000710539F002C065E070E0862F08958FE7AA\r
+:10584000089581E008958091FE0280FF08C0609174\r
+:105850008E0170E0759567957595679521C081FFFC\r
+:1058600006C060918E0170E07595679519C082FF42\r
+:1058700004C060918E0170E010C08091F80288230E\r
+:10588000C1F060918D018617A0F790918E01989FCD\r
+:10589000C001112470E00E9448346038710528F47A\r
+:1058A0006115710521F0862F08958FE7089581E035\r
+:1058B000089561E070E0F4CF803F21F40E94DB2B7B\r
+:1058C000819504C0813F29F40E94DB2B8093FB0269\r
+:1058D0000895823F21F40E94DB2B819504C0833F11\r
+:1058E00029F40E94DB2B8093FA020895893F19F472\r
+:1058F0000E94232C05C08A3F31F40E94232C8195FD\r
+:105900008093FC0208958B3F21F40E94232C819503\r
+:1059100004C08C3F29F40E94232C8093FD0208953B\r
+:10592000843F21F48091F902816017C0853F21F402\r
+:105930008091F902826011C0863F21F48091F902C2\r
+:1059400084600BC0873F21F48091F902886005C014\r
+:10595000883F31F48091F90280618093F9020895C3\r
+:105960008D3F21F48091FE0281600BC08E3F21F4B7\r
+:105970008091FE02826005C08F3F29F48091FE0273\r
+:1059800084608093FE020895803F29F48091FB0299\r
+:1059900087FF6EC007C0813F41F48091FB0218165B\r
+:1059A0000CF066C01092FB0263C09091FA02823F35\r
+:1059B00019F497FF5DC005C0833F31F419160CF050\r
+:1059C00057C01092FA0254C0893F31F48091FC0212\r
+:1059D00018160CF04DC006C08A3F39F48091FC02C5\r
+:1059E00087FF46C01092FC0243C08B3F29F4809190\r
+:1059F000FD0287FF3DC006C08C3F39F48091FD0257\r
+:105A00001816B4F51092FD0233C0843F21F4809142\r
+:105A1000F9028E7F05C0853F31F48091F9028D7FB8\r
+:105A20008093F90225C0863F21F48091F9028B7F93\r
+:105A3000F7CF873F21F48091F902877FF1CF883F2C\r
+:105A400021F48091F9028F7EEBCF8D3F21F480917C\r
+:105A5000FE028E7F0BC08E3F21F48091FE028D7F6F\r
+:105A600005C08F3F29F48091FE028B7F8093FE0258\r
+:105A70008091FA0281110EC08091FB0281110AC04F\r
+:105A80008091FC02811106C08091FD02811102C04B\r
+:105A90001092F802089589EF92E00E943C1D0E9446\r
+:105AA0009E299093F7028093F6020895CF938091F8\r
+:105AB000F6029091F7020E94AB294091F80244232C\r
+:105AC00021F02091910130E006C0209192015AE02E\r
+:105AD000259F900111248217930708F486C08091B6\r
+:105AE000FA0281110DC09091FB02911109C09091B1\r
+:105AF000FC02911105C09091FD02992309F475C033\r
+:105B00004F3F19F04F5F4093F802181624F40E949B\r
+:105B1000DB2B8093FA028091FA0287FF05C00E9476\r
+:105B2000DB2B81958093FA028091FB02181624F4F6\r
+:105B30000E94DB2B8093FB028091FB0287FF05C054\r
+:105B40000E94DB2B81958093FB026091FA02662311\r
+:105B500039F1C091FB02CC2319F1772767FD7095CD\r
+:105B6000872F972F0E94AC3123E333E343E35FE3B6\r
+:105B70000E9460320E9479316093FA026C2F77277D\r
+:105B800067FD7095872F972F0E94AC3123E333E395\r
+:105B900043E35FE30E9460320E9479316093FB022D\r
+:105BA0008091FC02181624F40E94232C8093FC029E\r
+:105BB0008091FC0287FF05C00E94232C8195809371\r
+:105BC000FC028091FD02181624F40E94232C80937D\r
+:105BD000FD028091FD0287FF05C00E94232C819564\r
+:105BE0008093FD02CF910C944B2DCF910895E9EF56\r
+:105BF000F2E085E0DF011D928A95E9F71092F80244\r
+:105C00001092FE020895833089F130F4813061F002\r
+:105C1000823009F06EC019C0853009F449C0B8F16E\r
+:105C2000863009F066C055C020919201862F90E021\r
+:105C3000820F911D8F3F910520F4620F60939201B6\r
+:105C400008958FEF80939201089520919101862FFE\r
+:105C500090E0820F911D8F3F910520F4620F6093B9\r
+:105C6000910108958FEF8093910108952091900103\r
+:105C7000862F90E0820F911D8F3F910520F4620FD7\r
+:105C80006093900108958FEF809390010895209183\r
+:105C90008F01862F90E0820F911D8F3F910520F498\r
+:105CA000620F60938F0108958FEF80938F010895A5\r
+:105CB00020918E01862F90E0820F911D8F3F9105DC\r
+:105CC00020F4620F60938E0108958FEF80938E0110\r
+:105CD000089520918D01862F90E0820F911D8F3FB6\r
+:105CE000910520F4620F60938D0108958FEF8093EA\r
+:105CF0008D010895833021F130F4813059F08230E4\r
+:105D000009F049C012C0853089F128F1863009F0C8\r
+:105D100042C037C080919201681720F4861B80939F\r
+:105D2000920108951092920108958091910168174F\r
+:105D300020F4861B8093910108951092910108959B\r
+:105D400080919001681720F4861B8093900108953C\r
+:105D500010929001089580918F01681720F4861B9E\r
+:105D600080938F01089510928F01089580918E0184\r
+:105D7000681720F4861B80938E01089510928E017F\r
+:105D8000089580918D01681720F4861B80938D0102\r
+:105D9000089510928D01089541E050E060E070E0B8\r
+:105DA00004C0440F551F661F771F8A95D2F7CB0199\r
+:105DB000BA010E9461270C945623873200F58E3178\r
+:105DC00008F086C08E3009F466C060F4873009F4AC\r
+:105DD0004DC018F4863049F531C0883041F18B3020\r
+:105DE00021F57BC0863109F478C018F48031E9F4DC\r
+:105DF0005CC0893109F471C08B31B9F442C0883379\r
+:105E000009F46BC048F4893209F460C0853309F4A1\r
+:105E10005DC0873251F45AC0833409F457C018F476\r
+:105E20008A3318F057C0883499F080E008950E94B2\r
+:105E3000B72B0E94C92B0E94D22B4FC08091F00239\r
+:105E4000817F8E7F8093F00281E08093FF0208952E\r
+:105E50000E9456232FEF83ED90E321508040904025\r
+:105E6000E1F700C000000E94FE2937C08091F002D7\r
+:105E700080FF03C0817F8E7F01C081608093F0022C\r
+:105E80002CC09091F00291FB882780F921E08227B5\r
+:105E900080FB91F913C09091F00292FB882780F962\r
+:105EA00021E0822780FB92F909C09091F00293FBD8\r
+:105EB000882780F921E0822780FB93F99093F002F4\r
+:105EC000882359F091609093F00207C080E003C0EE\r
+:105ED0008D5101C089530E94CC2E81E0089580E04D\r
+:105EE000089580E00895CF93C82F8091FF028130FC\r
+:105EF00071F020F0823009F089C037C0A0918B0189\r
+:105F0000B0918C018C91823209F082C007C0A091BF\r
+:105F10008B01B0918C018C91823249F48C2F0E94BC\r
+:105F20006F2F81111EC08C2F0E94DD2E1CC08C2F64\r
+:105F30000E94712F811115C0C43169F030F4CB304B\r
+:105F400081F0C03109F068C009C0C93221F0C833FE\r
+:105F500009F062C006C01092FF025EC082E080932A\r
+:105F6000FF0281E090E081705AC0C932C9F060F44C\r
+:105F7000C431B1F020F4C73009F04CC034C0CE5168\r
+:105F8000C63008F047C017C0CE3439F120F4CB3406\r
+:105F900009F040C01CC0C135C1F0C235D9F513C0ED\r
+:105FA00080910003882319F01092000333C081E030\r
+:105FB0008093FF0234C0EC2FF0E0E25EFD4F808161\r
+:105FC0008093000327C061E003C061E007C06AE07E\r
+:105FD000809100030E94032E1DC06AE0809100039F\r
+:105FE0000E947A2E17C08EE18093920182E3809303\r
+:105FF00091018AE08093900184E180938F0188E091\r
+:1060000080938E0188E280938D0104C01092FF027C\r
+:1060100080E005C081E003C080E090E0A4CFCF9194\r
+:1060200008950E94AC2B811102C00E948D2B0E940A\r
+:10603000D22B8093030480FF02C0869501C080E0CC\r
+:106040000C94590380910304982F9695292F30E0E2\r
+:10605000233031054CF49F5F990F8170892B81604B\r
+:10606000809303040E94D62B8091030486950C94A0\r
+:10607000590380910304982F969591F09158990FA8\r
+:106080008170892B809303048E7F91E009F490E066\r
+:106090008091030490FB80F9809303040E94D62B27\r
+:1060A0008091030486950C94590380910304982FE2\r
+:1060B000909590FB80F9809303040E94D62B8091E9\r
+:1060C000030480FF02C0869501C080E00C94590350\r
+:1060D00030910304232F26952F5F2F77822F90E096\r
+:1060E000317004972CF4220F232B2093030402C059\r
+:1060F0003093030480910304282F2E7F91E009F44C\r
+:1061000090E090FB80F9809303040E94D62B80914D\r
+:10611000030486950C94590320910304922F9695BD\r
+:106120009827990F822F8170892B809303048E7F8B\r
+:1061300091E009F490E08091030490FB80F9809352\r
+:1061400003040E94D62B8091030486950C94590376\r
+:106150005058BB27AA270ED075C166D130F06BD13D\r
+:1061600020F031F49F3F11F41EF45BC10EF4E09572\r
+:10617000E7FB51C1E92F77D180F3BA1762077307A4\r
+:106180008407950718F071F49EF58FC10EF4E09521\r
+:106190000B2EBA2FA02D0B01B90190010C01CA01E1\r
+:1061A000A0011124FF27591B99F0593F50F4503E8C\r
+:1061B00068F11A16F040A22F232F342F4427585F7E\r
+:1061C000F3CF469537952795A795F0405395C9F796\r
+:1061D0007EF41F16BA0B620B730B840BBAF091504E\r
+:1061E000A1F0FF0FBB1F661F771F881FC2F70EC0ED\r
+:1061F000BA0F621F731F841F48F4879577956795C0\r
+:10620000B795F7959E3F08F0B3CF9395880F08F0A8\r
+:106210009927EE0F979587950895D9D008F481E0D6\r
+:1062200008950CD00FC107D140F0FED030F021F41A\r
+:106230005F3F19F0F0C0511139C1F3C014D198F388\r
+:106240009923C9F35523B1F3951B550BBB27AA27F7\r
+:1062500062177307840738F09F5F5F4F220F331F69\r
+:10626000441FAA1FA9F333D00E2E3AF0E0E830D035\r
+:1062700091505040E695001CCAF729D0FE2F27D038\r
+:10628000660F771F881FBB1F261737074807AB0706\r
+:10629000B0E809F0BB0B802DBF01FF2793585F4F7B\r
+:1062A0002AF09E3F510568F0B6C000C15F3FECF395\r
+:1062B000983EDCF3869577956795B795F7959F5F40\r
+:1062C000C9F7880F911D9695879597F90895E1E094\r
+:1062D000660F771F881FBB1F621773078407BA07F3\r
+:1062E00020F0621B730B840BBA0BEE1F88F7E0954E\r
+:1062F000089504D06894B111D9C00895BCD088F035\r
+:106300009F5790F0B92F9927B751A0F0D1F0660FA1\r
+:10631000771F881F991F1AF0BA95C9F712C0B130BC\r
+:1063200081F0C3D0B1E00895C0C0672F782F8827CF\r
+:10633000B85F39F0B93FCCF3869577956795B395FB\r
+:10634000D9F73EF490958095709561957F4F8F4F6A\r
+:106350009F4F0895E89409C097FB3EF4909580956F\r
+:10636000709561957F4F8F4F9F4F9923A9F0F92F1B\r
+:1063700096E9BB279395F695879577956795B79599\r
+:10638000F111F8CFFAF4BB0F11F460FF1BC06F5F7F\r
+:106390007F4F8F4F9F4F16C0882311F096E911C091\r
+:1063A000772321F09EE8872F762F05C0662371F0B2\r
+:1063B00096E8862F70E060E02AF09A95660F771FC6\r
+:1063C000881FDAF7880F9695879597F90895990FA2\r
+:1063D0000008550FAA0BE0E8FEEF16161706E807AF\r
+:1063E000F907C0F012161306E407F50798F0621BD0\r
+:1063F000730B840B950B39F40A2661F0232B242BA5\r
+:10640000252B21F408950A2609F4A140A6958FEFC3\r
+:10641000811D811D089597F99F6780E870E060E015\r
+:1064200008959FEF80EC089500240A94161617062D\r
+:1064300018060906089500240A9412161306140675\r
+:1064400005060895092E0394000C11F4882352F0D8\r
+:10645000BB0F40F4BF2B11F460FF04C06F5F7F4F90\r
+:106460008F4F9F4F089557FD9058440F551F59F077\r
+:106470005F3F71F04795880F97FB991F61F09F3F31\r
+:1064800079F087950895121613061406551FF2CF5A\r
+:106490004695F1DF08C0161617061806991FF1CFAA\r
+:1064A00086957105610508940895E894BB276627D1\r
+:1064B0007727CB0197F908958ADF08F48FEF0895C5\r
+:1064C0000BD0C0CFB1DF28F0B6DF18F0952309F06C\r
+:1064D000A2CFA7CF1124EACFC6DFA0F3959FD1F3B7\r
+:1064E000950F50E0551F629FF001729FBB27F00D82\r
+:1064F000B11D639FAA27F00DB11DAA1F649F6627D7\r
+:10650000B00DA11D661F829F2227B00DA11D621F25\r
+:10651000739FB00DA11D621F839FA00D611D221FDF\r
+:10652000749F3327A00D611D231F849F600D211DC3\r
+:10653000822F762F6A2F11249F5750408AF0E1F066\r
+:1065400088234AF0EE0FFF1FBB1F661F771F881FAF\r
+:1065500091505040A9F79E3F510570F05CCFA6CFF7\r
+:106560005F3FECF3983EDCF3869577956795B7959A\r
+:10657000F795E7959F5FC1F7FE2B880F911D9695C4\r
+:10658000879597F90895FA01EE0FFF1F30962105C0\r
+:10659000310599F16115710561F48038BFE39B07FE\r
+:1065A00049F168949038810561F08038BFEF9B070E\r
+:1065B00041F0992342F5FF3FE1053105210511F135\r
+:1065C000E8940894E795D901AA2329F4AB2FBE2FAC\r
+:1065D000F85FD0F310C0FF5F70F4A695E0F7F739CD\r
+:1065E00050F019F0FF3A38F49F779F930CD00F903A\r
+:1065F00007FC905808953EF014CF60E070E080E80A\r
+:106600009FE308954FE79F775F934F933F932F93B7\r
+:106610009ED02F913F914F915F9152DF05C019F4A9\r
+:106620000EF0F9CE42CFFDCE26DFC8F39638C0F784\r
+:1066300007F80F92E8942BE33AEA48EB5FE74EDF66\r
+:106640000F920F920F924DB75EB70F92C0D0ECEA47\r
+:10665000F0E016D04F915F91EF91FF91E595EE1F1D\r
+:10666000FF1F49F0FE57E0684427EE0F441FFA95DC\r
+:10667000E1F74195550B32D00F9007FE26C00895E3\r
+:10668000DF93CF931F930F93FF92EF92DF927B01E3\r
+:106690008C01689405C0DA2EEF011EDFFE01E8943C\r
+:1066A000A5912591359145915591AEF3EF0162DDAC\r
+:1066B000FE019701A801DA9479F7DF90EF90FF903F\r
+:1066C0000F911F91CF91DF9108959B01AC0160E084\r
+:1066D00070E080E89FE3A5CD9ECEACC0CCDEE8F3B1\r
+:1066E0009923D9F3940F511DBBF39150504094F06E\r
+:1066F00059F0882332F0660F771F881F9150504061\r
+:10670000C1F79E3F510544F7880F911D96958795D7\r
+:1067100097F908955F3FACF0983E9CF0BB278695B3\r
+:1067200077956795B79508F4B1609395C1F7BB0F5E\r
+:1067300058F711F460FFE8CF6F5F7F4F8F4F9F4F87\r
+:10674000E3CFB4CE0EF076C06CCE689464CE93DE08\r
+:10675000C8F39923D1F3C6F3DF93CF931F930F931D\r
+:10676000FF92C92FDD2788232AF02197660F771F14\r
+:10677000881FDAF720E030E040E85FEB9FE38839DC\r
+:1067800020F0803E30F021968F77E3DCE4EDF0E0FE\r
+:1067900003C0DFDCE1E0F1E073DF8B01BE01EC015F\r
+:1067A000FB2E6F5771097595771F880B990BD4DDF8\r
+:1067B00028E132E741E35FE38FDEAF2D9801AE01C0\r
+:1067C000FF900F911F91CF91DF91D4DC3BCEFA0166\r
+:1067D000DC01AA0FBB1F9B01AC01BF5728F4222785\r
+:1067E0003327442750781FC0B75188F4AB2F0024BB\r
+:1067F000469537952795011CA395D2F3002069F0A3\r
+:10680000220F331F441FB395DAF30DD0A1CC6130B2\r
+:106810007105A0E88A07B94630F49B01AC016627F0\r
+:10682000772788279078309621F020833183428320\r
+:10683000538308959F3F31F0915020F487957795C9\r
+:106840006795B795880F911D9695879597F9089547\r
+:10685000991B79E004C0991F961708F0961B881FB2\r
+:106860007A95C9F780950895AA1BBB1B51E107C013\r
+:10687000AA1FBB1FA617B70710F0A61BB70B881FD0\r
+:10688000991F5A95A9F780959095BC01CD0108955F\r
+:1068900097FB072E16F4009407D077FD09D00E94CD\r
+:1068A000343407FC05D03EF4909581959F4F0895B0\r
+:1068B000709561957F4F0895F999FECF92BD81BD86\r
+:1068C000F89A992780B50895A8E1B0E042E050E039\r
+:1068D0000C947F34262FF999FECF1FBA92BD81BD4B\r
+:1068E00020BD0FB6F894FA9AF99A0FBE0196089552\r
+:1068F0000E946A34272F0C946B34DC01CB01FC011D\r
+:10690000F999FECF06C0F2BDE1BDF89A319600B408\r
+:0E6910000D9241505040B8F70895F894FFCF13\r
+:10691E0055D0A44600001644000000000000484276\r
+:10692E0061978A460000C8430000000000004842FC\r
+:10693E0055D024460000C843000000000000484225\r
+:10694E0000005C460000C843000000000000484202\r
+:10695E0061978A4600007A4455D0A4460000C84389\r
+:10696E00000000000000484200005C460000C843E2\r
+:10697E00000000000000484255D024460000164496\r
+:10698E000507000C058540000001064000000100CF\r
+:10699E0091102111FD10C810941001E8022808145E\r
+:1069AE000A321E42004500250026004300610060A9\r
+:1069BE000020003700640065006600670044004652\r
+:1069CE000024004700000002000400050007000933\r
+:1069DE00000B000C000E0010001100130015001724\r
+:1069EE000018001A001C001D001F002100230024A7\r
+:1069FE00002600280029002B002D002F0030003229\r
+:106A0E000034003500370039003B00F6030F042830\r
+:106A1E0004410469051C05E604C6043F4D362002F8\r
+:106A2E000302000001000101010101000101010248\r
+:086A3E00030405060708090026\r
+:00000001FF\r
diff --git a/keyboard/preonic/preonic_pcb_silent.hex b/keyboard/preonic/preonic_pcb_silent.hex
new file mode 100644 (file)
index 0000000..cc59d3f
--- /dev/null
@@ -0,0 +1,1189 @@
+:100000000C9465020C94A9020C94A9020C94A90208\r
+:100010000C94A9020C94A9020C94A9020C94A902B4\r
+:100020000C94A9020C94A9020C94430D0C94150E87\r
+:100030000C942B1C0C94A9020C94A9020C94A902F8\r
+:100040000C94A9020C94A9020C94A9020C94A90284\r
+:100050000C94A9020C94981C0C94A9020C94A9026B\r
+:100060000C94A9020C94A9020C94A9020C94A90264\r
+:100070000C94A9020C94A9020C94A9020C94A90254\r
+:100080000C94A9020C94A9020C94A9020C94A90244\r
+:100090000C94A9020C94A9020C94A9020C94A90234\r
+:1000A0000C94A9020C94A9020C94A90235001E001C\r
+:1000B0001F0020002100220023002400250026002C\r
+:1000C00027002A002B0014001A0008001500170052\r
+:1000D0001C0018000C00120013002A002900040064\r
+:1000E0001600070009000A000B000D000E000F00AB\r
+:1000F00033003400E1001D001B000600190005005C\r
+:100100001100100036003700380028000030E000F1\r
+:10011000E200E30003522C002C0004525000510076\r
+:1001200052004F0035001E001F0020002100220059\r
+:10013000230024002500260027002A002B0014009D\r
+:100140001A00090013000A000D000F0018001C001F\r
+:1001500033002A00290004001500160017000700CC\r
+:100160000B00110008000C0012003400E1001D001B\r
+:100170001B000600190005000E00100036003700B5\r
+:10018000380028000030E000E200E30003522C00B9\r
+:100190002C0004525000510052004F0035001E0048\r
+:1001A0001F0020002100220023002400250026003B\r
+:1001B00027002A002B0034003600370013001C00F3\r
+:1001C00009000A00060015000F002A00290004009B\r
+:1001D0001200080018000C0007000B0017001100A7\r
+:1001E00016003800E100330014000D000E001B0063\r
+:1001F000050010001A0019001D0028000030E00062\r
+:10020000E200E30003522C002C0004525000510085\r
+:1002100052004F0035001E001F0020002100220068\r
+:10022000230024002500260027002A0035021E0294\r
+:100230001F0220022102220223022402250226029A\r
+:1002400027022A0001003A003B003C003D003E002E\r
+:100250003F002D022E022F02300231020100400029\r
+:100260004100420043004400450000530153025343\r
+:100270000050010001000100010001000100010027\r
+:1002800001000100AB00AA00A900AE0035001E006D\r
+:100290001F0020002100220023002400250026004A\r
+:1002A00027002A0035001E001F0020002100220028\r
+:1002B000230024002500260027002A0001003A0020\r
+:1002C0003B003C003D003E003F002D002E002F0073\r
+:1002D0003000310001004000410042004300440072\r
+:1002E000450000530153025300500100010001007A\r
+:1002F000010001000100010001000100AB00AA00A3\r
+:10030000A900AE002A0354006800650020005000D8\r
+:10031000720065006F006E006900630020004B00F2\r
+:100320006500790062006F006100720064000000E7\r
+:100330002C034F007200740068006F006C006900AD\r
+:100340006E0065006100720020004B0065007900BE\r
+:1003500062006F006100720064007300000004031B\r
+:10036000090409027400040100A0FA090400000154\r
+:1003700003010100092111010001223F000705814D\r
+:100380000308000A09040100010301020009211108\r
+:10039000010001224D000705820308000A0904023A\r
+:1003A00000010300000009211101000122360007AD\r
+:1003B00005830308000A0904030002030000000982\r
+:1003C00021110100012220000705840320000107FC\r
+:1003D0000504032000011201100100000008EDFED9\r
+:1003E00061600100010200010631FF0974A10109E9\r
+:1003F00075150025FF9520750881020976150025E1\r
+:10040000FF952075089102C005010980A1018502B0\r
+:1004100016010026B7001A01002AB70075109501D1\r
+:100420008100C0050C0901A1018503160100269C6D\r
+:10043000021A01002A9C02751095018100C0050175\r
+:100440000902A1010901A1000509190129051500E9\r
+:10045000250195057501810295017503810105014D\r
+:10046000093009311581257F950275088106093803\r
+:100470001581257F950175088106050C0A3802153E\r
+:1004800081257F950175088106C0C005010906A177\r
+:1004900001050719E029E715002501950875018177\r
+:1004A0000295017508810105081901290595057551\r
+:1004B0000191029501750391010507190029FF15A6\r
+:1004C0000025FF950675088100C011241FBECFEFDF\r
+:1004D000DAE0DEBFCDBF04B603FE24C08091F10197\r
+:1004E0009091F201A091F301B091F4018730904B0B\r
+:1004F000A740B04BB9F41092F1011092F2011092A2\r
+:10050000F3011092F40114BE84B7877F84BF88E1A1\r
+:100510000FB6F89480936000109260000FBEE0E088\r
+:10052000F8E3099511E0A0E0B1E0E0EEF9E402C0E3\r
+:1005300005900D92A435B107D9F711E0A4E5B1E01B\r
+:1005400001C01D92A13FB107E1F70E94720A0C940D\r
+:10055000EE240C94000061110DC0FC0182818823FF\r
+:1005600031F085EE0E9426110E94272303C085EEFC\r
+:100570000E94EE1180E090E00895089508950E9491\r
+:10058000D1026E9A769A8DEB92E0892B11F00C9441\r
+:10059000BD0208958EEB92E0892B11F00C94BE02FF\r
+:1005A0000895279A2F988FEF9FEF9093870080935D\r
+:1005B00086008AE08093800089E1809381000C941A\r
+:1005C000D02281110BC080918000877F80938000B2\r
+:1005D00010928D0010928C002F9808952F988330E0\r
+:1005E00041F4809180008860809380008FEF9FEFBE\r
+:1005F00012C09091800098609093800023E030E0DA\r
+:10060000281B3109220F331F8FEF9FEF02C09695F1\r
+:1006100087952A95E2F790938D0080938C0008953A\r
+:100620008B3B910568F4883A910530F5853A910540\r
+:10063000C0F48430910598F4019709F06FC071C03F\r
+:10064000803E910508F46AC0883E910540F09C0107\r
+:10065000205F31092031310508F060C05CC09C0189\r
+:10066000A1C0853A910509F45FC0863A910509F465\r
+:100670005EC023E830E496C0883A910509F45AC078\r
+:10068000893A910509F459C08A3A910509F458C08C\r
+:100690008B3A910509F457C08C3A910509F456C07C\r
+:1006A0008D3A910509F455C0803B910509F454C079\r
+:1006B0008E3A910509F453C08F3A910509F452C05E\r
+:1006C000813B910509F451C0823B910509F450C06A\r
+:1006D000833B910509F44FC0843B910509F44EC05A\r
+:1006E000853B910509F44DC0863B910509F44CC04A\r
+:1006F000873B910509F44BC0883B910509F44AC03A\r
+:10070000893B910509F449C08A3B910509F048C02D\r
+:100710002AE236E447C09C01306544C020E030E066\r
+:1007200041C021E030E03EC021E830E43BC022E897\r
+:1007300030E438C022EE34E435C029EE34E432C06F\r
+:100740002AEE34E42FC025EB34E42CC026EB34E44D\r
+:1007500029C027EB34E426C02CEC34E423C02DEC74\r
+:1007600034E420C023E835E41DC02AE835E41AC08B\r
+:1007700022E935E417C024E935E414C021E236E467\r
+:1007800011C023E236E40EC024E236E40BC025E2B9\r
+:1007900036E408C026E236E405C027E236E402C0AB\r
+:1007A00020E034E4C901089508959CE0799FF001A8\r
+:1007B00011249CE3899FE00DF11D1124E60FF11D2A\r
+:1007C000EE0FFF1FE455FF4F25913491C9010895A5\r
+:1007D000880F991F845D9040FC0125913491C901D7\r
+:1007E0000895880F991F84559F4FFC0125913491DE\r
+:1007F000C90108950E94D5039C019A9581159F41D6\r
+:1008000010F4C9010895C90190528115904128F44E\r
+:10081000C9019F700E94F1030895C9019053811589\r
+:10082000904120F4C9019927906C0895C901905412\r
+:10083000409728F4C9018F709927946D089520314D\r
+:1008400080E4380719F480E091ED0895213190E4B7\r
+:10085000390719F480E090ED0895223140E434071F\r
+:1008600019F480E092ED0895233180E4380719F4FB\r
+:1008700080E093ED0895211590E5390769F40E9411\r
+:1008800015162FEF44E38CE0215040408040E1F703\r
+:1008900000C000000C94BD1C213090E5390731F4F4\r
+:1008A0008091D00181608093D0010895C901905555\r
+:1008B0008115904108F062C0432F55274F7055278E\r
+:1008C00041305105F9F4C90174E0880F991F7A95F8\r
+:1008D000E1F788279370B901E3E0660F771FEA9587\r
+:1008E000E1F760767727862B972B9C682370332758\r
+:1008F00002C0440F551F2A95E2F74F715527842BEC\r
+:10090000952B08954230510529F4922F8827816F45\r
+:10091000906A089543305105B9F4C90153E0880F36\r
+:10092000991F5A95E1F7807E97702370332741E035\r
+:1009300050E002C0440F551F2A95E2F74F7155272A\r
+:10094000842B952B9C6808954430510549F5C901C5\r
+:1009500043E0880F991F4A95E1F7807E97702370D6\r
+:10096000332741E050E002C0440F551F2A95E2F7BB\r
+:100970004F715527842B952B9A680895C90190577C\r
+:100980008115904120F4C9019F7090620895C901BA\r
+:1009900090588115904120F4C9019F70906A089584\r
+:1009A000203E3105E0F4203C310568F52133310566\r
+:1009B00009F475C048F42932310509F46BC02A32B4\r
+:1009C000310509F07BC075C02933310501F12238AA\r
+:1009D0003105E9F02533310509F070C051C0233EDF\r
+:1009E0003105B1F140F4203E3105D1F0223E310510\r
+:1009F00009F064C01CC0263E310579F1273E31055F\r
+:100A000009F05CC038C0C9010E94E80308958091D4\r
+:100A1000E10180FD02C081FF51C080EE90E04FC037\r
+:100A20008091E10180FFF9CF89E390E048C0809197\r
+:100A3000E10182FF0AC08091E10184FF03C080E0F0\r
+:100A400090E03DC083EE90E03AC082EE90E037C087\r
+:100A50008091E10182FFEFCFF8CF8091E10183FF28\r
+:100A600007C08091E10184FDEACF87EE90E027C0C6\r
+:100A700086EE90E024C08091E10183FFF2CFF8CFB1\r
+:100A80008091E10185FF03C089E290E018C085E311\r
+:100A900090E015C08091E10185FDF9CFF5CF8091FF\r
+:100AA000E10186FF03C08AE290E009C081E390E0A3\r
+:100AB00006C08091E10186FDF9CFF5CFC9010E9402\r
+:100AC0001003089508955F926F927F928F929F9284\r
+:100AD000AF92BF92CF92DF92EF92FF920F931F934C\r
+:100AE000CF93DF93CDB7DEB72A970FB6F894DEBF6A\r
+:100AF0000FBECDBF9E012F5F3F4F4E018BE0880E92\r
+:100B0000911C60E070E000E010E0E12CF12CC12CC1\r
+:100B1000D12CA12CB12C8AE0782E622E532E41E0EC\r
+:100B200050E0E4E1F1E0A62DB52D872D01900D9266\r
+:100B30008A95E1F7F901819191919F01FC01E07F94\r
+:100B4000FF27E032F10559F48F709927FA0102C0AE\r
+:100B5000EE0FFF1F8A95E2F7AE2ABF2A37C0E033B7\r
+:100B6000F10559F48F709927FA0102C0EE0FFF1FAB\r
+:100B70008A95E2F7CE2ADF2A29C0E034F10559F43C\r
+:100B80008F709927FA0102C0EE0FFF1F8A95E2F7D6\r
+:100B9000EE2AFF2A1BC0E035F10559F48F70992722\r
+:100BA000FA0102C0EE0FFF1F8A95E2F70E2B1F2BF2\r
+:100BB0000DC0E036F10551F48F709927FA0102C09B\r
+:100BC000EE0FFF1F8A95E2F76E2B7F2B2815390554\r
+:100BD00009F0A7CF94B18A2D8095892384B985B176\r
+:100BE0008A2985B997B18C2D8095892387B988B1D9\r
+:100BF0008C2988B99AB18E2D809589238AB98BB1B9\r
+:100C00008E298BB99DB1802F809589238DB98EB1A6\r
+:100C1000802B8EB990B3862F8095892380BB81B3BA\r
+:100C2000862B81BB2A960FB6F894DEBF0FBECDBFD0\r
+:100C3000DF91CF911F910F91FF90EF90DF90CF90B8\r
+:100C4000BF90AF909F908F907F906F905F9008952E\r
+:100C50005F926F927F928F929F92AF92BF92CF924C\r
+:100C6000DF92EF92FF920F931F93CF93DF93CDB755\r
+:100C7000DEB768970FB6F894DEBF0FBECDBF85B75D\r
+:100C8000806885BF85B7806885BF0E9463059E0127\r
+:100C90002F5F3F4F4E0189E1880E911C60E070E0AC\r
+:100CA00000E010E0E12CF12CC12CD12CA12CB12CB6\r
+:100CB00098E1792E622E532E41E050E0EEE1F1E012\r
+:100CC000A62DB52D872D01900D928A95E1F7F9019A\r
+:100CD000819191919F01FC01E07FFF27E032F105B6\r
+:100CE00059F48F709927FA0102C0EE0FFF1F8A9501\r
+:100CF000E2F7AE2ABF2A37C0E033F10559F48F700E\r
+:100D00009927FA0102C0EE0FFF1F8A95E2F7CE2A5B\r
+:100D1000DF2A29C0E034F10559F48F709927FA01D0\r
+:100D200002C0EE0FFF1F8A95E2F7EE2AFF2A1BC0D2\r
+:100D3000E035F10559F48F709927FA0102C0EE0FE2\r
+:100D4000FF1F8A95E2F70E2B1F2B0DC0E036F10531\r
+:100D500051F48F709927FA0102C0EE0FFF1F8A9598\r
+:100D6000E2F76E2B7F2B2815390509F0A7CF94B138\r
+:100D70008A2D8095892384B985B18A2985B997B14F\r
+:100D80008C2D8095892387B988B18C2988B99AB12F\r
+:100D90008E2D809589238AB98BB18E298BB99DB10F\r
+:100DA000802F809589238DB98EB1802B8EB990B319\r
+:100DB000862F8095892380BB81B3862B81BB1092BF\r
+:100DC00055011092540110925F0110925E01109231\r
+:100DD0005701109256011092610110926001109219\r
+:100DE0005901109258011092630110926201109201\r
+:100DF0005B0110925A0110926501109264011092E9\r
+:100E00005D0110925C0110926701109266018FEBF8\r
+:100E100092E0892BB9F068960FB6F894DEBF0FBE4A\r
+:100E2000CDBFDF91CF911F910F91FF90EF90DF9099\r
+:100E3000CF90BF90AF909F908F907F906F905F907A\r
+:100E40000C94BF0268960FB6F894DEBF0FBECDBFFC\r
+:100E5000DF91CF911F910F91FF90EF90DF90CF9096\r
+:100E6000BF90AF909F908F907F906F905F9008950C\r
+:100E70005F926F927F928F929F92AF92BF92CF922A\r
+:100E8000DF92EF92FF920F931F93CF93DF93CDB733\r
+:100E9000DEB7A2970FB6F894DEBF0FBECDBF7E01BE\r
+:100EA00049E1E40EF11C2EE5C22E21E0D22E5E01B6\r
+:100EB00053E2A50EB11C3AE0532E470101E010E0C9\r
+:100EC00048E1642E55E0752EE4E1F1E0D401852D72\r
+:100ED00001900D928A95E1F7F701819191917F013F\r
+:100EE0009C01207F33272032310589F424B18F7093\r
+:100EF0009927A80102C0440F551F8A95E2F7CA013D\r
+:100F0000242B24B995B18095892385B94FC020330E\r
+:100F1000310589F427B18F709927F80102C0EE0FCF\r
+:100F2000FF1F8A95E2F7CF012E2B27B998B1809544\r
+:100F3000892388B93BC02034310589F42AB18F70E8\r
+:100F40009927A80102C0440F551F8A95E2F7CA01EC\r
+:100F5000242B2AB99BB1809589238BB927C02035D2\r
+:100F6000310589F42DB18F709927F80102C0EE0F79\r
+:100F7000FF1F8A95E2F7CF012E2B2DB99EB18095E8\r
+:100F800089238EB913C02036310581F420B38F70C8\r
+:100F90009927A80102C0440F551F8A95E2F7CA019C\r
+:100FA000242B20BB91B38095892381BB50EA5A95AD\r
+:100FB000F1F7BE016F5F7F4F80E090E020E030E00E\r
+:100FC000EEE1F1E0DE011196462D01900D924A9579\r
+:100FD000E1F7FB0141915191BF01FA01E07FFF2749\r
+:100FE000E032F10511F4E3B113C0E033F10511F47F\r
+:100FF000E6B10EC0E034F10511F4E9B109C0E03505\r
+:10100000F10511F4ECB104C0E036F105B9F4EFB12B\r
+:10101000F0E04F70552702C0F595E7954A95E2F745\r
+:10102000E0FD08C0A801022E02C0440F551F0A941B\r
+:10103000E2F702C040E050E0842B952B2F5F3F4F3A\r
+:101040002C30310509F0BCCFF60120813181281701\r
+:10105000390721F091838083709200010E9463051B\r
+:10106000F2E0CF0ED11CEA14FB0409F02DCF8091E1\r
+:1010700000018823A1F1815080930001882339F079\r
+:101080008FE99FE00197F1F700C0000028C0809130\r
+:101090005E0190915F01909355018093540180917E\r
+:1010A0006001909161019093570180935601809166\r
+:1010B000620190916301909359018093580180914E\r
+:1010C00064019091650190935B0180935A01809136\r
+:1010D00066019091670190935D0180935C018AECB9\r
+:1010E00092E0892B11F00E94CA0281E0A2960FB60D\r
+:1010F000F894DEBF0FBECDBFDF91CF911F910F914E\r
+:10110000FF90EF90DF90CF90BF90AF909F908F9027\r
+:101110007F906F905F900895E82FF0E0EE0FFF1F33\r
+:10112000EC5AFE4F8081918108950895809171015C\r
+:101130000895CF93DF9300D01F92CDB7DEB72091F3\r
+:10114000E701243021F523E029839B838A832093C0\r
+:10115000E9008FEF06C095ED9A95F1F7000088231E\r
+:1011600029F09091E800815095FFF5CF8091E8003B\r
+:1011700085FF0DC040E050E063E070E0CE010196D5\r
+:101180000E94280B8091E8008E778093E8000F90F2\r
+:101190000F900F90DF91CF910895CF93DF9300D000\r
+:1011A0001F92CDB7DEB72091E701243029F522E068\r
+:1011B00029839B838A8383E08093E9008FEF06C0B5\r
+:1011C00095ED9A95F1F70000882329F09091E800B9\r
+:1011D000815095FFF5CF8091E80085FF0DC040E07C\r
+:1011E00050E063E070E0CE0101960E94280B8091F0\r
+:1011F000E8008E778093E8000F900F900F90DF91BA\r
+:10120000CF9108952091E7012430F9F422E0209352\r
+:10121000E9002FEF06C035ED3A95F1F700002223E3\r
+:1012200029F03091E800215035FFF5CF2091E800FA\r
+:1012300025FF0BC040E050E065E070E00E94280B05\r
+:101240008091E8008E778093E8000895CF93DF9334\r
+:10125000EC018091E701843041F581E08093E90061\r
+:101260008FEF06C095ED9A95F1F70000882329F0DD\r
+:101270009091E800815095FFF5CF8091E80085FFBF\r
+:1012800014C040E050E068E070E0CE010E94280BFE\r
+:101290008091E8008E778093E80088E0FE01A9E65F\r
+:1012A000B1E001900D928A95E1F7DF91CF91089519\r
+:1012B0008091E601811109C00E94C80C0E94250D91\r
+:1012C0008091E20084608093E20008951092E6012C\r
+:1012D0000895089508950C94201C809172018F5FE9\r
+:1012E0008093720162E30E948924911135C01092AB\r
+:1012F000720180917301882379F18091E701843034\r
+:1013000049F58091E9008F709091EC0090FF02C048\r
+:1013100090E801C090E0982B84E08093E9008091F0\r
+:10132000EB0080FF14C08091EE0087FD03C00FC06A\r
+:101330001092F1008091E80085FDFACF8091E800DD\r
+:1013400080FF05C08091E8008E778093E8009F7051\r
+:101350009093E90010927301089542E061EC81E0FE\r
+:101360000E943E0C42E061EC82E00E943E0C42E0B2\r
+:1013700061EC83E00E943E0C42E261EC84E00C945C\r
+:101380003E0C8091E901833009F454C030F481307F\r
+:1013900071F0823009F0A5C08CC08A3009F479C0A0\r
+:1013A0008B3009F45FC0893009F09BC020C0809168\r
+:1013B000E801813A09F095C08091E800877F809329\r
+:1013C000E8008091EC019091ED01892B21F060E023\r
+:1013D00080E090E003C068E089E691E070E00E9460\r
+:1013E000770B8091E8008B778093E80008958091D7\r
+:1013F000E801813209F075C08091EC019091ED0116\r
+:10140000892B09F06EC08091E800877F8093E80007\r
+:1014100005C08091E701882309F463C08091E8004A\r
+:1014200082FFF7CF8091F100809371018091E800F5\r
+:101430008B7753C08091E801813A09F052C08091C6\r
+:10144000EC019091ED01892B09F04BC08091E800EF\r
+:10145000877F8093E8008091E80080FFFCCF809137\r
+:101460000B0136C08091E8018132D9F58091EC0101\r
+:101470009091ED01892BA9F58091E800877F8093F9\r
+:10148000E8000E94750C8091EA0180930B010C9496\r
+:1014900015168091E801813221F58091E800877F5F\r
+:1014A0008093E8000E94750C8091EB0180936801A5\r
+:1014B00008958091E801813AA1F48091E800877F46\r
+:1014C0008093E8008091E80080FFFCCF8091680164\r
+:1014D0008093F1008091E8008E778093E8000C946F\r
+:1014E000750C089584B7877F84BF88E10FB6F894A0\r
+:1014F00080936000109260000FBE90E080E80FB60D\r
+:10150000F89480936100909361000FBE0E943310A5\r
+:101510000E94C80C0E94250D8091E2008460809397\r
+:10152000E20078940E94C20F0E94351081E091E0A1\r
+:101530000E94DF0F0BC00E94DD1B8091E501882314\r
+:1015400029F00E94081C81110E94120B8091E70172\r
+:10155000853089F30E943F10F9CF292F332723309C\r
+:101560003105B1F04CF42130310509F44DC0223081\r
+:10157000310509F04EC007C02132310541F1223258\r
+:10158000310591F146C0E4E7F0E082E693E045C022\r
+:1015900099278130910569F08230910589F0892B76\r
+:1015A00009F037C0EEE5F3E0E491F0E08EE593E07A\r
+:1015B00034C0E0E3F3E0E491F0E080E393E02DC099\r
+:1015C000E4E0F3E0E491F0E084E093E026C06430EE\r
+:1015D00000F5E62FF0E0EE0FFF1FEA5CFE4F808182\r
+:1015E0009181E9E0F0E019C0643098F4E62FF0E072\r
+:1015F000DF01AA0FBB1FA25CBE4F8D919C91EA5BDD\r
+:10160000FE4FE081F0E009C0E2E1F0E086ED93E01A\r
+:1016100004C0E0E0F0E080E090E0DA018D939C937C\r
+:10162000CF01089580E189BD82E189BD09B400FE42\r
+:10163000FDCF8091D8008F7D8093D8008091E0000D\r
+:1016400082608093E0008091E00081FDFCCF0895EE\r
+:10165000BF92CF92DF92EF92FF920F931F93CF939F\r
+:10166000DF937C018B01EA010E94960CB82E811158\r
+:1016700033C0209731F028813981021B130BE20E11\r
+:10168000F31EC12CD12C23C08091E80085FD15C02C\r
+:101690008091E8008E778093E800209749F0888158\r
+:1016A00099818C0D9D1D9983888325E0B22E14C0ED\r
+:1016B0000E94960C882359F00EC0F70181917F019A\r
+:1016C0008093F10001501109FFEFCF1ADF0A0115D5\r
+:1016D0001105D1F601C0B82E8B2DDF91CF911F914E\r
+:1016E0000F91FF90EF90DF90CF90BF9008954091C1\r
+:1016F000EE015091EF014617570748F0611571054B\r
+:1017000039F44091E8004E774093E80001C0BA01F7\r
+:10171000FC0140E033C08091E701882309F444C014\r
+:10172000853009F443C08091E80083FD41C0809179\r
+:10173000E80082FD33C08091E80080FF1FC09091D7\r
+:10174000F3008091F200392F20E0A901482BCA0153\r
+:1017500006C041914093F1006150710901966115F5\r
+:10176000710519F088309105A0F341E0089709F060\r
+:1017700040E08091E8008E778093E8006115710564\r
+:1017800051F64111C8CF0AC08091E701882361F06A\r
+:10179000853061F08091E80083FD0AC08091E80007\r
+:1017A00082FFF2CF80E0089582E0089583E00895FB\r
+:1017B00081E008954091EE015091EF0146175707DF\r
+:1017C00048F06115710539F44091E8004E77409377\r
+:1017D000E80001C0BA01FC0140E034C08091E7019B\r
+:1017E000882309F445C0853009F444C08091E8009D\r
+:1017F00083FD42C08091E80082FD34C08091E80002\r
+:1018000080FF20C09091F3008091F200392F20E0FA\r
+:10181000A901482BCA0107C044914093F1003196B9\r
+:101820006150710901966115710519F088309105B3\r
+:1018300098F341E0089709F040E08091E8008E7746\r
+:101840008093E8006115710549F64111C7CF0AC0C0\r
+:101850008091E701882361F0853061F08091E80094\r
+:1018600083FD0AC08091E80082FFF2CF80E00895F6\r
+:1018700082E0089583E0089581E00895982F2CC0B8\r
+:101880009093E900981739F07091EC002091ED00E9\r
+:101890005091F00003C0242F762F50E021FD02C0AC\r
+:1018A0009F5F1AC03091EB003E7F3093EB00309188\r
+:1018B000ED003D7F3093ED003091EB0031603093CF\r
+:1018C000EB007093EC002093ED005093F00020911A\r
+:1018D000EE0027FDE5CF07C0973090F28F70809320\r
+:1018E000E90081E0089580E008958091E80187FD96\r
+:1018F00005C08091E80080FF0EC012C08091E80012\r
+:1019000082FD05C08091E7018111F8CF0895809193\r
+:10191000E8008B7708C08091E7018111EACF089534\r
+:101920008091E8008E778093E80008958091E4002C\r
+:101930009091E50045E62091EC0020FD1FC023C0FA\r
+:101940002091E701222391F0253091F02091EB00C6\r
+:1019500025FD10C02091E4003091E50028173907DB\r
+:1019600051F34150C90139F784E0089582E00895A8\r
+:1019700083E0089581E0089580E008952091E800D3\r
+:1019800020FFDECFF9CF2091E80022FFD9CFF4CF9E\r
+:101990000E94360D0E943E0DE0EEF0E080818160F5\r
+:1019A0008083E8EDF0E080818F77808319BCA7ED1C\r
+:1019B000B0E08C918E7F8C9380818F7E808310929B\r
+:1019C000E60108950F931F93CF93DF930E94360D86\r
+:1019D0000E943E0DC8EDD0E088818F778883888192\r
+:1019E0008068888388818F7D888319BC1092E70185\r
+:1019F0001092E3011092E5011092E40100EE10E074\r
+:101A0000F80180818B7F808388818160888342E0B8\r
+:101A100060E080E00E943E0CE1EEF0E080818E7F8D\r
+:101A20008083E2EEF0E08081816080838081886045\r
+:101A30008083F80180818E7F8083888180618883A4\r
+:101A4000DF91CF911F910F910895E8EDF0E0808133\r
+:101A50008F7E8083E7EDF0E080818160808384E089\r
+:101A600082BF81E08093E6010C94E20CE8EDF0E0A7\r
+:101A700080818E7F80831092E20008951092DA00B8\r
+:101A80001092E10008951F920F920FB60F92112449\r
+:101A90002F933F934F935F936F937F938F939F9376\r
+:101AA000AF93BF93EF93FF938091E10082FF0BC050\r
+:101AB0008091E20082FF07C08091E1008B7F8093DC\r
+:101AC000E1000E946D098091DA0080FF1FC08091C3\r
+:101AD000D80080FF1BC08091DA008E7F8093DA00EF\r
+:101AE0008091D90080FF0DC080E189BD82E189BD70\r
+:101AF00009B400FEFDCF81E08093E7010E94580900\r
+:101B000005C019BC1092E7010E9466098091E100AE\r
+:101B100080FF19C08091E20080FF15C08091E20033\r
+:101B20008E7F8093E2008091E20080618093E200EA\r
+:101B30008091D80080628093D80019BC85E08093A2\r
+:101B4000E7010E946A098091E10084FF30C0809122\r
+:101B5000E20084FF2CC080E189BD82E189BD09B427\r
+:101B600000FEFDCF8091D8008F7D8093D8008091BA\r
+:101B7000E1008F7E8093E1008091E2008F7E809370\r
+:101B8000E2008091E20081608093E2008091E301B5\r
+:101B9000882311F084E007C08091E30087FF02C032\r
+:101BA00083E001C081E08093E7010E946B0980918E\r
+:101BB000E10083FF29C08091E20083FF25C080916E\r
+:101BC000E100877F8093E10082E08093E70110923B\r
+:101BD000E3018091E1008E7F8093E1008091E2003B\r
+:101BE0008E7F8093E2008091E20080618093E2002A\r
+:101BF00042E060E080E00E943E0C8091F00088604E\r
+:101C00008093F0000E946909FF91EF91BF91AF911D\r
+:101C10009F918F917F916F915F914F913F912F9104\r
+:101C20000F900FBE0F901F9018951F920F920FB636\r
+:101C30000F9211242F933F934F935F936F937F9352\r
+:101C40008F939F93AF93BF93CF93EF93FF93809125\r
+:101C5000E9008F709091EC0090FF02C090E801C005\r
+:101C600090E0C92FC82B1092E9008091F000877F87\r
+:101C70008093F00078940E94590E1092E9008091B0\r
+:101C8000F00088608093F000CF70C093E900FF916E\r
+:101C9000EF91CF91BF91AF919F918F917F916F9174\r
+:101CA0005F914F913F912F910F900FBE0F901F901A\r
+:101CB00018951F93CF93DF93CDB7DEB7AC970FB6D0\r
+:101CC000F894DEBF0FBECDBFE8EEF1E08091F100E9\r
+:101CD000819321E0E03FF207C9F70E94C10980919A\r
+:101CE000E80083FF37C18091E8019091E9019530C8\r
+:101CF00009F488C038F49130B1F170F0933009F0F4\r
+:101D000029C131C0983009F4F8C0993009F404C1F0\r
+:101D1000963009F01FC19DC0803821F0823809F04B\r
+:101D200019C108C08091E4019091E501992389F0DF\r
+:101D300082600FC08091EC019091ED018F70992726\r
+:101D40008093E9008091EB0085FB882780F9109251\r
+:101D5000E9009091E800977F9093E8008093F1006C\r
+:101D60001092F100D5C0882319F0823009F0F2C03A\r
+:101D70008F7121F0823009F0EDC00BC08091EA0133\r
+:101D8000813009F0E7C0933009F080E08093E501ED\r
+:101D90002FC08091EA0181112BC08091EC019091BC\r
+:101DA000ED018F709927009709F4D4C08093E90062\r
+:101DB0002091EB0020FF1CC02091E901233021F489\r
+:101DC0008091EB00806212C09091EB009061909343\r
+:101DD000EB0021E030E001C0220F8A95EAF7209362\r
+:101DE000EA001092EA008091EB0088608093EB009B\r
+:101DF0001092E9008091E800877F8093E8000E94BC\r
+:101E0000750CA8C08111A6C08091EA019091EB01E8\r
+:101E10008F779927182F9091E3009078982B9093C3\r
+:101E2000E3008091E800877F8093E8000E94750CB2\r
+:101E30008091E80080FFFCCF8091E3008068809370\r
+:101E4000E300112311F083E001C082E08093E701F9\r
+:101E500081C08058823008F07DC08091EA01909165\r
+:101E6000EB018C3D23E0920779F583E08A838AE2D7\r
+:101E700089834FB7F894DE01139620E03EE051E2EB\r
+:101E8000E32FF0E050935700E49120FF03C0E29568\r
+:101E9000EF703F5FEF708E2F90E0EA3010F0C79642\r
+:101EA00001C0C0968D939D932F5F243149F74FBF9A\r
+:101EB0008091E800877F8093E8006AE270E0CE01BD\r
+:101EC00001960E94770B13C0AE01455D5F4F609194\r
+:101ED000EC010E94AD0A0097E9F12091E800277F0C\r
+:101EE0002093E800BC018BA59CA50E94DA0B809191\r
+:101EF000E8008B778093E8002DC0803859F58091F9\r
+:101F0000E800877F8093E8008091E3018093F100EF\r
+:101F10008091E8008E7771CF81111CC09091EA0109\r
+:101F20009230C0F48091E800877F8093E80090931E\r
+:101F3000E3010E94750C8091E301811104C080913E\r
+:101F4000E30087FF02C084E001C081E08093E701E5\r
+:101F50000E94AD098091E80083FF0AC08091E800EB\r
+:101F6000877F8093E8008091EB0080628093EB0094\r
+:101F7000AC960FB6F894DEBF0FBECDBFDF91CF9108\r
+:101F80001F910895CF938091E7018823B1F080914C\r
+:101F9000E9008F709091EC0090FF02C090E801C0C2\r
+:101FA00090E0C92FC82B1092E9008091E80083FDD2\r
+:101FB0000E94590ECF70C093E900CF91089590937D\r
+:101FC0007501809374010895E0917401F091750199\r
+:101FD000309721F00190F081E02D099480E0089580\r
+:101FE000E0917401F0917501309721F00280F38146\r
+:101FF000E02D09940895E0917401F09175013097F6\r
+:1020000021F00480F581E02D099408952091760156\r
+:10201000309177018217930771F090937701809345\r
+:102020007601E0917401F0917501309721F00680FE\r
+:10203000F781E02D0994089520917801309179017C\r
+:102040008217930771F09093790180937801E09162\r
+:102050007401F0917501309721F00084F185E02D35\r
+:102060000994089508950C9432100E94541C0E9403\r
+:1020700028060E94281D0C94D0220C9462055F92C1\r
+:102080006F927F928F929F92AF92BF92CF92DF9288\r
+:10209000EF92FF920F931F93CF93DF93CDB7DEB7ED\r
+:1020A0002A970FB6F894DEBF0FBECDBF0E94380747\r
+:1020B0009AE7C92E91E0D92E00E010E0AA24A3945B\r
+:1020C000B12C502E802F0E948C083C01F601E1902B\r
+:1020D000F1906F01E826F926E114F10431F40F5F65\r
+:1020E0001F4F0530110569F73AC08091D00181FD7D\r
+:1020F0000E94950820E030E04501022E02C0880CC5\r
+:10210000991C0A94E2F7C4018E219F21892B09F1C1\r
+:102110002E835F826820792081E0672809F480E0BF\r
+:1021200088870E945D1C8160782F9A8789874E81FD\r
+:102130005F8168858A850E94F810F801EE0FFF1F05\r
+:10214000E658FE4F8081918188259925918380836F\r
+:1021500016C02F5F3F4F2C30310571F6C0CF8FEF87\r
+:1021600089838A831B820E945D1C8160782F9D83F6\r
+:102170008C8349815A816B818D810E94F8100E9465\r
+:102180001520109184010E94E40F1817D9F00E94C5\r
+:10219000E40F809384012A960FB6F894DEBF0FBE39\r
+:1021A000CDBFDF91CF911F910F91FF90EF90DF9006\r
+:1021B000CF90BF90AF909F908F907F906F905F90E7\r
+:1021C0000C943D102A960FB6F894DEBF0FBECDBF1B\r
+:1021D000DF91CF911F910F91FF90EF90DF90CF9003\r
+:1021E000BF90AF909F908F907F906F905F90089579\r
+:1021F000CF93DF93CDB7DEB72B970FB6F894DEBF42\r
+:102200000FBECDBF4F83588769877A878B87DE01E2\r
+:10221000119686E0FD0111928A95E9F785E0FE01AD\r
+:10222000379601900D928A95E1F749815A816B8129\r
+:102230007C818D819E810E94D4182B960FB6F894D4\r
+:10224000DEBF0FBECDBFDF91CF910895CF93C82FD2\r
+:10225000882309F4C1C0823859F40E94E40F81FD3B\r
+:10226000BBC089E30E943B1B0E94B71B89E30CC0E3\r
+:10227000833879F40E94E40F80FDAEC083E50E94AC\r
+:102280003B1B0E94B71B83E50E945D1BCF910C9402\r
+:10229000B71B843859F40E94E40F82FD9DC087E487\r
+:1022A0000E943B1B0E94B71B87E4EECF8450813A0B\r
+:1022B00048F48C2F0E94322281118EC08C2F0E94F4\r
+:1022C0003B1BE4CF8C2F805E883050F4C77081E0D8\r
+:1022D00090E001C0880FCA95EAF70E947E1BD6CF16\r
+:1022E0008C2F855A833078F4C53A29F0C63A31F4F8\r
+:1022F00082E890E005C081E890E002C083E890E0C9\r
+:10230000CF910C9406108C2F885A833108F064C04A\r
+:10231000C83A39F1C93A41F1CA3A49F1CB3A51F1D7\r
+:10232000CC3A59F1CD3A61F1C03B69F1CE3A71F145\r
+:10233000CF3A79F1C13B81F1C23B89F1C33B91F1C5\r
+:10234000C43B99F1C53BA1F1C63BA9F1C73BB1F133\r
+:10235000C83BB9F1C93BC1F1CA3BC9F58AE292E079\r
+:1023600038C082EE90E035C089EE90E032C08AEE4F\r
+:1023700090E02FC085EB90E02CC086EB90E029C068\r
+:1023800087EB90E026C08CEC90E023C08DEC90E0D1\r
+:1023900020C083E891E01DC08AE891E01AC082E97C\r
+:1023A00091E017C084E991E014C081E292E011C08D\r
+:1023B00083E292E00EC084E292E00BC085E292E0FC\r
+:1023C00008C086E292E005C087E292E002C080E0A9\r
+:1023D00090E0CF910C941C10CF910895882309F4BC\r
+:1023E0004DC0823859F40E94E40F81FF47C089E351\r
+:1023F0000E943B1B0E94B71B89E30CC0833871F419\r
+:102400000E94E40F80FF3AC083E50E943B1B0E94BC\r
+:10241000B71B83E50E945D1B0C94B71B843859F4ED\r
+:102420000E94E40F82FF2AC087E40E943B1B0E94A7\r
+:10243000B71B87E4EFCF982F9450913A08F4EACF76\r
+:10244000982F905E983058F4282F277081E090E004\r
+:1024500001C0880F2A95EAF70E94841BDDCF982FD0\r
+:10246000955A933020F480E090E00C940610885A3E\r
+:10247000833120F480E090E00C941C1008958823B0\r
+:1024800021F00E947E1B0C94B71B0895882321F035\r
+:102490000E94841B0C94B71B0895BF92CF92DF92C9\r
+:1024A000EF92FF920F931F93CF93DF93CDB7DEB7D9\r
+:1024B00027970FB6F894DEBF0FBECDBF8C0185E025\r
+:1024C000F801DE01119601900D928A95E1F7F8016D\r
+:1024D00030812181F280558152955F708381948192\r
+:1024E000892B39F02F3F41F481E090E03F3F31F0FC\r
+:1024F00003C081E090E002C080E090E080FD73C303\r
+:1025000039832A8389819A815E830E94F81AB92EC1\r
+:102510008F830E94F71A0E941F1A2B2D22952F706D\r
+:1025200030E05E816F812530310509F4E6C06CF43E\r
+:10253000243031050CF0A2C04B2D407F8B2D8F70C5\r
+:10254000223031050CF045C017C02C3031054CF459\r
+:102550002A3031050CF0E7C12830310509F043C3BA\r
+:10256000E5C02D30310509F4BAC20CF4A2C22F30F7\r
+:10257000310509F038C323C3182F411101C002C02F\r
+:102580001295107FFF2059F0112309F46BC2812F9F\r
+:102590006F830E948E1B0E94B71B6F8163C2862FC0\r
+:1025A0000E94EE11112309F41EC3812F0E94941B77\r
+:1025B00027960FB6F894DEBF0FBECDBFDF91CF9147\r
+:1025C0001F910F91FF90EF90DF90CF90BF900C94F0\r
+:1025D000B71B403211F08295807F662319F061307D\r
+:1025E00071F523C0FF20B1F0511101C032C051304C\r
+:1025F00081F527960FB6F894DEBF0FBECDBFDF91F1\r
+:10260000CF911F910F91FF90EF90DF90CF90BF90EF\r
+:102610000C949E1B511101C003C0513009F4E3C258\r
+:102620008E830E94A11B8E819AC1FF2021F056301B\r
+:1026300008F0D9C20EC0553008F0D5C290C1FF20B5\r
+:10264000C9F0552331F0F801958190FF0BC29F70BE\r
+:10265000958327960FB6F894DEBF0FBECDBFDF91EE\r
+:10266000CF911F910F91FF90EF90DF90CF90BF908F\r
+:102670000C943F12552309F472C109C22B2D2695E3\r
+:102680002695237030E02115310529F021303105E0\r
+:1026900009F0A9C219C0FF2021F0862F9B2D93704D\r
+:1026A00002C080E090E027960FB6F894DEBF0FBE20\r
+:1026B000CDBFDF91CF911F910F91FF90EF90DF90F1\r
+:1026C000CF90BF900C940610FF2021F0862F9B2DF9\r
+:1026D000937002C080E090E027960FB6F894DEBFBA\r
+:1026E0000FBECDBFDF91CF911F910F91FF90EF9063\r
+:1026F000DF90CF90BF900C941C10862FFF2019F014\r
+:102700000E941B1F02C00E94831F27960FB6F894D9\r
+:10271000DEBF0FBECDBFDF91CF911F910F91FF9014\r
+:10272000EF90DF90CF90BF900C940A208B2D837098\r
+:1027300009F079C0F11057C2262F229526952770EF\r
+:10274000220F220F862F8F70C82ED12CE12CF12C56\r
+:10275000022E04C0CC0CDD1CEE1CFF1C0A94D2F728\r
+:1027600064FF10C06FE070E080E090E004C0660F8E\r
+:10277000771F881F991F2A95D2F7609570958095CD\r
+:10278000909503C060E070E0CB012B2D2695269537\r
+:102790002370422F50E042305105D9F043305105AB\r
+:1027A00069F16C297D298E299F294130510551F10C\r
+:1027B00027960FB6F894DEBF0FBECDBFDF91CF9145\r
+:1027C0001F910F91FF90EF90DF90CF90BF900C94EE\r
+:1027D000341A6C297D298E299F2927960FB6F894E3\r
+:1027E000DEBF0FBECDBFDF91CF911F910F91FF9044\r
+:1027F000EF90DF90CF90BF900C94461A0E94341A4D\r
+:10280000C701B60127960FB6F894DEBF0FBECDBF45\r
+:10281000DF91CF911F910F91FF90EF90DF90CF90BC\r
+:10282000BF900C94221AFF2019F08B2D817001C0EB\r
+:102830008695882309F4D7C1262F229526952770DF\r
+:10284000220F220F862F8F70C82ED12CE12CF12C55\r
+:10285000022E04C0CC0CDD1CEE1CFF1C0A94D2F727\r
+:1028600064FF10C06FE070E080E090E004C0660F8D\r
+:10287000771F881F991F2A95D2F7609570958095CC\r
+:10288000909503C060E070E0CB012B2D2695269536\r
+:102890002370422F50E042305105D9F043305105AA\r
+:1028A00069F16C297D298E299F294130510551F10B\r
+:1028B00027960FB6F894DEBF0FBECDBFDF91CF9144\r
+:1028C0001F910F91FF90EF90DF90CF90BF900C94ED\r
+:1028D000D31A6C297D298E299F2927960FB6F89443\r
+:1028E000DEBF0FBECDBFDF91CF911F910F91FF9043\r
+:1028F000EF90DF90CF90BF900C94E51A0E94D31A0E\r
+:10290000C701B60127960FB6F894DEBF0FBECDBF44\r
+:10291000DF91CF911F910F91FF90EF90DF90CF90BB\r
+:10292000BF900C94C11A603F59F120F4603E08F446\r
+:1029300094C008C0623F09F467C0F0F1633F09F03A\r
+:102940008CC065C0162F1F708B2D8F71FF2021F05A\r
+:102950000E946C1A812F7DCE0E94871A812F2796A4\r
+:102960000FB6F894DEBF0FBECDBFDF91CF911F91A0\r
+:102970000F91FF90EF90DF90CF90BF900C94461294\r
+:10298000FF20B1F0553008F02EC18B2D8F712796A6\r
+:102990000FB6F894DEBF0FBECDBFDF91CF911F9170\r
+:1029A0000F91FF90EF90DF90CF90BF900C94A61AFC\r
+:1029B000563008F018C1E9CFFF2099F08B2D8F71A8\r
+:1029C00027960FB6F894DEBF0FBECDBFDF91CF9133\r
+:1029D0001F910F91FF90EF90DF90CF90BF900C94DC\r
+:1029E0006C1A8B2D8F7127960FB6F894DEBF0FBE31\r
+:1029F000CDBFDF91CF911F910F91FF90EF90DF90AE\r
+:102A0000CF90BF900C94871AF110EBCFD7CFFF2057\r
+:102A100099F08B2D8F7127960FB6F894DEBF0FBEFD\r
+:102A2000CDBFDF91CF911F910F91FF90EF90DF907D\r
+:102A3000CF90BF900C945D1A27960FB6F894DEBF26\r
+:102A40000FBECDBFDF91CF911F910F91FF90EF90FF\r
+:102A5000DF90CF90BF900C94581AFF20A9F0552317\r
+:102A600009F4ACCF862F27960FB6F894DEBF0FBEC1\r
+:102A7000CDBFDF91CF911F910F91FF90EF90DF902D\r
+:102A8000CF90BF900C942611552309F4AACF862F1E\r
+:102A900027960FB6F894DEBF0FBECDBFDF91CF9162\r
+:102AA0001F910F91FF90EF90DF90CF90BF900C940B\r
+:102AB000EE114B2D4F70C8010E94AB0227960FB646\r
+:102AC000F894DEBF0FBECDBFDF91CF911F910F9164\r
+:102AD000FF90EF90DF90CF90BF900C948A19F11087\r
+:102AE00082C09B2D9F70492F50E04230510599F1D3\r
+:102AF00044F44115510569F04130510509F073C0A6\r
+:102B000019C043305105C1F14430510509F06BC083\r
+:102B100044C027960FB6F894DEBF0FBECDBFDF913D\r
+:102B2000CF911F910F91FF90EF90DF90CF90BF90CA\r
+:102B30000C94E12227960FB6F894DEBF0FBECDBFEE\r
+:102B4000DF91CF911F910F91FF90EF90DF90CF9089\r
+:102B5000BF900C94F82227960FB6F894DEBF0FBEF4\r
+:102B6000CDBFDF91CF911F910F91FF90EF90DF903C\r
+:102B7000CF90BF900C94142327960FB6F894DEBF25\r
+:102B80000FBECDBFDF91CF911F910F91FF90EF90BE\r
+:102B9000DF90CF90BF900C942723862F27960FB6F7\r
+:102BA000F894DEBF0FBECDBFDF91CF911F910F9183\r
+:102BB000FF90EF90DF90CF90BF900C944B234B2D64\r
+:102BC0004F70C80127960FB6F894DEBF0FBECDBF79\r
+:102BD000DF91CF911F910F91FF90EF90DF90CF90F9\r
+:102BE000BF900C94D40327960FB6F894DEBF0FBEA7\r
+:102BF000CDBFDF91CF911F910F91FF90EF90DF90AC\r
+:102C0000CF90BF9008950E949B1B0E94701B0E9452\r
+:102C1000B71B0E94B6200E940A2080E090E00E942C\r
+:102C2000061080E090E00C941C100E948B1B0C940A\r
+:102C300003160E94F81A292F22952F7030E02C30AD\r
+:102C400031054CF42A3031056CF422503109223020\r
+:102C5000310590F407C02C30310551F02F3031058B\r
+:102C600059F406C0803E10F0803F31F481E00895B1\r
+:102C700093FB882780F9089580E00895CF93DF9330\r
+:102C800000D000D01F92CDB7DEB70F900F900F90FD\r
+:102C90000F900F90DF91CF910895CF93DF9300D0E5\r
+:102CA00000D000D0CDB7DEB726960FB6F894DEBFC1\r
+:102CB0000FBECDBFDF91CF9108951F93CF93DF93C8\r
+:102CC000C091BB0116E012C0D0E01C9FF0011D9F17\r
+:102CD000F00D1124E557FE4F4081518162817381CF\r
+:102CE000848195810E944D162196C7708091BC0108\r
+:102CF000C813EACFDF91CF911F91089540918501CC\r
+:102D000050918601609187017091880180918901BD\r
+:102D100090918A010C944D160F931F93CF93DF93DC\r
+:102D200080918A0182958F7009F069C08091870136\r
+:102D3000882309F464C0A091BB01D091BC01B0917B\r
+:102D40008501C0918601809188019091890121E0DF\r
+:102D500030E0BF3F11F020E030E0122FBC01609561\r
+:102D6000709506E04AC0009721F0CF3F29F4212F4B\r
+:102D700005C021E030E002C020E030E020FD3BC093\r
+:102D80004A2F50E0049FF001059FF00D1124E557F4\r
+:102D9000FE4F2181C2132FC02081B2132CC022818B\r
+:102DA000211129C0238134812817390718F0281BE5\r
+:102DB000390B02C0260F371F283C3105E0F4809103\r
+:102DC0008A018F70806180938A0186E0849FF00180\r
+:102DD000859FF00D1124E057FE4F80818F70806138\r
+:102DE000808385E891E00E944D12DF91CF911F9181\r
+:102DF0000F910C945D16AF5FA770AD13B4CFDF9148\r
+:102E0000CF911F910F910895EF92FF920F931F930F\r
+:102E1000CF93DF93CDB7DEB762970FB6F894DEBFDE\r
+:102E20000FBECDBF8C0185E0F801DE011D9601903B\r
+:102E30000D928A95E1F7D8014C9111965C9111970A\r
+:102E400012966C9112971396ED90FC9014977091D6\r
+:102E50008501E09186018091880190918901009718\r
+:102E600039F0EF3F41F421E030E07F3F31F003C023\r
+:102E700021E030E002C020E030E020FD5CC1209184\r
+:102E80008701222309F4F1C0E816F90628F097011A\r
+:102E9000281B390BC90104C0809590958E0D9F1D8C\r
+:102EA000883C910508F098C080918A01982F907F06\r
+:102EB00009F064C0E51314C0741312C0611110C08E\r
+:102EC0008F70806180938A010E947E1685E891E070\r
+:102ED0000E944D1280918A01D80115968C9343C1AE\r
+:102EE000EF2839F05F3F41F481E090E04F3F31F04F\r
+:102EF00003C081E090E002C080E090E080FD03C06C\r
+:102F000081E0862702C080E090E080FF2EC08091A3\r
+:102F1000BB012091BC0136E013C090E0389FF00166\r
+:102F2000399FF00D1124E557FE4F7181571306C0EC\r
+:102F30007081471303C07281671317C001968770B1\r
+:102F40008213EBCF12C19F7059F0882309F40BC193\r
+:102F500007C09F7029F0F8019581907F09F403C1A3\r
+:102F6000805E883008F4FFC0D2C0662309F4FBC03D\r
+:102F700080918A01816080938A01F5C0E51308C0C1\r
+:102F8000741306C0611104C0D80115968C939DC0BE\r
+:102F90004D875E878D859E856A8B0E9419166A898A\r
+:102FA000882309F4B4C0662309F4B1C020918A01D2\r
+:102FB000822F82958F7090E002970CF4C6C08091AA\r
+:102FC00085019091860198878F831986FB86EA8612\r
+:102FD0002C87CE01079646C080918A01982F907F5A\r
+:102FE00059F47E2DF98AE88A89890E943E1685E87F\r
+:102FF00091E00E944D1295C0E51311C074130FC0EB\r
+:1030000061110DC0F8018583C8010E944D12E5E8E9\r
+:10301000F1E086E0DF011D928A95E9F7A2C04D87B5\r
+:103020005E878D859E856A8B0E9419166A89882322\r
+:1030300009F46DC0662309F46AC020918A01822FC9\r
+:1030400082958F7090E002970CF47FC0809185018B\r
+:10305000909186019A8389831B82FD82EC822E8364\r
+:10306000CE0101960E944D1270C0E816F90628F0B4\r
+:103070009701281B390BC90104C0809590958E0DCE\r
+:103080009F1D883C910508F046C0662309F43FC0A7\r
+:10309000E51330C074132EC020918A0120FD21C099\r
+:1030A000322F32953F70832F90E00097D1F0D801F6\r
+:1030B00015962C9315970F9741F0832F8F5F82956C\r
+:1030C000807F2F70282B15962C93C8010E944D12DB\r
+:1030D00086E0F801A5E8B1E001900D928A95E1F74C\r
+:1030E0003EC086E0F801A5E8B1E001900D928A9516\r
+:1030F000E1F737C04D875E878D859E850E94191642\r
+:10310000811123C080918A01816080938A01C80166\r
+:103110000E944D1226C07E2DF98AE88A89890E9474\r
+:103120003E16E5E8F1E086E0DF011D928A95E9F7B9\r
+:103130000E947E1618C0662351F34D875E878D85E9\r
+:103140009E850E941916882311F386E0F801A5E8F0\r
+:10315000B1E001900D928A95E1F70E948C160E94D1\r
+:103160007E1681E014C080E012C04D875E878D8599\r
+:103170009E850E94F81A292F22952F7030E0223068\r
+:1031800031050CF4E0CE243031050CF6E2CE629627\r
+:103190000FB6F894DEBF0FBECDBFDF91CF911F9168\r
+:1031A0000F91FF90EF9008951F93CF93DF93CDB7CA\r
+:1031B000DEB72C970FB6F894DEBF0FBECDBF4F839E\r
+:1031C000588769877A878B879C87CE0107960E94EC\r
+:1031D00004178823D9F02F8138858A859B85892B10\r
+:1031E00039F03F3F19F080E090E004C02F3FD9F75D\r
+:1031F00081E090E0892B09F06DC04F815885698589\r
+:103200007A858B859C850E944D1664C086E0FE0100\r
+:103210003796DE01119601900D928A95E1F7FF81B4\r
+:10322000E8854A855B854115510539F0EF3F41F44A\r
+:1032300081E090E0FF3F31F003C081E090E002C008\r
+:1032400080E090E080FD46C02091BC0130E0C901E3\r
+:103250000196877099276091BB0170E086179707E8\r
+:1032600009F440C0F983EA835D834C8396E0929F22\r
+:10327000D001939FB00D1124A557BE4FFE0131968A\r
+:1032800001900D929A95E1F78093BC010E945D1622\r
+:1032900021C0189FC001112485579E4F0E9404171A\r
+:1032A000882371F1E091BB011E9FF0011124E557C5\r
+:1032B000FE4F4081518162817381848195810E949A\r
+:1032C0004D168091BB0190E00196877099278093FD\r
+:1032D000BB0101C016E08091BB019091BC01891334\r
+:1032E000D8CF0EC00E9415161092BC011092BB01DF\r
+:1032F000E5E8F1E086E0DF011D928A95E9F7EACF83\r
+:103300002C960FB6F894DEBF0FBECDBFDF91CF91E4\r
+:103310001F910895DF92EF92FF920F931F93CF9327\r
+:10332000DF93EC01009709F46EC0D12CEE24E394F6\r
+:10333000F12C8E010F5F1F4FFE018491843748F4FA\r
+:10334000843008F04CC0813071F0823009F05BC0ED\r
+:103350001EC0853709F43FC080F1982F94589037EC\r
+:1033600008F051C03FC02296F8018491982F905EDA\r
+:10337000983050F48770FE2D01C0FF0F8A95EAF750\r
+:103380008F2F0E948E1B13C00E9426112FC02296E1\r
+:10339000F8018491982F905E983060F48770FE2D2C\r
+:1033A00001C0FF0F8A95EAF78F2F0E94941B0E949D\r
+:1033B000B71B1CC00E94EE1119C02296F80104919F\r
+:1033C00007C08FE99FE00197F1F700C000000150AE\r
+:1033D0000111F7CF0BC02296F801D49007C00E94CC\r
+:1033E000261103C08F770E94EE11E8018D2D07C0D2\r
+:1033F0008150EFE9FFE03197F1F700C0000088232A\r
+:1034000009F497CFF5CFDF91CF911F910F91FF90E6\r
+:10341000EF90DF9008956093C1017093C201809393\r
+:10342000C3019093C4010C9403166093BD01709383\r
+:10343000BE018093BF019093C0010C9403160895C0\r
+:103440000C940B1A0F931F930091C1011091C201AC\r
+:103450002091C3013091C401602B712B822B932BDF\r
+:103460001F910F910C940B1A0F931F930091C101A0\r
+:103470001091C2012091C3013091C40160237123D6\r
+:10348000822393231F910F910C940B1A0F931F9378\r
+:103490000091C1011091C2012091C3013091C4017A\r
+:1034A00060277127822793271F910F910C940B1A85\r
+:1034B00060E070E0CB010C94151A41E050E060E050\r
+:1034C00070E004C0440F551F661F771F8A95D2F71E\r
+:1034D000CB01BA010C94151A41E050E060E070E0B5\r
+:1034E00004C0440F551F661F771F8A95D2F780913D\r
+:1034F000BD019091BE01A091BF01B091C001482BC8\r
+:10350000592B6A2B7B2BCB01BA010C94151A41E085\r
+:1035100050E060E070E004C0440F551F661F771F45\r
+:103520008A95D2F740955095609570958091BD0130\r
+:103530009091BE01A091BF01B091C00148235923D1\r
+:103540006A237B23CB01BA010C94151A41E050E0A9\r
+:1035500060E070E004C0440F551F661F771F8A9516\r
+:10356000D2F78091BD019091BE01A091BF01B091B1\r
+:10357000C001482759276A277B27CB01BA010C9441\r
+:10358000151A0F931F930091BD011091BE01209158\r
+:10359000BF013091C001602B712B822B932B1F91A7\r
+:1035A0000F910C94151A0F931F930091BD01109168\r
+:1035B000BE012091BF013091C0016023712382239D\r
+:1035C00093231F910F910C94151A0F931F93009141\r
+:1035D000BD011091BE012091BF013091C001602753\r
+:1035E0007127822793271F910F910C94151A089524\r
+:1035F000CF92DF92EF92FF920F931F93CF93DF93BF\r
+:10360000EC01C090C101D090C201E090C301F090E4\r
+:10361000C4018091BD019091BE01A091BF01B09104\r
+:10362000C001C82AD92AEA2AFB2A0FE110E0B70113\r
+:10363000A601002E04C076956795579547950A9484\r
+:10364000D2F740FF08C0BE01802F0E94FA038130EC\r
+:10365000910509F007C00150110948F7BE0180E04B\r
+:103660000E94FA03DF91CF911F910F91FF90EF908D\r
+:10367000DF90CF90089540910C0150910D0120E012\r
+:1036800030E09FEFFA01E20FF31F62816817A1F0AB\r
+:103690009F3F19F4611101C0922F2F5F3F4F2630D9\r
+:1036A000310581F707C0FA01E90FF11D97FDFA9581\r
+:1036B000828308959F3FB9F7089540910C0150917E\r
+:1036C0000D0120E030E0FA01E20FF31F9281981320\r
+:1036D00001C012822F5F3F4F26303105A1F70895B8\r
+:1036E00081E090E0E0910C01F0910D01E80FF91FED\r
+:1036F0001082019688309105A9F708959091C5012F\r
+:10370000982B9093C501089580959091C5019823B9\r
+:103710009093C50108951092C50108959091C60136\r
+:10372000982B9093C601089580959091C601982397\r
+:103730009093C60108951092C60108958093C70121\r
+:1037400008951092C701089540910C0150910D0108\r
+:1037500020E030E080E0FA01E20FF31F9181911147\r
+:103760008F5F2F5F3F4F27303105A9F70895E09114\r
+:103770000C01F0910D018091C5018083E0910C0155\r
+:10378000F0910D0180819091C601892B80839091E9\r
+:10379000C701992361F0E0910C01F0910D01808146\r
+:1037A000892B80830E94A41B81110E94A11B809100\r
+:1037B0000C0190910D010C94F00F8091E701843081\r
+:1037C00021F11092D10120E488E190E00FB6F89445\r
+:1037D000A895809360000FBE2093600080E00E9457\r
+:1037E000E10283B7817F846083BF83B7816083BF39\r
+:1037F0007894889583B78E7F83BF88E10FB6F8945D\r
+:1038000080936000109260000FBE0895089508959F\r
+:10381000CF9380E00E94E1020E94061C0E943807BC\r
+:103820000E94071CC0E08C2F0E948C08892B29F471\r
+:10383000CF5FC530C1F780E001C081E0CF9108952E\r
+:103840000E94151680E00E94E1020E94D0220E9490\r
+:10385000E40F0C9462051F920F920FB60F92112481\r
+:103860008F939F93AF93BF938091D101811113C028\r
+:103870008091D2019091D301A091D401B091D50152\r
+:103880004196A11DB11D8093D2019093D301A093C5\r
+:10389000D401B093D501BF91AF919F918F910F90BB\r
+:1038A0000FBE0F901F90189582E084BD93E095BDE8\r
+:1038B0009AEF97BD80936E0008958FB7F89440916A\r
+:1038C000D2015091D3016091D4017091D5018FBF85\r
+:1038D000CA010895CF92DF92EF92FF920F931F9348\r
+:1038E0002FB7F8944091D2015091D3016091D40147\r
+:1038F0007091D5012FBF6A017B01EE24FF248C015A\r
+:1039000020E030E0C016D106E206F30620F09A016E\r
+:10391000281B390B05C09C0120953095240F351FBD\r
+:10392000C9011F910F91FF90EF90DF90CF90089504\r
+:103930001F920F920FB60F9211248F939F93AF9304\r
+:10394000BF938091D2019091D301A091D401B09105\r
+:10395000D5010196A11DB11D8093D2019093D30191\r
+:10396000A093D401B093D501BF91AF919F918F9156\r
+:103970000F900FBE0F901F9018950E94C80CF894DE\r
+:103980002FEF87EA91E6215080409040E1F700C098\r
+:10399000000087E090EBDC018093F1019093F2014D\r
+:1039A000A093F301B093F4012CE088E190E00FB60E\r
+:1039B000F894A895809360000FBE20936000FFCF1D\r
+:1039C000CF92DF92EF92FF920F931F93CF93DF93EB\r
+:1039D000C82ED12C01E010E08D2D0E948C087C01B6\r
+:1039E000C0E0D0E098010C2E02C0220F331F0A94D1\r
+:1039F000E2F72E213F21232B29F42196CC30D1054B\r
+:103A000089F708C06C2F7D2D80E00E94D503C81275\r
+:103A1000F4CF06C0D39485E0D812DECF80E001C099\r
+:103A200081E0DF91CF911F910F91FF90EF90DF9098\r
+:103A3000CF900895CF93C82F8CE20E94E01C88237A\r
+:103A400021F08C2FCF910C94E01C80E0CF91089551\r
+:103A5000CF930E946B1E811102C00E944C1EC5E6CE\r
+:103A600008C00E9438078FE39CE90197F1F700C076\r
+:103A70000000C150B1F789E20E941A1D81110AC1EC\r
+:103A80008AE20E941A1D81110E944C1E85E00E944C\r
+:103A90001A1D81110E94BD1C0E94761E8093D001C8\r
+:103AA00087E00E941A1D882399F18BE10E941A1D5C\r
+:103AB000882351F09091D00191FB882780F921E073\r
+:103AC000822780FB91F922C08EE00E941A1D882374\r
+:103AD00051F09091D00192FB882780F921E0822754\r
+:103AE00080FB92F913C080E10E941A1D9091D001D1\r
+:103AF000882341F093FB882780F921E0822780FB0F\r
+:103B000093F904C0892F809580FB90F99093D001A0\r
+:103B10008091D0010E947A1E0E94881E8093E1014C\r
+:103B200080EE0E941A1D882341F08091E101982FB8\r
+:103B3000909590FB80F98093E10189E30E941A1D22\r
+:103B4000882359F09091E10191FB882780F921E0C9\r
+:103B5000822780FB91F99093E10182EE0E941A1D69\r
+:103B6000882359F09091E10192FB882780F921E0A8\r
+:103B7000822780FB92F99093E10186EE0E941A1D44\r
+:103B8000882359F09091E10193FB882780F921E087\r
+:103B9000822780FB93F99093E10183EE0E941A1D26\r
+:103BA000882359F09091E10194FB882780F921E066\r
+:103BB000822780FB94F99093E10185E30E941A1D0E\r
+:103BC000882359F09091E10195FB882780F921E045\r
+:103BD000822780FB95F99093E10181E30E941A1DF1\r
+:103BE000882359F09091E10196FB882780F921E024\r
+:103BF000822780FB96F99093E10181E10E941A1DD2\r
+:103C0000882359F09091E10197FB882780F921E002\r
+:103C1000822780FB97F99093E1018091E1010E9456\r
+:103C20008C1E87E20E941A1DC82F8EE10E941A1D69\r
+:103C30008111C2608FE10E941A1D8111C46080E26F\r
+:103C40000E941A1D8111C86081E20E941A1D811113\r
+:103C5000C06182E20E941A1D8111C06283E20E944B\r
+:103C60001A1D8111C06484E20E941A1D882311F07C\r
+:103C7000C06802C0CC2329F08C2F0E94831E6C2FB9\r
+:103C800003C00E947F1E682F70E080E090E0CF911B\r
+:103C90000C94201ACF9108956DEE7EEF80E090E0B5\r
+:103CA0000E94D92460E082E090E00E94CB2460E092\r
+:103CB00083E090E00E94CB2460E084E090E00E94EA\r
+:103CC000CB2460E085E090E00E94CB2460E086E0B9\r
+:103CD00090E00C94CB2480E090E00E94C52421E089\r
+:103CE0008D3E9E4F09F020E0822F089582E090E003\r
+:103CF0000C94BD24682F82E090E00C94CB2483E0E8\r
+:103D000090E00C94BD24682F83E090E00C94CB24C9\r
+:103D100084E090E00C94BD24682F84E090E00C9443\r
+:103D2000CB2486E090E00C94BD24682F86E090E0E0\r
+:103D30000C94CB248091DE0180FF0BC060911101B7\r
+:103D400085E0689FB0011124759567957595679515\r
+:103D50002AC081FF09C06091110185E0689FB00110\r
+:103D60001124759567951FC082FF07C060911101EE\r
+:103D700085E0689FB001112416C04091D80144230A\r
+:103D8000C9F060911001461788F72091110185E074\r
+:103D9000289F90011124429FC001439F900D112440\r
+:103DA00070E00E9495246038710540F4611571053A\r
+:103DB00039F002C065E070E0862F08958FE708951E\r
+:103DC00081E008958091DE0180FF08C060910F01BD\r
+:103DD00070E0759567957595679521C081FF06C060\r
+:103DE00060910F0170E07595679519C082FF04C05E\r
+:103DF00060910F0170E010C08091D8018823C1F05C\r
+:103E000060910E018617A0F790910F01989FC00155\r
+:103E1000112470E00E9495246038710528F4611522\r
+:103E2000710521F0862F08958FE7089581E00895A8\r
+:103E300061E070E0F4CF803F21F40E949A1E8195EA\r
+:103E400004C0813F29F40E949A1E8093DB010895EB\r
+:103E5000823F21F40E949A1E819504C0833F29F479\r
+:103E60000E949A1E8093DA010895893F19F40E94F6\r
+:103E7000E21E05C08A3F31F40E94E21E81958093C4\r
+:103E8000DC0108958B3F21F40E94E21E819504C05D\r
+:103E90008C3F29F40E94E21E8093DD010895843F47\r
+:103EA00021F48091D901816017C0853F21F4809170\r
+:103EB000D901826011C0863F21F48091D9018460CC\r
+:103EC0000BC0873F21F48091D901886005C0883FED\r
+:103ED00031F48091D90180618093D90108958D3F9B\r
+:103EE00021F48091DE0181600BC08E3F21F480912E\r
+:103EF000DE01826005C08F3F29F48091DE0184607D\r
+:103F00008093DE010895803F29F48091DB0187FFD3\r
+:103F10006EC007C0813F41F48091DB0118160CF0A0\r
+:103F200066C01092DB0163C09091DA01823F19F400\r
+:103F300097FF5DC005C0833F31F419160CF057C0E0\r
+:103F40001092DA0154C0893F31F48091DC011816D7\r
+:103F50000CF04DC006C08A3F39F48091DC0187FF28\r
+:103F600046C01092DC0143C08B3F29F48091DD01F3\r
+:103F700087FF3DC006C08C3F39F48091DD011816E3\r
+:103F8000B4F51092DD0133C0843F21F48091D90152\r
+:103F90008E7F05C0853F31F48091D9018D7F80935C\r
+:103FA000D90125C0863F21F48091D9018B7FF7CFBD\r
+:103FB000873F21F48091D901877FF1CF883F21F499\r
+:103FC0008091D9018F7EEBCF8D3F21F48091DE016E\r
+:103FD0008E7F0BC08E3F21F48091DE018D7F05C066\r
+:103FE0008F3F29F48091DE018B7F8093DE018091E9\r
+:103FF000DA0181110EC08091DB0181110AC080912C\r
+:10400000DC01811106C08091DD01811102C0109296\r
+:10401000D801089589ED91E00E94FB0F0E945D1C7C\r
+:104020009093D7018093D6010895CF938091D601C4\r
+:104030009091D7010E946A1C4091D801442321F03D\r
+:104040002091120130E006C0209113015AE0259F13\r
+:10405000900111248217930708F486C08091DA0139\r
+:1040600081110DC09091DB01911109C09091DC018B\r
+:10407000911105C09091DD01992309F475C04F3F5E\r
+:1040800019F04F5F4093D801181624F40E949A1E2D\r
+:104090008093DA018091DA0187FF05C00E949A1EA1\r
+:1040A00081958093DA018091DB01181624F40E9437\r
+:1040B0009A1E8093DB018091DB0187FF05C00E947F\r
+:1040C0009A1E81958093DB016091DA01662339F1B4\r
+:1040D000C091DB01CC2319F1772767FD7095872FFD\r
+:1040E000972F0E949A2323E333E343E35FE30E9485\r
+:1040F000FE230E9467236093DA016C2F772767FD08\r
+:104100007095872F972F0E949A2323E333E343E38D\r
+:104110005FE30E94FE230E9467236093DB0180918E\r
+:10412000DC01181624F40E94E21E8093DC018091C9\r
+:10413000DC0187FF05C00E94E21E81958093DC01AF\r
+:104140008091DD01181624F40E94E21E8093DD01A7\r
+:104150008091DD0187FF05C00E94E21E819580935A\r
+:10416000DD01CF910C940A20CF910895E9EDF1E0A3\r
+:1041700085E0DF011D928A95E9F71092D80110922F\r
+:10418000DE010895833089F130F4813061F08230AE\r
+:1041900009F06EC019C0853009F449C0B8F1863005\r
+:1041A00009F066C055C020911301862F90E0820F60\r
+:1041B000911D8F3F910520F4620F609313010895C4\r
+:1041C0008FEF80931301089520911201862F90E0C4\r
+:1041D000820F911D8F3F910520F4620F60931201B1\r
+:1041E00008958FEF80931201089520911101862F79\r
+:1041F00090E0820F911D8F3F910520F4620F609334\r
+:10420000110108958FEF80931101089520911001FD\r
+:10421000862F90E0820F911D8F3F910520F4620F51\r
+:104220006093100108958FEF8093100108952091FD\r
+:104230000F01862F90E0820F911D8F3F910520F492\r
+:10424000620F60930F0108958FEF80930F0108951F\r
+:1042500020910E01862F90E0820F911D8F3F9105D6\r
+:1042600020F4620F60930E0108958FEF80930E018A\r
+:104270000895833021F130F4813059F0823009F013\r
+:1042800049C012C0853089F128F1863009F042C05A\r
+:1042900037C080911301681720F4861B80931301A7\r
+:1042A000089510921301089580911201681720F467\r
+:1042B000861B809312010895109212010895809137\r
+:1042C0001101681720F4861B809311010895109244\r
+:1042D0001101089580911001681720F4861B8093C6\r
+:1042E0001001089510921001089580910F01681730\r
+:1042F00020F4861B80930F01089510920F010895FA\r
+:1043000080910E01681720F4861B80930E0108959A\r
+:1043100010920E01089541E050E060E070E004C0AA\r
+:10432000440F551F661F771F8A95D2F7CB01BA013C\r
+:104330000E94201A0C941516873200F58E3108F071\r
+:1043400086C08E3009F466C060F4873009F44DC031\r
+:1043500018F4863049F531C0883041F18B3021F5B1\r
+:104360007BC0863109F478C018F48031E9F45CC070\r
+:10437000893109F471C08B31B9F442C0883309F432\r
+:104380006BC048F4893209F460C0853309F45DC01C\r
+:10439000873251F45AC0833409F457C018F48A3371\r
+:1043A00018F057C0883499F080E008950E94761E76\r
+:1043B0000E94881E0E94911E4FC08091D001817F73\r
+:1043C0008E7F8093D00181E08093DF0108950E9469\r
+:1043D00015162FEF83ED90E3215080409040E1F7D8\r
+:1043E00000C000000E94BD1C37C08091D00180FF3A\r
+:1043F00003C0817F8E7F01C081608093D0012CC07B\r
+:104400009091D00191FB882780F921E0822780FBE1\r
+:1044100091F913C09091D00192FB882780F921E097\r
+:10442000822780FB92F909C09091D00193FB8827E5\r
+:1044300080F921E0822780FB93F99093D0018823B3\r
+:1044400059F091609093D00107C080E003C08D5176\r
+:1044500001C089530E948B2181E0089580E0089576\r
+:1044600080E00895CF93C82F8091DF01813071F0F3\r
+:1044700020F0823009F089C037C0A0910C01B091C2\r
+:104480000D018C91823209F082C007C0A0910C010D\r
+:10449000B0910D018C91823249F48C2F0E942E2212\r
+:1044A00081111EC08C2F0E949C211CC08C2F0E9449\r
+:1044B0003022811115C0C43169F030F4CB3081F065\r
+:1044C000C03109F068C009C0C93221F0C83309F011\r
+:1044D00062C006C01092DF015EC082E08093DF01FF\r
+:1044E00081E090E081705AC0C932C9F060F4C431F3\r
+:1044F000B1F020F4C73009F04CC034C0CE51C63002\r
+:1045000008F047C017C0CE3439F120F4CB3409F09D\r
+:1045100040C01CC0C135C1F0C235D9F513C080916F\r
+:10452000E001882319F01092E00133C081E080930C\r
+:10453000DF0134C0EC2FF0E0E65BFE4F808180931A\r
+:10454000E00127C061E003C061E007C06AE080913C\r
+:10455000E0010E94C2201DC06AE08091E0010E943B\r
+:10456000392117C08EE18093130182E380931201F9\r
+:104570008AE08093110184E18093100188E08093A8\r
+:104580000F0188E280930E0104C01092DF0180E0E9\r
+:1045900005C081E003C080E090E0A4CFCF910895F2\r
+:1045A0000E946B1E811102C00E944C1E0E94911E2F\r
+:1045B0008093F00180FF02C0869501C080E00C94DA\r
+:1045C000E1028091F001982F9695292F30E0233059\r
+:1045D00031054CF49F5F990F8170892B8160809326\r
+:1045E000F0010E94951E8091F00186950C94E102E5\r
+:1045F0008091F001982F969591F09158990F8170C4\r
+:10460000892B8093F0018E7F91E009F490E08091F6\r
+:10461000F00190FB80F98093F0010E94951E80913B\r
+:10462000F00186950C94E1028091F001982F90950D\r
+:1046300090FB80F98093F0010E94951E8091F0011B\r
+:1046400080FF02C0869501C080E00C94E1023091A9\r
+:10465000F001232F26952F5F2F77822F90E0317066\r
+:1046600004972CF4220F232B2093F00102C03093E7\r
+:10467000F0018091F001282F2E7F91E009F490E065\r
+:1046800090FB80F98093F0010E94951E8091F001CB\r
+:1046900086950C94E1022091F001922F969598272F\r
+:1046A000990F822F8170892B8093F0018E7F91E08A\r
+:1046B00009F490E08091F00190FB80F98093F00183\r
+:1046C0000E94951E8091F00186950C94E10204D021\r
+:1046D0006894B1118DC0089570D088F09F5790F004\r
+:1046E000B92F9927B751A0F0D1F0660F771F881F17\r
+:1046F000991F1AF0BA95C9F712C0B13081F077D07E\r
+:10470000B1E0089574C0672F782F8827B85F39F01B\r
+:10471000B93FCCF3869577956795B395D9F73EF475\r
+:1047200090958095709561957F4F8F4F9F4F08951D\r
+:10473000E89409C097FB3EF490958095709561953B\r
+:104740007F4F8F4F9F4F9923A9F0F92F96E9BB27F1\r
+:104750009395F695879577956795B795F111F8CF6D\r
+:10476000FAF4BB0F11F460FF1BC06F5F7F4F8F4FD8\r
+:104770009F4F16C0882311F096E911C0772321F0CE\r
+:104780009EE8872F762F05C0662371F096E8862F66\r
+:1047900070E060E02AF09A95660F771F881FDAF7BD\r
+:1047A000880F9695879597F9089557FD9058440F6F\r
+:1047B000551F59F05F3F71F04795880F97FB991F80\r
+:1047C00061F09F3F79F0879508951216130614063D\r
+:1047D000551FF2CF4695F1DF08C0161617061806CA\r
+:1047E000991FF1CF86957105610508940895E894A5\r
+:1047F000BB2766277727CB0197F908950BD078C0A0\r
+:1048000069D028F06ED018F0952309F05AC05FC027\r
+:104810001124EECFCADFA0F3959FD1F3950F50E09E\r
+:10482000551F629FF001729FBB27F00DB11D639F62\r
+:10483000AA27F00DB11DAA1F649F6627B00DA11D08\r
+:10484000661F829F2227B00DA11D621F739FB00DAE\r
+:10485000A11D621F839FA00D611D221F749F33271E\r
+:10486000A00D611D231F849F600D211D822F762FB7\r
+:104870006A2F11249F5750408AF0E1F088234AF0B4\r
+:10488000EE0FFF1FBB1F661F771F881F9150504000\r
+:10489000A9F79E3F510570F014C0AACF5F3FECF31B\r
+:1048A000983EDCF3869577956795B795F795E795EC\r
+:1048B0009F5FC1F7FE2B880F911D9695879597F9FD\r
+:1048C000089597F99F6780E870E060E008959FEF92\r
+:1048D00080EC089500240A94161617061806090697\r
+:1048E000089500240A941216130614060506089566\r
+:1048F000092E0394000C11F4882352F0BB0F40F4EE\r
+:10490000BF2B11F460FF04C06F5F7F4F8F4F9F4F2D\r
+:104910000895991B79E004C0991F961708F0961B1B\r
+:10492000881F7A95C9F78095089597FB072E16F48E\r
+:10493000009407D077FD09D00E94A92407FC05D078\r
+:104940003EF4909581959F4F0895709561957F4FA6\r
+:104950000895AA1BBB1B51E107C0AA1FBB1FA617C6\r
+:10496000B70710F0A61BB70B881F991F5A95A9F718\r
+:1049700080959095BC01CD010895F999FECF92BD27\r
+:1049800081BDF89A992780B50895A8E1B0E042E08A\r
+:1049900050E00C94E024262FF999FECF1FBA92BD67\r
+:1049A00081BD20BD0FB6F894FA9AF99A0FBE019610\r
+:1049B00008950E94CB24272F0C94CC24DC01CB013A\r
+:1049C000FC01F999FECF06C0F2BDE1BDF89A31961F\r
+:1049D00000B40D9241505040B8F70895F894FFCFBD\r
+:1049E00005960826090209CD08990801C80128087A\r
+:1049F000140A321E420045002500260043006100D3\r
+:104A00006000200037006400650066006700440015\r
+:104A100046002400470074038D03A603BF038B04E4\r
+:104A20003E040804E8033F4D362001020304050656\r
+:044A3000070809006A\r
+:00000001FF\r
index 7068ca4f3152e78d8d6af5fd4d9b51b7c790ee38..2eef4f15a7cf6e3f2803cb84006339fdfe11ae90 100644 (file)
@@ -25,6 +25,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #include "debug.h"
 #include "backlight.h"
 #include "keymap_midi.h"
+#include "bootloader.h"
 
 #include <stdio.h>
 #include <inttypes.h>
index da91b4bf4619fdca7d6d929aa0a71408c1155cef..d0b77fb8033a34b6cbf730943ea9e0aee3eb97fe 100644 (file)
@@ -9,92 +9,92 @@
 // Alt gr
 
 // normal characters
-#define DE_Z KC_Y
-#define DE_Y KC_Z
+#define DE_OSX_Z KC_Y
+#define DE_OSX_Y KC_Z
 
-#define DE_A KC_A
-#define DE_B KC_B
-#define DE_C KC_C
-#define DE_D KC_D
-#define DE_E KC_E
-#define DE_F KC_F
-#define DE_G KC_G
-#define DE_H KC_H
-#define DE_I KC_I
-#define DE_J KC_J
-#define DE_K KC_K
-#define DE_L KC_L
-#define DE_M KC_M
-#define DE_N KC_N
-#define DE_O KC_O
-#define DE_P KC_P
-#define DE_Q KC_Q
-#define DE_R KC_R
-#define DE_S KC_S
-#define DE_T KC_T
-#define DE_U KC_U
-#define DE_V KC_V
-#define DE_W KC_W
-#define DE_X KC_X
+#define DE_OSX_A KC_A
+#define DE_OSX_B KC_B
+#define DE_OSX_C KC_C
+#define DE_OSX_D KC_D
+#define DE_OSX_E KC_E
+#define DE_OSX_F KC_F
+#define DE_OSX_G KC_G
+#define DE_OSX_H KC_H
+#define DE_OSX_I KC_I
+#define DE_OSX_J KC_J
+#define DE_OSX_K KC_K
+#define DE_OSX_L KC_L
+#define DE_OSX_M KC_M
+#define DE_OSX_N KC_N
+#define DE_OSX_O KC_O
+#define DE_OSX_P KC_P
+#define DE_OSX_Q KC_Q
+#define DE_OSX_R KC_R
+#define DE_OSX_S KC_S
+#define DE_OSX_T KC_T
+#define DE_OSX_U KC_U
+#define DE_OSX_V KC_V
+#define DE_OSX_W KC_W
+#define DE_OSX_X KC_X
 
-#define DE_0 KC_0
-#define DE_1 KC_1
-#define DE_2 KC_2
-#define DE_3 KC_3
-#define DE_4 KC_4
-#define DE_5 KC_5
-#define DE_6 KC_6
-#define DE_7 KC_7
-#define DE_8 KC_8
-#define DE_9 KC_9
+#define DE_OSX_0 KC_0
+#define DE_OSX_1 KC_1
+#define DE_OSX_2 KC_2
+#define DE_OSX_3 KC_3
+#define DE_OSX_4 KC_4
+#define DE_OSX_5 KC_5
+#define DE_OSX_6 KC_6
+#define DE_OSX_7 KC_7
+#define DE_OSX_8 KC_8
+#define DE_OSX_9 KC_9
 
-#define DE_DOT KC_DOT
-#define DE_COMM KC_COMM
+#define DE_OSX_DOT KC_DOT
+#define DE_OSX_COMM KC_COMM
 
-#define DE_SS KC_MINS
-#define DE_AE KC_QUOT
-#define DE_UE KC_LBRC
-#define DE_OE KC_SCLN
+#define DE_OSX_SS KC_MINS
+#define DE_OSX_AE KC_QUOT
+#define DE_OSX_UE KC_LBRC
+#define DE_OSX_OE KC_SCLN
 
-#define DE_CIRC KC_NUBS // accent circumflex ^ and ring °
-#define DE_ACUT KC_EQL // accent acute ´ and grave `
-#define DE_PLUS KC_RBRC // + and * and ~
-#define DE_HASH KC_BSLS // # and '
-#define DE_LESS KC_GRV // < and > and |
-#define DE_MINS KC_SLSH // - and _
+#define DE_OSX_CIRC KC_NUBS // accent circumflex ^ and ring °
+#define DE_OSX_ACUT KC_EQL // accent acute ´ and grave `
+#define DE_OSX_PLUS KC_RBRC // + and * and ~
+#define DE_OSX_HASH KC_BSLS // # and '
+#define DE_OSX_LESS KC_GRV // < and > and |
+#define DE_OSX_MINS KC_SLSH // - and _
 
 // shifted characters
-#define DE_RING LSFT(DE_CIRC) // °
-#define DE_EXLM LSFT(KC_1) // !
-#define DE_DQOT LSFT(KC_2) // "
-#define DE_PARA LSFT(KC_3) // §
-#define DE_DLR  LSFT(KC_4) // $
-#define DE_PERC LSFT(KC_5) // %
-#define DE_AMPR LSFT(KC_6) // &
-#define DE_SLSH LSFT(KC_7) // /
-#define DE_LPRN LSFT(KC_8) // (
-#define DE_RPRN LSFT(KC_9) // )
-#define DE_EQL  LSFT(KC_0) // =
-#define DE_QST  LSFT(DE_SS) // ?
-#define DE_GRV  LSFT(DE_ACUT) // `
-#define DE_ASTR LSFT(DE_PLUS) // *
-#define DE_QUOT LSFT(DE_HASH) // '
-#define DE_MORE LSFT(DE_LESS) // >
-#define DE_COLN LSFT(KC_DOT) // :
-#define DE_SCLN LSFT(KC_COMM) // ;
-#define DE_UNDS LSFT(DE_MINS) // _
+#define DE_OSX_RING LSFT(DE_OSX_CIRC) // °
+#define DE_OSX_EXLM LSFT(KC_1) // !
+#define DE_OSX_DQOT LSFT(KC_2) // "
+#define DE_OSX_PARA LSFT(KC_3) // §
+#define DE_OSX_DLR  LSFT(KC_4) // $
+#define DE_OSX_PERC LSFT(KC_5) // %
+#define DE_OSX_AMPR LSFT(KC_6) // &
+#define DE_OSX_SLSH LSFT(KC_7) // /
+#define DE_OSX_LPRN LSFT(KC_8) // (
+#define DE_OSX_RPRN LSFT(KC_9) // )
+#define DE_OSX_EQL  LSFT(KC_0) // =
+#define DE_OSX_QST  LSFT(DE_OSX_SS) // ?
+#define DE_OSX_GRV  LSFT(DE_OSX_ACUT) // `
+#define DE_OSX_ASTR LSFT(DE_OSX_PLUS) // *
+#define DE_OSX_QUOT LSFT(DE_OSX_HASH) // '
+#define DE_OSX_MORE LSFT(DE_OSX_LESS) // >
+#define DE_OSX_COLN LSFT(KC_DOT) // :
+#define DE_OSX_SCLN LSFT(KC_COMM) // ;
+#define DE_OSX_UNDS LSFT(DE_OSX_MINS) // _
 
 // Alt-ed characters
-#define DE_SQ2 LALT(KC_2) // ²
-#define DE_SQ3 LALT(KC_3) // ³
-#define DE_LCBR LALT(KC_8) // {
-#define DE_LBRC LALT(KC_5) // [
-#define DE_RBRC LALT(KC_6) // ]
-#define DE_RCBR LALT(KC_9) // }
-#define DE_BSLS LALT(LSFT(KC_7)) // backslash
-#define DE_AT  LALT(DE_L) // @
-#define DE_EURO LALT(KC_E) // €
-#define DE_TILD LALT(DE_N) // ~
-#define DE_PIPE LALT(DE_7) // |
+#define DE_OSX_SQ2 LALT(KC_2) // ²
+#define DE_OSX_SQ3 LALT(KC_3) // ³
+#define DE_OSX_LCBR LALT(KC_8) // {
+#define DE_OSX_LBRC LALT(KC_5) // [
+#define DE_OSX_RBRC LALT(KC_6) // ]
+#define DE_OSX_RCBR LALT(KC_9) // }
+#define DE_OSX_BSLS LALT(LSFT(KC_7)) // backslash
+#define DE_OSX_AT  LALT(DE_OSX_L) // @
+#define DE_OSX_EURO LALT(KC_E) // €
+#define DE_OSX_TILD LALT(DE_OSX_N) // ~
+#define DE_OSX_PIPE LALT(DE_OSX_7) // |
 
 #endif
index e37ea310398eb1929e263b6b4637d1ea46237d15..ac45d25892e780f523e2c7e3321ac49aa3b068f2 100644 (file)
@@ -99,11 +99,11 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt)
 
     if (record->event.pressed) {
        // midi_send_noteon(&midi_device, record->event.key.row, starting_note + SCALE[record->event.key.col], 127);
-        midi_send_noteon(&midi_device, 0, (starting_note + SCALE[record->event.key.col + offset])+12*(MATRIX_ROWS - record->event.key.row), 127);
+        // midi_send_noteon(&midi_device, 0, (starting_note + SCALE[record->event.key.col + offset])+12*(MATRIX_ROWS - record->event.key.row), 127);
         play_note(((double)261.626)*pow(2.0, -1.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row)), 0xF);
     } else {
         // midi_send_noteoff(&midi_device, record->event.key.row, starting_note + SCALE[record->event.key.col], 127);
-        midi_send_noteoff(&midi_device, 0, (starting_note + SCALE[record->event.key.col + offset])+12*(MATRIX_ROWS - record->event.key.row), 127);
+        // midi_send_noteoff(&midi_device, 0, (starting_note + SCALE[record->event.key.col + offset])+12*(MATRIX_ROWS - record->event.key.row), 127);
         stop_note(((double)261.626)*pow(2.0, -1.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row)));
     }
 }
\ No newline at end of file
index dc163a2f4b4dcb059cde9b85461c2164cb35e69c..39f9f59d10af7c86c2559408b2cee390bb6cd4c7 100644 (file)
@@ -15,7 +15,7 @@ Depending on which keymap you would like to use, you will have to compile slight
 To build with the default keymap, simply run `make`.
 
 ### Other Keymaps
-Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create file named `<name>.c` and see keymap document (you can find in top README.md) and existent keymap files.
+Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create file named `<name>.c` in the keymaps folder, and see keymap document (you can find in top README.md) and existent keymap files.
 
 To build the firmware binary hex file with a keymap just do `make` with `KEYMAP` option like:
 ```
index dae4b63130856faf33caa10c8696d98975976294..e6fb7866c6ca1b0d56c69f69150f1979c7e062ff 100644 (file)
@@ -32,36 +32,67 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #define MATRIX_ROWS 2
 #define MATRIX_COLS 3
 
-// Planck PCB default pin-out
-// Change this to how you wired your keyboard
-// COLS: Left to right, ROWS: Top to bottom
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ *                  ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+*/ 
 #define COLS (int []){ F1, F0, B0 }
 #define ROWS (int []){ D0, D5 }
 
 /* COL2ROW or ROW2COL */
 #define DIODE_DIRECTION COL2ROW
 
-/* define if matrix has ghost */
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE    5
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
 //#define MATRIX_HAS_GHOST
 
 /* number of backlight levels */
 #define BACKLIGHT_LEVELS 3
 
-/* Set 0 if debouncing isn't needed */
-#define DEBOUNCE    5
-
 /* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
 #define LOCKING_SUPPORT_ENABLE
 /* Locking resynchronize hack */
 #define LOCKING_RESYNC_ENABLE
 
-/* Force NKRO Mode - If forced on, must be disabled via magic key (default = LShift+RShift+N) */
+/* 
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved 
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is 
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
 //#define FORCE_NKRO
 
 /*
- * Magic key options
- * These options allow the magic key functionality to be changed. This is useful
- * if your keyboard/keypad is missing keys and you want magic key support.
+ * Magic Key Options
+ *
+ * Magic keys are hotkey commands that allow control over firmware functions of
+ * the keyboard. They are best used in combination with the HID Listen program,
+ * found here: https://www.pjrc.com/teensy/hid_listen.html
+ *
+ * The options below allow the magic key functionality to be changed. This is 
+ * useful if your keyboard/keypad is missing keys and you want magic key support.
+ *
  */
 
 /* key combination for magic key command */
index caf0b0625461c91a14c85b7e2d825029e14cb6a3..c07c2801d5ef75e277ab1b460f0fcac826b13568 100644 (file)
@@ -66,9 +66,12 @@ static void power_down(uint8_t wdto)
     wdt_intr_enable(wdto);
 
 #ifdef BACKLIGHT_ENABLE
-backlight_set(0);
+       backlight_set(0);
 #endif
 
+       // Turn off LED indicators
+       led_set(0);
+
     // TODO: more power saving
     // See PicoPower application note
     // - I/O port input with pullup
index e668084858e1ab25c373c5a672e5135cef4b0414..302b3ec87c918a49ec62759ede5ed8b3e5d44b9a 100644 (file)
@@ -92,7 +92,7 @@ void keyboard_init(void)
     backlight_init();
 #endif
 
-#ifdef FORCE_NKRO
+#if defined(NKRO_ENABLE) && defined(FORCE_NKRO)
        keyboard_nkro = true;
 #endif