]> git.donarmstrong.com Git - qmk_firmware.git/commitdiff
Merge pull request #1 from J3RN/vim-navigation
authorJonathan Arnett <jonarnett90@gmail.com>
Mon, 11 Apr 2016 23:22:23 +0000 (19:22 -0400)
committerJonathan Arnett <jonarnett90@gmail.com>
Mon, 11 Apr 2016 23:22:23 +0000 (19:22 -0400)
Added Vim-style navigation

167 files changed:
1-setup-path-win.bat
2-setup-environment-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/alexjj/keymap.c [new file with mode: 0644]
keyboard/ergodox_ez/keymaps/alexjj/keymap.hex [new file with mode: 0644]
keyboard/ergodox_ez/keymaps/alexjj/readme.md [new file with mode: 0644]
keyboard/ergodox_ez/keymaps/alexjj/rl-layout.jpg [new file with mode: 0644]
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/german-manuneo/compile_keymap.py [new file with mode: 0644]
keyboard/ergodox_ez/keymaps/german-manuneo/german-manuneo.hex [new file with mode: 0644]
keyboard/ergodox_ez/keymaps/german-manuneo/keymap.c [new file with mode: 0644]
keyboard/ergodox_ez/keymaps/german-manuneo/keymap.md [new file with mode: 0644]
keyboard/ergodox_ez/keymaps/msc/img/code_layer.png [new file with mode: 0644]
keyboard/ergodox_ez/keymaps/msc/img/main_layer.png [new file with mode: 0644]
keyboard/ergodox_ez/keymaps/msc/img/media_layer.png [new file with mode: 0644]
keyboard/ergodox_ez/keymaps/msc/keymap.c [new file with mode: 0644]
keyboard/ergodox_ez/keymaps/msc/msc.hex [new file with mode: 0644]
keyboard/ergodox_ez/keymaps/msc/readme.md [new file with mode: 0644]
keyboard/ergodox_ez/keymaps/naps62/README.md [new file with mode: 0644]
keyboard/ergodox_ez/keymaps/naps62/ergodox_ez.hex [new file with mode: 0644]
keyboard/ergodox_ez/keymaps/naps62/keymap.c [new file with mode: 0644]
keyboard/ergodox_ez/keymaps/ordinary/keymap.c
keyboard/ergodox_ez/keymaps/ordinary/ordinary-base.png [new file with mode: 0644]
keyboard/ergodox_ez/keymaps/ordinary/ordinary-base.txt [new file with mode: 0644]
keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.png [new file with mode: 0644]
keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.txt [new file with mode: 0644]
keyboard/ergodox_ez/keymaps/ordinary/ordinary-symbol.png [new file with mode: 0644]
keyboard/ergodox_ez/keymaps/ordinary/ordinary-symbol.txt [new file with mode: 0644]
keyboard/ergodox_ez/keymaps/ordinary/ordinary.hex
keyboard/ergodox_ez/keymaps/ordinary/ordinary.png [deleted file]
keyboard/ergodox_ez/keymaps/ordinary/readme.md
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/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx-hjkl/keymap.c [new file with mode: 0644]
keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx-hjkl/readme.md [new file with mode: 0644]
keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx-hjkl/romanzolotarev-norman-plover-osx-hjkl.hex [new file with mode: 0644]
keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx-hjkl/romanzolotarev-norman-plover-osx-hjkl.png [new file with mode: 0644]
keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/readme.md
keyboard/ergodox_ez/readme.md
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/nico.c [new file with mode: 0644]
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/planck/planck.c
keyboard/planck/planck.h
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/keymaps/nerdgasm/README.md [new file with mode: 0644]
keyboard/preonic/keymaps/nerdgasm/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_music.hex [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]
keyboard/retro_refit/Makefile
keyboard/retro_refit/config.h
quantum/audio.c
quantum/keymap_common.c
quantum/keymap_extras/keymap_german_osx.h
quantum/keymap_midi.c
quantum/template/Makefile
quantum/template/README.md
quantum/template/config.h
quantum/template/template.c
quantum/template/template.h
tmk_core/common/action.c
tmk_core/common/action.h
tmk_core/common/action_layer.c
tmk_core/common/action_layer.h
tmk_core/common/action_macro.c
tmk_core/common/action_util.c
tmk_core/common/action_util.h
tmk_core/common/avr/suspend.c
tmk_core/common/command.c
tmk_core/common/command.h
tmk_core/common/keyboard.c

index 49fb00e149ac26aff74756939b4012521dc9411b..f612d0f4a7998ef60d00c32931a6310ec922a0a7 100644 (file)
@@ -1,9 +1,77 @@
-@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 we're running with administrator privileges
+NET SESSION >nul 2>&1
+IF ERRORLEVEL 1 (
+       ECHO FAILED. Run this script with administrator privileges.
+       GOTO ExitBatch
 )
+
+:: Make sure the second path exists. The first path won't be created until the second script is run
+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 91b6c91e39388b86a8b6305f9f34f1b4c6b16479..905338087a9f18b2c03da40084ca51225194dae2 100644 (file)
@@ -1,41 +1,63 @@
-@echo off
-setx /M test test > nul 2>&1
-if NOT ["%errorlevel%"]==["0"] (
-       echo FAILED. Rerun with administrator privileges.
-       pause
-       exit
+@SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
+@ECHO OFF
+
+SET STARTINGDIR=%CD%
+
+:: Check for admin privilages
+SETX /M test test > nul 2>&1
+IF NOT ["%ERRORLEVEL%"]==["0"] (
+       ECHO FAILED. Rerun with administrator privileges.
+       GOTO ExitBatch
 ) 
 
-echo ------------------------------------------
-echo Installing wget and unzip
-echo ------------------------------------------
+:: Make sure path to MinGW exists - if so, CD to it
+SET MINGWPATH="C:\MinGW\bin"
+IF NOT EXIST !MINGWPATH! (ECHO Path not found: %MINGWPATH% && GOTO ExitBatch)
+CD /D %MINGWPATH%
+
+
+ECHO ------------------------------------------
+ECHO Installing wget and unzip
+ECHO ------------------------------------------
 mingw-get install msys-wget-bin msys-unzip-bin
-cd \MinGW\bin
 
-mkdir temp
-cd temp
-echo ------------------------------------------
-echo Installing dfu-programmer.
-echo ------------------------------------------
+MKDIR temp
+CD temp
+
+ECHO ------------------------------------------
+ECHO Installing dfu-programmer.
+ECHO ------------------------------------------
 wget http://iweb.dl.sourceforge.net/project/dfu-programmer/dfu-programmer/0.7.2/dfu-programmer-win-0.7.2.zip
 unzip dfu-programmer-win-0.7.2.zip
-copy dfu-programmer.exe ..
+COPY dfu-programmer.exe ..
 
-echo ------------------------------------------
-echo Downloading driver
-echo ------------------------------------------
+ECHO ------------------------------------------
+ECHO Downloading driver
+ECHO ------------------------------------------
 wget http://iweb.dl.sourceforge.net/project/libusb-win32/libusb-win32-releases/1.2.6.0/libusb-win32-bin-1.2.6.0.zip
 unzip libusb-win32-bin-1.2.6.0.zip
-cp libusb-win32-bin-1.2.6.0\bin\x86\libusb0_x86.dll ../libusb0.dll
+COPY libusb-win32-bin-1.2.6.0\bin\x86\libusb0_x86.dll ../libusb0.dll
+
+ECHO ------------------------------------------
+ECHO Installing driver. Accept prompt.
+ECHO ------------------------------------------
+IF EXIST "%WinDir%\System32\PnPUtil.exe" (%WinDir%\System32\PnPUtil.exe -i -a dfu-prog-usb-1.2.2\atmel_usb_dfu.inf && GOTO PNPUTILFOUND)
+IF EXIST "%WinDir%\Sysnative\PnPUtil.exe" (%WinDir%\Sysnative\PnPUtil.exe -i -a dfu-prog-usb-1.2.2\atmel_usb_dfu.inf && GOTO PNPUTILFOUND)
+
+ECHO FAILED. Could not find PnPUtil.exe in "%WinDir%\System32" or "%WinDir%\Sysnative".
+
+:PNPUTILFOUND
 
-echo ------------------------------------------
-echo Installing driver. Accept prompt.
-echo ------------------------------------------
-pnputil -i -a dfu-prog-usb-1.2.2\atmel_usb_dfu.inf
+:: Wait then delete directory
+ping -n 5 127.0.0.1 > NUL 2>&1
+CD ..
+RD /s /q temp
 
-cd ..
-rm -rf temp
+ECHO ------------------------------------------
+ECHO Finished!
 
-echo ------------------------------------------
-echo Finished!
-pause
\ No newline at end of file
+:ExitBatch
+CD /D %STARTINGDIR%
+ENDLOCAL
+PAUSE
+EXIT /b
\ No newline at end of file
index 81c3ec44f2b50df0c04d282e4e2d6d20e588f4f8..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:
@@ -25,12 +27,12 @@ You can also try these instructions:
 3. Install [DFU-Programmer][dfu-prog].
 
 ### Linux
-Install AVR GCC and dfu-progammer with your favorite package manager.
+Install AVR GCC, AVR libc, and dfu-progammer with your favorite package manager.
 
 Debian/Ubuntu example: 
 
     sudo apt-get update
-    sudo apt-get install gcc-avr dfu-programmer
+    sudo apt-get install gcc-avr avr-libc dfu-programmer
 
 ### Vagrant
 If you have any problems building the firmware, you can try using a tool called Vagrant. It will set up a virtual computer with a known configuration that's ready-to-go for firmware building. OLKB does NOT host the files for this virtual computer. Details on how to set up Vagrant are in the [VAGRANT_GUIDE file](VAGRANT_GUIDE.md).
@@ -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)
 
@@ -52,4 +57,4 @@ If you have any problems building the firmware, you can try using a tool called
 ## Troubleshooting
 1. Try running `make clean` if the make command fails.
 
-       WIP
\ No newline at end of file
+       WIP
index 6a6bbed40b0097ba50b0168d8a554de56da5e719..ab7373023a02ef9922ff06671ff5ad7cf7ea219d 100644 (file)
--- a/README.md
+++ b/README.md
@@ -98,6 +98,27 @@ We've added shortcuts to make common modifier/tap (mod-tap) mappings more compac
 
 `DF(layer)` - sets default layer to *layer*. The default layer is the one at the "bottom" of the layer stack - the ultimate fallback layer. This currently does not persist over power loss. When you plug the keyboard back in, layer 0 will always be the default. It is theoretically possible to work around that, but that's not what `DF` does.
 
+### Prevent stuck modifiers
+
+Consider the following scenario:
+
+1. Layer 0 has a key defined as Shift.
+2. The same key is defined on layer 1 as the letter A.
+3. User presses Shift.
+4. User switches to layer 1 for whatever reason.
+5. User releases Shift, or rather the letter A.
+6. User switches back to layer 0.
+
+Shift was actually never released and is still considered pressed.
+
+If such situation bothers you add this to your `config.h`:
+
+    #define PREVENT_STUCK_MODIFIERS
+
+This option uses 5 bytes of memory per every 8 keys on the keyboard
+rounded up (5 bits per key). For example on Planck (48 keys) it uses
+(48/8)\*5 = 30 bytes.
+
 ### Remember: These are just aliases
 
 These functions work the same way that their `ACTION_*` functions do - they're just quick aliases. To dig into all of the tmk ACTION_* functions, please see the [TMK documentation](https://github.com/jackhumbert/qmk_firmware/blob/master/tmk_core/doc/keymap.md#2-action).
@@ -269,7 +290,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 +330,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/alexjj/keymap.c b/keyboard/ergodox_ez/keymaps/alexjj/keymap.c
new file mode 100644 (file)
index 0000000..448f62d
--- /dev/null
@@ -0,0 +1,238 @@
+#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
+#define UNIC 3 // unicode entry layer
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |   ESC  |  1!  |  2@  |  3#  |  4$  |  5%  |  6^  |           |  7&  |  8*  |  9(  |  0)  |  -_  |  +=  |  BkSp  |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * | Tab    |   Q  |   W  |   E  |   R  |   T  |  {   |           |   }  |   Y  |   U  |   I  |   O  |   P  |  |\    |
+ * |--------+------+------+------+------+------|  [   |           |   ]  |------+------+------+------+------+--------|
+ * | Win    |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |  :;  |  '"    |
+ * |--------+------+------+------+------+------| Home |           | End  |------+------+------+------+------+--------|
+ * | LShift |Z/Alt |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  | Alt  | RShift |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |LCtrl | COPY | PASTE| Left | Right|                                       | Down |  Up  |Hyper |  `~  | RCtrl |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *   Hyper = Ctrl+Super+Alt+Shift         | ~L3  |  F5  |       |  F2  | ~L2  |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      | PgUp |       | Ins  |      |      |
+ *                                 | Enter| BkSp |------|       |------| ~L1  |Space |
+ *                                 |      |      | PgDn |       | Del  |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// 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_ESC,         KC_1,         KC_2,   KC_3,   KC_4,   KC_5,   KC_6,
+        KC_TAB,         KC_Q,         KC_W,   KC_E,   KC_R,   KC_T,   KC_LBRC,
+        KC_LGUI,        KC_A,         KC_S,   KC_D,   KC_F,   KC_G,
+        KC_LSFT,        ALT_T(KC_Z),  KC_X,   KC_C,   KC_V,   KC_B,   KC_HOME,
+        KC_LCTRL,       LCTL(KC_C), LCTL(KC_V),  KC_LEFT,KC_RGHT,
+                                                      KC_FN3,  KC_F5,
+                                                              KC_PGUP,
+                                               KC_ENT,KC_BSPC,KC_PGDN,
+        // right hand
+             KC_7,     KC_8,   KC_9,   KC_0,   KC_MINS,   KC_EQL,        KC_BSPC,
+             KC_RBRC,  KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,             KC_BSLS,
+                       KC_H,   KC_J,   KC_K,   KC_L,   KC_SCLN,KC_QUOT,
+             KC_END,   KC_N,   KC_M,   KC_COMM,KC_DOT, KC_SLSH,   KC_RSFT,
+             KC_DOWN,KC_UP, ALL_T(KC_NO),KC_GRV,   KC_RCTRL,
+             KC_F2, KC_FN2,
+             KC_INS,
+             KC_DELT,KC_FN1, KC_SPC
+    ),
+/* Keymap 1: Symbol Layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |           |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |PrintScr|
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |   £  |      |      |      |                                       |      |    . |   0  |   =  |Alt+F4|
+ *   `----------------------------------'                                       `----------------------------------'
+ *              ↑                         ,-------------.       ,-------------.
+ *           THERE!                       |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *    CAD = Ctrl + Alt + Delete    |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       | CAD  |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// SYMBOLS
+[SYMB] = KEYMAP(
+       // left hand
+       KC_TRNS,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_F6,
+       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,M(3),KC_TRNS,KC_TRNS,KC_TRNS,
+                                       KC_TRNS,KC_TRNS,
+                                               KC_TRNS,
+                               KC_TRNS,KC_TRNS,KC_TRNS,
+       // right hand
+       KC_F7, KC_F8,   KC_F9,  KC_F10,   KC_F11,   KC_F12,  KC_PSCR,
+       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    KC_ASTR, KC_TRNS,
+                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,  LALT(KC_F4),
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       LCTL(LALT(KC_DEL)), KC_TRNS, KC_TRNS
+),
+/* Keymap 2: Media and mouse keys
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * | TEENSY |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |      |      |      |      |  Play  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |      | Prev | Next |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      | Lclk | Rclk |                                       |VolDn |VolUp | Mute |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |Brwser|
+ *                                 |      |      |------|       |------|      |Back  |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// MEDIA AND MOUSE
+[MDIA] = KEYMAP(
+       RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
+                                           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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
+                          KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_WBAK
+),
+/* Keymap 3: Unicode Entry
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |  Alt   |  1   |   2  |  3   |  4   |   5  |  6   |           |   7  |  8   |   9  |  0   |  +   |  +   |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |  Alt   |      |      |   E  |      |      |      |           |      |      |   7  |   8  |  9   |  +   |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |  Alt   |   A  |      |   D  |   F  |      |------|           |------|      |   4  |   5  |  6   |  +   |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |  Alt   |      |      |   C  |      |   B  |      |           |      |      |   1  |   2  |  3   |  +   |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   | Alt  |  Alt | Alt  |      |      |                                       |   0  |   0  |  0   |  +   |       |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *      WINDOWS ONLY SETUP!!              | ~L3  |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |  Alt |  Alt |------|       |------|  Alt | Alt  |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+[UNIC] = KEYMAP(  // layer 3 : Unicode Entry
+        // left hand
+       KC_LALT,       KC_P1,      KC_P2,      KC_P3,  KC_P4,     KC_P5,   KC_P6,
+      KC_LALT,       KC_TRNS,    KC_TRNS,    KC_E,   KC_TRNS,   KC_TRNS, KC_TRNS,
+      KC_LALT,       KC_A,       KC_TRNS,    KC_D,   KC_F,      KC_TRNS,
+      KC_LALT,       KC_TRNS,    KC_TRNS,    KC_C,   KC_TRNS,   KC_B,    KC_TRNS,
+      KC_LALT,       KC_LALT,    KC_LALT,    KC_TRNS,KC_TRNS,
+                                                     KC_TRNS,   KC_TRNS,
+                                                                KC_TRNS,
+                                             KC_LALT,KC_LALT,   KC_TRNS,
+        // right hand
+           KC_P7,    KC_P8,     KC_P9,   KC_P0,   KC_PPLS,KC_PPLS,      KC_TRNS,
+           KC_TRNS,  KC_TRNS,   KC_P7,   KC_P8,   KC_P9,  KC_PPLS,      KC_TRNS,
+                     KC_TRNS,   KC_P4,   KC_P5,   KC_P6,  KC_PPLS,      KC_TRNS,
+           KC_TRNS,  KC_TRNS,   KC_P1,   KC_P2,   KC_P3,  KC_PPLS,      KC_TRNS,
+                                KC_P0,   KC_P0,   KC_P0,  KC_PPLS,      KC_TRNS,
+           KC_TRNS, KC_TRNS,
+           KC_TRNS,
+           KC_TRNS,KC_LALT, KC_LALT
+                  ),
+};
+
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB),                // FN1 - Momentary Layer 1 (Symbols)
+    [2] = ACTION_LAYER_TAP_TOGGLE(MDIA),                // FN2 - Momentary Layer 2 (Media)
+    [3] = ACTION_LAYER_TAP_TOGGLE(UNIC)                 // FN3 - Momentary Layer 3 (Unicode entry)
+}; 
+
+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);
+        }
+      case 3: // this would trigger when you hit a key mapped as M(3)
+        if (record->event.pressed) {
+          return MACRO( I(255), D(LALT), T(P1), T(P5), T(P6), U(LALT), END  );
+      }
+        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;
+        case 3:
+            ergodox_right_led_3_on();
+            break;
+        default:
+            // none
+            break;
+    }
+
+};
diff --git a/keyboard/ergodox_ez/keymaps/alexjj/keymap.hex b/keyboard/ergodox_ez/keymaps/alexjj/keymap.hex
new file mode 100644 (file)
index 0000000..13338a8
--- /dev/null
@@ -0,0 +1,1141 @@
+:100000000C94C5020C940C030C940C030C940C037C\r
+:100010000C940C030C940C030C940C030C940C0324\r
+:100020000C940C030C940C030C94380C0C940A0DD7\r
+:100030000C940C030C940C030C940C030C940C0304\r
+:100040000C940C030C94AC210C940C030C940C0336\r
+:100050000C940C030C94381B0C940C030C940C03A0\r
+:100060000C940C030C940C030C940C030C940C03D4\r
+:100070000C940C030C940C030C940C030C940C03C4\r
+:100080000C940C030C940C030C940C030C940C03B4\r
+:100090000C940C030C940C030C940C030C940C03A4\r
+:1000A0000C940C030C940C030C940C03770D990D19\r
+:1000B0008C0E990D8C0EDE0D010E8C0E560E690EF7\r
+:1000C0005D115D118C118C11CF11091216141614CB\r
+:1000D0002212161417131713EA1316141614011408\r
+:1000E00075FF01E201590259015D025D015E025E88\r
+:1000F00002E2000000F0A1F0A2F0A329002B00E32F\r
+:1001000000E100E00000001E00140004001D740661\r
+:10011000014E001F001A0016001B0019012A0020C2\r
+:100120000008000700060050002800210015000903\r
+:100130000019004F004B00220017000A00050000C4\r
+:1001400000C30023002F0000004A0000003E0024EE\r
+:1001500000300000004D0000003B0025001C000B9B\r
+:100160000011000000C200260018000D0010005110\r
+:1001700000490027000C000E00360052002C002D14\r
+:100180000012000F003700007FC1002E0013003363\r
+:1001900000380035004C002A0031003400E500E44E\r
+:1001A0000000000100010001000100010000003A10\r
+:1001B000001E0220022202033001003B001F022128\r
+:1001C000022302010001003C002F0226022F000141\r
+:1001D0000001003D00300227023000010001003E16\r
+:1001E00000310235003502000001003F000100002F\r
+:1001F00000010000000100400001000000010000BB\r
+:1002000000010041005200510024020000010042A0\r
+:1002100000240021001E00010001004300250022EF\r
+:10022000001F0037000100440026002300200027A3\r
+:10023000000100450025022E0231002E004C05462B\r
+:10024000000100010001003D040000005001000118\r
+:100250000001000100000001000100010001000197\r
+:1002600000010001000100F2000100010001000195\r
+:1002700000F000F1000100F400010001000100F3B2\r
+:10028000000100F500010001000100010001000073\r
+:100290000001000100010000000100000001000158\r
+:1002A0000001000000010000000100010001000148\r
+:1002B000000100000001000100010001000100AA8E\r
+:1002C000000100010001000100AC00A900B600011E\r
+:1002D0000001000100AB00A80001000100010001C5\r
+:1002E0000001000100010001000100AE0001000159\r
+:1002F000000000E200E200E200E200E2000000593B\r
+:1003000000010004000100E20001005A00010001A8\r
+:10031000000100E200E2005B0008000700060001A7\r
+:1003200000E2005C00010009000100010001005D25\r
+:1003300000010001000500000001005E0001000056\r
+:10034000000100000001005F00010000000100004A\r
+:1003500000010060000100010001000000010061D7\r
+:10036000005F005C00590062000100620060005DF7\r
+:10037000005A006200E200570061005E005B00620C\r
+:1003800000E20057005700570057005700010001D6\r
+:100390000001000100010001000000160345007289\r
+:1003A0000067006F0044006F007800200045005A8D\r
+:1003B00000000016034500720067006F0044006FE4\r
+:1003C000007800200045005A0000000403090409D9\r
+:1003D000026D00040100A0FA0904000001030101FC\r
+:1003E00000092111010001223F00070581030800D7\r
+:1003F0000A090401000103010200092111010001A1\r
+:10040000224D000705820308000A090402000103C7\r
+:1004100000000009211101000122360007058303B5\r
+:1004200008000A090403000103000000092111016A\r
+:100430000001223900070584031000011201100198\r
+:1004400000000008EDFE0713010001020001050194\r
+:100450000906A101050719E029E7150025019508FE\r
+:10046000750181020508190129059505750191029B\r
+:1004700095017503910105071900297715002501DC\r
+:10048000957875018102C005010980A101850216D8\r
+:10049000010026B7001A01002AB7007510950181E6\r
+:1004A00000C0050C0901A1018503160100269C026C\r
+:1004B0001A01002A9C02751095018100C0050109EE\r
+:1004C00002A1010901A1000509190129051500254D\r
+:1004D00001950575018102950175038101050109E9\r
+:1004E0003009311581257F95027508810609381577\r
+:1004F00081257F950175088106050C0A3802158152\r
+:10050000257F950175088106C0C005010906A10176\r
+:10051000050719E029E715002501950875018102F5\r
+:1005200095017508810105081901290595057501D1\r
+:1005300091029501750391010507190029FF150026\r
+:1005400025FF950675088100C0000000000000002E\r
+:1005500000000000010204060A0F17202C3A4A5D31\r
+:1005600071879DB3C7DAE9F5FCFFFCF5E9DAC7B39B\r
+:100570009D87715D4A3A2C20170F0A06040201007C\r
+:100580000000000000000000000011241FBECFEF9B\r
+:10059000DAE0DEBFCDBF04B603FE27C08091EE01D6\r
+:1005A0009091EF01A091F001B091F1018730904B53\r
+:1005B000A740B04BD1F41092EE011092EF011092CF\r
+:1005C000F0011092F10114BE84B7877F84BF0FB68B\r
+:1005D000F894A895809160008861809360001092E3\r
+:1005E00060000FBEE0E0FFE3099511E0A0E0B1E09C\r
+:1005F000EAEFF6E402C005900D92A433B107D9F7F3\r
+:1006000021E0A4E3B1E001C01D92AE3EB207E1F7E4\r
+:100610000E947F090C947B230C940000CF93DF93FE\r
+:10062000EC01662319F0633059F00DC08A818823EC\r
+:1006300021F085EE0E94EE0F03C085EE0E94B610F9\r
+:100640008A81811103C080E090E002C080EE90E0DA\r
+:10065000DF91CF91089508956091B1017091B20139\r
+:100660008091B3019091B4010E94621A56985E98ED\r
+:1006700025982D9826982E9827982F98823039F013\r
+:10068000833041F0813041F4259A2D9A0895269ABD\r
+:100690002E9A0895279A2F9A08950C942C03569811\r
+:1006A0005E9825982D9826982E9827982F988FEF4A\r
+:1006B00090E0909389008093880090938B008093C2\r
+:1006C0008A0090938D0080938C00259A2D9A2FEFAD\r
+:1006D00080E792E0215080409040E1F700C00000A8\r
+:1006E000269A2E9A2FEF80E792E02150804090408A\r
+:1006F000E1F700C00000279A2F9A2FEF80E792E0E1\r
+:10070000215080409040E1F700C0000025982D98CE\r
+:100710002FEF80E792E0215080409040E1F700C049\r
+:10072000000026982E982FEF80E792E0215080401D\r
+:100730009040E1F700C0000027982F9856985E98E7\r
+:1007400025982D9826982E9827982F98089589EA0D\r
+:100750008093800089E08093810024982C983F98B2\r
+:100760008AB18F748AB96E98479A8BB1806B8BB9B6\r
+:10077000769A0E944F030C942B0380E28093000131\r
+:100780008091340181110EC00E940C0481E080939D\r
+:1007900034012FEF83ED90E3215080409040E1F74A\r
+:1007A00000C0000080E40E941204809300018111C7\r
+:1007B0002EC00E943C0480930001811128C00E9439\r
+:1007C0003C0480930001811122C08FE30E943C040D\r
+:1007D0008093000181111BC00E94340480E40E94B8\r
+:1007E000120480930001811112C08CE00E943C042D\r
+:1007F0008093000181110BC00E943C048093000192\r
+:10080000811105C08FE30E943C04809300010E9487\r
+:1008100034048091000108951092B9008AE0809319\r
+:10082000B800089594EA9093BC009091BC0097FFA3\r
+:10083000FCCF9091B900987F983021F0903111F061\r
+:1008400081E008958093BB0084E88093BC00809190\r
+:10085000BC0087FFFCCF8091B900887F883111F000\r
+:10086000803471F780E0089584E98093BC00809122\r
+:10087000BC0084FDFCCF08958093BB0084E8809386\r
+:10088000BC008091BC0087FFFCCF9091B900987F9D\r
+:1008900081E0983209F480E0089584E88093BC00F8\r
+:1008A0008091BC0087FFFCCF8091BB0008958091B0\r
+:1008B0000001811115C080E40E94120480930001A0\r
+:1008C00081110CC082E10E943C04809300018111DF\r
+:1008D00005C08FEF0E943C04809300010E94340405\r
+:1008E00084B1807F84B985B1807F85B98AB1837FE7\r
+:1008F0008AB98BB1837F8BB93E98469808950E9440\r
+:10090000BD03809300010E94570480B38C7080BBAC\r
+:1009100081B3836F81BBE4E4F1E0A6E3B1E011921F\r
+:100920001D9281E0E235F807D1F70C94A7039F925E\r
+:10093000AF92BF92CF92DF92EF92FF920F931F93ED\r
+:10094000CF93DF9380910001882379F08091350166\r
+:100950008F5F80933501811108C00E94BD03809391\r
+:100960000001811102C00E944F0386E3E82E81E05E\r
+:10097000F82E8701C0E0D0E0BB24B39492E0A92E0A\r
+:10098000CC24C394D12CC730D10500F5809100014F\r
+:10099000811164C080E40E941204809300018111DF\r
+:1009A00012C082E10E943C048093000181110BC0BF\r
+:1009B000C6010C2E01C0880F0A94EAF780950E94A8\r
+:1009C0003C04809300010E94340448C0CA30A1F066\r
+:1009D00028F4C83059F0C93061F005C0CC3089F036\r
+:1009E00070F0CD3089F0209A289810C0219A29986B\r
+:1009F0000DC0229A2A980AC0239A2B9807C0529AAF\r
+:100A000001C0539A5B9802C03E9A4698E0EAEA9584\r
+:100A1000F1F78FB181708B25799902C032E001C066\r
+:100A200030E0832B7C9902C034E001C030E0832B9E\r
+:100A30007D9902C028E001C020E0822B7E9902C08F\r
+:100A400090E101C090E0892B9FB19095991F992763\r
+:100A5000991F9295990F907E892B0FC0809100016C\r
+:100A600081114AC080E40E9412048093000188230F\r
+:100A700081F1912C0E943404892DD8019C91981702\r
+:100A800019F08C93A09201010E94570421960F5FE8\r
+:100A90001F4FCE30D10509F076CF80910101882318\r
+:100AA00069F1815080930101882339F0EFE9FFE07B\r
+:100AB0003197F1F700C0000021C0E4E4F1E0D70174\r
+:100AC0008D917D018193B4E4EB16B1E0FB06B9F79B\r
+:100AD00015C083E10E943C04809300018111C9CFBD\r
+:100AE00081E40E941204809300018111C2CF0E9410\r
+:100AF0004D04982E9094BECF80E0BFCF0E944D034E\r
+:100B000081E0DF91CF911F910F91FF90EF90DF90E7\r
+:100B1000CF90BF90AF909F900895E82FF0E0EC5BEE\r
+:100B2000FE4F8081089508958B3B910580F4883AAB\r
+:100B3000910548F5853A9105D8F48430910508F07F\r
+:100B4000B2C0019709F06EC081E090E00895803E48\r
+:100B5000910508F467C0883E910508F4A4C09C0183\r
+:100B6000205F31092031310508F05CC0906508959F\r
+:100B7000853A910509F459C0863A910509F058C0A3\r
+:100B800082E890E40895883A910509F454C0893ABE\r
+:100B9000910509F453C08A3A910509F452C08B3A81\r
+:100BA000910509F451C08C3A910509F450C08D3A71\r
+:100BB000910509F44FC0803B910509F44EC08E3A6F\r
+:100BC000910509F44DC08F3A910509F44CC0813B61\r
+:100BD000910509F44BC0823B910509F44AC0833B5F\r
+:100BE000910509F449C0843B910509F448C0853B4F\r
+:100BF000910509F447C0863B910509F446C0873B3F\r
+:100C0000910509F445C0883B910509F444C0893B2E\r
+:100C1000910509F443C08A3B910509F442C080E084\r
+:100C200094E4089580E090E0089581E890E40895C8\r
+:100C300083E890E4089582EE94E4089589EE94E4C4\r
+:100C400008958AEE94E4089585EB94E4089586EB84\r
+:100C500094E4089587EB94E408958CEC94E408956B\r
+:100C60008DEC94E4089583E895E408958AE895E48A\r
+:100C7000089582E995E4089584E995E4089581E270\r
+:100C800096E4089583E296E4089584E296E4089554\r
+:100C900085E296E4089586E296E4089587E296E474\r
+:100CA00008958AE296E40895089524E5829FC0019C\r
+:100CB0001124FC0126E0729FE00DF11D1124E60FC6\r
+:100CC000F11DEE0FFF1FE550FF4F859194910895A0\r
+:100CD000880F991FFC01ED58F0408591949108957B\r
+:100CE000880F991FFC01ED50FF4F85919491089555\r
+:100CF00024E5829FC0011124FC0146E0749FE00DB1\r
+:100D0000F11D1124E60FF11DEE0FFF1FE550FF4FFF\r
+:100D1000859194919C013A9521154FE1340708F48F\r
+:100D200027C13F512115304120F49F700E94700669\r
+:100D300008959C0130532115304118F49927906C87\r
+:100D40000895811520E5920771F40E943A144FEF3F\r
+:100D500084E39CE0415080409040E1F700C00000F7\r
+:100D60000E945D1B05C1813020E5920731F480911E\r
+:100D7000CD0181608093CD01FBC09C0130552115D0\r
+:100D8000304108F05CC0292F33272F7033272130E2\r
+:100D90003105E9F4AC0164E0440F551F6A95E1F7B1\r
+:100DA00044275370BC016370772702C0220F331FA2\r
+:100DB0006A95E2F73C68242B352B73E0880F991F66\r
+:100DC0007A95E1F780769927822B932B089522302C\r
+:100DD000310529F4982F8827816F906A0895233070\r
+:100DE0003105A1F4AC0133E0440F551F3A95E1F70A\r
+:100DF000407E57708370992721E030E002C0220FB7\r
+:100E0000331F8A95E2F7C9019C6816C0243031056A\r
+:100E100031F5AC0123E0440F551F2A95E1F7407EE0\r
+:100E200057708370992721E030E002C0220F331FF2\r
+:100E30008A95E2F7C9019A68842B952B08959C0145\r
+:100E400030572115304118F49F70906208959C012D\r
+:100E500030582115304118F49F70906A0895803EF3\r
+:100E60009105E0F4803C910558F58133910509F432\r
+:100E70006FC048F48932910509F463C08A32910544\r
+:100E800009F46DC072C089339105E9F0823891058B\r
+:100E9000D1F08533910509F44DC067C0833E9105BB\r
+:100EA00081F138F4803E9105B9F0823E9105D9F088\r
+:100EB0005CC0863E910561F1873E9105A1F155C068\r
+:100EC0000E94680608952091DF0120FD02C021FFE5\r
+:100ED0004CC080EE90E049C08091DF0180FFF9CFE7\r
+:100EE00089E390E042C08091DF0182FF0EC08091D3\r
+:100EF000DF0184FF03C080E090E037C083EE90E024\r
+:100F000034C08091DF0182FFF2CF82EE90E02DC0ED\r
+:100F10008091DF0183FF0BC08091DF0184FDEBCF67\r
+:100F200087EE90E022C08091DF0183FFF5CF86EE4F\r
+:100F300090E01BC08091DF0185FF07C089E290E04F\r
+:100F400014C08091DF0185FFF9CF85E390E00DC0EB\r
+:100F50008091DF0186FF07C08AE290E006C08091A1\r
+:100F6000DF0186FFF9CF81E390E00E9494050895A8\r
+:100F7000089508950C94B907809162010895CF9364\r
+:100F8000DF9300D01F92CDB7DEB79C018091E501C1\r
+:100F9000843019F593E099833B832A839093E90089\r
+:100FA0008FEF9091E800815095FD06C095ED9A95E0\r
+:100FB000F1F700008111F5CF8091E80085FF0DC0A9\r
+:100FC00040E050E063E070E0CE0101960E942C0A00\r
+:100FD0008091E8008E778093E8000F900F900F903B\r
+:100FE000DF91CF910895CF93DF9300D01F92CDB7BB\r
+:100FF000DEB72091E501243021F522E029839B838F\r
+:101000008A8383E08093E9008FEF9091E80081501C\r
+:1010100095FD06C095ED9A95F1F700008111F5CF89\r
+:101020008091E80085FF0DC040E050E063E070E093\r
+:10103000CE0101960E942C0A8091E8008E77809361\r
+:10104000E8000F900F900F90DF91CF9108959C01D1\r
+:101050008091E5018430F9F482E08093E9009FEF0C\r
+:101060008091E800915085FD06C085ED8A95F1F7E5\r
+:1010700000009111F5CF8091E80085FF0CC040E0A1\r
+:1010800050E065E070E0C9010E942C0A8091E80000\r
+:101090008E778093E8000895CF93DF93EC018091E1\r
+:1010A000E501843009F046C090910C019923D9F0F4\r
+:1010B00090910D019923B9F08093E9008FEF909101\r
+:1010C000E800815095FD06C095E19A95F1F7000082\r
+:1010D0008111F5CF8091E80085FF2CC040E050E001\r
+:1010E00060E170E017C081E08093E9008FEF90919C\r
+:1010F000E800815095FD06C095ED9A95F1F7000046\r
+:101100008111F5CF8091E80085FF14C040E050E0E8\r
+:1011100068E070E0CE010E942C0A8091E8008E7792\r
+:101120008093E80080E1FE01A2E5B1E001900D921C\r
+:101130008A95E1F7DF91CF9108958091E4018111C3\r
+:1011400009C00E94BD0B0E941A0C8091E2008460CD\r
+:101150008093E20008951092E401089508950C949C\r
+:1011600099210E94F31A0E949F210E94C50E0C949F\r
+:10117000BA0742E061EC81E00E94360B42E061EC8C\r
+:1011800082E00E94360B42E061EC83E00E94360B65\r
+:1011900042E161EC84E00C94360B8091E7018330EE\r
+:1011A00009F455C030F4813071F0823009F48EC0FA\r
+:1011B00008958A3009F47AC08B3009F460C0893010\r
+:1011C00009F09CC020C08091E601813A09F096C0E8\r
+:1011D0008091E800877F8093E8008091EA019091F8\r
+:1011E000EB01892B21F460E182E591E003C060E02E\r
+:1011F00080E090E070E00E94770A8091E8008B77B1\r
+:101200008093E80008958091E601813209F076C06C\r
+:101210008091EA019091EB01009719F0039709F092\r
+:101220006DC08091E800877F8093E8008091E8009E\r
+:1012300082FD05C08091E5018111F8CF5FC08091EA\r
+:10124000F100809362018091E8008B7753C0809118\r
+:10125000E601813A09F052C08091EA019091EB01D8\r
+:10126000892B09F04BC08091E800877F8093E800CC\r
+:101270008091E80080FFFCCF80910C0136C0809106\r
+:10128000E6018132D9F58091EA019091EB01892B39\r
+:10129000A9F58091E800877F8093E8000E946B0B9E\r
+:1012A0008091E80180930C010C943A148091E6013E\r
+:1012B000813221F58091E800877F8093E8000E94C9\r
+:1012C0006B0B8091E9018093630108958091E601A1\r
+:1012D000813AA1F48091E800877F8093E8008091B3\r
+:1012E000E80080FFFCCF809163018093F100809142\r
+:1012F000E8008E778093E8000C946B0B089584B718\r
+:10130000877F84BF0FB6F894A895809160008861AC\r
+:1013100080936000109260000FBE90E080E80FB6EE\r
+:10132000F89480936100909361000FBE0E94140FA7\r
+:101330000E94BD0B0E941A0C8091E2008460809391\r
+:10134000E20078940E94A50E0E94160F82E091E0C0\r
+:101350000E94C00E0E9487218091E501853069F4CA\r
+:101360000E94B21A8091E3018823B1F30E94DF1A30\r
+:10137000882391F30E94160AEFCF0E941C0FECCF36\r
+:10138000292F332723303105C9F060F4213031058E\r
+:1013900081F02230310509F041C08DE690E02FEC5C\r
+:1013A00033E040C021323105E1F02232310531F124\r
+:1013B00035C082E190E02CE334E034C099278130DD\r
+:1013C000910549F028F0029749F5EBE9F3E005C0F3\r
+:1013D000EBECF3E002C0E3EBF3E0849190E09F01DB\r
+:1013E00021C06430D8F4E62FF0E0EE0FFF1FEE5D71\r
+:1013F000FE4F2081318189E090E014C0643070F4A8\r
+:1014000070E0FB01EE0FFF1FE65EFE4F2081318191\r
+:10141000FB01EA5EFE4F808190E004C080E090E036\r
+:1014200020E030E0FA0131832083089580E189BD16\r
+:1014300082E189BD09B400FEFDCF8091D8008F7D87\r
+:101440008093D8008091E00082608093E0008091DA\r
+:10145000E00081FDFCCF0895CF92DF92EF92FF92E2\r
+:101460000F931F93CF93DF93EC018B016A010E94CE\r
+:101470008A0B811133C0C114D10439F0F601808187\r
+:101480009181081B190BC80FD91FE12CF12C0115F4\r
+:10149000110519F18091E80085FD16C08091E800E2\r
+:1014A0008E778093E800C114D10449F0F601808161\r
+:1014B0009181E80EF91EF182E08285E00FC00E9462\r
+:1014C0008A0B882321F30AC089918093F10001508F\r
+:1014D0001109FFEFEF1AFF0ADACF80E0DF91CF9119\r
+:1014E0001F910F91FF90EF90DF90CF900895209182\r
+:1014F000EC013091ED012617370748F061157105B1\r
+:1015000039F42091E8002E772093E80001C0B9015A\r
+:10151000FC0120E06115710579F18091E5018823D6\r
+:10152000F1F18530F1F18091E80083FD3CC08091BC\r
+:10153000E80082FD2EC08091E80080FFEBCF209173\r
+:10154000F3008091F20090E0922B6115710551F04B\r
+:101550008830910538F421912093F1006150710990\r
+:101560000196F3CF21E0089709F020E08091E80090\r
+:101570008E778093E800CECF2111CFCF0AC0809123\r
+:10158000E501882361F0853061F08091E80083FDFA\r
+:101590000AC08091E80082FFF2CF80E0089582E0E7\r
+:1015A000089583E0089581E008952091EC01309141\r
+:1015B000ED012617370748F06115710539F42091C0\r
+:1015C000E8002E772093E80001C0B901FC0120E07B\r
+:1015D0006115710591F18091E501882309F440C0FE\r
+:1015E000853009F43FC08091E80083FD3DC08091C3\r
+:1015F000E80082FD2FC08091E80080FFE9CF2091B4\r
+:10160000F3008091F20090E0922B6115710559F082\r
+:101610008830910540F424912093F1003196615077\r
+:1016200071090196F2CF21E0089709F020E080913E\r
+:10163000E8008E778093E800CBCF2111CCCF0AC091\r
+:101640008091E501882361F0853061F08091E800A8\r
+:1016500083FD0AC08091E80082FFF2CF80E0089508\r
+:1016600082E0089583E0089581E00895982F9730EF\r
+:1016700068F59093E900981739F07091EC0020918B\r
+:10168000ED005091F00003C0242F762F50E021FD93\r
+:1016900002C09F5FECCF3091EB003E7F3093EB00B8\r
+:1016A0003091ED003D7F3093ED003091EB003160E3\r
+:1016B0003093EB007093EC002093ED005093F0001A\r
+:1016C0002091EE0027FDE5CF80E008958F70809394\r
+:1016D000E90081E008958091E60187FF11C08091C3\r
+:1016E000E80082FD05C08091E5018111F8CF11C0AD\r
+:1016F0008091E8008B770BC08091E501882349F049\r
+:101700008091E80080FFF8CF8091E8008E77809389\r
+:10171000E80008952091E4003091E50095E64091BD\r
+:10172000EC00842F817040FF23C08091E80080FD91\r
+:101730001DC08091E501882399F0853099F0809152\r
+:10174000EB0085FD11C04091E4005091E5002417A5\r
+:10175000350729F3915011F09A01E1CF84E0089503\r
+:1017600082E0089583E0089581E0089580E008957F\r
+:101770004091E80042FFDDCF08950E942B0C0E94AB\r
+:10178000330CE0EEF0E0808181608083E8EDF0E0F2\r
+:1017900080818F77808319BCA7EDB0E08C918E7F1C\r
+:1017A0008C9380818F7E80831092E40108950F9343\r
+:1017B0001F93CF93DF930E942B0C0E94330CC8ED34\r
+:1017C000D0E088818F77888388818068888388814A\r
+:1017D0008F7D888319BC1092E5011092E10110926F\r
+:1017E000E3011092E20100EE10E0F80180818B7FAE\r
+:1017F000808388818160888342E060E080E00E948D\r
+:10180000360BE1EEF0E080818E7F8083E2EEF0E047\r
+:10181000808181608083808188608083F8018081FD\r
+:101820008E7F8083888180618883DF91CF911F9133\r
+:101830000F910895E8EDF0E080818F7E8083E7EDE1\r
+:10184000F0E080818160808384E082BF81E08093CA\r
+:10185000E4010C94D70BE8EDF0E080818E7F80836B\r
+:101860001092E20008951092DA001092E1000895BB\r
+:101870001F920F920FB60F9211242F933F934F9305\r
+:101880005F936F937F938F939F93AF93BF93EF93E8\r
+:10189000FF938091E10082FF0BC08091E20082FF04\r
+:1018A00007C08091E1008B7F8093E1000E94A40E2D\r
+:1018B0008091DA0080FF1FC08091D80080FF1BC09C\r
+:1018C0008091DA008E7F8093DA008091D90080FFCA\r
+:1018D0000DC080E189BD82E189BD09B400FEFDCF64\r
+:1018E00081E08093E5010E949D0805C019BC10921B\r
+:1018F000E5010E94AB088091E10080FF19C0809152\r
+:10190000E20080FF15C08091E2008E7F8093E200AC\r
+:101910008091E20080618093E2008091D800806233\r
+:101920008093D80019BC85E08093E5010E94AF0840\r
+:101930008091E10084FF30C08091E20084FF2CC0E0\r
+:1019400080E189BD82E189BD09B400FEFDCF8091AF\r
+:10195000D8008F7D8093D8008091E1008F7E8093A6\r
+:10196000E1008091E2008F7E8093E2008091E200AE\r
+:1019700081608093E2008091E101882311F084E08E\r
+:1019800007C08091E30087FD02C081E001C083E0D1\r
+:101990008093E5010E94B1088091E10083FF29C096\r
+:1019A0008091E20083FF25C08091E100877F8093D2\r
+:1019B000E10082E08093E5011092E1018091E10075\r
+:1019C0008E7F8093E1008091E2008E7F8093E20021\r
+:1019D0008091E20080618093E20042E060E080E07C\r
+:1019E0000E94360B8091F00088608093F0000E9486\r
+:1019F000AE08FF91EF91BF91AF919F918F917F9131\r
+:101A00006F915F914F913F912F910F900FBE0F906B\r
+:101A10001F9018951F920F920FB60F9211242F93BB\r
+:101A20003F934F935F936F937F938F939F93AF9366\r
+:101A3000BF93CF93DF93EF93FF93C091E900CF70F3\r
+:101A40008091EC00D82FD17080FDD0E81092E90091\r
+:101A50008091F000877F8093F00078940E944E0D73\r
+:101A60001092E9008091F00088608093F000CD2B07\r
+:101A7000CF70C093E900FF91EF91DF91CF91BF91BB\r
+:101A8000AF919F918F917F916F915F914F913F9116\r
+:101A90002F910F900FBE0F901F9018951F93CF930B\r
+:101AA000DF93CDB7DEB7AA970FB6F894DEBF0FBEAF\r
+:101AB000CDBFE6EEF1E08091F100819321E0EE3EB2\r
+:101AC000F207C9F70E94CD088091E80083FF24C186\r
+:101AD0008091E6019091E701492F50E04A3051058D\r
+:101AE00008F01AC1FA01EA5AFF4F0C9430238038EB\r
+:101AF00081F0823809F010C18091EA018F708093E3\r
+:101B0000E9008091EB0085FB882780F91092E900BD\r
+:101B100006C08091E2019091E30191118260909161\r
+:101B2000E800977F9093E8008093F1001092F10015\r
+:101B3000C8C0282F2D7F09F0EFC0882319F082300C\r
+:101B400061F0EAC08091E801813009F0E5C093308E\r
+:101B500009F080E08093E3012BC08091E8018111BE\r
+:101B600027C08091EA018F7009F4D6C08093E90004\r
+:101B70002091EB0020FF1CC0933021F48091EB00FA\r
+:101B8000806214C09091EB0090619093EB0021E093\r
+:101B900030E0A90102C0440F551F8A95E2F7409337\r
+:101BA000EA001092EA008091EB0088608093EB00DD\r
+:101BB0001092E9008091E800877F86C08111ACC057\r
+:101BC0001091E8011F778091E3008078812B80934A\r
+:101BD000E3008091E800877F8093E8000E946B0B10\r
+:101BE0008091E80080FFFCCF8091E30080688093C3\r
+:101BF000E300111102C082E001C083E08093E5019F\r
+:101C00008BC08058823008F087C08091E8019091A5\r
+:101C1000E9018C3D53E0950779F583E08A838AE2F8\r
+:101C200089834FB7F894DE01139620E03EE051E23D\r
+:101C3000E32FF0E050935700E49120FF03C0E295BA\r
+:101C4000EF703F5FEF708E2F90E0EA3010F0C79694\r
+:101C500001C0C0968D939D932F5F243149F74FBFEC\r
+:101C60008091E800877F8093E8006AE270E0CE010F\r
+:101C700001960E94770A14C0AE014F5F5F4F6091DA\r
+:101C8000EA010E94C009BC01892B09F445C090916A\r
+:101C9000E800977F9093E80089819A810E94D50A95\r
+:101CA0008091E8008B778093E80036C08038A1F5FA\r
+:101CB0008091E800877F8093E8008091E101809324\r
+:101CC000F1008091E8008E778093E8000E946B0B12\r
+:101CD00023C0811121C08091E8019091E9019927E9\r
+:101CE0000297D4F48091E800877F8093E800809188\r
+:101CF000E8018093E1010E946B0B8091E101811169\r
+:101D000006C08091E30087FD02C081E001C084E04D\r
+:101D10008093E5010E94B9088091E80083FF0AC022\r
+:101D20008091E800877F8093E8008091EB008062DB\r
+:101D30008093EB00AA960FB6F894DEBF0FBECDBF1E\r
+:101D4000DF91CF911F9108950895CF938091E50180\r
+:101D50008823A1F0C091E900CF709091EC00892F09\r
+:101D6000817090FD80E8C82B1092E9008091E80016\r
+:101D700083FD0E944E0DCF70C093E900CF9108956E\r
+:101D800090936901809368010895E0916801F09152\r
+:101D90006901309721F00190F081E02D099480E0F5\r
+:101DA0000895E0916801F0916901309721F0028077\r
+:101DB000F381E02D09940895E0916801F0916901A3\r
+:101DC000309721F00480F581E02D09940895209149\r
+:101DD0006601309167012817390771F09093670108\r
+:101DE00080936601E0916801F0916901309721F0DC\r
+:101DF0000680F781E02D09940895209164013091C7\r
+:101E000065012817390771F090936501809364018B\r
+:101E1000E0916801F0916901309721F00084F1852B\r
+:101E2000E02D0994089508950C94130F0E94F91A57\r
+:101E30000E947F040C94BF1BCF92DF92EF92FF921F\r
+:101E40000F931F93CF93DF93CDB7DEB72B970FB6CA\r
+:101E5000F894DEBF0FBECDBF0E9497048BE6C82E5C\r
+:101E600081E0D82E00E010E0E02E802F0E948D054A\r
+:101E7000F60141916F01F82EF426B1F40F5F1F4F68\r
+:101E80000E30110589F78FEF89838A831B820E94A8\r
+:101E9000021B8160782F9D838C8349815A816B81DD\r
+:101EA0008D810E94BF0F40C09091CD0191FF04C071\r
+:101EB0008B870E9493058B8520E030E04F2D50E00A\r
+:101EC000922FBA01022E02C0759567950A94E2F727\r
+:101ED00060FF24C02E83EF8221E030E0690102C060\r
+:101EE000CC0CDD1C9A95E2F790E08C219D21892B8A\r
+:101EF00009F420E028870E94021B8160782F9A87CE\r
+:101F000089874E815F8168858A850E94BF0FF801AD\r
+:101F1000E559FE4F8081C826C08206C02F5F3F4F23\r
+:101F20002630310569F6AACF0E94A61E0E94C50E72\r
+:101F300090916A018917A1F00E94C50E80936A01F1\r
+:101F40002B960FB6F894DEBF0FBECDBFDF91CF91B9\r
+:101F50001F910F91FF90EF90DF90CF900C94BA07F4\r
+:101F60002B960FB6F894DEBF0FBECDBFDF91CF9199\r
+:101F70001F910F91FF90EF90DF90CF900895CF9336\r
+:101F8000DF93CDB7DEB72B970FB6F894DEBF0FBE49\r
+:101F9000CDBF4F83588769877A878B87DE0111967B\r
+:101FA00086E0FD0111928A95E9F785E0FE013796FA\r
+:101FB00001900D928A95E1F749815A816B817C816C\r
+:101FC0008D819E810E94CE162B960FB6F894DEBFAF\r
+:101FD0000FBECDBFDF91CF9108950895CF93C82F45\r
+:101FE000882309F4C1C0823859F40E94C50E81FDCE\r
+:101FF000BBC089E30E946B190E94331A89E30CC0AD\r
+:10200000833879F40E94C50E80FDAEC083E50E943E\r
+:102010006B190E94331A83E50E94AA19CF910C9480\r
+:10202000331A843859F40E94C50E82FD9DC087E49E\r
+:102030000E946B190E94331A87E4EECF8CEF8C0F4D\r
+:10204000813A48F48C2F0E94EC2081118DC08C2F96\r
+:102050000E946B19E3CF80E28C0F883048F4C77080\r
+:1020600081E001C0880FCA95EAF70E94EC19D6CF2B\r
+:102070008BE58C0F833078F4C53A29F0C63A31F0FD\r
+:1020800083E890E005C081E890E002C082E890E03B\r
+:10209000CF910C94E70E88E58C0F833108F064C073\r
+:1020A000C83A39F1C93A41F1CA3A49F1CB3A51F14A\r
+:1020B000CC3A59F1CD3A61F1C03B69F1CE3A71F1B8\r
+:1020C000CF3A79F1C13B81F1C23B89F1C33B91F138\r
+:1020D000C43B99F1C53BA1F1C63BA9F1C73BB1F1A6\r
+:1020E000C83BB9F1C93BC1F1CA3BC9F180E090E0FE\r
+:1020F00038C082EE90E035C089EE90E032C08AEEC2\r
+:1021000090E02FC085EB90E02CC086EB90E029C0DA\r
+:1021100087EB90E026C08CEC90E023C08DEC90E043\r
+:1021200020C083E891E01DC08AE891E01AC082E9EE\r
+:1021300091E017C084E991E014C081E292E011C0FF\r
+:1021400083E292E00EC084E292E00BC085E292E06E\r
+:1021500008C086E292E005C087E292E002C08AE20F\r
+:1021600092E0CF910C94FD0ECF910895882309F44D\r
+:102170004BC0823859F40E94C50E81FF45C089E3E7\r
+:102180000E946B190E94331A89E30CC0833871F4E2\r
+:102190000E94C50E80FF38C083E50E946B190E9423\r
+:1021A000331A83E50E94AA190C94331A843859F41F\r
+:1021B0000E94C50E82FF28C087E40E946B190E940E\r
+:1021C000331A87E4EFCF9CEF980F913A58F390E2DF\r
+:1021D000980F983050F4877091E001C0990F8A955C\r
+:1021E000EAF7892F0E94F219DFCF9BE5980F933011\r
+:1021F00020F480E090E00C94E70E885A833120F4BC\r
+:1022000080E090E00C94FD0E0895882321F00E9458\r
+:10221000EC190C94331A0895882321F00E94F219C6\r
+:102220000C94331A0895BF92CF92DF92EF92FF92EF\r
+:102230000F931F93CF93DF9300D000D000D0CDB782\r
+:10224000DEB77C0185E0F701DE01119601900D9269\r
+:102250008A95E1F7F70183819481892B09F4E6C21D\r
+:10226000D08011811F3F21F4FFEFDF1609F4DEC299\r
+:10227000F7010281258122952F70C7012E830E94CC\r
+:10228000ED0FD9821A8389819A810E942A19182F09\r
+:10229000B92E0E9429190E94F0172E81002319F0EF\r
+:1022A0000E94091A2E81EB2DE295EF704E2F50E01F\r
+:1022B000FA01E05AFF4F0C9430238B2D807F9B2D29\r
+:1022C0009F70F92E882319F0F29480EFF8220023F2\r
+:1022D00049F0FF2009F457C28F2D0E94FC190E947B\r
+:1022E000331A51C2812F0E94B610FF2009F49EC2FA\r
+:1022F0008F2D0E94021A26960FB6F894DEBF0FBEED\r
+:10230000CDBFDF91CF911F910F91FF90EF90DF90A4\r
+:10231000CF90BF900C94331A3B2D307F8B2D8F7054\r
+:10232000303211F08295807F112319F0113021F1A4\r
+:102330002CC00023B9F0222309F490C1213009F008\r
+:102340008DC126960FB6F894DEBF0FBECDBFDF91CC\r
+:10235000CF911F910F91FF90EF90DF90CF90BF90A2\r
+:102360000C941C1A222319F0213009F45FC28E83C9\r
+:102370000E941F1A8E8186C1002321F0223008F0AE\r
+:1023800055C26CC1211152C27DC1002321F022230C\r
+:1023900009F464C1F8C1222309F474C109C28B2D68\r
+:1023A00086958695837019F08130D1F03FC2002365\r
+:1023B00021F0812F9B2D937002C080E090E0269643\r
+:1023C0000FB6F894DEBF0FBECDBFDF91CF911F9146\r
+:1023D0000F91FF90EF90DF90CF90BF900C94E70E9D\r
+:1023E000002321F0812F9B2D937002C080E090E0AC\r
+:1023F00026960FB6F894DEBF0FBECDBFDF91CF910A\r
+:102400001F910F91FF90EF90DF90CF90BF900C94B1\r
+:10241000FD0E812F002319F00E94AE1D02C00E9404\r
+:10242000161E26960FB6F894DEBF0FBECDBFDF9105\r
+:10243000CF911F910F91FF90EF90DF90CF90BF90C1\r
+:102440000C949B1E8B2D837009F075C00111EEC199\r
+:10245000812F829586958770880F880F912F9F70A6\r
+:10246000C92ED12CE12CF12C082E04C0CC0CDD1C83\r
+:10247000EE1CFF1C0A94D2F714FF12C00FE010E00C\r
+:1024800020E030E004C0000F111F221F331F8A9587\r
+:10249000D2F7C901B801609570958095909503C0F9\r
+:1024A00060E070E0CB014B2D46954695437042307D\r
+:1024B000C1F060F56C297D298E299F29413051F1A9\r
+:1024C00026960FB6F894DEBF0FBECDBFDF91CF9139\r
+:1024D0001F910F91FF90EF90DF90CF90BF900C94E1\r
+:1024E00017186C297D298E299F2926960FB6F894F6\r
+:1024F000DEBF0FBECDBFDF91CF911F910F91FF9037\r
+:10250000EF90DF90CF90BF900C9433180E94171873\r
+:10251000C701B60126960FB6F894DEBF0FBECDBF39\r
+:10252000DF91CF911F910F91FF90EF90DF90CF90AF\r
+:10253000BF900C94FB17002319F08B2D817001C004\r
+:102540008695882309F472C1812F829586958770BC\r
+:10255000880F880F912F9F70C92ED12CE12CF12C60\r
+:10256000082E04C0CC0CDD1CEE1CFF1C0A94D2F714\r
+:1025700014FF12C00FE010E020E030E004C0000FB4\r
+:10258000111F221F331F8A95D2F7C901B801609528\r
+:1025900070958095909503C060E070E0CB014B2D65\r
+:1025A0004695469543704230C1F060F56C297D290F\r
+:1025B0008E299F29413051F126960FB6F894DEBF3F\r
+:1025C0000FBECDBFDF91CF911F910F91FF90EF9084\r
+:1025D000DF90CF90BF900C94F1186C297D298E2943\r
+:1025E0009F2926960FB6F894DEBF0FBECDBFDF91B0\r
+:1025F000CF911F910F91FF90EF90DF90CF90BF9000\r
+:102600000C940D190E94F118C701B60126960FB659\r
+:10261000F894DEBF0FBECDBFDF91CF911F910F9118\r
+:10262000FF90EF90DF90CF90BF900C94D518103FA3\r
+:10263000D1F118F4103E50F4A1C0123F09F463C068\r
+:1026400008F44CC0133F09F473C098C01F708B2D61\r
+:102650008F710023A1F00E946E18812F26960FB66D\r
+:10266000F894DEBF0FBECDBFDF91CF911F910F91C8\r
+:10267000FF90EF90DF90CF90BF900C9405110E94D7\r
+:102680008F18812F26960FB6F894DEBF0FBECDBFF0\r
+:10269000DF91CF911F910F91FF90EF90DF90CF903E\r
+:1026A000BF900C940C110023A9F02111BFC08B2DF9\r
+:1026B0008F7126960FB6F894DEBF0FBECDBFDF91A7\r
+:1026C000CF911F910F91FF90EF90DF90CF90BF902F\r
+:1026D0000C94B418223008F0A9C0E9CF0023A9F067\r
+:1026E0008B2D8F7126960FB6F894DEBF0FBECDBF2F\r
+:1026F000DF91CF911F910F91FF90EF90DF90CF90DE\r
+:10270000BF900C946E18002359F38B2D8F71269671\r
+:102710000FB6F894DEBF0FBECDBFDF91CF911F91F2\r
+:102720000F91FF90EF90DF90CF90BF900C948F1897\r
+:10273000002399F08B2D8F7126960FB6F894DEBF8B\r
+:102740000FBECDBFDF91CF911F910F91FF90EF9002\r
+:10275000DF90CF90BF900C94591826960FB6F8943E\r
+:10276000DEBF0FBECDBFDF91CF911F910F91FF90C4\r
+:10277000EF90DF90CF90BF900C944F180023A9F0FA\r
+:10278000222309F4ADCF812F26960FB6F894DEBF31\r
+:102790000FBECDBFDF91CF911F910F91FF90EF90B2\r
+:1027A000DF90CF90BF900C94EE0F222309F4ADCFB1\r
+:1027B000812F26960FB6F894DEBF0FBECDBFDF91F6\r
+:1027C000CF911F910F91FF90EF90DF90CF90BF902E\r
+:1027D0000C94B6104B2D4F70612FC7010E940E0351\r
+:1027E00026960FB6F894DEBF0FBECDBFDF91CF9116\r
+:1027F0001F910F91FF90EF90DF90CF90BF900C94BE\r
+:1028000073174B2D4F70612FC70126960FB6F894A2\r
+:10281000DEBF0FBECDBFDF91CF911F910F91FF9013\r
+:10282000EF90DF90CF90BF900C94540626960FB691\r
+:10283000F894DEBF0FBECDBFDF91CF911F910F91F6\r
+:10284000FF90EF90DF90CF90BF9008950E94091AFB\r
+:102850000E94191A0E94DE190E94331A0E944B1F0F\r
+:102860000E949B1E80E090E00E94E70E80E090E0D6\r
+:102870000C94FD0E0E94F9190C9426140E942A193A\r
+:10288000292F22952F702C3030F42A3048F4225012\r
+:10289000223078F405C02C3041F02F3031F009C0DF\r
+:1028A000803E48F0803F29F406C093FB882780F9DA\r
+:1028B000089580E0089581E00895CF93DF9300D0DC\r
+:1028C00000D01F92CDB7DEB70F900F900F900F90F2\r
+:1028D0000F90DF91CF910895CF93DF9300D000D078\r
+:1028E00000D0CDB7DEB726960FB6F894DEBF0FBE88\r
+:1028F000CDBFDF91CF9108951F93CF93DF93C09108\r
+:10290000790116E080917A01C81799F0D0E01C9FF8\r
+:10291000F0011D9FF00D1124E558FE4F40815181BB\r
+:1029200062817381848195810E946C142196C770A5\r
+:10293000E9CFDF91CF911F9108954091AB01509164\r
+:10294000AC016091AD017091AE018091AF019091A9\r
+:10295000B0010C946C148091B00182958F7009F0D5\r
+:1029600054C08091AD01882309F44FC08091790152\r
+:10297000A0917A014091AE015091AF016091AB01FD\r
+:102980007091AC01B6E08A1709F43FC090E04115A0\r
+:102990005105C1F17F3F11F46F3FA1F1B89FF001E4\r
+:1029A000B99FF00D1124E558FE4F218127132AC04D\r
+:1029B0002081261327C02281211124C02381348144\r
+:1029C0002417350710F421503109241B350B283CFE\r
+:1029D0003105C0F42091B0012F7020612093B00127\r
+:1029E00026E0289FF001299FF00D1124E058FE4FAA\r
+:1029F00080818F70806180838BEA91E00E94131147\r
+:102A00000C947C1401968770BECF0895CF92DF920C\r
+:102A1000EF92FF920F931F93CF93DF93CDB7DEB763\r
+:102A200062970FB6F894DEBF0FBECDBF8C0185E074\r
+:102A3000F801DE011D9601900D928A95E1F7D8010B\r
+:102A40004C9111965C91119712966C918091AE0108\r
+:102A50009091AF01009709F475C13091AB0170916D\r
+:102A6000AC017F3F19F43F3F09F46CC1F801C3800A\r
+:102A7000D480E090AD01EE2009F4BEC02091B001F9\r
+:102A8000C816D90628F0D601A81BB90BCD0104C081\r
+:102A9000809590958C0D9D1DFF24F394883C9105A5\r
+:102AA00078F0F12C207F09F0C4C07C2DD98AC88A27\r
+:102AB00089890E945D148BEA91E00E941311AFC0D6\r
+:102AC000822F807F09F045C0571313C0431311C0F4\r
+:102AD00061110FC02F7020612093B0010E949D14DE\r
+:102AE0008BEA91E00E9413118091B001F801858377\r
+:102AF0002EC0CD2819F15F3F11F44F3FF9F0F62EAB\r
+:102B000061111CC08091790120917A0136E0821711\r
+:102B100009F45BC090E0389FF001399FF00D11245B\r
+:102B2000E558FE4F7181571306C07081471303C0EB\r
+:102B30007281711103C001968770E9CFF62E66236A\r
+:102B400009F41CC18091B00181608093B001F12C27\r
+:102B500015C1571309C0431307C0611105C0809107\r
+:102B6000B001F8018583C8C04D875E878D859E853D\r
+:102B70006A8B0E943E146A898823D1F16623C1F1D1\r
+:102B80002091B001822F82958F7090E0029774F0AF\r
+:102B90008091AB019091AC0198878F831986DB8679\r
+:102BA000CA862C87CE0107960E94131186E0F80191\r
+:102BB000ABEAB1E001900D928A95E1F70E94AB1467\r
+:102BC0000E949D14FF24F394D9C04D875E878D85A4\r
+:102BD0009E850E942A19292F22952F70223008F0F5\r
+:102BE000C1C09F7009F0BBC0805E883008F4C6C0C9\r
+:102BF000C8010E941311E6CFC816D90608F453C0C5\r
+:102C0000F601E81BF90BCF01883C910508F450C090\r
+:102C1000F12C7C2DD98AC88A89890E945D14EBEA3F\r
+:102C2000F1E086E0DF011D928A95E9F70E949D148C\r
+:102C3000A5C0571314C0431312C0611110C0809176\r
+:102C4000B001F8018583C8010E94131186E0EBEA08\r
+:102C5000F1E0DF011D928A95E9F7FE2C8FC04D87C8\r
+:102C60005E878D859E856A8B0E943E146A898823C3\r
+:102C700009F4BECF662309F4BBCF2091B001822FA7\r
+:102C800082958F7090E002970CF490CF8091AB0109\r
+:102C90009091AC019A8389831B82DD82CC822E8342\r
+:102CA000CE01019681CF809590958C0D9D1DACCF66\r
+:102CB000F62E662309F49CCF571333C0431331C05B\r
+:102CC0002091B00120FD24C0822F82958F70482F63\r
+:102CD00050E041155105E1F0D80115962C93159758\r
+:102CE0004F30510549F08F5F982F9295907F822F3A\r
+:102CF0008F70892B15968C93C8010E94131186E062\r
+:102D0000F801ABEAB1E001900D928A95E1F78ECF20\r
+:102D100086E0F801ABEAB1E001900D928A95E1F707\r
+:102D20002DC04D875E878D859E850E943E14811142\r
+:102D30003DCF8091B00181608093B001C8010E94B5\r
+:102D400013111CC0662309F453CF4D875E878D8510\r
+:102D50009E850E943E14882309F44ACF27CF811113\r
+:102D600043CF0CC0243008F043CF9F7009F43CCF10\r
+:102D7000D80115969C91907F09F036CF8F2D6296E1\r
+:102D80000FB6F894DEBF0FBECDBFDF91CF911F917C\r
+:102D90000F91FF90EF90DF90CF9008951F93CF9306\r
+:102DA000DF93CDB7DEB72C970FB6F894DEBF0FBE1A\r
+:102DB000CDBF4F83588769877A878B879C87CE01E1\r
+:102DC00007960E940615882371F08A859B85892BBA\r
+:102DD00009F441C088858F3F09F065C08F818F3F1E\r
+:102DE00009F061C038C086E0FE013796DE01119619\r
+:102DF00001900D928A95E1F76A857B8561157105D1\r
+:102E000051F1FF81E885EF3F11F4FF3F21F120915F\r
+:102E10007A0130E0C90101968770992740917901C4\r
+:102E200050E08417950709F447C0F983EA837D834E\r
+:102E30006C8396E0929FD001939FB00D1124A5580A\r
+:102E4000BE4FFE01319601900D929A95E1F7809365\r
+:102E50007A010E947C1416E08091790190917A01A8\r
+:102E60008917B9F1189FC001112485589E4F0E94FF\r
+:102E70000615882371F1E09179011E9FF00111245C\r
+:102E8000E558FE4F40815181628173818481958133\r
+:102E90000E946C148091790190E0019687709927C7\r
+:102EA00080937901D9CF4F81588569857A858B8543\r
+:102EB0009C850E946C14CFCF0E943A1410927A0124\r
+:102EC00010927901EBEAF1E086E0DF011D928A952C\r
+:102ED000E9F72C960FB6F894DEBF0FBECDBFDF9199\r
+:102EE000CF911F910895EF92FF920F931F93CF936D\r
+:102EF000DF938C01892B09F46CC0F12CEE24E39450\r
+:102F0000E8012196F8018491843740F4843008F078\r
+:102F100051C0813081F0823019F15BC0853709F4EE\r
+:102F200044C0A8F19CE7980F903708F052C08F7703\r
+:102F30000E94B61041C00E5F1F4FFE01849190E2C7\r
+:102F4000980F983050F48770FE2D01C0FF0F8A95BE\r
+:102F5000EAF78F2F0E940C1A14C00E94EE0F2DC0AA\r
+:102F60000E5F1F4FFE01849190E2980F983060F43D\r
+:102F70008770FE2D01C0FF0F8A95EAF78F2F0E9400\r
+:102F8000121A0E94331A19C00E94B61016C00E5FA2\r
+:102F90001F4FFE01C491CC2381F08FE99FE0019780\r
+:102FA000F1F700C00000C150F6CF0E5F1F4FFE01C9\r
+:102FB000F49003C00E94EE0F8E018F2D882309F438\r
+:102FC0009FCFEFE9FFE03197F1F700C0000081509B\r
+:102FD000F5CFDF91CF911F910F91FF90EF90089562\r
+:102FE00008956093B5017093B6018093B7019093F3\r
+:102FF000B8010C9426140F931F930091B501109102\r
+:10300000B6012091B7013091B801DC01CB01802BD2\r
+:10301000912BA22BB32B8093B5019093B601A09373\r
+:10302000B701B093B8011F910F910C9426140F9320\r
+:103030001F930091B5011091B6012091B701309115\r
+:10304000B801DC01CB0180239123A223B323809319\r
+:10305000B5019093B601A093B701B093B8011F9149\r
+:103060000F910C9426140F931F930091B5011091AA\r
+:10307000B6012091B7013091B801DC01CB01802766\r
+:103080009127A227B3278093B5019093B601A0930F\r
+:10309000B701B093B8011F910F910C9426141092B0\r
+:1030A000B1011092B2011092B3011092B4010C94CC\r
+:1030B000261441E050E060E070E004C0440F551F6A\r
+:1030C000661F771F8A95D2F74093B1015093B201E2\r
+:1030D0006093B3017093B4010C94261441E050E066\r
+:1030E00060E070E004C0440F551F661F771F8A958B\r
+:1030F000D2F78091B1019091B201A091B301B0914A\r
+:10310000B401482B592B6A2B7B2B4093B101509370\r
+:10311000B2016093B3017093B4010C94261441E0A2\r
+:1031200050E060E070E004C0440F551F661F771F39\r
+:103130008A95D2F740955095609570958091B10130\r
+:103140009091B201A091B301B091B40148235923E9\r
+:103150006A237B234093B1015093B2016093B30182\r
+:103160007093B4010C94261441E050E060E070E0EC\r
+:1031700004C0440F551F661F771F8A95D2F78091B0\r
+:10318000B1019091B201A091B301B091B40148276F\r
+:1031900059276A277B274093B1015093B20160936E\r
+:1031A000B3017093B4010C9426140F931F930091F4\r
+:1031B000B1011091B2012091B3013091B401DC0151\r
+:1031C000CB01802B912BA22BB32B8093B101909339\r
+:1031D000B201A093B301B093B4011F910F910C946D\r
+:1031E00026140F931F930091B1011091B201209109\r
+:1031F000B3013091B401DC01CB0180239123A223E0\r
+:10320000B3238093B1019093B201A093B301B09323\r
+:10321000B4011F910F910C9426140F931F930091EA\r
+:10322000B1011091B2012091B3013091B401DC01E0\r
+:10323000CB0180279127A227B3278093B1019093D8\r
+:10324000B201A093B301B093B4011F910F910C94FC\r
+:1032500026140895CF92DF92EF92FF920F931F935F\r
+:10326000CF93DF938C01C090B101D090B201E09078\r
+:10327000B301F090B4018091B5019091B601A09195\r
+:10328000B701B091B801C82AD92AEA2AFB2ACFE1AE\r
+:10329000D0E0D701C6010C2E04C0B695A79597952E\r
+:1032A00087950A94D2F780FF07C0B8018C2F0E943F\r
+:1032B00078068130910531F4219758F7B80180E004\r
+:1032C0000E947806DF91CF911F910F91FF90EF90B0\r
+:1032D000DF90CF90089590910C019923F1F0909197\r
+:1032E0000D019923D1F0982F9695969596959F303C\r
+:1032F00080F5E0910E01F0910F01E90FF11D87704B\r
+:1033000021E030E0A90102C0440F551F8A95E2F781\r
+:10331000CA019181892B8183089520910E013091FA\r
+:103320000F01F90132969FEF40E05191851789F026\r
+:103330009F3F19F4511101C0942F4F5F4E30A9F7F0\r
+:103340009F3F39F0F901E90FF11D97FDFA9582834E\r
+:103350000895089590910C019923F9F090910D0131\r
+:103360009923D9F0982F9695969596959F3028F5A4\r
+:10337000E0910E01F0910F01E90FF11D877021E03E\r
+:1033800030E0A90102C0440F551F8A95E2F7CA0137\r
+:103390008095918189238183089520910E01309138\r
+:1033A0000F01F9013296205F3F4F9081891301C0D0\r
+:1033B00010823196E217F307C1F7089581E090E09B\r
+:1033C000E0910E01F0910F01E80FF91F10820196B4\r
+:1033D00080319105A9F708959091CC01892B8093B4\r
+:1033E000CC01089580959091CC0189238093CC01E4\r
+:1033F00008951092CC0108959091CB01892B809370\r
+:10340000CB01089580959091CB0189238093CB01C6\r
+:1034100008951092CB0108959091CA01892B809351\r
+:10342000CA01089580959091CA0189238093CA01A9\r
+:1034300008951092CA0108958093B90108951092D9\r
+:10344000B901089580910E0190910F01FC01319610\r
+:103450009C01205F3F4F80E0919191118F5FE217B7\r
+:10346000F307D1F70895E0910E01F0910F018091DB\r
+:10347000CC018083E0910E01F0910F019081809149\r
+:10348000CB01892B8083E0910E01F0910F01908197\r
+:103490008091CA01892B80838091B901882361F0D2\r
+:1034A000E0910E01F0910F019081892B80830E94A1\r
+:1034B000221A81111092B90180910E0190910F0191\r
+:1034C0000C94D10ECF92DF92EF92FF926C01EE241A\r
+:1034D000FF24C114D104E104F10421F0C701B601B5\r
+:1034E00020E101C020E0C72ED82EE92EFF24C11410\r
+:1034F000D104E104F10419F0285FC701B6016B01A2\r
+:103500007C0154E0F694E794D794C7945A95D1F788\r
+:10351000C114D104E104F10419F02C5FC701B60114\r
+:103520006B017C0142E0F694E794D794C7944A95E6\r
+:10353000D1F7C114D104E104F10419F02E5FC701E1\r
+:10354000B601DC01CB01B695A79597958795892B98\r
+:103550008A2B8B2B09F02F5F822FFF90EF90DF904B\r
+:10356000CF9008958091E501843029F120E488E12D\r
+:1035700090E00FB6F894A895809360000FBE20935A\r
+:10358000600080E00E94BA0783B7817F846083BFB8\r
+:1035900083B7816083BF7894889583B78E7F83BF1C\r
+:1035A0000FB6F894A89580916000886180936000C0\r
+:1035B000109260000FBE089508950C94DC1ACF930A\r
+:1035C0000E94DD1A0E9497040E94DC1AC0E08C2F32\r
+:1035D0000E948D05811104C0CF5FCE30C1F701C0BC\r
+:1035E00081E0CF9108950E943A140E94C50E0C9478\r
+:1035F000BA0782E084BD93E095BD9AEF97BD8093B2\r
+:103600006E0008952FB7F8948091CE019091CF016C\r
+:10361000A091D001B091D1012FBF0895CF92DF9238\r
+:10362000EF92FF920F931F932FB7F8944091CE0122\r
+:103630005091CF016091D0017091D1012FBF6A01EB\r
+:103640007B01EE24FF248C0120E030E0C016D1067F\r
+:10365000E206F30610F4415051099A01281B390B78\r
+:10366000C9011F910F91FF90EF90DF90CF900895C7\r
+:103670001F920F920FB60F9211248F939F93AF93C7\r
+:10368000BF938091CE019091CF01A091D001B091D4\r
+:10369000D1010196A11DB11D8093CE019093CF0160\r
+:1036A000A093D001B093D101BF91AF919F918F9121\r
+:1036B0000F900FBE0F901F9018950E94BD0BF894AD\r
+:1036C0002FEF87EA91E6215080409040E1F700C05B\r
+:1036D000000087E090EBDC018093EE019093EF0116\r
+:1036E000A093F001B093F1019CE088E10FB6F8944B\r
+:1036F000A895809360000FBE90936000FFCFEF927B\r
+:10370000FF920F931F93CF93DF93D82FC0E08C2F9E\r
+:103710000E948D0500E010E0E82EF12CC701002E7C\r
+:1037200002C0959587950A94E2F780FD06C00F5F69\r
+:103730001F4F0630110591F709C0602F7C2F80E0E4\r
+:103740000E9455068D13F3CF81E004C0CF5FCE30C9\r
+:10375000F1F680E0DF91CF911F910F91FF90EF90F4\r
+:103760000895CF93C82F8CE20E947F1B882321F0FD\r
+:103770008C2FCF910C947F1B80E0CF910895CF9335\r
+:103780000E94061D811102C00E94EC1CC5E6C150BA\r
+:1037900049F00E9497048FE39CE90197F1F700C07C\r
+:1037A0000000F5CF89E20E94B11B811113C18AE2AA\r
+:1037B0000E94B11B81110E94EC1C85E00E94B11B8C\r
+:1037C00081110E945D1B0E94111D8093CD0187E035\r
+:1037D0000E94B11B8823A9F18BE10E94B11B8823B1\r
+:1037E00051F08091CD0181FB222720F991E09227B1\r
+:1037F00090FB81F90EC08EE00E94B11B882361F01E\r
+:103800008091CD0182FB222720F991E0922790FB45\r
+:1038100082F98093CD0115C080E10E94B11B909187\r
+:10382000CD01882341F093FB222720F981E08227F4\r
+:1038300080FB93F904C0892F809580FB90F99093C9\r
+:10384000CD018091CD010E94151D0E94231D809302\r
+:10385000DF0180EE0E94B11B882341F08091DF01DF\r
+:10386000982F909590FB80F98093DF0189E30E9467\r
+:10387000B11B882359F08091DF0181FB222720F9B9\r
+:1038800091E0922790FB81F98093DF0182EE0E9404\r
+:10389000B11B882359F08091DF0182FB222720F998\r
+:1038A00091E0922790FB82F98093DF0186EE0E94DF\r
+:1038B000B11B882359F08091DF0183FB222720F977\r
+:1038C00091E0922790FB83F98093DF0183EE0E94C1\r
+:1038D000B11B882359F08091DF0184FB222720F956\r
+:1038E00091E0922790FB84F98093DF0185E30E94A9\r
+:1038F000B11B882359F08091DF0185FB222720F935\r
+:1039000091E0922790FB85F98093DF0181E30E948B\r
+:10391000B11B882359F08091DF0186FB222720F913\r
+:1039200091E0922790FB86F98093DF0181E10E946C\r
+:10393000B11B882359F08091DF0187FB222720F9F2\r
+:1039400091E0922790FB87F98093DF018091DF015E\r
+:103950000E94271D8091DF0187FB882780F98093D3\r
+:103960000D0187E20E94B11BC82F8EE10E94B11B9E\r
+:103970008111C2608FE10E94B11B8111C46080E29D\r
+:103980000E94B11B8111C86081E20E94B11B8111AC\r
+:10399000C06182E20E94B11B8111C06283E20E9479\r
+:1039A000B11B8111C06484E20E94B11B882311F015\r
+:1039B000C06802C0CC2329F08C2F0E941E1D6C2FE2\r
+:1039C00003C00E941A1D682F70E080E090E0CF9144\r
+:1039D0000C94F117CF9108956DEE7EEF80E090E0AA\r
+:1039E0000E94662360E082E090E00E94582360E03D\r
+:1039F00083E090E00E94582360E084E090E00E9421\r
+:103A0000582360E085E090E00C94582380E090E03B\r
+:103A10000E94522321E08D3E9E4F09F020E0822F2C\r
+:103A2000089582E090E00C944A23682F82E090E0B1\r
+:103A30000C94582383E090E00C944A23682F83E091\r
+:103A400090E00C94582384E090E00C944A23682F73\r
+:103A500084E090E00C9458238091D40180FF0BC047\r
+:103A60006091130185E0689FB001112475956795F9\r
+:103A7000759567952BC081FF09C06091130185E0A2\r
+:103A8000689FB00111247595679520C082FF07C01B\r
+:103A90006091130185E0689FB001112417C09091D7\r
+:103AA000D5019923D1F060911201961788F72091E2\r
+:103AB000130185E0289F90011124929FA001939FFC\r
+:103AC000500D112470E0CA010E941C23603871055A\r
+:103AD00040F46115710519F406C065E070E0862FA9\r
+:103AE00008958FE7089581E008958091D40180FFC3\r
+:103AF00008C06091110170E075956795759567959F\r
+:103B000021C081FF06C06091110170E07595679535\r
+:103B100019C082FF04C06091110170E010C0909143\r
+:103B2000D501992399F0609110019617A0F7809123\r
+:103B30001101899FC001112470E00E941C2360388C\r
+:103B4000710540F46115710519F406C061E070E07B\r
+:103B5000862F08958FE7089581E00895803F21F42E\r
+:103B60000E942C1D819504C0813F29F40E942C1DC8\r
+:103B70008093D8010895823F21F40E942C1D8195E5\r
+:103B800004C0833F29F40E942C1D8093D70108951F\r
+:103B9000893F19F40E94751D05C08A3F31F40E94C7\r
+:103BA000751D81958093D90108958B3F21F40E9462\r
+:103BB000751D819504C08C3F29F40E94751D80936A\r
+:103BC000DA010895843F21F48091D601816017C005\r
+:103BD000853F21F48091D601826011C0863F21F497\r
+:103BE0008091D60184600BC0873F21F48091D6017B\r
+:103BF000886005C0883F31F48091D6018061809350\r
+:103C0000D60108958D3F21F48091D40181600BC0CD\r
+:103C10008E3F21F48091D401826005C08F3F29F44A\r
+:103C20008091D40184608093D4010895803F39F459\r
+:103C30008091D80187FF6CC01092D80169C0813F84\r
+:103C400029F48091D8011816BCF362C09091D70175\r
+:103C5000823F29F497FF5CC01092D70159C0833F7F\r
+:103C600019F41916CCF354C0893F41F48091D9015D\r
+:103C700018160CF04DC01092D9014AC08A3F29F4A1\r
+:103C80008091D90187FF44C0F6CF8B3F39F48091F2\r
+:103C9000DA0187FF3DC01092DA013AC08C3F29F467\r
+:103CA0008091DA011816BCF333C0843F21F480916F\r
+:103CB000D6018E7F17C0853F21F48091D6018D7F7C\r
+:103CC00011C0863F21F48091D6018B7F0BC0873FC6\r
+:103CD00021F48091D601877F05C0883F31F480911F\r
+:103CE000D6018F7E8093D60113C08D3F21F4809141\r
+:103CF000D4018E7F0BC08E3F21F48091D4018D7F43\r
+:103D000005C08F3F29F48091D4018B7F8093D4012B\r
+:103D10008091D70181110EC08091D80181110AC014\r
+:103D20008091D901811106C08091DA01811102C010\r
+:103D30001092D501089586ED91E00E94DC0E0E945C\r
+:103D4000021B9093D3018093D20108951F93CF93C8\r
+:103D5000DF938091D2019091D3010E940E1BAC01A0\r
+:103D60009091D501992321F02091140130E006C0F3\r
+:103D7000209115018AE0289F9001112442175307D2\r
+:103D800008F485C08091D701C091D801D091D901A4\r
+:103D90001091DA01811107C0C11175C0D11173C032\r
+:103DA000111171C074C09F3F19F09F5F9093D501AE\r
+:103DB000181624F40E942C1D8093D7018091D701FE\r
+:103DC00087FF05C00E942C1D81958093D7011C168A\r
+:103DD00024F40E942C1D8093D8018091D80187FF84\r
+:103DE00005C00E942C1D81958093D8016091D70158\r
+:103DF000662331F1C091D801CC2311F1062E000CBD\r
+:103E0000770B880B990B0E94232223E333E343E3D0\r
+:103E10005FE30E9487220E94EB216093D7016C2F01\r
+:103E2000CC0F770B880B990B0E94232223E333E3FB\r
+:103E300043E35FE30E9487220E94EB216093D80155\r
+:103E40001D1624F40E94751D8093D9018091D9011B\r
+:103E500087FF05C00E94751D81958093D9011116B9\r
+:103E600024F40E94751D8093DA018091DA0187FFA6\r
+:103E700005C00E94751D81958093DA01DF91CF9175\r
+:103E80001F910C949B1E9F3F09F08FCFA0CFDF9115\r
+:103E9000CF911F910895E6EDF1E085E0DF011D92DD\r
+:103EA0008A95E9F71092D5011092D40108958330D4\r
+:103EB00081F128F4813059F08230D1F008958530B5\r
+:103EC00009F449C0B8F1863009F456C008958091CC\r
+:103ED0001501262F30E0280F311D2F3F310524F426\r
+:103EE000680F6093150108958FEF80931501089571\r
+:103EF00080911401262F30E0280F311D2F3F31050E\r
+:103F000024F4680F6093140108958FEF80931401D7\r
+:103F1000089580911301262F30E0280F311D2F3F87\r
+:103F2000310524F4680F6093130108958FEF809397\r
+:103F30001301089580911201262F30E0280F311DC2\r
+:103F40002F3F310524F4680F6093120108958FEF1D\r
+:103F500080931201089580911101262F30E0280FDF\r
+:103F6000311D2F3F310524F4680F6093110108952E\r
+:103F70008FEF80931101089580911001262F30E07A\r
+:103F8000280F311D2F3F310524F4680F6093100175\r
+:103F900008958FEF809310010895833011F128F474\r
+:103FA000813049F0823091F00895853081F120F11F\r
+:103FB0008630C1F1089580911501681720F4861BA1\r
+:103FC00080931501089510921501089580911401B0\r
+:103FD000681720F4861B8093140108951092140131\r
+:103FE000089580911301681720F4861B80931301B4\r
+:103FF000089510921301089580911201681720F41A\r
+:10400000861B8093120108951092120108958091E9\r
+:104010001101681720F4861B8093110108951092F6\r
+:104020001101089580911001681720F4861B809378\r
+:10403000100108951092100108950F931F938D3170\r
+:1040400009F46AC008F03FC08E3009F484C0C0F49F\r
+:10405000873009F46DC068F4863009F0B5C08091EE\r
+:10406000CD01817F8E7F8093CD0181E08093DC0143\r
+:10407000ACC0883009F457C08B3009F46AC0A4C0C2\r
+:10408000863109F466C078F4803109F477C0813153\r
+:1040900009F09AC00E943A1490910D0181E089279D\r
+:1040A00080930D0156C0893109F453C08B3109F05A\r
+:1040B0008BC08091CD0181FB222720F991E09227CE\r
+:1040C00090FB81F951C0853309F475C048F48732FB\r
+:1040D00009F471C008F45EC0893209F46CC074C080\r
+:1040E000833430F48A3308F053C0883391F16CC0C4\r
+:1040F000833409F460C0883409F066C00E943A1421\r
+:104100000FEF13ED20E3015010402040E1F700C015\r
+:1041100000000E945D1B1DC00E94A5210E94C50ECB\r
+:104120000E94BA0716C00E94111D0E94231D11C0D3\r
+:104130009091CD01892F8095817080FB90F929F0B5\r
+:10414000966098609093CD0140C0997F977F90933F\r
+:10415000CD0181E03AC08091CD0182FB222720F978\r
+:1041600091E0922790FB82F98093CD01992389F306\r
+:104170008091CD0181608093CD01EBCF8091CD0105\r
+:1041800083FB222720F991E0922790FB83F9ECCF63\r
+:10419000895301C08D5141E050E060E070E08A0138\r
+:1041A0009B0104C0000F111F221F331F8A95D2F7F5\r
+:1041B000C901B80104C061E070E080E090E00E94B5\r
+:1041C000F1170E943A14C5CF80E01F910F91089516\r
+:1041D00080E008950C94E820CF93C82F8091DC01F3\r
+:1041E000813079F018F08230E9F187C0E0910E015A\r
+:1041F000F0910F018081813169F0823209F07FC036\r
+:1042000009C0E0910E01F0910F018081813111F020\r
+:10421000823261F48C2F0E94EA20811104C08C2F1D\r
+:104220000E941D201DC081E090E01AC08C2F0E94CA\r
+:10423000E820811114C0C43179F048F4CB3079F012\r
+:10424000C03109F060C082E08093DC0108C0C9324F\r
+:1042500019F0C83321F057C01092DC0154C081E03E\r
+:10426000817053C0C93289F118F5C43171F1A8F4D5\r
+:10427000C73009F046C08AE08093150194E190931D\r
+:10428000140193E0909313018093120188E08093CE\r
+:10429000110188E28093100134C0CE51C63088F5F8\r
+:1042A000EC2FF0E0E65DFE4F80818093DB0129C0BA\r
+:1042B000CE34E9F020F4CB3421F56AE013C0C135E7\r
+:1042C00079F0C235F1F461E00DC08091DB01882303\r
+:1042D00019F01092DB0115C081E08093DC0115C05C\r
+:1042E00061E006C08091DB010E94571F0AC06AE0AE\r
+:1042F0008091DB010E94CD1F04C01092DC0180E0A0\r
+:1043000004C081E002C080E0ABCFCF910895E1E826\r
+:10431000F0E08081886080838081816080838FB7B6\r
+:10432000F89493E09093890090ED909388008FBF6C\r
+:104330000895EFE6F0E08081826080830895EFE6E3\r
+:10434000F0E080818D7F80830895EFE6F0E090813A\r
+:1043500082E08927808308951F920F920FB60F92F3\r
+:1043600011242F933F934F935F936F937F938F937A\r
+:104370009F93AF93BF93EF93FF938091DD01909153\r
+:10438000DE0101969093DE018093DD01811103C06F\r
+:1043900082E00E94BA07E091DE01E695E695F0E042\r
+:1043A000E75BFA4FE4918091DD018E1303C080E05A\r
+:1043B0000E94BA07FF91EF91BF91AF919F918F91AA\r
+:1043C0007F916F915F914F913F912F910F900FBE11\r
+:1043D0000F901F9018950E94F2216894B1110C94CF\r
+:1043E000812208950E94662288F09F5798F0B92F85\r
+:1043F0009927B751B0F0E1F0660F771F881F991F1A\r
+:104400001AF0BA95C9F714C0B13091F00E94802219\r
+:10441000B1E008950C948022672F782F8827B85F29\r
+:1044200039F0B93FCCF3869577956795B395D9F771\r
+:104430003EF490958095709561957F4F8F4F9F4F7B\r
+:104440000895E89409C097FB3EF490958095709587\r
+:1044500061957F4F8F4F9F4F9923A9F0F92F96E9D0\r
+:10446000BB279395F695879577956795B795F11145\r
+:10447000F8CFFAF4BB0F11F460FF1BC06F5F7F4FE2\r
+:104480008F4F9F4F16C0882311F096E911C07723F4\r
+:1044900021F09EE8872F762F05C0662371F096E8FD\r
+:1044A000862F70E060E02AF09A95660F771F881FCC\r
+:1044B000DAF7880F9695879597F9089557FD9058E4\r
+:1044C000440F551F59F05F3F71F04795880F97FBD8\r
+:1044D000991F61F09F3F79F0879508951216130692\r
+:1044E0001406551FF2CF4695F1DF08C016161706C1\r
+:1044F0001806991FF1CF86957105610508940895F6\r
+:10450000E894BB2766277727CB0197F908950E9487\r
+:104510009A220C940B230E94FD2238F00E9404235F\r
+:1045200020F0952311F00C94F4220C94FA2211241B\r
+:104530000C9481220E945E2270F3959FC1F3950F27\r
+:1045400050E0551F629FF001729FBB27F00DB11D17\r
+:10455000639FAA27F00DB11DAA1F649F6627B00DA7\r
+:10456000A11D661F829F2227B00DA11D621F739F90\r
+:10457000B00DA11D621F839FA00D611D221F749F9E\r
+:104580003327A00D611D231F849F600D211D822FE5\r
+:10459000762F6A2F11249F5750409AF0F1F088230C\r
+:1045A0004AF0EE0FFF1FBB1F661F771F881F915039\r
+:1045B0005040A9F79E3F510580F00C94F4220C94D2\r
+:1045C00081225F3FE4F3983ED4F386957795679513\r
+:1045D000B795F795E7959F5FC1F7FE2B880F911D63\r
+:1045E0009695879597F9089597F99F6780E870E009\r
+:1045F00060E008959FEF80EC089500240A94161659\r
+:10460000170618060906089500240A9412161306C0\r
+:10461000140605060895092E0394000C11F488234E\r
+:1046200052F0BB0F40F4BF2B11F460FF04C06F5F6A\r
+:104630007F4F8F4F9F4F089597FB072E16F40094DE\r
+:1046400007D077FD09D00E94362307FC05D03EF441\r
+:10465000909581959F4F0895709561957F4F08952E\r
+:10466000EE0FFF1F0590F491E02D0994AA1BBB1BD0\r
+:1046700051E107C0AA1FBB1FA617B70710F0A61B62\r
+:10468000B70B881F991F5A95A9F780959095BC0183\r
+:10469000CD010895F999FECF92BD81BDF89A992771\r
+:1046A00080B50895A8E1B0E042E050E00C946D239D\r
+:1046B000262FF999FECF1FBA92BD81BD20BD0FB63E\r
+:1046C000F894FA9AF99A0FBE019608950E94582319\r
+:1046D000272F0C945923DC01CB01FC01F999FECF63\r
+:1046E00006C0F2BDE1BDF89A319600B40D9241507A\r
+:0A46F0005040B8F70895F894FFCF8A\r
+:1046FA002002BC074C082708F307BF070101BA01CB\r
+:10470A0028080A03140A3F4D36390A05BD048704EE\r
+:10471A004E04E103FA0313042C0401020304050600\r
+:04472A000708090073\r
+:00000001FF\r
diff --git a/keyboard/ergodox_ez/keymaps/alexjj/readme.md b/keyboard/ergodox_ez/keymaps/alexjj/readme.md
new file mode 100644 (file)
index 0000000..239e32d
--- /dev/null
@@ -0,0 +1,179 @@
+Englishman in New York
+===========================
+
+:microphone: :tea:
+
+About
+------
+
+After using the massdrop configurator to get the basics, I wanted to add a
+little extra to my ergodox. Notably the Hyper hotkey, the press and hold,
+and a way to have my beloved £ :pound: symbol available<sup>[1](#unicode)</sup>. Why not switch to a GB
+layout? Well the computers I use are US keymap'd and I can't always change
+that. Plus I've got used to 2/@ and 3/# and moving to the ergodox was hard
+enough. :sweat_smile:
+
+I started from the default and edited from there as I needed. It's somewhat
+similar to a regular layout, particularly R1 and shift/controls. I ended up
+with a few keys that were blank, so I'm testing out some shortcuts. Alt+F4 for
+quitting things in Windows, is one example, but I felt it was better placed on 
+the 1st layer - in case of fat fingers.
+
+Layout
+-------
+
+![Layout](rl-layout.jpg "Isn't it lovely")
+
+### Base Layer
+
+```
+,--------------------------------------------------.           ,--------------------------------------------------.
+|   ESC  |  1!  |  2@  |  3#  |  4$  |  5%  |  6^  |           |  7&  |  8*  |  9(  |  0)  |  -_  |  +=  |  BkSp  |
+|--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+| Tab    |   Q  |   W  |   E  |   R  |   T  |  {   |           |   }  |   Y  |   U  |   I  |   O  |   P  |  |\    |
+|--------+------+------+------+------+------|  [   |           |   ]  |------+------+------+------+------+--------|
+| Win    |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |  :;  |  '"    |
+|--------+------+------+------+------+------| Home |           | End  |------+------+------+------+------+--------|
+| LShift |Z/Alt |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  | Alt  | RShift |
+`--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+  |LCtrl | COPY | PASTE| Left | Right|                                       | Down |  Up  |Hyper |  `~  | RCtrl |
+  `----------------------------------'                                       `----------------------------------'
+                                       ,-------------.       ,-------------.
+  Hyper = Ctrl+Super+Alt+Shift         | ~L3  |  F5  |       |  F2  | ~L2  |
+                                ,------|------|------|       |------+------+------.
+                                |      |      | PgUp |       | Ins  |      |      |
+                                | Enter| BkSp |------|       |------| ~L1  |Space |
+                                |      |      | PgDn |       | Del  |      |      |
+                                `--------------------'       `--------------------'
+``` 
+
+### Symbol Layer
+
+```
+,--------------------------------------------------.           ,--------------------------------------------------.
+|        |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |           |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |PrintScr|
+|--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+|        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |        |
+|--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+|        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
+|--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+|        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
+`--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+  |      |   £  |      |      |      |                                       |      |    . |   0  |   =  |Alt+F4|
+  `----------------------------------'                                       `----------------------------------'
+             ↑                         ,-------------.       ,-------------.
+          THERE!                       |      |      |       |      |      |
+                                ,------|------|------|       |------+------+------.
+   CAD = Ctrl + Alt + Delete    |      |      |      |       |      |      |      |
+                                |      |      |------|       |------|      |      |
+                                |      |      |      |       | CAD  |      |      |
+                                `--------------------'       `--------------------'
+```
+### Media Layer
+
+Not touched this, not used either.
+
+```
+,--------------------------------------------------.           ,--------------------------------------------------.
+| TEENSY |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+|--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+|        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
+|--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+|        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |      |      |      |      |  Play  |
+|--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+|        |      |      |      |      |      |      |           |      |      |      | Prev | Next |      |        |
+`--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+  |      |      |      | Lclk | Rclk |                                       |VolDn |VolUp | Mute |      |      |
+  `----------------------------------'                                       `----------------------------------'
+                                       ,-------------.       ,-------------.
+                                       |      |      |       |      |      |
+                                ,------|------|------|       |------+------+------.
+                                |      |      |      |       |      |      |Brwser|
+                                |      |      |------|       |------|      |Back  |
+                                |      |      |      |       |      |      |      |
+                                `--------------------'       `--------------------'
+```
+### Unicode Layer
+
+Used to enter/test unicode input on Windows. All numbers are numpad keys.
+
+```
+,--------------------------------------------------.           ,--------------------------------------------------.
+|  Alt   |  1   |   2  |  3   |  4   |   5  |  6   |           |   7  |  8   |   9  |  0   |  +   |  +   |        |
+|--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+|  Alt   |      |      |   E  |      |      |      |           |      |      |   7  |   8  |  9   |  +   |        |
+|--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+|  Alt   |   A  |      |   D  |   F  |      |------|           |------|      |   4  |   5  |  6   |  +   |        |
+|--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+|  Alt   |      |      |   C  |      |   B  |      |           |      |      |   1  |   2  |  3   |  +   |        |
+`--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+  | Alt  |  Alt | Alt  |      |      |                                       |   0  |   0  |  0   |  +   |       |
+  `----------------------------------'                                       `----------------------------------'
+                                       ,-------------.       ,-------------.
+     WINDOWS ONLY SETUP!!              | ~L3  |      |       |      |      |
+                                ,------|------|------|       |------+------+------.
+                                |      |      |      |       |      |      |      |
+                                |  Alt |  Alt |------|       |------|  Alt | Alt  |
+                                |      |      |      |       |      |      |      |
+                                `--------------------'       `--------------------'
+```
+
+
+Usage
+------
+
+~L1 / L2 / L3 will momentarily switch to a layer if held and another key is pressed.
+If pressed and released will remain on layer until pressed again.
+
+### Unicode
+
+This layout is for Windows only. To enter a character Press and Hold Alt, type + and hex code then release Alt.
+
+Changelog
+-----------
+
+### [0.2.1] - 2016-04-05
+
+* Changed £ to alt code in Windows. Windows sucks at unicode.
+
+### [0.2.0] - 2016-03-27
+
+* Added unicode layer
+* Moved Copy/Paste to left hand side
+* Switched Enter and Space (again)
+* Added L3 (unicode layer) toggle
+* Removed Press and Hold for Alt on right hand size (/)
+* Swapped Volume Up/Down to match arrows
+* Tried fixing £ macro
+* Removed * in the matrix function things (upstream change)
+
+### [0.1.1] - 2016-03-23
+
+* Changed £ input to a macro
+
+
+### [0.1.0] - 2016-03-22
+
+After actually using the keyboard, I've made some changes:
+
+* Swapped Enter and Space
+* Moved backspace to thumb keys (top right still remains)
+* Added Ctrl+Alt+Delete
+* Added Teensy Reset on 2nd layer
+* Switched Up and Down
+* Changed copy/paste to be Ctrl+c and Ctrl+v as KC_COPY/PASTE didn't work (in Windows)
+* Moved ~L2 to replace +L1 after learning how the function works (notes above)
+* Hopefully fixed GBP symbol (unicode enabled in MakeFile)
+
+### [0.0.1] - 2016-03-21
+
+First version
+
+
+Issues
+-------
+
+Space for feedback and notes for future improvements
+
+----
+<sup><a name="unicode">1</a></sup>: For Windows only, and you have to edit the [registry](https://en.wikipedia.org/wiki/Unicode_input#Hexadecimal_code_input).
diff --git a/keyboard/ergodox_ez/keymaps/alexjj/rl-layout.jpg b/keyboard/ergodox_ez/keymaps/alexjj/rl-layout.jpg
new file mode 100644 (file)
index 0000000..e4e92bf
Binary files /dev/null and b/keyboard/ergodox_ez/keymaps/alexjj/rl-layout.jpg differ
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;
+    }
+
+};
diff --git a/keyboard/ergodox_ez/keymaps/german-manuneo/compile_keymap.py b/keyboard/ergodox_ez/keymaps/german-manuneo/compile_keymap.py
new file mode 100644 (file)
index 0000000..7076a6e
--- /dev/null
@@ -0,0 +1,710 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+"""Compiler for keymap.c files
+
+This scrip will generate a keymap.c file from a simple
+markdown file with a specific layout.
+
+Usage:
+    python compile_keymap.py INPUT_PATH [OUTPUT_PATH]
+"""
+from __future__ import division
+from __future__ import print_function
+from __future__ import absolute_import
+from __future__ import unicode_literals
+
+import os
+import io
+import re
+import sys
+import json
+import unicodedata
+import collections
+import itertools as it
+
+PY2 = sys.version_info.major == 2
+
+if PY2:
+    chr = unichr
+
+
+KEYBOARD_LAYOUTS = {
+    # These map positions in the parsed layout to
+    # positions in the KEYMAP MATRIX
+    'ergodox_ez': [
+        [ 0,  1,  2,  3,  4,  5,  6],  [38, 39, 40, 41, 42, 43, 44],
+        [ 7,  8,  9, 10, 11, 12, 13],  [45, 46, 47, 48, 49, 50, 51],
+        [14, 15, 16, 17, 18, 19    ],  [    52, 53, 54, 55, 56, 57],
+        [20, 21, 22, 23, 24, 25, 26],  [58, 59, 60, 61, 62, 63, 64],
+        [27, 28, 29, 30, 31        ],  [        65, 66, 67, 68, 69],
+        [                    32, 33],  [70, 71                    ],
+        [                        34],  [72                        ],
+        [                35, 36, 37],  [73, 74, 75                ],
+    ]
+}
+
+ROW_INDENTS = {
+    'ergodox_ez': [0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 5, 0, 6, 0, 4, 0]
+}
+
+BLANK_LAYOUTS = [
+# Compact Layout
+"""
+.------------------------------------.------------------------------------.
+|     |    |    |    |    |    |     |     |    |    |    |    |    |     |
+!-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
+|     |    |    |    |    |    |     |     |    |    |    |    |    |     |
+!-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+|     |    |    |    |    |    |-----!-----!    |    |    |    |    |     |
+!-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+|     |    |    |    |    |    |     |     |    |    |    |    |    |     |
+'-----+----+----+----+----+----------'----------+----+----+----+----+-----'
+ |    |    |    |    |    |                     !    |    |    |    |    |
+ '------------------------'                     '------------------------'
+                        .-----------. .-----------.
+                        |     |     | !     |     |
+                  .-----+-----+-----! !-----+-----+-----.
+                  !     !     |     | !     |     !     !
+                  !     !     !-----! !-----!     !     !
+                  |     |     |     | !     |     |     |
+                  '-----------------' '-----------------'
+""",
+
+# Wide Layout
+"""
+.---------------------------------------------. .---------------------------------------------.
+|       |     |     |     |     |     |       | !       |     |     |     |     |     |       |
+!-------+-----+-----+-----+-----+-------------! !-------+-----+-----+-----+-----+-----+-------!
+|       |     |     |     |     |     |       | !       |     |     |     |     |     |       |
+!-------+-----+-----+-----x-----x-----!       ! !       !-----x-----x-----+-----+-----+-------!
+|       |     |     |     |     |     |-------! !-------!     |     |     |     |     |       |
+!-------+-----+-----+-----x-----x-----!       ! !       !-----x-----x-----+-----+-----+-------!
+|       |     |     |     |     |     |       | !       |     |     |     |     |     |       |
+'-------+-----+-----+-----+-----+-------------' '-------------+-----+-----+-----+-----+-------'
+ |      |     |     |     |     |                             !     |     |     |     |      |
+ '------------------------------'                             '------------------------------'
+                              .---------------. .---------------.
+                              |       |       | !       |       |
+                      .-------+-------+-------! !-------+-------+-------.
+                      !       !       |       | !       |       !       !
+                      !       !       !-------! !-------!       !       !
+                      |       |       |       | !       |       |       |
+                      '-----------------------' '-----------------------'
+""",
+]
+
+
+DEFAULT_CONFIG = {
+    "keymaps_includes": [
+        "keymap_common.h",
+    ],
+    'filler': "-+.'!:x",
+    'separator': "|",
+    'default_key_prefix': ["KC_"],
+}
+
+
+SECTIONS = [
+    'layout_config',
+    'layers',
+]
+
+
+#       Markdown Parsing
+
+ONELINE_COMMENT_RE = re.compile(r"""
+    ^                       # comment must be at the start of the line
+    \s*                     # arbitrary whitespace
+    //                      # start of the comment
+    (.*)                    # the comment
+    $                       # until the end of line
+""", re.MULTILINE | re.VERBOSE
+)
+
+INLINE_COMMENT_RE = re.compile(r"""
+    ([\,\"\[\]\{\}\d])      # anythig that might end a expression
+    \s+                     # comment must be preceded by whitespace
+    //                      # start of the comment
+    \s                      # and succeded by whitespace
+    (?:[^\"\]\}\{\[]*)      # the comment (except things which might be json)
+    $                       # until the end of line
+""", re.MULTILINE | re.VERBOSE)
+
+TRAILING_COMMA_RE = re.compile(r"""
+    ,                       # the comma
+    (?:\s*)                 # arbitrary whitespace
+    $                       # only works if the trailing comma is followed by newline
+    (\s*)                   # arbitrary whitespace
+    ([\]\}])                # end of an array or object
+""", re.MULTILINE | re.VERBOSE)
+
+
+def loads(raw_data):
+    if isinstance(raw_data, bytes):
+        raw_data = raw_data.decode('utf-8')
+
+    raw_data = ONELINE_COMMENT_RE.sub(r"", raw_data)
+    raw_data = INLINE_COMMENT_RE.sub(r"\1", raw_data)
+    raw_data = TRAILING_COMMA_RE.sub(r"\1\2", raw_data)
+    return json.loads(raw_data)
+
+
+def parse_config(path):
+    def reset_section():
+        section.update({
+            'name': section.get('name', ""),
+            'sub_name': "",
+            'start_line': -1,
+            'end_line': -1,
+            'code_lines': [],
+        })
+
+    def start_section(line_index, line):
+        end_section()
+        if line.startswith("# "):
+            name = line[2:]
+        elif line.startswith("## "):
+            name = line[3:]
+        else:
+            name = ""
+
+        name = name.strip().replace(" ", "_").lower()
+        if name in SECTIONS:
+            section['name'] = name
+        else:
+            section['sub_name'] = name
+        section['start_line'] = line_index
+
+    def end_section():
+        if section['start_line'] >= 0:
+            if section['name'] == 'layout_config':
+                config.update(loads("\n".join(
+                    section['code_lines']
+                )))
+            elif section['sub_name'].startswith('layer'):
+                layer_name = section['sub_name']
+                config['layer_lines'][layer_name] = section['code_lines']
+
+        reset_section()
+
+    def amend_section(line_index, line):
+        section['end_line'] = line_index
+        section['code_lines'].append(line)
+
+    config = DEFAULT_CONFIG.copy()
+    config.update({
+        'layer_lines': collections.OrderedDict(),
+        'macro_ids': {'UM'},
+        'unicode_macros': {},
+    })
+
+    section = {}
+    reset_section()
+
+    with io.open(path, encoding="utf-8") as fh:
+        for i, line in enumerate(fh):
+            if line.startswith("#"):
+                start_section(i, line)
+            elif line.startswith("    "):
+                amend_section(i, line[4:])
+            else:
+                # TODO: maybe parse description
+                pass
+
+    end_section()
+    assert 'layout' in config
+    return config
+
+#       header file parsing
+
+IF0_RE = re.compile(r"""
+    ^
+    #if 0
+    $.*?
+    #endif
+""", re.MULTILINE | re.DOTALL | re.VERBOSE)
+
+
+COMMENT_RE = re.compile(r"""
+    /\*
+    .*?
+    \*/"
+""", re.MULTILINE | re.DOTALL | re.VERBOSE)
+
+
+def read_header_file(path):
+    with io.open(path, encoding="utf-8") as fh:
+        data = fh.read()
+    data, _ = COMMENT_RE.subn("", data)
+    data, _ = IF0_RE.subn("", data)
+    return data
+
+
+def regex_partial(re_str_fmt, flags):
+    def partial(*args, **kwargs):
+        re_str = re_str_fmt.format(*args, **kwargs)
+        return re.compile(re_str, flags)
+    return partial
+
+
+KEYDEF_REP = regex_partial(r"""
+    #define
+    \s
+    (
+        (?:{})          # the prefixes
+        (?:\w+)         # the key name
+    )                   # capture group end
+""", re.MULTILINE | re.DOTALL | re.VERBOSE)
+
+
+ENUM_RE = re.compile(r"""
+    (
+        enum
+        \s\w+\s
+        \{
+        .*?             # the enum content
+        \}
+        ;
+    )                   # capture group end
+""", re.MULTILINE | re.DOTALL | re.VERBOSE)
+
+
+ENUM_KEY_REP = regex_partial(r"""
+    (
+        {}              # the prefixes
+        \w+             # the key name
+    )                   # capture group end
+""", re.MULTILINE | re.DOTALL | re.VERBOSE)
+
+
+def parse_keydefs(config, data):
+    prefix_options = "|".join(config['key_prefixes'])
+    keydef_re = KEYDEF_REP(prefix_options)
+    enum_key_re = ENUM_KEY_REP(prefix_options)
+    for match in keydef_re.finditer(data):
+        yield match.groups()[0]
+
+    for enum_match in ENUM_RE.finditer(data):
+        enum = enum_match.groups()[0]
+        for key_match in enum_key_re.finditer(enum):
+            yield key_match.groups()[0]
+
+
+def parse_valid_keys(config, out_path):
+    basepath = os.path.abspath(os.path.join(os.path.dirname(out_path)))
+    dirpaths = []
+    subpaths = []
+    while len(subpaths) < 6:
+        path = os.path.join(basepath, *subpaths)
+        dirpaths.append(path)
+        dirpaths.append(os.path.join(path, "tmk_core", "common"))
+        dirpaths.append(os.path.join(path, "quantum"))
+        subpaths.append('..')
+
+    includes = set(config['keymaps_includes'])
+    includes.add("keycode.h")
+
+    valid_keycodes = set()
+    for dirpath, include in it.product(dirpaths, includes):
+        include_path = os.path.join(dirpath, include)
+        if os.path.exists(include_path):
+            header_data = read_header_file(include_path)
+            valid_keycodes.update(
+                parse_keydefs(config, header_data)
+            )
+    return valid_keycodes
+
+
+#       Keymap Parsing
+
+def iter_raw_codes(layer_lines, filler, separator):
+    filler_re = re.compile("[" + filler + " ]")
+    for line in layer_lines:
+        line, _ = filler_re.subn("", line.strip())
+        if not line:
+            continue
+        codes = line.split(separator)
+        for code in codes[1:-1]:
+            yield code
+
+
+def iter_indexed_codes(raw_codes, key_indexes):
+    key_rows = {}
+    key_indexes_flat = []
+
+    for row_index, key_indexes in enumerate(key_indexes):
+        for key_index in key_indexes:
+            key_rows[key_index] = row_index
+        key_indexes_flat.extend(key_indexes)
+    assert len(raw_codes) == len(key_indexes_flat)
+    for raw_code, key_index in zip(raw_codes, key_indexes_flat):
+        # we keep track of the row mostly for layout purposes
+        yield raw_code, key_index, key_rows[key_index]
+
+
+LAYER_CHANGE_RE = re.compile(r"""
+    (DF|TG|MO)\(\d+\)
+""", re.VERBOSE)
+
+
+MACRO_RE = re.compile(r"""
+    M\(\w+\)
+""", re.VERBOSE)
+
+
+UNICODE_RE = re.compile(r"""
+    U[0-9A-F]{4}
+""", re.VERBOSE)
+
+
+NON_CODE = re.compile(r"""
+    ^[^A-Z0-9_]$
+""", re.VERBOSE)
+
+
+def parse_uni_code(raw_code):
+    macro_id = "UC_" + (
+        unicodedata.name(raw_code)
+        .replace(" ", "_")
+        .replace("-", "_")
+    )
+    code = "M({})".format(macro_id)
+    uc_hex = "{:04X}".format(ord(raw_code))
+    return code, macro_id, uc_hex
+
+
+def parse_key_code(raw_code, key_prefixes, valid_keycodes):
+    if raw_code in valid_keycodes:
+        return raw_code
+
+    for prefix in key_prefixes:
+        code = prefix + raw_code
+        if code in valid_keycodes:
+            return code
+
+
+def parse_code(raw_code, key_prefixes, valid_keycodes):
+    if not raw_code:
+        return 'KC_TRNS', None, None
+
+    if LAYER_CHANGE_RE.match(raw_code):
+        return raw_code, None, None
+
+    if MACRO_RE.match(raw_code):
+        macro_id = raw_code[2:-1]
+        return raw_code, macro_id, None
+
+    if UNICODE_RE.match(raw_code):
+        hex_code = raw_code[1:]
+        return parse_uni_code(chr(int(hex_code, 16)))
+
+    if NON_CODE.match(raw_code):
+        return parse_uni_code(raw_code)
+
+    code = parse_key_code(raw_code, key_prefixes, valid_keycodes)
+    return code, None, None
+
+
+def parse_keymap(config, key_indexes, layer_lines, valid_keycodes):
+    keymap = {}
+    raw_codes = list(iter_raw_codes(
+        layer_lines, config['filler'], config['separator']
+    ))
+    indexed_codes = iter_indexed_codes(raw_codes, key_indexes)
+    key_prefixes = config['key_prefixes']
+    for raw_code, key_index, row_index in indexed_codes:
+        code, macro_id, uc_hex = parse_code(
+            raw_code, key_prefixes, valid_keycodes
+        )
+        # TODO: line numbers for invalid codes
+        err_msg = "Could not parse key '{}' on row {}".format(
+            raw_code, row_index
+        )
+        assert code is not None, err_msg
+        # print(repr(raw_code), repr(code), macro_id, uc_hex)
+        if macro_id:
+            config['macro_ids'].add(macro_id)
+        if uc_hex:
+            config['unicode_macros'][macro_id] = uc_hex
+        keymap[key_index] = (code, row_index)
+    return keymap
+
+
+def parse_keymaps(config, valid_keycodes):
+    keymaps = collections.OrderedDict()
+    key_indexes = config.get(
+        'key_indexes', KEYBOARD_LAYOUTS[config['layout']]
+    )
+    # TODO: maybe validate key_indexes
+
+    for layer_name, layer_lines, in config['layer_lines'].items():
+        keymaps[layer_name] = parse_keymap(
+            config, key_indexes, layer_lines, valid_keycodes
+        )
+    return keymaps
+
+#       keymap.c output
+
+USERCODE = """
+// 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) {
+        case L1:
+            ergodox_right_led_1_on();
+            break;
+        case L2:
+            ergodox_right_led_2_on();
+            break;
+        case L3:
+            ergodox_right_led_3_on();
+            break;
+        case L4:
+            ergodox_right_led_1_on();
+            ergodox_right_led_2_on();
+            break;
+        case L5:
+            ergodox_right_led_1_on();
+            ergodox_right_led_3_on();
+            break;
+        // case L6:
+        //     ergodox_right_led_2_on();
+        //     ergodox_right_led_3_on();
+        //     break;
+        // case L7:
+        //     ergodox_right_led_1_on();
+        //     ergodox_right_led_2_on();
+        //     ergodox_right_led_3_on();
+        //     break;
+        default:
+            ergodox_board_led_off();
+            break;
+    }
+};
+"""
+
+MACROCODE = """
+#define UC_MODE_WIN 0
+#define UC_MODE_LINUX 1
+#define UC_MODE_OSX 2
+
+// TODO: allow default mode to be configured
+static uint16_t unicode_mode = UC_MODE_WIN;
+
+uint16_t hextokeycode(uint8_t hex) {{
+    if (hex == 0x0) {{
+        return KC_P0;
+    }}
+    if (hex < 0xA) {{
+        return KC_P1 + (hex - 0x1);
+    }}
+    return KC_A + (hex - 0xA);
+}}
+
+void unicode_action_function(uint16_t hi, uint16_t lo) {{
+    switch (unicode_mode) {{
+    case UC_MODE_WIN:
+        register_code(KC_LALT);
+
+        register_code(KC_PPLS);
+        unregister_code(KC_PPLS);
+
+        register_code(hextokeycode((hi & 0xF0) >> 4));
+        unregister_code(hextokeycode((hi & 0xF0) >> 4));
+        register_code(hextokeycode((hi & 0x0F)));
+        unregister_code(hextokeycode((hi & 0x0F)));
+        register_code(hextokeycode((lo & 0xF0) >> 4));
+        unregister_code(hextokeycode((lo & 0xF0) >> 4));
+        register_code(hextokeycode((lo & 0x0F)));
+        unregister_code(hextokeycode((lo & 0x0F)));
+
+        unregister_code(KC_LALT);
+        break;
+    case UC_MODE_LINUX:
+        register_code(KC_LCTL);
+        register_code(KC_LSFT);
+
+        register_code(KC_U);
+        unregister_code(KC_U);
+
+        register_code(hextokeycode((hi & 0xF0) >> 4));
+        unregister_code(hextokeycode((hi & 0xF0) >> 4));
+        register_code(hextokeycode((hi & 0x0F)));
+        unregister_code(hextokeycode((hi & 0x0F)));
+        register_code(hextokeycode((lo & 0xF0) >> 4));
+        unregister_code(hextokeycode((lo & 0xF0) >> 4));
+        register_code(hextokeycode((lo & 0x0F)));
+        unregister_code(hextokeycode((lo & 0x0F)));
+
+        unregister_code(KC_LCTL);
+        unregister_code(KC_LSFT);
+        break;
+    case UC_MODE_OSX:
+        break;
+    }}
+}}
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {{
+    if (!record->event.pressed) {{
+        return MACRO_NONE;
+    }}
+    // MACRODOWN only works in this function
+    switch(id) {{
+        case UM:
+            unicode_mode = (unicode_mode + 1) % 2;
+            break;
+{macro_cases}
+{unicode_macro_cases}
+        default:
+            break;
+    }}
+    return MACRO_NONE;
+}};
+"""
+
+
+UNICODE_MACRO_TEMPLATE = """
+case {macro_id}:
+    unicode_action_function(0x{hi:02x}, 0x{lo:02x});
+    break;
+""".strip()
+
+
+def unicode_macro_cases(config):
+    for macro_id, uc_hex in config['unicode_macros'].items():
+        hi = int(uc_hex, 16) >> 8
+        lo = int(uc_hex, 16) & 0xFF
+        unimacro_keys = ", ".join(
+            "T({})".format(
+                "KP_" + digit if digit.isdigit() else digit
+            ) for digit in uc_hex
+        )
+        yield UNICODE_MACRO_TEMPLATE.format(
+            macro_id=macro_id, hi=hi, lo=lo
+        )
+
+
+def iter_keymap_lines(keymap, row_indents=None):
+    col_widths = {}
+    col = 0
+    # first pass, figure out the column widths
+    prev_row_index = None
+    for code, row_index in keymap.values():
+        if row_index != prev_row_index:
+            col = 0
+            if row_indents:
+                col = row_indents[row_index]
+        col_widths[col] = max(len(code), col_widths.get(col, 0))
+        prev_row_index = row_index
+        col += 1
+
+    # second pass, yield the cell values
+    col = 0
+    prev_row_index = None
+    for key_index in sorted(keymap):
+        code, row_index = keymap[key_index]
+        if row_index != prev_row_index:
+            col = 0
+            yield "\n"
+            if row_indents:
+                for indent_col in range(row_indents[row_index]):
+                    pad = " " * (col_widths[indent_col] - 4)
+                    yield (" /*-*/" + pad)
+                col = row_indents[row_index]
+        else:
+            yield pad
+        yield " {}".format(code)
+        if key_index < len(keymap) - 1:
+            yield ","
+            # This will be yielded on the next iteration when
+            # we know that we're not at the end of a line.
+            pad = " " * (col_widths[col] - len(code))
+        prev_row_index = row_index
+        col += 1
+
+
+def iter_keymap_parts(config, keymaps):
+    # includes
+    for include_path in config['keymaps_includes']:
+        yield '#include "{}"\n'.format(include_path)
+
+    yield "\n"
+
+    # definitions
+    for i, macro_id in enumerate(sorted(config['macro_ids'])):
+        yield "#define {} {}\n".format(macro_id, i)
+
+    yield "\n"
+
+    for i, layer_name in enumerate(config['layer_lines']):
+        yield '#define L{0:<3} {0:<5}  // {1}\n'.format(i, layer_name)
+
+    yield "\n"
+
+    # keymaps
+    yield "const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {\n"
+
+    for i, layer_name in enumerate(config['layer_lines']):
+        # comment
+        layer_lines = config['layer_lines'][layer_name]
+        prefixed_lines = " * " + " * ".join(layer_lines)
+        yield "/*\n{} */\n".format(prefixed_lines)
+
+        # keymap codes
+        keymap = keymaps[layer_name]
+        row_indents = ROW_INDENTS.get(config['layout'])
+        keymap_lines = "".join(iter_keymap_lines(keymap, row_indents))
+        yield "[L{0}] = KEYMAP({1}\n),\n".format(i, keymap_lines)
+
+    yield "};\n\n"
+
+    # no idea what this is for
+    yield "const uint16_t PROGMEM fn_actions[] = {};\n"
+
+    # macros
+    yield MACROCODE.format(
+        macro_cases="",
+        unicode_macro_cases="\n".join(unicode_macro_cases(config)),
+    )
+
+    # TODO: dynamically create blinking lights
+    yield USERCODE
+
+
+def main(argv=sys.argv[1:]):
+    if not argv or '-h' in argv or '--help' in argv:
+        print(__doc__)
+        return 0
+
+    in_path = os.path.abspath(argv[0])
+    if not os.path.exists(in_path):
+        print("No such file '{}'".format(in_path))
+        return 1
+
+    if len(argv) > 1:
+        out_path = os.path.abspath(argv[1])
+    else:
+        dirname = os.path.dirname(in_path)
+        out_path = os.path.join(dirname, "keymap.c")
+
+    config = parse_config(in_path)
+    valid_keys = parse_valid_keys(config, out_path)
+    keymaps = parse_keymaps(config, valid_keys)
+
+    with io.open(out_path, mode="w", encoding="utf-8") as fh:
+        for part in iter_keymap_parts(config, keymaps):
+            fh.write(part)
+
+
+if __name__ == '__main__':
+    sys.exit(main())
diff --git a/keyboard/ergodox_ez/keymaps/german-manuneo/german-manuneo.hex b/keyboard/ergodox_ez/keymaps/german-manuneo/german-manuneo.hex
new file mode 100644 (file)
index 0000000..ee1d309
--- /dev/null
@@ -0,0 +1,1240 @@
+:100000000C9412040C9456040C9456040C9456044C\r
+:100010000C9456040C9456040C9456040C945604F8\r
+:100020000C9456040C9456040C944F0F0C9421100D\r
+:100030000C9456040C9456040C9456040C945604D8\r
+:100040000C9456040C94D6240C9456040C94560428\r
+:100050000C9456040C94751E0C9456040C9456047F\r
+:100060000C9456040C9456040C9456040C945604A8\r
+:100070000C9456040C9456040C9456040C94560498\r
+:100080000C9456040C9456040C9456040C94560488\r
+:100090000C9456040C9456040C9456040C94560478\r
+:1000A0000C9456040C9456040C945604A305700545\r
+:1000B0005B05B505DC050F06F105F7050C063A06EC\r
+:1000C0002F06FA0532064605EB0523062C066D05BC\r
+:1000D0006405B205A905910567052605BE05140648\r
+:1000E0001D0629069705C705A60540051A06E5055C\r
+:1000F00088059D0594057C0520068B053105E805DE\r
+:100100008205C1052005AC055E054C057605730525\r
+:10011000CA059A05060637058505AF052305B80506\r
+:1001200003060906D3055505EE0543056A054F0587\r
+:10013000C405F40535062905A005BB05FD05CD055B\r
+:1001400052052606E2053D058E055805D9056105CF\r
+:1001500000063A05D005DF052C0549053F061706C0\r
+:1001600079053405D6057F0514058610A81093116E\r
+:10017000A8109311EA100D119311621175116E14EC\r
+:100180006E149C149C14DE141A151A171A173215C3\r
+:100190001A1729162916F4161A171A1708170552CE\r
+:1001A000045201520352010000001E001B001800FF\r
+:1001B0002F00010029001F0013000C003300E30092\r
+:1001C000E1002000090004003400E2002A002100C0\r
+:1001D0001A0008000600E000650022000A00120074\r
+:1001E0001900000049002E004A0000004D000000E8\r
+:1001F00002542E02025400002B0000005E30230047\r
+:100200000B001600050000004C0024000D0011003A\r
+:100210001000E4004B0025000E0015003600E6003B\r
+:100220002C0026000F001700370050002800270080\r
+:1002300014000700520051004E0035001C002D0034\r
+:100240001D004F000000010001000100010001003D\r
+:1002500000001E02300238020100010001001F02EE\r
+:10026000641438003000010001002002240223023F\r
+:1002700027020100010001002414251401000100DF\r
+:1002800001000100271426140100000001000100F4\r
+:100290000100000001000000010001000100000059\r
+:1002A0000100000001000100310021022D140000B6\r
+:1002B000010001006400250222020100010001008A\r
+:1002C0006402260236020100010001000100301420\r
+:1002D00037023830010035021F023102553002303A\r
+:1002E0000100010001002D0201003D30000001006D\r
+:1002F000010001000100010000003A0001000100BE\r
+:100300000100010001003B000100010001000100AB\r
+:1003100001003C00010001000100010001003D005E\r
+:10032000010001000100010001003E000100010088\r
+:100330000100000001004400010000000100000075\r
+:1003400001004500010000005300000001003F00D3\r
+:100350000100010001000000010040005F005C009E\r
+:10036000590062000100410060005D005A008500F4\r
+:100370000100420061005E005B0063000100430079\r
+:100380005500560057005800010067005400560001\r
+:1003900057005800000001000100010001000100A9\r
+:1003A00000004D30393001005B3001000100513058\r
+:1003B00058303C303B300100010050300130141403\r
+:1003C0005D30010001004A30593008145C300100F2\r
+:1003D0000100493057300430003000000100053082\r
+:1003E0000100000001000000010001000100000008\r
+:1003F0000100000001004F305A3037301E0200006B\r
+:1004000001004E3001004B30010001000100483076\r
+:10041000563054305330010001004C30010003309D\r
+:100420003A300100010052300100010001000100DA\r
+:1004300001000100010001000100010000000100B5\r
+:100440000100010001000100000042302030343082\r
+:1004500001000100010046302E302630333001000B\r
+:10046000010045302D301E300100010001004030F8\r
+:100470002B3022300100010001003F3025302C30AC\r
+:100480000100000001000100010000000100000067\r
+:1004900001000100010000000100000001004430E3\r
+:1004A000233031301F3000000100433035302A3016\r
+:1004B0002930010001003E302730303001000100BA\r
+:1004C0000100413028303230010001000100473086\r
+:1004D000010021300100010001000100363024300C\r
+:1004E0002F300100000001000100010001000100A7\r
+:1004F0000000010008301B30010001000100010074\r
+:1005000015300D301A3001000100010014300630A2\r
+:10051000010001000100010012300A300100010059\r
+:10052000010001000C301330010000000100010047\r
+:1005300001000000010000000100010001000000B6\r
+:1005400001000000010001000B30183007300000EE\r
+:10055000010001001C3011301030010001000100C9\r
+:100560000E30173001000100010001000F3019307A\r
+:10057000010001000100010001000930010001003B\r
+:10058000010001001D3001001630010000000100D3\r
+:100590000100010001000100000001000100010054\r
+:1005A0000100010001000100010001000100010043\r
+:1005B0000100010001000100010001000100010033\r
+:1005C0000100010001000100010001000100010023\r
+:1005D0000100000001000100010000000100000016\r
+:1005E0000100010001000000010000000100010005\r
+:1005F00001000100010000000100010001000100F4\r
+:1006000001000100010001000100010001000100E2\r
+:1006100001000100010001000100010001000100D2\r
+:1006200001000100010001000100010001000100C2\r
+:1006300001000100000016034500720067006F0012\r
+:1006400044006F007800200045005A0000001603A7\r
+:100650004500720067006F0044006F0078002000C2\r
+:1006600045005A0000000403090409026D0004015A\r
+:1006700000A0FA0904000001030101000921110191\r
+:100680000001223F000705810308000A0904010058\r
+:100690000103010200092111010001224D0007059B\r
+:1006A000820308000A090402000103000000092176\r
+:1006B000110100012236000705830308000A09041E\r
+:1006C000030001030000000921110100012239008B\r
+:1006D000070584031000011201100100000008ED5D\r
+:1006E000FE071301000102000105010906A1010531\r
+:1006F0000719E029E7150025019508750181020514\r
+:100700000819012905950575019102950175039157\r
+:1007100001050719002977150025019578750181D4\r
+:1007200002C005010980A101850216010026B7005B\r
+:100730001A01002AB700751095018100C0050C0947\r
+:1007400001A1018503160100269C021A01002A9CC2\r
+:1007500002751095018100C005010902A10109017E\r
+:10076000A100050919012905150025019505750147\r
+:100770008102950175038101050109300931158157\r
+:10078000257F95027508810609381581257F950119\r
+:1007900075088106050C0A38021581257F950175BB\r
+:1007A000088106C0C005010906A101050719E02955\r
+:1007B000E7150025019508750181029501750881ED\r
+:1007C0000105081901290595057501910295017525\r
+:1007D0000391010507190029FF150025FF950675EE\r
+:1007E000088100C0000000000000000000000001BF\r
+:1007F0000204060A0F17202C3A4A5D71879DB3C781\r
+:10080000DAE9F5FCFFFCF5E9DAC7B39D87715D4ACB\r
+:100810003A2C20170F0A0604020100000000000015\r
+:100820000000000011241FBECFEFDAE0DEBFCDBF15\r
+:1008300004B603FE24C08091F1019091F201A091D1\r
+:10084000F301B091F4018730904BA740B04BB9F45D\r
+:100850001092F1011092F2011092F3011092F40142\r
+:1008600014BE84B7877F84BF88E10FB6F894809365\r
+:100870006000109260000FBEE0E0FFE3099511E018\r
+:10088000A0E0B1E0E0E3FDE402C005900D92A433E6\r
+:10089000B107D9F711E0A4E3B1E001C01D92A13F77\r
+:1008A000B107E1F70E94950C0C9496260C94000079\r
+:1008B000282F882341F090E02A3018F4885A9F4F5F\r
+:1008C00008950697089582E690E008950F931F9388\r
+:1008D000CF93DF938C01EB0180913401909135012E\r
+:1008E000009709F448C0019709F089C080EE0E9482\r
+:1008F000F71281EE0E94F71288E10E94F71288E158\r
+:100900000E94BF13C801807F992724E096958795A0\r
+:100910002A95E1F70E945804182F0E94F712812FA0\r
+:100920000E94BF13802F8F700E945804182F0E94BE\r
+:10093000F712812F0E94BF13CE01807F992734E0E8\r
+:10094000969587953A95E1F70E945804D82F0E9412\r
+:10095000F7128D2F0E94BF138C2F8F700E945804A6\r
+:10096000C82F0E94F7128C2F0E94BF1380EE0E94A6\r
+:10097000BF1381EE3EC082EE0E94F71287E50E940F\r
+:10098000F71287E50E94BF13C801807F992744E0D2\r
+:10099000969587954A95E1F70E945804182F0E9472\r
+:1009A000F712812F0E94BF13802F8F700E9458046E\r
+:1009B000182F0E94F712812F0E94BF13CE01807F53\r
+:1009C000992754E0969587955A95E1F70E94580427\r
+:1009D000D82F0E94F7128D2F0E94BF138C2F8F707B\r
+:1009E0000E945804C82F0E94F7128C2F0E94BF1338\r
+:1009F00082EEDF91CF911F910F910C94BF13DF9185\r
+:100A0000CF911F910F910895FC018281882309F4F1\r
+:100A10003CC1862F90E08F35910508F036C1FC016E\r
+:100A2000EA5AFF4F0C944B26809134019091350186\r
+:100A3000019681709927909335018093340125C1E7\r
+:100A40006FEB70E019C160E970E008C061EA70E026\r
+:100A500013C163E870E00BC16BE570E081E290E0E8\r
+:100A600012C16BEB70E008C163E570E0F7CF6EEB8D\r
+:100A700070E002C164E070E0D4C069EB70E001C1D5\r
+:100A800062EB70E0F9C065E870E0F1C069E970E020\r
+:100A9000F3C065E570E0E2CF68EC70E0EDC069E8B6\r
+:100AA00070E0E5C064E770E0E2C062E970E0D6CFD4\r
+:100AB00066E770E0DCC063E970E0D0CF60EC70E026\r
+:100AC000DBC062EB70E0DDC069EA70E0D5C068EAC7\r
+:100AD00070E0D2C064E870E0CAC06DE970E0CCC0DC\r
+:100AE00067EF70E0CEC063EC70E0C6C061EC70E010\r
+:100AF000C3C069E570E0B2CF63EB70E0BDC064E5F0\r
+:100B000070E0ACCF6DEB70E0B7C066EB70E0B4C0E6\r
+:100B100065EB70E0B1C06AEB70E0AEC067E770E013\r
+:100B2000A6C060EA70E0A8C062EC70E0A5C06EE903\r
+:100B300070E0A2C068EB70E09FC067EB70E09CC003\r
+:100B400062E870E094C063E470E06BC061EB70E059\r
+:100B500093C066EA70E090C066EC70E08DC06EE114\r
+:100B600070E05FC06FE970E087C068E070E059C076\r
+:100B700067ED70E086C060E870E079C063EA70E01D\r
+:100B80007BC069EC70E078C061E870E070C066E935\r
+:100B900070E072C064EC70E06FC065E770E067C041\r
+:100BA00063E070E03EC061EB70E06BC06EEB70E044\r
+:100BB00068C063EB70E065C065E070E032C061E979\r
+:100BC00070E04CCF69E770E052C064EB70E054C055\r
+:100BD0006CEB70E051C06AE970E04EC068E870E00C\r
+:100BE00046C061E970E048C067E870E040C062E973\r
+:100BF00070E042C067E970E03FC068E770E037C06E\r
+:100C000060E770E034C069E070E00BC065EC70E054\r
+:100C100033C060E670E005C067EA70E02DC060E0B8\r
+:100C200070E082E290E02FC064EA70E025C06CEBD7\r
+:100C300070E027C067EC70E01FC068E970E01CC07E\r
+:100C400069EB70E019C06BE970E016C06FE770E007\r
+:100C50000EC065EA70E010C06CE970E00DC065E997\r
+:100C600070E00AC063E970E007C066E870E080E207\r
+:100C700090E009C064E970E083E090E004C06DEBAF\r
+:100C800070E080E090E00E94660480E090E00895CB\r
+:100C900008956091B3017091B4018091B501909174\r
+:100CA000B6010E94A11D56985E9825982D98269809\r
+:100CB0002E9827982F988330A9F028F4813051F08E\r
+:100CC000823069F012C0843041F0853071F4259A89\r
+:100CD0002D9A08C0259A2D9A0895259A2D9A269A1C\r
+:100CE0002E9A0895279A2F9A089556985E980895F7\r
+:100CF0000C94490656985E9825982D9826982E981B\r
+:100D000027982F988FEF90E0909389008093880028\r
+:100D100090938B0080938A0090938D0080938C0039\r
+:100D2000259A2D9A2FEF80E792E021508040904045\r
+:100D3000E1F700C00000269A2E9A2FEF80E792E09C\r
+:100D4000215080409040E1F700C00000279A2F9A80\r
+:100D50002FEF80E792E0215080409040E1F700C003\r
+:100D6000000025982D982FEF80E792E021508040D9\r
+:100D70009040E1F700C0000026982E982FEF80E702\r
+:100D800092E0215080409040E1F700C00000279899\r
+:100D90002F9856985E9825982D9826982E982798E3\r
+:100DA0002F98089589EA8093800089E080938100DC\r
+:100DB00024982C983F988AB18F748AB96E98479A74\r
+:100DC0008BB1806B8BB9769A0E947A060C94480698\r
+:100DD00080E2809300018091360181110EC00E9453\r
+:100DE000370781E0809336012FEF83ED90E32150A8\r
+:100DF00080409040E1F700C0000080E40E943D0781\r
+:100E00008093000181112EC00E946707809300012A\r
+:100E1000811128C00E94670780930001811122C0C0\r
+:100E20008FE30E9467078093000181111BC00E941D\r
+:100E30005F0780E40E943D0780930001811112C08A\r
+:100E40008CE00E9467078093000181110BC00E9413\r
+:100E5000670780930001811105C08FE30E94670737\r
+:100E6000809300010E945F07809100010895109215\r
+:100E7000B9008AE08093B800089594EA9093BC008A\r
+:100E80009091BC0097FFFCCF9091B900987F98306B\r
+:100E900021F0903111F081E008958093BB0084E847\r
+:100EA0008093BC008091BC0087FFFCCF8091B9008B\r
+:100EB000887F883111F0803471F780E0089584E9EB\r
+:100EC0008093BC008091BC0084FDFCCF089580938A\r
+:100ED000BB0084E88093BC008091BC0087FFFCCFFE\r
+:100EE0009091B900987F81E0983209F480E00895EC\r
+:100EF00084E88093BC008091BC0087FFFCCF809188\r
+:100F0000BB00089580910001811115C080E40E940A\r
+:100F10003D078093000181110CC082E10E946707A8\r
+:100F200080930001811105C08FEF0E9467078093B5\r
+:100F300000010E945F0784B1807F84B985B1807F02\r
+:100F400085B98AB1837F8AB98BB1837F8BB93E988B\r
+:100F5000469808950E94E806809300010E94820747\r
+:100F600080B38C7080BB81B3836F81BBE6E4F1E01A\r
+:100F7000A8E3B1E011921D9281E0E435F807D1F7C2\r
+:100F80000C94D206BF92CF92DF92EF92FF920F9312\r
+:100F90001F93CF93DF9380910001882379F0809194\r
+:100FA00037018F5F80933701811108C00E94E806E6\r
+:100FB00080930001811102C00E947A0608E311E0CB\r
+:100FC000C0E0D0E0DD24D39482E0C82EEE24E39488\r
+:100FD000F12CC73000F580910001811162C080E4DE\r
+:100FE0000E943D0780930001811112C082E10E949E\r
+:100FF00067078093000181110BC0C7010C2E01C04F\r
+:10100000880F0A94EAF780950E9467078093000191\r
+:101010000E945F0746C0CA30A1F028F4C83059F0DA\r
+:10102000C93061F005C0CC3089F070F0CD3089F066\r
+:10103000209A289810C0219A29980DC0229A2A989F\r
+:101040000AC0239A2B9807C0529A01C0539A5B9802\r
+:1010500002C03E9A4698E0EAEA95F1F78FB1799995\r
+:101060005AC092E081708D25892B7C9B02C090E054\r
+:1010700001C094E0892B7D9B02C090E001C098E004\r
+:10108000892B7E9B02C090E001C090E1892B9FB12B\r
+:101090009095991F9927991F9295990F907E892B6A\r
+:1010A0000FC08091000181114BC080E40E943D0778\r
+:1010B00080930001882389F1B12C0E945F078B2D5A\r
+:1010C000F8019081981719F08083C09201010E9465\r
+:1010D000820721960F5F1F4FCE30D10509F079CFDF\r
+:1010E00080910101882371F181508093010188234F\r
+:1010F00039F08FE99FE00197F1F700C0000022C0AE\r
+:10110000A6E4B1E0E8E3F1E081918D9391E0E6346B\r
+:10111000F907D1F717C090E0A5CF83E10E946707D8\r
+:10112000809300018111C8CF81E40E943D07809324\r
+:1011300000018111C1CF0E947807B82EB094BDCFB5\r
+:1011400080E0BECF0E94780681E0DF91CF911F91B1\r
+:101150000F91FF90EF90DF90CF90BF900895E82F10\r
+:10116000F0E0EA5BFE4F8081089508958B3B910586\r
+:1011700078F4883A910540F5853A9105D0F48430A9\r
+:10118000910508F0B1C08130910509F4ADC06BC084\r
+:10119000803E910508F467C0883E910508F4A4C01C\r
+:1011A0009C01205F31092031310508F05CC0906559\r
+:1011B0000895853A910509F459C0863A910509F4D4\r
+:1011C00058C083E890E40895883A910509F454C022\r
+:1011D000893A910509F453C08A3A910509F452C03D\r
+:1011E0008B3A910509F451C08C3A910509F450C02D\r
+:1011F0008D3A910509F44FC0803B910509F44EC02A\r
+:101200008E3A910509F44DC08F3A910509F44CC00E\r
+:10121000813B910509F44BC0823B910509F44AC01A\r
+:10122000833B910509F449C0843B910509F448C00A\r
+:10123000853B910509F447C0863B910509F446C0FA\r
+:10124000873B910509F445C0883B910509F444C0EA\r
+:10125000893B910509F443C08A3B910509F042C0DE\r
+:101260008AE296E4089580E090E0089581E890E4B1\r
+:10127000089582E890E4089582EE94E4089589EE5A\r
+:1012800094E408958AEE94E4089585EB94E4089537\r
+:1012900086EB94E4089587EB94E408958CEC94E451\r
+:1012A00008958DEC94E4089583E895E408958AE820\r
+:1012B00095E4089582E995E4089584E995E4089514\r
+:1012C00081E296E4089583E296E4089584E296E448\r
+:1012D000089585E296E4089586E296E4089587E20B\r
+:1012E00096E4089580E094E40895089596E0799F47\r
+:1012F000F001112494E5899FE00DF11D1124E60F02\r
+:10130000F11DEE0FFF1FE256FE4F85919491089557\r
+:10131000880F991F825E9F4FFC01859194910895DB\r
+:10132000880F991F82569E4FFC01859194910895D4\r
+:1013300026E0729FF001112444E5849FE00DF11D29\r
+:101340001124E60FF11DEE0FFF1FE256FE4F25910F\r
+:101350003491C9019A9581159F4110F4C9010895EE\r
+:10136000C90190528115904128F4C9019F700E94D3\r
+:1013700090090895C90190538115904120F4C90145\r
+:101380009927906C0895211580E5380769F40E942B\r
+:101390003D179FEF24E34CE0915020404040E1F79F\r
+:1013A00000C000000C949A1E213080E5380731F40B\r
+:1013B0008091CF0181608093CF010895C90190553C\r
+:1013C0008115904108F050C0832F99278F7099277D\r
+:1013D00081309105D9F4A9014370552702C0880FC7\r
+:1013E000991F4A95E2F79C68A90164E0440F551FD4\r
+:1013F0006A95E1F744275370842B952B73E0220FF5\r
+:10140000331F7A95E1F7207633271DC0823091058E\r
+:1014100029F4922F8827816F906A0895833091056F\r
+:10142000A9F4A9014370552781E090E002C0880F1C\r
+:10143000991F4A95E2F79C6843E0220F331F4A95B3\r
+:10144000E1F7207E3770822B932B08950497F1F4F7\r
+:10145000A9014370552781E090E002C0880F991FD1\r
+:101460004A95E2F79A68E8CFC901905781159041F3\r
+:1014700020F4C9019F7090620895C90190588115A8\r
+:10148000904120F4C9019F70906A0895203E310573\r
+:10149000E0F4203C310558F52133310509F470C0E2\r
+:1014A00048F42932310509F464C02A32310509F4BF\r
+:1014B0006EC074C029333105F1F022383105D9F0FE\r
+:1014C0002533310509F44EC069C0233E310589F149\r
+:1014D00038F4203E3105C1F0223E3105E1F05EC016\r
+:1014E000263E310569F1273E3105A9F157C0C901F2\r
+:1014F0000E94880908958091E20180FD02C081FF69\r
+:101500004DC080EE90E04BC08091E20180FFF9CFAA\r
+:1015100089E390E044C08091E20182FF0EC0809197\r
+:10152000E20184FF03C080E090E039C083EE90E0E8\r
+:1015300036C08091E20182FFF2CF82EE90E02FC0B0\r
+:101540008091E20183FF0BC08091E20184FDEBCF2B\r
+:1015500087EE90E024C08091E20183FFF5CF86EE14\r
+:1015600090E01DC08091E20185FF07C089E290E014\r
+:1015700016C08091E20185FFF9CF85E390E00FC0AE\r
+:101580008091E20186FF07C08AE290E008C0809166\r
+:10159000E20186FFF9CF81E390E001C0C9010E941A\r
+:1015A000B608089508950C94D20A809164010895B4\r
+:1015B000CF93DF9300D01F92CDB7DEB72091E80123\r
+:1015C000243019F523E029839B838A832093E90043\r
+:1015D0008FEF9091E800815095FD06C095ED9A95AA\r
+:1015E000F1F700008111F5CF8091E80085FF0DC073\r
+:1015F00040E050E063E070E0CE0101960E94420DB1\r
+:101600008091E8008E778093E8000F900F900F9004\r
+:10161000DF91CF910895CF93DF9300D01F92CDB784\r
+:10162000DEB72091E801243021F522E029839B8355\r
+:101630008A8383E08093E9008FEF9091E8008150E6\r
+:1016400095FD06C095ED9A95F1F700008111F5CF53\r
+:101650008091E80085FF0DC040E050E063E070E05D\r
+:10166000CE0101960E94420D8091E8008E77809312\r
+:10167000E8000F900F900F90DF91CF910895209187\r
+:10168000E8012430F1F422E02093E9002FEF3091BB\r
+:10169000E800215035FD06C035ED3A95F1F7000020\r
+:1016A0002111F5CF2091E80025FF0BC040E050E06C\r
+:1016B00065E070E00E94420D8091E8008E77809393\r
+:1016C000E8000895CF93DF93EC018091E801843026\r
+:1016D00009F046C090910C019923D9F090910D0129\r
+:1016E0009923B9F08093E9008FEF9091E800815041\r
+:1016F00095FD06C095E19A95F1F700008111F5CFAF\r
+:101700008091E80085FF2CC040E050E060E170E08F\r
+:1017100017C081E08093E9008FEF9091E80081503D\r
+:1017200095FD06C095ED9A95F1F700008111F5CF72\r
+:101730008091E80085FF14C040E050E068E070E070\r
+:10174000CE010E94420D8091E8008E778093E800E0\r
+:1017500080E1FE01A4E5B1E001900D928A95E1F7E8\r
+:10176000DF91CF9108958091E701811109C00E9416\r
+:10177000D40E0E94310F8091E20084608093E200D9\r
+:1017800008951092E701089508950C94C3240E94CF\r
+:10179000311E0E94C9240E94CE110C94D30A42E04B\r
+:1017A00061EC81E00E944E0E42E061EC82E00E941A\r
+:1017B0004E0E42E061EC83E00E944E0E42E161EC8D\r
+:1017C00084E00C944E0E8091EA01833009F455C0F8\r
+:1017D00030F4813071F0823009F48EC008958A307F\r
+:1017E00009F47AC08B3009F460C0893009F09CC0DC\r
+:1017F00020C08091E901813A09F096C08091E8000B\r
+:10180000877F8093E8008091ED019091EE01892B14\r
+:1018100021F060E080E090E003C060E184E591E0C9\r
+:1018200070E00E948B0D8091E8008B778093E80038\r
+:1018300008958091E901813209F076C08091ED012F\r
+:101840009091EE01009719F0039709F06DC0809117\r
+:10185000E800877F8093E8008091E80082FD05C062\r
+:101860008091E8018111F8CF5FC08091F1008093F1\r
+:1018700064018091E8008B7753C08091E901813A3F\r
+:1018800009F052C08091ED019091EE01892B09F091\r
+:101890004BC08091E800877F8093E8008091E8004A\r
+:1018A00080FFFCCF80910C0136C08091E90181322C\r
+:1018B000D9F58091ED019091EE01892BA9F58091E8\r
+:1018C000E800877F8093E8000E94830E8091EB01FF\r
+:1018D00080930C010C943D178091E901813221F530\r
+:1018E0008091E800877F8093E8000E94830E8091BA\r
+:1018F000EC018093650108958091E901813AA1F49A\r
+:101900008091E800877F8093E8008091E80080FF65\r
+:10191000FCCF809165018093F1008091E8008E7783\r
+:101920008093E8000C94830E089584B7877F84BF6A\r
+:1019300088E10FB6F89480936000109260000FBEAB\r
+:1019400090E080E80FB6F894809361009093610076\r
+:101950000FBE0E941D120E94D40E0E94310F809172\r
+:10196000E20084608093E20078940E94AC110E94AF\r
+:101970001F1282E091E00E94C9110E94B12480915F\r
+:10198000E801853069F40E94F41D8091E601882306\r
+:10199000B1F30E941C1E882391F30E942C0DEFCFFF\r
+:1019A0000E942512ECCF292F332723303105A9F0CF\r
+:1019B0006CF42130310509F442C02230310509F0C0\r
+:1019C00043C08DE690E02AE636E042C02132310580\r
+:1019D000C9F02232310519F137C0992781309105BC\r
+:1019E00041F08230910541F0892B71F5E6E6F6E091\r
+:1019F00005C0EEE4F6E002C0E6E3F6E0849190E094\r
+:101A00009F0126C0643000F5E62FF0E0EE0FFF1FC7\r
+:101A1000EE5DFE4F2081318189E090E019C0643095\r
+:101A200098F4E62FF0E0DF01AA0FBB1FA65EBE4FC1\r
+:101A30002D913C91EA5EFE4F808190E009C082E1E9\r
+:101A400090E027ED36E004C080E090E020E030E058\r
+:101A5000FA0131832083089580E189BD82E189BD47\r
+:101A600009B400FEFDCF8091D8008F7D8093D8000F\r
+:101A70008091E00082608093E0008091E00081FD31\r
+:101A8000FCCF0895CF92DF92EF92FF920F931F93B6\r
+:101A9000CF93DF937C018B01EA010E94A40E811198\r
+:101AA00031C0209731F088819981081B190BE80E0D\r
+:101AB000F91EC12CD12C0115110519F18091E800F6\r
+:101AC00085FD14C08091E8008E778093E800209710\r
+:101AD00041F0888199818C0D9D1D9983888385E0D3\r
+:101AE00011C00E94A40E882331F30CC0F70181912C\r
+:101AF0007F018093F10001501109FFEFCF1ADF0A37\r
+:101B0000DACF80E0DF91CF911F910F91FF90EF909E\r
+:101B1000DF90CF9008952091EF013091F0012617CA\r
+:101B2000370748F06115710539F42091E8002E77E8\r
+:101B30002093E80001C0B901FC0120E061157105A6\r
+:101B4000B9F18091E801882309F440C0853009F497\r
+:101B50003FC08091E80083FD3DC08091E80082FF96\r
+:101B600006C08091E80082FF26C080E00895809141\r
+:101B7000E80080FFE3CF2091F3008091F20090E035\r
+:101B8000922B6115710551F08830910538F421913F\r
+:101B90002093F100615071090196F3CF21E008977D\r
+:101BA00009F020E08091E8008E778093E800C6CFAE\r
+:101BB0002111C7CFD6CF8091E801882339F0853035\r
+:101BC00039F08091E80083FFCCCF04C082E0089513\r
+:101BD00083E0089581E008952091EF013091F001B4\r
+:101BE0002617370748F06115710539F42091E80090\r
+:101BF0002E772093E80001C0B901FC0120E06115B7\r
+:101C00007105C1F18091E801882309F441C0853054\r
+:101C100009F440C08091E80083FD3EC08091E80057\r
+:101C200082FF06C08091E80082FF27C080E008950F\r
+:101C30008091E80080FFE3CF2091F3008091F200D3\r
+:101C400090E0922B6115710559F08830910540F4B0\r
+:101C500024912093F1003196615071090196F2CFE1\r
+:101C600021E0089709F020E08091E8008E778093CA\r
+:101C7000E800C5CF2111C6CFD5CF8091E8018823D8\r
+:101C800039F0853039F08091E80083FFCBCF04C074\r
+:101C900082E0089583E0089581E00895982F9730B9\r
+:101CA00058F59093E900981739F07091EC00209165\r
+:101CB000ED005091F00003C0242F762F50E021FF5B\r
+:101CC00019C03091EB003E7F3093EB003091ED0076\r
+:101CD0003D7F3093ED003091EB0031603093EB00AD\r
+:101CE0007093EC002093ED005093F0002091EE00F3\r
+:101CF00027FF07C09F5FD3CF8F708093E90081E0FB\r
+:101D0000089580E008958091E90187FD05C08091E4\r
+:101D1000E80080FF0EC012C08091E80082FD05C07F\r
+:101D20008091E8018111F8CF08958091E8008B77C8\r
+:101D300008C08091E8018111EACF08958091E80000\r
+:101D40008E778093E80008958091E4009091E500FB\r
+:101D500045E62091EC0020FF21C02091E80020FD05\r
+:101D600021C02091E801222389F0253089F02091BB\r
+:101D7000EB0025FD0FC02091E4003091E50028170D\r
+:101D8000390739F3415041F0C901E3CF82E00895AA\r
+:101D900083E0089581E0089584E008952091E800AB\r
+:101DA00022FFDFCF80E008950E94420F0E944A0F79\r
+:101DB000E0EEF0E0808181608083E8EDF0E08081FA\r
+:101DC0008F77808319BCA7EDB0E08C918E7F8C93C8\r
+:101DD00080818F7E80831092E70108950F931F9377\r
+:101DE000CF93DF930E94420F0E944A0FC8EDD0E0CC\r
+:101DF00088818F77888388818068888388818F7DB8\r
+:101E0000888319BC1092E8011092E4011092E60157\r
+:101E10001092E50100EE10E0F80180818B7F808355\r
+:101E200088818160888342E060E080E00E944E0EFD\r
+:101E3000E1EEF0E080818E7F8083E2EEF0E0808151\r
+:101E400081608083808188608083F80180818E7FBB\r
+:101E50008083888180618883DF91CF911F910F916A\r
+:101E60000895E8EDF0E080818F7E8083E7EDF0E07B\r
+:101E700080818160808384E082BF81E08093E7017C\r
+:101E80000C94EE0EE8EDF0E080818E7F808310925E\r
+:101E9000E20008951092DA001092E10008951F9276\r
+:101EA0000F920FB60F9211242F933F934F935F938E\r
+:101EB0006F937F938F939F93AF93BF93EF93FF9312\r
+:101EC0008091E10082FF0BC08091E20082FF07C099\r
+:101ED0008091E1008B7F8093E1000E94AB118091A3\r
+:101EE000DA0080FF1FC08091D80080FF1BC0809166\r
+:101EF000DA008E7F8093DA008091D90080FF0DC0D8\r
+:101F000080E189BD82E189BD09B400FEFDCF81E099\r
+:101F10008093E8010E94B30B05C019BC1092E80140\r
+:101F20000E94C10B8091E10080FF19C08091E20006\r
+:101F300080FF15C08091E2008E7F8093E200809147\r
+:101F4000E20080618093E2008091D80080628093FB\r
+:101F5000D80019BC85E08093E8010E94C50B8091F0\r
+:101F6000E10084FF30C08091E20084FF2CC080E15A\r
+:101F700089BD82E189BD09B400FEFDCF8091D80002\r
+:101F80008F7D8093D8008091E1008F7E8093E10067\r
+:101F90008091E2008F7E8093E2008091E200816078\r
+:101FA0008093E2008091E401882311F084E007C06F\r
+:101FB0008091E30087FF02C083E001C081E080934D\r
+:101FC000E8010E94C70B8091E10083FF29C0809146\r
+:101FD000E20083FF25C08091E100877F8093E100CC\r
+:101FE00082E08093E8011092E4018091E1008E7F0D\r
+:101FF0008093E1008091E2008E7F8093E2008091E7\r
+:10200000E20080618093E20042E060E080E00E94B4\r
+:102010004E0E8091F00088608093F0000E94C40B07\r
+:10202000FF91EF91BF91AF919F918F917F916F91B0\r
+:102030005F914F913F912F910F900FBE0F901F9086\r
+:1020400018951F920F920FB60F9211242F933F9362\r
+:102050004F935F936F937F938F939F93AF93BF93B0\r
+:10206000CF93EF93FF93C091E900CF708091EC0084\r
+:102070001092E9008091F000877F8093F0007894BF\r
+:102080000E945D101092E9008091F00088608093BA\r
+:10209000F000C093E900FF91EF91CF91BF91AF9114\r
+:1020A0009F918F917F916F915F914F913F912F9170\r
+:1020B0000F900FBE0F901F9018951F93CF93DF9333\r
+:1020C000CDB7DEB7AA970FB6F894DEBF0FBECDBF6F\r
+:1020D000E9EEF1E08091F100819321E0E13FF20728\r
+:1020E000C9F70E94E30B8091E80083FF1CC1209197\r
+:1020F000E9013091EA01832F90E08A30910508F0E0\r
+:1021000012C1FC01EB54FF4F0C944B26203881F098\r
+:10211000223809F008C18091ED018F708093E900A9\r
+:102120008091EB0085FB882780F91092E90006C0BA\r
+:102130008091E5019091E601911182609091E80013\r
+:10214000977F9093E8008093F1001092F100C5C052\r
+:10215000822F8D7F09F0E7C0222319F0223061F031\r
+:10216000E2C08091EB01813009F0DDC0333009F02D\r
+:1021700080E08093E60128C08091EB01811124C0AA\r
+:102180002091ED012F7009F4CEC02093E9008091D9\r
+:10219000EB0080FF19C08091EB00333011F48062B6\r
+:1021A00011C080618093EB0081E090E0022E01C0BD\r
+:1021B000880F0A94EAF78093EA001092EA0080916F\r
+:1021C000EB0088608093EB001092E9008091E800BA\r
+:1021D000877F86C02111A7C01091EB011F778091E6\r
+:1021E000E3008078812B8093E3008091E800877F73\r
+:1021F0008093E8000E94830E8091E80080FFFCCF6E\r
+:102200008091E30080688093E300112311F083E064\r
+:1022100001C082E08093E80186C02058223008F097\r
+:1022200082C08091EB019091EC018C3D23E09207FC\r
+:1022300079F583E08A838AE289834FB7F894DE01D7\r
+:10224000139620E03EE051E2E32FF0E05093570078\r
+:10225000E49120FF03C0E295EF703F5FEF708E2F97\r
+:1022600090E0EA3010F0C79601C0C0968D939D9320\r
+:102270002F5F243149F74FBF8091E800877F80931B\r
+:10228000E8006AE270E0CE0101960E948B0D14C056\r
+:10229000AE014F5F5F4F6091ED010E94D30C00973C\r
+:1022A00009F441C02091E800277F2093E800BC0199\r
+:1022B00089819A810E94EC0D8091E8008B77809350\r
+:1022C000E80031C0203879F58091E800877F80935D\r
+:1022D000E8008091E4018093F1008091E8008E771E\r
+:1022E0008093E8000E94830E1EC021111CC09091B3\r
+:1022F000EB019230C0F48091E800877F8093E80082\r
+:102300009093E4010E94830E8091E401811104C046\r
+:102310008091E30087FF02C084E001C081E08093E8\r
+:10232000E8010E94CF0B8091E80083FF0AC08091F2\r
+:10233000E800877F8093E8008091EB0080628093C3\r
+:10234000EB00AA960FB6F894DEBF0FBECDBFDF91AB\r
+:10235000CF911F9108950895CF938091E80188232C\r
+:10236000B1F08091E9008F709091EC0090FF02C075\r
+:1023700090E801C090E0C92FC82B1092E90080912D\r
+:10238000E80083FD0E945D10CF70C093E900CF91FB\r
+:10239000089590936B0180936A010895E0916A011A\r
+:1023A000F0916B01309721F00190F081E02D0994BC\r
+:1023B00080E00895E0916A01F0916B01309721F07F\r
+:1023C0000280F381E02D09940895E0916A01F09173\r
+:1023D0006B01309721F00480F581E02D0994089578\r
+:1023E00020916801309169018217930771F09093F1\r
+:1023F000690180936801E0916A01F0916B01309767\r
+:1024000021F00680F781E02D09940895209166015E\r
+:10241000309167018217930771F090936701809361\r
+:102420006601E0916A01F0916B01309721F0008420\r
+:10243000F185E02D0994089508950C941C120E94D2\r
+:10244000371E0E94AA070C94FD1ECF92DF92EF92D6\r
+:10245000FF920F931F93CF93DF93CDB7DEB72B97E8\r
+:102460000FB6F894DEBF0FBECDBF0E94C2073DE697\r
+:10247000E32E31E0F32E00E010E0C02E802F0E940A\r
+:10248000AF08F701D1907F01D826B1F40F5F1F4F3D\r
+:102490000E30110591F78FEF89838A831B820E948A\r
+:1024A000401E8160782F9D838C8349815A816B8186\r
+:1024B0008D810E94C81241C09091CF0191FF04C04C\r
+:1024C0008B870E94B5088B8520E030E04D2D50E0D1\r
+:1024D000922FBA01022E02C0759567950A94E2F711\r
+:1024E00060FF25C02E83CF82EE24E394F12C02C03E\r
+:1024F000EE0CFF1C9A95E2F790E08E219F2121E0DF\r
+:10250000892B09F420E028870E94401E8160782FE3\r
+:102510009A8789874E815F8168858A850E94C81263\r
+:10252000F801E359FE4F80818E25808306C02F5F1E\r
+:102530003F4F2630310561F6A9CF0E94E12110916D\r
+:102540006C010E94CE111817A1F00E94CE11809349\r
+:102550006C012B960FB6F894DEBF0FBECDBFDF9196\r
+:10256000CF911F910F91FF90EF90DF90CF900C943F\r
+:10257000D30A2B960FB6F894DEBF0FBECDBFDF9106\r
+:10258000CF911F910F91FF90EF90DF90CF90089522\r
+:10259000CF93DF93CDB7DEB72B970FB6F894DEBF9E\r
+:1025A0000FBECDBF4F83588769877A878B87DE013F\r
+:1025B000119686E0FD0111928A95E9F785E0FE010A\r
+:1025C000379601900D928A95E1F749815A816B8186\r
+:1025D0007C818D819E810E94091A2B960FB6F894FA\r
+:1025E000DEBF0FBECDBFDF91CF9108950895CF9389\r
+:1025F000C82F882309F4C1C0823859F40E94CE1133\r
+:1026000081FDBBC089E30E94A81C0E94721D89E362\r
+:102610000CC0833879F40E94CE1180FDAEC083E5F2\r
+:102620000E94A81C0E94721D83E50E94E81CCF91A5\r
+:102630000C94721D843859F40E94CE1182FD9DC005\r
+:1026400087E40E94A81C0E94721D87E4EECF8CEFE5\r
+:102650008C0F813A48F48C2F0E94192481118DC06F\r
+:102660008C2F0E94A81CE3CF80E28C0F883048F4A6\r
+:10267000C77081E001C0880FCA95EAF70E94291D42\r
+:10268000D6CF8BE58C0F833078F4C53A29F0C63A63\r
+:1026900031F482E890E005C081E890E002C083E870\r
+:1026A00090E0CF910C94F01188E58C0F833108F005\r
+:1026B00064C0C83A39F1C93A41F1CA3A49F1CB3A52\r
+:1026C00051F1CC3A59F1CD3A61F1C03B69F1CE3AC2\r
+:1026D00071F1CF3A79F1C13B81F1C23B89F1C33B42\r
+:1026E00091F1C43B99F1C53BA1F1C63BA9F1C73BB0\r
+:1026F000B1F1C83BB9F1C93BC1F1CA3BC9F58AE2A6\r
+:1027000092E038C082EE90E035C089EE90E032C0B1\r
+:102710008AEE90E02FC085EB90E02CC086EB90E035\r
+:1027200029C087EB90E026C08CEC90E023C08DECB4\r
+:1027300090E020C083E891E01DC08AE891E01AC0D3\r
+:1027400082E991E017C084E991E014C081E292E04F\r
+:1027500011C083E292E00EC084E292E00BC085E2F9\r
+:1027600092E008C086E292E005C087E292E002C0F3\r
+:1027700080E090E0CF910C940612CF9108958823C9\r
+:1027800009F44BC0823859F40E94CE1181FF45C034\r
+:1027900089E30E94A81C0E94721D89E30CC0833843\r
+:1027A00071F40E94CE1180FF38C083E50E94A81CFE\r
+:1027B0000E94721D83E50E94E81C0C94721D8438EF\r
+:1027C00059F40E94CE1182FF28C087E40E94A81C01\r
+:1027D0000E94721D87E4EFCF9CEF980F913A58F357\r
+:1027E00090E2980F983050F4877091E001C0990FF3\r
+:1027F0008A95EAF7892F0E942F1DDFCF9BE5980F5E\r
+:10280000933020F480E090E00C94F011885A8331EA\r
+:1028100020F480E090E00C9406120895882321F0C3\r
+:102820000E94291D0C94721D0895882321F00E9496\r
+:102830002F1D0C94721D0895CF92DF92EF92FF929C\r
+:102840000F931F93CF93DF93CDB7DEB728970FB6C3\r
+:10285000F894DEBF0FBECDBF8C0185E0F801DE012C\r
+:10286000119601900D928A95E1F7F801D080E180F0\r
+:10287000F280258122952F7083819481892B39F0F4\r
+:10288000FFEFEF1206C081E0DF1203C003C081E05A\r
+:1028900001C080E080FDCEC2C8012F830E94F612E5\r
+:1028A000D982EA8289819A810E94661C9E838887E8\r
+:1028B0000E94651C0E94381B2F814E816885FF2075\r
+:1028C00029F00E94461D68854E812F81E42FE295F4\r
+:1028D000EF70F0E0E154FF4F0C944B26842F807F83\r
+:1028E000142F1F70882311F01295107FFF2059F0CC\r
+:1028F000112309F454C2812F68870E94391D0E9458\r
+:10290000721D68854CC2862F0E94BF13112309F4E3\r
+:1029100091C2812F0E943F1D28960FB6F894DEBF0A\r
+:102920000FBECDBFDF91CF911F910F91FF90EF9020\r
+:10293000DF90CF900C94721D342F307F842F8F70D6\r
+:10294000303211F08295807F662319F0613019F1E1\r
+:102950002BC0FF20B1F0222309F493C1213009F0EC\r
+:1029600090C128960FB6F894DEBF0FBECDBFDF91A1\r
+:10297000CF911F910F91FF90EF90DF90CF900C942B\r
+:10298000591D222319F0213009F454C28E830E946C\r
+:102990005C1D8E8189C1FF2021F0223008F04AC2DF\r
+:1029A00070C1211147C280C1FF2021F0222309F408\r
+:1029B00068C1F5C1222309F477C105C2242F2695E9\r
+:1029C0002695237030E02115310521F021303105A5\r
+:1029D000C9F030C2FF2021F0862F942F937002C0DF\r
+:1029E00080E090E028960FB6F894DEBF0FBECDBF12\r
+:1029F000DF91CF911F910F91FF90EF90DF90CF90DB\r
+:102A00000C94F011FF2021F0862F942F937002C0B8\r
+:102A100080E090E028960FB6F894DEBF0FBECDBFE1\r
+:102A2000DF91CF911F910F91FF90EF90DF90CF90AA\r
+:102A30000C940612862FFF2019F00E94E92002C094\r
+:102A40000E94512128960FB6F894DEBF0FBECDBF6D\r
+:102A5000DF91CF911F910F91FF90EF90DF90CF907A\r
+:102A60000C94D621842F837009F076C0F110E2C156\r
+:102A7000262F229526952770220F220F862F8F70E2\r
+:102A8000C82ED12CE12CF12C022E04C0CC0CDD1C64\r
+:102A9000EE1CFF1C0A94D2F764FF10C06FE070E0D8\r
+:102AA00080E090E004C0660F771F881F991F2A9569\r
+:102AB000D2F7609570958095909503C060E070E0C6\r
+:102AC000CB01242F269526952370422F50E04230CB\r
+:102AD0005105D1F04330510559F16C297D298E29DA\r
+:102AE0009F294130510541F128960FB6F894DEBF79\r
+:102AF0000FBECDBFDF91CF911F910F91FF90EF904F\r
+:102B0000DF90CF900C945D1B6C297D298E299F2925\r
+:102B100028960FB6F894DEBF0FBECDBFDF91CF91E0\r
+:102B20001F910F91FF90EF90DF90CF900C94771B47\r
+:102B30000E945D1BC701B60128960FB6F894DEBF50\r
+:102B40000FBECDBFDF91CF911F910F91FF90EF90FE\r
+:102B5000DF90CF900C94431BFF2019F0842F8170DD\r
+:102B600001C08695882309F465C1262F22952695F4\r
+:102B70002770220F220F862F8F70C82ED12CE12CA8\r
+:102B8000F12C022E04C0CC0CDD1CEE1CFF1C0A94A0\r
+:102B9000D2F764FF10C06FE070E080E090E004C006\r
+:102BA000660F771F881F991F2A95D2F76095709539\r
+:102BB0008095909503C060E070E0CB01242F2695AE\r
+:102BC00026952370422F50E042305105D1F043301A\r
+:102BD000510559F16C297D298E299F2941305105D4\r
+:102BE00041F128960FB6F894DEBF0FBECDBFDF913E\r
+:102BF000CF911F910F91FF90EF90DF90CF900C94A9\r
+:102C0000311C6C297D298E299F2928960FB6F894AE\r
+:102C1000DEBF0FBECDBFDF91CF911F910F91FF900F\r
+:102C2000EF90DF90CF900C944B1C0E94311CC70199\r
+:102C3000B60128960FB6F894DEBF0FBECDBFDF9168\r
+:102C4000CF911F910F91FF90EF90DF90CF900C9458\r
+:102C5000171C603FC9F118F4603E50F49BC0623FFE\r
+:102C600009F460C008F44AC0633F09F46FC092C021\r
+:102C7000162F1F70842F8F71FF2099F00E94B01BB8\r
+:102C8000812F28960FB6F894DEBF0FBECDBFDF911F\r
+:102C9000CF911F910F91FF90EF90DF90CF900C9408\r
+:102CA0000E140E94D11B812F28960FB6F894DEBF18\r
+:102CB0000FBECDBFDF91CF911F910F91FF90EF908D\r
+:102CC000DF90CF900C941514FF20A1F02111B2C019\r
+:102CD000842F8F7128960FB6F894DEBF0FBECDBF3C\r
+:102CE000DF91CF911F910F91FF90EF90DF90CF90E8\r
+:102CF0000C94F61B223008F09DC0EACFFF20A1F013\r
+:102D0000842F8F7128960FB6F894DEBF0FBECDBF0B\r
+:102D1000DF91CF911F910F91FF90EF90DF90CF90B7\r
+:102D20000C94B01BFF2061F3842F8F7128960FB68F\r
+:102D3000F894DEBF0FBECDBFDF91CF911F910F91F1\r
+:102D4000FF90EF90DF90CF900C94D11BFF2091F07B\r
+:102D5000842F8F7128960FB6F894DEBF0FBECDBFBB\r
+:102D6000DF91CF911F910F91FF90EF90DF90CF9067\r
+:102D70000C949B1B28960FB6F894DEBF0FBECDBFF8\r
+:102D8000DF91CF911F910F91FF90EF90DF90CF9047\r
+:102D90000C94911BFF20A1F0222309F4B1CF862FC0\r
+:102DA00028960FB6F894DEBF0FBECDBFDF91CF914E\r
+:102DB0001F910F91FF90EF90DF90CF900C94F7123E\r
+:102DC000222309F4B1CF862F28960FB6F894DEBFE0\r
+:102DD0000FBECDBFDF91CF911F910F91FF90EF906C\r
+:102DE000DF90CF900C94BF134F70C8010E94040570\r
+:102DF00028960FB6F894DEBF0FBECDBFDF91CF91FE\r
+:102E00001F910F91FF90EF90DF90CF900C94B61A26\r
+:102E10004F70C80128960FB6F894DEBF0FBECDBF25\r
+:102E2000DF91CF911F910F91FF90EF90DF90CF90A6\r
+:102E30000C94750928960FB6F894DEBF0FBECDBF6F\r
+:102E4000DF91CF911F910F91FF90EF90DF90CF9086\r
+:102E500008950E94461D0E94561D0E941B1D0E943F\r
+:102E6000721D0E9482220E94D62180E090E00E9482\r
+:102E7000F01180E090E00C9406120E94361D0C9434\r
+:102E800029170E94661C292F22952F7030E02C30C4\r
+:102E900031054CF42A3031056CF4225031092230CE\r
+:102EA000310590F407C02C30310551F02F30310539\r
+:102EB00039F00AC0803E10F0803F31F481E008957F\r
+:102EC00093FB882780F9089580E00895CF93DF93DE\r
+:102ED00000D000D01F92CDB7DEB70F900F900F90AB\r
+:102EE0000F900F90DF91CF910895CF93DF9300D093\r
+:102EF00000D000D0CDB7DEB726960FB6F894DEBF6F\r
+:102F00000FBECDBFDF91CF9108951F93CF93DF9375\r
+:102F1000C0917B0116E080917C01C81799F0D0E048\r
+:102F20001C9FF0011D9FF00D1124E358FE4F4081BE\r
+:102F3000518162817381848195810E9475172196E8\r
+:102F4000C770E9CFDF91CF911F9108954091AD01F6\r
+:102F50005091AE016091AF017091B0018091B101CB\r
+:102F60009091B2010C947517CF938091B201829524\r
+:102F70008F7009F05FC08091AF01882309F45AC0B7\r
+:102F800020917B01A0917C016091AD017091AE0117\r
+:102F90008091B0019091B10131E06F3F09F030E0D4\r
+:102FA000B32FC6E02A1709F445C0009721F07F3FF0\r
+:102FB00021F44B2F03C041E001C040E030E040FD70\r
+:102FC00035C0C29FF001C39FF00D1124E358FE4F9E\r
+:102FD000418174132BC04081641328C04281411188\r
+:102FE00025C0438154814817590710F441505109B5\r
+:102FF000481B590B483C5105C8F48091B2018F70B1\r
+:1030000080618093B20186E0829FF001839FF00D82\r
+:103010001124EE57FE4F80818F70806180838DEA8E\r
+:1030200091E00E941C14CF910C9485172F5F3F4FA5\r
+:103030002770B8CFCF910895CF92DF92EF92FF9291\r
+:103040000F931F93CF93DF93CDB7DEB762970FB681\r
+:10305000F894DEBF0FBECDBF8C0185E0F801DE0124\r
+:103060001D9601900D928A95E1F7D8014C91119629\r
+:103070005C91119712966C9112971396ED90FC90BB\r
+:1030800014977091AD01E091AE012091B0013091A3\r
+:10309000B1012115310531F0EF3F31F481E07F3F7F\r
+:1030A00019F403C081E001C080E0B82FB170CB2ECD\r
+:1030B00080FD6CC1D090AF01DD2009F4F5C0F09126\r
+:1030C000B201E216F30638F0C701821B930B883C6D\r
+:1030D000910548F09BC0209530952E0D3F1D283C52\r
+:1030E000310508F093C08F2F807F09F052C0E5139F\r
+:1030F00014C0741312C0D62E61110FC0FF70F0619E\r
+:10310000F093B2010E94A6178DEA91E00E941C1470\r
+:103110008091B201F80185836CC1EF2831F05F3FE7\r
+:1031200031F481E04F3F19F403C081E001C080E039\r
+:1031300080FD03C081E0862701C080E0F82FF17098\r
+:10314000FF2E80FF1CC080917B0120917C0136E026\r
+:10315000821709F428C190E0389FF001399FF00DE3\r
+:103160001124E358FE4F7181571306C07081471335\r
+:1031700003C07281671303C001968770E9CFD62E12\r
+:10318000662309F436C18091B20181608093B20157\r
+:1031900053C0E51308C0741306C0611104C0D80100\r
+:1031A0001596FC93AEC04D875E878D859E856A8B94\r
+:1031B0000E9441176A89882329F1D62E662311F1CE\r
+:1031C0002091B201822F82958F7090E002970CF4CB\r
+:1031D00060C08091AD019091AE0198878F83198670\r
+:1031E000FB86EA862C87CE01079651C0E51731F1A0\r
+:1031F0004D875E878D859E856A8B0E9441176A89FF\r
+:1032000081112EC0C8010E941C14A4C08F2F807F82\r
+:1032100069F77E2DF98AE88A89890E9466178DEA06\r
+:1032200091E00E941C14EDEAF1E086E0DF011D92BE\r
+:103230008A95E9F70E94A617D12CDBC07413D8CF6A\r
+:103240006111D6CFD8011596FC93C8010E941C14B9\r
+:10325000EDEAF1E086E0DF011D928A95E9F7C9C049\r
+:10326000D62E662379F22091B201822F82958F703B\r
+:1032700090E0029774F08091AD019091AE019A8335\r
+:1032800089831B82FD82EC822E83CE0101960E94EF\r
+:103290001C1486E0F801ADEAB1E001900D928A9528\r
+:1032A000E1F70E94B4176FC0E216F30628F0C701D9\r
+:1032B000821B930B9C0104C0209530952E0D3F1D61\r
+:1032C000283C310508F052C0D62E662309F49ACF67\r
+:1032D000E5132CC074132AC08091B20180FD1DC07B\r
+:1032E000982F92959F70C9F0D80115968C931597D9\r
+:1032F0009F3039F09F5F9295907F8F70892B159644\r
+:103300008C93C8010E941C1486E0F801ADEAB1E07C\r
+:1033100001900D928A95E1F736C086E0F801ADEA9A\r
+:10332000B1E001900D928A95E1F763C04D875E8709\r
+:103330008D859E850E944117882379F086E0F801EB\r
+:10334000ADEAB1E001900D928A95E1F70E94B417C1\r
+:103350000E94A617DD24D3944CC08091B2018160F5\r
+:103360008093B201C8010E941C1443C07E2DF98ACB\r
+:10337000E88A89890E946617EDEAF1E086E0DF01BC\r
+:103380001D928A95E9F70E94A61733C0662309F4B7\r
+:1033900039CF4D875E878D859E850E944117882392\r
+:1033A00009F430CFCBCF4D875E878D859E850E94F7\r
+:1033B000661C292F22952F7030E0223031052CF425\r
+:1033C0009F7041F0811106C00CC0243031052CF4EF\r
+:1033D0009F7049F4805E883020F0C8010E941C1460\r
+:1033E000CF2CDC2C06C0D80115969C91907F91F7CC\r
+:1033F000F8CF8D2D62960FB6F894DEBF0FBECDBF0D\r
+:10340000DF91CF911F910F91FF90EF90DF90CF90C0\r
+:1034100008951F93CF93DF93CDB7DEB72C970FB6E8\r
+:10342000F894DEBF0FBECDBF4F83588769877A8778\r
+:103430008B879C87CE0107960E941C188823C1F0B9\r
+:103440002F8138858A859B85892B31F03F3F11F08C\r
+:1034500080E003C02F3FE1F781E0811147C04F8139\r
+:10346000588569857A858B859C850E9475173EC035\r
+:1034700086E0FE013796DE01119601900D928A9545\r
+:10348000E1F7FF81E8854A855B854115510531F0FB\r
+:10349000EF3F31F481E0FF3F19F403C081E001C048\r
+:1034A00080E080FD23C020917C0130E0C9010196BD\r
+:1034B0008770992760917B0170E086179707F1F17B\r
+:1034C000F983EA835D834C8396E0929FD001939FBA\r
+:1034D000B00D1124A358BE4FFE01319601900D92FC\r
+:1034E0009A95E1F780937C010E94851716E0809100\r
+:1034F0007B0190917C01891779F1189FC0011124FB\r
+:1035000083589E4F0E941C18882331F1E0917B0163\r
+:103510001E9FF0011124E358FE4F408151816281CA\r
+:103520007381848195810E94751780917B0190E061\r
+:1035300001968770992780937B01D9CF0E943D1710\r
+:1035400010927C0110927B01EDEAF1E086E0DF0150\r
+:103550001D928A95E9F7CACF2C960FB6F894DEBF74\r
+:103560000FBECDBFDF91CF911F910895EF92FF92D3\r
+:103570000F931F93CF93DF939C01009709F471C0C1\r
+:10358000F12CEE24E394E9012196F901849184372A\r
+:1035900040F4843008F056C0813081F0823021F14F\r
+:1035A00060C0853709F449C0C0F19CE7980F903797\r
+:1035B00008F057C08F770E94BF1346C089010E5F85\r
+:1035C0001F4FFE01849190E2980F983050F487705D\r
+:1035D000FE2D01C0FF0F8A95EAF78F2F0E94491D2B\r
+:1035E00015C00E94F71214C089010E5F1F4FFE0123\r
+:1035F000849190E2980F983068F48770FE2D01C096\r
+:10360000FF0F8A95EAF78F2F0E944F1D0E94721DAF\r
+:10361000E8011AC00E94BF13FBCF2E5F3F4FFE018F\r
+:10362000C491CC2341F08FE99FE00197F1F700C0EE\r
+:103630000000C150F6CFE90107C0FE01F490E90196\r
+:10364000229602C00E94F7128F2D882341F0EFE9E5\r
+:10365000FFE03197F1F700C000008150F6CF9E01E6\r
+:1036600092CFDF91CF911F910F91FF90EF9008952E\r
+:1036700008956093B7017093B8018093B901909356\r
+:10368000BA010C9429170F931F930091B701109161\r
+:10369000B8012091B9013091BA01062B172B282BC4\r
+:1036A000392B0093B7011093B8012093B9013093DF\r
+:1036B000BA011F910F910C9429170F931F9300913A\r
+:1036C000B7011091B8012091B9013091BA010623D8\r
+:1036D0001723282339230093B7011093B8012093AF\r
+:1036E000B9013093BA011F910F910C9429170F93D0\r
+:1036F0001F930091B7011091B8012091B901309149\r
+:10370000BA0106271727282739270093B7011093F6\r
+:10371000B8012093B9013093BA011F910F910C9415\r
+:1037200029171092B3011092B4011092B5011092B2\r
+:10373000B6010C94291741E050E060E070E004C04D\r
+:10374000440F551F661F771F8A95D2F74093B30128\r
+:103750005093B4016093B5017093B6010C9429178E\r
+:1037600041E050E060E070E004C0440F551F661F68\r
+:10377000771F8A95D2F78091B3019091B401A091FF\r
+:10378000B501B091B601842B952BA62BB72B809356\r
+:10379000B3019093B401A093B501B093B6010C941A\r
+:1037A000291741E050E060E070E004C0440F551F6D\r
+:1037B000661F771F8A95D2F7409550956095709552\r
+:1037C0008091B3019091B401A091B501B091B6017F\r
+:1037D00084239523A623B7238093B3019093B40148\r
+:1037E000A093B501B093B6010C94291741E050E0C5\r
+:1037F00060E070E004C0440F551F661F771F8A9574\r
+:10380000D2F78091B3019091B401A091B501B0912C\r
+:10381000B60184279527A627B7278093B3019093F5\r
+:10382000B401A093B501B093B6010C9429170F937E\r
+:103830001F930091B3011091B4012091B501309113\r
+:10384000B601062B172B282B392B0093B3011093AD\r
+:10385000B4012093B5013093B6011F910F910C94E0\r
+:1038600029170F931F930091B3011091B401209178\r
+:10387000B5013091B601062317232823392300937D\r
+:10388000B3011093B4012093B5013093B6011F9199\r
+:103890000F910C9429170F931F930091B30110916E\r
+:1038A000B4012091B5013091B601062717272827CA\r
+:1038B00039270093B3011093B4012093B5013093DD\r
+:1038C000B6011F910F910C9429170895CF92DF92A2\r
+:1038D000EF92FF920F931F93CF93DF93EC01C09071\r
+:1038E000B701D090B801E090B901F090BA01809191\r
+:1038F000B3019091B401A091B501B091B601C82A6D\r
+:10390000D92AEA2AFB2A0FE110E0B701A601002E0E\r
+:1039100004C076956795579547950A94D2F740FF6E\r
+:1039200007C0BE01802F0E9498098130910539F4AB\r
+:103930000150110950F7BE0180E00E949809DF9103\r
+:10394000CF911F910F91FF90EF90DF90CF9008954E\r
+:1039500090910C019923D9F090910D019923B9F020\r
+:10396000982F9695969596959F3088F5E0910E0143\r
+:10397000F0910F01E90FF11D877021E030E001C0E7\r
+:10398000220F8A95EAF78181822B818308954091E5\r
+:103990000E0150910F0120E030E09FEFFA01E20F9D\r
+:1039A000F31F6281681799F09F3F19F4611101C0FC\r
+:1039B000922F2F5F3F4F2E30310581F79F3F39F017\r
+:1039C000FA01E90FF11D97FDFA9582830895089594\r
+:1039D00090910C019923E1F090910D019923C1F090\r
+:1039E000982F9695969596959F3020F5E0910E012B\r
+:1039F000F0910F01E90FF11D877021E030E001C067\r
+:103A0000220F8A95EAF72095818128232183089542\r
+:103A100040910E0150910F0120E030E0FA01E20FD9\r
+:103A2000F31F9281981301C012822F5F3F4F2E30F7\r
+:103A30003105A1F7089581E090E0E0910E01F09149\r
+:103A40000F01E80FF91F1082019680319105A9F747\r
+:103A500008959091CE01982B9093CE010895809572\r
+:103A60009091CE0198239093CE0108951092CE01AB\r
+:103A700008959091CD01982B9093CD010895809554\r
+:103A80009091CD0198239093CD0108951092CD018E\r
+:103A900008959091CC01982B9093CC010895809536\r
+:103AA0009091CC0198239093CC0108951092CC0171\r
+:103AB00008958093BB0108951092BB010895409131\r
+:103AC0000E0150910F0120E030E080E0FA01E20F9A\r
+:103AD000F31F918191118F5F2F5F3F4F2F30310581\r
+:103AE000A9F70895E0910E01F0910F018091CE01A8\r
+:103AF0008083E0910E01F0910F0180819091CD01C2\r
+:103B0000892B8083E0910E01F0910F0180819091CB\r
+:103B1000CC01892B80839091BB01992361F0E091C6\r
+:103B20000E01F0910F018081892B80830E945F1D1F\r
+:103B300081111092BB0180910E0190910F010C94A4\r
+:103B4000DA11CF92DF92EF92FF920F931F936C01E5\r
+:103B5000EE24FF24C114D104E104F10421F46B012B\r
+:103B60007C0180E001C080E133272F2D1E2D0D2D1B\r
+:103B7000011511052105310519F0885F68017901EA\r
+:103B800097018601A4E03695279517950795AA9584\r
+:103B9000D1F7011511052105310519F08C5F680178\r
+:103BA000790197018601F2E03695279517950795DB\r
+:103BB000FA95D1F7011511052105310519F08E5F30\r
+:103BC00068017901B701A6017695679557954795E4\r
+:103BD000452B462B472B09F08F5F1F910F91FF90CC\r
+:103BE000EF90DF90CF9008958091E801843009F143\r
+:103BF0001092D00120E488E190E00FB6F894A895E7\r
+:103C0000809360000FBE2093600083B7817F846043\r
+:103C100083BF83B7816083BF7894889583B78E7F95\r
+:103C200083BF88E10FB6F894809360001092600023\r
+:103C30000FBE089508950895CF930E941A1E0E9402\r
+:103C4000C2070E941B1EC0E08C2F0E94AF0881118A\r
+:103C500005C0CF5FCE30C1F780E001C081E0CF91D9\r
+:103C600008950E943D170E94CE110C94D30A82E061\r
+:103C700084BD93E095BD9AEF97BD80936E00089543\r
+:103C80002FB7F8948091D1019091D201A091D301E6\r
+:103C9000B091D4012FBF0895CF92DF92EF92FF929F\r
+:103CA0000F931F932FB7F8944091D1015091D201F7\r
+:103CB0006091D3017091D4012FBF6A017B01EE2482\r
+:103CC000FF248C0120E030E0C016D106E206F306A6\r
+:103CD00010F441505109481B590BCA011F910F9113\r
+:103CE000FF90EF90DF90CF9008951F920F920FB644\r
+:103CF0000F9211248F939F93AF93BF938091D10123\r
+:103D00009091D201A091D301B091D4010196A11D4F\r
+:103D1000B11D8093D1019093D201A093D301B093B0\r
+:103D2000D401BF91AF919F918F910F900FBE0F90D3\r
+:103D30001F9018950E94D40EF8942FEF87EA91E611\r
+:103D4000215080409040E1F700C0000087E090EBF8\r
+:103D5000DC018093F1019093F201A093F301B09301\r
+:103D6000F4012CE088E190E00FB6F894A8958093D8\r
+:103D700060000FBE20936000FFCFEF92FF920F9381\r
+:103D80001F93CF93DF93E82EF12C8F2D0E94AF0865\r
+:103D9000C0E0D0E0082F10E098010C2E02C035954D\r
+:103DA00027950A94E2F720FD05C02196C630D1057B\r
+:103DB00099F709C06C2F7F2D80E00E947609E812E8\r
+:103DC000F4CF81E005C0F3948EE0F812DECF80E0FE\r
+:103DD000DF91CF911F910F91FF90EF900895CF93B6\r
+:103DE000C82F8CE20E94BD1E882321F08C2FCF911A\r
+:103DF0000C94BD1E80E0CF910895CF930E94422085\r
+:103E0000811102C00E942820C5E6C15049F00E94DD\r
+:103E1000C2078FE39CE90197F1F700C00000F5CFDE\r
+:103E200089E20E94EF1E811111C18AE20E94EF1EF9\r
+:103E300081110E94282085E00E94EF1E81110E94BE\r
+:103E40009A1E0E944D208093CF0187E00E94EF1EB2\r
+:103E5000882399F18BE10E94EF1E882351F0909105\r
+:103E6000CF0191FB882780F921E0822780FB91F91F\r
+:103E700022C08EE00E94EF1E882351F09091CF0166\r
+:103E800092FB882780F921E0822780FB92F913C0FA\r
+:103E900080E10E94EF1E9091CF01882341F093FBB7\r
+:103EA000882780F921E0822780FB93F904C0892FBD\r
+:103EB000809580FB90F99093CF018091CF010E9473\r
+:103EC00051200E945F208093E20180EE0E94EF1E4D\r
+:103ED000882341F08091E201982F909590FB80F922\r
+:103EE0008093E20189E30E94EF1E882359F09091AC\r
+:103EF000E20191FB882780F921E0822780FB91F97C\r
+:103F00009093E20182EE0E94EF1E882359F0909177\r
+:103F1000E20192FB882780F921E0822780FB92F959\r
+:103F20009093E20186EE0E94EF1E882359F0909153\r
+:103F3000E20193FB882780F921E0822780FB93F937\r
+:103F40009093E20183EE0E94EF1E882359F0909136\r
+:103F5000E20194FB882780F921E0822780FB94F915\r
+:103F60009093E20185E30E94EF1E882359F090911F\r
+:103F7000E20195FB882780F921E0822780FB95F9F3\r
+:103F80009093E20181E30E94EF1E882359F0909103\r
+:103F9000E20196FB882780F921E0822780FB96F9D1\r
+:103FA0009093E20181E10E94EF1E882359F09091E5\r
+:103FB000E20197FB882780F921E0822780FB97F9AF\r
+:103FC0009093E2018091E2010E9463208091E201DE\r
+:103FD00087FB882780F980930D0187E20E94EF1EFE\r
+:103FE000C82F8EE10E94EF1E8111C2608FE10E94F6\r
+:103FF000EF1E8111C46080E20E94EF1E8111C86033\r
+:1040000081E20E94EF1E8111C06182E20E94EF1ED8\r
+:104010008111C06283E20E94EF1E8111C06484E2BC\r
+:104020000E94EF1E882311F0C06802C0CC2329F043\r
+:104030008C2F0E945A206C2F03C00E945620682F9C\r
+:1040400070E080E090E0CF910C94391BCF910895FF\r
+:104050006DEE7EEF80E090E00E94812660E082E0DD\r
+:1040600090E00E94732660E083E090E00E94732657\r
+:1040700060E084E090E00E94732660E085E090E0DC\r
+:104080000C94732680E090E00E946D2621E08D3E26\r
+:104090009E4F09F020E0822F089582E090E00C947A\r
+:1040A0006526682F82E090E00C94732683E090E010\r
+:1040B0000C946526682F83E090E00C94732684E0CE\r
+:1040C00090E00C946526682F84E090E00C947326B1\r
+:1040D0008091D70180FF0BC06091130185E0689F3C\r
+:1040E000B001112475956795759567952AC081FF74\r
+:1040F00009C06091130185E0689FB0011124759596\r
+:1041000067951FC082FF07C06091130185E0689F1B\r
+:10411000B001112416C04091D8014423C9F0609128\r
+:104120001201461788F72091130185E0289F90011E\r
+:104130001124429FC001439F900D112470E00E9402\r
+:1041400037266038710540F46115710539F002C0F9\r
+:1041500065E070E0862F08958FE7089581E0089567\r
+:104160008091D70180FF08C06091110170E07595C2\r
+:1041700067957595679521C081FF06C06091110113\r
+:1041800070E07595679519C082FF04C060911101B8\r
+:1041900070E010C08091D8018823C1F060911001B7\r
+:1041A0008617A0F790911101989FC001112470E02B\r
+:1041B0000E9437266038710528F46115710521F0D9\r
+:1041C000862F08958FE7089581E0089561E070E0FB\r
+:1041D000F4CF803F21F40E946820819504C0813F84\r
+:1041E00029F40E9468208093DB010895823F21F426\r
+:1041F0000E946820819504C0833F29F40E946820B2\r
+:104200008093DA010895893F19F40E94B02005C017\r
+:104210008A3F31F40E94B02081958093DC0108959B\r
+:104220008B3F21F40E94B020819504C08C3F29F47B\r
+:104230000E94B0208093DD010895843F21F4809195\r
+:10424000D901816017C0853F21F48091D901826036\r
+:1042500011C0863F21F48091D90184600BC0873F53\r
+:1042600021F48091D901886005C0883F31F48091A4\r
+:10427000D90180618093D90108958D3F21F4809107\r
+:10428000D70181600BC08E3F21F48091D7018260FD\r
+:1042900005C08F3F29F48091D70184608093D701B6\r
+:1042A0000895803F39F48091DB0187FF6CC0109244\r
+:1042B000DB0169C0813F29F48091DB011816BCF352\r
+:1042C00062C09091DA01823F29F497FF5CC010929E\r
+:1042D000DA0159C0833F19F41916CCF354C0893F51\r
+:1042E00041F48091DC0118160CF04DC01092DC01F5\r
+:1042F0004AC08A3F29F48091DC0187FF44C0F6CF91\r
+:104300008B3F39F48091DD0187FF3DC01092DD01C4\r
+:104310003AC08C3F29F48091DD011816BCF333C0FC\r
+:10432000843F21F48091D9018E7F17C0853F21F40D\r
+:104330008091D9018D7F11C0863F21F48091D901F0\r
+:104340008B7F0BC0873F21F48091D901877F05C007\r
+:10435000883F31F48091D9018F7E8093D90113C0B9\r
+:104360008D3F21F48091D7018E7F0BC08E3F21F4C9\r
+:104370008091D7018D7F05C08F3F29F48091D701AF\r
+:104380008B7F8093D7018091DA0181110EC08091DB\r
+:10439000DB0181110AC08091DC01811106C080918E\r
+:1043A000DD01811102C01092D801089589ED91E0DC\r
+:1043B0000E94E5110E94401E9093D6018093D50182\r
+:1043C00008951F93CF93DF938091D5019091D601EB\r
+:1043D0000E944C1E4091D801442321F020911401E9\r
+:1043E00030E006C0209115015AE0259F900111246C\r
+:1043F0008217930708F482C08091DA011091DB01E3\r
+:10440000D091DC01C091DD01811107C0111105C0FF\r
+:10441000D11103C0CC2309F471C04F3F19F04F5F95\r
+:104420004093D801181624F40E9468208093DA0182\r
+:104430008091DA0187FF05C00E94682081958093F2\r
+:10444000DA01111624F40E9468208093DB01809128\r
+:10445000DB0187FF05C00E94682081958093DB0106\r
+:104460006091DA01662339F11091DB01112319F112\r
+:10447000772767FD7095872F972F0E94482523E3A4\r
+:1044800033E343E35FE30E94AC250E94152560936C\r
+:10449000DA01612F772767FD7095872F972F0E948C\r
+:1044A000482523E333E343E35FE30E94AC250E9406\r
+:1044B00015256093DB011D1624F40E94B020809323\r
+:1044C000DC018091DC0187FF05C00E94B02081954E\r
+:1044D0008093DC011C1624F40E94B0208093DD013F\r
+:1044E0008091DD0187FF05C00E94B02081958093F7\r
+:1044F000DD01DF91CF911F910C94D621DF91CF91F7\r
+:104500001F910895E9EDF1E085E0DF011D928A95A4\r
+:10451000E9F71092D8011092D7010895833081F104\r
+:1045200028F4813059F08230D1F00895853009F4B3\r
+:1045300049C0B8F1863009F456C00895209115019C\r
+:10454000862F90E0820F911D8F3F910520F4620F1E\r
+:104550006093150108958FEF8093150108952091C0\r
+:104560001401862F90E0820F911D8F3F910520F45A\r
+:10457000620F6093140108958FEF809314010895E2\r
+:1045800020911301862F90E0820F911D8F3F91059E\r
+:1045900020F4620F6093130108958FEF809313014D\r
+:1045A000089520911201862F90E0820F911D8F3F78\r
+:1045B000910520F4620F6093120108958FEF8093AC\r
+:1045C0001201089520911101862F90E0820F911D14\r
+:1045D0008F3F910520F4620F6093110108958FEFD2\r
+:1045E00080931101089520911001862F90E0820F91\r
+:1045F000911D8F3F910520F4620F60931001089583\r
+:104600008FEF809310010895833011F128F48130E9\r
+:1046100049F0823091F00895853081F120F18630A3\r
+:10462000C1F1089580911501681720F4861B8093CD\r
+:1046300015010895109215010895809114016817CD\r
+:1046400020F4861B8093140108951092140108959C\r
+:1046500080911301681720F4861B8093130108953D\r
+:1046600010921301089580911201681720F4861B9F\r
+:104670008093120108951092120108958091110102\r
+:10468000681720F4861B8093110108951092110180\r
+:10469000089580911001681720F4861B8093100103\r
+:1046A00008951092100108958D3109F442C020F54B\r
+:1046B0008E3009F47CC070F4873009F45EC020F4B9\r
+:1046C000863009F442C033C08830D1F18B3009F410\r
+:1046D000AAC02DC0863109F4A6C038F4803109F48F\r
+:1046E00070C0813109F47EC022C0893109F49BC0B9\r
+:1046F0008B3109F452C01BC0853309F48CC048F4D7\r
+:10470000873209F488C008F478C0893209F483C07C\r
+:104710000EC0833438F48A3308F06DC0883309F44E\r
+:1047200082C005C0833409F476C08834C1F080E0CB\r
+:1047300008950E94CF240E94CE110E94D30A73C014\r
+:104740000E944D200E945F206EC08091CF01817F2A\r
+:104750008E7F8093CF0181E08093DF0108950E94D6\r
+:104760003D172FEF83ED90E3215080409040E1F71B\r
+:1047700000C000000E949A1E56C09091CF01892F60\r
+:104780008095817080FB90F919F09660986027C041\r
+:10479000997F977F9093CF0146C09091CF0191FB75\r
+:1047A000882780F921E0822780FB91F913C090913E\r
+:1047B000CF0192FB882780F921E0822780FB92F9C4\r
+:1047C00009C09091CF0193FB882780F921E08227CF\r
+:1047D00080FB93F99093CF01882329F19160909306\r
+:1047E000CF0108950E943D1780910D0191E0892726\r
+:1047F00080930D0118C027EC01C023EE280F61E063\r
+:1048000070E080E090E004C0660F771F881F991F5A\r
+:104810002A95D2F704C061E070E080E090E00E9449\r
+:10482000391B0E943D1781E0089580E0089580E0E3\r
+:104830000895CF93C82F8091DF01813079F018F06F\r
+:104840008230D1F184C0A0910E01B0910F018C9102\r
+:10485000813169F0823209F07CC009C0A0910E015B\r
+:10486000B0910F018C91813111F0823249F48C2F7B\r
+:104870000E94152481111DC08C2F0E9454231AC040\r
+:104880008C2F0E941724811114C0C43179F048F490\r
+:10489000CB3079F0C03109F060C082E08093DF0155\r
+:1048A00008C0C93219F0C83321F057C01092DF0197\r
+:1048B00054C081E0817053C0C93289F118F5C43108\r
+:1048C00071F1A8F4C73009F046C08AE08093150161\r
+:1048D00094E19093140193E090931301809312015B\r
+:1048E00088E08093110188E28093100134C0CE519A\r
+:1048F000C63088F5EC2FF0E0E65DFE4F80818093B6\r
+:10490000DE0129C0CE34E9F020F4CB3421F56AE091\r
+:1049100013C0C13579F0C235F1F461E00DC080916A\r
+:10492000DE01882319F01092DE0115C081E080932A\r
+:10493000DF0115C061E006C08091DE010E948E2279\r
+:104940000AC06AE08091DE010E94042304C0109234\r
+:10495000DF0180E004C081E002C080E0ABCFCF91F6\r
+:104960000895E1E8F0E08081886080838081816043\r
+:1049700080838FB7F89493E09093890090ED9093A3\r
+:1049800088008FBF0895EFE6F0E080818260808329\r
+:104990000895EFE6F0E080818D7F80830895EFE653\r
+:1049A000F0E0808192E08927808308951F920F9222\r
+:1049B0000FB60F9211242F933F934F935F936F93F2\r
+:1049C0007F938F939F93AF93BF93EF93FF938091C8\r
+:1049D000E0019091E10101969093E1018093E00163\r
+:1049E000811103C082E00E94D30AE091E101E695C3\r
+:1049F000E695F0E0EC51F84FE4918091E0018E13E0\r
+:104A000003C080E00E94D30AFF91EF91BF91AF9164\r
+:104A10009F918F917F916F915F914F913F912F91D6\r
+:104A20000F900FBE0F901F90189504D06894B1118D\r
+:104A30008DC0089570D088F09F5790F0B92F9927B6\r
+:104A4000B751A0F0D1F0660F771F881F991F1AF099\r
+:104A5000BA95C9F712C0B13081F077D0B1E00895AE\r
+:104A600074C0672F782F8827B85F39F0B93FCCF32F\r
+:104A7000869577956795B395D9F73EF4909580958F\r
+:104A8000709561957F4F8F4F9F4F0895E89409C0AF\r
+:104A900097FB3EF490958095709561957F4F8F4F71\r
+:104AA0009F4F9923A9F0F92F96E9BB279395F69587\r
+:104AB000879577956795B795F111F8CFFAF4BB0F05\r
+:104AC00011F460FF1BC06F5F7F4F8F4F9F4F16C069\r
+:104AD000882311F096E911C0772321F09EE8872FF3\r
+:104AE000762F05C0662371F096E8862F70E060E0AF\r
+:104AF0002AF09A95660F771F881FDAF7880F969528\r
+:104B0000879597F9089557FD9058440F551F59F010\r
+:104B10005F3F71F04795880F97FB991F61F09F3FAA\r
+:104B200079F087950895121613061406551FF2CFD3\r
+:104B30004695F1DF08C0161617061806991FF1CF23\r
+:104B400086957105610508940895E894BB2766274A\r
+:104B50007727CB0197F908950BD078C069D028F05A\r
+:104B60006ED018F0952309F05AC05FC01124EECF23\r
+:104B7000CADFA0F3959FD1F3950F50E0551F629FB8\r
+:104B8000F001729FBB27F00DB11D639FAA27F00DA6\r
+:104B9000B11DAA1F649F6627B00DA11D661F829FCD\r
+:104BA0002227B00DA11D621F739FB00DA11D621FB2\r
+:104BB000839FA00D611D221F749F3327A00D611DCF\r
+:104BC000231F849F600D211D822F762F6A2F1124B1\r
+:104BD0009F5750408AF0E1F088234AF0EE0FFF1F04\r
+:104BE000BB1F661F771F881F91505040A9F79E3F3B\r
+:104BF000510570F014C0AACF5F3FECF3983EDCF390\r
+:104C0000869577956795B795F795E7959F5FC1F777\r
+:104C1000FE2B880F911D9695879597F9089597F922\r
+:104C20009F6780E870E060E008959FEF80EC089552\r
+:104C300000240A941616170618060906089500247B\r
+:104C40000A9412161306140605060895092E0394F5\r
+:104C5000000C11F4882352F0BB0F40F4BF2B11F469\r
+:104C600060FF04C06F5F7F4F8F4F9F4F089597FB8A\r
+:104C7000072E16F4009407D077FD09D00E94512624\r
+:104C800007FC05D03EF4909581959F4F089570954F\r
+:104C900061957F4F0895EE0FFF1F0590F491E02D71\r
+:104CA0000994AA1BBB1B51E107C0AA1FBB1FA61773\r
+:104CB000B70710F0A61BB70B881F991F5A95A9F7C5\r
+:104CC00080959095BC01CD010895F999FECF92BDD4\r
+:104CD00081BDF89A992780B50895A8E1B0E042E037\r
+:104CE00050E00C948826262FF999FECF1FBA92BD6A\r
+:104CF00081BD20BD0FB6F894FA9AF99A0FBE0196BD\r
+:104D000008950E947326272F0C947426DC01CB0192\r
+:104D1000FC01F999FECF06C0F2BDE1BDF89A3196CB\r
+:104D200000B40D9241505040B8F70895F894FFCF69\r
+:104D30002002D50A620B3F0B0B0BD80A0101BC0104\r
+:104D400028080A03140A3F4D3639A50758072207D9\r
+:104D5000E9067C069506AE06C706010203040506B1\r
+:044D60000708090037\r
+:00000001FF\r
diff --git a/keyboard/ergodox_ez/keymaps/german-manuneo/keymap.c b/keyboard/ergodox_ez/keymaps/german-manuneo/keymap.c
new file mode 100644 (file)
index 0000000..d8911af
--- /dev/null
@@ -0,0 +1,783 @@
+#include "ergodox_ez.h"
+#include "action_layer.h"
+#include "keymap_common.h"
+#include "keymap_extras/keymap_german.h"
+
+#define UC_ASYMPTOTICALLY_EQUAL_TO 0
+#define UC_DIVISION_SIGN 1
+#define UC_DOWNWARDS_ARROW 2
+#define UC_ELEMENT_OF 3
+#define UC_EMPTY_SET 4
+#define UC_FOR_ALL 5
+#define UC_GREEK_CAPITAL_LETTER_ALPHA 6
+#define UC_GREEK_CAPITAL_LETTER_BETA 7
+#define UC_GREEK_CAPITAL_LETTER_CHI 8
+#define UC_GREEK_CAPITAL_LETTER_DELTA 9
+#define UC_GREEK_CAPITAL_LETTER_EPSILON 10
+#define UC_GREEK_CAPITAL_LETTER_ETA 11
+#define UC_GREEK_CAPITAL_LETTER_GAMMA 12
+#define UC_GREEK_CAPITAL_LETTER_IOTA 13
+#define UC_GREEK_CAPITAL_LETTER_KAPPA 14
+#define UC_GREEK_CAPITAL_LETTER_LAMDA 15
+#define UC_GREEK_CAPITAL_LETTER_MU 16
+#define UC_GREEK_CAPITAL_LETTER_NU 17
+#define UC_GREEK_CAPITAL_LETTER_OMEGA 18
+#define UC_GREEK_CAPITAL_LETTER_OMICRON 19
+#define UC_GREEK_CAPITAL_LETTER_PHI 20
+#define UC_GREEK_CAPITAL_LETTER_PI 21
+#define UC_GREEK_CAPITAL_LETTER_PSI 22
+#define UC_GREEK_CAPITAL_LETTER_RHO 23
+#define UC_GREEK_CAPITAL_LETTER_SIGMA 24
+#define UC_GREEK_CAPITAL_LETTER_TAU 25
+#define UC_GREEK_CAPITAL_LETTER_THETA 26
+#define UC_GREEK_CAPITAL_LETTER_UPSILON 27
+#define UC_GREEK_CAPITAL_LETTER_XI 28
+#define UC_GREEK_CAPITAL_LETTER_ZETA 29
+#define UC_GREEK_SMALL_LETTER_ALPHA 30
+#define UC_GREEK_SMALL_LETTER_BETA 31
+#define UC_GREEK_SMALL_LETTER_CHI 32
+#define UC_GREEK_SMALL_LETTER_DELTA 33
+#define UC_GREEK_SMALL_LETTER_EPSILON 34
+#define UC_GREEK_SMALL_LETTER_ETA 35
+#define UC_GREEK_SMALL_LETTER_FINAL_SIGMA 36
+#define UC_GREEK_SMALL_LETTER_GAMMA 37
+#define UC_GREEK_SMALL_LETTER_IOTA 38
+#define UC_GREEK_SMALL_LETTER_KAPPA 39
+#define UC_GREEK_SMALL_LETTER_LAMDA 40
+#define UC_GREEK_SMALL_LETTER_MU 41
+#define UC_GREEK_SMALL_LETTER_NU 42
+#define UC_GREEK_SMALL_LETTER_OMEGA 43
+#define UC_GREEK_SMALL_LETTER_OMICRON 44
+#define UC_GREEK_SMALL_LETTER_PHI 45
+#define UC_GREEK_SMALL_LETTER_PI 46
+#define UC_GREEK_SMALL_LETTER_PSI 47
+#define UC_GREEK_SMALL_LETTER_RHO 48
+#define UC_GREEK_SMALL_LETTER_SIGMA 49
+#define UC_GREEK_SMALL_LETTER_TAU 50
+#define UC_GREEK_SMALL_LETTER_THETA 51
+#define UC_GREEK_SMALL_LETTER_UPSILON 52
+#define UC_GREEK_SMALL_LETTER_XI 53
+#define UC_GREEK_SMALL_LETTER_ZETA 54
+#define UC_INFINITY 55
+#define UC_LEFTWARDS_ARROW 56
+#define UC_MULTIPLICATION_SIGN 57
+#define UC_NOT_AN_ELEMENT_OF 58
+#define UC_NOT_EQUAL_TO 59
+#define UC_PLUS_MINUS_SIGN 60
+#define UC_RIGHTWARDS_ARROW 61
+#define UC_SUBSCRIPT_EIGHT 62
+#define UC_SUBSCRIPT_FIVE 63
+#define UC_SUBSCRIPT_FOUR 64
+#define UC_SUBSCRIPT_NINE 65
+#define UC_SUBSCRIPT_ONE 66
+#define UC_SUBSCRIPT_SEVEN 67
+#define UC_SUBSCRIPT_SIX 68
+#define UC_SUBSCRIPT_THREE 69
+#define UC_SUBSCRIPT_TWO 70
+#define UC_SUBSCRIPT_ZERO 71
+#define UC_SUPERSCRIPT_EIGHT 72
+#define UC_SUPERSCRIPT_FIVE 73
+#define UC_SUPERSCRIPT_FOUR 74
+#define UC_SUPERSCRIPT_LATIN_SMALL_LETTER_N 75
+#define UC_SUPERSCRIPT_NINE 76
+#define UC_SUPERSCRIPT_ONE 77
+#define UC_SUPERSCRIPT_SEVEN 78
+#define UC_SUPERSCRIPT_SIX 79
+#define UC_SUPERSCRIPT_THREE 80
+#define UC_SUPERSCRIPT_TWO 81
+#define UC_SUPERSCRIPT_ZERO 82
+#define UC_THERE_DOES_NOT_EXIST 83
+#define UC_THERE_EXISTS 84
+#define UC_UPWARDS_ARROW 85
+#define UC_VULGAR_FRACTION_ONE_EIGHTH 86
+#define UC_VULGAR_FRACTION_ONE_FIFTH 87
+#define UC_VULGAR_FRACTION_ONE_HALF 88
+#define UC_VULGAR_FRACTION_ONE_QUARTER 89
+#define UC_VULGAR_FRACTION_ONE_SIXTH 90
+#define UC_VULGAR_FRACTION_ONE_THIRD 91
+#define UC_VULGAR_FRACTION_THREE_QUARTERS 92
+#define UC_VULGAR_FRACTION_TWO_THIRDS 93
+#define UM 94
+
+#define L0   0      // layer_0
+#define L1   1      // layer_1
+#define L2   2      // layer_2
+#define L3   3      // layer_3
+#define L4   4      // layer_4
+#define L5   5      // layer_5
+#define L6   6      // layer_6
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/*
+ * .------------------------------------.------------------------------------.
+ * |MO(5)| 1  | 2  | 3  | 4  | 5  |ACUT | GRV | 6  | 7  | 8  | 9  | 0  |CIRC |
+ * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
+ * |MO(4)| X  | P  | F  | W  | G  |HOME |TG(2)| H  | J  | K  | L  | Q  |  Z  |
+ * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+ * |MO(1)| U  | I  | A  | E  | O  |-----!-----! S  | N  | R  | T  | D  | SS  |
+ * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+ * |MO(3)| UE | OE | AE | C  | V  |END  | TAB | B  | M  |COMM| DOT| UP |  Y  |
+ * '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
+ *  |    |    |LGUI|LALT|LCTL|                     !RCTL|RALT|LEFT|DOWN|RGHT|
+ *  '------------------------'                     '------------------------'
+ *                         .-----------. .-----------.
+ *                         |INS  |TG(2)| !M(UM)|DELT |
+ *                   .-----+-----+-----! !-----+-----+-----.
+ *                   !     !     | APP | ! PGUP|     !     !
+ *                   !     !     !-----! !-----!     !     !
+ *                   |BSPC |LSFT | ESC | ! PGDN|ENTER|SPACE|
+ *                   '-----------------' '-----------------'
+ */
+[L0] = KEYMAP(
+ MO(5),   DE_1,     DE_2,     DE_3,    DE_4,    DE_5,    DE_ACUT,
+ MO(4),   DE_X,     DE_P,     DE_F,    DE_W,    DE_G,    KC_HOME,
+ MO(1),   DE_U,     DE_I,     DE_A,    DE_E,    DE_O,
+ MO(3),   DE_UE,    DE_OE,    DE_AE,   DE_C,    DE_V,    KC_END,
+ KC_TRNS, KC_TRNS,  KC_LGUI,  KC_LALT, KC_LCTL,
+ /*-*/    /*-*/     /*-*/     /*-*/    /*-*/    KC_INS,  TG(2),
+ /*-*/    /*-*/     /*-*/     /*-*/    /*-*/    /*-*/    KC_APP,
+ /*-*/    /*-*/     /*-*/     /*-*/    KC_BSPC, KC_LSFT, KC_ESC,
+ DE_GRV,  DE_6,     DE_7,     DE_8,    DE_9,    DE_0,    DE_CIRC,
+ TG(2),   DE_H,     DE_J,     DE_K,    DE_L,    DE_Q,    DE_Z,
+ /*-*/    DE_S,     DE_N,     DE_R,    DE_T,    DE_D,    DE_SS,
+ KC_TAB,  DE_B,     DE_M,     DE_COMM, DE_DOT,  KC_UP,   DE_Y,
+ /*-*/    /*-*/     KC_RCTL,  KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT,
+ M(UM),   KC_DELT,
+ KC_PGUP,
+ KC_PGDN, KC_ENTER, KC_SPACE
+),
+/*
+ * .------------------------------------.------------------------------------.
+ * |     |EXLM|DQOT|PARA|    |    |     |     |    |    |    |    |RING|     |
+ * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
+ * |     |ASTR|PIPE|SLSH|LCBR|RCBR|     |     |HASH|LESS|MORE|    |DQOT|     |
+ * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+ * |     |UNDS|MINS|AMPR|LBRC|RBRC|-----!-----!DLR |LPRN|RPRN|TILD|QUOT| QST |
+ * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+ * |     |    |PLUS|EQL |    |    |     |     |BSLS|PERC|SCLN|COLN| ↑  |     |
+ * '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
+ *  |    |    |    |    |    |                     !    |    | ←  | ↓  | →  |
+ *  '------------------------'                     '------------------------'
+ *                         .-----------. .-----------.
+ *                         |     |     | !     |     |
+ *                   .-----+-----+-----! !-----+-----+-----.
+ *                   !     !     |     | !     |     !     !
+ *                   !     !     !-----! !-----!     !     !
+ *                   |     |     |     | !     |     |     |
+ *                   '-----------------' '-----------------'
+ */
+[L1] = KEYMAP(
+ KC_TRNS, DE_EXLM, DE_DQOT, DE_PARA, KC_TRNS,               KC_TRNS,               KC_TRNS,
+ KC_TRNS, DE_ASTR, DE_PIPE, DE_SLSH, DE_LCBR,               DE_RCBR,               KC_TRNS,
+ KC_TRNS, DE_UNDS, DE_MINS, DE_AMPR, DE_LBRC,               DE_RBRC,
+ KC_TRNS, KC_TRNS, DE_PLUS, DE_EQL,  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,               DE_RING,               KC_TRNS,
+ KC_TRNS, DE_HASH, DE_LESS, DE_MORE, KC_TRNS,               DE_DQOT,               KC_TRNS,
+ /*-*/    DE_DLR,  DE_LPRN, DE_RPRN, DE_TILD,               DE_QUOT,               DE_QST,
+ KC_TRNS, DE_BSLS, DE_PERC, DE_SCLN, DE_COLN,               M(UC_UPWARDS_ARROW),   KC_TRNS,
+ /*-*/    /*-*/    KC_TRNS, KC_TRNS, M(UC_LEFTWARDS_ARROW), M(UC_DOWNWARDS_ARROW), M(UC_RIGHTWARDS_ARROW),
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS
+),
+/*
+ * .------------------------------------.------------------------------------.
+ * |     | F1 | F2 | F3 | F4 | F5 | F11 | F12 | F6 | F7 | F8 | F9 |F10 |PEQL |
+ * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
+ * |     |    |    |    |    |    |     |     |    | P7 | P8 | P9 |PAST|PSLS |
+ * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+ * |     |    |    |    |    |    |-----!-----!    | P4 | P5 | P6 |PMNS|PMNS |
+ * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+ * |     |    |    |    |    |    |     | NLCK|    | P1 | P2 | P3 |PPLS|PPLS |
+ * '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
+ *  |    |    |    |    |    |                     ! P0 |PCMM|PDOT|PENT|PENT|
+ *  '------------------------'                     '------------------------'
+ *                         .-----------. .-----------.
+ *                         |     |     | !     |     |
+ *                   .-----+-----+-----! !-----+-----+-----.
+ *                   !     !     |     | !     |     !     !
+ *                   !     !     !-----! !-----!     !     !
+ *                   |     |     |     | !     |     |     |
+ *                   '-----------------' '-----------------'
+ */
+[L2] = KEYMAP(
+ KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F11,
+ 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,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS,
+ /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS,
+ /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_F12,  KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_PEQL,
+ KC_TRNS, KC_TRNS, KC_P7,   KC_P8,   KC_P9,   KC_PAST, KC_PSLS,
+ /*-*/    KC_TRNS, KC_P4,   KC_P5,   KC_P6,   KC_PMNS, KC_PMNS,
+ KC_NLCK, KC_TRNS, KC_P1,   KC_P2,   KC_P3,   KC_PPLS, KC_PPLS,
+ /*-*/    /*-*/    KC_P0,   KC_PCMM, KC_PDOT, KC_PENT, KC_PENT,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS
+),
+/*
+ * .------------------------------------.------------------------------------.
+ * |     | ¹  | ²  | ³  | ⁴  | ⁵  |  ∀  |     | ⁶  | ⁷  | ⁸  | ⁹  |  ⁰ |     |
+ * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
+ * |     | ×  | ½  | ÷  | ¼  |  ⅕ |     |     | ⅙  |    | ⅛  |    |    |     |
+ * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+ * |     |    | ±  | AT |EURO| ∅  |-----!-----! ∞  | ⁿ  | ∃  | ∈  |    |     |
+ * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+ * |     | ⅓  | ≠  | ⅔  | ¾  | ≃  |     |     |EXLM|    | ∄  | ∉  |    |     |
+ * '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
+ *  |    |    |    |    |    |                     !    |    |    |    |    |
+ *  '------------------------'                     '------------------------'
+ *                         .-----------. .-----------.
+ *                         |     |     | !     |     |
+ *                   .-----+-----+-----! !-----+-----+-----.
+ *                   !     !     |     | !     |     !     !
+ *                   !     !     !-----! !-----!     !     !
+ *                   |     |     |     | !     |     |     |
+ *                   '-----------------' '-----------------'
+ */
+[L3] = KEYMAP(
+ KC_TRNS, M(UC_SUPERSCRIPT_ONE),           M(UC_SUPERSCRIPT_TWO),                  M(UC_SUPERSCRIPT_THREE),          M(UC_SUPERSCRIPT_FOUR),               M(UC_SUPERSCRIPT_FIVE),          M(UC_FOR_ALL),
+ KC_TRNS, M(UC_MULTIPLICATION_SIGN),       M(UC_VULGAR_FRACTION_ONE_HALF),         M(UC_DIVISION_SIGN),              M(UC_VULGAR_FRACTION_ONE_QUARTER),    M(UC_VULGAR_FRACTION_ONE_FIFTH), KC_TRNS,
+ KC_TRNS, KC_TRNS,                         M(UC_PLUS_MINUS_SIGN),                  DE_AT,                            DE_EURO,                              M(UC_EMPTY_SET),
+ KC_TRNS, M(UC_VULGAR_FRACTION_ONE_THIRD), M(UC_NOT_EQUAL_TO),                     M(UC_VULGAR_FRACTION_TWO_THIRDS), M(UC_VULGAR_FRACTION_THREE_QUARTERS), M(UC_ASYMPTOTICALLY_EQUAL_TO),   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, M(UC_SUPERSCRIPT_SIX),           M(UC_SUPERSCRIPT_SEVEN),                M(UC_SUPERSCRIPT_EIGHT),          M(UC_SUPERSCRIPT_NINE),               M(UC_SUPERSCRIPT_ZERO),          KC_TRNS,
+ KC_TRNS, M(UC_VULGAR_FRACTION_ONE_SIXTH), KC_TRNS,                                M(UC_VULGAR_FRACTION_ONE_EIGHTH), KC_TRNS,                              KC_TRNS,                         KC_TRNS,
+ /*-*/    M(UC_INFINITY),                  M(UC_SUPERSCRIPT_LATIN_SMALL_LETTER_N), M(UC_THERE_EXISTS),               M(UC_ELEMENT_OF),                     KC_TRNS,                         KC_TRNS,
+ KC_TRNS, DE_EXLM,                         KC_TRNS,                                M(UC_THERE_DOES_NOT_EXIST),       M(UC_NOT_AN_ELEMENT_OF),              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
+),
+/*
+ * .------------------------------------.------------------------------------.
+ * |     | ₁  | ₂  | ₃  | ₄  | ₅  |     |     | ₆  | ₇  | ₈  | ₉  | ₀  |     |
+ * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
+ * |     | χ  | π  | φ  | ω  | γ  |     |     | η  | ξ  | κ  | λ  |    |  ζ  |
+ * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+ * |     | υ  | ι  | α  | ε  | ο  |-----!-----! σ  | ν  | ρ  | τ  | δ  |  ς  |
+ * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+ * |     |    | θ  |    |    |    |     |     | β  | μ  |    |    |    |  ψ  |
+ * '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
+ *  |    |    |    |    |    |                     !    |    |    |    |    |
+ *  '------------------------'                     '------------------------'
+ *                         .-----------. .-----------.
+ *                         |     |     | !     |     |
+ *                   .-----+-----+-----! !-----+-----+-----.
+ *                   !     !     |     | !     |     !     !
+ *                   !     !     !-----! !-----!     !     !
+ *                   |     |     |     | !     |     |     |
+ *                   '-----------------' '-----------------'
+ */
+[L4] = KEYMAP(
+ KC_TRNS, M(UC_SUBSCRIPT_ONE),              M(UC_SUBSCRIPT_TWO),            M(UC_SUBSCRIPT_THREE),          M(UC_SUBSCRIPT_FOUR),             M(UC_SUBSCRIPT_FIVE),             KC_TRNS,
+ KC_TRNS, M(UC_GREEK_SMALL_LETTER_CHI),     M(UC_GREEK_SMALL_LETTER_PI),    M(UC_GREEK_SMALL_LETTER_PHI),   M(UC_GREEK_SMALL_LETTER_OMEGA),   M(UC_GREEK_SMALL_LETTER_GAMMA),   KC_TRNS,
+ KC_TRNS, M(UC_GREEK_SMALL_LETTER_UPSILON), M(UC_GREEK_SMALL_LETTER_IOTA),  M(UC_GREEK_SMALL_LETTER_ALPHA), M(UC_GREEK_SMALL_LETTER_EPSILON), M(UC_GREEK_SMALL_LETTER_OMICRON),
+ KC_TRNS, KC_TRNS,                          M(UC_GREEK_SMALL_LETTER_THETA), 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, M(UC_SUBSCRIPT_SIX),              M(UC_SUBSCRIPT_SEVEN),          M(UC_SUBSCRIPT_EIGHT),          M(UC_SUBSCRIPT_NINE),             M(UC_SUBSCRIPT_ZERO),             KC_TRNS,
+ KC_TRNS, M(UC_GREEK_SMALL_LETTER_ETA),     M(UC_GREEK_SMALL_LETTER_XI),    M(UC_GREEK_SMALL_LETTER_KAPPA), M(UC_GREEK_SMALL_LETTER_LAMDA),   KC_TRNS,                          M(UC_GREEK_SMALL_LETTER_ZETA),
+ /*-*/    M(UC_GREEK_SMALL_LETTER_SIGMA),   M(UC_GREEK_SMALL_LETTER_NU),    M(UC_GREEK_SMALL_LETTER_RHO),   M(UC_GREEK_SMALL_LETTER_TAU),     M(UC_GREEK_SMALL_LETTER_DELTA),   M(UC_GREEK_SMALL_LETTER_FINAL_SIGMA),
+ KC_TRNS, M(UC_GREEK_SMALL_LETTER_BETA),    M(UC_GREEK_SMALL_LETTER_MU),    KC_TRNS,                        KC_TRNS,                          KC_TRNS,                          M(UC_GREEK_SMALL_LETTER_PSI),
+ /*-*/    /*-*/                             KC_TRNS,                        KC_TRNS,                        KC_TRNS,                          KC_TRNS,                          KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS,                          KC_TRNS
+),
+/*
+ * .------------------------------------.------------------------------------.
+ * |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
+ * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
+ * |     | Χ  | Π  | Φ  | Ω  | Γ  |     |     | Η  | Ξ  | Κ  | Λ  |    |  Ζ  |
+ * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+ * |     | Υ  | Ι  | Α  | Ε  | Ο  |-----!-----! Σ  | Ν  | Ρ  | Τ  | Δ  |     |
+ * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+ * |     |    | Θ  |    |    |    |     |     | Β  | Μ  |    |    |    |  Ψ  |
+ * '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
+ *  |    |    |    |    |    |                     !    |    |    |    |    |
+ *  '------------------------'                     '------------------------'
+ *                         .-----------. .-----------.
+ *                         |     |     | !     |     |
+ *                   .-----+-----+-----! !-----+-----+-----.
+ *                   !     !     |     | !     |     !     !
+ *                   !     !     !-----! !-----!     !     !
+ *                   |     |     |     | !     |     |     |
+ *                   '-----------------' '-----------------'
+ */
+[L5] = KEYMAP(
+ KC_TRNS, KC_TRNS,                            KC_TRNS,                          KC_TRNS,                          KC_TRNS,                            KC_TRNS,                            KC_TRNS,
+ KC_TRNS, M(UC_GREEK_CAPITAL_LETTER_CHI),     M(UC_GREEK_CAPITAL_LETTER_PI),    M(UC_GREEK_CAPITAL_LETTER_PHI),   M(UC_GREEK_CAPITAL_LETTER_OMEGA),   M(UC_GREEK_CAPITAL_LETTER_GAMMA),   KC_TRNS,
+ KC_TRNS, M(UC_GREEK_CAPITAL_LETTER_UPSILON), M(UC_GREEK_CAPITAL_LETTER_IOTA),  M(UC_GREEK_CAPITAL_LETTER_ALPHA), M(UC_GREEK_CAPITAL_LETTER_EPSILON), M(UC_GREEK_CAPITAL_LETTER_OMICRON),
+ KC_TRNS, KC_TRNS,                            M(UC_GREEK_CAPITAL_LETTER_THETA), 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,                            KC_TRNS,                            KC_TRNS,
+ KC_TRNS, M(UC_GREEK_CAPITAL_LETTER_ETA),     M(UC_GREEK_CAPITAL_LETTER_XI),    M(UC_GREEK_CAPITAL_LETTER_KAPPA), M(UC_GREEK_CAPITAL_LETTER_LAMDA),   KC_TRNS,                            M(UC_GREEK_CAPITAL_LETTER_ZETA),
+ /*-*/    M(UC_GREEK_CAPITAL_LETTER_SIGMA),   M(UC_GREEK_CAPITAL_LETTER_NU),    M(UC_GREEK_CAPITAL_LETTER_RHO),   M(UC_GREEK_CAPITAL_LETTER_TAU),     M(UC_GREEK_CAPITAL_LETTER_DELTA),   KC_TRNS,
+ KC_TRNS, M(UC_GREEK_CAPITAL_LETTER_BETA),    M(UC_GREEK_CAPITAL_LETTER_MU),    KC_TRNS,                          KC_TRNS,                            KC_TRNS,                            M(UC_GREEK_CAPITAL_LETTER_PSI),
+ /*-*/    /*-*/                               KC_TRNS,                          KC_TRNS,                          KC_TRNS,                            KC_TRNS,                            KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS,                            KC_TRNS
+),
+/*
+ * .------------------------------------.------------------------------------.
+ * |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
+ * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
+ * |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
+ * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+ * |     |    |    |    |    |    |-----!-----!    |    |    |    |    |     |
+ * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+ * |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
+ * '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
+ *  |    |    |    |    |    |                     !    |    |    |    |    |
+ *  '------------------------'                     '------------------------'
+ *                         .-----------. .-----------.
+ *                         |     |     | !     |     |
+ *                   .-----+-----+-----! !-----+-----+-----.
+ *                   !     !     |     | !     |     !     !
+ *                   !     !     !-----! !-----!     !     !
+ *                   |     |     |     | !     |     |     |
+ *                   '-----------------' '-----------------'
+ */
+[L6] = 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,
+ 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, 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, 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
+),
+};
+
+const uint16_t PROGMEM fn_actions[] = {};
+
+#define UC_MODE_WIN 0
+#define UC_MODE_LINUX 1
+#define UC_MODE_OSX 2
+
+// TODO: allow default mode to be configured
+static uint16_t unicode_mode = UC_MODE_WIN;
+
+uint16_t hextokeycode(uint8_t hex) {
+    if (hex == 0x0) {
+        return KC_P0;
+    }
+    if (hex < 0xA) {
+        return KC_P1 + (hex - 0x1);
+    }
+    return KC_A + (hex - 0xA);
+}
+
+void unicode_action_function(uint16_t hi, uint16_t lo) {
+    switch (unicode_mode) {
+    case UC_MODE_WIN:
+        register_code(KC_LALT);
+
+        register_code(KC_PPLS);
+        unregister_code(KC_PPLS);
+
+        register_code(hextokeycode((hi & 0xF0) >> 4));
+        unregister_code(hextokeycode((hi & 0xF0) >> 4));
+        register_code(hextokeycode((hi & 0x0F)));
+        unregister_code(hextokeycode((hi & 0x0F)));
+        register_code(hextokeycode((lo & 0xF0) >> 4));
+        unregister_code(hextokeycode((lo & 0xF0) >> 4));
+        register_code(hextokeycode((lo & 0x0F)));
+        unregister_code(hextokeycode((lo & 0x0F)));
+
+        unregister_code(KC_LALT);
+        break;
+    case UC_MODE_LINUX:
+        register_code(KC_LCTL);
+        register_code(KC_LSFT);
+
+        register_code(KC_U);
+        unregister_code(KC_U);
+
+        register_code(hextokeycode((hi & 0xF0) >> 4));
+        unregister_code(hextokeycode((hi & 0xF0) >> 4));
+        register_code(hextokeycode((hi & 0x0F)));
+        unregister_code(hextokeycode((hi & 0x0F)));
+        register_code(hextokeycode((lo & 0xF0) >> 4));
+        unregister_code(hextokeycode((lo & 0xF0) >> 4));
+        register_code(hextokeycode((lo & 0x0F)));
+        unregister_code(hextokeycode((lo & 0x0F)));
+
+        unregister_code(KC_LCTL);
+        unregister_code(KC_LSFT);
+        break;
+    case UC_MODE_OSX:
+        break;
+    }
+}
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
+    if (!record->event.pressed) {
+        return MACRO_NONE;
+    }
+    // MACRODOWN only works in this function
+    switch(id) {
+        case UM:
+            unicode_mode = (unicode_mode + 1) % 2;
+            break;
+
+case UC_GREEK_SMALL_LETTER_OMICRON:
+    unicode_action_function(0x03, 0xbf);
+    break;
+case UC_LEFTWARDS_ARROW:
+    unicode_action_function(0x21, 0x90);
+    break;
+case UC_GREEK_CAPITAL_LETTER_RHO:
+    unicode_action_function(0x03, 0xa1);
+    break;
+case UC_SUBSCRIPT_THREE:
+    unicode_action_function(0x20, 0x83);
+    break;
+case UC_VULGAR_FRACTION_ONE_EIGHTH:
+    unicode_action_function(0x21, 0x5b);
+    break;
+case UC_GREEK_SMALL_LETTER_LAMDA:
+    unicode_action_function(0x03, 0xbb);
+    break;
+case UC_VULGAR_FRACTION_ONE_THIRD:
+    unicode_action_function(0x21, 0x53);
+    break;
+case UC_GREEK_SMALL_LETTER_XI:
+    unicode_action_function(0x03, 0xbe);
+    break;
+case UC_THERE_DOES_NOT_EXIST:
+    unicode_action_function(0x22, 0x04);
+    break;
+case UC_SUPERSCRIPT_ONE:
+    unicode_action_function(0x00, 0xb9);
+    break;
+case UC_GREEK_SMALL_LETTER_BETA:
+    unicode_action_function(0x03, 0xb2);
+    break;
+case UC_SUBSCRIPT_FIVE:
+    unicode_action_function(0x20, 0x85);
+    break;
+case UC_GREEK_CAPITAL_LETTER_IOTA:
+    unicode_action_function(0x03, 0x99);
+    break;
+case UC_VULGAR_FRACTION_ONE_FIFTH:
+    unicode_action_function(0x21, 0x55);
+    break;
+case UC_GREEK_SMALL_LETTER_PSI:
+    unicode_action_function(0x03, 0xc8);
+    break;
+case UC_SUBSCRIPT_NINE:
+    unicode_action_function(0x20, 0x89);
+    break;
+case UC_SUPERSCRIPT_FOUR:
+    unicode_action_function(0x20, 0x74);
+    break;
+case UC_RIGHTWARDS_ARROW:
+    unicode_action_function(0x21, 0x92);
+    break;
+case UC_SUPERSCRIPT_SIX:
+    unicode_action_function(0x20, 0x76);
+    break;
+case UC_DOWNWARDS_ARROW:
+    unicode_action_function(0x21, 0x93);
+    break;
+case UC_GREEK_SMALL_LETTER_PI:
+    unicode_action_function(0x03, 0xc0);
+    break;
+case UC_SUPERSCRIPT_TWO:
+    unicode_action_function(0x00, 0xb2);
+    break;
+case UC_GREEK_CAPITAL_LETTER_OMEGA:
+    unicode_action_function(0x03, 0xa9);
+    break;
+case UC_GREEK_CAPITAL_LETTER_PSI:
+    unicode_action_function(0x03, 0xa8);
+    break;
+case UC_SUBSCRIPT_FOUR:
+    unicode_action_function(0x20, 0x84);
+    break;
+case UC_GREEK_CAPITAL_LETTER_NU:
+    unicode_action_function(0x03, 0x9d);
+    break;
+case UC_DIVISION_SIGN:
+    unicode_action_function(0x00, 0xf7);
+    break;
+case UC_GREEK_SMALL_LETTER_SIGMA:
+    unicode_action_function(0x03, 0xc3);
+    break;
+case UC_GREEK_SMALL_LETTER_RHO:
+    unicode_action_function(0x03, 0xc1);
+    break;
+case UC_VULGAR_FRACTION_ONE_SIXTH:
+    unicode_action_function(0x21, 0x59);
+    break;
+case UC_GREEK_SMALL_LETTER_GAMMA:
+    unicode_action_function(0x03, 0xb3);
+    break;
+case UC_VULGAR_FRACTION_TWO_THIRDS:
+    unicode_action_function(0x21, 0x54);
+    break;
+case UC_GREEK_SMALL_LETTER_NU:
+    unicode_action_function(0x03, 0xbd);
+    break;
+case UC_GREEK_SMALL_LETTER_ZETA:
+    unicode_action_function(0x03, 0xb6);
+    break;
+case UC_GREEK_SMALL_LETTER_EPSILON:
+    unicode_action_function(0x03, 0xb5);
+    break;
+case UC_GREEK_SMALL_LETTER_KAPPA:
+    unicode_action_function(0x03, 0xba);
+    break;
+case UC_SUPERSCRIPT_SEVEN:
+    unicode_action_function(0x20, 0x77);
+    break;
+case UC_GREEK_CAPITAL_LETTER_PI:
+    unicode_action_function(0x03, 0xa0);
+    break;
+case UC_GREEK_SMALL_LETTER_FINAL_SIGMA:
+    unicode_action_function(0x03, 0xc2);
+    break;
+case UC_GREEK_CAPITAL_LETTER_XI:
+    unicode_action_function(0x03, 0x9e);
+    break;
+case UC_GREEK_SMALL_LETTER_THETA:
+    unicode_action_function(0x03, 0xb8);
+    break;
+case UC_GREEK_SMALL_LETTER_ETA:
+    unicode_action_function(0x03, 0xb7);
+    break;
+case UC_SUBSCRIPT_TWO:
+    unicode_action_function(0x20, 0x82);
+    break;
+case UC_ASYMPTOTICALLY_EQUAL_TO:
+    unicode_action_function(0x22, 0x43);
+    break;
+case UC_GREEK_SMALL_LETTER_ALPHA:
+    unicode_action_function(0x03, 0xb1);
+    break;
+case UC_GREEK_CAPITAL_LETTER_PHI:
+    unicode_action_function(0x03, 0xa6);
+    break;
+case UC_GREEK_SMALL_LETTER_PHI:
+    unicode_action_function(0x03, 0xc6);
+    break;
+case UC_INFINITY:
+    unicode_action_function(0x22, 0x1e);
+    break;
+case UC_GREEK_CAPITAL_LETTER_OMICRON:
+    unicode_action_function(0x03, 0x9f);
+    break;
+case UC_ELEMENT_OF:
+    unicode_action_function(0x22, 0x08);
+    break;
+case UC_MULTIPLICATION_SIGN:
+    unicode_action_function(0x00, 0xd7);
+    break;
+case UC_SUBSCRIPT_ZERO:
+    unicode_action_function(0x20, 0x80);
+    break;
+case UC_GREEK_CAPITAL_LETTER_SIGMA:
+    unicode_action_function(0x03, 0xa3);
+    break;
+case UC_GREEK_SMALL_LETTER_OMEGA:
+    unicode_action_function(0x03, 0xc9);
+    break;
+case UC_SUBSCRIPT_ONE:
+    unicode_action_function(0x20, 0x81);
+    break;
+case UC_GREEK_CAPITAL_LETTER_ZETA:
+    unicode_action_function(0x03, 0x96);
+    break;
+case UC_GREEK_SMALL_LETTER_TAU:
+    unicode_action_function(0x03, 0xc4);
+    break;
+case UC_SUPERSCRIPT_FIVE:
+    unicode_action_function(0x20, 0x75);
+    break;
+case UC_THERE_EXISTS:
+    unicode_action_function(0x22, 0x03);
+    break;
+case UC_PLUS_MINUS_SIGN:
+    unicode_action_function(0x00, 0xb1);
+    break;
+case UC_VULGAR_FRACTION_THREE_QUARTERS:
+    unicode_action_function(0x00, 0xbe);
+    break;
+case UC_SUPERSCRIPT_THREE:
+    unicode_action_function(0x00, 0xb3);
+    break;
+case UC_EMPTY_SET:
+    unicode_action_function(0x22, 0x05);
+    break;
+case UC_UPWARDS_ARROW:
+    unicode_action_function(0x21, 0x91);
+    break;
+case UC_SUPERSCRIPT_NINE:
+    unicode_action_function(0x20, 0x79);
+    break;
+case UC_GREEK_SMALL_LETTER_DELTA:
+    unicode_action_function(0x03, 0xb4);
+    break;
+case UC_GREEK_SMALL_LETTER_MU:
+    unicode_action_function(0x03, 0xbc);
+    break;
+case UC_GREEK_CAPITAL_LETTER_KAPPA:
+    unicode_action_function(0x03, 0x9a);
+    break;
+case UC_SUBSCRIPT_EIGHT:
+    unicode_action_function(0x20, 0x88);
+    break;
+case UC_GREEK_CAPITAL_LETTER_ALPHA:
+    unicode_action_function(0x03, 0x91);
+    break;
+case UC_SUBSCRIPT_SEVEN:
+    unicode_action_function(0x20, 0x87);
+    break;
+case UC_GREEK_CAPITAL_LETTER_BETA:
+    unicode_action_function(0x03, 0x92);
+    break;
+case UC_GREEK_CAPITAL_LETTER_ETA:
+    unicode_action_function(0x03, 0x97);
+    break;
+case UC_SUPERSCRIPT_EIGHT:
+    unicode_action_function(0x20, 0x78);
+    break;
+case UC_SUPERSCRIPT_ZERO:
+    unicode_action_function(0x20, 0x70);
+    break;
+case UC_NOT_AN_ELEMENT_OF:
+    unicode_action_function(0x22, 0x09);
+    break;
+case UC_GREEK_SMALL_LETTER_UPSILON:
+    unicode_action_function(0x03, 0xc5);
+    break;
+case UC_NOT_EQUAL_TO:
+    unicode_action_function(0x22, 0x60);
+    break;
+case UC_GREEK_CAPITAL_LETTER_CHI:
+    unicode_action_function(0x03, 0xa7);
+    break;
+case UC_FOR_ALL:
+    unicode_action_function(0x22, 0x00);
+    break;
+case UC_GREEK_CAPITAL_LETTER_TAU:
+    unicode_action_function(0x03, 0xa4);
+    break;
+case UC_VULGAR_FRACTION_ONE_QUARTER:
+    unicode_action_function(0x00, 0xbc);
+    break;
+case UC_GREEK_SMALL_LETTER_CHI:
+    unicode_action_function(0x03, 0xc7);
+    break;
+case UC_GREEK_CAPITAL_LETTER_THETA:
+    unicode_action_function(0x03, 0x98);
+    break;
+case UC_GREEK_SMALL_LETTER_IOTA:
+    unicode_action_function(0x03, 0xb9);
+    break;
+case UC_GREEK_CAPITAL_LETTER_LAMDA:
+    unicode_action_function(0x03, 0x9b);
+    break;
+case UC_SUPERSCRIPT_LATIN_SMALL_LETTER_N:
+    unicode_action_function(0x20, 0x7f);
+    break;
+case UC_GREEK_CAPITAL_LETTER_UPSILON:
+    unicode_action_function(0x03, 0xa5);
+    break;
+case UC_GREEK_CAPITAL_LETTER_MU:
+    unicode_action_function(0x03, 0x9c);
+    break;
+case UC_GREEK_CAPITAL_LETTER_EPSILON:
+    unicode_action_function(0x03, 0x95);
+    break;
+case UC_GREEK_CAPITAL_LETTER_GAMMA:
+    unicode_action_function(0x03, 0x93);
+    break;
+case UC_SUBSCRIPT_SIX:
+    unicode_action_function(0x20, 0x86);
+    break;
+case UC_GREEK_CAPITAL_LETTER_DELTA:
+    unicode_action_function(0x03, 0x94);
+    break;
+case UC_VULGAR_FRACTION_ONE_HALF:
+    unicode_action_function(0x00, 0xbd);
+    break;
+        default:
+            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) {
+        case L1:
+            ergodox_right_led_1_on();
+            break;
+        case L2:
+            ergodox_right_led_2_on();
+            break;
+        case L3:
+            ergodox_right_led_3_on();
+            break;
+        case L4:
+            ergodox_right_led_1_on();
+            ergodox_right_led_2_on();
+            break;
+        case L5:
+            ergodox_right_led_1_on();
+            ergodox_right_led_3_on();
+            break;
+        // case L6:
+        //     ergodox_right_led_2_on();
+        //     ergodox_right_led_3_on();
+        //     break;
+        // case L7:
+        //     ergodox_right_led_1_on();
+        //     ergodox_right_led_2_on();
+        //     ergodox_right_led_3_on();
+        //     break;
+        default:
+            ergodox_board_led_off();
+            break;
+    }
+};
diff --git a/keyboard/ergodox_ez/keymaps/german-manuneo/keymap.md b/keyboard/ergodox_ez/keymaps/german-manuneo/keymap.md
new file mode 100644 (file)
index 0000000..2c9e0a8
--- /dev/null
@@ -0,0 +1,188 @@
+# ManuNeo Ergodox Keyboard Layout
+
+Compile this file to a `keymap.c` file using `compile_keymap.py`
+
+    python compile_keymap.py keymaps/german-manuneo/keymap.md
+
+Tested with python 2.7 and python 3.4
+
+
+# Layout Config
+
+    {
+        "layout": "ergodox_ez",
+        "keymaps_includes": [
+            "ergodox_ez.h",
+            "action_layer.h",
+            "keymap_common.h",
+            "keymap_extras/keymap_german.h",
+        ],
+        "key_prefixes": ["DE_", "KC_"],
+        "macros": {
+            // TODO: implement macros
+            // "MUC": "",
+        },
+        // TODO: implement default unicode mode
+    }
+
+
+# Layers
+
+
+## Layer 0
+
+    .------------------------------------.------------------------------------.
+    |MO(5)| 1  | 2  | 3  | 4  | 5  |ACUT | GRV | 6  | 7  | 8  | 9  | 0  |CIRC |
+    !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
+    |MO(4)| X  | P  | F  | W  | G  |HOME |TG(2)| H  | J  | K  | L  | Q  |  Z  |
+    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+    |MO(1)| U  | I  | A  | E  | O  |-----!-----! S  | N  | R  | T  | D  | SS  |
+    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+    |MO(3)| UE | OE | AE | C  | V  |END  | TAB | B  | M  |COMM| DOT| UP |  Y  |
+    '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
+     |    |    |LGUI|LALT|LCTL|                     !RCTL|RALT|LEFT|DOWN|RGHT|
+     '------------------------'                     '------------------------'
+                            .-----------. .-----------.
+                            |INS  |TG(2)| !M(UM)|DELT |
+                      .-----+-----+-----! !-----+-----+-----.
+                      !     !     | APP | ! PGUP|     !     !
+                      !     !     !-----! !-----!     !     !
+                      |BSPC |LSFT | ESC | ! PGDN|ENTER|SPACE|
+                      '-----------------' '-----------------'
+
+
+## Layer 1
+
+    .------------------------------------.------------------------------------.
+    |     |EXLM|DQOT|PARA|    |    |     |     |    |    |    |    |RING|     |
+    !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
+    |     |ASTR|PIPE|SLSH|LCBR|RCBR|     |     |HASH|LESS|MORE|    |DQOT|     |
+    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+    |     |UNDS|MINS|AMPR|LBRC|RBRC|-----!-----!DLR |LPRN|RPRN|TILD|QUOT| QST |
+    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+    |     |    |PLUS|EQL |    |    |     |     |BSLS|PERC|SCLN|COLN| ↑  |     |
+    '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
+     |    |    |    |    |    |                     !    |    | ←  | ↓  | →  |
+     '------------------------'                     '------------------------'
+                            .-----------. .-----------.
+                            |     |     | !     |     |
+                      .-----+-----+-----! !-----+-----+-----.
+                      !     !     |     | !     |     !     !
+                      !     !     !-----! !-----!     !     !
+                      |     |     |     | !     |     |     |
+                      '-----------------' '-----------------'
+
+
+## Layer 2
+
+    .------------------------------------.------------------------------------.
+    |     | F1 | F2 | F3 | F4 | F5 | F11 | F12 | F6 | F7 | F8 | F9 |F10 |PEQL |
+    !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
+    |     |    |    |    |    |    |     |     |    | P7 | P8 | P9 |PAST|PSLS |
+    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+    |     |    |    |    |    |    |-----!-----!    | P4 | P5 | P6 |PMNS|PMNS |
+    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+    |     |    |    |    |    |    |     | NLCK|    | P1 | P2 | P3 |PPLS|PPLS |
+    '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
+     |    |    |    |    |    |                     ! P0 |PCMM|PDOT|PENT|PENT|
+     '------------------------'                     '------------------------'
+                            .-----------. .-----------.
+                            |     |     | !     |     |
+                      .-----+-----+-----! !-----+-----+-----.
+                      !     !     |     | !     |     !     !
+                      !     !     !-----! !-----!     !     !
+                      |     |     |     | !     |     |     |
+                      '-----------------' '-----------------'
+
+
+
+## Layer 3
+
+http://symbolcodes.tlt.psu.edu/bylanguage/mathchart.html
+
+    .------------------------------------.------------------------------------.
+    |     | ¹  | ²  | ³  | ⁴  | ⁵  |  ∀  |     | ⁶  | ⁷  | ⁸  | ⁹  |  ⁰ |     |
+    !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
+    |     | ×  | ½  | ÷  | ¼  |  ⅕ |     |     | ⅙  |    | ⅛  |    |    |     |
+    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+    |     |    | ±  | AT |EURO| ∅  |-----!-----! ∞  | ⁿ  | ∃  | ∈  |    |     |
+    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+    |     | ⅓  | ≠  | ⅔  | ¾  | ≃  |     |     |EXLM|    | ∄  | ∉  |    |     |
+    '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
+     |    |    |    |    |    |                     !    |    |    |    |    |
+     '------------------------'                     '------------------------'
+                            .-----------. .-----------.
+                            |     |     | !     |     |
+                      .-----+-----+-----! !-----+-----+-----.
+                      !     !     |     | !     |     !     !
+                      !     !     !-----! !-----!     !     !
+                      |     |     |     | !     |     |     |
+                      '-----------------' '-----------------'
+
+
+## Layer 4
+
+
+    .------------------------------------.------------------------------------.
+    |     | ₁  | ₂  | ₃  | ₄  | ₅  |     |     | ₆  | ₇  | ₈  | ₉  | ₀  |     |
+    !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
+    |     | χ  | π  | φ  | ω  | γ  |     |     | η  | ξ  | κ  | λ  |    |  ζ  |
+    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+    |     | υ  | ι  | α  | ε  | ο  |-----!-----! σ  | ν  | ρ  | τ  | δ  |  ς  |
+    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+    |     |    | θ  |    |    |    |     |     | β  | μ  |    |    |    |  ψ  |
+    '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
+     |    |    |    |    |    |                     !    |    |    |    |    |
+     '------------------------'                     '------------------------'
+                            .-----------. .-----------.
+                            |     |     | !     |     |
+                      .-----+-----+-----! !-----+-----+-----.
+                      !     !     |     | !     |     !     !
+                      !     !     !-----! !-----!     !     !
+                      |     |     |     | !     |     |     |
+                      '-----------------' '-----------------'
+
+
+## Layer 5
+
+    .------------------------------------.------------------------------------.
+    |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
+    !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
+    |     | Χ  | Π  | Φ  | Ω  | Γ  |     |     | Η  | Ξ  | Κ  | Λ  |    |  Ζ  |
+    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+    |     | Υ  | Ι  | Α  | Ε  | Ο  |-----!-----! Σ  | Ν  | Ρ  | Τ  | Δ  |     |
+    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+    |     |    | Θ  |    |    |    |     |     | Β  | Μ  |    |    |    |  Ψ  |
+    '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
+     |    |    |    |    |    |                     !    |    |    |    |    |
+     '------------------------'                     '------------------------'
+                            .-----------. .-----------.
+                            |     |     | !     |     |
+                      .-----+-----+-----! !-----+-----+-----.
+                      !     !     |     | !     |     !     !
+                      !     !     !-----! !-----!     !     !
+                      |     |     |     | !     |     |     |
+                      '-----------------' '-----------------'
+
+
+## Layer 6
+
+    .------------------------------------.------------------------------------.
+    |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
+    !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
+    |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
+    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+    |     |    |    |    |    |    |-----!-----!    |    |    |    |    |     |
+    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
+    |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
+    '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
+     |    |    |    |    |    |                     !    |    |    |    |    |
+     '------------------------'                     '------------------------'
+                            .-----------. .-----------.
+                            |     |     | !     |     |
+                      .-----+-----+-----! !-----+-----+-----.
+                      !     !     |     | !     |     !     !
+                      !     !     !-----! !-----!     !     !
+                      |     |     |     | !     |     |     |
+                      '-----------------' '-----------------'
+
diff --git a/keyboard/ergodox_ez/keymaps/msc/img/code_layer.png b/keyboard/ergodox_ez/keymaps/msc/img/code_layer.png
new file mode 100644 (file)
index 0000000..7b5efaa
Binary files /dev/null and b/keyboard/ergodox_ez/keymaps/msc/img/code_layer.png differ
diff --git a/keyboard/ergodox_ez/keymaps/msc/img/main_layer.png b/keyboard/ergodox_ez/keymaps/msc/img/main_layer.png
new file mode 100644 (file)
index 0000000..65f92dd
Binary files /dev/null and b/keyboard/ergodox_ez/keymaps/msc/img/main_layer.png differ
diff --git a/keyboard/ergodox_ez/keymaps/msc/img/media_layer.png b/keyboard/ergodox_ez/keymaps/msc/img/media_layer.png
new file mode 100644 (file)
index 0000000..a69799b
Binary files /dev/null and b/keyboard/ergodox_ez/keymaps/msc/img/media_layer.png differ
diff --git a/keyboard/ergodox_ez/keymaps/msc/keymap.c b/keyboard/ergodox_ez/keymaps/msc/keymap.c
new file mode 100644 (file)
index 0000000..e567e51
--- /dev/null
@@ -0,0 +1,184 @@
+#include "ergodox_ez.h"
+#include "debug.h"
+#include "action_layer.h"
+
+#define BASE 0 // default layer
+#define SYMB 1 // symbols
+#define MDIA 2 // media keys
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |   =    |   1  |   2  |   3  |   4  |   5  | LEFT |           | RIGHT|   6  |   7  |   8  |   9  |   0  |   -    |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * | Del    |   Q  |   W  |   E  |   R  |   T  |  L1  |           |  L1  |   Y  |   U  |   I  |   O  |   P  |   \    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * | BkSp   |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   ;  |' / Cmd |
+ * |--------+------+------+------+------+------| Hyper|           | Meh  |------+------+------+------+------+--------|
+ * | LShift |Z/Ctrl|   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |//Ctrl| RShift |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   | Cmd  | Alt  |AltShf| Left | Right|                                       | Left | Down |  Up  |Right | L2  |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        | App  | LGui |       | Alt  |Ctrl/Esc|
+ *                                 ,------|------|------|       |------+--------+------.
+ *                                 |      |      | Home |       | PgUp |        |      |
+ *                                 | Space|Backsp|------|       |------|  Tab   |Enter |
+ *                                 |      |ace   | End  |       | PgDn |        |      |
+ *                                 `--------------------'       `----------------------'
+ */
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+[BASE] = KEYMAP(  // layer 0 : default
+        // left hand
+        KC_EQL,         KC_1,         KC_2,   KC_3,   KC_4,   KC_5,   KC_LEFT,
+        KC_DELT,        KC_Q,         KC_W,   KC_E,   KC_R,   KC_T,   TG(SYMB),
+        KC_BSPC,        KC_A,         KC_S,   KC_D,   KC_F,   KC_G,
+        KC_LSFT,        CTL_T(KC_Z),  KC_X,   KC_C,   KC_V,   KC_B,   ALL_T(KC_NO),
+        KC_LGUI,KC_LALT,      LALT(KC_LSFT),  KC_LEFT,KC_RGHT,
+                                              ALT_T(KC_APP),  KC_LGUI,
+                                                              KC_HOME,
+                                               KC_SPC,KC_BSPC,KC_END,
+        // right hand
+             KC_RGHT,     KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             KC_MINS,
+             TG(SYMB),    KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,             KC_BSLS,
+                          KC_H,   KC_J,   KC_K,   KC_L,   KC_SCLN,GUI_T(KC_QUOT),
+             MEH_T(KC_NO),KC_N,   KC_M,   KC_COMM,KC_DOT, CTL_T(KC_SLSH),   KC_RSFT,
+                                  KC_LEFT,  KC_DOWN, KC_UP, KC_RIGHT,       TG(MDIA),
+             KC_LALT,        CTL_T(KC_ESC),
+             KC_PGUP,
+             KC_PGDN,KC_TAB, KC_ENT
+    ),
+/* Keymap 1: Symbol Layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |    . |   0  |   =  |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// SYMBOLS
+[SYMB] = KEYMAP(
+       // left hand
+       KC_TRNS,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
+       KC_TRNS,KC_EXLM,KC_AT,  KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
+       KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
+       KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
+       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+                                       KC_TRNS,KC_TRNS,
+                                               KC_TRNS,
+                               KC_TRNS,KC_TRNS,KC_TRNS,
+       // right hand
+       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
+       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    KC_ASTR, KC_F12,
+                KC_DOWN, KC_4,   KC_5,    KC_6,    KC_PLUS, KC_TRNS,
+       KC_TRNS, KC_AMPR, KC_1,   KC_2,    KC_3,    KC_BSLS, KC_TRNS,
+                         KC_TRNS,KC_DOT,  KC_0,    KC_EQL,  KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+/* Keymap 2: Media and mouse keys
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |      |      |      |      |  Play  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      | Mute |      |      |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       | Prev |VolDn |VolUp | Next |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |Brwser|
+ *                                 | Lclk | Rclk |------|       |------|      |Back  |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// MEDIA AND MOUSE
+[MDIA] = KEYMAP(
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                                           KC_TRNS, KC_TRNS,
+                                                    KC_TRNS,
+                                  KC_BTN1, KC_BTN2, KC_TRNS,
+    // right hand
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
+       KC_TRNS,  KC_TRNS, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                          KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT, KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_WBAK
+),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+      switch(id) {
+        case 0:
+        if (record->event.pressed) {
+          register_code(KC_RSFT);
+        } else {
+          unregister_code(KC_RSFT);
+        }
+        break;
+      }
+    return MACRO_NONE;
+};
+
+// Runs just one time when the keyboard initializes.
+void matrix_init_user(void) {
+
+};
+
+// Runs constantly in the background, in a loop.
+void matrix_scan_user(void) {
+
+    uint8_t layer = biton32(layer_state);
+
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+    switch (layer) {
+      // TODO: Make this relevant to the ErgoDox EZ.
+        case 1:
+            ergodox_right_led_1_on();
+            break;
+        case 2:
+            ergodox_right_led_2_on();
+            break;
+        default:
+            // none
+            break;
+    }
+
+};
diff --git a/keyboard/ergodox_ez/keymaps/msc/msc.hex b/keyboard/ergodox_ez/keymaps/msc/msc.hex
new file mode 100644 (file)
index 0000000..a466a37
--- /dev/null
@@ -0,0 +1,1118 @@
+:100000000C9465020C94A9020C94A9020C94A90208\r
+:100010000C94A9020C94A9020C94A9020C94A902B4\r
+:100020000C94A9020C94A9020C94AD0B0C947F0CB7\r
+:100030000C94A9020C94A9020C94A9020C94A90294\r
+:100040000C94A9020C9404210C94A9020C94A9020A\r
+:100050000C94A9020C94951A0C94A9020C94A90270\r
+:100060000C94A9020C94A9020C94A9020C94A90264\r
+:100070000C94A9020C94A9020C94A9020C94A90254\r
+:100080000C94A9020C94A9020C94A9020C94A90244\r
+:100090000C94A9020C94A9020C94A9020C94A90234\r
+:1000A0000C94A9020C94A9020C94A902EC0C0E0D5C\r
+:1000B000FC0D0E0DFC0D530D760DFC0DCB0DDE0D64\r
+:1000C000C010C010EF10EF10321170118913891396\r
+:1000D000891189138A128A125D1389138913741383\r
+:1000E0000000F0A12E004C002A00E100E300000017\r
+:1000F0001E00140004001D71E2004D001F001A00D4\r
+:1001000016001B00E1042A0020000800070006007A\r
+:1001100050002C0021001500090019004F004A0072\r
+:10012000220017000A000500000065745000015409\r
+:100130000000007F0000E3004F0001540000007742\r
+:100140000000E20023001C000B00110000002971D8\r
+:10015000240018000D00100050004B0025000C007A\r
+:100160000E00360051002800260012000F00370054\r
+:1001700052002B0027001300330038714F004E004F\r
+:100180002D0031003478E500025400000100010028\r
+:1001900001000100010000003A001E0220022202BC\r
+:1001A000010001003B001F022102230201000100A7\r
+:1001B0003C002F0226022F00010001003D0030020A\r
+:1001C00027023000010001003E00310235003502F7\r
+:1001D000000001000100010000000100000001001A\r
+:1001E0000100010000000100000001003F0052007A\r
+:1001F00051002402000001004000240021001E00E4\r
+:10020000010001004100250022001F00370001000D\r
+:1002100042002600230020002700010043002502A1\r
+:100220002E0231002E0001004400450001000100B3\r
+:1002300001000000010001000100010001000000B8\r
+:1002400001000100010001000100010001000100A6\r
+:10025000F20001000100F5000100F000F1000100D2\r
+:100260000100F40001000100F300010001000100A1\r
+:100270000100010001000100000001000100010077\r
+:100280000000010000000100010001000000010069\r
+:100290000000010001000100010001000000010058\r
+:1002A000010001000100A800AC00010001000100F4\r
+:1002B00001000100AA00B6000100010001000100D8\r
+:1002C000A90001000100010001000100AB000100D4\r
+:1002D00001000100AE00010001000000160345000E\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
+:1004D000DAE0DEBFCDBF04B603FE24C08091EE019A\r
+:1004E0009091EF01A091F001B091F1018730904B14\r
+:1004F000A740B04BB9F41092EE011092EF011092A8\r
+:10050000F0011092F10114BE84B7877F84BF88E1A7\r
+:100510000FB6F89480936000109260000FBEE0E088\r
+:10052000FFE3099511E0A0E0B1E0ECE8F5E402C0DA\r
+:1005300005900D92A433B107D9F711E0A4E3B1E01F\r
+:1005400001C01D92AE3EB107E1F70E94F1080C9484\r
+:10055000C4220C94000061110BC0FC01828188232D\r
+:1005600021F085EE0E945D0F03C085EE0E942510EC\r
+:1005700080E090E0089508956091B1017091B2011A\r
+:100580008091B3019091B4010E94C41956985E986D\r
+:1005900025982D9826982E9827982F98813019F015\r
+:1005A000823021F00895259A2D9A0895269A2E9A40\r
+:1005B00008950C94BC0256985E9825982D9826981C\r
+:1005C0002E9827982F988FEF90E090938900809332\r
+:1005D000880090938B0080938A0090938D00809385\r
+:1005E0008C00259A2D9A2FEF80E792E021508040D1\r
+:1005F0009040E1F700C00000269A2E9A2FEF80E786\r
+:1006000092E0215080409040E1F700C00000279A1E\r
+:100610002F9A2FEF80E792E0215080409040E1F741\r
+:1006200000C0000025982D982FEF80E792E0215020\r
+:1006300080409040E1F700C0000026982E982FEFF0\r
+:1006400080E792E0215080409040E1F700C0000038\r
+:1006500027982F9856985E9825982D9826982E982A\r
+:1006600027982F98089589EA8093800089E08093E5\r
+:10067000810024982C983F988AB18F748AB96E981B\r
+:10068000479A8BB1806B8BB9769A0E94DB020C94EF\r
+:10069000BB0280E2809300018091340181110EC081\r
+:1006A0000E94980381E0809334012FEF83ED90E363\r
+:1006B000215080409040E1F700C0000080E40E949B\r
+:1006C0009E038093000181112EC00E94C803809375\r
+:1006D0000001811128C00E94C8038093000181118C\r
+:1006E00022C08FE30E94C8038093000181111BC0C8\r
+:1006F0000E94C00380E40E949E0380930001811148\r
+:1007000012C08CE00E94C8038093000181110BC0CD\r
+:100710000E94C80380930001811105C08FE30E94ED\r
+:10072000C803809300010E94C003809100010895D6\r
+:100730001092B9008AE08093B800089594EA9093EB\r
+:10074000BC009091BC0097FFFCCF9091B900987FBE\r
+:10075000983021F0903111F081E008958093BB0032\r
+:1007600084E88093BC008091BC0087FFFCCF80911F\r
+:10077000B900887F883111F0803471F780E00895E6\r
+:1007800084E98093BC008091BC0084FDFCCF089577\r
+:100790008093BB0084E88093BC008091BC0087FFFD\r
+:1007A000FCCF9091B900987F81E0983209F480E005\r
+:1007B000089584E88093BC008091BC0087FFFCCF43\r
+:1007C0008091BB00089580910001811115C080E4E3\r
+:1007D0000E949E038093000181110CC082E10E945F\r
+:1007E000C80380930001811105C08FEF0E94C803E8\r
+:1007F000809300010E94C00384B1807F84B985B1D9\r
+:10080000807F85B98AB1837F8AB98BB1837F8BB9A9\r
+:100810003E98469808950E944903809300010E94E3\r
+:10082000E30380B38C7080BB81B3836F81BBA6E38D\r
+:10083000B1E0E4E4F1E08EE08E0F11921D928E1390\r
+:10084000FCCF0C943303BF92CF92DF92EF92FF92D2\r
+:100850000F931F93CF93DF9380910001882379F04A\r
+:10086000809135018F5F80933501811108C00E940E\r
+:10087000490380930001811102C00E94DB0206E35C\r
+:1008800011E0C0E0D0E0DD24D39482E0C82EEE2455\r
+:10089000E394F12CC730D10500F58091000181115E\r
+:1008A00064C080E40E949E0380930001811112C005\r
+:1008B00082E10E94C8038093000181110BC0C7012F\r
+:1008C0000C2E01C0880F0A94EAF780950E94C80395\r
+:1008D000809300010E94C00348C0CA30A1F028F4F0\r
+:1008E000C83059F0C93061F005C0CC3089F070F0E3\r
+:1008F000CD3089F0209A289810C0219A29980DC0EF\r
+:10090000229A2A980AC0239A2B9807C0529A01C0AB\r
+:10091000539A5B9802C03E9A469890EA9A95F1F7EE\r
+:100920009FB1799902C082E001C080E091709D255D\r
+:10093000982B7C9902C084E001C080E0892B7D99CE\r
+:1009400002C038E001C030E0832B7E9902C020E174\r
+:1009500001C020E0822B9FB19095991F9927991F84\r
+:100960009295990F907E892B0FC080910001811183\r
+:1009700049C080E40E949E0380930001882379F19E\r
+:10098000B12C0E94C0038B2DF8019081981719F0AB\r
+:100990008083C09201010E94E30321960F5F1F4FE5\r
+:1009A000CE30D10509F076CF80910101882361F125\r
+:1009B000815080930101882339F08FE99FE00197EE\r
+:1009C000F1F700C0000020C0A4E4B1E0E6E3F1E0EC\r
+:1009D000CF01825F91919D938E13FCCF15C083E16F\r
+:1009E0000E94C803809300018111CACF81E40E9454\r
+:1009F0009E03809300018111C3CF0E94D903B82EBA\r
+:100A0000B094BFCF80E0C0CF0E94D90281E0DF91D7\r
+:100A1000CF911F910F91FF90EF90DF90CF90BF90FB\r
+:100A20000895E82FF0E0EC5BFE4F80810895089573\r
+:100A30008B3B910578F4883A910540F5853A91050C\r
+:100A4000D0F48430910508F0B1C08130910509F4EB\r
+:100A5000ADC06BC0803E910508F467C0883E91052B\r
+:100A600008F4A4C09C01205F31092031310508F051\r
+:100A70005CC090650895853A910509F459C0863A9D\r
+:100A8000910509F058C082E890E40895883A9105EC\r
+:100A900009F454C0893A910509F453C08A3A910582\r
+:100AA00009F452C08B3A910509F451C08C3A910572\r
+:100AB00009F450C08D3A910509F44FC0803B91056F\r
+:100AC00009F44EC08E3A910509F44DC08F3A910554\r
+:100AD00009F44CC0813B910509F44BC0823B910560\r
+:100AE00009F44AC0833B910509F449C0843B910550\r
+:100AF00009F448C0853B910509F447C0863B910540\r
+:100B000009F446C0873B910509F445C0883B91052F\r
+:100B100009F444C0893B910509F443C08A3B91051F\r
+:100B200009F442C080E094E4089580E090E00895E4\r
+:100B300081E890E4089583E890E4089582EE94E4D7\r
+:100B4000089589EE94E408958AEE94E4089585EB7F\r
+:100B500094E4089586EB94E4089587EB94E4089573\r
+:100B60008CEC94E408958DEC94E4089583E895E486\r
+:100B700008958AE895E4089582E995E4089584E962\r
+:100B800095E4089581E296E4089583E296E4089559\r
+:100B900084E296E4089585E296E4089586E296E478\r
+:100BA000089587E296E408958AE296E40895089508\r
+:100BB00096E0799FF001112494E5899FE00DF11DE5\r
+:100BC0001124E60FF11DEE0FFF1FEC51FF4F859131\r
+:100BD00094910895880F991FFC01E05AF040859187\r
+:100BE00094910895880F991FFC01E052FF4F859161\r
+:100BF0009491089526E0729FF001112444E5849FAA\r
+:100C0000E00DF11D1124E60FF11DEE0FFF1FEC5159\r
+:100C1000FF4F859194919C013A9521154FE134073E\r
+:100C200008F41AC13F512115304120F49F700E94F1\r
+:100C3000F20508959C0130532115304118F499278D\r
+:100C4000906C0895811520E5920769F40E94AB131A\r
+:100C50004FEF84E39CE0415080409040E1F700C0BA\r
+:100C600000000C94BA1A813020E5920731F480918B\r
+:100C7000CC0181608093CC0108959C0130552115F1\r
+:100C8000304108F051C0292F33272F7033272130EE\r
+:100C90003105D9F4AC014370552702C0220F331F30\r
+:100CA0004A95E2F73C68AC0164E0440F551F6A9531\r
+:100CB000E1F744275370242B352B73E0880F991FDD\r
+:100CC0007A95E1F7807699271DC02230310529F405\r
+:100CD000982F8827816F906A089523303105A9F4F1\r
+:100CE000AC014370552721E030E002C0220F331FD2\r
+:100CF0004A95E2F73C6843E0880F991F4A95E1F76F\r
+:100D0000807E9770822B932B089524303105E1F477\r
+:100D1000AC014370552721E030E002C0220F331FA1\r
+:100D20004A95E2F73A68E7CF9C01305721153041E8\r
+:100D300018F49F70906208959C013058211530413D\r
+:100D400018F49F70906A0895803E9105E0F4803C0D\r
+:100D5000910558F58133910509F46FC048F4893243\r
+:100D6000910509F463C08A32910509F46DC072C01F\r
+:100D700089339105E9F082389105D1F085339105E9\r
+:100D800009F44DC067C0833E910581F138F4803E7F\r
+:100D90009105B9F0823E9105D9F05CC0863E91057F\r
+:100DA00061F1873E9105A1F155C00E94EA050895C1\r
+:100DB0002091DF0120FD02C021FF4CC080EE90E0B9\r
+:100DC00049C08091DF0180FFF9CF89E390E042C004\r
+:100DD0008091DF0182FF0EC08091DF0184FF03C09C\r
+:100DE00080E090E037C083EE90E034C08091DF0176\r
+:100DF00082FFF2CF82EE90E02DC08091DF0183FF71\r
+:100E00000BC08091DF0184FDEBCF87EE90E022C024\r
+:100E10008091DF0183FFF5CF86EE90E01BC08091CB\r
+:100E2000DF0185FF07C089E290E014C08091DF01F7\r
+:100E300085FFF9CF85E390E00DC08091DF0186FF4B\r
+:100E400007C08AE290E006C08091DF0186FFF9CFFB\r
+:100E500081E390E00E941805089508950C942D07F1\r
+:100E6000809162010895CF93DF9300D01F92CDB798\r
+:100E7000DEB79C018091E501843019F593E09983F8\r
+:100E80003B832A839093E9008FEF9091E800815093\r
+:100E900095FD06C095ED9A95F1F700008111F5CF0B\r
+:100EA0008091E80085FF0DC040E050E063E070E015\r
+:100EB000CE0101960E949D098091E8008E77809373\r
+:100EC000E8000F900F900F90DF91CF910895CF938E\r
+:100ED000DF9300D01F92CDB7DEB72091E50124301B\r
+:100EE00021F522E029839B838A8383E08093E900B4\r
+:100EF0008FEF9091E800815095FD06C095ED9A9591\r
+:100F0000F1F700008111F5CF8091E80085FF0DC059\r
+:100F100040E050E063E070E0CE0101960E949D0940\r
+:100F20008091E8008E778093E8000F900F900F90EB\r
+:100F3000DF91CF9108952091E5012430F1F422E072\r
+:100F40002093E9002FEF3091E800215035FD06C0D5\r
+:100F500035ED3A95F1F700002111F5CF2091E80029\r
+:100F600025FF0BC040E050E065E070E00E949D0965\r
+:100F70008091E8008E778093E8000895CF93DF9307\r
+:100F8000EC019091E501943009F046C080910C018C\r
+:100F90008823D9F080910D018823B9F09093E9005E\r
+:100FA0008FEF9091E800815095FD06C095E19A95EC\r
+:100FB000F1F700008111F5CF8091E80085FF2CC08A\r
+:100FC00040E050E060E170E017C081E08093E9000C\r
+:100FD0008FEF9091E800815095FD06C095ED9A95B0\r
+:100FE000F1F700008111F5CF8091E80085FF14C072\r
+:100FF00040E050E068E070E0CE010E949D098091E1\r
+:10100000E8008E778093E80080E1FE01A2E5B1E080\r
+:1010100001900D928A95E1F7DF91CF91089580912B\r
+:10102000E401811109C00E94320B0E948F0B809154\r
+:10103000E20084608093E20008951092E401089534\r
+:1010400008950C94F1200E94501A0E94F7200E94EB\r
+:10105000350E0C942E0742E061EC81E00E94AC0A50\r
+:1010600042E061EC82E00E94AC0A42E061EC83E085\r
+:101070000E94AC0A42E161EC84E00C94AC0A8091DD\r
+:10108000E701833009F455C030F4813071F08230CB\r
+:1010900009F48EC008958A3009F47AC08B3009F4BF\r
+:1010A00060C0893009F09CC020C08091E601813A7F\r
+:1010B00009F096C08091E800877F8093E8008091D6\r
+:1010C000EA019091EB01892B21F460E182E591E046\r
+:1010D00003C060E080E090E070E00E94E809809149\r
+:1010E000E8008B778093E80008958091E6018132D3\r
+:1010F00009F076C08091EA019091EB01009719F018\r
+:10110000039709F06DC08091E800877F8093E80025\r
+:101110008091E80082FD05C08091E5018111F8CF42\r
+:101120005FC08091F100809362018091E8008B772D\r
+:1011300053C08091E601813A09F052C08091EA01E2\r
+:101140009091EB01892B09F04BC08091E800877FDB\r
+:101150008093E8008091E80080FFFCCF80910C0133\r
+:1011600036C08091E6018132D9F58091EA019091F3\r
+:10117000EB01892BA9F58091E800877F8093E80037\r
+:101180000E94E10A8091E80180930C010C94AB135A\r
+:101190008091E601813221F58091E800877F80937C\r
+:1011A000E8000E94E10A8091E901809363010895BB\r
+:1011B0008091E601813AA1F48091E800877F8093D5\r
+:1011C000E8008091E80080FFFCCF8091630180936C\r
+:1011D000F1008091E8008E778093E8000C94E10A9A\r
+:1011E000089584B7877F84BF88E10FB6F894809311\r
+:1011F0006000109260000FBE90E080E80FB6F89497\r
+:1012000080936100909361000FBE0E94840E0E9443\r
+:10121000320B0E948F0B8091E20084608093E20089\r
+:1012200078940E94150E0E94860E82E091E00E9442\r
+:10123000300E0E94DF208091E501853069F40E9424\r
+:10124000141A8091E3018823B1F30E943C1A882389\r
+:1012500091F30E948709EFCF0E948C0EECCF292FCB\r
+:10126000332723303105C9F064F42130310581F092\r
+:101270002230310509F043C08DE690E020E133E0F3\r
+:1012800042C021323105F1F02232310541F137C03F\r
+:1012900082E190E02DE733E036C099278130910557\r
+:1012A00041F08230910541F0892B49F5ECE0F3E003\r
+:1012B00005C0E4EFF2E002C0ECEDF2E0849190E0D2\r
+:1012C0009F0121C06430D8F4E62FF0E0EE0FFF1F3D\r
+:1012D000EE5DFE4F2081318189E090E014C06430E2\r
+:1012E00070F470E0FB01EE0FFF1FE65EFE4F208101\r
+:1012F0003181FB01EA5EFE4F808190E004C080E016\r
+:1013000090E020E030E0FA0131832083089580E10D\r
+:1013100089BD82E189BD09B400FEFDCF8091D8006E\r
+:101320008F7D8093D8008091E00082608093E00000\r
+:101330008091E00081FDFCCF0895CF92DF92EF9283\r
+:10134000FF920F931F93CF93DF93EC018B016A0100\r
+:101350000E94000B811133C0C114D10439F0F60191\r
+:1013600080819181081B190BC80FD91FE12CF12C2A\r
+:101370000115110519F18091E80085FD16C08091D5\r
+:10138000E8008E778093E800C114D10449F0F6019B\r
+:1013900080819181E80EF91EF182E08285E00FC024\r
+:1013A0000E94000B882321F30AC089918093F100E9\r
+:1013B00001501109FFEFEF1AFF0ADACF80E0DF9149\r
+:1013C000CF911F910F91FF90EF90DF90CF900895F4\r
+:1013D0002091EC013091ED012617370748F0611597\r
+:1013E000710539F42091E8002E772093E80001C0C0\r
+:1013F000B90140E061157105A9F12091E5012223B1\r
+:1014000009F443C0253009F442C02091E80023FDCF\r
+:1014100040C02091E80022FD32C02091E80020FF6A\r
+:10142000E9CF4091F3002091F20030E0342BFC0131\r
+:10143000CF016115710559F02830310540F48191D3\r
+:101440008093F100615071092F5F3F4FF1CF41E070\r
+:101450002830310509F040E02091E8002E772093F4\r
+:10146000E800C8CF4111C9CF0AC08091E5018823A7\r
+:1014700061F0853061F08091E80083FD0AC08091C1\r
+:10148000E80082FFF2CF80E0089582E0089583E0D3\r
+:10149000089581E008952091EC013091ED01261727\r
+:1014A000370748F06115710539F42091E8002E776F\r
+:1014B0002093E80001C0B901FC0120E0611571052D\r
+:1014C00091F18091E501882309F440C0853009F449\r
+:1014D0003FC08091E80083FD3DC08091E80082FD1F\r
+:1014E0002FC08091E80080FFE9CF2091F300809128\r
+:1014F000F20090E0922B6115710559F0883091054A\r
+:1015000040F424912093F1003196615071090196C5\r
+:10151000F2CF21E0089709F020E08091E8008E7773\r
+:101520008093E800CBCF2111CCCF0AC08091E50198\r
+:10153000882361F0853061F08091E80083FD0AC066\r
+:101540008091E80082FFF2CF80E0089582E0089564\r
+:1015500083E0089581E00895982F973058F590938F\r
+:10156000E900981739F07091EC002091ED0050914E\r
+:10157000F00003C0242F762F50E021FF19C03091D6\r
+:10158000EB003E7F3093EB003091ED003D7F3093D8\r
+:10159000ED003091EB0031603093EB007093EC0084\r
+:1015A0002093ED005093F0002091EE0027FF07C03C\r
+:1015B0009F5FD3CF8F708093E90081E0089580E032\r
+:1015C00008958091E60187FF11C08091E80082FDB7\r
+:1015D00005C08091E5018111F8CF11C08091E8002C\r
+:1015E0008B770BC08091E501882349F08091E8005A\r
+:1015F00080FFF8CF8091E8008E778093E80008950F\r
+:101600002091E4003091E50095E64091EC00842FB4\r
+:10161000817040FF22C08091E80080FD1CC0809155\r
+:10162000E501882391F0853091F08091EB0085FDF4\r
+:1016300010C04091E4005091E5004217530729F390\r
+:101640009A01915011F784E0089582E0089583E0B3\r
+:10165000089581E0089580E008954091E80042FFF8\r
+:10166000DECF08950E94A00B0E94A80BE0EEF0E0F0\r
+:10167000808181608083E8EDF0E080818F778083D6\r
+:1016800019BCA7EDB0E08C918E7F8C9380818F7E0A\r
+:1016900080831092E40108950F931F93CF93DF93FB\r
+:1016A0000E94A00B0E94A80BC8EDD0E088818F7724\r
+:1016B000888388818068888388818F7D888319BC2E\r
+:1016C0001092E5011092E1011092E3011092E20103\r
+:1016D00000EE10E0F80180818B7F8083888181603B\r
+:1016E000888342E060E080E00E94AC0AE1EEF0E036\r
+:1016F00080818E7F8083E2EEF0E080818160808354\r
+:10170000808188608083F80180818E7F80838881DA\r
+:1017100080618883DF91CF911F910F910895E8ED4B\r
+:10172000F0E080818F7E8083E7EDF0E08081816052\r
+:10173000808384E082BF81E08093E4010C944C0BB1\r
+:10174000E8EDF0E080818E7F80831092E2000895C2\r
+:101750001092DA001092E10008951F920F920FB6D6\r
+:101760000F9211242F933F934F935F936F937F9327\r
+:101770008F939F93AF93BF93EF93FF938091E1007B\r
+:1017800082FF0BC08091E20082FF07C08091E100E0\r
+:101790008B7F8093E1000E94140E8091DA0080FF1D\r
+:1017A0001FC08091D80080FF1BC08091DA008E7F1F\r
+:1017B0008093DA008091D90080FF0DC080E189BD5F\r
+:1017C00082E189BD09B400FEFDCF81E08093E5018F\r
+:1017D0000E940F0805C019BC1092E5010E941D0867\r
+:1017E0008091E10080FF19C08091E20080FF15C068\r
+:1017F0008091E2008E7F8093E2008091E200806120\r
+:101800008093E2008091D80080628093D80019BC58\r
+:1018100085E08093E5010E9421088091E10084FF2A\r
+:1018200030C08091E20084FF2CC080E189BD82E15C\r
+:1018300089BD09B400FEFDCF8091D8008F7D8093D3\r
+:10184000D8008091E1008F7E8093E1008091E200DA\r
+:101850008F7E8093E2008091E20081608093E200BD\r
+:101860008091E101882311F084E007C08091E300BA\r
+:1018700087FD02C081E001C083E08093E5010E9402\r
+:1018800023088091E10083FF29C08091E20083FF5B\r
+:1018900025C08091E100877F8093E10082E0809302\r
+:1018A000E5011092E1018091E1008E7F8093E100DB\r
+:1018B0008091E2008E7F8093E2008091E20080615F\r
+:1018C0008093E20042E060E080E00E94AC0A8091F8\r
+:1018D000F00088608093F0000E942008FF91EF9153\r
+:1018E000BF91AF919F918F917F916F915F914F9138\r
+:1018F0003F912F910F900FBE0F901F9018951F9240\r
+:101900000F920FB60F9211242F933F934F935F9333\r
+:101910006F937F938F939F93AF93BF93CF93DF93F7\r
+:10192000EF93FF93C091E900CF708091EC00D82F26\r
+:10193000D17080FDD0E81092E9008091F000877F9F\r
+:101940008093F00078940E94C30C1092E90080917B\r
+:10195000F00088608093F000CD2BCF70C093E90039\r
+:10196000FF91EF91DF91CF91BF91AF919F918F91B7\r
+:101970007F916F915F914F913F912F910F900FBE8B\r
+:101980000F901F9018951F93CF93DF93CDB7DEB7BD\r
+:10199000AA970FB6F894DEBF0FBECDBFE6EEF1E01A\r
+:1019A00088E08E0F9091F10091938E13FBCF0E94EF\r
+:1019B0003F088091E80083FF1FC18091E60190916C\r
+:1019C000E701492F50E04A30510508F015C1FA01EE\r
+:1019D000EA5AFF4F0C947922803881F0823809F05E\r
+:1019E0000BC18091EA018F708093E9008091EB0038\r
+:1019F00085FB882780F91092E90006C08091E201FA\r
+:101A00009091E301911182609091E800977F90930B\r
+:101A1000E8008093F1001092F100C8C0282F2D7FBC\r
+:101A200009F0EAC0882319F0823061F0E5C08091A6\r
+:101A3000E801813009F0E0C0933009F080E0809344\r
+:101A4000E3012BC08091E801811127C08091EA0158\r
+:101A50008F7009F4D1C08093E9002091EB0020FF42\r
+:101A60001CC0933021F48091EB00806214C09091EF\r
+:101A7000EB0090619093EB0021E030E0A90102C0FF\r
+:101A8000440F551F8A95E2F74093EA001092EA004E\r
+:101A90008091EB0088608093EB001092E9008091C8\r
+:101AA000E800877F86C08111A7C01091E8011F77E9\r
+:101AB0008091E3008078812B8093E3008091E8009F\r
+:101AC000877F8093E8000E94E10A8091E80080FF10\r
+:101AD000FCCF8091E30080688093E300111102C085\r
+:101AE00082E001C083E08093E50186C080588230A7\r
+:101AF00008F082C08091E8019091E9018C3D53E0AB\r
+:101B0000950779F583E08A838AE289834FB7F89451\r
+:101B1000DE01139620E03EE051E2E32FF0E0509327\r
+:101B20005700E49120FF03C0E295EF703F5FEF7034\r
+:101B30008E2F90E0EA3010F0C79601C0C0968D93CA\r
+:101B40009D932F5F243149F74FBF8091E800877F35\r
+:101B50008093E8006AE270E0CE0101960E94E809F5\r
+:101B600014C0AE014F5F5F4F6091EA010E942F09E0\r
+:101B7000BC01892B09F440C09091E800977F9093B5\r
+:101B8000E80089819A810E944B0A8091E8008B7756\r
+:101B90008093E80031C0803879F58091E800877F34\r
+:101BA0008093E8008091E1018093F1008091E8004A\r
+:101BB0008E778093E8000E94E10A1EC081111CC04C\r
+:101BC0009091E8019230C0F48091E800877F809383\r
+:101BD000E8009093E1010E94E10A8091E101811106\r
+:101BE00006C08091E30087FD02C081E001C084E06F\r
+:101BF0008093E5010E942B088091E80083FF0AC0D2\r
+:101C00008091E800877F8093E8008091EB008062FC\r
+:101C10008093EB00AA960FB6F894DEBF0FBECDBF3F\r
+:101C2000DF91CF911F9108950895CF938091E501A1\r
+:101C30008823A1F0C091E900CF709091EC00892F2A\r
+:101C4000817090FD80E8C82B1092E9008091E80037\r
+:101C500083FD0E94C30CCF70C093E900CF9108951B\r
+:101C600090936901809368010895E0916801F09173\r
+:101C70006901309721F00190F081E02D099480E016\r
+:101C80000895E0916801F0916901309721F0028098\r
+:101C9000F381E02D09940895E0916801F0916901C4\r
+:101CA000309721F00480F581E02D0994089520916A\r
+:101CB0006601309167018217930771F09093670175\r
+:101CC00080936601E0916801F0916901309721F0FD\r
+:101CD0000680F781E02D09940895209164013091E8\r
+:101CE00065018217930771F09093650180936401F9\r
+:101CF000E0916801F0916901309721F00084F1854D\r
+:101D0000E02D0994089508950C94830E0E94561AAC\r
+:101D10000E940B040C941C1BCF92DF92EF92FF9257\r
+:101D20000F931F93CF93DF93CDB7DEB72B970FB6EB\r
+:101D3000F894DEBF0FBECDBF0E9423048BE6C82EF1\r
+:101D400081E0D82E00E010E0E02E802F0E941105E7\r
+:101D5000F60141916F01F42EF826B1F40F5F1F4F89\r
+:101D60000E30110589F78FEF89838A831B820E94C9\r
+:101D70005F1A8160782F9D838C8349815A816B81A2\r
+:101D80008D810E942F0F40C09091CC0191FF04C023\r
+:101D90008B870E9417058B8520E030E04F2D50E0A7\r
+:101DA000922FBA01022E02C0759567950A94E2F748\r
+:101DB00060FF24C02E83EF8221E030E0690102C081\r
+:101DC000CC0CDD1C9A95E2F790E08C219D21892BAB\r
+:101DD00009F420E028870E945F1A8160782F9A8793\r
+:101DE00089874E815F8168858A850E942F0FF8015F\r
+:101DF000E559FE4F8081C826C08206C02F5F3F4F45\r
+:101E00002630310569F6AACF0E94031E10916A019F\r
+:101E10000E94350E1817A1F00E94350E80936A01BA\r
+:101E20002B960FB6F894DEBF0FBECDBFDF91CF91DA\r
+:101E30001F910F91FF90EF90DF90CF900C942E07A1\r
+:101E40002B960FB6F894DEBF0FBECDBFDF91CF91BA\r
+:101E50001F910F91FF90EF90DF90CF900895CF9357\r
+:101E6000DF93CDB7DEB72B970FB6F894DEBF0FBE6A\r
+:101E7000CDBF4F83588769877A878B87DE0111969C\r
+:101E800086E0FD0111928A95E9F785E0FE0137961B\r
+:101E900001900D928A95E1F749815A816B817C818D\r
+:101EA0008D819E810E9445162B960FB6F894DEBF59\r
+:101EB0000FBECDBFDF91CF910895CF93882309F452\r
+:101EC000C2C0C82F823859F40E94350E81FDBBC0B4\r
+:101ED00089E30E94E1180E949E1989E30CC08338AF\r
+:101EE00079F40E94350E80FDAEC083E50E94E118B2\r
+:101EF0000E949E1983E50E942319CF910C949E198C\r
+:101F0000843859F40E94350E82FD9DC087E40E94FA\r
+:101F1000E1180E949E1987E4EECF8CEF8C0F813A76\r
+:101F200048F48C2F0E94442081118DC08C2F0E9478\r
+:101F3000E118E3CF80E28C0F883048F4C77081E06D\r
+:101F400001C0880FCA95EAF70E946719D6CF8BE5C2\r
+:101F50008C0F833078F4C53A29F0C63A31F083E823\r
+:101F600090E005C081E890E002C082E890E0CF9167\r
+:101F70000C94570E88E58C0F833108F064C0C83A82\r
+:101F800039F1C93A41F1CA3A49F1CB3A51F1CC3A67\r
+:101F900059F1CD3A61F1C03B69F1CE3A71F1CF3AD6\r
+:101FA00079F1C13B81F1C23B89F1C33B91F1C43B63\r
+:101FB00099F1C53BA1F1C63BA9F1C73BB1F1C83BC3\r
+:101FC000B9F1C93BC1F1CA3BC9F180E090E038C02A\r
+:101FD00082EE90E035C089EE90E032C08AEE90E06B\r
+:101FE0002FC085EB90E02CC086EB90E029C087EBFA\r
+:101FF00090E026C08CEC90E023C08DEC90E020C0F7\r
+:1020000083E891E01DC08AE891E01AC082E991E07E\r
+:1020100017C084E991E014C081E292E011C083E22C\r
+:1020200092E00EC084E292E00BC085E292E008C02C\r
+:1020300086E292E005C087E292E002C08AE292E086\r
+:10204000CF910C946D0ECF910895882309F44BC065\r
+:10205000823859F40E94350E81FF45C089E30E9401\r
+:10206000E1180E949E1989E30CC0833871F40E9424\r
+:10207000350E80FF38C083E50E94E1180E949E194A\r
+:1020800083E50E9423190C949E19843859F40E9408\r
+:10209000350E82FF28C087E40E94E1180E949E1935\r
+:1020A00087E4EFCF9CEF980F913A58F390E2980FA6\r
+:1020B000983050F4877091E001C0990F8A95EAF743\r
+:1020C000892F0E946D19DFCF9BE5980F933020F484\r
+:1020D00080E090E00C94570E885A833120F480E021\r
+:1020E00090E00C946D0E0895882321F00E946719EA\r
+:1020F0000C949E190895882321F00E946D190C9468\r
+:102100009E190895BF92CF92DF92EF92FF920F93A4\r
+:102110001F93CF93DF9300D000D000D0CDB7DEB7B0\r
+:1021200025E0FC01DE01119601900D922A95E1F760\r
+:10213000FC01408131810281258122952F706381CC\r
+:102140007481672B09F4E5C23F3F19F44F3F09F44E\r
+:10215000E0C27C0149833A8389819A812E830E945F\r
+:10216000A018182FB92E0E949F180E946617EB2DF9\r
+:10217000E295EF70F0E0E05AFF4F2E810C94792247\r
+:102180008B2D807F9B2D9F70F92E882319F0F29460\r
+:1021900080EFF822002349F0FF2009F467C28F2D59\r
+:1021A0000E9477190E949E1961C2812F0E942510FA\r
+:1021B000FF2009F4AEC28F2D0E947D1926960FB61E\r
+:1021C000F894DEBF0FBECDBFDF91CF911F910F916D\r
+:1021D000FF90EF90DF90CF90BF900C949E193B2D15\r
+:1021E000307F8B2D8F70303211F08295807F1123DC\r
+:1021F00019F0113021F12CC00023B9F0222309F489\r
+:10220000A0C1213009F09DC126960FB6F894DEBF1B\r
+:102210000FBECDBFDF91CF911F910F91FF90EF9037\r
+:10222000DF90CF90BF900C948719222319F02130B2\r
+:1022300009F46FC28E830E948A198E8196C1002391\r
+:1022400021F0223008F065C27CC1211162C28DC12B\r
+:10225000002321F0222309F474C108C2222309F4C7\r
+:1022600084C119C22B2D26952695237030E02115A7\r
+:10227000310521F021303105D1F04BC2002321F08E\r
+:10228000812F9B2D937002C080E090E026960FB6C0\r
+:10229000F894DEBF0FBECDBFDF91CF911F910F919C\r
+:1022A000FF90EF90DF90CF90BF900C94570E0023DB\r
+:1022B00021F0812F9B2D937002C080E090E0269644\r
+:1022C0000FB6F894DEBF0FBECDBFDF91CF911F9147\r
+:1022D0000F91FF90EF90DF90CF90BF900C946D0E18\r
+:1022E000812F002319F00E940B1D02C00E94731D54\r
+:1022F00026960FB6F894DEBF0FBECDBFDF91CF910B\r
+:102300001F910F91FF90EF90DF90CF90BF900C94B2\r
+:10231000F81D8B2D837009F07BC00111FAC1812F4C\r
+:10232000829586958770880F880F912F9F70C92E90\r
+:10233000D12CE12CF12C082E04C0CC0CDD1CEE1CA1\r
+:10234000FF1C0A94D2F714FF12C04FE050E060E087\r
+:1023500070E004C0440F551F661F771F8A95D2F79F\r
+:10236000CB01BA01609570958095909503C060E0AF\r
+:1023700070E0CB012B2D269526952370422F50E03F\r
+:1023800042305105D9F04330510569F16C297D295E\r
+:102390008E299F294130510551F126960FB6F894A8\r
+:1023A000DEBF0FBECDBFDF91CF911F910F91FF9088\r
+:1023B000EF90DF90CF90BF900C948D176C297D2902\r
+:1023C0008E299F2926960FB6F894DEBF0FBECDBF8B\r
+:1023D000DF91CF911F910F91FF90EF90DF90CF9001\r
+:1023E000BF900C94A9170E948D17C701B6012696BD\r
+:1023F0000FB6F894DEBF0FBECDBFDF91CF911F9116\r
+:102400000F91FF90EF90DF90CF90BF900C947117D9\r
+:10241000002319F08B2D817001C08695882309F463\r
+:1024200078C1812F829586958770880F880F912FAC\r
+:102430009F70C92ED12CE12CF12C082E04C0CC0C9D\r
+:10244000DD1CEE1CFF1C0A94D2F714FF12C04FE0F3\r
+:1024500050E060E070E004C0440F551F661F771F16\r
+:102460008A95D2F7CB01BA016095709580959095C9\r
+:1024700003C060E070E0CB012B2D269526952370DC\r
+:10248000422F50E042305105D9F04330510569F1F7\r
+:102490006C297D298E299F294130510551F12696BD\r
+:1024A0000FB6F894DEBF0FBECDBFDF91CF911F9165\r
+:1024B0000F91FF90EF90DF90CF90BF900C94671832\r
+:1024C0006C297D298E299F2926960FB6F894DEBFA8\r
+:1024D0000FBECDBFDF91CF911F910F91FF90EF9075\r
+:1024E000DF90CF90BF900C9483180E946718C701AB\r
+:1024F000B60126960FB6F894DEBF0FBECDBFDF91B2\r
+:10250000CF911F910F91FF90EF90DF90CF90BF90F0\r
+:102510000C944B18103FD1F118F4103E50F4A1C0A8\r
+:10252000123F09F463C008F44CC0133F09F473C0B0\r
+:1025300098C01F708B2D8F710023A1F00E94E417AB\r
+:10254000812F26960FB6F894DEBF0FBECDBFDF9168\r
+:10255000CF911F910F91FF90EF90DF90CF90BF90A0\r
+:102560000C9474100E940518812F26960FB6F894CB\r
+:10257000DEBF0FBECDBFDF91CF911F910F91FF90B6\r
+:10258000EF90DF90CF90BF900C947B100023A9F0C8\r
+:102590002111BFC08B2D8F7126960FB6F894DEBF28\r
+:1025A0000FBECDBFDF91CF911F910F91FF90EF90A4\r
+:1025B000DF90CF90BF900C942A18223008F0A9C069\r
+:1025C000E9CF0023A9F08B2D8F7126960FB6F894D2\r
+:1025D000DEBF0FBECDBFDF91CF911F910F91FF9056\r
+:1025E000EF90DF90CF90BF900C94E417002359F345\r
+:1025F0008B2D8F7126960FB6F894DEBF0FBECDBF20\r
+:10260000DF91CF911F910F91FF90EF90DF90CF90CE\r
+:10261000BF900C940518002399F08B2D8F7126968E\r
+:102620000FB6F894DEBF0FBECDBFDF91CF911F91E3\r
+:102630000F91FF90EF90DF90CF90BF900C94CF1749\r
+:1026400026960FB6F894DEBF0FBECDBFDF91CF91B7\r
+:102650001F910F91FF90EF90DF90CF90BF900C945F\r
+:10266000C5170023A9F0222309F4ADCF812F2696A8\r
+:102670000FB6F894DEBF0FBECDBFDF91CF911F9193\r
+:102680000F91FF90EF90DF90CF90BF900C945D0F73\r
+:10269000222309F4ADCF812F26960FB6F894DEBF22\r
+:1026A0000FBECDBFDF91CF911F910F91FF90EF90A3\r
+:1026B000DF90CF90BF900C9425104B2D4F70612F61\r
+:1026C000C7010E94AB0226960FB6F894DEBF0FBE7C\r
+:1026D000CDBFDF91CF911F910F91FF90EF90DF90D1\r
+:1026E000CF90BF900C94E9164B2D4F70612FC7010E\r
+:1026F00026960FB6F894DEBF0FBECDBFDF91CF9107\r
+:102700001F910F91FF90EF90DF90CF90BF900C94AE\r
+:10271000D70526960FB6F894DEBF0FBECDBFDF916A\r
+:10272000CF911F910F91FF90EF90DF90CF90BF90CE\r
+:1027300008950E9484190E9459190E949E190E94AE\r
+:10274000A91E0E94F81D80E090E00E94570E80E0D4\r
+:1027500090E00C946D0E0E9474190C9499130E94D1\r
+:10276000A018292F22952F7030E02C3031054CF421\r
+:102770002A3031056CF4225031092230310588F4B9\r
+:1027800007C02C30310549F02F30310531F009C038\r
+:10279000803E48F0803F29F406C093FB882780F9EB\r
+:1027A000089580E0089581E00895CF93DF9300D0ED\r
+:1027B00000D01F92CDB7DEB70F900F900F900F9003\r
+:1027C0000F90DF91CF910895CF93DF9300D000D089\r
+:1027D00000D0CDB7DEB726960FB6F894DEBF0FBE99\r
+:1027E000CDBFDF91CF9108951F93CF93DF93C09119\r
+:1027F000790116E080917A01C81799F0D0E01C9F0A\r
+:10280000F0011D9FF00D1124E558FE4F40815181CC\r
+:1028100062817381848195810E94E4132196C7703F\r
+:10282000E9CFDF91CF911F9108954091AB01509175\r
+:10283000AC016091AD017091AE018091AF019091BA\r
+:10284000B0010C94E4138091B00182958F7009F06F\r
+:1028500054C08091AD01882309F44FC08091790163\r
+:10286000A0917A016091AB017091AC014091AE01F1\r
+:102870005091AF01B6E08A1709F43FC090E04115CE\r
+:102880005105C1F17F3F11F46F3FA1F1B89FF001F5\r
+:10289000B99FF00D1124E558FE4F218172132AC013\r
+:1028A0002081621327C02281211124C02381348119\r
+:1028B0002417350710F421503109241B350B283C0F\r
+:1028C0003105C0F42091B0012F7020612093B00138\r
+:1028D00026E0289FF001299FF00D1124E058FE4FBB\r
+:1028E00080818F70806180838BEA91E00E948210EA\r
+:1028F0000C94F41301968770BECF0895CF92DF92A7\r
+:10290000EF92FF920F931F93CF93DF93CDB7DEB774\r
+:1029100062970FB6F894DEBF0FBECDBF8C0185E085\r
+:10292000F801DE011D9601900D928A95E1F7D8011C\r
+:102930004C9111965C91119712966C911297139687\r
+:10294000CD90DC9014973091AB017091AC018091E7\r
+:10295000AE019091AF01009709F46BC17F3F19F46C\r
+:102960003F3F09F466C1E090AD01EE2009F4C0C01C\r
+:102970002091B001C816D90628F0F601E81BF90B22\r
+:10298000CF0104C0809590958C0D9D1DFF24F3947C\r
+:10299000883C910578F0F12C207F09F0C6C07C2D91\r
+:1029A000D98AC88A89890E94D5138BEA91E00E944E\r
+:1029B0008210B1C0822F807F09F046C0751314C009\r
+:1029C000341312C0611110C02F7020612093B00128\r
+:1029D0000E9415148BEA91E00E9482108091B00150\r
+:1029E000D80115968C932EC0CD2819F15F3F11F4B4\r
+:1029F0004F3FF9F0F62E61111CC0809179012091B2\r
+:102A00007A0136E0821709F45AC090E0389FF0014D\r
+:102A1000399FF00D1124E558FE4F7181571306C000\r
+:102A20007081471303C07281711103C001968770D2\r
+:102A3000E9CFF62E662309F418C18091B0018160B8\r
+:102A40008093B001F12C11C1751308C0341306C076\r
+:102A5000611104C08091B001D801C3C04D875E8769\r
+:102A60008D859E856A8B0E94AF136A898823E1F168\r
+:102A70006623D1F12091B001822F82958F7090E072\r
+:102A8000029774F08091AB019091AC0198878F838D\r
+:102A90001986DB86CA862C87CE0107960E94821093\r
+:102AA00086E0F801ABEAB1E001900D928A95E1F77A\r
+:102AB0000E9423140E941514FF24F394D6C04D875E\r
+:102AC0005E878D859E850E94A018292F22952F70E4\r
+:102AD00030E0223031050CF0BCC09F7009F0B6C068\r
+:102AE000805E883008F4C1C0C8010E948210E4CF23\r
+:102AF000C816D90608F453C0F601E81BF90BCF013C\r
+:102B0000883C910508F450C0F12C7C2DD98AC88AE4\r
+:102B100089890E94D513EBEAF1E086E0DF011D927E\r
+:102B20008A95E9F70E941514A0C0751314C03413D8\r
+:102B300012C0611110C08091B001F8018583C801F5\r
+:102B40000E94821086E0EBEAF1E0DF011D928A9597\r
+:102B5000E9F7FE2C8AC04D875E878D859E856A8B3E\r
+:102B60000E94AF136A89882309F4BECF662309F453\r
+:102B7000BBCF2091B001822F82958F7090E0029799\r
+:102B80000CF48ECF8091AB019091AC019A83898334\r
+:102B90001B82DD82CC822E83CE0101967FCF809571\r
+:102BA00090958C0D9D1DACCFF62E662309F49CCF1D\r
+:102BB00075132EC034132CC02091B00120FD1FC00E\r
+:102BC000822F82958F70D9F0D80115962C93159786\r
+:102BD0008F3049F08F5F982F9295907F822F8F7062\r
+:102BE000892B15968C93C8010E94821086E0F8010B\r
+:102BF000ABEAB1E001900D928A95E1F793CF86E0C0\r
+:102C0000F801ABEAB1E001900D928A95E1F72DC091\r
+:102C10004D875E878D859E850E94AF13811140CFC1\r
+:102C20008091B00181608093B001C8010E94821040\r
+:102C30001CC0662309F458CF4D875E878D859E851D\r
+:102C40000E94AF13882309F44FCF2ACF811148CFB8\r
+:102C50000CC0243031050CF047CF9F7009F440CFF1\r
+:102C6000F8019581907F09F03BCF8F2D62960FB6CA\r
+:102C7000F894DEBF0FBECDBFDF91CF911F910F91B2\r
+:102C8000FF90EF90DF90CF9008951F93CF93DF9345\r
+:102C9000CDB7DEB72C970FB6F894DEBF0FBECDBF11\r
+:102CA0004F83588769877A878B879C87CE010796E1\r
+:102CB0000E947E14882369F08F8198852A853B8540\r
+:102CC000232BF1F19F3F09F063C08F3F09F060C0F3\r
+:102CD00037C086E0FE013796DE01119601900D9215\r
+:102CE0008A95E1F76F817885EA85FB85309741F118\r
+:102CF0007F3F11F46F3F21F120917A0130E0C9014B\r
+:102D00000196877099274091790150E084179507C3\r
+:102D100009F447C069837A83FD83EC8396E0929F30\r
+:102D2000D001939FB00D1124A558BE4FFE013196DE\r
+:102D300001900D929A95E1F780937A010E94F41325\r
+:102D400016E08091790190917A018917C1F1189F5D\r
+:102D5000C001112485589E4F0E947E14882379F16A\r
+:102D6000E09179011E9FF0011124E558FE4F40814A\r
+:102D7000518162817381848195810E94E4138091E5\r
+:102D8000790190E001968770992780937901D9CFD6\r
+:102D90004F81588569857A858B859C850E94E413CF\r
+:102DA000CFCF0E94AB1310927A0110927901EBEA17\r
+:102DB000F1E086E0DF011D928A95E9F7C1CF2C96FC\r
+:102DC0000FB6F894DEBF0FBECDBFDF91CF911F913C\r
+:102DD0000895EF92FF920F931F93CF93DF938C018F\r
+:102DE000892B09F46CC0F12CEE24E394E8012196C0\r
+:102DF000F8018491843740F4843008F051C0813068\r
+:102E000081F0823019F15BC0853709F444C0A8F124\r
+:102E10009CE7980F903708F052C08F770E942510DA\r
+:102E200041C00E5F1F4FFE01C49180E28C0F8830BD\r
+:102E300048F4C7708E2D01C0880FCA95EAF70E942A\r
+:102E4000771914C08C2F0E945D0F2DC00E5F1F4F8D\r
+:102E5000FE01C49180E28C0F883058F4C7708E2D2B\r
+:102E600001C0880FCA95EAF70E947D190E949E1939\r
+:102E70001AC08C2F0E94251016C00E5F1F4FFE0136\r
+:102E8000C491CC2381F08FE99FE00197F1F700C056\r
+:102E90000000C150F6CF0E5F1F4FFE01F49003C03B\r
+:102EA0000E945D0F8E018F2D882309F49FCFEFE9DB\r
+:102EB000FFE03197F1F700C000008150F5CFDF91BE\r
+:102EC000CF911F910F91FF90EF9008950895609317\r
+:102ED000B5017093B6018093B7019093B8010C943B\r
+:102EE00099130F931F930091B5011091B601209192\r
+:102EF000B7013091B801DC01CB01802B912BA22BC3\r
+:102F0000B32B8093B5019093B601A093B701B09312\r
+:102F1000B8011F910F910C9499130F931F93009177\r
+:102F2000B5011091B6012091B7013091B801DC01D3\r
+:102F3000CB0180239123A223B3238093B5019093E7\r
+:102F4000B601A093B701B093B8011F910F910C94F3\r
+:102F500099130F931F930091B5011091B601209121\r
+:102F6000B7013091B801DC01CB0180279127A2275E\r
+:102F7000B3278093B5019093B601A093B701B093A6\r
+:102F8000B8011F910F910C9499131092B1011092F6\r
+:102F9000B2011092B3011092B4010C94991341E064\r
+:102FA00050E060E070E004C0440F551F661F771FBB\r
+:102FB0008A95D2F74093B1015093B2016093B30167\r
+:102FC0007093B4010C94991341E050E060E070E01C\r
+:102FD00004C0440F551F661F771F8A95D2F7809152\r
+:102FE000B1019091B201A091B301B091B401482B0D\r
+:102FF000592B6A2B7B2B4093B1015093B201609304\r
+:10300000B3017093B4010C94991341E050E060E077\r
+:1030100070E004C0440F551F661F771F8A95D2F7D2\r
+:1030200040955095609570958091B1019091B20155\r
+:10303000A091B301B091B401482359236A237B23A3\r
+:103040004093B1015093B2016093B3017093B40106\r
+:103050000C94991341E050E060E070E004C0440F2C\r
+:10306000551F661F771F8A95D2F78091B101909105\r
+:10307000B201A091B301B091B401482759276A2742\r
+:103080007B274093B1015093B2016093B3017093D9\r
+:10309000B4010C9499130F931F930091B1011091F7\r
+:1030A000B2012091B3013091B401DC01CB01802B3E\r
+:1030B000912BA22BB32B8093B1019093B201A093DB\r
+:1030C000B301B093B4011F910F910C9499130F9316\r
+:1030D0001F930091B1011091B2012091B301309181\r
+:1030E000B401DC01CB0180239123A223B32380937D\r
+:1030F000B1019093B201A093B301B093B4011F91B9\r
+:103100000F910C9499130F931F930091B10110919B\r
+:10311000B2012091B3013091B401DC01CB018027D1\r
+:103120009127A227B3278093B1019093B201A09376\r
+:10313000B301B093B4011F910F910C9499130895AA\r
+:10314000CF92DF92EF92FF920F931F93CF93DF9373\r
+:103150008C01C090B501D090B601E090B701F0901D\r
+:10316000B8014091B1015091B2016091B3017091E9\r
+:10317000B401C42AD52AE62AF72ACFE1D0E0D70144\r
+:10318000C6010C2E04C0B695A795979587950A940D\r
+:10319000D2F780FF07C0B8018C2F0E94FA0581305A\r
+:1031A000910531F4219758F7B80180E00E94FA05A3\r
+:1031B000DF91CF911F910F91FF90EF90DF90CF9013\r
+:1031C000089590910C01992321F090910D01911196\r
+:1031D00009C020910E0130910F01F90132969FEF45\r
+:1031E00040E01FC0982F9695969596959F3050F584\r
+:1031F000E0910E01F0910F01E90FF11D877021E0C0\r
+:1032000030E0A90102C0440F551F8A95E2F7CA01B8\r
+:103210009181892B818308959F3F39F04F5F4E3014\r
+:1032200041F051915813F8CF0DC05111F7CF942FA1\r
+:10323000F5CF9F3F39F0F901E90FF11D97FDFA95A0\r
+:1032400082830895089590910C01992321F0909123\r
+:103250000D01911109C020910E0130910F01F9016A\r
+:103260003296205F3F4F1FC0982F96959695969562\r
+:103270009F30F0F4E0910E01F0910F01E90FF11D84\r
+:10328000877021E030E0A90102C0440F551F8A95E4\r
+:10329000E2F7CA018095918189238183089531964F\r
+:1032A000E217F30729F090819813F9CF1082F7CF36\r
+:1032B000089581E090E0E0910E01F0910F01E80F98\r
+:1032C000F91F1082019680319105A9F70895909118\r
+:1032D000CB01892B8093CB01089580959091CB01F0\r
+:1032E00089238093CB0108951092CB01089590918A\r
+:1032F000CA01892B8093CA01089580959091CA01D3\r
+:1033000089238093CA0108951092CA010895809379\r
+:10331000B90108951092B901089580910E0190911C\r
+:103320000F01FC0131969C01205F3F4F80E091919D\r
+:1033300091118F5FE217F307D1F70895E0910E0125\r
+:10334000F0910F018091CB018083E0910E01F0910B\r
+:103350000F0190818091CA01892B80838091B901EE\r
+:10336000882361F0E0910E01F0910F019081892B8B\r
+:1033700080830E948D1981111092B90180910E01F4\r
+:1033800090910F010C94410ECF92DF92EF92FF9239\r
+:103390006C01EE24FF24C114D104E104F10421F0F6\r
+:1033A000C701B60120E101C020E0C72ED82EE92ECA\r
+:1033B000FF24C114D104E104F10419F0285FC7010E\r
+:1033C000B6016B017C0154E0F694E794D794C7945E\r
+:1033D0005A95D1F7C114D104E104F10419F02C5F1E\r
+:1033E000C701B6016B017C0142E0F694E794D794E3\r
+:1033F000C7944A95D1F7C114D104E104F10419F03E\r
+:103400002E5FC701B601DC01CB01B695A795979554\r
+:103410008795892B8A2B8B2B09F02F5F822FFF90AA\r
+:10342000EF90DF90CF9008958091E501843009F10D\r
+:103430001092CD0120E488E190E00FB6F894A895B1\r
+:10344000809360000FBE2093600083B7817F84600B\r
+:1034500083BF83B7816083BF7894889583B78E7F5D\r
+:1034600083BF88E10FB6F8948093600010926000EB\r
+:103470000FBE089508950895CF930E943A1A0E94AE\r
+:1034800023040E943B1AC0E08C2F0E941105811179\r
+:1034900004C0CF5FCE30C1F701C081E0CF91089565\r
+:1034A0000E94AB130E94350E0C942E0782E084BD5F\r
+:1034B00093E095BD9AEF97BD80936E0008952FB766\r
+:1034C000F8948091CE019091CF01A091D001B0915C\r
+:1034D000D1012FBF0895CF92DF92EF92FF920F9309\r
+:1034E0001F932FB7F8944091CE015091CF01609176\r
+:1034F000D0017091D1012FBF6A017B01EE24FF241E\r
+:103500008C0120E030E0C016D106E206F30610F48C\r
+:10351000415051099A01281B390BC9011F910F9184\r
+:10352000FF90EF90DF90CF9008951F920F920FB60B\r
+:103530000F9211248F939F93AF93BF938091CE01ED\r
+:103540009091CF01A091D001B091D1010196A11D20\r
+:10355000B11D8093CE019093CF01A093D001B09381\r
+:10356000D101BF91AF919F918F910F900FBE0F909E\r
+:103570001F9018950E94320BF8942FEF87EA91E67E\r
+:10358000215080409040E1F700C0000087E090EBC0\r
+:10359000DC018093EE019093EF01A093F001B093D2\r
+:1035A000F1019CE088E10FB6F894A8958093600043\r
+:1035B0000FBE90936000FFCFEF92FF920F931F9387\r
+:1035C000CF93DF93D82FC0E08C2F0E94110500E02D\r
+:1035D00010E0E82EF12CC701002E02C095958795CA\r
+:1035E0000A94E2F780FD06C00F5F1F4F06301105F9\r
+:1035F00091F709C0602F7C2F80E00E94D805D81376\r
+:10360000F3CF81E004C0CF5FCE30F1F680E0DF91F0\r
+:10361000CF911F910F91FF90EF900895CF93C82FF6\r
+:103620008CE20E94DC1A882321F08C2FCF910C941D\r
+:10363000DC1A80E0CF910895CF930E94631C811122\r
+:1036400002C00E94491CC5E6C15049F00E942304F3\r
+:103650008FE39CE90197F1F700C00000F5CF89E204\r
+:103660000E940E1B811113C18AE20E940E1B811160\r
+:103670000E94491C85E00E940E1B81110E94BA1A0B\r
+:103680000E946E1C8093CC0187E00E940E1B882351\r
+:10369000A9F18BE10E940E1B882351F08091CC018F\r
+:1036A00081FB222720F991E0922790FB81F90EC03F\r
+:1036B0008EE00E940E1B882361F08091CC0182FB7A\r
+:1036C000222720F991E0922790FB82F98093CC0188\r
+:1036D00015C080E10E940E1B9091CC01882341F01F\r
+:1036E00093FB222720F981E0822780FB93F904C015\r
+:1036F000892F809580FB90F99093CC018091CC012B\r
+:103700000E94721C0E94801C8093DF0180EE0E9448\r
+:103710000E1B882341F08091DF01982F909590FB3C\r
+:1037200080F98093DF0189E30E940E1B882359F002\r
+:103730008091DF0181FB222720F991E0922790FB05\r
+:1037400081F98093DF0182EE0E940E1B882359F0DD\r
+:103750008091DF0182FB222720F991E0922790FBE4\r
+:1037600082F98093DF0186EE0E940E1B882359F0B8\r
+:103770008091DF0183FB222720F991E0922790FBC3\r
+:1037800083F98093DF0183EE0E940E1B882359F09A\r
+:103790008091DF0184FB222720F991E0922790FBA2\r
+:1037A00084F98093DF0185E30E940E1B882359F082\r
+:1037B0008091DF0185FB222720F991E0922790FB81\r
+:1037C00085F98093DF0181E30E940E1B882359F065\r
+:1037D0008091DF0186FB222720F991E0922790FB60\r
+:1037E00086F98093DF0181E10E940E1B882359F046\r
+:1037F0008091DF0187FB222720F991E0922790FB3F\r
+:1038000087F98093DF018091DF010E94841C809101\r
+:10381000DF0187FB882780F980930D0187E20E94F2\r
+:103820000E1BC82F8EE10E940E1B8111C2608FE11A\r
+:103830000E940E1B8111C46080E20E940E1B811148\r
+:10384000C86081E20E940E1B8111C06182E20E9469\r
+:103850000E1B8111C06283E20E940E1B8111C064A5\r
+:1038600084E20E940E1B882311F0C06802C0CC23A2\r
+:1038700029F08C2F0E947B1C6C2F03C00E94771CA8\r
+:10388000682F70E080E090E0CF910C946717CF91A3\r
+:1038900008956DEE7EEF80E090E00E94AF2260E040\r
+:1038A00082E090E00E94A12260E083E090E00E942C\r
+:1038B000A12260E084E090E00E94A12260E085E027\r
+:1038C00090E00C94A12280E090E00E949B2221E0F5\r
+:1038D0008D3E9E4F09F020E0822F089582E090E017\r
+:1038E0000C949322682F82E090E00C94A12283E054\r
+:1038F00090E00C949322682F83E090E00C94A12236\r
+:1039000084E090E00C949322682F84E090E00C9483\r
+:10391000A1228091D40180FF0BC06091130185E04A\r
+:10392000689FB001112475956795759567952BC0B3\r
+:1039300081FF09C06091130185E0689FB0011124E7\r
+:103940007595679520C082FF07C06091130185E0DF\r
+:10395000689FB001112417C09091D5019923D1F02F\r
+:1039600060911201961788F72091130185E0289F36\r
+:1039700090011124929FA001939F500D112470E09B\r
+:10398000CA010E9465226038710540F46115710515\r
+:1039900039F002C065E070E0862F08958FE7089542\r
+:1039A00081E008958091D40180FF08C060911101E9\r
+:1039B00070E0759567957595679521C081FF06C084\r
+:1039C0006091110170E07595679519C082FF04C080\r
+:1039D0006091110170E010C09091D5019923C1F060\r
+:1039E000609110019617A0F780911101899FC00185\r
+:1039F000112470E00E9465226038710528F4611579\r
+:103A0000710521F0862F08958FE7089581E00895CC\r
+:103A100061E070E0F4CF803F21F40E94891C819521\r
+:103A200004C0813F29F40E94891C8093D801089525\r
+:103A3000823F21F40E94891C819504C0833F29F4B0\r
+:103A40000E94891C8093D7010895893F19F40E9430\r
+:103A5000D21C05C08A3F31F40E94D21C819580930C\r
+:103A6000D90108958B3F21F40E94D21C819504C096\r
+:103A70008C3F29F40E94D21C8093DA010895843F80\r
+:103A800021F48091D601816017C0853F21F4809197\r
+:103A9000D601826011C0863F21F48091D6018460F6\r
+:103AA0000BC0873F21F48091D601886005C0883F14\r
+:103AB00031F48091D60180618093D60108958D3FC5\r
+:103AC00021F48091D40181600BC08E3F21F480915C\r
+:103AD000D401826005C08F3F29F48091D4018460B5\r
+:103AE0008093D4010895803F39F48091D80187FFF5\r
+:103AF0006CC01092D80169C0813F29F48091D8012F\r
+:103B00001816BCF362C09091D701823F29F497FF49\r
+:103B10005CC01092D70159C0833F19F41916CCF339\r
+:103B200054C0893F41F48091D90118160CF04DC062\r
+:103B30001092D9014AC08A3F29F48091D90187FFA8\r
+:103B400044C0F6CF8B3F39F48091DA0187FF3DC046\r
+:103B50001092DA013AC08C3F29F48091DA011816EC\r
+:103B6000BCF333C0843F21F48091D6018E7F17C00F\r
+:103B7000853F21F48091D6018D7F11C0863F21F4CD\r
+:103B80008091D6018B7F0BC0873F21F48091D601B5\r
+:103B9000877F05C0883F31F48091D6018F7E809366\r
+:103BA000D60113C08D3F21F48091D4018E7F0BC0CC\r
+:103BB0008E3F21F48091D4018D7F05C08F3F29F481\r
+:103BC0008091D4018B7F8093D4018091D7018111A2\r
+:103BD0000EC08091D80181110AC08091D901811154\r
+:103BE00006C08091DA01811102C01092D5010895BA\r
+:103BF00086ED91E00E944C0E0E945F1A9093D301D3\r
+:103C00008093D20108951F93CF93DF938091D201C7\r
+:103C10009091D3010E946B1AAC019091D501992328\r
+:103C200021F02091140130E006C0209115018AE0B6\r
+:103C3000289F900111244217530708F486C08091F1\r
+:103C4000D701C091D801D091D9011091DA01811129\r
+:103C500007C0C11176C0D11174C0111172C075C0F6\r
+:103C60009F3F19F09F5F9093D501181624F40E948E\r
+:103C7000891C8093D7018091D70187FF05C00E94DE\r
+:103C8000891C81958093D7011C1624F40E94891CFD\r
+:103C90008093D8018091D80187FF05C00E94891CBC\r
+:103CA00081958093D8016091D701662339F1C09145\r
+:103CB000D801CC2319F1772767FD7095872F972FAF\r
+:103CC0000E94762123E333E343E35FE30E94DA219A\r
+:103CD0000E9443216093D7016C2F772767FD709571\r
+:103CE000872F972F0E94762123E333E343E35FE39B\r
+:103CF0000E94DA210E9443216093D8011D1624F40A\r
+:103D00000E94D21C8093D9018091D90187FF05C000\r
+:103D10000E94D21C81958093D901111624F40E942F\r
+:103D2000D21C8093DA018091DA0187FF05C00E94DE\r
+:103D3000D21C81958093DA01DF91CF911F910C9471\r
+:103D4000F81D9F3F09F08ECF96CFDF91CF911F9145\r
+:103D50000895E6EDF1E085E0DF011D928A95E9F72F\r
+:103D60001092D5011092D4010895833081F128F486\r
+:103D7000813059F08230D1F00895853009F449C07E\r
+:103D8000B8F1863009F456C0089580911501262FA8\r
+:103D900030E0280F311D2F3F310524F4680F609368\r
+:103DA000150108958FEF80931501089580911401F6\r
+:103DB000262F30E0280F311D2F3F310524F4680FE6\r
+:103DC0006093140108958FEF8093140108958091FA\r
+:103DD0001301262F30E0280F311D2F3F310524F429\r
+:103DE000680F6093130108958FEF80931301089576\r
+:103DF00080911201262F30E0280F311D2F3F310511\r
+:103E000024F4680F6093120108958FEF80931201DC\r
+:103E1000089580911101262F30E0280F311D2F3F8A\r
+:103E2000310524F4680F6093110108958FEF80939A\r
+:103E30001101089580911001262F30E0280F311DC7\r
+:103E40002F3F310524F4680F6093100108958FEF20\r
+:103E5000809310010895833011F128F4813049F0E6\r
+:103E6000823091F00895853081F120F18630C1F1E2\r
+:103E7000089580911501681720F4861B8093150121\r
+:103E8000089510921501089580911401681720F487\r
+:103E9000861B809314010895109214010895809157\r
+:103EA0001301681720F4861B809313010895109264\r
+:103EB0001301089580911201681720F4861B8093E6\r
+:103EC000120108951092120108958091110168174E\r
+:103ED00020F4861B8093110108951092110108951A\r
+:103EE00080911001681720F4861B809310010895BB\r
+:103EF0001092100108950F931F938D3109F46BC038\r
+:103F000008F03FC08E3009F47DC0C0F4873009F45A\r
+:103F10006EC068F4863009F0AFC08091CC01817F1B\r
+:103F20008E7F8093CC0181E08093DC01A6C0883035\r
+:103F300009F458C08B3009F49BC09EC0863109F447\r
+:103F400097C078F4803109F470C0813109F094C0D1\r
+:103F50000E94AB1390910D0181E0892780930D01A0\r
+:103F600087C0893109F484C08B3109F085C0809104\r
+:103F7000CC0181FB222720F991E0922790FB81F967\r
+:103F80004AC0853309F45BC048F4873209F457C04E\r
+:103F900008F45AC0893209F452C06EC0833438F430\r
+:103FA0008A3308F067C0883309F462C065C083347F\r
+:103FB00009F445C0883409F05FC00E94AB130FEFCD\r
+:103FC00013ED20E3015010402040E1F700C0000055\r
+:103FD0000E94BA1A4DC00E94FD200E94350E0E9418\r
+:103FE0002E0746C00E946E1C0E94801C41C090910A\r
+:103FF000CC01892F817090FF12C0917F9E7F90939A\r
+:10400000CC013BC08091CC0182FB222720F991E0BA\r
+:10401000922790FB82F98093CC01992349F18091FA\r
+:10402000CC0181608093CC0123C08091CC0183FBC3\r
+:10403000222720F991E0922790FB83F9ECCF61E0F1\r
+:1040400070E080E090E010C08D5141E050E060E011\r
+:1040500070E08A019B0104C0000F111F221F331F53\r
+:104060008A95D2F7C901B8010E9467170E94AB1365\r
+:1040700081E003C08953E9CF80E01F910F9108953B\r
+:1040800080E0089580E00895CF93C82F8091DC01EF\r
+:10409000813079F018F08230E9F187C0E0910E01AB\r
+:1040A000F0910F018081813169F0823209F07FC087\r
+:1040B00009C0E0910E01F0910F018081813111F072\r
+:1040C000823261F48C2F0E944020811104C08C2F19\r
+:1040D0000E947B1F1DC081E090E01AC08C2F0E94BF\r
+:1040E0004220811114C0C43179F048F4CB3079F00A\r
+:1040F000C03109F060C082E08093DC0108C0C932A1\r
+:1041000019F0C83321F057C01092DC0154C081E08F\r
+:10411000817053C0C93289F118F5C43171F1A8F426\r
+:10412000C73009F046C08AE08093150194E190936E\r
+:10413000140193E0909313018093120188E080931F\r
+:10414000110188E28093100134C0CE51C63088F549\r
+:10415000EC2FF0E0E65DFE4F80818093DB0129C00B\r
+:10416000CE34E9F020F4CB3421F56AE013C0C13538\r
+:1041700079F0C235F1F461E00DC08091DB01882354\r
+:1041800019F01092DB0115C081E08093DC0115C0AD\r
+:1041900061E006C08091DB010E94B51E0AC06AE0A2\r
+:1041A0008091DB010E942B1F04C01092DC0180E093\r
+:1041B00004C081E002C080E0ABCFCF910895E1E878\r
+:1041C000F0E08081886080838081816080838FB708\r
+:1041D000F89493E09093890090ED909388008FBFBE\r
+:1041E0000895EFE6F0E08081826080830895EFE635\r
+:1041F000F0E080818D7F80830895EFE6F0E090818C\r
+:1042000082E08927808308951F920F920FB60F9244\r
+:1042100011242F933F934F935F936F937F938F93CB\r
+:104220009F93AF93BF93EF93FF938091DD019091A4\r
+:10423000DE0101969093DE018093DD01811103C0C0\r
+:1042400082E00E942E07E091DE01E695E695F0E01F\r
+:10425000E657FB4FE4918091DD018E1303C080E0AF\r
+:104260000E942E07FF91EF91BF91AF919F918F9187\r
+:104270007F916F915F914F913F912F910F900FBE62\r
+:104280000F901F90189504D06894B1118DC00895B7\r
+:1042900070D088F09F5790F0B92F9927B751A0F0B0\r
+:1042A000D1F0660F771F881F991F1AF0BA95C9F7CA\r
+:1042B00012C0B13081F077D0B1E0089574C0672F9B\r
+:1042C000782F8827B85F39F0B93FCCF3869577957A\r
+:1042D0006795B395D9F73EF4909580957095619563\r
+:1042E0007F4F8F4F9F4F0895E89409C097FB3EF48E\r
+:1042F00090958095709561957F4F8F4F9F4F992333\r
+:10430000A9F0F92F96E9BB279395F69587957795B0\r
+:104310006795B795F111F8CFFAF4BB0F11F460FF70\r
+:104320001BC06F5F7F4F8F4F9F4F16C0882311F0C8\r
+:1043300096E911C0772321F09EE8872F762F05C0DC\r
+:10434000662371F096E8862F70E060E02AF09A9577\r
+:10435000660F771F881FDAF7880F9695879597F96C\r
+:10436000089557FD9058440F551F59F05F3F71F065\r
+:104370004795880F97FB991F61F09F3F79F08795CC\r
+:104380000895121613061406551FF2CF4695F1DF55\r
+:1043900008C0161617061806991FF1CF86957105E5\r
+:1043A000610508940895E894BB2766277727CB0119\r
+:1043B00097F908950BD078C069D028F06ED018F026\r
+:1043C000952309F05AC05FC01124EECFCADFA0F3D5\r
+:1043D000959FD1F3950F50E0551F629FF001729F9A\r
+:1043E000BB27F00DB11D639FAA27F00DB11DAA1FB9\r
+:1043F000649F6627B00DA11D661F829F2227B00D06\r
+:10440000A11D621F739FB00DA11D621F839FA00D90\r
+:10441000611D221F749F3327A00D611D231F849FE0\r
+:10442000600D211D822F762F6A2F11249F57504037\r
+:104430008AF0E1F088234AF0EE0FFF1FBB1F661FD2\r
+:10444000771F881F91505040A9F79E3F510570F08B\r
+:1044500014C0AACF5F3FECF3983EDCF386957795C6\r
+:104460006795B795F795E7959F5FC1F7FE2B880F86\r
+:10447000911D9695879597F9089597F99F6780E81C\r
+:1044800070E060E008959FEF80EC089500240A94A6\r
+:104490001616170618060906089500240A9412161F\r
+:1044A0001306140605060895092E0394000C11F452\r
+:1044B000882352F0BB0F40F4BF2B11F460FF04C0FF\r
+:1044C0006F5F7F4F8F4F9F4F089597FB072E16F416\r
+:1044D000009407D077FD09D00E947F2207FC05D009\r
+:1044E0003EF4909581959F4F0895709561957F4F0B\r
+:1044F0000895EE0FFF1F0590F491E02D0994AA1B7B\r
+:10450000BB1B51E107C0AA1FBB1FA617B70710F0BE\r
+:10451000A61BB70B881F991F5A95A9F780959095F0\r
+:10452000BC01CD010895F999FECF92BD81BDF89AE5\r
+:10453000992780B50895A8E1B0E042E050E00C94DE\r
+:10454000B622262FF999FECF1FBA92BD81BD20BD9C\r
+:104550000FB6F894FA9AF99A0FBE019608950E9440\r
+:10456000A122272F0C94A222DC01CB01FC01F99996\r
+:10457000FECF06C0F2BDE1BDF89A319600B40D92AF\r
+:0C45800041505040B8F70895F894FFCF68\r
+:10458C0020023007BE079B07670733070101BA01FA\r
+:10459C0028080A03140A3F4D36394B04FE03C8039E\r
+:1045AC008F0322033B0354036D030102030405062E\r
+:0445BC0007080900E3\r
+:00000001FF\r
diff --git a/keyboard/ergodox_ez/keymaps/msc/readme.md b/keyboard/ergodox_ez/keymaps/msc/readme.md
new file mode 100644 (file)
index 0000000..0d14fcb
--- /dev/null
@@ -0,0 +1,32 @@
+# MSC Configuration
+
+### Based mostly on the ErgoDox EZ default layout with optimizations for coding on osx.
+
+#### Expecting the user to rely on Coder Layer this keymap removes some of the duplicate symbol keys in the lower portions of the board and replaces them with arrow keys and modifiers. The Media Layer is also updated to match the change in the arrow keys and the left and right click buttons are moved under the thumb position. The Media layer is now reached with toggle button in the lower right.
+
+### Main Layer
+
+![Main Layer](img/main_layer.png)
+
+### Code Layer
+
+![Code Layer](img/code_layer.png)
+
+### Media Layer
+
+![Media Layer](img/media_layer.png)
+
+## Changelog
+
+Version 1.0
+
+- Changed the temp code layer key in the bottom right to toggle media layer
+- Changed the temp media key to only be ";"
+- Changed right hand bottom row to match vim home row nav directions
+- Changed media keys to match arrow key changes
+- Changed media left and right click to spacebar and backspace locations
+- Changed bottom left to Cmd
+- Changed single quote on left bottom row to alt
+
+#### Coming Soon:
+- A new layer for Blender editing with a focus on left hand shortcut and a righthand num pad to control the view in Blender.
diff --git a/keyboard/ergodox_ez/keymaps/naps62/README.md b/keyboard/ergodox_ez/keymaps/naps62/README.md
new file mode 100644 (file)
index 0000000..14728e4
--- /dev/null
@@ -0,0 +1,29 @@
+# ErgoDox EZ naps62 Configuration
+
+## Motivation
+
+I wanted a layout that suited my Linux & Vim usage. I also didn't like the lack of efficient access to some of the more common special characters used in programming.
+
+## Key features / changes
+
+### Base Layer (L1)
+
+* **No `MT(mod, kc)` keys (modifier when pressed, key when tapped).** Those keys work with a global timeout. When a key press is shorter than the timeout, it's considered a tap, otherwise it's a hold. I couldn't find any particular timeout that would work for me. I need to use mods extremely fast, but also want the confort of using them more slowly in other occasions. So I gave up on this feature altogether.
+* **Direct access to `{}[]`.** When programming, these are used extremely often. I was still getting used to the coder layer, and I prefer the arrows on the home row, so I used the bottom-right keys for this.
+* **Layer keys everywhere.** I either use my little finger or my index finger to go to L1, whichever is more confortable in any given situation. L2 is not used while coding/writing, so I don't need an extremely-optimized access to it.
+* **Lang key.** This is nothing more than `Super-Space` combo, which in my systems (both Linux & Windows) is the shortcut to change the keyboard language. I'm Portuguese, so I often cycle between US layout for coding, and PT layout for writing.
+* **Special chars on the right-most column.** I only use Ctrl & Shift keys on the left side, so I used the right keys to include some of the more useful special characters as well.
+
+### Coder Layer (L2)
+
+* The `=` and `-` signs where nowhere to be found. `-` was already on the base layer, but it's still useful to have a fully-featured NumPad on the coder layer.
+
+### Media Layer (L3)
+
+* **Better media keys**. Why was Play/Pause so far away? And where was Mute? I put all my media keys close to each other, including the missing ones
+* **Arrow keys on home row.** I use vim, so I'm always on my home row. I use this sometimes to get around, but not as often as to need them on the base row. I'm fine with them here
+* I don't use mouse keys. They're still set up, and I made some changes as an experiment, but I mostly forgot they exist by now.
+
+## Author
+
+[Miguel Palhas](https://github.com/naps62)
diff --git a/keyboard/ergodox_ez/keymaps/naps62/ergodox_ez.hex b/keyboard/ergodox_ez/keymaps/naps62/ergodox_ez.hex
new file mode 100644 (file)
index 0000000..e5f213b
--- /dev/null
@@ -0,0 +1,1474 @@
+:100000000C9402070C9449070C9449070C94490777\r
+:100010000C9449070C9449070C9449070C94490720\r
+:100020000C9449070C9449070C9472120C944413D5\r
+:100030000C9449070C9449070C9449070C94490700\r
+:100040000C9449070C94082C0C9449070C9449070C\r
+:100050000C9449070C9401220C9449070C9449070D\r
+:100060000C9449070C9449070C9449070C944907D0\r
+:100070000C9449070C9449070C9449070C944907C0\r
+:100080000C9449070C9449070C9449070C944907B0\r
+:100090000C9449070C9449070C9449070C944907A0\r
+:1000A0000C9449070C9449070C944907B113D313D6\r
+:1000B000C614D313C61418143B14C6149014A314F6\r
+:1000C000F117F1172018201863189D18AA1AAA1AF8\r
+:1000D000B618AA1AAB19AB197E1AAA1AAA1A951A37\r
+:1000E0000000F0A12D002B002971E100C1000000EB\r
+:1000F0001E00140004001D003500E2001F001A005D\r
+:1001000016001B003400E000200008000700060075\r
+:1001100050002C0021001500090019004F82E30057\r
+:10012000220017000A00050000004A812C08015433\r
+:100130000000007F00004D8249000254000000775B\r
+:1001400000004B8223001C000B00110000004E81B8\r
+:10015000240018000D0010002F024C0025000C0098\r
+:100160000E00360030022C00260012000F0037006F\r
+:100170002F002800270013003300380030002A0029\r
+:100180002D00310034712D72C1000000010001000A\r
+:1001900001000100010000003A001E0220022202BC\r
+:1001A000010001003B001F022102230201000100A7\r
+:1001B0003C002F0226022F00010001003D0030020A\r
+:1001C00027023000010001003E00310235003502F7\r
+:1001D000000001000100010000000100000001001A\r
+:1001E0000100010000000100000001003F0052007A\r
+:1001F00051002402000001004000240021001E00E4\r
+:100200002E0001004100250022001F0037000100E0\r
+:1002100042002600230020002700010043002502A1\r
+:100220002E0231002D0001004400450001000100B4\r
+:100230000100000000500100010001000100000069\r
+:1002400001000100040801000100010001001A087A\r
+:10025000160801000100F500010008080708010068\r
+:100260000100F4000100F400F100010001000100B0\r
+:1002700001001708F3000100000001000100010067\r
+:100280000000010000000100010001000000010069\r
+:100290000000010001000100F20001000000010067\r
+:1002A0000100F400F100AA00AE0001000100F50019\r
+:1002B000F000A900AC00B70001000100F300A800A5\r
+:1002C000AB00B600010001000100010001000100C7\r
+:1002D0000100010001000100010000000A002530BA\r
+:1002E000313662003A200025303258000A722F63FE\r
+:1002F0002030313233343536373839414243444582\r
+:10030000460A000A002530325800626F756E636538\r
+:10031000213A20006C6566742073696465206174FD\r
+:100320007461636865640A006C656674207369644F\r
+:1003300065206E6F7420726573706F6E64696E678E\r
+:100340000A00747279696E6720746F207265736534\r
+:1003500074206D637032333031380A000A444542EC\r
+:1003600055473A20656E61626C65642E0A005B73C6\r
+:100370005D004B6579626F617264207374617274A1\r
+:100380002E0A005B575D005B535D005B525D005BB6\r
+:10039000445D005B435D0016034500720067006F1B\r
+:1003A0000044006F007800200045005A000000164D\r
+:1003B000034500720067006F0044006F0078002062\r
+:1003C0000045005A0000000403090409028D0005DD\r
+:1003D0000100A0FA09040000010301010009211134\r
+:1003E000010001223F000705810308000A090401FA\r
+:1003F000000103010200092111010001224D000743\r
+:1004000005820308000A0904020001030000000934\r
+:1004100021110100012236000705830308000A09A3\r
+:100420000403000203000000092111010001222041\r
+:1004300000070584032000010705040320000109CB\r
+:100440000404000103000000092111010001223908\r
+:1004500000070585031000011201100100000008CB\r
+:10046000EDFE071301000102000105010906A101CB\r
+:10047000050719E029E71500250195087501810296\r
+:100480000508190129059505750191029501750366\r
+:100490009101050719002977150025019578750147\r
+:1004A0008102C00631FF0974A1010975150025FFFD\r
+:1004B0009520750881020976150025FF952075089D\r
+:1004C0009102C005010980A101850216010026B72D\r
+:1004D000001A01002AB700751095018100C0050CB3\r
+:1004E0000901A1018503160100269C021A01002AB8\r
+:1004F0009C02751095018100C005010902A1010946\r
+:1005000001A10005091901290515002501950575A9\r
+:100510000181029501750381010501093009311539\r
+:1005200081257F95027508810609381581257F95FB\r
+:100530000175088106050C0A38021581257F950191\r
+:1005400075088106C0C005010906A101050719E06B\r
+:1005500029E71500250195087501810295017508A7\r
+:10056000810105081901290595057501910295017B\r
+:10057000750391010507190029FF150025FF950650\r
+:1005800075088100C00A002530325820006B65795B\r
+:10059000626F6172645F7265706F72743A20000AF4\r
+:1005A0000025303258006B6579626F6172645F7349\r
+:1005B00065745F6C65643A200064656C5F6B657997\r
+:1005C0005F6269743A2063616E27742064656C3AD7\r
+:1005D00020253032580A006164645F6B65795F6280\r
+:1005E00069743A2063616E2774206164643A20253F\r
+:1005F0003032580A00646F6E652E0A00626F6F67B2\r
+:100600006D61676963207363616E3A202E2E2E2020\r
+:1006100000290A002575002F002575005D2800259A\r
+:10062000640020002564002000256400200025646B\r
+:10063000007C0025303258006D6F7573656B6579ED\r
+:10064000205B62746E7C782079207620685D287249\r
+:1006500065702F61636C293A205B006D6B5F776872\r
+:1006600065656C5F74696D655F746F5F6D6178203F\r
+:100670003D2025640A006D6B5F776865656C5F6D72\r
+:1006800061785F7370656564203D2025640A006DA4\r
+:100690006B5F74696D655F746F5F6D6178203D207D\r
+:1006A00025640A006D6B5F6D61785F7370656564CA\r
+:1006B000203D2025640A006D6B5F696E746572765B\r
+:1006C000616C203D2025640A006D6B5F64656C6180\r
+:1006D00079203D2025640A006D6B5F776865656C45\r
+:1006E0005F74696D655F746F5F6D6178203D202573\r
+:1006F000640A006D6B5F776865656C5F6D61785F3C\r
+:100700007370656564203D2025640A006D6B5F741D\r
+:10071000696D655F746F5F6D6178203D2025640AA7\r
+:10072000006D6B5F6D61785F7370656564203D205F\r
+:1007300025640A006D6B5F696E74657276616C206A\r
+:100740003D2025640A006D6B5F64656C6179203D16\r
+:100750002025640A000A00257500363A207768656E\r
+:10076000656C5F74696D655F746F5F6D61783A2069\r
+:10077000000A00257500353A20776865656C5F6D65\r
+:1007800061785F73706565643A20000A0025750022\r
+:10079000343A2074696D655F746F5F6D61783A20DB\r
+:1007A000000A00257500333A206D61785F7370652B\r
+:1007B00065643A20000A00257500323A20696E749B\r
+:1007C000657276616C286D73293A20000A002575E0\r
+:1007D00000313A2064656C6179282A31306D7329C3\r
+:1007E0003A20000A092D2056616C756573202D0A88\r
+:1007F000004D3E004D25643E20003F00736574208F\r
+:1008000064656661756C740A00433E200077686514\r
+:1008100072652064656C74613A20637572736F72DF\r
+:100820003D25642C20776865656C3D25640A536519\r
+:100830006520687474703A2F2F656E2E77696B6926\r
+:1008400070656469612E6F72672F77696B692F4DD0\r
+:100850006F7573655F6B6579730A000A092D204D0A\r
+:100860006F7573656B6579202D0A4553432F713A77\r
+:1008700009717569740A313A0964656C6179282ACD\r
+:1008800031306D73290A323A09696E746572766186\r
+:100890006C286D73290A333A096D61785F7370654E\r
+:1008A00065640A343A0974696D655F746F5F6D61E0\r
+:1008B000780A353A09776865656C5F6D61785F73B2\r
+:1008C000706565640A363A09776865656C5F7469B6\r
+:1008D0006D655F746F5F6D61780A0A703A097072B6\r
+:1008E000696E742076616C7565730A643A09736584\r
+:1008F000742064656661756C74730A75703A092BAF\r
+:10090000310A646F776E3A092D310A706775703A53\r
+:10091000092B31300A7067646F776E3A092D3130D8\r
+:100920000A0A7370656564203D2064656C746120FB\r
+:100930002A206D61785F7370656564202A202872B3\r
+:100940006570656174202F2074696D655F746F5FD9\r
+:100950006D6178290A003F004D3E2000433E200093\r
+:100960004C25640A000A092D20436F6E736F6C6575\r
+:10097000202D0A4553432F713A09717569740A6D28\r
+:100980003A096D6F7573656B65790A000A092D2048\r
+:100990004D61676963202D0A643A09646562756771\r
+:1009A0000A783A096465627567206D6174726978C6\r
+:1009B0000A6B3A096465627567206B6579626F61DD\r
+:1009C00072640A6D3A096465627567206D6F7573AC\r
+:1009D000650A763A0976657273696F6E0A733A0929\r
+:1009E0007374617475730A633A09636F6E736F6C25\r
+:1009F00065206D6F64650A302D343A096C61796544\r
+:100A000072302D34284631302D4634290A50617514\r
+:100A1000733A09626F6F746C6F616465720A653A4C\r
+:100A200009656570726F6D0A6E3A094E4B524F0A36\r
+:100A30007A3A09736C656570204C4544207465737F\r
+:100A4000740A000A002575002E6E6B726F3A200042\r
+:100A50000A002575002E737761705F6261636B73A6\r
+:100A60006C6173685F6261636B73706163653A2088\r
+:100A7000000A002575002E737761705F67726176DA\r
+:100A8000655F6573633A20000A002575002E6E6F5E\r
+:100A90005F6775693A20000A002575002E7377613B\r
+:100AA000705F72616C745F726775693A20000A004A\r
+:100AB0002575002E737761705F6C616C745F6C6775\r
+:100AC00075693A20000A002575002E636170736C09\r
+:100AD0006F636B5F746F5F636F6E74726F6C3A20DD\r
+:100AE000000A002575002E737761705F636F6E7466\r
+:100AF000726F6C5F636170736C6F636B3A20000A96\r
+:100B00000025303258006B65796D61705F636F6EE0\r
+:100B10006669672E7261773A20000A002575002EFB\r
+:100B20006D6F7573653A20000A002575002E6B65A0\r
+:100B300079626F6172643A20000A002575002E6D9B\r
+:100B400061747269783A20000A002575002E656E7E\r
+:100B500061626C653A20000A0025303258006465F5\r
+:100B60006275675F636F6E6669672E7261773A20A0\r
+:100B7000000A0025750064656661756C745F6C61C0\r
+:100B80007965723A20003F004E4B524F3A206F6613\r
+:100B9000660A004E4B524F3A206F6E0A0074696D20\r
+:100BA00065725F636F756E743A202530346C580A35\r
+:100BB000006B6579626F6172645F6E6B726F3A2071\r
+:100BC00025580A006B6579626F6172645F69646CB5\r
+:100BD000653A2025580A006B6579626F6172645F1F\r
+:100BE00070726F746F636F6C3A2025580A00686FDB\r
+:100BF00073745F6B6579626F6172645F6C65647357\r
+:100C000028293A2025580A000A092D2053746174B6\r
+:100C10007573202D0A004743433A20352E332E307A\r
+:100C2000204156522D4C4942433A20312E382E3124\r
+:100C300073766E204156525F415243483A206176A6\r
+:100C400072350A004F5054494F4E533A204C554686\r
+:100C50004120424F4F544D41474943204D4F55533A\r
+:100C6000454B45592045585452414B455920434F17\r
+:100C70004E534F4C4520434F4D4D414E44204E4B1B\r
+:100C8000524F203531320A004255494C443A203601\r
+:100C9000386366663764202832323A33323A303568\r
+:100CA000204A616E2033302032303136290A005616\r
+:100CB00049443A20307846454544284572676F4498\r
+:100CC0006F7820455A29205049443A2030783133F2\r
+:100CD0003037284572676F446F7820455A2920566F\r
+:100CE00045523A203078303030310A004445534381\r
+:100CF0003A20742E6D2E6B2E206B6579626F6172B7\r
+:100D000064206669726D7761726520666F72204536\r
+:100D100072676F646F780A000A092D205665727336\r
+:100D2000696F6E202D0A000A6D6F7573653A206F2A\r
+:100D300066660A000A6D6F7573653A206F6E0A0069\r
+:100D40000A6B6579626F6172643A206F66660A00A9\r
+:100D50000A6B6579626F6172643A206F6E0A000AED\r
+:100D60006D61747269783A206F66660A000A6D6177\r
+:100D7000747269783A206F6E0A000A64656275675A\r
+:100D80003A206F6E0A000A64656275673A206F66E2\r
+:100D9000660A000A0A626F6F746C6F616465722E76\r
+:100DA0002E2E2000433E20006565636F6E666967E6\r
+:100DB0003A0A00536C656570204C45442074657395\r
+:100DC000740A0000000000000000000000000102A2\r
+:100DD00004060A0F17202C3A4A5D71879DB3C7DAC3\r
+:100DE000E9F5FCFFFCF5E9DAC7B39D87715D4A3A86\r
+:100DF0002C20170F0A06040201000000000000006A\r
+:100E00000000000011241FBECFEFDAE0DEBFCDBF2F\r
+:100E100004B603FE27C08091F8019091F901A091DA\r
+:100E2000FA01B091FB018730904BA740B04BD1F451\r
+:100E30001092F8011092F9011092FA011092FB0140\r
+:100E400014BE84B7877F84BF0FB6F894A8958091AD\r
+:100E50006000886180936000109260000FBEE0E047\r
+:100E6000FFE3099511E0A0E0B1E0EAECFBE502C088\r
+:100E700005900D92AA33B107D9F721E0AAE3B1E0BA\r
+:100E800001C01D92A83FB207E1F70E94AD0F0C947C\r
+:100E9000E32D0C940000FF93EF93E0913A01F09161\r
+:100EA0003B01309709F00995EF91FF910895FC01FE\r
+:100EB0008591803011F0EFDFFBCF0895FF27E0E24E\r
+:100EC00030E247FF0CC0419597FF09C0EDE2609505\r
+:100ED000709580959095611D711D811D911D27FF55\r
+:100EE00002C0219530E350E2AA27660F771F881FC2\r
+:100EF000991FAA1FA41710F0A41B63955A95A9F770\r
+:100F0000AA3008F0A95FA05DAF93F3956115710554\r
+:100F10008105910541F7ED3211F4EF93F395F21746\r
+:100F200018F43F93F395FBCF8F91B5DFFA95E1F776\r
+:100F30000895E991F9918591803021F0853219F079\r
+:100F4000AADFF9CF089520E0E89455915532C1F316\r
+:100F5000503311F4689455915A3348F4505390F338\r
+:100F6000220F022E220F220F200D250FF4CF0EF498\r
+:100F7000219589919991533619F3533729F15335B6\r
+:100F800059F1BC0188279927E8945C3621F48991AE\r
+:100F9000999168945591543639F446EF7EF077FF75\r
+:100FA0000DC08FEF9FEF0AC055374AE039F0583532\r
+:100FB00040E121F0523642E009F00895FF93EF93AB\r
+:100FC0007DDFEF91FF91B7CFFF93EF93FC0181910C\r
+:100FD0008030B9F360DFFBCFFF93EF9368DFF1CF91\r
+:100FE000DF93CF93CDB7DEB72596A3DFCF91DF9107\r
+:100FF000089561110BC0FC018281882321F085EEE8\r
+:101000000E948B1603C085EE0E94531780E090E08B\r
+:10101000089508956091BC017091BD018091BE0159\r
+:101020009091BF010E94022156985E9825982D98B4\r
+:1010300026982E9827982F98813019F0823021F029\r
+:101040000895259A2D9A0895269A2E9A08958AE051\r
+:1010500098E0892B11F00E940A0880E090E0089542\r
+:1010600056985E9825982D9826982E9827982F9810\r
+:101070008FEF90E0909389008093880090938B008D\r
+:1010800080938A0090938D0080938C00259A2D9AEE\r
+:101090002FEF80E792E0215080409040E1F700C0C0\r
+:1010A0000000269A2E9A2FEF80E792E02150804090\r
+:1010B0009040E1F700C00000279A2F9A2FEF80E7B9\r
+:1010C00092E0215080409040E1F700C00000259858\r
+:1010D0002D982FEF80E792E0215080409040E1F77B\r
+:1010E00000C0000026982E982FEF80E792E0215054\r
+:1010F00080409040E1F700C0000027982F98569854\r
+:101100005E9825982D9826982E9827982F980895C0\r
+:1011100089EA8093800089E08093810024982C984C\r
+:101120003F988AB18F748AB96E98479A8BB1806B59\r
+:101130008BB9769A0E94300889E098E0892B11F0EB\r
+:101140000E94090880E090E0089580E28093000109\r
+:1011500080913C0181110EC00E94F40881E08093CF\r
+:101160003C012FEF83ED90E3215080409040E1F768\r
+:1011700000C0000080E40E94FA0880930001811101\r
+:101180002EC00E94240980930001811128C00E9472\r
+:10119000240980930001811122C08FE30E94240959\r
+:1011A0008093000181111BC00E941C0980E40E94F1\r
+:1011B000FA0880930001811112C08CE00E9424097A\r
+:1011C0008093000181110BC00E94240980930001CB\r
+:1011D000811105C08FE30E942409809300010E94C1\r
+:1011E0001C098091000108951092B9008AE0809353\r
+:1011F000B800089594EA9093BC009091BC0097FFCA\r
+:10120000FCCF9091B900987F983021F0903111F087\r
+:1012100081E008958093BB0084E88093BC008091B6\r
+:10122000BC0087FFFCCF8091B900887F883111F026\r
+:10123000803471F780E0089584E98093BC00809148\r
+:10124000BC0084FDFCCF08958093BB0084E88093AC\r
+:10125000BC008091BC0087FFFCCF9091B900987FC3\r
+:1012600081E0983209F480E0089584E88093BC001E\r
+:101270008091BC0087FFFCCF8091BB0008958091D6\r
+:101280000001811115C080E40E94FA0880930001DA\r
+:1012900081110CC082E10E94240980930001811118\r
+:1012A00005C08FEF0E942409809300010E941C0951\r
+:1012B00084B1807F84B985B1807F85B98AB1837F0D\r
+:1012C0008AB98BB1837F8BB93E98469808950E9466\r
+:1012D000A508809300010E943F0980B38C7080BBF9\r
+:1012E00081B3836F81BBECE4F1E0AEE3B1E0119236\r
+:1012F0001D9281E0EA35F807D1F788E898E0892B5C\r
+:1013000011F00C94880808957F928F929F92AF926B\r
+:10131000BF92CF92DF92EF92FF920F931F93CF93E2\r
+:10132000DF93809100018823E1F080913D018F5F80\r
+:1013300080933D01811115C082E493E00E9457071C\r
+:101340000E94A50880930001882329F088E293E099\r
+:101350000E94570706C084E193E00E9457070E944D\r
+:1013600030088EE3E82E81E0F82E8701C0E0D0E05F\r
+:101370009924939492E0892EAA24A394B12C35E069\r
+:10138000C32E33E0D32EC730D10500F58091000184\r
+:10139000811164C080E40E94FA08809300018111E9\r
+:1013A00012C082E10E9424098093000181110BC0C8\r
+:1013B000C5010C2E01C0880F0A94EAF780950E949F\r
+:1013C0002409809300010E941C0948C0CA30A1F082\r
+:1013D00028F4C83059F0C93061F005C0CC3089F02C\r
+:1013E00070F0CD3089F0209A289810C0219A299861\r
+:1013F0000DC0229A2A980AC0239A2B9807C0529AA5\r
+:1014000001C0539A5B9802C03E9A4698E0EAEA957A\r
+:10141000F1F78FB181708925799902C032E001C05E\r
+:1014200030E0832B7C9902C034E001C030E0832B94\r
+:101430007D9902C028E001C020E0822B7E9902C085\r
+:1014400090E101C090E0892B9FB19095991F992759\r
+:10145000991F9295990F907E892B10C08091000161\r
+:10146000811175C080E40E94FA08809300018823EE\r
+:1014700009F45AC0712C0E941C09872DD8019C9137\r
+:10148000981739F18C9380910101882301F18091A3\r
+:10149000D70180FF04C08AE093E00E945707809143\r
+:1014A000D70180FF0CC0809101011F928F93DF92C2\r
+:1014B000CF920E94F0070F900F900F900F908091A5\r
+:1014C000D70180FF04C083E093E00E945707809219\r
+:1014D00001010E943F0921960F5F1F4FCE30D105B9\r
+:1014E00009F051CF809101018823B9F08150809398\r
+:1014F0000101882339F0EFE9FFE03197F1F700C0EF\r
+:1015000000000BC0ECE4F1E0D7018D917D018193E7\r
+:10151000BCE4EB16B1E0FB06B9F787E298E0892B53\r
+:10152000C1F00E94270815C083E10E94240980931E\r
+:10153000000181119FCF81E40E94FA08809300018D\r
+:10154000811198CF0E943509782E709494CF80E055\r
+:1015500095CF81E0DF91CF911F910F91FF90EF9098\r
+:10156000DF90CF90BF90AF909F908F907F90089525\r
+:10157000E82FF0E0E45BFE4F80810895CF92DF9288\r
+:10158000EF92FF920F931F93CF93DF938CEE92E035\r
+:101590000E9457078CE4E82E81E0F82EC0E0D0E0EE\r
+:1015A00097EEC92E92E0D92E0EED12E0DF93CF9385\r
+:1015B000DF92CF920E94F00784EE92E00E945707DC\r
+:1015C000F70181917F0190E00E9464219F938F93A6\r
+:1015D0001F930F930E94F0078CED92E00E94570733\r
+:1015E00021968DB79EB708960FB6F8949EBF0FBE92\r
+:1015F0008DBFCE30D105D1F6DF91CF911F910F91E4\r
+:10160000FF90EF90DF90CF9008958B3B910580F491\r
+:10161000883A910548F5853A9105D8F484309105CA\r
+:1016200008F0B2C0019709F06EC081E090E0089523\r
+:10163000803E910508F467C0883E910508F4A4C077\r
+:101640009C01205F31092031310508F05CC09065B4\r
+:101650000895853A910509F459C0863A910509F033\r
+:1016600058C082E890E40895883A910509F454C07E\r
+:10167000893A910509F453C08A3A910509F452C098\r
+:101680008B3A910509F451C08C3A910509F450C088\r
+:101690008D3A910509F44FC0803B910509F44EC085\r
+:1016A0008E3A910509F44DC08F3A910509F44CC06A\r
+:1016B000813B910509F44BC0823B910509F44AC076\r
+:1016C000833B910509F449C0843B910509F448C066\r
+:1016D000853B910509F447C0863B910509F446C056\r
+:1016E000873B910509F445C0883B910509F444C046\r
+:1016F000893B910509F443C08A3B910509F442C036\r
+:1017000080E094E4089580E090E0089581E890E41A\r
+:10171000089583E890E4089582EE94E4089589EEB4\r
+:1017200094E408958AEE94E4089585EB94E4089592\r
+:1017300086EB94E4089587EB94E408958CEC94E4AC\r
+:1017400008958DEC94E4089583E895E408958AE87B\r
+:1017500095E4089582E995E4089584E995E408956F\r
+:1017600081E296E4089583E296E4089584E296E4A3\r
+:10177000089585E296E4089586E296E4089587E266\r
+:1017800096E408958AE296E40895089524E5829FF8\r
+:10179000C0011124FC0126E0729FE00DF11D11240F\r
+:1017A000E60FF11DEE0FFF1FEC51FF4F8591949155\r
+:1017B0000895880F991FFC01E05AF040859194919B\r
+:1017C0000895880F991FFC01E052FF4F8591949175\r
+:1017D000089524E5829FC0011124FC0146E0749F16\r
+:1017E000E00DF11D1124E60FF11DEE0FFF1FEC516E\r
+:1017F000FF4F859194919C013A9521154FE1340753\r
+:1018000008F429C13F512115304120F49F700E94F6\r
+:10181000E10B08959C0130532115304118F49927AC\r
+:10182000906C0895811520E5920769F40E94CC1A06\r
+:101830004FEF84E39CE0415080409040E1F700C0CE\r
+:1018400000000C942622813020E5920751F48CE5AB\r
+:1018500093E00E9457078091D70181608093D70160\r
+:1018600008959C0130552115304108F05CC0292FA6\r
+:1018700033272F70332721303105E9F4AC0164E0C0\r
+:10188000440F551F6A95E1F744275370BC016370FC\r
+:10189000772702C0220F331F6A95E2F73C68242B9A\r
+:1018A000352B73E0880F991F7A95E1F78076992799\r
+:1018B000822B932B08952230310529F4982F882705\r
+:1018C000816F906A089523303105A1F4AC0133E0B3\r
+:1018D000440F551F3A95E1F7407E57708370992762\r
+:1018E00021E030E002C0220F331F8A95E2F7C901E0\r
+:1018F0009C6816C02430310531F5AC0123E0440F5B\r
+:10190000551F2A95E1F7407E57708370992721E093\r
+:1019100030E002C0220F331F8A95E2F7C9019A68AE\r
+:10192000842B952B08959C0130572115304118F4D4\r
+:101930009F70906208959C0130582115304118F431\r
+:101940009F70906A0895803E9105E0F4803C910577\r
+:1019500058F58133910509F46FC048F48932910537\r
+:1019600009F463C08A32910509F46DC072C08933ED\r
+:101970009105E9F082389105D1F08533910509F49C\r
+:101980004DC067C0833E910581F138F4803E9105DA\r
+:10199000B9F0823E9105D9F05CC0863E910561F1B7\r
+:1019A000873E9105A1F155C00E94D90B0895209161\r
+:1019B000E90120FD02C021FF4CC080EE90E049C04B\r
+:1019C0008091E90180FFF9CF89E390E042C08091E6\r
+:1019D000E90182FF0EC08091E90184FF03C080E02D\r
+:1019E00090E037C083EE90E034C08091E90182FF3F\r
+:1019F000F2CF82EE90E02DC08091E90183FF0BC011\r
+:101A00008091E90184FDEBCF87EE90E022C08091C8\r
+:101A1000E90183FFF5CF86EE90E01BC08091E901DC\r
+:101A200085FF07C089E290E014C08091E90185FF3D\r
+:101A3000F9CF85E390E00DC08091E90186FF07C0F2\r
+:101A40008AE290E006C08091E90186FFF9CF81E348\r
+:101A500090E00E94050B0895089580916D0108950E\r
+:101A60009FB7F89410925C019FBF9091EF01943062\r
+:101A700009F057C09091E9009F703091EC00232F3E\r
+:101A8000217030FD20E8922B24E02093E900209182\r
+:101A9000EB0020FF43C02091EE0027FF3FC02091C4\r
+:101AA0005A01222321F02091E80025FF37C010922F\r
+:101AB0005A0126E03091E80035FD15C03091EF0164\r
+:101AC000343061F53091EB0035FD28C0215021F410\r
+:101AD00081E080935A0122C0EFE9FFE03197F1F7EE\r
+:101AE00000C00000E7CF8093F1008091E80085FD01\r
+:101AF0000AC08091E80080FFFCCF8091E8008E77DB\r
+:101B00008093E80006C08FB7F89421E020935C0131\r
+:101B10008FBF9F709093E90080E008959F7090932D\r
+:101B2000E9008FEF0895CF93DF9300D01F92CDB7D8\r
+:101B3000DEB79C018091EF01843019F593E0998321\r
+:101B40003B832A839093E9008FEF9091E8008150C6\r
+:101B500095FD06C095ED9A95F1F700008111F5CF3E\r
+:101B60008091E80085FF0DC040E050E063E070E048\r
+:101B7000CE0101960E9466108091E8008E778093D6\r
+:101B8000E8000F900F900F90DF91CF910895CF93C1\r
+:101B9000DF9300D01F92CDB7DEB72091EF01243044\r
+:101BA00021F522E029839B838A8383E08093E900E7\r
+:101BB0008FEF9091E800815095FD06C095ED9A95C4\r
+:101BC000F1F700008111F5CF8091E80085FF0DC08D\r
+:101BD00040E050E063E070E0CE0101960E946610A4\r
+:101BE0008091E8008E778093E8000F900F900F901F\r
+:101BF000DF91CF9108959C018091EF018430F9F439\r
+:101C000082E08093E9009FEF8091E800915085FD8C\r
+:101C100006C085ED8A95F1F700009111F5CF80910E\r
+:101C2000E80085FF0CC040E050E065E070E0C901CD\r
+:101C30000E9466108091E8008E778093E8000895F6\r
+:101C4000CF93DF93EC018091EF01843009F047C01E\r
+:101C500080910C018823E1F080910D018823C1F06F\r
+:101C600085E08093E9008FEF9091E800815095FD29\r
+:101C700006C095E19A95F1F700008111F5CF8091AA\r
+:101C8000E80085FF2CC040E050E060E170E017C044\r
+:101C900081E08093E9008FEF9091E800815095FDFD\r
+:101CA00006C095ED9A95F1F700008111F5CF80916E\r
+:101CB000E80085FF14C040E050E068E070E0CE012D\r
+:101CC0000E9466108091E8008E778093E80080E1A2\r
+:101CD000FE01ADE5B1E001900D928A95E1F7DF914B\r
+:101CE000CF91089583E993E00E9457078091EE0118\r
+:101CF000811109C00E94F7110E9454128091E200E4\r
+:101D000084608093E20008958FE893E00E94570773\r
+:101D10001092EE0108958BE893E00C94570787E842\r
+:101D200093E00E9457070C94F52B83E893E00E9400\r
+:101D300057070E94BC210E94FB2B0E94FE140C94AA\r
+:101D40002C0D20915B012F5F822F62E30E94782D82\r
+:101D5000992319F020935B01089510925B01809103\r
+:101D60005C01882371F18091EF01843041F580910D\r
+:101D7000E9008F702091EC00922F917020FD90E887\r
+:101D8000892B94E09093E9009091EB0090FF14C0B0\r
+:101D90009091EE0097FF10C09091E80095FF03C06E\r
+:101DA0001092F100F9CF9091E80090FF05C090915A\r
+:101DB000E8009E779093E8008F708093E90010927E\r
+:101DC0005C01089542E061EC81E00E94701142E004\r
+:101DD00061EC82E00E94701142E061EC83E00E94BD\r
+:101DE000701142E261EC84E00E94701142E161EC0A\r
+:101DF00085E00C9470118091F101833009F455C095\r
+:101E000030F4813071F0823009F48EC008958A3048\r
+:101E100009F47AC08B3009F460C0893009F09CC0A5\r
+:101E200020C08091F001813A09F096C08091E800CD\r
+:101E3000877F8093E8008091F4019091F501892BD0\r
+:101E400021F460E18DE591E003C060E080E090E086\r
+:101E500070E00E94B1108091E8008B778093E800D9\r
+:101E600008958091F001813209F076C08091F401EB\r
+:101E70009091F501009719F0049709F06DC08091D9\r
+:101E8000E800877F8093E8008091E80082FD05C02C\r
+:101E90008091EF018111F8CF5FC08091F1008093B4\r
+:101EA0006D018091E8008B7753C08091F001813AF9\r
+:101EB00009F052C08091F4019091F501892B09F04D\r
+:101EC0004BC08091E800877F8093E8008091E80014\r
+:101ED00080FFFCCF80910C0136C08091F0018132EF\r
+:101EE000D9F58091F4019091F501892BA9F58091A4\r
+:101EF000E800877F8093E8000E94A5118091F2019D\r
+:101F000080930C010C94CC1A8091F001813221F560\r
+:101F10008091E800877F8093E8000E94A51180915E\r
+:101F2000F30180936E0108958091F001813AA1F44C\r
+:101F30008091E800877F8093E8008091E80080FF2F\r
+:101F4000FCCF80916E018093F1008091E8008E7744\r
+:101F50008093E8000C94A511089584B7877F84BF0F\r
+:101F60000FB6F894A8958091600088618093600016\r
+:101F7000109260000FBE90E080E80FB6F894809356\r
+:101F80006100909361000FBE0E948A150E94F711B4\r
+:101F90000E9454128091E20084608093E20080E30A\r
+:101FA0009DE00E94FD2078940E94DE140E948C1512\r
+:101FB00082E091E00E94F9140E94E32B82E793E013\r
+:101FC0000E9457078091EF01853089F48EE693E0F7\r
+:101FD0000E9457070E947E218091ED01882391F392\r
+:101FE0000E94A821882371F30E945010EBCF0E9419\r
+:101FF000BA15E8CF292F332723303105C9F060F413\r
+:102000002130310581F02230310509F041C08DE8E1\r
+:1020100090E02BEC33E040C021323105E1F0223278\r
+:10202000310531F135C082E190E028E534E034C07B\r
+:1020300099278130910549F028F0029749F5E7E9A1\r
+:10204000F3E005C0E7ECF3E002C0EFEAF3E08491CF\r
+:1020500090E09F0121C06530D8F4E62FF0E0EE0F4C\r
+:10206000FF1FEB5DFE4F2081318189E090E014C0BD\r
+:10207000653070F470E0FB01EE0FFF1FE55EFE4F70\r
+:1020800020813181FB01EA5EFE4F808190E004C037\r
+:1020900080E090E020E030E0FA0131832083089571\r
+:1020A00080E189BD82E189BD09B400FEFDCF809148\r
+:1020B000D8008F7D8093D8008091E000826080936B\r
+:1020C000E0008091E00081FDFCCF0895CF92DF9287\r
+:1020D000EF92FF920F931F93CF93DF93EC018B014D\r
+:1020E0006A010E94C411811133C0C114D10439F0B6\r
+:1020F000F60180819181081B190BC80FD91FE12CB3\r
+:10210000F12C0115110519F18091E80085FD16C02B\r
+:102110008091E8008E778093E800C114D10449F0E3\r
+:10212000F60180819181E80EF91EF182E08285E05E\r
+:102130000FC00E94C411882321F30AC089918093A3\r
+:10214000F10001501109FFEFEF1AFF0ADACF80E02A\r
+:10215000DF91CF911F910F91FF90EF90DF90CF9083\r
+:1021600008952091F6013091F7012617370748F0BE\r
+:102170006115710539F42091E8002E772093E8006D\r
+:1021800001C0B901FC0120E06115710579F1809170\r
+:10219000EF018823F1F18530F1F18091E80083FDB2\r
+:1021A0003CC08091E80082FD2EC08091E80080FF55\r
+:1021B000EBCF2091F3008091F20090E0922B61151B\r
+:1021C000710551F08830910538F421912093F10088\r
+:1021D000615071090196F3CF21E0089709F020E0E2\r
+:1021E0008091E8008E778093E800CECF2111CFCF89\r
+:1021F0000AC08091EF01882361F0853061F0809101\r
+:10220000E80083FD0AC08091E80082FFF2CF80E001\r
+:10221000089582E0089583E0089581E00895209173\r
+:10222000F6013091F7012617370748F0611571055F\r
+:1022300039F42091E8002E772093E80001C0B9011D\r
+:10224000FC0120E06115710591F18091EF01882377\r
+:1022500009F440C0853009F43FC08091E80083FD57\r
+:102260003DC08091E80082FD2FC08091E80080FF92\r
+:10227000E9CF2091F3008091F20090E0922B61155C\r
+:10228000710559F08830910540F424912093F100B4\r
+:102290003196615071090196F2CF21E0089709F05B\r
+:1022A00020E08091E8008E778093E800CBCF211169\r
+:1022B000CCCF0AC08091EF01882361F0853061F0B6\r
+:1022C0008091E80083FD0AC08091E80082FFF2CF90\r
+:1022D00080E0089582E0089583E0089581E0089504\r
+:1022E000982F973068F59093E900981739F070911E\r
+:1022F000EC002091ED005091F00003C0242F762FC8\r
+:1023000050E021FD02C09F5FECCF3091EB003E7F9B\r
+:102310003093EB003091ED003D7F3093ED00309134\r
+:10232000EB0031603093EB007093EC002093ED00F4\r
+:102330005093F0002091EE0027FDE5CF80E0089556\r
+:102340008F708093E90081E008958091F00187FF0C\r
+:1023500011C08091E80082FD05C08091EF018111DC\r
+:10236000F8CF11C08091E8008B770BC08091EF010E\r
+:10237000882349F08091E80080FFF8CF8091E80041\r
+:102380008E778093E80008952091E4003091E50075\r
+:1023900095E64091EC00842F817040FF23C080912E\r
+:1023A000E80080FD1DC08091EF01882399F0853001\r
+:1023B00099F08091EB0085FD11C04091E4005091AF\r
+:1023C000E5002417350729F3915011F09A01E1CF68\r
+:1023D00084E0089582E0089583E0089581E00895FF\r
+:1023E00080E008954091E80042FFDDCF08950E940B\r
+:1023F00065120E946D12E0EEF0E0808181608083C2\r
+:10240000E8EDF0E080818F77808319BCA7EDB0E024\r
+:102410008C918E7F8C9380818F7E80831092EE01D1\r
+:1024200008950F931F93CF93DF930E9465120E942C\r
+:102430006D12C8EDD0E088818F77888388818068AD\r
+:10244000888388818F7D888319BC1092EF01109258\r
+:10245000EB011092ED011092EC0100EE10E0F8019A\r
+:1024600080818B7F808388818160888342E060E007\r
+:1024700080E00E947011E1EEF0E080818E7F808329\r
+:10248000E2EEF0E0808181608083808188608083DB\r
+:10249000F80180818E7F8083888180618883DF91CD\r
+:1024A000CF911F910F910895E8EDF0E080818F7E2C\r
+:1024B0008083E7EDF0E080818160808384E082BFEB\r
+:1024C00081E08093EE010C941112E8EDF0E0808140\r
+:1024D0008E7F80831092E20008951092DA001092AD\r
+:1024E000E10008951F920F920FB60F9211242F93BF\r
+:1024F0003F934F935F936F937F938F939F93AF938C\r
+:10250000BF93EF93FF938091E10082FF0BC0809116\r
+:10251000E20082FF07C08091E1008B7F8093E100A1\r
+:102520000E94A10E8091DA0080FF1FC08091D80028\r
+:1025300080FF1BC08091DA008E7F8093DA0080914B\r
+:10254000D90080FF0DC080E189BD82E189BD09B459\r
+:1025500000FEFDCF81E08093EF010E94720E05C066\r
+:1025600019BC1092EF010E94840E8091E10080FF5F\r
+:1025700019C08091E20080FF15C08091E2008E7F3B\r
+:102580008093E2008091E20080618093E20080917C\r
+:10259000D80080628093D80019BC85E08093EF0159\r
+:1025A0000E948F0E8091E10084FF30C08091E20094\r
+:1025B00084FF2CC080E189BD82E189BD09B400FEA1\r
+:1025C000FDCF8091D8008F7D8093D8008091E1006D\r
+:1025D0008F7E8093E1008091E2008F7E8093E20005\r
+:1025E0008091E20081608093E2008091EB0188237A\r
+:1025F00011F084E007C08091E30087FD02C081E014\r
+:1026000001C083E08093EF010E94950E8091E1006C\r
+:1026100083FF29C08091E20083FF25C08091E10003\r
+:10262000877F8093E10082E08093EF011092EB01BD\r
+:102630008091E1008E7F8093E1008091E2008E7FA7\r
+:102640008093E2008091E20080618093E20042E0AA\r
+:1026500060E080E00E9470118091F00088608093BB\r
+:10266000F0000E948B0EFF91EF91BF91AF919F916F\r
+:102670008F917F916F915F914F913F912F910F902B\r
+:102680000FBE0F901F9018951F920F920FB60F92CA\r
+:1026900011242F933F934F935F936F937F938F9367\r
+:1026A0009F93AF93BF93CF93DF93EF93FF93C0912B\r
+:1026B000E900CF708091EC00D82FD17080FDD0E878\r
+:1026C0001092E9008091F000877F8093F000789469\r
+:1026D0000E9488131092E9008091F0008860809336\r
+:1026E000F000CD2BCF70C093E900FF91EF91DF9107\r
+:1026F000CF91BF91AF919F918F917F916F915F919A\r
+:102700004F913F912F910F900FBE0F901F901895F2\r
+:102710001F93CF93DF93CDB7DEB7AA970FB6F89488\r
+:10272000DEBF0FBECDBFE0EFF1E08091F1008193FD\r
+:1027300021E0E83FF207C9F70E94FB0E8091E80014\r
+:1027400083FF24C18091F0019091F101492F50E065\r
+:102750004A30510508F01AC1FA01EA5AFF4F0C94A9\r
+:10276000982D803881F0823809F010C18091F401F1\r
+:102770008F708093E9008091EB0085FB882780F9BA\r
+:102780001092E90006C08091EC019091ED01911149\r
+:1027900082609091E800977F9093E8008093F10029\r
+:1027A0001092F100C8C0282F2D7F09F0EFC08823B8\r
+:1027B00019F0823061F0EAC08091F201813009F0B5\r
+:1027C000E5C0933009F080E08093ED012BC080914B\r
+:1027D000F201811127C08091F4018F7009F4D6C0F5\r
+:1027E0008093E9002091EB0020FF1CC0933021F47E\r
+:1027F0008091EB00806214C09091EB009061909307\r
+:10280000EB0021E030E0A90102C0440F551F8A957A\r
+:10281000E2F74093EA001092EA008091EB008860B2\r
+:102820008093EB001092E9008091E800877F86C0DA\r
+:102830008111ACC01091F2011F778091E300807884\r
+:10284000812B8093E3008091E800877F8093E800EC\r
+:102850000E94A5118091E80080FFFCCF8091E300E9\r
+:1028600080688093E300111102C082E001C083E020\r
+:102870008093EF018BC08058823008F087C0809130\r
+:10288000F2019091F3018C3D53E0950779F583E0D7\r
+:102890008A838AE289834FB7F894DE01139620E099\r
+:1028A0003EE051E2E32FF0E050935700E49120FF27\r
+:1028B00003C0E295EF703F5FEF708E2F90E0EA303B\r
+:1028C00010F0C79601C0C0968D939D932F5F243161\r
+:1028D00049F74FBF8091E800877F8093E8006AE264\r
+:1028E00070E0CE0101960E94B11014C0AE014F5F9E\r
+:1028F0005F4F6091F4010E94FA0FBC01892B09F42B\r
+:1029000045C09091E800977F9093E80089819A8173\r
+:102910000E940F118091E8008B778093E80036C009\r
+:102920008038A1F58091E800877F8093E80080914E\r
+:10293000EB018093F1008091E8008E778093E800AE\r
+:102940000E94A51123C0811121C08091F2019091B4\r
+:10295000F30199270297D4F48091E800877F809350\r
+:10296000E8008091F2018093EB010E94A511809113\r
+:10297000EB01811106C08091E30087FD02C081E078\r
+:1029800001C084E08093EF010E94E20E8091E80094\r
+:1029900083FF0AC08091E800877F8093E8008091E0\r
+:1029A000EB0080628093EB00AA960FB6F894DEBF2E\r
+:1029B0000FBECDBFDF91CF911F910895CF9380912E\r
+:1029C000EF018823A1F0C091E900CF709091EC0055\r
+:1029D000892F817090FD80E8C82B1092E9008091CA\r
+:1029E000E80083FD0E948813CF70C093E900CF9167\r
+:1029F000089590937401809373010895E091730199\r
+:102A0000F0917401309721F00190F081E02D09944C\r
+:102A100080E00895EF92FF921F93CF93DF93F82EFB\r
+:102A2000192FE0917301F09174013097A9F10280A0\r
+:102A3000F381E02D09958091D70182FF2DC080FFA1\r
+:102A400004C08DE895E00E945707CF2DD12F10E1EB\r
+:102A500087E8E82E85E0F82E8091D70180FF0BC033\r
+:102A600088811F928F93FF92EF920E94F0070F9040\r
+:102A70000F900F900F90115021961111EDCF809172\r
+:102A8000D70180FF09C085E895E0DF91CF911F91C4\r
+:102A9000FF90EF900C945707DF91CF911F91FF901B\r
+:102AA000EF900895E0917301F0917401309721F057\r
+:102AB0000480F581E02D09940895209171013091F1\r
+:102AC00072012817390771F0909372018093710198\r
+:102AD000E0917301F0917401309721F00680F78145\r
+:102AE000E02D0994089520916F013091700128170D\r
+:102AF000390771F09093700180936F01E091730139\r
+:102B0000F0917401309721F00084F185E02D099453\r
+:102B1000089508950C9489150E94C2210E946709A6\r
+:102B20000C948822CF93C82F8091D70182FF1EC0BA\r
+:102B300080FF04C086EA95E00E9457078091D70184\r
+:102B400080FF0CC01F92CF9381EA95E09F938F93F3\r
+:102B50000E94F0070F900F900F900F908091D70177\r
+:102B600080FF04C08FE995E00E9457078C2FCF911A\r
+:102B70000C942C0DCF92DF92EF92FF920F931F9344\r
+:102B8000CF93DF93CDB7DEB72B970FB6F894DEBFA8\r
+:102B90000FBECDBF0E94840986E7C82E81E0D82EE3\r
+:102BA00000E010E0E02E802F0E94B80AF60141916B\r
+:102BB0006F01F82EF426B1F40F5F1F4F0E30110590\r
+:102BC00089F78FEF89838A831B820E94CB218160E2\r
+:102BD000782F9D838C8349815A816B818D810E94DE\r
+:102BE0005D1640C09091D70191FF04C08B870E9471\r
+:102BF000BE0A8B8520E030E04F2D50E0922FBA01C5\r
+:102C0000022E02C0759567950A94E2F760FF24C012\r
+:102C10002E83EF8221E030E0690102C0CC0CDD1C84\r
+:102C20009A95E2F790E08C219D21892B09F420E010\r
+:102C300028870E94CB218160782F9A8789874E81CF\r
+:102C40005F8168858A850E945D16F801EA58FE4F0B\r
+:102C50008081C826C08206C02F5F3F4F26303105D5\r
+:102C600069F6AACF0E94F9250E94FE149091750181\r
+:102C70008917A1F00E94FE14809375012B960FB660\r
+:102C8000F894DEBF0FBECDBFDF91CF911F910F91A2\r
+:102C9000FF90EF90DF90CF900C9492152B960FB68B\r
+:102CA000F894DEBF0FBECDBFDF91CF911F910F9182\r
+:102CB000FF90EF90DF90CF900895CF93DF93CDB743\r
+:102CC000DEB72B970FB6F894DEBF0FBECDBF4F8394\r
+:102CD000588769877A878B87DE01119686E0FD0128\r
+:102CE00011928A95E9F785E0FE01379601900D92E1\r
+:102CF0008A95E1F749815A816B817C818D819E8122\r
+:102D00000E94601D2B960FB6F894DEBF0FBECDBF9C\r
+:102D1000DF91CF910895CF93C82F882309F4C1C0C4\r
+:102D2000823859F40E94FE1481FDBBC089E30E94E1\r
+:102D3000FD1F0E94D72089E30CC0833879F40E94DC\r
+:102D4000FE1480FDAEC083E50E94FD1F0E94D720C7\r
+:102D500083E50E944D20CF910C94D720843859F4FC\r
+:102D60000E94FE1482FD9DC087E40E94FD1F0E9408\r
+:102D7000D72087E4EECF8CEF8C0F813A48F48C2F6C\r
+:102D80000E948B2A81118DC08C2F0E94FD1FE3CFE2\r
+:102D900080E28C0F883048F4C77081E001C0880F52\r
+:102DA000CA95EAF70E94A020D6CF8BE58C0F83301E\r
+:102DB00078F4C53A29F0C63A31F083E890E005C0CE\r
+:102DC00081E890E002C082E890E0CF910C945D151C\r
+:102DD00088E58C0F833108F064C0C83A39F1C93AEC\r
+:102DE00041F1CA3A49F1CB3A51F1CC3A59F1CD3AD5\r
+:102DF00061F1C03B69F1CE3A71F1CF3A79F1C13B53\r
+:102E000081F1C23B89F1C33B91F1C43B99F1C53BD0\r
+:102E1000A1F1C63BA9F1C73BB1F1C83BB9F1C93B30\r
+:102E2000C1F1CA3BC9F180E090E038C082EE90E089\r
+:102E300035C089EE90E032C08AEE90E02FC085EB7D\r
+:102E400090E02CC086EB90E029C087EB90E026C094\r
+:102E50008CEC90E023C08DEC90E020C083E891E002\r
+:102E60001DC08AE891E01AC082E991E017C084E9A8\r
+:102E700091E014C081E292E011C083E292E00EC0C2\r
+:102E800084E292E00BC085E292E008C086E292E024\r
+:102E900005C087E292E002C08AE292E0CF910C94F2\r
+:102EA0007315CF910895882309F44BC0823859F4E3\r
+:102EB0000E94FE1481FF45C089E30E94FD1F0E940D\r
+:102EC000D72089E30CC0833871F40E94FE1480FF80\r
+:102ED00038C083E50E94FD1F0E94D72083E50E9431\r
+:102EE0004D200C94D720843859F40E94FE1482FFA0\r
+:102EF00028C087E40E94FD1F0E94D72087E4EFCFFF\r
+:102F00009CEF980F913A58F390E2980F983050F454\r
+:102F1000877091E001C0990F8A95EAF7892F0E9486\r
+:102F2000A620DFCF9BE5980F933020F480E090E05F\r
+:102F30000C945D15885A833120F480E090E00C9465\r
+:102F400073150895882321F00E94A0200C94D720A7\r
+:102F50000895882321F00E94A6200C94D72008957C\r
+:102F6000BF92CF92DF92EF92FF920F931F93CF9376\r
+:102F7000DF9300D000D000D0CDB7DEB77C0185E074\r
+:102F8000F701DE01119601900D928A95E1F7F701A4\r
+:102F900083819481892B09F4DDC2908181818F3FE7\r
+:102FA00019F49F3F09F4D6C2F701028125812295C9\r
+:102FB0002F7099838A8389819A812E830E94BC1FF6\r
+:102FC000182FB92E0E94BB1F0E94821EEB2DE29586\r
+:102FD000EF704E2F50E0FA01E05AFF4F2E810C9413\r
+:102FE000982D8B2D807F9B2D9F70F92E882319F0B3\r
+:102FF000F29480EFF822002349F0FF2009F457C231\r
+:103000008F2D0E94B0200E94D72051C2812F0E9494\r
+:103010005317FF2009F49EC28F2D0E94B6202696DA\r
+:103020000FB6F894DEBF0FBECDBFDF91CF911F91D9\r
+:103030000F91FF90EF90DF90CF90BF900C94D7202E\r
+:103040003B2D307F8B2D8F70303211F08295807F39\r
+:10305000112319F0113021F12CC00023B9F02223E3\r
+:1030600009F490C1213009F08DC126960FB6F8946D\r
+:10307000DEBF0FBECDBFDF91CF911F910F91FF90AB\r
+:10308000EF90DF90CF90BF900C94C020222319F0D6\r
+:10309000213009F45FC28E830E94C3208E8186C1D5\r
+:1030A000002321F0223008F055C26CC1211152C218\r
+:1030B0007DC1002321F0222309F464C1F8C1222339\r
+:1030C00009F474C109C28B2D86958695837019F019\r
+:1030D0008130D1F03FC2002321F0812F9B2D9370CE\r
+:1030E00002C080E090E026960FB6F894DEBF0FBED7\r
+:1030F000CDBFDF91CF911F910F91FF90EF90DF90A7\r
+:10310000CF90BF900C945D15002321F0812F9B2D53\r
+:10311000937002C080E090E026960FB6F894DEBF70\r
+:103120000FBECDBFDF91CF911F910F91FF90EF9018\r
+:10313000DF90CF90BF900C947315812F002319F06E\r
+:103140000E947F2402C00E94E72426960FB6F894BE\r
+:10315000DEBF0FBECDBFDF91CF911F910F91FF90CA\r
+:10316000EF90DF90CF90BF900C946C258B2D8370E7\r
+:1031700009F075C00111EEC1812F82958695877087\r
+:10318000880F880F912F9F70C92ED12CE12CF12C24\r
+:10319000082E04C0CC0CDD1CEE1CFF1C0A94D2F7D8\r
+:1031A00014FF12C00FE010E020E030E004C0000F78\r
+:1031B000111F221F331F8A95D2F7C901B8016095EC\r
+:1031C00070958095909503C060E070E0CB014B2D29\r
+:1031D0004695469543704230C1F060F56C297D29D3\r
+:1031E0008E299F29413051F126960FB6F894DEBF03\r
+:1031F0000FBECDBFDF91CF911F910F91FF90EF9048\r
+:10320000DF90CF90BF900C94A91E6C297D298E2948\r
+:103210009F2926960FB6F894DEBF0FBECDBFDF9173\r
+:10322000CF911F910F91FF90EF90DF90CF90BF90C3\r
+:103230000C94C51E0E94A91EC701B60126960FB6A2\r
+:10324000F894DEBF0FBECDBFDF91CF911F910F91DC\r
+:10325000FF90EF90DF90CF90BF900C948D1E0023D5\r
+:1032600019F08B2D817001C08695882309F472C1F5\r
+:10327000812F829586958770880F880F912F9F7078\r
+:10328000C92ED12CE12CF12C082E04C0CC0CDD1C55\r
+:10329000EE1CFF1C0A94D2F714FF12C00FE010E0DE\r
+:1032A00020E030E004C0000F111F221F331F8A9559\r
+:1032B000D2F7C901B801609570958095909503C0CB\r
+:1032C00060E070E0CB014B2D46954695437042304F\r
+:1032D000C1F060F56C297D298E299F29413051F17B\r
+:1032E00026960FB6F894DEBF0FBECDBFDF91CF910B\r
+:1032F0001F910F91FF90EF90DF90CF90BF900C94B3\r
+:10330000831F6C297D298E299F2926960FB6F89454\r
+:10331000DEBF0FBECDBFDF91CF911F910F91FF9008\r
+:10332000EF90DF90CF90BF900C949F1F0E94831F5F\r
+:10333000C701B60126960FB6F894DEBF0FBECDBF0B\r
+:10334000DF91CF911F910F91FF90EF90DF90CF9081\r
+:10335000BF900C94671F103FD1F118F4103E50F449\r
+:10336000A1C0123F09F463C008F44CC0133F09F434\r
+:1033700073C098C01F708B2D8F710023A1F00E9425\r
+:10338000001F812F26960FB6F894DEBF0FBECDBF6B\r
+:10339000DF91CF911F910F91FF90EF90DF90CF9031\r
+:1033A000BF900C94A2170E94211F812F26960FB662\r
+:1033B000F894DEBF0FBECDBFDF91CF911F910F916B\r
+:1033C000FF90EF90DF90CF90BF900C94A91700234F\r
+:1033D000A9F02111BFC08B2D8F7126960FB6F894DE\r
+:1033E000DEBF0FBECDBFDF91CF911F910F91FF9038\r
+:1033F000EF90DF90CF90BF900C94461F223008F0E2\r
+:10340000A9C0E9CF0023A9F08B2D8F7126960FB6A6\r
+:10341000F894DEBF0FBECDBFDF91CF911F910F910A\r
+:10342000FF90EF90DF90CF90BF900C94001F00238F\r
+:1034300059F38B2D8F7126960FB6F894DEBF0FBE11\r
+:10344000CDBFDF91CF911F910F91FF90EF90DF9053\r
+:10345000CF90BF900C94211F002399F08B2D8F717A\r
+:1034600026960FB6F894DEBF0FBECDBFDF91CF9189\r
+:103470001F910F91FF90EF90DF90CF90BF900C9431\r
+:10348000EB1E26960FB6F894DEBF0FBECDBFDF91C0\r
+:10349000CF911F910F91FF90EF90DF90CF90BF9051\r
+:1034A0000C94E11E0023A9F0222309F4ADCF812F53\r
+:1034B00026960FB6F894DEBF0FBECDBFDF91CF9139\r
+:1034C0001F910F91FF90EF90DF90CF90BF900C94E1\r
+:1034D0008B16222309F4ADCF812F26960FB6F894D0\r
+:1034E000DEBF0FBECDBFDF91CF911F910F91FF9037\r
+:1034F000EF90DF90CF90BF900C9453174B2D4F70EF\r
+:10350000612FC7010E94F90726960FB6F894DEBF17\r
+:103510000FBECDBFDF91CF911F910F91FF90EF9024\r
+:10352000DF90CF90BF900C94051E4B2D4F70612FF4\r
+:10353000C70126960FB6F894DEBF0FBECDBFDF9150\r
+:10354000CF911F910F91FF90EF90DF90CF90BF90A0\r
+:103550000C94C50B26960FB6F894DEBF0FBECDBFF8\r
+:10356000DF91CF911F910F91FF90EF90DF90CF905F\r
+:10357000BF9008950E94BD200E9492200E94D720F3\r
+:103580000E949E260E946C2580E090E00E945D15BE\r
+:1035900080E090E00C9473150E94AD200C94BA1A50\r
+:1035A0000E94BC1F292F22952F702C3030F42A3016\r
+:1035B00048F42250223078F405C02C3041F02F30EE\r
+:1035C00031F009C0803E48F0803F29F406C093FBEB\r
+:1035D000882780F9089580E0089581E00895CF93C9\r
+:1035E000DF9300D000D01F92CDB7DEB70F900F90C1\r
+:1035F0000F900F900F90DF91CF910895CF93DF93AD\r
+:1036000000D000D000D0CDB7DEB726960FB6F89424\r
+:10361000DEBF0FBECDBFDF91CF9108951F93CF9333\r
+:10362000DF93C091840116E080918501C81799F05D\r
+:10363000D0E01C9FF0011D9FF00D1124EA57FE4FB2\r
+:103640004081518162817381848195810E94FE1A3B\r
+:103650002196C770E9CFDF91CF911F9108954091D6\r
+:10366000B6015091B7016091B8017091B901809194\r
+:10367000BA019091BB010C94FE1A8091BB01829516\r
+:103680008F7009F054C08091B801882309F44FC0AD\r
+:1036900080918401A09185014091B9015091BA01B6\r
+:1036A0006091B6017091B701B6E08A1709F43FC086\r
+:1036B00090E041155105C1F17F3F11F46F3FA1F139\r
+:1036C000B89FF001B99FF00D1124EA57FE4F2181F8\r
+:1036D00027132AC02081261327C02281211124C04C\r
+:1036E000238134812417350710F421503109241B1C\r
+:1036F000350B283C3105C0F42091BB012F702061AF\r
+:103700002093BB0126E0289FF001299FF00D112492\r
+:10371000E557FE4F80818F708061808386EB91E05A\r
+:103720000E94B0170C940E1B01968770BECF0895AF\r
+:10373000CF92DF92EF92FF920F931F93CF93DF937D\r
+:10374000CDB7DEB762970FB6F894DEBF0FBECDBF20\r
+:103750008C0185E0F801DE011D9601900D928A959D\r
+:10376000E1F7D8014C9111965C91119712966C91EA\r
+:103770008091B9019091BA01009709F475C1309117\r
+:10378000B6017091B7017F3F19F43F3F09F46CC156\r
+:10379000F801C380D480E090B801EE2009F4BEC0E7\r
+:1037A0002091BB01C816D90628F0D601A81BB90B79\r
+:1037B000CD0104C0809590958C0D9D1DFF24F39440\r
+:1037C000883C910578F0F12C207F09F0C4C07C2D55\r
+:1037D000D98AC88A89890E94EF1A86EB91E00E94F3\r
+:1037E000B017AFC0822F807F09F045C0571313C0B8\r
+:1037F000431311C061110FC02F7020612093BB01D2\r
+:103800000E942F1B86EB91E00E94B0178091BB01B4\r
+:10381000F80185832EC0CD2819F15F3F11F44F3F89\r
+:10382000F9F0F62E61111CC0809184012091850170\r
+:1038300036E0821709F45BC090E0389FF001399FB1\r
+:10384000F00D1124EA57FE4F7181571306C07081A5\r
+:10385000471303C07281711103C001968770E9CFCD\r
+:10386000F62E662309F41CC18091BB018160809310\r
+:10387000BB01F12C15C1571309C0431307C06111D7\r
+:1038800005C08091BB01F8018583C8C04D875E8764\r
+:103890008D859E856A8B0E94D01A6A898823D1F112\r
+:1038A0006623C1F12091BB01822F82958F7090E039\r
+:1038B000029774F08091B6019091B70198878F8339\r
+:1038C0001986DB86CA862C87CE0107960E94B01720\r
+:1038D00086E0F801A6EBB1E001900D928A95E1F740\r
+:1038E0000E943D1B0E942F1BFF24F394D9C04D87DB\r
+:1038F0005E878D859E850E94BC1F292F22952F7083\r
+:10390000223008F0C1C09F7009F0BBC0805E8830D3\r
+:1039100008F4C6C0C8010E94B017E6CFC816D90681\r
+:1039200008F453C0F601E81BF90BCF01883C910560\r
+:1039300008F450C0F12C7C2DD98AC88A89890E944C\r
+:10394000EF1AE6EBF1E086E0DF011D928A95E9F7D8\r
+:103950000E942F1BA5C0571314C0431312C061113E\r
+:1039600010C08091BB01F8018583C8010E94B01787\r
+:1039700086E0E6EBF1E0DF011D928A95E9F7FE2C87\r
+:103980008FC04D875E878D859E856A8B0E94D01A79\r
+:103990006A89882309F4BECF662309F4BBCF20913E\r
+:1039A000BB01822F82958F7090E002970CF490CF2C\r
+:1039B0008091B6019091B7019A8389831B82DD8241\r
+:1039C000CC822E83CE01019681CF809590958C0D6F\r
+:1039D0009D1DACCFF62E662309F49CCF571333C040\r
+:1039E000431331C02091BB0120FD24C0822F82955A\r
+:1039F0008F70482F50E041155105E1F0D801159620\r
+:103A00002C9315974F30510549F08F5F982F929561\r
+:103A1000907F822F8F70892B15968C93C8010E94FE\r
+:103A2000B01786E0F801A6EBB1E001900D928A95FF\r
+:103A3000E1F78ECF86E0F801A6EBB1E001900D92A0\r
+:103A40008A95E1F72DC04D875E878D859E850E9402\r
+:103A5000D01A81113DCF8091BB0181608093BB0161\r
+:103A6000C8010E94B0171CC0662309F453CF4D87CC\r
+:103A70005E878D859E850E94D01A882309F44ACFDF\r
+:103A800027CF811143CF0CC0243008F043CF9F7063\r
+:103A900009F43CCFD80115969C91907F09F036CF60\r
+:103AA0008F2D62960FB6F894DEBF0FBECDBFDF91AB\r
+:103AB000CF911F910F91FF90EF90DF90CF900895DD\r
+:103AC0001F93CF93DF93CDB7DEB72C970FB6F89443\r
+:103AD000DEBF0FBECDBF4F83588769877A878B873C\r
+:103AE0009C87CE0107960E94981B882371F08A85D7\r
+:103AF0009B85892B09F441C088858F3F09F065C0FB\r
+:103B00008F818F3F09F061C038C086E0FE01379693\r
+:103B1000DE01119601900D928A95E1F76A857B8509\r
+:103B20006115710551F1FF81E885EF3F11F4FF3F09\r
+:103B300021F12091850130E0C90101968770992714\r
+:103B40004091840150E08417950709F447C0F98338\r
+:103B5000EA837D836C8396E0929FD001939FB00DA2\r
+:103B60001124AA57BE4FFE01319601900D929A95ED\r
+:103B7000E1F7809385010E940E1B16E0809184017D\r
+:103B8000909185018917B9F1189FC00111248A57B6\r
+:103B90009E4F0E94981B882371F1E09184011E9F23\r
+:103BA000F0011124EA57FE4F4081518162817381F7\r
+:103BB000848195810E94FE1A8091840190E0019693\r
+:103BC0008770992780938401D9CF4F815885698563\r
+:103BD0007A858B859C850E94FE1ACFCF0E94CC1AD5\r
+:103BE0001092850110928401E6EBF1E086E0DF019E\r
+:103BF0001D928A95E9F72C960FB6F894DEBF0FBE9A\r
+:103C0000CDBFDF91CF911F910895EF92FF920F9357\r
+:103C10001F93CF93DF938C01892B09F46CC0F12C97\r
+:103C2000EE24E394E8012196F8018491843740F46E\r
+:103C3000843008F051C0813081F0823019F15BC0CE\r
+:103C4000853709F444C0A8F19CE7980F903708F035\r
+:103C500052C08F770E94531741C00E5F1F4FFE0165\r
+:103C6000849190E2980F983050F48770FE2D01C037\r
+:103C7000FF0F8A95EAF78F2F0E94B02014C00E9490\r
+:103C80008B162DC00E5F1F4FFE01849190E2980F9E\r
+:103C9000983060F48770FE2D01C0FF0F8A95EAF717\r
+:103CA0008F2F0E94B6200E94D72019C00E94531760\r
+:103CB00016C00E5F1F4FFE01C491CC2381F08FE927\r
+:103CC0009FE00197F1F700C00000C150F6CF0E5FF2\r
+:103CD0001F4FFE01F49003C00E948B168E018F2DA2\r
+:103CE000882309F49FCFEFE9FFE03197F1F700C097\r
+:103CF00000008150F5CFDF91CF911F910F91FF9080\r
+:103D0000EF90089508956093C0017093C10180936E\r
+:103D1000C2019093C3010C94BA1A0F931F930091A0\r
+:103D2000C0011091C1012091C2013091C301DC0199\r
+:103D3000CB01802B912BA22BB32B8093C0019093AE\r
+:103D4000C101A093C201B093C3011F910F910C94C4\r
+:103D5000BA1A0F931F930091C0011091C1012091D5\r
+:103D6000C2013091C301DC01CB0180239123A22346\r
+:103D7000B3238093C0019093C101A093C201B0937B\r
+:103D8000C3011F910F910C94BA1A0F931F930091C6\r
+:103D9000C0011091C1012091C2013091C301DC0129\r
+:103DA000CB0180279127A227B3278093C00190934E\r
+:103DB000C101A093C201B093C3011F910F910C9454\r
+:103DC000BA1A1092BC011092BD011092BE0110925D\r
+:103DD000BF010C94BA1A41E050E060E070E004C00A\r
+:103DE000440F551F661F771F8A95D2F74093BC0179\r
+:103DF0005093BD016093BE017093BF010C94BA1A39\r
+:103E000041E050E060E070E004C0440F551F661FC1\r
+:103E1000771F8A95D2F78091BC019091BD01A09146\r
+:103E2000BE01B091BF01482B592B6A2B7B2B4093CD\r
+:103E3000BC015093BD016093BE017093BF010C940F\r
+:103E4000BA1A41E050E060E070E004C0440F551F32\r
+:103E5000661F771F8A95D2F74095509560957095AB\r
+:103E60008091BC019091BD01A091BE01B091BF01B4\r
+:103E7000482359236A237B234093BC015093BD01FF\r
+:103E80006093BE017093BF010C94BA1A41E050E0F8\r
+:103E900060E070E004C0440F551F661F771F8A95CD\r
+:103EA000D2F78091BC019091BD01A091BE01B0916B\r
+:103EB000BF01482759276A277B274093BC015093AD\r
+:103EC000BD016093BE017093BF010C94BA1A0F93A9\r
+:103ED0001F930091BC011091BD012091BE01309152\r
+:103EE000BF01DC01CB01802B912BA22BB32B809344\r
+:103EF000BC019093BD01A093BE01B093BF011F917F\r
+:103F00000F910C94BA1A0F931F930091BC0110915A\r
+:103F1000BD012091BE013091BF01DC01CB018023A6\r
+:103F20009123A223B3238093BC019093BD01A0935E\r
+:103F3000BE01B093BF011F910F910C94BA1A0F9359\r
+:103F40001F930091BC011091BD012091BE013091E1\r
+:103F5000BF01DC01CB0180279127A227B3278093E3\r
+:103F6000BC019093BD01A093BE01B093BF011F910E\r
+:103F70000F910C94BA1A0895CF92DF92EF92FF92AC\r
+:103F80000F931F93CF93DF938C01C090BC01D0900F\r
+:103F9000BD01E090BE01F090BF018091C001909101\r
+:103FA000C101A091C201B091C301C82AD92AEA2A4D\r
+:103FB000FB2ACFE1D0E0D701C6010C2E04C0B69594\r
+:103FC000A795979587950A94D2F780FF07C0B80107\r
+:103FD0008C2F0E94E90B8130910531F4219758F71D\r
+:103FE000B80180E00E94E90BDF91CF911F910F9102\r
+:103FF000FF90EF90DF90CF90089590910C0199235E\r
+:1040000079F190910D01992359F1982F96959695F4\r
+:1040100096959F30A0F4E0910E01F0910F01E90F09\r
+:10402000F11D877021E030E0A90102C0440F551F47\r
+:104030008A95E2F7CA019181892B81830895909135\r
+:10404000D70190FF29C01F928F9387ED95E09F9332\r
+:104050008F930E94F0070F900F900F900F9008958C\r
+:1040600020910E0130910F01F90132969FEF40E04F\r
+:104070005191851789F09F3F19F4511101C0942F78\r
+:104080004F5F4E30A9F79F3F39F0F901E90FF11D5D\r
+:1040900097FDFA9582830895089590910C019923D4\r
+:1040A00081F190910D01992361F1982F9695969544\r
+:1040B00096959F30A8F4E0910E01F0910F01E90F61\r
+:1040C000F11D877021E030E0A90102C0440F551FA7\r
+:1040D0008A95E2F7CA0180959181892381830895A9\r
+:1040E0009091D70190FF1DC01F928F9389EB95E0AF\r
+:1040F0009F938F930E94F0070F900F900F900F9057\r
+:10410000089520910E0130910F01F9013296205F40\r
+:104110003F4F9081891301C010823196E217F30757\r
+:10412000C1F7089581E090E0E0910E01F0910F0158\r
+:10413000E80FF91F1082019680319105A9F70895C3\r
+:104140009091D601892B8093D60108958095909106\r
+:10415000D60189238093D60108951092D60108953F\r
+:104160009091D501892B8093D501089580959091E8\r
+:10417000D50189238093D50108951092D501089522\r
+:104180008093C40108951092C401089580910E0196\r
+:1041900090910F01FC0131969C01205F3F4F80E020\r
+:1041A000919191118F5FE217F307D1F70895E09194\r
+:1041B0000E01F0910F018091D6018083E0910E01F4\r
+:1041C000F0910F0190818091D501892B808380919E\r
+:1041D000C401882361F0E0910E01F0910F019081FC\r
+:1041E000892B80830E94C62081111092C401809186\r
+:1041F0000E0190910F010C940A1590933B0180934E\r
+:104200003A010895CF92DF92EF92FF926C01EE2473\r
+:10421000FF24C114D104E104F10421F0C701B60167\r
+:1042200020E101C020E0C72ED82EE92EFF24C114C2\r
+:10423000D104E104F10419F0285FC701B6016B0154\r
+:104240007C0154E0F694E794D794C7945A95D1F73B\r
+:10425000C114D104E104F10419F02C5FC701B601C7\r
+:104260006B017C0142E0F694E794D794C7944A9599\r
+:10427000D1F7C114D104E104F10419F02E5FC70194\r
+:10428000B601DC01CB01B695A79597958795892B4B\r
+:104290008A2B8B2B09F02F5F822FFF90EF90DF90FE\r
+:1042A000CF9008958295982F937344E0949F900146\r
+:1042B00011248C7C86958695282B822F8575880FF6\r
+:1042C0002A7A2695822B08951F93CF93DF931F920E\r
+:1042D000CDB7DEB799830E945221182F9981892F7B\r
+:1042E0000E945221212F30E0322F2227A901482B92\r
+:1042F000CA010F90DF91CF911F9108958091EF0136\r
+:10430000843011F120E488E190E00FB6F894A8958C\r
+:10431000809360000FBE2093600083B7817F84602C\r
+:1043200083BF83B7816083BF7894889583B78E7F7E\r
+:1043300083BF0FB6F894A895809160008861809340\r
+:104340006000109260000FBE089508950C94A5219E\r
+:10435000CF930E94A6210E9484090E94A521C0E05B\r
+:104360008C2F0E94B80A811104C0CF5FCE30C1F7F4\r
+:1043700001C081E0CF9108950E94CC1A0E94FE14E2\r
+:104380000C942C0D82E084BD93E095BD9AEF97BD0F\r
+:1043900080936E0008952FB7F8948091D801909182\r
+:1043A000D901A091DA01B091DB012FBF0895CF921E\r
+:1043B000DF92EF92FF920F931F932FB7F8944091E3\r
+:1043C000D8015091D9016091DA017091DB012FBFC2\r
+:1043D0006A017B01EE24FF248C0120E030E0C0164E\r
+:1043E000D106E206F30610F4415051099A01281B48\r
+:1043F000390BC9011F910F91FF90EF90DF90CF9083\r
+:1044000008951F920F920FB60F9211248F939F93CE\r
+:10441000AF93BF938091D8019091D901A091DA0117\r
+:10442000B091DB010196A11DB11D8093D80190933D\r
+:10443000D901A093DA01B093DB01BF91AF919F91B5\r
+:104440008F910F900FBE0F901F9018950E94F7113B\r
+:10445000F8942FEF87EA91E6215080409040E1F7F1\r
+:1044600000C0000087E090EBDC018093F80190939E\r
+:10447000F901A093FA01B093FB019CE088E10FB62B\r
+:10448000F894A895809360000FBE90936000FFCFD2\r
+:10449000EF92FF920F931F93CF93DF93D82FC0E03B\r
+:1044A0008C2F0E94B80A00E010E0E82EF12CC70122\r
+:1044B000002E02C0959587950A94E2F780FD06C00C\r
+:1044C0000F5F1F4F0630110591F709C0602F7C2F39\r
+:1044D00080E00E94C60B8D13F3CF81E004C0CF5F54\r
+:1044E000CE30F1F680E0DF91CF911F910F91FF90D8\r
+:1044F000EF900895CF93C82F8CE20E944822882322\r
+:1045000021F08C2FCF910C94482280E0CF91089518\r
+:10451000CF930E94D723811102C00E94BD238CEF4C\r
+:1045200095E00E945707C5E6C15049F00E948409F2\r
+:104530008FE39CE90197F1F700C00000F5CF85EF0C\r
+:1045400095E00E94570789E20E947A22811113C1E7\r
+:104550008AE20E947A2281110E94BD2385E00E9496\r
+:104560007A2281110E9426220E94E2238093D701A1\r
+:1045700087E00E947A228823A9F18BE10E947A22A7\r
+:10458000882351F08091D70181FB222720F991E007\r
+:10459000922790FB81F90EC08EE00E947A22882338\r
+:1045A00061F08091D70182FB222720F991E09227C8\r
+:1045B00090FB82F98093D70115C080E10E947A2296\r
+:1045C0009091D701882341F093FB222720F981E0C5\r
+:1045D000822780FB93F904C0892F809580FB90F996\r
+:1045E0009093D7018091D7010E94E6230E94F42383\r
+:1045F0008093E90180EE0E947A22882341F0809125\r
+:10460000E901982F909590FB80F98093E90189E367\r
+:104610000E947A22882359F08091E90181FB2227A8\r
+:1046200020F991E0922790FB81F98093E90182EED5\r
+:104630000E947A22882359F08091E90182FB222787\r
+:1046400020F991E0922790FB82F98093E90186EEB0\r
+:104650000E947A22882359F08091E90183FB222766\r
+:1046600020F991E0922790FB83F98093E90183EE92\r
+:104670000E947A22882359F08091E90184FB222745\r
+:1046800020F991E0922790FB84F98093E90185E37A\r
+:104690000E947A22882359F08091E90185FB222724\r
+:1046A00020F991E0922790FB85F98093E90181E35D\r
+:1046B0000E947A22882359F08091E90186FB222703\r
+:1046C00020F991E0922790FB86F98093E90181E13E\r
+:1046D0000E947A22882359F08091E90187FB2227E2\r
+:1046E00020F991E0922790FB87F98093E90180916E\r
+:1046F000E9010E94F8238091E90187FB882780F96E\r
+:1047000080930D0187E20E947A22C82F8EE10E94D9\r
+:104710007A228111C2608FE10E947A228111C460E5\r
+:1047200080E20E947A228111C86081E20E947A228E\r
+:104730008111C06182E20E947A228111C06283E20B\r
+:104740000E947A228111C06484E20E947A22882326\r
+:1047500011F0C06802C0CC2329F08C2F0E94EF23F7\r
+:104760006C2F03C00E94EB23682F70E080E090E084\r
+:10477000CF910C94831ECF9108956DEE7EEF80E073\r
+:1047800090E00E94CE2D60E082E090E00E94C02D7B\r
+:1047900060E083E090E00E94C02D60E084E090E063\r
+:1047A0000E94C02D60E085E090E00C94C02D80E078\r
+:1047B00090E00E94BA2D21E08D3E9E4F09F020E04E\r
+:1047C000822F089582E090E00C94B22D682F82E051\r
+:1047D00090E00C94C02D83E090E00C94B22D682FF3\r
+:1047E00083E090E00C94C02D84E090E00C94B22D16\r
+:1047F000682F84E090E00C94C02D8091DE0180FF52\r
+:104800000BC06091130185E0689FB001112475957C\r
+:104810006795759567952BC081FF09C0609113015D\r
+:1048200085E0689FB00111247595679520C082FFCF\r
+:1048300007C06091130185E0689FB001112417C083\r
+:104840009091DF019923D1F060911201961788F7BA\r
+:104850002091130185E0289F90011124929FA001CF\r
+:10486000939F500D112470E0CA010E94842D60387E\r
+:10487000710540F46115710519F406C065E070E03A\r
+:10488000862F08958FE7089581E008958091DE01D5\r
+:1048900080FF08C06091110170E07595679575956E\r
+:1048A000679521C081FF06C06091110170E0759588\r
+:1048B000679519C082FF04C06091110170E010C0BB\r
+:1048C0009091DF01992399F0609110019617A0F75C\r
+:1048D00080911101899FC001112470E00E94842DF4\r
+:1048E0006038710540F46115710519F406C061E086\r
+:1048F00070E0862F08958FE7089581E00895803F46\r
+:1049000021F40E94FD23819504C0813F29F40E9477\r
+:10491000FD238093E2010895823F21F40E94FD234C\r
+:10492000819504C0833F29F40E94FD238093E10117\r
+:104930000895893F19F40E94462405C08A3F31F446\r
+:104940000E94462481958093E30108958B3F21F4D2\r
+:104950000E944624819504C08C3F29F40E9446247D\r
+:104960008093E4010895843F21F48091E001816007\r
+:1049700017C0853F21F48091E001826011C0863F1D\r
+:1049800021F48091E00184600BC0873F21F4809185\r
+:10499000E001886005C0883F31F48091E0018061CA\r
+:1049A0008093E00108958D3F21F48091DE018160C4\r
+:1049B0000BC08E3F21F48091DE01826005C08F3FE5\r
+:1049C00029F48091DE0184608093DE010895803FA8\r
+:1049D00039F48091E20187FF6CC01092E20169C056\r
+:1049E000813F29F48091E2011816BCF362C09091D6\r
+:1049F000E101823F29F497FF5CC01092E10159C0A8\r
+:104A0000833F19F41916CCF354C0893F41F48091C7\r
+:104A1000E30118160CF04DC01092E3014AC08A3F22\r
+:104A200029F48091E30187FF44C0F6CF8B3F39F42E\r
+:104A30008091E40187FF3DC01092E4013AC08C3FB1\r
+:104A400029F48091E4011816BCF333C0843F21F4AB\r
+:104A50008091E0018E7F17C0853F21F48091E001B5\r
+:104A60008D7F11C0863F21F48091E0018B7F0BC0C8\r
+:104A7000873F21F48091E001877F05C0883F31F4B2\r
+:104A80008091E0018F7E8093E00113C08D3F21F47F\r
+:104A90008091DE018E7F0BC08E3F21F48091DE017C\r
+:104AA0008D7F05C08F3F29F48091DE018B7F80933D\r
+:104AB000DE018091E10181110EC08091E20181113E\r
+:104AC0000AC08091E301811106C08091E401811147\r
+:104AD00002C01092DF0108958091D70183FF7EC04C\r
+:104AE00088E396E00E9457078091E0011F928F9320\r
+:104AF00083E396E09F938F930E94F00781E396E013\r
+:104B00000E9457078091E101282F082E000C330BDB\r
+:104B10003F938F938EE296E09F938F930E94F007CE\r
+:104B20008CE296E00E9457078091E201282F082E20\r
+:104B3000000C330B3F938F9389E296E09F938F9302\r
+:104B40000E94F00787E296E00E9457078091E301F8\r
+:104B5000282F082E000C330B3F938F9384E296E0AE\r
+:104B60009F938F930E94F00782E296E00E9457077E\r
+:104B70008091E401282F082E000C330B3F938F9374\r
+:104B80008FE196E09F938F930E94F0078CE196E06F\r
+:104B90000E9457078091DF011F928F9389E196E071\r
+:104BA0009F938F930E94F00787E196E00E9457073A\r
+:104BB0008091DE011F928F9384E196E09F938F9303\r
+:104BC0000E94F00781E196E00E9457078DB79EB7DB\r
+:104BD0004C960FB6F8949EBF0FBE8DBF80EE91E04D\r
+:104BE0000E9452150E94CB219093DD018093DC013D\r
+:104BF00008951F93CF93DF938091DC019091DD01A5\r
+:104C00000E94D721AC019091DF01992321F02091DE\r
+:104C1000140130E006C0209115018AE0289F900120\r
+:104C200011244217530708F485C08091E101C09117\r
+:104C3000E201D091E3011091E401811107C0C1119B\r
+:104C400075C0D11173C0111171C074C09F3F19F0AC\r
+:104C50009F5F9093DF01181624F40E94FD23809338\r
+:104C6000E1018091E10187FF05C00E94FD2381954C\r
+:104C70008093E1011C1624F40E94FD238093E2013D\r
+:104C80008091E20187FF05C00E94FD2381958093FA\r
+:104C9000E2016091E101662331F1C091E201CC2390\r
+:104CA00011F1062E000C770B880B990B0E947F2CBC\r
+:104CB00023E333E343E35FE30E94E32C0E94472CAA\r
+:104CC0006093E1016C2FCC0F770B880B990B0E943E\r
+:104CD0007F2C23E333E343E35FE30E94E32C0E9452\r
+:104CE000472C6093E2011D1624F40E944624809311\r
+:104CF000E3018091E30187FF05C00E94462481956E\r
+:104D00008093E301111624F40E9446248093E40169\r
+:104D10008091E40187FF05C00E944624819580931D\r
+:104D2000E401DF91CF911F910C946C259F3F09F016\r
+:104D30008FCFA0CFDF91CF911F910895E0EEF1E0EA\r
+:104D400085E0DF011D928A95E9F71092DF0110924C\r
+:104D5000DE0108958BE598E00E9457071F9281E0DD\r
+:104D60008F931F9285E08F938DE098E09F938F93B0\r
+:104D70000E94F0070F900F900F900F900F900F90E0\r
+:104D800008958330E9F128F4813061F0823009F12F\r
+:104D90000895853009F462C008F449C0863009F4EA\r
+:104DA00074C0089580911501262F30E0280F311D21\r
+:104DB0002F3F310524F4680F6093150103C08FEF76\r
+:104DC00080931501809115011F928F9386E497E0DF\r
+:104DD00072C080911401262F30E0280F311D2F3F23\r
+:104DE000310524F4680F6093140103C08FEF8093A2\r
+:104DF0001401809114011F928F9384E397E05BC0AC\r
+:104E000080911301262F30E0280F311D2F3F3105EF\r
+:104E100024F4680F6093130103C08FEF8093130194\r
+:104E2000809113011F928F9381E297E044C080919B\r
+:104E30001201262F30E0280F311D2F3F310524F4B9\r
+:104E4000680F6093120103C08FEF8093120180916D\r
+:104E500012011F928F938CE097E02DC08091110179\r
+:104E6000262F30E0280F311D2F3F310524F4680F25\r
+:104E70006093110103C08FEF8093110180911101A4\r
+:104E80001F928F9383EF96E016C080911001262F1A\r
+:104E900030E0280F311D2F3F310524F4680F609357\r
+:104EA000100103C08FEF80931001809110011F92B9\r
+:104EB0008F9388ED96E09F938F930E94F0070F9059\r
+:104EC0000F900F900F900895833081F128F4813076\r
+:104ED00059F08230D1F00895853009F449C0B8F115\r
+:104EE000863009F456C0089580911501681720F4A2\r
+:104EF000861B8093150102C0109215018091150147\r
+:104F00001F928F9389EC96E054C08091140168172A\r
+:104F100020F4861B8093140102C01092140180912A\r
+:104F200014011F928F9387EB96E043C08091130189\r
+:104F3000681720F4861B8093130102C0109213019E\r
+:104F4000809113011F928F9384EA96E032C0809182\r
+:104F50001201681720F4861B8093120102C0109280\r
+:104F60001201809112011F928F938FE896E021C069\r
+:104F700080911101681720F4861B8093110102C0F3\r
+:104F800010921101809111011F928F9386E796E094\r
+:104F900010C080911001681720F4861B80931001C7\r
+:104FA00002C010921001809110011F928F938BE527\r
+:104FB00096E09F938F930E94F0070F900F900F90B1\r
+:104FC0000F900895CF93C82F1F928F9380E699E09A\r
+:104FD0009F938F930E94F00781E090E0A0E0B0E003\r
+:104FE000BC01CD0104C0660F771F881F991FCA95A9\r
+:104FF000D2F70E94831E0F900F900F900F90CF91C9\r
+:105000000C94CC1ACF938D3109F465C0B0F58E3075\r
+:1050100009F4CCC100F5873009F49BC1A8F48630AF\r
+:1050200009F06DC28091D701817F8E7F8093D70177\r
+:1050300085E699E00E94570784EA9DE00E945707A1\r
+:1050400081E08093E60180C1883009F44FC08B3045\r
+:1050500009F47CC154C2863109F4F0C138F48031BE\r
+:1050600009F4B8C1813109F430C249C2893109F467\r
+:10507000CEC18B3109F486C142C2853309F437C2EF\r
+:1050800048F4873209F433C208F433C2893209F490\r
+:105090002EC235C2833438F48A3308F02CC28833E8\r
+:1050A00009F454C12CC2833409F421C2883409F0B4\r
+:1050B00026C20E94CC1A83E99DE00E9457079FEF09\r
+:1050C00023ED80E3915020408040E1F700C00000D4\r
+:1050D0000E94262239C183EB9DE00E9457070E945F\r
+:1050E000012C0E94FE140E942C0D2EC188EA9DE026\r
+:1050F0000E94570786E79BE00E9457070E94EB2318\r
+:105100001F928F9383E79BE09F938F930E94F007FA\r
+:1051100081E79BE00E9457070E94E223C82F8EE59B\r
+:105120009BE00E9457071F92CF9389E59BE09F93D6\r
+:105130008F930E94F00787E59BE00E9457078DE45C\r
+:105140009BE00E9457078C2F81701F928F938AE4F7\r
+:105150009BE09F938F930E94F00788E49BE00E945E\r
+:1051600057078EE39BE00E945707C1FB882780F911\r
+:105170001F928F938BE39BE09F938F930E94F00786\r
+:1051800089E39BE00E9457078DE29BE00E9457074E\r
+:10519000C2FB882780F91F928F938AE29BE09F933E\r
+:1051A0008F930E94F00788E29BE00E9457078FE1EF\r
+:1051B0009BE00E945707C3FBCC27C0F91F92CF93F7\r
+:1051C0008CE19BE09F938F930E94F0078AE19BE024\r
+:1051D0000E9457070E94F423C82F86E09BE00E949C\r
+:1051E00057071F92CF9381E09BE09F938F930E947C\r
+:1051F000F0078FEF9AE00E94570786EE9AE00E9430\r
+:1052000057078C2F81701F928F9383EE9AE09F93A4\r
+:105210008F930E94F0078DB79EB780960FB6F894D3\r
+:105220009EBF0FBE8DBF81EE9AE00E9457078AECA9\r
+:105230009AE00E945707C1FB882780F91F928F933D\r
+:1052400087EC9AE09F938F930E94F00785EC9AE099\r
+:105250000E94570783EB9AE00E945707C2FB8827FA\r
+:1052600080F91F928F9380EB9AE09F938F930E9417\r
+:10527000F0078EEA9AE00E9457078CE99AE00E94B4\r
+:105280005707C3FB882780F91F928F9389E99AE01B\r
+:105290009F938F930E94F00787E99AE00E94570737\r
+:1052A0008DE89AE00E945707C4FB882780F91F9277\r
+:1052B0008F938AE89AE09F938F930E94F00788E883\r
+:1052C0009AE00E94570786E79AE00E945707C5FBBD\r
+:1052D000882780F91F928F9383E79AE09F938F939B\r
+:1052E0000E94F00781E79AE00E94570785E59AE05F\r
+:1052F0000E945707C6FB882780F91F928F9382E58B\r
+:105300009AE09F938F930E94F00780E59AE00E94B5\r
+:10531000570788E49AE00E945707C7FBCC27C0F9DB\r
+:105320001F92CF9385E49AE09F938F930E94F0079A\r
+:1053300083E49AE00E9457078DB79EB74C960FB64C\r
+:10534000F8949EBF0FBE8DBFC1E0DEC08CE899E02F\r
+:105350005BC08091D701C82FC17080FF09C086E86B\r
+:105360009DE00E9457078091D701817F8E7F47C0C3\r
+:105370008AE79DE00E9457078091D7018160809362\r
+:10538000D701E2CF9091D70191FBCC27C0F981E002\r
+:10539000C827892FC0FB81F98093D701CC2319F04E\r
+:1053A0008DE69DE027C08FE59DE02EC09091D7014E\r
+:1053B00092FBCC27C0F981E0C827892FC0FB82F976\r
+:1053C0008093D701CC2319F080E59DE013C080E4E1\r
+:1053D0009DE01AC09091D70193FBCC27C0F981E0E2\r
+:1053E000C827892FC0FB83F98093D701CC2351F0C4\r
+:1053F00084E39DE00E9457078091D70181608093EC\r
+:10540000D70182C087E29DE00E9457079DCF88E1C7\r
+:105410009DE00E9457078CEE9CE00E9457078FEAA0\r
+:105420009CE00E94570788E89CE00E94570784E4AC\r
+:105430009CE00E94570786E19CE0E6CF88E09CE074\r
+:105440000E9457070E94FE141F928F938EEE9BE0DE\r
+:105450009F938F930E94F00780910C011F928F936E\r
+:1054600087ED9BE09F938F930E94F00780916E01E0\r
+:105470001F928F9384EC9BE09F938F930E94F00781\r
+:1054800080910D011F928F9381EB9BE09F938F93EF\r
+:105490000E94F0078091D8019091D901A091DA0182\r
+:1054A000B091DB01BF93AF939F938F938DE99BE006\r
+:1054B0009F938F930E94F0078DB79EB746960FB6C5\r
+:1054C000F8949EBF0FBE8DBF3FCF0E94CC1AC091F3\r
+:1054D0000D0181E0C827C0930D01CC2329F083E999\r
+:1054E0009BE00E94570710C088E89BE08DCF80E0CA\r
+:1054F00003C08D5101C089530E94E22725CF86E861\r
+:105500009BE00E945707C0E08C2FCF91089580E068\r
+:1055100008950C94872ACF93C82F8091E60181309B\r
+:1055200081F020F0823009F44FC045C1E0910E01B6\r
+:10553000F0910F018081813169F0823209F03DC123\r
+:1055400009C0E0910E01F0910F018081813111F0CD\r
+:10555000823261F48C2F0E94892A811104C08C2F21\r
+:105560000E9402282FC081E090E02CC08C2F0E9466\r
+:10557000872A811126C0C431E1F070F4CB3081F06C\r
+:10558000C031D1F40E94AA2688E599E00E9457070D\r
+:1055900082E08093E60115C0C93259F0C83361F446\r
+:1055A00085E699E00E9457078CE599E00E9457072D\r
+:1055B00008C01092E60103C186E599E00E945707F2\r
+:1055C000FEC081E08170FDC0C43220F5CE3108F00C\r
+:1055D000C0C0CB3099F1C8F4C73009F0D2C08AE01E\r
+:1055E0008093150194E19093140193E0909313013B\r
+:1055F0008093120188E08093110188E2809310016A\r
+:105600008CEF97E00E945707BFC0C33149F1C43106\r
+:10561000C1F0B7C0CB3409F4A9C028F4C93289F06D\r
+:10562000C83361F0AEC0C13509F49EC0C23509F47B\r
+:1056300099C0CE3409F0A5C06AE09EC00E94AA2697\r
+:10564000A3C08091E501882319F01092E5019CC068\r
+:1056500089E098E00E94570781E08093E601B1C09D\r
+:1056600083EE97E00E94570781ED97E00E9457076D\r
+:10567000809115011F928F938EEC97E09F938F93EB\r
+:105680000E94F0078CEC97E00E9457078AEB97E0A6\r
+:105690000E945707809114011F928F9387EB97E028\r
+:1056A0009F938F930E94F00785EB97E00E94570726\r
+:1056B00086EA97E00E945707809113011F928F930B\r
+:1056C00083EA97E09F938F930E94F00781EA97E027\r
+:1056D0000E94570780E997E00E94570780911201C6\r
+:1056E0001F928F938DE897E09F938F930E94F0070E\r
+:1056F0008BE897E00E94570786E797E00E945707DC\r
+:10570000809111011F928F9383E797E09F938F936E\r
+:105710000E94F00781E797E00E9457078AE597E02B\r
+:105720000E945707809110011F928F9387E597E0A1\r
+:105730009F938F930E94F00785E597E00E9457079B\r
+:105740008DB79EB748960FB6F8949EBF0FBE8DBF1B\r
+:105750001BC0CE51EC2FF0E0E15DFE4F80818093C5\r
+:10576000E50112C061E003C061E006C06AE080911B\r
+:10577000E5010E94C12608C08091E5010E946427CE\r
+:1057800003C08AEF97E013C08091E501882369F098\r
+:105790001F928F9384EF97E09F938F930E94F0075F\r
+:1057A0000F900F900F900F9004C081EF97E00E9430\r
+:1057B000570781E006C01092E60180E002C080E059\r
+:1057C00001CFCF910895E1E8F0E080818860808387\r
+:1057D0008081816080838FB7F89493E090938900F3\r
+:1057E00090ED909388008FBF0895EFE6F0E0808100\r
+:1057F000826080830895EFE6F0E080818D7F808372\r
+:105800000895EFE6F0E0908182E089278083089593\r
+:105810001F920F920FB60F9211242F933F934F9325\r
+:105820005F936F937F938F939F93AF93BF93EF9308\r
+:10583000FF938091E7019091E80101969093E80130\r
+:105840008093E701811103C082E00E942C0DE0915A\r
+:10585000E801E695E695F0E0ED53F24FE491809192\r
+:10586000E7018E1303C080E00E942C0DFF91EF91A1\r
+:10587000BF91AF919F918F917F916F915F914F9168\r
+:105880003F912F910F900FBE0F901F9018950E947F\r
+:105890004E2C6894B1110C94DD2C08950E94C22CFA\r
+:1058A00088F09F5798F0B92F9927B751B0F0E1F0E1\r
+:1058B000660F771F881F991F1AF0BA95C9F714C091\r
+:1058C000B13091F00E94DC2CB1E008950C94DC2CF6\r
+:1058D000672F782F8827B85F39F0B93FCCF38695CA\r
+:1058E00077956795B395D9F73EF490958095709527\r
+:1058F00061957F4F8F4F9F4F0895E89409C097FBA4\r
+:105900003EF490958095709561957F4F8F4F9F4F96\r
+:105910009923A9F0F92F96E9BB279395F6958795DA\r
+:1059200077956795B795F111F8CFFAF4BB0F11F49D\r
+:1059300060FF1BC06F5F7F4F8F4F9F4F16C0882344\r
+:1059400011F096E911C0772321F09EE8872F762F7A\r
+:1059500005C0662371F096E8862F70E060E02AF0BB\r
+:105960009A95660F771F881FDAF7880F96958795A7\r
+:1059700097F9089557FD9058440F551F59F05F3F10\r
+:1059800071F04795880F97FB991F61F09F3F79F061\r
+:1059900087950895121613061406551FF2CF4695E3\r
+:1059A000F1DF08C0161617061806991FF1CF869565\r
+:1059B0007105610508940895E894BB276627772749\r
+:1059C000CB0197F908950E94F62C0C94672D0E9444\r
+:1059D000592D38F00E94602D20F0952311F00C9481\r
+:1059E000502D0C94562D11240C94DD2C0E94BA2CB1\r
+:1059F00070F3959FC1F3950F50E0551F629FF00122\r
+:105A0000729FBB27F00DB11D639FAA27F00DB11D3A\r
+:105A1000AA1F649F6627B00DA11D661F829F2227C3\r
+:105A2000B00DA11D621F739FB00DA11D621F839F4A\r
+:105A3000A00D611D221F749F3327A00D611D231F20\r
+:105A4000849F600D211D822F762F6A2F11249F576E\r
+:105A500050409AF0F1F088234AF0EE0FFF1FBB1F71\r
+:105A6000661F771F881F91505040A9F79E3F510530\r
+:105A700080F00C94502D0C94DD2C5F3FE4F3983EA5\r
+:105A8000D4F3869577956795B795F795E7959F5FDA\r
+:105A9000C1F7FE2B880F911D9695879597F908956C\r
+:105AA00097F99F6780E870E060E008959FEF80ECD1\r
+:105AB000089500240A941616170618060906089574\r
+:105AC00000240A9412161306140605060895092EDA\r
+:105AD0000394000C11F4882352F0BB0F40F4BF2B49\r
+:105AE00011F460FF04C06F5F7F4F8F4F9F4F089589\r
+:105AF000991B79E004C0991F961708F0961B881F20\r
+:105B00007A95C9F78095089597FB072E16F40094AF\r
+:105B100007D077FD09D00E949E2D07FC05D03EF4EA\r
+:105B2000909581959F4F0895709561957F4F089549\r
+:105B3000EE0FFF1F0590F491E02D0994AA1BBB1BEB\r
+:105B400051E107C0AA1FBB1FA617B70710F0A61B7D\r
+:105B5000B70B881F991F5A95A9F780959095BC019E\r
+:105B6000CD010895F999FECF92BD81BDF89A99278C\r
+:105B700080B50895A8E1B0E042E050E00C94D52D46\r
+:105B8000262FF999FECF1FBA92BD81BD20BD0FB659\r
+:105B9000F894FA9AF99A0FBE019608950E94C02DC2\r
+:105BA000272F0C94C12DDC01CB01FC01F999FECF0C\r
+:105BB00006C0F2BDE1BDF89A319600B40D92415095\r
+:0A5BC0005040B8F70895F894FFCFA5\r
+:105BCA0020022D0D200EFB0DC70D930D0101C501FD\r
+:105BDA0028080A03140A3F4D3620394605F904C33A\r
+:105BEA0004A3046A04DD03F6030F0428044804012D\r
+:0A5BFA000203040506070809000075\r
+:00000001FF\r
diff --git a/keyboard/ergodox_ez/keymaps/naps62/keymap.c b/keyboard/ergodox_ez/keymaps/naps62/keymap.c
new file mode 100644 (file)
index 0000000..b954a31
--- /dev/null
@@ -0,0 +1,187 @@
+#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
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |  Esc   | 1  ! | 2  @ | 3  # | 4  $ | 5  % | Lang |           | Esc  | 6  ^ | 7  & | 8  * | 9  ( | 0  ) | Bckspc |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |  Tab   |   Q  |   W  |   E  |   R  |   T  |  L2  |           |  L2  |   Y  |   U  |   I  |   O  |   P  | \   |  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |  Ctrl  |   A  |   S  |  D   |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  | ;  : |  ' "   |
+ * |--------+------+------+------+------+------|  L1  |           |  L1  |------+------+------+------+------+--------|
+ * | LShift |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  | ,  < | . >  | /  ? |  - _   |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |  L1  | `  ~ | ' "  | \  | |  L2  |                                       |  {   |  }   | [  { | ]  } |  L1  |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,--------------.       ,---------------.
+ *                                        | Home  | End  |       | PgUp  |Insert |
+ *                                 ,------|-------|------|       |-------+-------+------.
+ *                                 |      |       | LGui |       | Del   |       |      |
+ *                                 | Space|  Alt  |------|       |-------| Enter |Space |
+ *                                 |      |       | LGui |       | Bcsp  |       |      |
+ *                                 `---------------------'       `----------------------'
+ */
+// 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_ESC,     KC_1,    KC_2,     KC_3,     KC_4,               KC_5,  LGUI(KC_SPC),
+  KC_TAB,     KC_Q,    KC_W,     KC_E,     KC_R,               KC_T,  MO(2),
+  KC_LCTL,    KC_A,    KC_S,     KC_D,     KC_F,               KC_G,
+  KC_LSFT,    KC_Z,    KC_X,     KC_C,     KC_V,               KC_B,  MO(1),
+  MO(1),      KC_GRV,  KC_QUOT,  KC_BSLS,  MO(2),
+
+                                               KC_HOME,   KC_END,
+                                                          KC_LGUI,
+                                      KC_SPC,  KC_LALT,   KC_LGUI,
+
+  // right hand
+  KC_ESC,  KC_6,     KC_7,     KC_8,     KC_9,     KC_0,      KC_BSPC,
+  MO(2),   KC_Y,     KC_U,     KC_I,     KC_O,     KC_P,      KC_BSLS,
+           KC_H,     KC_J,     KC_K,     KC_L,     KC_SCLN,   KC_QUOT,
+  MO(1),   KC_N,     KC_M,     KC_COMM,  KC_DOT,   KC_SLSH,   KC_MINS,
+                     KC_LCBR,  KC_RCBR,  KC_LBRC,  KC_RBRC,   MO(1),
+
+  KC_PGUP,  KC_INS,
+  KC_DEL,
+  KC_BSPC,  KC_ENT,    KC_SPC
+),
+/* Keymap 1: Symbol Layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |   =  |    . |   0  |   -  |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// SYMBOLS
+[SYMB] = KEYMAP(
+       // left hand
+       KC_TRNS,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
+       KC_TRNS,KC_EXLM,KC_AT,  KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
+       KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
+       KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
+       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+                                       KC_TRNS,KC_TRNS,
+                                               KC_TRNS,
+                               KC_TRNS,KC_TRNS,KC_TRNS,
+       // right hand
+       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
+       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    KC_ASTR, KC_F12,
+                KC_DOWN, KC_4,   KC_5,    KC_6,    KC_PLUS, KC_TRNS,
+       KC_TRNS, KC_AMPR, KC_1,   KC_2,    KC_3,    KC_BSLS, KC_TRNS,
+                         KC_EQL,KC_DOT,  KC_0,    KC_MINS,  KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+/* Keymap 2: Media and mouse keys
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |GuiUp | Expl |      | Term |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |GuiLft|GuiDwn|GuiRgt|      |      |------|           |------| Left | Down |  Up  |Right |      |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |Browsr|      |           |      |      |VolDwn|VolUp | Mute |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      | Lclk | Rclk |                                       | Play | Prev | Next |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |Brwser|Brwser|
+ *                                 | Lclk | Rclk |------|       |------|Fwd   |Back  |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// MEDIA AND MOUSE
+KEYMAP(
+         RESET, KC_TRNS,        KC_TRNS,     KC_TRNS,        KC_TRNS, KC_TRNS,    KC_TRNS,
+       KC_TRNS, KC_TRNS,        LGUI(KC_W),  LGUI(KC_E),     KC_BTN1, LGUI(KC_T), KC_TRNS,
+       KC_TRNS, LGUI(KC_A),     LGUI(KC_S),  LGUI(KC_D),     KC_MS_D, KC_MS_R,
+       KC_TRNS, KC_TRNS,        KC_TRNS,     KC_TRNS,        KC_TRNS, KC_TRNS,    KC_TRNS,
+       KC_TRNS, KC_TRNS,        KC_TRNS,     KC_TRNS,        KC_TRNS,
+                                           KC_TRNS, KC_TRNS,
+                                                    KC_TRNS,
+                                  KC_BTN1, KC_BTN2, KC_TRNS,
+    // right hand
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,  KC_TRNS, KC_TRNS,
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,  KC_TRNS, KC_TRNS,
+                 KC_LEFT, KC_DOWN, KC_UP,   KC_RIGHT, KC_TRNS, KC_TRNS,
+       KC_TRNS,  KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE,  KC_TRNS, KC_TRNS,
+                          KC_MPLY, KC_MPRV, KC_MNXT,  KC_TRNS, KC_TRNS,
+       KC_TRNS,  KC_TRNS,
+       KC_TRNS,
+       KC_TRNS,  KC_WBAK, KC_WFWD
+),
+};
+
+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 3343c22963cddc28f2659d822ce41d5d1f6fc4a7..4dd6d883ca8ff59718995088bae258a772937276 100644 (file)
@@ -7,7 +7,7 @@
 #define MDIA 2 // media keys
 
 /*
- * Ordinary Ergodox EZ keyboard layout, v1
+ * Ordinary Ergodox EZ keyboard layout, v2
  * modifications from default by Nicholas Keene ergodoxez@nicholaskeene.com
  * Details: http://nicholas.rinard.us/2016/03/ergodox-ez-layout.html
  */
@@ -16,13 +16,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 /* Keymap 0: Basic layer
  *
  * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |  Grv   |   1  |   2  |   3  |   4  |   5  | ESC  |           |  =   |   6  |   7  |   8  |   9  |   0  |   -    |
+ * |  Grv   |   1  |   2  |   3  |   4  |   5  | ESC  |           |  -   |   6  |   7  |   8  |   9  |   0  |   =    |
  * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * | Tab    |   Q  |   W  |   E  |   R  |   T  |   \  |           |   /  |   Y  |   U  |   I  |   O  |   P  |  ~L2   |
+ * | Tab    |   Q  |   W  |   E  |   R  |   T  |   [  |           |  ]   |   Y  |   U  |   I  |   O  |   P  | MDIA \ |
  * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * | ~L1    |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |; / L2|  ~L1   |
- * |--------+------+------+------+------+------|  [   |           |  ]   |------+------+------+------+------+--------|
- * | LShift |Z/Ctrl|   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |'/Ctrl| RShift |
+ * | SYMB   |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |  ;   | SYMB ' |
+ * |--------+------+------+------+------+------|Shift |           | Tab  |------+------+------+------+------+--------|
+ * | LShift |   Z  |   X  |   C  |   V  |   B  | -Tab |           |      |   N  |   M  |   ,  |   .  |  /   | RShift |
  * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
  *   |LCtrl | Meh  |Hyper | LAlt | LGui |                                       | RGui | RAlt | Hyper|  Meh |RCtrl |
  *   `----------------------------------'                                       `----------------------------------'
@@ -37,20 +37,21 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 // 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_GRV, KC_1,        KC_2,  KC_3, KC_4, KC_5, KC_ESC,
-        KC_TAB, KC_Q,        KC_W,  KC_E, KC_R, KC_T, KC_BSLS,
-        KC_FN1, KC_A,        KC_S,  KC_D, KC_F, KC_G,
-        KC_LSFT,CTL_T(KC_Z), KC_X,  KC_C, KC_V, KC_B, KC_LBRC,
-        KC_LCTL,MEH_T(KC_NO),ALL_T(KC_NO),KC_LALT,KC_LGUI,
-                                             KC_HOME, KC_END,
-                                                      KC_PGUP,
-                                    KC_BSPC, KC_DEL,  KC_PGDN,
+   // left hand
+   KC_GRV,   KC_1,        KC_2,  KC_3, KC_4,   KC_5, KC_ESC,
+   KC_TAB,   KC_Q,        KC_W,  KC_E, KC_R,   KC_T, KC_LBRC,
+   MO(SYMB), KC_A,        KC_S,  KC_D, KC_F,   KC_G,
+   KC_LSFT,  CTL_T(KC_Z), KC_X,  KC_C, KC_V,   KC_B, LSFT(KC_TAB),
+   KC_LCTL,  MEH_T(KC_NO),ALL_T(KC_NO),KC_LALT,KC_LGUI,
+                                          KC_HOME, KC_END,
+                                                   KC_PGUP,
+                                 KC_BSPC, KC_DEL,  KC_PGDN,
+
                                                                 // right hand
-                                                                KC_EQL,  KC_6, KC_7,    KC_8,    KC_9,        KC_0,          KC_MINS,
-                                                                KC_SLSH, KC_Y, KC_U,    KC_I,    KC_O,        KC_P,          LT(MDIA, KC_SLSH),
-                                                                         KC_H, KC_J,    KC_K,    KC_L,        KC_SCLN,       KC_FN1,
-                                                                KC_RBRC, KC_N, KC_M,    KC_COMM, KC_DOT,      CTL_T(KC_QUOT),KC_RSFT,
+                                                                KC_MINS, KC_6, KC_7,    KC_8,    KC_9,        KC_0,          KC_EQL,
+                                                                KC_RBRC, KC_Y, KC_U,    KC_I,    KC_O,        KC_P,          LT(MDIA, KC_BSLS),
+                                                                         KC_H, KC_J,    KC_K,    KC_L,        KC_SCLN,       LT(SYMB, KC_QUOT),
+                                                                KC_TAB,  KC_N, KC_M,    KC_COMM, KC_DOT,      CTL_T(KC_SLSH),KC_RSFT,
                                                                                KC_RGUI, KC_RALT, ALL_T(KC_NO),MEH_T(KC_NO),  KC_RCTL,
                                                                 KC_LEFT, KC_RGHT,
                                                                 KC_UP,
@@ -59,82 +60,82 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 /* Keymap 1: Symbol Layer
  *
  * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
+ * |  Esc   |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
  * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
+ * |  MDIA  |   !  |   @  |   {  |   }  |   &  |  <   |           |  >   |   |  |   7  |   8  |   9  |   /  |   F12  |
  * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * | CAPS   |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |  CAPS  |
+ * |        |   #  |   $  |   (  |   )  |   `  |------|           |------|   /  |   4  |   5  |   6  |   *  |        |
+ * |--------+------+------+------+------+------| Tab  |           | Shift|------+------+------+------+------+--------|
+ * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |  -Tab|   \  |   1  |   2  |   3  |   -  |  CAPS  |
  * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |      |    . |   0  |   =  |      |
+ *   |      |      |      |      |      |                                       |   0  |    . |   =  |   +  |      |
  *   `----------------------------------'                                       `----------------------------------'
  *                                        ,-------------.       ,-------------.
- *                                        |      |      |       |      |      |
+ *                                        | Left | Right|       | Home | End  |
  *                                 ,------|------|------|       |------+------+------.
- *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
- *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |  Up  |       | PgUp |      |      |
+ *                                 |Space |Enter |------|       |------|BackSp| Del  |
+ *                                 |      |      | Down |       | PgDn |      |      |
  *                                 `--------------------'       `--------------------'
  */
 // 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_CAPS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
-       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
-                                               KC_TRNS,KC_TRNS,
-                                                       KC_TRNS,
-                                       KC_TRNS,KC_TRNS,KC_TRNS,
+       KC_ESC,           KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
+       MO(MDIA),         KC_EXLM,KC_AT,  KC_LCBR,KC_RCBR,KC_AMPR,LSFT(KC_COMM),
+       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_TAB,
+       KC_TRNS,          KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+                                                         KC_LEFT,KC_RGHT,
+                                                                 KC_UP,
+                                                   KC_SPC,KC_ENT,KC_DOWN,
                                                                      // 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_CAPS,
-                                                                                       KC_TRNS,KC_DOT,  KC_0,    KC_EQL,  KC_TRNS,
-                                                                     KC_TRNS, KC_TRNS,
-                                                                     KC_TRNS,
-                                                                     KC_TRNS, KC_TRNS, KC_TRNS
+                                                                     KC_TRNS,      KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
+                                                                     LSFT(KC_DOT), KC_PIPE, KC_P7,  KC_P8,   KC_P9,   KC_PSLS, KC_F12,
+                                                                                   KC_SLSH, KC_P4,  KC_P5,   KC_P6,   KC_PAST, KC_TRNS,
+                                                                     LSFT(KC_TAB), KC_BSLS, KC_P1,  KC_P2,   KC_P3,   KC_PMNS, KC_CAPS,
+                                                                                            KC_P0,  KC_DOT,  KC_PEQL, KC_PPLS, KC_PENT,
+                                                                     KC_HOME,      KC_END,
+                                                                     KC_PGUP,
+                                                                     KC_PGDN,      KC_BSPC, KC_DEL
 ),
 /* Keymap 2: Media and mouse keys
  *
  * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |      |      |      |      |      | Sleep|           |      |      |      |      |MyComp| Mail |        |
+ * |  Esc   |ShutDn| Sleep| Mute |Vol Dn|Vol Up|      |           |      |      |PrtSc | PgUp |MyComp| Mail |        |
  * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |      |      | MsUp |ScrlUp|      |ScrlUp|           |ScrlUp|      |      |      |      | Mute |        |
+ * |        |      |      | MsUp |ScrlUp|      |ScrlUp|           |ScrlUp|      |ScrlUp|  Up  |      |      |        |
  * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |      |      |      |      |        |
+ * |        |      |MsLeft|MsDown|MsRght|      |------|           |------| Home | Left | Down | Right| End  |        |
  * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |        |      |      |MsDown|ScrlDn|      |ScrlDn|           |ScrlDn|      |      |      |      |      |        |
+ * |        |      |      |MsDown|ScrlDn|      |ScrlDn|           |ScrlDn|      |ScrlDn| Down |      |      |        |
  * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      | Lclk | Rclk |                                       |      |      |      |      |      |
+ *   |      |      |      | Lclk | Rclk |                                       |      | PgDn |      |      |      |
  *   `----------------------------------'                                       `----------------------------------'
  *                                        ,-------------.       ,-------------.
  *                                        | Stop |Refrsh|       | Prev | Next |
  *                                 ,------|------|------|       |------+------+------.
- *                                 |Brwser|Brwser| Home |       |VolUp |      |      |
- *                                 |Back  | Fwd  |------|       |------| Stop | Play |
- *                                 |      |      |Search|       |VolDn |      |      |
+ *                                 |Brwser|Brwser|Search|       |VolUp |      |      |
+ *                                 |Back  | Fwd  |------|       |------| Stop | Play-|
+ *                                 |      |      | Home |       |VolDn |      | Pause|
  *                                 `--------------------'       `--------------------'
  */
 // MEDIA AND MOUSE
 [MDIA] = KEYMAP(
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_SLEP,
-       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_WH_U, KC_TRNS, KC_WH_U,
+       KC_ESC,  KC_PWR,  KC_SLEP, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS,
+       MO(MDIA), KC_TRNS, KC_TRNS, KC_MS_U, KC_WH_U, KC_TRNS, KC_WH_U,
        KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
        KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_D, KC_TRNS, KC_TRNS, KC_WH_D,
        KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_WH_D,
                                                     KC_WSTP, KC_WREF,
-                                                             KC_WHOM,
-                                           KC_WBAK, KC_TRNS, KC_WSCH,
+                                                             KC_WSCH,
+                                           KC_WBAK, KC_TRNS, KC_WHOM,
                                                                      // right hand
-                                                                     KC_WSCH,  KC_TRNS, KC_TRNS, KC_TRNS, KC_MYCM, KC_MAIL, KC_TRNS,
-                                                                     KC_WH_U,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, KC_TRNS,
-                                                                               KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-                                                                     KC_WH_D,  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_PSCR, KC_PGUP, KC_MYCM, KC_MAIL, KC_TRNS,
+                                                                     KC_WH_U,  KC_TRNS, KC_WH_U, KC_UP,   KC_TRNS, KC_TRNS, KC_TRNS,
+                                                                               KC_HOME, KC_LEFT, KC_DOWN, KC_RIGHT,KC_END, KC_TRNS,
+                                                                     KC_WH_D,  KC_TRNS, KC_WH_D, KC_DOWN, KC_TRNS, KC_TRNS, KC_TRNS,
+                                                                                        KC_TRNS, KC_PGDN, KC_TRNS,KC_TRNS, KC_TRNS,
                                                                      KC_MPRV, KC_MNXT,
                                                                      KC_VOLU,
                                                                      KC_VOLD, KC_MSTP, KC_MPLY
@@ -188,3 +189,4 @@ void matrix_scan_user(void) {
     }
 
 };
+
diff --git a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-base.png b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-base.png
new file mode 100644 (file)
index 0000000..d5d00f2
Binary files /dev/null and b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-base.png differ
diff --git a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-base.txt b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-base.txt
new file mode 100644 (file)
index 0000000..046b757
--- /dev/null
@@ -0,0 +1,27 @@
+[{x:3.5},"#\n3",{x:10.5},"*\n8"],
+[{y:-0.875,x:2.5},"@\n2",{x:1},"$\n4",{x:8.5},"&\n7",{x:1},"(\n9"],
+[{y:-0.875,x:5.5},"%\n5",{c:"#ff4444"},"Esc",{x:4.5,c:"#cccccc"},"_\n\n\n\n\n\n-","^\n6"],
+[{y:-0.875,c:"#73ab6a",w:1.5},"~\n\n\n\n\n\n`",{c:"#cccccc"},"!\n1",{x:14.5},")\n0",{w:1.5},"+\n\n\n\n\n\n="],
+[{y:-0.375,x:3.5},"E",{x:10.5},"I"],
+[{y:-0.875,x:2.5},"W",{x:1},"R",{x:8.5},"U",{x:1},"O"],
+[{y:-0.875,x:5.5},"T",{h:1.5},"{\n\n\n\n\n\n[",{x:4.5,h:1.5},"}\n\n\n\n\n\n]","Y"],
+[{y:-0.875,c:"#73ab6a",w:1.5},"Tab",{c:"#cccccc"},"Q",{x:14.5},"P",{c:"#2277ff",fa:[0,0,0,1],w:1.5},"|\n\\\nMedia\nL2"],
+[{y:-0.375,x:3.5,c:"#cccccc"},"D",{x:10.5},"K"],
+[{y:-0.875,x:2.5},"S",{x:1},"F",{x:8.5},"J",{x:1},"L"],
+[{y:-0.875,x:5.5},"G",{x:6.5},"H"],
+[{y:-0.875,c:"#2277ff",w:1.5},"Symbols\n\n\nL1",{c:"#cccccc"},"A",{x:14.5},":\n;",{c:"#2277ff",w:1.5},"\"\n'\nSymbols\nL1"],
+[{y:-0.625,x:6.5,c:"#bfbf67",h:1.5},"< Tab\n\n\nShift Tab",{x:4.5,h:1.5},"Tab >\n\n\nTab"],
+[{y:-0.75,x:3.5,c:"#cccccc"},"C",{x:10.5},"<\n,"],
+[{y:-0.875,x:2.5},"X",{x:1},"V",{x:8.5},"M",{x:1},">\n."],
+[{y:-0.875,x:5.5},"B",{x:6.5},"N"],
+[{y:-0.875,c:"#2277ff",w:1.5},"Capitals\n\n\nShift",{c:"#cccccc"},"Z",{x:14.5},"?\n/",{c:"#2277ff",w:1.5},"\n\nCapitals\nShift"],
+[{y:-0.375,x:3.5,c:"#77aaff"},"Option\n\n\nLAlt",{x:10.5},"Option\n\n\nRAlt"],
+[{y:-0.875,x:2.5},"Hyper",{x:1},"Cmd\n\n\nSuper",{x:8.5},"Cmd\n\n\nSuper",{x:1},"Hyper"],
+[{y:-0.75,x:0.5},"Ctrl\n\n\nLCtrl","Meh",{x:14.5},"Meh","Ctrl\n\n\nRCtrl"],
+[{r:30,rx:6.5,ry:4.25,y:-1,x:1,c:"#bfbf67"},"Home","End"],
+[{h:2},"< Del\n\n\nBackspace",{h:2},"Del >\n\n\nDelete","Page\n\n\n\n\n\nUp"],
+[{x:2},"Page\n\n\n\n\n\nDown"],
+[{r:-30,rx:13,y:-1,x:-3},"Left","Right"],
+[{x:-3},"Up",{h:2},"Enter",{h:2},"Space"],
+[{x:-3},"Down"]
+
diff --git a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.png b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.png
new file mode 100644 (file)
index 0000000..89d15e4
Binary files /dev/null and b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.png differ
diff --git a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.txt b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.txt
new file mode 100644 (file)
index 0000000..4237f08
--- /dev/null
@@ -0,0 +1,27 @@
+[{x:3.5,c:"#9988bb"},"Vol\n\n\n\n\n\nMute",{x:10.5,c:"#ccffff"},"Page\n\n\n\n\n\nUp"],
+[{y:-0.875,x:2.5,c:"#9988bb"},"Sleep",{x:1},"Vol\n\n\n\n\n\nDown",{x:8.5},"Print\n\n\n\n\n\nScreen",{x:1},"Home\n\n\n\n\n\nDir"],
+[{y:-0.875,x:5.5},"Vol\n\n\n\n\n\nUp",{c:"#ff4444"},"Esc",{x:4.5,c:"#cccccc",a:7},"",""],
+[{y:-0.875,c:"#ff4444",a:4,w:1.5},"Esc",{c:"#9988bb"},"Shut\n\n\n\n\n\nDown",{x:14.5},"Email",{c:"#cccccc",a:7,w:1.5},""],
+[{y:-0.375,x:3.5,c:"#ccffff",a:4},"Mouse\n\n\n\n\n\nUp",{x:10.5},"Cursor\n\n\n\n\n\nUp"],
+[{y:-0.875,x:2.5,c:"#cccccc",a:7},"",{x:1,c:"#99ffff",a:4},"Scroll\n\n\n\n\n\nUp",{x:8.5},"Scroll\n\n\n\n\n\nUp",{x:1,c:"#cccccc",a:7},""],
+[{y:-0.875,x:5.5},"",{c:"#99ffff",a:4,h:1.5},"Scroll\n\n\n\n\n\nUp",{x:4.5,h:1.5},"Scroll\n\n\n\n\n\nUp",{c:"#cccccc",a:7},""],
+[{y:-0.875,c:"#000000",t:"#ff0000",a:4,fa:[0,0,0,1],w:1.5},"Media\n\n\nL2",{c:"#cccccc",t:"#000000",a:7},"",{x:14.5},"",{c:"#000000",t:"#ff0000",a:4,w:1.5},"\n\nMedia\nL2"],
+[{y:-0.375,x:3.5,c:"#ccffff",t:"#000000"},"Mouse\n\n\n\n\n\nDown",{x:10.5},"Cursor\n\n\n\n\n\nDown"],
+[{y:-0.875,x:2.5},"Mouse\n\n\n\n\n\nLeft",{x:1},"Mouse\n\n\n\n\n\nRight",{x:8.5},"Cursor\n\n\n\n\n\nLeft",{x:1},"Cursor\n\n\n\n\n\nRight"],
+[{y:-0.875,x:5.5,c:"#cccccc",a:7},"",{x:6.5,c:"#ccffff",a:4},"Home"],
+[{y:-0.875,c:"#000000",t:"#ff0000",w:1.5},"Symbols\n\n\nL1",{c:"#cccccc",t:"#000000",a:7},"",{x:14.5,c:"#ccffff",a:4},"End",{c:"#cccccc",a:7,w:1.5},""],
+[{y:-0.625,x:6.5,c:"#99ffff",a:4,h:1.5},"Scroll\n\n\n\n\n\nDown",{x:4.5,h:1.5},"Scroll\n\n\n\n\n\nDown"],
+[{y:-0.75,x:3.5,c:"#ccffff"},"Mouse\n\n\n\n\n\nDown",{x:10.5},"Cursor\n\n\n\n\n\nDown"],
+[{y:-0.875,x:2.5,c:"#cccccc",a:7},"",{x:1,c:"#99ffff",a:4},"Scroll\n\n\n\n\n\nDown",{x:8.5},"Scroll\n\n\n\n\n\nDown",{x:1,c:"#cccccc",a:7},""],
+[{y:-0.875,x:5.5},"",{x:6.5},""],
+[{y:-0.875,w:1.5},"","",{x:14.5},"",{w:1.5},""],
+[{y:-0.375,x:3.5,c:"#ccffff",a:4},"Left\n\n\n\n\n\nClick",{x:10.5},"Page\n\n\n\n\n\nDown"],
+[{y:-0.875,x:2.5,c:"#cccccc",a:7},"",{x:1,c:"#ccffff",a:4},"Right\n\n\n\n\n\nClick",{x:8.5,c:"#cccccc",a:7},"",{x:1},""],
+[{y:-0.75,x:0.5},"","",{x:14.5},"",""],
+[{r:30,rx:6.5,ry:4.25,y:-1,x:1,c:"#bbaacc",a:4},"Stop\n\n\nBrowser","Reload\n\n\nBrowser"],
+[{h:2},"< Web\n\n\nBrowser",{h:2},"Web >\n\n\nBrowser","Search\n\n\nBrowser"],
+[{x:2},"Home\n\n\nBrowser"],
+[{r:-30,rx:13,y:-1,x:-3},"Prev\n\n\nAudio\n\n\nTrack","Next\n\n\nAudio\n\n\nTrack"],
+[{x:-3,c:"#9988bb"},"Vol\n\n\n\n\n\nUp",{c:"#bbaacc",h:2},"Stop\n\n\nAudio",{h:2},"Play\n\n\nAudio\n\n\nPause"],
+[{x:-3,c:"#9988bb"},"Vol\n\n\n\n\n\nDown"]
+
diff --git a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-symbol.png b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-symbol.png
new file mode 100644 (file)
index 0000000..7522af3
Binary files /dev/null and b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-symbol.png differ
diff --git a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-symbol.txt b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-symbol.txt
new file mode 100644 (file)
index 0000000..dda15f7
--- /dev/null
@@ -0,0 +1,27 @@
+[{x:3.5,c:"#a3a3a3"},"F3",{x:10.5},"F8"],
+[{y:-0.875,x:2.5},"F2",{x:1},"F4",{x:8.5},"F7",{x:1},"F9"],
+[{y:-0.875,x:5.5},"F5",{c:"#ff4444"},"Esc",{x:4.5,c:"#cccccc",a:7},"",{c:"#a3a3a3",a:4},"F6"],
+[{y:-0.875,c:"#ff4444",w:1.5},"Esc",{c:"#a3a3a3"},"F1",{x:14.5},"F10",{w:1.5},"F11"],
+[{y:-0.375,x:3.5,c:"#bbc6ed"},"{",{x:10.5,c:"#bed4ba"},"8"],
+[{y:-0.875,x:2.5,c:"#bbc6ed"},"@",{x:1},"}",{x:8.5,c:"#bed4ba"},"7",{x:1},"9"],
+[{y:-0.875,x:5.5,c:"#bbc6ed"},"&",{h:1.5},"<",{x:4.5,h:1.5},">","|"],
+[{y:-0.875,c:"#2277ff",fa:[0,0,0,1],w:1.5},"Media\n\n\nL2",{c:"#bbc6ed"},"!",{x:14.5,c:"#bed4ba"},"/",{c:"#a3a3a3",w:1.5},"F12"],
+[{y:-0.375,x:3.5,c:"#bbc6ed"},"(",{x:10.5,c:"#bed4ba"},"5"],
+[{y:-0.875,x:2.5,c:"#bbc6ed"},"$",{x:1},")",{x:8.5,c:"#bed4ba"},"4",{x:1},"6"],
+[{y:-0.875,x:5.5,c:"#bbc6ed"},"`",{x:6.5},"/"],
+[{y:-0.875,c:"#000000",t:"#ff0000",w:1.5},"Symbols\n\n\nL1",{c:"#bbc6ed",t:"#000000"},"#",{x:14.5,c:"#bed4ba"},"*",{c:"#000000",t:"#ff0000",w:1.5},"\n\nSymbols\nL1"],
+[{y:-0.625,x:6.5,c:"#bfbf67",t:"#000000",h:1.5},"Tab >\n\n\nTab",{x:4.5,h:1.5},"< Tab\n\n\nShift Tab"],
+[{y:-0.75,x:3.5,c:"#bbc6ed"},"[",{x:10.5,c:"#bed4ba"},"2"],
+[{y:-0.875,x:2.5,c:"#bbc6ed"},"^",{x:1},"]",{x:8.5,c:"#bed4ba"},"1",{x:1},"3"],
+[{y:-0.875,x:5.5,c:"#bbc6ed"},"~",{x:6.5},"\\"],
+[{y:-0.875,c:"#cccccc",a:7,w:1.5},"",{c:"#bbc6ed",a:4},"%",{x:14.5,c:"#bed4ba"},"-",{c:"#2277ff",w:1.5},"\n\nCaps Lock"],
+[{y:-0.375,x:3.5,c:"#cccccc",a:7},"",{x:10.5,c:"#bed4ba",a:4},"."],
+[{y:-0.875,x:2.5,c:"#cccccc",a:7},"",{x:1},"",{x:8.5,c:"#bed4ba",a:4},"0",{x:1},"="],
+[{y:-0.75,x:0.5,c:"#cccccc",a:7},"","",{x:14.5,c:"#bed4ba",a:4},"+","Enter"],
+[{r:30,rx:6.5,ry:4.25,y:-1,x:1,c:"#bfbf67"},"Left","Right"],
+[{h:2},"Space",{h:2},"Enter","Up"],
+[{x:2},"Down"],
+[{r:-30,rx:13,y:-1,x:-3},"Home","End"],
+[{x:-3},"Page\n\n\n\n\n\nUp",{h:2},"< Del\n\n\nBackspace",{h:2},"Del >\n\n\nDelete"],
+[{x:-3},"Page\n\n\n\n\n\nDown"]
+
index 5a847aa6e78732663d042f85b656263104c53ae1..1a085984655e4baea9e5d09be3f77c640368d2ff 100644 (file)
@@ -1,48 +1,48 @@
-:100000000C9465020C94AC020C94AC020C94AC02FF\r
-:100010000C94AC020C94AC020C94AC020C94AC02A8\r
-:100020000C94AC020C94AC020C94C30B0C94950C85\r
-:100030000C94AC020C94AC020C94AC020C94AC0288\r
-:100040000C94AC020C9409210C94AC020C94AC02FC\r
-:100050000C94AC020C949B1A0C94AC020C94AC0261\r
-:100060000C94AC020C94AC020C94AC020C94AC0258\r
-:100070000C94AC020C94AC020C94AC020C94AC0248\r
-:100080000C94AC020C94AC020C94AC020C94AC0238\r
-:100090000C94AC020C94AC020C94AC020C94AC0228\r
-:1000A0000C94AC020C94AC020C94AC02020D240D26\r
-:1000B000170E240D170E690D8C0D170EE10DF40DA2\r
-:1000C000DE10DE100D110D1150118A1197139713C8\r
-:1000D000A3119713981298126B1397139713821307\r
-:1000E0000000F0A135002B00C100E100E00000009D\r
+:100000000C9465020C94A9020C94A9020C94A90208\r
+:100010000C94A9020C94A9020C94A9020C94A902B4\r
+:100020000C94A9020C94A9020C94B00B0C94820CB1\r
+:100030000C94A9020C94A9020C94A9020C94A90294\r
+:100040000C94A9020C940B210C94A9020C94A90203\r
+:100050000C94A9020C94AD1A0C94A9020C94A90258\r
+:100060000C94A9020C94A9020C94A9020C94A90264\r
+:100070000C94A9020C94A9020C94A9020C94A90254\r
+:100080000C94A9020C94A9020C94A9020C94A90244\r
+:100090000C94A9020C94A9020C94A9020C94A90234\r
+:1000A0000C94A9020C94A9020C94A902E70C090D66\r
+:1000B000F40D090DF40D4B0D6E0DF40DC30DD60DA1\r
+:1000C000C310C310F110F11033116F116F136F13C0\r
+:1000D00087116F137E127E1249136F136F135D1316\r
+:1000E0000000F0A135002B000152E100E00000000B\r
 :1000F0001E00140004001D7100774E001F001A003E\r
 :1001000016001B00007F4C002000080007000600BE\r
 :10011000E2002A002100150009001900E3004B004D\r
-:10012000220017000A00050000004A0029003100E3\r
-:1001300000002F0000004D002E00380000003000AD\r
+:10012000220017000A00050000004A0029002F00E5\r
+:1001300000002B0200004D002D00300000002B00BD\r
 :100140000000500023001C000B00110000004F00B5\r
 :10015000240018000D001000E700520025000C00DC\r
 :100160000E003600E6002C00260012000F003700BB\r
-:10017000007F2800270013003300347100775100FE\r
-:100180002D003882C100E500E400000001000100FC\r
-:1001900001003900010000003A001E022002220284\r
-:1001A000010001003B001F022102230201000100A7\r
-:1001B0003C002F0226022F00010001003D0030020A\r
-:1001C00027023000010001003E00310235003502F7\r
-:1001D000000001000100010000000100000001001A\r
-:1001E0000100010000000100000001003F0052007A\r
-:1001F00051002402000001004000240021001E00E4\r
-:10020000010001004100250022001F00370001000D\r
-:1002100042002600230020002700010043002502A1\r
-:100220002E0231002E00010044004500010039007B\r
-:1002300001000000010001000100010001000000B8\r
-:1002400001000100010001000100B40001000100F3\r
-:10025000F2000100010001000100F000F100F100D6\r
-:10026000F400B6000100F900F3000100FA00B50047\r
-:1002700001000100010001000000B800A600F90023\r
-:100280000000FA000000B900B400F9000000FA0014\r
-:100290000000AC0001000100010001000000AB0003\r
-:1002A00001000100010001000100A900010001009E\r
-:1002B000010001000100AE00B300010001000100D7\r
-:1002C0000100AD00B100A800010001000100AA007A\r
+:10017000007F2800270013003300387100775100FA\r
+:100180002E0031823481E500E40000002900025293\r
+:1001900001000100010000003A001E0220022202BC\r
+:1001A000010051003B001F02210223020100280030\r
+:1001B0003C002F0226022F0001002C003D003002DF\r
+:1001C00027023000010052003E00240235003502B3\r
+:1001D000000050000100360200002B0000004F001C\r
+:1001E0000100370200002B0200004A003F003102EC\r
+:1001F0003800310000004D0040005F005C005900F5\r
+:1002000062004B00410060005D005A0037004C0066\r
+:10021000420061005E005B0067002A00430054005A\r
+:100220005500560057004E004400450001003900BB\r
+:1002300058000000290002520100010001000000E6\r
+:10024000A5000100010001000100B500A6000100A9\r
+:10025000F200010001000100A800F000F100F1002F\r
+:10026000F400B600AA00F900F3000100FA00B4009F\r
+:10027000A9000100010001000000B8000100F90020\r
+:100280000000FA000000B9000100F9000000FA00C7\r
+:100290000000AC00010001004A0001000000AB00BA\r
+:1002A0004600F9005000FA000100A9004B0052007E\r
+:1002B000510051004E00AE00B30001004F0001009C\r
+:1002C0000100AD00B10001004D0001000100AA00D5\r
 :1002D00001000100010001000100000016034500BB\r
 :1002E000720067006F0044006F0078002000450036\r
 :1002F0005A00000016034500720067006F004400BA\r
 :1004A0005D71879DB3C7DAE9F5FCFFFCF5E9DAC7B2\r
 :1004B000B39D87715D4A3A2C20170F0A060402018A\r
 :1004C0000000000000000000000011241FBECFEF5C\r
-:1004D000DAE0DEBFCDBF04B603FE27C08091ED0198\r
-:1004E0009091EE01A091EF01B091F0018730904B17\r
-:1004F000A740B04BD1F41092ED011092EE01109292\r
-:10050000EF011092F00114BE84B7877F84BF0FB64D\r
-:10051000F894A895809160008861809360001092A3\r
-:1005200060000FBEE0E0FFE3099511E0A0E0B1E05C\r
-:10053000E4EBF5E402C005900D92A433B107D9F7BE\r
-:1005400021E0A4E3B1E001C01D92AD3EB207E1F7A6\r
-:100550000E940A090C94D8220C94000061110BC06F\r
-:10056000FC018281882321F085EE0E94780F03C070\r
-:1005700085EE0E94401080E090E00895089560911B\r
-:10058000B1017091B2018091B3019091B4010E94C8\r
-:10059000C81956985E9825982D9826982E982798D1\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
-:10083000836F81BBE4E4F1E0A6E3B1E011921D9285\r
-:1008400081E0E235F807D1F70C9436039F92AF921E\r
-:10085000BF92CF92DF92EF92FF920F931F93CF93AD\r
-:10086000DF9380910001882379F0809135018F5FBB\r
-:1008700080933501811108C00E944C0380930001D0\r
-:10088000811102C00E94DE0286E3E82E81E0F82E8C\r
-:100890008701C0E0D0E0BB24B39492E0A92ECC2421\r
-:1008A000C394D12CC730D10500F58091000181118E\r
-:1008B00064C080E40E94A10380930001811112C0F2\r
-:1008C00082E10E94CB038093000181110BC0C6011D\r
-:1008D0000C2E01C0880F0A94EAF780950E94CB0382\r
-:1008E000809300010E94C30348C0CA30A1F028F4DD\r
-:1008F000C83059F0C93061F005C0CC3089F070F0D3\r
-:10090000CD3089F0209A289810C0219A29980DC0DE\r
-:10091000229A2A980AC0239A2B9807C0529A01C09B\r
-:10092000539A5B9802C03E9A4698E0EAEA95F1F73E\r
-:100930008FB181708B25799902C032E001C030E01F\r
-:10094000832B7C9902C034E001C030E0832B7D9979\r
-:1009500002C028E001C020E0822B7E9902C090E115\r
-:1009600001C090E0892B9FB19095991F9927991FFD\r
-:100970009295990F907E892B0FC080910001811173\r
-:100980004AC080E40E94A10380930001882381F182\r
-:10099000912C0E94C303892DD8019C91981719F0BE\r
-:1009A0008C93A09201010E94E60321960F5F1F4FD6\r
-:1009B000CE30D10509F076CF80910101882369F10D\r
-:1009C000815080930101882339F0EFE9FFE03197EE\r
-:1009D000F1F700C0000021C0E4E4F1E0D7018D91FF\r
-:1009E0007D018193B4E4EB16B1E0FB06B9F715C0C5\r
-:1009F00083E10E94CB03809300018111C9CF81E480\r
-:100A00000E94A103809300018111C2CF0E94DC03E8\r
-:100A1000982E9094BECF80E0BFCF0E94DC0281E090\r
-:100A2000DF91CF911F910F91FF90EF90DF90CF90CA\r
-:100A3000BF90AF909F900895E82FF0E0EC5BFE4FE1\r
-:100A40008081089508958B3B910580F4883A910543\r
-:100A500048F5853A9105D8F48430910508F0B2C084\r
-:100A6000019709F06EC081E090E00895803E910505\r
-:100A700008F467C0883E910508F4A4C09C01205F7B\r
-:100A800031092031310508F05CC090650895853A40\r
-:100A9000910509F459C0863A910509F058C082E8D9\r
-:100AA00090E40895883A910509F454C0893A910573\r
-:100AB00009F453C08A3A910509F452C08B3A910562\r
-:100AC00009F451C08C3A910509F450C08D3A910552\r
-:100AD00009F44FC0803B910509F44EC08E3A910550\r
-:100AE00009F44DC08F3A910509F44CC0813B910542\r
-:100AF00009F44BC0823B910509F44AC0833B910540\r
-:100B000009F449C0843B910509F448C0853B91052F\r
-:100B100009F447C0863B910509F446C0873B91051F\r
-:100B200009F445C0883B910509F444C0893B91050F\r
-:100B300009F443C08A3B910509F442C080E094E483\r
-:100B4000089580E090E0089581E890E4089583E8B6\r
-:100B500090E4089582EE94E4089589EE94E4089573\r
-:100B60008AEE94E4089585EB94E4089586EB94E48A\r
-:100B7000089587EB94E408958CEC94E408958DEC4B\r
-:100B800094E4089583E895E408958AE895E4089547\r
-:100B900082E995E4089584E995E4089581E296E474\r
-:100BA000089583E296E4089584E296E4089585E248\r
-:100BB00096E4089586E296E4089587E296E408951F\r
-:100BC0008AE296E40895089524E5829FC0011124E5\r
-:100BD000FC0126E0729FE00DF11D1124E60FF11DCE\r
-:100BE000EE0FFF1FEC51FF4F859194910895880FF0\r
-:100BF000991FFC01E05AF040859194910895880F67\r
-:100C0000991FFC01E052FF4F85919491089524E5CE\r
-:100C1000829FC0011124FC0146E0749FE00DF11D8C\r
-:100C20001124E60FF11DEE0FFF1FEC51FF4F8591D0\r
-:100C300094919C013A9521154FE1340708F425C1A0\r
-:100C40003F512115304120F49F700E94FF05089507\r
-:100C50009C0130532115304118F49927906C089568\r
-:100C6000811520E5920769F40E94B9134FEF84E3E0\r
-:100C70009CE0415080409040E1F700C000000C949F\r
-:100C8000C01A813020E5920731F48091CC01816057\r
-:100C90008093CC0108959C0130552115304108F016\r
-:100CA0005CC0292F33272F70332721303105E9F419\r
-:100CB000AC0164E0440F551F6A95E1F74427537077\r
-:100CC000BC016370772702C0220F331F6A95E2F7D9\r
-:100CD0003C68242B352B73E0880F991F7A95E1F738\r
-:100CE00080769927822B932B08952230310529F4A1\r
-:100CF000982F8827816F906A089523303105A1F4D9\r
-:100D0000AC0133E0440F551F3A95E1F7407E577030\r
-:100D10008370992721E030E002C0220F331F8A95AB\r
-:100D2000E2F7C9019C6816C02430310531F5AC01E9\r
-:100D300023E0440F551F2A95E1F7407E57708370DA\r
-:100D4000992721E030E002C0220F331F8A95E2F795\r
-:100D5000C9019A68842B952B08959C013057211561\r
-:100D6000304118F49F70906208959C01305821150D\r
-:100D7000304118F49F70906A0895803E9105E0F428\r
-:100D8000803C910558F58133910509F46FC048F412\r
-:100D90008932910509F463C08A32910509F46DC066\r
-:100DA00072C089339105E9F082389105D1F085331D\r
-:100DB000910509F44DC067C0833E910581F138F477\r
-:100DC000803E9105B9F0823E9105D9F05CC0863E27\r
-:100DD000910561F1873E9105A1F155C00E94F7058B\r
-:100DE00008952091DE0120FD02C021FF4CC080EE5D\r
-:100DF00090E049C08091DE0180FFF9CF89E390E067\r
-:100E000042C08091DE0182FF0EC08091DE0184FF2E\r
-:100E100003C080E090E037C083EE90E034C0809162\r
-:100E2000DE0182FFF2CF82EE90E02DC08091DE01E4\r
-:100E300083FF0BC08091DE0184FDEBCF87EE90E055\r
-:100E400022C08091DE0183FFF5CF86EE90E01BC0CB\r
-:100E50008091DE0185FF07C089E290E014C0809197\r
-:100E6000DE0185FFF9CF85E390E00DC08091DE01C2\r
-:100E700086FF07C08AE290E006C08091DE0186FF0F\r
-:100E8000F9CF81E390E00E942305089508958091B1\r
-:100E900062010895CF93DF9300D01F92CDB7DEB7E4\r
-:100EA0009C018091E401843019F593E099833B83A0\r
-:100EB0002A839093E9008FEF9091E800815095FD8F\r
-:100EC00006C095ED9A95F1F700008111F5CF80915C\r
-:100ED000E80085FF0DC040E050E063E070E0CE0127\r
-:100EE00001960E94B7098091E8008E778093E80010\r
-:100EF0000F900F900F90DF91CF910895CF93DF93D4\r
-:100F000000D01F92CDB7DEB72091E401243021F547\r
-:100F100022E029839B838A8383E08093E9008FEF1B\r
-:100F20009091E800815095FD06C095ED9A95F1F7F6\r
-:100F300000008111F5CF8091E80085FF0DC040E0F1\r
-:100F400050E063E070E0CE0101960E94B709809105\r
-:100F5000E8008E778093E8000F900F900F90DF915C\r
-:100F6000CF9108959C018091E4018430F9F482E0EE\r
-:100F70008093E9009FEF8091E800915085FD06C0C5\r
-:100F800085ED8A95F1F700009111F5CF8091E80089\r
-:100F900085FF0CC040E050E065E070E0C9010E94B0\r
-:100FA000B7098091E8008E778093E8000895CF9389\r
-:100FB000DF93EC018091E401843009F046C0909108\r
-:100FC0000C019923D9F090910D019923B9F08093E8\r
-:100FD000E9008FEF9091E800815095FD06C095E102\r
-:100FE0009A95F1F700008111F5CF8091E80085FF17\r
-:100FF0002CC040E050E060E170E017C081E08093D9\r
-:10100000E9008FEF9091E800815095FD06C095EDC5\r
-:101010009A95F1F700008111F5CF8091E80085FFE6\r
-:1010200014C040E050E068E070E0CE010E94B709D3\r
-:101030008091E8008E778093E80080E1FE01A2E5D0\r
-:10104000B1E001900D928A95E1F7DF91CF9108957B\r
-:101050008091E301811109C00E94480B0E94A50BF9\r
-:101060008091E20084608093E20008951092E30191\r
-:10107000089508950C94F6200E94561A0E94FC20B0\r
-:101080000E94500E0C94460742E061EC81E00E9401\r
-:10109000C10A42E061EC82E00E94C10A42E061ECD8\r
-:1010A00083E00E94C10A42E161EC84E00C94C10A31\r
-:1010B0008091E601833009F455C030F4813071F03D\r
-:1010C000823009F48EC008958A3009F47AC08B30DA\r
-:1010D00009F460C0893009F09CC020C08091E5010E\r
-:1010E000813A09F096C08091E800877F8093E800FC\r
-:1010F0008091E9019091EA01892B21F460E182E578\r
-:1011000091E003C060E080E090E070E00E94020A9D\r
-:101110008091E8008B778093E80008958091E50145\r
-:10112000813209F076C08091E9019091EA0100973F\r
-:1011300019F0039709F06DC08091E800877F8093D4\r
-:10114000E8008091E80082FD05C08091E4018111F2\r
-:10115000F8CF5FC08091F100809362018091E80038\r
-:101160008B7753C08091E501813A09F052C080919C\r
-:10117000E9019091EA01892B09F04BC08091E800C8\r
-:10118000877F8093E8008091E80080FFFCCF80910A\r
-:101190000C0136C08091E5018132D9F58091E901D9\r
-:1011A0009091EA01892BA9F58091E800877F8093CF\r
-:1011B000E8000E94F60A8091E70180930C010C94EC\r
-:1011C000B9138091E501813221F58091E800877F94\r
-:1011D0008093E8000E94F60A8091E8018093630101\r
-:1011E00008958091E501813AA1F48091E800877F1C\r
-:1011F0008093E8008091E80080FFFCCF809163013C\r
-:101200008093F1008091E8008E778093E8000C9441\r
-:10121000F60A089584B7877F84BF0FB6F894A8951F\r
-:1012200080916000886180936000109260000FBE22\r
-:1012300090E080E80FB6F89480936100909361008D\r
-:101240000FBE0E949F0E0E94480B0E94A50B80912A\r
-:10125000E20084608093E20078940E94300E0E9445\r
-:10126000A10E82E091E00E944B0E0E94E42080914A\r
-:10127000E401853069F40E94181A8091E201882304\r
-:10128000B1F30E94421A882391F30E94A109EFCF83\r
-:101290000E94A70EECCF292F332723303105C9F048\r
-:1012A00060F42130310581F02230310509F041C070\r
-:1012B0008DE690E020E133E040C021323105E1F0DD\r
-:1012C0002232310531F135C082E190E02DE733E083\r
-:1012D00034C099278130910549F028F0029749F5EB\r
-:1012E000ECEDF2E005C0ECE0F3E002C0E4EFF2E088\r
-:1012F000849190E09F0121C06430D8F4E62FF0E0A3\r
-:10130000EE0FFF1FEE5DFE4F2081318189E090E0FE\r
-:1013100014C0643070F470E0FB01EE0FFF1FE65E56\r
-:10132000FE4F20813181FB01EA5EFE4F808190E01B\r
-:1013300004C080E090E020E030E0FA0131832083B7\r
-:10134000089580E189BD82E189BD09B400FEFDCF29\r
-:101350008091D8008F7D8093D8008091E0008260DA\r
-:101360008093E0008091E00081FDFCCF0895CF9252\r
-:10137000DF92EF92FF920F931F93CF93DF93EC01D5\r
-:101380008B016A010E94150B811133C0C114D10475\r
-:1013900039F0F60180819181081B190BC80FD91F04\r
-:1013A000E12CF12C0115110519F18091E80085FD62\r
-:1013B00016C08091E8008E778093E800C114D104B4\r
-:1013C00049F0F60180819181E80EF91EF182E082F8\r
-:1013D00085E00FC00E94150B882321F30AC0899174\r
-:1013E0008093F10001501109FFEFEF1AFF0ADACFE5\r
-:1013F00080E0DF91CF911F910F91FF90EF90DF90F0\r
-:10140000CF9008952091EB013091EC01261737071A\r
-:1014100048F06115710539F42091E8002E7720938A\r
-:10142000E80001C0B901FC0120E06115710579F106\r
-:101430008091E4018823F1F18530F1F18091E80099\r
-:1014400083FD3CC08091E80082FD2EC08091E800C1\r
-:1014500080FFEBCF2091F3008091F20090E0922B7F\r
-:101460006115710551F08830910538F42191209370\r
-:10147000F100615071090196F3CF21E0089709F05E\r
-:1014800020E08091E8008E778093E800CECF211194\r
-:10149000CFCF0AC08091E401882361F0853061F0EC\r
-:1014A0008091E80083FD0AC08091E80082FFF2CFBE\r
-:1014B00080E0089582E0089583E0089581E0089532\r
-:1014C0002091EB013091EC012617370748F06115A8\r
-:1014D000710539F42091E8002E772093E80001C0CF\r
-:1014E000B901FC0120E06115710591F18091E401E1\r
-:1014F000882309F440C0853009F43FC08091E8009A\r
-:1015000083FD3DC08091E80082FD2FC08091E800FE\r
-:1015100080FFE9CF2091F3008091F20090E0922BC0\r
-:101520006115710559F08830910540F4249120939C\r
-:10153000F1003196615071090196F2CF21E00897D0\r
-:1015400009F020E08091E8008E778093E800CBCF0F\r
-:101550002111CCCF0AC08091E401882361F085304D\r
-:1015600061F08091E80083FD0AC08091E80082FF6D\r
-:10157000F2CF80E0089582E0089583E0089581E04D\r
-:101580000895982F973068F59093E900981739F0EF\r
-:101590007091EC002091ED005091F00003C0242FD9\r
-:1015A000762F50E021FD02C09F5FECCF3091EB0021\r
-:1015B0003E7F3093EB003091ED003D7F3093ED00A6\r
-:1015C0003091EB0031603093EB007093EC0020938E\r
-:1015D000ED005093F0002091EE0027FDE5CF80E074\r
-:1015E00008958F708093E90081E008958091E5016E\r
-:1015F00087FF11C08091E80082FD05C08091E40161\r
-:101600008111F8CF11C08091E8008B770BC08091D9\r
-:10161000E401882349F08091E80080FFF8CF8091B1\r
-:10162000E8008E778093E80008952091E4003091DF\r
-:10163000E50095E64091EC00842F817040FF23C0C7\r
-:101640008091E80080FD1DC08091E401882399F01D\r
-:10165000853099F08091EB0085FD11C04091E40048\r
-:101660005091E5002417350729F3915011F09A01A4\r
-:10167000E1CF84E0089582E0089583E0089581E059\r
-:10168000089580E008954091E80042FFDDCF08957D\r
-:101690000E94B60B0E94BE0BE0EEF0E080818160FC\r
-:1016A0008083E8EDF0E080818F77808319BCA7ED1F\r
-:1016B000B0E08C918E7F8C9380818F7E808310929E\r
-:1016C000E30108950F931F93CF93DF930E94B60B0E\r
-:1016D0000E94BE0BC8EDD0E088818F778883888117\r
-:1016E0008068888388818F7D888319BC1092E4018B\r
-:1016F0001092E0011092E2011092E10100EE10E080\r
-:10170000F80180818B7F808388818160888342E0BB\r
-:1017100060E080E00E94C10AE1EEF0E080818E7F0F\r
-:101720008083E2EEF0E08081816080838081886048\r
-:101730008083F80180818E7F8083888180618883A7\r
-:10174000DF91CF911F910F910895E8EDF0E0808136\r
-:101750008F7E8083E7EDF0E080818160808384E08C\r
-:1017600082BF81E08093E3010C94620BE8EDF0E02E\r
-:1017700080818E7F80831092E20008951092DA00BB\r
-:101780001092E10008951F920F920FB60F9211244C\r
-:101790002F933F934F935F936F937F938F939F9379\r
-:1017A000AF93BF93EF93FF938091E10082FF0BC053\r
-:1017B0008091E20082FF07C08091E1008B7F8093DF\r
-:1017C000E1000E942F0E8091DA0080FF1FC08091FF\r
-:1017D000D80080FF1BC08091DA008E7F8093DA00F2\r
-:1017E0008091D90080FF0DC080E189BD82E189BD73\r
-:1017F00009B400FEFDCF81E08093E4010E94280837\r
-:1018000005C019BC1092E4010E9436088091E100E5\r
-:1018100080FF19C08091E20080FF15C08091E20036\r
-:101820008E7F8093E2008091E20080618093E200ED\r
-:101830008091D80080628093D80019BC85E08093A5\r
-:10184000E4010E943A088091E10084FF30C0809159\r
-:10185000E20084FF2CC080E189BD82E189BD09B42A\r
-:1018600000FEFDCF8091D8008F7D8093D8008091BD\r
-:10187000E1008F7E8093E1008091E2008F7E809373\r
-:10188000E2008091E20081608093E2008091E001BB\r
-:10189000882311F084E007C08091E30087FD02C037\r
-:1018A00081E001C083E08093E4010E943C088091C4\r
-:1018B000E10083FF29C08091E20083FF25C0809171\r
-:1018C000E100877F8093E10082E08093E401109241\r
-:1018D000E0018091E1008E7F8093E1008091E20041\r
-:1018E0008E7F8093E2008091E20080618093E2002D\r
-:1018F00042E060E080E00E94C10A8091F0008860D0\r
-:101900008093F0000E943908FF91EF91BF91AF9151\r
-:101910009F918F917F916F915F914F913F912F9107\r
-:101920000F900FBE0F901F9018951F920F920FB639\r
-:101930000F9211242F933F934F935F936F937F9355\r
-:101940008F939F93AF93BF93CF93DF93EF93FF93C7\r
-:10195000C091E900CF708091EC00D82FD17080FD4C\r
-:10196000D0E81092E9008091F000877F8093F0002A\r
-:1019700078940E94D90C1092E9008091F000886060\r
-:101980008093F000CD2BCF70C093E900FF91EF91D1\r
-:10199000DF91CF91BF91AF919F918F917F916F9187\r
-:1019A0005F914F913F912F910F900FBE0F901F901D\r
-:1019B00018951F93CF93DF93CDB7DEB7AA970FB6D5\r
-:1019C000F894DEBF0FBECDBFE5EEF1E08091F100EF\r
-:1019D000819321E0ED3EF207C9F70E9458088091FB\r
-:1019E000E80083FF24C18091E5019091E601492F31\r
-:1019F00050E04A30510508F01AC1FA01EA5AFF4F87\r
-:101A00000C948D22803881F0823809F010C18091C9\r
-:101A1000E9018F708093E9008091EB0085FB8827B6\r
-:101A200080F91092E90006C08091E1019091E201F5\r
-:101A3000911182609091E800977F9093E8008093E5\r
-:101A4000F1001092F100C8C0282F2D7F09F0EFC0DF\r
-:101A5000882319F0823061F0EAC08091E70181307B\r
-:101A600009F0E5C0933009F080E08093E2012BC0DB\r
-:101A70008091E701811127C08091E9018F7009F4FD\r
-:101A8000D6C08093E9002091EB0020FF1CC093306A\r
-:101A900021F48091EB00806214C09091EB00906182\r
-:101AA0009093EB0021E030E0A90102C0440F551FE4\r
-:101AB0008A95E2F74093EA001092EA008091EB00E9\r
-:101AC00088608093EB001092E9008091E800877FA6\r
-:101AD00086C08111ACC01091E7011F778091E300AF\r
-:101AE0008078812B8093E3008091E800877F80934A\r
-:101AF000E8000E94F60A8091E80080FFFCCF809108\r
-:101B0000E30080688093E300111102C082E001C00D\r
-:101B100083E08093E4018BC08058823008F087C056\r
-:101B20008091E7019091E8018C3D53E0950779F5AC\r
-:101B300083E08A838AE289834FB7F894DE011396A3\r
-:101B400020E03EE051E2E32FF0E050935700E491B3\r
-:101B500020FF03C0E295EF703F5FEF708E2F90E0A3\r
-:101B6000EA3010F0C79601C0C0968D939D932F5F09\r
-:101B7000243149F74FBF8091E800877F8093E800C8\r
-:101B80006AE270E0CE0101960E94020A14C0AE0122\r
-:101B90004F5F5F4F6091E9010E944B09BC01892BA7\r
-:101BA00009F445C09091E800977F9093E8008981FF\r
-:101BB0009A810E94600A8091E8008B778093E80008\r
-:101BC00036C08038A1F58091E800877F8093E800D7\r
-:101BD0008091E0018093F1008091E8008E778093FE\r
-:101BE000E8000E94F60A23C0811121C08091E7011C\r
-:101BF0009091E80199270297D4F48091E800877FBB\r
-:101C00008093E8008091E7018093E0010E94F60A4A\r
-:101C10008091E001811106C08091E30087FD02C040\r
-:101C200081E001C084E08093E4010E944408809137\r
-:101C3000E80083FF0AC08091E800877F8093E80076\r
-:101C40008091EB0080628093EB00AA960FB6F89427\r
-:101C5000DEBF0FBECDBFDF91CF911F9108950895D4\r
-:101C6000CF938091E4018823A1F0C091E900CF7067\r
-:101C70009091EC00892F817090FD80E8C82B109224\r
-:101C8000E9008091E80083FD0E94D90CCF70C093D9\r
-:101C9000E900CF91089590936901809368010895B8\r
-:101CA000E0916801F0916901309721F00190F08195\r
-:101CB000E02D099480E00895E0916801F0916901B8\r
-:101CC000309721F00280F381E02D09940895E0918E\r
-:101CD0006801F0916901309721F00480F581E02DD1\r
-:101CE00009940895209166013091670128173907FA\r
-:101CF00071F09093670180936601E0916801F09123\r
-:101D00006901309721F00680F781E02D099408954C\r
-:101D100020916401309165012817390771F0909383\r
-:101D2000650180936401E0916801F0916901309749\r
-:101D300021F00084F185E02D0994089508950C9414\r
-:101D40009E0E0E945C1A0E940E040C94221BCF92DD\r
-:101D5000DF92EF92FF920F931F93CF93DF93CDB754\r
-:101D6000DEB72B970FB6F894DEBF0FBECDBF0E9433\r
-:101D700026048BE6C82E81E0D82E00E010E0E02E8D\r
-:101D8000802F0E941C05F60141916F01F82EF42668\r
-:101D9000B1F40F5F1F4F0E30110589F78FEF898364\r
-:101DA0008A831B820E94651A8160782F9D838C83B1\r
-:101DB00049815A816B818D810E944A0F40C0909168\r
-:101DC000CC0191FF04C08B870E9422058B8520E007\r
-:101DD00030E04F2D50E0922FBA01022E02C07595CF\r
-:101DE00067950A94E2F760FF24C02E83EF8221E01A\r
-:101DF00030E0690102C0CC0CDD1C9A95E2F790E05E\r
-:101E00008C219D21892B09F420E028870E94651AE6\r
-:101E10008160782F9A8789874E815F8168858A855E\r
-:101E20000E944A0FF801E559FE4F8081C826C08202\r
-:101E300006C02F5F3F4F2630310569F6AACF0E94BA\r
-:101E4000091E0E94500E90916A018917A1F00E940C\r
-:101E5000500E80936A012B960FB6F894DEBF0FBE2A\r
-:101E6000CDBFDF91CF911F910F91FF90EF90DF9049\r
-:101E7000CF900C9446072B960FB6F894DEBF0FBE9A\r
-:101E8000CDBFDF91CF911F910F91FF90EF90DF9029\r
-:101E9000CF900895CF93DF93CDB7DEB72B970FB6D2\r
-:101EA000F894DEBF0FBECDBF4F83588769877A870E\r
-:101EB0008B87DE01119686E0FD0111928A95E9F784\r
-:101EC00085E0FE01379601900D928A95E1F74981F0\r
-:101ED0005A816B817C818D819E810E944D162B964B\r
-:101EE0000FB6F894DEBF0FBECDBFDF91CF9108953E\r
-:101EF000CF93C82F882309F4C1C0823859F40E94B7\r
-:101F0000500E81FDBBC089E30E94EA180E94A2190D\r
-:101F100089E30CC0833879F40E94500E80FDAEC076\r
-:101F200083E50E94EA180E94A21983E50E942919FC\r
-:101F3000CF910C94A219843859F40E94500E82FD5E\r
-:101F40009DC087E40E94EA180E94A21987E4EECFA0\r
-:101F50008CEF8C0F813A48F48C2F0E94492081111C\r
-:101F60008DC08C2F0E94EA18E3CF80E28C0F88305E\r
-:101F700048F4C77081E001C0880FCA95EAF70E9453\r
-:101F80006B19D6CF8BE58C0F833078F4C53A29F0E6\r
-:101F9000C63A31F083E890E005C081E890E002C0E5\r
-:101FA00082E890E0CF910C94720E88E58C0F83311B\r
-:101FB00008F064C0C83A39F1C93A41F1CA3A49F166\r
-:101FC000CB3A51F1CC3A59F1CD3A61F1C03B69F1CC\r
-:101FD000CE3A71F1CF3A79F1C13B81F1C23B89F13F\r
-:101FE000C33B91F1C43B99F1C53BA1F1C63BA9F1BB\r
-:101FF000C73BB1F1C83BB9F1C93BC1F1CA3BC9F11B\r
-:1020000080E090E038C082EE90E035C089EE90E04C\r
-:1020100032C08AEE90E02FC085EB90E02CC086EBBA\r
-:1020200090E029C087EB90E026C08CEC90E023C0C4\r
-:102030008DEC90E020C083E891E01DC08AE891E03B\r
-:102040001AC082E991E017C084E991E014C081E2EE\r
-:1020500092E011C083E292E00EC084E292E00BC0F5\r
-:1020600085E292E008C086E292E005C087E292E055\r
-:1020700002C08AE292E0CF910C94880ECF9108952D\r
-:10208000882309F44BC0823859F40E94500E81FF16\r
-:1020900045C089E30E94EA180E94A21989E30CC096\r
-:1020A000833871F40E94500E80FF38C083E50E948F\r
-:1020B000EA180E94A21983E50E9429190C94A2191A\r
-:1020C000843859F40E94500E82FF28C087E40E9491\r
-:1020D000EA180E94A21987E4EFCF9CEF980F913A7B\r
-:1020E00058F390E2980F983050F4877091E001C057\r
-:1020F000990F8A95EAF7892F0E947119DFCF9BE526\r
-:10210000980F933020F480E090E00C94720E885A7F\r
-:10211000833120F480E090E00C94880E08958823A9\r
-:1021200021F00E946B190C94A2190895882321F0C4\r
-:102130000E9471190C94A2190895BF92CF92DF9258\r
-:10214000EF92FF920F931F93CF93DF9300D000D0B5\r
-:1021500000D0CDB7DEB77C0185E0F701DE01119636\r
-:1021600001900D928A95E1F7F70183819481892B83\r
-:1021700009F4DDC2908181818F3F19F49F3F09F4FA\r
-:10218000D6C2F7010281258122952F7099838A8317\r
-:1021900089819A812E830E94A918182FB92E0E9436\r
-:1021A000A8180E946F17EB2DE295EF704E2F50E0AC\r
-:1021B000FA01E05AFF4F2E810C948D228B2D807FE7\r
-:1021C0009B2D9F70F92E882319F0F29480EFF8224E\r
-:1021D000002349F0FF2009F457C28F2D0E947B197C\r
-:1021E0000E94A21951C2812F0E944010FF2009F4C1\r
-:1021F0009EC28F2D0E94811926960FB6F894DEBFDD\r
-:102200000FBECDBFDF91CF911F910F91FF90EF9047\r
-:10221000DF90CF90BF900C94A2193B2D307F8B2D77\r
-:102220008F70303211F08295807F112319F01130B8\r
-:1022300021F12CC00023B9F0222309F490C12130F0\r
-:1022400009F08DC126960FB6F894DEBF0FBECDBF44\r
-:10225000DF91CF911F910F91FF90EF90DF90CF9082\r
-:10226000BF900C948B19222319F0213009F45FC21E\r
-:102270008E830E948E198E8186C1002321F0223028\r
-:1022800008F055C26CC1211152C27DC1002321F05A\r
-:10229000222309F464C1F8C1222309F474C109C2DC\r
-:1022A0008B2D86958695837019F08130D1F03FC2D1\r
-:1022B000002321F0812F9B2D937002C080E090E0DD\r
-:1022C00026960FB6F894DEBF0FBECDBFDF91CF913B\r
-:1022D0001F910F91FF90EF90DF90CF90BF900C94E3\r
-:1022E000720E002321F0812F9B2D937002C080E09D\r
-:1022F00090E026960FB6F894DEBF0FBECDBFDF91FB\r
-:10230000CF911F910F91FF90EF90DF90CF90BF90F2\r
-:102310000C94880E812F002319F00E94111D02C019\r
-:102320000E94791D26960FB6F894DEBF0FBECDBF72\r
-:10233000DF91CF911F910F91FF90EF90DF90CF90A1\r
-:10234000BF900C94FE1D8B2D837009F075C0011198\r
-:10235000EEC1812F829586958770880F880F912F07\r
-:102360009F70C92ED12CE12CF12C082E04C0CC0C6E\r
-:10237000DD1CEE1CFF1C0A94D2F714FF12C00FE004\r
-:1023800010E020E030E004C0000F111F221F331FB7\r
-:102390008A95D2F7C901B80160957095809590959E\r
-:1023A00003C060E070E0CB014B2D4695469543702D\r
-:1023B0004230C1F060F56C297D298E299F2941307A\r
-:1023C00051F126960FB6F894DEBF0FBECDBFDF9158\r
-:1023D000CF911F910F91FF90EF90DF90CF90BF9022\r
-:1023E0000C9496176C297D298E299F2926960FB665\r
-:1023F000F894DEBF0FBECDBFDF91CF911F910F913B\r
-:10240000FF90EF90DF90CF90BF900C94B2170E9496\r
-:102410009617C701B60126960FB6F894DEBF0FBE19\r
-:10242000CDBFDF91CF911F910F91FF90EF90DF9083\r
-:10243000CF90BF900C947A17002319F08B2D8170E8\r
-:1024400001C08695882309F472C1812F82958695F3\r
-:102450008770880F880F912F9F70C92ED12CE12C87\r
-:10246000F12C082E04C0CC0CDD1CEE1CFF1C0A94C1\r
-:10247000D2F714FF12C00FE010E020E030E004C0FB\r
-:10248000000F111F221F331F8A95D2F7C901B8010F\r
-:10249000609570958095909503C060E070E0CB01E9\r
-:1024A0004B2D4695469543704230C1F060F56C293E\r
-:1024B0007D298E299F29413051F126960FB6F89437\r
-:1024C000DEBF0FBECDBFDF91CF911F910F91FF9067\r
-:1024D000EF90DF90CF90BF900C9470186C297D29FD\r
-:1024E0008E299F2926960FB6F894DEBF0FBECDBF6A\r
-:1024F000DF91CF911F910F91FF90EF90DF90CF90E0\r
-:10250000BF900C948C180E947018C701B6012696D3\r
-:102510000FB6F894DEBF0FBECDBFDF91CF911F91F4\r
-:102520000F91FF90EF90DF90CF90BF900C945418D4\r
-:10253000103FD1F118F4103E50F4A1C0123F09F43D\r
-:1025400063C008F44CC0133F09F473C098C01F70F7\r
-:102550008B2D8F710023A1F00E94ED17812F2696FD\r
-:102560000FB6F894DEBF0FBECDBFDF91CF911F91A4\r
-:102570000F91FF90EF90DF90CF90BF900C948F1051\r
-:102580000E940E18812F26960FB6F894DEBF0FBE5C\r
-:10259000CDBFDF91CF911F910F91FF90EF90DF9012\r
-:1025A000CF90BF900C9496100023A9F02111BFC0CA\r
-:1025B0008B2D8F7126960FB6F894DEBF0FBECDBF60\r
-:1025C000DF91CF911F910F91FF90EF90DF90CF900F\r
-:1025D000BF900C943318223008F0A9C0E9CF002333\r
-:1025E000A9F08B2D8F7126960FB6F894DEBF0FBE23\r
-:1025F000CDBFDF91CF911F910F91FF90EF90DF90B2\r
-:10260000CF90BF900C94ED17002359F38B2D8F7151\r
-:1026100026960FB6F894DEBF0FBECDBFDF91CF91E7\r
-:102620001F910F91FF90EF90DF90CF90BF900C948F\r
-:102630000E18002399F08B2D8F7126960FB6F89403\r
-:10264000DEBF0FBECDBFDF91CF911F910F91FF90E5\r
-:10265000EF90DF90CF90BF900C94D81726960FB6CE\r
-:10266000F894DEBF0FBECDBFDF91CF911F910F91C8\r
-:10267000FF90EF90DF90CF90BF900C94CE17002387\r
-:10268000A9F0222309F4ADCF812F26960FB6F89436\r
-:10269000DEBF0FBECDBFDF91CF911F910F91FF9095\r
-:1026A000EF90DF90CF90BF900C94780F222309F425\r
-:1026B000ADCF812F26960FB6F894DEBF0FBECDBFEB\r
-:1026C000DF91CF911F910F91FF90EF90DF90CF900E\r
-:1026D000BF900C9440104B2D4F70612FC7010E948A\r
-:1026E000AE0226960FB6F894DEBF0FBECDBFDF91C7\r
-:1026F000CF911F910F91FF90EF90DF90CF90BF90FF\r
-:102700000C94F2164B2D4F70612FC70126960FB611\r
-:10271000F894DEBF0FBECDBFDF91CF911F910F9117\r
-:10272000FF90EF90DF90CF90BF900C94E30526963A\r
-:102730000FB6F894DEBF0FBECDBFDF91CF911F91D2\r
-:102740000F91FF90EF90DF90CF90BF9008950E947F\r
-:1027500088190E945D190E94A2190E94AE1E0E9453\r
-:10276000FE1D80E090E00E94720E80E090E00C94EC\r
-:10277000880E0E9478190C94A7130E94A918292F7B\r
-:1027800022952F702C3030F42A3048F42250223019\r
-:1027900078F405C02C3041F02F3031F009C0803E74\r
-:1027A00048F0803F29F406C093FB882780F90895FC\r
-:1027B00080E0089581E00895CF93DF9300D000D0AA\r
-:1027C0001F92CDB7DEB70F900F900F900F900F9024\r
-:1027D000DF91CF910895CF93DF9300D000D000D048\r
-:1027E000CDB7DEB726960FB6F894DEBF0FBECDBFCD\r
-:1027F000DF91CF9108951F93CF93DF93C09179011B\r
-:1028000016E080917A01C81799F0D0E01C9FF00182\r
-:102810001D9FF00D1124E558FE4F408151816281CA\r
-:102820007381848195810E94EB132196C770E9CF53\r
-:10283000DF91CF911F9108954091AB015091AC0170\r
-:102840006091AD017091AE018091AF019091B001A6\r
-:102850000C94EB138091B00182958F7009F054C0F5\r
-:102860008091AD01882309F44FC080917901A09136\r
-:102870007A014091AE015091AF016091AB0170912E\r
-:10288000AC01B6E08A1709F43FC090E0411551054C\r
-:10289000C1F17F3F11F46F3FA1F1B89FF001B99FE3\r
-:1028A000F00D1124E558FE4F218127132AC0208105\r
-:1028B000261327C02281211124C0238134812417AB\r
-:1028C000350710F421503109241B350B283C310504\r
-:1028D000C0F42091B0012F7020612093B00126E058\r
-:1028E000289FF001299FF00D1124E058FE4F8081B0\r
-:1028F0008F70806180838BEA91E00E949D100C9420\r
-:10290000FB1301968770BECF0895CF92DF92EF92AE\r
-:10291000FF920F931F93CF93DF93CDB7DEB76297EC\r
-:102920000FB6F894DEBF0FBECDBF8C0185E0F80175\r
-:10293000DE011D9601900D928A95E1F7D8014C9128\r
-:1029400011965C91119712966C918091AE019091C5\r
-:10295000AF01009709F475C13091AB017091AC01E2\r
-:102960007F3F19F43F3F09F46CC1F801C380D48064\r
-:10297000E090AD01EE2009F4BEC02091B001C81670\r
-:10298000D90628F0D601A81BB90BCD0104C080954B\r
-:1029900090958C0D9D1DFF24F394883C910578F053\r
-:1029A000F12C207F09F0C4C07C2DD98AC88A89897E\r
-:1029B0000E94DC138BEA91E00E949D10AFC0822F31\r
-:1029C000807F09F045C0571313C0431311C0611134\r
-:1029D0000FC02F7020612093B0010E941C148BEA5D\r
-:1029E00091E00E949D108091B001F80185832EC076\r
-:1029F000CD2819F15F3F11F44F3FF9F0F62E611128\r
-:102A00001CC08091790120917A0136E0821709F487\r
-:102A10005BC090E0389FF001399FF00D1124E5581C\r
-:102A2000FE4F7181571306C07081471303C0728136\r
-:102A3000711103C001968770E9CFF62E662309F461\r
-:102A40001CC18091B00181608093B001F12C15C14F\r
-:102A5000571309C0431307C0611105C08091B0012D\r
-:102A6000F8018583C8C04D875E878D859E856A8BFA\r
-:102A70000E94BD136A898823D1F16623C1F1209198\r
-:102A8000B001822F82958F7090E0029774F0809150\r
-:102A9000AB019091AC0198878F831986DB86CA863B\r
-:102AA0002C87CE0107960E949D1086E0F801ABEAC4\r
-:102AB000B1E001900D928A95E1F70E942A140E94DC\r
-:102AC0001C14FF24F394D9C04D875E878D859E85A5\r
-:102AD0000E94A918292F22952F70223008F0C1C01A\r
-:102AE0009F7009F0BBC0805E883008F4C6C0C80182\r
-:102AF0000E949D10E6CFC816D90608F453C0F6010F\r
-:102B0000E81BF90BCF01883C910508F450C0F12C6B\r
-:102B10007C2DD98AC88A89890E94DC13EBEAF1E00E\r
-:102B200086E0DF011D928A95E9F70E941C14A5C07A\r
-:102B3000571314C0431312C0611110C08091B0012B\r
-:102B4000F8018583C8010E949D1086E0EBEAF1E060\r
-:102B5000DF011D928A95E9F7FE2C8FC04D875E87B5\r
-:102B60008D859E856A8B0E94BD136A89882309F42E\r
-:102B7000BECF662309F4BBCF2091B001822F82958E\r
-:102B80008F7090E002970CF490CF8091AB01909100\r
-:102B9000AC019A8389831B82DD82CC822E83CE0195\r
-:102BA000019681CF809590958C0D9D1DACCFF62E12\r
-:102BB000662309F49CCF571333C0431331C02091CF\r
-:102BC000B00120FD24C0822F82958F70482F50E0E5\r
-:102BD00041155105E1F0D80115962C9315974F300A\r
-:102BE000510549F08F5F982F9295907F822F8F70BB\r
-:102BF000892B15968C93C8010E949D1086E0F801E0\r
-:102C0000ABEAB1E001900D928A95E1F78ECF86E0B4\r
-:102C1000F801ABEAB1E001900D928A95E1F72DC081\r
-:102C20004D875E878D859E850E94BD1381113DCFA6\r
-:102C30008091B00181608093B001C8010E949D1015\r
-:102C40001CC0662309F453CF4D875E878D859E8512\r
-:102C50000E94BD13882309F44ACF27CF811143CFA7\r
-:102C60000CC0243008F043CF9F7009F43CCFD8014A\r
-:102C700015969C91907F09F036CF8F2D62960FB6F6\r
-:102C8000F894DEBF0FBECDBFDF91CF911F910F91A2\r
-:102C9000FF90EF90DF90CF9008951F93CF93DF9335\r
-:102CA000CDB7DEB72C970FB6F894DEBF0FBECDBF01\r
-:102CB0004F83588769877A878B879C87CE010796D1\r
-:102CC0000E948514882371F08A859B85892B09F4DD\r
-:102CD00041C088858F3F09F065C08F818F3F09F023\r
-:102CE00061C038C086E0FE013796DE011196019082\r
-:102CF0000D928A95E1F76A857B856115710551F121\r
-:102D0000FF81E885EF3F11F4FF3F21F120917A0127\r
-:102D100030E0C9010196877099274091790150E010\r
-:102D20008417950709F447C0F983EA837D836C8390\r
-:102D300096E0929FD001939FB00D1124A558BE4FED\r
-:102D4000FE01319601900D929A95E1F780937A01F8\r
-:102D50000E94FB1316E08091790190917A01891706\r
-:102D6000B9F1189FC001112485589E4F0E94851407\r
-:102D7000882371F1E09179011E9FF0011124E5583B\r
-:102D8000FE4F4081518162817381848195810E94CF\r
-:102D9000EB138091790190E00196877099278093D9\r
-:102DA0007901D9CF4F81588569857A858B859C8536\r
-:102DB0000E94EB13CFCF0E94B91310927A011092A8\r
-:102DC0007901EBEAF1E086E0DF011D928A95E9F7EF\r
-:102DD0002C960FB6F894DEBF0FBECDBFDF91CF911A\r
-:102DE0001F910895EF92FF920F931F93CF93DF935C\r
-:102DF0008C01892B09F46CC0F12CEE24E394E801DA\r
-:102E00002196F8018491843740F4843008F051C051\r
-:102E1000813081F0823019F15BC0853709F444C0FC\r
-:102E2000A8F19CE7980F903708F052C08F770E9466\r
-:102E3000401041C00E5F1F4FFE01849190E2980F39\r
-:102E4000983050F48770FE2D01C0FF0F8A95EAF785\r
-:102E50008F2F0E947B1914C00E94780F2DC00E5F27\r
-:102E60001F4FFE01849190E2980F983060F48770B4\r
-:102E7000FE2D01C0FF0F8A95EAF78F2F0E9481195E\r
-:102E80000E94A21919C00E94401016C00E5F1F4F69\r
-:102E9000FE01C491CC2381F08FE99FE00197F1F707\r
-:102EA00000C00000C150F6CF0E5F1F4FFE01F4902E\r
-:102EB00003C00E94780F8E018F2D882309F49FCFC5\r
-:102EC000EFE9FFE03197F1F700C000008150F5CF46\r
-:102ED000DF91CF911F910F91FF90EF90089508958A\r
-:102EE0006093B5017093B6018093B7019093B801D8\r
-:102EF0000C94A7130F931F930091B5011091B60185\r
-:102F00002091B7013091B801DC01CB01802B912BCE\r
-:102F1000A22BB32B8093B5019093B601A093B70178\r
-:102F2000B093B8011F910F910C94A7130F931F93A7\r
-:102F30000091B5011091B6012091B7013091B8010F\r
-:102F4000DC01CB0180239123A223B3238093B5011D\r
-:102F50009093B601A093B701B093B8011F910F9160\r
-:102F60000C94A7130F931F930091B5011091B60114\r
-:102F70002091B7013091B801DC01CB018027912766\r
-:102F8000A227B3278093B5019093B601A093B70110\r
-:102F9000B093B8011F910F910C94A7131092B10137\r
-:102FA0001092B2011092B3011092B4010C94A713C5\r
-:102FB00041E050E060E070E004C0440F551F661F20\r
-:102FC000771F8A95D2F74093B1015093B201609375\r
-:102FD000B3017093B4010C94A71341E050E060E09A\r
-:102FE00070E004C0440F551F661F771F8A95D2F703\r
-:102FF0008091B1019091B201A091B301B091B4015F\r
-:10300000482B592B6A2B7B2B4093B1015093B20173\r
-:103010006093B3017093B4010C94A71341E050E0A6\r
-:1030200060E070E004C0440F551F661F771F8A954B\r
-:10303000D2F740955095609570958091B10190912F\r
-:10304000B201A091B301B091B401482359236A237E\r
-:103050007B234093B1015093B2016093B30170930D\r
-:10306000B4010C94A71341E050E060E070E004C0AC\r
-:10307000440F551F661F771F8A95D2F78091B101C3\r
-:103080009091B201A091B301B091B40148275927A2\r
-:103090006A277B274093B1015093B2016093B3013B\r
-:1030A0007093B4010C94A7130F931F930091B10177\r
-:1030B0001091B2012091B3013091B401DC01CB0138\r
-:1030C000802B912BA22BB32B8093B1019093B20153\r
-:1030D000A093B301B093B4011F910F910C94A71367\r
-:1030E0000F931F930091B1011091B2012091B30190\r
-:1030F0003091B401DC01CB0180239123A223B323BF\r
-:103100008093B1019093B201A093B301B093B40145\r
-:103110001F910F910C94A7130F931F930091B1016E\r
-:103120001091B2012091B3013091B401DC01CB01C7\r
-:1031300080279127A227B3278093B1019093B201F2\r
-:10314000A093B301B093B4011F910F910C94A713F6\r
-:103150000895CF92DF92EF92FF920F931F93CF9338\r
-:10316000DF938C01C090B101D090B201E090B30127\r
-:10317000F090B4018091B5019091B601A091B70192\r
-:10318000B091B801C82AD92AEA2AFB2ACFE1D0E0B7\r
-:10319000D701C6010C2E04C0B695A79597958795C3\r
-:1031A0000A94D2F780FF07C0B8018C2F0E9407064F\r
-:1031B0008130910531F4219758F7B80180E00E94E1\r
-:1031C0000706DF91CF911F910F91FF90EF90DF9055\r
-:1031D000CF90089590910C019923F1F090910D01F9\r
-:1031E0009923D1F0982F9695969596959F3080F5D6\r
-:1031F000E0910E01F0910F01E90FF11D877021E0C0\r
-:1032000030E0A90102C0440F551F8A95E2F7CA01B8\r
-:103210009181892B8183089520910E0130910F01B6\r
-:10322000F90132969FEF40E05191851789F09F3F59\r
-:1032300019F4511101C0942F4F5F4E30A9F79F3FF1\r
-:1032400039F0F901E90FF11D97FDFA958283089590\r
-:10325000089590910C019923F9F090910D01992313\r
-:10326000D9F0982F9695969596959F3028F5E091F0\r
-:103270000E01F0910F01E90FF11D877021E030E0A0\r
-:10328000A90102C0440F551F8A95E2F7CA01809533\r
-:10329000918189238183089520910E0130910F013E\r
-:1032A000F9013296205F3F4F9081891301C010824F\r
-:1032B0003196E217F307C1F7089581E090E0E091BD\r
-:1032C0000E01F0910F01E80FF91F10820196803175\r
-:1032D0009105A9F708959091CB01892B8093CB019B\r
-:1032E000089580959091CB0189238093CB01089517\r
-:1032F0001092CB0108959091CA01892B8093CA0145\r
-:10330000089580959091CA0189238093CA010895F8\r
-:103310001092CA0108958093B90108951092B901DD\r
-:10332000089580910E0190910F01FC0131969C014E\r
-:10333000205F3F4F80E0919191118F5FE217F3077B\r
-:10334000D1F70895E0910E01F0910F018091CB012A\r
-:103350008083E0910E01F0910F0190818091CA016C\r
-:10336000892B80838091B901882361F0E0910E015F\r
-:10337000F0910F019081892B80830E949119811116\r
-:103380001092B90180910E0190910F010C945C0E86\r
-:10339000CF92DF92EF92FF926C01EE24FF24C114D2\r
-:1033A000D104E104F10421F0C701B60120E101C01C\r
-:1033B00020E0C72ED82EE92EFF24C114D104E10449\r
-:1033C000F10419F0285FC701B6016B017C0154E0DC\r
-:1033D000F694E794D794C7945A95D1F7C114D104C1\r
-:1033E000E104F10419F02C5FC701B6016B017C0107\r
-:1033F00042E0F694E794D794C7944A95D1F7C11464\r
-:10340000D104E104F10419F02E5FC701B601DC011B\r
-:10341000CB01B695A79597958795892B8A2B8B2BF2\r
-:1034200009F02F5F822FFF90EF90DF90CF900895EB\r
-:103430008091E401843011F120E488E190E00FB63E\r
-:10344000F894A895809360000FBE2093600083B726\r
-:10345000817F846083BF83B7816083BF78948895C0\r
-:1034600083B78E7F83BF0FB6F894A89580916000D4\r
-:10347000886180936000109260000FBE08950895E7\r
-:103480000C943F1ACF930E94401A0E9426040E9477\r
-:103490003F1AC0E08C2F0E941C05811104C0CF5F31\r
-:1034A000CE30C1F701C081E0CF9108950E94B913D9\r
-:1034B0000E94500E0C94460782E084BD93E095BDB7\r
-:1034C0009AEF97BD80936E0008952FB7F89480917E\r
-:1034D000CD019091CE01A091CF01B091D0012FBF2D\r
-:1034E0000895CF92DF92EF92FF920F931F932FB721\r
-:1034F000F8944091CD015091CE016091CF0170912F\r
-:10350000D0012FBF6A017B01EE24FF248C0120E053\r
-:1035100030E0C016D106E206F30610F4415051091E\r
-:103520009A01281B390BC9011F910F91FF90EF9051\r
-:10353000DF90CF9008951F920F920FB60F92112433\r
-:103540008F939F93AF93BF938091CD019091CE01C4\r
-:10355000A091CF01B091D0010196A11DB11D809322\r
-:10356000CD019093CE01A093CF01B093D001BF9134\r
-:10357000AF919F918F910F900FBE0F901F90189554\r
-:103580000E94480BF8942FEF87EA91E62150804083\r
-:103590009040E1F700C0000087E090EBDC018093F1\r
-:1035A000ED019093EE01A093EF01B093F0019CE048\r
-:1035B00088E10FB6F894A895809360000FBE9093B1\r
-:1035C0006000FFCFEF92FF920F931F93CF93DF9393\r
-:1035D000D82FC0E08C2F0E941C0500E010E0E82EE0\r
-:1035E000F12CC701002E02C0959587950A94E2F749\r
-:1035F00080FD06C00F5F1F4F0630110591F709C00F\r
-:10360000602F7C2F80E00E94E4058D13F3CF81E0D2\r
-:1036100004C0CF5FCE30F1F680E0DF91CF911F91F3\r
-:103620000F91FF90EF900895CF93C82F8CE20E94E6\r
-:10363000E21A882321F08C2FCF910C94E21A80E0BB\r
-:10364000CF910895CF930E94691C811102C00E94FE\r
-:103650004F1CC5E6C15049F00E9426048FE39CE947\r
-:103660000197F1F700C00000F5CF89E20E94141B1A\r
-:10367000811113C18AE20E94141B81110E944F1C08\r
-:1036800085E00E94141B81110E94C01A0E94741CC4\r
-:103690008093CC0187E00E94141B8823A9F18BE161\r
-:1036A0000E94141B882351F08091CC0181FB2227BA\r
-:1036B00020F991E0922790FB81F90EC08EE00E94E4\r
-:1036C000141B882361F08091CC0182FB222720F912\r
-:1036D00091E0922790FB82F98093CC0115C080E1A4\r
-:1036E0000E94141B9091CC01882341F093FB222768\r
-:1036F00020F981E0822780FB93F904C0892F80950F\r
-:1037000080FB90F99093CC018091CC010E94781CB1\r
-:103710000E94861C8093DE0180EE0E94141B882389\r
-:1037200041F08091DE01982F909590FB80F9809375\r
-:10373000DE0189E30E94141B882359F08091DE0189\r
-:1037400081FB222720F991E0922790FB81F9809359\r
-:10375000DE0182EE0E94141B882359F08091DE0165\r
-:1037600082FB222720F991E0922790FB82F9809337\r
-:10377000DE0186EE0E94141B882359F08091DE0141\r
-:1037800083FB222720F991E0922790FB83F9809315\r
-:10379000DE0183EE0E94141B882359F08091DE0124\r
-:1037A00084FB222720F991E0922790FB84F98093F3\r
-:1037B000DE0185E30E94141B882359F08091DE010D\r
-:1037C00085FB222720F991E0922790FB85F98093D1\r
-:1037D000DE0181E30E94141B882359F08091DE01F1\r
-:1037E00086FB222720F991E0922790FB86F98093AF\r
-:1037F000DE0181E10E94141B882359F08091DE01D3\r
-:1038000087FB222720F991E0922790FB87F980938C\r
-:10381000DE018091DE010E948A1C8091DE0187FB1F\r
-:10382000882780F980930D0187E20E94141BC82F1E\r
-:103830008EE10E94141B8111C2608FE10E94141B53\r
-:103840008111C46080E20E94141B8111C86081E272\r
-:103850000E94141B8111C06182E20E94141B81111D\r
-:10386000C06283E20E94141B8111C06484E20E9442\r
-:10387000141B882311F0C06802C0CC2329F08C2FC0\r
-:103880000E94811C6C2F03C00E947D1C682F70E079\r
-:1038900080E090E0CF910C947017CF9108956DEE79\r
-:1038A0007EEF80E090E00E94C32260E082E090E042\r
-:1038B0000E94B52260E083E090E00E94B52260E0C3\r
-:1038C00084E090E00E94B52260E085E090E00C94F6\r
-:1038D000B52280E090E00E94AF2221E08D3E9E4F15\r
-:1038E00009F020E0822F089582E090E00C94A72256\r
-:1038F000682F82E090E00C94B52283E090E00C9475\r
-:10390000A722682F83E090E00C94B52284E090E039\r
-:103910000C94A722682F84E090E00C94B52280914B\r
-:10392000D30180FF0BC06091130185E0689FB00157\r
-:10393000112475956795759567952BC081FF09C012\r
-:103940006091130185E0689FB0011124759567951A\r
-:1039500020C082FF07C06091130185E0689FB0011D\r
-:10396000112417C09091D4019923D1F060911201D4\r
-:10397000961788F72091130185E0289F9001112464\r
-:10398000929FA001939F500D112470E0CA010E94E4\r
-:1039900079226038710540F46115710519F406C08B\r
-:1039A00065E070E0862F08958FE7089581E008951F\r
-:1039B0008091D30180FF08C06091110170E075957E\r
-:1039C00067957595679521C081FF06C060911101CB\r
-:1039D00070E07595679519C082FF04C06091110170\r
-:1039E00070E010C09091D401992399F0609110017A\r
-:1039F0009617A0F780911101899FC001112470E0F2\r
-:103A00000E9479226038710540F46115710519F43E\r
-:103A100006C061E070E0862F08958FE7089581E089\r
-:103A20000895803F21F40E948F1C819504C0813F3E\r
-:103A300029F40E948F1C8093D7010895823F21F4BE\r
-:103A40000E948F1C819504C0833F29F40E948F1C23\r
-:103A50008093D6010895893F19F40E94D81C05C0AF\r
-:103A60008A3F31F40E94D81C81958093D801089533\r
-:103A70008B3F21F40E94D81C819504C08C3F29F40F\r
-:103A80000E94D81C8093D9010895843F21F480912D\r
-:103A9000D501816017C0853F21F48091D5018260F6\r
-:103AA00011C0863F21F48091D50184600BC0873F0F\r
-:103AB00021F48091D501886005C0883F31F4809160\r
-:103AC000D50180618093D50108958D3F21F48091C7\r
-:103AD000D30181600BC08E3F21F48091D3018260BD\r
-:103AE00005C08F3F29F48091D30184608093D30176\r
-:103AF0000895803F39F48091D70187FF6CC0109200\r
-:103B0000D70169C0813F29F48091D7011816BCF311\r
-:103B100062C09091D601823F29F497FF5CC0109259\r
-:103B2000D60159C0833F19F41916CCF354C0893F0C\r
-:103B300041F48091D80118160CF04DC01092D801B4\r
-:103B40004AC08A3F29F48091D80187FF44C0F6CF4C\r
-:103B50008B3F39F48091D90187FF3DC01092D90184\r
-:103B60003AC08C3F29F48091D9011816BCF333C0B8\r
-:103B7000843F21F48091D5018E7F17C0853F21F4C9\r
-:103B80008091D5018D7F11C0863F21F48091D501B0\r
-:103B90008B7F0BC0873F21F48091D501877F05C0C3\r
-:103BA000883F31F48091D5018F7E8093D50113C079\r
-:103BB0008D3F21F48091D3018E7F0BC08E3F21F485\r
-:103BC0008091D3018D7F05C08F3F29F48091D3016F\r
-:103BD0008B7F8093D3018091D60181110EC080919B\r
-:103BE000D70181110AC08091D801811106C080914E\r
-:103BF000D901811102C01092D401089585ED91E0A0\r
-:103C00000E94670E0E94651A9093D2018093D101A1\r
-:103C100008951F93CF93DF938091D1019091D201AA\r
-:103C20000E94711AAC019091D401992321F0209146\r
-:103C3000140130E006C0209115018AE0289F900110\r
-:103C400011244217530708F485C08091D601C09112\r
-:103C5000D701D091D8011091D901811107C0C111AC\r
-:103C600075C0D11173C0111171C074C09F3F19F09C\r
-:103C70009F5F9093D401181624F40E948F1C8093A8\r
-:103C8000D6018091D60187FF05C00E948F1C8195C7\r
-:103C90008093D6011C1624F40E948F1C8093D701B8\r
-:103CA0008091D70187FF05C00E948F1C819580936A\r
-:103CB000D7016091D601662331F1C091D701CC23A1\r
-:103CC00011F1062E000C770B880B990B0E948021B6\r
-:103CD00023E333E343E35FE30E94E4210E944821AE\r
-:103CE0006093D6016C2FCC0F770B880B990B0E9439\r
-:103CF000802123E333E343E35FE30E94E4210E9456\r
-:103D000048216093D7011D1624F40E94D81C80938B\r
-:103D1000D8018091D80187FF05C00E94D81C8195E9\r
-:103D20008093D801111624F40E94D81C8093D901E5\r
-:103D30008091D90187FF05C00E94D81C819580938E\r
-:103D4000D901DF91CF911F910C94FE1D9F3F09F087\r
-:103D50008FCFA0CFDF91CF911F910895E5EDF1E0D6\r
-:103D600085E0DF011D928A95E9F71092D401109247\r
-:103D7000D3010895833081F128F4813059F08230E5\r
-:103D8000D1F00895853009F449C0B8F1863009F4BE\r
-:103D900056C0089580911501262F30E0280F311D5F\r
-:103DA0002F3F310524F4680F6093150108958FEFBC\r
-:103DB00080931501089580911401262F30E0280F7B\r
-:103DC000311D2F3F310524F4680F609314010895CD\r
-:103DD0008FEF80931401089580911301262F30E016\r
-:103DE000280F311D2F3F310524F4680F6093130114\r
-:103DF00008958FEF80931301089580911201262F6B\r
-:103E000030E0280F311D2F3F310524F4680F6093F7\r
-:103E1000120108958FEF809312010895809111018E\r
-:103E2000262F30E0280F311D2F3F310524F4680F75\r
-:103E30006093110108958FEF80931101089580918F\r
-:103E40001001262F30E0280F311D2F3F310524F4BB\r
-:103E5000680F6093100108958FEF8093100108950B\r
-:103E6000833011F128F4813049F0823091F00895C7\r
-:103E7000853081F120F18630C1F1089580911501DE\r
-:103E8000681720F4861B8093150108951092150180\r
-:103E9000089580911401681720F4861B8093140103\r
-:103EA000089510921401089580911301681720F469\r
-:103EB000861B809313010895109213010895809139\r
-:103EC0001201681720F4861B809312010895109246\r
-:103ED0001201089580911101681720F4861B8093C8\r
-:103EE0001101089510921101089580911001681731\r
-:103EF00020F4861B809310010895109210010895FC\r
-:103F00000F931F938D3109F46BC008F03FC08E30C2\r
-:103F100009F47DC0C0F4873009F46EC068F48630BF\r
-:103F200009F0AFC08091CC01817F8E7F8093CC015E\r
-:103F300081E08093DB01A6C0883009F458C08B3043\r
-:103F400009F49BC09EC0863109F497C078F4803193\r
-:103F500009F470C0813109F094C00E94B9139091A6\r
-:103F60000D0181E0892780930D0187C0893109F413\r
-:103F700084C08B3109F085C08091CC0181FB222760\r
-:103F800020F991E0922790FB81F94AC0853309F42A\r
-:103F90005BC048F4873209F457C008F45AC089322C\r
-:103FA00009F452C06EC0833438F48A3308F067C015\r
-:103FB000883309F462C065C0833409F445C088348D\r
-:103FC00009F05FC00E94B9130FEF13ED20E3015019\r
-:103FD00010402040E1F700C000000E94C01A4DC010\r
-:103FE0000E9402210E94500E0E94460746C00E9475\r
-:103FF000741C0E94861C41C09091CC01892F817055\r
-:1040000090FF12C0917F9E7F9093CC013BC0809126\r
-:10401000CC0182FB222720F991E0922790FB82F9C4\r
-:104020008093CC01992349F18091CC0181608093E8\r
-:10403000CC0123C08091CC0183FB222720F991E0A1\r
-:10404000922790FB83F9ECCF61E070E080E090E094\r
-:1040500010C08D5141E050E060E070E08A019B01AA\r
-:1040600004C0000F111F221F331F8A95D2F7C90108\r
-:10407000B8010E9470170E94B91381E003C08953F0\r
-:10408000E9CF80E01F910F91089580E008950C948E\r
-:104090004520CF93C82F8091DB01813079F018F053\r
-:1040A0008230E9F187C0E0910E01F0910F0180812B\r
-:1040B000813169F0823209F07FC009C0E0910E01C0\r
-:1040C000F0910F018081813111F0823261F48C2FE7\r
-:1040D0000E944720811104C08C2F0E94801F1DC0A8\r
-:1040E00081E090E01AC08C2F0E944520811114C0FD\r
-:1040F000C43179F048F4CB3079F0C03109F060C0B8\r
-:1041000082E08093DB0108C0C93219F0C83321F086\r
-:1041100057C01092DB0154C081E0817053C0C93296\r
-:1041200089F118F5C43171F1A8F4C73009F046C01F\r
-:104130008AE08093150194E19093140193E09093A9\r
-:1041400013018093120188E08093110188E280932B\r
-:10415000100134C0CE51C63088F5EC2FF0E0E65D9A\r
-:10416000FE4F80818093DA0129C0CE34E9F020F43B\r
-:10417000CB3421F56AE013C0C13579F0C235F1F4D2\r
-:1041800061E00DC08091DA01882319F01092DA0104\r
-:1041900015C081E08093DB0115C061E006C080910D\r
-:1041A000DA010E94BA1E0AC06AE08091DA010E9418\r
-:1041B000301F04C01092DB0180E004C081E002C027\r
-:1041C00080E0ABCFCF910895E1E8F0E08081886096\r
-:1041D00080838081816080838FB7F89493E090938F\r
-:1041E000890090ED909388008FBF0895EFE6F0E08E\r
-:1041F0008081826080830895EFE6F0E080818D7F8A\r
-:1042000080830895EFE6F0E0908182E08927808343\r
-:1042100008951F920F920FB60F9211242F933F9380\r
-:104220004F935F936F937F938F939F93AF93BF93BE\r
-:10423000EF93FF938091DC019091DD0101969093C3\r
-:10424000DD018093DC01811103C082E00E944607FA\r
-:10425000E091DD01E695E695F0E0E657FB4FE4914D\r
-:104260008091DC018E1303C080E00E944607FF911D\r
-:10427000EF91BF91AF919F918F917F916F915F91DE\r
-:104280004F913F912F910F900FBE0F901F90189557\r
-:104290000E944F216894B1110C94DE2108950E9470\r
-:1042A000C32188F09F5798F0B92F9927B751B0F0E4\r
-:1042B000E1F0660F771F881F991F1AF0BA95C9F7AA\r
-:1042C00014C0B13091F00E94DD21B1E008950C944A\r
-:1042D000DD21672F782F8827B85F39F0B93FCCF3FD\r
-:1042E000869577956795B395D9F73EF49095809527\r
-:1042F000709561957F4F8F4F9F4F0895E89409C047\r
-:1043000097FB3EF490958095709561957F4F8F4F08\r
-:104310009F4F9923A9F0F92F96E9BB279395F6951E\r
-:10432000879577956795B795F111F8CFFAF4BB0F9C\r
-:1043300011F460FF1BC06F5F7F4F8F4F9F4F16C000\r
-:10434000882311F096E911C0772321F09EE8872F8A\r
-:10435000762F05C0662371F096E8862F70E060E046\r
-:104360002AF09A95660F771F881FDAF7880F9695BF\r
-:10437000879597F9089557FD9058440F551F59F0A8\r
-:104380005F3F71F04795880F97FB991F61F09F3F42\r
-:1043900079F087950895121613061406551FF2CF6B\r
-:1043A0004695F1DF08C0161617061806991FF1CFBB\r
-:1043B00086957105610508940895E894BB276627E2\r
-:1043C0007727CB0197F908950E94F7210C94682272\r
-:1043D0000E945A2238F00E94612220F0952311F0A9\r
-:1043E0000C9451220C94572211240C94DE210E942B\r
-:1043F000BB2170F3959FC1F3950F50E0551F629F4D\r
-:10440000F001729FBB27F00DB11D639FAA27F00D2D\r
-:10441000B11DAA1F649F6627B00DA11D661F829F54\r
-:104420002227B00DA11D621F739FB00DA11D621F39\r
-:10443000839FA00D611D221F749F3327A00D611D56\r
-:10444000231F849F600D211D822F762F6A2F112438\r
-:104450009F5750409AF0F1F088234AF0EE0FFF1F6B\r
-:10446000BB1F661F771F881F91505040A9F79E3FC2\r
-:10447000510580F00C9451220C94DE215F3FE4F34F\r
-:10448000983ED4F3869577956795B795F795E79518\r
-:104490009F5FC1F7FE2B880F911D9695879597F921\r
-:1044A000089597F99F6780E870E060E008959FEFB6\r
-:1044B00080EC089500240A941616170618060906BB\r
-:1044C000089500240A94121613061406050608958A\r
-:1044D000092E0394000C11F4882352F0BB0F40F412\r
-:1044E000BF2B11F460FF04C06F5F7F4F8F4F9F4F52\r
-:1044F000089597FB072E16F4009407D077FD09D096\r
-:104500000E94932207FC05D03EF4909581959F4F21\r
-:104510000895709561957F4F0895EE0FFF1F0590E8\r
-:10452000F491E02D0994AA1BBB1B51E107C0AA1FFF\r
-:10453000BB1FA617B70710F0A61BB70B881F991F44\r
-:104540005A95A9F780959095BC01CD010895F999E8\r
-:10455000FECF92BD81BDF89A992780B50895A8E154\r
-:10456000B0E042E050E00C94CA22262FF999FECF29\r
-:104570001FBA92BD81BD20BD0FB6F894FA9AF99A80\r
-:104580000FBE019608950E94B522272F0C94B622E3\r
-:10459000DC01CB01FC01F999FECF06C0F2BDE1BD03\r
-:1045A000F89A319600B40D9241505040B8F70895F2\r
-:0445B000F894FFCFAD\r
-:1045B40020024707D707B2077E074A070101BA015D\r
-:1045C40028080A03140A3F4D36394B04FE03C80376\r
-:1045D4008F0322033B0354036D0301020304050606\r
-:0445E40007080900BB\r
+:1004D000DAE0DEBFCDBF04B603FE24C08091EE019A\r
+:1004E0009091EF01A091F001B091F1018730904B14\r
+:1004F000A740B04BB9F41092EE011092EF011092A8\r
+:10050000F0011092F10114BE84B7877F84BF88E1A7\r
+:100510000FB6F89480936000109260000FBEE0E088\r
+:10052000FFE3099511E0A0E0B1E0EAE9F5E402C0DB\r
+:1005300005900D92A433B107D9F721E0A4E3B1E00F\r
+:1005400001C01D92AE3EB207E1F70E94F6080C947E\r
+:10055000CB220C94000061110BC0FC018281882326\r
+:1005600021F085EE0E94570F03C085EE0E941F10F8\r
+:1005700080E090E0089508956091B1017091B2011A\r
+:100580008091B3019091B4010E94D91956985E9858\r
+:1005900025982D9826982E9827982F98813019F015\r
+:1005A000823021F00895259A2D9A0895269A2E9A40\r
+:1005B00008950C94BC0256985E9825982D9826981C\r
+:1005C0002E9827982F988FEF90E090938900809332\r
+:1005D000880090938B0080938A0090938D00809385\r
+:1005E0008C00259A2D9A2FEF80E792E021508040D1\r
+:1005F0009040E1F700C00000269A2E9A2FEF80E786\r
+:1006000092E0215080409040E1F700C00000279A1E\r
+:100610002F9A2FEF80E792E0215080409040E1F741\r
+:1006200000C0000025982D982FEF80E792E0215020\r
+:1006300080409040E1F700C0000026982E982FEFF0\r
+:1006400080E792E0215080409040E1F700C0000038\r
+:1006500027982F9856985E9825982D9826982E982A\r
+:1006600027982F98089589EA8093800089E08093E5\r
+:10067000810024982C983F988AB18F748AB96E981B\r
+:10068000479A8BB1806B8BB9769A0E94DB020C94EF\r
+:10069000BB0280E2809300018091340181110EC081\r
+:1006A0000E94980381E0809334012FEF83ED90E363\r
+:1006B000215080409040E1F700C0000080E40E949B\r
+:1006C0009E038093000181112EC00E94C803809375\r
+:1006D0000001811128C00E94C8038093000181118C\r
+:1006E00022C08FE30E94C8038093000181111BC0C8\r
+:1006F0000E94C00380E40E949E0380930001811148\r
+:1007000012C08CE00E94C8038093000181110BC0CD\r
+:100710000E94C80380930001811105C08FE30E94ED\r
+:10072000C803809300010E94C003809100010895D6\r
+:100730001092B9008AE08093B800089594EA9093EB\r
+:10074000BC009091BC0097FFFCCF9091B900987FBE\r
+:10075000983021F0903111F081E008958093BB0032\r
+:1007600084E88093BC008091BC0087FFFCCF80911F\r
+:10077000B900887F883111F0803471F780E00895E6\r
+:1007800084E98093BC008091BC0084FDFCCF089577\r
+:100790008093BB0084E88093BC008091BC0087FFFD\r
+:1007A000FCCF9091B900987F81E0983209F480E005\r
+:1007B000089584E88093BC008091BC0087FFFCCF43\r
+:1007C0008091BB00089580910001811115C080E4E3\r
+:1007D0000E949E038093000181110CC082E10E945F\r
+:1007E000C80380930001811105C08FEF0E94C803E8\r
+:1007F000809300010E94C00384B1807F84B985B1D9\r
+:10080000807F85B98AB1837F8AB98BB1837F8BB9A9\r
+:100810003E98469808950E944903809300010E94E3\r
+:10082000E30380B38C7080BB81B3836F81BBE4E44E\r
+:10083000F1E0A6E3B1E011921D9281E0E235F80704\r
+:10084000D1F70C943303BF92CF92DF92EF92FF92D5\r
+:100850000F931F93CF93DF9380910001882379F04A\r
+:10086000809135018F5F80933501811108C00E940E\r
+:10087000490380930001811102C00E94DB0206E35C\r
+:1008800011E0C0E0D0E0DD24D39482E0C82EEE2455\r
+:10089000E394F12CC73000F580910001811162C012\r
+:1008A00080E40E949E0380930001811112C082E1C6\r
+:1008B0000E94C8038093000181110BC0C7010C2E58\r
+:1008C00001C0880F0A94EAF780950E94C8038093BC\r
+:1008D00000010E94C00346C0CA30A1F028F4C8300D\r
+:1008E00059F0C93061F005C0CC3089F070F0CD30DE\r
+:1008F00089F0209A289810C0219A29980DC0229A30\r
+:100900002A980AC0239A2B9807C0529A01C0539A7A\r
+:100910005B9802C03E9A4698E0EAEA95F1F78FB1FB\r
+:1009200079995AC092E081708D25892B7C9B02C0F9\r
+:1009300090E001C094E0892B7D9B02C090E001C053\r
+:1009400098E0892B7E9B02C090E001C090E1892B4A\r
+:100950009FB19095991F9927991F9295990F907E15\r
+:10096000892B0FC08091000181114BC080E40E944F\r
+:100970009E0380930001882389F1B12C0E94C0035B\r
+:100980008B2DF8019081981719F08083C092010196\r
+:100990000E94E30321960F5F1F4FCE30D10509F06F\r
+:1009A00079CF80910101882371F1815080930101F9\r
+:1009B000882339F08FE99FE00197F1F700C000002C\r
+:1009C00022C0A4E4B1E0E6E3F1E081918D9391E0EF\r
+:1009D000E434F907D1F717C090E0A5CF83E10E9476\r
+:1009E000C803809300018111C8CF81E40E949E0357\r
+:1009F000809300018111C1CF0E94D903B82EB09419\r
+:100A0000BDCF80E0BECF0E94D90281E0DF91CF91BF\r
+:100A10001F910F91FF90EF90DF90CF90BF900895BE\r
+:100A2000E82FF0E0EC5BFE4F8081089508958B3B4A\r
+:100A3000910578F4883A910540F5853A9105D0F40E\r
+:100A40008430910508F0B1C08130910509F4ADC042\r
+:100A50006BC0803E910508F467C0883E910508F49C\r
+:100A6000A4C09C01205F31092031310508F05CC031\r
+:100A700090650895853A910509F459C0863A910523\r
+:100A800009F458C083E890E40895883A910509F480\r
+:100A900054C0893A910509F453C08A3A910509F482\r
+:100AA00052C08B3A910509F451C08C3A910509F472\r
+:100AB00050C08D3A910509F44FC0803B910509F46F\r
+:100AC0004EC08E3A910509F44DC08F3A910509F454\r
+:100AD0004CC0813B910509F44BC0823B910509F460\r
+:100AE0004AC0833B910509F449C0843B910509F450\r
+:100AF00048C0853B910509F447C0863B910509F440\r
+:100B000046C0873B910509F445C0883B910509F42F\r
+:100B100044C0893B910509F443C08A3B910509F023\r
+:100B200042C08AE296E4089580E090E0089581E86A\r
+:100B300090E4089582E890E4089582EE94E40895A4\r
+:100B400089EE94E408958AEE94E4089585EB94E4A4\r
+:100B5000089586EB94E4089587EB94E408958CEC73\r
+:100B600094E408958DEC94E4089583E895E4089561\r
+:100B70008AE895E4089582E995E4089584E995E486\r
+:100B8000089581E296E4089583E296E4089584E26C\r
+:100B900096E4089585E296E4089586E296E4089541\r
+:100BA00087E296E4089580E094E40895089596E03D\r
+:100BB000799FF001112494E5899FE00DF11D112426\r
+:100BC000E60FF11DEE0FFF1FEC51FF4F8591949141\r
+:100BD0000895880F991F805A9040FC018591949147\r
+:100BE0000895880F991F80529F4FFC018591949121\r
+:100BF000089526E0729FF001112444E5849FE00DE2\r
+:100C0000F11D1124E60FF11DEE0FFF1FEC51FF4FF8\r
+:100C100025913491C9019A9581159F4110F4C9011C\r
+:100C20000895C90190528115904128F4C9019F701F\r
+:100C30000E94F1050895C90190538115904120F457\r
+:100C4000C9019927906C0895211580E5380769F44A\r
+:100C50000E9490139FEF24E34CE0915020404040CD\r
+:100C6000E1F700C000000C94D21A213080E538076B\r
+:100C700031F48091CC0181608093CC010895C90149\r
+:100C800090558115904108F050C0832F99278F709F\r
+:100C9000992781309105D9F4A9014370552702C0E5\r
+:100CA000880F991F4A95E2F79C68A90164E0440FF8\r
+:100CB000551F6A95E1F744275370842B952B73E0F9\r
+:100CC000220F331F7A95E1F7207633271DC082303B\r
+:100CD000910529F4922F8827816F906A08958330B7\r
+:100CE0009105A9F4A9014370552781E090E002C065\r
+:100CF000880F991F4A95E2F79C6843E0220F331F43\r
+:100D00004A95E1F7207E3770822B932B0895049744\r
+:100D1000F1F4A9014370552781E090E002C0880FEB\r
+:100D2000991F4A95E2F79A68E8CFC9019057811553\r
+:100D3000904120F4C9019F7090620895C9019058B4\r
+:100D40008115904120F4C9019F70906A0895203E5A\r
+:100D50003105E0F4203C310558F52133310509F423\r
+:100D600070C048F42932310509F464C02A323105D3\r
+:100D700009F46EC074C029333105F1F02238310511\r
+:100D8000D9F02533310509F44EC069C0233E310541\r
+:100D900089F138F4203E3105C1F0223E3105E1F001\r
+:100DA0005EC0263E310569F1273E3105A9F157C0E5\r
+:100DB000C9010E94E90508958091DF0180FD02C00C\r
+:100DC00081FF4DC080EE90E04BC08091DF0180FF3D\r
+:100DD000F9CF89E390E044C08091DF0182FF0EC02B\r
+:100DE0008091DF0184FF03C080E090E039C083EE92\r
+:100DF00090E036C08091DF0182FFF2CF82EE90E07A\r
+:100E00002FC08091DF0183FF0BC08091DF0184FD43\r
+:100E1000EBCF87EE90E024C08091DF0183FFF5CF18\r
+:100E200086EE90E01DC08091DF0185FF07C089E25A\r
+:100E300090E016C08091DF0185FFF9CF85E390E057\r
+:100E40000FC08091DF0186FF07C08AE290E008C0F2\r
+:100E50008091DF0186FFF9CF81E390E001C0C901F5\r
+:100E60000E941705089508950C943307809162013C\r
+:100E70000895CF93DF9300D01F92CDB7DEB72091B6\r
+:100E8000E501243019F523E029839B838A8320938D\r
+:100E9000E9008FEF9091E800815095FD06C095ED37\r
+:100EA0009A95F1F700008111F5CF8091E80085FF58\r
+:100EB0000DC040E050E063E070E0CE0101960E947A\r
+:100EC000A3098091E8008E778093E8000F900F903F\r
+:100ED0000F90DF91CF910895CF93DF9300D01F92B1\r
+:100EE000CDB7DEB72091E501243021F522E029833A\r
+:100EF0009B838A8383E08093E9008FEF9091E800E1\r
+:100F0000815095FD06C095ED9A95F1F7000081118D\r
+:100F1000F5CF8091E80085FF0DC040E050E063E030\r
+:100F200070E0CE0101960E94A3098091E8008E77BF\r
+:100F30008093E8000F900F900F90DF91CF9108956C\r
+:100F40002091E5012430F1F422E02093E9002FEF15\r
+:100F50003091E800215035FD06C035ED3A95F1F7A6\r
+:100F600000002111F5CF2091E80025FF0BC040E0E3\r
+:100F700050E065E070E00E94A3098091E8008E7760\r
+:100F80008093E8000895CF93DF93EC018091E50111\r
+:100F9000843009F046C090910C019923D9F09091CA\r
+:100FA0000D019923B9F08093E9008FEF9091E8004B\r
+:100FB000815095FD06C095E19A95F1F700008111E9\r
+:100FC000F5CF8091E80085FF2CC040E050E060E163\r
+:100FD00070E017C081E08093E9008FEF9091E80006\r
+:100FE000815095FD06C095ED9A95F1F700008111AD\r
+:100FF000F5CF8091E80085FF14C040E050E068E044\r
+:1010000070E0CE010E94A3098091E8008E77809362\r
+:10101000E80080E1FE01A2E5B1E001900D928A9521\r
+:10102000E1F7DF91CF9108958091E401811109C02A\r
+:101030000E94350B0E94920B8091E20084608093A5\r
+:10104000E20008951092E401089508950C94F820A8\r
+:101050000E94691A0E94FE200E942F0E0C943407F1\r
+:1010600042E061EC81E00E94AF0A42E061EC82E084\r
+:101070000E94AF0A42E061EC83E00E94AF0A42E1C5\r
+:1010800061EC84E00C94AF0A8091E701833009F4AD\r
+:1010900055C030F4813071F0823009F48EC008956B\r
+:1010A0008A3009F47AC08B3009F460C0893009F0C5\r
+:1010B0009CC020C08091E601813A09F096C08091E1\r
+:1010C000E800877F8093E8008091EA019091EB012E\r
+:1010D000892B21F060E080E090E003C060E182E5D0\r
+:1010E00091E070E00E94EC098091E8008B7780939A\r
+:1010F000E80008958091E601813209F076C0809180\r
+:10110000EA019091EB01009719F0039709F06DC087\r
+:101110008091E800877F8093E8008091E80082FD5D\r
+:1011200005C08091E5018111F8CF5FC08091F10089\r
+:10113000809362018091E8008B7753C08091E60133\r
+:10114000813A09F052C08091EA019091EB01892B1C\r
+:1011500009F04BC08091E800877F8093E800809180\r
+:10116000E80080FFFCCF80910C0136C08091E60141\r
+:101170008132D9F58091EA019091EB01892BA9F593\r
+:101180008091E800877F8093E8000E94E40A8091C4\r
+:10119000E80180930C010C9490138091E601813258\r
+:1011A00021F58091E800877F8093E8000E94E40A9F\r
+:1011B0008091E9018093630108958091E601813A6D\r
+:1011C000A1F48091E800877F8093E8008091E80097\r
+:1011D00080FFFCCF809163018093F1008091E80053\r
+:1011E0008E778093E8000C94E40A089584B7877F93\r
+:1011F00084BF88E10FB6F89480936000109260007D\r
+:101200000FBE90E080E80FB6F89480936100909351\r
+:1012100061000FBE0E947E0E0E94350B0E94920B51\r
+:101220008091E20084608093E20078940E940D0E29\r
+:101230000E94800E82E091E00E942A0E0E94E62029\r
+:101240008091E501853069F40E942C1A8091E301B8\r
+:101250008823B1F30E94541A882391F30E948D09C8\r
+:10126000EFCF0E94860EECCF292F33272330310594\r
+:10127000A9F06CF42130310509F442C02230310567\r
+:1012800009F043C08DE690E020E133E042C0213216\r
+:101290003105C9F02232310519F137C09927813063\r
+:1012A000910541F08230910541F0892B71F5ECE018\r
+:1012B000F3E005C0E4EFF2E002C0ECEDF2E084916F\r
+:1012C00090E09F0126C0643000F5E62FF0E0EE0FBD\r
+:1012D000FF1FEE5DFE4F2081318189E090E019C053\r
+:1012E000643098F4E62FF0E0DF01AA0FBB1FA65E82\r
+:1012F000BE4F2D913C91EA5EFE4F808190E009C087\r
+:1013000082E190E02DE733E004C080E090E020E04F\r
+:1013100030E0FA0131832083089580E189BD82E1C4\r
+:1013200089BD09B400FEFDCF8091D8008F7D8093E8\r
+:10133000D8008091E00082608093E0008091E0001E\r
+:1013400081FDFCCF0895CF92DF92EF92FF920F9331\r
+:101350001F93CF93DF937C018B01EA010E94050B61\r
+:10136000811131C0209731F088819981081B190BB8\r
+:10137000E80EF91EC12CD12C0115110519F180912F\r
+:10138000E80085FD14C08091E8008E778093E80026\r
+:10139000209741F0888199818C0D9D1D99838883C8\r
+:1013A00085E011C00E94050B882331F30CC0F701C2\r
+:1013B00081917F018093F10001501109FFEFCF1A55\r
+:1013C000DF0ADACF80E0DF91CF911F910F91FF907C\r
+:1013D000EF90DF90CF9008952091EC013091ED01D6\r
+:1013E0002617370748F06115710539F42091E80098\r
+:1013F0002E772093E80001C0B901FC0120E06115BF\r
+:101400007105B9F18091E501882309F440C0853068\r
+:1014100009F43FC08091E80083FD3DC08091E80061\r
+:1014200082FF06C08091E80082FF26C080E0089518\r
+:101430008091E80080FFE3CF2091F3008091F200DB\r
+:1014400090E0922B6115710551F08830910538F4C8\r
+:1014500021912093F100615071090196F3CF21E0B1\r
+:10146000089709F020E08091E8008E778093E800EB\r
+:10147000C6CF2111C7CFD6CF8091E501882339F09F\r
+:10148000853039F08091E80083FFCCCF04C082E042\r
+:10149000089583E0089581E008952091EC01309152\r
+:1014A000ED012617370748F06115710539F42091D1\r
+:1014B000E8002E772093E80001C0B901FC0120E08C\r
+:1014C00061157105C1F18091E501882309F441C0DE\r
+:1014D000853009F440C08091E80083FD3EC08091D2\r
+:1014E000E80082FF06C08091E80082FF27C080E00C\r
+:1014F00008958091E80080FFE3CF2091F300809170\r
+:10150000F20090E0922B6115710559F08830910539\r
+:1015100040F424912093F1003196615071090196B5\r
+:10152000F2CF21E0089709F020E08091E8008E7763\r
+:101530008093E800C5CF2111C6CFD5CF8091E501BA\r
+:10154000882339F0853039F08091E80083FFCBCFD4\r
+:1015500004C082E0089583E0089581E00895982F03\r
+:10156000973058F59093E900981739F07091EC0096\r
+:101570002091ED005091F00003C0242F762F50E011\r
+:1015800021FF19C03091EB003E7F3093EB0030918A\r
+:10159000ED003D7F3093ED003091EB0031603093F2\r
+:1015A000EB007093EC002093ED005093F00020913D\r
+:1015B000EE0027FF07C09F5FD3CF8F708093E900B5\r
+:1015C00081E0089580E008958091E60187FD05C0DF\r
+:1015D0008091E80080FF0EC012C08091E80082FD7B\r
+:1015E00005C08091E5018111F8CF08958091E80050\r
+:1015F0008B7708C08091E5018111EACF0895809131\r
+:10160000E8008E778093E80008958091E40090913F\r
+:10161000E50045E62091EC0020FF21C02091E80084\r
+:1016200020FD21C02091E501222389F0253089F099\r
+:101630002091EB0025FD0FC02091E4003091E500E2\r
+:101640002817390739F3415041F0C901E3CF82E04F\r
+:10165000089583E0089581E0089584E0089520913D\r
+:10166000E80022FFDFCF80E008950E94A30B0E94D4\r
+:10167000AB0BE0EEF0E0808181608083E8EDF0E08C\r
+:1016800080818F77808319BCA7EDB0E08C918E7F2D\r
+:101690008C9380818F7E80831092E40108950F9354\r
+:1016A0001F93CF93DF930E94A30B0E94AB0BC8ED57\r
+:1016B000D0E088818F77888388818068888388815B\r
+:1016C0008F7D888319BC1092E5011092E101109280\r
+:1016D000E3011092E20100EE10E0F80180818B7FBF\r
+:1016E000808388818160888342E060E080E00E949E\r
+:1016F000AF0AE1EEF0E080818E7F8083E2EEF0E0E1\r
+:10170000808181608083808188608083F80180810E\r
+:101710008E7F8083888180618883DF91CF911F9144\r
+:101720000F910895E8EDF0E080818F7E8083E7EDF2\r
+:10173000F0E080818160808384E082BF81E08093DB\r
+:10174000E4010C944F0BE8EDF0E080818E7F808304\r
+:101750001092E20008951092DA001092E1000895CC\r
+:101760001F920F920FB60F9211242F933F934F9316\r
+:101770005F936F937F938F939F93AF93BF93EF93F9\r
+:10178000FF938091E10082FF0BC08091E20082FF15\r
+:1017900007C08091E1008B7F8093E1000E940C0ED6\r
+:1017A0008091DA0080FF1FC08091D80080FF1BC0AD\r
+:1017B0008091DA008E7F8093DA008091D90080FFDB\r
+:1017C0000DC080E189BD82E189BD09B400FEFDCF75\r
+:1017D00081E08093E5010E94140805C019BC1092B5\r
+:1017E000E5010E9422088091E10080FF19C08091EC\r
+:1017F000E20080FF15C08091E2008E7F8093E200BE\r
+:101800008091E20080618093E2008091D800806244\r
+:101810008093D80019BC85E08093E5010E942608DA\r
+:101820008091E10084FF30C08091E20084FF2CC0F1\r
+:1018300080E189BD82E189BD09B400FEFDCF8091C0\r
+:10184000D8008F7D8093D8008091E1008F7E8093B7\r
+:10185000E1008091E2008F7E8093E2008091E200BF\r
+:1018600081608093E2008091E101882311F084E09F\r
+:1018700007C08091E30087FF02C083E001C081E0E0\r
+:101880008093E5010E9428088091E10083FF29C030\r
+:101890008091E20083FF25C08091E100877F8093E3\r
+:1018A000E10082E08093E5011092E1018091E10086\r
+:1018B0008E7F8093E1008091E2008E7F8093E20032\r
+:1018C0008091E20080618093E20042E060E080E08D\r
+:1018D0000E94AF0A8091F00088608093F0000E941F\r
+:1018E0002508FF91EF91BF91AF919F918F917F91CB\r
+:1018F0006F915F914F913F912F910F900FBE0F907D\r
+:101900001F9018951F920F920FB60F9211242F93CC\r
+:101910003F934F935F936F937F938F939F93AF9377\r
+:10192000BF93CF93EF93FF93C091E900CF70809165\r
+:10193000EC001092E9008091F000877F8093F00026\r
+:1019400078940E94BE0C1092E9008091F0008860AB\r
+:101950008093F000C093E900FF91EF91CF91BF9188\r
+:10196000AF919F918F917F916F915F914F913F9137\r
+:101970002F910F900FBE0F901F9018951F93CF932C\r
+:10198000DF93CDB7DEB7AA970FB6F894DEBF0FBED0\r
+:10199000CDBFE6EEF1E08091F100819321E0EE3ED3\r
+:1019A000F207C9F70E9444088091E80083FF1CC138\r
+:1019B0002091E6013091E701832F90E08A30910574\r
+:1019C00008F012C1FC01EA5AFF4F0C948022203823\r
+:1019D00081F0223809F008C18091EA018F7080936C\r
+:1019E000E9008091EB0085FB882780F91092E900DF\r
+:1019F00006C08091E2019091E30191118260909183\r
+:101A0000E800977F9093E8008093F1001092F10036\r
+:101A1000C5C0822F8D7F09F0E7C0222319F0223044\r
+:101A200061F0E2C08091E801813009F0DDC033301F\r
+:101A300009F080E08093E30128C08091E8018111E2\r
+:101A400024C02091EA012F7009F4CEC02093E90050\r
+:101A50008091EB0080FF19C08091EB00333011F4CE\r
+:101A6000806211C080618093EB0081E090E0022EE3\r
+:101A700001C0880F0A94EAF78093EA001092EA0006\r
+:101A80008091EB0088608093EB001092E9008091D8\r
+:101A9000E800877F86C02111A7C01091E8011F7759\r
+:101AA0008091E3008078812B8093E3008091E800AF\r
+:101AB000877F8093E8000E94E40A8091E80080FF1D\r
+:101AC000FCCF8091E30080688093E300112311F044\r
+:101AD00083E001C082E08093E50186C02058223077\r
+:101AE00008F082C08091E8019091E9018C3D23E0EB\r
+:101AF000920779F583E08A838AE289834FB7F89465\r
+:101B0000DE01139620E03EE051E2E32FF0E0509337\r
+:101B10005700E49120FF03C0E295EF703F5FEF7044\r
+:101B20008E2F90E0EA3010F0C79601C0C0968D93DA\r
+:101B30009D932F5F243149F74FBF8091E800877F45\r
+:101B40008093E8006AE270E0CE0101960E94EC0901\r
+:101B500014C0AE014F5F5F4F6091EA010E943409EB\r
+:101B6000009709F441C02091E800277F2093E80006\r
+:101B7000BC0189819A810E944D0A8091E8008B778F\r
+:101B80008093E80031C0203879F58091E800877FA4\r
+:101B90008093E8008091E1018093F1008091E8005A\r
+:101BA0008E778093E8000E94E40A1EC021111CC0B9\r
+:101BB0009091E8019230C0F48091E800877F809393\r
+:101BC000E8009093E1010E94E40A8091E101811113\r
+:101BD00004C08091E30087FF02C084E001C081E07F\r
+:101BE0008093E5010E9430088091E80083FF0AC0DD\r
+:101BF0008091E800877F8093E8008091EB0080620D\r
+:101C00008093EB00AA960FB6F894DEBF0FBECDBF4F\r
+:101C1000DF91CF911F9108950895CF938091E501B1\r
+:101C20008823B1F08091E9008F709091EC0090FFD3\r
+:101C300002C090E801C090E0C92FC82B1092E900C3\r
+:101C40008091E80083FD0E94BE0CCF70C093E90034\r
+:101C5000CF91089590936901809368010895E09170\r
+:101C60006801F0916901309721F00190F081E02D39\r
+:101C7000099480E00895E0916801F091690130973E\r
+:101C800021F00280F381E02D09940895E09168012C\r
+:101C9000F0916901309721F00480F581E02D0994DD\r
+:101CA000089520916601309167018217930771F0C2\r
+:101CB0009093670180936601E0916801F09169015A\r
+:101CC000309721F00680F781E02D09940895209146\r
+:101CD0006401309165018217930771F0909365015B\r
+:101CE00080936401E0916801F0916901309721F0DF\r
+:101CF0000084F185E02D0994089508950C947D0EDB\r
+:101D00000E946F1A0E940B040C94351BCF92DF9235\r
+:101D1000EF92FF920F931F93CF93DF93CDB7DEB770\r
+:101D20002B970FB6F894DEBF0FBECDBF0E942304E1\r
+:101D30003BE6E32E31E0F32E00E010E0C02E802FD2\r
+:101D40000E941005F701D1907F01D826B1F40F5FF2\r
+:101D50001F4F0E30110591F78FEF89838A831B8205\r
+:101D60000E94781A8160782F9D838C8349815A81E3\r
+:101D70006B818D810E94290F41C09091CC0191FF10\r
+:101D800004C08B870E9416058B8520E030E04D2D26\r
+:101D900050E0922FBA01022E02C0759567950A9401\r
+:101DA000E2F760FF25C02E83CF82EE24E394F12C6E\r
+:101DB00002C0EE0CFF1C9A95E2F790E08E219F2165\r
+:101DC00021E0892B09F420E028870E94781A81609D\r
+:101DD000782F9A8789874E815F8168858A850E94DE\r
+:101DE000290FF801E559FE4F80818E25808306C0BA\r
+:101DF0002F5F3F4F2630310561F6A9CF0E94191E93\r
+:101E000010916A010E942F0E1817A1F00E942F0E48\r
+:101E100080936A012B960FB6F894DEBF0FBECDBF3C\r
+:101E2000DF91CF911F910F91FF90EF90DF90CF90B6\r
+:101E30000C9434072B960FB6F894DEBF0FBECDBFBF\r
+:101E4000DF91CF911F910F91FF90EF90DF90CF9096\r
+:101E50000895CF93DF93CDB7DEB72B970FB6F894E5\r
+:101E6000DEBF0FBECDBF4F83588769877A878B87C8\r
+:101E7000DE01119686E0FD0111928A95E9F785E071\r
+:101E8000FE01379601900D928A95E1F749815A81BA\r
+:101E90006B817C818D819E810E945C162B960FB692\r
+:101EA000F894DEBF0FBECDBFDF91CF910895CF93E1\r
+:101EB000C82F882309F4C1C0823859F40E942F0E1C\r
+:101EC00081FDBBC089E30E94F9180E94B31989E320\r
+:101ED0000CC0833879F40E942F0E80FDAEC083E5DC\r
+:101EE0000E94F9180E94B31983E50E943919CF9115\r
+:101EF0000C94B319843859F40E942F0E82FD9DC0B2\r
+:101F000087E40E94F9180E94B31987E4EECF8CEFA2\r
+:101F10008C0F813A48F48C2F0E944E2081118DC085\r
+:101F20008C2F0E94F918E3CF80E28C0F883048F4A0\r
+:101F3000C77081E001C0880FCA95EAF70E947A193C\r
+:101F4000D6CF8BE58C0F833078F4C53A29F0C63AAA\r
+:101F500031F482E890E005C081E890E002C083E8B7\r
+:101F600090E0CF910C94510E88E58C0F833108F0EE\r
+:101F700064C0C83A39F1C93A41F1CA3A49F1CB3A99\r
+:101F800051F1CC3A59F1CD3A61F1C03B69F1CE3A09\r
+:101F900071F1CF3A79F1C13B81F1C23B89F1C33B89\r
+:101FA00091F1C43B99F1C53BA1F1C63BA9F1C73BF7\r
+:101FB000B1F1C83BB9F1C93BC1F1CA3BC9F58AE2ED\r
+:101FC00092E038C082EE90E035C089EE90E032C0F9\r
+:101FD0008AEE90E02FC085EB90E02CC086EB90E07D\r
+:101FE00029C087EB90E026C08CEC90E023C08DECFC\r
+:101FF00090E020C083E891E01DC08AE891E01AC01B\r
+:1020000082E991E017C084E991E014C081E292E096\r
+:1020100011C083E292E00EC084E292E00BC085E240\r
+:1020200092E008C086E292E005C087E292E002C03A\r
+:1020300080E090E0CF910C94670ECF9108958823B3\r
+:1020400009F44BC0823859F40E942F0E81FF45C01D\r
+:1020500089E30E94F9180E94B31989E30CC0833800\r
+:1020600071F40E942F0E80FF38C083E50E94F9189A\r
+:102070000E94B31983E50E9439190C94B31984386E\r
+:1020800059F40E942F0E82FF28C087E40E94F9189D\r
+:102090000E94B31987E4EFCF9CEF980F913A58F361\r
+:1020A00090E2980F983050F4877091E001C0990F3A\r
+:1020B0008A95EAF7892F0E948019DFCF9BE5980F58\r
+:1020C000933020F480E090E00C94510E885A8331D4\r
+:1020D00020F480E090E00C94670E0895882321F0AE\r
+:1020E0000E947A190C94B3190895882321F00E9454\r
+:1020F00080190C94B3190895CF92DF92EF92FF925A\r
+:102100000F931F93CF93DF93CDB7DEB728970FB60A\r
+:10211000F894DEBF0FBECDBF8C0185E0F801DE0173\r
+:10212000119601900D928A95E1F7F8014081318175\r
+:10213000F280258122952F7083819481892B31F043\r
+:102140003F3F31F481E04F3F19F403C081E001C00B\r
+:1021500080E080FDC4C249833A8389819A812F83BC\r
+:102160000E94B7189E8388870E94B6180E9489171C\r
+:102170004E81E42FE295EF70F0E0E05AFF4F2F819F\r
+:1021800068850C948022842F807F142F1F708823F1\r
+:1021900011F01295107FFF2059F0112309F454C259\r
+:1021A000812F68870E948A190E94B31968854CC2E2\r
+:1021B000862F0E941F10112309F491C2812F0E94C3\r
+:1021C000901928960FB6F894DEBF0FBECDBFDF91F1\r
+:1021D000CF911F910F91FF90EF90DF90CF900C94D3\r
+:1021E000B319342F307F842F8F70303211F08295E5\r
+:1021F000807F662319F0613019F12BC0FF20B1F008\r
+:10220000222309F493C1213009F090C128960FB61A\r
+:10221000F894DEBF0FBECDBFDF91CF911F910F911C\r
+:10222000FF90EF90DF90CF900C949A19222319F031\r
+:10223000213009F454C28E830E949D198E8189C178\r
+:10224000FF2021F0223008F04AC270C1211147C29C\r
+:1022500080C1FF2021F0222309F468C1F5C12223A7\r
+:1022600009F477C105C2242F26952695237030E006\r
+:102270002115310521F021303105C9F030C2FF2090\r
+:1022800021F0862F942F937002C080E090E0289672\r
+:102290000FB6F894DEBF0FBECDBFDF91CF911F9177\r
+:1022A0000F91FF90EF90DF90CF900C94510EFF2094\r
+:1022B00021F0862F942F937002C080E090E0289642\r
+:1022C0000FB6F894DEBF0FBECDBFDF91CF911F9147\r
+:1022D0000F91FF90EF90DF90CF900C94670E862FB8\r
+:1022E000FF2019F00E94211D02C00E94891D28961E\r
+:1022F0000FB6F894DEBF0FBECDBFDF91CF911F9117\r
+:102300000F91FF90EF90DF90CF900C940E1E842FD2\r
+:10231000837009F076C0F110E2C1262F2295269530\r
+:102320002770220F220F862F8F70C82ED12CE12C00\r
+:10233000F12C022E04C0CC0CDD1CEE1CFF1C0A94F8\r
+:10234000D2F764FF10C06FE070E080E090E004C05E\r
+:10235000660F771F881F991F2A95D2F76095709591\r
+:102360008095909503C060E070E0CB01242F269506\r
+:1023700026952370422F50E042305105D1F0433072\r
+:10238000510559F16C297D298E299F29413051052C\r
+:1023900041F128960FB6F894DEBF0FBECDBFDF9196\r
+:1023A000CF911F910F91FF90EF90DF90CF900C9401\r
+:1023B000AE176C297D298E299F2928960FB6F8948F\r
+:1023C000DEBF0FBECDBFDF91CF911F910F91FF9068\r
+:1023D000EF90DF90CF900C94C8170E94AE17C70102\r
+:1023E000B60128960FB6F894DEBF0FBECDBFDF91C1\r
+:1023F000CF911F910F91FF90EF90DF90CF900C94B1\r
+:102400009417FF2019F0842F817001C086958823CE\r
+:1024100009F465C1262F229526952770220F220FD9\r
+:10242000862F8F70C82ED12CE12CF12C022E04C0E7\r
+:10243000CC0CDD1CEE1CFF1C0A94D2F764FF10C00C\r
+:102440006FE070E080E090E004C0660F771F881FA7\r
+:10245000991F2A95D2F7609570958095909503C045\r
+:1024600060E070E0CB01242F269526952370422F43\r
+:1024700050E042305105D1F04330510559F16C29FB\r
+:102480007D298E299F294130510541F128960FB6AB\r
+:10249000F894DEBF0FBECDBFDF91CF911F910F919A\r
+:1024A000FF90EF90DF90CF900C9482186C297D29DB\r
+:1024B0008E299F2928960FB6F894DEBF0FBECDBF98\r
+:1024C000DF91CF911F910F91FF90EF90DF90CF9010\r
+:1024D0000C949C180E948218C701B60128960FB66A\r
+:1024E000F894DEBF0FBECDBFDF91CF911F910F914A\r
+:1024F000FF90EF90DF90CF900C946818603FC9F187\r
+:1025000018F4603E50F49BC0623F09F460C008F4C8\r
+:102510004AC0633F09F46FC092C0162F1F70842F0A\r
+:102520008F71FF2099F00E940118812F28960FB615\r
+:10253000F894DEBF0FBECDBFDF91CF911F910F91F9\r
+:10254000FF90EF90DF90CF900C946E100E942218B5\r
+:10255000812F28960FB6F894DEBF0FBECDBFDF9156\r
+:10256000CF911F910F91FF90EF90DF90CF900C943F\r
+:102570007510FF20A1F02111B2C0842F8F71289611\r
+:102580000FB6F894DEBF0FBECDBFDF91CF911F9184\r
+:102590000F91FF90EF90DF90CF900C94471822306E\r
+:1025A00008F09DC0EACFFF20A1F0842F8F712896FC\r
+:1025B0000FB6F894DEBF0FBECDBFDF91CF911F9154\r
+:1025C0000F91FF90EF90DF90CF900C940118FF20B7\r
+:1025D00061F3842F8F7128960FB6F894DEBF0FBE7B\r
+:1025E000CDBFDF91CF911F910F91FF90EF90DF90C2\r
+:1025F000CF900C942218FF2091F0842F8F71289691\r
+:102600000FB6F894DEBF0FBECDBFDF91CF911F9103\r
+:102610000F91FF90EF90DF90CF900C94EC172896DD\r
+:102620000FB6F894DEBF0FBECDBFDF91CF911F91E3\r
+:102630000F91FF90EF90DF90CF900C94E217FF2066\r
+:10264000A1F0222309F4B1CF862F28960FB6F89473\r
+:10265000DEBF0FBECDBFDF91CF911F910F91FF90D5\r
+:10266000EF90DF90CF900C94570F222309F4B1CF55\r
+:10267000862F28960FB6F894DEBF0FBECDBFDF9130\r
+:10268000CF911F910F91FF90EF90DF90CF900C941E\r
+:102690001F104F70C8010E94AB0228960FB6F89425\r
+:1026A000DEBF0FBECDBFDF91CF911F910F91FF9085\r
+:1026B000EF90DF90CF900C9409174F70C8012896C7\r
+:1026C0000FB6F894DEBF0FBECDBFDF91CF911F9143\r
+:1026D0000F91FF90EF90DF90CF900C94D605289645\r
+:1026E0000FB6F894DEBF0FBECDBFDF91CF911F9123\r
+:1026F0000F91FF90EF90DF90CF9008950E9497196F\r
+:102700000E946C190E94B3190E94BA1E0E940E1EEC\r
+:1027100080E090E00E94510E80E090E00C94670E03\r
+:102720000E9487190C947E130E94B718292F2295B6\r
+:102730002F7030E02C3031054CF42A3031056CF428\r
+:10274000225031092230310590F407C02C30310578\r
+:1027500051F02F30310539F00AC0803E10F0803F33\r
+:1027600031F481E0089593FB882780F9089580E093\r
+:102770000895CF93DF9300D000D01F92CDB7DEB77E\r
+:102780000F900F900F900F900F90DF91CF910895C1\r
+:10279000CF93DF9300D000D000D0CDB7DEB7269620\r
+:1027A0000FB6F894DEBF0FBECDBFDF91CF91089575\r
+:1027B0001F93CF93DF93C091790116E080917A0146\r
+:1027C000C81799F0D0E01C9FF0011D9FF00D112457\r
+:1027D000E558FE4F408151816281738184819581EA\r
+:1027E0000E94C8132196C770E9CFDF91CF911F9146\r
+:1027F00008954091AB015091AC016091AD01709191\r
+:10280000AE018091AF019091B0010C94C813CF93A9\r
+:102810008091B00182958F7009F05FC08091AD0109\r
+:10282000882309F45AC020917901A0917A0160911E\r
+:10283000AB017091AC018091AE019091AF0131E09C\r
+:102840006F3F09F030E0B32FC6E02A1709F445C006\r
+:10285000009721F07F3F21F44B2F03C041E001C0DE\r
+:1028600040E030E040FD35C0C29FF001C39FF00D55\r
+:102870001124E558FE4F418174132BC0408164132D\r
+:1028800028C04281411125C043815481481759070E\r
+:1028900010F441505109481B590B483C5105C8F4EC\r
+:1028A0008091B0018F7080618093B00186E0829F3B\r
+:1028B000F001839FF00D1124E058FE4F80818F704E\r
+:1028C000806180838BEA91E00E947C10CF910C9410\r
+:1028D000D8132F5F3F4F2770B8CFCF910895CF9275\r
+:1028E000DF92EF92FF920F931F93CF93DF93CDB7B9\r
+:1028F000DEB762970FB6F894DEBF0FBECDBF8C0176\r
+:1029000085E0F801DE011D9601900D928A95E1F7B0\r
+:10291000D8014C9111965C91119712966C91129777\r
+:102920001396ED90FC9014977091AB01E091AC017F\r
+:102930002091AE013091AF012115310531F0EF3F0B\r
+:1029400031F481E07F3F19F403C081E001C080E0F1\r
+:10295000B82FB170CB2E80FD6CC1D090AD01DD20C1\r
+:1029600009F4F5C0F091B001E216F30638F0C701A2\r
+:10297000821B930B883C910548F09BC020953095B5\r
+:102980002E0D3F1D283C310508F093C08F2F807F0E\r
+:1029900009F052C0E51314C0741312C0D62E611191\r
+:1029A0000FC0FF70F061F093B0010E94F9138BEA41\r
+:1029B00091E00E947C108091B001F80185836CC188\r
+:1029C000EF2831F05F3F31F481E04F3F19F403C04D\r
+:1029D00081E001C080E080FD03C081E0862701C066\r
+:1029E00080E0F82FF170FF2E80FF1CC080917901EC\r
+:1029F00020917A0136E0821709F428C190E0389FCF\r
+:102A0000F001399FF00D1124E558FE4F71815713E5\r
+:102A100006C07081471303C07281671303C001961B\r
+:102A20008770E9CFD62E662309F436C18091B001B4\r
+:102A300081608093B00153C0E51308C0741306C0D1\r
+:102A4000611104C0D8011596FC93AEC04D875E8716\r
+:102A50008D859E856A8B0E9494136A89882329F14B\r
+:102A6000D62E662311F12091B001822F82958F70AE\r
+:102A700090E002970CF460C08091AB019091AC01A2\r
+:102A800098878F831986FB86EA862C87CE01079666\r
+:102A900051C0E51731F14D875E878D859E856A8B24\r
+:102AA0000E9494136A8981112EC0C8010E947C1073\r
+:102AB000A4C08F2F807F69F77E2DF98AE88A8989E3\r
+:102AC0000E94B9138BEA91E00E947C10EBEAF1E0DE\r
+:102AD00086E0DF011D928A95E9F70E94F913D12C57\r
+:102AE000DBC07413D8CF6111D6CFD8011596FC93F3\r
+:102AF000C8010E947C10EBEAF1E086E0DF011D9244\r
+:102B00008A95E9F7C9C0D62E662379F22091B001E3\r
+:102B1000822F82958F7090E0029774F08091AB01C4\r
+:102B20009091AC019A8389831B82FD82EC822E8373\r
+:102B3000CE0101960E947C1086E0F801ABEAB1E07C\r
+:102B400001900D928A95E1F70E9407146FC0E2167A\r
+:102B5000F30628F0C701821B930B9C0104C020954B\r
+:102B600030952E0D3F1D283C310508F052C0D62E61\r
+:102B7000662309F49ACFE5132CC074132AC0809100\r
+:102B8000B00180FD1DC0982F92959F70C9F0D801AB\r
+:102B900015968C9315979F3039F09F5F9295907F93\r
+:102BA0008F70892B15968C93C8010E947C1086E04B\r
+:102BB000F801ABEAB1E001900D928A95E1F736C0D9\r
+:102BC00086E0F801ABEAB1E001900D928A95E1F759\r
+:102BD00063C04D875E878D859E850E9494138823F0\r
+:102BE00079F086E0F801ABEAB1E001900D928A95A8\r
+:102BF000E1F70E9407140E94F913DD24D3944CC01E\r
+:102C00008091B00181608093B001C8010E947C1066\r
+:102C100043C07E2DF98AE88A89890E94B913EBEABC\r
+:102C2000F1E086E0DF011D928A95E9F70E94F91331\r
+:102C300033C0662309F439CF4D875E878D859E8525\r
+:102C40000E949413882309F430CFCBCF4D875E8741\r
+:102C50008D859E850E94B718292F22952F7030E010\r
+:102C6000223031052CF49F7041F0811106C00CC058\r
+:102C7000243031052CF49F7049F4805E883020F0B8\r
+:102C8000C8010E947C10CF2CDC2C06C0D801159600\r
+:102C90009C91907F91F7F8CF8D2D62960FB6F894A6\r
+:102CA000DEBF0FBECDBFDF91CF911F910F91FF907F\r
+:102CB000EF90DF90CF9008951F93CF93DF93CDB720\r
+:102CC000DEB72C970FB6F894DEBF0FBECDBF4F8393\r
+:102CD000588769877A878B879C87CE0107960E94E1\r
+:102CE0006F148823C1F02F8138858A859B85892BB5\r
+:102CF00031F03F3F11F080E003C02F3FE1F781E06A\r
+:102D0000811147C04F81588569857A858B859C855F\r
+:102D10000E94C8133EC086E0FE013796DE01119680\r
+:102D200001900D928A95E1F7FF81E8854A855B85E0\r
+:102D30004115510531F0EF3F31F481E0FF3F19F4C7\r
+:102D400003C081E001C080E080FD23C020917A01B2\r
+:102D500030E0C9010196877099276091790170E090\r
+:102D600086179707F1F1F983EA835D834C8396E038\r
+:102D7000929FD001939FB00D1124A558BE4FFE0124\r
+:102D8000319601900D929A95E1F780937A010E9415\r
+:102D9000D81316E08091790190917A01891779F121\r
+:102DA000189FC001112485589E4F0E946F148823DC\r
+:102DB00031F1E09179011E9FF0011124E558FE4F99\r
+:102DC0004081518162817381848195810E94C81301\r
+:102DD0008091790190E0019687709927809379011D\r
+:102DE000D9CF0E94901310927A0110927901EBEAE8\r
+:102DF000F1E086E0DF011D928A95E9F7CACF2C96B3\r
+:102E00000FB6F894DEBF0FBECDBFDF91CF911F91FB\r
+:102E10000895EF92FF920F931F93CF93DF93FC01DE\r
+:102E2000009709F46FC0F12CEE24E394EF01219692\r
+:102E30008491843740F4843008F055C0813081F0AB\r
+:102E4000823021F15FC0853709F447C0C0F19CE7AB\r
+:102E5000980F903708F056C08F770E941F1045C01A\r
+:102E60008F010E5F1F4FFE01849190E2980F983002\r
+:102E700050F48770FE2D01C0FF0F8A95EAF78F2F5F\r
+:102E80000E948A1915C00E94570F14C08F010E5F4F\r
+:102E90001F4FFE01849190E2980F983068F487707C\r
+:102EA000FE2D01C0FF0F8A95EAF78F2F0E9490191F\r
+:102EB0000E94B319E80119C00E941F10FBCFCF0177\r
+:102EC0000296FE01C491CC2361F0EFE9FFE0319757\r
+:102ED000F1F700C00000C150F6CFCF010296FE010D\r
+:102EE000F490EC0102C00E94570F8F2D882341F00F\r
+:102EF000EFE9FFE03197F1F700C000008150F6CF15\r
+:102F0000FE0194CFDF91CF911F910F91FF90EF9031\r
+:102F1000089508956093B5017093B6018093B70149\r
+:102F20009093B8010C947E130F931F930091B501F9\r
+:102F30001091B6012091B7013091B801062B172BE3\r
+:102F4000282B392B0093B5011093B6012093B701BC\r
+:102F50003093B8011F910F910C947E130F931F9320\r
+:102F60000091B5011091B6012091B7013091B801DF\r
+:102F700006231723282339230093B5011093B601A4\r
+:102F80002093B7013093B8011F910F910C947E13D9\r
+:102F90000F931F930091B5011091B6012091B701D5\r
+:102FA0003091B80106271727282739270093B50144\r
+:102FB0001093B6012093B7013093B8011F910F9180\r
+:102FC0000C947E131092B1011092B2011092B301D1\r
+:102FD0001092B4010C947E1341E050E060E070E088\r
+:102FE00004C0440F551F661F771F8A95D2F7409380\r
+:102FF000B1015093B2016093B3017093B4010C948A\r
+:103000007E1341E050E060E070E004C0440F551FC3\r
+:10301000661F771F8A95D2F78091B1019091B20116\r
+:10302000A091B301B091B401842B952BA62BB72BA3\r
+:103030008093B1019093B201A093B301B093B40116\r
+:103040000C947E1341E050E060E070E004C0440F57\r
+:10305000551F661F771F8A95D2F74095509560954A\r
+:1030600070958091B1019091B201A091B301B0919E\r
+:10307000B40184239523A623B7238093B1019093B1\r
+:10308000B201A093B301B093B4010C947E1341E05C\r
+:1030900050E060E070E004C0440F551F661F771FCA\r
+:1030A0008A95D2F78091B1019091B201A091B301BC\r
+:1030B000B091B40184279527A627B7278093B10143\r
+:1030C0009093B201A093B301B093B4010C947E131A\r
+:1030D0000F931F930091B1011091B2012091B301A0\r
+:1030E0003091B401062B172B282B392B0093B101FB\r
+:1030F0001093B2012093B3013093B4011F910F914B\r
+:103100000C947E130F931F930091B1011091B201A3\r
+:103110002091B3013091B4010623172328233923CA\r
+:103120000093B1011093B2012093B3013093B40125\r
+:103130001F910F910C947E130F931F930091B10177\r
+:103140001091B2012091B3013091B40106271727E5\r
+:10315000282739270093B1011093B2012093B301BE\r
+:103160003093B4011F910F910C947E130895CF9268\r
+:10317000DF92EF92FF920F931F93CF93DF93EC01B7\r
+:10318000C090B501D090B601E090B701F090B801C1\r
+:103190008091B1019091B201A091B301B091B401BD\r
+:1031A000C82AD92AEA2AFB2A0FE110E0B701A601B2\r
+:1031B000002E04C076956795579547950A94D2F7E7\r
+:1031C00040FF07C0BE01802F0E94F90581309105A4\r
+:1031D00039F40150110950F7BE0180E00E94F90551\r
+:1031E000DF91CF911F910F91FF90EF90DF90CF90E3\r
+:1031F000089590910C019923D9F090910D01992394\r
+:10320000B9F0982F9695969596959F3088F5E09110\r
+:103210000E01F0910F01E90FF11D877021E030E000\r
+:1032200001C0220F8A95EAF78181822B818308955C\r
+:1032300040910E0150910F0120E030E09FEFFA0124\r
+:10324000E20FF31F6281681799F09F3F19F4611133\r
+:1032500001C0922F2F5F3F4F2E30310581F79F3FE6\r
+:1032600039F0FA01E90FF11D97FDFA95828308956F\r
+:10327000089590910C019923E1F090910D0199230B\r
+:10328000C1F0982F9695969596959F3020F5E091F0\r
+:103290000E01F0910F01E90FF11D877021E030E080\r
+:1032A00001C0220F8A95EAF7209581812823218386\r
+:1032B000089540910E0150910F0120E030E0FA0195\r
+:1032C000E20FF31F9281981301C012822F5F3F4FCC\r
+:1032D0002E303105A1F7089581E090E0E0910E01D4\r
+:1032E000F0910F01E80FF91F1082019680319105CE\r
+:1032F000A9F708959091CB01982B9093CB01089555\r
+:1033000080959091CB0198239093CB0108951092D2\r
+:10331000CB0108959091CA01982B9093CA0108950A\r
+:1033200080959091CA0198239093CA0108951092B4\r
+:10333000CA0108958093B90108951092B9010895C2\r
+:1033400040910E0150910F0120E030E080E0FA0141\r
+:10335000E20FF31F918191118F5F2F5F3F4F2F304D\r
+:103360003105A9F70895E0910E01F0910F018091C8\r
+:10337000CB018083E0910E01F0910F01808190914B\r
+:10338000CA01892B80839091B901992361F0E09162\r
+:103390000E01F0910F018081892B80830E94A0197A\r
+:1033A00081111092B90180910E0190910F010C943E\r
+:1033B0003B0ECF92DF92EF92FF920F931F936C011F\r
+:1033C000EE24FF24C114D104E104F10421F46B01C3\r
+:1033D0007C0180E001C080E133272F2D1E2D0D2DB3\r
+:1033E000011511052105310519F0885F6801790182\r
+:1033F00097018601A4E03695279517950795AA951C\r
+:10340000D1F7011511052105310519F08C5F68010F\r
+:10341000790197018601F2E0369527951795079572\r
+:10342000FA95D1F7011511052105310519F08E5FC7\r
+:1034300068017901B701A60176956795579547957B\r
+:10344000452B462B472B09F08F5F1F910F91FF9063\r
+:10345000EF90DF90CF9008958091E501843009F1DD\r
+:103460001092CD0120E488E190E00FB6F894A89581\r
+:10347000809360000FBE2093600083B7817F8460DB\r
+:1034800083BF83B7816083BF7894889583B78E7F2D\r
+:1034900083BF88E10FB6F8948093600010926000BB\r
+:1034A0000FBE089508950895CF930E94521A0E9466\r
+:1034B00023040E94531AC0E08C2F0E941005811132\r
+:1034C00005C0CF5FCE30C1F780E001C081E0CF9171\r
+:1034D00008950E9490130E942F0E0C94340782E0EE\r
+:1034E00084BD93E095BD9AEF97BD80936E000895DB\r
+:1034F0002FB7F8948091CE019091CF01A091D00187\r
+:10350000B091D1012FBF0895CF92DF92EF92FF9239\r
+:103510000F931F932FB7F8944091CE015091CF0194\r
+:103520006091D0017091D1012FBF6A017B01EE241F\r
+:10353000FF248C0120E030E0C016D106E206F3063D\r
+:1035400010F441505109481B590BCA011F910F91AA\r
+:10355000FF90EF90DF90CF9008951F920F920FB6DB\r
+:103560000F9211248F939F93AF93BF938091CE01BD\r
+:103570009091CF01A091D001B091D1010196A11DF0\r
+:10358000B11D8093CE019093CF01A093D001B09351\r
+:10359000D101BF91AF919F918F910F900FBE0F906E\r
+:1035A0001F9018950E94350BF8942FEF87EA91E64B\r
+:1035B000215080409040E1F700C0000087E090EB90\r
+:1035C000DC018093EE019093EF01A093F001B093A2\r
+:1035D000F1012CE088E190E00FB6F894A895809373\r
+:1035E00060000FBE20936000FFCFEF92FF920F9319\r
+:1035F0001F93CF93DF93E82EF12C8F2D0E9410059F\r
+:10360000C0E0D0E0082F10E098010C2E02C03595E4\r
+:1036100027950A94E2F720FD05C02196C630D10512\r
+:1036200099F709C06C2F7F2D80E00E94D705E81222\r
+:10363000F4CF81E005C0F3948EE0F812DECF80E095\r
+:10364000DF91CF911F910F91FF90EF900895CF934D\r
+:10365000C82F8CE20E94F51A882321F08C2FCF917D\r
+:103660000C94F51A80E0CF910895CF930E947A1CB4\r
+:10367000811102C00E94601CC5E6C15049F00E9441\r
+:1036800023048FE39CE90197F1F700C00000F5CF18\r
+:1036900089E20E94271B811111C18AE20E94271B27\r
+:1036A00081110E94601C85E00E94271B81110E94ED\r
+:1036B000D21A0E94851C8093CC0187E00E94271BB0\r
+:1036C000882399F18BE10E94271B882351F0909168\r
+:1036D000CC0191FB882780F921E0822780FB91F9BA\r
+:1036E00022C08EE00E94271B882351F09091CC01CC\r
+:1036F00092FB882780F921E0822780FB92F913C092\r
+:1037000080E10E94271B9091CC01882341F093FB1C\r
+:10371000882780F921E0822780FB93F904C0892F54\r
+:10372000809580FB90F99093CC018091CC010E9410\r
+:10373000891C0E94971C8093DF0180EE0E94271B4A\r
+:10374000882341F08091DF01982F909590FB80F9BC\r
+:103750008093DF0189E30E94271B882359F0909111\r
+:10376000DF0191FB882780F921E0822780FB91F916\r
+:103770009093DF0182EE0E94271B882359F09091DD\r
+:10378000DF0192FB882780F921E0822780FB92F9F4\r
+:103790009093DF0186EE0E94271B882359F09091B9\r
+:1037A000DF0193FB882780F921E0822780FB93F9D2\r
+:1037B0009093DF0183EE0E94271B882359F090919C\r
+:1037C000DF0194FB882780F921E0822780FB94F9B0\r
+:1037D0009093DF0185E30E94271B882359F0909185\r
+:1037E000DF0195FB882780F921E0822780FB95F98E\r
+:1037F0009093DF0181E30E94271B882359F0909169\r
+:10380000DF0196FB882780F921E0822780FB96F96B\r
+:103810009093DF0181E10E94271B882359F090914A\r
+:10382000DF0197FB882780F921E0822780FB97F949\r
+:103830009093DF018091DF010E949B1C8091DF014A\r
+:1038400087FB882780F980930D0187E20E94271B60\r
+:10385000C82F8EE10E94271B8111C2608FE10E9458\r
+:10386000271B8111C46080E20E94271B8111C86060\r
+:1038700081E20E94271B8111C06182E20E94271B06\r
+:103880008111C06283E20E94271B8111C06484E21F\r
+:103890000E94271B882311F0C06802C0CC2329F0A6\r
+:1038A0008C2F0E94921C6C2F03C00E948E1C682FCC\r
+:1038B00070E080E090E0CF910C948A17CF9108954A\r
+:1038C0006DEE7EEF80E090E00E94B62260E082E044\r
+:1038D00090E00E94A82260E083E090E00E94A8228D\r
+:1038E00060E084E090E00E94A82260E085E090E043\r
+:1038F0000C94A82280E090E00E94A22221E08D3E5C\r
+:103900009E4F09F020E0822F089582E090E00C9411\r
+:103910009A22682F82E090E00C94A82283E090E045\r
+:103920000C949A22682F83E090E00C94A82284E003\r
+:1039300090E00C949A22682F84E090E00C94A822E6\r
+:103940008091D40180FF0BC06091130185E0689FD6\r
+:10395000B001112475956795759567952AC081FF0B\r
+:1039600009C06091130185E0689FB001112475952D\r
+:1039700067951FC082FF07C06091130185E0689FB3\r
+:10398000B001112416C04091D5014423C9F06091C3\r
+:103990001201461788F72091130185E0289F9001B6\r
+:1039A0001124429FC001439F900D112470E00E949A\r
+:1039B0006C226038710540F46115710539F002C060\r
+:1039C00065E070E0862F08958FE7089581E00895FF\r
+:1039D0008091D40180FF08C06091110170E075955D\r
+:1039E00067957595679521C081FF06C060911101AB\r
+:1039F00070E07595679519C082FF04C06091110150\r
+:103A000070E010C08091D5018823C1F06091100151\r
+:103A10008617A0F790911101989FC001112470E0C2\r
+:103A20000E946C226038710528F46115710521F03F\r
+:103A3000862F08958FE7089581E0089561E070E092\r
+:103A4000F4CF803F21F40E94A01C819504C0813FE7\r
+:103A500029F40E94A01C8093D8010895823F21F48C\r
+:103A60000E94A01C819504C0833F29F40E94A01CE1\r
+:103A70008093D7010895893F19F40E94E81C05C07E\r
+:103A80008A3F31F40E94E81C81958093D901089502\r
+:103A90008B3F21F40E94E81C819504C08C3F29F4DF\r
+:103AA0000E94E81C8093DA010895843F21F48091FC\r
+:103AB000D601816017C0853F21F48091D6018260D4\r
+:103AC00011C0863F21F48091D60184600BC0873FEE\r
+:103AD00021F48091D601886005C0883F31F480913F\r
+:103AE000D60180618093D60108958D3F21F48091A5\r
+:103AF000D40181600BC08E3F21F48091D40182609B\r
+:103B000005C08F3F29F48091D40184608093D40153\r
+:103B10000895803F39F48091D80187FF6CC01092DE\r
+:103B2000D80169C0813F29F48091D8011816BCF3EF\r
+:103B300062C09091D701823F29F497FF5CC0109238\r
+:103B4000D70159C0833F19F41916CCF354C0893FEB\r
+:103B500041F48091D90118160CF04DC01092D90192\r
+:103B60004AC08A3F29F48091D90187FF44C0F6CF2B\r
+:103B70008B3F39F48091DA0187FF3DC01092DA0162\r
+:103B80003AC08C3F29F48091DA011816BCF333C097\r
+:103B9000843F21F48091D6018E7F17C0853F21F4A8\r
+:103BA0008091D6018D7F11C0863F21F48091D6018E\r
+:103BB0008B7F0BC0873F21F48091D601877F05C0A2\r
+:103BC000883F31F48091D6018F7E8093D60113C057\r
+:103BD0008D3F21F48091D4018E7F0BC08E3F21F464\r
+:103BE0008091D4018D7F05C08F3F29F48091D4014D\r
+:103BF0008B7F8093D4018091D70181110EC0809179\r
+:103C0000D80181110AC08091D901811106C080912B\r
+:103C1000DA01811102C01092D501089586ED91E07C\r
+:103C20000E94460E0E94781A9093D3018093D2018D\r
+:103C300008951F93CF93DF938091D2019091D30188\r
+:103C40000E94841A4091D501442321F0209114014F\r
+:103C500030E006C0209115015AE0259F9001112403\r
+:103C60008217930708F482C08091D7011091D80180\r
+:103C7000D091D901C091DA01811107C0111105C09D\r
+:103C8000D11103C0CC2309F471C04F3F19F04F5F2D\r
+:103C90004093D501181624F40E94A01C8093D701EC\r
+:103CA0008091D70187FF05C00E94A01C8195809359\r
+:103CB000D701111624F40E94A01C8093D801809192\r
+:103CC000D80187FF05C00E94A01C81958093D80170\r
+:103CD0006091D701662339F11091D801112319F1B0\r
+:103CE000772767FD7095872F972F0E947D2123E30B\r
+:103CF00033E343E35FE30E94E1210E944A216093A2\r
+:103D0000D701612F772767FD7095872F972F0E9426\r
+:103D10007D2123E333E343E35FE30E94E1210E943B\r
+:103D20004A216093D8011D1624F40E94E81C809358\r
+:103D3000D9018091D90187FF05C00E94E81C8195B7\r
+:103D40008093D9011C1624F40E94E81C8093DA01A8\r
+:103D50008091DA0187FF05C00E94E81C819580935D\r
+:103D6000DA01DF91CF911F910C940E1EDF91CF915C\r
+:103D70001F910895E6EDF1E085E0DF011D928A953F\r
+:103D8000E9F71092D5011092D4010895833081F1A2\r
+:103D900028F4813059F08230D1F00895853009F44B\r
+:103DA00049C0B8F1863009F456C008952091150134\r
+:103DB000862F90E0820F911D8F3F910520F4620FB6\r
+:103DC0006093150108958FEF809315010895209158\r
+:103DD0001401862F90E0820F911D8F3F910520F4F2\r
+:103DE000620F6093140108958FEF8093140108957A\r
+:103DF00020911301862F90E0820F911D8F3F910536\r
+:103E000020F4620F6093130108958FEF80931301E4\r
+:103E1000089520911201862F90E0820F911D8F3F0F\r
+:103E2000910520F4620F6093120108958FEF809343\r
+:103E30001201089520911101862F90E0820F911DAB\r
+:103E40008F3F910520F4620F6093110108958FEF69\r
+:103E500080931101089520911001862F90E0820F28\r
+:103E6000911D8F3F910520F4620F6093100108951A\r
+:103E70008FEF809310010895833011F128F4813081\r
+:103E800049F0823091F00895853081F120F186303B\r
+:103E9000C1F1089580911501681720F4861B809365\r
+:103EA0001501089510921501089580911401681765\r
+:103EB00020F4861B80931401089510921401089534\r
+:103EC00080911301681720F4861B809313010895D5\r
+:103ED00010921301089580911201681720F4861B37\r
+:103EE000809312010895109212010895809111019A\r
+:103EF000681720F4861B8093110108951092110118\r
+:103F0000089580911001681720F4861B809310019A\r
+:103F100008951092100108958D3109F442C020F5E2\r
+:103F20008E3009F479C070F4873009F45EC020F453\r
+:103F3000863009F442C033C08830D1F18B3009F4A7\r
+:103F4000A7C02DC0863109F4A3C038F4803109F42C\r
+:103F50006DC0813109F47BC022C0893109F498C059\r
+:103F60008B3109F44FC01BC0853309F479C048F484\r
+:103F7000873209F475C008F478C0893209F470C03A\r
+:103F80000EC0833438F48A3308F071C0883309F4E2\r
+:103F90007FC005C0833409F463C08834C1F080E079\r
+:103FA00008950E9404210E942F0E0E94340770C0C1\r
+:103FB0000E94851C0E94971C6BC08091CC01817F60\r
+:103FC0008E7F8093CC0181E08093DC0108950E9474\r
+:103FD00090132FEF83ED90E3215080409040E1F764\r
+:103FE00000C000000E94D21A53C09091CC01892FCA\r
+:103FF000817090FF03C0917F9E7F26C09160909357\r
+:10400000CC0146C09091CC0191FB882780F921E03A\r
+:10401000822780FB91F913C09091CC0192FB8827F5\r
+:1040200080F921E0822780FB92F909C09091CC01B0\r
+:1040300093FB882780F921E0822780FB93F99093F6\r
+:10404000CC01882329F191609093CC0108950E94BE\r
+:10405000901380910D0191E0892780930D0118C084\r
+:1040600061E070E080E090E00FC023EE01C027EC3B\r
+:10407000280F61E070E080E090E004C0660F771FD9\r
+:10408000881F991F2A95D2F70E948A170E949013C1\r
+:1040900081E0089580E0089580E00895CF93C82FCF\r
+:1040A0008091DC01813079F018F08230D1F184C048\r
+:1040B000A0910E01B0910F018C91813169F0823293\r
+:1040C00009F07CC009C0A0910E01B0910F018C9144\r
+:1040D000813111F0823249F48C2F0E944A208111E3\r
+:1040E0001DC08C2F0E948C1F1AC08C2F0E944C2048\r
+:1040F000811114C0C43179F048F4CB3079F0C0316B\r
+:1041000009F060C082E08093DC0108C0C93219F078\r
+:10411000C83321F057C01092DC0154C081E0817097\r
+:1041200053C0C93289F118F5C43171F1A8F4C73010\r
+:1041300009F046C08AE08093150194E19093140140\r
+:1041400093E0909313018093120188E08093110112\r
+:1041500088E28093100134C0CE51C63088F5EC2F30\r
+:10416000F0E0E65DFE4F80818093DB0129C0CE3414\r
+:10417000E9F020F4CB3421F56AE013C0C13579F0C1\r
+:10418000C235F1F461E00DC08091DB01882319F0A4\r
+:104190001092DB0115C081E08093DC0115C061E065\r
+:1041A00006C08091DB010E94C61E0AC06AE08091B1\r
+:1041B000DB010E943C1F04C01092DC0180E004C0BF\r
+:1041C00081E002C080E0ABCFCF910895E1E8F0E05C\r
+:1041D0008081886080838081816080838FB7F8943C\r
+:1041E00093E09093890090ED909388008FBF08959D\r
+:1041F000EFE6F0E08081826080830895EFE6F0E0F2\r
+:1042000080818D7F80830895EFE6F0E0808192E0E9\r
+:104210008927808308951F920F920FB60F92112461\r
+:104220002F933F934F935F936F937F938F939F93BE\r
+:10423000AF93BF93EF93FF938091DD019091DE01E7\r
+:1042400001969093DE018093DD01811103C082E02D\r
+:104250000E943407E091DE01E695E695F0E0E6572E\r
+:10426000FB4FE4918091DD018E1303C080E00E943A\r
+:104270003407FF91EF91BF91AF919F918F917F9103\r
+:104280006F915F914F913F912F910F900FBE0F90C3\r
+:104290001F90189504D06894B1118DC0089570D006\r
+:1042A00088F09F5790F0B92F9927B751A0F0D1F01F\r
+:1042B000660F771F881F991F1AF0BA95C9F712C0A9\r
+:1042C000B13081F077D0B1E0089574C0672F782FB6\r
+:1042D0008827B85F39F0B93FCCF386957795679515\r
+:1042E000B395D9F73EF490958095709561957F4F81\r
+:1042F0008F4F9F4F0895E89409C097FB3EF4909527\r
+:104300008095709561957F4F8F4F9F4F9923A9F0AE\r
+:10431000F92F96E9BB279395F6958795779567953D\r
+:10432000B795F111F8CFFAF4BB0F11F460FF1BC081\r
+:104330006F5F7F4F8F4F9F4F16C0882311F096E914\r
+:1043400011C0772321F09EE8872F762F05C06623C2\r
+:1043500071F096E8862F70E060E02AF09A95660F7B\r
+:10436000771F881FDAF7880F9695879597F9089534\r
+:1043700057FD9058440F551F59F05F3F71F0479516\r
+:10438000880F97FB991F61F09F3F79F087950895FB\r
+:10439000121613061406551FF2CF4695F1DF08C01A\r
+:1043A000161617061806991FF1CF86957105610537\r
+:1043B00008940895E894BB2766277727CB0197F9DF\r
+:1043C00008950BD078C069D028F06ED018F09523EE\r
+:1043D00009F05AC05FC01124EECFCADFA0F3959F49\r
+:1043E000D1F3950F50E0551F629FF001729FBB27DC\r
+:1043F000F00DB11D639FAA27F00DB11DAA1F649F88\r
+:104400006627B00DA11D661F829F2227B00DA11D3A\r
+:10441000621F739FB00DA11D621F839FA00D611DC0\r
+:10442000221F749F3327A00D611D231F849F600DE1\r
+:10443000211D822F762F6A2F11249F5750408AF01A\r
+:10444000E1F088234AF0EE0FFF1FBB1F661F771FA6\r
+:10445000881F91505040A9F79E3F510570F014C03D\r
+:10446000AACF5F3FECF3983EDCF38695779567958E\r
+:10447000B795F795E7959F5FC1F7FE2B880F911DC4\r
+:104480009695879597F9089597F99F6780E870E06A\r
+:1044900060E008959FEF80EC089500240A941616BA\r
+:1044A000170618060906089500240A941216130622\r
+:1044B000140605060895092E0394000C11F48823B0\r
+:1044C00052F0BB0F40F4BF2B11F460FF04C06F5FCC\r
+:1044D0007F4F8F4F9F4F089597FB072E16F4009440\r
+:1044E00007D077FD09D00E94862207FC05D03EF454\r
+:1044F000909581959F4F0895709561957F4F089590\r
+:10450000EE0FFF1F0590F491E02D0994AA1BBB1B31\r
+:1045100051E107C0AA1FBB1FA617B70710F0A61BC3\r
+:10452000B70B881F991F5A95A9F780959095BC01E4\r
+:10453000CD010895F999FECF92BD81BDF89A9927D2\r
+:1045400080B50895A8E1B0E042E050E00C94BD22AF\r
+:10455000262FF999FECF1FBA92BD81BD20BD0FB69F\r
+:10456000F894FA9AF99A0FBE019608950E94A8222B\r
+:10457000272F0C94A922DC01CB01FC01F999FECF75\r
+:1045800006C0F2BDE1BDF89A319600B40D924150DB\r
+:0A4590005040B8F70895F894FFCFEB\r
+:10459A0020023607C307A0076C0739070101BA01D1\r
+:1045AA0028080A03140A3F4D36394B04FE03C80390\r
+:1045BA008F0322033B0354036D0301020304050620\r
+:0445CA0007080900D5\r
 :00000001FF\r
diff --git a/keyboard/ergodox_ez/keymaps/ordinary/ordinary.png b/keyboard/ergodox_ez/keymaps/ordinary/ordinary.png
deleted file mode 100644 (file)
index c83f972..0000000
Binary files a/keyboard/ergodox_ez/keymaps/ordinary/ordinary.png and /dev/null differ
index 033e8ef4d5f4d486879da62ec1554556e189a5a6..6534f481a14275dff4d3ff59229af043502e72f6 100644 (file)
@@ -1,5 +1,63 @@
-# The Ordinary Layout. for  users of common keyboards
+# The Ordinary Layout, a familiar and powerful layout #
 
-You can read more about the reasoning behind this layout over at [Nicholas's blog](http://nicholas.rinard.us/2016/03/ergodox-ez-layout.html). The idea is to make a layout that's as familiar as possible for users of "regular" keyboards.
+The Ordinary Layout is intended to be unremarkably mundane and remarkably useful. This layout maintains most key positions from common QWERTY keyboards, and it features enhanced Symbol and Media layers compared to the default Ergodox EZ layout.
 
-![Ordinary layout](ordinary.png)
+The Ordinary Layout is supposed to look mostly like a normal keyboard, except in the ways that the Ergodox key arrangement is unique. The thumbs are responsible for space, enter, plus both forward and backward delete; with only a couple exceptions, all other keys are in the same place they are found on traditional keyboards.
+
+Nicholas Keene
+ordinarylayout@nicholaskeene.com
+no rights reserved, use for any purposes, credit me if you are a nice person
+
+## The Base Layout ##
+
+* The yellow keys are text navigation and manipulation
+* The dark blue keys are shift keys: case shift (traditional shift), symbol shift, and media shift
+* The light blue keys are modifiers: traditional Control, Option, and C        ommand keys, plus Hyper and Meh
+* The two green keys, tab and tilde, are in the typical places to ease use of the Application Switcher
+* The red keys is Escape, one of the few buttons which is in an atypical position
+
+![Ordinary base layout](ordinary-base.png)
+
+This layout puts the modifier keys along the bottom of the keyboard where they are on most layouts. They are in the regular order, with the addition of Hyper and Meh keys. The shift key (case shift) is in the prevalent location. The primo slots usually wasted on Caps Lock and Enter are instead used for the Symbol Shift key which promotes use of the Symbols layer. On the right side of the layout, the Symbol and Media shift keys also double as character keys -- quote and backslash, respectively -- so that touch typists can continue to find those punctuation marks in the right place.
+
+Other than the yellow keys, the only buttons which move to new locations are the Brackets and Dash and Escape. Most touch typists dont touch-type brackets or dash anyway, so only Escape really requires retraining of muscle memory.
+
+The four big yellow keys are arranged differently than in the default Ergodox EZ layout. The Ordinary Layout here copies the design of the old Fingerworks TouchStream keyboard, but also reflects the natural presumptions of the author -- me!; I type the space character with my right hand, and to me it makes sense for the two delete keys to be next to one another.
+
+The Forward Tab and Backward Tab keys are there mostly because I ended up with two extra buttons and needed something to do with them. My muscle memory from using the Truly Ergonomic Keyboard makes me look for the Tab key with my right index finger, so it is handy to have this redundant Tab, and the idea with the Backward Tab key is that it becomes easy to navigate text fields in forms, or to indent/unindent code.
+
+## The Symbols Layout ##
+
+* The periwinkle keys are the eponymous symbols
+* The gray keys are F-Keys
+* The green keys are a proper number pad
+* The red Escape key is found in the "right" location on this layer
+* The yellow keys are the *reverse* of the yellow keys on the base layer
+* The dark blue Media key means that the Media layer is accessible with the left hand
+
+![Ordinary symbol layout](ordinary-symbol.png)
+
+The Ergodox EZ ships with the "Coder Layer" which I like to call the Symbols layer. There are some significant improvements in The Ordinary Layout over the default layout.
+
+The symbol keys are mostly the same as on the default layout, which did a good job in this regard, but with a few enhancements:
+* Angle brackets on this layer mean that curly, square, and angle brackets are all available on different layers of the same two buttons. Also, they mean that all kinds of brackets, including parentheses, are available on both the Base and Symbols layers.
+* The slash, backslash, and pipe characters are grouped together as a memory aid.
+* The & and | symbols are juxtaposed as a memory aid
+
+The number pad area here, in green, includes all four arithmetic operations in the same order found on most number pads. This layout also has an Enter key, and importantly the key codes emitted by this number pad are *number pad specific key codes*, not regular keyboard key codes. Some software distinguishes keypad codes so users now have access to a fully realized number pad when using The Ordinary Layout.
+
+The Escape key's true home is in the top left corner of the keyboard, so on this layer it can be found there. And on the Symbols layer, the Tab key switches to become a Media key, so press Symbols then Media to access the Media layer using the left hand.
+
+Finally, consider the yellow text-nav keys. In the Symbols layer, these are *reversed* from the base layer, with most keys mirrored, but the Delete keys shifted to maintain the directional significance of their arrangement. This is powerful! Often I find myself using the mouse with my right hand, and the left hand needs to press Enter. Instead of reaching the left hand over to the right side of the keyboard, now I simply tap Symbols to reverse the yellow keys, and Enter is right where it should be.
+
+## The Media Layout ##
+
+* The light turquoise keys move the mouse or the text cursor
+* The dark turquoise keys scroll
+* The light purple keys signal Web and Audio applications
+* The dark purple keys signal the operating system
+* The red Escape key is, again, found in the "right" location
+
+![Ordinary media layout](ordinary-media.png)
+
+This layer was inspired by the Media layer on the Ergodox EZ but takes it farther. The Fingerworks TouchStream had a very useful feature for controlling the text cursor easily and this layer does something similar. The left hand can move the mouse, the right hand moves the text cursor, in all four directions, in small or large increments. This greatly enhances navigation in text documents.
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
diff --git a/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx-hjkl/keymap.c b/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx-hjkl/keymap.c
new file mode 100644 (file)
index 0000000..7c9f673
--- /dev/null
@@ -0,0 +1,134 @@
+#include "ergodox_ez.h"
+#include "debug.h"
+#include "action_layer.h"
+
+#define BASE 0
+#define SYMB 1
+#define PLVR 2
+#define ARRW 3
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+  [BASE] = KEYMAP(
+    KC_GRV,        KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_F14,
+    KC_TAB,        KC_Q,    KC_W,    KC_D,    KC_F,    KC_K,    TG(PLVR),
+    CTL_T(KC_ESC), KC_A,    KC_S,    KC_E,    KC_T,    KC_G,
+    KC_LSFT,       KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_LBRC,
+    KC_F1,         KC_F2,   KC_F3,   KC_LALT, KC_LGUI,
+    /*-*/          /*-*/    /*-*/    /*-*/    /*-*/    KC_VOLD, KC_MUTE,
+    /*-*/          /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_VOLU,
+    /*-*/          /*-*/    /*-*/    /*-*/    /*-*/    KC_BSPC, CTL_T(KC_ESC), KC_FN1,
+    //
+    /*-*/          KC_F15,  KC_6,    KC_7,    KC_8,    KC_9,    KC_0,          KC_EQL,
+    /*-*/          KC_BSLS, KC_J,    KC_U,    KC_R,    KC_L,    KC_SCLN,       KC_MINS,
+    /*-*/          /*-*/    KC_Y,    KC_N,    KC_I,    KC_O,    KC_H,          KC_ENT,
+    /*-*/          KC_RBRC, KC_P,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH,       KC_RSFT,
+    /*-*/          /*-*/    /*-*/    KC_RGUI, KC_RALT, KC_F4,   KC_F5,         KC_F6,
+    KC_MPLY,       KC_MNXT,
+    KC_MPRV,
+    KC_FN3,        KC_QUOT, KC_SPC
+  ),
+  [SYMB] = KEYMAP(
+    KC_TRNS,       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+    KC_TRNS,       KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_TRNS,
+    KC_TRNS,       KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC,
+    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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,       KC_TRNS,
+    /*-*/          KC_TRNS, KC_6,    KC_7,    KC_8,    KC_9,    KC_0,          KC_TRNS,
+    /*-*/          /*-*/    KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN,       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
+  ),
+  [PLVR] = KEYMAP(
+    KC_NO,         KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_TRNS,
+    KC_NO,         KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_TRNS,
+    KC_NO,         KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,
+    KC_NO,         KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_NO,
+    KC_TRNS,       KC_TRNS, KC_TRNS, KC_NO,   KC_NO,
+    /*-*/          /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS,
+    /*-*/          /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS,
+    /*-*/          /*-*/    /*-*/    /*-*/    KC_C,    KC_V,    KC_NO,
+    //
+    /*-*/          KC_TRNS, KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,         KC_NO,
+    /*-*/          KC_NO,   KC_6,    KC_7,    KC_8,    KC_9,    KC_0,          KC_NO,
+    /*-*/          /*-*/    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,          KC_LBRC,
+    /*-*/          KC_NO,   KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN,       KC_QUOT,
+    /*-*/          /*-*/    /*-*/    KC_NO,   KC_NO,   KC_NO,   KC_NO,         KC_NO,
+    KC_TRNS,       KC_TRNS,
+    KC_TRNS,
+    KC_NO,         KC_N,    KC_M
+  ),
+  [ARRW] = 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_MS_L, KC_MS_U, KC_MS_D, KC_MS_R,
+    KC_TRNS,       KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2, 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,       KC_TRNS,
+    /*-*/          /*-*/    KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT, 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
+  ),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+  [SYMB] = ACTION_LAYER_TAP_TOGGLE(SYMB), // FN1 - Momentary Symbols Layer
+  [PLVR] = ACTION_LAYER_TAP_TOGGLE(PLVR), // FN2 - Momentary Plover Layer
+  [ARRW] = ACTION_LAYER_TAP_TOGGLE(ARRW), // FN3 - Momentary Arrows Layer
+};
+
+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) {
+    case SYMB:
+      ergodox_right_led_1_on();
+      break;
+    case PLVR:
+      ergodox_right_led_2_on();
+      break;
+    case ARRW:
+      ergodox_right_led_3_on();
+      break;
+    default:
+      break;
+  }
+};
diff --git a/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx-hjkl/readme.md b/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx-hjkl/readme.md
new file mode 100644 (file)
index 0000000..4188d2b
--- /dev/null
@@ -0,0 +1,50 @@
+# Roman's Layout
+
+There are four layers:
+
+- **BASE** is [Norman layout](https://normanlayout.info/).
+- **SYMB** for numbers and symbols.
+- **PLVR** is optimized for [Plover](http://www.openstenoproject.org).
+- **ARRW** for navigation (same fingers for arrows as HJKL on QWERTY).
+
+Looking for IJKL arrows? [Here we
+go](../romanzolotarev-norman-plover-osx/).
+
+[![keyboard-layout](romanzolotarev-norman-plover-osx-hjkl.png)](rttp://www.keyboard-layout-editor.com/#/gists/56ffedceb0668dda47c993e7271563e0)
+
+## Switching
+
+- Tap `SYMB` to toggle **SYMB**.
+- Tap `ARRW` to toggle **ARRW**.
+- Hold `SYMB` (or `ARRW`) to activate **SYMB** (or **ARRW**) while holding.
+- Tap `PLVR` to toggle **PLVR**.
+
+## LEDs
+
+- Red: SYMB is on.
+- Green: PLVR is on.
+- Blue: ARRW is on.
+
+## Functional Keys
+
+- Tap `F1` to mute microphone via [Shush](http://mizage.com/shush/).
+- Tap `F2` to copy screenshot to the clipboard.
+- Hold `SHIFT` and tap `F2` to save screenshot as a file.
+- Tap `F3`, `F4`, `F5`, `F6` to resize a window via [Divvy](http://mizage.com/divvy/).
+- Tap `F14`, `F15` to adjust display brightness.
+
+**IMPORTANT**: If you have another keyboard connected via Bluetooth, then
+`F14` and `F15` will not work. Turn off that Bluetooth keyboard. Re-plug
+you ErgoDox. Enjoy!
+
+## CTRL/ESC
+
+Both of those keys are frequently used in Vim.
+
+- Tap `CTRL/ESC` to send `ESC`.
+- Hold `CTRL/ESC` to use as `CTRL`.
+
+## Activate N-rollover
+
+- While in **BASE** hold left `SHIFT` and right `SHIRT` and then tap `N`.
+- Then you can activate **PLVR** and use ErgoDox EZ for steno.
diff --git a/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx-hjkl/romanzolotarev-norman-plover-osx-hjkl.hex b/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx-hjkl/romanzolotarev-norman-plover-osx-hjkl.hex
new file mode 100644 (file)
index 0000000..c341ba2
--- /dev/null
@@ -0,0 +1,1139 @@
+:100000000C94BB020C94FF020C94FF020C94FF02B0\r
+:100010000C94FF020C94FF020C94FF020C94FF025C\r
+:100020000C94FF020C94FF020C94090C0C94DB0C52\r
+:100030000C94FF020C94FF020C94FF020C94FF023C\r
+:100040000C94FF020C94A9210C94FF020C94FF0263\r
+:100050000C94FF020C94341B0C94FF020C94FF02CE\r
+:100060000C94FF020C94FF020C94FF020C94FF020C\r
+:100070000C94FF020C94FF020C94FF020C94FF02FC\r
+:100080000C94FF020C94FF020C94FF020C94FF02EC\r
+:100090000C94FF020C94FF020C94FF020C94FF02DC\r
+:1000A0000C94FF020C94FF020C94FF02480D6A0DA1\r
+:1000B000580E6A0D580EAF0DD20D580E270E3A0E7F\r
+:1000C0002611261163116311A611E411FD13FD130E\r
+:1000D000FD11FD13FE12FE12D113FD13FD13E813E3\r
+:1000E0000000F0A1F0A2F0A335002B002971E1007F\r
+:1000F0003A0000001E00140004001D003B00C10077\r
+:100100001F001A0016001B003C0029712000070088\r
+:1001100008000600E2002A0021000900170019006B\r
+:10012000E300A90022000E000A0005000000AA005A\r
+:100130006900025400002F000000A8006A0031008E\r
+:10014000000030000000AE0023000D001C00130072\r
+:100150000000AB002400180011001000E700AC0004\r
+:10016000250015000C003600E6002C0026000F00CC\r
+:10017000120037003D003400270033000B00380028\r
+:100180003E00C3002E002D002800E5003F000000C7\r
+:1001900001000100010001000100000001001E003B\r
+:1001A0001E0201000100010001001F001F020100EA\r
+:1001B00001000100010020002002010001000100F7\r
+:1001C00001002100210201000100010001002200C4\r
+:1001D00022020100000001000100010000000100F6\r
+:1001E000000001000100010000000100000001000A\r
+:1001F000010023002302010000000100010024008F\r
+:100200002402010001000100010025002502010077\r
+:10021000010001000100260026020100010001008A\r
+:100220000100270027020100010001000100010078\r
+:1002300001000100010000000000000000000000BB\r
+:100240000100000000001E00140004000100000076\r
+:1002500000001F001A001600010019000000200015\r
+:10026000080007000000060000002100150009003A\r
+:10027000000001000000220017000A000000010039\r
+:10028000010001000000000000000100010000006A\r
+:100290000000000000000100000023001C000B0013\r
+:1002A000000001000000240018000D000000010003\r
+:1002B000000025000C000E000000100000002600C9\r
+:1002C00012000F000000110000002700130033008F\r
+:1002D00000000000000000002F00340000000000BB\r
+:1002E0000100010001000100010000000100010007\r
+:1002F000010001000100010001000100F200010005\r
+:100300000100010001000100F000010001000100F6\r
+:1003100001000100F100F4000100010001000100F2\r
+:10032000F300F500000001000100010000000100E1\r
+:1003300000000100010001000000010000000100B8\r
+:100340000100010050000100000001000100010057\r
+:1003500051000100010001000100010052000100F4\r
+:1003600001000100010001004F0001000100010037\r
+:100370000100010001000100010001000100010075\r
+:100380000100010001000000160345007200670033\r
+:100390006F0044006F007800200045005A00000004\r
+:1003A00016034500720067006F0044006F0078007C\r
+:1003B000200045005A0000000403090409026D00F2\r
+:1003C000040100A0FA090400000103010100092151\r
+:1003D00011010001223F000705810308000A0904FA\r
+:1003E00001000103010200092111010001224D0059\r
+:1003F0000705820308000A09040200010300000047\r
+:100400000921110100012236000705830308000AB3\r
+:100410000904030001030000000921110100012269\r
+:1004200039000705840310000112011001000000CB\r
+:1004300008EDFE071301000102000105010906A1F4\r
+:1004400001050719E029E7150025019508750181C7\r
+:100450000205081901290595057501910295017597\r
+:100460000391010507190029771500250195787575\r
+:10047000018102C005010980A10185021601002643\r
+:10048000B7001A01002AB700751095018100C00558\r
+:100490000C0901A1018503160100269C021A010026\r
+:1004A0002A9C02751095018100C005010902A10175\r
+:1004B0000901A10005091901290515002501950566\r
+:1004C000750181029501750381010501093009312A\r
+:1004D0001581257F95027508810609381581257FCC\r
+:1004E000950175088106050C0A38021581257F954E\r
+:1004F0000175088106C0C005010906A1010507199B\r
+:10050000E029E7150025019508750181029501751F\r
+:1005100008810105081901290595057501910295C4\r
+:1005200001750391010507190029FF150025FF95A5\r
+:100530000675088100C000000000000000000000F7\r
+:1005400000010204060A0F17202C3A4A5D71879DAC\r
+:10055000B3C7DAE9F5FCFFFCF5E9DAC7B39D8771AB\r
+:100560005D4A3A2C20170F0A060402010000000021\r
+:1005700000000000000011241FBECFEFDAE0DEBF54\r
+:10058000CDBF04B603FE24C08091EF019091F0012D\r
+:10059000A091F101B091F2018730904BA740B04B90\r
+:1005A000B9F41092EF011092F0011092F101109243\r
+:1005B000F20114BE84B7877F84BF88E10FB6F89438\r
+:1005C00080936000109260000FBEE0E0FFE30995A9\r
+:1005D00011E0A0E0B1E0E6EDF6E402C005900D9276\r
+:1005E000A433B107D9F711E0A4E3B1E001C01D9233\r
+:1005F000AF3EB107E1F70E944D090C9469230C94BA\r
+:10060000000061110BC0FC018281882321F085EE7E\r
+:100610000E94BA0F03C085EE0E94821080E090E035\r
+:10062000089508956091B1017091B2018091B30174\r
+:100630009091B4010E94601A56985E9825982D9862\r
+:1006400026982E9827982F98823039F0833041F0E1\r
+:10065000813041F4259A2D9A0895269A2E9A08956C\r
+:10066000279A2F9A08950C94120356985E9825980D\r
+:100670002D9826982E9827982F988FEF90E090939A\r
+:1006800089008093880090938B0080938A009093D8\r
+:100690008D0080938C00259A2D9A2FEF80E792E0B1\r
+:1006A000215080409040E1F700C00000269A2E9A29\r
+:1006B0002FEF80E792E0215080409040E1F700C0AA\r
+:1006C0000000279A2F9A2FEF80E792E02150804078\r
+:1006D0009040E1F700C0000025982D982FEF80E7AB\r
+:1006E00092E0215080409040E1F700C00000269841\r
+:1006F0002E982FEF80E792E0215080409040E1F764\r
+:1007000000C0000027982F9856985E9825982D983D\r
+:1007100026982E9827982F98089589EA809380002C\r
+:1007200089E08093810024982C983F988AB18F7437\r
+:100730008AB96E98479A8BB1806B8BB9769A0E9472\r
+:1007400035030C94110380E2809300018091340101\r
+:1007500081110EC00E94F20381E0809334012FEFDB\r
+:1007600083ED90E3215080409040E1F700C000000D\r
+:1007700080E40E94F8038093000181112EC00E9442\r
+:10078000220480930001811128C00E9422048093DA\r
+:100790000001811122C08FE30E9422048093000196\r
+:1007A00081111BC00E941A0480E40E94F803809308\r
+:1007B0000001811112C08CE00E942204809300018C\r
+:1007C00081110BC00E94220480930001811105C099\r
+:1007D0008FE30E942204809300010E941A048091FA\r
+:1007E000000108951092B9008AE08093B80008953E\r
+:1007F00094EA9093BC009091BC0097FFFCCF90913D\r
+:10080000B900987F983021F0903111F081E008957F\r
+:100810008093BB0084E88093BC008091BC0087FF7C\r
+:10082000FCCF8091B900887F883111F0803471F756\r
+:1008300080E0089584E98093BC008091BC0084FD31\r
+:10084000FCCF08958093BB0084E88093BC00809126\r
+:10085000BC0087FFFCCF9091B900987F81E098326F\r
+:1008600009F480E0089584E88093BC008091BC0086\r
+:1008700087FFFCCF8091BB0008958091000181111A\r
+:1008800015C080E40E94F8038093000181110CC020\r
+:1008900082E10E94220480930001811105C08FEF44\r
+:1008A0000E942204809300010E941A0484B1807F78\r
+:1008B00084B985B1807F85B98AB1837F8AB98BB1CC\r
+:1008C000837F8BB93E98469808950E94A303809336\r
+:1008D00000010E943D0480B38C7080BB81B3836FA4\r
+:1008E00081BBA6E3B1E0E4E4F1E08EE08E0F11926B\r
+:1008F0001D928E13FCCF0C948D03BF92CF92DF928A\r
+:10090000EF92FF920F931F93CF93DF93809100019B\r
+:10091000882379F0809135018F5F809335018111B3\r
+:1009200008C00E94A30380930001811102C00E94AD\r
+:10093000350306E311E0C0E0D0E0DD24D39482E08B\r
+:10094000C82EEE24E394F12CC730D10500F5809138\r
+:100950000001811164C080E40E94F80380930001CB\r
+:10096000811112C082E10E94220480930001811152\r
+:100970000BC0C7010C2E01C0880F0A94EAF78095BE\r
+:100980000E942204809300010E941A0448C0CA30C9\r
+:10099000A1F028F4C83059F0C93061F005C0CC305E\r
+:1009A00089F070F0CD3089F0209A289810C0219AF3\r
+:1009B00029980DC0229A2A980AC0239A2B9807C01A\r
+:1009C000529A01C0539A5B9802C03E9A469890EAA8\r
+:1009D0009A95F1F79FB1799902C082E001C080E059\r
+:1009E00091709D25982B7C9902C084E001C080E025\r
+:1009F000892B7D9902C038E001C030E0832B7E99BD\r
+:100A000002C020E101C020E0822B9FB19095991F88\r
+:100A10009927991F9295990F907E892B0FC08091ED\r
+:100A20000001811149C080E40E94F8038093000115\r
+:100A3000882379F1B12C0E941A048B2DF801908142\r
+:100A4000981719F08083C09201010E943D042196FD\r
+:100A50000F5F1F4FCE30D10509F076CF8091010195\r
+:100A6000882361F1815080930101882339F08FE957\r
+:100A70009FE00197F1F700C0000020C0A4E4B1E0BE\r
+:100A8000E6E3F1E0CF01825F91919D938E13FCCF5D\r
+:100A900015C083E10E942204809300018111CACF16\r
+:100AA00081E40E94F803809300018111C3CF0E946A\r
+:100AB0003304B82EB094BFCF80E0C0CF0E94330380\r
+:100AC00081E0DF91CF911F910F91FF90EF90DF9028\r
+:100AD000CF90BF900895E82FF0E0EC5BFE4F80814F\r
+:100AE000089508958B3B910578F4883A910540F577\r
+:100AF000853A9105D0F48430910508F0B1C0813079\r
+:100B0000910509F4ADC06BC0803E910508F467C043\r
+:100B1000883E910508F4A4C09C01205F3109203172\r
+:100B2000310508F05CC090650895853A910509F497\r
+:100B300059C0863A910509F058C082E890E40895BA\r
+:100B4000883A910509F454C0893A910509F453C0D3\r
+:100B50008A3A910509F452C08B3A910509F451C0C3\r
+:100B60008C3A910509F450C08D3A910509F44FC0B3\r
+:100B7000803B910509F44EC08E3A910509F44DC0B1\r
+:100B80008F3A910509F44CC0813B910509F44BC0A3\r
+:100B9000823B910509F44AC0833B910509F449C0A1\r
+:100BA000843B910509F448C0853B910509F447C091\r
+:100BB000863B910509F446C0873B910509F445C081\r
+:100BC000883B910509F444C0893B910509F443C071\r
+:100BD0008A3B910509F442C080E094E4089580E0E6\r
+:100BE00090E0089581E890E4089583E890E4089502\r
+:100BF00082EE94E4089589EE94E408958AEE94E4F4\r
+:100C0000089585EB94E4089586EB94E4089587EBCA\r
+:100C100094E408958CEC94E408958DEC94E40895A4\r
+:100C200083E895E408958AE895E4089582E995E4D7\r
+:100C3000089584E995E4089581E296E4089583E2B5\r
+:100C400096E4089584E296E4089585E296E4089592\r
+:100C500086E296E4089587E296E408958AE296E4AF\r
+:100C60000895089596E0799FF001112494E5899FF5\r
+:100C7000E00DF11D1124E60FF11DEE0FFF1FE851ED\r
+:100C8000FF4F859194910895880F991FFC01E05AB8\r
+:100C9000F040859194910895880F991FFC01E052CE\r
+:100CA000FF4F85919491089526E0729FF0011124E1\r
+:100CB00044E5849FE00DF11D1124E60FF11DEE0FB8\r
+:100CC000FF1FE851FF4F859194919C013A952115A2\r
+:100CD0004FE1340708F41CC13F512115304120F485\r
+:100CE0009F700E944C0608959C013053211530419D\r
+:100CF00018F49927906C0895811520E5920771F4F6\r
+:100D00000E9421144FEF84E39CE0415080409040CA\r
+:100D1000E1F700C000000E94591BFAC0813020E5B5\r
+:100D2000920731F48091CD0181608093CD01F0C0B4\r
+:100D30009C0130552115304108F051C0292F33272F\r
+:100D40002F70332721303105D9F4AC01437055277A\r
+:100D500002C0220F331F4A95E2F73C68AC0164E001\r
+:100D6000440F551F6A95E1F744275370242B352B08\r
+:100D700073E0880F991F7A95E1F7807699271DC057\r
+:100D80002230310529F4982F8827816F906A0895C1\r
+:100D900023303105A9F4AC014370552721E030E040\r
+:100DA00002C0220F331F4A95E2F73C6843E0880FE8\r
+:100DB000991F4A95E1F7807E9770822B932B0895B7\r
+:100DC00024303105E1F4AC014370552721E030E0D7\r
+:100DD00002C0220F331F4A95E2F73A68E7CF9C0121\r
+:100DE00030572115304118F49F70906208959C018E\r
+:100DF00030582115304118F49F70906A0895803E54\r
+:100E00009105E0F4803C910558F58133910509F492\r
+:100E10006FC048F48932910509F463C08A329105A4\r
+:100E200009F46DC072C089339105E9F082389105EB\r
+:100E3000D1F08533910509F44DC067C0833E91051B\r
+:100E400081F138F4803E9105B9F0823E9105D9F0E8\r
+:100E50005CC0863E910561F1873E9105A1F155C0C8\r
+:100E60000E94440608952091E00120FD02C021FF68\r
+:100E70004CC080EE90E049C08091E00180FFF9CF46\r
+:100E800089E390E042C08091E00182FF0EC0809132\r
+:100E9000E00184FF03C080E090E037C083EE90E083\r
+:100EA00034C08091E00182FFF2CF82EE90E02DC04D\r
+:100EB0008091E00183FF0BC08091E00184FDEBCFC6\r
+:100EC00087EE90E022C08091E00183FFF5CF86EEAF\r
+:100ED00090E01BC08091E00185FF07C089E290E0AF\r
+:100EE00014C08091E00185FFF9CF85E390E00DC04B\r
+:100EF0008091E00186FF07C08AE290E006C0809101\r
+:100F0000E00186FFF9CF81E390E00E947205089529\r
+:100F1000089508950C948907809162010895CF93F4\r
+:100F2000DF9300D01F92CDB7DEB79C018091E60120\r
+:100F3000843019F593E099833B832A839093E900E9\r
+:100F40008FEF9091E800815095FD06C095ED9A9540\r
+:100F5000F1F700008111F5CF8091E80085FF0DC009\r
+:100F600040E050E063E070E0CE0101960E94F90994\r
+:100F70008091E8008E778093E8000F900F900F909B\r
+:100F8000DF91CF910895CF93DF9300D01F92CDB71B\r
+:100F9000DEB72091E601243021F522E029839B83EE\r
+:100FA0008A8383E08093E9008FEF9091E80081507D\r
+:100FB00095FD06C095ED9A95F1F700008111F5CFEA\r
+:100FC0008091E80085FF0DC040E050E063E070E0F4\r
+:100FD000CE0101960E94F9098091E8008E778093F6\r
+:100FE000E8000F900F900F90DF91CF91089520911E\r
+:100FF000E6012430F1F422E02093E9002FEF309154\r
+:10100000E800215035FD06C035ED3A95F1F70000B6\r
+:101010002111F5CF2091E80025FF0BC040E050E002\r
+:1010200065E070E00E94F9098091E8008E77809376\r
+:10103000E8000895CF93DF93EC019091E60194309E\r
+:1010400009F046C080910C018823D9F080910D01F0\r
+:101050008823B9F09093E9008FEF9091E8008150D8\r
+:1010600095FD06C095E19A95F1F700008111F5CF45\r
+:101070008091E80085FF2CC040E050E060E170E026\r
+:1010800017C081E08093E9008FEF9091E8008150D4\r
+:1010900095FD06C095ED9A95F1F700008111F5CF09\r
+:1010A0008091E80085FF14C040E050E068E070E007\r
+:1010B000CE010E94F9098091E8008E778093E800C4\r
+:1010C00080E1FE01A2E5B1E001900D928A95E1F781\r
+:1010D000DF91CF9108958091E501811109C00E94AF\r
+:1010E0008E0B0E94EB0B8091E20084608093E20003\r
+:1010F00008951092E501089508950C9496210E9498\r
+:10110000EF1A0E949C210E94910E0C948A0742E0E3\r
+:1011100061EC81E00E94080B42E061EC82E00E94F9\r
+:10112000080B42E061EC83E00E94080B42E161ECB5\r
+:1011300084E00C94080B8091E801833009F455C0D9\r
+:1011400030F4813071F0823009F48EC008958A3015\r
+:1011500009F47AC08B3009F460C0893009F09CC072\r
+:1011600020C08091E701813A09F096C08091E800A3\r
+:10117000877F8093E8008091EB019091EC01892BAF\r
+:1011800021F460E182E591E003C060E080E090E05E\r
+:1011900070E00E94440A8091E8008B778093E80019\r
+:1011A00008958091E701813209F076C08091EB01CA\r
+:1011B0009091EC01009719F0039709F06DC08091B0\r
+:1011C000E800877F8093E8008091E80082FD05C0F9\r
+:1011D0008091E6018111F8CF5FC08091F10080938A\r
+:1011E00062018091E8008B7753C08091E701813ADA\r
+:1011F00009F052C08091EB019091EC01892B09F02C\r
+:101200004BC08091E800877F8093E8008091E800E0\r
+:1012100080FFFCCF80910C0136C08091E7018132C4\r
+:10122000D9F58091EB019091EC01892BA9F5809182\r
+:10123000E800877F8093E8000E943D0B8091E901E0\r
+:1012400080930C010C9421148091E701813221F5E7\r
+:101250008091E800877F8093E8000E943D0B809199\r
+:10126000EA018093630108958091E701813AA1F436\r
+:101270008091E800877F8093E8008091E80080FFFC\r
+:10128000FCCF809163018093F1008091E8008E771C\r
+:101290008093E8000C943D0B089584B7877F84BF4A\r
+:1012A00088E10FB6F89480936000109260000FBE42\r
+:1012B00090E080E80FB6F89480936100909361000D\r
+:1012C0000FBE0E94E00E0E948E0B0E94EB0B8091DD\r
+:1012D000E20084608093E20078940E94710E0E9484\r
+:1012E000E20E82E091E00E948C0E0E9484218091A7\r
+:1012F000E601853069F40E94B01A8091E4018823E8\r
+:10130000B1F30E94DB1A882391F30E94E309EFCF27\r
+:101310000E94E80EECCF292F332723303105C9F086\r
+:1013200064F42130310581F02230310509F043C0E9\r
+:101330008DE690E02CEB33E042C021323105F1F034\r
+:101340002232310541F137C082E190E029E234E0F8\r
+:1013500036C099278130910541F08230910541F0E6\r
+:10136000892B49F5E8EBF3E005C0E0EAF3E002C0C1\r
+:10137000E8E8F3E0849190E09F0121C06430D8F464\r
+:10138000E62FF0E0EE0FFF1FEE5DFE4F2081318172\r
+:1013900089E090E014C0643070F470E0FB01EE0F5F\r
+:1013A000FF1FE65EFE4F20813181FB01EA5EFE4FAA\r
+:1013B000808190E004C080E090E020E030E0FA011D\r
+:1013C00031832083089580E189BD82E189BD09B41C\r
+:1013D00000FEFDCF8091D8008F7D8093D800809152\r
+:1013E000E00082608093E0008091E00081FDFCCF0E\r
+:1013F0000895CF92DF92EF92FF920F931F93CF93B6\r
+:10140000DF93EC018B016A010E945C0B811133C0F8\r
+:10141000C114D10439F0F60180819181081B190BA8\r
+:10142000C80FD91FE12CF12C0115110519F180917C\r
+:10143000E80085FD16C08091E8008E778093E80073\r
+:10144000C114D10449F0F60180819181E80EF91EA2\r
+:10145000F182E08285E00FC00E945C0B882321F3BB\r
+:101460000AC089918093F10001501109FFEFEF1A32\r
+:10147000FF0ADACF80E0DF91CF911F910F91FF90AB\r
+:10148000EF90DF90CF9008952091ED013091EE0123\r
+:101490002617370748F06115710539F42091E800E7\r
+:1014A0002E772093E80001C0B90140E06115710575\r
+:1014B000A9F12091E601222309F443C0253009F463\r
+:1014C00042C02091E80023FD40C02091E80022FDA9\r
+:1014D00032C02091E80020FFE9CF4091F300209135\r
+:1014E000F20030E0342BFC01CF016115710559F099\r
+:1014F0002830310540F481918093F10061507109E9\r
+:101500002F5F3F4FF1CF41E02830310509F040E037\r
+:101510002091E8002E772093E800C8CF4111C9CF71\r
+:101520000AC08091E601882361F0853061F08091E6\r
+:10153000E80083FD0AC08091E80082FFF2CF80E0DE\r
+:10154000089582E0089583E0089581E00895209150\r
+:10155000ED013091EE012617370748F0611571054E\r
+:1015600039F42091E8002E772093E80001C0B901FA\r
+:10157000FC0120E06115710591F18091E60188235D\r
+:1015800009F440C0853009F43FC08091E80083FD34\r
+:101590003DC08091E80082FD2FC08091E80080FF6F\r
+:1015A000E9CF2091F3008091F20090E0922B611539\r
+:1015B000710559F08830910540F424912093F10091\r
+:1015C0003196615071090196F2CF21E0089709F038\r
+:1015D00020E08091E8008E778093E800CBCF211146\r
+:1015E000CCCF0AC08091E601882361F0853061F09C\r
+:1015F0008091E80083FD0AC08091E80082FFF2CF6D\r
+:1016000080E0089582E0089583E0089581E00895E0\r
+:10161000982F973058F59093E900981739F070910A\r
+:10162000EC002091ED005091F00003C0242F762FA4\r
+:1016300050E021FF19C03091EB003E7F3093EB006A\r
+:101640003091ED003D7F3093ED003091EB00316043\r
+:101650003093EB007093EC002093ED005093F0007A\r
+:101660002091EE0027FF07C09F5FD3CF8F7080933C\r
+:10167000E90081E0089580E008958091E70187FF07\r
+:1016800011C08091E80082FD05C08091E6018111C2\r
+:10169000F8CF11C08091E8008B770BC08091E601F4\r
+:1016A000882349F08091E80080FFF8CF8091E8001E\r
+:1016B0008E778093E80008952091E4003091E50052\r
+:1016C00095E64091EC00842F817040FF22C080910C\r
+:1016D000E80080FD1CC08091E601882391F08530F0\r
+:1016E00091F08091EB0085FD10C04091E400509195\r
+:1016F000E5004217530729F39A01915011F784E04E\r
+:10170000089582E0089583E0089581E0089580E0DF\r
+:1017100008954091E80042FFDECF08950E94FC0B3F\r
+:101720000E94040CE0EEF0E0808181608083E8EDAF\r
+:10173000F0E080818F77808319BCA7EDB0E08C91B9\r
+:101740008E7F8C9380818F7E80831092E501089537\r
+:101750000F931F93CF93DF930E94FC0B0E94040C06\r
+:10176000C8EDD0E088818F778883888180688883FE\r
+:1017700088818F7D888319BC1092E6011092E20166\r
+:101780001092E4011092E30100EE10E0F801808174\r
+:101790008B7F808388818160888342E060E080E085\r
+:1017A0000E94080BE1EEF0E080818E7F8083E2EE04\r
+:1017B000F0E0808181608083808188608083F8018F\r
+:1017C00080818E7F8083888180618883DF91CF9143\r
+:1017D0001F910F910895E8EDF0E080818F7E808366\r
+:1017E000E7EDF0E080818160808384E082BF81E06A\r
+:1017F0008093E5010C94A80BE8EDF0E080818E7FEA\r
+:1018000080831092E20008951092DA001092E100B5\r
+:1018100008951F920F920FB60F9211242F933F93AA\r
+:101820004F935F936F937F938F939F93AF93BF93E8\r
+:10183000EF93FF938091E10082FF0BC08091E20063\r
+:1018400082FF07C08091E1008B7F8093E1000E94BE\r
+:10185000700E8091DA0080FF1FC08091D80080FF59\r
+:101860001BC08091DA008E7F8093DA008091D900CE\r
+:1018700080FF0DC080E189BD82E189BD09B400FE11\r
+:10188000FDCF81E08093E6010E946B0805C019BC82\r
+:101890001092E6010E9479088091E10080FF19C052\r
+:1018A0008091E20080FF15C08091E2008E7F8093DE\r
+:1018B000E2008091E20080618093E2008091D80094\r
+:1018C00080628093D80019BC85E08093E6010E9475\r
+:1018D0007D088091E10084FF30C08091E20084FFA8\r
+:1018E0002CC080E189BD82E189BD09B400FEFDCF35\r
+:1018F0008091D8008F7D8093D8008091E1008F7E09\r
+:101900008093E1008091E2008F7E8093E2008091DD\r
+:10191000E20081608093E2008091E201882311F06F\r
+:1019200084E007C08091E30087FD02C081E001C030\r
+:1019300083E08093E6010E947F088091E10083FFAD\r
+:1019400029C08091E20083FF25C08091E100877F5C\r
+:101950008093E10082E08093E6011092E2018091A1\r
+:10196000E1008E7F8093E1008091E2008E7F809382\r
+:10197000E2008091E20080618093E20042E060E05A\r
+:1019800080E00E94080B8091F00088608093F00056\r
+:101990000E947C08FF91EF91BF91AF919F918F9131\r
+:1019A0007F916F915F914F913F912F910F900FBE5B\r
+:1019B0000F901F9018951F920F920FB60F9211243F\r
+:1019C0002F933F934F935F936F937F938F939F9347\r
+:1019D000AF93BF93CF93DF93EF93FF93C091E90051\r
+:1019E000CF708091EC00D82FD17080FDD0E810929C\r
+:1019F000E9008091F000877F8093F00078940E9446\r
+:101A00001F0D1092E9008091F00088608093F00033\r
+:101A1000CD2BCF70C093E900FF91EF91DF91CF9173\r
+:101A2000BF91AF919F918F917F916F915F914F91F6\r
+:101A30003F912F910F900FBE0F901F9018951F93FD\r
+:101A4000CF93DF93CDB7DEB7AA970FB6F894DEBF7A\r
+:101A50000FBECDBFE7EEF1E088E08E0F9091F10070\r
+:101A600091938E13FBCF0E949B088091E80083FF27\r
+:101A70001FC18091E7019091E801492F50E04A3061\r
+:101A8000510508F015C1FA01EA5AFF4F0C941E23C4\r
+:101A9000803881F0823809F00BC18091EB018F70A2\r
+:101AA0008093E9008091EB0085FB882780F91092F4\r
+:101AB000E90006C08091E3019091E40191118260F8\r
+:101AC0009091E800977F9093E8008093F100109246\r
+:101AD000F100C8C0282F2D7F09F0EAC0882319F033\r
+:101AE000823061F0E5C08091E901813009F0E0C009\r
+:101AF000933009F080E08093E4012BC08091E901EC\r
+:101B0000811127C08091EB018F7009F4D1C08093BF\r
+:101B1000E9002091EB0020FF1CC0933021F480915C\r
+:101B2000EB00806214C09091EB0090619093EB0009\r
+:101B300021E030E0A90102C0440F551F8A95E2F769\r
+:101B40004093EA001092EA008091EB008860809355\r
+:101B5000EB001092E9008091E800877F86C0811138\r
+:101B6000A7C01091E9011F778091E3008078812B55\r
+:101B70008093E3008091E800877F8093E8000E94D3\r
+:101B80003D0B8091E80080FFFCCF8091E3008068EE\r
+:101B90008093E300111102C082E001C083E08093D2\r
+:101BA000E60186C08058823008F082C08091E90149\r
+:101BB0009091EA018C3D53E0950779F583E08A83A3\r
+:101BC0008AE289834FB7F894DE01139620E03EE065\r
+:101BD00051E2E32FF0E050935700E49120FF03C05F\r
+:101BE000E295EF703F5FEF708E2F90E0EA3010F0DB\r
+:101BF000C79601C0C0968D939D932F5F243149F7FE\r
+:101C00004FBF8091E800877F8093E8006AE270E030\r
+:101C1000CE0101960E94440A14C0AE014F5F5F4F8F\r
+:101C20006091EB010E948B09BC01892B09F440C033\r
+:101C30009091E800977F9093E80089819A810E94B3\r
+:101C4000A70A8091E8008B778093E80031C0803844\r
+:101C500079F58091E800877F8093E8008091E20128\r
+:101C60008093F1008091E8008E778093E8000E94D5\r
+:101C70003D0B1EC081111CC09091E9019230C0F44F\r
+:101C80008091E800877F8093E8009093E2010E94B2\r
+:101C90003D0B8091E201811106C08091E30087FD38\r
+:101CA00002C081E001C084E08093E6010E948708C1\r
+:101CB0008091E80083FF0AC08091E800877F8093CD\r
+:101CC000E8008091EB0080628093EB00AA960FB64B\r
+:101CD000F894DEBF0FBECDBFDF91CF911F91089565\r
+:101CE0000895CF938091E6018823A1F0C091E90087\r
+:101CF000CF709091EC00892F817090FD80E8C82B07\r
+:101D00001092E9008091E80083FD0E941F0DCF70C2\r
+:101D1000C093E900CF910895909369018093680181\r
+:101D20000895E0916801F0916901309721F00190E8\r
+:101D3000F081E02D099480E00895E0916801F09130\r
+:101D40006901309721F00280F381E02D0994089514\r
+:101D5000E0916801F0916901309721F00480F581EC\r
+:101D6000E02D099408952091660130916701821752\r
+:101D7000930771F09093670180936601E091680189\r
+:101D8000F0916901309721F00680F781E02D0994E8\r
+:101D9000089520916401309165018217930771F0D5\r
+:101DA0009093650180936401E0916801F09169016D\r
+:101DB000309721F00084F185E02D0994089508956D\r
+:101DC0000C94DF0E0E94F51A0E9465040C94BB1B54\r
+:101DD000CF92DF92EF92FF920F931F93CF93DF93F7\r
+:101DE000CDB7DEB72B970FB6F894DEBF0FBECDBFD1\r
+:101DF0000E947D048BE6C82E81E0D82E00E010E022\r
+:101E0000E02E802F0E946B05F60141916F01F42EA8\r
+:101E1000F826B1F40F5F1F4F0E30110589F78FEFD1\r
+:101E200089838A831B820E94FE1A8160782F9D839A\r
+:101E30008C8349815A816B818D810E948B0F40C0B8\r
+:101E40009091CD0191FF04C08B870E9471058B8515\r
+:101E500020E030E04F2D50E0922FBA01022E02C058\r
+:101E6000759567950A94E2F760FF24C02E83EF8290\r
+:101E700021E030E0690102C0CC0CDD1C9A95E2F74C\r
+:101E800090E08C219D21892B09F420E028870E9475\r
+:101E9000FE1A8160782F9A8789874E815F816885D5\r
+:101EA0008A850E948B0FF801E559FE4F8081C82674\r
+:101EB000C08206C02F5F3F4F2630310569F6AACF9A\r
+:101EC0000E94A21E10916A010E94910E1817A1F0A3\r
+:101ED0000E94910E80936A012B960FB6F894DEBF94\r
+:101EE0000FBECDBFDF91CF911F910F91FF90EF906B\r
+:101EF000DF90CF900C948A072B960FB6F894DEBF34\r
+:101F00000FBECDBFDF91CF911F910F91FF90EF904A\r
+:101F1000DF90CF900895CF93DF93CDB7DEB72B97A7\r
+:101F20000FB6F894DEBF0FBECDBF4F8358876987C9\r
+:101F30007A878B87DE01119686E0FD0111928A95E2\r
+:101F4000E9F785E0FE01379601900D928A95E1F759\r
+:101F500049815A816B817C818D819E810E94BB1653\r
+:101F60002B960FB6F894DEBF0FBECDBFDF91CF9199\r
+:101F700008950895CF93882309F4C2C0C82F8238EA\r
+:101F800059F40E94910E81FDBBC089E30E9464193F\r
+:101F90000E94311A89E30CC0833879F40E94910EB3\r
+:101FA00080FDAEC083E50E9464190E94311A83E56A\r
+:101FB0000E94A619CF910C94311A843859F40E94CA\r
+:101FC000910E82FD9DC087E40E9464190E94311A1F\r
+:101FD00087E4EECF8CEF8C0F813A48F48C2F0E946F\r
+:101FE000E92081118DC08C2F0E946419E3CF80E21B\r
+:101FF0008C0F883048F4C77081E001C0880FCA9503\r
+:10200000EAF70E94EA19D6CF8BE58C0F833078F47B\r
+:10201000C53A29F0C63A31F083E890E005C081E87E\r
+:1020200090E002C082E890E0CF910C94B30E88E576\r
+:102030008C0F833108F064C0C83A39F1C93A41F1D4\r
+:10204000CA3A49F1CB3A51F1CC3A59F1CD3A61F162\r
+:10205000C03B69F1CE3A71F1CF3A79F1C13B81F1E0\r
+:10206000C23B89F1C33B91F1C43B99F1C53BA1F15E\r
+:10207000C63BA9F1C73BB1F1C83BB9F1C93BC1F1BE\r
+:10208000CA3BC9F180E090E038C082EE90E035C0F4\r
+:1020900089EE90E032C08AEE90E02FC085EB90E0B0\r
+:1020A0002CC086EB90E029C087EB90E026C08CEC3A\r
+:1020B00090E023C08DEC90E020C083E891E01DC04B\r
+:1020C0008AE891E01AC082E991E017C084E991E0C2\r
+:1020D00014C081E292E011C083E292E00EC084E27B\r
+:1020E00092E00BC085E292E008C086E292E005C073\r
+:1020F00087E292E002C08AE292E0CF910C94C90E8E\r
+:10210000CF910895882309F44BC0823859F40E9476\r
+:10211000910E81FF45C089E30E9464190E94311A23\r
+:1021200089E30CC0833871F40E94910E80FF38C09F\r
+:1021300083E50E9464190E94311A83E50E94A61962\r
+:102140000C94311A843859F40E94910E82FF28C0F1\r
+:1021500087E40E9464190E94311A87E4EFCF9CEF54\r
+:10216000980F913A58F390E2980F983050F4877096\r
+:1021700091E001C0990F8A95EAF7892F0E94F01922\r
+:10218000DFCF9BE5980F933020F480E090E00C9433\r
+:10219000B30E885A833120F480E090E00C94C90E8D\r
+:1021A0000895882321F00E94EA190C94311A0895A9\r
+:1021B000882321F00E94F0190C94311A0895BF92DF\r
+:1021C000CF92DF92EF92FF920F931F93CF93DF9303\r
+:1021D00000D000D000D0CDB7DEB725E0FC01DE0195\r
+:1021E000119601900D922A95E1F7FC01D0801181A2\r
+:1021F0000281258122952F7043815481452B09F45A\r
+:10220000FCC21F3F21F4FFEFDF1609F4F6C27C0188\r
+:102210002E830E94B90FD9821A8369817A81802F17\r
+:102220000E946019182FB92E0E9415190E94DC1700\r
+:102230002E81002319F00E94071A2E81EB2DE295C2\r
+:10224000EF70F0E0E05AFF4F0C941E238B2D807F3F\r
+:102250009B2D9F70F92E882319F0F29480EFF822BD\r
+:10226000002389F0FF2009F475C280E2810F8830D5\r
+:1022700020F48F2D0E94EA1903C08F2D0E94FA19B5\r
+:102280000E94311A67C2812F0E948210FF2009F438\r
+:10229000B4C2105E8F2D183018F40E94F01902C0DD\r
+:1022A0000E94001A26960FB6F894DEBF0FBECDBF6F\r
+:1022B000DF91CF911F910F91FF90EF90DF90CF9022\r
+:1022C000BF900C94311A3B2D307F8B2D8F703032A4\r
+:1022D00011F08295807F112319F0113021F12CC06B\r
+:1022E0000023B9F0222309F4A0C1213009F09DC1D7\r
+:1022F00026960FB6F894DEBF0FBECDBFDF91CF910B\r
+:102300001F910F91FF90EF90DF90CF90BF900C94B2\r
+:102310001A1A222319F0213009F46FC28E830E9409\r
+:102320001D1A8E8196C1002321F0223008F065C26B\r
+:102330007CC1211162C28DC1002321F0222309F446\r
+:1023400074C108C2222309F484C119C22B2D269519\r
+:102350002695237030E02115310521F0213031051B\r
+:10236000D1F04BC2002321F0812F9B2D937002C02E\r
+:1023700080E090E026960FB6F894DEBF0FBECDBF8A\r
+:10238000DF91CF911F910F91FF90EF90DF90CF9051\r
+:10239000BF900C94B30E002321F0812F9B2D9370DE\r
+:1023A00002C080E090E026960FB6F894DEBF0FBE24\r
+:1023B000CDBFDF91CF911F910F91FF90EF90DF90F4\r
+:1023C000CF90BF900C94C90E812F002319F00E946A\r
+:1023D000AA1D02C00E94121E26960FB6F894DEBFF8\r
+:1023E0000FBECDBFDF91CF911F910F91FF90EF9066\r
+:1023F000DF90CF90BF900C94971E8B2D837009F0C7\r
+:102400007BC00111FAC1812F829586958770880F54\r
+:10241000880F912F9F70C92ED12CE12CF12C082E02\r
+:1024200004C0CC0CDD1CEE1CFF1C0A94D2F714FF78\r
+:1024300012C04FE050E060E070E004C0440F551F50\r
+:10244000661F771F8A95D2F7CB01BA016095709508\r
+:102450008095909503C060E070E0CB012B2D269510\r
+:1024600026952370422F50E042305105D9F0433079\r
+:10247000510569F16C297D298E299F29413051052B\r
+:1024800051F126960FB6F894DEBF0FBECDBFDF9197\r
+:10249000CF911F910F91FF90EF90DF90CF90BF9061\r
+:1024A0000C9403186C297D298E299F2926960FB636\r
+:1024B000F894DEBF0FBECDBFDF91CF911F910F917A\r
+:1024C000FF90EF90DF90CF90BF900C941F180E9468\r
+:1024D0000318C701B60126960FB6F894DEBF0FBEEB\r
+:1024E000CDBFDF91CF911F910F91FF90EF90DF90C3\r
+:1024F000CF90BF900C94E717002319F08B2D8170BB\r
+:1025000001C08695882309F478C1812F829586952C\r
+:102510008770880F880F912F9F70C92ED12CE12CC6\r
+:10252000F12C082E04C0CC0CDD1CEE1CFF1C0A9400\r
+:10253000D2F714FF12C04FE050E060E070E004C03A\r
+:10254000440F551F661F771F8A95D2F7CB01BA013A\r
+:10255000609570958095909503C060E070E0CB0128\r
+:102560002B2D269526952370422F50E042305105A1\r
+:10257000D9F04330510569F16C297D298E299F29B5\r
+:102580004130510551F126960FB6F894DEBF0FBECB\r
+:10259000CDBFDF91CF911F910F91FF90EF90DF9012\r
+:1025A000CF90BF900C94DD186C297D298E299F292E\r
+:1025B00026960FB6F894DEBF0FBECDBFDF91CF9148\r
+:1025C0001F910F91FF90EF90DF90CF90BF900C94F0\r
+:1025D000F9180E94DD18C701B60126960FB6F894C7\r
+:1025E000DEBF0FBECDBFDF91CF911F910F91FF9046\r
+:1025F000EF90DF90CF90BF900C94C118103FD1F1B5\r
+:1026000018F4103E50F4A1C0123F09F463C008F45E\r
+:102610004CC0133F09F473C098C01F708B2D8F718D\r
+:102620000023A1F00E945A18812F26960FB6F89425\r
+:10263000DEBF0FBECDBFDF91CF911F910F91FF90F5\r
+:10264000EF90DF90CF90BF900C94D1100E947B1838\r
+:10265000812F26960FB6F894DEBF0FBECDBFDF9157\r
+:10266000CF911F910F91FF90EF90DF90CF90BF908F\r
+:102670000C94D8100023A9F02111BFC08B2D8F71AD\r
+:1026800026960FB6F894DEBF0FBECDBFDF91CF9177\r
+:102690001F910F91FF90EF90DF90CF90BF900C941F\r
+:1026A000A018223008F0A9C0E9CF0023A9F08B2D93\r
+:1026B0008F7126960FB6F894DEBF0FBECDBFDF91A7\r
+:1026C000CF911F910F91FF90EF90DF90CF90BF902F\r
+:1026D0000C945A18002359F38B2D8F7126960FB640\r
+:1026E000F894DEBF0FBECDBFDF91CF911F910F9148\r
+:1026F000FF90EF90DF90CF90BF900C947B18002359\r
+:1027000099F08B2D8F7126960FB6F894DEBF0FBE11\r
+:10271000CDBFDF91CF911F910F91FF90EF90DF9090\r
+:10272000CF90BF900C94451826960FB6F894DEBF54\r
+:102730000FBECDBFDF91CF911F910F91FF90EF9012\r
+:10274000DF90CF90BF900C943B180023A9F0222378\r
+:1027500009F4ADCF812F26960FB6F894DEBF0FBED9\r
+:10276000CDBFDF91CF911F910F91FF90EF90DF9040\r
+:10277000CF90BF900C94BA0F222309F4ADCF812FD4\r
+:1027800026960FB6F894DEBF0FBECDBFDF91CF9176\r
+:102790001F910F91FF90EF90DF90CF90BF900C941E\r
+:1027A00082104B2D4F70612FC7010E9401032696A6\r
+:1027B0000FB6F894DEBF0FBECDBFDF91CF911F9152\r
+:1027C0000F91FF90EF90DF90CF90BF900C945F1728\r
+:1027D0004B2D4F70612FC70126960FB6F894DEBFC0\r
+:1027E0000FBECDBFDF91CF911F910F91FF90EF9062\r
+:1027F000DF90CF90BF900C94310626960FB6F894D8\r
+:10280000DEBF0FBECDBFDF91CF911F910F91FF9023\r
+:10281000EF90DF90CF90BF9008950E94071A0E941A\r
+:10282000171A0E94DC190E94311A0E94481F0E9448\r
+:10283000971E80E090E00E94B30E80E090E00C9440\r
+:10284000C90E0E94F7190C940D140E945519292FD6\r
+:1028500022952F7030E02C3031054CF42A303105B0\r
+:102860006CF4225031092230310588F407C02C3035\r
+:10287000310549F02F30310531F009C0803E48F074\r
+:10288000803F29F406C093FB882780F9089580E0F3\r
+:10289000089581E00895CF93DF9300D000D01F9278\r
+:1028A000CDB7DEB70F900F900F900F900F90DF9184\r
+:1028B000CF910895CF93DF9300D000D000D0CDB753\r
+:1028C000DEB726960FB6F894DEBF0FBECDBFDF9100\r
+:1028D000CF9108951F93CF93DF93C091790116E0B4\r
+:1028E00080917A01C81799F0D0E01C9FF0011D9FDC\r
+:1028F000F00D1124E558FE4F4081518162817381B2\r
+:10290000848195810E945A142196C770E9CFDF9186\r
+:10291000CF911F9108954091AB015091AC0160910E\r
+:10292000AD017091AE018091AF019091B0010C9416\r
+:102930005A148091B00182958F7009F054C0809133\r
+:10294000AD01882309F44FC080917901A0917A01EB\r
+:102950006091AB017091AC014091AE015091AF011B\r
+:10296000B6E08A1709F43FC090E041155105C1F166\r
+:102970007F3F11F46F3FA1F1B89FF001B99FF00DB7\r
+:102980001124E558FE4F218172132AC02081621361\r
+:1029900027C02281211124C02381348124173507C7\r
+:1029A00010F421503109241B350B283C3105C0F4AB\r
+:1029B0002091B0012F7020612093B00126E0289F64\r
+:1029C000F001299FF00D1124E058FE4F80818F7097\r
+:1029D000806180838BEA91E00E94DF100C946A147E\r
+:1029E00001968770BECF0895CF92DF92EF92FF924B\r
+:1029F0000F931F93CF93DF93CDB7DEB762970FB6D8\r
+:102A0000F894DEBF0FBECDBF8C0185E0F801DE017A\r
+:102A10001D9601900D928A95E1F7D8014C9111967F\r
+:102A20005C91119712966C9112971396CD90DC9051\r
+:102A300014973091AB017091AC018091AE019091EF\r
+:102A4000AF01009709F46BC17F3F19F43F3F09F4D0\r
+:102A500066C1E090AD01EE2009F4C0C02091B00144\r
+:102A6000C816D90628F0F601E81BF90BCF0104C0FF\r
+:102A7000809590958C0D9D1DFF24F394883C9105C5\r
+:102A800078F0F12C207F09F0C6C07C2DD98AC88A45\r
+:102A900089890E944B148BEA91E00E94DF10B1C03B\r
+:102AA000822F807F09F046C0751314C0341312C002\r
+:102AB000611110C02F7020612093B0010E948B140F\r
+:102AC0008BEA91E00E94DF108091B001D801159649\r
+:102AD0008C932EC0CD2819F15F3F11F44F3FF9F0D0\r
+:102AE000F62E61111CC08091790120917A0136E0A7\r
+:102AF000821709F45AC090E0389FF001399FF00D19\r
+:102B00001124E558FE4F7181571306C07081471399\r
+:102B100003C07281711103C001968770E9CFF62E50\r
+:102B2000662309F418C18091B00181608093B001DF\r
+:102B3000F12C11C1751308C0341306C0611104C013\r
+:102B40008091B001D801C3C04D875E878D859E8579\r
+:102B50006A8B0E9425146A898823E1F16623D1F1EA\r
+:102B60002091B001822F82958F7090E0029774F0CF\r
+:102B70008091AB019091AC0198878F831986DB8699\r
+:102B8000CA862C87CE0107960E94DF1086E0F801E6\r
+:102B9000ABEAB1E001900D928A95E1F70E94991499\r
+:102BA0000E948B14FF24F394D6C04D875E878D85D9\r
+:102BB0009E850E945519292F22952F7030E02230D2\r
+:102BC00031050CF0BCC09F7009F0B6C0805E883043\r
+:102BD00008F4C1C0C8010E94DF10E4CFC816D906AE\r
+:102BE00008F453C0F601E81BF90BCF01883C9105AE\r
+:102BF00008F450C0F12C7C2DD98AC88A89890E949A\r
+:102C00004B14EBEAF1E086E0DF011D928A95E9F7CB\r
+:102C10000E948B14A0C0751314C0341312C061112C\r
+:102C200010C08091B001F8018583C8010E94DF10B7\r
+:102C300086E0EBEAF1E0DF011D928A95E9F7FE2CD0\r
+:102C40008AC04D875E878D859E856A8B0E9425147C\r
+:102C50006A89882309F4BECF662309F4BBCF20918B\r
+:102C6000B001822F82958F7090E002970CF48ECF86\r
+:102C70008091AB019091AC019A8389831B82DD82A4\r
+:102C8000CC822E83CE0101967FCF809590958C0DBE\r
+:102C90009D1DACCFF62E662309F49CCF75132EC074\r
+:102CA00034132CC02091B00120FD1FC0822F8295CB\r
+:102CB0008F70D9F0D80115962C9315978F3049F065\r
+:102CC0008F5F982F9295907F822F8F70892B15960A\r
+:102CD0008C93C8010E94DF1086E0F801ABEAB1E0F6\r
+:102CE00001900D928A95E1F793CF86E0F801ABEA67\r
+:102CF000B1E001900D928A95E1F72DC04D875E8776\r
+:102D00008D859E850E942514811140CF8091B00150\r
+:102D100081608093B001C8010E94DF101CC066234F\r
+:102D200009F458CF4D875E878D859E850E942514B6\r
+:102D3000882309F44FCF2ACF811148CF0CC024300B\r
+:102D400031050CF047CF9F7009F440CFF801958111\r
+:102D5000907F09F03BCF8F2D62960FB6F894DEBFBF\r
+:102D60000FBECDBFDF91CF911F910F91FF90EF90DC\r
+:102D7000DF90CF9008951F93CF93DF93CDB7DEB749\r
+:102D80002C970FB6F894DEBF0FBECDBF4F83588788\r
+:102D900069877A878B879C87CE0107960E94F414F7\r
+:102DA000882369F08F8198852A853B85232BF1F153\r
+:102DB0009F3F09F063C08F3F09F060C037C086E0D5\r
+:102DC000FE013796DE01119601900D928A95E1F78A\r
+:102DD0006F817885EA85FB85309741F17F3F11F45B\r
+:102DE0006F3F21F120917A0130E0C901019687708F\r
+:102DF00099274091790150E08417950709F447C05D\r
+:102E000069837A83FD83EC8396E0929FD001939F40\r
+:102E1000B00D1124A558BE4FFE01319601900D92C0\r
+:102E20009A95E1F780937A010E946A1416E08091E6\r
+:102E3000790190917A018917C1F1189FC00111247D\r
+:102E400085589E4F0E94F414882379F1E09179010E\r
+:102E50001E9FF0011124E558FE4F4081518162818F\r
+:102E60007381848195810E945A148091790190E048\r
+:102E700001968770992780937901D9CF4F81588522\r
+:102E800069857A858B859C850E945A14CFCF0E94D4\r
+:102E9000211410927A0110927901EBEAF1E086E0B8\r
+:102EA000DF011D928A95E9F7C1CF2C960FB6F894F1\r
+:102EB000DEBF0FBECDBFDF91CF911F910895EF927E\r
+:102EC000FF920F931F93CF93DF938C01892B09F40B\r
+:102ED0006CC0F12CEE24E394E8012196F801849172\r
+:102EE000843740F4843008F051C0813081F0823062\r
+:102EF00019F15BC0853709F444C0A8F19CE7980F2D\r
+:102F0000903708F052C08F770E94821041C00E5F48\r
+:102F10001F4FFE01C49180E28C0F883048F4C770C7\r
+:102F20008E2D01C0880FCA95EAF70E940A1A14C0B4\r
+:102F30008C2F0E94BA0F2DC00E5F1F4FFE01C4914F\r
+:102F400080E28C0F883058F4C7708E2D01C0880F36\r
+:102F5000CA95EAF70E94101A0E94311A1AC08C2FE3\r
+:102F60000E94821016C00E5F1F4FFE01C491CC2339\r
+:102F700081F08FE99FE00197F1F700C00000C15098\r
+:102F8000F6CF0E5F1F4FFE01F49003C00E94BA0FF0\r
+:102F90008E018F2D882309F49FCFEFE9FFE0319751\r
+:102FA000F1F700C000008150F5CFDF91CF911F9164\r
+:102FB0000F91FF90EF90089508956093B50170937D\r
+:102FC000B6018093B7019093B8010C940D140F9340\r
+:102FD0001F930091B5011091B6012091B701309176\r
+:102FE000B801DC01CB01802B912BA22BB32B80935A\r
+:102FF000B5019093B601A093B701B093B8011F91AA\r
+:103000000F910C940D140F931F930091B501109123\r
+:10301000B6012091B7013091B801DC01CB018023CA\r
+:103020009123A223B3238093B5019093B601A0937B\r
+:10303000B701B093B8011F910F910C940D140F9329\r
+:103040001F930091B5011091B6012091B701309105\r
+:10305000B801DC01CB0180279127A227B3278093F9\r
+:10306000B5019093B601A093B701B093B8011F9139\r
+:103070000F910C940D141092B1011092B2011092A4\r
+:10308000B3011092B4010C940D1441E050E060E0E3\r
+:1030900070E004C0440F551F661F771F8A95D2F752\r
+:1030A0004093B1015093B2016093B3017093B401A6\r
+:1030B0000C940D1441E050E060E070E004C0440F57\r
+:1030C000551F661F771F8A95D2F78091B1019091A5\r
+:1030D000B201A091B301B091B401482B592B6A2BD6\r
+:1030E0007B2B4093B1015093B2016093B301709375\r
+:1030F000B4010C940D1441E050E060E070E004C0B5\r
+:10310000440F551F661F771F8A95D2F7409550953B\r
+:10311000609570958091B1019091B201A091B30139\r
+:10312000B091B401482359236A237B234093B10112\r
+:103130005093B2016093B3017093B4010C940D14D9\r
+:1031400041E050E060E070E004C0440F551F661F8E\r
+:10315000771F8A95D2F78091B1019091B201A09129\r
+:10316000B301B091B401482759276A277B274093C0\r
+:10317000B1015093B2016093B3017093B4010C9408\r
+:103180000D140F931F930091B1011091B201209182\r
+:10319000B3013091B401DC01CB01802B912BA22B28\r
+:1031A000B32B8093B1019093B201A093B301B0937C\r
+:1031B000B4011F910F910C940D140F931F93009164\r
+:1031C000B1011091B2012091B3013091B401DC0141\r
+:1031D000CB0180239123A223B3238093B101909349\r
+:1031E000B201A093B301B093B4011F910F910C945D\r
+:1031F0000D140F931F930091B1011091B201209112\r
+:10320000B3013091B401DC01CB0180279127A227C3\r
+:10321000B3278093B1019093B201A093B301B0930F\r
+:10322000B4011F910F910C940D140895CF92DF9269\r
+:10323000EF92FF920F931F93CF93DF938C01C09077\r
+:10324000B501D090B601E090B701F090B80180913F\r
+:10325000B1019091B201A091B301B091B401C82A1B\r
+:10326000D92AEA2AFB2ACFE1D0E0D701C6010C2EE9\r
+:1032700004C0B695A795979587950A94D2F780FFD5\r
+:1032800006C0B8018C2F0E945406019721F42197A3\r
+:1032900060F780E001C08C2FDF91CF911F910F91DB\r
+:1032A000FF90EF90DF90CF900895CF93DF93EC01E4\r
+:1032B0000E941619BE010E945406DF91CF91089515\r
+:1032C000CB010E945519089590910C01992321F08A\r
+:1032D00090910D01911109C020910E0130910F01C3\r
+:1032E000F90132969FEF40E01FC0982F9695969572\r
+:1032F00096959F3050F5E0910E01F0910F01E90F86\r
+:10330000F11D877021E030E0A90102C0440F551F74\r
+:103310008A95E2F7CA019181892B818308959F3FA5\r
+:1033200039F04F5F4E3041F051915813F8CF0DC036\r
+:103330005111F7CF942FF5CF9F3F39F0F901E90FE5\r
+:10334000F11D97FDFA9582830895089590910C01DF\r
+:10335000992321F090910D01911109C020910E0146\r
+:1033600030910F01F9013296205F3F4F1FC0982F17\r
+:103370009695969596959F30F0F4E0910E01F09118\r
+:103380000F01E90FF11D877021E030E0A90102C0B3\r
+:10339000440F551F8A95E2F7CA01809591818923D0\r
+:1033A000818308953196E217F30729F090819813ED\r
+:1033B000F9CF1082F7CF089581E090E0E0910E01FF\r
+:1033C000F0910F01E80FF91F1082019680319105ED\r
+:1033D000A9F708959091CC01892B8093CC01089591\r
+:1033E00080959091CC0189238093CC01089510920F\r
+:1033F000CC0108959091CB01892B8093CB01089546\r
+:1034000080959091CB0189238093CB0108951092F0\r
+:10341000CB0108959091CA01892B8093CA01089528\r
+:1034200080959091CA0189238093CA0108951092D2\r
+:10343000CA0108958093B90108951092B9010895C1\r
+:1034400080910E0190910F01FC0131969C01205F4B\r
+:103450003F4F80E0919191118F5FE217F307D1F711\r
+:103460000895E0910E01F0910F018091CC018083CD\r
+:10347000E0910E01F0910F0190818091CB01892B99\r
+:103480008083E0910E01F0910F0190818091CA013B\r
+:10349000892B80838091B901882361F0E0910E012E\r
+:1034A000F0910F019081892B80830E94201A811155\r
+:1034B0001092B90180910E0190910F010C949D0E14\r
+:1034C000CF92DF92EF92FF926C01EE24FF24C114A1\r
+:1034D000D104E104F10421F0C701B60120E101C0EB\r
+:1034E00020E0C72ED82EE92EFF24C114D104E10418\r
+:1034F000F10419F0285FC701B6016B017C0154E0AB\r
+:10350000F694E794D794C7945A95D1F7C114D1048F\r
+:10351000E104F10419F02C5FC701B6016B017C01D5\r
+:1035200042E0F694E794D794C7944A95D1F7C11432\r
+:10353000D104E104F10419F02E5FC701B601DC01EA\r
+:10354000CB01B695A79597958795892B8A2B8B2BC1\r
+:1035500009F02F5F822FFF90EF90DF90CF900895BA\r
+:103560008091E601843021F11092CE0120E488E1BF\r
+:1035700090E00FB6F894A895809360000FBE20935A\r
+:10358000600080E00E948A0783B7817F846083BFE8\r
+:1035900083B7816083BF7894889583B78E7F83BF1C\r
+:1035A00088E10FB6F89480936000109260000FBE1F\r
+:1035B000089508950895CF930E94D91A0E947D041A\r
+:1035C0000E94DA1AC0E08C2F0E946B05811104C0A2\r
+:1035D000CF5FCE30C1F701C081E0CF9108950E9446\r
+:1035E00021140E94910E0C948A0782E084BD93E01E\r
+:1035F00095BD9AEF97BD80936E0008952FB7F8940C\r
+:103600008091CF019091D001A091D101B091D201D0\r
+:103610002FBF0895CF92DF92EF92FF920F931F93E7\r
+:103620002FB7F8944091CF015091D0016091D10112\r
+:103630007091D2012FBF6A017B01EE24FF248C011F\r
+:1036400020E030E0C016D106E206F30610F4415047\r
+:1036500051099A01281B390BC9011F910F91FF9045\r
+:10366000EF90DF90CF9008951F920F920FB60F92B8\r
+:1036700011248F939F93AF93BF938091CF0190912B\r
+:10368000D001A091D101B091D2010196A11DB11D2F\r
+:103690008093CF019093D001A093D101B093D20138\r
+:1036A000BF91AF919F918F910F900FBE0F901F9080\r
+:1036B00018950E948E0BF8942FEF87EA91E621501F\r
+:1036C00080409040E1F700C0000087E090EBDC0113\r
+:1036D0008093EF019093F001A093F101B093F20178\r
+:1036E0009CE088E10FB6F894A895809360000FBE27\r
+:1036F00090936000FFCFEF92FF920F931F93CF93B1\r
+:10370000DF93D82FC0E08C2F0E946B0500E010E003\r
+:10371000E82EF12CC701002E02C0959587950A94DA\r
+:10372000E2F780FD06C00F5F1F4F0630110591F7CD\r
+:1037300009C0602F7C2F80E00E943206D813F3CF9F\r
+:1037400081E004C0CF5FCE30F1F680E0DF91CF9111\r
+:103750001F910F91FF90EF900895CF93C82F8CE2A7\r
+:103760000E947B1B882321F08C2FCF910C947B1B14\r
+:1037700080E0CF910895CF930E94021D811102C075\r
+:103780000E94E81CC5E6C15049F00E947D048FE309\r
+:103790009CE90197F1F700C00000F5CF89E20E9493\r
+:1037A000AD1B811113C18AE20E94AD1B81110E94E1\r
+:1037B000E81C85E00E94AD1B81110E94591B0E94EC\r
+:1037C0000D1D8093CD0187E00E94AD1B8823A9F1D8\r
+:1037D0008BE10E94AD1B882351F08091CD0181FBCC\r
+:1037E000222720F991E0922790FB81F90EC08EE00C\r
+:1037F0000E94AD1B882361F08091CD0182FB2227BE\r
+:1038000020F991E0922790FB82F98093CD0115C0B9\r
+:1038100080E10E94AD1B9091CD01882341F093FB84\r
+:10382000222720F981E0822780FB93F904C0892FA9\r
+:10383000809580FB90F99093CD018091CD010E94FD\r
+:10384000111D0E941F1D8093E00180EE0E94AD1BA0\r
+:10385000882341F08091E001982F909590FB80F9AA\r
+:103860008093E00189E30E94AD1B882359F0809189\r
+:10387000E00181FB222720F991E0922790FB81F95A\r
+:103880008093E00182EE0E94AD1B882359F0809165\r
+:10389000E00182FB222720F991E0922790FB82F938\r
+:1038A0008093E00186EE0E94AD1B882359F0809141\r
+:1038B000E00183FB222720F991E0922790FB83F916\r
+:1038C0008093E00183EE0E94AD1B882359F0809124\r
+:1038D000E00184FB222720F991E0922790FB84F9F4\r
+:1038E0008093E00185E30E94AD1B882359F080910D\r
+:1038F000E00185FB222720F991E0922790FB85F9D2\r
+:103900008093E00181E30E94AD1B882359F08091F0\r
+:10391000E00186FB222720F991E0922790FB86F9AF\r
+:103920008093E00181E10E94AD1B882359F08091D2\r
+:10393000E00187FB222720F991E0922790FB87F98D\r
+:103940008093E0018091E0010E94231D8091E001BD\r
+:1039500087FB882780F980930D0187E20E94AD1BC9\r
+:10396000C82F8EE10E94AD1B8111C2608FE10E94C1\r
+:10397000AD1B8111C46080E20E94AD1B8111C86043\r
+:1039800081E20E94AD1B8111C06182E20E94AD1BE9\r
+:103990008111C06283E20E94AD1B8111C06484E288\r
+:1039A0000E94AD1B882311F0C06802C0CC2329F00F\r
+:1039B0008C2F0E941A1D6C2F03C00E94161D682FA9\r
+:1039C00070E080E090E0CF910C94DD17CF910895E6\r
+:1039D0006DEE7EEF80E090E00E94542360E082E094\r
+:1039E00090E00E94462360E083E090E00E9446233E\r
+:1039F00060E084E090E00E94462360E085E090E093\r
+:103A00000C94462380E090E00E94402321E08D3E0C\r
+:103A10009E4F09F020E0822F089582E090E00C9400\r
+:103A20003823682F82E090E00C94462383E090E0F6\r
+:103A30000C943823682F83E090E00C94462384E0B4\r
+:103A400090E00C943823682F84E090E00C94462397\r
+:103A50008091D50180FF0BC06091130185E0689FC4\r
+:103A6000B001112475956795759567952BC081FFF9\r
+:103A700009C06091130185E0689FB001112475951C\r
+:103A8000679520C082FF07C06091130185E0689FA1\r
+:103A9000B001112417C09091D6019923D1F0609103\r
+:103AA0001201961788F72091130185E0289F900155\r
+:103AB0001124929FA001939F500D112470E0CA0120\r
+:103AC0000E940A236038710540F46115710539F0D0\r
+:103AD00002C065E070E0862F08958FE7089581E0C9\r
+:103AE00008958091D50180FF08C06091110170E0B8\r
+:103AF000759567957595679521C081FF06C06091A2\r
+:103B0000110170E07595679519C082FF04C060913E\r
+:103B1000110170E010C09091D6019923C1F060911D\r
+:103B200010019617A0F780911101899FC0011124FF\r
+:103B300070E00E940A236038710528F46115710550\r
+:103B400021F0862F08958FE7089581E0089561E0C0\r
+:103B500070E0F4CF803F21F40E94281D819504C0BD\r
+:103B6000813F29F40E94281D8093D9010895823F46\r
+:103B700021F40E94281D819504C0833F29F40E94EE\r
+:103B8000281D8093D8010895893F19F40E94711D62\r
+:103B900005C08A3F31F40E94711D81958093DA013E\r
+:103BA00008958B3F21F40E94711D819504C08C3FC4\r
+:103BB00029F40E94711D8093DB010895843F21F454\r
+:103BC0008091D701816017C0853F21F48091D70192\r
+:103BD000826011C0863F21F48091D70184600BC0C0\r
+:103BE000873F21F48091D701886005C0883F31F478\r
+:103BF0008091D70180618093D70108958D3F21F492\r
+:103C00008091D50181600BC08E3F21F48091D50158\r
+:103C1000826005C08F3F29F48091D5018460809334\r
+:103C2000D5010895803F39F48091D90187FF6CC098\r
+:103C30001092D90169C0813F29F48091D9011816E9\r
+:103C4000BCF362C09091D801823F29F497FF5CC019\r
+:103C50001092D80159C0833F19F41916CCF354C0FF\r
+:103C6000893F41F48091DA0118160CF04DC0109292\r
+:103C7000DA014AC08A3F29F48091DA0187FF44C003\r
+:103C8000F6CF8B3F39F48091DB0187FF3DC0109266\r
+:103C9000DB013AC08C3F29F48091DB011816BCF39C\r
+:103CA00033C0843F21F48091D7018E7F17C0853FB8\r
+:103CB00021F48091D7018D7F11C0863F21F480913E\r
+:103CC000D7018B7F0BC0873F21F48091D701877F7D\r
+:103CD00005C0883F31F48091D7018F7E8093D70152\r
+:103CE00013C08D3F21F48091D5018E7F0BC08E3F94\r
+:103CF00021F48091D5018D7F05C08F3F29F48091FB\r
+:103D0000D5018B7F8093D5018091D80181110EC0A0\r
+:103D10008091D90181110AC08091DA01811106C018\r
+:103D20008091DB01811102C01092D601089587EDC8\r
+:103D300091E00E94A80E0E94FE1A9093D4018093F5\r
+:103D4000D30108951F93CF93DF938091D301909176\r
+:103D5000D4010E940A1BAC019091D601992321F055\r
+:103D60002091140130E006C0209115018AE0289FBF\r
+:103D7000900111244217530708F486C08091D8019E\r
+:103D8000C091D901D091DA011091DB01811107C0F6\r
+:103D9000C11176C0D11174C0111172C075C09F3F9E\r
+:103DA00019F09F5F9093D601181624F40E94281DE5\r
+:103DB0008093D8018091D80187FF05C00E94281DFB\r
+:103DC00081958093D8011C1624F40E94281D8093AD\r
+:103DD000D9018091D90187FF05C00E94281D8195D6\r
+:103DE0008093D9016091D801662339F1C091D9013E\r
+:103DF000CC2319F1772767FD7095872F972F0E94A5\r
+:103E00001B2223E333E343E35FE30E947F220E940C\r
+:103E1000E8216093D8016C2F772767FD7095872F75\r
+:103E2000972F0E941B2223E333E343E35FE30E94C7\r
+:103E30007F220E94E8216093D9011D1624F40E947C\r
+:103E4000711D8093DA018091DA0187FF05C00E941D\r
+:103E5000711D81958093DA01111624F40E94711D61\r
+:103E60008093DB018091DB0187FF05C00E94711DFB\r
+:103E700081958093DB01DF91CF911F910C94971E68\r
+:103E80009F3F09F08ECF96CFDF91CF911F9108957C\r
+:103E9000E7EDF1E085E0DF011D928A95E9F71092E8\r
+:103EA000D6011092D5010895833081F128F4813034\r
+:103EB00059F08230D1F00895853009F449C0B8F145\r
+:103EC000863009F456C0089580911501262F30E000\r
+:103ED000280F311D2F3F310524F4680F6093150121\r
+:103EE00008958FEF80931501089580911401262F76\r
+:103EF00030E0280F311D2F3F310524F4680F609307\r
+:103F0000140108958FEF8093140108958091130197\r
+:103F1000262F30E0280F311D2F3F310524F4680F84\r
+:103F20006093130108958FEF80931301089580919A\r
+:103F30001201262F30E0280F311D2F3F310524F4C8\r
+:103F4000680F6093120108958FEF80931201089516\r
+:103F500080911101262F30E0280F311D2F3F3105B0\r
+:103F600024F4680F6093110108958FEF809311017D\r
+:103F7000089580911001262F30E0280F311D2F3F2A\r
+:103F8000310524F4680F6093100108958FEF80933A\r
+:103F900010010895833011F128F4813049F0823006\r
+:103FA00091F00895853081F120F18630C1F10895B6\r
+:103FB00080911501681720F4861B809315010895E0\r
+:103FC00010921501089580911401681720F4861B42\r
+:103FD00080931401089510921401089580911301A3\r
+:103FE000681720F4861B8093130108951092130123\r
+:103FF000089580911201681720F4861B80931201A6\r
+:10400000089510921201089580911101681720F40B\r
+:10401000861B8093110108951092110108958091DB\r
+:104020001001681720F4861B8093100108951092E8\r
+:10403000100108950F931F938D3109F46AC008F0A1\r
+:104040003FC08E3009F484C0C0F4873009F46DC0DD\r
+:1040500068F4863009F0B5C08091CD01817F8E7FF4\r
+:104060008093CD0181E08093DD01ACC0883009F4FC\r
+:1040700057C08B3009F46AC0A4C0863109F466C009\r
+:1040800078F4803109F477C0813109F09AC00E9438\r
+:10409000211490910D0181E0892780930D0156C074\r
+:1040A000893109F453C08B3109F08BC08091CD0167\r
+:1040B00081FB222720F991E0922790FB81F951C0E2\r
+:1040C000853309F475C048F4873209F471C008F4E7\r
+:1040D0005EC0893209F46CC074C0833430F48A3312\r
+:1040E00008F053C0883391F16CC0833409F460C088\r
+:1040F000883409F066C00E9421140FEF13ED20E30D\r
+:10410000015010402040E1F700C000000E94591B00\r
+:104110001DC00E94A2210E94910E0E948A0716C013\r
+:104120000E940D1D0E941F1D11C09091CD01892F6D\r
+:104130008095817080FB90F929F09660986090934B\r
+:10414000CD0140C0997F977F9093CD0181E03AC027\r
+:104150008091CD0182FB222720F991E0922790FBEC\r
+:1041600082F98093CD01992389F38091CD018160FB\r
+:104170008093CD01EBCF8091CD0183FB222720F9E5\r
+:1041800091E0922790FB83F9ECCF895301C08D51C8\r
+:1041900041E050E060E070E08A019B0104C0000F44\r
+:1041A000111F221F331F8A95D2F7C901B80104C01D\r
+:1041B00061E070E080E090E00E94DD170E94211431\r
+:1041C000C5CF80E01F910F91089580E0089580E0B1\r
+:1041D0000895CF93C82F8091DD01813079F018F0D8\r
+:1041E0008230E9F187C0E0910E01F0910F018081EA\r
+:1041F000813169F0823209F07FC009C0E0910E017F\r
+:10420000F0910F018081813111F0823261F48C2FA5\r
+:104210000E94E520811104C08C2F0E941A201DC02D\r
+:1042200081E090E01AC08C2F0E94E720811114C019\r
+:10423000C43179F048F4CB3079F0C03109F060C076\r
+:1042400082E08093DD0108C0C93219F0C83321F043\r
+:1042500057C01092DD0154C081E0817053C0C93253\r
+:1042600089F118F5C43171F1A8F4C73009F046C0DE\r
+:104270008AE08093150194E19093140193E0909368\r
+:1042800013018093120188E08093110188E28093EA\r
+:10429000100134C0CE51C63088F5EC2FF0E0E65D59\r
+:1042A000FE4F80818093DC0129C0CE34E9F020F4F8\r
+:1042B000CB3421F56AE013C0C13579F0C235F1F491\r
+:1042C00061E00DC08091DC01882319F01092DC01BF\r
+:1042D00015C081E08093DD0115C061E006C08091CA\r
+:1042E000DC010E94541F0AC06AE08091DC010E9438\r
+:1042F000CA1F04C01092DD0180E004C081E002C04A\r
+:1043000080E0ABCFCF910895E1E8F0E08081886054\r
+:1043100080838081816080838FB7F89493E090934D\r
+:10432000890090ED909388008FBF0895EFE6F0E04C\r
+:104330008081826080830895EFE6F0E080818D7F48\r
+:1043400080830895EFE6F0E0908182E08927808302\r
+:1043500008951F920F920FB60F9211242F933F933F\r
+:104360004F935F936F937F938F939F93AF93BF937D\r
+:10437000EF93FF938091DE019091DF01019690937E\r
+:10438000DF018093DE01811103C082E00E948A0771\r
+:10439000E091DF01E695E695F0E0EA5CFA4FE49102\r
+:1043A0008091DE018E1303C080E00E948A07FF9196\r
+:1043B000EF91BF91AF919F918F917F916F915F919D\r
+:1043C0004F913F912F910F900FBE0F901F90189516\r
+:1043D00004D06894B1118DC0089570D088F09F57B3\r
+:1043E00090F0B92F9927B751A0F0D1F0660F771F41\r
+:1043F000881F991F1AF0BA95C9F712C0B13081F021\r
+:1044000077D0B1E0089574C0672F782F8827B85F00\r
+:1044100039F0B93FCCF3869577956795B395D9F781\r
+:104420003EF490958095709561957F4F8F4F9F4F8B\r
+:104430000895E89409C097FB3EF490958095709597\r
+:1044400061957F4F8F4F9F4F9923A9F0F92F96E9E0\r
+:10445000BB279395F695879577956795B795F11155\r
+:10446000F8CFFAF4BB0F11F460FF1BC06F5F7F4FF2\r
+:104470008F4F9F4F16C0882311F096E911C0772304\r
+:1044800021F09EE8872F762F05C0662371F096E80D\r
+:10449000862F70E060E02AF09A95660F771F881FDC\r
+:1044A000DAF7880F9695879597F9089557FD9058F4\r
+:1044B000440F551F59F05F3F71F04795880F97FBE8\r
+:1044C000991F61F09F3F79F08795089512161306A2\r
+:1044D0001406551FF2CF4695F1DF08C016161706D1\r
+:1044E0001806991FF1CF8695710561050894089506\r
+:1044F000E894BB2766277727CB0197F908950BD05F\r
+:1045000078C069D028F06ED018F0952309F05AC011\r
+:104510005FC01124EECFCADFA0F3959FD1F3950FB2\r
+:1045200050E0551F629FF001729FBB27F00DB11D37\r
+:10453000639FAA27F00DB11DAA1F649F6627B00DC7\r
+:10454000A11D661F829F2227B00DA11D621F739FB0\r
+:10455000B00DA11D621F839FA00D611D221F749FBE\r
+:104560003327A00D611D231F849F600D211D822F05\r
+:10457000762F6A2F11249F5750408AF0E1F088234C\r
+:104580004AF0EE0FFF1FBB1F661F771F881F915059\r
+:104590005040A9F79E3F510570F014C0AACF5F3F6D\r
+:1045A000ECF3983EDCF3869577956795B795F7958C\r
+:1045B000E7959F5FC1F7FE2B880F911D9695879514\r
+:1045C00097F9089597F99F6780E870E060E0089593\r
+:1045D0009FEF80EC089500240A941616170618061B\r
+:1045E0000906089500240A941216130614060506F7\r
+:1045F0000895092E0394000C11F4882352F0BB0F88\r
+:1046000040F4BF2B11F460FF04C06F5F7F4F8F4FEA\r
+:104610009F4F089597FB072E16F4009407D077FD5F\r
+:1046200009D00E94242307FC05D03EF49095819583\r
+:104630009F4F0895709561957F4F0895EE0FFF1F6E\r
+:104640000590F491E02D0994AA1BBB1B51E107C012\r
+:10465000AA1FBB1FA617B70710F0A61BB70B881F12\r
+:10466000991F5A95A9F780959095BC01CD010895A1\r
+:10467000F999FECF92BD81BDF89A992780B508952A\r
+:10468000A8E1B0E042E050E00C945B23262FF999BA\r
+:10469000FECF1FBA92BD81BD20BD0FB6F894FA9A25\r
+:1046A000F99A0FBE019608950E944623272F0C9475\r
+:1046B0004723DC01CB01FC01F999FECF06C0F2BD16\r
+:1046C000E1BDF89A319600B40D9241505040B8F7D0\r
+:0646D0000895F894FFCFED\r
+:1046D60020028C071A08F707C3078F070101BA01E2\r
+:1046E60028080A03140A3F4D3639F704AA0474044D\r
+:1046F6003B04CE03E7030004190401020304050684\r
+:044706000708090097\r
+:00000001FF\r
diff --git a/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx-hjkl/romanzolotarev-norman-plover-osx-hjkl.png b/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx-hjkl/romanzolotarev-norman-plover-osx-hjkl.png
new file mode 100644 (file)
index 0000000..cdc535f
Binary files /dev/null and b/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx-hjkl/romanzolotarev-norman-plover-osx-hjkl.png differ
index 6f182d0d832b0974b33d5e0884c577279802ca75..804c52a767779f94f0fa0e70229b4f2852adcd6c 100644 (file)
@@ -5,7 +5,10 @@ There are four layers:
 - **BASE** is [Norman layout](https://normanlayout.info/).
 - **SYMB** for numbers and symbols.
 - **PLVR** is optimized for [Plover](http://www.openstenoproject.org).
-- **ARRW** for navigation.
+- **ARRW** for navigation (same fingers for arrows as IJKL on QWERTY).
+
+Looking for HJKL arrows? [Here we
+go](../romanzolotarev-norman-plover-osx-hjkl/).
 
 [![keyboard-layout](romanzolotarev-norman-plover-osx.png)](http://www.keyboard-layout-editor.com/#/gists/8ebcb701ecb763944417)
 
@@ -30,6 +33,10 @@ There are four layers:
 - Tap `F3`, `F4`, `F5`, `F6` to resize a window via [Divvy](http://mizage.com/divvy/).
 - Tap `F14`, `F15` to adjust display brightness.
 
+**IMPORTANT**: If you have another keyboard connected via Bluetooth, then
+`F14` and `F15` will not work. Turn off that Bluetooth keyboard. Re-plug
+you ErgoDox. Enjoy!
+
 ## CTRL/ESC
 
 Both of those keys are frequently used in Vim.
index c1d0bd5dcf8d280862c8677ccdee5ea5444d2ccb..4afb42c8fd515033910784d665146070c0823485 100644 (file)
@@ -15,7 +15,7 @@ This requires a little bit of familiarity with coding.
 
 1. Go to https://github.com/jackhumbert/qmk_firmware and read the Readme at the base of this repository, top to bottom. Then come back here :)
 2. Clone the repository (download it)
-3. Set up a build environment as per [pjrc.com/teensy/gcc.html](https://www.pjrc.com/teensy/gcc.html)
+3. Set up a build environment as per [the build guide](/BUILD_GUIDE.md) 
     - Using a Mac and have homebrew? just run `brew tap osx-cross/avr && brew install avr-libc`
 4. Copy `keymaps/default/keymap.c` into `keymaps/your_name/keymap.c` (for example, `keymaps/german/keymap.c`)
 5. Edit this file, changing keycodes to your liking (see "Finding the keycodes you need" below). Try to edit the comments as well, so the "text graphics" represent your layout correctly. See below for more tips on sharing your work.
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..a7541b0b87411f39b94b35a33959f72326a032c3 100644 (file)
@@ -26,7 +26,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * |------+------+------+------+------+------|------+------+------+------+------+------|
  * | Shift|   Z  |   X  |   C  |   V  |   B  |   N  |   M  |   ,  |   .  |   /  |Enter |
  * |------+------+------+------+------+------+------+------+------+------+------+------|
- * | Brite| Ctrl | Alt  | GUI  |Raise |    Space    |Lower | Left | Down |  Up  |Right |
+ * | Brite| Ctrl | Alt  | GUI  |Lower |    Space    |Raise | Left | Down |  Up  |Right |
  * `-----------------------------------------------------------------------------------'
  */
 [_QW] = {
@@ -44,7 +44,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * |------+------+------+------+------+------|------+------+------+------+------+------|
  * | Shift|   Z  |   X  |   C  |   V  |   B  |   K  |   M  |   ,  |   .  |   /  |Enter |
  * |------+------+------+------+------+------+------+------+------+------+------+------|
- * | Brite| Ctrl | Alt  | GUI  |Raise |    Space    |Lower | Left | Down |  Up  |Right |
+ * | Brite| Ctrl | Alt  | GUI  |Lower |    Space    |Raise | Left | Down |  Up  |Right |
  * `-----------------------------------------------------------------------------------'
  */
 [_CM] = {
@@ -62,7 +62,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * |------+------+------+------+------+------|------+------+------+------+------+------|
  * | Shift|   ;  |   Q  |   J  |   K  |   X  |   B  |   M  |   W  |   V  |   Z  |Enter |
  * |------+------+------+------+------+------+------+------+------+------+------+------|
- * | Brite| Ctrl | Alt  | GUI  |Raise |    Space    |Lower | Left | Down |  Up  |Right |
+ * | Brite| Ctrl | Alt  | GUI  |Lower |    Space    |Raise | Left | Down |  Up  |Right |
  * `-----------------------------------------------------------------------------------'
  */
 [_DV] = {
@@ -76,11 +76,11 @@ 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 |
  * |------+------+------+------+------+------+------+------+------+------+------+------|
- * | Brite| Ctrl | Alt  | GUI  |Raise |    Space    |Lower | Next | Vol- | Vol+ | Play |
+ * | Brite| Ctrl | Alt  | GUI  |Lower |    Space    |Raise | Next | Vol- | Vol+ | Play |
  * `-----------------------------------------------------------------------------------'
  */
 [_RS] = {
@@ -94,11 +94,11 @@ 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 |
  * |------+------+------+------+------+------+------+------+------+------+------+------|
- * | Brite| Ctrl | Alt  | GUI  |Raise |    Space    |Lower | Next | Vol- | Vol+ | Play |
+ * | Brite| Ctrl | Alt  | GUI  |Lower |    Space    |Raise | Next | Vol- | Vol+ | Play |
  * `-----------------------------------------------------------------------------------'
  */
 [_LW] = {
diff --git a/keyboard/planck/keymaps/nico.c b/keyboard/planck/keymaps/nico.c
new file mode 100644 (file)
index 0000000..e81fd80
--- /dev/null
@@ -0,0 +1,69 @@
+// 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 "planck.h"
+#include "backlight.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
+
+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_LCTL,  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_ESC, KC_LALT, KC_LGUI, F(1), KC_SPC,  KC_SPC,  F(2), 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_LCTL,  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_ESC, KC_LALT, KC_LGUI, F(1), KC_SPC,  KC_SPC,  F(2), 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_LCTL,  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_ESC, KC_LALT, KC_LGUI, F(1), KC_SPC,  KC_SPC,  F(2), 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},
+  {M(0), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F14,  KC_F15,  KC_TRNS, KC_MFFD, 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},
+  {M(0), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F14,  KC_F15,  KC_TRNS, KC_MFFD, KC_VOLD, KC_VOLU, KC_MPLY}
+}
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+  [1] = ACTION_LAYER_TAP_KEY(MO(_LW), KC_BSPC),  // Tap for backspace, hold for LOWER
+  [2] = ACTION_LAYER_TAP_KEY(MO(_RS), KC_ENT),  // Tap for enter, hold for RAISE
+};
+
+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);
+            backlight_step();
+          } else {
+            unregister_code(KC_RSFT);
+          }
+        break;
+      }
+    return MACRO_NONE;
+};
diff --git a/keyboard/planck/keymaps/tak3over.c b/keyboard/planck/keymaps/tak3over.c
new file mode 100644 (file)
index 0000000..7d8243d
--- /dev/null
@@ -0,0 +1,130 @@
+// 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.
+//
+//Dropped the Dvorak layer and added two my layer buttons.  Both Raise and lower can be accessed from either side now.
+
+#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 _LW 2
+#define _RS 3
+#define _FN 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  |Func  |Lower |    Space    |Raise | 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(_FN), 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  |Func  |Lower |    Space    |Raise | 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(_FN), 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 |   _  |   +  |   {  |   }  |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Ctrl | Alt  | GUI  |Func  |Lower |    Space    |Raise | Left | Down |  Up  |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_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_PIPE},
+  {KC_TRNS, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, 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}
+},
+/* Lower
+ * ,-----------------------------------------------------------------------------------.
+ * |   ~  |   !  |   @  |   #  |   $  |   %  |   ^  |   &  |   *  |   (  |   )  | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Esc  | Reset| Ins  | Home | PGUP |Colemk| Left |   -  |   =  |   [  |   ]  |  \   |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift| Brite| Del  | End  | PGDN |Qwerty| Del  |   _  |   +  |   {  |   }  |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Ctrl | Alt  | GUI  |Func  |Lower |    Space    |Raise | Left | Down |  Up  |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_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, RESET,   KC_INS,  KC_HOME, KC_PGUP, DF(_CM), KC_LEFT, KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS},
+  {KC_TRNS, M(0),    KC_DEL,  KC_END,  KC_PGDN, DF(_QW), KC_DEL,  KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, 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}
+},
+/* Function
+ * ,-----------------------------------------------------------------------------------.
+ * |   `  |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Esc  | GUI  |   X  |   C  |   V  |  Z   | Left | Down |  Up  |Right | Del  |  \   |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * |Shift | Ctrl |   X  |   C  |   V  |  Z   | Next | Mute | Vol- | Vol+ | Play |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Ctrl | Alt  | GUI  |Func  |Lower |    Space    |Raise | Left | Down |  Up  |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_FN] = {
+  {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_RGUI, KC_X,    KC_C,    KC_V,    KC_Z,    KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT, KC_DEL,  KC_BSLS},
+  {KC_TRNS, KC_RCTL, KC_X,    KC_C,    KC_V,    KC_Z,    KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPLY, 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}
+}
+};
+
+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 fe8731ec7b5486fef4c410e41ba70c404ce4fe5f..4b39cf1e8bd89ec8770d0ed8a198cb358b0aebaf 100644 (file)
@@ -1,28 +1,26 @@
 #include "planck.h"
 
 __attribute__ ((weak))
-void matrix_init_user(void) {
-
-}
+void matrix_init_user(void) {}
 
 __attribute__ ((weak))
-void matrix_scan_user(void) {
+void matrix_scan_user(void) {}
 
-}
+__attribute__ ((weak))
+void process_action_user(keyrecord_t *record) {}
 
 void matrix_init_kb(void) {
-       #ifdef BACKLIGHT_ENABLE
-       backlight_init_ports();
-       #endif
+#ifdef BACKLIGHT_ENABLE
+       backlight_init_ports();
+#endif
 
-       #ifdef RGBLIGHT_ENABLE
-               rgblight_init();
-       #endif
+#ifdef RGBLIGHT_ENABLE
+       rgblight_init();
+#endif
 
-
-    // Turn status LED on
-    DDRE |= (1<<6);
-    PORTE |= (1<<6);
+       // Turn status LED on
+       DDRE |= (1<<6);
+       PORTE |= (1<<6);
 
        matrix_init_user();
 }
@@ -30,3 +28,7 @@ void matrix_init_kb(void) {
 void matrix_scan_kb(void) {
        matrix_scan_user();
 }
+
+void process_action_kb(keyrecord_t *record) {
+       process_action_user(record);
+}
index e9566b92286e18e2149558f15429ec5fe51aa1f2..edcb5fbff6d84d549634ac9e38b7a285df882a3c 100644 (file)
@@ -42,5 +42,6 @@
 
 void matrix_init_user(void);
 void matrix_scan_user(void);
+void process_action_user(keyrecord_t *record);
 
 #endif
index 0145e44bc6b2697b5e1508e7fbb14014af1f1b92..664aff7321513479678306a283a16ee691b6d60f 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..7846707
--- /dev/null
@@ -0,0 +1,92 @@
+// 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},
+  {440.0*pow(2.0,(64)/12.0), 400},
+  {440.0*pow(2.0,(55)/12.0), 400},
+  {440.0*pow(2.0,(60)/12.0), 400},
+  {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, 5, 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..cfb7f08
--- /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/keymaps/nerdgasm/README.md b/keyboard/preonic/keymaps/nerdgasm/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/nerdgasm/keymap.c b/keyboard/preonic/keymaps/nerdgasm/keymap.c
new file mode 100644 (file)
index 0000000..818102f
--- /dev/null
@@ -0,0 +1,117 @@
+// 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[] = {
+
+};
+
+// Guitar Notes
+#define N_E 13180.5
+#define N_B 9870.8
+#define N_G 15680.0
+#define N_D 11740.7
+#define N_E 13180.5
+
+float start_up[][2] = {
+ { N_E, 500 },
+ { 0, 50 },
+ { N_E, 500 },
+ { 0, 50 },
+ { N_E, 500 },
+ { 0, 50 },
+ { N_B, 500 },
+ { 0, 50 },
+ { N_E, 1000 },
+ { 0, 50 },
+ { N_G, 1500 },
+ { 0, 50 },
+};
+
+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, 12, false);
+#endif
+}
+
+void process_action_user(keyrecord_t *record) {
+#ifdef AUDIO_ENABLE
+  if (record->event.pressed) {
+    float keypress[][2] = {
+      {440.0*pow(2.0,(record->event.key.col*7)/12.0), 600}
+    };
+    play_notes(&keypress, 1, false);
+  }
+#endif
+}
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..f639f24
--- /dev/null
@@ -0,0 +1,41 @@
+#include "preonic.h"
+
+__attribute__ ((weak))
+void matrix_init_user(void) {
+
+};
+
+__attribute__ ((weak))
+void matrix_scan_user(void) {
+
+};
+
+__attribute__ ((weak))
+void process_action_user(keyrecord_t *record) {
+
+};
+
+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);
+
+       matrix_init_user();
+};
+
+void matrix_scan_kb(void) {
+       matrix_scan_user();
+};
+
+void process_action_kb(keyrecord_t *record) {
+       process_action_user(record);
+}
\ No newline at end of file
diff --git a/keyboard/preonic/preonic.h b/keyboard/preonic/preonic.h
new file mode 100644 (file)
index 0000000..51ed9ba
--- /dev/null
@@ -0,0 +1,51 @@
+#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);
+void process_action_kb(keyrecord_t *record);
+
+#endif
diff --git a/keyboard/preonic/preonic_music.hex b/keyboard/preonic/preonic_music.hex
new file mode 100644 (file)
index 0000000..603693b
--- /dev/null
@@ -0,0 +1,1713 @@
+:100000000C9410030C9454030C9454030C94540358\r
+:100010000C9454030C9454030C9454030C94540304\r
+:100020000C9454030C9454030C9410170C94E21782\r
+:100030000C94BD290C9454030C9454030C94540355\r
+:100040000C9454030C9454030C9454030C945403D4\r
+:100050000C9454030C942A2A0C9454030C945403C7\r
+:100060000C9454030C9454030C9454030C945403B4\r
+:100070000C9454030C9454030C9454030C945403A4\r
+:100080000C94440E0C9454030C9454030C94540399\r
+:100090000C9454030C9454030C9454030C94540384\r
+:1000A0000C9454030C9454030C9454030763423689\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
+:10038000AA00A900AE00006000600060006000608C\r
+:10039000006000600060006000600060006000605D\r
+:1003A000006000600060006000600060006000604D\r
+:1003B000006000600060006000600060006000603D\r
+:1003C000006000600060006000600060006000602D\r
+:1003D000006000600060006000600060006000601D\r
+:1003E00000600060006000300100010001000100B9\r
+:1003F00001000100010000600060006000602A034D\r
+:1004000054006800650020005000720065006F0015\r
+:100410006E006900630020004B00650079006200F7\r
+:100420006F0061007200640000002C034F00720036\r
+:10043000740068006F006C0069006E006500610068\r
+:10044000720020004B006500790062006F006100BF\r
+:100450007200640073000000040309040902D00064\r
+:10046000060100A0FA0904000001030101000921AE\r
+:1004700011010001223F000705810308000A090459\r
+:1004800001000103010200092111010001224D00B8\r
+:100490000705820308000A090402000103000000A6\r
+:1004A0000921110100012236000705830308000A13\r
+:1004B00009040300020300000009211101000122C8\r
+:1004C0002000070584032000010705040320000124\r
+:1004D00009040400000101000009240100010900D1\r
+:1004E00001050904050002010300000724010001C1\r
+:1004F0004100062402010100062402020200092430\r
+:1005000003010301020100092403020401010100A7\r
+:100510000905060240000500000525010101090545\r
+:1005200085024000050000052501010312011001AC\r
+:1005300000000008EDFE61600100010200010631CB\r
+:10054000FF0974A1010975150025FF952075088123\r
+:10055000020976150025FF952075089102C0050156\r
+:100560000980A101850216010026B7001A01002AA0\r
+:10057000B700751095018100C0050C0901A1018526\r
+:1005800003160100269C021A01002A9C0275109590\r
+:10059000018100C005010902A1010901A1000509AD\r
+:1005A000190129051500250195057501810295019F\r
+:1005B000750381010501093009311581257F9502F7\r
+:1005C0007508810609381581257F95017508810612\r
+:1005D000050C0A38021581257F950175088106C032\r
+:1005E000C005010906A101050719E029E715002545\r
+:1005F00001950875018102950175088101050819A9\r
+:100600000129059505750191029501750391010573\r
+:1006100007190029FF150025FF950675088100C000\r
+:1006200011241FBECFEFDAE0DEBFCDBF04B603FE5C\r
+:1006300024C08091050490910604A0910704B09114\r
+:1006400008048730904BA740B04BB9F410920504D2\r
+:1006500010920604109207041092080414BE84B786\r
+:10066000877F84BF88E10FB6F89480936000109272\r
+:1006700060000FBEE0E0F8E3099512E0A0E0B1E011\r
+:10068000E6ECF9E602C005900D92A832B107D9F761\r
+:1006900014E0A8E2B2E001C01D92A530B107E1F775\r
+:1006A0000E94C8130C94E1340C94000061111DC029\r
+:1006B000FC018281882351F085EE0E94901E0E94E9\r
+:1006C000BC3080E290E0A0E0B0E007C085EE0E9480\r
+:1006D000581F81E090E0A0E0B0E08093E1029093A9\r
+:1006E000E202A093E302B093E40280E090E0089578\r
+:1006F0000E94370E40E050E069E070E080E091E059\r
+:100700000C94880F08950E948B036E9A769A0C942D\r
+:1007100078030C948203279A2F988FEF9FEF909382\r
+:100720008700809386008AE08093800089E180932F\r
+:1007300081000C94653081110BC080918000877F0F\r
+:100740008093800010928D0010928C002F98089555\r
+:100750002F98833041F480918000886080938000DE\r
+:100760008FEF9FEF12C0909180009860909380006F\r
+:1007700023E030E0281B3109220F331F8FEF9FEF5A\r
+:1007800002C0969587952A95E2F790938D00809305\r
+:100790008C0008958B3B910568F4883A910530F5FB\r
+:1007A000853A9105C0F48430910598F4019709F0D9\r
+:1007B0006FC071C0803E910508F46AC0883E910503\r
+:1007C00040F09C01205F31092031310508F060C004\r
+:1007D0005CC09C01A1C0853A910509F45FC0863ACE\r
+:1007E000910509F45EC023E830E496C0883A91058B\r
+:1007F00009F45AC0893A910509F459C08A3A910519\r
+:1008000009F458C08B3A910509F457C08C3A910508\r
+:1008100009F456C08D3A910509F455C0803B910505\r
+:1008200009F454C08E3A910509F453C08F3A9105EA\r
+:1008300009F452C0813B910509F451C0823B9105F6\r
+:1008400009F450C0833B910509F44FC0843B9105E6\r
+:1008500009F44EC0853B910509F44DC0863B9105D6\r
+:1008600009F44CC0873B910509F44BC0883B9105C6\r
+:1008700009F44AC0893B910509F449C08A3B9105B6\r
+:1008800009F048C02AE236E447C09C01306544C004\r
+:1008900020E030E041C021E030E03EC021E830E41B\r
+:1008A0003BC022E830E438C022EE34E435C029EE03\r
+:1008B00034E432C02AEE34E42FC025EB34E42CC0FB\r
+:1008C00026EB34E429C027EB34E426C02CEC34E4D6\r
+:1008D00023C02DEC34E420C023E835E41DC02AE811\r
+:1008E00035E41AC022E935E417C024E935E414C020\r
+:1008F00021E236E411C023E236E40EC024E236E4FD\r
+:100900000BC025E236E408C026E236E405C027E243\r
+:1009100036E402C020E034E4C90108959CE0799FE8\r
+:10092000F00111249CE3899FE00DF11D1124E60FD5\r
+:10093000F11DEE0FFF1FE25DFE4F25913491C901BD\r
+:100940000895880F991F82559040FC01259134919C\r
+:10095000C9010895880F991F825D9E4FFC01259162\r
+:100960003491C90108950E948E049C019A958115C5\r
+:100970009F4110F4C9010895C90190528115904119\r
+:1009800028F4C9019F700E94AA040895C9019053D8\r
+:100990008115904120F4C9019927906C0895C901EF\r
+:1009A0009054409728F4C9018F709927946D089549\r
+:1009B000203180E4380719F480E091ED0895213169\r
+:1009C00090E4390719F480E090ED0895223140E475\r
+:1009D000340719F480E092ED0895233180E438075C\r
+:1009E00019F480E093ED0895211590E53907A1F4FD\r
+:1009F0000E948B2340E065E088E491E00E94880F2C\r
+:100A00002FEF44E38CE0215040408040E1F700C0EC\r
+:100A100000000E944F2A1EC1213090E5390731F4B1\r
+:100A20008091F10281608093F10214C1C901905557\r
+:100A30008115904108F062C0432F55274F7055270C\r
+:100A400041305105F9F4C90174E0880F991F7A9576\r
+:100A5000E1F788279370B901E3E0660F771FEA9505\r
+:100A6000E1F760767727862B972B9C6823703327D6\r
+:100A700002C0440F551F2A95E2F74F715527842B6A\r
+:100A8000952B08954230510529F4922F8827816FC4\r
+:100A9000906A089543305105B9F4C90153E0880FB5\r
+:100AA000991F5A95E1F7807E97702370332741E0B4\r
+:100AB00050E002C0440F551F2A95E2F74F715527A9\r
+:100AC000842B952B9C6808954430510589F5C90104\r
+:100AD00043E0880F991F4A95E1F7807E9770237055\r
+:100AE000332741E050E002C0440F551F2A95E2F73A\r
+:100AF0004F715527842B952B9A680895C9019056FC\r
+:100B00008115904118F4C901906F0895C90190575B\r
+:100B10008115904120F4C9019F7090620895C90128\r
+:100B200090588115904120F4C9019F70906A0895F2\r
+:100B3000203E3105E0F4203C310568F521333105D4\r
+:100B400009F475C048F42932310509F46BC02A3222\r
+:100B5000310509F07BC075C02933310501F1223818\r
+:100B60003105E9F02533310509F070C051C0233E4D\r
+:100B70003105B1F140F4203E3105D1F0223E31057E\r
+:100B800009F064C01CC0263E310579F1273E3105CD\r
+:100B900009F05CC038C0C9010E94A1040895809189\r
+:100BA000020380FD02C081FF51C080EE90E04FC083\r
+:100BB0008091020380FFF9CF89E390E048C08091E3\r
+:100BC000020382FF0AC08091020384FF03C080E019\r
+:100BD00090E03DC083EE90E03AC082EE90E037C0F6\r
+:100BE0008091020382FFEFCFF8CF8091020383FF51\r
+:100BF00007C08091020384FDEACF87EE90E027C012\r
+:100C000086EE90E024C08091020383FFF2CFF8CFFC\r
+:100C10008091020385FF03C089E290E018C085E35C\r
+:100C200090E015C08091020385FDF9CFF5CF80914A\r
+:100C3000020386FF03C08AE290E009C081E390E0EE\r
+:100C400006C08091020386FDF9CFF5CFC9010E944D\r
+:100C5000CA030895089508950C942B065F926F922D\r
+:100C60007F928F929F92AF92BF92CF92DF92EF923C\r
+:100C7000FF920F931F93CF93DF93CDB7DEB72A97E1\r
+:100C80000FB6F894DEBF0FBECDBF9E012F5F3F4F62\r
+:100C90004E018BE0880E911C60E070E000E010E0F7\r
+:100CA000E12CF12CC12CD12CA12CB12C8AE0782E76\r
+:100CB000622E532E41E050E0E3E9F1E0A62DB52D80\r
+:100CC000872D01900D928A95E1F7F901819191911B\r
+:100CD0009F01FC01E07FFF27E032F10559F48F709E\r
+:100CE0009927FA0102C0EE0FFF1F8A95E2F7AE2A9C\r
+:100CF000BF2A37C0E033F10559F48F709927FA0104\r
+:100D000002C0EE0FFF1F8A95E2F7CE2ADF2A29C024\r
+:100D1000E034F10559F48F709927FA0102C0EE0F03\r
+:100D2000FF1F8A95E2F7EE2AFF2A1BC0E035F10586\r
+:100D300059F48F709927FA0102C0EE0FFF1F8A95B0\r
+:100D4000E2F70E2B1F2B0DC0E036F10551F48F702A\r
+:100D50009927FA0102C0EE0FFF1F8A95E2F76E2B6A\r
+:100D60007F2B2815390509F0A7CF94B18A2D8095DE\r
+:100D7000892384B985B18A2985B997B18C2D80954D\r
+:100D8000892387B988B18C2988B99AB18E2D80952D\r
+:100D900089238AB98BB18E298BB99DB1802F80951B\r
+:100DA00089238DB98EB1802B8EB990B3862F809513\r
+:100DB000892380BB81B3862B81BB2A960FB6F8941A\r
+:100DC000DEBF0FBECDBFDF91CF911F910F91FF907E\r
+:100DD000EF90DF90CF90BF90AF909F908F907F90DB\r
+:100DE0006F905F9008955F926F927F928F929F9223\r
+:100DF000AF92BF92CF92DF92EF92FF920F931F9329\r
+:100E0000CF93DF93CDB7DEB768970FB6F894DEBF08\r
+:100E10000FBECDBF85B7806885BF85B7806885BFA9\r
+:100E20000E942E069E012F5F3F4F4E0189E1880EE2\r
+:100E3000911C60E070E000E010E0E12CF12CC12C8E\r
+:100E4000D12CA12CB12C98E1792E622E532E41E0A9\r
+:100E500050E0EDE9F1E0A62DB52D872D01900D9222\r
+:100E60008A95E1F7F901819191919F01FC01E07F61\r
+:100E7000FF27E032F10559F48F709927FA0102C07B\r
+:100E8000EE0FFF1F8A95E2F7AE2ABF2A37C0E03384\r
+:100E9000F10559F48F709927FA0102C0EE0FFF1F78\r
+:100EA0008A95E2F7CE2ADF2A29C0E034F10559F409\r
+:100EB0008F709927FA0102C0EE0FFF1F8A95E2F7A3\r
+:100EC000EE2AFF2A1BC0E035F10559F48F709927EF\r
+:100ED000FA0102C0EE0FFF1F8A95E2F70E2B1F2BBF\r
+:100EE0000DC0E036F10551F48F709927FA0102C068\r
+:100EF000EE0FFF1F8A95E2F76E2B7F2B2815390521\r
+:100F000009F0A7CF94B18A2D8095892384B985B142\r
+:100F10008A2985B997B18C2D8095892387B988B1A5\r
+:100F20008C2988B99AB18E2D809589238AB98BB185\r
+:100F30008E298BB99DB1802F809589238DB98EB173\r
+:100F4000802B8EB990B3862F8095892380BB81B387\r
+:100F5000862B81BB10922902109228021092330234\r
+:100F60001092320210922B0210922A021092350235\r
+:100F70001092340210922D0210922C02109237021D\r
+:100F80001092360210922F0210922E021092390205\r
+:100F900010923802109231021092300210923B02ED\r
+:100FA00010923A0268960FB6F894DEBF0FBECDBF1E\r
+:100FB000DF91CF911F910F91FF90EF90DF90CF9035\r
+:100FC000BF90AF909F908F907F906F905F900C94A8\r
+:100FD00083035F926F927F928F929F92AF92BF92A4\r
+:100FE000CF92DF92EF92FF920F931F93CF93DF93F5\r
+:100FF000CDB7DEB7A2970FB6F894DEBF0FBECDBF58\r
+:101000007E0149E1E40EF11C22E3C22E22E0D22E41\r
+:101010005E0153E2A50EB11C3AE0532E470101E0F8\r
+:1010200010E048E1642E55E0752EE3E9F1E0D401CB\r
+:10103000852D01900D928A95E1F7F70181919191AB\r
+:101040007F019C01207F33272032310589F424B1B0\r
+:101050008F709927A80102C0440F551F8A95E2F7A7\r
+:10106000CA01242B24B995B18095892385B94FC035\r
+:101070002033310589F427B18F709927F80102C018\r
+:10108000EE0FFF1F8A95E2F7CF012E2B27B998B1FB\r
+:101090008095892388B93BC02034310589F42AB171\r
+:1010A0008F709927A80102C0440F551F8A95E2F757\r
+:1010B000CA01242B2AB99BB1809589238BB927C0FB\r
+:1010C0002035310589F42DB18F709927F80102C0C0\r
+:1010D000EE0FFF1F8A95E2F7CF012E2B2DB99EB19F\r
+:1010E000809589238EB913C02036310581F420B351\r
+:1010F0008F709927A80102C0440F551F8A95E2F707\r
+:10110000CA01242B20BB91B38095892381BB50EA6F\r
+:101110005A95F1F7BE016F5F7F4F80E090E020E0CD\r
+:1011200030E0EDE9F1E0DE011196462D01900D92DF\r
+:101130004A95E1F7FB0141915191BF01FA01E07F2E\r
+:10114000FF27E032F10511F4E3B113C0E033F105FC\r
+:1011500011F4E6B10EC0E034F10511F4E9B109C0B3\r
+:10116000E035F10511F4ECB104C0E036F105B9F455\r
+:10117000EFB1F0E04F70552702C0F595E7954A951D\r
+:10118000E2F7E0FD08C0A801022E02C0440F551F7F\r
+:101190000A94E2F702C040E050E0842B952B2F5FC9\r
+:1011A0003F4F2C30310509F0BCCFF6012081318151\r
+:1011B0002817390721F091838083709270010E9473\r
+:1011C0002E06F2E0CF0ED11CEA14FB0409F02DCF5D\r
+:1011D000809170018823A1F1815080937001882350\r
+:1011E00039F08FE99FE00197F1F700C0000028C0B7\r
+:1011F00080913202909133029093290280932802C9\r
+:10120000809134029091350290932B0280932A02B0\r
+:10121000809136029091370290932D0280932C0298\r
+:10122000809138029091390290932F0280932E0280\r
+:1012300080913A0290913B02909331028093300268\r
+:101240000E94890381E0A2960FB6F894DEBF0FBE1C\r
+:10125000CDBFDF91CF911F910F91FF90EF90DF9065\r
+:10126000CF90BF90AF909F908F907F906F905F9046\r
+:101270000895E82FF0E0EE0FFF1FE85DFD4F80813D\r
+:10128000918108950895CF92DF92EF92FF920F938C\r
+:101290001F93CF93DF93CDB7DEB7CC5BD2400FB6B1\r
+:1012A000F894DEBF0FBECDBF8C01862F642F88233C\r
+:1012B00079F0F80192812FE7482F992329F084E0F3\r
+:1012C00093E00E94EC1904C084E093E00E94FC19B2\r
+:1012D000F80180818B3091F59181943009F0A8C29A\r
+:1012E0009281809173019923B1F08F5F8093730194\r
+:1012F00096E4E5EBF1E0DE01A958BD4F01900D92B7\r
+:101300009A95E1F7E0917101F0917201EE0FFF1FE4\r
+:1013100027E732E036C096E4E5EBF1E0DE01AF5CB2\r
+:10132000BD4F01900D929A95E1F7E0917101F09116\r
+:101330007201EE0FFF1F21E332E093C08A3009F003\r
+:10134000CBC0F8019181943009F072C292818091F2\r
+:101350007301992309F473C081508093730196E45B\r
+:10136000E5EBF1E0DE01A551BE4F01900D929A959B\r
+:10137000E1F7E0917101F0917201EE0FFF1F2BEE8A\r
+:1013800031E02C0F3D1FE20FF31F60817181680F68\r
+:10139000711D882777FD8095982F0E94003220E0EC\r
+:1013A00030E040E451E40E94653120E030E040E864\r
+:1013B00050E40E94FD309B01AC0160E070E080E0F1\r
+:1013C00090E40E94173321E230ED42E053E40E94A2\r
+:1013D000B4324CE050E00E94E30F20E04BE760E0C5\r
+:1013E00084E093E00E94DC1920E04BE761E084E0B8\r
+:1013F00093E00E94DC1920E04BE762E084E093E098\r
+:101400000E94DC1920E04BE763E084E093E00E9457\r
+:10141000DC1920E04BE764E084E093E0C454DD4F46\r
+:101420000FB6F894DEBF0FBECDBFDF91CF911F91F5\r
+:101430000F91FF90EF90DF90CF900C94DC1996E421\r
+:10144000E5EBF1E0DE01AB55BE4F01900D929A95B0\r
+:10145000E1F7E0917101F0917201EE0FFF1F25EAB3\r
+:1014600031E02C0F3D1FE20FF31F60817181680F87\r
+:10147000711D882777FD8095982F0E94003220E00B\r
+:1014800030E040E451E40E94653120E030E040E883\r
+:1014900050E40E94FD309B01AC0160E070E080E010\r
+:1014A00090E40E94173321E230ED42E053E40E94C1\r
+:1014B000B4320E94130DC454DD4F0FB6F894DEBF52\r
+:1014C0000FBECDBFDF91CF911F910F91FF90EF9095\r
+:1014D000DF90CF900C94E60C893009F0D3C0F8016E\r
+:1014E0009181943009F0A4C19281992309F4A0C19B\r
+:1014F0008091710190917201019690937201809395\r
+:10150000710120E04BE760E084E093E00E94DC1989\r
+:1015100020E04BE761E084E093E00E94DC1920E0EA\r
+:101520004BE762E084E093E00E94DC1920E04BE7A7\r
+:1015300063E084E093E00E94DC1920E04BE764E084\r
+:1015400084E093E00E94DC190E94E60C00E010E0C9\r
+:10155000E6E4FE2E80917301E5EBF1E0DE01A15A95\r
+:10156000BE4F9F2D01900D929A95E1F7E091710188\r
+:10157000F0917201E00FF11FEE0FFF1F2FE531E038\r
+:101580002C0F3D1FE20FF31F60817181680F711DE9\r
+:10159000882777FD8095982F0E94003220E030E068\r
+:1015A00040E451E40E94653120E030E040E850E43E\r
+:1015B0000E94FD309B01AC0160E070E080E090E4AF\r
+:1015C0000E94173321E230ED42E053E40E94B4322E\r
+:1015D0004CE050E00E94E30F3FEF87EE93E0315084\r
+:1015E00080409040E1F700C0000080917301E5EB7E\r
+:1015F000F1E0DE01A75EBE4F9F2D01900D929A95FE\r
+:10160000E1F7E0917101F0917201E00FF11FEE0F2F\r
+:10161000FF1F29E131E02C0F3D1FE20FF31F608116\r
+:101620007181680F711D882777FD8095982F0E9422\r
+:10163000003220E030E040E451E40E94653120E0D7\r
+:1016400030E040E850E40E94FD309B01AC0160E0D6\r
+:1016500070E080E090E40E94173321E230ED42E038\r
+:1016600053E40E94B4320E94130D8FEF9CE7019760\r
+:10167000F1F700C000000F5F1F4F0830110509F09F\r
+:1016800069CF94C1883009F0D3C0F80191819430BA\r
+:1016900009F0CEC09281992309F4CAC080917101EA\r
+:1016A000909172010197909372018093710120E0F3\r
+:1016B0004BE760E084E093E00E94DC1920E04BE718\r
+:1016C00061E084E093E00E94DC1920E04BE762E0F7\r
+:1016D00084E093E00E94DC1920E04BE763E084E0C3\r
+:1016E00093E00E94DC1920E04BE764E084E093E0A3\r
+:1016F0000E94DC190E94E60C00E010E056E4F52E92\r
+:1017000080917301E5EBF1E0DE01AD52BF4F9F2DFB\r
+:1017100001900D929A95E1F7E0917101F0917201BB\r
+:10172000E00FF11FEE0FFF1F23ED30E02C0F3D1FE8\r
+:10173000E20FF31F60817181680F711D882777FDAB\r
+:101740008095982F0E94003220E030E040E451E480\r
+:101750000E94653120E030E040E850E40E94FD3016\r
+:101760009B01AC0160E070E080E090E40E941733E0\r
+:1017700021E230ED42E053E40E94B4324CE050E00C\r
+:101780000E94E30F3FEF87EE93E03150804090409E\r
+:10179000E1F700C0000080917301E5EBF1E0DE01AC\r
+:1017A000A357BF4F9F2D01900D929A95E1F7E091BD\r
+:1017B0007101F0917201E00FF11FEE0FFF1F2DE894\r
+:1017C00030E02C0F3D1FE20FF31F60817181680F25\r
+:1017D000711D882777FD8095982F0E94003220E0A8\r
+:1017E00030E040E451E40E94653120E030E040E820\r
+:1017F00050E40E94FD309B01AC0160E070E080E0AD\r
+:1018000090E40E94173321E230ED42E053E40E945D\r
+:10181000B4320E94130D8FEF9CE70197F1F700C0DF\r
+:1018200000000F5F1F4F0830110509F069CFBEC0DF\r
+:10183000F801228190917301222309F45DC026E40E\r
+:10184000E5EBF1E0DE01A95BBF4F01900D922A9517\r
+:10185000E1F7E0917101F0917201E80FF11DEE0FD7\r
+:10186000FF1F27E430E02C0F3D1FE20FF31F6081C4\r
+:101870007181690F711D882777FD8095982F0E94CF\r
+:10188000003220E030E040E451E40E9465316B0119\r
+:101890007C01F801818165E070E0681B710988278F\r
+:1018A00077FD8095982F0E9400329B01AC01C70103\r
+:1018B000B6010E94FD309B01AC0160E070E080E069\r
+:1018C00090E40E94173321E230ED42E053E40E949D\r
+:1018D000B4324FE050E0C454DD4F0FB6F894DEBF91\r
+:1018E0000FBECDBFDF91CF911F910F91FF90EF9071\r
+:1018F000DF90CF900C94E30F26E4E5EBF1E0DE01FE\r
+:10190000119601900D922A95E1F7E0917101F09105\r
+:101910007201E80FF11DEE0FFF1F21E030E02C0FE8\r
+:101920003D1FE20FF31F60817181690F711D8827D0\r
+:1019300077FD8095982F0E94003220E030E040E44F\r
+:1019400051E40E9465316B017C01F801818165E001\r
+:1019500070E0681B7109882777FD8095982F0E9499\r
+:1019600000329B01AC01C701B6010E94FD309B0112\r
+:10197000AC0160E070E080E090E40E94173321E267\r
+:1019800030ED42E053E40E94B432C454DD4F0FB650\r
+:10199000F894DEBF0FBECDBFDF91CF911F910F91A5\r
+:1019A000FF90EF90DF90CF900C94130DC454DD4F57\r
+:1019B0000FB6F894DEBF0FBECDBFDF91CF911F9160\r
+:1019C0000F91FF90EF90DF90CF90089510928702D3\r
+:1019D00010928602809171008D7F809371008091BA\r
+:1019E00090008F77809390001092480210924702E7\r
+:1019F0001092800210928102109282021092830251\r
+:101A000010927F0210927E02EEE5F2E0AEE4B2E0C8\r
+:101A100011921192119211921D921D9282E0EE3755\r
+:101A2000F807B1F708956F927F928F929F92AF92CD\r
+:101A3000BF92CF92DF92EF92FF920F931F93CF93BB\r
+:101A4000DF936B017C010EE712E04CE5A42E42E02F\r
+:101A5000B42EC7E0D0E0A7019601F80192918291DF\r
+:101A6000729162918F010E946131882349F0219720\r
+:101A7000F2E0AF1AB108CF3F8FEFD80761F734C05B\r
+:101A8000F8011082118212821382F50111821082F4\r
+:101A9000FE01EE0FFF1FEE0FFF1FE25AFD4FDE01AA\r
+:101AA000AA0FBB1FA25BBD4FCE011AC00196448195\r
+:101AB0005581668177814083518362837383148269\r
+:101AC00015821682178212962D913C9113971196CA\r
+:101AD0003C932E9313961C921E9212973496129654\r
+:101AE0008730910519F7C3CF8091860290918702C4\r
+:101AF000019797FD05C0909387028093860204C0EA\r
+:101B00001092870210928602E0918602F09187027D\r
+:101B10003097C9F4809171008D7F8093710080911E\r
+:101B200090008F7780939000109280021092810233\r
+:101B3000109282021092830210927F0210927E0213\r
+:101B40001092470285C03197DF01AA0FBB1FAA0F71\r
+:101B5000BB1FA25ABD4FCD90DD90ED90FC90EE0FD3\r
+:101B6000FF1FE25BFD4FC081D181609080027090C9\r
+:101B700081028090820290908302A7019601662DD7\r
+:101B8000772D882D992D0E94613187FF25C0262D44\r
+:101B9000372D482D592DC701B6010E94FC3020E099\r
+:101BA00030E04AEF54E40E9465315B018C012A2D3C\r
+:101BB0003B2D402F512F662D772D882D992D0E947A\r
+:101BC000FD303B014C01A7019601772D992D0E9414\r
+:101BD0006131181664F72EC0A7019601662D772D86\r
+:101BE000882D992D0E94B032181634F5A701960160\r
+:101BF000662D772D882D992D0E94FC3020E030E055\r
+:101C00004AEF54E40E9465315B018C012A2D3B2D83\r
+:101C1000402F512F662D772D882D992D0E94FC3055\r
+:101C20003B014C01A7019601772D992D0E94B032FE\r
+:101C300087FFECCF10924D02C0928002D0928102B9\r
+:101C4000E0928202F0928302D0937F02C0937E02E0\r
+:101C5000DF91CF911F910F91FF90EF90DF90CF9088\r
+:101C6000BF90AF909F908F907F906F9008953E9A15\r
+:101C7000E1E7F0E080818D7F808382E080939000B7\r
+:101C80008AE18093910008951F920F920FB60F92F0\r
+:101C90001124CF92DF92EF92FF922F933F934F93B5\r
+:101CA0005F936F937F938F939F93AF93BF93CF93E4\r
+:101CB000DF93EF93FF9380914702882309F479C063\r
+:101CC00020E030E0A9016091800270918102809152\r
+:101CD0008202909183020E94B03218160CF069C003\r
+:101CE00020E030E040E251E46091490270914A0204\r
+:101CF00080914B0290914C020E94B0321816BCF4B5\r
+:101D00008091840290918502019660918602709183\r
+:101D100087020E949C3490938502809384021092E3\r
+:101D2000490210924A0210924B0210924C02C0914A\r
+:101D30008402D0918502CC0FDD1FCC0FDD1FC25A6B\r
+:101D4000DD4F288139814A815B8160E074E284E75C\r
+:101D50009BE40E9465310E94CD317093970060939F\r
+:101D60009600288139814A815B8160E074E284E7D2\r
+:101D70009BE40E9465310E94CD3175956795709303\r
+:101D800099006093980020E030E040E85FE36091C4\r
+:101D9000490270914A0280914B0290914C020E943C\r
+:101DA000FD306093490270934A0280934B029093F6\r
+:101DB0004C0280914802882309F493C0C0904302EA\r
+:101DC000D0904402E0904502F090460220E030E0DE\r
+:101DD000A901C701B6010E94B0321816F4F4A70198\r
+:101DE000960160E074E284E79BE40E9465310E9402\r
+:101DF000CD317093970060939600A701960160E043\r
+:101E000074E284E79BE40E9465310E94CD317595B0\r
+:101E10006795709399006093980060913D0270916E\r
+:101E20003E026F5F7F4F70933E0260933D0280E001\r
+:101E300090E00E94FE3120913F023091400240919B\r
+:101E40004102509142020E94B03287FD4AC0809107\r
+:101E50003C028F5F80933C029091F1038917A0F0C0\r
+:101E60008091F603882319F010923C020DC08091F6\r
+:101E700071008D7F80937100809190008F778093A7\r
+:101E80009000109248022DC0E091F203F091F3030C\r
+:101E900080913C0298E0899FE00DF11D1124808122\r
+:101EA0009181A281B3818093430290934402A093D5\r
+:101EB0004502B093460220E030E040E85EE36481F2\r
+:101EC0007581868197810E94B43260933F0270933E\r
+:101ED0004002809341029093420210923E0210927F\r
+:101EE0003D02FF91EF91DF91CF91BF91AF919F9113\r
+:101EF0008F917F916F915F914F913F912F91FF90C3\r
+:101F0000EF90DF90CF900F900FBE0F901F9018951D\r
+:101F10000F931F93CF93DF9300D0CDB7DEB78C0123\r
+:101F200080914702882331F04A8369830E94E60C3E\r
+:101F300069814A8181E0809348021093F303009302\r
+:101F4000F2036093F1034093F6031092490210925A\r
+:101F50004A0210924B0210924C0210923C02F8017D\r
+:101F600040815181628173814093430250934402C6\r
+:101F7000609345027093460220E030E040E85EE363\r
+:101F800064817581868197810E94B43260933F029B\r
+:101F900070934002809341029093420210923E025D\r
+:101FA00010923D0280917100826080937100809157\r
+:101FB00090008068809390000F900F90DF91CF91F8\r
+:101FC0001F910F9108956F927F928F929F92AF927F\r
+:101FD000BF92CF92DF92EF92FF920F931F93CF9316\r
+:101FE000DF936B017C01EA018091480281110E941C\r
+:101FF000E60C81E08093470220E030E0A901C701B0\r
+:10200000B6010E94B03218160CF09AC0609080029F\r
+:1020100070908102809082029090830220E030E0F4\r
+:10202000A901662D772D882D992D0E94613181118E\r
+:1020300028C0C0928002D0928102E0928202F09287\r
+:102040008302D0937F02C0937E028091860290919A\r
+:102050008702FC01EE0FFF1FEE0FFF1FE25AFD4F3C\r
+:10206000C082D182E282F382FC01EE0FFF1FE25BAD\r
+:10207000FD4FD183C083019690938702809386029F\r
+:102080005FC0A7019601662D772D882D992D0E949E\r
+:10209000613187FF25C0262D372D482D592DC701C9\r
+:1020A000B6010E94FC3020E030E04AEF54E40E9488\r
+:1020B00065315B018C012A2D3B2D402F512F662D60\r
+:1020C000772D882D992D0E94FD303B014C01A701F1\r
+:1020D0009601772D992D0E946131181664F7A9CFCA\r
+:1020E000A7019601662D772D882D992D0E94B0327B\r
+:1020F00018160CF09ECFA7019601662D772D882D1E\r
+:10210000992D0E94FC3020E030E04AEF54E40E9418\r
+:1021100065315B018C012A2D3B2D402F512F662DFF\r
+:10212000772D882D992D0E94FC303B014C01A70191\r
+:102130009601772D992D0E94B03287FFECCF79CF91\r
+:10214000809171008260809371008091900080681E\r
+:1021500080939000DF91CF911F910F91FF90EF90AE\r
+:10216000DF90CF90BF90AF909F908F907F906F90B7\r
+:102170000895809191020895CF93DF9300D01F922C\r
+:10218000CDB7DEB72091FB03243021F523E029836E\r
+:102190009B838A832093E9008FEF06C095ED9A9583\r
+:1021A000F1F70000882329F09091E800815095FF15\r
+:1021B000F5CF8091E80085FF0DC040E050E063E07E\r
+:1021C00070E0CE0101960E94A6148091E8008E77FF\r
+:1021D0008093E8000F900F900F90DF91CF910895BA\r
+:1021E000CF93DF9300D01F92CDB7DEB72091FB03D2\r
+:1021F000243029F522E029839B838A8383E080931E\r
+:10220000E9008FEF06C095ED9A95F1F7000088235D\r
+:1022100029F09091E800815095FFF5CF8091E8007A\r
+:1022200085FF0DC040E050E063E070E0CE01019614\r
+:102230000E94A6148091E8008E778093E8000F90AA\r
+:102240000F900F90DF91CF9108952091FB032430E0\r
+:10225000F9F422E02093E9002FEF06C035ED3A951E\r
+:10226000F1F70000222329F03091E800215035FFDA\r
+:10227000F5CF2091E80025FF0BC040E050E065E07D\r
+:1022800070E00E94A6148091E8008E778093E800A9\r
+:102290000895CF93DF93EC018091FB03843041F5E7\r
+:1022A00081E08093E9008FEF06C095ED9A95F1F7F4\r
+:1022B0000000882329F09091E800815095FFF5CF28\r
+:1022C0008091E80085FF14C040E050E068E070E0D5\r
+:1022D000CE010E94A6148091E8008E778093E800DA\r
+:1022E00088E0FE01A9E8B2E001900D928A95E1F73D\r
+:1022F000DF91CF910895BF92CF92DF92EF92FF923C\r
+:102300000F931F93CF93DF937C01B62EE90100E07A\r
+:1023100010E0C42ED12C0BC04991202F2B0D2F770C\r
+:102320004F776FE0C7010E94DC190F5F1F4F0C153C\r
+:102330001D0594F3DF91CF911F910F91FF90EF90C6\r
+:10234000DF90CF90BF90089570E06F5F7F4F6F7008\r
+:1023500077270C94DC190F931F93CF93C42F63300E\r
+:10236000710509F04AC0842F807F803849F1803997\r
+:1023700009F043C0622F6F7770E080E090E00E9428\r
+:10238000003220E030E040E451E40E9465319B01DE\r
+:10239000AC0160E070E080E090E40E9417330F77BA\r
+:1023A00010E023E0159507952A95E1F72DEC3CEC1C\r
+:1023B00042E053E40E94B432A8010E94E30F1DC022\r
+:1023C000622F6F7770E080E090E00E94003220E0A2\r
+:1023D00030E040E451E40E9465319B01AC0160E0D3\r
+:1023E00070E080E090E40E9417332DEC3CEC42E07A\r
+:1023F00053E40E94B4320E94130DCC3F29F4CF91D4\r
+:102400001F910F910C94E60CCF911F910F9108959D\r
+:102410000F931F93CF93DF93CDB7DEB727970FB6F8\r
+:10242000F894DEBF0FBECDBF8C0114C08A810E941C\r
+:10243000B6199A819D839B819E839C819F83811184\r
+:102440001EC089818430B1F08730A1F08630A1F0C0\r
+:102450008530A1F0BE016F5F7F4F84E791E00E945D\r
+:10246000231D8111E3CF84E791E00E94141D0E9497\r
+:102470008F190DC083E003C082E001C081E0AE018E\r
+:102480004B5F5F4F682FC8010E94491AE3CF279620\r
+:102490000FB6F894DEBF0FBECDBFDF91CF911F9175\r
+:1024A0000F910895EF92FF920F93CF93DF9300D097\r
+:1024B00000D000D0CDB7DEB77B014A832B830C83DD\r
+:1024C000842F2E834D830E94B6192E814D81811158\r
+:1024D0001BC082E0E816F10479F083E0E816F1040D\r
+:1024E00021F0EA94EF2821F50BC0073F11F487E0B3\r
+:1024F00001C084E089830BC0273FD9F786E0FACF7B\r
+:10250000473FB9F785E0F6CF42954F704983BE014A\r
+:102510006F5F7F4F84E791E00E94D91C84E791E0D0\r
+:102520000E94F71C84E791E00E94141D0E948F19FD\r
+:1025300026960FB6F894DEBF0FBECDBFDF91CF91C8\r
+:102540000F91FF90EF9008958091FA03811109C0D7\r
+:102550000E9495160E94F2168091E200846080939A\r
+:10256000E20008951092FA030895089508950C94D6\r
+:10257000B229809192028F5F8093920262E30E945F\r
+:102580007C34911135C0109292028091930288237D\r
+:1025900079F18091FB03843049F58091E9008F70D7\r
+:1025A0009091EC0090FF02C090E801C090E0982B61\r
+:1025B00084E08093E9008091EB0080FF14C080915B\r
+:1025C000EE0087FD03C00FC01092F1008091E8007B\r
+:1025D00085FDFACF8091E80080FF05C08091E8007A\r
+:1025E0008E778093E8009F709093E9001092930299\r
+:1025F000089542E061EC81E00E940B1642E061EC3C\r
+:1026000082E00E940B1642E061EC83E00E940B1610\r
+:1026100042E261EC84E00E940B1642E361E885E04F\r
+:102620000E940B1642E360E886E00C940B16809142\r
+:10263000FD03833009F454C030F4813071F08230EE\r
+:1026400009F0A5C08CC08A3009F479C08B3009F438\r
+:102650005FC0893009F09BC020C08091FC03813AA3\r
+:1026600009F095C08091E800877F8093E800809111\r
+:10267000000490910104892B21F060E080E090E05B\r
+:1026800003C068E089E892E070E00E944415809100\r
+:10269000E8008B778093E80008958091FC038132F5\r
+:1026A00009F075C08091000490910104892B09F014\r
+:1026B0006EC08091E800877F8093E80005C080911C\r
+:1026C000FB03882309F463C08091E80082FFF7CF01\r
+:1026D0008091F100809391028091E8008B7753C044\r
+:1026E0008091FC03813A09F052C0809100049091DE\r
+:1026F0000104892B09F04BC08091E800877F80930B\r
+:10270000E8008091E80080FFFCCF80918A0136C00C\r
+:102710008091FC038132D9F58091000490910104ED\r
+:10272000892BA9F58091E800877F8093E8000E94BB\r
+:1027300042168091FE0380938A010C948B23809132\r
+:10274000FC03813221F58091E800877F8093E800C7\r
+:102750000E9442168091FF03809388020895809121\r
+:10276000FC03813AA1F48091E800877F8093E80020\r
+:102770008091E80080FFFCCF809188028093F10077\r
+:102780008091E8008E778093E8000C9442160895BB\r
+:1027900084E093E00E94181A62E572E184E093E01D\r
+:1027A0000E946E1A68E072E184E093E00E94721A5F\r
+:1027B00084B7877F84BF88E10FB6F8948093600068\r
+:1027C000109260000FBE90E080E80FB6F8948093FE\r
+:1027D0006100909361000FBE0E949C1D0E9495169F\r
+:1027E0000E94F2168091E20084608093E200789467\r
+:1027F0006BEA71E184E093E00E94141A64EA71E1EB\r
+:1028000084E093E00E940C1A6BE771E184E093E0AE\r
+:102810000E94101A0E94370E0E948F190E949E1D5E\r
+:1028200080E891E00E94481D0BC00E946C298091B5\r
+:10283000F903882329F00E949A2981110E9490149B\r
+:102840008091FB03853089F384E093E00E94211C92\r
+:102850000E94A81DF5CF292F332723303105B1F071\r
+:102860004CF42130310509F44DC02230310509F016\r
+:102870004EC007C02132310541F12232310591F1BC\r
+:1028800046C0E0EDF0E08CE594E045C0992781304A\r
+:10289000910569F08230910589F0892B09F037C0E4\r
+:1028A000E8E5F4E0E491F0E088E594E034C0EAE2A1\r
+:1028B000F4E0E491F0E08AE294E02DC0EEEFF3E082\r
+:1028C000E491F0E08EEF93E026C0643000F5E62F4F\r
+:1028D000F0E0EE0FFF1FE550FE4F80819181E9E0AF\r
+:1028E000F0E019C0643098F4E62FF0E0DF01AA0FA1\r
+:1028F000BB1FAD5FBD4F8D919C91E55FFD4FE081AA\r
+:10290000F0E009C0E2E1F0E08CE295E004C0E0E034\r
+:10291000F0E080E090E0DA018D939C93CF01089580\r
+:1029200080E189BD82E189BD09B400FEFDCF8091BF\r
+:10293000D8008F7D8093D8008091E00082608093E2\r
+:10294000E0008091E00081FDFCCF0895BF92CF921E\r
+:10295000DF92EF92FF920F931F93CF93DF937C014F\r
+:102960008B01EA010E946316B82E811133C02097B3\r
+:1029700031F028813981021B130BE20EF31EC12CAA\r
+:10298000D12C23C08091E80085FD15C08091E8001E\r
+:102990008E778093E800209749F0888199818C0D8B\r
+:1029A0009D1D9983888325E0B22E14C00E94631672\r
+:1029B000882359F00EC0F70181917F018093F100C7\r
+:1029C00001501109FFEFCF1ADF0A01151105D1F6E9\r
+:1029D00001C0B82E8B2DDF91CF911F910F91FF90E9\r
+:1029E000EF90DF90CF90BF900895BF92CF92DF928B\r
+:1029F000EF92FF920F931F93CF93DF937C018B0194\r
+:102A0000EA010E946316B82E811133C0209731F07D\r
+:102A100028813981021B130BE20EF31EC12CD12C2D\r
+:102A200023C08091E80085FD15C08091E8008B7778\r
+:102A30008093E800209749F0888199818C0D9D1D35\r
+:102A40009983888345E0B42E14C00E9463168823BE\r
+:102A500059F00EC08091F100F70181937F01015080\r
+:102A60001109FFEFCF1ADF0A01151105D1F601C0D8\r
+:102A7000B82E8B2DDF91CF911F910F91FF90EF908A\r
+:102A8000DF90CF90BF9008954091020450910304CD\r
+:102A90004617570748F06115710539F44091E80071\r
+:102AA0004E774093E80001C0BA01FC0140E033C01A\r
+:102AB0008091FB03882309F444C0853009F443C0A6\r
+:102AC0008091E80083FD41C08091E80082FD33C021\r
+:102AD0008091E80080FF1FC09091F3008091F20088\r
+:102AE000392F20E0A901482BCA0106C0419140932B\r
+:102AF000F1006150710901966115710519F0883076\r
+:102B00009105A0F341E0089709F040E08091E800CA\r
+:102B10008E778093E8006115710551F64111C8CF99\r
+:102B20000AC08091FB03882361F0853061F08091B9\r
+:102B3000E80083FD0AC08091E80082FFF2CF80E0C8\r
+:102B4000089582E0089583E0089581E0089540911A\r
+:102B50000204509103044617570748F061157105A8\r
+:102B600039F44091E8004E774093E80001C0BA0183\r
+:102B7000FC0140E034C08091FB03882309F445C088\r
+:102B8000853009F444C08091E80083FD42C0809103\r
+:102B9000E80082FD34C08091E80080FF20C0909161\r
+:102BA000F3008091F200392F20E0A901482BCA01DF\r
+:102BB00007C044914093F10031966150710901962C\r
+:102BC0006115710519F08830910598F341E0089777\r
+:102BD00009F040E08091E8008E778093E80061156D\r
+:102BE000710549F64111C7CF0AC08091FB038823C4\r
+:102BF00061F0853061F08091E80083FD0AC080912A\r
+:102C0000E80082FFF2CF80E0089582E0089583E03B\r
+:102C1000089581E00895982F2CC09093E9009817AB\r
+:102C200039F07091EC002091ED005091F00003C05C\r
+:102C3000242F762F50E021FD02C09F5F1AC03091F3\r
+:102C4000EB003E7F3093EB003091ED003D7F309301\r
+:102C5000ED003091EB0031603093EB007093EC00AD\r
+:102C60002093ED005093F0002091EE0027FDE5CF7A\r
+:102C700007C0973090F28F708093E90081E008954B\r
+:102C800080E008958091FC0387FD05C08091E800F5\r
+:102C900080FF0EC012C08091E80082FD05C08091C7\r
+:102CA000FB038111F8CF08958091E8008B7708C06D\r
+:102CB0008091FB038111EACF08958091E8008E771F\r
+:102CC0008093E80008958091E4009091E50045E646\r
+:102CD0002091EC0020FD1FC023C02091FB03222384\r
+:102CE00091F0253091F02091EB0025FD10C020914E\r
+:102CF000E4003091E5002817390751F34150C9012C\r
+:102D000039F784E0089582E0089583E0089581E032\r
+:102D1000089580E008952091E80020FFDECFF9CFEC\r
+:102D20002091E80022FFD9CFF4CF0E9403170E9420\r
+:102D30000B17E0EEF0E0808181608083E8EDF0E049\r
+:102D400080818F77808319BCA7EDB0E08C918E7F56\r
+:102D50008C9380818F7E80831092FA0308950F9365\r
+:102D60001F93CF93DF930E9403170E940B17C8EDA8\r
+:102D7000D0E088818F778883888180688883888184\r
+:102D80008F7D888319BC1092FB031092F703109279\r
+:102D9000F9031092F80300EE10E0F80180818B7FB8\r
+:102DA000808388818160888342E060E080E00E94C7\r
+:102DB0000B16E1EEF0E080818E7F8083E2EEF0E0A2\r
+:102DC000808181608083808188608083F801808138\r
+:102DD0008E7F8083888180618883DF91CF911F916E\r
+:102DE0000F910895E8EDF0E080818F7E8083E7ED1C\r
+:102DF000F0E080818160808384E082BF81E0809305\r
+:102E0000FA030C94AF16E8EDF0E080818E7F8083AA\r
+:102E10001092E20008951092DA001092E1000895F5\r
+:102E20001F920F920FB60F9211242F933F934F933F\r
+:102E30005F936F937F938F939F93AF93BF93EF9322\r
+:102E4000FF938091E10082FF0BC08091E20082FF3E\r
+:102E500007C08091E1008B7F8093E1000E94B9124E\r
+:102E60008091DA0080FF1FC08091D80080FF1BC0D6\r
+:102E70008091DA008E7F8093DA008091D90080FF04\r
+:102E80000DC080E189BD82E189BD09B400FEFDCF9E\r
+:102E900081E08093FB030E94A41205C019BC10922C\r
+:102EA000FB030E94B2128091E10080FF19C0809163\r
+:102EB000E20080FF15C08091E2008E7F8093E200E7\r
+:102EC0008091E20080618093E2008091D80080626E\r
+:102ED0008093D80019BC85E08093FB030E94B61252\r
+:102EE0008091E10084FF30C08091E20084FF2CC01B\r
+:102EF00080E189BD82E189BD09B400FEFDCF8091EA\r
+:102F0000D8008F7D8093D8008091E1008F7E8093E0\r
+:102F1000E1008091E2008F7E8093E2008091E200E8\r
+:102F200081608093E2008091F703882311F084E0B0\r
+:102F300007C08091E30087FF02C083E001C081E009\r
+:102F40008093FB030E94B7128091E10083FF29C0A8\r
+:102F50008091E20083FF25C08091E100877F80930C\r
+:102F6000E10082E08093FB031092F7038091E1007F\r
+:102F70008E7F8093E1008091E2008E7F8093E2005B\r
+:102F80008091E20080618093E20042E060E080E0B6\r
+:102F90000E940B168091F00088608093F0000E94E0\r
+:102FA000B512FF91EF91BF91AF919F918F917F915A\r
+:102FB0006F915F914F913F912F910F900FBE0F90A6\r
+:102FC0001F9018951F920F920FB60F9211242F93F6\r
+:102FD0003F934F935F936F937F938F939F93AF93A1\r
+:102FE000BF93CF93EF93FF938091E9008F709091FF\r
+:102FF000EC0090FF02C090E801C090E0C92FC82B00\r
+:103000001092E9008091F000877F8093F00078941F\r
+:103010000E9426181092E9008091F0008860809349\r
+:10302000F000CF70C093E900FF91EF91CF91BF9175\r
+:10303000AF919F918F917F916F915F914F913F9150\r
+:103040002F910F900FBE0F901F9018951F93CF9345\r
+:10305000DF93CDB7DEB7AC970FB6F894DEBF0FBEE7\r
+:10306000CDBFECEFF3E08091F100819324E0E430F8\r
+:10307000F207C9F70E9417138091E80083FF37C158\r
+:103080008091FC039091FD03953009F488C038F4D9\r
+:103090009130B1F170F0933009F029C131C098300E\r
+:1030A00009F4F8C0993009F404C1963009F01FC141\r
+:1030B0009DC0803821F0823809F019C108C0809184\r
+:1030C000F8039091F903992389F082600FC08091F1\r
+:1030D0000004909101048F7099278093E9008091FA\r
+:1030E000EB0085FB882780F91092E9009091E800B9\r
+:1030F000977F9093E8008093F1001092F100D5C083\r
+:10310000882319F0823009F0F2C08F7121F08230EB\r
+:1031100009F0EDC00BC08091FE03813009F0E7C0DB\r
+:10312000933009F080E08093F9032FC08091FE0373\r
+:1031300081112BC080910004909101048F70992718\r
+:10314000009709F4D4C08093E9002091EB0020FFA0\r
+:103150001CC02091FD03233021F48091EB0080629C\r
+:1031600012C09091EB0090619093EB0021E030E071\r
+:1031700001C0220F8A95EAF72093EA001092EA0034\r
+:103180008091EB0088608093EB001092E9008091C1\r
+:10319000E800877F8093E8000E944216A8C0811152\r
+:1031A000A6C08091FE039091FF038F779927182F77\r
+:1031B0009091E3009078982B9093E3008091E80041\r
+:1031C000877F8093E8000E9442168091E80080FF8C\r
+:1031D000FCCF8091E30080688093E300112311F01D\r
+:1031E00083E001C082E08093FB0381C0805882307D\r
+:1031F00008F07DC08091FE039091FF038C3D23E099\r
+:10320000920779F583E08A838AE289834FB7F8943D\r
+:10321000DE01139620E03EE051E2E32FF0E0509310\r
+:103220005700E49120FF03C0E295EF703F5FEF701D\r
+:103230008E2F90E0EA3010F0C79601C0C0968D93B3\r
+:103240009D932F5F243149F74FBF8091E800877F1E\r
+:103250008093E8006AE270E0CE0101960E94441576\r
+:1032600013C0AE01455D5F4F609100040E942B14B6\r
+:103270000097E9F12091E800277F2093E800BC0146\r
+:103280008BA59CA50E94A7158091E8008B77809361\r
+:10329000E8002DC0803859F58091E800877F809341\r
+:1032A000E8008091F7038093F1008091E8008E7729\r
+:1032B00071CF81111CC09091FE039230C0F48091B7\r
+:1032C000E800877F8093E8009093F7030E944216FE\r
+:1032D0008091F703811104C08091E30087FF02C051\r
+:1032E00084E001C081E08093FB030E94F912809189\r
+:1032F000E80083FF0AC08091E800877F8093E800A0\r
+:103300008091EB0080628093EB00AC960FB6F8944E\r
+:10331000DEBF0FBECDBFDF91CF911F910895CF9338\r
+:103320008091FB038823B1F08091E9008F70909128\r
+:10333000EC0090FF02C090E801C090E0C92FC82BBC\r
+:103340001092E9008091E80083FD0E942618CF705A\r
+:10335000C093E900CF910895881F8827881F08959A\r
+:1033600091E0883F08F490E0892F0895982F907F8E\r
+:10337000903B99F038F4903981F0903A71F09038A0\r
+:10338000C9F40BC0903DA1F018F4903C99F410C022\r
+:10339000903E19F0903F71F402C083E00895E82F49\r
+:1033A000E15FEF3038F4F0E0E15FFD4F8081089598\r
+:1033B00082E0089580E008950F932F774F776F7024\r
+:1033C000606BDC01ED91FC91022F242F462F63E00E\r
+:1033D00070E009950F9108950F932F774F776F70D5\r
+:1033E0006069DC01ED91FC91022F242F462F63E0F0\r
+:1033F00070E009950F9108950F932F774F776F70B5\r
+:103400006068DC01ED91FC91022F242F462F63E0D0\r
+:1034100070E009950F910895FC017383628308950C\r
+:10342000FC01738F628F0895FC01758F648F08957E\r
+:10343000CF93DF93EC011DA21FA21EA2BC01685D09\r
+:103440007F4F40EC88519F4F0E94551C1B821A826F\r
+:103450001D821C821F821E82198618861B861A8670\r
+:103460001D861C861F861E86198A188A1B8A1A8A40\r
+:103470001D8A1C8A1F8A1E8A198E188E1B8E1A8E10\r
+:103480001D8E1C8E1F8E1E8E19A218A2DF91CF9149\r
+:103490000895CF92DF92FF920F931F93CF93DF9304\r
+:1034A0001F92CDB7DEB7F62E6A018C0108511F4F6F\r
+:1034B00008C0F60161916F01C80149830E945C1C3C\r
+:1034C00049818C2D841B8F15A0F30F90DF91CF9134\r
+:1034D0001F910F91FF90DF90CF900895FC017183B1\r
+:1034E00060830895FC0171A360A30895AF92BF9219\r
+:1034F000CF92DF92EF92FF920F931F93CF93DF93C0\r
+:1035000000D01F92CDB7DEB77C016B01142FB22E15\r
+:10351000A02EDC0195968C9195978430F1F45A9603\r
+:10352000ED91FC915B97309709F4D8C0CB010197DE\r
+:1035300063E070E00E948834DB01AA0FBB1FA60F76\r
+:10354000B71F49832A830B834C2D4A1B9E012F5F93\r
+:103550003F4FBD01C7010995B1C06230710509F443\r
+:1035600053C06330710529F06130710509F09CC0CA\r
+:1035700083C0842F807F803A01F130F48038B9F025\r
+:10358000803909F0ABC00DC0803EE9F0803F09F101\r
+:10359000803B09F0A3C0D7011296ED91FC911397DF\r
+:1035A00023C0D7011496ED91FC9115971DC0D7014A\r
+:1035B0001696ED91FC91179717C0D7011896ED91CB\r
+:1035C000FC91199711C0D7011A96ED91FC911B97A8\r
+:1035D0000BC0423F09F082C0D7011C96ED91FC91CF\r
+:1035E0001D97309731F47AC0309709F477C0123FB5\r
+:1035F00021F42A2D4B2D62EF04C0612F6F702A2D0C\r
+:103600004B2DC70109955AC0842F807F803D59F00A\r
+:10361000803F79F0803C09F061C0D7011E96ED91A2\r
+:10362000FC911F9719C0D7015096ED91FC915197CD\r
+:1036300013C0433F31F4D7015296ED91FC9153975B\r
+:1036400008C0413F09F04AC0D7015496ED91FC9162\r
+:103650005597309741F442C0309709F43FC0133F6B\r
+:1036600011F0113F19F44B2D612F03C0612F6F70C2\r
+:103670004B2DC701099522C0842F0E94B0198823C1\r
+:1036800031F0D7015696ED91FC91579707C0163F40\r
+:1036900029F5D7015896ED91FC9159973097F1F0A3\r
+:1036A000612FC70109950AC064307105A8F416C0DE\r
+:1036B0000A2D2B2D412FB601C7010995D7015E9622\r
+:1036C000ED91FC915F97309789F00A2D2B2D412FBA\r
+:1036D000B601C70109950AC0C12CD12CD7015C964F\r
+:1036E000ED91FC915D97309719F7E8CF0F900F900F\r
+:1036F0000F90DF91CF911F910F91FF90EF90DF908E\r
+:10370000CF90BF90AF900895EF92FF920F931F93C9\r
+:10371000CF93DF93EC01162F862F0E94B0198823D8\r
+:1037200069F0FDA081E08DA300E020E0412F61E081\r
+:1037300070E0CE010E94761AFDA27CC0812F0E940B\r
+:10374000AC194DA1882309F440C0443029F01AA3D4\r
+:1037500021E030E03FA32EA3812F0E94B6198130D3\r
+:1037600031F070F0823051F0833059F507C08DA3ED\r
+:1037700000E020E0412F61E070E01EC08DA35AC040\r
+:10378000103F19F0173FE9F404C084E08DA31AA399\r
+:103790003FC02EA13FA1C90163E070E00E948834C0\r
+:1037A0008C0F9D1FFC0112A3B9016F5F7F4F7FA398\r
+:1037B0006EA30CA12BA14AA1CE010E94761A1DA2D4\r
+:1037C00039C01DA21FA21EA235C0442399F12EA10B\r
+:1037D0003FA1C90163E070E00E9488347C01FE01D2\r
+:1037E000E80FF91F12A3B9016F5F7F4F7FA36EA38C\r
+:1037F0008130910591F082E0E816F104D9F40CA132\r
+:103800002BA14AA1CE010E94761A8DA1843091F09D\r
+:1038100081E090E09FA38EA30DC0423059F400E0F8\r
+:103820002BA14AA1CE010E94761A8DA1843011F0FD\r
+:10383000FFA2EEA2DF91CF911F910F91FF90EF9029\r
+:103840000895CF92DF92EF92FF920F931F93CF9341\r
+:10385000DF93EC01E8A1F9A1309709F009958E01F9\r
+:1038600008511F4FC8010E948E1CE12CF12CC82E5C\r
+:10387000D12C0FC060E0C8010E94A21C682FCE01AD\r
+:103880000E94841B61E0C8010E94B31C8FEFE81AFC\r
+:10389000F80AEC14FD0470F3DF91CF911F910F91A2\r
+:1038A000FF90EF90DF90CF900895FC0142837483E6\r
+:1038B00063831182108208950F931F93CF93DF9338\r
+:1038C000EC01062F0E94D41C182F298130E0C90179\r
+:1038D00001966A8170E00E949C34488150E0841710\r
+:1038E000950729F4812F0E94D71C80E012C0EB813C\r
+:1038F000FC81E20FF31F00832981822F90E0019663\r
+:103900006A8170E00E949C348983812F0E94D71CB9\r
+:1039100081E0DF91CF911F910F910895CF93DF93B5\r
+:10392000EC010E94D41C29819881291710F0C22F24\r
+:1039300002C0CA81C20FC91B0E94D71C8C2FDF9105\r
+:10394000CF910895FC012081862F90E0820F911D78\r
+:10395000628170E00E949C340380F481E02DE80FC6\r
+:10396000F91F808108950F931F93CF93DF931F92C8\r
+:10397000CDB7DEB78C0169830E94D41C482FF801B3\r
+:1039800080816981262F30E0280F311D6281C901B5\r
+:1039900070E00E949C348083842F0F90DF91CF9140\r
+:1039A0001F910F910C94D71C8FB7F89408958FBF77\r
+:1039B0000895FC01CB012091FB032430B1F4218157\r
+:1039C0002F702093E90040E050E064E070E00E9436\r
+:1039D000A61481110BC09091E80095FD07C090914D\r
+:1039E000E8009E779093E800089582E00895209182\r
+:1039F000FB032430A9F4FC0181818F708093E900DE\r
+:103A00003091F3002091F200932F80E0822B892BDC\r
+:103A100049F08091E8008E778093E8000C9463165B\r
+:103A200082E0089580E008952091FB03243051F452\r
+:103A3000FC0121812F702093E9002091E80020FDF6\r
+:103A40000C94F71C0895FC01CB012091FB0324305A\r
+:103A500011F080E0089526812F702093E9002091D5\r
+:103A6000E80022FFF6CF2091E80025FFF2CF40E0EA\r
+:103A700050E064E070E00E94F5148091E80085FD5C\r
+:103A800005C08091E8008B778093E80081E008957D\r
+:103A900090939502809394020895E0919402F0919E\r
+:103AA0009502309721F00190F081E02D099480E09B\r
+:103AB0000895E0919402F0919502309721F00280F0\r
+:103AC000F381E02D09940895E0919402F09195021C\r
+:103AD000309721F00480F581E02D0994089520911C\r
+:103AE0009602309197028217930771F09093970294\r
+:103AF00080939602E0919402F0919502309721F024\r
+:103B00000680F781E02D0994089520919802309164\r
+:103B100099028217930771F090939902809398020B\r
+:103B2000E0919402F0919502309721F00084F185A4\r
+:103B3000E02D0994089508950C949B1D0E94E62998\r
+:103B40000E94F3060E94BA2A0C9465300C942C064D\r
+:103B50005F926F927F928F929F92AF92BF92CF921D\r
+:103B6000DF92EF92FF920F931F93CF93DF93CDB726\r
+:103B7000DEB72A970FB6F894DEBF0FBECDBF0E9406\r
+:103B8000E9079AE9C92E92E0D92E00E010E0AA24B4\r
+:103B9000A394B12C502E802F0E9439093C01F601CC\r
+:103BA000E190F1906F01E826F926E114F10431F477\r
+:103BB0000F5F1F4F0530110569F73AC08091F10280\r
+:103BC00081FD0E94420920E030E04501022E02C042\r
+:103BD000880C991C0A94E2F7C4018E219F21892B3D\r
+:103BE00009F12E835F826820792081E0672809F43B\r
+:103BF00080E088870E94EF298160782F9A878987E3\r
+:103C00004E815F8168858A850E94611EF801EE0FF2\r
+:103C1000FF1FE656FD4F808191818825992591836C\r
+:103C2000808316C02F5F3F4F2C30310571F6C0CF17\r
+:103C30008FEF89838A831B820E94EF298160782F0E\r
+:103C40009D838C8349815A816B818D810E94611E85\r
+:103C50000E94A72D1091A4020E944D1D1817D9F0A3\r
+:103C60000E944D1D8093A4022A960FB6F894DEBFE1\r
+:103C70000FBECDBFDF91CF911F910F91FF90EF90BD\r
+:103C8000DF90CF90BF90AF909F908F907F906F907C\r
+:103C90005F900C94A61D2A960FB6F894DEBF0FBE57\r
+:103CA000CDBFDF91CF911F910F91FF90EF90DF90EB\r
+:103CB000CF90BF90AF909F908F907F906F905F90CC\r
+:103CC0000895CF93DF93CDB7DEB72B970FB6F89457\r
+:103CD000DEBF0FBECDBF4F83588769877A878B873A\r
+:103CE000DE01119686E0FD0111928A95E9F785E0E3\r
+:103CF000FE01379601900D928A95E1F749815A812C\r
+:103D00006B817C818D819E810E944A262B960FB605\r
+:103D1000F894DEBF0FBECDBFDF91CF910895089517\r
+:103D2000CF93C82F882309F4C1C0823859F40E9468\r
+:103D30004D1D81FDBBC089E30E94B1280E943D2931\r
+:103D400089E30CC0833879F40E944D1D80FDAEC01C\r
+:103D500083E50E94B1280E943D2983E50E94D32873\r
+:103D6000CF910C943D29843859F40E944D1D82FD59\r
+:103D70009DC087E40E94B1280E943D2987E4EECFD0\r
+:103D80008450813A48F48C2F0E94C72F81118EC035\r
+:103D90008C2F0E94B128E4CF8C2F805E883050F4A5\r
+:103DA000C77081E090E001C0880FCA95EAF70E94D1\r
+:103DB000F428D6CF8C2F855A833078F4C53A29F071\r
+:103DC000C63A31F482E890E005C081E890E002C094\r
+:103DD00083E890E0CF910C946F1D8C2F885A83312B\r
+:103DE00008F064C0C83A39F1C93A41F1CA3A49F118\r
+:103DF000CB3A51F1CC3A59F1CD3A61F1C03B69F17E\r
+:103E0000CE3A71F1CF3A79F1C13B81F1C23B89F1F0\r
+:103E1000C33B91F1C43B99F1C53BA1F1C63BA9F16C\r
+:103E2000C73BB1F1C83BB9F1C93BC1F1CA3BC9F5C8\r
+:103E30008AE292E038C082EE90E035C089EE90E0F0\r
+:103E400032C08AEE90E02FC085EB90E02CC086EB6C\r
+:103E500090E029C087EB90E026C08CEC90E023C076\r
+:103E60008DEC90E020C083E891E01DC08AE891E0ED\r
+:103E70001AC082E991E017C084E991E014C081E2A0\r
+:103E800092E011C083E292E00EC084E292E00BC0A7\r
+:103E900085E292E008C086E292E005C087E292E007\r
+:103EA00002C080E090E0CF910C94851DCF910895E1\r
+:103EB000882309F44DC0823859F40E944D1D81FFBA\r
+:103EC00047C089E30E94B1280E943D2989E30CC0C4\r
+:103ED000833871F40E944D1D80FF3AC083E50E9433\r
+:103EE000B1280E943D2983E50E94D3280C943D29E6\r
+:103EF000843859F40E944D1D82FF2AC087E40E9435\r
+:103F0000B1280E943D2987E4EFCF982F9450913A31\r
+:103F100008F4EACF982F905E983058F4282F277035\r
+:103F200081E090E001C0880F2A95EAF70E94FA2804\r
+:103F3000DDCF982F955A933020F480E090E00C94D8\r
+:103F40006F1D885A833120F480E090E00C94851D29\r
+:103F50000895882321F00E94F4280C943D290895A7\r
+:103F6000882321F00E94FA280C943D290895BF92DD\r
+:103F7000CF92DF92EF92FF920F931F93CF93DF9335\r
+:103F8000CDB7DEB727970FB6F894DEBF0FBECDBF13\r
+:103F90008C0185E0F801DE01119601900D928A9561\r
+:103FA000E1F7F801D080E180F280558152955F7091\r
+:103FB00083819481892B41F0FFEFEF1208C081E0EB\r
+:103FC00090E0DF1631F003C081E090E002C080E0B5\r
+:103FD00090E080FD7CC3C8015E830E948F1ED98261\r
+:103FE000EA8289819A810E946E28B92E8F830E946D\r
+:103FF0006D280E9495275E816F81FF2021F00E942D\r
+:1040000011296F815E812B2D22952F7030E0253094\r
+:10401000310509F4E6C06CF4243031050CF0A2C07F\r
+:104020004B2D407F8B2D8F70223031050CF045C019\r
+:1040300017C02C3031054CF42A3031050CF0E7C1A3\r
+:104040002830310509F043C3E5C02D30310509F4AE\r
+:10405000BAC20CF4A2C22F30310509F038C323C311\r
+:10406000182F411101C002C01295107FFF2059F096\r
+:10407000112309F46BC2812F6F830E9404290E94CF\r
+:104080003D296F8163C2862F0E94581F112309F4B6\r
+:104090001EC3812F0E940A2927960FB6F894DEBF0F\r
+:1040A0000FBECDBFDF91CF911F910F91FF90EF9089\r
+:1040B000DF90CF90BF900C943D29403211F0829553\r
+:1040C000807F662319F0613071F523C0FF20B1F0C5\r
+:1040D000511101C032C0513081F527960FB6F894C6\r
+:1040E000DEBF0FBECDBFDF91CF911F910F91FF902B\r
+:1040F000EF90DF90CF90BF900C942429511101C014\r
+:1041000003C0513009F4E3C28E830E9427298E81B7\r
+:104110009AC1FF2021F0563008F0D9C20EC05530A8\r
+:1041200008F0D5C290C1FF20C9F0552331F0F80145\r
+:10413000958190FF0BC29F70958327960FB6F894D8\r
+:10414000DEBF0FBECDBFDF91CF911F910F91FF90CA\r
+:10415000EF90DF90CF90BF900C94A91F552309F4E6\r
+:1041600072C109C22B2D26952695237030E02115AA\r
+:10417000310529F02130310509F0A9C219C0FF200D\r
+:1041800021F0862F9B2D937002C080E090E027964F\r
+:104190000FB6F894DEBF0FBECDBFDF91CF911F9158\r
+:1041A0000F91FF90EF90DF90CF90BF900C946F1D18\r
+:1041B000FF2021F0862F9B2D937002C080E090E0BD\r
+:1041C00027960FB6F894DEBF0FBECDBFDF91CF911B\r
+:1041D0001F910F91FF90EF90DF90CF90BF900C94C4\r
+:1041E000851D862FFF2019F00E94AD2C02C00E9471\r
+:1041F000152D27960FB6F894DEBF0FBECDBFDF9109\r
+:10420000CF911F910F91FF90EF90DF90CF90BF90D3\r
+:104210000C949C2D8B2D837009F079C0F11057C23E\r
+:10422000262F229526952770220F220F862F8F701A\r
+:10423000C82ED12CE12CF12C022E04C0CC0CDD1C9C\r
+:10424000EE1CFF1C0A94D2F764FF10C06FE070E010\r
+:1042500080E090E004C0660F771F881F991F2A95A1\r
+:10426000D2F7609570958095909503C060E070E0FE\r
+:10427000CB012B2D269526952370422F50E04230FE\r
+:104280005105D9F04330510569F16C297D298E29FA\r
+:104290009F294130510551F127960FB6F894DEBFA2\r
+:1042A0000FBECDBFDF91CF911F910F91FF90EF9087\r
+:1042B000DF90CF90BF900C94AA276C297D298E297E\r
+:1042C0009F2927960FB6F894DEBF0FBECDBFDF91B2\r
+:1042D000CF911F910F91FF90EF90DF90CF90BF9003\r
+:1042E0000C94BC270E94AA27C701B60127960FB6D7\r
+:1042F000F894DEBF0FBECDBFDF91CF911F910F911C\r
+:10430000FF90EF90DF90CF90BF900C949827FF2004\r
+:1043100019F08B2D817001C08695882309F4D7C1CF\r
+:10432000262F229526952770220F220F862F8F7019\r
+:10433000C82ED12CE12CF12C022E04C0CC0CDD1C9B\r
+:10434000EE1CFF1C0A94D2F764FF10C06FE070E00F\r
+:1043500080E090E004C0660F771F881F991F2A95A0\r
+:10436000D2F7609570958095909503C060E070E0FD\r
+:10437000CB012B2D269526952370422F50E04230FD\r
+:104380005105D9F04330510569F16C297D298E29F9\r
+:104390009F294130510551F127960FB6F894DEBFA1\r
+:1043A0000FBECDBFDF91CF911F910F91FF90EF9086\r
+:1043B000DF90CF90BF900C9449286C297D298E29DD\r
+:1043C0009F2927960FB6F894DEBF0FBECDBFDF91B1\r
+:1043D000CF911F910F91FF90EF90DF90CF90BF9002\r
+:1043E0000C945B280E944928C701B60127960FB696\r
+:1043F000F894DEBF0FBECDBFDF91CF911F910F911B\r
+:10440000FF90EF90DF90CF90BF900C943728603FE3\r
+:1044100059F120F4603E08F494C008C0623F09F4EA\r
+:1044200067C0F0F1633F09F08CC065C0162F1F70A4\r
+:104430008B2D8F71FF2021F00E94E227812F7DCEEE\r
+:104440000E94FD27812F27960FB6F894DEBF0FBE7E\r
+:10445000CDBFDF91CF911F910F91FF90EF90DF9033\r
+:10446000CF90BF900C94B01FFF20B1F0553008F0F2\r
+:104470002EC18B2D8F7127960FB6F894DEBF0FBE1D\r
+:10448000CDBFDF91CF911F910F91FF90EF90DF9003\r
+:10449000CF90BF900C941C28563008F018C1E9CF7B\r
+:1044A000FF2099F08B2D8F7127960FB6F894DEBF01\r
+:1044B0000FBECDBFDF91CF911F910F91FF90EF9075\r
+:1044C000DF90CF90BF900C94E2278B2D8F712796B1\r
+:1044D0000FB6F894DEBF0FBECDBFDF91CF911F9115\r
+:1044E0000F91FF90EF90DF90CF90BF900C94FD273D\r
+:1044F000F110EBCFD7CFFF2099F08B2D8F7127963E\r
+:104500000FB6F894DEBF0FBECDBFDF91CF911F91E4\r
+:104510000F91FF90EF90DF90CF90BF900C94D32736\r
+:1045200027960FB6F894DEBF0FBECDBFDF91CF91B7\r
+:104530001F910F91FF90EF90DF90CF90BF900C9460\r
+:10454000CE27FF20A9F0552309F4ACCF862F27965C\r
+:104550000FB6F894DEBF0FBECDBFDF91CF911F9194\r
+:104560000F91FF90EF90DF90CF90BF900C94901E32\r
+:10457000552309F4AACF862F27960FB6F894DEBFED\r
+:104580000FBECDBFDF91CF911F910F91FF90EF90A4\r
+:10459000DF90CF90BF900C94581F4B2D4F70C801E7\r
+:1045A0000E94560327960FB6F894DEBF0FBECDBF0C\r
+:1045B000DF91CF911F910F91FF90EF90DF90CF90FF\r
+:1045C000BF900C940027F11082C09B2D9F70492F43\r
+:1045D00050E04230510599F144F44115510569F01C\r
+:1045E0004130510509F073C019C043305105C1F184\r
+:1045F0004430510509F06BC044C027960FB6F894BB\r
+:10460000DEBF0FBECDBFDF91CF911F910F91FF9005\r
+:10461000EF90DF90CF90BF900C94763027960FB636\r
+:10462000F894DEBF0FBECDBFDF91CF911F910F91E8\r
+:10463000FF90EF90DF90CF90BF900C948D30279635\r
+:104640000FB6F894DEBF0FBECDBFDF91CF911F91A3\r
+:104650000F91FF90EF90DF90CF90BF900C94A93016\r
+:1046600027960FB6F894DEBF0FBECDBFDF91CF9176\r
+:104670001F910F91FF90EF90DF90CF90BF900C941F\r
+:10468000BC30862F27960FB6F894DEBF0FBECDBF85\r
+:10469000DF91CF911F910F91FF90EF90DF90CF901E\r
+:1046A000BF900C94E0304B2D4F70C80127960FB689\r
+:1046B000F894DEBF0FBECDBFDF91CF911F910F9158\r
+:1046C000FF90EF90DF90CF90BF900C944309279616\r
+:1046D0000FB6F894DEBF0FBECDBFDF91CF911F9113\r
+:1046E0000F91FF90EF90DF90CF90BF9008950E94C0\r
+:1046F00011290E9421290E94E6280E943D290E943A\r
+:10470000482E0E949C2D80E090E00E946F1D80E06A\r
+:1047100090E00C94851D0E9401290C9477230E943F\r
+:104720006E28292F22952F7030E02C3031054CF463\r
+:104730002A3031056CF4225031092230310590F4D1\r
+:1047400007C02C30310551F02F30310559F406C027\r
+:10475000803E10F0803F31F481E0089593FB88277C\r
+:1047600080F9089580E00895CF93DF9300D000D0C2\r
+:104770001F92CDB7DEB70F900F900F900F900F9054\r
+:10478000DF91CF910895CF93DF9300D000D000D078\r
+:10479000CDB7DEB726960FB6F894DEBF0FBECDBFFD\r
+:1047A000DF91CF9108951F93CF93DF93C091DB02E8\r
+:1047B00016E012C0D0E01C9FF0011D9FF00D1124E7\r
+:1047C000E555FD4F408151816281738184819581DE\r
+:1047D0000E94C3232196C7708091DC02C813EACFE0\r
+:1047E000DF91CF911F9108954091A5025091A602AB\r
+:1047F0006091A7027091A8028091A9029091AA02EB\r
+:104800000C94C3230F931F93CF93DF938091AA023D\r
+:1048100082958F7009F069C08091A702882309F4FE\r
+:1048200064C0A091DB02D091DC02B091A502C091DE\r
+:10483000A6028091A8029091A90221E030E0BF3F3A\r
+:1048400011F020E030E0122FBC016095709506E079\r
+:104850004AC0009721F0CF3F29F4212F05C021E065\r
+:1048600030E002C020E030E020FD3BC04A2F50E0A5\r
+:10487000049FF001059FF00D1124E555FD4F2181A6\r
+:10488000C2132FC02081B2132CC02281211129C054\r
+:10489000238134812817390718F0281B390B02C0EF\r
+:1048A000260F371F283C3105E0F48091AA028F7053\r
+:1048B00080618093AA0286E0849FF001859FF00DBD\r
+:1048C0001124E055FD4F80818F708061808385EADF\r
+:1048D00092E00E94B71FDF91CF911F910F910C942E\r
+:1048E000D323AF5FA770AD13B4CFDF91CF911F91EA\r
+:1048F0000F910895EF92FF920F931F93CF93DF9341\r
+:10490000CDB7DEB762970FB6F894DEBF0FBECDBF4E\r
+:104910008C0185E0F801DE011D9601900D928A95CB\r
+:10492000E1F7D8014C9111965C91119712966C9118\r
+:1049300012971396ED90FC9014977091A502E09158\r
+:10494000A6028091A8029091A902009739F0EF3F4A\r
+:1049500041F421E030E07F3F31F003C021E030E05E\r
+:1049600002C020E030E020FD5CC12091A70222239C\r
+:1049700009F4F1C0E816F90628F09701281B390B55\r
+:10498000C90104C0809590958E0D9F1D883C9105AE\r
+:1049900008F098C08091AA02982F907F09F064C017\r
+:1049A000E51314C0741312C0611110C08F708061C0\r
+:1049B0008093AA020E94F42385EA92E00E94B71F26\r
+:1049C0008091AA02D80115968C9343C1EF2839F043\r
+:1049D0005F3F41F481E090E04F3F31F003C081E060\r
+:1049E00090E002C080E090E080FD03C081E0862777\r
+:1049F00002C080E090E080FF2EC08091DB02209119\r
+:104A0000DC0236E013C090E0389FF001399FF00DD2\r
+:104A10001124E555FD4F7181571306C0708147136E\r
+:104A200003C07281671317C0019687708213EBCFA2\r
+:104A300012C19F7059F0882309F40BC107C09F7001\r
+:104A400029F0F8019581907F09F403C1805E8830D8\r
+:104A500008F4FFC0D2C0662309F4FBC08091AA020B\r
+:104A600081608093AA02F5C0E51308C0741306C0E4\r
+:104A7000611104C0D80115968C939DC04D875E8747\r
+:104A80008D859E856A8B0E948F236A89882309F40D\r
+:104A9000B4C0662309F4B1C02091AA02822F829586\r
+:104AA0008F7090E002970CF4C6C08091A50290919F\r
+:104AB000A60298878F831986FB86EA862C87CE010B\r
+:104AC000079646C08091AA02982F907F59F47E2DB8\r
+:104AD000F98AE88A89890E94B42385EA92E00E94D3\r
+:104AE000B71F95C0E51311C074130FC061110DC03D\r
+:104AF000F8018583C8010E94B71FE5EAF2E086E06D\r
+:104B0000DF011D928A95E9F7A2C04D875E878D85EA\r
+:104B10009E856A8B0E948F236A89882309F46DC061\r
+:104B2000662309F46AC02091AA02822F82958F70B1\r
+:104B300090E002970CF47FC08091A5029091A602AC\r
+:104B40009A8389831B82FD82EC822E83CE0101969B\r
+:104B50000E94B71F70C0E816F90628F09701281BBD\r
+:104B6000390BC90104C0809590958E0D9F1D883C1E\r
+:104B7000910508F046C0662309F43FC0E51330C034\r
+:104B800074132EC02091AA0220FD21C0322F32952D\r
+:104B90003F70832F90E00097D1F0D80115962C93A9\r
+:104BA00015970F9741F0832F8F5F8295807F2F702D\r
+:104BB000282B15962C93C8010E94B71F86E0F80198\r
+:104BC000A5EAB2E001900D928A95E1F73EC086E039\r
+:104BD000F801A5EAB2E001900D928A95E1F737C09D\r
+:104BE0004D875E878D859E850E948F23811123C00E\r
+:104BF0008091AA0281608093AA02C8010E94B71F17\r
+:104C000026C07E2DF98AE88A89890E94B423E5EAC4\r
+:104C1000F2E086E0DF011D928A95E9F70E94F42315\r
+:104C200018C0662351F34D875E878D859E850E944F\r
+:104C30008F23882311F386E0F801A5EAB2E0019002\r
+:104C40000D928A95E1F70E9402240E94F42381E0EC\r
+:104C500014C080E012C04D875E878D859E850E94BE\r
+:104C60006E28292F22952F7030E0223031050CF468\r
+:104C7000E0CE243031050CF6E2CE62960FB6F89401\r
+:104C8000DEBF0FBECDBFDF91CF911F910F91FF907F\r
+:104C9000EF9008951F93CF93DF93CDB7DEB72C9796\r
+:104CA0000FB6F894DEBF0FBECDBF4F83588769871C\r
+:104CB0007A878B879C87CE0107960E947A24882367\r
+:104CC000D9F02F8138858A859B85892B39F03F3F24\r
+:104CD00019F080E090E004C02F3FD9F781E090E028\r
+:104CE000892B09F06DC04F81588569857A858B8540\r
+:104CF0009C850E94C32364C086E0FE013796DE01D6\r
+:104D0000119601900D928A95E1F7FF81E8854A8519\r
+:104D10005B854115510539F0EF3F41F481E090E0AA\r
+:104D2000FF3F31F003C081E090E002C080E090E0FE\r
+:104D300080FD46C02091DC0230E0C90101968770F9\r
+:104D400099276091DB0270E08617970709F440C04D\r
+:104D5000F983EA835D834C8396E0929FD001939F11\r
+:104D6000B00D1124A555BD4FFE01319601900D9255\r
+:104D70009A95E1F78093DC020E94D32321C0189F0B\r
+:104D8000C001112485559D4F0E947A24882371F11A\r
+:104D9000E091DB021E9FF0011124E555FD4F40819B\r
+:104DA000518162817381848195810E94C3238091A6\r
+:104DB000DB0290E00196877099278093DB0201C0A7\r
+:104DC00016E08091DB029091DC028913D8CF0EC0EF\r
+:104DD0000E948B231092DC021092DB02E5EAF2E0E3\r
+:104DE00086E0DF011D928A95E9F7EACF2C960FB68F\r
+:104DF000F894DEBF0FBECDBFDF91CF911F91089514\r
+:104E0000DF92EF92FF920F931F93CF93DF93EC010A\r
+:104E1000009709F46EC0D12CEE24E394F12C8E019E\r
+:104E20000F5F1F4FFE018491843748F4843008F0EF\r
+:104E30004CC0813071F0823009F05BC01EC08537F4\r
+:104E400009F43FC080F1982F9458903708F051C072\r
+:104E50003FC02296F8018491982F905E983050F4CC\r
+:104E60008770FE2D01C0FF0F8A95EAF78F2F0E94F1\r
+:104E7000142913C00E94901E2FC02296F80184911D\r
+:104E8000982F905E983060F48770FE2D01C0FF0F60\r
+:104E90008A95EAF78F2F0E941A290E943D291CC08B\r
+:104EA0000E94581F19C02296F801049107C08FE98B\r
+:104EB0009FE00197F1F700C0000001500111F7CF0A\r
+:104EC0000BC02296F801D49007C00E94901E03C028\r
+:104ED0008F770E94581FE8018D2D07C08150EFE9A0\r
+:104EE000FFE03197F1F700C00000882309F497CF65\r
+:104EF000F5CFDF91CF911F910F91FF90EF90DF9051\r
+:104F000008956093E1027093E2028093E30290932C\r
+:104F1000E4020C9477236093DD027093DE028093A9\r
+:104F2000DF029093E0020C94772308950C9481277C\r
+:104F30000F931F930091E1021091E2022091E3028E\r
+:104F40003091E402602B712B822B932B1F910F91D8\r
+:104F50000C9481270F931F930091E1021091E202BC\r
+:104F60002091E3023091E402602371238223932392\r
+:104F70001F910F910C9481270F931F930091E102D1\r
+:104F80001091E2022091E3023091E4026027712740\r
+:104F9000822793271F910F910C94812760E070E086\r
+:104FA000CB010C948B2741E050E060E070E004C03E\r
+:104FB000440F551F661F771F8A95D2F7CB01BA01A0\r
+:104FC0000C948B2741E050E060E070E004C0440F97\r
+:104FD000551F661F771F8A95D2F78091DD02909149\r
+:104FE000DE02A091DF02B091E002482B592B6A2B20\r
+:104FF0007B2BCB01BA010C948B2741E050E060E0A1\r
+:1050000070E004C0440F551F661F771F8A95D2F7C2\r
+:1050100040955095609570958091DD029091DE02EB\r
+:10502000A091DF02B091E002482359236A237B2339\r
+:10503000CB01BA010C948B2741E050E060E070E0B6\r
+:1050400004C0440F551F661F771F8A95D2F78091C1\r
+:10505000DD029091DE02A091DF02B091E0024827CC\r
+:1050600059276A277B27CB01BA010C948B270F9312\r
+:105070001F930091DD021091DE022091DF0230913A\r
+:10508000E002602B712B822B932B1F910F910C94BC\r
+:105090008B270F931F930091DD021091DE02209168\r
+:1050A000DF023091E00260237123822393231F915A\r
+:1050B0000F910C948B270F931F930091DD02109199\r
+:1050C000DE022091DF023091E00260277127822703\r
+:1050D00093271F910F910C948B270895CF92DF9205\r
+:1050E000EF92FF920F931F93CF93DF93EC01C09049\r
+:1050F000E102D090E202E090E302F090E4028091BD\r
+:10510000DD029091DE02A091DF02B091E002C82A98\r
+:10511000D92AEA2AFB2A0FE110E0B701A601002EE6\r
+:1051200004C076956795579547950A94D2F740FF46\r
+:1051300008C0BE01802F0E94B3048130910509F0A0\r
+:1051400007C00150110948F7BE0180E00E94B30476\r
+:10515000DF91CF911F910F91FF90EF90DF90CF9053\r
+:10516000089540918B0150918C0120E030E09FEF39\r
+:10517000FA01E20FF31F62816817A1F09F3F19F453\r
+:10518000611101C0922F2F5F3F4F2630310581F70B\r
+:1051900007C0FA01E90FF11D97FDFA958283089582\r
+:1051A0009F3FB9F7089540918B0150918C0120E009\r
+:1051B00030E0FA01E20FF31F9281981301C01282CE\r
+:1051C0002F5F3F4F26303105A1F7089581E090E031\r
+:1051D000E0918B01F0918C01E80FF91F108201968C\r
+:1051E00088309105A9F708959091E502982B909346\r
+:1051F000E502089580959091E50298239093E50249\r
+:1052000008951092E50208959091E602982B9093EC\r
+:10521000E602089580959091E60298239093E60225\r
+:1052200008951092E60208959091E702982B9093CA\r
+:10523000E702089580959091E70298239093E70202\r
+:1052400008951092E70208958093E802089510925D\r
+:10525000E802089540918B0150918C0120E030E0EC\r
+:1052600080E0FA01E20FF31F918191118F5F2F5FB0\r
+:105270003F4F27303105A9F70895E0918B01F09158\r
+:105280008C018091E5028083E0918B01F0918C018B\r
+:1052900080819091E602892B8083E0918B01F091CF\r
+:1052A0008C0180819091E702892B80839091E802A4\r
+:1052B000992361F0E0918B01F0918C018081892B21\r
+:1052C00080830E942A2981110E94272980918B01C5\r
+:1052D00090918C010C94591D8091FB03843039F11D\r
+:1052E0001092F20220E488E190E00FB6F894A895BD\r
+:1052F000809360000FBE2093600080E00E949B03BB\r
+:1053000080E00E942C0683B7817F846083BF83B7CF\r
+:10531000816083BF7894889583B78E7F83BF88E14F\r
+:105320000FB6F89480936000109260000FBE08954D\r
+:1053300008950895CF9380E00E949B030E949829CE\r
+:105340000E94E9070E949929C0E08C2F0E94390928\r
+:10535000892B29F4CF5FC530C1F780E001C081E01F\r
+:10536000CF9108950E948B2380E00E949B030E94AE\r
+:1053700065300E944D1D0C942C061F920F920FB6A3\r
+:105380000F9211248F939F93AF93BF938091F2025A\r
+:10539000811113C08091F3029091F402A091F50263\r
+:1053A000B091F6024196A11DB11D8093F302909336\r
+:1053B000F402A093F502B093F602BF91AF919F91D2\r
+:1053C0008F910F900FBE0F901F90189582E084BDB3\r
+:1053D00093E095BD9AEF97BD80936E0008958FB7C7\r
+:1053E000F8944091F3025091F4026091F5027091AB\r
+:1053F000F6028FBFCA010895CF92DF92EF92FF921B\r
+:105400000F931F932FB7F8944091F3025091F40239\r
+:105410006091F5027091F6022FBF6A017B01EE24C4\r
+:10542000FF248C0120E030E0C016D106E206F3062E\r
+:1054300020F09A01281B390B05C09C01209530955E\r
+:10544000240F351FC9011F910F91FF90EF90DF903E\r
+:10545000CF9008951F920F920FB60F9211248F9341\r
+:105460009F93AF93BF938091F3029091F402A09128\r
+:10547000F502B091F6020196A11DB11D8093F302D1\r
+:105480009093F402A093F502B093F602BF91AF910E\r
+:105490009F918F910F900FBE0F901F9018950E94B3\r
+:1054A0009516F8942FEF87EA91E6215080409040BE\r
+:1054B000E1F700C0000087E090EBDC018093050479\r
+:1054C00090930604A0930704B09308042CE088E1AD\r
+:1054D00090E00FB6F894A895809360000FBE2093DB\r
+:1054E0006000FFCFCF92DF92EF92FF920F931F9356\r
+:1054F000CF93DF93C82ED12C01E010E08D2D0E94B8\r
+:1055000039097C01C0E0D0E098010C2E02C0220FC6\r
+:10551000331F0A94E2F72E213F21232B29F42196F1\r
+:10552000CC30D10589F708C06C2F7D2D80E00E941A\r
+:105530008E04C812F4CF06C0D39485E0D812DECF13\r
+:1055400080E001C081E0DF91CF911F910F91FF902A\r
+:10555000EF90DF90CF900895CF93C82F8CE20E94F8\r
+:10556000722A882321F08C2FCF910C94722A80E02C\r
+:10557000CF910895CF930E94FD2B811102C00E940C\r
+:10558000DE2BC5E608C00E94E9078FE39CE901977E\r
+:10559000F1F700C00000C150B1F789E20E94AC2AC7\r
+:1055A00081110AC18AE20E94AC2A81110E94DE2B7D\r
+:1055B00085E00E94AC2A81110E944F2A0E94082C8B\r
+:1055C0008093F10287E00E94AC2A882399F18BE155\r
+:1055D0000E94AC2A882351F09091F10291FB882718\r
+:1055E00080F921E0822780FB91F922C08EE00E94A1\r
+:1055F000AC2A882351F09091F10292FB882780F920\r
+:1056000021E0822780FB92F913C080E10E94AC2A3E\r
+:105610009091F102882341F093FB882780F921E0E3\r
+:10562000822780FB93F904C0892F809580FB90F935\r
+:105630009093F1028091F1020E940C2C0E941A2C8E\r
+:105640008093020380EE0E94AC2A882341F080916F\r
+:105650000203982F909590FB80F98093020389E3D1\r
+:105660000E94AC2A882359F09091020391FB88276D\r
+:1056700080F921E0822780FB91F99093020382EE6A\r
+:105680000E94AC2A882359F09091020392FB88274C\r
+:1056900080F921E0822780FB92F99093020386EE45\r
+:1056A0000E94AC2A882359F09091020393FB88272B\r
+:1056B00080F921E0822780FB93F99093020383EE27\r
+:1056C0000E94AC2A882359F09091020394FB88270A\r
+:1056D00080F921E0822780FB94F99093020385E30F\r
+:1056E0000E94AC2A882359F09091020395FB8827E9\r
+:1056F00080F921E0822780FB95F99093020381E3F2\r
+:105700000E94AC2A882359F09091020396FB8827C7\r
+:1057100080F921E0822780FB96F99093020381E1D2\r
+:105720000E94AC2A882359F09091020397FB8827A6\r
+:1057300080F921E0822780FB97F990930203809102\r
+:1057400002030E941E2C87E20E94AC2AC82F8EE121\r
+:105750000E94AC2A8111C2608FE10E94AC2A8111A3\r
+:10576000C46080E20E94AC2A8111C86081E20E947C\r
+:10577000AC2A8111C06182E20E94AC2A8111C06210\r
+:1057800083E20E94AC2A8111C06484E20E94AC2AA8\r
+:10579000882311F0C06802C0CC2329F08C2F0E940E\r
+:1057A000152C6C2F03C00E94112C682F70E080E034\r
+:1057B00090E0CF910C949627CF9108956DEE7EEFF7\r
+:1057C00080E090E00E94CC3460E082E090E00E94B3\r
+:1057D000BE3460E083E090E00E94BE3460E084E08C\r
+:1057E00090E00E94BE3460E085E090E00E94BE340C\r
+:1057F00060E086E090E00C94BE3480E090E00E948F\r
+:10580000B83421E08D3E9E4F09F020E0822F0895AC\r
+:1058100082E090E00C94B034682F82E090E00C9429\r
+:10582000BE3483E090E00C94B034682F83E090E0C5\r
+:105830000C94BE3484E090E00C94B034682F84E083\r
+:1058400090E00C94BE3486E090E00C94B034682F65\r
+:1058500086E090E00C94BE348091FF0280FF0BC084\r
+:105860006091900185E0689FB0011124759567955E\r
+:10587000759567952AC081FF09C06091900185E008\r
+:10588000689FB0011124759567951FC082FF07C0FE\r
+:105890006091900185E0689FB001112416C040918D\r
+:1058A000F9024423C9F060918F01461788F72091CF\r
+:1058B000900185E0289F90011124429FC001439FE1\r
+:1058C000900D112470E00E949C346038710540F402\r
+:1058D0006115710539F002C065E070E0862F08950A\r
+:1058E0008FE7089581E008958091FF0280FF08C04E\r
+:1058F00060918E0170E0759567957595679521C0EB\r
+:1059000081FF06C060918E0170E07595679519C0A2\r
+:1059100082FF04C060918E0170E010C08091F90296\r
+:105920008823C1F060918D018617A0F790918E01B8\r
+:10593000989FC001112470E00E949C34603871056A\r
+:1059400028F46115710521F0862F08958FE70895D9\r
+:1059500081E0089561E070E0F4CF803F21F40E947F\r
+:105960002C2C819504C0813F29F40E942C2C80931B\r
+:10597000FC020895823F21F40E942C2C819504C0E2\r
+:10598000833F29F40E942C2C8093FB020895893FC9\r
+:1059900019F40E94742C05C08A3F31F40E94742CC3\r
+:1059A00081958093FD0208958B3F21F40E94742C11\r
+:1059B000819504C08C3F29F40E94742C8093FE02D0\r
+:1059C0000895843F21F48091FA02816017C0853FD9\r
+:1059D00021F48091FA02826011C0863F21F4809107\r
+:1059E000FA0284600BC0873F21F48091FA0288603C\r
+:1059F00005C0883F31F48091FA0280618093FA02F9\r
+:105A000008958D3F21F48091FF0281600BC08E3F8D\r
+:105A100021F48091FF02826005C08F3F29F48091BC\r
+:105A2000FF0284608093FF020895803F29F48091F3\r
+:105A3000FC0287FF6EC007C0813F41F48091FC02E9\r
+:105A400018160CF066C01092FC0263C09091FB0225\r
+:105A5000823F19F497FF5DC005C0833F31F41916EA\r
+:105A60000CF057C01092FB0254C0893F31F4809172\r
+:105A7000FD0218160CF04DC006C08A3F39F4809123\r
+:105A8000FD0287FF46C01092FD0243C08B3F29F400\r
+:105A90008091FE0287FF3DC006C08C3F39F48091A3\r
+:105AA000FE021816B4F51092FE0233C0843F21F4B2\r
+:105AB0008091FA028E7F05C0853F31F48091FA0211\r
+:105AC0008D7F8093FA0225C0863F21F48091FA02EF\r
+:105AD0008B7FF7CF873F21F48091FA02877FF1CF48\r
+:105AE000883F21F48091FA028F7EEBCF8D3F21F425\r
+:105AF0008091FF028E7F0BC08E3F21F48091FF02C8\r
+:105B00008D7F05C08F3F29F48091FF028B7F8093AA\r
+:105B1000FF028091FB0281110EC08091FC02811175\r
+:105B20000AC08091FD02811106C08091FE028111A0\r
+:105B300002C01092F90208958AEF92E00E94641D5B\r
+:105B40000E94EF299093F8028093F7020895CF9373\r
+:105B50008091F7029091F8020E94FC294091F9028D\r
+:105B6000442321F02091910130E006C02091920160\r
+:105B70005AE0259F900111248217930708F486C0EC\r
+:105B80008091FB0281110DC09091FC02911109C01E\r
+:105B90009091FD02911105C09091FE02992309F4A4\r
+:105BA00075C04F3F19F04F5F4093F902181624F467\r
+:105BB0000E942C2C8093FB028091FB0287FF05C082\r
+:105BC0000E942C2C81958093FB028091FC02181678\r
+:105BD00024F40E942C2C8093FC028091FC0287FF0D\r
+:105BE00005C00E942C2C81958093FC026091FB02E1\r
+:105BF000662339F1C091FC02CC2319F1772767FDA8\r
+:105C00007095872F972F0E94003223E333E343E3FD\r
+:105C10005FE30E94B4320E94CD316093FB026C2F8F\r
+:105C2000772767FD7095872F972F0E94003223E317\r
+:105C300033E343E35FE30E94B4320E94CD316093CB\r
+:105C4000FC028091FD02181624F40E94742C8093AB\r
+:105C5000FD028091FD0287FF05C00E94742C819592\r
+:105C60008093FD028091FE02181624F40E94742C89\r
+:105C70008093FE028091FE0287FF05C00E94742C73\r
+:105C800081958093FE02CF910C949C2DCF91089525\r
+:105C9000EAEFF2E085E0DF011D928A95E9F71092C4\r
+:105CA000F9021092FF020895833089F130F48130B7\r
+:105CB00061F0823009F06EC019C0853009F449C026\r
+:105CC000B8F1863009F066C055C020919201862F48\r
+:105CD00090E0820F911D8F3F910520F4620F609339\r
+:105CE000920108958FEF8093920108952091910180\r
+:105CF000862F90E0820F911D8F3F910520F4620F57\r
+:105D00006093910108958FEF809391010895209100\r
+:105D10009001862F90E0820F911D8F3F910520F416\r
+:105D2000620F6093900108958FEF80939001089522\r
+:105D300020918F01862F90E0820F911D8F3F91055A\r
+:105D400020F4620F60938F0108958FEF80938F018D\r
+:105D5000089520918E01862F90E0820F911D8F3F34\r
+:105D6000910520F4620F60938E0108958FEF809368\r
+:105D70008E01089520918D01862F90E0820F911D54\r
+:105D80008F3F910520F4620F60938D0108958FEF8E\r
+:105D900080938D010895833021F130F4813059F0E2\r
+:105DA000823009F049C012C0853089F128F186306F\r
+:105DB00009F042C037C080919201681720F4861B19\r
+:105DC000809392010895109292010895809191011B\r
+:105DD000681720F4861B8093910108951092910119\r
+:105DE000089580919001681720F4861B809390019C\r
+:105DF000089510929001089580918F01681720F402\r
+:105E0000861B80938F01089510928F0108958091D1\r
+:105E10008E01681720F4861B80938E0108951092DE\r
+:105E20008E01089580918D01681720F4861B809360\r
+:105E30008D01089510928D01089541E050E060E0D9\r
+:105E400070E004C0440F551F661F771F8A95D2F774\r
+:105E5000CB01BA010E9496270C948B23873200F560\r
+:105E60008E3108F089C08E3009F469C060F4873043\r
+:105E700009F44DC018F4863049F531C0883041F13D\r
+:105E80008B3021F57EC0863109F47BC018F4803157\r
+:105E9000E9F45FC0893109F474C08B31B9F445C0AD\r
+:105EA000883309F46EC048F4893209F467C0853339\r
+:105EB00009F464C0873251F461C0833409F45EC0D0\r
+:105EC00018F48A3318F056C0883499F080E00895A9\r
+:105ED0000E94082C0E941A2C0E94232C52C08091F0\r
+:105EE000F102817F8E7F8093F10281E08093000335\r
+:105EF00008950E948B232FEF83ED90E32150804083\r
+:105F00009040E1F700C000000E944F2A3AC09091F3\r
+:105F1000F102892F8095817080FB90F919F09660CD\r
+:105F2000986025C0997F977F22C09091F10291FBE4\r
+:105F3000882780F921E0822780FB91F913C0909196\r
+:105F4000F10292FB882780F921E0822780FB92F9F9\r
+:105F500009C09091F10293FB882780F921E0822704\r
+:105F600080FB93F99093F102882359F0916090930C\r
+:105F7000F10207C0895303C08D5101C080E00E9427\r
+:105F80001D2F81E0089580E0089580E00895CF936B\r
+:105F9000C82F80910003813071F020F0823009F029\r
+:105FA00089C037C0A0918B01B0918C018C91823255\r
+:105FB00009F082C007C0A0918B01B0918C018C9137\r
+:105FC000823249F48C2F0E94C32F81111EC08C2F66\r
+:105FD0000E942E2F1CC08C2F0E94C52F811115C02E\r
+:105FE000C43169F030F4CB3081F0C03109F068C0C1\r
+:105FF00009C0C93221F0C83309F062C006C010924E\r
+:1060000000035EC082E08093000381E090E0817035\r
+:106010005AC0C932C9F060F4C431B1F020F4C730BD\r
+:1060200009F04CC034C0CE51C63008F047C017C08C\r
+:10603000CE3439F120F4CB3409F040C01CC0C13556\r
+:10604000C1F0C235D9F513C080910103882319F03E\r
+:106050001092010333C081E08093000334C0EC2F21\r
+:10606000F0E0E25EFD4F80818093010327C061E094\r
+:1060700003C061E007C06AE0809101030E94542ED2\r
+:106080001DC06AE0809101030E94CB2E17C08EE1F3\r
+:106090008093920182E3809391018AE08093900142\r
+:1060A00084E180938F0188E080938E0188E2809361\r
+:1060B0008D0104C01092000380E005C081E003C0A0\r
+:1060C00080E090E0A4CFCF9108950E94FD2B811134\r
+:1060D00002C00E94DE2B0E94232C8093040480FFC8\r
+:1060E00002C0869501C080E00C949B03809104045B\r
+:1060F000982F9695292F30E0233031054CF49F5F7F\r
+:10610000990F8170892B8160809304040E94272C51\r
+:106110008091040486950C949B0380910404982F2D\r
+:10612000969591F09158990F8170892B8093040472\r
+:106130008E7F91E009F490E08091040490FB80F957\r
+:10614000809304040E94272C8091040486950C946B\r
+:106150009B0380910404982F909590FB80F9809385\r
+:1061600004040E94272C8091040480FF02C08695BD\r
+:1061700001C080E00C949B0330910404232F2695EA\r
+:106180002F5F2F77822F90E0317004972CF4220F2D\r
+:10619000232B2093040402C0309304048091040450\r
+:1061A000282F2E7F91E009F490E090FB80F98093F6\r
+:1061B00004040E94272C8091040486950C949B0370\r
+:1061C00020910404922F96959827990F822F817021\r
+:1061D000892B809304048E7F91E009F490E08091F4\r
+:1061E000040490FB80F9809304040E94272C809182\r
+:1061F000040486950C949B035058BB27AA270ED005\r
+:1062000075C166D130F06BD120F031F49F3F11F4AD\r
+:106210001EF45BC10EF4E095E7FB51C1E92F77D185\r
+:1062200080F3BA17620773078407950718F071F4B3\r
+:106230009EF58FC10EF4E0950B2EBA2FA02D0B0109\r
+:10624000B90190010C01CA01A0011124FF27591BBB\r
+:1062500099F0593F50F4503E68F11A16F040A22FC1\r
+:10626000232F342F4427585FF3CF46953795279532\r
+:10627000A795F0405395C9F77EF41F16BA0B620B31\r
+:10628000730B840BBAF09150A1F0FF0FBB1F661F78\r
+:10629000771F881FC2F70EC0BA0F621F731F841FBB\r
+:1062A00048F4879577956795B795F7959E3F08F0E1\r
+:1062B000B3CF9395880F08F09927EE0F97958795A0\r
+:1062C0000895D9D008F481E008950CD00FC107D10A\r
+:1062D00040F0FED030F021F45F3F19F0F0C05111D2\r
+:1062E00039C1F3C014D198F39923C9F35523B1F3FD\r
+:1062F000951B550BBB27AA2762177307840738F035\r
+:106300009F5F5F4F220F331F441FAA1FA9F333D093\r
+:106310000E2E3AF0E0E830D091505040E695001C47\r
+:10632000CAF729D0FE2F27D0660F771F881FBB1F03\r
+:10633000261737074807AB07B0E809F0BB0B802DDD\r
+:10634000BF01FF2793585F4F2AF09E3F510568F029\r
+:10635000B6C000C15F3FECF3983EDCF386957795BD\r
+:106360006795B795F7959F5FC9F7880F911D96952B\r
+:10637000879597F90895E1E0660F771F881FBB1F87\r
+:10638000621773078407BA0720F0621B730B840B34\r
+:10639000BA0BEE1F88F7E095089504D06894B11108\r
+:1063A000D9C00895BCD088F09F5790F0B92F992795\r
+:1063B000B751A0F0D1F0660F771F881F991F1AF010\r
+:1063C000BA95C9F712C0B13081F0C3D0B1E00895D9\r
+:1063D000C0C0672F782F8827B85F39F0B93FCCF35A\r
+:1063E000869577956795B395D9F73EF49095809506\r
+:1063F000709561957F4F8F4F9F4F0895E89409C026\r
+:1064000097FB3EF490958095709561957F4F8F4FE7\r
+:106410009F4F9923A9F0F92F96E9BB279395F695FD\r
+:10642000879577956795B795F111F8CFFAF4BB0F7B\r
+:1064300011F460FF1BC06F5F7F4F8F4F9F4F16C0DF\r
+:10644000882311F096E911C0772321F09EE8872F69\r
+:10645000762F05C0662371F096E8862F70E060E025\r
+:106460002AF09A95660F771F881FDAF7880F96959E\r
+:10647000879597F90895990F0008550FAA0BE0E842\r
+:10648000FEEF16161706E807F907C0F012161306F6\r
+:10649000E407F50798F0621B730B840B950B39F436\r
+:1064A0000A2661F0232B242B252B21F408950A269C\r
+:1064B00009F4A140A6958FEF811D811D089597F9DC\r
+:1064C0009F6780E870E060E008959FEF80EC08959A\r
+:1064D00000240A94161617061806090608950024C3\r
+:1064E0000A9412161306140605060895092E03943D\r
+:1064F000000C11F4882352F0BB0F40F4BF2B11F4B1\r
+:1065000060FF04C06F5F7F4F8F4F9F4F089557FD0F\r
+:106510009058440F551F59F05F3F71F04795880F11\r
+:1065200097FB991F61F09F3F79F0879508951216A8\r
+:1065300013061406551FF2CF4695F1DF08C0161654\r
+:1065400017061806991FF1CF869571056105089405\r
+:106550000895E894BB2766277727CB0197F908951C\r
+:106560008ADF08F48FEF08950BD0C0CFB1DF28F099\r
+:10657000B6DF18F0952309F0A2CFA7CF1124EACFF8\r
+:10658000C6DFA0F3959FD1F3950F50E0551F629F92\r
+:10659000F001729FBB27F00DB11D639FAA27F00D7C\r
+:1065A000B11DAA1F649F6627B00DA11D661F829FA3\r
+:1065B0002227B00DA11D621F739FB00DA11D621F88\r
+:1065C000839FA00D611D221F749F3327A00D611DA5\r
+:1065D000231F849F600D211D822F762F6A2F112487\r
+:1065E0009F5750408AF0E1F088234AF0EE0FFF1FDA\r
+:1065F000BB1F661F771F881F91505040A9F79E3F11\r
+:10660000510570F05CCFA6CF5F3FECF3983EDCF312\r
+:10661000869577956795B795F795E7959F5FC1F74D\r
+:10662000FE2B880F911D9695879597F90895FA018D\r
+:10663000EE0FFF1F30962105310599F161157105A7\r
+:1066400061F48038BFE39B0749F168949038810575\r
+:1066500061F08038BFEF9B0741F0992342F5FF3F7F\r
+:10666000E1053105210511F1E8940894E795D90178\r
+:10667000AA2329F4AB2FBE2FF85FD0F310C0FF5F21\r
+:1066800070F4A695E0F7F73950F019F0FF3A38F4B6\r
+:106690009F779F930CD00F9007FC905808953EF081\r
+:1066A00014CF60E070E080E89FE308954FE79F77A4\r
+:1066B0005F934F933F932F939ED02F913F914F9194\r
+:1066C0005F9152DF05C019F40EF0F9CE42CFFDCE36\r
+:1066D00026DFC8F39638C0F707F80F92E8942BE34B\r
+:1066E0003AEA48EB5FE74EDF0F920F920F924DB7F9\r
+:1066F0005EB70F92C0D0ECEAF0E016D04F915F91F8\r
+:10670000EF91FF91E595EE1FFF1F49F0FE57E068FE\r
+:106710004427EE0F441FFA95E1F74195550B32D00F\r
+:106720000F9007FE26C00895DF93CF931F930F931A\r
+:10673000FF92EF92DF927B018C01689405C0DA2E04\r
+:10674000EF011EDFFE01E894A59125913591459159\r
+:106750005591AEF3EF0162DDFE019701A801DA94D5\r
+:1067600079F7DF90EF90FF900F911F91CF91DF911C\r
+:1067700008959B01AC0160E070E080E89FE3A5CD47\r
+:106780009ECEACC0CCDEE8F39923D9F3940F511D13\r
+:10679000BBF39150504094F059F0882332F0660FCB\r
+:1067A000771F881F91505040C1F79E3F510544F715\r
+:1067B000880F911D9695879597F908955F3FACF0E6\r
+:1067C000983E9CF0BB27869577956795B79508F41A\r
+:1067D000B1609395C1F7BB0F58F711F460FFE8CF94\r
+:1067E0006F5F7F4F8F4F9F4FE3CFB4CE0EF076C0D9\r
+:1067F0006CCE689464CE93DEC8F39923D1F3C6F3CC\r
+:10680000DF93CF931F930F93FF92C92FDD27882328\r
+:106810002AF02197660F771F881FDAF720E030E013\r
+:1068200040E85FEB9FE3883920F0803E30F021960E\r
+:106830008F77E3DCE4EDF0E003C0DFDCE1E0F1E0E2\r
+:1068400073DF8B01BE01EC01FB2E6F57710975954B\r
+:10685000771F880B990BD4DD28E132E741E35FE332\r
+:106860008FDEAF2D9801AE01FF900F911F91CF9158\r
+:10687000DF91D4DC3BCEFA01DC01AA0FBB1F9B01E8\r
+:10688000AC01BF5728F422273327442750781FC074\r
+:10689000B75188F4AB2F0024469537952795011CF6\r
+:1068A000A395D2F3002069F0220F331F441FB39544\r
+:1068B000DAF30DD0A1CC61307105A0E88A07B946A2\r
+:1068C00030F49B01AC0166277727882790783096B3\r
+:1068D00021F0208331834283538308959F3F31F019\r
+:1068E000915020F4879577956795B795880F911DFE\r
+:1068F0009695879597F90895991B79E004C0991F9B\r
+:10690000961708F0961B881F7A95C9F78095089509\r
+:10691000AA1BBB1B51E107C0AA1FBB1FA617B707C5\r
+:1069200010F0A61BB70B881F991F5A95A9F78095E1\r
+:106930009095BC01CD01089597FB072E16F40094A5\r
+:1069400007D077FD09D00E94883407FC05D03EF4BB\r
+:10695000909581959F4F0895709561957F4F08950B\r
+:10696000F999FECF92BD81BDF89A992780B5089517\r
+:10697000A8E1B0E042E050E00C94D334262FF9991E\r
+:10698000FECF1FBA92BD81BD20BD0FB6F894FA9A12\r
+:10699000F99A0FBE019608950E94BE34272F0C94D9\r
+:1069A000BF34DC01CB01FC01F999FECF06C0F2BD7A\r
+:1069B000E1BDF89A319600B40D9241505040B8F7BD\r
+:0669C0000895F894FFCFDA\r
+:1069C60055D0A446000016440000000000004842CE\r
+:1069D60061978A460000C843000000000000484254\r
+:1069E60055D024460000C84300000000000048427D\r
+:1069F60000005C460000C84300000000000048425A\r
+:106A060061978A4600007A4455D0A4460000C843E0\r
+:106A1600000000000000484200005C460000C84339\r
+:106A2600000000000000484255D0244600001644ED\r
+:106A36000507000C05854000000106400000010026\r
+:106A4600B91049112511F010BC1001E902280814EB\r
+:106A56000A321E4200450025002600430061006000\r
+:106A660000200037006400650066006700440046A9\r
+:106A7600002400470000000200040005000700098A\r
+:106A8600000B000C000E001000110013001500177B\r
+:106A96000018001A001C001D001F002100230024FE\r
+:106AA600002600280029002B002D002F0030003280\r
+:106AB6000034003500370039003B006E048704A01F\r
+:106AC60004B904E10594055E053E053F4D362002F6\r
+:106AD60003020000010001010101010001010102A0\r
+:086AE60003040506070809007E\r
+:00000001FF\r
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 ec51227ff124c4748ec8ea2e572ef182727a29fd..918b4307198e443a49648fbf65960157ad7648e5 100644 (file)
@@ -113,18 +113,19 @@ OPT_DEFS += -DBOOTLOADER_SIZE=512
 # Build Options
 #   comment out to disable the options.
 #
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes  # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes  # Audio control and System control(+450)
-CONSOLE_ENABLE = yes   # Console for debug(+400)
-COMMAND_ENABLE = yes    # Commands for debug and configuration
+BOOTMAGIC_ENABLE = yes         # Virtual DIP switch configuration(+1000)
+MOUSEKEY_ENABLE = yes          # Mouse keys(+4700)
+EXTRAKEY_ENABLE = yes          # Audio control and System control(+450)
+CONSOLE_ENABLE = yes           # Console for debug(+400)
+COMMAND_ENABLE = yes           # Commands for debug and configuration
+KEYBOARD_LOCK_ENABLE = yes     # Allow locking of keyboard via magic key
 # 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 - 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
-# UNICODE_ENABLE = YES                 # Unicode
-# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID
+# 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
+# UNICODE_ENABLE = YES         # Unicode
+# BLUETOOTH_ENABLE = yes       # Enable Bluetooth with the Adafruit EZ-Key HID
 
 
 # Optimize size but this may cause error "relocation truncated to fit"
index ba9a861edd4e5fd6536702337b1d0a43b51c6d6b..05fceb92b2bede788b7add3e675d1634a15721f4 100644 (file)
@@ -53,11 +53,54 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 /* Locking resynchronize hack */
 #define LOCKING_RESYNC_ENABLE
 
-/* key combination for command */
+
+/* Force NKRO Mode - If forced on, must be disabled via magic key (default = LShift+RShift+N) */
+#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.
+ */
+
+/* key combination for magic key command */
 #define IS_COMMAND() ( \
     keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
 )
 
+/* control how magic key switches layers */
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS  true
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS  true
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false
+
+/* remap magic keys */
+//#define MAGIC_KEY_HELP1          H
+//#define MAGIC_KEY_HELP2          SLASH
+//#define MAGIC_KEY_DEBUG          D
+//#define MAGIC_KEY_DEBUG_MATRIX   X
+//#define MAGIC_KEY_DEBUG_KBD      K
+//#define MAGIC_KEY_DEBUG_MOUSE    M
+//#define MAGIC_KEY_VERSION        V
+//#define MAGIC_KEY_STATUS         S
+//#define MAGIC_KEY_CONSOLE        C
+//#define MAGIC_KEY_LAYER0_ALT1    ESC
+//#define MAGIC_KEY_LAYER0_ALT2    GRAVE
+//#define MAGIC_KEY_LAYER0         0
+//#define MAGIC_KEY_LAYER1         1
+//#define MAGIC_KEY_LAYER2         2
+//#define MAGIC_KEY_LAYER3         3
+//#define MAGIC_KEY_LAYER4         4
+//#define MAGIC_KEY_LAYER5         5
+//#define MAGIC_KEY_LAYER6         6
+//#define MAGIC_KEY_LAYER7         7
+//#define MAGIC_KEY_LAYER8         8
+//#define MAGIC_KEY_LAYER9         9
+//#define MAGIC_KEY_BOOTLOADER     PAUSE
+#define MAGIC_KEY_LOCK             BSLS
+//#define MAGIC_KEY_EEPROM         E
+//#define MAGIC_KEY_NKRO           N
+//#define MAGIC_KEY_SLEEP_LED      Z
+
 /*
  * Feature disable options
  *  These options are also useful to firmware size reduction.
@@ -76,4 +119,4 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 //#define NO_ACTION_MACRO
 //#define NO_ACTION_FUNCTION
 
-#endif
+#endif
\ No newline at end of file
index 3a3a1a491062961a724d2de4ea10d641630098f8..f29d941d7cce0be321a060b38ae2278806a9223c 100644 (file)
@@ -247,6 +247,9 @@ ISR(TIMER3_COMPA_vect) {
             if (note_frequency > 0) {
                 ICR3 = (int)(((double)F_CPU) / note_frequency); // Set max to the period
                 OCR3A = (int)(((double)F_CPU) / note_frequency) >> 1; // Set compare to half the period
+            } else {
+                ICR3 = 0;
+                OCR3A = 0;
             }
         #endif
 
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 2efa691380fc4da5850152a753afef5121930808..4fa195468d1fe52a0e624825defd2faa0fb66cba 100644 (file)
@@ -113,18 +113,19 @@ OPT_DEFS += -DBOOTLOADER_SIZE=512
 # Build Options
 #   comment out to disable the options.
 #
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes  # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes  # Audio control and System control(+450)
-CONSOLE_ENABLE = yes   # Console for debug(+400)
-COMMAND_ENABLE = yes    # Commands for debug and configuration
+BOOTMAGIC_ENABLE = yes         # Virtual DIP switch configuration(+1000)
+MOUSEKEY_ENABLE = yes          # Mouse keys(+4700)
+EXTRAKEY_ENABLE = yes          # Audio control and System control(+450)
+CONSOLE_ENABLE = yes           # Console for debug(+400)
+COMMAND_ENABLE = yes           # Commands for debug and configuration
+KEYBOARD_LOCK_ENABLE = yes     # Allow locking of keyboard via magic key
 # 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 - 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
-# UNICODE_ENABLE = YES                 # Unicode
-# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID
+# 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
+# UNICODE_ENABLE = YES         # Unicode
+# BLUETOOTH_ENABLE = yes       # Enable Bluetooth with the Adafruit EZ-Key HID
 
 
 # Optimize size but this may cause error "relocation truncated to fit"
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 7d6149f436ecb97e8c4ec0189e41f4bac7518e89..e6fb7866c6ca1b0d56c69f69150f1979c7e062ff 100644 (file)
@@ -32,34 +32,110 @@ 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
 
-/* key combination for command */
+/* 
+ * 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
+ *
+ * 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 */
 #define IS_COMMAND() ( \
     keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
 )
 
+/* control how magic key switches layers */
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS  true
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS  true
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false
+
+/* override magic key keymap */
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM
+//#define MAGIC_KEY_HELP1          H
+//#define MAGIC_KEY_HELP2          SLASH
+//#define MAGIC_KEY_DEBUG          D
+//#define MAGIC_KEY_DEBUG_MATRIX   X
+//#define MAGIC_KEY_DEBUG_KBD      K
+//#define MAGIC_KEY_DEBUG_MOUSE    M
+//#define MAGIC_KEY_VERSION        V
+//#define MAGIC_KEY_STATUS         S
+//#define MAGIC_KEY_CONSOLE        C
+//#define MAGIC_KEY_LAYER0_ALT1    ESC
+//#define MAGIC_KEY_LAYER0_ALT2    GRAVE
+//#define MAGIC_KEY_LAYER0         0
+//#define MAGIC_KEY_LAYER1         1
+//#define MAGIC_KEY_LAYER2         2
+//#define MAGIC_KEY_LAYER3         3
+//#define MAGIC_KEY_LAYER4         4
+//#define MAGIC_KEY_LAYER5         5
+//#define MAGIC_KEY_LAYER6         6
+//#define MAGIC_KEY_LAYER7         7
+//#define MAGIC_KEY_LAYER8         8
+//#define MAGIC_KEY_LAYER9         9
+//#define MAGIC_KEY_BOOTLOADER     PAUSE
+//#define MAGIC_KEY_LOCK           CAPS
+//#define MAGIC_KEY_EEPROM         E
+//#define MAGIC_KEY_NKRO           N
+//#define MAGIC_KEY_SLEEP_LED      Z
+
 /*
  * Feature disable options
  *  These options are also useful to firmware size reduction.
index 58e73cb09f1de402dfade8ae34b07f974d006f72..cc52e496ffe8b1579be8d33d5443c4b6666dfd21 100644 (file)
@@ -10,6 +10,11 @@ void matrix_scan_user(void) {
        // leave this function blank - it can be defined in a keymap file
 }
 
+__attribute__ ((weak))
+void process_action_user(keyrecord_t *record) {
+       // leave this function blank - it can be defined in a keymap file
+}
+
 __attribute__ ((weak))
 void led_set_user(uint8_t usb_led) {
        // leave this function blank - it can be defined in a keymap file
@@ -18,19 +23,26 @@ void led_set_user(uint8_t usb_led) {
 void matrix_init_kb(void) {
        // put your keyboard start-up code here
        // runs once when the firmware starts up
-       
+
        matrix_init_user();
 }
 
 void matrix_scan_kb(void) {
-    // put your looping keyboard code here
-    // runs every cycle (a lot)
+       // put your looping keyboard code here
+       // runs every cycle (a lot)
 
        matrix_scan_user();
 }
 
+void process_action_kb(keyrecord_t *record) {
+       // put your per-action keyboard code here
+       // runs for every action, just before processing by the firmware
+
+       process_action_user(record);
+}
+
 void led_set_kb(uint8_t usb_led) {
        // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here
 
        led_set_user(usb_led);
-}
\ No newline at end of file
+}
index ba91abac3e64914f92e7a4fce0a5dd14ceb4a5ba..b1c34d3cbee294ee1d0364e6264529ade8921c1b 100644 (file)
 { \
     { k00, k01,   k02 }, \
     { k10, KC_NO, k11 }, \
-} 
+}
 
 void matrix_init_user(void);
 void matrix_scan_user(void);
+void process_action_user(keyrecord_t *record);
 void led_set_user(uint8_t usb_led);
 
-#endif
\ No newline at end of file
+#endif
index 77ea39e942c77b8fb9774184119ff838b278236d..f9e6c17dc3bd9c37044f322424107ca15ec65563 100644 (file)
@@ -53,6 +53,25 @@ void action_exec(keyevent_t event)
 #endif
 }
 
+#if !defined(NO_ACTION_LAYER) && defined(PREVENT_STUCK_MODIFIERS)
+bool disable_action_cache = false;
+
+void process_action_nocache(keyrecord_t *record)
+{
+    disable_action_cache = true;
+    process_action(record);
+    disable_action_cache = false;
+}
+#else
+void process_action_nocache(keyrecord_t *record)
+{
+    process_action(record);
+}
+#endif
+
+__attribute__ ((weak))
+void process_action_kb(keyrecord_t *record) {}
+
 void process_action(keyrecord_t *record)
 {
     keyevent_t event = record->event;
@@ -62,7 +81,9 @@ void process_action(keyrecord_t *record)
 
     if (IS_NOEVENT(event)) { return; }
 
-    action_t action = layer_switch_get_action(event.key);
+    process_action_kb(record);
+
+    action_t action = store_or_get_action(event.pressed, event.key);
     dprint("ACTION: "); debug_action(action);
 #ifndef NO_ACTION_LAYER
     dprint(" layer_state: "); layer_debug();
@@ -70,6 +91,10 @@ void process_action(keyrecord_t *record)
 #endif
     dprintln();
 
+    if (event.pressed) {
+        // clear the potential weak mods left by previously pressed keys
+        clear_weak_mods();
+    }
     switch (action.kind.id) {
         /* Key and Mods */
         case ACT_LMODS:
@@ -79,14 +104,24 @@ void process_action(keyrecord_t *record)
                                                                 action.key.mods<<4;
                 if (event.pressed) {
                     if (mods) {
-                        add_weak_mods(mods);
+                        if (IS_MOD(action.key.code)) {
+                            // e.g. LSFT(KC_LGUI): we don't want the LSFT to be weak as it would make it useless.
+                            // this also makes LSFT(KC_LGUI) behave exactly the same as LGUI(KC_LSFT)
+                            add_mods(mods);
+                        } else {
+                            add_weak_mods(mods);
+                        }
                         send_keyboard_report();
                     }
                     register_code(action.key.code);
                 } else {
                     unregister_code(action.key.code);
                     if (mods) {
-                        del_weak_mods(mods);
+                        if (IS_MOD(action.key.code)) {
+                            del_mods(mods);
+                        } else {
+                            del_weak_mods(mods);
+                        }
                         send_keyboard_report();
                     }
                 }
@@ -500,6 +535,7 @@ void clear_keyboard(void)
 void clear_keyboard_but_mods(void)
 {
     clear_weak_mods();
+    clear_macro_mods();
     clear_keys();
     send_keyboard_report();
 #ifdef MOUSEKEY_ENABLE
index 8a4736d7bc19cbb833481649b467cc4da109e1ac..44ec3047ba5a03a0fdb33c39edee4085c7b7e92c 100644 (file)
@@ -58,7 +58,14 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt);
 /* user defined special function */
 void action_function(keyrecord_t *record, uint8_t id, uint8_t opt);
 
+/* keyboard-specific key event (pre)processing */
+void process_action_kb(keyrecord_t *record);
+
 /* Utilities for actions.  */
+#if !defined(NO_ACTION_LAYER) && defined(PREVENT_STUCK_MODIFIERS)
+extern bool disable_action_cache;
+#endif
+void process_action_nocache(keyrecord_t *record);
 void process_action(keyrecord_t *record);
 void register_code(uint8_t code);
 void unregister_code(uint8_t code);
index c535615f44d44a8fa669e1f86825142b9c56b616..fc721a732300b2f4ecb74cbde069f41fa8c816e9 100644 (file)
@@ -110,9 +110,71 @@ void layer_debug(void)
 }
 #endif
 
+#if !defined(NO_ACTION_LAYER) && defined(PREVENT_STUCK_MODIFIERS)
+uint8_t source_layers_cache[MAX_LAYER_BITS][(MATRIX_ROWS * MATRIX_COLS + 7) / 8] = {0};
 
+void update_source_layers_cache(keypos_t key, uint8_t layer)
+{
+    const uint8_t key_number = key.col + (key.row * MATRIX_COLS);
+    const uint8_t storage_row = key_number / 8;
+    const uint8_t storage_bit = key_number % 8;
 
-action_t layer_switch_get_action(keypos_t key)
+    for (uint8_t bit_number = 0; bit_number < MAX_LAYER_BITS; bit_number++) {
+        source_layers_cache[bit_number][storage_row] ^=
+            (-((layer & (1U << bit_number)) != 0)
+             ^ source_layers_cache[bit_number][storage_row])
+            & (1U << storage_bit);
+    }
+}
+
+uint8_t read_source_layers_cache(keypos_t key)
+{
+    const uint8_t key_number = key.col + (key.row * MATRIX_COLS);
+    const uint8_t storage_row = key_number / 8;
+    const uint8_t storage_bit = key_number % 8;
+    uint8_t layer = 0;
+
+    for (uint8_t bit_number = 0; bit_number < MAX_LAYER_BITS; bit_number++) {
+        layer |=
+            ((source_layers_cache[bit_number][storage_row]
+              & (1U << storage_bit)) != 0)
+            << bit_number;
+    }
+
+    return layer;
+}
+#endif
+
+/*
+ * Make sure the action triggered when the key is released is the same
+ * one as the one triggered on press. It's important for the mod keys
+ * when the layer is switched after the down event but before the up
+ * event as they may get stuck otherwise.
+ */
+action_t store_or_get_action(bool pressed, keypos_t key)
+{
+#if !defined(NO_ACTION_LAYER) && defined(PREVENT_STUCK_MODIFIERS)
+    if (disable_action_cache) {
+        return layer_switch_get_action(key);
+    }
+
+    uint8_t layer;
+
+    if (pressed) {
+        layer = layer_switch_get_layer(key);
+        update_source_layers_cache(key, layer);
+    }
+    else {
+        layer = read_source_layers_cache(key);
+    }
+    return action_for_key(layer, key);
+#else
+    return layer_switch_get_action(key);
+#endif
+}
+
+
+int8_t layer_switch_get_layer(keypos_t key)
 {
     action_t action;
     action.code = ACTION_TRANSPARENT;
@@ -124,15 +186,18 @@ action_t layer_switch_get_action(keypos_t key)
         if (layers & (1UL<<i)) {
             action = action_for_key(i, key);
             if (action.code != ACTION_TRANSPARENT) {
-                return action;
+                return i;
             }
         }
     }
     /* fall back to layer 0 */
-    action = action_for_key(0, key);
-    return action;
+    return 0;
 #else
-    action = action_for_key(biton32(default_layer_state), key);
-    return action;
+    return biton32(default_layer_state);
 #endif
 }
+
+action_t layer_switch_get_action(keypos_t key)
+{
+    return action_for_key(layer_switch_get_layer(key), key);
+}
index b6da353cfdbe851d6bfb5689b6173135b8697d84..3a4b1e334930500d51280bdbf3cbb0a14632618a 100644 (file)
@@ -70,6 +70,17 @@ void layer_xor(uint32_t state);
 #define layer_debug()
 #endif
 
+/* pressed actions cache */
+#if !defined(NO_ACTION_LAYER) && defined(PREVENT_STUCK_MODIFIERS)
+/* The number of bits needed to represent the layer number: log2(32). */
+#define MAX_LAYER_BITS 5
+void update_source_layers_cache(keypos_t key, uint8_t layer);
+uint8_t read_source_layers_cache(keypos_t key);
+#endif
+action_t store_or_get_action(bool pressed, keypos_t key);
+
+/* return the topmost non-transparent layer currently associated with key */
+int8_t layer_switch_get_layer(keypos_t key);
 
 /* return action depending on current layer status */
 action_t layer_switch_get_action(keypos_t key);
index ffaf125c06ce8850c8e66135a71ef07c986513ba..7726b1190769a869d7e3a711e6b077fcfab91ebe 100644 (file)
@@ -41,7 +41,7 @@ void action_macro_play(const macro_t *macro_p)
                 MACRO_READ();
                 dprintf("KEY_DOWN(%02X)\n", macro);
                 if (IS_MOD(macro)) {
-                    add_weak_mods(MOD_BIT(macro));
+                    add_macro_mods(MOD_BIT(macro));
                     send_keyboard_report();
                 } else {
                     register_code(macro);
@@ -51,7 +51,7 @@ void action_macro_play(const macro_t *macro_p)
                 MACRO_READ();
                 dprintf("KEY_UP(%02X)\n", macro);
                 if (IS_MOD(macro)) {
-                    del_weak_mods(MOD_BIT(macro));
+                    del_macro_mods(MOD_BIT(macro));
                     send_keyboard_report();
                 } else {
                     unregister_code(macro);
index f81877dd9f489a34e5c6bb896b75d5c47681ebb6..a2d6577b24dae29d44de82032bdfeadc97bba00a 100644 (file)
@@ -29,6 +29,7 @@ static inline void del_key_bit(uint8_t code);
 
 static uint8_t real_mods = 0;
 static uint8_t weak_mods = 0;
+static uint8_t macro_mods = 0;
 
 #ifdef USB_6KRO_ENABLE
 #define RO_ADD(a, b) ((a + b) % KEYBOARD_REPORT_KEYS)
@@ -55,6 +56,7 @@ static int16_t oneshot_time = 0;
 void send_keyboard_report(void) {
     keyboard_report->mods  = real_mods;
     keyboard_report->mods |= weak_mods;
+    keyboard_report->mods |= macro_mods;
 #ifndef NO_ACTION_ONESHOT
     if (oneshot_mods) {
 #if (defined(ONESHOT_TIMEOUT) && (ONESHOT_TIMEOUT > 0))
@@ -118,6 +120,13 @@ void del_weak_mods(uint8_t mods) { weak_mods &= ~mods; }
 void set_weak_mods(uint8_t mods) { weak_mods = mods; }
 void clear_weak_mods(void) { weak_mods = 0; }
 
+/* macro modifier */
+uint8_t get_macro_mods(void) { return macro_mods; }
+void add_macro_mods(uint8_t mods) { macro_mods |= mods; }
+void del_macro_mods(uint8_t mods) { macro_mods &= ~mods; }
+void set_macro_mods(uint8_t mods) { macro_mods = mods; }
+void clear_macro_mods(void) { macro_mods = 0; }
+
 /* Oneshot modifier */
 #ifndef NO_ACTION_ONESHOT
 void set_oneshot_mods(uint8_t mods)
index a955638b46d8ad84c45c297b2a5f431f506aa85a..1a95cec10ec1ced084be192e7dd172602564e99e 100644 (file)
@@ -47,6 +47,13 @@ void del_weak_mods(uint8_t mods);
 void set_weak_mods(uint8_t mods);
 void clear_weak_mods(void);
 
+/* macro modifier */
+uint8_t get_macro_mods(void);
+void add_macro_mods(uint8_t mods);
+void del_macro_mods(uint8_t mods);
+void set_macro_mods(uint8_t mods);
+void clear_macro_mods(void);
+
 /* oneshot modifier */
 void set_oneshot_mods(uint8_t mods);
 void clear_oneshot_mods(void);
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 d59bb01bbcbd9151430fdf79444a84636a5cd9c9..b4cd3ca56b9dc87e6dd342dfbc7d4652b13ba80e 100644 (file)
@@ -52,6 +52,8 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 static bool command_common(uint8_t code);
 static void command_common_help(void);
+static void print_version(void);
+static void print_status(void);
 static bool command_console(uint8_t code);
 static void command_console_help(void);
 #ifdef MOUSEKEY_ENABLE
@@ -112,35 +114,140 @@ bool command_console_extra(uint8_t code)
  ***********************************************************/
 static void command_common_help(void)
 {
-    print("\n\t- Magic -\n"
-          "d:  debug\n"
-          "x:  debug matrix\n"
-          "k:  debug keyboard\n"
-          "m:  debug mouse\n"
-          "v:  version\n"
-          "s:  status\n"
-          "c:  console mode\n"
-          "0-4:        layer0-4(F10-F4)\n"
-          "Paus:       bootloader\n"
+       print(                            "\n\t- Magic -\n"
+               STR(MAGIC_KEY_DEBUG       ) ":  Debug Message Toggle\n"
+               STR(MAGIC_KEY_DEBUG_MATRIX) ":  Matrix Debug Mode Toggle - Show keypresses in matrix grid\n"
+               STR(MAGIC_KEY_DEBUG_KBD   ) ":  Keyboard Debug Toggle - Show keypress report\n"
+               STR(MAGIC_KEY_DEBUG_MOUSE ) ":  Debug Mouse Toggle\n"
+               STR(MAGIC_KEY_VERSION     ) ":  Version\n"
+               STR(MAGIC_KEY_STATUS      ) ":  Status\n"
+               STR(MAGIC_KEY_CONSOLE     ) ":  Activate Console Mode\n"
+               
+#if MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM
+               STR(MAGIC_KEY_LAYER0      ) ":  Switch to Layer 0\n"
+               STR(MAGIC_KEY_LAYER1      ) ":  Switch to Layer 1\n"
+               STR(MAGIC_KEY_LAYER2      ) ":  Switch to Layer 2\n"
+               STR(MAGIC_KEY_LAYER3      ) ":  Switch to Layer 3\n"
+               STR(MAGIC_KEY_LAYER4      ) ":  Switch to Layer 4\n"
+               STR(MAGIC_KEY_LAYER5      ) ":  Switch to Layer 5\n"
+               STR(MAGIC_KEY_LAYER6      ) ":  Switch to Layer 6\n"
+               STR(MAGIC_KEY_LAYER7      ) ":  Switch to Layer 7\n"
+               STR(MAGIC_KEY_LAYER8      ) ":  Switch to Layer 8\n"
+               STR(MAGIC_KEY_LAYER9      ) ":  Switch to Layer 9\n"
+#endif
+
+#if MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS                                                  
+                                           "F1-F10:    Switch to Layer 0-9 (F10 = L0)\n"
+#endif
+
+#if MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS                                                  
+                                           "0-9:       Switch to Layer 0-9\n"
+#endif
+
+               STR(MAGIC_KEY_LAYER0_ALT1 ) ":  Switch to Layer 0 (alternate key 1)\n"
+               STR(MAGIC_KEY_LAYER0_ALT2 ) ":  Switch to Layer 0 (alternate key 2)\n"
+               STR(MAGIC_KEY_BOOTLOADER  ) ":  Jump to Bootloader (Reset)\n"
 
 #ifdef KEYBOARD_LOCK_ENABLE
-          "Caps:       Lock\n"
+               STR(MAGIC_KEY_LOCK        ) ":  Lock\n"
 #endif
 
 #ifdef BOOTMAGIC_ENABLE
-          "e:  eeprom\n"
+               STR(MAGIC_KEY_EEPROM      ) ":  Print EEPROM Settings\n"
 #endif
 
 #ifdef NKRO_ENABLE
-          "n:  NKRO\n"
+               STR(MAGIC_KEY_NKRO        ) ":  NKRO Toggle\n"
 #endif
 
 #ifdef SLEEP_LED_ENABLE
-          "z:  sleep LED test\n"
+               STR(MAGIC_KEY_SLEEP_LED   ) ":  Sleep LED Test\n"
 #endif
     );
 }
 
+static void print_version(void)
+{
+       // print version & information
+    print("\n\t- Version -\n");
+    print("DESC: " STR(DESCRIPTION) "\n");
+    print("VID: " STR(VENDOR_ID) "(" STR(MANUFACTURER) ") "
+          "PID: " STR(PRODUCT_ID) "(" STR(PRODUCT) ") "
+          "VER: " STR(DEVICE_VER) "\n");
+    print("BUILD: " STR(VERSION) " (" __TIME__ " " __DATE__ ")\n");
+
+    /* build options */
+    print("OPTIONS:"
+
+#ifdef PROTOCOL_PJRC
+           " PJRC"
+#endif
+#ifdef PROTOCOL_LUFA
+           " LUFA"
+#endif
+#ifdef PROTOCOL_VUSB
+           " VUSB"
+#endif
+#ifdef BOOTMAGIC_ENABLE
+           " BOOTMAGIC"
+#endif
+#ifdef MOUSEKEY_ENABLE
+           " MOUSEKEY"
+#endif
+#ifdef EXTRAKEY_ENABLE
+           " EXTRAKEY"
+#endif
+#ifdef CONSOLE_ENABLE
+           " CONSOLE"
+#endif
+#ifdef COMMAND_ENABLE
+           " COMMAND"
+#endif
+#ifdef NKRO_ENABLE
+           " NKRO"
+#endif
+#ifdef KEYMAP_SECTION_ENABLE
+           " KEYMAP_SECTION"
+#endif
+
+           " " STR(BOOTLOADER_SIZE) "\n");
+
+    print("GCC: " STR(__GNUC__) "." STR(__GNUC_MINOR__) "." STR(__GNUC_PATCHLEVEL__)
+          " AVR-LIBC: " __AVR_LIBC_VERSION_STRING__
+          " AVR_ARCH: avr" STR(__AVR_ARCH__) "\n");
+
+       return;
+}
+
+static void print_status(void)
+{
+
+    print("\n\t- Status -\n");
+
+    print_val_hex8(host_keyboard_leds());
+    print_val_hex8(keyboard_protocol);
+    print_val_hex8(keyboard_idle);
+#ifdef NKRO_ENABLE
+    print_val_hex8(keyboard_nkro);
+#endif
+    print_val_hex32(timer_count);
+
+#ifdef PROTOCOL_PJRC
+    print_val_hex8(UDCON);
+    print_val_hex8(UDIEN);
+    print_val_hex8(UDINT);
+    print_val_hex8(usb_keyboard_leds);
+    print_val_hex8(usb_keyboard_idle_count);
+#endif
+
+#ifdef PROTOCOL_PJRC
+#   if USB_COUNT_SOF
+    print_val_hex8(usbSofCount);
+#   endif
+#endif
+       return;
+}
+
 #ifdef BOOTMAGIC_ENABLE
 static void print_eeconfig(void)
 {
@@ -178,24 +285,36 @@ static void print_eeconfig(void)
 
 static bool command_common(uint8_t code)
 {
+
+#ifdef KEYBOARD_LOCK_ENABLE
     static host_driver_t *host_driver = 0;
+#endif
+
     switch (code) {
+
 #ifdef SLEEP_LED_ENABLE
-        case KC_Z:
-            // test breathing sleep LED
-            print("Sleep LED test\n");
+
+               // test breathing sleep LED
+        case MAGIC_KC(MAGIC_KEY_SLEEP_LED):
+            print("Sleep LED Test\n");
             sleep_led_toggle();
             led_set(host_keyboard_leds());
             break;
 #endif
+
 #ifdef BOOTMAGIC_ENABLE
-        case KC_E:
+
+               // print stored eeprom config
+        case MAGIC_KC(MAGIC_KEY_EEPROM):        
             print("eeconfig:\n");
             print_eeconfig();
             break;
 #endif
+
 #ifdef KEYBOARD_LOCK_ENABLE
-        case KC_CAPSLOCK:
+
+               // lock/unlock keyboard
+        case MAGIC_KC(MAGIC_KEY_LOCK):
             if (host_get_driver()) {
                 host_driver = host_get_driver();
                 clear_keyboard();
@@ -207,11 +326,15 @@ static bool command_common(uint8_t code)
             }
             break;
 #endif
-        case KC_H:
-        case KC_SLASH: /* ? */
+
+               // print help
+        case MAGIC_KC(MAGIC_KEY_HELP1):
+        case MAGIC_KC(MAGIC_KEY_HELP2):
             command_common_help();
             break;
-        case KC_C:
+
+               // activate console
+        case MAGIC_KC(MAGIC_KEY_CONSOLE):
             debug_matrix   = false;
             debug_keyboard = false;
             debug_mouse    = false;
@@ -220,25 +343,33 @@ static bool command_common(uint8_t code)
             print("C> ");
             command_state = CONSOLE;
             break;
-        case KC_PAUSE:
-            clear_keyboard();
-            print("\n\nbootloader... ");
+
+        // jump to bootloader
+        case MAGIC_KC(MAGIC_KEY_BOOTLOADER):
+            clear_keyboard(); // clear to prevent stuck keys
+            print("\n\nJumping to bootloader... ");
             _delay_ms(1000);
             bootloader_jump(); // not return
             break;
-        case KC_D:
+
+        // debug toggle
+        case MAGIC_KC(MAGIC_KEY_DEBUG):
+            debug_enable = !debug_enable;
             if (debug_enable) {
+                print("\ndebug: on\n");
+                debug_matrix   = true;
+                debug_keyboard = true;
+                debug_mouse    = true;
+            } else {
                 print("\ndebug: off\n");
                 debug_matrix   = false;
                 debug_keyboard = false;
                 debug_mouse    = false;
-                debug_enable   = false;
-            } else {
-                print("\ndebug: on\n");
-                debug_enable   = true;
             }
             break;
-        case KC_X: // debug matrix toggle
+
+        // debug matrix toggle
+        case MAGIC_KC(MAGIC_KEY_DEBUG_MATRIX): 
             debug_matrix = !debug_matrix;
             if (debug_matrix) {
                 print("\nmatrix: on\n");
@@ -247,7 +378,9 @@ static bool command_common(uint8_t code)
                 print("\nmatrix: off\n");
             }
             break;
-        case KC_K: // debug keyboard toggle
+
+        // debug keyboard toggle
+        case MAGIC_KC(MAGIC_KEY_DEBUG_KBD): 
             debug_keyboard = !debug_keyboard;
             if (debug_keyboard) {
                 print("\nkeyboard: on\n");
@@ -256,87 +389,33 @@ static bool command_common(uint8_t code)
                 print("\nkeyboard: off\n");
             }
             break;
-        case KC_M: // debug mouse toggle
+
+        // debug mouse toggle
+        case MAGIC_KC(MAGIC_KEY_DEBUG_MOUSE):
             debug_mouse = !debug_mouse;
             if (debug_mouse) {
                 print("\nmouse: on\n");
                 debug_enable = true;
             } else {
-                print("\nmouse: off\n");
+                               print("\nmouse: off\n");
             }
             break;
-        case KC_V: // print version & information
-            print("\n\t- Version -\n");
-            print("DESC: " STR(DESCRIPTION) "\n");
-            print("VID: " STR(VENDOR_ID) "(" STR(MANUFACTURER) ") "
-                  "PID: " STR(PRODUCT_ID) "(" STR(PRODUCT) ") "
-                  "VER: " STR(DEVICE_VER) "\n");
-            print("BUILD: " STR(VERSION) " (" __TIME__ " " __DATE__ ")\n");
-            /* build options */
-            print("OPTIONS:"
-#ifdef PROTOCOL_PJRC
-            " PJRC"
-#endif
-#ifdef PROTOCOL_LUFA
-            " LUFA"
-#endif
-#ifdef PROTOCOL_VUSB
-            " VUSB"
-#endif
-#ifdef BOOTMAGIC_ENABLE
-            " BOOTMAGIC"
-#endif
-#ifdef MOUSEKEY_ENABLE
-            " MOUSEKEY"
-#endif
-#ifdef EXTRAKEY_ENABLE
-            " EXTRAKEY"
-#endif
-#ifdef CONSOLE_ENABLE
-            " CONSOLE"
-#endif
-#ifdef COMMAND_ENABLE
-            " COMMAND"
-#endif
-#ifdef NKRO_ENABLE
-            " NKRO"
-#endif
-#ifdef KEYMAP_SECTION_ENABLE
-            " KEYMAP_SECTION"
-#endif
-            " " STR(BOOTLOADER_SIZE) "\n");
 
-            print("GCC: " STR(__GNUC__) "." STR(__GNUC_MINOR__) "." STR(__GNUC_PATCHLEVEL__)
-                  " AVR-LIBC: " __AVR_LIBC_VERSION_STRING__
-                  " AVR_ARCH: avr" STR(__AVR_ARCH__) "\n");
-            break;
-        case KC_S:
-            print("\n\t- Status -\n");
-            print_val_hex8(host_keyboard_leds());
-            print_val_hex8(keyboard_protocol);
-            print_val_hex8(keyboard_idle);
-#ifdef NKRO_ENABLE
-            print_val_hex8(keyboard_nkro);
-#endif
-            print_val_hex32(timer_count);
-
-#ifdef PROTOCOL_PJRC
-            print_val_hex8(UDCON);
-            print_val_hex8(UDIEN);
-            print_val_hex8(UDINT);
-            print_val_hex8(usb_keyboard_leds);
-            print_val_hex8(usb_keyboard_idle_count);
-#endif
+               // print version
+        case MAGIC_KC(MAGIC_KEY_VERSION):
+               print_version();
+                   break;
 
-#ifdef PROTOCOL_PJRC
-#   if USB_COUNT_SOF
-            print_val_hex8(usbSofCount);
-#   endif
-#endif
+               // print status
+               case MAGIC_KC(MAGIC_KEY_STATUS):
+                       print_status();
             break;
+
 #ifdef NKRO_ENABLE
-        case KC_N:
-            clear_keyboard(); //Prevents stuck keys.
+
+               // NKRO toggle
+        case MAGIC_KC(MAGIC_KEY_NKRO):
+            clear_keyboard(); // clear to prevent stuck keys
             keyboard_nkro = !keyboard_nkro;
             if (keyboard_nkro)
                 print("NKRO: on\n");
@@ -344,18 +423,78 @@ static bool command_common(uint8_t code)
                 print("NKRO: off\n");
             break;
 #endif
-        case KC_ESC:
-        case KC_GRV:
-        case KC_0:
+
+               // switch layers
+
+               case MAGIC_KC(MAGIC_KEY_LAYER0_ALT1):
+               case MAGIC_KC(MAGIC_KEY_LAYER0_ALT2):
+            switch_default_layer(0);
+            break;
+
+#if MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM
+
+               case MAGIC_KC(MAGIC_KEY_LAYER0):
+            switch_default_layer(0);
+            break;
+
+               case MAGIC_KC(MAGIC_KEY_LAYER1):
+            switch_default_layer(1);
+            break;
+
+               case MAGIC_KC(MAGIC_KEY_LAYER2):
+            switch_default_layer(2);
+            break;
+
+               case MAGIC_KC(MAGIC_KEY_LAYER3):
+            switch_default_layer(3);
+            break;
+
+               case MAGIC_KC(MAGIC_KEY_LAYER4):
+            switch_default_layer(4);
+            break;
+
+               case MAGIC_KC(MAGIC_KEY_LAYER5):
+            switch_default_layer(5);
+            break;
+
+               case MAGIC_KC(MAGIC_KEY_LAYER6):
+            switch_default_layer(6);
+            break;
+
+               case MAGIC_KC(MAGIC_KEY_LAYER7):
+            switch_default_layer(7);
+            break;
+
+               case MAGIC_KC(MAGIC_KEY_LAYER8):
+            switch_default_layer(8);
+            break;
+
+               case MAGIC_KC(MAGIC_KEY_LAYER9):
+            switch_default_layer(9);
+            break;
+#endif
+
+
+#if MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS
+
+        case KC_F1 ... KC_F9:
+            switch_default_layer((code - KC_F1) + 1);
+            break;
         case KC_F10:
             switch_default_layer(0);
             break;
+#endif
+
+#if MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS
+
         case KC_1 ... KC_9:
             switch_default_layer((code - KC_1) + 1);
             break;
-        case KC_F1 ... KC_F9:
-            switch_default_layer((code - KC_F1) + 1);
+        case KC_0:
+            switch_default_layer(0);
             break;
+#endif
+
         default:
             print("?");
             return false;
index b57a6c1cedc504ae77862f5d1f12a9914ee8be22..92b18849bf31dcaeac1918084c0cb93503af8259 100644 (file)
@@ -32,4 +32,125 @@ bool command_proc(uint8_t code);
 #define command_proc(code)      false
 #endif
 
+
+#ifndef MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS
+#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS  true
+#endif
+
+#ifndef MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS
+#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS  true
+#endif
+
+#ifndef MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM
+#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false
+#endif
+
+#ifndef MAGIC_KEY_HELP1
+#define MAGIC_KEY_HELP1          H
+#endif
+
+#ifndef MAGIC_KEY_HELP2
+#define MAGIC_KEY_HELP2          SLASH
+#endif
+
+#ifndef MAGIC_KEY_DEBUG
+#define MAGIC_KEY_DEBUG          D
+#endif
+
+#ifndef MAGIC_KEY_DEBUG_MATRIX
+#define MAGIC_KEY_DEBUG_MATRIX   X
+#endif
+
+#ifndef MAGIC_KEY_DEBUG_KBD
+#define MAGIC_KEY_DEBUG_KBD      K
+#endif
+
+#ifndef MAGIC_KEY_DEBUG_MOUSE
+#define MAGIC_KEY_DEBUG_MOUSE    M
+#endif
+
+#ifndef MAGIC_KEY_VERSION
+#define MAGIC_KEY_VERSION        V
+#endif
+
+#ifndef MAGIC_KEY_STATUS
+#define MAGIC_KEY_STATUS         S
+#endif
+
+#ifndef MAGIC_KEY_CONSOLE
+#define MAGIC_KEY_CONSOLE        C
+#endif
+
+#ifndef MAGIC_KEY_LAYER0_ALT1
+#define MAGIC_KEY_LAYER0_ALT1    ESC
+#endif
+
+#ifndef MAGIC_KEY_LAYER0_ALT2
+#define MAGIC_KEY_LAYER0_ALT2    GRAVE
+#endif
+
+#ifndef MAGIC_KEY_LAYER0
+#define MAGIC_KEY_LAYER0         0
+#endif
+
+#ifndef MAGIC_KEY_LAYER1
+#define MAGIC_KEY_LAYER1         1
+#endif
+
+#ifndef MAGIC_KEY_LAYER2
+#define MAGIC_KEY_LAYER2         2
+#endif
+
+#ifndef MAGIC_KEY_LAYER3
+#define MAGIC_KEY_LAYER3         3
+#endif
+
+#ifndef MAGIC_KEY_LAYER4
+#define MAGIC_KEY_LAYER4         4
+#endif
+
+#ifndef MAGIC_KEY_LAYER5
+#define MAGIC_KEY_LAYER5         5
+#endif
+
+#ifndef MAGIC_KEY_LAYER6
+#define MAGIC_KEY_LAYER6         6
+#endif
+
+#ifndef MAGIC_KEY_LAYER7
+#define MAGIC_KEY_LAYER7         7
+#endif
+
+#ifndef MAGIC_KEY_LAYER8
+#define MAGIC_KEY_LAYER8         8
 #endif
+
+#ifndef MAGIC_KEY_LAYER9
+#define MAGIC_KEY_LAYER9         9
+#endif
+
+#ifndef MAGIC_KEY_BOOTLOADER
+#define MAGIC_KEY_BOOTLOADER     PAUSE
+#endif
+
+#ifndef MAGIC_KEY_LOCK
+#define MAGIC_KEY_LOCK           CAPS
+#endif
+
+#ifndef MAGIC_KEY_EEPROM
+#define MAGIC_KEY_EEPROM         E
+#endif
+
+#ifndef MAGIC_KEY_NKRO
+#define MAGIC_KEY_NKRO           N
+#endif
+
+#ifndef MAGIC_KEY_SLEEP_LED
+#define MAGIC_KEY_SLEEP_LED      Z
+
+#endif
+
+#define XMAGIC_KC(key) KC_##key
+#define MAGIC_KC(key) XMAGIC_KC(key)
+
+#endif
\ No newline at end of file
index eb7b096bed501e32b65702c98f9da27c3e912791..302b3ec87c918a49ec62759ede5ed8b3e5d44b9a 100644 (file)
@@ -70,6 +70,7 @@ void keyboard_setup(void)
 
 void keyboard_init(void)
 {
+
     timer_init();
     matrix_init();
 #ifdef PS2_MOUSE_ENABLE
@@ -90,6 +91,11 @@ void keyboard_init(void)
 #ifdef BACKLIGHT_ENABLE
     backlight_init();
 #endif
+
+#if defined(NKRO_ENABLE) && defined(FORCE_NKRO)
+       keyboard_nkro = true;
+#endif
+
 }
 
 /*