From 649b33d7783cf3021928534b7ae127e0a89e8807 Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Tue, 21 Jun 2016 22:39:54 -0400 Subject: Renames keyboard folder to keyboards, adds couple of tmk's fixes (#432) * fixes from tmk's repo * rename keyboard to keyboards --- keyboards/hhkb/Makefile | 86 ++ keyboards/hhkb/README.md | 180 ++++ keyboards/hhkb/config.h | 71 ++ keyboards/hhkb/hhkb.c | 29 + keyboards/hhkb/hhkb.h | 30 + keyboards/hhkb/hhkb_avr.h | 167 ++++ keyboards/hhkb/keymaps/default/compiled.hex | 1381 ++++++++++++++++++++++++++ keyboards/hhkb/keymaps/default/keymap.c | 78 ++ keyboards/hhkb/keymaps/lxol/compiled.hex | 1421 +++++++++++++++++++++++++++ keyboards/hhkb/keymaps/lxol/keymap.c | 208 ++++ keyboards/hhkb/matrix.c | 204 ++++ 11 files changed, 3855 insertions(+) create mode 100644 keyboards/hhkb/Makefile create mode 100644 keyboards/hhkb/README.md create mode 100644 keyboards/hhkb/config.h create mode 100644 keyboards/hhkb/hhkb.c create mode 100644 keyboards/hhkb/hhkb.h create mode 100644 keyboards/hhkb/hhkb_avr.h create mode 100644 keyboards/hhkb/keymaps/default/compiled.hex create mode 100644 keyboards/hhkb/keymaps/default/keymap.c create mode 100644 keyboards/hhkb/keymaps/lxol/compiled.hex create mode 100644 keyboards/hhkb/keymaps/lxol/keymap.c create mode 100644 keyboards/hhkb/matrix.c (limited to 'keyboards/hhkb') diff --git a/keyboards/hhkb/Makefile b/keyboards/hhkb/Makefile new file mode 100644 index 000000000..53eece396 --- /dev/null +++ b/keyboards/hhkb/Makefile @@ -0,0 +1,86 @@ + + +# project specific files +SRC = matrix.c + +# MCU name +#MCU = at90usb1287 +MCU = atmega32u4 + +# Processor frequency. +# This will define a symbol, F_CPU, in all source code files equal to the +# processor frequency in Hz. You can then use this symbol in your source code to +# calculate timings. Do NOT tack on a 'UL' at the end, this will be done +# automatically to create a 32-bit value in your source code. +# +# This will be an integer division of F_USB below, as it is sourced by +# F_USB after it has run through any CPU prescalers. Note that this value +# does not *change* the processor frequency - it should merely be updated to +# reflect the processor speed set externally so that the code can use accurate +# software delays. +F_CPU = 16000000 + + +# +# LUFA specific +# +# Target architecture (see library "Board Types" documentation). +ARCH = AVR8 + +# Input clock frequency. +# This will define a symbol, F_USB, in all source code files equal to the +# input clock frequency (before any prescaling is performed) in Hz. This value may +# differ from F_CPU if prescaling is used on the latter, and is required as the +# raw input clock is fed directly to the PLL sections of the AVR for high speed +# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' +# at the end, this will be done automatically to create a 32-bit value in your +# source code. +# +# If no clock division is performed on the input clock inside the AVR (via the +# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. +F_USB = $(F_CPU) + +# Interrupt driven control endpoint task(+60) +OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT + + +# Boot Section Size in *bytes* +# Teensy halfKay 512 +# Teensy++ halfKay 1024 +# Atmel DFU loader 4096 +# LUFA bootloader 4096 +# USBaspLoader 2048 +#OPT_DEFS += -DBOOTLOADER_SIZE=4096 + +# as per original hasu settings +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 +CUSTOM_MATRIX ?= yes # Custom matrix file for the HHKB +# 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 + + + +ifndef QUANTUM_DIR + include ../../Makefile +endif + +debug-on: EXTRAFLAGS += -DDEBUG -DDEBUG_ACTION +debug-on: all + +debug-off: EXTRAFLAGS += -DNO_DEBUG -DNO_PRINT +debug-off: OPT_DEFS := $(filter-out -DCONSOLE_ENABLE,$(OPT_DEFS)) +debug-off: all diff --git a/keyboards/hhkb/README.md b/keyboards/hhkb/README.md new file mode 100644 index 000000000..2bfec7aa5 --- /dev/null +++ b/keyboards/hhkb/README.md @@ -0,0 +1,180 @@ +hhkb_qmk keyboard firmware +====================== + +## Quantum MK Firmware + +You have access to a bunch of goodies! Check out the Makefile to enable/disable some of the features. Uncomment the `#` to enable them. Setting them to `no` does nothing and will only confuse future you. + + BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality + MIDI_ENABLE = yes # MIDI controls + # UNICODE_ENABLE = yes # Unicode support - this is commented out, just as an example. You have to use #, not // + BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID + +## Quick aliases to common actions + +Your keymap can include shortcuts to common operations (called "function actions" in tmk). + +### Switching and toggling layers + +`MO(layer)` - momentary switch to *layer*. As soon as you let go of the key, the layer is deactivated and you pop back out to the previous layer. When you apply this to a key, that same key must be set as `KC_TRNS` on the destination layer. Otherwise, you won't make it back to the original layer when you release the key (and you'll get a keycode sent). You can only switch to layers *above* your current layer. If you're on layer 0 and you use `MO(1)`, that will switch to layer 1 just fine. But if you include `MO(3)` on layer 5, that won't do anything for you -- because layer 3 is lower than layer 5 on the stack. + +`LT(layer, kc)` - momentary switch to *layer* when held, and *kc* when tapped. Like `MO()`, this only works upwards in the layer stack (`layer` must be higher than the current layer). + +`TG(layer)` - toggles a layer on or off. As with `MO()`, you should set this key as `KC_TRNS` in the destination layer so that tapping it again actually toggles back to the original layer. Only works upwards in the layer stack. + +### Fun with modifier keys + +* `LSFT(kc)` - applies left Shift to *kc* (keycode) - `S(kc)` is an alias +* `RSFT(kc)` - applies right Shift to *kc* +* `LCTL(kc)` - applies left Control to *kc* +* `RCTL(kc)` - applies right Control to *kc* +* `LALT(kc)` - applies left Alt to *kc* +* `RALT(kc)` - applies right Alt to *kc* +* `LGUI(kc)` - applies left GUI (command/win) to *kc* +* `RGUI(kc)` - applies right GUI (command/win) to *kc* + +You can also chain these, like this: + + LALT(LCTL(KC_DEL)) -- this makes a key that sends Alt, Control, and Delete in a single keypress. + +The following shortcuts automatically add `LSFT()` to keycodes to get commonly used symbols. Their long names are also available and documented in `/quantum/keymap_common.h`. + + KC_TILD ~ + KC_EXLM ! + KC_AT @ + KC_HASH # + KC_DLR $ + KC_PERC % + KC_CIRC ^ + KC_AMPR & + KC_ASTR * + KC_LPRN ( + KC_RPRN ) + KC_UNDS _ + KC_PLUS + + KC_LCBR { + KC_RCBR } + KC_PIPE | + KC_COLN : + +`MT(mod, kc)` - is *mod* (modifier key - MOD_LCTL, MOD_LSFT) when held, and *kc* when tapped. In other words, you can have a key that sends Esc (or the letter O or whatever) when you tap it, but works as a Control key or a Shift key when you hold it down. + +These are the values you can use for the `mod` in `MT()` (right-hand modifiers are not available): + + * MOD_LCTL + * MOD_LSFT + * MOD_LALT + * MOD_LGUI + +These can also be combined like `MOD_LCTL | MOD_LSFT` e.g. `MT(MOD_LCTL | MOD_LSFT, KC_ESC)` which would activate Control and Shift when held, and send Escape when tapped. + +We've added shortcuts to make common modifier/tap (mod-tap) mappings more compact: + + * `CTL_T(kc)` - is LCTL when held and *kc* when tapped + * `SFT_T(kc)` - is LSFT when held and *kc* when tapped + * `ALT_T(kc)` - is LALT when held and *kc* when tapped + * `GUI_T(kc)` - is LGUI when held and *kc* when tapped + * `ALL_T(kc)` - is Hyper (all mods) when held and *kc* when tapped. To read more about what you can do with a Hyper key, see [this blog post by Brett Terpstra](http://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/) + +### Temporarily setting the default layer + +`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. + +### 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). + +Instead of using `FNx` when defining `ACTION_*` functions, you can use `F(x)` - the benefit here is being able to use more than 32 function actions (up to 4096), if you happen to need them. + +## Macro shortcuts: Send a whole string when pressing just one key + +Instead of using the `ACTION_MACRO` function, you can simply use `M(n)` to access macro *n* - *n* will get passed into the `action_get_macro` as the `id`, and you can use a switch statement to trigger it. This gets called on the keydown and keyup, so you'll need to use an if statement testing `record->event.pressed` (see keymap_default.c). + +```c +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) // this is the function signature -- just copy/paste it into your keymap file as it is. +{ + switch(id) { + case 0: // this would trigger when you hit a key mapped as M(0) + if (record->event.pressed) { + return MACRO( I(255), T(H), T(E), T(L), T(L), W(255), T(O), END ); // this sends the string 'hello' when the macro executes + } + break; + } + return MACRO_NONE; +}; +``` +A macro can include the following commands: + +* I() change interval of stroke in milliseconds. +* D() press key. +* U() release key. +* T() type key(press and release). +* W() wait (milliseconds). +* END end mark. + +So above you can see the stroke interval changed to 255ms between each keystroke, then a bunch of keys being typed, waits a while, then the macro ends. + +Note: Using macros to have your keyboard send passwords for you is a bad idea. + +### Additional keycode aliases for software-implemented layouts (Colemak, Dvorak, etc) + +Everything is assuming you're in Qwerty (in software) by default, but there is built-in support for using a Colemak or Dvorak layout by including this at the top of your keymap: + + #include "keymap_.h" + +Where is "colemak" or "dvorak". After including this line, you will get access to: + + * `CM_*` for all of the Colemak-equivalent characters + * `DV_*` for all of the Dvorak-equivalent characters + +These implementations assume you're using Colemak or Dvorak on your OS, not on your keyboard - this is referred to as a software-implemented layout. If your computer is in Qwerty and your keymap is in Colemak or Dvorak, this is referred to as a firmware-implemented layout, and you won't need these features. + +To give an example, if you're using software-implemented Colemak, and want to get an `F`, you would use `CM_F` - `KC_F` under these same circumstances would result in `T`. + +## Additional language support + +In `quantum/keymap_extras/`, you'll see various language files - these work the same way as the alternative layout ones do. Most are defined by their two letter country/language code followed by an underscore and a 4-letter abbreviation of its name. `FR_UGRV` which will result in a `ù` when using a software-implemented AZERTY layout. It's currently difficult to send such characters in just the firmware (but it's being worked on - see Unicode support). + +## Unicode support + +You can currently send 4 hex digits with your OS-specific modifier key (RALT for OSX with the "Unicode Hex Input" layout) - this is currently limited to supporting one OS at a time, and requires a recompile for switching. 8 digit hex codes are being worked on. The keycode function is `UC(n)`, where *n* is a 4 digit hexidecimal. Enable from the Makefile. + +## Other firmware shortcut keycodes + +* `RESET` - puts the MCU in DFU mode for flashing new firmware (with `make dfu`) +* `DEBUG` - the firmware into debug mode - you'll need hid_listen to see things +* `BL_ON` - turns the backlight on +* `BL_OFF` - turns the backlight off +* `BL_` - sets the backlight to level *n* +* `BL_INC` - increments the backlight level by one +* `BL_DEC` - decrements the backlight level by one +* `BL_TOGG` - toggles the backlight +* `BL_STEP` - steps through the backlight levels + +Enable the backlight from the Makefile. + +## MIDI functionalty + +This is still a WIP, but check out `quantum/keymap_midi.c` to see what's happening. Enable from the Makefile. + +## Bluetooth functionality + +This requires [some hardware changes](https://www.reddit.com/r/MechanicalKeyboards/comments/3psx0q/the_planck_keyboard_with_bluetooth_guide_and/?ref=search_posts), but can be enabled via the Makefile. The firmware will still output characters via USB, so be aware of this when charging via a computer. It would make sense to have a switch on the Bluefruit to turn it off at will. + +## Building + +Download or clone the whole firmware and navigate to the keyboards/planck 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 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 a file in the keymaps folder named `.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|] +``` +Keymaps follow the format **__\.c__** and are stored in the `keymaps` folder. diff --git a/keyboards/hhkb/config.h b/keyboards/hhkb/config.h new file mode 100644 index 000000000..ee66e4457 --- /dev/null +++ b/keyboards/hhkb/config.h @@ -0,0 +1,71 @@ +/* +Copyright 2012 Jun Wako + +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 . +*/ + +#ifndef CONFIG_H +#define CONFIG_H + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0xCAFE +#define DEVICE_VER 0x0104 +#define MANUFACTURER q.m.k +#define PRODUCT HHKB mod +#define DESCRIPTION q.m.k keyboard firmware for HHKB + +/* key matrix size */ +#define MATRIX_ROWS 8 +#define MATRIX_COLS 8 + +#define TAPPING_TERM 200 + +/* 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 */ +#define IS_COMMAND() ( \ + keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ +) + +/* + * Feature disable options + * These options are also useful to firmware size reduction. +*/ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT +//#define NO_ACTION_MACRO +//#define NO_ACTION_FUNCTION + +#endif diff --git a/keyboards/hhkb/hhkb.c b/keyboards/hhkb/hhkb.c new file mode 100644 index 000000000..6897026c6 --- /dev/null +++ b/keyboards/hhkb/hhkb.c @@ -0,0 +1,29 @@ +#include "hhkb.h" + +__attribute__ ((weak)) +void matrix_init_user(void) { + // leave these blank +}; + +__attribute__ ((weak)) +void matrix_scan_user(void) { + // leave these blank +}; + +void matrix_init_kb(void) { + // put your keyboard start-up code here + // runs once when the firmware starts up + + if (matrix_init_user) { + (*matrix_init_user)(); + } +}; + +void matrix_scan_kb(void) { + // put your looping keyboard code here + // runs every cycle (a lot) + + if (matrix_scan_user) { + (*matrix_scan_user)(); + } +}; diff --git a/keyboards/hhkb/hhkb.h b/keyboards/hhkb/hhkb.h new file mode 100644 index 000000000..093d7aeab --- /dev/null +++ b/keyboards/hhkb/hhkb.h @@ -0,0 +1,30 @@ +#ifndef HHKB_H +#define HHKB_H + +#include "matrix.h" +#include "keymap.h" +//#include "backlight.h" +#include + +#define KEYMAP( \ + K31, K30, K00, K10, K11, K20, K21, K40, K41, K60, K61, K70, K71, K50, K51, \ + K32, K01, K02, K13, K12, K23, K22, K42, K43, K62, K63, K73, K72, K52, \ + K33, K04, K03, K14, K15, K24, K25, K45, K44, K65, K64, K74, K53, \ + K34, K05, K06, K07, K16, K17, K26, K46, K66, K76, K75, K55, K54, \ + K35, K36, K37, K57, K56) \ + \ +{ \ + { K00, K01, K02, K03, K04, K05, K06, K07 }, \ + { K10, K11, K12, K13, K14, K15, K16, K17 }, \ + { K20, K21, K22, K23, K24, K25, K26, KC_NO }, \ + { K30, K31, K32, K33, K34, K35, K36, K37 }, \ + { K40, K41, K42, K43, K44, K45, K46, KC_NO }, \ + { K50, K51, K52, K53, K54, K55, K56, K57 }, \ + { K60, K61, K62, K63, K64, K65, K66, KC_NO }, \ + { K70, K71, K72, K73, K74, K75, K76, KC_NO } \ +} + +void matrix_init_user(void); +void matrix_scan_user(void); + +#endif diff --git a/keyboards/hhkb/hhkb_avr.h b/keyboards/hhkb/hhkb_avr.h new file mode 100644 index 000000000..7ea6322c7 --- /dev/null +++ b/keyboards/hhkb/hhkb_avr.h @@ -0,0 +1,167 @@ +#ifndef HHKB_AVR_H +#define HHKB_AVR_H + +#include +#include +#include +#include +#include + + +// Timer resolution check +#if (1000000/TIMER_RAW_FREQ > 20) +# error "Timer resolution(>20us) is not enough for HHKB matrix scan tweak on V-USB." +#endif + + +/* + * HHKB Matrix I/O + * + * row: HC4051[A,B,C] selects scan row0-7 + * row-ext: [En0,En1] row extention for JP + * col: LS145[A,B,C,D] selects scan col0-7 and enable(D) + * key: on: 0/off: 1 + * prev: hysteresis control: assert(1) when previous key state is on + */ + + +#if defined(__AVR_ATmega32U4__) +/* + * For TMK HHKB alt controller(ATMega32U4) + * + * row: PB0-2 + * col: PB3-5,6 + * key: PD7(pull-uped) + * prev: PB7 + * power: PD4(L:off/H:on) + * row-ext: PC6,7 for HHKB JP(active low) + */ +static inline void KEY_ENABLE(void) { (PORTB &= ~(1<<6)); } +static inline void KEY_UNABLE(void) { (PORTB |= (1<<6)); } +static inline bool KEY_STATE(void) { return (PIND & (1<<7)); } +static inline void KEY_PREV_ON(void) { (PORTB |= (1<<7)); } +static inline void KEY_PREV_OFF(void) { (PORTB &= ~(1<<7)); } +#ifdef HHKB_POWER_SAVING +static inline void KEY_POWER_ON(void) { + DDRB = 0xFF; PORTB = 0x40; // change pins output + DDRD |= (1<<4); PORTD |= (1<<4); // MOS FET switch on + /* Without this wait you will miss or get false key events. */ + _delay_ms(5); // wait for powering up +} +static inline void KEY_POWER_OFF(void) { + /* input with pull-up consumes less than without it when pin is open. */ + DDRB = 0x00; PORTB = 0xFF; // change pins input with pull-up + DDRD |= (1<<4); PORTD &= ~(1<<4); // MOS FET switch off +} +static inline bool KEY_POWER_STATE(void) { return PORTD & (1<<4); } +#else +static inline void KEY_POWER_ON(void) {} +static inline void KEY_POWER_OFF(void) {} +static inline bool KEY_POWER_STATE(void) { return true; } +#endif +static inline void KEY_INIT(void) +{ + /* row,col,prev: output */ + DDRB = 0xFF; + PORTB = 0x40; // unable + /* key: input with pull-up */ + DDRD &= ~0x80; + PORTD |= 0x80; +#ifdef HHKB_JP + /* row extention for HHKB JP */ + DDRC |= (1<<6|1<<7); + PORTC |= (1<<6|1<<7); +#endif + KEY_UNABLE(); + KEY_PREV_OFF(); + + KEY_POWER_OFF(); +} +static inline void KEY_SELECT(uint8_t ROW, uint8_t COL) +{ + PORTB = (PORTB & 0xC0) | (((COL) & 0x07)<<3) | ((ROW) & 0x07); +#ifdef HHKB_JP + if ((ROW) & 0x08) PORTC = (PORTC & ~(1<<6|1<<7)) | (1<<6); + else PORTC = (PORTC & ~(1<<6|1<<7)) | (1<<7); +#endif +} + + +#elif defined(__AVR_AT90USB1286__) +/* + * For Teensy++(AT90USB1286) + * + * HHKB pro HHKB pro2 + * row: PB0-2 (6-8) (5-7) + * col: PB3-5,6 (9-12) (8-11) + * key: PE6(pull-uped) (4) (3) + * prev: PE7 (5) (4) + * + * TODO: convert into 'staitc inline' function + */ +#define KEY_INIT() do { \ + DDRB |= 0x7F; \ + DDRE |= (1<<7); \ + DDRE &= ~(1<<6); \ + PORTE |= (1<<6); \ +} while (0) +#define KEY_SELECT(ROW, COL) (PORTB = (PORTB & 0xC0) | \ + (((COL) & 0x07)<<3) | \ + ((ROW) & 0x07)) +#define KEY_ENABLE() (PORTB &= ~(1<<6)) +#define KEY_UNABLE() (PORTB |= (1<<6)) +#define KEY_STATE() (PINE & (1<<6)) +#define KEY_PREV_ON() (PORTE |= (1<<7)) +#define KEY_PREV_OFF() (PORTE &= ~(1<<7)) +#define KEY_POWER_ON() +#define KEY_POWER_OFF() +#define KEY_POWER_STATE() true + + +#else +# error "define code for matrix scan" +#endif + + +#if 0 +// For ATMega328P with V-USB +// +// #elif defined(__AVR_ATmega328P__) +// Ports for V-USB +// key: PB0(pull-uped) +// prev: PB1 +// row: PB2-4 +// col: PC0-2,3 +// power: PB5(Low:on/Hi-z:off) +#define KEY_INIT() do { \ + DDRB |= 0x3E; \ + DDRB &= ~(1<<0); \ + PORTB |= 1<<0; \ + DDRC |= 0x0F; \ + KEY_UNABLE(); \ + KEY_PREV_OFF(); \ +} while (0) +#define KEY_SELECT(ROW, COL) do { \ + PORTB = (PORTB & 0xE3) | ((ROW) & 0x07)<<2; \ + PORTC = (PORTC & 0xF8) | ((COL) & 0x07); \ +} while (0) +#define KEY_ENABLE() (PORTC &= ~(1<<3)) +#define KEY_UNABLE() (PORTC |= (1<<3)) +#define KEY_STATE() (PINB & (1<<0)) +#define KEY_PREV_ON() (PORTB |= (1<<1)) +#define KEY_PREV_OFF() (PORTB &= ~(1<<1)) +// Power supply switching +#define KEY_POWER_ON() do { \ + KEY_INIT(); \ + PORTB &= ~(1<<5); \ + _delay_ms(1); \ +} while (0) +#define KEY_POWER_OFF() do { \ + DDRB &= ~0x3F; \ + PORTB &= ~0x3F; \ + DDRC &= ~0x0F; \ + PORTC &= ~0x0F; \ +} while (0) +#endif + +#endif diff --git a/keyboards/hhkb/keymaps/default/compiled.hex b/keyboards/hhkb/keymaps/default/compiled.hex new file mode 100644 index 000000000..b3af69527 --- /dev/null +++ b/keyboards/hhkb/keymaps/default/compiled.hex @@ -0,0 +1,1381 @@ +:100000000C9452060C9496060C9496060C94960644 +:100010000C9496060C9496060C9496060C949606F0 +:100020000C9496060C9496060C945A110C942C126F +:100030000C941C1F0C9496060C9496060C94960631 +:100040000C9496060C9496060C9496060C949606C0 +:100050000C9496060C94BC1F0C9496060C94960671 +:100060000C9496060C9496060C9496060C949606A0 +:100070000C9496060C9496060C9496060C94960690 +:100080000C9496060C9496060C9496060C94960680 +:100090000C9496060C9496060C9496060C94960670 +:1000A0000C9496060C9496060C9496069912BB1224 +:1000B000A913BB12A91300132313A91378138B13CD +:1000C0006516651694169416D316F316231823187E +:1000D000FE162318AE17AE171418231823181D1870 +:1000E000BB17BB17BB17BB17BB17BB17BB17BB1780 +:1000F000BB17BB17BB17BB17BB17BB17BB17BB1770 +:10010000CB17D917E017E717F117253032583A20E7 +:10011000253038620A000A722F63203031323334BE +:100120003536370A001F0014001A00160004001D9F +:10013000001B000600200021001500080007000930 +:100140000019000500220023001C0017000A000B04 +:1001500000110000001E0029002B00E000E100E279 +:1001600000E3002C002400250018000C000E000DF8 +:100170000010000000310035002A0028000152E57F +:1001800000E600E700260027001200130033000FEE +:1001900000360000002D002E0030002F0034003803 +:1001A00000370000003B0001000100A900AA000187 +:1001B00000010001003C003D0001000100A8000119 +:1001C00000010001003E003F000100010001005558 +:1001D00000570000003A00A50039000100010001AD +:1001E000000100010040004100010046004A0054A7 +:1001F000005600000049004C002A00580001000190 +:100200000001000100420043004700480050004B3D +:10021000004D00000044004500010052004F005115 +:10022000004E0000000A44454255473A20656E6181 +:10023000626C65642E0A005B735D004B6579626FCA +:100240006172642073746172742E0A005B575D00E2 +:100250005B535D005B525D005B445D005B435D0092 +:100260001203480048004B00420020006D006F0060 +:10027000640000000C0371002E006D002E006B0066 +:1002800000000403090409027400040100A0FA0933 +:100290000400000103010100092111010001223FB6 +:1002A000000705810308000A090401000103010297 +:1002B00000092111010001224D00070582030800F9 +:1002C0000A090402000103000000092111010001D4 +:1002D0002236000705830308000A0904030002030D +:1002E00000000009211101000122200007058403FC +:1002F0002000010705040320000112011001000085 +:100300000008EDFEFECA0401010200010631FF09EA +:1003100074A1010975150025FF9520750881020952 +:1003200076150025FF952075089102C0050109800A +:10033000A101850216010026B7001A01002AB700A4 +:10034000751095018100C0050C0901A101850316F6 +:100350000100269C021A01002A9C02751095018159 +:1003600000C005010902A1010901A1000509190147 +:100370002905150025019505750181029501750373 +:1003800081010501093009311581257F9502750824 +:10039000810609381581257F950175088106050CB0 +:1003A0000A38021581257F950175088106C0C005B0 +:1003B000010906A101050719E029E71500250195A6 +:1003C0000875018102950175088101050819012947 +:1003D00005950575019102950175039101050719B0 +:1003E0000029FF150025FF950675088100C00A0049 +:1003F0002530325820006B6579626F6172645F72DC +:1004000065706F72743A20004B6579626F61726437 +:10041000204C4544732073746174653A2025780A32 +:1004200000646F6E652E0A00626F6F676D616769A9 +:1004300063207363616E3A202E2E2E2000290A005D +:100440002575002F002575005D280025640020001B +:10045000256400200025640020002564007C002520 +:10046000303258006D6F7573656B6579205B62740F +:100470006E7C782079207620685D287265702F6107 +:10048000636C293A205B006D6B5F776865656C5F14 +:1004900074696D655F746F5F6D6178203D202564C0 +:1004A0000A006D6B5F776865656C5F6D61785F737F +:1004B00070656564203D2025640A006D6B5F74697A +:1004C0006D655F746F5F6D6178203D2025640A0063 +:1004D0006D6B5F6D61785F7370656564203D20258D +:1004E000640A006D6B5F696E74657276616C203DA5 +:1004F0002025640A006D6B5F64656C6179203D2086 +:1005000025640A006D6B5F776865656C5F74696D63 +:10051000655F746F5F6D6178203D2025640A006D12 +:100520006B5F776865656C5F6D61785F737065653B +:1005300064203D2025640A006D6B5F74696D655F02 +:10054000746F5F6D6178203D2025640A006D6B5FDC +:100550006D61785F7370656564203D2025640A00D5 +:100560006D6B5F696E74657276616C203D202564E9 +:100570000A006D6B5F64656C6179203D2025640A1B +:10058000000A00257500363A20776865656C5F744F +:10059000696D655F746F5F6D61783A20000A0025B0 +:1005A0007500353A20776865656C5F6D61785F73BB +:1005B000706565643A20000A00257500343A20749D +:1005C000696D655F746F5F6D61783A20000A002580 +:1005D0007500333A206D61785F73706565643A2009 +:1005E000000A00257500323A20696E7465727661E2 +:1005F0006C286D73293A20000A00257500313A20D5 +:1006000064656C6179282A31306D73293A20000ABB +:10061000092D2056616C756573202D0A004D3E0032 +:100620004D25643E20003F0073657420646566615B +:10063000756C740A00433E2000776865726520641B +:10064000656C74613A20637572736F723D25642C1A +:1006500020776865656C3D25640A5365652068747C +:1006600074703A2F2F656E2E77696B6970656469B7 +:10067000612E6F72672F77696B692F4D6F75736588 +:100680005F6B6579730A000A092D204D6F757365DC +:100690006B6579202D0A4553432F713A09717569AD +:1006A000740A313A0964656C6179282A31306D73B6 +:1006B000290A323A09696E74657276616C286D7325 +:1006C000290A333A096D61785F73706565640A348D +:1006D0003A0974696D655F746F5F6D61780A353AC8 +:1006E00009776865656C5F6D61785F7370656564D7 +:1006F0000A363A09776865656C5F74696D655F7481 +:100700006F5F6D61780A0A703A097072696E7420C1 +:1007100076616C7565730A643A0973657420646563 +:100720006661756C74730A75703A092B310A646FCF +:10073000776E3A092D310A706775703A092B31309E +:100740000A7067646F776E3A092D31300A0A737048 +:10075000656564203D2064656C7461202A206D61AC +:10076000785F7370656564202A2028726570656102 +:1007700074202F2074696D655F746F5F6D617829D7 +:100780000A003F004D3E2000433E20004C25640AF5 +:100790000074696D65725F636F756E743A20253001 +:1007A000346C580A006B6579626F6172645F6964CA +:1007B0006C653A2025580A006B6579626F61726436 +:1007C0005F70726F746F636F6C3A2025580A00680F +:1007D0006F73745F6B6579626F6172645F6C65647F +:1007E0007328293A2025580A000A092D20537461DC +:1007F000747573202D0A004743433A20342E392E56 +:1008000032204156522D4C4942433A20312E382E47 +:1008100031204156525F415243483A206176723549 +:100820000A004F5054494F4E533A204C55464120F0 +:10083000424F4F544D41474943204D4F5553454B2F +:1008400045592045585452414B455920434F4E532A +:100850004F4C4520434F4D4D414E44203531320AD7 +:10086000004255494C443A20313637313865662DBF +:100870006469727479202832333A33393A32382035 +:100880004A756E2020392032303136290A00564907 +:10089000443A2030784645454428712E6D2E6B2908 +:1008A000205049443A203078434146452848484B37 +:1008B00042206D6F6429205645523A2030783031FD +:1008C00030340A00444553433A20712E6D2E6B207C +:1008D0006B6579626F617264206669726D776172AF +:1008E0006520666F722048484B420A000A092D2095 +:1008F00056657273696F6E202D0A000A092D204318 +:100900006F6E736F6C65202D0A4553432F713A0942 +:10091000717569740A6D3A096D6F7573656B6579E8 +:100920000A000A092D204D61676963202D0A443AA7 +:10093000094465627567204D65737361676520546E +:100940006F67676C650A583A094D6174726978205F +:100950004465627567204D6F646520546F67676CEE +:1009600065202D2053686F77206B657970726573F1 +:1009700073657320696E206D617472697820677287 +:1009800069640A4B3A094B6579626F61726420446D +:100990006562756720546F67676C65202D2053680A +:1009A0006F77206B65797072657373207265706FF5 +:1009B00072740A4D3A094465627567204D6F75730C +:1009C0006520546F67676C650A563A0956657273FD +:1009D000696F6E0A533A095374617475730A433A26 +:1009E00009416374697661746520436F6E736F6C3F +:1009F00065204D6F64650A46312D4631303A095302 +:100A0000776974636820746F204C61796572203057 +:100A10002D392028463130203D204C30290A302DF8 +:100A2000393A0953776974636820746F204C61798F +:100A3000657220302D390A4553433A09537769745A +:100A4000636820746F204C617965722030202861C2 +:100A50006C7465726E617465206B65792031290A4A +:100A600047524156453A0953776974636820746F59 +:100A7000204C6179657220302028616C7465726E3B +:100A8000617465206B65792032290A5041555345C0 +:100A90003A094A756D7020746F20426F6F746C6FE5 +:100AA0006164657220285265736574290A453A09A4 +:100AB0005072696E7420454550524F4D20536574F5 +:100AC00074696E67730A000A002575002E6E6B72DA +:100AD0006F3A20000A002575002E737761705F62FF +:100AE00061636B736C6173685F6261636B73706188 +:100AF00063653A20000A002575002E737761705FE8 +:100B000067726176655F6573633A20000A00257538 +:100B1000002E6E6F5F6775693A20000A0025750028 +:100B20002E737761705F72616C745F726775693A7A +:100B300020000A002575002E737761705F6C616C70 +:100B4000745F6C6775693A20000A002575002E6392 +:100B50006170736C6F636B5F746F5F636F6E7472E1 +:100B60006F6C3A20000A002575002E737761705F64 +:100B7000636F6E74726F6C5F636170736C6F636BC5 +:100B80003A20000A0025303258006B65796D61709B +:100B90005F636F6E6669672E7261773A20000A00A4 +:100BA0002575002E6D6F7573653A20000A00257556 +:100BB000002E6B6579626F6172643A20000A00252D +:100BC00075002E6D61747269783A20000A002575EF +:100BD000002E656E61626C653A20000A0025303295 +:100BE000580064656275675F636F6E6669672E7231 +:100BF00061773A20000A0025750064656661756CAE +:100C0000745F6C617965723A20003F000A6D6F7500 +:100C100073653A206F66660A000A6D6F7573653AF0 +:100C2000206F6E0A000A6B6579626F6172643A2008 +:100C30006F66660A000A6B6579626F6172643A20BA +:100C40006F6E0A000A6D61747269783A206F666689 +:100C50000A000A6D61747269783A206F6E0A000AA0 +:100C600064656275673A206F66660A000A646562A9 +:100C700075673A206F6E0A000A0A4A756D70696ED0 +:100C80006720746F20626F6F746C6F616465722E81 +:100C90002E2E2000433E20006565636F6E666967F7 +:100CA0003A0A000011241FBECFEFDAE0DEBFCDBF4D +:100CB00004B603FE24C08091E0019091E101A0916F +:100CC000E201B091E3018730904BA740B04BB9F4FB +:100CD0001092E0011092E1011092E2011092E30102 +:100CE00014BE84B7877F84BF88E10FB6F8948093E1 +:100CF0006000109260000FBEE0E0FFE3099511E094 +:100D0000A0E0B1E0ECEFF5E502C005900D92A23352 +:100D1000B107D9F711E0A2E3B1E001C01D92A03EF6 +:100D2000B107E1F70E94940E0C94FC2A0C94000089 +:100D3000FF93EF93E0913201F0913301309709F086 +:100D40000995EF91FF910895FC018591803011F094 +:100D5000EFDFFBCF0895FF27E0E230E247FF0CC052 +:100D6000419597FF09C0EDE260957095809590954B +:100D7000611D711D811D911D27FF02C0219530E36A +:100D800050E2AA27660F771F881F991FAA1FA41772 +:100D900010F0A41B63955A95A9F7AA3008F0A95F33 +:100DA000A05DAF93F395611571058105910541F73C +:100DB000ED3211F4EF93F395F21718F43F93F39596 +:100DC000FBCF8F91B5DFFA95E1F70895E991F9919D +:100DD0008591803021F0853219F0AADFF9CF08958E +:100DE00020E0E89455915532C1F3503311F46894E2 +:100DF00055915A3348F4505390F3220F022E220F8C +:100E0000220F200D250FF4CF0EF421958991999191 +:100E1000533619F3533729F1533559F1BC0188275B +:100E20009927E8945C3621F48991999168945591B9 +:100E3000543639F446EF7EF077FF0DC08FEF9FEF09 +:100E40000AC055374AE039F0583540E121F05236B2 +:100E500042E009F00895FF93EF937DDFEF91FF915A +:100E6000B7CFFF93EF93FC0181918030B9F360DF3E +:100E7000FBCFFF93EF9368DFF1CFDF93CF93CDB735 +:100E8000DEB72596A3DFCF91DF9108958FEF84B968 +:100E900080E485B957985F9A2E9A2F98ECE3F1E099 +:100EA00088E08E0F11928E13FDCFE4E3F1E088E02D +:100EB0008E0F11928E13FDCF8CE391E0909347013A +:100EC0008093460184E391E090934501809344012F +:100ED0000895EF92FF920F931F93CF93DF9380912A +:100EE0004401909145012091460130914701309392 +:100EF0004501209344019093470180934601C0E04F +:100F0000D0E0EE24E394F12C0FEF10E020E030E08D +:100F100085B1807C8C2BA90193E0440F551F9A95D5 +:100F2000E1F7842B85B98AE18A95F1F700C0E09159 +:100F30004401F0914501EC0FFD1F808190E0022EED +:100F400002C0959587950A94E2F780FD2F9A95E364 +:100F50009A95F1F70000E6B52E988AE18A95F1F7A7 +:100F600000C04091460150914701DA01AC0FBD1F0E +:100F70004F9B0AC0C701022E01C0880F0A94EAF7EE +:100F800080959C91892308C06C91C701022E01C0F5 +:100F9000880F0A94EAF7862B8C9386B56E2F70E043 +:100FA0008E1728F086B590E0861B970B06C0E6B535 +:100FB000C801861B970B8E0F911D069758F0E09184 +:100FC0004401F0914501EC0FFD1F8081FA01EC0F07 +:100FD000FD1F80839AE19A95F1F700C02F982E9A11 +:100FE0008BE291E00197F1F700C000002F5F3F4FC7 +:100FF0002830310509F08CCFA0914601B09147010E +:10100000AC0FBD1FE0914401F0914501EC0FFD1FB5 +:101010009C918081981751F00E945A1F609348015B +:101020007093490180934A0190934B012196C830F7 +:10103000D10509F06BCF8091D601853021F08091E8 +:10104000D601811111C060914801709149018091D0 +:101050004A0190914B010E94901F613177428105B6 +:10106000910510F00E94DF1E81E0DF91CF911F916A +:101070000F91FF90EF900895209146013091470124 +:10108000F901E80FF11D808108950F931F93CF930D +:10109000DF9386E191E00E94A406C0E0D0E00AE080 +:1010A00011E0E0914601F0914701EC0FFD1F8081B6 +:1010B0000E94C91E1F928F93DF93CF931F930F93AC +:1010C0000E943D0721960F900F900F900F900F9068 +:1010D0000F90C830D10529F7DF91CF911F910F9163 +:1010E00008951F93CF93DF93C7E0D0E010E0E09125 +:1010F0004601F0914701EC0FFD1F808190E00E94B6 +:10110000BD1E180F219798F7812FDF91CF911F9166 +:1011100008950895089561110BC0FC018281882310 +:1011200021F085EE0E94591503C085EE0E94F81546 +:1011300080E090E0089581E0089581E008950C94A6 +:101140009D0808950F931F93CF93DF938C01FC01AB +:10115000C081D181CE010E94871DBE010E944B0932 +:10116000EC01B8010E949F08882309F48DC0F801A2 +:101170008281882309F44AC08091570181111FC0E0 +:10118000C431F0E5DF0709F051C00E94A10881E0F9 +:10119000809357010E944E1F9093560180935501F2 +:1011A00010924E011092500110924F011092520174 +:1011B00010925101109254011092530165C0809118 +:1011C0005501909156010E94661F883C910570F46C +:1011D00080914E01E82FF0E0EE0FFF1FE15BFE4F24 +:1011E000D183C0838F5F80934E014EC0C43880E5A9 +:1011F000D80721F0C538D04501F13AC0F801828105 +:10120000882341F010924C0182E01EC0C438E0E512 +:10121000DE0759F580914C01811106C086E20E94DB +:10122000591586E20E94F81582E01CC0C438F0E52A +:10123000DF0741F3C538D045D9F4F801828188230E +:1012400031F010924D0180E20E9420161DC0809165 +:101250004D01811106C087E20E94591587E20E9464 +:10126000F81580E20E9427160FC0C538D04529F333 +:1012700081E080934C0180934D01C801DF91CF91B3 +:101280001F910F910C949B0880E0DF91CF911F91EB +:101290000F9108950895E72FF0E098E0899FE00D01 +:1012A000F11D112483E0EE0FFF1F8A95E1F7E60F91 +:1012B000F11DEE0FFF1FEB5DFE4F85919491089598 +:1012C000880F991FFC01EB55F0408591949108958A +:1012D000880F991FFC01EB5DFE4F85919491089555 +:1012E0000F931F93CF93DF93EC01811520E39207B7 +:1012F00050F5C11580E2D80708F0C3C0CB3BD1053B +:1013000090F4C83AD10508F06AC0C53AD10508F092 +:101310005BC0C430D10508F0D4C1219709F0CEC11B +:1013200001E010E00EC2CF3FD10511F008F0C9C1B5 +:10133000C03FD10508F0A2C0CE01805E9109089798 +:1013400008F4BFC1BBC1C13090E5D90709F4A2C000 +:1013500020F5C0318FE4D80770F4C11590E4D907A7 +:1013600008F094C0C11521E3D20708F0A7C1DD271A +:101370008E01106CE6C1C115D04509F09FC10E94D5 +:101380008E188FEF94E32CE0815090402040E1F7DD +:1013900000C000000E94E11FD4C1C11597E5D90724 +:1013A00058F4C03121E5D20708F020C1C43180E5EE +:1013B000D80708F479C082C1CE01905781159041B9 +:1013C00008F07CC1DF7077C1C53AD10509F47BC153 +:1013D000C63AD10509F07AC102E810E4B2C1C83AB0 +:1013E000D10509F476C1C93AD10509F475C1CA3AE3 +:1013F000D10509F474C1CB3AD10509F473C1CC3AD3 +:10140000D10509F472C1CD3AD10509F471C1C03BCF +:10141000D10509F470C1CE3AD10509F46FC1CF3AB4 +:10142000D10509F46EC1C13BD10509F46DC1C23BC0 +:10143000D10509F46CC1C33BD10509F46BC1C43BB0 +:10144000D10509F46AC1C53BD10509F469C1C63BA0 +:10145000D10509F468C1C73BD10509F467C1C83B90 +:10146000D10509F466C1C93BD10509F465C1CA3B80 +:10147000D10509F464C100E014E463C18E01106574 +:1014800060C1CE019F700E9468095CC1DF708E014F +:10149000106A57C185E292E00E94A4068091C101C2 +:1014A00081608093C1014DC10E948721811102C0DA +:1014B0000E946D210E94A42190E09093E00180930E +:1014C000DF01C23080E5D80721F48091DF0181601F +:1014D00086C0C43090E5D90721F48091DF01826095 +:1014E0007EC0C63020E5D20721F48091DF01846000 +:1014F00076C0C83080E5D80719F48091DF0127C095 +:10150000CA3090E5D90721F48091DF01806167C07E +:10151000CC3020E5D20721F48091DF0180625FC0EA +:10152000CE3080E5D80721F48091DF01806457C078 +:10153000C03190E5D90721F48091DF0180684FC068 +:10154000C23120E5D20729F48091DF0184608860F0 +:1015500046C0C33080E5D80721F48091DF018E7F3B +:101560003EC0C53090E5D90721F48091DF018D7F21 +:1015700036C0C73020E5D20721F48091DF018B7F90 +:101580002EC0C93080E5D80719F48091DF0126C04C +:10159000CB3090E5D90721F48091DF018F7E1FC009 +:1015A000CD3020E5D20721F48091DF018F7D17C077 +:1015B000CF3080E5D80721F48091DF018F7B0FC009 +:1015C000C13190E5D90721F48091DF018F7707C001 +:1015D000C331D04531F48091DF018B7F877F8093C9 +:1015E000DF018091DF010E94A821ABC08D2F9927D8 +:1015F0008F70992781309105D9F49E01237033278C +:1016000002C0880F991F2A95E2F79C688E0144E07A +:10161000000F111F4A95E1F700271370802B912BC3 +:1016200053E0CC0FDD1F5A95E1F7C076DD272FC0C0 +:101630008230910531F4DC2FCC278E01016F106AC6 +:1016400080C08330910569F4CE018370992701E051 +:1016500010E002C0000F111F8A95E2F7C8019C68D4 +:101660000FC084309105B9F4CE018370992701E051 +:1016700010E002C0000F111F8A95E2F7C8019A68B6 +:1016800023E0CC0FDD1F2A95E1F7C07ED7708C01D7 +:101690000C2B1D2B56C08530910531F4DC2FCC2747 +:1016A0008E01046F106A4DC0069709F04AC0CF71D1 +:1016B000DD27DC2FCC278E01106243C000E010E054 +:1016C00040C08E013EC001E810E43BC003E810E4D6 +:1016D00038C002EE14E435C009EE14E432C00AEE5C +:1016E00014E42FC005EB14E42CC006EB14E429C06D +:1016F00007EB14E426C00CEC14E423C00DEC14E456 +:1017000020C003E815E41DC00AE815E41AC002E988 +:1017100015E417C004E915E414C001E216E411C091 +:1017200003E216E40EC004E216E40BC005E216E480 +:1017300008C006E216E405C007E216E402C00AE2A9 +:1017400016E4C801DF91CF911F910F910895E72F03 +:10175000F0E098E0899FE00DF11D112483E0EE0F89 +:10176000FF1F8A95E1F7E60FF11DEE0FFF1FEB5DFE +:10177000FE4F85919491803E9105E0F4803C910567 +:1017800058F58133910509F46FC048F48932910509 +:1017900009F463C08A32910509F46DC072C08933BF +:1017A0009105E9F082389105D1F08533910509F46E +:1017B0004DC067C0833E910581F138F4803E9105AC +:1017C000B9F0823E9105D9F05CC0863E910561F189 +:1017D000873E9105A1F155C00E94600908952091AE +:1017E000DF0120FD02C021FF4CC080EE90E049C027 +:1017F0008091DF0180FFF9CF89E390E042C08091C2 +:10180000DF0182FF0EC08091DF0184FF03C080E012 +:1018100090E037C083EE90E034C08091DF0182FF1A +:10182000F2CF82EE90E02DC08091DF0183FF0BC0EC +:101830008091DF0184FDEBCF87EE90E022C08091A4 +:10184000DF0183FFF5CF86EE90E01BC08091DF01C2 +:1018500085FF07C089E290E014C08091DF0185FF19 +:10186000F9CF85E390E00DC08091DF0186FF07C0CE +:101870008AE290E006C08091DF0186FFF9CF81E324 +:1018800090E00E947009089508950C94440C809192 +:10189000630108959FB7F89410925A019FBF9091E9 +:1018A000D601943009F057C09091E9009F703091B3 +:1018B000EC00232F217030FD20E8922B24E02093B0 +:1018C000E9002091EB0020FF43C02091EE0027FFAC +:1018D0003FC020915801222321F02091E80025FFEC +:1018E00037C01092580126E03091E80035FD15C050 +:1018F0003091D601343061F53091EB0035FD28C0D0 +:10190000215021F481E08093580122C0EFE9FFE0EB +:101910003197F1F700C00000E7CF8093F10080918C +:10192000E80085FD0AC08091E80080FFFCCF80912F +:10193000E8008E778093E80006C08FB7F89421E026 +:1019400020935A018FBF9F709093E90080E0089523 +:101950009F709093E9008FEF0895CF93DF9300D0AD +:101960001F92CDB7DEB79C018091D601843019F566 +:1019700093E099833B832A839093E9008FEF9091C2 +:10198000E800815095FD06C095ED9A95F1F70000AD +:101990008111F5CF8091E80085FF0DC040E050E057 +:1019A00063E070E0CE0101960E944A0F8091E8004A +:1019B0008E778093E8000F900F900F90DF91CF917A +:1019C0000895CF93DF9300D01F92CDB7DEB720915B +:1019D000D601243021F522E029839B838A8383E08A +:1019E0008093E9008FEF9091E800815095FD06C04B +:1019F00095ED9A95F1F700008111F5CF8091E800FF +:101A000085FF0DC040E050E063E070E0CE0101963C +:101A10000E944A0F8091E8008E778093E8000F9033 +:101A20000F900F90DF91CF9108952091D60124302F +:101A3000F1F422E02093E9002FEF3091E8002150EB +:101A400035FD06C035ED3A95F1F700002111F5CFCF +:101A50002091E80025FF0BC040E050E065E070E019 +:101A60000E944A0F8091E8008E778093E8000895E5 +:101A7000CF93DF932091D601243039F521E02093D4 +:101A8000E9002FEF3091E800215035FD06C035ED1B +:101A90003A95F1F700002111F5CF2091E80025FFDC +:101AA00014C0EC0140E050E068E070E00E944A0F92 +:101AB0008091E8008E778093E80088E0FE01ABE536 +:101AC000B1E001900D928A95E1F7DF91CF910895F1 +:101AD0008CE592E00E94A4068091D501811109C095 +:101AE0000E94DF100E943C118091E200846080938C +:101AF000E200089588E592E00E94A4061092D501C4 +:101B0000089584E592E00C94A40680E592E00C949C +:101B1000A4068CE492E00E94A4060C94161F209167 +:101B200059012F5F822F62E30E948C2A992319F0BA +:101B30002093590108951092590180915A018823E8 +:101B400071F18091D601843041F58091E9008F7068 +:101B50002091EC00922F917020FD90E8892B94E069 +:101B60009093E9009091EB0090FF14C09091EE00EB +:101B700097FF10C09091E80095FF03C01092F1000C +:101B8000F9CF9091E80090FF05C09091E8009E7712 +:101B90009093E8008F708093E90010925A010895A5 +:101BA00042E061EC81E00E94591042E061EC82E089 +:101BB0000E94591042E061EC83E00E94591042E219 +:101BC00061EC84E00C9459108091D801833009F4C1 +:101BD00053C030F4813071F0823009F48CC0089524 +:101BE0008A3009F478C08B3009F45EC0893009F07E +:101BF0009AC020C08091D701813A09F094C08091A9 +:101C0000E800877F8093E8008091DB019091DC0100 +:101C1000892B21F468E08BE591E003C060E080E06F +:101C200090E070E00E94950F8091E8008B778093A0 +:101C3000E80008958091D701813209F074C0809145 +:101C4000DB019091DC01892B09F06DC08091E800E7 +:101C5000877F8093E8008091E80082FD05C0809135 +:101C6000D6018111F8CF5FC08091F10080936301AC +:101C70008091E8008B7753C08091D701813A09F0B9 +:101C800052C08091DB019091DC01892B09F04BC09F +:101C90008091E800877F8093E8008091E80080FFD2 +:101CA000FCCF80910A0136C08091D7018132D9F5ED +:101CB0008091DB019091DC01892BA9F58091E800EE +:101CC000877F8093E8000E948E108091D9018093D5 +:101CD0000A010C948E188091D701813221F58091F0 +:101CE000E800877F8093E8000E948E108091DA01DF +:101CF0008093640108958091D701813AA1F4809185 +:101D0000E800877F8093E8008091E80080FFFCCFA7 +:101D1000809164018093F1008091E8008E77809338 +:101D2000E8000C948E10089584B7877F84BF88E103 +:101D30000FB6F89480936000109260000FBE90E0A0 +:101D400080E80FB6F89480936100909361000FBE15 +:101D50000E946E140E94DF100E943C118091E200EC +:101D600084608093E2008AE49CE00E94B81E78942C +:101D70000E94C1130E94701480E091E00E94DC1365 +:101D80008BE392E00E94A4068091D601853089F40D +:101D900087E392E00E94A4060E94DF1E8091D40196 +:101DA000882391F30E94081F882371F30E94340F47 +:101DB000EBCF0E949414E8CF292F3327233031052D +:101DC000C9F064F42130310581F02230310509F089 +:101DD00043C084E790E026E832E042C0213231057A +:101DE000F1F02232310541F137C082E190E02AEF73 +:101DF00032E036C099278130910541F0823091055B +:101E000041F0892B49F5E2E8F2E005C0E4E7F2E0B1 +:101E100002C0E0E6F2E0849190E09F0121C06430CE +:101E2000D8F4E62FF0E0EE0FFF1FE15EFE4F2081B9 +:101E3000318189E090E014C0643070F470E0FB01FF +:101E4000EE0FFF1FE95EFE4F20813181FB01ED5E49 +:101E5000FE4F808190E004C080E090E020E030E020 +:101E6000FA0131832083089580E189BD82E189BD33 +:101E700009B400FEFDCF8091D8008F7D8093D800FB +:101E80008091E00082608093E0008091E00081FD1D +:101E9000FCCF0895CF92DF92EF92FF920F931F93A2 +:101EA000CF93DF93EC018B016A010E94AD10811189 +:101EB00033C0C114D10439F0F60180819181081B2F +:101EC000190BC80FD91FE12CF12C0115110519F1BF +:101ED0008091E80085FD16C08091E8008E778093A0 +:101EE000E800C114D10449F0F60180819181E80E27 +:101EF000F91EF182E08285E00FC00E94AD108823B8 +:101F000021F30AC089918093F10001501109FFEF7C +:101F1000EF1AFF0ADACF80E0DF91CF911F910F9186 +:101F2000FF90EF90DF90CF9008952091DD013091E8 +:101F3000DE012617370748F06115710539F4209145 +:101F4000E8002E772093E80001C0B90140E0611558 +:101F50007105A9F12091D601222309F443C025304F +:101F600009F442C02091E80023FD40C02091E80020 +:101F700022FD32C02091E80020FFE9CF4091F3001C +:101F80002091F20030E0342BFC01CF016115710586 +:101F900059F02830310540F481918093F10061506F +:101FA00071092F5F3F4FF1CF41E02830310509F033 +:101FB00040E02091E8002E772093E800C8CF41113F +:101FC000C9CF0AC08091D601882361F0853061F0C5 +:101FD0008091E80083FD0AC08091E80082FFF2CF83 +:101FE00080E0089582E0089583E0089581E00895F7 +:101FF0002091DD013091DE012617370748F0611589 +:10200000710539F42091E8002E772093E80001C093 +:10201000B901FC0120E06115710591F18091D601B3 +:10202000882309F440C0853009F43FC08091E8005E +:1020300083FD3DC08091E80082FD2FC08091E800C3 +:1020400080FFE9CF2091F3008091F20090E0922B85 +:102050006115710559F08830910540F42491209361 +:10206000F1003196615071090196F2CF21E0089795 +:1020700009F020E08091E8008E778093E800CBCFD4 +:102080002111CCCF0AC08091D601882361F0853020 +:1020900061F08091E80083FD0AC08091E80082FF32 +:1020A000F2CF80E0089582E0089583E0089581E012 +:1020B0000895982F973058F59093E900981739F0C4 +:1020C0007091EC002091ED005091F00003C0242F9E +:1020D000762F50E021FF19C03091EB003E7F309306 +:1020E000EB003091ED003D7F3093ED003091EB003F +:1020F00031603093EB007093EC002093ED0050932F +:10210000F0002091EE0027FF07C09F5FD3CF8F70B4 +:102110008093E90081E0089580E008958091D701DF +:1021200087FF11C08091E80082FD05C08091D60133 +:102130008111F8CF11C08091E8008B770BC080919E +:10214000D601882349F08091E80080FFF8CF809184 +:10215000E8008E778093E80008952091E4003091A4 +:10216000E50095E64091EC00842F817040FF22C08D +:102170008091E80080FD1CC08091D601882391F0F9 +:10218000853091F08091EB0085FD10C04091E40016 +:102190005091E5004217530729F39A01915011F726 +:1021A00084E0089582E0089583E0089581E0089531 +:1021B00080E008954091E80042FFDECF08950E943C +:1021C0004D110E945511E0EEF0E080818160808326 +:1021D000E8EDF0E080818F77808319BCA7EDB0E057 +:1021E0008C918E7F8C9380818F7E80831092D5011D +:1021F00008950F931F93CF93DF930E944D110E9478 +:102200005511C8EDD0E088818F77888388818068F8 +:10221000888388818F7D888319BC1092D6011092A3 +:10222000D2011092D4011092D30100EE10E0F80117 +:1022300080818B7F808388818160888342E060E039 +:1022400080E00E945910E1EEF0E080818E7F808373 +:10225000E2EEF0E08081816080838081886080830D +:10226000F80180818E7F8083888180618883DF91FF +:10227000CF911F910F910895E8EDF0E080818F7E5E +:102280008083E7EDF0E080818160808384E082BF1D +:1022900081E08093D5010C94F910E8EDF0E08081A5 +:1022A0008E7F80831092E20008951092DA001092DF +:1022B000E10008951F920F920FB60F9211242F93F1 +:1022C0003F934F935F936F937F938F939F93AF93BE +:1022D000BF93EF93FF938091E10082FF0BC0809149 +:1022E000E20082FF07C08091E1008B7F8093E100D4 +:1022F0000E948F0D8091DA0080FF1FC08091D8006E +:1023000080FF1BC08091DA008E7F8093DA0080917D +:10231000D90080FF0DC080E189BD82E189BD09B48B +:1023200000FEFDCF81E08093D6010E94680D05C0BC +:1023300019BC1092D6010E947A0D8091E10080FFB5 +:1023400019C08091E20080FF15C08091E2008E7F6D +:102350008093E2008091E20080618093E2008091AE +:10236000D80080628093D80019BC85E08093D601A4 +:102370000E94850D8091E10084FF30C08091E200D1 +:1023800084FF2CC080E189BD82E189BD09B400FED3 +:10239000FDCF8091D8008F7D8093D8008091E1009F +:1023A0008F7E8093E1008091E2008F7E8093E20037 +:1023B0008091E20081608093E2008091D2018823C5 +:1023C00011F084E007C08091E30087FD02C081E046 +:1023D00001C083E08093D6010E94890D8091E100C5 +:1023E00083FF29C08091E20083FF25C08091E10036 +:1023F000877F8093E10082E08093D6011092D20122 +:102400008091E1008E7F8093E1008091E2008E7FD9 +:102410008093E2008091E20080618093E20042E0DC +:1024200060E080E00E9459108091F0008860809305 +:10243000F0000E94810DFF91EF91BF91AF919F91AC +:102440008F917F916F915F914F913F912F910F905D +:102450000FBE0F901F9018951F920F920FB60F92FC +:1024600011242F933F934F935F936F937F938F9399 +:102470009F93AF93BF93CF93DF93EF93FF93C0915D +:10248000E900CF708091EC00D82FD17080FDD0E8AA +:102490001092E9008091F000877F8093F00078949B +:1024A0000E9470121092E9008091F0008860809381 +:1024B000F000CD2BCF70C093E900FF91EF91DF9139 +:1024C000CF91BF91AF919F918F917F916F915F91CC +:1024D0004F913F912F910F900FBE0F901F90189525 +:1024E0001F93CF93DF93CDB7DEB7AA970FB6F894BB +:1024F000DEBF0FBECDBFE7EDF1E088E08E0F90911B +:10250000F10091938E13FBCF0E94E40D8091E800BF +:1025100083FF1FC18091D7019091D801492F50E0CE +:102520004A30510508F015C1FA01EA5AFF4F0C94E0 +:10253000AC2A803881F0823809F00BC18091DB0130 +:102540008F708093E9008091EB0085FB882780F9EC +:102550001092E90006C08091D3019091D4019111AD +:1025600082609091E800977F9093E8008093F1005B +:102570001092F100C8C0282F2D7F09F0EAC08823EF +:1025800019F0823061F0E5C08091D901813009F005 +:10259000E0C0933009F080E08093D4012BC080919B +:1025A000D901811127C08091DB018F7009F4D1C05E +:1025B0008093E9002091EB0020FF1CC0933021F4B0 +:1025C0008091EB00806214C09091EB009061909339 +:1025D000EB0021E030E0A90102C0440F551F8A95AD +:1025E000E2F74093EA001092EA008091EB008860E5 +:1025F0008093EB001092E9008091E800877F86C00D +:102600008111A7C01091D9011F778091E3008078D4 +:10261000812B8093E3008091E800877F8093E8001E +:102620000E948E108091E80080FFFCCF8091E30033 +:1026300080688093E300111102C082E001C083E052 +:102640008093D60186C08058823008F082C0809185 +:10265000D9019091DA018C3D53E0950779F583E03B +:102660008A838AE289834FB7F894DE01139620E0CB +:102670003EE051E2E32FF0E050935700E49120FF59 +:1026800003C0E295EF703F5FEF708E2F90E0EA306D +:1026900010F0C79601C0C0968D939D932F5F243193 +:1026A00049F74FBF8091E800877F8093E8006AE296 +:1026B00070E0CE0101960E94950F14C0AE014F5FED +:1026C0005F4F6091DB010E94DC0EBC01009709F4B2 +:1026D00040C09091E800977F9093E80089819A81AB +:1026E0000E94F80F8091E8008B778093E80031C05A +:1026F000803879F58091E800877F8093E8008091A9 +:10270000D2018093F1008091E8008E778093E800F9 +:102710000E948E101EC081111CC09091D901923070 +:10272000C0F48091E800877F8093E8009093D20105 +:102730000E948E108091D201811106C08091E30029 +:1027400087FD02C081E001C084E08093D6010E9431 +:10275000D00D8091E80083FF0AC08091E800877F58 +:102760008093E8008091EB0080628093EB00AA9652 +:102770000FB6F894DEBF0FBECDBFDF91CF911F9192 +:102780000895CF938091D6018823A1F0C091E900EC +:10279000CF709091EC00892F817090FD80E8C82B5C +:1027A0001092E9008091E80083FD0E947012CF70C2 +:1027B000C093E900CF91089590936A0180936901D5 +:1027C0000895E0916901F0916A01309721F001903C +:1027D000F081E02D099480E00895EF92FF920F932D +:1027E0001F93CF93DF93E0916901F0916A013097D5 +:1027F000B1F18C010280F381E02D09958091C10136 +:1028000082FF2DC080FF04C086EF93E00E94A406E3 +:10281000E80118E080EFE82E83E0F82E8091C101F6 +:1028200080FF0BC088811F928F93FF92EF920E94CE +:102830003D070F900F900F900F901150219611119E +:10284000EDCF8091C10180FF0AC08EEE93E0DF9151 +:10285000CF911F910F91FF90EF900C94A406DF9100 +:10286000CF911F910F91FF90EF900895E091690132 +:10287000F0916A01309721F00480F581E02D0994F0 +:10288000089520916701309168018217930771F0D4 +:102890009093680180936701E0916901F0916A016A +:1028A000309721F00680F781E02D0994089520915A +:1028B0006501309166018217930771F0909366016C +:1028C00080936501E0916901F0916A01309721F0F0 +:1028D0000084F185E02D0994089508950C946D14F9 +:1028E0000E94451F0E9446070C943F20CF93DF9320 +:1028F0001F92CDB7DEB79091C10192FF10C090FF3B +:102900000EC01F928F9328E034E03F932F9389836A +:102910000E943D070F900F900F900F9089810F90AC +:10292000DF91CF910C94450C9F92AF92BF92CF92C2 +:10293000DF92EF92FF920F931F93CF93DF9300D01C +:1029400000D000D0CDB7DEB70E94690707E010E0E5 +:10295000AA24A394B12C902E802F0E943C089801A9 +:1029600024593E4F6901F901F080F826A1F4015085 +:10297000110988F78FEF89838A831B820E944E1F7B +:102980008160782F9D838C8349815A816B818D81F1 +:102990000E942B152FC09091C10191FF04C08E831E +:1029A0000E9445088E8127E030E0A501022E01C07B +:1029B000440F0A94EAF7E42E4F21C1F029839A824A +:1029C0008E2191E009F490E09B830E944E1F81606C +:1029D000782F9D838C8349815A816B818D810E94E0 +:1029E0002B15F6018081E826E08204C021503109D0 +:1029F000E0F6BDCF0E94A92310916B010E94E11364 +:102A00001817B9F00E94E11380936B0126960FB658 +:102A1000F894DEBF0FBECDBFDF91CF911F910F9114 +:102A2000FF90EF90DF90CF90BF90AF909F900C946D +:102A3000761426960FB6F894DEBF0FBECDBFDF9199 +:102A4000CF911F910F91FF90EF90DF90CF90BF90AB +:102A5000AF909F900895CF93DF93CDB7DEB72B97BC +:102A60000FB6F894DEBF0FBECDBF4F83588769877E +:102A70007A878B87DE01119686E0FD0111928A9597 +:102A8000E9F785E0FE01379601900D928A95E1F70E +:102A900049815A816B817C818D819E810E942C1B92 +:102AA0002B960FB6F894DEBF0FBECDBFDF91CF914E +:102AB0000895CF93882309F499C0C82F8CEF8C0F09 +:102AC000813A48F48C2F0E94152881118FC08C2FD9 +:102AD0000E94061E0CC080E28C0F883058F4C7702C +:102AE00081E001C0880FCA95EAF70E94421ECF918B +:102AF0000C94891E8BE58C0F833078F4C53A29F04D +:102B0000C63A31F083E890E005C081E890E002C069 +:102B100082E890E0CF910C94411488E58C0F8331CA +:102B200008F064C0C83A39F1C93A41F1CA3A49F1EA +:102B3000CB3A51F1CC3A59F1CD3A61F1C03B69F150 +:102B4000CE3A71F1CF3A79F1C13B81F1C23B89F1C3 +:102B5000C33B91F1C43B99F1C53BA1F1C63BA9F13F +:102B6000C73BB1F1C83BB9F1C93BC1F1CA3BC9F19F +:102B700080E090E038C082EE90E035C089EE90E0D1 +:102B800032C08AEE90E02FC085EB90E02CC086EB3F +:102B900090E029C087EB90E026C08CEC90E023C049 +:102BA0008DEC90E020C083E891E01DC08AE891E0C0 +:102BB0001AC082E991E017C084E991E014C081E273 +:102BC00092E011C083E292E00EC084E292E00BC07A +:102BD00085E292E008C086E292E005C087E292E0DA +:102BE00002C08AE292E0CF910C945714CF910895DD +:102BF000882329F19CEF980F913A18F40E94231E24 +:102C00000DC090E2980F983058F4877091E001C0A1 +:102C1000990F8A95EAF7892F0E94481E0C94891E05 +:102C20009BE5980F933020F480E090E00C944114E1 +:102C3000885A833120F480E090E00C945714089572 +:102C4000882321F00E94421E0C94891E0895882337 +:102C500021F00E94481E0C94891E08957F928F9245 +:102C60009F92AF92BF92CF92DF92EF92FF920F931B +:102C70001F93CF93DF931F92CDB7DEB77C01C62E93 +:102C8000772EFC01058102950F70128111110E94AF +:102C90005F1E0E94FF1D882379F0112369F080E2F6 +:102CA0008C0D883048F082E00E94E81D0E94FF1DD4 +:102CB00091E0D82ED92601C0D12CE72DE295EF70F6 +:102CC000F0E0E05AFF4F0C94AC2A872D807F072D4F +:102CD0000F70882311F00295007F112389F00023E3 +:102CE00009F498C180E28C0D883020F4802F0E9476 +:102CF000421E03C0802F0E94521E0E94891E8AC15C +:102D00008C2D0E94F815002309F49DC180E28C0DE2 +:102D1000883020F4802F0E94481E03C0802F0E941C +:102D2000581E0E94891E8FC1872D807F972D9F700E +:102D3000803211F4892F03C0892F8295807FCC20A7 +:102D400021F0F1E0CF16A1F01DC0112339F00023CE +:102D500019F1013009F50E94721E75C1002319F0A6 +:102D6000013009F470C189830E94751E898110C1E8 +:102D7000112321F0063008F066C10EC0053008F0BE +:102D800062C106C1112359F0002331F0F70195818A +:102D900090FF40C19F7095830E94201654C100236C +:102DA00009F4F6C03DC1872D86958695837090E025 +:102DB000009719F0019761F046C1112321F08C2D85 +:102DC000972D937002C080E090E00E9441143BC1B7 +:102DD000112321F08C2D972D937002C080E090E09C +:102DE0000E94571430C18C2D112319F00E942F22FC +:102DF00002C00E9497220E941C2325C1872D837048 +:102E000009F052C011111FC18C2D829586958770D3 +:102E1000880F880F9C2D9F70892E912CA12CB12C8E +:102E2000082E04C0880C991CAA1CBB1C0A94D2F75B +:102E3000C4FE14C00FE010E020E030E0B901A801AA +:102E400004C0440F551F661F771F8A95D2F7CB0128 +:102E5000BA01609570958095909503C060E070E030 +:102E6000CB01272D26952695237030E022303105A1 +:102E700069F02330310589F0682979298A299B294D +:102E80002130310571F00E94741CDDC06829792958 +:102E90008A299B290E94901CD6C00E94741CC501DF +:102EA000B4010E94581CCFC0112319F0872D8170E6 +:102EB00001C08695882309F4C6C08C2D829586951D +:102EC0008770880F880F9C2D9F70892E912CA12CC4 +:102ED000B12C082E04C0880C991CAA1CBB1C0A9497 +:102EE000D2F7C4FE14C00FE010E020E030E0B901DA +:102EF000A80104C0440F551F661F771F8A95D2F79B +:102F0000CB01BA01609570958095909503C060E003 +:102F100070E0CB01272D269526952370422F50E097 +:102F20004230510569F04330510589F0682979290B +:102F30008A299B294130510571F00E944E1D83C0A2 +:102F4000682979298A299B290E946A1D7CC00E94D0 +:102F50004E1DC501B4010E94321D75C08C2D90E03C +:102F6000FC01E05EF109E531F10508F04FC0E059E0 +:102F7000FF4F0C94AC2A0C2D0F70872D8F711123ED +:102F800021F00E94CB1C802F07CF0E94EC1C802FC9 +:102F90000E94271658C0112341F0053008F053C095 +:102FA000872D8F710E94111D4EC0063008F04BC056 +:102FB000F7CF112339F0872D8F710E94CB1C43C0AE +:102FC0001123C9F3872D8F710E94EC1C3CC0112383 +:102FD00029F0872D8F710E94B61C35C00E94AC1C51 +:102FE00032C0112351F0172D1F71812F0E94CB1C6D +:102FF00063E0812F0E94DF1D26C081E00E94E81D52 +:10300000023008F182E00E94E81D1DC0112331F05A +:10301000002389F28C2D0E94591515C0002391F2CE +:103020008C2D0E94F8150FC0472D4F706C2DC701D5 +:103030000E948B080E94D01B06C0472D4F706C2D3C +:10304000C7010E944A09DD20F9F00E94DB1D80FDC6 +:103050001BC0F70112820E94D51D0E94CB1CC70124 +:103060000E9453180E94D51D0F90DF91CF911F91A0 +:103070000F91FF90EF90DF90CF90BF90AF909F9017 +:103080008F907F900C94EC1C0F90DF91CF911F914B +:103090000F91FF90EF90DF90CF90BF90AF909F90F7 +:1030A0008F907F9008950F931F93CF93DF93EC0140 +:1030B000888199812B813C81232BB9F09F3F11F4AA +:1030C0008F3F99F0CE010E94A208882371F0688199 +:1030D00079818A810E94D11D8C010E94861D0E94E7 +:1030E0004D1CB801CE010E942E16DF91CF911F9189 +:1030F0000F9108950E945F1E0E946F1E0E94341E51 +:103100000E94891E0E944F240E941C2380E090E0B0 +:103110000E94411480E090E00C9457140E944F1ECE +:103120000C947A180E94C61D292F22952F7030E02A +:103130002C3031054CF42A3031056CF42250310921 +:1031400022303105A8F407C02C30310569F02F304A +:10315000310551F00DC0803F69F018F4803E40F415 +:1031600009C0843F29F406C093FB882780F908959D +:1031700080E0089581E00895CF93DF9300D000D0E0 +:103180001F92CDB7DEB70F900F900F900F900F905A +:10319000DF91CF910895CF93DF9300D000D000D07E +:1031A000CDB7DEB726960FB6F894DEBF0FBECDBF03 +:1031B000DF91CF9108951F93CF93DF93C091740156 +:1031C00016E080917501C81799F0D0E01C9FF001BE +:1031D0001D9FF00D1124EA58FE4F408151816281FC +:1031E0007381848195810E94CB182196C770E9CFA5 +:1031F000DF91CF911F9108954091A6015091A701B1 +:103200006091A8017091A9018091AA019091AB01F0 +:103210000C94CB188091AB0182958F7009F054C04B +:103220008091A801882309F44FC080917401A09176 +:1032300075016091A6017091A7014091A90150917B +:10324000AA01B6E08A1709F43FC090E04115510584 +:10325000C1F17F3F11F46F3FA1F1B89FF001B99F19 +:10326000F00D1124EA58FE4F218172132AC02081EB +:10327000621327C02281211124C0238134812417A5 +:10328000350710F421503109241B350B283C31053A +:10329000C0F42091AB012F7020612093AB0126E098 +:1032A000289FF001299FF00D1124E558FE4F8081E1 +:1032B0008F708061808386EA91E00E9453180C949D +:1032C000DB1801968770BECF0895CF92DF92EF9200 +:1032D000FF920F931F93CF93DF93CDB7DEB7629723 +:1032E0000FB6F894DEBF0FBECDBF8C0185E0F801AC +:1032F000DE011D9601900D928A95E1F7D8014C915F +:1033000011965C91119712966C9112971396CD902D +:10331000DC9014973091A6017091A7018091A901CA +:103320009091AA01009709F46BC17F3F19F43F3FC8 +:1033300009F466C1E090A801EE2009F4C0C0209114 +:10334000AB01C816D90628F0F601E81BF90BCF012E +:1033500004C0809590958C0D9D1DFF24F394883CAE +:10336000910578F0F12C207F09F0C6C07C2DD98A18 +:10337000C88A89890E94BC1886EA91E00E94531885 +:10338000B1C0822F807F09F046C0751314C034137A +:1033900012C0611110C02F7020612093AB010E94F8 +:1033A000FC1886EA91E00E9453188091AB01D80185 +:1033B00015968C932EC0CD2819F15F3F11F44F3F25 +:1033C000F9F0F62E61111CC08091740120917501F5 +:1033D00036E0821709F45AC090E0389FF001399F17 +:1033E000F00D1124EA58FE4F7181571306C0708109 +:1033F000471303C07281711103C001968770E9CF32 +:10340000F62E662309F418C18091AB018160809388 +:10341000AB01F12C11C1751308C0341306C0611142 +:1034200004C08091AB01D801C3C04D875E878D85F4 +:103430009E856A8B0E9492186A898823E1F166232F +:10344000D1F12091AB01822F82958F7090E002978D +:1034500074F08091A6019091A70198878F831986B7 +:10346000DB86CA862C87CE0107960E94531886E019 +:10347000F801A6EAB1E001900D928A95E1F70E9469 +:103480000A190E94FC18FF24F394D6C04D875E876A +:103490008D859E850E94C61D292F22952F7030E0B4 +:1034A000223031050CF0BCC09F7009F0B6C0805EC0 +:1034B000883008F4C1C0C8010E945318E4CFC81670 +:1034C000D90608F453C0F601E81BF90BCF01883C7C +:1034D000910508F450C0F12C7C2DD98AC88A8989BD +:1034E0000E94BC18E6EAF1E086E0DF011D928A95B1 +:1034F000E9F70E94FC18A0C0751314C0341312C061 +:10350000611110C08091AB01F8018583C8010E9450 +:10351000531886E0E6EAF1E0DF011D928A95E9F7AB +:10352000FE2C8AC04D875E878D859E856A8B0E94A2 +:1035300092186A89882309F4BECF662309F4BBCFA9 +:103540002091AB01822F82958F7090E002970CF44E +:103550008ECF8091A6019091A7019A8389831B82C7 +:10356000DD82CC822E83CE0101967FCF809590950F +:103570008C0D9D1DACCFF62E662309F49CCF7513E0 +:103580002EC034132CC02091AB0120FD1FC0822F10 +:1035900082958F70D9F0D80115962C9315978F309E +:1035A00049F08F5F982F9295907F822F8F70892B93 +:1035B00015968C93C8010E94531886E0F801A6EA7C +:1035C000B1E001900D928A95E1F793CF86E0F80182 +:1035D000A6EAB1E001900D928A95E1F72DC04D87E2 +:1035E0005E878D859E850E949218811140CF8091C3 +:1035F000AB0181608093AB01C8010E9453181CC0CD +:10360000662309F458CF4D875E878D859E850E947D +:103610009218882309F44FCF2ACF811148CF0CC0CC +:10362000243031050CF047CF9F7009F440CFF801EA +:103630009581907F09F03BCF8F2D62960FB6F8945D +:10364000DEBF0FBECDBFDF91CF911F910F91FF90D5 +:10365000EF90DF90CF9008951F93CF93DF93CDB776 +:10366000DEB72C970FB6F894DEBF0FBECDBF4F83E9 +:10367000588769877A878B879C87CE0107960E9437 +:103680006519882369F08F8198852A853B85232BCE +:10369000F1F19F3F09F063C08F3F09F060C037C070 +:1036A00086E0FE013796DE01119601900D928A9513 +:1036B000E1F76F817885EA85FB85309741F17F3F9F +:1036C00011F46F3F21F12091750130E0C90101969D +:1036D000877099274091740150E08417950709F489 +:1036E00047C069837A83FD83EC8396E0929FD00183 +:1036F000939FB00D1124AA58BE4FFE013196019040 +:103700000D929A95E1F7809375010E94DB1816E0FF +:1037100080917401909175018917C1F1189FC001C2 +:1037200011248A589E4F0E946519882379F1E091EF +:1037300074011E9FF0011124EA58FE4F408151810F +:1037400062817381848195810E94CB18809174017C +:1037500090E001968770992780937401D9CF4F81AB +:10376000588569857A858B859C850E94CB18CFCF3B +:103770000E948E181092750110927401E6EAF1E031 +:1037800086E0DF011D928A95E9F7C1CF2C960FB62E +:10379000F894DEBF0FBECDBFDF91CF911F9108958A +:1037A000EF92FF920F931F93CF93DF938C010097BB +:1037B00009F46CC0F12CEE24E394E8012196F801A1 +:1037C0008491843740F4843008F051C0813081F016 +:1037D000823019F15BC0853709F444C0A8F19CE739 +:1037E000980F903708F052C08F770E94F81541C0AB +:1037F0000E5F1F4FFE01C49180E28C0F883048F4A9 +:10380000C7708E2D01C0880FCA95EAF70E94621E0C +:1038100014C08C2F0E9459152DC00E5F1F4FFE0142 +:10382000C49180E28C0F883058F4C7708E2D01C08F +:10383000880FCA95EAF70E94681E0E94891E1AC066 +:103840008C2F0E94F81516C00E5F1F4FFE01C49109 +:10385000CC2381F08FE99FE00197F1F700C00000D1 +:10386000C150F6CF0E5F1F4FFE01F49003C00E94BF +:1038700059158E018F2D882309F49FCFEFE9FFE0C2 +:103880003197F1F700C000008150F5CFDF91CF9163 +:103890001F910F91FF90EF90089508956093B001EC +:1038A0007093B1018093B2019093B3010C947A1894 +:1038B0000F931F930091B0011091B1012091B201BB +:1038C0003091B301DC01CB01802B912BA22BB32BC8 +:1038D0008093B0019093B101A093B201B093B30172 +:1038E0001F910F910C947A180F931F930091B001C0 +:1038F0001091B1012091B2013091B301DC01CB01F3 +:1039000080239123A223B3238093B0019093B1012C +:10391000A093B201B093B3011F910F910C947A1848 +:103920000F931F930091B0011091B1012091B2014A +:103930003091B301DC01CB0180279127A227B32767 +:103940008093B0019093B101A093B201B093B30101 +:103950001F910F910C947A181092AC011092AD0146 +:103960001092AE011092AF010C947A1841E050E031 +:1039700060E070E004C0440F551F661F771F8A95F2 +:10398000D2F74093AC015093AD016093AE017093B8 +:10399000AF010C947A1841E050E060E070E004C0A0 +:1039A000440F551F661F771F8A95D2F78091AC018F +:1039B0009091AD01A091AE01B091AF01482B592B70 +:1039C0006A2B7B2B4093AC015093AD016093AE0109 +:1039D0007093AF010C947A1841E050E060E070E021 +:1039E00004C0440F551F661F771F8A95D2F7409574 +:1039F0005095609570958091AC019091AD01A0912A +:103A0000AE01B091AF01482359236A237B23409331 +:103A1000AC015093AD016093AE017093AF010C9473 +:103A20007A1841E050E060E070E004C0440F551F98 +:103A3000661F771F8A95D2F78091AC019091AD01F6 +:103A4000A091AE01B091AF01482759276A277B2783 +:103A50004093AC015093AD016093AE017093AF0100 +:103A60000C947A180F931F930091AC011091AD0143 +:103A70002091AE013091AF01DC01CB01802B912B65 +:103A8000A22BB32B8093AC019093AD01A093AE0118 +:103A9000B093AF011F910F910C947A180F931F935D +:103AA0000091AC011091AD012091AE013091AF01B8 +:103AB000DC01CB0180239123A223B3238093AC01AB +:103AC0009093AD01A093AE01B093AF011F910F9100 +:103AD0000C947A180F931F930091AC011091AD01D3 +:103AE0002091AE013091AF01DC01CB0180279127FD +:103AF000A227B3278093AC019093AD01A093AE01B0 +:103B0000B093AF011F910F910C947A180895CF9242 +:103B1000DF92EF92FF920F931F93CF93DF938C016D +:103B2000C090B001D090B101E090B201F090B3012B +:103B30008091AC019091AD01A091AE01B091AF0127 +:103B4000C82AD92AEA2AFB2ACFE1D0E0D701C60148 +:103B50000C2E04C0B695A795979587950A94D2F731 +:103B600080FF06C0B8018C2F0E94A70B019721F49B +:103B7000219760F780E001C08C2FDF91CF911F91DA +:103B80000F91FF90EF90DF90CF900895CF93DF9348 +:103B9000EC010E94871DBE010E94A70BDF91CF910F +:103BA0000895CB010E94C61D08958091B4018595AA +:103BB0008595859508958091B4018770089598E062 +:103BC000899F90011124262B2093B4010C94CB1CC7 +:103BD0002091B401809582238093B401982F97702F +:103BE00069F430E0482F552747FD509524173507D5 +:103BF00029F08595859585950C94EC1C08959091F8 +:103C0000B401977081E009F480E0089520910B01E0 +:103C100030910C01F90132969FEF40E05191581715 +:103C200089F09F3F19F4511101C0942F4F5F463026 +:103C3000A9F79F3F39F0F901E90FF11D97FDFA95BA +:103C400082830895089520910B0130910C01F901B0 +:103C50003296285F3F4F9081981301C010823196B1 +:103C6000E217F307C1F7089581E090E0E0910B01BE +:103C7000F0910C01E80FF91F108201968830910530 +:103C8000A9F708959091C001892B8093C0010895F0 +:103C900080959091C00189238093C001089510926E +:103CA000C00108959091BF01892B8093BF010895B1 +:103CB00080959091BF0189238093BF010895109250 +:103CC000BF0108959091BE01892B8093BE01089594 +:103CD00080959091BE0189238093BE010895109232 +:103CE000BE0108958093B50108951092B50108951D +:103CF00080910B0190910C01FC0131969C01285F91 +:103D00003F4F80E0919191118F5FE217F307D1F758 +:103D10000895E0910B01F0910C018091C001808326 +:103D2000E0910B01F0910C0190818091BF01892BF2 +:103D30008083E0910B01F0910C0190818091BE0194 +:103D4000892B80838091B501882361F0E0910B017C +:103D5000F0910C019081892B80830E94781E811143 +:103D60001092B50180910B0190910C010C94ED1310 +:103D70009093330180933201089520E0009739F049 +:103D8000AC0141505109842395232F5FF7CF822F37 +:103D900008958295982F9C7C392F36953695282F3B +:103DA000237344E0249FC0011124932F982B292FC3 +:103DB0002A7A2695892F8575880F822B0895809100 +:103DC000D601843021F11092C20120E488E190E014 +:103DD0000FB6F894A895809360000FBE2093600002 +:103DE00080E00E94450C83B7817F846083BF83B7E6 +:103DF000816083BF7894889583B78E7F83BF88E185 +:103E00000FB6F89480936000109260000FBE089582 +:103E10000E9489080E9469070E948A080E9471080E +:103E200091E0811101C090E0892F08950E948E18C1 +:103E30000E94E1130C94450C1F920F920FB60F9243 +:103E400011248F939F93AF93BF938091C2018111EF +:103E500013C08091C3019091C401A091C501B0919C +:103E6000C6014196A11DB11D8093C3019093C40169 +:103E7000A093C501B093C601BF91AF919F918F915F +:103E80000F900FBE0F901F90189582E084BD93E0B5 +:103E900095BD9AEF97BD80936E0008952FB7F89463 +:103EA0008091C3019091C401A091C501B091C60158 +:103EB0002FBF08952FB7F8946091C3017091C4018A +:103EC0008091C5019091C6012FBF0895CF92DF92D6 +:103ED000EF92FF920F931F932FB7F8944091C30175 +:103EE0005091C4016091C5017091C6012FBF6A0154 +:103EF0007B01EE24FF248C0120E030E0C016D106C7 +:103F0000E206F30610F4415051099A01281B390BBF +:103F1000C9011F910F91FF90EF90DF90CF9008950E +:103F2000CF92DF92EF92FF920F931F932FB7F894E7 +:103F3000C090C301D090C401E090C501F090C601CB +:103F40002FBF97018601061B170B280B390BC616CE +:103F5000D706E806F90618F0C901B80106C0C9017C +:103F6000B80161507109810991091F910F91FF906A +:103F7000EF90DF90CF9008951F920F920FB60F929F +:103F800011248F939F93AF93BF938091C30190911E +:103F9000C401A091C501B091C6010196A11DB11D3A +:103FA0008093C3019093C401A093C501B093C6014F +:103FB000BF91AF919F918F910F900FBE0F901F9067 +:103FC00018950E94DF10F8942FEF87EA91E62150B0 +:103FD00080409040E1F700C0000087E090EBDC01FA +:103FE0008093E0019093E101A093E201B093E3019B +:103FF0009CE088E10FB6F894A895809360000FBE0E +:1040000090936000FFCFEF92FF920F931F93CF9397 +:10401000DF93D82FC7E08C2F0E943C0807E010E008 +:10402000E82EF12CC701002E02C0959587950A94C1 +:10403000E2F780FF09C0602F7C2F80E00E944B09CF +:10404000D81302C081E006C00150110958F7C150D1 +:1040500010F780E0DF91CF911F910F91FF90EF90CB +:104060000895CF93C82F8CE20E940320882321F06B +:104070008C2FCF910C94032080E0CF910895CF93A3 +:104080000E948721811102C00E946D2188E294E084 +:104090000E94A406C5E6C15049F00E9469078FE35B +:1040A0009CE90197F1F700C00000F5CF81E294E0B0 +:1040B0000E94A40689E20E94312081110CC18AE28B +:1040C0000E94312081110E946D2185E00E943120E3 +:1040D00081110E94E11F0E9492218093C10187E01B +:1040E0000E9431208823A9F18BE10E94312088238E +:1040F00051F08091C10181FB222720F991E09227A4 +:1041000090FB81F90EC08EE00E943120882361F07F +:104110008091C10182FB222720F991E0922790FB38 +:1041200082F98093C10115C080E10E9431209091F5 +:10413000C101882341F093FB222720F981E08227E7 +:1041400080FB93F904C0892F809580FB90F99093B0 +:10415000C1018091C1010E9496210E94A4218093F7 +:10416000DF0180EE0E943120882341F08091DF0141 +:10417000982F909590FB80F98093DF0189E30E944E +:104180003120882359F08091DF0181FB222720F91B +:1041900091E0922790FB81F98093DF0182EE0E94EB +:1041A0003120882359F08091DF0182FB222720F9FA +:1041B00091E0922790FB82F98093DF0186EE0E94C6 +:1041C0003120882359F08091DF0183FB222720F9D9 +:1041D00091E0922790FB83F98093DF0183EE0E94A8 +:1041E0003120882359F08091DF0184FB222720F9B8 +:1041F00091E0922790FB84F98093DF0185E30E9490 +:104200003120882359F08091DF0185FB222720F996 +:1042100091E0922790FB85F98093DF0181E30E9472 +:104220003120882359F08091DF0186FB222720F975 +:1042300091E0922790FB86F98093DF0181E10E9453 +:104240003120882359F08091DF0187FB222720F954 +:1042500091E0922790FB87F98093DF018091DF0145 +:104260000E94A82187E20E943120C82F8EE10E947F +:1042700031208111C2608FE10E9431208111C46020 +:1042800080E20E9431208111C86081E20E943120C9 +:104290008111C06182E20E9431208111C06283E2FB +:1042A0000E9431208111C06484E20E943120882361 +:1042B00011F0C06802C0CC2329F08C2F0E949F21EE +:1042C0006C2F03C00E949B21682F70E080E090E07B +:1042D000CF910C944E1CCF9108956DEE7EEF80E04F +:1042E00090E00E94E62A60E082E090E00E94D42AFA +:1042F00060E083E090E00E94D42A60E084E090E0F7 +:104300000E94D42A60E085E090E00C94D42A80E0FA +:1043100090E00E94CE2A21E08D3E9E4F09F020E0E1 +:10432000822F089582E090E00C94C62A682F82E0E4 +:1043300090E00C94D42A83E090E00C94C62A682F75 +:1043400083E090E00C94D42A84E090E00C94C62A98 +:10435000682F84E090E00C94D42A8091C90180FFFA +:104360000BC06091100185E0689FB0011124759524 +:104370006795759567952BC081FF09C06091100105 +:1043800085E0689FB00111247595679520C082FF74 +:1043900007C06091100185E0689FB001112417C02B +:1043A0009091CA019923D1F060910F01961788F777 +:1043B0002091100185E0289F90011124929FA00177 +:1043C000939F500D112470E0CA010E94982A603812 +:1043D000710540F46115710539F002C065E070E0C7 +:1043E000862F08958FE7089581E008958091C9018F +:1043F00080FF08C060910E0170E075956795759516 +:10440000679521C081FF06C060910E0170E075952F +:10441000679519C082FF04C060910E0170E010C062 +:104420009091CA019923C1F060910D019617A0F7F0 +:1044300080910E01899FC001112470E00E94982A8A +:104440006038710528F46115710521F0862F0895F3 +:104450008FE7089581E0089561E070E0F4CF803F38 +:1044600021F40E94AD21819504C0813F29F40E946E +:10447000AD218093CD010895823F21F40E94AD21AA +:10448000819504C0833F29F40E94AD218093CC0123 +:104490000895893F19F40E94F62105C08A3F31F43E +:1044A0000E94F62181958093CE0108958B3F21F4DF +:1044B0000E94F621819504C08C3F29F40E94F621C8 +:1044C0008093CF010895843F21F48091CB018160D6 +:1044D00017C0853F21F48091CB01826011C0863FD7 +:1044E00021F48091CB0184600BC0873F21F480913F +:1044F000CB01886005C0883F31F48091CB01806199 +:104500008093CB0108958D3F21F48091C901816092 +:104510000BC08E3F21F48091C901826005C08F3F9E +:1045200029F48091C90184608093C9010895803F76 +:1045300039F48091CD0187FF6CC01092CD0169C024 +:10454000813F29F48091CD011816BCF362C090918F +:10455000CC01823F29F497FF5CC01092CC0159C076 +:10456000833F19F41916CCF354C0893F41F480916C +:10457000CE0118160CF04DC01092CE014AC08A3FF1 +:1045800029F48091CE0187FF44C0F6CF8B3F39F4E8 +:104590008091CF0187FF3DC01092CF013AC08C3F80 +:1045A00029F48091CF011816BCF333C0843F21F465 +:1045B0008091CB018E7F17C0853F21F48091CB0184 +:1045C0008D7F11C0863F21F48091CB018B7F0BC082 +:1045D000873F21F48091CB01877F05C0883F31F46C +:1045E0008091CB018F7E8093CB0113C08D3F21F44E +:1045F0008091C9018E7F0BC08E3F21F48091C9014B +:104600008D7F05C08F3F29F48091C9018B7F8093F6 +:10461000C9018091CC0181110EC08091CD01811121 +:104620000AC08091CE01811106C08091CF01811115 +:1046300002C01092CA0108958091C10183FF7EC01B +:1046400084E694E00E94A4068091CB011F928F9390 +:104650008FE594E09F938F930E943D078DE594E052 +:104660000E94A4068091CC01282F332727FD309586 +:104670003F938F938AE594E09F938F930E943D0729 +:1046800088E594E00E94A4068091CD01282F33276D +:1046900027FD30953F938F9385E594E09F938F930B +:1046A0000E943D0783E594E00E94A4068091CE011C +:1046B000282F332727FD30953F938F9380E594E093 +:1046C0009F938F930E943D078EE494E00E94A4067E +:1046D0008091CF01282F332727FD30953F938F936B +:1046E0008BE494E09F938F930E943D0788E494E0CD +:1046F0000E94A4068091CA011F928F9385E494E0E2 +:104700009F938F930E943D0783E494E00E94A40648 +:104710008091C9011F928F9380E494E09F938F93BF +:104720000E943D078DE394E00E94A4068DB79EB7DA +:104730004C960FB6F8949EBF0FBE8DBF8BEC91E0E8 +:104740000E9436140E944E1F9093C8018093C701A7 +:1047500008951F93CF93DF938091C7019091C80173 +:104760000E94661FAC019091CA01992321F020910B +:10477000110130E006C0209112018AE0289F9001CB +:1047800011244217530708F486C08091CC01C091D0 +:10479000CD01D091CE011091CF01811107C0C1117F +:1047A00076C0D11174C0111172C075C09F3F19F04D +:1047B0009F5F9093CA01181624F40E94AD21809344 +:1047C000CC018091CC0187FF05C00E94AD2181956D +:1047D0008093CC011C1624F40E94AD218093CD015E +:1047E0008091CD0187FF05C00E94AD218195809306 +:1047F000CD016091CC01662339F1C091CD01CC236C +:1048000019F1772767FD7095872F972F0E949D29B3 +:1048100023E333E343E35FE30E94012A0E946A2912 +:104820006093CC016C2F772767FD7095872F972FAA +:104830000E949D2923E333E343E35FE30E94012ABF +:104840000E946A296093CD011D1624F40E94F6216E +:104850008093CE018091CE0187FF05C00E94F62192 +:1048600081958093CE01111624F40E94F621809345 +:10487000CF018091CF0187FF05C00E94F62181956D +:104880008093CF01DF91CF911F910C941C239F3F08 +:1048900009F08ECF96CFDF91CF911F910895EBEC69 +:1048A000F1E085E0DF011D928A95E9F71092CA01D7 +:1048B0001092C901089587E896E00E94A4061F920D +:1048C00081E08F931F9285E08F9389E396E09F9319 +:1048D0008F930E943D070F900F900F900F900F90B5 +:1048E0000F9008958330E9F128F4813061F082302F +:1048F00009F10895853009F462C008F449C0863092 +:1049000009F474C0089580911201262F30E0280F19 +:10491000311D2F3F310524F4680F6093120103C04D +:104920008FEF80931201809112011F928F9382E783 +:1049300095E072C080911101262F30E0280F311DC3 +:104940002F3F310524F4680F6093110103C08FEFEE +:1049500080931101809111011F928F9380E695E061 +:104960005BC080911001262F30E0280F311D2F3FB2 +:10497000310524F4680F6093100103C08FEF80931A +:104980001001809110011F928F938DE495E044C037 +:1049900080910F01262F30E0280F311D2F3F310568 +:1049A00024F4680F60930F0103C08FEF80930F0111 +:1049B00080910F011F928F9388E395E02DC0809125 +:1049C0000E01262F30E0280F311D2F3F310524F432 +:1049D000680F60930E0103C08FEF80930E018091EA +:1049E0000E011F928F938FE195E016C080910D010B +:1049F000262F30E0280F311D2F3F310524F4680F9A +:104A000060930D0103C08FEF80930D0180910D0124 +:104A10001F928F9384E095E09F938F930E943D07B0 +:104A20000F900F900F900F900895833081F128F42C +:104A3000813059F08230D1F00895853009F449C0B1 +:104A4000B8F1863009F456C00895809112016817B4 +:104A500020F4861B8093120102C0109212018091F3 +:104A600012011F928F9385EF94E054C08091110141 +:104A7000681720F4861B8093110102C01092110167 +:104A8000809111011F928F9383EE94E043C0809137 +:104A90001001681720F4861B8093100102C0109249 +:104AA0001001809110011F928F9380ED94E032C02D +:104AB00080910F01681720F4861B80930F0102C0BC +:104AC00010920F0180910F011F928F938BEB94E056 +:104AD00021C080910E01681720F4861B80930E017F +:104AE00002C010920E0180910E011F928F9382EAF4 +:104AF00094E010C080910D01681720F4861B80930C +:104B00000D0102C010920D0180910D011F928F9333 +:104B100087E894E09F938F930E943D070F900F903A +:104B20000F900F900895CF93C82F1F928F938CE80A +:104B300097E09F938F930E943D0781E090E0A0E073 +:104B4000B0E0BC01CD0104C0660F771F881F991F1C +:104B5000CA95D2F70E944E1C0F900F900F900F90A5 +:104B6000CF910C948E18CF938732B0F58E3108F028 +:104B70004AC28E3009F4C4C100F5873009F48DC1F2 +:104B8000A8F4863009F045C28091C101817F8E7FF3 +:104B90008093C1018BEF98E00E94A40684E99CE019 +:104BA0000E94A40681E08093D10175C1883009F488 +:104BB0003FC08B3009F46BC12CC2863109F4E6C1C9 +:104BC00020F4803109F4B0C124C2893109F4C7C18D +:104BD0008B3109F481C11DC2883309F458C150F4E6 +:104BE000893209F412C2853309F40FC2873209F4FD +:104BF0000CC20FC2833409F408C228F48A3308F4C3 +:104C000008C2895303C2883409F003C20E948E1877 +:104C100088E79CE00E94A4069FEF23ED80E391507B +:104C200020408040E1F700C000000E94E11F33C136 +:104C300088E99CE00E94A4068AEF9BE00E94A406FB +:104C40000E949B211F928F9387EF9BE09F938F93EE +:104C50000E943D0785EF9BE00E94A4060E949221DE +:104C6000C82F82EE9BE00E94A4061F92CF938DED89 +:104C70009BE09F938F930E943D078BED9BE00E94EA +:104C8000A40681ED9BE00E94A4068C2F81701F92E8 +:104C90008F938EEC9BE09F938F930E943D078CEC4B +:104CA0009BE00E94A40682EC9BE00E94A406C1FB4C +:104CB000882780F91F928F938FEB9BE09F938F93B0 +:104CC0000E943D078DEB9BE00E94A40681EB9BE0D8 +:104CD0000E94A406C2FB882780F91F928F938EEA58 +:104CE0009BE09F938F930E943D078CEA9BE00E947C +:104CF000A40683EA9BE00E94A406C3FBCC27C0F96C +:104D00001F92CF9380EA9BE09F938F930E943D0771 +:104D10008EE99BE00E94A4060E94A421C82F8AE885 +:104D20009BE00E94A4061F92CF9385E89BE09F938F +:104D30008F930E943D0783E89BE00E94A4068AE6C9 +:104D40009BE00E94A4068C2F81701F928F9387E6B0 +:104D50009BE09F938F930E943D078DB79EB78096EF +:104D60000FB6F8949EBF0FBE8DBF85E69BE00E94F4 +:104D7000A4068EE49BE00E94A406C1FB882780F96C +:104D80001F928F938BE49BE09F938F930E943D072C +:104D900089E49BE00E94A40687E39BE00E94A406AE +:104DA000C2FB882780F91F928F9384E39BE09F9337 +:104DB0008F930E943D0782E39BE00E94A40680E25D +:104DC0009BE00E94A406C3FB882780F91F928F9363 +:104DD0008DE19BE09F938F930E943D078BE19BE0C9 +:104DE0000E94A40681E19BE00E94A406C4FB8827E0 +:104DF00080F91F928F938EE09BE09F938F930E9488 +:104E00003D078CE09BE00E94A4068AEF9AE00E9496 +:104E1000A406C5FB882780F91F928F9387EF9AE03D +:104E20009F938F930E943D0785EF9AE00E94A4060E +:104E300089ED9AE00E94A406C6FB882780F91F929C +:104E40008F9386ED9AE09F938F930E943D0784EDA8 +:104E50009AE00E94A4068CEC9AE00E94A406C7FB8C +:104E6000CC27C0F91F92CF9389EC9AE09F938F9340 +:104E70000E943D0787EC9AE00E94A4068DB79EB77A +:104E80004C960FB6F8949EBF0FBE8DBF04C082E251 +:104E900099E00E94A406C1E0C1C08091C101C82F61 +:104EA000C095C170C0FB80F98093C101CC2349F04B +:104EB0008CE69CE00E94A4068091C1018660886017 +:104EC00048C08FE59CE00E94A4068091C101897FC3 +:104ED000877F8093C101DFCF9091C10191FBCC27E7 +:104EE000C0F981E0C827892FC0FB81F98093C101F7 +:104EF000CC2319F082E59CE027C084E49CE0C9CF74 +:104F00009091C10192FBCC27C0F981E0C827892F7D +:104F1000C0FB82F98093C101CC2319F085E39CE0AA +:104F200013C085E29CE0B5CF9091C10193FBCC27E3 +:104F3000C0F981E0C827892FC0FB83F98093C101A4 +:104F4000CC2351F089E19CE00E94A4068091C1012C +:104F500081608093C10162C08CE09CE09ACF8CEEAE +:104F600098E00E94A40684EC98E00E94A4068EE8D3 +:104F700098E00E94A40681E698E00E94A40682E2DE +:104F800098E00E94A40687EF97E083CF89EE97E030 +:104F90000E94A4060E94E1131F928F938FEC97E06A +:104FA0009F938F930E943D0780910A011F928F93D8 +:104FB00088EB97E09F938F930E943D078091640157 +:104FC0001F928F9385EA97E09F938F930E943D07EE +:104FD0008091C3019091C401A091C501B091C60117 +:104FE000BF93AF939F938F9381E997E09F938F93A4 +:104FF0000E943D078DB79EB742960FB6F8949EBFAC +:105000000FBE8DBF48CF8D5101C080E00E94932517 +:1050100042CF8AE09CE00E94A406C0E08C2FCF9192 +:10502000089580E0089580E00895CF93C82F80917F +:10503000D101813071F020F0823009F44BC042C1BF +:10504000E0910B01F0910C018081823209F03CC1AA +:1050500007C0E0910B01F0910C018081823261F474 +:105060008C2F0E941128811104C08C2F0E94B3251F +:105070002FC081E090E02CC08C2F0E94132881115A +:1050800026C0C431E1F070F4CB3081F0C031D1F4EE +:105090000E945B2484E897E00E94A40682E080934B +:1050A000D10115C0C93259F0C83361F48BEF98E0D3 +:1050B0000E94A40688E897E00E94A40608C0109207 +:1050C000D10104C182E897E00E94A406FFC081E0FC +:1050D0008170FEC0C43228F5CE3108F0C1C0CB309B +:1050E000A1F1D0F4C73009F0D3C08EE18093120152 +:1050F00082E3809311018AE08093100184E1809320 +:105100000F0188E080930E0188E280930D0188E210 +:1051100096E00E94A406BFC0C33149F1C431C1F07A +:10512000B7C0CB3409F4A9C028F4C93289F0C83318 +:1051300061F0AEC0C13509F49EC0C23509F499C012 +:10514000CE3409F0A5C06AE09EC00E945B24A3C0D3 +:105150008091D001882319F01092D0019CC085E382 +:1051600096E00E94A40681E08093D101B1C08FE057 +:1051700096E00E94A4068DEF95E00E94A40680911F +:1051800012011F928F938AEF95E09F938F930E9455 +:105190003D0788EF95E00E94A40686EE95E00E9408 +:1051A000A406809111011F928F9383EE95E09F9347 +:1051B0008F930E943D0781EE95E00E94A40682ED48 +:1051C00095E00E94A406809110011F928F938FECAE +:1051D00095E09F938F930E943D078DEC95E00E9490 +:1051E000A4068CEB95E00E94A40680910F011F920B +:1051F0008F9389EB95E09F938F930E943D0787EBF8 +:1052000095E00E94A40682EA95E00E94A40680919F +:105210000E011F928F938FE995E09F938F930E94C9 +:105220003D078DE995E00E94A40686E895E00E947E +:10523000A40680910D011F928F9383E895E09F93C0 +:105240008F930E943D0781E895E00E94A4068DB7E8 +:105250009EB748960FB6F8949EBF0FBE8DBF1BC079 +:10526000CE51EC2FF0E0E95DFE4F80818093D001BC +:1052700012C061E003C061E006C06AE08091D00125 +:105280000E94722408C08091D0010E94152503C09D +:1052900086E296E013C08091D001882369F01F92C6 +:1052A0008F9380E296E09F938F930E943D070F902B +:1052B0000F900F900F9004C08DE196E00E94A4061D +:1052C00081E006C01092D10180E002C080E000CFF2 +:1052D000CF91089504D06894B1118DC0089570D015 +:1052E00088F09F5790F0B92F9927B751A0F0D1F0CF +:1052F000660F771F881F991F1AF0BA95C9F712C059 +:10530000B13081F077D0B1E0089574C0672F782F65 +:105310008827B85F39F0B93FCCF3869577956795C4 +:10532000B395D9F73EF490958095709561957F4F30 +:105330008F4F9F4F0895E89409C097FB3EF49095D6 +:105340008095709561957F4F8F4F9F4F9923A9F05E +:10535000F92F96E9BB279395F695879577956795ED +:10536000B795F111F8CFFAF4BB0F11F460FF1BC031 +:105370006F5F7F4F8F4F9F4F16C0882311F096E9C4 +:1053800011C0772321F09EE8872F762F05C0662372 +:1053900071F096E8862F70E060E02AF09A95660F2B +:1053A000771F881FDAF7880F9695879597F90895E4 +:1053B00057FD9058440F551F59F05F3F71F04795C6 +:1053C000880F97FB991F61F09F3F79F087950895AB +:1053D000121613061406551FF2CF4695F1DF08C0CA +:1053E000161617061806991FF1CF869571056105E7 +:1053F00008940895E894BB2766277727CB0197F98F +:1054000008950BD078C069D028F06ED018F095239D +:1054100009F05AC05FC01124EECFCADFA0F3959FF8 +:10542000D1F3950F50E0551F629FF001729FBB278B +:10543000F00DB11D639FAA27F00DB11DAA1F649F37 +:105440006627B00DA11D661F829F2227B00DA11DEA +:10545000621F739FB00DA11D621F839FA00D611D70 +:10546000221F749F3327A00D611D231F849F600D91 +:10547000211D822F762F6A2F11249F5750408AF0CA +:10548000E1F088234AF0EE0FFF1FBB1F661F771F56 +:10549000881F91505040A9F79E3F510570F014C0ED +:1054A000AACF5F3FECF3983EDCF38695779567953E +:1054B000B795F795E7959F5FC1F7FE2B880F911D74 +:1054C0009695879597F9089597F99F6780E870E01A +:1054D00060E008959FEF80EC089500240A9416166A +:1054E000170618060906089500240A9412161306D2 +:1054F000140605060895092E0394000C11F4882360 +:1055000052F0BB0F40F4BF2B11F460FF04C06F5F7B +:105510007F4F8F4F9F4F0895991B79E004C0991FCB +:10552000961708F0961B881F7A95C9F780950895FD +:1055300097FB072E16F4009407D077FD09D00E9440 +:10554000B22A07FC05D03EF4909581959F4F0895AF +:10555000709561957F4F0895EE0FFF1F0590F491B0 +:10556000E02D0994AA1BBB1B51E107C0AA1FBB1F5A +:10557000A617B70710F0A61BB70B881F991F5A95DF +:10558000A9F780959095BC01CD010895F999FECFBA +:1055900092BD81BDF89A992780B50895A8E1B0E041 +:1055A00042E050E00C94EE2A262FF999FECF92BDEE +:1055B00081BDF89A019700B4021639F01FBA20BDD8 +:1055C0000FB6F894FA9AF99A0FBE08950196272F0C +:1055D0000E94D52A0C94D42ADC01CB01FC01F99954 +:1055E000FECF06C0F2BDE1BDF89A319600B40D922F +:0C55F00041505040B8F70895F894FFCFE8 +:1055FC00470C380D150DE10CAD0C01B60128081443 +:10560C000A321E3F4D3620AF0362032C030C039865 +:10561C0002B102CA02E302010203040506070809EB +:02562C0000007C +:00000001FF diff --git a/keyboards/hhkb/keymaps/default/keymap.c b/keyboards/hhkb/keymaps/default/keymap.c new file mode 100644 index 000000000..bd5dd8372 --- /dev/null +++ b/keyboards/hhkb/keymaps/default/keymap.c @@ -0,0 +1,78 @@ +/* -*- eval: (turn-on-orgtbl); -*- + * default HHKB Layout + */ +#include "hhkb.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/keyboards/hhkb/keymaps/lxol/compiled.hex b/keyboards/hhkb/keymaps/lxol/compiled.hex new file mode 100644 index 000000000..63d3691c4 --- /dev/null +++ b/keyboards/hhkb/keymaps/lxol/compiled.hex @@ -0,0 +1,1421 @@ +:100000000C9493070C94D7070C94D7070C94D7073C +:100010000C94D7070C94D7070C94D7070C94D707E8 +:100020000C94D7070C94D7070C949B120C946D1367 +:100030000C945D200C94D7070C94D7070C94D70729 +:100040000C94D7070C94D7070C94D7070C94D707B8 +:100050000C94D7070C94FD200C94D7070C94D70769 +:100060000C94D7070C94D7070C94D7070C94D70798 +:100070000C94D7070C94D7070C94D7070C94D70788 +:100080000C94D7070C94D7070C94D7070C94D70778 +:100090000C94D7070C94D7070C94D7070C94D70768 +:1000A0000C94D7070C94D7070C94D707DA13FC13DA +:1000B000EA14FC13EA1441146414EA14B914CC14BD +:1000C000A617A617D517D51714183418641964196C +:1000D0003F186419EF18EF185519641964195E195F +:1000E000FC18FC18FC18FC18FC18FC18FC18FC1870 +:1000F000FC18FC18FC18FC18FC18FC18FC18FC1860 +:100100000C191A19211928193219253032583A2098 +:10011000253038620A000A722F63203031323334BE +:100120003536370A0028311F0014001A001644041F +:10013000461D001B000600200021001500080007D6 +:1001400000090019000500220023001C0017000A06 +:10015000000B00110000001E0029002B00E000E150 +:1001600000E200E3002C002400250018000C000E23 +:10017000000D0010000000310035002A00C0000210 +:1001800052E500E600E700260027001200130033C6 +:10019000450F43360000002D002E0030002F0034A4 +:1001A000003800370000001F0014001A0016460433 +:1001B000441D001B00060020002100150008000758 +:1001C00000090019000500220023001C0017000A86 +:1001D000000B00110000001E0029002B00E000E1D0 +:1001E00000E700E6002C002400250018000C000E9B +:1001F000000D0010000000310035002A00C0000290 +:1002000052E500E700E60026002700120013003345 +:10021000430F45360000002D002E0030002F003423 +:10022000003800370000003B0001000100A900AACF +:10023000000100010001003C003D0001000100A898 +:10024000000100010001003E003F0001000100012B +:10025000005500570000003A00A5003900010001D8 +:100260000001000100010040004100010046004A79 +:100270000054005600000049004C002A00580001BC +:100280000001000100010042004300470048005007 +:10029000004B004D00000044004500010052004F9B +:1002A0000051004E0000001F1814181A18161804E8 +:1002B000181D181B180618201821181518081807DB +:1002C00018091819180518221823181C1817180AC5 +:1002D000180B18111800001E1829182B18E018E127 +:1002E00018E200E3002C182418251818180C180E12 +:1002F000180D1810180000311835182A18C0000100 +:1003000000E518E600E70026182718121813180150 +:10031000000100361800002D182E1830182F183440 +:10032000183818371800001F0814081A08010001AF +:10033000001D081B080608200821081508080807E2 +:1003400008090819080508220823081C0817080AC4 +:10035000080B08110800001E0829082B08E008E116 +:1003600000E200E3002C082408250818080C080EF9 +:10037000080D0810080000310835082A08C00001DF +:1003800000E500E600E300260827081208130833FA +:10039000080F08360800002D082E0830082F0834F2 +:1003A000083808370800001F1414141A141614040F +:1003B000141D141B140614201421141514081407FA +:1003C00014091419140514221423141C1417140AE4 +:1003D000140B14111400001E1429142B14E014E142 +:1003E00014E200E3002C142414251418140C140E29 +:1003F000140D1410140000311435142A14C0000117 +:1004000000E514E600E70026142714121413140163 +:10041000000100361400002D142E1430142F143453 +:10042000143814371400001F0414041A04010001C6 +:10043000001D041B040604200421041504080407FD +:1004400004090419040504220423041C0417040AE3 +:10045000040B04110400001E0429042B04E004E131 +:1004600000E200E3002C042404250418040C040E0C +:10047000040D0410040000310435042A04C00001F6 +:1004800000E500E600E30026042704120413043309 +:10049000040F04360400002D042E0430042F04340D +:1004A000043804370400000A44454255473A2065A1 +:1004B0006E61626C65642E0A005B735D004B65794A +:1004C000626F6172642073746172742E0A005B57EC +:1004D0005D005B535D005B525D005B445D005B4310 +:1004E0005D001203480048004B00420020006D00F0 +:1004F0006F00640000000C0371002E006D002E00E0 +:100500006B0000000403090409027400040100A048 +:10051000FA09040000010301010009211101000191 +:10052000223F000705810308000A090401000103B6 +:10053000010200092111010001224D00070582037B +:1005400008000A090402000103000000092111014A +:1005500000012236000705830308000A090403008E +:1005600002030000000921110100012220000705FB +:10057000840320000107050403200001120110017B +:1005800000000008EDFEFECA040101020001063170 +:10059000FF0974A1010975150025FF9520750881D3 +:1005A000020976150025FF952075089102C0050106 +:1005B0000980A101850216010026B7001A01002A50 +:1005C000B700751095018100C0050C0901A10185D6 +:1005D00003160100269C021A01002A9C0275109540 +:1005E000018100C005010902A1010901A10005095D +:1005F000190129051500250195057501810295014F +:10060000750381010501093009311581257F9502A6 +:100610007508810609381581257F950175088106C1 +:10062000050C0A38021581257F950175088106C0E1 +:10063000C005010906A101050719E029E7150025F4 +:100640000195087501810295017508810105081958 +:100650000129059505750191029501750391010523 +:1006600007190029FF150025FF950675088100C0B0 +:100670000A002530325820006B6579626F61726420 +:100680005F7265706F72743A20004B6579626F61BA +:100690007264204C4544732073746174653A20255C +:1006A000780A00646F6E652E0A00626F6F676D6175 +:1006B000676963207363616E3A202E2E2E20002915 +:1006C0000A002575002F002575005D2800256400AF +:1006D0002000256400200025640020002564007CA3 +:1006E0000025303258006D6F7573656B6579205B3E +:1006F00062746E7C782079207620685D287265703F +:100700002F61636C293A205B006D6B5F77686565CC +:100710006C5F74696D655F746F5F6D6178203D20FB +:1007200025640A006D6B5F776865656C5F6D617845 +:100730005F7370656564203D2025640A006D6B5F02 +:1007400074696D655F746F5F6D6178203D2025640D +:100750000A006D6B5F6D61785F7370656564203D45 +:100760002025640A006D6B5F696E74657276616C3A +:10077000203D2025640A006D6B5F64656C61792003 +:100780003D2025640A006D6B5F776865656C5F745A +:10079000696D655F746F5F6D6178203D2025640A27 +:1007A000006D6B5F776865656C5F6D61785F737016 +:1007B000656564203D2025640A006D6B5F74696D7A +:1007C000655F746F5F6D6178203D2025640A006D60 +:1007D0006B5F6D61785F7370656564203D20256493 +:1007E0000A006D6B5F696E74657276616C203D20E6 +:1007F00025640A006D6B5F64656C6179203D20257E +:10080000640A000A00257500363A20776865656C31 +:100810005F74696D655F746F5F6D61783A20000A7F +:1008200000257500353A20776865656C5F6D6178E5 +:100830005F73706565643A20000A00257500343ADC +:100840002074696D655F746F5F6D61783A20000A8E +:1008500000257500333A206D61785F7370656564BB +:100860003A20000A00257500323A20696E746572DC +:1008700076616C286D73293A20000A0025750031D5 +:100880003A2064656C6179282A31306D73293A20E9 +:10089000000A092D2056616C756573202D0A004DE4 +:1008A0003E004D25643E20003F0073657420646562 +:1008B0006661756C740A00433E2000776865726556 +:1008C0002064656C74613A20637572736F723D25A4 +:1008D000642C20776865656C3D25640A5365652046 +:1008E000687474703A2F2F656E2E77696B69706526 +:1008F0006469612E6F72672F77696B692F4D6F7511 +:1009000073655F6B6579730A000A092D204D6F7559 +:1009100073656B6579202D0A4553432F713A097130 +:100920007569740A313A0964656C6179282A313035 +:100930006D73290A323A09696E74657276616C28A2 +:100940006D73290A333A096D61785F737065656468 +:100950000A343A0974696D655F746F5F6D61780A76 +:10096000353A09776865656C5F6D61785F737065AE +:1009700065640A363A09776865656C5F74696D6508 +:100980005F746F5F6D61780A0A703A097072696E00 +:10099000742076616C7565730A643A097365742016 +:1009A00064656661756C74730A75703A092B310A57 +:1009B000646F776E3A092D310A706775703A092BAA +:1009C00031300A7067646F776E3A092D31300A0A48 +:1009D0007370656564203D2064656C7461202A2015 +:1009E0006D61785F7370656564202A202872657078 +:1009F000656174202F2074696D655F746F5F6D6130 +:100A000078290A003F004D3E2000433E20004C253F +:100A1000640A0074696D65725F636F756E743A2065 +:100A20002530346C580A006B6579626F6172645FBF +:100A300069646C653A2025580A006B6579626F61BC +:100A400072645F70726F746F636F6C3A2025580A1E +:100A500000686F73745F6B6579626F6172645F6C5D +:100A600065647328293A2025580A000A092D205365 +:100A70007461747573202D0A004743433A20342E65 +:100A8000392E32204156522D4C4942433A20312EC4 +:100A9000382E31204156525F415243483A20617608 +:100AA00072350A004F5054494F4E533A204C554628 +:100AB0004120424F4F544D41474943204D4F5553DC +:100AC000454B45592045585452414B455920434FB9 +:100AD0004E534F4C4520434F4D4D414E44203531F0 +:100AE000320A004255494C443A2031363731386594 +:100AF000662D6469727479202832333A33393A3476 +:100B000039204A756E2020392032303136290A00CA +:100B10005649443A2030784645454428712E6D2E7A +:100B20006B29205049443A203078434146452848B3 +:100B3000484B42206D6F6429205645523A20307848 +:100B4000303130340A00444553433A20712E6D2E23 +:100B50006B206B6579626F617264206669726D7774 +:100B600061726520666F722048484B420A000A098C +:100B70002D2056657273696F6E202D0A000A092DAB +:100B800020436F6E736F6C65202D0A4553432F71A0 +:100B90003A09717569740A6D3A096D6F7573656B01 +:100BA00065790A000A092D204D61676963202D0AC5 +:100BB000443A094465627567204D657373616765E2 +:100BC00020546F67676C650A583A094D6174726901 +:100BD00078204465627567204D6F646520546F67A7 +:100BE000676C65202D2053686F77206B6579707274 +:100BF000657373657320696E206D61747269782006 +:100C0000677269640A4B3A094B6579626F61726475 +:100C100020446562756720546F67676C65202D20DE +:100C200053686F77206B6579707265737320726596 +:100C3000706F72740A4D3A094465627567204D6F92 +:100C400075736520546F67676C650A563A09566577 +:100C50007273696F6E0A533A095374617475730A3B +:100C6000433A09416374697661746520436F6E731A +:100C70006F6C65204D6F64650A46312D4631303A00 +:100C80000953776974636820746F204C61796572C9 +:100C900020302D392028463130203D204C30290A83 +:100CA000302D393A0953776974636820746F204C8A +:100CB0006179657220302D390A4553433A095377DB +:100CC0006974636820746F204C61796572203020EC +:100CD00028616C7465726E617465206B6579203172 +:100CE000290A47524156453A095377697463682087 +:100CF000746F204C6179657220302028616C7465B6 +:100D0000726E617465206B65792032290A504155F5 +:100D100053453A094A756D7020746F20426F6F74A5 +:100D20006C6F6164657220285265736574290A4589 +:100D30003A095072696E7420454550524F4D205308 +:100D4000657474696E67730A000A002575002E6E5B +:100D50006B726F3A20000A002575002E7377617060 +:100D60005F6261636B736C6173685F6261636B7315 +:100D7000706163653A20000A002575002E73776163 +:100D8000705F67726176655F6573633A20000A0081 +:100D90002575002E6E6F5F6775693A20000A002581 +:100DA00075002E737761705F72616C745F72677526 +:100DB000693A20000A002575002E737761705F6C18 +:100DC000616C745F6C6775693A20000A00257500D4 +:100DD0002E636170736C6F636B5F746F5F636F6EB4 +:100DE00074726F6C3A20000A002575002E737761CB +:100DF000705F636F6E74726F6C5F636170736C6F42 +:100E0000636B3A20000A0025303258006B65796D1B +:100E100061705F636F6E6669672E7261773A20005A +:100E20000A002575002E6D6F7573653A20000A0063 +:100E30002575002E6B6579626F6172643A20000A35 +:100E4000002575002E6D61747269783A20000A00E1 +:100E50002575002E656E61626C653A20000A0025DA +:100E60003032580064656275675F636F6E666967EC +:100E70002E7261773A20000A00257500646566616C +:100E8000756C745F6C617965723A20003F000A6D81 +:100E90006F7573653A206F66660A000A6D6F757329 +:100EA000653A206F6E0A000A6B6579626F61726441 +:100EB0003A206F66660A000A6B6579626F61726438 +:100EC0003A206F6E0A000A6D61747269783A206F79 +:100ED00066660A000A6D61747269783A206F6E0A5C +:100EE000000A64656275673A206F66660A000A64E4 +:100EF000656275673A206F6E0A000A0A4A756D705E +:100F0000696E6720746F20626F6F746C6F616465C7 +:100F1000722E2E2E2000433E20006565636F6E66A4 +:100F200069673A0A000011241FBECFEFDAE0DEBF86 +:100F3000CDBF04B603FE24C08091E0019091E10191 +:100F4000A091E201B091E3018730904BA740B04BF4 +:100F5000B9F41092E0011092E1011092E2011092B6 +:100F6000E30114BE84B7877F84BF88E10FB6F8948D +:100F700080936000109260000FBEE0E0FFE30995EF +:100F800011E0A0E0B1E0EEE7F8E502C005900D92B7 +:100F9000A233B107D9F711E0A2E3B1E001C01D927D +:100FA000A03EB107E1F70E94D50F0C943D2C0C94A4 +:100FB0000000FF93EF93E0913201F09133013097FD +:100FC00009F00995EF91FF910895FC01859180301A +:100FD00011F0EFDFFBCF0895FF27E0E230E247FF9B +:100FE0000CC0419597FF09C0EDE260957095809522 +:100FF0009095611D711D811D911D27FF02C02195D6 +:1010000030E350E2AA27660F771F881F991FAA1F97 +:10101000A41710F0A41B63955A95A9F7AA3008F0FD +:10102000A95FA05DAF93F3956115710581059105E9 +:1010300041F7ED3211F4EF93F395F21718F43F9363 +:10104000F395FBCF8F91B5DFFA95E1F70895E9911C +:10105000F9918591803021F0853219F0AADFF9CF1E +:10106000089520E0E89455915532C1F3503311F4BE +:10107000689455915A3348F4505390F3220F022E3E +:10108000220F220F200D250FF4CF0EF42195899108 +:101090009991533619F3533729F1533559F1BC015E +:1010A00088279927E8945C3621F48991999168946E +:1010B0005591543639F446EF7EF077FF0DC08FEF2F +:1010C0009FEF0AC055374AE039F0583540E121F02A +:1010D000523642E009F00895FF93EF937DDFEF91E0 +:1010E000FF91B7CFFF93EF93FC0181918030B9F36B +:1010F00060DFFBCFFF93EF9368DFF1CFDF93CF93F8 +:10110000CDB7DEB72596A3DFCF91DF9108958FEF9E +:1011100084B980E485B957985F9A2E9A2F98ECE3AA +:10112000F1E088E08E0F11928E13FDCFE4E3F1E041 +:1011300088E08E0F11928E13FDCF8CE391E0909397 +:1011400047018093460184E391E0909345018093A9 +:1011500044010895EF92FF920F931F93CF93DF9373 +:1011600080914401909145012091460130914701C1 +:1011700030934501209344019093470180934601A9 +:10118000C0E0D0E0EE24E394F12C0FEF10E020E07B +:1011900030E085B1807C8C2BA90193E0440F551F72 +:1011A0009A95E1F7842B85B98AE18A95F1F700C019 +:1011B000E0914401F0914501EC0FFD1F808190E02A +:1011C000022E02C0959587950A94E2F780FD2F9A2A +:1011D00095E39A95F1F70000E6B52E988AE18A9595 +:1011E000F1F700C04091460150914701DA01AC0F80 +:1011F000BD1F4F9B0AC0C701022E01C0880F0A9471 +:10120000EAF780959C91892308C06C91C701022E52 +:1012100001C0880F0A94EAF7862B8C9386B56E2F4F +:1012200070E08E1728F086B590E0861B970B06C0FD +:10123000E6B5C801861B970B8E0F911D069758F0D7 +:10124000E0914401F0914501EC0FFD1F8081FA010E +:10125000EC0FFD1F80839AE19A95F1F700C02F985B +:101260002E9A8BE291E00197F1F700C000002F5F0A +:101270003F4F2830310509F08CCFA0914601B09145 +:101280004701AC0FBD1FE0914401F0914501EC0F07 +:10129000FD1F9C918081981751F00E949B206093C4 +:1012A00048017093490180934A0190934B01219624 +:1012B000C830D10509F06BCF8091D601853021F07F +:1012C0008091D601811111C060914801709149014E +:1012D00080914A0190914B010E94D1206131774267 +:1012E0008105910510F00E94202081E0DF91CF91CF +:1012F0001F910F91FF90EF9008952091460130913A +:101300004701F901E80FF11D808108950F931F93A4 +:10131000CF93DF9386E191E00E94E507C0E0D0E043 +:101320000AE011E0E0914601F0914701EC0FFD1F4A +:1013300080810E940A201F928F93DF93CF931F9387 +:101340000F930E947E0821960F900F900F900F90A0 +:101350000F900F90C830D10529F7DF91CF911F91E1 +:101360000F9108951F93CF93DF93C7E0D0E010E073 +:10137000E0914601F0914701EC0FFD1F808190E064 +:101380000E94FE1F180F219798F7812FDF91CF91B0 +:101390001F9108950895089561110BC0FC01828189 +:1013A000882321F085EE0E949A1603C085EE0E94E4 +:1013B000391780E090E0089581E0089581E0089574 +:1013C0000C94DE0908950F931F93CF93DF938C0144 +:1013D000FC01C081D181CE010E94C81EBE010E94C5 +:1013E0008C0AEC01B8010E94E009882309F48DC041 +:1013F000F8018281882309F44AC080915701811144 +:101400001FC0C431F0E5DF0709F051C00E94E209B6 +:1014100081E0809357010E948F2090935601809322 +:10142000550110924E011092500110924F011092EE +:10143000520110925101109254011092530165C053 +:1014400080915501909156010E94A720883C9105FA +:1014500070F480914E01E82FF0E0EE0FFF1FE15B8A +:10146000FE4FD183C0838F5F80934E014EC0C4383E +:1014700080E5D80721F0C538D04501F13AC0F80120 +:101480008281882341F010924C0182E01EC0C43852 +:10149000E0E5DE0759F580914C01811106C086E236 +:1014A0000E949A1686E20E94391782E01CC0C43856 +:1014B000F0E5DF0741F3C538D045D9F4F801828162 +:1014C000882331F010924D0180E20E9461171DC007 +:1014D00080914D01811106C087E20E949A1687E231 +:1014E0000E94391780E20E9468170FC0C538D045A6 +:1014F00029F381E080934C0180934D01C801DF9175 +:10150000CF911F910F910C94DC0980E0DF91CF9176 +:101510001F910F9108950895E72FF0E098E0899FBB +:10152000E00DF11D112483E0EE0FFF1F8A95E1F716 +:10153000E60FF11DEE0FFF1FE95DFE4F85919491BF +:101540000895880F991FFC01EB55F0408591949107 +:101550000895880F991FFC01EB5DFE4F85919491D2 +:1015600008950F931F93CF93DF93EC01811520E330 +:10157000920750F5C11580E2D80708F0C3C0CB3BF5 +:10158000D10590F4C83AD10508F06AC0C53AD10532 +:1015900008F05BC0C430D10508F0D4C1219709F030 +:1015A000CEC101E010E00EC2CF3FD10511F008F02E +:1015B000C9C1C03FD10508F0A2C0CE01805E91092B +:1015C000089708F4BFC1BBC1C13090E5D90709F441 +:1015D000A2C020F5C0318FE4D80770F4C11590E4A3 +:1015E000D90708F094C0C11521E3D20708F0A7C1BC +:1015F000DD278E01106CE6C1C115D04509F09FC1F1 +:101600000E94CF198FEF94E32CE08150904020404E +:10161000E1F700C000000E942221D4C1C11597E566 +:10162000D90758F4C03121E5D20708F020C1C431F0 +:1016300080E5D80708F479C082C1CE0190578115A2 +:10164000904108F07CC1DF7077C1C53AD10509F43B +:101650007BC1C63AD10509F07AC102E810E4B2C1F3 +:10166000C83AD10509F476C1C93AD10509F475C162 +:10167000CA3AD10509F474C1CB3AD10509F473C152 +:10168000CC3AD10509F472C1CD3AD10509F471C142 +:10169000C03BD10509F470C1CE3AD10509F46FC140 +:1016A000CF3AD10509F46EC1C13BD10509F46DC132 +:1016B000C23BD10509F46CC1C33BD10509F46BC130 +:1016C000C43BD10509F46AC1C53BD10509F469C120 +:1016D000C63BD10509F468C1C73BD10509F467C110 +:1016E000C83BD10509F466C1C93BD10509F465C100 +:1016F000CA3BD10509F464C100E014E463C18E0162 +:10170000106560C1CE019F700E94A90A5CC1DF70A4 +:101710008E01106A57C187EA94E00E94E507809124 +:10172000C10181608093C1014DC10E94C822811115 +:1017300002C00E94AE220E94E52290E09093E00158 +:101740008093DF01C23080E5D80721F48091DF016A +:10175000816086C0C43090E5D90721F48091DF0113 +:1017600082607EC0C63020E5D20721F48091DF017F +:10177000846076C0C83080E5D80719F48091DF0115 +:1017800027C0CA3090E5D90721F48091DF0180613C +:1017900067C0CC3020E5D20721F48091DF01806260 +:1017A0005FC0CE3080E5D80721F48091DF018064EE +:1017B00057C0C03190E5D90721F48091DF018068DE +:1017C0004FC0C23120E5D20729F48091DF01846047 +:1017D000886046C0C33080E5D80721F48091DF01DE +:1017E0008E7F3EC0C53090E5D90721F48091DF019E +:1017F0008D7F36C0C73020E5D20721F48091DF010C +:101800008B7F2EC0C93080E5D80719F48091DF01A5 +:1018100026C0CB3090E5D90721F48091DF018F7E7F +:101820001FC0CD3020E5D20721F48091DF018F7DEC +:1018300017C0CF3080E5D80721F48091DF018F7B7E +:101840000FC0C13190E5D90721F48091DF018F7776 +:1018500007C0C331D04531F48091DF018B7F877F92 +:101860008093DF018091DF010E94E922ABC08D2FC0 +:1018700099278F70992781309105D9F49E012370A3 +:10188000332702C0880F991F2A95E2F79C688E01C2 +:1018900044E0000F111F4A95E1F700271370802BD9 +:1018A000912B53E0CC0FDD1F5A95E1F7C076DD2771 +:1018B0002FC08230910531F4DC2FCC278E01016FCF +:1018C000106A80C08330910569F4CE018370992736 +:1018D00001E010E002C0000F111F8A95E2F7C80175 +:1018E0009C680FC084309105B9F4CE0183709927AC +:1018F00001E010E002C0000F111F8A95E2F7C80155 +:101900009A6823E0CC0FDD1F2A95E1F7C07ED770DF +:101910008C010C2B1D2B56C08530910531F4DC2F2A +:10192000CC278E01046F106A4DC0069709F04AC09B +:10193000CF71DD27DC2FCC278E01106243C000E081 +:1019400010E040C08E013EC001E810E43BC003E857 +:1019500010E438C002EE14E435C009EE14E432C0DD +:101960000AEE14E42FC005EB14E42CC006EB14E4DB +:1019700029C007EB14E426C00CEC14E423C00DECE2 +:1019800014E420C003E815E41DC00AE815E41AC0F9 +:1019900002E915E417C004E915E414C001E216E4F5 +:1019A00011C003E216E40EC004E216E40BC005E227 +:1019B00016E408C006E216E405C007E216E402C019 +:1019C0000AE216E4C801DF91CF911F910F910895AB +:1019D000E72FF0E098E0899FE00DF11D112483E0EE +:1019E000EE0FFF1F8A95E1F7E60FF11DEE0FFF1FC7 +:1019F000E95DFE4F85919491803E9105E0F4803C35 +:101A0000910558F58133910509F46FC048F4893286 +:101A1000910509F463C08A32910509F46DC072C062 +:101A200089339105E9F082389105D1F0853391052C +:101A300009F44DC067C0833E910581F138F4803EC2 +:101A40009105B9F0823E9105D9F05CC0863E9105C2 +:101A500061F1873E9105A1F155C00E94A10A089548 +:101A60002091DF0120FD02C021FF4CC080EE90E0FC +:101A700049C08091DF0180FFF9CF89E390E042C047 +:101A80008091DF0182FF0EC08091DF0184FF03C0DF +:101A900080E090E037C083EE90E034C08091DF01B9 +:101AA00082FFF2CF82EE90E02DC08091DF0183FFB4 +:101AB0000BC08091DF0184FDEBCF87EE90E022C068 +:101AC0008091DF0183FFF5CF86EE90E01BC080910F +:101AD000DF0185FF07C089E290E014C08091DF013B +:101AE00085FFF9CF85E390E00DC08091DF0186FF8F +:101AF00007C08AE290E006C08091DF0186FFF9CF3F +:101B000081E390E00E94B10A089508950C94850D38 +:101B10008091630108959FB7F89410925A019FBF76 +:101B20009091D601943009F057C09091E9009F70D0 +:101B30003091EC00232F217030FD20E8922B24E01F +:101B40002093E9002091EB0020FF43C02091EE009C +:101B500027FF3FC020915801222321F02091E80067 +:101B600025FF37C01092580126E03091E80035FD7E +:101B700015C03091D601343061F53091EB0035FD60 +:101B800028C0215021F481E08093580122C0EFE960 +:101B9000FFE03197F1F700C00000E7CF8093F1003C +:101BA0008091E80085FD0AC08091E80080FFFCCFAD +:101BB0008091E8008E778093E80006C08FB7F89494 +:101BC00021E020935A018FBF9F709093E90080E03D +:101BD00008959F709093E9008FEF0895CF93DF935E +:101BE00000D01F92CDB7DEB79C018091D601843022 +:101BF00019F593E099833B832A839093E9008FEF53 +:101C00009091E800815095FD06C095ED9A95F1F709 +:101C100000008111F5CF8091E80085FF0DC040E004 +:101C200050E063E070E0CE0101960E948B1080913D +:101C3000E8008E778093E8000F900F900F90DF916F +:101C4000CF910895CF93DF9300D01F92CDB7DEB729 +:101C50002091D601243021F522E029839B838A83B9 +:101C600083E08093E9008FEF9091E800815095FD2B +:101C700006C095ED9A95F1F700008111F5CF80919E +:101C8000E80085FF0DC040E050E063E070E0CE0169 +:101C900001960E948B108091E8008E778093E80077 +:101CA0000F900F900F90DF91CF9108952091D60162 +:101CB0002430F1F422E02093E9002FEF3091E80086 +:101CC000215035FD06C035ED3A95F1F700002111A0 +:101CD000F5CF2091E80025FF0BC040E050E065E023 +:101CE00070E00E948B108091E8008E778093E8006E +:101CF0000895CF93DF932091D601243039F521E068 +:101D00002093E9002FEF3091E800215035FD06C007 +:101D100035ED3A95F1F700002111F5CF2091E8005B +:101D200025FF14C0EC0140E050E068E070E00E9444 +:101D30008B108091E8008E778093E80088E0FE01A8 +:101D4000ABE5B1E001900D928A95E1F7DF91CF917B +:101D500008958EED94E00E94E5078091D5018111F0 +:101D600009C00E9420120E947D128091E2008460CE +:101D70008093E20008958AED94E00E94E5071092B6 +:101D8000D501089586ED94E00C94E50782ED94E08A +:101D90000C94E5078EEC94E00E94E5070C94572024 +:101DA000209159012F5F822F62E30E94CD2B99234E +:101DB00019F02093590108951092590180915A0108 +:101DC000882371F18091D601843041F58091E9003A +:101DD0008F702091EC00922F917020FD90E8892B5C +:101DE00094E09093E9009091EB0090FF14C09091E3 +:101DF000EE0097FF10C09091E80095FF03C010928D +:101E0000F100F9CF9091E80090FF05C09091E800B3 +:101E10009E779093E8008F708093E90010925A01AA +:101E2000089542E061EC81E00E949A1142E061EC89 +:101E300082E00E949A1142E061EC83E00E949A11D4 +:101E400042E261EC84E00C949A118091D8018330D5 +:101E500009F453C030F4813071F0823009F48CC041 +:101E600008958A3009F478C08B3009F45EC0893057 +:101E700009F09AC020C08091D701813A09F094C03E +:101E80008091E800877F8093E8008091DB0190914A +:101E9000DC01892B21F468E08BE591E003C060E070 +:101EA00080E090E070E00E94D6108091E8008B778F +:101EB0008093E80008958091D701813209F074C0C1 +:101EC0008091DB019091DC01892B09F06DC080913C +:101ED000E800877F8093E8008091E80082FD05C0DC +:101EE0008091D6018111F8CF5FC08091F10080937D +:101EF00063018091E8008B7753C08091D701813ACC +:101F000009F052C08091DB019091DC01892B09F02E +:101F10004BC08091E800877F8093E8008091E800C3 +:101F200080FFFCCF80910A0136C08091D7018132B9 +:101F3000D9F58091DB019091DC01892BA9F5809185 +:101F4000E800877F8093E8000E94CF118091D9013B +:101F500080930A010C94CF198091D701813221F529 +:101F60008091E800877F8093E8000E94CF118091E4 +:101F7000DA018093640108958091D701813AA1F438 +:101F80008091E800877F8093E8008091E80080FFDF +:101F9000FCCF809164018093F1008091E8008E77FE +:101FA0008093E8000C94CF11089584B7877F84BF95 +:101FB00088E10FB6F89480936000109260000FBE25 +:101FC00090E080E80FB6F8948093610090936100F0 +:101FD0000FBE0E94AF150E9420120E947D128091B8 +:101FE000E20084608093E2008BE89DE00E94F91F8C +:101FF00078940E9402150E94B11580E091E00E9441 +:102000001D158DEB94E00E94E5078091D601853087 +:1020100089F489EB94E00E94E5070E9420208091DA +:10202000D401882391F30E944920882371F30E94F0 +:102030007510EBCF0E94D515E8CF292F3327233019 +:102040003105C9F064F42130310581F022303105C9 +:1020500009F043C084E790E028E035E042C0213237 +:102060003105F1F02232310541F137C082E190E0D3 +:102070002CE735E036C099278130910541F0823058 +:10208000910541F0892B49F5E4E0F5E005C0E6EF64 +:10209000F4E002C0E2EEF4E0849190E09F0121C000 +:1020A0006430D8F4E62FF0E0EE0FFF1FE15EFE4F44 +:1020B0002081318189E090E014C0643070F470E0D8 +:1020C000FB01EE0FFF1FE95EFE4F20813181FB0116 +:1020D000ED5EFE4F808190E004C080E090E020E063 +:1020E00030E0FA0131832083089580E189BD82E1E7 +:1020F00089BD09B400FEFDCF8091D8008F7D80930B +:10210000D8008091E00082608093E0008091E00040 +:1021100081FDFCCF0895CF92DF92EF92FF920F9353 +:102120001F93CF93DF93EC018B016A010E94EE11A4 +:10213000811133C0C114D10439F0F601808191813D +:10214000081B190BC80FD91FE12CF12C0115110523 +:1021500019F18091E80085FD16C08091E8008E7726 +:102160008093E800C114D10449F0F6018081918187 +:10217000E80EF91EF182E08285E00FC00E94EE11A8 +:10218000882321F30AC089918093F100015011093D +:10219000FFEFEF1AFF0ADACF80E0DF91CF911F91B6 +:1021A0000F91FF90EF90DF90CF9008952091DD0187 +:1021B0003091DE012617370748F06115710539F4B3 +:1021C0002091E8002E772093E80001C0B90140E09B +:1021D00061157105A9F12091D601222309F443C0AC +:1021E000253009F442C02091E80023FD40C0209131 +:1021F000E80022FD32C02091E80020FFE9CF4091A5 +:10220000F3002091F20030E0342BFC01CF01611586 +:10221000710559F02830310540F481918093F10027 +:10222000615071092F5F3F4FF1CF41E028303105F8 +:1022300009F040E02091E8002E772093E800C8CF15 +:102240004111C9CF0AC08091D601882361F0853041 +:1022500061F08091E80083FD0AC08091E80082FF70 +:10226000F2CF80E0089582E0089583E0089581E050 +:1022700008952091DD013091DE012617370748F0DF +:102280006115710539F42091E8002E772093E8005C +:1022900001C0B901FC0120E06115710591F1809147 +:1022A000D601882309F440C0853009F43FC08091ED +:1022B000E80083FD3DC08091E80082FD2FC0809141 +:1022C000E80080FFE9CF2091F3008091F20090E0D8 +:1022D000922B6115710559F08830910540F42491D5 +:1022E0002093F1003196615071090196F2CF21E0FF +:1022F000089709F020E08091E8008E778093E8004D +:10230000CBCF2111CCCF0AC08091D601882361F0B8 +:10231000853061F08091E80083FD0AC08091E8007B +:1023200082FFF2CF80E0089582E0089583E008956F +:1023300081E00895982F973058F59093E900981709 +:1023400039F07091EC002091ED005091F00003C045 +:10235000242F762F50E021FF19C03091EB003E7FF3 +:102360003093EB003091ED003D7F3093ED003091E4 +:10237000EB0031603093EB007093EC002093ED00A4 +:102380005093F0002091EE0027FF07C09F5FD3CF4E +:102390008F708093E90081E0089580E00895809136 +:1023A000D70187FF11C08091E80082FD05C08091B0 +:1023B000D6018111F8CF11C08091E8008B770BC056 +:1023C0008091D601882349F08091E80080FFF8CF02 +:1023D0008091E8008E778093E80008952091E400D2 +:1023E0003091E50095E64091EC00842F817040FF2C +:1023F00022C08091E80080FD1CC08091D601882316 +:1024000091F0853091F08091EB0085FD10C04091F6 +:10241000E4005091E5004217530729F39A019150C7 +:1024200011F784E0089582E0089583E0089581E043 +:10243000089580E008954091E80042FFDECF0895BE +:102440000E948E120E949612E0EEF0E08081816080 +:102450008083E8EDF0E080818F77808319BCA7ED61 +:10246000B0E08C918E7F8C9380818F7E80831092E0 +:10247000D50108950F931F93CF93DF930E948E127F +:102480000E949612C8EDD0E088818F77888388817A +:102490008068888388818F7D888319BC1092D601DB +:1024A0001092D2011092D4011092D30100EE10E0EC +:1024B000F80180818B7F808388818160888342E0FE +:1024C00060E080E00E949A11E1EEF0E080818E7F72 +:1024D0008083E2EEF0E0808181608083808188608B +:1024E0008083F80180818E7F8083888180618883EA +:1024F000DF91CF911F910F910895E8EDF0E0808179 +:102500008F7E8083E7EDF0E080818160808384E0CE +:1025100082BF81E08093D5010C943A12E8EDF0E09F +:1025200080818E7F80831092E20008951092DA00FD +:102530001092E10008951F920F920FB60F9211248E +:102540002F933F934F935F936F937F938F939F93BB +:10255000AF93BF93EF93FF938091E10082FF0BC095 +:102560008091E20082FF07C08091E1008B7F809321 +:10257000E1000E94D00E8091DA0080FF1FC08091A0 +:10258000D80080FF1BC08091DA008E7F8093DA0034 +:102590008091D90080FF0DC080E189BD82E189BDB5 +:1025A00009B400FEFDCF81E08093D6010E94A90E00 +:1025B00005C019BC1092D6010E94BB0E8091E100AB +:1025C00080FF19C08091E20080FF15C08091E20079 +:1025D0008E7F8093E2008091E20080618093E20030 +:1025E0008091D80080628093D80019BC85E08093E8 +:1025F000D6010E94C60E8091E10084FF30C0809118 +:10260000E20084FF2CC080E189BD82E189BD09B46C +:1026100000FEFDCF8091D8008F7D8093D8008091FF +:10262000E1008F7E8093E1008091E2008F7E8093B5 +:10263000E2008091E20081608093E2008091D2010B +:10264000882311F084E007C08091E30087FD02C079 +:1026500081E001C083E08093D6010E94CA0E809180 +:10266000E10083FF29C08091E20083FF25C08091B3 +:10267000E100877F8093E10082E08093D601109291 +:10268000D2018091E1008E7F8093E1008091E20091 +:102690008E7F8093E2008091E20080618093E2006F +:1026A00042E060E080E00E949A118091F000886032 +:1026B0008093F0000E94C20EFF91EF91BF91AF9105 +:1026C0009F918F917F916F915F914F913F912F914A +:1026D0000F900FBE0F901F9018951F920F920FB67C +:1026E0000F9211242F933F934F935F936F937F9398 +:1026F0008F939F93AF93BF93CF93DF93EF93FF930A +:10270000C091E900CF708091EC00D82FD17080FD8E +:10271000D0E81092E9008091F000877F8093F0006C +:1027200078940E94B1131092E9008091F0008860C3 +:102730008093F000CD2BCF70C093E900FF91EF9113 +:10274000DF91CF91BF91AF919F918F917F916F91C9 +:102750005F914F913F912F910F900FBE0F901F905F +:1027600018951F93CF93DF93CDB7DEB7AA970FB617 +:10277000F894DEBF0FBECDBFE7EDF1E088E08E0F2D +:102780009091F10091938E13FBCF0E94250F8091C1 +:10279000E80083FF1FC18091D7019091D801492F94 +:1027A00050E04A30510508F015C1FA01EA5AFF4FCE +:1027B0000C94ED2B803881F0823809F00BC18091A8 +:1027C000DB018F708093E9008091EB0085FB882707 +:1027D00080F91092E90006C08091D3019091D40154 +:1027E000911182609091E800977F9093E800809328 +:1027F000F1001092F100C8C0282F2D7F09F0EAC027 +:10280000882319F0823061F0E5C08091D9018130D0 +:1028100009F0E0C0933009F080E08093D4012BC030 +:102820008091D901811127C08091DB018F7009F45B +:10283000D1C08093E9002091EB0020FF1CC09330B1 +:1028400021F48091EB00806214C09091EB009061C4 +:102850009093EB0021E030E0A90102C0440F551F26 +:102860008A95E2F74093EA001092EA008091EB002B +:1028700088608093EB001092E9008091E800877FE8 +:1028800086C08111A7C01091D9011F778091E30004 +:102890008078812B8093E3008091E800877F80938C +:1028A000E8000E94CF118091E80080FFFCCF80916A +:1028B000E30080688093E300111102C082E001C050 +:1028C00083E08093D60186C08058823008F082C0B1 +:1028D0008091D9019091DA018C3D53E0950779F50B +:1028E00083E08A838AE289834FB7F894DE011396E6 +:1028F00020E03EE051E2E32FF0E050935700E491F6 +:1029000020FF03C0E295EF703F5FEF708E2F90E0E5 +:10291000EA3010F0C79601C0C0968D939D932F5F4B +:10292000243149F74FBF8091E800877F8093E8000A +:102930006AE270E0CE0101960E94D61014C0AE018A +:102940004F5F5F4F6091DB010E941D10BC0100973B +:1029500009F440C09091E800977F9093E800898146 +:102960009A810E9439118091E8008B778093E8006A +:1029700031C0803879F58091E800877F8093E80046 +:102980008091D2018093F1008091E8008E7780934E +:10299000E8000E94CF111EC081111CC09091D90186 +:1029A0009230C0F48091E800877F8093E800909394 +:1029B000D2010E94CF118091D201811106C0809175 +:1029C000E30087FD02C081E001C084E08093D6016E +:1029D0000E94110F8091E80083FF0AC08091E800F7 +:1029E000877F8093E8008091EB0080628093EB000A +:1029F000AA960FB6F894DEBF0FBECDBFDF91CF9180 +:102A00001F910895CF938091D6018823A1F0C091A2 +:102A1000E900CF709091EC00892F817090FD80E8E3 +:102A2000C82B1092E9008091E80083FD0E94B11349 +:102A3000CF70C093E900CF91089590936A0180937D +:102A400069010895E0916901F0916A01309721F0E0 +:102A50000190F081E02D099480E00895EF92FF92BB +:102A60000F931F93CF93DF93E0916901F0916A0177 +:102A70003097B1F18C010280F381E02D09958091AE +:102A8000C10182FF2DC080FF04C088E796E00E944C +:102A9000E507E80118E082E7E82E86E0F82E80914D +:102AA000C10180FF0BC088811F928F93FF92EF922C +:102AB0000E947E080F900F900F900F90115021965A +:102AC0001111EDCF8091C10180FF0AC080E796E02F +:102AD000DF91CF911F910F91FF90EF900C94E5073C +:102AE000DF91CF911F910F91FF90EF900895E091AA +:102AF0006901F0916A01309721F00480F581E02DA1 +:102B00000994089520916701309168018217930715 +:102B100071F09093680180936701E0916901F091F1 +:102B20006A01309721F00680F781E02D099408951D +:102B300020916501309166018217930771F090939F +:102B4000660180936501E0916901F0916A01309717 +:102B500021F00084F185E02D0994089508950C94E6 +:102B6000AE150E9486200E9487080C948021CF9386 +:102B7000DF931F92CDB7DEB79091C10192FF10C0D5 +:102B800090FF0EC01F928F932AE836E03F932F9359 +:102B900089830E947E080F900F900F900F9089817B +:102BA0000F90DF91CF910C94860D9F92AF92BF92C0 +:102BB000CF92DF92EF92FF920F931F93CF93DF9309 +:102BC00000D000D000D0CDB7DEB70E94AA0807E041 +:102BD00010E0AA24A394B12C902E802F0E947D098E +:102BE000980124593E4F6901F901F080F826A1F4BB +:102BF0000150110988F78FEF89838A831B820E9415 +:102C00008F208160782F9D838C8349815A816B81CD +:102C10008D810E946C162FC09091C10191FF04C05C +:102C20008E830E9486098E8127E030E0A501022E66 +:102C300001C0440F0A94EAF7E42E4F21C1F0298322 +:102C40009A828E2191E009F490E09B830E948F206C +:102C50008160782F9D838C8349815A816B818D811E +:102C60000E946C16F6018081E826E08204C02150A3 +:102C70003109E0F6BDCF0E94EA2410916B010E9459 +:102C800022151817B9F00E94221580936B01269621 +:102C90000FB6F894DEBF0FBECDBFDF91CF911F916D +:102CA0000F91FF90EF90DF90CF90BF90AF909F90EB +:102CB0000C94B71526960FB6F894DEBF0FBECDBFA5 +:102CC000DF91CF911F910F91FF90EF90DF90CF9008 +:102CD000BF90AF909F900895CF93DF93CDB7DEB7AD +:102CE0002B970FB6F894DEBF0FBECDBF4F8358872A +:102CF00069877A878B87DE01119686E0FD01119244 +:102D00008A95E9F785E0FE01379601900D928A9544 +:102D1000E1F749815A816B817C818D819E810E947E +:102D20006D1C2B960FB6F894DEBF0FBECDBFDF91A2 +:102D3000CF910895CF93882309F499C0C82F8CEFC1 +:102D40008C0F813A48F48C2F0E94562981118FC034 +:102D50008C2F0E94471F0CC080E28C0F883058F4E3 +:102D6000C77081E001C0880FCA95EAF70E94831FEF +:102D7000CF910C94CA1F8BE58C0F833078F4C53A41 +:102D800029F0C63A31F083E890E005C081E890E090 +:102D900002C082E890E0CF910C94821588E58C0FF8 +:102DA000833108F064C0C83A39F1C93A41F1CA3AEE +:102DB00049F1CB3A51F1CC3A59F1CD3A61F1C03BEE +:102DC00069F1CE3A71F1CF3A79F1C13B81F1C23B61 +:102DD00089F1C33B91F1C43B99F1C53BA1F1C63BDD +:102DE000A9F1C73BB1F1C83BB9F1C93BC1F1CA3B3D +:102DF000C9F180E090E038C082EE90E035C089EE05 +:102E000090E032C08AEE90E02FC085EB90E02CC0BD +:102E100086EB90E029C087EB90E026C08CEC90E038 +:102E200023C08DEC90E020C083E891E01DC08AE8CB +:102E300091E01AC082E991E017C084E991E014C0E2 +:102E400081E292E011C083E292E00EC084E292E05F +:102E50000BC085E292E008C086E292E005C087E2FE +:102E600092E002C08AE292E0CF910C949815CF9143 +:102E70000895882329F19CEF980F913A18F40E9445 +:102E8000641F0DC090E2980F983058F4877091E05D +:102E900001C0990F8A95EAF7892F0E94891F0C9427 +:102EA000CA1F9BE5980F933020F480E090E00C94CB +:102EB0008215885A833120F480E090E00C949815B4 +:102EC0000895882321F00E94831F0C94CA1F08953F +:102ED000882321F00E94891F0C94CA1F08957F92B5 +:102EE0008F929F92AF92BF92CF92DF92EF92FF921A +:102EF0000F931F93CF93DF931F92CDB7DEB77C0163 +:102F0000C62E772EFC01058102950F7012811111DA +:102F10000E94A01F0E94401F882379F0112369F0AE +:102F200080E28C0D883048F082E00E94291F0E94C8 +:102F3000401F91E0D82ED92601C0D12CE72DE29573 +:102F4000EF70F0E0E05AFF4F0C94ED2B872D807F5F +:102F5000072D0F70882311F00295007F112389F04F +:102F6000002309F498C180E28C0D883020F4802F72 +:102F70000E94831F03C0802F0E94931F0E94CA1FBC +:102F80008AC18C2D0E943917002309F49DC180E26B +:102F90008C0D883020F4802F0E94891F03C0802F61 +:102FA0000E94991F0E94CA1F8FC1872D807F972D75 +:102FB0009F70803211F4892F03C0892F8295807F02 +:102FC000CC2021F0F1E0CF16A1F01DC0112339F083 +:102FD000002319F1013009F50E94B31F75C10023C8 +:102FE00019F0013009F470C189830E94B61F8981EC +:102FF00010C1112321F0063008F066C10EC0053063 +:1030000008F062C106C1112359F0002331F0F70125 +:10301000958190FF40C19F7095830E94611754C1B4 +:10302000002309F4F6C03DC1872D869586958370EF +:1030300090E0009719F0019761F046C1112321F04B +:103040008C2D972D937002C080E090E00E94821535 +:103050003BC1112321F08C2D972D937002C080E08D +:1030600090E00E94981530C18C2D112319F00E9418 +:10307000702302C00E94D8230E945D2425C1872DA1 +:10308000837009F052C011111FC18C2D8295869555 +:103090008770880F880F9C2D9F70892E912CA12CF2 +:1030A000B12C082E04C0880C991CAA1CBB1C0A94C5 +:1030B000D2F7C4FE14C00FE010E020E030E0B90108 +:1030C000A80104C0440F551F661F771F8A95D2F7C9 +:1030D000CB01BA01609570958095909503C060E032 +:1030E00070E0CB01272D26952695237030E0223005 +:1030F000310569F02330310589F0682979298A2959 +:103100009B292130310571F00E94B51DDDC0682971 +:1031100079298A299B290E94D11DD6C00E94B51DFC +:10312000C501B4010E94991DCFC0112319F0872D4C +:10313000817001C08695882309F4C6C08C2D8295C4 +:1031400086958770880F880F9C2D9F70892E912CF3 +:10315000A12CB12C082E04C0880C991CAA1CBB1CE5 +:103160000A94D2F7C4FE14C00FE010E020E030E073 +:10317000B901A80104C0440F551F661F771F8A9527 +:10318000D2F7CB01BA01609570958095909503C0F8 +:1031900060E070E0CB01272D269526952370422F05 +:1031A00050E04230510569F04330510589F06829FB +:1031B00079298A299B294130510571F00E948F1E7F +:1031C00083C0682979298A299B290E94AB1E7CC06B +:1031D0000E948F1EC501B4010E94731E75C08C2D04 +:1031E00090E0FC01E05EF109E531F10508F04FC027 +:1031F000E059FF4F0C94ED2B0C2D0F70872D8F7124 +:10320000112321F00E940C1E802F07CF0E942D1E3B +:10321000802F0E94681758C0112341F0053008F034 +:1032200053C0872D8F710E94521E4EC0063008F089 +:103230004BC0F7CF112339F0872D8F710E940C1EE0 +:1032400043C01123C9F3872D8F710E942D1E3CC0EE +:10325000112329F0872D8F710E94F71D35C00E9420 +:10326000ED1D32C0112351F0172D1F71812F0E94C7 +:103270000C1E63E0812F0E94201F26C081E00E9467 +:10328000291F023008F182E00E94291F1DC011236E +:1032900031F0002389F28C2D0E949A1615C000236C +:1032A00091F28C2D0E9439170FC0472D4F706C2D55 +:1032B000C7010E94CC090E94111D06C0472D4F7006 +:1032C0006C2DC7010E948B0ADD20F9F00E941C1FA3 +:1032D00080FD1BC0F70112820E94161F0E940C1E67 +:1032E000C7010E9494190E94161F0F90DF91CF9181 +:1032F0001F910F91FF90EF90DF90CF90BF90AF9014 +:103300009F908F907F900C942D1E0F90DF91CF9106 +:103310001F910F91FF90EF90DF90CF90BF90AF90F3 +:103320009F908F907F9008950F931F93CF93DF937B +:10333000EC01888199812B813C81232BB9F09F3F3F +:1033400011F48F3F99F0CE010E94E309882371F0B8 +:10335000688179818A810E94121F8C010E94C71E98 +:103360000E948E1DB801CE010E946F17DF91CF9190 +:103370001F910F9108950E94A01F0E94B01F0E94EC +:10338000751F0E94CA1F0E9490250E945D2480E044 +:1033900090E00E94821580E090E00C9498150E94C5 +:1033A000901F0C94BB190E94071F292F22952F7084 +:1033B00030E02C3031054CF42A3031056CF42250C9 +:1033C000310922303105A8F407C02C30310569F0ED +:1033D0002F30310551F00DC0803F69F018F4803E68 +:1033E00040F409C0843F29F406C093FB882780F984 +:1033F000089580E0089581E00895CF93DF9300D091 +:1034000000D01F92CDB7DEB70F900F900F900F90A6 +:103410000F90DF91CF910895CF93DF9300D000D02C +:1034200000D0CDB7DEB726960FB6F894DEBF0FBE3C +:10343000CDBFDF91CF9108951F93CF93DF93C091BC +:10344000740116E080917501C81799F0D0E01C9FB7 +:10345000F0011D9FF00D1124EA58FE4F408151816B +:1034600062817381848195810E940C1A2196C770B4 +:10347000E9CFDF91CF911F9108954091A60150911E +:10348000A7016091A8017091A9018091AA01909172 +:10349000AB010C940C1A8091AB0182958F7009F0EE +:1034A00054C08091A801882309F44FC08091740111 +:1034B000A09175016091A6017091A7014091A901A9 +:1034C0005091AA01B6E08A1709F43FC090E0411577 +:1034D0005105C1F17F3F11F46F3FA1F1B89FF00199 +:1034E000B99FF00D1124EA58FE4F218172132AC0B2 +:1034F0002081621327C02281211124C023813481BD +:103500002417350710F421503109241B350B283CB2 +:103510003105C0F42091AB012F7020612093AB01E5 +:1035200026E0289FF001299FF00D1124E558FE4F59 +:1035300080818F708061808386EA91E00E94941977 +:103540000C941C1A01968770BECF0895CF92DF921B +:10355000EF92FF920F931F93CF93DF93CDB7DEB718 +:1035600062970FB6F894DEBF0FBECDBF8C0185E029 +:10357000F801DE011D9601900D928A95E1F7D801C0 +:103580004C9111965C91119712966C91129713962B +:10359000CD90DC9014973091A6017091A701809195 +:1035A000A9019091AA01009709F46BC17F3F19F41A +:1035B0003F3F09F466C1E090A801EE2009F4C0C0C5 +:1035C0002091AB01C816D90628F0F601E81BF90BCB +:1035D000CF0104C0809590958C0D9D1DFF24F39420 +:1035E000883C910578F0F12C207F09F0C6C07C2D35 +:1035F000D98AC88A89890E94FD1986EA91E00E94C9 +:103600009419B1C0822F807F09F046C0751314C091 +:10361000341312C0611110C02F7020612093AB01D0 +:103620000E943D1A86EA91E00E9494198091AB01B4 +:10363000D80115968C932EC0CD2819F15F3F11F457 +:103640004F3FF9F0F62E61111CC08091740120915A +:10365000750136E0821709F45AC090E0389FF001F6 +:10366000399FF00D1124EA58FE4F7181571306C09F +:103670007081471303C07281711103C00196877076 +:10368000E9CFF62E662309F418C18091AB01816061 +:103690008093AB01F12C11C1751308C0341306C01F +:1036A000611104C08091AB01D801C3C04D875E8712 +:1036B0008D859E856A8B0E94D3196A898823E1F1E2 +:1036C0006623D1F12091AB01822F82958F7090E01B +:1036D000029774F08091A6019091A70198878F833B +:1036E0001986DB86CA862C87CE0107960E9494191C +:1036F00086E0F801A6EAB1E001900D928A95E1F723 +:103700000E944B1A0E943D1AFF24F394D6C04D87A5 +:103710005E878D859E850E94071F292F22952F7019 +:1037200030E0223031050CF0BCC09F7009F0B6C00B +:10373000805E883008F4C1C0C8010E949419E4CFAB +:10374000C816D90608F453C0F601E81BF90BCF01DF +:10375000883C910508F450C0F12C7C2DD98AC88A88 +:1037600089890E94FD19E6EAF1E086E0DF011D92F9 +:103770008A95E9F70E943D1AA0C0751314C034134E +:1037800012C0611110C08091AB01F8018583C8019E +:103790000E94941986E0E6EAF1E0DF011D928A9525 +:1037A000E9F7FE2C8AC04D875E878D859E856A8BE2 +:1037B0000E94D3196A89882309F4BECF662309F4CD +:1037C000BBCF2091AB01822F82958F7090E0029742 +:1037D0000CF48ECF8091A6019091A7019A838983E2 +:1037E0001B82DD82CC822E83CE0101967FCF809515 +:1037F00090958C0D9D1DACCFF62E662309F49CCFC1 +:1038000075132EC034132CC02091AB0120FD1FC0B6 +:10381000822F82958F70D9F0D80115962C93159729 +:103820008F3049F08F5F982F9295907F822F8F7005 +:10383000892B15968C93C8010E94941986E0F80193 +:10384000A6EAB1E001900D928A95E1F793CF86E068 +:10385000F801A6EAB1E001900D928A95E1F72DC03A +:103860004D875E878D859E850E94D319811140CF3B +:103870008091AB0181608093AB01C8010E949419D3 +:103880001CC0662309F458CF4D875E878D859E85C1 +:103890000E94D319882309F44FCF2ACF811148CF32 +:1038A0000CC0243031050CF047CF9F7009F440CF95 +:1038B000F8019581907F09F03BCF8F2D62960FB66E +:1038C000F894DEBF0FBECDBFDF91CF911F910F9156 +:1038D000FF90EF90DF90CF9008951F93CF93DF93E9 +:1038E000CDB7DEB72C970FB6F894DEBF0FBECDBFB5 +:1038F0004F83588769877A878B879C87CE01079685 +:103900000E94A61A882369F08F8198852A853B85B5 +:10391000232BF1F19F3F09F063C08F3F09F060C096 +:1039200037C086E0FE013796DE01119601900D92B8 +:103930008A95E1F76F817885EA85FB85309741F1BB +:103940007F3F11F46F3F21F12091750130E0C901F3 +:103950000196877099274091740150E0841795076C +:1039600009F447C069837A83FD83EC8396E0929FD4 +:10397000D001939FB00D1124AA58BE4FFE0131967D +:1039800001900D929A95E1F7809375010E941C1A9F +:1039900016E080917401909175018917C1F1189F0B +:1039A000C00111248A589E4F0E94A61A882379F1DB +:1039B000E09174011E9FF0011124EA58FE4F4081EE +:1039C000518162817381848195810E940C1A80915A +:1039D000740190E001968770992780937401D9CF84 +:1039E0004F81588569857A858B859C850E940C1A44 +:1039F000CFCF0E94CF191092750110927401E6EAA0 +:103A0000F1E086E0DF011D928A95E9F7C1CF2C969F +:103A10000FB6F894DEBF0FBECDBFDF91CF911F91DF +:103A20000895EF92FF920F931F93CF93DF938C0132 +:103A3000009709F46CC0F12CEE24E394E801219680 +:103A4000F8018491843740F4843008F051C081300B +:103A500081F0823019F15BC0853709F444C0A8F1C8 +:103A60009CE7980F903708F052C08F770E94391763 +:103A700041C00E5F1F4FFE01C49180E28C0F883061 +:103A800048F4C7708E2D01C0880FCA95EAF70E94CE +:103A9000A31F14C08C2F0E949A162DC00E5F1F4FBB +:103AA000FE01C49180E28C0F883058F4C7708E2DCF +:103AB00001C0880FCA95EAF70E94A91F0E94CA1F79 +:103AC0001AC08C2F0E94391716C00E5F1F4FFE01BF +:103AD000C491CC2381F08FE99FE00197F1F700C0FA +:103AE0000000C150F6CF0E5F1F4FFE01F49003C0DF +:103AF0000E949A168E018F2D882309F49FCFEFE93B +:103B0000FFE03197F1F700C000008150F5CFDF9161 +:103B1000CF911F910F91FF90EF90089508956093BA +:103B2000B0017093B1018093B2019093B3010C94F2 +:103B3000BB190F931F930091B0011091B101209117 +:103B4000B2013091B301DC01CB01802B912BA22B70 +:103B5000B32B8093B0019093B101A093B201B093C5 +:103B6000B3011F910F910C94BB190F931F930091F8 +:103B7000B0011091B1012091B2013091B301DC018B +:103B8000CB0180239123A223B3238093B001909390 +:103B9000B101A093B201B093B3011F910F910C94A6 +:103BA000BB190F931F930091B0011091B1012091A7 +:103BB000B2013091B301DC01CB0180279127A2270C +:103BC000B3278093B0019093B101A093B201B09359 +:103BD000B3011F910F910C94BB191092AC0110927C +:103BE000AD011092AE011092AF010C94BB1941E0EF +:103BF00050E060E070E004C0440F551F661F771F5F +:103C00008A95D2F74093AC015093AD016093AE0119 +:103C10007093AF010C94BB1941E050E060E070E09C +:103C200004C0440F551F661F771F8A95D2F78091F5 +:103C3000AC019091AD01A091AE01B091AF01482BC4 +:103C4000592B6A2B7B2B4093AC015093AD016093B1 +:103C5000AE017093AF010C94BB1941E050E060E0FD +:103C600070E004C0440F551F661F771F8A95D2F776 +:103C700040955095609570958091AC019091AD0103 +:103C8000A091AE01B091AF01482359236A237B2351 +:103C90004093AC015093AD016093AE017093AF01BE +:103CA0000C94BB1941E050E060E070E004C0440FA8 +:103CB000551F661F771F8A95D2F78091AC019091AE +:103CC000AD01A091AE01B091AF01482759276A27F5 +:103CD0007B274093AC015093AD016093AE0170938C +:103CE000AF010C94BB190F931F930091AC0110917D +:103CF000AD012091AE013091AF01DC01CB01802BF1 +:103D0000912BA22BB32B8093AC019093AD01A09388 +:103D1000AE01B093AF011F910F910C94BB190F939B +:103D20001F930091AC011091AD012091AE01309133 +:103D3000AF01DC01CB0180239123A223B323809325 +:103D4000AC019093AD01A093AE01B093AF011F9170 +:103D50000F910C94BB190F931F930091AC0110911C +:103D6000AD012091AE013091AF01DC01CB01802784 +:103D70009127A227B3278093AC019093AD01A09324 +:103D8000AE01B093AF011F910F910C94BB19089530 +:103D9000CF92DF92EF92FF920F931F93CF93DF9317 +:103DA0008C01C090B001D090B101E090B201F090D0 +:103DB000B3018091AC019091AD01A091AE01B091A1 +:103DC000AF01C82AD92AEA2AFB2ACFE1D0E0D701DD +:103DD000C6010C2E04C0B695A795979587950A94B1 +:103DE000D2F780FF06C0B8018C2F0E94E80C019723 +:103DF00021F4219760F780E001C08C2FDF91CF91F3 +:103E00001F910F91FF90EF90DF90CF900895CF9387 +:103E1000DF93EC010E94C81EBE010E94E80CDF91F6 +:103E2000CF910895CB010E94071F08958091B4019E +:103E300085958595859508958091B401877008953D +:103E400098E0899F90011124262B2093B4010C94B3 +:103E50000C1E2091B401809582238093B401982F89 +:103E6000977069F430E0482F552747FD5095241787 +:103E7000350729F08595859585950C942D1E089517 +:103E80009091B401977081E009F480E00895209149 +:103E90000B0130910C01F90132969FEF40E05191F6 +:103EA000581789F09F3F19F4511101C0942F4F5FAB +:103EB0004630A9F79F3F39F0F901E90FF11D97FD51 +:103EC000FA9582830895089520910B0130910C0199 +:103ED000F9013296285F3F4F9081981301C01082FC +:103EE0003196E217F307C1F7089581E090E0E09181 +:103EF0000B01F0910C01E80FF91F10820196883038 +:103F00009105A9F708959091C001892B8093C00174 +:103F1000089580959091C00189238093C0010895F0 +:103F20001092C00108959091BF01892B8093BF0129 +:103F3000089580959091BF0189238093BF010895D2 +:103F40001092BF0108959091BE01892B8093BE010C +:103F5000089580959091BE0189238093BE010895B4 +:103F60001092BE0108958093B50108951092B50195 +:103F7000089580910B0190910C01FC0131969C01F8 +:103F8000285F3F4F80E0919191118F5FE217F30717 +:103F9000D1F70895E0910B01F0910C018091C001DF +:103FA0008083E0910B01F0910C0190818091BF0121 +:103FB000892B8083E0910B01F0910C01908180911D +:103FC000BE01892B80838091B501882361F0E09147 +:103FD0000B01F0910C019081892B80830E94B91F05 +:103FE00081111092B50180910B0190910C010C94FC +:103FF0002E159093330180933201089520E00097AD +:1040000039F0AC0141505109842395232F5FF7CF3C +:10401000822F08958295982F9C7C392F369536955E +:10402000282F237344E0249FC0011124932F982B41 +:10403000292F2A7A2695892F8575880F822B089536 +:104040008091D601843021F11092C20120E488E1F0 +:1040500090E00FB6F894A895809360000FBE20936F +:10406000600080E00E94860D83B7817F846083BFFB +:1040700083B7816083BF7894889583B78E7F83BF31 +:1040800088E10FB6F89480936000109260000FBE34 +:1040900008950E94CA090E94AA080E94CB090E94A2 +:1040A000B20991E0811101C090E0892F08950E942A +:1040B000CF190E9422150C94860D1F920F920FB6F5 +:1040C0000F9211248F939F93AF93BF938091C2015E +:1040D000811113C08091C3019091C401A091C501C9 +:1040E000B091C6014196A11DB11D8093C30190936B +:1040F000C401A093C501B093C601BF91AF919F9138 +:104100008F910F900FBE0F901F90189582E084BD85 +:1041100093E095BD9AEF97BD80936E0008952FB7F9 +:10412000F8948091C3019091C401A091C501B09110 +:10413000C6012FBF08952FB7F8946091C301709105 +:10414000C4018091C5019091C6012FBF0895CF92FF +:10415000DF92EF92FF920F931F932FB7F894409145 +:10416000C3015091C4016091C5017091C6012FBF78 +:104170006A017B01EE24FF248C0120E030E0C016B0 +:10418000D106E206F30610F4415051099A01281BAA +:10419000390BC9011F910F91FF90EF90DF90CF90E5 +:1041A0000895CF92DF92EF92FF920F931F932FB754 +:1041B000F894C090C301D090C401E090C501F09084 +:1041C000C6012FBF97018601061B170B280B390B61 +:1041D000C616D706E806F90618F0C901B80106C0E8 +:1041E000C901B80161507109810991091F910F91AD +:1041F000FF90EF90DF90CF9008951F920F920FB62F +:104200000F9211248F939F93AF93BF938091C3011B +:104210009091C401A091C501B091C6010196A11D64 +:10422000B11D8093C3019093C401A093C501B093C5 +:10423000C601BF91AF919F918F910F900FBE0F90CC +:104240001F9018950E942012F8942FEF87EA91E6AC +:10425000215080409040E1F700C0000087E090EBE3 +:10426000DC018093E0019093E101A093E201B0931F +:10427000E3019CE088E10FB6F894A8958093600074 +:104280000FBE90936000FFCFEF92FF920F931F93AA +:10429000CF93DF93D82FC7E08C2F0E947D0907E0D2 +:1042A00010E0E82EF12CC701002E02C095958795ED +:1042B0000A94E2F780FF09C0602F7C2F80E00E9403 +:1042C0008C0AD81302C081E006C00150110958F7CA +:1042D000C15010F780E0DF91CF911F910F91FF90B7 +:1042E000EF900895CF93C82F8CE20E944421882339 +:1042F00021F08C2FCF910C94442180E0CF91089530 +:10430000CF930E94C822811102C00E94AE228AEA85 +:1043100096E00E94E507C5E6C15049F00E94AA0850 +:104320008FE39CE90197F1F700C00000F5CF83EA25 +:1043300096E00E94E50789E20E94722181110CC17A +:104340008AE20E94722181110E94AE2285E00E94C1 +:10435000722181110E9422210E94D3228093C101E7 +:1043600087E00E9472218823A9F18BE10E947221CB +:10437000882351F08091C10181FB222720F991E02F +:10438000922790FB81F90EC08EE00E947221882353 +:1043900061F08091C10182FB222720F991E09227F0 +:1043A00090FB82F98093C10115C080E10E947221C7 +:1043B0009091C101882341F093FB222720F981E0ED +:1043C000822780FB93F904C0892F809580FB90F9A8 +:1043D0009093C1018091C1010E94D7220E94E522E1 +:1043E0008093DF0180EE0E947221882341F080914A +:1043F000DF01982F909590FB80F98093DF0189E38E +:104400000E947221882359F08091DF0181FB2227CD +:1044100020F991E0922790FB81F98093DF0182EEF1 +:104420000E947221882359F08091DF0182FB2227AC +:1044300020F991E0922790FB82F98093DF0186EECC +:104440000E947221882359F08091DF0183FB22278B +:1044500020F991E0922790FB83F98093DF0183EEAE +:104460000E947221882359F08091DF0184FB22276A +:1044700020F991E0922790FB84F98093DF0185E396 +:104480000E947221882359F08091DF0185FB222749 +:1044900020F991E0922790FB85F98093DF0181E379 +:1044A0000E947221882359F08091DF0186FB222728 +:1044B00020F991E0922790FB86F98093DF0181E15A +:1044C0000E947221882359F08091DF0187FB222707 +:1044D00020F991E0922790FB87F98093DF0180918A +:1044E000DF010E94E92287E20E947221C82F8EE13B +:1044F0000E9472218111C2608FE10E94722181119C +:10450000C46080E20E9472218111C86081E20E9431 +:1045100072218111C06182E20E9472218111C06208 +:1045200083E20E9472218111C06484E20E947221A0 +:10453000882311F0C06802C0CC2329F08C2F0E9480 +:10454000E0226C2F03C00E94DC22682F70E080E024 +:1045500090E0CF910C948F1DCF9108956DEE7EEF7A +:1045600080E090E00E94272C60E082E090E00E94D2 +:10457000152C60E083E090E00E94152C60E084E060 +:1045800090E00E94152C60E085E090E00C94152CE2 +:1045900080E090E00E940F2C21E08D3E9E4F09F0BC +:1045A00020E0822F089582E090E00C94072C682F81 +:1045B00082E090E00C94152C83E090E00C94072CA2 +:1045C000682F83E090E00C94152C84E090E00C942C +:1045D000072C682F84E090E00C94152C8091C90181 +:1045E00080FF0BC06091100185E0689FB00111242D +:1045F00075956795759567952BC081FF09C060918A +:10460000100185E0689FB00111247595679520C061 +:1046100082FF07C06091100185E0689FB0011124FE +:1046200017C09091CA019923D1F060910F0196179C +:1046300088F72091100185E0289F90011124929F16 +:10464000A001939F500D112470E0CA010E94D92B44 +:104650006038710540F46115710539F002C065E0FC +:1046600070E0862F08958FE7089581E00895809186 +:10467000C90180FF08C060910E0170E075956795D3 +:104680007595679521C081FF06C060910E0170E0AD +:104690007595679519C082FF04C060910E0170E0A6 +:1046A00010C09091CA019923C1F060910D01961735 +:1046B000A0F780910E01899FC001112470E00E9433 +:1046C000D92B6038710528F46115710521F0862F0A +:1046D00008958FE7089581E0089561E070E0F4CFD8 +:1046E000803F21F40E94EE22819504C0813F29F48D +:1046F0000E94EE228093CD010895823F21F40E9412 +:10470000EE22819504C0833F29F40E94EE2280931B +:10471000CC010895893F19F40E94372305C08A3FD0 +:1047200031F40E94372381958093CE0108958B3F09 +:1047300021F40E943723819504C08C3F29F40E9404 +:1047400037238093CF010895843F21F48091CB01DA +:10475000816017C0853F21F48091CB01826011C038 +:10476000863F21F48091CB0184600BC0873F21F408 +:104770008091CB01886005C0883F31F48091CB01E6 +:1047800080618093CB0108958D3F21F48091C90110 +:1047900081600BC08E3F21F48091C901826005C009 +:1047A0008F3F29F48091C90184608093C9010895E5 +:1047B000803F39F48091CD0187FF6CC01092CD010C +:1047C00069C0813F29F48091CD011816BCF362C005 +:1047D0009091CC01823F29F497FF5CC01092CC01EC +:1047E00059C0833F19F41916CCF354C0893F41F4E2 +:1047F0008091CE0118160CF04DC01092CE014AC027 +:104800008A3F29F48091CE0187FF44C0F6CF8B3FC9 +:1048100039F48091CF0187FF3DC01092CF013AC09B +:104820008C3F29F48091CF011816BCF333C0843F2C +:1048300021F48091CB018E7F17C0853F21F48091B8 +:10484000CB018D7F11C0863F21F48091CB018B7FFE +:104850000BC0873F21F48091CB01877F05C0883F43 +:1048600031F48091CB018F7E8093CB0113C08D3FBB +:1048700021F48091C9018E7F0BC08E3F21F480917D +:10488000C9018D7F05C08F3F29F48091C9018B7FBD +:104890008093C9018091CC0181110EC08091CD011E +:1048A00081110AC08091CE01811106C08091CF0193 +:1048B000811102C01092CA0108958091C10183FF45 +:1048C0007EC086EE96E00E94E5078091CB011F92A4 +:1048D0008F9381EE96E09F938F930E947E088FEDD9 +:1048E00096E00E94E5078091CC01282F332727FD11 +:1048F00030953F938F938CED96E09F938F930E941A +:104900007E088AED96E00E94E5078091CD01282F70 +:10491000332727FD30953F938F9387ED96E09F9344 +:104920008F930E947E0885ED96E00E94E5078091B6 +:10493000CE01282F332727FD30953F938F9382EDAB +:1049400096E09F938F930E947E0880ED96E00E94F0 +:10495000E5078091CF01282F332727FD30953F931E +:104960008F938DEC96E09F938F930E947E088AEC44 +:1049700096E00E94E5078091CA011F928F9387EC11 +:1049800096E09F938F930E947E0885EC96E00E94AC +:10499000E5078091C9011F928F9382EC96E09F9367 +:1049A0008F930E947E088FEB96E00E94E5078DB7FB +:1049B0009EB74C960FB6F8949EBF0FBE8DBF8BEC82 +:1049C00091E00E9477150E948F209093C8018093F8 +:1049D000C70108951F93CF93DF938091C7019091F2 +:1049E000C8010E94A720AC019091CA01992321F02F +:1049F0002091110130E006C0209112018AE0289F29 +:104A0000900111244217530708F486C08091CC010D +:104A1000C091CD01D091CE011091CF01811107C07D +:104A2000C11176C0D11174C0111172C075C09F3F01 +:104A300019F09F5F9093CA01181624F40E94EE2289 +:104A40008093CC018091CC0187FF05C00E94EE22AB +:104A500081958093CC011C1624F40E94EE22809351 +:104A6000CD018091CD0187FF05C00E94EE22819586 +:104A70008093CD016091CC01662339F1C091CD01C5 +:104A8000CC2319F1772767FD7095872F972F0E9408 +:104A9000DE2A23E333E343E35FE30E94422B0E94D9 +:104AA000AB2A6093CC016C2F772767FD7095872F19 +:104AB000972F0E94DE2A23E333E343E35FE30E9460 +:104AC000422B0E94AB2A6093CD011D1624F40E9454 +:104AD00037238093CE018091CE0187FF05C00E94CD +:104AE000372381958093CE01111624F40E94372339 +:104AF0008093CF018091CF0187FF05C00E943723AB +:104B000081958093CF01DF91CF911F910C945D240B +:104B10009F3F09F08ECF96CFDF91CF911F910895DF +:104B2000EBECF1E085E0DF011D928A95E9F7109248 +:104B3000CA011092C901089589E099E00E94E50731 +:104B40001F9281E08F931F9285E08F938BEB98E00B +:104B50009F938F930E947E080F900F900F900F905D +:104B60000F900F9008958330E9F128F4813061F0BF +:104B7000823009F10895853009F462C008F449C013 +:104B8000863009F474C0089580911201262F30E018 +:104B9000280F311D2F3F310524F4680F6093120157 +:104BA00003C08FEF80931201809112011F928F93A7 +:104BB00084EF97E072C080911101262F30E0280F1A +:104BC000311D2F3F310524F4680F6093110103C09C +:104BD0008FEF80931101809111011F928F9382EECC +:104BE00097E05BC080911001262F30E0280F311D27 +:104BF0002F3F310524F4680F6093100103C08FEF3D +:104C000080931001809110011F928F938FEC97E099 +:104C100044C080910F01262F30E0280F311D2F3F17 +:104C2000310524F4680F60930F0103C08FEF809368 +:104C30000F0180910F011F928F938AEB97E02DC097 +:104C400080910E01262F30E0280F311D2F3F3105B6 +:104C500024F4680F60930E0103C08FEF80930E0160 +:104C600080910E011F928F9381EA97E016C0809188 +:104C70000D01262F30E0280F311D2F3F310524F480 +:104C8000680F60930D0103C08FEF80930D01809139 +:104C90000D011F928F9386E897E09F938F930E9458 +:104CA0007E080F900F900F900F900895833081F140 +:104CB00028F4813059F08230D1F00895853009F41C +:104CC00049C0B8F1863009F456C0089580911201A8 +:104CD000681720F4861B8093120102C01092120103 +:104CE000809112011F928F9387E797E054C08091C3 +:104CF0001101681720F4861B8093110102C01092E5 +:104D00001101809111011F928F9385E697E043C0B6 +:104D100080911001681720F4861B8093100102C057 +:104D200010921001809110011F928F9382E597E0FD +:104D300032C080910F01681720F4861B80930F0109 +:104D400002C010920F0180910F011F928F938DE38B +:104D500097E021C080910E01681720F4861B809394 +:104D60000E0102C010920E0180910E011F928F93CE +:104D700084E297E010C080910D01681720F4861B33 +:104D800080930D0102C010920D0180910D011F92C0 +:104D90008F9389E097E09F938F930E947E080F90F6 +:104DA0000F900F900F900895CF93C82F1F928F935D +:104DB0008EE09AE09F938F930E947E0881E090E0BE +:104DC000A0E0B0E0BC01CD0104C0660F771F881FD2 +:104DD000991FCA95D2F70E948F1D0F900F900F90C8 +:104DE0000F90CF910C94CF19CF938732B0F58E31BD +:104DF00008F04AC28E3009F4C4C100F5873009F4C6 +:104E00008DC1A8F4863009F045C28091C101817F2F +:104E10008E7F8093C1018DE79BE00E94E50786E1CC +:104E20009FE00E94E50781E08093D10175C1883041 +:104E300009F43FC08B3009F46BC12CC2863109F4F0 +:104E4000E6C120F4803109F4B0C124C2893109F4EB +:104E5000C7C18B3109F481C11DC2883309F458C11F +:104E600050F4893209F412C2853309F40FC2873233 +:104E700009F40CC20FC2833409F408C228F48A333F +:104E800008F408C2895303C2883409F003C20E949F +:104E9000CF198AEF9EE00E94E5079FEF23ED80E3A4 +:104EA000915020408040E1F700C000000E94222184 +:104EB00033C18AE19FE00E94E5078CE79EE00E94F3 +:104EC000E5070E94DC221F928F9389E79EE09F9363 +:104ED0008F930E947E0887E79EE00E94E5070E946C +:104EE000D322C82F84E69EE00E94E5071F92CF934D +:104EF0008FE59EE09F938F930E947E088DE59EE054 +:104F00000E94E50783E59EE00E94E5078C2F8170F3 +:104F10001F928F9380E59EE09F938F930E947E085F +:104F20008EE49EE00E94E50784E49EE00E94E5078F +:104F3000C1FB882780F91F928F9381E49EE09F93A5 +:104F40008F930E947E088FE39EE00E94E50783E333 +:104F50009EE00E94E507C2FB882780F91F928F938D +:104F600080E39EE09F938F930E947E088EE29EE0F6 +:104F70000E94E50785E29EE00E94E507C3FBCC277F +:104F8000C0F91F92CF9382E29EE09F938F930E947D +:104F90007E0880E29EE00E94E5070E94E522C82F7D +:104FA0008CE09EE00E94E5071F92CF9387E09EE091 +:104FB0009F938F930E947E0885E09EE00E94E50704 +:104FC0008CEE9DE00E94E5078C2F81701F928F93DD +:104FD00089EE9DE09F938F930E947E088DB79EB7C8 +:104FE00080960FB6F8949EBF0FBE8DBF87EE9DE0F2 +:104FF0000E94E50780ED9DE00E94E507C1FB882740 +:1050000080F91F928F938DEC9DE09F938F930E9468 +:105010007E088BEC9DE00E94E50789EB9DE00E94F5 +:10502000E507C2FB882780F91F928F9386EB9DE0EE +:105030009F938F930E947E0884EB9DE00E94E5077A +:1050400082EA9DE00E94E507C3FB882780F91F9252 +:105050008F938FE99DE09F938F930E947E088DE947 +:105060009DE00E94E50783E99DE00E94E507C4FBFF +:10507000882780F91F928F9380E99DE09F938F93FB +:105080000E947E088EE89DE00E94E5078CE79DE087 +:105090000E94E507C5FB882780F91F928F9389E757 +:1050A0009DE09F938F930E947E0887E79DE00E947A +:1050B000E5078BE59DE00E94E507C6FB882780F9A0 +:1050C0001F928F9388E59DE09F938F930E947E08A7 +:1050D00086E59DE00E94E5078EE49DE00E94E507DD +:1050E000C7FBCC27C0F91F92CF938BE49DE09F9321 +:1050F0008F930E947E0889E49DE00E94E5078DB7AA +:105100009EB74C960FB6F8949EBF0FBE8DBF04C0DD +:1051100084EA9BE00E94E507C1E0C1C08091C10123 +:10512000C82FC095C170C0FB80F98093C101CC230A +:1051300049F08EEE9EE00E94E5078091C1018660F5 +:10514000886048C081EE9EE00E94E5078091C10121 +:10515000897F877F8093C101DFCF9091C10191FB4F +:10516000CC27C0F981E0C827892FC0FB81F9809343 +:10517000C101CC2319F084ED9EE027C086EC9EE0AF +:10518000C9CF9091C10192FBCC27C0F981E0C8271B +:10519000892FC0FB82F98093C101CC2319F087EBE2 +:1051A0009EE013C087EA9EE0B5CF9091C10193FBCA +:1051B000CC27C0F981E0C827892FC0FB83F98093F1 +:1051C000C101CC2351F08BE99EE00E94E50780915C +:1051D000C10181608093C10162C08EE89EE09ACFD8 +:1051E0008EE69BE00E94E50786E49BE00E94E507CF +:1051F00080E19BE00E94E50783EE9AE00E94E507CC +:1052000084EA9AE00E94E50789E79AE083CF8BE67B +:105210009AE00E94E5070E9422151F928F9381E574 +:105220009AE09F938F930E947E0880910A011F92BB +:105230008F938AE39AE09F938F930E947E088091D8 +:1052400064011F928F9387E29AE09F938F930E944D +:105250007E088091C3019091C401A091C501B091D5 +:10526000C601BF93AF939F938F9383E19AE09F937F +:105270008F930E947E088DB79EB742960FB6F89422 +:105280009EBF0FBE8DBF48CF8D5101C080E00E94F0 +:10529000D42642CF8CE89EE00E94E507C0E08C2F28 +:1052A000CF91089580E0089580E00895CF93C82FAE +:1052B0008091D101813071F020F0823009F44BC02F +:1052C00042C1E0910B01F0910C018081823209F022 +:1052D0003CC107C0E0910B01F0910C01808182324A +:1052E00061F48C2F0E945229811104C08C2F0E94DE +:1052F000F4262FC081E090E02CC08C2F0E9454290E +:10530000811126C0C431E1F070F4CB3081F0C0319E +:10531000D1F40E949C2586E09AE00E94E50782E095 +:105320008093D10115C0C93259F0C83361F48DE7BB +:105330009BE00E94E5078AE09AE00E94E50708C02A +:105340001092D10104C184E09AE00E94E507FFC0F9 +:1053500081E08170FEC0C43228F5CE3108F0C1C0B2 +:10536000CB30A1F1D0F4C73009F0D3C08EE18093E7 +:10537000120182E3809311018AE08093100184E19D +:1053800080930F0188E080930E0188E280930D01E5 +:105390008AEA98E00E94E507BFC0C33149F1C431F1 +:1053A000C1F0B7C0CB3409F4A9C028F4C93289F0E0 +:1053B000C83361F0AEC0C13509F49EC0C23509F4EE +:1053C00099C0CE3409F0A5C06AE09EC00E949C2519 +:1053D000A3C08091D001882319F01092D0019CC005 +:1053E00087EB98E00E94E50781E08093D101B1C08E +:1053F00081E998E00E94E5078FE798E00E94E507C1 +:10540000809112011F928F938CE798E09F938F9366 +:105410000E947E088AE798E00E94E50788E698E007 +:105420000E94E507809111011F928F9385E698E015 +:105430009F938F930E947E0883E698E00E94E50781 +:1054400084E598E00E94E507809110011F928F93F8 +:1054500081E598E09F938F930E947E088FE498E007 +:105460000E94E5078EE398E00E94E50780910F0116 +:105470001F928F938BE398E09F938F930E947E08F7 +:1054800089E398E00E94E50784E298E00E94E5073E +:1054900080910E011F928F9381E298E09F938F93EA +:1054A0000E947E088FE198E00E94E50788E098E07E +:1054B0000E94E50780910D011F928F9385E098E08F +:1054C0009F938F930E947E0883E098E00E94E507F7 +:1054D0008DB79EB748960FB6F8949EBF0FBE8DBF8E +:1054E0001BC0CE51EC2FF0E0E95DFE4F8081809330 +:1054F000D00112C061E003C061E006C06AE08091A3 +:10550000D0010E94B32508C08091D0010E94562688 +:1055100003C088EA98E013C08091D001882369F025 +:105520001F928F9382EA98E09F938F930E947E0848 +:105530000F900F900F900F9004C08FE998E00E9499 +:10554000E50781E006C01092D10180E002C080E052 +:1055500000CFCF91089504D06894B1118DC0089503 +:1055600070D088F09F5790F0B92F9927B751A0F0CD +:10557000D1F0660F771F881F991F1AF0BA95C9F7E7 +:1055800012C0B13081F077D0B1E0089574C0672FB8 +:10559000782F8827B85F39F0B93FCCF38695779597 +:1055A0006795B395D9F73EF4909580957095619580 +:1055B0007F4F8F4F9F4F0895E89409C097FB3EF4AB +:1055C00090958095709561957F4F8F4F9F4F992350 +:1055D000A9F0F92F96E9BB279395F69587957795CE +:1055E0006795B795F111F8CFFAF4BB0F11F460FF8E +:1055F0001BC06F5F7F4F8F4F9F4F16C0882311F0E6 +:1056000096E911C0772321F09EE8872F762F05C0F9 +:10561000662371F096E8862F70E060E02AF09A9594 +:10562000660F771F881FDAF7880F9695879597F989 +:10563000089557FD9058440F551F59F05F3F71F082 +:105640004795880F97FB991F61F09F3F79F08795E9 +:105650000895121613061406551FF2CF4695F1DF72 +:1056600008C0161617061806991FF1CF8695710502 +:10567000610508940895E894BB2766277727CB0136 +:1056800097F908950BD078C069D028F06ED018F043 +:10569000952309F05AC05FC01124EECFCADFA0F3F2 +:1056A000959FD1F3950F50E0551F629FF001729FB7 +:1056B000BB27F00DB11D639FAA27F00DB11DAA1FD6 +:1056C000649F6627B00DA11D661F829F2227B00D23 +:1056D000A11D621F739FB00DA11D621F839FA00DAE +:1056E000611D221F749F3327A00D611D231F849FFE +:1056F000600D211D822F762F6A2F11249F57504055 +:105700008AF0E1F088234AF0EE0FFF1FBB1F661FEF +:10571000771F881F91505040A9F79E3F510570F0A8 +:1057200014C0AACF5F3FECF3983EDCF386957795E3 +:105730006795B795F795E7959F5FC1F7FE2B880FA3 +:10574000911D9695879597F9089597F99F6780E839 +:1057500070E060E008959FEF80EC089500240A94C3 +:105760001616170618060906089500240A9412163C +:105770001306140605060895092E0394000C11F46F +:10578000882352F0BB0F40F4BF2B11F460FF04C01C +:105790006F5F7F4F8F4F9F4F0895991B79E004C033 +:1057A000991F961708F0961B881F7A95C9F7809560 +:1057B000089597FB072E16F4009407D077FD09D0C3 +:1057C0000E94F32B07FC05D03EF4909581959F4FE6 +:1057D0000895709561957F4F0895EE0FFF1F059016 +:1057E000F491E02D0994AA1BBB1B51E107C0AA1F2D +:1057F000BB1FA617B70710F0A61BB70B881F991F72 +:105800005A95A9F780959095BC01CD010895F99915 +:10581000FECF92BD81BDF89A992780B50895A8E181 +:10582000B0E042E050E00C942F2C262FF999FECFE7 +:1058300092BD81BDF89A019700B4021639F01FBAE3 +:1058400020BD0FB6F894FA9AF99A0FBE0895019602 +:10585000272F0E94162C0C94152CDC01CB01FC0187 +:10586000F999FECF06C0F2BDE1BDF89A319600B4B9 +:0E5870000D9241505040B8F70895F894FFCFC4 +:10587E00880D790E560E220EEE0D01B60128081473 +:10588E000A321E3F4D36203106E405AE058E051A4E +:10589E000533054C056505010203040506070809D5 +:0258AE000000F8 +:00000001FF diff --git a/keyboards/hhkb/keymaps/lxol/keymap.c b/keyboards/hhkb/keymaps/lxol/keymap.c new file mode 100644 index 000000000..ccf1e0704 --- /dev/null +++ b/keyboards/hhkb/keymaps/lxol/keymap.c @@ -0,0 +1,208 @@ +/* -*- eval: (turn-on-orgtbl); -*- + * lxol HHKB Layout + */ +#include "hhkb.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/keyboards/hhkb/matrix.c b/keyboards/hhkb/matrix.c new file mode 100644 index 000000000..2dfb2f5e1 --- /dev/null +++ b/keyboards/hhkb/matrix.c @@ -0,0 +1,204 @@ +/* +Copyright 2011 Jun Wako + +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 . +*/ + +/* + * scan matrix + */ +#include +#include +#include +#include "print.h" +#include "debug.h" +#include "util.h" +#include "timer.h" +#include "matrix.h" +#include "hhkb_avr.h" +#include +#include "suspend.h" +#include "lufa.h" + + +// matrix power saving +#define MATRIX_POWER_SAVE 10000 +static uint32_t matrix_last_modified = 0; + +// matrix state buffer(1:on, 0:off) +static matrix_row_t *matrix; +static matrix_row_t *matrix_prev; +static matrix_row_t _matrix0[MATRIX_ROWS]; +static matrix_row_t _matrix1[MATRIX_ROWS]; + + +inline +uint8_t matrix_rows(void) +{ + return MATRIX_ROWS; +} + +inline +uint8_t matrix_cols(void) +{ + return MATRIX_COLS; +} + +void matrix_init(void) +{ +#ifdef DEBUG + debug_enable = true; + debug_keyboard = true; +#endif + + KEY_INIT(); + + // initialize matrix state: all keys off + for (uint8_t i=0; i < MATRIX_ROWS; i++) _matrix0[i] = 0x00; + for (uint8_t i=0; i < MATRIX_ROWS; i++) _matrix1[i] = 0x00; + matrix = _matrix0; + matrix_prev = _matrix1; +} + +uint8_t matrix_scan(void) +{ + uint8_t *tmp; + + tmp = matrix_prev; + matrix_prev = matrix; + matrix = tmp; + + // power on + if (!KEY_POWER_STATE()) KEY_POWER_ON(); + for (uint8_t row = 0; row < MATRIX_ROWS; row++) { + for (uint8_t col = 0; col < MATRIX_COLS; col++) { + KEY_SELECT(row, col); + _delay_us(5); + + // Not sure this is needed. This just emulates HHKB controller's behaviour. + if (matrix_prev[row] & (1< 20/(1000000/TIMER_RAW_FREQ)) { + matrix[row] = matrix_prev[row]; + } + + _delay_us(5); + KEY_PREV_OFF(); + KEY_UNABLE(); + + // NOTE: KEY_STATE keep its state in 20us after KEY_ENABLE. + // This takes 25us or more to make sure KEY_STATE returns to idle state. +#ifdef HHKB_JP + // Looks like JP needs faster scan due to its twice larger matrix + // or it can drop keys in fast key typing + _delay_us(30); +#else + _delay_us(75); +#endif + } + if (matrix[row] ^ matrix_prev[row]) matrix_last_modified = timer_read32(); + } + // power off + if (KEY_POWER_STATE() && + (USB_DeviceState == DEVICE_STATE_Suspended || + USB_DeviceState == DEVICE_STATE_Unattached ) && + timer_elapsed32(matrix_last_modified) > MATRIX_POWER_SAVE) { + KEY_POWER_OFF(); + suspend_power_down(); + } + return 1; +} + +bool matrix_is_modified(void) +{ + for (uint8_t i = 0; i < MATRIX_ROWS; i++) { + if (matrix[i] != matrix_prev[i]) + return true; + } + return false; +} + +inline +bool matrix_has_ghost(void) +{ + return false; +} + +inline +bool matrix_is_on(uint8_t row, uint8_t col) +{ + return (matrix[row] & (1<= 0; --r) { + count += bitpop16(matrix_get_row(r)); + } + return count; +} + +void matrix_power_up(void) { + KEY_POWER_ON(); +} +void matrix_power_down(void) { + KEY_POWER_OFF(); +} -- cgit v1.2.3-24-g4f1b From 13bb6b4b7fdd2b3e419d0f89c93fb980b00eeb9b Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Thu, 23 Jun 2016 22:18:20 -0400 Subject: Backlight abstraction and other changes (#439) * redoes matrix pins, abstracts backlight code for B5,6,7 * slimming down keyboard stuff, backlight breathing implemented * don't call backlight init when no pin * cleans up user/kb/quantum calls, keyboard files * fix pvc atomic * replaces CHANNEL with correct var in breathing * removes .hexs, updates readmes, updates template * cleans-up clueboards, readmes to lowercase * updates readme --- keyboards/hhkb/README.md | 180 ---- keyboards/hhkb/hhkb.c | 30 +- keyboards/hhkb/hhkb.h | 8 +- keyboards/hhkb/keymaps/default/compiled.hex | 1381 -------------------------- keyboards/hhkb/keymaps/lxol/compiled.hex | 1421 --------------------------- keyboards/hhkb/readme.md | 180 ++++ 6 files changed, 182 insertions(+), 3018 deletions(-) delete mode 100644 keyboards/hhkb/README.md delete mode 100644 keyboards/hhkb/keymaps/default/compiled.hex delete mode 100644 keyboards/hhkb/keymaps/lxol/compiled.hex create mode 100644 keyboards/hhkb/readme.md (limited to 'keyboards/hhkb') diff --git a/keyboards/hhkb/README.md b/keyboards/hhkb/README.md deleted file mode 100644 index 2bfec7aa5..000000000 --- a/keyboards/hhkb/README.md +++ /dev/null @@ -1,180 +0,0 @@ -hhkb_qmk keyboard firmware -====================== - -## Quantum MK Firmware - -You have access to a bunch of goodies! Check out the Makefile to enable/disable some of the features. Uncomment the `#` to enable them. Setting them to `no` does nothing and will only confuse future you. - - BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality - MIDI_ENABLE = yes # MIDI controls - # UNICODE_ENABLE = yes # Unicode support - this is commented out, just as an example. You have to use #, not // - BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID - -## Quick aliases to common actions - -Your keymap can include shortcuts to common operations (called "function actions" in tmk). - -### Switching and toggling layers - -`MO(layer)` - momentary switch to *layer*. As soon as you let go of the key, the layer is deactivated and you pop back out to the previous layer. When you apply this to a key, that same key must be set as `KC_TRNS` on the destination layer. Otherwise, you won't make it back to the original layer when you release the key (and you'll get a keycode sent). You can only switch to layers *above* your current layer. If you're on layer 0 and you use `MO(1)`, that will switch to layer 1 just fine. But if you include `MO(3)` on layer 5, that won't do anything for you -- because layer 3 is lower than layer 5 on the stack. - -`LT(layer, kc)` - momentary switch to *layer* when held, and *kc* when tapped. Like `MO()`, this only works upwards in the layer stack (`layer` must be higher than the current layer). - -`TG(layer)` - toggles a layer on or off. As with `MO()`, you should set this key as `KC_TRNS` in the destination layer so that tapping it again actually toggles back to the original layer. Only works upwards in the layer stack. - -### Fun with modifier keys - -* `LSFT(kc)` - applies left Shift to *kc* (keycode) - `S(kc)` is an alias -* `RSFT(kc)` - applies right Shift to *kc* -* `LCTL(kc)` - applies left Control to *kc* -* `RCTL(kc)` - applies right Control to *kc* -* `LALT(kc)` - applies left Alt to *kc* -* `RALT(kc)` - applies right Alt to *kc* -* `LGUI(kc)` - applies left GUI (command/win) to *kc* -* `RGUI(kc)` - applies right GUI (command/win) to *kc* - -You can also chain these, like this: - - LALT(LCTL(KC_DEL)) -- this makes a key that sends Alt, Control, and Delete in a single keypress. - -The following shortcuts automatically add `LSFT()` to keycodes to get commonly used symbols. Their long names are also available and documented in `/quantum/keymap_common.h`. - - KC_TILD ~ - KC_EXLM ! - KC_AT @ - KC_HASH # - KC_DLR $ - KC_PERC % - KC_CIRC ^ - KC_AMPR & - KC_ASTR * - KC_LPRN ( - KC_RPRN ) - KC_UNDS _ - KC_PLUS + - KC_LCBR { - KC_RCBR } - KC_PIPE | - KC_COLN : - -`MT(mod, kc)` - is *mod* (modifier key - MOD_LCTL, MOD_LSFT) when held, and *kc* when tapped. In other words, you can have a key that sends Esc (or the letter O or whatever) when you tap it, but works as a Control key or a Shift key when you hold it down. - -These are the values you can use for the `mod` in `MT()` (right-hand modifiers are not available): - - * MOD_LCTL - * MOD_LSFT - * MOD_LALT - * MOD_LGUI - -These can also be combined like `MOD_LCTL | MOD_LSFT` e.g. `MT(MOD_LCTL | MOD_LSFT, KC_ESC)` which would activate Control and Shift when held, and send Escape when tapped. - -We've added shortcuts to make common modifier/tap (mod-tap) mappings more compact: - - * `CTL_T(kc)` - is LCTL when held and *kc* when tapped - * `SFT_T(kc)` - is LSFT when held and *kc* when tapped - * `ALT_T(kc)` - is LALT when held and *kc* when tapped - * `GUI_T(kc)` - is LGUI when held and *kc* when tapped - * `ALL_T(kc)` - is Hyper (all mods) when held and *kc* when tapped. To read more about what you can do with a Hyper key, see [this blog post by Brett Terpstra](http://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/) - -### Temporarily setting the default layer - -`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. - -### 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). - -Instead of using `FNx` when defining `ACTION_*` functions, you can use `F(x)` - the benefit here is being able to use more than 32 function actions (up to 4096), if you happen to need them. - -## Macro shortcuts: Send a whole string when pressing just one key - -Instead of using the `ACTION_MACRO` function, you can simply use `M(n)` to access macro *n* - *n* will get passed into the `action_get_macro` as the `id`, and you can use a switch statement to trigger it. This gets called on the keydown and keyup, so you'll need to use an if statement testing `record->event.pressed` (see keymap_default.c). - -```c -const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) // this is the function signature -- just copy/paste it into your keymap file as it is. -{ - switch(id) { - case 0: // this would trigger when you hit a key mapped as M(0) - if (record->event.pressed) { - return MACRO( I(255), T(H), T(E), T(L), T(L), W(255), T(O), END ); // this sends the string 'hello' when the macro executes - } - break; - } - return MACRO_NONE; -}; -``` -A macro can include the following commands: - -* I() change interval of stroke in milliseconds. -* D() press key. -* U() release key. -* T() type key(press and release). -* W() wait (milliseconds). -* END end mark. - -So above you can see the stroke interval changed to 255ms between each keystroke, then a bunch of keys being typed, waits a while, then the macro ends. - -Note: Using macros to have your keyboard send passwords for you is a bad idea. - -### Additional keycode aliases for software-implemented layouts (Colemak, Dvorak, etc) - -Everything is assuming you're in Qwerty (in software) by default, but there is built-in support for using a Colemak or Dvorak layout by including this at the top of your keymap: - - #include "keymap_.h" - -Where is "colemak" or "dvorak". After including this line, you will get access to: - - * `CM_*` for all of the Colemak-equivalent characters - * `DV_*` for all of the Dvorak-equivalent characters - -These implementations assume you're using Colemak or Dvorak on your OS, not on your keyboard - this is referred to as a software-implemented layout. If your computer is in Qwerty and your keymap is in Colemak or Dvorak, this is referred to as a firmware-implemented layout, and you won't need these features. - -To give an example, if you're using software-implemented Colemak, and want to get an `F`, you would use `CM_F` - `KC_F` under these same circumstances would result in `T`. - -## Additional language support - -In `quantum/keymap_extras/`, you'll see various language files - these work the same way as the alternative layout ones do. Most are defined by their two letter country/language code followed by an underscore and a 4-letter abbreviation of its name. `FR_UGRV` which will result in a `ù` when using a software-implemented AZERTY layout. It's currently difficult to send such characters in just the firmware (but it's being worked on - see Unicode support). - -## Unicode support - -You can currently send 4 hex digits with your OS-specific modifier key (RALT for OSX with the "Unicode Hex Input" layout) - this is currently limited to supporting one OS at a time, and requires a recompile for switching. 8 digit hex codes are being worked on. The keycode function is `UC(n)`, where *n* is a 4 digit hexidecimal. Enable from the Makefile. - -## Other firmware shortcut keycodes - -* `RESET` - puts the MCU in DFU mode for flashing new firmware (with `make dfu`) -* `DEBUG` - the firmware into debug mode - you'll need hid_listen to see things -* `BL_ON` - turns the backlight on -* `BL_OFF` - turns the backlight off -* `BL_` - sets the backlight to level *n* -* `BL_INC` - increments the backlight level by one -* `BL_DEC` - decrements the backlight level by one -* `BL_TOGG` - toggles the backlight -* `BL_STEP` - steps through the backlight levels - -Enable the backlight from the Makefile. - -## MIDI functionalty - -This is still a WIP, but check out `quantum/keymap_midi.c` to see what's happening. Enable from the Makefile. - -## Bluetooth functionality - -This requires [some hardware changes](https://www.reddit.com/r/MechanicalKeyboards/comments/3psx0q/the_planck_keyboard_with_bluetooth_guide_and/?ref=search_posts), but can be enabled via the Makefile. The firmware will still output characters via USB, so be aware of this when charging via a computer. It would make sense to have a switch on the Bluefruit to turn it off at will. - -## Building - -Download or clone the whole firmware and navigate to the keyboards/planck 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 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 a file in the keymaps folder named `.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|] -``` -Keymaps follow the format **__\.c__** and are stored in the `keymaps` folder. diff --git a/keyboards/hhkb/hhkb.c b/keyboards/hhkb/hhkb.c index 6897026c6..a9d35123f 100644 --- a/keyboards/hhkb/hhkb.c +++ b/keyboards/hhkb/hhkb.c @@ -1,29 +1 @@ -#include "hhkb.h" - -__attribute__ ((weak)) -void matrix_init_user(void) { - // leave these blank -}; - -__attribute__ ((weak)) -void matrix_scan_user(void) { - // leave these blank -}; - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - if (matrix_init_user) { - (*matrix_init_user)(); - } -}; - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - if (matrix_scan_user) { - (*matrix_scan_user)(); - } -}; +#include "hhkb.h" \ No newline at end of file diff --git a/keyboards/hhkb/hhkb.h b/keyboards/hhkb/hhkb.h index 093d7aeab..cc756c456 100644 --- a/keyboards/hhkb/hhkb.h +++ b/keyboards/hhkb/hhkb.h @@ -1,10 +1,7 @@ #ifndef HHKB_H #define HHKB_H -#include "matrix.h" -#include "keymap.h" -//#include "backlight.h" -#include +#include "quantum.h" #define KEYMAP( \ K31, K30, K00, K10, K11, K20, K21, K40, K41, K60, K61, K70, K71, K50, K51, \ @@ -24,7 +21,4 @@ { K70, K71, K72, K73, K74, K75, K76, KC_NO } \ } -void matrix_init_user(void); -void matrix_scan_user(void); - #endif diff --git a/keyboards/hhkb/keymaps/default/compiled.hex b/keyboards/hhkb/keymaps/default/compiled.hex deleted file mode 100644 index b3af69527..000000000 --- a/keyboards/hhkb/keymaps/default/compiled.hex +++ /dev/null @@ -1,1381 +0,0 @@ -:100000000C9452060C9496060C9496060C94960644 -:100010000C9496060C9496060C9496060C949606F0 -:100020000C9496060C9496060C945A110C942C126F -:100030000C941C1F0C9496060C9496060C94960631 -:100040000C9496060C9496060C9496060C949606C0 -:100050000C9496060C94BC1F0C9496060C94960671 -:100060000C9496060C9496060C9496060C949606A0 -:100070000C9496060C9496060C9496060C94960690 -:100080000C9496060C9496060C9496060C94960680 -:100090000C9496060C9496060C9496060C94960670 -:1000A0000C9496060C9496060C9496069912BB1224 -:1000B000A913BB12A91300132313A91378138B13CD -:1000C0006516651694169416D316F316231823187E -:1000D000FE162318AE17AE171418231823181D1870 -:1000E000BB17BB17BB17BB17BB17BB17BB17BB1780 -:1000F000BB17BB17BB17BB17BB17BB17BB17BB1770 -:10010000CB17D917E017E717F117253032583A20E7 -:10011000253038620A000A722F63203031323334BE -:100120003536370A001F0014001A00160004001D9F -:10013000001B000600200021001500080007000930 -:100140000019000500220023001C0017000A000B04 -:1001500000110000001E0029002B00E000E100E279 -:1001600000E3002C002400250018000C000E000DF8 -:100170000010000000310035002A0028000152E57F -:1001800000E600E700260027001200130033000FEE -:1001900000360000002D002E0030002F0034003803 -:1001A00000370000003B0001000100A900AA000187 -:1001B00000010001003C003D0001000100A8000119 -:1001C00000010001003E003F000100010001005558 -:1001D00000570000003A00A50039000100010001AD -:1001E000000100010040004100010046004A0054A7 -:1001F000005600000049004C002A00580001000190 -:100200000001000100420043004700480050004B3D -:10021000004D00000044004500010052004F005115 -:10022000004E0000000A44454255473A20656E6181 -:10023000626C65642E0A005B735D004B6579626FCA -:100240006172642073746172742E0A005B575D00E2 -:100250005B535D005B525D005B445D005B435D0092 -:100260001203480048004B00420020006D006F0060 -:10027000640000000C0371002E006D002E006B0066 -:1002800000000403090409027400040100A0FA0933 -:100290000400000103010100092111010001223FB6 -:1002A000000705810308000A090401000103010297 -:1002B00000092111010001224D00070582030800F9 -:1002C0000A090402000103000000092111010001D4 -:1002D0002236000705830308000A0904030002030D -:1002E00000000009211101000122200007058403FC -:1002F0002000010705040320000112011001000085 -:100300000008EDFEFECA0401010200010631FF09EA -:1003100074A1010975150025FF9520750881020952 -:1003200076150025FF952075089102C0050109800A -:10033000A101850216010026B7001A01002AB700A4 -:10034000751095018100C0050C0901A101850316F6 -:100350000100269C021A01002A9C02751095018159 -:1003600000C005010902A1010901A1000509190147 -:100370002905150025019505750181029501750373 -:1003800081010501093009311581257F9502750824 -:10039000810609381581257F950175088106050CB0 -:1003A0000A38021581257F950175088106C0C005B0 -:1003B000010906A101050719E029E71500250195A6 -:1003C0000875018102950175088101050819012947 -:1003D00005950575019102950175039101050719B0 -:1003E0000029FF150025FF950675088100C00A0049 -:1003F0002530325820006B6579626F6172645F72DC -:1004000065706F72743A20004B6579626F61726437 -:10041000204C4544732073746174653A2025780A32 -:1004200000646F6E652E0A00626F6F676D616769A9 -:1004300063207363616E3A202E2E2E2000290A005D -:100440002575002F002575005D280025640020001B -:10045000256400200025640020002564007C002520 -:10046000303258006D6F7573656B6579205B62740F -:100470006E7C782079207620685D287265702F6107 -:10048000636C293A205B006D6B5F776865656C5F14 -:1004900074696D655F746F5F6D6178203D202564C0 -:1004A0000A006D6B5F776865656C5F6D61785F737F -:1004B00070656564203D2025640A006D6B5F74697A -:1004C0006D655F746F5F6D6178203D2025640A0063 -:1004D0006D6B5F6D61785F7370656564203D20258D -:1004E000640A006D6B5F696E74657276616C203DA5 -:1004F0002025640A006D6B5F64656C6179203D2086 -:1005000025640A006D6B5F776865656C5F74696D63 -:10051000655F746F5F6D6178203D2025640A006D12 -:100520006B5F776865656C5F6D61785F737065653B -:1005300064203D2025640A006D6B5F74696D655F02 -:10054000746F5F6D6178203D2025640A006D6B5FDC -:100550006D61785F7370656564203D2025640A00D5 -:100560006D6B5F696E74657276616C203D202564E9 -:100570000A006D6B5F64656C6179203D2025640A1B -:10058000000A00257500363A20776865656C5F744F -:10059000696D655F746F5F6D61783A20000A0025B0 -:1005A0007500353A20776865656C5F6D61785F73BB -:1005B000706565643A20000A00257500343A20749D -:1005C000696D655F746F5F6D61783A20000A002580 -:1005D0007500333A206D61785F73706565643A2009 -:1005E000000A00257500323A20696E7465727661E2 -:1005F0006C286D73293A20000A00257500313A20D5 -:1006000064656C6179282A31306D73293A20000ABB -:10061000092D2056616C756573202D0A004D3E0032 -:100620004D25643E20003F0073657420646566615B -:10063000756C740A00433E2000776865726520641B -:10064000656C74613A20637572736F723D25642C1A -:1006500020776865656C3D25640A5365652068747C -:1006600074703A2F2F656E2E77696B6970656469B7 -:10067000612E6F72672F77696B692F4D6F75736588 -:100680005F6B6579730A000A092D204D6F757365DC -:100690006B6579202D0A4553432F713A09717569AD -:1006A000740A313A0964656C6179282A31306D73B6 -:1006B000290A323A09696E74657276616C286D7325 -:1006C000290A333A096D61785F73706565640A348D -:1006D0003A0974696D655F746F5F6D61780A353AC8 -:1006E00009776865656C5F6D61785F7370656564D7 -:1006F0000A363A09776865656C5F74696D655F7481 -:100700006F5F6D61780A0A703A097072696E7420C1 -:1007100076616C7565730A643A0973657420646563 -:100720006661756C74730A75703A092B310A646FCF -:10073000776E3A092D310A706775703A092B31309E -:100740000A7067646F776E3A092D31300A0A737048 -:10075000656564203D2064656C7461202A206D61AC -:10076000785F7370656564202A2028726570656102 -:1007700074202F2074696D655F746F5F6D617829D7 -:100780000A003F004D3E2000433E20004C25640AF5 -:100790000074696D65725F636F756E743A20253001 -:1007A000346C580A006B6579626F6172645F6964CA -:1007B0006C653A2025580A006B6579626F61726436 -:1007C0005F70726F746F636F6C3A2025580A00680F -:1007D0006F73745F6B6579626F6172645F6C65647F -:1007E0007328293A2025580A000A092D20537461DC -:1007F000747573202D0A004743433A20342E392E56 -:1008000032204156522D4C4942433A20312E382E47 -:1008100031204156525F415243483A206176723549 -:100820000A004F5054494F4E533A204C55464120F0 -:10083000424F4F544D41474943204D4F5553454B2F -:1008400045592045585452414B455920434F4E532A -:100850004F4C4520434F4D4D414E44203531320AD7 -:10086000004255494C443A20313637313865662DBF -:100870006469727479202832333A33393A32382035 -:100880004A756E2020392032303136290A00564907 -:10089000443A2030784645454428712E6D2E6B2908 -:1008A000205049443A203078434146452848484B37 -:1008B00042206D6F6429205645523A2030783031FD -:1008C00030340A00444553433A20712E6D2E6B207C -:1008D0006B6579626F617264206669726D776172AF -:1008E0006520666F722048484B420A000A092D2095 -:1008F00056657273696F6E202D0A000A092D204318 -:100900006F6E736F6C65202D0A4553432F713A0942 -:10091000717569740A6D3A096D6F7573656B6579E8 -:100920000A000A092D204D61676963202D0A443AA7 -:10093000094465627567204D65737361676520546E -:100940006F67676C650A583A094D6174726978205F -:100950004465627567204D6F646520546F67676CEE -:1009600065202D2053686F77206B657970726573F1 -:1009700073657320696E206D617472697820677287 -:1009800069640A4B3A094B6579626F61726420446D -:100990006562756720546F67676C65202D2053680A -:1009A0006F77206B65797072657373207265706FF5 -:1009B00072740A4D3A094465627567204D6F75730C -:1009C0006520546F67676C650A563A0956657273FD -:1009D000696F6E0A533A095374617475730A433A26 -:1009E00009416374697661746520436F6E736F6C3F -:1009F00065204D6F64650A46312D4631303A095302 -:100A0000776974636820746F204C61796572203057 -:100A10002D392028463130203D204C30290A302DF8 -:100A2000393A0953776974636820746F204C61798F -:100A3000657220302D390A4553433A09537769745A -:100A4000636820746F204C617965722030202861C2 -:100A50006C7465726E617465206B65792031290A4A -:100A600047524156453A0953776974636820746F59 -:100A7000204C6179657220302028616C7465726E3B -:100A8000617465206B65792032290A5041555345C0 -:100A90003A094A756D7020746F20426F6F746C6FE5 -:100AA0006164657220285265736574290A453A09A4 -:100AB0005072696E7420454550524F4D20536574F5 -:100AC00074696E67730A000A002575002E6E6B72DA -:100AD0006F3A20000A002575002E737761705F62FF -:100AE00061636B736C6173685F6261636B73706188 -:100AF00063653A20000A002575002E737761705FE8 -:100B000067726176655F6573633A20000A00257538 -:100B1000002E6E6F5F6775693A20000A0025750028 -:100B20002E737761705F72616C745F726775693A7A -:100B300020000A002575002E737761705F6C616C70 -:100B4000745F6C6775693A20000A002575002E6392 -:100B50006170736C6F636B5F746F5F636F6E7472E1 -:100B60006F6C3A20000A002575002E737761705F64 -:100B7000636F6E74726F6C5F636170736C6F636BC5 -:100B80003A20000A0025303258006B65796D61709B -:100B90005F636F6E6669672E7261773A20000A00A4 -:100BA0002575002E6D6F7573653A20000A00257556 -:100BB000002E6B6579626F6172643A20000A00252D -:100BC00075002E6D61747269783A20000A002575EF -:100BD000002E656E61626C653A20000A0025303295 -:100BE000580064656275675F636F6E6669672E7231 -:100BF00061773A20000A0025750064656661756CAE -:100C0000745F6C617965723A20003F000A6D6F7500 -:100C100073653A206F66660A000A6D6F7573653AF0 -:100C2000206F6E0A000A6B6579626F6172643A2008 -:100C30006F66660A000A6B6579626F6172643A20BA -:100C40006F6E0A000A6D61747269783A206F666689 -:100C50000A000A6D61747269783A206F6E0A000AA0 -:100C600064656275673A206F66660A000A646562A9 -:100C700075673A206F6E0A000A0A4A756D70696ED0 -:100C80006720746F20626F6F746C6F616465722E81 -:100C90002E2E2000433E20006565636F6E666967F7 -:100CA0003A0A000011241FBECFEFDAE0DEBFCDBF4D -:100CB00004B603FE24C08091E0019091E101A0916F -:100CC000E201B091E3018730904BA740B04BB9F4FB -:100CD0001092E0011092E1011092E2011092E30102 -:100CE00014BE84B7877F84BF88E10FB6F8948093E1 -:100CF0006000109260000FBEE0E0FFE3099511E094 -:100D0000A0E0B1E0ECEFF5E502C005900D92A23352 -:100D1000B107D9F711E0A2E3B1E001C01D92A03EF6 -:100D2000B107E1F70E94940E0C94FC2A0C94000089 -:100D3000FF93EF93E0913201F0913301309709F086 -:100D40000995EF91FF910895FC018591803011F094 -:100D5000EFDFFBCF0895FF27E0E230E247FF0CC052 -:100D6000419597FF09C0EDE260957095809590954B -:100D7000611D711D811D911D27FF02C0219530E36A -:100D800050E2AA27660F771F881F991FAA1FA41772 -:100D900010F0A41B63955A95A9F7AA3008F0A95F33 -:100DA000A05DAF93F395611571058105910541F73C -:100DB000ED3211F4EF93F395F21718F43F93F39596 -:100DC000FBCF8F91B5DFFA95E1F70895E991F9919D -:100DD0008591803021F0853219F0AADFF9CF08958E -:100DE00020E0E89455915532C1F3503311F46894E2 -:100DF00055915A3348F4505390F3220F022E220F8C -:100E0000220F200D250FF4CF0EF421958991999191 -:100E1000533619F3533729F1533559F1BC0188275B -:100E20009927E8945C3621F48991999168945591B9 -:100E3000543639F446EF7EF077FF0DC08FEF9FEF09 -:100E40000AC055374AE039F0583540E121F05236B2 -:100E500042E009F00895FF93EF937DDFEF91FF915A -:100E6000B7CFFF93EF93FC0181918030B9F360DF3E -:100E7000FBCFFF93EF9368DFF1CFDF93CF93CDB735 -:100E8000DEB72596A3DFCF91DF9108958FEF84B968 -:100E900080E485B957985F9A2E9A2F98ECE3F1E099 -:100EA00088E08E0F11928E13FDCFE4E3F1E088E02D -:100EB0008E0F11928E13FDCF8CE391E0909347013A -:100EC0008093460184E391E090934501809344012F -:100ED0000895EF92FF920F931F93CF93DF9380912A -:100EE0004401909145012091460130914701309392 -:100EF0004501209344019093470180934601C0E04F -:100F0000D0E0EE24E394F12C0FEF10E020E030E08D -:100F100085B1807C8C2BA90193E0440F551F9A95D5 -:100F2000E1F7842B85B98AE18A95F1F700C0E09159 -:100F30004401F0914501EC0FFD1F808190E0022EED -:100F400002C0959587950A94E2F780FD2F9A95E364 -:100F50009A95F1F70000E6B52E988AE18A95F1F7A7 -:100F600000C04091460150914701DA01AC0FBD1F0E -:100F70004F9B0AC0C701022E01C0880F0A94EAF7EE -:100F800080959C91892308C06C91C701022E01C0F5 -:100F9000880F0A94EAF7862B8C9386B56E2F70E043 -:100FA0008E1728F086B590E0861B970B06C0E6B535 -:100FB000C801861B970B8E0F911D069758F0E09184 -:100FC0004401F0914501EC0FFD1F8081FA01EC0F07 -:100FD000FD1F80839AE19A95F1F700C02F982E9A11 -:100FE0008BE291E00197F1F700C000002F5F3F4FC7 -:100FF0002830310509F08CCFA0914601B09147010E -:10100000AC0FBD1FE0914401F0914501EC0FFD1FB5 -:101010009C918081981751F00E945A1F609348015B -:101020007093490180934A0190934B012196C830F7 -:10103000D10509F06BCF8091D601853021F08091E8 -:10104000D601811111C060914801709149018091D0 -:101050004A0190914B010E94901F613177428105B6 -:10106000910510F00E94DF1E81E0DF91CF911F916A -:101070000F91FF90EF900895209146013091470124 -:10108000F901E80FF11D808108950F931F93CF930D -:10109000DF9386E191E00E94A406C0E0D0E00AE080 -:1010A00011E0E0914601F0914701EC0FFD1F8081B6 -:1010B0000E94C91E1F928F93DF93CF931F930F93AC -:1010C0000E943D0721960F900F900F900F900F9068 -:1010D0000F90C830D10529F7DF91CF911F910F9163 -:1010E00008951F93CF93DF93C7E0D0E010E0E09125 -:1010F0004601F0914701EC0FFD1F808190E00E94B6 -:10110000BD1E180F219798F7812FDF91CF911F9166 -:1011100008950895089561110BC0FC018281882310 -:1011200021F085EE0E94591503C085EE0E94F81546 -:1011300080E090E0089581E0089581E008950C94A6 -:101140009D0808950F931F93CF93DF938C01FC01AB -:10115000C081D181CE010E94871DBE010E944B0932 -:10116000EC01B8010E949F08882309F48DC0F801A2 -:101170008281882309F44AC08091570181111FC0E0 -:10118000C431F0E5DF0709F051C00E94A10881E0F9 -:10119000809357010E944E1F9093560180935501F2 -:1011A00010924E011092500110924F011092520174 -:1011B00010925101109254011092530165C0809118 -:1011C0005501909156010E94661F883C910570F46C -:1011D00080914E01E82FF0E0EE0FFF1FE15BFE4F24 -:1011E000D183C0838F5F80934E014EC0C43880E5A9 -:1011F000D80721F0C538D04501F13AC0F801828105 -:10120000882341F010924C0182E01EC0C438E0E512 -:10121000DE0759F580914C01811106C086E20E94DB -:10122000591586E20E94F81582E01CC0C438F0E52A -:10123000DF0741F3C538D045D9F4F801828188230E -:1012400031F010924D0180E20E9420161DC0809165 -:101250004D01811106C087E20E94591587E20E9464 -:10126000F81580E20E9427160FC0C538D04529F333 -:1012700081E080934C0180934D01C801DF91CF91B3 -:101280001F910F910C949B0880E0DF91CF911F91EB -:101290000F9108950895E72FF0E098E0899FE00D01 -:1012A000F11D112483E0EE0FFF1F8A95E1F7E60F91 -:1012B000F11DEE0FFF1FEB5DFE4F85919491089598 -:1012C000880F991FFC01EB55F0408591949108958A -:1012D000880F991FFC01EB5DFE4F85919491089555 -:1012E0000F931F93CF93DF93EC01811520E39207B7 -:1012F00050F5C11580E2D80708F0C3C0CB3BD1053B -:1013000090F4C83AD10508F06AC0C53AD10508F092 -:101310005BC0C430D10508F0D4C1219709F0CEC11B -:1013200001E010E00EC2CF3FD10511F008F0C9C1B5 -:10133000C03FD10508F0A2C0CE01805E9109089798 -:1013400008F4BFC1BBC1C13090E5D90709F4A2C000 -:1013500020F5C0318FE4D80770F4C11590E4D907A7 -:1013600008F094C0C11521E3D20708F0A7C1DD271A -:101370008E01106CE6C1C115D04509F09FC10E94D5 -:101380008E188FEF94E32CE0815090402040E1F7DD -:1013900000C000000E94E11FD4C1C11597E5D90724 -:1013A00058F4C03121E5D20708F020C1C43180E5EE -:1013B000D80708F479C082C1CE01905781159041B9 -:1013C00008F07CC1DF7077C1C53AD10509F47BC153 -:1013D000C63AD10509F07AC102E810E4B2C1C83AB0 -:1013E000D10509F476C1C93AD10509F475C1CA3AE3 -:1013F000D10509F474C1CB3AD10509F473C1CC3AD3 -:10140000D10509F472C1CD3AD10509F471C1C03BCF -:10141000D10509F470C1CE3AD10509F46FC1CF3AB4 -:10142000D10509F46EC1C13BD10509F46DC1C23BC0 -:10143000D10509F46CC1C33BD10509F46BC1C43BB0 -:10144000D10509F46AC1C53BD10509F469C1C63BA0 -:10145000D10509F468C1C73BD10509F467C1C83B90 -:10146000D10509F466C1C93BD10509F465C1CA3B80 -:10147000D10509F464C100E014E463C18E01106574 -:1014800060C1CE019F700E9468095CC1DF708E014F -:10149000106A57C185E292E00E94A4068091C101C2 -:1014A00081608093C1014DC10E948721811102C0DA -:1014B0000E946D210E94A42190E09093E00180930E -:1014C000DF01C23080E5D80721F48091DF0181601F -:1014D00086C0C43090E5D90721F48091DF01826095 -:1014E0007EC0C63020E5D20721F48091DF01846000 -:1014F00076C0C83080E5D80719F48091DF0127C095 -:10150000CA3090E5D90721F48091DF01806167C07E -:10151000CC3020E5D20721F48091DF0180625FC0EA -:10152000CE3080E5D80721F48091DF01806457C078 -:10153000C03190E5D90721F48091DF0180684FC068 -:10154000C23120E5D20729F48091DF0184608860F0 -:1015500046C0C33080E5D80721F48091DF018E7F3B -:101560003EC0C53090E5D90721F48091DF018D7F21 -:1015700036C0C73020E5D20721F48091DF018B7F90 -:101580002EC0C93080E5D80719F48091DF0126C04C -:10159000CB3090E5D90721F48091DF018F7E1FC009 -:1015A000CD3020E5D20721F48091DF018F7D17C077 -:1015B000CF3080E5D80721F48091DF018F7B0FC009 -:1015C000C13190E5D90721F48091DF018F7707C001 -:1015D000C331D04531F48091DF018B7F877F8093C9 -:1015E000DF018091DF010E94A821ABC08D2F9927D8 -:1015F0008F70992781309105D9F49E01237033278C -:1016000002C0880F991F2A95E2F79C688E0144E07A -:10161000000F111F4A95E1F700271370802B912BC3 -:1016200053E0CC0FDD1F5A95E1F7C076DD272FC0C0 -:101630008230910531F4DC2FCC278E01016F106AC6 -:1016400080C08330910569F4CE018370992701E051 -:1016500010E002C0000F111F8A95E2F7C8019C68D4 -:101660000FC084309105B9F4CE018370992701E051 -:1016700010E002C0000F111F8A95E2F7C8019A68B6 -:1016800023E0CC0FDD1F2A95E1F7C07ED7708C01D7 -:101690000C2B1D2B56C08530910531F4DC2FCC2747 -:1016A0008E01046F106A4DC0069709F04AC0CF71D1 -:1016B000DD27DC2FCC278E01106243C000E010E054 -:1016C00040C08E013EC001E810E43BC003E810E4D6 -:1016D00038C002EE14E435C009EE14E432C00AEE5C -:1016E00014E42FC005EB14E42CC006EB14E429C06D -:1016F00007EB14E426C00CEC14E423C00DEC14E456 -:1017000020C003E815E41DC00AE815E41AC002E988 -:1017100015E417C004E915E414C001E216E411C091 -:1017200003E216E40EC004E216E40BC005E216E480 -:1017300008C006E216E405C007E216E402C00AE2A9 -:1017400016E4C801DF91CF911F910F910895E72F03 -:10175000F0E098E0899FE00DF11D112483E0EE0F89 -:10176000FF1F8A95E1F7E60FF11DEE0FFF1FEB5DFE -:10177000FE4F85919491803E9105E0F4803C910567 -:1017800058F58133910509F46FC048F48932910509 -:1017900009F463C08A32910509F46DC072C08933BF -:1017A0009105E9F082389105D1F08533910509F46E -:1017B0004DC067C0833E910581F138F4803E9105AC -:1017C000B9F0823E9105D9F05CC0863E910561F189 -:1017D000873E9105A1F155C00E94600908952091AE -:1017E000DF0120FD02C021FF4CC080EE90E049C027 -:1017F0008091DF0180FFF9CF89E390E042C08091C2 -:10180000DF0182FF0EC08091DF0184FF03C080E012 -:1018100090E037C083EE90E034C08091DF0182FF1A -:10182000F2CF82EE90E02DC08091DF0183FF0BC0EC -:101830008091DF0184FDEBCF87EE90E022C08091A4 -:10184000DF0183FFF5CF86EE90E01BC08091DF01C2 -:1018500085FF07C089E290E014C08091DF0185FF19 -:10186000F9CF85E390E00DC08091DF0186FF07C0CE -:101870008AE290E006C08091DF0186FFF9CF81E324 -:1018800090E00E947009089508950C94440C809192 -:10189000630108959FB7F89410925A019FBF9091E9 -:1018A000D601943009F057C09091E9009F703091B3 -:1018B000EC00232F217030FD20E8922B24E02093B0 -:1018C000E9002091EB0020FF43C02091EE0027FFAC -:1018D0003FC020915801222321F02091E80025FFEC -:1018E00037C01092580126E03091E80035FD15C050 -:1018F0003091D601343061F53091EB0035FD28C0D0 -:10190000215021F481E08093580122C0EFE9FFE0EB -:101910003197F1F700C00000E7CF8093F10080918C -:10192000E80085FD0AC08091E80080FFFCCF80912F -:10193000E8008E778093E80006C08FB7F89421E026 -:1019400020935A018FBF9F709093E90080E0089523 -:101950009F709093E9008FEF0895CF93DF9300D0AD -:101960001F92CDB7DEB79C018091D601843019F566 -:1019700093E099833B832A839093E9008FEF9091C2 -:10198000E800815095FD06C095ED9A95F1F70000AD -:101990008111F5CF8091E80085FF0DC040E050E057 -:1019A00063E070E0CE0101960E944A0F8091E8004A -:1019B0008E778093E8000F900F900F90DF91CF917A -:1019C0000895CF93DF9300D01F92CDB7DEB720915B -:1019D000D601243021F522E029839B838A8383E08A -:1019E0008093E9008FEF9091E800815095FD06C04B -:1019F00095ED9A95F1F700008111F5CF8091E800FF -:101A000085FF0DC040E050E063E070E0CE0101963C -:101A10000E944A0F8091E8008E778093E8000F9033 -:101A20000F900F90DF91CF9108952091D60124302F -:101A3000F1F422E02093E9002FEF3091E8002150EB -:101A400035FD06C035ED3A95F1F700002111F5CFCF -:101A50002091E80025FF0BC040E050E065E070E019 -:101A60000E944A0F8091E8008E778093E8000895E5 -:101A7000CF93DF932091D601243039F521E02093D4 -:101A8000E9002FEF3091E800215035FD06C035ED1B -:101A90003A95F1F700002111F5CF2091E80025FFDC -:101AA00014C0EC0140E050E068E070E00E944A0F92 -:101AB0008091E8008E778093E80088E0FE01ABE536 -:101AC000B1E001900D928A95E1F7DF91CF910895F1 -:101AD0008CE592E00E94A4068091D501811109C095 -:101AE0000E94DF100E943C118091E200846080938C -:101AF000E200089588E592E00E94A4061092D501C4 -:101B0000089584E592E00C94A40680E592E00C949C -:101B1000A4068CE492E00E94A4060C94161F209167 -:101B200059012F5F822F62E30E948C2A992319F0BA -:101B30002093590108951092590180915A018823E8 -:101B400071F18091D601843041F58091E9008F7068 -:101B50002091EC00922F917020FD90E8892B94E069 -:101B60009093E9009091EB0090FF14C09091EE00EB -:101B700097FF10C09091E80095FF03C01092F1000C -:101B8000F9CF9091E80090FF05C09091E8009E7712 -:101B90009093E8008F708093E90010925A010895A5 -:101BA00042E061EC81E00E94591042E061EC82E089 -:101BB0000E94591042E061EC83E00E94591042E219 -:101BC00061EC84E00C9459108091D801833009F4C1 -:101BD00053C030F4813071F0823009F48CC0089524 -:101BE0008A3009F478C08B3009F45EC0893009F07E -:101BF0009AC020C08091D701813A09F094C08091A9 -:101C0000E800877F8093E8008091DB019091DC0100 -:101C1000892B21F468E08BE591E003C060E080E06F -:101C200090E070E00E94950F8091E8008B778093A0 -:101C3000E80008958091D701813209F074C0809145 -:101C4000DB019091DC01892B09F06DC08091E800E7 -:101C5000877F8093E8008091E80082FD05C0809135 -:101C6000D6018111F8CF5FC08091F10080936301AC -:101C70008091E8008B7753C08091D701813A09F0B9 -:101C800052C08091DB019091DC01892B09F04BC09F -:101C90008091E800877F8093E8008091E80080FFD2 -:101CA000FCCF80910A0136C08091D7018132D9F5ED -:101CB0008091DB019091DC01892BA9F58091E800EE -:101CC000877F8093E8000E948E108091D9018093D5 -:101CD0000A010C948E188091D701813221F58091F0 -:101CE000E800877F8093E8000E948E108091DA01DF -:101CF0008093640108958091D701813AA1F4809185 -:101D0000E800877F8093E8008091E80080FFFCCFA7 -:101D1000809164018093F1008091E8008E77809338 -:101D2000E8000C948E10089584B7877F84BF88E103 -:101D30000FB6F89480936000109260000FBE90E0A0 -:101D400080E80FB6F89480936100909361000FBE15 -:101D50000E946E140E94DF100E943C118091E200EC -:101D600084608093E2008AE49CE00E94B81E78942C -:101D70000E94C1130E94701480E091E00E94DC1365 -:101D80008BE392E00E94A4068091D601853089F40D -:101D900087E392E00E94A4060E94DF1E8091D40196 -:101DA000882391F30E94081F882371F30E94340F47 -:101DB000EBCF0E949414E8CF292F3327233031052D -:101DC000C9F064F42130310581F02230310509F089 -:101DD00043C084E790E026E832E042C0213231057A -:101DE000F1F02232310541F137C082E190E02AEF73 -:101DF00032E036C099278130910541F0823091055B -:101E000041F0892B49F5E2E8F2E005C0E4E7F2E0B1 -:101E100002C0E0E6F2E0849190E09F0121C06430CE -:101E2000D8F4E62FF0E0EE0FFF1FE15EFE4F2081B9 -:101E3000318189E090E014C0643070F470E0FB01FF -:101E4000EE0FFF1FE95EFE4F20813181FB01ED5E49 -:101E5000FE4F808190E004C080E090E020E030E020 -:101E6000FA0131832083089580E189BD82E189BD33 -:101E700009B400FEFDCF8091D8008F7D8093D800FB -:101E80008091E00082608093E0008091E00081FD1D -:101E9000FCCF0895CF92DF92EF92FF920F931F93A2 -:101EA000CF93DF93EC018B016A010E94AD10811189 -:101EB00033C0C114D10439F0F60180819181081B2F -:101EC000190BC80FD91FE12CF12C0115110519F1BF -:101ED0008091E80085FD16C08091E8008E778093A0 -:101EE000E800C114D10449F0F60180819181E80E27 -:101EF000F91EF182E08285E00FC00E94AD108823B8 -:101F000021F30AC089918093F10001501109FFEF7C -:101F1000EF1AFF0ADACF80E0DF91CF911F910F9186 -:101F2000FF90EF90DF90CF9008952091DD013091E8 -:101F3000DE012617370748F06115710539F4209145 -:101F4000E8002E772093E80001C0B90140E0611558 -:101F50007105A9F12091D601222309F443C025304F -:101F600009F442C02091E80023FD40C02091E80020 -:101F700022FD32C02091E80020FFE9CF4091F3001C -:101F80002091F20030E0342BFC01CF016115710586 -:101F900059F02830310540F481918093F10061506F -:101FA00071092F5F3F4FF1CF41E02830310509F033 -:101FB00040E02091E8002E772093E800C8CF41113F -:101FC000C9CF0AC08091D601882361F0853061F0C5 -:101FD0008091E80083FD0AC08091E80082FFF2CF83 -:101FE00080E0089582E0089583E0089581E00895F7 -:101FF0002091DD013091DE012617370748F0611589 -:10200000710539F42091E8002E772093E80001C093 -:10201000B901FC0120E06115710591F18091D601B3 -:10202000882309F440C0853009F43FC08091E8005E -:1020300083FD3DC08091E80082FD2FC08091E800C3 -:1020400080FFE9CF2091F3008091F20090E0922B85 -:102050006115710559F08830910540F42491209361 -:10206000F1003196615071090196F2CF21E0089795 -:1020700009F020E08091E8008E778093E800CBCFD4 -:102080002111CCCF0AC08091D601882361F0853020 -:1020900061F08091E80083FD0AC08091E80082FF32 -:1020A000F2CF80E0089582E0089583E0089581E012 -:1020B0000895982F973058F59093E900981739F0C4 -:1020C0007091EC002091ED005091F00003C0242F9E -:1020D000762F50E021FF19C03091EB003E7F309306 -:1020E000EB003091ED003D7F3093ED003091EB003F -:1020F00031603093EB007093EC002093ED0050932F -:10210000F0002091EE0027FF07C09F5FD3CF8F70B4 -:102110008093E90081E0089580E008958091D701DF -:1021200087FF11C08091E80082FD05C08091D60133 -:102130008111F8CF11C08091E8008B770BC080919E -:10214000D601882349F08091E80080FFF8CF809184 -:10215000E8008E778093E80008952091E4003091A4 -:10216000E50095E64091EC00842F817040FF22C08D -:102170008091E80080FD1CC08091D601882391F0F9 -:10218000853091F08091EB0085FD10C04091E40016 -:102190005091E5004217530729F39A01915011F726 -:1021A00084E0089582E0089583E0089581E0089531 -:1021B00080E008954091E80042FFDECF08950E943C -:1021C0004D110E945511E0EEF0E080818160808326 -:1021D000E8EDF0E080818F77808319BCA7EDB0E057 -:1021E0008C918E7F8C9380818F7E80831092D5011D -:1021F00008950F931F93CF93DF930E944D110E9478 -:102200005511C8EDD0E088818F77888388818068F8 -:10221000888388818F7D888319BC1092D6011092A3 -:10222000D2011092D4011092D30100EE10E0F80117 -:1022300080818B7F808388818160888342E060E039 -:1022400080E00E945910E1EEF0E080818E7F808373 -:10225000E2EEF0E08081816080838081886080830D -:10226000F80180818E7F8083888180618883DF91FF -:10227000CF911F910F910895E8EDF0E080818F7E5E -:102280008083E7EDF0E080818160808384E082BF1D -:1022900081E08093D5010C94F910E8EDF0E08081A5 -:1022A0008E7F80831092E20008951092DA001092DF -:1022B000E10008951F920F920FB60F9211242F93F1 -:1022C0003F934F935F936F937F938F939F93AF93BE -:1022D000BF93EF93FF938091E10082FF0BC0809149 -:1022E000E20082FF07C08091E1008B7F8093E100D4 -:1022F0000E948F0D8091DA0080FF1FC08091D8006E -:1023000080FF1BC08091DA008E7F8093DA0080917D -:10231000D90080FF0DC080E189BD82E189BD09B48B -:1023200000FEFDCF81E08093D6010E94680D05C0BC -:1023300019BC1092D6010E947A0D8091E10080FFB5 -:1023400019C08091E20080FF15C08091E2008E7F6D -:102350008093E2008091E20080618093E2008091AE -:10236000D80080628093D80019BC85E08093D601A4 -:102370000E94850D8091E10084FF30C08091E200D1 -:1023800084FF2CC080E189BD82E189BD09B400FED3 -:10239000FDCF8091D8008F7D8093D8008091E1009F -:1023A0008F7E8093E1008091E2008F7E8093E20037 -:1023B0008091E20081608093E2008091D2018823C5 -:1023C00011F084E007C08091E30087FD02C081E046 -:1023D00001C083E08093D6010E94890D8091E100C5 -:1023E00083FF29C08091E20083FF25C08091E10036 -:1023F000877F8093E10082E08093D6011092D20122 -:102400008091E1008E7F8093E1008091E2008E7FD9 -:102410008093E2008091E20080618093E20042E0DC -:1024200060E080E00E9459108091F0008860809305 -:10243000F0000E94810DFF91EF91BF91AF919F91AC -:102440008F917F916F915F914F913F912F910F905D -:102450000FBE0F901F9018951F920F920FB60F92FC -:1024600011242F933F934F935F936F937F938F9399 -:102470009F93AF93BF93CF93DF93EF93FF93C0915D -:10248000E900CF708091EC00D82FD17080FDD0E8AA -:102490001092E9008091F000877F8093F00078949B -:1024A0000E9470121092E9008091F0008860809381 -:1024B000F000CD2BCF70C093E900FF91EF91DF9139 -:1024C000CF91BF91AF919F918F917F916F915F91CC -:1024D0004F913F912F910F900FBE0F901F90189525 -:1024E0001F93CF93DF93CDB7DEB7AA970FB6F894BB -:1024F000DEBF0FBECDBFE7EDF1E088E08E0F90911B -:10250000F10091938E13FBCF0E94E40D8091E800BF -:1025100083FF1FC18091D7019091D801492F50E0CE -:102520004A30510508F015C1FA01EA5AFF4F0C94E0 -:10253000AC2A803881F0823809F00BC18091DB0130 -:102540008F708093E9008091EB0085FB882780F9EC -:102550001092E90006C08091D3019091D4019111AD -:1025600082609091E800977F9093E8008093F1005B -:102570001092F100C8C0282F2D7F09F0EAC08823EF -:1025800019F0823061F0E5C08091D901813009F005 -:10259000E0C0933009F080E08093D4012BC080919B -:1025A000D901811127C08091DB018F7009F4D1C05E -:1025B0008093E9002091EB0020FF1CC0933021F4B0 -:1025C0008091EB00806214C09091EB009061909339 -:1025D000EB0021E030E0A90102C0440F551F8A95AD -:1025E000E2F74093EA001092EA008091EB008860E5 -:1025F0008093EB001092E9008091E800877F86C00D -:102600008111A7C01091D9011F778091E3008078D4 -:10261000812B8093E3008091E800877F8093E8001E -:102620000E948E108091E80080FFFCCF8091E30033 -:1026300080688093E300111102C082E001C083E052 -:102640008093D60186C08058823008F082C0809185 -:10265000D9019091DA018C3D53E0950779F583E03B -:102660008A838AE289834FB7F894DE01139620E0CB -:102670003EE051E2E32FF0E050935700E49120FF59 -:1026800003C0E295EF703F5FEF708E2F90E0EA306D -:1026900010F0C79601C0C0968D939D932F5F243193 -:1026A00049F74FBF8091E800877F8093E8006AE296 -:1026B00070E0CE0101960E94950F14C0AE014F5FED -:1026C0005F4F6091DB010E94DC0EBC01009709F4B2 -:1026D00040C09091E800977F9093E80089819A81AB -:1026E0000E94F80F8091E8008B778093E80031C05A -:1026F000803879F58091E800877F8093E8008091A9 -:10270000D2018093F1008091E8008E778093E800F9 -:102710000E948E101EC081111CC09091D901923070 -:10272000C0F48091E800877F8093E8009093D20105 -:102730000E948E108091D201811106C08091E30029 -:1027400087FD02C081E001C084E08093D6010E9431 -:10275000D00D8091E80083FF0AC08091E800877F58 -:102760008093E8008091EB0080628093EB00AA9652 -:102770000FB6F894DEBF0FBECDBFDF91CF911F9192 -:102780000895CF938091D6018823A1F0C091E900EC -:10279000CF709091EC00892F817090FD80E8C82B5C -:1027A0001092E9008091E80083FD0E947012CF70C2 -:1027B000C093E900CF91089590936A0180936901D5 -:1027C0000895E0916901F0916A01309721F001903C -:1027D000F081E02D099480E00895EF92FF920F932D -:1027E0001F93CF93DF93E0916901F0916A013097D5 -:1027F000B1F18C010280F381E02D09958091C10136 -:1028000082FF2DC080FF04C086EF93E00E94A406E3 -:10281000E80118E080EFE82E83E0F82E8091C101F6 -:1028200080FF0BC088811F928F93FF92EF920E94CE -:102830003D070F900F900F900F901150219611119E -:10284000EDCF8091C10180FF0AC08EEE93E0DF9151 -:10285000CF911F910F91FF90EF900C94A406DF9100 -:10286000CF911F910F91FF90EF900895E091690132 -:10287000F0916A01309721F00480F581E02D0994F0 -:10288000089520916701309168018217930771F0D4 -:102890009093680180936701E0916901F0916A016A -:1028A000309721F00680F781E02D0994089520915A -:1028B0006501309166018217930771F0909366016C -:1028C00080936501E0916901F0916A01309721F0F0 -:1028D0000084F185E02D0994089508950C946D14F9 -:1028E0000E94451F0E9446070C943F20CF93DF9320 -:1028F0001F92CDB7DEB79091C10192FF10C090FF3B -:102900000EC01F928F9328E034E03F932F9389836A -:102910000E943D070F900F900F900F9089810F90AC -:10292000DF91CF910C94450C9F92AF92BF92CF92C2 -:10293000DF92EF92FF920F931F93CF93DF9300D01C -:1029400000D000D0CDB7DEB70E94690707E010E0E5 -:10295000AA24A394B12C902E802F0E943C089801A9 -:1029600024593E4F6901F901F080F826A1F4015085 -:10297000110988F78FEF89838A831B820E944E1F7B -:102980008160782F9D838C8349815A816B818D81F1 -:102990000E942B152FC09091C10191FF04C08E831E -:1029A0000E9445088E8127E030E0A501022E01C07B -:1029B000440F0A94EAF7E42E4F21C1F029839A824A -:1029C0008E2191E009F490E09B830E944E1F81606C -:1029D000782F9D838C8349815A816B818D810E94E0 -:1029E0002B15F6018081E826E08204C021503109D0 -:1029F000E0F6BDCF0E94A92310916B010E94E11364 -:102A00001817B9F00E94E11380936B0126960FB658 -:102A1000F894DEBF0FBECDBFDF91CF911F910F9114 -:102A2000FF90EF90DF90CF90BF90AF909F900C946D -:102A3000761426960FB6F894DEBF0FBECDBFDF9199 -:102A4000CF911F910F91FF90EF90DF90CF90BF90AB -:102A5000AF909F900895CF93DF93CDB7DEB72B97BC -:102A60000FB6F894DEBF0FBECDBF4F83588769877E -:102A70007A878B87DE01119686E0FD0111928A9597 -:102A8000E9F785E0FE01379601900D928A95E1F70E -:102A900049815A816B817C818D819E810E942C1B92 -:102AA0002B960FB6F894DEBF0FBECDBFDF91CF914E -:102AB0000895CF93882309F499C0C82F8CEF8C0F09 -:102AC000813A48F48C2F0E94152881118FC08C2FD9 -:102AD0000E94061E0CC080E28C0F883058F4C7702C -:102AE00081E001C0880FCA95EAF70E94421ECF918B -:102AF0000C94891E8BE58C0F833078F4C53A29F04D -:102B0000C63A31F083E890E005C081E890E002C069 -:102B100082E890E0CF910C94411488E58C0F8331CA -:102B200008F064C0C83A39F1C93A41F1CA3A49F1EA -:102B3000CB3A51F1CC3A59F1CD3A61F1C03B69F150 -:102B4000CE3A71F1CF3A79F1C13B81F1C23B89F1C3 -:102B5000C33B91F1C43B99F1C53BA1F1C63BA9F13F -:102B6000C73BB1F1C83BB9F1C93BC1F1CA3BC9F19F -:102B700080E090E038C082EE90E035C089EE90E0D1 -:102B800032C08AEE90E02FC085EB90E02CC086EB3F -:102B900090E029C087EB90E026C08CEC90E023C049 -:102BA0008DEC90E020C083E891E01DC08AE891E0C0 -:102BB0001AC082E991E017C084E991E014C081E273 -:102BC00092E011C083E292E00EC084E292E00BC07A -:102BD00085E292E008C086E292E005C087E292E0DA -:102BE00002C08AE292E0CF910C945714CF910895DD -:102BF000882329F19CEF980F913A18F40E94231E24 -:102C00000DC090E2980F983058F4877091E001C0A1 -:102C1000990F8A95EAF7892F0E94481E0C94891E05 -:102C20009BE5980F933020F480E090E00C944114E1 -:102C3000885A833120F480E090E00C945714089572 -:102C4000882321F00E94421E0C94891E0895882337 -:102C500021F00E94481E0C94891E08957F928F9245 -:102C60009F92AF92BF92CF92DF92EF92FF920F931B -:102C70001F93CF93DF931F92CDB7DEB77C01C62E93 -:102C8000772EFC01058102950F70128111110E94AF -:102C90005F1E0E94FF1D882379F0112369F080E2F6 -:102CA0008C0D883048F082E00E94E81D0E94FF1DD4 -:102CB00091E0D82ED92601C0D12CE72DE295EF70F6 -:102CC000F0E0E05AFF4F0C94AC2A872D807F072D4F -:102CD0000F70882311F00295007F112389F00023E3 -:102CE00009F498C180E28C0D883020F4802F0E9476 -:102CF000421E03C0802F0E94521E0E94891E8AC15C -:102D00008C2D0E94F815002309F49DC180E28C0DE2 -:102D1000883020F4802F0E94481E03C0802F0E941C -:102D2000581E0E94891E8FC1872D807F972D9F700E -:102D3000803211F4892F03C0892F8295807FCC20A7 -:102D400021F0F1E0CF16A1F01DC0112339F00023CE -:102D500019F1013009F50E94721E75C1002319F0A6 -:102D6000013009F470C189830E94751E898110C1E8 -:102D7000112321F0063008F066C10EC0053008F0BE -:102D800062C106C1112359F0002331F0F70195818A -:102D900090FF40C19F7095830E94201654C100236C -:102DA00009F4F6C03DC1872D86958695837090E025 -:102DB000009719F0019761F046C1112321F08C2D85 -:102DC000972D937002C080E090E00E9441143BC1B7 -:102DD000112321F08C2D972D937002C080E090E09C -:102DE0000E94571430C18C2D112319F00E942F22FC -:102DF00002C00E9497220E941C2325C1872D837048 -:102E000009F052C011111FC18C2D829586958770D3 -:102E1000880F880F9C2D9F70892E912CA12CB12C8E -:102E2000082E04C0880C991CAA1CBB1C0A94D2F75B -:102E3000C4FE14C00FE010E020E030E0B901A801AA -:102E400004C0440F551F661F771F8A95D2F7CB0128 -:102E5000BA01609570958095909503C060E070E030 -:102E6000CB01272D26952695237030E022303105A1 -:102E700069F02330310589F0682979298A299B294D -:102E80002130310571F00E94741CDDC06829792958 -:102E90008A299B290E94901CD6C00E94741CC501DF -:102EA000B4010E94581CCFC0112319F0872D8170E6 -:102EB00001C08695882309F4C6C08C2D829586951D -:102EC0008770880F880F9C2D9F70892E912CA12CC4 -:102ED000B12C082E04C0880C991CAA1CBB1C0A9497 -:102EE000D2F7C4FE14C00FE010E020E030E0B901DA -:102EF000A80104C0440F551F661F771F8A95D2F79B -:102F0000CB01BA01609570958095909503C060E003 -:102F100070E0CB01272D269526952370422F50E097 -:102F20004230510569F04330510589F0682979290B -:102F30008A299B294130510571F00E944E1D83C0A2 -:102F4000682979298A299B290E946A1D7CC00E94D0 -:102F50004E1DC501B4010E94321D75C08C2D90E03C -:102F6000FC01E05EF109E531F10508F04FC0E059E0 -:102F7000FF4F0C94AC2A0C2D0F70872D8F711123ED -:102F800021F00E94CB1C802F07CF0E94EC1C802FC9 -:102F90000E94271658C0112341F0053008F053C095 -:102FA000872D8F710E94111D4EC0063008F04BC056 -:102FB000F7CF112339F0872D8F710E94CB1C43C0AE -:102FC0001123C9F3872D8F710E94EC1C3CC0112383 -:102FD00029F0872D8F710E94B61C35C00E94AC1C51 -:102FE00032C0112351F0172D1F71812F0E94CB1C6D -:102FF00063E0812F0E94DF1D26C081E00E94E81D52 -:10300000023008F182E00E94E81D1DC0112331F05A -:10301000002389F28C2D0E94591515C0002391F2CE -:103020008C2D0E94F8150FC0472D4F706C2DC701D5 -:103030000E948B080E94D01B06C0472D4F706C2D3C -:10304000C7010E944A09DD20F9F00E94DB1D80FDC6 -:103050001BC0F70112820E94D51D0E94CB1CC70124 -:103060000E9453180E94D51D0F90DF91CF911F91A0 -:103070000F91FF90EF90DF90CF90BF90AF909F9017 -:103080008F907F900C94EC1C0F90DF91CF911F914B -:103090000F91FF90EF90DF90CF90BF90AF909F90F7 -:1030A0008F907F9008950F931F93CF93DF93EC0140 -:1030B000888199812B813C81232BB9F09F3F11F4AA -:1030C0008F3F99F0CE010E94A208882371F0688199 -:1030D00079818A810E94D11D8C010E94861D0E94E7 -:1030E0004D1CB801CE010E942E16DF91CF911F9189 -:1030F0000F9108950E945F1E0E946F1E0E94341E51 -:103100000E94891E0E944F240E941C2380E090E0B0 -:103110000E94411480E090E00C9457140E944F1ECE -:103120000C947A180E94C61D292F22952F7030E02A -:103130002C3031054CF42A3031056CF42250310921 -:1031400022303105A8F407C02C30310569F02F304A -:10315000310551F00DC0803F69F018F4803E40F415 -:1031600009C0843F29F406C093FB882780F908959D -:1031700080E0089581E00895CF93DF9300D000D0E0 -:103180001F92CDB7DEB70F900F900F900F900F905A -:10319000DF91CF910895CF93DF9300D000D000D07E -:1031A000CDB7DEB726960FB6F894DEBF0FBECDBF03 -:1031B000DF91CF9108951F93CF93DF93C091740156 -:1031C00016E080917501C81799F0D0E01C9FF001BE -:1031D0001D9FF00D1124EA58FE4F408151816281FC -:1031E0007381848195810E94CB182196C770E9CFA5 -:1031F000DF91CF911F9108954091A6015091A701B1 -:103200006091A8017091A9018091AA019091AB01F0 -:103210000C94CB188091AB0182958F7009F054C04B -:103220008091A801882309F44FC080917401A09176 -:1032300075016091A6017091A7014091A90150917B -:10324000AA01B6E08A1709F43FC090E04115510584 -:10325000C1F17F3F11F46F3FA1F1B89FF001B99F19 -:10326000F00D1124EA58FE4F218172132AC02081EB -:10327000621327C02281211124C0238134812417A5 -:10328000350710F421503109241B350B283C31053A -:10329000C0F42091AB012F7020612093AB0126E098 -:1032A000289FF001299FF00D1124E558FE4F8081E1 -:1032B0008F708061808386EA91E00E9453180C949D -:1032C000DB1801968770BECF0895CF92DF92EF9200 -:1032D000FF920F931F93CF93DF93CDB7DEB7629723 -:1032E0000FB6F894DEBF0FBECDBF8C0185E0F801AC -:1032F000DE011D9601900D928A95E1F7D8014C915F -:1033000011965C91119712966C9112971396CD902D -:10331000DC9014973091A6017091A7018091A901CA -:103320009091AA01009709F46BC17F3F19F43F3FC8 -:1033300009F466C1E090A801EE2009F4C0C0209114 -:10334000AB01C816D90628F0F601E81BF90BCF012E -:1033500004C0809590958C0D9D1DFF24F394883CAE -:10336000910578F0F12C207F09F0C6C07C2DD98A18 -:10337000C88A89890E94BC1886EA91E00E94531885 -:10338000B1C0822F807F09F046C0751314C034137A -:1033900012C0611110C02F7020612093AB010E94F8 -:1033A000FC1886EA91E00E9453188091AB01D80185 -:1033B00015968C932EC0CD2819F15F3F11F44F3F25 -:1033C000F9F0F62E61111CC08091740120917501F5 -:1033D00036E0821709F45AC090E0389FF001399F17 -:1033E000F00D1124EA58FE4F7181571306C0708109 -:1033F000471303C07281711103C001968770E9CF32 -:10340000F62E662309F418C18091AB018160809388 -:10341000AB01F12C11C1751308C0341306C0611142 -:1034200004C08091AB01D801C3C04D875E878D85F4 -:103430009E856A8B0E9492186A898823E1F166232F -:10344000D1F12091AB01822F82958F7090E002978D -:1034500074F08091A6019091A70198878F831986B7 -:10346000DB86CA862C87CE0107960E94531886E019 -:10347000F801A6EAB1E001900D928A95E1F70E9469 -:103480000A190E94FC18FF24F394D6C04D875E876A -:103490008D859E850E94C61D292F22952F7030E0B4 -:1034A000223031050CF0BCC09F7009F0B6C0805EC0 -:1034B000883008F4C1C0C8010E945318E4CFC81670 -:1034C000D90608F453C0F601E81BF90BCF01883C7C -:1034D000910508F450C0F12C7C2DD98AC88A8989BD -:1034E0000E94BC18E6EAF1E086E0DF011D928A95B1 -:1034F000E9F70E94FC18A0C0751314C0341312C061 -:10350000611110C08091AB01F8018583C8010E9450 -:10351000531886E0E6EAF1E0DF011D928A95E9F7AB -:10352000FE2C8AC04D875E878D859E856A8B0E94A2 -:1035300092186A89882309F4BECF662309F4BBCFA9 -:103540002091AB01822F82958F7090E002970CF44E -:103550008ECF8091A6019091A7019A8389831B82C7 -:10356000DD82CC822E83CE0101967FCF809590950F -:103570008C0D9D1DACCFF62E662309F49CCF7513E0 -:103580002EC034132CC02091AB0120FD1FC0822F10 -:1035900082958F70D9F0D80115962C9315978F309E -:1035A00049F08F5F982F9295907F822F8F70892B93 -:1035B00015968C93C8010E94531886E0F801A6EA7C -:1035C000B1E001900D928A95E1F793CF86E0F80182 -:1035D000A6EAB1E001900D928A95E1F72DC04D87E2 -:1035E0005E878D859E850E949218811140CF8091C3 -:1035F000AB0181608093AB01C8010E9453181CC0CD -:10360000662309F458CF4D875E878D859E850E947D -:103610009218882309F44FCF2ACF811148CF0CC0CC -:10362000243031050CF047CF9F7009F440CFF801EA -:103630009581907F09F03BCF8F2D62960FB6F8945D -:10364000DEBF0FBECDBFDF91CF911F910F91FF90D5 -:10365000EF90DF90CF9008951F93CF93DF93CDB776 -:10366000DEB72C970FB6F894DEBF0FBECDBF4F83E9 -:10367000588769877A878B879C87CE0107960E9437 -:103680006519882369F08F8198852A853B85232BCE -:10369000F1F19F3F09F063C08F3F09F060C037C070 -:1036A00086E0FE013796DE01119601900D928A9513 -:1036B000E1F76F817885EA85FB85309741F17F3F9F -:1036C00011F46F3F21F12091750130E0C90101969D -:1036D000877099274091740150E08417950709F489 -:1036E00047C069837A83FD83EC8396E0929FD00183 -:1036F000939FB00D1124AA58BE4FFE013196019040 -:103700000D929A95E1F7809375010E94DB1816E0FF -:1037100080917401909175018917C1F1189FC001C2 -:1037200011248A589E4F0E946519882379F1E091EF -:1037300074011E9FF0011124EA58FE4F408151810F -:1037400062817381848195810E94CB18809174017C -:1037500090E001968770992780937401D9CF4F81AB -:10376000588569857A858B859C850E94CB18CFCF3B -:103770000E948E181092750110927401E6EAF1E031 -:1037800086E0DF011D928A95E9F7C1CF2C960FB62E -:10379000F894DEBF0FBECDBFDF91CF911F9108958A -:1037A000EF92FF920F931F93CF93DF938C010097BB -:1037B00009F46CC0F12CEE24E394E8012196F801A1 -:1037C0008491843740F4843008F051C0813081F016 -:1037D000823019F15BC0853709F444C0A8F19CE739 -:1037E000980F903708F052C08F770E94F81541C0AB -:1037F0000E5F1F4FFE01C49180E28C0F883048F4A9 -:10380000C7708E2D01C0880FCA95EAF70E94621E0C -:1038100014C08C2F0E9459152DC00E5F1F4FFE0142 -:10382000C49180E28C0F883058F4C7708E2D01C08F -:10383000880FCA95EAF70E94681E0E94891E1AC066 -:103840008C2F0E94F81516C00E5F1F4FFE01C49109 -:10385000CC2381F08FE99FE00197F1F700C00000D1 -:10386000C150F6CF0E5F1F4FFE01F49003C00E94BF -:1038700059158E018F2D882309F49FCFEFE9FFE0C2 -:103880003197F1F700C000008150F5CFDF91CF9163 -:103890001F910F91FF90EF90089508956093B001EC -:1038A0007093B1018093B2019093B3010C947A1894 -:1038B0000F931F930091B0011091B1012091B201BB -:1038C0003091B301DC01CB01802B912BA22BB32BC8 -:1038D0008093B0019093B101A093B201B093B30172 -:1038E0001F910F910C947A180F931F930091B001C0 -:1038F0001091B1012091B2013091B301DC01CB01F3 -:1039000080239123A223B3238093B0019093B1012C -:10391000A093B201B093B3011F910F910C947A1848 -:103920000F931F930091B0011091B1012091B2014A -:103930003091B301DC01CB0180279127A227B32767 -:103940008093B0019093B101A093B201B093B30101 -:103950001F910F910C947A181092AC011092AD0146 -:103960001092AE011092AF010C947A1841E050E031 -:1039700060E070E004C0440F551F661F771F8A95F2 -:10398000D2F74093AC015093AD016093AE017093B8 -:10399000AF010C947A1841E050E060E070E004C0A0 -:1039A000440F551F661F771F8A95D2F78091AC018F -:1039B0009091AD01A091AE01B091AF01482B592B70 -:1039C0006A2B7B2B4093AC015093AD016093AE0109 -:1039D0007093AF010C947A1841E050E060E070E021 -:1039E00004C0440F551F661F771F8A95D2F7409574 -:1039F0005095609570958091AC019091AD01A0912A -:103A0000AE01B091AF01482359236A237B23409331 -:103A1000AC015093AD016093AE017093AF010C9473 -:103A20007A1841E050E060E070E004C0440F551F98 -:103A3000661F771F8A95D2F78091AC019091AD01F6 -:103A4000A091AE01B091AF01482759276A277B2783 -:103A50004093AC015093AD016093AE017093AF0100 -:103A60000C947A180F931F930091AC011091AD0143 -:103A70002091AE013091AF01DC01CB01802B912B65 -:103A8000A22BB32B8093AC019093AD01A093AE0118 -:103A9000B093AF011F910F910C947A180F931F935D -:103AA0000091AC011091AD012091AE013091AF01B8 -:103AB000DC01CB0180239123A223B3238093AC01AB -:103AC0009093AD01A093AE01B093AF011F910F9100 -:103AD0000C947A180F931F930091AC011091AD01D3 -:103AE0002091AE013091AF01DC01CB0180279127FD -:103AF000A227B3278093AC019093AD01A093AE01B0 -:103B0000B093AF011F910F910C947A180895CF9242 -:103B1000DF92EF92FF920F931F93CF93DF938C016D -:103B2000C090B001D090B101E090B201F090B3012B -:103B30008091AC019091AD01A091AE01B091AF0127 -:103B4000C82AD92AEA2AFB2ACFE1D0E0D701C60148 -:103B50000C2E04C0B695A795979587950A94D2F731 -:103B600080FF06C0B8018C2F0E94A70B019721F49B -:103B7000219760F780E001C08C2FDF91CF911F91DA -:103B80000F91FF90EF90DF90CF900895CF93DF9348 -:103B9000EC010E94871DBE010E94A70BDF91CF910F -:103BA0000895CB010E94C61D08958091B4018595AA -:103BB0008595859508958091B4018770089598E062 -:103BC000899F90011124262B2093B4010C94CB1CC7 -:103BD0002091B401809582238093B401982F97702F -:103BE00069F430E0482F552747FD509524173507D5 -:103BF00029F08595859585950C94EC1C08959091F8 -:103C0000B401977081E009F480E0089520910B01E0 -:103C100030910C01F90132969FEF40E05191581715 -:103C200089F09F3F19F4511101C0942F4F5F463026 -:103C3000A9F79F3F39F0F901E90FF11D97FDFA95BA -:103C400082830895089520910B0130910C01F901B0 -:103C50003296285F3F4F9081981301C010823196B1 -:103C6000E217F307C1F7089581E090E0E0910B01BE -:103C7000F0910C01E80FF91F108201968830910530 -:103C8000A9F708959091C001892B8093C0010895F0 -:103C900080959091C00189238093C001089510926E -:103CA000C00108959091BF01892B8093BF010895B1 -:103CB00080959091BF0189238093BF010895109250 -:103CC000BF0108959091BE01892B8093BE01089594 -:103CD00080959091BE0189238093BE010895109232 -:103CE000BE0108958093B50108951092B50108951D -:103CF00080910B0190910C01FC0131969C01285F91 -:103D00003F4F80E0919191118F5FE217F307D1F758 -:103D10000895E0910B01F0910C018091C001808326 -:103D2000E0910B01F0910C0190818091BF01892BF2 -:103D30008083E0910B01F0910C0190818091BE0194 -:103D4000892B80838091B501882361F0E0910B017C -:103D5000F0910C019081892B80830E94781E811143 -:103D60001092B50180910B0190910C010C94ED1310 -:103D70009093330180933201089520E0009739F049 -:103D8000AC0141505109842395232F5FF7CF822F37 -:103D900008958295982F9C7C392F36953695282F3B -:103DA000237344E0249FC0011124932F982B292FC3 -:103DB0002A7A2695892F8575880F822B0895809100 -:103DC000D601843021F11092C20120E488E190E014 -:103DD0000FB6F894A895809360000FBE2093600002 -:103DE00080E00E94450C83B7817F846083BF83B7E6 -:103DF000816083BF7894889583B78E7F83BF88E185 -:103E00000FB6F89480936000109260000FBE089582 -:103E10000E9489080E9469070E948A080E9471080E -:103E200091E0811101C090E0892F08950E948E18C1 -:103E30000E94E1130C94450C1F920F920FB60F9243 -:103E400011248F939F93AF93BF938091C2018111EF -:103E500013C08091C3019091C401A091C501B0919C -:103E6000C6014196A11DB11D8093C3019093C40169 -:103E7000A093C501B093C601BF91AF919F918F915F -:103E80000F900FBE0F901F90189582E084BD93E0B5 -:103E900095BD9AEF97BD80936E0008952FB7F89463 -:103EA0008091C3019091C401A091C501B091C60158 -:103EB0002FBF08952FB7F8946091C3017091C4018A -:103EC0008091C5019091C6012FBF0895CF92DF92D6 -:103ED000EF92FF920F931F932FB7F8944091C30175 -:103EE0005091C4016091C5017091C6012FBF6A0154 -:103EF0007B01EE24FF248C0120E030E0C016D106C7 -:103F0000E206F30610F4415051099A01281B390BBF -:103F1000C9011F910F91FF90EF90DF90CF9008950E -:103F2000CF92DF92EF92FF920F931F932FB7F894E7 -:103F3000C090C301D090C401E090C501F090C601CB -:103F40002FBF97018601061B170B280B390BC616CE -:103F5000D706E806F90618F0C901B80106C0C9017C -:103F6000B80161507109810991091F910F91FF906A -:103F7000EF90DF90CF9008951F920F920FB60F929F -:103F800011248F939F93AF93BF938091C30190911E -:103F9000C401A091C501B091C6010196A11DB11D3A -:103FA0008093C3019093C401A093C501B093C6014F -:103FB000BF91AF919F918F910F900FBE0F901F9067 -:103FC00018950E94DF10F8942FEF87EA91E62150B0 -:103FD00080409040E1F700C0000087E090EBDC01FA -:103FE0008093E0019093E101A093E201B093E3019B -:103FF0009CE088E10FB6F894A895809360000FBE0E -:1040000090936000FFCFEF92FF920F931F93CF9397 -:10401000DF93D82FC7E08C2F0E943C0807E010E008 -:10402000E82EF12CC701002E02C0959587950A94C1 -:10403000E2F780FF09C0602F7C2F80E00E944B09CF -:10404000D81302C081E006C00150110958F7C150D1 -:1040500010F780E0DF91CF911F910F91FF90EF90CB -:104060000895CF93C82F8CE20E940320882321F06B -:104070008C2FCF910C94032080E0CF910895CF93A3 -:104080000E948721811102C00E946D2188E294E084 -:104090000E94A406C5E6C15049F00E9469078FE35B -:1040A0009CE90197F1F700C00000F5CF81E294E0B0 -:1040B0000E94A40689E20E94312081110CC18AE28B -:1040C0000E94312081110E946D2185E00E943120E3 -:1040D00081110E94E11F0E9492218093C10187E01B -:1040E0000E9431208823A9F18BE10E94312088238E -:1040F00051F08091C10181FB222720F991E09227A4 -:1041000090FB81F90EC08EE00E943120882361F07F -:104110008091C10182FB222720F991E0922790FB38 -:1041200082F98093C10115C080E10E9431209091F5 -:10413000C101882341F093FB222720F981E08227E7 -:1041400080FB93F904C0892F809580FB90F99093B0 -:10415000C1018091C1010E9496210E94A4218093F7 -:10416000DF0180EE0E943120882341F08091DF0141 -:10417000982F909590FB80F98093DF0189E30E944E -:104180003120882359F08091DF0181FB222720F91B -:1041900091E0922790FB81F98093DF0182EE0E94EB -:1041A0003120882359F08091DF0182FB222720F9FA -:1041B00091E0922790FB82F98093DF0186EE0E94C6 -:1041C0003120882359F08091DF0183FB222720F9D9 -:1041D00091E0922790FB83F98093DF0183EE0E94A8 -:1041E0003120882359F08091DF0184FB222720F9B8 -:1041F00091E0922790FB84F98093DF0185E30E9490 -:104200003120882359F08091DF0185FB222720F996 -:1042100091E0922790FB85F98093DF0181E30E9472 -:104220003120882359F08091DF0186FB222720F975 -:1042300091E0922790FB86F98093DF0181E10E9453 -:104240003120882359F08091DF0187FB222720F954 -:1042500091E0922790FB87F98093DF018091DF0145 -:104260000E94A82187E20E943120C82F8EE10E947F -:1042700031208111C2608FE10E9431208111C46020 -:1042800080E20E9431208111C86081E20E943120C9 -:104290008111C06182E20E9431208111C06283E2FB -:1042A0000E9431208111C06484E20E943120882361 -:1042B00011F0C06802C0CC2329F08C2F0E949F21EE -:1042C0006C2F03C00E949B21682F70E080E090E07B -:1042D000CF910C944E1CCF9108956DEE7EEF80E04F -:1042E00090E00E94E62A60E082E090E00E94D42AFA -:1042F00060E083E090E00E94D42A60E084E090E0F7 -:104300000E94D42A60E085E090E00C94D42A80E0FA -:1043100090E00E94CE2A21E08D3E9E4F09F020E0E1 -:10432000822F089582E090E00C94C62A682F82E0E4 -:1043300090E00C94D42A83E090E00C94C62A682F75 -:1043400083E090E00C94D42A84E090E00C94C62A98 -:10435000682F84E090E00C94D42A8091C90180FFFA -:104360000BC06091100185E0689FB0011124759524 -:104370006795759567952BC081FF09C06091100105 -:1043800085E0689FB00111247595679520C082FF74 -:1043900007C06091100185E0689FB001112417C02B -:1043A0009091CA019923D1F060910F01961788F777 -:1043B0002091100185E0289F90011124929FA00177 -:1043C000939F500D112470E0CA010E94982A603812 -:1043D000710540F46115710539F002C065E070E0C7 -:1043E000862F08958FE7089581E008958091C9018F -:1043F00080FF08C060910E0170E075956795759516 -:10440000679521C081FF06C060910E0170E075952F -:10441000679519C082FF04C060910E0170E010C062 -:104420009091CA019923C1F060910D019617A0F7F0 -:1044300080910E01899FC001112470E00E94982A8A -:104440006038710528F46115710521F0862F0895F3 -:104450008FE7089581E0089561E070E0F4CF803F38 -:1044600021F40E94AD21819504C0813F29F40E946E -:10447000AD218093CD010895823F21F40E94AD21AA -:10448000819504C0833F29F40E94AD218093CC0123 -:104490000895893F19F40E94F62105C08A3F31F43E -:1044A0000E94F62181958093CE0108958B3F21F4DF -:1044B0000E94F621819504C08C3F29F40E94F621C8 -:1044C0008093CF010895843F21F48091CB018160D6 -:1044D00017C0853F21F48091CB01826011C0863FD7 -:1044E00021F48091CB0184600BC0873F21F480913F -:1044F000CB01886005C0883F31F48091CB01806199 -:104500008093CB0108958D3F21F48091C901816092 -:104510000BC08E3F21F48091C901826005C08F3F9E -:1045200029F48091C90184608093C9010895803F76 -:1045300039F48091CD0187FF6CC01092CD0169C024 -:10454000813F29F48091CD011816BCF362C090918F -:10455000CC01823F29F497FF5CC01092CC0159C076 -:10456000833F19F41916CCF354C0893F41F480916C -:10457000CE0118160CF04DC01092CE014AC08A3FF1 -:1045800029F48091CE0187FF44C0F6CF8B3F39F4E8 -:104590008091CF0187FF3DC01092CF013AC08C3F80 -:1045A00029F48091CF011816BCF333C0843F21F465 -:1045B0008091CB018E7F17C0853F21F48091CB0184 -:1045C0008D7F11C0863F21F48091CB018B7F0BC082 -:1045D000873F21F48091CB01877F05C0883F31F46C -:1045E0008091CB018F7E8093CB0113C08D3F21F44E -:1045F0008091C9018E7F0BC08E3F21F48091C9014B -:104600008D7F05C08F3F29F48091C9018B7F8093F6 -:10461000C9018091CC0181110EC08091CD01811121 -:104620000AC08091CE01811106C08091CF01811115 -:1046300002C01092CA0108958091C10183FF7EC01B -:1046400084E694E00E94A4068091CB011F928F9390 -:104650008FE594E09F938F930E943D078DE594E052 -:104660000E94A4068091CC01282F332727FD309586 -:104670003F938F938AE594E09F938F930E943D0729 -:1046800088E594E00E94A4068091CD01282F33276D -:1046900027FD30953F938F9385E594E09F938F930B -:1046A0000E943D0783E594E00E94A4068091CE011C -:1046B000282F332727FD30953F938F9380E594E093 -:1046C0009F938F930E943D078EE494E00E94A4067E -:1046D0008091CF01282F332727FD30953F938F936B -:1046E0008BE494E09F938F930E943D0788E494E0CD -:1046F0000E94A4068091CA011F928F9385E494E0E2 -:104700009F938F930E943D0783E494E00E94A40648 -:104710008091C9011F928F9380E494E09F938F93BF -:104720000E943D078DE394E00E94A4068DB79EB7DA -:104730004C960FB6F8949EBF0FBE8DBF8BEC91E0E8 -:104740000E9436140E944E1F9093C8018093C701A7 -:1047500008951F93CF93DF938091C7019091C80173 -:104760000E94661FAC019091CA01992321F020910B -:10477000110130E006C0209112018AE0289F9001CB -:1047800011244217530708F486C08091CC01C091D0 -:10479000CD01D091CE011091CF01811107C0C1117F -:1047A00076C0D11174C0111172C075C09F3F19F04D -:1047B0009F5F9093CA01181624F40E94AD21809344 -:1047C000CC018091CC0187FF05C00E94AD2181956D -:1047D0008093CC011C1624F40E94AD218093CD015E -:1047E0008091CD0187FF05C00E94AD218195809306 -:1047F000CD016091CC01662339F1C091CD01CC236C -:1048000019F1772767FD7095872F972F0E949D29B3 -:1048100023E333E343E35FE30E94012A0E946A2912 -:104820006093CC016C2F772767FD7095872F972FAA -:104830000E949D2923E333E343E35FE30E94012ABF -:104840000E946A296093CD011D1624F40E94F6216E -:104850008093CE018091CE0187FF05C00E94F62192 -:1048600081958093CE01111624F40E94F621809345 -:10487000CF018091CF0187FF05C00E94F62181956D -:104880008093CF01DF91CF911F910C941C239F3F08 -:1048900009F08ECF96CFDF91CF911F910895EBEC69 -:1048A000F1E085E0DF011D928A95E9F71092CA01D7 -:1048B0001092C901089587E896E00E94A4061F920D -:1048C00081E08F931F9285E08F9389E396E09F9319 -:1048D0008F930E943D070F900F900F900F900F90B5 -:1048E0000F9008958330E9F128F4813061F082302F -:1048F00009F10895853009F462C008F449C0863092 -:1049000009F474C0089580911201262F30E0280F19 -:10491000311D2F3F310524F4680F6093120103C04D -:104920008FEF80931201809112011F928F9382E783 -:1049300095E072C080911101262F30E0280F311DC3 -:104940002F3F310524F4680F6093110103C08FEFEE -:1049500080931101809111011F928F9380E695E061 -:104960005BC080911001262F30E0280F311D2F3FB2 -:10497000310524F4680F6093100103C08FEF80931A -:104980001001809110011F928F938DE495E044C037 -:1049900080910F01262F30E0280F311D2F3F310568 -:1049A00024F4680F60930F0103C08FEF80930F0111 -:1049B00080910F011F928F9388E395E02DC0809125 -:1049C0000E01262F30E0280F311D2F3F310524F432 -:1049D000680F60930E0103C08FEF80930E018091EA -:1049E0000E011F928F938FE195E016C080910D010B -:1049F000262F30E0280F311D2F3F310524F4680F9A -:104A000060930D0103C08FEF80930D0180910D0124 -:104A10001F928F9384E095E09F938F930E943D07B0 -:104A20000F900F900F900F900895833081F128F42C -:104A3000813059F08230D1F00895853009F449C0B1 -:104A4000B8F1863009F456C00895809112016817B4 -:104A500020F4861B8093120102C0109212018091F3 -:104A600012011F928F9385EF94E054C08091110141 -:104A7000681720F4861B8093110102C01092110167 -:104A8000809111011F928F9383EE94E043C0809137 -:104A90001001681720F4861B8093100102C0109249 -:104AA0001001809110011F928F9380ED94E032C02D -:104AB00080910F01681720F4861B80930F0102C0BC -:104AC00010920F0180910F011F928F938BEB94E056 -:104AD00021C080910E01681720F4861B80930E017F -:104AE00002C010920E0180910E011F928F9382EAF4 -:104AF00094E010C080910D01681720F4861B80930C -:104B00000D0102C010920D0180910D011F928F9333 -:104B100087E894E09F938F930E943D070F900F903A -:104B20000F900F900895CF93C82F1F928F938CE80A -:104B300097E09F938F930E943D0781E090E0A0E073 -:104B4000B0E0BC01CD0104C0660F771F881F991F1C -:104B5000CA95D2F70E944E1C0F900F900F900F90A5 -:104B6000CF910C948E18CF938732B0F58E3108F028 -:104B70004AC28E3009F4C4C100F5873009F48DC1F2 -:104B8000A8F4863009F045C28091C101817F8E7FF3 -:104B90008093C1018BEF98E00E94A40684E99CE019 -:104BA0000E94A40681E08093D10175C1883009F488 -:104BB0003FC08B3009F46BC12CC2863109F4E6C1C9 -:104BC00020F4803109F4B0C124C2893109F4C7C18D -:104BD0008B3109F481C11DC2883309F458C150F4E6 -:104BE000893209F412C2853309F40FC2873209F4FD -:104BF0000CC20FC2833409F408C228F48A3308F4C3 -:104C000008C2895303C2883409F003C20E948E1877 -:104C100088E79CE00E94A4069FEF23ED80E391507B -:104C200020408040E1F700C000000E94E11F33C136 -:104C300088E99CE00E94A4068AEF9BE00E94A406FB -:104C40000E949B211F928F9387EF9BE09F938F93EE -:104C50000E943D0785EF9BE00E94A4060E949221DE -:104C6000C82F82EE9BE00E94A4061F92CF938DED89 -:104C70009BE09F938F930E943D078BED9BE00E94EA -:104C8000A40681ED9BE00E94A4068C2F81701F92E8 -:104C90008F938EEC9BE09F938F930E943D078CEC4B -:104CA0009BE00E94A40682EC9BE00E94A406C1FB4C -:104CB000882780F91F928F938FEB9BE09F938F93B0 -:104CC0000E943D078DEB9BE00E94A40681EB9BE0D8 -:104CD0000E94A406C2FB882780F91F928F938EEA58 -:104CE0009BE09F938F930E943D078CEA9BE00E947C -:104CF000A40683EA9BE00E94A406C3FBCC27C0F96C -:104D00001F92CF9380EA9BE09F938F930E943D0771 -:104D10008EE99BE00E94A4060E94A421C82F8AE885 -:104D20009BE00E94A4061F92CF9385E89BE09F938F -:104D30008F930E943D0783E89BE00E94A4068AE6C9 -:104D40009BE00E94A4068C2F81701F928F9387E6B0 -:104D50009BE09F938F930E943D078DB79EB78096EF -:104D60000FB6F8949EBF0FBE8DBF85E69BE00E94F4 -:104D7000A4068EE49BE00E94A406C1FB882780F96C -:104D80001F928F938BE49BE09F938F930E943D072C -:104D900089E49BE00E94A40687E39BE00E94A406AE -:104DA000C2FB882780F91F928F9384E39BE09F9337 -:104DB0008F930E943D0782E39BE00E94A40680E25D -:104DC0009BE00E94A406C3FB882780F91F928F9363 -:104DD0008DE19BE09F938F930E943D078BE19BE0C9 -:104DE0000E94A40681E19BE00E94A406C4FB8827E0 -:104DF00080F91F928F938EE09BE09F938F930E9488 -:104E00003D078CE09BE00E94A4068AEF9AE00E9496 -:104E1000A406C5FB882780F91F928F9387EF9AE03D -:104E20009F938F930E943D0785EF9AE00E94A4060E -:104E300089ED9AE00E94A406C6FB882780F91F929C -:104E40008F9386ED9AE09F938F930E943D0784EDA8 -:104E50009AE00E94A4068CEC9AE00E94A406C7FB8C -:104E6000CC27C0F91F92CF9389EC9AE09F938F9340 -:104E70000E943D0787EC9AE00E94A4068DB79EB77A -:104E80004C960FB6F8949EBF0FBE8DBF04C082E251 -:104E900099E00E94A406C1E0C1C08091C101C82F61 -:104EA000C095C170C0FB80F98093C101CC2349F04B -:104EB0008CE69CE00E94A4068091C1018660886017 -:104EC00048C08FE59CE00E94A4068091C101897FC3 -:104ED000877F8093C101DFCF9091C10191FBCC27E7 -:104EE000C0F981E0C827892FC0FB81F98093C101F7 -:104EF000CC2319F082E59CE027C084E49CE0C9CF74 -:104F00009091C10192FBCC27C0F981E0C827892F7D -:104F1000C0FB82F98093C101CC2319F085E39CE0AA -:104F200013C085E29CE0B5CF9091C10193FBCC27E3 -:104F3000C0F981E0C827892FC0FB83F98093C101A4 -:104F4000CC2351F089E19CE00E94A4068091C1012C -:104F500081608093C10162C08CE09CE09ACF8CEEAE -:104F600098E00E94A40684EC98E00E94A4068EE8D3 -:104F700098E00E94A40681E698E00E94A40682E2DE -:104F800098E00E94A40687EF97E083CF89EE97E030 -:104F90000E94A4060E94E1131F928F938FEC97E06A -:104FA0009F938F930E943D0780910A011F928F93D8 -:104FB00088EB97E09F938F930E943D078091640157 -:104FC0001F928F9385EA97E09F938F930E943D07EE -:104FD0008091C3019091C401A091C501B091C60117 -:104FE000BF93AF939F938F9381E997E09F938F93A4 -:104FF0000E943D078DB79EB742960FB6F8949EBFAC -:105000000FBE8DBF48CF8D5101C080E00E94932517 -:1050100042CF8AE09CE00E94A406C0E08C2FCF9192 -:10502000089580E0089580E00895CF93C82F80917F -:10503000D101813071F020F0823009F44BC042C1BF -:10504000E0910B01F0910C018081823209F03CC1AA -:1050500007C0E0910B01F0910C018081823261F474 -:105060008C2F0E941128811104C08C2F0E94B3251F -:105070002FC081E090E02CC08C2F0E94132881115A -:1050800026C0C431E1F070F4CB3081F0C031D1F4EE -:105090000E945B2484E897E00E94A40682E080934B -:1050A000D10115C0C93259F0C83361F48BEF98E0D3 -:1050B0000E94A40688E897E00E94A40608C0109207 -:1050C000D10104C182E897E00E94A406FFC081E0FC -:1050D0008170FEC0C43228F5CE3108F0C1C0CB309B -:1050E000A1F1D0F4C73009F0D3C08EE18093120152 -:1050F00082E3809311018AE08093100184E1809320 -:105100000F0188E080930E0188E280930D0188E210 -:1051100096E00E94A406BFC0C33149F1C431C1F07A -:10512000B7C0CB3409F4A9C028F4C93289F0C83318 -:1051300061F0AEC0C13509F49EC0C23509F499C012 -:10514000CE3409F0A5C06AE09EC00E945B24A3C0D3 -:105150008091D001882319F01092D0019CC085E382 -:1051600096E00E94A40681E08093D101B1C08FE057 -:1051700096E00E94A4068DEF95E00E94A40680911F -:1051800012011F928F938AEF95E09F938F930E9455 -:105190003D0788EF95E00E94A40686EE95E00E9408 -:1051A000A406809111011F928F9383EE95E09F9347 -:1051B0008F930E943D0781EE95E00E94A40682ED48 -:1051C00095E00E94A406809110011F928F938FECAE -:1051D00095E09F938F930E943D078DEC95E00E9490 -:1051E000A4068CEB95E00E94A40680910F011F920B -:1051F0008F9389EB95E09F938F930E943D0787EBF8 -:1052000095E00E94A40682EA95E00E94A40680919F -:105210000E011F928F938FE995E09F938F930E94C9 -:105220003D078DE995E00E94A40686E895E00E947E -:10523000A40680910D011F928F9383E895E09F93C0 -:105240008F930E943D0781E895E00E94A4068DB7E8 -:105250009EB748960FB6F8949EBF0FBE8DBF1BC079 -:10526000CE51EC2FF0E0E95DFE4F80818093D001BC -:1052700012C061E003C061E006C06AE08091D00125 -:105280000E94722408C08091D0010E94152503C09D -:1052900086E296E013C08091D001882369F01F92C6 -:1052A0008F9380E296E09F938F930E943D070F902B -:1052B0000F900F900F9004C08DE196E00E94A4061D -:1052C00081E006C01092D10180E002C080E000CFF2 -:1052D000CF91089504D06894B1118DC0089570D015 -:1052E00088F09F5790F0B92F9927B751A0F0D1F0CF -:1052F000660F771F881F991F1AF0BA95C9F712C059 -:10530000B13081F077D0B1E0089574C0672F782F65 -:105310008827B85F39F0B93FCCF3869577956795C4 -:10532000B395D9F73EF490958095709561957F4F30 -:105330008F4F9F4F0895E89409C097FB3EF49095D6 -:105340008095709561957F4F8F4F9F4F9923A9F05E -:10535000F92F96E9BB279395F695879577956795ED -:10536000B795F111F8CFFAF4BB0F11F460FF1BC031 -:105370006F5F7F4F8F4F9F4F16C0882311F096E9C4 -:1053800011C0772321F09EE8872F762F05C0662372 -:1053900071F096E8862F70E060E02AF09A95660F2B -:1053A000771F881FDAF7880F9695879597F90895E4 -:1053B00057FD9058440F551F59F05F3F71F04795C6 -:1053C000880F97FB991F61F09F3F79F087950895AB -:1053D000121613061406551FF2CF4695F1DF08C0CA -:1053E000161617061806991FF1CF869571056105E7 -:1053F00008940895E894BB2766277727CB0197F98F -:1054000008950BD078C069D028F06ED018F095239D -:1054100009F05AC05FC01124EECFCADFA0F3959FF8 -:10542000D1F3950F50E0551F629FF001729FBB278B -:10543000F00DB11D639FAA27F00DB11DAA1F649F37 -:105440006627B00DA11D661F829F2227B00DA11DEA -:10545000621F739FB00DA11D621F839FA00D611D70 -:10546000221F749F3327A00D611D231F849F600D91 -:10547000211D822F762F6A2F11249F5750408AF0CA -:10548000E1F088234AF0EE0FFF1FBB1F661F771F56 -:10549000881F91505040A9F79E3F510570F014C0ED -:1054A000AACF5F3FECF3983EDCF38695779567953E -:1054B000B795F795E7959F5FC1F7FE2B880F911D74 -:1054C0009695879597F9089597F99F6780E870E01A -:1054D00060E008959FEF80EC089500240A9416166A -:1054E000170618060906089500240A9412161306D2 -:1054F000140605060895092E0394000C11F4882360 -:1055000052F0BB0F40F4BF2B11F460FF04C06F5F7B -:105510007F4F8F4F9F4F0895991B79E004C0991FCB -:10552000961708F0961B881F7A95C9F780950895FD -:1055300097FB072E16F4009407D077FD09D00E9440 -:10554000B22A07FC05D03EF4909581959F4F0895AF -:10555000709561957F4F0895EE0FFF1F0590F491B0 -:10556000E02D0994AA1BBB1B51E107C0AA1FBB1F5A -:10557000A617B70710F0A61BB70B881F991F5A95DF -:10558000A9F780959095BC01CD010895F999FECFBA -:1055900092BD81BDF89A992780B50895A8E1B0E041 -:1055A00042E050E00C94EE2A262FF999FECF92BDEE -:1055B00081BDF89A019700B4021639F01FBA20BDD8 -:1055C0000FB6F894FA9AF99A0FBE08950196272F0C -:1055D0000E94D52A0C94D42ADC01CB01FC01F99954 -:1055E000FECF06C0F2BDE1BDF89A319600B40D922F -:0C55F00041505040B8F70895F894FFCFE8 -:1055FC00470C380D150DE10CAD0C01B60128081443 -:10560C000A321E3F4D3620AF0362032C030C039865 -:10561C0002B102CA02E302010203040506070809EB -:02562C0000007C -:00000001FF diff --git a/keyboards/hhkb/keymaps/lxol/compiled.hex b/keyboards/hhkb/keymaps/lxol/compiled.hex deleted file mode 100644 index 63d3691c4..000000000 --- a/keyboards/hhkb/keymaps/lxol/compiled.hex +++ /dev/null @@ -1,1421 +0,0 @@ -:100000000C9493070C94D7070C94D7070C94D7073C -:100010000C94D7070C94D7070C94D7070C94D707E8 -:100020000C94D7070C94D7070C949B120C946D1367 -:100030000C945D200C94D7070C94D7070C94D70729 -:100040000C94D7070C94D7070C94D7070C94D707B8 -:100050000C94D7070C94FD200C94D7070C94D70769 -:100060000C94D7070C94D7070C94D7070C94D70798 -:100070000C94D7070C94D7070C94D7070C94D70788 -:100080000C94D7070C94D7070C94D7070C94D70778 -:100090000C94D7070C94D7070C94D7070C94D70768 -:1000A0000C94D7070C94D7070C94D707DA13FC13DA -:1000B000EA14FC13EA1441146414EA14B914CC14BD -:1000C000A617A617D517D51714183418641964196C -:1000D0003F186419EF18EF185519641964195E195F -:1000E000FC18FC18FC18FC18FC18FC18FC18FC1870 -:1000F000FC18FC18FC18FC18FC18FC18FC18FC1860 -:100100000C191A19211928193219253032583A2098 -:10011000253038620A000A722F63203031323334BE -:100120003536370A0028311F0014001A001644041F -:10013000461D001B000600200021001500080007D6 -:1001400000090019000500220023001C0017000A06 -:10015000000B00110000001E0029002B00E000E150 -:1001600000E200E3002C002400250018000C000E23 -:10017000000D0010000000310035002A00C0000210 -:1001800052E500E600E700260027001200130033C6 -:10019000450F43360000002D002E0030002F0034A4 -:1001A000003800370000001F0014001A0016460433 -:1001B000441D001B00060020002100150008000758 -:1001C00000090019000500220023001C0017000A86 -:1001D000000B00110000001E0029002B00E000E1D0 -:1001E00000E700E6002C002400250018000C000E9B -:1001F000000D0010000000310035002A00C0000290 -:1002000052E500E700E60026002700120013003345 -:10021000430F45360000002D002E0030002F003423 -:10022000003800370000003B0001000100A900AACF -:10023000000100010001003C003D0001000100A898 -:10024000000100010001003E003F0001000100012B -:10025000005500570000003A00A5003900010001D8 -:100260000001000100010040004100010046004A79 -:100270000054005600000049004C002A00580001BC -:100280000001000100010042004300470048005007 -:10029000004B004D00000044004500010052004F9B -:1002A0000051004E0000001F1814181A18161804E8 -:1002B000181D181B180618201821181518081807DB -:1002C00018091819180518221823181C1817180AC5 -:1002D000180B18111800001E1829182B18E018E127 -:1002E00018E200E3002C182418251818180C180E12 -:1002F000180D1810180000311835182A18C0000100 -:1003000000E518E600E70026182718121813180150 -:10031000000100361800002D182E1830182F183440 -:10032000183818371800001F0814081A08010001AF -:10033000001D081B080608200821081508080807E2 -:1003400008090819080508220823081C0817080AC4 -:10035000080B08110800001E0829082B08E008E116 -:1003600000E200E3002C082408250818080C080EF9 -:10037000080D0810080000310835082A08C00001DF -:1003800000E500E600E300260827081208130833FA -:10039000080F08360800002D082E0830082F0834F2 -:1003A000083808370800001F1414141A141614040F -:1003B000141D141B140614201421141514081407FA -:1003C00014091419140514221423141C1417140AE4 -:1003D000140B14111400001E1429142B14E014E142 -:1003E00014E200E3002C142414251418140C140E29 -:1003F000140D1410140000311435142A14C0000117 -:1004000000E514E600E70026142714121413140163 -:10041000000100361400002D142E1430142F143453 -:10042000143814371400001F0414041A04010001C6 -:10043000001D041B040604200421041504080407FD -:1004400004090419040504220423041C0417040AE3 -:10045000040B04110400001E0429042B04E004E131 -:1004600000E200E3002C042404250418040C040E0C -:10047000040D0410040000310435042A04C00001F6 -:1004800000E500E600E30026042704120413043309 -:10049000040F04360400002D042E0430042F04340D -:1004A000043804370400000A44454255473A2065A1 -:1004B0006E61626C65642E0A005B735D004B65794A -:1004C000626F6172642073746172742E0A005B57EC -:1004D0005D005B535D005B525D005B445D005B4310 -:1004E0005D001203480048004B00420020006D00F0 -:1004F0006F00640000000C0371002E006D002E00E0 -:100500006B0000000403090409027400040100A048 -:10051000FA09040000010301010009211101000191 -:10052000223F000705810308000A090401000103B6 -:10053000010200092111010001224D00070582037B -:1005400008000A090402000103000000092111014A -:1005500000012236000705830308000A090403008E -:1005600002030000000921110100012220000705FB -:10057000840320000107050403200001120110017B -:1005800000000008EDFEFECA040101020001063170 -:10059000FF0974A1010975150025FF9520750881D3 -:1005A000020976150025FF952075089102C0050106 -:1005B0000980A101850216010026B7001A01002A50 -:1005C000B700751095018100C0050C0901A10185D6 -:1005D00003160100269C021A01002A9C0275109540 -:1005E000018100C005010902A1010901A10005095D -:1005F000190129051500250195057501810295014F -:10060000750381010501093009311581257F9502A6 -:100610007508810609381581257F950175088106C1 -:10062000050C0A38021581257F950175088106C0E1 -:10063000C005010906A101050719E029E7150025F4 -:100640000195087501810295017508810105081958 -:100650000129059505750191029501750391010523 -:1006600007190029FF150025FF950675088100C0B0 -:100670000A002530325820006B6579626F61726420 -:100680005F7265706F72743A20004B6579626F61BA -:100690007264204C4544732073746174653A20255C -:1006A000780A00646F6E652E0A00626F6F676D6175 -:1006B000676963207363616E3A202E2E2E20002915 -:1006C0000A002575002F002575005D2800256400AF -:1006D0002000256400200025640020002564007CA3 -:1006E0000025303258006D6F7573656B6579205B3E -:1006F00062746E7C782079207620685D287265703F -:100700002F61636C293A205B006D6B5F77686565CC -:100710006C5F74696D655F746F5F6D6178203D20FB -:1007200025640A006D6B5F776865656C5F6D617845 -:100730005F7370656564203D2025640A006D6B5F02 -:1007400074696D655F746F5F6D6178203D2025640D -:100750000A006D6B5F6D61785F7370656564203D45 -:100760002025640A006D6B5F696E74657276616C3A -:10077000203D2025640A006D6B5F64656C61792003 -:100780003D2025640A006D6B5F776865656C5F745A -:10079000696D655F746F5F6D6178203D2025640A27 -:1007A000006D6B5F776865656C5F6D61785F737016 -:1007B000656564203D2025640A006D6B5F74696D7A -:1007C000655F746F5F6D6178203D2025640A006D60 -:1007D0006B5F6D61785F7370656564203D20256493 -:1007E0000A006D6B5F696E74657276616C203D20E6 -:1007F00025640A006D6B5F64656C6179203D20257E -:10080000640A000A00257500363A20776865656C31 -:100810005F74696D655F746F5F6D61783A20000A7F -:1008200000257500353A20776865656C5F6D6178E5 -:100830005F73706565643A20000A00257500343ADC -:100840002074696D655F746F5F6D61783A20000A8E -:1008500000257500333A206D61785F7370656564BB -:100860003A20000A00257500323A20696E746572DC -:1008700076616C286D73293A20000A0025750031D5 -:100880003A2064656C6179282A31306D73293A20E9 -:10089000000A092D2056616C756573202D0A004DE4 -:1008A0003E004D25643E20003F0073657420646562 -:1008B0006661756C740A00433E2000776865726556 -:1008C0002064656C74613A20637572736F723D25A4 -:1008D000642C20776865656C3D25640A5365652046 -:1008E000687474703A2F2F656E2E77696B69706526 -:1008F0006469612E6F72672F77696B692F4D6F7511 -:1009000073655F6B6579730A000A092D204D6F7559 -:1009100073656B6579202D0A4553432F713A097130 -:100920007569740A313A0964656C6179282A313035 -:100930006D73290A323A09696E74657276616C28A2 -:100940006D73290A333A096D61785F737065656468 -:100950000A343A0974696D655F746F5F6D61780A76 -:10096000353A09776865656C5F6D61785F737065AE -:1009700065640A363A09776865656C5F74696D6508 -:100980005F746F5F6D61780A0A703A097072696E00 -:10099000742076616C7565730A643A097365742016 -:1009A00064656661756C74730A75703A092B310A57 -:1009B000646F776E3A092D310A706775703A092BAA -:1009C00031300A7067646F776E3A092D31300A0A48 -:1009D0007370656564203D2064656C7461202A2015 -:1009E0006D61785F7370656564202A202872657078 -:1009F000656174202F2074696D655F746F5F6D6130 -:100A000078290A003F004D3E2000433E20004C253F -:100A1000640A0074696D65725F636F756E743A2065 -:100A20002530346C580A006B6579626F6172645FBF -:100A300069646C653A2025580A006B6579626F61BC -:100A400072645F70726F746F636F6C3A2025580A1E -:100A500000686F73745F6B6579626F6172645F6C5D -:100A600065647328293A2025580A000A092D205365 -:100A70007461747573202D0A004743433A20342E65 -:100A8000392E32204156522D4C4942433A20312EC4 -:100A9000382E31204156525F415243483A20617608 -:100AA00072350A004F5054494F4E533A204C554628 -:100AB0004120424F4F544D41474943204D4F5553DC -:100AC000454B45592045585452414B455920434FB9 -:100AD0004E534F4C4520434F4D4D414E44203531F0 -:100AE000320A004255494C443A2031363731386594 -:100AF000662D6469727479202832333A33393A3476 -:100B000039204A756E2020392032303136290A00CA -:100B10005649443A2030784645454428712E6D2E7A -:100B20006B29205049443A203078434146452848B3 -:100B3000484B42206D6F6429205645523A20307848 -:100B4000303130340A00444553433A20712E6D2E23 -:100B50006B206B6579626F617264206669726D7774 -:100B600061726520666F722048484B420A000A098C -:100B70002D2056657273696F6E202D0A000A092DAB -:100B800020436F6E736F6C65202D0A4553432F71A0 -:100B90003A09717569740A6D3A096D6F7573656B01 -:100BA00065790A000A092D204D61676963202D0AC5 -:100BB000443A094465627567204D657373616765E2 -:100BC00020546F67676C650A583A094D6174726901 -:100BD00078204465627567204D6F646520546F67A7 -:100BE000676C65202D2053686F77206B6579707274 -:100BF000657373657320696E206D61747269782006 -:100C0000677269640A4B3A094B6579626F61726475 -:100C100020446562756720546F67676C65202D20DE -:100C200053686F77206B6579707265737320726596 -:100C3000706F72740A4D3A094465627567204D6F92 -:100C400075736520546F67676C650A563A09566577 -:100C50007273696F6E0A533A095374617475730A3B -:100C6000433A09416374697661746520436F6E731A -:100C70006F6C65204D6F64650A46312D4631303A00 -:100C80000953776974636820746F204C61796572C9 -:100C900020302D392028463130203D204C30290A83 -:100CA000302D393A0953776974636820746F204C8A -:100CB0006179657220302D390A4553433A095377DB -:100CC0006974636820746F204C61796572203020EC -:100CD00028616C7465726E617465206B6579203172 -:100CE000290A47524156453A095377697463682087 -:100CF000746F204C6179657220302028616C7465B6 -:100D0000726E617465206B65792032290A504155F5 -:100D100053453A094A756D7020746F20426F6F74A5 -:100D20006C6F6164657220285265736574290A4589 -:100D30003A095072696E7420454550524F4D205308 -:100D4000657474696E67730A000A002575002E6E5B -:100D50006B726F3A20000A002575002E7377617060 -:100D60005F6261636B736C6173685F6261636B7315 -:100D7000706163653A20000A002575002E73776163 -:100D8000705F67726176655F6573633A20000A0081 -:100D90002575002E6E6F5F6775693A20000A002581 -:100DA00075002E737761705F72616C745F72677526 -:100DB000693A20000A002575002E737761705F6C18 -:100DC000616C745F6C6775693A20000A00257500D4 -:100DD0002E636170736C6F636B5F746F5F636F6EB4 -:100DE00074726F6C3A20000A002575002E737761CB -:100DF000705F636F6E74726F6C5F636170736C6F42 -:100E0000636B3A20000A0025303258006B65796D1B -:100E100061705F636F6E6669672E7261773A20005A -:100E20000A002575002E6D6F7573653A20000A0063 -:100E30002575002E6B6579626F6172643A20000A35 -:100E4000002575002E6D61747269783A20000A00E1 -:100E50002575002E656E61626C653A20000A0025DA -:100E60003032580064656275675F636F6E666967EC -:100E70002E7261773A20000A00257500646566616C -:100E8000756C745F6C617965723A20003F000A6D81 -:100E90006F7573653A206F66660A000A6D6F757329 -:100EA000653A206F6E0A000A6B6579626F61726441 -:100EB0003A206F66660A000A6B6579626F61726438 -:100EC0003A206F6E0A000A6D61747269783A206F79 -:100ED00066660A000A6D61747269783A206F6E0A5C -:100EE000000A64656275673A206F66660A000A64E4 -:100EF000656275673A206F6E0A000A0A4A756D705E -:100F0000696E6720746F20626F6F746C6F616465C7 -:100F1000722E2E2E2000433E20006565636F6E66A4 -:100F200069673A0A000011241FBECFEFDAE0DEBF86 -:100F3000CDBF04B603FE24C08091E0019091E10191 -:100F4000A091E201B091E3018730904BA740B04BF4 -:100F5000B9F41092E0011092E1011092E2011092B6 -:100F6000E30114BE84B7877F84BF88E10FB6F8948D -:100F700080936000109260000FBEE0E0FFE30995EF -:100F800011E0A0E0B1E0EEE7F8E502C005900D92B7 -:100F9000A233B107D9F711E0A2E3B1E001C01D927D -:100FA000A03EB107E1F70E94D50F0C943D2C0C94A4 -:100FB0000000FF93EF93E0913201F09133013097FD -:100FC00009F00995EF91FF910895FC01859180301A -:100FD00011F0EFDFFBCF0895FF27E0E230E247FF9B -:100FE0000CC0419597FF09C0EDE260957095809522 -:100FF0009095611D711D811D911D27FF02C02195D6 -:1010000030E350E2AA27660F771F881F991FAA1F97 -:10101000A41710F0A41B63955A95A9F7AA3008F0FD -:10102000A95FA05DAF93F3956115710581059105E9 -:1010300041F7ED3211F4EF93F395F21718F43F9363 -:10104000F395FBCF8F91B5DFFA95E1F70895E9911C -:10105000F9918591803021F0853219F0AADFF9CF1E -:10106000089520E0E89455915532C1F3503311F4BE -:10107000689455915A3348F4505390F3220F022E3E -:10108000220F220F200D250FF4CF0EF42195899108 -:101090009991533619F3533729F1533559F1BC015E -:1010A00088279927E8945C3621F48991999168946E -:1010B0005591543639F446EF7EF077FF0DC08FEF2F -:1010C0009FEF0AC055374AE039F0583540E121F02A -:1010D000523642E009F00895FF93EF937DDFEF91E0 -:1010E000FF91B7CFFF93EF93FC0181918030B9F36B -:1010F00060DFFBCFFF93EF9368DFF1CFDF93CF93F8 -:10110000CDB7DEB72596A3DFCF91DF9108958FEF9E -:1011100084B980E485B957985F9A2E9A2F98ECE3AA -:10112000F1E088E08E0F11928E13FDCFE4E3F1E041 -:1011300088E08E0F11928E13FDCF8CE391E0909397 -:1011400047018093460184E391E0909345018093A9 -:1011500044010895EF92FF920F931F93CF93DF9373 -:1011600080914401909145012091460130914701C1 -:1011700030934501209344019093470180934601A9 -:10118000C0E0D0E0EE24E394F12C0FEF10E020E07B -:1011900030E085B1807C8C2BA90193E0440F551F72 -:1011A0009A95E1F7842B85B98AE18A95F1F700C019 -:1011B000E0914401F0914501EC0FFD1F808190E02A -:1011C000022E02C0959587950A94E2F780FD2F9A2A -:1011D00095E39A95F1F70000E6B52E988AE18A9595 -:1011E000F1F700C04091460150914701DA01AC0F80 -:1011F000BD1F4F9B0AC0C701022E01C0880F0A9471 -:10120000EAF780959C91892308C06C91C701022E52 -:1012100001C0880F0A94EAF7862B8C9386B56E2F4F -:1012200070E08E1728F086B590E0861B970B06C0FD -:10123000E6B5C801861B970B8E0F911D069758F0D7 -:10124000E0914401F0914501EC0FFD1F8081FA010E -:10125000EC0FFD1F80839AE19A95F1F700C02F985B -:101260002E9A8BE291E00197F1F700C000002F5F0A -:101270003F4F2830310509F08CCFA0914601B09145 -:101280004701AC0FBD1FE0914401F0914501EC0F07 -:10129000FD1F9C918081981751F00E949B206093C4 -:1012A00048017093490180934A0190934B01219624 -:1012B000C830D10509F06BCF8091D601853021F07F -:1012C0008091D601811111C060914801709149014E -:1012D00080914A0190914B010E94D1206131774267 -:1012E0008105910510F00E94202081E0DF91CF91CF -:1012F0001F910F91FF90EF9008952091460130913A -:101300004701F901E80FF11D808108950F931F93A4 -:10131000CF93DF9386E191E00E94E507C0E0D0E043 -:101320000AE011E0E0914601F0914701EC0FFD1F4A -:1013300080810E940A201F928F93DF93CF931F9387 -:101340000F930E947E0821960F900F900F900F90A0 -:101350000F900F90C830D10529F7DF91CF911F91E1 -:101360000F9108951F93CF93DF93C7E0D0E010E073 -:10137000E0914601F0914701EC0FFD1F808190E064 -:101380000E94FE1F180F219798F7812FDF91CF91B0 -:101390001F9108950895089561110BC0FC01828189 -:1013A000882321F085EE0E949A1603C085EE0E94E4 -:1013B000391780E090E0089581E0089581E0089574 -:1013C0000C94DE0908950F931F93CF93DF938C0144 -:1013D000FC01C081D181CE010E94C81EBE010E94C5 -:1013E0008C0AEC01B8010E94E009882309F48DC041 -:1013F000F8018281882309F44AC080915701811144 -:101400001FC0C431F0E5DF0709F051C00E94E209B6 -:1014100081E0809357010E948F2090935601809322 -:10142000550110924E011092500110924F011092EE -:10143000520110925101109254011092530165C053 -:1014400080915501909156010E94A720883C9105FA -:1014500070F480914E01E82FF0E0EE0FFF1FE15B8A -:10146000FE4FD183C0838F5F80934E014EC0C4383E -:1014700080E5D80721F0C538D04501F13AC0F80120 -:101480008281882341F010924C0182E01EC0C43852 -:10149000E0E5DE0759F580914C01811106C086E236 -:1014A0000E949A1686E20E94391782E01CC0C43856 -:1014B000F0E5DF0741F3C538D045D9F4F801828162 -:1014C000882331F010924D0180E20E9461171DC007 -:1014D00080914D01811106C087E20E949A1687E231 -:1014E0000E94391780E20E9468170FC0C538D045A6 -:1014F00029F381E080934C0180934D01C801DF9175 -:10150000CF911F910F910C94DC0980E0DF91CF9176 -:101510001F910F9108950895E72FF0E098E0899FBB -:10152000E00DF11D112483E0EE0FFF1F8A95E1F716 -:10153000E60FF11DEE0FFF1FE95DFE4F85919491BF -:101540000895880F991FFC01EB55F0408591949107 -:101550000895880F991FFC01EB5DFE4F85919491D2 -:1015600008950F931F93CF93DF93EC01811520E330 -:10157000920750F5C11580E2D80708F0C3C0CB3BF5 -:10158000D10590F4C83AD10508F06AC0C53AD10532 -:1015900008F05BC0C430D10508F0D4C1219709F030 -:1015A000CEC101E010E00EC2CF3FD10511F008F02E -:1015B000C9C1C03FD10508F0A2C0CE01805E91092B -:1015C000089708F4BFC1BBC1C13090E5D90709F441 -:1015D000A2C020F5C0318FE4D80770F4C11590E4A3 -:1015E000D90708F094C0C11521E3D20708F0A7C1BC -:1015F000DD278E01106CE6C1C115D04509F09FC1F1 -:101600000E94CF198FEF94E32CE08150904020404E -:10161000E1F700C000000E942221D4C1C11597E566 -:10162000D90758F4C03121E5D20708F020C1C431F0 -:1016300080E5D80708F479C082C1CE0190578115A2 -:10164000904108F07CC1DF7077C1C53AD10509F43B -:101650007BC1C63AD10509F07AC102E810E4B2C1F3 -:10166000C83AD10509F476C1C93AD10509F475C162 -:10167000CA3AD10509F474C1CB3AD10509F473C152 -:10168000CC3AD10509F472C1CD3AD10509F471C142 -:10169000C03BD10509F470C1CE3AD10509F46FC140 -:1016A000CF3AD10509F46EC1C13BD10509F46DC132 -:1016B000C23BD10509F46CC1C33BD10509F46BC130 -:1016C000C43BD10509F46AC1C53BD10509F469C120 -:1016D000C63BD10509F468C1C73BD10509F467C110 -:1016E000C83BD10509F466C1C93BD10509F465C100 -:1016F000CA3BD10509F464C100E014E463C18E0162 -:10170000106560C1CE019F700E94A90A5CC1DF70A4 -:101710008E01106A57C187EA94E00E94E507809124 -:10172000C10181608093C1014DC10E94C822811115 -:1017300002C00E94AE220E94E52290E09093E00158 -:101740008093DF01C23080E5D80721F48091DF016A -:10175000816086C0C43090E5D90721F48091DF0113 -:1017600082607EC0C63020E5D20721F48091DF017F -:10177000846076C0C83080E5D80719F48091DF0115 -:1017800027C0CA3090E5D90721F48091DF0180613C -:1017900067C0CC3020E5D20721F48091DF01806260 -:1017A0005FC0CE3080E5D80721F48091DF018064EE -:1017B00057C0C03190E5D90721F48091DF018068DE -:1017C0004FC0C23120E5D20729F48091DF01846047 -:1017D000886046C0C33080E5D80721F48091DF01DE -:1017E0008E7F3EC0C53090E5D90721F48091DF019E -:1017F0008D7F36C0C73020E5D20721F48091DF010C -:101800008B7F2EC0C93080E5D80719F48091DF01A5 -:1018100026C0CB3090E5D90721F48091DF018F7E7F -:101820001FC0CD3020E5D20721F48091DF018F7DEC -:1018300017C0CF3080E5D80721F48091DF018F7B7E -:101840000FC0C13190E5D90721F48091DF018F7776 -:1018500007C0C331D04531F48091DF018B7F877F92 -:101860008093DF018091DF010E94E922ABC08D2FC0 -:1018700099278F70992781309105D9F49E012370A3 -:10188000332702C0880F991F2A95E2F79C688E01C2 -:1018900044E0000F111F4A95E1F700271370802BD9 -:1018A000912B53E0CC0FDD1F5A95E1F7C076DD2771 -:1018B0002FC08230910531F4DC2FCC278E01016FCF -:1018C000106A80C08330910569F4CE018370992736 -:1018D00001E010E002C0000F111F8A95E2F7C80175 -:1018E0009C680FC084309105B9F4CE0183709927AC -:1018F00001E010E002C0000F111F8A95E2F7C80155 -:101900009A6823E0CC0FDD1F2A95E1F7C07ED770DF -:101910008C010C2B1D2B56C08530910531F4DC2F2A -:10192000CC278E01046F106A4DC0069709F04AC09B -:10193000CF71DD27DC2FCC278E01106243C000E081 -:1019400010E040C08E013EC001E810E43BC003E857 -:1019500010E438C002EE14E435C009EE14E432C0DD -:101960000AEE14E42FC005EB14E42CC006EB14E4DB -:1019700029C007EB14E426C00CEC14E423C00DECE2 -:1019800014E420C003E815E41DC00AE815E41AC0F9 -:1019900002E915E417C004E915E414C001E216E4F5 -:1019A00011C003E216E40EC004E216E40BC005E227 -:1019B00016E408C006E216E405C007E216E402C019 -:1019C0000AE216E4C801DF91CF911F910F910895AB -:1019D000E72FF0E098E0899FE00DF11D112483E0EE -:1019E000EE0FFF1F8A95E1F7E60FF11DEE0FFF1FC7 -:1019F000E95DFE4F85919491803E9105E0F4803C35 -:101A0000910558F58133910509F46FC048F4893286 -:101A1000910509F463C08A32910509F46DC072C062 -:101A200089339105E9F082389105D1F0853391052C -:101A300009F44DC067C0833E910581F138F4803EC2 -:101A40009105B9F0823E9105D9F05CC0863E9105C2 -:101A500061F1873E9105A1F155C00E94A10A089548 -:101A60002091DF0120FD02C021FF4CC080EE90E0FC -:101A700049C08091DF0180FFF9CF89E390E042C047 -:101A80008091DF0182FF0EC08091DF0184FF03C0DF -:101A900080E090E037C083EE90E034C08091DF01B9 -:101AA00082FFF2CF82EE90E02DC08091DF0183FFB4 -:101AB0000BC08091DF0184FDEBCF87EE90E022C068 -:101AC0008091DF0183FFF5CF86EE90E01BC080910F -:101AD000DF0185FF07C089E290E014C08091DF013B -:101AE00085FFF9CF85E390E00DC08091DF0186FF8F -:101AF00007C08AE290E006C08091DF0186FFF9CF3F -:101B000081E390E00E94B10A089508950C94850D38 -:101B10008091630108959FB7F89410925A019FBF76 -:101B20009091D601943009F057C09091E9009F70D0 -:101B30003091EC00232F217030FD20E8922B24E01F -:101B40002093E9002091EB0020FF43C02091EE009C -:101B500027FF3FC020915801222321F02091E80067 -:101B600025FF37C01092580126E03091E80035FD7E -:101B700015C03091D601343061F53091EB0035FD60 -:101B800028C0215021F481E08093580122C0EFE960 -:101B9000FFE03197F1F700C00000E7CF8093F1003C -:101BA0008091E80085FD0AC08091E80080FFFCCFAD -:101BB0008091E8008E778093E80006C08FB7F89494 -:101BC00021E020935A018FBF9F709093E90080E03D -:101BD00008959F709093E9008FEF0895CF93DF935E -:101BE00000D01F92CDB7DEB79C018091D601843022 -:101BF00019F593E099833B832A839093E9008FEF53 -:101C00009091E800815095FD06C095ED9A95F1F709 -:101C100000008111F5CF8091E80085FF0DC040E004 -:101C200050E063E070E0CE0101960E948B1080913D -:101C3000E8008E778093E8000F900F900F90DF916F -:101C4000CF910895CF93DF9300D01F92CDB7DEB729 -:101C50002091D601243021F522E029839B838A83B9 -:101C600083E08093E9008FEF9091E800815095FD2B -:101C700006C095ED9A95F1F700008111F5CF80919E -:101C8000E80085FF0DC040E050E063E070E0CE0169 -:101C900001960E948B108091E8008E778093E80077 -:101CA0000F900F900F90DF91CF9108952091D60162 -:101CB0002430F1F422E02093E9002FEF3091E80086 -:101CC000215035FD06C035ED3A95F1F700002111A0 -:101CD000F5CF2091E80025FF0BC040E050E065E023 -:101CE00070E00E948B108091E8008E778093E8006E -:101CF0000895CF93DF932091D601243039F521E068 -:101D00002093E9002FEF3091E800215035FD06C007 -:101D100035ED3A95F1F700002111F5CF2091E8005B -:101D200025FF14C0EC0140E050E068E070E00E9444 -:101D30008B108091E8008E778093E80088E0FE01A8 -:101D4000ABE5B1E001900D928A95E1F7DF91CF917B -:101D500008958EED94E00E94E5078091D5018111F0 -:101D600009C00E9420120E947D128091E2008460CE -:101D70008093E20008958AED94E00E94E5071092B6 -:101D8000D501089586ED94E00C94E50782ED94E08A -:101D90000C94E5078EEC94E00E94E5070C94572024 -:101DA000209159012F5F822F62E30E94CD2B99234E -:101DB00019F02093590108951092590180915A0108 -:101DC000882371F18091D601843041F58091E9003A -:101DD0008F702091EC00922F917020FD90E8892B5C -:101DE00094E09093E9009091EB0090FF14C09091E3 -:101DF000EE0097FF10C09091E80095FF03C010928D -:101E0000F100F9CF9091E80090FF05C09091E800B3 -:101E10009E779093E8008F708093E90010925A01AA -:101E2000089542E061EC81E00E949A1142E061EC89 -:101E300082E00E949A1142E061EC83E00E949A11D4 -:101E400042E261EC84E00C949A118091D8018330D5 -:101E500009F453C030F4813071F0823009F48CC041 -:101E600008958A3009F478C08B3009F45EC0893057 -:101E700009F09AC020C08091D701813A09F094C03E -:101E80008091E800877F8093E8008091DB0190914A -:101E9000DC01892B21F468E08BE591E003C060E070 -:101EA00080E090E070E00E94D6108091E8008B778F -:101EB0008093E80008958091D701813209F074C0C1 -:101EC0008091DB019091DC01892B09F06DC080913C -:101ED000E800877F8093E8008091E80082FD05C0DC -:101EE0008091D6018111F8CF5FC08091F10080937D -:101EF00063018091E8008B7753C08091D701813ACC -:101F000009F052C08091DB019091DC01892B09F02E -:101F10004BC08091E800877F8093E8008091E800C3 -:101F200080FFFCCF80910A0136C08091D7018132B9 -:101F3000D9F58091DB019091DC01892BA9F5809185 -:101F4000E800877F8093E8000E94CF118091D9013B -:101F500080930A010C94CF198091D701813221F529 -:101F60008091E800877F8093E8000E94CF118091E4 -:101F7000DA018093640108958091D701813AA1F438 -:101F80008091E800877F8093E8008091E80080FFDF -:101F9000FCCF809164018093F1008091E8008E77FE -:101FA0008093E8000C94CF11089584B7877F84BF95 -:101FB00088E10FB6F89480936000109260000FBE25 -:101FC00090E080E80FB6F8948093610090936100F0 -:101FD0000FBE0E94AF150E9420120E947D128091B8 -:101FE000E20084608093E2008BE89DE00E94F91F8C -:101FF00078940E9402150E94B11580E091E00E9441 -:102000001D158DEB94E00E94E5078091D601853087 -:1020100089F489EB94E00E94E5070E9420208091DA -:10202000D401882391F30E944920882371F30E94F0 -:102030007510EBCF0E94D515E8CF292F3327233019 -:102040003105C9F064F42130310581F022303105C9 -:1020500009F043C084E790E028E035E042C0213237 -:102060003105F1F02232310541F137C082E190E0D3 -:102070002CE735E036C099278130910541F0823058 -:10208000910541F0892B49F5E4E0F5E005C0E6EF64 -:10209000F4E002C0E2EEF4E0849190E09F0121C000 -:1020A0006430D8F4E62FF0E0EE0FFF1FE15EFE4F44 -:1020B0002081318189E090E014C0643070F470E0D8 -:1020C000FB01EE0FFF1FE95EFE4F20813181FB0116 -:1020D000ED5EFE4F808190E004C080E090E020E063 -:1020E00030E0FA0131832083089580E189BD82E1E7 -:1020F00089BD09B400FEFDCF8091D8008F7D80930B -:10210000D8008091E00082608093E0008091E00040 -:1021100081FDFCCF0895CF92DF92EF92FF920F9353 -:102120001F93CF93DF93EC018B016A010E94EE11A4 -:10213000811133C0C114D10439F0F601808191813D -:10214000081B190BC80FD91FE12CF12C0115110523 -:1021500019F18091E80085FD16C08091E8008E7726 -:102160008093E800C114D10449F0F6018081918187 -:10217000E80EF91EF182E08285E00FC00E94EE11A8 -:10218000882321F30AC089918093F100015011093D -:10219000FFEFEF1AFF0ADACF80E0DF91CF911F91B6 -:1021A0000F91FF90EF90DF90CF9008952091DD0187 -:1021B0003091DE012617370748F06115710539F4B3 -:1021C0002091E8002E772093E80001C0B90140E09B -:1021D00061157105A9F12091D601222309F443C0AC -:1021E000253009F442C02091E80023FD40C0209131 -:1021F000E80022FD32C02091E80020FFE9CF4091A5 -:10220000F3002091F20030E0342BFC01CF01611586 -:10221000710559F02830310540F481918093F10027 -:10222000615071092F5F3F4FF1CF41E028303105F8 -:1022300009F040E02091E8002E772093E800C8CF15 -:102240004111C9CF0AC08091D601882361F0853041 -:1022500061F08091E80083FD0AC08091E80082FF70 -:10226000F2CF80E0089582E0089583E0089581E050 -:1022700008952091DD013091DE012617370748F0DF -:102280006115710539F42091E8002E772093E8005C -:1022900001C0B901FC0120E06115710591F1809147 -:1022A000D601882309F440C0853009F43FC08091ED -:1022B000E80083FD3DC08091E80082FD2FC0809141 -:1022C000E80080FFE9CF2091F3008091F20090E0D8 -:1022D000922B6115710559F08830910540F42491D5 -:1022E0002093F1003196615071090196F2CF21E0FF -:1022F000089709F020E08091E8008E778093E8004D -:10230000CBCF2111CCCF0AC08091D601882361F0B8 -:10231000853061F08091E80083FD0AC08091E8007B -:1023200082FFF2CF80E0089582E0089583E008956F -:1023300081E00895982F973058F59093E900981709 -:1023400039F07091EC002091ED005091F00003C045 -:10235000242F762F50E021FF19C03091EB003E7FF3 -:102360003093EB003091ED003D7F3093ED003091E4 -:10237000EB0031603093EB007093EC002093ED00A4 -:102380005093F0002091EE0027FF07C09F5FD3CF4E -:102390008F708093E90081E0089580E00895809136 -:1023A000D70187FF11C08091E80082FD05C08091B0 -:1023B000D6018111F8CF11C08091E8008B770BC056 -:1023C0008091D601882349F08091E80080FFF8CF02 -:1023D0008091E8008E778093E80008952091E400D2 -:1023E0003091E50095E64091EC00842F817040FF2C -:1023F00022C08091E80080FD1CC08091D601882316 -:1024000091F0853091F08091EB0085FD10C04091F6 -:10241000E4005091E5004217530729F39A019150C7 -:1024200011F784E0089582E0089583E0089581E043 -:10243000089580E008954091E80042FFDECF0895BE -:102440000E948E120E949612E0EEF0E08081816080 -:102450008083E8EDF0E080818F77808319BCA7ED61 -:10246000B0E08C918E7F8C9380818F7E80831092E0 -:10247000D50108950F931F93CF93DF930E948E127F -:102480000E949612C8EDD0E088818F77888388817A -:102490008068888388818F7D888319BC1092D601DB -:1024A0001092D2011092D4011092D30100EE10E0EC -:1024B000F80180818B7F808388818160888342E0FE -:1024C00060E080E00E949A11E1EEF0E080818E7F72 -:1024D0008083E2EEF0E0808181608083808188608B -:1024E0008083F80180818E7F8083888180618883EA -:1024F000DF91CF911F910F910895E8EDF0E0808179 -:102500008F7E8083E7EDF0E080818160808384E0CE -:1025100082BF81E08093D5010C943A12E8EDF0E09F -:1025200080818E7F80831092E20008951092DA00FD -:102530001092E10008951F920F920FB60F9211248E -:102540002F933F934F935F936F937F938F939F93BB -:10255000AF93BF93EF93FF938091E10082FF0BC095 -:102560008091E20082FF07C08091E1008B7F809321 -:10257000E1000E94D00E8091DA0080FF1FC08091A0 -:10258000D80080FF1BC08091DA008E7F8093DA0034 -:102590008091D90080FF0DC080E189BD82E189BDB5 -:1025A00009B400FEFDCF81E08093D6010E94A90E00 -:1025B00005C019BC1092D6010E94BB0E8091E100AB -:1025C00080FF19C08091E20080FF15C08091E20079 -:1025D0008E7F8093E2008091E20080618093E20030 -:1025E0008091D80080628093D80019BC85E08093E8 -:1025F000D6010E94C60E8091E10084FF30C0809118 -:10260000E20084FF2CC080E189BD82E189BD09B46C -:1026100000FEFDCF8091D8008F7D8093D8008091FF -:10262000E1008F7E8093E1008091E2008F7E8093B5 -:10263000E2008091E20081608093E2008091D2010B -:10264000882311F084E007C08091E30087FD02C079 -:1026500081E001C083E08093D6010E94CA0E809180 -:10266000E10083FF29C08091E20083FF25C08091B3 -:10267000E100877F8093E10082E08093D601109291 -:10268000D2018091E1008E7F8093E1008091E20091 -:102690008E7F8093E2008091E20080618093E2006F -:1026A00042E060E080E00E949A118091F000886032 -:1026B0008093F0000E94C20EFF91EF91BF91AF9105 -:1026C0009F918F917F916F915F914F913F912F914A -:1026D0000F900FBE0F901F9018951F920F920FB67C -:1026E0000F9211242F933F934F935F936F937F9398 -:1026F0008F939F93AF93BF93CF93DF93EF93FF930A -:10270000C091E900CF708091EC00D82FD17080FD8E -:10271000D0E81092E9008091F000877F8093F0006C -:1027200078940E94B1131092E9008091F0008860C3 -:102730008093F000CD2BCF70C093E900FF91EF9113 -:10274000DF91CF91BF91AF919F918F917F916F91C9 -:102750005F914F913F912F910F900FBE0F901F905F -:1027600018951F93CF93DF93CDB7DEB7AA970FB617 -:10277000F894DEBF0FBECDBFE7EDF1E088E08E0F2D -:102780009091F10091938E13FBCF0E94250F8091C1 -:10279000E80083FF1FC18091D7019091D801492F94 -:1027A00050E04A30510508F015C1FA01EA5AFF4FCE -:1027B0000C94ED2B803881F0823809F00BC18091A8 -:1027C000DB018F708093E9008091EB0085FB882707 -:1027D00080F91092E90006C08091D3019091D40154 -:1027E000911182609091E800977F9093E800809328 -:1027F000F1001092F100C8C0282F2D7F09F0EAC027 -:10280000882319F0823061F0E5C08091D9018130D0 -:1028100009F0E0C0933009F080E08093D4012BC030 -:102820008091D901811127C08091DB018F7009F45B -:10283000D1C08093E9002091EB0020FF1CC09330B1 -:1028400021F48091EB00806214C09091EB009061C4 -:102850009093EB0021E030E0A90102C0440F551F26 -:102860008A95E2F74093EA001092EA008091EB002B -:1028700088608093EB001092E9008091E800877FE8 -:1028800086C08111A7C01091D9011F778091E30004 -:102890008078812B8093E3008091E800877F80938C -:1028A000E8000E94CF118091E80080FFFCCF80916A -:1028B000E30080688093E300111102C082E001C050 -:1028C00083E08093D60186C08058823008F082C0B1 -:1028D0008091D9019091DA018C3D53E0950779F50B -:1028E00083E08A838AE289834FB7F894DE011396E6 -:1028F00020E03EE051E2E32FF0E050935700E491F6 -:1029000020FF03C0E295EF703F5FEF708E2F90E0E5 -:10291000EA3010F0C79601C0C0968D939D932F5F4B -:10292000243149F74FBF8091E800877F8093E8000A -:102930006AE270E0CE0101960E94D61014C0AE018A -:102940004F5F5F4F6091DB010E941D10BC0100973B -:1029500009F440C09091E800977F9093E800898146 -:102960009A810E9439118091E8008B778093E8006A -:1029700031C0803879F58091E800877F8093E80046 -:102980008091D2018093F1008091E8008E7780934E -:10299000E8000E94CF111EC081111CC09091D90186 -:1029A0009230C0F48091E800877F8093E800909394 -:1029B000D2010E94CF118091D201811106C0809175 -:1029C000E30087FD02C081E001C084E08093D6016E -:1029D0000E94110F8091E80083FF0AC08091E800F7 -:1029E000877F8093E8008091EB0080628093EB000A -:1029F000AA960FB6F894DEBF0FBECDBFDF91CF9180 -:102A00001F910895CF938091D6018823A1F0C091A2 -:102A1000E900CF709091EC00892F817090FD80E8E3 -:102A2000C82B1092E9008091E80083FD0E94B11349 -:102A3000CF70C093E900CF91089590936A0180937D -:102A400069010895E0916901F0916A01309721F0E0 -:102A50000190F081E02D099480E00895EF92FF92BB -:102A60000F931F93CF93DF93E0916901F0916A0177 -:102A70003097B1F18C010280F381E02D09958091AE -:102A8000C10182FF2DC080FF04C088E796E00E944C -:102A9000E507E80118E082E7E82E86E0F82E80914D -:102AA000C10180FF0BC088811F928F93FF92EF922C -:102AB0000E947E080F900F900F900F90115021965A -:102AC0001111EDCF8091C10180FF0AC080E796E02F -:102AD000DF91CF911F910F91FF90EF900C94E5073C -:102AE000DF91CF911F910F91FF90EF900895E091AA -:102AF0006901F0916A01309721F00480F581E02DA1 -:102B00000994089520916701309168018217930715 -:102B100071F09093680180936701E0916901F091F1 -:102B20006A01309721F00680F781E02D099408951D -:102B300020916501309166018217930771F090939F -:102B4000660180936501E0916901F0916A01309717 -:102B500021F00084F185E02D0994089508950C94E6 -:102B6000AE150E9486200E9487080C948021CF9386 -:102B7000DF931F92CDB7DEB79091C10192FF10C0D5 -:102B800090FF0EC01F928F932AE836E03F932F9359 -:102B900089830E947E080F900F900F900F9089817B -:102BA0000F90DF91CF910C94860D9F92AF92BF92C0 -:102BB000CF92DF92EF92FF920F931F93CF93DF9309 -:102BC00000D000D000D0CDB7DEB70E94AA0807E041 -:102BD00010E0AA24A394B12C902E802F0E947D098E -:102BE000980124593E4F6901F901F080F826A1F4BB -:102BF0000150110988F78FEF89838A831B820E9415 -:102C00008F208160782F9D838C8349815A816B81CD -:102C10008D810E946C162FC09091C10191FF04C05C -:102C20008E830E9486098E8127E030E0A501022E66 -:102C300001C0440F0A94EAF7E42E4F21C1F0298322 -:102C40009A828E2191E009F490E09B830E948F206C -:102C50008160782F9D838C8349815A816B818D811E -:102C60000E946C16F6018081E826E08204C02150A3 -:102C70003109E0F6BDCF0E94EA2410916B010E9459 -:102C800022151817B9F00E94221580936B01269621 -:102C90000FB6F894DEBF0FBECDBFDF91CF911F916D -:102CA0000F91FF90EF90DF90CF90BF90AF909F90EB -:102CB0000C94B71526960FB6F894DEBF0FBECDBFA5 -:102CC000DF91CF911F910F91FF90EF90DF90CF9008 -:102CD000BF90AF909F900895CF93DF93CDB7DEB7AD -:102CE0002B970FB6F894DEBF0FBECDBF4F8358872A -:102CF00069877A878B87DE01119686E0FD01119244 -:102D00008A95E9F785E0FE01379601900D928A9544 -:102D1000E1F749815A816B817C818D819E810E947E -:102D20006D1C2B960FB6F894DEBF0FBECDBFDF91A2 -:102D3000CF910895CF93882309F499C0C82F8CEFC1 -:102D40008C0F813A48F48C2F0E94562981118FC034 -:102D50008C2F0E94471F0CC080E28C0F883058F4E3 -:102D6000C77081E001C0880FCA95EAF70E94831FEF -:102D7000CF910C94CA1F8BE58C0F833078F4C53A41 -:102D800029F0C63A31F083E890E005C081E890E090 -:102D900002C082E890E0CF910C94821588E58C0FF8 -:102DA000833108F064C0C83A39F1C93A41F1CA3AEE -:102DB00049F1CB3A51F1CC3A59F1CD3A61F1C03BEE -:102DC00069F1CE3A71F1CF3A79F1C13B81F1C23B61 -:102DD00089F1C33B91F1C43B99F1C53BA1F1C63BDD -:102DE000A9F1C73BB1F1C83BB9F1C93BC1F1CA3B3D -:102DF000C9F180E090E038C082EE90E035C089EE05 -:102E000090E032C08AEE90E02FC085EB90E02CC0BD -:102E100086EB90E029C087EB90E026C08CEC90E038 -:102E200023C08DEC90E020C083E891E01DC08AE8CB -:102E300091E01AC082E991E017C084E991E014C0E2 -:102E400081E292E011C083E292E00EC084E292E05F -:102E50000BC085E292E008C086E292E005C087E2FE -:102E600092E002C08AE292E0CF910C949815CF9143 -:102E70000895882329F19CEF980F913A18F40E9445 -:102E8000641F0DC090E2980F983058F4877091E05D -:102E900001C0990F8A95EAF7892F0E94891F0C9427 -:102EA000CA1F9BE5980F933020F480E090E00C94CB -:102EB0008215885A833120F480E090E00C949815B4 -:102EC0000895882321F00E94831F0C94CA1F08953F -:102ED000882321F00E94891F0C94CA1F08957F92B5 -:102EE0008F929F92AF92BF92CF92DF92EF92FF921A -:102EF0000F931F93CF93DF931F92CDB7DEB77C0163 -:102F0000C62E772EFC01058102950F7012811111DA -:102F10000E94A01F0E94401F882379F0112369F0AE -:102F200080E28C0D883048F082E00E94291F0E94C8 -:102F3000401F91E0D82ED92601C0D12CE72DE29573 -:102F4000EF70F0E0E05AFF4F0C94ED2B872D807F5F -:102F5000072D0F70882311F00295007F112389F04F -:102F6000002309F498C180E28C0D883020F4802F72 -:102F70000E94831F03C0802F0E94931F0E94CA1FBC -:102F80008AC18C2D0E943917002309F49DC180E26B -:102F90008C0D883020F4802F0E94891F03C0802F61 -:102FA0000E94991F0E94CA1F8FC1872D807F972D75 -:102FB0009F70803211F4892F03C0892F8295807F02 -:102FC000CC2021F0F1E0CF16A1F01DC0112339F083 -:102FD000002319F1013009F50E94B31F75C10023C8 -:102FE00019F0013009F470C189830E94B61F8981EC -:102FF00010C1112321F0063008F066C10EC0053063 -:1030000008F062C106C1112359F0002331F0F70125 -:10301000958190FF40C19F7095830E94611754C1B4 -:10302000002309F4F6C03DC1872D869586958370EF -:1030300090E0009719F0019761F046C1112321F04B -:103040008C2D972D937002C080E090E00E94821535 -:103050003BC1112321F08C2D972D937002C080E08D -:1030600090E00E94981530C18C2D112319F00E9418 -:10307000702302C00E94D8230E945D2425C1872DA1 -:10308000837009F052C011111FC18C2D8295869555 -:103090008770880F880F9C2D9F70892E912CA12CF2 -:1030A000B12C082E04C0880C991CAA1CBB1C0A94C5 -:1030B000D2F7C4FE14C00FE010E020E030E0B90108 -:1030C000A80104C0440F551F661F771F8A95D2F7C9 -:1030D000CB01BA01609570958095909503C060E032 -:1030E00070E0CB01272D26952695237030E0223005 -:1030F000310569F02330310589F0682979298A2959 -:103100009B292130310571F00E94B51DDDC0682971 -:1031100079298A299B290E94D11DD6C00E94B51DFC -:10312000C501B4010E94991DCFC0112319F0872D4C -:10313000817001C08695882309F4C6C08C2D8295C4 -:1031400086958770880F880F9C2D9F70892E912CF3 -:10315000A12CB12C082E04C0880C991CAA1CBB1CE5 -:103160000A94D2F7C4FE14C00FE010E020E030E073 -:10317000B901A80104C0440F551F661F771F8A9527 -:10318000D2F7CB01BA01609570958095909503C0F8 -:1031900060E070E0CB01272D269526952370422F05 -:1031A00050E04230510569F04330510589F06829FB -:1031B00079298A299B294130510571F00E948F1E7F -:1031C00083C0682979298A299B290E94AB1E7CC06B -:1031D0000E948F1EC501B4010E94731E75C08C2D04 -:1031E00090E0FC01E05EF109E531F10508F04FC027 -:1031F000E059FF4F0C94ED2B0C2D0F70872D8F7124 -:10320000112321F00E940C1E802F07CF0E942D1E3B -:10321000802F0E94681758C0112341F0053008F034 -:1032200053C0872D8F710E94521E4EC0063008F089 -:103230004BC0F7CF112339F0872D8F710E940C1EE0 -:1032400043C01123C9F3872D8F710E942D1E3CC0EE -:10325000112329F0872D8F710E94F71D35C00E9420 -:10326000ED1D32C0112351F0172D1F71812F0E94C7 -:103270000C1E63E0812F0E94201F26C081E00E9467 -:10328000291F023008F182E00E94291F1DC011236E -:1032900031F0002389F28C2D0E949A1615C000236C -:1032A00091F28C2D0E9439170FC0472D4F706C2D55 -:1032B000C7010E94CC090E94111D06C0472D4F7006 -:1032C0006C2DC7010E948B0ADD20F9F00E941C1FA3 -:1032D00080FD1BC0F70112820E94161F0E940C1E67 -:1032E000C7010E9494190E94161F0F90DF91CF9181 -:1032F0001F910F91FF90EF90DF90CF90BF90AF9014 -:103300009F908F907F900C942D1E0F90DF91CF9106 -:103310001F910F91FF90EF90DF90CF90BF90AF90F3 -:103320009F908F907F9008950F931F93CF93DF937B -:10333000EC01888199812B813C81232BB9F09F3F3F -:1033400011F48F3F99F0CE010E94E309882371F0B8 -:10335000688179818A810E94121F8C010E94C71E98 -:103360000E948E1DB801CE010E946F17DF91CF9190 -:103370001F910F9108950E94A01F0E94B01F0E94EC -:10338000751F0E94CA1F0E9490250E945D2480E044 -:1033900090E00E94821580E090E00C9498150E94C5 -:1033A000901F0C94BB190E94071F292F22952F7084 -:1033B00030E02C3031054CF42A3031056CF42250C9 -:1033C000310922303105A8F407C02C30310569F0ED -:1033D0002F30310551F00DC0803F69F018F4803E68 -:1033E00040F409C0843F29F406C093FB882780F984 -:1033F000089580E0089581E00895CF93DF9300D091 -:1034000000D01F92CDB7DEB70F900F900F900F90A6 -:103410000F90DF91CF910895CF93DF9300D000D02C -:1034200000D0CDB7DEB726960FB6F894DEBF0FBE3C -:10343000CDBFDF91CF9108951F93CF93DF93C091BC -:10344000740116E080917501C81799F0D0E01C9FB7 -:10345000F0011D9FF00D1124EA58FE4F408151816B -:1034600062817381848195810E940C1A2196C770B4 -:10347000E9CFDF91CF911F9108954091A60150911E -:10348000A7016091A8017091A9018091AA01909172 -:10349000AB010C940C1A8091AB0182958F7009F0EE -:1034A00054C08091A801882309F44FC08091740111 -:1034B000A09175016091A6017091A7014091A901A9 -:1034C0005091AA01B6E08A1709F43FC090E0411577 -:1034D0005105C1F17F3F11F46F3FA1F1B89FF00199 -:1034E000B99FF00D1124EA58FE4F218172132AC0B2 -:1034F0002081621327C02281211124C023813481BD -:103500002417350710F421503109241B350B283CB2 -:103510003105C0F42091AB012F7020612093AB01E5 -:1035200026E0289FF001299FF00D1124E558FE4F59 -:1035300080818F708061808386EA91E00E94941977 -:103540000C941C1A01968770BECF0895CF92DF921B -:10355000EF92FF920F931F93CF93DF93CDB7DEB718 -:1035600062970FB6F894DEBF0FBECDBF8C0185E029 -:10357000F801DE011D9601900D928A95E1F7D801C0 -:103580004C9111965C91119712966C91129713962B -:10359000CD90DC9014973091A6017091A701809195 -:1035A000A9019091AA01009709F46BC17F3F19F41A -:1035B0003F3F09F466C1E090A801EE2009F4C0C0C5 -:1035C0002091AB01C816D90628F0F601E81BF90BCB -:1035D000CF0104C0809590958C0D9D1DFF24F39420 -:1035E000883C910578F0F12C207F09F0C6C07C2D35 -:1035F000D98AC88A89890E94FD1986EA91E00E94C9 -:103600009419B1C0822F807F09F046C0751314C091 -:10361000341312C0611110C02F7020612093AB01D0 -:103620000E943D1A86EA91E00E9494198091AB01B4 -:10363000D80115968C932EC0CD2819F15F3F11F457 -:103640004F3FF9F0F62E61111CC08091740120915A -:10365000750136E0821709F45AC090E0389FF001F6 -:10366000399FF00D1124EA58FE4F7181571306C09F -:103670007081471303C07281711103C00196877076 -:10368000E9CFF62E662309F418C18091AB01816061 -:103690008093AB01F12C11C1751308C0341306C01F -:1036A000611104C08091AB01D801C3C04D875E8712 -:1036B0008D859E856A8B0E94D3196A898823E1F1E2 -:1036C0006623D1F12091AB01822F82958F7090E01B -:1036D000029774F08091A6019091A70198878F833B -:1036E0001986DB86CA862C87CE0107960E9494191C -:1036F00086E0F801A6EAB1E001900D928A95E1F723 -:103700000E944B1A0E943D1AFF24F394D6C04D87A5 -:103710005E878D859E850E94071F292F22952F7019 -:1037200030E0223031050CF0BCC09F7009F0B6C00B -:10373000805E883008F4C1C0C8010E949419E4CFAB -:10374000C816D90608F453C0F601E81BF90BCF01DF -:10375000883C910508F450C0F12C7C2DD98AC88A88 -:1037600089890E94FD19E6EAF1E086E0DF011D92F9 -:103770008A95E9F70E943D1AA0C0751314C034134E -:1037800012C0611110C08091AB01F8018583C8019E -:103790000E94941986E0E6EAF1E0DF011D928A9525 -:1037A000E9F7FE2C8AC04D875E878D859E856A8BE2 -:1037B0000E94D3196A89882309F4BECF662309F4CD -:1037C000BBCF2091AB01822F82958F7090E0029742 -:1037D0000CF48ECF8091A6019091A7019A838983E2 -:1037E0001B82DD82CC822E83CE0101967FCF809515 -:1037F00090958C0D9D1DACCFF62E662309F49CCFC1 -:1038000075132EC034132CC02091AB0120FD1FC0B6 -:10381000822F82958F70D9F0D80115962C93159729 -:103820008F3049F08F5F982F9295907F822F8F7005 -:10383000892B15968C93C8010E94941986E0F80193 -:10384000A6EAB1E001900D928A95E1F793CF86E068 -:10385000F801A6EAB1E001900D928A95E1F72DC03A -:103860004D875E878D859E850E94D319811140CF3B -:103870008091AB0181608093AB01C8010E949419D3 -:103880001CC0662309F458CF4D875E878D859E85C1 -:103890000E94D319882309F44FCF2ACF811148CF32 -:1038A0000CC0243031050CF047CF9F7009F440CF95 -:1038B000F8019581907F09F03BCF8F2D62960FB66E -:1038C000F894DEBF0FBECDBFDF91CF911F910F9156 -:1038D000FF90EF90DF90CF9008951F93CF93DF93E9 -:1038E000CDB7DEB72C970FB6F894DEBF0FBECDBFB5 -:1038F0004F83588769877A878B879C87CE01079685 -:103900000E94A61A882369F08F8198852A853B85B5 -:10391000232BF1F19F3F09F063C08F3F09F060C096 -:1039200037C086E0FE013796DE01119601900D92B8 -:103930008A95E1F76F817885EA85FB85309741F1BB -:103940007F3F11F46F3F21F12091750130E0C901F3 -:103950000196877099274091740150E0841795076C -:1039600009F447C069837A83FD83EC8396E0929FD4 -:10397000D001939FB00D1124AA58BE4FFE0131967D -:1039800001900D929A95E1F7809375010E941C1A9F -:1039900016E080917401909175018917C1F1189F0B -:1039A000C00111248A589E4F0E94A61A882379F1DB -:1039B000E09174011E9FF0011124EA58FE4F4081EE -:1039C000518162817381848195810E940C1A80915A -:1039D000740190E001968770992780937401D9CF84 -:1039E0004F81588569857A858B859C850E940C1A44 -:1039F000CFCF0E94CF191092750110927401E6EAA0 -:103A0000F1E086E0DF011D928A95E9F7C1CF2C969F -:103A10000FB6F894DEBF0FBECDBFDF91CF911F91DF -:103A20000895EF92FF920F931F93CF93DF938C0132 -:103A3000009709F46CC0F12CEE24E394E801219680 -:103A4000F8018491843740F4843008F051C081300B -:103A500081F0823019F15BC0853709F444C0A8F1C8 -:103A60009CE7980F903708F052C08F770E94391763 -:103A700041C00E5F1F4FFE01C49180E28C0F883061 -:103A800048F4C7708E2D01C0880FCA95EAF70E94CE -:103A9000A31F14C08C2F0E949A162DC00E5F1F4FBB -:103AA000FE01C49180E28C0F883058F4C7708E2DCF -:103AB00001C0880FCA95EAF70E94A91F0E94CA1F79 -:103AC0001AC08C2F0E94391716C00E5F1F4FFE01BF -:103AD000C491CC2381F08FE99FE00197F1F700C0FA -:103AE0000000C150F6CF0E5F1F4FFE01F49003C0DF -:103AF0000E949A168E018F2D882309F49FCFEFE93B -:103B0000FFE03197F1F700C000008150F5CFDF9161 -:103B1000CF911F910F91FF90EF90089508956093BA -:103B2000B0017093B1018093B2019093B3010C94F2 -:103B3000BB190F931F930091B0011091B101209117 -:103B4000B2013091B301DC01CB01802B912BA22B70 -:103B5000B32B8093B0019093B101A093B201B093C5 -:103B6000B3011F910F910C94BB190F931F930091F8 -:103B7000B0011091B1012091B2013091B301DC018B -:103B8000CB0180239123A223B3238093B001909390 -:103B9000B101A093B201B093B3011F910F910C94A6 -:103BA000BB190F931F930091B0011091B1012091A7 -:103BB000B2013091B301DC01CB0180279127A2270C -:103BC000B3278093B0019093B101A093B201B09359 -:103BD000B3011F910F910C94BB191092AC0110927C -:103BE000AD011092AE011092AF010C94BB1941E0EF -:103BF00050E060E070E004C0440F551F661F771F5F -:103C00008A95D2F74093AC015093AD016093AE0119 -:103C10007093AF010C94BB1941E050E060E070E09C -:103C200004C0440F551F661F771F8A95D2F78091F5 -:103C3000AC019091AD01A091AE01B091AF01482BC4 -:103C4000592B6A2B7B2B4093AC015093AD016093B1 -:103C5000AE017093AF010C94BB1941E050E060E0FD -:103C600070E004C0440F551F661F771F8A95D2F776 -:103C700040955095609570958091AC019091AD0103 -:103C8000A091AE01B091AF01482359236A237B2351 -:103C90004093AC015093AD016093AE017093AF01BE -:103CA0000C94BB1941E050E060E070E004C0440FA8 -:103CB000551F661F771F8A95D2F78091AC019091AE -:103CC000AD01A091AE01B091AF01482759276A27F5 -:103CD0007B274093AC015093AD016093AE0170938C -:103CE000AF010C94BB190F931F930091AC0110917D -:103CF000AD012091AE013091AF01DC01CB01802BF1 -:103D0000912BA22BB32B8093AC019093AD01A09388 -:103D1000AE01B093AF011F910F910C94BB190F939B -:103D20001F930091AC011091AD012091AE01309133 -:103D3000AF01DC01CB0180239123A223B323809325 -:103D4000AC019093AD01A093AE01B093AF011F9170 -:103D50000F910C94BB190F931F930091AC0110911C -:103D6000AD012091AE013091AF01DC01CB01802784 -:103D70009127A227B3278093AC019093AD01A09324 -:103D8000AE01B093AF011F910F910C94BB19089530 -:103D9000CF92DF92EF92FF920F931F93CF93DF9317 -:103DA0008C01C090B001D090B101E090B201F090D0 -:103DB000B3018091AC019091AD01A091AE01B091A1 -:103DC000AF01C82AD92AEA2AFB2ACFE1D0E0D701DD -:103DD000C6010C2E04C0B695A795979587950A94B1 -:103DE000D2F780FF06C0B8018C2F0E94E80C019723 -:103DF00021F4219760F780E001C08C2FDF91CF91F3 -:103E00001F910F91FF90EF90DF90CF900895CF9387 -:103E1000DF93EC010E94C81EBE010E94E80CDF91F6 -:103E2000CF910895CB010E94071F08958091B4019E -:103E300085958595859508958091B401877008953D -:103E400098E0899F90011124262B2093B4010C94B3 -:103E50000C1E2091B401809582238093B401982F89 -:103E6000977069F430E0482F552747FD5095241787 -:103E7000350729F08595859585950C942D1E089517 -:103E80009091B401977081E009F480E00895209149 -:103E90000B0130910C01F90132969FEF40E05191F6 -:103EA000581789F09F3F19F4511101C0942F4F5FAB -:103EB0004630A9F79F3F39F0F901E90FF11D97FD51 -:103EC000FA9582830895089520910B0130910C0199 -:103ED000F9013296285F3F4F9081981301C01082FC -:103EE0003196E217F307C1F7089581E090E0E09181 -:103EF0000B01F0910C01E80FF91F10820196883038 -:103F00009105A9F708959091C001892B8093C00174 -:103F1000089580959091C00189238093C0010895F0 -:103F20001092C00108959091BF01892B8093BF0129 -:103F3000089580959091BF0189238093BF010895D2 -:103F40001092BF0108959091BE01892B8093BE010C -:103F5000089580959091BE0189238093BE010895B4 -:103F60001092BE0108958093B50108951092B50195 -:103F7000089580910B0190910C01FC0131969C01F8 -:103F8000285F3F4F80E0919191118F5FE217F30717 -:103F9000D1F70895E0910B01F0910C018091C001DF -:103FA0008083E0910B01F0910C0190818091BF0121 -:103FB000892B8083E0910B01F0910C01908180911D -:103FC000BE01892B80838091B501882361F0E09147 -:103FD0000B01F0910C019081892B80830E94B91F05 -:103FE00081111092B50180910B0190910C010C94FC -:103FF0002E159093330180933201089520E00097AD -:1040000039F0AC0141505109842395232F5FF7CF3C -:10401000822F08958295982F9C7C392F369536955E -:10402000282F237344E0249FC0011124932F982B41 -:10403000292F2A7A2695892F8575880F822B089536 -:104040008091D601843021F11092C20120E488E1F0 -:1040500090E00FB6F894A895809360000FBE20936F -:10406000600080E00E94860D83B7817F846083BFFB -:1040700083B7816083BF7894889583B78E7F83BF31 -:1040800088E10FB6F89480936000109260000FBE34 -:1040900008950E94CA090E94AA080E94CB090E94A2 -:1040A000B20991E0811101C090E0892F08950E942A -:1040B000CF190E9422150C94860D1F920F920FB6F5 -:1040C0000F9211248F939F93AF93BF938091C2015E -:1040D000811113C08091C3019091C401A091C501C9 -:1040E000B091C6014196A11DB11D8093C30190936B -:1040F000C401A093C501B093C601BF91AF919F9138 -:104100008F910F900FBE0F901F90189582E084BD85 -:1041100093E095BD9AEF97BD80936E0008952FB7F9 -:10412000F8948091C3019091C401A091C501B09110 -:10413000C6012FBF08952FB7F8946091C301709105 -:10414000C4018091C5019091C6012FBF0895CF92FF -:10415000DF92EF92FF920F931F932FB7F894409145 -:10416000C3015091C4016091C5017091C6012FBF78 -:104170006A017B01EE24FF248C0120E030E0C016B0 -:10418000D106E206F30610F4415051099A01281BAA -:10419000390BC9011F910F91FF90EF90DF90CF90E5 -:1041A0000895CF92DF92EF92FF920F931F932FB754 -:1041B000F894C090C301D090C401E090C501F09084 -:1041C000C6012FBF97018601061B170B280B390B61 -:1041D000C616D706E806F90618F0C901B80106C0E8 -:1041E000C901B80161507109810991091F910F91AD -:1041F000FF90EF90DF90CF9008951F920F920FB62F -:104200000F9211248F939F93AF93BF938091C3011B -:104210009091C401A091C501B091C6010196A11D64 -:10422000B11D8093C3019093C401A093C501B093C5 -:10423000C601BF91AF919F918F910F900FBE0F90CC -:104240001F9018950E942012F8942FEF87EA91E6AC -:10425000215080409040E1F700C0000087E090EBE3 -:10426000DC018093E0019093E101A093E201B0931F -:10427000E3019CE088E10FB6F894A8958093600074 -:104280000FBE90936000FFCFEF92FF920F931F93AA -:10429000CF93DF93D82FC7E08C2F0E947D0907E0D2 -:1042A00010E0E82EF12CC701002E02C095958795ED -:1042B0000A94E2F780FF09C0602F7C2F80E00E9403 -:1042C0008C0AD81302C081E006C00150110958F7CA -:1042D000C15010F780E0DF91CF911F910F91FF90B7 -:1042E000EF900895CF93C82F8CE20E944421882339 -:1042F00021F08C2FCF910C94442180E0CF91089530 -:10430000CF930E94C822811102C00E94AE228AEA85 -:1043100096E00E94E507C5E6C15049F00E94AA0850 -:104320008FE39CE90197F1F700C00000F5CF83EA25 -:1043300096E00E94E50789E20E94722181110CC17A -:104340008AE20E94722181110E94AE2285E00E94C1 -:10435000722181110E9422210E94D3228093C101E7 -:1043600087E00E9472218823A9F18BE10E947221CB -:10437000882351F08091C10181FB222720F991E02F -:10438000922790FB81F90EC08EE00E947221882353 -:1043900061F08091C10182FB222720F991E09227F0 -:1043A00090FB82F98093C10115C080E10E947221C7 -:1043B0009091C101882341F093FB222720F981E0ED -:1043C000822780FB93F904C0892F809580FB90F9A8 -:1043D0009093C1018091C1010E94D7220E94E522E1 -:1043E0008093DF0180EE0E947221882341F080914A -:1043F000DF01982F909590FB80F98093DF0189E38E -:104400000E947221882359F08091DF0181FB2227CD -:1044100020F991E0922790FB81F98093DF0182EEF1 -:104420000E947221882359F08091DF0182FB2227AC -:1044300020F991E0922790FB82F98093DF0186EECC -:104440000E947221882359F08091DF0183FB22278B -:1044500020F991E0922790FB83F98093DF0183EEAE -:104460000E947221882359F08091DF0184FB22276A -:1044700020F991E0922790FB84F98093DF0185E396 -:104480000E947221882359F08091DF0185FB222749 -:1044900020F991E0922790FB85F98093DF0181E379 -:1044A0000E947221882359F08091DF0186FB222728 -:1044B00020F991E0922790FB86F98093DF0181E15A -:1044C0000E947221882359F08091DF0187FB222707 -:1044D00020F991E0922790FB87F98093DF0180918A -:1044E000DF010E94E92287E20E947221C82F8EE13B -:1044F0000E9472218111C2608FE10E94722181119C -:10450000C46080E20E9472218111C86081E20E9431 -:1045100072218111C06182E20E9472218111C06208 -:1045200083E20E9472218111C06484E20E947221A0 -:10453000882311F0C06802C0CC2329F08C2F0E9480 -:10454000E0226C2F03C00E94DC22682F70E080E024 -:1045500090E0CF910C948F1DCF9108956DEE7EEF7A -:1045600080E090E00E94272C60E082E090E00E94D2 -:10457000152C60E083E090E00E94152C60E084E060 -:1045800090E00E94152C60E085E090E00C94152CE2 -:1045900080E090E00E940F2C21E08D3E9E4F09F0BC -:1045A00020E0822F089582E090E00C94072C682F81 -:1045B00082E090E00C94152C83E090E00C94072CA2 -:1045C000682F83E090E00C94152C84E090E00C942C -:1045D000072C682F84E090E00C94152C8091C90181 -:1045E00080FF0BC06091100185E0689FB00111242D -:1045F00075956795759567952BC081FF09C060918A -:10460000100185E0689FB00111247595679520C061 -:1046100082FF07C06091100185E0689FB0011124FE -:1046200017C09091CA019923D1F060910F0196179C -:1046300088F72091100185E0289F90011124929F16 -:10464000A001939F500D112470E0CA010E94D92B44 -:104650006038710540F46115710539F002C065E0FC -:1046600070E0862F08958FE7089581E00895809186 -:10467000C90180FF08C060910E0170E075956795D3 -:104680007595679521C081FF06C060910E0170E0AD -:104690007595679519C082FF04C060910E0170E0A6 -:1046A00010C09091CA019923C1F060910D01961735 -:1046B000A0F780910E01899FC001112470E00E9433 -:1046C000D92B6038710528F46115710521F0862F0A -:1046D00008958FE7089581E0089561E070E0F4CFD8 -:1046E000803F21F40E94EE22819504C0813F29F48D -:1046F0000E94EE228093CD010895823F21F40E9412 -:10470000EE22819504C0833F29F40E94EE2280931B -:10471000CC010895893F19F40E94372305C08A3FD0 -:1047200031F40E94372381958093CE0108958B3F09 -:1047300021F40E943723819504C08C3F29F40E9404 -:1047400037238093CF010895843F21F48091CB01DA -:10475000816017C0853F21F48091CB01826011C038 -:10476000863F21F48091CB0184600BC0873F21F408 -:104770008091CB01886005C0883F31F48091CB01E6 -:1047800080618093CB0108958D3F21F48091C90110 -:1047900081600BC08E3F21F48091C901826005C009 -:1047A0008F3F29F48091C90184608093C9010895E5 -:1047B000803F39F48091CD0187FF6CC01092CD010C -:1047C00069C0813F29F48091CD011816BCF362C005 -:1047D0009091CC01823F29F497FF5CC01092CC01EC -:1047E00059C0833F19F41916CCF354C0893F41F4E2 -:1047F0008091CE0118160CF04DC01092CE014AC027 -:104800008A3F29F48091CE0187FF44C0F6CF8B3FC9 -:1048100039F48091CF0187FF3DC01092CF013AC09B -:104820008C3F29F48091CF011816BCF333C0843F2C -:1048300021F48091CB018E7F17C0853F21F48091B8 -:10484000CB018D7F11C0863F21F48091CB018B7FFE -:104850000BC0873F21F48091CB01877F05C0883F43 -:1048600031F48091CB018F7E8093CB0113C08D3FBB -:1048700021F48091C9018E7F0BC08E3F21F480917D -:10488000C9018D7F05C08F3F29F48091C9018B7FBD -:104890008093C9018091CC0181110EC08091CD011E -:1048A00081110AC08091CE01811106C08091CF0193 -:1048B000811102C01092CA0108958091C10183FF45 -:1048C0007EC086EE96E00E94E5078091CB011F92A4 -:1048D0008F9381EE96E09F938F930E947E088FEDD9 -:1048E00096E00E94E5078091CC01282F332727FD11 -:1048F00030953F938F938CED96E09F938F930E941A -:104900007E088AED96E00E94E5078091CD01282F70 -:10491000332727FD30953F938F9387ED96E09F9344 -:104920008F930E947E0885ED96E00E94E5078091B6 -:10493000CE01282F332727FD30953F938F9382EDAB -:1049400096E09F938F930E947E0880ED96E00E94F0 -:10495000E5078091CF01282F332727FD30953F931E -:104960008F938DEC96E09F938F930E947E088AEC44 -:1049700096E00E94E5078091CA011F928F9387EC11 -:1049800096E09F938F930E947E0885EC96E00E94AC -:10499000E5078091C9011F928F9382EC96E09F9367 -:1049A0008F930E947E088FEB96E00E94E5078DB7FB -:1049B0009EB74C960FB6F8949EBF0FBE8DBF8BEC82 -:1049C00091E00E9477150E948F209093C8018093F8 -:1049D000C70108951F93CF93DF938091C7019091F2 -:1049E000C8010E94A720AC019091CA01992321F02F -:1049F0002091110130E006C0209112018AE0289F29 -:104A0000900111244217530708F486C08091CC010D -:104A1000C091CD01D091CE011091CF01811107C07D -:104A2000C11176C0D11174C0111172C075C09F3F01 -:104A300019F09F5F9093CA01181624F40E94EE2289 -:104A40008093CC018091CC0187FF05C00E94EE22AB -:104A500081958093CC011C1624F40E94EE22809351 -:104A6000CD018091CD0187FF05C00E94EE22819586 -:104A70008093CD016091CC01662339F1C091CD01C5 -:104A8000CC2319F1772767FD7095872F972F0E9408 -:104A9000DE2A23E333E343E35FE30E94422B0E94D9 -:104AA000AB2A6093CC016C2F772767FD7095872F19 -:104AB000972F0E94DE2A23E333E343E35FE30E9460 -:104AC000422B0E94AB2A6093CD011D1624F40E9454 -:104AD00037238093CE018091CE0187FF05C00E94CD -:104AE000372381958093CE01111624F40E94372339 -:104AF0008093CF018091CF0187FF05C00E943723AB -:104B000081958093CF01DF91CF911F910C945D240B -:104B10009F3F09F08ECF96CFDF91CF911F910895DF -:104B2000EBECF1E085E0DF011D928A95E9F7109248 -:104B3000CA011092C901089589E099E00E94E50731 -:104B40001F9281E08F931F9285E08F938BEB98E00B -:104B50009F938F930E947E080F900F900F900F905D -:104B60000F900F9008958330E9F128F4813061F0BF -:104B7000823009F10895853009F462C008F449C013 -:104B8000863009F474C0089580911201262F30E018 -:104B9000280F311D2F3F310524F4680F6093120157 -:104BA00003C08FEF80931201809112011F928F93A7 -:104BB00084EF97E072C080911101262F30E0280F1A -:104BC000311D2F3F310524F4680F6093110103C09C -:104BD0008FEF80931101809111011F928F9382EECC -:104BE00097E05BC080911001262F30E0280F311D27 -:104BF0002F3F310524F4680F6093100103C08FEF3D -:104C000080931001809110011F928F938FEC97E099 -:104C100044C080910F01262F30E0280F311D2F3F17 -:104C2000310524F4680F60930F0103C08FEF809368 -:104C30000F0180910F011F928F938AEB97E02DC097 -:104C400080910E01262F30E0280F311D2F3F3105B6 -:104C500024F4680F60930E0103C08FEF80930E0160 -:104C600080910E011F928F9381EA97E016C0809188 -:104C70000D01262F30E0280F311D2F3F310524F480 -:104C8000680F60930D0103C08FEF80930D01809139 -:104C90000D011F928F9386E897E09F938F930E9458 -:104CA0007E080F900F900F900F900895833081F140 -:104CB00028F4813059F08230D1F00895853009F41C -:104CC00049C0B8F1863009F456C0089580911201A8 -:104CD000681720F4861B8093120102C01092120103 -:104CE000809112011F928F9387E797E054C08091C3 -:104CF0001101681720F4861B8093110102C01092E5 -:104D00001101809111011F928F9385E697E043C0B6 -:104D100080911001681720F4861B8093100102C057 -:104D200010921001809110011F928F9382E597E0FD -:104D300032C080910F01681720F4861B80930F0109 -:104D400002C010920F0180910F011F928F938DE38B -:104D500097E021C080910E01681720F4861B809394 -:104D60000E0102C010920E0180910E011F928F93CE -:104D700084E297E010C080910D01681720F4861B33 -:104D800080930D0102C010920D0180910D011F92C0 -:104D90008F9389E097E09F938F930E947E080F90F6 -:104DA0000F900F900F900895CF93C82F1F928F935D -:104DB0008EE09AE09F938F930E947E0881E090E0BE -:104DC000A0E0B0E0BC01CD0104C0660F771F881FD2 -:104DD000991FCA95D2F70E948F1D0F900F900F90C8 -:104DE0000F90CF910C94CF19CF938732B0F58E31BD -:104DF00008F04AC28E3009F4C4C100F5873009F4C6 -:104E00008DC1A8F4863009F045C28091C101817F2F -:104E10008E7F8093C1018DE79BE00E94E50786E1CC -:104E20009FE00E94E50781E08093D10175C1883041 -:104E300009F43FC08B3009F46BC12CC2863109F4F0 -:104E4000E6C120F4803109F4B0C124C2893109F4EB -:104E5000C7C18B3109F481C11DC2883309F458C11F -:104E600050F4893209F412C2853309F40FC2873233 -:104E700009F40CC20FC2833409F408C228F48A333F -:104E800008F408C2895303C2883409F003C20E949F -:104E9000CF198AEF9EE00E94E5079FEF23ED80E3A4 -:104EA000915020408040E1F700C000000E94222184 -:104EB00033C18AE19FE00E94E5078CE79EE00E94F3 -:104EC000E5070E94DC221F928F9389E79EE09F9363 -:104ED0008F930E947E0887E79EE00E94E5070E946C -:104EE000D322C82F84E69EE00E94E5071F92CF934D -:104EF0008FE59EE09F938F930E947E088DE59EE054 -:104F00000E94E50783E59EE00E94E5078C2F8170F3 -:104F10001F928F9380E59EE09F938F930E947E085F -:104F20008EE49EE00E94E50784E49EE00E94E5078F -:104F3000C1FB882780F91F928F9381E49EE09F93A5 -:104F40008F930E947E088FE39EE00E94E50783E333 -:104F50009EE00E94E507C2FB882780F91F928F938D -:104F600080E39EE09F938F930E947E088EE29EE0F6 -:104F70000E94E50785E29EE00E94E507C3FBCC277F -:104F8000C0F91F92CF9382E29EE09F938F930E947D -:104F90007E0880E29EE00E94E5070E94E522C82F7D -:104FA0008CE09EE00E94E5071F92CF9387E09EE091 -:104FB0009F938F930E947E0885E09EE00E94E50704 -:104FC0008CEE9DE00E94E5078C2F81701F928F93DD -:104FD00089EE9DE09F938F930E947E088DB79EB7C8 -:104FE00080960FB6F8949EBF0FBE8DBF87EE9DE0F2 -:104FF0000E94E50780ED9DE00E94E507C1FB882740 -:1050000080F91F928F938DEC9DE09F938F930E9468 -:105010007E088BEC9DE00E94E50789EB9DE00E94F5 -:10502000E507C2FB882780F91F928F9386EB9DE0EE -:105030009F938F930E947E0884EB9DE00E94E5077A -:1050400082EA9DE00E94E507C3FB882780F91F9252 -:105050008F938FE99DE09F938F930E947E088DE947 -:105060009DE00E94E50783E99DE00E94E507C4FBFF -:10507000882780F91F928F9380E99DE09F938F93FB -:105080000E947E088EE89DE00E94E5078CE79DE087 -:105090000E94E507C5FB882780F91F928F9389E757 -:1050A0009DE09F938F930E947E0887E79DE00E947A -:1050B000E5078BE59DE00E94E507C6FB882780F9A0 -:1050C0001F928F9388E59DE09F938F930E947E08A7 -:1050D00086E59DE00E94E5078EE49DE00E94E507DD -:1050E000C7FBCC27C0F91F92CF938BE49DE09F9321 -:1050F0008F930E947E0889E49DE00E94E5078DB7AA -:105100009EB74C960FB6F8949EBF0FBE8DBF04C0DD -:1051100084EA9BE00E94E507C1E0C1C08091C10123 -:10512000C82FC095C170C0FB80F98093C101CC230A -:1051300049F08EEE9EE00E94E5078091C1018660F5 -:10514000886048C081EE9EE00E94E5078091C10121 -:10515000897F877F8093C101DFCF9091C10191FB4F -:10516000CC27C0F981E0C827892FC0FB81F9809343 -:10517000C101CC2319F084ED9EE027C086EC9EE0AF -:10518000C9CF9091C10192FBCC27C0F981E0C8271B -:10519000892FC0FB82F98093C101CC2319F087EBE2 -:1051A0009EE013C087EA9EE0B5CF9091C10193FBCA -:1051B000CC27C0F981E0C827892FC0FB83F98093F1 -:1051C000C101CC2351F08BE99EE00E94E50780915C -:1051D000C10181608093C10162C08EE89EE09ACFD8 -:1051E0008EE69BE00E94E50786E49BE00E94E507CF -:1051F00080E19BE00E94E50783EE9AE00E94E507CC -:1052000084EA9AE00E94E50789E79AE083CF8BE67B -:105210009AE00E94E5070E9422151F928F9381E574 -:105220009AE09F938F930E947E0880910A011F92BB -:105230008F938AE39AE09F938F930E947E088091D8 -:1052400064011F928F9387E29AE09F938F930E944D -:105250007E088091C3019091C401A091C501B091D5 -:10526000C601BF93AF939F938F9383E19AE09F937F -:105270008F930E947E088DB79EB742960FB6F89422 -:105280009EBF0FBE8DBF48CF8D5101C080E00E94F0 -:10529000D42642CF8CE89EE00E94E507C0E08C2F28 -:1052A000CF91089580E0089580E00895CF93C82FAE -:1052B0008091D101813071F020F0823009F44BC02F -:1052C00042C1E0910B01F0910C018081823209F022 -:1052D0003CC107C0E0910B01F0910C01808182324A -:1052E00061F48C2F0E945229811104C08C2F0E94DE -:1052F000F4262FC081E090E02CC08C2F0E9454290E -:10530000811126C0C431E1F070F4CB3081F0C0319E -:10531000D1F40E949C2586E09AE00E94E50782E095 -:105320008093D10115C0C93259F0C83361F48DE7BB -:105330009BE00E94E5078AE09AE00E94E50708C02A -:105340001092D10104C184E09AE00E94E507FFC0F9 -:1053500081E08170FEC0C43228F5CE3108F0C1C0B2 -:10536000CB30A1F1D0F4C73009F0D3C08EE18093E7 -:10537000120182E3809311018AE08093100184E19D -:1053800080930F0188E080930E0188E280930D01E5 -:105390008AEA98E00E94E507BFC0C33149F1C431F1 -:1053A000C1F0B7C0CB3409F4A9C028F4C93289F0E0 -:1053B000C83361F0AEC0C13509F49EC0C23509F4EE -:1053C00099C0CE3409F0A5C06AE09EC00E949C2519 -:1053D000A3C08091D001882319F01092D0019CC005 -:1053E00087EB98E00E94E50781E08093D101B1C08E -:1053F00081E998E00E94E5078FE798E00E94E507C1 -:10540000809112011F928F938CE798E09F938F9366 -:105410000E947E088AE798E00E94E50788E698E007 -:105420000E94E507809111011F928F9385E698E015 -:105430009F938F930E947E0883E698E00E94E50781 -:1054400084E598E00E94E507809110011F928F93F8 -:1054500081E598E09F938F930E947E088FE498E007 -:105460000E94E5078EE398E00E94E50780910F0116 -:105470001F928F938BE398E09F938F930E947E08F7 -:1054800089E398E00E94E50784E298E00E94E5073E -:1054900080910E011F928F9381E298E09F938F93EA -:1054A0000E947E088FE198E00E94E50788E098E07E -:1054B0000E94E50780910D011F928F9385E098E08F -:1054C0009F938F930E947E0883E098E00E94E507F7 -:1054D0008DB79EB748960FB6F8949EBF0FBE8DBF8E -:1054E0001BC0CE51EC2FF0E0E95DFE4F8081809330 -:1054F000D00112C061E003C061E006C06AE08091A3 -:10550000D0010E94B32508C08091D0010E94562688 -:1055100003C088EA98E013C08091D001882369F025 -:105520001F928F9382EA98E09F938F930E947E0848 -:105530000F900F900F900F9004C08FE998E00E9499 -:10554000E50781E006C01092D10180E002C080E052 -:1055500000CFCF91089504D06894B1118DC0089503 -:1055600070D088F09F5790F0B92F9927B751A0F0CD -:10557000D1F0660F771F881F991F1AF0BA95C9F7E7 -:1055800012C0B13081F077D0B1E0089574C0672FB8 -:10559000782F8827B85F39F0B93FCCF38695779597 -:1055A0006795B395D9F73EF4909580957095619580 -:1055B0007F4F8F4F9F4F0895E89409C097FB3EF4AB -:1055C00090958095709561957F4F8F4F9F4F992350 -:1055D000A9F0F92F96E9BB279395F69587957795CE -:1055E0006795B795F111F8CFFAF4BB0F11F460FF8E -:1055F0001BC06F5F7F4F8F4F9F4F16C0882311F0E6 -:1056000096E911C0772321F09EE8872F762F05C0F9 -:10561000662371F096E8862F70E060E02AF09A9594 -:10562000660F771F881FDAF7880F9695879597F989 -:10563000089557FD9058440F551F59F05F3F71F082 -:105640004795880F97FB991F61F09F3F79F08795E9 -:105650000895121613061406551FF2CF4695F1DF72 -:1056600008C0161617061806991FF1CF8695710502 -:10567000610508940895E894BB2766277727CB0136 -:1056800097F908950BD078C069D028F06ED018F043 -:10569000952309F05AC05FC01124EECFCADFA0F3F2 -:1056A000959FD1F3950F50E0551F629FF001729FB7 -:1056B000BB27F00DB11D639FAA27F00DB11DAA1FD6 -:1056C000649F6627B00DA11D661F829F2227B00D23 -:1056D000A11D621F739FB00DA11D621F839FA00DAE -:1056E000611D221F749F3327A00D611D231F849FFE -:1056F000600D211D822F762F6A2F11249F57504055 -:105700008AF0E1F088234AF0EE0FFF1FBB1F661FEF -:10571000771F881F91505040A9F79E3F510570F0A8 -:1057200014C0AACF5F3FECF3983EDCF386957795E3 -:105730006795B795F795E7959F5FC1F7FE2B880FA3 -:10574000911D9695879597F9089597F99F6780E839 -:1057500070E060E008959FEF80EC089500240A94C3 -:105760001616170618060906089500240A9412163C -:105770001306140605060895092E0394000C11F46F -:10578000882352F0BB0F40F4BF2B11F460FF04C01C -:105790006F5F7F4F8F4F9F4F0895991B79E004C033 -:1057A000991F961708F0961B881F7A95C9F7809560 -:1057B000089597FB072E16F4009407D077FD09D0C3 -:1057C0000E94F32B07FC05D03EF4909581959F4FE6 -:1057D0000895709561957F4F0895EE0FFF1F059016 -:1057E000F491E02D0994AA1BBB1B51E107C0AA1F2D -:1057F000BB1FA617B70710F0A61BB70B881F991F72 -:105800005A95A9F780959095BC01CD010895F99915 -:10581000FECF92BD81BDF89A992780B50895A8E181 -:10582000B0E042E050E00C942F2C262FF999FECFE7 -:1058300092BD81BDF89A019700B4021639F01FBAE3 -:1058400020BD0FB6F894FA9AF99A0FBE0895019602 -:10585000272F0E94162C0C94152CDC01CB01FC0187 -:10586000F999FECF06C0F2BDE1BDF89A319600B4B9 -:0E5870000D9241505040B8F70895F894FFCFC4 -:10587E00880D790E560E220EEE0D01B60128081473 -:10588E000A321E3F4D36203106E405AE058E051A4E -:10589E000533054C056505010203040506070809D5 -:0258AE000000F8 -:00000001FF diff --git a/keyboards/hhkb/readme.md b/keyboards/hhkb/readme.md new file mode 100644 index 000000000..39d49b32a --- /dev/null +++ b/keyboards/hhkb/readme.md @@ -0,0 +1,180 @@ +hhkb_qmk keyboard firmware +====================== + +## Quantum MK Firmware + +You have access to a bunch of goodies! Check out the Makefile to enable/disable some of the features. Uncomment the `#` to enable them. Setting them to `no` does nothing and will only confuse future you. + + BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality + MIDI_ENABLE = yes # MIDI controls + # UNICODE_ENABLE = yes # Unicode support - this is commented out, just as an example. You have to use #, not // + BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID + +## Quick aliases to common actions + +Your keymap can include shortcuts to common operations (called "function actions" in tmk). + +### Switching and toggling layers + +`MO(layer)` - momentary switch to *layer*. As soon as you let go of the key, the layer is deactivated and you pop back out to the previous layer. When you apply this to a key, that same key must be set as `KC_TRNS` on the destination layer. Otherwise, you won't make it back to the original layer when you release the key (and you'll get a keycode sent). You can only switch to layers *above* your current layer. If you're on layer 0 and you use `MO(1)`, that will switch to layer 1 just fine. But if you include `MO(3)` on layer 5, that won't do anything for you -- because layer 3 is lower than layer 5 on the stack. + +`LT(layer, kc)` - momentary switch to *layer* when held, and *kc* when tapped. Like `MO()`, this only works upwards in the layer stack (`layer` must be higher than the current layer). + +`TG(layer)` - toggles a layer on or off. As with `MO()`, you should set this key as `KC_TRNS` in the destination layer so that tapping it again actually toggles back to the original layer. Only works upwards in the layer stack. + +### Fun with modifier keys + +* `LSFT(kc)` - applies left Shift to *kc* (keycode) - `S(kc)` is an alias +* `RSFT(kc)` - applies right Shift to *kc* +* `LCTL(kc)` - applies left Control to *kc* +* `RCTL(kc)` - applies right Control to *kc* +* `LALT(kc)` - applies left Alt to *kc* +* `RALT(kc)` - applies right Alt to *kc* +* `LGUI(kc)` - applies left GUI (command/win) to *kc* +* `RGUI(kc)` - applies right GUI (command/win) to *kc* + +You can also chain these, like this: + + LALT(LCTL(KC_DEL)) -- this makes a key that sends Alt, Control, and Delete in a single keypress. + +The following shortcuts automatically add `LSFT()` to keycodes to get commonly used symbols. Their long names are also available and documented in `/quantum/keymap_common.h`. + + KC_TILD ~ + KC_EXLM ! + KC_AT @ + KC_HASH # + KC_DLR $ + KC_PERC % + KC_CIRC ^ + KC_AMPR & + KC_ASTR * + KC_LPRN ( + KC_RPRN ) + KC_UNDS _ + KC_PLUS + + KC_LCBR { + KC_RCBR } + KC_PIPE | + KC_COLN : + +`MT(mod, kc)` - is *mod* (modifier key - MOD_LCTL, MOD_LSFT) when held, and *kc* when tapped. In other words, you can have a key that sends Esc (or the letter O or whatever) when you tap it, but works as a Control key or a Shift key when you hold it down. + +These are the values you can use for the `mod` in `MT()` (right-hand modifiers are not available): + + * MOD_LCTL + * MOD_LSFT + * MOD_LALT + * MOD_LGUI + +These can also be combined like `MOD_LCTL | MOD_LSFT` e.g. `MT(MOD_LCTL | MOD_LSFT, KC_ESC)` which would activate Control and Shift when held, and send Escape when tapped. + +We've added shortcuts to make common modifier/tap (mod-tap) mappings more compact: + + * `CTL_T(kc)` - is LCTL when held and *kc* when tapped + * `SFT_T(kc)` - is LSFT when held and *kc* when tapped + * `ALT_T(kc)` - is LALT when held and *kc* when tapped + * `GUI_T(kc)` - is LGUI when held and *kc* when tapped + * `ALL_T(kc)` - is Hyper (all mods) when held and *kc* when tapped. To read more about what you can do with a Hyper key, see [this blog post by Brett Terpstra](http://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/) + +### Temporarily setting the default layer + +`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. + +### 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). + +Instead of using `FNx` when defining `ACTION_*` functions, you can use `F(x)` - the benefit here is being able to use more than 32 function actions (up to 4096), if you happen to need them. + +## Macro shortcuts: Send a whole string when pressing just one key + +Instead of using the `ACTION_MACRO` function, you can simply use `M(n)` to access macro *n* - *n* will get passed into the `action_get_macro` as the `id`, and you can use a switch statement to trigger it. This gets called on the keydown and keyup, so you'll need to use an if statement testing `record->event.pressed` (see keymap_default.c). + +```c +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) // this is the function signature -- just copy/paste it into your keymap file as it is. +{ + switch(id) { + case 0: // this would trigger when you hit a key mapped as M(0) + if (record->event.pressed) { + return MACRO( I(255), T(H), T(E), T(L), T(L), W(255), T(O), END ); // this sends the string 'hello' when the macro executes + } + break; + } + return MACRO_NONE; +}; +``` +A macro can include the following commands: + +* I() change interval of stroke in milliseconds. +* D() press key. +* U() release key. +* T() type key(press and release). +* W() wait (milliseconds). +* END end mark. + +So above you can see the stroke interval changed to 255ms between each keystroke, then a bunch of keys being typed, waits a while, then the macro ends. + +Note: Using macros to have your keyboard send passwords for you is a bad idea. + +### Additional keycode aliases for software-implemented layouts (Colemak, Dvorak, etc) + +Everything is assuming you're in Qwerty (in software) by default, but there is built-in support for using a Colemak or Dvorak layout by including this at the top of your keymap: + + #include "keymap_.h" + +Where is "colemak" or "dvorak". After including this line, you will get access to: + + * `CM_*` for all of the Colemak-equivalent characters + * `DV_*` for all of the Dvorak-equivalent characters + +These implementations assume you're using Colemak or Dvorak on your OS, not on your keyboard - this is referred to as a software-implemented layout. If your computer is in Qwerty and your keymap is in Colemak or Dvorak, this is referred to as a firmware-implemented layout, and you won't need these features. + +To give an example, if you're using software-implemented Colemak, and want to get an `F`, you would use `CM_F` - `KC_F` under these same circumstances would result in `T`. + +## Additional language support + +In `quantum/keymap_extras/`, you'll see various language files - these work the same way as the alternative layout ones do. Most are defined by their two letter country/language code followed by an underscore and a 4-letter abbreviation of its name. `FR_UGRV` which will result in a `ù` when using a software-implemented AZERTY layout. It's currently difficult to send such characters in just the firmware (but it's being worked on - see Unicode support). + +## Unicode support + +You can currently send 4 hex digits with your OS-specific modifier key (RALT for OSX with the "Unicode Hex Input" layout) - this is currently limited to supporting one OS at a time, and requires a recompile for switching. 8 digit hex codes are being worked on. The keycode function is `UC(n)`, where *n* is a 4 digit hexidecimal. Enable from the Makefile. + +## Other firmware shortcut keycodes + +* `RESET` - puts the MCU in DFU mode for flashing new firmware (with `make dfu`) +* `DEBUG` - the firmware into debug mode - you'll need hid_listen to see things +* `BL_ON` - turns the backlight on +* `BL_OFF` - turns the backlight off +* `BL_` - sets the backlight to level *n* +* `BL_INC` - increments the backlight level by one +* `BL_DEC` - decrements the backlight level by one +* `BL_TOGG` - toggles the backlight +* `BL_STEP` - steps through the backlight levels + +Enable the backlight from the Makefile. + +## MIDI functionalty + +This is still a WIP, but check out `quantum/keymap_midi.c` to see what's happening. Enable from the Makefile. + +## Bluetooth functionality + +This requires [some hardware changes](https://www.reddit.com/r/MechanicalKeyboards/comments/3psx0q/the_planck_keyboard_with_bluetooth_guide_and/?ref=search_posts), but can be enabled via the Makefile. The firmware will still output characters via USB, so be aware of this when charging via a computer. It would make sense to have a switch on the Bluefruit to turn it off at will. + +## Building + +Download or clone the whole firmware and navigate to the keyboards/planck 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 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 a file in the keymaps folder named `.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|] +``` +Keymaps follow the format **__\.c__** and are stored in the `keymaps` folder. -- cgit v1.2.3-24-g4f1b From 65faab3b89245f81c50b029ca178aed175d5f330 Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Wed, 29 Jun 2016 17:49:41 -0400 Subject: Moves features to their own files (process_*), adds tap dance feature (#460) * non-working commit * working * subprojects implemented for planck * pass a subproject variable through to c * consolidates clueboard revisions * thanks for letting me know about conflicts.. * turn off audio for yang's * corrects starting paths for subprojects * messing around with travis * semicolon * travis script * travis script * script for travis * correct directory (probably), amend files to commit * remove origin before adding * git pull, correct syntax * git checkout * git pull origin branch * where are we? * where are we? * merging * force things to happen * adds commit message, adds add * rebase, no commit message * rebase branch * idk! * try just pull * fetch - merge * specify repo branch * checkout * goddammit * merge? idk * pls * after all * don't split up keyboards * syntax * adds quick for all-keyboards * trying out new script * script update * lowercase * all keyboards * stop replacing compiled.hex automatically * adds if statement * skip automated build branches * forces push to automated build branch * throw an add in there * upstream? * adds AUTOGEN * ignore all .hex files again * testing out new repo * global ident * generate script, keyboard_keymap.hex * skip generation for now, print pandoc info, submodule update * try trusty * and sudo * try generate * updates subprojects to keyboards * no idea * updates to keyboards * cleans up clueboard stuff * setup to use local readme * updates cluepad, planck experimental * remove extra led.c [ci skip] * audio and midi moved over to separate files * chording, leader, unicode separated * consolidate each [skip ci] * correct include * quantum: Add a tap dance feature (#451) * quantum: Add a tap dance feature With this feature one can specify keys that behave differently, based on the amount of times they have been tapped, and when interrupted, they get handled before the interrupter. To make it clear how this is different from `ACTION_FUNCTION_TAP`, lets explore a certain setup! We want one key to send `Space` on single tap, but `Enter` on double-tap. With `ACTION_FUNCTION_TAP`, it is quite a rain-dance to set this up, and has the problem that when the sequence is interrupted, the interrupting key will be send first. Thus, `SPC a` will result in `a SPC` being sent, if they are typed within `TAPPING_TERM`. With the tap dance feature, that'll come out as `SPC a`, correctly. The implementation hooks into two parts of the system, to achieve this: into `process_record_quantum()`, and the matrix scan. We need the latter to be able to time out a tap sequence even when a key is not being pressed, so `SPC` alone will time out and register after `TAPPING_TERM` time. But lets start with how to use it, first! First, you will need `TAP_DANCE_ENABLE=yes` in your `Makefile`, because the feature is disabled by default. This adds a little less than 1k to the firmware size. Next, you will want to define some tap-dance keys, which is easiest to do with the `TD()` macro, that - similar to `F()`, takes a number, which will later be used as an index into the `tap_dance_actions` array. This array specifies what actions shall be taken when a tap-dance key is in action. Currently, there are two possible options: * `ACTION_TAP_DANCE_DOUBLE(kc1, kc2)`: Sends the `kc1` keycode when tapped once, `kc2` otherwise. * `ACTION_TAP_DANCE_FN(fn)`: Calls the specified function - defined in the user keymap - with the current state of the tap-dance action. The first option is enough for a lot of cases, that just want dual roles. For example, `ACTION_TAP_DANCE(KC_SPC, KC_ENT)` will result in `Space` being sent on single-tap, `Enter` otherwise. And that's the bulk of it! Do note, however, that this implementation does have some consequences: keys do not register until either they reach the tapping ceiling, or they time out. This means that if you hold the key, nothing happens, no repeat, no nothing. It is possible to detect held state, and register an action then too, but that's not implemented yet. Keys also unregister immediately after being registered, so you can't even hold the second tap. This is intentional, to be consistent. And now, on to the explanation of how it works! The main entry point is `process_tap_dance()`, called from `process_record_quantum()`, which is run for every keypress, and our handler gets to run early. This function checks whether the key pressed is a tap-dance key. If it is not, and a tap-dance was in action, we handle that first, and enqueue the newly pressed key. If it is a tap-dance key, then we check if it is the same as the already active one (if there's one active, that is). If it is not, we fire off the old one first, then register the new one. If it was the same, we increment the counter and the timer. This means that you have `TAPPING_TERM` time to tap the key again, you do not have to input all the taps within that timeframe. This allows for longer tap counts, with minimal impact on responsiveness. Our next stop is `matrix_scan_tap_dance()`. This handles the timeout of tap-dance keys. For the sake of flexibility, tap-dance actions can be either a pair of keycodes, or a user function. The latter allows one to handle higher tap counts, or do extra things, like blink the LEDs, fiddle with the backlighting, and so on. This is accomplished by using an union, and some clever macros. In the end, lets see a full example! ```c enum { CT_SE = 0, CT_CLN, CT_EGG }; /* Have the above three on the keymap, TD(CT_SE), etc... */ void dance_cln (qk_tap_dance_state_t *state) { if (state->count == 1) { register_code (KC_RSFT); register_code (KC_SCLN); unregister_code (KC_SCLN); unregister_code (KC_RSFT); } else { register_code (KC_SCLN); unregister_code (KC_SCLN); reset_tap_dance (state); } } void dance_egg (qk_tap_dance_state_t *state) { if (state->count >= 100) { SEND_STRING ("Safety dance!"); reset_tap_dance (state); } } const qk_tap_dance_action_t tap_dance_actions[] = { [CT_SE] = ACTION_TAP_DANCE_DOUBLE (KC_SPC, KC_ENT) ,[CT_CLN] = ACTION_TAP_DANCE_FN (dance_cln) ,[CT_EGG] = ACTION_TAP_DANCE_FN (dance_egg) }; ``` This addresses #426. Signed-off-by: Gergely Nagy * hhkb: Fix the build with the new tap-dance feature Signed-off-by: Gergely Nagy * tap_dance: Move process_tap_dance further down Process the tap dance stuff after midi and audio, because those don't process keycodes, but row/col positions. Signed-off-by: Gergely Nagy * tap_dance: Use conditionals instead of dummy functions To be consistent with how the rest of the quantum features are implemented, use ifdefs instead of dummy functions. Signed-off-by: Gergely Nagy * Merge branch 'master' into quantum-keypress-process # Conflicts: # Makefile # keyboards/planck/rev3/config.h # keyboards/planck/rev4/config.h * update build script --- keyboards/hhkb/matrix.c | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'keyboards/hhkb') diff --git a/keyboards/hhkb/matrix.c b/keyboards/hhkb/matrix.c index 2dfb2f5e1..666b6f595 100644 --- a/keyboards/hhkb/matrix.c +++ b/keyboards/hhkb/matrix.c @@ -71,6 +71,14 @@ void matrix_init(void) matrix_prev = _matrix1; } +__attribute__ ((weak)) +void matrix_scan_user(void) { +} + +void matrix_scan_kb(void) { + matrix_scan_user(); +} + uint8_t matrix_scan(void) { uint8_t *tmp; @@ -150,6 +158,9 @@ uint8_t matrix_scan(void) KEY_POWER_OFF(); suspend_power_down(); } + + matrix_scan_quantum(); + return 1; } -- cgit v1.2.3-24-g4f1b From 66ffb1cb3a21c670719263f187e3470fd888f42a Mon Sep 17 00:00:00 2001 From: Robbie Gill Date: Thu, 7 Jul 2016 21:03:20 -0700 Subject: port missing support for hhkb-jp from tmk --- keyboards/hhkb/Makefile | 4 +++ keyboards/hhkb/config.h | 6 +++- keyboards/hhkb/hhkb.h | 27 ++++++++++++++ keyboards/hhkb/keymaps/jp/Makefile | 1 + keyboards/hhkb/keymaps/jp/keymap.c | 58 ++++++++++++++++++++++++++++++ keyboards/hhkb/keymaps/rdg_jp/Makefile | 1 + keyboards/hhkb/keymaps/rdg_jp/keymap.c | 65 ++++++++++++++++++++++++++++++++++ 7 files changed, 161 insertions(+), 1 deletion(-) create mode 100644 keyboards/hhkb/keymaps/jp/Makefile create mode 100644 keyboards/hhkb/keymaps/jp/keymap.c create mode 100644 keyboards/hhkb/keymaps/rdg_jp/Makefile create mode 100644 keyboards/hhkb/keymaps/rdg_jp/keymap.c (limited to 'keyboards/hhkb') diff --git a/keyboards/hhkb/Makefile b/keyboards/hhkb/Makefile index 53eece396..6fe973e1e 100644 --- a/keyboards/hhkb/Makefile +++ b/keyboards/hhkb/Makefile @@ -78,6 +78,10 @@ ifndef QUANTUM_DIR include ../../Makefile endif +ifneq (, $(findstring yes, $(HHKB_JP))) + OPT_DEFS += -DHHKB_JP +endif + debug-on: EXTRAFLAGS += -DDEBUG -DDEBUG_ACTION debug-on: all diff --git a/keyboards/hhkb/config.h b/keyboards/hhkb/config.h index ee66e4457..3f0528b4b 100644 --- a/keyboards/hhkb/config.h +++ b/keyboards/hhkb/config.h @@ -29,7 +29,11 @@ along with this program. If not, see . #define DESCRIPTION q.m.k keyboard firmware for HHKB /* key matrix size */ -#define MATRIX_ROWS 8 +#ifdef HHKB_JP +# define MATRIX_ROWS 16 +#else +# define MATRIX_ROWS 8 +#endif #define MATRIX_COLS 8 #define TAPPING_TERM 200 diff --git a/keyboards/hhkb/hhkb.h b/keyboards/hhkb/hhkb.h index cc756c456..e95125efc 100644 --- a/keyboards/hhkb/hhkb.h +++ b/keyboards/hhkb/hhkb.h @@ -21,4 +21,31 @@ { K70, K71, K72, K73, K74, K75, K76, KC_NO } \ } + +#define KEYMAP_JP( \ + K02, K32, K62, K22, K12, K52, K72, KA2, K92, K82, KB2, KE2, KF2, KD2, KC2, \ + K03, K63, K23, K13, K53, K73, KA3, K93, K83, KB3, KE3, KF3, KD3, \ + K06, K66, K26, K16, K56, K76, KA6, K96, K86, KB6, KE6, KF6, KD6, KC6, \ + K05, K65, K25, K15, K55, K75, KA5, K95, K85, KB5, KE5, KF5, KD5, KC5, \ + K04, K34, K64, K24, K14, K74, K94, K84, KB4, KE4, KF4, KD4, KC4) \ +{ \ + { KC_NO, KC_NO, K02, K03, K04, K05, K06, KC_NO }, \ + { KC_NO, KC_NO, K12, K13, K14, K15, K16, KC_NO }, \ + { KC_NO, KC_NO, K22, K23, K24, K25, K26, KC_NO }, \ + { KC_NO, KC_NO, K32, KC_NO, K34, KC_NO, KC_NO, KC_NO }, \ + { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ + { KC_NO, KC_NO, K52, K53, KC_NO, K55, K56, KC_NO }, \ + { KC_NO, KC_NO, K62, K63, K64, K65, K66, KC_NO }, \ + { KC_NO, KC_NO, K72, K73, K74, K75, K76, KC_NO }, \ + { KC_NO, KC_NO, K82, K83, K84, K85, K86, KC_NO }, \ + { KC_NO, KC_NO, K92, K93, K94, K95, K96, KC_NO }, \ + { KC_NO, KC_NO, KA2, KA3, KC_NO, KA5, KA6, KC_NO }, \ + { KC_NO, KC_NO, KB2, KB3, KB4, KB5, KB6, KC_NO }, \ + { KC_NO, KC_NO, KC2, KC_NO, KC4, KC5, KC6, KC_NO }, \ + { KC_NO, KC_NO, KD2, KD3, KD4, KD5, KD6, KC_NO }, \ + { KC_NO, KC_NO, KE2, KE3, KE4, KE5, KE6, KC_NO }, \ + { KC_NO, KC_NO, KF2, KF3, KF4, KF5, KF6, KC_NO } \ +} + + #endif diff --git a/keyboards/hhkb/keymaps/jp/Makefile b/keyboards/hhkb/keymaps/jp/Makefile new file mode 100644 index 000000000..92986292a --- /dev/null +++ b/keyboards/hhkb/keymaps/jp/Makefile @@ -0,0 +1 @@ +HHKB_JP=yes diff --git a/keyboards/hhkb/keymaps/jp/keymap.c b/keyboards/hhkb/keymaps/jp/keymap.c new file mode 100644 index 000000000..8525adce5 --- /dev/null +++ b/keyboards/hhkb/keymaps/jp/keymap.c @@ -0,0 +1,58 @@ +#include "hhkb.h" + +#define _______ KC_TRNS + + +/* Layer 0: HHKB JP + * ,-----------------------------------------------------------. + * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 10| -| =|Yen|Bsp| + * |-----------------------------------------------------------| + * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| | + * |------------------------------------------------------` Ent| + * |Ctrl | A| S| D| F| G| H| J| K| L| ;| '| `| | + * |-----------------------------------------------------------| + * |Shft | Z| X| C| V| B| N| M| ,| .| /| \| Up|Sft| + * |-----------------------------------------------------------| + * | ||Ctl|Alt|Cmd| | Spc |Bsp| | | ||Lft|Dwn|Rgh| + * `-----------------------------------------------------------' + */ + +/* 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| | | | + * |-----------------------------------------------------------| + * | || | | | | | | | | || | | | + * `-----------------------------------------------------------' + */ + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = KEYMAP_JP( + 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_JYEN, 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_LBRC, KC_RBRC, + 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_BSLS, 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_RO, KC_UP, KC_RSFT, + MO(1), KC_ZKHK, KC_LGUI, KC_LALT, KC_MHEN, KC_SPC, KC_HENK, KC_KANA, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = KEYMAP_JP( + 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_PSCR, KC_SLCK, KC_PAUS, KC_UP, _______, + _______, KC_VOLD, KC_VOLU, KC_MUTE, KC_PWR, _______, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, _______, KC_PENT, + _______, _______, _______, _______, _______, _______, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, _______, _______, _______, + _______, _______, _______, _______, _______, _______ , _______, _______, _______, _______, _______, _______, _______ + ) +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t macro_id, uint8_t opt) { + return MACRO_NONE; +} + +const uint16_t PROGMEM fn_actions[] = { + +}; diff --git a/keyboards/hhkb/keymaps/rdg_jp/Makefile b/keyboards/hhkb/keymaps/rdg_jp/Makefile new file mode 100644 index 000000000..92986292a --- /dev/null +++ b/keyboards/hhkb/keymaps/rdg_jp/Makefile @@ -0,0 +1 @@ +HHKB_JP=yes diff --git a/keyboards/hhkb/keymaps/rdg_jp/keymap.c b/keyboards/hhkb/keymaps/rdg_jp/keymap.c new file mode 100644 index 000000000..700ba3a0b --- /dev/null +++ b/keyboards/hhkb/keymaps/rdg_jp/keymap.c @@ -0,0 +1,65 @@ +#include "hhkb.h" + +#define _______ KC_TRNS + +enum { + ZER, + HDN, + OSY +}; + + +#define CTL_ESC CTL_T(KC_ESC) +#define SFT_BSP SFT_T(KC_BSPC) + +#define SCRNS3 LGUI(LCTL(LSFT(KC_3))) +#define SCRNS4 LGUI(LCTL(LSFT(KC_4))) + + +/* hhkb jp ~ layout + * ,-----------------------------------------------------------. + * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 10| -| =|Yen|Bsp| + * |-----------------------------------------------------------| + * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| | + * |------------------------------------------------------` Ent| + * |Ctrl | A| S| D| F| G| H| J| K| L| ;| '| `| | + * |-----------------------------------------------------------| + * |Shft | Z| X| C| V| B| N| M| ,| .| /| \| Up|Sft| + * |-----------------------------------------------------------| + * | ||Ctl|Alt|Cmd| | Spc |Bsp| | | ||Lft|Dwn|Rgh| + * `-----------------------------------------------------------' + */ + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [ZER] = KEYMAP_JP( + 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_INS, 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_LBRC, KC_RBRC, + CTL_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_GRV, 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_BSLS, KC_UP, KC_RSFT, + MO(HDN), KC_LCTL, KC_LALT, KC_LGUI, MO(HDN), KC_SPC, SFT_BSP, MO(HDN), MO(OSY), KC_NO, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [HDN] = KEYMAP_JP( + 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_DEL, + _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, _______, + _______, KC_TILD, KC_GRV, KC_BSLS, KC_PIPE, KC_MINS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_TILD, KC_GRV, _______, _______, + _______, KC_VOLD, KC_VOLU, KC_MUTE, KC_PWR, _______, _______, KC_ENT, _______, _______, _______, _______, KC_PGUP, _______, + _______, _______, _______, _______, _______, KC_UNDS , KC_DEL, _______, _______, _______, KC_HOME, KC_PGDN, KC_END + ), + + [OSY] = KEYMAP_JP( + _______, _______, _______, SCRNS3, SCRNS4, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______ , _______, _______, _______, _______, _______, _______, _______ + ) +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t macro_id, uint8_t opt) { + return MACRO_NONE; +} + +const uint16_t PROGMEM fn_actions[] = { + +}; -- cgit v1.2.3-24-g4f1b From 1c8d64d3b3664ef7d62ea12f8fd510231a7ec54e Mon Sep 17 00:00:00 2001 From: shela Date: Fri, 12 Aug 2016 21:24:43 +0900 Subject: add my keymap --- keyboards/hhkb/keymaps/shela/Makefile | 1 + keyboards/hhkb/keymaps/shela/action_pseudo_lut.c | 142 ++++++++++++++++++ keyboards/hhkb/keymaps/shela/action_pseudo_lut.h | 15 ++ keyboards/hhkb/keymaps/shela/config.h | 12 ++ keyboards/hhkb/keymaps/shela/keymap.c | 179 +++++++++++++++++++++++ keyboards/hhkb/keymaps/shela/keymap_jis2us.h | 32 ++++ keyboards/hhkb/keymaps/shela/readme.md | 14 ++ 7 files changed, 395 insertions(+) create mode 100644 keyboards/hhkb/keymaps/shela/Makefile create mode 100644 keyboards/hhkb/keymaps/shela/action_pseudo_lut.c create mode 100644 keyboards/hhkb/keymaps/shela/action_pseudo_lut.h create mode 100644 keyboards/hhkb/keymaps/shela/config.h create mode 100644 keyboards/hhkb/keymaps/shela/keymap.c create mode 100644 keyboards/hhkb/keymaps/shela/keymap_jis2us.h create mode 100644 keyboards/hhkb/keymaps/shela/readme.md (limited to 'keyboards/hhkb') diff --git a/keyboards/hhkb/keymaps/shela/Makefile b/keyboards/hhkb/keymaps/shela/Makefile new file mode 100644 index 000000000..d0586bda6 --- /dev/null +++ b/keyboards/hhkb/keymaps/shela/Makefile @@ -0,0 +1 @@ +SRC += action_pseudo_lut.c diff --git a/keyboards/hhkb/keymaps/shela/action_pseudo_lut.c b/keyboards/hhkb/keymaps/shela/action_pseudo_lut.c new file mode 100644 index 000000000..b205968c7 --- /dev/null +++ b/keyboards/hhkb/keymaps/shela/action_pseudo_lut.c @@ -0,0 +1,142 @@ +#include "quantum.h" +#include "action_pseudo_lut.h" + +static uint8_t send_key_shift_bit[SHIFT_BIT_SIZE]; + +/* + * Pseudo layout action. + * This action converts a keycode in order to output the character according to the keymap you specified + * still your keyboard layout recognized wrongly on your OS. + * Memo: Using other layer keymap to get keycode + */ +void action_pseudo_lut(keyrecord_t *record, uint8_t base_keymap_id, const uint16_t (*keymap)[2]) { + static uint8_t prev_shift; + uint16_t keycode; + uint16_t pseudo_keycode; + + /* get keycode from keymap you specified */ + keycode = keymap_key_to_keycode(base_keymap_id, record->event.key); + + prev_shift = keyboard_report->mods & (MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT)); + + if (record->event.pressed) { + /* when magic commands entered, keycode does not converted */ + if (IS_COMMAND()) { + if (prev_shift) { + add_shift_bit(keycode); + } + register_code(keycode); + return; + } + + if (prev_shift) { + pseudo_keycode = convert_keycode(keymap, keycode, true); + dprintf("pressed: %02X, converted: %04X\n", keycode, pseudo_keycode); + add_shift_bit(keycode); + + if (IS_LSFT(pseudo_keycode)) { + register_code(QK_LSFT ^ pseudo_keycode); + } else { + /* delete shift mod temporarily */ + del_mods(prev_shift); + send_keyboard_report(); + register_code(pseudo_keycode); + add_mods(prev_shift); + send_keyboard_report(); + } + } else { + pseudo_keycode = convert_keycode(keymap, keycode, false); + dprintf("pressed: %02X, converted: %04X\n", keycode, pseudo_keycode); + + if (IS_LSFT(pseudo_keycode)) { + add_weak_mods(MOD_BIT(KC_LSFT)); + send_keyboard_report(); + register_code(QK_LSFT ^ pseudo_keycode); + /* on Windows, prevent key repeat to avoid unintended output */ + unregister_code(QK_LSFT ^ pseudo_keycode); + del_weak_mods(MOD_BIT(KC_LSFT)); + send_keyboard_report(); + } else { + register_code(pseudo_keycode); + } + } + } else { + if (get_shift_bit(keycode)) { + del_shift_bit(keycode); + pseudo_keycode = convert_keycode(keymap, keycode, true); + } else { + pseudo_keycode = convert_keycode(keymap, keycode, false); + } + dprintf("released: %02X, converted: %04X\n", keycode, pseudo_keycode); + + if (IS_LSFT(pseudo_keycode)) { + unregister_code(QK_LSFT ^ pseudo_keycode); + } else { + unregister_code(pseudo_keycode); + } + } +} + +uint16_t convert_keycode(const uint16_t (*keymap)[2], uint16_t keycode, bool shift_modded) +{ + uint16_t pseudo_keycode; + + switch (keycode) { + case KC_A ... KC_CAPSLOCK: +#if defined(__AVR__) + if (shift_modded) { + pseudo_keycode = pgm_read_word(&keymap[keycode][1]); + } else { + pseudo_keycode = pgm_read_word(&keymap[keycode][0]); + } +#else + if (shift_modded) { + pseudo_keycode = keymap[keycode][1]; + } else { + pseudo_keycode = keymap[keycode][0]; + } +#endif + /* if undefined, use got keycode as it is */ + if (pseudo_keycode == 0x00) { + if (shift_modded) { + pseudo_keycode = S(keycode); + } else { + pseudo_keycode = keycode; + } + } + break; + default: + if (shift_modded) { + pseudo_keycode = S(keycode); + } else { + pseudo_keycode = keycode; + } + break; + } + return pseudo_keycode; +} + +uint8_t get_shift_bit(uint16_t keycode) { + if ((keycode >> 3) < SHIFT_BIT_SIZE) { + return send_key_shift_bit[keycode >> 3] & (1 << (keycode & 7)); + } else { + dprintf("get_shift_bit: Can't get shift bit. keycode: %02X\n", keycode); + return 0; + } +} + +void add_shift_bit(uint16_t keycode) { + if ((keycode >> 3) < SHIFT_BIT_SIZE) { + send_key_shift_bit[keycode >> 3] |= (1 << (keycode & 7)); + } else { + dprintf("add_shift_bit: Can't add shift bit. keycode: %02X\n", keycode); + } +} + +void del_shift_bit(uint16_t keycode) { + if ((keycode >> 3) < SHIFT_BIT_SIZE) { + send_key_shift_bit[keycode >> 3] &= ~(1 << (keycode & 7)); + } else { + dprintf("del_shift_bit: Can't delete shift bit. keycode: %02X\n", keycode); + } +} diff --git a/keyboards/hhkb/keymaps/shela/action_pseudo_lut.h b/keyboards/hhkb/keymaps/shela/action_pseudo_lut.h new file mode 100644 index 000000000..681252440 --- /dev/null +++ b/keyboards/hhkb/keymaps/shela/action_pseudo_lut.h @@ -0,0 +1,15 @@ +#ifndef ACTION_PSEUDO_LUT_H +#define ACTION_PSEUDO_LUT_H + +#define SHIFT_BIT_SIZE (0xE7 / 8 + 1) // 1bit per 1key + +#define IS_LSFT(kc) ((QK_LSFT & (kc)) == QK_LSFT) + +void action_pseudo_lut(keyrecord_t *, uint8_t, const uint16_t (*)[2]); +uint16_t convert_keycode(const uint16_t (*)[2], uint16_t, bool); + +uint8_t get_shift_bit(uint16_t); +void add_shift_bit(uint16_t); +void del_shift_bit(uint16_t); + +#endif diff --git a/keyboards/hhkb/keymaps/shela/config.h b/keyboards/hhkb/keymaps/shela/config.h new file mode 100644 index 000000000..08cc1fb46 --- /dev/null +++ b/keyboards/hhkb/keymaps/shela/config.h @@ -0,0 +1,12 @@ +#ifndef CONFIG_SHELA_H +#define CONFIG_SHELA_H + +#include "../../config.h" + +#undef TAPPING_TERM +#define TAPPING_TERM 230 + +#define ONESHOT_TAP_TOGGLE 2 +#define ONESHOT_TIMEOUT 2000 + +#endif diff --git a/keyboards/hhkb/keymaps/shela/keymap.c b/keyboards/hhkb/keymaps/shela/keymap.c new file mode 100644 index 000000000..c286b99de --- /dev/null +++ b/keyboards/hhkb/keymaps/shela/keymap.c @@ -0,0 +1,179 @@ +/* + * HHKB Pro 2 US Layout for shela + */ +#include "hhkb.h" +#include "keymap_jis2us.h" +#include "action_pseudo_lut.h" + +enum keymap_layout { + BASE = 0, + PSEUDO_US, + DVORAK, + MOUSE, + TENKEY, + HHKB, + SPACE_FN, +}; + +const uint16_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 | [ | ] | \ | + * |-----------------------------------------------------------------------------------------| + * | Control | A | S | D | F | G | H | J | K | L | ; | ' | Enter | + * |-----------------------------------------------------------------------------------------| + * | Shift | Z | X | C | V | B | N | M | , | . | / | Shift | Fn0 | + * `-----------------------------------------------------------------------------------------' + * |LAlt | LGui | SpaceFN | RGui |RAlt | + * `-----------------------------------------------------------------' + */ + [BASE] = + KEYMAP(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_GRV, 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_LBRC,KC_RBRC,KC_BSLS, \ + 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, \ + OSM(MOD_LSFT),KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH,KC_RSFT,KC_FN0, \ + KC_LALT,KC_LGUI, KC_FN2, KC_RGUI,KC_RALT), + + /* Layer 1: Pseudo US Layout Layer */ + [PSEUDO_US] = + KEYMAP(KC_ESC, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_BSPC, \ + KC_TAB, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, \ + KC_LCTL,KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_ENT, \ + OSM(MOD_LSFT),KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_RSFT,KC_FN0, \ + KC_LGUI,KC_FN3, KC_FN2, KC_FN4 ,KC_RGUI), + + /* Layer 2: Dvorak Layer + * ,-----------------------------------------------------------------------------------------. + * | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | [ | ] | ` | BSp | + * |-----------------------------------------------------------------------------------------| + * | Tab | ' | , | . | P | Y | F | G | C | R | L | / | = | \ | + * |-----------------------------------------------------------------------------------------| + * | Control | A | O | E | U | I | D | H | T | N | S | - | Enter | + * |-----------------------------------------------------------------------------------------| + * | Shift | ; | Q | J | K | X | B | M | W | V | Z | Shift | Fn0 | + * `-----------------------------------------------------------------------------------------' + * |LAlt | LGui | SpaceFN | RGui |RAlt | + * `-----------------------------------------------------------------' + */ + [DVORAK] = + KEYMAP(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_GRV, 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_SLSH,KC_EQL, KC_BSLS, \ + KC_LCTL,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_LSFT,KC_SCLN,KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT,KC_FN0, \ + KC_LALT,KC_LGUI, KC_FN2, KC_RGUI,KC_RALT), + + /* Layer 3: Mouse layer + * ,-----------------------------------------------------------------------------------------. + * | Esc | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | | | + * |-----------------------------------------------------------------------------------------| + * | | | | | | | MwL | MwD | MwU | MwR | | | | | + * |-----------------------------------------------------------------------------------------| + * | | | | | | | McL | McD | McU | McR | | | | + * |-----------------------------------------------------------------------------------------| + * | | | | | | | Mb1 | Mb2 | Mb3 | | | | Fn0 | + * `-----------------------------------------------------------------------------------------' + * | | | Mb1 | | | + * `-----------------------------------------------------------------' + */ + [MOUSE] = + KEYMAP(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_NO, KC_TRNS, \ + KC_TRNS,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_WH_L,KC_WH_D,KC_WH_U,KC_WH_R,KC_NO, KC_NO, KC_NO, KC_NO, \ + KC_TRNS,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MS_L,KC_MS_D,KC_MS_U,KC_MS_R,KC_NO, KC_NO, KC_TRNS, \ + KC_TRNS,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_BTN1,KC_BTN2,KC_BTN3,KC_NO, KC_NO, KC_TRNS,KC_FN0, \ + KC_TRNS,KC_TRNS, KC_BTN1, KC_TRNS,KC_TRNS), + + /* Layer 4: Tenkey layer + * ,-----------------------------------------------------------------------------------------. + * | Esc | | | | | | | | | | / | * | - | | BSp | + * |-----------------------------------------------------------------------------------------| + * | | | | | | | | | | 7 | 8 | 9 | + | | + * |-----------------------------------------------------------------------------------------| + * | | | | | | | | | | 4 | 5 | 6 | Enter | + * |-----------------------------------------------------------------------------------------| + * | | | | | | | | | 1 | 2 | 3 | + | Fn0 | + * `-----------------------------------------------------------------------------------------' + * | | | SpaceFN | 0 | . | + * `-----------------------------------------------------------------' + */ + [TENKEY] = + KEYMAP(KC_ESC, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_PSLS,KC_PAST,KC_PMNS,KC_NO, KC_BSPC, \ + KC_TRNS,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_KP_7,KC_KP_8,KC_KP_9,KC_PPLS,KC_NO, \ + KC_TRNS,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_KP_4,KC_KP_5,KC_KP_6,KC_PENT, \ + KC_TRNS,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_KP_1,KC_KP_2,KC_KP_3,KC_PPLS,KC_FN0, \ + KC_TRNS,KC_TRNS, KC_FN2, KC_KP_0,KC_PDOT), + + /* Layer 5: HHKB mode (HHKB Fn) + * ,-----------------------------------------------------------------------------------------. + * | Pwr | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | Ins | Del | + * |-----------------------------------------------------------------------------------------| + * | Caps | Fn5 | Fn6 | Fn7 | Fn8 | Fn9 | | | Psc | Slk | Pus | Up | | BSp | + * |-----------------------------------------------------------------------------------------| + * | | 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_FN5, KC_FN6, KC_FN7, KC_FN8, KC_FN9, 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 6: SpaceFN + * ,-----------------------------------------------------------------------------------------. + * | ` | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | | Del | + * |-----------------------------------------------------------------------------------------| + * | | End | Up | Hom | | | | Hom | Up | End | Psc | Slk | Pau | Ins | + * |-----------------------------------------------------------------------------------------| + * | | Lef | Dow | Rig | PgU | | PgU | Lef | Dow | Rig | | | | + * |-----------------------------------------------------------------------------------------| + * | | | | PgD | | Spc | PgD | ` | ~ | | | | | + * `-----------------------------------------------------------------------------------------' + * | | | | | | + * `-----------------------------------------------------------------' + */ + [SPACE_FN] = + KEYMAP(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_NO, KC_DEL, \ + KC_TRNS,KC_END, KC_UP, KC_HOME,KC_NO, KC_NO, KC_NO, KC_HOME,KC_UP, KC_END, KC_PSCR,KC_SLCK,KC_PAUS,KC_INS, \ + KC_TRNS,KC_LEFT,KC_DOWN,KC_RGHT,KC_PGUP,KC_NO, KC_PGUP,KC_LEFT,KC_DOWN,KC_RGHT,KC_NO, KC_NO, KC_TRNS, \ + KC_TRNS,KC_NO, KC_NO, KC_PGDN,KC_NO, KC_SPC, KC_PGDN,KC_GRV, KC_TILD,KC_NO, KC_NO, KC_TRNS,KC_NO, \ + KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS), +}; + +/* + * user defined action function + */ +enum function_id { + PSEUDO_US_FUNCTION, +}; + +void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { + + switch (id) { + case PSEUDO_US_FUNCTION: + action_pseudo_lut(record, BASE, keymap_jis2us); + break; + } +} + +/* + * Fn action definition + */ +const uint16_t PROGMEM fn_actions[] = { + [0] = ACTION_LAYER_MOMENTARY(HHKB), + [1] = ACTION_FUNCTION(PSEUDO_US_FUNCTION), + [2] = ACTION_LAYER_TAP_KEY(SPACE_FN, KC_SPACE), + [3] = ACTION_MODS_TAP_KEY(MOD_LALT, KC_MHEN), + [4] = ACTION_MODS_TAP_KEY(MOD_RALT, KC_KANA), + [5] = ACTION_DEFAULT_LAYER_SET(BASE), + [6] = ACTION_DEFAULT_LAYER_SET(PSEUDO_US), + [7] = ACTION_DEFAULT_LAYER_SET(MOUSE), + [8] = ACTION_DEFAULT_LAYER_SET(TENKEY), + [9] = ACTION_DEFAULT_LAYER_SET(DVORAK), +}; diff --git a/keyboards/hhkb/keymaps/shela/keymap_jis2us.h b/keyboards/hhkb/keymaps/shela/keymap_jis2us.h new file mode 100644 index 000000000..cf2bd4f0e --- /dev/null +++ b/keyboards/hhkb/keymaps/shela/keymap_jis2us.h @@ -0,0 +1,32 @@ +#ifndef KEYMAP_JIS2US_H +#define KEYMAP_JIS2US_H + +/* keymap for convert from JIS to US */ +const uint16_t PROGMEM keymap_jis2us[][2] = { + [KC_A ... KC_CAPS] = { 0x00, 0x00 }, /* default value */ + + [KC_1] = { KC_1, KC_EXLM }, /* 1 and ! -> 1 and ! */ + [KC_2] = { KC_2, KC_LBRC }, /* 2 and " -> 2 and @ */ + [KC_3] = { KC_3, KC_HASH }, /* 3 and # -> 3 and # */ + [KC_4] = { KC_4, KC_DLR }, /* 4 and $ -> 4 and $ */ + [KC_5] = { KC_5, KC_PERC }, /* 5 and % -> 5 and % */ + [KC_6] = { KC_6, KC_EQL }, /* 6 and & -> 6 and ^ */ + [KC_7] = { KC_7, KC_CIRC }, /* 7 and ' -> 7 and & */ + [KC_8] = { KC_8, KC_DQT }, /* 8 and ( -> 8 and * */ + [KC_9] = { KC_9, KC_ASTR }, /* 9 and ) -> 9 and ( */ + [KC_0] = { KC_0, KC_LPRN }, /* 0 and (no assign) -> 0 and ) */ + [KC_MINS] = { KC_MINS, S(KC_RO) }, /* - and = -> - and _ */ + [KC_EQL] = { KC_UNDS, KC_COLN }, /* ^ and ~ -> = and + */ + [KC_LBRC] = { KC_RBRC, KC_RCBR }, /* @ and ` -> [ and { */ + [KC_RBRC] = { KC_BSLS, KC_PIPE }, /* [ and { -> ] and } */ + [KC_BSLS] = { KC_JYEN, S(KC_JYEN) }, /* ] and } -> / and | */ + [KC_NUHS] = { KC_NUHS, S(KC_NUHS) }, /* (no assign) */ + [KC_SCLN] = { KC_SCLN, KC_QUOT }, /* ; and + -> ; and : */ + [KC_QUOT] = { KC_AMPR, KC_AT }, /* : and * -> ' and " */ + [KC_GRV] = { KC_LCBR, KC_PLUS }, /* (no assign) -> ` and ~ */ + [KC_COMM] = { KC_COMM, KC_LT }, /* , and < -> , and < */ + [KC_DOT] = { KC_DOT, KC_GT }, /* . and > -> . and > */ + [KC_SLSH] = { KC_SLSH, KC_QUES }, /* / and ? -> / and ? */ +}; + +#endif diff --git a/keyboards/hhkb/keymaps/shela/readme.md b/keyboards/hhkb/keymaps/shela/readme.md new file mode 100644 index 000000000..cf5f29169 --- /dev/null +++ b/keyboards/hhkb/keymaps/shela/readme.md @@ -0,0 +1,14 @@ +# Shela's HHKB Layout + +Layer 0: US Layout +Layer 1: Pseudo US Layout +Layer 2: Dvorak Layout +Layer 3: Mouse +Layer 4: Tenkey +Layer 5: HHKB Fn Key +Layer 6: SpaceFN + +## Pseudo US Layout + +On japanese Windows, HHKB Professional 2 US layout model recognized wrongly as JIS layout without changing OS settings. +But, you can use HHKB like a US layout keyboard as it is. -- cgit v1.2.3-24-g4f1b From c9272fee083d274c11bab0d8ec5520b54961f7fa Mon Sep 17 00:00:00 2001 From: shela Date: Fri, 12 Aug 2016 21:33:32 +0900 Subject: add new line --- keyboards/hhkb/keymaps/shela/readme.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'keyboards/hhkb') diff --git a/keyboards/hhkb/keymaps/shela/readme.md b/keyboards/hhkb/keymaps/shela/readme.md index cf5f29169..2317e880f 100644 --- a/keyboards/hhkb/keymaps/shela/readme.md +++ b/keyboards/hhkb/keymaps/shela/readme.md @@ -1,12 +1,12 @@ # Shela's HHKB Layout -Layer 0: US Layout -Layer 1: Pseudo US Layout -Layer 2: Dvorak Layout -Layer 3: Mouse -Layer 4: Tenkey -Layer 5: HHKB Fn Key -Layer 6: SpaceFN +Layer 0: US Layout +Layer 1: Pseudo US Layout +Layer 2: Dvorak Layout +Layer 3: Mouse +Layer 4: Tenkey +Layer 5: HHKB Fn Key +Layer 6: SpaceFN ## Pseudo US Layout -- cgit v1.2.3-24-g4f1b From 11e23fd3fdbe86ff85b2be7783c46d4360b07360 Mon Sep 17 00:00:00 2001 From: shela Date: Fri, 12 Aug 2016 21:45:36 +0900 Subject: add new line --- keyboards/hhkb/keymaps/shela/readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'keyboards/hhkb') diff --git a/keyboards/hhkb/keymaps/shela/readme.md b/keyboards/hhkb/keymaps/shela/readme.md index 2317e880f..5a06a8363 100644 --- a/keyboards/hhkb/keymaps/shela/readme.md +++ b/keyboards/hhkb/keymaps/shela/readme.md @@ -10,5 +10,5 @@ Layer 6: SpaceFN ## Pseudo US Layout -On japanese Windows, HHKB Professional 2 US layout model recognized wrongly as JIS layout without changing OS settings. +On japanese Windows, HHKB Professional 2 US layout model recognized wrongly as JIS layout without changing OS settings. But, you can use HHKB like a US layout keyboard as it is. -- cgit v1.2.3-24-g4f1b From 44441de8cad7255fd0637459ed39b89e34751b78 Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Sun, 7 Aug 2016 17:04:39 +0300 Subject: Split keyboard makefiles into rules and Makefile --- keyboards/hhkb/Makefile | 91 ++----------------------------------------------- keyboards/hhkb/rules.mk | 84 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 86 insertions(+), 89 deletions(-) create mode 100644 keyboards/hhkb/rules.mk (limited to 'keyboards/hhkb') diff --git a/keyboards/hhkb/Makefile b/keyboards/hhkb/Makefile index 6fe973e1e..4e2a6f00f 100644 --- a/keyboards/hhkb/Makefile +++ b/keyboards/hhkb/Makefile @@ -1,90 +1,3 @@ - - -# project specific files -SRC = matrix.c - -# MCU name -#MCU = at90usb1287 -MCU = atmega32u4 - -# Processor frequency. -# This will define a symbol, F_CPU, in all source code files equal to the -# processor frequency in Hz. You can then use this symbol in your source code to -# calculate timings. Do NOT tack on a 'UL' at the end, this will be done -# automatically to create a 32-bit value in your source code. -# -# This will be an integer division of F_USB below, as it is sourced by -# F_USB after it has run through any CPU prescalers. Note that this value -# does not *change* the processor frequency - it should merely be updated to -# reflect the processor speed set externally so that the code can use accurate -# software delays. -F_CPU = 16000000 - - -# -# LUFA specific -# -# Target architecture (see library "Board Types" documentation). -ARCH = AVR8 - -# Input clock frequency. -# This will define a symbol, F_USB, in all source code files equal to the -# input clock frequency (before any prescaling is performed) in Hz. This value may -# differ from F_CPU if prescaling is used on the latter, and is required as the -# raw input clock is fed directly to the PLL sections of the AVR for high speed -# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' -# at the end, this will be done automatically to create a 32-bit value in your -# source code. -# -# If no clock division is performed on the input clock inside the AVR (via the -# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. -F_USB = $(F_CPU) - -# Interrupt driven control endpoint task(+60) -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - - -# Boot Section Size in *bytes* -# Teensy halfKay 512 -# Teensy++ halfKay 1024 -# Atmel DFU loader 4096 -# LUFA bootloader 4096 -# USBaspLoader 2048 -#OPT_DEFS += -DBOOTLOADER_SIZE=4096 - -# as per original hasu settings -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 -CUSTOM_MATRIX ?= yes # Custom matrix file for the HHKB -# 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 - - - -ifndef QUANTUM_DIR +ifndef MAKEFILE_INCLUDED include ../../Makefile -endif - -ifneq (, $(findstring yes, $(HHKB_JP))) - OPT_DEFS += -DHHKB_JP -endif - -debug-on: EXTRAFLAGS += -DDEBUG -DDEBUG_ACTION -debug-on: all - -debug-off: EXTRAFLAGS += -DNO_DEBUG -DNO_PRINT -debug-off: OPT_DEFS := $(filter-out -DCONSOLE_ENABLE,$(OPT_DEFS)) -debug-off: all +endif \ No newline at end of file diff --git a/keyboards/hhkb/rules.mk b/keyboards/hhkb/rules.mk new file mode 100644 index 000000000..b43b5e23f --- /dev/null +++ b/keyboards/hhkb/rules.mk @@ -0,0 +1,84 @@ + + +# project specific files +SRC = matrix.c + +# MCU name +#MCU = at90usb1287 +MCU = atmega32u4 + +# Processor frequency. +# This will define a symbol, F_CPU, in all source code files equal to the +# processor frequency in Hz. You can then use this symbol in your source code to +# calculate timings. Do NOT tack on a 'UL' at the end, this will be done +# automatically to create a 32-bit value in your source code. +# +# This will be an integer division of F_USB below, as it is sourced by +# F_USB after it has run through any CPU prescalers. Note that this value +# does not *change* the processor frequency - it should merely be updated to +# reflect the processor speed set externally so that the code can use accurate +# software delays. +F_CPU = 16000000 + + +# +# LUFA specific +# +# Target architecture (see library "Board Types" documentation). +ARCH = AVR8 + +# Input clock frequency. +# This will define a symbol, F_USB, in all source code files equal to the +# input clock frequency (before any prescaling is performed) in Hz. This value may +# differ from F_CPU if prescaling is used on the latter, and is required as the +# raw input clock is fed directly to the PLL sections of the AVR for high speed +# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' +# at the end, this will be done automatically to create a 32-bit value in your +# source code. +# +# If no clock division is performed on the input clock inside the AVR (via the +# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. +F_USB = $(F_CPU) + +# Interrupt driven control endpoint task(+60) +OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT + + +# Boot Section Size in *bytes* +# Teensy halfKay 512 +# Teensy++ halfKay 1024 +# Atmel DFU loader 4096 +# LUFA bootloader 4096 +# USBaspLoader 2048 +#OPT_DEFS += -DBOOTLOADER_SIZE=4096 + +# as per original hasu settings +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 +CUSTOM_MATRIX ?= yes # Custom matrix file for the HHKB +# 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 + +ifneq (, $(findstring yes, $(HHKB_JP))) + OPT_DEFS += -DHHKB_JP +endif + +debug-on: EXTRAFLAGS += -DDEBUG -DDEBUG_ACTION +debug-on: all + +debug-off: EXTRAFLAGS += -DNO_DEBUG -DNO_PRINT +debug-off: OPT_DEFS := $(filter-out -DCONSOLE_ENABLE,$(OPT_DEFS)) +debug-off: all -- cgit v1.2.3-24-g4f1b From da226e61261e0c11e678d2086c00b2a45726083e Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Sat, 20 Aug 2016 03:22:16 +0300 Subject: Update keyboard readme files with new makefile instructions --- keyboards/hhkb/readme.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'keyboards/hhkb') diff --git a/keyboards/hhkb/readme.md b/keyboards/hhkb/readme.md index 39d49b32a..367c0a08f 100644 --- a/keyboards/hhkb/readme.md +++ b/keyboards/hhkb/readme.md @@ -168,13 +168,15 @@ Download or clone the whole firmware and navigate to the keyboards/planck folder Depending on which keymap you would like to use, you will have to compile slightly differently. ### Default -To build with the default keymap, simply run `make`. +To build with the default keymap, simply run `make default`. ### 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 `.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: +To build the firmware binary hex file with a keymap just do `make` with a keymap like this: + ``` -$ make KEYMAP=[default|jack|] +$ make [default|jack|] ``` + Keymaps follow the format **__\.c__** and are stored in the `keymaps` folder. -- cgit v1.2.3-24-g4f1b