adds support for GH60 Satan keyboard (#407)

* adds support for GH60 Satan keyboard

ANSI 125 layout, capslock and backlight implemented, support for
WS2812LED strip included

* added Phantom and GH60 Satan to travis
pull/408/head
TerryMathews 9 years ago committed by Jack Humbert
parent 498455403e
commit 1c5a6733ff

@ -21,9 +21,11 @@ env:
- KEYBOARD=hhkb - KEYBOARD=hhkb
- KEYBOARD=jd45 - KEYBOARD=jd45
- KEYBOARD=kc60 - KEYBOARD=kc60
- KEYBOARD=phantom
- KEYBOARD=planck - KEYBOARD=planck
- KEYBOARD=preonic - KEYBOARD=preonic
- KEYBOARD=retro_refit - KEYBOARD=retro_refit
- KEYBOARD=satan
- KEYBOARD=sixkeyboard - KEYBOARD=sixkeyboard
script: script:

@ -0,0 +1,115 @@
#----------------------------------------------------------------------------
# On command line:
#
# make all = Make software.
#
# make clean = Clean out built project files.
#
# make coff = Convert ELF to AVR COFF.
#
# make extcoff = Convert ELF to AVR Extended COFF.
#
# make program = Download the hex file to the device.
# Please customize your programmer settings(PROGRAM_CMD)
#
# make teensy = Download the hex file to the device, using teensy_loader_cli.
# (must have teensy_loader_cli installed).
#
# make dfu = Download the hex file to the device, using dfu-programmer (must
# have dfu-programmer installed).
#
# make flip = Download the hex file to the device, using Atmel FLIP (must
# have Atmel FLIP installed).
#
# make dfu-ee = Download the eeprom file to the device, using dfu-programmer
# (must have dfu-programmer installed).
#
# make flip-ee = Download the eeprom file to the device, using Atmel FLIP
# (must have Atmel FLIP installed).
#
# make debug = Start either simulavr or avarice as specified for debugging,
# with avr-gdb or avr-insight as the front end for debugging.
#
# make filename.s = Just compile filename.c into the assembler code only.
#
# make filename.i = Create a preprocessed source file for use in submitting
# bug reports to the GCC project.
#
# To rebuild project do "make clean" then "make all".
#----------------------------------------------------------------------------
SRC = led.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
# Build Options
# comment out to disable the options.
#
BOOTMAGIC_ENABLE ?= yes # Virtual DIP switch configuration(+1000)
MOUSEKEY_ENABLE ?= no # 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
NKRO_ENABLE ?= yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
RGBLIGHT_ENABLE ?= yes # Enable keyboard underlight functionality (+4870)
BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality (+1150)
MIDI_ENABLE ?= no # MIDI controls
AUDIO_ENABLE ?= no
UNICODE_ENABLE ?= no # Unicode
BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID
#ifdef BACKLIGHT_ENABLE
SRC := backlight.c $(SRC)
#endif
ifndef QUANTUM_DIR
include ../../Makefile
endif

@ -0,0 +1,24 @@
#include <avr/io.h>
#include "backlight.h"
#include "print.h"
void init_backlight_pin(void) {
print("init_backlight_pin()\n");
// Set our LED pins as output
DDRB |= (1<<6);
// Set our LED pins low
PORTB &= ~(1<<6);
}
void backlight_set(uint8_t level) {
if ( level == 0 ) {
// Turn off light
PORTB |= (1<<6);
} else {
// Turn on light
PORTB &= ~(1<<6);
}
}

@ -0,0 +1,92 @@
/*
Copyright 2012 Jun Wako <wakojun@gmail.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef CONFIG_H
#define CONFIG_H
#include "config_common.h"
/* USB Device descriptor parameter */
#define VENDOR_ID 0xFEED
#define PRODUCT_ID 0x6060
#define DEVICE_VER 0x0003
#define MANUFACTURER SATAN
#define PRODUCT GH60
#define DESCRIPTION QMK keyboard firmware for Satan GH60 with WS2812 support
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
// ROWS: Top to bottom, COLS: Left to right
#define MATRIX_ROW_PINS { D0, D1, D2, D3, D5 }
#define MATRIX_COL_PINS { F0, F1, E6, C7, C6, B7, D4, B1, B0, B5, B4, D7, D6, B3 }
#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
/* define if matrix has ghost */
//#define MATRIX_HAS_GHOST
/* Set 0 if debouncing isn't needed */
#define DEBOUNCING_DELAY 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)) \
)
/* Backlight configuration
*/
#define BACKLIGHT_LEVELS 1
/* Underlight configuration
*/
#define ws2812_PORTREG PORTE
#define ws2812_DDRREG DDRE
#define ws2812_pin 2
#define RGBLED_NUM 8 // Number of LEDs
#define RGBLIGHT_HUE_STEP 10
#define RGBLIGHT_SAT_STEP 17
#define RGBLIGHT_VAL_STEP 17
/*
* Feature disable options
* These options are also useful to firmware size reduction.
*/
/* 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

Binary file not shown.

After

Width:  |  Height:  |  Size: 137 KiB

@ -0,0 +1,1530 @@
:100000000C9465070C94A9070C94A9070C94A907F4
:100010000C94A9070C94A9070C94A9070C94A907A0
:100020000C94A9070C94A9070C94B0190C94821A8B
:100030000C94A3280C94A9070C94A9070C94A90765
:100040000C94A9070C94A9070C94A9070C94A90770
:100050000C94A9070C940A290C94A9070C94A907DD
:100060000C94A9070C94A9070C94A9070C94A90750
:100070000C94A9070C94A9070C94A9070C94A90740
:100080000C9451140C94A9070C94A9070C94A9077B
:100090000C94A9070C94A9070C94A9070C94A90720
:1000A0000C94A9070C94A9070C94A9078F08AE0813
:1000B000DF08B508BC08C308CA08D108D808E71A81
:1000C000091BF41B091BF41B4B1B6E1BF41BC31BEE
:1000D000D61B141F141F431F431F831FE920E92051
:1000E000E920A51FE9204C204C20B620BE20E920A5
:1000F000E4205920592059205920592059205920AD
:100100005920592059205920592059205920592027
:10011000592069207920802087209120696E697498
:100120005F6261636B6C696768745F70696E2829D0
:100130000A0000F001F002F003F004F005F006F010
:1001400007F008F000201E001F0020002100220000
:10015000230024002500260027002D002E002A0061
:100160002B0014001A000800150017001C001800CE
:100170000C00120013002F00300031003900040081
:100180001600070009000A000B000D000E000F000A
:100190003300340000002800E10000001D001B00B7
:1001A0000600190005001100100036003700380065
:1001B0000000E500E000E300E200000000002C0089
:1001C0000000000000000000E600E7000152E4002B
:1001D00035000100010001000100010001000100E3
:1001E00001000100010001000100005001000100B8
:1001F00001000100010001000100010001000100F7
:100200000100805081508250010001000100010076
:1002100001000100010001000100010001000100D6
:100220000000010001000000012002200320042042
:100230000520062007200820010001000000010021
:1002400001000100010000000000010000000000AA
:100250000000000001000100010001000A444542C5
:1002600055473A20656E61626C65642E0A005374CE
:10027000617465206F6620726F772025583A2025BB
:10028000303136620A0048756D616E2D72656164A9
:1002900061626C65206D6174726978207374617439
:1002A000653A0D0A004465626F756E63696E67207A
:1002B00064656C61792072656D61696E696E673A1B
:1002C0002025580A0054494D455233206469736112
:1002D000626C65642E0A0054494D45523320656EA8
:1002E00061626C65642E0A007267626C696768748B
:1002F0002073657420687376205B454550524F4DDE
:100300005D3A2025752C25752C25750A00726762CB
:100310006C6967687420746F67676C653A207267F0
:10032000626C696768745F636F6E6669672E656E7D
:1003300061626C65203D2025750A007267626C69F8
:10034000676874206D6F64653A2025750A007267CE
:10035000626C696768745F696E6974207267626C49
:10036000696768745F636F6E6669672E6D6F646539
:10037000203D20302E2057726974652064656661C7
:10038000756C742076616C75657320746F204545BB
:1003900050524F4D2E0A007267626C696768745F35
:1003A000696E6974206565636F6E6669672069733D
:1003B000206E6F7420656E61626C65642E0A007237
:1003C00067626C696768745F696E697420737461D1
:1003D0007274210A007267626C696768745F696E83
:1003E00069742063616C6C65642E0A007267626CCC
:1003F000696768745F636F6E6669672E76616C20EB
:100400003D2025640A007267626C696768745F63E7
:100410006F6E6669672E736174203D2025640A0043
:100420007267626C696768745F636F6E6669672E76
:10043000687565203D2025640A007267686C6967ED
:1004400068745F636F6E6669672E6D6F6465203DCB
:100450002025640A007267626C696768745F636F65
:100460006E6669672E656E61626C65203D2025644D
:100470000A007267626C696768745F636F6E6669B1
:1004800067206570726F6D0A006565636F6E6669DF
:10049000675F7570646174655F7267626C696768D5
:1004A000745F64656661756C740A0064321464324A
:1004B00014783C1E1E140A05000000000101010210
:1004C00002030405050607090A0B0C0E0F1112148E
:1004D0001517191B1D1F212325282A2C2F313436CF
:1004E000393B3E414346494C4F5255585A5D616431
:1004F000676A6D707376797C7F8386898C8F92951D
:10050000989B9EA2A5A7AAADB0B3B6B9BCBEC1C404
:10051000C6C9CBCED0D3D5D7DADCDEE0E2E4E6E85C
:10052000EAEBEDEEF0F1F3F4F5F6F8F9FAFAFBFC8C
:10053000FDFDFEFEFEFFFFFFFFFFFFFFFEFEFEFDD7
:10054000FDFCFBFAFAF9F8F6F5F4F3F1F0EEEDEB59
:10055000EAE8E6E4E2E0DEDCDAD7D5D3D0CECBC9F8
:10056000C6C4C1BEBCB9B6B3B0ADAAA7A5A29E9B76
:100570009895928F8C898683807C797673706D6A6A
:100580006764615D5A5855524F4C494643413E3B62
:10059000393634312F2C2A282523211F1D1B1917EA
:1005A000151412110F0E0C0B0A090706050504039A
:1005B0000202010101000000000101020202020228
:1005C00002030303030303030303030303030304FB
:1005D00004040404040404040404040505050505D6
:1005E00005050505050606060606060606070707AD
:1005F0000707070708080808080809090909090979
:100600000A0A0A0A0A0B0B0B0B0B0C0C0C0C0C0D38
:100610000D0D0D0E0E0E0E0F0F0F101010101111EC
:10062000111212121313131414141515161616178B
:100630001718181919191A1A1B1B1C1C1D1D1E1E10
:100640001F20202121222323242425262627282871
:10065000292A2B2B2C2D2E2F3030313233343536A6
:100660003738393A3B3C3D3E3F404142444546479E
:10067000494A4B4C4E4F5152535556585A5B5D5E4A
:100680006062636567696B6D6E70727476797B7D8D
:100690007F818486888B8D909295979A9D9FA2A545
:1006A000A8ABAEB1B4B7BABEC1C4C8CBCFD3D6DA4B
:1006B000DEE2E6EAEEF2F8FF5B735D004B6579621D
:1006C0006F6172642073746172742E0A005B575DEF
:1006D000005B535D005B525D005B445D005B435D0E
:1006E000000A03470048003600300000000C0353A6
:1006F000004100540041004E0000000403090409B9
:10070000027400040100A0FA0904000001030101C1
:1007100000092111010001224000070581030800A2
:100720000A09040100010300000009211101000170
:100730002236000705820308000A090402000203AA
:100740000000000921110100012220000705830398
:100750002000010705030320000109040300010331
:10076000000000092111010001223900070584035E
:100770001000011201100100000008EDFE6060038E
:10078000000102000105010906A101050719E02980
:10079000E715002501950875018102050819012951
:1007A00005950575019102950175039101050719DC
:1007B00000297715002501957875018102C0063161
:1007C000FF0974A1010975150025FF9520750881A1
:1007D000020976150025FF952075089102C00501D4
:1007E0000980A101850216010026B7001A01002A1E
:1007F000B700751095018100C0050C0901A10185A4
:1008000003160100269C021A01002A9C027510950D
:10081000018100C005010906A101050719E029E7CA
:100820001500250195087501810295017508810162
:1008300005081901290595057501910295017503B2
:1008400091010507190029FF150026FF009506757F
:10085000088100C00A002530325820006B6579629B
:100860006F6172645F7265706F72743A20004B65DD
:1008700079626F617264204C4544732073746174B3
:10088000653A2025780A0064656C5F6B65795F6264
:1008900069743A2063616E27742064656C3A202580
:1008A0003032580A006164645F6B65795F62697415
:1008B0003A2063616E2774206164643A20253032E7
:1008C000580A00646F6E652E0A00626F6F676D6173
:1008D000676963207363616E3A202E2E2E20003FDD
:1008E00000433E20004C25640A0074696D65725F08
:1008F000636F756E743A202530346C580A006B654E
:1009000079626F6172645F6E6B726F3A2025580A6C
:10091000006B6579626F6172645F69646C653A202F
:1009200025580A006B6579626F6172645F70726F3F
:10093000746F636F6C3A2025580A00686F73745F98
:100940006B6579626F6172645F6C65647328293AC4
:100950002025580A000A092D2053746174757320EC
:100960002D0A004743433A20342E382E3220415678
:10097000522D4C4942433A20312E382E3073766E38
:10098000204156525F415243483A20617672350AFF
:10099000004F5054494F4E533A204C554641204247
:1009A0004F4F544D414749432045585452414B45C0
:1009B0005920434F4E534F4C4520434F4D4D414ED0
:1009C00044204E4B524F20343039360A00425549AC
:1009D0004C443A20756E6B6E6F776E202832313A38
:1009E00032353A3338204A756E2031332032303177
:1009F00036290A005649443A20307846454544286D
:100A0000534154414E29205049443A2030783630E1
:100A10003630284748363029205645523A2030781B
:100A2000303030330A00444553433A20514D4B2077
:100A30006B6579626F617264206669726D7761724D
:100A40006520666F7220536174616E2047483630AE
:100A500020776974682057533238313220737570AB
:100A6000706F72740A000A092D2056657273696FDF
:100A70006E202D0A000A092D20436F6E736F6C657E
:100A8000202D0A4553432F713A09717569740A0084
:100A90000A092D204D61676963202D0A443A0944F3
:100AA00065627567204D65737361676520546F6774
:100AB000676C650A583A094D61747269782044651B
:100AC000627567204D6F646520546F67676C6520A1
:100AD0002D2053686F77206B65797072657373652D
:100AE0007320696E206D6174726978206772696421
:100AF0000A4B3A094B6579626F6172642044656202
:100B0000756720546F67676C65202D2053686F7779
:100B1000206B65797072657373207265706F727483
:100B20000A4D3A094465627567204D6F75736520FB
:100B3000546F67676C650A563A0956657273696F38
:100B40006E0A533A095374617475730A433A094142
:100B50006374697661746520436F6E736F6C652092
:100B60004D6F64650A46312D4631303A0953776935
:100B700074636820746F204C6179657220302D3960
:100B80002028463130203D204C30290A302D393A7A
:100B90000953776974636820746F204C61796572BA
:100BA00020302D390A4553433A09537769746368F5
:100BB00020746F204C6179657220302028616C743C
:100BC00065726E617465206B65792031290A475220
:100BD0004156453A0953776974636820746F204C15
:100BE0006179657220302028616C7465726E617461
:100BF00065206B65792032290A50415553453A09E1
:100C00004A756D7020746F20426F6F746C6F6164F1
:100C1000657220285265736574290A453A09507235
:100C2000696E7420454550524F4D20536574746968
:100C30006E67730A4E3A094E4B524F20546F6767E6
:100C40006C650A000A002575002E6C6576656C3AA5
:100C500020000A002575002E656E61626C653A20E1
:100C6000000A0025303258006261636B6C69676866
:100C7000745F636F6E6669672E7261773A20000A4F
:100C8000002575002E6E6B726F3A20000A002575E4
:100C9000002E737761705F6261636B736C61736860
:100CA0005F6261636B73706163653A20000A0025BF
:100CB00075002E737761705F67726176655F65732B
:100CC000633A20000A002575002E6E6F5F67756914
:100CD0003A20000A002575002E737761705F7261FB
:100CE0006C745F726775693A20000A002575002EE2
:100CF000737761705F6C616C745F6C6775693A20C3
:100D0000000A002575002E636170736C6F636B5F62
:100D1000746F5F636F6E74726F6C3A20000A002507
:100D200075002E737761705F636F6E74726F6C5FA6
:100D3000636170736C6F636B3A20000A0025303278
:100D400058006B65796D61705F636F6E6669672EC1
:100D50007261773A20000A002575002E6D6F757359
:100D6000653A20000A002575002E6B6579626F6177
:100D700072643A20000A002575002E6D6174726954
:100D8000783A20000A002575002E656E61626C6558
:100D90003A20000A00253032580064656275675FAA
:100DA000636F6E6669672E7261773A20000A0025CC
:100DB000750064656661756C745F6C617965723A23
:100DC00020003F004E4B524F3A206F66660A004E9D
:100DD0004B524F3A206F6E0A000A6D6F7573653A79
:100DE000206F66660A000A6D6F7573653A206F6E34
:100DF0000A000A6B6579626F6172643A206F6666F9
:100E00000A000A6B6579626F6172643A206F6E0A3C
:100E1000000A6D61747269783A206F66660A000A8A
:100E20006D61747269783A206F6E0A000A646562B7
:100E300075673A206F66660A000A64656275673AEC
:100E4000206F6E0A000A0A4A756D70696E67207419
:100E50006F20626F6F746C6F616465722E2E2E202E
:100E600000433E20006565636F6E6669673A0A005D
:100E70006261636B6C6967687420737465703A2093
:100E800025750A006261636B6C6967687420746F12
:100E900067676C653A2025750A006261636B6C694F
:100EA0006768742064656372656173653A202575AF
:100EB0000A006261636B6C6967687420696E6372B3
:100EC000656173653A2025750A0011241FBECFEFB6
:100ED000DAE0DEBFCDBF04B603FE24C080911F025E
:100EE00090912002A0912102B09122028730904B74
:100EF000A740B04BB9F410921F021092200210923A
:100F000021021092220214BE84B7877F84BF88E139
:100F10000FB6F89480936000109260000FBEE0E07E
:100F2000F8E3099511E0A0E0B1E0E4E4FFE502C0D8
:100F300005900D92A833B107D9F712E0A8E3B1E00C
:100F400001C01D92AF31B107E1F70E94F0160C9479
:100F5000A02F0C940000FF93EF93E0913801F091E3
:100F60003901309709F00995EF91FF910895FC013F
:100F70008591803011F0EFDFFBCF0895FF27E0E28D
:100F800030E247FF0CC0419597FF09C0EDE2609544
:100F9000709580959095611D711D811D911D27FF94
:100FA00002C0219530E350E2AA27660F771F881F01
:100FB000991FAA1FA41710F0A41B63955A95A9F7AF
:100FC000AA3008F0A95FA05DAF93F3956115710594
:100FD0008105910541F7ED3211F4EF93F395F21786
:100FE00018F43F93F395FBCF8F91B5DFFA95E1F7B6
:100FF0000895E991F9918591803021F0853219F0B9
:10100000AADFF9CF089520E0E89455915532C1F355
:10101000503311F4689455915A3348F4505390F377
:10102000220F022E220F220F200D250FF4CF0EF4D7
:10103000219589919991533619F3533729F15335F5
:1010400059F1BC0188279927E8945C3621F48991ED
:10105000999168945591543639F446EF7EF077FFB4
:101060000DC08FEF9FEF0AC055374AE039F0583571
:1010700040E121F0523642E009F00895FF93EF93EA
:101080007DDFEF91FF91B7CFFF93EF93FC0181914B
:101090008030B9F360DFFBCFFF93EF9368DFF1CFD0
:1010A000DF93CF93CDB7DEB72596A3DFCF91DF9146
:1010B00008958CE191E00E94B707269A2E98089532
:1010C000811102C02E9A08952E980895229A0895AB
:1010D00081FF02C02A9A08952A98089508950895D4
:1010E0008EE698E0892B11F00E946E080E94660837
:1010F0000C9459088FE698E0892B11F00C946F0836
:101100000895CF93DF93EC01462F50E0493051050D
:1011100008F05CC0FA01EA5AFF4F0C94522F0E946B
:10112000A127827280933A019A81992369F08823DA
:1011300019F085E390E002C089E290E00E94FE266B
:10114000DF91CF910C94ED27882319F085E390E08F
:1011500002C089E290E00E944F27F2CF8A81882363
:10116000A9F1DF91CF910C94F8118A81882371F154
:10117000DF91CF910C9461108A81882339F1DF913E
:10118000CF910C947A108A81882301F1DF91CF915D
:101190000C9499108A818823C9F0DF91CF910C9427
:1011A000B4108A81882391F0DF91CF910C94CE10F6
:1011B0008A81882359F0DF91CF910C94E9108A81BC
:1011C000882321F0DF91CF910C94EE11DF91CF9124
:1011D000089581E0089581E008950C94EB08089546
:1011E0000F931F93CF93DF93EC0108811981C801FE
:1011F0000E947E26B8010E948B098C01BE010E94CC
:10120000ED08882309F47AC08A818823C9F1809186
:10121000460181111EC0043180E5180789F50E943E
:10122000EF0881E0809346010E94D5289093450104
:101230008093440110923D0110923F0110923E01B3
:10124000109241011092400110924301109242010C
:1012500055C080914401909145010E94E128883C4D
:10126000910570F480913D01E82FF0E0EE0FFF1F33
:10127000E25CFE4F118300838F5F80933D013EC08F
:10128000043880E5180721F005381045A1F02AC080
:101290008A81882321F010923B0182E012C0809164
:1012A0003B01811106C086E20E94B21D86E20E94C7
:1012B0007A1E82E014C08A81882331F010923C01AA
:1012C00080E20E94C91E1AC080913C01811106C0B3
:1012D00087E20E94B21D87E20E947A1E80E20E948D
:1012E000D01E0CC081E080933B0180933C01CE0175
:1012F000DF91CF911F910F910C94E90880E0DF916D
:10130000CF911F910F9108950C9470080C947A0856
:1013100080E090E008959EE0799FF001112496E42A
:10132000899FE00DF11D1124E60FF11DEE0FFF1F47
:10133000EC5BFE4F859194910895880F991F8E5410
:101340009040FC01859194910895880F991F8E5CBF
:101350009E4FFC018591949108950F931F93CF9315
:10136000DF93EC01811521E39207A0F5811530E3AD
:10137000930708F0D7C0883E9105D8F4803E9105C8
:1013800008F06FC0883A910578F4853A910508F025
:101390006AC08130910509F4F8C108F4F3C18430C2
:1013A000910508F05EC0EEC18B3B910508F466C064
:1013B000E9C1C11580E2D80708F0AFC0C11591E0BE
:1013C000D90708F04EC0C03FD10508F4DBC18E013B
:1013D00010651CC2803820E5920700F5803730E5A3
:1013E000930708F0A3C0C11580E5D80709F4ACC085
:1013F00050F4CE01905480319F4008F0C3C18E015B
:101400001F70106A03C2C13030E5D30709F4AAC0C7
:10141000C43180E5D80708F4AFC0B4C1C33890E543
:10142000D90709F48EC050F4C13830E5D30709F468
:1014300082C008F083C000E011EDE8C1C03191E541
:10144000D90708F49FC1C11527E5D20708F436C1B2
:10145000CE0190578115904108F094C18E011F7004
:101460008FC18E01D3C1853A910509F491C1863AA5
:10147000910509F490C103E810E4C8C1883A9105C8
:1014800009F48CC1893A910509F48BC18A3A910516
:1014900009F48AC18B3A910509F489C18C3A910506
:1014A00009F488C18D3A910509F487C1803B910503
:1014B00009F486C18E3A910509F485C18F3A9105E8
:1014C00009F484C1813B910509F483C1823B9105F4
:1014D00009F482C1833B910509F481C1843B9105E4
:1014E00009F480C1853B910509F47FC1863B9105D4
:1014F00009F47EC1873B910509F47DC1883B9105C4
:1015000009F47CC1893B910509F47BC18A3B9105B3
:1015100009F07AC10AE216E479C1CE019F700E94F7
:10152000A50975C18C011127106C70C18C010F7059
:101530001127146D6BC100E010ED68C100E012EDE1
:1015400065C100E013ED62C10E9453218FEF94E367
:101550002CE0815090402040E1F700C000000E9444
:101560002F2954C18CE592E00E94B7078091E901D0
:1015700081608093E9014AC10E94E92A811102C079
:101580000E94CA2A0E94062B90E090931E0280932C
:101590001D02C23030E5D30721F480911D02816025
:1015A00086C0C43080E5D80721F480911D02826096
:1015B0007EC0C63090E5D90721F480911D02846079
:1015C00076C0C83020E5D20719F480911D0227C0EB
:1015D000CA3030E5D30721F480911D02806167C0D5
:1015E000CC3080E5D80721F480911D0280625FC075
:1015F000CE3090E5D90721F480911D02806457C058
:10160000C03120E5D20721F480911D0280684FC0CF
:10161000C23130E5D30729F480911D0284608860CF
:1016200046C0C33080E5D80721F480911D028E7F2B
:101630003EC0C53090E5D90721F480911D028D7F11
:1016400036C0C73020E5D20721F480911D028B7F80
:101650002EC0C93030E5D30719F480911D0226C091
:10166000CB3080E5D80721F480911D028F7E1FC00A
:10167000CD3090E5D90721F480911D028F7D17C0F0
:10168000CF3020E5D20721F480911D028F7B0FC05F
:10169000C13130E5D30721F480911D028F7707C057
:1016A000C331D04531F480911D028B7F877F8093B9
:1016B0001D0280911D020E940A2BA8C08D2F992720
:1016C0008F70992781309105E9F48E0103701127FD
:1016D0009C0102C0220F331F0A95E2F789011C68A2
:1016E000CE01E4E0880F991FEA95E1F7882793700F
:1016F000082B192BF3E0CC0FDD1FFA95E1F7C0762C
:10170000DD272CC08230910529F41C2F0027016FA2
:10171000106A7CC08330910561F4CE0183709927F3
:1017200001E010E002C0000F111F8A95E2F71C686B
:101730000EC084309105A9F4CE018370992701E091
:1017400010E002C0000F111F8A95E2F71A6863E0EB
:10175000CC0FDD1F6A95E1F7C07ED7700C2B1D2BD7
:1017600055C08530910529F41C2F0027046F106A9D
:101770004DC0069709F04AC0CF71DD271C2F002706
:10178000106244C000E010E041C001E010E03EC043
:1017900001E810E43BC002E810E438C002EE14E4B3
:1017A00035C009EE14E432C00AEE14E42FC005EB94
:1017B00014E42CC006EB14E429C007EB14E426C0A3
:1017C0000CEC14E423C00DEC14E420C003E815E491
:1017D0001DC00AE815E41AC002E915E417C004E9BF
:1017E00015E414C001E216E411C003E216E40EC0D1
:1017F00004E216E40BC005E216E408C006E216E4B3
:1018000005C007E216E402C000E014E4C801DF915D
:10181000CF911F910F9108959EE0799FF0011124BF
:1018200096E4899FE00DF11D1124E60FF11DEE0FE6
:10183000FF1FEC5BFE4F85919491803E9105E0F493
:10184000803C910558F58133910509F46FC048F447
:101850008932910509F463C08A32910509F46DC09B
:1018600072C089339105E9F082389105D1F0853352
:10187000910509F44DC067C0833E910581F138F4AC
:10188000803E9105B9F0823E9105D9F05CC0863E5C
:10189000910561F1873E9105A1F155C00E949D0916
:1018A000089520911D0220FD02C021FF4CC080EE52
:1018B00090E049C080911D0280FFF9CF89E390E05C
:1018C00042C080911D0282FF0EC080911D0284FFE4
:1018D00003C080E090E037C083EE90E034C0809198
:1018E0001D0282FFF2CF82EE90E02DC080911D029A
:1018F00083FF0BC080911D0284FDEBCF87EE90E04B
:1019000022C080911D0283FFF5CF86EE90E01BC0C0
:1019100080911D0285FF07C089E290E014C080918C
:101920001D0285FFF9CF85E390E00DC080911D0277
:1019300086FF07C08AE290E006C080911D0286FF04
:10194000F9CF81E390E00E94AD0908950C946808F6
:10195000E82FF0E0E25EFE4F8081E82FEF70F0E0CC
:10196000282F22952F7081E090E0022E01C0880F71
:101970000A94EAF780A308950F931F93CF93DF9300
:1019800085B7806885BF85B7806885BFC4E0D0E033
:1019900001E010E0FE01E25EFE4F8081E82FEF7073
:1019A000F0E021A182958F70A80102C0440F551F5D
:1019B0008A95E2F7242B21A38C2F0E94A80C219753
:1019C00048F78DE090E041E050E0FC01E05FFE4F21
:1019D0002081E22FEF70F0E062A122952F70DA01F2
:1019E00002C0AA0FBB1F2A95E2F76A2B62A30197D8
:1019F00060F7DF91CF911F910F910C948409EF92C2
:101A0000FF920F931F93CF93DF93C1E5D1E084E062
:101A1000E82E01E010E095E0F92E8E2D0E94A80C32
:101A20002DE030E040E050E0F901E05FFE4F8081C2
:101A3000E82FEF70F0E060A170E082958F7002C037
:101A4000759567958A95E2F760FD09C0B801022E89
:101A500002C0660F771F0A94E2F7462B572B2150DE
:101A6000310910F73A912A912417350721F059834B
:101A70004883F09200018E2D0E94A80CEA949FEFFB
:101A8000E912CBCF2091000127FD2EC08091E90102
:101A900080FF10C0822F992787FD90959F932F93E9
:101AA00085EA92E09F938F930E9450080F900F90C9
:101AB0000F900F908091000181508093000187FD6D
:101AC00007C08FE99FE00197F1F700C000000CC04C
:101AD000ABE5B1E0E1E5F1E0929182919E938E93C6
:101AE00091E0E734F907C1F70E94860981E0DF91B0
:101AF000CF911F910F91FF90EF900895E82FF0E0A4
:101B0000EE0FFF1FEF5AFE4F808191810895EF92F3
:101B1000FF920F931F93CF93DF938091E90180FF92
:101B200004C086E892E00E94B70701E511E0C0E03A
:101B3000D0E04EE6E42E42E0F42E8091E90180FFF1
:101B400013C0F801808191810E943F289F938F9359
:101B5000DF93CF93FF92EF920E9450080F900F9067
:101B60000F900F900F900F9021960E5F1F4FC53072
:101B7000D10519F7DF91CF911F910F91FF90EF9051
:101B800008951F93CF93DF93CBE5D1E010E09A91B6
:101B90008A910E942128180F81E0C135D807B9F732
:101BA000812FDF91CF911F9108953EB1242F209571
:101BB00023233EB1342B4FB7F894FC01680F791FF3
:101BC000E617F70789F0819198E03EB9000000C060
:101BD00087FF2EB9880F000000C000C000C02EB9DA
:101BE00000C09A9591F7ECCF4FBF08952DB1242BEB
:101BF0002DB99B01220F331F260F371FB9010E94F9
:101C0000D50D87EC90E00197F1F700C00000089532
:101C100044E00C94F60DCF92DF92EF92FF920F9377
:101C20001F93CF93DF937C01E42FF0E0E854FA4F49
:101C30004491EFEFF0E0E61BF109E854FA4FE4912C
:101C4000E09509F498C0042F10E08FEF90E08E1B10
:101C50009109809FB001819F700D909F700D11249C
:101C6000E72FF72FCCE3D0E0C701BE010E942A2F57
:101C7000DC016230710509F447C0D8F461157105C3
:101C8000A1F16130710509F07AC00E1B1109CE0176
:101C90008A1B9B0BDC010A9FC0010B9F900D1A9FB2
:101CA000900D1124BE010E942A2FCE2EC60ED42ED6
:101CB00067C06430710509F44BC0B8F16530710537
:101CC00009F05DC00E1B1109BE01681B790B069F50
:101CD000C001079F900D169F900D1124BE010E9418
:101CE0002A2FDE2EFE2FF60F44C00E1B11090E9D6B
:101CF000C0010F9D900D1E9D900D1124BE010E94EC
:101D00002A2FDE2ED60E35C00E1B11090A9FC001E8
:101D10000B9F900D1A9F900D1124BE010E942A2F37
:101D2000D42ECE2EFE2FF60F2BC00E1B1109BE0196
:101D3000681B790B069FC001079F900D169F900DA1
:101D40001124BE010E942A2FDE2ED60ECE2E0FC0E9
:101D50000E1B11090A9FC0010B9F900D1A9F900D39
:101D60001124BE010E942A2FCE2EC60EDE2EF42F85
:101D700007C0C42E05C0F42FD42EC42E01C0F0E03D
:101D8000D9011196CC921197DC921296FC93DF91B7
:101D9000CF911F910F91FF90EF90DF90CF9008951A
:101DA00087E090E00C94602FAB01BC0187E090E0ED
:101DB0000C947E2F8091E90180FF08C089E894E0AF
:101DC0009F938F930E9450080F900F9083E0809311
:101DD000F0018091F101807884668F778093F10122
:101DE0008CEC8093F2018093F3016091F00170918B
:101DF000F1018091F2019091F3010C94D40E809145
:101E0000E90180FF08C082E794E09F938F930E94CE
:101E100050080F900F908091E90180FF0FC08091D2
:101E2000F00181701F928F9385E594E09F938F93CB
:101E30000E9450080F900F900F900F908091E90131
:101E400080FF10C08091F00186958F731F928F9351
:101E50008AE394E09F938F930E9450080F900F9015
:101E60000F900F908091E90180FF19C09091F001CF
:101E7000991F9927991F2091F101822F880F892B93
:101E800027FB222720F92F938F9380E294E09F93E2
:101E90008F930E9450080F900F900F900F90809199
:101EA000E90180FF0EC08091F2011F928F9386E0BE
:101EB00094E09F938F930E9450080F900F900F9083
:101EC0000F908091E90180FF0EC08091F3011F9275
:101ED0008F938CEE93E09F938F930E9450080F9006
:101EE0000F900F900F9008958091F00180FF06C031
:101EF00068E070E088EF91E00C94080EEAEFF1E002
:101F0000DF0111971C92DF0112971C921082339609
:101F100082E0E231F807A1F7EBCFEAEFF1E0DF0171
:101F200011978C93DF0112976C934083339692E064
:101F3000E231F907A1F70C94740FCF92DF92EF9280
:101F4000FF920F931F93CF93DF9300D01F92CDB7D3
:101F5000DEB7F82EC92ED62EE42E0091F001109196
:101F6000F1012091F2013091F3010093F4011093FB
:101F7000F5012093F6013093F7018091F00180FF85
:101F80001EC09E012F5F3F4F8F2D0E940B0E809130
:101F9000F401F0FA87F98093F401F6942091F501A9
:101FA00020782F29C0FA27F92093F501D092F60165
:101FB000E092F7014B8169818A810E948D0F0F9019
:101FC0000F900F90DF91CF911F910F91FF90EF90A5
:101FD000DF90CF9008950F931F93CF93DF93C82F77
:101FE000192F062FD42F8091F00180FF65C0982F04
:101FF0009E77923029F48C2F912F0E949D0F1AC04A
:10200000282F26952F739EE3920F9F73943018F418
:10201000D091F3010FC0265C2F73293058F4881F2C
:102020008827881F1091F101C12FCC0FC82B17FBF7
:10203000112710F98091F001C0FB87F98093F0011E
:10204000C6958091F10180788C2B10FB87F98093E5
:10205000F1010093F201D093F3016091F0017091CE
:10206000F1018091F2019091F3010E94D40E8091D0
:10207000F3011F928F938091F2011F928F939091A1
:10208000F001991F9927991F2091F101822F880F44
:10209000892B27FB222720F92F938F9388EE92E03C
:1020A0009F938F930E9450088DB79EB708960FB6E6
:1020B000F8949EBF0FBE8DBFDF91CF911F910F91FE
:1020C00008952091F001221F2227221F3091F10153
:1020D000432F440F842F822B37FB992790F90A96C0
:1020E00068E671E00E943E2F4091F3016091F20199
:1020F0000C94EB0F2091F001221F2227221F309118
:10210000F101432F440F842F822B37FB992790F93D
:102110008A3091051CF4825A9E4F01C00A9768E6E6
:1021200071E00E943E2F4091F3016091F2010C9406
:10213000EB0F6091F201862F90E08F3E910514F431
:102140006F5E01C06FEF8091F001881F8827881FA4
:102150009091F101292F220F97FB992790F9409137
:10216000F301822B0C94EB0F6091F201862F90E02B
:10217000419714F0615101C060E08091F001881F27
:102180008827881F9091F101292F220F97FB99270B
:1021900090F94091F301822B0C94EB0F4091F301E5
:1021A000842F90E08F3E910514F44F5E01C04FEFF5
:1021B0008091F001881F8827881F9091F101292FB5
:1021C000220F97FB992790F96091F201822B0C94D2
:1021D000EB0F4091F301842F90E0419714F04151AF
:1021E00001C040E08091F001881F8827881F9091EE
:1021F000F101292F220F97FB992790F96091F201A5
:10220000822B0C94EB0F80916C0181110FC081E047
:1022100080936C0189E0809391008FB7F89493E0EC
:102220009093990090ED909398008FBF08958091BE
:1022300071008260809371008091E90180FF08C085
:1022400087ED92E09F938F930E9450080F900F901C
:102250000895809171008D7F809371008091E901D4
:1022600080FF08C085EC92E09F938F930E945008F6
:102270000F900F9008959091F00190FF4DC09178CC
:10228000811102C0926003C0883120F09E62909359
:10229000F00105C08F73880F892B8093F001609146
:1022A000F0017091F1018091F2019091F3010E948F
:1022B000D40E8091F00186958F731F928F938BE3DC
:1022C00093E09F938F930E9450088091F001982F84
:1022D0009E770F900F900F900F90923019F40E94FC
:1022E000291107C08695825C8F73863110F40E9495
:1022F00017118091F001881F8827881F9091F101A4
:10230000292F220F97FB992790F94091F3016091B3
:10231000F201822B0C94EB0F08958091E90181600A
:102320008093E90185ED93E09F938F930E9450087D
:1023300081E080936D018091E9010F900F9080FF03
:1023400008C08FEB93E09F938F930E9450080F90EB
:102350000F900E94E92A811110C08091E90180FF4D
:1023600008C087E993E09F938F930E9450080F90D5
:102370000F900E94CA2A0E94DA0E0E94D00E60932B
:10238000F0017093F1018093F2019093F3016E7765
:10239000C1F48091E90180FF08C08EE493E09F932F
:1023A0008F930E9450080F900F900E94DA0E0E94A7
:1023B000D00E6093F0017093F1018093F20190933D
:1023C000F3010E94FF0E0E9403118091F00180FF33
:1023D00004C086958F730C943B1108958091F00191
:1023E00086958F738F5F883108F081E00C943B11E4
:1023F0008091F001982F909590FB80F98093F001E7
:102400006091F0017091F1018091F2019091F301DE
:102410000E94D40E8091F00181701F928F938DE005
:1024200093E09F938F930E9450088091F0010F904A
:102430000F900F900F9080FF04C086958F730C94BF
:102440003B110E9429112FEF80E792E0215080403C
:102450009040E1F700C000000C94740FCF93C82F98
:1024600080916A0190916B010E94E128EC2FF0E0CD
:10247000EC54FB4FE491F0E08E179F0710F10E949F
:10248000D52890936B0180936A01E0916901F0E097
:10249000E854FB4F44918091F001881F8827881FE2
:1024A0009091F101292F220F97FB992790F96091C4
:1024B000F201822B0E949D0F809169018F5F8093B2
:1024C0006901CF910895CF93C82F809167019091B2
:1024D00068010E94E128EC2FF0E0EF54FB4FE491FB
:1024E000F0E08E179F07E8F00E94D52890936801CE
:1024F000809367014091F3016091F2018091650141
:10250000909166010E949D0F8091650190916601F6
:10251000019668E671E00E942A2F909366018093ED
:102520006501CF910895DF92EF92FF920F931F9371
:10253000CF93DF93D82E80916301909164010E9424
:10254000E128ED2DE695F0E0EF54FB4FE491F0E04B
:102550008E179F07E8F10E94D5289093640180931D
:10256000630108EF11E0C0E0D0E088E6E82EFF2428
:10257000F39480916101909162018C0F9D1FB701CE
:102580000E942A2F98014091F3016091F2010E946C
:102590000B0EAD960D5F1F4FC83681E0D80749F787
:1025A0000E94740F2091610130916201D0FE0AC037
:1025B000C9010196BE010E942A2F90936201809367
:1025C000610106C0215031093093620120936101FD
:1025D000DF91CF911F910F91FF90EF90DF900895C1
:1025E0008F929F92AF92BF92CF92DF92EF92FF9223
:1025F0000F931F93CF93DF93C82F80FD03C09924BF
:10260000939402C099249A9480915F019091600103
:102610000E94E128C695EC2FF0E0E255FB4FE491D3
:10262000F0E08E179F0708F468C00E94D5289093A9
:10263000600180935F0128EFE22E21E0F22E0AEF85
:1026400011E0C0E0D0E037E0A32EB12CF8013197C3
:102650001082F7011082F801108297E0C92ED12C68
:10266000812C80915E01880D87FD885F992787FD09
:102670009095C817D907E9F42091F3012C9DC0016A
:102680002D9D900D1124B5010E943E2F462F809163
:10269000F001881F8827881F9091F101592F550F4D
:1026A00097FB992790F997016091F201852B0E9481
:1026B0000B0E890CF1E0CF1AD108C114D10489F6B0
:1026C000219683E0E80EF11C0D5F1F4FC830D10545
:1026D00009F0BCCF0E94740F80915E0191E09912C5
:1026E00006C0811102C087E006C0815004C090E09E
:1026F00001968770992780935E01DF91CF911F919A
:102700000F91FF90EF90DF90CF90BF90AF909F9090
:102710008F9008959F92AF92BF92CF92DF92EF92E7
:10272000FF920F931F93CF93DF93CDB7DEB76897D8
:102730000FB6F894DEBF0FBECDBF182F80915C019D
:1027400090915D010E94E128E12FF0E0E555FB4FFB
:10275000E491F0E08E179F0708F491C00E94D528FD
:1027600090935D0180935C018E010F5F1F4F6E019E
:1027700083E0C80ED11CE12CF12C5801F6013197F1
:102780001082D8011C92F6011082912C90910101C7
:1027900080915B01999E800D112487FD04C08830D3
:1027A0001CF087E001C080E0992787FD9095E8162E
:1027B000F906A1F48091F001881F8827881F909165
:1027C000F101592F550F97FB992790F998014091E6
:1027D000F3016091F201852B0E940B0E9394F7E0B8
:1027E0009F12D4CF8FEFE81AF80A0D5F1F4FA3E0B6
:1027F000CA0ED11CB8E0EB16F10409F0BFCF6AEFA6
:1028000071E089E090E09C0127703327AB014150D3
:102810005109F901EE0FFF1FE20FF31FEA0DFB1D37
:102820002181DA012C939B01225031094081D90189
:102830004C932281FB01208301966D5F7F4F813194
:10284000910509F70E94740F9091010180915B013D
:10285000913049F48A3F2CF489EF80935B018FEF2C
:1028600008C081500AC08F303CF08EE080935B013D
:1028700081E08093010103C08F5F80935B016896C4
:102880000FB6F894DEBF0FBECDBFDF91CF911F9181
:102890000F91FF90EF90DF90CF90BF90AF909F90FF
:1028A00008951F920F920FB60F9211242F933F930A
:1028B0004F935F936F937F938F939F93AF93BF9348
:1028C000EF93FF938091F00186958F739EE3980FAD
:1028D0009F73943020F482500E942E1223C09AE3FA
:1028E000980F9F73933020F486500E9463121AC091
:1028F00097E3980F9F73963020F489500E949312AB
:1029000011C091E3980F9F73963020F48F500E946E
:10291000F01208C09BE2980F9F73933018F4855112
:102920000E948A13FF91EF91BF91AF919F918F9178
:102930007F916F915F914F913F912F910F900FBEBB
:102940000F901F90189580918101089508959FB769
:10295000F894109270019FBF90911402943009F086
:1029600058C09091E9009F702091EC0020FF02C0B8
:1029700020E801C020E0292B93E09093E90090919A
:10298000EB0090FF43C09091EE0097FF3FC0909105
:102990006E01992321F09091E80095FF37C01092C5
:1029A0006E0196E03091E80035FD15C030911402BB
:1029B000343061F53091EB0035FD28C0915021F4A1
:1029C00081E080936E0122C0EFE9FFE03197F1F7DB
:1029D00000C00000E7CF8093F1008091E80085FD02
:1029E0000AC08091E80080FFFCCF8091E8008E77DC
:1029F0008093E80006C08FB7F89491E0909370013F
:102A00008FBF2F702093E90080E008952F702093EE
:102A1000E9008FEF0895CF93DF9300D01F92CDB7D9
:102A2000DEB720911402243021F523E029839B8313
:102A30008A8382E08093E9008FEF9091E8008150D3
:102A400095FD06C095ED9A95F1F700008111F5CF3F
:102A50008091E80085FF0DC040E050E063E070E049
:102A6000CE0101960E94A3178091E8008E77809393
:102A7000E8000F900F900F90DF91CF910895CF93C2
:102A8000DF9300D01F92CDB7DEB72091140224301F
:102A900019F522E029839B838A832093E9008FEF35
:102AA0009091E800815095FD06C095ED9A95F1F75B
:102AB00000008111F5CF8091E80085FF0DC040E056
:102AC00050E063E070E0CE0101960E94A317809170
:102AD000E8008E778093E8000F900F900F90DF91C1
:102AE000CF910895CF93DF93EC018091140284304D
:102AF00009F046C090910C019923D9F090910D01F5
:102B00009923B9F08093E9008FEF9091E80081500C
:102B100095FD06C095E19A95F1F700008111F5CF7A
:102B20008091E80085FF2CC040E050E060E170E05B
:102B300017C081E08093E9008FEF9091E800815009
:102B400095FD06C095ED9A95F1F700008111F5CF3E
:102B50008091E80085FF14C040E050E068E070E03C
:102B6000CE010E94A3178091E8008E778093E80041
:102B700080E1FE01A1E7B1E001900D928A95E1F7B5
:102B8000DF91CF9108958DED96E00E94B707809177
:102B90001302811109C00E9435190E949219809177
:102BA000E20084608093E200089589ED96E00E943F
:102BB000B70710921302089585ED96E00C94B707BD
:102BC00081ED96E00C94B7078DEC96E00E94B70774
:102BD0000C94982880916F018F5F80936F0162E35E
:102BE0000E941E2F911135C010926F0180917001CB
:102BF000882379F180911402843049F58091E900AD
:102C00008F709091EC0090FF02C090E801C090E0BE
:102C1000982B83E08093E9008091EB0080FF14C043
:102C20008091EE0087FF10C08091E80085FF03C00F
:102C30001092F100F9CF8091E80080FF05C08091EB
:102C4000E8008E778093E8009F709093E9001092DF
:102C50007001089542E061EC81E00E94AF1842E00B
:102C600061EC82E00E94AF1842E261EC83E00E94D6
:102C7000AF1842E161EC84E00C94AF188091160229
:102C8000833009F455C030F4813071F0823009F49A
:102C90008EC008958A3009F47AC08B3009F460C080
:102CA000893009F09CC020C080911502813A09F05A
:102CB00096C08091E800877F8093E8008091190298
:102CC00090911A02892B21F060E080E090E003C02F
:102CD00060E181E791E070E00E94EC178091E800EC
:102CE0008B778093E800089580911502813209F076
:102CF00076C08091190290911A02009719F00397FB
:102D000009F06DC08091E800877F8093E800809192
:102D1000E80082FD05C0809114028111F8CF5FC0E8
:102D20008091F100809381018091E8008B7753C0FE
:102D300080911502813A09F052C080911902909158
:102D40001A02892B09F04BC08091E800877F80939D
:102D5000E8008091E80080FFFCCF80910C0136C034
:102D6000809115028132D9F58091190290911A0251
:102D7000892BA9F58091E800877F8093E8000E9465
:102D8000E4188091170280930C010C9453218091D8
:102D90001502813221F58091E800877F8093E80059
:102DA0000E94E41880911802809382010895809116
:102DB0001502813AA1F48091E800877F8093E800B2
:102DC0008091E80080FFFCCF809182018093F10028
:102DD0008091E8008E778093E8000C94E4180895C1
:102DE00084B7877F84BF88E10FB6F8948093600032
:102DF000109260000FBE80E8809361001092610025
:102E00000E94AC1C0E9435190E9492198091E20028
:102E100084608093E20087EA94E10E941C28789401
:102E20000E940C1C0E94AE1C82E091E00E94291CB2
:102E30008CEB96E00E94B70780911402853089F4EC
:102E400088EB96E00E94B7070E94592880911202F1
:102E5000882391F30E948728882371F30E948D179D
:102E6000EBCF0E94D61CE8CF292F33272330310522
:102E7000A9F06CF42130310509F442C0223031054B
:102E800009F043C084E790E02FEF36E042C02132E2
:102E90003105C9F02232310519F137C09927813047
:102EA000910541F08230910541F0892B71F5EBEFEE
:102EB000F6E005C0EDEEF6E002C0E1EEF6E084914A
:102EC00090E09F0126C0643000F5E62FF0E0EE0FA1
:102ED000FF1FE15DFE4F2081318189E090E019C044
:102EE000643098F4E62FF0E0DF01AA0FBB1FA95D64
:102EF000BE4F2D913C91ED5DFE4F808190E009C069
:102F000082E190E023E737E004C080E090E020E039
:102F100030E0FA0131832083089580E189BD82E1A8
:102F200089BD09B400FEFDCF8091D8008F7D8093CC
:102F3000D8008091E00082608093E0008091E00002
:102F400081FDFCCF0895CF92DF92EF92FF920F9315
:102F50001F93CF93DF937C018B01EA010E94051937
:102F6000811131C0209731F088819981081B190B9C
:102F7000E80EF91EC12CD12C0115110519F1809113
:102F8000E80085FD14C08091E8008E778093E8000A
:102F9000209741F0888199818C0D9D1D99838883AC
:102FA00085E011C00E940519882331F30CC0F70198
:102FB00081917F018093F10001501109FFEFCF1A39
:102FC000DF0ADACF80E0DF91CF911F910F91FF9060
:102FD000EF90DF90CF90089520911B0230911C025A
:102FE0002617370748F06115710539F42091E8007C
:102FF0002E772093E80001C0B901FC0120E06115A3
:103000007105B9F180911402882309F440C085301C
:1030100009F43FC08091E80083FD3DC08091E80045
:1030200082FF06C08091E80082FF26C080E00895FC
:103030008091E80080FFE3CF2091F3008091F200BF
:1030400090E0922B6115710551F08830910538F4AC
:1030500021912093F100615071090196F3CF21E095
:10306000089709F020E08091E8008E778093E800CF
:10307000C6CF2111C7CFD6CF80911402882339F053
:10308000853039F08091E80083FFCCCF04C082E026
:10309000089583E0089581E0089520911B02309106
:1030A0001C022617370748F06115710539F4209185
:1030B000E8002E772093E80001C0B901FC0120E070
:1030C00061157105C1F180911402882309F441C092
:1030D000853009F440C08091E80083FD3EC08091B6
:1030E000E80082FF06C08091E80082FF27C080E0F0
:1030F00008958091E80080FFE3CF2091F300809154
:10310000F20090E0922B6115710559F0883091051D
:1031100040F424912093F100319661507109019699
:10312000F2CF21E0089709F020E08091E8008E7747
:103130008093E800C5CF2111C6CFD5CF809114026E
:10314000882339F0853039F08091E80083FFCBCFB8
:1031500004C082E0089583E0089581E00895982FE7
:10316000973058F59093E900981739F07091EC007A
:103170002091ED005091F00003C0242F762F50E0F5
:1031800021FF19C03091EB003E7F3093EB0030916E
:10319000ED003D7F3093ED003091EB0031603093D6
:1031A000EB007093EC002093ED005093F000209121
:1031B000EE0027FF07C09F5FD3CF8F708093E90099
:1031C00081E0089580E008958091150287FD05C093
:1031D0008091E80080FF0EC012C08091E80082FD5F
:1031E00005C0809114028111F8CF08958091E80004
:1031F0008B7708C0809114028111EACF08958091E5
:10320000E8008E778093E80008958091E400909123
:10321000E50045E62091EC0020FF21C02091E80068
:1032200020FD21C020911402222389F0253089F04D
:103230002091EB0025FD0FC02091E4003091E500C6
:103240002817390739F3415041F0C901E3CF82E033
:10325000089583E0089581E0089584E00895209121
:10326000E80022FFDFCF80E008950E94A3190E94AA
:10327000AB19E0EEF0E0808181608083E8EDF0E062
:1032800080818F77808319BCA7EDB0E08C918E7F11
:103290008C9380818F7E80831092130208950F9308
:1032A0001F93CF93DF930E94A3190E94AB19C8ED1F
:1032B000D0E088818F77888388818068888388813F
:1032C0008F7D888319BC1092140210921002109204
:1032D00012021092110200EE10E0F80180818B7F43
:1032E000808388818160888342E060E080E00E9482
:1032F000AF18E1EEF0E080818E7F8083E2EEF0E0B7
:10330000808181608083808188608083F8018081F2
:103310008E7F8083888180618883DF91CF911F9128
:103320000F910895E8EDF0E080818F7E8083E7EDD6
:10333000F0E080818160808384E082BF81E08093BF
:1033400013020C944F19E8EDF0E080818E7F8083AA
:103350001092E20008951092DA001092E1000895B0
:103360001F920F920FB60F9211242F933F934F93FA
:103370005F936F937F938F939F93AF93BF93EF93DD
:10338000FF938091E10082FF0BC08091E20082FFF9
:1033900007C08091E1008B7F8093E1000E94EA15D5
:1033A0008091DA0080FF1FC08091D80080FF1BC091
:1033B0008091DA008E7F8093DA008091D90080FFBF
:1033C0000DC080E189BD82E189BD09B400FEFDCF59
:1033D00081E0809314020E94C31505C019BC1092AD
:1033E00014020E94D5158091E10080FF19C08091E0
:1033F000E20080FF15C08091E2008E7F8093E200A2
:103400008091E20080618093E2008091D800806228
:103410008093D80019BC85E0809314020E94E015C7
:103420008091E10084FF30C08091E20084FF2CC0D5
:1034300080E189BD82E189BD09B400FEFDCF8091A4
:10344000D8008F7D8093D8008091E1008F7E80939B
:10345000E1008091E2008F7E8093E2008091E200A3
:1034600081608093E20080911002882311F084E053
:1034700007C08091E30087FF02C083E001C081E0C4
:10348000809314020E94E4158091E10083FF29C01B
:103490008091E20083FF25C08091E100877F8093C7
:1034A000E10082E080931402109210028091E1000A
:1034B0008E7F8093E1008091E2008E7F8093E20016
:1034C0008091E20080618093E20042E060E080E071
:1034D0000E94AF188091F00088608093F0000E94F5
:1034E000DC15FF91EF91BF91AF919F918F917F91EB
:1034F0006F915F914F913F912F910F900FBE0F9061
:103500001F9018951F920F920FB60F9211242F93B0
:103510003F934F935F936F937F938F939F93AF935B
:10352000BF93CF93EF93FF93C091E900CF70809149
:10353000EC001092E9008091F000877F8093F0000A
:1035400078940E94BE1A1092E9008091F000886081
:103550008093F000C093E900FF91EF91CF91BF916C
:10356000AF919F918F917F916F915F914F913F911B
:103570002F910F900FBE0F901F9018951F93CF9310
:10358000DF93CDB7DEB7AA970FB6F894DEBF0FBEB4
:10359000CDBFE5E1F2E08091F100819322E0ED31D1
:1035A000F207C9F70E943E168091E80083FF1CC114
:1035B0002091150230911602832F90E08A309105F8
:1035C00008F012C1FC01E15AFF4F0C94522F203831
:1035D00081F0223809F008C1809119028F70809320
:1035E000E9008091EB0085FB882780F91092E900C3
:1035F00006C0809111029091120291118260909107
:10360000E800977F9093E8008093F1001092F1001A
:10361000C5C0822F8D7F09F0E7C0222319F0223028
:1036200061F0E2C080911702813009F0DDC03330D3
:1036300009F080E08093120228C080911702811166
:1036400024C0209119022F7009F4CEC02093E90004
:103650008091EB0080FF19C08091EB00333011F4B2
:10366000806211C080618093EB0081E090E0022EC7
:1036700001C0880F0A94EAF78093EA001092EA00EA
:103680008091EB0088608093EB001092E9008091BC
:10369000E800877F86C02111A7C0109117021F770D
:1036A0008091E3008078812B8093E3008091E80093
:1036B000877F8093E8000E94E4188091E80080FFF3
:1036C000FCCF8091E30080688093E300112311F028
:1036D00083E001C082E08093140286C0205822302B
:1036E00008F082C080911702909118028C3D23E06F
:1036F000920779F583E08A838AE289834FB7F89449
:10370000DE01139620E03EE051E2E32FF0E050931B
:103710005700E49120FF03C0E295EF703F5FEF7028
:103720008E2F90E0EA3010F0C79601C0C0968D93BE
:103730009D932F5F243149F74FBF8091E800877F29
:103740008093E8006AE270E0CE0101960E94EC17D7
:1037500014C0AE014F5F5F4F609119020E94341791
:10376000009709F441C02091E800277F2093E800EA
:10377000BC0189819A810E944D188091E8008B7765
:103780008093E80031C0203879F58091E800877F88
:103790008093E800809110028093F1008091E8000E
:1037A0008E778093E8000E94E4181EC021111CC08F
:1037B000909117029230C0F48091E800877F809347
:1037C000E800909310020E94E41880911002811189
:1037D00004C08091E30087FF02C084E001C081E063
:1037E000809314020E942A168091E80083FF0AC089
:1037F0008091E800877F8093E8008091EB008062F1
:103800008093EB00AA960FB6F894DEBF0FBECDBF33
:10381000DF91CF911F910895CF9380911402882357
:10382000B1F08091E9008F709091EC0090FF02C0A0
:1038300090E801C090E0C92FC82B1092E900809158
:10384000E80083FD0E94BE1ACF70C093E900CF91BB
:10385000089590938801809387010895E0918701EE
:10386000F0918801309721F00190F081E02D0994CA
:1038700080E00895FF920F931F93CF93DF938C0105
:10388000E0918701F0918801309799F10280F381EE
:10389000E02D09958091E90182FF2BC080FF04C0D3
:1038A0008CE598E00E94B707E80180E1F82E06E574
:1038B00018E08091E90180FF0BC088811F928F93EF
:1038C0001F930F930E9450080F900F900F900F902E
:1038D000FA942196F110EDCF8091E90180FF09C0A3
:1038E00084E598E0DF91CF911F910F91FF900C94A8
:1038F000B707DF91CF911F910F91FF90089520910D
:103900008501309186018217930771F090938601AB
:1039100080938501E0918701F0918801309721F033
:103920000680F781E02D099408952091830130915C
:1039300084018217930771F090938401809383012F
:10394000E0918701F0918801309721F00084F185A2
:10395000E02D0994089508950C94AB1C0E94CC2886
:103960000E94BC0C0E9497290E94402E0C948D113D
:10397000CF93DF931F92CDB7DEB79091E90192FF0D
:1039800010C090FF0EC01F928F932EE638E03F9339
:103990002F9389830E9450080F900F900F900F90E3
:1039A00089810F90DF91CF910C94A60C5F926F925A
:1039B0007F928F929F92AF92BF92CF92DF92EF92BF
:1039C000FF920F931F93CF93DF9300D000D01F92ED
:1039D000CDB7DEB70E94FF0C94E9C92E91E0D92E35
:1039E00004E010E0AA24A394B12C502E802F0E9452
:1039F0007E0D3C01F601F290E2906F01E826F92677
:103A0000E114F104A1F40150110978F78FEF8983D3
:103A10008A831B820E94D5288160782F9D838C83A6
:103A200049815A816B818D810E94841D38C08091AB
:103A3000E90181FD0E94870D2DE030E04501022E55
:103A400002C0880C991C0A94E2F7C4018E219F21C0
:103A5000892B09F129835A826820792081E067281F
:103A600009F480E08B830E94D5288160782F9D83A4
:103A70008C8349815A816B818D810E94841DF8015C
:103A8000EE0FFF1FE657FE4F808191818825992513
:103A90009183808304C02150310980F6B4CF109106
:103AA00089010E942E1C1817D1F00E942E1C8093B1
:103AB00089010F900F900F900F900F90DF91CF9191
:103AC0001F910F91FF90EF90DF90CF90BF90AF903C
:103AD0009F908F907F906F905F900C94B81C0F9088
:103AE0000F900F900F900F90DF91CF911F910F913A
:103AF000FF90EF90DF90CF90BF90AF909F908F900E
:103B00007F906F905F900895CF93DF93CDB7DEB72E
:103B10002B970FB6F894DEBF0FBECDBF4F835887EB
:103B200069877A878B87DE01119686E0FD01119205
:103B30008A95E9F785E0FE01379601900D928A9506
:103B4000E1F749815A816B817C818D819E810E9440
:103B500023242B960FB6F894DEBF0FBECDBFDF91A6
:103B6000CF910895CF93C82F882309F4C1C082381C
:103B700059F40E942E1C81FDBBC089E30E94FE26E1
:103B80000E94ED2789E30CC0833879F40E942E1C33
:103B900080FDAEC083E50E94FE260E94ED2783E5EE
:103BA0000E944F27CF910C94ED27843859F40E943E
:103BB0002E1C82FD9DC087E40E94FE260E94ED27F8
:103BC00087E4EECF8CEF8C0F813A48F48C2F0E9463
:103BD000F42D81118DC08C2F0E94FE26E3CF80E250
:103BE0008C0F883048F4C77081E001C0880FCA95F7
:103BF000EAF70E94A427D6CF8BE58C0F833078F4A8
:103C0000C53A29F0C63A31F482E890E005C081E86F
:103C100090E002C083E890E0CF910C947F1C88E58F
:103C20008C0F833108F064C0C83A39F1C93A41F1C8
:103C3000CA3A49F1CB3A51F1CC3A59F1CD3A61F156
:103C4000C03B69F1CE3A71F1CF3A79F1C13B81F1D4
:103C5000C23B89F1C33B91F1C43B99F1C53BA1F152
:103C6000C63BA9F1C73BB1F1C83BB9F1C93BC1F1B2
:103C7000CA3BC9F58AE292E038C082EE90E035C0D6
:103C800089EE90E032C08AEE90E02FC085EB90E0A4
:103C90002CC086EB90E029C087EB90E026C08CEC2E
:103CA00090E023C08DEC90E020C083E891E01DC03F
:103CB0008AE891E01AC082E991E017C084E991E0B6
:103CC00014C081E292E011C083E292E00EC084E26F
:103CD00092E00BC085E292E008C086E292E005C067
:103CE00087E292E002C080E090E0CF910C94951CB6
:103CF000CF910895882309F44BC0823859F40E946B
:103D00002E1C81FF45C089E30E94FE260E94ED27FC
:103D100089E30CC0833871F40E942E1C80FF38C0E8
:103D200083E50E94FE260E94ED2783E50E944F272F
:103D30000C94ED27843859F40E942E1C82FF28C071
:103D400087E40E94FE260E94ED2787E4EFCF9CEFD8
:103D5000980F913A58F390E2980F983050F487708A
:103D600091E001C0990F8A95EAF7892F0E94AA274E
:103D7000DFCF9BE5980F933020F480E090E00C9427
:103D80007F1C885A833120F480E090E00C94951CCD
:103D90000895882321F00E94A4270C94ED2708950C
:103DA000882321F00E94AA270C94ED2708958F9272
:103DB0009F92AF92BF92CF92DF92EF92FF920F93BA
:103DC0001F93CF93DF931F92CDB7DEB74C01A62E82
:103DD000472FFC01E580E2948FE0E822F280FF208B
:103DE00021F079830E94C127498149830E94F726E7
:103DF0004981882381F0FF2071F080E28A0D8830AC
:103E000050F082E00E94E0260E94F726BB24B39483
:103E1000B826498101C0B12CE42FE295EF70F0E0A3
:103E2000E759FF4F0C94522F842F807F142F1F705F
:103E3000882311F01295107FFF2089F0112309F4D7
:103E40008BC180E28A0D883020F4812F0E94A42744
:103E500003C0812F0E94B4270E94ED277DC18A2DC7
:103E60000E947A1E112309F4B4C180E28A0D8830C1
:103E700020F4812F0E94AA2703C0812F0E94BA2715
:103E80000E94ED27A6C1242F207F842F8F7020321F
:103E900011F08295807FAA2021F0F1E0AF16B1F0F9
:103EA00021C0FF2041F0EE2039F191E0E91224C059
:103EB0000E94D4278EC1EE2021F0E1E0EE1609F435
:103EC00088C189830E94D727898100C1FF2029F0FA
:103ED000F5E0FE1508F47DC10FC094E09E1508F4CE
:103EE00078C1F4C0FF2059F0EE2031F0F401958143
:103EF00090FF32C19F7095830E94C91E6AC1EE2057
:103F000009F4E4C02FC1242F26952695237030E0B4
:103F10002115310521F02130310561F05AC1FF2012
:103F200021F08A2D942F937002C080E090E00E94CF
:103F30007F1C4FC1FF2021F08A2D942F937002C067
:103F400080E090E00E94951C44C1842F837009F0AA
:103F50004EC0F1103EC12A2D229526952770220FC2
:103F6000220F8A2D8F70C82ED12CE12CF12C022E1D
:103F700004C0CC0CDD1CEE1CFF1C0A94D2F7A4FE7E
:103F800010C06FE070E080E090E004C0660F771F23
:103F9000881F991F2A95D2F7609570958095909506
:103FA00003C060E070E0CB01242F26952695237096
:103FB00030E02230310569F02330310589F06C2979
:103FC0007D298E299F292130310571F00E947525A8
:103FD00000C16C297D298E299F290E948F25F9C057
:103FE0000E947525C701B6010E945B25F2C0FF2023
:103FF00019F0842F817001C08695882309F4E9C0E7
:104000002A2D229526952770220F220F8A2D8F7038
:10401000C82ED12CE12CF12C022E04C0CC0CDD1CBE
:10402000EE1CFF1C0A94D2F7A4FE10C06FE070E0F3
:1040300080E090E004C0660F771F881F991F2A95C3
:10404000D2F7609570958095909503C060E070E020
:10405000CB01242F26952695237030E022303105A0
:1040600069F02330310589F06C297D298E299F293B
:104070002130310571F00E944926ABC06C297D29A1
:104080008E299F290E946326A4C00E944926C70149
:10409000B6010E942F269DC00A2D10E0F801E05EB7
:1040A000F109E531F10508F053C0E758FF4F0C94D2
:1040B000522F1A2D1F70842F8F71FF2021F00E9424
:1040C000C825812F19CF0E94E925812F0E94D01E7B
:1040D00080C0FF2049F0F4E0FE1508F47AC0842F78
:1040E0008F710E940E2675C085E08E1508F471C090
:1040F000F6CFFF2039F0842F8F710E94C82569C048
:10410000FF20C9F3842F8F710E94E92562C0FF2030
:1041100029F0842F8F710E94B3255BC00E94A925CE
:1041200058C0FF2051F0142F1F71812F0E94C82505
:1041300063E0812F0E94D7264CC081E00E94E026D8
:1041400091E09E1508F045C082E00E94E02641C043
:10415000FF2031F0EE2079F28A2D0E94B21D39C085
:10416000EE2081F28A2D0E947A1E33C04F706A2D94
:10417000C4010E9488090E94D0242BC0F11029C0DC
:10418000942F9F70492F50E042305105B9F04CF404
:104190004115510581F041305105D9F40E94752E29
:1041A00018C04330510569F04430510591F48A2D0F
:1041B0000E94022F0EC00E94512E0BC00E94A42EFE
:1041C00008C00E94CA2E05C04F706A2DC4010E940B
:1041D0008108BB20F1F00E94D32680FD1AC0F401B3
:1041E00012820E94CD260E94C825C4010E94172178
:1041F0000E94CD260F90DF91CF911F910F91FF90DC
:10420000EF90DF90CF90BF90AF909F908F900C94E5
:10421000E9250F90DF91CF911F910F91FF90EF90C3
:10422000DF90CF90BF90AF909F908F9008950F93A5
:104230001F93CF93DF93EC01288139818B819C817F
:10424000892B31F03F3F11F080E003C02F3FE1F7B1
:1042500081E0811113C0CE010E94F008882371F023
:10426000688179818A810E94C9268C010E947D26FD
:104270000E945025B801CE010E94D71EDF91CF9138
:104280001F910F9108950E94C1270E94D1270E947B
:1042900093270E94ED2780E090E00E947F1C80E041
:1042A00090E00C94951C0E94B1270C9443210E942D
:1042B000BE26292F22952F7030E02C3031054CF48A
:1042C0002A3031056CF42250310922303105B0F426
:1042D00007C02C30310571F02F30310559F00EC078
:1042E000803F31F018F4803E48F402C0843F31F43E
:1042F00081E0089593FB882780F9089580E0089570
:10430000CF93DF9300D000D01F92CDB7DEB70F90D0
:104310000F900F900F900F90DF91CF910895CF9352
:10432000DF9300D000D000D0CDB7DEB726960FB611
:10433000F894DEBF0FBECDBFDF91CF9108951F93DC
:10434000CF93DF93C091940116E080919501C81737
:1043500099F0D0E01C9FF0011D9FF00D1124EA564A
:10436000FE4F4081518162817381848195810E94D9
:104370008F212196C770E9CFDF91CF911F910895CA
:104380004091C6015091C7016091C8017091C90167
:104390008091CA019091CB010C948F21CF93809191
:1043A000CB0182958F7009F05FC08091C80188238E
:1043B00009F45AC020919401A09195016091C60121
:1043C0007091C7018091C9019091CA0131E06F3F9E
:1043D00009F030E0B32FC6E02A1709F445C0009772
:1043E00021F07F3F21F44B2F03C041E001C040E0AA
:1043F00030E040FD35C0C29FF001C39FF00D112495
:10440000EA56FE4F418174132BC04081641328C0CB
:104410004281411125C0438154814817590710F446
:1044200041505109481B590B483C5105C8F4809133
:10443000CB018F7080618093CB0186E0829FF00179
:10444000839FF00D1124E556FE4F80818F708061AF
:10445000808386EC91E00E941721CF910C949F21DC
:104460002F5F3F4F2770B8CFCF910895CF92DF9243
:10447000EF92FF920F931F93CF93DF93CDB7DEB7E9
:1044800062970FB6F894DEBF0FBECDBF8C0185E0FA
:10449000F801DE011D9601900D928A95E1F7D80191
:1044A0004C9111965C91119712966C9112971396FC
:1044B000ED90FC9014977091C601E091C701209196
:1044C000C9013091CA012115310531F0EF3F31F4B6
:1044D00081E07F3F19F403C081E001C080E0B82F84
:1044E000B170CB2E80FD6CC1D090C801DD2009F4E5
:1044F000F5C0F091CB01E216F30638F0C701821B3C
:10450000930B883C910548F09BC0209530952E0D6B
:104510003F1D283C310508F093C08F2F807F09F0A4
:1045200052C0E51314C0741312C0D62E61110FC00F
:10453000FF70F061F093CB010E94C02186EC91E006
:104540000E9417218091CB01F80185836CC1EF286F
:1045500031F05F3F31F481E04F3F19F403C081E057
:1045600001C080E080FD03C081E0862701C080E0BB
:10457000F82FF170FF2E80FF1CC0809194012091D4
:10458000950136E0821709F428C190E0389FF001C8
:10459000399FF00D1124EA56FE4F7181571306C062
:1045A0007081471303C07281671303C0019687703F
:1045B000E9CFD62E662309F436C18091CB01816004
:1045C0008093CB0153C0E51308C0741306C061117A
:1045D00004C0D8011596FC93AEC04D875E878D85CB
:1045E0009E856A8B0E9457216A89882329F1D62EDD
:1045F000662311F12091CB01822F82958F7090E07C
:1046000002970CF460C08091C6019091C701988711
:104610008F831986FB86EA862C87CE01079651C0C8
:10462000E51731F14D875E878D859E856A8B0E94E7
:1046300057216A8981112EC0C8010E941721A4C088
:104640008F2F807F69F77E2DF98AE88A89890E94F9
:10465000802186EC91E00E941721E6ECF1E086E0F3
:10466000DF011D928A95E9F70E94C021D12CDBC0A1
:104670007413D8CF6111D6CFD8011596FC93C80119
:104680000E941721E6ECF1E086E0DF011D928A9599
:10469000E9F7C9C0D62E662379F22091CB01822F8B
:1046A00082958F7090E0029774F08091C60190918E
:1046B000C7019A8389831B82FD82EC822E83CE01FF
:1046C00001960E94172186E0F801A6ECB1E0019066
:1046D0000D928A95E1F70E94CE216FC0E216F30693
:1046E00028F0C701821B930B9C0104C020953095D4
:1046F0002E0D3F1D283C310508F052C0D62E6623F2
:1047000009F49ACFE5132CC074132AC08091CB0111
:1047100080FD1DC0982F92959F70C9F0D801159605
:104720008C9315979F3039F09F5F9295907F8F7093
:10473000892B15968C93C8010E94172186E0F801F9
:10474000A6ECB1E001900D928A95E1F736C086E0C3
:10475000F801A6ECB1E001900D928A95E1F763C0F3
:104760004D875E878D859E850E945721882379F02D
:1047700086E0F801A6ECB1E001900D928A95E1F790
:104780000E94CE210E94C021DD24D3944CC0809190
:10479000CB0181608093CB01C8010E94172143C0E7
:1047A0007E2DF98AE88A89890E948021E6ECF1E071
:1047B00086E0DF011D928A95E9F70E94C02133C08F
:1047C000662309F439CF4D875E878D859E850E94CB
:1047D0005721882309F430CFCBCF4D875E878D8555
:1047E0009E850E94BE26292F22952F7030E0223010
:1047F00031052CF49F7041F0811106C00CC02430AB
:1048000031052CF49F7049F4805E883020F0C80197
:104810000E941721CF2CDC2C06C0D80115969C9144
:10482000907F91F7F8CF8D2D62960FB6F894DEBF8A
:104830000FBECDBFDF91CF911F910F91FF90EF90F1
:10484000DF90CF9008951F93CF93DF93CDB7DEB75E
:104850002C970FB6F894DEBF0FBECDBF4F8358879D
:1048600069877A878B879C87CE0107960E943622BC
:104870008823C1F02F8138858A859B85892B31F06B
:104880003F3F11F080E003C02F3FE1F781E081114D
:1048900047C04F81588569857A858B859C850E94A4
:1048A0008F213EC086E0FE013796DE011196019011
:1048B0000D928A95E1F7FF81E8854A855B85411570
:1048C000510531F0EF3F31F481E0FF3F19F403C0AF
:1048D00081E001C080E080FD23C02091950130E09F
:1048E000C9010196877099276091940170E086173D
:1048F0009707F1F1F983EA835D834C8396E0929FF9
:10490000D001939FB00D1124AA56BE4FFE013196DF
:1049100001900D929A95E1F7809395010E949F2155
:1049200016E08091940190919501891779F1189F73
:10493000C00111248A569E4F0E943622882331F1ED
:10494000E09194011E9FF0011124EA56FE4F408130
:10495000518162817381848195810E948F21809130
:10496000940190E001968770992780939401D9CFA4
:104970000E9453211092950110929401E6ECF1E00F
:1049800086E0DF011D928A95E9F7CACF2C960FB613
:10499000F894DEBF0FBECDBFDF91CF911F91089578
:1049A000EF92FF920F931F93CF93DF93FC01009739
:1049B00009F46FC0F12CEE24E394EF012196849169
:1049C000843740F4843008F055C0813081F0823063
:1049D00021F15FC0853709F447C0C0F19CE7980F0B
:1049E000903708F056C08F770E947A1E45C08F011D
:1049F0000E5F1F4FFE01849190E2980F983050F4A3
:104A00008770FE2D01C0FF0F8A95EAF78F2F0E9455
:104A1000C42715C00E94B21D14C08F010E5F1F4F26
:104A2000FE01849190E2980F983068F48770FE2D13
:104A300001C0FF0F8A95EAF78F2F0E94CA270E94B4
:104A4000ED27E80119C00E947A1EFBCFCF01029624
:104A5000FE01C491CC2361F0EFE9FFE03197F1F75B
:104A600000C00000C150F6CFCF010296FE01F490C5
:104A7000EC0102C00E94B21D8F2D882341F0EFE9A6
:104A8000FFE03197F1F700C000008150F6CFFE0142
:104A900094CFDF91CF911F910F91FF90EF900895E8
:104AA00008956093D0017093D1018093D2019093C7
:104AB000D3010C9443210F931F930091D0011091C7
:104AC000D1012091D2013091D301062B172B282B35
:104AD000392B0093D0011093D1012093D201309350
:104AE000D3011F910F910C9443210F931F930091B9
:104AF000D0011091D1012091D2013091D301062330
:104B00001723282339230093D0011093D101209338
:104B1000D2013093D3011F910F910C9443210F9335
:104B20001F930091D0011091D1012091D2013091B9
:104B3000D30106271727282739270093D001109380
:104B4000D1012093D2013093D3011F910F910C9486
:104B500043211092CC011092CD011092CE011092FF
:104B6000CF010C94432141E050E060E070E004C0CC
:104B7000440F551F661F771F8A95D2F74093CC01CB
:104B80005093CD016093CE017093CF010C944321DB
:104B900041E050E060E070E004C0440F551F661F24
:104BA000771F8A95D2F78091CC019091CD01A09189
:104BB000CE01B091CF01842B952BA62BB72B8093E0
:104BC000CC019093CD01A093CE01B093CF010C9472
:104BD000432141E050E060E070E004C0440F551F05
:104BE000661F771F8A95D2F740955095609570950E
:104BF0008091CC019091CD01A091CE01B091CF01D7
:104C000084239523A623B7238093CC019093CD01D1
:104C1000A093CE01B093CF010C94432141E050E02A
:104C200060E070E004C0440F551F661F771F8A952F
:104C3000D2F78091CC019091CD01A091CE01B0919D
:104C4000CF0184279527A627B7278093CC0190937F
:104C5000CD01A093CE01B093CF010C9443210F93CB
:104C60001F930091CC011091CD012091CE01309184
:104C7000CF01062B172B282B392B0093CC01109337
:104C8000CD012093CE013093CF011F910F910C9451
:104C900043210F931F930091CC011091CD012091DE
:104CA000CE013091CF010623172328233923009307
:104CB000CC011093CD012093CE013093CF011F91F1
:104CC0000F910C9443210F931F930091CC011091ED
:104CD000CD012091CE013091CF010627172728273B
:104CE00039270093CC011093CD012093CE0130934E
:104CF000CF011F910F910C9443210895CF92DF9221
:104D0000EF92FF920F931F93CF93DF93EC01C0902C
:104D1000D001D090D101E090D201F090D3018091E8
:104D2000CC019091CD01A091CE01B091CF01C82AC4
:104D3000D92AEA2AFB2A0FE110E0B701A601002ECA
:104D400004C076956795579547950A94D2F740FD2C
:104D500005C00150110988F780E007C0BE01802F0F
:104D60000E940C0C0197A9F3802FDF91CF911F9126
:104D70000F91FF90EF90DF90CF900895CF93DF9346
:104D8000EC010E947E26BE010E940C0CDF91CF91A7
:104D90000895CB010E94BE2608958091D401859587
:104DA0008595859508958091D4018770089598E040
:104DB000899F90011124622B6093D4010C94C82523
:104DC0004091D401809584238093D401982F9770CB
:104DD00069F450E0282F332727FD309542175307F9
:104DE00029F08595859585950C94E92508959091F0
:104DF000D401977081E009F480E0089590910C014E
:104E0000992361F190910D01992341F1982F969585
:104E1000969596959F3088F4E0910E01F0910F01E0
:104E2000E90FF11D877021E030E001C0220F8A9563
:104E3000EAF78181822B818308959091E90190FFA7
:104E40002DC01F928F9385EA98E09F938F930E94C5
:104E500050080F900F900F900F90089540910E0101
:104E600050910F0120E030E09FEFFA01E20FF31FB5
:104E70006281681799F09F3F19F4611101C0922F68
:104E80002F5F3F4F2E30310581F79F3F39F0FA01F8
:104E9000E90FF11D97FDFA95828308950895909189
:104EA0000C01992369F190910D01992349F1982FF3
:104EB0009695969596959F3090F4E0910E01F0911D
:104EC0000F01E90FF11D877021E030E001C0220FD2
:104ED0008A95EAF72095818128232183089590916E
:104EE000E90190FF1FC01F928F9387E898E09F937E
:104EF0008F930E9450080F900F900F900F9008957D
:104F000040910E0150910F0120E030E0FA01E20FD4
:104F1000F31F9281981301C012822F5F3F4F2E30F2
:104F20003105A1F7089581E090E0E0910E01F09144
:104F30000F01E80FF91F1082019680319105A9F742
:104F400008958091E80108959091E801982B90933D
:104F5000E801089580959091E80198239093E801E5
:104F600008951092E80108959091E701982B90938D
:104F7000E701089580959091E70198239093E701C8
:104F800008951092E70108959091E601982B90936F
:104F9000E601089580959091E60198239093E601AB
:104FA00008951092E60108958093D5010895109216
:104FB000D501089540910E0150910F0120E030E09D
:104FC00080E0FA01E20FF31F918191118F5F2F5F53
:104FD0003F4F2F303105A9F70895E0910E01F09170
:104FE0000F018091E8018083E0910E01F0910F01A3
:104FF00080819091E701892B8083E0910E01F091EF
:105000000F0180819091E601892B80839091D501D9
:10501000992361F0E0910E01F0910F018081892BBD
:1050200080830E94DA2781111092D50180910E01B0
:1050300090910F010C943A1C9093390180933801A0
:10504000089540E0009739F09C01215031098223F6
:1050500093234F5FF7CF842F08958295982F9C7CE0
:1050600096959695837344E0849F90011124922B2A
:10507000892F8A7A86959575990F892B08951F93A4
:10508000CF93DF931F92CDB7DEB799830E942D286F
:10509000182F9981892F0E942D28212F30E0322F3F
:1050A0002227A901482BCA010F90DF91CF911F91B0
:1050B000089580911402843039F11092EA0120E4BD
:1050C00088E190E00FB6F894A895809360000FBE39
:1050D0002093600080E00E94600880E00E94A60C9F
:1050E00083B7817F846083BF83B7816083BF7894F7
:1050F000889583B78E7F83BF88E10FB6F89480933D
:105100006000109260000FBE08950895089580E039
:105110000E9460080E9485280E94FF0C0E94862839
:105120000E94C10D91E0811101C090E0892F089586
:105130000E94532180E00E9460080E94402E0E943D
:105140002E1C0C94A60C1F920F920FB60F921124D6
:105150008F939F93AF93BF938091EA01811113C006
:105160008091EB019091EC01A091ED01B091EE01E5
:105170004196A11DB11D8093EB019093EC01A0938A
:10518000ED01B093EE01BF91AF919F918F910F9080
:105190000FBE0F901F90189582E084BD93E095BDDF
:1051A0009AEF97BD80936E0008952FB7F894809181
:1051B000EB019091EC01A091ED01B091EE012FBFB8
:1051C0000895CF92DF92EF92FF920F931F932FB724
:1051D000F8944091EB015091EC016091ED017091D8
:1051E000EE012FBF6A017B01EE24FF248C0120E039
:1051F00030E0C016D106E206F30610F44150510922
:10520000481B590BCA011F910F91FF90EF90DF903F
:10521000CF9008951F920F920FB60F9211248F9383
:105220009F93AF93BF938091EB019091EC01A0917C
:10523000ED01B091EE010196A11DB11D8093EB012E
:105240009093EC01A093ED01B093EE01BF91AF916B
:105250009F918F910F900FBE0F901F9018950E94F5
:105260003519F8942FEF87EA91E62150804090405D
:10527000E1F700C0000087E090EBDC0180931F02A3
:1052800090932002A0932102B09322022CE088E1A7
:1052900090E00FB6F894A895809360000FBE20931D
:1052A0006000FFCFCF92DF92EF92FF920F931F9398
:1052B000CF93DF93C82E84E0D82E01E010E08D2D2F
:1052C0000E947E0D7C01CDE0D0E098010C2E02C042
:1052D000220F331F0A94E2F72E213F21232B49F09E
:1052E0006C2F7D2D80E00E948B09C81202C081E0E6
:1052F00007C0219750F7DA948FEFD812E0CF80E003
:10530000DF91CF911F910F91FF90EF90DF90CF90A1
:105310000895CF93C82F8CE20E945229882321F050
:105320008C2FCF910C94522980E0CF910895CF9388
:105330000E94E92A811102C00E94CA2A8AEC98E0E0
:105340000E94B707C5E6C15049F00E94FF0C8FE3E9
:105350009CE90197F1F700C00000F5CF83EC98E0DD
:105360000E94B70789E20E948929811111C18AE24E
:105370000E94892981110E94CA2A85E00E948929F8
:1053800081110E942F290E94F42A8093E90187E06D
:105390000E948929882399F18BE10E948929882319
:1053A00051F09091E90191FB882780F921E0822753
:1053B00080FB91F922C08EE00E948929882351F058
:1053C0009091E90192FB882780F921E0822780FBF8
:1053D00092F913C080E10E9489299091E901882304
:1053E00041F093FB882780F921E0822780FB93F925
:1053F00004C0892F809580FB90F99093E9018091FA
:10540000E9010E94F82A0E94062B80931D0280EE7B
:105410000E948929882341F080911D02982F909540
:1054200090FB80F980931D0289E30E9489298823DB
:1054300059F090911D0291FB882780F921E0822785
:1054400080FB91F990931D0282EE0E9489298823A6
:1054500059F090911D0292FB882780F921E0822764
:1054600080FB92F990931D0286EE0E948929882381
:1054700059F090911D0293FB882780F921E0822743
:1054800080FB93F990931D0283EE0E948929882363
:1054900059F090911D0294FB882780F921E0822722
:1054A00080FB94F990931D0285E30E94892988234B
:1054B00059F090911D0295FB882780F921E0822701
:1054C00080FB95F990931D0281E30E94892988232E
:1054D00059F090911D0296FB882780F921E08227E0
:1054E00080FB96F990931D0281E10E94892988230F
:1054F00059F090911D0297FB882780F921E08227BF
:1055000080FB97F990931D0280911D020E940A2B47
:1055100080911D0287FB882780F980930D0187E227
:105520000E948929C82F8EE10E9489298111C260B9
:105530008FE10E9489298111C46080E20E9489293B
:105540008111C86081E20E9489298111C06182E2D3
:105550000E9489298111C06283E20E9489298111F8
:10556000C06484E20E948929882311F0C06802C0C7
:10557000CC2329F08C2F0E94012B6C2F03C00E949A
:10558000FD2A682F70E080E090E0CF910C945125C7
:10559000CF9108956DEE7EEF80E090E00E948A2F1B
:1055A00060E082E090E00E946C2F60E083E090E099
:1055B0000E946C2F60E084E090E00E946C2F60E01D
:1055C00085E090E00E946C2F60E086E090E00C9413
:1055D0006C2F80E090E00E94662F21E08D3E9E4F70
:1055E00009F020E0822F089582E090E00C94582F7B
:1055F000682F82E090E00C946C2F83E090E00C9494
:10560000582F682F83E090E00C946C2F84E090E09A
:105610000C94582F682F84E090E00C946C2F86E057
:1056200090E00C94582F682F86E090E00C946C2F3B
:10563000CF93C82F1F928F9325EE38E03F932F937F
:105640000E94500861E070E080E090E004C0660FC6
:10565000771F881F991FCA95D2F70E9451250F9076
:105660000F900F900F90CF910C945321CF938B31CB
:1056700009F40FC208F049C08E3009F41DC200F5CC
:10568000873009F4E7C1A8F4863009F0A1C28091FF
:10569000E901817F8E7F8093E90185E79AE00E948E
:1056A000B70781E69EE00E94B70781E08093EF0193
:1056B000CFC1883009F45BC08B3009F4C5C188C202
:1056C000813109F46DC220F4803109F408C280C22E
:1056D000863109F41EC2893109F07AC286E69AE061
:1056E0000E94B70786E29AE00E94B70784EF99E02C
:1056F0000E94B7078DEC99E00E94B70781E999E015
:105700000E94B70783E699E0A1C1853309F45CC222
:1057100068F4873209F458C228F48E3108F458C26C
:105720008D5153C2893209F44FC252C2833438F4C6
:105730008A3308F047C2883309F486C149C28334EA
:1057400009F442C2883409F043C20E94532185E41F
:105750009EE00E94B7079FEF23ED80E39150204029
:105760008040E1F700C000000E942F2971C185E64A
:105770009EE00E94B70782EB9DE00E94B7070E945F
:10578000FD2A1F928F938FEA9DE09F938F930E9433
:1057900050088DEA9DE00E94B7070E94F42AC82FA6
:1057A0008AE99DE00E94B7071F92CF9325E93DE06B
:1057B0003F932F930E94500883E99DE00E94B70712
:1057C00089E89DE00E94B7078C2F81701F928F930C
:1057D00026E83DE03F932F930E94500884E89DE027
:1057E0000E94B7078AE79DE00E94B707C1FB8827A0
:1057F00080F91F928F9327E73DE03F932F930E94FC
:10580000500885E79DE00E94B70789E69DE00E9469
:10581000B707C2FB882780F91F928F9326E63DE0E9
:105820003F932F930E94500884E69DE00E94B707A3
:105830008BE59DE00E94B707C3FBCC27C0F91F9200
:10584000CF9388E59DE09F938F930E94500886E553
:105850009DE00E94B7070E94062BC82F82E49DE0BE
:105860000E94B7071F92CF932DE33DE03F932F9304
:105870000E9450088BE39DE00E94B70782E29DE002
:105880000E94B7078C2F81701F928F932FE13DE00C
:105890003F932F930E9450088DB79EB780960FB606
:1058A000F8949EBF0FBE8DBF8DE19DE00E94B707AB
:1058B00086E09DE00E94B707C1FB882780F91F9210
:1058C0008F9323E03DE03F932F930E94500881E0A7
:1058D0009DE00E94B7078FEE9CE00E94B707C2FBD5
:1058E000882780F91F928F932CEE3CE03F932F93F3
:1058F0000E9450088AEE9CE00E94B70788ED9CE069
:105900000E94B707C3FB882780F91F928F9325ED6C
:105910003CE03F932F930E94500883ED9CE00E944F
:10592000B70789EC9CE00E94B707C4FB882780F981
:105930001F928F9326EC3CE03F932F930E945008D8
:1059400084EC9CE00E94B70782EB9CE00E94B707C2
:10595000C5FB882780F91F928F932FEA3CE03F9385
:105960002F930E9450088DEA9CE00E94B70781E9BE
:105970009CE00E94B707C6FB882780F91F928F938F
:105980002EE83CE03F932F930E9450088CE89CE067
:105990000E94B70784E89CE00E94B707C7FBCC27AA
:1059A000C0F91F92CF9381E89CE09F938F930E9450
:1059B00050088FE79CE00E94B7070E940F2BC82F6A
:1059C00088E69CE00E94B7071F92CF9323E63CE055
:1059D0003F932F930E9450088DB79EB780960FB6C5
:1059E000F8949EBF0FBE8DBF81E69CE00E94B70772
:1059F00087E59CE00E94B7078C2F81701F928F93E0
:105A000024E53CE03F932F930E94500882E59CE000
:105A10000E94B70789E49CE00E94B707C6951F92D1
:105A2000CF9386E49CE09F938F930E94500884E478
:105A30009CE00E94B7078DB79EB708960FB6F89402
:105A40009EBF0FBE8DBF04C080E99AE00E94B707D9
:105A5000C1E0C3C08091E901C82FC095C170C0FBEF
:105A600080F98093E901CC2349F089E39EE00E940C
:105A7000B7078091E9018660886045C08CE29EE0AE
:105A80000E94B7078091E901897F877F8093E901B0
:105A9000DFCF8091E90181FBCC27C0F991E0C927D4
:105AA000C0FB81F98093E901CC2319F08FE19EE0DE
:105AB00025C081E19EE0CACF8091E90182FBCC271D
:105AC000C0F991E0C927C0FB82F98093E901CC239A
:105AD00019F082E09EE012C082EF9DE0B7CF809186
:105AE000E90183FBCC27C0F991E0C927C0FB83F90A
:105AF0008093E901CC2351F086EE9DE00E94B70728
:105B00008091E90181608093E90167C089ED9DE0A2
:105B10009DCF85E599E00E94B7070E942E1C1F9239
:105B20008F938BE399E09F938F930E94500880910D
:105B30000C011F928F9384E299E09F938F930E94B0
:105B40005008809182011F928F9381E199E09F9389
:105B50008F930E94500880910D011F928F938EEFBA
:105B600098E09F938F930E9450088091EB01909151
:105B7000EC01A091ED01B091EE01BF93AF939F9323
:105B80008F938AEE98E09F938F930E9450088DB771
:105B90009EB746960FB6F8949EBF0FBE8DBF58CFE6
:105BA0000E945321C0910D0181E0C827C0930D01CF
:105BB000CC2329F08FEC9DE00E94B7070EC084EC47
:105BC0009DE044CF895301C080E00E94182B40CF54
:105BD00082EC9DE00E94B707C0E08C2FCF91089522
:105BE00080E0089580E00895CF93C82F8091EF0161
:105BF000882319F0813049F03BC0E0910E01F0910B
:105C00000F0180818232B1F507C0E0910E01F09161
:105C10000F018081823249F48C2F0E94F02D811176
:105C200024C08C2F0E94362B21C08C2F0E94F22D75
:105C300081111BC0C43189F018F4CB3029F010C099
:105C4000C93259F0C83361F485E79AE00E94B7077A
:105C500081EE98E00E94B70708C01092EF010CC0D7
:105C60008FED98E00E94B70707C081E0817006C001
:105C70001092EF0180E002C080E0F8CFCF9108954C
:105C80000E94E92A811102C00E94CA2A0E940F2B99
:105C900080931E0280FF02C0869501C080E00C94B4
:105CA000600880911E02982F969539F48170826069
:105CB000816080931E020E94132B8091E90180FF76
:105CC0000FC080911E0286951F928F9382EB9EE0FB
:105CD0009F938F930E9450080F900F900F900F90FA
:105CE00080911E0286950C94600880911E02982F68
:105CF000969591F09158990F8170892B80931E028F
:105D00008E7F91E009F490E080911E0290FB80F973
:105D100080931E020E94132B8091E90180FF0FC027
:105D200080911E0286951F928F938AE99EE09F9331
:105D30008F930E9450080F900F900F900F908091BA
:105D40001E0286950C94600880911E02982F9095F3
:105D500090FB80F980931E020E94132B8091E90131
:105D600080FF0FC080911E0281701F928F9384E884
:105D70009EE09F938F930E9450080F900F900F907A
:105D80000F9080911E0280FF02C0869501C080E0C6
:105D90000C94600830911E02232F26952F5F2F77D9
:105DA000822F90E0317002972CF4220F232B209346
:105DB0001E0202C030931E0280911E028E7F91E06F
:105DC00009F490E080911E0290FB80F980931E02FE
:105DD0000E94132B8091E90180FF0FC080911E0269
:105DE00086951F928F9380E79EE09F938F930E94EA
:105DF00050080F900F900F900F9080911E02869583
:105E00000C94600820911E02922F96959827990F66
:105E1000822F8170892B80931E028E7F91E009F47E
:105E200090E080911E0290FB80F980931E020E94F8
:105E3000132B80911E0286950C946008991B79E0C3
:105E400004C0991F961708F0961B881F7A95C9F70A
:105E500080950895AA1BBB1B51E107C0AA1FBB1F59
:105E6000A617B70710F0A61BB70B881F991F5A95E6
:105E7000A9F780959095BC01CD01089597FB072E59
:105E800016F4009407D077FD09D00E942A2F07FC52
:105E900005D03EF4909581959F4F0895709561953A
:105EA0007F4F0895EE0FFF1F0590F491E02D0994A8
:105EB000F999FECF92BD81BDF89A992780B50895D2
:105EC000A6E1B0E044E050E00C94922FA8E1B0E0ED
:105ED00042E050E00C94922F262FF999FECF92BD0C
:105EE00081BDF89A019700B4021639F01FBA20BD9F
:105EF0000FB6F894FA9AF99A0FBE08950396272FD1
:105F00000E946D2F0E946C2F252F0E946D2F242F31
:105F10000C946D2F0196272F0E946D2F0C946C2FDF
:105F2000DC01CB01FC01F999FECF06C0F2BDE1BD59
:105F3000F89A319600B40D9241505040B8F7089548
:045F4000F894FFCF03
:105F4400FFFFA3147215A6143F150B150101D6010A
:105F54000F1F6C7666734913035343796933091928
:105F6400293959403620391408DE07BE0785071140
:085F7400072A07430763070039
:00000001FF

@ -0,0 +1,162 @@
#include "satan.h"
#ifdef RGBLIGHT_ENABLE
#include "rgblight.h"
#endif
// Used for SHIFT_ESC
#define MODS_CTRL_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))
// Each layer gets a name for readability, which is then used in the keymap matrix below.
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
// Layer names don't all need to be of the same length, obviously, and you can also skip them
// entirely and just use numbers.
#define _BL 0
#define _FL 1
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Keymap _BL: (Base Layer) Default Layer
* ,-----------------------------------------------------------.
* |Esc~| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp |
* |-----------------------------------------------------------|
* |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ |
* |-----------------------------------------------------------|
* |CAPS | A| S| D| F| G| H| J| K| L| ;| '|Return |
* |-----------------------------------------------------------|
* |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift |
* |-----------------------------------------------------------|
* |Ctrl|Gui |Alt | Space |Alt |Gui |FN |Ctrl |
* `-----------------------------------------------------------'
*/
[_BL] = KEYMAP(
F(0), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, \
KC_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_CAPS, 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, \
KC_LCTL, KC_LGUI,KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(_FL), KC_RCTL),
/* Keymap _FL: Function Layer
* ,-----------------------------------------------------------.
* | | | | | | | | | | | | | | RESET|
* |-----------------------------------------------------------|
* | | | | | | | | | | | |BL-|BL+|BL |
* |-----------------------------------------------------------|
* | | | | | | | | | | | | |
* |-----------------------------------------------------------|
* | | F1|F2 | F3|F4 | F5| F6| F7| F8| | | |
* |-----------------------------------------------------------|
* | | | | | | | | |
* `-----------------------------------------------------------'
*/
[_FL] = KEYMAP(
#ifdef RGBLIGHT_ENABLE
KC_GRV, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, \
KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_INC, BL_TOGG, \
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
KC_TRNS, F(1), F(2), F(3), F(4), F(5), F(6), F(7), F(8), KC_TRNS, KC_TRNS, KC_TRNS, \
KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
#else
KC_GRV, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, \
KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_INC, BL_TOGG, \
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
#endif
};
enum function_id {
SHIFT_ESC,
#ifdef RGBLIGHT_ENABLE
RGBLED_TOGGLE,
RGBLED_STEP_MODE,
RGBLED_INCREASE_HUE,
RGBLED_DECREASE_HUE,
RGBLED_INCREASE_SAT,
RGBLED_DECREASE_SAT,
RGBLED_INCREASE_VAL,
RGBLED_DECREASE_VAL
#endif
};
const uint16_t PROGMEM fn_actions[] = {
[0] = ACTION_FUNCTION(SHIFT_ESC),
#ifdef RGBLIGHT_ENABLE
[1] = ACTION_FUNCTION(RGBLED_TOGGLE),
[2] = ACTION_FUNCTION(RGBLED_STEP_MODE),
[3] = ACTION_FUNCTION(RGBLED_INCREASE_HUE),
[4] = ACTION_FUNCTION(RGBLED_DECREASE_HUE),
[5] = ACTION_FUNCTION(RGBLED_INCREASE_SAT),
[6] = ACTION_FUNCTION(RGBLED_DECREASE_SAT),
[7] = ACTION_FUNCTION(RGBLED_INCREASE_VAL),
[8] = ACTION_FUNCTION(RGBLED_DECREASE_VAL),
#endif
};
void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
static uint8_t shift_esc_shift_mask;
switch (id) {
case SHIFT_ESC:
shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK;
if (record->event.pressed) {
if (shift_esc_shift_mask) {
add_key(KC_GRV);
send_keyboard_report();
} else {
add_key(KC_ESC);
send_keyboard_report();
}
} else {
if (shift_esc_shift_mask) {
del_key(KC_GRV);
send_keyboard_report();
} else {
del_key(KC_ESC);
send_keyboard_report();
}
}
break;
//led operations
#ifdef RGBLIGHT_ENABLE
case RGBLED_TOGGLE:
if (record->event.pressed) {
rgblight_toggle();
}
break;
case RGBLED_INCREASE_HUE:
if (record->event.pressed) {
rgblight_increase_hue();
}
break;
case RGBLED_DECREASE_HUE:
if (record->event.pressed) {
rgblight_decrease_hue();
}
break;
case RGBLED_INCREASE_SAT:
if (record->event.pressed) {
rgblight_increase_sat();
}
break;
case RGBLED_DECREASE_SAT:
if (record->event.pressed) {
rgblight_decrease_sat();
}
break;
case RGBLED_INCREASE_VAL:
if (record->event.pressed) {
rgblight_increase_val();
}
break;
case RGBLED_DECREASE_VAL:
if (record->event.pressed) {
rgblight_decrease_val();
}
break;
case RGBLED_STEP_MODE:
if (record->event.pressed) {
rgblight_step();
}
break;
#endif
}
}

@ -0,0 +1,36 @@
/*
Copyright 2012 Jun Wako <wakojun@gmail.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include <avr/io.h>
#include "stdint.h"
#include "led.h"
void led_init_ports() {
// * Set our LED pins as output
DDRB |= (1<<2);
}
void led_set_kb(uint8_t usb_led) {
if (usb_led & (1<<USB_LED_CAPS_LOCK)) {
// Turn capslock on
PORTB |= (1<<2);
} else {
// Turn capslock off
PORTB &= ~(1<<2);
}
}

@ -0,0 +1 @@
For WS2812B LED strip support, connect DIN from strip to PE2 on ATmega32u4 controller (see reference image controller.jpg)

Binary file not shown.

After

Width:  |  Height:  |  Size: 424 KiB

@ -0,0 +1,36 @@
#include "satan.h"
#ifdef BACKLIGHT_ENABLE
#include "backlight.h"
#endif
__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)();
}
led_init_ports();
#ifdef BACKLIGHT_ENABLE
init_backlight_pin();
#endif
};
void matrix_scan_kb(void) {
// put your looping keyboard code here
// runs every cycle (a lot)
if (matrix_scan_user) {
(*matrix_scan_user)();
}
};

@ -0,0 +1,42 @@
#ifndef SATAN_H
#define SATAN_H
#include "matrix.h"
#include "keymap_common.h"
#include <stddef.h>
/* Clueboard matrix layout
* ,-----------------------------------------------------------.
* | 00 |01| 02| 03| 04| 05| 06| 07| 08| 09| 0a| 0b| 0c| 0d |
* |-----------------------------------------------------------|
* | 10 | 11| 12| 13| 14| 15| 16| 17| 18| 19| 1a| 1b| 1c| 1d |
* |-----------------------------------------------------------|
* | 20 | 21| 22| 23| 24| 25| 26| 27| 28| 29| 2a| 2b| 2d |
* |-----------------------------------------------------------|
* | 30 | 32| 33| 34| 35| 36| 37| 38| 39| 3a| 3b| 3d |
* |-----------------------------------------------------------|
* | 40 | 41 | 42 | 45 | 4a | 4b | 4c | 4d |
* `-----------------------------------------------------------'
*/
// The first section contains all of the arguments
// The second converts the arguments into a two-dimensional array
#define KEYMAP( \
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, \
k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, \
k40, k41, k42, k45, k4a, k4b, k4c, k4d \
) \
{ \
{k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d}, \
{k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d}, \
{k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, KC_NO, k2d}, \
{k30, KC_NO, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, KC_NO, k3d}, \
{k40, k41, k42, KC_NO, KC_NO, k45, KC_NO, KC_NO, KC_NO, KC_NO, k4a, k4b, k4c, k4d} \
}
void matrix_init_user(void);
void matrix_scan_user(void);
#endif
Loading…
Cancel
Save