diff options
26 files changed, 3814 insertions, 3455 deletions
diff --git a/.gitignore b/.gitignore index 49eb2d5587..1e19ce9a87 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,4 @@ tags build/ *.bak .vagrant/ +.DS_STORE
\ No newline at end of file diff --git a/QUICK_START.md b/QUICK_START.md index 6be377db3c..948308ca11 100644 --- a/QUICK_START.md +++ b/QUICK_START.md @@ -20,6 +20,6 @@ See [doc/keymap.md](tmk_core/doc/keymap.md). ## Flashing the firmware -The "easy" way to flash the firmware is using a tool from your host OS like the Teensy programming app. [ErgoDox EZ](keyboard/ergodox_ez/README.md) gives a great example. +The "easy" way to flash the firmware is using a tool from your host OS like the Teensy programming app. [ErgoDox EZ](keyboard/ergodox_ez/readme.md) gives a great example. If you want to program via the command line you can uncomment the ['modifyvm'] lines in the Vagrantfile to enable the USB passthrough into Linux and then program using the command line tools like dfu-util/dfu-programmer or you can install the Teensy CLI version. @@ -132,15 +132,75 @@ A macro can include the following commands: 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. +Note: Using macros to have your keyboard send passwords for you is possible, but a bad idea. -### Additional keycode aliases for software-implemented layouts (Colemak, Dvorak, etc) +### Advanced macro functions + +To get more control over the keys/actions your keyboard takes, the following functions are available to you in the `action_get_macro` function block: + +* `record->event.pressed` + +This is a boolean value that can be tested to see if the switch is being pressed or released. An example of this is + +```c +if (record->event.pressed) { + // on keydown +} else { + // on keyup +} +``` + +* `register_code(<kc>);` + +This sends the `<kc>` keydown event to the computer. Some examples would be `KC_ESC`, `KC_C`, `KC_4`, and even modifiers such as `KC_LSFT` and `KC_LGUI`. + +* `unregister_code(<kc>);` + +Parallel to `register_code` function, this sends the `<kc>` keyup event to the computer. If you don't use this, the key will be held down until it's sent. + +* `layer_on(<n>);` + +This will turn on the layer `<n>` - the higher layer number will always take priority. Make sure you have `KC_TRNS` for the key you're pressing on the layer you're switching to, or you'll get stick there unless you have another plan. + +* `layer_off(<n>);` + +This will turn off the layer `<n>`. + +* `clear_keyboard();` + +This will clear all mods and keys currently pressed. + +* `clear_mods();` + +This will clear all mods currently pressed. + +* `clear_keyboard_but_mods();` + +This will clear all keys besides the mods currently pressed. + +#### Timer functionality + +It's possible to start timers and read values for time-specific events - here's an example: + +```c +static uint16_t key_timer; +key_timer = timer_read(); +if (timer_elapsed(key_timer) < 100) { + // do something if less than 100ms have passed +} else { + // do something if 100ms or more have passed +} +``` + +It's best to declare the `static uint16_t key_timer;` outside of the macro block (top of file, etc). + +## 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_<layout>.h" + #include <keymap_extras/keymap_colemak.h> -Where <layout> is "colemak" or "dvorak". After including this line, you will get access to: +If you use Dvorak, use `keymap_dvorak.h` instead of `keymap_colemak.h` for this line. 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 @@ -228,3 +288,24 @@ The firmware supports 5 different light effects, and the color (hue, saturation, ![WS2812 Wiring](https://raw.githubusercontent.com/yangliu/qmk_firmware/planck-rgb/keyboard/planck/keymaps/yang/WS2812-wiring.jpg) Please note the USB port can only supply a limited amount of power to the keyboard (500mA by standard, however, modern computer and most usb hubs can provide 700+mA.). According to the data of NeoPixel from Adafruit, 30 WS2812 LEDs require a 5V 1A power supply, LEDs used in this mod should not more than 20. + +## Safety Considerations + +You probably don't want to "brick" your keyboard, making it impossible +to rewrite firmware onto it. Here are some of the parameters to show +what things are (and likely aren't) too risky. + +- If a keyboard map does not include RESET, then, to get into DFU + mode, you will need to press the reset button on the PCB, which + requires unscrewing some bits. +- Messing with tmk_core / common files might make the keyboard + inoperable +- Too large a .hex file is trouble; `make dfu` will erase the block, + test the size (oops, wrong order!), which errors out, failing to + flash the keyboard +- DFU tools do /not/ allow you to write into the bootloader (unless + you throw in extra fruitsalad of options), so there is little risk + there. +- EEPROM has around a 100000 write cycle. You shouldn't rewrite the + firmware repeatedly and continually; that'll burn the EEPROM + eventually. diff --git a/keyboard/atomic/README.md b/keyboard/atomic/README.md index 7c30958438..c8e83cf55a 100644 --- a/keyboard/atomic/README.md +++ b/keyboard/atomic/README.md @@ -4,163 +4,7 @@ DIY/Assembled ortholinear 60% keyboard by [Ortholinear Keyboards](http://ortholi ## 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_<layout>.h" - -Where <layout> 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_<n>` - 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. +For the full Quantum feature list, see [the parent README.md](/README.md). ## Building diff --git a/keyboard/ergodox_ez/Makefile b/keyboard/ergodox_ez/Makefile index 8066c7bb4b..5dfcca2c80 100644 --- a/keyboard/ergodox_ez/Makefile +++ b/keyboard/ergodox_ez/Makefile @@ -93,7 +93,7 @@ OPT_DEFS += -DBOOTLOADER_SIZE=512 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 = no # Console for debug(+400) +# CONSOLE_ENABLE = yes # Console for debug(+400) COMMAND_ENABLE = yes # Commands for debug and configuration CUSTOM_MATRIX = yes # Custom matrix file for the ErgoDox EZ SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend diff --git a/keyboard/ergodox_ez/keymaps/default/default.hex b/keyboard/ergodox_ez/keymaps/default/default.hex index 81fc2ee703..14f5b7c798 100644 --- a/keyboard/ergodox_ez/keymaps/default/default.hex +++ b/keyboard/ergodox_ez/keymaps/default/default.hex @@ -1,17 +1,17 @@ -:100000000C9400070C9444070C9444070C94440788
-:100010000C9444070C9444070C9444070C94440734
-:100020000C9444070C9444070C945B120C942D130D
-:100030000C9444070C9444070C9444070C94440714
-:100040000C9444070C94072C0C9444070C9444071C
-:100050000C9444070C940E220C9444070C9444070F
-:100060000C9444070C9444070C9444070C944407E4
-:100070000C9444070C9444070C9444070C944407D4
-:100080000C9444070C9444070C9444070C944407C4
-:100090000C9444070C9444070C9444070C944407B4
-:1000A0000C9444070C9444070C9444079213B41323
-:1000B0009F14B4139F14F61319149F146E14811413
-:1000C000CF17CF17FD17FD173F187B187B1A7B1A28
-:1000D00093187B1A8A198A19551A7B1A7B1A691A7E
+:100000000C9465020C94A9020C94A9020C94A90208
+:100010000C94A9020C94A9020C94A9020C94A902B4
+:100020000C94A9020C94A9020C94C50B0C94970C87
+:100030000C94A9020C94A9020C94A9020C94A90294
+:100040000C94A9020C9422210C94A9020C94A902EC
+:100050000C94A9020C94C41A0C94A9020C94A90241
+:100060000C94A9020C94A9020C94A9020C94A90264
+:100070000C94A9020C94A9020C94A9020C94A90254
+:100080000C94A9020C94A9020C94A9020C94A90244
+:100090000C94A9020C94A9020C94A9020C94A90234
+:1000A0000C94A9020C94A9020C94A902FC0C1E0D3C
+:1000B000090E1E0D090E600D830D090ED80DEB0DF6
+:1000C000D810D81006110611481184118413841316
+:1000D0009C118413931293125E138413841372136E
:1000E0000000F0A12E004C002A00E1003581000044
:1000F0001E00140004001D7134004D001F001A0082
:1001000016001B00E1042A0020000800070006007A
@@ -22,7 +22,7 @@ :10015000240018000D00100052004B0025000C0078
:100160000E00360051002800260012000F00370054
:100170002F002B00270013003382387130004E000F
-:100180002D0031003400E500C10000000100010035
+:100180002D0031003478E500C100000001000100BD
:1001900001000100010000003A001E0220022202BC
:1001A000010001003B001F022102230201000100A7
:1001B0003C002F0226022F00010001003D0030020A
@@ -43,1430 +43,1080 @@ :1002A0000100010001000100A9000100010001009E
:1002B0000100AC00AA00B600010001000100AB0083
:1002C000A80001000100010001000100010001007F
-:1002D00001000100AE000100010000000A0025300D
-:1002E000313662003A200025303258000A722F63FE
-:1002F0002030313233343536373839414243444582
-:10030000460A000A002530325800626F756E636538
-:10031000213A20006C6566742073696465206174FD
-:100320007461636865640A006C656674207369644F
-:1003300065206E6F7420726573706F6E64696E678E
-:100340000A00747279696E6720746F207265736534
-:1003500074206D637032333031380A000A444542EC
-:1003600055473A20656E61626C65642E0A005B73C6
-:100370005D004B6579626F617264207374617274A1
-:100380002E0A005B575D005B535D005B525D005BB6
-:10039000445D005B435D0016034500720067006F1B
-:1003A0000044006F007800200045005A000000164D
-:1003B000034500720067006F0044006F0078002062
-:1003C0000045005A0000000403090409028D0005DD
-:1003D0000100A0FA09040000010301010009211134
-:1003E000010001223F000705810308000A090401FA
-:1003F000000103010200092111010001224D000743
-:1004000005820308000A0904020001030000000934
-:1004100021110100012236000705830308000A09A3
-:100420000403000203000000092111010001222041
-:1004300000070584032000010705040320000109CB
-:100440000404000103000000092111010001223908
-:1004500000070585031000011201100100000008CB
-:10046000EDFE071301000102000105010906A101CB
-:10047000050719E029E71500250195087501810296
-:100480000508190129059505750191029501750366
-:100490009101050719002977150025019578750147
-:1004A0008102C00631FF0974A1010975150025FFFD
-:1004B0009520750881020976150025FF952075089D
-:1004C0009102C005010980A101850216010026B72D
-:1004D000001A01002AB700751095018100C0050CB3
-:1004E0000901A1018503160100269C021A01002AB8
-:1004F0009C02751095018100C005010902A1010946
-:1005000001A10005091901290515002501950575A9
-:100510000181029501750381010501093009311539
-:1005200081257F95027508810609381581257F95FB
-:100530000175088106050C0A38021581257F950191
-:1005400075088106C0C005010906A101050719E06B
-:1005500029E71500250195087501810295017508A7
-:10056000810105081901290595057501910295017B
-:10057000750391010507190029FF150025FF950650
-:1005800075088100C00A002530325820006B65795B
-:10059000626F6172645F7265706F72743A20000AF4
-:1005A0000025303258006B6579626F6172645F7349
-:1005B00065745F6C65643A200064656C5F6B657997
-:1005C0005F6269743A2063616E27742064656C3AD7
-:1005D00020253032580A006164645F6B65795F6280
-:1005E00069743A2063616E2774206164643A20253F
-:1005F0003032580A00646F6E652E0A00626F6F67B2
-:100600006D61676963207363616E3A202E2E2E2020
-:1006100000290A002575002F002575005D2800259A
-:10062000640020002564002000256400200025646B
-:10063000007C0025303258006D6F7573656B6579ED
-:10064000205B62746E7C782079207620685D287249
-:1006500065702F61636C293A205B006D6B5F776872
-:1006600065656C5F74696D655F746F5F6D6178203F
-:100670003D2025640A006D6B5F776865656C5F6D72
-:1006800061785F7370656564203D2025640A006DA4
-:100690006B5F74696D655F746F5F6D6178203D207D
-:1006A00025640A006D6B5F6D61785F7370656564CA
-:1006B000203D2025640A006D6B5F696E746572765B
-:1006C000616C203D2025640A006D6B5F64656C6180
-:1006D00079203D2025640A006D6B5F776865656C45
-:1006E0005F74696D655F746F5F6D6178203D202573
-:1006F000640A006D6B5F776865656C5F6D61785F3C
-:100700007370656564203D2025640A006D6B5F741D
-:10071000696D655F746F5F6D6178203D2025640AA7
-:10072000006D6B5F6D61785F7370656564203D205F
-:1007300025640A006D6B5F696E74657276616C206A
-:100740003D2025640A006D6B5F64656C6179203D16
-:100750002025640A000A00257500363A207768656E
-:10076000656C5F74696D655F746F5F6D61783A2069
-:10077000000A00257500353A20776865656C5F6D65
-:1007800061785F73706565643A20000A0025750022
-:10079000343A2074696D655F746F5F6D61783A20DB
-:1007A000000A00257500333A206D61785F7370652B
-:1007B00065643A20000A00257500323A20696E749B
-:1007C000657276616C286D73293A20000A002575E0
-:1007D00000313A2064656C6179282A31306D7329C3
-:1007E0003A20000A092D2056616C756573202D0A88
-:1007F000004D3E004D25643E20003F00736574208F
-:1008000064656661756C740A00433E200077686514
-:1008100072652064656C74613A20637572736F72DF
-:100820003D25642C20776865656C3D25640A536519
-:100830006520687474703A2F2F656E2E77696B6926
-:1008400070656469612E6F72672F77696B692F4DD0
-:100850006F7573655F6B6579730A000A092D204D0A
-:100860006F7573656B6579202D0A4553432F713A77
-:1008700009717569740A313A0964656C6179282ACD
-:1008800031306D73290A323A09696E746572766186
-:100890006C286D73290A333A096D61785F7370654E
-:1008A00065640A343A0974696D655F746F5F6D61E0
-:1008B000780A353A09776865656C5F6D61785F73B2
-:1008C000706565640A363A09776865656C5F7469B6
-:1008D0006D655F746F5F6D61780A0A703A097072B6
-:1008E000696E742076616C7565730A643A09736584
-:1008F000742064656661756C74730A75703A092BAF
-:10090000310A646F776E3A092D310A706775703A53
-:10091000092B31300A7067646F776E3A092D3130D8
-:100920000A0A7370656564203D2064656C746120FB
-:100930002A206D61785F7370656564202A202872B3
-:100940006570656174202F2074696D655F746F5FD9
-:100950006D6178290A003F004D3E2000433E200093
-:100960004C25640A000A092D20436F6E736F6C6575
-:10097000202D0A4553432F713A09717569740A6D28
-:100980003A096D6F7573656B65790A000A092D2048
-:100990004D61676963202D0A643A09646562756771
-:1009A0000A783A096465627567206D6174726978C6
-:1009B0000A6B3A096465627567206B6579626F61DD
-:1009C00072640A6D3A096465627567206D6F7573AC
-:1009D000650A763A0976657273696F6E0A733A0929
-:1009E0007374617475730A633A09636F6E736F6C25
-:1009F00065206D6F64650A302D343A096C61796544
-:100A000072302D34284631302D4634290A50617514
-:100A1000733A09626F6F746C6F616465720A653A4C
-:100A200009656570726F6D0A6E3A094E4B524F0A36
-:100A30007A3A09736C656570204C4544207465737F
-:100A4000740A000A002575002E6E6B726F3A200042
-:100A50000A002575002E737761705F6261636B73A6
-:100A60006C6173685F6261636B73706163653A2088
-:100A7000000A002575002E737761705F67726176DA
-:100A8000655F6573633A20000A002575002E6E6F5E
-:100A90005F6775693A20000A002575002E7377613B
-:100AA000705F72616C745F726775693A20000A004A
-:100AB0002575002E737761705F6C616C745F6C6775
-:100AC00075693A20000A002575002E636170736C09
-:100AD0006F636B5F746F5F636F6E74726F6C3A20DD
-:100AE000000A002575002E737761705F636F6E7466
-:100AF000726F6C5F636170736C6F636B3A20000A96
-:100B00000025303258006B65796D61705F636F6EE0
-:100B10006669672E7261773A20000A002575002EFB
-:100B20006D6F7573653A20000A002575002E6B65A0
-:100B300079626F6172643A20000A002575002E6D9B
-:100B400061747269783A20000A002575002E656E7E
-:100B500061626C653A20000A0025303258006465F5
-:100B60006275675F636F6E6669672E7261773A20A0
-:100B7000000A0025750064656661756C745F6C61C0
-:100B80007965723A20003F004E4B524F3A206F6613
-:100B9000660A004E4B524F3A206F6E0A0074696D20
-:100BA00065725F636F756E743A202530346C580A35
-:100BB000006B6579626F6172645F6E6B726F3A2071
-:100BC00025580A006B6579626F6172645F69646CB5
-:100BD000653A2025580A006B6579626F6172645F1F
-:100BE00070726F746F636F6C3A2025580A00686FDB
-:100BF00073745F6B6579626F6172645F6C65647357
-:100C000028293A2025580A000A092D2053746174B6
-:100C10007573202D0A004743433A20342E382E3274
-:100C2000204156522D4C4942433A20312E382E3025
-:100C3000204156525F415243483A20617672350A4C
-:100C4000004F5054494F4E533A204C554641204294
-:100C50004F4F544D41474943204D4F5553454B4508
-:100C6000592045585452414B455920434F4E534FFC
-:100C70004C4520434F4D4D414E44204E4B524F204A
-:100C80003531320A004255494C443A2031656530CD
-:100C9000383037202831353A33363A3539204665F1
-:100CA000622020312032303136290A005649443A38
-:100CB00020307846454544284572676F446F782058
-:100CC000455A29205049443A20307831333037286A
-:100CD0004572676F446F7820455A29205645523A2D
-:100CE000203078303030310A00444553433A207484
-:100CF0002E6D2E6B2E206B6579626F61726420669B
-:100D000069726D7761726520666F72204572676FD8
-:100D1000646F780A000A092D2056657273696F6E38
-:100D2000202D0A000A6D6F7573653A206F66660A9A
-:100D3000000A6D6F7573653A206F6E0A000A6B6565
-:100D400079626F6172643A206F66660A000A6B65A9
-:100D500079626F6172643A206F6E0A000A6D617485
-:100D60007269783A206F66660A000A6D617472696A
-:100D7000783A206F6E0A000A64656275673A206FE0
-:100D80006E0A000A64656275673A206F66660A003B
-:100D90000A0A626F6F746C6F616465722E2E2E206A
-:100DA00000433E20006565636F6E6669673A0A001E
-:100DB000536C656570204C454420746573740A005B
-:100DC0000000000000000000000000010204060A0C
-:100DD0000F17202C3A4A5D71879DB3C7DAE9F5FCFD
-:100DE000FFFCF5E9DAC7B39D87715D4A3A2C2017FD
-:100DF0000F0A0604020100000000000000000000CD
-:100E000011241FBECFEFDAE0DEBFCDBF04B603FE74
-:100E100024C08091F9019091FA01A091FB01B09159
-:100E2000FC018730904BA740B04BB9F41092F90108
-:100E30001092FA011092FB011092FC0114BE84B7CB
-:100E4000877F84BF88E10FB6F8948093600010928A
-:100E500060000FBEE0E0FFE3099511E0A0E0B1E023
-:100E6000EAEAFBE502C005900D92AA33B107D9F773
-:100E700011E0AAE3B1E001C01D92A93FB107E1F77B
-:100E80000E94950F0C94D32D0C940000FF93EF93C8
-:100E9000E0913A01F0913B01309709F00995EF910B
-:100EA000FF910895FC018591803011F0EFDFFBCFB9
-:100EB0000895FF27E0E230E247FF0CC0419597FF1D
-:100EC00009C0EDE26095709580959095611D711D4A
-:100ED000811D911D27FF02C0219530E350E2AA2712
-:100EE000660F771F881F991FAA1FA41710F0A41B55
-:100EF00063955A95A9F7AA3008F0A95FA05DAF9352
-:100F0000F395611571058105910541F7ED3211F4F5
-:100F1000EF93F395F21718F43F93F395FBCF8F916E
-:100F2000B5DFFA95E1F70895E991F991859180305F
-:100F300021F0853219F0AADFF9CF089520E0E89476
-:100F400055915532C1F3503311F4689455915A3389
-:100F500048F4505390F3220F022E220F220F200D3F
-:100F6000250FF4CF0EF4219589919991533619F3F9
-:100F7000533729F1533559F1BC0188279927E89453
-:100F80005C3621F48991999168945591543639F4DD
-:100F900046EF7EF077FF0DC08FEF9FEF0AC0553709
-:100FA0004AE039F0583540E121F0523642E009F08C
-:100FB0000895FF93EF937DDFEF91FF91B7CFFF93FC
-:100FC000EF93FC0181918030B9F360DFFBCFFF9399
-:100FD000EF9368DFF1CFDF93CF93CDB7DEB72596E0
-:100FE000A3DFCF91DF91089561110BC0FC018281D5
-:100FF000882321F085EE0E94631603C085EE0E94CF
-:101000002B1780E090E0089508956091BC017091E5
-:10101000BD018091BE019091BF010E940E215698A2
-:101020005E9825982D9826982E9827982F9881308D
-:1010300019F0823021F00895259A2D9A0895269A64
-:101040002E9A089585E098E0892B11F00E940508FA
-:1010500080E090E0089556985E9825982D982698FF
-:101060002E9827982F988FEF90E090938900809387
-:10107000880090938B0080938A0090938D008093DA
-:101080008C00259A2D9A2FEF80E792E02150804026
-:101090009040E1F700C00000269A2E9A2FEF80E7DB
-:1010A00092E0215080409040E1F700C00000279A74
-:1010B0002F9A2FEF80E792E0215080409040E1F797
-:1010C00000C0000025982D982FEF80E792E0215076
-:1010D00080409040E1F700C0000026982E982FEF46
-:1010E00080E792E0215080409040E1F700C000008E
-:1010F00027982F9856985E9825982D9826982E9880
-:1011000027982F98089589EA8093800089E080933A
-:10111000810024982C983F988AB18F748AB96E9870
-:10112000479A8BB1806B8BB9769A0E942B0884E02A
-:1011300098E0892B11F00E94040880E090E0089567
-:1011400080E28093000180913C0181110EC00E94D9
-:10115000EF0881E080933C012FEF83ED90E3215075
-:1011600080409040E1F700C0000080E40E94F50854
-:101170008093000181112EC00E941F0980930001FD
-:10118000811128C00E941F0980930001811122C093
-:101190008FE30E941F098093000181111BC00E94F0
-:1011A000170980E40E94F50880930001811112C0A4
-:1011B0008CE00E941F098093000181110BC00E94E6
-:1011C0001F0980930001811105C08FE30E941F0950
-:1011D000809300010E9417098091000108951092E8
-:1011E000B9008AE08093B800089594EA9093BC0017
-:1011F0009091BC0097FFFCCF9091B900987F9830F8
-:1012000021F0903111F081E008958093BB0084E8D3
-:101210008093BC008091BC0087FFFCCF8091B90017
-:10122000887F883111F0803471F780E0089584E977
-:101230008093BC008091BC0084FDFCCF0895809316
-:10124000BB0084E88093BC008091BC0087FFFCCF8A
-:101250009091B900987F81E0983209F480E0089578
-:1012600084E88093BC008091BC0087FFFCCF809114
-:10127000BB00089580910001811115C080E40E9497
-:10128000F5088093000181110CC082E10E941F09C2
-:1012900080930001811105C08FEF0E941F09809388
-:1012A00000010E94170984B1807F84B985B1807FD5
-:1012B00085B98AB1837F8AB98BB1837F8BB93E9818
-:1012C000469808950E94A008809300010E943A0960
-:1012D00080B38C7080BB81B3836F81BBECE4F1E0A1
-:1012E000AEE3B1E011921D9281E0EA35F807D1F743
-:1012F00083E898E0892B11F00C94830808959F925D
-:10130000AF92BF92CF92DF92EF92FF920F931F9313
-:10131000CF93DF93809100018823E1F080913D011C
-:101320008F5F80933D01811115C082E493E00E949C
-:1013300052070E94A00880930001882329F088E2C8
-:1013400093E00E94520706C084E193E00E94520796
-:101350000E942B080EE311E0C0E0D0E0BB24B39460
-:1013600082E0A82ECC24C394D12C25E0E22E23E0E9
-:10137000F22EC73000F580910001811162C080E437
-:101380000E94F50880930001811112C082E10E9441
-:101390001F098093000181110BC0C6010C2E01C0F2
-:1013A000880F0A94EAF780950E941F098093000134
-:1013B0000E94170946C0CA30A1F028F4C83059F07D
-:1013C000C93061F005C0CC3089F070F0CD3089F0C3
-:1013D000209A289810C0219A29980DC0229A2A98FC
-:1013E0000AC0239A2B9807C0529A01C0539A5B985F
-:1013F00002C03E9A4698E0EAEA95F1F78FB17999F2
-:1014000085C092E081708B25892B7C9B02C090E087
-:1014100001C094E0892B7D9B02C090E001C098E060
-:10142000892B7E9B02C090E001C090E1892B9FB187
-:101430009095991F9927991F9295990F907E892BC6
-:1014400010C080910001811176C080E40E94F508EF
-:1014500080930001882309F45BC0912C0E94170936
-:10146000892DF8019081981739F1808380910101CD
-:10147000882301F18091D70180FF04C08AE093E0C6
-:101480000E9452078091D70180FF0CC0809101011A
-:101490001F928F93FF92EF920E94EB070F900F9095
-:1014A0000F900F908091D70180FF04C083E093E0FC
-:1014B0000E945207A09201010E943A0921960F5FF3
-:1014C0001F4FCE30D10509F054CF80910101882300
-:1014D000B1F0815080930101882339F08FE99FE0BA
-:1014E0000197F1F700C000000AC0ACE4B1E0EEE300
-:1014F000F1E081918D9391E0EC34F907D1F782E22C
-:1015000098E0892BD1F00E94220817C090E07ACF92
-:1015100083E10E941F098093000181119ECF81E425
-:101520000E94F50880930001811197CF0E94300935
-:10153000982E909493CF80E094CF81E0DF91CF916B
-:101540001F910F91FF90EF90DF90CF90BF90AF90E1
-:101550009F900895E82FF0E0E45BFE4F80810895AE
-:10156000CF92DF92EF92FF920F931F93CF93DF936F
-:101570008CEE92E00E9452073CE4E32E31E0F32E21
-:10158000C0E0D0E047EEC42E42E0D42E0EED12E0D3
-:10159000DF93CF93DF92CF920E94EB0784EE92E02D
-:1015A0000E945207F70181917F0190E00E94732110
-:1015B0009F938F931F930F930E94EB078CED92E004
-:1015C0000E94520721968DB79EB708960FB6F894E1
-:1015D0009EBF0FBE8DBFCE30D105D1F6DF91CF912A
-:1015E0001F910F91FF90EF90DF90CF9008958B3B6C
-:1015F000910578F4883A910540F5853A9105D0F443
-:101600008430910508F0B1C08130910509F4ADC076
-:101610006BC0803E910508F467C0883E910508F4D0
-:10162000A4C09C01205F31092031310508F05CC065
-:1016300090650895853A910509F459C0863A910557
-:1016400009F458C083E890E40895883A910509F4B4
-:1016500054C0893A910509F453C08A3A910509F4B6
-:1016600052C08B3A910509F451C08C3A910509F4A6
-:1016700050C08D3A910509F44FC0803B910509F4A3
-:101680004EC08E3A910509F44DC08F3A910509F488
-:101690004CC0813B910509F44BC0823B910509F494
-:1016A0004AC0833B910509F449C0843B910509F484
-:1016B00048C0853B910509F447C0863B910509F474
-:1016C00046C0873B910509F445C0883B910509F464
-:1016D00044C0893B910509F443C08A3B910509F058
-:1016E00042C08AE296E4089580E090E0089581E89F
-:1016F00090E4089582E890E4089582EE94E40895D9
-:1017000089EE94E408958AEE94E4089585EB94E4D8
-:10171000089586EB94E4089587EB94E408958CECA7
-:1017200094E408958DEC94E4089583E895E4089595
-:101730008AE895E4089582E995E4089584E995E4BA
-:10174000089581E296E4089583E296E4089584E2A0
-:1017500096E4089585E296E4089586E296E4089575
-:1017600087E296E4089580E094E40895089596E071
-:10177000799FF001112494E5899FE00DF11D11245A
-:10178000E60FF11DEE0FFF1FEC51FF4F8591949175
-:101790000895880F991F805A9040FC01859194917B
-:1017A0000895880F991F80529F4FFC018591949155
-:1017B000089526E0729FF001112444E5849FE00D16
-:1017C000F11D1124E60FF11DEE0FFF1FEC51FF4F2D
-:1017D00025913491C9019A9581159F4110F4C90151
-:1017E0000895C90190528115904128F4C9019F7054
-:1017F0000E94D10B0895C90190538115904120F4A6
-:10180000C9019927906C0895211580E5380769F47E
-:101810000E949C1A9FEF24E34CE0915020404040EE
-:10182000E1F700C000000C943322213080E5380736
-:1018300051F48CE593E00E9452078091D7018 |