From fa2eedb7bd906634b8c500ba0d91638e63eaafed Mon Sep 17 00:00:00 2001 From: Roman Zolotarev Date: Sat, 16 Apr 2016 16:57:58 +0800 Subject: Add Roman's single layer layout based on Norman --- .../keymaps/romanzolotarev-norman-osx/keymap.c | 45 + .../keymaps/romanzolotarev-norman-osx/readme.md | 28 + .../romanzolotarev-norman-osx.hex | 1092 ++++++++++++++++++++ .../romanzolotarev-norman-osx.png | Bin 0 -> 96954 bytes 4 files changed, 1165 insertions(+) create mode 100644 keyboard/ergodox_ez/keymaps/romanzolotarev-norman-osx/keymap.c create mode 100644 keyboard/ergodox_ez/keymaps/romanzolotarev-norman-osx/readme.md create mode 100644 keyboard/ergodox_ez/keymaps/romanzolotarev-norman-osx/romanzolotarev-norman-osx.hex create mode 100644 keyboard/ergodox_ez/keymaps/romanzolotarev-norman-osx/romanzolotarev-norman-osx.png diff --git a/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-osx/keymap.c b/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-osx/keymap.c new file mode 100644 index 0000000000..e23c5a1d6a --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-osx/keymap.c @@ -0,0 +1,45 @@ +#include "ergodox_ez.h" +#include "debug.h" +#include "action_layer.h" + +#define BASE 0 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [BASE] = KEYMAP( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_F5, + KC_TAB, KC_Q, KC_W, KC_D, KC_F, KC_K, KC_BSLS, + CTL_T(KC_ESC), KC_A, KC_S, KC_E, KC_T, KC_G, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LBRC, + KC_F1, KC_F2, KC_F3, KC_F4, KC_LGUI, + /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_VOLD, KC_MUTE, + /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_VOLU, + /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_BSPC, CTL_T(KC_ESC), KC_LALT, + // + /*-*/ KC_F6, KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQL, + /*-*/ KC_NO, KC_J, KC_U, KC_R, KC_L, KC_SCLN, KC_MINS, + /*-*/ /*-*/ KC_Y, KC_N, KC_I, KC_O, KC_H, KC_ENT, + /*-*/ KC_RBRC, KC_P, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + /*-*/ /*-*/ /*-*/ KC_RGUI, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, + KC_MPLY, KC_MNXT, + KC_MPRV, + KC_RALT, KC_QUOT, KC_SPC + ) +}; + +const uint16_t PROGMEM fn_actions[] = { +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { +}; + +// Runs just one time when the keyboard initializes. +void matrix_init_user(void) { + ergodox_board_led_off(); + ergodox_right_led_1_off(); + ergodox_right_led_2_off(); + ergodox_right_led_3_off(); +}; + +// Runs constantly in the background, in a loop. +void matrix_scan_user(void) { +}; diff --git a/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-osx/readme.md b/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-osx/readme.md new file mode 100644 index 0000000000..80475ab21e --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-osx/readme.md @@ -0,0 +1,28 @@ +# Roman's Layout + +There is only one layer based on [Norman layout](https://normanlayout.info/). + +Looking for multiple-layer layouts? + +- [Symbols, arrows, plover, HJKL arrows](../romanzolotarev-norman-plover-osx-hjkl/) +- [Same with IJKL arrows](../romanzolotarev-norman-plover-osx/) + +[![keyboard-layout](romanzolotarev-norman-osx.png)](http://www.keyboard-layout-editor.com/#/gists/9e89d54f1ea6eeeb7dab1b2d19d28195) + +## Functional Keys + +- Tap `F1` to mute microphone via [Shush](http://mizage.com/shush/). +- Tap `F2` to copy screenshot to the clipboard. +- Hold `SHIFT` and tap `F2` to save screenshot as a file. +- Tap `F3`, `F4`, `F5`, `F6` to resize a window via [Divvy](http://mizage.com/divvy/). + +## CTRL/ESC + +CTRL and ESC are frequently used in Vim. + +- Tap `CTRL/ESC` to send `ESC`. +- Hold `CTRL/ESC` to use as `CTRL`. + +## Activate N-rollover + +- Hold left `SHIFT` and right `SHIRT` and then tap `N`. diff --git a/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-osx/romanzolotarev-norman-osx.hex b/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-osx/romanzolotarev-norman-osx.hex new file mode 100644 index 0000000000..1be94c43d1 --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-osx/romanzolotarev-norman-osx.hex @@ -0,0 +1,1092 @@ +:100000000C94BB010C94FF010C94FF010C94FF01B4 +:100010000C94FF010C94FF010C94FF010C94FF0160 +:100020000C94FF010C94FF010C94E20A0C94B40BA5 +:100030000C94FF010C94FF010C94FF010C94FF0140 +:100040000C94FF010C9432200C94FF010C94FF01DE +:100050000C94FF010C94BD190C94FF010C94FF014A +:100060000C94FF010C94FF010C94FF010C94FF0110 +:100070000C94FF010C94FF010C94FF010C94FF0100 +:100080000C94FF010C94FF010C94FF010C94FF01F0 +:100090000C94FF010C94FF010C94FF010C94FF01E0 +:1000A0000C94FF010C94FF010C94FF01210C430CF4 +:1000B000310D430C310D880CAB0C310D000D130DBF +:1000C000FF0FFF0F3C103C107F10BD10D612D61250 +:1000D000D610D612D711D711AA12D612D612C11223 +:1000E00035002B002971E1003A0000001E001400C9 +:1000F00004001D003B00E2001F001A0016001B0058 +:100100003C00297120000700080006003D002A007D +:100110002100090017001900E300A90022000E00C9 +:100120000A0005000000AA003E00310000002F0078 +:100130000000A8003F000000000030000000AE00FA +:1001400023000D001C0013000000AB002400180069 +:1001500011001000E700AC00250015000C0036006F +:1001600050002C0026000F00120037005100340010 +:10017000270033000B0038005200E6002E002D004F +:100180002800E5004F0000001603450072006700DC +:100190006F0044006F007800200045005A00000006 +:1001A00016034500720067006F0044006F0078007E +:1001B000200045005A0000000403090409026D00F4 +:1001C000040100A0FA090400000103010100092153 +:1001D00011010001223F000705810308000A0904FC +:1001E00001000103010200092111010001224D005B +:1001F0000705820308000A09040200010300000049 +:100200000921110100012236000705830308000AB5 +:10021000090403000103000000092111010001226B +:1002200039000705840310000112011001000000CD +:1002300008EDFE071301000102000105010906A1F6 +:1002400001050719E029E7150025019508750181C9 +:100250000205081901290595057501910295017599 +:100260000391010507190029771500250195787577 +:10027000018102C005010980A10185021601002645 +:10028000B7001A01002AB700751095018100C0055A +:100290000C0901A1018503160100269C021A010028 +:1002A0002A9C02751095018100C005010902A10177 +:1002B0000901A10005091901290515002501950568 +:1002C000750181029501750381010501093009312C +:1002D0001581257F95027508810609381581257FCE +:1002E000950175088106050C0A38021581257F9550 +:1002F0000175088106C0C005010906A1010507199D +:10030000E029E71500250195087501810295017521 +:1003100008810105081901290595057501910295C6 +:1003200001750391010507190029FF150025FF95A7 +:100330000675088100C000000000000000000000F9 +:1003400000010204060A0F17202C3A4A5D71879DAE +:10035000B3C7DAE9F5FCFFFCF5E9DAC7B39D8771AD +:100360005D4A3A2C20170F0A060402010000000023 +:1003700000000000000011241FBECFEFDAE0DEBF56 +:10038000CDBF04B603FE24C08091EF019091F0012F +:10039000A091F101B091F2018730904BA740B04B92 +:1003A000B9F41092EF011092F0011092F101109245 +:1003B000F20114BE84B7877F84BF88E10FB6F8943A +:1003C00080936000109260000FBEE0E0FFE30995AB +:1003D00011E0A0E0B1E0E8EEF3E402C005900D9278 +:1003E000A433B107D9F711E0A4E3B1E001C01D9235 +:1003F000AF3EB107E1F70E9426080C94F2210C945D +:100400000000089556985E9825982D9826982E9865 +:1004100027982F98089508950C940B0256985E988B +:1004200025982D9826982E9827982F988FEF90E052 +:10043000909389008093880090938B0080938A002A +:1004400090938D0080938C00259A2D9A2FEF80E752 +:1004500092E0215080409040E1F700C00000269AD1 +:100460002E9A2FEF80E792E0215080409040E1F7F4 +:1004700000C00000279A2F9A2FEF80E792E02150CA +:1004800080409040E1F700C0000025982D982FEFA4 +:1004900080E792E0215080409040E1F700C00000EA +:1004A00026982E982FEF80E792E0215080409040D0 +:1004B000E1F700C0000027982F9856985E9825987D +:1004C0002D9826982E9827982F98089589EA80933A +:1004D000800089E08093810024982C983F988AB10D +:1004E0008F748AB96E98479A8BB1806B8BB9769A64 +:1004F0000E940E020C94020280E28093000180911F +:10050000340181110EC00E94CB0281E0809334013E +:100510002FEF83ED90E3215080409040E1F700C041 +:10052000000080E40E94D1028093000181112EC05E +:100530000E94FB0280930001811128C00E94FB02EF +:1005400080930001811122C08FE30E94FB028093FF +:10055000000181111BC00E94F30280E40E94D102BD +:1005600080930001811112C08CE00E94FB028093F5 +:10057000000181110BC00E94FB02809300018111D8 +:1005800005C08FE30E94FB02809300010E94F302EA +:100590008091000108951092B9008AE08093B8001C +:1005A000089594EA9093BC009091BC0097FFFCCF13 +:1005B0009091B900987F983021F0903111F081E04E +:1005C00008958093BB0084E88093BC008091BC00B8 +:1005D00087FFFCCF8091B900887F883111F080348B +:1005E00071F780E0089584E98093BC008091BC009D +:1005F00084FDFCCF08958093BB0084E88093BC0009 +:100600008091BC0087FFFCCF9091B900987F81E07A +:10061000983209F480E0089584E88093BC008091CA +:10062000BC0087FFFCCF8091BB0008958091000142 +:10063000811115C080E40E94D102809300018111D4 +:100640000CC082E10E94FB0280930001811105C071 +:100650008FEF0E94FB02809300010E94F30284B19D +:10066000807F84B985B1807F85B98AB1837F8AB95B +:100670008BB1837F8BB93E98469808950E947C0287 +:10068000809300010E94160380B38C7080BB81B3FD +:10069000836F81BBA6E3B1E0E4E4F1E08EE08E0F6E +:1006A00011921D928E13FCCF0C946602BF92CF92D2 +:1006B000DF92EF92FF920F931F93CF93DF9380917E +:1006C0000001882379F0809135018F5F8093350197 +:1006D000811108C00E947C0280930001811102C038 +:1006E0000E940E0206E311E0C0E0D0E0DD24D394C6 +:1006F00082E0C82EEE24E394F12CC730D10500F53A +:1007000080910001811164C080E40E94D102809335 +:100710000001811112C082E10E94FB02809300015E +:1007200081110BC0C7010C2E01C0880F0A94EAF793 +:1007300080950E94FB02809300010E94F30248C052 +:10074000CA30A1F028F4C83059F0C93061F005C0B2 +:10075000CC3089F070F0CD3089F0209A289810C004 +:10076000219A29980DC0229A2A980AC0239A2B9878 +:1007700007C0529A01C0539A5B9802C03E9A4698AD +:1007800090EA9A95F1F79FB1799902C082E001C091 +:1007900080E091709D25982B7C9902C084E001C077 +:1007A00080E0892B7D9902C038E001C030E0832BC6 +:1007B0007E9902C020E101C020E0822B9FB190957C +:1007C000991F9927991F9295990F907E892B0FC099 +:1007D00080910001811149C080E40E94D102809380 +:1007E0000001882379F1B12C0E94F3028B2DF801CE +:1007F0009081981719F08083C09201010E9416031E +:1008000021960F5F1F4FCE30D10509F076CF809132 +:100810000101882361F1815080930101882339F01F +:100820008FE99FE00197F1F700C0000020C0A4E429 +:10083000B1E0E6E3F1E0CF01825F91919D938E13E9 +:10084000FCCF15C083E10E94FB028093000181115F +:10085000CACF81E40E94D102809300018111C3CFED +:100860000E940C03B82EB094BFCF80E0C0CF0E948E +:100870000C0281E0DF91CF911F910F91FF90EF90DB +:10088000DF90CF90BF900895E82FF0E0EC5BFE4F33 +:100890008081089508958B3B910578F4883A9105FD +:1008A00040F5853A9105D0F48430910508F0B1C047 +:1008B0008130910509F4ADC06BC0803E910508F40C +:1008C00067C0883E910508F4A4C09C01205F3109EF +:1008D0002031310508F05CC090650895853A910596 +:1008E00009F459C0863A910509F058C082E890E4AD +:1008F0000895883A910509F454C0893A910509F49C +:1009000053C08A3A910509F452C08B3A910509F413 +:1009100051C08C3A910509F450C08D3A910509F403 +:100920004FC0803B910509F44EC08E3A910509F401 +:100930004DC08F3A910509F44CC0813B910509F4F3 +:100940004BC0823B910509F44AC0833B910509F4F1 +:1009500049C0843B910509F448C0853B910509F4E1 +:1009600047C0863B910509F446C0873B910509F4D1 +:1009700045C0883B910509F444C0893B910509F4C1 +:1009800043C08A3B910509F442C080E094E4089595 +:1009900080E090E0089581E890E4089583E890E491 +:1009A000089582EE94E4089589EE94E408958AEE21 +:1009B00094E4089585EB94E4089586EB94E4089517 +:1009C00087EB94E408958CEC94E408958DEC94E422 +:1009D000089583E895E408958AE895E4089582E906 +:1009E00095E4089584E995E4089581E296E40895F4 +:1009F00083E296E4089584E296E4089585E296E41D +:100A0000089586E296E4089587E296E408958AE2DE +:100A100096E40895089596E0799FF001112494E5F5 +:100A2000899FE00DF11D1124E60FF11DEE0FFF1F50 +:100A3000E052FF4F859194910895880F991FFC0112 +:100A4000E05AF040859194910895880F991FFC0118 +:100A5000E052FF4F85919491089526E0729FF00136 +:100A6000112444E5849FE00DF11D1124E60FF11DD2 +:100A7000EE0FFF1FE052FF4F859194919C013A9534 +:100A800021154FE1340708F41CC13F5121153041B5 +:100A900020F49F700E94250508959C013053211574 +:100AA000304118F49927906C0895811520E592073C +:100AB00071F40E94FA124FEF84E39CE041508040B1 +:100AC0009040E1F700C000000E94E219FAC08130B6 +:100AD00020E5920731F48091CD0181608093CD01B2 +:100AE000F0C09C0130552115304108F051C0292F2C +:100AF00033272F70332721303105D9F4AC014370EF +:100B0000552702C0220F331F4A95E2F73C68AC011B +:100B100064E0440F551F6A95E1F744275370242B76 +:100B2000352B73E0880F991F7A95E1F78076992726 +:100B30001DC02230310529F4982F8827816F906AD3 +:100B4000089523303105A9F4AC014370552721E005 +:100B500030E002C0220F331F4A95E2F73C6843E0C1 +:100B6000880F991F4A95E1F7807E9770822B932B0F +:100B7000089524303105E1F4AC014370552721E09C +:100B800030E002C0220F331F4A95E2F73A68E7CF00 +:100B90009C0130572115304118F49F7090620895E0 +:100BA0009C0130582115304118F49F70906A0895C7 +:100BB000803E9105E0F4803C910558F58133910524 +:100BC00009F46FC048F48932910509F463C08A3290 +:100BD000910509F46DC072C089339105E9F082383E +:100BE0009105D1F08533910509F44DC067C0833E6E +:100BF000910581F138F4803E9105B9F0823E91056E +:100C0000D9F05CC0863E910561F1873E9105A1F166 +:100C100055C00E941D0508952091E00120FD02C0ED +:100C200021FF4CC080EE90E049C08091E00180FF40 +:100C3000F9CF89E390E042C08091E00182FF0EC0CD +:100C40008091E00184FF03C080E090E037C083EE34 +:100C500090E034C08091E00182FFF2CF82EE90E01C +:100C60002DC08091E00183FF0BC08091E00184FDE5 +:100C7000EBCF87EE90E022C08091E00183FFF5CFBB +:100C800086EE90E01BC08091E00185FF07C089E2FD +:100C900090E014C08091E00185FFF9CF85E390E0FA +:100CA0000DC08091E00186FF07C08AE290E006C097 +:100CB0008091E00186FFF9CF81E390E00E944B0430 +:100CC0000895089508950C94620680916201089534 +:100CD000CF93DF9300D01F92CDB7DEB79C018091F8 +:100CE000E601843019F593E099833B832A8390933E +:100CF000E9008FEF9091E800815095FD06C095EDD9 +:100D00009A95F1F700008111F5CF8091E80085FFF9 +:100D10000DC040E050E063E070E0CE0101960E941B +:100D2000D2088091E8008E778093E8000F900F90B2 +:100D30000F90DF91CF910895CF93DF9300D01F9252 +:100D4000CDB7DEB72091E601243021F522E02983DA +:100D50009B838A8383E08093E9008FEF9091E80082 +:100D6000815095FD06C095ED9A95F1F7000081112F +:100D7000F5CF8091E80085FF0DC040E050E063E0D2 +:100D800070E0CE0101960E94D2088091E8008E7733 +:100D90008093E8000F900F900F90DF91CF9108950E +:100DA0002091E6012430F1F422E02093E9002FEFB6 +:100DB0003091E800215035FD06C035ED3A95F1F748 +:100DC00000002111F5CF2091E80025FF0BC040E085 +:100DD00050E065E070E00E94D2088091E8008E77D4 +:100DE0008093E8000895CF93DF93EC019091E601A2 +:100DF000943009F046C080910C018823D9F080918D +:100E00000D018823B9F09093E9008FEF9091E800ED +:100E1000815095FD06C095E19A95F1F7000081118A +:100E2000F5CF8091E80085FF2CC040E050E060E104 +:100E300070E017C081E08093E9008FEF9091E800A7 +:100E4000815095FD06C095ED9A95F1F7000081114E +:100E5000F5CF8091E80085FF14C040E050E068E0E5 +:100E600070E0CE010E94D2088091E8008E778093D6 +:100E7000E80080E1FE01A2E5B1E001900D928A95C3 +:100E8000E1F7DF91CF9108958091E501811109C0CB +:100E90000E94670A0E94C40A8091E20084608093E5 +:100EA000E20008951092E501089508950C941F2022 +:100EB0000E9478190E9425200E946A0D0C946306F6 +:100EC00042E061EC81E00E94E10942E061EC82E0F5 +:100ED0000E94E10942E061EC83E00E94E10942E105 +:100EE00061EC84E00C94E1098091E801833009F41D +:100EF00055C030F4813071F0823009F48EC008950D +:100F00008A3009F47AC08B3009F460C0893009F066 +:100F10009CC020C08091E701813A09F096C0809181 +:100F2000E800877F8093E8008091EB019091EC01CD +:100F3000892B21F460E182E591E003C060E080E06C +:100F400090E070E00E941D098091E8008B7780930B +:100F5000E80008958091E701813209F076C0809120 +:100F6000EB019091EC01009719F0039709F06DC027 +:100F70008091E800877F8093E8008091E80082FDFF +:100F800005C08091E6018111F8CF5FC08091F1002A +:100F9000809362018091E8008B7753C08091E701D4 +:100FA000813A09F052C08091EB019091EC01892BBC +:100FB00009F04BC08091E800877F8093E800809122 +:100FC000E80080FFFCCF80910C0136C08091E701E2 +:100FD0008132D9F58091EB019091EC01892BA9F533 +:100FE0008091E800877F8093E8000E94160A809134 +:100FF000E90180930C010C94FA128091E70181328F +:1010000021F58091E800877F8093E8000E94160A0E +:101010008091EA018093630108958091E701813A0C +:10102000A1F48091E800877F8093E8008091E80038 +:1010300080FFFCCF809163018093F1008091E800F4 +:101040008E778093E8000C94160A089584B7877F02 +:1010500084BF88E10FB6F89480936000109260001E +:101060000FBE90E080E80FB6F894809361009093F3 +:1010700061000FBE0E94B90D0E94670A0E94C40A57 +:101080008091E20084608093E20078940E944A0D8F +:101090000E94BB0D82E091E00E94650D0E940D2030 +:1010A0008091E601853069F40E9439198091E4014C +:1010B0008823B1F30E946419882391F30E94BC082D +:1010C000EFCF0E94C10DECCF292F332723303105FC +:1010D000C9F064F42130310581F02230310509F086 +:1010E00043C08DE690E02CEB31E042C02132310567 +:1010F000F1F02232310541F137C082E190E029E27E +:1011000032E036C099278130910541F08230910557 +:1011100041F0892B49F5E8EBF1E005C0E0EAF1E0A8 +:1011200002C0E8E8F1E0849190E09F0121C06430C2 +:10113000D8F4E62FF0E0EE0FFF1FEE5DFE4F2081AA +:10114000318189E090E014C0643070F470E0FB01FC +:10115000EE0FFF1FE65EFE4F20813181FB01EA5E4C +:10116000FE4F808190E004C080E090E020E030E01D +:10117000FA0131832083089580E189BD82E189BD30 +:1011800009B400FEFDCF8091D8008F7D8093D800F8 +:101190008091E00082608093E0008091E00081FD1A +:1011A000FCCF0895CF92DF92EF92FF920F931F939F +:1011B000CF93DF93EC018B016A010E94350A811104 +:1011C00033C0C114D10439F0F60180819181081B2C +:1011D000190BC80FD91FE12CF12C0115110519F1BC +:1011E0008091E80085FD16C08091E8008E7780939D +:1011F000E800C114D10449F0F60180819181E80E24 +:10120000F91EF182E08285E00FC00E94350A882332 +:1012100021F30AC089918093F10001501109FFEF79 +:10122000EF1AFF0ADACF80E0DF91CF911F910F9183 +:10123000FF90EF90DF90CF9008952091ED013091D5 +:10124000EE012617370748F06115710539F4209132 +:10125000E8002E772093E80001C0B90140E0611555 +:101260007105A9F12091E601222309F443C025303C +:1012700009F442C02091E80023FD40C02091E8001D +:1012800022FD32C02091E80020FFE9CF4091F30019 +:101290002091F20030E0342BFC01CF016115710583 +:1012A00059F02830310540F481918093F10061506C +:1012B00071092F5F3F4FF1CF41E02830310509F030 +:1012C00040E02091E8002E772093E800C8CF41113C +:1012D000C9CF0AC08091E601882361F0853061F0B2 +:1012E0008091E80083FD0AC08091E80082FFF2CF80 +:1012F00080E0089582E0089583E0089581E00895F4 +:101300002091ED013091EE012617370748F0611565 +:10131000710539F42091E8002E772093E80001C090 +:10132000B901FC0120E06115710591F18091E601A0 +:10133000882309F440C0853009F43FC08091E8005B +:1013400083FD3DC08091E80082FD2FC08091E800C0 +:1013500080FFE9CF2091F3008091F20090E0922B82 +:101360006115710559F08830910540F4249120935E +:10137000F1003196615071090196F2CF21E0089792 +:1013800009F020E08091E8008E778093E800CBCFD1 +:101390002111CCCF0AC08091E601882361F085300D +:1013A00061F08091E80083FD0AC08091E80082FF2F +:1013B000F2CF80E0089582E0089583E0089581E00F +:1013C0000895982F973058F59093E900981739F0C1 +:1013D0007091EC002091ED005091F00003C0242F9B +:1013E000762F50E021FF19C03091EB003E7F309303 +:1013F000EB003091ED003D7F3093ED003091EB003C +:1014000031603093EB007093EC002093ED0050932B +:10141000F0002091EE0027FF07C09F5FD3CF8F70B1 +:101420008093E90081E0089580E008958091E701CC +:1014300087FF11C08091E80082FD05C08091E60120 +:101440008111F8CF11C08091E8008B770BC080919B +:10145000E601882349F08091E80080FFF8CF809171 +:10146000E8008E778093E80008952091E4003091A1 +:10147000E50095E64091EC00842F817040FF22C08A +:101480008091E80080FD1CC08091E601882391F0E6 +:10149000853091F08091EB0085FD10C04091E40013 +:1014A0005091E5004217530729F39A01915011F723 +:1014B00084E0089582E0089583E0089581E008952E +:1014C00080E008954091E80042FFDECF08950E9439 +:1014D000D50A0E94DD0AE0EEF0E080818160808321 +:1014E000E8EDF0E080818F77808319BCA7EDB0E054 +:1014F0008C918E7F8C9380818F7E80831092E5010A +:1015000008950F931F93CF93DF930E94D50A0E94F3 +:10151000DD0AC8EDD0E088818F7788838881806874 +:10152000888388818F7D888319BC1092E601109290 +:10153000E2011092E4011092E30100EE10E0F801E4 +:1015400080818B7F808388818160888342E060E036 +:1015500080E00E94E109E1EEF0E080818E7F8083EF +:10156000E2EEF0E08081816080838081886080830A +:10157000F80180818E7F8083888180618883DF91FC +:10158000CF911F910F910895E8EDF0E080818F7E5B +:101590008083E7EDF0E080818160808384E082BF1A +:1015A00081E08093E5010C94810AE8EDF0E0808110 +:1015B0008E7F80831092E20008951092DA001092DC +:1015C000E10008951F920F920FB60F9211242F93EE +:1015D0003F934F935F936F937F938F939F93AF93BB +:1015E000BF93EF93FF938091E10082FF0BC0809146 +:1015F000E20082FF07C08091E1008B7F8093E100D1 +:101600000E94490D8091DA0080FF1FC08091D800B0 +:1016100080FF1BC08091DA008E7F8093DA0080917A +:10162000D90080FF0DC080E189BD82E189BD09B488 +:1016300000FEFDCF81E08093E6010E94440705C0D3 +:1016400019BC1092E6010E9452078091E10080FFD0 +:1016500019C08091E20080FF15C08091E2008E7F6A +:101660008093E2008091E20080618093E2008091AB +:10167000D80080628093D80019BC85E08093E60191 +:101680000E9456078091E10084FF30C08091E20003 +:1016900084FF2CC080E189BD82E189BD09B400FED0 +:1016A000FDCF8091D8008F7D8093D8008091E1009C +:1016B0008F7E8093E1008091E2008F7E8093E20034 +:1016C0008091E20081608093E2008091E2018823B2 +:1016D00011F084E007C08091E30087FD02C081E043 +:1016E00001C083E08093E6010E9458078091E100E9 +:1016F00083FF29C08091E20083FF25C08091E10033 +:10170000877F8093E10082E08093E6011092E201FE +:101710008091E1008E7F8093E1008091E2008E7FD6 +:101720008093E2008091E20080618093E20042E0D9 +:1017300060E080E00E94E1098091F0008860809381 +:10174000F0000E945507FF91EF91BF91AF919F91DB +:101750008F917F916F915F914F913F912F910F905A +:101760000FBE0F901F9018951F920F920FB60F92F9 +:1017700011242F933F934F935F936F937F938F9396 +:101780009F93AF93BF93CF93DF93EF93FF93C0915A +:10179000E900CF708091EC00D82FD17080FDD0E8A7 +:1017A0001092E9008091F000877F8093F000789498 +:1017B0000E94F80B1092E9008091F00088608093FD +:1017C000F000CD2BCF70C093E900FF91EF91DF9136 +:1017D000CF91BF91AF919F918F917F916F915F91C9 +:1017E0004F913F912F910F900FBE0F901F90189522 +:1017F0001F93CF93DF93CDB7DEB7AA970FB6F894B8 +:10180000DEBF0FBECDBFE7EEF1E088E08E0F909116 +:10181000F10091938E13FBCF0E9474078091E80032 +:1018200083FF1FC18091E7019091E801492F50E0AB +:101830004A30510508F015C1FA01EA5AFF4F0C94DD +:10184000A721803881F0823809F00BC18091EB012B +:101850008F708093E9008091EB0085FB882780F9E9 +:101860001092E90006C08091E3019091E40191118A +:1018700082609091E800977F9093E8008093F10058 +:101880001092F100C8C0282F2D7F09F0EAC08823EC +:1018900019F0823061F0E5C08091E901813009F0F2 +:1018A000E0C0933009F080E08093E4012BC0809188 +:1018B000E901811127C08091EB018F7009F4D1C03B +:1018C0008093E9002091EB0020FF1CC0933021F4AD +:1018D0008091EB00806214C09091EB009061909336 +:1018E000EB0021E030E0A90102C0440F551F8A95AA +:1018F000E2F74093EA001092EA008091EB008860E2 +:101900008093EB001092E9008091E800877F86C009 +:101910008111A7C01091E9011F778091E3008078C1 +:10192000812B8093E3008091E800877F8093E8001B +:101930000E94160A8091E80080FFFCCF8091E300AE +:1019400080688093E300111102C082E001C083E04F +:101950008093E60186C08058823008F082C0809172 +:10196000E9019091EA018C3D53E0950779F583E018 +:101970008A838AE289834FB7F894DE01139620E0C8 +:101980003EE051E2E32FF0E050935700E49120FF56 +:1019900003C0E295EF703F5FEF708E2F90E0EA306A +:1019A00010F0C79601C0C0968D939D932F5F243190 +:1019B00049F74FBF8091E800877F8093E8006AE293 +:1019C00070E0CE0101960E941D0914C0AE014F5F68 +:1019D0005F4F6091EB010E946408BC01892B09F400 +:1019E00040C09091E800977F9093E80089819A81A8 +:1019F0000E9480098091E8008B778093E80031C0D5 +:101A0000803879F58091E800877F8093E8008091A5 +:101A1000E2018093F1008091E8008E778093E800E6 +:101A20000E94160A1EC081111CC09091E9019230DB +:101A3000C0F48091E800877F8093E8009093E201F2 +:101A40000E94160A8091E201811106C08091E30094 +:101A500087FD02C081E001C084E08093E6010E941E +:101A600060078091E80083FF0AC08091E800877FCB +:101A70008093E8008091EB0080628093EB00AA964F +:101A80000FB6F894DEBF0FBECDBFDF91CF911F918F +:101A900008950895CF938091E6018823A1F0C09125 +:101AA000E900CF709091EC00892F817090FD80E863 +:101AB000C82B1092E9008091E80083FD0E94F80B8A +:101AC000CF70C093E900CF910895909369018093FE +:101AD00068010895E0916801F0916901309721F063 +:101AE0000190F081E02D099480E00895E091680173 +:101AF000F0916901309721F00280F381E02D099483 +:101B00000895E0916801F0916901309721F0048017 +:101B1000F581E02D099408952091660130916701C7 +:101B20008217930771F09093670180936601E091AB +:101B30006801F0916901309721F00680F781E02D6E +:101B400009940895209164013091650182179307EB +:101B500071F09093650180936401E0916801F091C8 +:101B60006901309721F00084F185E02D09940895F2 +:101B700008950C94B80D0E947E190E943E030C94A7 +:101B8000441ACF92DF92EF92FF920F931F93CF935D +:101B9000DF93CDB7DEB72B970FB6F894DEBF0FBE3D +:101BA000CDBF0E9456038BE6C82E81E0D82E00E000 +:101BB00010E0E02E802F0E944404F60141916F0155 +:101BC000F42EF826B1F40F5F1F4F0E30110589F780 +:101BD0008FEF89838A831B820E9487198160782F07 +:101BE0009D838C8349815A816B818D810E94640E13 +:101BF00040C09091CD0191FF04C08B870E944A04A0 +:101C00008B8520E030E04F2D50E0922FBA01022E5C +:101C100002C0759567950A94E2F760FF24C02E8391 +:101C2000EF8221E030E0690102C0CC0CDD1C9A9506 +:101C3000E2F790E08C219D21892B09F420E0288790 +:101C40000E9487198160782F9A8789874E815F81EA +:101C500068858A850E94640EF801E559FE4F8081EF +:101C6000C826C08206C02F5F3F4F2630310569F677 +:101C7000AACF0E942B1D10916A010E946A0D1817AD +:101C8000A1F00E946A0D80936A012B960FB6F8941A +:101C9000DEBF0FBECDBFDF91CF911F910F91FF909F +:101CA000EF90DF90CF900C9463062B960FB6F894CC +:101CB000DEBF0FBECDBFDF91CF911F910F91FF907F +:101CC000EF90DF90CF900895CF93DF93CDB7DEB73D +:101CD0002B970FB6F894DEBF0FBECDBF4F8358874A +:101CE00069877A878B87DE01119686E0FD01119264 +:101CF0008A95E9F785E0FE01379601900D928A9565 +:101D0000E1F749815A816B817C818D819E810E949E +:101D100094152B960FB6F894DEBF0FBECDBFDF91A2 +:101D2000CF9108950895CF93882309F4C2C0C82F96 +:101D3000823859F40E946A0D81FDBBC089E30E947C +:101D40003D180E940A1989E30CC0833879F40E9477 +:101D50006A0D80FDAEC083E50E943D180E940A19FD +:101D600083E50E947F18CF910C940A19843859F4A6 +:101D70000E946A0D82FD9DC087E40E943D180E946A +:101D80000A1987E4EECF8CEF8C0F813A48F48C2F40 +:101D90000E94721F81118DC08C2F0E943D18E3CFCD +:101DA00080E28C0F883048F4C77081E001C0880F52 +:101DB000CA95EAF70E94C318D6CF8BE58C0F833003 +:101DC00078F4C53A29F0C63A31F083E890E005C0CE +:101DD00081E890E002C082E890E0CF910C948C0DF5 +:101DE00088E58C0F833108F064C0C83A39F1C93AEC +:101DF00041F1CA3A49F1CB3A51F1CC3A59F1CD3AD5 +:101E000061F1C03B69F1CE3A71F1CF3A79F1C13B52 +:101E100081F1C23B89F1C33B91F1C43B99F1C53BD0 +:101E2000A1F1C63BA9F1C73BB1F1C83BB9F1C93B30 +:101E3000C1F1CA3BC9F180E090E038C082EE90E089 +:101E400035C089EE90E032C08AEE90E02FC085EB7D +:101E500090E02CC086EB90E029C087EB90E026C094 +:101E60008CEC90E023C08DEC90E020C083E891E002 +:101E70001DC08AE891E01AC082E991E017C084E9A8 +:101E800091E014C081E292E011C083E292E00EC0C2 +:101E900084E292E00BC085E292E008C086E292E024 +:101EA00005C087E292E002C08AE292E0CF910C94F2 +:101EB000A20DCF910895882309F44BC0823859F4BC +:101EC0000E946A0D81FF45C089E30E943D180E946F +:101ED0000A1989E30CC0833871F40E946A0D80FFEF +:101EE00038C083E50E943D180E940A1983E50E94CC +:101EF0007F180C940A19843859F40E946A0D82FFE5 +:101F000028C087E40E943D180E940A1987E4EFCF99 +:101F10009CEF980F913A58F390E2980F983050F454 +:101F2000877091E001C0990F8A95EAF7892F0E9486 +:101F3000C918DFCF9BE5980F933020F480E090E044 +:101F40000C948C0D885A833120F480E090E00C943E +:101F5000A20D0895882321F00E94C3180C940A1939 +:101F60000895882321F00E94C9180C940A19089535 +:101F7000BF92CF92DF92EF92FF920F931F93CF9376 +:101F8000DF9300D000D000D0CDB7DEB725E0FC0154 +:101F9000DE01119601900D922A95E1F7FC01D080A7 +:101FA00011810281258122952F7043815481452B17 +:101FB00009F4FCC21F3F21F4FFEFDF1609F4F6C25B +:101FC0007C012E830E94920ED9821A8369817A81C4 +:101FD000802F0E943918182FB92E0E94EE170E94E8 +:101FE000B5162E81002319F00E94E0182E81EB2DEA +:101FF000E295EF70F0E0E05AFF4F0C94A7218B2D93 +:10200000807F9B2D9F70F92E882319F0F29480EF2A +:10201000F822002389F0FF2009F475C280E2810FC5 +:10202000883020F48F2D0E94C31803C08F2D0E948A +:10203000D3180E940A1967C2812F0E945B0FFF20EC +:1020400009F4B4C2105E8F2D183018F40E94C9181C +:1020500002C00E94D91826960FB6F894DEBF0FBEB4 +:10206000CDBFDF91CF911F910F91FF90EF90DF9047 +:10207000CF90BF900C940A193B2D307F8B2D8F7021 +:10208000303211F08295807F112319F0113021F147 +:102090002CC00023B9F0222309F4A0C1213009F09B +:1020A0009DC126960FB6F894DEBF0FBECDBFDF915F +:1020B000CF911F910F91FF90EF90DF90CF90BF9045 +:1020C0000C94F318222319F0213009F46FC28E8387 +:1020D0000E94F6188E8196C1002321F0223008F06C +:1020E00065C27CC1211162C28DC1002321F022236F +:1020F00009F474C108C2222309F484C119C22B2D2A +:1021000026952695237030E02115310521F02130E8 +:102110003105D1F04BC2002321F0812F9B2D93700C +:1021200002C080E090E026960FB6F894DEBF0FBEA6 +:10213000CDBFDF91CF911F910F91FF90EF90DF9076 +:10214000CF90BF900C948C0D002321F0812F9B2DFC +:10215000937002C080E090E026960FB6F894DEBF40 +:102160000FBECDBFDF91CF911F910F91FF90EF90E8 +:10217000DF90CF90BF900C94A20D812F002319F017 +:102180000E94331C02C00E949B1C26960FB6F89436 +:10219000DEBF0FBECDBFDF91CF911F910F91FF909A +:1021A000EF90DF90CF90BF900C94201D8B2D83700B +:1021B00009F07BC00111FAC1812F82958695877045 +:1021C000880F880F912F9F70C92ED12CE12CF12CF4 +:1021D000082E04C0CC0CDD1CEE1CFF1C0A94D2F7A8 +:1021E00014FF12C04FE050E060E070E004C0440F04 +:1021F000551F661F771F8A95D2F7CB01BA016095EC +:1022000070958095909503C060E070E0CB012B2D18 +:10221000269526952370422F50E042305105D9F083 +:102220004330510569F16C297D298E299F29413060 +:10223000510551F126960FB6F894DEBF0FBECDBF03 +:10224000DF91CF911F910F91FF90EF90DF90CF9092 +:10225000BF900C94DC166C297D298E299F29269627 +:102260000FB6F894DEBF0FBECDBFDF91CF911F91A7 +:102270000F91FF90EF90DF90CF90BF900C94F816E5 +:102280000E94DC16C701B60126960FB6F894DEBF91 +:102290000FBECDBFDF91CF911F910F91FF90EF90B7 +:1022A000DF90CF90BF900C94C016002319F08B2DB7 +:1022B000817001C08695882309F478C1812F8295A9 +:1022C00086958770880F880F912F9F70C92ED12C0B +:1022D000E12CF12C082E04C0CC0CDD1CEE1CFF1CE4 +:1022E0000A94D2F714FF12C04FE050E060E070E0B3 +:1022F00004C0440F551F661F771F8A95D2F7CB0184 +:10230000BA01609570958095909503C060E070E08B +:10231000CB012B2D269526952370422F50E042307D +:102320005105D9F04330510569F16C297D298E2979 +:102330009F294130510551F126960FB6F894DEBF22 +:102340000FBECDBFDF91CF911F910F91FF90EF9006 +:10235000DF90CF90BF900C94B6176C297D298E2901 +:102360009F2926960FB6F894DEBF0FBECDBFDF9132 +:10237000CF911F910F91FF90EF90DF90CF90BF9082 +:102380000C94D2170E94B617C701B60126960FB655 +:10239000F894DEBF0FBECDBFDF91CF911F910F919B +:1023A000FF90EF90DF90CF90BF900C949A17103F62 +:1023B000D1F118F4103E50F4A1C0123F09F463C0EB +:1023C00008F44CC0133F09F473C098C01F708B2DE4 +:1023D0008F710023A1F00E943317812F26960FB62C +:1023E000F894DEBF0FBECDBFDF91CF911F910F914B +:1023F000FF90EF90DF90CF90BF900C94AA0F0E94B7 +:102400005417812F26960FB6F894DEBF0FBECDBFAE +:10241000DF91CF911F910F91FF90EF90DF90CF90C0 +:10242000BF900C94B10F0023A9F02111BFC08B2DD8 +:102430008F7126960FB6F894DEBF0FBECDBFDF9129 +:10244000CF911F910F91FF90EF90DF90CF90BF90B1 +:102450000C947917223008F0A9C0E9CF0023A9F025 +:102460008B2D8F7126960FB6F894DEBF0FBECDBFB1 +:10247000DF91CF911F910F91FF90EF90DF90CF9060 +:10248000BF900C943317002359F38B2D8F71269630 +:102490000FB6F894DEBF0FBECDBFDF91CF911F9175 +:1024A0000F91FF90EF90DF90CF90BF900C94541756 +:1024B000002399F08B2D8F7126960FB6F894DEBF0E +:1024C0000FBECDBFDF91CF911F910F91FF90EF9085 +:1024D000DF90CF90BF900C941E1726960FB6F894FD +:1024E000DEBF0FBECDBFDF91CF911F910F91FF9047 +:1024F000EF90DF90CF90BF900C9414170023A9F0B9 +:10250000222309F4ADCF812F26960FB6F894DEBFB3 +:102510000FBECDBFDF91CF911F910F91FF90EF9034 +:10252000DF90CF90BF900C94930E222309F4ADCF8F +:10253000812F26960FB6F894DEBF0FBECDBFDF9178 +:10254000CF911F910F91FF90EF90DF90CF90BF90B0 +:102550000C945B0F4B2D4F70612FC7010E9401023D +:1025600026960FB6F894DEBF0FBECDBFDF91CF9198 +:102570001F910F91FF90EF90DF90CF90BF900C9440 +:1025800038164B2D4F70612FC70126960FB6F89461 +:10259000DEBF0FBECDBFDF91CF911F910F91FF9096 +:1025A000EF90DF90CF90BF900C940A0526960FB65F +:1025B000F894DEBF0FBECDBFDF91CF911F910F9179 +:1025C000FF90EF90DF90CF90BF9008950E94E018A9 +:1025D0000E94F0180E94B5180E940A190E94D11D8D +:1025E0000E94201D80E090E00E948C0D80E090E031 +:1025F0000C94A20D0E94D0180C94E6120E942E1882 +:10260000292F22952F7030E02C3031054CF42A30E0 +:1026100031056CF4225031092230310588F407C0AD +:102620002C30310549F02F30310531F009C0803EA2 +:1026300048F0803F29F406C093FB882780F908956D +:1026400080E0089581E00895CF93DF9300D000D01B +:102650001F92CDB7DEB70F900F900F900F900F9095 +:10266000DF91CF910895CF93DF9300D000D000D0B9 +:10267000CDB7DEB726960FB6F894DEBF0FBECDBF3E +:10268000DF91CF9108951F93CF93DF93C09179018C +:1026900016E080917A01C81799F0D0E01C9FF001F4 +:1026A0001D9FF00D1124E558FE4F4081518162813C +:1026B0007381848195810E9433132196C770E9CF7D +:1026C000DF91CF911F9108954091AB015091AC01E2 +:1026D0006091AD017091AE018091AF019091B00118 +:1026E0000C9433138091B00182958F7009F054C01F +:1026F0008091AD01882309F44FC080917901A091A8 +:102700007A016091AB017091AC014091AE015091A2 +:10271000AF01B6E08A1709F43FC090E041155105BA +:10272000C1F17F3F11F46F3FA1F1B89FF001B99F54 +:10273000F00D1124E558FE4F218172132AC020812B +:10274000621327C02281211124C0238134812417E0 +:10275000350710F421503109241B350B283C310575 +:10276000C0F42091B0012F7020612093B00126E0C9 +:10277000289FF001299FF00D1124E058FE4F808121 +:102780008F70806180838BEA91E00E94B80F0C9477 +:10279000431301968770BECF0895CF92DF92EF92D8 +:1027A000FF920F931F93CF93DF93CDB7DEB762975E +:1027B0000FB6F894DEBF0FBECDBF8C0185E0F801E7 +:1027C000DE011D9601900D928A95E1F7D8014C919A +:1027D00011965C91119712966C9112971396CD9069 +:1027E000DC9014973091AB017091AC018091AE01F7 +:1027F0009091AF01009709F46BC17F3F19F43F3FFF +:1028000009F466C1E090AD01EE2009F4C0C020914A +:10281000B001C816D90628F0F601E81BF90BCF0164 +:1028200004C0809590958C0D9D1DFF24F394883CE9 +:10283000910578F0F12C207F09F0C6C07C2DD98A53 +:10284000C88A89890E9424138BEA91E00E94B80FFC +:10285000B1C0822F807F09F046C0751314C03413B5 +:1028600012C0611110C02F7020612093B0010E942E +:1028700064138BEA91E00E94B80F8091B001D801F7 +:1028800015968C932EC0CD2819F15F3F11F44F3F60 +:10289000F9F0F62E61111CC08091790120917A0126 +:1028A00036E0821709F45AC090E0389FF001399F52 +:1028B000F00D1124E558FE4F7181571306C0708149 +:1028C000471303C07281711103C001968770E9CF6D +:1028D000F62E662309F418C18091B00181608093BF +:1028E000B001F12C11C1751308C0341306C0611179 +:1028F00004C08091B001D801C3C04D875E878D852B +:102900009E856A8B0E94FE126A898823E1F1662304 +:10291000D1F12091B001822F82958F7090E00297C3 +:1029200074F08091AB019091AC0198878F831986E8 +:10293000DB86CA862C87CE0107960E94B80F86E0F8 +:10294000F801ABEAB1E001900D928A95E1F70E949F +:1029500072130E946413FF24F394D6C04D875E87E0 +:102960008D859E850E942E18292F22952F7030E08C +:10297000223031050CF0BCC09F7009F0B6C0805EFB +:10298000883008F4C1C0C8010E94B80FE4CFC8164F +:10299000D90608F453C0F601E81BF90BCF01883CB7 +:1029A000910508F450C0F12C7C2DD98AC88A8989F8 +:1029B0000E942413EBEAF1E086E0DF011D928A9584 +:1029C000E9F70E946413A0C0751314C0341312C039 +:1029D000611110C08091B001F8018583C8010E9487 +:1029E000B80F86E0EBEAF1E0DF011D928A95E9F786 +:1029F000FE2C8AC04D875E878D859E856A8B0E94DE +:102A0000FE126A89882309F4BECF662309F4BBCF7E +:102A10002091B001822F82958F7090E002970CF484 +:102A20008ECF8091AB019091AC019A8389831B82F8 +:102A3000DD82CC822E83CE0101967FCF809590954A +:102A40008C0D9D1DACCFF62E662309F49CCF75131B +:102A50002EC034132CC02091B00120FD1FC0822F46 +:102A600082958F70D9F0D80115962C9315978F30D9 +:102A700049F08F5F982F9295907F822F8F70892BCE +:102A800015968C93C8010E94B80F86E0F801ABEA56 +:102A9000B1E001900D928A95E1F793CF86E0F801BD +:102AA000ABEAB1E001900D928A95E1F72DC04D8718 +:102AB0005E878D859E850E94FE12811140CF809198 +:102AC000B00181608093B001C8010E94B80F1CC0A2 +:102AD000662309F458CF4D875E878D859E850E94B9 +:102AE000FE12882309F44FCF2ACF811148CF0CC0A2 +:102AF000243031050CF047CF9F7009F440CFF80126 +:102B00009581907F09F03BCF8F2D62960FB6F89498 +:102B1000DEBF0FBECDBFDF91CF911F910F91FF9010 +:102B2000EF90DF90CF9008951F93CF93DF93CDB7B1 +:102B3000DEB72C970FB6F894DEBF0FBECDBF4F8324 +:102B4000588769877A878B879C87CE0107960E9472 +:102B5000CD13882369F08F8198852A853B85232BA7 +:102B6000F1F19F3F09F063C08F3F09F060C037C0AB +:102B700086E0FE013796DE01119601900D928A954E +:102B8000E1F76F817885EA85FB85309741F17F3FDA +:102B900011F46F3F21F120917A0130E0C9010196D3 +:102BA000877099274091790150E08417950709F4BF +:102BB00047C069837A83FD83EC8396E0929FD001BE +:102BC000939FB00D1124A558BE4FFE013196019080 +:102BD0000D929A95E1F780937A010E94431316E0D3 +:102BE0008091790190917A018917C1F1189FC001F4 +:102BF000112485589E4F0E94CD13882379F1E091CE +:102C000079011E9FF0011124E558FE4F408151814A +:102C100062817381848195810E943313809179014F +:102C200090E001968770992780937901D9CF4F81E1 +:102C3000588569857A858B859C850E943313CFCF13 +:102C40000E94FA1210927A0110927901EBEAF1E0F7 +:102C500086E0DF011D928A95E9F7C1CF2C960FB669 +:102C6000F894DEBF0FBECDBFDF91CF911F910895C5 +:102C7000EF92FF920F931F93CF93DF938C01892BD9 +:102C800009F46CC0F12CEE24E394E8012196F801DC +:102C90008491843740F4843008F051C0813081F051 +:102CA000823019F15BC0853709F444C0A8F19CE774 +:102CB000980F903708F052C08F770E945B0F41C089 +:102CC0000E5F1F4FFE01C49180E28C0F883048F4E4 +:102CD000C7708E2D01C0880FCA95EAF70E94E318CD +:102CE00014C08C2F0E94930E2DC00E5F1F4FFE014B +:102CF000C49180E28C0F883058F4C7708E2D01C0CB +:102D0000880FCA95EAF70E94E9180E940A191AC0AA +:102D10008C2F0E945B0F16C00E5F1F4FFE01C491E7 +:102D2000CC2381F08FE99FE00197F1F700C000000C +:102D3000C150F6CF0E5F1F4FFE01F49003C00E94FA +:102D4000930E8E018F2D882309F49FCFEFE9FFE0CA +:102D50003197F1F700C000008150F5CFDF91CF919E +:102D60001F910F91FF90EF90089508956093B50122 +:102D70007093B6018093B7019093B8010C94E6125A +:102D80000F931F930091B5011091B6012091B701E7 +:102D90003091B801DC01CB01802B912BA22BB32BFE +:102DA0008093B5019093B601A093B701B093B80199 +:102DB0001F910F910C94E6120F931F930091B50190 +:102DC0001091B6012091B7013091B801DC01CB011F +:102DD00080239123A223B3238093B5019093B6015E +:102DE000A093B701B093B8011F910F910C94E61214 +:102DF0000F931F930091B5011091B6012091B70177 +:102E00003091B801DC01CB0180279127A227B3279D +:102E10008093B5019093B601A093B701B093B80128 +:102E20001F910F910C94E6121092B1011092B20111 +:102E30001092B3011092B4010C94E61241E050E0FC +:102E400060E070E004C0440F551F661F771F8A952D +:102E5000D2F74093B1015093B2016093B3017093E4 +:102E6000B4010C94E61241E050E060E070E004C070 +:102E7000440F551F661F771F8A95D2F78091B101C5 +:102E80009091B201A091B301B091B401482B592B9C +:102E90006A2B7B2B4093B1015093B2016093B30135 +:102EA0007093B4010C94E61241E050E060E070E0F1 +:102EB00004C0440F551F661F771F8A95D2F74095AF +:102EC0005095609570958091B1019091B201A0915B +:102ED000B301B091B401482359236A237B23409363 +:102EE000B1015093B2016093B3017093B4010C949B +:102EF000E61241E050E060E070E004C0440F551F6E +:102F0000661F771F8A95D2F78091B1019091B20127 +:102F1000A091B301B091B401482759276A277B27B4 +:102F20004093B1015093B2016093B3017093B40127 +:102F30000C94E6120F931F930091B1011091B2010E +:102F40002091B3013091B401DC01CB01802B912B96 +:102F5000A22BB32B8093B1019093B201A093B30144 +:102F6000B093B4011F910F910C94E6120F931F932D +:102F70000091B1011091B2012091B3013091B401DF +:102F8000DC01CB0180239123A223B3238093B101E1 +:102F90009093B201A093B301B093B4011F910F912C +:102FA0000C94E6120F931F930091B1011091B2019E +:102FB0002091B3013091B401DC01CB01802791272E +:102FC000A227B3278093B1019093B201A093B301DC +:102FD000B093B4011F910F910C94E6120895CF9213 +:102FE000DF92EF92FF920F931F93CF93DF938C01A9 +:102FF000C090B501D090B601E090B701F090B80153 +:103000008091B1019091B201A091B301B091B4014E +:10301000C82AD92AEA2AFB2ACFE1D0E0D701C60183 +:103020000C2E04C0B695A795979587950A94D2F76C +:1030300080FF06C0B8018C2F0E942D05019721F456 +:10304000219760F780E001C08C2FDF91CF911F9115 +:103050000F91FF90EF90DF90CF900895CF93DF9383 +:10306000EC010E94EF17BE010E942D05DF91CF9168 +:103070000895CB010E942E18089590910C01992378 +:1030800021F090910D01911109C020910E01309114 +:103090000F01F90132969FEF40E01FC0982F9695DF +:1030A000969596959F3050F5E0910E01F0910F01A5 +:1030B000E90FF11D877021E030E0A90102C0440F43 +:1030C000551F8A95E2F7CA019181892B8183089562 +:1030D0009F3F39F04F5F4E3041F051915813F8CF78 +:1030E0000DC05111F7CF942FF5CF9F3F39F0F90163 +:1030F000E90FF11D97FDFA95828308950895909147 +:103100000C01992321F090910D01911109C020919A +:103110000E0130910F01F9013296205F3F4F1FC021 +:10312000982F9695969596959F30F0F4E0910E0124 +:10313000F0910F01E90FF11D877021E030E0A90146 +:1031400002C0440F551F8A95E2F7CA01809591810C +:103150008923818308953196E217F30729F090813E +:103160009813F9CF1082F7CF089581E090E0E091B5 +:103170000E01F0910F01E80FF91F108201968031C6 +:103180009105A9F708959091CC01892B8093CC01EA +:10319000089580959091CC0189238093CC01089566 +:1031A0001092CC0108959091CB01892B8093CB0193 +:1031B000089580959091CB0189238093CB01089548 +:1031C0001092CB0108959091CA01892B8093CA0176 +:1031D000089580959091CA0189238093CA0108952A +:1031E0001092CA0108958093B90108951092B9010F +:1031F000089580910E0190910F01FC0131969C0180 +:10320000205F3F4F80E0919191118F5FE217F307AC +:10321000D1F70895E0910E01F0910F018091CC015A +:103220008083E0910E01F0910F0190818091CB019C +:10323000892B8083E0910E01F0910F0190818091A4 +:10324000CA01892B80838091B901882361F0E091C4 +:103250000E01F0910F019081892B80830E94F91853 +:1032600081111092B90180910E0190910F010C947F +:10327000760D8091E601843021F11092CE0120E498 +:1032800088E190E00FB6F894A895809360000FBE97 +:103290002093600080E00E94630683B7817F846092 +:1032A00083BF83B7816083BF7894889583B78E7F0F +:1032B00083BF88E10FB6F89480936000109260009D +:1032C0000FBE089508950895CF930E9462190E9439 +:1032D00056030E946319C0E08C2F0E9444048111A0 +:1032E00004C0CF5FCE30C1F701C081E0CF91089517 +:1032F0000E94FA120E946A0D0C94630682E084BD5B +:1033000093E095BD9AEF97BD80936E0008952FB717 +:10331000F8948091CF019091D001A091D101B0910A +:10332000D2012FBF0895CF92DF92EF92FF920F93B9 +:103330001F932FB7F8944091CF015091D001609125 +:10334000D1017091D2012FBF6A017B01EE24FF24CD +:103350008C0120E030E0C016D106E206F30610F43E +:10336000415051099A01281B390BC9011F910F9136 +:10337000FF90EF90DF90CF9008951F920F920FB6BD +:103380000F9211248F939F93AF93BF938091CF019E +:103390009091D001A091D101B091D2010196A11DCF +:1033A000B11D8093CF019093D001A093D101B09330 +:1033B000D201BF91AF919F918F910F900FBE0F904F +:1033C0001F9018950E94670AF8942FEF87EA91E6FC +:1033D000215080409040E1F700C0000087E090EB72 +:1033E000DC018093EF019093F001A093F101B09381 +:1033F000F2019CE088E10FB6F894A89580936000F4 +:103400000FBE90936000FFCFEF92FF920F931F9338 +:10341000CF93DF93D82FC0E08C2F0E94440400E0AC +:1034200010E0E82EF12CC701002E02C0959587957B +:103430000A94E2F780FD06C00F5F1F4F06301105AA +:1034400091F709C0602F7C2F80E00E940B05D813F4 +:10345000F3CF81E004C0CF5FCE30F1F680E0DF91A2 +:10346000CF911F910F91FF90EF900895CF93C82FA8 +:103470008CE20E94041A882321F08C2FCF910C94A7 +:10348000041A80E0CF910895CF930E948B1B811185 +:1034900002C00E94711BC5E6C15049F00E9456034C +:1034A0008FE39CE90197F1F700C00000F5CF89E2B6 +:1034B0000E94361A811113C18AE20E94361A8111C4 +:1034C0000E94711B85E00E94361A81110E94E21948 +:1034D0000E94961B8093CD0187E00E94361A8823B4 +:1034E000A9F18BE10E94361A882351F08091CD0119 +:1034F00081FB222720F991E0922790FB81F90EC0F1 +:103500008EE00E94361A882361F08091CD0182FB03 +:10351000222720F991E0922790FB82F98093CD0138 +:1035200015C080E10E94361A9091CD01882341F0A8 +:1035300093FB222720F981E0822780FB93F904C0C6 +:10354000892F809580FB90F99093CD018091CD01DA +:103550000E949A1B0E94A81B8093E00180EE0E94AB +:10356000361A882341F08091E001982F909590FBC6 +:1035700080F98093E00189E30E94361A882359F08C +:103580008091E00181FB222720F991E0922790FBB6 +:1035900081F98093E00182EE0E94361A882359F067 +:1035A0008091E00182FB222720F991E0922790FB95 +:1035B00082F98093E00186EE0E94361A882359F042 +:1035C0008091E00183FB222720F991E0922790FB74 +:1035D00083F98093E00183EE0E94361A882359F024 +:1035E0008091E00184FB222720F991E0922790FB53 +:1035F00084F98093E00185E30E94361A882359F00C +:103600008091E00185FB222720F991E0922790FB31 +:1036100085F98093E00181E30E94361A882359F0EE +:103620008091E00186FB222720F991E0922790FB10 +:1036300086F98093E00181E10E94361A882359F0CF +:103640008091E00187FB222720F991E0922790FBEF +:1036500087F98093E0018091E0010E94AC1B80918A +:10366000E00187FB882780F980930D0187E20E94A3 +:10367000361AC82F8EE10E94361A8111C2608FE17E +:103680000E94361A8111C46080E20E94361A8111AC +:10369000C86081E20E94361A8111C06182E20E94F4 +:1036A000361A8111C06283E20E94361A8111C06409 +:1036B00084E20E94361A882311F0C06802C0CC232D +:1036C00029F08C2F0E94A31B6C2F03C00E949F1B0C +:1036D000682F70E080E090E0CF910C94B616CF9107 +:1036E00008956DEE7EEF80E090E00E94DD2160E0C5 +:1036F00082E090E00E94CF2160E083E090E00E94B1 +:10370000CF2160E084E090E00E94CF2160E085E07E +:1037100090E00C94CF2180E090E00E94C92121E04C +:103720008D3E9E4F09F020E0822F089582E090E0C8 +:103730000C94C121682F82E090E00C94CF2183E0AB +:1037400090E00C94C121682F83E090E00C94CF218D +:1037500084E090E00C94C121682F84E090E00C9408 +:10376000CF218091D50180FF0BC06091130185E0CE +:10377000689FB001112475956795759567952BC065 +:1037800081FF09C06091130185E0689FB001112499 +:103790007595679520C082FF07C06091130185E091 +:1037A000689FB001112417C09091D6019923D1F0E0 +:1037B00060911201961788F72091130185E0289FE8 +:1037C00090011124929FA001939F500D112470E04D +:1037D000CA010E9493216038710540F4611571059A +:1037E00039F002C065E070E0862F08958FE70895F4 +:1037F00081E008958091D50180FF08C0609111019A +:1038000070E0759567957595679521C081FF06C035 +:103810006091110170E07595679519C082FF04C031 +:103820006091110170E010C09091D6019923C1F010 +:10383000609110019617A0F780911101899FC00136 +:10384000112470E00E9493216038710528F46115FD +:10385000710521F0862F08958FE7089581E008957E +:1038600061E070E0F4CF803F21F40E94B11B8195AC +:1038700004C0813F29F40E94B11B8093D9010895AF +:10388000823F21F40E94B11B819504C0833F29F43B +:103890000E94B11B8093D8010895893F19F40E94BA +:1038A000FA1B05C08A3F31F40E94FA1B8195809370 +:1038B000DA0108958B3F21F40E94FA1B819504C020 +:1038C0008C3F29F40E94FA1B8093DB010895843F0A +:1038D00021F48091D701816017C0853F21F4809148 +:1038E000D701826011C0863F21F48091D7018460A6 +:1038F0000BC0873F21F48091D701886005C0883FC5 +:1039000031F48091D70180618093D70108958D3F74 +:1039100021F48091D50181600BC08E3F21F480910C +:10392000D501826005C08F3F29F48091D501846064 +:103930008093D5010895803F39F48091D90187FFA4 +:103940006CC01092D90169C0813F29F48091D901DE +:103950001816BCF362C09091D801823F29F497FFFA +:103960005CC01092D80159C0833F19F41916CCF3EA +:1039700054C0893F41F48091DA0118160CF04DC013 +:103980001092DA014AC08A3F29F48091DA0187FF58 +:1039900044C0F6CF8B3F39F48091DB0187FF3DC0F7 +:1039A0001092DB013AC08C3F29F48091DB0118169C +:1039B000BCF333C0843F21F48091D7018E7F17C0C0 +:1039C000853F21F48091D7018D7F11C0863F21F47E +:1039D0008091D7018B7F0BC0873F21F48091D70165 +:1039E000877F05C0883F31F48091D7018F7E809317 +:1039F000D70113C08D3F21F48091D5018E7F0BC07C +:103A00008E3F21F48091D5018D7F05C08F3F29F431 +:103A10008091D5018B7F8093D5018091D801811150 +:103A20000EC08091D90181110AC08091DA01811103 +:103A300006C08091DB01811102C01092D601089569 +:103A400087ED91E00E94810D0E9487199093D40127 +:103A50008093D30108951F93CF93DF938091D30177 +:103A60009091D4010E949319AC019091D6019923B1 +:103A700021F02091140130E006C0209115018AE068 +:103A8000289F900111244217530708F486C08091A3 +:103A9000D801C091D901D091DA011091DB018111D7 +:103AA00007C0C11176C0D11174C0111172C075C0A8 +:103AB0009F3F19F09F5F9093D601181624F40E943F +:103AC000B11B8093D8018091D80187FF05C00E9467 +:103AD000B11B81958093D8011C1624F40E94B11B60 +:103AE0008093D9018091D90187FF05C00E94B11B45 +:103AF00081958093D9016091D801662339F1C091F5 +:103B0000D901CC2319F1772767FD7095872F972F5F +:103B10000E94A42023E333E343E35FE30E940821F0 +:103B20000E9471206093D8016C2F772767FD7095F4 +:103B3000872F972F0E94A42023E333E343E35FE31F +:103B40000E9408210E9471206093D9011D1624F45F +:103B50000E94FA1B8093DA018091DA0187FF05C089 +:103B60000E94FA1B81958093DA01111624F40E94B9 +:103B7000FA1B8093DB018091DB0187FF05C00E9467 +:103B8000FA1B81958093DB01DF91CF911F910C94FB +:103B9000201D9F3F09F08ECF96CFDF91CF911F91CF +:103BA0000895E7EDF1E085E0DF011D928A95E9F7E0 +:103BB0001092D6011092D5010895833081F128F436 +:103BC000813059F08230D1F00895853009F449C030 +:103BD000B8F1863009F456C0089580911501262F5A +:103BE00030E0280F311D2F3F310524F4680F60931A +:103BF000150108958FEF80931501089580911401A8 +:103C0000262F30E0280F311D2F3F310524F4680F97 +:103C10006093140108958FEF8093140108958091AB +:103C20001301262F30E0280F311D2F3F310524F4DA +:103C3000680F6093130108958FEF80931301089527 +:103C400080911201262F30E0280F311D2F3F3105C2 +:103C500024F4680F6093120108958FEF809312018E +:103C6000089580911101262F30E0280F311D2F3F3C +:103C7000310524F4680F6093110108958FEF80934C +:103C80001101089580911001262F30E0280F311D79 +:103C90002F3F310524F4680F6093100108958FEFD2 +:103CA000809310010895833011F128F4813049F098 +:103CB000823091F00895853081F120F18630C1F194 +:103CC000089580911501681720F4861B80931501D3 +:103CD000089510921501089580911401681720F439 +:103CE000861B809314010895109214010895809109 +:103CF0001301681720F4861B809313010895109216 +:103D00001301089580911201681720F4861B809397 +:103D100012010895109212010895809111016817FF +:103D200020F4861B809311010895109211010895CB +:103D300080911001681720F4861B8093100108956C +:103D40001092100108950F931F938D3109F46AC0EA +:103D500008F03FC08E3009F484C0C0F4873009F405 +:103D60006DC068F4863009F0B5C08091CD01817FC7 +:103D70008E7F8093CD0181E08093DD01ACC08830DF +:103D800009F457C08B3009F46AC0A4C0863109F425 +:103D900066C078F4803109F477C0813109F09AC0A7 +:103DA0000E94FA1290910D0181E0892780930D0104 +:103DB00056C0893109F453C08B3109F08BC0809112 +:103DC000CD0181FB222720F991E0922790FB81F918 +:103DD00051C0853309F475C048F4873209F471C0C5 +:103DE00008F45EC0893209F46CC074C0833430F4C6 +:103DF0008A3308F053C0883391F16CC0833409F4DE +:103E000060C0883409F066C00E94FA120FEF13ED0B +:103E100020E3015010402040E1F700C000000E9464 +:103E2000E2191DC00E942B200E946A0D0E946306A9 +:103E300016C00E94961B0E94A81B11C09091CD0134 +:103E4000892F8095817080FB90F929F096609860A9 +:103E50009093CD0140C0997F977F9093CD0181E0F1 +:103E60003AC08091CD0182FB222720F991E0922770 +:103E700090FB82F98093CD01992389F38091CD0144 +:103E800081608093CD01EBCF8091CD0183FB222710 +:103E900020F991E0922790FB83F9ECCF895301C080 +:103EA0008D5141E050E060E070E08A019B0104C068 +:103EB000000F111F221F331F8A95D2F7C901B801C5 +:103EC00004C061E070E080E090E00E94B6160E94BD +:103ED000FA12C5CF80E01F910F91089580E00895F8 +:103EE00080E00895CF93C82F8091DD01813079F073 +:103EF00018F08230E9F187C0E0910E01F0910F01D6 +:103F00008081813169F0823209F07FC009C0E0917F +:103F10000E01F0910F018081813111F0823261F444 +:103F20008C2F0E946E1F811104C08C2F0E94A31E33 +:103F30001DC081E090E01AC08C2F0E94701F81117B +:103F400014C0C43179F048F4CB3079F0C03109F0B5 +:103F500060C082E08093DD0108C0C93219F0C83327 +:103F600021F057C01092DD0154C081E0817053C030 +:103F7000C93289F118F5C43171F1A8F4C73009F0DC +:103F800046C08AE08093150194E19093140193E078 +:103F9000909313018093120188E08093110188E2CD +:103FA0008093100134C0CE51C63088F5EC2FF0E07C +:103FB000E65DFE4F80818093DC0129C0CE34E9F0BC +:103FC00020F4CB3421F56AE013C0C13579F0C23555 +:103FD000F1F461E00DC08091DC01882319F01092AA +:103FE000DC0115C081E08093DD0115C061E006C0F1 +:103FF0008091DC010E94DD1D0AC06AE08091DC0135 +:104000000E94531E04C01092DD0180E004C081E0D4 +:1040100002C080E0ABCFCF910895E1E8F0E080816D +:10402000886080838081816080838FB7F89493E07B +:104030009093890090ED909388008FBF0895EFE6EC +:10404000F0E08081826080830895EFE6F0E0808177 +:104050008D7F80830895EFE6F0E0908182E08927EC +:10406000808308951F920F920FB60F9211242F9301 +:104070003F934F935F936F937F938F939F93AF93F0 +:10408000BF93EF93FF938091DE019091DF01019642 +:104090009093DF018093DE01811103C082E00E94D2 +:1040A0006306E091DF01E695E695F0E0EA5CFC4FFF +:1040B000E4918091DE018E1303C080E00E946306CC +:1040C000FF91EF91BF91AF919F918F917F916F91F0 +:1040D0005F914F913F912F910F900FBE0F901F90C6 +:1040E000189504D06894B1118DC0089570D088F0EF +:1040F0009F5790F0B92F9927B751A0F0D1F0660FD4 +:10410000771F881F991F1AF0BA95C9F712C0B130EE +:1041100081F077D0B1E0089574C0672F782F882799 +:10412000B85F39F0B93FCCF3869577956795B3952D +:10413000D9F73EF490958095709561957F4F8F4F9C +:104140009F4F0895E89409C097FB3EF490958095A1 +:10415000709561957F4F8F4F9F4F9923A9F0F92F4D +:1041600096E9BB279395F695879577956795B795CB +:10417000F111F8CFFAF4BB0F11F460FF1BC06F5FB1 +:104180007F4F8F4F9F4F16C0882311F096E911C0C3 +:10419000772321F09EE8872F762F05C0662371F0E4 +:1041A00096E8862F70E060E02AF09A95660F771FF8 +:1041B000881FDAF7880F9695879597F9089557FD28 +:1041C0009058440F551F59F05F3F71F04795880F85 +:1041D00097FB991F61F09F3F79F08795089512161C +:1041E00013061406551FF2CF4695F1DF08C01616C8 +:1041F00017061806991FF1CF869571056105089479 +:104200000895E894BB2766277727CB0197F908958F +:104210000BD078C069D028F06ED018F0952309F043 +:104220005AC05FC01124EECFCADFA0F3959FD1F32F +:10423000950F50E0551F629FF001729FBB27F00D54 +:10424000B11D639FAA27F00DB11DAA1F649F6627A9 +:10425000B00DA11D661F829F2227B00DA11D621FF8 +:10426000739FB00DA11D621F839FA00D611D221FB2 +:10427000749F3327A00D611D231F849F600D211D96 +:10428000822F762F6A2F11249F5750408AF0E1F039 +:1042900088234AF0EE0FFF1FBB1F661F771F881F82 +:1042A00091505040A9F79E3F510570F014C0AACF1D +:1042B0005F3FECF3983EDCF3869577956795B7956D +:1042C000F795E7959F5FC1F7FE2B880F911D969597 +:1042D000879597F9089597F99F6780E870E060E007 +:1042E00008959FEF80EC089500240A94161617068F +:1042F00018060906089500240A94121613061406D7 +:1043000005060895092E0394000C11F4882352F039 +:10431000BB0F40F4BF2B11F460FF04C06F5F7F4FF1 +:104320008F4F9F4F089597FB072E16F4009407D0E8 +:1043300077FD09D00E94AD2107FC05D03EF4909591 +:1043400081959F4F0895709561957F4F0895EE0F69 +:10435000FF1F0590F491E02D0994AA1BBB1B51E1AE +:1043600007C0AA1FBB1FA617B70710F0A61BB70BE5 +:10437000881F991F5A95A9F780959095BC01CD018A +:104380000895F999FECF92BD81BDF89A992780B51D +:104390000895A8E1B0E042E050E00C94E421262F1B +:1043A000F999FECF1FBA92BD81BD20BD0FB6F8941A +:1043B000FA9AF99A0FBE019608950E94CF21272FED +:1043C0000C94D021DC01CB01FC01F999FECF06C091 +:1043D000F2BDE1BDF89A319600B40D9241505040C3 +:0843E000B8F70895F894FFCF2F +:1043E80020026506F306D0069C0668060101BA019C +:1043F80028080A03140A3F4D3639F702AA02740244 +:104408003B02CE01E701000219020102030405067E +:044418000708090088 +:00000001FF diff --git a/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-osx/romanzolotarev-norman-osx.png b/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-osx/romanzolotarev-norman-osx.png new file mode 100644 index 0000000000..4b9433be28 Binary files /dev/null and b/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-osx/romanzolotarev-norman-osx.png differ -- cgit v1.2.1 From 57789c64bd97e99afb470f04ff096c920e66bccd Mon Sep 17 00:00:00 2001 From: Bubblepoint Date: Tue, 26 Apr 2016 05:39:33 +0200 Subject: basic layout --- keyboard/ergodox_ez/keymaps/adnw_k_o_y/keymap.c | 185 ++++++++++++++++++++++++ 1 file changed, 185 insertions(+) create mode 100644 keyboard/ergodox_ez/keymaps/adnw_k_o_y/keymap.c diff --git a/keyboard/ergodox_ez/keymaps/adnw_k_o_y/keymap.c b/keyboard/ergodox_ez/keymaps/adnw_k_o_y/keymap.c new file mode 100644 index 0000000000..a836dbc85b --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/adnw_k_o_y/keymap.c @@ -0,0 +1,185 @@ +#include "ergodox_ez.h" +#include "debug.h" +#include "action_layer.h" +#include "keymap_extras/keymap_german.h" + +#define BASE 0 // default layer +#define SYMB 1 // symbols +#define MDIA 2 // media keys + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* Keymap 0: Basic layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | = | 1 | 2 | 3 | 4 | 5 | LEFT | | RIGHT| 6 | 7 | 8 | 9 | 0 | - | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | Del | K | . | O | , | Y | L1 | | L1 | V | G | C | L | ß | Z | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | BkSp | H | A | E | I | U |------| |------| D | T | R | N | S | F | + * |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------| + * | LShift |X/Ctrl| Q | Ä | Ü | Ö | | | | B | P | W | M | J | RShift | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * |Grv/L1| '" |AltShf| Left | Right| | Up | Down | [ | ] | ~L1 | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | App | LGui | | Alt |Ctrl/Esc| + * ,------|------|------| |------+--------+------. + * | | | Home | | PgUp | | | + * | Space|Backsp|------| |------| Tab |Enter | + * | |ace | End | | PgDn | | | + * `--------------------' `----------------------' + */ +// If it accepts an argument (i.e, is a function), it doesn't need KC_. +// Otherwise, it needs KC_* +[BASE] = KEYMAP( // layer 0 : default + // left hand + KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT, + KC_DELT, DE_K, DE_DOT, DE_O, DE_COMM,DE_Y, TG(SYMB), + KC_BSPC, DE_H, DE_A, DE_E, DE_I, DE_U, + KC_LSFT, CTL_T(DE_X), DE_Q, DE_AE, DE_UE, DE_OE, ALL_T(KC_NO), + LT(SYMB,KC_GRV),KC_QUOT, LALT(KC_LSFT), KC_LEFT,KC_RGHT, + ALT_T(KC_APP), KC_LGUI, + KC_HOME, + KC_SPC,KC_BSPC,KC_END, + // right hand + KC_RGHT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, + TG(SYMB), DE_V, DE_G, DE_C, DE_L, DE_SS, DE_Z, + DE_D, DE_T, DE_R, DE_N, LT(MDIA, DE_S), GUI_T(KC_F), + MEH_T(KC_NO),KC_B, KC_P, KC_W, KC_M, CTL_T(KC_J), KC_RSFT, + KC_UP, KC_DOWN,KC_LBRC,KC_RBRC, KC_FN1, + KC_LALT, CTL_T(KC_ESC), + KC_PGUP, + KC_PGDN,KC_TAB, KC_ENT + ), +/* Keymap 1: Symbol Layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | F12 | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | | | | | . | 0 | = | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | | | + * | | |------| |------| | | + * | | | | | | | | + * `--------------------' `--------------------' + */ +// SYMBOLS +[SYMB] = KEYMAP( + // left hand + KC_TRNS,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, + KC_TRNS,KC_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS, + KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV, + KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS, + KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS, + // right hand + KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + KC_TRNS, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_F12, + KC_DOWN, KC_4, KC_5, KC_6, KC_PLUS, KC_TRNS, + KC_TRNS, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, KC_TRNS, + KC_TRNS,KC_DOT, KC_0, KC_EQL, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS +), +/* Keymap 2: Media and mouse keys + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | | | | | | | | | | | | | | | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | | | MsUp | | | | | | | | | | | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | |MsLeft|MsDown|MsRght| |------| |------| | | | | | Play | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | | | | | | | | | Prev | Next | | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | Lclk | Rclk | |VolUp |VolDn | Mute | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | |Brwser| + * | | |------| |------| |Back | + * | | | | | | | | + * `--------------------' `--------------------' + */ +// MEDIA AND MOUSE +[MDIA] = KEYMAP( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + // right hand + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, + KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS, + KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_WBAK +), +}; + +const uint16_t PROGMEM fn_actions[] = { + [1] = ACTION_LAYER_TAP_TOGGLE(SYMB) // FN1 - Momentary Layer 1 (Symbols) +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + switch(id) { + case 0: + if (record->event.pressed) { + register_code(KC_RSFT); + } else { + unregister_code(KC_RSFT); + } + break; + } + return MACRO_NONE; +}; + +// Runs just one time when the keyboard initializes. +void matrix_init_user(void) { + +}; + +// Runs constantly in the background, in a loop. +void matrix_scan_user(void) { + + uint8_t layer = biton32(layer_state); + + ergodox_board_led_off(); + ergodox_right_led_1_off(); + ergodox_right_led_2_off(); + ergodox_right_led_3_off(); + switch (layer) { + // TODO: Make this relevant to the ErgoDox EZ. + case 1: + ergodox_right_led_1_on(); + break; + case 2: + ergodox_right_led_2_on(); + break; + default: + // none + break; + } + +}; -- cgit v1.2.1 From 0181663771a459252f75b1e78a602c4e5c35dc72 Mon Sep 17 00:00:00 2001 From: Tobias Matt Date: Tue, 26 Apr 2016 08:41:17 +0200 Subject: organize in subfolder --- keyboard/ergodox_ez/keymaps/adnw/k_o_y/keymap.c | 185 ++++++++++++++++++++++++ keyboard/ergodox_ez/keymaps/adnw_k_o_y/keymap.c | 185 ------------------------ 2 files changed, 185 insertions(+), 185 deletions(-) create mode 100644 keyboard/ergodox_ez/keymaps/adnw/k_o_y/keymap.c delete mode 100644 keyboard/ergodox_ez/keymaps/adnw_k_o_y/keymap.c diff --git a/keyboard/ergodox_ez/keymaps/adnw/k_o_y/keymap.c b/keyboard/ergodox_ez/keymaps/adnw/k_o_y/keymap.c new file mode 100644 index 0000000000..a836dbc85b --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/adnw/k_o_y/keymap.c @@ -0,0 +1,185 @@ +#include "ergodox_ez.h" +#include "debug.h" +#include "action_layer.h" +#include "keymap_extras/keymap_german.h" + +#define BASE 0 // default layer +#define SYMB 1 // symbols +#define MDIA 2 // media keys + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* Keymap 0: Basic layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | = | 1 | 2 | 3 | 4 | 5 | LEFT | | RIGHT| 6 | 7 | 8 | 9 | 0 | - | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | Del | K | . | O | , | Y | L1 | | L1 | V | G | C | L | ß | Z | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | BkSp | H | A | E | I | U |------| |------| D | T | R | N | S | F | + * |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------| + * | LShift |X/Ctrl| Q | Ä | Ü | Ö | | | | B | P | W | M | J | RShift | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * |Grv/L1| '" |AltShf| Left | Right| | Up | Down | [ | ] | ~L1 | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | App | LGui | | Alt |Ctrl/Esc| + * ,------|------|------| |------+--------+------. + * | | | Home | | PgUp | | | + * | Space|Backsp|------| |------| Tab |Enter | + * | |ace | End | | PgDn | | | + * `--------------------' `----------------------' + */ +// If it accepts an argument (i.e, is a function), it doesn't need KC_. +// Otherwise, it needs KC_* +[BASE] = KEYMAP( // layer 0 : default + // left hand + KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT, + KC_DELT, DE_K, DE_DOT, DE_O, DE_COMM,DE_Y, TG(SYMB), + KC_BSPC, DE_H, DE_A, DE_E, DE_I, DE_U, + KC_LSFT, CTL_T(DE_X), DE_Q, DE_AE, DE_UE, DE_OE, ALL_T(KC_NO), + LT(SYMB,KC_GRV),KC_QUOT, LALT(KC_LSFT), KC_LEFT,KC_RGHT, + ALT_T(KC_APP), KC_LGUI, + KC_HOME, + KC_SPC,KC_BSPC,KC_END, + // right hand + KC_RGHT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, + TG(SYMB), DE_V, DE_G, DE_C, DE_L, DE_SS, DE_Z, + DE_D, DE_T, DE_R, DE_N, LT(MDIA, DE_S), GUI_T(KC_F), + MEH_T(KC_NO),KC_B, KC_P, KC_W, KC_M, CTL_T(KC_J), KC_RSFT, + KC_UP, KC_DOWN,KC_LBRC,KC_RBRC, KC_FN1, + KC_LALT, CTL_T(KC_ESC), + KC_PGUP, + KC_PGDN,KC_TAB, KC_ENT + ), +/* Keymap 1: Symbol Layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | F12 | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | | | | | . | 0 | = | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | | | + * | | |------| |------| | | + * | | | | | | | | + * `--------------------' `--------------------' + */ +// SYMBOLS +[SYMB] = KEYMAP( + // left hand + KC_TRNS,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, + KC_TRNS,KC_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS, + KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV, + KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS, + KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS, + // right hand + KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + KC_TRNS, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_F12, + KC_DOWN, KC_4, KC_5, KC_6, KC_PLUS, KC_TRNS, + KC_TRNS, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, KC_TRNS, + KC_TRNS,KC_DOT, KC_0, KC_EQL, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS +), +/* Keymap 2: Media and mouse keys + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | | | | | | | | | | | | | | | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | | | MsUp | | | | | | | | | | | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | |MsLeft|MsDown|MsRght| |------| |------| | | | | | Play | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | | | | | | | | | Prev | Next | | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | Lclk | Rclk | |VolUp |VolDn | Mute | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | |Brwser| + * | | |------| |------| |Back | + * | | | | | | | | + * `--------------------' `--------------------' + */ +// MEDIA AND MOUSE +[MDIA] = KEYMAP( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + // right hand + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, + KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS, + KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_WBAK +), +}; + +const uint16_t PROGMEM fn_actions[] = { + [1] = ACTION_LAYER_TAP_TOGGLE(SYMB) // FN1 - Momentary Layer 1 (Symbols) +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + switch(id) { + case 0: + if (record->event.pressed) { + register_code(KC_RSFT); + } else { + unregister_code(KC_RSFT); + } + break; + } + return MACRO_NONE; +}; + +// Runs just one time when the keyboard initializes. +void matrix_init_user(void) { + +}; + +// Runs constantly in the background, in a loop. +void matrix_scan_user(void) { + + uint8_t layer = biton32(layer_state); + + ergodox_board_led_off(); + ergodox_right_led_1_off(); + ergodox_right_led_2_off(); + ergodox_right_led_3_off(); + switch (layer) { + // TODO: Make this relevant to the ErgoDox EZ. + case 1: + ergodox_right_led_1_on(); + break; + case 2: + ergodox_right_led_2_on(); + break; + default: + // none + break; + } + +}; diff --git a/keyboard/ergodox_ez/keymaps/adnw_k_o_y/keymap.c b/keyboard/ergodox_ez/keymaps/adnw_k_o_y/keymap.c deleted file mode 100644 index a836dbc85b..0000000000 --- a/keyboard/ergodox_ez/keymaps/adnw_k_o_y/keymap.c +++ /dev/null @@ -1,185 +0,0 @@ -#include "ergodox_ez.h" -#include "debug.h" -#include "action_layer.h" -#include "keymap_extras/keymap_german.h" - -#define BASE 0 // default layer -#define SYMB 1 // symbols -#define MDIA 2 // media keys - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -/* Keymap 0: Basic layer - * - * ,--------------------------------------------------. ,--------------------------------------------------. - * | = | 1 | 2 | 3 | 4 | 5 | LEFT | | RIGHT| 6 | 7 | 8 | 9 | 0 | - | - * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | Del | K | . | O | , | Y | L1 | | L1 | V | G | C | L | ß | Z | - * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | BkSp | H | A | E | I | U |------| |------| D | T | R | N | S | F | - * |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------| - * | LShift |X/Ctrl| Q | Ä | Ü | Ö | | | | B | P | W | M | J | RShift | - * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * |Grv/L1| '" |AltShf| Left | Right| | Up | Down | [ | ] | ~L1 | - * `----------------------------------' `----------------------------------' - * ,-------------. ,-------------. - * | App | LGui | | Alt |Ctrl/Esc| - * ,------|------|------| |------+--------+------. - * | | | Home | | PgUp | | | - * | Space|Backsp|------| |------| Tab |Enter | - * | |ace | End | | PgDn | | | - * `--------------------' `----------------------' - */ -// If it accepts an argument (i.e, is a function), it doesn't need KC_. -// Otherwise, it needs KC_* -[BASE] = KEYMAP( // layer 0 : default - // left hand - KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT, - KC_DELT, DE_K, DE_DOT, DE_O, DE_COMM,DE_Y, TG(SYMB), - KC_BSPC, DE_H, DE_A, DE_E, DE_I, DE_U, - KC_LSFT, CTL_T(DE_X), DE_Q, DE_AE, DE_UE, DE_OE, ALL_T(KC_NO), - LT(SYMB,KC_GRV),KC_QUOT, LALT(KC_LSFT), KC_LEFT,KC_RGHT, - ALT_T(KC_APP), KC_LGUI, - KC_HOME, - KC_SPC,KC_BSPC,KC_END, - // right hand - KC_RGHT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, - TG(SYMB), DE_V, DE_G, DE_C, DE_L, DE_SS, DE_Z, - DE_D, DE_T, DE_R, DE_N, LT(MDIA, DE_S), GUI_T(KC_F), - MEH_T(KC_NO),KC_B, KC_P, KC_W, KC_M, CTL_T(KC_J), KC_RSFT, - KC_UP, KC_DOWN,KC_LBRC,KC_RBRC, KC_FN1, - KC_LALT, CTL_T(KC_ESC), - KC_PGUP, - KC_PGDN,KC_TAB, KC_ENT - ), -/* Keymap 1: Symbol Layer - * - * ,--------------------------------------------------. ,--------------------------------------------------. - * | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 | - * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | F12 | - * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | | - * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | | - * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * | | | | | | | | . | 0 | = | | - * `----------------------------------' `----------------------------------' - * ,-------------. ,-------------. - * | | | | | | - * ,------|------|------| |------+------+------. - * | | | | | | | | - * | | |------| |------| | | - * | | | | | | | | - * `--------------------' `--------------------' - */ -// SYMBOLS -[SYMB] = KEYMAP( - // left hand - KC_TRNS,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, - KC_TRNS,KC_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS, - KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV, - KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS, - KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, - KC_TRNS,KC_TRNS, - KC_TRNS, - KC_TRNS,KC_TRNS,KC_TRNS, - // right hand - KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, - KC_TRNS, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_F12, - KC_DOWN, KC_4, KC_5, KC_6, KC_PLUS, KC_TRNS, - KC_TRNS, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, KC_TRNS, - KC_TRNS,KC_DOT, KC_0, KC_EQL, KC_TRNS, - KC_TRNS, KC_TRNS, - KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS -), -/* Keymap 2: Media and mouse keys - * - * ,--------------------------------------------------. ,--------------------------------------------------. - * | | | | | | | | | | | | | | | | - * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | | | | MsUp | | | | | | | | | | | | - * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | |MsLeft|MsDown|MsRght| |------| |------| | | | | | Play | - * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | | | | | | | | | | | Prev | Next | | | - * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * | | | | Lclk | Rclk | |VolUp |VolDn | Mute | | | - * `----------------------------------' `----------------------------------' - * ,-------------. ,-------------. - * | | | | | | - * ,------|------|------| |------+------+------. - * | | | | | | |Brwser| - * | | |------| |------| |Back | - * | | | | | | | | - * `--------------------' `--------------------' - */ -// MEDIA AND MOUSE -[MDIA] = KEYMAP( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2, - KC_TRNS, KC_TRNS, - KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, - // right hand - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, - KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS, - KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, - KC_TRNS, - KC_TRNS, KC_TRNS, KC_WBAK -), -}; - -const uint16_t PROGMEM fn_actions[] = { - [1] = ACTION_LAYER_TAP_TOGGLE(SYMB) // FN1 - Momentary Layer 1 (Symbols) -}; - -const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) -{ - // MACRODOWN only works in this function - switch(id) { - case 0: - if (record->event.pressed) { - register_code(KC_RSFT); - } else { - unregister_code(KC_RSFT); - } - break; - } - return MACRO_NONE; -}; - -// Runs just one time when the keyboard initializes. -void matrix_init_user(void) { - -}; - -// Runs constantly in the background, in a loop. -void matrix_scan_user(void) { - - uint8_t layer = biton32(layer_state); - - ergodox_board_led_off(); - ergodox_right_led_1_off(); - ergodox_right_led_2_off(); - ergodox_right_led_3_off(); - switch (layer) { - // TODO: Make this relevant to the ErgoDox EZ. - case 1: - ergodox_right_led_1_on(); - break; - case 2: - ergodox_right_led_2_on(); - break; - default: - // none - break; - } - -}; -- cgit v1.2.1 From d280a59c8224ebc78a712d43278e3b937243c6a8 Mon Sep 17 00:00:00 2001 From: Tobias Matt Date: Tue, 26 Apr 2016 08:43:56 +0200 Subject: add hex file --- keyboard/ergodox_ez/keymaps/adnw/k_o_y/k_o_y.hex | 1152 ++++++++++++++++++++++ 1 file changed, 1152 insertions(+) create mode 100644 keyboard/ergodox_ez/keymaps/adnw/k_o_y/k_o_y.hex diff --git a/keyboard/ergodox_ez/keymaps/adnw/k_o_y/k_o_y.hex b/keyboard/ergodox_ez/keymaps/adnw/k_o_y/k_o_y.hex new file mode 100644 index 0000000000..1e07f234c8 --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/adnw/k_o_y/k_o_y.hex @@ -0,0 +1,1152 @@ +:100000000C9465020C94A9020C94A9020C94A90208 +:100010000C94A9020C94A9020C94A9020C94A902B4 +:100020000C94A9020C94A9020C946B0C0C943D0D39 +:100030000C94A9020C94A9020C94A9020C94A90294 +:100040000C94A9020C940F220C94A9020C94A902FE +:100050000C94A9020C94B31B0C94A9020C94A90251 +:100060000C94A9020C94A9020C94A9020C94A90264 +:100070000C94A9020C94A9020C94A9020C94A90254 +:100080000C94A9020C94A9020C94A9020C94A90244 +:100090000C94A9020C94A9020C94A9020C94A90234 +:1000A0000C94A9020C94A9020C94A902A20DC40DEF +:1000B000AF0EC40DAF0E060E290EAF0E7E0E910EC2 +:1000C0008B118B11CC11CC110E124A124A144A1406 +:1000D00062124A145913591324144A144A14381436 +:1000E0000000F0A12E004C002A00E1003581000044 +:1000F0001E000E000B001B7134004D001F00370066 +:1001000004001400E1042A0020001200080034005A +:1001100050002C00210036000C002F004F004A0038 +:1001200022001D00180033000000657450000154C7 +:100130000000007F0000E3004F0001540000007742 +:100140000000E200230019000700050000002971EB +:1001500024000A001700130052004B00250006007F +:1001600015001A005100280026000F001100100091 +:100170002F002B0027002D0016820D7130004E003D +:100180002D001C000978E500C100000001000100FD +:1001900001000100010000003A001E0220022202BC +:1001A000010001003B001F022102230201000100A7 +:1001B0003C002F0226022F00010001003D0030020A +:1001C00027023000010001003E00310235003502F7 +:1001D000000001000100010000000100000001001A +:1001E0000100010000000100000001003F0052007A +:1001F00051002402000001004000240021001E00E4 +:10020000010001004100250022001F00370001000D +:1002100042002600230020002700010043002502A1 +:100220002E0231002E0001004400450001000100B3 +:1002300001000000010001000100010001000000B8 +:1002400001000100010001000100010001000100A6 +:10025000F2000100010001000100F000F1000100C6 +:10026000F400010001000100F3000100F5000100AD +:100270000100010001000100000001000100010077 +:100280000000010000000100010001000000010069 +:100290000000010001000100010001000000010058 +:1002A0000100010001000100A9000100010001009E +:1002B0000100AC00AA00B600010001000100AB0083 +:1002C000A80001000100010001000100010001007F +:1002D00001000100AE00010001000000160345000E +:1002E000720067006F0044006F0078002000450036 +:1002F0005A00000016034500720067006F004400BA +:100300006F007800200045005A0000000403090433 +:1003100009026D00040100A0FA09040000010301B4 +:100320000100092111010001223F00070581030896 +:10033000000A090401000103010200092111010062 +:1003400001224D000705820308000A09040200018A +:100350000300000009211101000122360007058376 +:100360000308000A09040300010300000009211129 +:100370000100012239000705840310000112011059 +:100380000100000008EDFE07130100010200010555 +:10039000010906A101050719E029E71500250195C6 +:1003A0000875018102050819012905950575019156 +:1003B000029501750391010507190029771500259C +:1003C00001957875018102C005010980A1018502AE +:1003D00016010026B7001A01002AB7007510950112 +:1003E0008100C0050C0901A1018503160100269CAE +:1003F000021A01002A9C02751095018100C00501B6 +:100400000902A1010901A100050919012905150029 +:10041000250195057501810295017503810105018D +:10042000093009311581257F950275088106093843 +:100430001581257F950175088106050C0A3802157E +:1004400081257F950175088106C0C005010906A1B7 +:1004500001050719E029E7150025019508750181B7 +:100460000295017508810105081901290595057591 +:100470000191029501750391010507190029FF15E6 +:100480000025FF950675088100C0000000000000EF +:100490000000000000010204060A0F17202C3A4A4F +:1004A0005D71879DB3C7DAE9F5FCFFFCF5E9DAC7B2 +:1004B000B39D87715D4A3A2C20170F0A060402018A +:1004C0000000000000000000000011241FBECFEF5C +:1004D000DAE0DEBFCDBF04B603FE24C08091EE019A +:1004E0009091EF01A091F001B091F1018730904B14 +:1004F000A740B04BB9F41092EE011092EF011092A8 +:10050000F0011092F10114BE84B7877F84BF88E1A7 +:100510000FB6F89480936000109260000FBEE0E088 +:10052000FFE3099511E0A0E0B1E0ECEAF7E402C0D6 +:1005300005900D92A433B107D9F721E0A4E3B1E00F +:1005400001C01D92AE3EB207E1F70E94B1090C94C2 +:10055000D4230C94000061110BC0FC01828188231C +:1005600021F085EE0E94131003C085EE0E94DB107F +:1005700080E090E0089508956091B1017091B2011A +:100580008091B3019091B4010E94DC1A56985E9854 +:1005900025982D9826982E9827982F98813019F015 +:1005A000823021F00895259A2D9A0895269A2E9A40 +:1005B00008950C94BC0256985E9825982D9826981C +:1005C0002E9827982F988FEF90E090938900809332 +:1005D000880090938B0080938A0090938D00809385 +:1005E0008C00259A2D9A2FEF80E792E021508040D1 +:1005F0009040E1F700C00000269A2E9A2FEF80E786 +:1006000092E0215080409040E1F700C00000279A1E +:100610002F9A2FEF80E792E0215080409040E1F741 +:1006200000C0000025982D982FEF80E792E0215020 +:1006300080409040E1F700C0000026982E982FEFF0 +:1006400080E792E0215080409040E1F700C0000038 +:1006500027982F9856985E9825982D9826982E982A +:1006600027982F98089589EA8093800089E08093E5 +:10067000810024982C983F988AB18F748AB96E981B +:10068000479A8BB1806B8BB9769A0E94DB020C94EF +:10069000BB0280E2809300018091340181110EC081 +:1006A0000E94980381E0809334012FEF83ED90E363 +:1006B000215080409040E1F700C0000080E40E949B +:1006C0009E038093000181112EC00E94C803809375 +:1006D0000001811128C00E94C8038093000181118C +:1006E00022C08FE30E94C8038093000181111BC0C8 +:1006F0000E94C00380E40E949E0380930001811148 +:1007000012C08CE00E94C8038093000181110BC0CD +:100710000E94C80380930001811105C08FE30E94ED +:10072000C803809300010E94C003809100010895D6 +:100730001092B9008AE08093B800089594EA9093EB +:10074000BC009091BC0097FFFCCF9091B900987FBE +:10075000983021F0903111F081E008958093BB0032 +:1007600084E88093BC008091BC0087FFFCCF80911F +:10077000B900887F883111F0803471F780E00895E6 +:1007800084E98093BC008091BC0084FDFCCF089577 +:100790008093BB0084E88093BC008091BC0087FFFD +:1007A000FCCF9091B900987F81E0983209F480E005 +:1007B000089584E88093BC008091BC0087FFFCCF43 +:1007C0008091BB00089580910001811115C080E4E3 +:1007D0000E949E038093000181110CC082E10E945F +:1007E000C80380930001811105C08FEF0E94C803E8 +:1007F000809300010E94C00384B1807F84B985B1D9 +:10080000807F85B98AB1837F8AB98BB1837F8BB9A9 +:100810003E98469808950E944903809300010E94E3 +:10082000E30380B38C7080BB81B3836F81BBE4E44E +:10083000F1E0A6E3B1E011921D9281E0E235F80704 +:10084000D1F70C943303BF92CF92DF92EF92FF92D5 +:100850000F931F93CF93DF9380910001882379F04A +:10086000809135018F5F80933501811108C00E940E +:10087000490380930001811102C00E94DB0206E35C +:1008800011E0C0E0D0E0DD24D39482E0C82EEE2455 +:10089000E394F12CC73000F580910001811162C012 +:1008A00080E40E949E0380930001811112C082E1C6 +:1008B0000E94C8038093000181110BC0C7010C2E58 +:1008C00001C0880F0A94EAF780950E94C8038093BC +:1008D00000010E94C00346C0CA30A1F028F4C8300D +:1008E00059F0C93061F005C0CC3089F070F0CD30DE +:1008F00089F0209A289810C0219A29980DC0229A30 +:100900002A980AC0239A2B9807C0529A01C0539A7A +:100910005B9802C03E9A4698E0EAEA95F1F78FB1FB +:1009200079995AC092E081708D25892B7C9B02C0F9 +:1009300090E001C094E0892B7D9B02C090E001C053 +:1009400098E0892B7E9B02C090E001C090E1892B4A +:100950009FB19095991F9927991F9295990F907E15 +:10096000892B0FC08091000181114BC080E40E944F +:100970009E0380930001882389F1B12C0E94C0035B +:100980008B2DF8019081981719F08083C092010196 +:100990000E94E30321960F5F1F4FCE30D10509F06F +:1009A00079CF80910101882371F1815080930101F9 +:1009B000882339F08FE99FE00197F1F700C000002C +:1009C00022C0A4E4B1E0E6E3F1E081918D9391E0EF +:1009D000E434F907D1F717C090E0A5CF83E10E9476 +:1009E000C803809300018111C8CF81E40E949E0357 +:1009F000809300018111C1CF0E94D903B82EB09419 +:100A0000BDCF80E0BECF0E94D90281E0DF91CF91BF +:100A10001F910F91FF90EF90DF90CF90BF900895BE +:100A2000E82FF0E0EC5BFE4F808108950895089573 +:100A300096E0799FF001112494E5899FE00DF11D66 +:100A40001124E60FF11DEE0FFF1FEC51FF4F8591B2 +:100A500094910895880F991F805A9040FC018591C8 +:100A600094910895880F991F80529F4FFC018591A2 +:100A7000949108950F931F93CF93DF93EC01811509 +:100A800020E3920730F5811530E2930708F0B1C0FA +:100A90008B3B910588F4883A910508F058C0853A57 +:100AA000910508F049C08430910508F043C08130B9 +:100AB000910509F4B2C1AEC18F3F910509F0D0F59F +:100AC000803F910508F092C0805E9109089790F1EF +:100AD000A1C1C11581E5D807A8F4C23090E5D907B6 +:100AE00008F09FC0C11520E5D20709F486C008F0C0 +:100AF00092C0C11580E4D80708F08CC18E0111277F +:100B0000106CCCC1C11590E8D90758F4C11520E785 +:100B1000D20708F07BC1C11530E6D30708F423C122 +:100B200079C1C11580E9D80708F074C18E011F7022 +:100B3000106AB4C18E01B2C1853A910509F470C141 +:100B4000863A910509F46FC103E810E4A7C1883A19 +:100B5000910509F46BC1893A910509F46AC18A3A91 +:100B6000910509F469C18B3A910509F468C18C3A81 +:100B7000910509F467C18D3A910509F466C1803B7E +:100B8000910509F465C18E3A910509F464C18F3A63 +:100B9000910509F463C1813B910509F462C1823B6F +:100BA000910509F461C1833B910509F460C1843B5F +:100BB000910509F45FC1853B910509F45EC1863B4F +:100BC000910509F45DC1873B910509F45CC1883B3F +:100BD000910509F45BC1893B910509F45AC18A3B2F +:100BE000910509F059C10AE216E458C18C0110655B +:100BF00055C19F700E94320552C10E946D149FEF33 +:100C000024E33CE0915020403040E1F700C0000078 +:100C10000E94D81B43C18091CD0181608093CD019A +:100C20003DC10E94801D811102C00E94661D0E946C +:100C30009D1D90E09093EE018093ED01C23080E520 +:100C4000D80721F48091ED01816086C0C43090E521 +:100C5000D90721F48091ED0182607EC0C63020E585 +:100C6000D20721F48091ED01846076C0C83030E570 +:100C7000D30719F48091ED0127C0CA3080E5D80769 +:100C800021F48091ED01806167C0CC3090E5D907F7 +:100C900021F48091ED0180625FC0CE3020E5D20763 +:100CA00021F48091ED01806457C0C03130E5D30755 +:100CB00021F48091ED0180684FC0C23180E5D807F2 +:100CC00029F48091ED018460886046C0C33090E5CE +:100CD000D90721F48091ED018E7F3EC0C53020E51B +:100CE000D20721F48091ED018D7F36C0C73030E509 +:100CF000D30721F48091ED018B7F2EC0C93080E5B0 +:100D0000D80719F48091ED0126C0CB3090E5D907C2 +:100D100021F48091ED018F7E1FC0CD3020E5D207F8 +:100D200021F48091ED018F7D17C0CF3030E5D307DE +:100D300021F48091ED018F7B0FC0C13180E5D80790 +:100D400021F48091ED018F7707C0C331D04531F494 +:100D50008091ED018B7F877F8093ED018091ED0184 +:100D60000E94A11D9BC08D2F99278F7099278130DC +:100D70009105E9F48E01037011279C0102C0220F36 +:100D8000331F0A95E2F789011C68CE0164E0880FE1 +:100D9000991F6A95E1F788279370082B192B73E048 +:100DA000CC0FDD1F7A95E1F7C076DD272CC08230AD +:100DB000910529F41C2F0027016F106A6FC0833042 +:100DC000910561F4CE018370992701E010E002C023 +:100DD000000F111F8A95E2F71C680EC0049709F0F6 +:100DE0005DC0CE018370992701E010E002C0000FC2 +:100DF000111F8A95E2F71A6843E0CC0FDD1F4A9570 +:100E0000E1F7C07ED7700C2B1D2B48C08E011F70E0 +:100E1000106244C000E010E041C001E010E03EC0BC +:100E200001E810E43BC002E810E438C002EE14E42C +:100E300035C009EE14E432C00AEE14E42FC005EB0D +:100E400014E42CC006EB14E429C007EB14E426C01C +:100E50000CEC14E423C00DEC14E420C003E815E40A +:100E60001DC00AE815E41AC002E915E417C004E938 +:100E700015E414C001E216E411C003E216E40EC04A +:100E800004E216E40BC005E216E408C006E216E42C +:100E900005C007E216E402C000E014E4C801DF91D7 +:100EA000CF911F910F91089596E0799FF001112441 +:100EB00094E5899FE00DF11D1124E60FF11DEE0F61 +:100EC000FF1FEC51FF4F85919491803E9105E0F416 +:100ED000803C910558F58133910509F46FC048F4C1 +:100EE0008932910509F463C08A32910509F46DC015 +:100EF00072C089339105E9F082389105D1F08533CC +:100F0000910509F44DC067C0833E910581F138F425 +:100F1000803E9105B9F0823E9105D9F05CC0863ED5 +:100F2000910561F1873E9105A1F155C00E942A0506 +:100F300008952091ED0120FD02C021FF4CC080EEFC +:100F400090E049C08091ED0180FFF9CF89E390E006 +:100F500042C08091ED0182FF0EC08091ED0184FFBF +:100F600003C080E090E037C083EE90E034C0809111 +:100F7000ED0182FFF2CF82EE90E02DC08091ED0175 +:100F800083FF0BC08091ED0184FDEBCF87EE90E0F5 +:100F900022C08091ED0183FFF5CF86EE90E01BC06B +:100FA0008091ED0185FF07C089E290E014C0809137 +:100FB000ED0185FFF9CF85E390E00DC08091ED0153 +:100FC00086FF07C08AE290E006C08091ED0186FFAF +:100FD000F9CF81E390E00E943A05089508950C94BA +:100FE000EE07809162010895CF93DF9300D01F92A6 +:100FF000CDB7DEB72091E401243019F523E0298331 +:101000009B838A832093E9008FEF9091E8008150C1 +:1010100095FD06C095ED9A95F1F700008111F5CF89 +:101020008091E80085FF0DC040E050E063E070E093 +:10103000CE0101960E945E0A8091E8008E7780932F +:10104000E8000F900F900F90DF91CF910895CF930C +:10105000DF9300D01F92CDB7DEB72091E40124309A +:1010600021F522E029839B838A8383E08093E90032 +:101070008FEF9091E800815095FD06C095ED9A950F +:10108000F1F700008111F5CF8091E80085FF0DC0D8 +:1010900040E050E063E070E0CE0101960E945E0AFD +:1010A0008091E8008E778093E8000F900F900F906A +:1010B000DF91CF9108952091E4012430F1F422E0F2 +:1010C0002093E9002FEF3091E800215035FD06C054 +:1010D00035ED3A95F1F700002111F5CF2091E800A8 +:1010E00025FF0BC040E050E065E070E00E945E0A22 +:1010F0008091E8008E778093E8000895CF93DF9386 +:10110000EC018091E401843009F046C090910C011B +:101110009923D9F090910D019923B9F08093E900BA +:101120008FEF9091E800815095FD06C095E19A956A +:10113000F1F700008111F5CF8091E80085FF2CC008 +:1011400040E050E060E170E017C081E08093E9008A +:101150008FEF9091E800815095FD06C095ED9A952E +:10116000F1F700008111F5CF8091E80085FF14C0F0 +:1011700040E050E068E070E0CE010E945E0A80919D +:10118000E8008E778093E80080E1FE01A2E5B1E0FF +:1011900001900D928A95E1F7DF91CF9108958091AA +:1011A000E301811109C00E94F00B0E944D0C809157 +:1011B000E20084608093E20008951092E3010895B4 +:1011C00008950C94FC210E946F1B0E9402220E9431 +:1011D000EA0E0C94EF0742E061EC81E00E946A0B9A +:1011E00042E061EC82E00E946A0B42E061EC83E045 +:1011F0000E946A0B42E161EC84E00C946A0B8091DE +:10120000E601833009F455C030F4813071F082304A +:1012100009F48EC008958A3009F47AC08B3009F43D +:1012200060C0893009F09CC020C08091E501813AFE +:1012300009F096C08091E800877F8093E800809154 +:10124000E9019091EA01892B21F060E080E090E0D3 +:1012500003C060E182E591E070E00E94A70A8091FE +:10126000E8008B778093E80008958091E501813252 +:1012700009F076C08091E9019091EA01009719F098 +:10128000039709F06DC08091E800877F8093E800A4 +:101290008091E80082FD05C08091E4018111F8CFC2 +:1012A0005FC08091F100809362018091E8008B77AC +:1012B00053C08091E501813A09F052C08091E90163 +:1012C0009091EA01892B09F04BC08091E800877F5B +:1012D0008093E8008091E80080FFFCCF80910C01B2 +:1012E00036C08091E5018132D9F58091E901909174 +:1012F000EA01892BA9F58091E800877F8093E800B7 +:101300000E949F0B8091E70180930C010C946D1457 +:101310008091E501813221F58091E800877F8093FB +:10132000E8000E949F0B8091E8018093630108957B +:101330008091E501813AA1F48091E800877F809354 +:10134000E8008091E80080FFFCCF809163018093EA +:10135000F1008091E8008E778093E8000C949F0B59 +:10136000089584B7877F84BF88E10FB6F89480938F +:101370006000109260000FBE90E080E80FB6F89415 +:1013800080936100909361000FBE0E94390F0E940C +:10139000F00B0E944D0C8091E20084608093E2008B +:1013A00078940E94C80E0E943B0F82E091E00E9458 +:1013B000E50E0E94EA218091E401853069F40E94E3 +:1013C0002F1B8091E2018823B1F30E945A1B8823CE +:1013D00091F30E94480AEFCF0E94410FECCF292FD2 +:1013E000332723303105A9F06CF42130310509F49D +:1013F00042C02230310509F043C08DE690E020E183 +:1014000033E042C021323105C9F02232310519F1F1 +:1014100037C099278130910541F08230910541F024 +:10142000892B71F5ECE0F3E005C0E4EFF2E002C0D7 +:10143000ECEDF2E0849190E09F0126C0643000F56D +:10144000E62FF0E0EE0FFF1FEE5DFE4F20813181B1 +:1014500089E090E019C0643098F4E62FF0E0DF01F5 +:10146000AA0FBB1FA65EBE4F2D913C91EA5EFE4FB8 +:10147000808190E009C082E190E02DE733E004C074 +:1014800080E090E020E030E0FA013183208308958D +:1014900080E189BD82E189BD09B400FEFDCF809164 +:1014A000D8008F7D8093D8008091E0008260809387 +:1014B000E0008091E00081FDFCCF0895CF92DF92A3 +:1014C000EF92FF920F931F93CF93DF937C018B01D9 +:1014D000EA010E94C00B811131C0209731F0888150 +:1014E0009981081B190BE80EF91EC12CD12C01158E +:1014F000110519F18091E80085FD14C08091E80084 +:101500008E778093E800209741F0888199818C0D37 +:101510009D1D9983888385E011C00E94C00B88239C +:1015200031F30CC0F70181917F018093F1000150EC +:101530001109FFEFCF1ADF0ADACF80E0DF91CF91F8 +:101540001F910F91FF90EF90DF90CF900895209121 +:10155000EB013091EC012617370748F06115710552 +:1015600039F42091E8002E772093E80001C0B901FA +:10157000FC0120E061157105B9F18091E401882337 +:1015800009F440C0853009F43FC08091E80083FD34 +:101590003DC08091E80082FF06C08091E80082FF94 +:1015A00026C080E008958091E80080FFE3CF20917D +:1015B000F3008091F20090E0922B6115710551F0DB +:1015C0008830910538F421912093F1006150710920 +:1015D0000196F3CF21E0089709F020E08091E80020 +:1015E0008E778093E800C6CF2111C7CFD6CF8091E8 +:1015F000E401882339F0853039F08091E80083FFD9 +:10160000CCCF04C082E0089583E0089581E008957E +:101610002091EB013091EC012617370748F0611556 +:10162000710539F42091E8002E772093E80001C07D +:10163000B901FC0120E061157105C1F18091E4015F +:10164000882309F441C0853009F440C08091E80046 +:1016500083FD3EC08091E80082FF06C08091E800D3 +:1016600082FF27C080E008958091E80080FFE3CFEB +:101670002091F3008091F20090E0922B61157105AA +:1016800059F08830910540F424912093F10031966F +:10169000615071090196F2CF21E0089709F020E02E +:1016A0008091E8008E778093E800C5CF2111C6CFE6 +:1016B000D5CF8091E401882339F0853039F08091CD +:1016C000E80083FFCBCF04C082E0089583E0089553 +:1016D00081E00895982F973058F59093E900981776 +:1016E00039F07091EC002091ED005091F00003C0B2 +:1016F000242F762F50E021FF19C03091EB003E7F60 +:101700003093EB003091ED003D7F3093ED00309150 +:10171000EB0031603093EB007093EC002093ED0010 +:101720005093F0002091EE0027FF07C09F5FD3CFBA +:101730008F708093E90081E0089580E008958091A2 +:10174000E50187FD05C08091E80080FF0EC012C052 +:101750008091E80082FD05C08091E4018111F8CFFD +:1017600008958091E8008B7708C08091E401811191 +:10177000EACF08958091E8008E778093E80008957D +:101780008091E4009091E50045E62091EC0020FF77 +:1017900021C02091E80020FD21C02091E4012223F6 +:1017A00089F0253089F02091EB0025FD0FC02091B4 +:1017B000E4003091E5002817390739F3415041F032 +:1017C000C901E3CF82E0089583E0089581E00895A0 +:1017D00084E008952091E80022FFDFCF80E00895A3 +:1017E0000E945E0C0E94660CE0EEF0E08081816059 +:1017F0008083E8EDF0E080818F77808319BCA7EDCE +:10180000B0E08C918E7F8C9380818F7E808310924C +:10181000E30108950F931F93CF93DF930E945E0C13 +:101820000E94660CC8EDD0E088818F77888388811C +:101830008068888388818F7D888319BC1092E40139 +:101840001092E0011092E2011092E10100EE10E02E +:10185000F80180818B7F808388818160888342E06A +:1018600060E080E00E946A0BE1EEF0E080818E7F14 +:101870008083E2EEF0E080818160808380818860F7 +:101880008083F80180818E7F808388818061888356 +:10189000DF91CF911F910F910895E8EDF0E08081E5 +:1018A0008F7E8083E7EDF0E080818160808384E03B +:1018B00082BF81E08093E3010C940A0CE8EDF0E034 +:1018C00080818E7F80831092E20008951092DA006A +:1018D0001092E10008951F920F920FB60F921124FB +:1018E0002F933F934F935F936F937F938F939F9328 +:1018F000AF93BF93EF93FF938091E10082FF0BC002 +:101900008091E20082FF07C08091E1008B7F80938D +:10191000E1000E94C70E8091DA0080FF1FC0809115 +:10192000D80080FF1BC08091DA008E7F8093DA00A0 +:101930008091D90080FF0DC080E189BD82E189BD21 +:1019400009B400FEFDCF81E08093E4010E94CF083E +:1019500005C019BC1092E4010E94DD088091E100ED +:1019600080FF19C08091E20080FF15C08091E200E5 +:101970008E7F8093E2008091E20080618093E2009C +:101980008091D80080628093D80019BC85E0809354 +:10199000E4010E94E1088091E10084FF30C0809161 +:1019A000E20084FF2CC080E189BD82E189BD09B4D9 +:1019B00000FEFDCF8091D8008F7D8093D80080916C +:1019C000E1008F7E8093E1008091E2008F7E809322 +:1019D000E2008091E20081608093E2008091E0016A +:1019E000882311F084E007C08091E30087FF02C0E4 +:1019F00083E001C081E08093E4010E94E3088091CC +:101A0000E10083FF29C08091E20083FF25C080911F +:101A1000E100877F8093E10082E08093E4011092EF +:101A2000E0018091E1008E7F8093E1008091E200EF +:101A30008E7F8093E2008091E20080618093E200DB +:101A400042E060E080E00E946A0B8091F0008860D4 +:101A50008093F0000E94E008FF91EF91BF91AF9159 +:101A60009F918F917F916F915F914F913F912F91B6 +:101A70000F900FBE0F901F9018951F920F920FB6E8 +:101A80000F9211242F933F934F935F936F937F9304 +:101A90008F939F93AF93BF93CF93EF93FF93C09197 +:101AA000E900CF708091EC001092E9008091F00085 +:101AB000877F8093F00078940E94790D1092E9005E +:101AC0008091F00088608093F000C093E900FF915E +:101AD000EF91CF91BF91AF919F918F917F916F9136 +:101AE0005F914F913F912F910F900FBE0F901F90DC +:101AF00018951F93CF93DF93CDB7DEB7AA970FB694 +:101B0000F894DEBF0FBECDBFE5EEF1E08091F100AD +:101B1000819321E0ED3EF207C9F70E94FF08809112 +:101B2000E80083FF1CC12091E5013091E601832F7D +:101B300090E08A30910508F012C1FC01EA5AFF4F8B +:101B40000C948423203881F0223809F008C1809158 +:101B5000E9018F708093E9008091EB0085FB882775 +:101B600080F91092E90006C08091E1019091E201B4 +:101B7000911182609091E800977F9093E8008093A4 +:101B8000F1001092F100C5C0822F8D7F09F0E7C0EF +:101B9000222319F0223061F0E2C08091E701813008 +:101BA00009F0DDC0333009F080E08093E20128C005 +:101BB0008091E701811124C02091E9012F7009F47F +:101BC000CEC02093E9008091EB0080FF19C0809186 +:101BD000EB00333011F4806211C080618093EB0020 +:101BE00081E090E0022E01C0880F0A94EAF780930A +:101BF000EA001092EA008091EB0088608093EB008D +:101C00001092E9008091E800877F86C02111A7C06B +:101C10001091E7011F778091E3008078812B8093FA +:101C2000E3008091E800877F8093E8000E949F0B8B +:101C30008091E80080FFFCCF8091E3008068809372 +:101C4000E300112311F083E001C082E08093E401FE +:101C500086C02058223008F082C08091E701909120 +:101C6000E8018C3D23E0920779F583E08A838AE2DC +:101C700089834FB7F894DE01139620E03EE051E2ED +:101C8000E32FF0E050935700E49120FF03C0E2956A +:101C9000EF703F5FEF708E2F90E0EA3010F0C79644 +:101CA00001C0C0968D939D932F5F243149F74FBF9C +:101CB0008091E800877F8093E8006AE270E0CE01BF +:101CC00001960E94A70A14C0AE014F5F5F4F60915A +:101CD000E9010E94EF09009709F441C02091E80052 +:101CE000277F2093E800BC0189819A810E94080B1C +:101CF0008091E8008B778093E80031C0203879F537 +:101D00008091E800877F8093E8008091E0018093D4 +:101D1000F1008091E8008E778093E8000E949F0B8D +:101D20001EC021111CC09091E7019230C0F4809137 +:101D3000E800877F8093E8009093E0010E949F0B6A +:101D40008091E001811104C08091E30087FF02C00F +:101D500084E001C081E08093E4010E94EB0880915F +:101D6000E80083FF0AC08091E800877F8093E80045 +:101D70008091EB0080628093EB00AA960FB6F894F6 +:101D8000DEBF0FBECDBFDF91CF911F9108950895A3 +:101D9000CF938091E4018823B1F08091E9008F70A6 +:101DA0009091EC0090FF02C090E801C090E0C92F34 +:101DB000C82B1092E9008091E80083FD0E94790D04 +:101DC000CF70C093E900CF910895909369018093FB +:101DD00068010895E0916801F0916901309721F060 +:101DE0000190F081E02D099480E00895E091680170 +:101DF000F0916901309721F00280F381E02D099480 +:101E00000895E0916801F0916901309721F0048014 +:101E1000F581E02D099408952091660130916701C4 +:101E20008217930771F09093670180936601E091A8 +:101E30006801F0916901309721F00680F781E02D6B +:101E400009940895209164013091650182179307E8 +:101E500071F09093650180936401E0916801F091C5 +:101E60006901309721F00084F185E02D09940895EF +:101E700008950C94380F0E94751B0E940B040C945B +:101E80003B1CCF92DF92EF92FF920F931F93CF9361 +:101E9000DF93CDB7DEB72B970FB6F894DEBF0FBE3A +:101EA000CDBF0E9423043BE6E32E31E0F32E00E099 +:101EB00010E0C02E802F0E941005F701D1907F0105 +:101EC000D826B1F40F5F1F4F0E30110591F78FEF39 +:101ED00089838A831B820E947E1B8160782F9D8369 +:101EE0008C8349815A816B818D810E94E40F41C0AE +:101EF0009091CD0191FF04C08B870E9416058B85C0 +:101F000020E030E04D2D50E0922FBA01022E02C0A9 +:101F1000759567950A94E2F760FF25C02E83CF82FE +:101F2000EE24E394F12C02C0EE0CFF1C9A95E2F72C +:101F300090E08E219F2121E0892B09F420E0288761 +:101F40000E947E1B8160782F9A8789874E815F81EE +:101F500068858A850E94E40FF801E559FE4F80816B +:101F60008E25808306C02F5F3F4F2630310561F6F6 +:101F7000A9CF0E941F1F10916A010E94EA0E181734 +:101F8000A1F00E94EA0E80936A012B960FB6F89496 +:101F9000DEBF0FBECDBFDF91CF911F910F91FF909C +:101FA000EF90DF90CF900C94EF072B960FB6F8943C +:101FB000DEBF0FBECDBFDF91CF911F910F91FF907C +:101FC000EF90DF90CF900895CF93DF93CDB7DEB73A +:101FD0002B970FB6F894DEBF0FBECDBF4F83588747 +:101FE00069877A878B87DE01119686E0FD01119261 +:101FF0008A95E9F785E0FE01379601900D928A9562 +:10200000E1F749815A816B817C818D819E810E949B +:1020100039172B960FB6F894DEBF0FBECDBFDF91F8 +:10202000CF9108950895CF93C82F882309F4C1C094 +:10203000823859F40E94EA0E81FDBBC089E30E94F8 +:10204000E3190E94AD1A89E30CC0833879F40E9429 +:10205000EA0E80FDAEC083E50E94E3190E94AD1A2E +:1020600083E50E94231ACF910C94AD1A843859F459 +:102070000E94EA0E82FD9DC087E40E94E3190E943F +:10208000AD1A87E4EECF8CEF8C0F813A48F48C2F99 +:102090000E94522181118DC08C2F0E94E319E3CF41 +:1020A00080E28C0F883048F4C77081E001C0880F4F +:1020B000CA95EAF70E94641AD6CF8BE58C0F83305D +:1020C00078F4C53A29F0C63A31F482E890E005C0C8 +:1020D00081E890E002C083E890E0CF910C940C0F6F +:1020E00088E58C0F833108F064C0C83A39F1C93AE9 +:1020F00041F1CA3A49F1CB3A51F1CC3A59F1CD3AD2 +:1021000061F1C03B69F1CE3A71F1CF3A79F1C13B4F +:1021100081F1C23B89F1C33B91F1C43B99F1C53BCD +:10212000A1F1C63BA9F1C73BB1F1C83BB9F1C93B2D +:10213000C1F1CA3BC9F58AE292E038C082EE90E074 +:1021400035C089EE90E032C08AEE90E02FC085EB7A +:1021500090E02CC086EB90E029C087EB90E026C091 +:102160008CEC90E023C08DEC90E020C083E891E0FF +:102170001DC08AE891E01AC082E991E017C084E9A5 +:1021800091E014C081E292E011C083E292E00EC0BF +:1021900084E292E00BC085E292E008C086E292E021 +:1021A00005C087E292E002C080E090E0CF910C94FD +:1021B000220FCF910895882309F44BC0823859F437 +:1021C0000E94EA0E81FF45C089E30E94E3190E9444 +:1021D000AD1A89E30CC0833871F40E94EA0E80FFC7 +:1021E00038C083E50E94E3190E94AD1A83E50E947E +:1021F000231A0C94AD1A843859F40E94EA0E82FF17 +:1022000028C087E40E94E3190E94AD1A87E4EFCF4B +:102210009CEF980F913A58F390E2980F983050F451 +:10222000877091E001C0990F8A95EAF7892F0E9483 +:102230006A1ADFCF9BE5980F933020F480E090E09E +:102240000C940C0F885A833120F480E090E00C94B9 +:10225000220F0895882321F00E94641A0C94AD1A6D +:102260000895882321F00E946A1A0C94AD1A0895EB +:10227000CF92DF92EF92FF920F931F93CF93DF9352 +:10228000CDB7DEB728970FB6F894DEBF0FBECDBF2F +:102290008C0185E0F801DE01119601900D928A957E +:1022A000E1F7F801D080E180F280558152955F70AE +:1022B00023813481232B39F0FFEFEF1206C081E038 +:1022C000DF1203C003C081E001C080E080FDE2C2F4 +:1022D000C8015F830E941210D982EA8269817A81E3 +:1022E0008F2D0E94DF199E8388870E9493190E9478 +:1022F00066184E815F816885FF2029F00E94811A4F +:1023000068855F814E81E42FE295EF70F0E0E05A3E +:10231000FF4F0C948423842F807F142F1F708823F9 +:1023200011F01295107FFF20B1F0112309F467C25C +:1023300080E2860F883028F4812F68870E94641A13 +:1023400004C0812F68870E94741A688568870E947C +:10235000AD1A688554C2862F68870E94DB10688595 +:10236000112309F497C2605E812F683018F40E942F +:102370006A1A02C00E947A1A28960FB6F894DEBF35 +:102380000FBECDBFDF91CF911F910F91FF90EF90C6 +:10239000DF90CF900C94AD1A242F207F842F8F7064 +:1023A000203211F08295807F662319F0613019F197 +:1023B0002BC0FF20B1F0552309F493C1513009F02F +:1023C00090C128960FB6F894DEBF0FBECDBFDF9147 +:1023D000CF911F910F91FF90EF90DF90CF900C94D1 +:1023E000941A552319F0513009F454C28E830E9477 +:1023F000971A8E8189C1FF2021F0523008F04AC21D +:1024000070C1511147C280C1FF2021F0552309F44A +:1024100068C1F5C1552309F477C105C2242F26955B +:102420002695237030E02115310521F0213031054A +:10243000C9F030C2FF2021F0862F942F937002C084 +:1024400080E090E028960FB6F894DEBF0FBECDBFB7 +:10245000DF91CF911F910F91FF90EF90DF90CF9080 +:102460000C940C0FFF2021F0862F942F937002C044 +:1024700080E090E028960FB6F894DEBF0FBECDBF87 +:10248000DF91CF911F910F91FF90EF90DF90CF9050 +:102490000C94220F862FFF2019F00E94271E02C0E5 +:1024A0000E948F1E28960FB6F894DEBF0FBECDBFD8 +:1024B000DF91CF911F910F91FF90EF90DF90CF9020 +:1024C0000C94141F842F837009F076C0F110E2C1C0 +:1024D000262F229526952770220F220F862F8F7088 +:1024E000C82ED12CE12CF12C022E04C0CC0CDD1C0A +:1024F000EE1CFF1C0A94D2F764FF10C06FE070E07E +:1025000080E090E004C0660F771F881F991F2A950E +:10251000D2F7609570958095909503C060E070E06B +:10252000CB01242F269526952370422F50E0423070 +:102530005105D1F04330510559F16C297D298E297F +:102540009F294130510541F128960FB6F894DEBF1E +:102550000FBECDBFDF91CF911F910F91FF90EF90F4 +:10256000DF90CF900C948B186C297D298E299F29A0 +:1025700028960FB6F894DEBF0FBECDBFDF91CF9186 +:102580001F910F91FF90EF90DF90CF900C94A518C2 +:102590000E948B18C701B60128960FB6F894DEBFCB +:1025A0000FBECDBFDF91CF911F910F91FF90EF90A4 +:1025B000DF90CF900C947118FF2019F0842F817058 +:1025C00001C08695882309F465C1262F229526959A +:1025D0002770220F220F862F8F70C82ED12CE12C4E +:1025E000F12C022E04C0CC0CDD1CEE1CFF1C0A9446 +:1025F000D2F764FF10C06FE070E080E090E004C0AC +:10260000660F771F881F991F2A95D2F760957095DE +:102610008095909503C060E070E0CB01242F269553 +:1026200026952370422F50E042305105D1F04330BF +:10263000510559F16C297D298E299F294130510579 +:1026400041F128960FB6F894DEBF0FBECDBFDF91E3 +:10265000CF911F910F91FF90EF90DF90CF900C944E +:102660005F196C297D298E299F2928960FB6F89429 +:10267000DEBF0FBECDBFDF91CF911F910F91FF90B5 +:10268000EF90DF90CF900C9479190E945F19C701E9 +:10269000B60128960FB6F894DEBF0FBECDBFDF910E +:1026A000CF911F910F91FF90EF90DF90CF900C94FE +:1026B0004519603FC9F118F4603E50F49BC0623F79 +:1026C00009F460C008F44AC0633F09F46FC092C0C7 +:1026D000162F1F70842F8F71FF2099F00E94DE1833 +:1026E000812F28960FB6F894DEBF0FBECDBFDF91C5 +:1026F000CF911F910F91FF90EF90DF90CF900C94AE +:102700002A110E94FF18812F28960FB6F894DEBF79 +:102710000FBECDBFDF91CF911F910F91FF90EF9032 +:10272000DF90CF900C943111FF20A1F05111B2C075 +:10273000842F8F7128960FB6F894DEBF0FBECDBFE1 +:10274000DF91CF911F910F91FF90EF90DF90CF908D +:102750000C942419523008F09DC0EACFFF20A1F05C +:10276000842F8F7128960FB6F894DEBF0FBECDBFB1 +:10277000DF91CF911F910F91FF90EF90DF90CF905D +:102780000C94DE18FF2061F3842F8F7128960FB60A +:10279000F894DEBF0FBECDBFDF91CF911F910F9197 +:1027A000FF90EF90DF90CF900C94FF18FF2091F0F6 +:1027B000842F8F7128960FB6F894DEBF0FBECDBF61 +:1027C000DF91CF911F910F91FF90EF90DF90CF900D +:1027D0000C94C91828960FB6F894DEBF0FBECDBF73 +:1027E000DF91CF911F910F91FF90EF90DF90CF90ED +:1027F0000C94BF18FF20A1F0552309F4B1CF862F08 +:1028000028960FB6F894DEBF0FBECDBFDF91CF91F3 +:102810001F910F91FF90EF90DF90CF900C941310C9 +:10282000552309F4B1CF862F28960FB6F894DEBF52 +:102830000FBECDBFDF91CF911F910F91FF90EF9011 +:10284000DF90CF900C94DB104F70C8010E94AB0258 +:1028500028960FB6F894DEBF0FBECDBFDF91CF91A3 +:102860001F910F91FF90EF90DF90CF900C94E6179F +:102870004F70C80128960FB6F894DEBF0FBECDBFCB +:10288000DF91CF911F910F91FF90EF90DF90CF904C +:102890000C94170528960FB6F894DEBF0FBECDBF77 +:1028A000DF91CF911F910F91FF90EF90DF90CF902C +:1028B00008950E94811A0E94911A0E94561A0E943D +:1028C000AD1A0E94C01F0E94141F80E090E00E9479 +:1028D0000C0F80E090E00C94220F0E94711A0C946F +:1028E00059140E94D419292F22952F7030E02C30D2 +:1028F00031054CF42A3031056CF422503109223074 +:10290000310590F407C02C30310551F02F303105DE +:1029100039F00AC0803E10F0803F31F481E0089524 +:1029200093FB882780F9089580E00895CF93DF9383 +:1029300000D000D01F92CDB7DEB70F900F900F9050 +:102940000F900F90DF91CF910895CF93DF9300D038 +:1029500000D000D0CDB7DEB726960FB6F894DEBF14 +:102960000FBECDBFDF91CF9108951F93CF93DF931B +:10297000C091790116E080917A01C81799F0D0E0F2 +:102980001C9FF0011D9FF00D1124E558FE4F408162 +:10299000518162817381848195810E94A514219661 +:1029A000C770E9CFDF91CF911F9108954091AB019E +:1029B0005091AC016091AD017091AE018091AF0179 +:1029C0009091B0010C94A514CF938091B0018295A1 +:1029D0008F7009F05FC08091AD01882309F45AC05F +:1029E00020917901A0917A016091AB017091AC01C5 +:1029F0008091AE019091AF0131E06F3F09F030E07E +:102A0000B32FC6E02A1709F445C0009721F07F3F95 +:102A100021F44B2F03C041E001C040E030E040FD15 +:102A200035C0C29FF001C39FF00D1124E558FE4F41 +:102A3000418174132BC04081641328C0428141112D +:102A400025C0438154814817590710F4415051095A +:102A5000481B590B483C5105C8F48091B0018F7058 +:102A600080618093B00186E0829FF001839FF00D2A +:102A70001124E058FE4F80818F70806180838BEA43 +:102A800091E00E943811CF910C94B5142F5F3F4F05 +:102A90002770B8CFCF910895CF92DF92EF92FF9237 +:102AA0000F931F93CF93DF93CDB7DEB762970FB627 +:102AB000F894DEBF0FBECDBF8C0185E0F801DE01CA +:102AC0001D9601900D928A95E1F7D8014C911196CF +:102AD0005C91119712966C9112971396ED90FC9061 +:102AE00014977091AB01E091AC012091AE0130914F +:102AF000AF012115310531F0EF3F31F481E07F3F27 +:102B000019F403C081E001C080E0B82FB170CB2E72 +:102B100080FD6CC1D090AD01DD2009F4F5C0F091CD +:102B2000B001E216F30638F0C701821B930B883C14 +:102B3000910548F09BC0209530952E0D3F1D283CF7 +:102B4000310508F093C08F2F807F09F052C0E51344 +:102B500014C0741312C0D62E61110FC0FF70F06143 +:102B6000F093B0010E94D6148BEA91E00E943811D4 +:102B70008091B001F80185836CC1EF2831F05F3F8F +:102B800031F481E04F3F19F403C081E001C080E0DF +:102B900080FD03C081E0862701C080E0F82FF1703E +:102BA000FF2E80FF1CC08091790120917A0136E0D0 +:102BB000821709F428C190E0389FF001399FF00D89 +:102BC0001124E558FE4F7181571306C070814713D9 +:102BD00003C07281671303C001968770E9CFD62EB8 +:102BE000662309F436C18091B00181608093B00101 +:102BF00053C0E51308C0741306C0611104C0D801A6 +:102C00001596FC93AEC04D875E878D859E856A8B39 +:102C10000E9471146A89882329F1D62E662311F146 +:102C20002091B001822F82958F7090E002970CF472 +:102C300060C08091AB019091AC0198878F83198619 +:102C4000FB86EA862C87CE01079651C0E51731F145 +:102C50004D875E878D859E856A8B0E9471146A8977 +:102C600081112EC0C8010E943811A4C08F2F807F0F +:102C700069F77E2DF98AE88A89890E9496148BEA81 +:102C800091E00E943811EBEAF1E086E0DF011D924D +:102C90008A95E9F70E94D614D12CDBC07413D8CFE3 +:102CA0006111D6CFD8011596FC93C8010E94381146 +:102CB000EBEAF1E086E0DF011D928A95E9F7C9C0F1 +:102CC000D62E662379F22091B001822F82958F70E3 +:102CD00090E0029774F08091AB019091AC019A83DF +:102CE00089831B82FD82EC822E83CE0101960E9495 +:102CF000381186E0F801ABEAB1E001900D928A95B7 +:102D0000E1F70E94E4146FC0E216F30628F0C70151 +:102D1000821B930B9C0104C0209530952E0D3F1D06 +:102D2000283C310508F052C0D62E662309F49ACF0C +:102D3000E5132CC074132AC08091B00180FD1DC022 +:102D4000982F92959F70C9F0D80115968C9315977E +:102D50009F3039F09F5F9295907F8F70892B1596E9 +:102D60008C93C8010E94381186E0F801ABEAB1E00B +:102D700001900D928A95E1F736C086E0F801ABEA42 +:102D8000B1E001900D928A95E1F763C04D875E87AF +:102D90008D859E850E947114882379F086E0F80164 +:102DA000ABEAB1E001900D928A95E1F70E94E4143C +:102DB0000E94D614DD24D3944CC08091B001816070 +:102DC0008093B001C8010E94381143C07E2DF98A5A +:102DD000E88A89890E949614EBEAF1E086E0DF0137 +:102DE0001D928A95E9F70E94D61433C0662309F430 +:102DF00039CF4D875E878D859E850E94711488230B +:102E000009F430CFCBCF4D875E878D859E850E949C +:102E1000D419292F22952F7030E0223031052CF45F +:102E20009F7041F0811106C00CC0243031052CF494 +:102E30009F7049F4805E883020F0C8010E943811EC +:102E4000CF2CDC2C06C0D80115969C91907F91F771 +:102E5000F8CF8D2D62960FB6F894DEBF0FBECDBFB2 +:102E6000DF91CF911F910F91FF90EF90DF90CF9066 +:102E700008951F93CF93DF93CDB7DEB72C970FB68E +:102E8000F894DEBF0FBECDBF4F83588769877A871E +:102E90008B879C87CE0107960E944C158823C1F032 +:102EA0002F8138858A859B85892B31F03F3F11F032 +:102EB00080E003C02F3FE1F781E0811147C04F81DF +:102EC000588569857A858B859C850E94A5143EC0AE +:102ED00086E0FE013796DE01119601900D928A95EB +:102EE000E1F7FF81E8854A855B854115510531F0A1 +:102EF000EF3F31F481E0FF3F19F403C081E001C0EE +:102F000080E080FD23C020917A0130E0C901019664 +:102F1000877099276091790170E086179707F1F122 +:102F2000F983EA835D834C8396E0929FD001939F5F +:102F3000B00D1124A558BE4FFE01319601900D929F +:102F40009A95E1F780937A010E94B51416E080917A +:102F5000790190917A01891779F1189FC0011124A4 +:102F600085589E4F0E944C15882331F1E0917901DC +:102F70001E9FF0011124E558FE4F4081518162816E +:102F80007381848195810E94A5148091790190E0DC +:102F900001968770992780937901D9CF0E946D148B +:102FA00010927A0110927901EBEAF1E086E0DF01FC +:102FB0001D928A95E9F7CACF2C960FB6F894DEBF1A +:102FC0000FBECDBFDF91CF911F910895EF92FF9279 +:102FD0000F931F93CF93DF93FC01009709F46FC009 +:102FE000F12CEE24E394EF0121968491843740F490 +:102FF000843008F055C0813081F0823021F15FC00B +:10300000853709F447C0C0F19CE7980F903708F066 +:1030100056C08F770E94DB1045C08F010E5F1F4F97 +:10302000FE01849190E2980F983050F48770FE2D45 +:1030300001C0FF0F8A95EAF78F2F0E94841A15C0EE +:103040000E94131014C08F010E5F1F4FFE01849168 +:1030500090E2980F983068F48770FE2D01C0FF0F42 +:103060008A95EAF78F2F0E948A1A0E94AD1AE8010A +:1030700019C00E94DB10FBCFCF010296FE01C49164 +:10308000CC2361F0EFE9FFE03197F1F700C00000D9 +:10309000C150F6CFCF010296FE01F490EC0102C0C0 +:1030A0000E9413108F2D882341F0EFE9FFE0319744 +:1030B000F1F700C000008150F6CFFE0194CFDF9100 +:1030C000CF911F910F91FF90EF9008950895609315 +:1030D000B5017093B6018093B7019093B8010C9439 +:1030E00059140F931F930091B5011091B6012091CF +:1030F000B7013091B801062B172B282B392B0093E1 +:10310000B5011093B6012093B7013093B8011F9118 +:103110000F910C9459140F931F930091B5011091C6 +:10312000B6012091B7013091B80106231723282357 +:1031300039230093B5011093B6012093B701309362 +:10314000B8011F910F910C9459140F931F93009184 +:10315000B5011091B6012091B7013091B801062751 +:103160001727282739270093B5011093B60120931C +:10317000B7013093B8011F910F910C94591410921C +:10318000B1011092B2011092B3011092B4010C94EB +:10319000591441E050E060E070E004C0440F551F56 +:1031A000661F771F8A95D2F74093B1015093B20101 +:1031B0006093B3017093B4010C94591441E050E052 +:1031C00060E070E004C0440F551F661F771F8A95AA +:1031D000D2F78091B1019091B201A091B301B09169 +:1031E000B401842B952BA62BB72B8093B101909320 +:1031F000B201A093B301B093B4010C94591441E00F +:1032000050E060E070E004C0440F551F661F771F58 +:103210008A95D2F740955095609570958091B1014F +:103220009091B201A091B301B091B4018423952390 +:10323000A623B7238093B1019093B201A093B30169 +:10324000B093B4010C94591441E050E060E070E098 +:1032500004C0440F551F661F771F8A95D2F78091CF +:10326000B1019091B201A091B301B091B401842752 +:103270009527A627B7278093B1019093B201A09319 +:10328000B301B093B4010C9459140F931F930091A0 +:10329000B1011091B2012091B3013091B401062B1C +:1032A000172B282B392B0093B1011093B2012093D7 +:1032B000B3013093B4011F910F910C9459140F93E3 +:1032C0001F930091B1011091B2012091B30130918F +:1032D000B40106231723282339230093B101109347 +:1032E000B2012093B3013093B4011F910F910C945C +:1032F00059140F931F930091B1011091B2012091C5 +:10330000B3013091B40106271727282739270093E6 +:10331000B1011093B2012093B3013093B4011F9116 +:103320000F910C9459140895CF92DF92EF92FF926F +:103330000F931F93CF93DF93EC01C090B501D09012 +:10334000B601E090B701F090B8018091B101909181 +:10335000B201A091B301B091B401C82AD92AEA2AD6 +:10336000FB2A0FE110E0B701A601002E04C07695FC +:103370006795579547950A94D2F740FD05C00150CF +:10338000110988F780E007C0BE01802F0E94540712 +:103390000197A9F3802FDF91CF911F910F91FF909B +:1033A000EF90DF90CF900895CF93DF93EC010E94D0 +:1033B0009419BE010E945407DF91CF910895CB016B +:1033C0000E94D419089590910C019923D9F09091FD +:1033D0000D019923B9F0982F9695969596959F3063 +:1033E00088F5E0910E01F0910F01E90FF11D877052 +:1033F00021E030E001C0220F8A95EAF78181822B1B +:103400008183089540910E0150910F0120E030E03A +:103410009FEFFA01E20FF31F6281681799F09F3F57 +:1034200019F4611101C0922F2F5F3F4F2E303105EB +:1034300081F79F3F39F0FA01E90FF11D97FDFA95E9 +:1034400082830895089590910C019923E1F0909161 +:103450000D019923C1F0982F9695969596959F30DA +:1034600020F5E0910E01F0910F01E90FF11D877039 +:1034700021E030E001C0220F8A95EAF72095818192 +:1034800028232183089540910E0150910F0120E0DF +:1034900030E0FA01E20FF31F9281981301C012820B +:1034A0002F5F3F4F2E303105A1F7089581E090E066 +:1034B000E0910E01F0910F01E80FF91F10820196C3 +:1034C00080319105A9F708959091CC01982B9093A4 +:1034D000CC01089580959091CC0198239093CC01D4 +:1034E00008951092CC0108959091CB01982B909360 +:1034F000CB01089580959091CB0198239093CB01B7 +:1035000008951092CB0108959091CA01982B909341 +:10351000CA01089580959091CA0198239093CA0199 +:1035200008951092CA0108958093B90108951092E8 +:10353000B901089540910E0150910F0120E030E053 +:1035400080E0FA01E20FF31F918191118F5F2F5FED +:103550003F4F2F303105A9F70895E0910E01F0910A +:103560000F018091CC018083E0910E01F0910F0159 +:1035700080819091CB01892B8083E0910E01F091A5 +:103580000F0180819091CA01892B80839091B901AC +:10359000992361F0E0910E01F0910F018081892B58 +:1035A00080830E949A1A81111092B90180910E01B4 +:1035B00090910F010C94F60ECF92DF92EF92FF9252 +:1035C0000F931F936C01EE24FF24C114D104E10476 +:1035D000F10421F46B017C0180E001C080E133271C +:1035E0002F2D1E2D0D2D011511052105310519F069 +:1035F000885F6801790197018601A4E036952795D7 +:1036000017950795AA95D1F70115110521053105E3 +:1036100019F08C5F6801790197018601F2E0369517 +:10362000279517950795FA95D1F7011511052105ED +:10363000310519F08E5F68017901B701A601769511 +:10364000679557954795452B462B472B09F08F5F7C +:103650001F910F91FF90EF90DF90CF900895809190 +:10366000E401843021F11092CE0120E488E190E061 +:103670000FB6F894A895809360000FBE2093600069 +:1036800080E00E94EF0783B7817F846083BF83B7A8 +:10369000816083BF7894889583B78E7F83BF88E1EC +:1036A0000FB6F89480936000109260000FBE0895EA +:1036B00008950895CF930E94581B0E9423040E94EE +:1036C000591BC0E08C2F0E941005811105C0CF5FEF +:1036D000CE30C1F780E001C081E0CF9108950E9413 +:1036E0006D140E94EA0E0C94EF0782E084BD93E013 +:1036F00095BD9AEF97BD80936E0008952FB7F8940B +:103700008091CF019091D001A091D101B091D201CF +:103710002FBF0895CF92DF92EF92FF920F931F93E6 +:103720002FB7F8944091CF015091D0016091D10111 +:103730007091D2012FBF6A017B01EE24FF248C011E +:1037400020E030E0C016D106E206F30610F4415046 +:103750005109481B590BCA011F910F91FF90EF901F +:10376000DF90CF9008951F920F920FB60F92112401 +:103770008F939F93AF93BF938091CF019091D0018E +:10378000A091D101B091D2010196A11DB11D8093EC +:10379000CF019093D001A093D101B093D201BF91FA +:1037A000AF919F918F910F900FBE0F901F90189522 +:1037B0000E94F00BF8942FEF87EA91E621508040A9 +:1037C0009040E1F700C0000087E090EBDC018093BF +:1037D000EE019093EF01A093F001B093F1012CE082 +:1037E00088E190E00FB6F894A895809360000FBE32 +:1037F00020936000FFCFEF92FF920F931F93CF9320 +:10380000DF93E82EF12C8F2D0E941005C0E0D0E050 +:10381000082F10E098010C2E02C0359527950A94C8 +:10382000E2F720FD05C02196C630D10599F709C001 +:103830006C2F7F2D80E00E941805E812F4CF81E004 +:1038400005C0F3948EE0F812DECF80E0DF91CF91D7 +:103850001F910F91FF90EF900895CF93C82F8CE2A6 +:103860000E94FB1B882321F08C2FCF910C94FB1B13 +:1038700080E0CF910895CF930E94801D811102C0F6 +:103880000E94661DC5E6C15049F00E9423048FE3E3 +:103890009CE90197F1F700C00000F5CF89E20E9492 +:1038A0002D1C811111C18AE20E942D1C81110E94E0 +:1038B000661D85E00E942D1C81110E94D81B0E946C +:1038C0008B1D8093CD0187E00E942D1C882399F1E8 +:1038D0008BE10E942D1C882351F09091CD0191FB2A +:1038E000882780F921E0822780FB91F922C08EE0B1 +:1038F0000E942D1C882351F09091CD0192FB8827C6 +:1039000080F921E0822780FB92F913C080E10E94B8 +:103910002D1C9091CD01882341F093FB882780F9DD +:1039200021E0822780FB93F904C0892F809580FBDA +:1039300090F99093CD018091CD010E948F1D0E943E +:103940009D1D8093ED0180EE0E942D1C882341F087 +:103950008091ED01982F909590FB80F98093ED0177 +:1039600089E30E942D1C882359F09091ED0191FB71 +:10397000882780F921E0822780FB91F99093ED015F +:1039800082EE0E942D1C882359F09091ED0192FB4C +:10399000882780F921E0822780FB92F99093ED013E +:1039A00086EE0E942D1C882359F09091ED0193FB27 +:1039B000882780F921E0822780FB93F99093ED011D +:1039C00083EE0E942D1C882359F09091ED0194FB09 +:1039D000882780F921E0822780FB94F99093ED01FC +:1039E00085E30E942D1C882359F09091ED0195FBF1 +:1039F000882780F921E0822780FB95F99093ED01DB +:103A000081E30E942D1C882359F09091ED0196FBD3 +:103A1000882780F921E0822780FB96F99093ED01B9 +:103A200081E10E942D1C882359F09091ED0197FBB4 +:103A3000882780F921E0822780FB97F99093ED0198 +:103A40008091ED010E94A11D8091ED0187FB8827E7 +:103A500080F980930D0187E20E942D1CC82F8EE112 +:103A60000E942D1C8111C2608FE10E942D1C8111CA +:103A7000C46080E20E942D1C8111C86081E20E9416 +:103A80002D1C8111C06182E20E942D1C8111C06237 +:103A900083E20E942D1C8111C06484E20E942D1CCF +:103AA000882311F0C06802C0CC2329F08C2F0E941B +:103AB000981D6C2F03C00E94941D682F70E080E059 +:103AC00090E0CF910C946718CF9108956DEE7EEF42 +:103AD00080E090E00E94BE2360E082E090E00E94DF +:103AE000AC2360E083E090E00E94AC2360E084E0DF +:103AF00090E00E94AC2360E085E090E00C94AC2361 +:103B000080E090E00E94A62321E08D3E9E4F09F0C8 +:103B100020E0822F089582E090E00C949E23682F8D +:103B200082E090E00C94AC2383E090E00C949E2320 +:103B3000682F83E090E00C94AC2384E090E00C9438 +:103B40009E23682F84E090E00C94AC238091D501F3 +:103B500080FF0BC06091130185E0689FB0011124C4 +:103B600075956795759567952AC081FF09C0609125 +:103B7000130185E0689FB0011124759567951FC0FA +:103B800082FF07C06091130185E0689FB001112496 +:103B900016C04091D6014423C9F060911201461726 +:103BA00088F72091130185E0289F90011124429FFE +:103BB000C001439F900D112470E00E947023603873 +:103BC000710540F46115710539F002C065E070E0DF +:103BD000862F08958FE7089581E008958091D5019B +:103BE00080FF08C06091110170E07595679575952B +:103BF000679521C081FF06C06091110170E0759545 +:103C0000679519C082FF04C06091110170E010C077 +:103C10008091D6018823C1F0609110018617A0F72A +:103C200090911101989FC001112470E00E947023AF +:103C30006038710528F46115710521F0862F08950B +:103C40008FE7089581E0089561E070E0F4CF803F50 +:103C500021F40E94A61D819504C0813F29F40E9491 +:103C6000A61D8093D9010895823F21F40E94A61DCC +:103C7000819504C0833F29F40E94A61D8093D8013A +:103C80000895893F19F40E94EE1D05C08A3F31F462 +:103C90000E94EE1D81958093DA0108958B3F21F4F7 +:103CA0000E94EE1D819504C08C3F29F40E94EE1DF8 +:103CB0008093DB010895843F21F48091D7018160D6 +:103CC00017C0853F21F48091D701826011C0863FE3 +:103CD00021F48091D70184600BC0873F21F480914B +:103CE000D701886005C0883F31F48091D701806199 +:103CF0008093D70108958D3F21F48091D501816093 +:103D00000BC08E3F21F48091D501826005C08F3FAA +:103D100029F48091D50184608093D5010895803F76 +:103D200039F48091D90187FF6CC01092D90169C024 +:103D3000813F29F48091D9011816BCF362C090919B +:103D4000D801823F29F497FF5CC01092D80159C076 +:103D5000833F19F41916CCF354C0893F41F4809184 +:103D6000DA0118160CF04DC01092DA014AC08A3FF1 +:103D700029F48091DA0187FF44C0F6CF8B3F39F4F4 +:103D80008091DB0187FF3DC01092DB013AC08C3F80 +:103D900029F48091DB011816BCF333C0843F21F471 +:103DA0008091D7018E7F17C0853F21F48091D70184 +:103DB0008D7F11C0863F21F48091D7018B7F0BC08E +:103DC000873F21F48091D701877F05C0883F31F478 +:103DD0008091D7018F7E8093D70113C08D3F21F44E +:103DE0008091D5018E7F0BC08E3F21F48091D5014B +:103DF0008D7F05C08F3F29F48091D5018B7F809303 +:103E0000D5018091D80181110EC08091D901811115 +:103E10000AC08091DA01811106C08091DB01811115 +:103E200002C01092D601089587ED91E00E94010F23 +:103E30000E947E1B9093D4018093D30108951F9319 +:103E4000CF93DF938091D3019091D4010E948A1B7C +:103E50004091D601442321F02091140130E006C0A6 +:103E6000209115015AE0259F900111248217930794 +:103E700008F482C08091D8011091D901D091DA0163 +:103E8000C091DB01811107C0111105C0D11103C020 +:103E9000CC2309F471C04F3F19F04F5F4093D60116 +:103EA000181624F40E94A61D8093D8018091D80191 +:103EB00087FF05C00E94A61D81958093D801111629 +:103EC00024F40E94A61D8093D9018091D90187FF17 +:103ED00005C00E94A61D81958093D9016091D801EB +:103EE000662339F11091D901112319F1772767FD64 +:103EF0007095872F972F0E94812223E333E343E3BA +:103F00005FE30E94E5220E944E226093D801612F58 +:103F1000772767FD7095872F972F0E94812223E3D3 +:103F200033E343E35FE30E94E5220E944E22609365 +:103F3000D9011D1624F40E94EE1D8093DA018091B0 +:103F4000DA0187FF05C00E94EE1D81958093DA019A +:103F50001C1624F40E94EE1D8093DB018091DB018E +:103F600087FF05C00E94EE1D81958093DB01DF91E4 +:103F7000CF911F910C94141FDF91CF911F91089541 +:103F8000E7EDF1E085E0DF011D928A95E9F71092F7 +:103F9000D6011092D5010895833081F128F4813043 +:103FA00059F08230D1F00895853009F449C0B8F154 +:103FB000863009F456C0089520911501862F90E0AF +:103FC000820F911D8F3F910520F4620F60931501C0 +:103FD00008958FEF80931501089520911401862F85 +:103FE00090E0820F911D8F3F910520F4620F609346 +:103FF000140108958FEF8093140108952091130107 +:10400000862F90E0820F911D8F3F910520F4620F63 +:104010006093130108958FEF809313010895209109 +:104020001201862F90E0820F911D8F3F910520F4A1 +:10403000620F6093120108958FEF8093120108952B +:1040400020911101862F90E0820F911D8F3F9105E5 +:1040500020F4620F6093110108958FEF8093110196 +:10406000089520911001862F90E0820F911D8F3FBF +:10407000910520F4620F6093100108958FEF8093F3 +:1040800010010895833011F128F4813049F0823015 +:1040900091F00895853081F120F18630C1F10895C5 +:1040A00080911501681720F4861B809315010895EF +:1040B00010921501089580911401681720F4861B51 +:1040C00080931401089510921401089580911301B2 +:1040D000681720F4861B8093130108951092130132 +:1040E000089580911201681720F4861B80931201B5 +:1040F000089510921201089580911101681720F41B +:10410000861B8093110108951092110108958091EA +:104110001001681720F4861B8093100108951092F7 +:10412000100108958D3109F442C020F58E3009F454 +:1041300077C070F4873009F459C018F48630F1F173 +:1041400034C0883009F4A8C08B3009F4A5C02DC054 +:10415000863109F4A1C038F4803109F472C081318C +:1041600009F479C022C0893109F496C08B3109F471 +:104170004DC01BC0853309F487C048F4873209F469 +:1041800083C008F473C0893209F47EC00EC0833442 +:1041900038F48A3308F068C0883309F47DC005C05C +:1041A000833409F471C0883499F080E008950E9446 +:1041B00008220E94EA0E0E94EF076EC08091CD0196 +:1041C000817F8E7F8093CD0181E08093DD01089512 +:1041D0000E946D142FEF83ED90E3215080409040BA +:1041E000E1F700C000000E94D81B56C09091CD019D +:1041F000892F8095817080FB90F919F09660986006 +:104200001DC0997F977F9093CD0146C09091CD01BD +:1042100091FB882780F921E0822780FB91F909C072 +:104220009091CD0192FB882780F921E0822780FBC5 +:1042300092F99093CD01882379F191609093CD010B +:1042400008959091CD0193FB882780F921E0822782 +:1042500080FB93F9EECF0E946D1480910D0191E0E7 +:10426000892780930D0118C027EC01C023EE280F89 +:1042700061E070E080E090E004C0660F771F881F67 +:10428000991F2A95D2F704C061E070E080E090E0C9 +:104290000E9467180E946D1481E0089580E00895DF +:1042A00080E00895CF93C82F8091DD01813079F0AF +:1042B00018F08230D1F184C0A0910E01B0910F01AD +:1042C0008C91813169F0823209F07CC009C0A091E3 +:1042D0000E01B0910F018C91813111F0823249F4BD +:1042E0008C2F0E944E2181111DC08C2F0E94922084 +:1042F0001AC08C2F0E945021811114C0C43179F052 +:1043000048F4CB3079F0C03109F060C082E080938E +:10431000DD0108C0C93219F0C83321F057C010922E +:10432000DD0154C081E0817053C0C93289F118F5B4 +:10433000C43171F1A8F4C73009F046C08AE0809317 +:10434000150194E19093140193E0909313018093ED +:10435000120188E08093110188E28093100134C03B +:10436000CE51C63088F5EC2FF0E0E65DFE4F80813F +:104370008093DC0129C0CE34E9F020F4CB3421F560 +:104380006AE013C0C13579F0C235F1F461E00DC0C7 +:104390008091DC01882319F01092DC0115C081E0C6 +:1043A0008093DD0115C061E006C08091DC010E94B0 +:1043B000CC1F0AC06AE08091DC010E94422004C048 +:1043C0001092DD0180E004C081E002C080E0ABCF4C +:1043D000CF910895E1E8F0E080818860808380815A +:1043E000816080838FB7F89493E09093890090ED7B +:1043F000909388008FBF0895EFE6F0E0808182609F +:1044000080830895EFE6F0E080818D7F80830895BA +:10441000EFE6F0E0808192E08927808308951F9283 +:104420000F920FB60F9211242F933F934F935F93E8 +:104430006F937F938F939F93AF93BF93EF93FF936C +:104440008091DE019091DF0101969093DF018093CE +:10445000DE01811103C082E00E94EF07E091DF01DD +:10446000E695E695F0E0E657FB4FE4918091DE019A +:104470008E1303C080E00E94EF07FF91EF91BF9180 +:10448000AF919F918F917F916F915F914F913F91EC +:104490002F910F900FBE0F901F90189504D0689425 +:1044A000B1118DC0089570D088F09F5790F0B92F4A +:1044B0009927B751A0F0D1F0660F771F881F991F79 +:1044C0001AF0BA95C9F712C0B13081F077D0B1E0D7 +:1044D000089574C0672F782F8827B85F39F0B93FE7 +:1044E000CCF3869577956795B395D9F73EF490957B +:1044F0008095709561957F4F8F4F9F4F0895E894F9 +:1045000009C097FB3EF490958095709561957F4F1B +:104510008F4F9F4F9923A9F0F92F96E9BB279395C9 +:10452000F695879577956795B795F111F8CFFAF4D9 +:10453000BB0F11F460FF1BC06F5F7F4F8F4F9F4F0A +:1045400016C0882311F096E911C0772321F09EE868 +:10455000872F762F05C0662371F096E8862F70E0CE +:1045600060E02AF09A95660F771F881FDAF7880FA8 +:104570009695879597F9089557FD9058440F551FC4 +:1045800059F05F3F71F04795880F97FB991F61F0D5 +:104590009F3F79F087950895121613061406551F4C +:1045A000F2CF4695F1DF08C0161617061806991FB8 +:1045B000F1CF86957105610508940895E894BB27AD +:1045C00066277727CB0197F908950BD078C069D07B +:1045D00028F06ED018F0952309F05AC05FC011245E +:1045E000EECFCADFA0F3959FD1F3950F50E0551F92 +:1045F000629FF001729FBB27F00DB11D639FAA2738 +:10460000F00DB11DAA1F649F6627B00DA11D661F86 +:10461000829F2227B00DA11D621F739FB00DA11DA7 +:10462000621F839FA00D611D221F749F3327A00D61 +:10463000611D231F849F600D211D822F762F6A2FFD +:1046400011249F5750408AF0E1F088234AF0EE0F82 +:10465000FF1FBB1F661F771F881F91505040A9F78F +:104660009E3F510570F014C0AACF5F3FECF3983E17 +:10467000DCF3869577956795B795F795E7959F5FF6 +:10468000C1F7FE2B880F911D9695879597F9089590 +:1046900097F99F6780E870E060E008959FEF80ECF5 +:1046A000089500240A941616170618060906089598 +:1046B00000240A9412161306140605060895092EFE +:1046C0000394000C11F4882352F0BB0F40F4BF2B6D +:1046D00011F460FF04C06F5F7F4F8F4F9F4F0895AD +:1046E00097FB072E16F4009407D077FD09D00E949F +:1046F0008A2307FC05D03EF4909581959F4F08953D +:10470000709561957F4F0895EE0FFF1F0590F4910E +:10471000E02D0994AA1BBB1B51E107C0AA1FBB1FB8 +:10472000A617B70710F0A61BB70B881F991F5A953D +:10473000A9F780959095BC01CD010895F999FECF18 +:1047400092BD81BDF89A992780B50895A8E1B0E09F +:1047500042E050E00C94C623262FF999FECF92BD7B +:1047600081BDF89A019700B4021639F01FBA20BD36 +:104770000FB6F894FA9AF99A0FBE08950196272F6A +:104780000E94AD230C94AC23DC01CB01FC01F99910 +:10479000FECF06C0F2BDE1BDF89A319600B40D928D +:0C47A00041505040B8F70895F894FFCF46 +:1047AC002002F1077E085B082708F4070101BA0113 +:1047BC0028080A03140A3F4D36394B04FE03C8037C +:1047CC008F0322033B0354036D030102030405060C +:0447DC0007080900C1 +:00000001FF -- cgit v1.2.1 From bf925fb71cf03d520f66baefa6af5c94ff5b7952 Mon Sep 17 00:00:00 2001 From: Roman Zolotarev Date: Tue, 26 Apr 2016 16:46:43 +0800 Subject: Add Roman's layout with QWERTY --- .../romanzolotarev-norman-qwerty-osx/keymap.c | 73 ++ .../romanzolotarev-norman-qwerty-osx/readme.md | 34 + .../romanzolotarev-norman-qwerty-osx.hex | 1139 ++++++++++++++++++++ .../romanzolotarev-norman-qwerty-osx.png | Bin 0 -> 100627 bytes 4 files changed, 1246 insertions(+) create mode 100644 keyboard/ergodox_ez/keymaps/romanzolotarev-norman-qwerty-osx/keymap.c create mode 100644 keyboard/ergodox_ez/keymaps/romanzolotarev-norman-qwerty-osx/readme.md create mode 100644 keyboard/ergodox_ez/keymaps/romanzolotarev-norman-qwerty-osx/romanzolotarev-norman-qwerty-osx.hex create mode 100644 keyboard/ergodox_ez/keymaps/romanzolotarev-norman-qwerty-osx/romanzolotarev-norman-qwerty-osx.png diff --git a/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-qwerty-osx/keymap.c b/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-qwerty-osx/keymap.c new file mode 100644 index 0000000000..dd946c1823 --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-qwerty-osx/keymap.c @@ -0,0 +1,73 @@ +#include "ergodox_ez.h" +#include "debug.h" +#include "action_layer.h" + +#define BASE 0 +#define QWRT 1 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [BASE] = KEYMAP( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_F5, + KC_TAB, KC_Q, KC_W, KC_D, KC_F, KC_K, KC_BSLS, + KC_LCTL, KC_A, KC_S, KC_E, KC_T, KC_G, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LBRC, + KC_F1, KC_F2, KC_F3, KC_F4, KC_LGUI, + /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_VOLD, KC_MUTE, + /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_VOLU, + /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_BSPC, CTL_T(KC_ESC), KC_LALT, + // + /*-*/ KC_F6, KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQL, + /*-*/ TG(QWRT), KC_J, KC_U, KC_R, KC_L, KC_SCLN, KC_MINS, + /*-*/ /*-*/ KC_Y, KC_N, KC_I, KC_O, KC_H, KC_ENT, + /*-*/ KC_RBRC, KC_P, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + /*-*/ /*-*/ /*-*/ KC_RGUI, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, + KC_MPLY, KC_MNXT, + KC_MPRV, + KC_RALT, KC_QUOT, KC_SPC + ), + [QWRT] = KEYMAP( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_E, KC_R, KC_T, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_D, KC_F, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS, + /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, + /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS, KC_TRNS, + // + /*-*/ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + /*-*/ KC_TRNS, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_TRNS, + /*-*/ /*-*/ KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_TRNS, + /*-*/ KC_TRNS, KC_N, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS + ), +}; + +const uint16_t PROGMEM fn_actions[] = { +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { +}; + +// Runs just one time when the keyboard initializes. +void matrix_init_user(void) { +}; + +// Runs constantly in the background, in a loop. +void matrix_scan_user(void) { + uint8_t layer = biton32(layer_state); + ergodox_board_led_off(); + ergodox_right_led_1_off(); + ergodox_right_led_2_off(); + ergodox_right_led_3_off(); + switch (layer) { + case QWRT: + ergodox_right_led_1_on(); + break; + default: + break; + } +}; diff --git a/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-qwerty-osx/readme.md b/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-qwerty-osx/readme.md new file mode 100644 index 0000000000..0e78c130b3 --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-qwerty-osx/readme.md @@ -0,0 +1,34 @@ +# Roman's Layout + +There are two layers: + +- **BASE** is [Norman layout](https://normanlayout.info/). +- **QWRT** is QWERTY. + +[![keyboard-layout](romanzolotarev-norman-qwerty-osx.png)](http://www.keyboard-layout-editor.com/#/gists/3b236f450da474dc506a5a80390c3cc7) + +## Switching + +- Tap `QWRT` to toggle **QWRT**. + +## LEDs + +- Red: QWRT is on. + +## Functional Keys + +- Tap `F1` to mute microphone via [Shush](http://mizage.com/shush/). +- Tap `F2` to copy screenshot to the clipboard. +- Hold `SHIFT` and tap `F2` to save screenshot as a file. +- Tap `F3`, `F4`, `F5`, `F6` to resize a window via [Divvy](http://mizage.com/divvy/). + +## CTRL/ESC + +Both CTRL and ESC are frequently used in Vim. + +- Tap `CTRL/ESC` to send `ESC`. +- Hold `CTRL/ESC` to use as `CTRL`. + +## Activate N-rollover + +- Hold left `SHIFT` and right `SHIRT` and then tap `N`. diff --git a/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-qwerty-osx/romanzolotarev-norman-qwerty-osx.hex b/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-qwerty-osx/romanzolotarev-norman-qwerty-osx.hex new file mode 100644 index 0000000000..80ae0751b1 --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-qwerty-osx/romanzolotarev-norman-qwerty-osx.hex @@ -0,0 +1,1139 @@ +:100000000C940F020C9453020C9453020C94530260 +:100010000C9453020C9453020C9453020C9453020C +:100020000C9453020C9453020C94070C0C94D90CAE +:100030000C9453020C9453020C9453020C945302EC +:100040000C9453020C94A3210C9453020C9453026D +:100050000C9453020C94321B0C9453020C945302D4 +:100060000C9453020C9453020C9453020C945302BC +:100070000C9453020C9453020C9453020C945302AC +:100080000C9453020C9453020C9453020C9453029C +:100090000C9453020C9453020C9453020C9453028C +:1000A0000C9453020C9453020C945302460D680DA9 +:1000B000560E680D560EAD0DD00D560E250E380E8F +:1000C0002411241161116111A411E211FB13FB131E +:1000D000FB11FB13FC12FC12CF13FB13FB13E613F3 +:1000E00035002B00E000E1003A0000001E00140083 +:1000F00004001D003B00E2001F001A0016001B0058 +:100100003C00297120000700080006003D002A007D +:100110002100090017001900E300A90022000E00C9 +:100120000A0005000000AA003E00310000002F0078 +:100130000000A8003F000154000030000000AE00A5 +:1001400023000D001C0013000000AB002400180069 +:1001500011001000E700AC00250015000C0036006F +:1001600050002C0026000F00120037005100340010 +:10017000270033000B0038005200E6002E002D004F +:100180002800E5004F00000001000100010001000F +:100190000100000001000100010001000100010058 +:1001A0000100010001000100010001000100080040 +:1001B0000700010001000100010015000900010015 +:1001C0000100010001001700010001000000010012 +:1001D0000100010000000100000001000100010019 +:1001E000000001000000010001001C000B001100D4 +:1001F00000000100010018000D00010001000100D5 +:1002000001000C000E0001000100010001001200BD +:100210000F00010001000100010013003300010084 +:1002200001000100010001000100010001000000C7 +:1002300016034500720067006F0044006F007800ED +:10024000200045005A0000001603450072006700B8 +:100250006F0044006F007800200045005A00000045 +:100260000403090409026D00040100A0FA09040056 +:10027000000103010100092111010001223F0007D3 +:1002800005810308000A09040100010301020009B5 +:100290002111010001224D000705820308000A090F +:1002A00004020001030000000921110100012236AF +:1002B000000705830308000A090403000103000086 +:1002C00000092111010001223900070584031000F3 +:1002D000011201100100000008EDFE0713010001EA +:1002E00002000105010906A101050719E029E7152A +:1002F0000025019508750181020508190129059558 +:1003000005750191029501750391010507190029F1 +:100310007715002501957875018102C005010980D6 +:10032000A101850216010026B7001A01002AB700B4 +:10033000751095018100C0050C0901A10185031606 +:100340000100269C021A01002A9C02751095018169 +:1003500000C005010902A1010901A1000509190157 +:100360002905150025019505750181029501750383 +:1003700081010501093009311581257F9502750834 +:10038000810609381581257F950175088106050CC0 +:100390000A38021581257F950175088106C0C005C0 +:1003A000010906A101050719E029E71500250195B6 +:1003B0000875018102950175088101050819012957 +:1003C00005950575019102950175039101050719C0 +:1003D0000029FF150025FF950675088100C0000063 +:1003E000000000000000000000010204060A0F17D0 +:1003F000202C3A4A5D71879DB3C7DAE9F5FCFFFC12 +:10040000F5E9DAC7B39D87715D4A3A2C20170F0AC8 +:10041000060402010000000000000000000011249A +:100420001FBECFEFDAE0DEBFCDBF04B603FE24C0AF +:100430008091EE019091EF01A091F001B091F10156 +:100440008730904BA740B04BB9F41092EE01109258 +:10045000EF011092F0011092F10114BE84B7877F72 +:1004600084BF88E10FB6F89480936000109260001A +:100470000FBEE0E0FFE3099511E0A0E0B1E0E4ED9C +:10048000F6E402C005900D92A433B107D9F711E04C +:10049000A4E3B1E001C01D92AE3EB107E1F70E94B6 +:1004A0004B090C9468230C94000008950895609102 +:1004B000B1017091B2018091B3019091B4010E9499 +:1004C0005E1A56985E9825982D9826982E9827980B +:1004D0002F98813011F4259A2D9A08950C94570283 +:1004E00056985E9825982D9826982E9827982F989C +:1004F0008FEF90E0909389008093880090938B0019 +:1005000080938A0090938D0080938C00259A2D9A79 +:100510002FEF80E792E0215080409040E1F700C04B +:100520000000269A2E9A2FEF80E792E0215080401B +:100530009040E1F700C00000279A2F9A2FEF80E744 +:1005400092E0215080409040E1F700C000002598E3 +:100550002D982FEF80E792E0215080409040E1F706 +:1005600000C0000026982E982FEF80E792E02150DF +:1005700080409040E1F700C0000027982F985698DF +:100580005E9825982D9826982E9827982F9808954C +:1005900089EA8093800089E08093810024982C98D8 +:1005A0003F988AB18F748AB96E98479A8BB1806BE5 +:1005B0008BB9769A0E9470020C94560280E2809366 +:1005C00000018091340181110EC00E942D0381E051 +:1005D000809334012FEF83ED90E3215080409040D1 +:1005E000E1F700C0000080E40E9433038093000123 +:1005F00081112EC00E945D0380930001811128C0EB +:100600000E945D0380930001811122C08FE30E944C +:100610005D038093000181111BC00E94550380E49B +:100620000E94330380930001811112C08CE00E946C +:100630005D038093000181110BC00E945D038093D4 +:100640000001811105C08FE30E945D0380930001CA +:100650000E9455038091000108951092B9008AE02C +:100660008093B800089594EA9093BC009091BC00E8 +:1006700097FFFCCF9091B900987F983021F090318E +:1006800011F081E008958093BB0084E88093BC0062 +:100690008091BC0087FFFCCF8091B900887F8831B2 +:1006A00011F0803471F780E0089584E98093BC00F4 +:1006B0008091BC0084FDFCCF08958093BB0084E84A +:1006C0008093BC008091BC0087FFFCCF9091B90063 +:1006D000987F81E0983209F480E0089584E880935F +:1006E000BC008091BC0087FFFCCF8091BB000895C7 +:1006F00080910001811115C080E40E943303809332 +:10070000000181110CC082E10E945D038093000111 +:10071000811105C08FEF0E945D03809300010E944C +:10072000550384B1807F84B985B1807F85B98AB152 +:10073000837F8AB98BB1837F8BB93E9846980895A1 +:100740000E94DE02809300010E94780380B38C70C7 +:1007500080BB81B3836F81BBA6E3B1E0E4E4F1E049 +:100760008EE08E0F11921D928E13FCCF0C94C80256 +:10077000BF92CF92DF92EF92FF920F931F93CF938E +:10078000DF9380910001882379F0809135018F5F9C +:1007900080933501811108C00E94DE028093000120 +:1007A000811102C00E94700206E311E0C0E0D0E0B7 +:1007B000DD24D39482E0C82EEE24E394F12CC730DC +:1007C000D10500F580910001811164C080E40E9490 +:1007D000330380930001811112C082E10E945D0306 +:1007E0008093000181110BC0C7010C2E01C0880F3E +:1007F0000A94EAF780950E945D03809300010E94AD +:10080000550348C0CA30A1F028F4C83059F0C930A7 +:1008100061F005C0CC3089F070F0CD3089F0209ABD +:10082000289810C0219A29980DC0229A2A980AC0A7 +:10083000239A2B9807C0529A01C0539A5B9802C022 +:100840003E9A469890EA9A95F1F79FB1799902C03D +:1008500082E001C080E091709D25982B7C9902C0B8 +:1008600084E001C080E0892B7D9902C038E001C09E +:1008700030E0832B7E9902C020E101C020E0822B72 +:100880009FB19095991F9927991F9295990F907EE6 +:10089000892B0FC080910001811149C080E40E9422 +:1008A000330380930001882379F1B12C0E94550312 +:1008B0008B2DF8019081981719F08083C092010167 +:1008C0000E94780321960F5F1F4FCE30D10509F0AB +:1008D00076CF80910101882361F1815080930101DD +:1008E000882339F08FE99FE00197F1F700C00000FD +:1008F00020C0A4E4B1E0E6E3F1E0CF01825F919192 +:100900009D938E13FCCF15C083E10E945D038093FD +:1009100000018111CACF81E40E943303809300015A +:100920008111C3CF0E946E03B82EB094BFCF80E078 +:10093000C0CF0E946E0281E0DF91CF911F910F9195 +:10094000FF90EF90DF90CF90BF900895E82FF0E0F8 +:10095000EC5BFE4F808108950895089596E0799F9D +:10096000F001112494E5899FE00DF11D1124E60F9B +:10097000F11DEE0FFF1FE052FF4F859194910895F6 +:10098000880F991FFC01E05AF040859194910895D9 +:10099000880F991FFC01E052FF4F859194910895B3 +:1009A0000F931F93CF93DF93EC018115904350F584 +:1009B000C11580E2D80708F0B3C0CB3BD10590F455 +:1009C000C83AD10508F05AC0C53AD10508F04BC065 +:1009D000C430D10508F0BBC1219709F0B5C101E0D1 +:1009E00010E0F5C1CF3FD10511F008F0B0C1C03F14 +:1009F000D10508F092C0CE01805E9109089708F4F5 +:100A0000A6C1A2C1C11591E5D907A8F4C23020E55D +:100A1000D20708F09EC0C11580E5D80709F485C04B +:100A200008F091C0C11520E4D20708F08DC1DD2780 +:100A30008E01106CCCC1C11580E8D80758F4C115DF +:100A400090E7D90708F07CC1C11520E6D20708F469 +:100A500022C17AC1C11580E9D80708F075C1DF70DD +:100A60008E01106AB4C1C53AD10509F472C1C63A03 +:100A7000D10509F071C102E810E4A9C1C83AD10555 +:100A800009F46DC1C93AD10509F46CC1CA3AD1055E +:100A900009F46BC1CB3AD10509F46AC1CC3AD1054E +:100AA00009F469C1CD3AD10509F468C1C03BD1054B +:100AB00009F467C1CE3AD10509F466C1CF3AD10530 +:100AC00009F465C1C13BD10509F464C1C23BD1053C +:100AD00009F463C1C33BD10509F462C1C43BD1052C +:100AE00009F461C1C53BD10509F460C1C63BD1051C +:100AF00009F45FC1C73BD10509F45EC1C83BD1050C +:100B000009F45DC1C93BD10509F45CC1CA3BD105FB +:100B100009F45BC100E014E45AC18E01106557C1AD +:100B2000CE019F700E94C80453C10E941F149FEF02 +:100B300024E38CE0915020408040E1F700C00000A9 +:100B40000E94571B44C18091CD0181608093CD01EB +:100B50003EC10E94001D811102C00E94E61C0E943D +:100B60001D1D90E09093EE018093ED01C23090E561 +:100B7000D90721F48091ED01816086C0C43020E561 +:100B8000D20721F48091ED0182607EC0C63080E5FD +:100B9000D80721F48091ED01846076C0C83090E5DB +:100BA000D90719F48091ED0127C0CA3020E5D2079A +:100BB00021F48091ED01806167C0CC3080E5D807D9 +:100BC00021F48091ED0180625FC0CE3090E5D907BD +:100BD00021F48091ED01806457C0C03120E5D20737 +:100BE00021F48091ED0180684FC0C23180E5D807C3 +:100BF00029F48091ED018460886046C0C33090E59F +:100C0000D90721F48091ED018E7F3EC0C53020E5EB +:100C1000D20721F48091ED018D7F36C0C73080E589 +:100C2000D80721F48091ED018B7F2EC0C93090E56B +:100C3000D90719F48091ED0126C0CB3020E5D20709 +:100C400021F48091ED018F7E1FC0CD3080E5D80763 +:100C500021F48091ED018F7D17C0CF3090E5D90749 +:100C600021F48091ED018F7B0FC0C13120E5D207C7 +:100C700021F48091ED018F7707C0C331D04531F465 +:100C80008091ED018B7F877F8093ED018091ED0155 +:100C90000E94211D9CC08D2F99278F70992781302C +:100CA0009105D9F49E012370332702C0880F991F44 +:100CB0002A95E2F79C688E0144E0000F111F4A95C7 +:100CC000E1F700271370802B912B53E0CC0FDD1F31 +:100CD0005A95E1F7C076DD272FC08230910531F4B7 +:100CE000DC2FCC278E01016F106A71C08330910513 +:100CF00069F4CE018370992701E010E002C0000F73 +:100D0000111F8A95E2F7C8019C680FC0049709F08B +:100D10005EC0CE018370992701E010E002C0000F91 +:100D2000111F8A95E2F7C8019A6823E0CC0FDD1FF6 +:100D30002A95E1F7C07ED7708C010C2B1D2B47C084 +:100D4000DF708E01106243C000E010E040C08E01F1 +:100D50003EC001E810E43BC003E810E438C002EEF6 +:100D600014E435C009EE14E432C00AEE14E42FC0D6 +:100D700005EB14E42CC006EB14E429C007EB14E4E3 +:100D800026C00CEC14E423C00DEC14E420C003E8EE +:100D900015E41DC00AE815E41AC002E915E417C0FD +:100DA00004E915E414C001E216E411C003E216E4FC +:100DB0000EC004E216E40BC005E216E408C006E229 +:100DC00016E405C007E216E402C00AE216E4C80110 +:100DD000DF91CF911F910F91089596E0799FF001D7 +:100DE000112494E5899FE00DF11D1124E60FF11DFA +:100DF000EE0FFF1FE052FF4F85919491803E9105C9 +:100E0000E0F4803C910558F58133910509F46FC0F9 +:100E100048F48932910509F463C08A32910509F4D6 +:100E20006DC072C089339105E9F082389105D1F027 +:100E30008533910509F44DC067C0833E910581F16A +:100E400038F4803E9105B9F0823E9105D9F05CC03E +:100E5000863E910561F1873E9105A1F155C00E9442 +:100E6000C00408952091ED0120FD02C021FF4CC077 +:100E700080EE90E049C08091ED0180FFF9CF89E3D9 +:100E800090E042C08091ED0182FF0EC08091ED01A3 +:100E900084FF03C080E090E037C083EE90E034C070 +:100EA0008091ED0182FFF2CF82EE90E02DC0809123 +:100EB000ED0183FF0BC08091ED0184FDEBCF87EE48 +:100EC00090E022C08091ED0183FFF5CF86EE90E0A7 +:100ED0001BC08091ED0185FF07C089E290E014C03E +:100EE0008091ED0185FFF9CF85E390E00DC0809101 +:100EF000ED0186FF07C08AE290E006C08091ED0117 +:100F000086FFF9CF81E390E00E94D0040895089510 +:100F10000C948707809162010895CF93DF9300D0EE +:100F20001F92CDB7DEB79C018091E401843019F5A2 +:100F300093E099833B832A839093E9008FEF90910C +:100F4000E800815095FD06C095ED9A95F1F70000F7 +:100F50008111F5CF8091E80085FF0DC040E050E0A1 +:100F600063E070E0CE0101960E94F7098091E800ED +:100F70008E778093E8000F900F900F90DF91CF91C4 +:100F80000895CF93DF9300D01F92CDB7DEB72091A5 +:100F9000E401243021F522E029839B838A8383E0C6 +:100FA0008093E9008FEF9091E800815095FD06C095 +:100FB00095ED9A95F1F700008111F5CF8091E80049 +:100FC00085FF0DC040E050E063E070E0CE01019687 +:100FD0000E94F7098091E8008E778093E8000F90D7 +:100FE0000F900F90DF91CF9108952091E40124306C +:100FF000F1F422E02093E9002FEF3091E800215036 +:1010000035FD06C035ED3A95F1F700002111F5CF19 +:101010002091E80025FF0BC040E050E065E070E063 +:101020000E94F7098091E8008E778093E800089588 +:10103000CF93DF93EC019091E401943009F046C026 +:1010400080910C018823D9F080910D018823B9F09B +:101050009093E9008FEF9091E800815095FD06C0D4 +:1010600095E19A95F1F700008111F5CF8091E800A4 +:1010700085FF2CC040E050E060E170E017C081E0E7 +:101080008093E9008FEF9091E800815095FD06C0B4 +:1010900095ED9A95F1F700008111F5CF8091E80068 +:1010A00085FF14C040E050E068E070E0CE010E948F +:1010B000F7098091E8008E778093E80080E1FE01D7 +:1010C000A2E5B1E001900D928A95E1F7DF91CF9111 +:1010D00008958091E301811109C00E948C0B0E9448 +:1010E000E90B8091E20084608093E2000895109201 +:1010F000E301089508950C9490210E94ED1A0E9436 +:1011000096210E948F0E0C94880742E061EC81E0EA +:101110000E94060B42E061EC82E00E94060B42E076 +:1011200061EC83E00E94060B42E161EC84E00C94E8 +:10113000060B8091E601833009F455C030F481300C +:1011400071F0823009F48EC008958A3009F47AC0B3 +:101150008B3009F460C0893009F09CC020C08091B8 +:10116000E501813A09F096C08091E800877F80937D +:10117000E8008091E9019091EA01892B21F460E176 +:1011800082E591E003C060E080E090E070E00E94C2 +:10119000420A8091E8008B778093E800089580915F +:1011A000E501813209F076C08091E9019091EA0170 +:1011B000009719F0039709F06DC08091E800877FD0 +:1011C0008093E8008091E80082FD05C08091E401F1 +:1011D0008111F8CF5FC08091F1008093620180910E +:1011E000E8008B7753C08091E501813A09F052C045 +:1011F0008091E9019091EA01892B09F04BC080911F +:10120000E800877F8093E8008091E80080FFFCCFB2 +:1012100080910C0136C08091E5018132D9F5809131 +:10122000E9019091EA01892BA9F58091E800877F77 +:101230008093E8000E943B0B8091E70180930C01B2 +:101240000C941F148091E501813221F58091E80012 +:10125000877F8093E8000E943B0B8091E801809398 +:10126000630108958091E501813AA1F48091E8003D +:10127000877F8093E8008091E80080FFFCCF809119 +:1012800063018093F1008091E8008E778093E800FD +:101290000C943B0B089584B7877F84BF88E10FB619 +:1012A000F89480936000109260000FBE90E080E898 +:1012B0000FB6F89480936100909361000FBE0E9476 +:1012C000DE0E0E948C0B0E94E90B8091E20084608C +:1012D0008093E20078940E946F0E0E94E00E82E0FC +:1012E00091E00E948A0E0E947E218091E401853067 +:1012F00069F40E94AE1A8091E2018823B1F30E9442 +:10130000D91A882391F30E94E109EFCF0E94E60EDB +:10131000ECCF292F332723303105C9F064F4213075 +:10132000310581F02230310509F043C08DE690E0AF +:1013300024E632E042C021323105F1F0223231059B +:1013400041F137C082E190E021ED32E036C09927CB +:101350008130910541F08230910541F0892B49F5AA +:10136000E0E6F2E005C0E8E4F2E002C0E0E3F2E02B +:10137000849190E09F0121C06430D8F4E62FF0E022 +:10138000EE0FFF1FEE5DFE4F2081318189E090E07E +:1013900014C0643070F470E0FB01EE0FFF1FE65ED6 +:1013A000FE4F20813181FB01EA5EFE4F808190E09B +:1013B00004C080E090E020E030E0FA013183208337 +:1013C000089580E189BD82E189BD09B400FEFDCFA9 +:1013D0008091D8008F7D8093D8008091E00082605A +:1013E0008093E0008091E00081FDFCCF0895CF92D2 +:1013F000DF92EF92FF920F931F93CF93DF93EC0155 +:101400008B016A010E945A0B811133C0C114D104AF +:1014100039F0F60180819181081B190BC80FD91F83 +:10142000E12CF12C0115110519F18091E80085FDE1 +:1014300016C08091E8008E778093E800C114D10433 +:1014400049F0F60180819181E80EF91EF182E08277 +:1014500085E00FC00E945A0B882321F30AC08991AE +:101460008093F10001501109FFEFEF1AFF0ADACF64 +:1014700080E0DF91CF911F910F91FF90EF90DF906F +:10148000CF9008952091EB013091EC01261737079A +:1014900048F06115710539F42091E8002E7720930A +:1014A000E80001C0B90140E061157105A9F1209182 +:1014B000E401222309F443C0253009F442C02091FD +:1014C000E80023FD40C02091E80022FD32C02091B9 +:1014D000E80020FFE9CF4091F3002091F20030E0D6 +:1014E000342BFC01CF016115710559F0283031050D +:1014F00040F481918093F100615071092F5F3F4F5B +:10150000F1CF41E02830310509F040E02091E800BA +:101510002E772093E800C8CF4111C9CF0AC080912F +:10152000E401882361F0853061F08091E80083FD5B +:101530000AC08091E80082FFF2CF80E0089582E047 +:10154000089583E0089581E008952091EB013091A2 +:10155000EC012617370748F06115710539F4209121 +:10156000E8002E772093E80001C0B901FC0120E0DB +:101570006115710591F18091E401882309F440C05F +:10158000853009F43FC08091E80083FD3DC0809123 +:10159000E80082FD2FC08091E80080FFE9CF209114 +:1015A000F3008091F20090E0922B6115710559F0E3 +:1015B0008830910540F424912093F10031966150D8 +:1015C00071090196F2CF21E0089709F020E080919F +:1015D000E8008E778093E800CBCF2111CCCF0AC0F2 +:1015E0008091E401882361F0853061F08091E8000A +:1015F00083FD0AC08091E80082FFF2CF80E0089569 +:1016000082E0089583E0089581E00895982F97304F +:1016100058F59093E900981739F07091EC002091FB +:10162000ED005091F00003C0242F762F50E021FFF1 +:1016300019C03091EB003E7F3093EB003091ED000C +:101640003D7F3093ED003091EB0031603093EB0043 +:101650007093EC002093ED005093F0002091EE0089 +:1016600027FF07C09F5FD3CF8F708093E90081E091 +:10167000089580E008958091E50187FF11C0809171 +:10168000E80082FD05C08091E4018111F8CF11C00E +:101690008091E8008B770BC08091E401882349F0AA +:1016A0008091E80080FFF8CF8091E8008E778093EA +:1016B000E80008952091E4003091E50095E640911E +:1016C000EC00842F817040FF22C08091E80080FDF3 +:1016D0001CC08091E401882391F0853091F08091C5 +:1016E000EB0085FD10C04091E4005091E5004217E9 +:1016F000530729F39A01915011F784E0089582E08D +:10170000089583E0089581E0089580E00895409170 +:10171000E80042FFDECF08950E94FA0B0E94020CFF +:10172000E0EEF0E0808181608083E8EDF0E0808190 +:101730008F77808319BCA7EDB0E08C918E7F8C935E +:1017400080818F7E80831092E30108950F931F9311 +:10175000CF93DF930E94FA0B0E94020CC8EDD0E0F9 +:1017600088818F77888388818068888388818F7D4E +:10177000888319BC1092E4011092E0011092E201FA +:101780001092E10100EE10E0F80180818B7F8083F0 +:1017900088818160888342E060E080E00E94060BDF +:1017A000E1EEF0E080818E7F8083E2EEF0E08081E8 +:1017B00081608083808188608083F80180818E7F52 +:1017C0008083888180618883DF91CF911F910F9101 +:1017D0000895E8EDF0E080818F7E8083E7EDF0E012 +:1017E00080818160808384E082BF81E08093E30117 +:1017F0000C94A60BE8EDF0E080818E7F8083109240 +:10180000E20008951092DA001092E10008951F920C +:101810000F920FB60F9211242F933F934F935F9324 +:101820006F937F938F939F93AF93BF93EF93FF93A8 +:101830008091E10082FF0BC08091E20082FF07C02F +:101840008091E1008B7F8093E1000E946E0E809179 +:10185000DA0080FF1FC08091D80080FF1BC08091FC +:10186000DA008E7F8093DA008091D90080FF0DC06E +:1018700080E189BD82E189BD09B400FEFDCF81E030 +:101880008093E4010E94690805C019BC1092E4012C +:101890000E9477088091E10080FF19C08091E200EA +:1018A00080FF15C08091E2008E7F8093E2008091DE +:1018B000E20080618093E2008091D8008062809392 +:1018C000D80019BC85E08093E4010E947B088091D8 +:1018D000E10084FF30C08091E20084FF2CC080E1F1 +:1018E00089BD82E189BD09B400FEFDCF8091D80099 +:1018F0008F7D8093D8008091E1008F7E8093E100FE +:101900008091E2008F7E8093E2008091E20081600E +:101910008093E2008091E001882311F084E007C009 +:101920008091E30087FD02C081E001C083E08093E5 +:10193000E4010E947D088091E10083FF29C080912D +:10194000E20083FF25C08091E100877F8093E10062 +:1019500082E08093E4011092E0018091E1008E7FAB +:101960008093E1008091E2008E7F8093E20080917D +:10197000E20080618093E20042E060E080E00E944B +:10198000060B8091F00088608093F0000E947A0836 +:10199000FF91EF91BF91AF919F918F917F916F9147 +:1019A0005F914F913F912F910F900FBE0F901F901D +:1019B00018951F920F920FB60F9211242F933F93F9 +:1019C0004F935F936F937F938F939F93AF93BF9347 +:1019D000CF93DF93EF93FF93C091E900CF70809195 +:1019E000EC00D82FD17080FDD0E81092E9008091F2 +:1019F000F000877F8093F00078940E941D0D109274 +:101A0000E9008091F00088608093F000CD2BCF70CA +:101A1000C093E900FF91EF91DF91CF91BF91AF911A +:101A20009F918F917F916F915F914F913F912F91F6 +:101A30000F900FBE0F901F9018951F93CF93DF93B9 +:101A4000CDB7DEB7AA970FB6F894DEBF0FBECDBFF5 +:101A5000E5EEF1E088E08E0F9091F10091938E1306 +:101A6000FBCF0E9499088091E80083FF1FC18091FD +:101A7000E5019091E601492F50E04A30510508F008 +:101A800015C1FA01EA5AFF4F0C941823803881F0EF +:101A9000823809F00BC18091E9018F708093E900D1 +:101AA0008091EB0085FB882780F91092E90006C041 +:101AB0008091E1019091E201911182609091E800A2 +:101AC000977F9093E8008093F1001092F100C8C0D6 +:101AD000282F2D7F09F0EAC0882319F0823061F0A9 +:101AE000E5C08091E701813009F0E0C0933009F052 +:101AF00080E08093E2012BC08091E701811127C033 +:101B00008091E9018F7009F4D1C08093E9002091A0 +:101B1000EB0020FF1CC0933021F48091EB00806229 +:101B200014C09091EB0090619093EB0021E030E0C5 +:101B3000A90102C0440F551F8A95E2F74093EA00BD +:101B40001092EA008091EB0088608093EB00109285 +:101B5000E9008091E800877F86C08111A7C01091BD +:101B6000E7011F778091E3008078812B8093E30069 +:101B70008091E800877F8093E8000E943B0B809172 +:101B8000E80080FFFCCF8091E30080688093E30051 +:101B9000111102C082E001C083E08093E40186C09D +:101BA0008058823008F082C08091E7019091E8016E +:101BB0008C3D53E0950779F583E08A838AE2898337 +:101BC0004FB7F894DE01139620E03EE051E2E32F98 +:101BD000F0E050935700E49120FF03C0E295EF70CE +:101BE0003F5FEF708E2F90E0EA3010F0C79601C093 +:101BF000C0968D939D932F5F243149F74FBF8091FD +:101C0000E800877F8093E8006AE270E0CE010196E9 +:101C10000E94420A14C0AE014F5F5F4F6091E9011C +:101C20000E948909BC01892B09F440C09091E80009 +:101C3000977F9093E80089819A810E94A50A8091FC +:101C4000E8008B778093E80031C0803879F5809187 +:101C5000E800877F8093E8008091E0018093F100A5 +:101C60008091E8008E778093E8000E943B0B1EC0B5 +:101C700081111CC09091E7019230C0F48091E8007E +:101C8000877F8093E8009093E0010E943B0B809156 +:101C9000E001811106C08091E30087FD02C081E070 +:101CA00001C084E08093E4010E9485088091E800EF +:101CB00083FF0AC08091E800877F8093E8008091CD +:101CC000EB0080628093EB00AA960FB6F894DEBF1B +:101CD0000FBECDBFDF91CF911F9108950895CF938F +:101CE0008091E4018823A1F0C091E900CF70909128 +:101CF000EC00892F817090FD80E8C82B1092E900DC +:101D00008091E80083FD0E941D0DCF70C093E90013 +:101D1000CF91089590936901809368010895E091AF +:101D20006801F0916901309721F00190F081E02D78 +:101D3000099480E00895E0916801F091690130977D +:101D400021F00280F381E02D09940895E09168016B +:101D5000F0916901309721F00480F581E02D09941C +:101D6000089520916601309167018217930771F001 +:101D70009093670180936601E0916801F091690199 +:101D8000309721F00680F781E02D09940895209185 +:101D90006401309165018217930771F0909365019A +:101DA00080936401E0916801F0916901309721F01E +:101DB0000084F185E02D0994089508950C94DD0EBA +:101DC0000E94F31A0E94A0030C94B91BCF92DF92D9 +:101DD000EF92FF920F931F93CF93DF93CDB7DEB7B0 +:101DE0002B970FB6F894DEBF0FBECDBF0E94B8038D +:101DF0008BE6C82E81E0D82E00E010E0E02E802F88 +:101E00000E94A604F60141916F01F42EF826B1F468 +:101E10000F5F1F4F0E30110589F78FEF89838A837B +:101E20001B820E94FC1A8160782F9D838C834981DC +:101E30005A816B818D810E94890F40C09091CD01A4 +:101E400091FF04C08B870E94AC048B8520E030E0BA +:101E50004F2D50E0922FBA01022E02C07595679562 +:101E60000A94E2F760FF24C02E83EF8221E030E085 +:101E7000690102C0CC0CDD1C9A95E2F790E08C2140 +:101E80009D21892B09F420E028870E94FC1A81609B +:101E9000782F9A8789874E815F8168858A850E941D +:101EA000890FF801E559FE4F8081C826C08206C01F +:101EB0002F5F3F4F2630310569F6AACF0E94A01E42 +:101EC00010916A010E948F0E1817A1F00E948F0EC8 +:101ED00080936A012B960FB6F894DEBF0FBECDBF7C +:101EE000DF91CF911F910F91FF90EF90DF90CF90F6 +:101EF0000C9488072B960FB6F894DEBF0FBECDBFAB +:101F0000DF91CF911F910F91FF90EF90DF90CF90D5 +:101F10000895CF93DF93CDB7DEB72B970FB6F89424 +:101F2000DEBF0FBECDBF4F83588769877A878B8707 +:101F3000DE01119686E0FD0111928A95E9F785E0B0 +:101F4000FE01379601900D928A95E1F749815A81F9 +:101F50006B817C818D819E810E94B9162B960FB674 +:101F6000F894DEBF0FBECDBFDF91CF9108950895E5 +:101F7000CF93882309F4C2C0C82F823859F40E9435 +:101F80008F0E81FDBBC089E30E9462190E942F1A47 +:101F900089E30CC0833879F40E948F0E80FDAEC0B7 +:101FA00083E50E9462190E942F1A83E50E94A419FA +:101FB000CF910C942F1A843859F40E948F0E82FD11 +:101FC0009DC087E40E9462190E942F1A87E4EECF19 +:101FD0008CEF8C0F813A48F48C2F0E94E320811102 +:101FE0008DC08C2F0E946219E3CF80E28C0F883065 +:101FF00048F4C77081E001C0880FCA95EAF70E94D3 +:10200000E819D6CF8BE58C0F833078F4C53A29F0E8 +:10201000C63A31F083E890E005C081E890E002C064 +:1020200082E890E0CF910C94B10E88E58C0F83315B +:1020300008F064C0C83A39F1C93A41F1CA3A49F1E5 +:10204000CB3A51F1CC3A59F1CD3A61F1C03B69F14B +:10205000CE3A71F1CF3A79F1C13B81F1C23B89F1BE +:10206000C33B91F1C43B99F1C53BA1F1C63BA9F13A +:10207000C73BB1F1C83BB9F1C93BC1F1CA3BC9F19A +:1020800080E090E038C082EE90E035C089EE90E0CC +:1020900032C08AEE90E02FC085EB90E02CC086EB3A +:1020A00090E029C087EB90E026C08CEC90E023C044 +:1020B0008DEC90E020C083E891E01DC08AE891E0BB +:1020C0001AC082E991E017C084E991E014C081E26E +:1020D00092E011C083E292E00EC084E292E00BC075 +:1020E00085E292E008C086E292E005C087E292E0D5 +:1020F00002C08AE292E0CF910C94C70ECF9108956E +:10210000882309F44BC0823859F40E948F0E81FF56 +:1021100045C089E30E9462190E942F1A89E30CC00E +:10212000833871F40E948F0E80FF38C083E50E94CF +:1021300062190E942F1A83E50E94A4190C942F1A89 +:10214000843859F40E948F0E82FF28C087E40E94D1 +:1021500062190E942F1A87E4EFCF9CEF980F913AF3 +:1021600058F390E2980F983050F4877091E001C0D6 +:10217000990F8A95EAF7892F0E94EE19DFCF9BE528 +:10218000980F933020F480E090E00C94B10E885AC0 +:10219000833120F480E090E00C94C70E08958823EA +:1021A00021F00E94E8190C942F1A0895882321F039 +:1021B0000E94EE190C942F1A0895BF92CF92DF92CD +:1021C000EF92FF920F931F93CF93DF9300D000D035 +:1021D00000D0CDB7DEB725E0FC01DE0111960190FD +:1021E0000D922A95E1F7FC01D080118102812581B1 +:1021F00022952F7043815481452B09F4FCC21F3F67 +:1022000021F4FFEFDF1609F4F6C27C012E830E9451 +:10221000B70FD9821A8369817A81802F0E945E1953 +:10222000182FB92E0E9413190E94DA172E8100234D +:1022300019F00E94051A2E81EB2DE295EF70F0E067 +:10224000E05AFF4F0C9418238B2D807F9B2D9F709D +:10225000F92E882319F0F29480EFF822002389F0F8 +:10226000FF2009F475C280E2810F883020F48F2DA1 +:102270000E94E81903C08F2D0E94F8190E942F1A9E +:1022800067C2812F0E948010FF2009F4B4C2105E43 +:102290008F2D183018F40E94EE1902C00E94FE190A +:1022A00026960FB6F894DEBF0FBECDBFDF91CF915B +:1022B0001F910F91FF90EF90DF90CF90BF900C9403 +:1022C0002F1A3B2D307F8B2D8F70303211F082957D +:1022D000807F112319F0113021F12CC00023B9F0B7 +:1022E000222309F4A0C1213009F09DC126960FB622 +:1022F000F894DEBF0FBECDBFDF91CF911F910F913C +:10230000FF90EF90DF90CF90BF900C94181A22238B +:1023100019F0213009F46FC28E830E941B1A8E813E +:1023200096C1002321F0223008F065C27CC1211142 +:1023300062C28DC1002321F0222309F474C108C2B6 +:10234000222309F484C119C22B2D269526952370CA +:1023500030E02115310521F021303105D1F04BC29B +:10236000002321F0812F9B2D937002C080E090E02C +:1023700026960FB6F894DEBF0FBECDBFDF91CF918A +:102380001F910F91FF90EF90DF90CF90BF900C9432 +:10239000B10E002321F0812F9B2D937002C080E0AD +:1023A00090E026960FB6F894DEBF0FBECDBFDF914A +:1023B000CF911F910F91FF90EF90DF90CF90BF9042 +:1023C0000C94C70E812F002319F00E94A81D02C093 +:1023D0000E94101E26960FB6F894DEBF0FBECDBF2A +:1023E000DF91CF911F910F91FF90EF90DF90CF90F1 +:1023F000BF900C94951E8B2D837009F07BC001114A +:10240000FAC1812F829586958770880F880F912F4A +:102410009F70C92ED12CE12CF12C082E04C0CC0CBD +:10242000DD1CEE1CFF1C0A94D2F714FF12C04FE013 +:1024300050E060E070E004C0440F551F661F771F36 +:102440008A95D2F7CB01BA016095709580959095E9 +:1024500003C060E070E0CB012B2D269526952370FC +:10246000422F50E042305105D9F04330510569F117 +:102470006C297D298E299F294130510551F12696DD +:102480000FB6F894DEBF0FBECDBFDF91CF911F9185 +:102490000F91FF90EF90DF90CF90BF900C940118B8 +:1024A0006C297D298E299F2926960FB6F894DEBFC8 +:1024B0000FBECDBFDF91CF911F910F91FF90EF9095 +:1024C000DF90CF90BF900C941D180E940118C70197 +:1024D000B60126960FB6F894DEBF0FBECDBFDF91D2 +:1024E000CF911F910F91FF90EF90DF90CF90BF9011 +:1024F0000C94E517002319F08B2D817001C086958F +:10250000882309F478C1812F829586958770880F7A +:10251000880F912F9F70C92ED12CE12CF12C082E01 +:1025200004C0CC0CDD1CEE1CFF1C0A94D2F714FF77 +:1025300012C04FE050E060E070E004C0440F551F4F +:10254000661F771F8A95D2F7CB01BA016095709507 +:102550008095909503C060E070E0CB012B2D26950F +:1025600026952370422F50E042305105D9F0433078 +:10257000510569F16C297D298E299F29413051052A +:1025800051F126960FB6F894DEBF0FBECDBFDF9196 +:10259000CF911F910F91FF90EF90DF90CF90BF9060 +:1025A0000C94DB186C297D298E299F2926960FB65D +:1025B000F894DEBF0FBECDBFDF91CF911F910F9179 +:1025C000FF90EF90DF90CF90BF900C94F7180E948F +:1025D000DB18C701B60126960FB6F894DEBF0FBE12 +:1025E000CDBFDF91CF911F910F91FF90EF90DF90C2 +:1025F000CF90BF900C94BF18103FD1F118F4103E4B +:1026000050F4A1C0123F09F463C008F44CC0133F5A +:1026100009F473C098C01F708B2D8F710023A1F037 +:102620000E945818812F26960FB6F894DEBF0FBE71 +:10263000CDBFDF91CF911F910F91FF90EF90DF9071 +:10264000CF90BF900C94CF100E947918812F2696BE +:102650000FB6F894DEBF0FBECDBFDF91CF911F91B3 +:102660000F91FF90EF90DF90CF90BF900C94D61019 +:102670000023A9F02111BFC08B2D8F7126960FB6B4 +:10268000F894DEBF0FBECDBFDF91CF911F910F91A8 +:10269000FF90EF90DF90CF90BF900C949E18223067 +:1026A00008F0A9C0E9CF0023A9F08B2D8F712696E1 +:1026B0000FB6F894DEBF0FBECDBFDF91CF911F9153 +:1026C0000F91FF90EF90DF90CF90BF900C9458182F +:1026D000002359F38B2D8F7126960FB6F894DEBF29 +:1026E0000FBECDBFDF91CF911F910F91FF90EF9063 +:1026F000DF90CF90BF900C947918002399F08B2D28 +:102700008F7126960FB6F894DEBF0FBECDBFDF9156 +:10271000CF911F910F91FF90EF90DF90CF90BF90DE +:102720000C94431826960FB6F894DEBF0FBECDBFAB +:10273000DF91CF911F910F91FF90EF90DF90CF909D +:10274000BF900C9439180023A9F0222309F4ADCFCF +:10275000812F26960FB6F894DEBF0FBECDBFDF9156 +:10276000CF911F910F91FF90EF90DF90CF90BF908E +:102770000C94B80F222309F4ADCF812F26960FB603 +:10278000F894DEBF0FBECDBFDF91CF911F910F91A7 +:10279000FF90EF90DF90CF90BF900C9480104B2D66 +:1027A0004F70612FC7010E94550226960FB6F8940C +:1027B000DEBF0FBECDBFDF91CF911F910F91FF9074 +:1027C000EF90DF90CF90BF900C945D174B2D4F7022 +:1027D000612FC70126960FB6F894DEBF0FBECDBF9E +:1027E000DF91CF911F910F91FF90EF90DF90CF90ED +:1027F000BF900C94AD0426960FB6F894DEBF0FBEC2 +:10280000CDBFDF91CF911F910F91FF90EF90DF909F +:10281000CF90BF9008950E94051A0E94151A0E9439 +:10282000DA190E942F1A0E94461F0E94951E80E00E +:1028300090E00E94B10E80E090E00C94C70E0E94E0 +:10284000F5190C940B140E945319292F22952F70FF +:1028500030E02C3031054CF42A3031056CF4225034 +:1028600031092230310588F407C02C30310549F098 +:102870002F30310531F009C0803E48F0803F29F407 +:1028800006C093FB882780F9089580E0089581E0D1 +:102890000895CF93DF9300D000D01F92CDB7DEB75D +:1028A0000F900F900F900F900F90DF91CF910895A0 +:1028B000CF93DF9300D000D000D0CDB7DEB72696FF +:1028C0000FB6F894DEBF0FBECDBFDF91CF91089554 +:1028D0001F93CF93DF93C091790116E080917A0125 +:1028E000C81799F0D0E01C9FF0011D9FF00D112436 +:1028F000E558FE4F408151816281738184819581C9 +:102900000E9458142196C770E9CFDF91CF911F9193 +:1029100008954091AB015091AC016091AD0170916F +:10292000AE018091AF019091B0010C945814809148 +:10293000B00182958F7009F054C08091AD01882359 +:1029400009F44FC080917901A0917A016091AB01A7 +:102950007091AC014091AE015091AF01B6E08A1781 +:1029600009F43FC090E041155105C1F17F3F11F4DA +:102970006F3FA1F1B89FF001B99FF00D1124E55808 +:10298000FE4F218172132AC02081621327C0228149 +:10299000211124C0238134812417350710F42150DC +:1029A0003109241B350B283C3105C0F42091B001BE +:1029B0002F7020612093B00126E0289FF001299F0D +:1029C000F00D1124E058FE4F80818F70806180836C +:1029D0008BEA91E00E94DD100C94681401968770D8 +:1029E000BECF0895CF92DF92EF92FF920F931F9385 +:1029F000CF93DF93CDB7DEB762970FB6F894DEBF03 +:102A00000FBECDBF8C0185E0F801DE011D9601905F +:102A10000D928A95E1F7D8014C9111965C9111972E +:102A200012966C9112971396CD90DC90149730917A +:102A3000AB017091AC018091AE019091AF01009714 +:102A400009F46BC17F3F19F43F3F09F466C1E09080 +:102A5000AD01EE2009F4C0C02091B001C816D9061E +:102A600028F0F601E81BF90BCF0104C08095909582 +:102A70008C0D9D1DFF24F394883C910578F0F12C7A +:102A8000207F09F0C6C07C2DD98AC88A89890E9416 +:102A900049148BEA91E00E94DD10B1C0822F807F43 +:102AA00009F046C0751314C0341312C0611110C070 +:102AB0002F7020612093B0010E9489148BEA91E06D +:102AC0000E94DD108091B001D80115968C932EC024 +:102AD000CD2819F15F3F11F44F3FF9F0F62E611147 +:102AE0001CC08091790120917A0136E0821709F4A7 +:102AF0005AC090E0389FF001399FF00D1124E5583D +:102B0000FE4F7181571306C07081471303C0728155 +:102B1000711103C001968770E9CFF62E662309F480 +:102B200018C18091B00181608093B001F12C11C176 +:102B3000751308C0341306C0611104C08091B00140 +:102B4000D801C3C04D875E878D859E856A8B0E94A4 +:102B500023146A898823E1F16623D1F12091B00121 +:102B6000822F82958F7090E0029774F08091AB0174 +:102B70009091AC0198878F831986DB86CA862C8753 +:102B8000CE0107960E94DD1086E0F801ABEAB1E0C5 +:102B900001900D928A95E1F70E9497140E94891482 +:102BA000FF24F394D6C04D875E878D859E850E9455 +:102BB0005319292F22952F7030E0223031050CF067 +:102BC000BCC09F7009F0B6C0805E883008F4C1C0F8 +:102BD000C8010E94DD10E4CFC816D90608F453C01E +:102BE000F601E81BF90BCF01883C910508F450C0B1 +:102BF000F12C7C2DD98AC88A89890E944914EBEA74 +:102C0000F1E086E0DF011D928A95E9F70E948914C0 +:102C1000A0C0751314C0341312C0611110C080918C +:102C2000B001F8018583C8010E94DD1086E0EBEA5F +:102C3000F1E0DF011D928A95E9F7FE2C8AC04D87ED +:102C40005E878D859E856A8B0E9423146A898823FE +:102C500009F4BECF662309F4BBCF2091B001822FC7 +:102C600082958F7090E002970CF48ECF8091AB012B +:102C70009091AC019A8389831B82DD82CC822E8362 +:102C8000CE0101967FCF809590958C0D9D1DACCF88 +:102C9000F62E662309F49CCF75132EC034132CC076 +:102CA0002091B00120FD1FC0822F82958F70D9F036 +:102CB000D80115962C9315978F3049F08F5F982F78 +:102CC0009295907F822F8F70892B15968C93C801D7 +:102CD0000E94DD1086E0F801ABEAB1E001900D92B0 +:102CE0008A95E1F793CF86E0F801ABEAB1E0019075 +:102CF0000D928A95E1F72DC04D875E878D859E8563 +:102D00000E942314811140CF8091B0018160809393 +:102D1000B001C8010E94DD101CC0662309F458CF21 +:102D20004D875E878D859E850E942314882309F434 +:102D30004FCF2ACF811148CF0CC0243031050CF081 +:102D400047CF9F7009F440CFF8019581907F09F03B +:102D50003BCF8F2D62960FB6F894DEBF0FBECDBF6E +:102D6000DF91CF911F910F91FF90EF90DF90CF9067 +:102D700008951F93CF93DF93CDB7DEB72C970FB68F +:102D8000F894DEBF0FBECDBF4F83588769877A871F +:102D90008B879C87CE0107960E94F214882369F0E6 +:102DA0008F8198852A853B85232BF1F19F3F09F080 +:102DB00063C08F3F09F060C037C086E0FE013796E0 +:102DC000DE01119601900D928A95E1F76F81788569 +:102DD000EA85FB85309741F17F3F11F46F3F21F188 +:102DE00020917A0130E0C9010196877099274091BE +:102DF000790150E08417950709F447C069837A8305 +:102E0000FD83EC8396E0929FD001939FB00D112437 +:102E1000A558BE4FFE01319601900D929A95E1F7AB +:102E200080937A010E94681416E080917901909154 +:102E30007A018917C1F1189FC001112485589E4F4E +:102E40000E94F214882379F1E09179011E9FF0012C +:102E50001124E558FE4F4081518162817381848144 +:102E600095810E9458148091790190E001968770B5 +:102E7000992780937901D9CF4F81588569857A85C3 +:102E80008B859C850E945814CFCF0E941F141092EE +:102E90007A0110927901EBEAF1E086E0DF011D9200 +:102EA0008A95E9F7C1CF2C960FB6F894DEBF0FBE16 +:102EB000CDBFDF91CF911F910895EF92FF920F93B5 +:102EC0001F93CF93DF938C01892B09F46CC0F12CF5 +:102ED000EE24E394E8012196F8018491843740F4CC +:102EE000843008F051C0813081F0823019F15BC02C +:102EF000853709F444C0A8F19CE7980F903708F093 +:102F000052C08F770E94801041C00E5F1F4FFE019C +:102F1000C49180E28C0F883048F4C7708E2D01C0B8 +:102F2000880FCA95EAF70E94081A14C08C2F0E94D5 +:102F3000B80F2DC00E5F1F4FFE01C49180E28C0FB1 +:102F4000883058F4C7708E2D01C0880FCA95EAF7F3 +:102F50000E940E1A0E942F1A1AC08C2F0E948010F5 +:102F600016C00E5F1F4FFE01C491CC2381F08FE984 +:102F70009FE00197F1F700C00000C150F6CF0E5F4F +:102F80001F4FFE01F49003C00E94B80F8E018F2DD9 +:102F9000882309F49FCFEFE9FFE03197F1F700C0F4 +:102FA00000008150F5CFDF91CF911F910F91FF90DD +:102FB000EF90089508956093B5017093B6018093E2 +:102FC000B7019093B8010C940B140F931F930091C9 +:102FD000B5011091B6012091B7013091B801DC0123 +:102FE000CB01802B912BA22BB32B8093B501909317 +:102FF000B601A093B701B093B8011F910F910C9443 +:103000000B140F931F930091B5011091B6012091FD +:10301000B7013091B801DC01CB0180239123A223B9 +:10302000B3238093B5019093B601A093B701B093F9 +:10303000B8011F910F910C940B140F931F930091E3 +:10304000B5011091B6012091B7013091B801DC01B2 +:10305000CB0180279127A227B3278093B5019093B6 +:10306000B601A093B701B093B8011F910F910C94D2 +:103070000B141092B1011092B2011092B301109290 +:10308000B4010C940B1441E050E060E070E004C027 +:10309000440F551F661F771F8A95D2F74093B101E1 +:1030A0005093B2016093B3017093B4010C940B146C +:1030B00041E050E060E070E004C0440F551F661F1F +:1030C000771F8A95D2F78091B1019091B201A091BA +:1030D000B301B091B401482B592B6A2B7B2B409341 +:1030E000B1015093B2016093B3017093B4010C9499 +:1030F0000B1441E050E060E070E004C0440F551F45 +:10310000661F771F8A95D2F7409550956095709508 +:103110008091B1019091B201A091B301B091B4013D +:10312000482359236A237B234093B1015093B20172 +:103130006093B3017093B4010C940B1441E050E020 +:1031400060E070E004C0440F551F661F771F8A952A +:10315000D2F78091B1019091B201A091B301B091E9 +:10316000B401482759276A277B274093B101509320 +:10317000B2016093B3017093B4010C940B140F93DC +:103180001F930091B1011091B2012091B3013091D0 +:10319000B401DC01CB01802B912BA22BB32B8093AC +:1031A000B1019093B201A093B301B093B4011F9108 +:1031B0000F910C940B140F931F930091B101109178 +:1031C000B2012091B3013091B401DC01CB01802325 +:1031D0009123A223B3238093B1019093B201A093D2 +:1031E000B301B093B4011F910F910C940B140F9382 +:1031F0001F930091B1011091B2012091B301309160 +:10320000B401DC01CB0180279127A227B32780934B +:10321000B1019093B201A093B301B093B4011F9197 +:103220000F910C940B140895CF92DF92EF92FF92BE +:103230000F931F93CF93DF938C01C090B501D09073 +:10324000B601E090B701F090B8018091B101909182 +:10325000B201A091B301B091B401C82AD92AEA2AD7 +:10326000FB2ACFE1D0E0D701C6010C2E04C0B695F1 +:10327000A795979587950A94D2F780FF06C0B80165 +:103280008C2F0E94ED06019721F4219760F780E0D2 +:1032900001C08C2FDF91CF911F910F91FF90EF9084 +:1032A000DF90CF900895CF93DF93EC010E94141923 +:1032B000BE010E94ED06DF91CF910895CB010E94DF +:1032C0005319089590910C01992321F090910D01CB +:1032D000911109C020910E0130910F01F901329630 +:1032E0009FEF40E01FC0982F9695969596959F303A +:1032F00050F5E0910E01F0910F01E90FF11D87707B +:1033000021E030E0A90102C0440F551F8A95E2F781 +:10331000CA019181892B818308959F3F39F04F5FC6 +:103320004E3041F051915813F8CF0DC05111F7CFE5 +:10333000942FF5CF9F3F39F0F901E90FF11D97FD6B +:10334000FA9582830895089590910C01992321F0B4 +:1033500090910D01911109C020910E0130910F0142 +:10336000F9013296205F3F4F1FC0982F9695969592 +:1033700096959F30F0F4E0910E01F0910F01E90F66 +:10338000F11D877021E030E0A90102C0440F551FF4 +:103390008A95E2F7CA0180959181892381830895F6 +:1033A0003196E217F30729F090819813F9CF108234 +:1033B000F7CF089581E090E0E0910E01F0910F01C8 +:1033C000E80FF91F1082019680319105A9F7089541 +:1033D0009091CC01892B8093CC0108958095909198 +:1033E000CC0189238093CC0108951092CC010895DB +:1033F0009091CB01892B8093CB010895809590917A +:10340000CB0189238093CB0108951092CB010895BD +:103410009091CA01892B8093CA010895809590915B +:10342000CA0189238093CA0108951092CA010895A0 +:103430008093B90108951092B901089580910E0109 +:1034400090910F01FC0131969C01205F3F4F80E07D +:10345000919191118F5FE217F307D1F70895E091F1 +:103460000E01F0910F018091CC018083E0910E015B +:10347000F0910F0190818091CB01892B8083E091A5 +:103480000E01F0910F0190818091CA01892B8083F8 +:103490008091B901882361F0E0910E01F0910F0154 +:1034A0009081892B80830E941E1A81111092B9018C +:1034B00080910E0190910F010C949B0ECF92DF92A0 +:1034C000EF92FF926C01EE24FF24C114D104E104B9 +:1034D000F10421F0C701B60120E101C020E0C72EB0 +:1034E000D82EE92EFF24C114D104E104F10419F00F +:1034F000285FC701B6016B017C0154E0F694E794A4 +:10350000D794C7945A95D1F7C114D104E104F104BA +:1035100019F02C5FC701B6016B017C0142E0F69403 +:10352000E794D794C7944A95D1F7C114D104E10424 +:10353000F10419F02E5FC701B601DC01CB01B6958D +:10354000A79597958795892B8A2B8B2B09F02F5F51 +:10355000822FFF90EF90DF90CF9008958091E4014B +:10356000843021F11092CE0120E488E190E00FB682 +:10357000F894A895809360000FBE2093600080E0CF +:103580000E94880783B7817F846083BF83B781608F +:1035900083BF7894889583B78E7F83BF88E10FB609 +:1035A000F89480936000109260000FBE0895089513 +:1035B0000895CF930E94D71A0E94B8030E94D81A88 +:1035C000C0E08C2F0E94A604811104C0CF5FCE30D2 +:1035D000C1F701C081E0CF9108950E941F140E949D +:1035E0008F0E0C94880782E084BD93E095BD9AEF1E +:1035F00097BD80936E0008952FB7F8948091CF0106 +:103600009091D001A091D101B091D2012FBF089526 +:10361000CF92DF92EF92FF920F931F932FB7F89400 +:103620004091CF015091D0016091D1017091D201B0 +:103630002FBF6A017B01EE24FF248C0120E030E0E3 +:10364000C016D106E206F30610F4415051099A0162 +:10365000281B390BC9011F910F91FF90EF90DF904C +:10366000CF9008951F920F920FB60F9211248F934F +:103670009F93AF93BF938091CF019091D001A09180 +:10368000D101B091D2010196A11DB11D8093CF014E +:103690009093D001A093D101B093D201BF91AF918B +:1036A0009F918F910F900FBE0F901F9018950E94C1 +:1036B0008C0BF8942FEF87EA91E6215080409040E0 +:1036C000E1F700C0000087E090EBDC018093EE01A1 +:1036D0009093EF01A093F001B093F1019CE088E199 +:1036E0000FB6F894A895809360000FBE9093600089 +:1036F000FFCFEF92FF920F931F93CF93DF93D82FBB +:10370000C0E08C2F0E94A60400E010E0E82EF12C0F +:10371000C701002E02C0959587950A94E2F780FDB7 +:1037200006C00F5F1F4F0630110591F709C0602FCB +:103730007C2F80E00E94AE04D813F3CF81E004C058 +:10374000CF5FCE30F1F680E0DF91CF911F910F91E6 +:10375000FF90EF900895CF93C82F8CE20E94791BC1 +:10376000882321F08C2FCF910C94791B80E0CF918E +:103770000895CF930E94001D811102C00E94E61C93 +:10378000C5E6C15049F00E94B8038FE39CE9019758 +:10379000F1F700C00000F5CF89E20E94AB1B811158 +:1037A00013C18AE20E94AB1B81110E94E61C85E0D6 +:1037B0000E94AB1B81110E94571B0E940B1D80931E +:1037C000CD0187E00E94AB1B8823A9F18BE10E9409 +:1037D000AB1B882351F08091CD0181FB222720F97A +:1037E00091E0922790FB81F90EC08EE00E94AB1B06 +:1037F000882361F08091CD0182FB222720F991E09E +:10380000922790FB82F98093CD0115C080E10E9440 +:10381000AB1B9091CD01882341F093FB222720F927 +:1038200081E0822780FB93F904C0892F809580FB7B +:1038300090F99093CD018091CD010E940F1D0E94BF +:103840001D1D8093ED0180EE0E94AB1B882341F08B +:103850008091ED01982F909590FB80F98093ED0178 +:1038600089E30E94AB1B882359F08091ED0181FB15 +:10387000222720F991E0922790FB81F98093ED01B6 +:1038800082EE0E94AB1B882359F08091ED0182FBF0 +:10389000222720F991E0922790FB82F98093ED0195 +:1038A00086EE0E94AB1B882359F08091ED0183FBCB +:1038B000222720F991E0922790FB83F98093ED0174 +:1038C00083EE0E94AB1B882359F08091ED0184FBAD +:1038D000222720F991E0922790FB84F98093ED0153 +:1038E00085E30E94AB1B882359F08091ED0185FB95 +:1038F000222720F991E0922790FB85F98093ED0132 +:1039000081E30E94AB1B882359F08091ED0186FB77 +:10391000222720F991E0922790FB86F98093ED0110 +:1039200081E10E94AB1B882359F08091ED0187FB58 +:10393000222720F991E0922790FB87F98093ED01EF +:103940008091ED010E94211D8091ED0187FB882768 +:1039500080F980930D0187E20E94AB1BC82F8EE196 +:103960000E94AB1B8111C2608FE10E94AB1B8111D1 +:10397000C46080E20E94AB1B8111C86081E20E949A +:10398000AB1B8111C06182E20E94AB1B8111C0623E +:1039900083E20E94AB1B8111C06484E20E94AB1BD6 +:1039A000882311F0C06802C0CC2329F08C2F0E941C +:1039B000181D6C2F03C00E94141D682F70E080E05A +:1039C00090E0CF910C94DB17CF9108956DEE7EEFD0 +:1039D00080E090E00E94522360E082E090E00E944C +:1039E000402360E083E090E00E94402360E084E0B8 +:1039F00090E00E94402360E085E090E00C9440233A +:103A000080E090E00E943A2321E08D3E9E4F09F035 +:103A100020E0822F089582E090E00C943223682FFA +:103A200082E090E00C94402383E090E00C943223F9 +:103A3000682F83E090E00C94402384E090E00C94A5 +:103A40003223682F84E090E00C9440238091D501CC +:103A500080FF0BC06091130185E0689FB0011124C5 +:103A600075956795759567952BC081FF09C0609125 +:103A7000130185E0689FB00111247595679520C0FA +:103A800082FF07C06091130185E0689FB001112497 +:103A900017C09091D6019923D1F060911201961729 +:103AA00088F72091130185E0289F90011124929FAF +:103AB000A001939F500D112470E0CA010E940423BD +:103AC0006038710540F46115710539F002C065E098 +:103AD00070E0862F08958FE7089581E00895809122 +:103AE000D50180FF08C06091110170E07595679560 +:103AF0007595679521C081FF06C06091110170E046 +:103B00007595679519C082FF04C06091110170E03E +:103B100010C09091D6019923C1F0609110019617C1 +:103B2000A0F780911101899FC001112470E00E94CB +:103B300004236038710528F46115710521F0862F82 +:103B400008958FE7089581E0089561E070E0F4CF73 +:103B5000803F21F40E94261D819504C0813F29F4F5 +:103B60000E94261D8093D9010895823F21F40E946E +:103B7000261D819504C0833F29F40E94261D809351 +:103B8000D8010895893F19F40E946F1D05C08A3F2E +:103B900031F40E946F1D81958093DA0108958B3F67 +:103BA00021F40E946F1D819504C08C3F29F40E946E +:103BB0006F1D8093DB010895843F21F48091D7012C +:103BC000816017C0853F21F48091D701826011C0C8 +:103BD000863F21F48091D70184600BC0873F21F498 +:103BE0008091D701886005C0883F31F48091D7016A +:103BF00080618093D70108958D3F21F48091D50194 +:103C000081600BC08E3F21F48091D501826005C098 +:103C10008F3F29F48091D50184608093D501089568 +:103C2000803F39F48091D90187FF6CC01092D9018F +:103C300069C0813F29F48091D9011816BCF362C094 +:103C40009091D801823F29F497FF5CC01092D8016F +:103C500059C0833F19F41916CCF354C0893F41F47D +:103C60008091DA0118160CF04DC01092DA014AC0AA +:103C70008A3F29F48091DA0187FF44C0F6CF8B3F59 +:103C800039F48091DB0187FF3DC01092DB013AC01F +:103C90008C3F29F48091DB011816BCF333C0843FBC +:103CA00021F48091D7018E7F17C0853F21F4809148 +:103CB000D7018D7F11C0863F21F48091D7018B7F82 +:103CC0000BC0873F21F48091D701877F05C0883FD3 +:103CD00031F48091D7018F7E8093D70113C08D3F3F +:103CE00021F48091D5018E7F0BC08E3F21F480910D +:103CF000D5018D7F05C08F3F29F48091D5018B7F41 +:103D00008093D5018091D80181110EC08091D90195 +:103D100081110AC08091DA01811106C08091DB0116 +:103D2000811102C01092D601089587ED91E00E94A2 +:103D3000A60E0E94FC1A9093D4018093D30108959B +:103D40001F93CF93DF938091D3019091D4010E9470 +:103D5000081BAC019091D601992321F02091140108 +:103D600030E006C0209115018AE0289F90011124BF +:103D70004217530708F486C08091D801C091D90139 +:103D8000D091DA011091DB01811107C0C11176C019 +:103D9000D11174C0111172C075C09F3F19F09F5F9F +:103DA0009093D601181624F40E94261D8093D80102 +:103DB0008091D80187FF05C00E94261D81958093C0 +:103DC000D8011C1624F40E94261D8093D9018091ED +:103DD000D90187FF05C00E94261D81958093D901D6 +:103DE0006091D801662339F1C091D901CC2319F132 +:103DF000772767FD7095872F972F0E94152223E361 +:103E000033E343E35FE30E9479220E94E22160935F +:103E1000D8016C2F772767FD7095872F972F0E9409 +:103E2000152223E333E343E35FE30E9479220E94F8 +:103E3000E2216093D9011D1624F40E946F1D809326 +:103E4000DA018091DA0187FF05C00E946F1D81951C +:103E50008093DA01111624F40E946F1D8093DB0118 +:103E60008091DB0187FF05C00E946F1D81958093C3 +:103E7000DB01DF91CF911F910C94951E9F3F09F0BC +:103E80008ECF96CFDF91CF911F910895E7EDF1E0AE +:103E900085E0DF011D928A95E9F71092D601109214 +:103EA000D5010895833081F128F4813059F08230B2 +:103EB000D1F00895853009F449C0B8F1863009F48D +:103EC00056C0089580911501262F30E0280F311D2E +:103ED0002F3F310524F4680F6093150108958FEF8B +:103EE00080931501089580911401262F30E0280F4A +:103EF000311D2F3F310524F4680F6093140108959C +:103F00008FEF80931401089580911301262F30E0E4 +:103F1000280F311D2F3F310524F4680F60931301E2 +:103F200008958FEF80931301089580911201262F39 +:103F300030E0280F311D2F3F310524F4680F6093C6 +:103F4000120108958FEF809312010895809111015D +:103F5000262F30E0280F311D2F3F310524F4680F44 +:103F60006093110108958FEF80931101089580915E +:103F70001001262F30E0280F311D2F3F310524F48A +:103F8000680F6093100108958FEF809310010895DA +:103F9000833011F128F4813049F0823091F0089596 +:103FA000853081F120F18630C1F1089580911501AD +:103FB000681720F4861B809315010895109215014F +:103FC000089580911401681720F4861B80931401D2 +:103FD000089510921401089580911301681720F438 +:103FE000861B809313010895109213010895809108 +:103FF0001201681720F4861B809312010895109215 +:104000001201089580911101681720F4861B809396 +:1040100011010895109211010895809110016817FF +:1040200020F4861B809310010895109210010895CA +:104030000F931F938D3109F46BC008F03FC08E3091 +:1040400009F47FC0C0F4873009F469C068F4863091 +:1040500009F0B1C08091CD01817F8E7F8093CD0129 +:1040600081E08093DD01A8C0883009F4A2C08B30C4 +:1040700009F49FC0A0C0863109F49BC078F4803158 +:1040800009F472C0813109F096C00E941F1490910A +:104090000D0181E0892780930D018BC0893109F4DE +:1040A00088C08B3109F087C08091CD0181FB222728 +:1040B00020F991E0922790FB81F94CC0853309F4F7 +:1040C00070C048F4873209F46CC008F459C08932D2 +:1040D00009F467C070C0833438F48A3308F04EC0E6 +:1040E000883309F466C067C0833409F45AC0883441 +:1040F00009F061C00E941F140FEF13ED20E301507F +:1041000010402040E1F700C000000E94571B51C042 +:104110000E949C210E948F0E0E9488074AC09091A5 +:10412000CD01892F8095817080FB90F929F09660F0 +:1041300098609093CD0140C0997F977F9093CD0177 +:1041400038C08091CD0182FB222720F991E092278F +:1041500090FB82F98093CD01992359F18091CD0193 +:1041600081608093CD0125C08091CD0183FB222702 +:1041700020F991E0922790FB83F9ECCF895301C09D +:104180008D5141E050E060E070E08A019B0104C085 +:10419000000F111F221F331F8A95D2F7C901B801E2 +:1041A00004C061E070E080E090E00E94DB170E94B4 +:1041B0001F1481E001C080E01F910F91089580E0FD +:1041C000089580E00895CF93C82F8091DD0181305C +:1041D00079F018F08230E9F187C0E0910E01F0919A +:1041E0000F018081813169F0823209F07FC009C0FE +:1041F000E0910E01F0910F018081813111F0823246 +:1042000061F48C2F0E94DF20811104C08C2F0E944A +:1042100018201DC081E090E01AC08C2F0E94E12080 +:10422000811114C0C43179F048F4CB3079F0C03139 +:1042300009F060C082E08093DD0108C0C93219F046 +:10424000C83321F057C01092DD0154C081E0817065 +:1042500053C0C93289F118F5C43171F1A8F4C730DF +:1042600009F046C08AE08093150194E1909314010F +:1042700093E0909313018093120188E080931101E1 +:1042800088E28093100134C0CE51C63088F5EC2FFF +:10429000F0E0E65DFE4F80818093DC0129C0CE34E2 +:1042A000E9F020F4CB3421F56AE013C0C13579F090 +:1042B000C235F1F461E00DC08091DC01882319F072 +:1042C0001092DC0115C081E08093DD0115C061E032 +:1042D00006C08091DC010E94521F0AC06AE08091F2 +:1042E000DC010E94C81F04C01092DD0180E004C000 +:1042F00081E002C080E0ABCFCF910895E1E8F0E02B +:104300008081886080838081816080838FB7F8940A +:1043100093E09093890090ED909388008FBF08956B +:10432000EFE6F0E08081826080830895EFE6F0E0C0 +:1043300080818D7F80830895EFE6F0E0908182E0B8 +:104340008927808308951F920F920FB60F92112430 +:104350002F933F934F935F936F937F938F939F938D +:10436000AF93BF93EF93FF938091DE019091DF01B4 +:1043700001969093DF018093DE01811103C082E0FA +:104380000E948807E091DF01E695E695F0E0E252B1 +:10439000FC4FE4918091DE018E1303C080E00E9407 +:1043A0008807FF91EF91BF91AF919F918F917F917E +:1043B0006F915F914F913F912F910F900FBE0F9092 +:1043C0001F90189504D06894B1118DC0089570D0D5 +:1043D00088F09F5790F0B92F9927B751A0F0D1F0EE +:1043E000660F771F881F991F1AF0BA95C9F712C078 +:1043F000B13081F077D0B1E0089574C0672F782F85 +:104400008827B85F39F0B93FCCF3869577956795E3 +:10441000B395D9F73EF490958095709561957F4F4F +:104420008F4F9F4F0895E89409C097FB3EF49095F5 +:104430008095709561957F4F8F4F9F4F9923A9F07D +:10444000F92F96E9BB279395F6958795779567950C +:10445000B795F111F8CFFAF4BB0F11F460FF1BC050 +:104460006F5F7F4F8F4F9F4F16C0882311F096E9E3 +:1044700011C0772321F09EE8872F762F05C0662391 +:1044800071F096E8862F70E060E02AF09A95660F4A +:10449000771F881FDAF7880F9695879597F9089503 +:1044A00057FD9058440F551F59F05F3F71F04795E5 +:1044B000880F97FB991F61F09F3F79F087950895CA +:1044C000121613061406551FF2CF4695F1DF08C0E9 +:1044D000161617061806991FF1CF86957105610506 +:1044E00008940895E894BB2766277727CB0197F9AE +:1044F00008950BD078C069D028F06ED018F09523BD +:1045000009F05AC05FC01124EECFCADFA0F3959F17 +:10451000D1F3950F50E0551F629FF001729FBB27AA +:10452000F00DB11D639FAA27F00DB11DAA1F649F56 +:104530006627B00DA11D661F829F2227B00DA11D09 +:10454000621F739FB00DA11D621F839FA00D611D8F +:10455000221F749F3327A00D611D231F849F600DB0 +:10456000211D822F762F6A2F11249F5750408AF0E9 +:10457000E1F088234AF0EE0FFF1FBB1F661F771F75 +:10458000881F91505040A9F79E3F510570F014C00C +:10459000AACF5F3FECF3983EDCF38695779567955D +:1045A000B795F795E7959F5FC1F7FE2B880F911D93 +:1045B0009695879597F9089597F99F6780E870E039 +:1045C00060E008959FEF80EC089500240A94161689 +:1045D000170618060906089500240A9412161306F1 +:1045E000140605060895092E0394000C11F488237F +:1045F00052F0BB0F40F4BF2B11F460FF04C06F5F9B +:104600007F4F8F4F9F4F089597FB072E16F400940E +:1046100007D077FD09D00E941E2307FC05D03EF489 +:10462000909581959F4F0895709561957F4F08955E +:10463000EE0FFF1F0590F491E02D0994AA1BBB1B00 +:1046400051E107C0AA1FBB1FA617B70710F0A61B92 +:10465000B70B881F991F5A95A9F780959095BC01B3 +:10466000CD010895F999FECF92BD81BDF89A9927A1 +:1046700080B50895A8E1B0E042E050E00C945A23E0 +:10468000262FF999FECF92BD81BDF89A019700B40B +:10469000021639F01FBA20BD0FB6F894FA9AF99AAB +:1046A0000FBE08950196272F0E9441230C944023AA +:1046B000DC01CB01FC01F999FECF06C0F2BDE1BDE2 +:1046C000F89A319600B40D9241505040B8F70895D1 +:0446D000F894FFCF8C +:1046D40020028A071808F507C1078D070101BA01EE +:1046E40028080A03140A3F4D36399F0352031C035A +:1046F400E30276028F02A802C10201020304050646 +:044704000708090099 +:00000001FF diff --git a/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-qwerty-osx/romanzolotarev-norman-qwerty-osx.png b/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-qwerty-osx/romanzolotarev-norman-qwerty-osx.png new file mode 100644 index 0000000000..34762ecb75 Binary files /dev/null and b/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-qwerty-osx/romanzolotarev-norman-qwerty-osx.png differ -- cgit v1.2.1 From ce7dc30cc893463d983b62fd63d324590ef0a690 Mon Sep 17 00:00:00 2001 From: skullY Date: Wed, 27 Apr 2016 10:12:51 -0700 Subject: Updating my entry in the README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d20557f597..bb1cca1edf 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ QMK is developed and maintained by Jack Humbert of OLKB with contributions from This documentation is edited and maintained by Erez Zukerman of ErgoDox EZ. If you spot any typos or inaccuracies, please [open an issue](https://github.com/jackhumbert/qmk_firmware/issues/new). -The OLKB product firmwares are maintained by Jack, the Ergodox EZ by Erez, and the Clueboard by [skullydazed](/skullydazed). +The OLKB product firmwares are maintained by Jack, the Ergodox EZ by Erez, and the Clueboard by [Zach White](https://github.com/skullydazed). ## Important background info: TMK documentation -- cgit v1.2.1 From d4710d8d7af904b1092c907c2ff259b9e4fdd43d Mon Sep 17 00:00:00 2001 From: Tobias Matt Date: Thu, 28 Apr 2016 15:01:27 +0200 Subject: shift to thumb key --- keyboard/ergodox_ez/keymaps/adnw/k_o_y/keymap.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/keyboard/ergodox_ez/keymaps/adnw/k_o_y/keymap.c b/keyboard/ergodox_ez/keymaps/adnw/k_o_y/keymap.c index a836dbc85b..2126ae11f7 100644 --- a/keyboard/ergodox_ez/keymaps/adnw/k_o_y/keymap.c +++ b/keyboard/ergodox_ez/keymaps/adnw/k_o_y/keymap.c @@ -25,8 +25,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | App | LGui | | Alt |Ctrl/Esc| * ,------|------|------| |------+--------+------. * | | | Home | | PgUp | | | - * | Space|Backsp|------| |------| Tab |Enter | - * | |ace | End | | PgDn | | | + * | Space|LShift|------| |------| Tab |Enter | + * | | | End | | PgDn | | | * `--------------------' `----------------------' */ // If it accepts an argument (i.e, is a function), it doesn't need KC_. @@ -40,7 +40,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { LT(SYMB,KC_GRV),KC_QUOT, LALT(KC_LSFT), KC_LEFT,KC_RGHT, ALT_T(KC_APP), KC_LGUI, KC_HOME, - KC_SPC,KC_BSPC,KC_END, + KC_SPC,KC_LSFT,KC_END, // right hand KC_RGHT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, TG(SYMB), DE_V, DE_G, DE_C, DE_L, DE_SS, DE_Z, -- cgit v1.2.1 From a101d9ebcd01bbba7b9a9f380457e4108e30878c Mon Sep 17 00:00:00 2001 From: Tobias Matt Date: Thu, 28 Apr 2016 15:02:40 +0200 Subject: update hex file --- keyboard/ergodox_ez/keymaps/adnw/k_o_y/k_o_y.hex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboard/ergodox_ez/keymaps/adnw/k_o_y/k_o_y.hex b/keyboard/ergodox_ez/keymaps/adnw/k_o_y/k_o_y.hex index 1e07f234c8..b61483a630 100644 --- a/keyboard/ergodox_ez/keymaps/adnw/k_o_y/k_o_y.hex +++ b/keyboard/ergodox_ez/keymaps/adnw/k_o_y/k_o_y.hex @@ -14,7 +14,7 @@ :1000D00062124A145913591324144A144A14381436 :1000E0000000F0A12E004C002A00E1003581000044 :1000F0001E000E000B001B7134004D001F00370066 -:1001000004001400E1042A0020001200080034005A +:1001000004001400E104E1002000120008003400A3 :1001100050002C00210036000C002F004F004A0038 :1001200022001D00180033000000657450000154C7 :100130000000007F0000E3004F0001540000007742 -- cgit v1.2.1 From 4122ad3f7b0e0dc1083a54b51430c8d7207d74ef Mon Sep 17 00:00:00 2001 From: Tobias Matt Date: Thu, 28 Apr 2016 15:09:34 +0200 Subject: switch shift and enter thumb key --- keyboard/ergodox_ez/keymaps/adnw/k_o_y/k_o_y.hex | 4 ++-- keyboard/ergodox_ez/keymaps/adnw/k_o_y/keymap.c | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/keyboard/ergodox_ez/keymaps/adnw/k_o_y/k_o_y.hex b/keyboard/ergodox_ez/keymaps/adnw/k_o_y/k_o_y.hex index b61483a630..95036fc444 100644 --- a/keyboard/ergodox_ez/keymaps/adnw/k_o_y/k_o_y.hex +++ b/keyboard/ergodox_ez/keymaps/adnw/k_o_y/k_o_y.hex @@ -14,13 +14,13 @@ :1000D00062124A145913591324144A144A14381436 :1000E0000000F0A12E004C002A00E1003581000044 :1000F0001E000E000B001B7134004D001F00370066 -:1001000004001400E104E1002000120008003400A3 +:1001000004001400E104280020001200080034005C :1001100050002C00210036000C002F004F004A0038 :1001200022001D00180033000000657450000154C7 :100130000000007F0000E3004F0001540000007742 :100140000000E200230019000700050000002971EB :1001500024000A001700130052004B00250006007F -:1001600015001A005100280026000F001100100091 +:1001600015001A005100E50026000F0011001000D4 :100170002F002B0027002D0016820D7130004E003D :100180002D001C000978E500C100000001000100FD :1001900001000100010000003A001E0220022202BC diff --git a/keyboard/ergodox_ez/keymaps/adnw/k_o_y/keymap.c b/keyboard/ergodox_ez/keymaps/adnw/k_o_y/keymap.c index 2126ae11f7..e33037b330 100644 --- a/keyboard/ergodox_ez/keymaps/adnw/k_o_y/keymap.c +++ b/keyboard/ergodox_ez/keymaps/adnw/k_o_y/keymap.c @@ -25,7 +25,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | App | LGui | | Alt |Ctrl/Esc| * ,------|------|------| |------+--------+------. * | | | Home | | PgUp | | | - * | Space|LShift|------| |------| Tab |Enter | + * | Space|Enter |------| |------| Tab |RShift| * | | | End | | PgDn | | | * `--------------------' `----------------------' */ @@ -40,7 +40,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { LT(SYMB,KC_GRV),KC_QUOT, LALT(KC_LSFT), KC_LEFT,KC_RGHT, ALT_T(KC_APP), KC_LGUI, KC_HOME, - KC_SPC,KC_LSFT,KC_END, + KC_SPC,KC_ENT ,KC_END, // right hand KC_RGHT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, TG(SYMB), DE_V, DE_G, DE_C, DE_L, DE_SS, DE_Z, @@ -49,7 +49,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_UP, KC_DOWN,KC_LBRC,KC_RBRC, KC_FN1, KC_LALT, CTL_T(KC_ESC), KC_PGUP, - KC_PGDN,KC_TAB, KC_ENT + KC_PGDN,KC_TAB, KC_RSFT ), /* Keymap 1: Symbol Layer * -- cgit v1.2.1 From 4f998657e97f641f6170573f17258f7ee7550390 Mon Sep 17 00:00:00 2001 From: Erez Zukerman Date: Fri, 29 Apr 2016 04:47:06 +0300 Subject: Addresses #290 --- keyboard/ergodox_ez/readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboard/ergodox_ez/readme.md b/keyboard/ergodox_ez/readme.md index 4afb42c8fd..97a10ff4d8 100644 --- a/keyboard/ergodox_ez/readme.md +++ b/keyboard/ergodox_ez/readme.md @@ -17,7 +17,7 @@ This requires a little bit of familiarity with coding. 2. Clone the repository (download it) 3. Set up a build environment as per [the build guide](/BUILD_GUIDE.md) - Using a Mac and have homebrew? just run `brew tap osx-cross/avr && brew install avr-libc` -4. Copy `keymaps/default/keymap.c` into `keymaps/your_name/keymap.c` (for example, `keymaps/german/keymap.c`) +4. Copy `keyboard/ergodox_ez/keymaps/default/keymap.c` into `keymaps/your_name/keymap.c` (for example, `keymaps/german/keymap.c`) 5. Edit this file, changing keycodes to your liking (see "Finding the keycodes you need" below). Try to edit the comments as well, so the "text graphics" represent your layout correctly. See below for more tips on sharing your work. 6. Compile your firmware by running `make clean` followed by `make KEYMAP=your_name`. For example, `make KEYMAP=german`. This will result in a hex file, which will always be called `ergodox_ez.hex`, regardless of your keymap name. 6. Flash this hex file using the [Teensy loader](https://www.pjrc.com/teensy/loader.html) as described in step 4 in the "Easy Way" above. -- cgit v1.2.1 From 38858338f81e74a89168a25a75a97bccbe83df13 Mon Sep 17 00:00:00 2001 From: sneako Date: Thu, 28 Apr 2016 21:58:29 -0400 Subject: Add my Ergodox EZ config --- keyboard/ergodox_ez/keymaps/sneako/README.md | 6 + keyboard/ergodox_ez/keymaps/sneako/keymap.c | 187 +++++++++++++++++++++++++++ 2 files changed, 193 insertions(+) create mode 100644 keyboard/ergodox_ez/keymaps/sneako/README.md create mode 100644 keyboard/ergodox_ez/keymaps/sneako/keymap.c diff --git a/keyboard/ergodox_ez/keymaps/sneako/README.md b/keyboard/ergodox_ez/keymaps/sneako/README.md new file mode 100644 index 0000000000..8dd110ee68 --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/sneako/README.md @@ -0,0 +1,6 @@ +# ergodox_keymap + +Based on the default Ergodox EZ firmware + +Replaced the left side Bksp with a Crtl/Esc, this really helps in vim. +Removed the Ctrls from the Z and / keys. diff --git a/keyboard/ergodox_ez/keymaps/sneako/keymap.c b/keyboard/ergodox_ez/keymaps/sneako/keymap.c new file mode 100644 index 0000000000..0c68631029 --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/sneako/keymap.c @@ -0,0 +1,187 @@ +// Based on `default_osx` +// Replace left Bksp with Ctrl/Esc +// Remove the Ctrl from Z and / +#include "ergodox_ez.h" +#include "debug.h" +#include "action_layer.h" + +#define BASE 0 // default layer +#define SYMB 1 // symbols +#define MDIA 2 // media keys + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* Keymap 0: Basic layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | = | 1 | 2 | 3 | 4 | 5 | LEFT | | RIGHT| 6 | 7 | 8 | 9 | 0 | - | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | Del | Q | W | E | R | T | L1 | | L1 | Y | U | I | O | P | \ | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * |Ctrl/Esc| A | S | D | F | G |------| |------| H | J | K | L |; / L2| LGui | + * |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------| + * | LShift | Z | X | C | V | B | | | | N | M | , | . | / | RShift | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * |Grv/L1| '" |AltShf| Left | Right| | Up | Down | [ | ] | ~L1 | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | App | LGui | | Alt |Ctrl/Esc| + * ,------|------|------| |------+--------+------. + * | | | Home | | PgUp | | | + * | Space|Backsp|------| |------| Tab |Enter | + * | |ace | End | | PgDn | | | + * `--------------------' `----------------------' + */ +// If it accepts an argument (i.e, is a function), it doesn't need KC_. +// Otherwise, it needs KC_* +[BASE] = KEYMAP( // layer 0 : default + // left hand + KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT, + KC_DELT, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(1), + CTL_T(KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO), + LT(SYMB,KC_GRV),KC_QUOT, LALT(KC_LSFT), KC_LEFT,KC_RGHT, + ALT_T(KC_APP), KC_LGUI, + KC_HOME, + KC_SPC,KC_BSPC,KC_END, + // right hand + KC_RGHT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, + TG(1), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, + KC_H, KC_J, KC_K, KC_L, LT(MDIA, KC_SCLN),GUI_T(KC_QUOT), + MEH_T(KC_NO),KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, + KC_UP, KC_DOWN,KC_LBRC,KC_RBRC, KC_FN1, + KC_LALT, CTL_T(KC_ESC), + KC_PGUP, + KC_PGDN,KC_TAB, KC_ENT + ), +/* Keymap 1: Symbol Layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | F12 | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | | | | | . | 0 | = | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | | | + * | | |------| |------| | | + * | | | | | | | | + * `--------------------' `--------------------' + */ +// SYMBOLS +[SYMB] = KEYMAP( + // left hand + KC_TRNS,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, + KC_TRNS,KC_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS, + KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV, + KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS, + KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS, + // right hand + KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + KC_TRNS, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_F12, + KC_DOWN, KC_4, KC_5, KC_6, KC_PLUS, KC_TRNS, + KC_TRNS, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, KC_TRNS, + KC_TRNS,KC_DOT, KC_0, KC_EQL, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS +), +/* Keymap 2: Media and mouse keys + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | | | | | | | | | | | | | | | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | | | MsUp | | | | | | | | | | | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | |MsLeft|MsDown|MsRght| |------| |------| | | | | | Play | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | | | | | | | | | Prev | Next | | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | Lclk | Rclk | |VolUp |VolDn | Mute | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | |Brwser| + * | | |------| |------| |Back | + * | | | | | | | | + * `--------------------' `--------------------' + */ +// MEDIA AND MOUSE +KEYMAP( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + // right hand + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, + KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS, + KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_WBAK +), +}; + +const uint16_t PROGMEM fn_actions[] = { + [1] = ACTION_LAYER_TAP_TOGGLE(SYMB) // FN1 - Momentary Layer 1 (Symbols) +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + switch(id) { + case 0: + if (record->event.pressed) { + register_code(KC_RSFT); + } else { + unregister_code(KC_RSFT); + } + break; + } + return MACRO_NONE; +}; + +// Runs just one time when the keyboard initializes. +void matrix_init_user(void) { + +}; + +// Runs constantly in the background, in a loop. +void matrix_scan_user(void) { + + uint8_t layer = biton32(layer_state); + + ergodox_board_led_off(); + ergodox_right_led_1_off(); + ergodox_right_led_2_off(); + ergodox_right_led_3_off(); + switch (layer) { + // TODO: Make this relevant to the ErgoDox EZ. + case 1: + ergodox_right_led_1_on(); + break; + case 2: + ergodox_right_led_2_on(); + break; + default: + // none + break; + } + +}; -- cgit v1.2.1 From b79124ac14720d4b53db65a0d9505b230db66b78 Mon Sep 17 00:00:00 2001 From: sneako Date: Thu, 28 Apr 2016 22:20:25 -0400 Subject: Adding .hex file --- keyboard/ergodox_ez/keymaps/sneako/sneako.hex | 1152 +++++++++++++++++++++++++ 1 file changed, 1152 insertions(+) create mode 100644 keyboard/ergodox_ez/keymaps/sneako/sneako.hex diff --git a/keyboard/ergodox_ez/keymaps/sneako/sneako.hex b/keyboard/ergodox_ez/keymaps/sneako/sneako.hex new file mode 100644 index 0000000000..1db1728652 --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/sneako/sneako.hex @@ -0,0 +1,1152 @@ +:100000000C9465020C94A9020C94A9020C94A90208 +:100010000C94A9020C94A9020C94A9020C94A902B4 +:100020000C94A9020C94A9020C94720C0C94440D2B +:100030000C94A9020C94A9020C94A9020C94A90294 +:100040000C94A9020C940E220C94A9020C94A902FF +:100050000C94A9020C949D1B0C94A9020C94A90267 +:100060000C94A9020C94A9020C94A9020C94A90264 +:100070000C94A9020C94A9020C94A9020C94A90254 +:100080000C94A9020C94A9020C94A9020C94A90244 +:100090000C94A9020C94A9020C94A9020C94A90234 +:1000A0000C94A9020C94A9020C94A902B10DD30DD1 +:1000B000C10ED30DC10E180E3B0EC10E900EA30E35 +:1000C0008F118F11CC11CC110F124D1266146614C2 +:1000D00066126614671367133A1466146614511493 +:1000E0000000F0A12E004C002971E10035810000D4 +:1000F0001E00140004001D0034004D001F001A00F3 +:1001000016001B00E1042A0020000800070006007A +:1001100050002C0021001500090019004F004A0072 +:10012000220017000A000500000065745000015409 +:100130000000007F0000E3004F0001540000007742 +:100140000000E20023001C000B00110000002971D8 +:10015000240018000D00100052004B0025000C0078 +:100160000E00360051002800260012000F00370054 +:100170002F002B00270013003382380030004E0080 +:100180002D0031003478E500C100000001000100BD +:1001900001000100010000003A001E0220022202BC +:1001A000010001003B001F022102230201000100A7 +:1001B0003C002F0226022F00010001003D0030020A +:1001C00027023000010001003E00310235003502F7 +:1001D000000001000100010000000100000001001A +:1001E0000100010000000100000001003F0052007A +:1001F00051002402000001004000240021001E00E4 +:10020000010001004100250022001F00370001000D +:1002100042002600230020002700010043002502A1 +:100220002E0231002E0001004400450001000100B3 +:1002300001000000010001000100010001000000B8 +:1002400001000100010001000100010001000100A6 +:10025000F2000100010001000100F000F1000100C6 +:10026000F400010001000100F3000100F5000100AD +:100270000100010001000100000001000100010077 +:100280000000010000000100010001000000010069 +:100290000000010001000100010001000000010058 +:1002A0000100010001000100A9000100010001009E +:1002B0000100AC00AA00B600010001000100AB0083 +:1002C000A80001000100010001000100010001007F +:1002D00001000100AE00010001000000160345000E +:1002E000720067006F0044006F0078002000450036 +:1002F0005A00000016034500720067006F004400BA +:100300006F007800200045005A0000000403090433 +:1003100009026D00040100A0FA09040000010301B4 +:100320000100092111010001223F00070581030896 +:10033000000A090401000103010200092111010062 +:1003400001224D000705820308000A09040200018A +:100350000300000009211101000122360007058376 +:100360000308000A09040300010300000009211129 +:100370000100012239000705840310000112011059 +:100380000100000008EDFE07130100010200010555 +:10039000010906A101050719E029E71500250195C6 +:1003A0000875018102050819012905950575019156 +:1003B000029501750391010507190029771500259C +:1003C00001957875018102C005010980A1018502AE +:1003D00016010026B7001A01002AB7007510950112 +:1003E0008100C0050C0901A1018503160100269CAE +:1003F000021A01002A9C02751095018100C00501B6 +:100400000902A1010901A100050919012905150029 +:10041000250195057501810295017503810105018D +:10042000093009311581257F950275088106093843 +:100430001581257F950175088106050C0A3802157E +:1004400081257F950175088106C0C005010906A1B7 +:1004500001050719E029E7150025019508750181B7 +:100460000295017508810105081901290595057591 +:100470000191029501750391010507190029FF15E6 +:100480000025FF950675088100C0000000000000EF +:100490000000000000010204060A0F17202C3A4A4F +:1004A0005D71879DB3C7DAE9F5FCFFFCF5E9DAC7B2 +:1004B000B39D87715D4A3A2C20170F0A060402018A +:1004C0000000000000000000000011241FBECFEF5C +:1004D000DAE0DEBFCDBF04B603FE24C08091EE019A +:1004E0009091EF01A091F001B091F1018730904B14 +:1004F000A740B04BB9F41092EE011092EF011092A8 +:10050000F0011092F10114BE84B7877F84BF88E1A7 +:100510000FB6F89480936000109260000FBEE0E088 +:10052000FFE3099511E0A0E0B1E0EAEAF7E402C0D8 +:1005300005900D92A433B107D9F711E0A4E3B1E01F +:1005400001C01D92AE3EB107E1F70E94B6090C94BE +:10055000D3230C94000061110BC0FC01828188231D +:1005600021F085EE0E94231003C085EE0E94EB105F +:1005700080E090E0089508956091B1017091B2011A +:100580008091B3019091B4010E94C91A56985E9867 +:1005900025982D9826982E9827982F98813019F015 +:1005A000823021F00895259A2D9A0895269A2E9A40 +:1005B00008950C94BC0256985E9825982D9826981C +:1005C0002E9827982F988FEF90E090938900809332 +:1005D000880090938B0080938A0090938D00809385 +:1005E0008C00259A2D9A2FEF80E792E021508040D1 +:1005F0009040E1F700C00000269A2E9A2FEF80E786 +:1006000092E0215080409040E1F700C00000279A1E +:100610002F9A2FEF80E792E0215080409040E1F741 +:1006200000C0000025982D982FEF80E792E0215020 +:1006300080409040E1F700C0000026982E982FEFF0 +:1006400080E792E0215080409040E1F700C0000038 +:1006500027982F9856985E9825982D9826982E982A +:1006600027982F98089589EA8093800089E08093E5 +:10067000810024982C983F988AB18F748AB96E981B +:10068000479A8BB1806B8BB9769A0E94DB020C94EF +:10069000BB0280E2809300018091340181110EC081 +:1006A0000E94980381E0809334012FEF83ED90E363 +:1006B000215080409040E1F700C0000080E40E949B +:1006C0009E038093000181112EC00E94C803809375 +:1006D0000001811128C00E94C8038093000181118C +:1006E00022C08FE30E94C8038093000181111BC0C8 +:1006F0000E94C00380E40E949E0380930001811148 +:1007000012C08CE00E94C8038093000181110BC0CD +:100710000E94C80380930001811105C08FE30E94ED +:10072000C803809300010E94C003809100010895D6 +:100730001092B9008AE08093B800089594EA9093EB +:10074000BC009091BC0097FFFCCF9091B900987FBE +:10075000983021F0903111F081E008958093BB0032 +:1007600084E88093BC008091BC0087FFFCCF80911F +:10077000B900887F883111F0803471F780E00895E6 +:1007800084E98093BC008091BC0084FDFCCF089577 +:100790008093BB0084E88093BC008091BC0087FFFD +:1007A000FCCF9091B900987F81E0983209F480E005 +:1007B000089584E88093BC008091BC0087FFFCCF43 +:1007C0008091BB00089580910001811115C080E4E3 +:1007D0000E949E038093000181110CC082E10E945F +:1007E000C80380930001811105C08FEF0E94C803E8 +:1007F000809300010E94C00384B1807F84B985B1D9 +:10080000807F85B98AB1837F8AB98BB1837F8BB9A9 +:100810003E98469808950E944903809300010E94E3 +:10082000E30380B38C7080BB81B3836F81BBA6E38D +:10083000B1E0E4E4F1E08EE08E0F11921D928E1390 +:10084000FCCF0C943303BF92CF92DF92EF92FF92D2 +:100850000F931F93CF93DF9380910001882379F04A +:10086000809135018F5F80933501811108C00E940E +:10087000490380930001811102C00E94DB0206E35C +:1008800011E0C0E0D0E0DD24D39482E0C82EEE2455 +:10089000E394F12CC730D10500F58091000181115E +:1008A00064C080E40E949E0380930001811112C005 +:1008B00082E10E94C8038093000181110BC0C7012F +:1008C0000C2E01C0880F0A94EAF780950E94C80395 +:1008D000809300010E94C00348C0CA30A1F028F4F0 +:1008E000C83059F0C93061F005C0CC3089F070F0E3 +:1008F000CD3089F0209A289810C0219A29980DC0EF +:10090000229A2A980AC0239A2B9807C0529A01C0AB +:10091000539A5B9802C03E9A469890EA9A95F1F7EE +:100920009FB1799902C082E001C080E091709D255D +:10093000982B7C9902C084E001C080E0892B7D99CE +:1009400002C038E001C030E0832B7E9902C020E174 +:1009500001C020E0822B9FB19095991F9927991F84 +:100960009295990F907E892B0FC080910001811183 +:1009700049C080E40E949E0380930001882379F19E +:10098000B12C0E94C0038B2DF8019081981719F0AB +:100990008083C09201010E94E30321960F5F1F4FE5 +:1009A000CE30D10509F076CF80910101882361F125 +:1009B000815080930101882339F08FE99FE00197EE +:1009C000F1F700C0000020C0A4E4B1E0E6E3F1E0EC +:1009D000CF01825F91919D938E13FCCF15C083E16F +:1009E0000E94C803809300018111CACF81E40E9454 +:1009F0009E03809300018111C3CF0E94D903B82EBA +:100A0000B094BFCF80E0C0CF0E94D90281E0DF91D7 +:100A1000CF911F910F91FF90EF90DF90CF90BF90FB +:100A20000895E82FF0E0EC5BFE4F80810895089573 +:100A3000089596E0799FF001112494E5899FE00DD7 +:100A4000F11D1124E60FF11DEE0FFF1FEC51FF4FBA +:100A5000859194910895880F991FFC01E05AF04008 +:100A6000859194910895880F991FFC01E052FF4FE2 +:100A70008591949108950F931F93CF93DF93EC0189 +:100A80008115904350F5C11580E2D80708F0B3C036 +:100A9000CB3BD10590F4C83AD10508F05AC0C53A0D +:100AA000D10508F04BC0C430D10508F0BBC1219777 +:100AB00009F0B5C101E010E0F5C1CF3FD10511F05B +:100AC00008F0B0C1C03FD10508F092C0CE01805EF1 +:100AD0009109089708F4A6C1A2C1C11591E5D907EB +:100AE000A8F4C23020E5D20708F09EC0C11580E509 +:100AF000D80709F485C008F091C0C11520E4D207D9 +:100B000008F08DC1DD278E01106CCCC1C11580E8C5 +:100B1000D80758F4C11590E7D90708F07CC1C11572 +:100B200020E6D20708F422C17AC1C11580E9D807AE +:100B300008F075C1DF708E01106AB4C1C53AD105E5 +:100B400009F472C1C63AD10509F071C102E810E496 +:100B5000A9C1C83AD10509F46DC1C93AD10509F452 +:100B60006CC1CA3AD10509F46BC1CB3AD10509F47D +:100B70006AC1CC3AD10509F469C1CD3AD10509F46D +:100B800068C1C03BD10509F467C1CE3AD10509F46B +:100B900066C1CF3AD10509F465C1C13BD10509F45D +:100BA00064C1C23BD10509F463C1C33BD10509F45B +:100BB00062C1C43BD10509F461C1C53BD10509F44B +:100BC00060C1C63BD10509F45FC1C73BD10509F43B +:100BD0005EC1C83BD10509F45DC1C93BD10509F42B +:100BE0005CC1CA3BD10509F45BC100E014E45AC101 +:100BF0008E01106557C1CE019F700E94330553C10D +:100C00000E948A149FEF24E38CE0915020408040A2 +:100C1000E1F700C000000E94C21B44C18091CD01D9 +:100C200081608093CD013EC10E946B1D811102C085 +:100C30000E94511D0E94881D90E09093EE018093C8 +:100C4000ED01C23090E5D90721F48091ED0181607A +:100C500086C0C43020E5D20721F48091ED01826086 +:100C60007EC0C63080E5D80721F48091ED01846014 +:100C700076C0C83090E5D90719F48091ED0127C0FE +:100C8000CA3020E5D20721F48091ED01806167C070 +:100C9000CC3080E5D80721F48091ED0180625FC0FF +:100CA000CE3090E5D90721F48091ED01806457C0E2 +:100CB000C03120E5D20721F48091ED0180684FC05A +:100CC000C23180E5D80729F48091ED018460886005 +:100CD00046C0C33090E5D90721F48091ED018E7FA5 +:100CE0003EC0C53020E5D20721F48091ED018D7F13 +:100CF00036C0C73080E5D80721F48091ED018B7FA5 +:100D00002EC0C93090E5D90719F48091ED0126C0B5 +:100D1000CB3020E5D20721F48091ED018F7E1FC0FA +:100D2000CD3080E5D80721F48091ED018F7D17C08B +:100D3000CF3090E5D90721F48091ED018F7B0FC072 +:100D4000C13120E5D20721F48091ED018F7707C0F2 +:100D5000C331D04531F48091ED018B7F877F809343 +:100D6000ED018091ED010E948C1D9CC08D2F992773 +:100D70008F70992781309105D9F49E012370332714 +:100D800002C0880F991F2A95E2F79C688E0144E003 +:100D9000000F111F4A95E1F700271370802B912B4C +:100DA00053E0CC0FDD1F5A95E1F7C076DD272FC049 +:100DB0008230910531F4DC2FCC278E01016F106A4F +:100DC00071C08330910569F4CE018370992701E0E9 +:100DD00010E002C0000F111F8A95E2F7C8019C685D +:100DE0000FC0049709F05EC0CE018370992701E01F +:100DF00010E002C0000F111F8A95E2F7C8019A683F +:100E000023E0CC0FDD1F2A95E1F7C07ED7708C015F +:100E10000C2B1D2B47C0DF708E01106243C000E019 +:100E200010E040C08E013EC001E810E43BC003E882 +:100E300010E438C002EE14E435C009EE14E432C008 +:100E40000AEE14E42FC005EB14E42CC006EB14E406 +:100E500029C007EB14E426C00CEC14E423C00DEC0D +:100E600014E420C003E815E41DC00AE815E41AC024 +:100E700002E915E417C004E915E414C001E216E420 +:100E800011C003E216E40EC004E216E40BC005E252 +:100E900016E408C006E216E405C007E216E402C044 +:100EA0000AE216E4C801DF91CF911F910F910895D6 +:100EB00096E0799FF001112494E5899FE00DF11DE2 +:100EC0001124E60FF11DEE0FFF1FEC51FF4F85912E +:100ED0009491803E9105E0F4803C910558F5813372 +:100EE000910509F46FC048F48932910509F463C093 +:100EF0008A32910509F46DC072C089339105E9F019 +:100F000082389105D1F08533910509F44DC067C051 +:100F1000833E910581F138F4803E9105B9F0823E1F +:100F20009105D9F05CC0863E910561F1873E91053F +:100F3000A1F155C00E942B0508952091ED0120FDDF +:100F400002C021FF4CC080EE90E049C08091ED01CD +:100F500080FFF9CF89E390E042C08091ED0182FFEC +:100F60000EC08091ED0184FF03C080E090E037C0A7 +:100F700083EE90E034C08091ED0182FFF2CF82EEEB +:100F800090E02DC08091ED0183FF0BC08091ED01B9 +:100F900084FDEBCF87EE90E022C08091ED0183FFCE +:100FA000F5CF86EE90E01BC08091ED0185FF07C074 +:100FB00089E290E014C08091ED0185FFF9CF85E3CF +:100FC00090E00DC08091ED0186FF07C08AE290E0BD +:100FD00006C08091ED0186FFF9CF81E390E00E9489 +:100FE0003B05089508950C94F207809162010895DD +:100FF000CF93DF9300D01F92CDB7DEB79C018091D5 +:10100000E401843019F593E099833B832A8390931C +:10101000E9008FEF9091E800815095FD06C095EDB5 +:101020009A95F1F700008111F5CF8091E80085FFD6 +:101030000DC040E050E063E070E0CE0101960E94F8 +:10104000620A8091E8008E778093E8000F900F90FD +:101050000F90DF91CF910895CF93DF9300D01F922F +:10106000CDB7DEB72091E401243021F522E02983B9 +:101070009B838A8383E08093E9008FEF9091E8005F +:10108000815095FD06C095ED9A95F1F7000081110C +:10109000F5CF8091E80085FF0DC040E050E063E0AF +:1010A00070E0CE0101960E94620A8091E8008E777E +:1010B0008093E8000F900F900F90DF91CF910895EB +:1010C0002091E4012430F1F422E02093E9002FEF95 +:1010D0003091E800215035FD06C035ED3A95F1F725 +:1010E00000002111F5CF2091E80025FF0BC040E062 +:1010F00050E065E070E00E94620A8091E8008E771F +:101100008093E8000895CF93DF93EC019091E40180 +:10111000943009F046C080910C018823D9F0809169 +:101120000D018823B9F09093E9008FEF9091E800CA +:10113000815095FD06C095E19A95F1F70000811167 +:10114000F5CF8091E80085FF2CC040E050E060E1E1 +:1011500070E017C081E08093E9008FEF9091E80084 +:10116000815095FD06C095ED9A95F1F7000081112B +:10117000F5CF8091E80085FF14C040E050E068E0C2 +:1011800070E0CE010E94620A8091E8008E77809321 +:10119000E80080E1FE01A2E5B1E001900D928A95A0 +:1011A000E1F7DF91CF9108958091E301811109C0AA +:1011B0000E94F70B0E94540C8091E200846080939F +:1011C000E20008951092E301089508950C94FB2124 +:1011D0000E94581B0E9401220E94FA0E0C94F307F1 +:1011E00042E061EC81E00E94710B42E061EC82E040 +:1011F0000E94710B42E061EC83E00E94710B42E1BE +:1012000061EC84E00C94710B8091E601833009F469 +:1012100055C030F4813071F0823009F48EC00895E9 +:101220008A3009F47AC08B3009F460C0893009F043 +:101230009CC020C08091E501813A09F096C0809160 +:10124000E800877F8093E8008091E9019091EA01AE +:10125000892B21F460E182E591E003C060E080E049 +:1012600090E070E00E94AD0A8091E8008B77809357 +:10127000E80008958091E501813209F076C08091FF +:10128000E9019091EA01009719F0039709F06DC008 +:101290008091E800877F8093E8008091E80082FDDC +:1012A00005C08091E4018111F8CF5FC08091F10009 +:1012B000809362018091E8008B7753C08091E501B3 +:1012C000813A09F052C08091E9019091EA01892B9D +:1012D00009F04BC08091E800877F8093E8008091FF +:1012E000E80080FFFCCF80910C0136C08091E501C1 +:1012F0008132D9F58091E9019091EA01892BA9F514 +:101300008091E800877F8093E8000E94A60B80917F +:10131000E70180930C010C948A148091E5018132DD +:1013200021F58091E800877F8093E8000E94A60B5A +:101330008091E8018093630108958091E501813AED +:10134000A1F48091E800877F8093E8008091E80015 +:1013500080FFFCCF809163018093F1008091E800D1 +:101360008E778093E8000C94A60B089584B7877F4E +:1013700084BF88E10FB6F8948093600010926000FB +:101380000FBE90E080E80FB6F894809361009093D0 +:1013900061000FBE0E94490F0E94F70B0E94540C7F +:1013A0008091E20084608093E20078940E94DA0EDB +:1013B0000E944B0F82E091E00E94F50E0E94E9210D +:1013C0008091E401853069F40E94191B8091E2014B +:1013D0008823B1F30E94441B882391F30E944C0A96 +:1013E000EFCF0E94510FECCF292F33272330310547 +:1013F000C9F064F42130310581F02230310509F063 +:1014000043C08DE690E020E133E042C02132310557 +:10141000F1F02232310541F137C082E190E02DE751 +:1014200033E036C099278130910541F08230910533 +:1014300041F0892B49F5ECE0F3E005C0E4EFF2E080 +:1014400002C0ECEDF2E0849190E09F0121C0643095 +:10145000D8F4E62FF0E0EE0FFF1FEE5DFE4F208187 +:10146000318189E090E014C0643070F470E0FB01D9 +:10147000EE0FFF1FE65EFE4F20813181FB01EA5E29 +:10148000FE4F808190E004C080E090E020E030E0FA +:10149000FA0131832083089580E189BD82E189BD0D +:1014A00009B400FEFDCF8091D8008F7D8093D800D5 +:1014B0008091E00082608093E0008091E00081FDF7 +:1014C000FCCF0895CF92DF92EF92FF920F931F937C +:1014D000CF93DF93EC018B016A010E94C50B811150 +:1014E00033C0C114D10439F0F60180819181081B09 +:1014F000190BC80FD91FE12CF12C0115110519F199 +:101500008091E80085FD16C08091E8008E77809379 +:10151000E800C114D10449F0F60180819181E80E00 +:10152000F91EF182E08285E00FC00E94C50B88237E +:1015300021F30AC089918093F10001501109FFEF56 +:10154000EF1AFF0ADACF80E0DF91CF911F910F9160 +:10155000FF90EF90DF90CF9008952091EB013091B4 +:10156000EC012617370748F06115710539F4209111 +:10157000E8002E772093E80001C0B90140E0611532 +:101580007105A9F12091E401222309F443C025301B +:1015900009F442C02091E80023FD40C02091E800FA +:1015A00022FD32C02091E80020FFE9CF4091F300F6 +:1015B0002091F20030E0342BFC01CF016115710560 +:1015C00059F02830310540F481918093F100615049 +:1015D00071092F5F3F4FF1CF41E02830310509F00D +:1015E00040E02091E8002E772093E800C8CF411119 +:1015F000C9CF0AC08091E401882361F0853061F091 +:101600008091E80083FD0AC08091E80082FFF2CF5C +:1016100080E0089582E0089583E0089581E00895D0 +:101620002091EB013091EC012617370748F0611546 +:10163000710539F42091E8002E772093E80001C06D +:10164000B901FC0120E06115710591F18091E4017F +:10165000882309F440C0853009F43FC08091E80038 +:1016600083FD3DC08091E80082FD2FC08091E8009D +:1016700080FFE9CF2091F3008091F20090E0922B5F +:101680006115710559F08830910540F4249120933B +:10169000F1003196615071090196F2CF21E008976F +:1016A00009F020E08091E8008E778093E800CBCFAE +:1016B0002111CCCF0AC08091E401882361F08530EC +:1016C00061F08091E80083FD0AC08091E80082FF0C +:1016D000F2CF80E0089582E0089583E0089581E0EC +:1016E0000895982F973058F59093E900981739F09E +:1016F0007091EC002091ED005091F00003C0242F78 +:10170000762F50E021FF19C03091EB003E7F3093DF +:10171000EB003091ED003D7F3093ED003091EB0018 +:1017200031603093EB007093EC002093ED00509308 +:10173000F0002091EE0027FF07C09F5FD3CF8F708E +:101740008093E90081E0089580E008958091E501AB +:1017500087FF11C08091E80082FD05C08091E401FF +:101760008111F8CF11C08091E8008B770BC0809178 +:10177000E401882349F08091E80080FFF8CF809150 +:10178000E8008E778093E80008952091E40030917E +:10179000E50095E64091EC00842F817040FF22C067 +:1017A0008091E80080FD1CC08091E401882391F0C5 +:1017B000853091F08091EB0085FD10C04091E400F0 +:1017C0005091E5004217530729F39A01915011F700 +:1017D00084E0089582E0089583E0089581E008950B +:1017E00080E008954091E80042FFDECF08950E9416 +:1017F000650C0E946D0CE0EEF0E0808181608083DA +:10180000E8EDF0E080818F77808319BCA7EDB0E030 +:101810008C918E7F8C9380818F7E80831092E301E8 +:1018200008950F931F93CF93DF930E94650C0E943E +:101830006D0CC8EDD0E088818F77888388818068BF +:10184000888388818F7D888319BC1092E40110926F +:10185000E0011092E2011092E10100EE10E0F801C7 +:1018600080818B7F808388818160888342E060E013 +:1018700080E00E94710BE1EEF0E080818E7F80833A +:10188000E2EEF0E0808181608083808188608083E7 +:10189000F80180818E7F8083888180618883DF91D9 +:1018A000CF911F910F910895E8EDF0E080818F7E38 +:1018B0008083E7EDF0E080818160808384E082BFF7 +:1018C00081E08093E3010C94110CE8EDF0E080815D +:1018D0008E7F80831092E20008951092DA001092B9 +:1018E000E10008951F920F920FB60F9211242F93CB +:1018F0003F934F935F936F937F938F939F93AF9398 +:10190000BF93EF93FF938091E10082FF0BC0809122 +:10191000E20082FF07C08091E1008B7F8093E100AD +:101920000E94D90E8091DA0080FF1FC08091D800FC +:1019300080FF1BC08091DA008E7F8093DA00809157 +:10194000D90080FF0DC080E189BD82E189BD09B465 +:1019500000FEFDCF81E08093E4010E94D40805C021 +:1019600019BC1092E4010E94E2088091E10080FF1E +:1019700019C08091E20080FF15C08091E2008E7F47 +:101980008093E2008091E20080618093E200809188 +:10199000D80080628093D80019BC85E08093E40170 +:1019A0000E94E6088091E10084FF30C08091E2004F +:1019B00084FF2CC080E189BD82E189BD09B400FEAD +:1019C000FDCF8091D8008F7D8093D8008091E10079 +:1019D0008F7E8093E1008091E2008F7E8093E20011 +:1019E0008091E20081608093E2008091E001882391 +:1019F00011F084E007C08091E30087FD02C081E020 +:101A000001C083E08093E4010E94E8088091E10036 +:101A100083FF29C08091E20083FF25C08091E1000F +:101A2000877F8093E10082E08093E4011092E001DF +:101A30008091E1008E7F8093E1008091E2008E7FB3 +:101A40008093E2008091E20080618093E20042E0B6 +:101A500060E080E00E94710B8091F00088608093CC +:101A6000F0000E94E508FF91EF91BF91AF919F9127 +:101A70008F917F916F915F914F913F912F910F9037 +:101A80000FBE0F901F9018951F920F920FB60F92D6 +:101A900011242F933F934F935F936F937F938F9373 +:101AA0009F93AF93BF93CF93DF93EF93FF93C09137 +:101AB000E900CF708091EC00D82FD17080FDD0E884 +:101AC0001092E9008091F000877F8093F000789475 +:101AD0000E94880D1092E9008091F0008860809348 +:101AE000F000CD2BCF70C093E900FF91EF91DF9113 +:101AF000CF91BF91AF919F918F917F916F915F91A6 +:101B00004F913F912F910F900FBE0F901F901895FE +:101B10001F93CF93DF93CDB7DEB7AA970FB6F89494 +:101B2000DEBF0FBECDBFE5EEF1E088E08E0F9091F5 +:101B3000F10091938E13FBCF0E9404098091E8007D +:101B400083FF1FC18091E5019091E601492F50E08C +:101B50004A30510508F015C1FA01EA5AFF4F0C94BA +:101B60008323803881F0823809F00BC18091E9012C +:101B70008F708093E9008091EB0085FB882780F9C6 +:101B80001092E90006C08091E1019091E20191116B +:101B900082609091E800977F9093E8008093F10035 +:101BA0001092F100C8C0282F2D7F09F0EAC08823C9 +:101BB00019F0823061F0E5C08091E701813009F0D1 +:101BC000E0C0933009F080E08093E2012BC0809167 +:101BD000E701811127C08091E9018F7009F4D1C01C +:101BE0008093E9002091EB0020FF1CC0933021F48A +:101BF0008091EB00806214C09091EB009061909313 +:101C0000EB0021E030E0A90102C0440F551F8A9586 +:101C1000E2F74093EA001092EA008091EB008860BE +:101C20008093EB001092E9008091E800877F86C0E6 +:101C30008111A7C01091E7011F778091E3008078A0 +:101C4000812B8093E3008091E800877F8093E800F8 +:101C50000E94A60B8091E80080FFFCCF8091E300FA +:101C600080688093E300111102C082E001C083E02C +:101C70008093E40186C08058823008F082C0809151 +:101C8000E7019091E8018C3D53E0950779F583E0F9 +:101C90008A838AE289834FB7F894DE01139620E0A5 +:101CA0003EE051E2E32FF0E050935700E49120FF33 +:101CB00003C0E295EF703F5FEF708E2F90E0EA3047 +:101CC00010F0C79601C0C0968D939D932F5F24316D +:101CD00049F74FBF8091E800877F8093E8006AE270 +:101CE00070E0CE0101960E94AD0A14C0AE014F5FB4 +:101CF0005F4F6091E9010E94F409BC01892B09F44E +:101D000040C09091E800977F9093E80089819A8184 +:101D10000E94100B8091E8008B778093E80031C01F +:101D2000803879F58091E800877F8093E800809182 +:101D3000E0018093F1008091E8008E778093E800C5 +:101D40000E94A60B1EC081111CC09091E701923029 +:101D5000C0F48091E800877F8093E8009093E001D1 +:101D60000E94A60B8091E001811106C08091E300E2 +:101D700087FD02C081E001C084E08093E4010E94FD +:101D8000F0088091E80083FF0AC08091E800877F17 +:101D90008093E8008091EB0080628093EB00AA962C +:101DA0000FB6F894DEBF0FBECDBFDF91CF911F916C +:101DB00008950895CF938091E4018823A1F0C09104 +:101DC000E900CF709091EC00892F817090FD80E840 +:101DD000C82B1092E9008091E80083FD0E94880DD5 +:101DE000CF70C093E900CF910895909369018093DB +:101DF00068010895E0916801F0916901309721F040 +:101E00000190F081E02D099480E00895E09168014F +:101E1000F0916901309721F00280F381E02D09945F +:101E20000895E0916801F0916901309721F00480F4 +:101E3000F581E02D099408952091660130916701A4 +:101E40008217930771F09093670180936601E09188 +:101E50006801F0916901309721F00680F781E02D4B +:101E600009940895209164013091650182179307C8 +:101E700071F09093650180936401E0916801F091A5 +:101E80006901309721F00084F185E02D09940895CF +:101E900008950C94480F0E945E1B0E940B040C9442 +:101EA000241CCF92DF92EF92FF920F931F93CF9358 +:101EB000DF93CDB7DEB72B970FB6F894DEBF0FBE1A +:101EC000CDBF0E9423048BE6C82E81E0D82E00E00F +:101ED00010E0E02E802F0E941105F60141916F0164 +:101EE000F42EF826B1F40F5F1F4F0E30110589F75D +:101EF0008FEF89838A831B820E94671B8160782F02 +:101F00009D838C8349815A816B818D810E94F40F5E +:101F100040C09091CD0191FF04C08B870E941705AE +:101F20008B8520E030E04F2D50E0922FBA01022E39 +:101F300002C0759567950A94E2F760FF24C02E836E +:101F4000EF8221E030E0690102C0CC0CDD1C9A95E3 +:101F5000E2F790E08C219D21892B09F420E028876D +:101F60000E94671B8160782F9A8789874E815F81E5 +:101F700068858A850E94F40FF801E559FE4F80813B +:101F8000C826C08206C02F5F3F4F2630310569F654 +:101F9000AACF0E940B1F10916A010E94FA0E181717 +:101FA000A1F00E94FA0E80936A012B960FB6F89466 +:101FB000DEBF0FBECDBFDF91CF911F910F91FF907C +:101FC000EF90DF90CF900C94F3072B960FB6F89418 +:101FD000DEBF0FBECDBFDF91CF911F910F91FF905C +:101FE000EF90DF90CF900895CF93DF93CDB7DEB71A +:101FF0002B970FB6F894DEBF0FBECDBF4F83588727 +:1020000069877A878B87DE01119686E0FD01119240 +:102010008A95E9F785E0FE01379601900D928A9541 +:10202000E1F749815A816B817C818D819E810E947B +:1020300024172B960FB6F894DEBF0FBECDBFDF91ED +:10204000CF9108950895CF93882309F4C2C0C82F73 +:10205000823859F40E94FA0E81FDBBC089E30E94C8 +:10206000CD190E949A1A89E30CC0833879F40E9432 +:10207000FA0E80FDAEC083E50E94CD190E949A1A27 +:1020800083E50E940F1ACF910C949A1A843859F460 +:102090000E94FA0E82FD9DC087E40E94CD190E9425 +:1020A0009A1A87E4EECF8CEF8C0F813A48F48C2F8C +:1020B0000E944E2181118DC08C2F0E94CD19E3CF3B +:1020C00080E28C0F883048F4C77081E001C0880F2F +:1020D000CA95EAF70E94531AD6CF8BE58C0F83304E +:1020E00078F4C53A29F0C63A31F083E890E005C0AB +:1020F00081E890E002C082E890E0CF910C941C0F40 +:1021000088E58C0F833108F064C0C83A39F1C93AC8 +:1021100041F1CA3A49F1CB3A51F1CC3A59F1CD3AB1 +:1021200061F1C03B69F1CE3A71F1CF3A79F1C13B2F +:1021300081F1C23B89F1C33B91F1C43B99F1C53BAD +:10214000A1F1C63BA9F1C73BB1F1C83BB9F1C93B0D +:10215000C1F1CA3BC9F180E090E038C082EE90E066 +:1021600035C089EE90E032C08AEE90E02FC085EB5A +:1021700090E02CC086EB90E029C087EB90E026C071 +:102180008CEC90E023C08DEC90E020C083E891E0DF +:102190001DC08AE891E01AC082E991E017C084E985 +:1021A00091E014C081E292E011C083E292E00EC09F +:1021B00084E292E00BC085E292E008C086E292E001 +:1021C00005C087E292E002C08AE292E0CF910C94CF +:1021D000320FCF910895882309F44BC0823859F407 +:1021E0000E94FA0E81FF45C089E30E94CD190E942A +:1021F0009A1A89E30CC0833871F40E94FA0E80FFAA +:1022000038C083E50E94CD190E949A1A83E50E9486 +:102210000F1A0C949A1A843859F40E94FA0E82FF0D +:1022200028C087E40E94CD190E949A1A87E4EFCF54 +:102230009CEF980F913A58F390E2980F983050F431 +:10224000877091E001C0990F8A95EAF7892F0E9463 +:10225000591ADFCF9BE5980F933020F480E090E08F +:102260000C941C0F885A833120F480E090E00C9489 +:10227000320F0895882321F00E94531A0C949A1A61 +:102280000895882321F00E94591A0C949A1A0895EF +:10229000BF92CF92DF92EF92FF920F931F93CF9353 +:1022A000DF9300D000D000D0CDB7DEB725E0FC0131 +:1022B000DE01119601900D922A95E1F7FC01D08084 +:1022C00011810281258122952F7043815481452BF4 +:1022D00009F4FCC21F3F21F4FFEFDF1609F4F6C238 +:1022E0007C012E830E942210D9821A8369817A810F +:1022F000802F0E94C919182FB92E0E947E190E94A2 +:1023000045182E81002319F00E94701A2E81EB2DA2 +:10231000E295EF70F0E0E05AFF4F0C9483238B2D91 +:10232000807F9B2D9F70F92E882319F0F29480EF07 +:10233000F822002389F0FF2009F475C280E2810FA2 +:10234000883020F48F2D0E94531A03C08F2D0E94D5 +:10235000631A0E949A1A67C2812F0E94EB10FF2015 +:1023600009F4B4C2105E8F2D183018F40E94591A67 +:1023700002C00E94691A26960FB6F894DEBF0FBEFF +:10238000CDBFDF91CF911F910F91FF90EF90DF9024 +:10239000CF90BF900C949A1A3B2D307F8B2D8F706D +:1023A000303211F08295807F112319F0113021F124 +:1023B0002CC00023B9F0222309F4A0C1213009F078 +:1023C0009DC126960FB6F894DEBF0FBECDBFDF913C +:1023D000CF911F910F91FF90EF90DF90CF90BF9022 +:1023E0000C94831A222319F0213009F46FC28E83D2 +:1023F0000E94861A8E8196C1002321F0223008F0B7 +:1024000065C27CC1211162C28DC1002321F022234B +:1024100009F474C108C2222309F484C119C22B2D06 +:1024200026952695237030E02115310521F02130C5 +:102430003105D1F04BC2002321F0812F9B2D9370E9 +:1024400002C080E090E026960FB6F894DEBF0FBE83 +:10245000CDBFDF91CF911F910F91FF90EF90DF9053 +:10246000CF90BF900C941C0F002321F0812F9B2D47 +:10247000937002C080E090E026960FB6F894DEBF1D +:102480000FBECDBFDF91CF911F910F91FF90EF90C5 +:10249000DF90CF90BF900C94320F812F002319F062 +:1024A0000E94131E02C00E947B1E26960FB6F8944F +:1024B000DEBF0FBECDBFDF91CF911F910F91FF9077 +:1024C000EF90DF90CF90BF900C94001F8B2D837006 +:1024D00009F07BC00111FAC1812F82958695877022 +:1024E000880F880F912F9F70C92ED12CE12CF12CD1 +:1024F000082E04C0CC0CDD1CEE1CFF1C0A94D2F785 +:1025000014FF12C04FE050E060E070E004C0440FE0 +:10251000551F661F771F8A95D2F7CB01BA016095C8 +:1025200070958095909503C060E070E0CB012B2DF5 +:10253000269526952370422F50E042305105D9F060 +:102540004330510569F16C297D298E299F2941303D +:10255000510551F126960FB6F894DEBF0FBECDBFE0 +:10256000DF91CF911F910F91FF90EF90DF90CF906F +:10257000BF900C946C186C297D298E299F29269672 +:102580000FB6F894DEBF0FBECDBFDF91CF911F9184 +:102590000F91FF90EF90DF90CF90BF900C94881830 +:1025A0000E946C18C701B60126960FB6F894DEBFDC +:1025B0000FBECDBFDF91CF911F910F91FF90EF9094 +:1025C000DF90CF90BF900C945018002319F08B2D02 +:1025D000817001C08695882309F478C1812F829586 +:1025E00086958770880F880F912F9F70C92ED12CE8 +:1025F000E12CF12C082E04C0CC0CDD1CEE1CFF1CC1 +:102600000A94D2F714FF12C04FE050E060E070E08F +:1026100004C0440F551F661F771F8A95D2F7CB0160 +:10262000BA01609570958095909503C060E070E068 +:10263000CB012B2D269526952370422F50E042305A +:102640005105D9F04330510569F16C297D298E2956 +:102650009F294130510551F126960FB6F894DEBFFF +:102660000FBECDBFDF91CF911F910F91FF90EF90E3 +:10267000DF90CF90BF900C9446196C297D298E294C +:102680009F2926960FB6F894DEBF0FBECDBFDF910F +:10269000CF911F910F91FF90EF90DF90CF90BF905F +:1026A0000C9462190E944619C701B60126960FB60E +:1026B000F894DEBF0FBECDBFDF91CF911F910F9178 +:1026C000FF90EF90DF90CF90BF900C942A19103FAD +:1026D000D1F118F4103E50F4A1C0123F09F463C0C8 +:1026E00008F44CC0133F09F473C098C01F708B2DC1 +:1026F0008F710023A1F00E94C318812F26960FB678 +:10270000F894DEBF0FBECDBFDF91CF911F910F9127 +:10271000FF90EF90DF90CF90BF900C943A110E9401 +:10272000E418812F26960FB6F894DEBF0FBECDBFFA +:10273000DF91CF911F910F91FF90EF90DF90CF909D +:10274000BF900C9441110023A9F02111BFC08B2D23 +:102750008F7126960FB6F894DEBF0FBECDBFDF9106 +:10276000CF911F910F91FF90EF90DF90CF90BF908E +:102770000C940919223008F0A9C0E9CF0023A9F070 +:102780008B2D8F7126960FB6F894DEBF0FBECDBF8E +:10279000DF91CF911F910F91FF90EF90DF90CF903D +:1027A000BF900C94C318002359F38B2D8F7126967C +:1027B0000FB6F894DEBF0FBECDBFDF91CF911F9152 +:1027C0000F91FF90EF90DF90CF90BF900C94E418A2 +:1027D000002399F08B2D8F7126960FB6F894DEBFEB +:1027E0000FBECDBFDF91CF911F910F91FF90EF9062 +:1027F000DF90CF90BF900C94AE1826960FB6F89449 +:10280000DEBF0FBECDBFDF91CF911F910F91FF9023 +:10281000EF90DF90CF90BF900C94A4180023A9F004 +:10282000222309F4ADCF812F26960FB6F894DEBF90 +:102830000FBECDBFDF91CF911F910F91FF90EF9011 +:10284000DF90CF90BF900C942310222309F4ADCFDA +:10285000812F26960FB6F894DEBF0FBECDBFDF9155 +:10286000CF911F910F91FF90EF90DF90CF90BF908D +:102870000C94EB104B2D4F70612FC7010E94AB02DF +:1028800026960FB6F894DEBF0FBECDBFDF91CF9175 +:102890001F910F91FF90EF90DF90CF90BF900C941D +:1028A000C8174B2D4F70612FC70126960FB6F894AD +:1028B000DEBF0FBECDBFDF91CF911F910F91FF9073 +:1028C000EF90DF90CF90BF900C94180526960FB62E +:1028D000F894DEBF0FBECDBFDF91CF911F910F9156 +:1028E000FF90EF90DF90CF90BF9008950E94701AF4 +:1028F0000E94801A0E94451A0E949A1A0E94B11FD3 +:102900000E94001F80E090E00E941C0F80E090E099 +:102910000C94320F0E94601A0C9476140E94BE1917 +:10292000292F22952F7030E02C3031054CF42A30BD +:1029300031056CF4225031092230310588F407C08A +:102940002C30310549F02F30310531F009C0803E7F +:1029500048F0803F29F406C093FB882780F908954A +:1029600080E0089581E00895CF93DF9300D000D0F8 +:102970001F92CDB7DEB70F900F900F900F900F9072 +:10298000DF91CF910895CF93DF9300D000D000D096 +:10299000CDB7DEB726960FB6F894DEBF0FBECDBF1B +:1029A000DF91CF9108951F93CF93DF93C091790169 +:1029B00016E080917A01C81799F0D0E01C9FF001D1 +:1029C0001D9FF00D1124E558FE4F40815181628119 +:1029D0007381848195810E94C3142196C770E9CFC9 +:1029E000DF91CF911F9108954091AB015091AC01BF +:1029F0006091AD017091AE018091AF019091B001F5 +:102A00000C94C3148091B00182958F7009F054C06A +:102A10008091AD01882309F44FC080917901A09184 +:102A20007A016091AB017091AC014091AE0150917F +:102A3000AF01B6E08A1709F43FC090E04115510597 +:102A4000C1F17F3F11F46F3FA1F1B89FF001B99F31 +:102A5000F00D1124E558FE4F218172132AC0208108 +:102A6000621327C02281211124C0238134812417BD +:102A7000350710F421503109241B350B283C310552 +:102A8000C0F42091B0012F7020612093B00126E0A6 +:102A9000289FF001299FF00D1124E058FE4F8081FE +:102AA0008F70806180838BEA91E00E9448110C94C2 +:102AB000D31401968770BECF0895CF92DF92EF9224 +:102AC000FF920F931F93CF93DF93CDB7DEB762973B +:102AD0000FB6F894DEBF0FBECDBF8C0185E0F801C4 +:102AE000DE011D9601900D928A95E1F7D8014C9177 +:102AF00011965C91119712966C9112971396CD9046 +:102B0000DC9014973091AB017091AC018091AE01D3 +:102B10009091AF01009709F46BC17F3F19F43F3FDB +:102B200009F466C1E090AD01EE2009F4C0C0209127 +:102B3000B001C816D90628F0F601E81BF90BCF0141 +:102B400004C0809590958C0D9D1DFF24F394883CC6 +:102B5000910578F0F12C207F09F0C6C07C2DD98A30 +:102B6000C88A89890E94B4148BEA91E00E944811B6 +:102B7000B1C0822F807F09F046C0751314C0341392 +:102B800012C0611110C02F7020612093B0010E940B +:102B9000F4148BEA91E00E9448118091B001D801B1 +:102BA00015968C932EC0CD2819F15F3F11F44F3F3D +:102BB000F9F0F62E61111CC08091790120917A0103 +:102BC00036E0821709F45AC090E0389FF001399F2F +:102BD000F00D1124E558FE4F7181571306C0708126 +:102BE000471303C07281711103C001968770E9CF4A +:102BF000F62E662309F418C18091B001816080939C +:102C0000B001F12C11C1751308C0341306C0611155 +:102C100004C08091B001D801C3C04D875E878D8507 +:102C20009E856A8B0E948E146A898823E1F166234F +:102C3000D1F12091B001822F82958F7090E00297A0 +:102C400074F08091AB019091AC0198878F831986C5 +:102C5000DB86CA862C87CE0107960E94481186E043 +:102C6000F801ABEAB1E001900D928A95E1F70E947C +:102C700002150E94F414FF24F394D6C04D875E879A +:102C80008D859E850E94BE19292F22952F7030E0D8 +:102C9000223031050CF0BCC09F7009F0B6C0805ED8 +:102CA000883008F4C1C0C8010E944811E4CFC8169A +:102CB000D90608F453C0F601E81BF90BCF01883C94 +:102CC000910508F450C0F12C7C2DD98AC88A8989D5 +:102CD0000E94B414EBEAF1E086E0DF011D928A95D0 +:102CE000E9F70E94F414A0C0751314C0341312C085 +:102CF000611110C08091B001F8018583C8010E9464 +:102D0000481186E0EBEAF1E0DF011D928A95E9F7D0 +:102D1000FE2C8AC04D875E878D859E856A8B0E94BA +:102D20008E146A89882309F4BECF662309F4BBCFC9 +:102D30002091B001822F82958F7090E002970CF461 +:102D40008ECF8091AB019091AC019A8389831B82D5 +:102D5000DD82CC822E83CE0101967FCF8095909527 +:102D60008C0D9D1DACCFF62E662309F49CCF7513F8 +:102D70002EC034132CC02091B00120FD1FC0822F23 +:102D800082958F70D9F0D80115962C9315978F30B6 +:102D900049F08F5F982F9295907F822F8F70892BAB +:102DA00015968C93C8010E94481186E0F801ABEAA1 +:102DB000B1E001900D928A95E1F793CF86E0F8019A +:102DC000ABEAB1E001900D928A95E1F72DC04D87F5 +:102DD0005E878D859E850E948E14811140CF8091E3 +:102DE000B00181608093B001C8010E9448111CC0ED +:102DF000662309F458CF4D875E878D859E850E9496 +:102E00008E14882309F44FCF2ACF811148CF0CC0EC +:102E1000243031050CF047CF9F7009F440CFF80102 +:102E20009581907F09F03BCF8F2D62960FB6F89475 +:102E3000DEBF0FBECDBFDF91CF911F910F91FF90ED +:102E4000EF90DF90CF9008951F93CF93DF93CDB78E +:102E5000DEB72C970FB6F894DEBF0FBECDBF4F8301 +:102E6000588769877A878B879C87CE0107960E944F +:102E70005D15882369F08F8198852A853B85232BF2 +:102E8000F1F19F3F09F063C08F3F09F060C037C088 +:102E900086E0FE013796DE01119601900D928A952B +:102EA000E1F76F817885EA85FB85309741F17F3FB7 +:102EB00011F46F3F21F120917A0130E0C9010196B0 +:102EC000877099274091790150E08417950709F49C +:102ED00047C069837A83FD83EC8396E0929FD0019B +:102EE000939FB00D1124A558BE4FFE01319601905D +:102EF0000D929A95E1F780937A010E94D31416E01F +:102F00008091790190917A018917C1F1189FC001D0 +:102F1000112485589E4F0E945D15882379F1E09118 +:102F200079011E9FF0011124E558FE4F4081518127 +:102F300062817381848195810E94C314809179019B +:102F400090E001968770992780937901D9CF4F81BE +:102F5000588569857A858B859C850E94C314CFCF5F +:102F60000E948A1410927A0110927901EBEAF1E042 +:102F700086E0DF011D928A95E9F7C1CF2C960FB646 +:102F8000F894DEBF0FBECDBFDF91CF911F910895A2 +:102F9000EF92FF920F931F93CF93DF938C01892BB6 +:102FA00009F46CC0F12CEE24E394E8012196F801B9 +:102FB0008491843740F4843008F051C0813081F02E +:102FC000823019F15BC0853709F444C0A8F19CE751 +:102FD000980F903708F052C08F770E94EB1041C0D5 +:102FE0000E5F1F4FFE01C49180E28C0F883048F4C1 +:102FF000C7708E2D01C0880FCA95EAF70E94731A18 +:1030000014C08C2F0E9423102DC00E5F1F4FFE0195 +:10301000C49180E28C0F883058F4C7708E2D01C0A7 +:10302000880FCA95EAF70E94791A0E949A1A1AC064 +:103030008C2F0E94EB1016C00E5F1F4FFE01C49133 +:10304000CC2381F08FE99FE00197F1F700C00000E9 +:10305000C150F6CF0E5F1F4FFE01F49003C00E94D7 +:1030600023108E018F2D882309F49FCFEFE9FFE015 +:103070003197F1F700C000008150F5CFDF91CF917B +:103080001F910F91FF90EF90089508956093B501FF +:103090007093B6018093B7019093B8010C947614A5 +:1030A0000F931F930091B5011091B6012091B701C4 +:1030B0003091B801DC01CB01802B912BA22BB32BDB +:1030C0008093B5019093B601A093B701B093B80176 +:1030D0001F910F910C9476140F931F930091B501DB +:1030E0001091B6012091B7013091B801DC01CB01FC +:1030F00080239123A223B3238093B5019093B6013B +:10310000A093B701B093B8011F910F910C9476145E +:103110000F931F930091B5011091B6012091B70153 +:103120003091B801DC01CB0180279127A227B3277A +:103130008093B5019093B601A093B701B093B80105 +:103140001F910F910C9476141092B1011092B2015C +:103150001092B3011092B4010C94761441E050E047 +:1031600060E070E004C0440F551F661F771F8A950A +:10317000D2F74093B1015093B2016093B3017093C1 +:10318000B4010C94761441E050E060E070E004C0BB +:10319000440F551F661F771F8A95D2F78091B101A2 +:1031A0009091B201A091B301B091B401482B592B79 +:1031B0006A2B7B2B4093B1015093B2016093B30112 +:1031C0007093B4010C94761441E050E060E070E03C +:1031D00004C0440F551F661F771F8A95D2F740958C +:1031E0005095609570958091B1019091B201A09138 +:1031F000B301B091B401482359236A237B23409340 +:10320000B1015093B2016093B3017093B4010C9477 +:10321000761441E050E060E070E004C0440F551FB8 +:10322000661F771F8A95D2F78091B1019091B20104 +:10323000A091B301B091B401482759276A277B2791 +:103240004093B1015093B2016093B3017093B40104 +:103250000C9476140F931F930091B1011091B20159 +:103260002091B3013091B401DC01CB01802B912B73 +:10327000A22BB32B8093B1019093B201A093B30121 +:10328000B093B4011F910F910C9476140F931F9378 +:103290000091B1011091B2012091B3013091B401BC +:1032A000DC01CB0180239123A223B3238093B101BE +:1032B0009093B201A093B301B093B4011F910F9109 +:1032C0000C9476140F931F930091B1011091B201E9 +:1032D0002091B3013091B401DC01CB01802791270B +:1032E000A227B3278093B1019093B201A093B301B9 +:1032F000B093B4011F910F910C9476140895CF925E +:10330000DF92EF92FF920F931F93CF93DF938C0185 +:10331000C090B501D090B601E090B701F090B8012F +:103320008091B1019091B201A091B301B091B4012B +:10333000C82AD92AEA2AFB2ACFE1D0E0D701C60160 +:103340000C2E04C0B695A795979587950A94D2F749 +:1033500080FF06C0B8018C2F0E945807019721F406 +:10336000219760F780E001C08C2FDF91CF911F91F2 +:103370000F91FF90EF90DF90CF900895CF93DF9360 +:10338000EC010E947F19BE010E945807DF91CF9186 +:103390000895CB010E94BE19089590910C019923C4 +:1033A00021F090910D01911109C020910E013091F1 +:1033B0000F01F90132969FEF40E01FC0982F9695BC +:1033C000969596959F3050F5E0910E01F0910F0182 +:1033D000E90FF11D877021E030E0A90102C0440F20 +:1033E000551F8A95E2F7CA019181892B818308953F +:1033F0009F3F39F04F5F4E3041F051915813F8CF55 +:103400000DC05111F7CF942FF5CF9F3F39F0F9013F +:10341000E90FF11D97FDFA95828308950895909123 +:103420000C01992321F090910D01911109C0209177 +:103430000E0130910F01F9013296205F3F4F1FC0FE +:10344000982F9695969596959F30F0F4E0910E0101 +:10345000F0910F01E90FF11D877021E030E0A90123 +:1034600002C0440F551F8A95E2F7CA0180959181E9 +:103470008923818308953196E217F30729F090811B +:103480009813F9CF1082F7CF089581E090E0E09192 +:103490000E01F0910F01E80FF91F108201968031A3 +:1034A0009105A9F708959091CC01892B8093CC01C7 +:1034B000089580959091CC0189238093CC01089543 +:1034C0001092CC0108959091CB01892B8093CB0170 +:1034D000089580959091CB0189238093CB01089525 +:1034E0001092CB0108959091CA01892B8093CA0153 +:1034F000089580959091CA0189238093CA01089507 +:103500001092CA0108958093B90108951092B901EB +:10351000089580910E0190910F01FC0131969C015C +:10352000205F3F4F80E0919191118F5FE217F30789 +:10353000D1F70895E0910E01F0910F018091CC0137 +:103540008083E0910E01F0910F0190818091CB0179 +:10355000892B8083E0910E01F0910F019081809181 +:10356000CA01892B80838091B901882361F0E091A1 +:103570000E01F0910F019081892B80830E94891A9E +:1035800081111092B90180910E0190910F010C945C +:10359000060FCF92DF92EF92FF926C01EE24FF2490 +:1035A000C114D104E104F10421F0C701B60120E106 +:1035B00001C020E0C72ED82EE92EFF24C114D1046B +:1035C000E104F10419F0285FC701B6016B017C0129 +:1035D00054E0F694E794D794C7945A95D1F7C11460 +:1035E000D104E104F10419F02C5FC701B6016B01AD +:1035F0007C0142E0F694E794D794C7944A95D1F7BA +:10360000C114D104E104F10419F02E5FC701B60121 +:10361000DC01CB01B695A79597958795892B8A2BC9 +:103620008B2B09F02F5F822FFF90EF90DF90CF90D0 +:1036300008958091E401843021F11092CE0120E4BC +:1036400088E190E00FB6F894A895809360000FBED3 +:103650002093600080E00E94F30783B7817F84603D +:1036600083BF83B7816083BF7894889583B78E7F4B +:1036700083BF88E10FB6F8948093600010926000D9 +:103680000FBE089508950895CF930E94421B0E9493 +:1036900023040E94431BC0E08C2F0E94110581115E +:1036A00004C0CF5FCE30C1F701C081E0CF91089553 +:1036B0000E948A140E94FA0E0C94F30782E084BDE3 +:1036C00093E095BD9AEF97BD80936E0008952FB754 +:1036D000F8948091CF019091D001A091D101B09147 +:1036E000D2012FBF0895CF92DF92EF92FF920F93F6 +:1036F0001F932FB7F8944091CF015091D001609162 +:10370000D1017091D2012FBF6A017B01EE24FF2409 +:103710008C0120E030E0C016D106E206F30610F47A +:10372000415051099A01281B390BC9011F910F9172 +:10373000FF90EF90DF90CF9008951F920F920FB6F9 +:103740000F9211248F939F93AF93BF938091CF01DA +:103750009091D001A091D101B091D2010196A11D0B +:10376000B11D8093CF019093D001A093D101B0936C +:10377000D201BF91AF919F918F910F900FBE0F908B +:103780001F9018950E94F70BF8942FEF87EA91E6A7 +:10379000215080409040E1F700C0000087E090EBAE +:1037A000DC018093EE019093EF01A093F001B093C0 +:1037B000F1019CE088E10FB6F894A8958093600031 +:1037C0000FBE90936000FFCFEF92FF920F931F9375 +:1037D000CF93DF93D82FC0E08C2F0E94110500E01B +:1037E00010E0E82EF12CC701002E02C095958795B8 +:1037F0000A94E2F780FD06C00F5F1F4F06301105E7 +:1038000091F709C0602F7C2F80E00E941905D81322 +:10381000F3CF81E004C0CF5FCE30F1F680E0DF91DE +:10382000CF911F910F91FF90EF900895CF93C82FE4 +:103830008CE20E94E41B882321F08C2FCF910C9402 +:10384000E41B80E0CF910895CF930E946B1D8111FE +:1038500002C00E94511DC5E6C15049F00E942304D8 +:103860008FE39CE90197F1F700C00000F5CF89E2F2 +:103870000E94161C811113C18AE20E94161C81113C +:103880000E94511D85E00E94161C81110E94C21BDE +:103890000E94761D8093CD0187E00E94161C88232C +:1038A000A9F18BE10E94161C882351F08091CD0173 +:1038B00081FB222720F991E0922790FB81F90EC02D +:1038C0008EE00E94161C882361F08091CD0182FB5E +:1038D000222720F991E0922790FB82F98093CD0175 +:1038E00015C080E10E94161C9091CD01882341F003 +:1038F00093FB222720F981E0822780FB93F904C003 +:10390000892F809580FB90F99093CD018091CD0116 +:103910000E947A1D0E94881D8093ED0180EE0E9416 +:10392000161C882341F08091ED01982F909590FB13 +:1039300080F98093ED0189E30E94161C882359F0D9 +:103940008091ED0181FB222720F991E0922790FBE5 +:1039500081F98093ED0182EE0E94161C882359F0B4 +:103960008091ED0182FB222720F991E0922790FBC4 +:1039700082F98093ED0186EE0E94161C882359F08F +:103980008091ED0183FB222720F991E0922790FBA3 +:1039900083F98093ED0183EE0E94161C882359F071 +:1039A0008091ED0184FB222720F991E0922790FB82 +:1039B00084F98093ED0185E30E94161C882359F059 +:1039C0008091ED0185FB222720F991E0922790FB61 +:1039D00085F98093ED0181E30E94161C882359F03C +:1039E0008091ED0186FB222720F991E0922790FB40 +:1039F00086F98093ED0181E10E94161C882359F01D +:103A00008091ED0187FB222720F991E0922790FB1E +:103A100087F98093ED018091ED010E948C1D8091CA +:103A2000ED0187FB882780F980930D0187E20E94D2 +:103A3000161CC82F8EE10E94161C8111C2608FE1F6 +:103A40000E94161C8111C46080E20E94161C811124 +:103A5000C86081E20E94161C8111C06182E20E944E +:103A6000161C8111C06283E20E94161C8111C06481 +:103A700084E20E94161C882311F0C06802C0CC2387 +:103A800029F08C2F0E94831D6C2F03C00E947F1D84 +:103A9000682F70E080E090E0CF910C944618CF91B1 +:103AA00008956DEE7EEF80E090E00E94BD2360E01F +:103AB00082E090E00E94AB2360E083E090E00E940F +:103AC000AB2360E084E090E00E94AB2360E085E0FF +:103AD00090E00C94AB2380E090E00E94A52321E0CD +:103AE0008D3E9E4F09F020E0822F089582E090E005 +:103AF0000C949D23682F82E090E00C94AB2383E02C +:103B000090E00C949D23682F83E090E00C94AB230D +:103B100084E090E00C949D23682F84E090E00C9466 +:103B2000AB238091D50180FF0BC06091130185E02C +:103B3000689FB001112475956795759567952BC0A1 +:103B400081FF09C06091130185E0689FB0011124D5 +:103B50007595679520C082FF07C06091130185E0CD +:103B6000689FB001112417C09091D6019923D1F01C +:103B700060911201961788F72091130185E0289F24 +:103B800090011124929FA001939F500D112470E089 +:103B9000CA010E946F236038710540F461157105F8 +:103BA00039F002C065E070E0862F08958FE7089530 +:103BB00081E008958091D50180FF08C060911101D6 +:103BC00070E0759567957595679521C081FF06C072 +:103BD0006091110170E07595679519C082FF04C06E +:103BE0006091110170E010C09091D6019923C1F04D +:103BF000609110019617A0F780911101899FC00173 +:103C0000112470E00E946F236038710528F461155B +:103C1000710521F0862F08958FE7089581E00895BA +:103C200061E070E0F4CF803F21F40E94911D819506 +:103C300004C0813F29F40E94911D8093D901089509 +:103C4000823F21F40E94911D819504C0833F29F495 +:103C50000E94911D8093D8010895893F19F40E9414 +:103C6000DA1D05C08A3F31F40E94DA1D81958093E8 +:103C7000DA0108958B3F21F40E94DA1D819504C07A +:103C80008C3F29F40E94DA1D8093DB010895843F64 +:103C900021F48091D701816017C0853F21F4809184 +:103CA000D701826011C0863F21F48091D7018460E2 +:103CB0000BC0873F21F48091D701886005C0883F01 +:103CC00031F48091D70180618093D70108958D3FB1 +:103CD00021F48091D50181600BC08E3F21F4809149 +:103CE000D501826005C08F3F29F48091D5018460A1 +:103CF0008093D5010895803F39F48091D90187FFE1 +:103D00006CC01092D90169C0813F29F48091D9011A +:103D10001816BCF362C09091D801823F29F497FF36 +:103D20005CC01092D80159C0833F19F41916CCF326 +:103D300054C0893F41F48091DA0118160CF04DC04F +:103D40001092DA014AC08A3F29F48091DA0187FF94 +:103D500044C0F6CF8B3F39F48091DB0187FF3DC033 +:103D60001092DB013AC08C3F29F48091DB011816D8 +:103D7000BCF333C0843F21F48091D7018E7F17C0FC +:103D8000853F21F48091D7018D7F11C0863F21F4BA +:103D90008091D7018B7F0BC0873F21F48091D701A1 +:103DA000877F05C0883F31F48091D7018F7E809353 +:103DB000D70113C08D3F21F48091D5018E7F0BC0B8 +:103DC0008E3F21F48091D5018D7F05C08F3F29F46E +:103DD0008091D5018B7F8093D5018091D80181118D +:103DE0000EC08091D90181110AC08091DA01811140 +:103DF00006C08091DB01811102C01092D6010895A6 +:103E000087ED91E00E94110F0E94671B9093D401EF +:103E10008093D30108951F93CF93DF938091D301B3 +:103E20009091D4010E94731BAC019091D60199230B +:103E300021F02091140130E006C0209115018AE0A4 +:103E4000289F900111244217530708F486C08091DF +:103E5000D801C091D901D091DA011091DB01811113 +:103E600007C0C11176C0D11174C0111172C075C0E4 +:103E70009F3F19F09F5F9093D601181624F40E947B +:103E8000911D8093D8018091D80187FF05C00E94C1 +:103E9000911D81958093D8011C1624F40E94911DD8 +:103EA0008093D9018091D90187FF05C00E94911D9F +:103EB00081958093D9016091D801662339F1C09131 +:103EC000D901CC2319F1772767FD7095872F972F9C +:103ED0000E94802223E333E343E35FE30E94E42272 +:103EE0000E944D226093D8016C2F772767FD709553 +:103EF000872F972F0E94802223E333E343E35FE37E +:103F00000E94E4220E944D226093D9011D1624F4E0 +:103F10000E94DA1D8093DA018091DA0187FF05C0E3 +:103F20000E94DA1D81958093DA01111624F40E9413 +:103F3000DA1D8093DB018091DB0187FF05C00E94C1 +:103F4000DA1D81958093DB01DF91CF911F910C9455 +:103F5000001F9F3F09F08ECF96CFDF91CF911F9129 +:103F60000895E7EDF1E085E0DF011D928A95E9F71C +:103F70001092D6011092D5010895833081F128F472 +:103F8000813059F08230D1F00895853009F449C06C +:103F9000B8F1863009F456C0089580911501262F96 +:103FA00030E0280F311D2F3F310524F4680F609356 +:103FB000150108958FEF80931501089580911401E4 +:103FC000262F30E0280F311D2F3F310524F4680FD4 +:103FD0006093140108958FEF8093140108958091E8 +:103FE0001301262F30E0280F311D2F3F310524F417 +:103FF000680F6093130108958FEF80931301089564 +:1040000080911201262F30E0280F311D2F3F3105FE +:1040100024F4680F6093120108958FEF80931201CA +:10402000089580911101262F30E0280F311D2F3F78 +:10403000310524F4680F6093110108958FEF809388 +:104040001101089580911001262F30E0280F311DB5 +:104050002F3F310524F4680F6093100108958FEF0E +:10406000809310010895833011F128F4813049F0D4 +:10407000823091F00895853081F120F18630C1F1D0 +:10408000089580911501681720F4861B809315010F +:10409000089510921501089580911401681720F475 +:1040A000861B809314010895109214010895809145 +:1040B0001301681720F4861B809313010895109252 +:1040C0001301089580911201681720F4861B8093D4 +:1040D000120108951092120108958091110168173C +:1040E00020F4861B80931101089510921101089508 +:1040F00080911001681720F4861B809310010895A9 +:104100001092100108950F931F938D3109F46BC025 +:1041100008F03FC08E3009F47FC0C0F4873009F446 +:1041200069C068F4863009F0B1C08091CD01817F0B +:104130008E7F8093CD0181E08093DD01A8C088301F +:1041400009F4A2C08B3009F49FC0A0C0863109F4E5 +:104150009BC078F4803109F472C0813109F096C0B7 +:104160000E948A1490910D0181E0892780930D01AE +:104170008BC0893109F488C08B3109F087C08091E8 +:10418000CD0181FB222720F991E0922790FB81F954 +:104190004CC0853309F470C048F4873209F46CC010 +:1041A00008F459C0893209F467C070C0833438F408 +:1041B0008A3308F04EC0883309F466C067C0833480 +:1041C00009F45AC0883409F061C00E948A140FEFC4 +:1041D00013ED20E3015010402040E1F700C0000043 +:1041E0000E94C21B51C00E9407220E94FA0E0E9428 +:1041F000F3074AC09091CD01892F8095817080FB93 +:1042000090F929F0966098609093CD0140C0997F15 +:10421000977F9093CD0138C08091CD0182FB2227FA +:1042200020F991E0922790FB82F98093CD019923A8 +:1042300059F18091CD0181608093CD0125C080919D +:10424000CD0183FB222720F991E0922790FB83F98F +:10425000ECCF895301C08D5141E050E060E070E047 +:104260008A019B0104C0000F111F221F331F8A9572 +:10427000D2F7C901B80104C061E070E080E090E0CD +:104280000E9446180E948A1481E001C080E01F91BC +:104290000F91089580E0089580E00895CF93C82F8E +:1042A0008091DD01813079F018F08230E9F187C02A +:1042B000E0910E01F0910F018081813169F082322D +:1042C00009F07FC009C0E0910E01F0910F018081DB +:1042D000813111F0823261F48C2F0E944A218111C8 +:1042E00004C08C2F0E9483201DC081E090E01AC082 +:1042F0008C2F0E944C21811114C0C43179F048F4F4 +:10430000CB3079F0C03109F060C082E08093DD01EC +:1043100008C0C93219F0C83321F057C01092DD012E +:1043200054C081E0817053C0C93289F118F5C4319D +:1043300071F1A8F4C73009F046C08AE080931501F6 +:1043400094E19093140193E09093130180931201F0 +:1043500088E08093110188E28093100134C0CE512F +:10436000C63088F5EC2FF0E0E65DFE4F808180934B +:10437000DC0129C0CE34E9F020F4CB3421F56AE029 +:1043800013C0C13579F0C235F1F461E00DC0809100 +:10439000DC01882319F01092DC0115C081E08093C4 +:1043A000DD0115C061E006C08091DC010E94BD1FE7 +:1043B0000AC06AE08091DC010E94332004C01092A0 +:1043C000DD0180E004C081E002C080E0ABCFCF918E +:1043D0000895E1E8F0E080818860808380818160D9 +:1043E00080838FB7F89493E09093890090ED909339 +:1043F00088008FBF0895EFE6F0E0808182608083BF +:104400000895EFE6F0E080818D7F80830895EFE6E8 +:10441000F0E0908182E08927808308951F920F92B7 +:104420000FB60F9211242F933F934F935F936F9387 +:104430007F938F939F93AF93BF93EF93FF9380915D +:10444000DE019091DF0101969093DF018093DE0100 +:10445000811103C082E00E94F307E091DF01E6953D +:10446000E695F0E0E657FB4FE4918091DE018E1374 +:1044700003C080E00E94F307FF91EF91BF91AF91DD +:104480009F918F917F916F915F914F913F912F916C +:104490000F900FBE0F901F90189504D06894B11123 +:1044A0008DC0089570D088F09F5790F0B92F99274C +:1044B000B751A0F0D1F0660F771F881F991F1AF02F +:1044C000BA95C9F712C0B13081F077D0B1E0089544 +:1044D00074C0672F782F8827B85F39F0B93FCCF3C5 +:1044E000869577956795B395D9F73EF49095809525 +:1044F000709561957F4F8F4F9F4F0895E89409C045 +:1045000097FB3EF490958095709561957F4F8F4F06 +:104510009F4F9923A9F0F92F96E9BB279395F6951C +:10452000879577956795B795F111F8CFFAF4BB0F9A +:1045300011F460FF1BC06F5F7F4F8F4F9F4F16C0FE +:10454000882311F096E911C0772321F09EE8872F88 +:10455000762F05C0662371F096E8862F70E060E044 +:104560002AF09A95660F771F881FDAF7880F9695BD +:10457000879597F9089557FD9058440F551F59F0A6 +:104580005F3F71F04795880F97FB991F61F09F3F40 +:1045900079F087950895121613061406551FF2CF69 +:1045A0004695F1DF08C0161617061806991FF1CFB9 +:1045B00086957105610508940895E894BB276627E0 +:1045C0007727CB0197F908950BD078C069D028F0F0 +:1045D0006ED018F0952309F05AC05FC01124EECFB9 +:1045E000CADFA0F3959FD1F3950F50E0551F629F4E +:1045F000F001729FBB27F00DB11D639FAA27F00D3C +:10460000B11DAA1F649F6627B00DA11D661F829F62 +:104610002227B00DA11D621F739FB00DA11D621F47 +:10462000839FA00D611D221F749F3327A00D611D64 +:10463000231F849F600D211D822F762F6A2F112446 +:104640009F5750408AF0E1F088234AF0EE0FFF1F99 +:10465000BB1F661F771F881F91505040A9F79E3FD0 +:10466000510570F014C0AACF5F3FECF3983EDCF325 +:10467000869577956795B795F795E7959F5FC1F70D +:10468000FE2B880F911D9695879597F9089597F9B8 +:104690009F6780E870E060E008959FEF80EC0895E8 +:1046A00000240A9416161706180609060895002411 +:1046B0000A9412161306140605060895092E03948B +:1046C000000C11F4882352F0BB0F40F4BF2B11F4FF +:1046D00060FF04C06F5F7F4F8F4F9F4F089597FB20 +:1046E000072E16F4009407D077FD09D00E94892385 +:1046F00007FC05D03EF4909581959F4F08957095E5 +:1047000061957F4F0895EE0FFF1F0590F491E02D06 +:104710000994AA1BBB1B51E107C0AA1FBB1FA61708 +:10472000B70710F0A61BB70B881F991F5A95A9F75A +:1047300080959095BC01CD010895F999FECF92BD69 +:1047400081BDF89A992780B50895A8E1B0E042E0CC +:1047500050E00C94C523262FF999FECF92BD81BD60 +:10476000F89A019700B4021639F01FBA20BD0FB6AF +:10477000F894FA9AF99A0FBE08950196272F0E948D +:10478000AC230C94AB23DC01CB01FC01F999FECFE7 +:1047900006C0F2BDE1BDF89A319600B40D924150C9 +:0A47A0005040B8F70895F894FFCFD9 +:1047AA002002F507830860082C08F8070101BA01FE +:1047BA0028080A03140A3F4D36394B04FE03C8037E +:1047CA008F0322033B0354036D030102030405060E +:0447DA0007080900C3 +:00000001FF -- cgit v1.2.1 From ca9b85f7021ed1338de5af0fd30c6095522a1197 Mon Sep 17 00:00:00 2001 From: skullY Date: Thu, 28 Apr 2016 20:06:43 -0700 Subject: Bring the clueboard firmware size down --- keyboard/clueboard1/Makefile | 11 ++++++----- keyboard/clueboard2/Makefile | 13 +++++++------ keyboard/cluepad/Makefile | 6 +++--- 3 files changed, 16 insertions(+), 14 deletions(-) diff --git a/keyboard/clueboard1/Makefile b/keyboard/clueboard1/Makefile index 50cde1517b..7192a9734c 100644 --- a/keyboard/clueboard1/Makefile +++ b/keyboard/clueboard1/Makefile @@ -114,15 +114,16 @@ OPT_DEFS += -DBOOTLOADER_SIZE=4096 # comment out to disable the options. # BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) -# MOUSEKEY_ENABLE = yes # Mouse keys(+4700) +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 -# MIDI_ENABLE = YES # MIDI controls -# UNICODE_ENABLE = YES # Unicode -# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no +RGBLIGHT_ENABLE = no # Enable keyboard underlight functionality +MIDI_ENABLE = no # MIDI controls +UNICODE_ENABLE = no # Unicode +BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID # Optimize size but this may cause error "relocation truncated to fit" diff --git a/keyboard/clueboard2/Makefile b/keyboard/clueboard2/Makefile index 788c204872..bcce8ac9fa 100644 --- a/keyboard/clueboard2/Makefile +++ b/keyboard/clueboard2/Makefile @@ -114,16 +114,17 @@ OPT_DEFS += -DBOOTLOADER_SIZE=4096 # comment out to disable the options. # BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) -# MOUSEKEY_ENABLE = yes # Mouse keys(+4700) +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 -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -# MIDI_ENABLE = YES # MIDI controls -# UNICODE_ENABLE = YES # Unicode -# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID +RGBLIGHT_ENABLE = no # 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) diff --git a/keyboard/cluepad/Makefile b/keyboard/cluepad/Makefile index cfa130d75a..9d4ddc07fb 100644 --- a/keyboard/cluepad/Makefile +++ b/keyboard/cluepad/Makefile @@ -115,9 +115,9 @@ OPT_DEFS += -DBOOTLOADER_SIZE=4096 # BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) # MOUSEKEY_ENABLE = yes # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = yes # Console for debug(+400) -COMMAND_ENABLE = yes # Commands for debug and configuration +# 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 BACKLIGHT_ENABLE = yes # Enable numpad's backlight functionality RGBLIGHT_ENABLE = yes -- cgit v1.2.1 From 27d24faf396367d9f8fadd86324e584b5403d261 Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Thu, 28 Apr 2016 23:10:40 -0400 Subject: adds condition to one last audio ref in planck default --- keyboard/planck/keymaps/default/keymap.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/keyboard/planck/keymaps/default/keymap.c b/keyboard/planck/keymaps/default/keymap.c index fa9c3915a8..e120d358a4 100644 --- a/keyboard/planck/keymaps/default/keymap.c +++ b/keyboard/planck/keymaps/default/keymap.c @@ -325,7 +325,9 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) layer_off(_LOWER); layer_off(_ADJUST); layer_off(_MUSIC); - stop_all_notes(); + #ifdef AUDIO_ENABLE + stop_all_notes(); + #endif layer_on(_PLOVER); if (!eeconfig_is_enabled()) { eeconfig_init(); -- cgit v1.2.1 From 2bbf3d5820734eabbcf47c3072be6fdcaa9e36cc Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Thu, 28 Apr 2016 23:23:33 -0400 Subject: stops forcing debug_action --- tmk_core/common/action.c | 8 ++++---- tmk_core/common/action_layer.c | 8 ++++---- tmk_core/common/action_macro.c | 8 ++++---- tmk_core/common/action_tapping.c | 8 ++++---- 4 files changed, 16 insertions(+), 16 deletions(-) diff --git a/tmk_core/common/action.c b/tmk_core/common/action.c index 0162fbd632..f9e6c17dc3 100644 --- a/tmk_core/common/action.c +++ b/tmk_core/common/action.c @@ -27,11 +27,11 @@ along with this program. If not, see . #include "action_util.h" #include "action.h" -//#ifdef DEBUG_ACTION +#ifdef DEBUG_ACTION #include "debug.h" -//#else -//#include "nodebug.h" -//#endif +#else +#include "nodebug.h" +#endif void action_exec(keyevent_t event) diff --git a/tmk_core/common/action_layer.c b/tmk_core/common/action_layer.c index 845fbbb210..63fa2b5ae4 100644 --- a/tmk_core/common/action_layer.c +++ b/tmk_core/common/action_layer.c @@ -4,11 +4,11 @@ #include "util.h" #include "action_layer.h" -//#ifdef DEBUG_ACTION +#ifdef DEBUG_ACTION #include "debug.h" -//#else -//#include "nodebug.h" -//#endif +#else +#include "nodebug.h" +#endif /* diff --git a/tmk_core/common/action_macro.c b/tmk_core/common/action_macro.c index cc78c82327..7726b11907 100644 --- a/tmk_core/common/action_macro.c +++ b/tmk_core/common/action_macro.c @@ -19,11 +19,11 @@ along with this program. If not, see . #include "action_macro.h" #include "wait.h" -//#ifdef DEBUG_ACTION +#ifdef DEBUG_ACTION #include "debug.h" -//#else -//#include "nodebug.h" -//#endif +#else +#include "nodebug.h" +#endif #ifndef NO_ACTION_MACRO diff --git a/tmk_core/common/action_tapping.c b/tmk_core/common/action_tapping.c index 6b6fa1dfe2..e6343e6da7 100644 --- a/tmk_core/common/action_tapping.c +++ b/tmk_core/common/action_tapping.c @@ -6,11 +6,11 @@ #include "keycode.h" #include "timer.h" -//#ifdef DEBUG_ACTION +#ifdef DEBUG_ACTION #include "debug.h" -//#else -//#include "nodebug.h" -//#endif +#else +#include "nodebug.h" +#endif #ifndef NO_ACTION_TAPPING -- cgit v1.2.1 From 66e0323881a5a3da65e14daeec41a1e9cfbda431 Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Fri, 29 Apr 2016 12:42:55 -0400 Subject: removes extra voices, updates .hex files --- keyboard/planck/keymaps/default/keymap.c | 2 +- keyboard/planck/planck_pcb_r4.hex | 3159 ++++++++++---------- keyboard/planck/planck_pcb_r4_w_bootloader.hex | 3159 ++++++++++---------- keyboard/preonic/keymaps/default/keymap.c | 2 +- keyboard/preonic/preonic_pcb_r1.hex | 3328 +++++++++++----------- keyboard/preonic/preonic_pcb_r1_w_bootloader.hex | 3071 ++++++++++---------- quantum/audio/voices.c | 42 +- 7 files changed, 6370 insertions(+), 6393 deletions(-) diff --git a/keyboard/planck/keymaps/default/keymap.c b/keyboard/planck/keymaps/default/keymap.c index e120d358a4..e7a9ea9e4c 100644 --- a/keyboard/planck/keymaps/default/keymap.c +++ b/keyboard/planck/keymaps/default/keymap.c @@ -365,7 +365,7 @@ void play_goodbye_tone() } uint8_t starting_note = 0x0C; -int offset = 7; +int offset = 0; void process_action_user(keyrecord_t *record) { diff --git a/keyboard/planck/planck_pcb_r4.hex b/keyboard/planck/planck_pcb_r4.hex index 889af7f225..bd68d9e904 100644 --- a/keyboard/planck/planck_pcb_r4.hex +++ b/keyboard/planck/planck_pcb_r4.hex @@ -1,73 +1,73 @@ -:100000000C94FE040C9442050C9442050C94420599 -:100010000C9442050C9442050C9442050C94420544 -:100020000C9442050C9442050C94A6180C94781973 -:100030000C94DB270C9442050C9442050C94420569 -:100040000C9442050C9442050C9442050C94420514 -:100050000C9442050C9443280C9442050C944205E0 -:100060000C9442050C9442050C9442050C944205F4 -:100070000C9442050C9442050C9442050C944205E4 -:100080000C94D10E0C9442050C9442050C9442053C -:100090000C9442050C9442050C9442050C944205C4 -:1000A0000C9442050C9442050C9442059D05AD0547 -:1000B000BF05CF05D505E405F005F60504060D06D8 -:1000C0001E062E06340664069013901390139013A8 -:1000D000901390139013901390139013A713A713DA -:1000E000A713A713A713A713A713A713A713A71340 -:1000F00090139013901390139013A713A713A713A3 -:10010000A713A713901390139013A713A713A71364 -:10011000E519071AF51A071AF51A4C1A6F1AF51A83 -:10012000C41AD71ADA1DDA1D171E171E711EAF1E4C -:1001300027212721C81E2721C91FC91F8C20A320C2 -:100140002721122107634236B79BD8A71A39685670 -:1001500018AEBAAB558C1D3CB7CC5763BD6DEDFDE9 -:10016000753EF6177231BF000000803F08000000A6 -:10017000BE922449123EABAAAA2ABECDCCCC4C3E9C -:1001800000000080BEABAAAAAA3E00000000BF008B -:100190000000803F0000000000084178D3BB438787 -:1001A000D1133D190E3CC3BD4282AD2B3E68EC829B -:1001B00076BED98FE1A93E4C80EFFFBE01C4FF7F20 -:1001C0003F00000000002B0014001A00080015007A -:1001D00017001C0018000C00120013002A00290050 -:1001E00004001600070009000A000B000D000E00B5 -:1001F0000F0033003400E1001D001B000600190051 -:1002000005001100100036003700380028000530C6 -:10021000E000E200E30003302C002C00043050002A -:10022000510052004F002B0014001A000900130067 -:100230000A000D000F0018001C0033002A002900DE -:10024000040015001600170007000B00110008003D -:100250000C0012003400E1001D001B000600190014 -:1002600005000E0010003600370038002800053069 -:10027000E000E200E30003302C002C0004305000CA -:10028000510052004F002B0034003600370013009D -:100290001C0009000A00060015000F002A002900B2 -:1002A00004001200080018000C0007000B001700E3 -:1002B000110016003800E100330014000D000E009C -:1002C0001B00050010001A0019001D002800053051 -:1002D000E000E200E30003302C002C00043050006A -:1002E000510052004F0035021E021F02200221025F -:1002F0002202230224022502260227022A004C00A1 -:100300003A003B003C003D003E003F002D022E0223 -:100310002F02300231020100400041004200430040 -:10032000440045000100010001000100010001003E -:100330000100010001000100010001000100AB000B -:10034000AA00A900AE0035001E001F0020002100F9 -:100350002200230024002500260027002A004C004C -:100360003A003B003C003D003E003F002D002E00C7 -:100370002F003000310001004000410042004300E6 -:1003800044004500010001000100010001000100DE -:100390000100010001000100010001000100AB00AB -:1003A000AA00A900AE00000000000000000000004C -:1003B000000000000000000000000000000000003D -:1003C000000000000000000000000000000000002D -:1003D000000000000000000000000000000000001D -:1003E000000000000000000000000000000000000D -:1003F0000000000000000330000000000430000096 -:100400000000000000001E001E001E001E001E0056 -:100410001E001E001E001E001E001E001E0000000A -:1004200014001A000800150017001C0018000C002A -:10043000120013002F00000004001600070009003E -:100440000A000B000D000E000F00330034000D30C9 -:10045000000000000600190000000000110010005C +:100000000C94DA040C941E050C941E050C941E0529 +:100010000C941E050C941E050C941E050C941E05D4 +:100020000C941E050C941E050C94B7180C94891999 +:100030000C94EC270C941E050C941E050C941E05C4 +:100040000C941E050C941E050C941E050C941E05A4 +:100050000C941E050C9454280C941E050C941E053B +:100060000C941E050C941E050C941E050C941E0584 +:100070000C941E050C941E050C941E050C941E0574 +:100080000C94AD0E0C941E050C941E050C941E05CC +:100090000C941E050C941E050C941E050C941E0554 +:1000A0000C941E050C941E050C941E0579058905FB +:1000B0009B05AB05B105C005CC05D205E005E905FA +:1000C000FA050A0610064006F619181A061B181A31 +:1000D000061B5D1A801A061BD51AE81AEB1DEB1DCC +:1000E000281E281E821EC01E38213821D91E382104 +:1000F000DA1FDA1F9D20B4203821232107634236FE +:10010000B79BD8A71A39685618AEBAAB558C1D3CA8 +:10011000B7CC5763BD6DEDFD753EF6177231BF006C +:100120000000803F08000000BE922449123EABAAA6 +:10013000AA2ABECDCCCC4C3E00000080BEABAAAA01 +:10014000AA3E00000000BF000000803F0000000049 +:1001500000084178D3BB4387D1133D190E3CC3BD82 +:100160004282AD2B3E68EC8276BED98FE1A93E4C2F +:1001700080EFFFBE01C4FF7F3F00000000002B00A6 +:1001800014001A000800150017001C0018000C00CD +:10019000120013002A0029000400160007000900BD +:1001A0000A000B000D000E000F0033003400E100C8 +:1001B0001D001B000600190005001100100036008C +:1001C0003700380028000530E000E200E30003308B +:1001D0002C002C0004305000510052004F002B0026 +:1001E00014001A00090013000A000D000F00180087 +:1001F0001C0033002A002900040015001600170017 +:1002000007000B00110008000C0012003400E10090 +:100210001D001B000600190005000E00100036002E +:100220003700380028000530E000E200E30003302A +:100230002C002C0004305000510052004F002B00C5 +:1002400034003600370013001C0009000A000600C5 +:1002500015000F002A0029000400120008001800F1 +:100260000C0007000B001700110016003800E10019 +:10027000330014000D000E001B00050010001A00D2 +:1002800019001D0028000530E000E200E300033003 +:100290002C002C0004305000510052004F00350259 +:1002A0001E021F0220022102220223022402250232 +:1002B000260227022A004C003A003B003C003D0089 +:1002C0003E003F002D022E022F02300231020100BB +:1002D000400041004200430044004500010001008D +:1002E0000100010001000100010001000100010006 +:1002F000010001000100AB00AA00A900AE0035001A +:100300001E001F00200021002200230024002500E1 +:10031000260027002A004C003A003B003C003D002C +:100320003E003F002D002E002F0030003100010064 +:10033000400041004200430044004500010001002C +:1003400001000100010001000100010001000100A5 +:10035000010001000100AB00AA00A900AE000000EE +:10036000000000000000000000000000000000008D +:10037000000000000000000000000000000000007D +:10038000000000000000000000000000000000006D +:10039000000000000000000000000000000000005D +:1003A000000000000000000000000000000003301A +:1003B00000000000043000000000000000001E00EB +:1003C0001E001E001E001E001E001E001E001E003D +:1003D0001E001E001E00000014001A000800150078 +:1003E00017001C0018000C00120013002F00000062 +:1003F00004001600070009000A000B000D000E00A3 +:100400000F00330034000D3000000000060019001A +:1004100000000000110010000000000000000000BB +:1004200000000000000000000000000000000000CC +:1004300000000000000000000000000000000000BC +:1004400000000000000000000000000000000000AC +:10045000000000000000000000000000000000009C :10046000000000000000000000000000000000008C :10047000000000000000000000000000000000007C :10048000000000000000000000000000000000006C @@ -117,1512 +117,1529 @@ :1007400000000000000000000000000000000000A9 :100750000000000000000000000000000000000099 :100760000000000000000000000000000000000089 -:100770000000000000000000000000000000000079 -:100780000000000000000000000000000000000069 -:100790000000000000000000000000000000000059 -:1007A0000000000000000000000000000000000049 -:1007B0000000000000000000000000000000000039 -:1007C00000000000000001000050010001000100D5 -:1007D0000100010001000100010001004C000100C6 -:1007E0000100010007300630135012500030013074 -:1007F00002300C30010001000B300A3009300830A3 -:1008000001000100010001000100010001000100E0 -:1008100001000100010001000100010001000100D0 -:100820000100010001002803540068006500200059 -:1008300050006C0061006E0063006B0020004B00F4 -:100840006500790062006F006100720064000000C2 -:100850002C034F007200740068006F006C00690088 -:100860006E0065006100720020004B006500790099 -:1008700062006F00610072006400730000000403F6 -:10088000090409026D00040100A0FA090400000136 -:1008900003010100092111010001223F0007058128 -:1008A0000308000A090401000103010200092111E3 -:1008B000010001224D000705820308000A09040215 -:1008C0000001030000000921110100012236000788 -:1008D00005830308000A090403000103000000095E -:1008E00021110100012239000705840310000112C3 -:1008F00001100100000008EDFE606001000102002F -:100900000105010906A101050719E029E7150025E0 -:1009100001950875018102050819012905950575DC -:1009200001910295017503910105071900297715B9 -:10093000002501957875018102C005010980A1019A -:10094000850216010026B7001A01002AB7007510AB -:1009500095018100C0050C0901A101850316010064 -:10096000269C021A01002A9C02751095018100C084 -:1009700005010902A1010901A100050919012905C3 -:100980001500250195057501810295017503810109 -:100990000501093009311581257F95027508810609 -:1009A00009381581257F950175088106050C0A38DF -:1009B000021581257F950175088106C0C0050109D2 -:1009C00006A101050719E029E7150025019508751D -:1009D0000181029501750881010508190129059514 -:1009E000057501910295017503910105071900290B -:1009F000FF150025FF950675088100C011241FBE54 -:100A0000CFEFDAE0DEBFCDBF04B603FE24C0809195 -:100A1000190490911A04A0911B04B0911C04873012 -:100A2000904BA740B04BB9F41092190410921A04DD -:100A300010921B0410921C0414BE84B7877F84BFDD -:100A400088E10FB6F89480936000109260000FBEAA -:100A5000E0E0F8E3099513E0A0E0B1E0E4E8F3E6B4 -:100A600002C005900D92A431B107D9F714E0A4E1BA -:100A7000B3E001C01D92A931B107E1F70E94EC1566 -:100A80000C94C0310C940000279A2F988FEF9FEFA1 -:100A900090938700809386008AE08093800089E1AC -:100AA000809381000C94452D282F81110BC08091DB -:100AB0008000877F8093800010928D0010928C00C0 -:100AC0002F9808952F9880918000886080938000EF -:100AD000233019F48FEF9FEF0FC083E090E0821B6B -:100AE0009109880F991F2FEF3FEFA90102C056957A -:100AF00047958A95E2F7CA0190938D0080938C0008 -:100B00000895CF93DF93EC010E94DC28BE0180E0C2 -:100B100090E0DF91CF910C9407250F931F93462F00 -:100B200050E04E30510508F0DEC0DC01FA01EA5A0F -:100B3000FF4F12968C910C948431882309F4D3C012 -:100B400000E010E0980140E064E070E08BE292E0A9 -:100B50000E944F1281E090E00FC0882309F4C3C0C7 -:100B600000E010E0980140E066E070E08BEB91E07F -:100B70000E944F1282E090E00E948105B4C0882359 -:100B800009F4B1C000E010E0980140E068E070E0D6 -:100B90008BEE91E00E944F1284E090E0EDCF88232D -:100BA00011F083E005C083E00CC0882349F084E0A5 -:100BB0000E94842540E164E083E00E94910A93C092 -:100BC00084E00E94A525F6CF882331F085EE0E94AF -:100BD0006E1C0E949C2D87C085EE0E94361D83C02E -:100BE000882309F480C00E94E30D7DC0882309F4A6 -:100BF0007AC00E94DC0D00E010E0980140E065E062 -:100C000070E08BE492E027C0882309F46CC085E093 -:100C10000E94A5250E94040E66C0882309F463C0C3 -:100C200000E010E0980140E068E070E08BE191E0C6 -:100C30000E944F1285E00E94842555C0882309F444 -:100C400052C00E94E21200E010E0980140E068E02B -:100C500070E08BE191E00E944F1245C0882309F4B7 -:100C600042C00E94ED12EFCF8823E9F100E010E0CE -:100C7000980140E066E070E08BE891E00E944F123E -:100C800084E00E94A52583E00E94A52580E10E94C2 -:100C9000A52585E00E94A5250E94040E86E00E94FD -:100CA00084250E94C928811102C00E94A5280E94A3 -:100CB000E12890E090931804809317048068809353 -:100CC00017040E94E5280FC0882369F000E010E0B7 -:100CD000980140E066E070E08BE591E00E944F12E1 -:100CE00086E00E94A52580E090E01F910F91089575 -:100CF0000F931F932FEF89EF90E021508040904099 -:100D0000E1F700C0000000E010E0980140E065E07D -:100D100070E08BE492E00E944F121F910F910895B2 -:100D20000F931F9300E010E0980140E063E070E053 -:100D300083E091E00E944F122FEF82E597E021506F -:100D400080409040E1F700C000001F910F9108958E -:100D5000CF92DF92EF92FF920F931F93CF93DF9387 -:100D6000CDB7DEB7CC58D1090FB6F894DEBF0FBEB1 -:100D7000CDBF2091D10325FFC5C08C01FC0192811C -:100D800080910201992309F460C096E4E0E9F2E061 -:100D9000DE01A95BBF4F01900D929A95E1F7F80132 -:100DA0009081E0910001F0910101E90FF11DEE0F3A -:100DB000FF1F27E430E02C0F3D1FE20FF31F60817F -:100DC0007181680F711D882777FD8095982F0E948B -:100DD000E02E20E030E040E451E40E94452E6B011B -:100DE0007C01F801218184E090E0821B9109BC0123 -:100DF000882777FD8095982F0E94E02E9B01AC01FB -:100E0000C701B6010E94DD2D9B01AC0160E070E0DE -:100E100080E090E40E94F72F20E030E04CE551E4C0 -:100E20000E94942F4FE050E0C457DF4F0FB6F89464 -:100E3000DEBF0FBECDBFDF91CF911F910F91FF900D -:100E4000EF90DF90CF900C94EF1196E4E0E9F2E0A0 -:100E5000DE01119601900D929A95E1F7F8019081CB -:100E6000E0910001F0910101E90FF11DEE0FFF1F6C -:100E700021E030E02C0F3D1FE20FF31F60817181F4 -:100E8000680F711D882777FD8095982F0E94E02EAE -:100E900020E030E040E451E40E94452E6B017C01EB -:100EA000F801218184E090E0821B9109BC01882730 -:100EB00077FD8095982F0E94E02E9B01AC01C70121 -:100EC000B6010E94DD2D9B01AC0160E070E080E086 -:100ED00090E40E94F72F20E030E04CE551E40E94BE -:100EE000942FC457DF4F0FB6F894DEBF0FBECDBFAF -:100EF000DF91CF911F910F91FF90EF90DF90CF90F6 -:100F00000C94370EC457DF4F0FB6F894DEBF0FBEF8 -:100F1000CDBFDF91CF911F910F91FF90EF90DF90A8 -:100F2000CF90089508950E9444056E9A769A0C9485 -:100F300078060C9492070C94A8060895880F991FC0 -:100F4000FC01EA5BFF4F859194910895880F991FEA -:100F5000FC01EA53FE4F8591949108950F931F93DE -:100F6000CF93DF93EC01811520E49207A0F5C11522 -:100F700080E3D80708F0E1C0C83ED105D8F4C03EF0 -:100F8000D10508F0EEC1C83AD10578F4C53AD105CB -:100F900008F074C0C130D10509F46DC008F4DEC199 -:100FA000C430D10508F0DDC1D9C1CB3BD10508F46F -:100FB00070C0D4C1C11590E2D90708F0B9C0C115FD -:100FC00021E0D20708F0CDC1C03FD10508F4C6C169 -:100FD0008E01106506C2C13080E5D80709F4BDC096 -:100FE00068F5C13120E4D20709F4AEC050F4C03135 -:100FF00090E4D90708F0A5C0CF70DD278E01146DED -:10100000F0C1C33120E4D20709F4A4C008F49FC0A2 -:10101000C115D04509F0A2C10E944B210E94040EC7 -:101020000E9490069FEF24E38CE091502040804086 -:10103000E1F700C000000E946828D3C1C11520E676 -:10104000D20730F4C11581E5D80708F48CC02DC152 -:10105000C11590E7D90708F481C1C11520E8D2076E -:1010600008F478C1C11580E9D80708F077C1DF70AE -:101070008E01106AB6C101E010E0B3C1C53AD105D6 -:1010800009F471C1C63AD10509F070C102E810E453 -:10109000A8C1C83AD10509F46CC1C93AD10509F40F -:1010A0006BC1CA3AD10509F46AC1CB3AD10509F43A -:1010B00069C1CC3AD10509F468C1CD3AD10509F42A -:1010C00067C1C03BD10509F466C1CE3AD10509F428 -:1010D00065C1CF3AD10509F464C1C13BD10509F41A -:1010E00063C1C23BD10509F462C1C33BD10509F418 -:1010F00061C1C43BD10509F460C1C53BD10509F408 -:101100005FC1C63BD10509F45EC1C73BD10509F4F7 -:101110005DC1C83BD10509F45CC1C93BD10509F4E7 -:101120005BC1CA3BD10509F45AC100E014E459C1BE -:10113000CE019F700E94A60755C1DD278E01106C5D -:1011400050C100E011ED4DC100E010ED4AC100E0DA -:1011500012ED47C100E013ED44C18091ED038160C1 -:101160008093ED033EC10E94C928811102C00E94F4 -:10117000A5280E94E12890E090931804809317041A -:10118000C23090E5D90721F480911704816086C0B0 -:10119000C43020E5D20721F48091170482607EC01C -:1011A000C63080E5D80721F480911704846076C0AA -:1011B000C83090E5D90719F48091170427C0CA30C8 -:1011C00020E5D20721F480911704806167C0CC30FC -:1011D00080E5D80721F48091170480625FC0CE308B -:1011E00090E5D90721F480911704806457C0C0317D -:1011F00020E5D20721F48091170480684FC0C231E6 -:1012000080E5D80729F4809117048460886046C07F -:10121000C33090E5D90721F4809117048E7F3EC03A -:10122000C53020E5D20721F4809117048D7F36C0A8 -:10123000C73080E5D80721F4809117048B7F2EC03A -:10124000C93090E5D90719F48091170426C0CB3036 -:1012500020E5D20721F4809117048F7E1FC0CD3086 -:1012600080E5D80721F4809117048F7D17C0CF3017 -:1012700090E5D90721F4809117048F7B0FC0C1310D -:1012800020E5D20721F4809117048F7707C0C3317E -:10129000D04531F4809117048B7F877F80931704AA -:1012A000809117040E94E5289CC08D2F99278F708C -:1012B000992781309105D9F49E012370332702C00C -:1012C000880F991F2A95E2F79C688E0144E0000F71 -:1012D000111F4A95E1F700271370802B912B53E0E3 -:1012E000CC0FDD1F5A95E1F7C076DD272FC0823085 -:1012F000910531F4DC2FCC278E01016F106A71C08B -:101300008330910569F4CE018370992701E010E0E4 -:1013100002C0000F111F8A95E2F7C8019C680FC038 -:10132000049709F05EC0CE018370992701E010E0B8 -:1013300002C0000F111F8A95E2F7C8019A6823E0E6 -:10134000CC0FDD1F2A95E1F7C07ED7708C010C2BE6 -:101350001D2B47C0DF708E01106243C000E010E01B -:1013600040C08E013EC001E810E43BC003E810E439 -:1013700038C002EE14E435C009EE14E432C00AEEBF -:1013800014E42FC005EB14E42CC006EB14E429C0D0 -:1013900007EB14E426C00CEC14E423C00DEC14E4B9 -:1013A00020C003E815E41DC00AE815E41AC002E9EC -:1013B00015E417C004E915E414C001E216E411C0F5 -:1013C00003E216E40EC004E216E40BC005E216E4E4 -:1013D00008C006E216E405C007E216E402C00AE20D -:1013E00016E4C801DF91CF911F910F9108959CE001 -:1013F000799FF001112490E3899FE00DF11D1124E4 -:10140000E60FF11DEE0FFF1FEA53FE4F85919491F9 -:10141000803E9105E0F4803C910558F581339105BB -:1014200009F46FC048F48932910509F463C08A3227 -:10143000910509F46DC072C089339105E9F08238D5 -:101440009105D1F08533910509F44DC067C0833E05 -:10145000910581F138F4803E9105B9F0823E910505 -:10146000D9F05CC0863E910561F1873E9105A1F1FE -:1014700055C00E949E0708952091170420FD02C0C8 -:1014800021FF4CC080EE90E049C08091170480FF9E -:10149000F9CF89E390E042C08091170482FF0EC02B -:1014A0008091170484FF03C080E090E037C083EE92 -:1014B00090E034C08091170482FFF2CF82EE90E07A -:1014C0002DC08091170483FF0BC08091170484FD09 -:1014D000EBCF87EE90E022C08091170483FFF5CF19 -:1014E00086EE90E01BC08091170485FF07C089E25B -:1014F00090E014C08091170485FFF9CF85E390E058 -:101500000DC08091170486FF07C08AE290E006C0F4 -:101510008091170486FFF9CF81E390E00E94AE0727 -:101520000895CF92DF92EF92FF920F931F9301E005 -:1015300010E020E030E06801790104C0CC0CDD1C33 -:10154000EE1CFF1C8A95D2F704C0000F111F221F4A -:10155000331F6A95D2F70C291D292E293F29C090E7 -:10156000D103D090D203E090D303F090D403C022F3 -:10157000D122E222F322842FC016D106E206F3061E -:1015800041F41F910F91FF90EF90DF90CF900C945A -:1015900084251F910F91FF90EF90DF90CF900C94D6 -:1015A000A52508950C94D10A5F926F927F928F9235 -:1015B0009F92AF92BF92CF92DF92EF92FF920F93E2 -:1015C0001F93CF93DF93CDB7DEB728970FB6F8946C -:1015D000DEBF0FBECDBFCE0101966C014E0199E07A -:1015E000890E911C20E030E040E050E060E070E0C7 -:1015F00000E010E0E12CF12C6C2C5D2C88E0782EC2 -:10160000AA24A394B12CE6EDF2E0A62DB52D872DEA -:1016100001900D928A95E1F7F601819191916F0108 -:10162000FC01E07FFF27E032F10559F48F70992724 -:10163000F50102C0EE0FFF1F8A95E2F7EE2AFF2A9E -:1016400037C0E033F10559F48F709927F50102C0D6 -:10165000EE0FFF1F8A95E2F70E2B1F2B29C0E034F7 -:10166000F10559F48F709927F50102C0EE0FFF1FA5 -:101670008A95E2F76E2B7F2B1BC0E035F10559F4FC -:101680008F709927F50102C0EE0FFF1F8A95E2F7D0 -:101690004E2B5F2B0DC0E036F10551F48F7099276A -:1016A000F50102C0EE0FFF1F8A95E2F72E2B3F2BAC -:1016B000C814D90409F0A7CF84B19E2D9095892331 -:1016C00084B985B1E82AE5B887B1902F9095892330 -:1016D00087B988B1082B08B98AB1962F90958923CC -:1016E0008AB98BB1682B6BB98DB1942F90958923F2 -:1016F0008DB98EB1482B4EB980B3922F9095892326 -:1017000080BB81B3282B21BB28960FB6F894DEBF8F -:101710000FBECDBFDF91CF911F910F91FF90EF9042 -:10172000DF90CF90BF90AF909F908F907F906F9001 -:101730005F9008955F926F927F928F929F92AF9287 -:10174000BF92CF92DF92EF92FF920F931F93CF93AE -:10175000DF93CDB7DEB768970FB6F894DEBF0FBE44 -:10176000CDBF85B7806885BF85B7806885BF0E947B -:10177000D40ACE0101966C014E0199E1890E911CAB -:1017800020E030E040E050E060E070E000E010E099 -:10179000E12CF12C6C2C5D2C88E1782EAA24A394EA -:1017A000B12CEEEDF2E0A62DB52D872D01900D9216 -:1017B0008A95E1F7F601819191916F01FC01E07F3B -:1017C000FF27E032F10559F48F709927F50102C027 -:1017D000EE0FFF1F8A95E2F7EE2AFF2A37C0E033AB -:1017E000F10559F48F709927F50102C0EE0FFF1F24 -:1017F0008A95E2F70E2B1F2B29C0E034F10559F42E -:101800008F709927F50102C0EE0FFF1F8A95E2F74E -:101810006E2B7F2B1BC0E035F10559F48F70992793 -:10182000F50102C0EE0FFF1F8A95E2F74E2B5F2BEA -:101830000DC0E036F10551F48F709927F50102C013 -:10184000EE0FFF1F8A95E2F72E2B3F2BC814D90409 -:1018500009F0A7CF84B19E2D9095892384B985B1D5 -:10186000E82AE5B887B1902F9095892387B988B188 -:10187000082B08B98AB1962F909589238AB98BB124 -:10188000682B6BB98DB1942F909589238DB98EB14A -:10189000482B4EB980B3922F9095892380BB81B39A -:1018A000282B21BB10921D0310921C0310921503CC -:1018B0001092140310921F0310921E03109217032C -:1018C0001092160310922103109220031092190314 -:1018D00010921803109223031092220310921B03FC -:1018E00010921A0368960FB6F894DEBF0FBECDBFF4 -:1018F000DF91CF911F910F91FF90EF90DF90CF90EC -:10190000BF90AF909F908F907F906F905F900C945E -:1019100093077F928F929F92AF92BF92CF92DF9266 -:10192000EF92FF920F931F93CF93DF93CDB7DEB764 -:10193000A0970FB6F894DEBF0FBECDBF6E0149E190 -:10194000C40ED11C84E1E82E83E0F82E98E0792EB5 -:10195000BC2CAD2C01E010E028E1822E35E0932E66 -:10196000E6EDF2E0AB2DBA2D872D01900D928A9510 -:10197000E1F7F601819191916F019C01207F33275E -:101980002032310591F424B18F709927A80102C04B -:10199000440F551F8A95E2F7CA01922F982B94B9EC -:1019A00095B18095892385B953C02033310591F4D1 -:1019B00027B18F709927F80102C0EE0FFF1F8A959B -:1019C000E2F7CF01922F982B97B998B18095892390 -:1019D00088B93EC02034310591F42AB18F7099271F -:1019E000A80102C0440F551F8A95E2F7CA01922F41 -:1019F000982B9AB99BB1809589238BB929C0203542 -:101A0000310591F42DB18F709927F80102C0EE0FC6 -:101A1000FF1F8A95E2F7CF01922F982B9DB99EB1B7 -:101A2000809589238EB914C02036310589F420B3FE -:101A30008F709927A80102C0440F551F8A95E2F7BD -:101A4000CA01922F982B90BB91B38095892381BBBB -:101A500050EA5A95F1F7BE016F5F7F4F20E030E00A -:101A600040E050E0EEEDF2E0DE011196882D0190AD -:101A70000D928A95E1F7FB0181919191BF01FC01E3 -:101A8000E07FFF27E032F10511F4E3B113C0E0334A -:101A9000F10511F4E6B10EC0E034F10511F4E9B13D -:101AA00009C0E035F10511F4ECB104C0E036F105F0 -:101AB000B9F4EFB1F0E08F70992702C0F595E79582 -:101AC0008A95E2F7E0FD08C0C801042E02C0880F25 -:101AD000991F0A94E2F702C080E090E0282B392B8E -:101AE0004F5F5F4F4C30510509F0BCCFF70180814B -:101AF00091818217930721F03183208390927302A2 -:101B00000E94D40AF2E0EF0EF11C4CE1E41643E02F -:101B1000F40609F025CF80917302882361F181508A -:101B200080937302882339F08FE99FE00197F1F7E2 -:101B300000C0000020C08091140390911503909381 -:101B40001D0380931C0380911603909117039093BB -:101B50001F0380931E0380911803909119039093A3 -:101B600021038093200380911A0390911B0390938B -:101B70002303809322030E94990781E0A0960FB669 -:101B8000F894DEBF0FBECDBFDF91CF911F910F91B3 -:101B9000FF90EF90DF90CF90BF90AF909F908F908D -:101BA0007F900895E82FF0E0EE0FFF1FE45EFC4FFA -:101BB00080819181089508958091020481608093CD -:101BC00002040C94F728809102048E7F8093020413 -:101BD0000C94F7280E94C928811102C00E94A528F0 -:101BE0000E94F328809302043E9A809171008D7FB9 -:101BF0008093710082E0809390008AE1809391004D -:101C000081E080932603089580912603811102C00C -:101C10000E94EA0D10927603109275038091710074 -:101C20008D7F80937100809190008F7780939000DA -:101C3000109238031092370310926F0310927003C2 -:101C4000109271031092720310926E0310926D0342 -:101C5000EDE4F3E0ADE3B3E0119211921192119231 -:101C60001D921D9283E0ED36F807B1F70895CF92EB -:101C7000DF92EF92FF920F931F93CF93DF93209108 -:101C80003703222309F484C06B017C018091260371 -:101C9000811102C00E94EA0D0DE613E0C7E0D0E01A -:101CA000A7019601F80192918291729162918F0140 -:101CB0000E94412E811131C0FE01EE0FFF1FEE0F79 -:101CC000FF1FE35BFC4F1082118212821382DE0140 -:101CD000AA0FBB1FA35CBC4F11961C921E92C7306B -:101CE000D105E9F021964481558166817781408351 -:101CF000518362837383148215821682178212962F -:101D00008D919C91139711969C938E9313961C9290 -:101D10001E92129734961296E2CF219708F6809180 -:101D2000750390917603019797FD05C09093760314 -:101D30008093750304C0109276031092750380910E -:101D400075039091760320917303309174032817E3 -:101D5000390724F01092740310927303892BC1F495 -:101D6000809171008D7F80937100809190008F77BA -:101D70008093900010926F03109270031092710381 -:101D80001092720310926E0310926D03109237033B -:101D9000DF91CF911F910F91FF90EF90DF90CF9047 -:101DA00008951F920F920FB60F9211244F925F92D7 -:101DB0006F927F928F929F92AF92BF92CF92DF925B -:101DC000EF92FF922F933F934F935F936F937F9385 -:101DD0008F939F93AF93BF93CF93DF93EF93FF9333 -:101DE00080913703882309F49BC1C0917503D0917A -:101DF00076031C161D060CF093C1409027035090EB -:101E000028036090290370902A0320E030E0A901A4 -:101E1000C301B2010E94902F18160CF065C0C130AA -:101E2000D10509F452C08091730390917403BE01EF -:101E30000E9470317C0190937403809373038090AF -:101E4000390390903A03A0903B03B0903C0320E00C -:101E500030E040E85FE3C501B4010E94DD2D6093EE -:101E6000390370933A0380933B0390933C03F7014B -:101E7000EE0FFF1FEE0FFF1FE35BFC4FA30192016C -:101E800060817181828193810E94452E20E030E043 -:101E900040E05EE30E94942F9B01AC01C501B401B8 -:101EA0000E94902F18168CF4C7010196BE010E9463 -:101EB00070319093740380937303109239031092DE -:101EC0003A0310923B0310923C03E0917303F091AC -:101ED0007403EE0FFF1FEE0FFF1FE35BFC4F6081EB -:101EE000718182819381D0C0C0906F03D0907003C4 -:101EF000E0907103F090720320E030E0A901C70187 -:101F0000B6010E94412E2197882309F4A2C0FE0148 -:101F1000EE0FFF1FEE0FFF1FE35BFC4F80809180F1 -:101F2000A280B380A5019401C701B6010E94412E91 -:101F300087FF31C0A501940160E070E08CED93EC67 -:101F40000E94452E20E030E040E451E40E94452EFE -:101F500020E030E040E05FE30E94942F9B01AC0161 -:101F600060E070E080E090E40E94F72F9B01AC01FC -:101F7000C501B4010E94942F9B01AC01C701B601B9 -:101F80000E94412E87FF07C0A701960160E070E024 -:101F90008CED93E439C0A5019401C701B6010E94FC -:101FA000902F18160CF055C0A501940160E070E068 -:101FB0008CED93E40E94452E20E030E040E451E4B3 -:101FC0000E94452E20E030E040E05FE30E94942F25 -:101FD0009B01AC0160E070E080E090E40E94F72F8C -:101FE0009B01AC01C501B4010E94942F9B01AC017F -:101FF000C701B6010E94902F18165CF5A701960143 -:1020000060E070E08CED93EC0E94452E20E030E023 -:1020100040E451E40E94452E20E030E040E05FE3E0 -:102020000E94942F9B01AC0160E070E080E090E49E -:102030000E94F72F9B01AC01C701B6010E94942FAB -:1020400060936F0370937003809371039093720396 -:1020500013C0FE01EE0FFF1FEE0FFF1FE35BFC4FEF -:1020600080819181A281B38180936F0390937003EB -:10207000A0937103B093720360916F03709170032A -:102080008091710390917203209124033091250374 -:102090002F3F4FEF340731F02F5F3F4F3093250331 -:1020A000209324030E94F8126B017C0120E034E2AB -:1020B00044EF51E40E94412E87FF08C086EFC82EEE -:1020C00088E2D82E84EFE82E81E4F82E20E030E07C -:1020D00040E051E4C701B6010E94942F9B01AC017E -:1020E00060E074E284E79BE40E94452E6B017C0172 -:1020F0000E94AD2E70939700609396002091740219 -:10210000309175024091760250917702C701B60175 -:102110000E94942F0E94AD2E7093990060939800B6 -:1021200080913803882309F433C1C0903303D090E1 -:102130003403E0903503F090360320E030E0A9014D -:10214000C701B6010E94902F1816D4F58091240380 -:10215000909125038F3F2FEF920729F001969093DE -:10216000250380932403C701B6010E94F81220E0E2 -:1021700030E040E051E40E94942F9B01AC0160E00C -:1021800074E284E79BE40E94452E6B017C010E946F -:10219000AD2E709397006093960020917402309159 -:1021A00075024091760250917702C701B6010E94F4 -:1021B000942F0E94AD2E709399006093980008C0F0 -:1021C0001092970010929600109299001092980029 -:1021D00060912D0370912E036F5F7F4F70932E03DC -:1021E00060932D03209196003091970080E090E05D -:1021F000232BF1F0C0919600D09197000E94DE2E23 -:102200006B017C01BE0180E090E00E94DE2E9B010C -:10221000AC0160912F037091300380913103909154 -:1022200032030E94452E20E03FEF4FE757E410C0F5 -:102230000E94DE2E6B017C0120E030EE4FEF54E473 -:1022400060912F037091300380913103909132039C -:102250000E94942F9B01AC01C701B6010E94902FF0 -:1022600087FD96C080912B038F5F80932B0390E0B6 -:102270002091FE033091FF0382179307A0F0809115 -:102280000904882319F010922B030DC0809171006E -:102290008D7F80937100809190008F778093900064 -:1022A000109238037DC080912C03C0912B038111C3 -:1022B00028C0C0900304D0900404E0900504F0907E -:1022C000060420E030E0A901C701B6010E94902F6A -:1022D0001816BCF481E080932C0310923303109203 -:1022E00034031092350310923603C0922F03D0921C -:1022F0003003E0923103F0923203C150C0932B03BC -:1023000043C010922C031092250310922403E091F5 -:102310000004F091010448E0C49FE00DF11D112478 -:1023200080819181A281B3818093330390933403A0 -:10233000A0933503B093360320E030E040E85EE33D -:1023400064817581868197810E94942F6B017C0145 -:1023500020E030E048EC52E460917802709179021C -:1023600080917A0290917B020E94452E9B01AC01E4 -:10237000C701B6010E94942F60932F03709330031E -:10238000809331039093320310922E0310922D0309 -:102390008091020480FD04C010923803109237032C -:1023A000FF91EF91DF91CF91BF91AF919F918F916D -:1023B0007F916F915F914F913F912F91FF90EF909F -:1023C000DF90CF90BF90AF909F908F907F906F9055 -:1023D0005F904F900F900FBE0F901F901895CF9267 -:1023E000DF92EF92FF92CF93DF936B017C01EA01C2 -:1023F00080912603811102C00E94EA0D809102049F -:1024000080FF46C0809175039091760308970CF089 -:102410003FC0809171008D7F80937100809138035F -:1024200081110E94040E81E08093370310922503EE -:102430001092240320E030E0A901C701B6010E94F8 -:10244000902F1816DCF48091750390917603FC01AF -:10245000EE0FFF1FEE0FFF1FE35BFC4FC082D18228 -:10246000E282F382FC01EE0FFF1FE35CFC4FD1839D -:10247000C0830196909376038093750380917100D9 -:1024800082608093710080919000806880939000BA -:10249000DF91CF91FF90EF90DF90CF9008958F92D2 -:1024A0009F92AF92BF92CF92DF92EF92FF920F93E3 -:1024B0001F93CF93DF93EC017B01D42E4801590188 -:1024C00080912603811102C00E94EA0D80910204CE -:1024D00080FF6BC0809171008D7F8093710080912F -:1024E000370381110E94040E81E080933803D0935A -:1024F0000104C0930004F092FF03E092FE03D09227 -:1025000009048092030490920404A0920504B092FE -:1025100006041092390310923A0310923B03109272 -:102520003C0310922B0388819981AA81BB818093FF -:10253000330390933403A0933503B093360320E024 -:1025400030E040E85EE36C817D818E819F810E9456 -:10255000942F6B017C0120E030E048EC52E4609164 -:1025600078027091790280917A0290917B020E94A8 -:10257000452E9B01AC01C701B6010E94942F6093C8 -:102580002F037093300380933103909332031092A2 -:102590002E0310922D038091710082608093710050 -:1025A00080919000806880939000DF91CF911F917F -:1025B0000F91FF90EF90DF90CF90BF90AF909F90E2 -:1025C0008F9008958091770390E0019665E070E028 -:1025D0000E9470318093770308958091770390E093 -:1025E000019765E070E00E94703180937703089551 -:1025F0008F929F92AF92BF92CF92DF92EF92FF9213 -:10260000CF93DF936B017C01C0912403D09125030C -:10261000BE0180E090E00E94DE2E4B015C01A7012C -:10262000960160E070E08CE594E40E94452E9B01E9 -:10263000AC01C501B4010E94942F0E94B22E4091BA -:102640007703423009F45CC028F4442351F0413050 -:10265000E9F0FBC0433009F481C0443009F4B4C050 -:10266000F4C080E090E0A0E0BFE380937402909318 -:102670007502A0937602B09377021092270310920E -:1026800028031092290310922A03DFC01092270317 -:10269000109228031092290310922A0364317105C5 -:1026A00040F46A307105E0F520E030E040E85EE398 -:1026B0003BC0693C710508F0C0C080E090E00E941A -:1026C000DE2E20E030E040EA51E40E94DC2D20E0E4 -:1026D00030E044E353E40E94452E9B01AC010E948C -:1026E000942F20E030E040E05EE30E94942F9B01B5 -:1026F000AC0160E070E080E09EE30E94DC2D5BC0F6 -:1027000010922703109228031092290310922A0393 -:102710006432710578F4FB01EC59FF4F0C9484315D -:1027200020E030E040E05FE3C701B6010E94942F53 -:102730006B017C0180E090E0A0E0BEE38093740236 -:1027400090937502A0937602B09377027EC0A701A2 -:102750009601C701B6010E94DD2DEACF1092270332 -:10276000109228031092290310922A032AE0269F30 -:10277000A001279F500D1124CA0168EB7BE00E9445 -:102780005C31BC016C5D754077FF03C0719561954C -:102790007109882777FD8095982F0E94E02E2EE3FF -:1027A00033EC4EE259E30E94942F20E030E040ECFD -:1027B0005EE30E94DD2D6093740270937502809336 -:1027C00076029093770241C010922703109228035B -:1027D0001092290310922A03CE0183709927892B26 -:1027E000E1F0BE016170772780E090E00E94DE2E6C -:1027F00020E030E040E05EE30E94942F20E030E0F3 -:1028000040E45FE30E94DD2D6093740270937502D3 -:1028100080937602909377020CC080E090E0A0E075 -:10282000BFE38093740290937502A0937602B093F5 -:102830007702C770DD27CD2B41F4109274021092FD -:1028400075021092760210927702C701B601DF91ED -:10285000CF91FF90EF90DF90CF90BF90AF909F907F -:102860008F900895809188030895CF93DF9300D0CF -:102870001F92CDB7DEB79C0180910E04843019F50C -:1028800093E099833B832A839093E9008FEF9091A3 -:10289000E800815095FD06C095ED9A95F1F700008E -:1028A0008111F5CF8091E80085FF0DC040E050E038 -:1028B00063E070E0CE0101960E9496168091E800D8 -:1028C0008E778093E8000F900F900F90DF91CF915B -:1028D0000895CF93DF9300D01F92CDB7DEB720913C -:1028E0000E04243021F522E029839B838A8383E030 -:1028F0008093E9008FEF9091E800815095FD06C02C -:1029000095ED9A95F1F700008111F5CF8091E800DF -:1029100085FF0DC040E050E063E070E0CE0101961D -:102920000E9496168091E8008E778093E8000F90C1 -:102930000F900F90DF91CF91089520910E042430D5 -:10294000F1F422E02093E9002FEF3091E8002150CC -:1029500035FD06C035ED3A95F1F700002111F5CFB0 -:102960002091E80025FF0BC040E050E065E070E0FA -:102970000E9496168091E8008E778093E800089573 -:10298000CF93DF93EC0190910E04943009F046C090 -:10299000809186028823D9F0809187028823B9F03C -:1029A0009093E9008FEF9091E800815095FD06C06B -:1029B00095E19A95F1F700008111F5CF8091E8003B -:1029C00085FF2CC040E050E060E170E017C081E07E -:1029D0008093E9008FEF9091E800815095FD06C04B -:1029E00095ED9A95F1F700008111F5CF8091E800FF -:1029F00085FF14C040E050E068E070E0CE010E9426 -:102A000096168091E8008E778093E80080E1FE01C1 -:102A1000A8E7B3E001900D928A95E1F7DF91CF919D -:102A2000089580910D04811109C00E942B180E9405 -:102A300088188091E20084608093E20008951092EB -:102A40000D040895089508950C94D02742E061EC98 -:102A500081E00E94A51742E061EC82E00E94A51788 -:102A600042E061EC83E00E94A51742E161EC84E062 -:102A70000C94A51780911004833009F455C030F4EC -:102A8000813071F0823009F48EC008958A3009F4E3 -:102A90007AC08B3009F460C0893009F09CC020C036 -:102AA00080910F04813A09F096C08091E800877FF9 -:102AB0008093E8008091130490911404892B21F4F1 -:102AC00060E188E793E003C060E080E090E070E0C0 -:102AD0000E94E1168091E8008B778093E8000895CA -:102AE00080910F04813209F076C080911304909197 -:102AF0001404009719F0039709F06DC08091E80065 -:102B0000877F8093E8008091E80082FD05C0809176 -:102B10000E048111F8CF5FC08091F100809388038B -:102B20008091E8008B7753C080910F04813A09F0BF -:102B300052C08091130490911404892B09F04BC06A -:102B40008091E800877F8093E8008091E80080FF13 -:102B5000FCCF8091860236C080910F048132D9F576 -:102B60008091130490911404892BA9F58091E800B9 -:102B7000877F8093E8000E94DA1780911104809388 -:102B800086020C944B2180910F04813221F58091B3 -:102B9000E800877F8093E8000E94DA178091120492 -:102BA00080938903089580910F04813AA1F4809164 -:102BB000E800877F8093E8008091E80080FFFCCFE9 -:102BC000809189038093F1008091E8008E77809353 -:102BD000E8000C94DA17089584B7877F84BF88E1F2 -:102BE0000FB6F89480936000109260000FBE90E0E2 -:102BF00080E80FB6F89480936100909361000FBE57 -:102C00000E947D1B0E942B180E9488188091E20070 -:102C100084608093E20078940E940E1B0E947F1BC8 -:102C20008CE792E00E94291B80910E04853069F4A4 -:102C30000E948A2780910C048823B1F30E94B82750 -:102C4000882391F30E948016EFCF0E94871BECCF60 -:102C5000292F332723303105C9F064F421303105A1 -:102C600081F02230310509F043C08DE690E022E882 -:102C700038E042C021323105F1F02232310541F114 -:102C800037C082E190E02FEE38E036C099278130DE -:102C9000910541F08230910541F0892B49F5EEE72D -:102CA000F8E005C0E0E5F8E002C0E6E2F8E0849173 -:102CB00090E09F0121C06430D8F4E62FF0E0EE0FE1 -:102CC000FF1FEE5FFC4F2081318189E090E014C04E -:102CD000643070F470E0FB01EE0FFF1FE650FD4F13 -:102CE00020813181FB01EA50FD4F808190E004C0DA -:102CF00080E090E020E030E0FA0131832083089505 -:102D000080E189BD82E189BD09B400FEFDCF8091DB -:102D1000D8008F7D8093D8008091E00082608093FE -:102D2000E0008091E00081FDFCCF0895CF92DF921A -:102D3000EF92FF920F931F93CF93DF93EC018B01E0 -:102D40006A010E94F917811133C0C114D10439F00E -:102D5000F60180819181081B190BC80FD91FE12C46 -:102D6000F12C0115110519F18091E80085FD16C0BF -:102D70008091E8008E778093E800C114D10449F077 -:102D8000F60180819181E80EF91EF182E08285E0F2 -:102D90000FC00E94F917882321F30AC089918093FC -:102DA000F10001501109FFEFEF1AFF0ADACF80E0BE -:102DB000DF91CF911F910F91FF90EF90DF90CF9017 -:102DC000089520911504309116042617370748F00E -:102DD0006115710539F42091E8002E772093E80001 -:102DE00001C0B90140E061157105A9F120910E04FF -:102DF000222309F443C0253009F442C02091E800A1 -:102E000023FD40C02091E80022FD32C02091E8005F -:102E100020FFE9CF4091F3002091F20030E0342B05 -:102E2000FC01CF016115710559F02830310540F4DE -:102E300081918093F100615071092F5F3F4FF1CF75 -:102E400041E02830310509F040E02091E8002E777C -:102E50002093E800C8CF4111C9CF0AC080910E0469 -:102E6000882361F0853061F08091E80083FD0AC01D -:102E70008091E80082FFF2CF80E0089582E008951B -:102E800083E0089581E0089520911504309116049F -:102E90002617370748F06115710539F42091E800CD -:102EA0002E772093E80001C0B901FC0120E06115F4 -:102EB000710591F180910E04882309F440C085309A -:102EC00009F43FC08091E80083FD3DC08091E80097 -:102ED00082FD2FC08091E80080FFE9CF2091F300B0 -:102EE0008091F20090E0922B6115710559F08830C5 -:102EF000910540F424912093F100319661507109BD -:102F00000196F2CF21E0089709F020E08091E800D7 -:102F10008E778093E800CBCF2111CCCF0AC080916F -:102F20000E04882361F0853061F08091E80083FD14 -:102F30000AC08091E80082FFF2CF80E0089582E02D -:102F4000089583E0089581E00895982F973058F50B -:102F50009093E900981739F07091EC002091ED0002 -:102F60005091F00003C0242F762F50E021FF19C0AC -:102F70003091EB003E7F3093EB003091ED003D7FD0 -:102F80003093ED003091EB0031603093EB007093A3 -:102F9000EC002093ED005093F0002091EE0027FF0D -:102FA00007C09F5FD3CF8F708093E90081E00895C1 -:102FB00080E0089580910F0487FF11C08091E800A0 -:102FC00082FD05C080910E048111F8CF11C080915F -:102FD000E8008B770BC080910E04882349F0809124 -:102FE000E80080FFF8CF8091E8008E778093E800BA -:102FF00008952091E4003091E50095E64091EC00C1 -:10300000842F817040FF22C08091E80080FD1CC0A9 -:1030100080910E04882391F0853091F08091EB002F -:1030200085FD10C04091E4005091E5004217530720 -:1030300029F39A01915011F784E0089582E00895F0 -:1030400083E0089581E0089580E008954091E800CC -:1030500042FFDECF08950E9499180E94A118E0EE69 -:10306000F0E0808181608083E8EDF0E080818F77FF -:10307000808319BCA7EDB0E08C918E7F8C9380810A -:103080008F7E808310920D0408950F931F93CF932A -:10309000DF930E9499180E94A118C8EDD0E08881A2 -:1030A0008F77888388818068888388818F7D8883F3 -:1030B00019BC10920E0410920A0410920C04109283 -:1030C0000B0400EE10E0F80180818B7F8083888103 -:1030D0008160888342E060E080E00E94A517E1EE15 -:1030E000F0E080818E7F8083E2EEF0E0808181607D -:1030F0008083808188608083F80180818E7F8083D7 -:10310000888180618883DF91CF911F910F9108950D -:10311000E8EDF0E080818F7E8083E7EDF0E0808154 -:103120008160808384E082BF81E080930D040C94F1 -:103130004518E8EDF0E080818E7F80831092E200F8 -:1031400008951092DA001092E10008951F920F92F4 -:103150000FB60F9211242F933F934F935F936F936A -:103160007F938F939F93AF93BF93EF93FF93809140 -:10317000E10082FF0BC08091E20082FF07C08091D6 -:10318000E1008B7F8093E1000E940D1B8091DA00AB -:1031900080FF1FC08091D80080FF1BC08091DA00A3 -:1031A0008E7F8093DA008091D90080FF0DC080E18E -:1031B00089BD82E189BD09B400FEFDCF81E0809325 -:1031C0000E040E94111505C019BC10920E040E9435 -:1031D0001F158091E10080FF19C08091E20080FFFF -:1031E00015C08091E2008E7F8093E2008091E20022 -:1031F00080618093E2008091D80080628093D80043 -:1032000019BC85E080930E040E9423158091E10093 -:1032100084FF30C08091E20084FF2CC080E189BD32 -:1032200082E189BD09B400FEFDCF8091D8008F7D79 -:103230008093D8008091E1008F7E8093E10080919F -:10324000E2008F7E8093E2008091E20081608093B3 -:10325000E20080910A04882311F084E007C0809185 -:10326000E30087FD02C081E001C083E080930E048B -:103270000E9424158091E10083FF29C08091E20023 -:1032800083FF25C08091E100877F8093E10082E089 -:1032900080930E0410920A048091E1008E7F809347 -:1032A000E1008091E2008E7F8093E2008091E20055 -:1032B00080618093E20042E060E080E00E94A51718 -:1032C0008091F00088608093F0000E942215FF91A9 -:1032D000EF91BF91AF919F918F917F916F915F918E -:1032E0004F913F912F910F900FBE0F901F90189507 -:1032F0001F920F920FB60F9211242F933F934F936B -:103300005F936F937F938F939F93AF93BF93CF936D -:10331000DF93EF93FF93C091E900CF708091EC00B1 -:10332000D82FD17080FDD0E81092E9008091F00094 -:10333000877F8093F00078940E94BC191092E90076 -:103340008091F00088608093F000CD2BCF70C09307 -:10335000E900FF91EF91DF91CF91BF91AF919F91E4 -:103360008F917F916F915F914F913F912F910F902E -:103370000FBE0F901F9018951F93CF93DF93CDB77B -:10338000DEB7AA970FB6F894DEBF0FBECDBFEFE051 -:10339000F4E088E08E0F9091F10091938E13FBCFB3 -:1033A0000E943A158091E80083FF1FC180910F04AD -:1033B00090911004492F50E04A30510508F015C192 -:1033C000FA01E857FF4F0C948431803881F082383D -:1033D00009F00BC1809113048F708093E9008091F4 -:1033E000EB0085FB882780F91092E90006C08091E8 -:1033F0000B0490910C04911182609091E800977FEA -:103400009093E8008093F1001092F100C8C0282F3B -:103410002D7F09F0EAC0882319F0823061F0E5C001 -:1034200080911104813009F0E0C0933009F080E010 -:1034300080930C042BC080911104811127C08091CE -:1034400013048F7009F4D1C08093E9002091EB0040 -:1034500020FF1CC0933021F48091EB00806214C0E7 -:103460009091EB0090619093EB0021E030E0A90196 -:1034700002C0440F551F8A95E2F74093EA0010926C -:10348000EA008091EB0088608093EB001092E900E5 -:103490008091E800877F86C08111A7C01091110438 -:1034A0001F778091E3008078812B8093E3008091E7 -:1034B000E800877F8093E8000E94DA178091E80097 -:1034C00080FFFCCF8091E30080688093E3001111BE -:1034D00002C082E001C083E080930E0486C0805861 -:1034E000823008F082C080911104909112048C3DCA -:1034F00053E0950779F583E08A838AE289834FB7A1 -:10350000F894DE01139620E03EE051E2E32FF0E074 -:1035100050935700E49120FF03C0E295EF703F5FA6 -:10352000EF708E2F90E0EA3010F0C79601C0C09681 -:103530008D939D932F5F243149F74FBF8091E80011 -:10354000877F8093E8006AE270E0CE0101960E94D6 -:10355000E11614C0AE014F5F5F4F609113040E94EB -:103560002816BC01009709F440C09091E800977FAD -:103570009093E80089819A810E9444178091E80025 -:103580008B778093E80031C0803879F58091E8002E -:10359000877F8093E80080910A048093F1008091F6 -:1035A000E8008E778093E8000E94DA171EC0811130 -:1035B0001CC0909111049230C0F48091E800877F84 -:1035C0008093E80090930A040E94DA1780910A041D -:1035D000811106C08091E30087FD02C081E001C037 -:1035E00084E080930E040E9426158091E80083FFFA -:1035F0000AC08091E800877F8093E8008091EB000B -:1036000080628093EB00AA960FB6F894DEBF0FBEDF -:10361000CDBFDF91CF911F9108950895CF938091F1 -:103620000E048823A1F0C091E900CF709091EC00C6 -:10363000892F817090FD80E8C82B1092E90080915D -:10364000E80083FD0E94BC19CF70C093E900CF91C0 -:10365000089590938F0380938E030895E0918E03D5 -:10366000F0918F03309721F00190F081E02D0994C3 -:1036700080E00895E0918E03F0918F03309721F060 -:103680000280F381E02D09940895E0918E03F0917A -:103690008F03309721F00480F581E02D099408957F -:1036A00020918C0330918D038217930771F09093D2 -:1036B0008D0380938C03E0918E03F0918F033097FC -:1036C00021F00680F781E02D0994089520918A0366 -:1036D00030918B038217930771F090938B03809343 -:1036E0008A03E0918E03F0918F03309721F00084DC -:1036F000F185E02D0994089508950C947C1B0E9497 -:1037000004280E949A0B0E948A280C94452D4F92FF -:103710005F927F928F929F92AF92BF92CF92DF92F1 -:10372000EF92FF920F931F93CF93DF93CDB7DEB746 -:103730002A970FB6F894DEBF0FBECDBF0E94890C4A -:1037400091E9C92E93E0D92E00E010E0AA24A394B9 -:10375000B12C702E802F0E94D20D4C01F6014190A9 -:1037600051906F014826592641145104B1F40F5F5E -:103770001F4F0430110569F78FEF89838A831B82FD -:103780000E940D288160782F9D838C8349815A8106 -:103790006B818D810E94401C3AC08091ED0381FDB8 -:1037A0000E94DB0D20E030E07501022E02C0EE0C1D -:1037B000FF1C0A94E2F7C70184219521892B09F1A6 -:1037C0002E837F828E209F2091E0892809F490E04B -:1037D00098870E940D288160782F9A8789874E816B -:1037E0005F8168858A850E94401C000F111FF801C7 -:1037F000EF56FC4F80819181E826F926F182E08224 -:1038000006C02F5F3F4F2C30310571F6B0CF0E94BC -:10381000762A109190030E942E1B1817D9F00E944F -:103820002E1B809390032A960FB6F894DEBF0FBE2E -:10383000CDBFDF91CF911F910F91FF90EF90DF905F -:10384000CF90BF90AF909F908F907F905F904F9060 -:103850000C94D20A2A960FB6F894DEBF0FBECDBFE5 -:10386000DF91CF911F910F91FF90EF90DF90CF905C -:10387000BF90AF909F908F907F905F904F900895F2 -:10388000CF93DF93CDB7DEB72B970FB6F894DEBF9B -:103890000FBECDBF4F83588769877A878B87DE013C -:1038A000119686E0FD0111928A95E9F785E0FE0107 -:1038B000379601900D928A95E1F749815A816B8183 -:1038C0007C818D819E810E94E5232B960FB6F89412 -:1038D000DEBF0FBECDBFDF91CF910895CF93882378 -:1038E00009F4C2C0C82F823859F40E942E1B81FDF2 -:1038F000BBC089E30E948E260E945B2789E30CC02F -:10390000833879F40E942E1B80FDAEC083E50E94AF -:103910008E260E945B2783E50E94D026CF910C94CF -:103920005B27843859F40E942E1B82FD9DC087E4DA -:103930000E948E260E945B2787E4EECF8CEF8C0FCF -:10394000813A48F48C2F0E94AD2C81118DC08C2FB0 -:103950000E948E26E3CF80E28C0F883048F4C77037 -:1039600081E001C0880FCA95EAF70E941427D6CFDC -:103970008BE58C0F833078F4C53A29F0C63A31F0E4 -:1039800083E890E005C081E890E002C082E890E022 -:10399000CF910C94501B88E58C0F833108F064C0E4 -:1039A000C83A39F1C93A41F1CA3A49F1CB3A51F131 -:1039B000CC3A59F1CD3A61F1C03B69F1CE3A71F19F -:1039C000CF3A79F1C13B81F1C23B89F1C33B91F11F -:1039D000C43B99F1C53BA1F1C63BA9F1C73BB1F18D -:1039E000C83BB9F1C93BC1F1CA3BC9F180E090E0E5 -:1039F00038C082EE90E035C089EE90E032C08AEEA9 -:103A000090E02FC085EB90E02CC086EB90E029C0C1 -:103A100087EB90E026C08CEC90E023C08DEC90E02A -:103A200020C083E891E01DC08AE891E01AC082E9D5 -:103A300091E017C084E991E014C081E292E011C0E6 -:103A400083E292E00EC084E292E00BC085E292E055 -:103A500008C086E292E005C087E292E002C08AE2F6 -:103A600092E0CF910C94661BCF910895882309F4BE -:103A70004BC0823859F40E942E1B81FF45C089E358 -:103A80000E948E260E945B2789E30CC0833871F464 -:103A90000E942E1B80FF38C083E50E948E260E9464 -:103AA0005B2783E50E94D0260C945B27843859F469 -:103AB0000E942E1B82FF28C087E40E948E260E944F -:103AC0005B2787E4EFCF9CEF980F913A58F390E291 -:103AD000980F983050F4877091E001C0990F8A9543 -:103AE000EAF7892F0E941A27DFCF9BE5980F9330C2 -:103AF00020F480E090E00C94501B885A833120F42D -:103B000080E090E00C94661B0895882321F00E94C9 -:103B100014270C945B270895882321F00E941A270C -:103B20000C945B270895BF92CF92DF92EF92FF92A1 -:103B30000F931F93CF93DF9300D000D000D0CDB769 -:103B4000DEB725E0FC01DE01119601900D922A9569 -:103B5000E1F7FC01D08011810281258122952F702F -:103B600043815481452B09F472C31F3F21F4FFEFB9 -:103B7000DF1609F46CC37C012E830E949B07D98257 -:103B80001A8369817A81802F0E948A26182FB92E84 -:103B90000E943F260E9406252E81002319F00E94D4 -:103BA00031272E81EB2DE295EF70F0E0EE56FF4FBE -:103BB0000C9484318B2D807F9B2D9F70F92E882350 -:103BC00019F0F29480EFF822002389F0FF2009F425 -:103BD0007CC280E2810F883020F48F2D0E94142750 -:103BE00003C08F2D0E9424270E945B276EC2812F65 -:103BF0000E94361DFF2009F42AC3105E8F2D183055 -:103C000018F40E941A2702C00E942A2726960FB68F -:103C1000F894DEBF0FBECDBFDF91CF911F910F9102 -:103C2000FF90EF90DF90CF90BF900C945B278B2D8F -:103C3000807F9B2D9F70803211F4892F03C0892FC4 -:103C40008295807F112319F0113011F12BC00023D0 -:103C5000A9F0222389F1213079F526960FB6F89440 -:103C6000DEBF0FBECDBFDF91CF911F910F91FF90AF -:103C7000EF90DF90CF90BF900C944427222319F04F -:103C8000213009F4E4C28E830E9447278E819BC1B4 -:103C9000002321F0263008F0DAC20EC0253008F0EB -:103CA000D6C291C10023C9F0222331F0F7019581DA -:103CB00090FF0BC29F70958326960FB6F894DEBFD7 -:103CC0000FBECDBFDF91CF911F910F91FF90EF906D -:103CD000DF90CF90BF900C94851D222309F473C10F -:103CE00009C22B2D26952695237030E0211531052C -:103CF00021F021303105D1F0AAC2002321F0812F1B -:103D00009B2D937002C080E090E026960FB6F89449 -:103D1000DEBF0FBECDBFDF91CF911F910F91FF90FE -:103D2000EF90DF90CF90BF900C94501B002321F0B8 -:103D3000812F9B2D937002C080E090E026960FB6F5 -:103D4000F894DEBF0FBECDBFDF91CF911F910F91D1 -:103D5000FF90EF90DF90CF90BF900C94661B812F67 -:103D6000002319F00E947E2902C00E94E6292696AF -:103D70000FB6F894DEBF0FBECDBFDF91CF911F917C -:103D80000F91FF90EF90DF90CF90BF900C946B2A33 -:103D90008B2D837009F07BC0011159C2812F829550 -:103DA00086958770880F880F912F9F70C92ED12C10 -:103DB000E12CF12C082E04C0CC0CDD1CEE1CFF1CE9 -:103DC0000A94D2F714FF12C04FE050E060E070E0B8 -:103DD00004C0440F551F661F771F8A95D2F7CB0189 -:103DE000BA01609570958095909503C060E070E091 -:103DF000CB012B2D269526952370422F50E0423083 -:103E00005105D9F04330510569F16C297D298E297E -:103E10009F294130510551F126960FB6F894DEBF27 -:103E20000FBECDBFDF91CF911F910F91FF90EF900B -:103E3000DF90CF90BF900C942D256C297D298E2981 -:103E40009F2926960FB6F894DEBF0FBECDBFDF9137 -:103E5000CF911F910F91FF90EF90DF90CF90BF9087 -:103E60000C9449250E942D25C701B60126960FB650 -:103E7000F894DEBF0FBECDBFDF91CF911F910F91A0 -:103E8000FF90EF90DF90CF90BF900C94112500230E -:103E900019F08B2D817001C08695882309F4D7C154 -:103EA000812F829586958770880F880F912F9F703C -:103EB000C92ED12CE12CF12C082E04C0CC0CDD1C19 -:103EC000EE1CFF1C0A94D2F714FF12C04FE050E022 -:103ED00060E070E004C0440F551F661F771F8A958D -:103EE000D2F7CB01BA01609570958095909503C08B -:103EF00060E070E0CB012B2D269526952370422F94 -:103F000050E042305105D9F04330510569F16C2938 -:103F10007D298E299F294130510551F126960FB6F2 -:103F2000F894DEBF0FBECDBFDF91CF911F910F91EF -:103F3000FF90EF90DF90CF90BF900C9407266C29F4 -:103F40007D298E299F2926960FB6F894DEBF0FBED5 -:103F5000CDBFDF91CF911F910F91FF90EF90DF9038 -:103F6000CF90BF900C9423260E940726C701B6016C -:103F700026960FB6F894DEBF0FBECDBFDF91CF916E -:103F80001F910F91FF90EF90DF90CF90BF900C9416 -:103F9000EB25103F49F118F4103E48F491C0123F50 -:103FA00009F453C0E8F1133F09F464C089C01F70DD -:103FB0008B2D8F71002321F00E948425812F7CCED0 -:103FC0000E94A525812F26960FB6F894DEBF0FBE5E -:103FD000CDBFDF91CF911F910F91FF90EF90DF90B8 -:103FE000CF90BF900C948C1D0023B1F0253008F0C9 -:103FF0002EC18B2D8F7126960FB6F894DEBF0FBEA3 -:10400000CDBFDF91CF911F910F91FF90EF90DF9087 -:10401000CF90BF900C94CA25263008F018C1E9CF84 -:104020000023A9F08B2D8F7126960FB6F894DEBF72 -:104030000FBECDBFDF91CF911F910F91FF90EF90F9 -:10404000DF90CF90BF900C948425002359F38B2DE3 -:104050008F7126960FB6F894DEBF0FBECDBFDF91ED -:10406000CF911F910F91FF90EF90DF90CF90BF9075 -:104070000C94A525002399F08B2D8F7126960FB6F1 -:10408000F894DEBF0FBECDBFDF91CF911F910F918E -:10409000FF90EF90DF90CF90BF900C946F25269605 +:100770000000000000000000000000000000010078 +:100780000050010001000100010001000100010012 +:10079000010001004C00010001000100073006309B +:1007A000135012500030013002300C3001000100B3 +:1007B0000B300A300930083001000100010001004F +:1007C0000100010001000100010001000100010021 +:1007D00001000100010001000100010001002803E7 +:1007E000540068006500200050006C0061006E003D +:1007F00063006B0020004B006500790062006F0011 +:1008000061007200640000002C034F00720074004D +:1008100068006F006C0069006E0065006100720086 +:1008200020004B006500790062006F0061007200DB +:100830006400730000000403090409026D00040150 +:1008400000A0FA09040000010301010009211101BF +:100850000001223F000705810308000A0904010086 +:100860000103010200092111010001224D000705C9 +:10087000820308000A0904020001030000000921A4 +:10088000110100012236000705830308000A09044C +:1008900003000103000000092111010001223900B9 +:1008A000070584031000011201100100000008ED8B +:1008B000FE606001000102000105010906A10105B9 +:1008C0000719E029E7150025019508750181020542 +:1008D0000819012905950575019102950175039186 +:1008E0000105071900297715002501957875018103 +:1008F00002C005010980A101850216010026B7008A +:100900001A01002AB700751095018100C0050C0975 +:1009100001A1018503160100269C021A01002A9CF0 +:1009200002751095018100C005010902A1010901AC +:10093000A100050919012905150025019505750175 +:100940008102950175038101050109300931158185 +:10095000257F95027508810609381581257F950147 +:1009600075088106050C0A38021581257F950175E9 +:10097000088106C0C005010906A101050719E02983 +:10098000E71500250195087501810295017508811B +:100990000105081901290595057501910295017553 +:1009A0000391010507190029FF150025FF9506751C +:1009B000088100C011241FBECFEFDAE0DEBFCDBF3B +:1009C00004B603FE24C08091690490916A04A0914A +:1009D0006B04B0916C048730904BA740B04BB9F4D6 +:1009E0001092690410926A0410926B0410926C04C5 +:1009F00014BE84B7877F84BF88E10FB6F8948093D4 +:100A00006000109260000FBEE0E0F8E3099513E08B +:100A1000A0E0B1E0E2E4F4E602C005900D92A23657 +:100A2000B107D9F714E0A2E6B3E001C01D92A936E0 +:100A3000B107E1F70E94FD150C941F320C940000E1 +:100A4000279A2F988FEF9FEF9093870080938600CF +:100A50008AE08093800089E1809381000C94562D78 +:100A6000282F81110BC080918000877F80938000A8 +:100A700010928D0010928C002F9808952F988091DD +:100A80008000886080938000233019F48FEF9FEFFF +:100A90000FC083E090E0821B9109880F991F2FEF10 +:100AA0003FEFA90102C0569547958A95E2F7CA0122 +:100AB00090938D0080938C000895CF93DF93EC0189 +:100AC0000E94ED28BE0180E090E0DF91CF910C9470 +:100AD00018250F931F93462F50E04E30510508F014 +:100AE000DEC0DC01FA01EA5AFF4F12968C910C9499 +:100AF000E331882309F4D3C000E010E0980140E01E +:100B000064E070E089E292E00E942B1281E090E0C4 +:100B10000FC0882309F4C3C000E010E0980140E052 +:100B200066E070E089EB91E00E942B1282E090E099 +:100B30000E945D05B4C0882309F4B1C000E010E054 +:100B4000980140E068E070E089EE91E00E942B128D +:100B500084E090E0EDCF882311F083E005C083E0CE +:100B60000CC0882349F084E00E94952540E164E0B0 +:100B700083E00E946D0A93C084E00E94B625F6CF00 +:100B8000882331F085EE0E947F1C0E94AD2D87C026 +:100B900085EE0E94471D83C0882309F480C00E940F +:100BA000BF0D7DC0882309F47AC00E94B80D00E013 +:100BB00010E0980140E065E070E089E492E027C031 +:100BC000882309F46CC085E00E94B6250E94E00DE0 +:100BD00066C0882309F463C000E010E0980140E09B +:100BE00068E070E089E191E00E942B1285E00E94AC +:100BF000952555C0882309F452C00E94BE1200E01A +:100C000010E0980140E068E070E089E191E00E9426 +:100C10002B1245C0882309F442C00E94C912EFCFAD +:100C20008823E9F100E010E0980140E066E070E020 +:100C300089E891E00E942B1284E00E94B62583E0AF +:100C40000E94B62580E10E94B62585E00E94B62567 +:100C50000E94E00D86E00E9495250E94DA2881110D +:100C600002C00E94B6280E94F22890E09093680487 +:100C7000809367048068809367040E94F6280FC001 +:100C8000882369F000E010E0980140E066E070E041 +:100C900089E591E00E942B1286E00E94B62580E053 +:100CA00090E01F910F9108950F931F932FEF89EFFD +:100CB00090E0215080409040E1F700C0000000E04B +:100CC00010E0980140E065E070E089E492E00E9465 +:100CD0002B121F910F9108950F931F9300E010E0C6 +:100CE000980140E063E070E081E091E00E942B1207 +:100CF0002FEF82E597E0215080409040E1F700C05F +:100D000000001F910F910895CF92DF92EF92FF9212 +:100D10000F931F93CF93DF93CDB7DEB7CC58D10994 +:100D20000FB6F894DEBF0FBECDBF2091210425FF82 +:100D3000C5C08C01FC01928180910001992309F4C6 +:100D400060C096E4EEE8F2E0DE01A95BBF4F0190DF +:100D50000D929A95E1F7F8019081E0916203F0918C +:100D60006303E90FF11DEE0FFF1F27E430E02C0FA6 +:100D70003D1FE20FF31F60817181680F711D88278D +:100D800077FD8095982F0E94F12E20E030E040E41E +:100D900051E40E94562E6B017C01F801218184E010 +:100DA00090E0821B9109BC01882777FD8095982FE0 +:100DB0000E94F12E9B01AC01C701B6010E94EE2DED +:100DC0009B01AC0160E070E080E090E40E94643040 +:100DD00020E030E04CE551E40E9401304FE050E06B +:100DE000C457DF4F0FB6F894DEBF0FBECDBFDF9103 +:100DF000CF911F910F91FF90EF90DF90CF900C94C7 +:100E0000CB1196E4EEE8F2E0DE01119601900D922E +:100E10009A95E1F7F8019081E0916203F091630304 +:100E2000E90FF11DEE0FFF1F21E030E02C0F3D1FF9 +:100E3000E20FF31F60817181680F711D882777FDB4 +:100E40008095982F0E94F12E20E030E040E451E49C +:100E50000E94562E6B017C01F801218184E090E014 +:100E6000821B9109BC01882777FD8095982F0E94ED +:100E7000F12E9B01AC01C701B6010E94EE2D9B0132 +:100E8000AC0160E070E080E090E40E94643020E01B +:100E900030E04CE551E40E940130C457DF4F0FB6FB +:100EA000F894DEBF0FBECDBFDF91CF911F910F91A0 +:100EB000FF90EF90DF90CF900C94130EC457DF4F4C +:100EC0000FB6F894DEBF0FBECDBFDF91CF911F915B +:100ED0000F91FF90EF90DF90CF90089508950E94BA +:100EE00020056E9A769A0C9454060C946E070C9416 +:100EF00084060895880F991FFC01E250F040859107 +:100F000094910895880F991FFC01E258FE4F859136 +:100F1000949108950F931F93CF93DF93EC01811564 +:100F200020E49207A0F5C11580E3D80708F0E1C0DE +:100F3000C83ED105D8F4C03ED10508F0EEC1C83A8C +:100F4000D10578F4C53AD10508F074C0C130D10597 +:100F500009F46DC008F4DEC1C430D10508F0DDC16C +:100F6000D9C1CB3BD10508F470C0D4C1C11590E202 +:100F7000D90708F0B9C0C11521E0D20708F0CDC1EA +:100F8000C03FD10508F4C6C18E01106506C2C1304C +:100F900080E5D80709F4BDC068F5C13120E4D20767 +:100FA00009F4AEC050F4C03190E4D90708F0A5C0F0 +:100FB000CF70DD278E01146DF0C1C33120E4D2075C +:100FC00009F4A4C008F49FC0C115D04509F0A2C11E +:100FD0000E945C210E94E00D0E946C069FEF24E3BA +:100FE0008CE0915020408040E1F700C000000E945A +:100FF0007928D3C1C11520E6D20730F4C11581E5A7 +:10100000D80708F48CC02DC1C11590E7D90708F4A2 +:1010100081C1C11520E8D20708F478C1C11580E963 +:10102000D80708F077C1DF708E01106AB6C101E001 +:1010300010E0B3C1C53AD10509F471C1C63AD10572 +:1010400009F070C102E810E4A8C1C83AD10509F45A +:101050006CC1C93AD10509F46BC1CA3AD10509F48A +:101060006AC1CB3AD10509F469C1CC3AD10509F47A +:1010700068C1CD3AD10509F467C1C03BD10509F477 +:1010800066C1CE3AD10509F465C1CF3AD10509F45C +:1010900064C1C13BD10509F463C1C23BD10509F468 +:1010A00062C1C33BD10509F461C1C43BD10509F458 +:1010B00060C1C53BD10509F45FC1C63BD10509F448 +:1010C0005EC1C73BD10509F45DC1C83BD10509F438 +:1010D0005CC1C93BD10509F45BC1CA3BD10509F428 +:1010E0005AC100E014E459C1CE019F700E948207EA +:1010F00055C1DD278E01106C50C100E011ED4DC1CE +:1011000000E010ED4AC100E012ED47C100E013ED30 +:1011100044C180913D04816080933D043EC10E94A2 +:10112000DA28811102C00E94B6280E94F22890E0BD +:101130009093680480936704C23090E5D90721F446 +:1011400080916704816086C0C43020E5D20721F415 +:101150008091670482607EC0C63080E5D80721F4A4 +:1011600080916704846076C0C83090E5D90719F48F +:101170008091670427C0CA3020E5D20721F480910E +:101180006704806167C0CC3080E5D80721F4809186 +:10119000670480625FC0CE3090E5D90721F480916A +:1011A0006704806457C0C03120E5D20721F48091E4 +:1011B000670480684FC0C23180E5D80729F4809168 +:1011C00067048460886046C0C33090E5D90721F485 +:1011D000809167048E7F3EC0C53020E5D20721F4A0 +:1011E000809167048D7F36C0C73080E5D80721F431 +:1011F000809167048B7F2EC0C93090E5D90719F420 +:101200008091670426C0CB3020E5D20721F480917D +:1012100067048F7E1FC0CD3080E5D80721F4809110 +:1012200067048F7D17C0CF3090E5D90721F48091F6 +:1012300067048F7B0FC0C13120E5D20721F4809174 +:1012400067048F7707C0C331D04531F480916704BC +:101250008B7F877F80936704809167040E94F628C4 +:101260009CC08D2F99278F70992781309105D9F4D3 +:101270009E012370332702C0880F991F2A95E2F739 +:101280009C688E0144E0000F111F4A95E1F700278A +:101290001370802B912B53E0CC0FDD1F5A95E1F793 +:1012A000C076DD272FC08230910531F4DC2FCC27AA +:1012B0008E01016F106A71C08330910569F4CE010F +:1012C0008370992701E010E002C0000F111F8A957A +:1012D000E2F7C8019C680FC0049709F05EC0CE0118 +:1012E0008370992701E010E002C0000F111F8A955A +:1012F000E2F7C8019A6823E0CC0FDD1F2A95E1F7D9 +:10130000C07ED7708C010C2B1D2B47C0DF708E0167 +:10131000106243C000E010E040C08E013EC001E812 +:1013200010E43BC003E810E438C002EE14E435C01A +:1013300009EE14E432C00AEE14E42FC005EB14E405 +:101340002CC006EB14E429C007EB14E426C00CEC17 +:1013500014E423C00DEC14E420C003E815E41DC020 +:101360000AE815E41AC002E915E417C004E915E417 +:1013700014C001E216E411C003E216E40EC004E258 +:1013800016E40BC005E216E408C006E216E405C048 +:1013900007E216E402C00AE216E4C801DF91CF9129 +:1013A0001F910F9108959CE0799FF001112490E323 +:1013B000899FE00DF11D1124E60FF11DEE0FFF1FB7 +:1013C000E258FE4F85919491803E9105E0F4803C77 +:1013D000910558F58133910509F46FC048F48932BD +:1013E000910509F463C08A32910509F46DC072C099 +:1013F00089339105E9F082389105D1F08533910563 +:1014000009F44DC067C0833E910581F138F4803EF8 +:101410009105B9F0823E9105D9F05CC0863E9105F8 +:1014200061F1873E9105A1F155C00E947A070895A8 +:101430002091670420FD02C021FF4CC080EE90E0A7 +:1014400049C08091670480FFF9CF89E390E042C0F2 +:101450008091670482FF0EC08091670484FF03C0FF +:1014600080E090E037C083EE90E034C08091670464 +:1014700082FFF2CF82EE90E02DC08091670483FF5F +:101480000BC08091670484FDEBCF87EE90E022C013 +:101490008091670483FFF5CF86EE90E01BC08091BA +:1014A000670485FF07C089E290E014C0809167045B +:1014B00085FFF9CF85E390E00DC08091670486FF3A +:1014C00007C08AE290E006C08091670486FFF9CFEA +:1014D00081E390E00E948A070895CF92DF92EF9215 +:1014E000FF920F931F9301E010E020E030E06801CD +:1014F000790104C0CC0CDD1CEE1CFF1C8A95D2F7D0 +:1015000004C0000F111F221F331F6A95D2F70C2948 +:101510001D292E293F29C0902104D0902204E0905B +:101520002304F0902404C022D122E222F322842F4B +:10153000C016D106E206F30641F41F910F91FF9009 +:10154000EF90DF90CF900C9495251F910F91FF9015 +:10155000EF90DF90CF900C94B62508950C94AD0ACF +:101560005F926F927F928F929F92AF92BF92CF9233 +:10157000DF92EF92FF920F931F93CF93DF93CDB73C +:10158000DEB728970FB6F894DEBF0FBECDBFCE01F1 +:1015900001966C014E0199E0890E911C20E030E02B +:1015A00040E050E060E070E000E010E0E12CF12C61 +:1015B0006C2C5D2C88E0782EAA24A394B12CE4ED49 +:1015C000F2E0A62DB52D872D01900D928A95E1F7B9 +:1015D000F601819191916F01FC01E07FFF27E032DC +:1015E000F10559F48F709927F50102C0EE0FFF1F26 +:1015F0008A95E2F7EE2AFF2A37C0E033F10559F465 +:101600008F709927F50102C0EE0FFF1F8A95E2F750 +:101610000E2B1F2B29C0E034F10559F48F70992748 +:10162000F50102C0EE0FFF1F8A95E2F76E2B7F2BAC +:101630001BC0E035F10559F48F709927F50102C000 +:10164000EE0FFF1F8A95E2F74E2B5F2B0DC0E036A1 +:10165000F10551F48F709927F50102C0EE0FFF1FBD +:101660008A95E2F72E2B3F2BC814D90409F0A7CF97 +:1016700084B19E2D9095892384B985B1E82AE5B877 +:1016800087B1902F9095892387B988B1082B08B925 +:101690008AB1962F909589238AB98BB1682B6BB943 +:1016A0008DB1942F909589238DB98EB1482B4EB969 +:1016B00080B3922F9095892380BB81B3282B21BBC7 +:1016C00028960FB6F894DEBF0FBECDBFDF91CF9145 +:1016D0001F910F91FF90EF90DF90CF90BF90AF9050 +:1016E0009F908F907F906F905F9008955F926F9220 +:1016F0007F928F929F92AF92BF92CF92DF92EF92A2 +:10170000FF920F931F93CF93DF93CDB7DEB7689708 +:101710000FB6F894DEBF0FBECDBF85B7806885BF1A +:1017200085B7806885BF0E94B00ACE0101966C0122 +:101730004E0199E1890E911C20E030E040E050E03C +:1017400060E070E000E010E0E12CF12C6C2C5D2CEE +:1017500088E1782EAA24A394B12CECEDF2E0A62D1A +:10176000B52D872D01900D928A95E1F7F6018191B3 +:1017700091916F01FC01E07FFF27E032F10559F400 +:101780008F709927F50102C0EE0FFF1F8A95E2F7CF +:10179000EE2AFF2A37C0E033F10559F48F709927FC +:1017A000F50102C0EE0FFF1F8A95E2F70E2B1F2BEB +:1017B00029C0E034F10559F48F709927F50102C072 +:1017C000EE0FFF1F8A95E2F76E2B7F2B1BC0E035D3 +:1017D000F10559F48F709927F50102C0EE0FFF1F34 +:1017E0008A95E2F74E2B5F2B0DC0E036F10551F4E0 +:1017F0008F709927F50102C0EE0FFF1F8A95E2F75F +:101800002E2B3F2BC814D90409F0A7CF84B19E2DED +:101810009095892384B985B1E82AE5B887B1902FDE +:101820009095892387B988B1082B08B98AB1962F7A +:10183000909589238AB98BB1682B6BB98DB1942FA0 +:10184000909589238DB98EB1482B4EB980B3922FD4 +:101850009095892380BB81B3282B21BB10926D0307 +:1018600010926C03109265031092640310926F0340 +:1018700010926E0310926703109266031092710328 +:101880001092700310926903109268031092730310 +:101890001092720310926B0310926A0368960FB64F +:1018A000F894DEBF0FBECDBFDF91CF911F910F9196 +:1018B000FF90EF90DF90CF90BF90AF909F908F9070 +:1018C0007F906F905F900C946F077F928F929F92A2 +:1018D000AF92BF92CF92DF92EF92FF920F931F933E +:1018E000CF93DF93CDB7DEB7A0970FB6F894DEBFE6 +:1018F0000FBECDBF6E0149E1C40ED11C84E6E82EB7 +:1019000083E0F82E98E0792EBC2CAD2C01E010E09D +:1019100028E1822E35E0932EE4EDF2E0AB2DBA2DD6 +:10192000872D01900D928A95E1F7F60181919191B1 +:101930006F019C01207F33272032310591F424B1BF +:101940008F709927A80102C0440F551F8A95E2F7AE +:10195000CA01922F982B94B995B18095892385B9A6 +:1019600053C02033310591F427B18F709927F801C6 +:1019700002C0EE0FFF1F8A95E2F7CF01922F982B3E +:1019800097B998B18095892388B93EC02034310534 +:1019900091F42AB18F709927A80102C0440F551FF6 +:1019A0008A95E2F7CA01922F982B9AB99BB180953C +:1019B00089238BB929C02035310591F42DB18F7061 +:1019C0009927F80102C0EE0FFF1F8A95E2F7CF01B9 +:1019D000922F982B9DB99EB1809589238EB914C002 +:1019E0002036310589F420B38F709927A80102C0F1 +:1019F000440F551F8A95E2F7CA01922F982B90BB8E +:101A000091B38095892381BB50EA5A95F1F7BE01C5 +:101A10006F5F7F4F20E030E040E050E0ECEDF2E01F +:101A2000DE011196882D01900D928A95E1F7FB0158 +:101A300081919191BF01FC01E07FFF27E032F10528 +:101A400011F4E3B113C0E033F10511F4E6B10EC0B7 +:101A5000E034F10511F4E9B109C0E035F10511F404 +:101A6000ECB104C0E036F105B9F4EFB1F0E08F70ED +:101A7000992702C0F595E7958A95E2F7E0FD08C041 +:101A8000C801042E02C0880F991F0A94E2F702C011 +:101A900080E090E0282B392B4F5F5F4F4C30510591 +:101AA00009F0BCCFF701808191818217930721F063 +:101AB00031832083909271020E94B00AF2E0EF0E0F +:101AC000F11C4CE6E41643E0F40609F025CF8091C2 +:101AD0007102882361F1815080937102882339F06B +:101AE0008FE99FE00197F1F700C0000020C08091CE +:101AF00064039091650390936D0380936C038091D0 +:101B000066039091670390936F0380936E038091B7 +:101B1000680390916903909371038093700380919F +:101B20006A0390916B0390937303809372030E94F6 +:101B3000750781E0A0960FB6F894DEBF0FBECDBF4B +:101B4000DF91CF911F910F91FF90EF90DF90CF9099 +:101B5000BF90AF909F908F907F900895E82FF0E016 +:101B6000EE0FFF1FE459FC4F808191810895089585 +:101B7000809152048160809352040C9408298091D2 +:101B800052048E7F809352040C9408290E94DA2814 +:101B9000811102C00E94B6280E9404298093520439 +:101BA0003E9A809171008D7F8093710082E08093D6 +:101BB00090008AE18093910081E0809376030895FC +:101BC00080917603811102C00E94C60D1092C60357 +:101BD0001092C503809171008D7F80937100809178 +:101BE00090008F7780939000109288031092870363 +:101BF0001092BF031092C0031092C1031092C2034F +:101C00001092BE031092BD03EDE9F3E0ADE8B3E03E +:101C100011921192119211921D921D9283E0ED3B4F +:101C2000F807B1F70895CF92DF92EF92FF920F93EA +:101C30001F93CF93DF9320918703222309F484C05D +:101C40006B017C0180917603811102C00E94C60D58 +:101C50000DEB13E0C7E0D0E0A7019601F8019291E7 +:101C60008291729162918F010E94522E811131C036 +:101C7000FE01EE0FFF1FEE0FFF1FE356FC4F108219 +:101C8000118212821382DE01AA0FBB1FA357BC4F21 +:101C900011961C921E92C730D105E9F0219644811D +:101CA0005581668177814083518362837383148277 +:101CB00015821682178212968D919C911397119618 +:101CC0009C938E9313961C921E92129734961296A2 +:101CD000E2CF219708F68091C5039091C603019742 +:101CE00097FD05C09093C6038093C50304C010926E +:101CF000C6031092C5038091C5039091C60320913D +:101D0000C3033091C4032817390724F01092C40389 +:101D10001092C303892BC1F4809171008D7F809351 +:101D20007100809190008F77809390001092BF0394 +:101D30001092C0031092C1031092C2031092BE030E +:101D40001092BD0310928703DF91CF911F910F91E5 +:101D5000FF90EF90DF90CF9008951F920F920FB6F3 +:101D60000F9211244F925F926F927F928F929F9267 +:101D7000AF92BF92CF92DF92EF92FF922F933F9359 +:101D80004F935F936F937F938F939F93AF93BF9383 +:101D9000CF93DF93EF93FF9380918703882309F418 +:101DA0009BC1C091C503D091C6031C161D060CF043 +:101DB00093C14090770350907803609079037090BE +:101DC0007A0320E030E0A901C301B2010E94FD2F97 +:101DD00018160CF065C0C130D10509F452C08091CD +:101DE000C3039091C403BE010E94CF317C01909344 +:101DF000C4038093C3038090890390908A03A090CA +:101E00008B03B0908C0320E030E040E85FE3C50135 +:101E1000B4010E94EE2D6093890370938A0380932E +:101E20008B0390938C03F701EE0FFF1FEE0FFF1F44 +:101E3000E356FC4FA30192016081718182819381FD +:101E40000E94562E20E030E040E05EE30E94013028 +:101E50009B01AC01C501B4010E94FD2F18168CF442 +:101E6000C7010196BE010E94CF319093C4038093B5 +:101E7000C3031092890310928A0310928B0310926D +:101E80008C03E091C303F091C403EE0FFF1FEE0F2C +:101E9000FF1FE356FC4F6081718182819381D0C026 +:101EA000C090BF03D090C003E090C103F090C20384 +:101EB00020E030E0A901C701B6010E94522E21970F +:101EC000882309F4A2C0FE01EE0FFF1FEE0FFF1FD3 +:101ED000E356FC4F80809180A280B380A5019401DD +:101EE000C701B6010E94522E87FF31C0A50194019F +:101EF00060E070E08CED93EC0E94562E20E030E024 +:101F000040E451E40E94562E20E030E040E05FE3E0 +:101F10000E9401309B01AC0160E070E080E090E441 +:101F20000E9464309B01AC01C501B4010E940130E4 +:101F30009B01AC01C701B6010E94522E87FF07C06A +:101F4000A701960160E070E08CED93E439C0A50133 +:101F50009401C701B6010E94FD2F18160CF055C060 +:101F6000A501940160E070E08CED93E40E94562E90 +:101F700020E030E040E451E40E94562E20E030E0C2 +:101F800040E05FE30E9401309B01AC0160E070E043 +:101F900080E090E40E9464309B01AC01C501B40173 +:101FA0000E9401309B01AC01C701B6010E94FD2FC8 +:101FB00018165CF5A701960160E070E08CED93ECDB +:101FC0000E94562E20E030E040E451E40E94562E5C +:101FD00020E030E040E05FE30E9401309B01AC0173 +:101FE00060E070E080E090E40E9464309B01AC010E +:101FF000C701B6010E9401306093BF037093C00314 +:102000008093C1039093C20313C0FE01EE0FFF1F24 +:10201000EE0FFF1FE356FC4F80819181A281B381B7 +:102020008093BF039093C003A093C103B093C203F6 +:102030006091BF037091C0038091C1039091C2036E +:1020400020917403309175032F3F4FEF340731F027 +:102050002F5F3F4F30937503209374030E94D41277 +:102060006B017C0120E034E244EF51E40E94522EE7 +:1020700087FF08C086EFC82E88E2D82E84EFE82EAE +:1020800081E4F82E20E030E040E051E4C701B601E1 +:102090000E9401309B01AC0160E074E284E79BE4A4 +:1020A0000E94562E6B017C010E94BE2E70939700F9 +:1020B00060939600209172023091730240917402F5 +:1020C00050917502C701B6010E9401300E94BE2ED8 +:1020D000709399006093980080918803882309F495 +:1020E00033C1C0908303D0908403E0908503F090C7 +:1020F000860320E030E0A901C701B6010E94FD2F50 +:102100001816D4F580917403909175038F3F2FEFCB +:10211000920729F001969093750380937403C70189 +:10212000B6010E94D41220E030E040E051E40E9469 +:1021300001309B01AC0160E074E284E79BE40E9403 +:10214000562E6B017C010E94BE2E70939700609307 +:102150009600209172023091730240917402509166 +:102160007502C701B6010E9401300E94BE2E709315 +:1021700099006093980008C0109297001092960002 +:10218000109299001092980060917D0370917E03E7 +:102190006F5F7F4F70937E0360937D032091960065 +:1021A0003091970080E090E0232BF1F0C0919600F1 +:1021B000D09197000E94EF2E6B017C01BE0180E060 +:1021C00090E00E94EF2E9B01AC0160917F03709123 +:1021D000800380918103909182030E94562E20E01B +:1021E0003FEF4FE757E410C00E94EF2E6B017C01D8 +:1021F00020E030EE4FEF54E460917F037091800354 +:1022000080918103909182030E9401309B01AC0177 +:10221000C701B6010E94FD2F87FD96C080917B0308 +:102220008F5F80937B0390E020914E0430914F04A8 +:1022300082179307A0F080915904882319F0109217 +:102240007B030DC0809171008D7F80937100809120 +:1022500090008F7780939000109288037DC08091CA +:102260007C03C0917B03811128C0C0905304D0909F +:102270005404E0905504F090560420E030E0A901A9 +:10228000C701B6010E94FD2F1816BCF481E08093AF +:102290007C031092830310928403109285031092A2 +:1022A0008603C0927F03D0928003E0928103F09274 +:1022B0008203C150C0937B0343C010927C031092F1 +:1022C000750310927403E0915004F091510448E0BA +:1022D000C49FE00DF11D112480819181A281B38101 +:1022E0008093830390938403A0938503B093860324 +:1022F00020E030E040E85EE364817581868197816B +:102300000E9401306B017C0120E030E048EC52E497 +:1023100060917602709177028091780290917902B3 +:102320000E94562E9B01AC01C701B6010E940130EC +:1023300060937F0370938003809381039093820363 +:1023400010927E0310927D038091520480FD04C0A0 +:102350001092880310928703FF91EF91DF91CF9144 +:10236000BF91AF919F918F917F916F915F914F91AD +:102370003F912F91FF90EF90DF90CF90BF90AF9063 +:102380009F908F907F906F905F904F900F900FBEB7 +:102390000F901F901895CF92DF92EF92FF92CF93FC +:1023A000DF936B017C01EA0180917603811102C009 +:1023B0000E94C60D8091520480FF46C08091C503E3 +:1023C0009091C60308970CF03FC0809171008D7FFB +:1023D000809371008091880381110E94E00D81E05B +:1023E00080938703109275031092740320E030E00D +:1023F000A901C701B6010E94FD2F1816DCF48091D7 +:10240000C5039091C603FC01EE0FFF1FEE0FFF1FE7 +:10241000E356FC4FC082D182E282F382FC01EE0FD0 +:10242000FF1FE357FC4FD183C08301969093C603EF +:102430008093C503809171008260809371008091C8 +:102440009000806880939000DF91CF91FF90EF9093 +:10245000DF90CF9008958F929F92AF92BF92CF92CC +:10246000DF92EF92FF920F931F93CF93DF93EC01D4 +:102470007B01D42E4801590180917603811102C05D +:102480000E94C60D8091520480FF6BC08091710044 +:102490008D7F809371008091870381110E94E00DF0 +:1024A00081E080938803D0935104C0935004F0924C +:1024B0004F04E0924E04D0925904809253049092BB +:1024C0005404A0925504B0925604109289031092BD +:1024D0008A0310928B0310928C0310927B038881E5 +:1024E0009981AA81BB818093830390938403A093F5 +:1024F0008503B093860320E030E040E85EE36C8122 +:102500007D818E819F810E9401306B017C0120E0E2 +:1025100030E048EC52E4609176027091770280914D +:102520007802909179020E94562E9B01AC01C7015E +:10253000B6010E94013060937F0370938003809303 +:1025400081039093820310927E0310927D03809109 +:102550007100826080937100809190008068809308 +:102560009000DF91CF911F910F91FF90EF90DF903E +:10257000CF90BF90AF909F908F9008958091C703A8 +:1025800090E0019666E070E00E94CF318093C7032F +:1025900008958091C70390E0019766E070E00E9483 +:1025A000CF318093C70308958F929F92AF92BF92CD +:1025B000CF92DF92EF92FF920F931F93CF93DF930F +:1025C0006B017C01C0917403D0917503BE0180E062 +:1025D00090E00E94EF2E4B015C01A701960160E0A4 +:1025E00070E08CE594E40E94562E9B01AC01C5017D +:1025F000B4010E9401300E94C32E2091C7032330F2 +:1026000009F473C028F4222351F02130E9F02CC1E1 +:10261000243009F4A0C0253009F4E0C025C180E0D1 +:1026200090E0A0E0BFE38093720290937302A093C6 +:102630007402B0937502109277031092780310928F +:10264000790310927A0310C11092770310927803E5 +:102650001092790310927A036431710540F46A3064 +:10266000710560F520E030E040E85EE32BC0693C96 +:10267000710508F0AAC080E090E00E94EF2E20E0F3 +:1026800030E040EA51E40E94ED2D20E030E044E3E8 +:1026900053E40E94562E9B01AC010E94013020E0C1 +:1026A00030E040E05EE30E9401309B01AC0160E05D +:1026B00070E080E09EE30E94ED2D44C020E030E019 +:1026C00040E05FE3C701B6010E9401306B017C016D +:1026D00080E090E0A0E0BEE38093720290937302EA +:1026E000A0937402B0937502BFC01092770310924A +:1026F00078031092790310927A034AE0469F900182 +:10270000479F300D1124C90168EB7BE00E94BB316B +:10271000BC016C5D754077FF03C0719561957109CF +:10272000882777FD8095982F0E94F12E2EE333ECB9 +:102730004EE259E30E94013020E030E040EC5EE3DD +:102740000E94EE2D60937202709373028093740264 +:102750009093750289C010927703109278031092BB +:10276000790310927A03CE0183709927892BE1F0C7 +:10277000BE016170772780E090E00E94EF2E20E09C +:1027800030E040E05EE30E94013020E030E040E4D1 +:102790005FE30E94EE2D6093720270937302809348 +:1027A0007402909375020CC080E090E0A0E0BFE35B +:1027B0008093720290937302A0937402B093750297 +:1027C000C770DD27CD2B09F04FC010927202109216 +:1027D0007302109274021092750246C01092770331 +:1027E000109278031092790310927A0300E010E0BF +:1027F00020E03FE30093720210937302209374026F +:10280000309375026739710578F180E090E00E949D +:10281000EF2E20E030E047E153E40E94ED2D20E070 +:1028200030E04AE754E40E94562E20E030E048E4CD +:1028300052E40E94013020E030E040EA51E40E947E +:10284000332F0E94BE2E660F771F660F771FFB0186 +:10285000EC50FD4F2081318142815381C701B60187 +:102860000E9401306B017C01C701B601DF91CF915D +:102870001F910F91FF90EF90DF90CF90BF90AF909E +:102880009F908F9008958091D8030895CF93DF9300 +:1028900000D01F92CDB7DEB79C0180915E048430DA +:1028A00019F593E099833B832A839093E9008FEF96 +:1028B0009091E800815095FD06C095ED9A95F1F74D +:1028C00000008111F5CF8091E80085FF0DC040E048 +:1028D00050E063E070E0CE0101960E94A71680915F +:1028E000E8008E778093E8000F900F900F90DF91B3 +:1028F000CF910895CF93DF9300D01F92CDB7DEB76D +:1029000020915E04243021F522E029839B838A8371 +:1029100083E08093E9008FEF9091E800815095FD6E +:1029200006C095ED9A95F1F700008111F5CF8091E1 +:10293000E80085FF0DC040E050E063E070E0CE01AC +:1029400001960E94A7168091E8008E778093E80098 +:102950000F900F900F90DF91CF91089520915E041A +:102960002430F1F422E02093E9002FEF3091E800C9 +:10297000215035FD06C035ED3A95F1F700002111E3 +:10298000F5CF2091E80025FF0BC040E050E065E066 +:1029900070E00E94A7168091E8008E778093E8008F +:1029A0000895CF93DF93EC0190915E04943009F089 +:1029B00046C0809184028823D9F0809185028823C3 +:1029C000B9F09093E9008FEF9091E800815095FD68 +:1029D00006C095E19A95F1F700008111F5CF80913D +:1029E000E80085FF2CC040E050E060E170E017C0D7 +:1029F00081E08093E9008FEF9091E800815095FD90 +:102A000006C095ED9A95F1F700008111F5CF809100 +:102A1000E80085FF14C040E050E068E070E0CE01BF +:102A20000E94A7168091E8008E778093E80080E1ED +:102A3000FE01A8ECB3E001900D928A95E1F7DF91D9 +:102A4000CF91089580915D04811109C00E943C18C6 +:102A50000E9499188091E20084608093E2000895BA +:102A600010925D040895089508950C94E12742E0C2 +:102A700061EC81E00E94B61742E061EC82E00E94C6 +:102A8000B61742E061EC83E00E94B61742E161ECC8 +:102A900084E00C94B61780916004833009F455C02B +:102AA00030F4813071F0823009F48EC008958A309C +:102AB00009F47AC08B3009F460C0893009F09CC0F9 +:102AC00020C080915F04813A09F096C08091E800AF +:102AD000877F8093E8008091630490916404892B40 +:102AE00021F460E188EC93E003C060E080E090E0D6 +:102AF00070E00E94F2168091E8008B778093E800E6 +:102B0000089580915F04813209F076C0809163045A +:102B100090916404009719F0039709F06DC08091BB +:102B2000E800877F8093E8008091E80082FD05C07F +:102B300080915E048111F8CF5FC08091F100809395 +:102B4000D8038091E8008B7753C080915F04813A6D +:102B500009F052C08091630490916404892B09F0BC +:102B60004BC08091E800877F8093E8008091E80067 +:102B700080FFFCCF8091840236C080915F04813257 +:102B8000D9F58091630490916404892BA9F5809113 +:102B9000E800877F8093E8000E94EB178091610432 +:102BA000809384020C945C2180915F04813221F532 +:102BB0008091E800877F8093E8000E94EB17809166 +:102BC00062048093D903089580915F04813AA1F44F +:102BD0008091E800877F8093E8008091E80080FF83 +:102BE000FCCF8091D9038093F1008091E8008E772B +:102BF0008093E8000C94EB17089584B7877F84BF17 +:102C000088E10FB6F89480936000109260000FBEC8 +:102C100090E080E80FB6F894809361009093610093 +:102C20000FBE0E948E1B0E943C180E949918809132 +:102C3000E20084608093E20078940E941F1B0E944F +:102C4000901B8AE792E00E943A1B80915E048530D7 +:102C500069F40E949B2780915C048823B1F30E9451 +:102C6000C927882391F30E949116EFCF0E94981BE9 +:102C7000ECCF292F332723303105C9F064F42130FC +:102C8000310581F02230310509F043C08DE690E036 +:102C90002AE338E042C021323105F1F02232310519 +:102CA00041F137C082E190E027EA38E036C0992749 +:102CB0008130910541F08230910541F0892B49F531 +:102CC000E6E3F8E005C0E8E0F8E002C0EEEDF7E08A +:102CD000849190E09F0121C06430D8F4E62FF0E0A9 +:102CE000EE0FFF1FE05BFC4F2081318189E090E017 +:102CF00014C0643070F470E0FB01EE0FFF1FE85B5E +:102D0000FC4F20813181FB01EC5BFC4F808190E026 +:102D100004C080E090E020E030E0FA0131832083BD +:102D2000089580E189BD82E189BD09B400FEFDCF2F +:102D30008091D8008F7D8093D8008091E0008260E0 +:102D40008093E0008091E00081FDFCCF0895CF9258 +:102D5000DF92EF92FF920F931F93CF93DF93EC01DB +:102D60008B016A010E940A18811133C0C114D10479 +:102D700039F0F60180819181081B190BC80FD91F0A +:102D8000E12CF12C0115110519F18091E80085FD68 +:102D900016C08091E8008E778093E800C114D104BA +:102DA00049F0F60180819181E80EF91EF182E082FE +:102DB00085E00FC00E940A18882321F30AC0899178 +:102DC0008093F10001501109FFEFEF1AFF0ADACFEB +:102DD00080E0DF91CF911F910F91FF90EF90DF90F6 +:102DE000CF90089520916504309166042617370727 +:102DF00048F06115710539F42091E8002E77209391 +:102E0000E80001C0B90140E061157105A9F1209108 +:102E10005E04222309F443C0253009F442C0209106 +:102E2000E80023FD40C02091E80022FD32C020913F +:102E3000E80020FFE9CF4091F3002091F20030E05C +:102E4000342BFC01CF016115710559F02830310593 +:102E500040F481918093F100615071092F5F3F4FE1 +:102E6000F1CF41E02830310509F040E02091E80041 +:102E70002E772093E800C8CF4111C9CF0AC08091B6 +:102E80005E04882361F0853061F08091E80083FD65 +:102E90000AC08091E80082FFF2CF80E0089582E0CE +:102EA000089583E0089581E00895209165043091AC +:102EB00066042617370748F06115710539F420912B +:102EC000E8002E772093E80001C0B901FC0120E062 +:102ED0006115710591F180915E04882309F440C069 +:102EE000853009F43FC08091E80083FD3DC08091AA +:102EF000E80082FD2FC08091E80080FFE9CF20919B +:102F0000F3008091F20090E0922B6115710559F069 +:102F10008830910540F424912093F100319661505E +:102F200071090196F2CF21E0089709F020E0809125 +:102F3000E8008E778093E800CBCF2111CCCF0AC078 +:102F400080915E04882361F0853061F08091E80013 +:102F500083FD0AC08091E80082FFF2CF80E00895EF +:102F600082E0089583E0089581E00895982F9730D6 +:102F700058F59093E900981739F07091EC00209182 +:102F8000ED005091F00003C0242F762F50E021FF78 +:102F900019C03091EB003E7F3093EB003091ED0093 +:102FA0003D7F3093ED003091EB0031603093EB00CA +:102FB0007093EC002093ED005093F0002091EE0010 +:102FC00027FF07C09F5FD3CF8F708093E90081E018 +:102FD000089580E0089580915F0487FF11C080917B +:102FE000E80082FD05C080915E048111F8CF11C018 +:102FF0008091E8008B770BC080915E04882349F0B4 +:103000008091E80080FFF8CF8091E8008E77809370 +:10301000E80008952091E4003091E50095E64091A4 +:10302000EC00842F817040FF22C08091E80080FD79 +:103030001CC080915E04882391F0853091F08091CE +:10304000EB0085FD10C04091E4005091E50042176F +:10305000530729F39A01915011F784E0089582E013 +:10306000089583E0089581E0089580E008954091F7 +:10307000E80042FFDECF08950E94AA180E94B2180D +:10308000E0EEF0E0808181608083E8EDF0E0808117 +:103090008F77808319BCA7EDB0E08C918E7F8C93E5 +:1030A00080818F7E808310925D0408950F931F931B +:1030B000CF93DF930E94AA180E94B218C8EDD0E007 +:1030C00088818F77888388818068888388818F7DD5 +:1030D000888319BC10925E0410925A0410925C040A +:1030E00010925B0400EE10E0F80180818B7F8083FA +:1030F00088818160888342E060E080E00E94B617AA +:10310000E1EEF0E080818E7F8083E2EEF0E080816E +:1031100081608083808188608083F80180818E7FD8 +:103120008083888180618883DF91CF911F910F9187 +:103130000895E8EDF0E080818F7E8083E7EDF0E098 +:1031400080818160808384E082BF81E080935D0420 +:103150000C945618E8EDF0E080818E7F8083109209 +:10316000E20008951092DA001092E10008951F9293 +:103170000F920FB60F9211242F933F934F935F93AB +:103180006F937F938F939F93AF93BF93EF93FF932F +:103190008091E10082FF0BC08091E20082FF07C0B6 +:1031A0008091E1008B7F8093E1000E941E1B809143 +:1031B000DA0080FF1FC08091D80080FF1BC0809183 +:1031C000DA008E7F8093DA008091D90080FF0DC0F5 +:1031D00080E189BD82E189BD09B400FEFDCF81E0B7 +:1031E00080935E040E94221505C019BC10925E04F3 +:1031F0000E9430158091E10080FF19C08091E200AB +:1032000080FF15C08091E2008E7F8093E200809164 +:10321000E20080618093E2008091D8008062809318 +:10322000D80019BC85E080935E040E94341580911B +:10323000E10084FF30C08091E20084FF2CC080E177 +:1032400089BD82E189BD09B400FEFDCF8091D8001F +:103250008F7D8093D8008091E1008F7E8093E10084 +:103260008091E2008F7E8093E2008091E200816095 +:103270008093E20080915A04882311F084E007C013 +:103280008091E30087FD02C081E001C083E080936C +:103290005E040E9435158091E10083FF29C0809172 +:1032A000E20083FF25C08091E100877F8093E100E9 +:1032B00082E080935E0410925A048091E1008E7F38 +:1032C0008093E1008091E2008E7F8093E200809104 +:1032D000E20080618093E20042E060E080E00E94D2 +:1032E000B6178091F00088608093F0000E9433153B +:1032F000FF91EF91BF91AF919F918F917F916F91CE +:103300005F914F913F912F910F900FBE0F901F90A3 +:1033100018951F920F920FB60F9211242F933F937F +:103320004F935F936F937F938F939F93AF93BF93CD +:10333000CF93DF93EF93FF93C091E900CF7080911B +:10334000EC00D82FD17080FDD0E81092E900809178 +:10335000F000877F8093F00078940E94CD1910923E +:10336000E9008091F00088608093F000CD2BCF7051 +:10337000C093E900FF91EF91DF91CF91BF91AF91A1 +:103380009F918F917F916F915F914F913F912F917D +:103390000F900FBE0F901F9018951F93CF93DF9340 +:1033A000CDB7DEB7AA970FB6F894DEBF0FBECDBF7C +:1033B000EFE5F4E088E08E0F9091F10091938E1389 +:1033C000FBCF0E944B158091E80083FF1FC18091C5 +:1033D0005F0490916004492F50E04A30510508F095 +:1033E00015C1FA01EC59FF4F0C94E331803881F09C +:1033F000823809F00BC1809163048F708093E900DB +:103400008091EB0085FB882780F91092E90006C0C7 +:1034100080915B0490915C04911182609091E8002E +:10342000977F9093E8008093F1001092F100C8C05C +:10343000282F2D7F09F0EAC0882319F0823061F02F +:10344000E5C080916104813009F0E0C0933009F05B +:1034500080E080935C042BC080916104811127C0BF +:10346000809163048F7009F4D1C08093E9002091AA +:10347000EB0020FF1CC0933021F48091EB008062B0 +:1034800014C09091EB0090619093EB0021E030E04C +:10349000A90102C0440F551F8A95E2F74093EA0044 +:1034A0001092EA008091EB0088608093EB0010920C +:1034B000E9008091E800877F86C08111A7C0109144 +:1034C00061041F778091E3008078812B8093E30073 +:1034D0008091E800877F8093E8000E94EB1780913D +:1034E000E80080FFFCCF8091E30080688093E300D8 +:1034F000111102C082E001C083E080935E0486C0A7 +:103500008058823008F082C08091610490916204FA +:103510008C3D53E0950779F583E08A838AE28983BD +:103520004FB7F894DE01139620E03EE051E2E32F1E +:10353000F0E050935700E49120FF03C0E295EF7054 +:103540003F5FEF708E2F90E0EA3010F0C79601C019 +:10355000C0968D939D932F5F243149F74FBF809183 +:10356000E800877F8093E8006AE270E0CE01019670 +:103570000E94F21614C0AE014F5F5F4F609163046A +:103580000E943916BC01009709F440C09091E800F0 +:10359000977F9093E80089819A810E9455178091C6 +:1035A000E8008B778093E80031C0803879F580910E +:1035B000E800877F8093E80080915A048093F100AF +:1035C0008091E8008E778093E8000E94EB171EC080 +:1035D00081111CC0909161049230C0F48091E80088 +:1035E000877F8093E80090935A040E94EB178091A4 +:1035F0005A04811106C08091E30087FD02C081E07A +:1036000001C084E080935E040E9437158091E80039 +:1036100083FF0AC08091E800877F8093E800809153 +:10362000EB0080628093EB00AA960FB6F894DEBFA1 +:103630000FBECDBFDF91CF911F9108950895CF9315 +:1036400080915E048823A1F0C091E900CF70909131 +:10365000EC00892F817090FD80E8C82B1092E90062 +:103660008091E80083FD0E94CD19CF70C093E900DE +:10367000CF9108959093DF038093DE030895E09146 +:10368000DE03F091DF03309721F00190F081E02D0F +:10369000099480E00895E091DE03F091DF03309714 +:1036A00021F00280F381E02D09940895E091DE037A +:1036B000F091DF03309721F00480F581E02D09942B +:1036C00008952091DC033091DD038217930771F098 +:1036D0009093DD038093DC03E091DE03F091DF0340 +:1036E000309721F00680F781E02D0994089520910C +:1036F000DA033091DB038217930771F09093DB03B9 +:103700008093DA03E091DE03F091DF03309721F03C +:103710000084F185E02D0994089508950C948D1B83 +:103720000E9415280E94760B0E949B280C94562D0F +:103730004F925F927F928F929F92AF92BF92CF9261 +:10374000DF92EF92FF920F931F93CF93DF93CDB74A +:10375000DEB72A970FB6F894DEBF0FBECDBF0E942A +:10376000650C91EEC92E93E0D92E00E010E0AA245A +:10377000A394B12C702E802F0E94AE0D4C01F60147 +:10378000419051906F014826592641145104B1F4DB +:103790000F5F1F4F0430110569F78FEF89838A830C +:1037A0001B820E941E288160782F9D838C83498113 +:1037B0005A816B818D810E94511C3AC080913D04D9 +:1037C00081FD0E94B70D20E030E07501022E02C09D +:1037D000EE0CFF1C0A94E2F7C70184219521892B86 +:1037E00009F12E837F828E209F2091E0892809F4A1 +:1037F00090E098870E941E288160782F9A87898799 +:103800004E815F8168858A850E94511C000F111FBF +:10381000F801EF51FC4F80819181E826F926F18271 +:10382000E08206C02F5F3F4F2C30310571F6B0CFDC +:103830000E94872A1091E0030E943F1B1817D9F0BD +:103840000E943F1B8093E0032A960FB6F894DEBFD8 +:103850000FBECDBFDF91CF911F910F91FF90EF90E1 +:10386000DF90CF90BF90AF909F908F907F905F90B0 +:103870004F900C94AE0A2A960FB6F894DEBF0FBE96 +:10388000CDBFDF91CF911F910F91FF90EF90DF900F +:10389000CF90BF90AF909F908F907F905F904F9010 +:1038A0000895CF93DF93CDB7DEB72B970FB6F8947B +:1038B000DEBF0FBECDBF4F83588769877A878B875E +:1038C000DE01119686E0FD0111928A95E9F785E007 +:1038D000FE01379601900D928A95E1F749815A8150 +:1038E0006B817C818D819E810E94F6232B960FB681 +:1038F000F894DEBF0FBECDBFDF91CF910895CF9377 +:10390000882309F4C2C0C82F823859F40E943F1B93 +:1039100081FDBBC089E30E949F260E946C2789E33A +:103920000CC0833879F40E943F1B80FDAEC083E554 +:103930000E949F260E946C2783E50E94E126CF917A +:103940000C946C27843859F40E943F1B82FD9DC063 +:1039500087E40E949F260E946C2787E4EECF8CEFBD +:103960008C0F813A48F48C2F0E94BE2C81118DC09F +:103970008C2F0E949F26E3CF80E28C0F883048F482 +:10398000C77081E001C0880FCA95EAF70E94252719 +:10399000D6CF8BE58C0F833078F4C53A29F0C63A40 +:1039A00031F083E890E005C081E890E002C082E851 +:1039B00090E0CF910C94611B88E58C0F833108F067 +:1039C00064C0C83A39F1C93A41F1CA3A49F1CB3A2F +:1039D00051F1CC3A59F1CD3A61F1C03B69F1CE3A9F +:1039E00071F1CF3A79F1C13B81F1C23B89F1C33B1F +:1039F00091F1C43B99F1C53BA1F1C63BA9F1C73B8D +:103A0000B1F1C83BB9F1C93BC1F1CA3BC9F180E092 +:103A100090E038C082EE90E035C089EE90E032C090 +:103A20008AEE90E02FC085EB90E02CC086EB90E012 +:103A300029C087EB90E026C08CEC90E023C08DEC91 +:103A400090E020C083E891E01DC08AE891E01AC0B0 +:103A500082E991E017C084E991E014C081E292E02C +:103A600011C083E292E00EC084E292E00BC085E2D6 +:103A700092E008C086E292E005C087E292E002C0D0 +:103A80008AE292E0CF910C94771BCF91089588231E +:103A900009F44BC0823859F40E943F1B81FF45C096 +:103AA00089E30E949F260E946C2789E30CC083381B +:103AB00071F40E943F1B80FF38C083E50E949F265F +:103AC0000E946C2783E50E94E1260C946C278438C1 +:103AD00059F40E943F1B82FF28C087E40E949F2662 +:103AE0000E946C2787E4EFCF9CEF980F913A58F330 +:103AF00090E2980F983050F4877091E001C0990FD0 +:103B00008A95EAF7892F0E942B27DFCF9BE5980F34 +:103B1000933020F480E090E00C94611B885A83314C +:103B200020F480E090E00C94771B0895882321F026 +:103B30000E9425270C946C270895882321F00E9469 +:103B40002B270C946C270895BF92CF92DF92EF92AF +:103B5000FF920F931F93CF93DF9300D000D000D03C +:103B6000CDB7DEB725E0FC01DE01119601900D9284 +:103B70002A95E1F7FC01D0801181028125812295EF +:103B80002F7043815481452B09F472C31F3F21F4E8 +:103B9000FFEFDF1609F46CC37C012E830E947707C8 +:103BA000D9821A8369817A81802F0E949B26182FDF +:103BB000B92E0E9450260E9417252E81002319F04D +:103BC0000E9442272E81EB2DE295EF70F0E0E25942 +:103BD000FF4F0C94E3318B2D807F9B2D9F70F92E2E +:103BE000882319F0F29480EFF822002389F0FF2057 +:103BF00009F47CC280E2810F883020F48F2D0E946E +:103C0000252703C08F2D0E9435270E946C276EC286 +:103C1000812F0E94471DFF2009F42AC3105E8F2DBB +:103C2000183018F40E942B2702C00E943B272696CA +:103C30000FB6F894DEBF0FBECDBFDF91CF911F91BD +:103C40000F91FF90EF90DF90CF90BF900C946C2776 +:103C50008B2D807F9B2D9F70803211F4892F03C0A4 +:103C6000892F8295807F112319F0113011F12BC01B +:103C70000023A9F0222389F1213079F526960FB689 +:103C8000F894DEBF0FBECDBFDF91CF911F910F9192 +:103C9000FF90EF90DF90CF90BF900C945527222398 +:103CA00019F0213009F4E4C28E830E9458278E81D6 +:103CB0009BC1002321F0263008F0DAC20EC0253067 +:103CC00008F0D6C291C10023C9F0222331F0F701D8 +:103CD000958190FF0BC29F70958326960FB6F8943E +:103CE000DEBF0FBECDBFDF91CF911F910F91FF902F +:103CF000EF90DF90CF90BF900C94961D222309F493 +:103D000073C109C22B2D26952695237030E021150D +:103D1000310521F021303105D1F0AAC2002321F074 +:103D2000812F9B2D937002C080E090E026960FB605 +:103D3000F894DEBF0FBECDBFDF91CF911F910F91E1 +:103D4000FF90EF90DF90CF90BF900C94611B002309 +:103D500021F0812F9B2D937002C080E090E0269689 +:103D60000FB6F894DEBF0FBECDBFDF91CF911F918C +:103D70000F91FF90EF90DF90CF90BF900C94771B46 +:103D8000812F002319F00E948F2902C00E94F72979 +:103D900026960FB6F894DEBF0FBECDBFDF91CF9150 +:103DA0001F910F91FF90EF90DF90CF90BF900C94F8 +:103DB0007C2A8B2D837009F07BC0011159C2812FA1 +:103DC000829586958770880F880F912F9F70C92ED6 +:103DD000D12CE12CF12C082E04C0CC0CDD1CEE1CE7 +:103DE000FF1C0A94D2F714FF12C04FE050E060E0CD +:103DF00070E004C0440F551F661F771F8A95D2F7E5 +:103E0000CB01BA01609570958095909503C060E0F4 +:103E100070E0CB012B2D269526952370422F50E084 +:103E200042305105D9F04330510569F16C297D29A3 +:103E30008E299F294130510551F126960FB6F894ED +:103E4000DEBF0FBECDBFDF91CF911F910F91FF90CD +:103E5000EF90DF90CF90BF900C943E256C297D2988 +:103E60008E299F2926960FB6F894DEBF0FBECDBFD0 +:103E7000DF91CF911F910F91FF90EF90DF90CF9046 +:103E8000BF900C945A250E943E25C701B601269684 +:103E90000FB6F894DEBF0FBECDBFDF91CF911F915B +:103EA0000F91FF90EF90DF90CF90BF900C94222560 +:103EB000002319F08B2D817001C08695882309F4A9 +:103EC000D7C1812F829586958770880F880F912F93 +:103ED0009F70C92ED12CE12CF12C082E04C0CC0CE3 +:103EE000DD1CEE1CFF1C0A94D2F714FF12C04FE039 +:103EF00050E060E070E004C0440F551F661F771F5C +:103F00008A95D2F7CB01BA0160957095809590950E +:103F100003C060E070E0CB012B2D26952695237021 +:103F2000422F50E042305105D9F04330510569F13C +:103F30006C297D298E299F294130510551F1269602 +:103F40000FB6F894DEBF0FBECDBFDF91CF911F91AA +:103F50000F91FF90EF90DF90CF90BF900C941826B8 +:103F60006C297D298E299F2926960FB6F894DEBFED +:103F70000FBECDBFDF91CF911F910F91FF90EF90BA +:103F8000DF90CF90BF900C9434260E941826C70172 +:103F9000B60126960FB6F894DEBF0FBECDBFDF91F7 +:103FA000CF911F910F91FF90EF90DF90CF90BF9036 +:103FB0000C94FC25103F49F118F4103E48F491C0D0 +:103FC000123F09F453C0E8F1133F09F464C089C0FB +:103FD0001F708B2D8F71002321F00E949525812F5A +:103FE0007CCE0E94B625812F26960FB6F894DEBFB0 +:103FF0000FBECDBFDF91CF911F910F91FF90EF903A +:10400000DF90CF90BF900C949D1D0023B1F0253020 +:1040100008F02EC18B2D8F7126960FB6F894DEBF57 +:104020000FBECDBFDF91CF911F910F91FF90EF9009 +:10403000DF90CF90BF900C94DB25263008F018C19C +:10404000E9CF0023A9F08B2D8F7126960FB6F89437 +:10405000DEBF0FBECDBFDF91CF911F910F91FF90BB +:10406000EF90DF90CF90BF900C949525002359F3EB +:104070008B2D8F7126960FB6F894DEBF0FBECDBF85 +:10408000DF91CF911F910F91FF90EF90DF90CF9034 +:10409000BF900C94B625002399F08B2D8F71269636 :1040A0000FB6F894DEBF0FBECDBFDF91CF911F9149 -:1040B0000F91FF90EF90DF90CF90BF900C9465250B -:1040C0000023A9F0222309F4ADCF812F26960FB645 -:1040D000F894DEBF0FBECDBFDF91CF911F910F913E -:1040E000FF90EF90DF90CF90BF900C946E1C222336 -:1040F00009F4ADCF812F26960FB6F894DEBF0FBE20 -:10410000CDBFDF91CF911F910F91FF90EF90DF9086 -:10411000CF90BF900C94361D4B2D4F70612FC7016F -:104120000E948D0526960FB6F894DEBF0FBECDBF58 -:10413000DF91CF911F910F91FF90EF90DF90CF9083 -:10414000BF900C948924011182C09B2D9F70492F30 -:1041500050E04230510509F443C0C4F44115510503 -:1041600071F14130510509F072C026960FB6F894EE -:10417000DEBF0FBECDBFDF91CF911F910F91FF909A -:10418000EF90DF90CF90BF900C946D2D4330510590 -:10419000C1F14430510509F05AC0812F26960FB65F -:1041A000F894DEBF0FBECDBFDF91CF911F910F916D -:1041B000FF90EF90DF90CF90BF900C94BF2D26968C +:1040B0000F91FF90EF90DF90CF90BF900C948025F0 +:1040C00026960FB6F894DEBF0FBECDBFDF91CF911D +:1040D0001F910F91FF90EF90DF90CF90BF900C94C5 +:1040E00076250023A9F0222309F4ADCF812F26964F +:1040F0000FB6F894DEBF0FBECDBFDF91CF911F91F9 +:104100000F91FF90EF90DF90CF90BF900C947F1CA9 +:10411000222309F4ADCF812F26960FB6F894DEBF87 +:104120000FBECDBFDF91CF911F910F91FF90EF9008 +:10413000DF90CF90BF900C94471D4B2D4F70612F97 +:10414000C7010E94690526960FB6F894DEBF0FBE20 +:10415000CDBFDF91CF911F910F91FF90EF90DF9036 +:10416000CF90BF900C949A24011182C09B2D9F7018 +:10417000492F50E04230510509F443C0C4F44115C1 +:10418000510571F14130510509F072C026960FB604 +:10419000F894DEBF0FBECDBFDF91CF911F910F917D +:1041A000FF90EF90DF90CF90BF900C947E2D433026 +:1041B0005105C1F14430510509F05AC0812F2696AE :1041C0000FB6F894DEBF0FBECDBFDF91CF911F9128 -:1041D0000F91FF90EF90DF90CF90BF900C94562DF1 +:1041D0000F91FF90EF90DF90CF90BF900C94D02D77 :1041E00026960FB6F894DEBF0FBECDBFDF91CF91FC :1041F0001F910F91FF90EF90DF90CF90BF900C94A4 -:10420000892D26960FB6F894DEBF0FBECDBFDF9185 +:10420000672D26960FB6F894DEBF0FBECDBFDF91A7 :10421000CF911F910F91FF90EF90DF90CF90BF90C3 -:104220000C949C2D4B2D4F70612FC70126960FB615 -:10423000F894DEBF0FBECDBFDF91CF911F910F91DC -:10424000FF90EF90DF90CF90BF900C949D07269643 +:104220000C949A2D26960FB6F894DEBF0FBECDBF24 +:10423000DF91CF911F910F91FF90EF90DF90CF9082 +:10424000BF900C94AD2D4B2D4F70612FC70126965A :104250000FB6F894DEBF0FBECDBFDF91CF911F9197 -:104260000F91FF90EF90DF90CF90BF9008950E9444 -:1042700031270E9441270E9406270E945B270E9447 -:104280001C2B0E946B2A80E090E00E94501B80E073 -:1042900090E00C94661B0E9421270C9437210E9409 -:1042A0007F26292F22952F7030E02C3031054CF4D9 -:1042B0002A3031056CF4225031092230310588F45E -:1042C00007C02C30310549F02F30310531F009C0DD -:1042D000803E48F0803F29F406C093FB882780F990 -:1042E000089580E0089581E00895CF93DF9300D092 -:1042F00000D01F92CDB7DEB70F900F900F900F90A8 -:104300000F90DF91CF910895CF93DF9300D000D02D -:1043100000D0CDB7DEB726960FB6F894DEBF0FBE3D -:10432000CDBFDF91CF9108951F93CF93DF93C091BD -:10433000990316E080919A03C81799F0D0E01C9F6A -:10434000F0011D9FF00D1124E556FC4F4081518175 -:1043500062817381848195810E9484212196C77036 -:10436000E9CFDF91CF911F9108954091CB035091F8 -:10437000CC036091CD037091CE038091CF039091D7 -:10438000D0030C9484218091D00382958F7009F022 -:1043900054C08091CD03882309F44FC080919903C4 -:1043A000A0919A036091CB037091CC034091CE030E -:1043B0005091CF03B6E08A1709F43FC090E0411551 -:1043C0005105C1F17F3F11F46F3FA1F1B89FF0019A -:1043D000B99FF00D1124E556FC4F218172132AC0BC -:1043E0002081621327C02281211124C023813481BE -:1043F0002417350710F421503109241B350B283CB4 -:104400003105C0F42091D0032F7020612093D00398 -:1044100026E0289FF001299FF00D1124E056FC4F63 -:1044200080818F70806180838BEC93E00E94931D6C -:104430000C94942101968770BECF0895CF92DF929D -:10444000EF92FF920F931F93CF93DF93CDB7DEB719 -:1044500062970FB6F894DEBF0FBECDBF8C0185E02A -:10446000F801DE011D9601900D928A95E1F7D801C1 -:104470004C9111965C91119712966C91129713962C -:10448000CD90DC9014973091CB037091CC03809148 -:10449000CE039091CF03009709F46BC17F3F19F4CD -:1044A0003F3F09F466C1E090CD03EE2009F4C0C09F -:1044B0002091D003C816D90628F0F601E81BF90BA5 -:1044C000CF0104C0809590958C0D9D1DFF24F39421 -:1044D000883C910578F0F12C207F09F0C6C07C2D36 -:1044E000D98AC88A89890E9475218BEC93E00E9441 -:1044F000931DB1C0822F807F09F046C0751314C090 -:10450000341312C0611110C02F7020612093D003AA -:104510000E94B5218BEC93E00E94931D8091D00303 -:10452000D80115968C932EC0CD2819F15F3F11F458 -:104530004F3FF9F0F62E61111CC080919903209134 -:104540009A0336E0821709F45AC090E0389FF001D0 -:10455000399FF00D1124E556FC4F7181571306C0A9 -:104560007081471303C07281711103C00196877077 -:10457000E9CFF62E662309F418C18091D00381603B -:104580008093D003F12C11C1751308C0341306C0F9 -:10459000611104C08091D003D801C3C04D875E87EC -:1045A0008D859E856A8B0E944F216A898823E1F15F -:1045B0006623D1F12091D003822F82958F7090E0F5 -:1045C000029774F08091CB039091CC0398878F83EE -:1045D0001986DB86CA862C87CE0107960E94931D1A -:1045E00086E0F801ABECB3E001900D928A95E1F71B -:1045F0000E94C3210E94B521FF24F394D6C04D87A9 -:104600005E878D859E850E947F26292F22952F709B -:1046100030E0223031050CF0BCC09F7009F0B6C00C -:10462000805E883008F4C1C0C8010E94931DE4CFA9 -:10463000C816D90608F453C0F601E81BF90BCF01E0 -:10464000883C910508F450C0F12C7C2DD98AC88A89 -:1046500089890E947521EBECF3E086E0DF011D9271 -:104660008A95E9F70E94B521A0C0751314C03413D0 -:1046700012C0611110C08091D003F8018583C80178 -:104680000E94931D86E0EBECF3E0DF011D928A951A -:10469000E9F7FE2C8AC04D875E878D859E856A8BE3 -:1046A0000E944F216A89882309F4BECF662309F44A -:1046B000BBCF2091D003822F82958F7090E002971C -:1046C0000CF48ECF8091CB039091CC039A83898395 -:1046D0001B82DD82CC822E83CE0101967FCF809516 -:1046E00090958C0D9D1DACCFF62E662309F49CCFC2 -:1046F00075132EC034132CC02091D00320FD1FC091 -:10470000822F82958F70D9F0D80115962C9315972A -:104710008F3049F08F5F982F9295907F822F8F7006 -:10472000892B15968C93C8010E94931D86E0F80191 -:10473000ABECB3E001900D928A95E1F793CF86E060 -:10474000F801ABECB3E001900D928A95E1F72DC032 -:104750004D875E878D859E850E944F21811140CFB8 -:104760008091D00381608093D003C8010E94931D83 -:104770001CC0662309F458CF4D875E878D859E85C2 -:104780000E944F21882309F44FCF2ACF811148CFAF -:104790000CC0243031050CF047CF9F7009F440CF96 -:1047A000F8019581907F09F03BCF8F2D62960FB66F -:1047B000F894DEBF0FBECDBFDF91CF911F910F9157 -:1047C000FF90EF90DF90CF9008951F93CF93DF93EA -:1047D000CDB7DEB72C970FB6F894DEBF0FBECDBFB6 -:1047E0004F83588769877A878B879C87CE01079686 -:1047F0000E941E22882369F08F8198852A853B8537 -:10480000232BF1F19F3F09F063C08F3F09F060C097 -:1048100037C086E0FE013796DE01119601900D92B9 -:104820008A95E1F76F817885EA85FB85309741F1BC -:104830007F3F11F46F3F21F120919A0330E0C901CD -:104840000196877099274091990350E08417950746 -:1048500009F447C069837A83FD83EC8396E0929FD5 -:10486000D001939FB00D1124A556BC4FFE01319687 -:1048700001900D929A95E1F780939A030E949421FA -:1048800016E08091990390919A038917C1F1189FBE -:10489000C001112485569C4F0E941E22882379F165 -:1048A000E09199031E9FF0011124E556FC4F4081D1 -:1048B000518162817381848195810E9484218091DC -:1048C000990390E001968770992780939903D9CF37 -:1048D0004F81588569857A858B859C850E948421C6 -:1048E000CFCF0E944B2110929A0310929903EBECC8 -:1048F000F3E086E0DF011D928A95E9F7C1CF2C969F -:104900000FB6F894DEBF0FBECDBFDF91CF911F91E0 -:104910000895EF92FF920F931F93CF93DF938C0133 -:10492000009709F46CC0F12CEE24E394E801219681 -:10493000F8018491843740F4843008F051C081300C -:1049400081F0823019F15BC0853709F444C0A8F1C9 -:104950009CE7980F903708F052C08F770E94361D61 -:1049600041C00E5F1F4FFE01C49180E28C0F883062 -:1049700048F4C7708E2D01C0880FCA95EAF70E94CF -:10498000342714C08C2F0E946E1C2DC00E5F1F4F49 -:10499000FE01C49180E28C0F883058F4C7708E2DD0 -:1049A00001C0880FCA95EAF70E943A270E945B2748 -:1049B0001AC08C2F0E94361D16C00E5F1F4FFE01BD -:1049C000C491CC2381F08FE99FE00197F1F700C0FB -:1049D0000000C150F6CF0E5F1F4FFE01F49003C0E0 -:1049E0000E946E1C8E018F2D882309F49FCFEFE962 -:1049F000FFE03197F1F700C000008150F5CFDF9163 -:104A0000CF911F910F91FF90EF90089508956093BB -:104A1000D5037093D6038093D7039093D8030C9457 -:104A200037210F931F930091D5031091D603209146 -:104A3000D7033091D803DC01CB01802B912BA22B23 -:104A4000B32B8093D5039093D603A093D703B09351 -:104A5000D8031F910F910C9437210F931F9300914E -:104A6000D5031091D6032091D7033091D803DC01F0 -:104A7000CB0180239123A223B3238093D50390936A -:104A8000D603A093D703B093D8031F910F910C9432 -:104A900037210F931F930091D5031091D6032091D6 -:104AA000D7033091D803DC01CB0180279127A227BF -:104AB000B3278093D5039093D603A093D703B093E5 -:104AC000D8031F910F910C9437211092D1031092AB -:104AD000D2031092D3031092D4030C94372141E0F7 -:104AE00050E060E070E004C0440F551F661F771F60 -:104AF0008A95D2F74093D1035093D2036093D303A6 -:104B00007093D4030C94372141E050E060E070E0F2 -:104B100004C0440F551F661F771F8A95D2F78091F6 -:104B2000D1039091D203A091D303B091D403482B29 -:104B3000592B6A2B7B2B4093D1035093D203609364 -:104B4000D3037093D4030C94372141E050E060E02C -:104B500070E004C0440F551F661F771F8A95D2F777 -:104B600040955095609570958091D1039091D203B6 -:104B7000A091D303B091D403482359236A237B2304 -:104B80004093D1035093D2036093D3037093D40323 -:104B90000C94372141E050E060E070E004C0440F25 -:104BA000551F661F771F8A95D2F78091D103909188 -:104BB000D203A091D303B091D403482759276A2781 -:104BC0007B274093D1035093D2036093D303709318 -:104BD000D4030C9437210F931F930091D1031091AC -:104BE000D2032091D3033091D403DC01CB01802B7D -:104BF000912BA22BB32B8093D1039093D203A0933C -:104C0000D303B093D4031F910F910C9437210F93CA -:104C10001F930091D1031091D2032091D3033091BF -:104C2000D403DC01CB0180239123A223B3238093FF -:104C3000D1039093D203A093D303B093D4031F91D5 -:104C40000F910C9437210F931F930091D103109172 -:104C5000D2032091D3033091D403DC01CB01802710 -:104C60009127A227B3278093D1039093D203A093D7 -:104C7000D303B093D4031F910F910C94372108955F -:104C8000CF92DF92EF92FF920F931F93CF93DF9318 -:104C90008C01C090D503D090D603E090D703F0905C -:104CA000D8038091D1039091D203A091D303B09106 -:104CB000D403C82AD92AEA2AFB2ACFE1D0E0D701B7 -:104CC000C6010C2E04C0B695A795979587950A94B2 -:104CD000D2F780FF06C0B8018C2F0E94F709019718 -:104CE00021F4219760F780E001C08C2FDF91CF91F4 -:104CF0001F910F91FF90EF90DF90CF900895CF9389 -:104D0000DF93EC010E944026BE010E94F709DF916B -:104D1000CF910895CB010E947F260895909186023D -:104D2000992321F090918702911109C02091880266 -:104D300030918902F90132969FEF40E01FC0982F11 -:104D40009695969596959F3050F5E0918802F09152 -:104D50008902E90FF11D877021E030E0A90102C04E -:104D6000440F551F8A95E2F7CA019181892B8183EF -:104D700008959F3F39F04F5F4E3041F051915813E5 -:104D8000F8CF0DC05111F7CF942FF5CF9F3F39F0D9 -:104D9000F901E90FF11D97FDFA95828308950895B1 -:104DA00090918602992321F090918702911109C078 -:104DB0002091880230918902F9013296205F3F4F9D -:104DC0001FC0982F9695969596959F30F0F4E09198 -:104DD0008802F0918902E90FF11D877021E030E02F -:104DE000A90102C0440F551F8A95E2F7CA018095B8 -:104DF00091818923818308953196E217F30729F081 -:104E000090819813F9CF1082F7CF089581E090E058 -:104E1000E0918802F0918902E80FF91F1082019653 -:104E200080319105A9F708959091EC03892B809327 -:104E3000EC03089580959091EC0389238093EC0313 -:104E400008951092EC0308959091EB03892B8093C1 -:104E5000EB03089580959091EB0389238093EB03F6 -:104E600008951092EB0308959091EA03892B8093A3 -:104E7000EA03089580959091EA0389238093EA03D9 -:104E800008951092EA0308958093D903089510922B -:104E9000D90308958091880290918902FC0131968E -:104EA0009C01205F3F4F80E0919191118F5FE2174D -:104EB000F307D1F70895E0918802F091890280917B -:104EC000EC038083E0918802F091890290818091C7 -:104ED000EB03892B8083E0918802F0918902908115 -:104EE0008091EA03892B80838091D903882361F024 -:104EF000E0918802F09189029081892B80830E9441 -:104F00004A2781111092D9038091880290918902D9 -:104F10000C943A1B80910E04843039F11092EE0308 -:104F200020E488E190E00FB6F894A89580936000A3 -:104F30000FBE2093600080E00E94540580E00E9434 -:104F4000D20A83B7817F846083BF83B7816083BFC8 -:104F50007894889583B78E7F83BF88E10FB6F894E5 -:104F600080936000109260000FBE08950895089528 -:104F7000CF9380E00E9454050E94B6270E94890CBE -:104F80000E94B727C0E08C2F0E94D20D892B29F4F4 -:104F9000CF5FC430C1F780E001C081E0CF910895B8 -:104FA0000E944B2180E00E9454050E94452D0E94E2 -:104FB0002E1B0C94D20A1F920F920FB60F9211243F -:104FC0008F939F93AF93BF938091EE03811113C092 -:104FD0008091EF039091F003A091F103B091F2035F -:104FE0004196A11DB11D8093EF039093F003A09310 -:104FF000F103B093F203BF91AF919F918F910F9006 -:105000000FBE0F901F90189582E084BD93E095BD70 -:105010009AEF97BD80936E0008952FB7F894809112 -:10502000EF039091F003A091F103B091F2032FBF31 -:105030000895CF92DF92EF92FF920F931F932FB7B5 -:10504000F8944091EF035091F0036091F103709157 -:10505000F2032FBF6A017B01EE24FF248C0120E0C4 -:1050600030E0C016D106E206F30610F441505109B3 -:105070009A01281B390BC9011F910F91FF90EF90E6 -:10508000DF90CF9008951F920F920FB60F921124C8 -:105090008F939F93AF93BF938091EF039091F00311 -:1050A000A091F103B091F2030196A11DB11D80936F -:1050B000EF039093F003A093F103B093F203BF9139 -:1050C000AF919F918F910F900FBE0F901F901895E9 -:1050D0000E942B18F8942FEF87EA91E62150804028 -:1050E0009040E1F700C0000087E090EBDC01809386 -:1050F000190490931A04A0931B04B0931C049CE021 -:1051000088E10FB6F894A895809360000FBE909345 -:105110006000FFCF0E94C928811102C00E94A5280B -:105120000E94D4288093ED030E94E1288093170405 -:1051300087FB882780F9809387020E94D828682FF0 -:1051400070E080E090E00C9407256DEE7EEF80E04B -:1051500090E00E94AA3160E082E090E00E949831E5 -:1051600060E083E090E00E94983160E084E090E0AD -:105170000E94983160E085E090E00E94983160E004 -:1051800086E090E00E9498316FEF87E090E00C9409 -:10519000983180E090E00E94923121E08D3E9E4F58 -:1051A00009F020E0822F089582E090E00C948A318B -:1051B00083E090E00C948A31682F83E090E00C94B7 -:1051C000983184E090E00C948A31682F84E090E07C -:1051D0000C94983186E090E00C948A31682F86E038 -:1051E00090E00C94983187E090E00C948A31682F1D -:1051F00087E090E00C9498318091F50380FF0BC01C -:1052000060918D0285E0689FB001112475956795C6 -:10521000759567952BC081FF09C060918D0285E06F -:10522000689FB00111247595679520C082FF07C063 -:1052300060918D0285E0689FB001112417C09091A4 -:10524000F6039923D1F060918C02961788F720918C -:105250008D0285E0289F90011124929FA001939FC9 -:10526000500D112470E0CA010E9470316038710540 -:1052700040F46115710539F002C065E070E0862FD9 -:1052800008958FE7089581E008958091F50380FFE8 -:1052900008C060918B0270E075956795759567956C -:1052A00021C081FF06C060918B0270E07595679503 -:1052B00019C082FF04C060918B0270E010C0909111 -:1052C000F6039923C1F060918A029617A0F78091A6 -:1052D0008B02899FC001112470E00E9470316038F8 -:1052E000710528F46115710521F0862F08958FE767 -:1052F000089581E0089561E070E0F4CF803F21F4EB -:105300000E94FC28819504C0813F29F40E94FC285A -:105310008093F9030895823F21F40E94FC2881952F -:1053200004C0833F29F40E94FC288093F803089569 -:10533000893F19F40E94452905C08A3F31F40E9433 -:10534000452981958093FA0308958B3F21F40E94AB -:105350004529819504C08C3F29F40E9445298093FA -:10536000FB030895843F21F48091F703816017C007 -:10537000853F21F48091F703826011C0863F21F4BC -:105380008091F70384600BC0873F21F48091F7037D -:10539000886005C0883F31F48091F7038061809375 -:1053A000F70308958D3F21F48091F50381600BC0D0 -:1053B0008E3F21F48091F503826005C08F3F29F470 -:1053C0008091F50384608093F5030895803F39F45C -:1053D0008091F90387FF6CC01092F90369C0813F87 -:1053E00029F48091F9031816BCF362C09091F80378 -:1053F000823F29F497FF5CC01092F80359C0833FA5 -:1054000019F41916CCF354C0893F41F48091FA0382 -:1054100018160CF04DC01092FA034AC08A3F29F4C6 -:105420008091FA0387FF44C0F6CF8B3F39F4809117 -:10543000FB0387FF3DC01092FB033AC08C3F29F469 -:105440008091FB031816BCF333C0843F21F4809194 -:10545000F7038E7F17C0853F21F48091F7038D7F7E -:1054600011C0863F21F48091F7038B7F0BC0873FEB -:1054700021F48091F703877F05C0883F31F4809144 -:10548000F7038F7E8093F70313C08D3F21F4809143 -:10549000F5038E7F0BC08E3F21F48091F5038D7F45 -:1054A00005C08F3F29F48091F5038B7F8093F5032E -:1054B0008091F80381110EC08091F90381110AC017 -:1054C0008091FA03811106C08091FB03811102C013 -:1054D0001092F603089587EF93E00E94451B0E9407 -:1054E0000D289093F4038093F30308951F93CF93B3 -:1054F000DF938091F3039091F4030E941928AC018B -:105500009091F603992321F020918E0230E006C09D -:1055100020918F028AE0289F90011124421753079F -:1055200008F486C08091F803C091F903D091FA0382 -:105530001091FB03811107C0C11176C0D11174C055 -:10554000111172C075C09F3F19F09F5F9093F603D1 -:10555000181624F40E94FC288093F8038091F80325 -:1055600087FF05C00E94FC2881958093F8031C16D4 -:1055700024F40E94FC288093F9038091F90387FFAB -:1055800005C00E94FC2881958093F9036091F8037F -:10559000662339F1C091F903CC2319F1772767FD10 -:1055A0007095872F972F0E94E02E23E333E343E388 -:1055B0005FE30E94942F0E94AD2E6093F8036C2F3E -:1055C000772767FD7095872F972F0E94E02E23E3A2 -:1055D00033E343E35FE30E94942F0E94AD2E609378 -:1055E000F9031D1624F40E9445298093FA03809143 -:1055F000FA0387FF05C00E94452981958093FA032D -:10560000111624F40E9445298093FB038091FB032B -:1056100087FF05C00E94452981958093FB03DF9198 -:10562000CF911F910C946B2A9F3F09F08ECF96CF9C -:10563000DF91CF911F910895E7EFF3E085E0DF015F -:105640001D928A95E9F71092F6031092F5030895DA -:10565000833081F128F4813059F08230D1F00895FF -:10566000853009F449C0B8F1863009F456C0089570 -:1056700080918F02262F30E0280F311D2F3F3105FA -:1056800024F4680F60938F0208958FEF80938F0248 -:10569000089580918E02262F30E0280F311D2F3F74 -:1056A000310524F4680F60938E0208958FEF809384 -:1056B0008E02089580918D02262F30E0280F311D33 -:1056C0002F3F310524F4680F60938D0208958FEF0A -:1056D00080938D02089580918C02262F30E0280F50 -:1056E000311D2F3F310524F4680F60938C0208951B -:1056F0008FEF80938C02089580918B02262F30E0EB -:10570000280F311D2F3F310524F4680F60938B0261 -:1057100008958FEF80938B02089580918A02262F3F +:104260000F91FF90EF90DF90CF90BF900C94790763 +:1042700026960FB6F894DEBF0FBECDBFDF91CF916B +:104280001F910F91FF90EF90DF90CF90BF90089516 +:104290000E9442270E9452270E9417270E946C27E3 +:1042A0000E942D2B0E947C2A80E090E00E94611BDE +:1042B00080E090E00C94771B0E9432270C944821F8 +:1042C0000E949026292F22952F7030E02C30310546 +:1042D0004CF42A3031056CF422503109223031057A +:1042E00088F407C02C30310549F02F30310531F00A +:1042F00009C0803E48F0803F29F406C093FB882720 +:1043000080F9089580E0089581E00895CF93DF93C8 +:1043100000D000D01F92CDB7DEB70F900F900F9056 +:104320000F900F90DF91CF910895CF93DF9300D03E +:1043300000D000D0CDB7DEB726960FB6F894DEBF1A +:104340000FBECDBFDF91CF9108951F93CF93DF9321 +:10435000C091E90316E08091EA03C81799F0D0E014 +:104360001C9FF0011D9FF00D1124E551FC4F408171 +:10437000518162817381848195810E94952121966A +:10438000C770E9CFDF91CF911F91089540911B0431 +:1043900050911C0460911D0470911E0480911F04B3 +:1043A000909120040C9495218091200482958F7027 +:1043B00009F054C080911D04882309F44FC08091F6 +:1043C000E903A091EA0360911B0470911C044091E1 +:1043D0001E0450911F04B6E08A1709F43FC090E014 +:1043E00041155105C1F17F3F11F46F3FA1F1B89F15 +:1043F000F001B99FF00D1124E551FC4F218172139A +:104400002AC02081621327C02281211124C0238168 +:1044100034812417350710F421503109241B350B42 +:10442000283C3105C0F4209120042F702061209396 +:10443000200426E0289FF001299FF00D1124E0516F +:10444000FC4F80818F70806180838BE194E00E94BB +:10445000A41D0C94A52101968770BECF0895CF921C +:10446000DF92EF92FF920F931F93CF93DF93CDB71D +:10447000DEB762970FB6F894DEBF0FBECDBF8C01DA +:1044800085E0F801DE011D9601900D928A95E1F715 +:10449000D8014C9111965C91119712966C911297DC +:1044A0001396CD90DC90149730911B0470911C04EE +:1044B00080911E0490911F04009709F46BC17F3F07 +:1044C00019F43F3F09F466C1E0901D04EE2009F4A1 +:1044D000C0C020912004C816D90628F0F601E81BB8 +:1044E000F90BCF0104C0809590958C0D9D1DFF2484 +:1044F000F394883C910578F0F12C207F09F0C6C038 +:104500007C2DD98AC88A89890E9486218BE194E012 +:104510000E94A41DB1C0822F807F09F046C0751390 +:1045200014C0341312C0611110C02F702061209389 +:1045300020040E94C6218BE194E00E94A41D80917A +:104540002004D80115968C932EC0CD2819F15F3F19 +:1045500011F44F3FF9F0F62E61111CC08091E90370 +:104560002091EA0336E0821709F45AC090E0389FA0 +:10457000F001399FF00D1124E551FC4F7181571363 +:1045800006C07081471303C07281711103C0019688 +:104590008770E9CFF62E662309F418C180912004B4 +:1045A000816080932004F12C11C1751308C034136D +:1045B00006C0611104C080912004D801C3C04D879A +:1045C0005E878D859E856A8B0E9460216A8988231B +:1045D000E1F16623D1F120912004822F82958F7022 +:1045E00090E0029774F080911B0490911C049887CE +:1045F0008F831986DB86CA862C87CE0107960E9498 +:10460000A41D86E0F801ABE1B4E001900D928A951B +:10461000E1F70E94D4210E94C621FF24F394D6C062 +:104620004D875E878D859E850E949026292F229535 +:104630002F7030E0223031050CF0BCC09F7009F0C3 +:10464000B6C0805E883008F4C1C0C8010E94A41DB5 +:10465000E4CFC816D90608F453C0F601E81BF90BDD +:10466000CF01883C910508F450C0F12C7C2DD98AEB +:10467000C88A89890E948621EBE1F4E086E0DF01A7 +:104680001D928A95E9F70E94C621A0C0751314C037 +:10469000341312C0611110C080912004F801858389 +:1046A000C8010E94A41D86E0EBE1F4E0DF011D9249 +:1046B0008A95E9F7FE2C8AC04D875E878D859E8599 +:1046C0006A8B0E9460216A89882309F4BECF662321 +:1046D00009F4BBCF20912004822F82958F7090E047 +:1046E00002970CF48ECF80911B0490911C049A8346 +:1046F00089831B82DD82CC822E83CE0101967FCFFF +:10470000809590958C0D9D1DACCFF62E662309F4F7 +:104710009CCF75132EC034132CC02091200420FD93 +:104720001FC0822F82958F70D9F0D80115962C93D7 +:1047300015978F3049F08F5F982F9295907F822F39 +:104740008F70892B15968C93C8010E94A41D86E05A +:10475000F801ABE1B4E001900D928A95E1F793CFB7 +:1047600086E0F801ABE1B4E001900D928A95E1F7A3 +:104770002DC04D875E878D859E850E9460218111A9 +:1047800040CF80912004816080932004C8010E9462 +:10479000A41D1CC0662309F458CF4D875E878D8504 +:1047A0009E850E946021882309F44FCF2ACF811172 +:1047B00048CF0CC0243031050CF047CF9F7009F46E +:1047C00040CFF8019581907F09F03BCF8F2D629605 +:1047D0000FB6F894DEBF0FBECDBFDF91CF911F9112 +:1047E0000F91FF90EF90DF90CF9008951F93CF939C +:1047F000DF93CDB7DEB72C970FB6F894DEBF0FBEB0 +:10480000CDBF4F83588769877A878B879C87CE0176 +:1048100007960E942F22882369F08F8198852A8528 +:104820003B85232BF1F19F3F09F063C08F3F09F0D7 +:1048300060C037C086E0FE013796DE011196019018 +:104840000D928A95E1F76F817885EA85FB8530972F +:1048500041F17F3F11F46F3F21F12091EA0330E0F5 +:10486000C9010196877099274091E90350E08417A8 +:10487000950709F447C069837A83FD83EC8396E04A +:10488000929FD001939FB00D1124A551BC4FFE0102 +:10489000319601900D929A95E1F78093EA030E9478 +:1048A000A52116E08091E9039091EA038917C1F1EF +:1048B000189FC001112485519C4F0E942F228823EC +:1048C00079F1E091E9031E9FF0011124E551FC4FBD +:1048D0004081518162817381848195810E949521FB +:1048E0008091E90390E00196877099278093E9030E +:1048F000D9CF4F81588569857A858B859C850E94A3 +:104900009521CFCF0E945C211092EA031092E90317 +:10491000EBE1F4E086E0DF011D928A95E9F7C1CF73 +:104920002C960FB6F894DEBF0FBECDBFDF91CF91AE +:104930001F910895EF92FF920F931F93CF93DF93F0 +:104940008C01009709F46CC0F12CEE24E394E8018B +:104950002196F8018491843740F4843008F051C0E6 +:10496000813081F0823019F15BC0853709F444C091 +:10497000A8F19CE7980F903708F052C08F770E94FB +:10498000471D41C00E5F1F4FFE01C49180E28C0F96 +:10499000883048F4C7708E2D01C0880FCA95EAF799 +:1049A0000E94452714C08C2F0E947F1C2DC00E5FD3 +:1049B0001F4FFE01C49180E28C0F883058F4C770FD +:1049C0008E2D01C0880FCA95EAF70E944B270E94DE +:1049D0006C271AC08C2F0E94471D16C00E5F1F4FF8 +:1049E000FE01C491CC2381F08FE99FE00197F1F79C +:1049F00000C00000C150F6CF0E5F1F4FFE01F490C3 +:104A000003C00E947F1C8E018F2D882309F49FCF45 +:104A1000EFE9FFE03197F1F700C000008150F5CFDA +:104A2000DF91CF911F910F91FF90EF90089508951E +:104A300060932504709326048093270490932804A0 +:104A40000C9448210F931F93009125041091260484 +:104A50002091270430912804DC01CB01802B912B7D +:104A6000A22BB32B8093250490932604A0932704B4 +:104A7000B09328041F910F910C9448210F931F931A +:104A800000912504109126042091270430912804D8 +:104A9000DC01CB0180239123A223B323809325043F +:104AA00090932604A0932704B09328041F910F919C +:104AB0000C9448210F931F93009125041091260414 +:104AC0002091270430912804DC01CB018027912715 +:104AD000A227B3278093250490932604A09327044C +:104AE000B09328041F910F910C9448211092210437 +:104AF0001092220410922304109224040C94482152 +:104B000041E050E060E070E004C0440F551F661FB4 +:104B1000771F8A95D2F74093210450932204609323 +:104B20002304709324040C94482141E050E060E099 +:104B300070E004C0440F551F661F771F8A95D2F797 +:104B40008091210490912204A0912304B091240427 +:104B5000482B592B6A2B7B2B409321045093220422 +:104B600060932304709324040C94482141E050E0A6 +:104B700060E070E004C0440F551F661F771F8A95E0 +:104B8000D2F7409550956095709580912104909151 +:104B90002204A0912304B0912404482359236A23BA +:104BA0007B23409321045093220460932304709349 +:104BB00024040C94482141E050E060E070E004C01F +:104BC000440F551F661F771F8A95D2F780912104E5 +:104BD00090912204A0912304B091240448275927DE +:104BE0006A277B2740932104509322046093230477 +:104BF000709324040C9448210F931F930091210477 +:104C0000109122042091230430912404DC01CB0173 +:104C1000802B912BA22BB32B809321049093220401 +:104C2000A0932304B09324041F910F910C94482166 +:104C30000F931F93009121041091220420912304CB +:104C400030912404DC01CB0180239123A223B323E0 +:104C50008093210490932204A0932304B09324040E +:104C60001F910F910C9448210F931F9300912104E1 +:104C7000109122042091230430912404DC01CB0103 +:104C800080279127A227B3278093210490932204A1 +:104C9000A0932304B09324041F910F910C944821F6 +:104CA0000895CF92DF92EF92FF920F931F93CF93CD +:104CB000DF938C01C0902504D0902604E090270457 +:104CC000F09028048091210490912204A091230463 +:104CD000B0912404C82AD92AEA2AFB2ACFE1D0E0DD +:104CE000D701C6010C2E04C0B695A7959795879558 +:104CF0000A94D2F780FF06C0B8018C2F0E94D30916 +:104D0000019721F4219760F780E001C08C2FDF919B +:104D1000CF911F910F91FF90EF90DF90CF9008956A +:104D2000CF93DF93EC010E945126BE010E94D3096C +:104D3000DF91CF910895CB010E9490260895909124 +:104D40008402992321F090918502911109C020914C +:104D5000860230918702F90132969FEF40E01FC032 +:104D6000982F9695969596959F3050F5E0918602EE +:104D7000F0918702E90FF11D877021E030E0A90171 +:104D800002C0440F551F8A95E2F7CA019181892B11 +:104D9000818308959F3F39F04F5F4E3041F051912C +:104DA0005813F8CF0DC05111F7CF942FF5CF9F3F77 +:104DB00039F0F901E90FF11D97FDFA958283089505 +:104DC000089590918402992321F090918502911188 +:104DD00009C02091860230918702F9013296205F46 +:104DE0003F4F1FC0982F9695969596959F30F0F45B +:104DF000E0918602F0918702E90FF11D877021E0B2 +:104E000030E0A90102C0440F551F8A95E2F7CA019C +:104E1000809591818923818308953196E217F30764 +:104E200029F090819813F9CF1082F7CF089581E08F +:104E300090E0E0918602F0918702E80FF91F10825E +:104E4000019680319105A9F7089590913C04892B32 +:104E500080933C040895809590913C04892380932D +:104E60003C04089510923C04089590913B04892BD2 +:104E700080933B040895809590913B04892380930F +:104E80003B04089510923B04089590913A04892BB5 +:104E900080933A040895809590913A0489238093F1 +:104EA0003A04089510923A040895809329040895CD +:104EB0001092290408958091860290918702FC0146 +:104EC00031969C01205F3F4F80E0919191118F5F5F +:104ED000E217F307D1F70895E0918602F091870277 +:104EE00080913C048083E0918602F091870290815A +:104EF00080913B04892B8083E0918602F0918702A8 +:104F0000908180913A04892B8083809129048823A1 +:104F100061F0E0918602F09187029081892B808375 +:104F20000E945B2781111092290480918602909142 +:104F300087020C944B1B80915E04843039F11092EF +:104F40003E0420E488E190E00FB6F894A8958093A1 +:104F500060000FBE2093600080E00E94300580E07A +:104F60000E94AE0A83B7817F846083BF83B781606C +:104F700083BF7894889583B78E7F83BF88E10FB60F +:104F8000F89480936000109260000FBE0895089519 +:104F90000895CF9380E00E9430050E94C7270E94A9 +:104FA000650C0E94C827C0E08C2F0E94AE0D892B93 +:104FB00029F4CF5FC430C1F780E001C081E0CF9118 +:104FC00008950E945C2180E00E9430050E94562DC9 +:104FD0000E943F1B0C94AE0A1F920F920FB60F92C5 +:104FE00011248F939F93AF93BF9380913E048111BF +:104FF00013C080913F0490914004A0914104B0916E +:1050000042044196A11DB11D80933F04909340043A +:10501000A0934104B0934204BF91AF919F918F91AF +:105020000F900FBE0F901F90189582E084BD93E003 +:1050300095BD9AEF97BD80936E0008952FB7F894B1 +:1050400080913F0490914004A0914104B0914204AA +:105050002FBF0895CF92DF92EF92FF920F931F938D +:105060002FB7F89440913F0450914004609141045F +:10507000709142042FBF6A017B01EE24FF248C0152 +:1050800020E030E0C016D106E206F30610F44150ED +:1050900051099A01281B390BC9011F910F91FF90EB +:1050A000EF90DF90CF9008951F920F920FB60F925E +:1050B00011248F939F93AF93BF9380913F0490915E +:1050C0004004A0914104B09142040196A11DB11D7C +:1050D00080933F0490934004A0934104B093420412 +:1050E000BF91AF919F918F910F900FBE0F901F9026 +:1050F00018950E943C18F8942FEF87EA91E621500A +:1051000080409040E1F700C0000087E090EBDC01B8 +:105110008093690490936A04A0936B04B0936C0429 +:105120009CE088E10FB6F894A895809360000FBECC +:1051300090936000FFCF0E94DA28811102C00E9484 +:10514000B6280E94E52880933D040E94F2288093AF +:10515000670487FB882780F9809385020E94E928ED +:10516000682F70E080E090E00C9418256DEE7EEFE3 +:1051700080E090E00E94093260E082E090E00E94CE +:10518000F73160E083E090E00E94F73160E084E076 +:1051900090E00E94F73160E085E090E00E94F731F6 +:1051A00060E086E090E00E94F7316FEF87E090E0EA +:1051B0000C94F73180E090E00E94F13121E08D3EC7 +:1051C0009E4F09F020E0822F089582E090E00C9439 +:1051D000E93183E090E00C94E931682F83E090E0BE +:1051E0000C94F73184E090E00C94E931682F84E06E +:1051F00090E00C94F73186E090E00C94E931682F50 +:1052000086E090E00C94F73187E090E00C94E9316F +:10521000682F87E090E00C94F7318091450480FF7F +:105220000BC060918B0285E0689FB00111247595D9 +:105230006795759567952BC081FF09C060918B02BA +:1052400085E0689FB00111247595679520C082FFA5 +:1052500007C060918B0285E0689FB001112417C0E0 +:10526000909146049923D1F060918A02961788F7AD +:1052700020918B0285E0289F90011124929FA0012C +:10528000939F500D112470E0CA010E94CF31603805 +:10529000710540F46115710539F002C065E070E0F8 +:1052A000862F08958FE7089581E008958091450441 +:1052B00080FF08C06091890270E0759567957595CB +:1052C000679521C081FF06C06091890270E07595E5 +:1052D000679519C082FF04C06091890270E010C018 +:1052E000909146049923C1F0609188029617A0F727 +:1052F00080918902899FC001112470E00E94CF3102 +:105300006038710528F46115710521F0862F089524 +:105310008FE7089581E0089561E070E0F4CF803F69 +:1053200021F40E940D29819504C0813F29F40E9437 +:105330000D29809349040895823F21F40E940D298C +:10534000819504C0833F29F40E940D29809348046D +:105350000895893F19F40E94562905C08A3F31F407 +:105360000E945629819580934A0408958B3F21F429 +:105370000E945629819504C08C3F29F40E94562929 +:1053800080934B040895843F21F480914704816009 +:1053900017C0853F21F480914704826011C0863F89 +:1053A00021F48091470484600BC0873F21F48091F1 +:1053B0004704886005C0883F31F4809147048061CC +:1053C0008093470408958D3F21F4809145048160C6 +:1053D0000BC08E3F21F480914504826005C08F3F51 +:1053E00029F4809145048460809345040895803FAA +:1053F00039F48091490487FF6CC01092490469C058 +:10540000813F29F4809149041816BCF362C0909141 +:105410004804823F29F497FF5CC01092480459C0A9 +:10542000833F19F41916CCF354C0893F41F480919D +:105430004A0418160CF04DC010924A044AC08A3F24 +:1054400029F480914A0487FF44C0F6CF8B3F39F49A +:1054500080914B0487FF3DC010924B043AC08C3FB3 +:1054600029F480914B041816BCF333C0843F21F417 +:10547000809147048E7F17C0853F21F480914704B7 +:105480008D7F11C0863F21F4809147048B7F0BC034 +:10549000873F21F480914704877F05C0883F31F41E +:1054A000809147048F7E8093470413C08D3F21F481 +:1054B000809145048E7F0BC08E3F21F4809145047E +:1054C0008D7F05C08F3F29F4809145048B7F8093A9 +:1054D00045048091480481110EC0809149048111D6 +:1054E0000AC080914A04811106C080914B04811149 +:1054F00002C010924604089587E494E00E94561B6F +:105500000E941E28909344048093430408951F939F +:10551000CF93DF9380914304909144040E942A2802 +:10552000AC0190914604992321F020918C0230E047 +:1055300006C020918D028AE0289F90011124421715 +:10554000530708F486C080914804C0914904D09163 +:105550004A0410914B04811107C0C11176C0D111CA +:1055600074C0111172C075C09F3F19F09F5F909376 +:105570004604181624F40E940D2980934804809153 +:10558000480487FF05C00E940D2981958093480437 +:105590001C1624F40E940D2980934904809149042B +:1055A00087FF05C00E940D29819580934904609171 +:1055B0004804662339F1C0914904CC2319F17727B7 +:1055C00067FD7095872F972F0E94F12E23E333E319 +:1055D00043E35FE30E9401300E94BE2E60934804C3 +:1055E0006C2F772767FD7095872F972F0E94F12EDC +:1055F00023E333E343E35FE30E9401300E94BE2EC6 +:10560000609349041D1624F40E94562980934A048D +:1056100080914A0487FF05C00E9456298195809396 +:105620004A04111624F40E94562980934B04809159 +:105630004B0487FF05C00E945629819580934B0437 +:10564000DF91CF911F910C947C2A9F3F09F08ECF60 +:1056500096CFDF91CF911F910895E7E4F4E085E0C4 +:10566000DF011D928A95E9F71092460410924504D5 +:105670000895833081F128F4813059F08230D1F0DF +:105680000895853009F449C0B8F1863009F456C050 +:10569000089580918D02262F30E0280F311D2F3F75 +:1056A000310524F4680F60938D0208958FEF809385 +:1056B0008D02089580918C02262F30E0280F311D35 +:1056C0002F3F310524F4680F60938C0208958FEF0B +:1056D00080938C02089580918B02262F30E0280F52 +:1056E000311D2F3F310524F4680F60938B0208951C +:1056F0008FEF80938B02089580918A02262F30E0ED +:10570000280F311D2F3F310524F4680F60938A0262 +:1057100008958FEF80938A02089580918902262F41 :1057200030E0280F311D2F3F310524F4680F6093BE -:105730008A0208958FEF80938A020895833011F1D1 -:1057400028F4813049F0823091F00895853081F15C -:1057500020F18630C1F1089580918F02681720F4FE -:10576000861B80938F02089510928F020895809176 -:105770008E02681720F4861B80938E020895109283 -:105780008E02089580918D02681720F4861B809305 -:105790008D02089510928D02089580918C026817F1 -:1057A00020F4861B80938C02089510928C02089539 -:1057B00080918B02681720F4861B80938B020895DA -:1057C00010928B02089580918A02681720F4861B3C -:1057D00080938A02089510928A0208950F931F936E -:1057E000873208F048C08E3108F094C0803109F447 -:1057F0007EC008F5873009F468C068F4863009F087 -:10580000A4C08091ED03817F8E7F8093ED0381E0C2 -:105810008093FD039BC08B3009F490C08E3009F05B -:1058200094C08091ED0382FB222720F991E092271A -:1058300090FB82F965C0863109F480C060F4813143 -:1058400009F083C00E944B219091870281E0892753 -:105850008093870273C0893109F470C08B3109F0DD -:1058600074C08091ED0381FB222720F991E09227FB -:1058700090FB81F945C0883309F460C050F4893247 -:1058800009F45EC0853309F45BC0873209F458C05F -:105890005CC0833409F454C028F48A3308F455C03A -:1058A000895339C0883409F050C00E944B210E94AE -:1058B00090060FEF13ED20E3015010402040E1F778 -:1058C00000C000000E94682839C09091ED03892F24 -:1058D0008095817080FB90F929F096609860909394 -:1058E000ED0334C0997F977F9093ED0327C080919B -:1058F000ED0383FB222720F991E0922790FB83F9A7 -:105900008093ED039923D1F08091ED038160809322 -:10591000ED0314C08D5141E050E060E070E08A0179 -:105920009B0104C0000F111F221F331F8A95D2F75D -:10593000C901B8010E9407250E944B2181E006C0E1 -:1059400061E070E080E090E0F5CF80E01F910F9182 -:10595000089580E0089580E00895CF93C82F809146 -:10596000FD03813069F018F08230C9F184C0E09104 -:105970008802F09189028081823209F07EC007C0DE -:10598000E0918802F09189028081823261F48C2F4B -:105990000E94A92C811104C08C2F0E94EE2B1DC0E7 -:1059A00081E090E01AC08C2F0E94AB2C811114C0B2 -:1059B000C43179F048F4CB3079F0C03109F061C0DE -:1059C00082E08093FD0308C0C93219F0C83321F08A -:1059D00058C01092FD0355C081E0817054C0C93297 -:1059E00091F120F5C43179F1B0F4C73009F047C026 -:1059F0008EE180938F0282E380938E028AE080930F -:105A00008D0284E180938C0288E080938B0288E28F -:105A100080938A0234C0CE51C63088F5EC2FF0E076 -:105A2000E65FFC4F80818093FC0329C0CE34E9F00F -:105A300020F4CB3421F56AE013C0C13579F0C235CA -:105A4000F1F461E00DC08091FC03882319F01092FD -:105A5000FC0315C081E08093FD0315C061E006C022 -:105A60008091FC030E94282B0AC06AE08091FC030D -:105A70000E949E2B04C01092FD0380E004C081E0D0 -:105A800002C080E0AACFCF9108950E94C928811159 -:105A900002C00E94A5280E94EA288093180480FF73 -:105AA00002C0869501C080E00C94540580911804D2 -:105AB000982F9695292F30E0233031054CF49F5FC5 -:105AC000990F8170892B8160809318040E94EE28C1 -:105AD0008091180486950C94540580911804982F91 -:105AE000969591F09158990F8170892B80931804A5 -:105AF0008E7F91E009F490E08091180490FB80F98A -:105B0000809318040E94EE288091180486950C94C6 -:105B1000540580911804982F909590FB80F98093FC -:105B200018040E94EE288091180480FF02C0869518 -:105B300001C080E00C94540590911804892F86953B -:105B40008F5F8F779170843028F4880F892B809332 -:105B5000180402C090931804809118048E7F91E07D -:105B600009F490E08091180490FB80F98093180468 -:105B70000E94EE288091180486950C94540520917B -:105B80001804922F96958927982F990F822F81704C -:105B9000892B809318048E7F91E009F490E0809126 -:105BA000180490FB80F9809318040E94EE288091DD -:105BB000180486950C9454055058BB27AA270ED07C -:105BC00075C166D130F06BD120F031F49F3F11F4F4 -:105BD0001EF45BC10EF4E095E7FB51C1E92F77D1CC -:105BE00080F3BA17620773078407950718F071F4FA -:105BF0009EF58FC10EF4E0950B2EBA2FA02D0B0150 -:105C0000B90190010C01CA01A0011124FF27591B01 -:105C100099F0593F50F4503E68F11A16F040A22F07 -:105C2000232F342F4427585FF3CF46953795279578 -:105C3000A795F0405395C9F77EF41F16BA0B620B77 -:105C4000730B840BBAF09150A1F0FF0FBB1F661FBE -:105C5000771F881FC2F70EC0BA0F621F731F841F01 -:105C600048F4879577956795B795F7959E3F08F027 -:105C7000B3CF9395880F08F09927EE0F97958795E6 -:105C80000895D9D008F481E008950CD00FC107D150 -:105C900040F0FED030F021F45F3F19F0F0C0511118 -:105CA00039C1F3C014D198F39923C9F35523B1F343 -:105CB000951B550BBB27AA2762177307840738F07B -:105CC0009F5F5F4F220F331F441FAA1FA9F333D0DA -:105CD0000E2E3AF0E0E830D091505040E695001C8E -:105CE000CAF729D0FE2F27D0660F771F881FBB1F4A -:105CF000261737074807AB07B0E809F0BB0B802D24 -:105D0000BF01FF2793585F4F2AF09E3F510568F06F -:105D1000B6C000C15F3FECF3983EDCF38695779503 -:105D20006795B795F7959F5FC9F7880F911D969571 -:105D3000879597F90895E1E0660F771F881FBB1FCD -:105D4000621773078407BA0720F0621B730B840B7A -:105D5000BA0BEE1F88F7E095089504D06894B1114E -:105D6000D9C00895BCD088F09F5790F0B92F9927DB -:105D7000B751A0F0D1F0660F771F881F991F1AF056 -:105D8000BA95C9F712C0B13081F0C3D0B1E008951F -:105D9000C0C0672F782F8827B85F39F0B93FCCF3A0 -:105DA000869577956795B395D9F73EF4909580954C -:105DB000709561957F4F8F4F9F4F0895E89409C06C -:105DC00097FB3EF490958095709561957F4F8F4F2E -:105DD0009F4F9923A9F0F92F96E9BB279395F69544 -:105DE000879577956795B795F111F8CFFAF4BB0FC2 -:105DF00011F460FF1BC06F5F7F4F8F4F9F4F16C026 -:105E0000882311F096E911C0772321F09EE8872FAF -:105E1000762F05C0662371F096E8862F70E060E06B -:105E20002AF09A95660F771F881FDAF7880F9695E4 -:105E3000879597F90895990F0008550FAA0BE0E888 -:105E4000FEEF16161706E807F907C0F0121613063C -:105E5000E407F50798F0621B730B840B950B39F47C -:105E60000A2661F0232B242B252B21F408950A26E2 -:105E700009F4A140A6958FEF811D811D089597F922 -:105E80009F6780E870E060E008959FEF80EC0895E0 -:105E900000240A9416161706180609060895002409 -:105EA0000A9412161306140605060895092E039483 -:105EB000000C11F4882352F0BB0F40F4BF2B11F4F7 -:105EC00060FF04C06F5F7F4F8F4F9F4F089557FD56 -:105ED0009058440F551F59F05F3F71F04795880F58 -:105EE00097FB991F61F09F3F79F0879508951216EF -:105EF00013061406551FF2CF4695F1DF08C016169B -:105F000017061806991FF1CF86957105610508944B -:105F10000895E894BB2766277727CB0197F9089562 -:105F20008ADF08F48FEF08950BD0C0CFB1DF28F0DF -:105F3000B6DF18F0952309F0A2CFA7CF1124EACF3E -:105F4000C6DFA0F3959FD1F3950F50E0551F629FD8 -:105F5000F001729FBB27F00DB11D639FAA27F00DC2 -:105F6000B11DAA1F649F6627B00DA11D661F829FE9 -:105F70002227B00DA11D621F739FB00DA11D621FCE -:105F8000839FA00D611D221F749F3327A00D611DEB -:105F9000231F849F600D211D822F762F6A2F1124CD -:105FA0009F5750408AF0E1F088234AF0EE0FFF1F20 -:105FB000BB1F661F771F881F91505040A9F79E3F57 -:105FC000510570F05CCFA6CF5F3FECF3983EDCF359 -:105FD000869577956795B795F795E7959F5FC1F794 -:105FE000FE2B880F911D9695879597F90895FA01D4 -:105FF000EE0FFF1F30962105310599F161157105EE -:1060000061F48038BFE39B0749F1689490388105BB -:1060100061F08038BFEF9B0741F0992342F5FF3FC5 -:10602000E1053105210511F1E8940894E795D901BE -:10603000AA2329F4AB2FBE2FF85FD0F310C0FF5F67 -:1060400070F4A695E0F7F73950F019F0FF3A38F4FC -:106050009F779F930CD00F9007FC905808953EF0C7 -:1060600014CF60E070E080E89FE308954FE79F77EA -:106070005F934F933F932F939ED02F913F914F91DA -:106080005F9152DF05C019F40EF0F9CE42CFFDCE7C -:1060900026DFC8F39638C0F707F80F92E8942BE391 -:1060A0003AEA48EB5FE74EDF0F920F920F924DB73F -:1060B0005EB70F92C0D0E4E4F1E016D04F915F914B -:1060C000EF91FF91E595EE1FFF1F49F0FE57E06845 -:1060D0004427EE0F441FFA95E1F74195550B32D056 -:1060E0000F9007FE26C00895DF93CF931F930F9361 -:1060F000FF92EF92DF927B018C01689405C0DA2E4B -:10610000EF011EDFFE01E894A5912591359145919F -:106110005591AEF3EF0162DDFE019701A801DA941B -:1061200079F7DF90EF90FF900F911F91CF91DF9162 -:1061300008959B01AC0160E070E080E89FE3A5CD8D -:106140009ECEACC0CCDEE8F39923D9F3940F511D59 -:10615000BBF39150504094F059F0882332F0660F11 -:10616000771F881F91505040C1F79E3F510544F75B -:10617000880F911D9695879597F908955F3FACF02C -:10618000983E9CF0BB27869577956795B79508F460 -:10619000B1609395C1F7BB0F58F711F460FFE8CFDA -:1061A0006F5F7F4F8F4F9F4FE3CFB4CE0EF076C01F -:1061B0006CCE689464CE93DEC8F39923D1F3C6F312 -:1061C000DF93CF931F930F93FF92C92FDD2788236F -:1061D0002AF02197660F771F881FDAF720E030E05A -:1061E00040E85FEB9FE3883920F0803E30F0219655 -:1061F0008F77E3DCECE6F1E003C0DFDCE9E9F1E016 -:1062000073DF8B01BE01EC01FB2E6F577109759591 -:10621000771F880B990BD4DD28E132E741E35FE378 -:106220008FDEAF2D9801AE01FF900F911F91CF919E -:10623000DF91D4DC3BCEFA01DC01AA0FBB1F9B012E -:10624000AC01BF5728F422273327442750781FC0BA -:10625000B75188F4AB2F0024469537952795011C3C -:10626000A395D2F3002069F0220F331F441FB3958A -:10627000DAF30DD0A1CC61307105A0E88A07B946E8 -:1062800030F49B01AC0166277727882790783096F9 -:1062900021F0208331834283538308959F3F31F05F -:1062A000915020F4879577956795B795880F911D44 -:1062B0009695879597F90895AA1BBB1B51E107C0D6 -:1062C000AA1FBB1FA617B70710F0A61BB70B881F86 -:1062D000991F5A95A9F780959095BC01CD01089515 -:1062E00097FB072E16F4009407D077FD09D00E9483 -:1062F0005C3107FC05D03EF4909581959F4F089541 -:10630000709561957F4F0895EE0FFF1F0590F491F2 -:10631000E02D0994F999FECF92BD81BDF89A992795 -:1063200080B50895A8E1B0E042E050E00C94B231AD -:10633000262FF999FECF92BD81BDF89A019700B43E -:10634000021639F01FBA20BD0FB6F894FA9AF99ADE -:106350000FBE08950196272F0E9499310C94983111 -:10636000DC01CB01FC01F999FECF06C0F2BDE1BD15 -:10637000F89A319600B40D9241505040B8F7089504 -:04638000F894FFCFBF -:1063840007000C52D02445000000410000DC44000A -:1063940000004152D0A4440000404100005C44008D -:1063A40000004148F17644000000415C978A4400B3 -:1063B4000000411FD592440000004152D0A4440083 -:1063C4000000415CFFB844000000410AA7CF44002C -:1063D4000000410000DC44000000410AA7CF440053 -:1063E4000000410000DC4400000041000000000007 -:1063F40000804000005C45000040410000000000B7 -:1064040000804052D02445000040410AA7CF4400F8 -:106414000000410000DC44000000410000000000D6 -:1064240000804052D024450000404100000000009C -:1064340000804000005C45000040410AA7CF4400B2 -:106444000000410000DC44000000410000000000A6 -:1064540000804052D024450000404100000000006C -:106464000080400AA74F45000040410AA7CF4400DE -:106474000000410000DC4400000041000000000076 -:1064840000804052D024450000004100000000007C -:106494000080405CFF38450000004100000000001F -:1064A40000804052D02445000000410AA7CF440098 -:1064B4000000410000DC4400000041000000000036 -:1064C40000804052D024450000804153D024450030 -:1064D40000404160970A450000004154D0A44400A4 -:1064E4000000410000DC440000004160970A4500C0 -:1064F40000A041050000003F0000C8423214C0144F -:106504009D14691435140101DA032808140A321E93 -:106514000000020004000500070009000B000C0045 -:106524000E001000110013001500170018001A00C7 -:106534001C001D001F002100230024002600280049 -:1065440029002B002D002F003000320034003500CC -:10655400370039003B00400045002500260061005B -:106564006000200037006400650066006700440096 -:106574004600240047003F4D3639BD0970093A09E9 -:1065840001099408AD08C608DF08010203040506E2 -:0465940007080900EB +:10573000890208958FEF80938902089580918802ED +:10574000262F30E0280F311D2F3F310524F4680F3C +:105750006093880208958FEF8093880208958330C4 +:1057600011F128F4813049F0823091F008958530AC +:1057700081F120F18630C1F1089580918D02681782 +:1057800020F4861B80938D02089510928D02089557 +:1057900080918C02681720F4861B80938C020895F8 +:1057A00010928C02089580918B02681720F4861B5A +:1057B00080938B02089510928B02089580918A0243 +:1057C000681720F4861B80938A02089510928A023B +:1057D000089580918902681720F4861B80938902BE +:1057E000089510928902089580918802681720F424 +:1057F000861B8093880208951092880208950F9363 +:105800001F93873208F048C08E3108F094C0803171 +:1058100009F47EC008F5873009F468C068F4863062 +:1058200009F0A4C080913D04817F8E7F80933D0468 +:1058300081E080934D049BC08B3009F490C08E3082 +:1058400009F094C080913D0482FB222720F991E069 +:10585000922790FB82F965C0863109F480C060F41C +:10586000813109F083C00E945C219091850281E022 +:1058700089278093850273C0893109F470C08B3108 +:1058800009F074C080913D0481FB222720F991E04A +:10589000922790FB81F945C0883309F460C050F429 +:1058A000893209F45EC0853309F45BC0873209F49C +:1058B00058C05CC0833409F454C028F48A3308F417 +:1058C00055C0895339C0883409F050C00E945C210A +:1058D0000E946C060FEF13ED20E3015010402040B2 +:1058E000E1F700C000000E94792839C090913D0482 +:1058F000892F8095817080FB90F929F096609860DF +:1059000090933D0434C0997F977F90933D0427C0C6 +:1059100080913D0483FB222720F991E0922790FBA0 +:1059200083F980933D049923D1F080913D048160F7 +:1059300080933D0414C08D5141E050E060E070E080 +:105940008A019B0104C0000F111F221F331F8A957B +:10595000D2F7C901B8010E9418250E945C2181E09C +:1059600006C061E070E080E090E0F5CF80E01F913C +:105970000F91089580E0089580E00895CF93C82F97 +:1059800080914D04813069F018F08230C9F184C0F3 +:10599000E0918602F09187028081823209F07EC018 +:1059A00007C0E0918602F09187028081823261F423 +:1059B0008C2F0E94BA2C811104C08C2F0E94FF2BC7 +:1059C0001DC081E090E01AC08C2F0E94BC2C811178 +:1059D00014C0C43179F048F4CB3079F0C03109F00B +:1059E00061C082E080934D0408C0C93219F0C83309 +:1059F00021F058C010924D0455C081E0817054C010 +:105A0000C93291F120F5C43179F1B0F4C73009F011 +:105A100047C08EE180938D0282E380938C028AE0FE +:105A200080938B0284E180938A0288E080938902CC +:105A300088E28093880234C0CE51C63088F5EC2FBE +:105A4000F0E0E85AFC4F808180934C0429C0CE34AA +:105A5000E9F020F4CB3421F56AE013C0C13579F0C8 +:105A6000C235F1F461E00DC080914C04882319F037 +:105A700010924C0415C081E080934D0415C061E084 +:105A800006C080914C040E94392B0AC06AE08091C4 +:105A90004C040E94AF2B04C010924D0480E004C05F +:105AA00081E002C080E0AACFCF9108950E94DA2859 +:105AB000811102C00E94B6280E94FB2880936804CE +:105AC00080FF02C0869501C080E00C943005809173 +:105AD0006804982F9695292F30E0233031054CF437 +:105AE0009F5F990F8170892B8160809368040E9469 +:105AF000FF288091680486950C9430058091680495 +:105B0000982F969591F09158990F8170892B8093D9 +:105B100068048E7F91E009F490E08091680490FB26 +:105B200080F9809368040E94FF288091680486951C +:105B30000C94300580916804982F909590FB80F923 +:105B4000809368040E94FF288091680480FF02C04F +:105B5000869501C080E00C94300590916804892FEF +:105B600086958F5F8F779170843028F4880F892B0A +:105B70008093680402C090936804809168048E7FCB +:105B800091E009F490E08091680490FB80F98093A3 +:105B900068040E94FF288091680486950C94300563 +:105BA00020916804922F96958927982F990F822F1C +:105BB0008170892B809368048E7F91E009F490E0D6 +:105BC0008091680490FB80F9809368040E94FF280C +:105BD0008091680486950C9430055058BB27AA27FD +:105BE0000ED0D1C1C2D130F0C7D120F031F49F3FE7 +:105BF00011F41EF4B7C10EF4E095E7FB9FC1E92F45 +:105C0000D3D180F3BA17620773078407950718F09A +:105C100071F49EF5EBC10EF4E0950B2EBA2FA02D7A +:105C20000B01B90190010C01CA01A0011124FF2749 +:105C3000591B99F0593F50F4503E68F11A16F04044 +:105C4000A22F232F342F4427585FF3CF4695379543 +:105C50002795A795F0405395C9F77EF41F16BA0B08 +:105C6000620B730B840BBAF09150A1F0FF0FBB1FB6 +:105C7000661F771F881FC2F70EC0BA0F621F731FFF +:105C8000841F48F4879577956795B795F7959E3F5C +:105C900008F0B3CF9395880F08F09927EE0F9795EA +:105CA0008795089527D108F481E008950CD06BC141 +:105CB00063D140F05AD130F021F45F3F19F03EC17A +:105CC000511195C14FC170D198F39923C9F3552350 +:105CD000B1F3951B550BBB27AA27621773078407DF +:105CE00038F09F5F5F4F220F331F441FAA1FA9F395 +:105CF00033D00E2E3AF0E0E830D091505040E69587 +:105D0000001CCAF729D0FE2F27D0660F771F881FE7 +:105D1000BB1F261737074807AB07B0E809F0BB0BD6 +:105D2000802DBF01FF2793585F4F2AF09E3F5105FA +:105D300068F004C15CC15F3FECF3983EDCF38695EC +:105D400077956795B795F7959F5FC9F7880F911D70 +:105D50009695879597F90895E1E0660F771F881F5C +:105D6000BB1F621773078407BA0720F0621B730B0F +:105D7000840BBA0BEE1F88F7E095089504D0689461 +:105D8000B11135C1089518D188F09F5790F0B92FFF +:105D90009927B751A0F0D1F0660F771F881F991F80 +:105DA0001AF0BA95C9F712C0B13081F01FD1B1E035 +:105DB00008951CC1672F782F8827B85F39F0B93F45 +:105DC000CCF3869577956795B395D9F73EF4909582 +:105DD0008095709561957F4F8F4F9F4F0895E89400 +:105DE00009C097FB3EF490958095709561957F4F23 +:105DF0008F4F9F4F9923A9F0F92F96E9BB279395D1 +:105E0000F695879577956795B795F111F8CFFAF4E0 +:105E1000BB0F11F460FF1BC06F5F7F4F8F4F9F4F11 +:105E200016C0882311F096E911C0772321F09EE86F +:105E3000872F762F05C0662371F096E8862F70E0D5 +:105E400060E02AF09A95660F771F881FDAF7880FAF +:105E50009695879597F9089588D018F011F08CD011 +:105E600038F480C0C4C0E92F9FD0B0F35523C9F3E4 +:105E7000E7FB6217730784079507A8F199F3E92FE9 +:105E8000FF2788232AF03197660F771F881FDAF7DC +:105E9000952F5527442332F091505040220F331F45 +:105EA000441FD2F7BB27E91BF50B621B730B840B56 +:105EB000B109C1F222F4620F731F841FB11D319723 +:105EC0002AF0660F771F881FBB1FEFCF91505040FD +:105ED0005AF041F0882332F0660F771F881F9150E7 +:105EE0005040C1F7939530C08695779567959F5F31 +:105EF000D9F7F8CF990F0008550FAA0BE0E8FEEF8D +:105F000016161706E807F907C0F012161306E4077D +:105F1000F50798F0621B730B840B950B39F40A2676 +:105F200061F0232B242B252B21F408950A2609F454 +:105F3000A140A6958FEF811D811D089597F99F6758 +:105F400080E870E060E008959F3F31F0915020F4C8 +:105F5000879577956795B795880F911D9695879545 +:105F600097F908959FEF80EC089500240A9416167F +:105F7000170618060906089500240A941216130637 +:105F8000140605060895092E0394000C11F48823C5 +:105F900052F0BB0F40F4BF2B11F460FF04C06F5FE1 +:105FA0007F4F8F4F9F4F089557FD9058440F551FB7 +:105FB00059F05F3F71F04795880F97FB991F61F08B +:105FC0009F3F79F087950895121613061406551F02 +:105FD000F2CF4695F1DF08C0161617061806991F6E +:105FE000F1CF86957105610508940895E894BB2763 +:105FF00066277727CB0197F908957CDF08F48FEFA8 +:1060000008950BD0C0CFB1DF28F0B6DF18F095238C +:1060100009F094CFA7CF1124EACFC6DFA0F3959F54 +:10602000D1F3950F50E0551F629FF001729FBB277F +:10603000F00DB11D639FAA27F00DB11DAA1F649F2B +:106040006627B00DA11D661F829F2227B00DA11DDE +:10605000621F739FB00DA11D621F839FA00D611D64 +:10606000221F749F3327A00D611D231F849F600D85 +:10607000211D822F762F6A2F11249F5750408AF0BE +:10608000E1F088234AF0EE0FFF1FBB1F661F771F4A +:10609000881F91505040A9F79E3F510570F04ECF98 +:1060A000A6CF5F3FECF3983EDCF386957795679536 +:1060B000B795F795E7959F5FC1F7FE2B880F911D68 +:1060C0009695879597F90895FA01EE0FFF1F309680 +:1060D0002105310599F16115710561F48038BFE33F +:1060E0009B0749F168949038810561F08038BFEFD3 +:1060F0009B0741F0992342F5FF3FE105310521055A +:1061000011F1E8940894E795D901AA2329F4AB2F5B +:10611000BE2FF85FD0F310C0FF5F70F4A695E0F7D4 +:10612000F73950F019F0FF3A38F49F779F930CD06D +:106130000F9007FC905808953EF014CF60E070E097 +:1061400080E89FE308954FE79F775F934F933F93D6 +:106150002F939ED02F913F914F915F9152DF05C0B9 +:1061600019F40EF0EBCE42CFFDCE26DFC8F3963801 +:10617000C0F707F80F92E8942BE33AEA48EB5FE7A1 +:106180004EDF0F920F920F924DB75EB70F92C0D0B5 +:10619000ECEFF0E016D04F915F91EF91FF91E59514 +:1061A000EE1FFF1F49F0FE57E0684427EE0F441F23 +:1061B000FA95E1F74195550B32D00F9007FE26C0B6 +:1061C0000895DF93CF931F930F93FF92EF92DF9287 +:1061D0007B018C01689405C0DA2EEF011EDFFE0101 +:1061E000E894A5912591359145915591AEF3EF0134 +:1061F00006DDFE019701A801DA9479F7DF90EF90B0 +:10620000FF900F911F91CF91DF9108959B01AC01F9 +:1062100060E070E080E89FE349CD90CE95CECCDE83 +:10622000E8F39923D9F3940F511DBBF391505040DB +:1062300094F059F0882332F0660F771F881F915031 +:106240005040C1F79E3F510544F7880F911D969528 +:10625000879597F908955F3FACF0983E9CF0BB2777 +:10626000869577956795B79508F4B1609395C1F7D2 +:10627000BB0F58F711F460FFE8CF6F5F7F4F8F4F70 +:106280009F4FE3CFB4CE0EF05FCE6CCE689456CE67 +:1062900093DEC8F39923D1F3C6F3DF93CF931F9313 +:1062A0000F93FF92C92FDD2788232AF02197660FCD +:1062B000771F881FDAF720E030E040E85FEB9FE3CC +:1062C000883920F0803E30F021968F7787DCE4E239 +:1062D000F1E003C083DCE1E5F1E073DF8B01BE0197 +:1062E000EC01FB2E6F5771097595771F880B990B81 +:1062F00078DD28E132E741E35FE38FDEAF2D9801DF +:10630000AE01FF900F911F91CF91DF9178DC3BCED2 +:10631000FA01DC01AA0FBB1F9B01AC01BF5728F497 +:1063200022273327442750781FC0B75188F4AB2F5A +:106330000024469537952795011CA395D2F300209C +:1063400069F0220F331F441FB395DAF30DD045CC0B +:1063500061307105A0E88A07B94630F49B01AC01B1 +:106360006627772788279078309621F0208331831D +:10637000428353830895AA1BBB1B51E107C0AA1F88 +:10638000BB1FA617B70710F0A61BB70B881F991FD6 +:106390005A95A9F780959095BC01CD01089597FB7A +:1063A000072E16F4009407D077FD09D00E94BB3168 +:1063B00007FC05D03EF4909581959F4F0895709508 +:1063C00061957F4F0895EE0FFF1F0590F491E02D2A +:1063D0000994F999FECF92BD81BDF89A992780B5AD +:1063E0000895A8E1B0E042E050E00C941132262F6D +:1063F000F999FECF92BD81BDF89A019700B40216BB +:1064000039F01FBA20BD0FB6F894FA9AF99A0FBE68 +:1064100008950196272F0E94F8310C94F731DC0182 +:10642000CB01FC01F999FECF06C0F2BDE1BDF89A9F +:10643000319600B40D9241505040B8F70895F89449 +:02644000FFCF8C +:106442000C52D02445000000410000DC4400000052 +:106452004152D0A4440000404100005C44000000CE +:106462004148F17644000000415C978A44000000F4 +:10647200411FD592440000004152D0A444000000C4 +:10648200415CFFB844000000410AA7CF440000006D +:10649200410000DC44000000410AA7CF4400000094 +:1064A200410000DC440000004100000000000080C8 +:1064B2004000005C450000404100000000000080F8 +:1064C2004052D02445000040410AA7CF44000000BA +:1064D200410000DC44000000410000000000008098 +:1064E2004052D024450000404100000000000080DE +:1064F2004000005C45000040410AA7CF4400000074 +:10650200410000DC44000000410000000000008067 +:106512004052D024450000404100000000000080AD +:10652200400AA74F45000040410AA7CF440000009F +:10653200410000DC44000000410000000000008037 +:106542004052D024450000004100000000000080BD +:10655200405CFF3845000000410000000000008060 +:106562004052D02445000000410AA7CF4400000059 +:10657200410000DC440000004100000000000080F7 +:106582004052D024450000804153D02445000040B1 +:106592004160970A450000004154D0A44400000025 +:1065A200410000DC440000004160970A450000A061 +:1065B20041050000003F0000C8424314D114AE144C +:1065C2007A14461401012A042808140A321E000013 +:1065D200020004000500070009000B000C000E0079 +:1065E2001000110013001500170018001A001C00FB +:1065F2001D001F002100230024002600280029007E +:106602002B002D002F0030003200340035003700FF +:1066120039003B0040004500250026006100600073 +:1066220020003700640065006600670044004600F1 +:10663200240047003149803F5D8B803FF8BF803F97 +:10664200CAE1803F73ED803FCAE1803FF8BF803FDF +:106652005D8B803F3149803F0000803FF16D7F3F7D +:1066620075EA7E3F4C827E3F833F7E3F84287E3F99 +:10667200833F7E3F4C827E3F75EA7E3FF16D7F3FD6 +:106682000000803F3F4D363975092809F208B908E4 +:106692004C0865087E0897080102030405060708EE +:0266A2000900ED :00000001FF diff --git a/keyboard/planck/planck_pcb_r4_w_bootloader.hex b/keyboard/planck/planck_pcb_r4_w_bootloader.hex index f2e9993ac8..140bf415f2 100644 --- a/keyboard/planck/planck_pcb_r4_w_bootloader.hex +++ b/keyboard/planck/planck_pcb_r4_w_bootloader.hex @@ -250,76 +250,76 @@ :107FE4000C94ED3E0C94113F0C94193F0C94213FDA :0C7FF4000C94F23E0C94033F0C94293FC7 :040000030000700089 -:100000000C94FE040C9442050C9442050C94420599 -:100010000C9442050C9442050C9442050C94420544 -:100020000C9442050C9442050C94A6180C94781973 -:100030000C94DB270C9442050C9442050C94420569 -:100040000C9442050C9442050C9442050C94420514 -:100050000C9442050C9443280C9442050C944205E0 -:100060000C9442050C9442050C9442050C944205F4 -:100070000C9442050C9442050C9442050C944205E4 -:100080000C94D10E0C9442050C9442050C9442053C -:100090000C9442050C9442050C9442050C944205C4 -:1000A0000C9442050C9442050C9442059D05AD0547 -:1000B000BF05CF05D505E405F005F60504060D06D8 -:1000C0001E062E06340664069013901390139013A8 -:1000D000901390139013901390139013A713A713DA -:1000E000A713A713A713A713A713A713A713A71340 -:1000F00090139013901390139013A713A713A713A3 -:10010000A713A713901390139013A713A713A71364 -:10011000E519071AF51A071AF51A4C1A6F1AF51A83 -:10012000C41AD71ADA1DDA1D171E171E711EAF1E4C -:1001300027212721C81E2721C91FC91F8C20A320C2 -:100140002721122107634236B79BD8A71A39685670 -:1001500018AEBAAB558C1D3CB7CC5763BD6DEDFDE9 -:10016000753EF6177231BF000000803F08000000A6 -:10017000BE922449123EABAAAA2ABECDCCCC4C3E9C -:1001800000000080BEABAAAAAA3E00000000BF008B -:100190000000803F0000000000084178D3BB438787 -:1001A000D1133D190E3CC3BD4282AD2B3E68EC829B -:1001B00076BED98FE1A93E4C80EFFFBE01C4FF7F20 -:1001C0003F00000000002B0014001A00080015007A -:1001D00017001C0018000C00120013002A00290050 -:1001E00004001600070009000A000B000D000E00B5 -:1001F0000F0033003400E1001D001B000600190051 -:1002000005001100100036003700380028000530C6 -:10021000E000E200E30003302C002C00043050002A -:10022000510052004F002B0014001A000900130067 -:100230000A000D000F0018001C0033002A002900DE -:10024000040015001600170007000B00110008003D -:100250000C0012003400E1001D001B000600190014 -:1002600005000E0010003600370038002800053069 -:10027000E000E200E30003302C002C0004305000CA -:10028000510052004F002B0034003600370013009D -:100290001C0009000A00060015000F002A002900B2 -:1002A00004001200080018000C0007000B001700E3 -:1002B000110016003800E100330014000D000E009C -:1002C0001B00050010001A0019001D002800053051 -:1002D000E000E200E30003302C002C00043050006A -:1002E000510052004F0035021E021F02200221025F -:1002F0002202230224022502260227022A004C00A1 -:100300003A003B003C003D003E003F002D022E0223 -:100310002F02300231020100400041004200430040 -:10032000440045000100010001000100010001003E -:100330000100010001000100010001000100AB000B -:10034000AA00A900AE0035001E001F0020002100F9 -:100350002200230024002500260027002A004C004C -:100360003A003B003C003D003E003F002D002E00C7 -:100370002F003000310001004000410042004300E6 -:1003800044004500010001000100010001000100DE -:100390000100010001000100010001000100AB00AB -:1003A000AA00A900AE00000000000000000000004C -:1003B000000000000000000000000000000000003D -:1003C000000000000000000000000000000000002D -:1003D000000000000000000000000000000000001D -:1003E000000000000000000000000000000000000D -:1003F0000000000000000330000000000430000096 -:100400000000000000001E001E001E001E001E0056 -:100410001E001E001E001E001E001E001E0000000A -:1004200014001A000800150017001C0018000C002A -:10043000120013002F00000004001600070009003E -:100440000A000B000D000E000F00330034000D30C9 -:10045000000000000600190000000000110010005C +:100000000C94DA040C941E050C941E050C941E0529 +:100010000C941E050C941E050C941E050C941E05D4 +:100020000C941E050C941E050C94B7180C94891999 +:100030000C94EC270C941E050C941E050C941E05C4 +:100040000C941E050C941E050C941E050C941E05A4 +:100050000C941E050C9454280C941E050C941E053B +:100060000C941E050C941E050C941E050C941E0584 +:100070000C941E050C941E050C941E050C941E0574 +:100080000C94AD0E0C941E050C941E050C941E05CC +:100090000C941E050C941E050C941E050C941E0554 +:1000A0000C941E050C941E050C941E0579058905FB +:1000B0009B05AB05B105C005CC05D205E005E905FA +:1000C000FA050A0610064006F619181A061B181A31 +:1000D000061B5D1A801A061BD51AE81AEB1DEB1DCC +:1000E000281E281E821EC01E38213821D91E382104 +:1000F000DA1FDA1F9D20B4203821232107634236FE +:10010000B79BD8A71A39685618AEBAAB558C1D3CA8 +:10011000B7CC5763BD6DEDFD753EF6177231BF006C +:100120000000803F08000000BE922449123EABAAA6 +:10013000AA2ABECDCCCC4C3E00000080BEABAAAA01 +:10014000AA3E00000000BF000000803F0000000049 +:1001500000084178D3BB4387D1133D190E3CC3BD82 +:100160004282AD2B3E68EC8276BED98FE1A93E4C2F +:1001700080EFFFBE01C4FF7F3F00000000002B00A6 +:1001800014001A000800150017001C0018000C00CD +:10019000120013002A0029000400160007000900BD +:1001A0000A000B000D000E000F0033003400E100C8 +:1001B0001D001B000600190005001100100036008C +:1001C0003700380028000530E000E200E30003308B +:1001D0002C002C0004305000510052004F002B0026 +:1001E00014001A00090013000A000D000F00180087 +:1001F0001C0033002A002900040015001600170017 +:1002000007000B00110008000C0012003400E10090 +:100210001D001B000600190005000E00100036002E +:100220003700380028000530E000E200E30003302A +:100230002C002C0004305000510052004F002B00C5 +:1002400034003600370013001C0009000A000600C5 +:1002500015000F002A0029000400120008001800F1 +:100260000C0007000B001700110016003800E10019 +:10027000330014000D000E001B00050010001A00D2 +:1002800019001D0028000530E000E200E300033003 +:100290002C002C0004305000510052004F00350259 +:1002A0001E021F0220022102220223022402250232 +:1002B000260227022A004C003A003B003C003D0089 +:1002C0003E003F002D022E022F02300231020100BB +:1002D000400041004200430044004500010001008D +:1002E0000100010001000100010001000100010006 +:1002F000010001000100AB00AA00A900AE0035001A +:100300001E001F00200021002200230024002500E1 +:10031000260027002A004C003A003B003C003D002C +:100320003E003F002D002E002F0030003100010064 +:10033000400041004200430044004500010001002C +:1003400001000100010001000100010001000100A5 +:10035000010001000100AB00AA00A900AE000000EE +:10036000000000000000000000000000000000008D +:10037000000000000000000000000000000000007D +:10038000000000000000000000000000000000006D +:10039000000000000000000000000000000000005D +:1003A000000000000000000000000000000003301A +:1003B00000000000043000000000000000001E00EB +:1003C0001E001E001E001E001E001E001E001E003D +:1003D0001E001E001E00000014001A000800150078 +:1003E00017001C0018000C00120013002F00000062 +:1003F00004001600070009000A000B000D000E00A3 +:100400000F00330034000D3000000000060019001A +:1004100000000000110010000000000000000000BB +:1004200000000000000000000000000000000000CC +:1004300000000000000000000000000000000000BC +:1004400000000000000000000000000000000000AC +:10045000000000000000000000000000000000009C :10046000000000000000000000000000000000008C :10047000000000000000000000000000000000007C :10048000000000000000000000000000000000006C @@ -369,1512 +369,1529 @@ :1007400000000000000000000000000000000000A9 :100750000000000000000000000000000000000099 :100760000000000000000000000000000000000089 -:100770000000000000000000000000000000000079 -:100780000000000000000000000000000000000069 -:100790000000000000000000000000000000000059 -:1007A0000000000000000000000000000000000049 -:1007B0000000000000000000000000000000000039 -:1007C00000000000000001000050010001000100D5 -:1007D0000100010001000100010001004C000100C6 -:1007E0000100010007300630135012500030013074 -:1007F00002300C30010001000B300A3009300830A3 -:1008000001000100010001000100010001000100E0 -:1008100001000100010001000100010001000100D0 -:100820000100010001002803540068006500200059 -:1008300050006C0061006E0063006B0020004B00F4 -:100840006500790062006F006100720064000000C2 -:100850002C034F007200740068006F006C00690088 -:100860006E0065006100720020004B006500790099 -:1008700062006F00610072006400730000000403F6 -:10088000090409026D00040100A0FA090400000136 -:1008900003010100092111010001223F0007058128 -:1008A0000308000A090401000103010200092111E3 -:1008B000010001224D000705820308000A09040215 -:1008C0000001030000000921110100012236000788 -:1008D00005830308000A090403000103000000095E -:1008E00021110100012239000705840310000112C3 -:1008F00001100100000008EDFE606001000102002F -:100900000105010906A101050719E029E7150025E0 -:1009100001950875018102050819012905950575DC -:1009200001910295017503910105071900297715B9 -:10093000002501957875018102C005010980A1019A -:10094000850216010026B7001A01002AB7007510AB -:1009500095018100C0050C0901A101850316010064 -:10096000269C021A01002A9C02751095018100C084 -:1009700005010902A1010901A100050919012905C3 -:100980001500250195057501810295017503810109 -:100990000501093009311581257F95027508810609 -:1009A00009381581257F950175088106050C0A38DF -:1009B000021581257F950175088106C0C0050109D2 -:1009C00006A101050719E029E7150025019508751D -:1009D0000181029501750881010508190129059514 -:1009E000057501910295017503910105071900290B -:1009F000FF150025FF950675088100C011241FBE54 -:100A0000CFEFDAE0DEBFCDBF04B603FE24C0809195 -:100A1000190490911A04A0911B04B0911C04873012 -:100A2000904BA740B04BB9F41092190410921A04DD -:100A300010921B0410921C0414BE84B7877F84BFDD -:100A400088E10FB6F89480936000109260000FBEAA -:100A5000E0E0F8E3099513E0A0E0B1E0E4E8F3E6B4 -:100A600002C005900D92A431B107D9F714E0A4E1BA -:100A7000B3E001C01D92A931B107E1F70E94EC1566 -:100A80000C94C0310C940000279A2F988FEF9FEFA1 -:100A900090938700809386008AE08093800089E1AC -:100AA000809381000C94452D282F81110BC08091DB -:100AB0008000877F8093800010928D0010928C00C0 -:100AC0002F9808952F9880918000886080938000EF -:100AD000233019F48FEF9FEF0FC083E090E0821B6B -:100AE0009109880F991F2FEF3FEFA90102C056957A -:100AF00047958A95E2F7CA0190938D0080938C0008 -:100B00000895CF93DF93EC010E94DC28BE0180E0C2 -:100B100090E0DF91CF910C9407250F931F93462F00 -:100B200050E04E30510508F0DEC0DC01FA01EA5A0F -:100B3000FF4F12968C910C948431882309F4D3C012 -:100B400000E010E0980140E064E070E08BE292E0A9 -:100B50000E944F1281E090E00FC0882309F4C3C0C7 -:100B600000E010E0980140E066E070E08BEB91E07F -:100B70000E944F1282E090E00E948105B4C0882359 -:100B800009F4B1C000E010E0980140E068E070E0D6 -:100B90008BEE91E00E944F1284E090E0EDCF88232D -:100BA00011F083E005C083E00CC0882349F084E0A5 -:100BB0000E94842540E164E083E00E94910A93C092 -:100BC00084E00E94A525F6CF882331F085EE0E94AF -:100BD0006E1C0E949C2D87C085EE0E94361D83C02E -:100BE000882309F480C00E94E30D7DC0882309F4A6 -:100BF0007AC00E94DC0D00E010E0980140E065E062 -:100C000070E08BE492E027C0882309F46CC085E093 -:100C10000E94A5250E94040E66C0882309F463C0C3 -:100C200000E010E0980140E068E070E08BE191E0C6 -:100C30000E944F1285E00E94842555C0882309F444 -:100C400052C00E94E21200E010E0980140E068E02B -:100C500070E08BE191E00E944F1245C0882309F4B7 -:100C600042C00E94ED12EFCF8823E9F100E010E0CE -:100C7000980140E066E070E08BE891E00E944F123E -:100C800084E00E94A52583E00E94A52580E10E94C2 -:100C9000A52585E00E94A5250E94040E86E00E94FD -:100CA00084250E94C928811102C00E94A5280E94A3 -:100CB000E12890E090931804809317048068809353 -:100CC00017040E94E5280FC0882369F000E010E0B7 -:100CD000980140E066E070E08BE591E00E944F12E1 -:100CE00086E00E94A52580E090E01F910F91089575 -:100CF0000F931F932FEF89EF90E021508040904099 -:100D0000E1F700C0000000E010E0980140E065E07D -:100D100070E08BE492E00E944F121F910F910895B2 -:100D20000F931F9300E010E0980140E063E070E053 -:100D300083E091E00E944F122FEF82E597E021506F -:100D400080409040E1F700C000001F910F9108958E -:100D5000CF92DF92EF92FF920F931F93CF93DF9387 -:100D6000CDB7DEB7CC58D1090FB6F894DEBF0FBEB1 -:100D7000CDBF2091D10325FFC5C08C01FC0192811C -:100D800080910201992309F460C096E4E0E9F2E061 -:100D9000DE01A95BBF4F01900D929A95E1F7F80132 -:100DA0009081E0910001F0910101E90FF11DEE0F3A -:100DB000FF1F27E430E02C0F3D1FE20FF31F60817F -:100DC0007181680F711D882777FD8095982F0E948B -:100DD000E02E20E030E040E451E40E94452E6B011B -:100DE0007C01F801218184E090E0821B9109BC0123 -:100DF000882777FD8095982F0E94E02E9B01AC01FB -:100E0000C701B6010E94DD2D9B01AC0160E070E0DE -:100E100080E090E40E94F72F20E030E04CE551E4C0 -:100E20000E94942F4FE050E0C457DF4F0FB6F89464 -:100E3000DEBF0FBECDBFDF91CF911F910F91FF900D -:100E4000EF90DF90CF900C94EF1196E4E0E9F2E0A0 -:100E5000DE01119601900D929A95E1F7F8019081CB -:100E6000E0910001F0910101E90FF11DEE0FFF1F6C -:100E700021E030E02C0F3D1FE20FF31F60817181F4 -:100E8000680F711D882777FD8095982F0E94E02EAE -:100E900020E030E040E451E40E94452E6B017C01EB -:100EA000F801218184E090E0821B9109BC01882730 -:100EB00077FD8095982F0E94E02E9B01AC01C70121 -:100EC000B6010E94DD2D9B01AC0160E070E080E086 -:100ED00090E40E94F72F20E030E04CE551E40E94BE -:100EE000942FC457DF4F0FB6F894DEBF0FBECDBFAF -:100EF000DF91CF911F910F91FF90EF90DF90CF90F6 -:100F00000C94370EC457DF4F0FB6F894DEBF0FBEF8 -:100F1000CDBFDF91CF911F910F91FF90EF90DF90A8 -:100F2000CF90089508950E9444056E9A769A0C9485 -:100F300078060C9492070C94A8060895880F991FC0 -:100F4000FC01EA5BFF4F859194910895880F991FEA -:100F5000FC01EA53FE4F8591949108950F931F93DE -:100F6000CF93DF93EC01811520E49207A0F5C11522 -:100F700080E3D80708F0E1C0C83ED105D8F4C03EF0 -:100F8000D10508F0EEC1C83AD10578F4C53AD105CB -:100F900008F074C0C130D10509F46DC008F4DEC199 -:100FA000C430D10508F0DDC1D9C1CB3BD10508F46F -:100FB00070C0D4C1C11590E2D90708F0B9C0C115FD -:100FC00021E0D20708F0CDC1C03FD10508F4C6C169 -:100FD0008E01106506C2C13080E5D80709F4BDC096 -:100FE00068F5C13120E4D20709F4AEC050F4C03135 -:100FF00090E4D90708F0A5C0CF70DD278E01146DED -:10100000F0C1C33120E4D20709F4A4C008F49FC0A2 -:10101000C115D04509F0A2C10E944B210E94040EC7 -:101020000E9490069FEF24E38CE091502040804086 -:10103000E1F700C000000E946828D3C1C11520E676 -:10104000D20730F4C11581E5D80708F48CC02DC152 -:10105000C11590E7D90708F481C1C11520E8D2076E -:1010600008F478C1C11580E9D80708F077C1DF70AE -:101070008E01106AB6C101E010E0B3C1C53AD105D6 -:1010800009F471C1C63AD10509F070C102E810E453 -:10109000A8C1C83AD10509F46CC1C93AD10509F40F -:1010A0006BC1CA3AD10509F46AC1CB3AD10509F43A -:1010B00069C1CC3AD10509F468C1CD3AD10509F42A -:1010C00067C1C03BD10509F466C1CE3AD10509F428 -:1010D00065C1CF3AD10509F464C1C13BD10509F41A -:1010E00063C1C23BD10509F462C1C33BD10509F418 -:1010F00061C1C43BD10509F460C1C53BD10509F408 -:101100005FC1C63BD10509F45EC1C73BD10509F4F7 -:101110005DC1C83BD10509F45CC1C93BD10509F4E7 -:101120005BC1CA3BD10509F45AC100E014E459C1BE -:10113000CE019F700E94A60755C1DD278E01106C5D -:1011400050C100E011ED4DC100E010ED4AC100E0DA -:1011500012ED47C100E013ED44C18091ED038160C1 -:101160008093ED033EC10E94C928811102C00E94F4 -:10117000A5280E94E12890E090931804809317041A -:10118000C23090E5D90721F480911704816086C0B0 -:10119000C43020E5D20721F48091170482607EC01C -:1011A000C63080E5D80721F480911704846076C0AA -:1011B000C83090E5D90719F48091170427C0CA30C8 -:1011C00020E5D20721F480911704806167C0CC30FC -:1011D00080E5D80721F48091170480625FC0CE308B -:1011E00090E5D90721F480911704806457C0C0317D -:1011F00020E5D20721F48091170480684FC0C231E6 -:1012000080E5D80729F4809117048460886046C07F -:10121000C33090E5D90721F4809117048E7F3EC03A -:10122000C53020E5D20721F4809117048D7F36C0A8 -:10123000C73080E5D80721F4809117048B7F2EC03A -:10124000C93090E5D90719F48091170426C0CB3036 -:1012500020E5D20721F4809117048F7E1FC0CD3086 -:1012600080E5D80721F4809117048F7D17C0CF3017 -:1012700090E5D90721F4809117048F7B0FC0C1310D -:1012800020E5D20721F4809117048F7707C0C3317E -:10129000D04531F4809117048B7F877F80931704AA -:1012A000809117040E94E5289CC08D2F99278F708C -:1012B000992781309105D9F49E012370332702C00C -:1012C000880F991F2A95E2F79C688E0144E0000F71 -:1012D000111F4A95E1F700271370802B912B53E0E3 -:1012E000CC0FDD1F5A95E1F7C076DD272FC0823085 -:1012F000910531F4DC2FCC278E01016F106A71C08B -:101300008330910569F4CE018370992701E010E0E4 -:1013100002C0000F111F8A95E2F7C8019C680FC038 -:10132000049709F05EC0CE018370992701E010E0B8 -:1013300002C0000F111F8A95E2F7C8019A6823E0E6 -:10134000CC0FDD1F2A95E1F7C07ED7708C010C2BE6 -:101350001D2B47C0DF708E01106243C000E010E01B -:1013600040C08E013EC001E810E43BC003E810E439 -:1013700038C002EE14E435C009EE14E432C00AEEBF -:1013800014E42FC005EB14E42CC006EB14E429C0D0 -:1013900007EB14E426C00CEC14E423C00DEC14E4B9 -:1013A00020C003E815E41DC00AE815E41AC002E9EC -:1013B00015E417C004E915E414C001E216E411C0F5 -:1013C00003E216E40EC004E216E40BC005E216E4E4 -:1013D00008C006E216E405C007E216E402C00AE20D -:1013E00016E4C801DF91CF911F910F9108959CE001 -:1013F000799FF001112490E3899FE00DF11D1124E4 -:10140000E60FF11DEE0FFF1FEA53FE4F85919491F9 -:10141000803E9105E0F4803C910558F581339105BB -:1014200009F46FC048F48932910509F463C08A3227 -:10143000910509F46DC072C089339105E9F08238D5 -:101440009105D1F08533910509F44DC067C0833E05 -:10145000910581F138F4803E9105B9F0823E910505 -:10146000D9F05CC0863E910561F1873E9105A1F1FE -:1014700055C00E949E0708952091170420FD02C0C8 -:1014800021FF4CC080EE90E049C08091170480FF9E -:10149000F9CF89E390E042C08091170482FF0EC02B -:1014A0008091170484FF03C080E090E037C083EE92 -:1014B00090E034C08091170482FFF2CF82EE90E07A -:1014C0002DC08091170483FF0BC08091170484FD09 -:1014D000EBCF87EE90E022C08091170483FFF5CF19 -:1014E00086EE90E01BC08091170485FF07C089E25B -:1014F00090E014C08091170485FFF9CF85E390E058 -:101500000DC08091170486FF07C08AE290E006C0F4 -:101510008091170486FFF9CF81E390E00E94AE0727 -:101520000895CF92DF92EF92FF920F931F9301E005 -:1015300010E020E030E06801790104C0CC0CDD1C33 -:10154000EE1CFF1C8A95D2F704C0000F111F221F4A -:10155000331F6A95D2F70C291D292E293F29C090E7 -:10156000D103D090D203E090D303F090D403C022F3 -:10157000D122E222F322842FC016D106E206F3061E -:1015800041F41F910F91FF90EF90DF90CF900C945A -:1015900084251F910F91FF90EF90DF90CF900C94D6 -:1015A000A52508950C94D10A5F926F927F928F9235 -:1015B0009F92AF92BF92CF92DF92EF92FF920F93E2 -:1015C0001F93CF93DF93CDB7DEB728970FB6F8946C -:1015D000DEBF0FBECDBFCE0101966C014E0199E07A -:1015E000890E911C20E030E040E050E060E070E0C7 -:1015F00000E010E0E12CF12C6C2C5D2C88E0782EC2 -:10160000AA24A394B12CE6EDF2E0A62DB52D872DEA -:1016100001900D928A95E1F7F601819191916F0108 -:10162000FC01E07FFF27E032F10559F48F70992724 -:10163000F50102C0EE0FFF1F8A95E2F7EE2AFF2A9E -:1016400037C0E033F10559F48F709927F50102C0D6 -:10165000EE0FFF1F8A95E2F70E2B1F2B29C0E034F7 -:10166000F10559F48F709927F50102C0EE0FFF1FA5 -:101670008A95E2F76E2B7F2B1BC0E035F10559F4FC -:101680008F709927F50102C0EE0FFF1F8A95E2F7D0 -:101690004E2B5F2B0DC0E036F10551F48F7099276A -:1016A000F50102C0EE0FFF1F8A95E2F72E2B3F2BAC -:1016B000C814D90409F0A7CF84B19E2D9095892331 -:1016C00084B985B1E82AE5B887B1902F9095892330 -:1016D00087B988B1082B08B98AB1962F90958923CC -:1016E0008AB98BB1682B6BB98DB1942F90958923F2 -:1016F0008DB98EB1482B4EB980B3922F9095892326 -:1017000080BB81B3282B21BB28960FB6F894DEBF8F -:101710000FBECDBFDF91CF911F910F91FF90EF9042 -:10172000DF90CF90BF90AF909F908F907F906F9001 -:101730005F9008955F926F927F928F929F92AF9287 -:10174000BF92CF92DF92EF92FF920F931F93CF93AE -:10175000DF93CDB7DEB768970FB6F894DEBF0FBE44 -:10176000CDBF85B7806885BF85B7806885BF0E947B -:10177000D40ACE0101966C014E0199E1890E911CAB -:1017800020E030E040E050E060E070E000E010E099 -:10179000E12CF12C6C2C5D2C88E1782EAA24A394EA -:1017A000B12CEEEDF2E0A62DB52D872D01900D9216 -:1017B0008A95E1F7F601819191916F01FC01E07F3B -:1017C000FF27E032F10559F48F709927F50102C027 -:1017D000EE0FFF1F8A95E2F7EE2AFF2A37C0E033AB -:1017E000F10559F48F709927F50102C0EE0FFF1F24 -:1017F0008A95E2F70E2B1F2B29C0E034F10559F42E -:101800008F709927F50102C0EE0FFF1F8A95E2F74E -:101810006E2B7F2B1BC0E035F10559F48F70992793 -:10182000F50102C0EE0FFF1F8A95E2F74E2B5F2BEA -:101830000DC0E036F10551F48F709927F50102C013 -:10184000EE0FFF1F8A95E2F72E2B3F2BC814D90409 -:1018500009F0A7CF84B19E2D9095892384B985B1D5 -:10186000E82AE5B887B1902F9095892387B988B188 -:10187000082B08B98AB1962F909589238AB98BB124 -:10188000682B6BB98DB1942F909589238DB98EB14A -:10189000482B4EB980B3922F9095892380BB81B39A -:1018A000282B21BB10921D0310921C0310921503CC -:1018B0001092140310921F0310921E03109217032C -:1018C0001092160310922103109220031092190314 -:1018D00010921803109223031092220310921B03FC -:1018E00010921A0368960FB6F894DEBF0FBECDBFF4 -:1018F000DF91CF911F910F91FF90EF90DF90CF90EC -:10190000BF90AF909F908F907F906F905F900C945E -:1019100093077F928F929F92AF92BF92CF92DF9266 -:10192000EF92FF920F931F93CF93DF93CDB7DEB764 -:10193000A0970FB6F894DEBF0FBECDBF6E0149E190 -:10194000C40ED11C84E1E82E83E0F82E98E0792EB5 -:10195000BC2CAD2C01E010E028E1822E35E0932E66 -:10196000E6EDF2E0AB2DBA2D872D01900D928A9510 -:10197000E1F7F601819191916F019C01207F33275E -:101980002032310591F424B18F709927A80102C04B -:10199000440F551F8A95E2F7CA01922F982B94B9EC -:1019A00095B18095892385B953C02033310591F4D1 -:1019B00027B18F709927F80102C0EE0FFF1F8A959B -:1019C000E2F7CF01922F982B97B998B18095892390 -:1019D00088B93EC02034310591F42AB18F7099271F -:1019E000A80102C0440F551F8A95E2F7CA01922F41 -:1019F000982B9AB99BB1809589238BB929C0203542 -:101A0000310591F42DB18F709927F80102C0EE0FC6 -:101A1000FF1F8A95E2F7CF01922F982B9DB99EB1B7 -:101A2000809589238EB914C02036310589F420B3FE -:101A30008F709927A80102C0440F551F8A95E2F7BD -:101A4000CA01922F982B90BB91B38095892381BBBB -:101A500050EA5A95F1F7BE016F5F7F4F20E030E00A -:101A600040E050E0EEEDF2E0DE011196882D0190AD -:101A70000D928A95E1F7FB0181919191BF01FC01E3 -:101A8000E07FFF27E032F10511F4E3B113C0E0334A -:101A9000F10511F4E6B10EC0E034F10511F4E9B13D -:101AA00009C0E035F10511F4ECB104C0E036F105F0 -:101AB000B9F4EFB1F0E08F70992702C0F595E79582 -:101AC0008A95E2F7E0FD08C0C801042E02C0880F25 -:101AD000991F0A94E2F702C080E090E0282B392B8E -:101AE0004F5F5F4F4C30510509F0BCCFF70180814B -:101AF00091818217930721F03183208390927302A2 -:101B00000E94D40AF2E0EF0EF11C4CE1E41643E02F -:101B1000F40609F025CF80917302882361F181508A -:101B200080937302882339F08FE99FE00197F1F7E2 -:101B300000C0000020C08091140390911503909381 -:101B40001D0380931C0380911603909117039093BB -:101B50001F0380931E0380911803909119039093A3 -:101B600021038093200380911A0390911B0390938B -:101B70002303809322030E94990781E0A0960FB669 -:101B8000F894DEBF0FBECDBFDF91CF911F910F91B3 -:101B9000FF90EF90DF90CF90BF90AF909F908F908D -:101BA0007F900895E82FF0E0EE0FFF1FE45EFC4FFA -:101BB00080819181089508958091020481608093CD -:101BC00002040C94F728809102048E7F8093020413 -:101BD0000C94F7280E94C928811102C00E94A528F0 -:101BE0000E94F328809302043E9A809171008D7FB9 -:101BF0008093710082E0809390008AE1809391004D -:101C000081E080932603089580912603811102C00C -:101C10000E94EA0D10927603109275038091710074 -:101C20008D7F80937100809190008F7780939000DA -:101C3000109238031092370310926F0310927003C2 -:101C4000109271031092720310926E0310926D0342 -:101C5000EDE4F3E0ADE3B3E0119211921192119231 -:101C60001D921D9283E0ED36F807B1F70895CF92EB -:101C7000DF92EF92FF920F931F93CF93DF93209108 -:101C80003703222309F484C06B017C018091260371 -:101C9000811102C00E94EA0D0DE613E0C7E0D0E01A -:101CA000A7019601F80192918291729162918F0140 -:101CB0000E94412E811131C0FE01EE0FFF1FEE0F79 -:101CC000FF1FE35BFC4F1082118212821382DE0140 -:101CD000AA0FBB1FA35CBC4F11961C921E92C7306B -:101CE000D105E9F021964481558166817781408351 -:101CF000518362837383148215821682178212962F -:101D00008D919C91139711969C938E9313961C9290 -:101D10001E92129734961296E2CF219708F6809180 -:101D2000750390917603019797FD05C09093760314 -:101D30008093750304C0109276031092750380910E -:101D400075039091760320917303309174032817E3 -:101D5000390724F01092740310927303892BC1F495 -:101D6000809171008D7F80937100809190008F77BA -:101D70008093900010926F03109270031092710381 -:101D80001092720310926E0310926D03109237033B -:101D9000DF91CF911F910F91FF90EF90DF90CF9047 -:101DA00008951F920F920FB60F9211244F925F92D7 -:101DB0006F927F928F929F92AF92BF92CF92DF925B -:101DC000EF92FF922F933F934F935F936F937F9385 -:101DD0008F939F93AF93BF93CF93DF93EF93FF9333 -:101DE00080913703882309F49BC1C0917503D0917A -:101DF00076031C161D060CF093C1409027035090EB -:101E000028036090290370902A0320E030E0A901A4 -:101E1000C301B2010E94902F18160CF065C0C130AA -:101E2000D10509F452C08091730390917403BE01EF -:101E30000E9470317C0190937403809373038090AF -:101E4000390390903A03A0903B03B0903C0320E00C -:101E500030E040E85FE3C501B4010E94DD2D6093EE -:101E6000390370933A0380933B0390933C03F7014B -:101E7000EE0FFF1FEE0FFF1FE35BFC4FA30192016C -:101E800060817181828193810E94452E20E030E043 -:101E900040E05EE30E94942F9B01AC01C501B401B8 -:101EA0000E94902F18168CF4C7010196BE010E9463 -:101EB00070319093740380937303109239031092DE -:101EC0003A0310923B0310923C03E0917303F091AC -:101ED0007403EE0FFF1FEE0FFF1FE35BFC4F6081EB -:101EE000718182819381D0C0C0906F03D0907003C4 -:101EF000E0907103F090720320E030E0A901C70187 -:101F0000B6010E94412E2197882309F4A2C0FE0148 -:101F1000EE0FFF1FEE0FFF1FE35BFC4F80809180F1 -:101F2000A280B380A5019401C701B6010E94412E91 -:101F300087FF31C0A501940160E070E08CED93EC67 -:101F40000E94452E20E030E040E451E40E94452EFE -:101F500020E030E040E05FE30E94942F9B01AC0161 -:101F600060E070E080E090E40E94F72F9B01AC01FC -:101F7000C501B4010E94942F9B01AC01C701B601B9 -:101F80000E94412E87FF07C0A701960160E070E024 -:101F90008CED93E439C0A5019401C701B6010E94FC -:101FA000902F18160CF055C0A501940160E070E068 -:101FB0008CED93E40E94452E20E030E040E451E4B3 -:101FC0000E94452E20E030E040E05FE30E94942F25 -:101FD0009B01AC0160E070E080E090E40E94F72F8C -:101FE0009B01AC01C501B4010E94942F9B01AC017F -:101FF000C701B6010E94902F18165CF5A701960143 -:1020000060E070E08CED93EC0E94452E20E030E023 -:1020100040E451E40E94452E20E030E040E05FE3E0 -:102020000E94942F9B01AC0160E070E080E090E49E -:102030000E94F72F9B01AC01C701B6010E94942FAB -:1020400060936F0370937003809371039093720396 -:1020500013C0FE01EE0FFF1FEE0FFF1FE35BFC4FEF -:1020600080819181A281B38180936F0390937003EB -:10207000A0937103B093720360916F03709170032A -:102080008091710390917203209124033091250374 -:102090002F3F4FEF340731F02F5F3F4F3093250331 -:1020A000209324030E94F8126B017C0120E034E2AB -:1020B00044EF51E40E94412E87FF08C086EFC82EEE -:1020C00088E2D82E84EFE82E81E4F82E20E030E07C -:1020D00040E051E4C701B6010E94942F9B01AC017E -:1020E00060E074E284E79BE40E94452E6B017C0172 -:1020F0000E94AD2E70939700609396002091740219 -:10210000309175024091760250917702C701B60175 -:102110000E94942F0E94AD2E7093990060939800B6 -:1021200080913803882309F433C1C0903303D090E1 -:102130003403E0903503F090360320E030E0A9014D -:10214000C701B6010E94902F1816D4F58091240380 -:10215000909125038F3F2FEF920729F001969093DE -:10216000250380932403C701B6010E94F81220E0E2 -:1021700030E040E051E40E94942F9B01AC0160E00C -:1021800074E284E79BE40E94452E6B017C010E946F -:10219000AD2E709397006093960020917402309159 -:1021A00075024091760250917702C701B6010E94F4 -:1021B000942F0E94AD2E709399006093980008C0F0 -:1021C0001092970010929600109299001092980029 -:1021D00060912D0370912E036F5F7F4F70932E03DC -:1021E00060932D03209196003091970080E090E05D -:1021F000232BF1F0C0919600D09197000E94DE2E23 -:102200006B017C01BE0180E090E00E94DE2E9B010C -:10221000AC0160912F037091300380913103909154 -:1022200032030E94452E20E03FEF4FE757E410C0F5 -:102230000E94DE2E6B017C0120E030EE4FEF54E473 -:1022400060912F037091300380913103909132039C -:102250000E94942F9B01AC01C701B6010E94902FF0 -:1022600087FD96C080912B038F5F80932B0390E0B6 -:102270002091FE033091FF0382179307A0F0809115 -:102280000904882319F010922B030DC0809171006E -:102290008D7F80937100809190008F778093900064 -:1022A000109238037DC080912C03C0912B038111C3 -:1022B00028C0C0900304D0900404E0900504F0907E -:1022C000060420E030E0A901C701B6010E94902F6A -:1022D0001816BCF481E080932C0310923303109203 -:1022E00034031092350310923603C0922F03D0921C -:1022F0003003E0923103F0923203C150C0932B03BC -:1023000043C010922C031092250310922403E091F5 -:102310000004F091010448E0C49FE00DF11D112478 -:1023200080819181A281B3818093330390933403A0 -:10233000A0933503B093360320E030E040E85EE33D -:1023400064817581868197810E94942F6B017C0145 -:1023500020E030E048EC52E460917802709179021C -:1023600080917A0290917B020E94452E9B01AC01E4 -:10237000C701B6010E94942F60932F03709330031E -:10238000809331039093320310922E0310922D0309 -:102390008091020480FD04C010923803109237032C -:1023A000FF91EF91DF91CF91BF91AF919F918F916D -:1023B0007F916F915F914F913F912F91FF90EF909F -:1023C000DF90CF90BF90AF909F908F907F906F9055 -:1023D0005F904F900F900FBE0F901F901895CF9267 -:1023E000DF92EF92FF92CF93DF936B017C01EA01C2 -:1023F00080912603811102C00E94EA0D809102049F -:1024000080FF46C0809175039091760308970CF089 -:102410003FC0809171008D7F80937100809138035F -:1024200081110E94040E81E08093370310922503EE -:102430001092240320E030E0A901C701B6010E94F8 -:10244000902F1816DCF48091750390917603FC01AF -:10245000EE0FFF1FEE0FFF1FE35BFC4FC082D18228 -:10246000E282F382FC01EE0FFF1FE35CFC4FD1839D -:10247000C0830196909376038093750380917100D9 -:1024800082608093710080919000806880939000BA -:10249000DF91CF91FF90EF90DF90CF9008958F92D2 -:1024A0009F92AF92BF92CF92DF92EF92FF920F93E3 -:1024B0001F93CF93DF93EC017B01D42E4801590188 -:1024C00080912603811102C00E94EA0D80910204CE -:1024D00080FF6BC0809171008D7F8093710080912F -:1024E000370381110E94040E81E080933803D0935A -:1024F0000104C0930004F092FF03E092FE03D09227 -:1025000009048092030490920404A0920504B092FE -:1025100006041092390310923A0310923B03109272 -:102520003C0310922B0388819981AA81BB818093FF -:10253000330390933403A0933503B093360320E024 -:1025400030E040E85EE36C817D818E819F810E9456 -:10255000942F6B017C0120E030E048EC52E4609164 -:1025600078027091790280917A0290917B020E94A8 -:10257000452E9B01AC01C701B6010E94942F6093C8 -:102580002F037093300380933103909332031092A2 -:102590002E0310922D038091710082608093710050 -:1025A00080919000806880939000DF91CF911F917F -:1025B0000F91FF90EF90DF90CF90BF90AF909F90E2 -:1025C0008F9008958091770390E0019665E070E028 -:1025D0000E9470318093770308958091770390E093 -:1025E000019765E070E00E94703180937703089551 -:1025F0008F929F92AF92BF92CF92DF92EF92FF9213 -:10260000CF93DF936B017C01C0912403D09125030C -:10261000BE0180E090E00E94DE2E4B015C01A7012C -:10262000960160E070E08CE594E40E94452E9B01E9 -:10263000AC01C501B4010E94942F0E94B22E4091BA -:102640007703423009F45CC028F4442351F0413050 -:10265000E9F0FBC0433009F481C0443009F4B4C050 -:10266000F4C080E090E0A0E0BFE380937402909318 -:102670007502A0937602B09377021092270310920E -:1026800028031092290310922A03DFC01092270317 -:10269000109228031092290310922A0364317105C5 -:1026A00040F46A307105E0F520E030E040E85EE398 -:1026B0003BC0693C710508F0C0C080E090E00E941A -:1026C000DE2E20E030E040EA51E40E94DC2D20E0E4 -:1026D00030E044E353E40E94452E9B01AC010E948C -:1026E000942F20E030E040E05EE30E94942F9B01B5 -:1026F000AC0160E070E080E09EE30E94DC2D5BC0F6 -:1027000010922703109228031092290310922A0393 -:102710006432710578F4FB01EC59FF4F0C9484315D -:1027200020E030E040E05FE3C701B6010E94942F53 -:102730006B017C0180E090E0A0E0BEE38093740236 -:1027400090937502A0937602B09377027EC0A701A2 -:102750009601C701B6010E94DD2DEACF1092270332 -:10276000109228031092290310922A032AE0269F30 -:10277000A001279F500D1124CA0168EB7BE00E9445 -:102780005C31BC016C5D754077FF03C0719561954C -:102790007109882777FD8095982F0E94E02E2EE3FF -:1027A00033EC4EE259E30E94942F20E030E040ECFD -:1027B0005EE30E94DD2D6093740270937502809336 -:1027C00076029093770241C010922703109228035B -:1027D0001092290310922A03CE0183709927892B26 -:1027E000E1F0BE016170772780E090E00E94DE2E6C -:1027F00020E030E040E05EE30E94942F20E030E0F3 -:1028000040E45FE30E94DD2D6093740270937502D3 -:1028100080937602909377020CC080E090E0A0E075 -:10282000BFE38093740290937502A0937602B093F5 -:102830007702C770DD27CD2B41F4109274021092FD -:1028400075021092760210927702C701B601DF91ED -:10285000CF91FF90EF90DF90CF90BF90AF909F907F -:102860008F900895809188030895CF93DF9300D0CF -:102870001F92CDB7DEB79C0180910E04843019F50C -:1028800093E099833B832A839093E9008FEF9091A3 -:10289000E800815095FD06C095ED9A95F1F700008E -:1028A0008111F5CF8091E80085FF0DC040E050E038 -:1028B00063E070E0CE0101960E9496168091E800D8 -:1028C0008E778093E8000F900F900F90DF91CF915B -:1028D0000895CF93DF9300D01F92CDB7DEB720913C -:1028E0000E04243021F522E029839B838A8383E030 -:1028F0008093E9008FEF9091E800815095FD06C02C -:1029000095ED9A95F1F700008111F5CF8091E800DF -:1029100085FF0DC040E050E063E070E0CE0101961D -:102920000E9496168091E8008E778093E8000F90C1 -:102930000F900F90DF91CF91089520910E042430D5 -:10294000F1F422E02093E9002FEF3091E8002150CC -:1029500035FD06C035ED3A95F1F700002111F5CFB0 -:102960002091E80025FF0BC040E050E065E070E0FA -:102970000E9496168091E8008E778093E800089573 -:10298000CF93DF93EC0190910E04943009F046C090 -:10299000809186028823D9F0809187028823B9F03C -:1029A0009093E9008FEF9091E800815095FD06C06B -:1029B00095E19A95F1F700008111F5CF8091E8003B -:1029C00085FF2CC040E050E060E170E017C081E07E -:1029D0008093E9008FEF9091E800815095FD06C04B -:1029E00095ED9A95F1F700008111F5CF8091E800FF -:1029F00085FF14C040E050E068E070E0CE010E9426 -:102A000096168091E8008E778093E80080E1FE01C1 -:102A1000A8E7B3E001900D928A95E1F7DF91CF919D -:102A2000089580910D04811109C00E942B180E9405 -:102A300088188091E20084608093E20008951092EB -:102A40000D040895089508950C94D02742E061EC98 -:102A500081E00E94A51742E061EC82E00E94A51788 -:102A600042E061EC83E00E94A51742E161EC84E062 -:102A70000C94A51780911004833009F455C030F4EC -:102A8000813071F0823009F48EC008958A3009F4E3 -:102A90007AC08B3009F460C0893009F09CC020C036 -:102AA00080910F04813A09F096C08091E800877FF9 -:102AB0008093E8008091130490911404892B21F4F1 -:102AC00060E188E793E003C060E080E090E070E0C0 -:102AD0000E94E1168091E8008B778093E8000895CA -:102AE00080910F04813209F076C080911304909197 -:102AF0001404009719F0039709F06DC08091E80065 -:102B0000877F8093E8008091E80082FD05C0809176 -:102B10000E048111F8CF5FC08091F100809388038B -:102B20008091E8008B7753C080910F04813A09F0BF -:102B300052C08091130490911404892B09F04BC06A -:102B40008091E800877F8093E8008091E80080FF13 -:102B5000FCCF8091860236C080910F048132D9F576 -:102B60008091130490911404892BA9F58091E800B9 -:102B7000877F8093E8000E94DA1780911104809388 -:102B800086020C944B2180910F04813221F58091B3 -:102B9000E800877F8093E8000E94DA178091120492 -:102BA00080938903089580910F04813AA1F4809164 -:102BB000E800877F8093E8008091E80080FFFCCFE9 -:102BC000809189038093F1008091E8008E77809353 -:102BD000E8000C94DA17089584B7877F84BF88E1F2 -:102BE0000FB6F89480936000109260000FBE90E0E2 -:102BF00080E80FB6F89480936100909361000FBE57 -:102C00000E947D1B0E942B180E9488188091E20070 -:102C100084608093E20078940E940E1B0E947F1BC8 -:102C20008CE792E00E94291B80910E04853069F4A4 -:102C30000E948A2780910C048823B1F30E94B82750 -:102C4000882391F30E948016EFCF0E94871BECCF60 -:102C5000292F332723303105C9F064F421303105A1 -:102C600081F02230310509F043C08DE690E022E882 -:102C700038E042C021323105F1F02232310541F114 -:102C800037C082E190E02FEE38E036C099278130DE -:102C9000910541F08230910541F0892B49F5EEE72D -:102CA000F8E005C0E0E5F8E002C0E6E2F8E0849173 -:102CB00090E09F0121C06430D8F4E62FF0E0EE0FE1 -:102CC000FF1FEE5FFC4F2081318189E090E014C04E -:102CD000643070F470E0FB01EE0FFF1FE650FD4F13 -:102CE00020813181FB01EA50FD4F808190E004C0DA -:102CF00080E090E020E030E0FA0131832083089505 -:102D000080E189BD82E189BD09B400FEFDCF8091DB -:102D1000D8008F7D8093D8008091E00082608093FE -:102D2000E0008091E00081FDFCCF0895CF92DF921A -:102D3000EF92FF920F931F93CF93DF93EC018B01E0 -:102D40006A010E94F917811133C0C114D10439F00E -:102D5000F60180819181081B190BC80FD91FE12C46 -:102D6000F12C0115110519F18091E80085FD16C0BF -:102D70008091E8008E778093E800C114D10449F077 -:102D8000F60180819181E80EF91EF182E08285E0F2 -:102D90000FC00E94F917882321F30AC089918093FC -:102DA000F10001501109FFEFEF1AFF0ADACF80E0BE -:102DB000DF91CF911F910F91FF90EF90DF90CF9017 -:102DC000089520911504309116042617370748F00E -:102DD0006115710539F42091E8002E772093E80001 -:102DE00001C0B90140E061157105A9F120910E04FF -:102DF000222309F443C0253009F442C02091E800A1 -:102E000023FD40C02091E80022FD32C02091E8005F -:102E100020FFE9CF4091F3002091F20030E0342B05 -:102E2000FC01CF016115710559F02830310540F4DE -:102E300081918093F100615071092F5F3F4FF1CF75 -:102E400041E02830310509F040E02091E8002E777C -:102E50002093E800C8CF4111C9CF0AC080910E0469 -:102E6000882361F0853061F08091E80083FD0AC01D -:102E70008091E80082FFF2CF80E0089582E008951B -:102E800083E0089581E0089520911504309116049F -:102E90002617370748F06115710539F42091E800CD -:102EA0002E772093E80001C0B901FC0120E06115F4 -:102EB000710591F180910E04882309F440C085309A -:102EC00009F43FC08091E80083FD3DC08091E80097 -:102ED00082FD2FC08091E80080FFE9CF2091F300B0 -:102EE0008091F20090E0922B6115710559F08830C5 -:102EF000910540F424912093F100319661507109BD -:102F00000196F2CF21E0089709F020E08091E800D7 -:102F10008E778093E800CBCF2111CCCF0AC080916F -:102F20000E04882361F0853061F08091E80083FD14 -:102F30000AC08091E80082FFF2CF80E0089582E02D -:102F4000089583E0089581E00895982F973058F50B -:102F50009093E900981739F07091EC002091ED0002 -:102F60005091F00003C0242F762F50E021FF19C0AC -:102F70003091EB003E7F3093EB003091ED003D7FD0 -:102F80003093ED003091EB0031603093EB007093A3 -:102F9000EC002093ED005093F0002091EE0027FF0D -:102FA00007C09F5FD3CF8F708093E90081E00895C1 -:102FB00080E0089580910F0487FF11C08091E800A0 -:102FC00082FD05C080910E048111F8CF11C080915F -:102FD000E8008B770BC080910E04882349F0809124 -:102FE000E80080FFF8CF8091E8008E778093E800BA -:102FF00008952091E4003091E50095E64091EC00C1 -:10300000842F817040FF22C08091E80080FD1CC0A9 -:1030100080910E04882391F0853091F08091EB002F -:1030200085FD10C04091E4005091E5004217530720 -:1030300029F39A01915011F784E0089582E00895F0 -:1030400083E0089581E0089580E008954091E800CC -:1030500042FFDECF08950E9499180E94A118E0EE69 -:10306000F0E0808181608083E8EDF0E080818F77FF -:10307000808319BCA7EDB0E08C918E7F8C9380810A -:103080008F7E808310920D0408950F931F93CF932A -:10309000DF930E9499180E94A118C8EDD0E08881A2 -:1030A0008F77888388818068888388818F7D8883F3 -:1030B00019BC10920E0410920A0410920C04109283 -:1030C0000B0400EE10E0F80180818B7F8083888103 -:1030D0008160888342E060E080E00E94A517E1EE15 -:1030E000F0E080818E7F8083E2EEF0E0808181607D -:1030F0008083808188608083F80180818E7F8083D7 -:10310000888180618883DF91CF911F910F9108950D -:10311000E8EDF0E080818F7E8083E7EDF0E0808154 -:103120008160808384E082BF81E080930D040C94F1 -:103130004518E8EDF0E080818E7F80831092E200F8 -:1031400008951092DA001092E10008951F920F92F4 -:103150000FB60F9211242F933F934F935F936F936A -:103160007F938F939F93AF93BF93EF93FF93809140 -:10317000E10082FF0BC08091E20082FF07C08091D6 -:10318000E1008B7F8093E1000E940D1B8091DA00AB -:1031900080FF1FC08091D80080FF1BC08091DA00A3 -:1031A0008E7F8093DA008091D90080FF0DC080E18E -:1031B00089BD82E189BD09B400FEFDCF81E0809325 -:1031C0000E040E94111505C019BC10920E040E9435 -:1031D0001F158091E10080FF19C08091E20080FFFF -:1031E00015C08091E2008E7F8093E2008091E20022 -:1031F00080618093E2008091D80080628093D80043 -:1032000019BC85E080930E040E9423158091E10093 -:1032100084FF30C08091E20084FF2CC080E189BD32 -:1032200082E189BD09B400FEFDCF8091D8008F7D79 -:103230008093D8008091E1008F7E8093E10080919F -:10324000E2008F7E8093E2008091E20081608093B3 -:10325000E20080910A04882311F084E007C0809185 -:10326000E30087FD02C081E001C083E080930E048B -:103270000E9424158091E10083FF29C08091E20023 -:1032800083FF25C08091E100877F8093E10082E089 -:1032900080930E0410920A048091E1008E7F809347 -:1032A000E1008091E2008E7F8093E2008091E20055 -:1032B00080618093E20042E060E080E00E94A51718 -:1032C0008091F00088608093F0000E942215FF91A9 -:1032D000EF91BF91AF919F918F917F916F915F918E -:1032E0004F913F912F910F900FBE0F901F90189507 -:1032F0001F920F920FB60F9211242F933F934F936B -:103300005F936F937F938F939F93AF93BF93CF936D -:10331000DF93EF93FF93C091E900CF708091EC00B1 -:10332000D82FD17080FDD0E81092E9008091F00094 -:10333000877F8093F00078940E94BC191092E90076 -:103340008091F00088608093F000CD2BCF70C09307 -:10335000E900FF91EF91DF91CF91BF91AF919F91E4 -:103360008F917F916F915F914F913F912F910F902E -:103370000FBE0F901F9018951F93CF93DF93CDB77B -:10338000DEB7AA970FB6F894DEBF0FBECDBFEFE051 -:10339000F4E088E08E0F9091F10091938E13FBCFB3 -:1033A0000E943A158091E80083FF1FC180910F04AD -:1033B00090911004492F50E04A30510508F015C192 -:1033C000FA01E857FF4F0C948431803881F082383D -:1033D00009F00BC1809113048F708093E9008091F4 -:1033E000EB0085FB882780F91092E90006C08091E8 -:1033F0000B0490910C04911182609091E800977FEA -:103400009093E8008093F1001092F100C8C0282F3B -:103410002D7F09F0EAC0882319F0823061F0E5C001 -:1034200080911104813009F0E0C0933009F080E010 -:1034300080930C042BC080911104811127C08091CE -:1034400013048F7009F4D1C08093E9002091EB0040 -:1034500020FF1CC0933021F48091EB00806214C0E7 -:103460009091EB0090619093EB0021E030E0A90196 -:1034700002C0440F551F8A95E2F74093EA0010926C -:10348000EA008091EB0088608093EB001092E900E5 -:103490008091E800877F86C08111A7C01091110438 -:1034A0001F778091E3008078812B8093E3008091E7 -:1034B000E800877F8093E8000E94DA178091E80097 -:1034C00080FFFCCF8091E30080688093E3001111BE -:1034D00002C082E001C083E080930E0486C0805861 -:1034E000823008F082C080911104909112048C3DCA -:1034F00053E0950779F583E08A838AE289834FB7A1 -:10350000F894DE01139620E03EE051E2E32FF0E074 -:1035100050935700E49120FF03C0E295EF703F5FA6 -:10352000EF708E2F90E0EA3010F0C79601C0C09681 -:103530008D939D932F5F243149F74FBF8091E80011 -:10354000877F8093E8006AE270E0CE0101960E94D6 -:10355000E11614C0AE014F5F5F4F609113040E94EB -:103560002816BC01009709F440C09091E800977FAD -:103570009093E80089819A810E9444178091E80025 -:103580008B778093E80031C0803879F58091E8002E -:10359000877F8093E80080910A048093F1008091F6 -:1035A000E8008E778093E8000E94DA171EC0811130 -:1035B0001CC0909111049230C0F48091E800877F84 -:1035C0008093E80090930A040E94DA1780910A041D -:1035D000811106C08091E30087FD02C081E001C037 -:1035E00084E080930E040E9426158091E80083FFFA -:1035F0000AC08091E800877F8093E8008091EB000B -:1036000080628093EB00AA960FB6F894DEBF0FBEDF -:10361000CDBFDF91CF911F9108950895CF938091F1 -:103620000E048823A1F0C091E900CF709091EC00C6 -:10363000892F817090FD80E8C82B1092E90080915D -:10364000E80083FD0E94BC19CF70C093E900CF91C0 -:10365000089590938F0380938E030895E0918E03D5 -:10366000F0918F03309721F00190F081E02D0994C3 -:1036700080E00895E0918E03F0918F03309721F060 -:103680000280F381E02D09940895E0918E03F0917A -:103690008F03309721F00480F581E02D099408957F -:1036A00020918C0330918D038217930771F09093D2 -:1036B0008D0380938C03E0918E03F0918F033097FC -:1036C00021F00680F781E02D0994089520918A0366 -:1036D00030918B038217930771F090938B03809343 -:1036E0008A03E0918E03F0918F03309721F00084DC -:1036F000F185E02D0994089508950C947C1B0E9497 -:1037000004280E949A0B0E948A280C94452D4F92FF -:103710005F927F928F929F92AF92BF92CF92DF92F1 -:10372000EF92FF920F931F93CF93DF93CDB7DEB746 -:103730002A970FB6F894DEBF0FBECDBF0E94890C4A -:1037400091E9C92E93E0D92E00E010E0AA24A394B9 -:10375000B12C702E802F0E94D20D4C01F6014190A9 -:1037600051906F014826592641145104B1F40F5F5E -:103770001F4F0430110569F78FEF89838A831B82FD -:103780000E940D288160782F9D838C8349815A8106 -:103790006B818D810E94401C3AC08091ED0381FDB8 -:1037A0000E94DB0D20E030E07501022E02C0EE0C1D -:1037B000FF1C0A94E2F7C70184219521892B09F1A6 -:1037C0002E837F828E209F2091E0892809F490E04B -:1037D00098870E940D288160782F9A8789874E816B -:1037E0005F8168858A850E94401C000F111FF801C7 -:1037F000EF56FC4F80819181E826F926F182E08224 -:1038000006C02F5F3F4F2C30310571F6B0CF0E94BC -:10381000762A109190030E942E1B1817D9F00E944F -:103820002E1B809390032A960FB6F894DEBF0FBE2E -:10383000CDBFDF91CF911F910F91FF90EF90DF905F -:10384000CF90BF90AF909F908F907F905F904F9060 -:103850000C94D20A2A960FB6F894DEBF0FBECDBFE5 -:10386000DF91CF911F910F91FF90EF90DF90CF905C -:10387000BF90AF909F908F907F905F904F900895F2 -:10388000CF93DF93CDB7DEB72B970FB6F894DEBF9B -:103890000FBECDBF4F83588769877A878B87DE013C -:1038A000119686E0FD0111928A95E9F785E0FE0107 -:1038B000379601900D928A95E1F749815A816B8183 -:1038C0007C818D819E810E94E5232B960FB6F89412 -:1038D000DEBF0FBECDBFDF91CF910895CF93882378 -:1038E00009F4C2C0C82F823859F40E942E1B81FDF2 -:1038F000BBC089E30E948E260E945B2789E30CC02F -:10390000833879F40E942E1B80FDAEC083E50E94AF -:103910008E260E945B2783E50E94D026CF910C94CF -:103920005B27843859F40E942E1B82FD9DC087E4DA -:103930000E948E260E945B2787E4EECF8CEF8C0FCF -:10394000813A48F48C2F0E94AD2C81118DC08C2FB0 -:103950000E948E26E3CF80E28C0F883048F4C77037 -:1039600081E001C0880FCA95EAF70E941427D6CFDC -:103970008BE58C0F833078F4C53A29F0C63A31F0E4 -:1039800083E890E005C081E890E002C082E890E022 -:10399000CF910C94501B88E58C0F833108F064C0E4 -:1039A000C83A39F1C93A41F1CA3A49F1CB3A51F131 -:1039B000CC3A59F1CD3A61F1C03B69F1CE3A71F19F -:1039C000CF3A79F1C13B81F1C23B89F1C33B91F11F -:1039D000C43B99F1C53BA1F1C63BA9F1C73BB1F18D -:1039E000C83BB9F1C93BC1F1CA3BC9F180E090E0E5 -:1039F00038C082EE90E035C089EE90E032C08AEEA9 -:103A000090E02FC085EB90E02CC086EB90E029C0C1 -:103A100087EB90E026C08CEC90E023C08DEC90E02A -:103A200020C083E891E01DC08AE891E01AC082E9D5 -:103A300091E017C084E991E014C081E292E011C0E6 -:103A400083E292E00EC084E292E00BC085E292E055 -:103A500008C086E292E005C087E292E002C08AE2F6 -:103A600092E0CF910C94661BCF910895882309F4BE -:103A70004BC0823859F40E942E1B81FF45C089E358 -:103A80000E948E260E945B2789E30CC0833871F464 -:103A90000E942E1B80FF38C083E50E948E260E9464 -:103AA0005B2783E50E94D0260C945B27843859F469 -:103AB0000E942E1B82FF28C087E40E948E260E944F -:103AC0005B2787E4EFCF9CEF980F913A58F390E291 -:103AD000980F983050F4877091E001C0990F8A9543 -:103AE000EAF7892F0E941A27DFCF9BE5980F9330C2 -:103AF00020F480E090E00C94501B885A833120F42D -:103B000080E090E00C94661B0895882321F00E94C9 -:103B100014270C945B270895882321F00E941A270C -:103B20000C945B270895BF92CF92DF92EF92FF92A1 -:103B30000F931F93CF93DF9300D000D000D0CDB769 -:103B4000DEB725E0FC01DE01119601900D922A9569 -:103B5000E1F7FC01D08011810281258122952F702F -:103B600043815481452B09F472C31F3F21F4FFEFB9 -:103B7000DF1609F46CC37C012E830E949B07D98257 -:103B80001A8369817A81802F0E948A26182FB92E84 -:103B90000E943F260E9406252E81002319F00E94D4 -:103BA00031272E81EB2DE295EF70F0E0EE56FF4FBE -:103BB0000C9484318B2D807F9B2D9F70F92E882350 -:103BC00019F0F29480EFF822002389F0FF2009F425 -:103BD0007CC280E2810F883020F48F2D0E94142750 -:103BE00003C08F2D0E9424270E945B276EC2812F65 -:103BF0000E94361DFF2009F42AC3105E8F2D183055 -:103C000018F40E941A2702C00E942A2726960FB68F -:103C1000F894DEBF0FBECDBFDF91CF911F910F9102 -:103C2000FF90EF90DF90CF90BF900C945B278B2D8F -:103C3000807F9B2D9F70803211F4892F03C0892FC4 -:103C40008295807F112319F0113011F12BC00023D0 -:103C5000A9F0222389F1213079F526960FB6F89440 -:103C6000DEBF0FBECDBFDF91CF911F910F91FF90AF -:103C7000EF90DF90CF90BF900C944427222319F04F -:103C8000213009F4E4C28E830E9447278E819BC1B4 -:103C9000002321F0263008F0DAC20EC0253008F0EB -:103CA000D6C291C10023C9F0222331F0F7019581DA -:103CB00090FF0BC29F70958326960FB6F894DEBFD7 -:103CC0000FBECDBFDF91CF911F910F91FF90EF906D -:103CD000DF90CF90BF900C94851D222309F473C10F -:103CE00009C22B2D26952695237030E0211531052C -:103CF00021F021303105D1F0AAC2002321F0812F1B -:103D00009B2D937002C080E090E026960FB6F89449 -:103D1000DEBF0FBECDBFDF91CF911F910F91FF90FE -:103D2000EF90DF90CF90BF900C94501B002321F0B8 -:103D3000812F9B2D937002C080E090E026960FB6F5 -:103D4000F894DEBF0FBECDBFDF91CF911F910F91D1 -:103D5000FF90EF90DF90CF90BF900C94661B812F67 -:103D6000002319F00E947E2902C00E94E6292696AF -:103D70000FB6F894DEBF0FBECDBFDF91CF911F917C -:103D80000F91FF90EF90DF90CF90BF900C946B2A33 -:103D90008B2D837009F07BC0011159C2812F829550 -:103DA00086958770880F880F912F9F70C92ED12C10 -:103DB000E12CF12C082E04C0CC0CDD1CEE1CFF1CE9 -:103DC0000A94D2F714FF12C04FE050E060E070E0B8 -:103DD00004C0440F551F661F771F8A95D2F7CB0189 -:103DE000BA01609570958095909503C060E070E091 -:103DF000CB012B2D269526952370422F50E0423083 -:103E00005105D9F04330510569F16C297D298E297E -:103E10009F294130510551F126960FB6F894DEBF27 -:103E20000FBECDBFDF91CF911F910F91FF90EF900B -:103E3000DF90CF90BF900C942D256C297D298E2981 -:103E40009F2926960FB6F894DEBF0FBECDBFDF9137 -:103E5000CF911F910F91FF90EF90DF90CF90BF9087 -:103E60000C9449250E942D25C701B60126960FB650 -:103E7000F894DEBF0FBECDBFDF91CF911F910F91A0 -:103E8000FF90EF90DF90CF90BF900C94112500230E -:103E900019F08B2D817001C08695882309F4D7C154 -:103EA000812F829586958770880F880F912F9F703C -:103EB000C92ED12CE12CF12C082E04C0CC0CDD1C19 -:103EC000EE1CFF1C0A94D2F714FF12C04FE050E022 -:103ED00060E070E004C0440F551F661F771F8A958D -:103EE000D2F7CB01BA01609570958095909503C08B -:103EF00060E070E0CB012B2D269526952370422F94 -:103F000050E042305105D9F04330510569F16C2938 -:103F10007D298E299F294130510551F126960FB6F2 -:103F2000F894DEBF0FBECDBFDF91CF911F910F91EF -:103F3000FF90EF90DF90CF90BF900C9407266C29F4 -:103F40007D298E299F2926960FB6F894DEBF0FBED5 -:103F5000CDBFDF91CF911F910F91FF90EF90DF9038 -:103F6000CF90BF900C9423260E940726C701B6016C -:103F700026960FB6F894DEBF0FBECDBFDF91CF916E -:103F80001F910F91FF90EF90DF90CF90BF900C9416 -:103F9000EB25103F49F118F4103E48F491C0123F50 -:103FA00009F453C0E8F1133F09F464C089C01F70DD -:103FB0008B2D8F71002321F00E948425812F7CCED0 -:103FC0000E94A525812F26960FB6F894DEBF0FBE5E -:103FD000CDBFDF91CF911F910F91FF90EF90DF90B8 -:103FE000CF90BF900C948C1D0023B1F0253008F0C9 -:103FF0002EC18B2D8F7126960FB6F894DEBF0FBEA3 -:10400000CDBFDF91CF911F910F91FF90EF90DF9087 -:10401000CF90BF900C94CA25263008F018C1E9CF84 -:104020000023A9F08B2D8F7126960FB6F894DEBF72 -:104030000FBECDBFDF91CF911F910F91FF90EF90F9 -:10404000DF90CF90BF900C948425002359F38B2DE3 -:104050008F7126960FB6F894DEBF0FBECDBFDF91ED -:10406000CF911F910F91FF90EF90DF90CF90BF9075 -:104070000C94A525002399F08B2D8F7126960FB6F1 -:10408000F894DEBF0FBECDBFDF91CF911F910F918E -:10409000FF90EF90DF90CF90BF900C946F25269605 +:100770000000000000000000000000000000010078 +:100780000050010001000100010001000100010012 +:10079000010001004C00010001000100073006309B +:1007A000135012500030013002300C3001000100B3 +:1007B0000B300A300930083001000100010001004F +:1007C0000100010001000100010001000100010021 +:1007D00001000100010001000100010001002803E7 +:1007E000540068006500200050006C0061006E003D +:1007F00063006B0020004B006500790062006F0011 +:1008000061007200640000002C034F00720074004D +:1008100068006F006C0069006E0065006100720086 +:1008200020004B006500790062006F0061007200DB +:100830006400730000000403090409026D00040150 +:1008400000A0FA09040000010301010009211101BF +:100850000001223F000705810308000A0904010086 +:100860000103010200092111010001224D000705C9 +:10087000820308000A0904020001030000000921A4 +:10088000110100012236000705830308000A09044C +:1008900003000103000000092111010001223900B9 +:1008A000070584031000011201100100000008ED8B +:1008B000FE606001000102000105010906A10105B9 +:1008C0000719E029E7150025019508750181020542 +:1008D0000819012905950575019102950175039186 +:1008E0000105071900297715002501957875018103 +:1008F00002C005010980A101850216010026B7008A +:100900001A01002AB700751095018100C0050C0975 +:1009100001A1018503160100269C021A01002A9CF0 +:1009200002751095018100C005010902A1010901AC +:10093000A100050919012905150025019505750175 +:100940008102950175038101050109300931158185 +:10095000257F95027508810609381581257F950147 +:1009600075088106050C0A38021581257F950175E9 +:10097000088106C0C005010906A101050719E02983 +:10098000E71500250195087501810295017508811B +:100990000105081901290595057501910295017553 +:1009A0000391010507190029FF150025FF9506751C +:1009B000088100C011241FBECFEFDAE0DEBFCDBF3B +:1009C00004B603FE24C08091690490916A04A0914A +:1009D0006B04B0916C048730904BA740B04BB9F4D6 +:1009E0001092690410926A0410926B0410926C04C5 +:1009F00014BE84B7877F84BF88E10FB6F8948093D4 +:100A00006000109260000FBEE0E0F8E3099513E08B +:100A1000A0E0B1E0E2E4F4E602C005900D92A23657 +:100A2000B107D9F714E0A2E6B3E001C01D92A936E0 +:100A3000B107E1F70E94FD150C941F320C940000E1 +:100A4000279A2F988FEF9FEF9093870080938600CF +:100A50008AE08093800089E1809381000C94562D78 +:100A6000282F81110BC080918000877F80938000A8 +:100A700010928D0010928C002F9808952F988091DD +:100A80008000886080938000233019F48FEF9FEFFF +:100A90000FC083E090E0821B9109880F991F2FEF10 +:100AA0003FEFA90102C0569547958A95E2F7CA0122 +:100AB00090938D0080938C000895CF93DF93EC0189 +:100AC0000E94ED28BE0180E090E0DF91CF910C9470 +:100AD00018250F931F93462F50E04E30510508F014 +:100AE000DEC0DC01FA01EA5AFF4F12968C910C9499 +:100AF000E331882309F4D3C000E010E0980140E01E +:100B000064E070E089E292E00E942B1281E090E0C4 +:100B10000FC0882309F4C3C000E010E0980140E052 +:100B200066E070E089EB91E00E942B1282E090E099 +:100B30000E945D05B4C0882309F4B1C000E010E054 +:100B4000980140E068E070E089EE91E00E942B128D +:100B500084E090E0EDCF882311F083E005C083E0CE +:100B60000CC0882349F084E00E94952540E164E0B0 +:100B700083E00E946D0A93C084E00E94B625F6CF00 +:100B8000882331F085EE0E947F1C0E94AD2D87C026 +:100B900085EE0E94471D83C0882309F480C00E940F +:100BA000BF0D7DC0882309F47AC00E94B80D00E013 +:100BB00010E0980140E065E070E089E492E027C031 +:100BC000882309F46CC085E00E94B6250E94E00DE0 +:100BD00066C0882309F463C000E010E0980140E09B +:100BE00068E070E089E191E00E942B1285E00E94AC +:100BF000952555C0882309F452C00E94BE1200E01A +:100C000010E0980140E068E070E089E191E00E9426 +:100C10002B1245C0882309F442C00E94C912EFCFAD +:100C20008823E9F100E010E0980140E066E070E020 +:100C300089E891E00E942B1284E00E94B62583E0AF +:100C40000E94B62580E10E94B62585E00E94B62567 +:100C50000E94E00D86E00E9495250E94DA2881110D +:100C600002C00E94B6280E94F22890E09093680487 +:100C7000809367048068809367040E94F6280FC001 +:100C8000882369F000E010E0980140E066E070E041 +:100C900089E591E00E942B1286E00E94B62580E053 +:100CA00090E01F910F9108950F931F932FEF89EFFD +:100CB00090E0215080409040E1F700C0000000E04B +:100CC00010E0980140E065E070E089E492E00E9465 +:100CD0002B121F910F9108950F931F9300E010E0C6 +:100CE000980140E063E070E081E091E00E942B1207 +:100CF0002FEF82E597E0215080409040E1F700C05F +:100D000000001F910F910895CF92DF92EF92FF9212 +:100D10000F931F93CF93DF93CDB7DEB7CC58D10994 +:100D20000FB6F894DEBF0FBECDBF2091210425FF82 +:100D3000C5C08C01FC01928180910001992309F4C6 +:100D400060C096E4EEE8F2E0DE01A95BBF4F0190DF +:100D50000D929A95E1F7F8019081E0916203F0918C +:100D60006303E90FF11DEE0FFF1F27E430E02C0FA6 +:100D70003D1FE20FF31F60817181680F711D88278D +:100D800077FD8095982F0E94F12E20E030E040E41E +:100D900051E40E94562E6B017C01F801218184E010 +:100DA00090E0821B9109BC01882777FD8095982FE0 +:100DB0000E94F12E9B01AC01C701B6010E94EE2DED +:100DC0009B01AC0160E070E080E090E40E94643040 +:100DD00020E030E04CE551E40E9401304FE050E06B +:100DE000C457DF4F0FB6F894DEBF0FBECDBFDF9103 +:100DF000CF911F910F91FF90EF90DF90CF900C94C7 +:100E0000CB1196E4EEE8F2E0DE01119601900D922E +:100E10009A95E1F7F8019081E0916203F091630304 +:100E2000E90FF11DEE0FFF1F21E030E02C0F3D1FF9 +:100E3000E20FF31F60817181680F711D882777FDB4 +:100E40008095982F0E94F12E20E030E040E451E49C +:100E50000E94562E6B017C01F801218184E090E014 +:100E6000821B9109BC01882777FD8095982F0E94ED +:100E7000F12E9B01AC01C701B6010E94EE2D9B0132 +:100E8000AC0160E070E080E090E40E94643020E01B +:100E900030E04CE551E40E940130C457DF4F0FB6FB +:100EA000F894DEBF0FBECDBFDF91CF911F910F91A0 +:100EB000FF90EF90DF90CF900C94130EC457DF4F4C +:100EC0000FB6F894DEBF0FBECDBFDF91CF911F915B +:100ED0000F91FF90EF90DF90CF90089508950E94BA +:100EE00020056E9A769A0C9454060C946E070C9416 +:100EF00084060895880F991FFC01E250F040859107 +:100F000094910895880F991FFC01E258FE4F859136 +:100F1000949108950F931F93CF93DF93EC01811564 +:100F200020E49207A0F5C11580E3D80708F0E1C0DE +:100F3000C83ED105D8F4C03ED10508F0EEC1C83A8C +:100F4000D10578F4C53AD10508F074C0C130D10597 +:100F500009F46DC008F4DEC1C430D10508F0DDC16C +:100F6000D9C1CB3BD10508F470C0D4C1C11590E202 +:100F7000D90708F0B9C0C11521E0D20708F0CDC1EA +:100F8000C03FD10508F4C6C18E01106506C2C1304C +:100F900080E5D80709F4BDC068F5C13120E4D20767 +:100FA00009F4AEC050F4C03190E4D90708F0A5C0F0 +:100FB000CF70DD278E01146DF0C1C33120E4D2075C +:100FC00009F4A4C008F49FC0C115D04509F0A2C11E +:100FD0000E945C210E94E00D0E946C069FEF24E3BA +:100FE0008CE0915020408040E1F700C000000E945A +:100FF0007928D3C1C11520E6D20730F4C11581E5A7 +:10100000D80708F48CC02DC1C11590E7D90708F4A2 +:1010100081C1C11520E8D20708F478C1C11580E963 +:10102000D80708F077C1DF708E01106AB6C101E001 +:1010300010E0B3C1C53AD10509F471C1C63AD10572 +:1010400009F070C102E810E4A8C1C83AD10509F45A +:101050006CC1C93AD10509F46BC1CA3AD10509F48A +:101060006AC1CB3AD10509F469C1CC3AD10509F47A +:1010700068C1CD3AD10509F467C1C03BD10509F477 +:1010800066C1CE3AD10509F465C1CF3AD10509F45C +:1010900064C1C13BD10509F463C1C23BD10509F468 +:1010A00062C1C33BD10509F461C1C43BD10509F458 +:1010B00060C1C53BD10509F45FC1C63BD10509F448 +:1010C0005EC1C73BD10509F45DC1C83BD10509F438 +:1010D0005CC1C93BD10509F45BC1CA3BD10509F428 +:1010E0005AC100E014E459C1CE019F700E948207EA +:1010F00055C1DD278E01106C50C100E011ED4DC1CE +:1011000000E010ED4AC100E012ED47C100E013ED30 +:1011100044C180913D04816080933D043EC10E94A2 +:10112000DA28811102C00E94B6280E94F22890E0BD +:101130009093680480936704C23090E5D90721F446 +:1011400080916704816086C0C43020E5D20721F415 +:101150008091670482607EC0C63080E5D80721F4A4 +:1011600080916704846076C0C83090E5D90719F48F +:101170008091670427C0CA3020E5D20721F480910E +:101180006704806167C0CC3080E5D80721F4809186 +:10119000670480625FC0CE3090E5D90721F480916A +:1011A0006704806457C0C03120E5D20721F48091E4 +:1011B000670480684FC0C23180E5D80729F4809168 +:1011C00067048460886046C0C33090E5D90721F485 +:1011D000809167048E7F3EC0C53020E5D20721F4A0 +:1011E000809167048D7F36C0C73080E5D80721F431 +:1011F000809167048B7F2EC0C93090E5D90719F420 +:101200008091670426C0CB3020E5D20721F480917D +:1012100067048F7E1FC0CD3080E5D80721F4809110 +:1012200067048F7D17C0CF3090E5D90721F48091F6 +:1012300067048F7B0FC0C13120E5D20721F4809174 +:1012400067048F7707C0C331D04531F480916704BC +:101250008B7F877F80936704809167040E94F628C4 +:101260009CC08D2F99278F70992781309105D9F4D3 +:101270009E012370332702C0880F991F2A95E2F739 +:101280009C688E0144E0000F111F4A95E1F700278A +:101290001370802B912B53E0CC0FDD1F5A95E1F793 +:1012A000C076DD272FC08230910531F4DC2FCC27AA +:1012B0008E01016F106A71C08330910569F4CE010F +:1012C0008370992701E010E002C0000F111F8A957A +:1012D000E2F7C8019C680FC0049709F05EC0CE0118 +:1012E0008370992701E010E002C0000F111F8A955A +:1012F000E2F7C8019A6823E0CC0FDD1F2A95E1F7D9 +:10130000C07ED7708C010C2B1D2B47C0DF708E0167 +:10131000106243C000E010E040C08E013EC001E812 +:1013200010E43BC003E810E438C002EE14E435C01A +:1013300009EE14E432C00AEE14E42FC005EB14E405 +:101340002CC006EB14E429C007EB14E426C00CEC17 +:1013500014E423C00DEC14E420C003E815E41DC020 +:101360000AE815E41AC002E915E417C004E915E417 +:1013700014C001E216E411C003E216E40EC004E258 +:1013800016E40BC005E216E408C006E216E405C048 +:1013900007E216E402C00AE216E4C801DF91CF9129 +:1013A0001F910F9108959CE0799FF001112490E323 +:1013B000899FE00DF11D1124E60FF11DEE0FFF1FB7 +:1013C000E258FE4F85919491803E9105E0F4803C77 +:1013D000910558F58133910509F46FC048F48932BD +:1013E000910509F463C08A32910509F46DC072C099 +:1013F00089339105E9F082389105D1F08533910563 +:1014000009F44DC067C0833E910581F138F4803EF8 +:101410009105B9F0823E9105D9F05CC0863E9105F8 +:1014200061F1873E9105A1F155C00E947A070895A8 +:101430002091670420FD02C021FF4CC080EE90E0A7 +:1014400049C08091670480FFF9CF89E390E042C0F2 +:101450008091670482FF0EC08091670484FF03C0FF +:1014600080E090E037C083EE90E034C08091670464 +:1014700082FFF2CF82EE90E02DC08091670483FF5F +:101480000BC08091670484FDEBCF87EE90E022C013 +:101490008091670483FFF5CF86EE90E01BC08091BA +:1014A000670485FF07C089E290E014C0809167045B +:1014B00085FFF9CF85E390E00DC08091670486FF3A +:1014C00007C08AE290E006C08091670486FFF9CFEA +:1014D00081E390E00E948A070895CF92DF92EF9215 +:1014E000FF920F931F9301E010E020E030E06801CD +:1014F000790104C0CC0CDD1CEE1CFF1C8A95D2F7D0 +:1015000004C0000F111F221F331F6A95D2F70C2948 +:101510001D292E293F29C0902104D0902204E0905B +:101520002304F0902404C022D122E222F322842F4B +:10153000C016D106E206F30641F41F910F91FF9009 +:10154000EF90DF90CF900C9495251F910F91FF9015 +:10155000EF90DF90CF900C94B62508950C94AD0ACF +:101560005F926F927F928F929F92AF92BF92CF9233 +:10157000DF92EF92FF920F931F93CF93DF93CDB73C +:10158000DEB728970FB6F894DEBF0FBECDBFCE01F1 +:1015900001966C014E0199E0890E911C20E030E02B +:1015A00040E050E060E070E000E010E0E12CF12C61 +:1015B0006C2C5D2C88E0782EAA24A394B12CE4ED49 +:1015C000F2E0A62DB52D872D01900D928A95E1F7B9 +:1015D000F601819191916F01FC01E07FFF27E032DC +:1015E000F10559F48F709927F50102C0EE0FFF1F26 +:1015F0008A95E2F7EE2AFF2A37C0E033F10559F465 +:101600008F709927F50102C0EE0FFF1F8A95E2F750 +:101610000E2B1F2B29C0E034F10559F48F70992748 +:10162000F50102C0EE0FFF1F8A95E2F76E2B7F2BAC +:101630001BC0E035F10559F48F709927F50102C000 +:10164000EE0FFF1F8A95E2F74E2B5F2B0DC0E036A1 +:10165000F10551F48F709927F50102C0EE0FFF1FBD +:101660008A95E2F72E2B3F2BC814D90409F0A7CF97 +:1016700084B19E2D9095892384B985B1E82AE5B877 +:1016800087B1902F9095892387B988B1082B08B925 +:101690008AB1962F909589238AB98BB1682B6BB943 +:1016A0008DB1942F909589238DB98EB1482B4EB969 +:1016B00080B3922F9095892380BB81B3282B21BBC7 +:1016C00028960FB6F894DEBF0FBECDBFDF91CF9145 +:1016D0001F910F91FF90EF90DF90CF90BF90AF9050 +:1016E0009F908F907F906F905F9008955F926F9220 +:1016F0007F928F929F92AF92BF92CF92DF92EF92A2 +:10170000FF920F931F93CF93DF93CDB7DEB7689708 +:101710000FB6F894DEBF0FBECDBF85B7806885BF1A +:1017200085B7806885BF0E94B00ACE0101966C0122 +:101730004E0199E1890E911C20E030E040E050E03C +:1017400060E070E000E010E0E12CF12C6C2C5D2CEE +:1017500088E1782EAA24A394B12CECEDF2E0A62D1A +:10176000B52D872D01900D928A95E1F7F6018191B3 +:1017700091916F01FC01E07FFF27E032F10559F400 +:101780008F709927F50102C0EE0FFF1F8A95E2F7CF +:10179000EE2AFF2A37C0E033F10559F48F709927FC +:1017A000F50102C0EE0FFF1F8A95E2F70E2B1F2BEB +:1017B00029C0E034F10559F48F709927F50102C072 +:1017C000EE0FFF1F8A95E2F76E2B7F2B1BC0E035D3 +:1017D000F10559F48F709927F50102C0EE0FFF1F34 +:1017E0008A95E2F74E2B5F2B0DC0E036F10551F4E0 +:1017F0008F709927F50102C0EE0FFF1F8A95E2F75F +:101800002E2B3F2BC814D90409F0A7CF84B19E2DED +:101810009095892384B985B1E82AE5B887B1902FDE +:101820009095892387B988B1082B08B98AB1962F7A +:10183000909589238AB98BB1682B6BB98DB1942FA0 +:10184000909589238DB98EB1482B4EB980B3922FD4 +:101850009095892380BB81B3282B21BB10926D0307 +:1018600010926C03109265031092640310926F0340 +:1018700010926E0310926703109266031092710328 +:101880001092700310926903109268031092730310 +:101890001092720310926B0310926A0368960FB64F +:1018A000F894DEBF0FBECDBFDF91CF911F910F9196 +:1018B000FF90EF90DF90CF90BF90AF909F908F9070 +:1018C0007F906F905F900C946F077F928F929F92A2 +:1018D000AF92BF92CF92DF92EF92FF920F931F933E +:1018E000CF93DF93CDB7DEB7A0970FB6F894DEBFE6 +:1018F0000FBECDBF6E0149E1C40ED11C84E6E82EB7 +:1019000083E0F82E98E0792EBC2CAD2C01E010E09D +:1019100028E1822E35E0932EE4EDF2E0AB2DBA2DD6 +:10192000872D01900D928A95E1F7F60181919191B1 +:101930006F019C01207F33272032310591F424B1BF +:101940008F709927A80102C0440F551F8A95E2F7AE +:10195000CA01922F982B94B995B18095892385B9A6 +:1019600053C02033310591F427B18F709927F801C6 +:1019700002C0EE0FFF1F8A95E2F7CF01922F982B3E +:1019800097B998B18095892388B93EC02034310534 +:1019900091F42AB18F709927A80102C0440F551FF6 +:1019A0008A95E2F7CA01922F982B9AB99BB180953C +:1019B00089238BB929C02035310591F42DB18F7061 +:1019C0009927F80102C0EE0FFF1F8A95E2F7CF01B9 +:1019D000922F982B9DB99EB1809589238EB914C002 +:1019E0002036310589F420B38F709927A80102C0F1 +:1019F000440F551F8A95E2F7CA01922F982B90BB8E +:101A000091B38095892381BB50EA5A95F1F7BE01C5 +:101A10006F5F7F4F20E030E040E050E0ECEDF2E01F +:101A2000DE011196882D01900D928A95E1F7FB0158 +:101A300081919191BF01FC01E07FFF27E032F10528 +:101A400011F4E3B113C0E033F10511F4E6B10EC0B7 +:101A5000E034F10511F4E9B109C0E035F10511F404 +:101A6000ECB104C0E036F105B9F4EFB1F0E08F70ED +:101A7000992702C0F595E7958A95E2F7E0FD08C041 +:101A8000C801042E02C0880F991F0A94E2F702C011 +:101A900080E090E0282B392B4F5F5F4F4C30510591 +:101AA00009F0BCCFF701808191818217930721F063 +:101AB00031832083909271020E94B00AF2E0EF0E0F +:101AC000F11C4CE6E41643E0F40609F025CF8091C2 +:101AD0007102882361F1815080937102882339F06B +:101AE0008FE99FE00197F1F700C0000020C08091CE +:101AF00064039091650390936D0380936C038091D0 +:101B000066039091670390936F0380936E038091B7 +:101B1000680390916903909371038093700380919F +:101B20006A0390916B0390937303809372030E94F6 +:101B3000750781E0A0960FB6F894DEBF0FBECDBF4B +:101B4000DF91CF911F910F91FF90EF90DF90CF9099 +:101B5000BF90AF909F908F907F900895E82FF0E016 +:101B6000EE0FFF1FE459FC4F808191810895089585 +:101B7000809152048160809352040C9408298091D2 +:101B800052048E7F809352040C9408290E94DA2814 +:101B9000811102C00E94B6280E9404298093520439 +:101BA0003E9A809171008D7F8093710082E08093D6 +:101BB00090008AE18093910081E0809376030895FC +:101BC00080917603811102C00E94C60D1092C60357 +:101BD0001092C503809171008D7F80937100809178 +:101BE00090008F7780939000109288031092870363 +:101BF0001092BF031092C0031092C1031092C2034F +:101C00001092BE031092BD03EDE9F3E0ADE8B3E03E +:101C100011921192119211921D921D9283E0ED3B4F +:101C2000F807B1F70895CF92DF92EF92FF920F93EA +:101C30001F93CF93DF9320918703222309F484C05D +:101C40006B017C0180917603811102C00E94C60D58 +:101C50000DEB13E0C7E0D0E0A7019601F8019291E7 +:101C60008291729162918F010E94522E811131C036 +:101C7000FE01EE0FFF1FEE0FFF1FE356FC4F108219 +:101C8000118212821382DE01AA0FBB1FA357BC4F21 +:101C900011961C921E92C730D105E9F0219644811D +:101CA0005581668177814083518362837383148277 +:101CB00015821682178212968D919C911397119618 +:101CC0009C938E9313961C921E92129734961296A2 +:101CD000E2CF219708F68091C5039091C603019742 +:101CE00097FD05C09093C6038093C50304C010926E +:101CF000C6031092C5038091C5039091C60320913D +:101D0000C3033091C4032817390724F01092C40389 +:101D10001092C303892BC1F4809171008D7F809351 +:101D20007100809190008F77809390001092BF0394 +:101D30001092C0031092C1031092C2031092BE030E +:101D40001092BD0310928703DF91CF911F910F91E5 +:101D5000FF90EF90DF90CF9008951F920F920FB6F3 +:101D60000F9211244F925F926F927F928F929F9267 +:101D7000AF92BF92CF92DF92EF92FF922F933F9359 +:101D80004F935F936F937F938F939F93AF93BF9383 +:101D9000CF93DF93EF93FF9380918703882309F418 +:101DA0009BC1C091C503D091C6031C161D060CF043 +:101DB00093C14090770350907803609079037090BE +:101DC0007A0320E030E0A901C301B2010E94FD2F97 +:101DD00018160CF065C0C130D10509F452C08091CD +:101DE000C3039091C403BE010E94CF317C01909344 +:101DF000C4038093C3038090890390908A03A090CA +:101E00008B03B0908C0320E030E040E85FE3C50135 +:101E1000B4010E94EE2D6093890370938A0380932E +:101E20008B0390938C03F701EE0FFF1FEE0FFF1F44 +:101E3000E356FC4FA30192016081718182819381FD +:101E40000E94562E20E030E040E05EE30E94013028 +:101E50009B01AC01C501B4010E94FD2F18168CF442 +:101E6000C7010196BE010E94CF319093C4038093B5 +:101E7000C3031092890310928A0310928B0310926D +:101E80008C03E091C303F091C403EE0FFF1FEE0F2C +:101E9000FF1FE356FC4F6081718182819381D0C026 +:101EA000C090BF03D090C003E090C103F090C20384 +:101EB00020E030E0A901C701B6010E94522E21970F +:101EC000882309F4A2C0FE01EE0FFF1FEE0FFF1FD3 +:101ED000E356FC4F80809180A280B380A5019401DD +:101EE000C701B6010E94522E87FF31C0A50194019F +:101EF00060E070E08CED93EC0E94562E20E030E024 +:101F000040E451E40E94562E20E030E040E05FE3E0 +:101F10000E9401309B01AC0160E070E080E090E441 +:101F20000E9464309B01AC01C501B4010E940130E4 +:101F30009B01AC01C701B6010E94522E87FF07C06A +:101F4000A701960160E070E08CED93E439C0A50133 +:101F50009401C701B6010E94FD2F18160CF055C060 +:101F6000A501940160E070E08CED93E40E94562E90 +:101F700020E030E040E451E40E94562E20E030E0C2 +:101F800040E05FE30E9401309B01AC0160E070E043 +:101F900080E090E40E9464309B01AC01C501B40173 +:101FA0000E9401309B01AC01C701B6010E94FD2FC8 +:101FB00018165CF5A701960160E070E08CED93ECDB +:101FC0000E94562E20E030E040E451E40E94562E5C +:101FD00020E030E040E05FE30E9401309B01AC0173 +:101FE00060E070E080E090E40E9464309B01AC010E +:101FF000C701B6010E9401306093BF037093C00314 +:102000008093C1039093C20313C0FE01EE0FFF1F24 +:10201000EE0FFF1FE356FC4F80819181A281B381B7 +:102020008093BF039093C003A093C103B093C203F6 +:102030006091BF037091C0038091C1039091C2036E +:1020400020917403309175032F3F4FEF340731F027 +:102050002F5F3F4F30937503209374030E94D41277 +:102060006B017C0120E034E244EF51E40E94522EE7 +:1020700087FF08C086EFC82E88E2D82E84EFE82EAE +:1020800081E4F82E20E030E040E051E4C701B601E1 +:102090000E9401309B01AC0160E074E284E79BE4A4 +:1020A0000E94562E6B017C010E94BE2E70939700F9 +:1020B00060939600209172023091730240917402F5 +:1020C00050917502C701B6010E9401300E94BE2ED8 +:1020D000709399006093980080918803882309F495 +:1020E00033C1C0908303D0908403E0908503F090C7 +:1020F000860320E030E0A901C701B6010E94FD2F50 +:102100001816D4F580917403909175038F3F2FEFCB +:10211000920729F001969093750380937403C70189 +:10212000B6010E94D41220E030E040E051E40E9469 +:1021300001309B01AC0160E074E284E79BE40E9403 +:10214000562E6B017C010E94BE2E70939700609307 +:102150009600209172023091730240917402509166 +:102160007502C701B6010E9401300E94BE2E709315 +:1021700099006093980008C0109297001092960002 +:10218000109299001092980060917D0370917E03E7 +:102190006F5F7F4F70937E0360937D032091960065 +:1021A0003091970080E090E0232BF1F0C0919600F1 +:1021B000D09197000E94EF2E6B017C01BE0180E060 +:1021C00090E00E94EF2E9B01AC0160917F03709123 +:1021D000800380918103909182030E94562E20E01B +:1021E0003FEF4FE757E410C00E94EF2E6B017C01D8 +:1021F00020E030EE4FEF54E460917F037091800354 +:1022000080918103909182030E9401309B01AC0177 +:10221000C701B6010E94FD2F87FD96C080917B0308 +:102220008F5F80937B0390E020914E0430914F04A8 +:1022300082179307A0F080915904882319F0109217 +:102240007B030DC0809171008D7F80937100809120 +:1022500090008F7780939000109288037DC08091CA +:102260007C03C0917B03811128C0C0905304D0909F +:102270005404E0905504F090560420E030E0A901A9 +:10228000C701B6010E94FD2F1816BCF481E08093AF +:102290007C031092830310928403109285031092A2 +:1022A0008603C0927F03D0928003E0928103F09274 +:1022B0008203C150C0937B0343C010927C031092F1 +:1022C000750310927403E0915004F091510448E0BA +:1022D000C49FE00DF11D112480819181A281B38101 +:1022E0008093830390938403A0938503B093860324 +:1022F00020E030E040E85EE364817581868197816B +:102300000E9401306B017C0120E030E048EC52E497 +:1023100060917602709177028091780290917902B3 +:102320000E94562E9B01AC01C701B6010E940130EC +:1023300060937F0370938003809381039093820363 +:1023400010927E0310927D038091520480FD04C0A0 +:102350001092880310928703FF91EF91DF91CF9144 +:10236000BF91AF919F918F917F916F915F914F91AD +:102370003F912F91FF90EF90DF90CF90BF90AF9063 +:102380009F908F907F906F905F904F900F900FBEB7 +:102390000F901F901895CF92DF92EF92FF92CF93FC +:1023A000DF936B017C01EA0180917603811102C009 +:1023B0000E94C60D8091520480FF46C08091C503E3 +:1023C0009091C60308970CF03FC0809171008D7FFB +:1023D000809371008091880381110E94E00D81E05B +:1023E00080938703109275031092740320E030E00D +:1023F000A901C701B6010E94FD2F1816DCF48091D7 +:10240000C5039091C603FC01EE0FFF1FEE0FFF1FE7 +:10241000E356FC4FC082D182E282F382FC01EE0FD0 +:10242000FF1FE357FC4FD183C08301969093C603EF +:102430008093C503809171008260809371008091C8 +:102440009000806880939000DF91CF91FF90EF9093 +:10245000DF90CF9008958F929F92AF92BF92CF92CC +:10246000DF92EF92FF920F931F93CF93DF93EC01D4 +:102470007B01D42E4801590180917603811102C05D +:102480000E94C60D8091520480FF6BC08091710044 +:102490008D7F809371008091870381110E94E00DF0 +:1024A00081E080938803D0935104C0935004F0924C +:1024B0004F04E0924E04D0925904809253049092BB +:1024C0005404A0925504B0925604109289031092BD +:1024D0008A0310928B0310928C0310927B038881E5 +:1024E0009981AA81BB818093830390938403A093F5 +:1024F0008503B093860320E030E040E85EE36C8122 +:102500007D818E819F810E9401306B017C0120E0E2 +:1025100030E048EC52E4609176027091770280914D +:102520007802909179020E94562E9B01AC01C7015E +:10253000B6010E94013060937F0370938003809303 +:1025400081039093820310927E0310927D03809109 +:102550007100826080937100809190008068809308 +:102560009000DF91CF911F910F91FF90EF90DF903E +:10257000CF90BF90AF909F908F9008958091C703A8 +:1025800090E0019666E070E00E94CF318093C7032F +:1025900008958091C70390E0019766E070E00E9483 +:1025A000CF318093C70308958F929F92AF92BF92CD +:1025B000CF92DF92EF92FF920F931F93CF93DF930F +:1025C0006B017C01C0917403D0917503BE0180E062 +:1025D00090E00E94EF2E4B015C01A701960160E0A4 +:1025E00070E08CE594E40E94562E9B01AC01C5017D +:1025F000B4010E9401300E94C32E2091C7032330F2 +:1026000009F473C028F4222351F02130E9F02CC1E1 +:10261000243009F4A0C0253009F4E0C025C180E0D1 +:1026200090E0A0E0BFE38093720290937302A093C6 +:102630007402B0937502109277031092780310928F +:10264000790310927A0310C11092770310927803E5 +:102650001092790310927A036431710540F46A3064 +:10266000710560F520E030E040E85EE32BC0693C96 +:10267000710508F0AAC080E090E00E94EF2E20E0F3 +:1026800030E040EA51E40E94ED2D20E030E044E3E8 +:1026900053E40E94562E9B01AC010E94013020E0C1 +:1026A00030E040E05EE30E9401309B01AC0160E05D +:1026B00070E080E09EE30E94ED2D44C020E030E019 +:1026C00040E05FE3C701B6010E9401306B017C016D +:1026D00080E090E0A0E0BEE38093720290937302EA +:1026E000A0937402B0937502BFC01092770310924A +:1026F00078031092790310927A034AE0469F900182 +:10270000479F300D1124C90168EB7BE00E94BB316B +:10271000BC016C5D754077FF03C0719561957109CF +:10272000882777FD8095982F0E94F12E2EE333ECB9 +:102730004EE259E30E94013020E030E040EC5EE3DD +:102740000E94EE2D60937202709373028093740264 +:102750009093750289C010927703109278031092BB +:10276000790310927A03CE0183709927892BE1F0C7 +:10277000BE016170772780E090E00E94EF2E20E09C +:1027800030E040E05EE30E94013020E030E040E4D1 +:102790005FE30E94EE2D6093720270937302809348 +:1027A0007402909375020CC080E090E0A0E0BFE35B +:1027B0008093720290937302A0937402B093750297 +:1027C000C770DD27CD2B09F04FC010927202109216 +:1027D0007302109274021092750246C01092770331 +:1027E000109278031092790310927A0300E010E0BF +:1027F00020E03FE30093720210937302209374026F +:10280000309375026739710578F180E090E00E949D +:10281000EF2E20E030E047E153E40E94ED2D20E070 +:1028200030E04AE754E40E94562E20E030E048E4CD +:1028300052E40E94013020E030E040EA51E40E947E +:10284000332F0E94BE2E660F771F660F771FFB0186 +:10285000EC50FD4F2081318142815381C701B60187 +:102860000E9401306B017C01C701B601DF91CF915D +:102870001F910F91FF90EF90DF90CF90BF90AF909E +:102880009F908F9008958091D8030895CF93DF9300 +:1028900000D01F92CDB7DEB79C0180915E048430DA +:1028A00019F593E099833B832A839093E9008FEF96 +:1028B0009091E800815095FD06C095ED9A95F1F74D +:1028C00000008111F5CF8091E80085FF0DC040E048 +:1028D00050E063E070E0CE0101960E94A71680915F +:1028E000E8008E778093E8000F900F900F90DF91B3 +:1028F000CF910895CF93DF9300D01F92CDB7DEB76D +:1029000020915E04243021F522E029839B838A8371 +:1029100083E08093E9008FEF9091E800815095FD6E +:1029200006C095ED9A95F1F700008111F5CF8091E1 +:10293000E80085FF0DC040E050E063E070E0CE01AC +:1029400001960E94A7168091E8008E778093E80098 +:102950000F900F900F90DF91CF91089520915E041A +:102960002430F1F422E02093E9002FEF3091E800C9 +:10297000215035FD06C035ED3A95F1F700002111E3 +:10298000F5CF2091E80025FF0BC040E050E065E066 +:1029900070E00E94A7168091E8008E778093E8008F +:1029A0000895CF93DF93EC0190915E04943009F089 +:1029B00046C0809184028823D9F0809185028823C3 +:1029C000B9F09093E9008FEF9091E800815095FD68 +:1029D00006C095E19A95F1F700008111F5CF80913D +:1029E000E80085FF2CC040E050E060E170E017C0D7 +:1029F00081E08093E9008FEF9091E800815095FD90 +:102A000006C095ED9A95F1F700008111F5CF809100 +:102A1000E80085FF14C040E050E068E070E0CE01BF +:102A20000E94A7168091E8008E778093E80080E1ED +:102A3000FE01A8ECB3E001900D928A95E1F7DF91D9 +:102A4000CF91089580915D04811109C00E943C18C6 +:102A50000E9499188091E20084608093E2000895BA +:102A600010925D040895089508950C94E12742E0C2 +:102A700061EC81E00E94B61742E061EC82E00E94C6 +:102A8000B61742E061EC83E00E94B61742E161ECC8 +:102A900084E00C94B61780916004833009F455C02B +:102AA00030F4813071F0823009F48EC008958A309C +:102AB00009F47AC08B3009F460C0893009F09CC0F9 +:102AC00020C080915F04813A09F096C08091E800AF +:102AD000877F8093E8008091630490916404892B40 +:102AE00021F460E188EC93E003C060E080E090E0D6 +:102AF00070E00E94F2168091E8008B778093E800E6 +:102B0000089580915F04813209F076C0809163045A +:102B100090916404009719F0039709F06DC08091BB +:102B2000E800877F8093E8008091E80082FD05C07F +:102B300080915E048111F8CF5FC08091F100809395 +:102B4000D8038091E8008B7753C080915F04813A6D +:102B500009F052C08091630490916404892B09F0BC +:102B60004BC08091E800877F8093E8008091E80067 +:102B700080FFFCCF8091840236C080915F04813257 +:102B8000D9F58091630490916404892BA9F5809113 +:102B9000E800877F8093E8000E94EB178091610432 +:102BA000809384020C945C2180915F04813221F532 +:102BB0008091E800877F8093E8000E94EB17809166 +:102BC00062048093D903089580915F04813AA1F44F +:102BD0008091E800877F8093E8008091E80080FF83 +:102BE000FCCF8091D9038093F1008091E8008E772B +:102BF0008093E8000C94EB17089584B7877F84BF17 +:102C000088E10FB6F89480936000109260000FBEC8 +:102C100090E080E80FB6F894809361009093610093 +:102C20000FBE0E948E1B0E943C180E949918809132 +:102C3000E20084608093E20078940E941F1B0E944F +:102C4000901B8AE792E00E943A1B80915E048530D7 +:102C500069F40E949B2780915C048823B1F30E9451 +:102C6000C927882391F30E949116EFCF0E94981BE9 +:102C7000ECCF292F332723303105C9F064F42130FC +:102C8000310581F02230310509F043C08DE690E036 +:102C90002AE338E042C021323105F1F02232310519 +:102CA00041F137C082E190E027EA38E036C0992749 +:102CB0008130910541F08230910541F0892B49F531 +:102CC000E6E3F8E005C0E8E0F8E002C0EEEDF7E08A +:102CD000849190E09F0121C06430D8F4E62FF0E0A9 +:102CE000EE0FFF1FE05BFC4F2081318189E090E017 +:102CF00014C0643070F470E0FB01EE0FFF1FE85B5E +:102D0000FC4F20813181FB01EC5BFC4F808190E026 +:102D100004C080E090E020E030E0FA0131832083BD +:102D2000089580E189BD82E189BD09B400FEFDCF2F +:102D30008091D8008F7D8093D8008091E0008260E0 +:102D40008093E0008091E00081FDFCCF0895CF9258 +:102D5000DF92EF92FF920F931F93CF93DF93EC01DB +:102D60008B016A010E940A18811133C0C114D10479 +:102D700039F0F60180819181081B190BC80FD91F0A +:102D8000E12CF12C0115110519F18091E80085FD68 +:102D900016C08091E8008E778093E800C114D104BA +:102DA00049F0F60180819181E80EF91EF182E082FE +:102DB00085E00FC00E940A18882321F30AC0899178 +:102DC0008093F10001501109FFEFEF1AFF0ADACFEB +:102DD00080E0DF91CF911F910F91FF90EF90DF90F6 +:102DE000CF90089520916504309166042617370727 +:102DF00048F06115710539F42091E8002E77209391 +:102E0000E80001C0B90140E061157105A9F1209108 +:102E10005E04222309F443C0253009F442C0209106 +:102E2000E80023FD40C02091E80022FD32C020913F +:102E3000E80020FFE9CF4091F3002091F20030E05C +:102E4000342BFC01CF016115710559F02830310593 +:102E500040F481918093F100615071092F5F3F4FE1 +:102E6000F1CF41E02830310509F040E02091E80041 +:102E70002E772093E800C8CF4111C9CF0AC08091B6 +:102E80005E04882361F0853061F08091E80083FD65 +:102E90000AC08091E80082FFF2CF80E0089582E0CE +:102EA000089583E0089581E00895209165043091AC +:102EB00066042617370748F06115710539F420912B +:102EC000E8002E772093E80001C0B901FC0120E062 +:102ED0006115710591F180915E04882309F440C069 +:102EE000853009F43FC08091E80083FD3DC08091AA +:102EF000E80082FD2FC08091E80080FFE9CF20919B +:102F0000F3008091F20090E0922B6115710559F069 +:102F10008830910540F424912093F100319661505E +:102F200071090196F2CF21E0089709F020E0809125 +:102F3000E8008E778093E800CBCF2111CCCF0AC078 +:102F400080915E04882361F0853061F08091E80013 +:102F500083FD0AC08091E80082FFF2CF80E00895EF +:102F600082E0089583E0089581E00895982F9730D6 +:102F700058F59093E900981739F07091EC00209182 +:102F8000ED005091F00003C0242F762F50E021FF78 +:102F900019C03091EB003E7F3093EB003091ED0093 +:102FA0003D7F3093ED003091EB0031603093EB00CA +:102FB0007093EC002093ED005093F0002091EE0010 +:102FC00027FF07C09F5FD3CF8F708093E90081E018 +:102FD000089580E0089580915F0487FF11C080917B +:102FE000E80082FD05C080915E048111F8CF11C018 +:102FF0008091E8008B770BC080915E04882349F0B4 +:103000008091E80080FFF8CF8091E8008E77809370 +:10301000E80008952091E4003091E50095E64091A4 +:10302000EC00842F817040FF22C08091E80080FD79 +:103030001CC080915E04882391F0853091F08091CE +:10304000EB0085FD10C04091E4005091E50042176F +:10305000530729F39A01915011F784E0089582E013 +:10306000089583E0089581E0089580E008954091F7 +:10307000E80042FFDECF08950E94AA180E94B2180D +:10308000E0EEF0E0808181608083E8EDF0E0808117 +:103090008F77808319BCA7EDB0E08C918E7F8C93E5 +:1030A00080818F7E808310925D0408950F931F931B +:1030B000CF93DF930E94AA180E94B218C8EDD0E007 +:1030C00088818F77888388818068888388818F7DD5 +:1030D000888319BC10925E0410925A0410925C040A +:1030E00010925B0400EE10E0F80180818B7F8083FA +:1030F00088818160888342E060E080E00E94B617AA +:10310000E1EEF0E080818E7F8083E2EEF0E080816E +:1031100081608083808188608083F80180818E7FD8 +:103120008083888180618883DF91CF911F910F9187 +:103130000895E8EDF0E080818F7E8083E7EDF0E098 +:1031400080818160808384E082BF81E080935D0420 +:103150000C945618E8EDF0E080818E7F8083109209 +:10316000E20008951092DA001092E10008951F9293 +:103170000F920FB60F9211242F933F934F935F93AB +:103180006F937F938F939F93AF93BF93EF93FF932F +:103190008091E10082FF0BC08091E20082FF07C0B6 +:1031A0008091E1008B7F8093E1000E941E1B809143 +:1031B000DA0080FF1FC08091D80080FF1BC0809183 +:1031C000DA008E7F8093DA008091D90080FF0DC0F5 +:1031D00080E189BD82E189BD09B400FEFDCF81E0B7 +:1031E00080935E040E94221505C019BC10925E04F3 +:1031F0000E9430158091E10080FF19C08091E200AB +:1032000080FF15C08091E2008E7F8093E200809164 +:10321000E20080618093E2008091D8008062809318 +:10322000D80019BC85E080935E040E94341580911B +:10323000E10084FF30C08091E20084FF2CC080E177 +:1032400089BD82E189BD09B400FEFDCF8091D8001F +:103250008F7D8093D8008091E1008F7E8093E10084 +:103260008091E2008F7E8093E2008091E200816095 +:103270008093E20080915A04882311F084E007C013 +:103280008091E30087FD02C081E001C083E080936C +:103290005E040E9435158091E10083FF29C0809172 +:1032A000E20083FF25C08091E100877F8093E100E9 +:1032B00082E080935E0410925A048091E1008E7F38 +:1032C0008093E1008091E2008E7F8093E200809104 +:1032D000E20080618093E20042E060E080E00E94D2 +:1032E000B6178091F00088608093F0000E9433153B +:1032F000FF91EF91BF91AF919F918F917F916F91CE +:103300005F914F913F912F910F900FBE0F901F90A3 +:1033100018951F920F920FB60F9211242F933F937F +:103320004F935F936F937F938F939F93AF93BF93CD +:10333000CF93DF93EF93FF93C091E900CF7080911B +:10334000EC00D82FD17080FDD0E81092E900809178 +:10335000F000877F8093F00078940E94CD1910923E +:10336000E9008091F00088608093F000CD2BCF7051 +:10337000C093E900FF91EF91DF91CF91BF91AF91A1 +:103380009F918F917F916F915F914F913F912F917D +:103390000F900FBE0F901F9018951F93CF93DF9340 +:1033A000CDB7DEB7AA970FB6F894DEBF0FBECDBF7C +:1033B000EFE5F4E088E08E0F9091F10091938E1389 +:1033C000FBCF0E944B158091E80083FF1FC18091C5 +:1033D0005F0490916004492F50E04A30510508F095 +:1033E00015C1FA01EC59FF4F0C94E331803881F09C +:1033F000823809F00BC1809163048F708093E900DB +:103400008091EB0085FB882780F91092E90006C0C7 +:1034100080915B0490915C04911182609091E8002E +:10342000977F9093E8008093F1001092F100C8C05C +:10343000282F2D7F09F0EAC0882319F0823061F02F +:10344000E5C080916104813009F0E0C0933009F05B +:1034500080E080935C042BC080916104811127C0BF +:10346000809163048F7009F4D1C08093E9002091AA +:10347000EB0020FF1CC0933021F48091EB008062B0 +:1034800014C09091EB0090619093EB0021E030E04C +:10349000A90102C0440F551F8A95E2F74093EA0044 +:1034A0001092EA008091EB0088608093EB0010920C +:1034B000E9008091E800877F86C08111A7C0109144 +:1034C00061041F778091E3008078812B8093E30073 +:1034D0008091E800877F8093E8000E94EB1780913D +:1034E000E80080FFFCCF8091E30080688093E300D8 +:1034F000111102C082E001C083E080935E0486C0A7 +:103500008058823008F082C08091610490916204FA +:103510008C3D53E0950779F583E08A838AE28983BD +:103520004FB7F894DE01139620E03EE051E2E32F1E +:10353000F0E050935700E49120FF03C0E295EF7054 +:103540003F5FEF708E2F90E0EA3010F0C79601C019 +:10355000C0968D939D932F5F243149F74FBF809183 +:10356000E800877F8093E8006AE270E0CE01019670 +:103570000E94F21614C0AE014F5F5F4F609163046A +:103580000E943916BC01009709F440C09091E800F0 +:10359000977F9093E80089819A810E9455178091C6 +:1035A000E8008B778093E80031C0803879F580910E +:1035B000E800877F8093E80080915A048093F100AF +:1035C0008091E8008E778093E8000E94EB171EC080 +:1035D00081111CC0909161049230C0F48091E80088 +:1035E000877F8093E80090935A040E94EB178091A4 +:1035F0005A04811106C08091E30087FD02C081E07A +:1036000001C084E080935E040E9437158091E80039 +:1036100083FF0AC08091E800877F8093E800809153 +:10362000EB0080628093EB00AA960FB6F894DEBFA1 +:103630000FBECDBFDF91CF911F9108950895CF9315 +:1036400080915E048823A1F0C091E900CF70909131 +:10365000EC00892F817090FD80E8C82B1092E90062 +:103660008091E80083FD0E94CD19CF70C093E900DE +:10367000CF9108959093DF038093DE030895E09146 +:10368000DE03F091DF03309721F00190F081E02D0F +:10369000099480E00895E091DE03F091DF03309714 +:1036A00021F00280F381E02D09940895E091DE037A +:1036B000F091DF03309721F00480F581E02D09942B +:1036C00008952091DC033091DD038217930771F098 +:1036D0009093DD038093DC03E091DE03F091DF0340 +:1036E000309721F00680F781E02D0994089520910C +:1036F000DA033091DB038217930771F09093DB03B9 +:103700008093DA03E091DE03F091DF03309721F03C +:103710000084F185E02D0994089508950C948D1B83 +:103720000E9415280E94760B0E949B280C94562D0F +:103730004F925F927F928F929F92AF92BF92CF9261 +:10374000DF92EF92FF920F931F93CF93DF93CDB74A +:10375000DEB72A970FB6F894DEBF0FBECDBF0E942A +:10376000650C91EEC92E93E0D92E00E010E0AA245A +:10377000A394B12C702E802F0E94AE0D4C01F60147 +:10378000419051906F014826592641145104B1F4DB +:103790000F5F1F4F0430110569F78FEF89838A830C +:1037A0001B820E941E288160782F9D838C83498113 +:1037B0005A816B818D810E94511C3AC080913D04D9 +:1037C00081FD0E94B70D20E030E07501022E02C09D +:1037D000EE0CFF1C0A94E2F7C70184219521892B86 +:1037E00009F12E837F828E209F2091E0892809F4A1 +:1037F00090E098870E941E288160782F9A87898799 +:103800004E815F8168858A850E94511C000F111FBF +:10381000F801EF51FC4F80819181E826F926F18271 +:10382000E08206C02F5F3F4F2C30310571F6B0CFDC +:103830000E94872A1091E0030E943F1B1817D9F0BD +:103840000E943F1B8093E0032A960FB6F894DEBFD8 +:103850000FBECDBFDF91CF911F910F91FF90EF90E1 +:10386000DF90CF90BF90AF909F908F907F905F90B0 +:103870004F900C94AE0A2A960FB6F894DEBF0FBE96 +:10388000CDBFDF91CF911F910F91FF90EF90DF900F +:10389000CF90BF90AF909F908F907F905F904F9010 +:1038A0000895CF93DF93CDB7DEB72B970FB6F8947B +:1038B000DEBF0FBECDBF4F83588769877A878B875E +:1038C000DE01119686E0FD0111928A95E9F785E007 +:1038D000FE01379601900D928A95E1F749815A8150 +:1038E0006B817C818D819E810E94F6232B960FB681 +:1038F000F894DEBF0FBECDBFDF91CF910895CF9377 +:10390000882309F4C2C0C82F823859F40E943F1B93 +:1039100081FDBBC089E30E949F260E946C2789E33A +:103920000CC0833879F40E943F1B80FDAEC083E554 +:103930000E949F260E946C2783E50E94E126CF917A +:103940000C946C27843859F40E943F1B82FD9DC063 +:1039500087E40E949F260E946C2787E4EECF8CEFBD +:103960008C0F813A48F48C2F0E94BE2C81118DC09F +:103970008C2F0E949F26E3CF80E28C0F883048F482 +:10398000C77081E001C0880FCA95EAF70E94252719 +:10399000D6CF8BE58C0F833078F4C53A29F0C63A40 +:1039A00031F083E890E005C081E890E002C082E851 +:1039B00090E0CF910C94611B88E58C0F833108F067 +:1039C00064C0C83A39F1C93A41F1CA3A49F1CB3A2F +:1039D00051F1CC3A59F1CD3A61F1C03B69F1CE3A9F +:1039E00071F1CF3A79F1C13B81F1C23B89F1C33B1F +:1039F00091F1C43B99F1C53BA1F1C63BA9F1C73B8D +:103A0000B1F1C83BB9F1C93BC1F1CA3BC9F180E092 +:103A100090E038C082EE90E035C089EE90E032C090 +:103A20008AEE90E02FC085EB90E02CC086EB90E012 +:103A300029C087EB90E026C08CEC90E023C08DEC91 +:103A400090E020C083E891E01DC08AE891E01AC0B0 +:103A500082E991E017C084E991E014C081E292E02C +:103A600011C083E292E00EC084E292E00BC085E2D6 +:103A700092E008C086E292E005C087E292E002C0D0 +:103A80008AE292E0CF910C94771BCF91089588231E +:103A900009F44BC0823859F40E943F1B81FF45C096 +:103AA00089E30E949F260E946C2789E30CC083381B +:103AB00071F40E943F1B80FF38C083E50E949F265F +:103AC0000E946C2783E50E94E1260C946C278438C1 +:103AD00059F40E943F1B82FF28C087E40E949F2662 +:103AE0000E946C2787E4EFCF9CEF980F913A58F330 +:103AF00090E2980F983050F4877091E001C0990FD0 +:103B00008A95EAF7892F0E942B27DFCF9BE5980F34 +:103B1000933020F480E090E00C94611B885A83314C +:103B200020F480E090E00C94771B0895882321F026 +:103B30000E9425270C946C270895882321F00E9469 +:103B40002B270C946C270895BF92CF92DF92EF92AF +:103B5000FF920F931F93CF93DF9300D000D000D03C +:103B6000CDB7DEB725E0FC01DE01119601900D9284 +:103B70002A95E1F7FC01D0801181028125812295EF +:103B80002F7043815481452B09F472C31F3F21F4E8 +:103B9000FFEFDF1609F46CC37C012E830E947707C8 +:103BA000D9821A8369817A81802F0E949B26182FDF +:103BB000B92E0E9450260E9417252E81002319F04D +:103BC0000E9442272E81EB2DE295EF70F0E0E25942 +:103BD000FF4F0C94E3318B2D807F9B2D9F70F92E2E +:103BE000882319F0F29480EFF822002389F0FF2057 +:103BF00009F47CC280E2810F883020F48F2D0E946E +:103C0000252703C08F2D0E9435270E946C276EC286 +:103C1000812F0E94471DFF2009F42AC3105E8F2DBB +:103C2000183018F40E942B2702C00E943B272696CA +:103C30000FB6F894DEBF0FBECDBFDF91CF911F91BD +:103C40000F91FF90EF90DF90CF90BF900C946C2776 +:103C50008B2D807F9B2D9F70803211F4892F03C0A4 +:103C6000892F8295807F112319F0113011F12BC01B +:103C70000023A9F0222389F1213079F526960FB689 +:103C8000F894DEBF0FBECDBFDF91CF911F910F9192 +:103C9000FF90EF90DF90CF90BF900C945527222398 +:103CA00019F0213009F4E4C28E830E9458278E81D6 +:103CB0009BC1002321F0263008F0DAC20EC0253067 +:103CC00008F0D6C291C10023C9F0222331F0F701D8 +:103CD000958190FF0BC29F70958326960FB6F8943E +:103CE000DEBF0FBECDBFDF91CF911F910F91FF902F +:103CF000EF90DF90CF90BF900C94961D222309F493 +:103D000073C109C22B2D26952695237030E021150D +:103D1000310521F021303105D1F0AAC2002321F074 +:103D2000812F9B2D937002C080E090E026960FB605 +:103D3000F894DEBF0FBECDBFDF91CF911F910F91E1 +:103D4000FF90EF90DF90CF90BF900C94611B002309 +:103D500021F0812F9B2D937002C080E090E0269689 +:103D60000FB6F894DEBF0FBECDBFDF91CF911F918C +:103D70000F91FF90EF90DF90CF90BF900C94771B46 +:103D8000812F002319F00E948F2902C00E94F72979 +:103D900026960FB6F894DEBF0FBECDBFDF91CF9150 +:103DA0001F910F91FF90EF90DF90CF90BF900C94F8 +:103DB0007C2A8B2D837009F07BC0011159C2812FA1 +:103DC000829586958770880F880F912F9F70C92ED6 +:103DD000D12CE12CF12C082E04C0CC0CDD1CEE1CE7 +:103DE000FF1C0A94D2F714FF12C04FE050E060E0CD +:103DF00070E004C0440F551F661F771F8A95D2F7E5 +:103E0000CB01BA01609570958095909503C060E0F4 +:103E100070E0CB012B2D269526952370422F50E084 +:103E200042305105D9F04330510569F16C297D29A3 +:103E30008E299F294130510551F126960FB6F894ED +:103E4000DEBF0FBECDBFDF91CF911F910F91FF90CD +:103E5000EF90DF90CF90BF900C943E256C297D2988 +:103E60008E299F2926960FB6F894DEBF0FBECDBFD0 +:103E7000DF91CF911F910F91FF90EF90DF90CF9046 +:103E8000BF900C945A250E943E25C701B601269684 +:103E90000FB6F894DEBF0FBECDBFDF91CF911F915B +:103EA0000F91FF90EF90DF90CF90BF900C94222560 +:103EB000002319F08B2D817001C08695882309F4A9 +:103EC000D7C1812F829586958770880F880F912F93 +:103ED0009F70C92ED12CE12CF12C082E04C0CC0CE3 +:103EE000DD1CEE1CFF1C0A94D2F714FF12C04FE039 +:103EF00050E060E070E004C0440F551F661F771F5C +:103F00008A95D2F7CB01BA0160957095809590950E +:103F100003C060E070E0CB012B2D26952695237021 +:103F2000422F50E042305105D9F04330510569F13C +:103F30006C297D298E299F294130510551F1269602 +:103F40000FB6F894DEBF0FBECDBFDF91CF911F91AA +:103F50000F91FF90EF90DF90CF90BF900C941826B8 +:103F60006C297D298E299F2926960FB6F894DEBFED +:103F70000FBECDBFDF91CF911F910F91FF90EF90BA +:103F8000DF90CF90BF900C9434260E941826C70172 +:103F9000B60126960FB6F894DEBF0FBECDBFDF91F7 +:103FA000CF911F910F91FF90EF90DF90CF90BF9036 +:103FB0000C94FC25103F49F118F4103E48F491C0D0 +:103FC000123F09F453C0E8F1133F09F464C089C0FB +:103FD0001F708B2D8F71002321F00E949525812F5A +:103FE0007CCE0E94B625812F26960FB6F894DEBFB0 +:103FF0000FBECDBFDF91CF911F910F91FF90EF903A +:10400000DF90CF90BF900C949D1D0023B1F0253020 +:1040100008F02EC18B2D8F7126960FB6F894DEBF57 +:104020000FBECDBFDF91CF911F910F91FF90EF9009 +:10403000DF90CF90BF900C94DB25263008F018C19C +:10404000E9CF0023A9F08B2D8F7126960FB6F89437 +:10405000DEBF0FBECDBFDF91CF911F910F91FF90BB +:10406000EF90DF90CF90BF900C949525002359F3EB +:104070008B2D8F7126960FB6F894DEBF0FBECDBF85 +:10408000DF91CF911F910F91FF90EF90DF90CF9034 +:10409000BF900C94B625002399F08B2D8F71269636 :1040A0000FB6F894DEBF0FBECDBFDF91CF911F9149 -:1040B0000F91FF90EF90DF90CF90BF900C9465250B -:1040C0000023A9F0222309F4ADCF812F26960FB645 -:1040D000F894DEBF0FBECDBFDF91CF911F910F913E -:1040E000FF90EF90DF90CF90BF900C946E1C222336 -:1040F00009F4ADCF812F26960FB6F894DEBF0FBE20 -:10410000CDBFDF91CF911F910F91FF90EF90DF9086 -:10411000CF90BF900C94361D4B2D4F70612FC7016F -:104120000E948D0526960FB6F894DEBF0FBECDBF58 -:10413000DF91CF911F910F91FF90EF90DF90CF9083 -:10414000BF900C948924011182C09B2D9F70492F30 -:1041500050E04230510509F443C0C4F44115510503 -:1041600071F14130510509F072C026960FB6F894EE -:10417000DEBF0FBECDBFDF91CF911F910F91FF909A -:10418000EF90DF90CF90BF900C946D2D4330510590 -:10419000C1F14430510509F05AC0812F26960FB65F -:1041A000F894DEBF0FBECDBFDF91CF911F910F916D -:1041B000FF90EF90DF90CF90BF900C94BF2D26968C +:1040B0000F91FF90EF90DF90CF90BF900C948025F0 +:1040C00026960FB6F894DEBF0FBECDBFDF91CF911D +:1040D0001F910F91FF90EF90DF90CF90BF900C94C5 +:1040E00076250023A9F0222309F4ADCF812F26964F +:1040F0000FB6F894DEBF0FBECDBFDF91CF911F91F9 +:104100000F91FF90EF90DF90CF90BF900C947F1CA9 +:10411000222309F4ADCF812F26960FB6F894DEBF87 +:104120000FBECDBFDF91CF911F910F91FF90EF9008 +:10413000DF90CF90BF900C94471D4B2D4F70612F97 +:10414000C7010E94690526960FB6F894DEBF0FBE20 +:10415000CDBFDF91CF911F910F91FF90EF90DF9036 +:10416000CF90BF900C949A24011182C09B2D9F7018 +:10417000492F50E04230510509F443C0C4F44115C1 +:10418000510571F14130510509F072C026960FB604 +:10419000F894DEBF0FBECDBFDF91CF911F910F917D +:1041A000FF90EF90DF90CF90BF900C947E2D433026 +:1041B0005105C1F14430510509F05AC0812F2696AE :1041C0000FB6F894DEBF0FBECDBFDF91CF911F9128 -:1041D0000F91FF90EF90DF90CF90BF900C94562DF1 +:1041D0000F91FF90EF90DF90CF90BF900C94D02D77 :1041E00026960FB6F894DEBF0FBECDBFDF91CF91FC :1041F0001F910F91FF90EF90DF90CF90BF900C94A4 -:10420000892D26960FB6F894DEBF0FBECDBFDF9185 +:10420000672D26960FB6F894DEBF0FBECDBFDF91A7 :10421000CF911F910F91FF90EF90DF90CF90BF90C3 -:104220000C949C2D4B2D4F70612FC70126960FB615 -:10423000F894DEBF0FBECDBFDF91CF911F910F91DC -:10424000FF90EF90DF90CF90BF900C949D07269643 +:104220000C949A2D26960FB6F894DEBF0FBECDBF24 +:10423000DF91CF911F910F91FF90EF90DF90CF9082 +:10424000BF900C94AD2D4B2D4F70612FC70126965A :104250000FB6F894DEBF0FBECDBFDF91CF911F9197 -:104260000F91FF90EF90DF90CF90BF9008950E9444 -:1042700031270E9441270E9406270E945B270E9447 -:104280001C2B0E946B2A80E090E00E94501B80E073 -:1042900090E00C94661B0E9421270C9437210E9409 -:1042A0007F26292F22952F7030E02C3031054CF4D9 -:1042B0002A3031056CF4225031092230310588F45E -:1042C00007C02C30310549F02F30310531F009C0DD -:1042D000803E48F0803F29F406C093FB882780F990 -:1042E000089580E0089581E00895CF93DF9300D092 -:1042F00000D01F92CDB7DEB70F900F900F900F90A8 -:104300000F90DF91CF910895CF93DF9300D000D02D -:1043100000D0CDB7DEB726960FB6F894DEBF0FBE3D -:10432000CDBFDF91CF9108951F93CF93DF93C091BD -:10433000990316E080919A03C81799F0D0E01C9F6A -:10434000F0011D9FF00D1124E556FC4F4081518175 -:1043500062817381848195810E9484212196C77036 -:10436000E9CFDF91CF911F9108954091CB035091F8 -:10437000CC036091CD037091CE038091CF039091D7 -:10438000D0030C9484218091D00382958F7009F022 -:1043900054C08091CD03882309F44FC080919903C4 -:1043A000A0919A036091CB037091CC034091CE030E -:1043B0005091CF03B6E08A1709F43FC090E0411551 -:1043C0005105C1F17F3F11F46F3FA1F1B89FF0019A -:1043D000B99FF00D1124E556FC4F218172132AC0BC -:1043E0002081621327C02281211124C023813481BE -:1043F0002417350710F421503109241B350B283CB4 -:104400003105C0F42091D0032F7020612093D00398 -:1044100026E0289FF001299FF00D1124E056FC4F63 -:1044200080818F70806180838BEC93E00E94931D6C -:104430000C94942101968770BECF0895CF92DF929D -:10444000EF92FF920F931F93CF93DF93CDB7DEB719 -:1044500062970FB6F894DEBF0FBECDBF8C0185E02A -:10446000F801DE011D9601900D928A95E1F7D801C1 -:104470004C9111965C91119712966C91129713962C -:10448000CD90DC9014973091CB037091CC03809148 -:10449000CE039091CF03009709F46BC17F3F19F4CD -:1044A0003F3F09F466C1E090CD03EE2009F4C0C09F -:1044B0002091D003C816D90628F0F601E81BF90BA5 -:1044C000CF0104C0809590958C0D9D1DFF24F39421 -:1044D000883C910578F0F12C207F09F0C6C07C2D36 -:1044E000D98AC88A89890E9475218BEC93E00E9441 -:1044F000931DB1C0822F807F09F046C0751314C090 -:10450000341312C0611110C02F7020612093D003AA -:104510000E94B5218BEC93E00E94931D8091D00303 -:10452000D80115968C932EC0CD2819F15F3F11F458 -:104530004F3FF9F0F62E61111CC080919903209134 -:104540009A0336E0821709F45AC090E0389FF001D0 -:10455000399FF00D1124E556FC4F7181571306C0A9 -:104560007081471303C07281711103C00196877077 -:10457000E9CFF62E662309F418C18091D00381603B -:104580008093D003F12C11C1751308C0341306C0F9 -:10459000611104C08091D003D801C3C04D875E87EC -:1045A0008D859E856A8B0E944F216A898823E1F15F -:1045B0006623D1F12091D003822F82958F7090E0F5 -:1045C000029774F08091CB039091CC0398878F83EE -:1045D0001986DB86CA862C87CE0107960E94931D1A -:1045E00086E0F801ABECB3E001900D928A95E1F71B -:1045F0000E94C3210E94B521FF24F394D6C04D87A9 -:104600005E878D859E850E947F26292F22952F709B -:1046100030E0223031050CF0BCC09F7009F0B6C00C -:10462000805E883008F4C1C0C8010E94931DE4CFA9 -:10463000C816D90608F453C0F601E81BF90BCF01E0 -:10464000883C910508F450C0F12C7C2DD98AC88A89 -:1046500089890E947521EBECF3E086E0DF011D9271 -:104660008A95E9F70E94B521A0C0751314C03413D0 -:1046700012C0611110C08091D003F8018583C80178 -:104680000E94931D86E0EBECF3E0DF011D928A951A -:10469000E9F7FE2C8AC04D875E878D859E856A8BE3 -:1046A0000E944F216A89882309F4BECF662309F44A -:1046B000BBCF2091D003822F82958F7090E002971C -:1046C0000CF48ECF8091CB039091CC039A83898395 -:1046D0001B82DD82CC822E83CE0101967FCF809516 -:1046E00090958C0D9D1DACCFF62E662309F49CCFC2 -:1046F00075132EC034132CC02091D00320FD1FC091 -:10470000822F82958F70D9F0D80115962C9315972A -:104710008F3049F08F5F982F9295907F822F8F7006 -:10472000892B15968C93C8010E94931D86E0F80191 -:10473000ABECB3E001900D928A95E1F793CF86E060 -:10474000F801ABECB3E001900D928A95E1F72DC032 -:104750004D875E878D859E850E944F21811140CFB8 -:104760008091D00381608093D003C8010E94931D83 -:104770001CC0662309F458CF4D875E878D859E85C2 -:104780000E944F21882309F44FCF2ACF811148CFAF -:104790000CC0243031050CF047CF9F7009F440CF96 -:1047A000F8019581907F09F03BCF8F2D62960FB66F -:1047B000F894DEBF0FBECDBFDF91CF911F910F9157 -:1047C000FF90EF90DF90CF9008951F93CF93DF93EA -:1047D000CDB7DEB72C970FB6F894DEBF0FBECDBFB6 -:1047E0004F83588769877A878B879C87CE01079686 -:1047F0000E941E22882369F08F8198852A853B8537 -:10480000232BF1F19F3F09F063C08F3F09F060C097 -:1048100037C086E0FE013796DE01119601900D92B9 -:104820008A95E1F76F817885EA85FB85309741F1BC -:104830007F3F11F46F3F21F120919A0330E0C901CD -:104840000196877099274091990350E08417950746 -:1048500009F447C069837A83FD83EC8396E0929FD5 -:10486000D001939FB00D1124A556BC4FFE01319687 -:1048700001900D929A95E1F780939A030E949421FA -:1048800016E08091990390919A038917C1F1189FBE -:10489000C001112485569C4F0E941E22882379F165 -:1048A000E09199031E9FF0011124E556FC4F4081D1 -:1048B000518162817381848195810E9484218091DC -:1048C000990390E001968770992780939903D9CF37 -:1048D0004F81588569857A858B859C850E948421C6 -:1048E000CFCF0E944B2110929A0310929903EBECC8 -:1048F000F3E086E0DF011D928A95E9F7C1CF2C969F -:104900000FB6F894DEBF0FBECDBFDF91CF911F91E0 -:104910000895EF92FF920F931F93CF93DF938C0133 -:10492000009709F46CC0F12CEE24E394E801219681 -:10493000F8018491843740F4843008F051C081300C -:1049400081F0823019F15BC0853709F444C0A8F1C9 -:104950009CE7980F903708F052C08F770E94361D61 -:1049600041C00E5F1F4FFE01C49180E28C0F883062 -:1049700048F4C7708E2D01C0880FCA95EAF70E94CF -:10498000342714C08C2F0E946E1C2DC00E5F1F4F49 -:10499000FE01C49180E28C0F883058F4C7708E2DD0 -:1049A00001C0880FCA95EAF70E943A270E945B2748 -:1049B0001AC08C2F0E94361D16C00E5F1F4FFE01BD -:1049C000C491CC2381F08FE99FE00197F1F700C0FB -:1049D0000000C150F6CF0E5F1F4FFE01F49003C0E0 -:1049E0000E946E1C8E018F2D882309F49FCFEFE962 -:1049F000FFE03197F1F700C000008150F5CFDF9163 -:104A0000CF911F910F91FF90EF90089508956093BB -:104A1000D5037093D6038093D7039093D8030C9457 -:104A200037210F931F930091D5031091D603209146 -:104A3000D7033091D803DC01CB01802B912BA22B23 -:104A4000B32B8093D5039093D603A093D703B09351 -:104A5000D8031F910F910C9437210F931F9300914E -:104A6000D5031091D6032091D7033091D803DC01F0 -:104A7000CB0180239123A223B3238093D50390936A -:104A8000D603A093D703B093D8031F910F910C9432 -:104A900037210F931F930091D5031091D6032091D6 -:104AA000D7033091D803DC01CB0180279127A227BF -:104AB000B3278093D5039093D603A093D703B093E5 -:104AC000D8031F910F910C9437211092D1031092AB -:104AD000D2031092D3031092D4030C94372141E0F7 -:104AE00050E060E070E004C0440F551F661F771F60 -:104AF0008A95D2F74093D1035093D2036093D303A6 -:104B00007093D4030C94372141E050E060E070E0F2 -:104B100004C0440F551F661F771F8A95D2F78091F6 -:104B2000D1039091D203A091D303B091D403482B29 -:104B3000592B6A2B7B2B4093D1035093D203609364 -:104B4000D3037093D4030C94372141E050E060E02C -:104B500070E004C0440F551F661F771F8A95D2F777 -:104B600040955095609570958091D1039091D203B6 -:104B7000A091D303B091D403482359236A237B2304 -:104B80004093D1035093D2036093D3037093D40323 -:104B90000C94372141E050E060E070E004C0440F25 -:104BA000551F661F771F8A95D2F78091D103909188 -:104BB000D203A091D303B091D403482759276A2781 -:104BC0007B274093D1035093D2036093D303709318 -:104BD000D4030C9437210F931F930091D1031091AC -:104BE000D2032091D3033091D403DC01CB01802B7D -:104BF000912BA22BB32B8093D1039093D203A0933C -:104C0000D303B093D4031F910F910C9437210F93CA -:104C10001F930091D1031091D2032091D3033091BF -:104C2000D403DC01CB0180239123A223B3238093FF -:104C3000D1039093D203A093D303B093D4031F91D5 -:104C40000F910C9437210F931F930091D103109172 -:104C5000D2032091D3033091D403DC01CB01802710 -:104C60009127A227B3278093D1039093D203A093D7 -:104C7000D303B093D4031F910F910C94372108955F -:104C8000CF92DF92EF92FF920F931F93CF93DF9318 -:104C90008C01C090D503D090D603E090D703F0905C -:104CA000D8038091D1039091D203A091D303B09106 -:104CB000D403C82AD92AEA2AFB2ACFE1D0E0D701B7 -:104CC000C6010C2E04C0B695A795979587950A94B2 -:104CD000D2F780FF06C0B8018C2F0E94F709019718 -:104CE00021F4219760F780E001C08C2FDF91CF91F4 -:104CF0001F910F91FF90EF90DF90CF900895CF9389 -:104D0000DF93EC010E944026BE010E94F709DF916B -:104D1000CF910895CB010E947F260895909186023D -:104D2000992321F090918702911109C02091880266 -:104D300030918902F90132969FEF40E01FC0982F11 -:104D40009695969596959F3050F5E0918802F09152 -:104D50008902E90FF11D877021E030E0A90102C04E -:104D6000440F551F8A95E2F7CA019181892B8183EF -:104D700008959F3F39F04F5F4E3041F051915813E5 -:104D8000F8CF0DC05111F7CF942FF5CF9F3F39F0D9 -:104D9000F901E90FF11D97FDFA95828308950895B1 -:104DA00090918602992321F090918702911109C078 -:104DB0002091880230918902F9013296205F3F4F9D -:104DC0001FC0982F9695969596959F30F0F4E09198 -:104DD0008802F0918902E90FF11D877021E030E02F -:104DE000A90102C0440F551F8A95E2F7CA018095B8 -:104DF00091818923818308953196E217F30729F081 -:104E000090819813F9CF1082F7CF089581E090E058 -:104E1000E0918802F0918902E80FF91F1082019653 -:104E200080319105A9F708959091EC03892B809327 -:104E3000EC03089580959091EC0389238093EC0313 -:104E400008951092EC0308959091EB03892B8093C1 -:104E5000EB03089580959091EB0389238093EB03F6 -:104E600008951092EB0308959091EA03892B8093A3 -:104E7000EA03089580959091EA0389238093EA03D9 -:104E800008951092EA0308958093D903089510922B -:104E9000D90308958091880290918902FC0131968E -:104EA0009C01205F3F4F80E0919191118F5FE2174D -:104EB000F307D1F70895E0918802F091890280917B -:104EC000EC038083E0918802F091890290818091C7 -:104ED000EB03892B8083E0918802F0918902908115 -:104EE0008091EA03892B80838091D903882361F024 -:104EF000E0918802F09189029081892B80830E9441 -:104F00004A2781111092D9038091880290918902D9 -:104F10000C943A1B80910E04843039F11092EE0308 -:104F200020E488E190E00FB6F894A89580936000A3 -:104F30000FBE2093600080E00E94540580E00E9434 -:104F4000D20A83B7817F846083BF83B7816083BFC8 -:104F50007894889583B78E7F83BF88E10FB6F894E5 -:104F600080936000109260000FBE08950895089528 -:104F7000CF9380E00E9454050E94B6270E94890CBE -:104F80000E94B727C0E08C2F0E94D20D892B29F4F4 -:104F9000CF5FC430C1F780E001C081E0CF910895B8 -:104FA0000E944B2180E00E9454050E94452D0E94E2 -:104FB0002E1B0C94D20A1F920F920FB60F9211243F -:104FC0008F939F93AF93BF938091EE03811113C092 -:104FD0008091EF039091F003A091F103B091F2035F -:104FE0004196A11DB11D8093EF039093F003A09310 -:104FF000F103B093F203BF91AF919F918F910F9006 -:105000000FBE0F901F90189582E084BD93E095BD70 -:105010009AEF97BD80936E0008952FB7F894809112 -:10502000EF039091F003A091F103B091F2032FBF31 -:105030000895CF92DF92EF92FF920F931F932FB7B5 -:10504000F8944091EF035091F0036091F103709157 -:10505000F2032FBF6A017B01EE24FF248C0120E0C4 -:1050600030E0C016D106E206F30610F441505109B3 -:105070009A01281B390BC9011F910F91FF90EF90E6 -:10508000DF90CF9008951F920F920FB60F921124C8 -:105090008F939F93AF93BF938091EF039091F00311 -:1050A000A091F103B091F2030196A11DB11D80936F -:1050B000EF039093F003A093F103B093F203BF9139 -:1050C000AF919F918F910F900FBE0F901F901895E9 -:1050D0000E942B18F8942FEF87EA91E62150804028 -:1050E0009040E1F700C0000087E090EBDC01809386 -:1050F000190490931A04A0931B04B0931C049CE021 -:1051000088E10FB6F894A895809360000FBE909345 -:105110006000FFCF0E94C928811102C00E94A5280B -:105120000E94D4288093ED030E94E1288093170405 -:1051300087FB882780F9809387020E94D828682FF0 -:1051400070E080E090E00C9407256DEE7EEF80E04B -:1051500090E00E94AA3160E082E090E00E949831E5 -:1051600060E083E090E00E94983160E084E090E0AD -:105170000E94983160E085E090E00E94983160E004 -:1051800086E090E00E9498316FEF87E090E00C9409 -:10519000983180E090E00E94923121E08D3E9E4F58 -:1051A00009F020E0822F089582E090E00C948A318B -:1051B00083E090E00C948A31682F83E090E00C94B7 -:1051C000983184E090E00C948A31682F84E090E07C -:1051D0000C94983186E090E00C948A31682F86E038 -:1051E00090E00C94983187E090E00C948A31682F1D -:1051F00087E090E00C9498318091F50380FF0BC01C -:1052000060918D0285E0689FB001112475956795C6 -:10521000759567952BC081FF09C060918D0285E06F -:10522000689FB00111247595679520C082FF07C063 -:1052300060918D0285E0689FB001112417C09091A4 -:10524000F6039923D1F060918C02961788F720918C -:105250008D0285E0289F90011124929FA001939FC9 -:10526000500D112470E0CA010E9470316038710540 -:1052700040F46115710539F002C065E070E0862FD9 -:1052800008958FE7089581E008958091F50380FFE8 -:1052900008C060918B0270E075956795759567956C -:1052A00021C081FF06C060918B0270E07595679503 -:1052B00019C082FF04C060918B0270E010C0909111 -:1052C000F6039923C1F060918A029617A0F78091A6 -:1052D0008B02899FC001112470E00E9470316038F8 -:1052E000710528F46115710521F0862F08958FE767 -:1052F000089581E0089561E070E0F4CF803F21F4EB -:105300000E94FC28819504C0813F29F40E94FC285A -:105310008093F9030895823F21F40E94FC2881952F -:1053200004C0833F29F40E94FC288093F803089569 -:10533000893F19F40E94452905C08A3F31F40E9433 -:10534000452981958093FA0308958B3F21F40E94AB -:105350004529819504C08C3F29F40E9445298093FA -:10536000FB030895843F21F48091F703816017C007 -:10537000853F21F48091F703826011C0863F21F4BC -:105380008091F70384600BC0873F21F48091F7037D -:10539000886005C0883F31F48091F7038061809375 -:1053A000F70308958D3F21F48091F50381600BC0D0 -:1053B0008E3F21F48091F503826005C08F3F29F470 -:1053C0008091F50384608093F5030895803F39F45C -:1053D0008091F90387FF6CC01092F90369C0813F87 -:1053E00029F48091F9031816BCF362C09091F80378 -:1053F000823F29F497FF5CC01092F80359C0833FA5 -:1054000019F41916CCF354C0893F41F48091FA0382 -:1054100018160CF04DC01092FA034AC08A3F29F4C6 -:105420008091FA0387FF44C0F6CF8B3F39F4809117 -:10543000FB0387FF3DC01092FB033AC08C3F29F469 -:105440008091FB031816BCF333C0843F21F4809194 -:10545000F7038E7F17C0853F21F48091F7038D7F7E -:1054600011C0863F21F48091F7038B7F0BC0873FEB -:1054700021F48091F703877F05C0883F31F4809144 -:10548000F7038F7E8093F70313C08D3F21F4809143 -:10549000F5038E7F0BC08E3F21F48091F5038D7F45 -:1054A00005C08F3F29F48091F5038B7F8093F5032E -:1054B0008091F80381110EC08091F90381110AC017 -:1054C0008091FA03811106C08091FB03811102C013 -:1054D0001092F603089587EF93E00E94451B0E9407 -:1054E0000D289093F4038093F30308951F93CF93B3 -:1054F000DF938091F3039091F4030E941928AC018B -:105500009091F603992321F020918E0230E006C09D -:1055100020918F028AE0289F90011124421753079F -:1055200008F486C08091F803C091F903D091FA0382 -:105530001091FB03811107C0C11176C0D11174C055 -:10554000111172C075C09F3F19F09F5F9093F603D1 -:10555000181624F40E94FC288093F8038091F80325 -:1055600087FF05C00E94FC2881958093F8031C16D4 -:1055700024F40E94FC288093F9038091F90387FFAB -:1055800005C00E94FC2881958093F9036091F8037F -:10559000662339F1C091F903CC2319F1772767FD10 -:1055A0007095872F972F0E94E02E23E333E343E388 -:1055B0005FE30E94942F0E94AD2E6093F8036C2F3E -:1055C000772767FD7095872F972F0E94E02E23E3A2 -:1055D00033E343E35FE30E94942F0E94AD2E609378 -:1055E000F9031D1624F40E9445298093FA03809143 -:1055F000FA0387FF05C00E94452981958093FA032D -:10560000111624F40E9445298093FB038091FB032B -:1056100087FF05C00E94452981958093FB03DF9198 -:10562000CF911F910C946B2A9F3F09F08ECF96CF9C -:10563000DF91CF911F910895E7EFF3E085E0DF015F -:105640001D928A95E9F71092F6031092F5030895DA -:10565000833081F128F4813059F08230D1F00895FF -:10566000853009F449C0B8F1863009F456C0089570 -:1056700080918F02262F30E0280F311D2F3F3105FA -:1056800024F4680F60938F0208958FEF80938F0248 -:10569000089580918E02262F30E0280F311D2F3F74 -:1056A000310524F4680F60938E0208958FEF809384 -:1056B0008E02089580918D02262F30E0280F311D33 -:1056C0002F3F310524F4680F60938D0208958FEF0A -:1056D00080938D02089580918C02262F30E0280F50 -:1056E000311D2F3F310524F4680F60938C0208951B -:1056F0008FEF80938C02089580918B02262F30E0EB -:10570000280F311D2F3F310524F4680F60938B0261 -:1057100008958FEF80938B02089580918A02262F3F +:104260000F91FF90EF90DF90CF90BF900C94790763 +:1042700026960FB6F894DEBF0FBECDBFDF91CF916B +:104280001F910F91FF90EF90DF90CF90BF90089516 +:104290000E9442270E9452270E9417270E946C27E3 +:1042A0000E942D2B0E947C2A80E090E00E94611BDE +:1042B00080E090E00C94771B0E9432270C944821F8 +:1042C0000E949026292F22952F7030E02C30310546 +:1042D0004CF42A3031056CF422503109223031057A +:1042E00088F407C02C30310549F02F30310531F00A +:1042F00009C0803E48F0803F29F406C093FB882720 +:1043000080F9089580E0089581E00895CF93DF93C8 +:1043100000D000D01F92CDB7DEB70F900F900F9056 +:104320000F900F90DF91CF910895CF93DF9300D03E +:1043300000D000D0CDB7DEB726960FB6F894DEBF1A +:104340000FBECDBFDF91CF9108951F93CF93DF9321 +:10435000C091E90316E08091EA03C81799F0D0E014 +:104360001C9FF0011D9FF00D1124E551FC4F408171 +:10437000518162817381848195810E94952121966A +:10438000C770E9CFDF91CF911F91089540911B0431 +:1043900050911C0460911D0470911E0480911F04B3 +:1043A000909120040C9495218091200482958F7027 +:1043B00009F054C080911D04882309F44FC08091F6 +:1043C000E903A091EA0360911B0470911C044091E1 +:1043D0001E0450911F04B6E08A1709F43FC090E014 +:1043E00041155105C1F17F3F11F46F3FA1F1B89F15 +:1043F000F001B99FF00D1124E551FC4F218172139A +:104400002AC02081621327C02281211124C0238168 +:1044100034812417350710F421503109241B350B42 +:10442000283C3105C0F4209120042F702061209396 +:10443000200426E0289FF001299FF00D1124E0516F +:10444000FC4F80818F70806180838BE194E00E94BB +:10445000A41D0C94A52101968770BECF0895CF921C +:10446000DF92EF92FF920F931F93CF93DF93CDB71D +:10447000DEB762970FB6F894DEBF0FBECDBF8C01DA +:1044800085E0F801DE011D9601900D928A95E1F715 +:10449000D8014C9111965C91119712966C911297DC +:1044A0001396CD90DC90149730911B0470911C04EE +:1044B00080911E0490911F04009709F46BC17F3F07 +:1044C00019F43F3F09F466C1E0901D04EE2009F4A1 +:1044D000C0C020912004C816D90628F0F601E81BB8 +:1044E000F90BCF0104C0809590958C0D9D1DFF2484 +:1044F000F394883C910578F0F12C207F09F0C6C038 +:104500007C2DD98AC88A89890E9486218BE194E012 +:104510000E94A41DB1C0822F807F09F046C0751390 +:1045200014C0341312C0611110C02F702061209389 +:1045300020040E94C6218BE194E00E94A41D80917A +:104540002004D80115968C932EC0CD2819F15F3F19 +:1045500011F44F3FF9F0F62E61111CC08091E90370 +:104560002091EA0336E0821709F45AC090E0389FA0 +:10457000F001399FF00D1124E551FC4F7181571363 +:1045800006C07081471303C07281711103C0019688 +:104590008770E9CFF62E662309F418C180912004B4 +:1045A000816080932004F12C11C1751308C034136D +:1045B00006C0611104C080912004D801C3C04D879A +:1045C0005E878D859E856A8B0E9460216A8988231B +:1045D000E1F16623D1F120912004822F82958F7022 +:1045E00090E0029774F080911B0490911C049887CE +:1045F0008F831986DB86CA862C87CE0107960E9498 +:10460000A41D86E0F801ABE1B4E001900D928A951B +:10461000E1F70E94D4210E94C621FF24F394D6C062 +:104620004D875E878D859E850E949026292F229535 +:104630002F7030E0223031050CF0BCC09F7009F0C3 +:10464000B6C0805E883008F4C1C0C8010E94A41DB5 +:10465000E4CFC816D90608F453C0F601E81BF90BDD +:10466000CF01883C910508F450C0F12C7C2DD98AEB +:10467000C88A89890E948621EBE1F4E086E0DF01A7 +:104680001D928A95E9F70E94C621A0C0751314C037 +:10469000341312C0611110C080912004F801858389 +:1046A000C8010E94A41D86E0EBE1F4E0DF011D9249 +:1046B0008A95E9F7FE2C8AC04D875E878D859E8599 +:1046C0006A8B0E9460216A89882309F4BECF662321 +:1046D00009F4BBCF20912004822F82958F7090E047 +:1046E00002970CF48ECF80911B0490911C049A8346 +:1046F00089831B82DD82CC822E83CE0101967FCFFF +:10470000809590958C0D9D1DACCFF62E662309F4F7 +:104710009CCF75132EC034132CC02091200420FD93 +:104720001FC0822F82958F70D9F0D80115962C93D7 +:1047300015978F3049F08F5F982F9295907F822F39 +:104740008F70892B15968C93C8010E94A41D86E05A +:10475000F801ABE1B4E001900D928A95E1F793CFB7 +:1047600086E0F801ABE1B4E001900D928A95E1F7A3 +:104770002DC04D875E878D859E850E9460218111A9 +:1047800040CF80912004816080932004C8010E9462 +:10479000A41D1CC0662309F458CF4D875E878D8504 +:1047A0009E850E946021882309F44FCF2ACF811172 +:1047B00048CF0CC0243031050CF047CF9F7009F46E +:1047C00040CFF8019581907F09F03BCF8F2D629605 +:1047D0000FB6F894DEBF0FBECDBFDF91CF911F9112 +:1047E0000F91FF90EF90DF90CF9008951F93CF939C +:1047F000DF93CDB7DEB72C970FB6F894DEBF0FBEB0 +:10480000CDBF4F83588769877A878B879C87CE0176 +:1048100007960E942F22882369F08F8198852A8528 +:104820003B85232BF1F19F3F09F063C08F3F09F0D7 +:1048300060C037C086E0FE013796DE011196019018 +:104840000D928A95E1F76F817885EA85FB8530972F +:1048500041F17F3F11F46F3F21F12091EA0330E0F5 +:10486000C9010196877099274091E90350E08417A8 +:10487000950709F447C069837A83FD83EC8396E04A +:10488000929FD001939FB00D1124A551BC4FFE0102 +:10489000319601900D929A95E1F78093EA030E9478 +:1048A000A52116E08091E9039091EA038917C1F1EF +:1048B000189FC001112485519C4F0E942F228823EC +:1048C00079F1E091E9031E9FF0011124E551FC4FBD +:1048D0004081518162817381848195810E949521FB +:1048E0008091E90390E00196877099278093E9030E +:1048F000D9CF4F81588569857A858B859C850E94A3 +:104900009521CFCF0E945C211092EA031092E90317 +:10491000EBE1F4E086E0DF011D928A95E9F7C1CF73 +:104920002C960FB6F894DEBF0FBECDBFDF91CF91AE +:104930001F910895EF92FF920F931F93CF93DF93F0 +:104940008C01009709F46CC0F12CEE24E394E8018B +:104950002196F8018491843740F4843008F051C0E6 +:10496000813081F0823019F15BC0853709F444C091 +:10497000A8F19CE7980F903708F052C08F770E94FB +:10498000471D41C00E5F1F4FFE01C49180E28C0F96 +:10499000883048F4C7708E2D01C0880FCA95EAF799 +:1049A0000E94452714C08C2F0E947F1C2DC00E5FD3 +:1049B0001F4FFE01C49180E28C0F883058F4C770FD +:1049C0008E2D01C0880FCA95EAF70E944B270E94DE +:1049D0006C271AC08C2F0E94471D16C00E5F1F4FF8 +:1049E000FE01C491CC2381F08FE99FE00197F1F79C +:1049F00000C00000C150F6CF0E5F1F4FFE01F490C3 +:104A000003C00E947F1C8E018F2D882309F49FCF45 +:104A1000EFE9FFE03197F1F700C000008150F5CFDA +:104A2000DF91CF911F910F91FF90EF90089508951E +:104A300060932504709326048093270490932804A0 +:104A40000C9448210F931F93009125041091260484 +:104A50002091270430912804DC01CB01802B912B7D +:104A6000A22BB32B8093250490932604A0932704B4 +:104A7000B09328041F910F910C9448210F931F931A +:104A800000912504109126042091270430912804D8 +:104A9000DC01CB0180239123A223B323809325043F +:104AA00090932604A0932704B09328041F910F919C +:104AB0000C9448210F931F93009125041091260414 +:104AC0002091270430912804DC01CB018027912715 +:104AD000A227B3278093250490932604A09327044C +:104AE000B09328041F910F910C9448211092210437 +:104AF0001092220410922304109224040C94482152 +:104B000041E050E060E070E004C0440F551F661FB4 +:104B1000771F8A95D2F74093210450932204609323 +:104B20002304709324040C94482141E050E060E099 +:104B300070E004C0440F551F661F771F8A95D2F797 +:104B40008091210490912204A0912304B091240427 +:104B5000482B592B6A2B7B2B409321045093220422 +:104B600060932304709324040C94482141E050E0A6 +:104B700060E070E004C0440F551F661F771F8A95E0 +:104B8000D2F7409550956095709580912104909151 +:104B90002204A0912304B0912404482359236A23BA +:104BA0007B23409321045093220460932304709349 +:104BB00024040C94482141E050E060E070E004C01F +:104BC000440F551F661F771F8A95D2F780912104E5 +:104BD00090912204A0912304B091240448275927DE +:104BE0006A277B2740932104509322046093230477 +:104BF000709324040C9448210F931F930091210477 +:104C0000109122042091230430912404DC01CB0173 +:104C1000802B912BA22BB32B809321049093220401 +:104C2000A0932304B09324041F910F910C94482166 +:104C30000F931F93009121041091220420912304CB +:104C400030912404DC01CB0180239123A223B323E0 +:104C50008093210490932204A0932304B09324040E +:104C60001F910F910C9448210F931F9300912104E1 +:104C7000109122042091230430912404DC01CB0103 +:104C800080279127A227B3278093210490932204A1 +:104C9000A0932304B09324041F910F910C944821F6 +:104CA0000895CF92DF92EF92FF920F931F93CF93CD +:104CB000DF938C01C0902504D0902604E090270457 +:104CC000F09028048091210490912204A091230463 +:104CD000B0912404C82AD92AEA2AFB2ACFE1D0E0DD +:104CE000D701C6010C2E04C0B695A7959795879558 +:104CF0000A94D2F780FF06C0B8018C2F0E94D30916 +:104D0000019721F4219760F780E001C08C2FDF919B +:104D1000CF911F910F91FF90EF90DF90CF9008956A +:104D2000CF93DF93EC010E945126BE010E94D3096C +:104D3000DF91CF910895CB010E9490260895909124 +:104D40008402992321F090918502911109C020914C +:104D5000860230918702F90132969FEF40E01FC032 +:104D6000982F9695969596959F3050F5E0918602EE +:104D7000F0918702E90FF11D877021E030E0A90171 +:104D800002C0440F551F8A95E2F7CA019181892B11 +:104D9000818308959F3F39F04F5F4E3041F051912C +:104DA0005813F8CF0DC05111F7CF942FF5CF9F3F77 +:104DB00039F0F901E90FF11D97FDFA958283089505 +:104DC000089590918402992321F090918502911188 +:104DD00009C02091860230918702F9013296205F46 +:104DE0003F4F1FC0982F9695969596959F30F0F45B +:104DF000E0918602F0918702E90FF11D877021E0B2 +:104E000030E0A90102C0440F551F8A95E2F7CA019C +:104E1000809591818923818308953196E217F30764 +:104E200029F090819813F9CF1082F7CF089581E08F +:104E300090E0E0918602F0918702E80FF91F10825E +:104E4000019680319105A9F7089590913C04892B32 +:104E500080933C040895809590913C04892380932D +:104E60003C04089510923C04089590913B04892BD2 +:104E700080933B040895809590913B04892380930F +:104E80003B04089510923B04089590913A04892BB5 +:104E900080933A040895809590913A0489238093F1 +:104EA0003A04089510923A040895809329040895CD +:104EB0001092290408958091860290918702FC0146 +:104EC00031969C01205F3F4F80E0919191118F5F5F +:104ED000E217F307D1F70895E0918602F091870277 +:104EE00080913C048083E0918602F091870290815A +:104EF00080913B04892B8083E0918602F0918702A8 +:104F0000908180913A04892B8083809129048823A1 +:104F100061F0E0918602F09187029081892B808375 +:104F20000E945B2781111092290480918602909142 +:104F300087020C944B1B80915E04843039F11092EF +:104F40003E0420E488E190E00FB6F894A8958093A1 +:104F500060000FBE2093600080E00E94300580E07A +:104F60000E94AE0A83B7817F846083BF83B781606C +:104F700083BF7894889583B78E7F83BF88E10FB60F +:104F8000F89480936000109260000FBE0895089519 +:104F90000895CF9380E00E9430050E94C7270E94A9 +:104FA000650C0E94C827C0E08C2F0E94AE0D892B93 +:104FB00029F4CF5FC430C1F780E001C081E0CF9118 +:104FC00008950E945C2180E00E9430050E94562DC9 +:104FD0000E943F1B0C94AE0A1F920F920FB60F92C5 +:104FE00011248F939F93AF93BF9380913E048111BF +:104FF00013C080913F0490914004A0914104B0916E +:1050000042044196A11DB11D80933F04909340043A +:10501000A0934104B0934204BF91AF919F918F91AF +:105020000F900FBE0F901F90189582E084BD93E003 +:1050300095BD9AEF97BD80936E0008952FB7F894B1 +:1050400080913F0490914004A0914104B0914204AA +:105050002FBF0895CF92DF92EF92FF920F931F938D +:105060002FB7F89440913F0450914004609141045F +:10507000709142042FBF6A017B01EE24FF248C0152 +:1050800020E030E0C016D106E206F30610F44150ED +:1050900051099A01281B390BC9011F910F91FF90EB +:1050A000EF90DF90CF9008951F920F920FB60F925E +:1050B00011248F939F93AF93BF9380913F0490915E +:1050C0004004A0914104B09142040196A11DB11D7C +:1050D00080933F0490934004A0934104B093420412 +:1050E000BF91AF919F918F910F900FBE0F901F9026 +:1050F00018950E943C18F8942FEF87EA91E621500A +:1051000080409040E1F700C0000087E090EBDC01B8 +:105110008093690490936A04A0936B04B0936C0429 +:105120009CE088E10FB6F894A895809360000FBECC +:1051300090936000FFCF0E94DA28811102C00E9484 +:10514000B6280E94E52880933D040E94F2288093AF +:10515000670487FB882780F9809385020E94E928ED +:10516000682F70E080E090E00C9418256DEE7EEFE3 +:1051700080E090E00E94093260E082E090E00E94CE +:10518000F73160E083E090E00E94F73160E084E076 +:1051900090E00E94F73160E085E090E00E94F731F6 +:1051A00060E086E090E00E94F7316FEF87E090E0EA +:1051B0000C94F73180E090E00E94F13121E08D3EC7 +:1051C0009E4F09F020E0822F089582E090E00C9439 +:1051D000E93183E090E00C94E931682F83E090E0BE +:1051E0000C94F73184E090E00C94E931682F84E06E +:1051F00090E00C94F73186E090E00C94E931682F50 +:1052000086E090E00C94F73187E090E00C94E9316F +:10521000682F87E090E00C94F7318091450480FF7F +:105220000BC060918B0285E0689FB00111247595D9 +:105230006795759567952BC081FF09C060918B02BA +:1052400085E0689FB00111247595679520C082FFA5 +:1052500007C060918B0285E0689FB001112417C0E0 +:10526000909146049923D1F060918A02961788F7AD +:1052700020918B0285E0289F90011124929FA0012C +:10528000939F500D112470E0CA010E94CF31603805 +:10529000710540F46115710539F002C065E070E0F8 +:1052A000862F08958FE7089581E008958091450441 +:1052B00080FF08C06091890270E0759567957595CB +:1052C000679521C081FF06C06091890270E07595E5 +:1052D000679519C082FF04C06091890270E010C018 +:1052E000909146049923C1F0609188029617A0F727 +:1052F00080918902899FC001112470E00E94CF3102 +:105300006038710528F46115710521F0862F089524 +:105310008FE7089581E0089561E070E0F4CF803F69 +:1053200021F40E940D29819504C0813F29F40E9437 +:105330000D29809349040895823F21F40E940D298C +:10534000819504C0833F29F40E940D29809348046D +:105350000895893F19F40E94562905C08A3F31F407 +:105360000E945629819580934A0408958B3F21F429 +:105370000E945629819504C08C3F29F40E94562929 +:1053800080934B040895843F21F480914704816009 +:1053900017C0853F21F480914704826011C0863F89 +:1053A00021F48091470484600BC0873F21F48091F1 +:1053B0004704886005C0883F31F4809147048061CC +:1053C0008093470408958D3F21F4809145048160C6 +:1053D0000BC08E3F21F480914504826005C08F3F51 +:1053E00029F4809145048460809345040895803FAA +:1053F00039F48091490487FF6CC01092490469C058 +:10540000813F29F4809149041816BCF362C0909141 +:105410004804823F29F497FF5CC01092480459C0A9 +:10542000833F19F41916CCF354C0893F41F480919D +:105430004A0418160CF04DC010924A044AC08A3F24 +:1054400029F480914A0487FF44C0F6CF8B3F39F49A +:1054500080914B0487FF3DC010924B043AC08C3FB3 +:1054600029F480914B041816BCF333C0843F21F417 +:10547000809147048E7F17C0853F21F480914704B7 +:105480008D7F11C0863F21F4809147048B7F0BC034 +:10549000873F21F480914704877F05C0883F31F41E +:1054A000809147048F7E8093470413C08D3F21F481 +:1054B000809145048E7F0BC08E3F21F4809145047E +:1054C0008D7F05C08F3F29F4809145048B7F8093A9 +:1054D00045048091480481110EC0809149048111D6 +:1054E0000AC080914A04811106C080914B04811149 +:1054F00002C010924604089587E494E00E94561B6F +:105500000E941E28909344048093430408951F939F +:10551000CF93DF9380914304909144040E942A2802 +:10552000AC0190914604992321F020918C0230E047 +:1055300006C020918D028AE0289F90011124421715 +:10554000530708F486C080914804C0914904D09163 +:105550004A0410914B04811107C0C11176C0D111CA +:1055600074C0111172C075C09F3F19F09F5F909376 +:105570004604181624F40E940D2980934804809153 +:10558000480487FF05C00E940D2981958093480437 +:105590001C1624F40E940D2980934904809149042B +:1055A00087FF05C00E940D29819580934904609171 +:1055B0004804662339F1C0914904CC2319F17727B7 +:1055C00067FD7095872F972F0E94F12E23E333E319 +:1055D00043E35FE30E9401300E94BE2E60934804C3 +:1055E0006C2F772767FD7095872F972F0E94F12EDC +:1055F00023E333E343E35FE30E9401300E94BE2EC6 +:10560000609349041D1624F40E94562980934A048D +:1056100080914A0487FF05C00E9456298195809396 +:105620004A04111624F40E94562980934B04809159 +:105630004B0487FF05C00E945629819580934B0437 +:10564000DF91CF911F910C947C2A9F3F09F08ECF60 +:1056500096CFDF91CF911F910895E7E4F4E085E0C4 +:10566000DF011D928A95E9F71092460410924504D5 +:105670000895833081F128F4813059F08230D1F0DF +:105680000895853009F449C0B8F1863009F456C050 +:10569000089580918D02262F30E0280F311D2F3F75 +:1056A000310524F4680F60938D0208958FEF809385 +:1056B0008D02089580918C02262F30E0280F311D35 +:1056C0002F3F310524F4680F60938C0208958FEF0B +:1056D00080938C02089580918B02262F30E0280F52 +:1056E000311D2F3F310524F4680F60938B0208951C +:1056F0008FEF80938B02089580918A02262F30E0ED +:10570000280F311D2F3F310524F4680F60938A0262 +:1057100008958FEF80938A02089580918902262F41 :1057200030E0280F311D2F3F310524F4680F6093BE -:105730008A0208958FEF80938A020895833011F1D1 -:1057400028F4813049F0823091F00895853081F15C -:1057500020F18630C1F1089580918F02681720F4FE -:10576000861B80938F02089510928F020895809176 -:105770008E02681720F4861B80938E020895109283 -:105780008E02089580918D02681720F4861B809305 -:105790008D02089510928D02089580918C026817F1 -:1057A00020F4861B80938C02089510928C02089539 -:1057B00080918B02681720F4861B80938B020895DA -:1057C00010928B02089580918A02681720F4861B3C -:1057D00080938A02089510928A0208950F931F936E -:1057E000873208F048C08E3108F094C0803109F447 -:1057F0007EC008F5873009F468C068F4863009F087 -:10580000A4C08091ED03817F8E7F8093ED0381E0C2 -:105810008093FD039BC08B3009F490C08E3009F05B -:1058200094C08091ED0382FB222720F991E092271A -:1058300090FB82F965C0863109F480C060F4813143 -:1058400009F083C00E944B219091870281E0892753 -:105850008093870273C0893109F470C08B3109F0DD -:1058600074C08091ED0381FB222720F991E09227FB -:1058700090FB81F945C0883309F460C050F4893247 -:1058800009F45EC0853309F45BC0873209F458C05F -:105890005CC0833409F454C028F48A3308F455C03A -:1058A000895339C0883409F050C00E944B210E94AE -:1058B00090060FEF13ED20E3015010402040E1F778 -:1058C00000C000000E94682839C09091ED03892F24 -:1058D0008095817080FB90F929F096609860909394 -:1058E000ED0334C0997F977F9093ED0327C080919B -:1058F000ED0383FB222720F991E0922790FB83F9A7 -:105900008093ED039923D1F08091ED038160809322 -:10591000ED0314C08D5141E050E060E070E08A0179 -:105920009B0104C0000F111F221F331F8A95D2F75D -:10593000C901B8010E9407250E944B2181E006C0E1 -:1059400061E070E080E090E0F5CF80E01F910F9182 -:10595000089580E0089580E00895CF93C82F809146 -:10596000FD03813069F018F08230C9F184C0E09104 -:105970008802F09189028081823209F07EC007C0DE -:10598000E0918802F09189028081823261F48C2F4B -:105990000E94A92C811104C08C2F0E94EE2B1DC0E7 -:1059A00081E090E01AC08C2F0E94AB2C811114C0B2 -:1059B000C43179F048F4CB3079F0C03109F061C0DE -:1059C00082E08093FD0308C0C93219F0C83321F08A -:1059D00058C01092FD0355C081E0817054C0C93297 -:1059E00091F120F5C43179F1B0F4C73009F047C026 -:1059F0008EE180938F0282E380938E028AE080930F -:105A00008D0284E180938C0288E080938B0288E28F -:105A100080938A0234C0CE51C63088F5EC2FF0E076 -:105A2000E65FFC4F80818093FC0329C0CE34E9F00F -:105A300020F4CB3421F56AE013C0C13579F0C235CA -:105A4000F1F461E00DC08091FC03882319F01092FD -:105A5000FC0315C081E08093FD0315C061E006C022 -:105A60008091FC030E94282B0AC06AE08091FC030D -:105A70000E949E2B04C01092FD0380E004C081E0D0 -:105A800002C080E0AACFCF9108950E94C928811159 -:105A900002C00E94A5280E94EA288093180480FF73 -:105AA00002C0869501C080E00C94540580911804D2 -:105AB000982F9695292F30E0233031054CF49F5FC5 -:105AC000990F8170892B8160809318040E94EE28C1 -:105AD0008091180486950C94540580911804982F91 -:105AE000969591F09158990F8170892B80931804A5 -:105AF0008E7F91E009F490E08091180490FB80F98A -:105B0000809318040E94EE288091180486950C94C6 -:105B1000540580911804982F909590FB80F98093FC -:105B200018040E94EE288091180480FF02C0869518 -:105B300001C080E00C94540590911804892F86953B -:105B40008F5F8F779170843028F4880F892B809332 -:105B5000180402C090931804809118048E7F91E07D -:105B600009F490E08091180490FB80F98093180468 -:105B70000E94EE288091180486950C94540520917B -:105B80001804922F96958927982F990F822F81704C -:105B9000892B809318048E7F91E009F490E0809126 -:105BA000180490FB80F9809318040E94EE288091DD -:105BB000180486950C9454055058BB27AA270ED07C -:105BC00075C166D130F06BD120F031F49F3F11F4F4 -:105BD0001EF45BC10EF4E095E7FB51C1E92F77D1CC -:105BE00080F3BA17620773078407950718F071F4FA -:105BF0009EF58FC10EF4E0950B2EBA2FA02D0B0150 -:105C0000B90190010C01CA01A0011124FF27591B01 -:105C100099F0593F50F4503E68F11A16F040A22F07 -:105C2000232F342F4427585FF3CF46953795279578 -:105C3000A795F0405395C9F77EF41F16BA0B620B77 -:105C4000730B840BBAF09150A1F0FF0FBB1F661FBE -:105C5000771F881FC2F70EC0BA0F621F731F841F01 -:105C600048F4879577956795B795F7959E3F08F027 -:105C7000B3CF9395880F08F09927EE0F97958795E6 -:105C80000895D9D008F481E008950CD00FC107D150 -:105C900040F0FED030F021F45F3F19F0F0C0511118 -:105CA00039C1F3C014D198F39923C9F35523B1F343 -:105CB000951B550BBB27AA2762177307840738F07B -:105CC0009F5F5F4F220F331F441FAA1FA9F333D0DA -:105CD0000E2E3AF0E0E830D091505040E695001C8E -:105CE000CAF729D0FE2F27D0660F771F881FBB1F4A -:105CF000261737074807AB07B0E809F0BB0B802D24 -:105D0000BF01FF2793585F4F2AF09E3F510568F06F -:105D1000B6C000C15F3FECF3983EDCF38695779503 -:105D20006795B795F7959F5FC9F7880F911D969571 -:105D3000879597F90895E1E0660F771F881FBB1FCD -:105D4000621773078407BA0720F0621B730B840B7A -:105D5000BA0BEE1F88F7E095089504D06894B1114E -:105D6000D9C00895BCD088F09F5790F0B92F9927DB -:105D7000B751A0F0D1F0660F771F881F991F1AF056 -:105D8000BA95C9F712C0B13081F0C3D0B1E008951F -:105D9000C0C0672F782F8827B85F39F0B93FCCF3A0 -:105DA000869577956795B395D9F73EF4909580954C -:105DB000709561957F4F8F4F9F4F0895E89409C06C -:105DC00097FB3EF490958095709561957F4F8F4F2E -:105DD0009F4F9923A9F0F92F96E9BB279395F69544 -:105DE000879577956795B795F111F8CFFAF4BB0FC2 -:105DF00011F460FF1BC06F5F7F4F8F4F9F4F16C026 -:105E0000882311F096E911C0772321F09EE8872FAF -:105E1000762F05C0662371F096E8862F70E060E06B -:105E20002AF09A95660F771F881FDAF7880F9695E4 -:105E3000879597F90895990F0008550FAA0BE0E888 -:105E4000FEEF16161706E807F907C0F0121613063C -:105E5000E407F50798F0621B730B840B950B39F47C -:105E60000A2661F0232B242B252B21F408950A26E2 -:105E700009F4A140A6958FEF811D811D089597F922 -:105E80009F6780E870E060E008959FEF80EC0895E0 -:105E900000240A9416161706180609060895002409 -:105EA0000A9412161306140605060895092E039483 -:105EB000000C11F4882352F0BB0F40F4BF2B11F4F7 -:105EC00060FF04C06F5F7F4F8F4F9F4F089557FD56 -:105ED0009058440F551F59F05F3F71F04795880F58 -:105EE00097FB991F61F09F3F79F0879508951216EF -:105EF00013061406551FF2CF4695F1DF08C016169B -:105F000017061806991FF1CF86957105610508944B -:105F10000895E894BB2766277727CB0197F9089562 -:105F20008ADF08F48FEF08950BD0C0CFB1DF28F0DF -:105F3000B6DF18F0952309F0A2CFA7CF1124EACF3E -:105F4000C6DFA0F3959FD1F3950F50E0551F629FD8 -:105F5000F001729FBB27F00DB11D639FAA27F00DC2 -:105F6000B11DAA1F649F6627B00DA11D661F829FE9 -:105F70002227B00DA11D621F739FB00DA11D621FCE -:105F8000839FA00D611D221F749F3327A00D611DEB -:105F9000231F849F600D211D822F762F6A2F1124CD -:105FA0009F5750408AF0E1F088234AF0EE0FFF1F20 -:105FB000BB1F661F771F881F91505040A9F79E3F57 -:105FC000510570F05CCFA6CF5F3FECF3983EDCF359 -:105FD000869577956795B795F795E7959F5FC1F794 -:105FE000FE2B880F911D9695879597F90895FA01D4 -:105FF000EE0FFF1F30962105310599F161157105EE -:1060000061F48038BFE39B0749F1689490388105BB -:1060100061F08038BFEF9B0741F0992342F5FF3FC5 -:10602000E1053105210511F1E8940894E795D901BE -:10603000AA2329F4AB2FBE2FF85FD0F310C0FF5F67 -:1060400070F4A695E0F7F73950F019F0FF3A38F4FC -:106050009F779F930CD00F9007FC905808953EF0C7 -:1060600014CF60E070E080E89FE308954FE79F77EA -:106070005F934F933F932F939ED02F913F914F91DA -:106080005F9152DF05C019F40EF0F9CE42CFFDCE7C -:1060900026DFC8F39638C0F707F80F92E8942BE391 -:1060A0003AEA48EB5FE74EDF0F920F920F924DB73F -:1060B0005EB70F92C0D0E4E4F1E016D04F915F914B -:1060C000EF91FF91E595EE1FFF1F49F0FE57E06845 -:1060D0004427EE0F441FFA95E1F74195550B32D056 -:1060E0000F9007FE26C00895DF93CF931F930F9361 -:1060F000FF92EF92DF927B018C01689405C0DA2E4B -:10610000EF011EDFFE01E894A5912591359145919F -:106110005591AEF3EF0162DDFE019701A801DA941B -:1061200079F7DF90EF90FF900F911F91CF91DF9162 -:1061300008959B01AC0160E070E080E89FE3A5CD8D -:106140009ECEACC0CCDEE8F39923D9F3940F511D59 -:10615000BBF39150504094F059F0882332F0660F11 -:10616000771F881F91505040C1F79E3F510544F75B -:10617000880F911D9695879597F908955F3FACF02C -:10618000983E9CF0BB27869577956795B79508F460 -:10619000B1609395C1F7BB0F58F711F460FFE8CFDA -:1061A0006F5F7F4F8F4F9F4FE3CFB4CE0EF076C01F -:1061B0006CCE689464CE93DEC8F39923D1F3C6F312 -:1061C000DF93CF931F930F93FF92C92FDD2788236F -:1061D0002AF02197660F771F881FDAF720E030E05A -:1061E00040E85FEB9FE3883920F0803E30F0219655 -:1061F0008F77E3DCECE6F1E003C0DFDCE9E9F1E016 -:1062000073DF8B01BE01EC01FB2E6F577109759591 -:10621000771F880B990BD4DD28E132E741E35FE378 -:106220008FDEAF2D9801AE01FF900F911F91CF919E -:10623000DF91D4DC3BCEFA01DC01AA0FBB1F9B012E -:10624000AC01BF5728F422273327442750781FC0BA -:10625000B75188F4AB2F0024469537952795011C3C -:10626000A395D2F3002069F0220F331F441FB3958A -:10627000DAF30DD0A1CC61307105A0E88A07B946E8 -:1062800030F49B01AC0166277727882790783096F9 -:1062900021F0208331834283538308959F3F31F05F -:1062A000915020F4879577956795B795880F911D44 -:1062B0009695879597F90895AA1BBB1B51E107C0D6 -:1062C000AA1FBB1FA617B70710F0A61BB70B881F86 -:1062D000991F5A95A9F780959095BC01CD01089515 -:1062E00097FB072E16F4009407D077FD09D00E9483 -:1062F0005C3107FC05D03EF4909581959F4F089541 -:10630000709561957F4F0895EE0FFF1F0590F491F2 -:10631000E02D0994F999FECF92BD81BDF89A992795 -:1063200080B50895A8E1B0E042E050E00C94B231AD -:10633000262FF999FECF92BD81BDF89A019700B43E -:10634000021639F01FBA20BD0FB6F894FA9AF99ADE -:106350000FBE08950196272F0E9499310C94983111 -:10636000DC01CB01FC01F999FECF06C0F2BDE1BD15 -:10637000F89A319600B40D9241505040B8F7089504 -:04638000F894FFCFBF -:1063840007000C52D02445000000410000DC44000A -:1063940000004152D0A4440000404100005C44008D -:1063A40000004148F17644000000415C978A4400B3 -:1063B4000000411FD592440000004152D0A4440083 -:1063C4000000415CFFB844000000410AA7CF44002C -:1063D4000000410000DC44000000410AA7CF440053 -:1063E4000000410000DC4400000041000000000007 -:1063F40000804000005C45000040410000000000B7 -:1064040000804052D02445000040410AA7CF4400F8 -:106414000000410000DC44000000410000000000D6 -:1064240000804052D024450000404100000000009C -:1064340000804000005C45000040410AA7CF4400B2 -:106444000000410000DC44000000410000000000A6 -:1064540000804052D024450000404100000000006C -:106464000080400AA74F45000040410AA7CF4400DE -:106474000000410000DC4400000041000000000076 -:1064840000804052D024450000004100000000007C -:106494000080405CFF38450000004100000000001F -:1064A40000804052D02445000000410AA7CF440098 -:1064B4000000410000DC4400000041000000000036 -:1064C40000804052D024450000804153D024450030 -:1064D40000404160970A450000004154D0A44400A4 -:1064E4000000410000DC440000004160970A4500C0 -:1064F40000A041050000003F0000C8423214C0144F -:106504009D14691435140101DA032808140A321E93 -:106514000000020004000500070009000B000C0045 -:106524000E001000110013001500170018001A00C7 -:106534001C001D001F002100230024002600280049 -:1065440029002B002D002F003000320034003500CC -:10655400370039003B00400045002500260061005B -:106564006000200037006400650066006700440096 -:106574004600240047003F4D3639BD0970093A09E9 -:1065840001099408AD08C608DF08010203040506E2 -:0465940007080900EB +:10573000890208958FEF80938902089580918802ED +:10574000262F30E0280F311D2F3F310524F4680F3C +:105750006093880208958FEF8093880208958330C4 +:1057600011F128F4813049F0823091F008958530AC +:1057700081F120F18630C1F1089580918D02681782 +:1057800020F4861B80938D02089510928D02089557 +:1057900080918C02681720F4861B80938C020895F8 +:1057A00010928C02089580918B02681720F4861B5A +:1057B00080938B02089510928B02089580918A0243 +:1057C000681720F4861B80938A02089510928A023B +:1057D000089580918902681720F4861B80938902BE +:1057E000089510928902089580918802681720F424 +:1057F000861B8093880208951092880208950F9363 +:105800001F93873208F048C08E3108F094C0803171 +:1058100009F47EC008F5873009F468C068F4863062 +:1058200009F0A4C080913D04817F8E7F80933D0468 +:1058300081E080934D049BC08B3009F490C08E3082 +:1058400009F094C080913D0482FB222720F991E069 +:10585000922790FB82F965C0863109F480C060F41C +:10586000813109F083C00E945C219091850281E022 +:1058700089278093850273C0893109F470C08B3108 +:1058800009F074C080913D0481FB222720F991E04A +:10589000922790FB81F945C0883309F460C050F429 +:1058A000893209F45EC0853309F45BC0873209F49C +:1058B00058C05CC0833409F454C028F48A3308F417 +:1058C00055C0895339C0883409F050C00E945C210A +:1058D0000E946C060FEF13ED20E3015010402040B2 +:1058E000E1F700C000000E94792839C090913D0482 +:1058F000892F8095817080FB90F929F096609860DF +:1059000090933D0434C0997F977F90933D0427C0C6 +:1059100080913D0483FB222720F991E0922790FBA0 +:1059200083F980933D049923D1F080913D048160F7 +:1059300080933D0414C08D5141E050E060E070E080 +:105940008A019B0104C0000F111F221F331F8A957B +:10595000D2F7C901B8010E9418250E945C2181E09C +:1059600006C061E070E080E090E0F5CF80E01F913C +:105970000F91089580E0089580E00895CF93C82F97 +:1059800080914D04813069F018F08230C9F184C0F3 +:10599000E0918602F09187028081823209F07EC018 +:1059A00007C0E0918602F09187028081823261F423 +:1059B0008C2F0E94BA2C811104C08C2F0E94FF2BC7 +:1059C0001DC081E090E01AC08C2F0E94BC2C811178 +:1059D00014C0C43179F048F4CB3079F0C03109F00B +:1059E00061C082E080934D0408C0C93219F0C83309 +:1059F00021F058C010924D0455C081E0817054C010 +:105A0000C93291F120F5C43179F1B0F4C73009F011 +:105A100047C08EE180938D0282E380938C028AE0FE +:105A200080938B0284E180938A0288E080938902CC +:105A300088E28093880234C0CE51C63088F5EC2FBE +:105A4000F0E0E85AFC4F808180934C0429C0CE34AA +:105A5000E9F020F4CB3421F56AE013C0C13579F0C8 +:105A6000C235F1F461E00DC080914C04882319F037 +:105A700010924C0415C081E080934D0415C061E084 +:105A800006C080914C040E94392B0AC06AE08091C4 +:105A90004C040E94AF2B04C010924D0480E004C05F +:105AA00081E002C080E0AACFCF9108950E94DA2859 +:105AB000811102C00E94B6280E94FB2880936804CE +:105AC00080FF02C0869501C080E00C943005809173 +:105AD0006804982F9695292F30E0233031054CF437 +:105AE0009F5F990F8170892B8160809368040E9469 +:105AF000FF288091680486950C9430058091680495 +:105B0000982F969591F09158990F8170892B8093D9 +:105B100068048E7F91E009F490E08091680490FB26 +:105B200080F9809368040E94FF288091680486951C +:105B30000C94300580916804982F909590FB80F923 +:105B4000809368040E94FF288091680480FF02C04F +:105B5000869501C080E00C94300590916804892FEF +:105B600086958F5F8F779170843028F4880F892B0A +:105B70008093680402C090936804809168048E7FCB +:105B800091E009F490E08091680490FB80F98093A3 +:105B900068040E94FF288091680486950C94300563 +:105BA00020916804922F96958927982F990F822F1C +:105BB0008170892B809368048E7F91E009F490E0D6 +:105BC0008091680490FB80F9809368040E94FF280C +:105BD0008091680486950C9430055058BB27AA27FD +:105BE0000ED0D1C1C2D130F0C7D120F031F49F3FE7 +:105BF00011F41EF4B7C10EF4E095E7FB9FC1E92F45 +:105C0000D3D180F3BA17620773078407950718F09A +:105C100071F49EF5EBC10EF4E0950B2EBA2FA02D7A +:105C20000B01B90190010C01CA01A0011124FF2749 +:105C3000591B99F0593F50F4503E68F11A16F04044 +:105C4000A22F232F342F4427585FF3CF4695379543 +:105C50002795A795F0405395C9F77EF41F16BA0B08 +:105C6000620B730B840BBAF09150A1F0FF0FBB1FB6 +:105C7000661F771F881FC2F70EC0BA0F621F731FFF +:105C8000841F48F4879577956795B795F7959E3F5C +:105C900008F0B3CF9395880F08F09927EE0F9795EA +:105CA0008795089527D108F481E008950CD06BC141 +:105CB00063D140F05AD130F021F45F3F19F03EC17A +:105CC000511195C14FC170D198F39923C9F3552350 +:105CD000B1F3951B550BBB27AA27621773078407DF +:105CE00038F09F5F5F4F220F331F441FAA1FA9F395 +:105CF00033D00E2E3AF0E0E830D091505040E69587 +:105D0000001CCAF729D0FE2F27D0660F771F881FE7 +:105D1000BB1F261737074807AB07B0E809F0BB0BD6 +:105D2000802DBF01FF2793585F4F2AF09E3F5105FA +:105D300068F004C15CC15F3FECF3983EDCF38695EC +:105D400077956795B795F7959F5FC9F7880F911D70 +:105D50009695879597F90895E1E0660F771F881F5C +:105D6000BB1F621773078407BA0720F0621B730B0F +:105D7000840BBA0BEE1F88F7E095089504D0689461 +:105D8000B11135C1089518D188F09F5790F0B92FFF +:105D90009927B751A0F0D1F0660F771F881F991F80 +:105DA0001AF0BA95C9F712C0B13081F01FD1B1E035 +:105DB00008951CC1672F782F8827B85F39F0B93F45 +:105DC000CCF3869577956795B395D9F73EF4909582 +:105DD0008095709561957F4F8F4F9F4F0895E89400 +:105DE00009C097FB3EF490958095709561957F4F23 +:105DF0008F4F9F4F9923A9F0F92F96E9BB279395D1 +:105E0000F695879577956795B795F111F8CFFAF4E0 +:105E1000BB0F11F460FF1BC06F5F7F4F8F4F9F4F11 +:105E200016C0882311F096E911C0772321F09EE86F +:105E3000872F762F05C0662371F096E8862F70E0D5 +:105E400060E02AF09A95660F771F881FDAF7880FAF +:105E50009695879597F9089588D018F011F08CD011 +:105E600038F480C0C4C0E92F9FD0B0F35523C9F3E4 +:105E7000E7FB6217730784079507A8F199F3E92FE9 +:105E8000FF2788232AF03197660F771F881FDAF7DC +:105E9000952F5527442332F091505040220F331F45 +:105EA000441FD2F7BB27E91BF50B621B730B840B56 +:105EB000B109C1F222F4620F731F841FB11D319723 +:105EC0002AF0660F771F881FBB1FEFCF91505040FD +:105ED0005AF041F0882332F0660F771F881F9150E7 +:105EE0005040C1F7939530C08695779567959F5F31 +:105EF000D9F7F8CF990F0008550FAA0BE0E8FEEF8D +:105F000016161706E807F907C0F012161306E4077D +:105F1000F50798F0621B730B840B950B39F40A2676 +:105F200061F0232B242B252B21F408950A2609F454 +:105F3000A140A6958FEF811D811D089597F99F6758 +:105F400080E870E060E008959F3F31F0915020F4C8 +:105F5000879577956795B795880F911D9695879545 +:105F600097F908959FEF80EC089500240A9416167F +:105F7000170618060906089500240A941216130637 +:105F8000140605060895092E0394000C11F48823C5 +:105F900052F0BB0F40F4BF2B11F460FF04C06F5FE1 +:105FA0007F4F8F4F9F4F089557FD9058440F551FB7 +:105FB00059F05F3F71F04795880F97FB991F61F08B +:105FC0009F3F79F087950895121613061406551F02 +:105FD000F2CF4695F1DF08C0161617061806991F6E +:105FE000F1CF86957105610508940895E894BB2763 +:105FF00066277727CB0197F908957CDF08F48FEFA8 +:1060000008950BD0C0CFB1DF28F0B6DF18F095238C +:1060100009F094CFA7CF1124EACFC6DFA0F3959F54 +:10602000D1F3950F50E0551F629FF001729FBB277F +:10603000F00DB11D639FAA27F00DB11DAA1F649F2B +:106040006627B00DA11D661F829F2227B00DA11DDE +:10605000621F739FB00DA11D621F839FA00D611D64 +:10606000221F749F3327A00D611D231F849F600D85 +:10607000211D822F762F6A2F11249F5750408AF0BE +:10608000E1F088234AF0EE0FFF1FBB1F661F771F4A +:10609000881F91505040A9F79E3F510570F04ECF98 +:1060A000A6CF5F3FECF3983EDCF386957795679536 +:1060B000B795F795E7959F5FC1F7FE2B880F911D68 +:1060C0009695879597F90895FA01EE0FFF1F309680 +:1060D0002105310599F16115710561F48038BFE33F +:1060E0009B0749F168949038810561F08038BFEFD3 +:1060F0009B0741F0992342F5FF3FE105310521055A +:1061000011F1E8940894E795D901AA2329F4AB2F5B +:10611000BE2FF85FD0F310C0FF5F70F4A695E0F7D4 +:10612000F73950F019F0FF3A38F49F779F930CD06D +:106130000F9007FC905808953EF014CF60E070E097 +:1061400080E89FE308954FE79F775F934F933F93D6 +:106150002F939ED02F913F914F915F9152DF05C0B9 +:1061600019F40EF0EBCE42CFFDCE26DFC8F3963801 +:10617000C0F707F80F92E8942BE33AEA48EB5FE7A1 +:106180004EDF0F920F920F924DB75EB70F92C0D0B5 +:10619000ECEFF0E016D04F915F91EF91FF91E59514 +:1061A000EE1FFF1F49F0FE57E0684427EE0F441F23 +:1061B000FA95E1F74195550B32D00F9007FE26C0B6 +:1061C0000895DF93CF931F930F93FF92EF92DF9287 +:1061D0007B018C01689405C0DA2EEF011EDFFE0101 +:1061E000E894A5912591359145915591AEF3EF0134 +:1061F00006DDFE019701A801DA9479F7DF90EF90B0 +:10620000FF900F911F91CF91DF9108959B01AC01F9 +:1062100060E070E080E89FE349CD90CE95CECCDE83 +:10622000E8F39923D9F3940F511DBBF391505040DB +:1062300094F059F0882332F0660F771F881F915031 +:106240005040C1F79E3F510544F7880F911D969528 +:10625000879597F908955F3FACF0983E9CF0BB2777 +:10626000869577956795B79508F4B1609395C1F7D2 +:10627000BB0F58F711F460FFE8CF6F5F7F4F8F4F70 +:106280009F4FE3CFB4CE0EF05FCE6CCE689456CE67 +:1062900093DEC8F39923D1F3C6F3DF93CF931F9313 +:1062A0000F93FF92C92FDD2788232AF02197660FCD +:1062B000771F881FDAF720E030E040E85FEB9FE3CC +:1062C000883920F0803E30F021968F7787DCE4E239 +:1062D000F1E003C083DCE1E5F1E073DF8B01BE0197 +:1062E000EC01FB2E6F5771097595771F880B990B81 +:1062F00078DD28E132E741E35FE38FDEAF2D9801DF +:10630000AE01FF900F911F91CF91DF9178DC3BCED2 +:10631000FA01DC01AA0FBB1F9B01AC01BF5728F497 +:1063200022273327442750781FC0B75188F4AB2F5A +:106330000024469537952795011CA395D2F300209C +:1063400069F0220F331F441FB395DAF30DD045CC0B +:1063500061307105A0E88A07B94630F49B01AC01B1 +:106360006627772788279078309621F0208331831D +:10637000428353830895AA1BBB1B51E107C0AA1F88 +:10638000BB1FA617B70710F0A61BB70B881F991FD6 +:106390005A95A9F780959095BC01CD01089597FB7A +:1063A000072E16F4009407D077FD09D00E94BB3168 +:1063B00007FC05D03EF4909581959F4F0895709508 +:1063C00061957F4F0895EE0FFF1F0590F491E02D2A +:1063D0000994F999FECF92BD81BDF89A992780B5AD +:1063E0000895A8E1B0E042E050E00C941132262F6D +:1063F000F999FECF92BD81BDF89A019700B40216BB +:1064000039F01FBA20BD0FB6F894FA9AF99A0FBE68 +:1064100008950196272F0E94F8310C94F731DC0182 +:10642000CB01FC01F999FECF06C0F2BDE1BDF89A9F +:10643000319600B40D9241505040B8F70895F89449 +:02644000FFCF8C +:106442000C52D02445000000410000DC4400000052 +:106452004152D0A4440000404100005C44000000CE +:106462004148F17644000000415C978A44000000F4 +:10647200411FD592440000004152D0A444000000C4 +:10648200415CFFB844000000410AA7CF440000006D +:10649200410000DC44000000410AA7CF4400000094 +:1064A200410000DC440000004100000000000080C8 +:1064B2004000005C450000404100000000000080F8 +:1064C2004052D02445000040410AA7CF44000000BA +:1064D200410000DC44000000410000000000008098 +:1064E2004052D024450000404100000000000080DE +:1064F2004000005C45000040410AA7CF4400000074 +:10650200410000DC44000000410000000000008067 +:106512004052D024450000404100000000000080AD +:10652200400AA74F45000040410AA7CF440000009F +:10653200410000DC44000000410000000000008037 +:106542004052D024450000004100000000000080BD +:10655200405CFF3845000000410000000000008060 +:106562004052D02445000000410AA7CF4400000059 +:10657200410000DC440000004100000000000080F7 +:106582004052D024450000804153D02445000040B1 +:106592004160970A450000004154D0A44400000025 +:1065A200410000DC440000004160970A450000A061 +:1065B20041050000003F0000C8424314D114AE144C +:1065C2007A14461401012A042808140A321E000013 +:1065D200020004000500070009000B000C000E0079 +:1065E2001000110013001500170018001A001C00FB +:1065F2001D001F002100230024002600280029007E +:106602002B002D002F0030003200340035003700FF +:1066120039003B0040004500250026006100600073 +:1066220020003700640065006600670044004600F1 +:10663200240047003149803F5D8B803FF8BF803F97 +:10664200CAE1803F73ED803FCAE1803FF8BF803FDF +:106652005D8B803F3149803F0000803FF16D7F3F7D +:1066620075EA7E3F4C827E3F833F7E3F84287E3F99 +:10667200833F7E3F4C827E3F75EA7E3FF16D7F3FD6 +:106682000000803F3F4D363975092809F208B908E4 +:106692004C0865087E0897080102030405060708EE +:0266A2000900ED :00000001FF diff --git a/keyboard/preonic/keymaps/default/keymap.c b/keyboard/preonic/keymaps/default/keymap.c index 95b9718762..b3aa14dcbe 100644 --- a/keyboard/preonic/keymaps/default/keymap.c +++ b/keyboard/preonic/keymaps/default/keymap.c @@ -319,7 +319,7 @@ void matrix_init_user(void) { #ifdef AUDIO_ENABLE uint8_t starting_note = 0x0C; -int offset = 7; +int offset = 0; void process_action_user(keyrecord_t *record) { diff --git a/keyboard/preonic/preonic_pcb_r1.hex b/keyboard/preonic/preonic_pcb_r1.hex index 5bdc190e1d..eda1b1979f 100644 --- a/keyboard/preonic/preonic_pcb_r1.hex +++ b/keyboard/preonic/preonic_pcb_r1.hex @@ -1,1702 +1,1628 @@ -:100000000C94D4020C9418030C9418030C94180349 -:100010000C9418030C9418030C9418030C941803F4 -:100020000C9418030C9418030C94E8160C94BA174B -:100030000C946C290C9418030C9418030C9418035A -:100040000C9418030C9418030C9418030C941803C4 -:100050000C9418030C94D9290C9418030C941803CD -:100060000C9418030C9418030C9418030C941803A4 -:100070000C9418030C9418030C9418030C94180394 -:100080000C941C0E0C9418030C9418030C94180375 -:100090000C9418030C9418030C9418030C94180374 -:1000A0000C9418030C9418030C941803076342363D -:1000B000B79BD8A71A39685618AEBAAB558C1D3CF9 -:1000C000B7CC5763BD6DEDFD753EF6177231BF00BD -:1000D0000000803F08000000BE922449123EABAAF7 -:1000E000AA2ABECDCCCC4C3E00000080BEABAAAA52 -:1000F000AA3E00000000BF000000803F000000009A -:1001000000084178D3BB4387D1133D190E3CC3BDD2 -:100110004282AD2B3E68EC8276BED98FE1A93E4C7F -:1001200080EFFFBE01C4FF7F3F00000000003500EC -:100130001E001F00200021002200230024002500B3 -:10014000260027002A002B0014001A0008001500C2 -:1001500017001C0018000C00120013002A002900D0 -:1001600004001600070009000A000B000D000E0035 -:100170000F0033003400E1001D001B0006001900D1 -:10018000050011001000360037003800280000304C -:10019000E000E200E30003522C002C000452500067 -:1001A000510052004F0035001E001F0020002100AA -:1001B0002200230024002500260027002A002B000F -:1001C00014001A00090013000A000D000F001800A7 -:1001D0001C0033002A002900040015001600170037 -:1001E00007000B00110008000C0012003400E100B1 -:1001F0001D001B000600190005000E00100036004F -:100200003700380028000030E000E200E30003522D -:100210002C002C0004525000510052004F003500B9 -:100220001E001F00200021002200230024002500C2 -:10023000260027002A002B00340036003700130068 -:100240001C0009000A00060015000F002A00290002 -:1002500004001200080018000C0007000B00170033 -:10026000110016003800E100330014000D000E00EC -:100270001B00050010001A0019001D0028000030A6 -:10028000E000E200E30003522C002C000452500076 -:10029000510052004F0035001E001F0020002100B9 -:1002A0002200230024002500260027002A00350212 -:1002B0001E021F0220022102220223022402250222 -:1002C000260227022A0001003A003B003C003D00C4 -:1002D0003E003F002D022E022F02300231020100AB -:1002E00040004100420043004400450000530153D8 -:1002F0000253005001000100010001000100010053 -:10030000010001000100AB00AA00A900AE00350009 -:100310001E001F00200021002200230024002500D1 -:10032000260027002A0035001E001F0020002100A3 -:100330002200230024002500260027002A000100B7 -:100340003A003B003C003D003E003F002D002E00E7 -:100350002F00300031000100400041004200430006 -:1003600044004500005301530253005001000100B6 -:100370000100010001000100010001000100AB00CB -:10038000AA00A900AE002A035400680065002000FE -:100390005000720065006F006E006900630020006D -:1003A0004B006500790062006F006100720064001C -:1003B00000002C034F007200740068006F006C0096 -:1003C00069006E0065006100720020004B0065004E -:1003D000790062006F006100720064007300000029 -:1003E000040309040902D000060100A0FA09040070 -:1003F000000103010100092111010001223F000752 -:1004000005810308000A0904010001030102000933 -:100410002111010001224D000705820308000A098D -:10042000040200010300000009211101000122362D -:10043000000705830308000A090403000203000003 -:10044000000921110100012220000705840320007A -:100450000107050403200001090404000001010054 -:100460000009240100010900010509040500020139 -:1004700003000007240100014100062402010100DD -:1004800006240202020009240301030102010009FB -:1004900024030204010101000905060240000500D1 -:1004A0000005250101010905850240000500000540 -:1004B000250101031201100100000008EDFE61603A -:1004C0000100010200010631FF0974A1010975153F -:1004D0000025FF9520750881020976150025FF95F6 -:1004E0002075089102C005010980A101850216014D -:1004F0000026B7001A01002AB70075109501810087 -:10050000C0050C0901A1018503160100269C021AF1 -:1005100001002A9C02751095018100C005010902A5 -:10052000A1010901A10005091901290515002501ED -:100530009505750181029501750381010501093059 -:1005400009311581257F95027508810609381581C5 -:10055000257F950175088106050C0A38021581254D -:100560007F950175088106C0C005010906A1010536 -:100570000719E029E7150025019508750181029505 -:100580000175088101050819012905950575019175 -:10059000029501750391010507190029FF15002532 -:1005A000FF950675088100C011241FBECFEFDAE069 -:1005B000DEBFCDBF04B603FE24C080910404909139 -:1005C0000504A0910604B09107048730904BA74022 -:1005D000B04BB9F410920404109205041092060472 -:1005E0001092070414BE84B7877F84BF88E10FB6DA -:1005F000F89480936000109260000FBEE0E0F8E392 -:10060000099512E0A0E0B1E0EEE1F9E602C0059044 -:100610000D92A832B107D9F714E0A8E2B2E001C008 -:100620001D92A430B107E1F70E94A0130C948D3401 -:100630000C94000061110DC0FC018281882331F00F -:1006400085EE0E94671E0E94683003C085EE0E94FE -:100650002F1F80E090E008950E940F0E40E050E0D0 -:1006600069E070E080E091E00C94600F08950E94D2 -:1006700049036E9A769A8CE293E0892B11F00C94E0 -:100680002C03089586E393E0892B11F00C94360334 -:100690000895279A2F988FEF9FEF9093870080936C -:1006A00086008AE08093800089E1809381000C9429 -:1006B000113081110BC080918000877F8093800072 -:1006C00010928D0010928C002F9808952F988330EF -:1006D00041F4809180008860809380008FEF9FEFCD -:1006E00012C09091800098609093800023E030E0E9 -:1006F000281B3109220F331F8FEF9FEF02C0969501 -:1007000087952A95E2F790938D0080938C00089549 -:100710008B3B910568F4883A910530F5853A91054F -:10072000C0F48430910598F4019709F06FC071C04E -:10073000803E910508F46AC0883E910540F09C0116 -:10074000205F31092031310508F060C05CC09C0198 -:10075000A1C0853A910509F45FC0863A910509F474 -:100760005EC023E830E496C0883A910509F45AC087 -:10077000893A910509F459C08A3A910509F458C09B -:100780008B3A910509F457C08C3A910509F456C08B -:100790008D3A910509F455C0803B910509F454C088 -:1007A0008E3A910509F453C08F3A910509F452C06D -:1007B000813B910509F451C0823B910509F450C079 -:1007C000833B910509F44FC0843B910509F44EC069 -:1007D000853B910509F44DC0863B910509F44CC059 -:1007E000873B910509F44BC0883B910509F44AC049 -:1007F000893B910509F449C08A3B910509F048C03D -:100800002AE236E447C09C01306544C020E030E075 -:1008100041C021E030E03EC021E830E43BC022E8A6 -:1008200030E438C022EE34E435C029EE34E432C07E -:100830002AEE34E42FC025EB34E42CC026EB34E45C -:1008400029C027EB34E426C02CEC34E423C02DEC83 -:1008500034E420C023E835E41DC02AE835E41AC09A -:1008600022E935E417C024E935E414C021E236E476 -:1008700011C023E236E40EC024E236E40BC025E2C8 -:1008800036E408C026E236E405C027E236E402C0BA -:1008900020E034E4C90108959CE0799FF00111241F -:1008A0009CE3899FE00DF11D1124E60FF11DEE0F71 -:1008B000FF1FE25DFE4F25913491C9010895880F15 -:1008C000991F82559040FC0125913491C9010895EA -:1008D000880F991F825D9E4FFC0125913491C901BB -:1008E00008950E944C049C019A9581159F4110F433 -:1008F000C9010895C90190528115904128F4C90198 -:100900009F700E9468040895C90190538115904119 -:1009100020F4C9019927906C0895C901905440971B -:1009200028F4C9018F709927946D0895203180E4CF -:10093000380719F480E091ED0895213190E43907EA -:1009400019F480E090ED0895223140E4340719F461 -:1009500080E092ED0895233180E4380719F480E0B7 -:1009600093ED0895211590E5390799F40E945623D7 -:1009700040E065E088E491E00E94600F2FEF44E3DF -:100980008CE0215040408040E1F700C000000C9412 -:10099000FE29213090E5390731F48091F002816021 -:1009A0008093F0020895C90190558115904108F097 -:1009B00062C0432F55274F70552741305105F9F438 -:1009C000C90174E0880F991F7A95E1F78827937021 -:1009D000B901E3E0660F771FEA95E1F760767727C4 -:1009E000862B972B9C682370332702C0440F551F1A -:1009F0002A95E2F74F715527842B952B08954230A5 -:100A0000510529F4922F8827816F906A0895433009 -:100A10005105B9F4C90153E0880F991F5A95E1F7C0 -:100A2000807E97702370332741E050E002C0440F6E -:100A3000551F2A95E2F74F715527842B952B9C68FB -:100A400008954430510589F5C90143E0880F991F85 -:100A50004A95E1F7807E97702370332741E050E09C -:100A600002C0440F551F2A95E2F74F715527842B7A -:100A7000952B9A680895C90190568115904118F4F4 -:100A8000C901906F0895C90190578115904120F4D4 -:100A9000C9019F7090620895C901905881159041D5 -:100AA00020F4C9019F70906A0895203E3105E0F45A -:100AB000203C310568F52133310509F475C048F44F -:100AC0002932310509F46BC02A32310509F07BC0A7 -:100AD00075C02933310501F122383105E9F025339C -:100AE000310509F070C051C0233E3105B1F140F429 -:100AF000203E3105D1F0223E310509F064C01CC012 -:100B0000263E310579F1273E310509F05CC038C039 -:100B1000C9010E945F0408958091010380FD02C015 -:100B200081FF51C080EE90E04FC08091010380FFB3 -:100B3000F9CF89E390E048C08091010382FF0AC0A9 -:100B40008091010384FF03C080E090E03DC083EE0C -:100B500090E03AC082EE90E037C08091010382FFBE -:100B6000EFCFF8CF8091010383FF07C0809101038D -:100B700084FDEACF87EE90E027C086EE90E024C0A7 -:100B80008091010383FFF2CFF8CF8091010385FFAD -:100B900003C089E290E018C085E390E015C0809121 -:100BA000010385FDF9CFF5CF8091010386FF03C0D6 -:100BB0008AE290E009C081E390E006C080910103E1 -:100BC00086FDF9CFF5CFC9010E94880308950895E5 -:100BD0005F926F927F928F929F92AF92BF92CF92CD -:100BE000DF92EF92FF920F931F93CF93DF93CDB7D6 -:100BF000DEB72A970FB6F894DEBF0FBECDBF9E01B9 -:100C00002F5F3F4F4E018BE0880E911C60E070E03B -:100C100000E010E0E12CF12CC12CD12CA12CB12C46 -:100C20008AE0782E622E532E41E050E0E3E9F1E0B5 -:100C3000A62DB52D872D01900D928A95E1F7F9012A -:100C4000819191919F01FC01E07FFF27E032F10546 -:100C500059F48F709927FA0102C0EE0FFF1F8A9591 -:100C6000E2F7AE2ABF2A37C0E033F10559F48F709E -:100C70009927FA0102C0EE0FFF1F8A95E2F7CE2AEC -:100C8000DF2A29C0E034F10559F48F709927FA0161 -:100C900002C0EE0FFF1F8A95E2F7EE2AFF2A1BC063 -:100CA000E035F10559F48F709927FA0102C0EE0F73 -:100CB000FF1F8A95E2F70E2B1F2B0DC0E036F105C2 -:100CC00051F48F709927FA0102C0EE0FFF1F8A9529 -:100CD000E2F76E2B7F2B2815390509F0A7CF94B1C9 -:100CE0008A2D8095892384B985B18A2985B997B1E0 -:100CF0008C2D8095892387B988B18C2988B99AB1C0 -:100D00008E2D809589238AB98BB18E298BB99DB19F -:100D1000802F809589238DB98EB1802B8EB990B3A9 -:100D2000862F8095892380BB81B3862B81BB2A9631 -:100D30000FB6F894DEBF0FBECDBFDF91CF911F91EC -:100D40000F91FF90EF90DF90CF90BF90AF909F906A -:100D50008F907F906F905F9008955F926F927F92D7 -:100D60008F929F92AF92BF92CF92DF92EF92FF92BB -:100D70000F931F93CF93DF93CDB7DEB768970FB66E -:100D8000F894DEBF0FBECDBF85B7806885BF85B73D -:100D9000806885BF0E94E8059E012F5F3F4F4E018E -:100DA00089E1880E911C60E070E000E010E0E12C29 -:100DB000F12CC12CD12CA12CB12C98E1792E622ED2 -:100DC000532E41E050E0EDE9F1E0A62DB52D872D41 -:100DD00001900D928A95E1F7F901819191919F011E -:100DE000FC01E07FFF27E032F10559F48F7099276D -:100DF000FA0102C0EE0FFF1F8A95E2F7AE2ABF2A62 -:100E000037C0E033F10559F48F709927FA0102C019 -:100E1000EE0FFF1F8A95E2F7CE2ADF2A29C0E034C1 -:100E2000F10559F48F709927FA0102C0EE0FFF1FE8 -:100E30008A95E2F7EE2AFF2A1BC0E035F10559F446 -:100E40008F709927FA0102C0EE0FFF1F8A95E2F713 -:100E50000E2B1F2B0DC0E036F10551F48F70992732 -:100E6000FA0102C0EE0FFF1F8A95E2F76E2B7F2B6F -:100E70002815390509F0A7CF94B18A2D80958923CB -:100E800084B985B18A2985B997B18C2D809589233C -:100E900087B988B18C2988B99AB18E2D809589231C -:100EA0008AB98BB18E298BB99DB1802F809589230A -:100EB0008DB98EB1802B8EB990B3862F8095892302 -:100EC00080BB81B3862B81BB10922902109228022D -:100ED000109233021092320210922B0210922A02C8 -:100EE000109235021092340210922D0210922C02B0 -:100EF000109237021092360210922F0210922E0298 -:100F0000109239021092380210923102109230027F -:100F100010923B0210923A0287E393E0892BB9F0DA -:100F200068960FB6F894DEBF0FBECDBFDF91CF91AC -:100F30001F910F91FF90EF90DF90CF90BF90AF90F7 -:100F40009F908F907F906F905F900C94370368967E -:100F50000FB6F894DEBF0FBECDBFDF91CF911F91CA -:100F60000F91FF90EF90DF90CF90BF90AF909F9048 -:100F70008F907F906F905F9008955F926F927F92B5 -:100F80008F929F92AF92BF92CF92DF92EF92FF9299 -:100F90000F931F93CF93DF93CDB7DEB7A2970FB612 -:100FA000F894DEBF0FBECDBF7E0149E1E40EF11C17 -:100FB00022E3C22E22E0D22E5E0153E2A50EB11C26 -:100FC0003AE0532E470101E010E048E1642E55E07D -:100FD000752EE3E9F1E0D401852D01900D928A95FB -:100FE000E1F7F701819191917F019C01207F3327E7 -:100FF0002032310589F424B18F709927A80102C0ED -:10100000440F551F8A95E2F7CA01242B24B995B1E4 -:101010008095892385B94FC02033310589F427B1E4 -:101020008F709927F80102C0EE0FFF1F8A95E2F733 -:10103000CF012E2B27B998B18095892388B93BC061 -:101040002034310589F42AB18F709927A80102C094 -:10105000440F551F8A95E2F7CA01242B2AB99BB188 -:10106000809589238BB927C02035310589F42DB1AE -:101070008F709927F80102C0EE0FFF1F8A95E2F7E3 -:10108000CF012E2B2DB99EB1809589238EB913C027 -:101090002036310581F420B38F709927A80102C052 -:1010A000440F551F8A95E2F7CA01242B20BB91B348 -:1010B0008095892381BB50EA5A95F1F7BE016F5F95 -:1010C0007F4F80E090E020E030E0EDE9F1E0DE01EC -:1010D0001196462D01900D924A95E1F7FB01419141 -:1010E0005191BF01FA01E07FFF27E032F10511F4D1 -:1010F000E3B113C0E033F10511F4E6B10EC0E03402 -:10110000F10511F4E9B109C0E035F10511F4ECB1D4 -:1011100004C0E036F105B9F4EFB1F0E04F705527A7 -:1011200002C0F595E7954A95E2F7E0FD08C0A801F1 -:10113000022E02C0440F551F0A94E2F702C040E09D -:1011400050E0842B952B2F5F3F4F2C30310509F059 -:10115000BCCFF601208131812817390721F0918316 -:101160008083709270010E94E805F2E0CF0ED11CDE -:10117000EA14FB0409F02DCF809170018823A1F1BE -:10118000815080937001882339F08FE99FE00197A7 -:10119000F1F700C0000028C0809132029091330224 -:1011A0009093290280932802809134029091350215 -:1011B00090932B0280932A028091360290913702FD -:1011C00090932D0280932C028091380290913902E5 -:1011D00090932F0280932E0280913A0290913B02CD -:1011E000909331028093300282E493E0892B11F0D6 -:1011F0000E94420381E0A2960FB6F894DEBF0FBEB4 -:10120000CDBFDF91CF911F910F91FF90EF90DF90B5 -:10121000CF90BF90AF909F908F907F906F905F9096 -:101220000895E82FF0E0EE0FFF1FE85DFD4F80818D -:10123000918108950895CF92DF92EF92FF920F93DC -:101240001F93CF93DF93CDB7DEB7CC5BD2400FB601 -:10125000F894DEBF0FBECDBF8C01862F642F88238C -:1012600079F0F80192812FE7482F992329F083E044 -:1012700093E00E94C41904C083E093E00E94D41953 -:10128000F80180818B3091F59181943009F0A8C2EA -:101290009281809173019923B1F08F5F80937301E4 -:1012A00096E4E5EBF1E0DE01A958BD4F01900D9207 -:1012B0009A95E1F7E0917101F0917201EE0FFF1F35 -:1012C00027E732E036C096E4E5EBF1E0DE01AF5C03 -:1012D000BD4F01900D929A95E1F7E0917101F09167 -:1012E0007201EE0FFF1F21E332E093C08A3009F054 -:1012F000CBC0F8019181943009F072C29281809143 -:101300007301992309F473C081508093730196E4AB -:10131000E5EBF1E0DE01A551BE4F01900D929A95EB -:10132000E1F7E0917101F0917201EE0FFF1F2BEEDA -:1013300031E02C0F3D1FE20FF31F60817181680FB8 -:10134000711D882777FD8095982F0E94AC3120E091 -:1013500030E040E451E40E94113120E030E040E808 -:1013600050E40E94A9309B01AC0160E070E080E095 -:1013700090E40E94C33221E230ED42E053E40E9447 -:1013800060324CE050E00E94BB0F20E04BE760E091 -:1013900083E093E00E94B41920E04BE761E083E032 -:1013A00093E00E94B41920E04BE762E083E093E011 -:1013B0000E94B41920E04BE763E083E093E00E94D1 -:1013C000B41920E04BE764E083E093E0C454DD4FC0 -:1013D0000FB6F894DEBF0FBECDBFDF91CF911F9146 -:1013E0000F91FF90EF90DF90CF900C94B41996E49A -:1013F000E5EBF1E0DE01AB55BE4F01900D929A9501 -:10140000E1F7E0917101F0917201EE0FFF1F25EA03 -:1014100031E02C0F3D1FE20FF31F60817181680FD7 -:10142000711D882777FD8095982F0E94AC3120E0B0 -:1014300030E040E451E40E94113120E030E040E827 -:1014400050E40E94A9309B01AC0160E070E080E0B4 -:1014500090E40E94C33221E230ED42E053E40E9466 -:1014600060320E94EB0CC454DD4F0FB6F894DEBF1F -:101470000FBECDBFDF91CF911F910F91FF90EF90E5 -:10148000DF90CF900C94BE0C893009F0D3C0F801E6 -:101490009181943009F0A4C19281992309F4A0C1EB -:1014A00080917101909172010196909372018093E5 -:1014B000710120E04BE760E083E093E00E94B41903 -:1014C00020E04BE761E083E093E00E94B41920E064 -:1014D0004BE762E083E093E00E94B41920E04BE721 -:1014E00063E083E093E00E94B41920E04BE764E0FE -:1014F00083E093E00E94B4190E94BE0C00E010E06B -:10150000E6E4FE2E80917301E5EBF1E0DE01A15AE5 -:10151000BE4F9F2D01900D929A95E1F7E0917101D8 -:10152000F0917201E00FF11FEE0FFF1F2FE531E088 -:101530002C0F3D1FE20FF31F60817181680F711D39 -:10154000882777FD8095982F0E94AC3120E030E00D -:1015500040E451E40E94113120E030E040E850E4E2 -:101560000E94A9309B01AC0160E070E080E090E453 -:101570000E94C33221E230ED42E053E40E94603227 -:101580004CE050E00E94BB0F3FEF87EE93E03150FC -:1015900080409040E1F700C0000080917301E5EBCE -:1015A000F1E0DE01A75EBE4F9F2D01900D929A954E -:1015B000E1F7E0917101F0917201E00FF11FEE0F80 -:1015C000FF1F29E131E02C0F3D1FE20FF31F608167 -:1015D0007181680F711D882777FD8095982F0E9473 -:1015E000AC3120E030E040E451E40E94113120E0D1 -:1015F00030E040E850E40E94A9309B01AC0160E07B -:1016000070E080E090E40E94C33221E230ED42E0DD -:1016100053E40E9460320E94EB0C8FEF9CE701972D -:10162000F1F700C000000F5F1F4F0830110509F0EF -:1016300069CF94C1883009F0D3C0F801918194300A -:1016400009F0CEC09281992309F4CAC0809171013A -:10165000909172010197909372018093710120E043 -:101660004BE760E083E093E00E94B41920E04BE791 -:1016700061E083E093E00E94B41920E04BE762E070 -:1016800083E093E00E94B41920E04BE763E083E03D -:1016900093E00E94B41920E04BE764E083E093E01C -:1016A0000E94B4190E94BE0C00E010E056E4F52E32 -:1016B00080917301E5EBF1E0DE01AD52BF4F9F2D4C -:1016C00001900D929A95E1F7E0917101F09172010C -:1016D000E00FF11FEE0FFF1F23ED30E02C0F3D1F39 -:1016E000E20FF31F60817181680F711D882777FDFC -:1016F0008095982F0E94AC3120E030E040E451E426 -:101700000E94113120E030E040E850E40E94A9300E -:101710009B01AC0160E070E080E090E40E94C33285 -:1017200021E230ED42E053E40E9460324CE050E0B0 -:101730000E94BB0F3FEF87EE93E031508040904016 -:10174000E1F700C0000080917301E5EBF1E0DE01FC -:10175000A357BF4F9F2D01900D929A95E1F7E0910D -:101760007101F0917201E00FF11FEE0FFF1F2DE8E4 -:1017700030E02C0F3D1FE20FF31F60817181680F75 -:10178000711D882777FD8095982F0E94AC3120E04D -:1017900030E040E451E40E94113120E030E040E8C4 -:1017A00050E40E94A9309B01AC0160E070E080E051 -:1017B00090E40E94C33221E230ED42E053E40E9403 -:1017C00060320E94EB0C8FEF9CE70197F1F700C0AD -:1017D00000000F5F1F4F0830110509F069CFBEC030 -:1017E000F801228190917301222309F45DC026E45F -:1017F000E5EBF1E0DE01A95BBF4F01900D922A9568 -:10180000E1F7E0917101F0917201E80FF11DEE0F27 -:10181000FF1F27E430E02C0F3D1FE20FF31F608114 -:101820007181690F711D882777FD8095982F0E941F -:10183000AC3120E030E040E451E40E9411316B0112 -:101840007C01F801818165E070E0681B71098827DF -:1018500077FD8095982F0E94AC319B01AC01C701A8 -:10186000B6010E94A9309B01AC0160E070E080E00D -:1018700090E40E94C33221E230ED42E053E40E9442 -:1018800060324FE050E0C454DD4F0FB6F894DEBF35 -:101890000FBECDBFDF91CF911F910F91FF90EF90C1 -:1018A000DF90CF900C94BB0F26E4E5EBF1E0DE0176 -:1018B000119601900D922A95E1F7E0917101F09156 -:1018C0007201E80FF11DEE0FFF1F21E030E02C0F39 -:1018D0003D1FE20FF31F60817181690F711D882721 -:1018E00077FD8095982F0E94AC3120E030E040E4F5 -:1018F00051E40E9411316B017C01F801818165E0A6 -:1019000070E0681B7109882777FD8095982F0E94E9 -:10191000AC319B01AC01C701B6010E94A9309B010B -:10192000AC0160E070E080E090E40E94C33221E20C -:1019300030ED42E053E40E946032C454DD4F0FB6F4 -:10194000F894DEBF0FBECDBFDF91CF911F910F91F5 -:10195000FF90EF90DF90CF900C94EB0CC454DD4FD0 -:101960000FB6F894DEBF0FBECDBFDF91CF911F91B0 -:101970000F91FF90EF90DF90CF9008951092870223 -:1019800010928602809171008D7F8093710080910A -:1019900090008F7780939000109248021092470237 -:1019A00010928002109281021092820210928302A1 -:1019B00010927F0210927E02EEE5F2E0AEE4B2E019 -:1019C00011921192119211921D921D9282E0EE37A6 -:1019D000F807B1F708956F927F928F929F92AF921E -:1019E000BF92CF92DF92EF92FF920F931F93CF930C -:1019F000DF936B017C010EE712E04CE5A42E42E080 -:101A0000B42EC7E0D0E0A7019601F801929182912F -:101A1000729162918F010E940D31882349F02197C4 -:101A2000F2E0AF1AB108CF3F8FEFD80761F734C0AB -:101A3000F8011082118212821382F5011182108244 -:101A4000FE01EE0FFF1FEE0FFF1FE25AFD4FDE01FA -:101A5000AA0FBB1FA25BBD4FCE011AC001964481E5 -:101A600055816681778140835183628373831482B9 -:101A700015821682178212962D913C91139711961A -:101A80003C932E9313961C921E92129734961296A4 -:101A90008730910519F7C3CF809186029091870214 -:101AA000019797FD05C0909387028093860204C03A -:101AB0001092870210928602E0918602F0918702CE -:101AC0003097C9F4809171008D7F8093710080916F -:101AD00090008F7780939000109280021092810284 -:101AE000109282021092830210927F0210927E0264 -:101AF0001092470285C03197DF01AA0FBB1FAA0FC2 -:101B0000BB1FA25ABD4FCD90DD90ED90FC90EE0F23 -:101B1000FF1FE25BFD4FC081D18160908002709019 -:101B200081028090820290908302A7019601662D27 -:101B3000772D882D992D0E940D3187FF25C0262DE8 -:101B4000372D482D592DC701B6010E94A83020E03D -:101B500030E04AEF54E40E9411315B018C012A2DE0 -:101B60003B2D402F512F662D772D882D992D0E94CA -:101B7000A9303B014C01A7019601772D992D0E94B8 -:101B80000D31181664F72EC0A7019601662D772D2A -:101B9000882D992D0E945C32181634F5A701960104 -:101BA000662D772D882D992D0E94A83020E030E0F9 -:101BB0004AEF54E40E9411315B018C012A2D3B2D28 -:101BC000402F512F662D772D882D992D0E94A830FA -:101BD0003B014C01A7019601772D992D0E945C32A3 -:101BE00087FFECCF10924D02C0928002D09281020A -:101BF000E0928202F0928302D0937F02C0937E0231 -:101C0000DF91CF911F910F91FF90EF90DF90CF90D8 -:101C1000BF90AF909F908F907F906F9008953E9A65 -:101C2000E1E7F0E080818D7F808382E08093900007 -:101C30008AE18093910008951F920F920FB60F9240 -:101C40001124CF92DF92EF92FF922F933F934F9305 -:101C50005F936F937F938F939F93AF93BF93CF9334 -:101C6000DF93EF93FF9380914702882309F479C0B3 -:101C700020E030E0A90160918002709181028091A2 -:101C80008202909183020E945C3218160CF069C0A7 -:101C900020E030E040E251E46091490270914A0254 -:101CA00080914B0290914C020E945C321816BCF459 -:101CB00080918402909185020196609186027091D4 -:101CC00087020E9448349093850280938402109288 -:101CD000490210924A0210924B0210924C02C0919B -:101CE0008402D0918502CC0FDD1FCC0FDD1FC25ABC -:101CF000DD4F288139814A815B8160E074E284E7AD -:101D00009BE40E9411310E94793170939700609397 -:101D10009600288139814A815B8160E074E284E722 -:101D20009BE40E9411310E947931759567957093FB -:101D300099006093980020E030E040E85FE3609114 -:101D4000490270914A0280914B0290914C020E948C -:101D5000A9306093490270934A0280934B0290939A -:101D60004C0280914802882309F493C0C09043023A -:101D7000D0904402E0904502F090460220E030E02E -:101D8000A901C701B6010E945C321816F4F4A7013C -:101D9000960160E074E284E79BE40E9411310E94A6 -:101DA00079317093970060939600A701960160E0E7 -:101DB00074E284E79BE40E9411310E9479317595A9 -:101DC0006795709399006093980060913D027091BF -:101DD0003E026F5F7F4F70933E0260933D0280E052 -:101DE00090E00E94AA3120913F0230914002409140 -:101DF0004102509142020E945C3287FD4AC08091AC -:101E00003C028F5F80933C029091F0038917A0F011 -:101E10008091F503882319F010923C020DC0809147 -:101E200071008D7F80937100809190008F778093F7 -:101E30009000109248022DC0E091F103F091F2035E -:101E400080913C0298E0899FE00DF11D1124808172 -:101E50009181A281B3818093430290934402A09325 -:101E60004502B093460220E030E040E85EE3648142 -:101E70007581868197810E94603260933F027093E2 -:101E80004002809341029093420210923E021092CF -:101E90003D02FF91EF91DF91CF91BF91AF919F9163 -:101EA0008F917F916F915F914F913F912F91FF9013 -:101EB000EF90DF90CF900F900FBE0F901F9018956E -:101EC0000F931F93CF93DF9300D0CDB7DEB78C0174 -:101ED00080914702882331F04A8369830E94BE0CB7 -:101EE00069814A8181E0809348021093F203009354 -:101EF000F1036093F0034093F503109249021092AE -:101F00004A0210924B0210924C0210923C02F801CD -:101F10004081518162817381409343025093440216 -:101F2000609345027093460220E030E040E85EE3B3 -:101F300064817581868197810E94603260933F023F -:101F400070934002809341029093420210923E02AD -:101F500010923D02809171008260809371008091A7 -:101F600090008068809390000F900F90DF91CF9148 -:101F70001F910F9108956F927F928F929F92AF92CF -:101F8000BF92CF92DF92EF92FF920F931F93CF9366 -:101F9000DF936B017C01EA018091480281110E946C -:101FA000BE0C81E08093470220E030E0A901C70128 -:101FB000B6010E945C3218160CF09AC06090800244 -:101FC00070908102809082029090830220E030E045 -:101FD000A901662D772D882D992D0E940D31811133 -:101FE00028C0C0928002D0928102E0928202F092D8 -:101FF0008302D0937F02C0937E02809186029091EB -:102000008702FC01EE0FFF1FEE0FFF1FE25AFD4F8C -:10201000C082D182E282F382FC01EE0FFF1FE25BFD -:10202000FD4FD183C08301969093870280938602EF -:102030005FC0A7019601662D772D882D992D0E94EE -:102040000D3187FF25C0262D372D482D592DC7016D -:10205000B6010E94A83020E030E04AEF54E40E942C -:1020600011315B018C012A2D3B2D402F512F662D04 -:10207000772D882D992D0E94A9303B014C01A70195 -:102080009601772D992D0E940D31181664F7A9CF6E -:10209000A7019601662D772D882D992D0E945C321F -:1020A00018160CF09ECFA7019601662D772D882D6E -:1020B000992D0E94A83020E030E04AEF54E40E94BD -:1020C00011315B018C012A2D3B2D402F512F662DA4 -:1020D000772D882D992D0E94A8303B014C01A70136 -:1020E0009601772D992D0E945C3287FFECCF79CF36 -:1020F000809171008260809371008091900080686F -:1021000080939000DF91CF911F910F91FF90EF90FE -:10211000DF90CF90BF90AF909F908F907F906F9007 -:102120000895809191020895CF93DF9300D01F927C -:10213000CDB7DEB72091FA03243021F523E02983BF -:102140009B838A832093E9008FEF06C095ED9A95D3 -:10215000F1F70000882329F09091E800815095FF65 -:10216000F5CF8091E80085FF0DC040E050E063E0CE -:1021700070E0CE0101960E947E148091E8008E7777 -:102180008093E8000F900F900F90DF91CF9108950A -:10219000CF93DF9300D01F92CDB7DEB72091FA0323 -:1021A000243029F522E029839B838A8383E080936E -:1021B000E9008FEF06C095ED9A95F1F700008823AE -:1021C00029F09091E800815095FFF5CF8091E800CB -:1021D00085FF0DC040E050E063E070E0CE01019665 -:1021E0000E947E148091E8008E778093E8000F9023 -:1021F0000F900F90DF91CF9108952091FA03243032 -:10220000F9F422E02093E9002FEF06C035ED3A956E -:10221000F1F70000222329F03091E800215035FF2A -:10222000F5CF2091E80025FF0BC040E050E065E0CD -:1022300070E00E947E148091E8008E778093E80021 -:102240000895CF93DF93EC018091FA03843041F538 -:1022500081E08093E9008FEF06C095ED9A95F1F744 -:102260000000882329F09091E800815095FFF5CF78 -:102270008091E80085FF14C040E050E068E070E025 -:10228000CE010E947E148091E8008E778093E80052 -:1022900088E0FE01A9E8B2E001900D928A95E1F78D -:1022A000DF91CF910895BF92CF92DF92EF92FF928C -:1022B0000F931F93CF93DF937C01B62EE90100E0CB -:1022C00010E0C42ED12C0BC04991202F2B0D2F775D -:1022D0004F776FE0C7010E94B4190F5F1F4F0C15B5 -:1022E0001D0594F3DF91CF911F910F91FF90EF9017 -:1022F000DF90CF90BF90089570E06F5F7F4F6F7059 -:1023000077270C94B4190F931F93CF93C42F633086 -:10231000710509F04AC0842F807F803849F18039E7 -:1023200009F043C0622F6F7770E080E090E00E9478 -:10233000AC3120E030E040E451E40E9411319B01D7 -:10234000AC0160E070E080E090E40E94C3320F775F -:1023500010E023E0159507952A95E1F72DEC3CEC6C -:1023600042E053E40E946032A8010E94BB0F1DC0EE -:10237000622F6F7770E080E090E00E94AC3120E047 -:1023800030E040E451E40E9411319B01AC0160E077 -:1023900070E080E090E40E94C3322DEC3CEC42E01F -:1023A00053E40E9460320E94EB0CCC3F29F4CF91A1 -:1023B0001F910F910C94BE0CCF911F910F91089516 -:1023C0000F931F93CF93DF93CDB7DEB727970FB649 -:1023D000F894DEBF0FBECDBF8C0114C08A810E946D -:1023E0008E199A819D839B819E839C819F838111FD -:1023F0001EC089818430B1F08730A1F08630A1F011 -:102400008530A1F0BE016F5F7F4F84E791E00E94AD -:10241000FB1C8111E3CF84E791E00E94EC1C0E9439 -:1024200067190DC083E003C082E001C081E0AE0106 -:102430004B5F5F4F682FC8010E94211AE3CF279698 -:102440000FB6F894DEBF0FBECDBFDF91CF911F91C5 -:102450000F910895EF92FF920F93CF93DF9300D0E7 -:1024600000D000D0CDB7DEB77B014A832B830C832D -:10247000842F2E834D830E948E192E814D818111D0 -:102480001BC082E0E816F10479F083E0E816F1045D -:1024900021F0EA94EF2821F50BC0073F11F487E003 -:1024A00001C084E089830BC0273FD9F786E0FACFCB -:1024B000473FB9F785E0F6CF42954F704983BE019B -:1024C0006F5F7F4F84E791E00E94B11C84E791E049 -:1024D0000E94CF1C84E791E00E94EC1C0E946719C7 -:1024E00026960FB6F894DEBF0FBECDBFDF91CF9119 -:1024F0000F91FF90EF9008958091F903811109C029 -:102500000E946D160E94CA168091E200846080933A -:10251000E20008951092F9030895089508950C9427 -:102520006129809192028F5F8093920262E30E9400 -:102530002834911135C01092920280919302882321 -:1025400079F18091FA03843049F58091E9008F7028 -:102550009091EC0090FF02C090E801C090E0982BB1 -:1025600084E08093E9008091EB0080FF14C08091AB -:10257000EE0087FD03C00FC01092F1008091E800CB -:1025800085FDFACF8091E80080FF05C08091E800CA -:102590008E778093E8009F709093E90010929302E9 -:1025A000089542E061EC81E00E94E31542E061ECB5 -:1025B00082E00E94E31542E061EC83E00E94E315B3 -:1025C00042E261EC84E00E94E31542E361E885E0C9 -:1025D0000E94E31542E360E886E00C94E3158091E5 -:1025E000FC03833009F454C030F4813071F0823040 -:1025F00009F0A5C08CC08A3009F479C08B3009F489 -:102600005FC0893009F09BC020C08091FB03813AF4 -:1026100009F095C08091E800877F8093E800809161 -:10262000FF0390910004892B21F060E080E090E0AE -:1026300003C068E089E892E070E00E941C15809178 -:10264000E8008B778093E80008958091FB03813246 -:1026500009F075C08091FF0390910004892B09F067 -:102660006EC08091E800877F8093E80005C080916C -:10267000FA03882309F463C08091E80082FFF7CF52 -:102680008091F100809391028091E8008B7753C094 -:102690008091FB03813A09F052C08091FF03909131 -:1026A0000004892B09F04BC08091E800877F80935C -:1026B000E8008091E80080FFFCCF80918A0136C05D -:1026C0008091FB038132D9F58091FF039091000442 -:1026D000892BA9F58091E800877F8093E8000E940C -:1026E0001A168091FD0380938A010C9456238091E1 -:1026F000FB03813221F58091E800877F8093E80019 -:102700000E941A168091FE0380938802089580919A -:10271000FB03813AA1F48091E800877F8093E80071 -:102720008091E80080FFFCCF809188028093F100C7 -:102730008091E8008E778093E8000C941A16089533 -:1027400083E093E00E94F0196AE272E183E093E093 -:102750000E94461A60EE71E183E093E00E944A1AFB -:1027600084B7877F84BF88E10FB6F89480936000B8 -:10277000109260000FBE90E080E80FB6F89480934E -:102780006100909361000FBE0E94741D0E946D163F -:102790000E94CA168091E20084608093E2007894DF -:1027A00063E871E183E093E00E94EC196CE771E16A -:1027B00083E093E00E94E41963E571E183E093E034 -:1027C0000E94E8190E940F0E0E9467190E94761D50 -:1027D00080E891E00E94201D0BC00E941E2980917C -:1027E000F803882329F00E94492981110E94681466 -:1027F0008091FA03853089F383E093E00E94F91B0E -:102800000E94801DF5CF292F332723303105B1F0E9 -:102810004CF42130310509F44DC02230310509F066 -:102820004EC007C02132310541F12232310591F10C -:1028300046C0E0EDF0E084EE93E045C0992781309A -:10284000910569F08230910589F0892B09F037C034 -:10285000E0EEF3E0E491F0E080EE93E034C0E2EBF0 -:10286000F3E0E491F0E082EB93E02DC0E6E8F3E0E2 -:10287000E491F0E086E893E026C0643000F5E62FAE -:10288000F0E0EE0FFF1FE550FE4F80819181E9E0FF -:10289000F0E019C0643098F4E62FF0E0DF01AA0FF1 -:1028A000BB1FAD5FBD4F8D919C91E55FFD4FE081FA -:1028B000F0E009C0E2E1F0E084EB94E004C0E0E085 -:1028C000F0E080E090E0DA018D939C93CF010895D1 -:1028D00080E189BD82E189BD09B400FEFDCF809110 -:1028E000D8008F7D8093D8008091E0008260809333 -:1028F000E0008091E00081FDFCCF0895BF92CF926F -:10290000DF92EF92FF920F931F93CF93DF937C019F -:102910008B01EA010E943B16B82E811133C020972B -:1029200031F028813981021B130BE20EF31EC12CFA -:10293000D12C23C08091E80085FD15C08091E8006E -:102940008E778093E800209749F0888199818C0DDB -:102950009D1D9983888325E0B22E14C00E943B16EA -:10296000882359F00EC0F70181917F018093F10017 -:1029700001501109FFEFCF1ADF0A01151105D1F639 -:1029800001C0B82E8B2DDF91CF911F910F91FF9039 -:10299000EF90DF90CF90BF900895BF92CF92DF92DB -:1029A000EF92FF920F931F93CF93DF937C018B01E4 -:1029B000EA010E943B16B82E811133C0209731F0F6 -:1029C00028813981021B130BE20EF31EC12CD12C7E -:1029D00023C08091E80085FD15C08091E8008B77C9 -:1029E0008093E800209749F0888199818C0D9D1D86 -:1029F0009983888345E0B42E14C00E943B16882337 -:102A000059F00EC08091F100F70181937F010150D0 -:102A10001109FFEFCF1ADF0A01151105D1F601C028 -:102A2000B82E8B2DDF91CF911F910F91FF90EF90DA -:102A3000DF90CF90BF90089540910104509102041F -:102A40004617570748F06115710539F44091E800C1 -:102A50004E774093E80001C0BA01FC0140E033C06A -:102A60008091FA03882309F444C0853009F443C0F7 -:102A70008091E80083FD41C08091E80082FD33C071 -:102A80008091E80080FF1FC09091F3008091F200D8 -:102A9000392F20E0A901482BCA0106C0419140937B -:102AA000F1006150710901966115710519F08830C6 -:102AB0009105A0F341E0089709F040E08091E8001B -:102AC0008E778093E8006115710551F64111C8CFEA -:102AD0000AC08091FA03882361F0853061F080910B -:102AE000E80083FD0AC08091E80082FFF2CF80E019 -:102AF000089582E0089583E0089581E0089540916B -:102B00000104509102044617570748F061157105FA -:102B100039F44091E8004E774093E80001C0BA01D3 -:102B2000FC0140E034C08091FA03882309F445C0D9 -:102B3000853009F444C08091E80083FD42C0809153 -:102B4000E80082FD34C08091E80080FF20C09091B1 -:102B5000F3008091F200392F20E0A901482BCA012F -:102B600007C044914093F10031966150710901967C -:102B70006115710519F08830910598F341E00897C7 -:102B800009F040E08091E8008E778093E8006115BD -:102B9000710549F64111C7CF0AC08091FA03882315 -:102BA00061F0853061F08091E80083FD0AC080917A -:102BB000E80082FFF2CF80E0089582E0089583E08C -:102BC000089581E00895982F2CC09093E9009817FC -:102BD00039F07091EC002091ED005091F00003C0AD -:102BE000242F762F50E021FD02C09F5F1AC0309144 -:102BF000EB003E7F3093EB003091ED003D7F309352 -:102C0000ED003091EB0031603093EB007093EC00FD -:102C10002093ED005093F0002091EE0027FDE5CFCA -:102C200007C0973090F28F708093E90081E008959B -:102C300080E008958091FB0387FD05C08091E80046 -:102C400080FF0EC012C08091E80082FD05C0809117 -:102C5000FA038111F8CF08958091E8008B7708C0BE -:102C60008091FA038111EACF08958091E8008E7770 -:102C70008093E80008958091E4009091E50045E696 -:102C80002091EC0020FD1FC023C02091FA032223D5 -:102C900091F0253091F02091EB0025FD10C020919E -:102CA000E4003091E5002817390751F34150C9017C -:102CB00039F784E0089582E0089583E0089581E083 -:102CC000089580E008952091E80020FFDECFF9CF3D -:102CD0002091E80022FFD9CFF4CF0E94DB160E949A -:102CE000E316E0EEF0E0808181608083E8EDF0E0C3 -:102CF00080818F77808319BCA7EDB0E08C918E7FA7 -:102D00008C9380818F7E80831092F90308950F93B6 -:102D10001F93CF93DF930E94DB160E94E316C8ED4A -:102D2000D0E088818F7788838881806888838881D4 -:102D30008F7D888319BC1092FA031092F6031092CB -:102D4000F8031092F70300EE10E0F80180818B7F0A -:102D5000808388818160888342E060E080E00E9417 -:102D6000E315E1EEF0E080818E7F8083E2EEF0E01B -:102D7000808181608083808188608083F801808188 -:102D80008E7F8083888180618883DF91CF911F91BE -:102D90000F910895E8EDF0E080818F7E8083E7ED6C -:102DA000F0E080818160808384E082BF81E0809355 -:102DB000F9030C948716E8EDF0E080818E7F808324 -:102DC0001092E20008951092DA001092E100089546 -:102DD0001F920F920FB60F9211242F933F934F9390 -:102DE0005F936F937F938F939F93AF93BF93EF9373 -:102DF000FF938091E10082FF0BC08091E20082FF8F -:102E000007C08091E1008B7F8093E1000E949112C6 -:102E10008091DA0080FF1FC08091D80080FF1BC026 -:102E20008091DA008E7F8093DA008091D90080FF54 -:102E30000DC080E189BD82E189BD09B400FEFDCFEE -:102E400081E08093FA030E947C1205C019BC1092A5 -:102E5000FA030E948A128091E10080FF19C08091DC -:102E6000E20080FF15C08091E2008E7F8093E20037 -:102E70008091E20080618093E2008091D8008062BE -:102E80008093D80019BC85E08093FA030E948E12CB -:102E90008091E10084FF30C08091E20084FF2CC06B -:102EA00080E189BD82E189BD09B400FEFDCF80913A -:102EB000D8008F7D8093D8008091E1008F7E809331 -:102EC000E1008091E2008F7E8093E2008091E20039 -:102ED00081608093E2008091F603882311F084E002 -:102EE00007C08091E30087FF02C083E001C081E05A -:102EF0008093FA030E948F128091E10083FF29C022 -:102F00008091E20083FF25C08091E100877F80935C -:102F1000E10082E08093FA031092F6038091E100D1 -:102F20008E7F8093E1008091E2008E7F8093E200AB -:102F30008091E20080618093E20042E060E080E006 -:102F40000E94E3158091F00088608093F0000E9459 -:102F50008D12FF91EF91BF91AF919F918F917F91D2 -:102F60006F915F914F913F912F910F900FBE0F90F6 -:102F70001F9018951F920F920FB60F9211242F9346 -:102F80003F934F935F936F937F938F939F93AF93F1 -:102F9000BF93CF93EF93FF938091E9008F7090914F -:102FA000EC0090FF02C090E801C090E0C92FC82B50 -:102FB0001092E9008091F000877F8093F000789470 -:102FC0000E94FE171092E9008091F00088608093C3 -:102FD000F000CF70C093E900FF91EF91CF91BF91C6 -:102FE000AF919F918F917F916F915F914F913F91A1 -:102FF0002F910F900FBE0F901F9018951F93CF9396 -:10300000DF93CDB7DEB7AC970FB6F894DEBF0FBE37 -:10301000CDBFEBEFF3E08091F100819324E0E3304A -:10302000F207C9F70E94EF128091E80083FF37C1D1 -:103030008091FB039091FC03953009F488C038F42B -:103040009130B1F170F0933009F029C131C098305E -:1030500009F4F8C0993009F404C1963009F01FC191 -:103060009DC0803821F0823809F019C108C08091D4 -:10307000F7039091F803992389F082600FC0809143 -:10308000FF03909100048F7099278093E90080914D -:10309000EB0085FB882780F91092E9009091E80009 -:1030A000977F9093E8008093F1001092F100D5C0D3 -:1030B000882319F0823009F0F2C08F7121F082303C -:1030C00009F0EDC00BC08091FD03813009F0E7C02D -:1030D000933009F080E08093F8032FC08091FD03C6 -:1030E00081112BC08091FF03909100048F7099276C -:1030F000009709F4D4C08093E9002091EB0020FFF1 -:103100001CC02091FC03233021F48091EB008062ED -:1031100012C09091EB0090619093EB0021E030E0C1 -:1031200001C0220F8A95EAF72093EA001092EA0084 -:103130008091EB0088608093EB001092E900809111 -:10314000E800877F8093E8000E941A16A8C08111CA -:10315000A6C08091FD039091FE038F779927182FC9 -:103160009091E3009078982B9093E3008091E80091 -:10317000877F8093E8000E941A168091E80080FF04 -:10318000FCCF8091E30080688093E300112311F06D -:1031900083E001C082E08093FA0381C080588230CE -:1031A00008F07DC08091FD039091FE038C3D23E0EB -:1031B000920779F583E08A838AE289834FB7F8948E -:1031C000DE01139620E03EE051E2E32FF0E0509361 -:1031D0005700E49120FF03C0E295EF703F5FEF706E -:1031E0008E2F90E0EA3010F0C79601C0C0968D9304 -:1031F0009D932F5F243149F74FBF8091E800877F6F -:103200008093E8006AE270E0CE0101960E941C15EE -:1032100013C0AE01455D5F4F6091FF030E94031430 -:103220000097E9F12091E800277F2093E800BC0196 -:103230008BA59CA50E947F158091E8008B778093D9 -:10324000E8002DC0803859F58091E800877F809391 -:10325000E8008091F6038093F1008091E8008E777A -:1032600071CF81111CC09091FD039230C0F4809108 -:10327000E800877F8093E8009093F6030E941A1677 -:103280008091F603811104C08091E30087FF02C0A2 -:1032900084E001C081E08093FA030E94D112809102 -:1032A000E80083FF0AC08091E800877F8093E800F0 -:1032B0008091EB0080628093EB00AC960FB6F8949F -:1032C000DEBF0FBECDBFDF91CF911F910895CF9389 -:1032D0008091FA038823B1F08091E9008F7090917A -:1032E000EC0090FF02C090E801C090E0C92FC82B0D -:1032F0001092E9008091E80083FD0E94FE17CF70D4 -:10330000C093E900CF910895881F8827881F0895EA -:1033100091E0883F08F490E0892F0895982F907FDE -:10332000903B99F038F4903981F0903A71F09038F0 -:10333000C9F40BC0903DA1F018F4903C99F410C072 -:10334000903E19F0903F71F402C083E00895E82F99 -:10335000E15FEF3038F4F0E0E15FFD4F80810895E8 -:1033600082E0089580E008950F932F774F776F7074 -:10337000606BDC01ED91FC91022F242F462F63E05E -:1033800070E009950F9108950F932F774F776F7025 -:103390006069DC01ED91FC91022F242F462F63E040 -:1033A00070E009950F9108950F932F774F776F7005 -:1033B0006068DC01ED91FC91022F242F462F63E021 -:1033C00070E009950F910895FC017383628308955D -:1033D000FC01738F628F0895FC01758F648F0895CF -:1033E000CF93DF93EC011DA21FA21EA2BC01685D5A -:1033F0007F4F40EC88519F4F0E942D1C1B821A82E8 -:103400001D821C821F821E82198618861B861A86C0 -:103410001D861C861F861E86198A188A1B8A1A8A90 -:103420001D8A1C8A1F8A1E8A198E188E1B8E1A8E60 -:103430001D8E1C8E1F8E1E8E19A218A2DF91CF9199 -:103440000895CF92DF92FF920F931F93CF93DF9354 -:103450001F92CDB7DEB7F62E6A018C0108511F4FBF -:1034600008C0F60161916F01C80149830E94341CB4 -:1034700049818C2D841B8F15A0F30F90DF91CF9184 -:103480001F910F91FF90DF90CF900895FC01718301 -:1034900060830895FC0171A360A30895AF92BF9269 -:1034A000CF92DF92EF92FF920F931F93CF93DF9310 -:1034B00000D01F92CDB7DEB77C016B01142FB22E66 -:1034C000A02EDC0195968C9195978430F1F45A9654 -:1034D000ED91FC915B97309709F4D8C0CB0101972F -:1034E00063E070E00E943434DB01AA0FBB1FA60F1B -:1034F000B71F49832A830B834C2D4A1B9E012F5FE4 -:103500003F4FBD01C7010995B1C06230710509F493 -:1035100053C06330710529F06130710509F09CC01A -:1035200083C0842F807F803A01F130F48038B9F075 -:10353000803909F0ABC00DC0803EE9F0803F09F151 -:10354000803B09F0A3C0D7011296ED91FC9113972F -:1035500023C0D7011496ED91FC9115971DC0D7019A -:103560001696ED91FC91179717C0D7011896ED911B -:10357000FC91199711C0D7011A96ED91FC911B97F8 -:103580000BC0423F09F082C0D7011C96ED91FC911F -:103590001D97309731F47AC0309709F477C0123F05 -:1035A00021F42A2D4B2D62EF04C0612F6F702A2D5C -:1035B0004B2DC70109955AC0842F807F803D59F05B -:1035C000803F79F0803C09F061C0D7011E96ED91F3 -:1035D000FC911F9719C0D7015096ED91FC9151971E -:1035E00013C0433F31F4D7015296ED91FC915397AC -:1035F00008C0413F09F04AC0D7015496ED91FC91B3 -:103600005597309741F442C0309709F43FC0133FBB -:1036100011F0113F19F44B2D612F03C0612F6F7012 -:103620004B2DC701099522C0842F0E948819882339 -:1036300031F0D7015696ED91FC91579707C0163F90 -:1036400029F5D7015896ED91FC9159973097F1F0F3 -:10365000612FC70109950AC064307105A8F416C02E -:103660000A2D2B2D412FB601C7010995D7015E9672 -:10367000ED91FC915F97309789F00A2D2B2D412F0A -:10368000B601C70109950AC0C12CD12CD7015C969F -:10369000ED91FC915D97309719F7E8CF0F900F905F -:1036A0000F90DF91CF911F910F91FF90EF90DF90DE -:1036B000CF90BF90AF900895EF92FF920F931F931A -:1036C000CF93DF93EC01162F862F0E948819882351 -:1036D00069F0FDA081E08DA300E020E0412F61E0D2 -:1036E00070E0CE010E944E1AFDA27CC0812F0E9484 -:1036F00084194DA1882309F440C0443029F01AA34D -:1037000021E030E03FA32EA3812F0E948E1981304B -:1037100031F070F0823051F0833059F507C08DA33D -:1037200000E020E0412F61E070E01EC08DA35AC090 -:10373000103F19F0173FE9F404C084E08DA31AA3E9 -:103740003FC02EA13FA1C90163E070E00E94343464 -:103750008C0F9D1FFC0112A3B9016F5F7F4F7FA3E8 -:103760006EA30CA12BA14AA1CE010E944E1A1DA24C -:1037700039C01DA21FA21EA235C0442399F12EA15B -:103780003FA1C90163E070E00E9434347C01FE0176 -:10379000E80FF91F12A3B9016F5F7F4F7FA36EA3DC -:1037A0008130910591F082E0E816F104D9F40CA182 -:1037B0002BA14AA1CE010E944E1A8DA1843091F016 -:1037C00081E090E09FA38EA30DC0423059F400E049 -:1037D0002BA14AA1CE010E944E1A8DA1843011F076 -:1037E000FFA2EEA2DF91CF911F910F91FF90EF907A -:1037F0000895CF92DF92EF92FF920F931F93CF9392 -:10380000DF93EC01E8A1F9A1309709F009958E0149 -:1038100008511F4FC8010E94661CE12CF12CC82ED4 -:10382000D12C0FC060E0C8010E947A1C682FCE0125 -:103830000E945C1B61E0C8010E948B1C8FEFE81A9C -:10384000F80AEC14FD0470F3DF91CF911F910F91F2 -:10385000FF90EF90DF90CF900895FC014283748336 -:1038600063831182108208950F931F93CF93DF9388 -:10387000EC01062F0E94AC1C182F298130E0C901F1 -:1038800001966A8170E00E944834488150E08417B4 -:10389000950729F4812F0E94AF1C80E012C0EB81B4 -:1038A000FC81E20FF31F00832981822F90E00196B3 -:1038B0006A8170E00E9448348983812F0E94AF1C86 -:1038C00081E0DF91CF911F910F910895CF93DF9306 -:1038D000EC010E94AC1C29819881291710F0C22F9D -:1038E00002C0CA81C20FC91B0E94AF1C8C2FDF917E -:1038F000CF910895FC012081862F90E0820F911DC9 -:10390000628170E00E9448340380F481E02DE80F6A -:10391000F91F808108950F931F93CF93DF931F9218 -:10392000CDB7DEB78C0169830E94AC1C482FF8012B -:1039300080816981262F30E0280F311D6281C90105 -:1039400070E00E9448348083842F0F90DF91CF91E4 -:103950001F910F910C94AF1C8FB7F89408958FBFEF -:103960000895FC01CB012091FA032430B1F42181A8 -:103970002F702093E90040E050E064E070E00E9486 -:103980007E1481110BC09091E80095FD07C09091C5 -:10399000E8009E779093E800089582E008952091D2 -:1039A000FA032430A9F4FC0181818F708093E9002F -:1039B0003091F3002091F200932F80E0822B892B2D -:1039C00049F08091E8008E778093E8000C943B16D4 -:1039D00082E0089580E008952091FA03243051F4A4 -:1039E000FC0121812F702093E9002091E80020FD47 -:1039F0000C94CF1C0895FC01CB012091FA032430D4 -:103A000011F080E0089526812F702093E900209125 -:103A1000E80022FFF6CF2091E80025FFF2CF40E03A -:103A200050E064E070E00E94CD148091E80085FDD4 -:103A300005C08091E8008B778093E80081E00895CD -:103A400090939502809394020895E0919402F091EE -:103A50009502309721F00190F081E02D099480E0EB -:103A60000895E0919402F0919502309721F0028040 -:103A7000F381E02D09940895E0919402F09195026C -:103A8000309721F00480F581E02D0994089520916C -:103A90009602309197028217930771F090939702E4 -:103AA00080939602E0919402F0919502309721F074 -:103AB0000680F781E02D09940895209198023091B5 -:103AC00099028217930771F090939902809398025C -:103AD000E0919402F0919502309721F00084F185F5 -:103AE000E02D0994089508950C94731D0E94952962 -:103AF0000E94AD060E94692A0C9411300C94E705CF -:103B00005F926F927F928F929F92AF92BF92CF926D -:103B1000DF92EF92FF920F931F93CF93DF93CDB776 -:103B2000DEB72A970FB6F894DEBF0FBECDBF0E9456 -:103B3000BD079AE9C92E92E0D92E00E010E0AA2430 -:103B4000A394B12C502E802F0E9411093C01F60144 -:103B5000E190F1906F01E826F926E114F10431F4C7 -:103B60000F5F1F4F0530110569F73AC08091F002D1 -:103B700081FD0E941A0920E030E04501022E02C0BA -:103B8000880C991C0A94E2F7C4018E219F21892B8D -:103B900009F12E835F826820792081E0672809F48B -:103BA00080E088870E949E298160782F9A87898784 -:103BB0004E815F8168858A850E94391EF801EE0F6B -:103BC000FF1FE656FD4F80819181882599259183BD -:103BD000808316C02F5F3F4F2C30310571F6C0CF68 -:103BE0008FEF89838A831B820E949E298160782FB0 -:103BF0009D838C8349815A816B818D810E94391EFE -:103C00000E94562D1091A4020E94251D1817D9F06C -:103C10000E94251D8093A4022A960FB6F894DEBF59 -:103C20000FBECDBFDF91CF911F910F91FF90EF900D -:103C3000DF90CF90BF90AF909F908F907F906F90CC -:103C40005F900C947E1D2A960FB6F894DEBF0FBECF -:103C5000CDBFDF91CF911F910F91FF90EF90DF903B -:103C6000CF90BF90AF909F908F907F906F905F901C -:103C70000895CF93DF93CDB7DEB72B970FB6F894A7 -:103C8000DEBF0FBECDBF4F83588769877A878B878A -:103C9000DE01119686E0FD0111928A95E9F785E033 -:103CA000FE01379601900D928A95E1F749815A817C -:103CB0006B817C818D819E810E9415262B960FB68B -:103CC000F894DEBF0FBECDBFDF91CF910895CF93A3 -:103CD000C82F882309F4C1C0823859F40E94251DD9 -:103CE00081FDBBC089E30E947C280E94F82889E3FB -:103CF0000CC0833879F40E94251D80FDAEC083E599 -:103D00000E947C280E94F82883E50E949E28CF917B -:103D10000C94F828843859F40E94251D82FD9DC01A -:103D200087E40E947C280E94F82887E4EECF845024 -:103D3000813A48F48C2F0E94732F81118EC08C2FF2 -:103D40000E947C28E4CF8C2F805E883050F4C770AE -:103D500081E090E001C0880FCA95EAF70E94BF2871 -:103D6000D6CF8C2F855A833078F4C53A29F0C63ADD -:103D700031F482E890E005C081E890E002C083E879 -:103D800090E0CF910C94471D8C2F885A833108F016 -:103D900064C0C83A39F1C93A41F1CA3A49F1CB3A5B -:103DA00051F1CC3A59F1CD3A61F1C03B69F1CE3ACB -:103DB00071F1CF3A79F1C13B81F1C23B89F1C33B4B -:103DC00091F1C43B99F1C53BA1F1C63BA9F1C73BB9 -:103DD000B1F1C83BB9F1C93BC1F1CA3BC9F58AE2AF -:103DE00092E038C082EE90E035C089EE90E032C0BB -:103DF0008AEE90E02FC085EB90E02CC086EB90E03F -:103E000029C087EB90E026C08CEC90E023C08DECBD -:103E100090E020C083E891E01DC08AE891E01AC0DC -:103E200082E991E017C084E991E014C081E292E058 -:103E300011C083E292E00EC084E292E00BC085E202 -:103E400092E008C086E292E005C087E292E002C0FC -:103E500080E090E0CF910C945D1DCF910895882370 -:103E600009F44DC0823859F40E94251D81FF47C0D6 -:103E700089E30E947C280E94F82889E30CC08338DB -:103E800071F40E94251D80FF3AC083E50E947C28C2 -:103E90000E94F82883E50E949E280C94F828843814 -:103EA00059F40E94251D82FF2AC087E40E947C28C5 -:103EB0000E94F82887E4EFCF982F9450913A08F4A5 -:103EC000EACF982F905E983058F4282F277081E021 -:103ED00090E001C0880F2A95EAF70E94C528DDCF3F -:103EE000982F955A933020F480E090E00C94471D71 -:103EF000885A833120F480E090E00C945D1D089591 -:103F0000882321F00E94BF280C94F8280895882364 -:103F100021F00E94C5280C94F8280895BF92CF92F2 -:103F2000DF92EF92FF920F931F93CF93DF93CDB762 -:103F3000DEB727970FB6F894DEBF0FBECDBF8C015A -:103F400085E0F801DE01119601900D928A95E1F766 -:103F5000F80130812181F280558152955F70838113 -:103F60009481892B39F02F3F41F481E090E03F3F6D -:103F700031F003C081E090E002C080E090E080FD7D -:103F800073C339832A8389819A815E830E94392889 -:103F9000B92E8F830E9438280E9460272B2D2295EE -:103FA0002F7030E05E816F812530310509F4E6C065 -:103FB0006CF4243031050CF0A2C04B2D407F8B2DCA -:103FC0008F70223031050CF045C017C02C30310500 -:103FD0004CF42A3031050CF0E7C12830310509F0E6 -:103FE00043C3E5C02D30310509F4BAC20CF4A2C2B6 -:103FF0002F30310509F038C323C3182F411101C0F8 -:1040000002C01295107FFF2059F0112309F46BC2F2 -:10401000812F6F830E94CF280E94F8286F8163C28E -:10402000862F0E942F1F112309F41EC3812F0E9487 -:10403000D52827960FB6F894DEBF0FBECDBFDF910F -:10404000CF911F910F91FF90EF90DF90CF90BF9095 -:104050000C94F828403211F08295807F662319F085 -:10406000613071F523C0FF20B1F0511101C032C0A1 -:10407000513081F527960FB6F894DEBF0FBECDBF45 -:10408000DF91CF911F910F91FF90EF90DF90CF9034 -:10409000BF900C94DF28511101C003C0513009F4C6 -:1040A000E3C28E830E94E2288E819AC1FF2021F014 -:1040B000563008F0D9C20EC0553008F0D5C290C1B4 -:1040C000FF20C9F0552331F0F801958190FF0BC214 -:1040D0009F70958327960FB6F894DEBF0FBECDBFB5 -:1040E000DF91CF911F910F91FF90EF90DF90CF90D4 -:1040F000BF900C94801F552309F472C109C22B2D67 -:1041000026952695237030E02115310529F02130C0 -:10411000310509F0A9C219C0FF2021F0862F9B2D7F -:10412000937002C080E090E027960FB6F894DEBF4F -:104130000FBECDBFDF91CF911F910F91FF90EF90F8 -:10414000DF90CF90BF900C94471DFF2021F0862F69 -:104150009B2D937002C080E090E027960FB6F894F4 -:10416000DEBF0FBECDBFDF91CF911F910F91FF90AA -:10417000EF90DF90CF90BF900C945D1D862FFF20B5 -:1041800019F00E945C2C02C00E94C42C27960FB626 -:10419000F894DEBF0FBECDBFDF91CF911F910F917D -:1041A000FF90EF90DF90CF90BF900C944B2D8B2D14 -:1041B000837009F079C0F11057C2262F22952695F9 -:1041C0002770220F220F862F8F70C82ED12CE12C42 -:1041D000F12C022E04C0CC0CDD1CEE1CFF1C0A943A -:1041E000D2F764FF10C06FE070E080E090E004C0A0 -:1041F000660F771F881F991F2A95D2F760957095D3 -:104200008095909503C060E070E0CB012B2D269542 -:1042100026952370422F50E042305105D9F04330AB -:10422000510569F16C297D298E299F29413051055D -:1042300051F127960FB6F894DEBF0FBECDBFDF91C8 -:10424000CF911F910F91FF90EF90DF90CF90BF9093 -:104250000C9475276C297D298E299F2927960FB6E6 -:10426000F894DEBF0FBECDBFDF91CF911F910F91AC -:10427000FF90EF90DF90CF90BF900C9487270E9423 -:104280007527C701B60127960FB6F894DEBF0FBE9B -:10429000CDBFDF91CF911F910F91FF90EF90DF90F5 -:1042A000CF90BF900C946327FF2019F08B2D817065 -:1042B00001C08695882309F4D7C1262F229526951B -:1042C0002770220F220F862F8F70C82ED12CE12C41 -:1042D000F12C022E04C0CC0CDD1CEE1CFF1C0A9439 -:1042E000D2F764FF10C06FE070E080E090E004C09F -:1042F000660F771F881F991F2A95D2F760957095D2 -:104300008095909503C060E070E0CB012B2D269541 -:1043100026952370422F50E042305105D9F04330AA -:10432000510569F16C297D298E299F29413051055C -:1043300051F127960FB6F894DEBF0FBECDBFDF91C7 -:10434000CF911F910F91FF90EF90DF90CF90BF9092 -:104350000C9414286C297D298E299F2927960FB645 -:10436000F894DEBF0FBECDBFDF91CF911F910F91AB -:10437000FF90EF90DF90CF90BF900C9426280E9482 -:104380001428C701B60127960FB6F894DEBF0FBEFA -:10439000CDBFDF91CF911F910F91FF90EF90DF90F4 -:1043A000CF90BF900C940228603F59F120F4603EFA -:1043B00008F494C008C0623F09F467C0F0F1633F9D -:1043C00009F08CC065C0162F1F708B2D8F71FF20D8 -:1043D00021F00E94AD27812F7DCE0E94C827812F1A -:1043E00027960FB6F894DEBF0FBECDBFDF91CF91F9 -:1043F0001F910F91FF90EF90DF90CF90BF900C94A2 -:10440000871FFF20B1F0553008F02EC18B2D8F7122 -:1044100027960FB6F894DEBF0FBECDBFDF91CF91C8 -:104420001F910F91FF90EF90DF90CF90BF900C9471 -:10443000E727563008F018C1E9CFFF2099F08B2DFF -:104440008F7127960FB6F894DEBF0FBECDBFDF91F8 -:10445000CF911F910F91FF90EF90DF90CF90BF9081 -:104460000C94AD278B2D8F7127960FB6F894DEBF75 -:104470000FBECDBFDF91CF911F910F91FF90EF90B5 -:10448000DF90CF90BF900C94C827F110EBCFD7CF1F -:10449000FF2099F08B2D8F7127960FB6F894DEBF11 -:1044A0000FBECDBFDF91CF911F910F91FF90EF9085 -:1044B000DF90CF90BF900C949E2727960FB6F8946C -:1044C000DEBF0FBECDBFDF91CF911F910F91FF9047 -:1044D000EF90DF90CF90BF900C949927FF20A9F028 -:1044E000552309F4ACCF862F27960FB6F894DEBF7C -:1044F0000FBECDBFDF91CF911F910F91FF90EF9035 -:10450000DF90CF90BF900C94671E552309F4AACF7B -:10451000862F27960FB6F894DEBF0FBECDBFDF9172 -:10452000CF911F910F91FF90EF90DF90CF90BF90B0 -:104530000C942F1F4B2D4F70C8010E941A03279611 -:104540000FB6F894DEBF0FBECDBFDF91CF911F91A4 -:104550000F91FF90EF90DF90CF90BF900C94CB26FF -:10456000F11082C09B2D9F70492F50E042305105C1 -:1045700099F144F44115510569F04130510509F0B4 -:1045800073C019C043305105C1F14430510509F0E1 -:104590006BC044C027960FB6F894DEBF0FBECDBFE8 -:1045A000DF91CF911F910F91FF90EF90DF90CF900F -:1045B000BF900C94223027960FB6F894DEBF0FBE42 -:1045C000CDBFDF91CF911F910F91FF90EF90DF90C2 -:1045D000CF90BF900C94393027960FB6F894DEBF79 -:1045E0000FBECDBFDF91CF911F910F91FF90EF9044 -:1045F000DF90CF90BF900C94553027960FB6F8946B -:10460000DEBF0FBECDBFDF91CF911F910F91FF9005 -:10461000EF90DF90CF90BF900C946830862F279654 -:104620000FB6F894DEBF0FBECDBFDF91CF911F91C3 -:104630000F91FF90EF90DF90CF90BF900C948C3053 -:104640004B2D4F70C80127960FB6F894DEBF0FBEF2 -:10465000CDBFDF91CF911F910F91FF90EF90DF9031 -:10466000CF90BF900C941B0927960FB6F894DEBF2D -:104670000FBECDBFDF91CF911F910F91FF90EF90B3 -:10468000DF90CF90BF9008950E94DC280E94B1284F -:104690000E94F8280E94F72D0E944B2D80E090E0A8 -:1046A0000E94471D80E090E00C945D1D0E94CC2884 -:1046B0000C9444230E943928292F22952F7030E032 -:1046C0002C3031054CF42A3031056CF4225031097C -:1046D0002230310590F407C02C30310551F02F30D5 -:1046E000310559F406C0803E10F0803F31F481E07E -:1046F000089593FB882780F9089580E00895CF936B -:10470000DF9300D000D01F92CDB7DEB70F900F908F -:104710000F900F900F90DF91CF910895CF93DF937B -:1047200000D000D000D0CDB7DEB726960FB6F894F3 -:10473000DEBF0FBECDBFDF91CF9108951F93CF9302 -:10474000DF93C091DB0216E012C0D0E01C9FF001A5 -:104750001D9FF00D1124E555FD4F4081518162816F -:104760007381848195810E948E232196C7708091E8 -:10477000DC02C813EACFDF91CF911F9108954091D9 -:10478000A5025091A6026091A7027091A8028091A3 -:10479000A9029091AA020C948E230F931F93CF939A -:1047A000DF938091AA0282958F7009F069C0809191 -:1047B000A702882309F464C0A091DB02D091DC0237 -:1047C000B091A502C091A6028091A8029091A90281 -:1047D00021E030E0BF3F11F020E030E0122FBC01BB -:1047E0006095709506E04AC0009721F0CF3F29F40C -:1047F000212F05C021E030E002C020E030E020FDA4 -:104800003BC04A2F50E0049FF001059FF00D11249A -:10481000E555FD4F2181C2132FC02081B2132CC05A -:104820002281211129C0238134812817390718F0EA -:10483000281B390B02C0260F371F283C3105E0F436 -:104840008091AA028F7080618093AA0286E0849F83 -:10485000F001859FF00D1124E055FD4F80818F7090 -:104860008061808385EA92E00E948E1FDF91CF9164 -:104870001F910F910C949E23AF5FA770AD13B4CF1F -:10488000DF91CF911F910F910895EF92FF920F93B7 -:104890001F93CF93DF93CDB7DEB762970FB6F8942F -:1048A000DEBF0FBECDBF8C0185E0F801DE011D9695 -:1048B00001900D928A95E1F7D8014C9111965C9187 -:1048C000119712966C9112971396ED90FC90149795 -:1048D0007091A502E091A6028091A8029091A90290 -:1048E000009739F0EF3F41F421E030E07F3F31F0B5 -:1048F00003C021E030E002C020E030E020FD5CC1D8 -:104900002091A702222309F4F1C0E816F90628F045 -:104910009701281B390BC90104C0809590958E0D15 -:104920009F1D883C910508F098C08091AA02982F9D -:10493000907F09F064C0E51314C0741312C06111B4 -:1049400010C08F7080618093AA020E94BF2385EA05 -:1049500092E00E948E1F8091AA02D80115968C9336 -:1049600043C1EF2839F05F3F41F481E090E04F3FD1 -:1049700031F003C081E090E002C080E090E080FD73 -:1049800003C081E0862702C080E090E080FF2EC057 -:104990008091DB022091DC0236E013C090E0389F6A -:1049A000F001399FF00D1124E555FD4F718157132A -:1049B00006C07081471303C07281671317C0019648 -:1049C00087708213EBCF12C19F7059F0882309F4CE -:1049D0000BC107C09F7029F0F8019581907F09F401 -:1049E00003C1805E883008F4FFC0D2C0662309F49A -:1049F000FBC08091AA0281608093AA02F5C0E513F2 -:104A000008C0741306C0611104C0D80115968C93B8 -:104A10009DC04D875E878D859E856A8B0E945A2337 -:104A20006A89882309F4B4C0662309F4B1C02091CF -:104A3000AA02822F82958F7090E002970CF4C6C074 -:104A40008091A5029091A60298878F831986FB8694 -:104A5000EA862C87CE01079646C08091AA02982F3D -:104A6000907F59F47E2DF98AE88A89890E947F23F4 -:104A700085EA92E00E948E1F95C0E51311C0741361 -:104A80000FC061110DC0F8018583C8010E948E1FFF -:104A9000E5EAF2E086E0DF011D928A95E9F7A2C01F -:104AA0004D875E878D859E856A8B0E945A236A8911 -:104AB000882309F46DC0662309F46AC02091AA0214 -:104AC000822F82958F7090E002970CF47FC08091C6 -:104AD000A5029091A6029A8389831B82FD82EC82B3 -:104AE0002E83CE0101960E948E1F70C0E816F90633 -:104AF00028F09701281B390BC90104C080959095B7 -:104B00008E0D9F1D883C910508F046C0662309F470 -:104B10003FC0E51330C074132EC02091AA0220FDBF -:104B200021C0322F32953F70832F90E00097D1F053 -:104B3000D80115962C9315970F9741F0832F8F5F0F -:104B40008295807F2F70282B15962C93C8010E9488 -:104B50008E1F86E0F801A5EAB2E001900D928A95D9 -:104B6000E1F73EC086E0F801A5EAB2E001900D92BF -:104B70008A95E1F737C04D875E878D859E850E94B7 -:104B80005A23811123C08091AA0281608093AA02D6 -:104B9000C8010E948E1F26C07E2DF98AE88A898965 -:104BA0000E947F23E5EAF2E086E0DF011D928A950C -:104BB000E9F70E94BF2318C0662351F34D875E8733 -:104BC0008D859E850E945A23882311F386E0F80183 -:104BD000A5EAB2E001900D928A95E1F70E94CD23FB -:104BE0000E94BF2381E014C080E012C04D875E8721 -:104BF0008D859E850E943928292F22952F7030E0BF -:104C0000223031050CF4E0CE243031050CF6E2CE32 -:104C100062960FB6F894DEBF0FBECDBFDF91CF9185 -:104C20001F910F91FF90EF9008951F93CF93DF9303 -:104C3000CDB7DEB72C970FB6F894DEBF0FBECDBF51 -:104C40004F83588769877A878B879C87CE01079621 -:104C50000E9445248823D9F02F8138858A859B8539 -:104C6000892B39F03F3F19F080E090E004C02F3FDE -:104C7000D9F781E090E0892B09F06DC04F8158850C -:104C800069857A858B859C850E948E2364C086E029 -:104C9000FE013796DE01119601900D928A95E1F79B -:104CA000FF81E8854A855B854115510539F0EF3F65 -:104CB00041F481E090E0FF3F31F003C081E090E0FB -:104CC00002C080E090E080FD46C02091DC0230E030 -:104CD000C9010196877099276091DB0270E0861701 -:104CE000970709F440C0F983EA835D834C8396E01B -:104CF000929FD001939FB00D1124A555BD4FFE0189 -:104D0000319601900D929A95E1F78093DC020E9412 -:104D10009E2321C0189FC001112485559D4F0E94DC -:104D20004524882371F1E091DB021E9FF0011124DC -:104D3000E555FD4F40815181628173818481958168 -:104D40000E948E238091DB0290E001968770992764 -:104D50008093DB0201C016E08091DB029091DC02BF -:104D60008913D8CF0EC00E9456231092DC021092F5 -:104D7000DB02E5EAF2E086E0DF011D928A95E9F7C1 -:104D8000EACF2C960FB6F894DEBF0FBECDBFDF91F1 -:104D9000CF911F910895DF92EF92FF920F931F938F -:104DA000CF93DF93EC01009709F46EC0D12CEE2471 -:104DB000E394F12C8E010F5F1F4FFE018491843725 -:104DC00048F4843008F04CC0813071F0823009F032 -:104DD0005BC01EC0853709F43FC080F1982F9458FE -:104DE000903708F051C03FC02296F8018491982F67 -:104DF000905E983050F48770FE2D01C0FF0F8A95A9 -:104E0000EAF78F2F0E94CF2813C00E94671E2FC081 -:104E10002296F8018491982F905E983060F4877004 -:104E2000FE2D01C0FF0F8A95EAF78F2F0E94D5282B -:104E30000E94F8281CC00E942F1F19C02296F8015A -:104E4000049107C08FE99FE00197F1F700C00000CF -:104E500001500111F7CF0BC02296F801D49007C082 -:104E60000E94671E03C08F770E942F1FE8018D2DBF -:104E700007C08150EFE9FFE03197F1F700C0000073 -:104E8000882309F497CFF5CFDF91CF911F910F9130 -:104E9000FF90EF90DF9008956093E1027093E2023B -:104EA0008093E3029093E4020C9444236093DD0228 -:104EB0007093DE028093DF029093E0020C9444230F -:104EC00008950C944C270F931F930091E1021091C9 -:104ED000E2022091E3023091E402602B712B822BDD -:104EE000932B1F910F910C944C270F931F930091BC -:104EF000E1021091E2022091E3023091E40260238A -:104F00007123822393231F910F910C944C270F93AD -:104F10001F930091E1021091E2022091E30230918F -:104F2000E40260277127822793271F910F910C9429 -:104F30004C2760E070E0CB010C94562741E050E034 -:104F400060E070E004C0440F551F661F771F8A950C -:104F5000D2F7CB01BA010C94562741E050E060E053 -:104F600070E004C0440F551F661F771F8A95D2F763 -:104F70008091DD029091DE02A091DF02B091E0020B -:104F8000482B592B6A2B7B2BCB01BA010C9456274B -:104F900041E050E060E070E004C0440F551F661F20 -:104FA000771F8A95D2F740955095609570958091BE -:104FB000DD029091DE02A091DF02B091E002482371 -:104FC00059236A237B23CB01BA010C94562741E075 -:104FD00050E060E070E004C0440F551F661F771F6B -:104FE0008A95D2F78091DD029091DE02A091DF02D6 -:104FF000B091E002482759276A277B27CB01BA01E5 -:105000000C9456270F931F930091DD021091DE023E -:105010002091DF023091E002602B712B822B932BC9 -:105020001F910F910C9456270F931F930091DD024F -:105030001091DE022091DF023091E00260237123A3 -:10504000822393231F910F910C9456270F931F9344 -:105050000091DD021091DE022091DF023091E0022A -:1050600060277127822793271F910F910C94562751 -:105070000895CF92DF92EF92FF920F931F93CF93F9 -:10508000DF93EC01C090E102D090E202E090E302F5 -:10509000F090E4028091DD029091DE02A091DF02A7 -:1050A000B091E002C82AD92AEA2AFB2A0FE110E0CF -:1050B000B701A601002E04C07695679557954795D0 -:1050C0000A94D2F740FF08C0BE01802F0E947104ED -:1050D0008130910509F007C00150110948F7BE0160 -:1050E00080E00E947104DF91CF911F910F91FF909A -:1050F000EF90DF90CF90089540918B0150918C01FB -:1051000020E030E09FEFFA01E20FF31F62816817A1 -:10511000A1F09F3F19F4611101C0922F2F5F3F4F03 -:105120002630310581F707C0FA01E90FF11D97FD1F -:10513000FA95828308959F3FB9F7089540918B01B6 -:1051400050918C0120E030E0FA01E20FF31F9281D0 -:10515000981301C012822F5F3F4F26303105A1F70F -:10516000089581E090E0E0918B01F0918C01E80FCF -:10517000F91F1082019688309105A9F70895909142 -:10518000E502982B9093E502089580959091E502B1 -:1051900098239093E50208951092E5020895909166 -:1051A000E602982B9093E602089580959091E6028E -:1051B00098239093E60208951092E6020895809352 -:1051C000E70208951092E702089540918B015091F3 -:1051D0008C0120E030E080E0FA01E20FF31F9181C2 -:1051E00091118F5F2F5F3F4F27303105A9F7089549 -:1051F000E0918B01F0918C018091E5028083E09138 -:105200008B01F0918C0180819091E602892B808343 -:105210009091E702992361F0E0918B01F0918C016C -:105220008081892B80830E94E52881110E94E228D9 -:1052300080918B0190918C010C94311D8091FA0327 -:10524000843021F11092F10220E488E190E00FB661 -:10525000F894A895809360000FBE2093600080E0D2 -:105260000E94590383B7817F846083BF83B78160C5 -:1052700083BF7894889583B78E7F83BF88E10FB60C -:10528000F89480936000109260000FBE0895089516 -:105290000895CF9380E00E9459030E9447290E94FD -:1052A000BD070E944829C0E08C2F0E941109892B5C -:1052B00029F4CF5FC530C1F780E001C081E0CF9114 -:1052C00008950E94562380E00E9459030E941130E5 -:1052D0000E94251D0C94E7051F920F920FB60F92A6 -:1052E00011248F939F93AF93BF938091F10281110B -:1052F00013C08091F2029091F302A091F402B09158 -:10530000F5024196A11DB11D8093F2029093F30224 -:10531000A093F402B093F502BF91AF919F918F914A -:105320000F900FBE0F901F90189582E084BD93E000 -:1053300095BD9AEF97BD80936E0008958FB7F8944E -:105340004091F2025091F3026091F4027091F502E3 -:105350008FBFCA010895CF92DF92EF92FF920F9311 -:105360001F932FB7F8944091F2025091F30260918D -:10537000F4027091F5022FBF6A017B01EE24FF2435 -:105380008C0120E030E0C016D106E206F30620F0E2 -:105390009A01281B390B05C09C0120953095240FDC -:1053A000351FC9011F910F91FF90EF90DF90CF90B3 -:1053B00008951F920F920FB60F9211248F939F930F -:1053C000AF93BF938091F2029091F302A091F40207 -:1053D000B091F5020196A11DB11D8093F202909348 -:1053E000F302A093F402B093F502BF91AF919F91A5 -:1053F0008F910F900FBE0F901F9018950E946D1601 -:10540000F8942FEF87EA91E6215080409040E1F731 -:1054100000C0000087E090EBDC01809304049093CF -:105420000504A0930604B09307042CE088E190E003 -:105430000FB6F894A895809360000FBE209360008B -:10544000FFCFCF92DF92EF92FF920F931F93CF93F4 -:10545000DF93C82ED12C01E010E08D2D0E941109A0 -:105460007C01C0E0D0E098010C2E02C0220F331F57 -:105470000A94E2F72E213F21232B29F42196CC30E8 -:10548000D10589F708C06C2F7D2D80E00E944C0467 -:10549000C812F4CF06C0D39485E0D812DECF80E0E6 -:1054A00001C081E0DF91CF911F910F91FF90EF90AC -:1054B000DF90CF900895CF93C82F8CE20E94212ACD -:1054C000882321F08C2FCF910C94212A80E0CF915A -:1054D0000895CF930E94AC2B811102C00E948D2BA6 -:1054E000C5E608C00E94BD078FE39CE90197F1F76C -:1054F00000C00000C150B1F789E20E945B2A81110F -:105500000AC18AE20E945B2A81110E948D2B85E0EC -:105510000E945B2A81110E94FE290E94B72B809372 -:10552000F00287E00E945B2A882399F18BE10E94B8 -:105530005B2A882351F09091F00291FB882780F933 -:1055400021E0822780FB91F922C08EE00E945B2A35 -:10555000882351F09091F00292FB882780F921E096 -:10556000822780FB92F913C080E10E945B2A909110 -:10557000F002882341F093FB882780F921E08227FD -:1055800080FB93F904C0892F809580FB90F990935C -:10559000F0028091F0020E94BB2B0E94C92B8093E5 -:1055A000010380EE0E945B2A882341F08091010371 -:1055B000982F909590FB80F98093010389E30E94D6 -:1055C0005B2A882359F09091010391FB882780F989 -:1055D00021E0822780FB91F99093010382EE0E94E3 -:1055E0005B2A882359F09091010392FB882780F968 -:1055F00021E0822780FB92F99093010386EE0E94BE -:105600005B2A882359F09091010393FB882780F946 -:1056100021E0822780FB93F99093010383EE0E949F -:105620005B2A882359F09091010394FB882780F925 -:1056300021E0822780FB94F99093010385E30E9487 -:105640005B2A882359F09091010395FB882780F904 -:1056500021E0822780FB95F99093010381E30E946A -:105660005B2A882359F09091010396FB882780F9E3 -:1056700021E0822780FB96F99093010381E10E944B -:105680005B2A882359F09091010397FB882780F9C2 -:1056900021E0822780FB97F9909301038091010319 -:1056A0000E94CD2B87E20E945B2AC82F8EE10E94C8 -:1056B0005B2A8111C2608FE10E945B2A8111C46064 -:1056C00080E20E945B2A8111C86081E20E945B2A0D -:1056D0008111C06182E20E945B2A8111C06283E273 -:1056E0000E945B2A8111C06484E20E945B2A8823A5 -:1056F00011F0C06802C0CC2329F08C2F0E94C42B6B -:105700006C2F03C00E94C02B682F70E080E090E0F7 -:10571000CF910C946127CF9108956DEE7EEF80E0DC -:1057200090E00E94783460E082E090E00E946A3469 -:1057300060E083E090E00E946A3460E084E090E002 -:105740000E946A3460E085E090E00E946A3460E084 -:1057500086E090E00C946A3480E090E00E9464342B -:1057600021E08D3E9E4F09F020E0822F089582E0D7 -:1057700090E00C945C34682F82E090E00C946A34E2 -:1057800083E090E00C945C34682F83E090E00C940C -:105790006A3484E090E00C945C34682F84E090E0FC -:1057A0000C946A3486E090E00C945C34682F86E0B8 -:1057B00090E00C946A348091FE0280FF0BC06091EF -:1057C000900185E0689FB0011124759567957595E6 -:1057D00067952AC081FF09C06091900185E0689FAC -:1057E000B0011124759567951FC082FF07C06091B5 -:1057F000900185E0689FB001112416C04091F80225 -:105800004423C9F060918F01461788F720919001D9 -:1058100085E0289F90011124429FC001439F900D75 -:10582000112470E00E9448346038710540F461151D -:10583000710539F002C065E070E0862F08958FE7AA -:10584000089581E008958091FE0280FF08C0609174 -:105850008E0170E0759567957595679521C081FFFC -:1058600006C060918E0170E07595679519C082FF42 -:1058700004C060918E0170E010C08091F80288230E -:10588000C1F060918D018617A0F790918E01989FCD -:10589000C001112470E00E9448346038710528F47A -:1058A0006115710521F0862F08958FE7089581E035 -:1058B000089561E070E0F4CF803F21F40E94DB2B7B -:1058C000819504C0813F29F40E94DB2B8093FB0269 -:1058D0000895823F21F40E94DB2B819504C0833F11 -:1058E00029F40E94DB2B8093FA020895893F19F472 -:1058F0000E94232C05C08A3F31F40E94232C8195FD -:105900008093FC0208958B3F21F40E94232C819503 -:1059100004C08C3F29F40E94232C8093FD0208953B -:10592000843F21F48091F902816017C0853F21F402 -:105930008091F902826011C0863F21F48091F902C2 -:1059400084600BC0873F21F48091F902886005C014 -:10595000883F31F48091F90280618093F9020895C3 -:105960008D3F21F48091FE0281600BC08E3F21F4B7 -:105970008091FE02826005C08F3F29F48091FE0273 -:1059800084608093FE020895803F29F48091FB0299 -:1059900087FF6EC007C0813F41F48091FB0218165B -:1059A0000CF066C01092FB0263C09091FA02823F35 -:1059B00019F497FF5DC005C0833F31F419160CF050 -:1059C00057C01092FA0254C0893F31F48091FC0212 -:1059D00018160CF04DC006C08A3F39F48091FC02C5 -:1059E00087FF46C01092FC0243C08B3F29F4809190 -:1059F000FD0287FF3DC006C08C3F39F48091FD0257 -:105A00001816B4F51092FD0233C0843F21F4809142 -:105A1000F9028E7F05C0853F31F48091F9028D7FB8 -:105A20008093F90225C0863F21F48091F9028B7F93 -:105A3000F7CF873F21F48091F902877FF1CF883F2C -:105A400021F48091F9028F7EEBCF8D3F21F480917C -:105A5000FE028E7F0BC08E3F21F48091FE028D7F6F -:105A600005C08F3F29F48091FE028B7F8093FE0258 -:105A70008091FA0281110EC08091FB0281110AC04F -:105A80008091FC02811106C08091FD02811102C04B -:105A90001092F802089589EF92E00E943C1D0E9446 -:105AA0009E299093F7028093F6020895CF938091F8 -:105AB000F6029091F7020E94AB294091F80244232C -:105AC00021F02091910130E006C0209192015AE02E -:105AD000259F900111248217930708F486C08091B6 -:105AE000FA0281110DC09091FB02911109C09091B1 -:105AF000FC02911105C09091FD02992309F475C033 -:105B00004F3F19F04F5F4093F802181624F40E949B -:105B1000DB2B8093FA028091FA0287FF05C00E9476 -:105B2000DB2B81958093FA028091FB02181624F4F6 -:105B30000E94DB2B8093FB028091FB0287FF05C054 -:105B40000E94DB2B81958093FB026091FA02662311 -:105B500039F1C091FB02CC2319F1772767FD7095CD -:105B6000872F972F0E94AC3123E333E343E35FE3B6 -:105B70000E9460320E9479316093FA026C2F77277D -:105B800067FD7095872F972F0E94AC3123E333E395 -:105B900043E35FE30E9460320E9479316093FB022D -:105BA0008091FC02181624F40E94232C8093FC029E -:105BB0008091FC0287FF05C00E94232C8195809371 -:105BC000FC028091FD02181624F40E94232C80937D -:105BD000FD028091FD0287FF05C00E94232C819564 -:105BE0008093FD02CF910C944B2DCF910895E9EF56 -:105BF000F2E085E0DF011D928A95E9F71092F80244 -:105C00001092FE020895833089F130F4813061F002 -:105C1000823009F06EC019C0853009F449C0B8F16E -:105C2000863009F066C055C020919201862F90E021 -:105C3000820F911D8F3F910520F4620F60939201B6 -:105C400008958FEF80939201089520919101862FFE -:105C500090E0820F911D8F3F910520F4620F6093B9 -:105C6000910108958FEF8093910108952091900103 -:105C7000862F90E0820F911D8F3F910520F4620FD7 -:105C80006093900108958FEF809390010895209183 -:105C90008F01862F90E0820F911D8F3F910520F498 -:105CA000620F60938F0108958FEF80938F010895A5 -:105CB00020918E01862F90E0820F911D8F3F9105DC -:105CC00020F4620F60938E0108958FEF80938E0110 -:105CD000089520918D01862F90E0820F911D8F3FB6 -:105CE000910520F4620F60938D0108958FEF8093EA -:105CF0008D010895833021F130F4813059F08230E4 -:105D000009F049C012C0853089F128F1863009F0C8 -:105D100042C037C080919201681720F4861B80939F -:105D2000920108951092920108958091910168174F -:105D300020F4861B8093910108951092910108959B -:105D400080919001681720F4861B8093900108953C -:105D500010929001089580918F01681720F4861B9E -:105D600080938F01089510928F01089580918E0184 -:105D7000681720F4861B80938E01089510928E017F -:105D8000089580918D01681720F4861B80938D0102 -:105D9000089510928D01089541E050E060E070E0B8 -:105DA00004C0440F551F661F771F8A95D2F7CB0199 -:105DB000BA010E9461270C945623873200F58E3178 -:105DC00008F086C08E3009F466C060F4873009F4AC -:105DD0004DC018F4863049F531C0883041F18B3020 -:105DE00021F57BC0863109F478C018F48031E9F4DC -:105DF0005CC0893109F471C08B31B9F442C0883379 -:105E000009F46BC048F4893209F460C0853309F4A1 -:105E10005DC0873251F45AC0833409F457C018F476 -:105E20008A3318F057C0883499F080E008950E94B2 -:105E3000B72B0E94C92B0E94D22B4FC08091F00239 -:105E4000817F8E7F8093F00281E08093FF0208952E -:105E50000E9456232FEF83ED90E321508040904025 -:105E6000E1F700C000000E94FE2937C08091F002D7 -:105E700080FF03C0817F8E7F01C081608093F0022C -:105E80002CC09091F00291FB882780F921E08227B5 -:105E900080FB91F913C09091F00292FB882780F962 -:105EA00021E0822780FB92F909C09091F00293FBD8 -:105EB000882780F921E0822780FB93F99093F002F4 -:105EC000882359F091609093F00207C080E003C0EE -:105ED0008D5101C089530E94CC2E81E0089580E04D -:105EE000089580E00895CF93C82F8091FF028130FC -:105EF00071F020F0823009F089C037C0A0918B0189 -:105F0000B0918C018C91823209F082C007C0A091BF -:105F10008B01B0918C018C91823249F48C2F0E94BC -:105F20006F2F81111EC08C2F0E94DD2E1CC08C2F64 -:105F30000E94712F811115C0C43169F030F4CB304B -:105F400081F0C03109F068C009C0C93221F0C833FE -:105F500009F062C006C01092FF025EC082E080932A -:105F6000FF0281E090E081705AC0C932C9F060F44C -:105F7000C431B1F020F4C73009F04CC034C0CE5168 -:105F8000C63008F047C017C0CE3439F120F4CB3406 -:105F900009F040C01CC0C135C1F0C235D9F513C0ED -:105FA00080910003882319F01092000333C081E030 -:105FB0008093FF0234C0EC2FF0E0E25EFD4F808161 -:105FC0008093000327C061E003C061E007C06AE07E -:105FD000809100030E94032E1DC06AE0809100039F -:105FE0000E947A2E17C08EE18093920182E3809303 -:105FF00091018AE08093900184E180938F0188E091 -:1060000080938E0188E280938D0104C01092FF027C -:1060100080E005C081E003C080E090E0A4CFCF9194 -:1060200008950E94AC2B811102C00E948D2B0E940A -:10603000D22B8093030480FF02C0869501C080E0CC -:106040000C94590380910304982F9695292F30E0E2 -:10605000233031054CF49F5F990F8170892B81604B -:10606000809303040E94D62B8091030486950C94A0 -:10607000590380910304982F969591F09158990FA8 -:106080008170892B809303048E7F91E009F490E066 -:106090008091030490FB80F9809303040E94D62B27 -:1060A0008091030486950C94590380910304982FE2 -:1060B000909590FB80F9809303040E94D62B8091E9 -:1060C000030480FF02C0869501C080E00C94590350 -:1060D00030910304232F26952F5F2F77822F90E096 -:1060E000317004972CF4220F232B2093030402C059 -:1060F0003093030480910304282F2E7F91E009F44C -:1061000090E090FB80F9809303040E94D62B80914D -:10611000030486950C94590320910304922F9695BD -:106120009827990F822F8170892B809303048E7F8B -:1061300091E009F490E08091030490FB80F9809352 -:1061400003040E94D62B8091030486950C94590376 -:106150005058BB27AA270ED075C166D130F06BD13D -:1061600020F031F49F3F11F41EF45BC10EF4E09572 -:10617000E7FB51C1E92F77D180F3BA1762077307A4 -:106180008407950718F071F49EF58FC10EF4E09521 -:106190000B2EBA2FA02D0B01B90190010C01CA01E1 -:1061A000A0011124FF27591B99F0593F50F4503E8C -:1061B00068F11A16F040A22F232F342F4427585F7E -:1061C000F3CF469537952795A795F0405395C9F796 -:1061D0007EF41F16BA0B620B730B840BBAF091504E -:1061E000A1F0FF0FBB1F661F771F881FC2F70EC0ED -:1061F000BA0F621F731F841F48F4879577956795C0 -:10620000B795F7959E3F08F0B3CF9395880F08F0A8 -:106210009927EE0F979587950895D9D008F481E0D6 -:1062200008950CD00FC107D140F0FED030F021F41A -:106230005F3F19F0F0C0511139C1F3C014D198F388 -:106240009923C9F35523B1F3951B550BBB27AA27F7 -:1062500062177307840738F09F5F5F4F220F331F69 -:10626000441FAA1FA9F333D00E2E3AF0E0E830D035 -:1062700091505040E695001CCAF729D0FE2F27D038 -:10628000660F771F881FBB1F261737074807AB0706 -:10629000B0E809F0BB0B802DBF01FF2793585F4F7B -:1062A0002AF09E3F510568F0B6C000C15F3FECF395 -:1062B000983EDCF3869577956795B795F7959F5F40 -:1062C000C9F7880F911D9695879597F90895E1E094 -:1062D000660F771F881FBB1F621773078407BA07F3 -:1062E00020F0621B730B840BBA0BEE1F88F7E0954E -:1062F000089504D06894B111D9C00895BCD088F035 -:106300009F5790F0B92F9927B751A0F0D1F0660FA1 -:10631000771F881F991F1AF0BA95C9F712C0B130BC -:1063200081F0C3D0B1E00895C0C0672F782F8827CF -:10633000B85F39F0B93FCCF3869577956795B395FB -:10634000D9F73EF490958095709561957F4F8F4F6A -:106350009F4F0895E89409C097FB3EF4909580956F -:10636000709561957F4F8F4F9F4F9923A9F0F92F1B -:1063700096E9BB279395F695879577956795B79599 -:10638000F111F8CFFAF4BB0F11F460FF1BC06F5F7F -:106390007F4F8F4F9F4F16C0882311F096E911C091 -:1063A000772321F09EE8872F762F05C0662371F0B2 -:1063B00096E8862F70E060E02AF09A95660F771FC6 -:1063C000881FDAF7880F9695879597F90895990FA2 -:1063D0000008550FAA0BE0E8FEEF16161706E807AF -:1063E000F907C0F012161306E407F50798F0621BD0 -:1063F000730B840B950B39F40A2661F0232B242BA5 -:10640000252B21F408950A2609F4A140A6958FEFC3 -:10641000811D811D089597F99F6780E870E060E015 -:1064200008959FEF80EC089500240A94161617062D -:1064300018060906089500240A9412161306140675 -:1064400005060895092E0394000C11F4882352F0D8 -:10645000BB0F40F4BF2B11F460FF04C06F5F7F4F90 -:106460008F4F9F4F089557FD9058440F551F59F077 -:106470005F3F71F04795880F97FB991F61F09F3F31 -:1064800079F087950895121613061406551FF2CF5A -:106490004695F1DF08C0161617061806991FF1CFAA -:1064A00086957105610508940895E894BB276627D1 -:1064B0007727CB0197F908958ADF08F48FEF0895C5 -:1064C0000BD0C0CFB1DF28F0B6DF18F0952309F06C -:1064D000A2CFA7CF1124EACFC6DFA0F3959FD1F3B7 -:1064E000950F50E0551F629FF001729FBB27F00D82 -:1064F000B11D639FAA27F00DB11DAA1F649F6627D7 -:10650000B00DA11D661F829F2227B00DA11D621F25 -:10651000739FB00DA11D621F839FA00D611D221FDF -:10652000749F3327A00D611D231F849F600D211DC3 -:10653000822F762F6A2F11249F5750408AF0E1F066 -:1065400088234AF0EE0FFF1FBB1F661F771F881FAF -:1065500091505040A9F79E3F510570F05CCFA6CFF7 -:106560005F3FECF3983EDCF3869577956795B7959A -:10657000F795E7959F5FC1F7FE2B880F911D9695C4 -:10658000879597F90895FA01EE0FFF1F30962105C0 -:10659000310599F16115710561F48038BFE39B07FE -:1065A00049F168949038810561F08038BFEF9B070E -:1065B00041F0992342F5FF3FE1053105210511F135 -:1065C000E8940894E795D901AA2329F4AB2FBE2FAC -:1065D000F85FD0F310C0FF5F70F4A695E0F7F739CD -:1065E00050F019F0FF3A38F49F779F930CD00F903A -:1065F00007FC905808953EF014CF60E070E080E80A -:106600009FE308954FE79F775F934F933F932F93B7 -:106610009ED02F913F914F915F9152DF05C019F4A9 -:106620000EF0F9CE42CFFDCE26DFC8F39638C0F784 -:1066300007F80F92E8942BE33AEA48EB5FE74EDF66 -:106640000F920F920F924DB75EB70F92C0D0ECEA47 -:10665000F0E016D04F915F91EF91FF91E595EE1F1D -:10666000FF1F49F0FE57E0684427EE0F441FFA95DC -:10667000E1F74195550B32D00F9007FE26C00895E3 -:10668000DF93CF931F930F93FF92EF92DF927B01E3 -:106690008C01689405C0DA2EEF011EDFFE01E8943C -:1066A000A5912591359145915591AEF3EF0162DDAC -:1066B000FE019701A801DA9479F7DF90EF90FF903F -:1066C0000F911F91CF91DF9108959B01AC0160E084 -:1066D00070E080E89FE3A5CD9ECEACC0CCDEE8F3B1 -:1066E0009923D9F3940F511DBBF39150504094F06E -:1066F00059F0882332F0660F771F881F9150504061 -:10670000C1F79E3F510544F7880F911D96958795D7 -:1067100097F908955F3FACF0983E9CF0BB278695B3 -:1067200077956795B79508F4B1609395C1F7BB0F5E -:1067300058F711F460FFE8CF6F5F7F4F8F4F9F4F87 -:10674000E3CFB4CE0EF076C06CCE689464CE93DE08 -:10675000C8F39923D1F3C6F3DF93CF931F930F931D -:10676000FF92C92FDD2788232AF02197660F771F14 -:10677000881FDAF720E030E040E85FEB9FE38839DC -:1067800020F0803E30F021968F77E3DCE4EDF0E0FE -:1067900003C0DFDCE1E0F1E073DF8B01BE01EC015F -:1067A000FB2E6F5771097595771F880B990BD4DDF8 -:1067B00028E132E741E35FE38FDEAF2D9801AE01C0 -:1067C000FF900F911F91CF91DF91D4DC3BCEFA0166 -:1067D000DC01AA0FBB1F9B01AC01BF5728F4222785 -:1067E0003327442750781FC0B75188F4AB2F0024BB -:1067F000469537952795011CA395D2F3002069F0A3 -:10680000220F331F441FB395DAF30DD0A1CC6130B2 -:106810007105A0E88A07B94630F49B01AC016627F0 -:10682000772788279078309621F020833183428320 -:10683000538308959F3F31F0915020F487957795C9 -:106840006795B795880F911D9695879597F9089547 -:10685000991B79E004C0991F961708F0961B881FB2 -:106860007A95C9F780950895AA1BBB1B51E107C013 -:10687000AA1FBB1FA617B70710F0A61BB70B881FD0 -:10688000991F5A95A9F780959095BC01CD0108955F -:1068900097FB072E16F4009407D077FD09D00E94CD -:1068A000343407FC05D03EF4909581959F4F0895B0 -:1068B000709561957F4F0895F999FECF92BD81BD86 -:1068C000F89A992780B50895A8E1B0E042E050E039 -:1068D0000C947F34262FF999FECF1FBA92BD81BD4B -:1068E00020BD0FB6F894FA9AF99A0FBE0196089552 -:1068F0000E946A34272F0C946B34DC01CB01FC011D -:10690000F999FECF06C0F2BDE1BDF89A319600B408 -:0E6910000D9241505040B8F70895F894FFCF13 -:10691E0055D0A44600001644000000000000484276 -:10692E0061978A460000C8430000000000004842FC -:10693E0055D024460000C843000000000000484225 -:10694E0000005C460000C843000000000000484202 -:10695E0061978A4600007A4455D0A4460000C84389 -:10696E00000000000000484200005C460000C843E2 -:10697E00000000000000484255D024460000164496 -:10698E000507000C058540000001064000000100CF -:10699E0091102111FD10C810941001E8022808145E -:1069AE000A321E42004500250026004300610060A9 -:1069BE000020003700640065006600670044004652 -:1069CE000024004700000002000400050007000933 -:1069DE00000B000C000E0010001100130015001724 -:1069EE000018001A001C001D001F002100230024A7 -:1069FE00002600280029002B002D002F0030003229 -:106A0E000034003500370039003B00F6030F042830 -:106A1E0004410469051C05E604C6043F4D362002F8 -:106A2E000302000001000101010101000101010248 -:086A3E00030405060708090026 +:100000000C947C050C94C0050C94C0050C94C005A0 +:100010000C94C0050C94C0050C94C0050C94C0054C +:100020000C94C0050C94C0050C94C7180C94991935 +:100030000C94B2270C94C0050C94C0050C94C00518 +:100040000C94C0050C94C0050C94C0050C94C0051C +:100050000C94C0050C941A280C94C0050C94C0058F +:100060000C94C0050C94C0050C94C0050C94C005FC +:100070000C94C0050C94C0050C94C0050C94C005EC +:100080000C94E50E0C94C0050C94C0050C94C005AE +:100090000C94C0050C94C0050C94C0050C94C005CC +:1000A0000C94C0050C94C0050C94C0051B062B06CF +:1000B0003D064D06530662066E06730680068806E8 +:1000C00098069D06061A281A161B281A161B6D1A62 +:1000D000901A161BE51AF81AFB1DFB1D381E381E58 +:1000E000921ED01E48214821E91E4821EA1FEA1F1E +:1000F000AD20C4204821332107634236B79BD8A7DF +:100100001A39685618AEBAAB558C1D3CB7CC57633C +:10011000BD6DEDFD753EF6177231BF000000803FEA +:1001200008000000BE922449123EABAAAA2ABECD06 +:10013000CCCC4C3E00000080BEABAAAAAA3E000078 +:100140000000BF000000803F000000000008417870 +:10015000D3BB4387D1133D190E3CC3BD4282AD2BA7 +:100160003E68EC8276BED98FE1A93E4C80EFFFBE9F +:1001700001C4FF7F3F000000000035001E001F008B +:100180002000210022002300240025002600270053 +:100190002A002B0014001A000800150017001C008C +:1001A00018000C00120013004C0029000400160077 +:1001B000070009000A000B000D000E000F003300BD +:1001C0003400E1001D001B000600190005001100AD +:1001D000100036003700380028000530E000E2004B +:1001E000E30003302C002C0004305000510052007A +:1001F0004F0035001E001F002000210022002300B8 +:1002000024002500260027002A002B0014001A00D5 +:10021000090013000A000D000F0018001C00330035 +:100220004C002900040015001600170007000B0001 +:10023000110008000C0012003400E1001D001B003A +:100240000600190005000E001000360037003800C7 +:1002500028000530E000E200E30003302C002C0011 +:1002600004305000510052004F0035001E001F00A6 +:100270002000210022002300240025002600270062 +:100280002A002B0034003600370013001C00090040 +:100290000A00060015000F004C002900040012009F +:1002A000080018000C0007000B00170011001600D2 +:1002B0003800E100330014000D000E001B000500A3 +:1002C00010001A0019001D0028000530E000E200AF +:1002D000E30003302C002C00043050005100520089 +:1002E0004F0035021E021F022002210222022302B9 +:1002F00024022502260227022A0035021E021F02BE +:1003000020022102220223022402250226022702C1 +:100310004C004C003A003B003C003D003E003F00DA +:100320002D022E022F023002310201004000410056 +:1003300042004300440045000100010001000100AB +:1003400001000100010001000100010001000100A5 +:100350000100AB00AA00A900AE0035001E001F007E +:100360002000210022002300240025002600270071 +:100370002A0035001E001F0020002100220023005B +:1003800024002500260027004C004C003A003B00CA +:100390003C003D003E003F002D002E002F003000AD +:1003A000310001004000410042004300440045008C +:1003B0000100010001000100010001000100010035 +:1003C00001000100010001000100AB00AA00A9002A +:1003D000AE0000000000000000000000000000006F +:1003E000000000000000000000000000000000000D +:1003F00000000000000000000000000000000000FD +:1004000000000000000000000000000000000000EC +:1004100000000000000000000000000000000000DC +:1004200000000000000000000000000000000000CC +:100430000000000000000000000003300000000089 +:100440000430000000000000000000000000000078 +:10045000000000000000000000000000000000009C +:10046000000000000000000000000000000000008C +:10047000000000000000000000000000000000007C +:10048000000000000000000000000000000000006C +:10049000000000000000000000000000000000005C +:1004A000000000000000000000000000000000004C +:1004B000000000000000000000000000000000003C +:1004C000000000000000000000000000000000002C +:1004D000000000000000000000000000000000001C +:1004E000000000000000000000000000000000000C +:1004F00000000000000000000000000000000000FC +:1005000000000000000000000000000000000000EB +:1005100000000000000000000000000000000000DB +:1005200000000000000000000000000000000000CB +:1005300000000000000000000000000000000000BB +:1005400000000000000000000000000000000000AB +:10055000000000000000000000000000000000009B +:10056000000000000000000000000000000000008B +:10057000000000000000000000000000000000007B +:10058000000000000000000000000000000000006B +:10059000000000000000000000000000000000005B +:1005A000000000000000000000000000000000004B +:1005B000000000000000000000000000000000003B +:1005C000000000000000000000000000000000002B +:1005D000000000000000000000000000000000001B +:1005E000000000000000000000000000000000000B +:1005F00000000000000000000000000000000000FB +:1006000000000000000000000000000000000000EA +:1006100000000000000000000000000000000000DA +:1006200000000000000000000000000000000000CA +:1006300000000000000000000000000000000000BA +:1006400000000000000000000000000000000000AA +:10065000000000000000000000000000000000009A +:10066000000000000000000000000000000000008A +:10067000000000000000000000000000000000007A +:10068000000000000000000000000000000000006A +:10069000000000000000000000000000000000005A +:1006A000000000000000000000000000000000004A +:1006B000000000000000000000000000000000003A +:1006C000000000000000000000000000000000002A +:1006D000000000000000000000000000000000001A +:1006E000000000000000000000000000000000000A +:1006F00000000000000000000000000000000000FA +:1007000000000000000000000000000000000000E9 +:1007100000000000000000000000000000000000D9 +:1007200000000000000000000000000000000000C9 +:1007300000000000000000000000000000000000B9 +:1007400000000000000000000000000000000000A9 +:100750000000000000000000000000000000000099 +:100760000000000000000000000000000000000089 +:100770000000000000000000000000000000000079 +:100780000000000000000000000000000000000069 +:100790000000000000000000000000000000000059 +:1007A0000000000000000000000000000000000049 +:1007B0000000000000000000000000000000000039 +:1007C0000000000000000000000000000000000029 +:1007D0000000000000000000000000000000000019 +:1007E0000000000000000000000000000000000009 +:1007F00000000000000000000000000000000000F9 +:1008000000000000000000000000000000000000E8 +:1008100000000000000000000000000000000000D8 +:1008200000000000000000000000000000000000C8 +:1008300000000000000000000000000000000000B8 +:1008400000000000000000000000000000000000A8 +:100850000000000000000000000000000000000098 +:100860000000000000000000000000000000000088 +:100870000000000000000000000000000000000078 +:100880000000000000000000000000000000000068 +:100890000000000000000000000000000000000058 +:1008A0000000000000000000000000000000000048 +:1008B0000000000000000000000000000000000038 +:1008C0000000000000000000000000000000000028 +:1008D0000000000000000000000000000000000018 +:1008E0000000000000000000000000000000000008 +:1008F000000000000000000000003A003B003C0047 +:100900003D003E003F0040004100420043004400E3 +:10091000450001000050010001000100010001003C +:1009200001000100010001004C0001000100010074 +:1009300007300630135012500030013002300100F1 +:10094000010001000B300A300930083001000100BD +:10095000010001000100010001000100010001008F +:10096000010001000100010001000100010001007F +:1009700001002A0354006800650020005000720046 +:1009800065006F006E006900630020004B00650089 +:10099000790062006F0061007200640000002C03A7 +:1009A0004F007200740068006F006C0069006E00F8 +:1009B00065006100720020004B0065007900620054 +:1009C0006F006100720064007300000004030904FA +:1009D00009025400030100A0FA0904000001030108 +:1009E0000100092111010001223F000705810308D0 +:1009F000000A09040100010301020009211101009C +:100A000001224D000705820308000A0904020001C3 +:100A100003000000092111010001223600070583AF +:100A20000308000A1201100100000008EDFE6160D9 +:100A300001000102000105010980A10185021601E2 +:100A40000026B7001A01002AB70075109501810031 +:100A5000C0050C0901A1018503160100269C021A9C +:100A600001002A9C02751095018100C00501090250 +:100A7000A1010901A1000509190129051500250198 +:100A80009505750181029501750381010501093004 +:100A900009311581257F9502750881060938158170 +:100AA000257F950175088106050C0A3802158125F8 +:100AB0007F950175088106C0C005010906A10105E1 +:100AC0000719E029E71500250195087501810295B0 +:100AD0000175088101050819012905950575019120 +:100AE000029501750391010507190029FF150025DD +:100AF000FF950675088100C011241FBECFEFDAE014 +:100B0000DEBFCDBF04B603FE24C08091F3039091F5 +:100B1000F403A091F503B091F6038730904BA74002 +:100B2000B04BB9F41092F3031092F4031092F50352 +:100B30001092F60314BE84B7877F84BF88E10FB696 +:100B4000F89480936000109260000FBEE0E0F8E33C +:100B5000099512E0A0E0B1E0E8EAF3E602C00590F2 +:100B60000D92A63FB107D9F713E0A6EFB2E001C09E +:100B70001D92A33FB107E1F70E940D160C94D231EC +:100B80000C940000279A2F988FEF9FEF9093870087 +:100B9000809386008AE08093800089E180938100C1 +:100BA0000C94092D282F81110BC080918000877F24 +:100BB0008093800010928D0010928C002F980895E1 +:100BC0002F9880918000886080938000233019F4F2 +:100BD0008FEF9FEF0FC083E090E0821B9109880F99 +:100BE000991F2FEF3FEFA90102C0569547958A95AF +:100BF000E2F7CA0190938D0080938C000895CF9303 +:100C0000DF93EC010E94AE28BE0180E090E0DF910E +:100C1000CF910C9428250F931F93462F50E04C3012 +:100C2000510508F098C0DC01FA01EA5AFF4F12960C +:100C30008C910C949631882309F48DC000E010E06B +:100C4000980140E064E070E089EC91E00E9463125A +:100C500081E090E00FC0882309F47DC000E010E03F +:100C6000980140E066E070E089E591E00E9463123F +:100C700082E090E00E94FF056EC0882309F46BC0FB +:100C800000E010E0980140E068E070E089E891E061 +:100C90000E94631284E090E0EDCF882311F083E09E +:100CA00005C083E00CC0882349F084E00E94A5259C +:100CB00040E164E083E00E94C90A4DC084E00E94E4 +:100CC000C625F6CF882331F085EE0E948F1C0E9446 +:100CD000602D41C085EE0E94571D3DC08823D9F18B +:100CE0000E94F70D38C08823B1F10E94F00D00E09A +:100CF00010E0980140E064E070E089EE91E029C0E6 +:100D0000882349F185E00E94C6250E94180E23C061 +:100D1000882309F100E010E0980140E068E070E00D +:100D200089E191E00E94631285E00E94A52513C02D +:100D3000882389F00E94F61204C0882361F00E9483 +:100D4000011300E010E0980140E068E070E089E104 +:100D500091E00E94631280E090E01F910F9108954E +:100D60000F931F932FEF89EF90E021508040904028 +:100D7000E1F700C0000000E010E0980140E064E00E +:100D800070E089EE91E00E9463121F910F91089527 +:100D9000CF92DF92EF92FF920F931F93CF93DF9347 +:100DA000CDB7DEB7CC58D1090FB6F894DEBF0FBE71 +:100DB000CDBF2091B30325FFC5C08C01FC019281FA +:100DC00080910001992309F460C096E4E5E2F2E025 +:100DD000DE01A95BBF4F01900D929A95E1F7F801F2 +:100DE0009081E091F602F091F702E90FF11DEE0F0C +:100DF000FF1F27E430E02C0F3D1FE20FF31F60813F +:100E00007181680F711D882777FD8095982F0E944A +:100E1000A42E20E030E040E451E40E94092E6B0152 +:100E20007C01F801218185E090E0821B9109BC01E1 +:100E3000882777FD8095982F0E94A42E9B01AC01F6 +:100E4000C701B6010E94A12D9B01AC0160E070E0DA +:100E500080E090E40E94173020E030E04CE551E45F +:100E60000E94B42F4FE050E0C457DF4F0FB6F89404 +:100E7000DEBF0FBECDBFDF91CF911F910F91FF90CD +:100E8000EF90DF90CF900C94031296E4E5E2F2E04D +:100E9000DE01119601900D929A95E1F7F80190818B +:100EA000E091F602F091F702E90FF11DEE0FFF1F3E +:100EB00021E030E02C0F3D1FE20FF31F60817181B4 +:100EC000680F711D882777FD8095982F0E94A42EAA +:100ED00020E030E040E451E40E94092E6B017C01E7 +:100EE000F801218185E090E0821B9109BC018827EF +:100EF00077FD8095982F0E94A42E9B01AC01C7011D +:100F0000B6010E94A12D9B01AC0160E070E080E081 +:100F100090E40E94173020E030E04CE551E40E945C +:100F2000B42FC457DF4F0FB6F894DEBF0FBECDBF4E +:100F3000DF91CF911F910F91FF90EF90DF90CF90B5 +:100F40000C944B0EC457DF4F0FB6F894DEBF0FBEA4 +:100F5000CDBFDF91CF911F910F91FF90EF90DF9068 +:100F6000CF9008950F931F9300E010E0980140E0A8 +:100F700063E070E081E091E00E9463122FEF82E570 +:100F800097E0215080409040E1F700C000001F91A1 +:100F90000F91089508950E94C2056E9A769A0C9456 +:100FA000B0060C94CA070C94C8060895880F991FC0 +:100FB000FC01E650F040859194910895880F991FA7 +:100FC000FC01E658FE4F8591949108950F931F936D +:100FD000CF93DF93EC01811520E49207A0F5C115B2 +:100FE00080E3D80708F0E1C0C83ED105D8F4C03E80 +:100FF000D10508F0EEC1C83AD10578F4C53AD1055B +:1010000008F074C0C130D10509F46DC008F4DEC128 +:10101000C430D10508F0DDC1D9C1CB3BD10508F4FE +:1010200070C0D4C1C11590E2D90708F0B9C0C1158C +:1010300021E0D20708F0CDC1C03FD10508F4C6C1F8 +:101040008E01106506C2C13080E5D80709F4BDC025 +:1010500068F5C13120E4D20709F4AEC050F4C031C4 +:1010600090E4D90708F0A5C0CF70DD278E01146D7C +:10107000F0C1C33120E4D20709F4A4C008F49FC032 +:10108000C115D04509F0A2C10E946C210E94180E22 +:101090000E94B2079FEF24E38CE0915020408040F3 +:1010A000E1F700C000000E943F28D3C1C11520E62F +:1010B000D20730F4C11581E5D80708F48CC02DC1E2 +:1010C000C11590E7D90708F481C1C11520E8D207FE +:1010D00008F478C1C11580E9D80708F077C1DF703E +:1010E0008E01106AB6C101E010E0B3C1C53AD10566 +:1010F00009F471C1C63AD10509F070C102E810E4E3 +:10110000A8C1C83AD10509F46CC1C93AD10509F49E +:101110006BC1CA3AD10509F46AC1CB3AD10509F4C9 +:1011200069C1CC3AD10509F468C1CD3AD10509F4B9 +:1011300067C1C03BD10509F466C1CE3AD10509F4B7 +:1011400065C1CF3AD10509F464C1C13BD10509F4A9 +:1011500063C1C23BD10509F462C1C33BD10509F4A7 +:1011600061C1C43BD10509F460C1C53BD10509F497 +:101170005FC1C63BD10509F45EC1C73BD10509F487 +:101180005DC1C83BD10509F45CC1C93BD10509F477 +:101190005BC1CA3BD10509F45AC100E014E459C14E +:1011A000CE019F700E94DE0755C1DD278E01106CB5 +:1011B00050C100E011ED4DC100E010ED4AC100E06A +:1011C00012ED47C100E013ED44C18091C703816077 +:1011D0008093C7033EC10E949B28811102C00E94D8 +:1011E00077280E94B32890E09093F2038093F10354 +:1011F000C23090E5D90721F48091F103816086C067 +:10120000C43020E5D20721F48091F10382607EC0D2 +:10121000C63080E5D80721F48091F103846076C060 +:10122000C83090E5D90719F48091F10327C0CA307E +:1012300020E5D20721F48091F103806167C0CC30B2 +:1012400080E5D80721F48091F10380625FC0CE3041 +:1012500090E5D90721F48091F103806457C0C03133 +:1012600020E5D20721F48091F10380684FC0C2319C +:1012700080E5D80729F48091F1038460886046C036 +:10128000C33090E5D90721F48091F1038E7F3EC0F1 +:10129000C53020E5D20721F48091F1038D7F36C05F +:1012A000C73080E5D80721F48091F1038B7F2EC0F1 +:1012B000C93090E5D90719F48091F10326C0CB30ED +:1012C00020E5D20721F48091F1038F7E1FC0CD303D +:1012D00080E5D80721F48091F1038F7D17C0CF30CE +:1012E00090E5D90721F48091F1038F7B0FC0C131C4 +:1012F00020E5D20721F48091F1038F7707C0C33135 +:10130000D04531F48091F1038B7F877F8093F10387 +:101310008091F1030E94B7289CC08D2F99278F7070 +:10132000992781309105D9F49E012370332702C09B +:10133000880F991F2A95E2F79C688E0144E0000F00 +:10134000111F4A95E1F700271370802B912B53E072 +:10135000CC0FDD1F5A95E1F7C076DD272FC0823014 +:10136000910531F4DC2FCC278E01016F106A71C01A +:101370008330910569F4CE018370992701E010E074 +:1013800002C0000F111F8A95E2F7C8019C680FC0C8 +:10139000049709F05EC0CE018370992701E010E048 +:1013A00002C0000F111F8A95E2F7C8019A6823E076 +:1013B000CC0FDD1F2A95E1F7C07ED7708C010C2B76 +:1013C0001D2B47C0DF708E01106243C000E010E0AB +:1013D00040C08E013EC001E810E43BC003E810E4C9 +:1013E00038C002EE14E435C009EE14E432C00AEE4F +:1013F00014E42FC005EB14E42CC006EB14E429C060 +:1014000007EB14E426C00CEC14E423C00DEC14E448 +:1014100020C003E815E41DC00AE815E41AC002E97B +:1014200015E417C004E915E414C001E216E411C084 +:1014300003E216E40EC004E216E40BC005E216E473 +:1014400008C006E216E405C007E216E402C00AE29C +:1014500016E4C801DF91CF911F910F9108959CE090 +:10146000799FF00111249CE3899FE00DF11D112467 +:10147000E60FF11DEE0FFF1FE658FE4F8591949188 +:10148000803E9105E0F4803C910558F5813391054B +:1014900009F46FC048F48932910509F463C08A32B7 +:1014A000910509F46DC072C089339105E9F0823865 +:1014B0009105D1F08533910509F44DC067C0833E95 +:1014C000910581F138F4803E9105B9F0823E910595 +:1014D000D9F05CC0863E910561F1873E9105A1F18E +:1014E00055C00E94D60708952091F10320FD02C047 +:1014F00021FF4CC080EE90E049C08091F10380FF55 +:10150000F9CF89E390E042C08091F10382FF0EC0E1 +:101510008091F10384FF03C080E090E037C083EE48 +:1015200090E034C08091F10382FFF2CF82EE90E030 +:101530002DC08091F10383FF0BC08091F10384FDE6 +:10154000EBCF87EE90E022C08091F10383FFF5CFCF +:1015500086EE90E01BC08091F10385FF07C089E211 +:1015600090E014C08091F10385FFF9CF85E390E00E +:101570000DC08091F10386FF07C08AE290E006C0AB +:101580008091F10386FFF9CF81E390E00E94E607A6 +:101590000895CF92DF92EF92FF920F931F9301E095 +:1015A00010E020E030E06801790104C0CC0CDD1CC3 +:1015B000EE1CFF1C8A95D2F704C0000F111F221FDA +:1015C000331F6A95D2F70C291D292E293F29C09077 +:1015D000B303D090B403E090B503F090B603C022FB +:1015E000D122E222F322842FC016D106E206F306AE +:1015F00041F41F910F91FF90EF90DF90CF900C94EA +:10160000A5251F910F91FF90EF90DF90CF900C9444 +:10161000C62508950C94090B5F926F927F928F926A +:101620009F92AF92BF92CF92DF92EF92FF920F9371 +:101630001F93CF93DF93CDB7DEB72A970FB6F894F9 +:10164000DEBF0FBECDBFCE0101966C014E019BE007 +:10165000890E911C20E030E040E050E060E070E056 +:1016600000E010E0E12CF12C6C2C5D2C8AE0782E4F +:10167000AA24A394B12CEBE6F2E0A62DB52D872D7C +:1016800001900D928A95E1F7F601819191916F0198 +:10169000FC01E07FFF27E032F10559F48F709927B4 +:1016A000F50102C0EE0FFF1F8A95E2F7EE2AFF2A2E +:1016B00037C0E033F10559F48F709927F50102C066 +:1016C000EE0FFF1F8A95E2F70E2B1F2B29C0E03487 +:1016D000F10559F48F709927F50102C0EE0FFF1F35 +:1016E0008A95E2F76E2B7F2B1BC0E035F10559F48C +:1016F0008F709927F50102C0EE0FFF1F8A95E2F760 +:101700004E2B5F2B0DC0E036F10551F48F709927F9 +:10171000F50102C0EE0FFF1F8A95E2F72E2B3F2B3B +:10172000C814D90409F0A7CF84B19E2D90958923C0 +:1017300084B985B1E82AE5B887B1902F90958923BF +:1017400087B988B1082B08B98AB1962F909589235B +:101750008AB98BB1682B6BB98DB1942F9095892381 +:101760008DB98EB1482B4EB980B3922F90958923B5 +:1017700080BB81B3282B21BB2A960FB6F894DEBF1D +:101780000FBECDBFDF91CF911F910F91FF90EF90D2 +:10179000DF90CF90BF90AF909F908F907F906F9091 +:1017A0005F9008955F926F927F928F929F92AF9217 +:1017B000BF92CF92DF92EF92FF920F931F93CF933E +:1017C000DF93CDB7DEB768970FB6F894DEBF0FBED4 +:1017D000CDBF85B7806885BF85B7806885BF0E940B +:1017E0000C0BCE0101966C014E0199E1890E911C02 +:1017F00020E030E040E050E060E070E000E010E029 +:10180000E12CF12C6C2C5D2C88E1782EAA24A39479 +:10181000B12CE5E7F2E0A62DB52D872D01900D92B4 +:101820008A95E1F7F601819191916F01FC01E07FCA +:10183000FF27E032F10559F48F709927F50102C0B6 +:10184000EE0FFF1F8A95E2F7EE2AFF2A37C0E0333A +:10185000F10559F48F709927F50102C0EE0FFF1FB3 +:101860008A95E2F70E2B1F2B29C0E034F10559F4BD +:101870008F709927F50102C0EE0FFF1F8A95E2F7DE +:101880006E2B7F2B1BC0E035F10559F48F70992723 +:10189000F50102C0EE0FFF1F8A95E2F74E2B5F2B7A +:1018A0000DC0E036F10551F48F709927F50102C0A3 +:1018B000EE0FFF1F8A95E2F72E2B3F2BC814D90499 +:1018C00009F0A7CF84B19E2D9095892384B985B165 +:1018D000E82AE5B887B1902F9095892387B988B118 +:1018E000082B08B98AB1962F909589238AB98BB1B4 +:1018F000682B6BB98DB1942F909589238DB98EB1DA +:10190000482B4EB980B3922F9095892380BB81B329 +:10191000282B21BBE2E0F3E0A8EFB2E01192119294 +:101920001D921D9283E0EC30F807C1F768960FB660 +:10193000F894DEBF0FBECDBFDF91CF911F910F9105 +:10194000FF90EF90DF90CF90BF90AF909F908F90DF +:101950007F906F905F900C94CB075F926F927F9215 +:101960008F929F92AF92BF92CF92DF92EF92FF92AF +:101970000F931F93CF93DF93CDB7DEB7A2970FB628 +:10198000F894DEBF0FBECDBF6E0149E1C40ED11C7D +:1019900088EFA82E82E0B82E75019AE0592E4601F4 +:1019A00001E010E028E1622E35E0732EEBE6F2E074 +:1019B000D401852D01900D928A95E1F7D6018D9184 +:1019C0009D916D019C01207F33272032310591F4D8 +:1019D00024B18F709927F80102C0EE0FFF1F8A957E +:1019E000E2F7CF01922F982B94B995B18095892376 +:1019F00085B953C02033310591F427B18F709927F1 +:101A0000A80102C0440F551F8A95E2F7CA01922F20 +:101A1000982B97B998B18095892388B93EC0203416 +:101A2000310591F42AB18F709927D80102C0AA0F0D +:101A3000BB1F8A95E2F7CD01922F982B9AB99BB1E3 +:101A4000809589238BB929C02035310591F42DB1BA +:101A50008F709927F80102C0EE0FFF1F8A95E2F7F9 +:101A6000CF01922F982B9DB99EB1809589238EB975 +:101A700014C02036310589F420B38F709927A8014E +:101A800002C0440F551F8A95E2F7CA01922F982B86 +:101A900090BB91B38095892381BB50EA5A95F1F7A9 +:101AA000BE016F5F7F4F20E030E040E050E0E5E7AF +:101AB000F2E0DE011196862D01900D928A95E1F7F4 +:101AC000DB018D919D91BD01FC01E07FFF27E0329C +:101AD000F10511F4E3B113C0E033F10511F4E6B1FF +:101AE0000EC0E034F10511F4E9B109C0E035F105AB +:101AF00011F4ECB104C0E036F105B9F4EFB1F0E057 +:101B00008F70992702C0F595E7958A95E2F7E0FD79 +:101B100008C0C801042E02C0880F991F0A94E2F77A +:101B200002C080E090E0282B392B4F5F5F4F4C3094 +:101B3000510509F0BCCFF70180819181821793078D +:101B400021F031832083709209020E940C0BF2E095 +:101B5000EF0EF11C42E0E41643E0F40609F026CF54 +:101B6000809109028823C9F081508093090288235B +:101B700039F08FE99FE00197F1F700C000000DC038 +:101B8000E2E0F3E0D5018D919D915D018193919308 +:101B9000B2E0AB16B3E0BB06A9F70E94D10781E023 +:101BA000A2960FB6F894DEBF0FBECDBFDF91CF91E6 +:101BB0001F910F91FF90EF90DF90CF90BF90AF906B +:101BC0009F908F907F906F905F900895E82FF0E046 +:101BD000EE0FFF1FEE5FFC4F808191810895089505 +:101BE0008091DC0381608093DC030C94C928809190 +:101BF000DC038E7F8093DC030C94C9280E949B2811 +:101C0000811102C00E9477280E94C5288093DC03BE +:101C10003E9A809171008D7F8093710082E0809365 +:101C200090008AE18093910081E080930E030895F3 +:101C300080910E03811102C00E94FE0D10925E037E +:101C400010925D03809171008D7F8093710080916F +:101C500090008F77809390001092200310921F03C2 +:101C600010925703109258031092590310925A037E +:101C70001092560310925503E5E3F3E0A5E2B3E0BA +:101C800011921192119211921D921D9283E0E535ED +:101C9000F807B1F70895CF92DF92EF92FF920F937A +:101CA0001F93CF93DF9320911F03222309F484C055 +:101CB0006B017C0180910E03811102C00E94FE0D18 +:101CC00005E513E0C7E0D0E0A7019601F801929185 +:101CD0008291729162918F010E94052E811131C013 +:101CE000FE01EE0FFF1FEE0FFF1FEB5CFC4F10829B +:101CF000118212821382DE01AA0FBB1FAB5DBC4FA3 +:101D000011961C921E92C730D105E9F021964481AC +:101D10005581668177814083518362837383148206 +:101D200015821682178212968D919C9113971196A7 +:101D30009C938E9313961C921E9212973496129631 +:101D4000E2CF219708F680915D0390915E030197A1 +:101D500097FD05C090935E0380935D0304C01092CD +:101D60005E0310925D0380915D0390915E0320916C +:101D70005B0330915C032817390724F010925C0351 +:101D800010925B03892BC1F4809171008D7F809349 +:101D90007100809190008F7780939000109257038C +:101DA000109258031092590310925A03109256033E +:101DB0001092550310921F03DF91CF911F910F9145 +:101DC000FF90EF90DF90CF9008951F920F920FB683 +:101DD0000F9211244F925F926F927F928F929F92F7 +:101DE000AF92BF92CF92DF92EF92FF922F933F93E9 +:101DF0004F935F936F937F938F939F93AF93BF9313 +:101E0000CF93DF93EF93FF9380911F03882309F40F +:101E10009BC1C0915D03D0915E031C161D060CF0A2 +:101E200093C140900F035090100360901103709085 +:101E3000120320E030E0A901C301B2010E94B02FDB +:101E400018160CF065C0C130D10509F452C080915C +:101E50005B0390915C03BE010E9482317C019093F0 +:101E60005C0380935B038090210390902203A090F9 +:101E70002303B090240320E030E040E85FE3C50195 +:101E8000B4010E94A12D60932103709322038093DB +:101E9000230390932403F701EE0FFF1FEE0FFF1FA4 +:101EA000EB5CFC4FA301920160817181828193817F +:101EB0000E94092E20E030E040E05EE30E94B42F53 +:101EC0009B01AC01C501B4010E94B02F18168CF41F +:101ED000C7010196BE010E94823190935C038093FA +:101EE0005B0310922103109222031092230310929D +:101EF0002403E0915B03F0915C03EE0FFF1FEE0FF4 +:101F0000FF1FEB5CFC4F6081718182819381D0C0A7 +:101F1000C0905703D0905803E0905903F0905A03B3 +:101F200020E030E0A901C701B6010E94052E2197EB +:101F3000882309F4A2C0FE01EE0FFF1FEE0FFF1F62 +:101F4000EB5CFC4F80809180A280B380A50194015E +:101F5000C701B6010E94052E87FF31C0A50194017B +:101F600060E070E08CED93EC0E94092E20E030E000 +:101F700040E451E40E94092E20E030E040E05FE3BD +:101F80000E94B42F9B01AC0160E070E080E090E41F +:101F90000E9417309B01AC01C501B4010E94B42F0F +:101FA0009B01AC01C701B6010E94052E87FF07C047 +:101FB000A701960160E070E08CED93E439C0A501C3 +:101FC0009401C701B6010E94B02F18160CF055C03D +:101FD000A501940160E070E08CED93E40E94092E6D +:101FE00020E030E040E451E40E94092E20E030E09F +:101FF00040E05FE30E94B42F9B01AC0160E070E021 +:1020000080E090E40E9417309B01AC01C501B4014F +:102010000E94B42F9B01AC01C701B6010E94B02FF2 +:1020200018165CF5A701960160E070E08CED93EC6A +:102030000E94092E20E030E040E451E40E94092E85 +:1020400020E030E040E05FE30E94B42F9B01AC0150 +:1020500060E070E080E090E40E9417309B01AC01EA +:10206000C701B6010E94B42F6093570370935803C1 +:102070008093590390935A0313C0FE01EE0FFF1F84 +:10208000EE0FFF1FEB5CFC4F80819181A281B38139 +:102090008093570390935803A0935903B0935A0326 +:1020A00060915703709158038091590390915A039E +:1020B00020910C0330910D032F3F4FEF340731F087 +:1020C0002F5F3F4F30930D0320930C030E940C139E +:1020D0006B017C0120E034E244EF51E40E94052EC4 +:1020E00087FF08C086EFC82E88E2D82E84EFE82E3E +:1020F00081E4F82E20E030E040E051E4C701B60171 +:102100000E94B42F9B01AC0160E074E284E79BE481 +:102110000E94092E6B017C010E94712E7093970022 +:102120006093960020910A0230910B0240910C02BC +:1021300050910D02C701B6010E94B42F0E94712E6A +:10214000709399006093980080912003882309F48C +:1021500033C1C0901B03D0901C03E0901D03F0908E +:102160001E0320E030E0A901C701B6010E94B02F94 +:102170001816D4F580910C0390910D038F3F2FEF2B +:10218000920729F0019690930D0380930C03C701E9 +:10219000B6010E940C1320E030E040E051E40E94C0 +:1021A000B42F9B01AC0160E074E284E79BE40E94E1 +:1021B000092E6B017C010E94712E70939700609331 +:1021C000960020910A0230910B0240910C0250912E +:1021D0000D02C701B6010E94B42F0E94712E7093A8 +:1021E00099006093980008C0109297001092960092 +:1021F0001092990010929800609115037091160347 +:102200006F5F7F4F709316036093150320919600C4 +:102210003091970080E090E0232BF1F0C091960080 +:10222000D09197000E94A22E6B017C01BE0180E03C +:1022300090E00E94A22E9B01AC0160911703709167 +:1022400018038091190390911A030E94092E20E02F +:102250003FEF4FE757E410C00E94A22E6B017C01B4 +:1022600020E030EE4FEF54E46091170370911803B3 +:102270008091190390911A030E94B42F9B01AC0125 +:10228000C701B6010E94B02F87FD96C0809113034D +:102290008F5F8093130390E02091D8033091D9038E +:1022A00082179307A0F08091E303882319F010921E +:1022B00013030DC0809171008D7F80937100809118 +:1022C00090008F7780939000109220037DC08091C2 +:1022D0001403C0911303811128C0C090DD03D09076 +:1022E000DE03E090DF03F090E00320E030E0A9019E +:1022F000C701B6010E94B02F1816BCF481E080938C +:10230000140310921B0310921C0310921D031092D1 +:102310001E03C0921703D0921803E0921903F092A3 +:102320001A03C150C093130343C0109214031092B8 +:102330000D0310920C03E091DA03F091DB0348E007 +:10234000C49FE00DF11D112480819181A281B38190 +:1023500080931B0390931C03A0931D03B0931E0353 +:1023600020E030E040E85EE36481758186819781FA +:102370000E94B42F6B017C0120E030E048EC52E475 +:1023800060910E0270910F028091100290911102E3 +:102390000E94092E9B01AC01C701B6010E94B42F17 +:1023A00060931703709318038093190390931A0393 +:1023B00010921603109215038091DC0380FD04C077 +:1023C0001092200310921F03FF91EF91DF91CF91A4 +:1023D000BF91AF919F918F917F916F915F914F913D +:1023E0003F912F91FF90EF90DF90CF90BF90AF90F3 +:1023F0009F908F907F906F905F904F900F900FBE47 +:102400000F901F901895CF92DF92EF92FF92CF938B +:10241000DF936B017C01EA0180910E03811102C000 +:102420000E94FE0D8091DC0380FF46C080915D0319 +:1024300090915E0308970CF03FC0809171008D7FF2 +:10244000809371008091200381110E94180E81E019 +:1024500080931F0310920D0310920C0320E030E0D4 +:10246000A901C701B6010E94B02F1816DCF48091B3 +:102470005D0390915E03FC01EE0FFF1FEE0FFF1F47 +:10248000EB5CFC4FC082D182E282F382FC01EE0F52 +:10249000FF1FEB5DFC4FD183C083019690935E03D9 +:1024A00080935D03809171008260809371008091C0 +:1024B0009000806880939000DF91CF91FF90EF9023 +:1024C000DF90CF9008958F929F92AF92BF92CF925C +:1024D000DF92EF92FF920F931F93CF93DF93EC0164 +:1024E0007B01D42E4801590180910E03811102C055 +:1024F0000E94FE0D8091DC0380FF6BC08091710013 +:102500008D7F8093710080911F0381110E94180EAE +:1025100081E080932003D093DB03C093DA03F09231 +:10252000D903E092D803D092E3038092DD03909226 +:10253000DE03A092DF03B092E00310922103109219 +:102540002203109223031092240310921303888114 +:102550009981AA81BB8180931B0390931C03A09354 +:102560001D03B0931E0320E030E040E85EE36C8181 +:102570007D818E819F810E94B42F6B017C0120E0C0 +:1025800030E048EC52E460910E0270910F028091AD +:102590001002909111020E94092E9B01AC01C7010B +:1025A000B6010E94B42F60931703709318038093B1 +:1025B000190390931A031092160310921503809139 +:1025C0007100826080937100809190008068809398 +:1025D0009000DF91CF911F910F91FF90EF90DF90CE +:1025E000CF90BF90AF909F908F90089580915F03A0 +:1025F00090E0019666E070E00E94823180935F0374 +:10260000089580915F0390E0019766E070E00E947A +:10261000823180935F0308958F929F92AF92BF9211 +:10262000CF92DF92EF92FF920F931F93CF93DF939E +:102630006B017C01C0910C03D0910D03BE0180E0C1 +:1026400090E00E94A22E4B015C01A701960160E080 +:1026500070E08CE594E40E94092E9B01AC01C50159 +:10266000B4010E94B42F0E94762E20915F03233084 +:1026700009F473C028F4222351F02130E9F02CC171 +:10268000243009F4A0C0253009F4E0C025C180E061 +:1026900090E0A0E0BFE380930A0290930B02A09326 +:1026A0000C02B0930D0210920F03109210031092BF +:1026B00011031092120310C110920F031092100315 +:1026C00010921103109212036431710540F46A30C4 +:1026D000710560F520E030E040E85EE32BC0693C26 +:1026E000710508F0AAC080E090E00E94A22E20E0D0 +:1026F00030E040EA51E40E94A02D20E030E044E3C5 +:1027000053E40E94092E9B01AC010E94B42F20E0EB +:1027100030E040E05EE30E94B42F9B01AC0160E03A +:1027200070E080E09EE30E94A02D44C020E030E0F5 +:1027300040E05FE3C701B6010E94B42F6B017C014A +:1027400080E090E0A0E0BEE380930A0290930B0249 +:10275000A0930C02B0930D02BFC010920F03109211 +:10276000100310921103109212034AE0469F900149 +:10277000479F300D1124C90168EB7BE00E946E3148 +:10278000BC016C5D754077FF03C07195619571095F +:10279000882777FD8095982F0E94A42E2EE333EC96 +:1027A0004EE259E30E94B42F20E030E040EC5EE3BB +:1027B0000E94A12D60930A0270930B0280930C0279 +:1027C00090930D0289C010920F0310921003109283 +:1027D000110310921203CE0183709927892BE1F027 +:1027E000BE016170772780E090E00E94A22E20E079 +:1027F00030E040E05EE30E94B42F20E030E040E4AF +:102800005FE30E94A12D60930A0270930B028093F4 +:102810000C0290930D020CC080E090E0A0E0BFE3BA +:1028200080930A0290930B02A0930C02B0930D02C6 +:10283000C770DD27CD2B09F04FC010920A0210920D +:102840000B0210920C0210920D0246C010920F0360 +:1028500010921003109211031092120300E010E086 +:1028600020E03FE300930A0210930B0220930C0236 +:1028700030930D026739710578F180E090E00E9495 +:10288000A22E20E030E047E153E40E94A02D20E09A +:1028900030E04AE754E40E94092E20E030E048E4AA +:1028A00052E40E94B42F20E030E040EA51E40E945C +:1028B000E62E0E94712E660F771F660F771FFB01B1 +:1028C000E357FD4F2081318142815381C701B60119 +:1028D0000E94B42F6B017C01C701B601DF91CF913B +:1028E0001F910F91FF90EF90DF90CF90BF90AF902E +:1028F0009F908F900895809168030895CF93DF9300 +:1029000000D01F92CDB7DEB79C018091E8038430E0 +:1029100019F593E099833B832A839093E9008FEF25 +:102920009091E800815095FD06C095ED9A95F1F7DC +:1029300000008111F5CF8091E80085FF0DC040E0D7 +:1029400050E063E070E0CE0101960E94B7168091DE +:10295000E8008E778093E8000F900F900F90DF9142 +:10296000CF910895CF93DF9300D01F92CDB7DEB7FC +:102970002091E803243021F522E029839B838A8378 +:1029800083E08093E9008FEF9091E800815095FDFE +:1029900006C095ED9A95F1F700008111F5CF809171 +:1029A000E80085FF0DC040E050E063E070E0CE013C +:1029B00001960E94B7168091E8008E778093E80018 +:1029C0000F900F900F90DF91CF9108952091E80321 +:1029D0002430F1F422E02093E9002FEF3091E80059 +:1029E000215035FD06C035ED3A95F1F70000211173 +:1029F000F5CF2091E80025FF0BC040E050E065E0F6 +:102A000070E00E94B7168091E8008E778093E8000E +:102A10000895CF93DF932091E803243039F521E026 +:102A20002093E9002FEF3091E800215035FD06C0DA +:102A300035ED3A95F1F700002111F5CF2091E8002E +:102A400025FF14C0EC0140E050E068E070E00E9417 +:102A5000B7168091E8008E778093E80088E0FE0149 +:102A6000A0E6B3E001900D928A95E1F7DF91CF9156 +:102A700008958091E703811109C00E944C180E94BB +:102A8000A9188091E20084608093E200089510927A +:102A9000E7030895089508950C94A72742E061EC98 +:102AA00081E00E94C61742E061EC82E00E94C617F6 +:102AB00042E061EC83E00C94C6178091EA03833016 +:102AC00009F453C030F4813071F0823009F48CC0C5 +:102AD00008958A3009F478C08B3009F45EC08930DB +:102AE00009F09AC020C08091E903813A09F094C0AE +:102AF0008091E800877F8093E8008091ED039091BA +:102B0000EE03892B21F468E080E693E003C060E0E7 +:102B100080E090E070E00E9402178091E8008B77DF +:102B20008093E80008958091E903813209F074C030 +:102B30008091ED039091EE03892B09F06DC0809197 +:102B4000E800877F8093E8008091E80082FD05C05F +:102B50008091E8038111F8CF5FC08091F1008093EC +:102B600068038091E8008B7753C08091E903813A34 +:102B700009F052C08091ED039091EE03892B09F08A +:102B80004BC08091E800877F8093E8008091E80047 +:102B900080FFFCCF80911C0236C08091E903813216 +:102BA000D9F58091ED039091EE03892BA9F58091E1 +:102BB000E800877F8093E8000E94FB178091EB0379 +:102BC00080931C020C946C218091E903813221F5E1 +:102BD0008091E800877F8093E8000E94FB17809136 +:102BE000EC038093690308958091E903813AA1F48D +:102BF0008091E800877F8093E8008091E80080FF63 +:102C0000FCCF809169038093F1008091E8008E777A +:102C10008093E8000C94FB17089584B7877F84BFE6 +:102C200088E10FB6F89480936000109260000FBEA8 +:102C300090E080E80FB6F894809361009093610073 +:102C40000FBE0E949E1B0E944C180E94A9188091E2 +:102C5000E20084608093E20078940E942F1B0E941F +:102C6000A01B82E192E00E944A1B8091E80385301C +:102C700069F40E9461278091E6038823B1F30E94E2 +:102C80008F27882391F30E94A116EFCF0E94A81BE3 +:102C9000ECCF292F332723303105C9F064F42130DC +:102CA000310581F02230310509F043C084E590E020 +:102CB00020ED39E042C021323105F1F022323105F8 +:102CC00041F137C082E190E024E23AE036C0992732 +:102CD0008130910541F08230910541F0892B49F511 +:102CE000ECECF9E005C0EEE9F9E002C0E2E7F9E05A +:102CF000849190E09F0121C06330D8F4E62FF0E08A +:102D0000EE0FFF1FEA51FD4F2081318189E090E0F5 +:102D100014C0633070F470E0FB01EE0FFF1FE0524F +:102D2000FD4F20813181FB01E352FD4F808190E016 +:102D300004C080E090E020E030E0FA01318320839D +:102D4000089580E189BD82E189BD09B400FEFDCF0F +:102D50008091D8008F7D8093D8008091E0008260C0 +:102D60008093E0008091E00081FDFCCF0895CF9238 +:102D7000DF92EF92FF920F931F93CF93DF93EC01BB +:102D80008B016A010E941A18811133C0C114D10449 +:102D900039F0F60180819181081B190BC80FD91FEA +:102DA000E12CF12C0115110519F18091E80085FD48 +:102DB00016C08091E8008E778093E800C114D1049A +:102DC00049F0F60180819181E80EF91EF182E082DE +:102DD00085E00FC00E941A18882321F30AC0899148 +:102DE0008093F10001501109FFEFEF1AFF0ADACFCB +:102DF00080E0DF91CF911F910F91FF90EF90DF90D6 +:102E0000CF9008952091EF033091F00326173707F4 +:102E100048F06115710539F42091E8002E77209370 +:102E2000E80001C0B90140E061157105A9F12091E8 +:102E3000E803222309F443C0253009F442C020915D +:102E4000E80023FD40C02091E80022FD32C020911F +:102E5000E80020FFE9CF4091F3002091F20030E03C +:102E6000342BFC01CF016115710559F02830310573 +:102E700040F481918093F100615071092F5F3F4FC1 +:102E8000F1CF41E02830310509F040E02091E80021 +:102E90002E772093E800C8CF4111C9CF0AC0809196 +:102EA000E803882361F0853061F08091E80083FDBC +:102EB0000AC08091E80082FFF2CF80E0089582E0AE +:102EC000089583E0089581E008952091EF03309103 +:102ED000F0032617370748F06115710539F4209182 +:102EE000E8002E772093E80001C0B901FC0120E042 +:102EF0006115710591F18091E803882309F440C0C0 +:102F0000853009F43FC08091E80083FD3DC0809189 +:102F1000E80082FD2FC08091E80080FFE9CF20917A +:102F2000F3008091F20090E0922B6115710559F049 +:102F30008830910540F424912093F100319661503E +:102F400071090196F2CF21E0089709F020E0809105 +:102F5000E8008E778093E800CBCF2111CCCF0AC058 +:102F60008091E803882361F0853061F08091E8006A +:102F700083FD0AC08091E80082FFF2CF80E00895CF +:102F800082E0089583E0089581E00895982F9730B6 +:102F900058F59093E900981739F07091EC00209162 +:102FA000ED005091F00003C0242F762F50E021FF58 +:102FB00019C03091EB003E7F3093EB003091ED0073 +:102FC0003D7F3093ED003091EB0031603093EB00AA +:102FD0007093EC002093ED005093F0002091EE00F0 +:102FE00027FF07C09F5FD3CF8F708093E90081E0F8 +:102FF000089580E008958091E90387FF11C08091D2 +:10300000E80082FD05C08091E8038111F8CF11C06E +:103010008091E8008B770BC08091E803882349F00A +:103020008091E80080FFF8CF8091E8008E77809350 +:10303000E80008952091E4003091E50095E6409184 +:10304000EC00842F817040FF22C08091E80080FD59 +:103050001CC08091E803882391F0853091F0809125 +:10306000EB0085FD10C04091E4005091E50042174F +:10307000530729F39A01915011F784E0089582E0F3 +:10308000089583E0089581E0089580E008954091D7 +:10309000E80042FFDECF08950E94BA180E94C218CD +:1030A000E0EEF0E0808181608083E8EDF0E08081F7 +:1030B0008F77808319BCA7EDB0E08C918E7F8C93C5 +:1030C00080818F7E80831092E70308950F931F9372 +:1030D000CF93DF930E94BA180E94C218C8EDD0E0C7 +:1030E00088818F77888388818068888388818F7DB5 +:1030F000888319BC1092E8031092E4031092E6034F +:103100001092E50300EE10E0F80180818B7F808350 +:1031100088818160888342E060E080E00E94C61779 +:10312000E1EEF0E080818E7F8083E2EEF0E080814E +:1031300081608083808188608083F80180818E7FB8 +:103140008083888180618883DF91CF911F910F9167 +:103150000895E8EDF0E080818F7E8083E7EDF0E078 +:1031600080818160808384E082BF81E08093E70377 +:103170000C946618E8EDF0E080818E7F80831092D9 +:10318000E20008951092DA001092E10008951F9273 +:103190000F920FB60F9211242F933F934F935F938B +:1031A0006F937F938F939F93AF93BF93EF93FF930F +:1031B0008091E10082FF0BC08091E20082FF07C096 +:1031C0008091E1008B7F8093E1000E942E1B809113 +:1031D000DA0080FF1FC08091D80080FF1BC0809163 +:1031E000DA008E7F8093DA008091D90080FF0DC0D5 +:1031F00080E189BD82E189BD09B400FEFDCF81E097 +:103200008093E8030E94391505C019BC1092E803A9 +:103210000E9447158091E10080FF19C08091E20073 +:1032200080FF15C08091E2008E7F8093E200809144 +:10323000E20080618093E2008091D80080628093F8 +:10324000D80019BC85E08093E8030E944B1580915B +:10325000E10084FF30C08091E20084FF2CC080E157 +:1032600089BD82E189BD09B400FEFDCF8091D800FF +:103270008F7D8093D8008091E1008F7E8093E10064 +:103280008091E2008F7E8093E2008091E200816075 +:103290008093E2008091E403882311F084E007C06A +:1032A0008091E30087FD02C081E001C083E080934C +:1032B000E8030E944C158091E10083FF29C08091B2 +:1032C000E20083FF25C08091E100877F8093E100C9 +:1032D00082E08093E8031092E4038091E1008E7F06 +:1032E0008093E1008091E2008E7F8093E2008091E4 +:1032F000E20080618093E20042E060E080E00E94B2 +:10330000C6178091F00088608093F0000E944A15F3 +:10331000FF91EF91BF91AF919F918F917F916F91AD +:103320005F914F913F912F910F900FBE0F901F9083 +:1033300018951F920F920FB60F9211242F933F935F +:103340004F935F936F937F938F939F93AF93BF93AD +:10335000CF93DF93EF93FF93C091E900CF708091FB +:10336000EC00D82FD17080FDD0E81092E900809158 +:10337000F000877F8093F00078940E94DD1910920E +:10338000E9008091F00088608093F000CD2BCF7031 +:10339000C093E900FF91EF91DF91CF91BF91AF9181 +:1033A0009F918F917F916F915F914F913F912F915D +:1033B0000F900FBE0F901F9018951F93CF93DF9320 +:1033C000CDB7DEB7AA970FB6F894DEBF0FBECDBF5C +:1033D000E9EEF3E088E08E0F9091F10091938E1367 +:1033E000FBCF0E945D158091E80083FF1FC1809193 +:1033F000E9039091EA03492F50E04A30510508F063 +:1034000015C1FA01EE59FF4F0C949631803881F0C6 +:10341000823809F00BC18091ED038F708093E90031 +:103420008091EB0085FB882780F91092E90006C0A7 +:103430008091E5039091E603911182609091E800FC +:10344000977F9093E8008093F1001092F100C8C03C +:10345000282F2D7F09F0EAC0882319F0823061F00F +:10346000E5C08091EB03813009F0E0C0933009F0B2 +:1034700080E08093E6032BC08091EB03811127C08D +:103480008091ED038F7009F4D1C08093E900209101 +:10349000EB0020FF1CC0933021F48091EB00806290 +:1034A00014C09091EB0090619093EB0021E030E02C +:1034B000A90102C0440F551F8A95E2F74093EA0024 +:1034C0001092EA008091EB0088608093EB001092EC +:1034D000E9008091E800877F86C08111A7C0109124 +:1034E000EB031F778091E3008078812B8093E300CA +:1034F0008091E800877F8093E8000E94FB1780910D +:10350000E80080FFFCCF8091E30080688093E300B7 +:10351000111102C082E001C083E08093E80386C0FD +:103520008058823008F082C08091EB039091EC03C8 +:103530008C3D53E0950779F583E08A838AE289839D +:103540004FB7F894DE01139620E03EE051E2E32FFE +:10355000F0E050935700E49120FF03C0E295EF7034 +:103560003F5FEF708E2F90E0EA3010F0C79601C0F9 +:10357000C0968D939D932F5F243149F74FBF809163 +:10358000E800877F8093E8006AE270E0CE01019650 +:103590000E94021714C0AE014F5F5F4F6091ED03B0 +:1035A0000E944916BC01009709F440C09091E800C0 +:1035B000977F9093E80089819A810E946517809196 +:1035C000E8008B778093E80031C0803879F58091EE +:1035D000E800877F8093E8008091E4038093F10006 +:1035E0008091E8008E778093E8000E94FB171EC050 +:1035F00081111CC09091EB039230C0F48091E800DF +:10360000877F8093E8009093E4030E94FB178091EA +:10361000E403811106C08091E30087FD02C081E0D0 +:1036200001C084E08093E8030E944E158091E80079 +:1036300083FF0AC08091E800877F8093E800809133 +:10364000EB0080628093EB00AA960FB6F894DEBF81 +:103650000FBECDBFDF91CF911F9108950895CF93F5 +:103660008091E8038823A1F0C091E900CF70909188 +:10367000EC00892F817090FD80E8C82B1092E90042 +:103680008091E80083FD0E94DD19CF70C093E900AE +:10369000CF91089590936F0380936E030895E09106 +:1036A0006E03F0916F03309721F00190F081E02DCF +:1036B000099480E00895E0916E03F0916F033097D4 +:1036C00021F00280F381E02D09940895E0916E03CA +:1036D000F0916F03309721F00480F581E02D09947B +:1036E000089520916C0330916D038217930771F058 +:1036F00090936D0380936C03E0916E03F0916F03E0 +:10370000309721F00680F781E02D099408952091EB +:103710006A0330916B038217930771F090936B03E8 +:1037200080936A03E0916E03F0916F03309721F06C +:103730000084F185E02D0994089508950C949D1B53 +:103740000E94DB270E94D20B0E9461280C94092D55 +:103750004F925F927F928F929F92AF92BF92CF9241 +:10376000DF92EF92FF920F931F93CF93DF93CDB72A +:10377000DEB72A970FB6F894DEBF0FBECDBF0E940A +:10378000AD0C91E7C92E93E0D92E00E010E0AA24F9 +:10379000A394B12C702E802F0E94E60D4C01F601EF +:1037A000419051906F014826592641145104B1F4BB +:1037B0000F5F1F4F0530110569F78FEF89838A83EB +:1037C0001B820E94E4278160782F9D838C8349812E +:1037D0005A816B818D810E94611C3AC08091C70320 +:1037E00081FD0E94EF0D20E030E07501022E02C045 +:1037F000EE0CFF1C0A94E2F7C70184219521892B66 +:1038000009F12E837F828E209F2091E0892809F480 +:1038100090E098870E94E4278160782F9A878987B3 +:103820004E815F8168858A850E94611C000F111F8F +:10383000F801EF58FC4F80819181E826F926F1824A +:10384000E08206C02F5F3F4F2C30310571F6B0CFBC +:103850000E94482A109170030E944F1B1817D9F03C +:103860000E944F1B809370032A960FB6F894DEBF18 +:103870000FBECDBFDF91CF911F910F91FF90EF90C1 +:10388000DF90CF90BF90AF909F908F907F905F9090 +:103890004F900C940A0B2A960FB6F894DEBF0FBE19 +:1038A000CDBFDF91CF911F910F91FF90EF90DF90EF +:1038B000CF90BF90AF909F908F907F905F904F90F0 +:1038C0000895CF93DF93CDB7DEB72B970FB6F8945B +:1038D000DEBF0FBECDBF4F83588769877A878B873E +:1038E000DE01119686E0FD0111928A95E9F785E0E7 +:1038F000FE01379601900D928A95E1F749815A8130 +:103900006B817C818D819E810E9406242B960FB64F +:10391000F894DEBF0FBECDBFDF91CF910895CF9356 +:10392000882309F4C2C0C82F823859F40E944F1B63 +:1039300081FDBBC089E30E94AF260E94322789E344 +:103940000CC0833879F40E944F1B80FDAEC083E524 +:103950000E94AF260E94322783E50E94CC26CF9199 +:103960000C943227843859F40E944F1B82FD9DC06D +:1039700087E40E94AF260E94322787E4EECF8CEFC7 +:103980008C0F813A48F48C2F0E94712C81118DC0CC +:103990008C2F0E94AF26E3CF80E28C0F883048F452 +:1039A000C77081E001C0880FCA95EAF70E94EB2634 +:1039B000D6CF8BE58C0F833078F4C53A29F0C63A20 +:1039C00031F083E890E005C081E890E002C082E831 +:1039D00090E0CF910C94711B88E58C0F833108F037 +:1039E00064C0C83A39F1C93A41F1CA3A49F1CB3A0F +:1039F00051F1CC3A59F1CD3A61F1C03B69F1CE3A7F +:103A000071F1CF3A79F1C13B81F1C23B89F1C33BFE +:103A100091F1C43B99F1C53BA1F1C63BA9F1C73B6C +:103A2000B1F1C83BB9F1C93BC1F1CA3BC9F180E072 +:103A300090E038C082EE90E035C089EE90E032C070 +:103A40008AEE90E02FC085EB90E02CC086EB90E0F2 +:103A500029C087EB90E026C08CEC90E023C08DEC71 +:103A600090E020C083E891E01DC08AE891E01AC090 +:103A700082E991E017C084E991E014C081E292E00C +:103A800011C083E292E00EC084E292E00BC085E2B6 +:103A900092E008C086E292E005C087E292E002C0B0 +:103AA0008AE292E0CF910C94871BCF9108958823EE +:103AB00009F44BC0823859F40E944F1B81FF45C066 +:103AC00089E30E94AF260E94322789E30CC0833825 +:103AD00071F40E944F1B80FF38C083E50E94AF261F +:103AE0000E94322783E50E94CC260C94322784382A +:103AF00059F40E944F1B82FF28C087E40E94AF2622 +:103B00000E94322787E4EFCF9CEF980F913A58F349 +:103B100090E2980F983050F4877091E001C0990FAF +:103B20008A95EAF7892F0E94F126DFCF9BE5980F4F +:103B3000933020F480E090E00C94711B885A83311C +:103B400020F480E090E00C94871B0895882321F0F6 +:103B50000E94EB260C9432270895882321F00E94BE +:103B6000F1260C9432270895BF92CF92DF92EF9204 +:103B7000FF920F931F93CF93DF9300D000D000D01C +:103B8000CDB7DEB725E0FC01DE01119601900D9264 +:103B90002A95E1F7FC01D0801181028125812295CF +:103BA0002F7043815481452B09F472C31F3F21F4C8 +:103BB000FFEFDF1609F46CC37C012E830E94D3074C +:103BC000D9821A8369817A81802F0E94AB26182FAF +:103BD000B92E0E9460260E9427252E81002319F00D +:103BE0000E9408272E81EB2DE295EF70F0E0E4595A +:103BF000FF4F0C9496318B2D807F9B2D9F70F92E5B +:103C0000882319F0F29480EFF822002389F0FF2036 +:103C100009F47CC280E2810F883020F48F2D0E944D +:103C2000EB2603C08F2D0E94FB260E9432276EC216 +:103C3000812F0E94571DFF2009F42AC3105E8F2D8B +:103C4000183018F40E94F12602C00E94012726961F +:103C50000FB6F894DEBF0FBECDBFDF91CF911F919D +:103C60000F91FF90EF90DF90CF90BF900C94322790 +:103C70008B2D807F9B2D9F70803211F4892F03C084 +:103C8000892F8295807F112319F0113011F12BC0FB +:103C90000023A9F0222389F1213079F526960FB669 +:103CA000F894DEBF0FBECDBFDF91CF911F910F9172 +:103CB000FF90EF90DF90CF90BF900C941B272223B2 +:103CC00019F0213009F4E4C28E830E941E278E81F0 +:103CD0009BC1002321F0263008F0DAC20EC0253047 +:103CE00008F0D6C291C10023C9F0222331F0F701B8 +:103CF000958190FF0BC29F70958326960FB6F8941E +:103D0000DEBF0FBECDBFDF91CF911F910F91FF900E +:103D1000EF90DF90CF90BF900C94A61D222309F462 +:103D200073C109C22B2D26952695237030E02115ED +:103D3000310521F021303105D1F0AAC2002321F054 +:103D4000812F9B2D937002C080E090E026960FB6E5 +:103D5000F894DEBF0FBECDBFDF91CF911F910F91C1 +:103D6000FF90EF90DF90CF90BF900C94711B0023D9 +:103D700021F0812F9B2D937002C080E090E0269669 +:103D80000FB6F894DEBF0FBECDBFDF91CF911F916C +:103D90000F91FF90EF90DF90CF90BF900C94871B16 +:103DA000812F002319F00E94502902C00E94B829D7 +:103DB00026960FB6F894DEBF0FBECDBFDF91CF9130 +:103DC0001F910F91FF90EF90DF90CF90BF900C94D8 +:103DD0003D2A8B2D837009F07BC0011159C2812FC0 +:103DE000829586958770880F880F912F9F70C92EB6 +:103DF000D12CE12CF12C082E04C0CC0CDD1CEE1CC7 +:103E0000FF1C0A94D2F714FF12C04FE050E060E0AC +:103E100070E004C0440F551F661F771F8A95D2F7C4 +:103E2000CB01BA01609570958095909503C060E0D4 +:103E300070E0CB012B2D269526952370422F50E064 +:103E400042305105D9F04330510569F16C297D2983 +:103E50008E299F294130510551F126960FB6F894CD +:103E6000DEBF0FBECDBFDF91CF911F910F91FF90AD +:103E7000EF90DF90CF90BF900C944E256C297D2958 +:103E80008E299F2926960FB6F894DEBF0FBECDBFB0 +:103E9000DF91CF911F910F91FF90EF90DF90CF9026 +:103EA000BF900C946A250E944E25C701B601269644 +:103EB0000FB6F894DEBF0FBECDBFDF91CF911F913B +:103EC0000F91FF90EF90DF90CF90BF900C94322530 +:103ED000002319F08B2D817001C08695882309F489 +:103EE000D7C1812F829586958770880F880F912F73 +:103EF0009F70C92ED12CE12CF12C082E04C0CC0CC3 +:103F0000DD1CEE1CFF1C0A94D2F714FF12C04FE018 +:103F100050E060E070E004C0440F551F661F771F3B +:103F20008A95D2F7CB01BA016095709580959095EE +:103F300003C060E070E0CB012B2D26952695237001 +:103F4000422F50E042305105D9F04330510569F11C +:103F50006C297D298E299F294130510551F12696E2 +:103F60000FB6F894DEBF0FBECDBFDF91CF911F918A +:103F70000F91FF90EF90DF90CF90BF900C94282688 +:103F80006C297D298E299F2926960FB6F894DEBFCD +:103F90000FBECDBFDF91CF911F910F91FF90EF909A +:103FA000DF90CF90BF900C9444260E942826C70132 +:103FB000B60126960FB6F894DEBF0FBECDBFDF91D7 +:103FC000CF911F910F91FF90EF90DF90CF90BF9016 +:103FD0000C940C26103F49F118F4103E48F491C09F +:103FE000123F09F453C0E8F1133F09F464C089C0DB +:103FF0001F708B2D8F71002321F00E94A525812F2A +:104000007CCE0E94C625812F26960FB6F894DEBF7F +:104010000FBECDBFDF91CF911F910F91FF90EF9019 +:10402000DF90CF90BF900C94AD1D0023B1F02530F0 +:1040300008F02EC18B2D8F7126960FB6F894DEBF37 +:104040000FBECDBFDF91CF911F910F91FF90EF90E9 +:10405000DF90CF90BF900C94EB25263008F018C16C +:10406000E9CF0023A9F08B2D8F7126960FB6F89417 +:10407000DEBF0FBECDBFDF91CF911F910F91FF909B +:10408000EF90DF90CF90BF900C94A525002359F3BB +:104090008B2D8F7126960FB6F894DEBF0FBECDBF65 +:1040A000DF91CF911F910F91FF90EF90DF90CF9014 +:1040B000BF900C94C625002399F08B2D8F71269606 +:1040C0000FB6F894DEBF0FBECDBFDF91CF911F9129 +:1040D0000F91FF90EF90DF90CF90BF900C949025C0 +:1040E00026960FB6F894DEBF0FBECDBFDF91CF91FD +:1040F0001F910F91FF90EF90DF90CF90BF900C94A5 +:1041000086250023A9F0222309F4ADCF812F26961E +:104110000FB6F894DEBF0FBECDBFDF91CF911F91D8 +:104120000F91FF90EF90DF90CF90BF900C948F1C79 +:10413000222309F4ADCF812F26960FB6F894DEBF67 +:104140000FBECDBFDF91CF911F910F91FF90EF90E8 +:10415000DF90CF90BF900C94571D4B2D4F70612F67 +:10416000C7010E940B0626960FB6F894DEBF0FBE5D +:10417000CDBFDF91CF911F910F91FF90EF90DF9016 +:10418000CF90BF900C94AA24011182C09B2D9F70E8 +:10419000492F50E04230510509F443C0C4F44115A1 +:1041A000510571F14130510509F072C026960FB6E4 +:1041B000F894DEBF0FBECDBFDF91CF911F910F915D +:1041C000FF90EF90DF90CF90BF900C94312D433053 +:1041D0005105C1F14430510509F05AC0812F26968E +:1041E0000FB6F894DEBF0FBECDBFDF91CF911F9108 +:1041F0000F91FF90EF90DF90CF90BF900C94832DA4 +:1042000026960FB6F894DEBF0FBECDBFDF91CF91DB +:104210001F910F91FF90EF90DF90CF90BF900C9483 +:104220001A2D26960FB6F894DEBF0FBECDBFDF91D4 +:10423000CF911F910F91FF90EF90DF90CF90BF90A3 +:104240000C944D2D26960FB6F894DEBF0FBECDBF51 +:10425000DF91CF911F910F91FF90EF90DF90CF9062 +:10426000BF900C94602D4B2D4F70612FC701269687 +:104270000FB6F894DEBF0FBECDBFDF91CF911F9177 +:104280000F91FF90EF90DF90CF90BF900C94D507E7 +:1042900026960FB6F894DEBF0FBECDBFDF91CF914B +:1042A0001F910F91FF90EF90DF90CF90BF900895F6 +:1042B0000E9408270E9418270E94DD260E943227AC +:1042C0000E94EE2A0E943D2A80E090E00E94711B2D +:1042D00080E090E00C94871B0E94F8260C945821F3 +:1042E0000E94A026292F22952F7030E02C30310516 +:1042F0004CF42A3031056CF422503109223031055A +:1043000088F407C02C30310549F02F30310531F0E9 +:1043100009C0803E48F0803F29F406C093FB8827FF +:1043200080F9089580E0089581E00895CF93DF93A8 +:1043300000D000D01F92CDB7DEB70F900F900F9036 +:104340000F900F90DF91CF910895CF93DF9300D01E +:1043500000D000D0CDB7DEB726960FB6F894DEBFFA +:104360000FBECDBFDF91CF9108951F93CF93DF9301 +:10437000C0917B0316E080917C03C81799F0D0E0D0 +:104380001C9FF0011D9FF00D1124E358FC4F40814C +:10439000518162817381848195810E94A52121963A +:1043A000C770E9CFDF91CF911F9108954091AD0380 +:1043B0005091AE036091AF037091B0038091B1034F +:1043C0009091B2030C94A5218091B20382958F70D5 +:1043D00009F054C08091AF03882309F44FC0809145 +:1043E0007B03A0917C036091AD037091AE0340917B +:1043F000B0035091B103B6E08A1709F43FC090E0D2 +:1044000041155105C1F17F3F11F46F3FA1F1B89FF4 +:10441000F001B99FF00D1124E358FC4F2181721374 +:104420002AC02081621327C02281211124C0238148 +:1044300034812417350710F421503109241B350B22 +:10444000283C3105C0F42091B2032F7020612093E5 +:10445000B20326E0289FF001299FF00D1124EE57AA +:10446000FC4F80818F70806180838DEA93E00E9491 +:10447000B41D0C94B52101968770BECF0895CF92DC +:10448000DF92EF92FF920F931F93CF93DF93CDB7FD +:10449000DEB762970FB6F894DEBF0FBECDBF8C01BA +:1044A00085E0F801DE011D9601900D928A95E1F7F5 +:1044B000D8014C9111965C91119712966C911297BC +:1044C0001396CD90DC9014973091AD037091AE03AC +:1044D0008091B0039091B103009709F46BC17F3FC5 +:1044E00019F43F3F09F466C1E090AF03EE2009F4F0 +:1044F000C0C02091B203C816D90628F0F601E81B07 +:10450000F90BCF0104C0809590958C0D9D1DFF2463 +:10451000F394883C910578F0F12C207F09F0C6C017 +:104520007C2DD98AC88A89890E9496218DEA93E0D8 +:104530000E94B41DB1C0822F807F09F046C0751360 +:1045400014C0341312C0611110C02F702061209369 +:10455000B2030E94D6218DEA93E00E94B41D80919F +:10456000B203D80115968C932EC0CD2819F15F3F68 +:1045700011F44F3FF9F0F62E61111CC080917B03BE +:1045800020917C0336E0821709F45AC090E0389FEE +:10459000F001399FF00D1124E358FC4F718157133E +:1045A00006C07081471303C07281711103C0019668 +:1045B0008770E9CFF62E662309F418C18091B20303 +:1045C00081608093B203F12C11C1751308C03413BC +:1045D00006C0611104C08091B203D801C3C04D87E9 +:1045E0005E878D859E856A8B0E9470216A898823EB +:1045F000E1F16623D1F12091B203822F82958F7071 +:1046000090E0029774F08091AD039091AE0398878B +:104610008F831986DB86CA862C87CE0107960E9477 +:10462000B41D86E0F801ADEAB3E001900D928A95E1 +:10463000E1F70E94E4210E94D621FF24F394D6C022 +:104640004D875E878D859E850E94A026292F229505 +:104650002F7030E0223031050CF0BCC09F7009F0A3 +:10466000B6C0805E883008F4C1C0C8010E94B41D85 +:10467000E4CFC816D90608F453C0F601E81BF90BBD +:10468000CF01883C910508F450C0F12C7C2DD98ACB +:10469000C88A89890E949621EDEAF3E086E0DF016D +:1046A0001D928A95E9F70E94D621A0C0751314C007 +:1046B000341312C0611110C08091B203F8018583D8 +:1046C000C8010E94B41D86E0EDEAF3E0DF011D920F +:1046D0008A95E9F7FE2C8AC04D875E878D859E8579 +:1046E0006A8B0E9470216A89882309F4BECF6623F1 +:1046F00009F4BBCF2091B203822F82958F7090E096 +:1047000002970CF48ECF8091AD039091AE039A8303 +:1047100089831B82DD82CC822E83CE0101967FCFDE +:10472000809590958C0D9D1DACCFF62E662309F4D7 +:104730009CCF75132EC034132CC02091B20320FDE2 +:104740001FC0822F82958F70D9F0D80115962C93B7 +:1047500015978F3049F08F5F982F9295907F822F19 +:104760008F70892B15968C93C8010E94B41D86E02A +:10477000F801ADEAB3E001900D928A95E1F793CF8D +:1047800086E0F801ADEAB3E001900D928A95E1F779 +:104790002DC04D875E878D859E850E947021811179 +:1047A00040CF8091B20381608093B203C8010E9420 +:1047B000B41D1CC0662309F458CF4D875E878D85D4 +:1047C0009E850E947021882309F44FCF2ACF811142 +:1047D00048CF0CC0243031050CF047CF9F7009F44E +:1047E00040CFF8019581907F09F03BCF8F2D6296E5 +:1047F0000FB6F894DEBF0FBECDBFDF91CF911F91F2 +:104800000F91FF90EF90DF90CF9008951F93CF937B +:10481000DF93CDB7DEB72C970FB6F894DEBF0FBE8F +:10482000CDBF4F83588769877A878B879C87CE0156 +:1048300007960E943F22882369F08F8198852A85F8 +:104840003B85232BF1F19F3F09F063C08F3F09F0B7 +:1048500060C037C086E0FE013796DE0111960190F8 +:104860000D928A95E1F76F817885EA85FB8530970F +:1048700041F17F3F11F46F3F21F120917C0330E043 +:10488000C90101968770992740917B0350E08417F6 +:10489000950709F447C069837A83FD83EC8396E02A +:1048A000929FD001939FB00D1124A358BC4FFE01DD +:1048B000319601900D929A95E1F780937C030E94C6 +:1048C000B52116E080917B0390917C038917C1F19B +:1048D000189FC001112483589C4F0E943F228823B7 +:1048E00079F1E0917B031E9FF0011124E358FC4F06 +:1048F0004081518162817381848195810E94A521CB +:1049000080917B0390E001968770992780937B03C9 +:10491000D9CF4F81588569857A858B859C850E9482 +:10492000A521CFCF0E946C2110927C0310927B03B3 +:10493000EDEAF3E086E0DF011D928A95E9F7C1CF49 +:104940002C960FB6F894DEBF0FBECDBFDF91CF918E +:104950001F910895EF92FF920F931F93CF93DF93D0 +:104960008C01009709F46CC0F12CEE24E394E8016B +:104970002196F8018491843740F4843008F051C0C6 +:10498000813081F0823019F15BC0853709F444C071 +:10499000A8F19CE7980F903708F052C08F770E94DB +:1049A000571D41C00E5F1F4FFE01C49180E28C0F66 +:1049B000883048F4C7708E2D01C0880FCA95EAF779 +:1049C0000E940B2714C08C2F0E948F1C2DC00E5FDD +:1049D0001F4FFE01C49180E28C0F883058F4C770DD +:1049E0008E2D01C0880FCA95EAF70E9411270E94F8 +:1049F00032271AC08C2F0E94571D16C00E5F1F4F02 +:104A0000FE01C491CC2381F08FE99FE00197F1F77B +:104A100000C00000C150F6CF0E5F1F4FFE01F490A2 +:104A200003C00E948F1C8E018F2D882309F49FCF15 +:104A3000EFE9FFE03197F1F700C000008150F5CFBA +:104A4000DF91CF911F910F91FF90EF9008950895FE +:104A50006093B7037093B8038093B9039093BA033C +:104A60000C9458210F931F930091B7031091B80332 +:104A70002091B9033091BA03DC01CB01802B912B3B +:104A8000A22BB32B8093B7039093B803A093B903E1 +:104A9000B093BA031F910F910C9458210F931F9359 +:104AA0000091B7031091B8032091B9033091BA0374 +:104AB000DC01CB0180239123A223B3238093B7038E +:104AC0009093B803A093B903B093BA031F910F91C9 +:104AD0000C9458210F931F930091B7031091B803C2 +:104AE0002091B9033091BA03DC01CB0180279127D3 +:104AF000A227B3278093B7039093B803A093B90379 +:104B0000B093BA031F910F910C9458211092B303E4 +:104B10001092B4031092B5031092B6030C9458216E +:104B200041E050E060E070E004C0440F551F661F94 +:104B3000771F8A95D2F74093B3035093B4036093E1 +:104B4000B5037093B6030C94582141E050E060E047 +:104B500070E004C0440F551F661F771F8A95D2F777 +:104B60008091B3039091B403A091B503B091B603C3 +:104B7000482B592B6A2B7B2B4093B3035093B403E0 +:104B80006093B5037093B6030C94582141E050E054 +:104B900060E070E004C0440F551F661F771F8A95C0 +:104BA000D2F740955095609570958091B3039091A0 +:104BB000B403A091B503B091B603482359236A23E7 +:104BC0007B234093B3035093B4036093B503709376 +:104BD000B6030C94582141E050E060E070E004C05E +:104BE000440F551F661F771F8A95D2F78091B30334 +:104BF0009091B403A091B503B091B603482759270B +:104C00006A277B274093B3035093B4036093B503A3 +:104C10007093B6030C9458210F931F930091B30324 +:104C20001091B4032091B5033091B603DC01CB01A0 +:104C3000802B912BA22BB32B8093B3039093B403BF +:104C4000A093B503B093B6031F910F910C94582114 +:104C50000F931F930091B3031091B4032091B503F8 +:104C60003091B603DC01CB0180239123A223B3232F +:104C70008093B3039093B403A093B503B093B603AA +:104C80001F910F910C9458210F931F930091B30320 +:104C90001091B4032091B5033091B603DC01CB0130 +:104CA00080279127A227B3278093B3039093B4035F +:104CB000A093B503B093B6031F910F910C945821A4 +:104CC0000895CF92DF92EF92FF920F931F93CF93AD +:104CD000DF938C01C090B703D090B803E090B90384 +:104CE000F090BA038091B3039091B403A091B503FF +:104CF000B091B603C82AD92AEA2AFB2ACFE1D0E02C +:104D0000D701C6010C2E04C0B695A7959795879537 +:104D10000A94D2F780FF06C0B8018C2F0E942F0A98 +:104D2000019721F4219760F780E001C08C2FDF917B +:104D3000CF911F910F91FF90EF90DF90CF9008954A +:104D4000CF93DF93EC010E946126BE010E942F0ADF +:104D5000DF91CF910895CB010E94A0260895209164 +:104D60001D0230911E02F90132969FEF40E05191F1 +:104D7000581789F09F3F19F4511101C0942F4F5FCC +:104D80004630A9F79F3F39F0F901E90FF11D97FD72 +:104D9000FA9582830895089520911D0230911E0294 +:104DA000F9013296285F3F4F9081981301C010821D +:104DB0003196E217F307C1F7089581E090E0E091A2 +:104DC0001D02F0911E02E80FF91F10820196883033 +:104DD0009105A9F708959091C603892B8093C60386 +:104DE000089580959091C60389238093C603089502 +:104DF0001092C60308959091C503892B8093C50333 +:104E0000089580959091C50389238093C5030895E3 +:104E10001092C50308959091C403892B8093C40315 +:104E2000089580959091C40389238093C4030895C5 +:104E30001092C40308958093BB0308951092BB039E +:104E4000089580911D0290911E02FC0131969C01F3 +:104E5000285F3F4F80E0919191118F5FE217F30738 +:104E6000D1F70895E0911D02F0911E028091C603D2 +:104E70008083E0911D02F0911E0290818091C50314 +:104E8000892B8083E0911D02F0911E029081809118 +:104E9000C403892B80838091BB03882361F0E09158 +:104EA0001D02F0911E029081892B80830E94212790 +:104EB00081111092BB0380911D0290911E020C94EF +:104EC0005B1B8091E803843039F11092C80320E421 +:104ED00088E190E00FB6F894A895809360000FBE2B +:104EE0002093600080E00E94D20580E00E940A0BBF +:104EF00083B7817F846083BF83B7816083BF7894E9 +:104F0000889583B78E7F83BF88E10FB6F89480932E +:104F10006000109260000FBE089508950895CF9329 +:104F200080E00E94D2050E948D270E94AD0C0E9455 +:104F30008E27C0E08C2F0E94E60D892B29F4CF5FCD +:104F4000C530C1F780E001C081E0CF9108950E9493 +:104F50006C2180E00E94D2050E94092D0E944F1B07 +:104F60000C940A0B1F920F920FB60F9211248F937D +:104F70009F93AF93BF938091C803811113C0809119 +:104F8000C9039091CA03A091CB03B091CC03419681 +:104F9000A11DB11D8093C9039093CA03A093CB03B5 +:104FA000B093CC03BF91AF919F918F910F900FBEA3 +:104FB0000F901F90189582E084BD93E095BD9AEF05 +:104FC00097BD80936E0008952FB7F8948091C90320 +:104FD0009091CA03A091CB03B091CC032FBF089549 +:104FE000CF92DF92EF92FF920F931F932FB7F89417 +:104FF0004091C9035091CA036091CB037091CC03D7 +:105000002FBF6A017B01EE24FF248C0120E030E0F9 +:10501000C016D106E206F30610F4415051099A0178 +:10502000281B390BC9011F910F91FF90EF90DF9062 +:10503000CF9008951F920F920FB60F9211248F9365 +:105040009F93AF93BF938091C9039091CA03A0919E +:10505000CB03B091CC030196A11DB11D8093C90370 +:105060009093CA03A093CB03B093CC03BF91AF91AD +:105070009F918F910F900FBE0F901F9018950E94D7 +:105080004C18F8942FEF87EA91E621508040904029 +:10509000E1F700C0000087E090EBDC018093F303B0 +:1050A0009093F403A093F503B093F6039CE088E19A +:1050B0000FB6F894A895809360000FBE909360009F +:1050C000FFCF0E949B28811102C00E9477280E9476 +:1050D000A6288093C7030E94B3288093F1030E94FF +:1050E000AA28682F70E080E090E00C9428256DEEEF +:1050F0007EEF80E090E00E94BC3160E082E090E0D2 +:105100000E94AA3160E083E090E00E94AA3160E052 +:1051100084E090E00E94AA3160E085E090E00E9487 +:10512000AA3160E086E090E00E94AA316FEF87E04C +:1051300090E00C94AA3180E090E00E94A43121E03C +:105140008D3E9E4F09F020E0822F089582E090E08E +:105150000C949C3183E090E00C949C31682F83E0A8 +:1051600090E00C94AA3184E090E00C949C31682F7C +:1051700084E090E00C94AA3186E090E00C949C319D +:10518000682F86E090E00C94AA3187E090E00C94C0 +:105190009C31682F87E090E00C94AA318091CF0376 +:1051A00080FF0BC06091220285E0689FB00111244E +:1051B00075956795759567952BC081FF09C06091BE +:1051C000220285E0689FB00111247595679520C083 +:1051D00082FF07C06091220285E0689FB001112420 +:1051E00017C09091D0039923D1F0609121029617B6 +:1051F00088F72091220285E0289F90011124929F38 +:10520000A001939F500D112470E0CA010E948231C9 +:105210006038710540F46115710539F002C065E030 +:1052200070E0862F08958FE7089581E008958091BA +:10523000CF0380FF08C06091200270E075956795EC +:105240007595679521C081FF06C06091200270E0CE +:105250007595679519C082FF04C06091200270E0C7 +:1052600010C09091D0039923C1F060911F0296174E +:10527000A0F780912002899FC001112470E00E9454 +:1052800082316038710528F46115710521F0862F8F +:1052900008958FE7089581E0089561E070E0F4CF0C +:1052A000803F21F40E94CE28819504C0813F29F4DB +:1052B0000E94CE288093D3030895823F21F40E9458 +:1052C000CE28819504C0833F29F40E94CE28809384 +:1052D000D2030895893F19F40E94172905C08A3F17 +:1052E00031F40E94172981958093D40308958B3F50 +:1052F00021F40E941729819504C08C3F29F40E9453 +:1053000017298093D5030895843F21F48091D10318 +:10531000816017C0853F21F48091D103826011C064 +:10532000863F21F48091D10384600BC0873F21F434 +:105330008091D103886005C0883F31F48091D1030A +:1053400080618093D10308958D3F21F48091CF0334 +:1053500081600BC08E3F21F48091CF03826005C035 +:105360008F3F29F48091CF0384608093CF03089509 +:10537000803F39F48091D30387FF6CC01092D30330 +:1053800069C0813F29F48091D3031816BCF362C031 +:105390009091D203823F29F497FF5CC01092D20310 +:1053A00059C0833F19F41916CCF354C0893F41F416 +:1053B0008091D40318160CF04DC01092D4034AC04B +:1053C0008A3F29F48091D40387FF44C0F6CF8B3FF6 +:1053D00039F48091D50387FF3DC01092D5033AC0C0 +:1053E0008C3F29F48091D5031816BCF333C0843F59 +:1053F00021F48091D1038E7F17C0853F21F48091E5 +:10540000D1038D7F11C0863F21F48091D1038B7F22 +:105410000BC0873F21F48091D103877F05C0883F6F +:1054200031F48091D1038F7E8093D10313C08D3FDF +:1054300021F48091CF038E7F0BC08E3F21F48091A9 +:10544000CF038D7F05C08F3F29F48091CF038B7FE1 +:105450008093CF038091D20381110EC08091D3033A +:1054600081110AC08091D403811106C08091D503B7 +:10547000811102C01092D003089581ED93E00E9443 +:10548000661B0E94E4279093CE038093CD0308957A +:105490001F93CF93DF938091CD039091CE030E9411 +:1054A000F027AC019091D003992321F020912302A1 +:1054B00030E006C0209124028AE0289F9001112448 +:1054C0004217530708F486C08091D203C091D303DA +:1054D000D091D4031091D503811107C0C11176C0BA +:1054E000D11174C0111172C075C09F3F19F09F5F38 +:1054F0009093D003181624F40E94CE288093D203F0 +:105500008091D20387FF05C00E94CE2881958093A9 +:10551000D2031C1624F40E94CE288093D3038091DA +:10552000D30387FF05C00E94CE2881958093D303C3 +:105530006091D203662339F1C091D303CC2319F1D2 +:10554000772767FD7095872F972F0E94A42E23E35E +:1055500033E343E35FE30E94B42F0E94712E609314 +:10556000D2036C2F772767FD7095872F972F0E94A6 +:10557000A42E23E333E343E35FE30E94B42F0E94AE +:10558000712E6093D3031D1624F40E941729809373 +:10559000D4038091D40387FF05C00E941729819509 +:1055A0008093D403111624F40E9417298093D50305 +:1055B0008091D50387FF05C00E94172981958093AC +:1055C000D503DF91CF911F910C943D2A9F3F09F0A5 +:1055D0008ECF96CFDF91CF911F910895E1EDF3E04B +:1055E00085E0DF011D928A95E9F71092D0031092B1 +:1055F000CF030895833081F128F4813059F082304F +:10560000D1F00895853009F449C0B8F1863009F425 +:1056100056C0089580912402262F30E0280F311DB6 +:105620002F3F310524F4680F6093240208958FEF13 +:1056300080932402089580912302262F30E0280FC2 +:10564000311D2F3F310524F4680F60932302089524 +:105650008FEF80932302089580912202262F30E05D +:10566000280F311D2F3F310524F4680F609322026B +:1056700008958FEF80932202089580912102262FB2 +:1056800030E0280F311D2F3F310524F4680F60935F +:10569000210208958FEF80932102089580912002C6 +:1056A000262F30E0280F311D2F3F310524F4680FDD +:1056B0006093200208958FEF8093200208958091D7 +:1056C0001F02262F30E0280F311D2F3F310524F413 +:1056D000680F60931F0208958FEF80931F02089553 +:1056E000833011F128F4813049F0823091F008952F +:1056F000853081F120F18630C1F108958091240236 +:10570000681720F4861B80932402089510922402C7 +:10571000089580912302681720F4861B809323024A +:10572000089510922302089580912202681720F4B0 +:10573000861B809322020895109222020895809180 +:105740002102681720F4861B80932102089510928D +:105750002102089580912002681720F4861B80930F +:105760002002089510922002089580911F02681768 +:1057700020F4861B80931F02089510921F02089543 +:105780000F931F938732D8F58E3108F087C08E3083 +:1057900009F471C098F4873009F45BC08B3009F4C8 +:1057A00091C0863009F095C08091C703817F8E7FBC +:1057B0008093C70381E08093D7038CC0863109F4BE +:1057C00081C068F4803109F084C08091C70383FBF5 +:1057D000222720F991E0922790FB83F955C0893167 +:1057E00009F470C08B3109F074C08091C70381FB4C +:1057F000222720F991E0922790FB81F945C0883358 +:1058000009F460C050F4893209F45EC0853309F4AC +:105810005BC0873209F458C05CC0833409F454C0BB +:1058200028F48A3308F455C0895339C0883409F004 +:1058300050C00E946C210E94B2070FEF13ED20E3CD +:10584000015010402040E1F700C000000E943F28B6 +:1058500039C09091C703892F8095817080FB90F9A2 +:1058600029F0966098609093C70334C0997F977F22 +:105870009093C70327C08091C70382FB222720F99A +:1058800091E0922790FB82F98093C7039923D1F08E +:105890008091C70381608093C70314C08D5141E09C +:1058A00050E060E070E08A019B0104C0000F111F0E +:1058B000221F331F8A95D2F7C901B8010E942825FB +:1058C0000E946C2181E006C061E070E080E090E021 +:1058D000F5CF80E01F910F91089580E0089580E05A +:1058E0000895CF93C82F8091D703813069F018F0C5 +:1058F0008230C9F184C0E0911D02F0911E028081C6 +:10590000823209F07EC007C0E0911D02F0911E02B4 +:105910008081823261F48C2F0E946D2C811104C031 +:105920008C2F0E94C02B1DC081E090E01AC08C2FEC +:105930000E946F2C811114C0C43179F048F4CB302F +:1059400079F0C03109F061C082E08093D70308C0CC +:10595000C93219F0C83321F058C01092D70355C08E +:1059600081E0817054C0C93291F120F5C43179F1E0 +:10597000B0F4C73009F047C08EE18093240282E37F +:10598000809323028AE08093220284E180932102A3 +:1059900088E08093200288E280931F0234C0CE51B9 +:1059A000C63088F5EC2FF0E0E451FD4F8081809304 +:1059B000D60329C0CE34E9F020F4CB3421F56AE0D7 +:1059C00013C0C13579F0C235F1F461E00DC08091AA +:1059D000D603882319F01092D60315C081E0809376 +:1059E000D70315C061E006C08091D6030E94FA2A51 +:1059F0000AC06AE08091D6030E94702B04C0109206 +:105A0000D70380E004C081E002C080E0AACFCF913C +:105A100008950E949B28811102C00E9477280E944D +:105A2000BC288093F20380FF02C0869501C080E00D +:105A30000C94D2058091F203982F9695292F30E08F +:105A4000233031054CF49F5F990F8170892B816061 +:105A50008093F2030E94C0288091F20386950C94F3 +:105A6000D2058091F203982F969591F09158990F55 +:105A70008170892B8093F2038E7F91E009F490E08E +:105A80008091F20390FB80F98093F2030E94C0287A +:105A90008091F20386950C94D2058091F203982FA1 +:105AA000909590FB80F98093F2030E94C02880912A +:105AB000F20380FF02C0869501C080E00C94D205FD +:105AC0009091F203892F86958F5F8F779170843044 +:105AD00028F4880F892B8093F20302C09093F2037D +:105AE0008091F2038E7F91E009F490E08091F203BF +:105AF00090FB80F98093F2030E94C0288091F2030A +:105B000086950C94D2052091F203922F96958927C1 +:105B1000982F990F822F8170892B8093F2038E7FAB +:105B200091E009F490E08091F20390FB80F980937A +:105B3000F2030E94C0288091F20386950C94D2054E +:105B40005058BB27AA270ED0D1C1C2D130F0C7D13F +:105B500020F031F49F3F11F41EF4B7C10EF4E0952C +:105B6000E7FB9FC1E92FD3D180F3BA176207730710 +:105B70008407950718F071F49EF5EBC10EF4E095DB +:105B80000B2EBA2FA02D0B01B90190010C01CA01F7 +:105B9000A0011124FF27591B99F0593F50F4503EA2 +:105BA00068F11A16F040A22F232F342F4427585F94 +:105BB000F3CF469537952795A795F0405395C9F7AC +:105BC0007EF41F16BA0B620B730B840BBAF0915064 +:105BD000A1F0FF0FBB1F661F771F881FC2F70EC003 +:105BE000BA0F621F731F841F48F4879577956795D6 +:105BF000B795F7959E3F08F0B3CF9395880F08F0BF +:105C00009927EE0F97958795089527D108F481E09D +:105C100008950CD06BC163D140F05AD130F021F41B +:105C20005F3F19F03EC1511195C14FC170D198F33A +:105C30009923C9F35523B1F3951B550BBB27AA270D +:105C400062177307840738F09F5F5F4F220F331F7F +:105C5000441FAA1FA9F333D00E2E3AF0E0E830D04B +:105C600091505040E695001CCAF729D0FE2F27D04E +:105C7000660F771F881FBB1F261737074807AB071C +:105C8000B0E809F0BB0B802DBF01FF2793585F4F91 +:105C90002AF09E3F510568F004C15CC15F3FECF300 +:105CA000983EDCF3869577956795B795F7959F5F56 +:105CB000C9F7880F911D9695879597F90895E1E0AA +:105CC000660F771F881FBB1F621773078407BA0709 +:105CD00020F0621B730B840BBA0BEE1F88F7E09564 +:105CE000089504D06894B11135C1089518D188F091 +:105CF0009F5790F0B92F9927B751A0F0D1F0660FB8 +:105D0000771F881F991F1AF0BA95C9F712C0B130D2 +:105D100081F01FD1B1E008951CC1672F782F88272B +:105D2000B85F39F0B93FCCF3869577956795B39511 +:105D3000D9F73EF490958095709561957F4F8F4F80 +:105D40009F4F0895E89409C097FB3EF49095809585 +:105D5000709561957F4F8F4F9F4F9923A9F0F92F31 +:105D600096E9BB279395F695879577956795B795AF +:105D7000F111F8CFFAF4BB0F11F460FF1BC06F5F95 +:105D80007F4F8F4F9F4F16C0882311F096E911C0A7 +:105D9000772321F09EE8872F762F05C0662371F0C8 +:105DA00096E8862F70E060E02AF09A95660F771FDC +:105DB000881FDAF7880F9695879597F9089588D008 +:105DC00018F011F08CD038F480C0C4C0E92F9FD0F7 +:105DD000B0F35523C9F3E7FB6217730784079507F0 +:105DE000A8F199F3E92FFF2788232AF03197660F4E +:105DF000771F881FDAF7952F5527442332F09150EB +:105E00005040220F331F441FD2F7BB27E91BF50B6D +:105E1000621B730B840BB109C1F222F4620F731F72 +:105E2000841FB11D31972AF0660F771F881FBB1F93 +:105E3000EFCF915050405AF041F0882332F0660F76 +:105E4000771F881F91505040C1F7939530C08695B9 +:105E5000779567959F5FD9F7F8CF990F0008550F91 +:105E6000AA0BE0E8FEEF16161706E807F907C0F0E0 +:105E700012161306E407F50798F0621B730B840BE8 +:105E8000950B39F40A2661F0232B242B252B21F4C2 +:105E900008950A2609F4A140A6958FEF811D811D62 +:105EA000089597F99F6780E870E060E008959F3F4C +:105EB00031F0915020F4879577956795B795880FC5 +:105EC000911D9695879597F908959FEF80EC089519 +:105ED00000240A94161617061806090608950024C9 +:105EE0000A9412161306140605060895092E039443 +:105EF000000C11F4882352F0BB0F40F4BF2B11F4B7 +:105F000060FF04C06F5F7F4F8F4F9F4F089557FD15 +:105F10009058440F551F59F05F3F71F04795880F17 +:105F200097FB991F61F09F3F79F0879508951216AE +:105F300013061406551FF2CF4695F1DF08C016165A +:105F400017061806991FF1CF86957105610508940B +:105F50000895E894BB2766277727CB0197F9089522 +:105F60007CDF08F48FEF08950BD0C0CFB1DF28F0AD +:105F7000B6DF18F0952309F094CFA7CF1124EACF0C +:105F8000C6DFA0F3959FD1F3950F50E0551F629F98 +:105F9000F001729FBB27F00DB11D639FAA27F00D82 +:105FA000B11DAA1F649F6627B00DA11D661F829FA9 +:105FB0002227B00DA11D621F739FB00DA11D621F8E +:105FC000839FA00D611D221F749F3327A00D611DAB +:105FD000231F849F600D211D822F762F6A2F11248D +:105FE0009F5750408AF0E1F088234AF0EE0FFF1FE0 +:105FF000BB1F661F771F881F91505040A9F79E3F17 +:10600000510570F04ECFA6CF5F3FECF3983EDCF326 +:10601000869577956795B795F795E7959F5FC1F753 +:10602000FE2B880F911D9695879597F90895FA0193 +:10603000EE0FFF1F30962105310599F161157105AD +:1060400061F48038BFE39B0749F16894903881057B +:1060500061F08038BFEF9B0741F0992342F5FF3F85 +:10606000E1053105210511F1E8940894E795D9017E +:10607000AA2329F4AB2FBE2FF85FD0F310C0FF5F27 +:1060800070F4A695E0F7F73950F019F0FF3A38F4BC +:106090009F779F930CD00F9007FC905808953EF087 +:1060A00014CF60E070E080E89FE308954FE79F77AA +:1060B0005F934F933F932F939ED02F913F914F919A +:1060C0005F9152DF05C019F40EF0EBCE42CFFDCE4A +:1060D00026DFC8F39638C0F707F80F92E8942BE351 +:1060E0003AEA48EB5FE74EDF0F920F920F924DB7FF +:1060F0005EB70F92C0D0E8EFF0E016D04F915F91FD +:10610000EF91FF91E595EE1FFF1F49F0FE57E06804 +:106110004427EE0F441FFA95E1F74195550B32D015 +:106120000F9007FE26C00895DF93CF931F930F9320 +:10613000FF92EF92DF927B018C01689405C0DA2E0A +:10614000EF011EDFFE01E894A5912591359145915F +:106150005591AEF3EF0106DDFE019701A801DA9437 +:1061600079F7DF90EF90FF900F911F91CF91DF9122 +:1061700008959B01AC0160E070E080E89FE349CDA9 +:1061800090CE95CECCDEE8F39923D9F3940F511D30 +:10619000BBF39150504094F059F0882332F0660FD1 +:1061A000771F881F91505040C1F79E3F510544F71B +:1061B000880F911D9695879597F908955F3FACF0EC +:1061C000983E9CF0BB27869577956795B79508F420 +:1061D000B1609395C1F7BB0F58F711F460FFE8CF9A +:1061E0006F5F7F4F8F4F9F4FE3CFB4CE0EF05FCEE8 +:1061F0006CCE689456CE93DEC8F39923D1F3C6F3E0 +:10620000DF93CF931F930F93FF92C92FDD2788232E +:106210002AF02197660F771F881FDAF720E030E019 +:1062200040E85FEB9FE3883920F0803E30F0219614 +:106230008F7787DCE0E2F1E003C083DCEDE4F1E09E +:1062400073DF8B01BE01EC01FB2E6F577109759551 +:10625000771F880B990B78DD28E132E741E35FE394 +:106260008FDEAF2D9801AE01FF900F911F91CF915E +:10627000DF9178DC3BCEFA01DC01AA0FBB1F9B014A +:10628000AC01BF5728F422273327442750781FC07A +:10629000B75188F4AB2F0024469537952795011CFC +:1062A000A395D2F3002069F0220F331F441FB3954A +:1062B000DAF30DD045CC61307105A0E88A07B94604 +:1062C00030F49B01AC0166277727882790783096B9 +:1062D00021F020833183428353830895AA1BBB1B83 +:1062E00051E107C0AA1FBB1FA617B70710F0A61BD6 +:1062F000B70B881F991F5A95A9F780959095BC01F7 +:10630000CD01089597FB072E16F4009407D077FD72 +:1063100009D00E946E3107FC05D03EF4909581951E +:106320009F4F0895709561957F4F0895EE0FFF1F61 +:106330000590F491E02D0994F999FECF92BD81BDAD +:10634000F89A992780B50895A8E1B0E042E050E0BE +:106350000C94C431262FF999FECF92BD81BDF89AD5 +:10636000019700B4021639F01FBA20BD0FB6F89499 +:10637000FA9AF99A0FBE08950196272F0E94AB3121 +:106380000C94AA31DC01CB01FC01F999FECF06C0C7 +:10639000F2BDE1BDF89A319600B40D9241505040E3 +:0863A000B8F70895F894FFCF4F +:1063A8000C52D02445000000410000DC44000000ED +:1063B8004152D0A4440000404100005C4400000069 +:1063C8004148F17644000000415C978A440000008F +:1063D800411FD592440000004152D0A4440000005F +:1063E800415CFFB844000000410AA7CF4400000008 +:1063F800410000DC44000000410AA7CF440000002F +:10640800410000DC44000000410000000000008062 +:106418004052D024450000404100000000000080A8 +:10642800400AA74F45000040410AA7CF440000009A +:10643800410000DC44000000410000000000008032 +:106448004052D024450000004100000000000080B8 +:10645800405CFF384500000041000000000000805B +:106468004052D02445000000410AA7CF4400000054 +:10647800410000DC440000004100000000000080F2 +:106488004052D024450000804110F176440000A01D +:106498004112F1F6440000004141909B440000A0E5 +:1064A8004112F1F64400000041050000003F0000E1 +:1064B800C8427B140915E614B2147E1401BC0328E3 +:1064C80008140A321E000002000400050007000933 +:1064D800000B000C000E001000110013001500172F +:1064E8000018001A001C001D001F002100230024B2 +:1064F800002600280029002B002D002F0030003234 +:106508000034003500370039003B004200450025C3 +:106518000026004300610060002000370064006529 +:1065280000660067004400460024004700314980A7 +:106538003F5D8B803FF8BF803FCAE1803F73ED80AD +:106548003FCAE1803FF8BF803F5D8B803F31498083 +:106558003F0000803FF16D7F3F75EA7E3F4C827EB1 +:106568003F833F7E3F84287E3F833F7E3F4C827E31 +:106578003F75EA7E3FF16D7F3F0000803F3F4D361B +:10658800B90A6C0A360AE209FB09140A0102030473 +:06659800050607080900DA :00000001FF diff --git a/keyboard/preonic/preonic_pcb_r1_w_bootloader.hex b/keyboard/preonic/preonic_pcb_r1_w_bootloader.hex index a29f23c00e..c42365c436 100644 --- a/keyboard/preonic/preonic_pcb_r1_w_bootloader.hex +++ b/keyboard/preonic/preonic_pcb_r1_w_bootloader.hex @@ -250,79 +250,79 @@ :107FE4000C94ED3E0C94113F0C94193F0C94213FDA :0C7FF4000C94F23E0C94033F0C94293FC7 :040000030000700089 -:100000000C94A0050C94E4050C94E4050C94E40510 -:100010000C94E4050C94E4050C94E4050C94E405BC -:100020000C94E4050C94E4050C94B6180C9488190F -:100030000C94A1270C94E4050C94E4050C94E405BD -:100040000C94E4050C94E4050C94E4050C94E4058C -:100050000C94E4050C9409280C94E4050C94E40534 -:100060000C94E4050C94E4050C94E4050C94E4056C -:100070000C94E4050C94E4050C94E4050C94E4055C -:100080000C94090F0C94E4050C94E4050C94E4051D -:100090000C94E4050C94E4050C94E4050C94E4053C -:1000A0000C94E4050C94E4050C94E4053F064F061B -:1000B000610671067706860692069706A406AC06C8 -:1000C000BC06C106C813C813C813C813C813C81385 -:1000D000C813C813C813C813DF13DF13DF13DF13EC -:1000E000DF13DF13DF13DF13DF13DF13C813C813AE -:1000F000C813C813C813DF13DF13DF13DF13DF13B5 -:10010000C813C813C813DF13DF13DF13F519171A49 -:10011000051B171A051B5C1A7F1A051BD41AE71A50 -:10012000EA1DEA1D271E271E811EBF1E372137210B -:10013000D81E3721D91FD91F9C20B3203721222157 -:1001400007634236B79BD8A71A39685618AEBAABC0 -:10015000558C1D3CB7CC5763BD6DEDFD753EF61754 -:100160007231BF000000803F08000000BE922449A9 -:10017000123EABAAAA2ABECDCCCC4C3E00000080D9 -:10018000BEABAAAAAA3E00000000BF000000803F4C -:100190000000000000084178D3BB4387D1133D190C -:1001A0000E3CC3BD4282AD2B3E68EC8276BED98F39 -:1001B000E1A93E4C80EFFFBE01C4FF7F3F0000007D -:1001C000000035001E001F00200021002200230037 -:1001D00024002500260027002A002B0014001A0006 -:1001E0000800150017001C0018000C001200130076 -:1001F0004C00290004001600070009000A000B004B -:100200000D000E000F0033003400E1001D001B0044 -:1002100006001900050011001000360037003800F4 -:1002200028000530E000E200E30003302C002C0041 -:1002300004305000510052004F0035001E001F00D6 -:100240002000210022002300240025002600270092 -:100250002A002B0014001A00090013000A000D00E8 -:100260000F0018001C0033004C002900040015008A -:100270001600170007000B00110008000C00120008 -:100280003400E1001D001B000600190005000E00EF -:10029000100036003700380028000530E000E2008A -:1002A000E30003302C002C000430500051005200B9 -:1002B0004F0035001E001F002000210022002300F7 -:1002C00024002500260027002A002B0034003600D9 -:1002D000370013001C0009000A00060015000F007B -:1002E0004C00290004001200080018000C00070050 -:1002F0000B001700110016003800E1003300140055 -:100300000D000E001B00050010001A0019001D0052 -:1003100028000530E000E200E30003302C002C0050 -:1003200004305000510052004F0035021E021F02DF -:100330002002210222022302240225022602270291 -:100340002A0035021E021F0220022102220223027D -:1003500024022502260227024C004C003A003B00F2 -:100360003C003D003E003F002D022E022F023002D5 -:1003700031020100400041004200430044004500BA -:100380000100010001000100010001000100010065 -:1003900001000100010001000100AB00AA00A9005A -:1003A000AE0035001E001F002000210022002300A7 -:1003B00024002500260027002A0035001E001F000B -:1003C0002000210022002300240025002600270011 -:1003D0004C004C003A003B003C003D003E003F001A -:1003E0002D002E002F0030003100010040004100A0 -:1003F00042004300440045000100010001000100EB -:1004000001000100010001000100010001000100E4 -:100410000100AB00AA00A900AE000000000000002F +:100000000C947C050C94C0050C94C0050C94C005A0 +:100010000C94C0050C94C0050C94C0050C94C0054C +:100020000C94C0050C94C0050C94C7180C94991935 +:100030000C94B2270C94C0050C94C0050C94C00518 +:100040000C94C0050C94C0050C94C0050C94C0051C +:100050000C94C0050C941A280C94C0050C94C0058F +:100060000C94C0050C94C0050C94C0050C94C005FC +:100070000C94C0050C94C0050C94C0050C94C005EC +:100080000C94E50E0C94C0050C94C0050C94C005AE +:100090000C94C0050C94C0050C94C0050C94C005CC +:1000A0000C94C0050C94C0050C94C0051B062B06CF +:1000B0003D064D06530662066E06730680068806E8 +:1000C00098069D06061A281A161B281A161B6D1A62 +:1000D000901A161BE51AF81AFB1DFB1D381E381E58 +:1000E000921ED01E48214821E91E4821EA1FEA1F1E +:1000F000AD20C4204821332107634236B79BD8A7DF +:100100001A39685618AEBAAB558C1D3CB7CC57633C +:10011000BD6DEDFD753EF6177231BF000000803FEA +:1001200008000000BE922449123EABAAAA2ABECD06 +:10013000CCCC4C3E00000080BEABAAAAAA3E000078 +:100140000000BF000000803F000000000008417870 +:10015000D3BB4387D1133D190E3CC3BD4282AD2BA7 +:100160003E68EC8276BED98FE1A93E4C80EFFFBE9F +:1001700001C4FF7F3F000000000035001E001F008B +:100180002000210022002300240025002600270053 +:100190002A002B0014001A000800150017001C008C +:1001A00018000C00120013004C0029000400160077 +:1001B000070009000A000B000D000E000F003300BD +:1001C0003400E1001D001B000600190005001100AD +:1001D000100036003700380028000530E000E2004B +:1001E000E30003302C002C0004305000510052007A +:1001F0004F0035001E001F002000210022002300B8 +:1002000024002500260027002A002B0014001A00D5 +:10021000090013000A000D000F0018001C00330035 +:100220004C002900040015001600170007000B0001 +:10023000110008000C0012003400E1001D001B003A +:100240000600190005000E001000360037003800C7 +:1002500028000530E000E200E30003302C002C0011 +:1002600004305000510052004F0035001E001F00A6 +:100270002000210022002300240025002600270062 +:100280002A002B0034003600370013001C00090040 +:100290000A00060015000F004C002900040012009F +:1002A000080018000C0007000B00170011001600D2 +:1002B0003800E100330014000D000E001B000500A3 +:1002C00010001A0019001D0028000530E000E200AF +:1002D000E30003302C002C00043050005100520089 +:1002E0004F0035021E021F022002210222022302B9 +:1002F00024022502260227022A0035021E021F02BE +:1003000020022102220223022402250226022702C1 +:100310004C004C003A003B003C003D003E003F00DA +:100320002D022E022F023002310201004000410056 +:1003300042004300440045000100010001000100AB +:1003400001000100010001000100010001000100A5 +:100350000100AB00AA00A900AE0035001E001F007E +:100360002000210022002300240025002600270071 +:100370002A0035001E001F0020002100220023005B +:1003800024002500260027004C004C003A003B00CA +:100390003C003D003E003F002D002E002F003000AD +:1003A000310001004000410042004300440045008C +:1003B0000100010001000100010001000100010035 +:1003C00001000100010001000100AB00AA00A9002A +:1003D000AE0000000000000000000000000000006F +:1003E000000000000000000000000000000000000D +:1003F00000000000000000000000000000000000FD +:1004000000000000000000000000000000000000EC +:1004100000000000000000000000000000000000DC :1004200000000000000000000000000000000000CC -:1004300000000000000000000000000000000000BC -:1004400000000000000000000000000000000000AC +:100430000000000000000000000003300000000089 +:100440000430000000000000000000000000000078 :10045000000000000000000000000000000000009C :10046000000000000000000000000000000000008C :10047000000000000000000000000000000000007C -:100480000000033000000000043000000000000005 +:10048000000000000000000000000000000000006C :10049000000000000000000000000000000000005C :1004A000000000000000000000000000000000004C :1004B000000000000000000000000000000000003C @@ -393,1471 +393,1488 @@ :1008C0000000000000000000000000000000000028 :1008D0000000000000000000000000000000000018 :1008E0000000000000000000000000000000000008 -:1008F00000000000000000000000000000000000F8 -:1009000000000000000000000000000000000000E7 -:1009100000000000000000000000000000000000D7 -:1009200000000000000000000000000000000000C7 -:1009300000000000000000000000000000000000B7 -:1009400000003A003B003C003D003E003F004000FC -:1009500041004200430044004500010000500100F6 +:1008F000000000000000000000003A003B003C0047 +:100900003D003E003F0040004100420043004400E3 +:10091000450001000050010001000100010001003C +:1009200001000100010001004C0001000100010074 +:1009300007300630135012500030013002300100F1 +:10094000010001000B300A300930083001000100BD +:10095000010001000100010001000100010001008F :10096000010001000100010001000100010001007F -:100970004C000100010001000730063013501250F6 -:100980000030013002300100010001000B300A305C -:1009900009300830010001000100010001000100E0 -:1009A000010001000100010001000100010001003F -:1009B000010001000100010001002A035400680049 -:1009C000650020005000720065006F006E00690035 -:1009D000630020004B006500790062006F00610039 -:1009E0007200640000002C034F0072007400680065 -:1009F0006F006C0069006E006500610072002000ED -:100A00004B006500790062006F00610072006400B5 -:100A1000730000000403090409025400030100A04C -:100A2000FA0904000001030101000921110100017C -:100A3000223F000705810308000A090401000103A1 -:100A4000010200092111010001224D000705820366 -:100A500008000A0904020001030000000921110135 -:100A600000012236000705830308000A1201100165 -:100A700000000008EDFE61600100010200010501B7 -:100A80000980A101850216010026B7001A01002A7B -:100A9000B700751095018100C0050C0901A1018501 -:100AA00003160100269C021A01002A9C027510956B -:100AB000018100C005010902A1010901A100050988 -:100AC000190129051500250195057501810295017A -:100AD000750381010501093009311581257F9502D2 -:100AE0007508810609381581257F950175088106ED -:100AF000050C0A38021581257F950175088106C00D -:100B0000C005010906A101050719E029E71500251F -:100B10000195087501810295017508810105081983 -:100B2000012905950575019102950175039101054E -:100B300007190029FF150025FF950675088100C0DB -:100B400011241FBECFEFDAE0DEBFCDBF04B603FE37 -:100B500024C08091A3039091A403A091A503B09118 -:100B6000A6038730904BA740B04BB9F41092A30373 -:100B70001092A4031092A5031092A60314BE84B78A -:100B8000877F84BF88E10FB6F8948093600010924D -:100B900060000FBEE0E0F8E3099512E0A0E0B1E0EC -:100BA000EAEEF2E602C005900D92A83AB107D9F735 -:100BB00013E0A8EAB2E001C01D92A33AB107E1F741 -:100BC0000E94FC150C9473310C940000279A2F9806 -:100BD0008FEF9FEF90938700809386008AE0809349 -:100BE000800089E1809381000C94F82C282F8111DA -:100BF0000BC080918000877F8093800010928D00D1 -:100C000010928C002F9808952F9880918000886012 -:100C100080938000233019F48FEF9FEF0FC083E0A3 -:100C200090E0821B9109880F991F2FEF3FEFA901D8 -:100C300002C0569547958A95E2F7CA0190938D00B8 -:100C400080938C000895CF93DF93EC010E949D2840 -:100C5000BE0180E090E0DF91CF910C9417250F93B7 -:100C60001F93462F50E04C30510508F098C0DC012E -:100C7000FA01EA5AFF4F12968C910C94373188236F -:100C800009F48DC000E010E0980140E064E070E0FD -:100C90008BEC91E00E94871281E090E00FC08823E6 -:100CA00009F47DC000E010E0980140E066E070E0EB -:100CB0008BE591E00E94871282E090E00E9423067B -:100CC0006EC0882309F46BC000E010E0980140E09A -:100CD00068E070E08BE891E00E94871284E090E089 -:100CE000EDCF882311F083E005C083E00CC088239A -:100CF00049F084E00E94942540E164E083E00E9492 -:100D0000ED0A4DC084E00E94B525F6CF882331F06E -:100D100085EE0E947E1C0E944F2D41C085EE0E94F0 -:100D2000461D3DC08823D9F10E941B0E38C0882380 -:100D3000B1F10E94140E00E010E0980140E064E080 -:100D400070E08BEE91E029C0882349F185E00E9494 -:100D5000B5250E943C0E23C0882309F100E010E075 -:100D6000980140E068E070E08BE191E00E9487121A -:100D700085E00E94942513C0882389F00E941A13ED -:100D800004C0882361F00E94251300E010E0980160 -:100D900040E068E070E08BE191E00E94871280E023 -:100DA00090E01F910F9108950F931F932FEF89EFFC -:100DB00090E0215080409040E1F700C0000000E04A -:100DC00010E0980140E064E070E08BEE91E00E945A -:100DD00087121F910F910895CF92DF92EF92FF92A9 -:100DE0000F931F93CF93DF93CDB7DEB7CC58D109C4 -:100DF0000FB6F894DEBF0FBECDBF2091630325FF71 -:100E0000C5C08C01FC01928180910201992309F4F3 -:100E100060C096E4E7E2F2E0DE01A95BBF4F01901B -:100E20000D929A95E1F7F8019081E0910001F0911F -:100E30000101E90FF11DEE0FFF1F27E430E02C0F39 -:100E40003D1FE20FF31F60817181680F711D8827BC -:100E500077FD8095982F0E94932E20E030E040E4AB -:100E600051E40E94F82D6B017C01F801218185E09D -:100E700090E0821B9109BC01882777FD8095982F0F -:100E80000E94932E9B01AC01C701B6010E94902DD8 -:100E90009B01AC0160E070E080E090E40E94AA2F2A -:100EA00020E030E04CE551E40E94472F4FE050E055 -:100EB000C457DF4F0FB6F894DEBF0FBECDBFDF9132 -:100EC000CF911F910F91FF90EF90DF90CF900C94F6 -:100ED000271296E4E7E2F2E0DE01119601900D920E -:100EE0009A95E1F7F8019081E0910001F0910101FC -:100EF000E90FF11DEE0FFF1F21E030E02C0F3D1F29 -:100F0000E20FF31F60817181680F711D882777FDE3 -:100F10008095982F0E94932E20E030E040E451E429 -:100F20000E94F82D6B017C01F801218185E090E0A1 -:100F3000821B9109BC01882777FD8095982F0E941C -:100F4000932E9B01AC01C701B6010E94902D9B011D -:100F5000AC0160E070E080E090E40E94AA2F20E005 -:100F600030E04CE551E40E94472FC457DF4F0FB6E5 -:100F7000F894DEBF0FBECDBFDF91CF911F910F91CF -:100F8000FF90EF90DF90CF900C946F0EC457DF4F1F -:100F90000FB6F894DEBF0FBECDBFDF91CF911F918A -:100FA0000F91FF90EF90DF90CF9008950F931F93D4 -:100FB00000E010E0980140E063E070E083E091E041 -:100FC0000E9487122FEF82E597E0215080409040E9 -:100FD000E1F700C000001F910F91089508950E944D -:100FE000E6056E9A769A0C94D4060C94EE070C944F -:100FF000EC060895880F991FFC01EE5BFF4F859169 -:1010000094910895880F991FFC01EE53FE4F85912E -:10101000949108950F931F93CF93DF93EC01811563 -:1010200020E49207A0F5C11580E3D80708F0E1C0DD -:10103000C83ED105D8F4C03ED10508F0EEC1C83A8B -:10104000D10578F4C53AD10508F074C0C130D10596 -:1010500009F46DC008F4DEC1C430D10508F0DDC16B -:10106000D9C1CB3BD10508F470C0D4C1C11590E201 -:10107000D90708F0B9C0C11521E0D20708F0CDC1E9 -:10108000C03FD10508F4C6C18E01106506C2C1304B -:1010900080E5D80709F4BDC068F5C13120E4D20766 -:1010A00009F4AEC050F4C03190E4D90708F0A5C0EF -:1010B000CF70DD278E01146DF0C1C33120E4D2075B -:1010C00009F4A4C008F49FC0C115D04509F0A2C11D -:1010D0000E945B210E943C0E0E94D6079FEF24E3F2 -:1010E0008CE0915020408040E1F700C000000E9459 -:1010F0002E28D3C1C11520E6D20730F4C11581E5F1 -:10110000D80708F48CC02DC1C11590E7D90708F4A1 -:1011100081C1C11520E8D20708F478C1C11580E962 -:10112000D80708F077C1DF708E01106AB6C101E000 -:1011300010E0B3C1C53AD10509F471C1C63AD10571 -:1011400009F070C102E810E4A8C1C83AD10509F459 -:101150006CC1C93AD10509F46BC1CA3AD10509F489 -:101160006AC1CB3AD10509F469C1CC3AD10509F479 -:1011700068C1CD3AD10509F467C1C03BD10509F476 -:1011800066C1CE3AD10509F465C1CF3AD10509F45B -:1011900064C1C13BD10509F463C1C23BD10509F467 -:1011A00062C1C33BD10509F461C1C43BD10509F457 -:1011B00060C1C53BD10509F45FC1C63BD10509F447 -:1011C0005EC1C73BD10509F45DC1C83BD10509F437 -:1011D0005CC1C93BD10509F45BC1CA3BD10509F427 -:1011E0005AC100E014E459C1CE019F700E94020868 -:1011F00055C1DD278E01106C50C100E011ED4DC1CD -:1012000000E010ED4AC100E012ED47C100E013ED2F -:1012100044C1809177038160809377033EC10E942F -:101220008A28811102C00E9466280E94A22890E0AC -:101230009093A2038093A103C23090E5D90721F4D3 -:101240008091A103816086C0C43020E5D20721F4DB -:101250008091A10382607EC0C63080E5D80721F46A -:101260008091A103846076C0C83090E5D90719F455 -:101270008091A10327C0CA3020E5D20721F48091D4 -:10128000A103806167C0CC3080E5D80721F480914C -:10129000A10380625FC0CE3090E5D90721F4809130 -:1012A000A103806457C0C03120E5D20721F48091AA -:1012B000A10380684FC0C23180E5D80729F480912E -:1012C000A1038460886046C0C33090E5D90721F44B -:1012D0008091A1038E7F3EC0C53020E5D20721F466 -:1012E0008091A1038D7F36C0C73080E5D80721F4F7 -:1012F0008091A1038B7F2EC0C93090E5D90719F4E6 -:101300008091A10326C0CB3020E5D20721F4809143 -:10131000A1038F7E1FC0CD3080E5D80721F48091D6 -:10132000A1038F7D17C0CF3090E5D90721F48091BC -:10133000A1038F7B0FC0C13120E5D20721F480913A -:10134000A1038F7707C0C331D04531F48091A10349 -:101350008B7F877F8093A1038091A1030E94A628A1 -:101360009CC08D2F99278F70992781309105D9F4D2 -:101370009E012370332702C0880F991F2A95E2F738 -:101380009C688E0144E0000F111F4A95E1F7002789 -:101390001370802B912B53E0CC0FDD1F5A95E1F792 -:1013A000C076DD272FC08230910531F4DC2FCC27A9 -:1013B0008E01016F106A71C08330910569F4CE010E -:1013C0008370992701E010E002C0000F111F8A9579 -:1013D000E2F7C8019C680FC0049709F05EC0CE0117 -:1013E0008370992701E010E002C0000F111F8A9559 -:1013F000E2F7C8019A6823E0CC0FDD1F2A95E1F7D8 -:10140000C07ED7708C010C2B1D2B47C0DF708E0166 -:10141000106243C000E010E040C08E013EC001E811 -:1014200010E43BC003E810E438C002EE14E435C019 -:1014300009EE14E432C00AEE14E42FC005EB14E404 -:101440002CC006EB14E429C007EB14E426C00CEC16 -:1014500014E423C00DEC14E420C003E815E41DC01F -:101460000AE815E41AC002E915E417C004E915E416 -:1014700014C001E216E411C003E216E40EC004E257 -:1014800016E40BC005E216E408C006E216E405C047 -:1014900007E216E402C00AE216E4C801DF91CF9128 -:1014A0001F910F9108959CE0799FF00111249CE316 -:1014B000899FE00DF11D1124E60FF11DEE0FFF1FB6 -:1014C000EE53FE4F85919491803E9105E0F4803C6F -:1014D000910558F58133910509F46FC048F48932BC -:1014E000910509F463C08A32910509F46DC072C098 -:1014F00089339105E9F082389105D1F08533910562 -:1015000009F44DC067C0833E910581F138F4803EF7 -:101510009105B9F0823E9105D9F05CC0863E9105F7 -:1015200061F1873E9105A1F155C00E94FA07089527 -:101530002091A10320FD02C021FF4CC080EE90E06D -:1015400049C08091A10380FFF9CF89E390E042C0B8 -:101550008091A10382FF0EC08091A10384FF03C08C -:1015600080E090E037C083EE90E034C08091A1032A -:1015700082FFF2CF82EE90E02DC08091A10383FF25 -:101580000BC08091A10384FDEBCF87EE90E022C0D9 -:101590008091A10383FFF5CF86EE90E01BC0809180 -:1015A000A10385FF07C089E290E014C08091A103E8 -:1015B00085FFF9CF85E390E00DC08091A10386FF00 -:1015C00007C08AE290E006C08091A10386FFF9CFB0 -:1015D00081E390E00E940A080895CF92DF92EF9293 -:1015E000FF920F931F9301E010E020E030E06801CC -:1015F000790104C0CC0CDD1CEE1CFF1C8A95D2F7CF -:1016000004C0000F111F221F331F6A95D2F70C2947 -:101610001D292E293F29C0906303D0906403E090D8 -:101620006503F0906603C022D122E222F322842FC8 -:10163000C016D106E206F30641F41F910F91FF9008 -:10164000EF90DF90CF900C9494251F910F91FF9015 -:10165000EF90DF90CF900C94B52508950C942D0B4E -:101660005F926F927F928F929F92AF92BF92CF9232 -:10167000DF92EF92FF920F931F93CF93DF93CDB73B -:10168000DEB72A970FB6F894DEBF0FBECDBFCE01EE -:1016900001966C014E019BE0890E911C20E030E028 -:1016A00040E050E060E070E000E010E0E12CF12C60 -:1016B0006C2C5D2C8AE0782EAA24A394B12CEDE644 -:1016C000F2E0A62DB52D872D01900D928A95E1F7B8 -:1016D000F601819191916F01FC01E07FFF27E032DB -:1016E000F10559F48F709927F50102C0EE0FFF1F25 -:1016F0008A95E2F7EE2AFF2A37C0E033F10559F464 -:101700008F709927F50102C0EE0FFF1F8A95E2F74F -:101710000E2B1F2B29C0E034F10559F48F70992747 -:10172000F50102C0EE0FFF1F8A95E2F76E2B7F2BAB -:101730001BC0E035F10559F48F709927F50102C0FF -:10174000EE0FFF1F8A95E2F74E2B5F2B0DC0E036A0 -:10175000F10551F48F709927F50102C0EE0FFF1FBC -:101760008A95E2F72E2B3F2BC814D90409F0A7CF96 -:1017700084B19E2D9095892384B985B1E82AE5B876 -:1017800087B1902F9095892387B988B1082B08B924 -:101790008AB1962F909589238AB98BB1682B6BB942 -:1017A0008DB1942F909589238DB98EB1482B4EB968 -:1017B00080B3922F9095892380BB81B3282B21BBC6 -:1017C0002A960FB6F894DEBF0FBECDBFDF91CF9142 -:1017D0001F910F91FF90EF90DF90CF90BF90AF904F -:1017E0009F908F907F906F905F9008955F926F921F -:1017F0007F928F929F92AF92BF92CF92DF92EF92A1 -:10180000FF920F931F93CF93DF93CDB7DEB7689707 -:101810000FB6F894DEBF0FBECDBF85B7806885BF19 -:1018200085B7806885BF0E94300BCE0101966C01A0 -:101830004E0199E1890E911C20E030E040E050E03B -:1018400060E070E000E010E0E12CF12C6C2C5D2CED -:1018500088E1782EAA24A394B12CE7E7F2E0A62D24 -:10186000B52D872D01900D928A95E1F7F6018191B2 -:1018700091916F01FC01E07FFF27E032F10559F4FF -:101880008F709927F50102C0EE0FFF1F8A95E2F7CE -:10189000EE2AFF2A37C0E033F10559F48F709927FB -:1018A000F50102C0EE0FFF1F8A95E2F70E2B1F2BEA -:1018B00029C0E034F10559F48F709927F50102C071 -:1018C000EE0FFF1F8A95E2F76E2B7F2B1BC0E035D2 -:1018D000F10559F48F709927F50102C0EE0FFF1F33 -:1018E0008A95E2F74E2B5F2B0DC0E036F10551F4DF -:1018F0008F709927F50102C0EE0FFF1F8A95E2F75E -:101900002E2B3F2BC814D90409F0A7CF84B19E2DEC -:101910009095892384B985B1E82AE5B887B1902FDD -:101920009095892387B988B1082B08B98AB1962F79 -:10193000909589238AB98BB1682B6BB98DB1942F9F -:10194000909589238DB98EB1482B4EB980B3922FD3 -:101950009095892380BB81B3282B21BBE2EBF2E079 -:10196000A8EAB2E0119211921D921D9282E0EC3B26 -:10197000F807C1F768960FB6F894DEBF0FBECDBF6B -:10198000DF91CF911F910F91FF90EF90DF90CF905B -:10199000BF90AF909F908F907F906F905F900C94CE -:1019A000EF075F926F927F928F929F92AF92BF925A -:1019B000CF92DF92EF92FF920F931F93CF93DF931B -:1019C000CDB7DEB7A2970FB6F894DEBF0FBECDBF7E -:1019D0006E0149E1C40ED11C88EAA82E82E0B82E1F -:1019E00075019AE0592E460101E010E028E1622ECF -:1019F00035E0732EEDE6F2E0D401852D01900D92D5 -:101A00008A95E1F7D6018D919D916D019C01207F12 -:101A100033272032310591F424B18F709927F801D2 -:101A200002C0EE0FFF1F8A95E2F7CF01922F982B8D -:101A300094B995B18095892385B953C02033310578 -:101A400091F427B18F709927A80102C0440F551F48 -:101A50008A95E2F7CA01922F982B97B998B1809591 -:101A6000892388B93EC02034310591F42AB18F70A2 -:101A70009927D80102C0AA0FBB1F8A95E2F7CD01B2 -:101A8000922F982B9AB99BB1809589238BB929C045 -:101A90002035310591F42DB18F709927F80102C0DE -:101AA000EE0FFF1F8A95E2F7CF01922F982B9DB979 -:101AB0009EB1809589238EB914C02036310589F4F2 -:101AC00020B38F709927A80102C0440F551F8A9533 -:101AD000E2F7CA01922F982B90BB91B3809589238E -:101AE00081BB50EA5A95F1F7BE016F5F7F4F20E04E -:101AF00030E040E050E0E7E7F2E0DE011196862DAD -:101B000001900D928A95E1F7DB018D919D91BD01C8 -:101B1000FC01E07FFF27E032F10511F4E3B113C0CF -:101B2000E033F10511F4E6B10EC0E034F10511F433 -:101B3000E9B109C0E035F10511F4ECB104C0E036BB -:101B4000F105B9F4EFB1F0E08F70992702C0F59577 -:101B5000E7958A95E2F7E0FD08C0C801042E02C0AF -:101B6000880F991F0A94E2F702C080E090E0282BCA -:101B7000392B4F5F5F4F4C30510509F0BCCFF70157 -:101B8000808191818217930721F0318320837092A5 -:101B90000B020E94300BF2E0EF0EF11C42EBE41658 -:101BA00042E0F40609F026CF80910B028823C9F0A9 -:101BB000815080930B02882339F08FE99FE00197D1 -:101BC000F1F700C000000DC0E2EBF2E0D5018D910D -:101BD0009D915D0181939193B2EBAB16B2E0BB0690 -:101BE000A9F70E94F50781E0A2960FB6F894DEBF30 -:101BF0000FBECDBFDF91CF911F910F91FF90EF905E -:101C0000DF90CF90BF90AF909F908F907F906F901C -:101C10005F900895E82FF0E0EE0FFF1FEE54FD4FA8 -:101C2000808191810895089580918C0381608093D3 -:101C30008C030C94B82880918C038E7F80938C0346 -:101C40000C94B8280E948A28811102C00E9466283C -:101C50000E94B42880938C033E9A809171008D7FFE -:101C60008093710082E0809390008AE180939100DC -:101C700081E08093BE0208958091BE02811102C06E -:101C80000E94220E10920E0310920D03809171009B -:101C90008D7F80937100809190008F77809390006A -:101CA0001092D0021092CF021092070310920803F4 -:101CB0001092090310920A03109206031092050372 -:101CC000E5EEF2E0A5EDB2E01192119211921192BF -:101CD0001D921D9283E0E530F807B1F70895CF9289 -:101CE000DF92EF92FF920F931F93CF93DF93209198 -:101CF000CF02222309F484C06B017C018091BE02D3 -:101D0000811102C00E94220E05E013E0C7E0D0E07E -:101D1000A7019601F80192918291729162918F01CF -:101D20000E94F42D811131C0FE01EE0FFF1FEE0F56 -:101D3000FF1FEB51FD4F1082118212821382DE01D0 -:101D4000AA0FBB1FAB52BD4F11961C921E92C730FB -:101D5000D105E9F0219644815581668177814083E0 -:101D600051836283738314821582168217821296BE -:101D70008D919C91139711969C938E9313961C9220 -:101D80001E92129734961296E2CF219708F6809110 -:101D90000D0390910E03019797FD05C090930E03DC -:101DA00080930D0304C010920E0310920D038091D6 -:101DB0000D0390910E0320910B0330910C03281713 -:101DC000390724F010920C0310920B03892BC1F4F5 -:101DD000809171008D7F80937100809190008F774A -:101DE0008093900010920703109208031092090349 -:101DF00010920A0310920603109205031092CF026C -:101E0000DF91CF911F910F91FF90EF90DF90CF90D6 -:101E100008951F920F920FB60F9211244F925F9266 -:101E20006F927F928F929F92AF92BF92CF92DF92EA -:101E3000EF92FF922F933F934F935F936F937F9314 -:101E40008F939F93AF93BF93CF93DF93EF93FF93C2 -:101E50008091CF02882309F49BC1C0910D03D091DA -:101E60000E031C161D060CF093C14090BF0250904B -:101E7000C0026090C1027090C20220E030E0A9016F -:101E8000C301B2010E94432F18160CF065C0C13087 -:101E9000D10509F452C080910B0390910C03BE014F -:101EA0000E9423317C0190930C0380930B0380905C -:101EB000D1029090D202A090D302B090D40220E040 -:101EC00030E040E85FE3C501B4010E94902D6093CB -:101ED000D1027093D2028093D3029093D402F7017F -:101EE000EE0FFF1FEE0FFF1FEB51FD4FA3019201FD -:101EF00060817181828193810E94F82D20E030E021 -:101F000040E05EE30E94472F9B01AC01C501B40194 -:101F10000E94432F18168CF4C7010196BE010E943F -:101F2000233190930C0380930B031092D1021092F3 -:101F3000D2021092D3021092D402E0910B03F091DE -:101F40000C03EE0FFF1FEE0FFF1FEB51FD4F6081E3 -:101F5000718182819381D0C0C0900703D090080323 -:101F6000E0900903F0900A0320E030E0A901C701E6 -:101F7000B6010E94F42D2197882309F4A2C0FE0126 -:101F8000EE0FFF1FEE0FFF1FEB51FD4F8080918082 -:101F9000A280B380A5019401C701B6010E94F42D6F -:101FA00087FF31C0A501940160E070E08CED93ECF7 -:101FB0000E94F82D20E030E040E451E40E94F82D2A -:101FC00020E030E040E05FE30E94472F9B01AC013E -:101FD00060E070E080E090E40E94AA2F9B01AC01D9 -:101FE000C501B4010E94472F9B01AC01C701B60196 -:101FF0000E94F42D87FF07C0A701960160E070E002 -:102000008CED93E439C0A5019401C701B6010E948B -:10201000432F18160CF055C0A501940160E070E044 -:102020008CED93E40E94F82D20E030E040E451E490 -:102030000E94F82D20E030E040E05FE30E94472F4F -:102040009B01AC0160E070E080E090E40E94AA2F68 -:102050009B01AC01C501B4010E94472F9B01AC015B -:10206000C701B6010E94432F18165CF5A70196011F -:1020700060E070E08CED93EC0E94F82D20E030E001 -:1020800040E451E40E94F82D20E030E040E05FE3BE -:102090000E94472F9B01AC0160E070E080E090E47B -:1020A0000E94AA2F9B01AC01C701B6010E94472FD5 -:1020B00060930703709308038093090390930A03C6 -:1020C00013C0FE01EE0FFF1FEE0FFF1FEB51FD4F80 -:1020D00080819181A281B38180930703909308034B -:1020E000A0930903B0930A0360910703709108035A -:1020F0008091090390910A032091BC023091BD02A6 -:102100002F3F4FEF340731F02F5F3F4F3093BD0229 -:102110002093BC020E9430136B017C0120E034E26A -:1021200044EF51E40E94F42D87FF08C086EFC82ECB -:1021300088E2D82E84EFE82E81E4F82E20E030E00B -:1021400040E051E4C701B6010E94472F9B01AC015A -:1021500060E074E284E79BE40E94F82D6B017C014F -:102160000E94602E709397006093960020910C025D -:1021700030910D0240910E0250910F02C701B6013D -:102180000E94472F0E94602E7093990060939800E0 -:102190008091D002882309F433C1C090CB02D09043 -:1021A000CC02E090CD02F090CE0220E030E0A90118 -:1021B000C701B6010E94432F1816D4F58091BC02C6 -:1021C0009091BD028F3F2FEF920729F001969093D7 -:1021D000BD028093BC02C701B6010E94301320E00B -:1021E00030E040E051E40E94472F9B01AC0160E0E9 -:1021F00074E284E79BE40E94F82D6B017C010E944D -:10220000602E709397006093960020910C0230919D -:102210000D0240910E0250910F02C701B6010E94BB -:10222000472F0E94602E709399006093980008C019 -:1022300010929700109296001092990010929800B8 -:102240006091C5027091C6026F5F7F4F7093C602A6 -:102250006093C502209196003091970080E090E055 -:10226000232BF1F0C0919600D09197000E94912EFF -:102270006B017C01BE0180E090E00E94912E9B01E9 -:10228000AC016091C7027091C8028091C90290911F -:10229000CA020E94F82D20E03FEF4FE757E410C03C -:1022A0000E94912E6B017C0120E030EE4FEF54E450 -:1022B0006091C7027091C8028091C9029091CA02D0 -:1022C0000E94472F9B01AC01C701B6010E94432F1A -:1022D00087FD96C08091C3028F5F8093C30290E018 -:1022E000209188033091890382179307A0F0809191 -:1022F0009303882319F01092C3020DC080917100DE -:102300008D7F80937100809190008F7780939000F3 -:102310001092D0027DC08091C402C091C30281118D -:1023200028C0C0908D03D0908E03E0908F03F09072 -:10233000900320E030E0A901C701B6010E94432FBD -:102340001816BCF481E08093C4021092CB02109264 -:10235000CC021092CD021092CE02C092C702D0924F -:10236000C802E092C902F092CA02C150C093C302EF -:1023700043C01092C4021092BD021092BC02E091C0 -:102380008A03F0918B0348E0C49FE00DF11D1124F6 -:1023900080819181A281B3818093CB029093CC0202 -:1023A000A093CD02B093CE0220E030E040E85EE39F -:1023B00064817581868197810E94472F6B017C0122 -:1023C00020E030E048EC52E460911002709111027C -:1023D00080911202909113020E94F82D9B01AC0192 -:1023E000C701B6010E94472F6093C7027093C802CD -:1023F0008093C9029093CA021092C6021092C5023D -:1024000080918C0380FD04C01092D0021092CF0204 -:10241000FF91EF91DF91CF91BF91AF919F918F91FC -:102420007F916F915F914F913F912F91FF90EF902E -:10243000DF90CF90BF90AF909F908F907F906F90E4 -:102440005F904F900F900FBE0F901F901895CF92F6 -:10245000DF92EF92FF92CF93DF936B017C01EA0151 -:102460008091BE02811102C00E94220E80918C03D5 -:1024700080FF46C080910D0390910E0308970CF0E9 -:102480003FC0809171008D7F809371008091D00258 -:1024900081110E943C0E81E08093CF021092BD0218 -:1024A0001092BC0220E030E0A901C701B6010E94F1 -:1024B000432F1816DCF480910D0390910E03FC015C -:1024C000EE0FFF1FEE0FFF1FEB51FD4FC082D182B9 -:1024D000E282F382FC01EE0FFF1FEB52FD4FD1832E -:1024E000C083019690930E0380930D038091710039 -:1024F000826080937100809190008068809390004A -:10250000DF91CF91FF90EF90DF90CF9008958F9261 -:102510009F92AF92BF92CF92DF92EF92FF920F9372 -:102520001F93CF93DF93EC017B01D42E4801590117 -:102530008091BE02811102C00E94220E80918C0304 -:1025400080FF6BC0809171008D7F809371008091BE -:10255000CF0281110E943C0E81E08093D002D09383 -:102560008B03C0938A03F0928903E0928803D09290 -:10257000930380928D0390928E03A0928F03B0926A -:1025800090031092D1021092D2021092D3021092B4 -:10259000D4021092C30288819981AA81BB81809361 -:1025A000CB029093CC02A093CD02B093CE0220E058 -:1025B00030E040E85EE36C817D818E819F810E94E6 -:1025C000472F6B017C0120E030E048EC52E4609141 -:1025D00010027091110280911202909113020E94D8 -:1025E000F82D9B01AC01C701B6010E94472F6093F3 -:1025F000C7027093C8028093C9029093CA021092D6 -:10260000C6021092C50280917100826080937100B1 -:1026100080919000806880939000DF91CF911F910E -:102620000F91FF90EF90DF90CF90BF90AF909F9071 -:102630008F90089580910F0390E0019665E070E01F -:102640000E94233180930F03089580910F0390E03F -:10265000019765E070E00E94233180930F03089595 -:102660008F929F92AF92BF92CF92DF92EF92FF92A2 -:10267000CF93DF936B017C01C091BC02D091BD026E -:10268000BE0180E090E00E94912E4B015C01A70109 -:10269000960160E070E08CE594E40E94F82D9B01C7 -:1026A000AC01C501B4010E94472F0E94652E4091E4 -:1026B0000F03423009F45CC028F4442351F0413048 -:1026C000E9F0FBC0433009F481C0443009F4B4C0E0 -:1026D000F4C080E090E0A0E0BFE380930C02909310 -:1026E0000D02A0930E02B0930F021092BF0210923F -:1026F000C0021092C1021092C202DFC01092BF024B -:102700001092C0021092C1021092C202643171058F -:1027100040F46A307105E0F520E030E040E85EE327 -:102720003BC0693C710508F0C0C080E090E00E94A9 -:10273000912E20E030E040EA51E40E948F2D20E00D -:1027400030E044E353E40E94F82D9B01AC010E9469 -:10275000472F20E030E040E05EE30E94472F9B01DE -:10276000AC0160E070E080E09EE30E948F2D5BC0D2 -:102770001092BF021092C0021092C1021092C202C7 -:102780006432710578F4FB01EE59FF4F0C94373138 -:1027900020E030E040E05FE3C701B6010E94472F30 -:1027A0006B017C0180E090E0A0E0BEE380930C022E -:1027B00090930D02A0930E02B0930F027EC0A7016A -:1027C0009601C701B6010E94902DEACF1092BF0278 -:1027D0001092C0021092C1021092C2022AE0269FFB -:1027E000A001279F500D1124CA0168EB7BE00E94D5 -:1027F0000F31BC016C5D754077FF03C07195619529 -:102800007109882777FD8095982F0E94932E2EE3DB -:1028100033EC4EE259E30E94472F20E030E040ECD9 -:102820005EE30E94902D60930C0270930D028093E2 -:102830000E0290930F0241C01092BF021092C0028C -:102840001092C1021092C202CE0183709927892B87 -:10285000E1F0BE016170772780E090E00E94912E48 -:1028600020E030E040E05EE30E94472F20E030E0CF -:1028700040E45FE30E94902D60930C0270930D0280 -:1028800080930E0290930F020CC080E090E0A0E0D5 -:10289000BFE380930C0290930D02A0930E02B093BD -:1028A0000F02C770DD27CD2B41F410920C0210925D -:1028B0000D0210920E0210920F02C701B601DF91B5 -:1028C000CF91FF90EF90DF90CF90BF90AF909F900F -:1028D0008F900895809118030895CF93DF9300D0CF -:1028E0001F92CDB7DEB79C0180919803843019F513 -:1028F00093E099833B832A839093E9008FEF909133 -:10290000E800815095FD06C095ED9A95F1F700001D -:102910008111F5CF8091E80085FF0DC040E050E0C7 -:1029200063E070E0CE0101960E94A6168091E80057 -:102930008E778093E8000F900F900F90DF91CF91EA -:102940000895CF93DF9300D01F92CDB7DEB72091CB -:102950009803243021F522E029839B838A8383E036 -:102960008093E9008FEF9091E800815095FD06C0BB -:1029700095ED9A95F1F700008111F5CF8091E8006F -:1029800085FF0DC040E050E063E070E0CE010196AD -:102990000E94A6168091E8008E778093E8000F9041 -:1029A0000F900F90DF91CF910895209198032430DC -:1029B000F1F422E02093E9002FEF3091E80021505C -:1029C00035FD06C035ED3A95F1F700002111F5CF40 -:1029D0002091E80025FF0BC040E050E065E070E08A -:1029E0000E94A6168091E8008E778093E8000895F3 -:1029F000CF93DF9320919803243039F521E0209381 -:102A0000E9002FEF3091E800215035FD06C035ED8B -:102A10003A95F1F700002111F5CF2091E80025FF4C -:102A200014C0EC0140E050E068E070E00E94A6169F -:102A30008091E8008E778093E80088E0FE01A0E1B5 -:102A4000B3E001900D928A95E1F7DF91CF9108955F -:102A500080919703811109C00E943B180E94981829 -:102A60008091E20084608093E200089510929703C1 -:102A70000895089508950C94962742E061EC81E052 -:102A80000E94B51742E061EC82E00E94B51742E077 -:102A900061EC83E00C94B51780919A03833009F4BC -:102AA00053C030F4813071F0823009F48CC0089545 -:102AB0008A3009F478C08B3009F45EC0893009F09F -:102AC0009AC020C080919903813A09F094C0809106 -:102AD000E800877F8093E80080919D0390919E039A -:102AE000892B21F468E080E193E003C060E080E09E -:102AF00090E070E00E94F1168091E8008B7780935F -:102B0000E800089580919903813209F074C08091A2 -:102B10009D0390919E03892B09F06DC08091E80080 -:102B2000877F8093E8008091E80082FD05C0809156 -:102B300098038111F8CF5FC08091F1008093180352 -:102B40008091E8008B7753C080919903813A09F016 -:102B500052C080919D0390919E03892B09F04BC038 -:102B60008091E800877F8093E8008091E80080FFF3 -:102B7000FCCF80911E0236C0809199038132D9F535 -:102B800080919D0390919E03892BA9F58091E80087 -:102B9000877F8093E8000E94EA1780919B038093CF -:102BA0001E020C945B2180919903813221F5809162 -:102BB000E800877F8093E8000E94EA1780919C03D9 -:102BC00080931903089580919903813AA1F480912B -:102BD000E800877F8093E8008091E80080FFFCCFC9 -:102BE000809119038093F1008091E8008E778093A3 -:102BF000E8000C94EA17089584B7877F84BF88E1C2 -:102C00000FB6F89480936000109260000FBE90E0C1 -:102C100080E80FB6F89480936100909361000FBE36 -:102C20000E948D1B0E943B180E9498188091E20020 -:102C300084608093E20078940E941E1B0E948F1B88 -:102C400084E192E00E94391B80919803853069F4F9 -:102C50000E945027809196038823B1F30E947E271B -:102C6000882391F30E949016EFCF0E94971BECCF20 -:102C7000292F332723303105C9F064F42130310581 -:102C800081F02230310509F043C084E590E028E16D -:102C90003AE042C021323105F1F02232310541F1F2 -:102CA00037C082E190E02CE63AE036C099278130C7 -:102CB000910541F08230910541F0892B49F5E4E11D -:102CC000FAE005C0E6EEF9E002C0EAEBF9E0849133 -:102CD00090E09F0121C06330D8F4E62FF0E0EE0FC2 -:102CE000FF1FE856FD4F2081318189E090E014C03C -:102CF000633070F470E0FB01EE0FFF1FEE56FD4FE6 -:102D000020813181FB01E157FD4F808190E004C0BB -:102D100080E090E020E030E0FA01318320830895E4 -:102D200080E189BD82E189BD09B400FEFDCF8091BB -:102D3000D8008F7D8093D8008091E00082608093DE -:102D4000E0008091E00081FDFCCF0895CF92DF92FA -:102D5000EF92FF920F931F93CF93DF93EC018B01C0 -:102D60006A010E940918811133C0C114D10439F0DD -:102D7000F60180819181081B190BC80FD91FE12C26 -:102D8000F12C0115110519F18091E80085FD16C09F -:102D90008091E8008E778093E800C114D10449F057 -:102DA000F60180819181E80EF91EF182E08285E0D2 -:102DB0000FC00E940918882321F30AC089918093CB -:102DC000F10001501109FFEFEF1AFF0ADACF80E09E -:102DD000DF91CF911F910F91FF90EF90DF90CF90F7 -:102DE000089520919F033091A0032617370748F0DC -:102DF0006115710539F42091E8002E772093E800E1 -:102E000001C0B90140E061157105A9F12091980355 -:102E1000222309F443C0253009F442C02091E80080 -:102E200023FD40C02091E80022FD32C02091E8003F -:102E300020FFE9CF4091F3002091F20030E0342BE5 -:102E4000FC01CF016115710559F02830310540F4BE -:102E500081918093F100615071092F5F3F4FF1CF55 -:102E600041E02830310509F040E02091E8002E775C -:102E70002093E800C8CF4111C9CF0AC080919803C0 -:102E8000882361F0853061F08091E80083FD0AC0FD -:102E90008091E80082FFF2CF80E0089582E00895FB -:102EA00083E0089581E0089520919F033091A0036D -:102EB0002617370748F06115710539F42091E800AD -:102EC0002E772093E80001C0B901FC0120E06115D4 -:102ED000710591F180919803882309F440C08530F1 -:102EE00009F43FC08091E80083FD3DC08091E80077 -:102EF00082FD2FC08091E80080FFE9CF2091F30090 -:102F00008091F20090E0922B6115710559F08830A4 -:102F1000910540F424912093F1003196615071099C -:102F20000196F2CF21E0089709F020E08091E800B7 -:102F30008E778093E800CBCF2111CCCF0AC080914F -:102F40009803882361F0853061F08091E80083FD6B -:102F50000AC08091E80082FFF2CF80E0089582E00D -:102F6000089583E0089581E00895982F973058F5EB -:102F70009093E900981739F07091EC002091ED00E2 -:102F80005091F00003C0242F762F50E021FF19C08C -:102F90003091EB003E7F3093EB003091ED003D7FB0 -:102FA0003093ED003091EB0031603093EB00709383 -:102FB000EC002093ED005093F0002091EE0027FFED -:102FC00007C09F5FD3CF8F708093E90081E00895A1 -:102FD00080E008958091990387FF11C08091E800F7 -:102FE00082FD05C0809198038111F8CF11C08091B6 -:102FF000E8008B770BC080919803882349F080917B -:10300000E80080FFF8CF8091E8008E778093E80099 -:1030100008952091E4003091E50095E64091EC00A0 -:10302000842F817040FF22C08091E80080FD1CC089 -:1030300080919803882391F0853091F08091EB0086 -:1030400085FD10C04091E4005091E5004217530700 -:1030500029F39A01915011F784E0089582E00895D0 -:1030600083E0089581E0089580E008954091E800AC -:1030700042FFDECF08950E94A9180E94B118E0EE29 -:10308000F0E0808181608083E8EDF0E080818F77DF -:10309000808319BCA7EDB0E08C918E7F8C938081EA -:1030A0008F7E80831092970308950F931F93CF9381 -:1030B000DF930E94A9180E94B118C8EDD0E0888162 -:1030C0008F77888388818068888388818F7D8883D3 -:1030D00019BC1092980310929403109296031092C8 -:1030E000950300EE10E0F80180818B7F808388815A -:1030F0008160888342E060E080E00E94B517E1EEE5 -:10310000F0E080818E7F8083E2EEF0E0808181605C -:103110008083808188608083F80180818E7F8083B6 -:10312000888180618883DF91CF911F910F910895ED -:10313000E8EDF0E080818F7E8083E7EDF0E0808134 -:103140008160808384E082BF81E0809397030C9448 -:103150005518E8EDF0E080818E7F80831092E200C8 -:1031600008951092DA001092E10008951F920F92D4 -:103170000FB60F9211242F933F934F935F936F934A -:103180007F938F939F93AF93BF93EF93FF93809120 -:10319000E10082FF0BC08091E20082FF07C08091B6 -:1031A000E1008B7F8093E1000E941D1B8091DA007B -:1031B00080FF1FC08091D80080FF1BC08091DA0083 -:1031C0008E7F8093DA008091D90080FF0DC080E16E -:1031D00089BD82E189BD09B400FEFDCF81E0809305 -:1031E00098030E94281505C019BC109298030E94EC -:1031F00036158091E10080FF19C08091E20080FFC8 -:1032000015C08091E2008E7F8093E2008091E20001 -:1032100080618093E2008091D80080628093D80022 -:1032200019BC85E0809398030E943A158091E100D3 -:1032300084FF30C08091E20084FF2CC080E189BD12 -:1032400082E189BD09B400FEFDCF8091D8008F7D59 -:103250008093D8008091E1008F7E8093E10080917F -:10326000E2008F7E8093E2008091E2008160809393 -:10327000E20080919403882311F084E007C08091DC -:10328000E30087FD02C081E001C083E080939803E2 -:103290000E943B158091E10083FF29C08091E200EC -:1032A00083FF25C08091E100877F8093E10082E069 -:1032B00080939803109294038091E1008E7F809315 -:1032C000E1008091E2008E7F8093E2008091E20035 -:1032D00080618093E20042E060E080E00E94B517E8 -:1032E0008091F00088608093F0000E943915FF9172 -:1032F000EF91BF91AF919F918F917F916F915F916E -:103300004F913F912F910F900FBE0F901F901895E6 -:103310001F920F920FB60F9211242F933F934F934A -:103320005F936F937F938F939F93AF93BF93CF934D -:10333000DF93EF93FF93C091E900CF708091EC0091 -:10334000D82FD17080FDD0E81092E9008091F00074 -:10335000877F8093F00078940E94CC191092E90046 -:103360008091F00088608093F000CD2BCF70C093E7 -:10337000E900FF91EF91DF91CF91BF91AF919F91C4 -:103380008F917F916F915F914F913F912F910F900E -:103390000FBE0F901F9018951F93CF93DF93CDB75B -:1033A000DEB7AA970FB6F894DEBF0FBECDBFE9E92E -:1033B000F3E088E08E0F9091F10091938E13FBCF94 -:1033C0000E944C158091E80083FF1FC180919903F2 -:1033D00090919A03492F50E04A30510508F015C1E9 -:1033E000FA01EA57FF4F0C943731803881F0823868 -:1033F00009F00BC180919D038F708093E90080914B -:10340000EB0085FB882780F91092E90006C08091C7 -:10341000950390919603911182609091E800977FB7 -:103420009093E8008093F1001092F100C8C0282F1B -:103430002D7F09F0EAC0882319F0823061F0E5C0E1 -:1034400080919B03813009F0E0C0933009F080E067 -:10345000809396032BC080919B03811127C080919C -:103460009D038F7009F4D1C08093E9002091EB0097 -:1034700020FF1CC0933021F48091EB00806214C0C7 -:103480009091EB0090619093EB0021E030E0A90176 -:1034900002C0440F551F8A95E2F74093EA0010924C -:1034A000EA008091EB0088608093EB001092E900C5 -:1034B0008091E800877F86C08111A7C010919B038F -:1034C0001F778091E3008078812B8093E3008091C7 -:1034D000E800877F8093E8000E94EA178091E80067 -:1034E00080FFFCCF8091E30080688093E30011119E -:1034F00002C082E001C083E08093980386C08058B8 -:10350000823008F082C080919B0390919C038C3D97 -:1035100053E0950779F583E08A838AE289834FB780 -:10352000F894DE01139620E03EE051E2E32FF0E054 -:1035300050935700E49120FF03C0E295EF703F5F86 -:10354000EF708E2F90E0EA3010F0C79601C0C09661 -:103550008D939D932F5F243149F74FBF8091E800F1 -:10356000877F8093E8006AE270E0CE0101960E94B6 -:10357000F11614C0AE014F5F5F4F60919D030E9432 -:103580003816BC01009709F440C09091E800977F7D -:103590009093E80089819A810E9454178091E800F5 -:1035A0008B778093E80031C0803879F58091E8000E -:1035B000877F8093E800809194038093F10080914D -:1035C000E8008E778093E8000E94EA171EC0811100 -:1035D0001CC090919B039230C0F48091E800877FDB -:1035E0008093E800909394030E94EA1780919403DB -:1035F000811106C08091E30087FD02C081E001C017 -:1036000084E0809398030E943D158091E80083FF39 -:103610000AC08091E800877F8093E8008091EB00EA -:1036200080628093EB00AA960FB6F894DEBF0FBEBF -:10363000CDBFDF91CF911F9108950895CF938091D1 -:1036400098038823A1F0C091E900CF709091EC001D -:10365000892F817090FD80E8C82B1092E90080913D -:10366000E80083FD0E94CC19CF70C093E900CF9190 -:10367000089590931F0380931E030895E0911E0305 -:10368000F0911F03309721F00190F081E02D099413 -:1036900080E00895E0911E03F0911F03309721F020 -:1036A0000280F381E02D09940895E0911E03F091CA -:1036B0001F03309721F00480F581E02D09940895CF -:1036C00020911C0330911D038217930771F0909392 -:1036D0001D0380931C03E0911E03F0911F0330979C -:1036E00021F00680F781E02D0994089520911A03B6 -:1036F00030911B038217930771F090931B03809303 -:103700001A03E0911E03F0911F03309721F000840B -:10371000F185E02D0994089508950C948C1B0E9466 -:10372000CA270E94F60B0E9450280C94F82C4F9246 -:103730005F927F928F929F92AF92BF92CF92DF92D1 -:10374000EF92FF920F931F93CF93DF93CDB7DEB726 -:103750002A970FB6F894DEBF0FBECDBF0E94D10CE2 -:1037600091E2C92E93E0D92E00E010E0AA24A394A0 -:10377000B12C702E802F0E940A0E4C01F601419050 -:1037800051906F014826592641145104B1F40F5F3E -:103790001F4F0530110569F78FEF89838A831B82DC -:1037A0000E94D3278160782F9D838C8349815A8121 -:1037B0006B818D810E94501C3AC08091770381FDFE -:1037C0000E94130E20E030E07501022E02C0EE0CC4 -:1037D000FF1C0A94E2F7C70184219521892B09F186 -:1037E0002E837F828E209F2091E0892809F490E02B -:1037F00098870E94D3278160782F9A8789874E8186 -:103800005F8168858A850E94501C000F111FF80196 -:10381000EF5DFC4F80819181E826F926F182E082FC -:1038200006C02F5F3F4F2C30310571F6B0CF0E949C -:10383000372A109120030E943E1B1817D9F00E94CE -:103840003E1B809320032A960FB6F894DEBF0FBE6E -:10385000CDBFDF91CF911F910F91FF90EF90DF903F -:10386000CF90BF90AF909F908F907F905F904F9040 -:103870000C942E0B2A960FB6F894DEBF0FBECDBF68 -:10388000DF91CF911F910F91FF90EF90DF90CF903C -:10389000BF90AF909F908F907F905F904F900895D2 -:1038A000CF93DF93CDB7DEB72B970FB6F894DEBF7B -:1038B0000FBECDBF4F83588769877A878B87DE011C -:1038C000119686E0FD0111928A95E9F785E0FE01E7 -:1038D000379601900D928A95E1F749815A816B8163 -:1038E0007C818D819E810E94F5232B960FB6F894E2 -:1038F000DEBF0FBECDBFDF91CF910895CF93882358 -:1039000009F4C2C0C82F823859F40E943E1B81FDC1 -:10391000BBC089E30E949E260E94212789E30CC038 -:10392000833879F40E943E1B80FDAEC083E50E947F -:103930009E260E94212783E50E94BB26CF910C94EE -:103940002127843859F40E943E1B82FD9DC087E4E4 -:103950000E949E260E94212787E4EECF8CEF8C0FD9 -:10396000813A48F48C2F0E94602C81118DC08C2FDD -:103970000E949E26E3CF80E28C0F883048F4C77007 -:1039800081E001C0880FCA95EAF70E94DA26D6CFF7 -:103990008BE58C0F833078F4C53A29F0C63A31F0C4 -:1039A00083E890E005C081E890E002C082E890E002 -:1039B000CF910C94601B88E58C0F833108F064C0B4 -:1039C000C83A39F1C93A41F1CA3A49F1CB3A51F111 -:1039D000CC3A59F1CD3A61F1C03B69F1CE3A71F17F -:1039E000CF3A79F1C13B81F1C23B89F1C33B91F1FF -:1039F000C43B99F1C53BA1F1C63BA9F1C73BB1F16D -:103A0000C83BB9F1C93BC1F1CA3BC9F180E090E0C4 -:103A100038C082EE90E035C089EE90E032C08AEE88 -:103A200090E02FC085EB90E02CC086EB90E029C0A1 -:103A300087EB90E026C08CEC90E023C08DEC90E00A -:103A400020C083E891E01DC08AE891E01AC082E9B5 -:103A500091E017C084E991E014C081E292E011C0C6 -:103A600083E292E00EC084E292E00BC085E292E035 -:103A700008C086E292E005C087E292E002C08AE2D6 -:103A800092E0CF910C94761BCF910895882309F48E -:103A90004BC0823859F40E943E1B81FF45C089E328 -:103AA0000E949E260E94212789E30CC0833871F46E -:103AB0000E943E1B80FF38C083E50E949E260E9424 -:103AC000212783E50E94BB260C942127843859F4D2 -:103AD0000E943E1B82FF28C087E40E949E260E940F -:103AE000212787E4EFCF9CEF980F913A58F390E2AB -:103AF000980F983050F4877091E001C0990F8A9523 -:103B0000EAF7892F0E94E026DFCF9BE5980F9330DC -:103B100020F480E090E00C94601B885A833120F4FC -:103B200080E090E00C94761B0895882321F00E9499 -:103B3000DA260C9421270895882321F00E94E0269C -:103B40000C9421270895BF92CF92DF92EF92FF92BB -:103B50000F931F93CF93DF9300D000D000D0CDB749 -:103B6000DEB725E0FC01DE01119601900D922A9549 -:103B7000E1F7FC01D08011810281258122952F700F -:103B800043815481452B09F472C31F3F21F4FFEF99 -:103B9000DF1609F46CC37C012E830E94F707D982DB -:103BA0001A8369817A81802F0E949A26182FB92E54 -:103BB0000E944F260E9416252E81002319F00E9494 -:103BC000F7262E81EB2DE295EF70F0E0E057FF4FE6 -:103BD0000C9437318B2D807F9B2D9F70F92E88237D -:103BE00019F0F29480EFF822002389F0FF2009F405 -:103BF0007CC280E2810F883020F48F2D0E94DA266B -:103C000003C08F2D0E94EA260E9421276EC2812FB9 -:103C10000E94461DFF2009F42AC3105E8F2D183024 -:103C200018F40E94E02602C00E94F02626960FB6E5 -:103C3000F894DEBF0FBECDBFDF91CF911F910F91E2 -:103C4000FF90EF90DF90CF90BF900C9421278B2DA9 -:103C5000807F9B2D9F70803211F4892F03C0892FA4 -:103C60008295807F112319F0113011F12BC00023B0 -:103C7000A9F0222389F1213079F526960FB6F89420 -:103C8000DEBF0FBECDBFDF91CF911F910F91FF908F -:103C9000EF90DF90CF90BF900C940A27222319F069 -:103CA000213009F4E4C28E830E940D278E819BC1CE -:103CB000002321F0263008F0DAC20EC0253008F0CB -:103CC000D6C291C10023C9F0222331F0F7019581BA -:103CD00090FF0BC29F70958326960FB6F894DEBFB7 -:103CE0000FBECDBFDF91CF911F910F91FF90EF904D -:103CF000DF90CF90BF900C94951D222309F473C1DF -:103D000009C22B2D26952695237030E0211531050B -:103D100021F021303105D1F0AAC2002321F0812FFA -:103D20009B2D937002C080E090E026960FB6F89429 -:103D3000DEBF0FBECDBFDF91CF911F910F91FF90DE -:103D4000EF90DF90CF90BF900C94601B002321F088 -:103D5000812F9B2D937002C080E090E026960FB6D5 -:103D6000F894DEBF0FBECDBFDF91CF911F910F91B1 -:103D7000FF90EF90DF90CF90BF900C94761B812F37 -:103D8000002319F00E943F2902C00E94A72926960D -:103D90000FB6F894DEBF0FBECDBFDF91CF911F915C -:103DA0000F91FF90EF90DF90CF90BF900C942C2A52 -:103DB0008B2D837009F07BC0011159C2812F829530 -:103DC00086958770880F880F912F9F70C92ED12CF0 -:103DD000E12CF12C082E04C0CC0CDD1CEE1CFF1CC9 -:103DE0000A94D2F714FF12C04FE050E060E070E098 -:103DF00004C0440F551F661F771F8A95D2F7CB0169 -:103E0000BA01609570958095909503C060E070E070 -:103E1000CB012B2D269526952370422F50E0423062 -:103E20005105D9F04330510569F16C297D298E295E -:103E30009F294130510551F126960FB6F894DEBF07 -:103E40000FBECDBFDF91CF911F910F91FF90EF90EB -:103E5000DF90CF90BF900C943D256C297D298E2951 -:103E60009F2926960FB6F894DEBF0FBECDBFDF9117 -:103E7000CF911F910F91FF90EF90DF90CF90BF9067 -:103E80000C9459250E943D25C701B60126960FB610 -:103E9000F894DEBF0FBECDBFDF91CF911F910F9180 -:103EA000FF90EF90DF90CF90BF900C9421250023DE -:103EB00019F08B2D817001C08695882309F4D7C134 -:103EC000812F829586958770880F880F912F9F701C -:103ED000C92ED12CE12CF12C082E04C0CC0CDD1CF9 -:103EE000EE1CFF1C0A94D2F714FF12C04FE050E002 -:103EF00060E070E004C0440F551F661F771F8A956D -:103F0000D2F7CB01BA01609570958095909503C06A -:103F100060E070E0CB012B2D269526952370422F73 -:103F200050E042305105D9F04330510569F16C2918 -:103F30007D298E299F294130510551F126960FB6D2 -:103F4000F894DEBF0FBECDBFDF91CF911F910F91CF -:103F5000FF90EF90DF90CF90BF900C9417266C29C4 -:103F60007D298E299F2926960FB6F894DEBF0FBEB5 -:103F7000CDBFDF91CF911F910F91FF90EF90DF9018 -:103F8000CF90BF900C9433260E941726C701B6012C -:103F900026960FB6F894DEBF0FBECDBFDF91CF914E -:103FA0001F910F91FF90EF90DF90CF90BF900C94F6 -:103FB000FB25103F49F118F4103E48F491C0123F20 -:103FC00009F453C0E8F1133F09F464C089C01F70BD -:103FD0008B2D8F71002321F00E949425812F7CCEA0 -:103FE0000E94B525812F26960FB6F894DEBF0FBE2E -:103FF000CDBFDF91CF911F910F91FF90EF90DF9098 -:10400000CF90BF900C949C1D0023B1F0253008F098 -:104010002EC18B2D8F7126960FB6F894DEBF0FBE82 -:10402000CDBFDF91CF911F910F91FF90EF90DF9067 -:10403000CF90BF900C94DA25263008F018C1E9CF54 -:104040000023A9F08B2D8F7126960FB6F894DEBF52 -:104050000FBECDBFDF91CF911F910F91FF90EF90D9 -:10406000DF90CF90BF900C949425002359F38B2DB3 -:104070008F7126960FB6F894DEBF0FBECDBFDF91CD -:10408000CF911F910F91FF90EF90DF90CF90BF9055 -:104090000C94B525002399F08B2D8F7126960FB6C1 -:1040A000F894DEBF0FBECDBFDF91CF911F910F916E -:1040B000FF90EF90DF90CF90BF900C947F252696D5 +:1009700001002A0354006800650020005000720046 +:1009800065006F006E006900630020004B00650089 +:10099000790062006F0061007200640000002C03A7 +:1009A0004F007200740068006F006C0069006E00F8 +:1009B00065006100720020004B0065007900620054 +:1009C0006F006100720064007300000004030904FA +:1009D00009025400030100A0FA0904000001030108 +:1009E0000100092111010001223F000705810308D0 +:1009F000000A09040100010301020009211101009C +:100A000001224D000705820308000A0904020001C3 +:100A100003000000092111010001223600070583AF +:100A20000308000A1201100100000008EDFE6160D9 +:100A300001000102000105010980A10185021601E2 +:100A40000026B7001A01002AB70075109501810031 +:100A5000C0050C0901A1018503160100269C021A9C +:100A600001002A9C02751095018100C00501090250 +:100A7000A1010901A1000509190129051500250198 +:100A80009505750181029501750381010501093004 +:100A900009311581257F9502750881060938158170 +:100AA000257F950175088106050C0A3802158125F8 +:100AB0007F950175088106C0C005010906A10105E1 +:100AC0000719E029E71500250195087501810295B0 +:100AD0000175088101050819012905950575019120 +:100AE000029501750391010507190029FF150025DD +:100AF000FF950675088100C011241FBECFEFDAE014 +:100B0000DEBFCDBF04B603FE24C08091F3039091F5 +:100B1000F403A091F503B091F6038730904BA74002 +:100B2000B04BB9F41092F3031092F4031092F50352 +:100B30001092F60314BE84B7877F84BF88E10FB696 +:100B4000F89480936000109260000FBEE0E0F8E33C +:100B5000099512E0A0E0B1E0E8EAF3E602C00590F2 +:100B60000D92A63FB107D9F713E0A6EFB2E001C09E +:100B70001D92A33FB107E1F70E940D160C94D231EC +:100B80000C940000279A2F988FEF9FEF9093870087 +:100B9000809386008AE08093800089E180938100C1 +:100BA0000C94092D282F81110BC080918000877F24 +:100BB0008093800010928D0010928C002F980895E1 +:100BC0002F9880918000886080938000233019F4F2 +:100BD0008FEF9FEF0FC083E090E0821B9109880F99 +:100BE000991F2FEF3FEFA90102C0569547958A95AF +:100BF000E2F7CA0190938D0080938C000895CF9303 +:100C0000DF93EC010E94AE28BE0180E090E0DF910E +:100C1000CF910C9428250F931F93462F50E04C3012 +:100C2000510508F098C0DC01FA01EA5AFF4F12960C +:100C30008C910C949631882309F48DC000E010E06B +:100C4000980140E064E070E089EC91E00E9463125A +:100C500081E090E00FC0882309F47DC000E010E03F +:100C6000980140E066E070E089E591E00E9463123F +:100C700082E090E00E94FF056EC0882309F46BC0FB +:100C800000E010E0980140E068E070E089E891E061 +:100C90000E94631284E090E0EDCF882311F083E09E +:100CA00005C083E00CC0882349F084E00E94A5259C +:100CB00040E164E083E00E94C90A4DC084E00E94E4 +:100CC000C625F6CF882331F085EE0E948F1C0E9446 +:100CD000602D41C085EE0E94571D3DC08823D9F18B +:100CE0000E94F70D38C08823B1F10E94F00D00E09A +:100CF00010E0980140E064E070E089EE91E029C0E6 +:100D0000882349F185E00E94C6250E94180E23C061 +:100D1000882309F100E010E0980140E068E070E00D +:100D200089E191E00E94631285E00E94A52513C02D +:100D3000882389F00E94F61204C0882361F00E9483 +:100D4000011300E010E0980140E068E070E089E104 +:100D500091E00E94631280E090E01F910F9108954E +:100D60000F931F932FEF89EF90E021508040904028 +:100D7000E1F700C0000000E010E0980140E064E00E +:100D800070E089EE91E00E9463121F910F91089527 +:100D9000CF92DF92EF92FF920F931F93CF93DF9347 +:100DA000CDB7DEB7CC58D1090FB6F894DEBF0FBE71 +:100DB000CDBF2091B30325FFC5C08C01FC019281FA +:100DC00080910001992309F460C096E4E5E2F2E025 +:100DD000DE01A95BBF4F01900D929A95E1F7F801F2 +:100DE0009081E091F602F091F702E90FF11DEE0F0C +:100DF000FF1F27E430E02C0F3D1FE20FF31F60813F +:100E00007181680F711D882777FD8095982F0E944A +:100E1000A42E20E030E040E451E40E94092E6B0152 +:100E20007C01F801218185E090E0821B9109BC01E1 +:100E3000882777FD8095982F0E94A42E9B01AC01F6 +:100E4000C701B6010E94A12D9B01AC0160E070E0DA +:100E500080E090E40E94173020E030E04CE551E45F +:100E60000E94B42F4FE050E0C457DF4F0FB6F89404 +:100E7000DEBF0FBECDBFDF91CF911F910F91FF90CD +:100E8000EF90DF90CF900C94031296E4E5E2F2E04D +:100E9000DE01119601900D929A95E1F7F80190818B +:100EA000E091F602F091F702E90FF11DEE0FFF1F3E +:100EB00021E030E02C0F3D1FE20FF31F60817181B4 +:100EC000680F711D882777FD8095982F0E94A42EAA +:100ED00020E030E040E451E40E94092E6B017C01E7 +:100EE000F801218185E090E0821B9109BC018827EF +:100EF00077FD8095982F0E94A42E9B01AC01C7011D +:100F0000B6010E94A12D9B01AC0160E070E080E081 +:100F100090E40E94173020E030E04CE551E40E945C +:100F2000B42FC457DF4F0FB6F894DEBF0FBECDBF4E +:100F3000DF91CF911F910F91FF90EF90DF90CF90B5 +:100F40000C944B0EC457DF4F0FB6F894DEBF0FBEA4 +:100F5000CDBFDF91CF911F910F91FF90EF90DF9068 +:100F6000CF9008950F931F9300E010E0980140E0A8 +:100F700063E070E081E091E00E9463122FEF82E570 +:100F800097E0215080409040E1F700C000001F91A1 +:100F90000F91089508950E94C2056E9A769A0C9456 +:100FA000B0060C94CA070C94C8060895880F991FC0 +:100FB000FC01E650F040859194910895880F991FA7 +:100FC000FC01E658FE4F8591949108950F931F936D +:100FD000CF93DF93EC01811520E49207A0F5C115B2 +:100FE00080E3D80708F0E1C0C83ED105D8F4C03E80 +:100FF000D10508F0EEC1C83AD10578F4C53AD1055B +:1010000008F074C0C130D10509F46DC008F4DEC128 +:10101000C430D10508F0DDC1D9C1CB3BD10508F4FE +:1010200070C0D4C1C11590E2D90708F0B9C0C1158C +:1010300021E0D20708F0CDC1C03FD10508F4C6C1F8 +:101040008E01106506C2C13080E5D80709F4BDC025 +:1010500068F5C13120E4D20709F4AEC050F4C031C4 +:1010600090E4D90708F0A5C0CF70DD278E01146D7C +:10107000F0C1C33120E4D20709F4A4C008F49FC032 +:10108000C115D04509F0A2C10E946C210E94180E22 +:101090000E94B2079FEF24E38CE0915020408040F3 +:1010A000E1F700C000000E943F28D3C1C11520E62F +:1010B000D20730F4C11581E5D80708F48CC02DC1E2 +:1010C000C11590E7D90708F481C1C11520E8D207FE +:1010D00008F478C1C11580E9D80708F077C1DF703E +:1010E0008E01106AB6C101E010E0B3C1C53AD10566 +:1010F00009F471C1C63AD10509F070C102E810E4E3 +:10110000A8C1C83AD10509F46CC1C93AD10509F49E +:101110006BC1CA3AD10509F46AC1CB3AD10509F4C9 +:1011200069C1CC3AD10509F468C1CD3AD10509F4B9 +:1011300067C1C03BD10509F466C1CE3AD10509F4B7 +:1011400065C1CF3AD10509F464C1C13BD10509F4A9 +:1011500063C1C23BD10509F462C1C33BD10509F4A7 +:1011600061C1C43BD10509F460C1C53BD10509F497 +:101170005FC1C63BD10509F45EC1C73BD10509F487 +:101180005DC1C83BD10509F45CC1C93BD10509F477 +:101190005BC1CA3BD10509F45AC100E014E459C14E +:1011A000CE019F700E94DE0755C1DD278E01106CB5 +:1011B00050C100E011ED4DC100E010ED4AC100E06A +:1011C00012ED47C100E013ED44C18091C703816077 +:1011D0008093C7033EC10E949B28811102C00E94D8 +:1011E00077280E94B32890E09093F2038093F10354 +:1011F000C23090E5D90721F48091F103816086C067 +:10120000C43020E5D20721F48091F10382607EC0D2 +:10121000C63080E5D80721F48091F103846076C060 +:10122000C83090E5D90719F48091F10327C0CA307E +:1012300020E5D20721F48091F103806167C0CC30B2 +:1012400080E5D80721F48091F10380625FC0CE3041 +:1012500090E5D90721F48091F103806457C0C03133 +:1012600020E5D20721F48091F10380684FC0C2319C +:1012700080E5D80729F48091F1038460886046C036 +:10128000C33090E5D90721F48091F1038E7F3EC0F1 +:10129000C53020E5D20721F48091F1038D7F36C05F +:1012A000C73080E5D80721F48091F1038B7F2EC0F1 +:1012B000C93090E5D90719F48091F10326C0CB30ED +:1012C00020E5D20721F48091F1038F7E1FC0CD303D +:1012D00080E5D80721F48091F1038F7D17C0CF30CE +:1012E00090E5D90721F48091F1038F7B0FC0C131C4 +:1012F00020E5D20721F48091F1038F7707C0C33135 +:10130000D04531F48091F1038B7F877F8093F10387 +:101310008091F1030E94B7289CC08D2F99278F7070 +:10132000992781309105D9F49E012370332702C09B +:10133000880F991F2A95E2F79C688E0144E0000F00 +:10134000111F4A95E1F700271370802B912B53E072 +:10135000CC0FDD1F5A95E1F7C076DD272FC0823014 +:10136000910531F4DC2FCC278E01016F106A71C01A +:101370008330910569F4CE018370992701E010E074 +:1013800002C0000F111F8A95E2F7C8019C680FC0C8 +:10139000049709F05EC0CE018370992701E010E048 +:1013A00002C0000F111F8A95E2F7C8019A6823E076 +:1013B000CC0FDD1F2A95E1F7C07ED7708C010C2B76 +:1013C0001D2B47C0DF708E01106243C000E010E0AB +:1013D00040C08E013EC001E810E43BC003E810E4C9 +:1013E00038C002EE14E435C009EE14E432C00AEE4F +:1013F00014E42FC005EB14E42CC006EB14E429C060 +:1014000007EB14E426C00CEC14E423C00DEC14E448 +:1014100020C003E815E41DC00AE815E41AC002E97B +:1014200015E417C004E915E414C001E216E411C084 +:1014300003E216E40EC004E216E40BC005E216E473 +:1014400008C006E216E405C007E216E402C00AE29C +:1014500016E4C801DF91CF911F910F9108959CE090 +:10146000799FF00111249CE3899FE00DF11D112467 +:10147000E60FF11DEE0FFF1FE658FE4F8591949188 +:10148000803E9105E0F4803C910558F5813391054B +:1014900009F46FC048F48932910509F463C08A32B7 +:1014A000910509F46DC072C089339105E9F0823865 +:1014B0009105D1F08533910509F44DC067C0833E95 +:1014C000910581F138F4803E9105B9F0823E910595 +:1014D000D9F05CC0863E910561F1873E9105A1F18E +:1014E00055C00E94D60708952091F10320FD02C047 +:1014F00021FF4CC080EE90E049C08091F10380FF55 +:10150000F9CF89E390E042C08091F10382FF0EC0E1 +:101510008091F10384FF03C080E090E037C083EE48 +:1015200090E034C08091F10382FFF2CF82EE90E030 +:101530002DC08091F10383FF0BC08091F10384FDE6 +:10154000EBCF87EE90E022C08091F10383FFF5CFCF +:1015500086EE90E01BC08091F10385FF07C089E211 +:1015600090E014C08091F10385FFF9CF85E390E00E +:101570000DC08091F10386FF07C08AE290E006C0AB +:101580008091F10386FFF9CF81E390E00E94E607A6 +:101590000895CF92DF92EF92FF920F931F9301E095 +:1015A00010E020E030E06801790104C0CC0CDD1CC3 +:1015B000EE1CFF1C8A95D2F704C0000F111F221FDA +:1015C000331F6A95D2F70C291D292E293F29C09077 +:1015D000B303D090B403E090B503F090B603C022FB +:1015E000D122E222F322842FC016D106E206F306AE +:1015F00041F41F910F91FF90EF90DF90CF900C94EA +:10160000A5251F910F91FF90EF90DF90CF900C9444 +:10161000C62508950C94090B5F926F927F928F926A +:101620009F92AF92BF92CF92DF92EF92FF920F9371 +:101630001F93CF93DF93CDB7DEB72A970FB6F894F9 +:10164000DEBF0FBECDBFCE0101966C014E019BE007 +:10165000890E911C20E030E040E050E060E070E056 +:1016600000E010E0E12CF12C6C2C5D2C8AE0782E4F +:10167000AA24A394B12CEBE6F2E0A62DB52D872D7C +:1016800001900D928A95E1F7F601819191916F0198 +:10169000FC01E07FFF27E032F10559F48F709927B4 +:1016A000F50102C0EE0FFF1F8A95E2F7EE2AFF2A2E +:1016B00037C0E033F10559F48F709927F50102C066 +:1016C000EE0FFF1F8A95E2F70E2B1F2B29C0E03487 +:1016D000F10559F48F709927F50102C0EE0FFF1F35 +:1016E0008A95E2F76E2B7F2B1BC0E035F10559F48C +:1016F0008F709927F50102C0EE0FFF1F8A95E2F760 +:101700004E2B5F2B0DC0E036F10551F48F709927F9 +:10171000F50102C0EE0FFF1F8A95E2F72E2B3F2B3B +:10172000C814D90409F0A7CF84B19E2D90958923C0 +:1017300084B985B1E82AE5B887B1902F90958923BF +:1017400087B988B1082B08B98AB1962F909589235B +:101750008AB98BB1682B6BB98DB1942F9095892381 +:101760008DB98EB1482B4EB980B3922F90958923B5 +:1017700080BB81B3282B21BB2A960FB6F894DEBF1D +:101780000FBECDBFDF91CF911F910F91FF90EF90D2 +:10179000DF90CF90BF90AF909F908F907F906F9091 +:1017A0005F9008955F926F927F928F929F92AF9217 +:1017B000BF92CF92DF92EF92FF920F931F93CF933E +:1017C000DF93CDB7DEB768970FB6F894DEBF0FBED4 +:1017D000CDBF85B7806885BF85B7806885BF0E940B +:1017E0000C0BCE0101966C014E0199E1890E911C02 +:1017F00020E030E040E050E060E070E000E010E029 +:10180000E12CF12C6C2C5D2C88E1782EAA24A39479 +:10181000B12CE5E7F2E0A62DB52D872D01900D92B4 +:101820008A95E1F7F601819191916F01FC01E07FCA +:10183000FF27E032F10559F48F709927F50102C0B6 +:10184000EE0FFF1F8A95E2F7EE2AFF2A37C0E0333A +:10185000F10559F48F709927F50102C0EE0FFF1FB3 +:101860008A95E2F70E2B1F2B29C0E034F10559F4BD +:101870008F709927F50102C0EE0FFF1F8A95E2F7DE +:101880006E2B7F2B1BC0E035F10559F48F70992723 +:10189000F50102C0EE0FFF1F8A95E2F74E2B5F2B7A +:1018A0000DC0E036F10551F48F709927F50102C0A3 +:1018B000EE0FFF1F8A95E2F72E2B3F2BC814D90499 +:1018C00009F0A7CF84B19E2D9095892384B985B165 +:1018D000E82AE5B887B1902F9095892387B988B118 +:1018E000082B08B98AB1962F909589238AB98BB1B4 +:1018F000682B6BB98DB1942F909589238DB98EB1DA +:10190000482B4EB980B3922F9095892380BB81B329 +:10191000282B21BBE2E0F3E0A8EFB2E01192119294 +:101920001D921D9283E0EC30F807C1F768960FB660 +:10193000F894DEBF0FBECDBFDF91CF911F910F9105 +:10194000FF90EF90DF90CF90BF90AF909F908F90DF +:101950007F906F905F900C94CB075F926F927F9215 +:101960008F929F92AF92BF92CF92DF92EF92FF92AF +:101970000F931F93CF93DF93CDB7DEB7A2970FB628 +:10198000F894DEBF0FBECDBF6E0149E1C40ED11C7D +:1019900088EFA82E82E0B82E75019AE0592E4601F4 +:1019A00001E010E028E1622E35E0732EEBE6F2E074 +:1019B000D401852D01900D928A95E1F7D6018D9184 +:1019C0009D916D019C01207F33272032310591F4D8 +:1019D00024B18F709927F80102C0EE0FFF1F8A957E +:1019E000E2F7CF01922F982B94B995B18095892376 +:1019F00085B953C02033310591F427B18F709927F1 +:101A0000A80102C0440F551F8A95E2F7CA01922F20 +:101A1000982B97B998B18095892388B93EC0203416 +:101A2000310591F42AB18F709927D80102C0AA0F0D +:101A3000BB1F8A95E2F7CD01922F982B9AB99BB1E3 +:101A4000809589238BB929C02035310591F42DB1BA +:101A50008F709927F80102C0EE0FFF1F8A95E2F7F9 +:101A6000CF01922F982B9DB99EB1809589238EB975 +:101A700014C02036310589F420B38F709927A8014E +:101A800002C0440F551F8A95E2F7CA01922F982B86 +:101A900090BB91B38095892381BB50EA5A95F1F7A9 +:101AA000BE016F5F7F4F20E030E040E050E0E5E7AF +:101AB000F2E0DE011196862D01900D928A95E1F7F4 +:101AC000DB018D919D91BD01FC01E07FFF27E0329C +:101AD000F10511F4E3B113C0E033F10511F4E6B1FF +:101AE0000EC0E034F10511F4E9B109C0E035F105AB +:101AF00011F4ECB104C0E036F105B9F4EFB1F0E057 +:101B00008F70992702C0F595E7958A95E2F7E0FD79 +:101B100008C0C801042E02C0880F991F0A94E2F77A +:101B200002C080E090E0282B392B4F5F5F4F4C3094 +:101B3000510509F0BCCFF70180819181821793078D +:101B400021F031832083709209020E940C0BF2E095 +:101B5000EF0EF11C42E0E41643E0F40609F026CF54 +:101B6000809109028823C9F081508093090288235B +:101B700039F08FE99FE00197F1F700C000000DC038 +:101B8000E2E0F3E0D5018D919D915D018193919308 +:101B9000B2E0AB16B3E0BB06A9F70E94D10781E023 +:101BA000A2960FB6F894DEBF0FBECDBFDF91CF91E6 +:101BB0001F910F91FF90EF90DF90CF90BF90AF906B +:101BC0009F908F907F906F905F900895E82FF0E046 +:101BD000EE0FFF1FEE5FFC4F808191810895089505 +:101BE0008091DC0381608093DC030C94C928809190 +:101BF000DC038E7F8093DC030C94C9280E949B2811 +:101C0000811102C00E9477280E94C5288093DC03BE +:101C10003E9A809171008D7F8093710082E0809365 +:101C200090008AE18093910081E080930E030895F3 +:101C300080910E03811102C00E94FE0D10925E037E +:101C400010925D03809171008D7F8093710080916F +:101C500090008F77809390001092200310921F03C2 +:101C600010925703109258031092590310925A037E +:101C70001092560310925503E5E3F3E0A5E2B3E0BA +:101C800011921192119211921D921D9283E0E535ED +:101C9000F807B1F70895CF92DF92EF92FF920F937A +:101CA0001F93CF93DF9320911F03222309F484C055 +:101CB0006B017C0180910E03811102C00E94FE0D18 +:101CC00005E513E0C7E0D0E0A7019601F801929185 +:101CD0008291729162918F010E94052E811131C013 +:101CE000FE01EE0FFF1FEE0FFF1FEB5CFC4F10829B +:101CF000118212821382DE01AA0FBB1FAB5DBC4FA3 +:101D000011961C921E92C730D105E9F021964481AC +:101D10005581668177814083518362837383148206 +:101D200015821682178212968D919C9113971196A7 +:101D30009C938E9313961C921E9212973496129631 +:101D4000E2CF219708F680915D0390915E030197A1 +:101D500097FD05C090935E0380935D0304C01092CD +:101D60005E0310925D0380915D0390915E0320916C +:101D70005B0330915C032817390724F010925C0351 +:101D800010925B03892BC1F4809171008D7F809349 +:101D90007100809190008F7780939000109257038C +:101DA000109258031092590310925A03109256033E +:101DB0001092550310921F03DF91CF911F910F9145 +:101DC000FF90EF90DF90CF9008951F920F920FB683 +:101DD0000F9211244F925F926F927F928F929F92F7 +:101DE000AF92BF92CF92DF92EF92FF922F933F93E9 +:101DF0004F935F936F937F938F939F93AF93BF9313 +:101E0000CF93DF93EF93FF9380911F03882309F40F +:101E10009BC1C0915D03D0915E031C161D060CF0A2 +:101E200093C140900F035090100360901103709085 +:101E3000120320E030E0A901C301B2010E94B02FDB +:101E400018160CF065C0C130D10509F452C080915C +:101E50005B0390915C03BE010E9482317C019093F0 +:101E60005C0380935B038090210390902203A090F9 +:101E70002303B090240320E030E040E85FE3C50195 +:101E8000B4010E94A12D60932103709322038093DB +:101E9000230390932403F701EE0FFF1FEE0FFF1FA4 +:101EA000EB5CFC4FA301920160817181828193817F +:101EB0000E94092E20E030E040E05EE30E94B42F53 +:101EC0009B01AC01C501B4010E94B02F18168CF41F +:101ED000C7010196BE010E94823190935C038093FA +:101EE0005B0310922103109222031092230310929D +:101EF0002403E0915B03F0915C03EE0FFF1FEE0FF4 +:101F0000FF1FEB5CFC4F6081718182819381D0C0A7 +:101F1000C0905703D0905803E0905903F0905A03B3 +:101F200020E030E0A901C701B6010E94052E2197EB +:101F3000882309F4A2C0FE01EE0FFF1FEE0FFF1F62 +:101F4000EB5CFC4F80809180A280B380A50194015E +:101F5000C701B6010E94052E87FF31C0A50194017B +:101F600060E070E08CED93EC0E94092E20E030E000 +:101F700040E451E40E94092E20E030E040E05FE3BD +:101F80000E94B42F9B01AC0160E070E080E090E41F +:101F90000E9417309B01AC01C501B4010E94B42F0F +:101FA0009B01AC01C701B6010E94052E87FF07C047 +:101FB000A701960160E070E08CED93E439C0A501C3 +:101FC0009401C701B6010E94B02F18160CF055C03D +:101FD000A501940160E070E08CED93E40E94092E6D +:101FE00020E030E040E451E40E94092E20E030E09F +:101FF00040E05FE30E94B42F9B01AC0160E070E021 +:1020000080E090E40E9417309B01AC01C501B4014F +:102010000E94B42F9B01AC01C701B6010E94B02FF2 +:1020200018165CF5A701960160E070E08CED93EC6A +:102030000E94092E20E030E040E451E40E94092E85 +:1020400020E030E040E05FE30E94B42F9B01AC0150 +:1020500060E070E080E090E40E9417309B01AC01EA +:10206000C701B6010E94B42F6093570370935803C1 +:102070008093590390935A0313C0FE01EE0FFF1F84 +:10208000EE0FFF1FEB5CFC4F80819181A281B38139 +:102090008093570390935803A0935903B0935A0326 +:1020A00060915703709158038091590390915A039E +:1020B00020910C0330910D032F3F4FEF340731F087 +:1020C0002F5F3F4F30930D0320930C030E940C139E +:1020D0006B017C0120E034E244EF51E40E94052EC4 +:1020E00087FF08C086EFC82E88E2D82E84EFE82E3E +:1020F00081E4F82E20E030E040E051E4C701B60171 +:102100000E94B42F9B01AC0160E074E284E79BE481 +:102110000E94092E6B017C010E94712E7093970022 +:102120006093960020910A0230910B0240910C02BC +:1021300050910D02C701B6010E94B42F0E94712E6A +:10214000709399006093980080912003882309F48C +:1021500033C1C0901B03D0901C03E0901D03F0908E +:102160001E0320E030E0A901C701B6010E94B02F94 +:102170001816D4F580910C0390910D038F3F2FEF2B +:10218000920729F0019690930D0380930C03C701E9 +:10219000B6010E940C1320E030E040E051E40E94C0 +:1021A000B42F9B01AC0160E074E284E79BE40E94E1 +:1021B000092E6B017C010E94712E70939700609331 +:1021C000960020910A0230910B0240910C0250912E +:1021D0000D02C701B6010E94B42F0E94712E7093A8 +:1021E00099006093980008C0109297001092960092 +:1021F0001092990010929800609115037091160347 +:102200006F5F7F4F709316036093150320919600C4 +:102210003091970080E090E0232BF1F0C091960080 +:10222000D09197000E94A22E6B017C01BE0180E03C +:1022300090E00E94A22E9B01AC0160911703709167 +:1022400018038091190390911A030E94092E20E02F +:102250003FEF4FE757E410C00E94A22E6B017C01B4 +:1022600020E030EE4FEF54E46091170370911803B3 +:102270008091190390911A030E94B42F9B01AC0125 +:10228000C701B6010E94B02F87FD96C0809113034D +:102290008F5F8093130390E02091D8033091D9038E +:1022A00082179307A0F08091E303882319F010921E +:1022B00013030DC0809171008D7F80937100809118 +:1022C00090008F7780939000109220037DC08091C2 +:1022D0001403C0911303811128C0C090DD03D09076 +:1022E000DE03E090DF03F090E00320E030E0A9019E +:1022F000C701B6010E94B02F1816BCF481E080938C +:10230000140310921B0310921C0310921D031092D1 +:102310001E03C0921703D0921803E0921903F092A3 +:102320001A03C150C093130343C0109214031092B8 +:102330000D0310920C03E091DA03F091DB0348E007 +:10234000C49FE00DF11D112480819181A281B38190 +:1023500080931B0390931C03A0931D03B0931E0353 +:1023600020E030E040E85EE36481758186819781FA +:102370000E94B42F6B017C0120E030E048EC52E475 +:1023800060910E0270910F028091100290911102E3 +:102390000E94092E9B01AC01C701B6010E94B42F17 +:1023A00060931703709318038093190390931A0393 +:1023B00010921603109215038091DC0380FD04C077 +:1023C0001092200310921F03FF91EF91DF91CF91A4 +:1023D000BF91AF919F918F917F916F915F914F913D +:1023E0003F912F91FF90EF90DF90CF90BF90AF90F3 +:1023F0009F908F907F906F905F904F900F900FBE47 +:102400000F901F901895CF92DF92EF92FF92CF938B +:10241000DF936B017C01EA0180910E03811102C000 +:102420000E94FE0D8091DC0380FF46C080915D0319 +:1024300090915E0308970CF03FC0809171008D7FF2 +:10244000809371008091200381110E94180E81E019 +:1024500080931F0310920D0310920C0320E030E0D4 +:10246000A901C701B6010E94B02F1816DCF48091B3 +:102470005D0390915E03FC01EE0FFF1FEE0FFF1F47 +:10248000EB5CFC4FC082D182E282F382FC01EE0F52 +:10249000FF1FEB5DFC4FD183C083019690935E03D9 +:1024A00080935D03809171008260809371008091C0 +:1024B0009000806880939000DF91CF91FF90EF9023 +:1024C000DF90CF9008958F929F92AF92BF92CF925C +:1024D000DF92EF92FF920F931F93CF93DF93EC0164 +:1024E0007B01D42E4801590180910E03811102C055 +:1024F0000E94FE0D8091DC0380FF6BC08091710013 +:102500008D7F8093710080911F0381110E94180EAE +:1025100081E080932003D093DB03C093DA03F09231 +:10252000D903E092D803D092E3038092DD03909226 +:10253000DE03A092DF03B092E00310922103109219 +:102540002203109223031092240310921303888114 +:102550009981AA81BB8180931B0390931C03A09354 +:102560001D03B0931E0320E030E040E85EE36C8181 +:102570007D818E819F810E94B42F6B017C0120E0C0 +:1025800030E048EC52E460910E0270910F028091AD +:102590001002909111020E94092E9B01AC01C7010B +:1025A000B6010E94B42F60931703709318038093B1 +:1025B000190390931A031092160310921503809139 +:1025C0007100826080937100809190008068809398 +:1025D0009000DF91CF911F910F91FF90EF90DF90CE +:1025E000CF90BF90AF909F908F90089580915F03A0 +:1025F00090E0019666E070E00E94823180935F0374 +:10260000089580915F0390E0019766E070E00E947A +:10261000823180935F0308958F929F92AF92BF9211 +:10262000CF92DF92EF92FF920F931F93CF93DF939E +:102630006B017C01C0910C03D0910D03BE0180E0C1 +:1026400090E00E94A22E4B015C01A701960160E080 +:1026500070E08CE594E40E94092E9B01AC01C50159 +:10266000B4010E94B42F0E94762E20915F03233084 +:1026700009F473C028F4222351F02130E9F02CC171 +:10268000243009F4A0C0253009F4E0C025C180E061 +:1026900090E0A0E0BFE380930A0290930B02A09326 +:1026A0000C02B0930D0210920F03109210031092BF +:1026B00011031092120310C110920F031092100315 +:1026C00010921103109212036431710540F46A30C4 +:1026D000710560F520E030E040E85EE32BC0693C26 +:1026E000710508F0AAC080E090E00E94A22E20E0D0 +:1026F00030E040EA51E40E94A02D20E030E044E3C5 +:1027000053E40E94092E9B01AC010E94B42F20E0EB +:1027100030E040E05EE30E94B42F9B01AC0160E03A +:1027200070E080E09EE30E94A02D44C020E030E0F5 +:1027300040E05FE3C701B6010E94B42F6B017C014A +:1027400080E090E0A0E0BEE380930A0290930B0249 +:10275000A0930C02B0930D02BFC010920F03109211 +:10276000100310921103109212034AE0469F900149 +:10277000479F300D1124C90168EB7BE00E946E3148 +:10278000BC016C5D754077FF03C07195619571095F +:10279000882777FD8095982F0E94A42E2EE333EC96 +:1027A0004EE259E30E94B42F20E030E040EC5EE3BB +:1027B0000E94A12D60930A0270930B0280930C0279 +:1027C00090930D0289C010920F0310921003109283 +:1027D000110310921203CE0183709927892BE1F027 +:1027E000BE016170772780E090E00E94A22E20E079 +:1027F00030E040E05EE30E94B42F20E030E040E4AF +:102800005FE30E94A12D60930A0270930B028093F4 +:102810000C0290930D020CC080E090E0A0E0BFE3BA +:1028200080930A0290930B02A0930C02B0930D02C6 +:10283000C770DD27CD2B09F04FC010920A0210920D +:102840000B0210920C0210920D0246C010920F0360 +:1028500010921003109211031092120300E010E086 +:1028600020E03FE300930A0210930B0220930C0236 +:1028700030930D026739710578F180E090E00E9495 +:10288000A22E20E030E047E153E40E94A02D20E09A +:1028900030E04AE754E40E94092E20E030E048E4AA +:1028A00052E40E94B42F20E030E040EA51E40E945C +:1028B000E62E0E94712E660F771F660F771FFB01B1 +:1028C000E357FD4F2081318142815381C701B60119 +:1028D0000E94B42F6B017C01C701B601DF91CF913B +:1028E0001F910F91FF90EF90DF90CF90BF90AF902E +:1028F0009F908F900895809168030895CF93DF9300 +:1029000000D01F92CDB7DEB79C018091E8038430E0 +:1029100019F593E099833B832A839093E9008FEF25 +:102920009091E800815095FD06C095ED9A95F1F7DC +:1029300000008111F5CF8091E80085FF0DC040E0D7 +:1029400050E063E070E0CE0101960E94B7168091DE +:10295000E8008E778093E8000F900F900F90DF9142 +:10296000CF910895CF93DF9300D01F92CDB7DEB7FC +:102970002091E803243021F522E029839B838A8378 +:1029800083E08093E9008FEF9091E800815095FDFE +:1029900006C095ED9A95F1F700008111F5CF809171 +:1029A000E80085FF0DC040E050E063E070E0CE013C +:1029B00001960E94B7168091E8008E778093E80018 +:1029C0000F900F900F90DF91CF9108952091E80321 +:1029D0002430F1F422E02093E9002FEF3091E80059 +:1029E000215035FD06C035ED3A95F1F70000211173 +:1029F000F5CF2091E80025FF0BC040E050E065E0F6 +:102A000070E00E94B7168091E8008E778093E8000E +:102A10000895CF93DF932091E803243039F521E026 +:102A20002093E9002FEF3091E800215035FD06C0DA +:102A300035ED3A95F1F700002111F5CF2091E8002E +:102A400025FF14C0EC0140E050E068E070E00E9417 +:102A5000B7168091E8008E778093E80088E0FE0149 +:102A6000A0E6B3E001900D928A95E1F7DF91CF9156 +:102A700008958091E703811109C00E944C180E94BB +:102A8000A9188091E20084608093E200089510927A +:102A9000E7030895089508950C94A72742E061EC98 +:102AA00081E00E94C61742E061EC82E00E94C617F6 +:102AB00042E061EC83E00C94C6178091EA03833016 +:102AC00009F453C030F4813071F0823009F48CC0C5 +:102AD00008958A3009F478C08B3009F45EC08930DB +:102AE00009F09AC020C08091E903813A09F094C0AE +:102AF0008091E800877F8093E8008091ED039091BA +:102B0000EE03892B21F468E080E693E003C060E0E7 +:102B100080E090E070E00E9402178091E8008B77DF +:102B20008093E80008958091E903813209F074C030 +:102B30008091ED039091EE03892B09F06DC0809197 +:102B4000E800877F8093E8008091E80082FD05C05F +:102B50008091E8038111F8CF5FC08091F1008093EC +:102B600068038091E8008B7753C08091E903813A34 +:102B700009F052C08091ED039091EE03892B09F08A +:102B80004BC08091E800877F8093E8008091E80047 +:102B900080FFFCCF80911C0236C08091E903813216 +:102BA000D9F58091ED039091EE03892BA9F58091E1 +:102BB000E800877F8093E8000E94FB178091EB0379 +:102BC00080931C020C946C218091E903813221F5E1 +:102BD0008091E800877F8093E8000E94FB17809136 +:102BE000EC038093690308958091E903813AA1F48D +:102BF0008091E800877F8093E8008091E80080FF63 +:102C0000FCCF809169038093F1008091E8008E777A +:102C10008093E8000C94FB17089584B7877F84BFE6 +:102C200088E10FB6F89480936000109260000FBEA8 +:102C300090E080E80FB6F894809361009093610073 +:102C40000FBE0E949E1B0E944C180E94A9188091E2 +:102C5000E20084608093E20078940E942F1B0E941F +:102C6000A01B82E192E00E944A1B8091E80385301C +:102C700069F40E9461278091E6038823B1F30E94E2 +:102C80008F27882391F30E94A116EFCF0E94A81BE3 +:102C9000ECCF292F332723303105C9F064F42130DC +:102CA000310581F02230310509F043C084E590E020 +:102CB00020ED39E042C021323105F1F022323105F8 +:102CC00041F137C082E190E024E23AE036C0992732 +:102CD0008130910541F08230910541F0892B49F511 +:102CE000ECECF9E005C0EEE9F9E002C0E2E7F9E05A +:102CF000849190E09F0121C06330D8F4E62FF0E08A +:102D0000EE0FFF1FEA51FD4F2081318189E090E0F5 +:102D100014C0633070F470E0FB01EE0FFF1FE0524F +:102D2000FD4F20813181FB01E352FD4F808190E016 +:102D300004C080E090E020E030E0FA01318320839D +:102D4000089580E189BD82E189BD09B400FEFDCF0F +:102D50008091D8008F7D8093D8008091E0008260C0 +:102D60008093E0008091E00081FDFCCF0895CF9238 +:102D7000DF92EF92FF920F931F93CF93DF93EC01BB +:102D80008B016A010E941A18811133C0C114D10449 +:102D900039F0F60180819181081B190BC80FD91FEA +:102DA000E12CF12C0115110519F18091E80085FD48 +:102DB00016C08091E8008E778093E800C114D1049A +:102DC00049F0F60180819181E80EF91EF182E082DE +:102DD00085E00FC00E941A18882321F30AC0899148 +:102DE0008093F10001501109FFEFEF1AFF0ADACFCB +:102DF00080E0DF91CF911F910F91FF90EF90DF90D6 +:102E0000CF9008952091EF033091F00326173707F4 +:102E100048F06115710539F42091E8002E77209370 +:102E2000E80001C0B90140E061157105A9F12091E8 +:102E3000E803222309F443C0253009F442C020915D +:102E4000E80023FD40C02091E80022FD32C020911F +:102E5000E80020FFE9CF4091F3002091F20030E03C +:102E6000342BFC01CF016115710559F02830310573 +:102E700040F481918093F100615071092F5F3F4FC1 +:102E8000F1CF41E02830310509F040E02091E80021 +:102E90002E772093E800C8CF4111C9CF0AC0809196 +:102EA000E803882361F0853061F08091E80083FDBC +:102EB0000AC08091E80082FFF2CF80E0089582E0AE +:102EC000089583E0089581E008952091EF03309103 +:102ED000F0032617370748F06115710539F4209182 +:102EE000E8002E772093E80001C0B901FC0120E042 +:102EF0006115710591F18091E803882309F440C0C0 +:102F0000853009F43FC08091E80083FD3DC0809189 +:102F1000E80082FD2FC08091E80080FFE9CF20917A +:102F2000F3008091F20090E0922B6115710559F049 +:102F30008830910540F424912093F100319661503E +:102F400071090196F2CF21E0089709F020E0809105 +:102F5000E8008E778093E800CBCF2111CCCF0AC058 +:102F60008091E803882361F0853061F08091E8006A +:102F700083FD0AC08091E80082FFF2CF80E00895CF +:102F800082E0089583E0089581E00895982F9730B6 +:102F900058F59093E900981739F07091EC00209162 +:102FA000ED005091F00003C0242F762F50E021FF58 +:102FB00019C03091EB003E7F3093EB003091ED0073 +:102FC0003D7F3093ED003091EB0031603093EB00AA +:102FD0007093EC002093ED005093F0002091EE00F0 +:102FE00027FF07C09F5FD3CF8F708093E90081E0F8 +:102FF000089580E008958091E90387FF11C08091D2 +:10300000E80082FD05C08091E8038111F8CF11C06E +:103010008091E8008B770BC08091E803882349F00A +:103020008091E80080FFF8CF8091E8008E77809350 +:10303000E80008952091E4003091E50095E6409184 +:10304000EC00842F817040FF22C08091E80080FD59 +:103050001CC08091E803882391F0853091F0809125 +:10306000EB0085FD10C04091E4005091E50042174F +:10307000530729F39A01915011F784E0089582E0F3 +:10308000089583E0089581E0089580E008954091D7 +:10309000E80042FFDECF08950E94BA180E94C218CD +:1030A000E0EEF0E0808181608083E8EDF0E08081F7 +:1030B0008F77808319BCA7EDB0E08C918E7F8C93C5 +:1030C00080818F7E80831092E70308950F931F9372 +:1030D000CF93DF930E94BA180E94C218C8EDD0E0C7 +:1030E00088818F77888388818068888388818F7DB5 +:1030F000888319BC1092E8031092E4031092E6034F +:103100001092E50300EE10E0F80180818B7F808350 +:1031100088818160888342E060E080E00E94C61779 +:10312000E1EEF0E080818E7F8083E2EEF0E080814E +:1031300081608083808188608083F80180818E7FB8 +:103140008083888180618883DF91CF911F910F9167 +:103150000895E8EDF0E080818F7E8083E7EDF0E078 +:1031600080818160808384E082BF81E08093E70377 +:103170000C946618E8EDF0E080818E7F80831092D9 +:10318000E20008951092DA001092E10008951F9273 +:103190000F920FB60F9211242F933F934F935F938B +:1031A0006F937F938F939F93AF93BF93EF93FF930F +:1031B0008091E10082FF0BC08091E20082FF07C096 +:1031C0008091E1008B7F8093E1000E942E1B809113 +:1031D000DA0080FF1FC08091D80080FF1BC0809163 +:1031E000DA008E7F8093DA008091D90080FF0DC0D5 +:1031F00080E189BD82E189BD09B400FEFDCF81E097 +:103200008093E8030E94391505C019BC1092E803A9 +:103210000E9447158091E10080FF19C08091E20073 +:1032200080FF15C08091E2008E7F8093E200809144 +:10323000E20080618093E2008091D80080628093F8 +:10324000D80019BC85E08093E8030E944B1580915B +:10325000E10084FF30C08091E20084FF2CC080E157 +:1032600089BD82E189BD09B400FEFDCF8091D800FF +:103270008F7D8093D8008091E1008F7E8093E10064 +:103280008091E2008F7E8093E2008091E200816075 +:103290008093E2008091E403882311F084E007C06A +:1032A0008091E30087FD02C081E001C083E080934C +:1032B000E8030E944C158091E10083FF29C08091B2 +:1032C000E20083FF25C08091E100877F8093E100C9 +:1032D00082E08093E8031092E4038091E1008E7F06 +:1032E0008093E1008091E2008E7F8093E2008091E4 +:1032F000E20080618093E20042E060E080E00E94B2 +:10330000C6178091F00088608093F0000E944A15F3 +:10331000FF91EF91BF91AF919F918F917F916F91AD +:103320005F914F913F912F910F900FBE0F901F9083 +:1033300018951F920F920FB60F9211242F933F935F +:103340004F935F936F937F938F939F93AF93BF93AD +:10335000CF93DF93EF93FF93C091E900CF708091FB +:10336000EC00D82FD17080FDD0E81092E900809158 +:10337000F000877F8093F00078940E94DD1910920E +:10338000E9008091F00088608093F000CD2BCF7031 +:10339000C093E900FF91EF91DF91CF91BF91AF9181 +:1033A0009F918F917F916F915F914F913F912F915D +:1033B0000F900FBE0F901F9018951F93CF93DF9320 +:1033C000CDB7DEB7AA970FB6F894DEBF0FBECDBF5C +:1033D000E9EEF3E088E08E0F9091F10091938E1367 +:1033E000FBCF0E945D158091E80083FF1FC1809193 +:1033F000E9039091EA03492F50E04A30510508F063 +:1034000015C1FA01EE59FF4F0C949631803881F0C6 +:10341000823809F00BC18091ED038F708093E90031 +:103420008091EB0085FB882780F91092E90006C0A7 +:103430008091E5039091E603911182609091E800FC +:10344000977F9093E8008093F1001092F100C8C03C +:10345000282F2D7F09F0EAC0882319F0823061F00F +:10346000E5C08091EB03813009F0E0C0933009F0B2 +:1034700080E08093E6032BC08091EB03811127C08D +:103480008091ED038F7009F4D1C08093E900209101 +:10349000EB0020FF1CC0933021F48091EB00806290 +:1034A00014C09091EB0090619093EB0021E030E02C +:1034B000A90102C0440F551F8A95E2F74093EA0024 +:1034C0001092EA008091EB0088608093EB001092EC +:1034D000E9008091E800877F86C08111A7C0109124 +:1034E000EB031F778091E3008078812B8093E300CA +:1034F0008091E800877F8093E8000E94FB1780910D +:10350000E80080FFFCCF8091E30080688093E300B7 +:10351000111102C082E001C083E08093E80386C0FD +:103520008058823008F082C08091EB039091EC03C8 +:103530008C3D53E0950779F583E08A838AE289839D +:103540004FB7F894DE01139620E03EE051E2E32FFE +:10355000F0E050935700E49120FF03C0E295EF7034 +:103560003F5FEF708E2F90E0EA3010F0C79601C0F9 +:10357000C0968D939D932F5F243149F74FBF809163 +:10358000E800877F8093E8006AE270E0CE01019650 +:103590000E94021714C0AE014F5F5F4F6091ED03B0 +:1035A0000E944916BC01009709F440C09091E800C0 +:1035B000977F9093E80089819A810E946517809196 +:1035C000E8008B778093E80031C0803879F58091EE +:1035D000E800877F8093E8008091E4038093F10006 +:1035E0008091E8008E778093E8000E94FB171EC050 +:1035F00081111CC09091EB039230C0F48091E800DF +:10360000877F8093E8009093E4030E94FB178091EA +:10361000E403811106C08091E30087FD02C081E0D0 +:1036200001C084E08093E8030E944E158091E80079 +:1036300083FF0AC08091E800877F8093E800809133 +:10364000EB0080628093EB00AA960FB6F894DEBF81 +:103650000FBECDBFDF91CF911F9108950895CF93F5 +:103660008091E8038823A1F0C091E900CF70909188 +:10367000EC00892F817090FD80E8C82B1092E90042 +:103680008091E80083FD0E94DD19CF70C093E900AE +:10369000CF91089590936F0380936E030895E09106 +:1036A0006E03F0916F03309721F00190F081E02DCF +:1036B000099480E00895E0916E03F0916F033097D4 +:1036C00021F00280F381E02D09940895E0916E03CA +:1036D000F0916F03309721F00480F581E02D09947B +:1036E000089520916C0330916D038217930771F058 +:1036F00090936D0380936C03E0916E03F0916F03E0 +:10370000309721F00680F781E02D099408952091EB +:103710006A0330916B038217930771F090936B03E8 +:1037200080936A03E0916E03F0916F03309721F06C +:103730000084F185E02D0994089508950C949D1B53 +:103740000E94DB270E94D20B0E9461280C94092D55 +:103750004F925F927F928F929F92AF92BF92CF9241 +:10376000DF92EF92FF920F931F93CF93DF93CDB72A +:10377000DEB72A970FB6F894DEBF0FBECDBF0E940A +:10378000AD0C91E7C92E93E0D92E00E010E0AA24F9 +:10379000A394B12C702E802F0E94E60D4C01F601EF +:1037A000419051906F014826592641145104B1F4BB +:1037B0000F5F1F4F0530110569F78FEF89838A83EB +:1037C0001B820E94E4278160782F9D838C8349812E +:1037D0005A816B818D810E94611C3AC08091C70320 +:1037E00081FD0E94EF0D20E030E07501022E02C045 +:1037F000EE0CFF1C0A94E2F7C70184219521892B66 +:1038000009F12E837F828E209F2091E0892809F480 +:1038100090E098870E94E4278160782F9A878987B3 +:103820004E815F8168858A850E94611C000F111F8F +:10383000F801EF58FC4F80819181E826F926F1824A +:10384000E08206C02F5F3F4F2C30310571F6B0CFBC +:103850000E94482A109170030E944F1B1817D9F03C +:103860000E944F1B809370032A960FB6F894DEBF18 +:103870000FBECDBFDF91CF911F910F91FF90EF90C1 +:10388000DF90CF90BF90AF909F908F907F905F9090 +:103890004F900C940A0B2A960FB6F894DEBF0FBE19 +:1038A000CDBFDF91CF911F910F91FF90EF90DF90EF +:1038B000CF90BF90AF909F908F907F905F904F90F0 +:1038C0000895CF93DF93CDB7DEB72B970FB6F8945B +:1038D000DEBF0FBECDBF4F83588769877A878B873E +:1038E000DE01119686E0FD0111928A95E9F785E0E7 +:1038F000FE01379601900D928A95E1F749815A8130 +:103900006B817C818D819E810E9406242B960FB64F +:10391000F894DEBF0FBECDBFDF91CF910895CF9356 +:10392000882309F4C2C0C82F823859F40E944F1B63 +:1039300081FDBBC089E30E94AF260E94322789E344 +:103940000CC0833879F40E944F1B80FDAEC083E524 +:103950000E94AF260E94322783E50E94CC26CF9199 +:103960000C943227843859F40E944F1B82FD9DC06D +:1039700087E40E94AF260E94322787E4EECF8CEFC7 +:103980008C0F813A48F48C2F0E94712C81118DC0CC +:103990008C2F0E94AF26E3CF80E28C0F883048F452 +:1039A000C77081E001C0880FCA95EAF70E94EB2634 +:1039B000D6CF8BE58C0F833078F4C53A29F0C63A20 +:1039C00031F083E890E005C081E890E002C082E831 +:1039D00090E0CF910C94711B88E58C0F833108F037 +:1039E00064C0C83A39F1C93A41F1CA3A49F1CB3A0F +:1039F00051F1CC3A59F1CD3A61F1C03B69F1CE3A7F +:103A000071F1CF3A79F1C13B81F1C23B89F1C33BFE +:103A100091F1C43B99F1C53BA1F1C63BA9F1C73B6C +:103A2000B1F1C83BB9F1C93BC1F1CA3BC9F180E072 +:103A300090E038C082EE90E035C089EE90E032C070 +:103A40008AEE90E02FC085EB90E02CC086EB90E0F2 +:103A500029C087EB90E026C08CEC90E023C08DEC71 +:103A600090E020C083E891E01DC08AE891E01AC090 +:103A700082E991E017C084E991E014C081E292E00C +:103A800011C083E292E00EC084E292E00BC085E2B6 +:103A900092E008C086E292E005C087E292E002C0B0 +:103AA0008AE292E0CF910C94871BCF9108958823EE +:103AB00009F44BC0823859F40E944F1B81FF45C066 +:103AC00089E30E94AF260E94322789E30CC0833825 +:103AD00071F40E944F1B80FF38C083E50E94AF261F +:103AE0000E94322783E50E94CC260C94322784382A +:103AF00059F40E944F1B82FF28C087E40E94AF2622 +:103B00000E94322787E4EFCF9CEF980F913A58F349 +:103B100090E2980F983050F4877091E001C0990FAF +:103B20008A95EAF7892F0E94F126DFCF9BE5980F4F +:103B3000933020F480E090E00C94711B885A83311C +:103B400020F480E090E00C94871B0895882321F0F6 +:103B50000E94EB260C9432270895882321F00E94BE +:103B6000F1260C9432270895BF92CF92DF92EF9204 +:103B7000FF920F931F93CF93DF9300D000D000D01C +:103B8000CDB7DEB725E0FC01DE01119601900D9264 +:103B90002A95E1F7FC01D0801181028125812295CF +:103BA0002F7043815481452B09F472C31F3F21F4C8 +:103BB000FFEFDF1609F46CC37C012E830E94D3074C +:103BC000D9821A8369817A81802F0E94AB26182FAF +:103BD000B92E0E9460260E9427252E81002319F00D +:103BE0000E9408272E81EB2DE295EF70F0E0E4595A +:103BF000FF4F0C9496318B2D807F9B2D9F70F92E5B +:103C0000882319F0F29480EFF822002389F0FF2036 +:103C100009F47CC280E2810F883020F48F2D0E944D +:103C2000EB2603C08F2D0E94FB260E9432276EC216 +:103C3000812F0E94571DFF2009F42AC3105E8F2D8B +:103C4000183018F40E94F12602C00E94012726961F +:103C50000FB6F894DEBF0FBECDBFDF91CF911F919D +:103C60000F91FF90EF90DF90CF90BF900C94322790 +:103C70008B2D807F9B2D9F70803211F4892F03C084 +:103C8000892F8295807F112319F0113011F12BC0FB +:103C90000023A9F0222389F1213079F526960FB669 +:103CA000F894DEBF0FBECDBFDF91CF911F910F9172 +:103CB000FF90EF90DF90CF90BF900C941B272223B2 +:103CC00019F0213009F4E4C28E830E941E278E81F0 +:103CD0009BC1002321F0263008F0DAC20EC0253047 +:103CE00008F0D6C291C10023C9F0222331F0F701B8 +:103CF000958190FF0BC29F70958326960FB6F8941E +:103D0000DEBF0FBECDBFDF91CF911F910F91FF900E +:103D1000EF90DF90CF90BF900C94A61D222309F462 +:103D200073C109C22B2D26952695237030E02115ED +:103D3000310521F021303105D1F0AAC2002321F054 +:103D4000812F9B2D937002C080E090E026960FB6E5 +:103D5000F894DEBF0FBECDBFDF91CF911F910F91C1 +:103D6000FF90EF90DF90CF90BF900C94711B0023D9 +:103D700021F0812F9B2D937002C080E090E0269669 +:103D80000FB6F894DEBF0FBECDBFDF91CF911F916C +:103D90000F91FF90EF90DF90CF90BF900C94871B16 +:103DA000812F002319F00E94502902C00E94B829D7 +:103DB00026960FB6F894DEBF0FBECDBFDF91CF9130 +:103DC0001F910F91FF90EF90DF90CF90BF900C94D8 +:103DD0003D2A8B2D837009F07BC0011159C2812FC0 +:103DE000829586958770880F880F912F9F70C92EB6 +:103DF000D12CE12CF12C082E04C0CC0CDD1CEE1CC7 +:103E0000FF1C0A94D2F714FF12C04FE050E060E0AC +:103E100070E004C0440F551F661F771F8A95D2F7C4 +:103E2000CB01BA01609570958095909503C060E0D4 +:103E300070E0CB012B2D269526952370422F50E064 +:103E400042305105D9F04330510569F16C297D2983 +:103E50008E299F294130510551F126960FB6F894CD +:103E6000DEBF0FBECDBFDF91CF911F910F91FF90AD +:103E7000EF90DF90CF90BF900C944E256C297D2958 +:103E80008E299F2926960FB6F894DEBF0FBECDBFB0 +:103E9000DF91CF911F910F91FF90EF90DF90CF9026 +:103EA000BF900C946A250E944E25C701B601269644 +:103EB0000FB6F894DEBF0FBECDBFDF91CF911F913B +:103EC0000F91FF90EF90DF90CF90BF900C94322530 +:103ED000002319F08B2D817001C08695882309F489 +:103EE000D7C1812F829586958770880F880F912F73 +:103EF0009F70C92ED12CE12CF12C082E04C0CC0CC3 +:103F0000DD1CEE1CFF1C0A94D2F714FF12C04FE018 +:103F100050E060E070E004C0440F551F661F771F3B +:103F20008A95D2F7CB01BA016095709580959095EE +:103F300003C060E070E0CB012B2D26952695237001 +:103F4000422F50E042305105D9F04330510569F11C +:103F50006C297D298E299F294130510551F12696E2 +:103F60000FB6F894DEBF0FBECDBFDF91CF911F918A +:103F70000F91FF90EF90DF90CF90BF900C94282688 +:103F80006C297D298E299F2926960FB6F894DEBFCD +:103F90000FBECDBFDF91CF911F910F91FF90EF909A +:103FA000DF90CF90BF900C9444260E942826C70132 +:103FB000B60126960FB6F894DEBF0FBECDBFDF91D7 +:103FC000CF911F910F91FF90EF90DF90CF90BF9016 +:103FD0000C940C26103F49F118F4103E48F491C09F +:103FE000123F09F453C0E8F1133F09F464C089C0DB +:103FF0001F708B2D8F71002321F00E94A525812F2A +:104000007CCE0E94C625812F26960FB6F894DEBF7F +:104010000FBECDBFDF91CF911F910F91FF90EF9019 +:10402000DF90CF90BF900C94AD1D0023B1F02530F0 +:1040300008F02EC18B2D8F7126960FB6F894DEBF37 +:104040000FBECDBFDF91CF911F910F91FF90EF90E9 +:10405000DF90CF90BF900C94EB25263008F018C16C +:10406000E9CF0023A9F08B2D8F7126960FB6F89417 +:10407000DEBF0FBECDBFDF91CF911F910F91FF909B +:10408000EF90DF90CF90BF900C94A525002359F3BB +:104090008B2D8F7126960FB6F894DEBF0FBECDBF65 +:1040A000DF91CF911F910F91FF90EF90DF90CF9014 +:1040B000BF900C94C625002399F08B2D8F71269606 :1040C0000FB6F894DEBF0FBECDBFDF91CF911F9129 -:1040D0000F91FF90EF90DF90CF90BF900C947525DB -:1040E0000023A9F0222309F4ADCF812F26960FB625 -:1040F000F894DEBF0FBECDBFDF91CF911F910F911E -:10410000FF90EF90DF90CF90BF900C947E1C222305 -:1041100009F4ADCF812F26960FB6F894DEBF0FBEFF -:10412000CDBFDF91CF911F910F91FF90EF90DF9066 -:10413000CF90BF900C94461D4B2D4F70612FC7013F -:104140000E942F0626960FB6F894DEBF0FBECDBF95 -:10415000DF91CF911F910F91FF90EF90DF90CF9063 -:10416000BF900C949924011182C09B2D9F70492F00 -:1041700050E04230510509F443C0C4F441155105E3 -:1041800071F14130510509F072C026960FB6F894CE -:10419000DEBF0FBECDBFDF91CF911F910F91FF907A -:1041A000EF90DF90CF90BF900C94202D43305105BD -:1041B000C1F14430510509F05AC0812F26960FB63F -:1041C000F894DEBF0FBECDBFDF91CF911F910F914D -:1041D000FF90EF90DF90CF90BF900C94722D2696B9 +:1040D0000F91FF90EF90DF90CF90BF900C949025C0 +:1040E00026960FB6F894DEBF0FBECDBFDF91CF91FD +:1040F0001F910F91FF90EF90DF90CF90BF900C94A5 +:1041000086250023A9F0222309F4ADCF812F26961E +:104110000FB6F894DEBF0FBECDBFDF91CF911F91D8 +:104120000F91FF90EF90DF90CF90BF900C948F1C79 +:10413000222309F4ADCF812F26960FB6F894DEBF67 +:104140000FBECDBFDF91CF911F910F91FF90EF90E8 +:10415000DF90CF90BF900C94571D4B2D4F70612F67 +:10416000C7010E940B0626960FB6F894DEBF0FBE5D +:10417000CDBFDF91CF911F910F91FF90EF90DF9016 +:10418000CF90BF900C94AA24011182C09B2D9F70E8 +:10419000492F50E04230510509F443C0C4F44115A1 +:1041A000510571F14130510509F072C026960FB6E4 +:1041B000F894DEBF0FBECDBFDF91CF911F910F915D +:1041C000FF90EF90DF90CF90BF900C94312D433053 +:1041D0005105C1F14430510509F05AC0812F26968E :1041E0000FB6F894DEBF0FBECDBFDF91CF911F9108 -:1041F0000F91FF90EF90DF90CF90BF900C94092D1E +:1041F0000F91FF90EF90DF90CF90BF900C94832DA4 :1042000026960FB6F894DEBF0FBECDBFDF91CF91DB :104210001F910F91FF90EF90DF90CF90BF900C9483 -:104220003C2D26960FB6F894DEBF0FBECDBFDF91B2 +:104220001A2D26960FB6F894DEBF0FBECDBFDF91D4 :10423000CF911F910F91FF90EF90DF90CF90BF90A3 -:104240000C944F2D4B2D4F70612FC70126960FB642 -:10425000F894DEBF0FBECDBFDF91CF911F910F91BC -:10426000FF90EF90DF90CF90BF900C94F9072696C7 +:104240000C944D2D26960FB6F894DEBF0FBECDBF51 +:10425000DF91CF911F910F91FF90EF90DF90CF9062 +:10426000BF900C94602D4B2D4F70612FC701269687 :104270000FB6F894DEBF0FBECDBFDF91CF911F9177 -:104280000F91FF90EF90DF90CF90BF9008950E9424 -:10429000F7260E9407270E94CC260E9421270E9411 -:1042A000DD2A0E942C2A80E090E00E94601B80E0C2 -:1042B00090E00C94761B0E94E7260C9447210E9404 -:1042C0008F26292F22952F7030E02C3031054CF4A9 -:1042D0002A3031056CF4225031092230310588F43E -:1042E00007C02C30310549F02F30310531F009C0BD -:1042F000803E48F0803F29F406C093FB882780F970 -:10430000089580E0089581E00895CF93DF9300D071 -:1043100000D01F92CDB7DEB70F900F900F900F9087 -:104320000F90DF91CF910895CF93DF9300D000D00D -:1043300000D0CDB7DEB726960FB6F894DEBF0FBE1D -:10434000CDBFDF91CF9108951F93CF93DF93C0919D -:104350002B0316E080912C03C81799F0D0E01C9F26 -:10436000F0011D9FF00D1124E35DFC4F4081518150 -:1043700062817381848195810E9494212196C77006 -:10438000E9CFDF91CF911F91089540915D03509146 -:104390005E0360915F03709160038091610390916F -:1043A00062030C9494218091620382958F7009F0CE -:1043B00054C080915F03882309F44FC080912B0380 -:1043C000A0912C0360915D0370915E0340916003A6 -:1043D00050916103B6E08A1709F43FC090E041159F -:1043E0005105C1F17F3F11F46F3FA1F1B89FF0017A -:1043F000B99FF00D1124E35DFC4F218172132AC097 -:104400002081621327C02281211124C0238134819D -:104410002417350710F421503109241B350B283C93 -:104420003105C0F4209162032F7020612093620354 -:1044300026E0289FF001299FF00D1124EE5CFC4F2F -:1044400080818F70806180838DE593E00E94A31D41 -:104450000C94A42101968770BECF0895CF92DF926D -:10446000EF92FF920F931F93CF93DF93CDB7DEB7F9 -:1044700062970FB6F894DEBF0FBECDBF8C0185E00A -:10448000F801DE011D9601900D928A95E1F7D801A1 -:104490004C9111965C91119712966C91129713960C -:1044A000CD90DC90149730915D0370915E03809104 -:1044B000600390916103009709F46BC17F3F19F489 -:1044C0003F3F09F466C1E0905F03EE2009F4C0C0ED -:1044D00020916203C816D90628F0F601E81BF90BF3 -:1044E000CF0104C0809590958C0D9D1DFF24F39401 -:1044F000883C910578F0F12C207F09F0C6C07C2D16 -:10450000D98AC88A89890E9485218DE593E00E9415 -:10451000A31DB1C0822F807F09F046C0751314C05F -:10452000341312C0611110C02F70206120936203F8 -:104530000E94C5218DE593E00E94A31D8091620336 -:10454000D80115968C932EC0CD2819F15F3F11F438 -:104550004F3FF9F0F62E61111CC080912B03209182 -:104560002C0336E0821709F45AC090E0389FF0011E -:10457000399FF00D1124E35DFC4F7181571306C084 -:104580007081471303C07281711103C00196877057 -:10459000E9CFF62E662309F418C180916203816089 -:1045A00080936203F12C11C1751308C0341306C047 -:1045B000611104C080916203D801C3C04D875E873A -:1045C0008D859E856A8B0E945F216A898823E1F12F -:1045D0006623D1F120916203822F82958F7090E043 -:1045E000029774F080915D0390915E0398878F83AA -:1045F0001986DB86CA862C87CE0107960E94A31DEA -:1046000086E0F801ADE5B3E001900D928A95E1F7FF -:104610000E94D3210E94C521FF24F394D6C04D8768 -:104620005E878D859E850E948F26292F22952F706B -:1046300030E0223031050CF0BCC09F7009F0B6C0EC -:10464000805E883008F4C1C0C8010E94A31DE4CF79 -:10465000C816D90608F453C0F601E81BF90BCF01C0 -:10466000883C910508F450C0F12C7C2DD98AC88A69 -:1046700089890E948521EDE5F3E086E0DF011D9246 -:104680008A95E9F70E94C521A0C0751314C03413A0 -:1046900012C0611110C080916203F8018583C801C6 -:1046A0000E94A31D86E0EDE5F3E0DF011D928A95EF -:1046B000E9F7FE2C8AC04D875E878D859E856A8BC3 -:1046C0000E945F216A89882309F4BECF662309F41A -:1046D000BBCF20916203822F82958F7090E002976A -:1046E0000CF48ECF80915D0390915E039A83898351 -:1046F0001B82DD82CC822E83CE0101967FCF8095F6 -:1047000090958C0D9D1DACCFF62E662309F49CCFA1 -:1047100075132EC034132CC02091620320FD1FC0DE -:10472000822F82958F70D9F0D80115962C9315970A -:104730008F3049F08F5F982F9295907F822F8F70E6 -:10474000892B15968C93C8010E94A31D86E0F80161 -:10475000ADE5B3E001900D928A95E1F793CF86E045 -:10476000F801ADE5B3E001900D928A95E1F72DC017 -:104770004D875E878D859E850E945F21811140CF88 -:1047800080916203816080936203C8010E94A31D2F -:104790001CC0662309F458CF4D875E878D859E85A2 -:1047A0000E945F21882309F44FCF2ACF811148CF7F -:1047B0000CC0243031050CF047CF9F7009F440CF76 -:1047C000F8019581907F09F03BCF8F2D62960FB64F -:1047D000F894DEBF0FBECDBFDF91CF911F910F9137 -:1047E000FF90EF90DF90CF9008951F93CF93DF93CA -:1047F000CDB7DEB72C970FB6F894DEBF0FBECDBF96 -:104800004F83588769877A878B879C87CE01079665 -:104810000E942E22882369F08F8198852A853B8506 -:10482000232BF1F19F3F09F063C08F3F09F060C077 -:1048300037C086E0FE013796DE01119601900D9299 -:104840008A95E1F76F817885EA85FB85309741F19C -:104850007F3F11F46F3F21F120912C0330E0C9011B -:1048600001968770992740912B0350E08417950794 -:1048700009F447C069837A83FD83EC8396E0929FB5 -:10488000D001939FB00D1124A35DBC4FFE01319662 -:1048900001900D929A95E1F780932C030E94A42138 -:1048A00016E080912B0390912C038917C1F1189F7A -:1048B000C0011124835D9C4F0E942E22882379F130 -:1048C000E0912B031E9FF0011124E35DFC4F40811A -:1048D000518162817381848195810E9494218091AC -:1048E0002B0390E001968770992780932B03D9CFF3 -:1048F0004F81588569857A858B859C850E94942196 -:10490000CFCF0E945B2110922C0310922B03EDE578 -:10491000F3E086E0DF011D928A95E9F7C1CF2C967E -:104920000FB6F894DEBF0FBECDBFDF91CF911F91C0 -:104930000895EF92FF920F931F93CF93DF938C0113 -:10494000009709F46CC0F12CEE24E394E801219661 -:10495000F8018491843740F4843008F051C08130EC -:1049600081F0823019F15BC0853709F444C0A8F1A9 -:104970009CE7980F903708F052C08F770E94461D31 -:1049800041C00E5F1F4FFE01C49180E28C0F883042 -:1049900048F4C7708E2D01C0880FCA95EAF70E94AF -:1049A000FA2614C08C2F0E947E1C2DC00E5F1F4F54 -:1049B000FE01C49180E28C0F883058F4C7708E2DB0 -:1049C00001C0880FCA95EAF70E9400270E9421279C -:1049D0001AC08C2F0E94461D16C00E5F1F4FFE018D -:1049E000C491CC2381F08FE99FE00197F1F700C0DB -:1049F0000000C150F6CF0E5F1F4FFE01F49003C0C0 -:104A00000E947E1C8E018F2D882309F49FCFEFE931 -:104A1000FFE03197F1F700C000008150F5CFDF9142 -:104A2000CF911F910F91FF90EF900895089560939B -:104A30006703709368038093690390936A030C94EF -:104A400047210F931F9300916703109168032091F2 -:104A5000690330916A03DC01CB01802B912BA22BDF -:104A6000B32B8093670390936803A0936903B0937B -:104A70006A031F910F910C9447210F931F9300918C -:104A80006703109168032091690330916A03DC0188 -:104A9000CB0180239123A223B323809367039093B8 -:104AA0006803A0936903B0936A031F910F910C945C -:104AB00047210F931F930091670310916803209182 -:104AC000690330916A03DC01CB0180279127A2277B -:104AD000B3278093670390936803A0936903B0930F -:104AE0006A031F910F910C94472110926303109257 -:104AF000640310926503109266030C94472141E011 -:104B000050E060E070E004C0440F551F661F771F3F -:104B10008A95D2F7409363035093640360936503CF -:104B2000709366030C94472141E050E060E070E030 -:104B300004C0440F551F661F771F8A95D2F78091D6 -:104B4000630390916403A0916503B0916603482BC1 -:104B5000592B6A2B7B2B4093630350936403609320 -:104B60006503709366030C94472141E050E060E0D8 -:104B700070E004C0440F551F661F771F8A95D2F757 -:104B80004095509560957095809163039091640372 -:104B9000A0916503B0916603482359236A237B23C0 -:104BA00040936303509364036093650370936603BB -:104BB0000C94472141E050E060E070E004C0440FF5 -:104BC000551F661F771F8A95D2F7809163039091D6 -:104BD0006403A0916503B0916603482759276A27AB -:104BE0007B27409363035093640360936503709342 -:104BF00066030C9447210F931F9300916303109158 -:104C000064032091650330916603DC01CB01802BA6 -:104C1000912BA22BB32B8093630390936403A093F7 -:104C20006503B09366031F910F910C9447210F9376 -:104C30001F930091630310916403209165033091E9 -:104C40006603DC01CB0180239123A223B32380934D -:104C5000630390936403A0936503B09366031F916D -:104C60000F910C9447210F931F93009163031091B0 -:104C700064032091650330916603DC01CB0180273A -:104C80009127A227B3278093630390936403A09393 -:104C90006503B09366031F910F910C94472108950B -:104CA000CF92DF92EF92FF920F931F93CF93DF93F8 -:104CB0008C01C0906703D0906803E0906903F09086 -:104CC0006A038091630390916403A0916503B0919E -:104CD0006603C82AD92AEA2AFB2ACFE1D0E0D70105 -:104CE000C6010C2E04C0B695A795979587950A9492 -:104CF000D2F780FF06C0B8018C2F0E94530A01979B -:104D000021F4219760F780E001C08C2FDF91CF91D3 -:104D10001F910F91FF90EF90DF90CF900895CF9368 -:104D2000DF93EC010E945026BE010E94530ADF91DE -:104D3000CF910895CB010E948F26089520911F02E4 -:104D400030912002F90132969FEF40E051915817BF -:104D500089F09F3F19F4511101C0942F4F5F4630E5 -:104D6000A9F79F3F39F0F901E90FF11D97FDFA9579 -:104D700082830895089520911F0230912002F90145 -:104D80003296285F3F4F9081981301C01082319670 -:104D9000E217F307C1F7089581E090E0E0911F0268 -:104DA000F0912002E80FF91F1082019688309105DA -:104DB000A9F7089590917603892B8093760308953F -:104DC00080959091760389238093760308951092BD -:104DD0007603089590917503892B80937503089548 -:104DE000809590917503892380937503089510929F -:104DF0007503089590917403892B8093740308952B -:104E00008095909174038923809374030895109280 -:104E10007403089580936B03089510926B030895B3 -:104E200080911F0290912002FC0131969C01285F25 -:104E30003F4F80E0919191118F5FE217F307D1F717 -:104E40000895E0911F02F091200280917603808303 -:104E5000E0911F02F0912002908180917503892BCF -:104E60008083E0911F02F091200290818091740371 -:104E7000892B808380916B03882361F0E0911F026E -:104E8000F09120029081892B80830E94102781114C -:104E900010926B0380911F02909120020C944A1B88 -:104EA00080919803843039F11092780320E488E1EE -:104EB00090E00FB6F894A895809360000FBE209301 -:104EC000600080E00E94F60580E00E942E0B83B710 -:104ED000817F846083BF83B7816083BF7894889526 -:104EE00083B78E7F83BF88E10FB6F894809360000C -:104EF000109260000FBE089508950895CF9380E04A -:104F00000E94F6050E947C270E94D10C0E947D27FA -:104F1000C0E08C2F0E940A0E892B29F4CF5FC53088 -:104F2000C1F780E001C081E0CF9108950E945B212C -:104F300080E00E94F6050E94F82C0E943E1B0C9413 -:104F40002E0B1F920F920FB60F9211248F939F93E7 -:104F5000AF93BF9380917803811113C0809179033F -:104F600090917A03A0917B03B0917C034196A11D9F -:104F7000B11D8093790390937A03A0937B03B09340 -:104F80007C03BF91AF919F918F910F900FBE0F90B7 -:104F90001F90189582E084BD93E095BD9AEF97BD70 -:104FA00080936E0008952FB7F894809179039091C3 -:104FB0007A03A0917B03B0917C032FBF0895CF9219 -:104FC000DF92EF92FF920F931F932FB7F8944091C7 -:104FD000790350917A0360917B0370917C032FBF1A -:104FE0006A017B01EE24FF248C0120E030E0C01632 -:104FF000D106E206F30610F4415051099A01281B2C -:10500000390BC9011F910F91FF90EF90DF90CF9066 -:1050100008951F920F920FB60F9211248F939F93B2 -:10502000AF93BF938091790390917A03A0917B0312 -:10503000B0917C030196A11DB11D809379039093DB -:105040007A03A0937B03B0937C03BF91AF919F91B0 -:105050008F910F900FBE0F901F9018950E943B18D4 -:10506000F8942FEF87EA91E6215080409040E1F7D5 -:1050700000C0000087E090EBDC018093A3039093D5 -:10508000A403A093A503B093A6039CE088E10FB608 -:10509000F894A895809360000FBE90936000FFCFB6 -:1050A0000E948A28811102C00E9466280E949528C9 -:1050B000809377030E94A2288093A1030E949928DD -:1050C000682F70E080E090E00C9417256DEE7EEF85 -:1050D00080E090E00E945D3160E082E090E00E941C -:1050E0004B3160E083E090E00E944B3160E084E06F -:1050F00090E00E944B3160E085E090E00E944B31EF -:1051000060E086E090E00E944B316FEF87E090E036 -:105110000C944B3180E090E00E94453121E08D3EBF -:105120009E4F09F020E0822F089582E090E00C94D9 -:105130003D3183E090E00C943D31682F83E090E0B6 -:105140000C944B3184E090E00C943D31682F84E066 -:1051500090E00C944B3186E090E00C943D31682F48 -:1051600086E090E00C944B3187E090E00C943D3168 -:10517000682F87E090E00C944B3180917F0380FF93 -:105180000BC06091240285E0689FB00111247595E1 -:105190006795759567952BC081FF09C060912402C2 -:1051A00085E0689FB00111247595679520C082FF46 -:1051B00007C06091240285E0689FB001112417C0E8 -:1051C000909180039923D1F060912302961788F77C -:1051D0002091240285E0289F90011124929FA00134 -:1051E000939F500D112470E0CA010E942331603852 -:1051F000710540F46115710539F002C065E070E099 -:10520000862F08958FE7089581E0089580917F03A8 -:1052100080FF08C06091220270E0759567957595D2 -:10522000679521C081FF06C06091220270E07595EC -:10523000679519C082FF04C06091220270E010C01F -:10524000909180039923C1F0609121029617A0F7F5 -:1052500080912202899FC001112470E00E942331B5 -:105260006038710528F46115710521F0862F0895C5 -:105270008FE7089581E0089561E070E0F4CF803F0A -:1052800021F40E94BD28819504C0813F29F40E9429 -:10529000BD28809383030895823F21F40E94BD2896 -:1052A000819504C0833F29F40E94BD288093820326 -:1052B0000895893F19F40E94062905C08A3F31F4F8 -:1052C0000E94062981958093840308958B3F21F4E1 -:1052D0000E940629819504C08C3F29F40E9406296A -:1052E000809385030895843F21F480918103816038 -:1052F00017C0853F21F480918103826011C0863FF1 -:1053000021F48091810384600BC0873F21F4809158 -:105310008103886005C0883F31F4809181038061FA -:105320008093810308958D3F21F480917F038160F4 -:105330000BC08E3F21F480917F03826005C08F3FB8 -:1053400029F480917F03846080937F030895803FD8 -:1053500039F48091830387FF6CC01092830369C086 -:10536000813F29F4809183031816BCF362C09091A9 -:105370008203823F29F497FF5CC01092820359C0D8 -:10538000833F19F41916CCF354C0893F41F480913E -:10539000840318160CF04DC0109284034AC08A3F53 -:1053A00029F48091840387FF44C0F6CF8B3F39F402 -:1053B0008091850387FF3DC0109285033AC08C3FE2 -:1053C00029F4809185031816BCF333C0843F21F47F -:1053D000809181038E7F17C0853F21F480918103E6 -:1053E0008D7F11C0863F21F4809181038B7F0BC09C -:1053F000873F21F480918103877F05C0883F31F486 -:10540000809181038F7E8093810313C08D3F21F4AF -:1054100080917F038E7F0BC08E3F21F480917F03AC -:105420008D7F05C08F3F29F480917F038B7F809310 -:105430007F038091820381110EC0809183038111CB -:105440000AC080918403811106C080918503811177 -:1054500002C010928003089581E893E00E94551BDA -:105460000E94D32790937E0380937D0308951F931A -:10547000CF93DF9380917D0390917E030E94DF277D -:10548000AC0190918003992321F02091250230E016 -:1054900006C0209126028AE0289F9001112442171D -:1054A000530708F486C080918203C0918303D09192 -:1054B000840310918503811107C0C11176C0D111F9 -:1054C00074C0111172C075C09F3F19F09F5F909317 -:1054D0008003181624F40E94BD28809382038091D3 -:1054E000820387FF05C00E94BD28819580938203B7 -:1054F0001C1624F40E94BD288093830380918303AB -:1055000087FF05C00E94BD28819580938303609129 -:105510008203662339F1C0918303CC2319F17727E5 -:1055200067FD7095872F972F0E94932E23E333E317 -:1055300043E35FE30E94472F0E94602E6093820343 -:105540006C2F772767FD7095872F972F0E94932EDA -:1055500023E333E343E35FE30E94472F0E94602E7F -:10556000609383031D1624F40E940629809384030C -:105570008091840387FF05C00E940629819580934E -:105580008403111624F40E940629809385038091D8 -:10559000850387FF05C00E940629819580938503B6 -:1055A000DF91CF911F910C942C2A9F3F09F08ECF51 -:1055B00096CFDF91CF911F910895E1E8F3E085E068 -:1055C000DF011D928A95E9F71092800310927F0304 -:1055D0000895833081F128F4813059F08230D1F080 -:1055E0000895853009F449C0B8F1863009F456C0F1 -:1055F000089580912602262F30E0280F311D2F3F7D -:10560000310524F4680F6093260208958FEF80938C -:105610002602089580912502262F30E0280F311DA3 -:105620002F3F310524F4680F6093250208958FEF12 -:1056300080932502089580912402262F30E0280FC0 -:10564000311D2F3F310524F4680F60932402089523 -:105650008FEF80932402089580912302262F30E05B -:10566000280F311D2F3F310524F4680F609323026A -:1056700008958FEF80932302089580912202262FB0 +:104280000F91FF90EF90DF90CF90BF900C94D507E7 +:1042900026960FB6F894DEBF0FBECDBFDF91CF914B +:1042A0001F910F91FF90EF90DF90CF90BF900895F6 +:1042B0000E9408270E9418270E94DD260E943227AC +:1042C0000E94EE2A0E943D2A80E090E00E94711B2D +:1042D00080E090E00C94871B0E94F8260C945821F3 +:1042E0000E94A026292F22952F7030E02C30310516 +:1042F0004CF42A3031056CF422503109223031055A +:1043000088F407C02C30310549F02F30310531F0E9 +:1043100009C0803E48F0803F29F406C093FB8827FF +:1043200080F9089580E0089581E00895CF93DF93A8 +:1043300000D000D01F92CDB7DEB70F900F900F9036 +:104340000F900F90DF91CF910895CF93DF9300D01E +:1043500000D000D0CDB7DEB726960FB6F894DEBFFA +:104360000FBECDBFDF91CF9108951F93CF93DF9301 +:10437000C0917B0316E080917C03C81799F0D0E0D0 +:104380001C9FF0011D9FF00D1124E358FC4F40814C +:10439000518162817381848195810E94A52121963A +:1043A000C770E9CFDF91CF911F9108954091AD0380 +:1043B0005091AE036091AF037091B0038091B1034F +:1043C0009091B2030C94A5218091B20382958F70D5 +:1043D00009F054C08091AF03882309F44FC0809145 +:1043E0007B03A0917C036091AD037091AE0340917B +:1043F000B0035091B103B6E08A1709F43FC090E0D2 +:1044000041155105C1F17F3F11F46F3FA1F1B89FF4 +:10441000F001B99FF00D1124E358FC4F2181721374 +:104420002AC02081621327C02281211124C0238148 +:1044300034812417350710F421503109241B350B22 +:10444000283C3105C0F42091B2032F7020612093E5 +:10445000B20326E0289FF001299FF00D1124EE57AA +:10446000FC4F80818F70806180838DEA93E00E9491 +:10447000B41D0C94B52101968770BECF0895CF92DC +:10448000DF92EF92FF920F931F93CF93DF93CDB7FD +:10449000DEB762970FB6F894DEBF0FBECDBF8C01BA +:1044A00085E0F801DE011D9601900D928A95E1F7F5 +:1044B000D8014C9111965C91119712966C911297BC +:1044C0001396CD90DC9014973091AD037091AE03AC +:1044D0008091B0039091B103009709F46BC17F3FC5 +:1044E00019F43F3F09F466C1E090AF03EE2009F4F0 +:1044F000C0C02091B203C816D90628F0F601E81B07 +:10450000F90BCF0104C0809590958C0D9D1DFF2463 +:10451000F394883C910578F0F12C207F09F0C6C017 +:104520007C2DD98AC88A89890E9496218DEA93E0D8 +:104530000E94B41DB1C0822F807F09F046C0751360 +:1045400014C0341312C0611110C02F702061209369 +:10455000B2030E94D6218DEA93E00E94B41D80919F +:10456000B203D80115968C932EC0CD2819F15F3F68 +:1045700011F44F3FF9F0F62E61111CC080917B03BE +:1045800020917C0336E0821709F45AC090E0389FEE +:10459000F001399FF00D1124E358FC4F718157133E +:1045A00006C07081471303C07281711103C0019668 +:1045B0008770E9CFF62E662309F418C18091B20303 +:1045C00081608093B203F12C11C1751308C03413BC +:1045D00006C0611104C08091B203D801C3C04D87E9 +:1045E0005E878D859E856A8B0E9470216A898823EB +:1045F000E1F16623D1F12091B203822F82958F7071 +:1046000090E0029774F08091AD039091AE0398878B +:104610008F831986DB86CA862C87CE0107960E9477 +:10462000B41D86E0F801ADEAB3E001900D928A95E1 +:10463000E1F70E94E4210E94D621FF24F394D6C022 +:104640004D875E878D859E850E94A026292F229505 +:104650002F7030E0223031050CF0BCC09F7009F0A3 +:10466000B6C0805E883008F4C1C0C8010E94B41D85 +:10467000E4CFC816D90608F453C0F601E81BF90BBD +:10468000CF01883C910508F450C0F12C7C2DD98ACB +:10469000C88A89890E949621EDEAF3E086E0DF016D +:1046A0001D928A95E9F70E94D621A0C0751314C007 +:1046B000341312C0611110C08091B203F8018583D8 +:1046C000C8010E94B41D86E0EDEAF3E0DF011D920F +:1046D0008A95E9F7FE2C8AC04D875E878D859E8579 +:1046E0006A8B0E9470216A89882309F4BECF6623F1 +:1046F00009F4BBCF2091B203822F82958F7090E096 +:1047000002970CF48ECF8091AD039091AE039A8303 +:1047100089831B82DD82CC822E83CE0101967FCFDE +:10472000809590958C0D9D1DACCFF62E662309F4D7 +:104730009CCF75132EC034132CC02091B20320FDE2 +:104740001FC0822F82958F70D9F0D80115962C93B7 +:1047500015978F3049F08F5F982F9295907F822F19 +:104760008F70892B15968C93C8010E94B41D86E02A +:10477000F801ADEAB3E001900D928A95E1F793CF8D +:1047800086E0F801ADEAB3E001900D928A95E1F779 +:104790002DC04D875E878D859E850E947021811179 +:1047A00040CF8091B20381608093B203C8010E9420 +:1047B000B41D1CC0662309F458CF4D875E878D85D4 +:1047C0009E850E947021882309F44FCF2ACF811142 +:1047D00048CF0CC0243031050CF047CF9F7009F44E +:1047E00040CFF8019581907F09F03BCF8F2D6296E5 +:1047F0000FB6F894DEBF0FBECDBFDF91CF911F91F2 +:104800000F91FF90EF90DF90CF9008951F93CF937B +:10481000DF93CDB7DEB72C970FB6F894DEBF0FBE8F +:10482000CDBF4F83588769877A878B879C87CE0156 +:1048300007960E943F22882369F08F8198852A85F8 +:104840003B85232BF1F19F3F09F063C08F3F09F0B7 +:1048500060C037C086E0FE013796DE0111960190F8 +:104860000D928A95E1F76F817885EA85FB8530970F +:1048700041F17F3F11F46F3F21F120917C0330E043 +:10488000C90101968770992740917B0350E08417F6 +:10489000950709F447C069837A83FD83EC8396E02A +:1048A000929FD001939FB00D1124A358BC4FFE01DD +:1048B000319601900D929A95E1F780937C030E94C6 +:1048C000B52116E080917B0390917C038917C1F19B +:1048D000189FC001112483589C4F0E943F228823B7 +:1048E00079F1E0917B031E9FF0011124E358FC4F06 +:1048F0004081518162817381848195810E94A521CB +:1049000080917B0390E001968770992780937B03C9 +:10491000D9CF4F81588569857A858B859C850E9482 +:10492000A521CFCF0E946C2110927C0310927B03B3 +:10493000EDEAF3E086E0DF011D928A95E9F7C1CF49 +:104940002C960FB6F894DEBF0FBECDBFDF91CF918E +:104950001F910895EF92FF920F931F93CF93DF93D0 +:104960008C01009709F46CC0F12CEE24E394E8016B +:104970002196F8018491843740F4843008F051C0C6 +:10498000813081F0823019F15BC0853709F444C071 +:10499000A8F19CE7980F903708F052C08F770E94DB +:1049A000571D41C00E5F1F4FFE01C49180E28C0F66 +:1049B000883048F4C7708E2D01C0880FCA95EAF779 +:1049C0000E940B2714C08C2F0E948F1C2DC00E5FDD +:1049D0001F4FFE01C49180E28C0F883058F4C770DD +:1049E0008E2D01C0880FCA95EAF70E9411270E94F8 +:1049F00032271AC08C2F0E94571D16C00E5F1F4F02 +:104A0000FE01C491CC2381F08FE99FE00197F1F77B +:104A100000C00000C150F6CF0E5F1F4FFE01F490A2 +:104A200003C00E948F1C8E018F2D882309F49FCF15 +:104A3000EFE9FFE03197F1F700C000008150F5CFBA +:104A4000DF91CF911F910F91FF90EF9008950895FE +:104A50006093B7037093B8038093B9039093BA033C +:104A60000C9458210F931F930091B7031091B80332 +:104A70002091B9033091BA03DC01CB01802B912B3B +:104A8000A22BB32B8093B7039093B803A093B903E1 +:104A9000B093BA031F910F910C9458210F931F9359 +:104AA0000091B7031091B8032091B9033091BA0374 +:104AB000DC01CB0180239123A223B3238093B7038E +:104AC0009093B803A093B903B093BA031F910F91C9 +:104AD0000C9458210F931F930091B7031091B803C2 +:104AE0002091B9033091BA03DC01CB0180279127D3 +:104AF000A227B3278093B7039093B803A093B90379 +:104B0000B093BA031F910F910C9458211092B303E4 +:104B10001092B4031092B5031092B6030C9458216E +:104B200041E050E060E070E004C0440F551F661F94 +:104B3000771F8A95D2F74093B3035093B4036093E1 +:104B4000B5037093B6030C94582141E050E060E047 +:104B500070E004C0440F551F661F771F8A95D2F777 +:104B60008091B3039091B403A091B503B091B603C3 +:104B7000482B592B6A2B7B2B4093B3035093B403E0 +:104B80006093B5037093B6030C94582141E050E054 +:104B900060E070E004C0440F551F661F771F8A95C0 +:104BA000D2F740955095609570958091B3039091A0 +:104BB000B403A091B503B091B603482359236A23E7 +:104BC0007B234093B3035093B4036093B503709376 +:104BD000B6030C94582141E050E060E070E004C05E +:104BE000440F551F661F771F8A95D2F78091B30334 +:104BF0009091B403A091B503B091B603482759270B +:104C00006A277B274093B3035093B4036093B503A3 +:104C10007093B6030C9458210F931F930091B30324 +:104C20001091B4032091B5033091B603DC01CB01A0 +:104C3000802B912BA22BB32B8093B3039093B403BF +:104C4000A093B503B093B6031F910F910C94582114 +:104C50000F931F930091B3031091B4032091B503F8 +:104C60003091B603DC01CB0180239123A223B3232F +:104C70008093B3039093B403A093B503B093B603AA +:104C80001F910F910C9458210F931F930091B30320 +:104C90001091B4032091B5033091B603DC01CB0130 +:104CA00080279127A227B3278093B3039093B4035F +:104CB000A093B503B093B6031F910F910C945821A4 +:104CC0000895CF92DF92EF92FF920F931F93CF93AD +:104CD000DF938C01C090B703D090B803E090B90384 +:104CE000F090BA038091B3039091B403A091B503FF +:104CF000B091B603C82AD92AEA2AFB2ACFE1D0E02C +:104D0000D701C6010C2E04C0B695A7959795879537 +:104D10000A94D2F780FF06C0B8018C2F0E942F0A98 +:104D2000019721F4219760F780E001C08C2FDF917B +:104D3000CF911F910F91FF90EF90DF90CF9008954A +:104D4000CF93DF93EC010E946126BE010E942F0ADF +:104D5000DF91CF910895CB010E94A0260895209164 +:104D60001D0230911E02F90132969FEF40E05191F1 +:104D7000581789F09F3F19F4511101C0942F4F5FCC +:104D80004630A9F79F3F39F0F901E90FF11D97FD72 +:104D9000FA9582830895089520911D0230911E0294 +:104DA000F9013296285F3F4F9081981301C010821D +:104DB0003196E217F307C1F7089581E090E0E091A2 +:104DC0001D02F0911E02E80FF91F10820196883033 +:104DD0009105A9F708959091C603892B8093C60386 +:104DE000089580959091C60389238093C603089502 +:104DF0001092C60308959091C503892B8093C50333 +:104E0000089580959091C50389238093C5030895E3 +:104E10001092C50308959091C403892B8093C40315 +:104E2000089580959091C40389238093C4030895C5 +:104E30001092C40308958093BB0308951092BB039E +:104E4000089580911D0290911E02FC0131969C01F3 +:104E5000285F3F4F80E0919191118F5FE217F30738 +:104E6000D1F70895E0911D02F0911E028091C603D2 +:104E70008083E0911D02F0911E0290818091C50314 +:104E8000892B8083E0911D02F0911E029081809118 +:104E9000C403892B80838091BB03882361F0E09158 +:104EA0001D02F0911E029081892B80830E94212790 +:104EB00081111092BB0380911D0290911E020C94EF +:104EC0005B1B8091E803843039F11092C80320E421 +:104ED00088E190E00FB6F894A895809360000FBE2B +:104EE0002093600080E00E94D20580E00E940A0BBF +:104EF00083B7817F846083BF83B7816083BF7894E9 +:104F0000889583B78E7F83BF88E10FB6F89480932E +:104F10006000109260000FBE089508950895CF9329 +:104F200080E00E94D2050E948D270E94AD0C0E9455 +:104F30008E27C0E08C2F0E94E60D892B29F4CF5FCD +:104F4000C530C1F780E001C081E0CF9108950E9493 +:104F50006C2180E00E94D2050E94092D0E944F1B07 +:104F60000C940A0B1F920F920FB60F9211248F937D +:104F70009F93AF93BF938091C803811113C0809119 +:104F8000C9039091CA03A091CB03B091CC03419681 +:104F9000A11DB11D8093C9039093CA03A093CB03B5 +:104FA000B093CC03BF91AF919F918F910F900FBEA3 +:104FB0000F901F90189582E084BD93E095BD9AEF05 +:104FC00097BD80936E0008952FB7F8948091C90320 +:104FD0009091CA03A091CB03B091CC032FBF089549 +:104FE000CF92DF92EF92FF920F931F932FB7F89417 +:104FF0004091C9035091CA036091CB037091CC03D7 +:105000002FBF6A017B01EE24FF248C0120E030E0F9 +:10501000C016D106E206F30610F4415051099A0178 +:10502000281B390BC9011F910F91FF90EF90DF9062 +:10503000CF9008951F920F920FB60F9211248F9365 +:105040009F93AF93BF938091C9039091CA03A0919E +:10505000CB03B091CC030196A11DB11D8093C90370 +:105060009093CA03A093CB03B093CC03BF91AF91AD +:105070009F918F910F900FBE0F901F9018950E94D7 +:105080004C18F8942FEF87EA91E621508040904029 +:10509000E1F700C0000087E090EBDC018093F303B0 +:1050A0009093F403A093F503B093F6039CE088E19A +:1050B0000FB6F894A895809360000FBE909360009F +:1050C000FFCF0E949B28811102C00E9477280E9476 +:1050D000A6288093C7030E94B3288093F1030E94FF +:1050E000AA28682F70E080E090E00C9428256DEEEF +:1050F0007EEF80E090E00E94BC3160E082E090E0D2 +:105100000E94AA3160E083E090E00E94AA3160E052 +:1051100084E090E00E94AA3160E085E090E00E9487 +:10512000AA3160E086E090E00E94AA316FEF87E04C +:1051300090E00C94AA3180E090E00E94A43121E03C +:105140008D3E9E4F09F020E0822F089582E090E08E +:105150000C949C3183E090E00C949C31682F83E0A8 +:1051600090E00C94AA3184E090E00C949C31682F7C +:1051700084E090E00C94AA3186E090E00C949C319D +:10518000682F86E090E00C94AA3187E090E00C94C0 +:105190009C31682F87E090E00C94AA318091CF0376 +:1051A00080FF0BC06091220285E0689FB00111244E +:1051B00075956795759567952BC081FF09C06091BE +:1051C000220285E0689FB00111247595679520C083 +:1051D00082FF07C06091220285E0689FB001112420 +:1051E00017C09091D0039923D1F0609121029617B6 +:1051F00088F72091220285E0289F90011124929F38 +:10520000A001939F500D112470E0CA010E948231C9 +:105210006038710540F46115710539F002C065E030 +:1052200070E0862F08958FE7089581E008958091BA +:10523000CF0380FF08C06091200270E075956795EC +:105240007595679521C081FF06C06091200270E0CE +:105250007595679519C082FF04C06091200270E0C7 +:1052600010C09091D0039923C1F060911F0296174E +:10527000A0F780912002899FC001112470E00E9454 +:1052800082316038710528F46115710521F0862F8F +:1052900008958FE7089581E0089561E070E0F4CF0C +:1052A000803F21F40E94CE28819504C0813F29F4DB +:1052B0000E94CE288093D3030895823F21F40E9458 +:1052C000CE28819504C0833F29F40E94CE28809384 +:1052D000D2030895893F19F40E94172905C08A3F17 +:1052E00031F40E94172981958093D40308958B3F50 +:1052F00021F40E941729819504C08C3F29F40E9453 +:1053000017298093D5030895843F21F48091D10318 +:10531000816017C0853F21F48091D103826011C064 +:10532000863F21F48091D10384600BC0873F21F434 +:105330008091D103886005C0883F31F48091D1030A +:1053400080618093D10308958D3F21F48091CF0334 +:1053500081600BC08E3F21F48091CF03826005C035 +:105360008F3F29F48091CF0384608093CF03089509 +:10537000803F39F48091D30387FF6CC01092D30330 +:1053800069C0813F29F48091D3031816BCF362C031 +:105390009091D203823F29F497FF5CC01092D20310 +:1053A00059C0833F19F41916CCF354C0893F41F416 +:1053B0008091D40318160CF04DC01092D4034AC04B +:1053C0008A3F29F48091D40387FF44C0F6CF8B3FF6 +:1053D00039F48091D50387FF3DC01092D5033AC0C0 +:1053E0008C3F29F48091D5031816BCF333C0843F59 +:1053F00021F48091D1038E7F17C0853F21F48091E5 +:10540000D1038D7F11C0863F21F48091D1038B7F22 +:105410000BC0873F21F48091D103877F05C0883F6F +:1054200031F48091D1038F7E8093D10313C08D3FDF +:1054300021F48091CF038E7F0BC08E3F21F48091A9 +:10544000CF038D7F05C08F3F29F48091CF038B7FE1 +:105450008093CF038091D20381110EC08091D3033A +:1054600081110AC08091D403811106C08091D503B7 +:10547000811102C01092D003089581ED93E00E9443 +:10548000661B0E94E4279093CE038093CD0308957A +:105490001F93CF93DF938091CD039091CE030E9411 +:1054A000F027AC019091D003992321F020912302A1 +:1054B00030E006C0209124028AE0289F9001112448 +:1054C0004217530708F486C08091D203C091D303DA +:1054D000D091D4031091D503811107C0C11176C0BA +:1054E000D11174C0111172C075C09F3F19F09F5F38 +:1054F0009093D003181624F40E94CE288093D203F0 +:105500008091D20387FF05C00E94CE2881958093A9 +:10551000D2031C1624F40E94CE288093D3038091DA +:10552000D30387FF05C00E94CE2881958093D303C3 +:105530006091D203662339F1C091D303CC2319F1D2 +:10554000772767FD7095872F972F0E94A42E23E35E +:1055500033E343E35FE30E94B42F0E94712E609314 +:10556000D2036C2F772767FD7095872F972F0E94A6 +:10557000A42E23E333E343E35FE30E94B42F0E94AE +:10558000712E6093D3031D1624F40E941729809373 +:10559000D4038091D40387FF05C00E941729819509 +:1055A0008093D403111624F40E9417298093D50305 +:1055B0008091D50387FF05C00E94172981958093AC +:1055C000D503DF91CF911F910C943D2A9F3F09F0A5 +:1055D0008ECF96CFDF91CF911F910895E1EDF3E04B +:1055E00085E0DF011D928A95E9F71092D0031092B1 +:1055F000CF030895833081F128F4813059F082304F +:10560000D1F00895853009F449C0B8F1863009F425 +:1056100056C0089580912402262F30E0280F311DB6 +:105620002F3F310524F4680F6093240208958FEF13 +:1056300080932402089580912302262F30E0280FC2 +:10564000311D2F3F310524F4680F60932302089524 +:105650008FEF80932302089580912202262F30E05D +:10566000280F311D2F3F310524F4680F609322026B +:1056700008958FEF80932202089580912102262FB2 :1056800030E0280F311D2F3F310524F4680F60935F -:10569000220208958FEF80932202089580912102C3 +:10569000210208958FEF80932102089580912002C6 :1056A000262F30E0280F311D2F3F310524F4680FDD -:1056B0006093210208958FEF809321020895833033 -:1056C00011F128F4813049F0823091F0089585304D -:1056D00081F120F18630C1F108958091260268178A -:1056E00020F4861B809326020895109226020895C6 -:1056F00080912502681720F4861B80932502089567 -:1057000010922502089580912402681720F4861BC8 -:105710008093240208951092240208958091230218 -:10572000681720F4861B80932302089510922302A9 -:10573000089580912202681720F4861B809322022C -:10574000089510922202089580912102681720F492 -:10575000861B8093210208951092210208950F93D1 -:105760001F938732D8F58E3108F087C08E3009F448 -:1057700071C098F4873009F45BC08B3009F491C094 -:10578000863009F095C080917703817F8E7F80936A -:10579000770381E0809387038CC0863109F481C050 -:1057A00068F4803109F084C08091770383FB22275D -:1057B00020F991E0922790FB83F955C0893109F4D3 -:1057C00070C08B3109F074C08091770381FB222770 -:1057D00020F991E0922790FB81F945C0883309F4C4 -:1057E00060C050F4893209F45EC0853309F45BC0AF -:1057F000873209F458C05CC0833409F454C028F4DB -:105800008A3308F455C0895339C0883409F050C030 -:105810000E945B210E94D6070FEF13ED20E3015099 -:1058200010402040E1F700C000000E942E2839C03F -:1058300090917703892F8095817080FB90F929F0F2 -:10584000966098609093770334C0997F977F909388 -:10585000770327C08091770382FB222720F991E00C -:10586000922790FB82F9809377039923D1F080915E -:10587000770381608093770314C08D5141E050E03D -:1058800060E070E08A019B0104C0000F111F221F1D -:10589000331F8A95D2F7C901B8010E9417250E94CB -:1058A0005B2181E006C061E070E080E090E0F5CF30 -:1058B00080E01F910F91089580E0089580E00895A1 -:1058C000CF93C82F80918703813069F018F0823020 -:1058D000C9F184C0E0911F02F091200280818232E0 -:1058E00009F07EC007C0E0911F02F0912002808184 -:1058F000823261F48C2F0E945C2C811104C08C2FA9 -:105900000E94AF2B1DC081E090E01AC08C2F0E9436 -:105910005E2C811114C0C43179F048F4CB3079F099 -:10592000C03109F061C082E08093870308C0C932AA -:1059300019F0C83321F058C01092870355C081E098 -:10594000817054C0C93291F120F5C43179F1B0F4BD -:10595000C73009F047C08EE18093260282E380932E -:1059600025028AE08093240284E18093230288E068 -:105970008093220288E28093210234C0CE51C63047 -:1059800088F5EC2FF0E0E256FD4F8081809386038E -:1059900029C0CE34E9F020F4CB3421F56AE013C0FD -:1059A000C13579F0C235F1F461E00DC08091860314 -:1059B000882319F01092860315C081E08093870335 -:1059C00015C061E006C0809186030E94E92A0AC0E2 -:1059D0006AE0809186030E945F2B04C010928703C7 -:1059E00080E004C081E002C080E0AACFCF9108959A -:1059F0000E948A28811102C00E9466280E94AB285A -:105A00008093A20380FF02C0869501C080E00C94C1 -:105A1000F6058091A203982F9695292F30E0233028 -:105A200031054CF49F5F990F8170892B81608093C1 -:105A3000A2030E94AF288091A20386950C94F605DC -:105A40008091A203982F969591F09158990F8170AB -:105A5000892B8093A2038E7F91E009F490E08091DE -:105A6000A20390FB80F98093A2030E94AF2880914B -:105A7000A20386950C94F6058091A203982F909529 -:105A800090FB80F98093A2030E94AF288091A2032B -:105A900080FF02C0869501C080E00C94F6059091CD -:105AA000A203892F86958F5F8F779170843028F4B9 -:105AB000880F892B8093A20302C09093A203809148 -:105AC000A2038E7F91E009F490E08091A20390FB05 -:105AD00080F98093A2030E94AF288091A20386954B -:105AE0000C94F6052091A203922F96958927982F62 -:105AF000990F822F8170892B8093A2038E7F91E072 -:105B000009F490E08091A20390FB80F98093A203B6 -:105B10000E94AF288091A20386950C94F6055058F8 -:105B2000BB27AA270ED075C166D130F06BD120F00B -:105B300031F49F3F11F41EF45BC10EF4E095E7FBD6 -:105B400051C1E92F77D180F3BA1762077307840731 -:105B5000950718F071F49EF58FC10EF4E0950B2EA9 -:105B6000BA2FA02D0B01B90190010C01CA01A001AF -:105B70001124FF27591B99F0593F50F4503E68F10A -:105B80001A16F040A22F232F342F4427585FF3CF4B -:105B9000469537952795A795F0405395C9F77EF41C -:105BA0001F16BA0B620B730B840BBAF09150A1F065 -:105BB000FF0FBB1F661F771F881FC2F70EC0BA0FEB -:105BC000621F731F841F48F4879577956795B79573 -:105BD000F7959E3F08F0B3CF9395880F08F099276B -:105BE000EE0F979587950895D9D008F481E0089530 -:105BF0000CD00FC107D140F0FED030F021F45F3F50 -:105C000019F0F0C0511139C1F3C014D198F39923A0 -:105C1000C9F35523B1F3951B550BBB27AA27621770 -:105C20007307840738F09F5F5F4F220F331F441FB5 -:105C3000AA1FA9F333D00E2E3AF0E0E830D09150ED -:105C40005040E695001CCAF729D0FE2F27D0660FDA -:105C5000771F881FBB1F261737074807AB07B0E819 -:105C600009F0BB0B802DBF01FF2793585F4F2AF02F -:105C70009E3F510568F0B6C000C15F3FECF3983E0F -:105C8000DCF3869577956795B795F7959F5FC9F78C -:105C9000880F911D9695879597F90895E1E0660F15 -:105CA000771F881FBB1F621773078407BA0720F08E -:105CB000621B730B840BBA0BEE1F88F7E0950895F7 -:105CC00004D06894B111D9C00895BCD088F09F5712 -:105CD00090F0B92F9927B751A0F0D1F0660F771F38 -:105CE000881F991F1AF0BA95C9F712C0B13081F018 -:105CF000C3D0B1E00895C0C0672F782F8827B85F60 -:105D000039F0B93FCCF3869577956795B395D9F778 -:105D10003EF490958095709561957F4F8F4F9F4F82 -:105D20000895E89409C097FB3EF49095809570958E -:105D300061957F4F8F4F9F4F9923A9F0F92F96E9D7 -:105D4000BB279395F695879577956795B795F1114C -:105D5000F8CFFAF4BB0F11F460FF1BC06F5F7F4FE9 -:105D60008F4F9F4F16C0882311F096E911C07723FB -:105D700021F09EE8872F762F05C0662371F096E804 -:105D8000862F70E060E02AF09A95660F771F881FD3 -:105D9000DAF7880F9695879597F90895990F000877 -:105DA000550FAA0BE0E8FEEF16161706E807F907ED -:105DB000C0F012161306E407F50798F0621B730B88 -:105DC000840B950B39F40A2661F0232B242B252B09 -:105DD00021F408950A2609F4A140A6958FEF811DAC -:105DE000811D089597F99F6780E870E060E008954D -:105DF0009FEF80EC089500240A94161617061806E3 -:105E00000906089500240A941216130614060506BE -:105E10000895092E0394000C11F4882352F0BB0F4F -:105E200040F4BF2B11F460FF04C06F5F7F4F8F4FB2 -:105E30009F4F089557FD9058440F551F59F05F3FED -:105E400071F04795880F97FB991F61F09F3F79F09C -:105E500087950895121613061406551FF2CF46951E -:105E6000F1DF08C0161617061806991FF1CF8695A0 -:105E70007105610508940895E894BB276627772784 -:105E8000CB0197F908958ADF08F48FEF08950BD0BE -:105E9000C0CFB1DF28F0B6DF18F0952309F0A2CF0C -:105EA000A7CF1124EACFC6DFA0F3959FD1F3950FBA -:105EB00050E0551F629FF001729FBB27F00DB11D8E -:105EC000639FAA27F00DB11DAA1F649F6627B00D1E -:105ED000A11D661F829F2227B00DA11D621F739F07 -:105EE000B00DA11D621F839FA00D611D221F749F15 -:105EF0003327A00D611D231F849F600D211D822F5C -:105F0000762F6A2F11249F5750408AF0E1F08823A2 -:105F10004AF0EE0FFF1FBB1F661F771F881F9150AF -:105F20005040A9F79E3F510570F05CCFA6CF5F3F70 -:105F3000ECF3983EDCF3869577956795B795F795E2 -:105F4000E7959F5FC1F7FE2B880F911D969587956A -:105F500097F90895FA01EE0FFF1F309621053105DC -:105F600099F16115710561F48038BFE39B0749F130 -:105F700068949038810561F08038BFEF9B0741F04D -:105F8000992342F5FF3FE1053105210511F1E89420 -:105F90000894E795D901AA2329F4AB2FBE2FF85F07 -:105FA000D0F310C0FF5F70F4A695E0F7F73950F01A -:105FB00019F0FF3A38F49F779F930CD00F9007FCAD -:105FC000905808953EF014CF60E070E080E89FE3C1 -:105FD00008954FE79F775F934F933F932F939ED002 -:105FE0002F913F914F915F9152DF05C019F40EF050 -:105FF000F9CE42CFFDCE26DFC8F39638C0F707F8BA -:106000000F92E8942BE33AEA48EB5FE74EDF0F92FA -:106010000F920F924DB75EB70F92C0D0E0E4F1E05F -:1060200016D04F915F91EF91FF91E595EE1FFF1F05 -:1060300049F0FE57E0684427EE0F441FFA95E1F758 -:106040004195550B32D00F9007FE26C00895DF937F -:10605000CF931F930F93FF92EF92DF927B018C01FE -:10606000689405C0DA2EEF011EDFFE01E894A591C9 -:106070002591359145915591AEF3EF0162DDFE0119 -:106080009701A801DA9479F7DF90EF90FF900F91D4 -:106090001F91CF91DF9108959B01AC0160E070E00A -:1060A00080E89FE3A5CD9ECEACC0CCDEE8F399237B -:1060B000D9F3940F511DBBF39150504094F059F017 -:1060C000882332F0660F771F881F91505040C1F728 -:1060D0009E3F510544F7880F911D9695879597F936 -:1060E00008955F3FACF0983E9CF0BB27869577956E -:1060F0006795B79508F4B1609395C1F7BB0F58F752 -:1061000011F460FFE8CF6F5F7F4F8F4F9F4FE3CF5A -:10611000B4CE0EF076C06CCE689464CE93DEC8F335 -:106120009923D1F3C6F3DF93CF931F930F93FF927D -:10613000C92FDD2788232AF02197660F771F881F34 -:10614000DAF720E030E040E85FEB9FE3883920F0A9 -:10615000803E30F021968F77E3DCE8E6F1E003C083 -:10616000DFDCE5E9F1E073DF8B01BE01EC01FB2E22 -:106170006F5771097595771F880B990BD4DD28E14E -:1061800032E741E35FE38FDEAF2D9801AE01FF9070 -:106190000F911F91CF91DF91D4DC3BCEFA01DC014E -:1061A000AA0FBB1F9B01AC01BF5728F4222733273E -:1061B000442750781FC0B75188F4AB2F0024469570 -:1061C00037952795011CA395D2F3002069F0220F83 -:1061D000331F441FB395DAF30DD0A1CC61307105A4 -:1061E000A0E88A07B94630F49B01AC0166277727FF -:1061F00088279078309621F020833183428353831F -:1062000008959F3F31F0915020F4879577956795D9 -:10621000B795880F911D9695879597F90895AA1BB4 -:10622000BB1B51E107C0AA1FBB1FA617B70710F081 -:10623000A61BB70B881F991F5A95A9F780959095B3 -:10624000BC01CD01089597FB072E16F4009407D0EA -:1062500077FD09D00E940F3107FC05D03EF49095E0 -:1062600081959F4F0895709561957F4F0895EE0F2A -:10627000FF1F0590F491E02D0994F999FECF92BD8E -:1062800081BDF89A992780B50895A8E1B0E042E071 -:1062900050E00C946531262FF999FECF92BD81BD57 -:1062A000F89A019700B4021639F01FBA20BD0FB654 -:1062B000F894FA9AF99A0FBE08950196272F0E9432 -:1062C0004C310C944B31DC01CB01FC01F999FECF30 -:1062D00006C0F2BDE1BDF89A319600B40D9241506E -:0A62E0005040B8F70895F894FFCF7E -:1062EA0007000C52D02445000000410000DC4400A5 -:1062FA0000004152D0A4440000404100005C440028 -:10630A0000004148F17644000000415C978A44004D -:10631A000000411FD592440000004152D0A444001D -:10632A000000415CFFB844000000410AA7CF4400C6 -:10633A000000410000DC44000000410AA7CF4400ED -:10634A000000410000DC44000000410000000000A1 -:10635A0000804052D0244500004041000000000067 -:10636A000080400AA74F45000040410AA7CF4400D9 -:10637A000000410000DC4400000041000000000071 -:10638A0000804052D0244500000041000000000077 -:10639A000080405CFF38450000004100000000001A -:1063AA0000804052D02445000000410AA7CF440093 -:1063BA000000410000DC4400000041000000000031 -:1063CA0000804052D024450000804110F1764400FC -:1063DA0000A04112F1F6440000004141909B4400A4 -:1063EA0000A04112F1F64400000041050000003F00 -:1063FA000000C8426A14F814D514A1146D14016C73 -:10640A00032808140A321E000002000400050007CF -:10641A000009000B000C000E0010001100130015FB -:10642A0000170018001A001C001D001F002100237D -:10643A000024002600280029002B002D002F003000 -:10644A0000320034003500370039003B0042004575 -:10645A000025002600430061006000200037006428 -:10646A000065006600670044004600240047003FBC -:10647A004D36010BB40A7E0A2A0A430A5C0A010253 -:08648A000304050607080900E0 +:1056B0006093200208958FEF8093200208958091D7 +:1056C0001F02262F30E0280F311D2F3F310524F413 +:1056D000680F60931F0208958FEF80931F02089553 +:1056E000833011F128F4813049F0823091F008952F +:1056F000853081F120F18630C1F108958091240236 +:10570000681720F4861B80932402089510922402C7 +:10571000089580912302681720F4861B809323024A +:10572000089510922302089580912202681720F4B0 +:10573000861B809322020895109222020895809180 +:105740002102681720F4861B80932102089510928D +:105750002102089580912002681720F4861B80930F +:105760002002089510922002089580911F02681768 +:1057700020F4861B80931F02089510921F02089543 +:105780000F931F938732D8F58E3108F087C08E3083 +:1057900009F471C098F4873009F45BC08B3009F4C8 +:1057A00091C0863009F095C08091C703817F8E7FBC +:1057B0008093C70381E08093D7038CC0863109F4BE +:1057C00081C068F4803109F084C08091C70383FBF5 +:1057D000222720F991E0922790FB83F955C0893167 +:1057E00009F470C08B3109F074C08091C70381FB4C +:1057F000222720F991E0922790FB81F945C0883358 +:1058000009F460C050F4893209F45EC0853309F4AC +:105810005BC0873209F458C05CC0833409F454C0BB +:1058200028F48A3308F455C0895339C0883409F004 +:1058300050C00E946C210E94B2070FEF13ED20E3CD +:10584000015010402040E1F700C000000E943F28B6 +:1058500039C09091C703892F8095817080FB90F9A2 +:1058600029F0966098609093C70334C0997F977F22 +:105870009093C70327C08091C70382FB222720F99A +:1058800091E0922790FB82F98093C7039923D1F08E +:105890008091C70381608093C70314C08D5141E09C +:1058A00050E060E070E08A019B0104C0000F111F0E +:1058B000221F331F8A95D2F7C901B8010E942825FB +:1058C0000E946C2181E006C061E070E080E090E021 +:1058D000F5CF80E01F910F91089580E0089580E05A +:1058E0000895CF93C82F8091D703813069F018F0C5 +:1058F0008230C9F184C0E0911D02F0911E028081C6 +:10590000823209F07EC007C0E0911D02F0911E02B4 +:105910008081823261F48C2F0E946D2C811104C031 +:105920008C2F0E94C02B1DC081E090E01AC08C2FEC +:105930000E946F2C811114C0C43179F048F4CB302F +:1059400079F0C03109F061C082E08093D70308C0CC +:10595000C93219F0C83321F058C01092D70355C08E +:1059600081E0817054C0C93291F120F5C43179F1E0 +:10597000B0F4C73009F047C08EE18093240282E37F +:10598000809323028AE08093220284E180932102A3 +:1059900088E08093200288E280931F0234C0CE51B9 +:1059A000C63088F5EC2FF0E0E451FD4F8081809304 +:1059B000D60329C0CE34E9F020F4CB3421F56AE0D7 +:1059C00013C0C13579F0C235F1F461E00DC08091AA +:1059D000D603882319F01092D60315C081E0809376 +:1059E000D70315C061E006C08091D6030E94FA2A51 +:1059F0000AC06AE08091D6030E94702B04C0109206 +:105A0000D70380E004C081E002C080E0AACFCF913C +:105A100008950E949B28811102C00E9477280E944D +:105A2000BC288093F20380FF02C0869501C080E00D +:105A30000C94D2058091F203982F9695292F30E08F +:105A4000233031054CF49F5F990F8170892B816061 +:105A50008093F2030E94C0288091F20386950C94F3 +:105A6000D2058091F203982F969591F09158990F55 +:105A70008170892B8093F2038E7F91E009F490E08E +:105A80008091F20390FB80F98093F2030E94C0287A +:105A90008091F20386950C94D2058091F203982FA1 +:105AA000909590FB80F98093F2030E94C02880912A +:105AB000F20380FF02C0869501C080E00C94D205FD +:105AC0009091F203892F86958F5F8F779170843044 +:105AD00028F4880F892B8093F20302C09093F2037D +:105AE0008091F2038E7F91E009F490E08091F203BF +:105AF00090FB80F98093F2030E94C0288091F2030A +:105B000086950C94D2052091F203922F96958927C1 +:105B1000982F990F822F8170892B8093F2038E7FAB +:105B200091E009F490E08091F20390FB80F980937A +:105B3000F2030E94C0288091F20386950C94D2054E +:105B40005058BB27AA270ED0D1C1C2D130F0C7D13F +:105B500020F031F49F3F11F41EF4B7C10EF4E0952C +:105B6000E7FB9FC1E92FD3D180F3BA176207730710 +:105B70008407950718F071F49EF5EBC10EF4E095DB +:105B80000B2EBA2FA02D0B01B90190010C01CA01F7 +:105B9000A0011124FF27591B99F0593F50F4503EA2 +:105BA00068F11A16F040A22F232F342F4427585F94 +:105BB000F3CF469537952795A795F0405395C9F7AC +:105BC0007EF41F16BA0B620B730B840BBAF0915064 +:105BD000A1F0FF0FBB1F661F771F881FC2F70EC003 +:105BE000BA0F621F731F841F48F4879577956795D6 +:105BF000B795F7959E3F08F0B3CF9395880F08F0BF +:105C00009927EE0F97958795089527D108F481E09D +:105C100008950CD06BC163D140F05AD130F021F41B +:105C20005F3F19F03EC1511195C14FC170D198F33A +:105C30009923C9F35523B1F3951B550BBB27AA270D +:105C400062177307840738F09F5F5F4F220F331F7F +:105C5000441FAA1FA9F333D00E2E3AF0E0E830D04B +:105C600091505040E695001CCAF729D0FE2F27D04E +:105C7000660F771F881FBB1F261737074807AB071C +:105C8000B0E809F0BB0B802DBF01FF2793585F4F91 +:105C90002AF09E3F510568F004C15CC15F3FECF300 +:105CA000983EDCF3869577956795B795F7959F5F56 +:105CB000C9F7880F911D9695879597F90895E1E0AA +:105CC000660F771F881FBB1F621773078407BA0709 +:105CD00020F0621B730B840BBA0BEE1F88F7E09564 +:105CE000089504D06894B11135C1089518D188F091 +:105CF0009F5790F0B92F9927B751A0F0D1F0660FB8 +:105D0000771F881F991F1AF0BA95C9F712C0B130D2 +:105D100081F01FD1B1E008951CC1672F782F88272B +:105D2000B85F39F0B93FCCF3869577956795B39511 +:105D3000D9F73EF490958095709561957F4F8F4F80 +:105D40009F4F0895E89409C097FB3EF49095809585 +:105D5000709561957F4F8F4F9F4F9923A9F0F92F31 +:105D600096E9BB279395F695879577956795B795AF +:105D7000F111F8CFFAF4BB0F11F460FF1BC06F5F95 +:105D80007F4F8F4F9F4F16C0882311F096E911C0A7 +:105D9000772321F09EE8872F762F05C0662371F0C8 +:105DA00096E8862F70E060E02AF09A95660F771FDC +:105DB000881FDAF7880F9695879597F9089588D008 +:105DC00018F011F08CD038F480C0C4C0E92F9FD0F7 +:105DD000B0F35523C9F3E7FB6217730784079507F0 +:105DE000A8F199F3E92FFF2788232AF03197660F4E +:105DF000771F881FDAF7952F5527442332F09150EB +:105E00005040220F331F441FD2F7BB27E91BF50B6D +:105E1000621B730B840BB109C1F222F4620F731F72 +:105E2000841FB11D31972AF0660F771F881FBB1F93 +:105E3000EFCF915050405AF041F0882332F0660F76 +:105E4000771F881F91505040C1F7939530C08695B9 +:105E5000779567959F5FD9F7F8CF990F0008550F91 +:105E6000AA0BE0E8FEEF16161706E807F907C0F0E0 +:105E700012161306E407F50798F0621B730B840BE8 +:105E8000950B39F40A2661F0232B242B252B21F4C2 +:105E900008950A2609F4A140A6958FEF811D811D62 +:105EA000089597F99F6780E870E060E008959F3F4C +:105EB00031F0915020F4879577956795B795880FC5 +:105EC000911D9695879597F908959FEF80EC089519 +:105ED00000240A94161617061806090608950024C9 +:105EE0000A9412161306140605060895092E039443 +:105EF000000C11F4882352F0BB0F40F4BF2B11F4B7 +:105F000060FF04C06F5F7F4F8F4F9F4F089557FD15 +:105F10009058440F551F59F05F3F71F04795880F17 +:105F200097FB991F61F09F3F79F0879508951216AE +:105F300013061406551FF2CF4695F1DF08C016165A +:105F400017061806991FF1CF86957105610508940B +:105F50000895E894BB2766277727CB0197F9089522 +:105F60007CDF08F48FEF08950BD0C0CFB1DF28F0AD +:105F7000B6DF18F0952309F094CFA7CF1124EACF0C +:105F8000C6DFA0F3959FD1F3950F50E0551F629F98 +:105F9000F001729FBB27F00DB11D639FAA27F00D82 +:105FA000B11DAA1F649F6627B00DA11D661F829FA9 +:105FB0002227B00DA11D621F739FB00DA11D621F8E +:105FC000839FA00D611D221F749F3327A00D611DAB +:105FD000231F849F600D211D822F762F6A2F11248D +:105FE0009F5750408AF0E1F088234AF0EE0FFF1FE0 +:105FF000BB1F661F771F881F91505040A9F79E3F17 +:10600000510570F04ECFA6CF5F3FECF3983EDCF326 +:10601000869577956795B795F795E7959F5FC1F753 +:10602000FE2B880F911D9695879597F90895FA0193 +:10603000EE0FFF1F30962105310599F161157105AD +:1060400061F48038BFE39B0749F16894903881057B +:1060500061F08038BFEF9B0741F0992342F5FF3F85 +:10606000E1053105210511F1E8940894E795D9017E +:10607000AA2329F4AB2FBE2FF85FD0F310C0FF5F27 +:1060800070F4A695E0F7F73950F019F0FF3A38F4BC +:106090009F779F930CD00F9007FC905808953EF087 +:1060A00014CF60E070E080E89FE308954FE79F77AA +:1060B0005F934F933F932F939ED02F913F914F919A +:1060C0005F9152DF05C019F40EF0EBCE42CFFDCE4A +:1060D00026DFC8F39638C0F707F80F92E8942BE351 +:1060E0003AEA48EB5FE74EDF0F920F920F924DB7FF +:1060F0005EB70F92C0D0E8EFF0E016D04F915F91FD +:10610000EF91FF91E595EE1FFF1F49F0FE57E06804 +:106110004427EE0F441FFA95E1F74195550B32D015 +:106120000F9007FE26C00895DF93CF931F930F9320 +:10613000FF92EF92DF927B018C01689405C0DA2E0A +:10614000EF011EDFFE01E894A5912591359145915F +:106150005591AEF3EF0106DDFE019701A801DA9437 +:1061600079F7DF90EF90FF900F911F91CF91DF9122 +:1061700008959B01AC0160E070E080E89FE349CDA9 +:1061800090CE95CECCDEE8F39923D9F3940F511D30 +:10619000BBF39150504094F059F0882332F0660FD1 +:1061A000771F881F91505040C1F79E3F510544F71B +:1061B000880F911D9695879597F908955F3FACF0EC +:1061C000983E9CF0BB27869577956795B79508F420 +:1061D000B1609395C1F7BB0F58F711F460FFE8CF9A +:1061E0006F5F7F4F8F4F9F4FE3CFB4CE0EF05FCEE8 +:1061F0006CCE689456CE93DEC8F39923D1F3C6F3E0 +:10620000DF93CF931F930F93FF92C92FDD2788232E +:106210002AF02197660F771F881FDAF720E030E019 +:1062200040E85FEB9FE3883920F0803E30F0219614 +:106230008F7787DCE0E2F1E003C083DCEDE4F1E09E +:1062400073DF8B01BE01EC01FB2E6F577109759551 +:10625000771F880B990B78DD28E132E741E35FE394 +:106260008FDEAF2D9801AE01FF900F911F91CF915E +:10627000DF9178DC3BCEFA01DC01AA0FBB1F9B014A +:10628000AC01BF5728F422273327442750781FC07A +:10629000B75188F4AB2F0024469537952795011CFC +:1062A000A395D2F3002069F0220F331F441FB3954A +:1062B000DAF30DD045CC61307105A0E88A07B94604 +:1062C00030F49B01AC0166277727882790783096B9 +:1062D00021F020833183428353830895AA1BBB1B83 +:1062E00051E107C0AA1FBB1FA617B70710F0A61BD6 +:1062F000B70B881F991F5A95A9F780959095BC01F7 +:10630000CD01089597FB072E16F4009407D077FD72 +:1063100009D00E946E3107FC05D03EF4909581951E +:106320009F4F0895709561957F4F0895EE0FFF1F61 +:106330000590F491E02D0994F999FECF92BD81BDAD +:10634000F89A992780B50895A8E1B0E042E050E0BE +:106350000C94C431262FF999FECF92BD81BDF89AD5 +:10636000019700B4021639F01FBA20BD0FB6F89499 +:10637000FA9AF99A0FBE08950196272F0E94AB3121 +:106380000C94AA31DC01CB01FC01F999FECF06C0C7 +:10639000F2BDE1BDF89A319600B40D9241505040E3 +:0863A000B8F70895F894FFCF4F +:1063A8000C52D02445000000410000DC44000000ED +:1063B8004152D0A4440000404100005C4400000069 +:1063C8004148F17644000000415C978A440000008F +:1063D800411FD592440000004152D0A4440000005F +:1063E800415CFFB844000000410AA7CF4400000008 +:1063F800410000DC44000000410AA7CF440000002F +:10640800410000DC44000000410000000000008062 +:106418004052D024450000404100000000000080A8 +:10642800400AA74F45000040410AA7CF440000009A +:10643800410000DC44000000410000000000008032 +:106448004052D024450000004100000000000080B8 +:10645800405CFF384500000041000000000000805B +:106468004052D02445000000410AA7CF4400000054 +:10647800410000DC440000004100000000000080F2 +:106488004052D024450000804110F176440000A01D +:106498004112F1F6440000004141909B440000A0E5 +:1064A8004112F1F64400000041050000003F0000E1 +:1064B800C8427B140915E614B2147E1401BC0328E3 +:1064C80008140A321E000002000400050007000933 +:1064D800000B000C000E001000110013001500172F +:1064E8000018001A001C001D001F002100230024B2 +:1064F800002600280029002B002D002F0030003234 +:106508000034003500370039003B004200450025C3 +:106518000026004300610060002000370064006529 +:1065280000660067004400460024004700314980A7 +:106538003F5D8B803FF8BF803FCAE1803F73ED80AD +:106548003FCAE1803FF8BF803F5D8B803F31498083 +:106558003F0000803FF16D7F3F75EA7E3F4C827EB1 +:106568003F833F7E3F84287E3F833F7E3F4C827E31 +:106578003F75EA7E3FF16D7F3F0000803F3F4D361B +:10658800B90A6C0A360AE209FB09140A0102030473 +:06659800050607080900DA :00000001FF diff --git a/quantum/audio/voices.c b/quantum/audio/voices.c index 0921bd5931..d2316ba1b3 100644 --- a/quantum/audio/voices.c +++ b/quantum/audio/voices.c @@ -54,28 +54,28 @@ float voice_envelope(float frequency) { } break; - case octave_crunch: - polyphony_rate = 0; - switch (compensated_index) { - case 0 ... 9: - case 20 ... 24: - case 30 ... 32: - frequency = frequency / 2; - note_timbre = TIMBRE_12; - break; - - case 10 ... 19: - case 25 ... 29: - case 33 ... 35: - frequency = frequency * 2; - note_timbre = TIMBRE_12; - break; + // case octave_crunch: + // polyphony_rate = 0; + // switch (compensated_index) { + // case 0 ... 9: + // case 20 ... 24: + // case 30 ... 32: + // frequency = frequency / 2; + // note_timbre = TIMBRE_12; + // break; + + // case 10 ... 19: + // case 25 ... 29: + // case 33 ... 35: + // frequency = frequency * 2; + // note_timbre = TIMBRE_12; + // break; - default: - note_timbre = TIMBRE_12; - break; - } - break; + // default: + // note_timbre = TIMBRE_12; + // break; + // } + // break; case duty_osc: // This slows the loop down a substantial amount, so higher notes may freeze -- cgit v1.2.1 From 9edcfcdf6f165b0896afded138fd0dcb97c552c0 Mon Sep 17 00:00:00 2001 From: Erez Zukerman Date: Fri, 29 Apr 2016 22:39:05 +0300 Subject: Adds brackets to inner vertical keys in experimental layout --- .../keymaps/erez_experimental/erez_experimental.hex | 4 ++-- .../ergodox_ez/keymaps/erez_experimental/keymap.c | 20 ++++++++++---------- .../ergodox_ez/keymaps/erez_experimental/readme.md | 9 +++++++++ 3 files changed, 21 insertions(+), 12 deletions(-) diff --git a/keyboard/ergodox_ez/keymaps/erez_experimental/erez_experimental.hex b/keyboard/ergodox_ez/keymaps/erez_experimental/erez_experimental.hex index bb78a5ea47..ab32e94dd2 100644 --- a/keyboard/ergodox_ez/keymaps/erez_experimental/erez_experimental.hex +++ b/keyboard/ergodox_ez/keymaps/erez_experimental/erez_experimental.hex @@ -17,12 +17,12 @@ :1001000016001B00E104C1002000080007000600E3 :1001100050002C0021001500090019004F004A0072 :10012000220017000A000500000065745000015409 -:100130000000007F0000E3004F0001540000007742 +:1001300000002F7F0000E3004F00015400003077E3 :100140000000E20023001C000B00110000002971D8 :10015000240018000D74100052004B0025000C0004 :100160000E00360051002800260012000F00370054 :100170002F002B81270013003382387130004E008E -:100180002D00310034780130C10000000100010071 +:100180002D003100347801302D0000000100010005 :1001900001000100010000003A001E0022002602BA :1001A000010001003B001F002300270201000100A5 :1001B0003C00200024002F004B0101003D002100E5 diff --git a/keyboard/ergodox_ez/keymaps/erez_experimental/keymap.c b/keyboard/ergodox_ez/keymaps/erez_experimental/keymap.c index f319013312..bf5a974bfe 100644 --- a/keyboard/ergodox_ez/keymaps/erez_experimental/keymap.c +++ b/keyboard/ergodox_ez/keymaps/erez_experimental/keymap.c @@ -20,9 +20,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| * | BkSp | A | S | D | F | G |------| |------| H | Alt/J| K | L |; / L2| LGui/' | * |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------| - * |LShift/(|Z/Ctrl| X | C | V | B | | | | N | M | , | . |//Ctrl|RShift/)| + * |LShift/(|Z/Ctrl| X | C | V | B | [ | | ] | N | M | , | . |//Ctrl|RShift/)| * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * |Grv/L1| '" |AltShf| Left | Right| | Up | Down | [ | ] | ~L1 | + * |Grv/L1| '" |AltShf| Left | Right| | Up | Down | [ | ] | - | * `----------------------------------' `----------------------------------' * ,-------------. ,-------------. * | App | LGui | | Alt |Ctrl/Esc| @@ -39,18 +39,18 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT, KC_DELT, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB), KC_BSPC, KC_A, KC_S, KC_D, KC_F, KC_G, - LSFTO, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO), + LSFTO, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_LBRC), LT(SYMB,KC_GRV),KC_QUOT, LALT(KC_LSFT), KC_LEFT, KC_RGHT, ALT_T(KC_APP), KC_LGUI, KC_HOME, - KC_SPC,KC_FN1,KC_END, + KC_SPC,KC_FN1,KC_END, // right hand - KC_RGHT, KC_6,KC_7, KC_8, KC_9, KC_0, KC_MINS, - TG(SYMB), KC_Y,KC_U, KC_I, KC_O, KC_P, KC_BSLS, - KC_H,ALT_T(KC_J),KC_K, KC_L, LT(MDIA,KC_SCLN),GUI_T(KC_QUOT), - MEH_T(KC_NO),KC_N,KC_M, KC_COMM,KC_DOT, CTL_T(KC_SLSH), RSFTC, - KC_UP, KC_DOWN,KC_LBRC,KC_RBRC, KC_FN1, - KC_LALT, CTL_T(KC_ESC), + KC_RGHT, KC_6,KC_7, KC_8, KC_9, KC_0, KC_MINS, + TG(SYMB), KC_Y,KC_U, KC_I, KC_O, KC_P, KC_BSLS, + KC_H,ALT_T(KC_J),KC_K, KC_L, LT(MDIA,KC_SCLN),GUI_T(KC_QUOT), + MEH_T(KC_RBRC),KC_N,KC_M, KC_COMM,KC_DOT, CTL_T(KC_SLSH), RSFTC, + KC_UP, KC_DOWN,KC_LBRC,KC_RBRC, KC_MINS, + KC_LALT, CTL_T(KC_ESC), KC_PGUP, KC_PGDN,LT(SYMB, KC_TAB), KC_ENT ), diff --git a/keyboard/ergodox_ez/keymaps/erez_experimental/readme.md b/keyboard/ergodox_ez/keymaps/erez_experimental/readme.md index 82e1c5e4a0..205280e290 100644 --- a/keyboard/ergodox_ez/keymaps/erez_experimental/readme.md +++ b/keyboard/ergodox_ez/keymaps/erez_experimental/readme.md @@ -4,6 +4,15 @@ This is my personal layout which I use to test out ideas which may or may not ma Changelog: +## Apr 29, 2016: + +* Tweaks the Hyper and Meh key to send brackets when tapped +* Turns bottom-right key into a minus/underscore (easy to reach with the right pinky) + +## Apr 25, 2016: + +* Made it so that the right and left Shift keys send opening and closing parens ( ) when tapped + ## Feb 11, 2016: * Updated ASCII legend for thumb clusters -- cgit v1.2.1 From 711809fdac9773f224c2251ecdcc49d4acd581f1 Mon Sep 17 00:00:00 2001 From: Thomas Anderson Date: Fri, 29 Apr 2016 14:42:31 -0700 Subject: Finalized my personal layout --- keyboard/ergodox_ez/keymaps/techtomas/keymap.c | 231 ++++ .../ergodox_ez/keymaps/techtomas/techtomas.hex | 1166 ++++++++++++++++++++ 2 files changed, 1397 insertions(+) create mode 100644 keyboard/ergodox_ez/keymaps/techtomas/keymap.c create mode 100644 keyboard/ergodox_ez/keymaps/techtomas/techtomas.hex diff --git a/keyboard/ergodox_ez/keymaps/techtomas/keymap.c b/keyboard/ergodox_ez/keymaps/techtomas/keymap.c new file mode 100644 index 0000000000..b7d3b9a116 --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/techtomas/keymap.c @@ -0,0 +1,231 @@ +#include "ergodox_ez.h" +#include "debug.h" +#include "action_layer.h" + +#define BASE 0 // default layer +#define SYMB 1 // symbols +#define MDIA 2 // media +#define CNTL 3 // control layer + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* Keymap 0: Basic layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | L1/` | 1 | 2 | 3 | 4 | 5 |CmdSpc| | - | 6 | 7 | 8 | 9 | 0 | = | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * |Meh/Tab | Q | W | E | R | T | STab | | L3 | Y | U | I | O | P | Meh/\ | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * |Hyp/Esc | L3/A | S | D | F | G |------| |------| H | J | K | L | L2/; | Hyp/' | + * |--------+------+------+------+------+------| Tab | |AltGui|------+------+------+------+------+--------| + * | LShift | L3/Z | X | C | V | B | | | | N | M | , | . | L2// | RShift | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * |LCtrl | LAlt | LGui |Left |Right | | UP | Down | [ | ] | L1 | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | LCtl | LGui | | LAlt |ShfGui| + * ,-------|------|------| |------+--------+------. + * | | | Home | | PgUp | | | + * | Backsp|Delete|------| |------| Enter | Space | + * | | | End | | PgDn | | | + * `--------------------' `-----------------------' + */ +// If it accepts an argument (i.e, is a function), it doesn't need KC_. +// Otherwise, it needs KC_* +[BASE] = KEYMAP( // layer 0 : default + // left hand + LT(SYMB,KC_GRV), KC_1, KC_2, KC_3, KC_4, KC_5, LGUI(KC_SPC), + MEH_T(KC_TAB), KC_Q, KC_W, KC_E, KC_R, KC_T, S(KC_TAB), + ALL_T(KC_ESC), LT(CNTL,KC_A), KC_S, KC_D, KC_F, KC_G, + KC_LSFT, LT(CNTL,KC_Z), KC_X, KC_C, KC_V, KC_B, KC_TAB, + KC_LCTL, KC_LALT, KC_LGUI, KC_LEFT, KC_RIGHT, + KC_LCTL, KC_LGUI, + KC_HOME, + KC_BSPC, KC_DELETE, KC_END, + // right hand + KC_MINS, KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQL, + KC_FN3, KC_Y, KC_U, KC_I, KC_O, KC_P, MEH_T(KC_BSLS), + KC_H, KC_J, KC_K, KC_L, LT(MDIA,KC_SCLN), ALL_T(KC_QUOT), + LALT(KC_LGUI), KC_N, KC_M, KC_COMM, KC_DOT, LT(MDIA,KC_SLSH), KC_RSFT, + KC_UP, KC_DOWN, KC_LBRC, KC_RBRC, KC_FN1, + KC_LALT, S(KC_LGUI), + KC_PGUP, + KC_PGDN,KC_ENT, KC_SPC + ), +/* Keymap 1: Symbol Layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | ! | @ | { | } | | | < | | > | : | 7 | 8 | 9 | / | F12 | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | # | $ | ( | ) | ` |------| |------| ; | 4 | 5 | 6 | * | Prnt | + * |--------+------+------+------+------+------| F14 | | F15 |------+------+------+------+------+--------| + * | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | - | Entr | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | | | | 0 | . | = | + | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | | | + * | | |------| |------| | | + * | | | | | | | | + * `--------------------' `--------------------' + */ +// SYMBOLS +[SYMB] = KEYMAP( + // left hand + KC_TRNS,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, + KC_TRNS,KC_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_PIPE,S(KC_COMM), + KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV, + KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_F14, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS, + KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS, + // right hand + KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + S(KC_DOT), KC_COLN, KC_7, KC_8, KC_9, KC_BSLS, KC_F12, + KC_SCLN, KC_4, KC_5, KC_6, KC_ASTR, KC_PSCR, + KC_F15, KC_AMPR, KC_1, KC_2, KC_3, KC_MINS, KC_ENT, + KC_0, KC_DOT, KC_EQL, KC_PLUS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS +), +/* Keymap 2: Media Layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | | | | | | | | | | | | | | | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | | | | | | | | | | | | | | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | | | |------| |------| | | | | | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | | | | | | | | | | | | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | Prev | Next | | Prev | Next | + * ,------|------|------| |------+------+------. + * | | | VolUp| | VolUp| | | + * | Play | Mute |------| |------| Mute | Play | + * | | | VolDn| | VolDn| | | + * `--------------------' `--------------------' + */ +// Control +[MDIA] = KEYMAP( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_MPRV, KC_MNXT, + KC_VOLU, + KC_MPLY, KC_MUTE, KC_VOLD, + // right hand + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_MPRV, KC_MNXT, + KC_VOLU, + KC_VOLD, KC_MUTE, KC_MPLY +), +/* Keymap 3: Control Layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | Sleep | | | | | | Pwr | | | | | | | | | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | | | MsUp | | | | | | | | | | | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | |MsLeft|MsDown|MsRght| Lclk |------| |------| Lft | Down | Up | Right| | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | | | Rclk | | | | | | | | | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | | | + * | | |------| |------| | | + * | | | | | | | | + * `--------------------' `--------------------' + */ +// Control +[CNTL] = KEYMAP( + KC_SLEP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PWR, + KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_BTN1, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN2, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + // right hand + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS +), +}; + +const uint16_t PROGMEM fn_actions[] = { + [1] = ACTION_LAYER_TAP_TOGGLE(SYMB), + [2] = ACTION_LAYER_TAP_TOGGLE(MDIA), + [3] = ACTION_LAYER_TAP_TOGGLE(CNTL) // FN1 - Momentary Layer 1 (Symbols) +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + switch(id) { + case 0: + if (record->event.pressed) { + register_code(KC_RSFT); + } else { + unregister_code(KC_RSFT); + } + break; + } + return MACRO_NONE; +}; + +// Runs just one time when the keyboard initializes. +void matrix_init_user(void) { + +}; + +// Runs constantly in the background, in a loop. +void matrix_scan_user(void) { + + uint8_t layer = biton32(layer_state); + + ergodox_board_led_off(); + ergodox_right_led_1_off(); + ergodox_right_led_2_off(); + ergodox_right_led_3_off(); + switch (layer) { + // TODO: Make this relevant to the ErgoDox EZ. + case 1: + ergodox_right_led_1_on(); + break; + case 2: + ergodox_right_led_2_on(); + break; + case 3: + ergodox_right_led_3_on(); + break; + default: + // none + break; + } + +}; diff --git a/keyboard/ergodox_ez/keymaps/techtomas/techtomas.hex b/keyboard/ergodox_ez/keymaps/techtomas/techtomas.hex new file mode 100644 index 0000000000..8aa849208f --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/techtomas/techtomas.hex @@ -0,0 +1,1166 @@ +:100000000C94BB020C9402030C9402030C940203A4 +:100010000C9402030C9402030C9402030C9402034C +:100020000C9402030C9402030C94D20C0C94A40DB7 +:100030000C9402030C9402030C9402030C9402032C +:100040000C9402030C9470220C9402030C9402038F +:100050000C9402030C94001C0C9402030C940203F5 +:100060000C9402030C9402030C9402030C940203FC +:100070000C9402030C9402030C9402030C940203EC +:100080000C9402030C9402030C9402030C940203DC +:100090000C9402030C9402030C9402030C940203CC +:1000A0000C9402030C9402030C940203110E330E01 +:1000B000210F330E210F780E9B0E210FF00E030F30 +:1000C000EF11EF112C122C126F12AD12C614C614C0 +:1000D000C612C614C713C7139A14C614C614B11493 +:1000E0000000F0A1F0A2F0A335812B77297FE10079 +:1000F000E00000001E00140004831D83E2004D0098 +:100100001F001A0016001B00E3004C00200008002E +:100110000700060050002A00210015000900190000 +:100120004F004A00220017000A0005000000E0000E +:100130002C082B0200002B000000E3002D00C30060 +:100140000000E3040000E20023001C000B0011008B +:100150000000E302240018000D00100052004B00C4 +:1001600025000C000E00360051002C002600120065 +:100170000F0037002F002800270013003382388239 +:1001800030004E002E003177347FE500C1000000C2 +:100190000100010001000100010000003A001E0200 +:1001A00020022202010001003B001F022102230263 +:1001B000010001003C002F0226022F000100010077 +:1001C0003D00300227023000010001003E003102F4 +:1001D0003500350200000100010036020000690010 +:1001E000000001000100370200006A000000010069 +:1001F0003F003302330024020000010040002400CD +:1002000021001E00270001004100250022001F00E0 +:100210003700010042002600230020002E000100CC +:100220004300310025022D002E020100440045004C +:10023000460028000100000001000100010001004B +:100240000100000001000100010001000100AA00FE +:1002500001000100010001000100A80001000100EF +:10026000010001000100AE000100010001000100D9 +:100270000100A90001000100010001000000AC0024 +:1002800001000100000001000000AB0001000100BE +:10029000000001000000AC000100010001000100AD +:1002A0000000AB0001000100010001000100A900F5 +:1002B00001000100010001000100AE000100010089 +:1002C000010001000100A80001000100010001007F +:1002D0000100AA000100010001000100010000006E +:1002E000A600010001000100010000000100010062 +:1002F000010001000100010001000100F200010005 +:10030000010001000100F000F10001000100010006 +:1003100001000100F30001000100010001000100E3 +:10032000F400F50000000100A5000100000001003C +:1003300000000100010001000000010000000100B8 +:100340000100010050000100000001000100010057 +:1003500051000100010001000100010052000100F4 +:1003600001000100010001004F0001000100010037 +:100370000100010001000100010001000100010075 +:100380000100010001000000160345007200670033 +:100390006F0044006F007800200045005A00000004 +:1003A00016034500720067006F0044006F0078007C +:1003B000200045005A0000000403090409026D00F2 +:1003C000040100A0FA090400000103010100092151 +:1003D00011010001223F000705810308000A0904FA +:1003E00001000103010200092111010001224D0059 +:1003F0000705820308000A09040200010300000047 +:100400000921110100012236000705830308000AB3 +:100410000904030001030000000921110100012269 +:1004200039000705840310000112011001000000CB +:1004300008EDFE071301000102000105010906A1F4 +:1004400001050719E029E7150025019508750181C7 +:100450000205081901290595057501910295017597 +:100460000391010507190029771500250195787575 +:10047000018102C005010980A10185021601002643 +:10048000B7001A01002AB700751095018100C00558 +:100490000C0901A1018503160100269C021A010026 +:1004A0002A9C02751095018100C005010902A10175 +:1004B0000901A10005091901290515002501950566 +:1004C000750181029501750381010501093009312A +:1004D0001581257F95027508810609381581257FCC +:1004E000950175088106050C0A38021581257F954E +:1004F0000175088106C0C005010906A1010507199B +:10050000E029E7150025019508750181029501751F +:1005100008810105081901290595057501910295C4 +:1005200001750391010507190029FF150025FF95A5 +:100530000675088100C000000000000000000000F7 +:1005400000010204060A0F17202C3A4A5D71879DAC +:10055000B3C7DAE9F5FCFFFCF5E9DAC7B39D8771AB +:100560005D4A3A2C20170F0A060402010000000021 +:1005700000000000000011241FBECFEFDAE0DEBF54 +:10058000CDBF04B603FE27C08091EE019091EF012C +:10059000A091F001B091F1018730904BA740B04B92 +:1005A000D1F41092EE011092EF011092F00110922E +:1005B000F10114BE84B7877F84BF0FB6F894A89565 +:1005C00080916000886180936000109260000FBE8F +:1005D000E0E0FFE3099511E0A0E0B1E0ECE8F8E429 +:1005E00002C005900D92A433B107D9F721E0A4E32E +:1005F000B1E001C01D92AE3EB207E1F70E94130ABE +:100600000C9444240C94000061110BC0FC01828105 +:10061000882321F085EE0E94831003C085EE0E949E +:100620004B1180E090E0089508956091B1017091C0 +:10063000B2018091B3019091B4010E94291B569898 +:100640005E9825982D9826982E9827982F98823076 +:1006500039F0833041F0813041F4259A2D9A089584 +:10066000269A2E9A0895279A2F9A08950C94150386 +:1006700056985E9825982D9826982E9827982F980A +:100680008FEF90E0909389008093880090938B0087 +:1006900080938A0090938D0080938C00259A2D9AE8 +:1006A0002FEF80E792E0215080409040E1F700C0BA +:1006B0000000269A2E9A2FEF80E792E0215080408A +:1006C0009040E1F700C00000279A2F9A2FEF80E7B3 +:1006D00092E0215080409040E1F700C00000259852 +:1006E0002D982FEF80E792E0215080409040E1F775 +:1006F00000C0000026982E982FEF80E792E021504E +:1007000080409040E1F700C0000027982F9856984D +:100710005E9825982D9826982E9827982F980895BA +:1007200089EA8093800089E08093810024982C9846 +:100730003F988AB18F748AB96E98479A8BB1806B53 +:100740008BB9769A0E9438030C94140380E280934C +:1007500000018091340181110EC00E94F50381E0F7 +:10076000809334012FEF83ED90E32150804090403F +:10077000E1F700C0000080E40E94FB0380930001C9 +:1007800081112EC00E94250480930001811128C090 +:100790000E94250480930001811122C08FE30E94F2 +:1007A00025048093000181111BC00E941D0480E478 +:1007B0000E94FB0380930001811112C08CE00E9413 +:1007C00025048093000181110BC00E9425048093B1 +:1007D0000001811105C08FE30E9425048093000170 +:1007E0000E941D048091000108951092B9008AE0D2 +:1007F0008093B800089594EA9093BC009091BC0057 +:1008000097FFFCCF9091B900987F983021F09031FC +:1008100011F081E008958093BB0084E88093BC00D0 +:100820008091BC0087FFFCCF8091B900887F883120 +:1008300011F0803471F780E0089584E98093BC0062 +:100840008091BC0084FDFCCF08958093BB0084E8B8 +:100850008093BC008091BC0087FFFCCF9091B900D1 +:10086000987F81E0983209F480E0089584E88093CD +:10087000BC008091BC0087FFFCCF8091BB00089535 +:1008800080910001811115C080E40E94FB038093D8 +:10089000000181110CC082E10E94250480930001B7 +:1008A000811105C08FEF0E942504809300010E94F2 +:1008B0001D0484B1807F84B985B1807F85B98AB1F8 +:1008C000837F8AB98BB1837F8BB93E984698089510 +:1008D0000E94A603809300010E94400480B38C70A4 +:1008E00080BB81B3836F81BBA6E3B1E0E4E4F1E0B8 +:1008F0008EE08E0F11921D928E13FCCF0C949003FC +:10090000BF92CF92DF92EF92FF920F931F93CF93FC +:10091000DF9380910001882379F0809135018F5F0A +:1009200080933501811108C00E94A60380930001C5 +:10093000811102C00E94380306E311E0C0E0D0E05C +:10094000DD24D39482E0C82EEE24E394F12CC7304A +:10095000D10500F580910001811164C080E40E94FE +:10096000FB0380930001811112C082E10E942504E3 +:100970008093000181110BC0C7010C2E01C0880FAC +:100980000A94EAF780950E942504809300010E9452 +:100990001D0448C0CA30A1F028F4C83059F0C9304D +:1009A00061F005C0CC3089F070F0CD3089F0209A2C +:1009B000289810C0219A29980DC0229A2A980AC016 +:1009C000239A2B9807C0529A01C0539A5B9802C091 +:1009D0003E9A469890EA9A95F1F79FB1799902C0AC +:1009E00082E001C080E091709D25982B7C9902C027 +:1009F00084E001C080E0892B7D9902C038E001C00D +:100A000030E0832B7E9902C020E101C020E0822BE0 +:100A10009FB19095991F9927991F9295990F907E54 +:100A2000892B0FC080910001811149C080E40E9490 +:100A3000FB0380930001882379F1B12C0E941D04EF +:100A40008B2DF8019081981719F08083C0920101D5 +:100A50000E94400421960F5F1F4FCE30D10509F050 +:100A600076CF80910101882361F18150809301014B +:100A7000882339F08FE99FE00197F1F700C000006B +:100A800020C0A4E4B1E0E6E3F1E0CF01825F919100 +:100A90009D938E13FCCF15C083E10E9425048093A3 +:100AA00000018111CACF81E40E94FB038093000101 +:100AB0008111C3CF0E943604B82EB094BFCF80E01E +:100AC000C0CF0E94360381E0DF91CF911F910F913B +:100AD000FF90EF90DF90CF90BF900895E82FF0E067 +:100AE000EC5BFE4F808108950895089596E0799F0C +:100AF000F001112494E5899FE00DF11D1124E60F0A +:100B0000F11DEE0FFF1FE851FF4F8591949108955D +:100B1000880F991FFC01E05AF04085919491089547 +:100B2000880F991FFC01E052FF4F85919491089521 +:100B30000F931F93CF93DF93EC018115904350F5F2 +:100B4000C11580E2D80708F0B3C0CB3BD10590F4C3 +:100B5000C83AD10508F05AC0C53AD10508F04BC0D3 +:100B6000C430D10508F0BBC1219709F0B5C101E03F +:100B700010E0F5C1CF3FD10511F008F0B0C1C03F82 +:100B8000D10508F092C0CE01805E9109089708F463 +:100B9000A6C1A2C1C11591E5D907A8F4C23020E5CC +:100BA000D20708F09EC0C11580E5D80709F485C0BA +:100BB00008F091C0C11520E4D20708F08DC1DD27EF +:100BC0008E01106CCCC1C11580E8D80758F4C1154E +:100BD00090E7D90708F07CC1C11520E6D20708F4D8 +:100BE00022C17AC1C11580E9D80708F075C1DF704C +:100BF0008E01106AB4C1C53AD10509F472C1C63A72 +:100C0000D10509F071C102E810E4A9C1C83AD105C3 +:100C100009F46DC1C93AD10509F46CC1CA3AD105CC +:100C200009F46BC1CB3AD10509F46AC1CC3AD105BC +:100C300009F469C1CD3AD10509F468C1C03BD105B9 +:100C400009F467C1CE3AD10509F466C1CF3AD1059E +:100C500009F465C1C13BD10509F464C1C23BD105AA +:100C600009F463C1C33BD10509F462C1C43BD1059A +:100C700009F461C1C53BD10509F460C1C63BD1058A +:100C800009F45FC1C73BD10509F45EC1C83BD1057A +:100C900009F45DC1C93BD10509F45CC1CA3BD1056A +:100CA00009F45BC100E014E45AC18E01106557C11C +:100CB000CE019F700E94900553C10E94EA149FEFDD +:100CC00024E38CE0915020408040E1F700C0000018 +:100CD0000E94251C44C18091CD0181608093CD018B +:100CE0003EC10E94CE1D811102C00E94B41D0E940F +:100CF000EB1D90E09093EE018093ED01C23090E502 +:100D0000D90721F48091ED01816086C0C43020E5CF +:100D1000D20721F48091ED0182607EC0C63080E56B +:100D2000D80721F48091ED01846076C0C83090E549 +:100D3000D90719F48091ED0127C0CA3020E5D20708 +:100D400021F48091ED01806167C0CC3080E5D80747 +:100D500021F48091ED0180625FC0CE3090E5D9072B +:100D600021F48091ED01806457C0C03120E5D207A5 +:100D700021F48091ED0180684FC0C23180E5D80731 +:100D800029F48091ED018460886046C0C33090E50D +:100D9000D90721F48091ED018E7F3EC0C53020E55A +:100DA000D20721F48091ED018D7F36C0C73080E5F8 +:100DB000D80721F48091ED018B7F2EC0C93090E5DA +:100DC000D90719F48091ED0126C0CB3020E5D20778 +:100DD00021F48091ED018F7E1FC0CD3080E5D807D2 +:100DE00021F48091ED018F7D17C0CF3090E5D907B8 +:100DF00021F48091ED018F7B0FC0C13120E5D20736 +:100E000021F48091ED018F7707C0C331D04531F4D3 +:100E10008091ED018B7F877F8093ED018091ED01C3 +:100E20000E94EF1D9CC08D2F99278F7099278130CC +:100E30009105D9F49E012370332702C0880F991FB2 +:100E40002A95E2F79C688E0144E0000F111F4A9535 +:100E5000E1F700271370802B912B53E0CC0FDD1F9F +:100E60005A95E1F7C076DD272FC08230910531F425 +:100E7000DC2FCC278E01016F106A71C08330910581 +:100E800069F4CE018370992701E010E002C0000FE1 +:100E9000111F8A95E2F7C8019C680FC0049709F0FA +:100EA0005EC0CE018370992701E010E002C0000F00 +:100EB000111F8A95E2F7C8019A6823E0CC0FDD1F65 +:100EC0002A95E1F7C07ED7708C010C2B1D2B47C0F3 +:100ED000DF708E01106243C000E010E040C08E0160 +:100EE0003EC001E810E43BC003E810E438C002EE65 +:100EF00014E435C009EE14E432C00AEE14E42FC045 +:100F000005EB14E42CC006EB14E429C007EB14E451 +:100F100026C00CEC14E423C00DEC14E420C003E85C +:100F200015E41DC00AE815E41AC002E915E417C06B +:100F300004E915E414C001E216E411C003E216E46A +:100F40000EC004E216E40BC005E216E408C006E297 +:100F500016E405C007E216E402C00AE216E4C8017E +:100F6000DF91CF911F910F91089596E0799FF00145 +:100F7000112494E5899FE00DF11D1124E60FF11D68 +:100F8000EE0FFF1FE851FF4F85919491803E910530 +:100F9000E0F4803C910558F58133910509F46FC068 +:100FA00048F48932910509F463C08A32910509F445 +:100FB0006DC072C089339105E9F082389105D1F096 +:100FC0008533910509F44DC067C0833E910581F1D9 +:100FD00038F4803E9105B9F0823E9105D9F05CC0AD +:100FE000863E910561F1873E9105A1F155C00E94B1 +:100FF000880508952091ED0120FD02C021FF4CC01D +:1010000080EE90E049C08091ED0180FFF9CF89E347 +:1010100090E042C08091ED0182FF0EC08091ED0111 +:1010200084FF03C080E090E037C083EE90E034C0DE +:101030008091ED0182FFF2CF82EE90E02DC0809191 +:10104000ED0183FF0BC08091ED0184FDEBCF87EEB6 +:1010500090E022C08091ED0183FFF5CF86EE90E015 +:101060001BC08091ED0185FF07C089E290E014C0AC +:101070008091ED0185FFF9CF85E390E00DC080916F +:10108000ED0186FF07C08AE290E006C08091ED0185 +:1010900086FFF9CF81E390E00E94980508950895B6 +:1010A0000C944F08809162010895CF93DF9300D094 +:1010B0001F92CDB7DEB79C018091E401843019F511 +:1010C00093E099833B832A839093E9008FEF90917B +:1010D000E800815095FD06C095ED9A95F1F7000066 +:1010E0008111F5CF8091E80085FF0DC040E050E010 +:1010F00063E070E0CE0101960E94C20A8091E80090 +:101100008E778093E8000F900F900F90DF91CF9132 +:101110000895CF93DF9300D01F92CDB7DEB7209113 +:10112000E401243021F522E029839B838A8383E034 +:101130008093E9008FEF9091E800815095FD06C003 +:1011400095ED9A95F1F700008111F5CF8091E800B7 +:1011500085FF0DC040E050E063E070E0CE010196F5 +:101160000E94C20A8091E8008E778093E8000F9079 +:101170000F900F90DF91CF9108952091E4012430DA +:10118000F1F422E02093E9002FEF3091E8002150A4 +:1011900035FD06C035ED3A95F1F700002111F5CF88 +:1011A0002091E80025FF0BC040E050E065E070E0D2 +:1011B0000E94C20A8091E8008E778093E80008952B +:1011C000CF93DF93EC019091E401943009F046C095 +:1011D00080910C018823D9F080910D018823B9F00A +:1011E0009093E9008FEF9091E800815095FD06C043 +:1011F00095E19A95F1F700008111F5CF8091E80013 +:1012000085FF2CC040E050E060E170E017C081E055 +:101210008093E9008FEF9091E800815095FD06C022 +:1012200095ED9A95F1F700008111F5CF8091E800D6 +:1012300085FF14C040E050E068E070E0CE010E94FD +:10124000C20A8091E8008E778093E80080E1FE0179 +:10125000A2E5B1E001900D928A95E1F7DF91CF917F +:1012600008958091E301811109C00E94570C0E94EA +:10127000B40C8091E20084608093E20008951092A3 +:10128000E301089508950C945D220E94BB1B0E9407 +:1012900063220E945A0F0C94500842E061EC81E0F6 +:1012A0000E94D10B42E061EC82E00E94D10B42E04F +:1012B00061EC83E00E94D10B42E161EC84E00C948C +:1012C000D10B8091E601833009F455C030F48130B0 +:1012D00071F0823009F48EC008958A3009F47AC022 +:1012E0008B3009F460C0893009F09CC020C0809127 +:1012F000E501813A09F096C08091E800877F8093EC +:10130000E8008091E9019091EA01892B21F460E1E4 +:1013100082E591E003C060E080E090E070E00E9430 +:101320000D0B8091E8008B778093E8000895809101 +:10133000E501813209F076C08091E9019091EA01DE +:10134000009719F0039709F06DC08091E800877F3E +:101350008093E8008091E80082FD05C08091E4015F +:101360008111F8CF5FC08091F1008093620180917C +:10137000E8008B7753C08091E501813A09F052C0B3 +:101380008091E9019091EA01892B09F04BC080918D +:10139000E800877F8093E8008091E80080FFFCCF21 +:1013A00080910C0136C08091E5018132D9F58091A0 +:1013B000E9019091EA01892BA9F58091E800877FE6 +:1013C0008093E8000E94060C8091E70180930C0155 +:1013D0000C94EA148091E501813221F58091E800B6 +:1013E000877F8093E8000E94060C8091E80180933B +:1013F000630108958091E501813AA1F48091E800AC +:10140000877F8093E8008091E80080FFFCCF809187 +:1014100063018093F1008091E8008E778093E8006B +:101420000C94060C089584B7877F84BF0FB6F89498 +:10143000A8958091600088618093600010926000A0 +:101440000FBE90E080E80FB6F8948093610090930F +:1014500061000FBE0E94A90F0E94570C0E94B40C9D +:101460008091E20084608093E20078940E943A0FB9 +:101470000E94AB0F82E091E00E94550F0E944B2228 +:101480008091E401853069F40E94791B8091E2012A +:101490008823B1F30E94A71B882391F30E94AC0A12 +:1014A000EFCF0E94B10FECCF292F33272330310526 +:1014B000C9F064F42130310581F02230310509F0A2 +:1014C00043C08DE690E02CEB33E042C02132310581 +:1014D000F1F02232310541F137C082E190E029E29A +:1014E00034E036C099278130910541F08230910572 +:1014F00041F0892B49F5E8EBF3E005C0E0EAF3E0C1 +:1015000002C0E8E8F3E0849190E09F0121C06430DC +:10151000D8F4E62FF0E0EE0FFF1FEE5DFE4F2081C6 +:10152000318189E090E014C0643070F470E0FB0118 +:10153000EE0FFF1FE65EFE4F20813181FB01EA5E68 +:10154000FE4F808190E004C080E090E020E030E039 +:10155000FA0131832083089580E189BD82E189BD4C +:1015600009B400FEFDCF8091D8008F7D8093D80014 +:101570008091E00082608093E0008091E00081FD36 +:10158000FCCF0895CF92DF92EF92FF920F931F93BB +:10159000CF93DF93EC018B016A010E94250C81112E +:1015A00033C0C114D10439F0F60180819181081B48 +:1015B000190BC80FD91FE12CF12C0115110519F1D8 +:1015C0008091E80085FD16C08091E8008E778093B9 +:1015D000E800C114D10449F0F60180819181E80E40 +:1015E000F91EF182E08285E00FC00E94250C88235D +:1015F00021F30AC089918093F10001501109FFEF96 +:10160000EF1AFF0ADACF80E0DF91CF911F910F919F +:10161000FF90EF90DF90CF9008952091EB013091F3 +:10162000EC012617370748F06115710539F4209150 +:10163000E8002E772093E80001C0B90140E0611571 +:101640007105A9F12091E401222309F443C025305A +:1016500009F442C02091E80023FD40C02091E80039 +:1016600022FD32C02091E80020FFE9CF4091F30035 +:101670002091F20030E0342BFC01CF01611571059F +:1016800059F02830310540F481918093F100615088 +:1016900071092F5F3F4FF1CF41E02830310509F04C +:1016A00040E02091E8002E772093E800C8CF411158 +:1016B000C9CF0AC08091E401882361F0853061F0D0 +:1016C0008091E80083FD0AC08091E80082FFF2CF9C +:1016D00080E0089582E0089583E0089581E0089510 +:1016E0002091EB013091EC012617370748F0611586 +:1016F000710539F42091E8002E772093E80001C0AD +:10170000B901FC0120E06115710591F18091E401BE +:10171000882309F440C0853009F43FC08091E80077 +:1017200083FD3DC08091E80082FD2FC08091E800DC +:1017300080FFE9CF2091F3008091F20090E0922B9E +:101740006115710559F08830910540F4249120937A +:10175000F1003196615071090196F2CF21E00897AE +:1017600009F020E08091E8008E778093E800CBCFED +:101770002111CCCF0AC08091E401882361F085302B +:1017800061F08091E80083FD0AC08091E80082FF4B +:10179000F2CF80E0089582E0089583E0089581E02B +:1017A0000895982F973058F59093E900981739F0DD +:1017B0007091EC002091ED005091F00003C0242FB7 +:1017C000762F50E021FF19C03091EB003E7F30931F +:1017D000EB003091ED003D7F3093ED003091EB0058 +:1017E00031603093EB007093EC002093ED00509348 +:1017F000F0002091EE0027FF07C09F5FD3CF8F70CE +:101800008093E90081E0089580E008958091E501EA +:1018100087FF11C08091E80082FD05C08091E4013E +:101820008111F8CF11C08091E8008B770BC08091B7 +:10183000E401882349F08091E80080FFF8CF80918F +:10184000E8008E778093E80008952091E4003091BD +:10185000E50095E64091EC00842F817040FF22C0A6 +:101860008091E80080FD1CC08091E401882391F004 +:10187000853091F08091EB0085FD10C04091E4002F +:101880005091E5004217530729F39A01915011F73F +:1018900084E0089582E0089583E0089581E008954A +:1018A00080E008954091E80042FFDECF08950E9455 +:1018B000C50C0E94CD0CE0EEF0E080818160808359 +:1018C000E8EDF0E080818F77808319BCA7EDB0E070 +:1018D0008C918E7F8C9380818F7E80831092E30128 +:1018E00008950F931F93CF93DF930E94C50C0E941E +:1018F000CD0CC8EDD0E088818F778883888180689F +:10190000888388818F7D888319BC1092E4011092AE +:10191000E0011092E2011092E10100EE10E0F80106 +:1019200080818B7F808388818160888342E060E052 +:1019300080E00E94D10BE1EEF0E080818E7F808319 +:10194000E2EEF0E080818160808380818860808326 +:10195000F80180818E7F8083888180618883DF9118 +:10196000CF911F910F910895E8EDF0E080818F7E77 +:101970008083E7EDF0E080818160808384E082BF36 +:1019800081E08093E3010C94710CE8EDF0E080813C +:101990008E7F80831092E20008951092DA001092F8 +:1019A000E10008951F920F920FB60F9211242F930A +:1019B0003F934F935F936F937F938F939F93AF93D7 +:1019C000BF93EF93FF938091E10082FF0BC0809162 +:1019D000E20082FF07C08091E1008B7F8093E100ED +:1019E0000E94390F8091DA0080FF1FC08091D800DB +:1019F00080FF1BC08091DA008E7F8093DA00809197 +:101A0000D90080FF0DC080E189BD82E189BD09B4A4 +:101A100000FEFDCF81E08093E4010E94310905C002 +:101A200019BC1092E4010E943F098091E10080FFFF +:101A300019C08091E20080FF15C08091E2008E7F86 +:101A40008093E2008091E20080618093E2008091C7 +:101A5000D80080628093D80019BC85E08093E401AF +:101A60000E9443098091E10084FF30C08091E20030 +:101A700084FF2CC080E189BD82E189BD09B400FEEC +:101A8000FDCF8091D8008F7D8093D8008091E100B8 +:101A90008F7E8093E1008091E2008F7E8093E20050 +:101AA0008091E20081608093E2008091E0018823D0 +:101AB00011F084E007C08091E30087FD02C081E05F +:101AC00001C083E08093E4010E9445098091E10018 +:101AD00083FF29C08091E20083FF25C08091E1004F +:101AE000877F8093E10082E08093E4011092E0011F +:101AF0008091E1008E7F8093E1008091E2008E7FF3 +:101B00008093E2008091E20080618093E20042E0F5 +:101B100060E080E00E94D10B8091F00088608093AB +:101B2000F0000E944209FF91EF91BF91AF919F9108 +:101B30008F917F916F915F914F913F912F910F9076 +:101B40000FBE0F901F9018951F920F920FB60F9215 +:101B500011242F933F934F935F936F937F938F93B2 +:101B60009F93AF93BF93CF93DF93EF93FF93C09176 +:101B7000E900CF708091EC00D82FD17080FDD0E8C3 +:101B80001092E9008091F000877F8093F0007894B4 +:101B90000E94E80D1092E9008091F0008860809327 +:101BA000F000CD2BCF70C093E900FF91EF91DF9152 +:101BB000CF91BF91AF919F918F917F916F915F91E5 +:101BC0004F913F912F910F900FBE0F901F9018953E +:101BD0001F93CF93DF93CDB7DEB7AA970FB6F894D4 +:101BE000DEBF0FBECDBFE5EEF1E088E08E0F909135 +:101BF000F10091938E13FBCF0E9461098091E80060 +:101C000083FF1FC18091E5019091E601492F50E0CB +:101C10004A30510508F015C1FA01EA5AFF4F0C94F9 +:101C2000F423803881F0823809F00BC18091E901FA +:101C30008F708093E9008091EB0085FB882780F905 +:101C40001092E90006C08091E1019091E2019111AA +:101C500082609091E800977F9093E8008093F10074 +:101C60001092F100C8C0282F2D7F09F0EAC0882308 +:101C700019F0823061F0E5C08091E701813009F010 +:101C8000E0C0933009F080E08093E2012BC08091A6 +:101C9000E701811127C08091E9018F7009F4D1C05B +:101CA0008093E9002091EB0020FF1CC0933021F4C9 +:101CB0008091EB00806214C09091EB009061909352 +:101CC000EB0021E030E0A90102C0440F551F8A95C6 +:101CD000E2F74093EA001092EA008091EB008860FE +:101CE0008093EB001092E9008091E800877F86C026 +:101CF0008111A7C01091E7011F778091E3008078E0 +:101D0000812B8093E3008091E800877F8093E80037 +:101D10000E94060C8091E80080FFFCCF8091E300D8 +:101D200080688093E300111102C082E001C083E06B +:101D30008093E40186C08058823008F082C0809190 +:101D4000E7019091E8018C3D53E0950779F583E038 +:101D50008A838AE289834FB7F894DE01139620E0E4 +:101D60003EE051E2E32FF0E050935700E49120FF72 +:101D700003C0E295EF703F5FEF708E2F90E0EA3086 +:101D800010F0C79601C0C0968D939D932F5F2431AC +:101D900049F74FBF8091E800877F8093E8006AE2AF +:101DA00070E0CE0101960E940D0B14C0AE014F5F92 +:101DB0005F4F6091E9010E94540ABC01892B09F42C +:101DC00040C09091E800977F9093E80089819A81C4 +:101DD0000E94700B8091E8008B778093E80031C0FF +:101DE000803879F58091E800877F8093E8008091C2 +:101DF000E0018093F1008091E8008E778093E80005 +:101E00000E94060C1EC081111CC09091E701923007 +:101E1000C0F48091E800877F8093E8009093E00110 +:101E20000E94060C8091E001811106C08091E300C0 +:101E300087FD02C081E001C084E08093E4010E943C +:101E40004D098091E80083FF0AC08091E800877FF8 +:101E50008093E8008091EB0080628093EB00AA966B +:101E60000FB6F894DEBF0FBECDBFDF91CF911F91AB +:101E700008950895CF938091E4018823A1F0C09143 +:101E8000E900CF709091EC00892F817090FD80E87F +:101E9000C82B1092E9008091E80083FD0E94E80DB4 +:101EA000CF70C093E900CF9108959093690180931A +:101EB00068010895E0916801F0916901309721F07F +:101EC0000190F081E02D099480E00895E09168018F +:101ED000F0916901309721F00280F381E02D09949F +:101EE0000895E0916801F0916901309721F0048034 +:101EF000F581E02D099408952091660130916701E4 +:101F00008217930771F09093670180936601E091C7 +:101F10006801F0916901309721F00680F781E02D8A +:101F20000994089520916401309165018217930707 +:101F300071F09093650180936401E0916801F091E4 +:101F40006901309721F00084F185E02D099408950E +:101F500008950C94A80F0E94C11B0E9468040C9461 +:101F6000871CCF92DF92EF92FF920F931F93CF9334 +:101F7000DF93CDB7DEB72B970FB6F894DEBF0FBE59 +:101F8000CDBF0E9480048BE6C82E81E0D82E00E0F1 +:101F900010E0E02E802F0E946E05F60141916F0146 +:101FA000F42EF826B1F40F5F1F4F0E30110589F79C +:101FB0008FEF89838A831B820E94CA1B8160782FDE +:101FC0009D838C8349815A816B818D810E9454103D +:101FD00040C09091CD0191FF04C08B870E94740591 +:101FE0008B8520E030E04F2D50E0922FBA01022E79 +:101FF00002C0759567950A94E2F760FF24C02E83AE +:10200000EF8221E030E0690102C0CC0CDD1C9A9522 +:10201000E2F790E08C219D21892B09F420E02887AC +:102020000E94CA1B8160782F9A8789874E815F81C1 +:1020300068858A850E945410F801E559FE4F808119 +:10204000C826C08206C02F5F3F4F2630310569F693 +:10205000AACF0E946E1F10916A010E945A0F181792 +:10206000A1F00E945A0F80936A012B960FB6F89444 +:10207000DEBF0FBECDBFDF91CF911F910F91FF90BB +:10208000EF90DF90CF900C9450082B960FB6F894F9 +:10209000DEBF0FBECDBFDF91CF911F910F91FF909B +:1020A000EF90DF90CF900895CF93DF93CDB7DEB759 +:1020B0002B970FB6F894DEBF0FBECDBF4F83588766 +:1020C00069877A878B87DE01119686E0FD01119280 +:1020D0008A95E9F785E0FE01379601900D928A9581 +:1020E000E1F749815A816B817C818D819E810E94BB +:1020F00084172B960FB6F894DEBF0FBECDBFDF91CD +:10210000CF9108950895CF93882309F4C2C0C82FB2 +:10211000823859F40E945A0F81FDBBC089E30E94A6 +:102120002D1A0E94FA1A89E30CC0833879F40E94B0 +:102130005A0F80FDAEC083E50E942D1A0E94FA1A44 +:1021400083E50E946F1ACF910C94FA1A843859F4DF +:102150000E945A0F82FD9DC087E40E942D1A0E94A2 +:10216000FA1A87E4EECF8CEF8C0F813A48F48C2F6B +:102170000E94B02181118DC08C2F0E942D1AE3CFB7 +:1021800080E28C0F883048F4C77081E001C0880F6E +:10219000CA95EAF70E94B31AD6CF8BE58C0F83302D +:1021A00078F4C53A29F0C63A31F083E890E005C0EA +:1021B00081E890E002C082E890E0CF910C947C0F1F +:1021C00088E58C0F833108F064C0C83A39F1C93A08 +:1021D00041F1CA3A49F1CB3A51F1CC3A59F1CD3AF1 +:1021E00061F1C03B69F1CE3A71F1CF3A79F1C13B6F +:1021F00081F1C23B89F1C33B91F1C43B99F1C53BED +:10220000A1F1C63BA9F1C73BB1F1C83BB9F1C93B4C +:10221000C1F1CA3BC9F180E090E038C082EE90E0A5 +:1022200035C089EE90E032C08AEE90E02FC085EB99 +:1022300090E02CC086EB90E029C087EB90E026C0B0 +:102240008CEC90E023C08DEC90E020C083E891E01E +:102250001DC08AE891E01AC082E991E017C084E9C4 +:1022600091E014C081E292E011C083E292E00EC0DE +:1022700084E292E00BC085E292E008C086E292E040 +:1022800005C087E292E002C08AE292E0CF910C940E +:10229000920FCF910895882309F44BC0823859F4E6 +:1022A0000E945A0F81FF45C089E30E942D1A0E94A7 +:1022B000FA1A89E30CC0833871F40E945A0F80FF28 +:1022C00038C083E50E942D1A0E94FA1A83E50E9405 +:1022D0006F1A0C94FA1A843859F40E945A0F82FF2C +:1022E00028C087E40E942D1A0E94FA1A87E4EFCFD3 +:1022F0009CEF980F913A58F390E2980F983050F471 +:10230000877091E001C0990F8A95EAF7892F0E94A2 +:10231000B91ADFCF9BE5980F933020F480E090E06E +:102320000C947C0F885A833120F480E090E00C9468 +:10233000920F0895882321F00E94B31A0C94FA1A80 +:102340000895882321F00E94B91A0C94FA1A08956E +:10235000BF92CF92DF92EF92FF920F931F93CF9392 +:10236000DF9300D000D000D0CDB7DEB725E0FC0170 +:10237000DE01119601900D922A95E1F7FC01D080C3 +:1023800011810281258122952F7043815481452B33 +:1023900009F4FCC21F3F21F4FFEFDF1609F4F6C277 +:1023A0007C012E830E948210D9821A8369817A81EE +:1023B000802F0E94291A182FB92E0E94DE190E9420 +:1023C000A5182E81002319F00E94D01A2E81EB2D22 +:1023D000E295EF70F0E0E05AFF4F0C94F4238B2D60 +:1023E000807F9B2D9F70F92E882319F0F29480EF47 +:1023F000F822002389F0FF2009F475C280E2810FE2 +:10240000883020F48F2D0E94B31A03C08F2D0E94B4 +:10241000C31A0E94FA1A67C2812F0E944B11FF2033 +:1024200009F4B4C2105E8F2D183018F40E94B91A46 +:1024300002C00E94C91A26960FB6F894DEBF0FBEDE +:10244000CDBFDF91CF911F910F91FF90EF90DF9063 +:10245000CF90BF900C94FA1A3B2D307F8B2D8F704C +:10246000303211F08295807F112319F0113021F163 +:102470002CC00023B9F0222309F4A0C1213009F0B7 +:102480009DC126960FB6F894DEBF0FBECDBFDF917B +:10249000CF911F910F91FF90EF90DF90CF90BF9061 +:1024A0000C94E31A222319F0213009F46FC28E83B1 +:1024B0000E94E61A8E8196C1002321F0223008F096 +:1024C00065C27CC1211162C28DC1002321F022238B +:1024D00009F474C108C2222309F484C119C22B2D46 +:1024E00026952695237030E02115310521F0213005 +:1024F0003105D1F04BC2002321F0812F9B2D937029 +:1025000002C080E090E026960FB6F894DEBF0FBEC2 +:10251000CDBFDF91CF911F910F91FF90EF90DF9092 +:10252000CF90BF900C947C0F002321F0812F9B2D26 +:10253000937002C080E090E026960FB6F894DEBF5C +:102540000FBECDBFDF91CF911F910F91FF90EF9004 +:10255000DF90CF90BF900C94920F812F002319F041 +:102560000E94761E02C00E94DE1E26960FB6F894C8 +:10257000DEBF0FBECDBFDF91CF911F910F91FF90B6 +:10258000EF90DF90CF90BF900C94631F8B2D8370E2 +:1025900009F07BC00111FAC1812F82958695877061 +:1025A000880F880F912F9F70C92ED12CE12CF12C10 +:1025B000082E04C0CC0CDD1CEE1CFF1C0A94D2F7C4 +:1025C00014FF12C04FE050E060E070E004C0440F20 +:1025D000551F661F771F8A95D2F7CB01BA01609508 +:1025E00070958095909503C060E070E0CB012B2D35 +:1025F000269526952370422F50E042305105D9F0A0 +:102600004330510569F16C297D298E299F2941307C +:10261000510551F126960FB6F894DEBF0FBECDBF1F +:10262000DF91CF911F910F91FF90EF90DF90CF90AE +:10263000BF900C94CC186C297D298E299F29269651 +:102640000FB6F894DEBF0FBECDBFDF91CF911F91C3 +:102650000F91FF90EF90DF90CF90BF900C94E8180F +:102660000E94CC18C701B60126960FB6F894DEBFBB +:102670000FBECDBFDF91CF911F910F91FF90EF90D3 +:10268000DF90CF90BF900C94B018002319F08B2DE1 +:10269000817001C08695882309F478C1812F8295C5 +:1026A00086958770880F880F912F9F70C92ED12C27 +:1026B000E12CF12C082E04C0CC0CDD1CEE1CFF1C00 +:1026C0000A94D2F714FF12C04FE050E060E070E0CF +:1026D00004C0440F551F661F771F8A95D2F7CB01A0 +:1026E000BA01609570958095909503C060E070E0A8 +:1026F000CB012B2D269526952370422F50E042309A +:102700005105D9F04330510569F16C297D298E2995 +:102710009F294130510551F126960FB6F894DEBF3E +:102720000FBECDBFDF91CF911F910F91FF90EF9022 +:10273000DF90CF90BF900C94A6196C297D298E292B +:102740009F2926960FB6F894DEBF0FBECDBFDF914E +:10275000CF911F910F91FF90EF90DF90CF90BF909E +:102760000C94C2190E94A619C701B60126960FB68D +:10277000F894DEBF0FBECDBFDF91CF911F910F91B7 +:10278000FF90EF90DF90CF90BF900C948A19103F8C +:10279000D1F118F4103E50F4A1C0123F09F463C007 +:1027A00008F44CC0133F09F473C098C01F708B2D00 +:1027B0008F710023A1F00E942319812F26960FB656 +:1027C000F894DEBF0FBECDBFDF91CF911F910F9167 +:1027D000FF90EF90DF90CF90BF900C949A110E94E1 +:1027E0004419812F26960FB6F894DEBF0FBECDBFD9 +:1027F000DF91CF911F910F91FF90EF90DF90CF90DD +:10280000BF900C94A1110023A9F02111BFC08B2D02 +:102810008F7126960FB6F894DEBF0FBECDBFDF9145 +:10282000CF911F910F91FF90EF90DF90CF90BF90CD +:102830000C946919223008F0A9C0E9CF0023A9F04F +:102840008B2D8F7126960FB6F894DEBF0FBECDBFCD +:10285000DF91CF911F910F91FF90EF90DF90CF907C +:10286000BF900C942319002359F38B2D8F7126965A +:102870000FB6F894DEBF0FBECDBFDF91CF911F9191 +:102880000F91FF90EF90DF90CF90BF900C94441980 +:10289000002399F08B2D8F7126960FB6F894DEBF2A +:1028A0000FBECDBFDF91CF911F910F91FF90EF90A1 +:1028B000DF90CF90BF900C940E1926960FB6F89427 +:1028C000DEBF0FBECDBFDF91CF911F910F91FF9063 +:1028D000EF90DF90CF90BF900C9404190023A9F0E3 +:1028E000222309F4ADCF812F26960FB6F894DEBFD0 +:1028F0000FBECDBFDF91CF911F910F91FF90EF9051 +:10290000DF90CF90BF900C948310222309F4ADCFB9 +:10291000812F26960FB6F894DEBF0FBECDBFDF9194 +:10292000CF911F910F91FF90EF90DF90CF90BF90CC +:102930000C944B114B2D4F70612FC7010E94040363 +:1029400026960FB6F894DEBF0FBECDBFDF91CF91B4 +:102950001F910F91FF90EF90DF90CF90BF900C945C +:1029600028184B2D4F70612FC70126960FB6F8948B +:10297000DEBF0FBECDBFDF91CF911F910F91FF90B2 +:10298000EF90DF90CF90BF900C94750526960FB610 +:10299000F894DEBF0FBECDBFDF91CF911F910F9195 +:1029A000FF90EF90DF90CF90BF9008950E94D01AD3 +:1029B0000E94E01A0E94A51A0E94FA1A0E9413208F +:1029C0000E94631F80E090E00E947C0F80E090E016 +:1029D0000C94920F0E94C01A0C94D6140E941E1AD6 +:1029E000292F22952F7030E02C3031054CF42A30FD +:1029F00031056CF4225031092230310588F407C0CA +:102A00002C30310549F02F30310531F009C0803EBE +:102A100048F0803F29F406C093FB882780F9089589 +:102A200080E0089581E00895CF93DF9300D000D037 +:102A30001F92CDB7DEB70F900F900F900F900F90B1 +:102A4000DF91CF910895CF93DF9300D000D000D0D5 +:102A5000CDB7DEB726960FB6F894DEBF0FBECDBF5A +:102A6000DF91CF9108951F93CF93DF93C0917901A8 +:102A700016E080917A01C81799F0D0E01C9FF00110 +:102A80001D9FF00D1124E558FE4F40815181628158 +:102A90007381848195810E9423152196C770E9CFA7 +:102AA000DF91CF911F9108954091AB015091AC01FE +:102AB0006091AD017091AE018091AF019091B00134 +:102AC0000C9423158091B00182958F7009F054C049 +:102AD0008091AD01882309F44FC080917901A091C4 +:102AE0007A016091AB017091AC014091AE015091BF +:102AF000AF01B6E08A1709F43FC090E041155105D7 +:102B0000C1F17F3F11F46F3FA1F1B89FF001B99F70 +:102B1000F00D1124E558FE4F218172132AC0208147 +:102B2000621327C02281211124C0238134812417FC +:102B3000350710F421503109241B350B283C310591 +:102B4000C0F42091B0012F7020612093B00126E0E5 +:102B5000289FF001299FF00D1124E058FE4F80813D +:102B60008F70806180838BEA91E00E94A8110C94A1 +:102B7000331501968770BECF0895CF92DF92EF9202 +:102B8000FF920F931F93CF93DF93CDB7DEB762977A +:102B90000FB6F894DEBF0FBECDBF8C0185E0F80103 +:102BA000DE011D9601900D928A95E1F7D8014C91B6 +:102BB00011965C91119712966C9112971396CD9085 +:102BC000DC9014973091AB017091AC018091AE0113 +:102BD0009091AF01009709F46BC17F3F19F43F3F1B +:102BE00009F466C1E090AD01EE2009F4C0C0209167 +:102BF000B001C816D90628F0F601E81BF90BCF0181 +:102C000004C0809590958C0D9D1DFF24F394883C05 +:102C1000910578F0F12C207F09F0C6C07C2DD98A6F +:102C2000C88A89890E9414158BEA91E00E94A81134 +:102C3000B1C0822F807F09F046C0751314C03413D1 +:102C400012C0611110C02F7020612093B0010E944A +:102C500054158BEA91E00E94A8118091B001D8012F +:102C600015968C932EC0CD2819F15F3F11F44F3F7C +:102C7000F9F0F62E61111CC08091790120917A0142 +:102C800036E0821709F45AC090E0389FF001399F6E +:102C9000F00D1124E558FE4F7181571306C0708165 +:102CA000471303C07281711103C001968770E9CF89 +:102CB000F62E662309F418C18091B00181608093DB +:102CC000B001F12C11C1751308C0341306C0611195 +:102CD00004C08091B001D801C3C04D875E878D8547 +:102CE0009E856A8B0E94EE146A898823E1F166232F +:102CF000D1F12091B001822F82958F7090E00297E0 +:102D000074F08091AB019091AC0198878F83198604 +:102D1000DB86CA862C87CE0107960E94A81186E022 +:102D2000F801ABEAB1E001900D928A95E1F70E94BB +:102D300062150E945415FF24F394D6C04D875E8718 +:102D40008D859E850E941E1A292F22952F7030E0B6 +:102D5000223031050CF0BCC09F7009F0B6C0805E17 +:102D6000883008F4C1C0C8010E94A811E4CFC81679 +:102D7000D90608F453C0F601E81BF90BCF01883CD3 +:102D8000910508F450C0F12C7C2DD98AC88A898914 +:102D90000E941415EBEAF1E086E0DF011D928A95AE +:102DA000E9F70E945415A0C0751314C0341312C063 +:102DB000611110C08091B001F8018583C8010E94A3 +:102DC000A81186E0EBEAF1E0DF011D928A95E9F7B0 +:102DD000FE2C8AC04D875E878D859E856A8B0E94FA +:102DE000EE146A89882309F4BECF662309F4BBCFA9 +:102DF0002091B001822F82958F7090E002970CF4A1 +:102E00008ECF8091AB019091AC019A8389831B8214 +:102E1000DD82CC822E83CE0101967FCF8095909566 +:102E20008C0D9D1DACCFF62E662309F49CCF751337 +:102E30002EC034132CC02091B00120FD1FC0822F62 +:102E400082958F70D9F0D80115962C9315978F30F5 +:102E500049F08F5F982F9295907F822F8F70892BEA +:102E600015968C93C8010E94A81186E0F801ABEA80 +:102E7000B1E001900D928A95E1F793CF86E0F801D9 +:102E8000ABEAB1E001900D928A95E1F72DC04D8734 +:102E90005E878D859E850E94EE14811140CF8091C2 +:102EA000B00181608093B001C8010E94A8111CC0CC +:102EB000662309F458CF4D875E878D859E850E94D5 +:102EC000EE14882309F44FCF2ACF811148CF0CC0CC +:102ED000243031050CF047CF9F7009F440CFF80142 +:102EE0009581907F09F03BCF8F2D62960FB6F894B5 +:102EF000DEBF0FBECDBFDF91CF911F910F91FF902D +:102F0000EF90DF90CF9008951F93CF93DF93CDB7CD +:102F1000DEB72C970FB6F894DEBF0FBECDBF4F8340 +:102F2000588769877A878B879C87CE0107960E948E +:102F3000BD15882369F08F8198852A853B85232BD1 +:102F4000F1F19F3F09F063C08F3F09F060C037C0C7 +:102F500086E0FE013796DE01119601900D928A956A +:102F6000E1F76F817885EA85FB85309741F17F3FF6 +:102F700011F46F3F21F120917A0130E0C9010196EF +:102F8000877099274091790150E08417950709F4DB +:102F900047C069837A83FD83EC8396E0929FD001DA +:102FA000939FB00D1124A558BE4FFE01319601909C +:102FB0000D929A95E1F780937A010E94331516E0FD +:102FC0008091790190917A018917C1F1189FC00110 +:102FD000112485589E4F0E94BD15882379F1E091F8 +:102FE00079011E9FF0011124E558FE4F4081518167 +:102FF00062817381848195810E942315809179017A +:1030000090E001968770992780937901D9CF4F81FD +:10301000588569857A858B859C850E942315CFCF3D +:103020000E94EA1410927A0110927901EBEAF1E021 +:1030300086E0DF011D928A95E9F7C1CF2C960FB685 +:10304000F894DEBF0FBECDBFDF91CF911F910895E1 +:10305000EF92FF920F931F93CF93DF938C01892BF5 +:1030600009F46CC0F12CEE24E394E8012196F801F8 +:103070008491843740F4843008F051C0813081F06D +:10308000823019F15BC0853709F444C0A8F19CE790 +:10309000980F903708F052C08F770E944B1141C0B3 +:1030A0000E5F1F4FFE01C49180E28C0F883048F400 +:1030B000C7708E2D01C0880FCA95EAF70E94D31AF7 +:1030C00014C08C2F0E9483102DC00E5F1F4FFE0175 +:1030D000C49180E28C0F883058F4C7708E2D01C0E7 +:1030E000880FCA95EAF70E94D91A0E94FA1A1AC0E4 +:1030F0008C2F0E944B1116C00E5F1F4FFE01C49112 +:10310000CC2381F08FE99FE00197F1F700C0000028 +:10311000C150F6CF0E5F1F4FFE01F49003C00E9416 +:1031200083108E018F2D882309F49FCFEFE9FFE0F4 +:103130003197F1F700C000008150F5CFDF91CF91BA +:103140001F910F91FF90EF90089508956093B5013E +:103150007093B6018093B7019093B8010C94D61484 +:103160000F931F930091B5011091B6012091B70103 +:103170003091B801DC01CB01802B912BA22BB32B1A +:103180008093B5019093B601A093B701B093B801B5 +:103190001F910F910C94D6140F931F930091B501BA +:1031A0001091B6012091B7013091B801DC01CB013B +:1031B00080239123A223B3238093B5019093B6017A +:1031C000A093B701B093B8011F910F910C94D6143E +:1031D0000F931F930091B5011091B6012091B70193 +:1031E0003091B801DC01CB0180279127A227B327BA +:1031F0008093B5019093B601A093B701B093B80145 +:103200001F910F910C94D6141092B1011092B2013B +:103210001092B3011092B4010C94D61441E050E026 +:1032200060E070E004C0440F551F661F771F8A9549 +:10323000D2F74093B1015093B2016093B301709300 +:10324000B4010C94D61441E050E060E070E004C09A +:10325000440F551F661F771F8A95D2F78091B101E1 +:103260009091B201A091B301B091B401482B592BB8 +:103270006A2B7B2B4093B1015093B2016093B30151 +:103280007093B4010C94D61441E050E060E070E01B +:1032900004C0440F551F661F771F8A95D2F74095CB +:1032A0005095609570958091B1019091B201A09177 +:1032B000B301B091B401482359236A237B2340937F +:1032C000B1015093B2016093B3017093B4010C94B7 +:1032D000D61441E050E060E070E004C0440F551F98 +:1032E000661F771F8A95D2F78091B1019091B20144 +:1032F000A091B301B091B401482759276A277B27D1 +:103300004093B1015093B2016093B3017093B40143 +:103310000C94D6140F931F930091B1011091B20138 +:103320002091B3013091B401DC01CB01802B912BB2 +:10333000A22BB32B8093B1019093B201A093B30160 +:10334000B093B4011F910F910C94D6140F931F9357 +:103350000091B1011091B2012091B3013091B401FB +:10336000DC01CB0180239123A223B3238093B101FD +:103370009093B201A093B301B093B4011F910F9148 +:103380000C94D6140F931F930091B1011091B201C8 +:103390002091B3013091B401DC01CB01802791274A +:1033A000A227B3278093B1019093B201A093B301F8 +:1033B000B093B4011F910F910C94D6140895CF923D +:1033C000DF92EF92FF920F931F93CF93DF938C01C5 +:1033D000C090B501D090B601E090B701F090B8016F +:1033E0008091B1019091B201A091B301B091B4016B +:1033F000C82AD92AEA2AFB2ACFE1D0E0D701C601A0 +:103400000C2E04C0B695A795979587950A94D2F788 +:1034100080FF06C0B8018C2F0E94B507019721F4E8 +:10342000219760F780E001C08C2FDF91CF911F9131 +:103430000F91FF90EF90DF90CF900895CF93DF939F +:10344000EC010E94DF19BE010E94B507DF91CF9108 +:103450000895CB010E941E1A089590910C019923A2 +:1034600021F090910D01911109C020910E01309130 +:103470000F01F90132969FEF40E01FC0982F9695FB +:10348000969596959F3050F5E0910E01F0910F01C1 +:10349000E90FF11D877021E030E0A90102C0440F5F +:1034A000551F8A95E2F7CA019181892B818308957E +:1034B0009F3F39F04F5F4E3041F051915813F8CF94 +:1034C0000DC05111F7CF942FF5CF9F3F39F0F9017F +:1034D000E90FF11D97FDFA95828308950895909163 +:1034E0000C01992321F090910D01911109C02091B7 +:1034F0000E0130910F01F9013296205F3F4F1FC03E +:10350000982F9695969596959F30F0F4E0910E0140 +:10351000F0910F01E90FF11D877021E030E0A90162 +:1035200002C0440F551F8A95E2F7CA018095918128 +:103530008923818308953196E217F30729F090815A +:103540009813F9CF1082F7CF089581E090E0E091D1 +:103550000E01F0910F01E80FF91F108201968031E2 +:103560009105A9F708959091CC01892B8093CC0106 +:10357000089580959091CC0189238093CC01089582 +:103580001092CC0108959091CB01892B8093CB01AF +:10359000089580959091CB0189238093CB01089564 +:1035A0001092CB0108959091CA01892B8093CA0192 +:1035B000089580959091CA0189238093CA01089546 +:1035C0001092CA0108958093B90108951092B9012B +:1035D000089580910E0190910F01FC0131969C019C +:1035E000205F3F4F80E0919191118F5FE217F307C9 +:1035F000D1F70895E0910E01F0910F018091CC0177 +:103600008083E0910E01F0910F0190818091CB01B8 +:10361000892B8083E0910E01F0910F0190818091C0 +:10362000CA01892B80838091B901882361F0E091E0 +:103630000E01F0910F019081892B80830E94E91A7D +:1036400081111092B90180910E0190910F010C949B +:10365000660FCF92DF92EF92FF926C01EE24FF246F +:10366000C114D104E104F10421F0C701B60120E145 +:1036700001C020E0C72ED82EE92EFF24C114D104AA +:10368000E104F10419F0285FC701B6016B017C0168 +:1036900054E0F694E794D794C7945A95D1F7C1149F +:1036A000D104E104F10419F02C5FC701B6016B01EC +:1036B0007C0142E0F694E794D794C7944A95D1F7F9 +:1036C000C114D104E104F10419F02E5FC701B60161 +:1036D000DC01CB01B695A79597958795892B8A2B09 +:1036E0008B2B09F02F5F822FFF90EF90DF90CF9010 +:1036F00008958091E401843039F11092CE0120E4E4 +:1037000088E190E00FB6F894A895809360000FBE12 +:103710002093600080E00E94500883B7817F84601E +:1037200083BF83B7816083BF7894889583B78E7F8A +:1037300083BF0FB6F894A89580916000886180934C +:103740006000109260000FBE089508950895CF9311 +:103750000E94A51B0E9480040E94A61BC0E08C2F23 +:103760000E946E05811104C0CF5FCE30C1F701C049 +:1037700081E0CF9108950E94EA140E945A0F0C94A0 +:10378000500882E084BD93E095BD9AEF97BD809389 +:103790006E0008952FB7F8948091CF019091D001D9 +:1037A000A091D101B091D2012FBF0895CF92DF92A5 +:1037B000EF92FF920F931F932FB7F8944091CF0190 +:1037C0005091D0016091D1017091D2012FBF6A0157 +:1037D0007B01EE24FF248C0120E030E0C016D106EE +:1037E000E206F30610F4415051099A01281B390BE7 +:1037F000C9011F910F91FF90EF90DF90CF90089536 +:103800001F920F920FB60F9211248F939F93AF9335 +:10381000BF938091CF019091D001A091D101B0913F +:10382000D2010196A11DB11D8093CF019093D001CB +:10383000A093D101B093D201BF91AF919F918F918D +:103840000F900FBE0F901F9018950E94570CF89480 +:103850002FEF87EA91E6215080409040E1F700C0C9 +:10386000000087E090EBDC018093EE019093EF0184 +:10387000A093F001B093F1019CE088E10FB6F894B9 +:10388000A895809360000FBE90936000FFCFEF92E9 +:10389000FF920F931F93CF93DF93D82FC0E08C2F0D +:1038A0000E946E0500E010E0E82EF12CC701002E0A +:1038B00002C0959587950A94E2F780FD06C00F5FD8 +:1038C0001F4F0630110591F709C0602F7C2F80E053 +:1038D0000E947605D813F3CF81E004C0CF5FCE30CD +:1038E000F1F680E0DF91CF911F910F91FF90EF9063 +:1038F0000895CF93C82F8CE20E94471C882321F0A3 +:103900008C2FCF910C94471C80E0CF910895CF93DA +:103910000E94CE1D811102C00E94B41DC5E6C15097 +:1039200049F00E9480048FE39CE90197F1F700C001 +:103930000000F5CF89E20E94791C811113C18AE24F +:103940000E94791C81110E94B41D85E00E94791C9F +:1039500081110E94251C0E94D91D8093CD0187E012 +:103960000E94791C8823A9F18BE10E94791C88238D +:1039700051F08091CD0181FB222720F991E092271F +:1039800090FB81F90EC08EE00E94791C882361F0C3 +:103990008091CD0182FB222720F991E0922790FBB4 +:1039A00082F98093CD0115C080E10E94791C90912D +:1039B000CD01882341F093FB222720F981E0822763 +:1039C00080FB93F904C0892F809580FB90F9909338 +:1039D000CD018091CD010E94DD1D0E94EB1D8093E1 +:1039E000ED0180EE0E94791C882341F08091ED0169 +:1039F000982F909590FB80F98093ED0189E30E94C8 +:103A0000791C882359F08091ED0181FB222720F950 +:103A100091E0922790FB81F98093ED0182EE0E9464 +:103A2000791C882359F08091ED0182FB222720F92F +:103A300091E0922790FB82F98093ED0186EE0E943F +:103A4000791C882359F08091ED0183FB222720F90E +:103A500091E0922790FB83F98093ED0183EE0E9421 +:103A6000791C882359F08091ED0184FB222720F9ED +:103A700091E0922790FB84F98093ED0185E30E9409 +:103A8000791C882359F08091ED0185FB222720F9CC +:103A900091E0922790FB85F98093ED0181E30E94EC +:103AA000791C882359F08091ED0186FB222720F9AB +:103AB00091E0922790FB86F98093ED0181E10E94CD +:103AC000791C882359F08091ED0187FB222720F98A +:103AD00091E0922790FB87F98093ED018091ED01B1 +:103AE0000E94EF1D8091ED0187FB882780F980936C +:103AF0000D0187E20E94791CC82F8EE10E94791C7B +:103B00008111C2608FE10E94791C8111C46080E242 +:103B10000E94791C8111C86081E20E94791C811188 +:103B2000C06182E20E94791C8111C06283E20E941E +:103B3000791C8111C06484E20E94791C882311F0F1 +:103B4000C06802C0CC2329F08C2F0E94E61D6C2F88 +:103B500003C00E94E21D682F70E080E090E0CF91EA +:103B60000C94A618CF9108956DEE7EEF80E090E062 +:103B70000E942E2460E082E090E00E941C2460E01D +:103B800083E090E00E941C2460E084E090E00E94CA +:103B90001C2460E085E090E00C941C2480E090E020 +:103BA0000E94162421E08D3E9E4F09F020E0822FD6 +:103BB000089582E090E00C940E24682F82E090E05B +:103BC0000C941C2483E090E00C940E24682F83E076 +:103BD00090E00C941C2484E090E00C940E24682F58 +:103BE00084E090E00C941C248091D50180FF0BC0F0 +:103BF0006091130185E0689FB00111247595679568 +:103C0000759567952BC081FF09C06091130185E010 +:103C1000689FB00111247595679520C082FF07C089 +:103C20006091130185E0689FB001112417C0909145 +:103C3000D6019923D1F060911201961788F720914F +:103C4000130185E0289F90011124929FA001939F6A +:103C5000500D112470E0CA010E94E0236038710504 +:103C600040F46115710539F002C065E070E0862FFF +:103C700008958FE7089581E008958091D50180FF30 +:103C800008C06091110170E075956795759567950D +:103C900021C081FF06C06091110170E075956795A4 +:103CA00019C082FF04C06091110170E010C09091B2 +:103CB000D6019923C1F0609110019617A0F7809169 +:103CC0001101899FC001112470E00E94E023603837 +:103CD000710528F46115710521F0862F08958FE78D +:103CE000089581E0089561E070E0F4CF803F21F411 +:103CF0000E94F41D819504C0813F29F40E94F41DA7 +:103D00008093D9010895823F21F40E94F41D81958A +:103D100004C0833F29F40E94F41D8093D8010895C4 +:103D2000893F19F40E943D1E05C08A3F31F40E946C +:103D30003D1E81958093DA0108958B3F21F40E9406 +:103D40003D1E819504C08C3F29F40E943D1E809346 +:103D5000DB010895843F21F48091D701816017C071 +:103D6000853F21F48091D701826011C0863F21F404 +:103D70008091D70184600BC0873F21F48091D701E7 +:103D8000886005C0883F31F48091D70180618093BD +:103D9000D70108958D3F21F48091D50181600BC03A +:103DA0008E3F21F48091D501826005C08F3F29F4B8 +:103DB0008091D50184608093D5010895803F39F4C6 +:103DC0008091D90187FF6CC01092D90169C0813FF1 +:103DD00029F48091D9011816BCF362C09091D801E2 +:103DE000823F29F497FF5CC01092D80159C0833FED +:103DF00019F41916CCF354C0893F41F48091DA01CB +:103E000018160CF04DC01092DA014AC08A3F29F40E +:103E10008091DA0187FF44C0F6CF8B3F39F480915F +:103E2000DB0187FF3DC01092DB013AC08C3F29F4D3 +:103E30008091DB011816BCF333C0843F21F48091DC +:103E4000D7018E7F17C0853F21F48091D7018D7FE8 +:103E500011C0863F21F48091D7018B7F0BC0873F33 +:103E600021F48091D701877F05C0883F31F480918C +:103E7000D7018F7E8093D70113C08D3F21F48091AD +:103E8000D5018E7F0BC08E3F21F48091D5018D7FAF +:103E900005C08F3F29F48091D5018B7F8093D50198 +:103EA0008091D80181110EC08091D90181110AC081 +:103EB0008091DA01811106C08091DB01811102C07D +:103EC0001092D601089587ED91E00E94710F0E9433 +:103ED000CA1B9093D4018093D30108951F93CF936D +:103EE000DF938091D3019091D4010E94D61BAC0145 +:103EF0009091D601992321F02091140130E006C061 +:103F0000209115018AE0289F900111244217530740 +:103F100008F485C08091D801C091D901D091DA010F +:103F20001091DB01811107C0C11175C0D11173C09F +:103F3000111171C074C09F3F19F09F5F9093D6011B +:103F4000181624F40E94F41D8093D8018091D801A2 +:103F500087FF05C00E94F41D81958093D8011C162F +:103F600024F40E94F41D8093D9018091D90187FF28 +:103F700005C00E94F41D81958093D9016091D801FC +:103F8000662331F1C091D901CC2311F1062E000C2A +:103F9000770B880B990B0E94E72223E333E343E37B +:103FA0005FE30E944B230E94AF226093D8016C2FE5 +:103FB000CC0F770B880B990B0E94E72223E333E3A6 +:103FC00043E35FE30E944B230E94AF226093D90139 +:103FD0001D1624F40E943D1E8093DA018091DA01BF +:103FE00087FF05C00E943D1E81958093DA0111165E +:103FF00024F40E943D1E8093DB018091DB0187FF4A +:1040000005C00E943D1E81958093DB01DF91CF9119 +:104010001F910C94631F9F3F09F08FCF97CFDF91C3 +:10402000CF911F910895E7EDF1E085E0DF011D924A +:104030008A95E9F71092D6011092D5010895833040 +:1040400081F128F4813059F08230D1F00895853023 +:1040500009F449C0B8F1863009F456C0089580913A +:104060001501262F30E0280F311D2F3F310524F494 +:10407000680F6093150108958FEF809315010895DF +:1040800080911401262F30E0280F311D2F3F31057C +:1040900024F4680F6093140108958FEF8093140146 +:1040A000089580911301262F30E0280F311D2F3FF6 +:1040B000310524F4680F6093130108958FEF809306 +:1040C0001301089580911201262F30E0280F311D31 +:1040D0002F3F310524F4680F6093120108958FEF8C +:1040E00080931201089580911101262F30E0280F4E +:1040F000311D2F3F310524F4680F6093110108959D +:104100008FEF80931101089580911001262F30E0E8 +:10411000280F311D2F3F310524F4680F60931001E3 +:1041200008958FEF809310010895833011F128F4E2 +:10413000813049F0823091F00895853081F120F18D +:104140008630C1F1089580911501681720F4861B0F +:10415000809315010895109215010895809114011E +:10416000681720F4861B809314010895109214019F +:10417000089580911301681720F4861B8093130122 +:10418000089510921301089580911201681720F488 +:10419000861B809312010895109212010895809158 +:1041A0001101681720F4861B809311010895109265 +:1041B0001101089580911001681720F4861B8093E7 +:1041C000100108951092100108950F931F938D31DF +:1041D00009F46BC008F03FC08E3009F47FC0C0F412 +:1041E000873009F469C068F4863009F0B1C0809165 +:1041F000CD01817F8E7F8093CD0181E08093DD01B1 +:10420000A8C0883009F4A2C08B3009F49FC0A0C0B8 +:10421000863109F49BC078F4803109F472C0813191 +:1042200009F096C00E94EA1490910D0181E089275F +:1042300080930D018BC0893109F488C08B3109F05E +:1042400087C08091CD0181FB222720F991E0922740 +:1042500090FB81F94CC0853309F470C048F4873273 +:1042600009F46CC008F459C0893209F467C070C001 +:10427000833438F48A3308F04EC0883309F466C0BA +:1042800067C0833409F45AC0883409F061C00E94C1 +:10429000EA140FEF13ED20E3015010402040E1F746 +:1042A00000C000000E94251C51C00E9469220E948B +:1042B0005A0F0E9450084AC09091CD01892F8095D5 +:1042C000817080FB90F929F0966098609093CD0101 +:1042D00040C0997F977F9093CD0138C08091CD01E8 +:1042E00082FB222720F991E0922790FB82F98093AC +:1042F000CD01992359F18091CD0181608093CD0149 +:1043000025C08091CD0183FB222720F991E09227DF +:1043100090FB83F9ECCF895301C08D5141E050E00F +:1043200060E070E08A019B0104C0000F111F221F92 +:10433000331F8A95D2F7C901B80104C061E070E06B +:1043400080E090E00E94A6180E94EA1481E001C07B +:1043500080E01F910F91089580E0089580E0089516 +:10436000CF93C82F8091DD01813079F018F0823031 +:10437000E9F187C0E0910E01F0910F018081813158 +:1043800069F0823209F07FC009C0E0910E01F0911E +:104390000F018081813111F0823261F48C2F0E94F3 +:1043A000AC21811104C08C2F0E94E5201DC081E04A +:1043B00090E01AC08C2F0E94AE21811114C0C4312C +:1043C00079F048F4CB3079F0C03109F060C082E078 +:1043D0008093DD0108C0C93219F0C83321F057C0FD +:1043E0001092DD0154C081E0817053C0C93289F15F +:1043F00018F5C43171F1A8F4C73009F046C08AE05D +:104400008093150194E19093140193E0909313012C +:104410008093120188E08093110188E2809310015B +:1044200034C0CE51C63088F5EC2FF0E0E65DFE4F8B +:1044300080818093DC0129C0CE34E9F020F4CB34B4 +:1044400021F56AE013C0C13579F0C235F1F461E0BD +:104450000DC08091DC01882319F01092DC0115C099 +:1044600081E08093DD0115C061E006C08091DC0130 +:104470000E941F200AC06AE08091DC010E94952002 +:1044800004C01092DD0180E004C081E002C080E041 +:10449000ABCFCF910895E1E8F0E080818860808320 +:1044A0008081816080838FB7F89493E09093890036 +:1044B00090ED909388008FBF0895EFE6F0E0808143 +:1044C000826080830895EFE6F0E080818D7F8083B5 +:1044D0000895EFE6F0E0908182E0892780830895D7 +:1044E0001F920F920FB60F9211242F933F934F9369 +:1044F0005F936F937F938F939F93AF93BF93EF934C +:10450000FF938091DE019091DF0101969093DF018E +:104510008093DE01811103C082E00E945008E09187 +:10452000DF01E695E695F0E0EA5CFA4FE4918091D0 +:10453000DE018E1303C080E00E945008FF91EF91CE +:10454000BF91AF919F918F917F916F915F914F91AB +:104550003F912F910F900FBE0F901F9018950E94C2 +:10456000B6226894B1110C94452308950E942A2321 +:1045700088F09F5798F0B92F9927B751B0F0E1F024 +:10458000660F771F881F991F1AF0BA95C9F714C0D4 +:10459000B13091F00E944423B1E008950C9444237B +:1045A000672F782F8827B85F39F0B93FCCF386950D +:1045B00077956795B395D9F73EF49095809570956A +:1045C00061957F4F8F4F9F4F0895E89409C097FBE7 +:1045D0003EF490958095709561957F4F8F4F9F4FDA +:1045E0009923A9F0F92F96E9BB279395F69587951E +:1045F00077956795B795F111F8CFFAF4BB0F11F4E1 +:1046000060FF1BC06F5F7F4F8F4F9F4F16C0882387 +:1046100011F096E911C0772321F09EE8872F762FBD +:1046200005C0662371F096E8862F70E060E02AF0FE +:104630009A95660F771F881FDAF7880F96958795EA +:1046400097F9089557FD9058440F551F59F05F3F53 +:1046500071F04795880F97FB991F61F09F3F79F0A4 +:1046600087950895121613061406551FF2CF469526 +:10467000F1DF08C0161617061806991FF1CF8695A8 +:104680007105610508940895E894BB27662777278C +:10469000CB0197F908950E945E230C94CF230E94CA +:1046A000C12338F00E94C82320F0952311F00C9408 +:1046B000B8230C94BE2311240C9445230E9422237A +:1046C00070F3959FC1F3950F50E0551F629FF00165 +:1046D000729FBB27F00DB11D639FAA27F00DB11D7E +:1046E000AA1F649F6627B00DA11D661F829F222707 +:1046F000B00DA11D621F739FB00DA11D621F839F8E +:10470000A00D611D221F749F3327A00D611D231F63 +:10471000849F600D211D822F762F6A2F11249F57B1 +:1047200050409AF0F1F088234AF0EE0FFF1FBB1FB4 +:10473000661F771F881F91505040A9F79E3F510573 +:1047400080F00C94B8230C9445235F3FE4F3983E2B +:10475000D4F3869577956795B795F795E7959F5F1D +:10476000C1F7FE2B880F911D9695879597F90895AF +:1047700097F99F6780E870E060E008959FEF80EC14 +:10478000089500240A9416161706180609060895B7 +:1047900000240A9412161306140605060895092E1D +:1047A0000394000C11F4882352F0BB0F40F4BF2B8C +:1047B00011F460FF04C06F5F7F4F8F4F9F4F0895CC +:1047C00097FB072E16F4009407D077FD09D00E94BE +:1047D000FA2307FC05D03EF4909581959F4F0895EC +:1047E000709561957F4F0895EE0FFF1F0590F4912E +:1047F000E02D0994AA1BBB1B51E107C0AA1FBB1FD8 +:10480000A617B70710F0A61BB70B881F991F5A955C +:10481000A9F780959095BC01CD010895F999FECF37 +:1048200092BD81BDF89A992780B50895A8E1B0E0BE +:1048300042E050E00C943624262FF999FECF92BD29 +:1048400081BDF89A019700B4021639F01FBA20BD55 +:104850000FB6F894FA9AF99A0FBE08950196272F89 +:104860000E941D240C941C24DC01CB01FC01F9994D +:10487000FECF06C0F2BDE1BDF89A319600B40D92AC +:0C48800041505040B8F70895F894FFCF65 +:10488C0020025208E008BD08890855080101BA0148 +:10489C0028080A03140A3F4D3639F704AA04740495 +:1048AC003B04CE03E70300041904010203040506CC +:0448BC0007080900E0 +:00000001FF -- cgit v1.2.1 From fb57b2e55dfa5773f361aa958354ddddd3d68dbc Mon Sep 17 00:00:00 2001 From: Thomas Anderson Date: Fri, 29 Apr 2016 17:25:14 -0700 Subject: Added readme --- keyboard/ergodox_ez/keymaps/techtomas/readme.md | 36 +++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 keyboard/ergodox_ez/keymaps/techtomas/readme.md diff --git a/keyboard/ergodox_ez/keymaps/techtomas/readme.md b/keyboard/ergodox_ez/keymaps/techtomas/readme.md new file mode 100644 index 0000000000..1ed80fc20c --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/techtomas/readme.md @@ -0,0 +1,36 @@ +# Techtomas Configuration + +## Base Layer + +The base layer is a merge of what I liked with the default layout and the ordinary layout. The thumb cluster is more like the Kinesis advantage and the top row of the cluster is convient for use on the mac. + +* The Caps Lock postion handles [Hyper/Esc](http://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/) +* The Tab key toggles MEH. +* The two vertical mods on the left board are Shift+Tab and Tab. +* The two vertical mods on the right board are Control Layer tap/toggle and Alt+Cmd. +* The HYPER and MEH key are made in the same location on the right side of the board as well. Using Keyboard Maestro for OS X makes one-handed shortcuts very easy. + +## Symbol Layer +The symbol layer can be tap/toggled through the bottom right key and also toggled holding the tilde/grave key in the upper left corner. I haven't used the symbol layer enough to tell if this was a good place or not but it made sense in my head + +The bottom two vertical mods are set to F14 and F15 which is the default for changing screen brightness on the mac + +## Media Layer +/ & ; will toggle the media layer which has play and volume controls assigned to the thumb cluster. I found this an easy way to quickly play/pause + +## Control Layer +The a and z keys toggle the control layer. + +On the left board you have mouse control with left & right click in the location of the G and B keys. +On the right board you have vim-style arrow keys using hjkl + +The thumb cluster and mods all pass down to this layer. + +## Changelog + +* Apr 29, 2016 (V1.1): + * Added F14 and F15 to symbol layer + * Added control layer toggle to A key. + +* Apr 28, 2016 (V1.0): + * Modified config based on the default layout plus inspiration from the ordinary layout -- cgit v1.2.1 From 9ab7098c834ffe601ad5c39759acfddabbd6373f Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Fri, 29 Apr 2016 21:21:08 -0400 Subject: fixes plover start sound --- keyboard/planck/keymaps/default/keymap.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/keyboard/planck/keymaps/default/keymap.c b/keyboard/planck/keymaps/default/keymap.c index e7a9ea9e4c..ac4937b69e 100644 --- a/keyboard/planck/keymaps/default/keymap.c +++ b/keyboard/planck/keymaps/default/keymap.c @@ -319,15 +319,13 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) case 12: if (record->event.pressed) { #ifdef AUDIO_ENABLE + stop_all_notes(); PLAY_NOTE_ARRAY(tone_plover, false, 0); #endif layer_off(_RAISE); layer_off(_LOWER); layer_off(_ADJUST); layer_off(_MUSIC); - #ifdef AUDIO_ENABLE - stop_all_notes(); - #endif layer_on(_PLOVER); if (!eeconfig_is_enabled()) { eeconfig_init(); -- cgit v1.2.1 From 0656f2fa10e25e160617c3e5d14cfbae35dd9c8d Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Fri, 29 Apr 2016 22:19:40 -0400 Subject: moves backlight functionality to keyboard files and updates template makefile previously there were two backlight.c files (bad) --- keyboard/atomic/Makefile | 4 --- keyboard/atomic/atomic.c | 61 ++++++++++++++++++++++++++++++++++++++++++ keyboard/atomic/atomic.h | 5 +++- keyboard/atomic/backlight.c | 63 -------------------------------------------- keyboard/planck/Makefile | 4 --- keyboard/planck/backlight.c | 61 ------------------------------------------ keyboard/planck/planck.c | 61 ++++++++++++++++++++++++++++++++++++++++++ keyboard/planck/planck.h | 1 + keyboard/preonic/Makefile | 5 ---- keyboard/preonic/backlight.c | 61 ------------------------------------------ keyboard/preonic/preonic.c | 63 +++++++++++++++++++++++++++++++++++++++++++- keyboard/preonic/preonic.h | 1 + quantum/template/Makefile | 46 ++++++++++++++++++++++---------- quantum/template/template.c | 61 ++++++++++++++++++++++++++++++++++++++++++ quantum/template/template.h | 5 +++- 15 files changed, 287 insertions(+), 215 deletions(-) delete mode 100644 keyboard/atomic/backlight.c delete mode 100644 keyboard/planck/backlight.c delete mode 100644 keyboard/preonic/backlight.c diff --git a/keyboard/atomic/Makefile b/keyboard/atomic/Makefile index 1d91c34b7f..c1a0a6db42 100644 --- a/keyboard/atomic/Makefile +++ b/keyboard/atomic/Makefile @@ -171,10 +171,6 @@ endif endif -ifeq ($(strip $(BACKLIGHT_ENABLE)), yes) - SRC := backlight.c $(SRC) -endif - # Optimize size but this may cause error "relocation truncated to fit" #EXTRALDFLAGS = -Wl,--relax diff --git a/keyboard/atomic/atomic.c b/keyboard/atomic/atomic.c index 5e31264e68..3996497161 100644 --- a/keyboard/atomic/atomic.c +++ b/keyboard/atomic/atomic.c @@ -57,3 +57,64 @@ void led_set_kb(uint8_t usb_led) { led_set_user(usb_led); } + +#ifdef BACKLIGHT_ENABLE +#define CHANNEL OCR1C + +void backlight_init_ports() +{ + + // Setup PB7 as output and output low. + DDRB |= (1<<7); + PORTB &= ~(1<<7); + + // Use full 16-bit resolution. + ICR1 = 0xFFFF; + + // I could write a wall of text here to explain... but TL;DW + // Go read the ATmega32u4 datasheet. + // And this: http://blog.saikoled.com/post/43165849837/secret-konami-cheat-code-to-high-resolution-pwm-on + + // Pin PB7 = OCR1C (Timer 1, Channel C) + // Compare Output Mode = Clear on compare match, Channel C = COM1C1=1 COM1C0=0 + // (i.e. start high, go low when counter matches.) + // WGM Mode 14 (Fast PWM) = WGM13=1 WGM12=1 WGM11=1 WGM10=0 + // Clock Select = clk/1 (no prescaling) = CS12=0 CS11=0 CS10=1 + + TCCR1A = _BV(COM1C1) | _BV(WGM11); // = 0b00001010; + TCCR1B = _BV(WGM13) | _BV(WGM12) | _BV(CS10); // = 0b00011001; + + backlight_init(); +} + +void backlight_set(uint8_t level) +{ + if ( level == 0 ) + { + // Turn off PWM control on PB7, revert to output low. + TCCR1A &= ~(_BV(COM1C1)); + CHANNEL = 0x0; + // Prevent backlight blink on lowest level + PORTB &= ~(_BV(PORTB7)); + } + else if ( level == BACKLIGHT_LEVELS ) + { + // Prevent backlight blink on lowest level + PORTB &= ~(_BV(PORTB7)); + // Turn on PWM control of PB7 + TCCR1A |= _BV(COM1C1); + // Set the brightness + CHANNEL = 0xFFFF; + } + else + { + // Prevent backlight blink on lowest level + PORTB &= ~(_BV(PORTB7)); + // Turn on PWM control of PB7 + TCCR1A |= _BV(COM1C1); + // Set the brightness + CHANNEL = 0xFFFF >> ((BACKLIGHT_LEVELS - level) * ((BACKLIGHT_LEVELS + 1) / 2)); + } +} + +#endif \ No newline at end of file diff --git a/keyboard/atomic/atomic.h b/keyboard/atomic/atomic.h index d5461e424d..0c7aeb1cc8 100644 --- a/keyboard/atomic/atomic.h +++ b/keyboard/atomic/atomic.h @@ -3,8 +3,11 @@ #include "matrix.h" #include "keymap_common.h" -#include "backlight.h" +#ifdef BACKLIGHT_ENABLE + #include "backlight.h" +#endif #include +#include // This a shortcut to help you visually see your layout. // The following is an example using the Planck MIT layout diff --git a/keyboard/atomic/backlight.c b/keyboard/atomic/backlight.c deleted file mode 100644 index 647b57e718..0000000000 --- a/keyboard/atomic/backlight.c +++ /dev/null @@ -1,63 +0,0 @@ - -#include -#include "backlight.h" -#include "atomic.h" - - -#define CHANNEL OCR1C - -void backlight_init_ports() -{ - - // Setup PB7 as output and output low. - DDRB |= (1<<7); - PORTB &= ~(1<<7); - - // Use full 16-bit resolution. - ICR1 = 0xFFFF; - - // I could write a wall of text here to explain... but TL;DW - // Go read the ATmega32u4 datasheet. - // And this: http://blog.saikoled.com/post/43165849837/secret-konami-cheat-code-to-high-resolution-pwm-on - - // Pin PB7 = OCR1C (Timer 1, Channel C) - // Compare Output Mode = Clear on compare match, Channel C = COM1C1=1 COM1C0=0 - // (i.e. start high, go low when counter matches.) - // WGM Mode 14 (Fast PWM) = WGM13=1 WGM12=1 WGM11=1 WGM10=0 - // Clock Select = clk/1 (no prescaling) = CS12=0 CS11=0 CS10=1 - - TCCR1A = _BV(COM1C1) | _BV(WGM11); // = 0b00001010; - TCCR1B = _BV(WGM13) | _BV(WGM12) | _BV(CS10); // = 0b00011001; - - backlight_init(); -} - -void backlight_set(uint8_t level) -{ - if ( level == 0 ) - { - // Turn off PWM control on PB7, revert to output low. - TCCR1A &= ~(_BV(COM1C1)); - CHANNEL = 0x0; - // Prevent backlight blink on lowest level - PORTB &= ~(_BV(PORTB7)); - } - else if ( level == BACKLIGHT_LEVELS ) - { - // Prevent backlight blink on lowest level - PORTB &= ~(_BV(PORTB7)); - // Turn on PWM control of PB7 - TCCR1A |= _BV(COM1C1); - // Set the brightness - CHANNEL = 0xFFFF; - } - else - { - // Prevent backlight blink on lowest level - PORTB &= ~(_BV(PORTB7)); - // Turn on PWM control of PB7 - TCCR1A |= _BV(COM1C1); - // Set the brightness - CHANNEL = 0xFFFF >> ((BACKLIGHT_LEVELS - level) * ((BACKLIGHT_LEVELS + 1) / 2)); - } -} \ No newline at end of file diff --git a/keyboard/planck/Makefile b/keyboard/planck/Makefile index 01d9e3ce9a..c0c6201cba 100644 --- a/keyboard/planck/Makefile +++ b/keyboard/planck/Makefile @@ -171,10 +171,6 @@ endif endif -ifeq ($(strip $(BACKLIGHT_ENABLE)), yes) - SRC := backlight.c $(SRC) -endif - # Optimize size but this may cause error "relocation truncated to fit" #EXTRALDFLAGS = -Wl,--relax diff --git a/keyboard/planck/backlight.c b/keyboard/planck/backlight.c deleted file mode 100644 index f69364b2af..0000000000 --- a/keyboard/planck/backlight.c +++ /dev/null @@ -1,61 +0,0 @@ - -#include -#include "backlight.h" - -#define CHANNEL OCR1C - -void backlight_init_ports() -{ - - // Setup PB7 as output and output low. - DDRB |= (1<<7); - PORTB &= ~(1<<7); - - // Use full 16-bit resolution. - ICR1 = 0xFFFF; - - // I could write a wall of text here to explain... but TL;DW - // Go read the ATmega32u4 datasheet. - // And this: http://blog.saikoled.com/post/43165849837/secret-konami-cheat-code-to-high-resolution-pwm-on - - // Pin PB7 = OCR1C (Timer 1, Channel C) - // Compare Output Mode = Clear on compare match, Channel C = COM1C1=1 COM1C0=0 - // (i.e. start high, go low when counter matches.) - // WGM Mode 14 (Fast PWM) = WGM13=1 WGM12=1 WGM11=1 WGM10=0 - // Clock Select = clk/1 (no prescaling) = CS12=0 CS11=0 CS10=1 - - TCCR1A = _BV(COM1C1) | _BV(WGM11); // = 0b00001010; - TCCR1B = _BV(WGM13) | _BV(WGM12) | _BV(CS10); // = 0b00011001; - - backlight_init(); -} - -void backlight_set(uint8_t level) -{ - if ( level == 0 ) - { - // Turn off PWM control on PB7, revert to output low. - TCCR1A &= ~(_BV(COM1C1)); - CHANNEL = 0x0; - // Prevent backlight blink on lowest level - PORTB &= ~(_BV(PORTB7)); - } - else if ( level == BACKLIGHT_LEVELS ) - { - // Prevent backlight blink on lowest level - PORTB &= ~(_BV(PORTB7)); - // Turn on PWM control of PB7 - TCCR1A |= _BV(COM1C1); - // Set the brightness - CHANNEL = 0xFFFF; - } - else - { - // Prevent backlight blink on lowest level - PORTB &= ~(_BV(PORTB7)); - // Turn on PWM control of PB7 - TCCR1A |= _BV(COM1C1); - // Set the brightness - CHANNEL = 0xFFFF >> ((BACKLIGHT_LEVELS - level) * ((BACKLIGHT_LEVELS + 1) / 2)); - } -} \ No newline at end of file diff --git a/keyboard/planck/planck.c b/keyboard/planck/planck.c index 4b39cf1e8b..6558501504 100644 --- a/keyboard/planck/planck.c +++ b/keyboard/planck/planck.c @@ -32,3 +32,64 @@ void matrix_scan_kb(void) { void process_action_kb(keyrecord_t *record) { process_action_user(record); } + +#ifdef BACKLIGHT_ENABLE +#define CHANNEL OCR1C + +void backlight_init_ports() +{ + + // Setup PB7 as output and output low. + DDRB |= (1<<7); + PORTB &= ~(1<<7); + + // Use full 16-bit resolution. + ICR1 = 0xFFFF; + + // I could write a wall of text here to explain... but TL;DW + // Go read the ATmega32u4 datasheet. + // And this: http://blog.saikoled.com/post/43165849837/secret-konami-cheat-code-to-high-resolution-pwm-on + + // Pin PB7 = OCR1C (Timer 1, Channel C) + // Compare Output Mode = Clear on compare match, Channel C = COM1C1=1 COM1C0=0 + // (i.e. start high, go low when counter matches.) + // WGM Mode 14 (Fast PWM) = WGM13=1 WGM12=1 WGM11=1 WGM10=0 + // Clock Select = clk/1 (no prescaling) = CS12=0 CS11=0 CS10=1 + + TCCR1A = _BV(COM1C1) | _BV(WGM11); // = 0b00001010; + TCCR1B = _BV(WGM13) | _BV(WGM12) | _BV(CS10); // = 0b00011001; + + backlight_init(); +} + +void backlight_set(uint8_t level) +{ + if ( level == 0 ) + { + // Turn off PWM control on PB7, revert to output low. + TCCR1A &= ~(_BV(COM1C1)); + CHANNEL = 0x0; + // Prevent backlight blink on lowest level + PORTB &= ~(_BV(PORTB7)); + } + else if ( level == BACKLIGHT_LEVELS ) + { + // Prevent backlight blink on lowest level + PORTB &= ~(_BV(PORTB7)); + // Turn on PWM control of PB7 + TCCR1A |= _BV(COM1C1); + // Set the brightness + CHANNEL = 0xFFFF; + } + else + { + // Prevent backlight blink on lowest level + PORTB &= ~(_BV(PORTB7)); + // Turn on PWM control of PB7 + TCCR1A |= _BV(COM1C1); + // Set the brightness + CHANNEL = 0xFFFF >> ((BACKLIGHT_LEVELS - level) * ((BACKLIGHT_LEVELS + 1) / 2)); + } +} + +#endif \ No newline at end of file diff --git a/keyboard/planck/planck.h b/keyboard/planck/planck.h index edcb5fbff6..c5b59d9998 100644 --- a/keyboard/planck/planck.h +++ b/keyboard/planck/planck.h @@ -10,6 +10,7 @@ #include "rgblight.h" #endif #include +#include #ifdef MIDI_ENABLE #include #endif diff --git a/keyboard/preonic/Makefile b/keyboard/preonic/Makefile index 3504e27201..259dd6686b 100644 --- a/keyboard/preonic/Makefile +++ b/keyboard/preonic/Makefile @@ -162,11 +162,6 @@ endif endif -ifeq ($(strip $(BACKLIGHT_ENABLE)), yes) - SRC := backlight.c $(SRC) -endif - - # Optimize size but this may cause error "relocation truncated to fit" #EXTRALDFLAGS = -Wl,--relax diff --git a/keyboard/preonic/backlight.c b/keyboard/preonic/backlight.c deleted file mode 100644 index f69364b2af..0000000000 --- a/keyboard/preonic/backlight.c +++ /dev/null @@ -1,61 +0,0 @@ - -#include -#include "backlight.h" - -#define CHANNEL OCR1C - -void backlight_init_ports() -{ - - // Setup PB7 as output and output low. - DDRB |= (1<<7); - PORTB &= ~(1<<7); - - // Use full 16-bit resolution. - ICR1 = 0xFFFF; - - // I could write a wall of text here to explain... but TL;DW - // Go read the ATmega32u4 datasheet. - // And this: http://blog.saikoled.com/post/43165849837/secret-konami-cheat-code-to-high-resolution-pwm-on - - // Pin PB7 = OCR1C (Timer 1, Channel C) - // Compare Output Mode = Clear on compare match, Channel C = COM1C1=1 COM1C0=0 - // (i.e. start high, go low when counter matches.) - // WGM Mode 14 (Fast PWM) = WGM13=1 WGM12=1 WGM11=1 WGM10=0 - // Clock Select = clk/1 (no prescaling) = CS12=0 CS11=0 CS10=1 - - TCCR1A = _BV(COM1C1) | _BV(WGM11); // = 0b00001010; - TCCR1B = _BV(WGM13) | _BV(WGM12) | _BV(CS10); // = 0b00011001; - - backlight_init(); -} - -void backlight_set(uint8_t level) -{ - if ( level == 0 ) - { - // Turn off PWM control on PB7, revert to output low. - TCCR1A &= ~(_BV(COM1C1)); - CHANNEL = 0x0; - // Prevent backlight blink on lowest level - PORTB &= ~(_BV(PORTB7)); - } - else if ( level == BACKLIGHT_LEVELS ) - { - // Prevent backlight blink on lowest level - PORTB &= ~(_BV(PORTB7)); - // Turn on PWM control of PB7 - TCCR1A |= _BV(COM1C1); - // Set the brightness - CHANNEL = 0xFFFF; - } - else - { - // Prevent backlight blink on lowest level - PORTB &= ~(_BV(PORTB7)); - // Turn on PWM control of PB7 - TCCR1A |= _BV(COM1C1); - // Set the brightness - CHANNEL = 0xFFFF >> ((BACKLIGHT_LEVELS - level) * ((BACKLIGHT_LEVELS + 1) / 2)); - } -} \ No newline at end of file diff --git a/keyboard/preonic/preonic.c b/keyboard/preonic/preonic.c index f639f247a5..211f8d0296 100644 --- a/keyboard/preonic/preonic.c +++ b/keyboard/preonic/preonic.c @@ -38,4 +38,65 @@ void matrix_scan_kb(void) { void process_action_kb(keyrecord_t *record) { process_action_user(record); -} \ No newline at end of file +} + +#ifdef BACKLIGHT_ENABLE +#define CHANNEL OCR1C + +void backlight_init_ports() +{ + + // Setup PB7 as output and output low. + DDRB |= (1<<7); + PORTB &= ~(1<<7); + + // Use full 16-bit resolution. + ICR1 = 0xFFFF; + + // I could write a wall of text here to explain... but TL;DW + // Go read the ATmega32u4 datasheet. + // And this: http://blog.saikoled.com/post/43165849837/secret-konami-cheat-code-to-high-resolution-pwm-on + + // Pin PB7 = OCR1C (Timer 1, Channel C) + // Compare Output Mode = Clear on compare match, Channel C = COM1C1=1 COM1C0=0 + // (i.e. start high, go low when counter matches.) + // WGM Mode 14 (Fast PWM) = WGM13=1 WGM12=1 WGM11=1 WGM10=0 + // Clock Select = clk/1 (no prescaling) = CS12=0 CS11=0 CS10=1 + + TCCR1A = _BV(COM1C1) | _BV(WGM11); // = 0b00001010; + TCCR1B = _BV(WGM13) | _BV(WGM12) | _BV(CS10); // = 0b00011001; + + backlight_init(); +} + +void backlight_set(uint8_t level) +{ + if ( level == 0 ) + { + // Turn off PWM control on PB7, revert to output low. + TCCR1A &= ~(_BV(COM1C1)); + CHANNEL = 0x0; + // Prevent backlight blink on lowest level + PORTB &= ~(_BV(PORTB7)); + } + else if ( level == BACKLIGHT_LEVELS ) + { + // Prevent backlight blink on lowest level + PORTB &= ~(_BV(PORTB7)); + // Turn on PWM control of PB7 + TCCR1A |= _BV(COM1C1); + // Set the brightness + CHANNEL = 0xFFFF; + } + else + { + // Prevent backlight blink on lowest level + PORTB &= ~(_BV(PORTB7)); + // Turn on PWM control of PB7 + TCCR1A |= _BV(COM1C1); + // Set the brightness + CHANNEL = 0xFFFF >> ((BACKLIGHT_LEVELS - level) * ((BACKLIGHT_LEVELS + 1) / 2)); + } +} + +#endif \ No newline at end of file diff --git a/keyboard/preonic/preonic.h b/keyboard/preonic/preonic.h index 51ed9ba393..030acdadb4 100644 --- a/keyboard/preonic/preonic.h +++ b/keyboard/preonic/preonic.h @@ -10,6 +10,7 @@ #include "rgblight.h" #endif #include +#include #ifdef MIDI_ENABLE #include #endif diff --git a/quantum/template/Makefile b/quantum/template/Makefile index 4fa195468d..1a535ef2cb 100644 --- a/quantum/template/Makefile +++ b/quantum/template/Makefile @@ -111,23 +111,41 @@ OPT_DEFS += -DBOOTLOADER_SIZE=512 # Build Options -# comment out to disable the options. -# -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = yes # Console for debug(+400) -COMMAND_ENABLE = yes # Commands for debug and configuration -KEYBOARD_LOCK_ENABLE = yes # Allow locking of keyboard via magic key +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE = yes # Mouse keys(+4700) +EXTRAKEY_ENABLE = yes # Audio control and System control(+450) +CONSOLE_ENABLE = yes # Console for debug(+400) +COMMAND_ENABLE = yes # Commands for debug and configuration +KEYBOARD_LOCK_ENABLE = yes # Allow locking of keyboard via magic key # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -# SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend -#NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -# BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -# MIDI_ENABLE = YES # MIDI controls -# UNICODE_ENABLE = YES # Unicode -# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +MIDI_ENABLE = no # MIDI controls +UNICODE_ENABLE = no # Unicode +BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output on port C6 +ifdef KEYMAP + +ifeq ("$(wildcard keymaps/$(KEYMAP).c)","") +ifneq ("$(wildcard keymaps/$(KEYMAP)/makefile.mk)","") + include keymaps/$(KEYMAP)/makefile.mk +endif +endif + +else + +ifneq ("$(wildcard keymaps/default/makefile.mk)","") + include keymaps/default/makefile.mk +endif + +endif + # Optimize size but this may cause error "relocation truncated to fit" #EXTRALDFLAGS = -Wl,--relax diff --git a/quantum/template/template.c b/quantum/template/template.c index cc52e496ff..6050a2d20c 100644 --- a/quantum/template/template.c +++ b/quantum/template/template.c @@ -46,3 +46,64 @@ void led_set_kb(uint8_t usb_led) { led_set_user(usb_led); } + +#ifdef BACKLIGHT_ENABLE +#define CHANNEL OCR1C + +void backlight_init_ports() +{ + + // Setup PB7 as output and output low. + DDRB |= (1<<7); + PORTB &= ~(1<<7); + + // Use full 16-bit resolution. + ICR1 = 0xFFFF; + + // I could write a wall of text here to explain... but TL;DW + // Go read the ATmega32u4 datasheet. + // And this: http://blog.saikoled.com/post/43165849837/secret-konami-cheat-code-to-high-resolution-pwm-on + + // Pin PB7 = OCR1C (Timer 1, Channel C) + // Compare Output Mode = Clear on compare match, Channel C = COM1C1=1 COM1C0=0 + // (i.e. start high, go low when counter matches.) + // WGM Mode 14 (Fast PWM) = WGM13=1 WGM12=1 WGM11=1 WGM10=0 + // Clock Select = clk/1 (no prescaling) = CS12=0 CS11=0 CS10=1 + + TCCR1A = _BV(COM1C1) | _BV(WGM11); // = 0b00001010; + TCCR1B = _BV(WGM13) | _BV(WGM12) | _BV(CS10); // = 0b00011001; + + backlight_init(); +} + +void backlight_set(uint8_t level) +{ + if ( level == 0 ) + { + // Turn off PWM control on PB7, revert to output low. + TCCR1A &= ~(_BV(COM1C1)); + CHANNEL = 0x0; + // Prevent backlight blink on lowest level + PORTB &= ~(_BV(PORTB7)); + } + else if ( level == BACKLIGHT_LEVELS ) + { + // Prevent backlight blink on lowest level + PORTB &= ~(_BV(PORTB7)); + // Turn on PWM control of PB7 + TCCR1A |= _BV(COM1C1); + // Set the brightness + CHANNEL = 0xFFFF; + } + else + { + // Prevent backlight blink on lowest level + PORTB &= ~(_BV(PORTB7)); + // Turn on PWM control of PB7 + TCCR1A |= _BV(COM1C1); + // Set the brightness + CHANNEL = 0xFFFF >> ((BACKLIGHT_LEVELS - level) * ((BACKLIGHT_LEVELS + 1) / 2)); + } +} + +#endif \ No newline at end of file diff --git a/quantum/template/template.h b/quantum/template/template.h index b1c34d3cbe..22742105a3 100644 --- a/quantum/template/template.h +++ b/quantum/template/template.h @@ -3,7 +3,10 @@ #include "matrix.h" #include "keymap_common.h" -#include "backlight.h" +#ifdef BACKLIGHT_ENABLE + #include "backlight.h" +#endif +#include #include // This a shortcut to help you visually see your layout. -- cgit v1.2.1 From ed0798de243d892826370e32de340700101be8d0 Mon Sep 17 00:00:00 2001 From: "Anand Babu (AB) Periasamy" Date: Fri, 15 Apr 2016 15:43:24 -0700 Subject: Beginner's keymap for Ergodox-EZ --- keyboard/ergodox_ez/keymaps/ab/ab.hex | 1146 ++++++++++++++++++++ .../ergodox_ez/keymaps/ab/keyboard-layout.json | 385 +++++++ keyboard/ergodox_ez/keymaps/ab/keyboard-layout.png | Bin 0 -> 79440 bytes keyboard/ergodox_ez/keymaps/ab/keymap.c | 140 +++ keyboard/ergodox_ez/keymaps/ab/readme.md | 21 + 5 files changed, 1692 insertions(+) create mode 100644 keyboard/ergodox_ez/keymaps/ab/ab.hex create mode 100644 keyboard/ergodox_ez/keymaps/ab/keyboard-layout.json create mode 100644 keyboard/ergodox_ez/keymaps/ab/keyboard-layout.png create mode 100644 keyboard/ergodox_ez/keymaps/ab/keymap.c create mode 100644 keyboard/ergodox_ez/keymaps/ab/readme.md diff --git a/keyboard/ergodox_ez/keymaps/ab/ab.hex b/keyboard/ergodox_ez/keymaps/ab/ab.hex new file mode 100644 index 0000000000..1659ae5802 --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/ab/ab.hex @@ -0,0 +1,1146 @@ +:100000000C940F020C9453020C9453020C94530260 +:100010000C9453020C9453020C9453020C9453020C +:100020000C9453020C9453020C94190C0C94EB0C8A +:100030000C9453020C9453020C9453020C945302EC +:100040000C9453020C94CF210C9453020C94530241 +:100050000C9453020C94631B0C9453020C945302A3 +:100060000C9453020C9453020C9453020C945302BC +:100070000C9453020C9453020C9453020C945302AC +:100080000C9453020C9453020C9453020C9453029C +:100090000C9453020C9453020C9453020C9453028C +:1000A0000C9453020C9453020C945302500D720D95 +:1000B0005D0E720D5D0EB40DD70D5D0E2C0E3F0E54 +:1000C000391139117A117A11BC11F811F813F8139A +:1000D0001012F81307130713D213F813F813E613CB +:1000E00035002B003971E100E00000001E00140013 +:1000F00004001D0029002F001F001A0016001B001D +:10010000E3004C002000080007000600E2002C007D +:100110002100150009001900E20026022200170044 +:100120000A000500000006012300B60000004B0095 +:1001300000002F022400B70000004E000000300233 +:1001400025001C000B0011000000190126001800FA +:100150000D0010005200270227000C000E00360090 +:1001600050002A002D0012000F0037004F00280019 +:100170002E00130033003800510030002A003100F7 +:100180002800340001540000290001000100010092 +:10019000010000003A00010001000100010001001F +:1001A0003B000100F2000100010001003C00F000F2 +:1001B000F1000100F40000503D000100F3000100D7 +:1001C000F50001003E0001000100010000000100F7 +:1001D0003F0001000000010000000100400001009C +:1001E00000000100000001004100010001000100C9 +:1001F00000000100420001000100010001000100B7 +:100200004300010001000100AA00010044000100B8 +:1002100001000100A90001004500010001000100EA +:10022000A80001002A000100AE000100010000004A +:1002300016034500720067006F0044006F007800ED +:10024000200045005A0000001603450072006700B8 +:100250006F0044006F007800200045005A00000045 +:100260000403090409026D00040100A0FA09040056 +:10027000000103010100092111010001223F0007D3 +:1002800005810308000A09040100010301020009B5 +:100290002111010001224D000705820308000A090F +:1002A00004020001030000000921110100012236AF +:1002B000000705830308000A090403000103000086 +:1002C00000092111010001223900070584031000F3 +:1002D000011201100100000008EDFE0713010001EA +:1002E00002000105010906A101050719E029E7152A +:1002F0000025019508750181020508190129059558 +:1003000005750191029501750391010507190029F1 +:100310007715002501957875018102C005010980D6 +:10032000A101850216010026B7001A01002AB700B4 +:10033000751095018100C0050C0901A10185031606 +:100340000100269C021A01002A9C02751095018169 +:1003500000C005010902A1010901A1000509190157 +:100360002905150025019505750181029501750383 +:1003700081010501093009311581257F9502750834 +:10038000810609381581257F950175088106050CC0 +:100390000A38021581257F950175088106C0C005C0 +:1003A000010906A101050719E029E71500250195B6 +:1003B0000875018102950175088101050819012957 +:1003C00005950575019102950175039101050719C0 +:1003D0000029FF150025FF950675088100C0000063 +:1003E000000000000000000000010204060A0F17D0 +:1003F000202C3A4A5D71879DB3C7DAE9F5FCFFFC12 +:10040000F5E9DAC7B39D87715D4A3A2C20170F0AC8 +:10041000060402010000000000000000000011249A +:100420001FBECFEFDAE0DEBFCDBF04B603FE24C0AF +:100430008091EE019091EF01A091F001B091F10156 +:100440008730904BA740B04BB9F41092EE01109258 +:10045000EF011092F0011092F10114BE84B7877F72 +:1004600084BF88E10FB6F89480936000109260001A +:100470000FBEE0E0FFE3099511E0A0E0B1E0EAE49F +:10048000F7E402C005900D92A433B107D9F721E03B +:10049000A4E3B1E001C01D92AE3EB207E1F70E94B5 +:1004A0005F090C94A3230C94000061110BC0FC01A4 +:1004B0008281882321F085EE0E94C10F03C085EE62 +:1004C0000E94891080E090E0089508956091B10144 +:1004D0007091B2018091B3019091B4010E948A1A87 +:1004E00056985E9825982D9826982E9827982F989C +:1004F000813019F0823021F00895259A2D9A0895BF +:10050000269A2E9A08950C94660256985E9825981D +:100510002D9826982E9827982F988FEF90E09093FB +:1005200089008093880090938B0080938A00909339 +:100530008D0080938C00259A2D9A2FEF80E792E012 +:10054000215080409040E1F700C00000269A2E9A8A +:100550002FEF80E792E0215080409040E1F700C00B +:100560000000279A2F9A2FEF80E792E021508040D9 +:100570009040E1F700C0000025982D982FEF80E70C +:1005800092E0215080409040E1F700C000002698A2 +:100590002E982FEF80E792E0215080409040E1F7C5 +:1005A00000C0000027982F9856985E9825982D989F +:1005B00026982E9827982F98089589EA809380008E +:1005C00089E08093810024982C983F988AB18F7499 +:1005D0008AB96E98479A8BB1806B8BB9769A0E94D4 +:1005E00085020C94650280E28093000180913401C1 +:1005F00081110EC00E94420381E0809334012FEFED +:1006000083ED90E3215080409040E1F700C000006E +:1006100080E40E9448038093000181112EC00E9453 +:10062000720380930001811128C00E94720380939D +:100630000001811122C08FE30E94720380930001A8 +:1006400081111BC00E946A0380E40E9448038093CA +:100650000001811112C08CE00E947203809300019E +:1006600081110BC00E94720380930001811105C0AB +:100670008FE30E947203809300010E946A038091BD +:10068000000108951092B9008AE08093B80008959F +:1006900094EA9093BC009091BC0097FFFCCF90919E +:1006A000B900987F983021F0903111F081E00895E1 +:1006B0008093BB0084E88093BC008091BC0087FFDE +:1006C000FCCF8091B900887F883111F0803471F7B8 +:1006D00080E0089584E98093BC008091BC0084FD93 +:1006E000FCCF08958093BB0084E88093BC00809188 +:1006F000BC0087FFFCCF9091B900987F81E09832D1 +:1007000009F480E0089584E88093BC008091BC00E7 +:1007100087FFFCCF8091BB0008958091000181117B +:1007200015C080E40E9448038093000181110CC031 +:1007300082E10E94720380930001811105C08FEF56 +:100740000E947203809300010E946A0384B1807F3B +:1007500084B985B1807F85B98AB1837F8AB98BB12D +:10076000837F8BB93E98469808950E94F302809348 +:1007700000010E948D0380B38C7080BB81B3836FB6 +:1007800081BBA6E3B1E0E4E4F1E08EE08E0F1192CC +:100790001D928E13FCCF0C94DD02BF92CF92DF929C +:1007A000EF92FF920F931F93CF93DF9380910001FD +:1007B000882379F0809135018F5F80933501811115 +:1007C00008C00E94F30280930001811102C00E94C0 +:1007D000850206E311E0C0E0D0E0DD24D39482E09E +:1007E000C82EEE24E394F12CC730D10500F580919A +:1007F0000001811164C080E40E94480380930001DD +:10080000811112C082E10E94720380930001811164 +:100810000BC0C7010C2E01C0880F0A94EAF780951F +:100820000E947203809300010E946A0348C0CA308C +:10083000A1F028F4C83059F0C93061F005C0CC30BF +:1008400089F070F0CD3089F0209A289810C0219A54 +:1008500029980DC0229A2A980AC0239A2B9807C07B +:10086000529A01C0539A5B9802C03E9A469890EA09 +:100870009A95F1F79FB1799902C082E001C080E0BA +:1008800091709D25982B7C9902C084E001C080E086 +:10089000892B7D9902C038E001C030E0832B7E991E +:1008A00002C020E101C020E0822B9FB19095991FEA +:1008B0009927991F9295990F907E892B0FC080914F +:1008C0000001811149C080E40E9448038093000127 +:1008D000882379F1B12C0E946A038B2DF801908155 +:1008E000981719F08083C09201010E948D03219610 +:1008F0000F5F1F4FCE30D10509F076CF80910101F7 +:10090000882361F1815080930101882339F08FE9B8 +:100910009FE00197F1F700C0000020C0A4E4B1E01F +:10092000E6E3F1E0CF01825F91919D938E13FCCFBE +:1009300015C083E10E947203809300018111CACF28 +:1009400081E40E944803809300018111C3CF0E947B +:100950008303B82EB094BFCF80E0C0CF0E94830243 +:1009600081E0DF91CF911F910F91FF90EF90DF9089 +:10097000CF90BF900895E82FF0E0EC5BFE4F8081B0 +:1009800008950895089596E0799FF001112494E563 +:10099000899FE00DF11D1124E60FF11DEE0FFF1FE1 +:1009A000E052FF4F859194910895880F991FFC01A3 +:1009B000E05AF040859194910895880F991FFC01A9 +:1009C000E052FF4F8591949108950F931F93CF9319 +:1009D000DF93EC018115904350F5C11580E2D807F3 +:1009E00008F0B3C0CB3BD10590F4C83AD10508F06C +:1009F0005AC0C53AD10508F04BC0C430D10508F043 +:100A0000BBC1219709F0B5C101E010E0F5C1CF3FAE +:100A1000D10511F008F0B0C1C03FD10508F092C077 +:100A2000CE01805E9109089708F4A6C1A2C1C11544 +:100A300091E5D907A8F4C23020E5D20708F09EC09E +:100A4000C11580E5D80709F485C008F091C0C1152B +:100A500020E4D20708F08DC1DD278E01106CCCC1D7 +:100A6000C11580E8D80758F4C11590E7D90708F0F8 +:100A70007CC1C11520E6D20708F422C17AC1C11594 +:100A800080E9D80708F075C1DF708E01106AB4C123 +:100A9000C53AD10509F472C1C63AD10509F071C150 +:100AA00002E810E4A9C1C83AD10509F46DC1C93AF8 +:100AB000D10509F46CC1CA3AD10509F46BC1CB3A2E +:100AC000D10509F46AC1CC3AD10509F469C1CD3A1E +:100AD000D10509F468C1C03BD10509F467C1CE3A1C +:100AE000D10509F466C1CF3AD10509F465C1C13B0E +:100AF000D10509F464C1C23BD10509F463C1C33B0C +:100B0000D10509F462C1C43BD10509F461C1C53BFB +:100B1000D10509F460C1C63BD10509F45FC1C73BEB +:100B2000D10509F45EC1C83BD10509F45DC1C93BDB +:100B3000D10509F45CC1CA3BD10509F45BC100E0F1 +:100B400014E45AC18E01106557C1CE019F700E94F6 +:100B5000DD0453C10E941B149FEF24E38CE09150ED +:100B600020408040E1F700C000000E94881B44C183 +:100B70008091CD0181608093CD013EC10E94321DE4 +:100B8000811102C00E94181D0E944F1D90E0909399 +:100B9000EE018093ED01C23090E5D90721F48091F8 +:100BA000ED01816086C0C43020E5D20721F4809138 +:100BB000ED0182607EC0C63080E5D80721F48091C7 +:100BC000ED01846076C0C83090E5D90719F48091B2 +:100BD000ED0127C0CA3020E5D20721F48091ED0154 +:100BE000806167C0CC3080E5D80721F48091ED01A9 +:100BF00080625FC0CE3090E5D90721F48091ED018D +:100C0000806457C0C03120E5D20721F48091ED0106 +:100C100080684FC0C23180E5D80729F48091ED018A +:100C20008460886046C0C33090E5D90721F4809184 +:100C3000ED018E7F3EC0C53020E5D20721F48091C2 +:100C4000ED018D7F36C0C73080E5D80721F4809153 +:100C5000ED018B7F2EC0C93090E5D90719F4809142 +:100C6000ED0126C0CB3020E5D20721F48091ED01C3 +:100C70008F7E1FC0CD3080E5D80721F48091ED0133 +:100C80008F7D17C0CF3090E5D90721F48091ED0119 +:100C90008F7B0FC0C13120E5D20721F48091ED0197 +:100CA0008F7707C0C331D04531F48091ED018B7F40 +:100CB000877F8093ED018091ED010E94531D9CC0C0 +:100CC0008D2F99278F70992781309105D9F49E0136 +:100CD0002370332702C0880F991F2A95E2F79C687A +:100CE0008E0144E0000F111F4A95E1F700271370B1 +:100CF000802B912B53E0CC0FDD1F5A95E1F7C07686 +:100D0000DD272FC08230910531F4DC2FCC278E01F6 +:100D1000016F106A71C08330910569F4CE01837050 +:100D2000992701E010E002C0000F111F8A95E2F739 +:100D3000C8019C680FC0049709F05EC0CE018370A3 +:100D4000992701E010E002C0000F111F8A95E2F719 +:100D5000C8019A6823E0CC0FDD1F2A95E1F7C07E19 +:100D6000D7708C010C2B1D2B47C0DF708E011062D9 +:100D700043C000E010E040C08E013EC001E810E436 +:100D80003BC003E810E438C002EE14E435C009EEBD +:100D900014E432C00AEE14E42FC005EB14E42CC0B6 +:100DA00006EB14E429C007EB14E426C00CEC14E4B1 +:100DB00023C00DEC14E420C003E815E41DC00AE8CC +:100DC00015E41AC002E915E417C004E915E414C0DB +:100DD00001E216E411C003E216E40EC004E216E4D8 +:100DE0000BC005E216E408C006E216E405C007E2FF +:100DF00016E402C00AE216E4C801DF91CF911F9108 +:100E00000F91089596E0799FF001112494E5899F50 +:100E1000E00DF11D1124E60FF11DEE0FFF1FE05252 +:100E2000FF4F85919491803E9105E0F4803C9105BF +:100E300058F58133910509F46FC048F48932910562 +:100E400009F463C08A32910509F46DC072C0893318 +:100E50009105E9F082389105D1F08533910509F4C7 +:100E60004DC067C0833E910581F138F4803E910505 +:100E7000B9F0823E9105D9F05CC0863E910561F1E2 +:100E8000873E9105A1F155C00E94D5040895209197 +:100E9000ED0120FD02C021FF4CC080EE90E049C072 +:100EA0008091ED0180FFF9CF89E390E042C080910D +:100EB000ED0182FF0EC08091ED0184FF03C080E050 +:100EC00090E037C083EE90E034C08091ED0182FF66 +:100ED000F2CF82EE90E02DC08091ED0183FF0BC038 +:100EE0008091ED0184FDEBCF87EE90E022C08091F0 +:100EF000ED0183FFF5CF86EE90E01BC08091ED0100 +:100F000085FF07C089E290E014C08091ED0185FF64 +:100F1000F9CF85E390E00DC08091ED0186FF07C019 +:100F20008AE290E006C08091ED0186FFF9CF81E36F +:100F300090E00E94E504089508950C949C07809128 +:100F400062010895CF93DF9300D01F92CDB7DEB733 +:100F50002091E401243019F523E029839B838A83BF +:100F60002093E9008FEF9091E800815095FD06C035 +:100F700095ED9A95F1F700008111F5CF8091E80089 +:100F800085FF0DC040E050E063E070E0CE010196C7 +:100F90000E940C0A8091E8008E778093E8000F9001 +:100FA0000F900F90DF91CF910895CF93DF9300D0F2 +:100FB0001F92CDB7DEB72091E401243021F522E065 +:100FC00029839B838A8383E08093E9008FEF90914C +:100FD000E800815095FD06C095ED9A95F1F7000067 +:100FE0008111F5CF8091E80085FF0DC040E050E011 +:100FF00063E070E0CE0101960E940C0A8091E80047 +:101000008E778093E8000F900F900F90DF91CF9133 +:1010100008952091E4012430F1F422E02093E900C6 +:101020002FEF3091E800215035FD06C035ED3A959F +:10103000F1F700002111F5CF2091E80025FF0BC04A +:1010400040E050E065E070E00E940C0A8091E8000A +:101050008E778093E8000895CF93DF93EC01809121 +:10106000E401843009F046C090910C019923D9F035 +:1010700090910D019923B9F08093E9008FEF909141 +:10108000E800815095FD06C095E19A95F1F70000C2 +:101090008111F5CF8091E80085FF2CC040E050E041 +:1010A00060E170E017C081E08093E9008FEF9091DC +:1010B000E800815095FD06C095ED9A95F1F7000086 +:1010C0008111F5CF8091E80085FF14C040E050E029 +:1010D00068E070E0CE010E940C0A8091E8008E77F3 +:1010E0008093E80080E1FE01A2E5B1E001900D925D +:1010F0008A95E1F7DF91CF9108958091E301811105 +:1011000009C00E949E0B0E94FB0B8091E20084604C +:101110008093E20008951092E301089508950C94DD +:10112000BC210E941F1B0E94C2210E94980E0C9499 +:101130009D0742E061EC81E00E94180B42E061EC07 +:1011400082E00E94180B42E061EC83E00E94180BE1 +:1011500042E161EC84E00C94180B8091E60183304D +:1011600009F455C030F4813071F0823009F48EC03A +:1011700008958A3009F47AC08B3009F460C0893050 +:1011800009F09CC020C08091E501813A09F096C029 +:101190008091E800877F8093E8008091E901909139 +:1011A000EA01892B21F060E080E090E003C060E17B +:1011B00082E591E070E00E94550A8091E8008B770B +:1011C0008093E80008958091E501813209F076C0AE +:1011D0008091E9019091EA01009719F0039709F0D5 +:1011E0006DC08091E800877F8093E8008091E800DF +:1011F00082FD05C08091E4018111F8CF5FC080912C +:10120000F100809362018091E8008B7753C0809158 +:10121000E501813A09F052C08091E9019091EA011B +:10122000892B09F04BC08091E800877F8093E8000C +:101230008091E80080FFFCCF80910C0136C0809146 +:10124000E5018132D9F58091E9019091EA01892B7C +:10125000A9F58091E800877F8093E8000E944D0BFC +:101260008091E70180930C010C941B148091E5019F +:10127000813221F58091E800877F8093E8000E9409 +:101280004D0B8091E8018093630108958091E50101 +:10129000813AA1F48091E800877F8093E8008091F3 +:1012A000E80080FFFCCF809163018093F100809182 +:1012B000E8008E778093E8000C944D0B089584B776 +:1012C000877F84BF88E10FB6F89480936000109206 +:1012D00060000FBE90E080E80FB6F8948093610044 +:1012E000909361000FBE0E94E70E0E949E0B0E9429 +:1012F000FB0B8091E20084608093E20078940E946E +:10130000760E0E94E90E82E091E00E94930E0E9408 +:10131000AA218091E401853069F40E94DD1A809150 +:10132000E2018823B1F30E940B1B882391F30E94F2 +:10133000F609EFCF0E94EF0EECCF292F3327233091 +:101340003105A9F06CF42130310509F442C0223096 +:10135000310509F043C08DE690E024E632E042C05A +:1013600021323105C9F02232310519F137C09927F0 +:101370008130910541F08230910541F0892B71F562 +:10138000E0E6F2E005C0E8E4F2E002C0E0E3F2E00B +:10139000849190E09F0126C0643000F5E62FF0E0D4 +:1013A000EE0FFF1FEE5DFE4F2081318189E090E05E +:1013B00019C0643098F4E62FF0E0DF01AA0FBB1FDC +:1013C000A65EBE4F2D913C91EA5EFE4F808190E07B +:1013D00009C082E190E021ED32E004C080E090E0BD +:1013E00020E030E0FA0131832083089580E189BD57 +:1013F00082E189BD09B400FEFDCF8091D8008F7DC8 +:101400008093D8008091E00082608093E00080911A +:10141000E00081FDFCCF0895CF92DF92EF92FF9222 +:101420000F931F93CF93DF937C018B01EA010E94FE +:101430006E0B811131C0209731F088819981081B92 +:10144000190BE80EF91EC12CD12C0115110519F14B +:101450008091E80085FD14C08091E8008E7780932C +:10146000E800209741F0888199818C0D9D1D99831A +:10147000888385E011C00E946E0B882331F30CC075 +:10148000F70181917F018093F10001501109FFEF75 +:10149000CF1ADF0ADACF80E0DF91CF911F910F9151 +:1014A000FF90EF90DF90CF9008952091EB01309165 +:1014B000EC012617370748F06115710539F42091C2 +:1014C000E8002E772093E80001C0B901FC0120E07C +:1014D00061157105B9F18091E401882309F440C0D8 +:1014E000853009F43FC08091E80083FD3DC08091C4 +:1014F000E80082FF06C08091E80082FF26C080E0FD +:1015000008958091E80080FFE3CF2091F30080915F +:10151000F20090E0922B6115710551F08830910531 +:1015200038F421912093F100615071090196F3CFB5 +:1015300021E0089709F020E08091E8008E77809301 +:10154000E800C6CF2111C7CFD6CF8091E401882310 +:1015500039F0853039F08091E80083FFCCCF04C0AA +:1015600082E0089583E0089581E008952091EB01E1 +:101570003091EC012617370748F06115710539F4F1 +:101580002091E8002E772093E80001C0B901FC010A +:1015900020E061157105C1F18091E401882309F40F +:1015A00041C0853009F440C08091E80083FD3EC011 +:1015B0008091E80082FF06C08091E80082FF27C08A +:1015C00080E008958091E80080FFE3CF2091F30050 +:1015D0008091F20090E0922B6115710559F08830EE +:1015E000910540F424912093F100319661507109E6 +:1015F0000196F2CF21E0089709F020E08091E80001 +:101600008E778093E800C5CF2111C6CFD5CF8091CA +:10161000E401882339F0853039F08091E80083FFB8 +:10162000CBCF04C082E0089583E0089581E008955F +:10163000982F973058F59093E900981739F07091EA +:10164000EC002091ED005091F00003C0242F762F84 +:1016500050E021FF19C03091EB003E7F3093EB004A +:101660003091ED003D7F3093ED003091EB00316023 +:101670003093EB007093EC002093ED005093F0005A +:101680002091EE0027FF07C09F5FD3CF8F7080931C +:10169000E90081E0089580E008958091E50187FDEB +:1016A00005C08091E80080FF0EC012C08091E80064 +:1016B00082FD05C08091E4018111F8CF08958091E9 +:1016C000E8008B7708C08091E4018111EACF08958A +:1016D0008091E8008E778093E80008958091E4007F +:1016E0009091E50045E62091EC0020FF21C020917B +:1016F000E80020FD21C02091E401222389F025305B +:1017000089F02091EB0025FD0FC02091E40030917D +:10171000E5002817390739F3415041F0C901E3CFFB +:1017200082E0089583E0089581E0089584E00895BB +:101730002091E80022FFDFCF80E008950E940C0C8A +:101740000E94140CE0EEF0E0808181608083E8ED7F +:10175000F0E080818F77808319BCA7EDB0E08C9199 +:101760008E7F8C9380818F7E80831092E301089519 +:101770000F931F93CF93DF930E940C0C0E94140CC5 +:10178000C8EDD0E088818F778883888180688883DE +:1017900088818F7D888319BC1092E4011092E0014A +:1017A0001092E2011092E10100EE10E0F801808158 +:1017B0008B7F808388818160888342E060E080E065 +:1017C0000E94180BE1EEF0E080818E7F8083E2EED4 +:1017D000F0E0808181608083808188608083F8016F +:1017E00080818E7F8083888180618883DF91CF9123 +:1017F0001F910F910895E8EDF0E080818F7E808346 +:10180000E7EDF0E080818160808384E082BF81E049 +:101810008093E3010C94B80BE8EDF0E080818E7FBB +:1018200080831092E20008951092DA001092E10095 +:1018300008951F920F920FB60F9211242F933F938A +:101840004F935F936F937F938F939F93AF93BF93C8 +:10185000EF93FF938091E10082FF0BC08091E20043 +:1018600082FF07C08091E1008B7F8093E1000E949E +:10187000750E8091DA0080FF1FC08091D80080FF34 +:101880001BC08091DA008E7F8093DA008091D900AE +:1018900080FF0DC080E189BD82E189BD09B400FEF1 +:1018A000FDCF81E08093E4010E947D0805C019BC52 +:1018B0001092E4010E948B088091E10080FF19C022 +:1018C0008091E20080FF15C08091E2008E7F8093BE +:1018D000E2008091E20080618093E2008091D80074 +:1018E00080628093D80019BC85E08093E4010E9457 +:1018F0008F088091E10084FF30C08091E20084FF76 +:101900002CC080E189BD82E189BD09B400FEFDCF14 +:101910008091D8008F7D8093D8008091E1008F7EE8 +:101920008093E1008091E2008F7E8093E2008091BD +:10193000E20081608093E2008091E001882311F051 +:1019400084E007C08091E30087FF02C083E001C00C +:1019500081E08093E4010E9491088091E10083FF7F +:1019600029C08091E20083FF25C08091E100877F3C +:101970008093E10082E08093E4011092E001809185 +:10198000E1008E7F8093E1008091E2008E7F809362 +:10199000E2008091E20080618093E20042E060E03A +:1019A00080E00E94180B8091F00088608093F00026 +:1019B0000E948E08FF91EF91BF91AF919F918F91FF +:1019C0007F916F915F914F913F912F910F900FBE3B +:1019D0000F901F9018951F920F920FB60F9211241F +:1019E0002F933F934F935F936F937F938F939F9327 +:1019F000AF93BF93CF93EF93FF93C091E900CF7064 +:101A00008091EC001092E9008091F000877F809334 +:101A1000F00078940E94270D1092E9008091F00068 +:101A200088608093F000C093E900FF91EF91CF911F +:101A3000BF91AF919F918F917F916F915F914F91E6 +:101A40003F912F910F900FBE0F901F9018951F93ED +:101A5000CF93DF93CDB7DEB7AA970FB6F894DEBF6A +:101A60000FBECDBFE5EEF1E08091F100819321E062 +:101A7000ED3EF207C9F70E94AD088091E80083FFB0 +:101A80001CC12091E5013091E601832F90E08A305E +:101A9000910508F012C1FC01EA5AFF4F0C94532340 +:101AA000203881F0223809F008C18091E9018F7057 +:101AB0008093E9008091EB0085FB882780F91092E4 +:101AC000E90006C08091E1019091E20191118260EC +:101AD0009091E800977F9093E8008093F100109236 +:101AE000F100C5C0822F8D7F09F0E7C0222319F0D5 +:101AF000223061F0E2C08091E701813009F0DDC061 +:101B0000333009F080E08093E20128C08091E70142 +:101B1000811124C02091E9012F7009F4CEC02093D7 +:101B2000E9008091EB0080FF19C08091EB00333019 +:101B300011F4806211C080618093EB0081E090E03D +:101B4000022E01C0880F0A94EAF78093EA001092EF +:101B5000EA008091EB0088608093EB001092E9002E +:101B60008091E800877F86C02111A7C01091E7010E +:101B70001F778091E3008078812B8093E300809130 +:101B8000E800877F8093E8000E944D0B8091E80079 +:101B900080FFFCCF8091E30080688093E3001123F5 +:101BA00011F083E001C082E08093E40186C02058F8 +:101BB000223008F082C08091E7019091E8018C3DCD +:101BC00023E0920779F583E08A838AE289834FB71D +:101BD000F894DE01139620E03EE051E2E32FF0E0BE +:101BE00050935700E49120FF03C0E295EF703F5FF0 +:101BF000EF708E2F90E0EA3010F0C79601C0C096CB +:101C00008D939D932F5F243149F74FBF8091E8005A +:101C1000877F8093E8006AE270E0CE0101960E941F +:101C2000550A14C0AE014F5F5F4F6091E9010E94F9 +:101C30009D09009709F441C02091E800277F209377 +:101C4000E800BC0189819A810E94B60A8091E8006F +:101C50008B778093E80031C0203879F58091E800D7 +:101C6000877F8093E8008091E0018093F10080916C +:101C7000E8008E778093E8000E944D0B1EC0211172 +:101C80001CC09091E7019230C0F48091E800877FFA +:101C90008093E8009093E0010E944D0B8091E00159 +:101CA000811104C08091E30087FF02C084E001C07D +:101CB00081E08093E4010E9499088091E80083FF0D +:101CC0000AC08091E800877F8093E8008091EB0054 +:101CD00080628093EB00AA960FB6F894DEBF0FBE29 +:101CE000CDBFDF91CF911F9108950895CF9380913B +:101CF000E4018823B1F08091E9008F709091EC00AD +:101D000090FF02C090E801C090E0C92FC82B10924C +:101D1000E9008091E80083FD0E94270DCF70C093F9 +:101D2000E900CF9108959093690180936801089527 +:101D3000E0916801F0916901309721F00190F08104 +:101D4000E02D099480E00895E0916801F091690127 +:101D5000309721F00280F381E02D09940895E091FD +:101D60006801F0916901309721F00480F581E02D40 +:101D700009940895209166013091670182179307B5 +:101D800071F09093670180936601E0916801F09192 +:101D90006901309721F00680F781E02D09940895BC +:101DA00020916401309165018217930771F090933F +:101DB000650180936401E0916801F09169013097B9 +:101DC00021F00084F185E02D0994089508950C9484 +:101DD000E60E0E94251B0E94B5030C94EB1BCF92CC +:101DE000DF92EF92FF920F931F93CF93DF93CDB7C4 +:101DF000DEB72B970FB6F894DEBF0FBECDBF0E94A3 +:101E0000CD038BE6C82E81E0D82E00E010E0E02E56 +:101E1000802F0E94BB04F60141916F01F42EF82639 +:101E2000B1F40F5F1F4F0E30110589F78FEF8983D3 +:101E30008A831B820E942E1B8160782F9D838C8356 +:101E400049815A816B818D810E94920F40C090918F +:101E5000CD0191FF04C08B870E94C1048B8520E0D7 +:101E600030E04F2D50E0922FBA01022E02C075953E +:101E700067950A94E2F760FF24C02E83EF8221E089 +:101E800030E0690102C0CC0CDD1C9A95E2F790E0CD +:101E90008C219D21892B09F420E028870E942E1B8C +:101EA0008160782F9A8789874E815F8168858A85CE +:101EB0000E94920FF801E559FE4F8081C826C0822A +:101EC00006C02F5F3F4F2630310569F6AACF0E942A +:101ED000D11E10916A010E94980E1817A1F00E945D +:101EE000980E80936A012B960FB6F894DEBF0FBE52 +:101EF000CDBFDF91CF911F910F91FF90EF90DF90B9 +:101F0000CF900C949D072B960FB6F894DEBF0FBEB2 +:101F1000CDBFDF91CF911F910F91FF90EF90DF9098 +:101F2000CF900895CF93DF93CDB7DEB72B970FB641 +:101F3000F894DEBF0FBECDBF4F83588769877A877D +:101F40008B87DE01119686E0FD0111928A95E9F7F3 +:101F500085E0FE01379601900D928A95E1F749815F +:101F60005A816B817C818D819E810E94E7162B9620 +:101F70000FB6F894DEBF0FBECDBFDF91CF910895AD +:101F80000895CF93C82F882309F4C1C0823859F42B +:101F90000E94980E81FDBBC089E30E9491190E94A6 +:101FA0005B1A89E30CC0833879F40E94980E80FD97 +:101FB000AEC083E50E9491190E945B1A83E50E94DE +:101FC000D119CF910C945B1A843859F40E94980E61 +:101FD00082FD9DC087E40E9491190E945B1A87E4EC +:101FE000EECF8CEF8C0F813A48F48C2F0E940F219A +:101FF00081118DC08C2F0E949119E3CF80E28C0F4C +:10200000883048F4C77081E001C0880FCA95EAF7AC +:102010000E94121AD6CF8BE58C0F833078F4C53A24 +:1020200029F0C63A31F482E890E005C081E890E0FA +:1020300002C083E890E0CF910C94BA0E88E58C0F33 +:10204000833108F064C0C83A39F1C93A41F1CA3A5B +:1020500049F1CB3A51F1CC3A59F1CD3A61F1C03B5B +:1020600069F1CE3A71F1CF3A79F1C13B81F1C23BCE +:1020700089F1C33B91F1C43B99F1C53BA1F1C63B4A +:10208000A9F1C73BB1F1C83BB9F1C93BC1F1CA3BAA +:10209000C9F58AE292E038C082EE90E035C089EE60 +:1020A00090E032C08AEE90E02FC085EB90E02CC02B +:1020B00086EB90E029C087EB90E026C08CEC90E0A6 +:1020C00023C08DEC90E020C083E891E01DC08AE839 +:1020D00091E01AC082E991E017C084E991E014C050 +:1020E00081E292E011C083E292E00EC084E292E0CD +:1020F0000BC085E292E008C086E292E005C087E26C +:1021000092E002C080E090E0CF910C94D00ECF918D +:102110000895882309F44BC0823859F40E94980E20 +:1021200081FF45C089E30E9491190E945B1A89E3EF +:102130000CC0833871F40E94980E80FF38C083E58C +:102140000E9491190E945B1A83E50E94D1190C9498 +:102150005B1A843859F40E94980E82FF28C087E4E5 +:102160000E9491190E945B1A87E4EFCF9CEF980FB1 +:10217000913A58F390E2980F983050F4877091E0BC +:1021800001C0990F8A95EAF7892F0E94181ADFCFAC +:102190009BE5980F933020F480E090E00C94BA0E09 +:1021A000885A833120F480E090E00C94D00E08959A +:1021B000882321F00E94121A0C945B1A0895882338 +:1021C00021F00E94181A0C945B1A0895CF92DF92A6 +:1021D000EF92FF920F931F93CF93DF93CDB7DEB7AC +:1021E00028970FB6F894DEBF0FBECDBF8C0185E0F7 +:1021F000F801DE01119601900D928A95E1F7F80140 +:10220000D080E180F280558152955F7023813481C6 +:10221000232B39F0FFEFEF1206C081E0DF1203C07D +:1022200003C081E001C080E080FDE2C2C8015F839D +:102230000E94C00FD982EA8269817A818F2D0E9423 +:102240008D199E8388870E9441190E9414184E811F +:102250005F816885FF2029F00E942F1A68855F81C1 +:102260004E81E42FE295EF70F0E0E05AFF4F0C94BE +:102270005323842F807F142F1F70882311F0129511 +:10228000107FFF20B1F0112309F467C280E2860FAE +:10229000883028F4812F68870E94121A04C0812F89 +:1022A00068870E94221A688568870E945B1A688581 +:1022B00054C2862F68870E9489106885112309F40B +:1022C00097C2605E812F683018F40E94181A02C00D +:1022D0000E94281A28960FB6F894DEBF0FBECDBF15 +:1022E000DF91CF911F910F91FF90EF90DF90CF90F2 +:1022F0000C945B1A242F207F842F8F70203211F0D2 +:102300008295807F662319F0613019F12BC0FF2080 +:10231000B1F0552309F493C1513009F090C12896CA +:102320000FB6F894DEBF0FBECDBFDF91CF911F91E6 +:102330000F91FF90EF90DF90CF900C94421A5523AD +:1023400019F0513009F454C28E830E94451A8E81CF +:1023500089C1FF2021F0523008F04AC270C15111EA +:1023600047C280C1FF2021F0552309F468C1F5C19F +:10237000552309F477C105C2242F2695269523708D +:1023800030E02115310521F021303105C9F030C28E +:10239000FF2021F0862F942F937002C080E090E000 +:1023A00028960FB6F894DEBF0FBECDBFDF91CF9158 +:1023B0001F910F91FF90EF90DF90CF900C94BA0E89 +:1023C000FF2021F0862F942F937002C080E090E0D0 +:1023D00028960FB6F894DEBF0FBECDBFDF91CF9128 +:1023E0001F910F91FF90EF90DF90CF900C94D00E43 +:1023F000862FFF2019F00E94D91D02C00E94411EA5 +:1024000028960FB6F894DEBF0FBECDBFDF91CF91F7 +:102410001F910F91FF90EF90DF90CF900C94C61E0C +:10242000842F837009F076C0F110E2C1262F229527 +:1024300026952770220F220F862F8F70C82ED12C41 +:10244000E12CF12C022E04C0CC0CDD1CEE1CFF1C78 +:102450000A94D2F764FF10C06FE070E080E090E073 +:1024600004C0660F771F881F991F2A95D2F76095C1 +:1024700070958095909503C060E070E0CB01242FAB +:10248000269526952370422F50E042305105D1F019 +:102490004330510559F16C297D298E299F294130FE +:1024A000510541F128960FB6F894DEBF0FBECDBF9F +:1024B000DF91CF911F910F91FF90EF90DF90CF9020 +:1024C0000C9439186C297D298E299F2928960FB6DE +:1024D000F894DEBF0FBECDBFDF91CF911F910F915A +:1024E000FF90EF90DF90CF900C9453180E94391812 +:1024F000C701B60128960FB6F894DEBF0FBECDBF58 +:10250000DF91CF911F910F91FF90EF90DF90CF90CF +:102510000C941F18FF2019F0842F817001C086953C +:10252000882309F465C1262F229526952770220F4E +:10253000220F862F8F70C82ED12CE12CF12C022E69 +:1025400004C0CC0CDD1CEE1CFF1C0A94D2F764FF07 +:1025500010C06FE070E080E090E004C0660F771F6D +:10256000881F991F2A95D2F7609570958095909550 +:1025700003C060E070E0CB01242F269526952370E0 +:10258000422F50E042305105D1F04330510559F10E +:102590006C297D298E299F294130510541F12896CA +:1025A0000FB6F894DEBF0FBECDBFDF91CF911F9164 +:1025B0000F91FF90EF90DF90CF900C940D196C2944 +:1025C0007D298E299F2928960FB6F894DEBF0FBE6D +:1025D000CDBFDF91CF911F910F91FF90EF90DF90D2 +:1025E000CF900C9427190E940D19C701B6012896A7 +:1025F0000FB6F894DEBF0FBECDBFDF91CF911F9114 +:102600000F91FF90EF90DF90CF900C94F318603F04 +:10261000C9F118F4603E50F49BC0623F09F460C0F9 +:1026200008F44AC0633F09F46FC092C0162F1F70B0 +:10263000842F8F71FF2099F00E948C18812F28968B +:102640000FB6F894DEBF0FBECDBFDF91CF911F91C3 +:102650000F91FF90EF90DF90CF900C94D8100E94D4 +:10266000AD18812F28960FB6F894DEBF0FBECDBFF0 +:10267000DF91CF911F910F91FF90EF90DF90CF905E +:102680000C94DF10FF20A1F05111B2C0842F8F7184 +:1026900028960FB6F894DEBF0FBECDBFDF91CF9165 +:1026A0001F910F91FF90EF90DF90CF900C94D21874 +:1026B000523008F09DC0EACFFF20A1F0842F8F7127 +:1026C00028960FB6F894DEBF0FBECDBFDF91CF9135 +:1026D0001F910F91FF90EF90DF90CF900C948C188A +:1026E000FF2061F3842F8F7128960FB6F894DEBF18 +:1026F0000FBECDBFDF91CF911F910F91FF90EF9053 +:10270000DF90CF900C94AD18FF2091F0842F8F7143 +:1027100028960FB6F894DEBF0FBECDBFDF91CF91E4 +:102720001F910F91FF90EF90DF90CF900C9477184E +:1027300028960FB6F894DEBF0FBECDBFDF91CF91C4 +:102740001F910F91FF90EF90DF90CF900C946D1838 +:10275000FF20A1F0552309F4B1CF862F28960FB69C +:10276000F894DEBF0FBECDBFDF91CF911F910F91C7 +:10277000FF90EF90DF90CF900C94C10F552309F498 +:10278000B1CF862F28960FB6F894DEBF0FBECDBF0F +:10279000DF91CF911F910F91FF90EF90DF90CF903D +:1027A0000C9489104F70C8010E94550228960FB6EC +:1027B000F894DEBF0FBECDBFDF91CF911F910F9177 +:1027C000FF90EF90DF90CF900C9494174F70C8015A +:1027D00028960FB6F894DEBF0FBECDBFDF91CF9124 +:1027E0001F910F91FF90EF90DF90CF900C94C20457 +:1027F00028960FB6F894DEBF0FBECDBFDF91CF9104 +:102800001F910F91FF90EF90DF90CF9008950E945D +:102810002F1A0E943F1A0E94041A0E945B1A0E94FB +:10282000721F0E94C61E80E090E00E94BA0E80E0F7 +:1028300090E00C94D00E0E941F1A0C9407140E9472 +:102840008219292F22952F7030E02C3031054CF45D +:102850002A3031056CF4225031092230310590F4D0 +:1028600007C02C30310551F02F30310539F00AC046 +:10287000803E10F0803F31F481E0089593FB88277B +:1028800080F9089580E00895CF93DF9300D000D0C1 +:102890001F92CDB7DEB70F900F900F900F900F9053 +:1028A000DF91CF910895CF93DF9300D000D000D077 +:1028B000CDB7DEB726960FB6F894DEBF0FBECDBFFC +:1028C000DF91CF9108951F93CF93DF93C09179014A +:1028D00016E080917A01C81799F0D0E01C9FF001B2 +:1028E0001D9FF00D1124E558FE4F408151816281FA +:1028F0007381848195810E9453142196C770E9CF1A +:10290000DF91CF911F9108954091AB015091AC019F +:102910006091AD017091AE018091AF019091B001D5 +:102920000C945314CF938091B00182958F7009F06D +:102930005FC08091AD01882309F45AC020917901CC +:10294000A0917A016091AB017091AC018091AE01D0 +:102950009091AF0131E06F3F09F030E0B32FC6E056 +:102960002A1709F445C0009721F07F3F21F44B2F2F +:1029700003C041E001C040E030E040FD35C0C29FEF +:10298000F001C39FF00D1124E558FE4F41817413EF +:102990002BC04081641328C04281411125C043816E +:1029A00054814817590710F441505109481B590BDD +:1029B000483C5105C8F48091B0018F7080618093CC +:1029C000B00186E0829FF001839FF00D1124E05852 +:1029D000FE4F80818F70806180838BEA91E00E943E +:1029E000E610CF910C9463142F5F3F4F2770B8CF40 +:1029F000CF910895CF92DF92EF92FF920F931F93A2 +:102A0000CF93DF93CDB7DEB762970FB6F894DEBFF2 +:102A10000FBECDBF8C0185E0F801DE011D9601904F +:102A20000D928A95E1F7D8014C9111965C9111971E +:102A300012966C9112971396ED90FC9014977091EA +:102A4000AB01E091AC012091AE013091AF012115B5 +:102A5000310531F0EF3F31F481E07F3F19F403C0DD +:102A600081E001C080E0B82FB170CB2E80FD6CC139 +:102A7000D090AD01DD2009F4F5C0F091B001E2166F +:102A8000F30638F0C701821B930B883C910548F090 +:102A90009BC0209530952E0D3F1D283C310508F038 +:102AA00093C08F2F807F09F052C0E51314C07413B8 +:102AB00012C0D62E61110FC0FF70F061F093B0010B +:102AC0000E9484148BEA91E00E94E6108091B0018C +:102AD000F80185836CC1EF2831F05F3F31F481E06C +:102AE0004F3F19F403C081E001C080E080FD03C0C6 +:102AF00081E0862701C080E0F82FF170FF2E80FF73 +:102B00001CC08091790120917A0136E0821709F486 +:102B100028C190E0389FF001399FF00D1124E5584D +:102B2000FE4F7181571306C07081471303C0728135 +:102B3000671303C001968770E9CFD62E662309F488 +:102B400036C18091B00181608093B00153C0E5131C +:102B500008C0741306C0611104C0D8011596FC9317 +:102B6000AEC04D875E878D859E856A8B0E941F143F +:102B70006A89882329F1D62E662311F12091B001AC +:102B8000822F82958F7090E002970CF460C0809144 +:102B9000AB019091AC0198878F831986FB86EA86FA +:102BA0002C87CE01079651C0E51731F14D875E871E +:102BB0008D859E856A8B0E941F146A8981112EC0A3 +:102BC000C8010E94E610A4C08F2F807F69F77E2D78 +:102BD000F98AE88A89890E9444148BEA91E00E946C +:102BE000E610EBEAF1E086E0DF011D928A95E9F755 +:102BF0000E948414D12CDBC07413D8CF6111D6CFBE +:102C0000D8011596FC93C8010E94E610EBEAF1E0AA +:102C100086E0DF011D928A95E9F7C9C0D62E6623AA +:102C200079F22091B001822F82958F7090E0029707 +:102C300074F08091AB019091AC019A8389831B82DF +:102C4000FD82EC822E83CE0101960E94E61086E082 +:102C5000F801ABEAB1E001900D928A95E1F70E948C +:102C600092146FC0E216F30628F0C701821B930B83 +:102C70009C0104C0209530952E0D3F1D283C310548 +:102C800008F052C0D62E662309F49ACFE5132CC063 +:102C900074132AC08091B00180FD1DC0982F9295B9 +:102CA0009F70C9F0D80115968C9315979F3039F015 +:102CB0009F5F9295907F8F70892B15968C93C8019A +:102CC0000E94E61086E0F801ABEAB1E001900D92B7 +:102CD0008A95E1F736C086E0F801ABEAB1E00190F1 +:102CE0000D928A95E1F763C04D875E878D859E853D +:102CF0000E941F14882379F086E0F801ABEAB1E066 +:102D000001900D928A95E1F70E9492140E9484141A +:102D1000DD24D3944CC08091B00181608093B001D8 +:102D2000C8010E94E61043C07E2DF98AE88A89898D +:102D30000E944414EBEAF1E086E0DF011D928A95DF +:102D4000E9F70E94841433C0662309F439CF4D8714 +:102D50005E878D859E850E941F14882309F430CFDD +:102D6000CBCF4D875E878D859E850E948219292F46 +:102D700022952F7030E0223031052CF49F7041F005 +:102D8000811106C00CC0243031052CF49F7049F429 +:102D9000805E883020F0C8010E94E610CF2CDC2C29 +:102DA00006C0D80115969C91907F91F7F8CF8D2D94 +:102DB00062960FB6F894DEBF0FBECDBFDF91CF9104 +:102DC0001F910F91FF90EF90DF90CF9008951F9388 +:102DD000CF93DF93CDB7DEB72C970FB6F894DEBF55 +:102DE0000FBECDBF4F83588769877A878B879C87B3 +:102DF000CE0107960E94FA148823C1F02F813885EE +:102E00008A859B85892B31F03F3F11F080E003C01C +:102E10002F3FE1F781E0811147C04F8158856985D7 +:102E20007A858B859C850E9453143EC086E0FE0106 +:102E30003796DE01119601900D928A95E1F7FF8198 +:102E4000E8854A855B854115510531F0EF3F31F446 +:102E500081E0FF3F19F403C081E001C080E080FD04 +:102E600023C020917A0130E0C9010196877099272B +:102E70006091790170E086179707F1F1F983EA8391 +:102E80005D834C8396E0929FD001939FB00D1124F7 +:102E9000A558BE4FFE01319601900D929A95E1F72B +:102EA00080937A010E94631416E0809179019091D9 +:102EB0007A01891779F1189FC001112485589E4F16 +:102EC0000E94FA14882331F1E09179011E9FF001EC +:102ED0001124E558FE4F40815181628173818481C4 +:102EE00095810E9453148091790190E0019687703A +:102EF000992780937901D9CF0E941B1410927A01EF +:102F000010927901EBEAF1E086E0DF011D928A95EB +:102F1000E9F7CACF2C960FB6F894DEBF0FBECDBF2F +:102F2000DF91CF911F910895EF92FF920F931F931E +:102F3000CF93DF93FC01009709F46FC0F12CEE24CE +:102F4000E394EF0121968491843740F4843008F0B3 +:102F500055C0813081F0823021F15FC0853709F49E +:102F600047C0C0F19CE7980F903708F056C08F77A4 +:102F70000E94891045C08F010E5F1F4FFE01849192 +:102F800090E2980F983050F48770FE2D01C0FF0F2B +:102F90008A95EAF78F2F0E94321A15C00E94C10F3E +:102FA00014C08F010E5F1F4FFE01849190E2980FB5 +:102FB000983068F48770FE2D01C0FF0F8A95EAF7FC +:102FC0008F2F0E94381A0E945B1AE80119C00E94D4 +:102FD0008910FBCFCF010296FE01C491CC2361F092 +:102FE000EFE9FFE03197F1F700C00000C150F6CFE4 +:102FF000CF010296FE01F490EC0102C00E94C10FC5 +:103000008F2D882341F0EFE9FFE03197F1F700C001 +:1030100000008150F6CFFE0194CFDF91CF911F9138 +:103020000F91FF90EF90089508956093B50170930C +:10303000B6018093B7019093B8010C9407140F93D5 +:103040001F930091B5011091B6012091B701309105 +:10305000B801062B172B282B392B0093B5011093A1 +:10306000B6012093B7013093B8011F910F910C94D2 +:1030700007140F931F930091B5011091B601209191 +:10308000B7013091B8010623172328233923009371 +:10309000B5011093B6012093B7013093B8011F9189 +:1030A0000F910C9407140F931F930091B501109189 +:1030B000B6012091B7013091B801062717272827BC +:1030C00039270093B5011093B6012093B7013093CF +:1030D000B8011F910F910C9407141092B101109236 +:1030E000B2011092B3011092B4010C94071441E0A4 +:1030F00050E060E070E004C0440F551F661F771F6A +:103100008A95D2F74093B1015093B2016093B30115 +:103110007093B4010C94071441E050E060E070E05B +:1031200004C0440F551F661F771F8A95D2F7809100 +:10313000B1019091B201A091B301B091B401842B7F +:10314000952BA62BB72B8093B1019093B201A0933E +:10315000B301B093B4010C94071441E050E060E077 +:1031600070E004C0440F551F661F771F8A95D2F781 +:1031700040955095609570958091B1019091B20104 +:10318000A091B301B091B40184239523A623B72362 +:103190008093B1019093B201A093B301B093B401B5 +:1031A0000C94071441E050E060E070E004C0440F6C +:1031B000551F661F771F8A95D2F78091B1019091B4 +:1031C000B201A091B301B091B40184279527A6273D +:1031D000B7278093B1019093B201A093B301B0934C +:1031E000B4010C9407140F931F930091B101109137 +:1031F000B2012091B3013091B401062B172B282B7B +:10320000392B0093B1011093B2012093B301309395 +:10321000B4011F910F910C9407140F931F93009109 +:10322000B1011091B2012091B3013091B401062394 +:103230001723282339230093B1011093B20120935F +:10324000B3013093B4011F910F910C9407140F93A5 +:103250001F930091B1011091B2012091B3013091FF +:10326000B40106271727282739270093B1011093A7 +:10327000B2012093B3013093B4011F910F910C94CC +:1032800007140895CF92DF92EF92FF920F931F934E +:10329000CF93DF93EC01C090B501D090B601E090E0 +:1032A000B701F090B8018091B1019091B201A09165 +:1032B000B301B091B401C82AD92AEA2AFB2A0FE146 +:1032C00010E0B701A601002E04C0769567955795CA +:1032D00047950A94D2F740FD05C00150110988F7BF +:1032E00080E007C0BE01802F0E9402070197A9F36A +:1032F000802FDF91CF911F910F91FF90EF90DF9082 +:10330000CF900895CF93DF93EC010E944219BE0144 +:103310000E940207DF91CF910895CB010E9482198C +:10332000089590910C019923D9F090910D01992362 +:10333000B9F0982F9695969596959F3088F5E091DF +:103340000E01F0910F01E90FF11D877021E030E0CF +:1033500001C0220F8A95EAF78181822B818308952B +:1033600040910E0150910F0120E030E09FEFFA01F3 +:10337000E20FF31F6281681799F09F3F19F4611102 +:1033800001C0922F2F5F3F4F2E30310581F79F3FB5 +:1033900039F0FA01E90FF11D97FDFA95828308953E +:1033A000089590910C019923E1F090910D019923DA +:1033B000C1F0982F9695969596959F3020F5E091BF +:1033C0000E01F0910F01E90FF11D877021E030E04F +:1033D00001C0220F8A95EAF7209581812823218355 +:1033E000089540910E0150910F0120E030E0FA0164 +:1033F000E20FF31F9281981301C012822F5F3F4F9B +:103400002E303105A1F7089581E090E0E0910E01A2 +:10341000F0910F01E80FF91F10820196803191059C +:10342000A9F708959091CC01982B9093CC01089521 +:1034300080959091CC0198239093CC01089510929F +:10344000CC0108959091CB01982B9093CB010895D6 +:1034500080959091CB0198239093CB010895109281 +:10346000CB0108959091CA01982B9093CA010895B9 +:1034700080959091CA0198239093CA010895109263 +:10348000CA0108958093B90108951092B901089571 +:1034900040910E0150910F0120E030E080E0FA01F0 +:1034A000E20FF31F918191118F5F2F5F3F4F2F30FC +:1034B0003105A9F70895E0910E01F0910F01809177 +:1034C000CC018083E0910E01F0910F0180819091F9 +:1034D000CB01892B8083E0910E01F0910F01808157 +:1034E0009091CA01892B80839091B901992361F051 +:1034F000E0910E01F0910F018081892B80830E9461 +:10350000481A81111092B90180910E0190910F011A +:103510000C94A40ECF92DF92EF92FF920F931F9321 +:103520006C01EE24FF24C114D104E104F10421F460 +:103530006B017C0180E001C080E133272F2D1E2D1F +:103540000D2D011511052105310519F0885F680160 +:10355000790197018601A4E036952795179507957F +:10356000AA95D1F7011511052105310519F08C5FD8 +:103570006801790197018601F2E036952795179544 +:103580000795FA95D1F7011511052105310519F0B7 +:103590008E5F68017901B701A60176956795579509 +:1035A0004795452B462B472B09F08F5F1F910F91B5 +:1035B000FF90EF90DF90CF9008958091E4018430E8 +:1035C00039F11092CE0120E488E190E00FB6F89432 +:1035D000A895809360000FBE2093600080E00E9459 +:1035E0009D0783B7817F846083BF83B7816083BF7A +:1035F0007894889583B78E7F83BF0FB6F894A8958B +:1036000080916000886180936000109260000FBE1E +:10361000089508950895CF930E94091B0E94CD0339 +:103620000E940A1BC0E08C2F0E94BB04811104C0C1 +:10363000CF5FCE30C1F701C081E0CF9108950E94E5 +:103640001B140E94980E0C949D0782E084BD93E0A9 +:1036500095BD9AEF97BD80936E0008952FB7F894AB +:103660008091CF019091D001A091D101B091D20170 +:103670002FBF0895CF92DF92EF92FF920F931F9387 +:103680002FB7F8944091CF015091D0016091D101B2 +:103690007091D2012FBF6A017B01EE24FF248C01BF +:1036A00020E030E0C016D106E206F30610F44150E7 +:1036B0005109481B590BCA011F910F91FF90EF90C0 +:1036C000DF90CF9008951F920F920FB60F921124A2 +:1036D0008F939F93AF93BF938091CF019091D0012F +:1036E000A091D101B091D2010196A11DB11D80938D +:1036F000CF019093D001A093D101B093D201BF919B +:10370000AF919F918F910F900FBE0F901F901895C2 +:103710000E949E0BF8942FEF87EA91E6215080409B +:103720009040E1F700C0000087E090EBDC0180935F +:10373000EE019093EF01A093F001B093F1012CE022 +:1037400088E190E00FB6F894A895809360000FBED2 +:1037500020936000FFCFEF92FF920F931F93CF93C0 +:10376000DF93D82FC0E08C2F0E94BB0400E010E054 +:10377000E82EF12CC701002E02C0959587950A947A +:10378000E2F780FD06C00F5F1F4F0630110591F76D +:1037900009C0602F7C2F80E00E94C304D813F3CFB0 +:1037A00081E004C0CF5FCE30F1F680E0DF91CF91B1 +:1037B0001F910F91FF90EF900895CF93C82F8CE247 +:1037C0000E94AB1B882321F08C2FCF910C94AB1B54 +:1037D00080E0CF910895CF930E94321D811102C0E5 +:1037E0000E94181DC5E6C15049F00E94CD038FE329 +:1037F0009CE90197F1F700C00000F5CF89E20E9433 +:10380000DD1B811113C18AE20E94DD1B81110E9420 +:10381000181D85E00E94DD1B81110E94881B0E94FB +:103820003D1D8093CD0187E00E94DD1B8823A9F117 +:103830008BE10E94DD1B882351F08091CD0181FB3B +:10384000222720F991E0922790FB81F90EC08EE0AB +:103850000E94DD1B882361F08091CD0182FB22272D +:1038600020F991E0922790FB82F98093CD0115C059 +:1038700080E10E94DD1B9091CD01882341F093FBF4 +:10388000222720F981E0822780FB93F904C0892F49 +:10389000809580FB90F99093CD018091CD010E949D +:1038A000411D0E944F1D8093ED0180EE0E94DD1BA3 +:1038B000882341F08091ED01982F909590FB80F93D +:1038C0008093ED0189E30E94DD1B882359F08091EC +:1038D000ED0181FB222720F991E0922790FB81F9ED +:1038E0008093ED0182EE0E94DD1B882359F08091C8 +:1038F000ED0182FB222720F991E0922790FB82F9CB +:103900008093ED0186EE0E94DD1B882359F08091A3 +:10391000ED0183FB222720F991E0922790FB83F9A8 +:103920008093ED0183EE0E94DD1B882359F0809186 +:10393000ED0184FB222720F991E0922790FB84F986 +:103940008093ED0185E30E94DD1B882359F080916F +:10395000ED0185FB222720F991E0922790FB85F964 +:103960008093ED0181E30E94DD1B882359F0809153 +:10397000ED0186FB222720F991E0922790FB86F942 +:103980008093ED0181E10E94DD1B882359F0809135 +:10399000ED0187FB222720F991E0922790FB87F920 +:1039A0008093ED018091ED010E94531D8091ED0106 +:1039B00087FB882780F980930D0187E20E94DD1B39 +:1039C000C82F8EE10E94DD1B8111C2608FE10E9431 +:1039D000DD1B8111C46080E20E94DD1B8111C86083 +:1039E00081E20E94DD1B8111C06182E20E94DD1B29 +:1039F0008111C06283E20E94DD1B8111C06484E2F8 +:103A00000E94DD1B882311F0C06802C0CC2329F07E +:103A10008C2F0E944A1D6C2F03C00E94461D682FE8 +:103A200070E080E090E0CF910C941518CF9108954C +:103A30006DEE7EEF80E090E00E948D2360E082E0FA +:103A400090E00E947B2360E083E090E00E947B2373 +:103A500060E084E090E00E947B2360E085E090E0FD +:103A60000C947B2380E090E00E94752321E08D3E42 +:103A70009E4F09F020E0822F089582E090E00C94A0 +:103A80006D23682F82E090E00C947B2383E090E02C +:103A90000C946D23682F83E090E00C947B2384E0EA +:103AA00090E00C946D23682F84E090E00C947B23CD +:103AB0008091D50180FF0BC06091130185E0689F64 +:103AC000B001112475956795759567952AC081FF9A +:103AD00009C06091130185E0689FB00111247595BC +:103AE00067951FC082FF07C06091130185E0689F42 +:103AF000B001112416C04091D6014423C9F0609151 +:103B00001201461788F72091130185E0289F900144 +:103B10001124429FC001439F900D112470E00E9428 +:103B20003F236038710540F46115710539F002C01A +:103B300065E070E0862F08958FE7089581E008958D +:103B40008091D50180FF08C06091110170E07595EA +:103B500067957595679521C081FF06C06091110139 +:103B600070E07595679519C082FF04C060911101DE +:103B700070E010C08091D6018823C1F060911001DF +:103B80008617A0F790911101989FC001112470E051 +:103B90000E943F236038710528F46115710521F0FA +:103BA000862F08958FE7089581E0089561E070E021 +:103BB000F4CF803F21F40E94581D819504C0813FBD +:103BC00029F40E94581D8093D9010895823F21F461 +:103BD0000E94581D819504C0833F29F40E94581DFE +:103BE0008093D8010895893F19F40E94A01D05C053 +:103BF0008A3F31F40E94A01D81958093DA010895D7 +:103C00008B3F21F40E94A01D819504C08C3F29F4B4 +:103C10000E94A01D8093DB010895843F21F48091D0 +:103C2000D701816017C0853F21F48091D701826060 +:103C300011C0863F21F48091D70184600BC0873F7B +:103C400021F48091D701886005C0883F31F48091CC +:103C5000D70180618093D70108958D3F21F4809131 +:103C6000D50181600BC08E3F21F48091D501826027 +:103C700005C08F3F29F48091D50184608093D501E0 +:103C80000895803F39F48091D90187FF6CC010926C +:103C9000D90169C0813F29F48091D9011816BCF37C +:103CA00062C09091D801823F29F497FF5CC01092C6 +:103CB000D80159C0833F19F41916CCF354C0893F79 +:103CC00041F48091DA0118160CF04DC01092DA011F +:103CD0004AC08A3F29F48091DA0187FF44C0F6CFB9 +:103CE0008B3F39F48091DB0187FF3DC01092DB01EF +:103CF0003AC08C3F29F48091DB011816BCF333C025 +:103D0000843F21F48091D7018E7F17C0853F21F435 +:103D10008091D7018D7F11C0863F21F48091D7011A +:103D20008B7F0BC0873F21F48091D701877F05C02F +:103D3000883F31F48091D7018F7E8093D70113C0E3 +:103D40008D3F21F48091D5018E7F0BC08E3F21F4F1 +:103D50008091D5018D7F05C08F3F29F48091D501D9 +:103D60008B7F8093D5018091D80181110EC0809105 +:103D7000D90181110AC08091DA01811106C08091B8 +:103D8000DB01811102C01092D601089587ED91E008 +:103D90000E94AF0E0E942E1B9093D4018093D301FA +:103DA00008951F93CF93DF938091D3019091D40115 +:103DB0000E943A1B4091D601442321F02091140126 +:103DC00030E006C0209115015AE0259F9001112492 +:103DD0008217930708F482C08091D8011091D9010D +:103DE000D091DA01C091DB01811107C0111105C02A +:103DF000D11103C0CC2309F471C04F3F19F04F5FBC +:103E00004093D601181624F40E94581D8093D801BF +:103E10008091D80187FF05C00E94581D819580932D +:103E2000D801111624F40E94581D8093D901809165 +:103E3000D90187FF05C00E94581D81958093D90143 +:103E40006091D801662339F11091D901112319F13C +:103E5000772767FD7095872F972F0E94462223E3CF +:103E600033E343E35FE30E94AA220E940E226093A1 +:103E7000D801612F772767FD7095872F972F0E94B4 +:103E8000462223E333E343E35FE30E94AA220E9436 +:103E90000E226093D9011D1624F40E94A01D809368 +:103EA000DA018091DA0187FF05C00E94A01D81958B +:103EB0008093DA011C1624F40E94A01D8093DB017C +:103EC0008091DB0187FF05C00E94A01D8195809332 +:103ED000DB01DF91CF911F910C94C61EDF91CF9132 +:103EE0001F910895E7EDF1E085E0DF011D928A95CD +:103EF000E9F71092D6011092D5010895833081F12F +:103F000028F4813059F08230D1F00895853009F4D9 +:103F100049C0B8F1863009F456C008958091150162 +:103F2000262F30E0280F311D2F3F310524F4680F74 +:103F30006093150108958FEF809315010895809186 +:103F40001401262F30E0280F311D2F3F310524F4B6 +:103F5000680F6093140108958FEF80931401089502 +:103F600080911301262F30E0280F311D2F3F31059E +:103F700024F4680F6093130108958FEF8093130169 +:103F8000089580911201262F30E0280F311D2F3F18 +:103F9000310524F4680F6093120108958FEF809328 +:103FA0001201089580911101262F30E0280F311D54 +:103FB0002F3F310524F4680F6093110108958FEFAE +:103FC00080931101089580911001262F30E0280F71 +:103FD000311D2F3F310524F4680F609310010895BF +:103FE0008FEF809310010895833011F128F4813010 +:103FF00049F0823091F00895853081F120F18630CA +:10400000C1F1089580911501681720F4861B8093F3 +:1040100015010895109215010895809114016817F3 +:1040200020F4861B809314010895109214010895C2 +:1040300080911301681720F4861B80931301089563 +:1040400010921301089580911201681720F4861BC5 +:104050008093120108951092120108958091110128 +:10406000681720F4861B80931101089510921101A6 +:10407000089580911001681720F4861B8093100129 +:1040800008951092100108950F931F938D3109F434 +:104090006BC008F03FC08E3009F47FC0C0F4873099 +:1040A00009F469C068F4863009F0B1C08091CD018F +:1040B000817F8E7F8093CD0181E08093DD01A8C058 +:1040C000883009F4A2C08B3009F49FC0A0C08631AB +:1040D00009F49BC078F4803109F472C0813109F091 +:1040E00096C00E941B1490910D0181E08927809356 +:1040F0000D018BC0893109F488C08B3109F087C06C +:104100008091CD0181FB222720F991E0922790FB3D +:1041100081F94CC0853309F470C048F4873209F442 +:104120006CC008F459C0893209F467C070C0833488 +:1041300038F48A3308F04EC0883309F466C067C08B +:10414000833409F45AC0883409F061C00E941B14FA +:104150000FEF13ED20E3015010402040E1F700C0C5 +:1041600000000E94881B51C00E94C8210E94980E26 +:104170000E949D074AC09091CD01892F8095817042 +:1041800080FB90F929F0966098609093CD0140C033 +:10419000997F977F9093CD0138C08091CD0182FBAC +:1041A000222720F991E0922790FB82F98093CD019C +:1041B000992359F18091CD0181608093CD0125C073 +:1041C0008091CD0183FB222720F991E0922790FB7B +:1041D00083F9ECCF895301C08D5141E050E060E09C +:1041E00070E08A019B0104C0000F111F221F331FC2 +:1041F0008A95D2F7C901B80104C061E070E080E09F +:1042000090E00E9415180E941B1481E001C080E01C +:104210001F910F91089580E0089580E00895CF9355 +:10422000C82F8091DD01813079F018F08230E9F1FA +:1042300087C0E0910E01F0910F018081813169F01A +:10424000823209F07FC009C0E0910E01F0910F01A8 +:104250008081813111F0823261F48C2F0E940B2118 +:10426000811104C08C2F0E9444201DC081E090E089 +:104270001AC08C2F0E940D21811114C0C43179F015 +:1042800048F4CB3079F0C03109F060C082E080930F +:10429000DD0108C0C93219F0C83321F057C01092AF +:1042A000DD0154C081E0817053C0C93289F118F535 +:1042B000C43171F1A8F4C73009F046C08AE0809398 +:1042C000150194E19093140193E09093130180936E +:1042D000120188E08093110188E28093100134C0BC +:1042E000CE51C63088F5EC2FF0E0E65DFE4F8081C0 +:1042F0008093DC0129C0CE34E9F020F4CB3421F5E1 +:104300006AE013C0C13579F0C235F1F461E00DC047 +:104310008091DC01882319F01092DC0115C081E046 +:104320008093DD0115C061E006C08091DC010E9430 +:104330007E1F0AC06AE08091DC010E94F41F04C065 +:104340001092DD0180E004C081E002C080E0ABCFCC +:10435000CF910895E1E8F0E08081886080838081DA +:10436000816080838FB7F89493E09093890090EDFB +:10437000909388008FBF0895EFE6F0E0808182601F +:1043800080830895EFE6F0E080818D7F808308953B +:10439000EFE6F0E0808192E08927808308951F9204 +:1043A0000F920FB60F9211242F933F934F935F9369 +:1043B0006F937F938F939F93AF93BF93EF93FF93ED +:1043C0008091DE019091DF0101969093DF0180934F +:1043D000DE01811103C082E00E949D07E091DF01B0 +:1043E000E695E695F0E0E252FC4FE4918091DE0123 +:1043F0008E1303C080E00E949D07FF91EF91BF9153 +:10440000AF919F918F917F916F915F914F913F916C +:104410002F910F900FBE0F901F9018950E9415229C +:104420006894B1110C94A42208950E94892288F006 +:104430009F5798F0B92F9927B751B0F0E1F0660F68 +:10444000771F881F991F1AF0BA95C9F714C0B130A9 +:1044500091F00E94A322B1E008950C94A322672F4B +:10446000782F8827B85F39F0B93FCCF386957795D8 +:104470006795B395D9F73EF49095809570956195C1 +:104480007F4F8F4F9F4F0895E89409C097FB3EF4EC +:1044900090958095709561957F4F8F4F9F4F992391 +:1044A000A9F0F92F96E9BB279395F695879577950F +:1044B0006795B795F111F8CFFAF4BB0F11F460FFCF +:1044C0001BC06F5F7F4F8F4F9F4F16C0882311F027 +:1044D00096E911C0772321F09EE8872F762F05C03B +:1044E000662371F096E8862F70E060E02AF09A95D6 +:1044F000660F771F881FDAF7880F9695879597F9CB +:10450000089557FD9058440F551F59F05F3F71F0C3 +:104510004795880F97FB991F61F09F3F79F087952A +:104520000895121613061406551FF2CF4695F1DFB3 +:1045300008C0161617061806991FF1CF8695710543 +:10454000610508940895E894BB2766277727CB0177 +:1045500097F908950E94BD220C942E230E942023D7 +:1045600038F00E94272320F0952311F00C94172394 +:104570000C941D2311240C94A4220E94812270F318 +:10458000959FC1F3950F50E0551F629FF001729FF8 +:10459000BB27F00DB11D639FAA27F00DB11DAA1F07 +:1045A000649F6627B00DA11D661F829F2227B00D54 +:1045B000A11D621F739FB00DA11D621F839FA00DDF +:1045C000611D221F749F3327A00D611D231F849F2F +:1045D000600D211D822F762F6A2F11249F57504086 +:1045E0009AF0F1F088234AF0EE0FFF1FBB1F661F01 +:1045F000771F881F91505040A9F79E3F510580F0CA +:104600000C9417230C94A4225F3FE4F3983ED4F358 +:10461000869577956795B795F795E7959F5FC1F76D +:10462000FE2B880F911D9695879597F9089597F918 +:104630009F6780E870E060E008959FEF80EC089548 +:1046400000240A9416161706180609060895002471 +:104650000A9412161306140605060895092E0394EB +:10466000000C11F4882352F0BB0F40F4BF2B11F45F +:1046700060FF04C06F5F7F4F8F4F9F4F089597FB80 +:10468000072E16F4009407D077FD09D00E94592315 +:1046900007FC05D03EF4909581959F4F0895709545 +:1046A00061957F4F0895EE0FFF1F0590F491E02D67 +:1046B0000994AA1BBB1B51E107C0AA1FBB1FA61769 +:1046C000B70710F0A61BB70B881F991F5A95A9F7BB +:1046D00080959095BC01CD010895F999FECF92BDCA +:1046E00081BDF89A992780B50895A8E1B0E042E02D +:1046F00050E00C949523262FF999FECF92BD81BDF1 +:10470000F89A019700B4021639F01FBA20BD0FB60F +:10471000F894FA9AF99A0FBE08950196272F0E94ED +:104720007C230C947B23DC01CB01FC01F999FECFA7 +:1047300006C0F2BDE1BDF89A319600B40D92415029 +:0A4740005040B8F70895F894FFCF39 +:10474A0020029F072C080908D507A2070101BA0110 +:10475A0028080A03140A3F4D36399F0352031C03E3 +:10476A00E30276028F02A802C102010203040506CF +:04477A000708090023 +:00000001FF diff --git a/keyboard/ergodox_ez/keymaps/ab/keyboard-layout.json b/keyboard/ergodox_ez/keymaps/ab/keyboard-layout.json new file mode 100644 index 0000000000..4ade748732 --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/ab/keyboard-layout.json @@ -0,0 +1,385 @@ +[ + { + "name": "Beginner's Keymap for Ergodox-EZ", + "author": "Anand Babu Periasamy" + }, + [ + { + "x": 3.5 + }, + "#\n3\n\n\nF3", + { + "x": 10.5 + }, + ")\n0\n\n\nF10" + ], + [ + { + "y": -0.875, + "x": 2.5 + }, + "@\n2\n\n\nF2", + { + "x": 1 + }, + "$\n4\n\n\nF4", + { + "x": 8.5 + }, + "(\n9\n\n\nF9", + { + "x": 1 + }, + "_\n-\n\n\nF11" + ], + [ + { + "y": -0.875, + "x": 5.5 + }, + "%\n5\n\n\nF5", + "^\n6\n\n\nF6", + { + "x": 4.5 + }, + "&\n7\n\n\nF7", + "*\n8\n\n\nF8" + ], + [ + { + "y": -0.875, + "w": 1.5 + }, + "~\n`\n\n\nEsc", + "!\n1\n\n\nF1", + { + "x": 14.5 + }, + "+\n=\n\n\nF12", + { + "a": 7, + "w": 1.5 + }, + "Backspace\n\n\n\nBackspace" + ], + [ + { + "y": -0.375, + "x": 3.5 + }, + "E\n\n\n\n", + { + "x": 10.5 + }, + "I" + ], + [ + { + "y": -0.8799999999999999, + "x": 2.5 + }, + "W" + ], + [ + { + "y": -0.9950000000000001, + "x": 4.5, + "a": 4 + }, + "R", + { + "x": 8.5, + "a": 7 + }, + "U", + { + "x": 1 + }, + "O" + ], + [ + { + "y": -0.875, + "x": 5.5 + }, + "T", + { + "h": 1.5 + }, + "", + { + "x": 4.5, + "h": 1.5 + }, + "", + "Y" + ], + [ + { + "y": -0.875, + "a": 6, + "w": 1.5 + }, + "Tab", + { + "a": 7 + }, + "Q", + { + "x": 14.5 + }, + "P", + { + "a": 4, + "w": 1.5 + }, + "|\n\\" + ], + [ + { + "y": -0.375, + "x": 3.5, + "a": 7 + }, + "D\n\n\n\n", + { + "x": 10.5 + }, + "K" + ], + [ + { + "y": -0.875, + "x": 2.5 + }, + "S\n\n\n\n", + { + "x": 1 + }, + "F\n\n\n\n", + { + "x": 8.5 + }, + "J", + { + "x": 1 + }, + "L" + ], + [ + { + "y": -0.875, + "x": 5.5 + }, + "G", + { + "x": 6.5 + }, + "H" + ], + [ + { + "y": -0.875, + "a": 4, + "fa": [ + 0, + 0, + 0, + 2 + ], + "w": 1.5 + }, + "\n\n\nCtrl\n\n\nCaps", + { + "a": 7 + }, + "A", + { + "x": 14.5, + "a": 4 + }, + ":\n;", + { + "a": 7, + "w": 1.5 + }, + "Enter" + ], + [ + { + "y": -0.625, + "x": 6.5, + "h": 1.5 + }, + "PgUp", + { + "x": 4.5, + "h": 1.5 + }, + "PgDn" + ], + [ + { + "y": -0.75, + "x": 3.5 + }, + "C", + { + "x": 10.5, + "a": 4 + }, + "<\n," + ], + [ + { + "y": -0.875, + "x": 2.5, + "a": 7 + }, + "X", + { + "x": 1 + }, + "V", + { + "x": 8.5 + }, + "M", + { + "x": 1, + "a": 4 + }, + ">\n." + ], + [ + { + "y": -0.875, + "x": 5.5, + "a": 7 + }, + "B", + { + "x": 6.5 + }, + "N" + ], + [ + { + "y": -0.875, + "w": 1.5 + }, + "Shift", + "Z", + { + "x": 14.5, + "a": 4 + }, + "?\n/", + { + "w": 1.5 + }, + "\"\n'" + ], + [ + { + "y": -0.375, + "x": 3.5, + "a": 7 + }, + "Alt\n\n\n\n", + { + "x": 10.5 + }, + "\n\n\n\n" + ], + [ + { + "y": -0.875, + "x": 2.5 + }, + "", + { + "x": 1 + }, + "Alt\n\n\n\n", + { + "x": 8.5 + }, + "", + { + "x": 1 + }, + "\n\n\n\n" + ], + [ + { + "y": -0.75, + "x": 0.5 + }, + "Ctrl\n\n\n\n", + "Esc", + { + "x": 14.5 + }, + "\n\n\n\n", + "Fn" + ], + [ + { + "r": 30, + "rx": 6.5, + "ry": 4.25, + "y": -1, + "x": 1 + }, + "", + "(" + ], + [ + { + "h": 2 + }, + "Space", + { + "h": 2 + }, + "Del", + "[" + ], + [ + { + "x": 2 + }, + "{" + ], + [ + { + "r": -30, + "rx": 13, + "y": -1, + "x": -3 + }, + ")", + "" + ], + [ + { + "x": -3 + }, + "]", + { + "h": 2 + }, + "Enter", + { + "h": 2 + }, + "" + ], + [ + { + "x": -3 + }, + "}" + ] +] \ No newline at end of file diff --git a/keyboard/ergodox_ez/keymaps/ab/keyboard-layout.png b/keyboard/ergodox_ez/keymaps/ab/keyboard-layout.png new file mode 100644 index 0000000000..9a6546e357 Binary files /dev/null and b/keyboard/ergodox_ez/keymaps/ab/keyboard-layout.png differ diff --git a/keyboard/ergodox_ez/keymaps/ab/keymap.c b/keyboard/ergodox_ez/keymaps/ab/keymap.c new file mode 100644 index 0000000000..9b5c93c1ee --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/ab/keymap.c @@ -0,0 +1,140 @@ +#include "ergodox_ez.h" +#include "debug.h" +#include "action_layer.h" + +#define BASE 0 // default layer +#define FN1 1 // media layer + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* Keymap 0: Basic layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | | 7 | 8 | 9 | 0 | - | = | BSpace | + * |--------+------+------+------+------+------+------| |------+------+------+------+------+------+--------| + * | Tab | Q | W | E | R | T | Fwd | | Back | Y | U | I | O | P | \ | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * |Caps/Ctl| A | S | D | F | G |------| |------| H | J | K | L | ; | Enter | + * |--------+------+------+------+------+------| PgUp | | PgDn |------+------+------+------+------+--------| + * | LShift | Z | X | C | V | B | | | | N | M | , | . | / | ' | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | Ctrl | Esc | LGui | Alt | Alt | | Left | Up | Dn | Right| Fn | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | Copy | ( | | ) | Paste| + * ,------|------+------| |------+------+------. + * | | | [ | | ] | | | + * |Space | Del |------| |------| Enter|BSpace| + * | | | { | | } | | | + * `--------------------' `--------------------' + */ +// If it accepts an argument (i.e, is a function), it doesn't need KC_. +// Otherwise, it needs KC_* + [BASE] = KEYMAP( // layer 0 : default + // left hand + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_WBAK, + CTL_T(KC_CAPS), KC_A, KC_S, KC_D, KC_F, KC_G, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_PGUP, + KC_LCTL, KC_ESC, KC_LGUI, KC_LALT, KC_LALT, + LCTL(KC_C), KC_LCBR, + KC_LPRN, + KC_SPC, KC_DEL, KC_LBRC, + // right hand + KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_WFWD, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, + KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, + KC_PGDN, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_QUOT, + KC_UP, KC_LEFT, KC_RIGHT,KC_DOWN, TG(FN1), + KC_RCBR, LCTL(KC_V), + KC_RPRN, + KC_RBRC, KC_ENT, KC_BSPC + ), +/* Keymap 1: Fn Keys, media and mouse keys + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | Esc | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 | BSpace | + * |--------+------+------+------+------+------+------| |------+------+------+------+------+------+--------| + * | | | | MsUp | | | | | | | | | | | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | |MsLeft|MsDown|MsRght| |------| |------| | | | | | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | | | | | | | | | | | | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * |Teensy| | | Lclk | Rclk | | |VolUp |VolDn | Mute | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------+------| |------+------+------. + * | | | | | | | | + * | | |------| |------| | | + * | | | | | | | | + * `--------------------' `--------------------' + */ +// FN1 Layer + [FN1] = KEYMAP( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, + KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2, + KC_TRNS, KC_TRNS, + KC_TRNS, + RESET, KC_TRNS, KC_TRNS, + // right hand + KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_BSPC, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS + ), +}; + +const uint16_t PROGMEM fn_actions[] = { +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + switch(id) { + case 0: + if (record->event.pressed) { + register_code(KC_RSFT); + } else { + unregister_code(KC_RSFT); + } + break; + } + return MACRO_NONE; +}; + +// Runs just one time when the keyboard initializes. +void matrix_init_user(void) { + +}; + +// Runs constantly in the background, in a loop. +void matrix_scan_user(void) { + + uint8_t layer = biton32(layer_state); + + ergodox_board_led_off(); + ergodox_right_led_1_off(); + ergodox_right_led_2_off(); + ergodox_right_led_3_off(); + switch (layer) { + // TODO: Make this relevant to the ErgoDox EZ. + case 1: + ergodox_right_led_1_on(); + break; + case 2: + ergodox_right_led_2_on(); + break; + default: + // none + break; + } + +}; diff --git a/keyboard/ergodox_ez/keymaps/ab/readme.md b/keyboard/ergodox_ez/keymaps/ab/readme.md new file mode 100644 index 0000000000..67d47151bc --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/ab/readme.md @@ -0,0 +1,21 @@ +# Beginner's keymap for Ergodox-EZ +Beginner's keymap emulates standard QWERTY keyboard for beginners. Once you get comfortable with the Ergodox-EZ, you may fork this keymap and customize it for your own needs or find a suitable one from the community contributed keymaps. + +![Beginner's Keymap](keyboard-layout.png) + +#### Pros +* Easier to switch between regular keyboards and Ergodox-EZ. +* Easy on beginners. It has everything you need for your day to day usage. + +#### Cons +* Keys are not ergonomically placed to take full advantage of Ergodox-EZ. Take a look at this [Default Keymap](https://github.com/jackhumbert/qmk_firmware/blob/master/keyboard/ergodox_ez/keymaps/default/readme.md) +* While multiple layers are possible, beginner's keymap only uses one additional layer for mouse, function and volume keys. + +#### Notes +* Ideally number key [6] should have started from the right-hand side of the keyboard. Doing so breaks the familiar QWERTY layout. +* Quote key ['] should have been placed between [:] and [Enter]. Due to lack of key space, it is placed below [Enter]. +* Double [Alt] keys are placed adjacent to each other for convenience. +* [CapsLock] also acts as [Ctrl] key when you press and hold. It is convenient for GNU Emacs users. +* Additional bracket keys are placed in the center of the keyboard for programmer's convenience. + + -- cgit v1.2.1 From 262930c8d5e57beec044d932ef554a09e846f9ca Mon Sep 17 00:00:00 2001 From: Nathan Sharfi Date: Sat, 30 Apr 2016 22:12:13 -0700 Subject: ergodox-zweihander: initial commit --- .../ergodox_ez/keymaps/zweihander-osx/keymap.c | 184 +++++++++++++++++++++ .../keymaps/zweihander-osx/readme.markdown | 40 +++++ 2 files changed, 224 insertions(+) create mode 100644 keyboard/ergodox_ez/keymaps/zweihander-osx/keymap.c create mode 100644 keyboard/ergodox_ez/keymaps/zweihander-osx/readme.markdown diff --git a/keyboard/ergodox_ez/keymaps/zweihander-osx/keymap.c b/keyboard/ergodox_ez/keymaps/zweihander-osx/keymap.c new file mode 100644 index 0000000000..cc94e13337 --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/zweihander-osx/keymap.c @@ -0,0 +1,184 @@ +#include "ergodox_ez.h" +#include "debug.h" +#include "action_layer.h" + +#define BASE 0 // default layer +#define SYMB 1 // symbols +#define MDIA 2 // media keys + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* Keymap 0: Basic layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | = | 1 | 2 | 3 | 4 | 5 | ← | | → | 6 | 7 | 8 | 9 | 0 | - | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | ⌦ | Q | W | E | R | T | L1 | | L1 | Y | U | I | O | P | \ | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | ⌫ | A | S | D | F | G |------| |------| H | J | K | L |; / L2| ' / L⌘ | + * |--------+------+------+------+------+------| L⌘ | | L⌘ |------+------+------+------+------+--------| + * | L⇧ | Z | X | C | V | B | | | | N | M | , | . | / / ⌃| R⇧ | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | L⌃ | L⌥ | L⌘ | ← | → | | ↑ | ↓ | [ | ] | ~L1 | + * `----------------------------------' `----------------------------------' + * ,-------------. ,---------------. + * | `~ | '" | | ⎋ | ⌫ | + * ,------|------|------| |------+--------+------. + * | | | PgUp | | PgDn | | | + * | | ⌫ |------| |------| ⇥ |Enter | + * | | | L⌥ | | L⌃ | | | + * `--------------------' `----------------------' + */ +// If it accepts an argument (i.e, is a function), it doesn't need KC_. +// Otherwise, it needs KC_* +[BASE] = KEYMAP( // layer 0 : default + // left hand + KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT, + KC_DELT, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB), + KC_BSPC, KC_A, KC_S, KC_D, KC_F, KC_G, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LGUI, + KC_LCTL, KC_LALT, KC_LGUI,KC_LEFT,KC_RGHT, + KC_GRV, KC_QUOT, + KC_PGUP, + KC_SPC,KC_BSPC,KC_LALT, + // right hand + KC_RGHT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, + TG(SYMB), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, + KC_H, KC_J, KC_K, KC_L, LT(MDIA, KC_SCLN),GUI_T(KC_QUOT), + KC_LGUI, KC_N, KC_M, KC_COMM,KC_DOT, CTL_T(KC_SLSH), KC_RSFT, + KC_UP, KC_DOWN,KC_LBRC,KC_RBRC, KC_FN1, + KC_ESC, KC_BSPC, + KC_PGDN, + KC_LCTL, KC_TAB, KC_ENT + ), +/* Keymap 1: Symbol Layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | ! | @ | { | } | | | | | | / | 7 | 8 | 9 | * | F12 | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | # | $ | ( | ) | ` |------| |------| - | 4 | 5 | 6 | + | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | = | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | | | | 0 | . | ← | → | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | Home | | | + * | | |------| |------| | | + * | | | | | End | | | + * `--------------------' `--------------------' + */ +// SYMBOLS +[SYMB] = KEYMAP( + // left hand + KC_TRNS,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, + KC_TRNS,KC_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS, + KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV, + KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS, + KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS, + // right hand + KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + KC_TRNS, KC_SLSH, KC_7, KC_8, KC_9, KC_ASTR, KC_F12, + KC_MINS, KC_4, KC_5, KC_6, KC_PLUS, KC_TRNS, + KC_TRNS, KC_AMPR, KC_1, KC_2, KC_3, KC_EQL, KC_TRNS, + KC_0, KC_DOT, KC_LEFT, KC_RGHT, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_HOME, + KC_END , KC_TRNS, KC_TRNS +), +/* Keymap 2: Media keys + * dim brighten + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | | | | | | F14 | | F15 | | | | | | Power | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | | | PgUp | | | | | | ⌘] | ⌥⌘↑ | ↑ | ⌥⌘↓ | | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | Home | PgDn | End | |------| |------| ⌘[ | ← | ↓ | → | | ⏯ | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | | | | | | |L⇧+Spc| Spc | ⏮ | ⏭ | | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | | | |VolUp |VolDn | Mute | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | | | + * | | |------| |------| | | + * | | | | | | | | + * `--------------------' `--------------------' + */ +// MEDIA AND MOUSE +[MDIA] = KEYMAP( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F14, /* F14 dims screen, F15 brightens */ + KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END , KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + // right hand + KC_F15 , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PWR, + KC_TRNS, LGUI(KC_RBRC), LGUI(LALT(KC_UP)), KC_UP , LGUI(LALT(KC_DOWN)), KC_TRNS, KC_TRNS, + LGUI(KC_LBRC), KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_MPLY, + KC_TRNS, LSFT(KC_SPC), KC_SPC , KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS, + KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS +), +}; + +const uint16_t PROGMEM fn_actions[] = { + [1] = ACTION_LAYER_TAP_TOGGLE(SYMB) // FN1 - Momentary Layer 1 (Symbols) +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + switch(id) { + case 0: + if (record->event.pressed) { + register_code(KC_RSFT); + } else { + unregister_code(KC_RSFT); + } + break; + } + return MACRO_NONE; +}; + +// Runs just one time when the keyboard initializes. +void matrix_init_user(void) { + +}; + +// Runs constantly in the background, in a loop. +void matrix_scan_user(void) { + + uint8_t layer = biton32(layer_state); + + ergodox_board_led_off(); + ergodox_right_led_1_off(); + ergodox_right_led_2_off(); + ergodox_right_led_3_off(); + switch (layer) { + // TODO: Make this relevant to the ErgoDox EZ. + case 1: + ergodox_right_led_1_on(); + break; + case 2: + ergodox_right_led_2_on(); + break; + default: + // none + break; + } + +}; diff --git a/keyboard/ergodox_ez/keymaps/zweihander-osx/readme.markdown b/keyboard/ergodox_ez/keymaps/zweihander-osx/readme.markdown new file mode 100644 index 0000000000..8103c6b327 --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/zweihander-osx/readme.markdown @@ -0,0 +1,40 @@ +# The Zweihander Layout + +This layout is tuned for people who… + + +## use OS X + +This layout doesn’t make any concessions for Windows use. While it should work fine in Windows, I’m not about to devote precious keyboard space to Windows-specific shortcuts. + + +## mouse left-handed while doing other things with the right hand + +I tend to have my mouse in my left hand, but I like to use my other hand to make things go faster. I’ve added a bunch of buttons to the media layer to speed up browsing in Safari and Finder: + +- Back (⌘[) +- Forward (⌘]) +- Open and Close Parent Folder (⌥⌘↓) +- Go Up and Close Just-Left Folder (⌥⌘↑) +- Space (page down in browsers; Quick Look in the Finder) +- Shift-Space (page up in web browsers) + +Because moving letter-by-letter is way slower than moving word-by-word, I added Option (⌥) to the bottommost button on the left side. This key can be held easily while holding ; (activate media layer) and pressing J and L to move left and right by word. + + +## use lots of modifier keys in OS X menu-item shortcuts + +I wanted to preserve the feel of a number of shortcuts that involve pressing lots of modifier keys at once; this is why the bottom left of the keyboard has shift, control, option, and command in the usual spaces. Further, some common shortcuts I press have a key on the right side of the keyboard. These shortcuts include: + +- Empty Trash Without Asking for Confirmation (⇧⌥⌘⌫) +- Shut Down Without Asking for Confirmation (⇧⌥⌘ power) + + +## use Emacs-style shortcuts + +I press C-a, C-e, and C-k all the time. It’s difficult to press these key combinations with the control key on the bottom left and I’m too quick on the draw for the control function on the / key to work reliably, so the bottommost thumb button on the right side is another control key. + + +## use spreadsheets + +All the common spreadsheet operations (+-*/=) are now on the right side of the symbol layer. -- cgit v1.2.1 From 8ec1d41a28d5223a147218bfb7fefd933b906d22 Mon Sep 17 00:00:00 2001 From: Nathan Sharfi Date: Sat, 30 Apr 2016 22:36:09 -0700 Subject: Ergodox EZ: add zweihander-osx.hex --- .../keymaps/zweihander-osx/zweihander-osx.hex | 1152 ++++++++++++++++++++ 1 file changed, 1152 insertions(+) create mode 100644 keyboard/ergodox_ez/keymaps/zweihander-osx/zweihander-osx.hex diff --git a/keyboard/ergodox_ez/keymaps/zweihander-osx/zweihander-osx.hex b/keyboard/ergodox_ez/keymaps/zweihander-osx/zweihander-osx.hex new file mode 100644 index 0000000000..9b783c957c --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/zweihander-osx/zweihander-osx.hex @@ -0,0 +1,1152 @@ +:100000000C9465020C94A9020C94A9020C94A90208 +:100010000C94A9020C94A9020C94A9020C94A902B4 +:100020000C94A9020C94A9020C94720C0C94440D2B +:100030000C94A9020C94A9020C94A9020C94A90294 +:100040000C94A9020C940E220C94A9020C94A902FF +:100050000C94A9020C949D1B0C94A9020C94A90267 +:100060000C94A9020C94A9020C94A9020C94A90264 +:100070000C94A9020C94A9020C94A9020C94A90254 +:100080000C94A9020C94A9020C94A9020C94A90244 +:100090000C94A9020C94A9020C94A9020C94A90234 +:1000A0000C94A9020C94A9020C94A902B10DD30DD1 +:1000B000C10ED30DC10E180E3B0EC10E900EA30E35 +:1000C0008F118F11CC11CC110F124D1266146614C2 +:1000D00066126614671367133A1466146614511493 +:1000E0000000F0A12E004C002A00E100E00000001A +:1000F0001E00140004001D00E200E2001F001A00B0 +:1001000016001B00E3002A0020000800070006007C +:1001100050002C0021001500090019004F004B0071 +:10012000220017000A0005000000350050000154AD +:100130000000E300000034004F0001540000E30021 +:100140000000290023001C000B00110000002A0001 +:10015000240018000D00100052004E0025000C0075 +:100160000E00360051002800260012000F00370054 +:100170002F002B0027001300338238713000E0007D +:100180002D0031003478E500C100000001000100BD +:1001900001000100010000003A001E0220022202BC +:1001A000010001003B001F022102230201000100A7 +:1001B0003C002F0226022F00010001003D0030020A +:1001C00027023000010001003E00310235003502F7 +:1001D000000001000100010000000100000001001A +:1001E0000100010000000100000001003F00380094 +:1001F0002D002402000001004000240021001E0008 +:1002000027004A004100250022001F00370001009E +:100210004200260023002000500001004300250278 +:100220002E022E004F004D00440045000100010049 +:1002300001000000010001000100010001000000B8 +:1002400001000100010001000100010001000100A6 +:100250004A0001000100010001004B004E000100B6 +:1002600001000100010001004D000100010001003A +:10027000010001000100010000000100690001000F +:1002800000000100000001006A0001000000010000 +:1002900000000100010030082F082C0200000100BE +:1002A0000100520C50002C00A90001000100520076 +:1002B0005100AC00AA0001000100510C4F00AB003E +:1002C000A80001000100010001000100010001007F +:1002D000A5000100AE00010001000000160345006A +:1002E000720067006F0044006F0078002000450036 +:1002F0005A00000016034500720067006F004400BA +:100300006F007800200045005A0000000403090433 +:1003100009026D00040100A0FA09040000010301B4 +:100320000100092111010001223F00070581030896 +:10033000000A090401000103010200092111010062 +:1003400001224D000705820308000A09040200018A +:100350000300000009211101000122360007058376 +:100360000308000A09040300010300000009211129 +:100370000100012239000705840310000112011059 +:100380000100000008EDFE07130100010200010555 +:10039000010906A101050719E029E71500250195C6 +:1003A0000875018102050819012905950575019156 +:1003B000029501750391010507190029771500259C +:1003C00001957875018102C005010980A1018502AE +:1003D00016010026B7001A01002AB7007510950112 +:1003E0008100C0050C0901A1018503160100269CAE +:1003F000021A01002A9C02751095018100C00501B6 +:100400000902A1010901A100050919012905150029 +:10041000250195057501810295017503810105018D +:10042000093009311581257F950275088106093843 +:100430001581257F950175088106050C0A3802157E +:1004400081257F950175088106C0C005010906A1B7 +:1004500001050719E029E7150025019508750181B7 +:100460000295017508810105081901290595057591 +:100470000191029501750391010507190029FF15E6 +:100480000025FF950675088100C0000000000000EF +:100490000000000000010204060A0F17202C3A4A4F +:1004A0005D71879DB3C7DAE9F5FCFFFCF5E9DAC7B2 +:1004B000B39D87715D4A3A2C20170F0A060402018A +:1004C0000000000000000000000011241FBECFEF5C +:1004D000DAE0DEBFCDBF04B603FE24C08091EE019A +:1004E0009091EF01A091F001B091F1018730904B14 +:1004F000A740B04BB9F41092EE011092EF011092A8 +:10050000F0011092F10114BE84B7877F84BF88E1A7 +:100510000FB6F89480936000109260000FBEE0E088 +:10052000FFE3099511E0A0E0B1E0EAEAF7E402C0D8 +:1005300005900D92A433B107D9F711E0A4E3B1E01F +:1005400001C01D92AE3EB107E1F70E94B6090C94BE +:10055000D3230C94000061110BC0FC01828188231D +:1005600021F085EE0E94231003C085EE0E94EB105F +:1005700080E090E0089508956091B1017091B2011A +:100580008091B3019091B4010E94C91A56985E9867 +:1005900025982D9826982E9827982F98813019F015 +:1005A000823021F00895259A2D9A0895269A2E9A40 +:1005B00008950C94BC0256985E9825982D9826981C +:1005C0002E9827982F988FEF90E090938900809332 +:1005D000880090938B0080938A0090938D00809385 +:1005E0008C00259A2D9A2FEF80E792E021508040D1 +:1005F0009040E1F700C00000269A2E9A2FEF80E786 +:1006000092E0215080409040E1F700C00000279A1E +:100610002F9A2FEF80E792E0215080409040E1F741 +:1006200000C0000025982D982FEF80E792E0215020 +:1006300080409040E1F700C0000026982E982FEFF0 +:1006400080E792E0215080409040E1F700C0000038 +:1006500027982F9856985E9825982D9826982E982A +:1006600027982F98089589EA8093800089E08093E5 +:10067000810024982C983F988AB18F748AB96E981B +:10068000479A8BB1806B8BB9769A0E94DB020C94EF +:10069000BB0280E2809300018091340181110EC081 +:1006A0000E94980381E0809334012FEF83ED90E363 +:1006B000215080409040E1F700C0000080E40E949B +:1006C0009E038093000181112EC00E94C803809375 +:1006D0000001811128C00E94C8038093000181118C +:1006E00022C08FE30E94C8038093000181111BC0C8 +:1006F0000E94C00380E40E949E0380930001811148 +:1007000012C08CE00E94C8038093000181110BC0CD +:100710000E94C80380930001811105C08FE30E94ED +:10072000C803809300010E94C003809100010895D6 +:100730001092B9008AE08093B800089594EA9093EB +:10074000BC009091BC0097FFFCCF9091B900987FBE +:10075000983021F0903111F081E008958093BB0032 +:1007600084E88093BC008091BC0087FFFCCF80911F +:10077000B900887F883111F0803471F780E00895E6 +:1007800084E98093BC008091BC0084FDFCCF089577 +:100790008093BB0084E88093BC008091BC0087FFFD +:1007A000FCCF9091B900987F81E0983209F480E005 +:1007B000089584E88093BC008091BC0087FFFCCF43 +:1007C0008091BB00089580910001811115C080E4E3 +:1007D0000E949E038093000181110CC082E10E945F +:1007E000C80380930001811105C08FEF0E94C803E8 +:1007F000809300010E94C00384B1807F84B985B1D9 +:10080000807F85B98AB1837F8AB98BB1837F8BB9A9 +:100810003E98469808950E944903809300010E94E3 +:10082000E30380B38C7080BB81B3836F81BBA6E38D +:10083000B1E0E4E4F1E08EE08E0F11921D928E1390 +:10084000FCCF0C943303BF92CF92DF92EF92FF92D2 +:100850000F931F93CF93DF9380910001882379F04A +:10086000809135018F5F80933501811108C00E940E +:10087000490380930001811102C00E94DB0206E35C +:1008800011E0C0E0D0E0DD24D39482E0C82EEE2455 +:10089000E394F12CC730D10500F58091000181115E +:1008A00064C080E40E949E0380930001811112C005 +:1008B00082E10E94C8038093000181110BC0C7012F +:1008C0000C2E01C0880F0A94EAF780950E94C80395 +:1008D000809300010E94C00348C0CA30A1F028F4F0 +:1008E000C83059F0C93061F005C0CC3089F070F0E3 +:1008F000CD3089F0209A289810C0219A29980DC0EF +:10090000229A2A980AC0239A2B9807C0529A01C0AB +:10091000539A5B9802C03E9A469890EA9A95F1F7EE +:100920009FB1799902C082E001C080E091709D255D +:10093000982B7C9902C084E001C080E0892B7D99CE +:1009400002C038E001C030E0832B7E9902C020E174 +:1009500001C020E0822B9FB19095991F9927991F84 +:100960009295990F907E892B0FC080910001811183 +:1009700049C080E40E949E0380930001882379F19E +:10098000B12C0E94C0038B2DF8019081981719F0AB +:100990008083C09201010E94E30321960F5F1F4FE5 +:1009A000CE30D10509F076CF80910101882361F125 +:1009B000815080930101882339F08FE99FE00197EE +:1009C000F1F700C0000020C0A4E4B1E0E6E3F1E0EC +:1009D000CF01825F91919D938E13FCCF15C083E16F +:1009E0000E94C803809300018111CACF81E40E9454 +:1009F0009E03809300018111C3CF0E94D903B82EBA +:100A0000B094BFCF80E0C0CF0E94D90281E0DF91D7 +:100A1000CF911F910F91FF90EF90DF90CF90BF90FB +:100A20000895E82FF0E0EC5BFE4F80810895089573 +:100A3000089596E0799FF001112494E5899FE00DD7 +:100A4000F11D1124E60FF11DEE0FFF1FEC51FF4FBA +:100A5000859194910895880F991FFC01E05AF04008 +:100A6000859194910895880F991FFC01E052FF4FE2 +:100A70008591949108950F931F93CF93DF93EC0189 +:100A80008115904350F5C11580E2D80708F0B3C036 +:100A9000CB3BD10590F4C83AD10508F05AC0C53A0D +:100AA000D10508F04BC0C430D10508F0BBC1219777 +:100AB00009F0B5C101E010E0F5C1CF3FD10511F05B +:100AC00008F0B0C1C03FD10508F092C0CE01805EF1 +:100AD0009109089708F4A6C1A2C1C11591E5D907EB +:100AE000A8F4C23020E5D20708F09EC0C11580E509 +:100AF000D80709F485C008F091C0C11520E4D207D9 +:100B000008F08DC1DD278E01106CCCC1C11580E8C5 +:100B1000D80758F4C11590E7D90708F07CC1C11572 +:100B200020E6D20708F422C17AC1C11580E9D807AE +:100B300008F075C1DF708E01106AB4C1C53AD105E5 +:100B400009F472C1C63AD10509F071C102E810E496 +:100B5000A9C1C83AD10509F46DC1C93AD10509F452 +:100B60006CC1CA3AD10509F46BC1CB3AD10509F47D +:100B70006AC1CC3AD10509F469C1CD3AD10509F46D +:100B800068C1C03BD10509F467C1CE3AD10509F46B +:100B900066C1CF3AD10509F465C1C13BD10509F45D +:100BA00064C1C23BD10509F463C1C33BD10509F45B +:100BB00062C1C43BD10509F461C1C53BD10509F44B +:100BC00060C1C63BD10509F45FC1C73BD10509F43B +:100BD0005EC1C83BD10509F45DC1C93BD10509F42B +:100BE0005CC1CA3BD10509F45BC100E014E45AC101 +:100BF0008E01106557C1CE019F700E94330553C10D +:100C00000E948A149FEF24E38CE0915020408040A2 +:100C1000E1F700C000000E94C21B44C18091CD01D9 +:100C200081608093CD013EC10E946B1D811102C085 +:100C30000E94511D0E94881D90E09093EE018093C8 +:100C4000ED01C23090E5D90721F48091ED0181607A +:100C500086C0C43020E5D20721F48091ED01826086 +:100C60007EC0C63080E5D80721F48091ED01846014 +:100C700076C0C83090E5D90719F48091ED0127C0FE +:100C8000CA3020E5D20721F48091ED01806167C070 +:100C9000CC3080E5D80721F48091ED0180625FC0FF +:100CA000CE3090E5D90721F48091ED01806457C0E2 +:100CB000C03120E5D20721F48091ED0180684FC05A +:100CC000C23180E5D80729F48091ED018460886005 +:100CD00046C0C33090E5D90721F48091ED018E7FA5 +:100CE0003EC0C53020E5D20721F48091ED018D7F13 +:100CF00036C0C73080E5D80721F48091ED018B7FA5 +:100D00002EC0C93090E5D90719F48091ED0126C0B5 +:100D1000CB3020E5D20721F48091ED018F7E1FC0FA +:100D2000CD3080E5D80721F48091ED018F7D17C08B +:100D3000CF3090E5D90721F48091ED018F7B0FC072 +:100D4000C13120E5D20721F48091ED018F7707C0F2 +:100D5000C331D04531F48091ED018B7F877F809343 +:100D6000ED018091ED010E948C1D9CC08D2F992773 +:100D70008F70992781309105D9F49E012370332714 +:100D800002C0880F991F2A95E2F79C688E0144E003 +:100D9000000F111F4A95E1F700271370802B912B4C +:100DA00053E0CC0FDD1F5A95E1F7C076DD272FC049 +:100DB0008230910531F4DC2FCC278E01016F106A4F +:100DC00071C08330910569F4CE018370992701E0E9 +:100DD00010E002C0000F111F8A95E2F7C8019C685D +:100DE0000FC0049709F05EC0CE018370992701E01F +:100DF00010E002C0000F111F8A95E2F7C8019A683F +:100E000023E0CC0FDD1F2A95E1F7C07ED7708C015F +:100E10000C2B1D2B47C0DF708E01106243C000E019 +:100E200010E040C08E013EC001E810E43BC003E882 +:100E300010E438C002EE14E435C009EE14E432C008 +:100E40000AEE14E42FC005EB14E42CC006EB14E406 +:100E500029C007EB14E426C00CEC14E423C00DEC0D +:100E600014E420C003E815E41DC00AE815E41AC024 +:100E700002E915E417C004E915E414C001E216E420 +:100E800011C003E216E40EC004E216E40BC005E252 +:100E900016E408C006E216E405C007E216E402C044 +:100EA0000AE216E4C801DF91CF911F910F910895D6 +:100EB00096E0799FF001112494E5899FE00DF11DE2 +:100EC0001124E60FF11DEE0FFF1FEC51FF4F85912E +:100ED0009491803E9105E0F4803C910558F5813372 +:100EE000910509F46FC048F48932910509F463C093 +:100EF0008A32910509F46DC072C089339105E9F019 +:100F000082389105D1F08533910509F44DC067C051 +:100F1000833E910581F138F4803E9105B9F0823E1F +:100F20009105D9F05CC0863E910561F1873E91053F +:100F3000A1F155C00E942B0508952091ED0120FDDF +:100F400002C021FF4CC080EE90E049C08091ED01CD +:100F500080FFF9CF89E390E042C08091ED0182FFEC +:100F60000EC08091ED0184FF03C080E090E037C0A7 +:100F700083EE90E034C08091ED0182FFF2CF82EEEB +:100F800090E02DC08091ED0183FF0BC08091ED01B9 +:100F900084FDEBCF87EE90E022C08091ED0183FFCE +:100FA000F5CF86EE90E01BC08091ED0185FF07C074 +:100FB00089E290E014C08091ED0185FFF9CF85E3CF +:100FC00090E00DC08091ED0186FF07C08AE290E0BD +:100FD00006C08091ED0186FFF9CF81E390E00E9489 +:100FE0003B05089508950C94F207809162010895DD +:100FF000CF93DF9300D01F92CDB7DEB79C018091D5 +:10100000E401843019F593E099833B832A8390931C +:10101000E9008FEF9091E800815095FD06C095EDB5 +:101020009A95F1F700008111F5CF8091E80085FFD6 +:101030000DC040E050E063E070E0CE0101960E94F8 +:10104000620A8091E8008E778093E8000F900F90FD +:101050000F90DF91CF910895CF93DF9300D01F922F +:10106000CDB7DEB72091E401243021F522E02983B9 +:101070009B838A8383E08093E9008FEF9091E8005F +:10108000815095FD06C095ED9A95F1F7000081110C +:10109000F5CF8091E80085FF0DC040E050E063E0AF +:1010A00070E0CE0101960E94620A8091E8008E777E +:1010B0008093E8000F900F900F90DF91CF910895EB +:1010C0002091E4012430F1F422E02093E9002FEF95 +:1010D0003091E800215035FD06C035ED3A95F1F725 +:1010E00000002111F5CF2091E80025FF0BC040E062 +:1010F00050E065E070E00E94620A8091E8008E771F +:101100008093E8000895CF93DF93EC019091E40180 +:10111000943009F046C080910C018823D9F0809169 +:101120000D018823B9F09093E9008FEF9091E800CA +:10113000815095FD06C095E19A95F1F70000811167 +:10114000F5CF8091E80085FF2CC040E050E060E1E1 +:1011500070E017C081E08093E9008FEF9091E80084 +:10116000815095FD06C095ED9A95F1F7000081112B +:10117000F5CF8091E80085FF14C040E050E068E0C2 +:1011800070E0CE010E94620A8091E8008E77809321 +:10119000E80080E1FE01A2E5B1E001900D928A95A0 +:1011A000E1F7DF91CF9108958091E301811109C0AA +:1011B0000E94F70B0E94540C8091E200846080939F +:1011C000E20008951092E301089508950C94FB2124 +:1011D0000E94581B0E9401220E94FA0E0C94F307F1 +:1011E00042E061EC81E00E94710B42E061EC82E040 +:1011F0000E94710B42E061EC83E00E94710B42E1BE +:1012000061EC84E00C94710B8091E601833009F469 +:1012100055C030F4813071F0823009F48EC00895E9 +:101220008A3009F47AC08B3009F460C0893009F043 +:101230009CC020C08091E501813A09F096C0809160 +:10124000E800877F8093E8008091E9019091EA01AE +:10125000892B21F460E182E591E003C060E080E049 +:1012600090E070E00E94AD0A8091E8008B77809357 +:10127000E80008958091E501813209F076C08091FF +:10128000E9019091EA01009719F0039709F06DC008 +:101290008091E800877F8093E8008091E80082FDDC +:1012A00005C08091E4018111F8CF5FC08091F10009 +:1012B000809362018091E8008B7753C08091E501B3 +:1012C000813A09F052C08091E9019091EA01892B9D +:1012D00009F04BC08091E800877F8093E8008091FF +:1012E000E80080FFFCCF80910C0136C08091E501C1 +:1012F0008132D9F58091E9019091EA01892BA9F514 +:101300008091E800877F8093E8000E94A60B80917F +:10131000E70180930C010C948A148091E5018132DD +:1013200021F58091E800877F8093E8000E94A60B5A +:101330008091E8018093630108958091E501813AED +:10134000A1F48091E800877F8093E8008091E80015 +:1013500080FFFCCF809163018093F1008091E800D1 +:101360008E778093E8000C94A60B089584B7877F4E +:1013700084BF88E10FB6F8948093600010926000FB +:101380000FBE90E080E80FB6F894809361009093D0 +:1013900061000FBE0E94490F0E94F70B0E94540C7F +:1013A0008091E20084608093E20078940E94DA0EDB +:1013B0000E944B0F82E091E00E94F50E0E94E9210D +:1013C0008091E401853069F40E94191B8091E2014B +:1013D0008823B1F30E94441B882391F30E944C0A96 +:1013E000EFCF0E94510FECCF292F33272330310547 +:1013F000C9F064F42130310581F02230310509F063 +:1014000043C08DE690E020E133E042C02132310557 +:10141000F1F02232310541F137C082E190E02DE751 +:1014200033E036C099278130910541F08230910533 +:1014300041F0892B49F5ECE0F3E005C0E4EFF2E080 +:1014400002C0ECEDF2E0849190E09F0121C0643095 +:10145000D8F4E62FF0E0EE0FFF1FEE5DFE4F208187 +:10146000318189E090E014C0643070F470E0FB01D9 +:10147000EE0FFF1FE65EFE4F20813181FB01EA5E29 +:10148000FE4F808190E004C080E090E020E030E0FA +:10149000FA0131832083089580E189BD82E189BD0D +:1014A00009B400FEFDCF8091D8008F7D8093D800D5 +:1014B0008091E00082608093E0008091E00081FDF7 +:1014C000FCCF0895CF92DF92EF92FF920F931F937C +:1014D000CF93DF93EC018B016A010E94C50B811150 +:1014E00033C0C114D10439F0F60180819181081B09 +:1014F000190BC80FD91FE12CF12C0115110519F199 +:101500008091E80085FD16C08091E8008E77809379 +:10151000E800C114D10449F0F60180819181E80E00 +:10152000F91EF182E08285E00FC00E94C50B88237E +:1015300021F30AC089918093F10001501109FFEF56 +:10154000EF1AFF0ADACF80E0DF91CF911F910F9160 +:10155000FF90EF90DF90CF9008952091EB013091B4 +:10156000EC012617370748F06115710539F4209111 +:10157000E8002E772093E80001C0B90140E0611532 +:101580007105A9F12091E401222309F443C025301B +:1015900009F442C02091E80023FD40C02091E800FA +:1015A00022FD32C02091E80020FFE9CF4091F300F6 +:1015B0002091F20030E0342BFC01CF016115710560 +:1015C00059F02830310540F481918093F100615049 +:1015D00071092F5F3F4FF1CF41E02830310509F00D +:1015E00040E02091E8002E772093E800C8CF411119 +:1015F000C9CF0AC08091E401882361F0853061F091 +:101600008091E80083FD0AC08091E80082FFF2CF5C +:1016100080E0089582E0089583E0089581E00895D0 +:101620002091EB013091EC012617370748F0611546 +:10163000710539F42091E8002E772093E80001C06D +:10164000B901FC0120E06115710591F18091E4017F +:10165000882309F440C0853009F43FC08091E80038 +:1016600083FD3DC08091E80082FD2FC08091E8009D +:1016700080FFE9CF2091F3008091F20090E0922B5F +:101680006115710559F08830910540F4249120933B +:10169000F1003196615071090196F2CF21E008976F +:1016A00009F020E08091E8008E778093E800CBCFAE +:1016B0002111CCCF0AC08091E401882361F08530EC +:1016C00061F08091E80083FD0AC08091E80082FF0C +:1016D000F2CF80E0089582E0089583E0089581E0EC +:1016E0000895982F973058F59093E900981739F09E +:1016F0007091EC002091ED005091F00003C0242F78 +:10170000762F50E021FF19C03091EB003E7F3093DF +:10171000EB003091ED003D7F3093ED003091EB0018 +:1017200031603093EB007093EC002093ED00509308 +:10173000F0002091EE0027FF07C09F5FD3CF8F708E +:101740008093E90081E0089580E008958091E501AB +:1017500087FF11C08091E80082FD05C08091E401FF +:101760008111F8CF11C08091E8008B770BC0809178 +:10177000E401882349F08091E80080FFF8CF809150 +:10178000E8008E778093E80008952091E40030917E +:10179000E50095E64091EC00842F817040FF22C067 +:1017A0008091E80080FD1CC08091E401882391F0C5 +:1017B000853091F08091EB0085FD10C04091E400F0 +:1017C0005091E5004217530729F39A01915011F700 +:1017D00084E0089582E0089583E0089581E008950B +:1017E00080E008954091E80042FFDECF08950E9416 +:1017F000650C0E946D0CE0EEF0E0808181608083DA +:10180000E8EDF0E080818F77808319BCA7EDB0E030 +:101810008C918E7F8C9380818F7E80831092E301E8 +:1018200008950F931F93CF93DF930E94650C0E943E +:101830006D0CC8EDD0E088818F77888388818068BF +:10184000888388818F7D888319BC1092E40110926F +:10185000E0011092E2011092E10100EE10E0F801C7 +:1018600080818B7F808388818160888342E060E013 +:1018700080E00E94710BE1EEF0E080818E7F80833A +:10188000E2EEF0E0808181608083808188608083E7 +:10189000F80180818E7F8083888180618883DF91D9 +:1018A000CF911F910F910895E8EDF0E080818F7E38 +:1018B0008083E7EDF0E080818160808384E082BFF7 +:1018C00081E08093E3010C94110CE8EDF0E080815D +:1018D0008E7F80831092E20008951092DA001092B9 +:1018E000E10008951F920F920FB60F9211242F93CB +:1018F0003F934F935F936F937F938F939F93AF9398 +:10190000BF93EF93FF938091E10082FF0BC0809122 +:10191000E20082FF07C08091E1008B7F8093E100AD +:101920000E94D90E8091DA0080FF1FC08091D800FC +:1019300080FF1BC08091DA008E7F8093DA00809157 +:10194000D90080FF0DC080E189BD82E189BD09B465 +:1019500000FEFDCF81E08093E4010E94D40805C021 +:1019600019BC1092E4010E94E2088091E10080FF1E +:1019700019C08091E20080FF15C08091E2008E7F47 +:101980008093E2008091E20080618093E200809188 +:10199000D80080628093D80019BC85E08093E40170 +:1019A0000E94E6088091E10084FF30C08091E2004F +:1019B00084FF2CC080E189BD82E189BD09B400FEAD +:1019C000FDCF8091D8008F7D8093D8008091E10079 +:1019D0008F7E8093E1008091E2008F7E8093E20011 +:1019E0008091E20081608093E2008091E001882391 +:1019F00011F084E007C08091E30087FD02C081E020 +:101A000001C083E08093E4010E94E8088091E10036 +:101A100083FF29C08091E20083FF25C08091E1000F +:101A2000877F8093E10082E08093E4011092E001DF +:101A30008091E1008E7F8093E1008091E2008E7FB3 +:101A40008093E2008091E20080618093E20042E0B6 +:101A500060E080E00E94710B8091F00088608093CC +:101A6000F0000E94E508FF91EF91BF91AF919F9127 +:101A70008F917F916F915F914F913F912F910F9037 +:101A80000FBE0F901F9018951F920F920FB60F92D6 +:101A900011242F933F934F935F936F937F938F9373 +:101AA0009F93AF93BF93CF93DF93EF93FF93C09137 +:101AB000E900CF708091EC00D82FD17080FDD0E884 +:101AC0001092E9008091F000877F8093F000789475 +:101AD0000E94880D1092E9008091F0008860809348 +:101AE000F000CD2BCF70C093E900FF91EF91DF9113 +:101AF000CF91BF91AF919F918F917F916F915F91A6 +:101B00004F913F912F910F900FBE0F901F901895FE +:101B10001F93CF93DF93CDB7DEB7AA970FB6F89494 +:101B2000DEBF0FBECDBFE5EEF1E088E08E0F9091F5 +:101B3000F10091938E13FBCF0E9404098091E8007D +:101B400083FF1FC18091E5019091E601492F50E08C +:101B50004A30510508F015C1FA01EA5AFF4F0C94BA +:101B60008323803881F0823809F00BC18091E9012C +:101B70008F708093E9008091EB0085FB882780F9C6 +:101B80001092E90006C08091E1019091E20191116B +:101B900082609091E800977F9093E8008093F10035 +:101BA0001092F100C8C0282F2D7F09F0EAC08823C9 +:101BB00019F0823061F0E5C08091E701813009F0D1 +:101BC000E0C0933009F080E08093E2012BC0809167 +:101BD000E701811127C08091E9018F7009F4D1C01C +:101BE0008093E9002091EB0020FF1CC0933021F48A +:101BF0008091EB00806214C09091EB009061909313 +:101C0000EB0021E030E0A90102C0440F551F8A9586 +:101C1000E2F74093EA001092EA008091EB008860BE +:101C20008093EB001092E9008091E800877F86C0E6 +:101C30008111A7C01091E7011F778091E3008078A0 +:101C4000812B8093E3008091E800877F8093E800F8 +:101C50000E94A60B8091E80080FFFCCF8091E300FA +:101C600080688093E300111102C082E001C083E02C +:101C70008093E40186C08058823008F082C0809151 +:101C8000E7019091E8018C3D53E0950779F583E0F9 +:101C90008A838AE289834FB7F894DE01139620E0A5 +:101CA0003EE051E2E32FF0E050935700E49120FF33 +:101CB00003C0E295EF703F5FEF708E2F90E0EA3047 +:101CC00010F0C79601C0C0968D939D932F5F24316D +:101CD00049F74FBF8091E800877F8093E8006AE270 +:101CE00070E0CE0101960E94AD0A14C0AE014F5FB4 +:101CF0005F4F6091E9010E94F409BC01892B09F44E +:101D000040C09091E800977F9093E80089819A8184 +:101D10000E94100B8091E8008B778093E80031C01F +:101D2000803879F58091E800877F8093E800809182 +:101D3000E0018093F1008091E8008E778093E800C5 +:101D40000E94A60B1EC081111CC09091E701923029 +:101D5000C0F48091E800877F8093E8009093E001D1 +:101D60000E94A60B8091E001811106C08091E300E2 +:101D700087FD02C081E001C084E08093E4010E94FD +:101D8000F0088091E80083FF0AC08091E800877F17 +:101D90008093E8008091EB0080628093EB00AA962C +:101DA0000FB6F894DEBF0FBECDBFDF91CF911F916C +:101DB00008950895CF938091E4018823A1F0C09104 +:101DC000E900CF709091EC00892F817090FD80E840 +:101DD000C82B1092E9008091E80083FD0E94880DD5 +:101DE000CF70C093E900CF910895909369018093DB +:101DF00068010895E0916801F0916901309721F040 +:101E00000190F081E02D099480E00895E09168014F +:101E1000F0916901309721F00280F381E02D09945F +:101E20000895E0916801F0916901309721F00480F4 +:101E3000F581E02D099408952091660130916701A4 +:101E40008217930771F09093670180936601E09188 +:101E50006801F0916901309721F00680F781E02D4B +:101E600009940895209164013091650182179307C8 +:101E700071F09093650180936401E0916801F091A5 +:101E80006901309721F00084F185E02D09940895CF +:101E900008950C94480F0E945E1B0E940B040C9442 +:101EA000241CCF92DF92EF92FF920F931F93CF9358 +:101EB000DF93CDB7DEB72B970FB6F894DEBF0FBE1A +:101EC000CDBF0E9423048BE6C82E81E0D82E00E00F +:101ED00010E0E02E802F0E941105F60141916F0164 +:101EE000F42EF826B1F40F5F1F4F0E30110589F75D +:101EF0008FEF89838A831B820E94671B8160782F02 +:101F00009D838C8349815A816B818D810E94F40F5E +:101F100040C09091CD0191FF04C08B870E941705AE +:101F20008B8520E030E04F2D50E0922FBA01022E39 +:101F300002C0759567950A94E2F760FF24C02E836E +:101F4000EF8221E030E0690102C0CC0CDD1C9A95E3 +:101F5000E2F790E08C219D21892B09F420E028876D +:101F60000E94671B8160782F9A8789874E815F81E5 +:101F700068858A850E94F40FF801E559FE4F80813B +:101F8000C826C08206C02F5F3F4F2630310569F654 +:101F9000AACF0E940B1F10916A010E94FA0E181717 +:101FA000A1F00E94FA0E80936A012B960FB6F89466 +:101FB000DEBF0FBECDBFDF91CF911F910F91FF907C +:101FC000EF90DF90CF900C94F3072B960FB6F89418 +:101FD000DEBF0FBECDBFDF91CF911F910F91FF905C +:101FE000EF90DF90CF900895CF93DF93CDB7DEB71A +:101FF0002B970FB6F894DEBF0FBECDBF4F83588727 +:1020000069877A878B87DE01119686E0FD01119240 +:102010008A95E9F785E0FE01379601900D928A9541 +:10202000E1F749815A816B817C818D819E810E947B +:1020300024172B960FB6F894DEBF0FBECDBFDF91ED +:10204000CF9108950895CF93882309F4C2C0C82F73 +:10205000823859F40E94FA0E81FDBBC089E30E94C8 +:10206000CD190E949A1A89E30CC0833879F40E9432 +:10207000FA0E80FDAEC083E50E94CD190E949A1A27 +:1020800083E50E940F1ACF910C949A1A843859F460 +:102090000E94FA0E82FD9DC087E40E94CD190E9425 +:1020A0009A1A87E4EECF8CEF8C0F813A48F48C2F8C +:1020B0000E944E2181118DC08C2F0E94CD19E3CF3B +:1020C00080E28C0F883048F4C77081E001C0880F2F +:1020D000CA95EAF70E94531AD6CF8BE58C0F83304E +:1020E00078F4C53A29F0C63A31F083E890E005C0AB +:1020F00081E890E002C082E890E0CF910C941C0F40 +:1021000088E58C0F833108F064C0C83A39F1C93AC8 +:1021100041F1CA3A49F1CB3A51F1CC3A59F1CD3AB1 +:1021200061F1C03B69F1CE3A71F1CF3A79F1C13B2F +:1021300081F1C23B89F1C33B91F1C43B99F1C53BAD +:10214000A1F1C63BA9F1C73BB1F1C83BB9F1C93B0D +:10215000C1F1CA3BC9F180E090E038C082EE90E066 +:1021600035C089EE90E032C08AEE90E02FC085EB5A +:1021700090E02CC086EB90E029C087EB90E026C071 +:102180008CEC90E023C08DEC90E020C083E891E0DF +:102190001DC08AE891E01AC082E991E017C084E985 +:1021A00091E014C081E292E011C083E292E00EC09F +:1021B00084E292E00BC085E292E008C086E292E001 +:1021C00005C087E292E002C08AE292E0CF910C94CF +:1021D000320FCF910895882309F44BC0823859F407 +:1021E0000E94FA0E81FF45C089E30E94CD190E942A +:1021F0009A1A89E30CC0833871F40E94FA0E80FFAA +:1022000038C083E50E94CD190E949A1A83E50E9486 +:102210000F1A0C949A1A843859F40E94FA0E82FF0D +:1022200028C087E40E94CD190E949A1A87E4EFCF54 +:102230009CEF980F913A58F390E2980F983050F431 +:10224000877091E001C0990F8A95EAF7892F0E9463 +:10225000591ADFCF9BE5980F933020F480E090E08F +:102260000C941C0F885A833120F480E090E00C9489 +:10227000320F0895882321F00E94531A0C949A1A61 +:102280000895882321F00E94591A0C949A1A0895EF +:10229000BF92CF92DF92EF92FF920F931F93CF9353 +:1022A000DF9300D000D000D0CDB7DEB725E0FC0131 +:1022B000DE01119601900D922A95E1F7FC01D08084 +:1022C00011810281258122952F7043815481452BF4 +:1022D00009F4FCC21F3F21F4FFEFDF1609F4F6C238 +:1022E0007C012E830E942210D9821A8369817A810F +:1022F000802F0E94C919182FB92E0E947E190E94A2 +:1023000045182E81002319F00E94701A2E81EB2DA2 +:10231000E295EF70F0E0E05AFF4F0C9483238B2D91 +:10232000807F9B2D9F70F92E882319F0F29480EF07 +:10233000F822002389F0FF2009F475C280E2810FA2 +:10234000883020F48F2D0E94531A03C08F2D0E94D5 +:10235000631A0E949A1A67C2812F0E94EB10FF2015 +:1023600009F4B4C2105E8F2D183018F40E94591A67 +:1023700002C00E94691A26960FB6F894DEBF0FBEFF +:10238000CDBFDF91CF911F910F91FF90EF90DF9024 +:10239000CF90BF900C949A1A3B2D307F8B2D8F706D +:1023A000303211F08295807F112319F0113021F124 +:1023B0002CC00023B9F0222309F4A0C1213009F078 +:1023C0009DC126960FB6F894DEBF0FBECDBFDF913C +:1023D000CF911F910F91FF90EF90DF90CF90BF9022 +:1023E0000C94831A222319F0213009F46FC28E83D2 +:1023F0000E94861A8E8196C1002321F0223008F0B7 +:1024000065C27CC1211162C28DC1002321F022234B +:1024100009F474C108C2222309F484C119C22B2D06 +:1024200026952695237030E02115310521F02130C5 +:102430003105D1F04BC2002321F0812F9B2D9370E9 +:1024400002C080E090E026960FB6F894DEBF0FBE83 +:10245000CDBFDF91CF911F910F91FF90EF90DF9053 +:10246000CF90BF900C941C0F002321F0812F9B2D47 +:10247000937002C080E090E026960FB6F894DEBF1D +:102480000FBECDBFDF91CF911F910F91FF90EF90C5 +:10249000DF90CF90BF900C94320F812F002319F062 +:1024A0000E94131E02C00E947B1E26960FB6F8944F +:1024B000DEBF0FBECDBFDF91CF911F910F91FF9077 +:1024C000EF90DF90CF90BF900C94001F8B2D837006 +:1024D00009F07BC00111FAC1812F82958695877022 +:1024E000880F880F912F9F70C92ED12CE12CF12CD1 +:1024F000082E04C0CC0CDD1CEE1CFF1C0A94D2F785 +:1025000014FF12C04FE050E060E070E004C0440FE0 +:10251000551F661F771F8A95D2F7CB01BA016095C8 +:1025200070958095909503C060E070E0CB012B2DF5 +:10253000269526952370422F50E042305105D9F060 +:102540004330510569F16C297D298E299F2941303D +:10255000510551F126960FB6F894DEBF0FBECDBFE0 +:10256000DF91CF911F910F91FF90EF90DF90CF906F +:10257000BF900C946C186C297D298E299F29269672 +:102580000FB6F894DEBF0FBECDBFDF91CF911F9184 +:102590000F91FF90EF90DF90CF90BF900C94881830 +:1025A0000E946C18C701B60126960FB6F894DEBFDC +:1025B0000FBECDBFDF91CF911F910F91FF90EF9094 +:1025C000DF90CF90BF900C945018002319F08B2D02 +:1025D000817001C08695882309F478C1812F829586 +:1025E00086958770880F880F912F9F70C92ED12CE8 +:1025F000E12CF12C082E04C0CC0CDD1CEE1CFF1CC1 +:102600000A94D2F714FF12C04FE050E060E070E08F +:1026100004C0440F551F661F771F8A95D2F7CB0160 +:10262000BA01609570958095909503C060E070E068 +:10263000CB012B2D269526952370422F50E042305A +:102640005105D9F04330510569F16C297D298E2956 +:102650009F294130510551F126960FB6F894DEBFFF +:102660000FBECDBFDF91CF911F910F91FF90EF90E3 +:10267000DF90CF90BF900C9446196C297D298E294C +:102680009F2926960FB6F894DEBF0FBECDBFDF910F +:10269000CF911F910F91FF90EF90DF90CF90BF905F +:1026A0000C9462190E944619C701B60126960FB60E +:1026B000F894DEBF0FBECDBFDF91CF911F910F9178 +:1026C000FF90EF90DF90CF90BF900C942A19103FAD +:1026D000D1F118F4103E50F4A1C0123F09F463C0C8 +:1026E00008F44CC0133F09F473C098C01F708B2DC1 +:1026F0008F710023A1F00E94C318812F26960FB678 +:10270000F894DEBF0FBECDBFDF91CF911F910F9127 +:10271000FF90EF90DF90CF90BF900C943A110E9401 +:10272000E418812F26960FB6F894DEBF0FBECDBFFA +:10273000DF91CF911F910F91FF90EF90DF90CF909D +:10274000BF900C9441110023A9F02111BFC08B2D23 +:102750008F7126960FB6F894DEBF0FBECDBFDF9106 +:10276000CF911F910F91FF90EF90DF90CF90BF908E +:102770000C940919223008F0A9C0E9CF0023A9F070 +:102780008B2D8F7126960FB6F894DEBF0FBECDBF8E +:10279000DF91CF911F910F91FF90EF90DF90CF903D +:1027A000BF900C94C318002359F38B2D8F7126967C +:1027B0000FB6F894DEBF0FBECDBFDF91CF911F9152 +:1027C0000F91FF90EF90DF90CF90BF900C94E418A2 +:1027D000002399F08B2D8F7126960FB6F894DEBFEB +:1027E0000FBECDBFDF91CF911F910F91FF90EF9062 +:1027F000DF90CF90BF900C94AE1826960FB6F89449 +:10280000DEBF0FBECDBFDF91CF911F910F91FF9023 +:10281000EF90DF90CF90BF900C94A4180023A9F004 +:10282000222309F4ADCF812F26960FB6F894DEBF90 +:102830000FBECDBFDF91CF911F910F91FF90EF9011 +:10284000DF90CF90BF900C942310222309F4ADCFDA +:10285000812F26960FB6F894DEBF0FBECDBFDF9155 +:10286000CF911F910F91FF90EF90DF90CF90BF908D +:102870000C94EB104B2D4F70612FC7010E94AB02DF +:1028800026960FB6F894DEBF0FBECDBFDF91CF9175 +:102890001F910F91FF90EF90DF90CF90BF900C941D +:1028A000C8174B2D4F70612FC70126960FB6F894AD +:1028B000DEBF0FBECDBFDF91CF911F910F91FF9073 +:1028C000EF90DF90CF90BF900C94180526960FB62E +:1028D000F894DEBF0FBECDBFDF91CF911F910F9156 +:1028E000FF90EF90DF90CF90BF9008950E94701AF4 +:1028F0000E94801A0E94451A0E949A1A0E94B11FD3 +:102900000E94001F80E090E00E941C0F80E090E099 +:102910000C94320F0E94601A0C9476140E94BE1917 +:10292000292F22952F7030E02C3031054CF42A30BD +:1029300031056CF4225031092230310588F407C08A +:102940002C30310549F02F30310531F009C0803E7F +:1029500048F0803F29F406C093FB882780F908954A +:1029600080E0089581E00895CF93DF9300D000D0F8 +:102970001F92CDB7DEB70F900F900F900F900F9072 +:10298000DF91CF910895CF93DF9300D000D000D096 +:10299000CDB7DEB726960FB6F894DEBF0FBECDBF1B +:1029A000DF91CF9108951F93CF93DF93C091790169 +:1029B00016E080917A01C81799F0D0E01C9FF001D1 +:1029C0001D9FF00D1124E558FE4F40815181628119 +:1029D0007381848195810E94C3142196C770E9CFC9 +:1029E000DF91CF911F9108954091AB015091AC01BF +:1029F0006091AD017091AE018091AF019091B001F5 +:102A00000C94C3148091B00182958F7009F054C06A +:102A10008091AD01882309F44FC080917901A09184 +:102A20007A016091AB017091AC014091AE0150917F +:102A3000AF01B6E08A1709F43FC090E04115510597 +:102A4000C1F17F3F11F46F3FA1F1B89FF001B99F31 +:102A5000F00D1124E558FE4F218172132AC0208108 +:102A6000621327C02281211124C0238134812417BD +:102A7000350710F421503109241B350B283C310552 +:102A8000C0F42091B0012F7020612093B00126E0A6 +:102A9000289FF001299FF00D1124E058FE4F8081FE +:102AA0008F70806180838BEA91E00E9448110C94C2 +:102AB000D31401968770BECF0895CF92DF92EF9224 +:102AC000FF920F931F93CF93DF93CDB7DEB762973B +:102AD0000FB6F894DEBF0FBECDBF8C0185E0F801C4 +:102AE000DE011D9601900D928A95E1F7D8014C9177 +:102AF00011965C91119712966C9112971396CD9046 +:102B0000DC9014973091AB017091AC018091AE01D3 +:102B10009091AF01009709F46BC17F3F19F43F3FDB +:102B200009F466C1E090AD01EE2009F4C0C0209127 +:102B3000B001C816D90628F0F601E81BF90BCF0141 +:102B400004C0809590958C0D9D1DFF24F394883CC6 +:102B5000910578F0F12C207F09F0C6C07C2DD98A30 +:102B6000C88A89890E94B4148BEA91E00E944811B6 +:102B7000B1C0822F807F09F046C0751314C0341392 +:102B800012C0611110C02F7020612093B0010E940B +:102B9000F4148BEA91E00E9448118091B001D801B1 +:102BA00015968C932EC0CD2819F15F3F11F44F3F3D +:102BB000F9F0F62E61111CC08091790120917A0103 +:102BC00036E0821709F45AC090E0389FF001399F2F +:102BD000F00D1124E558FE4F7181571306C0708126 +:102BE000471303C07281711103C001968770E9CF4A +:102BF000F62E662309F418C18091B001816080939C +:102C0000B001F12C11C1751308C0341306C0611155 +:102C100004C08091B001D801C3C04D875E878D8507 +:102C20009E856A8B0E948E146A898823E1F166234F +:102C3000D1F12091B001822F82958F7090E00297A0 +:102C400074F08091AB019091AC0198878F831986C5 +:102C5000DB86CA862C87CE0107960E94481186E043 +:102C6000F801ABEAB1E001900D928A95E1F70E947C +:102C700002150E94F414FF24F394D6C04D875E879A +:102C80008D859E850E94BE19292F22952F7030E0D8 +:102C9000223031050CF0BCC09F7009F0B6C0805ED8 +:102CA000883008F4C1C0C8010E944811E4CFC8169A +:102CB000D90608F453C0F601E81BF90BCF01883C94 +:102CC000910508F450C0F12C7C2DD98AC88A8989D5 +:102CD0000E94B414EBEAF1E086E0DF011D928A95D0 +:102CE000E9F70E94F414A0C0751314C0341312C085 +:102CF000611110C08091B001F8018583C8010E9464 +:102D0000481186E0EBEAF1E0DF011D928A95E9F7D0 +:102D1000FE2C8AC04D875E878D859E856A8B0E94BA +:102D20008E146A89882309F4BECF662309F4BBCFC9 +:102D30002091B001822F82958F7090E002970CF461 +:102D40008ECF8091AB019091AC019A8389831B82D5 +:102D5000DD82CC822E83CE0101967FCF8095909527 +:102D60008C0D9D1DACCFF62E662309F49CCF7513F8 +:102D70002EC034132CC02091B00120FD1FC0822F23 +:102D800082958F70D9F0D80115962C9315978F30B6 +:102D900049F08F5F982F9295907F822F8F70892BAB +:102DA00015968C93C8010E94481186E0F801ABEAA1 +:102DB000B1E001900D928A95E1F793CF86E0F8019A +:102DC000ABEAB1E001900D928A95E1F72DC04D87F5 +:102DD0005E878D859E850E948E14811140CF8091E3 +:102DE000B00181608093B001C8010E9448111CC0ED +:102DF000662309F458CF4D875E878D859E850E9496 +:102E00008E14882309F44FCF2ACF811148CF0CC0EC +:102E1000243031050CF047CF9F7009F440CFF80102 +:102E20009581907F09F03BCF8F2D62960FB6F89475 +:102E3000DEBF0FBECDBFDF91CF911F910F91FF90ED +:102E4000EF90DF90CF9008951F93CF93DF93CDB78E +:102E5000DEB72C970FB6F894DEBF0FBECDBF4F8301 +:102E6000588769877A878B879C87CE0107960E944F +:102E70005D15882369F08F8198852A853B85232BF2 +:102E8000F1F19F3F09F063C08F3F09F060C037C088 +:102E900086E0FE013796DE01119601900D928A952B +:102EA000E1F76F817885EA85FB85309741F17F3FB7 +:102EB00011F46F3F21F120917A0130E0C9010196B0 +:102EC000877099274091790150E08417950709F49C +:102ED00047C069837A83FD83EC8396E0929FD0019B +:102EE000939FB00D1124A558BE4FFE01319601905D +:102EF0000D929A95E1F780937A010E94D31416E01F +:102F00008091790190917A018917C1F1189FC001D0 +:102F1000112485589E4F0E945D15882379F1E09118 +:102F200079011E9FF0011124E558FE4F4081518127 +:102F300062817381848195810E94C314809179019B +:102F400090E001968770992780937901D9CF4F81BE +:102F5000588569857A858B859C850E94C314CFCF5F +:102F60000E948A1410927A0110927901EBEAF1E042 +:102F700086E0DF011D928A95E9F7C1CF2C960FB646 +:102F8000F894DEBF0FBECDBFDF91CF911F910895A2 +:102F9000EF92FF920F931F93CF93DF938C01892BB6 +:102FA00009F46CC0F12CEE24E394E8012196F801B9 +:102FB0008491843740F4843008F051C0813081F02E +:102FC000823019F15BC0853709F444C0A8F19CE751 +:102FD000980F903708F052C08F770E94EB1041C0D5 +:102FE0000E5F1F4FFE01C49180E28C0F883048F4C1 +:102FF000C7708E2D01C0880FCA95EAF70E94731A18 +:1030000014C08C2F0E9423102DC00E5F1F4FFE0195 +:10301000C49180E28C0F883058F4C7708E2D01C0A7 +:10302000880FCA95EAF70E94791A0E949A1A1AC064 +:103030008C2F0E94EB1016C00E5F1F4FFE01C49133 +:10304000CC2381F08FE99FE00197F1F700C00000E9 +:10305000C150F6CF0E5F1F4FFE01F49003C00E94D7 +:1030600023108E018F2D882309F49FCFEFE9FFE015 +:103070003197F1F700C000008150F5CFDF91CF917B +:103080001F910F91FF90EF90089508956093B501FF +:103090007093B6018093B7019093B8010C947614A5 +:1030A0000F931F930091B5011091B6012091B701C4 +:1030B0003091B801DC01CB01802B912BA22BB32BDB +:1030C0008093B5019093B601A093B701B093B80176 +:1030D0001F910F910C9476140F931F930091B501DB +:1030E0001091B6012091B7013091B801DC01CB01FC +:1030F00080239123A223B3238093B5019093B6013B +:10310000A093B701B093B8011F910F910C9476145E +:103110000F931F930091B5011091B6012091B70153 +:103120003091B801DC01CB0180279127A227B3277A +:103130008093B5019093B601A093B701B093B80105 +:103140001F910F910C9476141092B1011092B2015C +:103150001092B3011092B4010C94761441E050E047 +:1031600060E070E004C0440F551F661F771F8A950A +:10317000D2F74093B1015093B2016093B3017093C1 +:10318000B4010C94761441E050E060E070E004C0BB +:10319000440F551F661F771F8A95D2F78091B101A2 +:1031A0009091B201A091B301B091B401482B592B79 +:1031B0006A2B7B2B4093B1015093B2016093B30112 +:1031C0007093B4010C94761441E050E060E070E03C +:1031D00004C0440F551F661F771F8A95D2F740958C +:1031E0005095609570958091B1019091B201A09138 +:1031F000B301B091B401482359236A237B23409340 +:10320000B1015093B2016093B3017093B4010C9477 +:10321000761441E050E060E070E004C0440F551FB8 +:10322000661F771F8A95D2F78091B1019091B20104 +:10323000A091B301B091B401482759276A277B2791 +:103240004093B1015093B2016093B3017093B40104 +:103250000C9476140F931F930091B1011091B20159 +:103260002091B3013091B401DC01CB01802B912B73 +:10327000A22BB32B8093B1019093B201A093B30121 +:10328000B093B4011F910F910C9476140F931F9378 +:103290000091B1011091B2012091B3013091B401BC +:1032A000DC01CB0180239123A223B3238093B101BE +:1032B0009093B201A093B301B093B4011F910F9109 +:1032C0000C9476140F931F930091B1011091B201E9 +:1032D0002091B3013091B401DC01CB01802791270B +:1032E000A227B3278093B1019093B201A093B301B9 +:1032F000B093B4011F910F910C9476140895CF925E +:10330000DF92EF92FF920F931F93CF93DF938C0185 +:10331000C090B501D090B601E090B701F090B8012F +:103320008091B1019091B201A091B301B091B4012B +:10333000C82AD92AEA2AFB2ACFE1D0E0D701C60160 +:103340000C2E04C0B695A795979587950A94D2F749 +:1033500080FF06C0B8018C2F0E945807019721F406 +:10336000219760F780E001C08C2FDF91CF911F91F2 +:103370000F91FF90EF90DF90CF900895CF93DF9360 +:10338000EC010E947F19BE010E945807DF91CF9186 +:103390000895CB010E94BE19089590910C019923C4 +:1033A00021F090910D01911109C020910E013091F1 +:1033B0000F01F90132969FEF40E01FC0982F9695BC +:1033C000969596959F3050F5E0910E01F0910F0182 +:1033D000E90FF11D877021E030E0A90102C0440F20 +:1033E000551F8A95E2F7CA019181892B818308953F +:1033F0009F3F39F04F5F4E3041F051915813F8CF55 +:103400000DC05111F7CF942FF5CF9F3F39F0F9013F +:10341000E90FF11D97FDFA95828308950895909123 +:103420000C01992321F090910D01911109C0209177 +:103430000E0130910F01F9013296205F3F4F1FC0FE +:10344000982F9695969596959F30F0F4E0910E0101 +:10345000F0910F01E90FF11D877021E030E0A90123 +:1034600002C0440F551F8A95E2F7CA0180959181E9 +:103470008923818308953196E217F30729F090811B +:103480009813F9CF1082F7CF089581E090E0E09192 +:103490000E01F0910F01E80FF91F108201968031A3 +:1034A0009105A9F708959091CC01892B8093CC01C7 +:1034B000089580959091CC0189238093CC01089543 +:1034C0001092CC0108959091CB01892B8093CB0170 +:1034D000089580959091CB0189238093CB01089525 +:1034E0001092CB0108959091CA01892B8093CA0153 +:1034F000089580959091CA0189238093CA01089507 +:103500001092CA0108958093B90108951092B901EB +:10351000089580910E0190910F01FC0131969C015C +:10352000205F3F4F80E0919191118F5FE217F30789 +:10353000D1F70895E0910E01F0910F018091CC0137 +:103540008083E0910E01F0910F0190818091CB0179 +:10355000892B8083E0910E01F0910F019081809181 +:10356000CA01892B80838091B901882361F0E091A1 +:103570000E01F0910F019081892B80830E94891A9E +:1035800081111092B90180910E0190910F010C945C +:10359000060FCF92DF92EF92FF926C01EE24FF2490 +:1035A000C114D104E104F10421F0C701B60120E106 +:1035B00001C020E0C72ED82EE92EFF24C114D1046B +:1035C000E104F10419F0285FC701B6016B017C0129 +:1035D00054E0F694E794D794C7945A95D1F7C11460 +:1035E000D104E104F10419F02C5FC701B6016B01AD +:1035F0007C0142E0F694E794D794C7944A95D1F7BA +:10360000C114D104E104F10419F02E5FC701B60121 +:10361000DC01CB01B695A79597958795892B8A2BC9 +:103620008B2B09F02F5F822FFF90EF90DF90CF90D0 +:1036300008958091E401843021F11092CE0120E4BC +:1036400088E190E00FB6F894A895809360000FBED3 +:103650002093600080E00E94F30783B7817F84603D +:1036600083BF83B7816083BF7894889583B78E7F4B +:1036700083BF88E10FB6F8948093600010926000D9 +:103680000FBE089508950895CF930E94421B0E9493 +:1036900023040E94431BC0E08C2F0E94110581115E +:1036A00004C0CF5FCE30C1F701C081E0CF91089553 +:1036B0000E948A140E94FA0E0C94F30782E084BDE3 +:1036C00093E095BD9AEF97BD80936E0008952FB754 +:1036D000F8948091CF019091D001A091D101B09147 +:1036E000D2012FBF0895CF92DF92EF92FF920F93F6 +:1036F0001F932FB7F8944091CF015091D001609162 +:10370000D1017091D2012FBF6A017B01EE24FF2409 +:103710008C0120E030E0C016D106E206F30610F47A +:10372000415051099A01281B390BC9011F910F9172 +:10373000FF90EF90DF90CF9008951F920F920FB6F9 +:103740000F9211248F939F93AF93BF938091CF01DA +:103750009091D001A091D101B091D2010196A11D0B +:10376000B11D8093CF019093D001A093D101B0936C +:10377000D201BF91AF919F918F910F900FBE0F908B +:103780001F9018950E94F70BF8942FEF87EA91E6A7 +:10379000215080409040E1F700C0000087E090EBAE +:1037A000DC018093EE019093EF01A093F001B093C0 +:1037B000F1019CE088E10FB6F894A8958093600031 +:1037C0000FBE90936000FFCFEF92FF920F931F9375 +:1037D000CF93DF93D82FC0E08C2F0E94110500E01B +:1037E00010E0E82EF12CC701002E02C095958795B8 +:1037F0000A94E2F780FD06C00F5F1F4F06301105E7 +:1038000091F709C0602F7C2F80E00E941905D81322 +:10381000F3CF81E004C0CF5FCE30F1F680E0DF91DE +:10382000CF911F910F91FF90EF900895CF93C82FE4 +:103830008CE20E94E41B882321F08C2FCF910C9402 +:10384000E41B80E0CF910895CF930E946B1D8111FE +:1038500002C00E94511DC5E6C15049F00E942304D8 +:103860008FE39CE90197F1F700C00000F5CF89E2F2 +:103870000E94161C811113C18AE20E94161C81113C +:103880000E94511D85E00E94161C81110E94C21BDE +:103890000E94761D8093CD0187E00E94161C88232C +:1038A000A9F18BE10E94161C882351F08091CD0173 +:1038B00081FB222720F991E0922790FB81F90EC02D +:1038C0008EE00E94161C882361F08091CD0182FB5E +:1038D000222720F991E0922790FB82F98093CD0175 +:1038E00015C080E10E94161C9091CD01882341F003 +:1038F00093FB222720F981E0822780FB93F904C003 +:10390000892F809580FB90F99093CD018091CD0116 +:103910000E947A1D0E94881D8093ED0180EE0E9416 +:10392000161C882341F08091ED01982F909590FB13 +:1039300080F98093ED0189E30E94161C882359F0D9 +:103940008091ED0181FB222720F991E0922790FBE5 +:1039500081F98093ED0182EE0E94161C882359F0B4 +:103960008091ED0182FB222720F991E0922790FBC4 +:1039700082F98093ED0186EE0E94161C882359F08F +:103980008091ED0183FB222720F991E0922790FBA3 +:1039900083F98093ED0183EE0E94161C882359F071 +:1039A0008091ED0184FB222720F991E0922790FB82 +:1039B00084F98093ED0185E30E94161C882359F059 +:1039C0008091ED0185FB222720F991E0922790FB61 +:1039D00085F98093ED0181E30E94161C882359F03C +:1039E0008091ED0186FB222720F991E0922790FB40 +:1039F00086F98093ED0181E10E94161C882359F01D +:103A00008091ED0187FB222720F991E0922790FB1E +:103A100087F98093ED018091ED010E948C1D8091CA +:103A2000ED0187FB882780F980930D0187E20E94D2 +:103A3000161CC82F8EE10E94161C8111C2608FE1F6 +:103A40000E94161C8111C46080E20E94161C811124 +:103A5000C86081E20E94161C8111C06182E20E944E +:103A6000161C8111C06283E20E94161C8111C06481 +:103A700084E20E94161C882311F0C06802C0CC2387 +:103A800029F08C2F0E94831D6C2F03C00E947F1D84 +:103A9000682F70E080E090E0CF910C944618CF91B1 +:103AA00008956DEE7EEF80E090E00E94BD2360E01F +:103AB00082E090E00E94AB2360E083E090E00E940F +:103AC000AB2360E084E090E00E94AB2360E085E0FF +:103AD00090E00C94AB2380E090E00E94A52321E0CD +:103AE0008D3E9E4F09F020E0822F089582E090E005 +:103AF0000C949D23682F82E090E00C94AB2383E02C +:103B000090E00C949D23682F83E090E00C94AB230D +:103B100084E090E00C949D23682F84E090E00C9466 +:103B2000AB238091D50180FF0BC06091130185E02C +:103B3000689FB001112475956795759567952BC0A1 +:103B400081FF09C06091130185E0689FB0011124D5 +:103B50007595679520C082FF07C06091130185E0CD +:103B6000689FB001112417C09091D6019923D1F01C +:103B700060911201961788F72091130185E0289F24 +:103B800090011124929FA001939F500D112470E089 +:103B9000CA010E946F236038710540F461157105F8 +:103BA00039F002C065E070E0862F08958FE7089530 +:103BB00081E008958091D50180FF08C060911101D6 +:103BC00070E0759567957595679521C081FF06C072 +:103BD0006091110170E07595679519C082FF04C06E +:103BE0006091110170E010C09091D6019923C1F04D +:103BF000609110019617A0F780911101899FC00173 +:103C0000112470E00E946F236038710528F461155B +:103C1000710521F0862F08958FE7089581E00895BA +:103C200061E070E0F4CF803F21F40E94911D819506 +:103C300004C0813F29F40E94911D8093D901089509 +:103C4000823F21F40E94911D819504C0833F29F495 +:103C50000E94911D8093D8010895893F19F40E9414 +:103C6000DA1D05C08A3F31F40E94DA1D81958093E8 +:103C7000DA0108958B3F21F40E94DA1D819504C07A +:103C80008C3F29F40E94DA1D8093DB010895843F64 +:103C900021F48091D701816017C0853F21F4809184 +:103CA000D701826011C0863F21F48091D7018460E2 +:103CB0000BC0873F21F48091D701886005C0883F01 +:103CC00031F48091D70180618093D70108958D3FB1 +:103CD00021F48091D50181600BC08E3F21F4809149 +:103CE000D501826005C08F3F29F48091D5018460A1 +:103CF0008093D5010895803F39F48091D90187FFE1 +:103D00006CC01092D90169C0813F29F48091D9011A +:103D10001816BCF362C09091D801823F29F497FF36 +:103D20005CC01092D80159C0833F19F41916CCF326 +:103D300054C0893F41F48091DA0118160CF04DC04F +:103D40001092DA014AC08A3F29F48091DA0187FF94 +:103D500044C0F6CF8B3F39F48091DB0187FF3DC033 +:103D60001092DB013AC08C3F29F48091DB011816D8 +:103D7000BCF333C0843F21F48091D7018E7F17C0FC +:103D8000853F21F48091D7018D7F11C0863F21F4BA +:103D90008091D7018B7F0BC0873F21F48091D701A1 +:103DA000877F05C0883F31F48091D7018F7E809353 +:103DB000D70113C08D3F21F48091D5018E7F0BC0B8 +:103DC0008E3F21F48091D5018D7F05C08F3F29F46E +:103DD0008091D5018B7F8093D5018091D80181118D +:103DE0000EC08091D90181110AC08091DA01811140 +:103DF00006C08091DB01811102C01092D6010895A6 +:103E000087ED91E00E94110F0E94671B9093D401EF +:103E10008093D30108951F93CF93DF938091D301B3 +:103E20009091D4010E94731BAC019091D60199230B +:103E300021F02091140130E006C0209115018AE0A4 +:103E4000289F900111244217530708F486C08091DF +:103E5000D801C091D901D091DA011091DB01811113 +:103E600007C0C11176C0D11174C0111172C075C0E4 +:103E70009F3F19F09F5F9093D601181624F40E947B +:103E8000911D8093D8018091D80187FF05C00E94C1 +:103E9000911D81958093D8011C1624F40E94911DD8 +:103EA0008093D9018091D90187FF05C00E94911D9F +:103EB00081958093D9016091D801662339F1C09131 +:103EC000D901CC2319F1772767FD7095872F972F9C +:103ED0000E94802223E333E343E35FE30E94E42272 +:103EE0000E944D226093D8016C2F772767FD709553 +:103EF000872F972F0E94802223E333E343E35FE37E +:103F00000E94E4220E944D226093D9011D1624F4E0 +:103F10000E94DA1D8093DA018091DA0187FF05C0E3 +:103F20000E94DA1D81958093DA01111624F40E9413 +:103F3000DA1D8093DB018091DB0187FF05C00E94C1 +:103F4000DA1D81958093DB01DF91CF911F910C9455 +:103F5000001F9F3F09F08ECF96CFDF91CF911F9129 +:103F60000895E7EDF1E085E0DF011D928A95E9F71C +:103F70001092D6011092D5010895833081F128F472 +:103F8000813059F08230D1F00895853009F449C06C +:103F9000B8F1863009F456C0089580911501262F96 +:103FA00030E0280F311D2F3F310524F4680F609356 +:103FB000150108958FEF80931501089580911401E4 +:103FC000262F30E0280F311D2F3F310524F4680FD4 +:103FD0006093140108958FEF8093140108958091E8 +:103FE0001301262F30E0280F311D2F3F310524F417 +:103FF000680F6093130108958FEF80931301089564 +:1040000080911201262F30E0280F311D2F3F3105FE +:1040100024F4680F6093120108958FEF80931201CA +:10402000089580911101262F30E0280F311D2F3F78 +:10403000310524F4680F6093110108958FEF809388 +:104040001101089580911001262F30E0280F311DB5 +:104050002F3F310524F4680F6093100108958FEF0E +:10406000809310010895833011F128F4813049F0D4 +:10407000823091F00895853081F120F18630C1F1D0 +:10408000089580911501681720F4861B809315010F +:10409000089510921501089580911401681720F475 +:1040A000861B809314010895109214010895809145 +:1040B0001301681720F4861B809313010895109252 +:1040C0001301089580911201681720F4861B8093D4 +:1040D000120108951092120108958091110168173C +:1040E00020F4861B80931101089510921101089508 +:1040F00080911001681720F4861B809310010895A9 +:104100001092100108950F931F938D3109F46BC025 +:1041100008F03FC08E3009F47FC0C0F4873009F446 +:1041200069C068F4863009F0B1C08091CD01817F0B +:104130008E7F8093CD0181E08093DD01A8C088301F +:1041400009F4A2C08B3009F49FC0A0C0863109F4E5 +:104150009BC078F4803109F472C0813109F096C0B7 +:104160000E948A1490910D0181E0892780930D01AE +:104170008BC0893109F488C08B3109F087C08091E8 +:10418000CD0181FB222720F991E0922790FB81F954 +:104190004CC0853309F470C048F4873209F46CC010 +:1041A00008F459C0893209F467C070C0833438F408 +:1041B0008A3308F04EC0883309F466C067C0833480 +:1041C00009F45AC0883409F061C00E948A140FEFC4 +:1041D00013ED20E3015010402040E1F700C0000043 +:1041E0000E94C21B51C00E9407220E94FA0E0E9428 +:1041F000F3074AC09091CD01892F8095817080FB93 +:1042000090F929F0966098609093CD0140C0997F15 +:10421000977F9093CD0138C08091CD0182FB2227FA +:1042200020F991E0922790FB82F98093CD019923A8 +:1042300059F18091CD0181608093CD0125C080919D +:10424000CD0183FB222720F991E0922790FB83F98F +:10425000ECCF895301C08D5141E050E060E070E047 +:104260008A019B0104C0000F111F221F331F8A9572 +:10427000D2F7C901B80104C061E070E080E090E0CD +:104280000E9446180E948A1481E001C080E01F91BC +:104290000F91089580E0089580E00895CF93C82F8E +:1042A0008091DD01813079F018F08230E9F187C02A +:1042B000E0910E01F0910F018081813169F082322D +:1042C00009F07FC009C0E0910E01F0910F018081DB +:1042D000813111F0823261F48C2F0E944A218111C8 +:1042E00004C08C2F0E9483201DC081E090E01AC082 +:1042F0008C2F0E944C21811114C0C43179F048F4F4 +:10430000CB3079F0C03109F060C082E08093DD01EC +:1043100008C0C93219F0C83321F057C01092DD012E +:1043200054C081E0817053C0C93289F118F5C4319D +:1043300071F1A8F4C73009F046C08AE080931501F6 +:1043400094E19093140193E09093130180931201F0 +:1043500088E08093110188E28093100134C0CE512F +:10436000C63088F5EC2FF0E0E65DFE4F808180934B +:10437000DC0129C0CE34E9F020F4CB3421F56AE029 +:1043800013C0C13579F0C235F1F461E00DC0809100 +:10439000DC01882319F01092DC0115C081E08093C4 +:1043A000DD0115C061E006C08091DC010E94BD1FE7 +:1043B0000AC06AE08091DC010E94332004C01092A0 +:1043C000DD0180E004C081E002C080E0ABCFCF918E +:1043D0000895E1E8F0E080818860808380818160D9 +:1043E00080838FB7F89493E09093890090ED909339 +:1043F00088008FBF0895EFE6F0E0808182608083BF +:104400000895EFE6F0E080818D7F80830895EFE6E8 +:10441000F0E0908182E08927808308951F920F92B7 +:104420000FB60F9211242F933F934F935F936F9387 +:104430007F938F939F93AF93BF93EF93FF9380915D +:10444000DE019091DF0101969093DF018093DE0100 +:10445000811103C082E00E94F307E091DF01E6953D +:10446000E695F0E0E657FB4FE4918091DE018E1374 +:1044700003C080E00E94F307FF91EF91BF91AF91DD +:104480009F918F917F916F915F914F913F912F916C +:104490000F900FBE0F901F90189504D06894B11123 +:1044A0008DC0089570D088F09F5790F0B92F99274C +:1044B000B751A0F0D1F0660F771F881F991F1AF02F +:1044C000BA95C9F712C0B13081F077D0B1E0089544 +:1044D00074C0672F782F8827B85F39F0B93FCCF3C5 +:1044E000869577956795B395D9F73EF49095809525 +:1044F000709561957F4F8F4F9F4F0895E89409C045 +:1045000097FB3EF490958095709561957F4F8F4F06 +:104510009F4F9923A9F0F92F96E9BB279395F6951C +:10452000879577956795B795F111F8CFFAF4BB0F9A +:1045300011F460FF1BC06F5F7F4F8F4F9F4F16C0FE +:10454000882311F096E911C0772321F09EE8872F88 +:10455000762F05C0662371F096E8862F70E060E044 +:104560002AF09A95660F771F881FDAF7880F9695BD +:10457000879597F9089557FD9058440F551F59F0A6 +:104580005F3F71F04795880F97FB991F61F09F3F40 +:1045900079F087950895121613061406551FF2CF69 +:1045A0004695F1DF08C0161617061806991FF1CFB9 +:1045B00086957105610508940895E894BB276627E0 +:1045C0007727CB0197F908950BD078C069D028F0F0 +:1045D0006ED018F0952309F05AC05FC01124EECFB9 +:1045E000CADFA0F3959FD1F3950F50E0551F629F4E +:1045F000F001729FBB27F00DB11D639FAA27F00D3C +:10460000B11DAA1F649F6627B00DA11D661F829F62 +:104610002227B00DA11D621F739FB00DA11D621F47 +:10462000839FA00D611D221F749F3327A00D611D64 +:10463000231F849F600D211D822F762F6A2F112446 +:104640009F5750408AF0E1F088234AF0EE0FFF1F99 +:10465000BB1F661F771F881F91505040A9F79E3FD0 +:10466000510570F014C0AACF5F3FECF3983EDCF325 +:10467000869577956795B795F795E7959F5FC1F70D +:10468000FE2B880F911D9695879597F9089597F9B8 +:104690009F6780E870E060E008959FEF80EC0895E8 +:1046A00000240A9416161706180609060895002411 +:1046B0000A9412161306140605060895092E03948B +:1046C000000C11F4882352F0BB0F40F4BF2B11F4FF +:1046D00060FF04C06F5F7F4F8F4F9F4F089597FB20 +:1046E000072E16F4009407D077FD09D00E94892385 +:1046F00007FC05D03EF4909581959F4F08957095E5 +:1047000061957F4F0895EE0FFF1F0590F491E02D06 +:104710000994AA1BBB1B51E107C0AA1FBB1FA61708 +:10472000B70710F0A61BB70B881F991F5A95A9F75A +:1047300080959095BC01CD010895F999FECF92BD69 +:1047400081BDF89A992780B50895A8E1B0E042E0CC +:1047500050E00C94C523262FF999FECF92BD81BD60 +:10476000F89A019700B4021639F01FBA20BD0FB6AF +:10477000F894FA9AF99A0FBE08950196272F0E948D +:10478000AC230C94AB23DC01CB01FC01F999FECFE7 +:1047900006C0F2BDE1BDF89A319600B40D924150C9 +:0A47A0005040B8F70895F894FFCFD9 +:1047AA002002F507830860082C08F8070101BA01FE +:1047BA0028080A03140A3F4D36394B04FE03C8037E +:1047CA008F0322033B0354036D030102030405060E +:0447DA0007080900C3 +:00000001FF -- cgit v1.2.1 From 9b163d2feb332107794a0f6e3573afe92c40b7fe Mon Sep 17 00:00:00 2001 From: Nathan Sharfi Date: Sun, 1 May 2016 13:55:00 -0700 Subject: =?UTF-8?q?zweihander:=20Add=20=E2=8C=98`,=20=E2=8C=98=E2=87=A7`,?= =?UTF-8?q?=20=E2=8C=A5=E2=87=A5,=20=E2=8C=A5=E2=87=A7=E2=87=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- keyboard/ergodox_ez/keymaps/zweihander-osx/keymap.c | 14 +++++++------- keyboard/ergodox_ez/keymaps/zweihander-osx/readme.markdown | 5 +++++ .../ergodox_ez/keymaps/zweihander-osx/zweihander-osx.hex | 8 ++++---- 3 files changed, 16 insertions(+), 11 deletions(-) diff --git a/keyboard/ergodox_ez/keymaps/zweihander-osx/keymap.c b/keyboard/ergodox_ez/keymaps/zweihander-osx/keymap.c index cc94e13337..f53232c3cd 100644 --- a/keyboard/ergodox_ez/keymaps/zweihander-osx/keymap.c +++ b/keyboard/ergodox_ez/keymaps/zweihander-osx/keymap.c @@ -95,9 +95,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Keymap 2: Media keys * dim brighten * ,--------------------------------------------------. ,--------------------------------------------------. - * | | | | | | | F14 | | F15 | | | | | | Power | + * | | | | | | | F14 | | F15 | ⌘W | ⌘⇧` | ⌘` | ⌥⇧⇥ | ⌥⇥ | Power | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | | | | PgUp | | | | | | ⌘] | ⌥⌘↑ | ↑ | ⌥⌘↓ | | | + * | | | | PgUp | | | | | | ⌘] | ⌥⌘↑ | ↑ | ⌥⌘↓ | | | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| * | | | Home | PgDn | End | |------| |------| ⌘[ | ← | ↓ | → | | ⏯ | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| @@ -124,11 +124,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, // right hand - KC_F15 , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PWR, - KC_TRNS, LGUI(KC_RBRC), LGUI(LALT(KC_UP)), KC_UP , LGUI(LALT(KC_DOWN)), KC_TRNS, KC_TRNS, - LGUI(KC_LBRC), KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_MPLY, - KC_TRNS, LSFT(KC_SPC), KC_SPC , KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS, - KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, + KC_F15 , LGUI(KC_W), LGUI(LSFT(KC_GRV)), LGUI(KC_GRV), LALT(LSFT(KC_TAB)), LALT(KC_TAB), KC_PWR, + KC_TRNS, LGUI(KC_RBRC), LGUI(LALT(KC_UP)), KC_UP , LGUI(LALT(KC_DOWN)), KC_TRNS, KC_TRNS, + LGUI(KC_LBRC), KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_MPLY, + KC_TRNS, LSFT(KC_SPC), KC_SPC , KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS, + KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS diff --git a/keyboard/ergodox_ez/keymaps/zweihander-osx/readme.markdown b/keyboard/ergodox_ez/keymaps/zweihander-osx/readme.markdown index 8103c6b327..7bce7c6909 100644 --- a/keyboard/ergodox_ez/keymaps/zweihander-osx/readme.markdown +++ b/keyboard/ergodox_ez/keymaps/zweihander-osx/readme.markdown @@ -1,5 +1,7 @@ # The Zweihander Layout +NB: the backtick (\`) is special in Markdown. If I write ⌘\` in this readme, I mean “command-backtick”, not “command-backslash-backtick”. + This layout is tuned for people who… @@ -12,10 +14,13 @@ This layout doesn’t make any concessions for Windows use. While it should work I tend to have my mouse in my left hand, but I like to use my other hand to make things go faster. I’ve added a bunch of buttons to the media layer to speed up browsing in Safari and Finder: +- Close Window (⌘W) - Back (⌘[) - Forward (⌘]) - Open and Close Parent Folder (⌥⌘↓) - Go Up and Close Just-Left Folder (⌥⌘↑) +- Cycle through open windows in current application (⌘\` and ⌘⇧\`) +- Cycle through tabs in current window (⌥⇥ and ⌥⇧⇥) - Space (page down in browsers; Quick Look in the Finder) - Shift-Space (page up in web browsers) diff --git a/keyboard/ergodox_ez/keymaps/zweihander-osx/zweihander-osx.hex b/keyboard/ergodox_ez/keymaps/zweihander-osx/zweihander-osx.hex index 9b783c957c..3e313c3724 100644 --- a/keyboard/ergodox_ez/keymaps/zweihander-osx/zweihander-osx.hex +++ b/keyboard/ergodox_ez/keymaps/zweihander-osx/zweihander-osx.hex @@ -39,10 +39,10 @@ :1002600001000100010001004D000100010001003A :10027000010001000100010000000100690001000F :1002800000000100000001006A0001000000010000 -:1002900000000100010030082F082C0200000100BE -:1002A0000100520C50002C00A90001000100520076 -:1002B0005100AC00AA0001000100510C4F00AB003E -:1002C000A80001000100010001000100010001007F +:10029000000001001A0830082F082C02000001009D +:1002A000350A520C50002C00A900010035085200FC +:1002B0005100AC00AA0001002B06510C4F00AB000E +:1002C000A80001002B040100010001000100010051 :1002D000A5000100AE00010001000000160345006A :1002E000720067006F0044006F0078002000450036 :1002F0005A00000016034500720067006F004400BA -- cgit v1.2.1 From fe022a508fdd39696e3b2b188df27d60b32f0d63 Mon Sep 17 00:00:00 2001 From: Nathan Sharfi Date: Sun, 1 May 2016 15:12:38 -0700 Subject: =?UTF-8?q?zweihander:=20move=20dim/brighten=20to=201/2,=20add=20?= =?UTF-8?q?=E2=8C=98Q?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- keyboard/ergodox_ez/keymaps/zweihander-osx/keymap.c | 16 ++++++++-------- .../ergodox_ez/keymaps/zweihander-osx/zweihander-osx.hex | 6 +++--- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/keyboard/ergodox_ez/keymaps/zweihander-osx/keymap.c b/keyboard/ergodox_ez/keymaps/zweihander-osx/keymap.c index f53232c3cd..d019b731f2 100644 --- a/keyboard/ergodox_ez/keymaps/zweihander-osx/keymap.c +++ b/keyboard/ergodox_ez/keymaps/zweihander-osx/keymap.c @@ -93,9 +93,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_END , KC_TRNS, KC_TRNS ), /* Keymap 2: Media keys - * dim brighten + * * ,--------------------------------------------------. ,--------------------------------------------------. - * | | | | | | | F14 | | F15 | ⌘W | ⌘⇧` | ⌘` | ⌥⇧⇥ | ⌥⇥ | Power | + * | | F14 | F15 | | | | | | ⌘Q | ⌘W | ⌘⇧` | ⌘` | ⌥⇧⇥ | ⌥⇥ | Power | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| * | | | | PgUp | | | | | | ⌘] | ⌥⌘↑ | ↑ | ⌥⌘↓ | | | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| @@ -115,7 +115,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ // MEDIA AND MOUSE [MDIA] = KEYMAP( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F14, /* F14 dims screen, F15 brightens */ + KC_TRNS, KC_F14 , KC_F15 , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, /* F14 dims screen, F15 brightens */ KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, @@ -124,11 +124,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, // right hand - KC_F15 , LGUI(KC_W), LGUI(LSFT(KC_GRV)), LGUI(KC_GRV), LALT(LSFT(KC_TAB)), LALT(KC_TAB), KC_PWR, - KC_TRNS, LGUI(KC_RBRC), LGUI(LALT(KC_UP)), KC_UP , LGUI(LALT(KC_DOWN)), KC_TRNS, KC_TRNS, - LGUI(KC_LBRC), KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_MPLY, - KC_TRNS, LSFT(KC_SPC), KC_SPC , KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS, - KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, + LGUI(KC_Q), LGUI(KC_W), LGUI(LSFT(KC_GRV)), LGUI(KC_GRV), LALT(LSFT(KC_TAB)), LALT(KC_TAB), KC_PWR, + KC_TRNS, LGUI(KC_RBRC), LGUI(LALT(KC_UP)), KC_UP , LGUI(LALT(KC_DOWN)), KC_TRNS, KC_TRNS, + LGUI(KC_LBRC), KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_MPLY, + KC_TRNS, LSFT(KC_SPC), KC_SPC , KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS, + KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS diff --git a/keyboard/ergodox_ez/keymaps/zweihander-osx/zweihander-osx.hex b/keyboard/ergodox_ez/keymaps/zweihander-osx/zweihander-osx.hex index 3e313c3724..b76c3ec8e8 100644 --- a/keyboard/ergodox_ez/keymaps/zweihander-osx/zweihander-osx.hex +++ b/keyboard/ergodox_ez/keymaps/zweihander-osx/zweihander-osx.hex @@ -34,11 +34,11 @@ :100210004200260023002000500001004300250278 :100220002E022E004F004D00440045000100010049 :1002300001000000010001000100010001000000B8 -:1002400001000100010001000100010001000100A6 +:100240006900010001000100010001006A000100D5 :100250004A0001000100010001004B004E000100B6 :1002600001000100010001004D000100010001003A -:10027000010001000100010000000100690001000F -:1002800000000100000001006A0001000000010000 +:100270000100010001000100000001000100010077 +:10028000000001000000010014080100000001004E :10029000000001001A0830082F082C02000001009D :1002A000350A520C50002C00A900010035085200FC :1002B0005100AC00AA0001002B06510C4F00AB000E -- cgit v1.2.1 From 1076c2b1226ed049a364971bf8e1edcd9ed45f6d Mon Sep 17 00:00:00 2001 From: Nicholas Keene Date: Fri, 22 Apr 2016 22:33:13 -0500 Subject: The Ordinary Layout is the layout you are looking for. Come and see v3.14. --- keyboard/ergodox_ez/keymaps/ordinary/keymap.c | 641 +++--- .../ergodox_ez/keymaps/ordinary/ordinary-media.png | Bin 121014 -> 122650 bytes .../ergodox_ez/keymaps/ordinary/ordinary-media.txt | 4 +- .../keymaps/ordinary/ordinary-symbol.png | Bin 103401 -> 103944 bytes .../keymaps/ordinary/ordinary-symbol.txt | 6 +- keyboard/ergodox_ez/keymaps/ordinary/ordinary.hex | 2353 ++++++++++---------- keyboard/ergodox_ez/keymaps/ordinary/readme.md | 6 +- 7 files changed, 1469 insertions(+), 1541 deletions(-) diff --git a/keyboard/ergodox_ez/keymaps/ordinary/keymap.c b/keyboard/ergodox_ez/keymaps/ordinary/keymap.c index efd67addd5..871bda672c 100644 --- a/keyboard/ergodox_ez/keymaps/ordinary/keymap.c +++ b/keyboard/ergodox_ez/keymaps/ordinary/keymap.c @@ -4,33 +4,42 @@ #include "action_layer.h" #include "action_util.h" -#define BASE 0 // default layer -#define LOCK 1 // shift-lock layer -#define SYMB_SH 2 // symbols shift layer -#define SYMB_LK 3 // symbols lock layer -#define SYMB_UN 4 // symbols unlock layer -#define MDIA_SH 5 // media shift layer -#define MDIA_LK 6 // media lock layer -#define MDIA_UN 7 // media unlock layer -#define UNLOCK 8 // clear to base layer +#define BASE 0 // default layer +#define SYMB 1 // symbols layer +#define MDIA 2 // media layer +#define LOCK 3 // shift-lock layer + +#define LSymb 0 // left symbol-shift key +#define LMdia 1 // left media-shift key +#define LLock 2 // left shift-lock key +#define RSymb 3 // right symbol-shift key +#define RMdia 4 // right media-shift key +#define RLock 5 // right shift-lock key + +#define MUL 6 // mouse up left +#define MUR 7 // mouse up right +#define MDL 8 // mouse down left +#define MDR 9 // mouse down right /* - * The Ordinary Layout for the Ergodox EZ keyboard, v3.1 - * modifications from default by Nicholas Keene ergodoxez@nicholaskeene.com + * The Ordinary Layout for the Ergodox EZ keyboard, v3.14 + * + * Modifications from default by Nicholas Keene ergodoxez@nicholaskeene.com + * * Details: readme.md * https://github.com/nrrkeene/qmk_firmware/tree/master/keyboard/ergodox_ez/keymaps/ordinary */ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -/* Keymap 0: Base Layer +/******* Base Layer ******************************************************************************************************** * * ,-----------------------------------------------------. ,-----------------------------------------------------. - * | LOCK `~ | 1 | 2 | 3 | 4 | 5 | ESC | | - | 6 | 7 | 8 | 9 | 0 | = LOCK | + * | Lock `~ | 1 | 2 | 3 | 4 | 5 | ESC | | - | 6 | 7 | 8 | 9 | 0 | =+ Lock | * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------| - * | Media Tab | Q | W | E | R | T | [ | | ] | Y | U | I | O | P | \ Media | + * | Media Tab | Q | W | E | R | T | [ | | ] | Y | U | I | O | P | \| Media | * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------| - * | Symbol | A | S | D | F | G |------| |------| H | J | K | L | ; | ' Symbol | + * | Symbol | A | S | D | F | G |------| |------| H | J | K | L | ; | '" Symbol | * |-----------+------+------+------+------+------|Shift | | Tab |------+------+------+------+------+-----------| * | LShift | Z | X | C | V | B | -Tab | | | N | M | , | . | / | RShift | * `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------' @@ -46,128 +55,38 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [BASE] = KEYMAP( // left hand - LT(LOCK, KC_GRV) ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 ,KC_ESC -,LT(MDIA_SH, KC_TAB),KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,KC_LBRC -,MO(SYMB_SH) ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G -,KC_LSFT ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,LSFT(KC_TAB) -,KC_LCTL ,MEH_T(KC_NO),ALL_T(KC_NO),KC_LALT,KC_LGUI - - ,KC_HOME,KC_END - ,KC_PGUP - ,KC_BSPC,KC_DEL ,KC_PGDN - - // right hand - ,KC_MINS ,KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,LT(LOCK, KC_EQL) - ,KC_RBRC ,KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,LT(MDIA_SH, KC_BSLS) - ,KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN ,LT(SYMB_SH, KC_QUOT) - ,KC_TAB ,KC_N ,KC_M ,KC_COMM,KC_DOT ,KC_SLSH ,KC_RSFT - ,KC_RGUI,KC_RALT,ALL_T(KC_NO),MEH_T(KC_NO),KC_RCTL - - ,KC_LEFT ,KC_RGHT - ,KC_UP - ,KC_DOWN ,KC_ENT ,KC_SPC + F(LLock) ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 ,KC_ESC +,F(LMdia) ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,KC_LBRC +,M(LSymb) ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G +,KC_LSFT ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,LSFT(KC_TAB) +,KC_LCTL ,KC_MEH ,KC_HYPR,KC_LALT,KC_LGUI + ,KC_HOME,KC_END + ,KC_PGUP + ,KC_BSPC,KC_DEL ,KC_PGDN + // right hand + ,KC_MINS ,KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,F(RLock) + ,KC_RBRC ,KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,F(RMdia) + ,KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN ,F(RSymb) + ,KC_TAB ,KC_N ,KC_M ,KC_COMM,KC_DOT ,KC_SLSH ,KC_RSFT + ,KC_RGUI,KC_RALT,KC_HYPR ,KC_MEH ,KC_RCTL + ,KC_LEFT ,KC_RGHT + ,KC_UP + ,KC_DOWN ,KC_ENT ,KC_SPC ), -/* Keymap 1: Layer Lock Keys - * - * ,-------------------------------------------------------. ,-------------------------------------------------------. - * | | Esc | | | | | | | | | | | | Bspc | | - * |-------------+------+------+------+------+-------------| |------+------+------+------+------+------+-------------| - * | Media LOCK | | | | | | | | | | | | | | Media LOCK | - * |-------------+------+------+------+------+------| | | |------+------+------+------+------+-------------| - * | Symbol LOCK | | | | | |------| |------| | | | | | Symbol LOCK | - * |-------------+------+------+------+------+------| | | |------+------+------+------+------+-------------| - * | Caps LOCK | | | | | | | | | | | | | | Caps LOCK | - * `-------------+------+------+------+------+-------------' `-------------+------+------+------+------+-------------' - * | | | | | | | | | | | | - * `------------------------------------' `------------------------------------' - * ,-------------. ,-------------. - * | | | | | | - * ,------|------|------| |------+------+------. - * | | | | | | | | - * | | |------| |------| | | - * | | | | | | | | - * `--------------------' `--------------------' - */ -[LOCK] = KEYMAP( -// left hand - KC_TRNS ,KC_ESC ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS -,KC_FN3 ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS -,KC_FN2 ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS -,KC_CAPS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS -,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS - - ,KC_TRNS ,KC_TRNS - ,KC_TRNS - ,KC_TRNS,KC_TRNS ,KC_TRNS - - // right hand - ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_BSPC ,KC_TRNS - ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_FN3 - ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_FN2 - ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_CAPS - ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS - - ,KC_TRNS ,KC_TRNS - ,KC_TRNS - ,KC_TRNS ,KC_TRNS ,KC_TRNS - ), - -/* Keymap 2: Symbol Shift Layer +/******* Symbols Layer ***************************************************************************************************** * * ,-----------------------------------------------------. ,-----------------------------------------------------. - * | LOCK | F1 | F2 | F3 | F4 | F5 | | | - | F6 | F7 | F8 | F9 | F10 | LOCK | + * | | F1 | F2 | F3 | F4 | F5 | Esc | | - | F6 | F7 | F8 | F9 | F10 | | * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------| - * | Media | ! | @ | { | } | & | < | | > | | | 7 | 8 | 9 | / | Media | + * | | ! | @ | { | } | & | < | | > | | | 7 | 8 | 9 | / | | * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------| - * | Symbol | # | $ | ( | ) | ` |------| |------| / | 4 | 5 | 6 | * | Symbol | + * | | # | $ | ( | ) | ` |------| |------| / | 4 | 5 | 6 | * | | * |-----------+------+------+------+------+------| Tab | | Shift|------+------+------+------+------+-----------| - * | LShift | % | ^ | [ | ] | ~ | | | -Tab| \ | 1 | 2 | 3 | - | RShift | - * `-----------+------+------+------+------+-------------' `------------+------+------+------+------+------------' - * | | | | | | | 0 | . | = | + | Entr | - * `----------------------------------' `----------------------------------' - * ,-------------. ,-------------. - * | Left | Right| | Home | End | - * ,------|------|------| |------+------+------. - * | | | Up | | PgUp | | | - * |Space |Enter |------| |------|BackSp| Del | - * | | | Down | | PgDn | | | - * `--------------------' `--------------------' - */ -[SYMB_SH] = KEYMAP( -// left hand - KC_FN2 ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_TRNS -,MO(MDIA_SH) ,KC_EXLM ,KC_AT ,KC_LCBR ,KC_RCBR ,KC_AMPR ,LSFT(KC_COMM) -,MO(SYMB_SH) ,KC_HASH ,KC_DLR ,KC_LPRN ,KC_RPRN ,KC_GRV -,KC_LSFT ,KC_PERC ,KC_CIRC ,KC_LBRC ,KC_RBRC ,KC_TILD ,KC_TAB -,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS - ,KC_LEFT ,KC_RGHT - ,KC_UP - ,KC_SPC ,KC_ENT ,KC_DOWN - // right hand - ,KC_MINS ,KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_FN2 - ,LSFT(KC_DOT),KC_PIPE ,KC_7 ,KC_8 ,KC_9 ,KC_SLSH ,MO(MDIA_SH) - ,KC_SLSH ,KC_4 ,KC_5 ,KC_6 ,KC_ASTR ,MO(SYMB_SH) - ,LSFT(KC_TAB),KC_BSLS ,KC_1 ,KC_2 ,KC_3 ,KC_MINS ,KC_RSFT - ,GUI_T(KC_0),ALT_T(KC_DOT),ALL_T(KC_EQL),MEH_T(KC_PLUS),CTL_T(KC_ENT) - ,KC_HOME ,KC_END - ,KC_PGUP - ,KC_PGDN ,KC_BSPC ,KC_DEL -), - -/* Keymap 3: Symbol Lock Layer - * - * ,-----------------------------------------------------. ,-----------------------------------------------------. - * | LOCK | F1 | F2 | F3 | F4 | F5 | | | - | F6 | F7 | F8 | F9 | F10 | LOCK | - * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------| - * | Media | ! | @ | { | } | & | < | | > | | | 7 | 8 | 9 | / | Media | - * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------| - * | Symbol | # | $ | ( | ) | ` |------| |------| / | 4 | 5 | 6 | * | Symbol | - * |-----------+------+------+------+------+------| Tab | | Shift|------+------+------+------+------+-----------| - * | LShift | % | ^ | [ | ] | ~ | | | -Tab| \ | 1 | 2 | 3 | - | RShift | - * `-----------+------+------+------+------+-------------' `------------+------+------+------+------+------------' - * | | | | | | | 0 | . | = | + | Entr | - * `----------------------------------' `----------------------------------' + * | | % | ^ | [ | ] | ~ | | | -Tab| \ | 1 | 2 | 3 | - | | + * `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------' + * | LCtrl | Meh |Hyper | LAlt | LGui | |RGui/0|RAlt/.|Hypr/=|Meh/+ |RCtrl/Ent| + * `-----------------------------------' `-------------------------------------' * ,-------------. ,-------------. * | Left | Right| | Home | End | * ,------|------|------| |------+------+------. @@ -176,159 +95,75 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | Down | | PgDn | | | * `--------------------' `--------------------' */ -[SYMB_LK] = KEYMAP( -// left hand - MO(SYMB_UN) ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_TRNS -,MO(MDIA_SH) ,KC_EXLM ,KC_AT ,KC_LCBR ,KC_RCBR ,KC_AMPR ,LSFT(KC_COMM) -,MO(UNLOCK) ,KC_HASH ,KC_DLR ,KC_LPRN ,KC_RPRN ,KC_GRV -,KC_LSFT ,KC_PERC ,KC_CIRC ,KC_LBRC ,KC_RBRC ,KC_TILD ,KC_TAB -,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS - ,KC_LEFT ,KC_RGHT - ,KC_UP - ,KC_SPC ,KC_ENT ,KC_DOWN - // right hand - ,KC_MINS ,KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,MO(SYMB_UN) - ,LSFT(KC_DOT),KC_PIPE ,KC_7 ,KC_8 ,KC_9 ,KC_SLSH ,MO(MDIA_SH) - ,KC_SLSH ,KC_4 ,KC_5 ,KC_6 ,KC_ASTR ,MO(UNLOCK) - ,LSFT(KC_TAB),KC_BSLS ,KC_1 ,KC_2 ,KC_3 ,KC_MINS ,KC_RSFT - ,GUI_T(KC_0),ALT_T(KC_DOT),ALL_T(KC_EQL),MEH_T(KC_PLUS),CTL_T(KC_ENT) - ,KC_HOME ,KC_END - ,KC_PGUP - ,KC_PGDN ,KC_BSPC ,KC_DEL - ), - -/* Keymap 4: Symbol Unlock Layer - * - * ,------------------------------------------------------. ,------------------------------------------------------. - * | | Esc | | | | | | | | | | | | Bspc | | - * |------------+------+------+------+------+-------------| |------+------+------+------+------+------+------------| - * | Media LOCK | | | | | | | | | | | | | | Media LOCK | - * |------------+------+------+------+------+------| | | |------+------+------+------+------+------------| - * | UNLOCK | | | | | |------| |------| | | | | | UNLOCK | - * |------------+------+------+------+------+------| | | |------+------+------+------+------+------------| - * | Caps LOCK | | | | | | | | | | | | | | Caps LOCK | - * `------------+------+------+------+------+-------------' `-------------+------+------+------+------+------------' - * | | | | | | | | | | | | - * `----------------------------------' `----------------------------------' - * ,-------------. ,-------------. - * | | | | | | - * ,------|------|------| |------+------+------. - * | | | | | | | | - * | | |------| |------| | | - * | | | | | | | | - * `--------------------' `--------------------' - */ -[SYMB_UN] = KEYMAP( +[SYMB] = KEYMAP( // left hand - KC_TRNS ,KC_ESC ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS -,TG(MDIA_LK) ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS -,KC_FN1 ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS -,KC_CAPS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS -,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS - ,KC_TRNS ,KC_TRNS - ,KC_TRNS - ,KC_TRNS,KC_TRNS ,KC_TRNS + KC_TRNS ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_ESC +,KC_TRNS ,KC_EXLM ,KC_AT ,KC_LCBR ,KC_RCBR ,KC_AMPR ,LSFT(KC_COMM) +,KC_TRNS ,KC_HASH ,KC_DLR ,KC_LPRN ,KC_RPRN ,KC_GRV +,KC_TRNS ,KC_PERC ,KC_CIRC ,KC_LBRC ,KC_RBRC ,KC_TILD ,KC_TAB +,KC_LCTL ,KC_MEH ,KC_HYPR,KC_LALT ,KC_LGUI + ,KC_LEFT ,KC_RGHT + ,KC_UP + ,KC_SPC ,KC_ENT ,KC_DOWN // right hand - ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_BSPC ,KC_TRNS - ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,TG(MDIA_LK) - ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_FN1 - ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_CAPS - ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS - ,KC_TRNS ,KC_TRNS - ,KC_TRNS - ,KC_TRNS ,KC_TRNS ,KC_TRNS + ,KC_MINS ,KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_TRNS + ,LSFT(KC_DOT),KC_PIPE ,KC_7 ,KC_8 ,KC_9 ,KC_SLSH ,KC_TRNS + ,KC_SLSH ,KC_4 ,KC_5 ,KC_6 ,KC_ASTR ,KC_TRNS + ,LSFT(KC_TAB),KC_BSLS ,KC_1 ,KC_2 ,KC_3 ,KC_MINS ,KC_TRNS + ,GUI_T(KC_0),ALT_T(KC_DOT),ALL_T(KC_EQL),MEH_T(KC_PLUS),CTL_T(KC_ENT) + ,KC_HOME ,KC_END + ,KC_PGUP + ,KC_PGDN ,KC_BSPC ,KC_DEL ), -/* Keymap 5: Media Shift Layer +/******* Media Layer ******************************************************************************************************* * - * ,-----------------------------------------------------. ,-----------------------------------------------------. - * | LOCK | F11 | F12 | F13 | F14 | F15 | | | | F16 | F17 | F18 | F19 | F20 | LOCK | - * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------| - * | Media |ShutDn|LClick| MsUp |RClick|Vol Up|ScrlUp| |ScrlUp|PrtScr| Home | Up | PgUp | Mail | Media | - * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------| - * | Symbol | Sleep|MsLeft|MsDown|MsRght|Vol Dn|------| |------|NumLok| Left | Down | Right|MyComp| Symbol | - * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------| - * | LShift | | |MsDown| | Mute |ScrlDn| |ScrlDn| | End | Down | PgDn | | RShift | - * `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------' - * | LCtrl| Meh |Hyper | LAlt | LGui | |Insert|Delete| Hyper| LAlt | LGui | - * `----------------------------------' `----------------------------------' - * ,-------------. ,-------------. - * | Stop |Refrsh| | Prev | Next | - * ,------|------|------| |------+------+------. - * |Brwser|Brwser|Search| |VolUp | | | - * |Back | Fwd |------| |------| Stop | Play-| - * | | | Home | |VolDn | | Pause| - * `--------------------' `--------------------' + * ,---------------------------------------------------------------. ,---------------------------------------------------------------. + * | | F11 | F12 | F13 | F14 | F15 | Esc | | | F16 | F17 | F18 | F19 | F20 | | + * |------+---------+---------+---------+---------+----------------| |------+---------+---------+---------+---------+---------+------| + * | |Shut Down|MouseUpLf|Mouse Up |MouseUpRg|Volume Up|Scroll| |Scroll|PrintScrn| Home | Up | PgUp | Mail | | + * |------+---------+---------+---------+---------+---------| Up | | Up |---------+---------+---------+---------+---------+------| + * | | Sleep |MouseLeft|MouseDown|MouseRght|Volume Dn|------| |------| Num Lock| Left | Down | Right | MyComp | | + * |------+---------+---------+---------+---------+---------|Scroll| |Scroll|---------+---------+---------+---------+---------+------| + * | | |MouseDnLf|MouseDown|MouseDnRg| Mute | Down | | Down | | End | Down | PgDn | | | + * `------+---------+---------+---------+---------+----------------' `----------------+---------+---------+---------+---------+------' + * |LCtrl| Meh | MClick | LClick | R Click| |Cmd/Insrt|Optn/Del | Hyper | Meh |RCtrl| + * `---------------------------------------------' `---------------------------------------------' + * ,-------------. ,-------------. + * | Stop |Refrsh| | Prev | Next | + * ,------|------|------| |------+------+------. + * |Brwser|Brwser|Search| |VolUp | | | + * |Back | Fwd |------| |------| Stop | Play-| + * | | | Home | |VolDn | | Pause| + * `--------------------' `--------------------' */ -[MDIA_SH] = KEYMAP( +[MDIA] = KEYMAP( // left hand - KC_FN3 ,KC_F11 ,KC_F12 ,KC_F13 ,KC_F14 ,KC_F15 ,KC_NO -,MO(MDIA_SH) ,KC_POWER ,KC_BTN1 ,KC_MS_U ,KC_BTN2 ,KC_VOLU ,KC_WH_U -,MO(SYMB_SH) ,KC_SLEP ,KC_MS_L ,KC_MS_D ,KC_MS_R ,KC_VOLD -,KC_LSFT ,KC_NO ,KC_NO ,KC_MS_D ,KC_NO ,KC_MUTE ,KC_WH_D -,KC_LCTL ,MEH_T(KC_NO),ALL_T(KC_NO),KC_LALT,KC_LGUI - ,KC_WSTP ,KC_WREF - ,KC_WSCH - ,KC_WBAK ,KC_NO ,KC_WHOM + KC_TRNS ,KC_F11 ,KC_F12 ,KC_F13 ,KC_F14 ,KC_F15 ,KC_ESC +,KC_TRNS ,KC_POWER ,M(MUL) ,KC_MS_U ,M(MUR) ,KC_VOLU ,KC_WH_U +,KC_TRNS ,KC_SLEP ,KC_MS_L ,KC_MS_D ,KC_MS_R ,KC_VOLD +,KC_TRNS ,KC_NO ,M(MDL) ,KC_MS_D ,M(MDR) ,KC_MUTE ,KC_WH_D +,KC_LCTL ,KC_MEH ,KC_BTN3 ,KC_BTN1 ,KC_BTN2 + ,KC_WSTP ,KC_WREF + ,KC_WSCH + ,KC_WBAK ,KC_NO ,KC_WHOM // right hand - ,KC_NO ,KC_F16 ,KC_F17 ,KC_F18 ,KC_F19 ,KC_F20 ,KC_FN3 - ,KC_WH_U ,KC_PSCR ,KC_HOME,KC_UP ,KC_PGUP ,KC_MAIL ,MO(MDIA_SH) - ,KC_NLCK ,KC_LEFT,KC_DOWN ,KC_RIGHT,KC_MYCM ,MO(SYMB_SH) - ,KC_WH_D ,KC_NO ,KC_END ,KC_DOWN ,KC_PGDN ,KC_NO ,KC_RSFT - ,GUI_T(KC_INS),ALT_T(KC_DEL),ALL_T(KC_NO),MEH_T(KC_NO),KC_RCTL + ,KC_NO ,KC_F16 ,KC_F17 ,KC_F18 ,KC_F19 ,KC_F20 ,KC_TRNS + ,KC_WH_U ,KC_PSCR ,KC_HOME ,KC_UP ,KC_PGUP ,KC_MAIL ,KC_TRNS + ,KC_NLCK ,KC_LEFT ,KC_DOWN ,KC_RIGHT,KC_MYCM ,KC_TRNS + ,KC_WH_D ,KC_NO ,KC_END ,KC_DOWN ,KC_PGDN ,KC_NO ,KC_TRNS + ,GUI_T(KC_INS),ALT_T(KC_DEL),KC_HYPR ,KC_MEH ,KC_RCTL ,KC_MPRV ,KC_MNXT ,KC_VOLU ,KC_VOLD ,KC_MSTP ,KC_MPLY ), -/* Keymap 6: Media Lock Layer +/******* Lock Layer ******************************************************************************************************** * * ,-----------------------------------------------------. ,-----------------------------------------------------. - * | LOCK | F11 | F12 | F13 | F14 | F15 | | | | F16 | F17 | F18 | F19 | F20 | LOCK | + * | | Esc | | | | | | | | | | | | Bspc | | * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------| - * | Media |ShutDn|LClick| MsUp |RClick|Vol Up|ScrlUp| |ScrlUp|PrtScr| Home | Up | PgUp | Mail | Media | - * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------| - * | | Sleep|MsLeft|MsDown|MsRght|Vol Dn|------| |------|NumLok| Left | Down | Right|MyComp| | - * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------| - * | LShift | | |MsDown| | Mute |ScrlDn| |ScrlDn| | End | Down | PgDn | | RShift | - * `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------' - * | LCtrl| Meh |Hyper | LAlt | LGui | |Insert|Delete| Hyper| LAlt | LGui | - * `----------------------------------' `----------------------------------' - * ,-------------. ,-------------. - * | Stop |Refrsh| | Prev | Next | - * ,------|------|------| |------+------+------. - * |Brwser|Brwser|Search| |VolUp | | | - * |Back | Fwd |------| |------| Stop | Play-| - * | | | Home | |VolDn | | Pause| - * `--------------------' `--------------------' - */ -[MDIA_LK] = KEYMAP( -// left hand - MO(MDIA_UN),KC_F11 ,KC_F12 ,KC_F13 ,KC_F14 ,KC_F15 ,KC_NO -,MO(UNLOCK) ,KC_POWER ,KC_BTN1 ,KC_MS_U ,KC_BTN2 ,KC_VOLU ,KC_WH_U -,KC_NO ,KC_SLEP ,KC_MS_L ,KC_MS_D ,KC_MS_R ,KC_VOLD -,KC_LSFT ,KC_NO ,KC_NO ,KC_MS_D ,KC_NO ,KC_MUTE ,KC_WH_D -,KC_LCTL ,MEH_T(KC_NO),ALL_T(KC_NO),KC_LALT,KC_LGUI - ,KC_WSTP ,KC_WREF - ,KC_WSCH - ,KC_WBAK ,KC_NO ,KC_WHOM - // right hand - ,KC_NO ,KC_F16 ,KC_F17 ,KC_F18 ,KC_F19 ,KC_F20 ,MO(MDIA_UN) - ,KC_WH_U ,KC_PSCR ,KC_HOME,KC_UP ,KC_PGUP ,KC_MAIL ,MO(UNLOCK) - ,KC_NLCK ,KC_LEFT,KC_DOWN ,KC_RIGHT,KC_MYCM ,KC_NO - ,KC_WH_D ,KC_NO ,KC_END ,KC_DOWN ,KC_PGDN ,KC_NO ,KC_RSFT - ,GUI_T(KC_INS),ALT_T(KC_DEL),ALL_T(KC_NO),MEH_T(KC_NO),KC_RCTL - ,KC_MPRV ,KC_MNXT - ,KC_VOLU - ,KC_VOLD ,KC_MSTP ,KC_MPLY - ), - -/* Keymap 7: Media Unlock Layer - * - * ,-----------------------------------------------------. ,-----------------------------------------------------. - * | | Esc | | | | | | | | | | | | Bspc | | - * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------| - * | UNLOCK | | | | | | | | | | | | | | UNLOCK | + * | | | | | | | | | | | | | | | | * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------| * | | | | | | |------| |------| | | | | | | * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------| @@ -344,94 +179,215 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | * `--------------------' `--------------------' */ -[MDIA_UN] = KEYMAP( +[LOCK] = KEYMAP( // left hand KC_TRNS ,KC_ESC ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS -,KC_FN1 ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS +,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_CAPS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS - ,KC_TRNS ,KC_TRNS ,KC_TRNS - - // right hand - ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_BSPC ,KC_TRNS - ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_FN1 - ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS - ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_CAPS - ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS - - ,KC_TRNS ,KC_TRNS - ,KC_TRNS - ,KC_TRNS ,KC_TRNS ,KC_TRNS - ), - -/* Keymap 8: Unlock Layer - * - * ,-----------------------------------------------------. ,-----------------------------------------------------. - * | UNLOCK | | | | | | | | | | | | | | UNLOCK | - * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------| - * | | | | | | | | | | | | | | | | - * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------| - * | | | | | | |------| |------| | | | | | | - * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------| - * | | | | | | | | | | | | | | | | - * `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------' - * | | | | | | | | | | | | - * `----------------------------------' `----------------------------------' - * ,-------------. ,-------------. - * | | | | | | - * ,------|------|------| |------+------+------. - * | | | | | | | | - * | | |------| |------| | | - * | | | | | | | | - * `--------------------' `--------------------' - */ -[UNLOCK] = KEYMAP( -// left hand - KC_FN1 ,KC_ESC ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS -,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS -,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS -,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS -,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS + ,KC_TRNS,KC_TRNS ,KC_TRNS + // right hand + ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_BSPC ,KC_TRNS + ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS + ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS + ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_CAPS + ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS - ,KC_TRNS ,KC_TRNS - ,KC_TRNS - ,KC_TRNS ,KC_TRNS ,KC_TRNS - - // right hand - ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_FN1 - ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS - ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS - ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS - ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS - - ,KC_TRNS ,KC_TRNS - ,KC_TRNS - ,KC_TRNS ,KC_TRNS ,KC_TRNS + ,KC_TRNS ,KC_TRNS + ,KC_TRNS + ,KC_TRNS ,KC_TRNS ,KC_TRNS ) }; const uint16_t PROGMEM fn_actions[] = { - [1] = ACTION_LAYER_CLEAR(ON_PRESS) // FN1 - clear to base layer - ,[2] = ACTION_LAYER_INVERT(SYMB_LK, ON_PRESS) // FN2 - toggle to Symbols on press - ,[3] = ACTION_LAYER_INVERT(MDIA_LK, ON_PRESS) // FN3 - toggle to Media on press + // the six faux shift keys are implemented as macro taps + [LSymb] = ACTION_MACRO_TAP(LSymb) + ,[LMdia] = ACTION_MACRO_TAP(LMdia) + ,[LLock] = ACTION_MACRO_TAP(LLock) + ,[RSymb] = ACTION_MACRO_TAP(RSymb) + ,[RMdia] = ACTION_MACRO_TAP(RMdia) + ,[RLock] = ACTION_MACRO_TAP(RLock) }; +uint16_t symb_shift = 0; // there are two shift keys for each layer, and two lock +uint16_t mdia_shift = 0; // keys; we increment a counter for each key pressed and +uint16_t shift_lock = 0; // decrement when released. + +bool symb_lock = false; // when shift-lock is used in conjunction with a shift +bool mdia_lock = false; // key the lock flag is toggled + const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { - // MACRODOWN only works in this function - switch(id) { - case 0: + switch(id) { + // shift and lock between layers + + case LSymb: + if (record->event.pressed) { + symb_shift++; + if(shift_lock) symb_lock = !symb_lock; + layer_on(SYMB); + } else { + symb_shift--; + if((!symb_shift) && (!symb_lock)) layer_off(SYMB); + } + break; + + case LMdia: if (record->event.pressed) { - register_code(KC_RSFT); + if (record->tap.count && !shift_lock) { + register_code(KC_TAB); + } else { + mdia_shift++; + if(shift_lock) mdia_lock = !mdia_lock; + layer_on(MDIA); + } } else { - unregister_code(KC_RSFT); + if(record->tap.count && !shift_lock) { + unregister_code(KC_TAB); + } else { + mdia_shift--; + if((!mdia_shift) && (!mdia_lock)) layer_off(MDIA); + } + } + break; + + case LLock: + if (record->event.pressed) { + shift_lock++; + if(symb_shift) symb_lock = !symb_lock; + if(mdia_shift) mdia_lock = !mdia_lock; + if(!record->tap.count && (keyboard_report->mods & (MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT)))) { + register_code(KC_CAPS); + unregister_code(KC_CAPS); + } + layer_on(LOCK); + } else { + if(record->tap.count && !record->tap.interrupted && !symb_shift && !mdia_shift) { + register_code(KC_GRV); + unregister_code(KC_GRV); + } + shift_lock--; + if(!shift_lock) layer_off(LOCK); } break; - } + + case RSymb: + if (record->event.pressed) { + if (record->tap.count && !shift_lock) { + register_code(KC_QUOT); + } else { + symb_shift++; + if(shift_lock) symb_lock = !symb_lock; + layer_on(SYMB); + } + } else { + if(record->tap.count && !shift_lock) { + unregister_code(KC_QUOT); + } else { + symb_shift--; + if((!symb_shift) && (!symb_lock)) layer_off(SYMB); + } + } + break; + + case RMdia: + if (record->event.pressed) { + if (record->tap.count && !shift_lock) { + register_code(KC_BSLS); + } else { + mdia_shift++; + if(shift_lock) mdia_lock = !mdia_lock; + layer_on(MDIA); + } + } else { + if(record->tap.count && !shift_lock) { + unregister_code(KC_BSLS); + } else { + mdia_shift--; + if((!mdia_shift) && (!mdia_lock)) layer_off(MDIA); + } + } + break; + + case RLock: + if (record->event.pressed) { + shift_lock++; + if(symb_shift) symb_lock = !symb_lock; + if(mdia_shift) mdia_lock = !mdia_lock; + if(!record->tap.count && (keyboard_report->mods & (MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT)))) { + register_code(KC_CAPS); + unregister_code(KC_CAPS); + } + layer_on(LOCK); + } else { + if (record->tap.count && !record->tap.interrupted && !symb_shift && !mdia_shift) { + register_code(KC_EQL); + unregister_code(KC_EQL); + } + shift_lock--; + if(!shift_lock) layer_off(LOCK); + } + break; + + // mouse diagonals + + case MUL: // mouse up left + if (record->event.pressed) { + mousekey_on(KC_MS_UP); + mousekey_on(KC_MS_LEFT); + mousekey_send(); + } else { + mousekey_off(KC_MS_UP); + mousekey_off(KC_MS_LEFT); + mousekey_send(); + } + break; + + case MUR: // mouse up right + if (record->event.pressed) { + mousekey_on(KC_MS_UP); + mousekey_on(KC_MS_RIGHT); + mousekey_send(); + } else { + mousekey_off(KC_MS_UP); + mousekey_off(KC_MS_RIGHT); + mousekey_send(); + } + break; + + case MDL: // mouse down left + if (record->event.pressed) { + mousekey_on(KC_MS_DOWN); + mousekey_on(KC_MS_LEFT); + mousekey_send(); + } else { + mousekey_off(KC_MS_DOWN); + mousekey_off(KC_MS_LEFT); + mousekey_send(); + } + break; + + case MDR: // mouse down right + if (record->event.pressed) { + mousekey_on(KC_MS_DOWN); + mousekey_on(KC_MS_RIGHT); + mousekey_send(); + } else { + mousekey_off(KC_MS_DOWN); + mousekey_off(KC_MS_RIGHT); + mousekey_send(); + } + break; + + default: + // none + break; + } + return MACRO_NONE; }; @@ -442,8 +398,6 @@ void matrix_init_user(void) { // Runs constantly in the background, in a loop. void matrix_scan_user(void) { - uint8_t layer = biton32(layer_state); - // shift or caps lock turns on red light if((keyboard_report->mods & (MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT))) || (host_keyboard_leds() & (1<\n\n\nDelete"], -[{x:-3,f:3},"Page\n\n\n\n\n\nDown"] +[{x:-3},"Page\n\n\n\n\n\nUp",{f:3,h:2},"< Del\n\n\nBackspace",{f:3,h:2},"Del >\n\n\nDelete"], +[{x:-3},"Page\n\n\n\n\n\nDown"] diff --git a/keyboard/ergodox_ez/keymaps/ordinary/ordinary.hex b/keyboard/ergodox_ez/keymaps/ordinary/ordinary.hex index 8e2d5ce26d..83c443570b 100644 --- a/keyboard/ergodox_ez/keymaps/ordinary/ordinary.hex +++ b/keyboard/ergodox_ez/keymaps/ordinary/ordinary.hex @@ -1,1190 +1,1169 @@ -:100000000C945F040C94A3040C94A3040C94A30418 -:100010000C94A3040C94A3040C94A3040C94A304C4 -:100020000C94A3040C94A3040C94C40D0C94960E8D -:100030000C94A3040C94A3040C94A3040C94A304A4 -:100040000C94A3040C9441230C94A3040C94A304D7 -:100050000C94A3040C94E31C0C94A3040C94A3042C -:100060000C94A3040C94A3040C94A3040C94A30474 -:100070000C94A3040C94A3040C94A3040C94A30464 -:100080000C94A3040C94A3040C94A3040C94A30454 -:100090000C94A3040C94A3040C94A3040C94A30444 -:1000A0000C94A3040C94A3040C94A304FB0E1D0F46 -:1000B00008101D0F08105F0F820F0810D70FEA0FEE -:1000C000DE12DE120C130C134E138A138A158A15D6 -:1000D000A2138A159914991464158A158A1578152E -:1000E000000000810889248935812B850252E100B6 -:1000F000E00000001E00140004001D0000774E0008 -:100100001F001A0016001B00007F4C002000080092 -:1001100007000600E2002A0021001500090019006E -:10012000E3004B00220017000A00050000004A000F -:1001300029002F0000002B0200004D002D00300090 -:1001400000002B000000500023001C000B001100D9 -:1001500000004F00240018000D001000E7005200BE -:1001600025000C000E003600E6002C0026001200D0 -:100170000F003700007F28002700130033003800ED -:10018000007751002E8131853482E500E4000000C3 -:100190000100C300C2003900010000002900010075 -:1001A0000100010001000100010001000100010047 -:1001B0000100010001000100010001000100010037 -:1001C0000100010001000100010001000100010027 -:1001D0000100010000000100010001000000010019 -:1001E000000001000100010000000100000001000A -:1001F00001000100010001000000010001000100F8 -:1002000001000100010001000100010001000100E6 -:1002100001000100010001000100010001000100D6 -:100220002A00010001000100010001000100C300DB -:10023000C200390001000000C20005520252E10074 -:10024000010000003A001E022002220201005100BB -:100250003B001F0221022302010028003C002F0264 -:1002600026022F0001002C003D0030022702300042 -:10027000010052003E00240235003502000050000B -:100280000100360200002B0000004F002D00370255 -:1002900000002B0200004A003F003102380031000C -:1002A00000004D004000240021001E0027784B0074 -:1002B0004100250022001F0037744C004200260038 -:1002C000230020002E7F2A004300380025022D0045 -:1002D0002E774E00C20005520252E5002871000040 -:1002E000045205520852E100010000003A001E02CB -:1002F00020022202010051003B001F0221022302C2 -:10030000010028003C002F0226022F0001002C00D3 -:100310003D00300227023000010052003E0024025E -:1003200035003502000050000100360200002B00AD -:1003300000004F002D00370200002B0200004A0091 -:100340003F0031023800310000004D004000240021 -:1003500021001E0027784B004100250022001F00CD -:1003600037744C0042002600230020002E7F2A0014 -:100370004300380025022D002E774E00045205520E -:100380000852E5002871000001000654C100390040 -:10039000010000002900010001000100010001002E -:1003A0000100010001000100010001000100010045 -:1003B0000100010001000100010001000100010035 -:1003C0000100010001000100010001000000010026 -:1003D0000100010000000100000001000100010017 -:1003E0000000010000000100010001000100010007 -:1003F00000000100010001000100010001000100F6 -:1004000001000100010001000100010001000100E4 -:1004100001000100010001002A00010001000100AB -:100420000100010001000654C10039000100000074 -:10043000C30005520252E100E000000044006600E3 -:10044000A60000000077B5004500F400F2000000AF -:10045000007F00006800F000F100F100E200B6004B -:100460006900F500F3000000E300B4006A00A90091 -:10047000AA00A8000000B8000000F9000000FA007F -:100480000000B9000000F9000000FA000000AC0014 -:100490006B004600530000000000AB006C004A00F7 -:1004A00050004D004978A9006D00520051005100E4 -:1004B0004C74AE006E004B004F004E00007FAD004C -:1004C0006F00B100B30000000077AA00C30005521E -:1004D0000252E500E4000000075208520000E1006B -:1004E000E000000044006600A60000000077B500B0 -:1004F0004500F400F2000000007F00006800F000FA -:10050000F100F100E200B6006900F500F300000020 -:10051000E300B4006A00A900AA00A8000000B80027 -:100520000000F9000000FA000000B9000000F90026 -:100530000000FA000000AC006B0046005300000011 -:100540000000AB006C004A0050004D004978A90043 -:100550006D005200510051004C74AE006E004B0013 -:100560004F004E00007FAD006F00B100B3000000EF -:100570000077AA00075208520000E500E4000000DE -:100580000100C10001003900010000002900010044 -:100590000100010001000100010001000100010053 -:1005A0000100010001000100010001000100010043 -:1005B0000100010001000100010001000100010033 -:1005C0000100010000000100010001000000010025 -:1005D0000000010001000100000001000000010016 -:1005E0000100010001000100000001000100010004 -:1005F00001000100010001000100010001000100F3 -:1006000001000100010001000100010001000100E2 -:100610002A00010001000100010001000100C100E9 -:100620000100390001000000C100010001000100CB -:10063000010000002900010001000100010001008B -:1006400001000100010001000100010001000100A2 -:100650000100010001000100010001000100010092 -:100660000100010001000100010001000000010083 -:100670000100010000000100000001000100010074 -:100680000000010000000100010001000100010064 -:100690000000010001000100010001000100010053 -:1006A0000100010001000100010001000100010042 -:1006B0000100010001000100010001000100010032 -:1006C00001000100C1000100010001000100000063 -:1006D00016034500720067006F0044006F00780049 -:1006E000200045005A000000160345007200670014 -:1006F0006F0044006F007800200045005A000000A1 -:100700000403090409026D00040100A0FA090400B1 -:10071000000103010100092111010001223F00072E -:1007200005810308000A0904010001030102000910 -:100730002111010001224D000705820308000A096A -:10074000040200010300000009211101000122360A -:10075000000705830308000A0904030001030000E1 -:10076000000921110100012239000705840310004E -:10077000011201100100000008EDFE071301000145 -:1007800002000105010906A101050719E029E71585 -:1007900000250195087501810205081901290595B3 -:1007A000057501910295017503910105071900294D -:1007B0007715002501957875018102C00501098032 -:1007C000A101850216010026B7001A01002AB70010 -:1007D000751095018100C0050C0901A10185031662 -:1007E0000100269C021A01002A9C027510950181C5 -:1007F00000C005010902A1010901A10005091901B3 -:1008000029051500250195057501810295017503DE -:1008100081010501093009311581257F950275088F -:10082000810609381581257F950175088106050C1B -:100830000A38021581257F950175088106C0C0051B -:10084000010906A101050719E029E7150025019511 -:1008500008750181029501750881010508190129B2 -:10086000059505750191029501750391010507191B -:100870000029FF150025FF950675088100C00000BE -:10088000000000000000000000010204060A0F172B -:10089000202C3A4A5D71879DB3C7DAE9F5FCFFFC6D -:1008A000F5E9DAC7B39D87715D4A3A2C20170F0A24 -:1008B00006040201000000000000000000001124F6 -:1008C0001FBECFEFDAE0DEBFCDBF04B603FE24C00B -:1008D0008091EF019091F001A091F101B091F201AE -:1008E0008730904BA740B04BB9F41092EF011092B3 -:1008F000F0011092F1011092F20114BE84B7877FCB -:1009000084BF88E10FB6F894809360001092600075 -:100910000FBEE0E0FFE3099511E0A0E0B1E0E6E002 -:10092000FAE402C005900D92A433B107D9F721E093 -:10093000A4E3B1E001C01D92AF3EB207E1F70E940F -:100940000A0B0C9401250C94000061110BC0FC01F2 -:100950008281882321F085EE0E946B1103C085EE11 -:100960000E94331280E090E008950895CF93609143 -:10097000B1017091B2018091B3019091B4010E94D4 -:100980000F1CC82FE0910E01F0910F01808182723F -:1009900019F0259A2D9A06C00E94431081FDF9CFC7 -:1009A00025982D98C130B9F0C430A9F089EF8C0F8B -:1009B000823088F08EEF8C0F823018F4269A2E9AAF -:1009C00002C026982E98C550C23018F4279A2F9A44 -:1009D00002C027982F98CF9108950C94B60456988A -:1009E0005E9825982D9826982E9827982F988FEF07 -:1009F00090E0909389008093880090938B0080937F -:100A00008A0090938D0080938C00259A2D9A2FEF69 -:100A100080E792E0215080409040E1F700C0000064 -:100A2000269A2E9A2FEF80E792E021508040904046 -:100A3000E1F700C00000279A2F9A2FEF80E792E09D -:100A4000215080409040E1F700C0000025982D988B -:100A50002FEF80E792E0215080409040E1F700C006 -:100A6000000026982E982FEF80E792E021508040DA -:100A70009040E1F700C0000027982F9856985E98A4 -:100A800025982D9826982E9827982F98089589EACA -:100A90008093800089E08093810024982C983F986F -:100AA0008AB18F748AB96E98479A8BB1806B8BB973 -:100AB000769A0E94EF040C94B50480E280930001C2 -:100AC0008091340181110EC00E94AC0581E08093B9 -:100AD00034012FEF83ED90E3215080409040E1F707 -:100AE00000C0000080E40E94B205809300018111E3 -:100AF0002EC00E94DC0580930001811128C00E9455 -:100B0000DC0580930001811122C08FE30E94DC0587 -:100B10008093000181111BC00E94D40580E40E94D3 -:100B2000B20580930001811112C08CE00E94DC05A7 -:100B30008093000181110BC00E94DC0580930001AD -:100B4000811105C08FE30E94DC05809300010E94A3 -:100B5000D4058091000108951092B9008AE0809335 -:100B6000B800089594EA9093BC009091BC0097FF60 -:100B7000FCCF9091B900987F983021F0903111F01E -:100B800081E008958093BB0084E88093BC0080914D -:100B9000BC0087FFFCCF8091B900887F883111F0BD -:100BA000803471F780E0089584E98093BC008091DF -:100BB000BC0084FDFCCF08958093BB0084E8809343 -:100BC000BC008091BC0087FFFCCF9091B900987F5A -:100BD00081E0983209F480E0089584E88093BC00B5 -:100BE0008091BC0087FFFCCF8091BB00089580916D -:100BF0000001811115C080E40E94B20580930001BC -:100C000081110CC082E10E94DC05809300018111FA -:100C100005C08FEF0E94DC05809300010E94D4057F -:100C200084B1807F84B985B1807F85B98AB1837FA3 -:100C30008AB98BB1837F8BB93E98469808950E94FC -:100C40005D05809300010E94F70580B38C7080BB26 -:100C500081B3836F81BBE4E4F1E0A6E3B1E01192DC -:100C60001D9281E0E235F807D1F70C944705BF9259 -:100C7000CF92DF92EF92FF920F931F93CF93DF9368 -:100C800080910001882379F0809135018F5F8093F6 -:100C90003501811108C00E945D058093000181111A -:100CA00002C00E94EF0406E311E0C0E0D0E0DD24C2 -:100CB000D39482E0C82EEE24E394F12CC73000F5E3 -:100CC00080910001811162C080E40E94B20580938E -:100CD0000001811112C082E10E94DC0580930001B5 -:100CE00081110BC0C7010C2E01C0880F0A94EAF7CE -:100CF00080950E94DC05809300010E94D40546C0C7 -:100D0000CA30A1F028F4C83059F0C93061F005C0EC -:100D1000CC3089F070F0CD3089F0209A289810C03E -:100D2000219A29980DC0229A2A980AC0239A2B98B2 -:100D300007C0529A01C0539A5B9802C03E9A4698E7 -:100D4000E0EAEA95F1F78FB179995AC092E08170A3 -:100D50008D25892B7C9B02C090E001C094E0892BFB -:100D60007D9B02C090E001C098E0892B7E9B02C071 -:100D700090E001C090E1892B9FB19095991F992730 -:100D8000991F9295990F907E892B0FC08091000139 -:100D900081114BC080E40E94B2058093000188233A -:100DA00089F1B12C0E94D4058B2DF8019081981700 -:100DB00019F08083C09201010E94F70521960F5F10 -:100DC0001F4FCE30D10509F079CF809101018823E2 -:100DD00071F1815080930101882339F08FE99FE000 -:100DE0000197F1F700C0000022C0A4E4B1E0E6E3FF -:100DF000F1E081918D9391E0E434F907D1F717C0C8 -:100E000090E0A5CF83E10E94DC0580930001811171 -:100E1000C8CF81E40E94B205809300018111C1CF47 -:100E20000E94ED05B82EB094BDCF80E0BECF0E94E9 -:100E3000ED0481E0DF91CF911F910F91FF90EF9032 -:100E4000DF90CF90BF900895E82FF0E0EC5BFE4F6D -:100E50008081089508958B3B910578F4883A910537 -:100E600040F5853A9105D0F48430910508F0B1C081 -:100E70008130910509F4ADC06BC0803E910508F446 -:100E800067C0883E910508F4A4C09C01205F310929 -:100E90002031310508F05CC090650895853A9105D0 -:100EA00009F459C0863A910509F458C083E890E4E2 -:100EB0000895883A910509F454C0893A910509F4D6 -:100EC00053C08A3A910509F452C08B3A910509F44E -:100ED00051C08C3A910509F450C08D3A910509F43E -:100EE0004FC0803B910509F44EC08E3A910509F43C -:100EF0004DC08F3A910509F44CC0813B910509F42E -:100F00004BC0823B910509F44AC0833B910509F42B -:100F100049C0843B910509F448C0853B910509F41B -:100F200047C0863B910509F446C0873B910509F40B -:100F300045C0883B910509F444C0893B910509F4FB -:100F400043C08A3B910509F042C08AE296E40895C5 -:100F500080E090E0089581E890E4089582E890E4CC -:100F6000089582EE94E4089589EE94E408958AEE5B -:100F700094E4089585EB94E4089586EB94E4089551 -:100F800087EB94E408958CEC94E408958DEC94E45C -:100F9000089583E895E408958AE895E4089582E940 -:100FA00095E4089584E995E4089581E296E408952E -:100FB00083E296E4089584E296E4089585E296E457 -:100FC000089586E296E4089587E296E4089580E025 -:100FD00094E40895089596E0799FF001112494E532 -:100FE000899FE00DF11D1124E60FF11DEE0FFF1F8B -:100FF000E851FF4F859194910895880F991F805A69 -:101000009040FC01859194910895880F991F80521A -:101010009F4FFC0185919491089526E0729FF00105 -:10102000112444E5849FE00DF11D1124E60FF11D0C -:10103000EE0FFF1FE851FF4F25913491C9019A959A -:1010400081159F4110F4C9010895C901905281157D -:10105000904128F4C9019F700E9405080895C901B4 -:1010600090538115904120F4C9019927906C0895FF -:10107000211580E5380769F40E94AD159FEF24E340 -:101080004CE0915020404040E1F700C000000C943B -:10109000081D213080E5380731F48091CD01816051 -:1010A0008093CD010895C90190558115904108F0B4 -:1010B00050C0832F99278F70992781309105D9F4DB -:1010C000A9014370552702C0880F991F4A95E2F77E -:1010D0009C68A90164E0440F551F6A95E1F7442715 -:1010E0005370842B952B73E0220F331F7A95E1F711 -:1010F000207633271DC08230910529F4922F88274E -:10110000816F906A089583309105A9F4A901437015 -:10111000552781E090E002C0880F991F4A95E2F7B9 -:101120009C6843E0220F331F4A95E1F7207E377019 -:10113000822B932B08950497F1F4A901437055274E -:1011400081E090E002C0880F991F4A95E2F79A6803 -:10115000E8CFC90190578115904120F4C9019F70D3 -:1011600090620895C90190588115904120F4C901F9 -:101170009F70906A0895203E3105E0F4203C3105CF -:1011800058F52133310509F470C048F4293231058E -:1011900009F464C02A32310509F46EC074C02933E1 -:1011A0003105F1F022383105D9F02533310509F444 -:1011B0004EC069C0233E310589F138F4203E310527 -:1011C000C1F0223E3105E1F05EC0263E310569F1F5 -:1011D000273E3105A9F157C0C9010E94FD070895B6 -:1011E0008091E00180FD02C081FF4DC080EE90E063 -:1011F0004BC08091E00180FFF9CF89E390E044C0CB -:101200008091E00182FF0EC08091E00184FF03C065 -:1012100080E090E039C083EE90E036C08091E0013C -:1012200082FFF2CF82EE90E02FC08091E00183FF39 -:101230000BC08091E00184FDEBCF87EE90E024C0ED -:101240008091E00183FFF5CF86EE90E01DC0809194 -:10125000E00185FF07C089E290E016C08091E001BF -:1012600085FFF9CF85E390E00FC08091E00186FF14 -:1012700007C08AE290E008C08091E00186FFF9CFC4 -:1012800081E390E001C0C9010E942B0708950895F1 -:101290000C944709809162010895CF93DF9300D0A9 -:1012A0001F92CDB7DEB72091E601243019F523E077 -:1012B00029839B838A832093E9008FEF9091E80034 -:1012C000815095FD06C095ED9A95F1F700008111CA -:1012D000F5CF8091E80085FF0DC040E050E063E06D -:1012E00070E0CE0101960E94B70B8091E8008E77E6 -:1012F0008093E8000F900F900F90DF91CF910895A9 -:10130000CF93DF9300D01F92CDB7DEB72091E601D7 -:10131000243021F522E029839B838A8383E0809314 -:10132000E9008FEF9091E800815095FD06C095EDA2 -:101330009A95F1F700008111F5CF8091E80085FFC3 -:101340000DC040E050E063E070E0CE0101960E94E5 -:10135000B70B8091E8008E778093E8000F900F9094 -:101360000F90DF91CF9108952091E6012430F1F4A0 -:1013700022E02093E9002FEF3091E800215035FD65 -:1013800006C035ED3A95F1F700002111F5CF209117 -:10139000E80025FF0BC040E050E065E070E00E94EF -:1013A000B70B8091E8008E778093E8000895CF9383 -:1013B000DF93EC018091E601843009F046C0909102 -:1013C0000C019923D9F090910D019923B9F08093E4 -:1013D000E9008FEF9091E800815095FD06C095E1FE -:1013E0009A95F1F700008111F5CF8091E80085FF13 -:1013F0002CC040E050E060E170E017C081E08093D5 -:10140000E9008FEF9091E800815095FD06C095EDC1 -:101410009A95F1F700008111F5CF8091E80085FFE2 -:1014200014C040E050E068E070E0CE010E94B70BCD -:101430008091E8008E778093E80080E1FE01A2E5CC -:10144000B1E001900D928A95E1F7DF91CF91089577 -:101450008091E501811109C00E94490D0E94A60DED -:101460008091E20084608093E20008951092E5018B -:10147000089508950C942E230E949F1C0E943423EB -:101480000E9443100C94480942E061EC81E00E9404 -:10149000C30C42E061EC82E00E94C30C42E061ECCC -:1014A00083E00E94C30C42E161EC84E00C94C30C25 -:1014B0008091E801833009F455C030F4813071F037 -:1014C000823009F48EC008958A3009F47AC08B30D6 -:1014D00009F460C0893009F09CC020C08091E70108 -:1014E000813A09F096C08091E800877F8093E800F8 -:1014F0008091EB019091EC01892B21F060E080E07C -:1015000090E003C060E182E591E070E00E94000C91 -:101510008091E8008B778093E80008958091E7013F -:10152000813209F076C08091EB019091EC01009737 -:1015300019F0039709F06DC08091E800877F8093D0 -:10154000E8008091E80082FD05C08091E6018111EC -:10155000F8CF5FC08091F100809362018091E80034 -:101560008B7753C08091E701813A09F052C0809196 -:10157000EB019091EC01892B09F04BC08091E800C0 -:10158000877F8093E8008091E80080FFFCCF809106 -:101590000C0136C08091E7018132D9F58091EB01D1 -:1015A0009091EC01892BA9F58091E800877F8093C9 -:1015B000E8000E94F80C8091E90180930C010C94E2 -:1015C000AD158091E701813221F58091E800877F98 -:1015D0008093E8000E94F80C8091EA0180936301F7 -:1015E00008958091E701813AA1F48091E800877F16 -:1015F0008093E8008091E80080FFFCCF8091630138 -:101600008093F1008091E8008E778093E8000C943D -:10161000F80C089584B7877F84BF88E10FB6F894EB -:1016200080936000109260000FBE90E080E80FB6DB -:10163000F89480936100909361000FBE0E94921015 -:101640000E94490D0E94A60D8091E2008460809363 -:10165000E20078940E9421100E94941082E091E0B0 -:101660000E943E100E941C238091E601853069F49F -:101670000E94621C8091E4018823B1F30E948A1CBD -:10168000882391F30E94A10BEFCF0E949A10ECCF18 -:10169000292F332723303105A9F06CF4213031058F -:1016A00009F442C02230310509F043C08DE690E0D4 -:1016B00024E037E042C021323105C9F02232310541 -:1016C00019F137C099278130910541F08230910599 -:1016D00041F0892B71F5E0E0F7E005C0E8EEF6E0B7 -:1016E00002C0E0EDF6E0849190E09F0126C06430F6 -:1016F00000F5E62FF0E0EE0FFF1FEE5DFE4F2081BC -:10170000318189E090E019C0643098F4E62FF0E070 -:10171000DF01AA0FBB1FA65EBE4F2D913C91EA5E72 -:10172000FE4F808190E009C082E190E021E737E040 -:1017300004C080E090E020E030E0FA0131832083B3 -:10174000089580E189BD82E189BD09B400FEFDCF25 -:101750008091D8008F7D8093D8008091E0008260D6 -:101760008093E0008091E00081FDFCCF0895CF924E -:10177000DF92EF92FF920F931F93CF93DF937C0141 -:101780008B01EA010E94190D811131C0209731F0BF -:1017900088819981081B190BE80EF91EC12CD12CE8 -:1017A0000115110519F18091E80085FD14C08091A3 -:1017B000E8008E778093E800209741F08881998136 -:1017C0008C0D9D1D9983888385E011C00E94190DA1 -:1017D000882331F30CC0F70181917F018093F100E0 -:1017E00001501109FFEFCF1ADF0ADACF80E0DF9155 -:1017F000CF911F910F91FF90EF90DF90CF900895C0 -:101800002091ED013091EE012617370748F0611560 -:10181000710539F42091E8002E772093E80001C08B -:10182000B901FC0120E061157105B9F18091E60173 -:10183000882309F440C0853009F43FC08091E80056 -:1018400083FD3DC08091E80082FF06C08091E800E2 -:1018500082FF26C080E008958091E80080FFE3CFFA -:101860002091F3008091F20090E0922B61157105B8 -:1018700051F08830910538F421912093F1006150A6 -:1018800071090196F3CF21E0089709F020E08091DB -:10189000E8008E778093E800C6CF2111C7CFD6CF5E -:1018A0008091E601882339F0853039F08091E80095 -:1018B00083FFCCCF04C082E0089583E0089581E0E7 -:1018C00008952091ED013091EE012617370748F079 -:1018D0006115710539F42091E8002E772093E80016 -:1018E00001C0B901FC0120E061157105C1F18091D1 -:1018F000E601882309F441C0853009F440C0809195 -:10190000E80083FD3EC08091E80082FF06C0809120 -:10191000E80082FF27C080E008958091E80080FF02 -:10192000E3CF2091F3008091F20090E0922B6115BB -:10193000710559F08830910540F424912093F1000D -:101940003196615071090196F2CF21E0089709F0B4 -:1019500020E08091E8008E778093E800C5CF2111C8 -:10196000C6CFD5CF8091E601882339F0853039F094 -:101970008091E80083FFCBCF04C082E0089583E02C -:10198000089581E00895982F973058F59093E900D5 -:10199000981739F07091EC002091ED005091F00013 -:1019A00003C0242F762F50E021FF19C03091EB00A7 -:1019B0003E7F3093EB003091ED003D7F3093ED00A2 -:1019C0003091EB0031603093EB007093EC0020938A -:1019D000ED005093F0002091EE0027FF07C09F5FBD -:1019E000D3CF8F708093E90081E0089580E008955F -:1019F0008091E70187FD05C08091E80080FF0EC05F -:101A000012C08091E80082FD05C08091E60181113D -:101A1000F8CF08958091E8008B7708C08091E601A7 -:101A20008111EACF08958091E8008E778093E800D5 -:101A300008958091E4009091E50045E62091EC0046 -:101A400020FF21C02091E80020FD21C02091E60167 -:101A5000222389F0253089F02091EB0025FD0FC06D -:101A60002091E4003091E5002817390739F34150FF -:101A700041F0C901E3CF82E0089583E0089581E059 -:101A8000089584E008952091E80022FFDFCF80E0F0 -:101A900008950E94B70D0E94BF0DE0EEF0E0808136 -:101AA00081608083E8EDF0E080818F77808319BCCE -:101AB000A7EDB0E08C918E7F8C9380818F7E8083A8 -:101AC0001092E50108950F931F93CF93DF930E9427 -:101AD000B70D0E94BF0DC8EDD0E088818F77888355 -:101AE00088818068888388818F7D888319BC109263 -:101AF000E6011092E2011092E4011092E30100EE7F -:101B000010E0F80180818B7F8083888181608883E9 -:101B100042E060E080E00E94C30CE1EEF0E08081F2 -:101B20008E7F8083E2EEF0E080818160808380811F -:101B300088608083F80180818E7F808388818061C6 -:101B40008883DF91CF911F910F910895E8EDF0E028 -:101B500080818F7E8083E7EDF0E0808181608083EB -:101B600084E082BF81E08093E5010C94630DE8ED91 -:101B7000F0E080818E7F80831092E20008951092C1 -:101B8000DA001092E10008951F920F920FB60F92A3 -:101B900011242F933F934F935F936F937F938F9372 -:101BA0009F93AF93BF93EF93FF938091E10082FFE8 -:101BB0000BC08091E20082FF07C08091E1008B7F23 -:101BC0008093E1000E9420108091DA0080FF1FC006 -:101BD0008091D80080FF1BC08091DA008E7F8093B7 -:101BE000DA008091D90080FF0DC080E189BD82E1DB -:101BF00089BD09B400FEFDCF81E08093E6010E941B -:101C0000280A05C019BC1092E6010E94360A80918C -:101C1000E10080FF19C08091E20080FF15C0809133 -:101C2000E2008E7F8093E2008091E20080618093E9 -:101C3000E2008091D80080628093D80019BC85E0D2 -:101C40008093E6010E943A0A8091E10084FF30C04F -:101C50008091E20084FF2CC080E189BD82E189BDD2 -:101C600009B400FEFDCF8091D8008F7D8093D8000D -:101C70008091E1008F7E8093E1008091E2008F7E71 -:101C80008093E2008091E20081608093E200809185 -:101C9000E201882311F084E007C08091E30087FF10 -:101CA00002C083E001C081E08093E6010E943C0A0B -:101CB0008091E10083FF29C08091E20083FF25C06D -:101CC0008091E100877F8093E10082E08093E601CC -:101CD0001092E2018091E1008E7F8093E10080917B -:101CE000E2008E7F8093E2008091E2008061809329 -:101CF000E20042E060E080E00E94C30C8091F000CE -:101D000088608093F0000E94390AFF91EF91BF91A3 -:101D1000AF919F918F917F916F915F914F913F9183 -:101D20002F910F900FBE0F901F9018951F920F923A -:101D30000FB60F9211242F933F934F935F936F939E -:101D40007F938F939F93AF93BF93CF93EF93FF9323 -:101D5000C091E900CF708091EC001092E900809171 -:101D6000F000877F8093F00078940E94D20E10924A -:101D7000E9008091F00088608093F000C093E90052 -:101D8000FF91EF91CF91BF91AF919F918F917F91F3 -:101D90006F915F914F913F912F910F900FBE0F90D8 -:101DA0001F9018951F93CF93DF93CDB7DEB7AA97F7 -:101DB0000FB6F894DEBF0FBECDBFE7EEF1E0809125 -:101DC000F100819321E0EF3EF207C9F70E94580A23 -:101DD0008091E80083FF1CC12091E7013091E80168 -:101DE000832F90E08A30910508F012C1FC01EA5A75 -:101DF000FF4F0C94B624203881F0223809F008C136 -:101E00008091EB018F708093E9008091EB0085FB5E -:101E1000882780F91092E90006C08091E301909133 -:101E2000E401911182609091E800977F9093E8001F -:101E30008093F1001092F100C5C0822F8D7F09F0D0 -:101E4000E7C0222319F0223061F0E2C08091E9015D -:101E5000813009F0DDC0333009F080E08093E40187 -:101E600028C08091E901811124C02091EB012F70DD -:101E700009F4CEC02093E9008091EB0080FF19C0E7 -:101E80008091EB00333011F4806211C08061809347 -:101E9000EB0081E090E0022E01C0880F0A94EAF77F -:101EA0008093EA001092EA008091EB0088608093B2 -:101EB000EB001092E9008091E800877F86C0211135 -:101EC000A7C01091E9011F778091E3008078812BF2 -:101ED0008093E3008091E800877F8093E8000E9470 -:101EE000F80C8091E80080FFFCCF8091E3008068CF -:101EF0008093E300112311F083E001C082E080931E -:101F0000E60186C02058223008F082C08091E901A5 -:101F10009091EA018C3D23E0920779F583E08A8372 -:101F20008AE289834FB7F894DE01139620E03EE001 -:101F300051E2E32FF0E050935700E49120FF03C0FB -:101F4000E295EF703F5FEF708E2F90E0EA3010F077 -:101F5000C79601C0C0968D939D932F5F243149F79A -:101F60004FBF8091E800877F8093E8006AE270E0CD -:101F7000CE0101960E94000C14C0AE014F5F5F4F6E -:101F80006091EB010E94480B009709F441C0209139 -:101F9000E800277F2093E800BC0189819A810E9494 -:101FA000610C8091E8008B778093E80031C0203885 -:101FB00079F58091E800877F8093E8008091E201C5 -:101FC0008093F1008091E8008E778093E8000E9472 -:101FD000F80C1EC021111CC09091E9019230C0F490 -:101FE0008091E800877F8093E8009093E2010E944F -:101FF000F80C8091E201811104C08091E30087FF19 -:1020000002C084E001C081E08093E6010E94440A9E -:102010008091E80083FF0AC08091E800877F809369 -:10202000E8008091EB0080628093EB00AA960FB6E7 -:10203000F894DEBF0FBECDBFDF91CF911F91089501 -:102040000895CF938091E6018823B1F08091E90053 -:102050008F709091EC0090FF02C090E801C090E07A -:10206000C92FC82B1092E9008091E80083FD0E94DF -:10207000D20ECF70C093E900CF910895909369017B -:10208000809368010895E0916801F09169013097AB -:1020900021F00190F081E02D099480E00895E09115 -:1020A0006801F0916901309721F00280F381E02D01 -:1020B00009940895E0916801F0916901309721F049 -:1020C0000480F581E02D09940895209166013091F6 -:1020D00067018217930771F09093670180936601FF -:1020E000E0916801F0916901309721F00680F78155 -:1020F000E02D0994089520916401309165018217C3 -:10210000930771F09093650180936401E0916801F9 -:10211000F0916901309721F00084F185E02D099458 -:10212000089508950C9491100E94A51C0E941F060A -:102130000C946B1DCF92DF92EF92FF920F931F933F -:10214000CF93DF93CDB7DEB72B970FB6F894DEBFF2 -:102150000FBECDBF0E9437063BE6E32E31E0F32EE3 -:1021600000E010E0C02E802F0E942407F701D190DC -:102170007F01D826B1F40F5F1F4F0E30110591F784 -:102180008FEF89838A831B820E94AE1C8160782F27 -:102190009D838C8349815A816B818D810E943D1181 -:1021A00041C09091CD0191FF04C08B870E942A0706 -:1021B0008B8520E030E04D2D50E0922FBA01022EA9 -:1021C00002C0759567950A94E2F760FF25C02E83DB -:1021D000CF82EE24E394F12C02C0EE0CFF1C9A9502 -:1021E000E2F790E08E219F2121E0892B09F420E085 -:1021F00028870E94AE1C8160782F9A8789874E813C -:102200005F8168858A850E943D11F801E559FE4F7E -:1022100080818E25808306C02F5F3F4F2630310599 -:1022200061F6A9CF0E944F2010916A010E944310CD -:102230001817A1F00E94431080936A012B960FB6E5 -:10224000F894DEBF0FBECDBFDF91CF911F910F91EC -:10225000FF90EF90DF90CF900C9448092B960FB62B -:10226000F894DEBF0FBECDBFDF91CF911F910F91CC -:10227000FF90EF90DF90CF900895CF93DF93CDB78D -:10228000DEB72B970FB6F894DEBF0FBECDBF4F83DE -:10229000588769877A878B87DE01119686E0FD0172 -:1022A00011928A95E9F785E0FE01379601900D922B -:1022B0008A95E1F749815A816B817C818D819E816C -:1022C0000E9479182B960FB6F894DEBF0FBECDBFD3 -:1022D000DF91CF910895CF93C82F882309F4C1C00F -:1022E000823859F40E94431081FDBBC089E30E94EB -:1022F000161B0E94E01B89E30CC0833879F40E940E -:10230000431080FDAEC083E50E94161B0E94E01BB7 -:1023100083E50E94561BCF910C94E01B843859F43E -:102320000E94431082FD9DC087E40E94161B0E94FC -:10233000E01B87E4EECF8CEF8C0F813A48F48C2FB2 -:102340000E94842281118DC08C2F0E94161BE3CF26 -:1023500080E28C0F883048F4C77081E001C0880F9C -:10236000CA95EAF70E94971BD6CF8BE58C0F833076 -:1023700078F4C53A29F0C63A31F482E890E005C015 -:1023800081E890E002C083E890E0CF910C94651062 -:1023900088E58C0F833108F064C0C83A39F1C93A36 -:1023A00041F1CA3A49F1CB3A51F1CC3A59F1CD3A1F -:1023B00061F1C03B69F1CE3A71F1CF3A79F1C13B9D -:1023C00081F1C23B89F1C33B91F1C43B99F1C53B1B -:1023D000A1F1C63BA9F1C73BB1F1C83BB9F1C93B7B -:1023E000C1F1CA3BC9F58AE292E038C082EE90E0C2 -:1023F00035C089EE90E032C08AEE90E02FC085EBC8 -:1024000090E02CC086EB90E029C087EB90E026C0DE -:102410008CEC90E023C08DEC90E020C083E891E04C -:102420001DC08AE891E01AC082E991E017C084E9F2 -:1024300091E014C081E292E011C083E292E00EC00C -:1024400084E292E00BC085E292E008C086E292E06E -:1024500005C087E292E002C080E090E0CF910C944A -:102460007B10CF910895882309F44BC0823859F42A -:102470000E94431081FF45C089E30E94161B0E9401 -:10248000E01B89E30CC0833871F40E94431080FF85 -:1024900038C083E50E94161B0E94E01B83E50E9462 -:1024A000561B0C94E01B843859F40E94431082FFA1 -:1024B00028C087E40E94161B0E94E01B87E4EFCF30 -:1024C0009CEF980F913A58F390E2980F983050F49F -:1024D000877091E001C0990F8A95EAF7892F0E94D1 -:1024E0009D1BDFCF9BE5980F933020F480E090E0B8 -:1024F0000C946510885A833120F480E090E00C94AD -:102500007B100895882321F00E94971B0C94E01BF8 -:102510000895882321F00E949D1B0C94E01B0895D0 -:10252000CF92DF92EF92FF920F931F93CF93DF939F -:10253000CDB7DEB728970FB6F894DEBF0FBECDBF7C -:102540008C0185E0F801DE01119601900D928A95CB -:10255000E1F7F80140813181F280258122952F70C9 -:1025600083819481892B31F03F3F31F481E04F3FEB -:1025700019F403C081E001C080E080FDCBC2498333 -:102580003A8389819A812F830E94D41A9E838887F7 -:102590000E94D31A0E94A6192F814E816885FF20C0 -:1025A00029F00E94B41B68854E812F81E42FE295AB -:1025B000EF70F0E0E05AFF4F0C94B624842F807F38 -:1025C000142F1F70882311F01295107FFF2059F0EF -:1025D000112309F454C2812F68870E94A71B0E940F -:1025E000E01B68854CC2862F0E943312112309F428 -:1025F00091C2812F0E94AD1B28960FB6F894DEBFC2 -:102600000FBECDBFDF91CF911F910F91FF90EF9043 -:10261000DF90CF900C94E01B342F307F842F8F708D -:10262000303211F08295807F662319F0613019F104 -:102630002BC0FF20B1F0222309F493C1213009F00F -:1026400090C128960FB6F894DEBF0FBECDBFDF91C4 -:10265000CF911F910F91FF90EF90DF90CF900C944E -:10266000C71B222319F0213009F454C28E830E9423 -:10267000CA1B8E8189C1FF2021F0223008F04AC296 -:1026800070C1211147C280C1FF2021F0222309F42B -:1026900068C1F5C1222309F477C105C2242F26950C -:1026A0002695237030E02115310521F021303105C8 -:1026B000C9F030C2FF2021F0862F942F937002C002 -:1026C00080E090E028960FB6F894DEBF0FBECDBF35 -:1026D000DF91CF911F910F91FF90EF90DF90CF90FE -:1026E0000C946510FF2021F0862F942F937002C068 -:1026F00080E090E028960FB6F894DEBF0FBECDBF05 -:10270000DF91CF911F910F91FF90EF90DF90CF90CD -:102710000C947B10862FFF2019F00E94571F02C0D7 -:102720000E94BF1F28960FB6F894DEBF0FBECDBF24 -:10273000DF91CF911F910F91FF90EF90DF90CF909D -:102740000C944420842F837009F076C0F110E2C10C -:10275000262F229526952770220F220F862F8F7005 -:10276000C82ED12CE12CF12C022E04C0CC0CDD1C87 -:10277000EE1CFF1C0A94D2F764FF10C06FE070E0FB -:1027800080E090E004C0660F771F881F991F2A958C -:10279000D2F7609570958095909503C060E070E0E9 -:1027A000CB01242F269526952370422F50E04230EE -:1027B0005105D1F04330510559F16C297D298E29FD -:1027C0009F294130510541F128960FB6F894DEBF9C -:1027D0000FBECDBFDF91CF911F910F91FF90EF9072 -:1027E000DF90CF900C94CB196C297D298E299F29DD -:1027F00028960FB6F894DEBF0FBECDBFDF91CF9104 -:102800001F910F91FF90EF90DF90CF900C94E519FE -:102810000E94CB19C701B60128960FB6F894DEBF07 +:100000000C94C7020C940B030C940B030C940B037D +:100010000C940B030C940B030C940B030C940B0328 +:100020000C940B030C940B030C946F0D0C94410E69 +:100030000C940B030C940B030C940B030C940B0308 +:100040000C940B030C9499220C940B030C940B034B +:100050000C940B030C943B1C0C940B030C940B039F +:100060000C940B030C940B030C940B030C940B03D8 +:100070000C940B030C940B030C940B030C940B03C8 +:100080000C940B030C940B030C940B030C940B03B8 +:100090000C940B030C940B030C940B030C940B03A8 +:1000A0000C940B030C940B030C940B031C034E03D6 +:1000B0009A0335035E032D044A044D0450045E0484 +:1000C000A60EC80EB30FC80EB30F0A0F2D0FB30F35 +:1000D000820F950F89128912B712B712F9123513D0 +:1000E000351535154D133515441444140F153515B4 +:1000F0003515231500C801C802C803C804C805C8BF +:10010000022001200030E100E00000001E00140089 +:1001100004001D0000074E001F001A0016001B00FF +:10012000000F4C002000080007000600E2002A0033 +:100130002100150009001900E3004B002200170000 +:100140000A00050000004A0029002F0000002B02D1 +:1001500000004D002D00300000002B00000050007A +:1001600023001C000B00110000004F0024001800A9 +:100170000D001000E700520025000C000E003600B4 +:10018000E6002C00260012000F003700000F2800A8 +:100190002700130033003800000751000520042019 +:1001A0000320E500E400000001000100010001005F +:1001B000E00000003A001E02200222020007510067 +:1001C0003B001F0221022302000F28003C002F02E7 +:1001D00026022F00E2002C003D00300227023000F2 +:1001E000E30052003E0024023500350200005000BA +:1001F0002900360200002B0000004F002D003702BE +:1002000000002B0200004A003F003102380031009C +:1002100000004D004000240021001E0027784B0004 +:100220004100250022001F0037744C0042002600C8 +:10023000230020002E7F2A004300380025022D00D5 +:100240002E774E000100010001000100287100001E +:100250000100010001000100E00000004400660010 +:10026000A60000000007B50045000630F200083087 +:10027000F60000006800F000F100F100F400B600A4 +:1002800069000730F3000930F500B4006A00A900E6 +:10029000AA00A8000000B8002900F9000000FA0038 +:1002A0000000B9000000F9000000FA000000AC00F6 +:1002B0006B004600530000000000AB006C004A00D9 +:1002C00050004D004978A9006D00520051005100C6 +:1002D0004C74AE006E004B004F004E00000FAD009E +:1002E0006F00B100B30000000007AA000100010088 +:1002F00001000100E40000000100010001003900DC +:1003000001000000290001000100010001000100BE +:1003100001000100010001000100010001000100D5 +:1003200001000100010001000100010001000100C5 +:1003300001000100010001000100010000000100B6 +:1003400001000100000001000000010001000100A7 +:100350000000010000000100010001000100010097 +:100360000000010001000100010001000100010086 +:100370000100010001000100010001000100010075 +:1003800001000100010001002A000100010001003C +:10039000010001000100010001003900010000001E +:1003A00016034500720067006F0044006F0078007C +:1003B000200045005A000000160345007200670047 +:1003C0006F0044006F007800200045005A000000D4 +:1003D0000403090409026D00040100A0FA090400E5 +:1003E000000103010100092111010001223F000762 +:1003F00005810308000A0904010001030102000944 +:100400002111010001224D000705820308000A099D +:10041000040200010300000009211101000122363D +:10042000000705830308000A090403000103000014 +:100430000009211101000122390007058403100081 +:10044000011201100100000008EDFE071301000178 +:1004500002000105010906A101050719E029E715B8 +:1004600000250195087501810205081901290595E6 +:100470000575019102950175039101050719002980 +:100480007715002501957875018102C00501098065 +:10049000A101850216010026B7001A01002AB70043 +:1004A000751095018100C0050C0901A10185031695 +:1004B0000100269C021A01002A9C027510950181F8 +:1004C00000C005010902A1010901A10005091901E6 +:1004D0002905150025019505750181029501750312 +:1004E00081010501093009311581257F95027508C3 +:1004F000810609381581257F950175088106050C4F +:100500000A38021581257F950175088106C0C0054E +:10051000010906A101050719E029E7150025019544 +:1005200008750181029501750881010508190129E5 +:10053000059505750191029501750391010507194E +:100540000029FF150025FF950675088100C00000F1 +:10055000000000000000000000010204060A0F175E +:10056000202C3A4A5D71879DB3C7DAE9F5FCFFFCA0 +:10057000F5E9DAC7B39D87715D4A3A2C20170F0A57 +:100580000604020100000000000000000000112429 +:100590001FBECFEFDAE0DEBFCDBF04B603FE24C03E +:1005A0008091F7019091F801A091F901B091FA01C1 +:1005B0008730904BA740B04BB9F41092F7011092DE +:1005C000F8011092F9011092FA0114BE84B7877FE6 +:1005D00084BF88E10FB6F8948093600010926000A9 +:1005E0000FBEE0E0FFE3099511E0A0E0B1E0E6EB2B +:1005F000F8E402C005900D92A433B107D9F721E0C9 +:10060000A4E3B1E001C01D92A73FB207E1F70E9449 +:10061000B50A0C9459240C940000DC01462F50E0DC +:100620004A30510508F05DC14A5A5F4F12962C912D +:100630001297FA010C940E2480913A0190913B019B +:100640002223F1F0019690933B0180933A0180912F +:10065000360190913701892B31F08091350191E07D +:1006600089278093350181E09AC015968C91807F0F +:100670002111BFC009F0D5C080913A0190913B0192 +:10068000019790933B0180933A01892B09F029C18E +:1006900080913501811125C181E0A8C015968C910A +:1006A000807F222349F12091360130913701882340 +:1006B00081F02115310569F48BE2C1C015968C914A +:1006C000807F222319F12091360130913701811169 +:1006D000B1C0809138019091390101969093390110 +:1006E00080933801232B31F08091340191E08927E8 +:1006F0008093340182E053C0882351F08091360109 +:1007000090913701892B21F48BE2A4C081119AC00A +:10071000809138019091390101979093390180932C +:100720003801892B09F0DDC0809134018111D9C0D5 +:1007300082E05CC015963C912223A1F180913601A4 +:100740009091370101969093370180933601809103 +:100750003A0190913B01892B31F08091350191E074 +:100760008927809335018091380190913901892B37 +:1007700031F08091340191E0892780933401307FFA +:1007800069F4E0910E01F0910F018081827231F0E5 +:1007900089E30E94161189E30E94DE1183E00E9422 +:1007A000C9199FC0832F807FA1F030FD12C08091B6 +:1007B0003A0190913B01892B61F48091380190912D +:1007C0003901892B31F485E30E94161185E30E94DB +:1007D000DE11809136019091370101979093370196 +:1007E00080933601892B09F07CC083E00E94EA19CE +:1007F00078C02091360130913701882329F02115E6 +:10080000310511F484E31BC080913A0190913B01C2 +:10081000019690933B0180933A01232B09F01DCF61 +:1008200022CF8091360190913701892B09F024CF96 +:1008300084E310C02115310509F04BCF81E30E94FC +:1008400016114FC08091360190913701892B09F024 +:100850005FCF81E30E94DE1144C015963C912111C7 +:100860006DCF832F807F09F4B4CF30FDB2CF80915C +:100870003A0190913B01892B09F0ABCF809138016F +:1008800090913901892B09F0A4CF8EE20E941611B4 +:100890008EE29DCF80EF90E005C080EF90E010C029 +:1008A00081EF90E0222329F00E94AF1E82EF90E0BA +:1008B0000DC00E94171F82EF90E00FC081EF90E003 +:1008C000222339F00E94AF1E83EF90E00E94AF1EFA +:1008D00006C00E94171F83EF90E00E94171F0E941E +:1008E0009C1F80E090E008950895E0910E01F09142 +:1008F0000F018081827219F0259A2D9A06C00E94FC +:10090000EE0F81FDF9CF25982D988091B90181FFD7 +:1009100003C0269A2E9A02C026982E988091B9017B +:1009200082FF03C0279A2F9A089527982F98089539 +:100930000C94750456985E9825982D9826982E98B4 +:1009400027982F988FEF90E09093890080938800EC +:1009500090938B0080938A0090938D0080938C00FD +:10096000259A2D9A2FEF80E792E021508040904009 +:10097000E1F700C00000269A2E9A2FEF80E792E060 +:10098000215080409040E1F700C00000279A2F9A44 +:100990002FEF80E792E0215080409040E1F700C0C7 +:1009A000000025982D982FEF80E792E0215080409D +:1009B0009040E1F700C0000026982E982FEF80E7C6 +:1009C00092E0215080409040E1F700C0000027985D +:1009D0002F9856985E9825982D9826982E982798A7 +:1009E0002F98089589EA8093800089E080938100A0 +:1009F00024982C983F988AB18F748AB96E98479A38 +:100A00008BB1806B8BB9769A0E949A040C94740413 +:100A100080E28093000180913C0181110EC00E9410 +:100A2000570581E080933C012FEF83ED90E3215047 +:100A300080409040E1F700C0000080E40E945D0526 +:100A40008093000181112EC00E94870580930001D0 +:100A5000811128C00E94870580930001811122C066 +:100A60008FE30E9487058093000181111BC00E94C3 +:100A70007F0580E40E945D0580930001811112C012 +:100A80008CE00E9487058093000181110BC00E94B9 +:100A9000870580930001811105C08FE30E948705BF +:100AA000809300010E947F058091000108951092BB +:100AB000B9008AE08093B800089594EA9093BC004E +:100AC0009091BC0097FFFCCF9091B900987F98302F +:100AD00021F0903111F081E008958093BB0084E80B +:100AE0008093BC008091BC0087FFFCCF8091B9004F +:100AF000887F883111F0803471F780E0089584E9AF +:100B00008093BC008091BC0084FDFCCF089580934D +:100B1000BB0084E88093BC008091BC0087FFFCCFC1 +:100B20009091B900987F81E0983209F480E00895AF +:100B300084E88093BC008091BC0087FFFCCF80914B +:100B4000BB00089580910001811115C080E40E94CE +:100B50005D058093000181110CC082E10E94870530 +:100B600080930001811105C08FEF0E94870580935B +:100B700000010E947F0584B1807F84B985B1807FA8 +:100B800085B98AB1837F8AB98BB1837F8BB93E984F +:100B9000469808950E940805809300010E94A205CE +:100BA00080B38C7080BB81B3836F81BBECE4F1E0D8 +:100BB000AEE3B1E011921D9281E0EA35F807D1F77A +:100BC0000C94F204BF92CF92DF92EF92FF920F93B8 +:100BD0001F93CF93DF9380910001882379F0809158 +:100BE0003D018F5F80933D01811108C00E9408057F +:100BF00080930001811102C00E949A040EE311E06B +:100C0000C0E0D0E0DD24D39482E0C82EEE24E3944B +:100C1000F12CC73000F580910001811162C080E4A1 +:100C20000E945D0580930001811112C082E10E9443 +:100C300087058093000181110BC0C7010C2E01C0F4 +:100C4000880F0A94EAF780950E9487058093000137 +:100C50000E947F0546C0CA30A1F028F4C83059F080 +:100C6000C93061F005C0CC3089F070F0CD3089F02A +:100C7000209A289810C0219A29980DC0229A2A9863 +:100C80000AC0239A2B9807C0529A01C0539A5B98C6 +:100C900002C03E9A4698E0EAEA95F1F78FB1799959 +:100CA0005AC092E081708D25892B7C9B02C090E018 +:100CB00001C094E0892B7D9B02C090E001C098E0C8 +:100CC000892B7E9B02C090E001C090E1892B9FB1EF +:100CD0009095991F9927991F9295990F907E892B2E +:100CE0000FC08091000181114BC080E40E945D051E +:100CF00080930001882389F1B12C0E947F058B2D00 +:100D0000F8019081981719F08083C09201010E9428 +:100D1000A20521960F5F1F4FCE30D10509F079CF84 +:100D200080910101882371F1815080930101882312 +:100D300039F08FE99FE00197F1F700C0000022C071 +:100D4000ACE4B1E0EEE3F1E081918D9391E0EC341D +:100D5000F907D1F717C090E0A5CF83E10E9487057E +:100D6000809300018111C8CF81E40E945D058093CA +:100D700000018111C1CF0E949805B82EB094BDCF5B +:100D800080E0BECF0E94980481E0DF91CF911F9157 +:100D90000F91FF90EF90DF90CF90BF900895E82FD4 +:100DA000F0E0E45BFE4F8081089508958B3B910550 +:100DB00078F4883A910540F5853A9105D0F484306D +:100DC000910508F0B1C08130910509F4ADC06BC048 +:100DD000803E910508F467C0883E910508F4A4C0E0 +:100DE0009C01205F31092031310508F05CC090651D +:100DF0000895853A910509F459C0863A910509F498 +:100E000058C083E890E40895883A910509F454C0E5 +:100E1000893A910509F453C08A3A910509F452C000 +:100E20008B3A910509F451C08C3A910509F450C0F0 +:100E30008D3A910509F44FC0803B910509F44EC0ED +:100E40008E3A910509F44DC08F3A910509F44CC0D2 +:100E5000813B910509F44BC0823B910509F44AC0DE +:100E6000833B910509F449C0843B910509F448C0CE +:100E7000853B910509F447C0863B910509F446C0BE +:100E8000873B910509F445C0883B910509F444C0AE +:100E9000893B910509F443C08A3B910509F042C0A2 +:100EA0008AE296E4089580E090E0089581E890E475 +:100EB000089582E890E4089582EE94E4089589EE1E +:100EC00094E408958AEE94E4089585EB94E40895FB +:100ED00086EB94E4089587EB94E408958CEC94E415 +:100EE00008958DEC94E4089583E895E408958AE8E4 +:100EF00095E4089582E995E4089584E995E40895D8 +:100F000081E296E4089583E296E4089584E296E40B +:100F1000089585E296E4089586E296E4089587E2CE +:100F200096E4089580E094E40895089596E0799F0A +:100F3000F001112494E5899FE00DF11D1124E60FC5 +:100F4000F11DEE0FFF1FE050FF4F85919491089522 +:100F5000880F991F8C589040FC01859194910895B9 +:100F6000880F991F8C509F4FFC0185919491089593 +:100F700026E0729FF001112444E5849FE00DF11DED +:100F80001124E60FF11DEE0FFF1FE050FF4F2591DA +:100F90003491C9019A9581159F4110F4C9010895B2 +:100FA000C90190528115904128F4C9019F700E9497 +:100FB000B0070895C90190538115904120F4C901EB +:100FC0009927906C0895211580E5380769F40E94EF +:100FD00058159FEF24E34CE0915020404040E1F74A +:100FE00000C000000C94601C213080E5380731F40B +:100FF0008091D50181608093D5010895C9019055F4 +:101000008115904108F050C0832F99278F70992740 +:1010100081309105D9F4A9014370552702C0880F8A +:10102000991F4A95E2F79C68A90164E0440F551F97 +:101030006A95E1F744275370842B952B73E0220FB8 +:10104000331F7A95E1F7207633271DC08230910552 +:1010500029F4922F8827816F906A08958330910533 +:10106000A9F4A9014370552781E090E002C0880FE0 +:10107000991F4A95E2F79C6843E0220F331F4A9577 +:10108000E1F7207E3770822B932B08950497F1F4BB +:10109000A9014370552781E090E002C0880F991F95 +:1010A0004A95E2F79A68E8CFC901905781159041B7 +:1010B00020F4C9019F7090620895C901905881156C +:1010C000904120F4C9019F70906A0895203E310537 +:1010D000E0F4203C310558F52133310509F470C0A6 +:1010E00048F42932310509F464C02A32310509F483 +:1010F0006EC074C029333105F1F022383105D9F0C2 +:101100002533310509F44EC069C0233E310589F10C +:1011100038F4203E3105C1F0223E3105E1F05EC0D9 +:10112000263E310569F1273E3105A9F157C0C901B5 +:101130000E94A80708958091E80180FD02C081FF08 +:101140004DC080EE90E04BC08091E80180FFF9CF68 +:1011500089E390E044C08091E80182FF0EC0809155 +:10116000E80184FF03C080E090E039C083EE90E0A6 +:1011700036C08091E80182FFF2CF82EE90E02FC06E +:101180008091E80183FF0BC08091E80184FDEBCFE3 +:1011900087EE90E024C08091E80183FFF5CF86EED2 +:1011A00090E01DC08091E80185FF07C089E290E0D2 +:1011B00016C08091E80185FFF9CF85E390E00FC06C +:1011C0008091E80186FF07C08AE290E008C0809124 +:1011D000E80186FFF9CF81E390E001C0C9010E94D8 +:1011E000D606089508950C94F20880916A01089536 +:1011F000CF93DF9300D01F92CDB7DEB72091EE01E1 +:10120000243019F523E029839B838A832093E90006 +:101210008FEF9091E800815095FD06C095ED9A956D +:10122000F1F700008111F5CF8091E80085FF0DC036 +:1012300040E050E063E070E0CE0101960E94620B56 +:101240008091E8008E778093E8000F900F900F90C8 +:10125000DF91CF910895CF93DF9300D01F92CDB748 +:10126000DEB72091EE01243021F522E029839B8313 +:101270008A8383E08093E9008FEF9091E8008150AA +:1012800095FD06C095ED9A95F1F700008111F5CF17 +:101290008091E80085FF0DC040E050E063E070E021 +:1012A000CE0101960E94620B8091E8008E778093B8 +:1012B000E8000F900F900F90DF91CF91089520914B +:1012C000EE012430F1F422E02093E9002FEF309179 +:1012D000E800215035FD06C035ED3A95F1F70000E4 +:1012E0002111F5CF2091E80025FF0BC040E050E030 +:1012F00065E070E00E94620B8091E8008E77809339 +:10130000E8000895CF93DF93EC018091EE018430E3 +:1013100009F046C090910C019923D9F090910D01EC +:101320009923B9F08093E9008FEF9091E800815004 +:1013300095FD06C095E19A95F1F700008111F5CF72 +:101340008091E80085FF2CC040E050E060E170E053 +:1013500017C081E08093E9008FEF9091E800815001 +:1013600095FD06C095ED9A95F1F700008111F5CF36 +:101370008091E80085FF14C040E050E068E070E034 +:10138000CE010E94620B8091E8008E778093E80086 +:1013900080E1FE01AAE5B1E001900D928A95E1F7A6 +:1013A000DF91CF9108958091ED01811109C00E94D4 +:1013B000F40C0E94510D8091E20084608093E20061 +:1013C00008951092ED01089508950C9486220E94CC +:1013D000F71B0E948C220E94EE0F0C94F30842E04F +:1013E00061EC81E00E946E0C42E061EC82E00E94C0 +:1013F0006E0C42E061EC83E00E946E0C42E161EC15 +:1014000084E00C946E0C8091F001833009F455C097 +:1014100030F4813071F0823009F48EC008958A3042 +:1014200009F47AC08B3009F460C0893009F09CC09F +:1014300020C08091EF01813A09F096C08091E800C8 +:10144000877F8093E8008091F3019091F401892BCC +:1014500021F060E080E090E003C060E18AE591E087 +:1014600070E00E94AB0B8091E8008B778093E800DE +:1014700008958091EF01813209F076C08091F301E7 +:101480009091F401009719F0039709F06DC08091D5 +:10149000E800877F8093E8008091E80082FD05C026 +:1014A0008091EE018111F8CF5FC08091F1008093AF +:1014B0006A018091E8008B7753C08091EF01813AF7 +:1014C00009F052C08091F3019091F401892B09F049 +:1014D0004BC08091E800877F8093E8008091E8000E +:1014E00080FFFCCF80910C0136C08091EF018132EA +:1014F000D9F58091F3019091F401892BA9F58091A0 +:10150000E800877F8093E8000E94A30C8091F1019E +:1015100080930C010C9458158091EF01813221F5D4 +:101520008091E800877F8093E8000E94A30C80915F +:10153000F20180936B0108958091EF01813AA1F44B +:101540008091E800877F8093E8008091E80080FF29 +:10155000FCCF80916B018093F1008091E8008E7741 +:101560008093E8000C94A30C089584B7877F84BF10 +:1015700088E10FB6F89480936000109260000FBE6F +:1015800090E080E80FB6F89480936100909361003A +:101590000FBE0E943D100E94F40C0E94510D8091DC +:1015A000E20084608093E20078940E94CC0F0E9455 +:1015B0003F1082E091E00E94E90F0E947422809126 +:1015C000EE01853069F40E94BA1B8091EC018823FA +:1015D000B1F30E94E21B882391F30E944C0BEFCFE2 +:1015E0000E944510ECCF292F332723303105A9F075 +:1015F0006CF42130310509F442C02230310509F084 +:1016000043C08DE690E024ED33E042C02132310545 +:10161000C9F02232310519F137C09927813091057F +:1016200041F08230910541F0892B71F5E0EDF3E056 +:1016300005C0E8EBF3E002C0E0EAF3E0849190E05B +:101640009F0126C0643000F5E62FF0E0EE0FFF1F8B +:10165000EE5DFE4F2081318189E090E019C0643059 +:1016600098F4E62FF0E0DF01AA0FBB1FA65EBE4F85 +:101670002D913C91EA5EFE4F808190E009C082E1AD +:1016800090E021E434E004C080E090E020E030E02D +:10169000FA0131832083089580E189BD82E189BD0B +:1016A00009B400FEFDCF8091D8008F7D8093D800D3 +:1016B0008091E00082608093E0008091E00081FDF5 +:1016C000FCCF0895CF92DF92EF92FF920F931F937A +:1016D000CF93DF937C018B01EA010E94C40C81113E +:1016E00031C0209731F088819981081B190BE80ED1 +:1016F000F91EC12CD12C0115110519F18091E800BA +:1017000085FD14C08091E8008E778093E8002097D3 +:1017100041F0888199818C0D9D1D9983888385E096 +:1017200011C00E94C40C882331F30CC0F7018191D1 +:101730007F018093F10001501109FFEFCF1ADF0AFA +:10174000DACF80E0DF91CF911F910F91FF90EF9062 +:10175000DF90CF9008952091F5013091F601261782 +:10176000370748F06115710539F42091E8002E77AC +:101770002093E80001C0B901FC0120E0611571056A +:10178000B9F18091EE01882309F440C0853009F455 +:101790003FC08091E80083FD3DC08091E80082FF5A +:1017A00006C08091E80082FF26C080E00895809105 +:1017B000E80080FFE3CF2091F3008091F20090E0F9 +:1017C000922B6115710551F08830910538F4219103 +:1017D0002093F100615071090196F3CF21E0089741 +:1017E00009F020E08091E8008E778093E800C6CF72 +:1017F0002111C7CFD6CF8091EE01882339F08530F3 +:1018000039F08091E80083FFCCCF04C082E00895D6 +:1018100083E0089581E008952091F5013091F6016B +:101820002617370748F06115710539F42091E80053 +:101830002E772093E80001C0B901FC0120E061157A +:101840007105C1F18091EE01882309F441C0853012 +:1018500009F440C08091E80083FD3EC08091E8001B +:1018600082FF06C08091E80082FF27C080E00895D3 +:101870008091E80080FFE3CF2091F3008091F20097 +:1018800090E0922B6115710559F08830910540F474 +:1018900024912093F1003196615071090196F2CFA5 +:1018A00021E0089709F020E08091E8008E7780938E +:1018B000E800C5CF2111C6CFD5CF8091EE01882396 +:1018C00039F0853039F08091E80083FFCBCF04C038 +:1018D00082E0089583E0089581E00895982F97307D +:1018E00058F59093E900981739F07091EC00209129 +:1018F000ED005091F00003C0242F762F50E021FF1F +:1019000019C03091EB003E7F3093EB003091ED0039 +:101910003D7F3093ED003091EB0031603093EB0070 +:101920007093EC002093ED005093F0002091EE00B6 +:1019300027FF07C09F5FD3CF8F708093E90081E0BE +:10194000089580E008958091EF0187FD05C08091A2 +:10195000E80080FF0EC012C08091E80082FD05C043 +:101960008091EE018111F8CF08958091E8008B7786 +:1019700008C08091EE018111EACF08958091E800BE +:101980008E778093E80008958091E4009091E500BF +:1019900045E62091EC0020FF21C02091E80020FDC9 +:1019A00021C02091EE01222389F0253089F0209179 +:1019B000EB0025FD0FC02091E4003091E5002817D1 +:1019C000390739F3415041F0C901E3CF82E008956E +:1019D00083E0089581E0089584E008952091E8006F +:1019E00022FFDFCF80E008950E94620D0E946A0D01 +:1019F000E0EEF0E0808181608083E8EDF0E08081BE +:101A00008F77808319BCA7EDB0E08C918E7F8C938B +:101A100080818F7E80831092ED0108950F931F9334 +:101A2000CF93DF930E94620D0E946A0DC8EDD0E053 +:101A300088818F77888388818068888388818F7D7B +:101A4000888319BC1092EE011092EA011092EC0109 +:101A50001092EB0100EE10E0F80180818B7F808313 +:101A600088818160888342E060E080E00E946E0CA3 +:101A7000E1EEF0E080818E7F8083E2EEF0E0808115 +:101A800081608083808188608083F80180818E7F7F +:101A90008083888180618883DF91CF911F910F912E +:101AA0000895E8EDF0E080818F7E8083E7EDF0E03F +:101AB00080818160808384E082BF81E08093ED013A +:101AC0000C940E0DE8EDF0E080818E7F8083109203 +:101AD000E20008951092DA001092E10008951F923A +:101AE0000F920FB60F9211242F933F934F935F9352 +:101AF0006F937F938F939F93AF93BF93EF93FF93D6 +:101B00008091E10082FF0BC08091E20082FF07C05C +:101B10008091E1008B7F8093E1000E94CB0F809148 +:101B2000DA0080FF1FC08091D80080FF1BC0809129 +:101B3000DA008E7F8093DA008091D90080FF0DC09B +:101B400080E189BD82E189BD09B400FEFDCF81E05D +:101B50008093EE010E94D30905C019BC1092EE01DA +:101B60000E94E1098091E10080FF19C08091E200AC +:101B700080FF15C08091E2008E7F8093E20080910B +:101B8000E20080618093E2008091D80080628093BF +:101B9000D80019BC85E08093EE010E94E509809190 +:101BA000E10084FF30C08091E20084FF2CC080E11E +:101BB00089BD82E189BD09B400FEFDCF8091D800C6 +:101BC0008F7D8093D8008091E1008F7E8093E1002B +:101BD0008091E2008F7E8093E2008091E20081603C +:101BE0008093E2008091EA01882311F084E007C02D +:101BF0008091E30087FF02C083E001C081E0809311 +:101C0000EE010E94E7098091E10083FF29C08091E5 +:101C1000E20083FF25C08091E100877F8093E1008F +:101C200082E08093EE011092EA018091E1008E7FC4 +:101C30008093E1008091E2008E7F8093E2008091AA +:101C4000E20080618093E20042E060E080E00E9478 +:101C50006E0C8091F00088608093F0000E94E4098F +:101C6000FF91EF91BF91AF919F918F917F916F9174 +:101C70005F914F913F912F910F900FBE0F901F904A +:101C800018951F920F920FB60F9211242F933F9326 +:101C90004F935F936F937F938F939F93AF93BF9374 +:101CA000CF93EF93FF93C091E900CF708091EC0048 +:101CB0001092E9008091F000877F8093F000789483 +:101CC0000E947D0E1092E9008091F0008860809360 +:101CD000F000C093E900FF91EF91CF91BF91AF91D8 +:101CE0009F918F917F916F915F914F913F912F9134 +:101CF0000F900FBE0F901F9018951F93CF93DF93F7 +:101D0000CDB7DEB7AA970FB6F894DEBF0FBECDBF32 +:101D1000EFEEF1E08091F100819321E0E73FF207DF +:101D2000C9F70E94030A8091E80083FF1CC120913B +:101D3000EF013091F001832F90E08A30910508F097 +:101D400012C1FC01E05AFF4F0C940E24203881F0A0 +:101D5000223809F008C18091F3018F708093E90067 +:101D60008091EB0085FB882780F91092E90006C07E +:101D70008091EB019091EC01911182609091E800CB +:101D8000977F9093E8008093F1001092F100C5C016 +:101D9000822F8D7F09F0E7C0222319F0223061F0F5 +:101DA000E2C08091F101813009F0DDC0333009F0EB +:101DB00080E08093EC0128C08091F101811124C062 +:101DC0002091F3012F7009F4CEC02093E900809197 +:101DD000EB0080FF19C08091EB00333011F480627A +:101DE00011C080618093EB0081E090E0022E01C081 +:101DF000880F0A94EAF78093EA001092EA00809133 +:101E0000EB0088608093EB001092E9008091E8007D +:101E1000877F86C02111A7C01091F1011F778091A3 +:101E2000E3008078812B8093E3008091E800877F36 +:101E30008093E8000E94A30C8091E80080FFFCCF13 +:101E40008091E30080688093E300112311F083E028 +:101E500001C082E08093EE0186C02058223008F055 +:101E600082C08091F1019091F2018C3D23E09207B4 +:101E700079F583E08A838AE289834FB7F894DE019B +:101E8000139620E03EE051E2E32FF0E0509357003C +:101E9000E49120FF03C0E295EF703F5FEF708E2F5B +:101EA00090E0EA3010F0C79601C0C0968D939D93E4 +:101EB0002F5F243149F74FBF8091E800877F8093DF +:101EC000E8006AE270E0CE0101960E94AB0B14C0FC +:101ED000AE014F5F5F4F6091F3010E94F30A0097DC +:101EE00009F441C02091E800277F2093E800BC015D +:101EF00089819A810E940C0C8091E8008B778093F5 +:101F0000E80031C0203879F58091E800877F809320 +:101F1000E8008091EA018093F1008091E8008E77DB +:101F20008093E8000E94A30C1EC021111CC0909158 +:101F3000F1019230C0F48091E800877F8093E8003F +:101F40009093EA010E94A30C8091EA01811104C0E0 +:101F50008091E30087FF02C084E001C081E08093AC +:101F6000EE010E94EF098091E80083FF0AC0809192 +:101F7000E800877F8093E8008091EB008062809387 +:101F8000EB00AA960FB6F894DEBF0FBECDBFDF916F +:101F9000CF911F9108950895CF938091EE018823EA +:101FA000B1F08091E9008F709091EC0090FF02C039 +:101FB00090E801C090E0C92FC82B1092E9008091F1 +:101FC000E80083FD0E947D0ECF70C093E900CF91A1 +:101FD000089590937101809370010895E0917001CC +:101FE000F0917101309721F00190F081E02D09947A +:101FF00080E00895E0917001F0917101309721F037 +:102000000280F381E02D09940895E0917001F09130 +:102010007101309721F00480F581E02D0994089535 +:1020200020916E0130916F018217930771F09093A8 +:102030006F0180936E01E0917001F0917101309712 +:1020400021F00680F781E02D0994089520916C011C +:1020500030916D018217930771F090936D01809319 +:102060006C01E0917001F0917101309721F00084D2 +:10207000F185E02D0994089508950C943C100E9478 +:10208000FD1B0E94CA050C94C31CCF92DF92EF92F5 +:10209000FF920F931F93CF93DF93CDB7DEB72B97AC +:1020A0000FB6F894DEBF0FBECDBF0E94E20533E746 +:1020B000E32E31E0F32E00E010E0C02E802F0E94CE +:1020C000CF06F701D1907F01D826B1F40F5F1F4FE3 +:1020D0000E30110591F78FEF89838A831B820E944E +:1020E000061C8160782F9D838C8349815A816B8186 +:1020F0008D810E94E81041C09091D50191FF04C0EC +:102100008B870E94D5068B8520E030E04D2D50E076 +:10211000922FBA01022E02C0759567950A94E2F7D4 +:1021200060FF25C02E83CF82EE24E394F12C02C001 +:10213000EE0CFF1C9A95E2F790E08E219F2121E0A2 +:10214000892B09F420E028870E94061C8160782FE3 +:102150009A8789874E815F8168858A850E94E81009 +:10216000F801ED58FE4F80818E25808306C02F5FD9 +:102170003F4F2630310561F6A9CF0E94A71F10916D +:1021800072010E94EE0F1817A1F00E94EE0F8093CB +:1021900072012B960FB6F894DEBF0FBECDBFDF9154 +:1021A000CF911F910F91FF90EF90DF90CF900C9403 +:1021B000F3082B960FB6F894DEBF0FBECDBFDF91AC +:1021C000CF911F910F91FF90EF90DF90CF900895E6 +:1021D000CF93DF93CDB7DEB72B970FB6F894DEBF62 +:1021E0000FBECDBF4F83588769877A878B87DE0103 +:1021F000119686E0FD0111928A95E9F785E0FE01CE +:10220000379601900D928A95E1F749815A816B8149 +:102210007C818D819E810E9424182B960FB6F894A4 +:10222000DEBF0FBECDBFDF91CF910895CF93C82FF2 +:10223000882309F4C1C0823859F40E94EE0F81FD51 +:10224000BBC089E30E94C11A0E948B1B89E30CC0AA +:10225000833879F40E94EE0F80FDAEC083E50E94C2 +:10226000C11A0E948B1B83E50E94011BCF910C9425 +:102270008B1B843859F40E94EE0F82FD9DC087E4C9 +:102280000E94C11A0E948B1B87E4EECF8CEF8C0F4B +:10229000813A48F48C2F0E94DC2181118DC08C2F53 +:1022A0000E94C11AE3CF80E28C0F883048F4C770D7 +:1022B00081E001C0880FCA95EAF70E94421BD6CF81 +:1022C0008BE58C0F833078F4C53A29F0C63A31F4A7 +:1022D00082E890E005C081E890E002C083E890E0E9 +:1022E000CF910C94101088E58C0F833108F064C0F6 +:1022F000C83A39F1C93A41F1CA3A49F1CB3A51F1F8 +:10230000CC3A59F1CD3A61F1C03B69F1CE3A71F165 +:10231000CF3A79F1C13B81F1C23B89F1C33B91F1E5 +:10232000C43B99F1C53BA1F1C63BA9F1C73BB1F153 +:10233000C83BB9F1C93BC1F1CA3BC9F58AE292E099 +:1023400038C082EE90E035C089EE90E032C08AEE6F +:1023500090E02FC085EB90E02CC086EB90E029C088 +:1023600087EB90E026C08CEC90E023C08DEC90E0F1 +:1023700020C083E891E01DC08AE891E01AC082E99C +:1023800091E017C084E991E014C081E292E011C0AD +:1023900083E292E00EC084E292E00BC085E292E01C +:1023A00008C086E292E005C087E292E002C080E0C9 +:1023B00090E0CF910C942610CF910895882309F4D2 +:1023C0004BC0823859F40E94EE0F81FF45C089E36B +:1023D0000E94C11A0E948B1B89E30CC0833871F4E0 +:1023E0000E94EE0F80FF38C083E50E94C11A0E9450 +:1023F0008B1B83E50E94011B0C948B1B843859F4C2 +:102400000E94EE0F82FF28C087E40E94C11A0E943A +:102410008B1B87E4EFCF9CEF980F913A58F390E233 +:10242000980F983050F4877091E001C0990F8A9509 +:10243000EAF7892F0E94481BDFCF9BE5980F933066 +:1024400020F480E090E00C941010885A833120F43E +:1024500080E090E00C9426100895882321F00E94DB +:10246000421B0C948B1B0895882321F00E94481B6B +:102470000C948B1B0895CF92DF92EF92FF920F93F3 +:102480001F93CF93DF93CDB7DEB728970FB6F8949D +:10249000DEBF0FBECDBF8C0185E0F801DE011196D5 +:1024A00001900D928A95E1F7F80140813181F28027 +:1024B000258122952F7083819481892B31F03F3FB4 +:1024C00031F481E04F3F19F403C081E001C080E0A6 +:1024D00080FDCBC249833A8389819A812F830E94F0 +:1024E0007F1A9E8388870E947E1A0E9451192F812D +:1024F0004E816885FF2029F00E945F1B68854E8110 +:102500002F81E42FE295EF70F0E0E659FF4F0C9435 +:102510000E24842F807F142F1F70882311F01295B2 +:10252000107FFF2059F0112309F454C2812F6887CE +:102530000E94521B0E948B1B68854CC2862F0E94F2 +:10254000DE11112309F491C2812F0E94581B289695 +:102550000FB6F894DEBF0FBECDBFDF91CF911F91B4 +:102560000F91FF90EF90DF90CF900C948B1B342F46 +:10257000307F842F8F70303211F08295807F6623F8 +:1025800019F0613019F12BC0FF20B1F0222309F4BA +:1025900093C1213009F090C128960FB6F894DEBFA0 +:1025A0000FBECDBFDF91CF911F910F91FF90EF90A4 +:1025B000DF90CF900C94721B222319F0213009F484 +:1025C00054C28E830E94751B8E8189C1FF2021F029 +:1025D000223008F04AC270C1211147C280C1FF20D9 +:1025E00021F0222309F468C1F5C1222309F477C13F +:1025F00005C2242F26952695237030E0211531053C +:1026000021F021303105C9F030C2FF2021F0862FA2 +:10261000942F937002C080E090E028960FB6F89453 +:10262000DEBF0FBECDBFDF91CF911F910F91FF9005 +:10263000EF90DF90CF900C941010FF2021F0862FA8 +:10264000942F937002C080E090E028960FB6F89423 +:10265000DEBF0FBECDBFDF91CF911F910F91FF90D5 +:10266000EF90DF90CF900C942610862FFF2019F06A +:102670000E94AF1E02C00E94171F28960FB6F89442 +:10268000DEBF0FBECDBFDF91CF911F910F91FF90A5 +:10269000EF90DF90CF900C949C1F842F837009F0F3 +:1026A00076C0F110E2C1262F229526952770220FC1 +:1026B000220F862F8F70C82ED12CE12CF12C022EE8 +:1026C00004C0CC0CDD1CEE1CFF1C0A94D2F764FF86 +:1026D00010C06FE070E080E090E004C0660F771FEC +:1026E000881F991F2A95D2F76095709580959095CF +:1026F00003C060E070E0CB01242F2695269523705F +:10270000422F50E042305105D1F04330510559F18C +:102710006C297D298E299F294130510541F1289648 +:102720000FB6F894DEBF0FBECDBFDF91CF911F91E2 +:102730000F91FF90EF90DF90CF900C9476196C2959 +:102740007D298E299F2928960FB6F894DEBF0FBEEB +:10275000CDBFDF91CF911F910F91FF90EF90DF9050 +:10276000CF900C9490190E947619C701B601289653 +:102770000FB6F894DEBF0FBECDBFDF91CF911F9192 +:102780000F91FF90EF90DF90CF900C945C19FF2099 +:1027900019F0842F817001C08695882309F465C1E2 +:1027A000262F229526952770220F220F862F8F70B5 +:1027B000C82ED12CE12CF12C022E04C0CC0CDD1C37 +:1027C000EE1CFF1C0A94D2F764FF10C06FE070E0AB +:1027D00080E090E004C0660F771F881F991F2A953C +:1027E000D2F7609570958095909503C060E070E099 +:1027F000CB01242F269526952370422F50E042309E +:102800005105D1F04330510559F16C297D298E29AC +:102810009F294130510541F128960FB6F894DEBF4B :102820000FBECDBFDF91CF911F910F91FF90EF9021 -:10283000DF90CF900C94B119FF2019F0842F817094 -:1028400001C08695882309F465C1262F2295269517 -:102850002770220F220F862F8F70C82ED12CE12CCB -:10286000F12C022E04C0CC0CDD1CEE1CFF1C0A94C3 -:10287000D2F764FF10C06FE070E080E090E004C029 -:10288000660F771F881F991F2A95D2F7609570955C -:102890008095909503C060E070E0CB01242F2695D1 -:1028A00026952370422F50E042305105D1F043303D -:1028B000510559F16C297D298E299F2941305105F7 -:1028C00041F128960FB6F894DEBF0FBECDBFDF9161 -:1028D000CF911F910F91FF90EF90DF90CF900C94CC -:1028E0009F1A6C297D298E299F2928960FB6F89466 -:1028F000DEBF0FBECDBFDF91CF911F910F91FF9033 -:10290000EF90DF90CF900C94B91A0E949F1AC701E4 -:10291000B60128960FB6F894DEBF0FBECDBFDF918B -:10292000CF911F910F91FF90EF90DF90CF900C947B -:10293000851A603FC9F118F4603E50F49BC0623FB5 -:1029400009F460C008F44AC0633F09F46FC092C044 -:10295000162F1F70842F8F71FF2099F00E941E1A6E -:10296000812F28960FB6F894DEBF0FBECDBFDF9142 +:10283000DF90CF900C944A1A6C297D298E299F290C +:1028400028960FB6F894DEBF0FBECDBFDF91CF91B3 +:102850001F910F91FF90EF90DF90CF900C94641A2E +:102860000E944A1AC701B60128960FB6F894DEBF37 +:102870000FBECDBFDF91CF911F910F91FF90EF90D1 +:10288000DF90CF900C94301A603FC9F118F4603E8D +:1028900050F49BC0623F09F460C008F44AC0633F33 +:1028A00009F46FC092C0162F1F70842F8F71FF2004 +:1028B00099F00E94C919812F28960FB6F894DEBFAF +:1028C0000FBECDBFDF91CF911F910F91FF90EF9081 +:1028D000DF90CF900C942D120E94EA19812F289638 +:1028E0000FB6F894DEBF0FBECDBFDF91CF911F9121 +:1028F0000F91FF90EF90DF90CF900C943412FF2057 +:10290000A1F02111B2C0842F8F7128960FB6F894D0 +:10291000DEBF0FBECDBFDF91CF911F910F91FF9012 +:10292000EF90DF90CF900C940F1A223008F09DC0EA +:10293000EACFFF20A1F0842F8F7128960FB6F8946C +:10294000DEBF0FBECDBFDF91CF911F910F91FF90E2 +:10295000EF90DF90CF900C94C919FF2061F3842F82 +:102960008F7128960FB6F894DEBF0FBECDBFDF91F2 :10297000CF911F910F91FF90EF90DF90CF900C942B -:1029800082120E943F1A812F28960FB6F894DEBF5C -:102990000FBECDBFDF91CF911F910F91FF90EF90B0 -:1029A000DF90CF900C948912FF20A1F02111B2C0CA -:1029B000842F8F7128960FB6F894DEBF0FBECDBF5F -:1029C000DF91CF911F910F91FF90EF90DF90CF900B -:1029D0000C94641A223008F09DC0EACFFF20A1F0C9 -:1029E000842F8F7128960FB6F894DEBF0FBECDBF2F -:1029F000DF91CF911F910F91FF90EF90DF90CF90DB -:102A00000C941E1AFF2061F3842F8F7128960FB645 -:102A1000F894DEBF0FBECDBFDF91CF911F910F9114 -:102A2000FF90EF90DF90CF900C943F1AFF2091F031 -:102A3000842F8F7128960FB6F894DEBF0FBECDBFDE -:102A4000DF91CF911F910F91FF90EF90DF90CF908A -:102A50000C94091A28960FB6F894DEBF0FBECDBFAE -:102A6000DF91CF911F910F91FF90EF90DF90CF906A -:102A70000C94FF19FF20A1F0222309F4B1CF862F77 -:102A800028960FB6F894DEBF0FBECDBFDF91CF9171 -:102A90001F910F91FF90EF90DF90CF900C946B11EE -:102AA000222309F4B1CF862F28960FB6F894DEBF03 -:102AB0000FBECDBFDF91CF911F910F91FF90EF908F -:102AC000DF90CF900C9433124F70C8010E94A50480 -:102AD00028960FB6F894DEBF0FBECDBFDF91CF9121 -:102AE0001F910F91FF90EF90DF90CF900C942619DB -:102AF0004F70C80128960FB6F894DEBF0FBECDBF49 -:102B0000DF91CF911F910F91FF90EF90DF90CF90C9 -:102B10000C94EA0728960FB6F894DEBF0FBECDBF1F -:102B2000DF91CF911F910F91FF90EF90DF90CF90A9 -:102B300008950E94B41B0E94C41B0E94891B0E941E -:102B4000E01B0E94F0200E94442080E090E00E9460 -:102B5000651080E090E00C947B100E94A41B0C9404 -:102B600099150E94D41A292F22952F7030E02C300D -:102B700031054CF42A3031056CF4225031092230F1 -:102B8000310590F407C02C30310551F02F3031055C -:102B900039F00AC0803E10F0803F31F481E00895A2 -:102BA00093FB882780F9089580E00895CF93DF9301 -:102BB00000D000D01F92CDB7DEB70F900F900F90CE -:102BC0000F900F90DF91CF910895CF93DF9300D0B6 -:102BD00000D000D0CDB7DEB726960FB6F894DEBF92 -:102BE0000FBECDBFDF91CF9108951F93CF93DF9399 -:102BF000C091790116E080917A01C81799F0D0E070 -:102C00001C9FF0011D9FF00D1124E558FE4F4081DF -:102C1000518162817381848195810E94E51521969D -:102C2000C770E9CFDF91CF911F9108954091AB011B -:102C30005091AC016091AD017091AE018091AF01F6 -:102C40009091B0010C94E515CF938091B0018295DD -:102C50008F7009F05FC08091AD01882309F45AC0DC -:102C600020917901A0917A016091AB017091AC0142 -:102C70008091AE019091AF0131E06F3F09F030E0FB -:102C8000B32FC6E02A1709F445C0009721F07F3F13 -:102C900021F44B2F03C041E001C040E030E040FD93 -:102CA00035C0C29FF001C39FF00D1124E558FE4FBF -:102CB000418174132BC04081641328C042814111AB -:102CC00025C0438154814817590710F441505109D8 -:102CD000481B590B483C5105C8F48091B0018F70D6 -:102CE00080618093B00186E0829FF001839FF00DA8 -:102CF0001124E058FE4F80818F70806180838BEAC1 -:102D000091E00E949012CF910C94F5152F5F3F4FE8 -:102D10002770B8CFCF910895CF92DF92EF92FF92B4 -:102D20000F931F93CF93DF93CDB7DEB762970FB6A4 -:102D3000F894DEBF0FBECDBF8C0185E0F801DE0147 -:102D40001D9601900D928A95E1F7D8014C9111964C -:102D50005C91119712966C9112971396ED90FC90DE -:102D600014977091AB01E091AC012091AE013091CC -:102D7000AF012115310531F0EF3F31F481E07F3FA4 -:102D800019F403C081E001C080E0B82FB170CB2EF0 -:102D900080FD6CC1D090AD01DD2009F4F5C0F0914B -:102DA000B001E216F30638F0C701821B930B883C92 -:102DB000910548F09BC0209530952E0D3F1D283C75 -:102DC000310508F093C08F2F807F09F052C0E513C2 -:102DD00014C0741312C0D62E61110FC0FF70F061C1 -:102DE000F093B0010E9416168BEA91E00E949012B7 -:102DF0008091B001F80185836CC1EF2831F05F3F0D -:102E000031F481E04F3F19F403C081E001C080E05C -:102E100080FD03C081E0862701C080E0F82FF170BB -:102E2000FF2E80FF1CC08091790120917A0136E04D -:102E3000821709F428C190E0389FF001399FF00D06 -:102E40001124E558FE4F7181571306C07081471356 -:102E500003C07281671303C001968770E9CFD62E35 -:102E6000662309F436C18091B00181608093B0017E -:102E700053C0E51308C0741306C0611104C0D80123 -:102E80001596FC93AEC04D875E878D859E856A8BB7 -:102E90000E94B1156A89882329F1D62E662311F183 -:102EA0002091B001822F82958F7090E002970CF4F0 -:102EB00060C08091AB019091AC0198878F83198697 -:102EC000FB86EA862C87CE01079651C0E51731F1C3 -:102ED0004D875E878D859E856A8B0E94B1156A89B4 -:102EE00081112EC0C8010E949012A4C08F2F807F34 -:102EF00069F77E2DF98AE88A89890E94D6158BEABE -:102F000091E00E949012EBEAF1E086E0DF011D9271 -:102F10008A95E9F70E941616D12CDBC07413D8CF1E -:102F20006111D6CFD8011596FC93C8010E9490126A -:102F3000EBEAF1E086E0DF011D928A95E9F7C9C06E -:102F4000D62E662379F22091B001822F82958F7060 -:102F500090E0029774F08091AB019091AC019A835C -:102F600089831B82FD82EC822E83CE0101960E9412 -:102F7000901286E0F801ABEAB1E001900D928A95DB -:102F8000E1F70E9424166FC0E216F30628F0C7018D -:102F9000821B930B9C0104C0209530952E0D3F1D84 -:102FA000283C310508F052C0D62E662309F49ACF8A -:102FB000E5132CC074132AC08091B00180FD1DC0A0 -:102FC000982F92959F70C9F0D80115968C931597FC -:102FD0009F3039F09F5F9295907F8F70892B159667 -:102FE0008C93C8010E94901286E0F801ABEAB1E030 -:102FF00001900D928A95E1F736C086E0F801ABEAC0 -:10300000B1E001900D928A95E1F763C04D875E872C -:103010008D859E850E94B115882379F086E0F801A0 -:10302000ABEAB1E001900D928A95E1F70E94241677 -:103030000E941616DD24D3944CC08091B0018160AB -:103040008093B001C8010E94901243C07E2DF98A7E -:10305000E88A89890E94D615EBEAF1E086E0DF0173 -:103060001D928A95E9F70E94161633C0662309F46B -:1030700039CF4D875E878D859E850E94B115882347 -:1030800009F430CFCBCF4D875E878D859E850E941A -:10309000D41A292F22952F7030E0223031052CF4DC -:1030A0009F7041F0811106C00CC0243031052CF412 -:1030B0009F7049F4805E883020F0C8010E94901211 -:1030C000CF2CDC2C06C0D80115969C91907F91F7EF -:1030D000F8CF8D2D62960FB6F894DEBF0FBECDBF30 -:1030E000DF91CF911F910F91FF90EF90DF90CF90E4 -:1030F00008951F93CF93DF93CDB7DEB72C970FB60C -:10310000F894DEBF0FBECDBF4F83588769877A879B -:103110008B879C87CE0107960E948C168823C1F06E -:103120002F8138858A859B85892B31F03F3F11F0AF -:1031300080E003C02F3FE1F781E0811147C04F815C -:10314000588569857A858B859C850E94E5153EC0EA -:1031500086E0FE013796DE01119601900D928A9568 -:10316000E1F7FF81E8854A855B854115510531F01E -:10317000EF3F31F481E0FF3F19F403C081E001C06B -:1031800080E080FD23C020917A0130E0C9010196E2 -:10319000877099276091790170E086179707F1F1A0 -:1031A000F983EA835D834C8396E0929FD001939FDD -:1031B000B00D1124A558BE4FFE01319601900D921D -:1031C0009A95E1F780937A010E94F51516E08091B7 -:1031D000790190917A01891779F1189FC001112422 -:1031E00085589E4F0E948C16882331F1E091790119 -:1031F0001E9FF0011124E558FE4F408151816281EC -:103200007381848195810E94E5158091790190E018 -:1032100001968770992780937901D9CF0E94AD15C7 -:1032200010927A0110927901EBEAF1E086E0DF0179 -:103230001D928A95E9F7CACF2C960FB6F894DEBF97 -:103240000FBECDBFDF91CF911F910895EF92FF92F6 -:103250000F931F93CF93DF93FC01009709F46FC086 -:10326000F12CEE24E394EF0121968491843740F40D -:10327000843008F055C0813081F0823021F15FC088 -:10328000853709F447C0C0F19CE7980F903708F0E4 -:1032900056C08F770E94331245C08F010E5F1F4FBB -:1032A000FE01849190E2980F983050F48770FE2DC3 -:1032B00001C0FF0F8A95EAF78F2F0E94B71B15C038 -:1032C0000E946B1114C08F010E5F1F4FFE0184918D -:1032D00090E2980F983068F48770FE2D01C0FF0FC0 -:1032E0008A95EAF78F2F0E94BD1B0E94E01BE80120 -:1032F00019C00E943312FBCFCF010296FE01C49188 -:10330000CC2361F0EFE9FFE03197F1F700C0000056 -:10331000C150F6CFCF010296FE01F490EC0102C03D -:103320000E946B118F2D882341F0EFE9FFE0319768 -:10333000F1F700C000008150F6CFFE0194CFDF917D -:10334000CF911F910F91FF90EF9008950895609392 -:10335000B5017093B6018093B7019093B8010C94B6 -:1033600099150F931F930091B5011091B60120910B -:10337000B7013091B801062B172B282B392B00935E -:10338000B5011093B6012093B7013093B8011F9196 -:103390000F910C9499150F931F930091B501109103 -:1033A000B6012091B7013091B801062317232823D5 -:1033B00039230093B5011093B6012093B7013093E0 -:1033C000B8011F910F910C9499150F931F930091C1 -:1033D000B5011091B6012091B7013091B8010627CF -:1033E0001727282739270093B5011093B60120939A -:1033F000B7013093B8011F910F910C949915109259 -:10340000B1011092B2011092B3011092B4010C9468 -:10341000991541E050E060E070E004C0440F551F92 -:10342000661F771F8A95D2F74093B1015093B2017E -:103430006093B3017093B4010C94991541E050E08E -:1034400060E070E004C0440F551F661F771F8A9527 -:10345000D2F78091B1019091B201A091B301B091E6 -:10346000B401842B952BA62BB72B8093B10190939D -:10347000B201A093B301B093B4010C94991541E04B -:1034800050E060E070E004C0440F551F661F771FD6 -:103490008A95D2F740955095609570958091B101CD -:1034A0009091B201A091B301B091B401842395230E -:1034B000A623B7238093B1019093B201A093B301E7 -:1034C000B093B4010C94991541E050E060E070E0D5 -:1034D00004C0440F551F661F771F8A95D2F780914D -:1034E000B1019091B201A091B301B091B4018427D0 -:1034F0009527A627B7278093B1019093B201A09397 -:10350000B301B093B4010C9499150F931F930091DC -:10351000B1011091B2012091B3013091B401062B99 -:10352000172B282B392B0093B1011093B201209354 -:10353000B3013093B4011F910F910C9499150F931F -:103540001F930091B1011091B2012091B30130910C -:10355000B40106231723282339230093B1011093C4 -:10356000B2012093B3013093B4011F910F910C94D9 -:1035700099150F931F930091B1011091B201209101 -:10358000B3013091B4010627172728273927009364 -:10359000B1011093B2012093B3013093B4011F9194 -:1035A0000F910C9499150895CF92DF92EF92FF92AC -:1035B0000F931F93CF93DF93EC01C090B501D09090 -:1035C000B601E090B701F090B8018091B1019091FF -:1035D000B201A091B301B091B401C82AD92AEA2A54 -:1035E000FB2A0FE110E0B701A601002E04C076957A -:1035F0006795579547950A94D2F740FF07C0BE01DB -:10360000802F0E940D088130910539F40150110975 -:1036100050F7BE0180E00E940D08DF91CF911F910D -:103620000F91FF90EF90DF90CF90089590910C0153 -:103630009923D9F090910D019923B9F0982F96957F -:10364000969596959F3088F5E0910E01F0910F01C7 -:10365000E90FF11D877021E030E001C0220F8A954B -:10366000EAF78181822B8183089540910E01509168 -:103670000F0120E030E09FEFFA01E20FF31F6281BB -:10368000681799F09F3F19F4611101C0922F2F5FC5 -:103690003F4F2E30310581F79F3F39F0FA01E90F96 -:1036A000F11D97FDFA9582830895089590910C017C -:1036B0009923E1F090910D019923C1F0982F9695EF -:1036C000969596959F3020F5E0910E01F0910F01AF -:1036D000E90FF11D877021E030E001C0220F8A95CB -:1036E000EAF72095818128232183089540910E01D6 -:1036F00050910F0120E030E0FA01E20FF31F9281B8 -:10370000981301C012822F5F3F4F2E303105A1F771 -:10371000089581E090E0E0910E01F0910F01E80F33 -:10372000F91F1082019680319105A9F708959091B3 -:10373000CC01982B9093CC01089580959091CC0169 -:1037400098239093CC0108951092CC010895909104 -:10375000CB01982B9093CB01089580959091CB014C -:1037600098239093CB0108951092CB0108959091E6 -:10377000CA01982B9093CA01089580959091CA012F -:1037800098239093CA0108951092CA0108958093D6 -:10379000B90108951092B901089540910E01509118 -:1037A0000F0120E030E080E0FA01E20FF31F918189 -:1037B00091118F5F2F5F3F4F2F303105A9F708958B -:1037C000E0910E01F0910F018091CC018083E09196 -:1037D0000E01F0910F0180819091CB01892B8083A4 -:1037E000E0910E01F0910F0180819091CA01892B27 -:1037F00080839091B901992361F0E0910E01F091DD -:103800000F018081892B80830E94CD1B8111109232 -:10381000B90180910E0190910F010C944F10CF923D -:10382000DF92EF92FF920F931F936C01EE24FF241F -:10383000C114D104E104F10421F46B017C0180E0A6 -:1038400001C080E133272F2D1E2D0D2D01151105EF -:103850002105310519F0885F68017901970186011A -:10386000A4E03695279517950795AA95D1F70115E8 -:1038700011052105310519F08C5F68017901970167 -:103880008601F2E03695279517950795FA95D1F7B9 -:10389000011511052105310519F08E5F68017901C7 -:1038A000B701A6017695679557954795452B462B09 -:1038B000472B09F08F5F1F910F91FF90EF90DF90E2 -:1038C000CF9008958091E601843009F11092CE01E5 -:1038D00020E488E190E00FB6F894A895809360000A -:1038E0000FBE2093600083B7817F846083BF83B75E -:1038F000816083BF7894889583B78E7F83BF88E18A -:103900000FB6F89480936000109260000FBE089587 -:1039100008950895CF930E94881C0E9437060E9444 -:10392000891CC0E08C2F0E942407811105C0CF5F45 -:10393000CE30C1F780E001C081E0CF9108950E94B0 -:10394000AD150E9443100C94480982E084BD93E0B9 -:1039500095BD9AEF97BD80936E0008952FB7F894A8 -:103960008091CF019091D001A091D101B091D2016D -:103970002FBF0895CF92DF92EF92FF920F931F9384 -:103980002FB7F8944091CF015091D0016091D101AF -:103990007091D2012FBF6A017B01EE24FF248C01BC -:1039A00020E030E0C016D106E206F30610F44150E4 -:1039B0005109481B590BCA011F910F91FF90EF90BD -:1039C000DF90CF9008951F920F920FB60F9211249F -:1039D0008F939F93AF93BF938091CF019091D0012C -:1039E000A091D101B091D2010196A11DB11D80938A -:1039F000CF019093D001A093D101B093D201BF9198 -:103A0000AF919F918F910F900FBE0F901F901895BF -:103A10000E94490DF8942FEF87EA91E621508040EB -:103A20009040E1F700C0000087E090EBDC0180935C -:103A3000EF019093F001A093F101B093F2012CE01B -:103A400088E190E00FB6F894A895809360000FBECF -:103A500020936000FFCFEF92FF920F931F93CF93BD -:103A6000DF93E82EF12C8F2D0E942407C0E0D0E0D8 -:103A7000082F10E098010C2E02C0359527950A9466 -:103A8000E2F720FD05C02196C630D10599F709C09F -:103A90006C2F7F2D80E00E94EB07E812F4CF81E0CD -:103AA00005C0F3948EE0F812DECF80E0DF91CF9175 -:103AB0001F910F91FF90EF900895CF93C82F8CE244 -:103AC0000E942B1D882321F08C2FCF910C942B1D4D -:103AD00080E0CF910895CF930E94B01E811102C063 -:103AE0000E94961EC5E6C15049F00E9437068FE33A -:103AF0009CE90197F1F700C00000F5CF89E20E9430 -:103B00005D1D811111C18AE20E945D1D81110E941B -:103B1000961E85E00E945D1D81110E94081D0E9475 -:103B2000BB1E8093CD0187E00E945D1D882399F123 -:103B30008BE10E945D1D882351F09091CD0191FB96 -:103B4000882780F921E0822780FB91F922C08EE04E -:103B50000E945D1D882351F09091CD0192FB882732 -:103B600080F921E0822780FB92F913C080E10E9456 -:103B70005D1D9091CD01882341F093FB882780F94A -:103B800021E0822780FB93F904C0892F809580FB78 -:103B900090F99093CD018091CD010E94BF1E0E94AB -:103BA000CD1E8093E00180EE0E945D1D882341F0D0 -:103BB0008091E001982F909590FB80F98093E0012F -:103BC00089E30E945D1D882359F09091E00191FBEB -:103BD000882780F921E0822780FB91F99093E0010A -:103BE00082EE0E945D1D882359F09091E00192FBC6 -:103BF000882780F921E0822780FB92F99093E001E9 -:103C000086EE0E945D1D882359F09091E00193FBA0 -:103C1000882780F921E0822780FB93F99093E001C7 -:103C200083EE0E945D1D882359F09091E00194FB82 -:103C3000882780F921E0822780FB94F99093E001A6 -:103C400085E30E945D1D882359F09091E00195FB6A -:103C5000882780F921E0822780FB95F99093E00185 -:103C600081E30E945D1D882359F09091E00196FB4D -:103C7000882780F921E0822780FB96F99093E00164 -:103C800081E10E945D1D882359F09091E00197FB2E -:103C9000882780F921E0822780FB97F99093E00143 -:103CA0008091E0010E94D11E8091E00187FB88276E -:103CB00080F980930D0187E20E945D1DC82F8EE17F -:103CC0000E945D1D8111C2608FE10E945D1D811106 -:103CD000C46080E20E945D1D8111C86081E20E9483 -:103CE0005D1D8111C06182E20E945D1D8111C06273 -:103CF00083E20E945D1D8111C06484E20E945D1D0B -:103D0000882311F0C06802C0CC2329F08C2F0E94B8 -:103D1000C81E6C2F03C00E94C41E682F70E080E094 -:103D200090E0CF910C94A719CF9108956DEE7EEF9E -:103D300080E090E00E94EC2460E082E090E00E944D -:103D4000DE2460E083E090E00E94DE2460E084E016 -:103D500090E00E94DE2460E085E090E00C94DE2498 -:103D600080E090E00E94D82421E08D3E9E4F09F033 -:103D700020E0822F089582E090E00C94D024682FF8 -:103D800082E090E00C94DE2483E090E00C94D02458 -:103D9000682F83E090E00C94DE2484E090E00C94A3 -:103DA000D024682F84E090E00C94DE248091D5012B -:103DB00080FF0BC06091130185E0689FB001112462 -:103DC00075956795759567952AC081FF09C06091C3 -:103DD000130185E0689FB0011124759567951FC098 -:103DE00082FF07C06091130185E0689FB001112434 -:103DF00016C04091D6014423C9F0609112014617C4 -:103E000088F72091130185E0289F90011124429F9B -:103E1000C001439F900D112470E00E94A2246038DD -:103E2000710540F46115710539F002C065E070E07C -:103E3000862F08958FE7089581E008958091D50138 -:103E400080FF08C06091110170E0759567957595C8 -:103E5000679521C081FF06C06091110170E07595E2 -:103E6000679519C082FF04C06091110170E010C015 -:103E70008091D6018823C1F0609110018617A0F7C8 -:103E800090911101989FC001112470E00E94A2241A -:103E90006038710528F46115710521F0862F0895A9 -:103EA0008FE7089581E0089561E070E0F4CF803FEE -:103EB00021F40E94D61E819504C0813F29F40E94FE -:103EC000D61E8093D9010895823F21F40E94D61E08 -:103ED000819504C0833F29F40E94D61E8093D801A7 -:103EE0000895893F19F40E941E1F05C08A3F31F4CE -:103EF0000E941E1F81958093DA0108958B3F21F463 -:103F00000E941E1F819504C08C3F29F40E941E1F31 -:103F10008093DB010895843F21F48091D701816073 -:103F200017C0853F21F48091D701826011C0863F80 -:103F300021F48091D70184600BC0873F21F48091E8 -:103F4000D701886005C0883F31F48091D701806136 -:103F50008093D70108958D3F21F48091D501816030 -:103F60000BC08E3F21F48091D501826005C08F3F48 -:103F700029F48091D50184608093D5010895803F14 -:103F800039F48091D90187FF6CC01092D90169C0C2 -:103F9000813F29F48091D9011816BCF362C0909139 -:103FA000D801823F29F497FF5CC01092D80159C014 -:103FB000833F19F41916CCF354C0893F41F4809122 -:103FC000DA0118160CF04DC01092DA014AC08A3F8F -:103FD00029F48091DA0187FF44C0F6CF8B3F39F492 -:103FE0008091DB0187FF3DC01092DB013AC08C3F1E -:103FF00029F48091DB011816BCF333C0843F21F40F -:104000008091D7018E7F17C0853F21F48091D70121 -:104010008D7F11C0863F21F48091D7018B7F0BC02B -:10402000873F21F48091D701877F05C0883F31F415 -:104030008091D7018F7E8093D70113C08D3F21F4EB -:104040008091D5018E7F0BC08E3F21F48091D501E8 -:104050008D7F05C08F3F29F48091D5018B7F8093A0 -:10406000D5018091D80181110EC08091D9018111B3 -:104070000AC08091DA01811106C08091DB018111B3 -:1040800002C01092D601089587ED91E00E945A1067 -:104090000E94AE1C9093D4018093D30108951F9386 -:1040A000CF93DF938091D3019091D4010E94BA1CE9 -:1040B0004091D601442321F02091140130E006C044 -:1040C000209115015AE0259F900111248217930732 -:1040D00008F482C08091D8011091D901D091DA0101 -:1040E000C091DB01811107C0111105C0D11103C0BE -:1040F000CC2309F471C04F3F19F04F5F4093D601B4 -:10410000181624F40E94D61E8093D8018091D801FD -:1041100087FF05C00E94D61E81958093D801111695 -:1041200024F40E94D61E8093D9018091D90187FF83 -:1041300005C00E94D61E81958093D9016091D80157 -:10414000662339F11091D901112319F1772767FD01 -:104150007095872F972F0E94B32323E333E343E324 -:104160005FE30E9417240E9480236093D801612F8F -:10417000772767FD7095872F972F0E94B32323E33E -:1041800033E343E35FE30E9417240E94802360939C -:10419000D9011D1624F40E941E1F8093DA0180911C -:1041A000DA0187FF05C00E941E1F81958093DA0106 -:1041B0001C1624F40E941E1F8093DB018091DB01FA -:1041C00087FF05C00E941E1F81958093DB01DF9150 -:1041D000CF911F910C944420DF91CF911F910895AE -:1041E000E7EDF1E085E0DF011D928A95E9F7109295 -:1041F000D6011092D5010895833081F128F48130E1 -:1042000059F08230D1F00895853009F449C0B8F1F1 -:10421000863009F456C0089520911501862F90E04C -:10422000820F911D8F3F910520F4620F609315015D -:1042300008958FEF80931501089520911401862F22 -:1042400090E0820F911D8F3F910520F4620F6093E3 -:10425000140108958FEF80931401089520911301A4 -:10426000862F90E0820F911D8F3F910520F4620F01 -:104270006093130108958FEF8093130108952091A7 -:104280001201862F90E0820F911D8F3F910520F43F -:10429000620F6093120108958FEF809312010895C9 -:1042A00020911101862F90E0820F911D8F3F910583 -:1042B00020F4620F6093110108958FEF8093110134 -:1042C000089520911001862F90E0820F911D8F3F5D -:1042D000910520F4620F6093100108958FEF809391 -:1042E00010010895833011F128F4813049F08230B3 -:1042F00091F00895853081F120F18630C1F1089563 -:1043000080911501681720F4861B8093150108958C -:1043100010921501089580911401681720F4861BEE -:10432000809314010895109214010895809113014F -:10433000681720F4861B80931301089510921301CF -:10434000089580911201681720F4861B8093120152 -:10435000089510921201089580911101681720F4B8 -:10436000861B809311010895109211010895809188 -:104370001001681720F4861B809310010895109295 -:10438000100108958D3109F442C020F58E3009F4F2 -:1043900079C070F4873009F45EC020F4863009F4E7 -:1043A00042C033C08830D1F18B3009F4A7C02DC092 -:1043B000863109F4A3C038F4803109F46DC081312D -:1043C00009F47BC022C0893109F498C08B3109F40B -:1043D0004FC01BC0853309F479C048F4873209F413 -:1043E00075C008F478C0893209F470C00EC08334F7 -:1043F00038F48A3308F071C0883309F47FC005C0EF -:10440000833409F463C08834C1F080E008950E94C9 -:104410003A230E9443100E94480970C00E94BB1EAC -:104420000E94CD1E6BC08091CD01817F8E7F8093D5 -:10443000CD0181E08093DD0108950E94AD152FEF3D -:1044400083ED90E3215080409040E1F700C00000F0 -:104450000E94081D53C09091CD01892F817090FF5B -:1044600003C0917F9E7F26C091609093CD0146C08E -:104470009091CD0191FB882780F921E0822780FB74 -:1044800091F913C09091CD0192FB882780F921E02A -:10449000822780FB92F909C09091CD0193FB882778 -:1044A00080F921E0822780FB93F99093CD01882346 -:1044B00029F191609093CD0108950E94AD158091EE -:1044C0000D0191E0892780930D0118C061E070E033 -:1044D00080E090E00FC023EE01C027EC280F61E0E0 -:1044E00070E080E090E004C0660F771F881F991F7E -:1044F0002A95D2F70E94A7190E94AD1581E0089570 -:1045000080E0089580E00895CF93C82F8091DD0169 -:10451000813079F018F08230D1F184C0A0910E0181 -:10452000B0910F018C91813169F0823209F07CC029 -:1045300009C0A0910E01B0910F018C91813111F051 -:10454000823249F48C2F0E94802281111DC08C2F51 -:104550000E94C2211AC08C2F0E948222811114C095 -:10456000C43179F048F4CB3079F0C03109F060C043 -:1045700082E08093DD0108C0C93219F0C83321F010 -:1045800057C01092DD0154C081E0817053C0C93220 -:1045900089F118F5C43171F1A8F4C73009F046C0AB -:1045A0008AE08093150194E19093140193E0909335 -:1045B00013018093120188E08093110188E28093B7 -:1045C000100134C0CE51C63088F5EC2FF0E0E65D26 -:1045D000FE4F80818093DC0129C0CE34E9F020F4C5 -:1045E000CB3421F56AE013C0C13579F0C235F1F45E -:1045F00061E00DC08091DC01882319F01092DC018C -:1046000015C081E08093DD0115C061E006C0809196 -:10461000DC010E94FC200AC06AE08091DC010E945B -:10462000722104C01092DD0180E004C081E002C06C -:1046300080E0ABCFCF910895E1E8F0E08081886021 -:1046400080838081816080838FB7F89493E090931A -:10465000890090ED909388008FBF0895EFE6F0E019 -:104660008081826080830895EFE6F0E080818D7F15 -:1046700080830895EFE6F0E0808192E089278083CF -:1046800008951F920F920FB60F9211242F933F930C -:104690004F935F936F937F938F939F93AF93BF934A -:1046A000EF93FF938091DE019091DF01019690934B -:1046B000DF018093DE01811103C082E00E9448097E -:1046C000E091DF01E695E695F0E0E258F74FE491DE -:1046D0008091DE018E1303C080E00E944809FF91A3 -:1046E000EF91BF91AF919F918F917F916F915F916A -:1046F0004F913F912F910F900FBE0F901F901895E3 -:1047000004D06894B1118DC0089570D088F09F577F -:1047100090F0B92F9927B751A0F0D1F0660F771F0D -:10472000881F991F1AF0BA95C9F712C0B13081F0ED -:1047300077D0B1E0089574C0672F782F8827B85FCD -:1047400039F0B93FCCF3869577956795B395D9F74E -:104750003EF490958095709561957F4F8F4F9F4F58 -:104760000895E89409C097FB3EF490958095709564 -:1047700061957F4F8F4F9F4F9923A9F0F92F96E9AD -:10478000BB279395F695879577956795B795F11122 -:10479000F8CFFAF4BB0F11F460FF1BC06F5F7F4FBF -:1047A0008F4F9F4F16C0882311F096E911C07723D1 -:1047B00021F09EE8872F762F05C0662371F096E8DA -:1047C000862F70E060E02AF09A95660F771F881FA9 -:1047D000DAF7880F9695879597F9089557FD9058C1 -:1047E000440F551F59F05F3F71F04795880F97FBB5 -:1047F000991F61F09F3F79F087950895121613066F -:104800001406551FF2CF4695F1DF08C0161617069D -:104810001806991FF1CF86957105610508940895D2 -:10482000E894BB2766277727CB0197F908950BD02B -:1048300078C069D028F06ED018F0952309F05AC0DE -:104840005FC01124EECFCADFA0F3959FD1F3950F7F -:1048500050E0551F629FF001729FBB27F00DB11D04 -:10486000639FAA27F00DB11DAA1F649F6627B00D94 -:10487000A11D661F829F2227B00DA11D621F739F7D -:10488000B00DA11D621F839FA00D611D221F749F8B -:104890003327A00D611D231F849F600D211D822FD2 -:1048A000762F6A2F11249F5750408AF0E1F0882319 -:1048B0004AF0EE0FFF1FBB1F661F771F881F915026 -:1048C0005040A9F79E3F510570F014C0AACF5F3F3A -:1048D000ECF3983EDCF3869577956795B795F79559 -:1048E000E7959F5FC1F7FE2B880F911D96958795E1 -:1048F00097F9089597F99F6780E870E060E0089560 -:104900009FEF80EC089500240A94161617061806E7 -:104910000906089500240A941216130614060506C3 -:104920000895092E0394000C11F4882352F0BB0F54 -:1049300040F4BF2B11F460FF04C06F5F7F4F8F4FB7 -:104940009F4F089597FB072E16F4009407D077FD2C -:1049500009D00E94BC2407FC05D03EF490958195B7 -:104960009F4F0895709561957F4F0895EE0FFF1F3B -:104970000590F491E02D0994AA1BBB1B51E107C0DF -:10498000AA1FBB1FA617B70710F0A61BB70B881FDF -:10499000991F5A95A9F780959095BC01CD0108956E -:1049A000F999FECF92BD81BDF89A992780B50895F7 -:1049B000A8E1B0E042E050E00C94F324262FF999EE -:1049C000FECF1FBA92BD81BD20BD0FB6F894FA9AF2 -:1049D000F99A0FBE019608950E94DE24272F0C94A9 -:1049E000DF24DC01CB01FC01F999FECF06C0F2BD4A -:1049F000E1BDF89A319600B40D9241505040B8F79D -:064A00000895F894FFCFB9 -:104A060020024A09D709B40980094D090101BA01F2 -:104A160028080A03140A3F4D36393F08F207BC0737 -:104A2600830716072F0748076107010203040506D7 -:044A36000708090064 +:10298000EA19FF2091F0842F8F7128960FB6F894E2 +:10299000DEBF0FBECDBFDF91CF911F910F91FF9092 +:1029A000EF90DF90CF900C94B41928960FB6F8945E +:1029B000DEBF0FBECDBFDF91CF911F910F91FF9072 +:1029C000EF90DF90CF900C94AA19FF20A1F0222362 +:1029D00009F4B1CF862F28960FB6F894DEBF0FBE4C +:1029E000CDBFDF91CF911F910F91FF90EF90DF90BE +:1029F000CF900C941611222309F4B1CF862F28967C +:102A00000FB6F894DEBF0FBECDBFDF91CF911F91FF +:102A10000F91FF90EF90DF90CF900C94DE114F70EC +:102A2000C8010E940D0328960FB6F894DEBF0FBEB2 +:102A3000CDBFDF91CF911F910F91FF90EF90DF906D +:102A4000CF900C94D1184F70C80128960FB6F89407 +:102A5000DEBF0FBECDBFDF91CF911F910F91FF90D1 +:102A6000EF90DF90CF900C94950728960FB6F894CE +:102A7000DEBF0FBECDBFDF91CF911F910F91FF90B1 +:102A8000EF90DF90CF9008950E945F1B0E946F1B14 +:102A90000E94341B0E948B1B0E9448200E949C1F96 +:102AA00080E090E00E94101080E090E00C942610EE +:102AB0000E944F1B0C9444150E947F1A292F2295C7 +:102AC0002F7030E02C3031054CF42A3031056CF495 +:102AD000225031092230310590F407C02C303105E5 +:102AE00051F02F30310539F00AC0803E10F0803FA0 +:102AF00031F481E0089593FB882780F9089580E000 +:102B00000895CF93DF9300D000D01F92CDB7DEB7EA +:102B10000F900F900F900F900F90DF91CF9108952D +:102B2000CF93DF9300D000D000D0CDB7DEB726968C +:102B30000FB6F894DEBF0FBECDBFDF91CF910895E1 +:102B40001F93CF93DF93C091810116E080918201A2 +:102B5000C81799F0D0E01C9FF0011D9FF00D1124C3 +:102B6000ED57FE4F4081518162817381848195814F +:102B70000E9490152196C770E9CFDF91CF911F91E8 +:102B800008954091B3015091B4016091B5017091E5 +:102B9000B6018091B7019091B8010C949015CF9334 +:102BA0008091B80182958F7009F05FC08091B50166 +:102BB000882309F45AC020918101A091820160917B +:102BC000B3017091B4018091B6019091B70131E0E9 +:102BD0006F3F09F030E0B32FC6E02A1709F445C073 +:102BE000009721F07F3F21F44B2F03C041E001C04B +:102BF00040E030E040FD35C0C29FF001C39FF00DC2 +:102C00001124ED57FE4F418174132BC04081641392 +:102C100028C04281411125C043815481481759077A +:102C200010F441505109481B590B483C5105C8F458 +:102C30008091B8018F7080618093B80186E0829F97 +:102C4000F001839FF00D1124E857FE4F80818F70B3 +:102C50008061808383EB91E00E943B12CF910C94C2 +:102C6000A0152F5F3F4F2770B8CFCF910895CF9217 +:102C7000DF92EF92FF920F931F93CF93DF93CDB725 +:102C8000DEB762970FB6F894DEBF0FBECDBF8C01E2 +:102C900085E0F801DE011D9601900D928A95E1F71D +:102CA000D8014C9111965C91119712966C911297E4 +:102CB0001396ED90FC9014977091B301E091B401DC +:102CC0002091B6013091B7012115310531F0EF3F68 +:102CD00031F481E07F3F19F403C081E001C080E05E +:102CE000B82FB170CB2E80FD6CC1D090B501DD2026 +:102CF00009F4F5C0F091B801E216F30638F0C70107 +:102D0000821B930B883C910548F09BC02095309521 +:102D10002E0D3F1D283C310508F093C08F2F807F7A +:102D200009F052C0E51314C0741312C0D62E6111FD +:102D30000FC0FF70F061F093B8010E94C11583EBE2 +:102D400091E00E943B128091B801F80185836CC12B +:102D5000EF2831F05F3F31F481E04F3F19F403C0B9 +:102D600081E001C080E080FD03C081E0862701C0D2 +:102D700080E0F82FF170FF2E80FF1CC08091810150 +:102D80002091820136E0821709F428C190E0389F33 +:102D9000F001399FF00D1124ED57FE4F718157134B +:102DA00006C07081471303C07281671303C0019688 +:102DB0008770E9CFD62E662309F436C18091B80119 +:102DC00081608093B80153C0E51308C0741306C036 +:102DD000611104C0D8011596FC93AEC04D875E8783 +:102DE0008D859E856A8B0E945C156A89882329F1EE +:102DF000D62E662311F12091B801822F82958F7013 +:102E000090E002970CF460C08091B3019091B401FE +:102E100098878F831986FB86EA862C87CE010796D2 +:102E200051C0E51731F14D875E878D859E856A8B90 +:102E30000E945C156A8981112EC0C8010E943B1254 +:102E4000A4C08F2F807F69F77E2DF98AE88A89894F +:102E50000E94811583EB91E00E943B12E3EBF1E0CD +:102E600086E0DF011D928A95E9F70E94C115D12CF9 +:102E7000DBC07413D8CF6111D6CFD8011596FC935F +:102E8000C8010E943B12E3EBF1E086E0DF011D92F6 +:102E90008A95E9F7C9C0D62E662379F22091B80148 +:102EA000822F82958F7090E0029774F08091B30129 +:102EB0009091B4019A8389831B82FD82EC822E83D8 +:102EC000CE0101960E943B1286E0F801A3EBB1E02F +:102ED00001900D928A95E1F70E94CF156FC0E2161E +:102EE000F30628F0C701821B930B9C0104C02095B8 +:102EF00030952E0D3F1D283C310508F052C0D62ECE +:102F0000662309F49ACFE5132CC074132AC080916C +:102F1000B80180FD1DC0982F92959F70C9F0D8010F +:102F200015968C9315979F3039F09F5F9295907FFF +:102F30008F70892B15968C93C8010E943B1286E0F6 +:102F4000F801A3EBB1E001900D928A95E1F736C04C +:102F500086E0F801A3EBB1E001900D928A95E1F7CC +:102F600063C04D875E878D859E850E945C15882392 +:102F700079F086E0F801A3EBB1E001900D928A951B +:102F8000E1F70E94CF150E94C115DD24D3944CC0F7 +:102F90008091B80181608093B801C8010E943B1202 +:102FA00043C07E2DF98AE88A89890E948115E3EB66 +:102FB000F1E086E0DF011D928A95E9F70E94C115D4 +:102FC00033C0662309F439CF4D875E878D859E8592 +:102FD0000E945C15882309F430CFCBCF4D875E87E4 +:102FE0008D859E850E947F1A292F22952F7030E0B3 +:102FF000223031052CF49F7041F0811106C00CC0C5 +:10300000243031052CF49F7049F4805E883020F024 +:10301000C8010E943B12CF2CDC2C06C0D8011596AB +:103020009C91907F91F7F8CF8D2D62960FB6F89412 +:10303000DEBF0FBECDBFDF91CF911F910F91FF90EB +:10304000EF90DF90CF9008951F93CF93DF93CDB78C +:10305000DEB72C970FB6F894DEBF0FBECDBF4F83FF +:10306000588769877A878B879C87CE0107960E944D +:1030700037168823C1F02F8138858A859B85892B57 +:1030800031F03F3F11F080E003C02F3FE1F781E0D6 +:10309000811147C04F81588569857A858B859C85CC +:1030A0000E9490153EC086E0FE013796DE01119623 +:1030B00001900D928A95E1F7FF81E8854A855B854D +:1030C0004115510531F0EF3F31F481E0FF3F19F434 +:1030D00003C081E001C080E080FD23C02091820117 +:1030E00030E0C9010196877099276091810170E0F5 +:1030F00086179707F1F1F983EA835D834C8396E0A5 +:10310000929FD001939FB00D1124AD57BE4FFE0189 +:10311000319601900D929A95E1F7809382010E9479 +:10312000A01516E08091810190918201891779F1B3 +:10313000189FC00111248D579E4F0E943716882377 +:1031400031F1E09181011E9FF0011124ED57FE4FF6 +:103150004081518162817381848195810E949015A3 +:103160008091810190E00196877099278093810179 +:10317000D9CF0E9458151092820110928101E3EB81 +:10318000F1E086E0DF011D928A95E9F7CACF2C961F +:103190000FB6F894DEBF0FBECDBFDF91CF911F9168 +:1031A0000895EF92FF920F931F93CF93DF93FC014B +:1031B000009709F46FC0F12CEE24E394EF012196FF +:1031C0008491843740F4843008F055C0813081F018 +:1031D000823021F15FC0853709F447C0C0F19CE718 +:1031E000980F903708F056C08F770E94DE1145C0C7 +:1031F0008F010E5F1F4FFE01849190E2980F98306F +:1032000050F48770FE2D01C0FF0F8A95EAF78F2FCB +:103210000E94621B15C00E94161114C08F010E5F20 +:103220001F4FFE01849190E2980F983068F48770E8 +:10323000FE2D01C0FF0F8A95EAF78F2F0E94681BB1 +:103240000E948B1BE80119C00E94DE11FBCFCF0149 +:103250000296FE01C491CC2361F0EFE9FFE03197C3 +:10326000F1F700C00000C150F6CFCF010296FE0179 +:10327000F490EC0102C00E9416118F2D882341F0BA +:10328000EFE9FFE03197F1F700C000008150F6CF81 +:10329000FE0194CFDF91CF911F910F91FF90EF909E +:1032A000089508956093BD017093BE018093BF019E +:1032B0009093C0010C9444150F931F930091BD018E +:1032C0001091BE012091BF013091C001062B172B38 +:1032D000282B392B0093BD011093BE012093BF0111 +:1032E0003093C0011F910F910C9444150F931F93BD +:1032F0000091BD011091BE012091BF013091C0012C +:1033000006231723282339230093BD011093BE0100 +:103310002093BF013093C0011F910F910C9444156D +:103320000F931F930091BD011091BE012091BF0129 +:103330003091C00106271727282739270093BD01A0 +:103340001093BE012093BF013093C0011F910F91D4 +:103350000C9444151092B9011092BA011092BB015D +:103360001092BC010C94441541E050E060E070E024 +:1033700004C0440F551F661F771F8A95D2F74093EC +:10338000B9015093BA016093BB017093BC010C94D6 +:10339000441541E050E060E070E004C0440F551F68 +:1033A000661F771F8A95D2F78091B9019091BA0173 +:1033B000A091BB01B091BC01842B952BA62BB72B00 +:1033C0008093B9019093BA01A093BB01B093BC0163 +:1033D0000C94441541E050E060E070E004C0440FFC +:1033E000551F661F771F8A95D2F7409550956095B7 +:1033F00070958091B9019091BA01A091BB01B091F3 +:10340000BC0184239523A623B7238093B90190930D +:10341000BA01A093BB01B093BC010C94441541E0E8 +:1034200050E060E070E004C0440F551F661F771F36 +:103430008A95D2F78091B9019091BA01A091BB0110 +:10344000B091BC0184279527A627B7278093B9019F +:103450009093BA01A093BB01B093BC010C944415A6 +:103460000F931F930091B9011091BA012091BB01F4 +:103470003091BC01062B172B282B392B0093B90157 +:103480001093BA012093BB013093BC011F910F919F +:103490000C9444150F931F930091B9011091BA0138 +:1034A0002091BB013091BC01062317232823392327 +:1034B0000093B9011093BA012093BB013093BC0172 +:1034C0001F910F910C9444150F931F930091B90114 +:1034D0001091BA012091BB013091BC01062717273A +:1034E000282739270093B9011093BA012093BB0113 +:1034F0003093BC011F910F910C9444150895CF9205 +:10350000DF92EF92FF920F931F93CF93DF93EC0123 +:10351000C090BD01D090BE01E090BF01F090C0010D +:103520008091B9019091BA01A091BB01B091BC0109 +:10353000C82AD92AEA2AFB2A0FE110E0B701A6011E +:10354000002E04C076956795579547950A94D2F753 +:1035500040FF07C0BE01802F0E94B807813091054F +:1035600039F40150110950F7BE0180E00E94B807FC +:10357000DF91CF911F910F91FF90EF90DF90CF904F +:10358000089590910C019923D9F090910D01992300 +:10359000B9F0982F9695969596959F3088F5E0917D +:1035A0000E01F0910F01E90FF11D877021E030E06D +:1035B00001C0220F8A95EAF78181822B81830895C9 +:1035C00040910E0150910F0120E030E09FEFFA0191 +:1035D000E20FF31F6281681799F09F3F19F46111A0 +:1035E00001C0922F2F5F3F4F2E30310581F79F3F53 +:1035F00039F0FA01E90FF11D97FDFA9582830895DC +:10360000089590910C019923E1F090910D01992377 +:10361000C1F0982F9695969596959F3020F5E0915C +:103620000E01F0910F01E90FF11D877021E030E0EC +:1036300001C0220F8A95EAF72095818128232183F2 +:10364000089540910E0150910F0120E030E0FA0101 +:10365000E20FF31F9281981301C012822F5F3F4F38 +:103660002E303105A1F7089581E090E0E0910E0140 +:10367000F0910F01E80FF91F10820196803191053A +:10368000A9F708959091D401982B9093D4010895AF +:1036900080959091D40198239093D401089510922D +:1036A000D40108959091D301982B9093D30108955C +:1036B00080959091D30198239093D301089510920F +:1036C000D30108959091D201982B9093D20108953F +:1036D00080959091D20198239093D20108951092F1 +:1036E000D20108958093C10108951092C1010895F7 +:1036F00040910E0150910F0120E030E080E0FA018E +:10370000E20FF31F918191118F5F2F5F3F4F2F3099 +:103710003105A9F70895E0910E01F0910F01809114 +:10372000D4018083E0910E01F0910F01808190918E +:10373000D301892B8083E0910E01F0910F018081EC +:103740009091D201892B80839091C101992361F0DE +:10375000E0910E01F0910F018081892B80830E94FE +:10376000781B81111092C10180910E0190910F017F +:103770000C94FA0F8091EE01843009F11092D60179 +:1037800020E488E190E00FB6F894A895809360005B +:103790000FBE2093600083B7817F846083BF83B7AF +:1037A000816083BF7894889583B78E7F83BF88E1DB +:1037B0000FB6F89480936000109260000FBE0895D9 +:1037C00008950895CF930E94E01B0E94E2050E9495 +:1037D000E11BC0E08C2F0E94CF06811105C0CF5F96 +:1037E000CE30C1F780E001C081E0CF9108950E9402 +:1037F00058150E94EE0F0C94F30882E084BD93E00C +:1038000095BD9AEF97BD80936E0008952FB7F894F9 +:103810008091D7019091D801A091D901B091DA019E +:103820002FBF0895CF92DF92EF92FF920F931F93D5 +:103830002FB7F8944091D7015091D8016091D901E8 +:103840007091DA012FBF6A017B01EE24FF248C0105 +:1038500020E030E0C016D106E206F30610F4415035 +:103860005109481B590BCA011F910F91FF90EF900E +:10387000DF90CF9008951F920F920FB60F921124F0 +:103880008F939F93AF93BF938091D7019091D8016D +:10389000A091D901B091DA010196A11DB11D8093CB +:1038A000D7019093D801A093D901B093DA01BF91C9 +:1038B000AF919F918F910F900FBE0F901F90189511 +:1038C0000E94F40CF8942FEF87EA91E62150804093 +:1038D0009040E1F700C0000087E090EBDC018093AE +:1038E000F7019093F801A093F901B093FA012CE04D +:1038F00088E190E00FB6F894A895809360000FBE21 +:1039000020936000FFCFEF92FF920F931F93CF930E +:10391000DF93E82EF12C8F2D0E94CF06C0E0D0E07F +:10392000082F10E098010C2E02C0359527950A94B7 +:10393000E2F720FD05C02196C630D10599F709C0F0 +:103940006C2F7F2D80E00E949607E812F4CF81E073 +:1039500005C0F3948EE0F812DECF80E0DF91CF91C6 +:103960001F910F91FF90EF900895CF93C82F8CE295 +:103970000E94831C882321F08C2FCF910C94831CF0 +:1039800080E0CF910895CF930E94081E811102C05C +:103990000E94EE1DC5E6C15049F00E94E2058FE38A +:1039A0009CE90197F1F700C00000F5CF89E20E9481 +:1039B000B51C811111C18AE20E94B51C81110E94BF +:1039C000EE1D85E00E94B51C81110E94601C0E94C2 +:1039D000131E8093D50187E00E94B51C882399F1BE +:1039E0008BE10E94B51C882351F09091D50191FB89 +:1039F000882780F921E0822780FB91F922C08EE0A0 +:103A00000E94B51C882351F09091D50192FB882724 +:103A100080F921E0822780FB92F913C080E10E94A7 +:103A2000B51C9091D501882341F093FB882780F93C +:103A300021E0822780FB93F904C0892F809580FBC9 +:103A400090F99093D5018091D5010E94171E0E9494 +:103A5000251E8093E80180EE0E94B51C882341F06A +:103A60008091E801982F909590FB80F98093E80170 +:103A700089E30E94B51C882359F09091E80191FBDD +:103A8000882780F921E0822780FB91F99093E80153 +:103A900082EE0E94B51C882359F09091E80192FBB8 +:103AA000882780F921E0822780FB92F99093E80132 +:103AB00086EE0E94B51C882359F09091E80193FB93 +:103AC000882780F921E0822780FB93F99093E80111 +:103AD00083EE0E94B51C882359F09091E80194FB75 +:103AE000882780F921E0822780FB94F99093E801F0 +:103AF00085E30E94B51C882359F09091E80195FB5D +:103B0000882780F921E0822780FB95F99093E801CE +:103B100081E30E94B51C882359F09091E80196FB3F +:103B2000882780F921E0822780FB96F99093E801AD +:103B300081E10E94B51C882359F09091E80197FB20 +:103B4000882780F921E0822780FB97F99093E8018C +:103B50008091E8010E94291E8091E80187FB882757 +:103B600080F980930D0187E20E94B51CC82F8EE179 +:103B70000E94B51C8111C2608FE10E94B51C8111A9 +:103B8000C46080E20E94B51C8111C86081E20E947D +:103B9000B51C8111C06182E20E94B51C8111C06216 +:103BA00083E20E94B51C8111C06484E20E94B51CAE +:103BB000882311F0C06802C0CC2329F08C2F0E940A +:103BC000201E6C2F03C00E941C1E682F70E080E036 +:103BD00090E0CF910C945219CF9108956DEE7EEF45 +:103BE00080E090E00E94442460E082E090E00E9447 +:103BF000362460E083E090E00E94362460E084E0B8 +:103C000090E00E94362460E085E090E00C94362439 +:103C100080E090E00E94302421E08D3E9E4F09F02C +:103C200020E0822F089582E090E00C942824682FF1 +:103C300082E090E00C94362483E090E00C942824F9 +:103C4000682F83E090E00C94362484E090E00C949C +:103C50002824682F84E090E00C9436248091DD01C4 +:103C600080FF0BC06091130185E0689FB0011124B3 +:103C700075956795759567952AC081FF09C0609114 +:103C8000130185E0689FB0011124759567951FC0E9 +:103C900082FF07C06091130185E0689FB001112485 +:103CA00016C04091DE014423C9F06091120146170D +:103CB00088F72091130185E0289F90011124429FED +:103CC000C001439F900D112470E00E94FA236038D8 +:103CD000710540F46115710539F002C065E070E0CE +:103CE000862F08958FE7089581E008958091DD0182 +:103CF00080FF08C06091110170E07595679575951A +:103D0000679521C081FF06C06091110170E0759533 +:103D1000679519C082FF04C06091110170E010C066 +:103D20008091DE018823C1F0609110018617A0F711 +:103D300090911101989FC001112470E00E94FA2314 +:103D40006038710528F46115710521F0862F0895FA +:103D50008FE7089581E0089561E070E0F4CF803F3F +:103D600021F40E942E1E819504C0813F29F40E94F7 +:103D70002E1E8093E1010895823F21F40E942E1EA1 +:103D8000819504C0833F29F40E942E1E8093E00198 +:103D90000895893F19F40E94761E05C08A3F31F4C8 +:103DA0000E94761E81958093E20108958B3F21F455 +:103DB0000E94761E819504C08C3F29F40E94761ED5 +:103DC0008093E3010895843F21F48091DF018160B5 +:103DD00017C0853F21F48091DF01826011C0863FCA +:103DE00021F48091DF0184600BC0873F21F4809132 +:103DF000DF01886005C0883F31F48091DF01806178 +:103E00008093DF0108958D3F21F48091DD01816071 +:103E10000BC08E3F21F48091DD01826005C08F3F91 +:103E200029F48091DD0184608093DD010895803F55 +:103E300039F48091E10187FF6CC01092E10169C003 +:103E4000813F29F48091E1011816BCF362C0909182 +:103E5000E001823F29F497FF5CC01092E00159C055 +:103E6000833F19F41916CCF354C0893F41F4809173 +:103E7000E20118160CF04DC01092E2014AC08A3FD0 +:103E800029F48091E20187FF44C0F6CF8B3F39F4DB +:103E90008091E30187FF3DC01092E3013AC08C3F5F +:103EA00029F48091E3011816BCF333C0843F21F458 +:103EB0008091DF018E7F17C0853F21F48091DF0163 +:103EC0008D7F11C0863F21F48091DF018B7F0BC075 +:103ED000873F21F48091DF01877F05C0883F31F45F +:103EE0008091DF018F7E8093DF0113C08D3F21F42D +:103EF0008091DD018E7F0BC08E3F21F48091DD012A +:103F00008D7F05C08F3F29F48091DD018B7F8093E9 +:103F1000DD018091E00181110EC08091E1018111EC +:103F20000AC08091E201811106C08091E3018111F4 +:103F300002C01092DE0108958FED91E00E940510FD +:103F40000E94061C9093DC018093DB0108951F936F +:103F5000CF93DF938091DB019091DC010E94121CD2 +:103F60004091DE01442321F02091140130E006C08D +:103F7000209115015AE0259F900111248217930783 +:103F800008F482C08091E0011091E101D091E2013A +:103F9000C091E301811107C0111105C0D11103C007 +:103FA000CC2309F471C04F3F19F04F5F4093DE01FD +:103FB000181624F40E942E1E8093E0018091E001E7 +:103FC00087FF05C00E942E1E81958093E001111687 +:103FD00024F40E942E1E8093E1018091E10187FF6D +:103FE00005C00E942E1E81958093E1016091E00141 +:103FF000662339F11091E101112319F1772767FD4B +:104000007095872F972F0E940B2323E333E343E31D +:104010005FE30E946F230E94D8226093E001612F2A +:10402000772767FD7095872F972F0E940B2323E337 +:1040300033E343E35FE30E946F230E94D82260933F +:10404000E1011D1624F40E94761E8093E201809106 +:10405000E20187FF05C00E94761E81958093E201F0 +:104060001C1624F40E94761E8093E3018091E301E4 +:1040700087FF05C00E94761E81958093E301DF9142 +:10408000CF911F910C949C1FDF91CF911F910895A8 +:10409000EFEDF1E085E0DF011D928A95E9F71092DE +:1040A000DE011092DD010895833081F128F4813022 +:1040B00059F08230D1F00895853009F449C0B8F143 +:1040C000863009F456C0089520911501862F90E09E +:1040D000820F911D8F3F910520F4620F60931501AF +:1040E00008958FEF80931501089520911401862F74 +:1040F00090E0820F911D8F3F910520F4620F609335 +:10410000140108958FEF80931401089520911301F5 +:10411000862F90E0820F911D8F3F910520F4620F52 +:104120006093130108958FEF8093130108952091F8 +:104130001201862F90E0820F911D8F3F910520F490 +:10414000620F6093120108958FEF8093120108951A +:1041500020911101862F90E0820F911D8F3F9105D4 +:1041600020F4620F6093110108958FEF8093110185 +:10417000089520911001862F90E0820F911D8F3FAE +:10418000910520F4620F6093100108958FEF8093E2 +:1041900010010895833011F128F4813049F0823004 +:1041A00091F00895853081F120F18630C1F10895B4 +:1041B00080911501681720F4861B809315010895DE +:1041C00010921501089580911401681720F4861B40 +:1041D00080931401089510921401089580911301A1 +:1041E000681720F4861B8093130108951092130121 +:1041F000089580911201681720F4861B80931201A4 +:10420000089510921201089580911101681720F409 +:10421000861B8093110108951092110108958091D9 +:104220001001681720F4861B8093100108951092E6 +:10423000100108958D3109F442C020F58E3009F443 +:1042400079C070F4873009F45EC020F4863009F438 +:1042500042C033C08830D1F18B3009F4A7C02DC0E3 +:10426000863109F4A3C038F4803109F46DC081317E +:1042700009F47BC022C0893109F498C08B3109F45C +:104280004FC01BC0853309F479C048F4873209F464 +:1042900075C008F478C0893209F470C00EC0833448 +:1042A00038F48A3308F071C0883309F47FC005C040 +:1042B000833409F463C08834C1F080E008950E941B +:1042C00092220E94EE0F0E94F30870C00E94131EFB +:1042D0000E94251E6BC08091D501817F8E7F8093C7 +:1042E000D50181E08093E50108950E9458152FEFD4 +:1042F00083ED90E3215080409040E1F700C0000042 +:104300000E94601C53C09091D501892F817090FF4D +:1043100003C0917F9E7F26C091609093D50146C0D7 +:104320009091D50191FB882780F921E0822780FBBD +:1043300091F913C09091D50192FB882780F921E073 +:10434000822780FB92F909C09091D50193FB8827C1 +:1043500080F921E0822780FB93F99093D50188238F +:1043600029F191609093D50108950E94581580918C +:104370000D0191E0892780930D0118C061E070E084 +:1043800080E090E00FC023EE01C027EC280F61E031 +:1043900070E080E090E004C0660F771F881F991FCF +:1043A0002A95D2F70E9452190E94581581E008956B +:1043B00080E0089580E00895CF93C82F8091E501B3 +:1043C000813079F018F08230D1F184C0A0910E01D3 +:1043D000B0910F018C91813169F0823209F07CC07B +:1043E00009C0A0910E01B0910F018C91813111F0A3 +:1043F000823249F48C2F0E94D82181111DC08C2F4C +:104400000E941A211AC08C2F0E94DA21811114C037 +:10441000C43179F048F4CB3079F0C03109F060C094 +:1044200082E08093E50108C0C93219F0C83321F059 +:1044300057C01092E50154C081E0817053C0C93269 +:1044400089F118F5C43171F1A8F4C73009F046C0FC +:104450008AE08093150194E19093140193E0909386 +:1044600013018093120188E08093110188E2809308 +:10447000100134C0CE51C63088F5EC2FF0E0E65D77 +:10448000FE4F80818093E40129C0CE34E9F020F40E +:10449000CB3421F56AE013C0C13579F0C235F1F4AF +:1044A00061E00DC08091E401882319F01092E401CD +:1044B00015C081E08093E50115C061E006C08091E0 +:1044C000E4010E9454200AC06AE08091E4010E9445 +:1044D000CA2004C01092E50180E004C081E002C05F +:1044E00080E0ABCFCF910895E1E8F0E08081886073 +:1044F00080838081816080838FB7F89493E090936C +:10450000890090ED909388008FBF0895EFE6F0E06A +:104510008081826080830895EFE6F0E080818D7F66 +:1045200080830895EFE6F0E0808192E08927808320 +:1045300008951F920F920FB60F9211242F933F935D +:104540004F935F936F937F938F939F93AF93BF939B +:10455000EF93FF938091E6019091E701019690938C +:10456000E7018093E601811103C082E00E94F30815 +:10457000E091E701E695E695F0E0E25BFA4FE49121 +:104580008091E6018E1303C080E00E94F308FF9142 +:10459000EF91BF91AF919F918F917F916F915F91BB +:1045A0004F913F912F910F900FBE0F901F90189534 +:1045B00004D06894B1118DC0089570D088F09F57D1 +:1045C00090F0B92F9927B751A0F0D1F0660F771F5F +:1045D000881F991F1AF0BA95C9F712C0B13081F03F +:1045E00077D0B1E0089574C0672F782F8827B85F1F +:1045F00039F0B93FCCF3869577956795B395D9F7A0 +:104600003EF490958095709561957F4F8F4F9F4FA9 +:104610000895E89409C097FB3EF4909580957095B5 +:1046200061957F4F8F4F9F4F9923A9F0F92F96E9FE +:10463000BB279395F695879577956795B795F11173 +:10464000F8CFFAF4BB0F11F460FF1BC06F5F7F4F10 +:104650008F4F9F4F16C0882311F096E911C0772322 +:1046600021F09EE8872F762F05C0662371F096E82B +:10467000862F70E060E02AF09A95660F771F881FFA +:10468000DAF7880F9695879597F9089557FD905812 +:10469000440F551F59F05F3F71F04795880F97FB06 +:1046A000991F61F09F3F79F08795089512161306C0 +:1046B0001406551FF2CF4695F1DF08C016161706EF +:1046C0001806991FF1CF8695710561050894089524 +:1046D000E894BB2766277727CB0197F908950BD07D +:1046E00078C069D028F06ED018F0952309F05AC030 +:1046F0005FC01124EECFCADFA0F3959FD1F3950FD1 +:1047000050E0551F629FF001729FBB27F00DB11D55 +:10471000639FAA27F00DB11DAA1F649F6627B00DE5 +:10472000A11D661F829F2227B00DA11D621F739FCE +:10473000B00DA11D621F839FA00D611D221F749FDC +:104740003327A00D611D231F849F600D211D822F23 +:10475000762F6A2F11249F5750408AF0E1F088236A +:104760004AF0EE0FFF1FBB1F661F771F881F915077 +:104770005040A9F79E3F510570F014C0AACF5F3F8B +:10478000ECF3983EDCF3869577956795B795F795AA +:10479000E7959F5FC1F7FE2B880F911D9695879532 +:1047A00097F9089597F99F6780E870E060E00895B1 +:1047B0009FEF80EC089500240A9416161706180639 +:1047C0000906089500240A94121613061406050615 +:1047D0000895092E0394000C11F4882352F0BB0FA6 +:1047E00040F4BF2B11F460FF04C06F5F7F4F8F4F09 +:1047F0009F4F089597FB072E16F4009407D077FD7E +:1048000009D00E94142407FC05D03EF490958195B0 +:104810009F4F0895709561957F4F0895EE0FFF1F8C +:104820000590F491E02D0994AA1BBB1B51E107C030 +:10483000AA1FBB1FA617B70710F0A61BB70B881F30 +:10484000991F5A95A9F780959095BC01CD010895BF +:10485000F999FECF92BD81BDF89A992780B5089548 +:10486000A8E1B0E042E050E00C944B24262FF999E7 +:10487000FECF1FBA92BD81BD20BD0FB6F894FA9A43 +:10488000F99A0FBE019608950E943624272F0C94A2 +:104890003724DC01CB01FC01F999FECF06C0F2BD43 +:1048A000E1BDF89A319600B40D9241505040B8F7EE +:0648B0000895F894FFCF0B +:1048B6002002F50882095F092B09F8080101C201E7 +:1048C60028080A03140A3F4D36390F05C2048C0422 +:1048D6005304E603FF03180431040102030405062A +:0448E60007080900B6 :00000001FF diff --git a/keyboard/ergodox_ez/keymaps/ordinary/readme.md b/keyboard/ergodox_ez/keymaps/ordinary/readme.md index 842dc7ee19..f264dd48fb 100644 --- a/keyboard/ergodox_ez/keymaps/ordinary/readme.md +++ b/keyboard/ergodox_ez/keymaps/ordinary/readme.md @@ -67,9 +67,11 @@ Alas, the yellow keys have at best spotty success with common software. Good luc ## Switching Between Layers ## -The three Shift keys correspond to three logical layers on top of the ever-present base layer, and are represented in the three LEDs on the keyboard: Capitals (red), Symbols (green), Media (blue). The color of a layer illuminates when the layer is active. Shift keys work in the expected way: press them and the keys shift to that layer; release them and the keys shift back to the base layer. The Ordinary Layout also features a Shift Lock key to keep a layer active indefinitely. Hold down the Shift Lock key then press any Shift key to lock to that layer. Or, hold down the Shift key and press the Shift Lock key; it works either way. To revert to the base layer, use the Shift Lock key again in combination with the Shift key. +In addition to Symbols and Media the Ordinary Layout treats the Capitals as a logical layer. Each layer is accessed by a shift key on each edge of the keyboard and corresponds to one of the three LEDs on the keyboard: Capitals (red), Symbols (green), Media (blue). The color of a layer illuminates when the layer is active. -This layout attempts to treat the Capitals Shift layer the same as the other two Shift layers, but internally they are different which causes some inconsistencies. For instance, it is possible to switch from any layer to any other layer, and to lock to any layer, *except* it is not possible to go from Media to Symbols. You must exit the Media layer before engaging the Symbols layer. Also, the Caps Lock feature must be triggered by first pressing the Shift Lock key then a Capitals Shift key; it doesn't work if you press the Shift key first (instead you get the secondary symbol character associated with the Shift Lock button). +Shift buttons work in the expected way: press them and all of the keys switch to that layer; release them and the keys switch back to the base layer. Lock layers using the Shift key in conjunction with the Shift Lock key. For instance, the widely and rightly loathed Caps Lock is engaged by pressing the Shift Lock button then Capitals Shift. Or, hold down the Shift key and press the Shift Lock key; it works either way. All the Shift keys work this way. + +Multiple layers can be turned on at once but only one controls the keyboard. The order of the LEDs indicates the priority order: Media, Symbols, Capitals. ## Special Escape & Backspace Sequences ## -- cgit v1.2.1 From 0e7a3a25bb1590c79a81d9bbe17a076bf0210742 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stephan=20Bo=CC=88sebeck?= Date: Mon, 2 May 2016 13:46:00 +0200 Subject: new version of the experimental layout. changed media keys in MDIA layer --- .../keymaps/osx_de_experimental/keymap.c | 239 +++- .../osx_de_experimental/osx_de_experimental.hex | 1247 ++++++++++++++++++++ .../osx_de_experimental_highres.png | Bin 289029 -> 303904 bytes .../keymaps/osx_de_experimental/readme.md | 22 + 4 files changed, 1500 insertions(+), 8 deletions(-) create mode 100644 keyboard/ergodox_ez/keymaps/osx_de_experimental/osx_de_experimental.hex create mode 100644 keyboard/ergodox_ez/keymaps/osx_de_experimental/readme.md diff --git a/keyboard/ergodox_ez/keymaps/osx_de_experimental/keymap.c b/keyboard/ergodox_ez/keymaps/osx_de_experimental/keymap.c index b3ed55f217..19e539006a 100644 --- a/keyboard/ergodox_ez/keymaps/osx_de_experimental/keymap.c +++ b/keyboard/ergodox_ez/keymaps/osx_de_experimental/keymap.c @@ -15,6 +15,15 @@ #include "keymap_extras/keymap_spanish.h" #include "keymap_extras/keymap_bepo.h" + +/** +* This layout was generated using the ErgodoxLayoutGenerator (ELG). You can download it from https://github.com/sboesebeck/ErgodoxLayoutGenerator/releases +* documentation about it can be found here https://boesebeck.name/2016/04/16/ergodoxlayoutgenerator-documentation/ +* Thanks to the team of Erez Zukerman for building the great Ergodox-EZ! +* +* use at own risk! +**/ + #define BASE 0 #define SYMB 1 #define MDIA 2 @@ -23,24 +32,73 @@ #define EGOS 5 #define SMLY_TOG_QUOT 0 + #define M_TOGGLE_5 1 + #define TGH_NUM 2 + #define M_DE_OSX_PLUS_CTRLALT 3 + #define SM_KISS 4 + #define SM_FROWN 5 + #define SM_CRY 6 + #define SM_SMILE 7 + #define SM_SMIRK 8 + #define M_LGUI_SHFT 9 + #define SM_HEART 10 + #define TOG_HLD_MDIA 11 + #define SM_LAUGH 12 + #define SM_SAD 13 + #define M_DE_OSX_CIRC_CTRLCMD 14 + #define M_MEH_SH_ACUT 15 + //Layout keymap.c generated with ErgodoxLayoutGenerator V1.0BETA1 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/** +* Layer: BASE +* /-------------------//-------------------//-------------------//-------------------//-------------------//-------------------//-------------------/ /-------------------//-------------------//-------------------//-------------------//-------------------//-------------------//-------------------/ +* | ESC | 1 | 2 | 3 | 4 | 5 | Hold or toggle | | Hold or toggle | 6 | 7 | 8 | 9 | 0 | ß | +* | | | | | | | Layer NUMB | | Layer MDIA | | | | | | | +* /-------------------//-------------------//-------------------//-------------------//-------------------//-------------------//-------------------/ /-------------------//-------------------//-------------------//-------------------//-------------------//-------------------//-------------------/ +* | TAB | Q | W | E | R | T | Cmd | | Cmd | Z | U | I | O | P | Ü | +* | | | | | | | | | | | | | | | | +* /-------------------//-------------------//-------------------//-------------------//-------------------//-------------------/\-------------------\ \-------------------\/-------------------//-------------------//-------------------//-------------------//-------------------//-------------------/ +* | Alt | A | S | D | F | G | | H | J | K | L | Ö | Ä | +* | | | | | | | | | | | | | ALT | +* /-------------------//-------------------//-------------------//-------------------//-------------------//-------------------//-------------------/ /-------------------//-------------------//-------------------//-------------------//-------------------//-------------------//-------------------/ +* | Shift | Y | X | C | V | B | Alt | | Alt | N | M | , | . | - | Shift | +* | | Ctrl | | | | | | | | | | | | Ctrl | | +* \-------------------\\-------------------\\-------------------\\-------------------\\-------------------\\-------------------\\-------------------\ \-------------------\\-------------------\\-------------------\\-------------------\\-------------------\\-------------------\\-------------------\ +* +* +* /-------------------//-------------------//-------------------//-------------------//-------------------/ /-------------------//-------------------//-------------------//-------------------//-------------------/ +* | < | LongPress / Type | LongPress / Type | Shift+Ctrl | Type | | # | ACUT | CMD+Shift | ALT+Shift | + | +* | SYMB | DE_OSX_CIRC_CTRLCMD| DE_OSX_PLUS_CTRAlt | | Toggle SMLY | | Meh | Hyper | | | SYMB | +* \-------------------\\-------------------\\-------------------\\-------------------\/-------------------//-------------------/ /-------------------//-------------------/ \-------------------\\-------------------\\-------------------\\-------------------\\-------------------\ +* | HOME | END | | LEFT | RIGHT | +* | | | | | | +* \-------------------\/-------------------/ /-------------------/\-------------------\ +* | PGUP | | UP | +* | | | | +* /-------------------//-------------------//-------------------/ /-------------------//-------------------//-------------------/ +* | BSPC | DEL | PGDN | | DOWN | ENT | SPC | +* | | | | | | | | +* \-------------------\\-------------------\\-------------------\ \-------------------\\-------------------\\-------------------\ +* +* +**/ [BASE]=KEYMAP( //left half KC_ESC, DE_OSX_1, DE_OSX_2, DE_OSX_3, DE_OSX_4, DE_OSX_5, M(TGH_NUM), @@ -60,6 +118,39 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LEFT, KC_RIGHT, KC_UP, KC_DOWN, KC_ENT, KC_SPC), +/** +* Layer: SYMB +* /-----------//-----------//-----------//-----------//-----------//-----------//-----------/ /-----------//-----------//-----------//-----------//-----------//-----------//-----------/ +* | APPLICATION| F1 | F2 | F3 | F4 | F5 | F5 | | F6 | F6 | F7 | F8 | F9 | F10 | F11 | +* | | | | | | | | | | | | | | | | +* /-----------//-----------//-----------//-----------//-----------//-----------//-----------/ /-----------//-----------//-----------//-----------//-----------//-----------//-----------/ +* | | < | > | ! | ? | | | | | \ | [ | ] | < | > | ! | +* | | | | | | | | | | | | | | | | +* /-----------//-----------//-----------//-----------//-----------//-----------/\-----------\ \-----------\/-----------//-----------//-----------//-----------//-----------//-----------/ +* | | # | $ | \ | / | . | | / | ( | ) | { | } | # | +* | | | | | | | | | | | | | | +* /-----------//-----------//-----------//-----------//-----------//-----------//-----------/ /-----------//-----------//-----------//-----------//-----------//-----------//-----------/ +* | | | < | % | | | ~ | | | | | | ~ | | | | | +* | | | | | | | | | | | | | | | | +* \-----------\\-----------\\-----------\\-----------\\-----------\\-----------\\-----------\ \-----------\\-----------\\-----------\\-----------\\-----------\\-----------\\-----------\ +* +* +* /-----------//-----------//-----------//-----------//-----------/ /-----------//-----------//-----------//-----------//-----------/ +* | | | | | | | ' | DQOT | | Toggle 5 | | +* | | | | | | | | | | | | +* \-----------\\-----------\\-----------\\-----------\/-----------//-----------/ /-----------//-----------/ \-----------\\-----------\\-----------\\-----------\\-----------\ +* | | | | F13 | F12 | +* | | | | | | +* \-----------\/-----------/ /-----------/\-----------\ +* | | | F14 | +* | | | | +* /-----------//-----------//-----------/ /-----------//-----------//-----------/ +* | | DEL | | | F15 | | | +* | | | | | | | | +* \-----------\\-----------\\-----------\ \-----------\\-----------\\-----------\ +* +* +**/ [SYMB]=KEYMAP( //left half KC_APPLICATION, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F5, @@ -79,6 +170,39 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_F13, KC_F12, KC_F14, KC_F15, KC_TRNS, KC_TRNS), +/** +* Layer: MDIA +* /-----//-----//-----//-----//-----//-----//-----/ /-----//-----//-----//-----//-----//-----//-----/ +* | | | | | | | | | | | | | | | | +* | | | | | | | | | | | | | | | | +* /-----//-----//-----//-----//-----//-----//-----/ /-----//-----//-----//-----//-----//-----//-----/ +* | | | BTN1 | U | BTN2 | U | | | | | | | | | | +* | | | | | | | | | | | | | | | | +* /-----//-----//-----//-----//-----//-----/\-----\ \-----\/-----//-----//-----//-----//-----//-----/ +* | | | L | D | R | D | | | | | | | | +* | | | | | | | | | | | | | | +* /-----//-----//-----//-----//-----//-----//-----/ /-----//-----//-----//-----//-----//-----//-----/ +* | | | L | D | R | BTN3 | | | | | | | | UP | | +* | | | | | | | | | | | | | | | | +* \-----\\-----\\-----\\-----\\-----\\-----\\-----\ \-----\\-----\\-----\\-----\\-----\\-----\\-----\ +* +* +* /-----//-----//-----//-----//-----/ /-----//-----//-----//-----//-----/ +* | | | | | | | | | LEFT | DOWN | RIGHT| +* | | | | | | | | | | | | +* \-----\\-----\\-----\\-----\/-----//-----/ /-----//-----/ \-----\\-----\\-----\\-----\\-----\ +* | | | | MPRV | MNXT | +* | | | | | | +* \-----\/-----/ /-----/\-----\ +* | | | VOLU | +* | | | | +* /-----//-----//-----/ /-----//-----//-----/ +* | | | | | VOLD | MUTE | MPLY | +* | | | | | | | | +* \-----\\-----\\-----\ \-----\\-----\\-----\ +* +* +**/ [MDIA]=KEYMAP( //left half KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, @@ -90,14 +214,47 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, //right half - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_VOLU, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_VOLD, KC_TRNS, KC_MPRV, KC_MNXT, KC_UP, KC_TRNS, - KC_MUTE, KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, - KC_TRNS, KC_TRNS, - KC_TRNS, - KC_TRNS, KC_TRNS, KC_WBAK), + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, + KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, + KC_MPRV, KC_MNXT, + KC_VOLU, + KC_VOLD, KC_MUTE, KC_MPLY), +/** +* Layer: SMLY +* /--------//--------//--------//--------//--------//--------//--------/ /--------//--------//--------//--------//--------//--------//--------/ +* | | | | | | | | | Typing | Typing | Typing | | | | | +* | | | | | | | | | SM_SMILE| SM_SMIRK| SM_LAUGH| | | | | +* /--------//--------//--------//--------//--------//--------//--------/ /--------//--------//--------//--------//--------//--------//--------/ +* | | | | | | | | | | Typing | Typing | Typing | | | | +* | | | | | | | | | | SM_FROWN| SM_SAD | SM_CRY | | | | +* /--------//--------//--------//--------//--------//--------/\--------\ \--------\/--------//--------//--------//--------//--------//--------/ +* | | | | | | | | Typing | Typing | | | | | +* | | | | | | | | SM_HEART| SM_KISS | | | | | +* /--------//--------//--------//--------//--------//--------//--------/ /--------//--------//--------//--------//--------//--------//--------/ +* | | | | | | | | | | | | | | | | +* | | | | | | | | | | | | | | | | +* \--------\\--------\\--------\\--------\\--------\\--------\\--------\ \--------\\--------\\--------\\--------\\--------\\--------\\--------\ +* +* +* /--------//--------//--------//--------//--------/ /--------//--------//--------//--------//--------/ +* | | | | | | | | | | | | +* | | | | | | | | | | | | +* \--------\\--------\\--------\\--------\/--------//--------/ /--------//--------/ \--------\\--------\\--------\\--------\\--------\ +* | | | | | | +* | | | | | | +* \--------\/--------/ /--------/\--------\ +* | | | | +* | | | | +* /--------//--------//--------/ /--------//--------//--------/ +* | | | | | | | | +* | | | | | | | | +* \--------\\--------\\--------\ \--------\\--------\\--------\ +* +* +**/ [SMLY]=KEYMAP( //left half KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, @@ -117,6 +274,39 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), +/** +* Layer: NUMB +* /----//----//----//----//----//----//----/ /----//----//----//----//----//----//----/ +* | | | | | | | | | | F6 | F7 | F8 | F9 | F10 | F11 | +* | | | | | | | | | | | | | | | | +* /----//----//----//----//----//----//----/ /----//----//----//----//----//----//----/ +* | | | | UP | | | | | | / | 7 | 8 | 9 | * | F12 | +* | | | | | | | | | | | | | | | | +* /----//----//----//----//----//----/\----\ \----\/----//----//----//----//----//----/ +* | | | LEFT| DOWN| RGHT| | | / | 4 | 5 | 6 | + | - | +* | | | | | | | | | | | | | | +* /----//----//----//----//----//----//----/ /----//----//----//----//----//----//----/ +* | | | | | | | | | | % | 1 | 2 | 3 | | | +* | | | | | | | | | | | | | | | | +* \----\\----\\----\\----\\----\\----\\----\ \----\\----\\----\\----\\----\\----\\----\ +* +* +* /----//----//----//----//----/ /----//----//----//----//----/ +* | | | | | | | 0 | . | , | = | | +* | | | | | | | | | | | | +* \----\\----\\----\\----\/----//----/ /----//----/ \----\\----\\----\\----\\----\ +* | | | | | | +* | | | | | | +* \----\/----/ /----/\----\ +* | | | | +* | | | | +* /----//----//----/ /----//----//----/ +* | | | | | | | | +* | | | | | | | | +* \----\\----\\----\ \----\\----\\----\ +* +* +**/ [NUMB]=KEYMAP( //left half KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, @@ -136,6 +326,39 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), +/** +* Layer: EGOS +* /--------//--------//--------//--------//--------//--------//--------/ /--------//--------//--------//--------//--------//--------//--------/ +* | | | | | | | | | | | | | | | | +* | | | | | | | | | | | | | | | | +* /--------//--------//--------//--------//--------//--------//--------/ /--------//--------//--------//--------//--------//--------//--------/ +* | | | | | | | | | | | | | | | | +* | | | | | | | | | | | | | | | | +* /--------//--------//--------//--------//--------//--------/\--------\ \--------\/--------//--------//--------//--------//--------//--------/ +* | Shift | | | | | | | | | | | | | +* | | | | | | | | | | | | | | +* /--------//--------//--------//--------//--------//--------//--------/ /--------//--------//--------//--------//--------//--------//--------/ +* | | | | | | | | | | | | | | | | +* | | | | | | | | | | | | | | | | +* \--------\\--------\\--------\\--------\\--------\\--------\\--------\ \--------\\--------\\--------\\--------\\--------\\--------\\--------\ +* +* +* /--------//--------//--------//--------//--------/ /--------//--------//--------//--------//--------/ +* | Ctrl | | | | | | | | | Toggle 5| | +* | | | | | | | | | | | | +* \--------\\--------\\--------\\--------\/--------//--------/ /--------//--------/ \--------\\--------\\--------\\--------\\--------\ +* | F1 | F2 | | | | +* | | | | | | +* \--------\/--------/ /--------/\--------\ +* | F3 | | | +* | | | | +* /--------//--------//--------/ /--------//--------//--------/ +* | SPC | Ctrl | F4 | | | | | +* | | | | | | | | +* \--------\\--------\\--------\ \--------\\--------\\--------\ +* +* +**/ [EGOS]=KEYMAP( //left half KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, @@ -259,7 +482,7 @@ case M_LGUI_SHFT: if (record->event.pressed){ return MACRO(DOWN(KC_LGUI),DOWN(KC_LSFT),END); }else{ - return MACRO(UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),U(LGUI),U(LSFT),END); + return MACRO(UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),U(LGUI),U(LSFT),END); } break; diff --git a/keyboard/ergodox_ez/keymaps/osx_de_experimental/osx_de_experimental.hex b/keyboard/ergodox_ez/keymaps/osx_de_experimental/osx_de_experimental.hex new file mode 100644 index 0000000000..3c7ab58597 --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/osx_de_experimental/osx_de_experimental.hex @@ -0,0 +1,1247 @@ +:100000000C9430040C9474040C9474040C947404D4 +:100010000C9474040C9474040C9474040C94740480 +:100020000C9474040C9474040C94680F0C943A109F +:100030000C9474040C9474040C9474040C94740460 +:100040000C9474040C9404250C9474040C9474049F +:100050000C9474040C94931E0C9474040C94740407 +:100060000C9474040C9474040C9474040C94740430 +:100070000C9474040C9474040C9474040C94740420 +:100080000C9474040C9474040C9474040C94740410 +:100090000C9474040C9474040C9474040C94740400 +:1000A0000C9474040C9474040C9474048404BE04BE +:1000B000D004F2040A05100516051C0522052805C2 +:1000C0002D0533055D05620567057E05A710C9107E +:1000D000B711C910B7110E113111B711861199114D +:1000E00085148514C214C214051543155C175C17DA +:1000F0005C155C175D165D1630175C175C174717AB +:1001000002E002E2012E022E02E10002E002E10220 +:10011000E20001E001E101E20002E002E301640229 +:10012000640002E002E30001E001E30001E10137C5 +:10013000023702E10138023801E10125022502E11E +:100140000001E10137023702E10138023801E10123 +:1001500007020702E10001350235012002200002FA +:10016000E302E102E302E102E302E102E302E1026F +:10017000E302E102E302E102E302E102E302E1025F +:10018000E302E102E302E102E302E102E302E1024F +:10019000E302E102E302E102E302E102E302E1023F +:1001A000E302E102E302E102E302E102E302E1022F +:1001B000E302E102E302E102E302E102E302E1021F +:1001C000E302E102E302E102E302E102E302E1020F +:1001D000E302E102E302E102E302E102E302E102FF +:1001E000E302E102E302E102E302E102E302E102EF +:1001F000E302E102E302E10001E301E10001E101C8 +:1002000036023602E10138023801E10126022602F7 +:10021000E10001E10137023702E10138023801E172 +:100220000126022602E10001E10136023602E10167 +:1002300038023801E10125022502E10001E1013720 +:10024000023702E10138023801E20125022502E20B +:100250000001E10137023702E10138023801E10112 +:1002600030023002E10002E002E20130023000021E +:10027000E002E20001E001E20001E10131023102AD +:10028000E10029002B00E200E100358100001E00A2 +:10029000140004001D710E304E001F001A001600DD +:1002A0001B0003304C002000080007000600E0029D +:1002B0002A00210015000900190000304B0022001F +:1002C00017000A00050000004A000230E3000000A9 +:1002D000E20000004D000B30E7000000E6000000E7 +:1002E000500023001C000B00110000004F002400F0 +:1002F00018000D0010003177520025000C000E0090 +:1003000036002E7F2C00260012000F003700E10877 +:1003100028002700130033003871E10451002D003C +:100320002F003474E50030810000650001000100F9 +:100330000100010000003A00350031000100010019 +:1003400001003B0035022102350001004C003C0059 +:100350001E0224062202010001003D002D0224029B +:100360002404010001003E000100370011040000D8 +:1003700001003E00010000000100000001003F00FC +:10038000010000000100000068003F002406240274 +:10039000240400004500400022042502110431021B +:1003A000690041002304260201001F0201004200EF +:1003B0003500250401000100010043003502260438 +:1003C000010001306A0044001E02310001000100FA +:1003D0000000010001000100010001000000010017 +:1003E000010001000100010001000100F400F20021 +:1003F000FB00010001000100F000F100FA00010023 +:1004000001000100F500F300FC0001000100010003 +:10041000F900FA00F60000000100010001000000F0 +:1004200001000000010001000100000001000000C7 +:10043000AC0001000100010001000000AB00010060 +:100440000100010001000100A900010001000100FC +:1004500001000100AE000100010001000100500098 +:10046000A80001000100010052005100AA00010093 +:100470000100010001004F00000001000100010027 +:100480000100010000000100010001000100010065 +:100490000100010001000100010001000100010054 +:1004A0000100010001000100010001000100010044 +:1004B0000100010001000100010001000100000035 +:1004C00001000100010000000100000001000730F0 +:1004D00001000000010000000100083005300A3072 +:1004E0000100000001000C300D300430010001005B +:1004F00001000100063001000100010001000100BF +:1005000001000100010001000100010001000100E3 +:1005100001000100010001000100010001000100D3 +:1005200000000100010001000100010000000100C5 +:100530000100010001000100010001000100500064 +:100540000100010001000100520051000100010002 +:100550000100010001004F00010001000100010045 +:100560000100010001000000010001000100000085 +:100570000100000001000100010000000100000076 +:1005800001003F002402240222020000010040007A +:10059000240021001E002700010041002500220048 +:1005A0001F00370001004200260023002000360013 +:1005B0000100430030023000010027020100440026 +:1005C0004500380001000100000001000100E100C9 +:1005D0000100E00000000100010001000100010035 +:1005E0003D0001000100010001000100E0000100E8 +:1005F00001000100010001002C00010001000100C8 +:10060000010001003C0001000100010001000000A8 +:100610003A00010001000000010000003B00010061 +:1006200001000000010000000100010001000100C4 +:1006300001000000010001000100010001000100B3 +:1006400001000100010001000100010001000100A2 +:100650000100010001000100010001000100010092 +:100660000100013001000100010001000100010052 +:10067000000016034500720067006F0044006F0021 +:100680007800200045005A00000016034500720063 +:1006900067006F0044006F007800200045005A009A +:1006A00000000403090409026D00040100A0FA0916 +:1006B0000400000103010100092111010001223F92 +:1006C000000705810308000A090401000103010273 +:1006D00000092111010001224D00070582030800D5 +:1006E0000A090402000103000000092111010001B0 +:1006F0002236000705830308000A090403000103EA +:1007000000000009211101000122390007058403BE +:100710001000011201100100000008EDFE07130196 +:10072000000102000105010906A101050719E029E0 +:10073000E7150025019508750181020508190129B1 +:10074000059505750191029501750391010507193C +:1007500000297715002501957875018102C00501F2 +:100760000980A101850216010026B7001A01002A9E +:10077000B700751095018100C0050C0901A1018524 +:1007800003160100269C021A01002A9C027510958E +:10079000018100C005010902A1010901A1000509AB +:1007A000190129051500250195057501810295019D +:1007B000750381010501093009311581257F9502F5 +:1007C0007508810609381581257F95017508810610 +:1007D000050C0A38021581257F950175088106C030 +:1007E000C005010906A101050719E029E715002543 +:1007F00001950875018102950175088101050819A7 +:100800000129059505750191029501750391010571 +:1008100007190029FF150025FF950675088100C0FE +:100820000000000000000000000000010204060AB1 +:100830000F17202C3A4A5D71879DB3C7DAE9F5FCA2 +:10084000FFFCF5E9DAC7B39D87715D4A3A2C2017A2 +:100850000F0A060402010000000000000000000072 +:1008600011241FBECFEFDAE0DEBFCDBF04B603FE1A +:1008700024C08091F0019091F101A091F201B0911A +:10088000F3018730904BA740B04BB9F41092F001C0 +:100890001092F1011092F2011092F30114BE84B78C +:1008A000877F84BF88E10FB6F89480936000109230 +:1008B00060000FBEE0E0FFE3099511E0A0E0B1E0C9 +:1008C000E6E9FDE402C005900D92A433B107D9F723 +:1008D00011E0A4E3B1E001C01D92A03FB107E1F730 +:1008E0000E94AC0C0C94C9260C940000462F50E0DA +:1008F0004031510508F01FC1DC01FA01EA5AFF4FEF +:1009000012968C910C9479268823A9F00E945D1E82 +:1009100090933501809334018091B3019091B4019B +:10092000A091B501B091B60128E08227887099277F +:10093000AA27BB27AEC08091B3019091B401A091CA +:10094000B501B091B60128E0822788709927AA27BF +:10095000BB278093B3019093B401A093B501B093EA +:10096000B60180913401909135010E94691E87394A +:1009700091050CF0E0C089E792E00895882309F41E +:10098000DAC08091B3019091B401A091B501B0910A +:10099000B60120E2822780729927AA27BB2779C057 +:1009A000882339F00E945D1E9093350180933401B5 +:1009B0000AC080913401909135010E94691E8739E7 +:1009C00091050CF4B8C08091B3019091B401A0914D +:1009D000B501B091B60120E1822780719927AA273D +:1009E000BB2757C0882349F00E945D1E90933501B4 +:1009F0008093340184E792E00895809134019091CE +:100A000035010E94691E873991050CF08EC086E67B +:100A100092E00895882309F48EC081E592E008955C +:100A2000882309F488C08CE392E00895882309F4B0 +:100A300082C087E292E00895882309F47CC082E1B5 +:100A400092E00895882309F476C08DEF91E008952F +:100A500081116EC08FE591E00895882309F46BC081 +:100A600086E591E008958823E9F00E945D1E909349 +:100A70003501809334018091B3019091B401A0912C +:100A8000B501B091B60124E0822784709927AA2786 +:100A9000BB278093B3019093B401A093B501B093A9 +:100AA000B60149C080913401909135010E94691EC0 +:100AB000873991050CF43FC0DECF8823E1F181E452 +:100AC00091E008958823B9F18CE291E0089588239C +:100AD00049F00E945D1E909335018093340187E2B6 +:100AE00091E0089580913401909135010E94691E32 +:100AF000873991051CF589E191E00895882349F033 +:100B00000E945D1E909335018093340182E191E053 +:100B1000089580913401909135010E94691E8739B2 +:100B200091057CF480E091E008958FE692E00895CD +:100B300088EF91E0089580E090E0089582E291E0EE +:100B400008958BE091E0089508956091B30170914C +:100B5000B4018091B5019091B6010E94BF1D5698D5 +:100B60005E9825982D9826982E9827982F98823051 +:100B700061F018F4813031F00895843069F08530E7 +:100B800039F00895259A2D9A0895269A2E9A089557 +:100B9000259A2D9A269A2E9A279A2F9A08950C9480 +:100BA000A50556985E9825982D9826982E982798F2 +:100BB0002F988FEF90E09093890080938800909316 +:100BC0008B0080938A0090938D0080938C00259AEF +:100BD0002D9A2FEF80E792E0215080409040E1F77E +:100BE00000C00000269A2E9A2FEF80E792E0215055 +:100BF00080409040E1F700C00000279A2F9A2FEF25 +:100C000080E792E0215080409040E1F700C0000072 +:100C100025982D982FEF80E792E02150804090405A +:100C2000E1F700C0000026982E982FEF80E792E0B1 +:100C3000215080409040E1F700C0000027982F9895 +:100C400056985E9825982D9826982E9827982F9834 +:100C5000089589EA8093800089E080938100249838 +:100C60002C983F988AB18F748AB96E98479A8BB145 +:100C7000806B8BB9769A0E94D1050C94A40580E212 +:100C8000809300018091360181110EC00E948E0672 +:100C900081E0809336012FEF83ED90E32150804077 +:100CA0009040E1F700C0000080E40E949406809329 +:100CB000000181112EC00E94BE06809300018111A7 +:100CC00028C00E94BE0680930001811122C08FE3DC +:100CD0000E94BE068093000181111BC00E94B606CF +:100CE00080E40E94940680930001811112C08CE080 +:100CF0000E94BE068093000181110BC00E94BE06B7 +:100D000080930001811105C08FE30E94BE0680938D +:100D100000010E94B6068091000108951092B9006A +:100D20008AE08093B800089594EA9093BC00909173 +:100D3000BC0097FFFCCF9091B900987F983021F0CC +:100D4000903111F081E008958093BB0084E8809396 +:100D5000BC008091BC0087FFFCCF8091B900887FE8 +:100D6000883111F0803471F780E0089584E9809330 +:100D7000BC008091BC0084FDFCCF08958093BB0033 +:100D800084E88093BC008091BC0087FFFCCF9091E9 +:100D9000B900987F81E0983209F480E0089584E8F2 +:100DA0008093BC008091BC0087FFFCCF8091BB008A +:100DB000089580910001811115C080E40E9494067D +:100DC0008093000181110CC082E10E94BE068093D5 +:100DD0000001811105C08FEF0E94BE0680930001C3 +:100DE0000E94B60684B1807F84B985B1807F85B9C1 +:100DF0008AB1837F8AB98BB1837F8BB93E9846983D +:100E000008950E943F06809300010E94D90680B396 +:100E10008C7080BB81B3836F81BBA8E3B1E0E6E453 +:100E2000F1E08EE08E0F11921D928E13FCCF0C9488 +:100E30002906BF92CF92DF92EF92FF920F931F93FA +:100E4000CF93DF9380910001882379F0809137015F +:100E50008F5F80933701811108C00E943F06809305 +:100E60000001811102C00E94D10508E311E0C0E039 +:100E7000D0E0DD24D39482E0C82EEE24E394F12C5C +:100E8000C730D10500F580910001811164C080E474 +:100E90000E94940680930001811112C082E10E9499 +:100EA000BE068093000181110BC0C7010C2E01C04A +:100EB000880F0A94EAF780950E94BE06809300018D +:100EC0000E94B60648C0CA30A1F028F4C83059F0D4 +:100ED000C93061F005C0CC3089F070F0CD3089F0B8 +:100EE000209A289810C0219A29980DC0229A2A98F1 +:100EF0000AC0239A2B9807C0529A01C0539A5B9854 +:100F000002C03E9A469890EA9A95F1F79FB1799976 +:100F100002C082E001C080E091709D25982B7C99F1 +:100F200002C084E001C080E0892B7D9902C038E0D6 +:100F300001C030E0832B7E9902C020E101C020E097 +:100F4000822B9FB19095991F9927991F9295990F80 +:100F5000907E892B0FC080910001811149C080E4EF +:100F60000E94940680930001882379F1B12C0E949D +:100F7000B6068B2DF8019081981719F08083C092E6 +:100F800001010E94D90621960F5F1F4FCE30D10577 +:100F900009F076CF80910101882361F1815080931F +:100FA0000101882339F08FE99FE00197F1F700C034 +:100FB000000020C0A6E4B1E0E8E3F1E0CF01825FE9 +:100FC00091919D938E13FCCF15C083E10E94BE06C4 +:100FD000809300018111CACF81E40E94940680931E +:100FE00000018111C3CF0E94CF06B82EB094BFCFAD +:100FF00080E0C0CF0E94CF0581E0DF91CF911F91AB +:101000000F91FF90EF90DF90CF90BF900895E82F61 +:10101000F0E0EA5BFE4F808108950895089596E020 +:10102000799FF001112494E5899FE00DF11D1124B1 +:10103000E60FF11DEE0FFF1FEE57FD4F85919491C6 +:101040000895880F991FFC01EE5FFE4F85919491E2 +:101050000895880F991FFC01EE57FD4F85919491DB +:1010600008950F931F93CF93DF93EC018115904365 +:1010700050F5C11580E2D80708F0B3C0CB3BD105CD +:1010800090F4C83AD10508F05AC0C53AD10508F025 +:101090004BC0C430D10508F0BBC1219709F0B5C1E0 +:1010A00001E010E0F5C1CF3FD10511F008F0B0C16B +:1010B000C03FD10508F092C0CE01805E910908972B +:1010C00008F4A6C1A2C1C11591E5D907A8F4C230A0 +:1010D00020E5D20708F09EC0C11580E5D80709F4C5 +:1010E00085C008F091C0C11520E4D20708F08DC179 +:1010F000DD278E01106CCCC1C11580E8D80758F4EB +:10110000C11590E7D90708F07CC1C11520E6D207C8 +:1011100008F422C17AC1C11580E9D80708F075C169 +:10112000DF708E01106AB4C1C53AD10509F472C1ED +:10113000C63AD10509F071C102E810E4A9C1C83A64 +:10114000D10509F46DC1C93AD10509F46CC1CA3A97 +:10115000D10509F46BC1CB3AD10509F46AC1CC3A87 +:10116000D10509F469C1CD3AD10509F468C1C03B84 +:10117000D10509F467C1CE3AD10509F466C1CF3A69 +:10118000D10509F465C1C13BD10509F464C1C23B75 +:10119000D10509F463C1C33BD10509F462C1C43B65 +:1011A000D10509F461C1C53BD10509F460C1C63B55 +:1011B000D10509F45FC1C73BD10509F45EC1C83B45 +:1011C000D10509F45DC1C93BD10509F45CC1CA3B35 +:1011D000D10509F45BC100E014E45AC18E01106529 +:1011E00057C1CE019F700E94290853C10E948017E9 +:1011F0009FEF24E38CE0915020408040E1F700C055 +:1012000000000E94B81E44C18091CF01816080938C +:10121000CF013EC10E946120811102C00E9447207F +:101220000E947E2090E09093F0018093EF01C23005 +:1012300090E5D90721F48091EF01816086C0C43028 +:1012400020E5D20721F48091EF0182607EC0C63094 +:1012500080E5D80721F48091EF01846076C0C83022 +:1012600090E5D90719F48091EF0127C0CA3020E535 +:10127000D20721F48091EF01806167C0CC3080E516 +:10128000D80721F48091EF0180625FC0CE3090E5F5 +:10129000D90721F48091EF01806457C0C03120E567 +:1012A000D20721F48091EF0180684FC0C23180E500 +:1012B000D80729F48091EF018460886046C0C3306C +:1012C00090E5D90721F48091EF018E7F3EC0C530B3 +:1012D00020E5D20721F48091EF018D7F36C0C73021 +:1012E00080E5D80721F48091EF018B7F2EC0C930B3 +:1012F00090E5D90719F48091EF0126C0CB3020E5A5 +:10130000D20721F48091EF018F7E1FC0CD3080E5A0 +:10131000D80721F48091EF018F7D17C0CF3090E581 +:10132000D90721F48091EF018F7B0FC0C13120E5F7 +:10133000D20721F48091EF018F7707C0C331D045E8 +:1013400031F48091EF018B7F877F8093EF01809153 +:10135000EF010E9482209CC08D2F99278F709927C2 +:1013600081309105D9F49E012370332702C0880F84 +:10137000991F2A95E2F79C688E0144E0000F111F27 +:101380004A95E1F700271370802B912B53E0CC0F87 +:10139000DD1F5A95E1F7C076DD272FC08230910519 +:1013A00031F4DC2FCC278E01016F106A71C08330BD +:1013B000910569F4CE018370992701E010E002C025 +:1013C000000F111F8A95E2F7C8019C680FC00497AF +:1013D00009F05EC0CE018370992701E010E002C0E1 +:1013E000000F111F8A95E2F7C8019A6823E0CC0F1D +:1013F000DD1F2A95E1F7C07ED7708C010C2B1D2BC9 +:1014000047C0DF708E01106243C000E010E040C0B2 +:101410008E013EC001E810E43BC003E810E438C090 +:1014200002EE14E435C009EE14E432C00AEE14E40E +:101430002FC005EB14E42CC006EB14E429C007EB25 +:1014400014E426C00CEC14E423C00DEC14E420C01A +:1014500003E815E41DC00AE815E41AC002E915E422 +:1014600017C004E915E414C001E216E411C003E258 +:1014700016E40EC004E216E40BC005E216E408C050 +:1014800006E216E405C007E216E402C00AE216E42A +:10149000C801DF91CF911F910F91089596E0799F38 +:1014A000F001112494E5899FE00DF11D1124E60F50 +:1014B000F11DEE0FFF1FEE57FD4F85919491803E79 +:1014C0009105E0F4803C910558F58133910509F4CC +:1014D0006FC048F48932910509F463C08A329105DE +:1014E00009F46DC072C089339105E9F08238910525 +:1014F000D1F08533910509F44DC067C0833E910555 +:1015000081F138F4803E9105B9F0823E9105D9F021 +:101510005CC0863E910561F1873E9105A1F155C001 +:101520000E94210808952091EF0120FD02C021FFB3 +:101530004CC080EE90E049C08091EF0180FFF9CF70 +:1015400089E390E042C08091EF0182FF0EC080915C +:10155000EF0184FF03C080E090E037C083EE90E0AD +:1015600034C08091EF0182FFF2CF82EE90E02DC077 +:101570008091EF0183FF0BC08091EF0184FDEBCFE1 +:1015800087EE90E022C08091EF0183FFF5CF86EED9 +:1015900090E01BC08091EF0185FF07C089E290E0D9 +:1015A00014C08091EF0185FFF9CF85E390E00DC075 +:1015B0008091EF0186FF07C08AE290E006C080912B +:1015C000EF0186FFF9CF81E390E00E943108089592 +:1015D00008950C94E80A809164010895CF93DF93F5 +:1015E00000D01F92CDB7DEB79C018091E601843018 +:1015F00019F593E099833B832A839093E9008FEF59 +:101600009091E800815095FD06C095ED9A95F1F70F +:1016100000008111F5CF8091E80085FF0DC040E00A +:1016200050E063E070E0CE0101960E94580D809179 +:10163000E8008E778093E8000F900F900F90DF9175 +:10164000CF910895CF93DF9300D01F92CDB7DEB72F +:101650002091E601243021F522E029839B838A83AF +:1016600083E08093E9008FEF9091E800815095FD31 +:1016700006C095ED9A95F1F700008111F5CF8091A4 +:10168000E80085FF0DC040E050E063E070E0CE016F +:1016900001960E94580D8091E8008E778093E800B3 +:1016A0000F900F900F90DF91CF9108952091E60158 +:1016B0002430F1F422E02093E9002FEF3091E8008C +:1016C000215035FD06C035ED3A95F1F700002111A6 +:1016D000F5CF2091E80025FF0BC040E050E065E029 +:1016E00070E00E94580D8091E8008E778093E800AA +:1016F0000895CF93DF93EC019091E601943009F0C7 +:1017000046C080910C018823D9F080910D01882377 +:10171000B9F09093E9008FEF9091E800815095FD2A +:1017200006C095E19A95F1F700008111F5CF8091FF +:10173000E80085FF2CC040E050E060E170E017C099 +:1017400081E08093E9008FEF9091E800815095FD52 +:1017500006C095ED9A95F1F700008111F5CF8091C3 +:10176000E80085FF14C040E050E068E070E0CE0182 +:101770000E94580D8091E8008E778093E80080E108 +:10178000FE01A4E5B1E001900D928A95E1F7DF91A9 +:10179000CF9108958091E501811109C00E94ED0E5D +:1017A0000E944A0F8091E20084608093E2000895D5 +:1017B0001092E501089508950C94F1240E944E1EA4 +:1017C0000E94F7240E94F0110C94E90A42E061ECB7 +:1017D00081E00E94670E42E061EC82E00E94670EA9 +:1017E00042E061EC83E00E94670E42E161EC84E03C +:1017F0000C94670E8091E801833009F455C030F4F1 +:10180000813071F0823009F48EC008958A3009F475 +:101810007AC08B3009F460C0893009F09CC020C0C8 +:101820008091E701813A09F096C08091E800877FB6 +:101830008093E8008091EB019091EC01892B21F4D9 +:1018400060E184E591E003C060E080E090E070E05A +:101850000E94A30D8091E8008B778093E8000895A3 +:101860008091E701813209F076C08091EB0190917F +:10187000EC01009719F0039709F06DC08091E80022 +:10188000877F8093E8008091E80082FD05C0809109 +:10189000E6018111F8CF5FC08091F100809364016F +:1018A0008091E8008B7753C08091E701813A09F07D +:1018B00052C08091EB019091EC01892B09F04BC053 +:1018C0008091E800877F8093E8008091E80080FFA6 +:1018D000FCCF80910C0136C08091E7018132D9F5AF +:1018E0008091EB019091EC01892BA9F58091E800A2 +:1018F000877F8093E8000E949C0E8091E90180938D +:101900000C010C9480178091E701813221F58091C0 +:10191000E800877F8093E8000E949C0E8091EA0196 +:101920008093650108958091E701813AA1F4809147 +:10193000E800877F8093E8008091E80080FFFCCF7B +:10194000809165018093F1008091E8008E7780930B +:10195000E8000C949C0E089584B7877F84BF88E1CB +:101960000FB6F89480936000109260000FBE90E074 +:1019700080E80FB6F89480936100909361000FBEE9 +:101980000E943F120E94ED0E0E944A0F8091E200D9 +:1019900084608093E20078940E94D0110E944112EA +:1019A00082E091E00E94EB110E94DF248091E60129 +:1019B000853069F40E940F1E8091E4018823B1F301 +:1019C0000E943A1E882391F30E94420DEFCF0E949D +:1019D0004712ECCF292F332723303105C9F064F4A7 +:1019E0002130310581F02230310509F043C08DE608 +:1019F00090E026EA36E042C021323105F1F0223291 +:101A0000310541F137C082E190E023E137E036C093 +:101A100099278130910541F08230910541F0892B61 +:101A200049F5E2EAF6E005C0EAE8F6E002C0E2E7DE +:101A3000F6E0849190E09F0121C06430D8F4E62F55 +:101A4000F0E0EE0FFF1FEE5DFE4F2081318189E057 +:101A500090E014C0643070F470E0FB01EE0FFF1FE3 +:101A6000E65EFE4F20813181FB01EA5EFE4F808100 +:101A700090E004C080E090E020E030E0FA013183A3 +:101A80002083089580E189BD82E189BD09B400FE0B +:101A9000FDCF8091D8008F7D8093D8008091E000A9 +:101AA00082608093E0008091E00081FDFCCF08958A +:101AB000CF92DF92EF92FF920F931F93CF93DF931A +:101AC000EC018B016A010E94BB0E811133C0C1146D +:101AD000D10439F0F60180819181081B190BC80FE0 +:101AE000D91FE12CF12C0115110519F18091E800A5 +:101AF00085FD16C08091E8008E778093E800C114C0 +:101B0000D10449F0F60180819181E80EF91EF1823D +:101B1000E08285E00FC00E94BB0E882321F30AC03B +:101B200089918093F10001501109FFEFEF1AFF0A2C +:101B3000DACF80E0DF91CF911F910F91FF90EF906E +:101B4000DF90CF9008952091ED013091EE0126179E +:101B5000370748F06115710539F42091E8002E77B8 +:101B60002093E80001C0B90140E061157105A9F1B9 +:101B70002091E601222309F443C0253009F442C034 +:101B80002091E80023FD40C02091E80022FD32C0F2 +:101B90002091E80020FFE9CF4091F3002091F2006E +:101BA00030E0342BFC01CF016115710559F028306C +:101BB000310540F481918093F100615071092F5FEC +:101BC0003F4FF1CF41E02830310509F040E020914E +:101BD000E8002E772093E800C8CF4111C9CF0AC092 +:101BE0008091E601882361F0853061F08091E80002 +:101BF00083FD0AC08091E80082FFF2CF80E0089563 +:101C000082E0089583E0089581E008952091ED0138 +:101C10003091EE012617370748F06115710539F448 +:101C20002091E8002E772093E80001C0B901FC0163 +:101C300020E06115710591F18091E601882309F496 +:101C400040C0853009F43FC08091E80083FD3DC06D +:101C50008091E80082FD2FC08091E80080FFE9CFED +:101C60002091F3008091F20090E0922B61157105B4 +:101C700059F08830910540F424912093F100319679 +:101C8000615071090196F2CF21E0089709F020E038 +:101C90008091E8008E778093E800CBCF2111CCCFE4 +:101CA0000AC08091E601882361F0853061F080915F +:101CB000E80083FD0AC08091E80082FFF2CF80E057 +:101CC000089582E0089583E0089581E00895982FB3 +:101CD000973058F59093E900981739F07091EC001F +:101CE0002091ED005091F00003C0242F762F50E09A +:101CF00021FF19C03091EB003E7F3093EB00309113 +:101D0000ED003D7F3093ED003091EB00316030937A +:101D1000EB007093EC002093ED005093F0002091C5 +:101D2000EE0027FF07C09F5FD3CF8F708093E9003D +:101D300081E0089580E008958091E70187FF11C058 +:101D40008091E80082FD05C08091E6018111F8CF05 +:101D500011C08091E8008B770BC08091E601882349 +:101D600049F08091E80080FFF8CF8091E8008E77FD +:101D70008093E80008952091E4003091E50095E615 +:101D80004091EC00842F817040FF22C08091E800D8 +:101D900080FD1CC08091E601882391F0853091F090 +:101DA0008091EB0085FD10C04091E4005091E5006A +:101DB0004217530729F39A01915011F784E00895CF +:101DC00082E0089583E0089581E0089580E0089519 +:101DD0004091E80042FFDECF08950E945B0F0E9411 +:101DE000630FE0EEF0E0808181608083E8EDF0E059 +:101DF00080818F77808319BCA7EDB0E08C918E7FB6 +:101E00008C9380818F7E80831092E50108950F93DB +:101E10001F93CF93DF930E945B0F0E94630FC8ED67 +:101E2000D0E088818F7788838881806888838881E3 +:101E30008F7D888319BC1092E6011092E201109206 +:101E4000E4011092E30100EE10E0F80180818B7F45 +:101E5000808388818160888342E060E080E00E9426 +:101E6000670EE1EEF0E080818E7F8083E2EEF0E0AD +:101E7000808181608083808188608083F801808197 +:101E80008E7F8083888180618883DF91CF911F91CD +:101E90000F910895E8EDF0E080818F7E8083E7ED7B +:101EA000F0E080818160808384E082BF81E0809364 +:101EB000E5010C94070FE8EDF0E080818E7F8083D0 +:101EC0001092E20008951092DA001092E100089555 +:101ED0001F920F920FB60F9211242F933F934F939F +:101EE0005F936F937F938F939F93AF93BF93EF9382 +:101EF000FF938091E10082FF0BC08091E20082FF9E +:101F000007C08091E1008B7F8093E1000E94CF1198 +:101F10008091DA0080FF1FC08091D80080FF1BC035 +:101F20008091DA008E7F8093DA008091D90080FF63 +:101F30000DC080E189BD82E189BD09B400FEFDCFFD +:101F400081E08093E6010E94CA0B05C019BC109283 +:101F5000E6010E94D80B8091E10080FF19C08091BA +:101F6000E20080FF15C08091E2008E7F8093E20046 +:101F70008091E20080618093E2008091D8008062CD +:101F80008093D80019BC85E08093E6010E94DC0BA9 +:101F90008091E10084FF30C08091E20084FF2CC07A +:101FA00080E189BD82E189BD09B400FEFDCF809149 +:101FB000D8008F7D8093D8008091E1008F7E809340 +:101FC000E1008091E2008F7E8093E2008091E20048 +:101FD00081608093E2008091E201882311F084E027 +:101FE00007C08091E30087FD02C081E001C083E06B +:101FF0008093E6010E94DE0B8091E10083FF29C0FF +:102000008091E20083FF25C08091E100877F80936B +:10201000E10082E08093E6011092E2018091E1000C +:102020008E7F8093E1008091E2008E7F8093E200BA +:102030008091E20080618093E20042E060E080E015 +:102040000E94670E8091F00088608093F0000E94EB +:10205000DB0BFF91EF91BF91AF919F918F917F919A +:102060006F915F914F913F912F910F900FBE0F9005 +:102070001F9018951F920F920FB60F9211242F9355 +:102080003F934F935F936F937F938F939F93AF9300 +:10209000BF93CF93DF93EF93FF93C091E900CF708D +:1020A0008091EC00D82FD17080FDD0E81092E9002B +:1020B0008091F000877F8093F00078940E947E10DA +:1020C0001092E9008091F00088608093F000CD2BA1 +:1020D000CF70C093E900FF91EF91DF91CF91BF9155 +:1020E000AF919F918F917F916F915F914F913F91B0 +:1020F0002F910F900FBE0F901F9018951F93CF93A5 +:10210000DF93CDB7DEB7AA970FB6F894DEBF0FBE48 +:10211000CDBFE7EEF1E088E08E0F9091F100919352 +:102120008E13FBCF0E94FA0B8091E80083FF1FC142 +:102130008091E7019091E801492F50E04A30510524 +:1021400008F015C1FA01EA59FF4F0C94792680383E +:1021500081F0823809F00BC18091EB018F70809380 +:10216000E9008091EB0085FB882780F91092E90057 +:1021700006C08091E3019091E401911182609091F9 +:10218000E800977F9093E8008093F1001092F100AF +:10219000C8C0282F2D7F09F0EAC0882319F08230AB +:1021A00061F0E5C08091E901813009F0E0C0933031 +:1021B00009F080E08093E4012BC08091E901811156 +:1021C00027C08091EB018F7009F4D1C08093E900A2 +:1021D0002091EB0020FF1CC0933021F48091EB0094 +:1021E000806214C09091EB0090619093EB0021E02D +:1021F00030E0A90102C0440F551F8A95E2F74093D1 +:10220000EA001092EA008091EB0088608093EB0076 +:102210001092E9008091E800877F86C08111A7C0F5 +:102220001091E9011F778091E3008078812B8093E2 +:10223000E3008091E800877F8093E8000E949C0E75 +:102240008091E80080FFFCCF8091E300806880935C +:10225000E300111102C082E001C083E08093E60137 +:1022600086C08058823008F082C08091E901909148 +:10227000EA018C3D53E0950779F583E08A838AE291 +:1022800089834FB7F894DE01139620E03EE051E2D7 +:10229000E32FF0E050935700E49120FF03C0E29554 +:1022A000EF703F5FEF708E2F90E0EA3010F0C7962E +:1022B00001C0C0968D939D932F5F243149F74FBF86 +:1022C0008091E800877F8093E8006AE270E0CE01A9 +:1022D00001960E94A30D14C0AE014F5F5F4F609145 +:1022E000EB010E94EA0CBC01892B09F440C09091DB +:1022F000E800977F9093E80089819A810E94060EFA +:102300008091E8008B778093E80031C0803879F5C0 +:102310008091E800877F8093E8008091E2018093BC +:10232000F1008091E8008E778093E8000E949C0E77 +:102330001EC081111CC09091E9019230C0F48091BF +:10234000E800877F8093E8009093E2010E949C0E52 +:102350008091E201811106C08091E30087FD02C0F7 +:1023600081E001C084E08093E6010E94E60B809149 +:10237000E80083FF0AC08091E800877F8093E8002F +:102380008091EB0080628093EB00AA960FB6F894E0 +:10239000DEBF0FBECDBFDF91CF911F91089508958D +:1023A000CF938091E6018823A1F0C091E900CF701E +:1023B0009091EC00892F817090FD80E8C82B1092DD +:1023C000E9008091E80083FD0E947E10CF70C093E9 +:1023D000E900CF91089590936B0180936A0108956D +:1023E000E0916A01F0916B01309721F00190F0814A +:1023F000E02D099480E00895E0916A01F0916B016D +:10240000309721F00280F381E02D09940895E09146 +:102410006A01F0916B01309721F00480F581E02D85 +:1024200009940895209168013091690182179307FA +:1024300071F09093690180936801E0916A01F091D5 +:102440006B01309721F00680F781E02D0994089503 +:1024500020916601309167018217930771F0909384 +:10246000670180936601E0916A01F0916B013097FA +:1024700021F00084F185E02D0994089508950C94CD +:102480003E120E94541E0E9401070C941A1FCF9204 +:10249000DF92EF92FF920F931F93CF93DF93CDB70D +:1024A000DEB72B970FB6F894DEBF0FBECDBF0E94EC +:1024B00019078DE6C82E81E0D82E00E010E0E02E4E +:1024C000802F0E940708F60141916F01F42EF82633 +:1024D000B1F40F5F1F4F0E30110589F78FEF89831D +:1024E0008A831B820E945D1E8160782F9D838C836E +:1024F00049815A816B818D810E94EA1240C090917E +:10250000CF0191FF04C08B870E940D088B8520E0CE +:1025100030E04F2D50E0922FBA01022E02C0759587 +:1025200067950A94E2F760FF24C02E83EF8221E0D2 +:1025300030E0690102C0CC0CDD1C9A95E2F790E016 +:102540008C219D21892B09F420E028870E945D1EA3 +:102550008160782F9A8789874E815F8168858A8517 +:102560000E94EA12F801E359FE4F8081C826C0821A +:1025700006C02F5F3F4F2630310569F6AACF0E9473 +:10258000012210916C010E94F0111817A1F00E9415 +:10259000F01180936C012B960FB6F894DEBF0FBE3E +:1025A000CDBFDF91CF911F910F91FF90EF90DF9002 +:1025B000CF900C94E90A2B960FB6F894DEBF0FBEAD +:1025C000CDBFDF91CF911F910F91FF90EF90DF90E2 +:1025D000CF900895CF93DF93CDB7DEB72B970FB68B +:1025E000F894DEBF0FBECDBF4F83588769877A87C7 +:1025F0008B87DE01119686E0FD0111928A95E9F73D +:1026000085E0FE01379601900D928A95E1F74981A8 +:102610005A816B817C818D819E810E941A1A2B9632 +:102620000FB6F894DEBF0FBECDBFDF91CF910895F6 +:102630000895CF93882309F4C2C0C82F823859F473 +:102640000E94F01181FDBBC089E30E94C31C0E945F +:10265000901D89E30CC0833879F40E94F01180FD4D +:10266000AEC083E50E94C31C0E94901D83E50E94BA +:10267000051DCF910C94901D843859F40E94F011DF +:1026800082FD9DC087E40E94C31C0E94901D87E4C8 +:10269000EECF8CEF8C0F813A48F48C2F0E944424AB +:1026A00081118DC08C2F0E94C31CE3CF80E28C0F60 +:1026B000883048F4C77081E001C0880FCA95EAF7F6 +:1026C0000E94491DD6CF8BE58C0F833078F4C53A34 +:1026D00029F0C63A31F083E890E005C081E890E047 +:1026E00002C082E890E0CF910C94121288E58C0F22 +:1026F000833108F064C0C83A39F1C93A41F1CA3AA5 +:1027000049F1CB3A51F1CC3A59F1CD3A61F1C03BA4 +:1027100069F1CE3A71F1CF3A79F1C13B81F1C23B17 +:1027200089F1C33B91F1C43B99F1C53BA1F1C63B93 +:10273000A9F1C73BB1F1C83BB9F1C93BC1F1CA3BF3 +:10274000C9F180E090E038C082EE90E035C089EEBB +:1027500090E032C08AEE90E02FC085EB90E02CC074 +:1027600086EB90E029C087EB90E026C08CEC90E0EF +:1027700023C08DEC90E020C083E891E01DC08AE882 +:1027800091E01AC082E991E017C084E991E014C099 +:1027900081E292E011C083E292E00EC084E292E016 +:1027A0000BC085E292E008C086E292E005C087E2B5 +:1027B00092E002C08AE292E0CF910C942812CF916D +:1027C0000895882309F44BC0823859F40E94F0110F +:1027D00081FF45C089E30E94C31C0E94901D89E3CC +:1027E0000CC0833871F40E94F01180FF38C083E57B +:1027F0000E94C31C0E94901D83E50E94051D0C943D +:10280000901D843859F40E94F01182FF28C087E49B +:102810000E94C31C0E94901D87E4EFCF9CEF980F8D +:10282000913A58F390E2980F983050F4877091E005 +:1028300001C0990F8A95EAF7892F0E944F1DDFCFBB +:102840009BE5980F933020F480E090E00C941212F6 +:10285000885A833120F480E090E00C942812089587 +:10286000882321F00E94491D0C94901D089588230F +:1028700021F00E944F1D0C94901D0895BF92CF929D +:10288000DF92EF92FF920F931F93CF93DF9300D0CD +:1028900000D000D0CDB7DEB725E0FC01DE011196F7 +:1028A00001900D922A95E1F7FC01D08011810281FF +:1028B000258122952F7043815481452B09F4FCC258 +:1028C0001F3F21F4FFEFDF1609F4F6C27C012E83CF +:1028D0000E941813D9821A8369817A81802F0E94FD +:1028E000BF1C182FB92E0E94741C0E943B1B2E8106 +:1028F000002319F00E94661D2E81EB2DE295EF70EA +:10290000F0E0E059FF4F0C9479268B2D807F9B2DB2 +:102910009F70F92E882319F0F29480EFF82200239B +:1029200089F0FF2009F475C280E2810F883020F41D +:102930008F2D0E94491D03C08F2D0E94591D0E949A +:10294000901D67C2812F0E94E113FF2009F4B4C2D9 +:10295000105E8F2D183018F40E944F1D02C00E9487 +:102960005F1D26960FB6F894DEBF0FBECDBFDF9178 +:10297000CF911F910F91FF90EF90DF90CF90BF907C +:102980000C94901D3B2D307F8B2D8F70303211F0C9 +:102990008295807F112319F0113021F12CC0002382 +:1029A000B9F0222309F4A0C1213009F09DC1269677 +:1029B0000FB6F894DEBF0FBECDBFDF91CF911F9150 +:1029C0000F91FF90EF90DF90CF90BF900C94791D06 +:1029D000222319F0213009F46FC28E830E947C1DDE +:1029E0008E8196C1002321F0223008F065C27CC19F +:1029F000211162C28DC1002321F0222309F474C188 +:102A000008C2222309F484C119C22B2D26952695CC +:102A1000237030E02115310521F021303105D1F04E +:102A20004BC2002321F0812F9B2D937002C080E0C8 +:102A300090E026960FB6F894DEBF0FBECDBFDF91B3 +:102A4000CF911F910F91FF90EF90DF90CF90BF90AB +:102A50000C941212002321F0812F9B2D937002C041 +:102A600080E090E026960FB6F894DEBF0FBECDBF93 +:102A7000DF91CF911F910F91FF90EF90DF90CF905A +:102A8000BF900C942812812F002319F00E94092175 +:102A900002C00E94712126960FB6F894DEBF0FBEC9 +:102AA000CDBFDF91CF911F910F91FF90EF90DF90FD +:102AB000CF90BF900C94F6218B2D837009F07BC0D2 +:102AC0000111FAC1812F829586958770880F880F32 +:102AD000912F9F70C92ED12CE12CF12C082E04C00F +:102AE000CC0CDD1CEE1CFF1C0A94D2F714FF12C0A4 +:102AF0004FE050E060E070E004C0440F551F661FD7 +:102B0000771F8A95D2F7CB01BA01609570958095B1 +:102B1000909503C060E070E0CB012B2D26952695A3 +:102B20002370422F50E042305105D9F04330510517 +:102B300069F16C297D298E299F294130510551F178 +:102B400026960FB6F894DEBF0FBECDBFDF91CF91B2 +:102B50001F910F91FF90EF90DF90CF90BF900C945A +:102B6000621B6C297D298E299F2926960FB6F89421 +:102B7000DEBF0FBECDBFDF91CF911F910F91FF90B0 +:102B8000EF90DF90CF90BF900C947E1B0E94621B51 +:102B9000C701B60126960FB6F894DEBF0FBECDBFB3 +:102BA000DF91CF911F910F91FF90EF90DF90CF9029 +:102BB000BF900C94461B002319F08B2D817001C02F +:102BC0008695882309F478C1812F82958695877030 +:102BD000880F880F912F9F70C92ED12CE12CF12CDA +:102BE000082E04C0CC0CDD1CEE1CFF1C0A94D2F78E +:102BF00014FF12C04FE050E060E070E004C0440FEA +:102C0000551F661F771F8A95D2F7CB01BA016095D1 +:102C100070958095909503C060E070E0CB012B2DFE +:102C2000269526952370422F50E042305105D9F069 +:102C30004330510569F16C297D298E299F29413046 +:102C4000510551F126960FB6F894DEBF0FBECDBFE9 +:102C5000DF91CF911F910F91FF90EF90DF90CF9078 +:102C6000BF900C943C1C6C297D298E299F292696A7 +:102C70000FB6F894DEBF0FBECDBFDF91CF911F918D +:102C80000F91FF90EF90DF90CF90BF900C94581C65 +:102C90000E943C1CC701B60126960FB6F894DEBF11 +:102CA0000FBECDBFDF91CF911F910F91FF90EF909D +:102CB000DF90CF90BF900C94201C103FD1F118F4FE +:102CC000103E50F4A1C0123F09F463C008F44CC098 +:102CD000133F09F473C098C01F708B2D8F710023B0 +:102CE000A1F00E94B91B812F26960FB6F894DEBF83 +:102CF0000FBECDBFDF91CF911F910F91FF90EF904D +:102D0000DF90CF90BF900C9430140E94DA1B812F7B +:102D100026960FB6F894DEBF0FBECDBFDF91CF91E0 +:102D20001F910F91FF90EF90DF90CF90BF900C9488 +:102D300037140023A9F02111BFC08B2D8F71269667 +:102D40000FB6F894DEBF0FBECDBFDF91CF911F91BC +:102D50000F91FF90EF90DF90CF90BF900C94FF1BEE +:102D6000223008F0A9C0E9CF0023A9F08B2D8F7184 +:102D700026960FB6F894DEBF0FBECDBFDF91CF9180 +:102D80001F910F91FF90EF90DF90CF90BF900C9428 +:102D9000B91B002359F38B2D8F7126960FB6F8942B +:102DA000DEBF0FBECDBFDF91CF911F910F91FF907E +:102DB000EF90DF90CF90BF900C94DA1B002399F036 +:102DC0008B2D8F7126960FB6F894DEBF0FBECDBF48 +:102DD000DF91CF911F910F91FF90EF90DF90CF90F7 +:102DE000BF900C94A41B26960FB6F894DEBF0FBEBE +:102DF000CDBFDF91CF911F910F91FF90EF90DF90AA +:102E0000CF90BF900C949A1B0023A9F0222309F4C1 +:102E1000ADCF812F26960FB6F894DEBF0FBECDBF83 +:102E2000DF91CF911F910F91FF90EF90DF90CF90A6 +:102E3000BF900C941913222309F4ADCF812F26964D +:102E40000FB6F894DEBF0FBECDBFDF91CF911F91BB +:102E50000F91FF90EF90DF90CF90BF900C94E11313 +:102E60004B2D4F70612FC7010E94760426960FB636 +:102E7000F894DEBF0FBECDBFDF91CF911F910F91B0 +:102E8000FF90EF90DF90CF90BF900C94BE1A4B2D27 +:102E90004F70612FC70126960FB6F894DEBF0FBEA4 +:102EA000CDBFDF91CF911F910F91FF90EF90DF90F9 +:102EB000CF90BF900C940E0826960FB6F894DEBF04 +:102EC0000FBECDBFDF91CF911F910F91FF90EF907B +:102ED000DF90CF90BF9008950E94661D0E94761DDE +:102EE0000E943B1D0E94901D0E94A7220E94F62175 +:102EF00080E090E00E94121280E090E00C94281292 +:102F00000E94561D0C946C170E94B41C292F229508 +:102F10002F7030E02C3031054CF42A3031056CF440 +:102F2000225031092230310588F407C02C30310598 +:102F300049F02F30310531F009C0803E48F0803F24 +:102F400029F406C093FB882780F9089580E008954E +:102F500081E00895CF93DF9300D000D01F92CDB7CA +:102F6000DEB70F900F900F900F900F90DF91CF91E1 +:102F70000895CF93DF9300D000D000D0CDB7DEB757 +:102F800026960FB6F894DEBF0FBECDBFDF91CF916E +:102F900008951F93CF93DF93C0917B0116E080913A +:102FA0007C01C81799F0D0E01C9FF0011D9FF00D27 +:102FB0001124E358FE4F40815181628173818481E5 +:102FC00095810E94B9172196C770E9CFDF91CF9103 +:102FD0001F9108954091AD015091AE016091AF01F4 +:102FE0007091B0018091B1019091B2010C94B91728 +:102FF0008091B20182958F7009F054C08091AF0129 +:10300000882309F44FC080917B01A0917C016091DD +:10301000AD017091AE014091B0015091B101B6E0A7 +:103020008A1709F43FC090E041155105C1F17F3F77 +:1030300011F46F3FA1F1B89FF001B99FF00D112479 +:10304000E358FE4F218172132AC02081621327C0EA +:103050002281211124C0238134812417350710F4E3 +:1030600021503109241B350B283C3105C0F4209137 +:10307000B2012F7020612093B20126E0289FF00159 +:10308000299FF00D1124EE57FE4F80818F708061D3 +:1030900080838DEA91E00E943E140C94C91701963A +:1030A0008770BECF0895CF92DF92EF92FF920F9379 +:1030B0001F93CF93DF93CDB7DEB762970FB6F89427 +:1030C000DEBF0FBECDBF8C0185E0F801DE011D968D +:1030D00001900D928A95E1F7D8014C9111965C917F +:1030E000119712966C9112971396CD90DC901497CD +:1030F0003091AD017091AE018091B0019091B1011C +:10310000009709F46BC17F3F19F43F3F09F466C192 +:10311000E090AF01EE2009F4C0C02091B201C816C2 +:10312000D90628F0F601E81BF90BCF0104C0809501 +:1031300090958C0D9D1DFF24F394883C910578F0AB +:10314000F12C207F09F0C6C07C2DD98AC88A8989D4 +:103150000E94AA178DEA91E00E943E14B1C0822F0E +:10316000807F09F046C0751314C0341312C061117A +:1031700010C02F7020612093B2010E94EA178DEADF +:1031800091E00E943E148091B201D80115968C9373 +:103190002EC0CD2819F15F3F11F44F3FF9F0F62E04 +:1031A00061111CC080917B0120917C0136E0821767 +:1031B00009F45AC090E0389FF001399FF00D1124B6 +:1031C000E358FE4F7181571306C07081471303C047 +:1031D0007281711103C001968770E9CFF62E6623C4 +:1031E00009F418C18091B20181608093B201F12C81 +:1031F00011C1751308C0341306C0611104C0809159 +:10320000B201D801C3C04D875E878D859E856A8BCC +:103210000E9484176A898823E1F16623D1F1209105 +:10322000B201822F82958F7090E0029774F08091A6 +:10323000AD019091AE0198878F831986DB86CA868F +:103240002C87CE0107960E943E1486E0F801ADEA75 +:10325000B1E001900D928A95E1F70E94F8170E9463 +:10326000EA17FF24F394D6C04D875E878D859E852F +:103270000E94B41C292F22952F7030E02230310596 +:103280000CF0BCC09F7009F0B6C0805E883008F4B6 +:10329000C1C0C8010E943E14E4CFC816D90608F484 +:1032A00053C0F601E81BF90BCF01883C910508F4E7 +:1032B00050C0F12C7C2DD98AC88A89890E94AA170E +:1032C000EDEAF1E086E0DF011D928A95E9F70E94C0 +:1032D000EA17A0C0751314C0341312C0611110C0D6 +:1032E0008091B201F8018583C8010E943E1486E0F6 +:1032F000EDEAF1E0DF011D928A95E9F7FE2C8AC024 +:103300004D875E878D859E856A8B0E9484176A89AA +:10331000882309F4BECF662309F4BBCF2091B20104 +:10332000822F82958F7090E002970CF48ECF80915F +:10333000AD019091AE019A8389831B82DD82CC829C +:103340002E83CE0101967FCF809590958C0D9D1D8B +:10335000ACCFF62E662309F49CCF75132EC0341320 +:103360002CC02091B20120FD1FC0822F82958F704A +:10337000D9F0D80115962C9315978F3049F08F5FAF +:10338000982F9295907F822F8F70892B15968C9312 +:10339000C8010E943E1486E0F801ADEAB1E0019058 +:1033A0000D928A95E1F793CF86E0F801ADEAB1E09E +:1033B00001900D928A95E1F72DC04D875E878D852E +:1033C0009E850E948417811140CF8091B201816057 +:1033D0008093B201C8010E943E141CC0662309F408 +:1033E00058CF4D875E878D859E850E9484178823E0 +:1033F00009F44FCF2ACF811148CF0CC024303105BA +:103400000CF047CF9F7009F440CFF8019581907F71 +:1034100009F03BCF8F2D62960FB6F894DEBF0FBE3A +:10342000CDBFDF91CF911F910F91FF90EF90DF9073 +:10343000CF9008951F93CF93DF93CDB7DEB72C972E +:103440000FB6F894DEBF0FBECDBF4F835887698794 +:103450007A878B879C87CE0107960E945318882312 +:1034600069F08F8198852A853B85232BF1F19F3F59 +:1034700009F063C08F3F09F060C037C086E0FE01ED +:103480003796DE01119601900D928A95E1F76F81D2 +:103490007885EA85FB85309741F17F3F11F46F3FD6 +:1034A00021F120917C0130E0C901019687709927B4 +:1034B00040917B0150E08417950709F447C0698368 +:1034C0007A83FD83EC8396E0929FD001939FB00DA9 +:1034D0001124A358BE4FFE01319601900D929A958A +:1034E000E1F780937C010E94C91716E080917B016F +:1034F00090917C018917C1F1189FC0011124835854 +:103500009E4F0E945318882379F1E0917B011E9F02 +:10351000F0011124E358FE4F408151816281738193 +:10352000848195810E94B91780917B0190E001967A +:103530008770992780937B01D9CF4F815885698502 +:103540007A858B859C850E94B917CFCF0E94801702 +:1035500010927C0110927B01EDEAF1E086E0DF0140 +:103560001D928A95E9F7C1CF2C960FB6F894DEBF6D +:103570000FBECDBFDF91CF911F910895EF92FF92C3 +:103580000F931F93CF93DF938C01892B09F46CC0A9 +:10359000F12CEE24E394E8012196F801849184371C +:1035A00040F4843008F051C0813081F0823019F14C +:1035B0005BC0853709F444C0A8F19CE7980F9037A9 +:1035C00008F052C08F770E94E11341C00E5F1F4F79 +:1035D000FE01C49180E28C0F883048F4C7708E2DB4 +:1035E00001C0880FCA95EAF70E94691D14C08C2F8C +:1035F0000E9419132DC00E5F1F4FFE01C49180E27F +:103600008C0F883058F4C7708E2D01C0880FCA9572 +:10361000EAF70E946F1D0E94901D1AC08C2F0E9415 +:10362000E11316C00E5F1F4FFE01C491CC2381F041 +:103630008FE99FE00197F1F700C00000C150F6CF7D +:103640000E5F1F4FFE01F49003C00E9419138E01FC +:103650008F2D882309F49FCFEFE9FFE03197F1F731 +:1036600000C000008150F5CFDF91CF911F910F91E5 +:10367000FF90EF90089508956093B7017093B8019B +:103680008093B9019093BA010C946C170F931F9318 +:103690000091B7011091B8012091B9013091BA01A0 +:1036A000DC01CB01802B912BA22BB32B8093B70194 +:1036B0009093B801A093B901B093BA011F910F91F3 +:1036C0000C946C170F931F930091B7011091B801E0 +:1036D0002091B9013091BA01DC01CB018023912303 +:1036E000A223B3238093B7019093B801A093B901AB +:1036F000B093BA011F910F910C946C170F931F9305 +:103700000091B7011091B8012091B9013091BA012F +:10371000DC01CB0180279127A227B3278093B70133 +:103720009093B801A093B901B093BA011F910F9182 +:103730000C946C171092B3011092B4011092B50161 +:103740001092B6010C946C1741E050E060E070E01C +:1037500004C0440F551F661F771F8A95D2F7409308 +:10376000B3015093B4016093B5017093B6010C940A +:103770006C1741E050E060E070E004C0440F551F5A +:10378000661F771F8A95D2F78091B3019091B4019B +:10379000A091B501B091B601482B592B6A2B7B2B18 +:1037A0004093B3015093B4016093B5017093B60197 +:1037B0000C946C1741E050E060E070E004C0440FEE +:1037C000551F661F771F8A95D2F7409550956095D3 +:1037D00070958091B3019091B401A091B501B09121 +:1037E000B601482359236A237B234093B3015093A6 +:1037F000B4016093B5017093B6010C946C1741E06D +:1038000050E060E070E004C0440F551F661F771F52 +:103810008A95D2F78091B3019091B401A091B5013E +:10382000B091B601482759276A277B274093B301F7 +:103830005093B4016093B5017093B6010C946C176A +:103840000F931F930091B3011091B4012091B50122 +:103850003091B601DC01CB01802B912BA22BB32B35 +:103860008093B3019093B401A093B501B093B601D6 +:103870001F910F910C946C170F931F930091B3013C +:103880001091B4012091B5013091B601DC01CB015A +:1038900080239123A223B3238093B3019093B40197 +:1038A000A093B501B093B6011F910F910C946C17C2 +:1038B0000F931F930091B3011091B4012091B501B2 +:1038C0003091B601DC01CB0180279127A227B327D5 +:1038D0008093B3019093B401A093B501B093B60166 +:1038E0001F910F910C946C170895CF92DF92EF9275 +:1038F000FF920F931F93CF93DF938C01C090B7017A +:10390000D090B801E090B901F090BA018091B30174 +:103910009091B401A091B501B091B601C82AD92AFD +:10392000EA2AFB2ACFE1D0E0D701C6010C2E04C061 +:10393000B695A795979587950A94D2F780FF06C00C +:10394000B8018C2F0E944E0A019721F4219760F74D +:1039500080E001C08C2FDF91CF911F910F91FF90DC +:10396000EF90DF90CF900895CF93DF93EC010E940A +:10397000751CBE010E944E0ADF91CF910895CB01C4 +:103980000E94B41C089590910C01992321F090910C +:103990000D01911109C020910E0130910F01F90123 +:1039A00032969FEF40E01FC0982F9695969596957A +:1039B0009F3050F5E0910E01F0910F01E90FF11DDC +:1039C000877021E030E0A90102C0440F551F8A959D +:1039D000E2F7CA019181892B818308959F3F39F0D5 +:1039E0004F5F4E3041F051915813F8CF0DC0511137 +:1039F000F7CF942FF5CF9F3F39F0F901E90FF11D73 +:103A000097FDFA9582830895089590910C0199236A +:103A100021F090910D01911109C020910E0130917A +:103A20000F01F9013296205F3F4F1FC0982F9695E6 +:103A3000969596959F30F0F4E0910E01F0910F016C +:103A4000E90FF11D877021E030E0A90102C0440FA9 +:103A5000551F8A95E2F7CA01809591818923818358 +:103A600008953196E217F30729F090819813F9CF62 +:103A70001082F7CF089581E090E0E0910E01F0917F +:103A80000F01E80FF91F1082019680319105A9F707 +:103A900008959091CE01892B8093CE010895809551 +:103AA0009091CE0189238093CE0108951092CE018A +:103AB00008959091CD01892B8093CD010895809533 +:103AC0009091CD0189238093CD0108951092CD016D +:103AD00008959091CC01892B8093CC010895809515 +:103AE0009091CC0189238093CC0108951092CC0150 +:103AF00008958093BB0108951092BB0108958091B1 +:103B00000E0190910F01FC0131969C01205F3F4F07 +:103B100080E0919191118F5FE217F307D1F708953B +:103B2000E0910E01F0910F018091CE018083E09130 +:103B30000E01F0910F0190818091CD01892B80833E +:103B4000E0910E01F0910F0190818091CC01892BC1 +:103B500080838091BB01882361F0E0910E01F09198 +:103B60000F019081892B80830E947F1D811110920B +:103B7000BB0180910E0190910F010C94FC11CF922A +:103B8000DF92EF92FF926C01EE24FF24C114D10466 +:103B9000E104F10421F0C701B60120E101C020E0F9 +:103BA000C72ED82EE92EFF24C114D104E104F1045C +:103BB00019F0285FC701B6016B017C0154E0F6944F +:103BC000E794D794C7945A95D1F7C114D104E1046E +:103BD000F10419F02C5FC701B6016B017C0142E0D2 +:103BE000F694E794D794C7944A95D1F7C114D104B9 +:103BF000E104F10419F02E5FC701B601DC01CB012D +:103C0000B695A79597958795892B8A2B8B2B09F0CD +:103C10002F5F822FFF90EF90DF90CF9008958091DB +:103C2000E601843021F11092D00120E488E190E097 +:103C30000FB6F894A895809360000FBE20936000A3 +:103C400080E00E94E90A83B7817F846083BF83B7E5 +:103C5000816083BF7894889583B78E7F83BF88E126 +:103C60000FB6F89480936000109260000FBE089524 +:103C700008950895CF930E94381E0E9419070E944C +:103C8000391EC0E08C2F0E940708811104C0CF5F4D +:103C9000CE30C1F701C081E0CF9108950E94801716 +:103CA0000E94F0110C94E90A82E084BD93E095BD76 +:103CB0009AEF97BD80936E0008952FB7F894809186 +:103CC000D1019091D201A091D301B091D4012FBF25 +:103CD0000895CF92DF92EF92FF920F931F932FB729 +:103CE000F8944091D1015091D2016091D30170912B +:103CF000D4012FBF6A017B01EE24FF248C0120E058 +:103D000030E0C016D106E206F30610F44150510926 +:103D10009A01281B390BC9011F910F91FF90EF9059 +:103D2000DF90CF9008951F920F920FB60F9211243B +:103D30008F939F93AF93BF938091D1019091D201C4 +:103D4000A091D301B091D4010196A11DB11D809322 +:103D5000D1019093D201A093D301B093D401BF912C +:103D6000AF919F918F910F900FBE0F901F9018955C +:103D70000E94ED0EF8942FEF87EA91E621508040E3 +:103D80009040E1F700C0000087E090EBDC018093F9 +:103D9000F0019093F101A093F201B093F3019CE044 +:103DA00088E10FB6F894A895809360000FBE9093B9 +:103DB0006000FFCFEF92FF920F931F93CF93DF939B +:103DC000D82FC0E08C2F0E94070800E010E0E82EFA +:103DD000F12CC701002E02C0959587950A94E2F751 +:103DE00080FD06C00F5F1F4F0630110591F709C017 +:103DF000602F7C2F80E00E940F08D813F3CF81E062 +:103E000004C0CF5FCE30F1F680E0DF91CF911F91FB +:103E10000F91FF90EF900895CF93C82F8CE20E94EE +:103E2000DA1E882321F08C2FCF910C94DA1E80E0CB +:103E3000CF910895CF930E946120811102C00E940A +:103E40004720C5E6C15049F00E9419078FE39CE95D +:103E50000197F1F700C00000F5CF89E20E940C1F26 +:103E6000811113C18AE20E940C1F81110E94472018 +:103E700085E00E940C1F81110E94B81E0E946C20D8 +:103E80008093CF0187E00E940C1F8823A9F18BE16A +:103E90000E940C1F882351F08091CF0181FB2227C3 +:103EA00020F991E0922790FB81F90EC08EE00E94EC +:103EB0000C1F882361F08091CF0182FB222720F91B +:103EC00091E0922790FB82F98093CF0115C080E1A9 +:103ED0000E940C1F9091CF01882341F093FB222771 +:103EE00020F981E0822780FB93F904C0892F809517 +:103EF00080FB90F99093CF018091CF010E947020B8 +:103F00000E947E208093EF0180EE0E940C1F882388 +:103F100041F08091EF01982F909590FB80F980936C +:103F2000EF0189E30E940C1F882359F08091EF0173 +:103F300081FB222720F991E0922790FB81F9809361 +:103F4000EF0182EE0E940C1F882359F08091EF014F +:103F500082FB222720F991E0922790FB82F980933F +:103F6000EF0186EE0E940C1F882359F08091EF012B +:103F700083FB222720F991E0922790FB83F980931D +:103F8000EF0183EE0E940C1F882359F08091EF010E +:103F900084FB222720F991E0922790FB84F98093FB +:103FA000EF0185E30E940C1F882359F08091EF01F7 +:103FB00085FB222720F991E0922790FB85F98093D9 +:103FC000EF0181E30E940C1F882359F08091EF01DB +:103FD00086FB222720F991E0922790FB86F98093B7 +:103FE000EF0181E10E940C1F882359F08091EF01BD +:103FF00087FB222720F991E0922790FB87F9809395 +:10400000EF018091EF010E9482208091EF0187FBF8 +:10401000882780F980930D0187E20E940C1FC82F2A +:104020008EE10E940C1F8111C2608FE10E940C1F63 +:104030008111C46080E20E940C1F8111C86081E27E +:104040000E940C1F8111C06182E20E940C1F81112D +:10405000C06283E20E940C1F8111C06484E20E944E +:104060000C1F882311F0C06802C0CC2329F08C2FCC +:104070000E9479206C2F03C00E947520682F70E089 +:1040800080E090E0CF910C943C1BCF9108956DEEB1 +:104090007EEF80E090E00E94B32660E082E090E056 +:1040A0000E94A12660E083E090E00E94A12660E0EB +:1040B00084E090E00E94A12660E085E090E00C940E +:1040C000A12680E090E00E949B2621E08D3E9E4F3D +:1040D00009F020E0822F089582E090E00C9493266E +:1040E000682F82E090E00C94A12683E090E00C948D +:1040F0009326682F83E090E00C94A12684E090E062 +:104100000C949326682F84E090E00C94A126809173 +:10411000D70180FF0BC06091130185E0689FB0015B +:10412000112475956795759567952BC081FF09C01A +:104130006091130185E0689FB00111247595679522 +:1041400020C082FF07C06091130185E0689FB00125 +:10415000112417C09091D8019923D1F060911201D8 +:10416000961788F72091130185E0289F900111246C +:10417000929FA001939F500D112470E0CA010E94EC +:1041800065266038710540F46115710539F002C08B +:1041900065E070E0862F08958FE7089581E0089527 +:1041A0008091D70180FF08C06091110170E0759582 +:1041B00067957595679521C081FF06C060911101D3 +:1041C00070E07595679519C082FF04C06091110178 +:1041D00070E010C09091D8019923C1F06091100156 +:1041E0009617A0F780911101899FC001112470E0FA +:1041F0000E9465266038710528F46115710521F06B +:10420000862F08958FE7089581E0089561E070E0BA +:10421000F4CF803F21F40E948720819504C0813F24 +:1042200029F40E9487208093DB010895823F21F4C6 +:104230000E948720819504C0833F29F40E94872033 +:104240008093DA010895893F19F40E94D02005C0B7 +:104250008A3F31F40E94D02081958093DC0108953B +:104260008B3F21F40E94D020819504C08C3F29F41B +:104270000E94D0208093DD010895843F21F4809135 +:10428000D901816017C0853F21F48091D9018260F6 +:1042900011C0863F21F48091D90184600BC0873F13 +:1042A00021F48091D901886005C0883F31F4809164 +:1042B000D90180618093D90108958D3F21F48091C7 +:1042C000D70181600BC08E3F21F48091D7018260BD +:1042D00005C08F3F29F48091D70184608093D70176 +:1042E0000895803F39F48091DB0187FF6CC0109204 +:1042F000DB0169C0813F29F48091DB011816BCF312 +:1043000062C09091DA01823F29F497FF5CC010925D +:10431000DA0159C0833F19F41916CCF354C0893F10 +:1043200041F48091DC0118160CF04DC01092DC01B4 +:104330004AC08A3F29F48091DC0187FF44C0F6CF50 +:104340008B3F39F48091DD0187FF3DC01092DD0184 +:104350003AC08C3F29F48091DD011816BCF333C0BC +:10436000843F21F48091D9018E7F17C0853F21F4CD +:104370008091D9018D7F11C0863F21F48091D901B0 +:104380008B7F0BC0873F21F48091D901877F05C0C7 +:10439000883F31F48091D9018F7E8093D90113C079 +:1043A0008D3F21F48091D7018E7F0BC08E3F21F489 +:1043B0008091D7018D7F05C08F3F29F48091D7016F +:1043C0008B7F8093D7018091DA0181110EC080919B +:1043D000DB0181110AC08091DC01811106C080914E +:1043E000DD01811102C01092D801089589ED91E09C +:1043F0000E9407120E945D1E9093D6018093D50102 +:1044000008951F93CF93DF938091D5019091D601AA +:104410000E94691EAC019091D801992321F020914E +:10442000140130E006C0209115018AE0289F900118 +:1044300011244217530708F486C08091DA01C09115 +:10444000DB01D091DC011091DD01811107C0C111A8 +:1044500076C0D11174C0111172C075C09F3F19F0A0 +:104460009F5F9093D801181624F40E9487208093B0 +:10447000DA018091DA0187FF05C00E9487208195CB +:104480008093DA011C1624F40E9487208093DB01BC +:104490008091DB0187FF05C00E9487208195809372 +:1044A000DB016091DA01662339F1C091DB01CC2395 +:1044B00019F1772767FD7095872F972F0E94762532 +:1044C00023E333E343E35FE30E94DA250E944325BD +:1044D0006093DA016C2F772767FD7095872F972FF0 +:1044E0000E94762523E333E343E35FE30E94DA256A +:1044F0000E9443256093DB011D1624F40E94D02006 +:104500008093DC018091DC0187FF05C00E94D020F0 +:1045100081958093DC01111624F40E94D0208093B1 +:10452000DD018091DD0187FF05C00E94D0208195CB +:104530008093DD01DF91CF911F910C94F6219F3F75 +:1045400009F08ECF96CFDF91CF911F910895E9EDBD +:10455000F1E085E0DF011D928A95E9F71092D8011C +:104560001092D7010895833081F128F4813059F0F9 +:104570008230D1F00895853009F449C0B8F1863011 +:1045800009F456C0089580911501262F30E0280FB8 +:10459000311D2F3F310524F4680F609315010895F4 +:1045A0008FEF80931501089580911401262F30E03C +:1045B000280F311D2F3F310524F4680F609314013B +:1045C00008958FEF80931401089580911301262F91 +:1045D00030E0280F311D2F3F310524F4680F609320 +:1045E000130108958FEF80931301089580911201B4 +:1045F000262F30E0280F311D2F3F310524F4680F9E +:104600006093120108958FEF8093120108958091B5 +:104610001101262F30E0280F311D2F3F310524F4E2 +:10462000680F6093110108958FEF80931101089531 +:1046300080911001262F30E0280F311D2F3F3105CA +:1046400024F4680F6093100108958FEF8093100198 +:104650000895833011F128F4813049F0823091F0CF +:104660000895853081F120F18630C1F1089580915F +:104670001501681720F4861B809315010895109288 +:104680001501089580911401681720F4861B80930A +:104690001401089510921401089580911301681770 +:1046A00020F4861B8093130108951092130108953E +:1046B00080911201681720F4861B809312010895DF +:1046C00010921201089580911101681720F4861B41 +:1046D00080931101089510921101089580911001A5 +:1046E000681720F4861B8093100108951092100122 +:1046F00008950F931F938D3109F46BC008F03FC0EC +:104700008E3009F47FC0C0F4873009F469C068F4C2 +:10471000863009F0B1C08091CF01817F8E7F809378 +:10472000CF0181E08093DF01A8C0883009F4A2C0E6 +:104730008B3009F49FC0A0C0863109F49BC078F487 +:10474000803109F472C0813109F096C00E9480174F +:1047500090910D0181E0892780930D018BC08931F3 +:1047600009F488C08B3109F087C08091CF0181FBAB +:10477000222720F991E0922790FB81F94CC08533E4 +:1047800009F470C048F4873209F46CC008F459C0C9 +:10479000893209F467C070C0833438F48A3308F072 +:1047A0004EC0883309F466C067C0833409F45AC028 +:1047B000883409F061C00E9480170FEF13ED20E3E9 +:1047C000015010402040E1F700C000000E94B81ED8 +:1047D00051C00E94FD240E94F0110E94E90A4AC0C3 +:1047E0009091CF01892F8095817080FB90F929F0FD +:1047F000966098609093CF0140C0997F977F909387 +:10480000CF0138C08091CF0182FB222720F991E0AF +:10481000922790FB82F98093CF01992359F18091DF +:10482000CF0181608093CF0125C08091CF0183FBB0 +:10483000222720F991E0922790FB83F9ECCF89534E +:1048400001C08D5141E050E060E070E08A019B01C1 +:1048500004C0000F111F221F331F8A95D2F7C90110 +:10486000B80104C061E070E080E090E00E943C1B71 +:104870000E94801781E001C080E01F910F91089590 +:1048800080E0089580E00895CF93C82F8091DF01E4 +:10489000813079F018F08230E9F187C0E0910E01A3 +:1048A000F0910F018081813169F0823209F07FC07F +:1048B00009C0E0910E01F0910F018081813111F06A +:1048C000823261F48C2F0E944024811104C08C2F0D +:1048D0000E9479231DC081E090E01AC08C2F0E94B5 +:1048E0004224811114C0C43179F048F4CB3079F0FE +:1048F000C03109F060C082E08093DF0108C0C93296 +:1049000019F0C83321F057C01092DF0154C081E084 +:10491000817053C0C93289F118F5C43171F1A8F41E +:10492000C73009F046C08AE08093150194E1909366 +:10493000140193E0909313018093120188E0809317 +:10494000110188E28093100134C0CE51C63088F541 +:10495000EC2FF0E0E65DFE4F80818093DE0129C000 +:10496000CE34E9F020F4CB3421F56AE013C0C13530 +:1049700079F0C235F1F461E00DC08091DE01882349 +:1049800019F01092DE0115C081E08093DF0115C09F +:1049900061E006C08091DE010E94B3220AC06AE095 +:1049A0008091DE010E94292304C01092DF0180E083 +:1049B00004C081E002C080E0ABCFCF910895E1E870 +:1049C000F0E08081886080838081816080838FB700 +:1049D000F89493E09093890090ED909388008FBFB6 +:1049E0000895EFE6F0E08081826080830895EFE62D +:1049F000F0E080818D7F80830895EFE6F0E0908184 +:104A000082E08927808308951F920F920FB60F923C +:104A100011242F933F934F935F936F937F938F93C3 +:104A20009F93AF93BF93EF93FF938091E001909199 +:104A3000E10101969093E1018093E001811103C0AF +:104A400082E00E94E90AE091E101E695E695F0E056 +:104A5000E05EF74FE4918091E0018E1303C080E0A7 +:104A60000E94E90AFF91EF91BF91AF919F918F91C1 +:104A70007F916F915F914F913F912F910F900FBE5A +:104A80000F901F90189504D06894B1118DC00895AF +:104A900070D088F09F5790F0B92F9927B751A0F0A8 +:104AA000D1F0660F771F881F991F1AF0BA95C9F7C2 +:104AB00012C0B13081F077D0B1E0089574C0672F93 +:104AC000782F8827B85F39F0B93FCCF38695779572 +:104AD0006795B395D9F73EF490958095709561955B +:104AE0007F4F8F4F9F4F0895E89409C097FB3EF486 +:104AF00090958095709561957F4F8F4F9F4F99232B +:104B0000A9F0F92F96E9BB279395F69587957795A8 +:104B10006795B795F111F8CFFAF4BB0F11F460FF68 +:104B20001BC06F5F7F4F8F4F9F4F16C0882311F0C0 +:104B300096E911C0772321F09EE8872F762F05C0D4 +:104B4000662371F096E8862F70E060E02AF09A956F +:104B5000660F771F881FDAF7880F9695879597F964 +:104B6000089557FD9058440F551F59F05F3F71F05D +:104B70004795880F97FB991F61F09F3F79F08795C4 +:104B80000895121613061406551FF2CF4695F1DF4D +:104B900008C0161617061806991FF1CF86957105DD +:104BA000610508940895E894BB2766277727CB0111 +:104BB00097F908950BD078C069D028F06ED018F01E +:104BC000952309F05AC05FC01124EECFCADFA0F3CD +:104BD000959FD1F3950F50E0551F629FF001729F92 +:104BE000BB27F00DB11D639FAA27F00DB11DAA1FB1 +:104BF000649F6627B00DA11D661F829F2227B00DFE +:104C0000A11D621F739FB00DA11D621F839FA00D88 +:104C1000611D221F749F3327A00D611D231F849FD8 +:104C2000600D211D822F762F6A2F11249F5750402F +:104C30008AF0E1F088234AF0EE0FFF1FBB1F661FCA +:104C4000771F881F91505040A9F79E3F510570F083 +:104C500014C0AACF5F3FECF3983EDCF386957795BE +:104C60006795B795F795E7959F5FC1F7FE2B880F7E +:104C7000911D9695879597F9089597F99F6780E814 +:104C800070E060E008959FEF80EC089500240A949E +:104C90001616170618060906089500240A94121617 +:104CA0001306140605060895092E0394000C11F44A +:104CB000882352F0BB0F40F4BF2B11F460FF04C0F7 +:104CC0006F5F7F4F8F4F9F4F089597FB072E16F40E +:104CD000009407D077FD09D00E947F2607FC05D0FD +:104CE0003EF4909581959F4F0895709561957F4F03 +:104CF0000895EE0FFF1F0590F491E02D0994AA1B73 +:104D0000BB1B51E107C0AA1FBB1FA617B70710F0B6 +:104D1000A61BB70B881F991F5A95A9F780959095E8 +:104D2000BC01CD010895F999FECF92BD81BDF89ADD +:104D3000992780B50895A8E1B0E042E050E00C94D6 +:104D4000BB26262FF999FECF92BD81BDF89A019717 +:104D500000B4021639F01FBA20BD0FB6F894FA9AC3 +:104D6000F99A0FBE08950196272F0E94A2260C944F +:104D7000A126DC01CB01FC01F999FECF06C0F2BDF2 +:104D8000E1BDF89A319600B40D9241505040B8F709 +:064D90000895F894FFCF26 +:104D96002002EB0A790B560B220BEE0A0101BC012D +:104DA60028080A03140A3F4D3639E10794075E07BF +:104DB6002507B806D106EA0603070102030405061D +:044DC60007080900D1 +:00000001FF diff --git a/keyboard/ergodox_ez/keymaps/osx_de_experimental/osx_de_experimental_highres.png b/keyboard/ergodox_ez/keymaps/osx_de_experimental/osx_de_experimental_highres.png index 29f1099d06..031d874a7b 100644 Binary files a/keyboard/ergodox_ez/keymaps/osx_de_experimental/osx_de_experimental_highres.png and b/keyboard/ergodox_ez/keymaps/osx_de_experimental/osx_de_experimental_highres.png differ diff --git a/keyboard/ergodox_ez/keymaps/osx_de_experimental/readme.md b/keyboard/ergodox_ez/keymaps/osx_de_experimental/readme.md new file mode 100644 index 0000000000..e6a1018416 --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/osx_de_experimental/readme.md @@ -0,0 +1,22 @@ + +# Ergodox und Ergodox-EZ experimentelles Layout + +dieses layout ist experimentell und wird im Lufe der Zeit viele Änderungen und Verbesserungen durchlaufen. Falls diese sich als vorteilhaft erweisen, werden sie evtl. auch in das `osx_de` layout übernommen. + + + +# Erstellt Mit Dem ErgodoxLayoutGenerator + +Der ErgodoxLayoutGenerator (ELG) ist ein kleines Werkzeug, welches die Erstellung und Pflege der eigenen Keymaps erleichtern soll. Es ist in java geschrieben und kann [hier](https://github.com/sboesebeck/ErgodoxLayoutGenerator/releases) heruntergeladen werden. Damit das Tool funktioniert sollte das offizielle Oracle JDK in aktueller Version installiert sein. +Die Dokumentation für den ELG kann man [hier](https://boesebeck.name/2016/04/16/ergodoxlayoutgenerator-documentation/) nachlesen (momentan leider nur in Englisch verfügbar). +--------------------------------------------------------------------------------------------------------------------- + +# Ergodox and Ergodox-EZ experimental layout + +This is an experimental layout which will undergo heavy changes over time. If changes prove to be good, they might also move into the `osx_de` layout. + +Created Using the ErgodoxLayoutGenerator + +The ErgodoxLayoutGenerator (ELG) is a little tool, which makes the creation and maintenance of keycaps a lot easier. It was written in Java and can be downloaded [here](https://github.com/sboesebeck/ErgodoxLayoutGenerator/releases). To use the tool, you need to have a current version of Oracles JDK installed. + +The documentation of the ELG can be viewed [here](https://boesebeck.name/2016/04/16/ergodoxlayoutgenerator-documentation/). \ No newline at end of file -- cgit v1.2.1 From 1173dbd02f5a235e6d1542e875cc1d9ed43a2e8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?James=20=E2=80=98Twey=E2=80=99=20Kay?= Date: Mon, 2 May 2016 19:19:17 +0100 Subject: Swap steno/media layers to allow using media keys in the Plover layer; display all active layers, not just the top; use only momentary modifiers --- keyboard/ergodox_ez/keymaps/twey/keymap.c | 108 ++++++++++++++---------------- 1 file changed, 50 insertions(+), 58 deletions(-) diff --git a/keyboard/ergodox_ez/keymaps/twey/keymap.c b/keyboard/ergodox_ez/keymaps/twey/keymap.c index 75d264bdbe..dec9f92f14 100644 --- a/keyboard/ergodox_ez/keymaps/twey/keymap.c +++ b/keyboard/ergodox_ez/keymaps/twey/keymap.c @@ -5,8 +5,8 @@ #define BASE 0 // default layer #define SYMB 1 // symbols -#define MDIA 2 // media keys -#define STEN 3 // steno +#define STEN 2 // steno +#define MDIA 3 // media keys const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { @@ -17,19 +17,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |--------+------+------+------+-------+-------------| |-------+------+------+------+------+------+--------| * | Del | ' | , | . | P | Y | Esc | | Caps | F | G | C | R | L | / | * |--------+------+------+------+-------+------| | | |------+------+------+------+------+--------| - * | BkSp | A | O | E | U | I |------| |-------| D | H | T | N |S / L2|- / Cmd | + * | BkSp | A | O | E | U | I |------| |-------| D | H | T | N | S | - | * |--------+------+------+------+-------+------| Tab | | Enter |------+------+------+------+------+--------| * | LShift | ; | Q | J | K | X | | | | B | M | W | V | Z | RShift | * `--------+------+------+------+-------+-------------' `--------------+------+------+------+------+--------' - * |Grv/L1| '" |AltShf| Left | Right | | Up | Down | [ | ] | ~L1 | + * | L1 | NONE | Grv | Left | Right | | Up | Down | [ | ] | L1 | * `-----------------------------------' `----------------------------------' - * ,-------------. ,---------------. - * | PgUp | PgDn | | Home | End | - * ,------|------|------| |-------+-------+------. - * | | | NONE | | NONE | | | - * | Alt | NONE |------| |-------| Space | Ctrl | - * | | | Supr | | AltGr | | | - * `--------------------' `----------------------' + * ,--------------. ,---------------. + * | PgUp | PgDn | | Home | End | + * ,------|-------|------| |-------+-------+------. + * | | | NONE | | AltGr | | | + * | Alt | Enter |------| |-------| Space | Ctrl | + * | | | Supr | | ~MDIA | | | + * `---------------------' `----------------------' */ // If it accepts an argument (i.e, is a function), it doesn't need KC_. // Otherwise, it needs KC_* @@ -39,19 +39,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_DELT, KC_QUOT, KC_COMM,KC_DOT, KC_P, KC_Y, KC_ESC, KC_BSPC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_TAB, - LT(SYMB,KC_GRV),KC_QUOT, LALT(KC_LSFT), KC_LEFT,KC_RGHT, + MO(SYMB), KC_NO, KC_GRV, KC_LEFT,KC_RGHT, KC_PGUP,KC_PGDN, KC_NO, KC_LALT,KC_ENT ,KC_LGUI, // right hand - KC_NO, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS, - KC_CAPS, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, - KC_D, KC_H, KC_T, KC_N, LT(MDIA, KC_S), GUI_T(KC_MINS), - KC_ENT, KC_B, KC_M, KC_W, KC_V, KC_Z , KC_RSFT, - KC_UP, KC_DOWN,KC_LBRC,KC_RBRC, KC_FN1, + KC_NO, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS, + KC_CAPS, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, + KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, + KC_ENT, KC_B, KC_M, KC_W, KC_V, KC_Z , KC_RSFT, + KC_UP, KC_DOWN,KC_LBRC,KC_RBRC, MO(SYMB), KC_HOME,KC_END, - KC_NO, - KC_RALT,KC_SPC,KC_RCTL + KC_RALT, + KC_FN1,KC_SPC,KC_RCTL ), /* Keymap 1: Symbol Layer * @@ -95,7 +95,29 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), -/* Keymap 2: Media and mouse keys + +[STEN] = KEYMAP( // layout: layer 2: Steno for Plover + // left hand + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, + KC_NO, PV_NUM, PV_NUM, PV_NUM, PV_NUM, PV_NUM, PV_STAR, + KC_NO, PV_LS, PV_LT, PV_LP, PV_LH, PV_STAR, + KC_NO, PV_LS, PV_LK, PV_LW, PV_LR, PV_STAR, PV_STAR, + KC_NO, KC_NO, KC_NO, KC_TRNS, KC_TRNS, + KC_NO, KC_NO, + KC_NO, + PV_A, PV_O, KC_NO, + // right hand + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + PV_STAR, PV_NUM, PV_NUM, PV_NUM, PV_NUM, PV_NUM, PV_NUM, + PV_STAR, PV_RF, PV_RP, PV_RL, PV_RT, PV_RD, + PV_STAR, PV_STAR, PV_RR, PV_RB, PV_RG, PV_RS, PV_RZ, + KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, + KC_NO, + KC_FN1, PV_E, PV_U +), + +/* Keymap 3: Media and mouse keys * * ,--------------------------------------------------. ,--------------------------------------------------. * | | | | | | | | | | | | | | | | @@ -136,31 +158,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, KC_WBAK ), - -[STEN] = KEYMAP( // layout: layer 4: Steno for Plover - // left hand - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, - KC_NO, PV_NUM, PV_NUM, PV_NUM, PV_NUM, PV_NUM, PV_STAR, - KC_NO, PV_LS, PV_LT, PV_LP, PV_LH, PV_STAR, - KC_NO, PV_LS, PV_LK, PV_LW, PV_LR, PV_STAR, PV_STAR, - KC_NO, KC_NO, KC_NO, KC_TRNS, KC_TRNS, - KC_NO, KC_NO, - KC_NO, - PV_A, PV_O, KC_NO, - // right hand - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, - PV_STAR, PV_NUM, PV_NUM, PV_NUM, PV_NUM, PV_NUM, PV_NUM, - PV_STAR, PV_RF, PV_RP, PV_RL, PV_RT, PV_RD, - PV_STAR, PV_STAR, PV_RR, PV_RB, PV_RG, PV_RS, PV_RZ, - KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_NO, - KC_NO, KC_NO, - KC_NO, - KC_NO, PV_E, PV_U -), }; const uint16_t PROGMEM fn_actions[] = { - [1] = ACTION_LAYER_TAP_TOGGLE(SYMB) // FN1 - Momentary Layer 1 (Symbols) + [1] = ACTION_LAYER_TAP_TOGGLE(MDIA) // FN1 - Momentary Layer 3 (Media) }; void toggle_steno(int pressed) @@ -200,26 +201,17 @@ void matrix_init_user(void) { // Runs constantly in the background, in a loop. void matrix_scan_user(void) { - uint8_t layer = biton32(layer_state); + uint32_t layer0 = layer_state & (1UL << 0), + layer1 = layer_state & (1UL << 1), + layer2 = layer_state & (1UL << 2), + layer3 = layer_state & (1UL << 3); ergodox_board_led_off(); ergodox_right_led_1_off(); ergodox_right_led_2_off(); ergodox_right_led_3_off(); - switch (layer) { - // TODO: Make this relevant to the ErgoDox EZ. - case 1: - ergodox_right_led_1_on(); - break; - case 2: - ergodox_right_led_2_on(); - break; - case 3: - ergodox_right_led_3_on(); - break; - default: - // none - break; - } + if (layer1) ergodox_right_led_1_on(); + if (layer2) ergodox_right_led_2_on(); + if (layer3) ergodox_right_led_3_on(); }; -- cgit v1.2.1 From 83e1cc241e3aabd69f6cdcd2581477d4b85bb8d3 Mon Sep 17 00:00:00 2001 From: IBNobody Date: Tue, 3 May 2016 12:56:40 -0500 Subject: Clarified audio.c (#302) * Updated personal layouts * tweaked personal * Nightly - Audio Cleanup Refactored the LUTs. Abstracted some of the registers out of audio to use more functional names. Split audio into audio and audio_pwm. WIP * nightly - collapsed code * Added check for note playing to LEDs --- keyboard/atomic/keymaps/pvc/config.h | 5 + keyboard/atomic/keymaps/pvc/keymap.c | 107 ++--- keyboard/planck/keymaps/pvc/config.h | 2 +- keyboard/planck/keymaps/pvc/keymap.c | 4 +- keyboard/planck/keymaps/pvc/makefile.mk | 3 +- quantum/audio/audio.c | 766 ++++++++++++++------------------ quantum/audio/audio.h | 6 +- quantum/audio/audio_pwm.c | 643 +++++++++++++++++++++++++++ quantum/audio/frequency_lut.h | 357 --------------- quantum/audio/luts.c | 382 ++++++++++++++++ quantum/audio/luts.h | 15 + quantum/audio/vibrato_lut.h | 28 -- quantum/audio/voices.c | 8 +- quantum/audio/voices.h | 3 +- quantum/keymap_common.c | 6 +- quantum/quantum.mk | 1 + 16 files changed, 1444 insertions(+), 892 deletions(-) create mode 100644 quantum/audio/audio_pwm.c delete mode 100644 quantum/audio/frequency_lut.h create mode 100644 quantum/audio/luts.c create mode 100644 quantum/audio/luts.h delete mode 100644 quantum/audio/vibrato_lut.h diff --git a/keyboard/atomic/keymaps/pvc/config.h b/keyboard/atomic/keymaps/pvc/config.h index cc92634646..034bc5dc5c 100644 --- a/keyboard/atomic/keymaps/pvc/config.h +++ b/keyboard/atomic/keymaps/pvc/config.h @@ -158,4 +158,9 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION + +//#define VIBRATO_ENABLE +//#define VIBRATO_STRENGTH_ENABLE + + #endif diff --git a/keyboard/atomic/keymaps/pvc/keymap.c b/keyboard/atomic/keymaps/pvc/keymap.c index e17c41e23d..3d604a868e 100644 --- a/keyboard/atomic/keymaps/pvc/keymap.c +++ b/keyboard/atomic/keymaps/pvc/keymap.c @@ -11,8 +11,8 @@ #define LAYER_QWERTY 0 #define LAYER_COLEMAK 1 #define LAYER_DVORAK 2 -#define LAYER_LOWER 3 -#define LAYER_RAISE 4 +#define LAYER_RAISE 3 +#define LAYER_LOWER 4 #define LAYER_FUNCTION 5 #define LAYER_MOUSE 6 #define LAYER_MUSIC 7 @@ -21,8 +21,8 @@ #define MACRO_QWERTY 0 #define MACRO_COLEMAK 1 #define MACRO_DVORAK 2 -#define MACRO_LOWER 3 -#define MACRO_RAISE 4 +#define MACRO_RAISE 3 +#define MACRO_LOWER 4 #define MACRO_FUNCTION 5 #define MACRO_MOUSE 6 #define MACRO_TIMBRE_1 7 @@ -42,8 +42,8 @@ #define M_QWRTY M(MACRO_QWERTY) #define M_COLMK M(MACRO_COLEMAK) #define M_DVORK M(MACRO_DVORAK) -#define M_LOWER M(MACRO_LOWER) #define M_RAISE M(MACRO_RAISE) +#define M_LOWER M(MACRO_LOWER) #define M_FUNCT M(MACRO_FUNCTION) #define M_MOUSE M(MACRO_MOUSE) #define TIMBR_1 M(MACRO_TIMBRE_1) @@ -148,23 +148,22 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { { KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_RAISE, KC_SPC, KC_SPC, M_LOWER, KC_RALT, KC_RGUI, KC_MENU, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT }, }, + [LAYER_RAISE] = { /* RAISED */ + { KC_TILD, KC_PSCR, KC_PAUS, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, ________________ }, + { _______, KC_F1, KC_F2, KC_F3, KC_F4, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS }, + { _______, KC_F5, KC_F6, KC_F7, KC_F8, _______, _______, _______, _______, _______, _______, _______, ________________, KC_HOME }, + { _______, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, ________________, _______, KC_END }, + { _______, _______, _______, _______, _______, ________________, _______, _______, _______, _______, _______, _______, _______, _______ }, + }, [LAYER_LOWER] = { /* LOWERED */ { KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, ________________ }, - { _______, _______, _______, _______, SC_CCLS, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS }, - { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ________________, KC_HOME }, - { _______, SC_REDO, _______, _______, _______, _______, _______, _______, _______, _______, _______, ________________, _______, KC_END }, + { _______, KC_F13, KC_F14, KC_F15, KC_F16, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS }, + { _______, KC_F17, KC_F18, KC_F19, KC_F20, _______, _______, _______, _______, _______, _______, _______, ________________, KC_HOME }, + { _______, KC_F21, KC_F22, KC_F23, KC_F24, _______, _______, _______, _______, _______, _______, ________________, _______, KC_END }, { _______, _______, _______, _______, _______, KC_BSPC, KC_BSPC, _______, _______, _______, _______, _______, _______, _______, _______ }, }, - [LAYER_RAISE] = { /* RAISED */ - { KC_TILD, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, ________________ }, - { _______, _______, _______, _______, SC_ACLS, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS }, - { _______, SC_SELA, SC_SAVE, _______, _______, _______, _______, _______, _______, _______, _______, _______, ________________, KC_HOME }, - { _______, SC_UNDO, SC_CUT, SC_COPY, SC_PSTE, _______, _______, _______, _______, _______, _______, ________________, _______, KC_END }, - { _______, _______, _______, _______, _______, ________________, _______, _______, _______, _______, _______, _______, _______, _______ }, - }, - [LAYER_FUNCTION] = { /* FUNCTION */ { KC_NLCK, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, ________________ }, { KC_SLCK, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, _______, KC_PAUS }, @@ -281,28 +280,28 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) } break; - case MACRO_LOWER: + case MACRO_RAISE: if (record->event.pressed) { - layer_on(LAYER_LOWER); + layer_on(LAYER_RAISE); update_tri_layer(LAYER_LOWER, LAYER_RAISE, LAYER_ADJUST); } else { - layer_off(LAYER_LOWER); + layer_off(LAYER_RAISE); update_tri_layer(LAYER_LOWER, LAYER_RAISE, LAYER_ADJUST); } break; - case MACRO_RAISE: + case MACRO_LOWER: if (record->event.pressed) { - layer_on(LAYER_RAISE); + layer_on(LAYER_LOWER); update_tri_layer(LAYER_LOWER, LAYER_RAISE, LAYER_ADJUST); } else { - layer_off(LAYER_RAISE); + layer_off(LAYER_LOWER); update_tri_layer(LAYER_LOWER, LAYER_RAISE, LAYER_ADJUST); } break; @@ -468,36 +467,40 @@ void led_set_user(uint8_t usb_led) _delay_ms(10); // gets rid of tick - if ((usb_led & (1<. */ /* disable debug print */ -//#define NO_DEBUG +#define NO_DEBUG /* disable print */ //#define NO_PRINT diff --git a/keyboard/planck/keymaps/pvc/keymap.c b/keyboard/planck/keymaps/pvc/keymap.c index 27850b2154..830b00a4c4 100644 --- a/keyboard/planck/keymaps/pvc/keymap.c +++ b/keyboard/planck/keymaps/pvc/keymap.c @@ -96,7 +96,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [LAYER_QWERTY] = { /* QWERTY */ { KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC }, - { KC_BSPC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT }, + { KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT }, { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT }, { KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_RAISE, KC_SPC, KC_SPC, M_LOWER, KC_UP, KC_DOWN, KC_LEFT, KC_RGHT }, }, @@ -115,7 +115,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [LAYER_COLEMAK] = { /* COLEMAK */ { KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_ESC }, - { KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT }, + { KC_BSPC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT }, { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT }, { KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_RAISE, KC_SPC, KC_SPC, M_LOWER, KC_UP, KC_DOWN, KC_LEFT, KC_RGHT }, }, diff --git a/keyboard/planck/keymaps/pvc/makefile.mk b/keyboard/planck/keymaps/pvc/makefile.mk index 4b9e34c53f..b3f1b9e51c 100644 --- a/keyboard/planck/keymaps/pvc/makefile.mk +++ b/keyboard/planck/keymaps/pvc/makefile.mk @@ -4,6 +4,7 @@ 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 # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality MIDI_ENABLE = no # MIDI controls AUDIO_ENABLE = no # Audio output on port C6 UNICODE_ENABLE = no # Unicode @@ -13,4 +14,4 @@ RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend -CONFIG_H = keymaps/$(KEYMAP)/config.h +CONFIG_H = keymaps/$(KEYMAP)/config.h \ No newline at end of file diff --git a/quantum/audio/audio.c b/quantum/audio/audio.c index e85370d958..3a7f0f5567 100644 --- a/quantum/audio/audio.c +++ b/quantum/audio/audio.c @@ -1,6 +1,6 @@ #include #include -#include +//#include #include #include #include @@ -10,30 +10,28 @@ #include "eeconfig.h" -#ifdef VIBRATO_ENABLE - #include "vibrato_lut.h" -#endif +#define CPU_PRESCALER 8 -#define PI 3.14159265 +// ----------------------------------------------------------------------------- +// Timer Abstractions +// ----------------------------------------------------------------------------- -#define CPU_PRESCALER 8 +// TIMSK3 - Timer/Counter #3 Interrupt Mask Register +// Turn on/off 3A interputs, stopping/enabling the ISR calls +#define ENABLE_AUDIO_COUNTER_3_ISR TIMSK3 |= _BV(OCIE3A) +#define DISABLE_AUDIO_COUNTER_3_ISR TIMSK3 &= ~_BV(OCIE3A) -#ifdef PWM_AUDIO - #include "wave.h" - #define SAMPLE_DIVIDER 39 - #define SAMPLE_RATE (2000000.0/SAMPLE_DIVIDER/2048) - // Resistor value of 1/ (2 * PI * 10nF * (2000000 hertz / SAMPLE_DIVIDER / 10)) for 10nF cap +// TCCR3A: Timer/Counter #3 Control Register +// Compare Output Mode (COM3An) = 0b00 = Normal port operation, OC3A disconnected from PC6 +#define ENABLE_AUDIO_COUNTER_3_OUTPUT TCCR3A |= _BV(COM3A1); +#define DISABLE_AUDIO_COUNTER_3_OUTPUT TCCR3A &= ~(_BV(COM3A1) | _BV(COM3A0)); - float places[8] = {0, 0, 0, 0, 0, 0, 0, 0}; - uint16_t place_int = 0; - bool repeat = true; -#endif +// Fast PWM Mode Controls +#define TIMER_3_PERIOD ICR3 +#define TIMER_3_DUTY_CYCLE OCR3A + +// ----------------------------------------------------------------------------- -void delay_us(int count) { - while(count--) { - _delay_us(1); - } -} int voices = 0; int voice_place = 0; @@ -45,26 +43,23 @@ float frequencies[8] = {0, 0, 0, 0, 0, 0, 0, 0}; int volumes[8] = {0, 0, 0, 0, 0, 0, 0, 0}; bool sliding = false; -int max = 0xFF; -float sum = 0; float place = 0; uint8_t * sample; uint16_t sample_length = 0; -// float freq = 0; - -bool notes = false; -bool note = false; -float note_frequency = 0; -float note_length = 0; -float note_tempo = TEMPO_DEFAULT; -float note_timbre = TIMBRE_DEFAULT; + +bool playing_notes = false; +bool playing_note = false; +float note_frequency = 0; +float note_length = 0; +uint8_t note_tempo = TEMPO_DEFAULT; +float note_timbre = TIMBRE_DEFAULT; uint16_t note_position = 0; float (* notes_pointer)[][2]; uint16_t notes_count; -bool notes_repeat; -float notes_rest; -bool note_resting = false; +bool notes_repeat; +float notes_rest; +bool note_resting = false; uint8_t current_note = 0; uint8_t rest_counter = 0; @@ -77,175 +72,65 @@ float vibrato_rate = 0.125; float polyphony_rate = 0; -bool inited = false; +static bool audio_initialized = false; audio_config_t audio_config; uint16_t envelope_index = 0; -void audio_toggle(void) { - audio_config.enable ^= 1; - eeconfig_update_audio(audio_config.raw); -} - -void audio_on(void) { - audio_config.enable = 1; - eeconfig_update_audio(audio_config.raw); -} - -void audio_off(void) { - audio_config.enable = 0; - eeconfig_update_audio(audio_config.raw); -} - -#ifdef VIBRATO_ENABLE -// Vibrato rate functions - -void set_vibrato_rate(float rate) { - vibrato_rate = rate; -} - -void increase_vibrato_rate(float change) { - vibrato_rate *= change; -} - -void decrease_vibrato_rate(float change) { - vibrato_rate /= change; -} - -#ifdef VIBRATO_STRENGTH_ENABLE - -void set_vibrato_strength(float strength) { - vibrato_strength = strength; -} - -void increase_vibrato_strength(float change) { - vibrato_strength *= change; -} - -void decrease_vibrato_strength(float change) { - vibrato_strength /= change; -} - -#endif - -#endif - -// Polyphony functions - -void set_polyphony_rate(float rate) { - polyphony_rate = rate; -} - -void enable_polyphony() { - polyphony_rate = 5; -} - -void disable_polyphony() { - polyphony_rate = 0; -} - -void increase_polyphony_rate(float change) { - polyphony_rate *= change; -} - -void decrease_polyphony_rate(float change) { - polyphony_rate /= change; -} - -// Timbre function - -void set_timbre(float timbre) { - note_timbre = timbre; -} - -// Tempo functions - -void set_tempo(float tempo) { - note_tempo = tempo; -} - -void decrease_tempo(uint8_t tempo_change) { - note_tempo += (float) tempo_change; -} - -void increase_tempo(uint8_t tempo_change) { - if (note_tempo - (float) tempo_change < 10) { - note_tempo = 10; - } else { - note_tempo -= (float) tempo_change; - } -} - -void audio_init() { +void audio_init() +{ - /* check signature */ - if (!eeconfig_is_enabled()) { + // Check EEPROM + if (!eeconfig_is_enabled()) + { eeconfig_init(); } audio_config.raw = eeconfig_read_audio(); - #ifdef PWM_AUDIO - PLLFRQ = _BV(PDIV2); - PLLCSR = _BV(PLLE); - while(!(PLLCSR & _BV(PLOCK))); - PLLFRQ |= _BV(PLLTM0); /* PCK 48MHz */ + // Set port PC6 (OC3A and /OC4A) as output + DDRC |= _BV(PORTC6); - /* Init a fast PWM on Timer4 */ - TCCR4A = _BV(COM4A0) | _BV(PWM4A); /* Clear OC4A on Compare Match */ - TCCR4B = _BV(CS40); /* No prescaling => f = PCK/256 = 187500Hz */ - OCR4A = 0; + DISABLE_AUDIO_COUNTER_3_ISR; - /* Enable the OC4A output */ - DDRC |= _BV(PORTC6); + // TCCR3A / TCCR3B: Timer/Counter #3 Control Registers + // Compare Output Mode (COM3An) = 0b00 = Normal port operation, OC3A disconnected from PC6 + // Waveform Generation Mode (WGM3n) = 0b1110 = Fast PWM Mode 14 (Period = ICR3, Duty Cycle = OCR3A) + // Clock Select (CS3n) = 0b010 = Clock / 8 + TCCR3A = (0 << COM3A1) | (0 << COM3A0) | (1 << WGM31) | (0 << WGM30); + TCCR3B = (1 << WGM33) | (1 << WGM32) | (0 << CS32) | (1 << CS31) | (0 << CS30); - TIMSK3 &= ~_BV(OCIE3A); // Turn off 3A interputs - - TCCR3A = 0x0; // Options not needed - TCCR3B = _BV(CS31) | _BV(CS30) | _BV(WGM32); // 64th prescaling and CTC - OCR3A = SAMPLE_DIVIDER - 1; // Correct count/compare, related to sample playback - #else - DDRC |= _BV(PORTC6); - - TIMSK3 &= ~_BV(OCIE3A); // Turn off 3A interputs - - TCCR3A = (0 << COM3A1) | (0 << COM3A0) | (1 << WGM31) | (0 << WGM30); - TCCR3B = (1 << WGM33) | (1 << WGM32) | (0 << CS32) | (1 << CS31) | (0 << CS30); - #endif - - inited = true; + audio_initialized = true; } -void stop_all_notes() { - if (!inited) { +void stop_all_notes() +{ + if (!audio_initialized) { audio_init(); } voices = 0; - #ifdef PWM_AUDIO - TIMSK3 &= ~_BV(OCIE3A); - #else - TIMSK3 &= ~_BV(OCIE3A); - TCCR3A &= ~_BV(COM3A1); - #endif - notes = false; - note = false; + + DISABLE_AUDIO_COUNTER_3_ISR; + DISABLE_AUDIO_COUNTER_3_OUTPUT; + + playing_notes = false; + playing_note = false; frequency = 0; volume = 0; - for (int i = 0; i < 8; i++) { + for (uint8_t i = 0; i < 8; i++) + { frequencies[i] = 0; volumes[i] = 0; } } -void stop_note(float freq) { - if (note) { - if (!inited) { +void stop_note(float freq) +{ + if (playing_note) { + if (!audio_initialized) { audio_init(); } - #ifdef PWM_AUDIO - freq = freq / SAMPLE_RATE; - #endif for (int i = 7; i >= 0; i--) { if (frequencies[i] == freq) { frequencies[i] = 0; @@ -266,15 +151,11 @@ void stop_note(float freq) { voice_place = 0; } if (voices == 0) { - #ifdef PWM_AUDIO - TIMSK3 &= ~_BV(OCIE3A); - #else - TIMSK3 &= ~_BV(OCIE3A); - TCCR3A &= ~_BV(COM3A1); - #endif + DISABLE_AUDIO_COUNTER_3_ISR; + DISABLE_AUDIO_COUNTER_3_OUTPUT; frequency = 0; volume = 0; - note = false; + playing_note = false; } } } @@ -289,9 +170,9 @@ float mod(float a, int b) float vibrato(float average_freq) { #ifdef VIBRATO_STRENGTH_ENABLE - float vibrated_freq = average_freq * pow(VIBRATO_LUT[(int)vibrato_counter], vibrato_strength); + float vibrated_freq = average_freq * pow(vibrato_lut[(int)vibrato_counter], vibrato_strength); #else - float vibrated_freq = average_freq * VIBRATO_LUT[(int)vibrato_counter]; + float vibrated_freq = average_freq * vibrato_lut[(int)vibrato_counter]; #endif vibrato_counter = mod((vibrato_counter + vibrato_rate * (1.0 + 440.0/average_freq)), VIBRATO_LUT_LENGTH); return vibrated_freq; @@ -299,295 +180,295 @@ float vibrato(float average_freq) { #endif -ISR(TIMER3_COMPA_vect) { - if (note) { - #ifdef PWM_AUDIO - if (voices == 1) { - // SINE - OCR4A = pgm_read_byte(&sinewave[(uint16_t)place]) >> 2; - - // SQUARE - // if (((int)place) >= 1024){ - // OCR4A = 0xFF >> 2; - // } else { - // OCR4A = 0x00; - // } - - // SAWTOOTH - // OCR4A = (int)place / 4; - - // TRIANGLE - // if (((int)place) >= 1024) { - // OCR4A = (int)place / 2; - // } else { - // OCR4A = 2048 - (int)place / 2; - // } - - place += frequency; - - if (place >= SINE_LENGTH) - place -= SINE_LENGTH; - - } else { - int sum = 0; - for (int i = 0; i < voices; i++) { - // SINE - sum += pgm_read_byte(&sinewave[(uint16_t)places[i]]) >> 2; - - // SQUARE - // if (((int)places[i]) >= 1024){ - // sum += 0xFF >> 2; - // } else { - // sum += 0x00; - // } - - places[i] += frequencies[i]; - - if (places[i] >= SINE_LENGTH) - places[i] -= SINE_LENGTH; - } - OCR4A = sum; - } - #else - if (voices > 0) { - float freq; - if (polyphony_rate > 0) { - if (voices > 1) { - voice_place %= voices; - if (place++ > (frequencies[voice_place] / polyphony_rate / CPU_PRESCALER)) { - voice_place = (voice_place + 1) % voices; - place = 0.0; - } - } - #ifdef VIBRATO_ENABLE - if (vibrato_strength > 0) { - freq = vibrato(frequencies[voice_place]); - } else { - #else - { - #endif - freq = frequencies[voice_place]; - } - } else { - if (frequency != 0 && frequency < frequencies[voices - 1] && frequency < frequencies[voices - 1] * pow(2, -440/frequencies[voices - 1]/12/2)) { - frequency = frequency * pow(2, 440/frequency/12/2); - } else if (frequency != 0 && frequency > frequencies[voices - 1] && frequency > frequencies[voices - 1] * pow(2, 440/frequencies[voices - 1]/12/2)) { - frequency = frequency * pow(2, -440/frequency/12/2); - } else { - frequency = frequencies[voices - 1]; - } - - - #ifdef VIBRATO_ENABLE - if (vibrato_strength > 0) { - freq = vibrato(frequency); - } else { - #else - { - #endif - freq = frequency; - } - } +ISR(TIMER3_COMPA_vect) +{ + float freq; + + if (playing_note) { + if (voices > 0) { + if (polyphony_rate > 0) { + if (voices > 1) { + voice_place %= voices; + if (place++ > (frequencies[voice_place] / polyphony_rate / CPU_PRESCALER)) { + voice_place = (voice_place + 1) % voices; + place = 0.0; + } + } + + #ifdef VIBRATO_ENABLE + if (vibrato_strength > 0) { + freq = vibrato(frequencies[voice_place]); + } else { + freq = frequencies[voice_place]; + } + #else + freq = frequencies[voice_place]; + #endif + } else { + if (frequency != 0 && frequency < frequencies[voices - 1] && frequency < frequencies[voices - 1] * pow(2, -440/frequencies[voices - 1]/12/2)) { + frequency = frequency * pow(2, 440/frequency/12/2); + } else if (frequency != 0 && frequency > frequencies[voices - 1] && frequency > frequencies[voices - 1] * pow(2, 440/frequencies[voices - 1]/12/2)) { + frequency = frequency * pow(2, -440/frequency/12/2); + } else { + frequency = frequencies[voices - 1]; + } + + #ifdef VIBRATO_ENABLE + if (vibrato_strength > 0) { + freq = vibrato(frequency); + } else { + freq = frequency; + } + #else + freq = frequency; + #endif + } + + if (envelope_index < 65535) { + envelope_index++; + } + + freq = voice_envelope(freq); + + if (freq < 30.517578125) { + freq = 30.52; + } + + TIMER_3_PERIOD = (uint16_t)(((float)F_CPU) / (freq * CPU_PRESCALER)); + TIMER_3_DUTY_CYCLE = (uint16_t)((((float)F_CPU) / (freq * CPU_PRESCALER)) * note_timbre); + } + } + + if (playing_notes) { + if (note_frequency > 0) { + #ifdef VIBRATO_ENABLE + if (vibrato_strength > 0) { + freq = vibrato(note_frequency); + } else { + freq = note_frequency; + } + #else + freq = note_frequency; + #endif + + if (envelope_index < 65535) { + envelope_index++; + } + freq = voice_envelope(freq); + + TIMER_3_PERIOD = (uint16_t)(((float)F_CPU) / (freq * CPU_PRESCALER)); + TIMER_3_DUTY_CYCLE = (uint16_t)((((float)F_CPU) / (freq * CPU_PRESCALER)) * note_timbre); + } else { + TIMER_3_PERIOD = 0; + TIMER_3_DUTY_CYCLE = 0; + } + + note_position++; + bool end_of_note = false; + if (TIMER_3_PERIOD > 0) { + end_of_note = (note_position >= (note_length / TIMER_3_PERIOD * 0xFFFF)); + } else { + end_of_note = (note_position >= (note_length * 0x7FF)); + } + + if (end_of_note) { + current_note++; + if (current_note >= notes_count) { + if (notes_repeat) { + current_note = 0; + } else { + DISABLE_AUDIO_COUNTER_3_ISR; + DISABLE_AUDIO_COUNTER_3_OUTPUT; + playing_notes = false; + return; + } + } + if (!note_resting && (notes_rest > 0)) { + note_resting = true; + note_frequency = 0; + note_length = notes_rest; + current_note--; + } else { + note_resting = false; + envelope_index = 0; + note_frequency = (*notes_pointer)[current_note][0]; + note_length = ((*notes_pointer)[current_note][1] / 4) * (((float)note_tempo) / 100); + } + + note_position = 0; + } + } + + if (!audio_config.enable) { + playing_notes = false; + playing_note = false; + } +} - if (envelope_index < 65535) { - envelope_index++; - } - freq = voice_envelope(freq); +void play_note(float freq, int vol) { - if (freq < 30.517578125) - freq = 30.52; - ICR3 = (int)(((double)F_CPU) / (freq * CPU_PRESCALER)); // Set max to the period - OCR3A = (int)((((double)F_CPU) / (freq * CPU_PRESCALER)) * note_timbre); // Set compare to half the period - } - #endif + if (!audio_initialized) { + audio_init(); } - // SAMPLE - // OCR4A = pgm_read_byte(&sample[(uint16_t)place_int]); - - // place_int++; - - // if (place_int >= sample_length) - // if (repeat) - // place_int -= sample_length; - // else - // TIMSK3 &= ~_BV(OCIE3A); - - - if (notes) { - #ifdef PWM_AUDIO - OCR4A = pgm_read_byte(&sinewave[(uint16_t)place]) >> 0; - - place += note_frequency; - if (place >= SINE_LENGTH) - place -= SINE_LENGTH; - #else - if (note_frequency > 0) { - float freq; - - #ifdef VIBRATO_ENABLE - if (vibrato_strength > 0) { - freq = vibrato(note_frequency); - } else { - #else - { - #endif - freq = note_frequency; - } + if (audio_config.enable && voices < 8) { + DISABLE_AUDIO_COUNTER_3_ISR; - if (envelope_index < 65535) { - envelope_index++; - } - freq = voice_envelope(freq); + // Cancel notes if notes are playing + if (playing_notes) + stop_all_notes(); - ICR3 = (int)(((double)F_CPU) / (freq * CPU_PRESCALER)); // Set max to the period - OCR3A = (int)((((double)F_CPU) / (freq * CPU_PRESCALER)) * note_timbre); // Set compare to half the period - } else { - ICR3 = 0; - OCR3A = 0; - } - #endif - - - note_position++; - bool end_of_note = false; - if (ICR3 > 0) - end_of_note = (note_position >= (note_length / ICR3 * 0xFFFF)); - else - end_of_note = (note_position >= (note_length * 0x7FF)); - if (end_of_note) { - current_note++; - if (current_note >= notes_count) { - if (notes_repeat) { - current_note = 0; - } else { - #ifdef PWM_AUDIO - TIMSK3 &= ~_BV(OCIE3A); - #else - TIMSK3 &= ~_BV(OCIE3A); - TCCR3A &= ~_BV(COM3A1); - #endif - notes = false; - return; - } - } - if (!note_resting && (notes_rest > 0)) { - note_resting = true; - note_frequency = 0; - note_length = notes_rest; - current_note--; - } else { - note_resting = false; - #ifdef PWM_AUDIO - note_frequency = (*notes_pointer)[current_note][0] / SAMPLE_RATE; - note_length = (*notes_pointer)[current_note][1] * (note_tempo / 100); - #else - envelope_index = 0; - note_frequency = (*notes_pointer)[current_note][0]; - note_length = ((*notes_pointer)[current_note][1] / 4) * (note_tempo / 100); - #endif - } - note_position = 0; - } + playing_note = true; - } + envelope_index = 0; + + if (freq > 0) { + frequencies[voices] = freq; + volumes[voices] = vol; + voices++; + } + + ENABLE_AUDIO_COUNTER_3_ISR; + ENABLE_AUDIO_COUNTER_3_OUTPUT; + } - if (!audio_config.enable) { - notes = false; - note = false; - } } -void play_note(float freq, int vol) { +void play_notes(float (*np)[][2], uint16_t n_count, bool n_repeat, float n_rest) +{ - if (!inited) { + if (!audio_initialized) { audio_init(); } -if (audio_config.enable && voices < 8) { - TIMSK3 &= ~_BV(OCIE3A); - // Cancel notes if notes are playing - if (notes) - stop_all_notes(); - note = true; - envelope_index = 0; - #ifdef PWM_AUDIO - freq = freq / SAMPLE_RATE; - #endif - if (freq > 0) { - frequencies[voices] = freq; - volumes[voices] = vol; - voices++; - } + if (audio_config.enable) { + + DISABLE_AUDIO_COUNTER_3_ISR; + + // Cancel note if a note is playing + if (playing_note) + stop_all_notes(); + + playing_notes = true; + + notes_pointer = np; + notes_count = n_count; + notes_repeat = n_repeat; + notes_rest = n_rest; + + place = 0; + current_note = 0; + + note_frequency = (*notes_pointer)[current_note][0]; + note_length = ((*notes_pointer)[current_note][1] / 4) * (((float)note_tempo) / 100); + note_position = 0; + + + ENABLE_AUDIO_COUNTER_3_ISR; + ENABLE_AUDIO_COUNTER_3_OUTPUT; + } - #ifdef PWM_AUDIO - TIMSK3 |= _BV(OCIE3A); - #else - TIMSK3 |= _BV(OCIE3A); - TCCR3A |= _BV(COM3A1); - #endif } +bool is_playing_notes(void) { + return playing_notes; } -void play_notes(float (*np)[][2], uint16_t n_count, bool n_repeat, float n_rest) { +void audio_toggle(void) { + audio_config.enable ^= 1; + eeconfig_update_audio(audio_config.raw); +} - if (!inited) { - audio_init(); - } +void audio_on(void) { + audio_config.enable = 1; + eeconfig_update_audio(audio_config.raw); +} -if (audio_config.enable) { - TIMSK3 &= ~_BV(OCIE3A); - // Cancel note if a note is playing - if (note) - stop_all_notes(); - notes = true; - - notes_pointer = np; - notes_count = n_count; - notes_repeat = n_repeat; - notes_rest = n_rest; - - place = 0; - current_note = 0; - #ifdef PWM_AUDIO - note_frequency = (*notes_pointer)[current_note][0] / SAMPLE_RATE; - note_length = (*notes_pointer)[current_note][1] * (note_tempo / 100); - #else - note_frequency = (*notes_pointer)[current_note][0]; - note_length = ((*notes_pointer)[current_note][1] / 4) * (note_tempo / 100); - #endif - note_position = 0; +void audio_off(void) { + audio_config.enable = 0; + eeconfig_update_audio(audio_config.raw); +} +#ifdef VIBRATO_ENABLE - #ifdef PWM_AUDIO - TIMSK3 |= _BV(OCIE3A); - #else - TIMSK3 |= _BV(OCIE3A); - TCCR3A |= _BV(COM3A1); - #endif +// Vibrato rate functions + +void set_vibrato_rate(float rate) { + vibrato_rate = rate; } +void increase_vibrato_rate(float change) { + vibrato_rate *= change; } -#ifdef PWM_AUDIO -void play_sample(uint8_t * s, uint16_t l, bool r) { - if (!inited) { - audio_init(); - } +void decrease_vibrato_rate(float change) { + vibrato_rate /= change; +} - if (audio_config.enable) { - TIMSK3 &= ~_BV(OCIE3A); - stop_all_notes(); - place_int = 0; - sample = s; - sample_length = l; - repeat = r; +#ifdef VIBRATO_STRENGTH_ENABLE + +void set_vibrato_strength(float strength) { + vibrato_strength = strength; +} + +void increase_vibrato_strength(float change) { + vibrato_strength *= change; +} + +void decrease_vibrato_strength(float change) { + vibrato_strength /= change; +} + +#endif /* VIBRATO_STRENGTH_ENABLE */ + +#endif /* VIBRATO_ENABLE */ - TIMSK3 |= _BV(OCIE3A); +// Polyphony functions + +void set_polyphony_rate(float rate) { + polyphony_rate = rate; +} + +void enable_polyphony() { + polyphony_rate = 5; +} + +void disable_polyphony() { + polyphony_rate = 0; +} + +void increase_polyphony_rate(float change) { + polyphony_rate *= change; +} + +void decrease_polyphony_rate(float change) { + polyphony_rate /= change; +} + +// Timbre function + +void set_timbre(float timbre) { + note_timbre = timbre; +} + +// Tempo functions + +void set_tempo(uint8_t tempo) { + note_tempo = tempo; +} + +void decrease_tempo(uint8_t tempo_change) { + note_tempo += tempo_change; +} + +void increase_tempo(uint8_t tempo_change) { + if (note_tempo - tempo_change < 10) { + note_tempo = 10; + } else { + note_tempo -= tempo_change; } } -#endif + //------------------------------------------------------------------------------ // Override these functions in your keymap file to play different tunes on @@ -597,11 +478,8 @@ void play_startup_tone() { } - - __attribute__ ((weak)) void play_goodbye_tone() { - } //------------------------------------------------------------------------------ diff --git a/quantum/audio/audio.h b/quantum/audio/audio.h index 89769507e1..3d706587ab 100644 --- a/quantum/audio/audio.h +++ b/quantum/audio/audio.h @@ -56,7 +56,7 @@ void increase_polyphony_rate(float change); void decrease_polyphony_rate(float change); void set_timbre(float timbre); -void set_tempo(float tempo); +void set_tempo(uint8_t tempo); void increase_tempo(uint8_t tempo_change); void decrease_tempo(uint8_t tempo_change); @@ -83,7 +83,11 @@ void play_notes(float (*np)[][2], uint16_t n_count, bool n_repeat, float n_rest) #define NOTE_ARRAY_SIZE(x) ((int16_t)(sizeof(x) / (sizeof(x[0])))) #define PLAY_NOTE_ARRAY(note_array, note_repeat, note_rest_style) play_notes(¬e_array, NOTE_ARRAY_SIZE((note_array)), (note_repeat), (note_rest_style)); + +bool is_playing_notes(void); void play_goodbye_tone(void); void play_startup_tone(void); + + #endif \ No newline at end of file diff --git a/quantum/audio/audio_pwm.c b/quantum/audio/audio_pwm.c new file mode 100644 index 0000000000..328a253a7e --- /dev/null +++ b/quantum/audio/audio_pwm.c @@ -0,0 +1,643 @@ +#include +#include +//#include +#include +#include +#include +#include "print.h" +#include "audio.h" +#include "keymap_common.h" + +#include "eeconfig.h" + +#define PI 3.14159265 + +#define CPU_PRESCALER 8 + + +// Timer Abstractions + +// TIMSK3 - Timer/Counter #3 Interrupt Mask Register +// Turn on/off 3A interputs, stopping/enabling the ISR calls +#define ENABLE_AUDIO_COUNTER_3_ISR TIMSK3 |= _BV(OCIE3A) +#define DISABLE_AUDIO_COUNTER_3_ISR TIMSK3 &= ~_BV(OCIE3A) + + +// TCCR3A: Timer/Counter #3 Control Register +// Compare Output Mode (COM3An) = 0b00 = Normal port operation, OC3A disconnected from PC6 +#define ENABLE_AUDIO_COUNTER_3_OUTPUT TCCR3A |= _BV(COM3A1); +#define DISABLE_AUDIO_COUNTER_3_OUTPUT TCCR3A &= ~(_BV(COM3A1) | _BV(COM3A0)); + + +#define NOTE_PERIOD ICR3 +#define NOTE_DUTY_CYCLE OCR3A + + +#ifdef PWM_AUDIO + #include "wave.h" + #define SAMPLE_DIVIDER 39 + #define SAMPLE_RATE (2000000.0/SAMPLE_DIVIDER/2048) + // Resistor value of 1/ (2 * PI * 10nF * (2000000 hertz / SAMPLE_DIVIDER / 10)) for 10nF cap + + float places[8] = {0, 0, 0, 0, 0, 0, 0, 0}; + uint16_t place_int = 0; + bool repeat = true; +#endif + +void delay_us(int count) { + while(count--) { + _delay_us(1); + } +} + +int voices = 0; +int voice_place = 0; +float frequency = 0; +int volume = 0; +long position = 0; + +float frequencies[8] = {0, 0, 0, 0, 0, 0, 0, 0}; +int volumes[8] = {0, 0, 0, 0, 0, 0, 0, 0}; +bool sliding = false; + +float place = 0; + +uint8_t * sample; +uint16_t sample_length = 0; +// float freq = 0; + +bool playing_notes = false; +bool playing_note = false; +float note_frequency = 0; +float note_length = 0; +uint8_t note_tempo = TEMPO_DEFAULT; +float note_timbre = TIMBRE_DEFAULT; +uint16_t note_position = 0; +float (* notes_pointer)[][2]; +uint16_t notes_count; +bool notes_repeat; +float notes_rest; +bool note_resting = false; + +uint8_t current_note = 0; +uint8_t rest_counter = 0; + +#ifdef VIBRATO_ENABLE +float vibrato_counter = 0; +float vibrato_strength = .5; +float vibrato_rate = 0.125; +#endif + +float polyphony_rate = 0; + +static bool audio_initialized = false; + +audio_config_t audio_config; + +uint16_t envelope_index = 0; + +void audio_init() { + + // Check EEPROM + if (!eeconfig_is_enabled()) + { + eeconfig_init(); + } + audio_config.raw = eeconfig_read_audio(); + + #ifdef PWM_AUDIO + + PLLFRQ = _BV(PDIV2); + PLLCSR = _BV(PLLE); + while(!(PLLCSR & _BV(PLOCK))); + PLLFRQ |= _BV(PLLTM0); /* PCK 48MHz */ + + /* Init a fast PWM on Timer4 */ + TCCR4A = _BV(COM4A0) | _BV(PWM4A); /* Clear OC4A on Compare Match */ + TCCR4B = _BV(CS40); /* No prescaling => f = PCK/256 = 187500Hz */ + OCR4A = 0; + + /* Enable the OC4A output */ + DDRC |= _BV(PORTC6); + + DISABLE_AUDIO_COUNTER_3_ISR; // Turn off 3A interputs + + TCCR3A = 0x0; // Options not needed + TCCR3B = _BV(CS31) | _BV(CS30) | _BV(WGM32); // 64th prescaling and CTC + OCR3A = SAMPLE_DIVIDER - 1; // Correct count/compare, related to sample playback + + #else + + // Set port PC6 (OC3A and /OC4A) as output + DDRC |= _BV(PORTC6); + + DISABLE_AUDIO_COUNTER_3_ISR; + + // TCCR3A / TCCR3B: Timer/Counter #3 Control Registers + // Compare Output Mode (COM3An) = 0b00 = Normal port operation, OC3A disconnected from PC6 + // Waveform Generation Mode (WGM3n) = 0b1110 = Fast PWM Mode 14 (Period = ICR3, Duty Cycle = OCR3A) + // Clock Select (CS3n) = 0b010 = Clock / 8 + TCCR3A = (0 << COM3A1) | (0 << COM3A0) | (1 << WGM31) | (0 << WGM30); + TCCR3B = (1 << WGM33) | (1 << WGM32) | (0 << CS32) | (1 << CS31) | (0 << CS30); + + #endif + + audio_initialized = true; +} + +void stop_all_notes() { + if (!audio_initialized) { + audio_init(); + } + voices = 0; + #ifdef PWM_AUDIO + DISABLE_AUDIO_COUNTER_3_ISR; + #else + DISABLE_AUDIO_COUNTER_3_ISR; + DISABLE_AUDIO_COUNTER_3_OUTPUT; + #endif + + playing_notes = false; + playing_note = false; + frequency = 0; + volume = 0; + + for (uint8_t i = 0; i < 8; i++) + { + frequencies[i] = 0; + volumes[i] = 0; + } +} + +void stop_note(float freq) +{ + if (playing_note) { + if (!audio_initialized) { + audio_init(); + } + #ifdef PWM_AUDIO + freq = freq / SAMPLE_RATE; + #endif + for (int i = 7; i >= 0; i--) { + if (frequencies[i] == freq) { + frequencies[i] = 0; + volumes[i] = 0; + for (int j = i; (j < 7); j++) { + frequencies[j] = frequencies[j+1]; + frequencies[j+1] = 0; + volumes[j] = volumes[j+1]; + volumes[j+1] = 0; + } + break; + } + } + voices--; + if (voices < 0) + voices = 0; + if (voice_place >= voices) { + voice_place = 0; + } + if (voices == 0) { + #ifdef PWM_AUDIO + DISABLE_AUDIO_COUNTER_3_ISR; + #else + DISABLE_AUDIO_COUNTER_3_ISR; + DISABLE_AUDIO_COUNTER_3_OUTPUT; + #endif + frequency = 0; + volume = 0; + playing_note = false; + } + } +} + +#ifdef VIBRATO_ENABLE + +float mod(float a, int b) +{ + float r = fmod(a, b); + return r < 0 ? r + b : r; +} + +float vibrato(float average_freq) { + #ifdef VIBRATO_STRENGTH_ENABLE + float vibrated_freq = average_freq * pow(vibrato_lut[(int)vibrato_counter], vibrato_strength); + #else + float vibrated_freq = average_freq * vibrato_lut[(int)vibrato_counter]; + #endif + vibrato_counter = mod((vibrato_counter + vibrato_rate * (1.0 + 440.0/average_freq)), VIBRATO_LUT_LENGTH); + return vibrated_freq; +} + +#endif + +ISR(TIMER3_COMPA_vect) +{ + if (playing_note) { + #ifdef PWM_AUDIO + if (voices == 1) { + // SINE + OCR4A = pgm_read_byte(&sinewave[(uint16_t)place]) >> 2; + + // SQUARE + // if (((int)place) >= 1024){ + // OCR4A = 0xFF >> 2; + // } else { + // OCR4A = 0x00; + // } + + // SAWTOOTH + // OCR4A = (int)place / 4; + + // TRIANGLE + // if (((int)place) >= 1024) { + // OCR4A = (int)place / 2; + // } else { + // OCR4A = 2048 - (int)place / 2; + // } + + place += frequency; + + if (place >= SINE_LENGTH) + place -= SINE_LENGTH; + + } else { + int sum = 0; + for (int i = 0; i < voices; i++) { + // SINE + sum += pgm_read_byte(&sinewave[(uint16_t)places[i]]) >> 2; + + // SQUARE + // if (((int)places[i]) >= 1024){ + // sum += 0xFF >> 2; + // } else { + // sum += 0x00; + // } + + places[i] += frequencies[i]; + + if (places[i] >= SINE_LENGTH) + places[i] -= SINE_LENGTH; + } + OCR4A = sum; + } + #else + if (voices > 0) { + float freq; + if (polyphony_rate > 0) { + if (voices > 1) { + voice_place %= voices; + if (place++ > (frequencies[voice_place] / polyphony_rate / CPU_PRESCALER)) { + voice_place = (voice_place + 1) % voices; + place = 0.0; + } + } + #ifdef VIBRATO_ENABLE + if (vibrato_strength > 0) { + freq = vibrato(frequencies[voice_place]); + } else { + #else + { + #endif + freq = frequencies[voice_place]; + } + } else { + if (frequency != 0 && frequency < frequencies[voices - 1] && frequency < frequencies[voices - 1] * pow(2, -440/frequencies[voices - 1]/12/2)) { + frequency = frequency * pow(2, 440/frequency/12/2); + } else if (frequency != 0 && frequency > frequencies[voices - 1] && frequency > frequencies[voices - 1] * pow(2, 440/frequencies[voices - 1]/12/2)) { + frequency = frequency * pow(2, -440/frequency/12/2); + } else { + frequency = frequencies[voices - 1]; + } + + + #ifdef VIBRATO_ENABLE + if (vibrato_strength > 0) { + freq = vibrato(frequency); + } else { + #else + { + #endif + freq = frequency; + } + } + + if (envelope_index < 65535) { + envelope_index++; + } + freq = voice_envelope(freq); + + if (freq < 30.517578125) + freq = 30.52; + NOTE_PERIOD = (int)(((double)F_CPU) / (freq * CPU_PRESCALER)); // Set max to the period + NOTE_DUTY_CYCLE = (int)((((double)F_CPU) / (freq * CPU_PRESCALER)) * note_timbre); // Set compare to half the period + } + #endif + } + + // SAMPLE + // OCR4A = pgm_read_byte(&sample[(uint16_t)place_int]); + + // place_int++; + + // if (place_int >= sample_length) + // if (repeat) + // place_int -= sample_length; + // else + // DISABLE_AUDIO_COUNTER_3_ISR; + + + if (playing_notes) { + #ifdef PWM_AUDIO + OCR4A = pgm_read_byte(&sinewave[(uint16_t)place]) >> 0; + + place += note_frequency; + if (place >= SINE_LENGTH) + place -= SINE_LENGTH; + #else + if (note_frequency > 0) { + float freq; + + #ifdef VIBRATO_ENABLE + if (vibrato_strength > 0) { + freq = vibrato(note_frequency); + } else { + #else + { + #endif + freq = note_frequency; + } + + if (envelope_index < 65535) { + envelope_index++; + } + freq = voice_envelope(freq); + + NOTE_PERIOD = (int)(((double)F_CPU) / (freq * CPU_PRESCALER)); // Set max to the period + NOTE_DUTY_CYCLE = (int)((((double)F_CPU) / (freq * CPU_PRESCALER)) * note_timbre); // Set compare to half the period + } else { + NOTE_PERIOD = 0; + NOTE_DUTY_CYCLE = 0; + } + #endif + + + note_position++; + bool end_of_note = false; + if (NOTE_PERIOD > 0) + end_of_note = (note_position >= (note_length / NOTE_PERIOD * 0xFFFF)); + else + end_of_note = (note_position >= (note_length * 0x7FF)); + if (end_of_note) { + current_note++; + if (current_note >= notes_count) { + if (notes_repeat) { + current_note = 0; + } else { + #ifdef PWM_AUDIO + DISABLE_AUDIO_COUNTER_3_ISR; + #else + DISABLE_AUDIO_COUNTER_3_ISR; + DISABLE_AUDIO_COUNTER_3_OUTPUT; + #endif + playing_notes = false; + return; + } + } + if (!note_resting && (notes_rest > 0)) { + note_resting = true; + note_frequency = 0; + note_length = notes_rest; + current_note--; + } else { + note_resting = false; + #ifdef PWM_AUDIO + note_frequency = (*notes_pointer)[current_note][0] / SAMPLE_RATE; + note_length = (*notes_pointer)[current_note][1] * (((float)note_tempo) / 100); + #else + envelope_index = 0; + note_frequency = (*notes_pointer)[current_note][0]; + note_length = ((*notes_pointer)[current_note][1] / 4) * (((float)note_tempo) / 100); + #endif + } + note_position = 0; + } + + } + + if (!audio_config.enable) { + playing_notes = false; + playing_note = false; + } +} + +void play_note(float freq, int vol) { + + if (!audio_initialized) { + audio_init(); + } + + if (audio_config.enable && voices < 8) { + DISABLE_AUDIO_COUNTER_3_ISR; + + // Cancel notes if notes are playing + if (playing_notes) + stop_all_notes(); + + playing_note = true; + + envelope_index = 0; + + #ifdef PWM_AUDIO + freq = freq / SAMPLE_RATE; + #endif + if (freq > 0) { + frequencies[voices] = freq; + volumes[voices] = vol; + voices++; + } + + #ifdef PWM_AUDIO + ENABLE_AUDIO_COUNTER_3_ISR; + #else + ENABLE_AUDIO_COUNTER_3_ISR; + ENABLE_AUDIO_COUNTER_3_OUTPUT; + #endif + } + +} + +void play_notes(float (*np)[][2], uint16_t n_count, bool n_repeat, float n_rest) +{ + + if (!audio_initialized) { + audio_init(); + } + + if (audio_config.enable) { + + DISABLE_AUDIO_COUNTER_3_ISR; + + // Cancel note if a note is playing + if (playing_note) + stop_all_notes(); + + playing_notes = true; + + notes_pointer = np; + notes_count = n_count; + notes_repeat = n_repeat; + notes_rest = n_rest; + + place = 0; + current_note = 0; + + #ifdef PWM_AUDIO + note_frequency = (*notes_pointer)[current_note][0] / SAMPLE_RATE; + note_length = (*notes_pointer)[current_note][1] * (((float)note_tempo) / 100); + #else + note_frequency = (*notes_pointer)[current_note][0]; + note_length = ((*notes_pointer)[current_note][1] / 4) * (((float)note_tempo) / 100); + #endif + note_position = 0; + + + #ifdef PWM_AUDIO + ENABLE_AUDIO_COUNTER_3_ISR; + #else + ENABLE_AUDIO_COUNTER_3_ISR; + ENABLE_AUDIO_COUNTER_3_OUTPUT; + #endif + } + +} + +#ifdef PWM_AUDIO +void play_sample(uint8_t * s, uint16_t l, bool r) { + if (!audio_initialized) { + audio_init(); + } + + if (audio_config.enable) { + DISABLE_AUDIO_COUNTER_3_ISR; + stop_all_notes(); + place_int = 0; + sample = s; + sample_length = l; + repeat = r; + + ENABLE_AUDIO_COUNTER_3_ISR; + } +} +#endif + + +void audio_toggle(void) { + audio_config.enable ^= 1; + eeconfig_update_audio(audio_config.raw); +} + +void audio_on(void) { + audio_config.enable = 1; + eeconfig_update_audio(audio_config.raw); +} + +void audio_off(void) { + audio_config.enable = 0; + eeconfig_update_audio(audio_config.raw); +} + +#ifdef VIBRATO_ENABLE + +// Vibrato rate functions + +void set_vibrato_rate(float rate) { + vibrato_rate = rate; +} + +void increase_vibrato_rate(float change) { + vibrato_rate *= change; +} + +void decrease_vibrato_rate(float change) { + vibrato_rate /= change; +} + +#ifdef VIBRATO_STRENGTH_ENABLE + +void set_vibrato_strength(float strength) { + vibrato_strength = strength; +} + +void increase_vibrato_strength(float change) { + vibrato_strength *= change; +} + +void decrease_vibrato_strength(float change) { + vibrato_strength /= change; +} + +#endif /* VIBRATO_STRENGTH_ENABLE */ + +#endif /* VIBRATO_ENABLE */ + +// Polyphony functions + +void set_polyphony_rate(float rate) { + polyphony_rate = rate; +} + +void enable_polyphony() { + polyphony_rate = 5; +} + +void disable_polyphony() { + polyphony_rate = 0; +} + +void increase_polyphony_rate(float change) { + polyphony_rate *= change; +} + +void decrease_polyphony_rate(float change) { + polyphony_rate /= change; +} + +// Timbre function + +void set_timbre(float timbre) { + note_timbre = timbre; +} + +// Tempo functions + +void set_tempo(uint8_t tempo) { + note_tempo = tempo; +} + +void decrease_tempo(uint8_t tempo_change) { + note_tempo += tempo_change; +} + +void increase_tempo(uint8_t tempo_change) { + if (note_tempo - tempo_change < 10) { + note_tempo = 10; + } else { + note_tempo -= tempo_change; + } +} + + +//------------------------------------------------------------------------------ +// Override these functions in your keymap file to play different tunes on +// startup and bootloader jump +__attribute__ ((weak)) +void play_startup_tone() +{ +} + +__attribute__ ((weak)) +void play_goodbye_tone() +{ +} +//------------------------------------------------------------------------------ diff --git a/quantum/audio/frequency_lut.h b/quantum/audio/frequency_lut.h deleted file mode 100644 index e62da5be4e..0000000000 --- a/quantum/audio/frequency_lut.h +++ /dev/null @@ -1,357 +0,0 @@ -#include -#include -#include - -#define FREQUENCY_LUT_LENGTH 349 - -const uint16_t FREQUENCY_LUT[FREQUENCY_LUT_LENGTH] = { -0x8E0B, -0x8C02, -0x8A00, -0x8805, -0x8612, -0x8426, -0x8241, -0x8063, -0x7E8C, -0x7CBB, -0x7AF2, -0x792E, -0x7772, -0x75BB, -0x740B, -0x7261, -0x70BD, -0x6F20, -0x6D88, -0x6BF6, -0x6A69, -0x68E3, -0x6762, -0x65E6, -0x6470, -0x6300, -0x6194, -0x602E, -0x5ECD, -0x5D71, -0x5C1A, -0x5AC8, -0x597B, -0x5833, -0x56EF, -0x55B0, -0x5475, -0x533F, -0x520E, -0x50E1, -0x4FB8, -0x4E93, -0x4D73, -0x4C57, -0x4B3E, -0x4A2A, -0x491A, -0x480E, -0x4705, -0x4601, -0x4500, -0x4402, -0x4309, -0x4213, -0x4120, -0x4031, -0x3F46, -0x3E5D, -0x3D79, -0x3C97, -0x3BB9, -0x3ADD, -0x3A05, -0x3930, -0x385E, -0x3790, -0x36C4, -0x35FB, -0x3534, -0x3471, -0x33B1, -0x32F3, -0x3238, -0x3180, -0x30CA, -0x3017, -0x2F66, -0x2EB8, -0x2E0D, -0x2D64, -0x2CBD, -0x2C19, -0x2B77, -0x2AD8, -0x2A3A, -0x299F, -0x2907, -0x2870, -0x27DC, -0x2749, -0x26B9, -0x262B, -0x259F, -0x2515, -0x248D, -0x2407, -0x2382, -0x2300, -0x2280, -0x2201, -0x2184, -0x2109, -0x2090, -0x2018, -0x1FA3, -0x1F2E, -0x1EBC, -0x1E4B, -0x1DDC, -0x1D6E, -0x1D02, -0x1C98, -0x1C2F, -0x1BC8, -0x1B62, -0x1AFD, -0x1A9A, -0x1A38, -0x19D8, -0x1979, -0x191C, -0x18C0, -0x1865, -0x180B, -0x17B3, -0x175C, -0x1706, -0x16B2, -0x165E, -0x160C, -0x15BB, -0x156C, -0x151D, -0x14CF, -0x1483, -0x1438, -0x13EE, -0x13A4, -0x135C, -0x1315, -0x12CF, -0x128A, -0x1246, -0x1203, -0x11C1, -0x1180, -0x1140, -0x1100, -0x10C2, -0x1084, -0x1048, -0x100C, -0xFD1, -0xF97, -0xF5E, -0xF25, -0xEEE, -0xEB7, -0xE81, -0xE4C, -0xE17, -0xDE4, -0xDB1, -0xD7E, -0xD4D, -0xD1C, -0xCEC, -0xCBC, -0xC8E, -0xC60, -0xC32, -0xC05, -0xBD9, -0xBAE, -0xB83, -0xB59, -0xB2F, -0xB06, -0xADD, -0xAB6, -0xA8E, -0xA67, -0xA41, -0xA1C, -0x9F7, -0x9D2, -0x9AE, -0x98A, -0x967, -0x945, -0x923, -0x901, -0x8E0, -0x8C0, -0x8A0, -0x880, -0x861, -0x842, -0x824, -0x806, -0x7E8, -0x7CB, -0x7AF, -0x792, -0x777, -0x75B, -0x740, -0x726, -0x70B, -0x6F2, -0x6D8, -0x6BF, -0x6A6, -0x68E, -0x676, -0x65E, -0x647, -0x630, -0x619, -0x602, -0x5EC, -0x5D7, -0x5C1, -0x5AC, -0x597, -0x583, -0x56E, -0x55B, -0x547, -0x533, -0x520, -0x50E, -0x4FB, -0x4E9, -0x4D7, -0x4C5, -0x4B3, -0x4A2, -0x491, -0x480, -0x470, -0x460, -0x450, -0x440, -0x430, -0x421, -0x412, -0x403, -0x3F4, -0x3E5, -0x3D7, -0x3C9, -0x3BB, -0x3AD, -0x3A0, -0x393, -0x385, -0x379, -0x36C, -0x35F, -0x353, -0x347, -0x33B, -0x32F, -0x323, -0x318, -0x30C, -0x301, -0x2F6, -0x2EB, -0x2E0, -0x2D6, -0x2CB, -0x2C1, -0x2B7, -0x2AD, -0x2A3, -0x299, -0x290, -0x287, -0x27D, -0x274, -0x26B, -0x262, -0x259, -0x251, -0x248, -0x240, -0x238, -0x230, -0x228, -0x220, -0x218, -0x210, -0x209, -0x201, -0x1FA, -0x1F2, -0x1EB, -0x1E4, -0x1DD, -0x1D6, -0x1D0, -0x1C9, -0x1C2, -0x1BC, -0x1B6, -0x1AF, -0x1A9, -0x1A3, -0x19D, -0x197, -0x191, -0x18C, -0x186, -0x180, -0x17B, -0x175, -0x170, -0x16B, -0x165, -0x160, -0x15B, -0x156, -0x151, -0x14C, -0x148, -0x143, -0x13E, -0x13A, -0x135, -0x131, -0x12C, -0x128, -0x124, -0x120, -0x11C, -0x118, -0x114, -0x110, -0x10C, -0x108, -0x104, -0x100, -0xFD, -0xF9, -0xF5, -0xF2, -0xEE -}; \ No newline at end of file diff --git a/quantum/audio/luts.c b/quantum/audio/luts.c new file mode 100644 index 0000000000..9f3de9a05c --- /dev/null +++ b/quantum/audio/luts.c @@ -0,0 +1,382 @@ +#include +#include +#include +#include "luts.h" + +const float vibrato_lut[VIBRATO_LUT_LENGTH] = +{ + 1.0022336811487, + 1.0042529943610, + 1.0058584256028, + 1.0068905285205, + 1.0072464122237, + 1.0068905285205, + 1.0058584256028, + 1.0042529943610, + 1.0022336811487, + 1.0000000000000, + 0.9977712970630, + 0.9957650169978, + 0.9941756956510, + 0.9931566259436, + 0.9928057204913, + 0.9931566259436, + 0.9941756956510, + 0.9957650169978, + 0.9977712970630, + 1.0000000000000, +}; + +const uint16_t frequency_lut[FREQUENCY_LUT_LENGTH] = +{ + 0x8E0B, + 0x8C02, + 0x8A00, + 0x8805, + 0x8612, + 0x8426, + 0x8241, + 0x8063, + 0x7E8C, + 0x7CBB, + 0x7AF2, + 0x792E, + 0x7772, + 0x75BB, + 0x740B, + 0x7261, + 0x70BD, + 0x6F20, + 0x6D88, + 0x6BF6, + 0x6A69, + 0x68E3, + 0x6762, + 0x65E6, + 0x6470, + 0x6300, + 0x6194, + 0x602E, + 0x5ECD, + 0x5D71, + 0x5C1A, + 0x5AC8, + 0x597B, + 0x5833, + 0x56EF, + 0x55B0, + 0x5475, + 0x533F, + 0x520E, + 0x50E1, + 0x4FB8, + 0x4E93, + 0x4D73, + 0x4C57, + 0x4B3E, + 0x4A2A, + 0x491A, + 0x480E, + 0x4705, + 0x4601, + 0x4500, + 0x4402, + 0x4309, + 0x4213, + 0x4120, + 0x4031, + 0x3F46, + 0x3E5D, + 0x3D79, + 0x3C97, + 0x3BB9, + 0x3ADD, + 0x3A05, + 0x3930, + 0x385E, + 0x3790, + 0x36C4, + 0x35FB, + 0x3534, + 0x3471, + 0x33B1, + 0x32F3, + 0x3238, + 0x3180, + 0x30CA, + 0x3017, + 0x2F66, + 0x2EB8, + 0x2E0D, + 0x2D64, + 0x2CBD, + 0x2C19, + 0x2B77, + 0x2AD8, + 0x2A3A, + 0x299F, + 0x2907, + 0x2870, + 0x27DC, + 0x2749, + 0x26B9, + 0x262B, + 0x259F, + 0x2515, + 0x248D, + 0x2407, + 0x2382, + 0x2300, + 0x2280, + 0x2201, + 0x2184, + 0x2109, + 0x2090, + 0x2018, + 0x1FA3, + 0x1F2E, + 0x1EBC, + 0x1E4B, + 0x1DDC, + 0x1D6E, + 0x1D02, + 0x1C98, + 0x1C2F, + 0x1BC8, + 0x1B62, + 0x1AFD, + 0x1A9A, + 0x1A38, + 0x19D8, + 0x1979, + 0x191C, + 0x18C0, + 0x1865, + 0x180B, + 0x17B3, + 0x175C, + 0x1706, + 0x16B2, + 0x165E, + 0x160C, + 0x15BB, + 0x156C, + 0x151D, + 0x14CF, + 0x1483, + 0x1438, + 0x13EE, + 0x13A4, + 0x135C, + 0x1315, + 0x12CF, + 0x128A, + 0x1246, + 0x1203, + 0x11C1, + 0x1180, + 0x1140, + 0x1100, + 0x10C2, + 0x1084, + 0x1048, + 0x100C, + 0xFD1, + 0xF97, + 0xF5E, + 0xF25, + 0xEEE, + 0xEB7, + 0xE81, + 0xE4C, + 0xE17, + 0xDE4, + 0xDB1, + 0xD7E, + 0xD4D, + 0xD1C, + 0xCEC, + 0xCBC, + 0xC8E, + 0xC60, + 0xC32, + 0xC05, + 0xBD9, + 0xBAE, + 0xB83, + 0xB59, + 0xB2F, + 0xB06, + 0xADD, + 0xAB6, + 0xA8E, + 0xA67, + 0xA41, + 0xA1C, + 0x9F7, + 0x9D2, + 0x9AE, + 0x98A, + 0x967, + 0x945, + 0x923, + 0x901, + 0x8E0, + 0x8C0, + 0x8A0, + 0x880, + 0x861, + 0x842, + 0x824, + 0x806, + 0x7E8, + 0x7CB, + 0x7AF, + 0x792, + 0x777, + 0x75B, + 0x740, + 0x726, + 0x70B, + 0x6F2, + 0x6D8, + 0x6BF, + 0x6A6, + 0x68E, + 0x676, + 0x65E, + 0x647, + 0x630, + 0x619, + 0x602, + 0x5EC, + 0x5D7, + 0x5C1, + 0x5AC, + 0x597, + 0x583, + 0x56E, + 0x55B, + 0x547, + 0x533, + 0x520, + 0x50E, + 0x4FB, + 0x4E9, + 0x4D7, + 0x4C5, + 0x4B3, + 0x4A2, + 0x491, + 0x480, + 0x470, + 0x460, + 0x450, + 0x440, + 0x430, + 0x421, + 0x412, + 0x403, + 0x3F4, + 0x3E5, + 0x3D7, + 0x3C9, + 0x3BB, + 0x3AD, + 0x3A0, + 0x393, + 0x385, + 0x379, + 0x36C, + 0x35F, + 0x353, + 0x347, + 0x33B, + 0x32F, + 0x323, + 0x318, + 0x30C, + 0x301, + 0x2F6, + 0x2EB, + 0x2E0, + 0x2D6, + 0x2CB, + 0x2C1, + 0x2B7, + 0x2AD, + 0x2A3, + 0x299, + 0x290, + 0x287, + 0x27D, + 0x274, + 0x26B, + 0x262, + 0x259, + 0x251, + 0x248, + 0x240, + 0x238, + 0x230, + 0x228, + 0x220, + 0x218, + 0x210, + 0x209, + 0x201, + 0x1FA, + 0x1F2, + 0x1EB, + 0x1E4, + 0x1DD, + 0x1D6, + 0x1D0, + 0x1C9, + 0x1C2, + 0x1BC, + 0x1B6, + 0x1AF, + 0x1A9, + 0x1A3, + 0x19D, + 0x197, + 0x191, + 0x18C, + 0x186, + 0x180, + 0x17B, + 0x175, + 0x170, + 0x16B, + 0x165, + 0x160, + 0x15B, + 0x156, + 0x151, + 0x14C, + 0x148, + 0x143, + 0x13E, + 0x13A, + 0x135, + 0x131, + 0x12C, + 0x128, + 0x124, + 0x120, + 0x11C, + 0x118, + 0x114, + 0x110, + 0x10C, + 0x108, + 0x104, + 0x100, + 0xFD, + 0xF9, + 0xF5, + 0xF2, + 0xEE, +}; + diff --git a/quantum/audio/luts.h b/quantum/audio/luts.h new file mode 100644 index 0000000000..7df3078a7f --- /dev/null +++ b/quantum/audio/luts.h @@ -0,0 +1,15 @@ +#include +#include +#include + +#ifndef LUTS_H +#define LUTS_H + +#define VIBRATO_LUT_LENGTH 20 + +#define FREQUENCY_LUT_LENGTH 349 + +extern const float vibrato_lut[VIBRATO_LUT_LENGTH]; +extern const uint16_t frequency_lut[FREQUENCY_LUT_LENGTH]; + +#endif /* LUTS_H */ \ No newline at end of file diff --git a/quantum/audio/vibrato_lut.h b/quantum/audio/vibrato_lut.h deleted file mode 100644 index a2b1f3e5ce..0000000000 --- a/quantum/audio/vibrato_lut.h +++ /dev/null @@ -1,28 +0,0 @@ -#include -#include -#include - -#define VIBRATO_LUT_LENGTH 20 - -const float VIBRATO_LUT[VIBRATO_LUT_LENGTH] = { \ -1.00223368114872, -1.00425299436105, -1.00585842560279, -1.00689052852052, -1.0072464122237, -1.00689052852052, -1.00585842560279, -1.00425299436105, -1.00223368114872, -1, -0.99777129706302, -0.99576501699778, -0.994175695650927, -0.993156625943589, -0.992805720491269, -0.993156625943589, -0.994175695650927, -0.99576501699778, -0.99777129706302, -1 -}; \ No newline at end of file diff --git a/quantum/audio/voices.c b/quantum/audio/voices.c index d2316ba1b3..6d4172a06c 100644 --- a/quantum/audio/voices.c +++ b/quantum/audio/voices.c @@ -1,6 +1,6 @@ #include "voices.h" +#include "audio.h" #include "stdlib.h" -#include "vibrato_lut.h" // these are imported from audio.c extern uint16_t envelope_index; @@ -109,7 +109,7 @@ float voice_envelope(float frequency) { case 0 ... VOICE_VIBRATO_DELAY: break; default: - frequency = frequency * VIBRATO_LUT[(int)fmod((((float)compensated_index - (VOICE_VIBRATO_DELAY + 1))/1000*VOICE_VIBRATO_SPEED), VIBRATO_LUT_LENGTH)]; + frequency = frequency * vibrato_lut[(int)fmod((((float)compensated_index - (VOICE_VIBRATO_DELAY + 1))/1000*VOICE_VIBRATO_SPEED), VIBRATO_LUT_LENGTH)]; break; } break; @@ -160,4 +160,6 @@ float voice_envelope(float frequency) { } return frequency; -} \ No newline at end of file +} + + diff --git a/quantum/audio/voices.h b/quantum/audio/voices.h index 74c873f42f..b2495b23b5 100644 --- a/quantum/audio/voices.h +++ b/quantum/audio/voices.h @@ -2,8 +2,7 @@ #include #include #include -#include "musical_notes.h" -#include "song_list.h" +#include "luts.h" #ifndef VOICES_H #define VOICES_H diff --git a/quantum/keymap_common.c b/quantum/keymap_common.c index 4b4bd62109..5e78d1157d 100644 --- a/quantum/keymap_common.c +++ b/quantum/keymap_common.c @@ -24,10 +24,14 @@ along with this program. If not, see . #include "action_macro.h" #include "debug.h" #include "backlight.h" -#include "keymap_midi.h" #include "bootloader.h" #include "eeconfig.h" +#ifdef MIDI_ENABLE + #include "keymap_midi.h" +#endif + + extern keymap_config_t keymap_config; #include diff --git a/quantum/quantum.mk b/quantum/quantum.mk index 83c4f1d1db..4a076eca4d 100644 --- a/quantum/quantum.mk +++ b/quantum/quantum.mk @@ -29,6 +29,7 @@ endif ifeq ($(strip $(AUDIO_ENABLE)), yes) SRC += $(QUANTUM_DIR)/audio/audio.c $(QUANTUM_DIR)/audio/voices.c + SRC += $(QUANTUM_DIR)/audio/audio.c $(QUANTUM_DIR)/audio/luts.c endif ifeq ($(strip $(UNICODE_ENABLE)), yes) -- cgit v1.2.1 From 575ca2b96d0fccd01592db12e75931771924d7b4 Mon Sep 17 00:00:00 2001 From: Nicholas Keene Date: Tue, 3 May 2016 20:40:15 -0500 Subject: The Ordinary Layout works the way you expect it to, with extra powerful features --- keyboard/ergodox_ez/keymaps/ordinary/ordinary.hex | 1987 +++++++++++---------- 1 file changed, 1008 insertions(+), 979 deletions(-) diff --git a/keyboard/ergodox_ez/keymaps/ordinary/ordinary.hex b/keyboard/ergodox_ez/keymaps/ordinary/ordinary.hex index 83c443570b..6a42b7098a 100644 --- a/keyboard/ergodox_ez/keymaps/ordinary/ordinary.hex +++ b/keyboard/ergodox_ez/keymaps/ordinary/ordinary.hex @@ -1,19 +1,19 @@ :100000000C94C7020C940B030C940B030C940B037D :100010000C940B030C940B030C940B030C940B0328 -:100020000C940B030C940B030C946F0D0C94410E69 +:100020000C940B030C940B030C942A0E0C94FC0EF2 :100030000C940B030C940B030C940B030C940B0308 -:100040000C940B030C9499220C940B030C940B034B -:100050000C940B030C943B1C0C940B030C940B039F +:100040000C940B030C947B230C940B030C940B0368 +:100050000C940B030C941F1D0C940B030C940B03BA :100060000C940B030C940B030C940B030C940B03D8 :100070000C940B030C940B030C940B030C940B03C8 :100080000C940B030C940B030C940B030C940B03B8 :100090000C940B030C940B030C940B030C940B03A8 :1000A0000C940B030C940B030C940B031C034E03D6 :1000B0009A0335035E032D044A044D0450045E0484 -:1000C000A60EC80EB30FC80EB30F0A0F2D0FB30F35 -:1000D000820F950F89128912B712B712F9123513D0 -:1000E000351535154D133515441444140F153515B4 -:1000F0003515231500C801C802C803C804C805C8BF +:1000C000610F830F6E10830F6E10C50FE80F6E1057 +:1000D0003D1050104A134A138B138B13CD13091480 +:1000E000091609162114091618151815E31509160D +:1000F0000916F71500C801C802C803C804C805C816 :10010000022001200030E100E00000001E00140089 :1001100004001D0000074E001F001A0016001B00FF :10012000000F4C002000080007000600E2002A0033 @@ -88,16 +88,16 @@ :10057000F5E9DAC7B39D87715D4A3A2C20170F0A57 :100580000604020100000000000000000000112429 :100590001FBECFEFDAE0DEBFCDBF04B603FE24C03E -:1005A0008091F7019091F801A091F901B091FA01C1 -:1005B0008730904BA740B04BB9F41092F7011092DE -:1005C000F8011092F9011092FA0114BE84B7877FE6 +:1005A0008091F6019091F701A091F801B091F901C5 +:1005B0008730904BA740B04BB9F41092F6011092DF +:1005C000F7011092F8011092F90114BE84B7877FE9 :1005D00084BF88E10FB6F8948093600010926000A9 -:1005E0000FBEE0E0FFE3099511E0A0E0B1E0E6EB2B -:1005F000F8E402C005900D92A433B107D9F721E0C9 -:10060000A4E3B1E001C01D92A73FB207E1F70E9449 -:10061000B50A0C9459240C940000DC01462F50E0DC +:1005E0000FBEE0E0FFE3099511E0A0E0B1E0E4E830 +:1005F000FAE402C005900D92A433B107D9F721E0C7 +:10060000A4E3B1E001C01D92A63FB207E1F70E944A +:10061000700B0C9440250C940000DC01462F50E038 :100620004A30510508F05DC14A5A5F4F12962C912D -:100630001297FA010C940E2480913A0190913B019B +:100630001297FA010C94F02480913A0190913B01B9 :100640002223F1F0019690933B0180933A0180912F :10065000360190913701892B31F08091350191E07D :1006600089278093350181E09AC015968C91807F0F @@ -119,30 +119,30 @@ :100760008927809335018091380190913901892B37 :1007700031F08091340191E0892780933401307FFA :1007800069F4E0910E01F0910F018081827231F0E5 -:1007900089E30E94161189E30E94DE1183E00E9422 -:1007A000C9199FC0832F807FA1F030FD12C08091B6 +:1007900089E30E94D21189E30E949A1283E00E94A9 +:1007A0009D1A9FC0832F807FA1F030FD12C08091E1 :1007B0003A0190913B01892B61F48091380190912D -:1007C0003901892B31F485E30E94161185E30E94DB -:1007D000DE11809136019091370101979093370196 -:1007E00080933601892B09F07CC083E00E94EA19CE +:1007C0003901892B31F485E30E94D21185E30E941F +:1007D0009A128091360190913701019790933701D9 +:1007E00080933601892B09F07CC083E00E94BE1AF9 :1007F00078C02091360130913701882329F02115E6 :10080000310511F484E31BC080913A0190913B01C2 :10081000019690933B0180933A01232B09F01DCF61 :1008200022CF8091360190913701892B09F024CF96 :1008300084E310C02115310509F04BCF81E30E94FC -:1008400016114FC08091360190913701892B09F024 -:100850005FCF81E30E94DE1144C015963C912111C7 +:10084000D2114FC08091360190913701892B09F068 +:100850005FCF81E30E949A1244C015963C9121110A :100860006DCF832F807F09F4B4CF30FDB2CF80915C :100870003A0190913B01892B09F0ABCF809138016F -:1008800090913901892B09F0A4CF8EE20E941611B4 +:1008800090913901892B09F0A4CF8EE20E94D211F8 :100890008EE29DCF80EF90E005C080EF90E010C029 -:1008A00081EF90E0222329F00E94AF1E82EF90E0BA -:1008B0000DC00E94171F82EF90E00FC081EF90E003 -:1008C000222339F00E94AF1E83EF90E00E94AF1EFA -:1008D00006C00E94171F83EF90E00E94171F0E941E -:1008E0009C1F80E090E008950895E0910E01F09142 +:1008A00081EF90E0222329F00E94931F82EF90E0D5 +:1008B0000DC00E94FB1F82EF90E00FC081EF90E01F +:1008C000222339F00E94931F83EF90E00E94931F30 +:1008D00006C00E94FB1F83EF90E00E94FB1F0E9456 +:1008E000802080E090E008950895E0910E01F0915D :1008F0000F018081827219F0259A2D9A06C00E94FC -:10090000EE0F81FDF9CF25982D988091B90181FFD7 +:10090000A91081FDF9CF25982D988091B90181FF1B :1009100003C0269A2E9A02C026982E988091B9017B :1009200082FF03C0279A2F9A089527982F98089539 :100930000C94750456985E9825982D9826982E98B4 @@ -216,954 +216,983 @@ :100D700000018111C1CF0E949805B82EB094BDCF5B :100D800080E0BECF0E94980481E0DF91CF911F9157 :100D90000F91FF90EF90DF90CF90BF900895E82FD4 -:100DA000F0E0E45BFE4F8081089508958B3B910550 -:100DB00078F4883A910540F5853A9105D0F484306D -:100DC000910508F0B1C08130910509F4ADC06BC048 -:100DD000803E910508F467C0883E910508F4A4C0E0 -:100DE0009C01205F31092031310508F05CC090651D -:100DF0000895853A910509F459C0863A910509F498 -:100E000058C083E890E40895883A910509F454C0E5 -:100E1000893A910509F453C08A3A910509F452C000 -:100E20008B3A910509F451C08C3A910509F450C0F0 -:100E30008D3A910509F44FC0803B910509F44EC0ED -:100E40008E3A910509F44DC08F3A910509F44CC0D2 -:100E5000813B910509F44BC0823B910509F44AC0DE -:100E6000833B910509F449C0843B910509F448C0CE -:100E7000853B910509F447C0863B910509F446C0BE -:100E8000873B910509F445C0883B910509F444C0AE -:100E9000893B910509F443C08A3B910509F042C0A2 -:100EA0008AE296E4089580E090E0089581E890E475 -:100EB000089582E890E4089582EE94E4089589EE1E -:100EC00094E408958AEE94E4089585EB94E40895FB -:100ED00086EB94E4089587EB94E408958CEC94E415 -:100EE00008958DEC94E4089583E895E408958AE8E4 -:100EF00095E4089582E995E4089584E995E40895D8 -:100F000081E296E4089583E296E4089584E296E40B -:100F1000089585E296E4089586E296E4089587E2CE -:100F200096E4089580E094E40895089596E0799F0A -:100F3000F001112494E5899FE00DF11D1124E60FC5 -:100F4000F11DEE0FFF1FE050FF4F85919491089522 -:100F5000880F991F8C589040FC01859194910895B9 -:100F6000880F991F8C509F4FFC0185919491089593 -:100F700026E0729FF001112444E5849FE00DF11DED -:100F80001124E60FF11DEE0FFF1FE050FF4F2591DA -:100F90003491C9019A9581159F4110F4C9010895B2 -:100FA000C90190528115904128F4C9019F700E9497 -:100FB000B0070895C90190538115904120F4C901EB -:100FC0009927906C0895211580E5380769F40E94EF -:100FD00058159FEF24E34CE0915020404040E1F74A -:100FE00000C000000C94601C213080E5380731F40B -:100FF0008091D50181608093D5010895C9019055F4 -:101000008115904108F050C0832F99278F70992740 -:1010100081309105D9F4A9014370552702C0880F8A -:10102000991F4A95E2F79C68A90164E0440F551F97 -:101030006A95E1F744275370842B952B73E0220FB8 -:10104000331F7A95E1F7207633271DC08230910552 -:1010500029F4922F8827816F906A08958330910533 -:10106000A9F4A9014370552781E090E002C0880FE0 -:10107000991F4A95E2F79C6843E0220F331F4A9577 -:10108000E1F7207E3770822B932B08950497F1F4BB -:10109000A9014370552781E090E002C0880F991F95 -:1010A0004A95E2F79A68E8CFC901905781159041B7 -:1010B00020F4C9019F7090620895C901905881156C -:1010C000904120F4C9019F70906A0895203E310537 -:1010D000E0F4203C310558F52133310509F470C0A6 -:1010E00048F42932310509F464C02A32310509F483 -:1010F0006EC074C029333105F1F022383105D9F0C2 -:101100002533310509F44EC069C0233E310589F10C -:1011100038F4203E3105C1F0223E3105E1F05EC0D9 -:10112000263E310569F1273E3105A9F157C0C901B5 -:101130000E94A80708958091E80180FD02C081FF08 -:101140004DC080EE90E04BC08091E80180FFF9CF68 -:1011500089E390E044C08091E80182FF0EC0809155 -:10116000E80184FF03C080E090E039C083EE90E0A6 -:1011700036C08091E80182FFF2CF82EE90E02FC06E -:101180008091E80183FF0BC08091E80184FDEBCFE3 -:1011900087EE90E024C08091E80183FFF5CF86EED2 -:1011A00090E01DC08091E80185FF07C089E290E0D2 -:1011B00016C08091E80185FFF9CF85E390E00FC06C -:1011C0008091E80186FF07C08AE290E008C0809124 -:1011D000E80186FFF9CF81E390E001C0C9010E94D8 -:1011E000D606089508950C94F20880916A01089536 -:1011F000CF93DF9300D01F92CDB7DEB72091EE01E1 -:10120000243019F523E029839B838A832093E90006 -:101210008FEF9091E800815095FD06C095ED9A956D -:10122000F1F700008111F5CF8091E80085FF0DC036 -:1012300040E050E063E070E0CE0101960E94620B56 -:101240008091E8008E778093E8000F900F900F90C8 -:10125000DF91CF910895CF93DF9300D01F92CDB748 -:10126000DEB72091EE01243021F522E029839B8313 -:101270008A8383E08093E9008FEF9091E8008150AA -:1012800095FD06C095ED9A95F1F700008111F5CF17 -:101290008091E80085FF0DC040E050E063E070E021 -:1012A000CE0101960E94620B8091E8008E778093B8 -:1012B000E8000F900F900F90DF91CF91089520914B -:1012C000EE012430F1F422E02093E9002FEF309179 -:1012D000E800215035FD06C035ED3A95F1F70000E4 -:1012E0002111F5CF2091E80025FF0BC040E050E030 -:1012F00065E070E00E94620B8091E8008E77809339 -:10130000E8000895CF93DF93EC018091EE018430E3 -:1013100009F046C090910C019923D9F090910D01EC -:101320009923B9F08093E9008FEF9091E800815004 -:1013300095FD06C095E19A95F1F700008111F5CF72 -:101340008091E80085FF2CC040E050E060E170E053 -:1013500017C081E08093E9008FEF9091E800815001 -:1013600095FD06C095ED9A95F1F700008111F5CF36 -:101370008091E80085FF14C040E050E068E070E034 -:10138000CE010E94620B8091E8008E778093E80086 -:1013900080E1FE01AAE5B1E001900D928A95E1F7A6 -:1013A000DF91CF9108958091ED01811109C00E94D4 -:1013B000F40C0E94510D8091E20084608093E20061 -:1013C00008951092ED01089508950C9486220E94CC -:1013D000F71B0E948C220E94EE0F0C94F30842E04F -:1013E00061EC81E00E946E0C42E061EC82E00E94C0 -:1013F0006E0C42E061EC83E00E946E0C42E161EC15 -:1014000084E00C946E0C8091F001833009F455C097 -:1014100030F4813071F0823009F48EC008958A3042 -:1014200009F47AC08B3009F460C0893009F09CC09F -:1014300020C08091EF01813A09F096C08091E800C8 -:10144000877F8093E8008091F3019091F401892BCC -:1014500021F060E080E090E003C060E18AE591E087 -:1014600070E00E94AB0B8091E8008B778093E800DE -:1014700008958091EF01813209F076C08091F301E7 -:101480009091F401009719F0039709F06DC08091D5 -:10149000E800877F8093E8008091E80082FD05C026 -:1014A0008091EE018111F8CF5FC08091F1008093AF -:1014B0006A018091E8008B7753C08091EF01813AF7 -:1014C00009F052C08091F3019091F401892B09F049 -:1014D0004BC08091E800877F8093E8008091E8000E -:1014E00080FFFCCF80910C0136C08091EF018132EA -:1014F000D9F58091F3019091F401892BA9F58091A0 -:10150000E800877F8093E8000E94A30C8091F1019E -:1015100080930C010C9458158091EF01813221F5D4 -:101520008091E800877F8093E8000E94A30C80915F -:10153000F20180936B0108958091EF01813AA1F44B -:101540008091E800877F8093E8008091E80080FF29 -:10155000FCCF80916B018093F1008091E8008E7741 -:101560008093E8000C94A30C089584B7877F84BF10 -:1015700088E10FB6F89480936000109260000FBE6F -:1015800090E080E80FB6F89480936100909361003A -:101590000FBE0E943D100E94F40C0E94510D8091DC -:1015A000E20084608093E20078940E94CC0F0E9455 -:1015B0003F1082E091E00E94E90F0E947422809126 -:1015C000EE01853069F40E94BA1B8091EC018823FA -:1015D000B1F30E94E21B882391F30E944C0BEFCFE2 -:1015E0000E944510ECCF292F332723303105A9F075 -:1015F0006CF42130310509F442C02230310509F084 -:1016000043C08DE690E024ED33E042C02132310545 -:10161000C9F02232310519F137C09927813091057F -:1016200041F08230910541F0892B71F5E0EDF3E056 -:1016300005C0E8EBF3E002C0E0EAF3E0849190E05B -:101640009F0126C0643000F5E62FF0E0EE0FFF1F8B -:10165000EE5DFE4F2081318189E090E019C0643059 -:1016600098F4E62FF0E0DF01AA0FBB1FA65EBE4F85 -:101670002D913C91EA5EFE4F808190E009C082E1AD -:1016800090E021E434E004C080E090E020E030E02D -:10169000FA0131832083089580E189BD82E189BD0B -:1016A00009B400FEFDCF8091D8008F7D8093D800D3 -:1016B0008091E00082608093E0008091E00081FDF5 -:1016C000FCCF0895CF92DF92EF92FF920F931F937A -:1016D000CF93DF937C018B01EA010E94C40C81113E -:1016E00031C0209731F088819981081B190BE80ED1 -:1016F000F91EC12CD12C0115110519F18091E800BA -:1017000085FD14C08091E8008E778093E8002097D3 -:1017100041F0888199818C0D9D1D9983888385E096 -:1017200011C00E94C40C882331F30CC0F7018191D1 -:101730007F018093F10001501109FFEFCF1ADF0AFA -:10174000DACF80E0DF91CF911F910F91FF90EF9062 -:10175000DF90CF9008952091F5013091F601261782 -:10176000370748F06115710539F42091E8002E77AC -:101770002093E80001C0B901FC0120E0611571056A -:10178000B9F18091EE01882309F440C0853009F455 -:101790003FC08091E80083FD3DC08091E80082FF5A -:1017A00006C08091E80082FF26C080E00895809105 -:1017B000E80080FFE3CF2091F3008091F20090E0F9 -:1017C000922B6115710551F08830910538F4219103 -:1017D0002093F100615071090196F3CF21E0089741 -:1017E00009F020E08091E8008E778093E800C6CF72 -:1017F0002111C7CFD6CF8091EE01882339F08530F3 -:1018000039F08091E80083FFCCCF04C082E00895D6 -:1018100083E0089581E008952091F5013091F6016B -:101820002617370748F06115710539F42091E80053 -:101830002E772093E80001C0B901FC0120E061157A -:101840007105C1F18091EE01882309F441C0853012 -:1018500009F440C08091E80083FD3EC08091E8001B -:1018600082FF06C08091E80082FF27C080E00895D3 -:101870008091E80080FFE3CF2091F3008091F20097 -:1018800090E0922B6115710559F08830910540F474 -:1018900024912093F1003196615071090196F2CFA5 -:1018A00021E0089709F020E08091E8008E7780938E -:1018B000E800C5CF2111C6CFD5CF8091EE01882396 -:1018C00039F0853039F08091E80083FFCBCF04C038 -:1018D00082E0089583E0089581E00895982F97307D -:1018E00058F59093E900981739F07091EC00209129 -:1018F000ED005091F00003C0242F762F50E021FF1F -:1019000019C03091EB003E7F3093EB003091ED0039 -:101910003D7F3093ED003091EB0031603093EB0070 -:101920007093EC002093ED005093F0002091EE00B6 -:1019300027FF07C09F5FD3CF8F708093E90081E0BE -:10194000089580E008958091EF0187FD05C08091A2 -:10195000E80080FF0EC012C08091E80082FD05C043 -:101960008091EE018111F8CF08958091E8008B7786 -:1019700008C08091EE018111EACF08958091E800BE -:101980008E778093E80008958091E4009091E500BF -:1019900045E62091EC0020FF21C02091E80020FDC9 -:1019A00021C02091EE01222389F0253089F0209179 -:1019B000EB0025FD0FC02091E4003091E5002817D1 -:1019C000390739F3415041F0C901E3CF82E008956E -:1019D00083E0089581E0089584E008952091E8006F -:1019E00022FFDFCF80E008950E94620D0E946A0D01 -:1019F000E0EEF0E0808181608083E8EDF0E08081BE -:101A00008F77808319BCA7EDB0E08C918E7F8C938B -:101A100080818F7E80831092ED0108950F931F9334 -:101A2000CF93DF930E94620D0E946A0DC8EDD0E053 -:101A300088818F77888388818068888388818F7D7B -:101A4000888319BC1092EE011092EA011092EC0109 -:101A50001092EB0100EE10E0F80180818B7F808313 -:101A600088818160888342E060E080E00E946E0CA3 -:101A7000E1EEF0E080818E7F8083E2EEF0E0808115 -:101A800081608083808188608083F80180818E7F7F -:101A90008083888180618883DF91CF911F910F912E -:101AA0000895E8EDF0E080818F7E8083E7EDF0E03F -:101AB00080818160808384E082BF81E08093ED013A -:101AC0000C940E0DE8EDF0E080818E7F8083109203 -:101AD000E20008951092DA001092E10008951F923A -:101AE0000F920FB60F9211242F933F934F935F9352 -:101AF0006F937F938F939F93AF93BF93EF93FF93D6 -:101B00008091E10082FF0BC08091E20082FF07C05C -:101B10008091E1008B7F8093E1000E94CB0F809148 -:101B2000DA0080FF1FC08091D80080FF1BC0809129 -:101B3000DA008E7F8093DA008091D90080FF0DC09B -:101B400080E189BD82E189BD09B400FEFDCF81E05D -:101B50008093EE010E94D30905C019BC1092EE01DA -:101B60000E94E1098091E10080FF19C08091E200AC -:101B700080FF15C08091E2008E7F8093E20080910B -:101B8000E20080618093E2008091D80080628093BF -:101B9000D80019BC85E08093EE010E94E509809190 -:101BA000E10084FF30C08091E20084FF2CC080E11E -:101BB00089BD82E189BD09B400FEFDCF8091D800C6 -:101BC0008F7D8093D8008091E1008F7E8093E1002B -:101BD0008091E2008F7E8093E2008091E20081603C -:101BE0008093E2008091EA01882311F084E007C02D -:101BF0008091E30087FF02C083E001C081E0809311 -:101C0000EE010E94E7098091E10083FF29C08091E5 -:101C1000E20083FF25C08091E100877F8093E1008F -:101C200082E08093EE011092EA018091E1008E7FC4 -:101C30008093E1008091E2008E7F8093E2008091AA -:101C4000E20080618093E20042E060E080E00E9478 -:101C50006E0C8091F00088608093F0000E94E4098F -:101C6000FF91EF91BF91AF919F918F917F916F9174 -:101C70005F914F913F912F910F900FBE0F901F904A -:101C800018951F920F920FB60F9211242F933F9326 -:101C90004F935F936F937F938F939F93AF93BF9374 -:101CA000CF93EF93FF93C091E900CF708091EC0048 -:101CB0001092E9008091F000877F8093F000789483 -:101CC0000E947D0E1092E9008091F0008860809360 -:101CD000F000C093E900FF91EF91CF91BF91AF91D8 -:101CE0009F918F917F916F915F914F913F912F9134 -:101CF0000F900FBE0F901F9018951F93CF93DF93F7 -:101D0000CDB7DEB7AA970FB6F894DEBF0FBECDBF32 -:101D1000EFEEF1E08091F100819321E0E73FF207DF -:101D2000C9F70E94030A8091E80083FF1CC120913B -:101D3000EF013091F001832F90E08A30910508F097 -:101D400012C1FC01E05AFF4F0C940E24203881F0A0 -:101D5000223809F008C18091F3018F708093E90067 -:101D60008091EB0085FB882780F91092E90006C07E -:101D70008091EB019091EC01911182609091E800CB -:101D8000977F9093E8008093F1001092F100C5C016 -:101D9000822F8D7F09F0E7C0222319F0223061F0F5 -:101DA000E2C08091F101813009F0DDC0333009F0EB -:101DB00080E08093EC0128C08091F101811124C062 -:101DC0002091F3012F7009F4CEC02093E900809197 -:101DD000EB0080FF19C08091EB00333011F480627A -:101DE00011C080618093EB0081E090E0022E01C081 -:101DF000880F0A94EAF78093EA001092EA00809133 -:101E0000EB0088608093EB001092E9008091E8007D -:101E1000877F86C02111A7C01091F1011F778091A3 -:101E2000E3008078812B8093E3008091E800877F36 -:101E30008093E8000E94A30C8091E80080FFFCCF13 -:101E40008091E30080688093E300112311F083E028 -:101E500001C082E08093EE0186C02058223008F055 -:101E600082C08091F1019091F2018C3D23E09207B4 -:101E700079F583E08A838AE289834FB7F894DE019B -:101E8000139620E03EE051E2E32FF0E0509357003C -:101E9000E49120FF03C0E295EF703F5FEF708E2F5B -:101EA00090E0EA3010F0C79601C0C0968D939D93E4 -:101EB0002F5F243149F74FBF8091E800877F8093DF -:101EC000E8006AE270E0CE0101960E94AB0B14C0FC -:101ED000AE014F5F5F4F6091F3010E94F30A0097DC -:101EE00009F441C02091E800277F2093E800BC015D -:101EF00089819A810E940C0C8091E8008B778093F5 -:101F0000E80031C0203879F58091E800877F809320 -:101F1000E8008091EA018093F1008091E8008E77DB -:101F20008093E8000E94A30C1EC021111CC0909158 -:101F3000F1019230C0F48091E800877F8093E8003F -:101F40009093EA010E94A30C8091EA01811104C0E0 -:101F50008091E30087FF02C084E001C081E08093AC -:101F6000EE010E94EF098091E80083FF0AC0809192 -:101F7000E800877F8093E8008091EB008062809387 -:101F8000EB00AA960FB6F894DEBF0FBECDBFDF916F -:101F9000CF911F9108950895CF938091EE018823EA -:101FA000B1F08091E9008F709091EC0090FF02C039 -:101FB00090E801C090E0C92FC82B1092E9008091F1 -:101FC000E80083FD0E947D0ECF70C093E900CF91A1 -:101FD000089590937101809370010895E0917001CC -:101FE000F0917101309721F00190F081E02D09947A -:101FF00080E00895E0917001F0917101309721F037 -:102000000280F381E02D09940895E0917001F09130 -:102010007101309721F00480F581E02D0994089535 -:1020200020916E0130916F018217930771F09093A8 -:102030006F0180936E01E0917001F0917101309712 -:1020400021F00680F781E02D0994089520916C011C -:1020500030916D018217930771F090936D01809319 -:102060006C01E0917001F0917101309721F00084D2 -:10207000F185E02D0994089508950C943C100E9478 -:10208000FD1B0E94CA050C94C31CCF92DF92EF92F5 -:10209000FF920F931F93CF93DF93CDB7DEB72B97AC -:1020A0000FB6F894DEBF0FBECDBF0E94E20533E746 -:1020B000E32E31E0F32E00E010E0C02E802F0E94CE -:1020C000CF06F701D1907F01D826B1F40F5F1F4FE3 -:1020D0000E30110591F78FEF89838A831B820E944E -:1020E000061C8160782F9D838C8349815A816B8186 -:1020F0008D810E94E81041C09091D50191FF04C0EC -:102100008B870E94D5068B8520E030E04D2D50E076 -:10211000922FBA01022E02C0759567950A94E2F7D4 -:1021200060FF25C02E83CF82EE24E394F12C02C001 -:10213000EE0CFF1C9A95E2F790E08E219F2121E0A2 -:10214000892B09F420E028870E94061C8160782FE3 -:102150009A8789874E815F8168858A850E94E81009 -:10216000F801ED58FE4F80818E25808306C02F5FD9 -:102170003F4F2630310561F6A9CF0E94A71F10916D -:1021800072010E94EE0F1817A1F00E94EE0F8093CB -:1021900072012B960FB6F894DEBF0FBECDBFDF9154 -:1021A000CF911F910F91FF90EF90DF90CF900C9403 -:1021B000F3082B960FB6F894DEBF0FBECDBFDF91AC -:1021C000CF911F910F91FF90EF90DF90CF900895E6 -:1021D000CF93DF93CDB7DEB72B970FB6F894DEBF62 -:1021E0000FBECDBF4F83588769877A878B87DE0103 -:1021F000119686E0FD0111928A95E9F785E0FE01CE -:10220000379601900D928A95E1F749815A816B8149 -:102210007C818D819E810E9424182B960FB6F894A4 -:10222000DEBF0FBECDBFDF91CF910895CF93C82FF2 -:10223000882309F4C1C0823859F40E94EE0F81FD51 -:10224000BBC089E30E94C11A0E948B1B89E30CC0AA -:10225000833879F40E94EE0F80FDAEC083E50E94C2 -:10226000C11A0E948B1B83E50E94011BCF910C9425 -:102270008B1B843859F40E94EE0F82FD9DC087E4C9 -:102280000E94C11A0E948B1B87E4EECF8CEF8C0F4B -:10229000813A48F48C2F0E94DC2181118DC08C2F53 -:1022A0000E94C11AE3CF80E28C0F883048F4C770D7 -:1022B00081E001C0880FCA95EAF70E94421BD6CF81 -:1022C0008BE58C0F833078F4C53A29F0C63A31F4A7 -:1022D00082E890E005C081E890E002C083E890E0E9 -:1022E000CF910C94101088E58C0F833108F064C0F6 -:1022F000C83A39F1C93A41F1CA3A49F1CB3A51F1F8 -:10230000CC3A59F1CD3A61F1C03B69F1CE3A71F165 -:10231000CF3A79F1C13B81F1C23B89F1C33B91F1E5 -:10232000C43B99F1C53BA1F1C63BA9F1C73BB1F153 -:10233000C83BB9F1C93BC1F1CA3BC9F58AE292E099 -:1023400038C082EE90E035C089EE90E032C08AEE6F -:1023500090E02FC085EB90E02CC086EB90E029C088 -:1023600087EB90E026C08CEC90E023C08DEC90E0F1 -:1023700020C083E891E01DC08AE891E01AC082E99C -:1023800091E017C084E991E014C081E292E011C0AD -:1023900083E292E00EC084E292E00BC085E292E01C -:1023A00008C086E292E005C087E292E002C080E0C9 -:1023B00090E0CF910C942610CF910895882309F4D2 -:1023C0004BC0823859F40E94EE0F81FF45C089E36B -:1023D0000E94C11A0E948B1B89E30CC0833871F4E0 -:1023E0000E94EE0F80FF38C083E50E94C11A0E9450 -:1023F0008B1B83E50E94011B0C948B1B843859F4C2 -:102400000E94EE0F82FF28C087E40E94C11A0E943A -:102410008B1B87E4EFCF9CEF980F913A58F390E233 -:10242000980F983050F4877091E001C0990F8A9509 -:10243000EAF7892F0E94481BDFCF9BE5980F933066 -:1024400020F480E090E00C941010885A833120F43E -:1024500080E090E00C9426100895882321F00E94DB -:10246000421B0C948B1B0895882321F00E94481B6B -:102470000C948B1B0895CF92DF92EF92FF920F93F3 -:102480001F93CF93DF93CDB7DEB728970FB6F8949D -:10249000DEBF0FBECDBF8C0185E0F801DE011196D5 -:1024A00001900D928A95E1F7F80140813181F28027 -:1024B000258122952F7083819481892B31F03F3FB4 -:1024C00031F481E04F3F19F403C081E001C080E0A6 -:1024D00080FDCBC249833A8389819A812F830E94F0 -:1024E0007F1A9E8388870E947E1A0E9451192F812D -:1024F0004E816885FF2029F00E945F1B68854E8110 -:102500002F81E42FE295EF70F0E0E659FF4F0C9435 -:102510000E24842F807F142F1F70882311F01295B2 -:10252000107FFF2059F0112309F454C2812F6887CE -:102530000E94521B0E948B1B68854CC2862F0E94F2 -:10254000DE11112309F491C2812F0E94581B289695 -:102550000FB6F894DEBF0FBECDBFDF91CF911F91B4 -:102560000F91FF90EF90DF90CF900C948B1B342F46 -:10257000307F842F8F70303211F08295807F6623F8 -:1025800019F0613019F12BC0FF20B1F0222309F4BA -:1025900093C1213009F090C128960FB6F894DEBFA0 -:1025A0000FBECDBFDF91CF911F910F91FF90EF90A4 -:1025B000DF90CF900C94721B222319F0213009F484 -:1025C00054C28E830E94751B8E8189C1FF2021F029 -:1025D000223008F04AC270C1211147C280C1FF20D9 -:1025E00021F0222309F468C1F5C1222309F477C13F -:1025F00005C2242F26952695237030E0211531053C -:1026000021F021303105C9F030C2FF2021F0862FA2 -:10261000942F937002C080E090E028960FB6F89453 -:10262000DEBF0FBECDBFDF91CF911F910F91FF9005 -:10263000EF90DF90CF900C941010FF2021F0862FA8 -:10264000942F937002C080E090E028960FB6F89423 -:10265000DEBF0FBECDBFDF91CF911F910F91FF90D5 -:10266000EF90DF90CF900C942610862FFF2019F06A -:102670000E94AF1E02C00E94171F28960FB6F89442 -:10268000DEBF0FBECDBFDF91CF911F910F91FF90A5 -:10269000EF90DF90CF900C949C1F842F837009F0F3 -:1026A00076C0F110E2C1262F229526952770220FC1 -:1026B000220F862F8F70C82ED12CE12CF12C022EE8 -:1026C00004C0CC0CDD1CEE1CFF1C0A94D2F764FF86 -:1026D00010C06FE070E080E090E004C0660F771FEC -:1026E000881F991F2A95D2F76095709580959095CF -:1026F00003C060E070E0CB01242F2695269523705F -:10270000422F50E042305105D1F04330510559F18C -:102710006C297D298E299F294130510541F1289648 -:102720000FB6F894DEBF0FBECDBFDF91CF911F91E2 -:102730000F91FF90EF90DF90CF900C9476196C2959 -:102740007D298E299F2928960FB6F894DEBF0FBEEB -:10275000CDBFDF91CF911F910F91FF90EF90DF9050 -:10276000CF900C9490190E947619C701B601289653 -:102770000FB6F894DEBF0FBECDBFDF91CF911F9192 -:102780000F91FF90EF90DF90CF900C945C19FF2099 -:1027900019F0842F817001C08695882309F465C1E2 -:1027A000262F229526952770220F220F862F8F70B5 -:1027B000C82ED12CE12CF12C022E04C0CC0CDD1C37 -:1027C000EE1CFF1C0A94D2F764FF10C06FE070E0AB -:1027D00080E090E004C0660F771F881F991F2A953C -:1027E000D2F7609570958095909503C060E070E099 -:1027F000CB01242F269526952370422F50E042309E -:102800005105D1F04330510559F16C297D298E29AC -:102810009F294130510541F128960FB6F894DEBF4B -:102820000FBECDBFDF91CF911F910F91FF90EF9021 -:10283000DF90CF900C944A1A6C297D298E299F290C -:1028400028960FB6F894DEBF0FBECDBFDF91CF91B3 -:102850001F910F91FF90EF90DF90CF900C94641A2E -:102860000E944A1AC701B60128960FB6F894DEBF37 -:102870000FBECDBFDF91CF911F910F91FF90EF90D1 -:10288000DF90CF900C94301A603FC9F118F4603E8D -:1028900050F49BC0623F09F460C008F44AC0633F33 -:1028A00009F46FC092C0162F1F70842F8F71FF2004 -:1028B00099F00E94C919812F28960FB6F894DEBFAF -:1028C0000FBECDBFDF91CF911F910F91FF90EF9081 -:1028D000DF90CF900C942D120E94EA19812F289638 -:1028E0000FB6F894DEBF0FBECDBFDF91CF911F9121 -:1028F0000F91FF90EF90DF90CF900C943412FF2057 -:10290000A1F02111B2C0842F8F7128960FB6F894D0 -:10291000DEBF0FBECDBFDF91CF911F910F91FF9012 -:10292000EF90DF90CF900C940F1A223008F09DC0EA -:10293000EACFFF20A1F0842F8F7128960FB6F8946C -:10294000DEBF0FBECDBFDF91CF911F910F91FF90E2 -:10295000EF90DF90CF900C94C919FF2061F3842F82 -:102960008F7128960FB6F894DEBF0FBECDBFDF91F2 -:10297000CF911F910F91FF90EF90DF90CF900C942B -:10298000EA19FF2091F0842F8F7128960FB6F894E2 -:10299000DEBF0FBECDBFDF91CF911F910F91FF9092 -:1029A000EF90DF90CF900C94B41928960FB6F8945E -:1029B000DEBF0FBECDBFDF91CF911F910F91FF9072 -:1029C000EF90DF90CF900C94AA19FF20A1F0222362 -:1029D00009F4B1CF862F28960FB6F894DEBF0FBE4C -:1029E000CDBFDF91CF911F910F91FF90EF90DF90BE -:1029F000CF900C941611222309F4B1CF862F28967C -:102A00000FB6F894DEBF0FBECDBFDF91CF911F91FF -:102A10000F91FF90EF90DF90CF900C94DE114F70EC -:102A2000C8010E940D0328960FB6F894DEBF0FBEB2 -:102A3000CDBFDF91CF911F910F91FF90EF90DF906D -:102A4000CF900C94D1184F70C80128960FB6F89407 -:102A5000DEBF0FBECDBFDF91CF911F910F91FF90D1 -:102A6000EF90DF90CF900C94950728960FB6F894CE -:102A7000DEBF0FBECDBFDF91CF911F910F91FF90B1 -:102A8000EF90DF90CF9008950E945F1B0E946F1B14 -:102A90000E94341B0E948B1B0E9448200E949C1F96 -:102AA00080E090E00E94101080E090E00C942610EE -:102AB0000E944F1B0C9444150E947F1A292F2295C7 -:102AC0002F7030E02C3031054CF42A3031056CF495 -:102AD000225031092230310590F407C02C303105E5 -:102AE00051F02F30310539F00AC0803E10F0803FA0 -:102AF00031F481E0089593FB882780F9089580E000 -:102B00000895CF93DF9300D000D01F92CDB7DEB7EA -:102B10000F900F900F900F900F90DF91CF9108952D -:102B2000CF93DF9300D000D000D0CDB7DEB726968C -:102B30000FB6F894DEBF0FBECDBFDF91CF910895E1 -:102B40001F93CF93DF93C091810116E080918201A2 -:102B5000C81799F0D0E01C9FF0011D9FF00D1124C3 -:102B6000ED57FE4F4081518162817381848195814F -:102B70000E9490152196C770E9CFDF91CF911F91E8 -:102B800008954091B3015091B4016091B5017091E5 -:102B9000B6018091B7019091B8010C949015CF9334 -:102BA0008091B80182958F7009F05FC08091B50166 -:102BB000882309F45AC020918101A091820160917B -:102BC000B3017091B4018091B6019091B70131E0E9 -:102BD0006F3F09F030E0B32FC6E02A1709F445C073 -:102BE000009721F07F3F21F44B2F03C041E001C04B -:102BF00040E030E040FD35C0C29FF001C39FF00DC2 -:102C00001124ED57FE4F418174132BC04081641392 -:102C100028C04281411125C043815481481759077A -:102C200010F441505109481B590B483C5105C8F458 -:102C30008091B8018F7080618093B80186E0829F97 -:102C4000F001839FF00D1124E857FE4F80818F70B3 -:102C50008061808383EB91E00E943B12CF910C94C2 -:102C6000A0152F5F3F4F2770B8CFCF910895CF9217 -:102C7000DF92EF92FF920F931F93CF93DF93CDB725 -:102C8000DEB762970FB6F894DEBF0FBECDBF8C01E2 -:102C900085E0F801DE011D9601900D928A95E1F71D -:102CA000D8014C9111965C91119712966C911297E4 -:102CB0001396ED90FC9014977091B301E091B401DC -:102CC0002091B6013091B7012115310531F0EF3F68 -:102CD00031F481E07F3F19F403C081E001C080E05E -:102CE000B82FB170CB2E80FD6CC1D090B501DD2026 -:102CF00009F4F5C0F091B801E216F30638F0C70107 -:102D0000821B930B883C910548F09BC02095309521 -:102D10002E0D3F1D283C310508F093C08F2F807F7A -:102D200009F052C0E51314C0741312C0D62E6111FD -:102D30000FC0FF70F061F093B8010E94C11583EBE2 -:102D400091E00E943B128091B801F80185836CC12B -:102D5000EF2831F05F3F31F481E04F3F19F403C0B9 -:102D600081E001C080E080FD03C081E0862701C0D2 -:102D700080E0F82FF170FF2E80FF1CC08091810150 -:102D80002091820136E0821709F428C190E0389F33 -:102D9000F001399FF00D1124ED57FE4F718157134B -:102DA00006C07081471303C07281671303C0019688 -:102DB0008770E9CFD62E662309F436C18091B80119 -:102DC00081608093B80153C0E51308C0741306C036 -:102DD000611104C0D8011596FC93AEC04D875E8783 -:102DE0008D859E856A8B0E945C156A89882329F1EE -:102DF000D62E662311F12091B801822F82958F7013 -:102E000090E002970CF460C08091B3019091B401FE -:102E100098878F831986FB86EA862C87CE010796D2 -:102E200051C0E51731F14D875E878D859E856A8B90 -:102E30000E945C156A8981112EC0C8010E943B1254 -:102E4000A4C08F2F807F69F77E2DF98AE88A89894F -:102E50000E94811583EB91E00E943B12E3EBF1E0CD -:102E600086E0DF011D928A95E9F70E94C115D12CF9 -:102E7000DBC07413D8CF6111D6CFD8011596FC935F -:102E8000C8010E943B12E3EBF1E086E0DF011D92F6 -:102E90008A95E9F7C9C0D62E662379F22091B80148 -:102EA000822F82958F7090E0029774F08091B30129 -:102EB0009091B4019A8389831B82FD82EC822E83D8 -:102EC000CE0101960E943B1286E0F801A3EBB1E02F -:102ED00001900D928A95E1F70E94CF156FC0E2161E -:102EE000F30628F0C701821B930B9C0104C02095B8 -:102EF00030952E0D3F1D283C310508F052C0D62ECE -:102F0000662309F49ACFE5132CC074132AC080916C -:102F1000B80180FD1DC0982F92959F70C9F0D8010F -:102F200015968C9315979F3039F09F5F9295907FFF -:102F30008F70892B15968C93C8010E943B1286E0F6 -:102F4000F801A3EBB1E001900D928A95E1F736C04C -:102F500086E0F801A3EBB1E001900D928A95E1F7CC -:102F600063C04D875E878D859E850E945C15882392 -:102F700079F086E0F801A3EBB1E001900D928A951B -:102F8000E1F70E94CF150E94C115DD24D3944CC0F7 -:102F90008091B80181608093B801C8010E943B1202 -:102FA00043C07E2DF98AE88A89890E948115E3EB66 -:102FB000F1E086E0DF011D928A95E9F70E94C115D4 -:102FC00033C0662309F439CF4D875E878D859E8592 -:102FD0000E945C15882309F430CFCBCF4D875E87E4 -:102FE0008D859E850E947F1A292F22952F7030E0B3 -:102FF000223031052CF49F7041F0811106C00CC0C5 -:10300000243031052CF49F7049F4805E883020F024 -:10301000C8010E943B12CF2CDC2C06C0D8011596AB -:103020009C91907F91F7F8CF8D2D62960FB6F89412 -:10303000DEBF0FBECDBFDF91CF911F910F91FF90EB -:10304000EF90DF90CF9008951F93CF93DF93CDB78C -:10305000DEB72C970FB6F894DEBF0FBECDBF4F83FF -:10306000588769877A878B879C87CE0107960E944D -:1030700037168823C1F02F8138858A859B85892B57 -:1030800031F03F3F11F080E003C02F3FE1F781E0D6 -:10309000811147C04F81588569857A858B859C85CC -:1030A0000E9490153EC086E0FE013796DE01119623 -:1030B00001900D928A95E1F7FF81E8854A855B854D -:1030C0004115510531F0EF3F31F481E0FF3F19F434 -:1030D00003C081E001C080E080FD23C02091820117 -:1030E00030E0C9010196877099276091810170E0F5 -:1030F00086179707F1F1F983EA835D834C8396E0A5 -:10310000929FD001939FB00D1124AD57BE4FFE0189 -:10311000319601900D929A95E1F7809382010E9479 -:10312000A01516E08091810190918201891779F1B3 -:10313000189FC00111248D579E4F0E943716882377 -:1031400031F1E09181011E9FF0011124ED57FE4FF6 -:103150004081518162817381848195810E949015A3 -:103160008091810190E00196877099278093810179 -:10317000D9CF0E9458151092820110928101E3EB81 -:10318000F1E086E0DF011D928A95E9F7CACF2C961F -:103190000FB6F894DEBF0FBECDBFDF91CF911F9168 -:1031A0000895EF92FF920F931F93CF93DF93FC014B -:1031B000009709F46FC0F12CEE24E394EF012196FF -:1031C0008491843740F4843008F055C0813081F018 -:1031D000823021F15FC0853709F447C0C0F19CE718 -:1031E000980F903708F056C08F770E94DE1145C0C7 -:1031F0008F010E5F1F4FFE01849190E2980F98306F -:1032000050F48770FE2D01C0FF0F8A95EAF78F2FCB -:103210000E94621B15C00E94161114C08F010E5F20 -:103220001F4FFE01849190E2980F983068F48770E8 -:10323000FE2D01C0FF0F8A95EAF78F2F0E94681BB1 -:103240000E948B1BE80119C00E94DE11FBCFCF0149 -:103250000296FE01C491CC2361F0EFE9FFE03197C3 -:10326000F1F700C00000C150F6CFCF010296FE0179 -:10327000F490EC0102C00E9416118F2D882341F0BA -:10328000EFE9FFE03197F1F700C000008150F6CF81 -:10329000FE0194CFDF91CF911F910F91FF90EF909E -:1032A000089508956093BD017093BE018093BF019E -:1032B0009093C0010C9444150F931F930091BD018E -:1032C0001091BE012091BF013091C001062B172B38 -:1032D000282B392B0093BD011093BE012093BF0111 -:1032E0003093C0011F910F910C9444150F931F93BD -:1032F0000091BD011091BE012091BF013091C0012C -:1033000006231723282339230093BD011093BE0100 -:103310002093BF013093C0011F910F910C9444156D -:103320000F931F930091BD011091BE012091BF0129 -:103330003091C00106271727282739270093BD01A0 -:103340001093BE012093BF013093C0011F910F91D4 -:103350000C9444151092B9011092BA011092BB015D -:103360001092BC010C94441541E050E060E070E024 -:1033700004C0440F551F661F771F8A95D2F74093EC -:10338000B9015093BA016093BB017093BC010C94D6 -:10339000441541E050E060E070E004C0440F551F68 -:1033A000661F771F8A95D2F78091B9019091BA0173 -:1033B000A091BB01B091BC01842B952BA62BB72B00 -:1033C0008093B9019093BA01A093BB01B093BC0163 -:1033D0000C94441541E050E060E070E004C0440FFC -:1033E000551F661F771F8A95D2F7409550956095B7 -:1033F00070958091B9019091BA01A091BB01B091F3 -:10340000BC0184239523A623B7238093B90190930D -:10341000BA01A093BB01B093BC010C94441541E0E8 -:1034200050E060E070E004C0440F551F661F771F36 -:103430008A95D2F78091B9019091BA01A091BB0110 -:10344000B091BC0184279527A627B7278093B9019F -:103450009093BA01A093BB01B093BC010C944415A6 -:103460000F931F930091B9011091BA012091BB01F4 -:103470003091BC01062B172B282B392B0093B90157 -:103480001093BA012093BB013093BC011F910F919F -:103490000C9444150F931F930091B9011091BA0138 -:1034A0002091BB013091BC01062317232823392327 -:1034B0000093B9011093BA012093BB013093BC0172 -:1034C0001F910F910C9444150F931F930091B90114 -:1034D0001091BA012091BB013091BC01062717273A -:1034E000282739270093B9011093BA012093BB0113 -:1034F0003093BC011F910F910C9444150895CF9205 -:10350000DF92EF92FF920F931F93CF93DF93EC0123 -:10351000C090BD01D090BE01E090BF01F090C0010D -:103520008091B9019091BA01A091BB01B091BC0109 -:10353000C82AD92AEA2AFB2A0FE110E0B701A6011E -:10354000002E04C076956795579547950A94D2F753 -:1035500040FF07C0BE01802F0E94B807813091054F -:1035600039F40150110950F7BE0180E00E94B807FC -:10357000DF91CF911F910F91FF90EF90DF90CF904F -:10358000089590910C019923D9F090910D01992300 -:10359000B9F0982F9695969596959F3088F5E0917D -:1035A0000E01F0910F01E90FF11D877021E030E06D -:1035B00001C0220F8A95EAF78181822B81830895C9 -:1035C00040910E0150910F0120E030E09FEFFA0191 -:1035D000E20FF31F6281681799F09F3F19F46111A0 -:1035E00001C0922F2F5F3F4F2E30310581F79F3F53 -:1035F00039F0FA01E90FF11D97FDFA9582830895DC -:10360000089590910C019923E1F090910D01992377 -:10361000C1F0982F9695969596959F3020F5E0915C -:103620000E01F0910F01E90FF11D877021E030E0EC -:1036300001C0220F8A95EAF72095818128232183F2 -:10364000089540910E0150910F0120E030E0FA0101 -:10365000E20FF31F9281981301C012822F5F3F4F38 -:103660002E303105A1F7089581E090E0E0910E0140 -:10367000F0910F01E80FF91F10820196803191053A -:10368000A9F708959091D401982B9093D4010895AF -:1036900080959091D40198239093D401089510922D -:1036A000D40108959091D301982B9093D30108955C -:1036B00080959091D30198239093D301089510920F -:1036C000D30108959091D201982B9093D20108953F -:1036D00080959091D20198239093D20108951092F1 -:1036E000D20108958093C10108951092C1010895F7 -:1036F00040910E0150910F0120E030E080E0FA018E -:10370000E20FF31F918191118F5F2F5F3F4F2F3099 -:103710003105A9F70895E0910E01F0910F01809114 -:10372000D4018083E0910E01F0910F01808190918E -:10373000D301892B8083E0910E01F0910F018081EC -:103740009091D201892B80839091C101992361F0DE -:10375000E0910E01F0910F018081892B80830E94FE -:10376000781B81111092C10180910E0190910F017F -:103770000C94FA0F8091EE01843009F11092D60179 -:1037800020E488E190E00FB6F894A895809360005B -:103790000FBE2093600083B7817F846083BF83B7AF -:1037A000816083BF7894889583B78E7F83BF88E1DB -:1037B0000FB6F89480936000109260000FBE0895D9 -:1037C00008950895CF930E94E01B0E94E2050E9495 -:1037D000E11BC0E08C2F0E94CF06811105C0CF5F96 -:1037E000CE30C1F780E001C081E0CF9108950E9402 -:1037F00058150E94EE0F0C94F30882E084BD93E00C -:1038000095BD9AEF97BD80936E0008952FB7F894F9 -:103810008091D7019091D801A091D901B091DA019E -:103820002FBF0895CF92DF92EF92FF920F931F93D5 -:103830002FB7F8944091D7015091D8016091D901E8 -:103840007091DA012FBF6A017B01EE24FF248C0105 -:1038500020E030E0C016D106E206F30610F4415035 -:103860005109481B590BCA011F910F91FF90EF900E -:10387000DF90CF9008951F920F920FB60F921124F0 -:103880008F939F93AF93BF938091D7019091D8016D -:10389000A091D901B091DA010196A11DB11D8093CB -:1038A000D7019093D801A093D901B093DA01BF91C9 -:1038B000AF919F918F910F900FBE0F901F90189511 -:1038C0000E94F40CF8942FEF87EA91E62150804093 -:1038D0009040E1F700C0000087E090EBDC018093AE -:1038E000F7019093F801A093F901B093FA012CE04D -:1038F00088E190E00FB6F894A895809360000FBE21 -:1039000020936000FFCFEF92FF920F931F93CF930E -:10391000DF93E82EF12C8F2D0E94CF06C0E0D0E07F -:10392000082F10E098010C2E02C0359527950A94B7 -:10393000E2F720FD05C02196C630D10599F709C0F0 -:103940006C2F7F2D80E00E949607E812F4CF81E073 -:1039500005C0F3948EE0F812DECF80E0DF91CF91C6 -:103960001F910F91FF90EF900895CF93C82F8CE295 -:103970000E94831C882321F08C2FCF910C94831CF0 -:1039800080E0CF910895CF930E94081E811102C05C -:103990000E94EE1DC5E6C15049F00E94E2058FE38A -:1039A0009CE90197F1F700C00000F5CF89E20E9481 -:1039B000B51C811111C18AE20E94B51C81110E94BF -:1039C000EE1D85E00E94B51C81110E94601C0E94C2 -:1039D000131E8093D50187E00E94B51C882399F1BE -:1039E0008BE10E94B51C882351F09091D50191FB89 -:1039F000882780F921E0822780FB91F922C08EE0A0 -:103A00000E94B51C882351F09091D50192FB882724 -:103A100080F921E0822780FB92F913C080E10E94A7 -:103A2000B51C9091D501882341F093FB882780F93C -:103A300021E0822780FB93F904C0892F809580FBC9 -:103A400090F99093D5018091D5010E94171E0E9494 -:103A5000251E8093E80180EE0E94B51C882341F06A -:103A60008091E801982F909590FB80F98093E80170 -:103A700089E30E94B51C882359F09091E80191FBDD -:103A8000882780F921E0822780FB91F99093E80153 -:103A900082EE0E94B51C882359F09091E80192FBB8 -:103AA000882780F921E0822780FB92F99093E80132 -:103AB00086EE0E94B51C882359F09091E80193FB93 -:103AC000882780F921E0822780FB93F99093E80111 -:103AD00083EE0E94B51C882359F09091E80194FB75 -:103AE000882780F921E0822780FB94F99093E801F0 -:103AF00085E30E94B51C882359F09091E80195FB5D -:103B0000882780F921E0822780FB95F99093E801CE -:103B100081E30E94B51C882359F09091E80196FB3F -:103B2000882780F921E0822780FB96F99093E801AD -:103B300081E10E94B51C882359F09091E80197FB20 -:103B4000882780F921E0822780FB97F99093E8018C -:103B50008091E8010E94291E8091E80187FB882757 -:103B600080F980930D0187E20E94B51CC82F8EE179 -:103B70000E94B51C8111C2608FE10E94B51C8111A9 -:103B8000C46080E20E94B51C8111C86081E20E947D -:103B9000B51C8111C06182E20E94B51C8111C06216 -:103BA00083E20E94B51C8111C06484E20E94B51CAE -:103BB000882311F0C06802C0CC2329F08C2F0E940A -:103BC000201E6C2F03C00E941C1E682F70E080E036 -:103BD00090E0CF910C945219CF9108956DEE7EEF45 -:103BE00080E090E00E94442460E082E090E00E9447 -:103BF000362460E083E090E00E94362460E084E0B8 -:103C000090E00E94362460E085E090E00C94362439 -:103C100080E090E00E94302421E08D3E9E4F09F02C -:103C200020E0822F089582E090E00C942824682FF1 -:103C300082E090E00C94362483E090E00C942824F9 -:103C4000682F83E090E00C94362484E090E00C949C -:103C50002824682F84E090E00C9436248091DD01C4 -:103C600080FF0BC06091130185E0689FB0011124B3 -:103C700075956795759567952AC081FF09C0609114 -:103C8000130185E0689FB0011124759567951FC0E9 -:103C900082FF07C06091130185E0689FB001112485 -:103CA00016C04091DE014423C9F06091120146170D -:103CB00088F72091130185E0289F90011124429FED -:103CC000C001439F900D112470E00E94FA236038D8 -:103CD000710540F46115710539F002C065E070E0CE -:103CE000862F08958FE7089581E008958091DD0182 -:103CF00080FF08C06091110170E07595679575951A -:103D0000679521C081FF06C06091110170E0759533 -:103D1000679519C082FF04C06091110170E010C066 -:103D20008091DE018823C1F0609110018617A0F711 -:103D300090911101989FC001112470E00E94FA2314 -:103D40006038710528F46115710521F0862F0895FA -:103D50008FE7089581E0089561E070E0F4CF803F3F -:103D600021F40E942E1E819504C0813F29F40E94F7 -:103D70002E1E8093E1010895823F21F40E942E1EA1 -:103D8000819504C0833F29F40E942E1E8093E00198 -:103D90000895893F19F40E94761E05C08A3F31F4C8 -:103DA0000E94761E81958093E20108958B3F21F455 -:103DB0000E94761E819504C08C3F29F40E94761ED5 -:103DC0008093E3010895843F21F48091DF018160B5 -:103DD00017C0853F21F48091DF01826011C0863FCA -:103DE00021F48091DF0184600BC0873F21F4809132 -:103DF000DF01886005C0883F31F48091DF01806178 -:103E00008093DF0108958D3F21F48091DD01816071 -:103E10000BC08E3F21F48091DD01826005C08F3F91 -:103E200029F48091DD0184608093DD010895803F55 -:103E300039F48091E10187FF6CC01092E10169C003 -:103E4000813F29F48091E1011816BCF362C0909182 -:103E5000E001823F29F497FF5CC01092E00159C055 -:103E6000833F19F41916CCF354C0893F41F4809173 -:103E7000E20118160CF04DC01092E2014AC08A3FD0 -:103E800029F48091E20187FF44C0F6CF8B3F39F4DB -:103E90008091E30187FF3DC01092E3013AC08C3F5F -:103EA00029F48091E3011816BCF333C0843F21F458 -:103EB0008091DF018E7F17C0853F21F48091DF0163 -:103EC0008D7F11C0863F21F48091DF018B7F0BC075 -:103ED000873F21F48091DF01877F05C0883F31F45F -:103EE0008091DF018F7E8093DF0113C08D3F21F42D -:103EF0008091DD018E7F0BC08E3F21F48091DD012A -:103F00008D7F05C08F3F29F48091DD018B7F8093E9 -:103F1000DD018091E00181110EC08091E1018111EC -:103F20000AC08091E201811106C08091E3018111F4 -:103F300002C01092DE0108958FED91E00E940510FD -:103F40000E94061C9093DC018093DB0108951F936F -:103F5000CF93DF938091DB019091DC010E94121CD2 -:103F60004091DE01442321F02091140130E006C08D -:103F7000209115015AE0259F900111248217930783 -:103F800008F482C08091E0011091E101D091E2013A -:103F9000C091E301811107C0111105C0D11103C007 -:103FA000CC2309F471C04F3F19F04F5F4093DE01FD -:103FB000181624F40E942E1E8093E0018091E001E7 -:103FC00087FF05C00E942E1E81958093E001111687 -:103FD00024F40E942E1E8093E1018091E10187FF6D -:103FE00005C00E942E1E81958093E1016091E00141 -:103FF000662339F11091E101112319F1772767FD4B -:104000007095872F972F0E940B2323E333E343E31D -:104010005FE30E946F230E94D8226093E001612F2A -:10402000772767FD7095872F972F0E940B2323E337 -:1040300033E343E35FE30E946F230E94D82260933F -:10404000E1011D1624F40E94761E8093E201809106 -:10405000E20187FF05C00E94761E81958093E201F0 -:104060001C1624F40E94761E8093E3018091E301E4 -:1040700087FF05C00E94761E81958093E301DF9142 -:10408000CF911F910C949C1FDF91CF911F910895A8 -:10409000EFEDF1E085E0DF011D928A95E9F71092DE -:1040A000DE011092DD010895833081F128F4813022 -:1040B00059F08230D1F00895853009F449C0B8F143 -:1040C000863009F456C0089520911501862F90E09E -:1040D000820F911D8F3F910520F4620F60931501AF -:1040E00008958FEF80931501089520911401862F74 -:1040F00090E0820F911D8F3F910520F4620F609335 -:10410000140108958FEF80931401089520911301F5 -:10411000862F90E0820F911D8F3F910520F4620F52 -:104120006093130108958FEF8093130108952091F8 -:104130001201862F90E0820F911D8F3F910520F490 -:10414000620F6093120108958FEF8093120108951A -:1041500020911101862F90E0820F911D8F3F9105D4 -:1041600020F4620F6093110108958FEF8093110185 -:10417000089520911001862F90E0820F911D8F3FAE -:10418000910520F4620F6093100108958FEF8093E2 -:1041900010010895833011F128F4813049F0823004 -:1041A00091F00895853081F120F18630C1F10895B4 -:1041B00080911501681720F4861B809315010895DE -:1041C00010921501089580911401681720F4861B40 -:1041D00080931401089510921401089580911301A1 -:1041E000681720F4861B8093130108951092130121 -:1041F000089580911201681720F4861B80931201A4 -:10420000089510921201089580911101681720F409 -:10421000861B8093110108951092110108958091D9 -:104220001001681720F4861B8093100108951092E6 -:10423000100108958D3109F442C020F58E3009F443 -:1042400079C070F4873009F45EC020F4863009F438 -:1042500042C033C08830D1F18B3009F4A7C02DC0E3 -:10426000863109F4A3C038F4803109F46DC081317E -:1042700009F47BC022C0893109F498C08B3109F45C -:104280004FC01BC0853309F479C048F4873209F464 -:1042900075C008F478C0893209F470C00EC0833448 -:1042A00038F48A3308F071C0883309F47FC005C040 -:1042B000833409F463C08834C1F080E008950E941B -:1042C00092220E94EE0F0E94F30870C00E94131EFB -:1042D0000E94251E6BC08091D501817F8E7F8093C7 -:1042E000D50181E08093E50108950E9458152FEFD4 -:1042F00083ED90E3215080409040E1F700C0000042 -:104300000E94601C53C09091D501892F817090FF4D -:1043100003C0917F9E7F26C091609093D50146C0D7 -:104320009091D50191FB882780F921E0822780FBBD -:1043300091F913C09091D50192FB882780F921E073 -:10434000822780FB92F909C09091D50193FB8827C1 -:1043500080F921E0822780FB93F99093D50188238F -:1043600029F191609093D50108950E94581580918C -:104370000D0191E0892780930D0118C061E070E084 -:1043800080E090E00FC023EE01C027EC280F61E031 -:1043900070E080E090E004C0660F771F881F991FCF -:1043A0002A95D2F70E9452190E94581581E008956B -:1043B00080E0089580E00895CF93C82F8091E501B3 -:1043C000813079F018F08230D1F184C0A0910E01D3 -:1043D000B0910F018C91813169F0823209F07CC07B -:1043E00009C0A0910E01B0910F018C91813111F0A3 -:1043F000823249F48C2F0E94D82181111DC08C2F4C -:104400000E941A211AC08C2F0E94DA21811114C037 -:10441000C43179F048F4CB3079F0C03109F060C094 -:1044200082E08093E50108C0C93219F0C83321F059 -:1044300057C01092E50154C081E0817053C0C93269 -:1044400089F118F5C43171F1A8F4C73009F046C0FC -:104450008AE08093150194E19093140193E0909386 -:1044600013018093120188E08093110188E2809308 -:10447000100134C0CE51C63088F5EC2FF0E0E65D77 -:10448000FE4F80818093E40129C0CE34E9F020F40E -:10449000CB3421F56AE013C0C13579F0C235F1F4AF -:1044A00061E00DC08091E401882319F01092E401CD -:1044B00015C081E08093E50115C061E006C08091E0 -:1044C000E4010E9454200AC06AE08091E4010E9445 -:1044D000CA2004C01092E50180E004C081E002C05F -:1044E00080E0ABCFCF910895E1E8F0E08081886073 -:1044F00080838081816080838FB7F89493E090936C -:10450000890090ED909388008FBF0895EFE6F0E06A -:104510008081826080830895EFE6F0E080818D7F66 -:1045200080830895EFE6F0E0808192E08927808320 -:1045300008951F920F920FB60F9211242F933F935D -:104540004F935F936F937F938F939F93AF93BF939B -:10455000EF93FF938091E6019091E701019690938C -:10456000E7018093E601811103C082E00E94F30815 -:10457000E091E701E695E695F0E0E25BFA4FE49121 -:104580008091E6018E1303C080E00E94F308FF9142 -:10459000EF91BF91AF919F918F917F916F915F91BB -:1045A0004F913F912F910F900FBE0F901F90189534 -:1045B00004D06894B1118DC0089570D088F09F57D1 -:1045C00090F0B92F9927B751A0F0D1F0660F771F5F -:1045D000881F991F1AF0BA95C9F712C0B13081F03F -:1045E00077D0B1E0089574C0672F782F8827B85F1F -:1045F00039F0B93FCCF3869577956795B395D9F7A0 -:104600003EF490958095709561957F4F8F4F9F4FA9 -:104610000895E89409C097FB3EF4909580957095B5 -:1046200061957F4F8F4F9F4F9923A9F0F92F96E9FE -:10463000BB279395F695879577956795B795F11173 -:10464000F8CFFAF4BB0F11F460FF1BC06F5F7F4F10 -:104650008F4F9F4F16C0882311F096E911C0772322 -:1046600021F09EE8872F762F05C0662371F096E82B -:10467000862F70E060E02AF09A95660F771F881FFA -:10468000DAF7880F9695879597F9089557FD905812 -:10469000440F551F59F05F3F71F04795880F97FB06 -:1046A000991F61F09F3F79F08795089512161306C0 -:1046B0001406551FF2CF4695F1DF08C016161706EF -:1046C0001806991FF1CF8695710561050894089524 -:1046D000E894BB2766277727CB0197F908950BD07D -:1046E00078C069D028F06ED018F0952309F05AC030 -:1046F0005FC01124EECFCADFA0F3959FD1F3950FD1 -:1047000050E0551F629FF001729FBB27F00DB11D55 -:10471000639FAA27F00DB11DAA1F649F6627B00DE5 -:10472000A11D661F829F2227B00DA11D621F739FCE -:10473000B00DA11D621F839FA00D611D221F749FDC -:104740003327A00D611D231F849F600D211D822F23 -:10475000762F6A2F11249F5750408AF0E1F088236A -:104760004AF0EE0FFF1FBB1F661F771F881F915077 -:104770005040A9F79E3F510570F014C0AACF5F3F8B -:10478000ECF3983EDCF3869577956795B795F795AA -:10479000E7959F5FC1F7FE2B880F911D9695879532 -:1047A00097F9089597F99F6780E870E060E00895B1 -:1047B0009FEF80EC089500240A9416161706180639 -:1047C0000906089500240A94121613061406050615 -:1047D0000895092E0394000C11F4882352F0BB0FA6 -:1047E00040F4BF2B11F460FF04C06F5F7F4F8F4F09 -:1047F0009F4F089597FB072E16F4009407D077FD7E -:1048000009D00E94142407FC05D03EF490958195B0 -:104810009F4F0895709561957F4F0895EE0FFF1F8C -:104820000590F491E02D0994AA1BBB1B51E107C030 -:10483000AA1FBB1FA617B70710F0A61BB70B881F30 -:10484000991F5A95A9F780959095BC01CD010895BF -:10485000F999FECF92BD81BDF89A992780B5089548 -:10486000A8E1B0E042E050E00C944B24262FF999E7 -:10487000FECF1FBA92BD81BD20BD0FB6F894FA9A43 -:10488000F99A0FBE019608950E943624272F0C94A2 -:104890003724DC01CB01FC01F999FECF06C0F2BD43 -:1048A000E1BDF89A319600B40D9241505040B8F7EE -:0648B0000895F894FFCF0B -:1048B6002002F50882095F092B09F8080101C201E7 -:1048C60028080A03140A3F4D36390F05C2048C0422 -:1048D6005304E603FF03180431040102030405062A -:0448E60007080900B6 +:100DA000F0E0E45BFE4F808108950895089596E099 +:100DB000799FF001112494E5899FE00DF11D112424 +:100DC000E60FF11DEE0FFF1FE050FF4F859194914C +:100DD0000895880F991F8C589040FC01859194913B +:100DE0000895880F991F8C509F4FFC018591949115 +:100DF00008950F931F93CF93DF93EC01811520E3A8 +:100E0000920730F5811530E2930708F0B1C08B3BB3 +:100E1000910588F4883A910508F058C0853A910503 +:100E200008F049C08430910508F043C08130910535 +:100E300009F4B2C1AEC18F3F910509F0D0F5803FF2 +:100E4000910508F092C0805E9109089790F1A1C1C8 +:100E5000C11581E5D807A8F4C23090E5D90708F09C +:100E60009FC0C11520E5D20709F486C008F092C0E2 +:100E7000C11580E4D80708F08CC18E011127106CD1 +:100E8000CCC1C11590E8D90758F4C11520E7D207A5 +:100E900008F07BC1C11530E6D30708F423C179C13E +:100EA000C11580E9D80708F074C18E011F70106A5F +:100EB000B4C18E01B2C1853A910509F470C1863A78 +:100EC000910509F46FC103E810E4A7C1883A9105C0 +:100ED00009F46BC1893A910509F46AC18A3A91050E +:100EE00009F469C18B3A910509F468C18C3A9105FE +:100EF00009F467C18D3A910509F466C1803B9105FB +:100F000009F465C18E3A910509F464C18F3A9105DF +:100F100009F463C1813B910509F462C1823B9105EB +:100F200009F461C1833B910509F460C1843B9105DB +:100F300009F45FC1853B910509F45EC1863B9105CB +:100F400009F45DC1873B910509F45CC1883B9105BB +:100F500009F45BC1893B910509F45AC18A3B9105AB +:100F600009F059C10AE216E458C18C01106555C157 +:100F70009F700E94F10652C10E942C169FEF24E33D +:100F80003CE0915020403040E1F700C000000E945A +:100F9000441D43C18091D50181608093D5013DC13D +:100FA0000E94EC1E811102C00E94D21E0E94091FE5 +:100FB00090E09093F6018093F501C23080E5D80768 +:100FC00021F48091F501816086C0C43090E5D90795 +:100FD00021F48091F50182607EC0C63020E5D20701 +:100FE00021F48091F501846076C0C83030E5D307E4 +:100FF00019F48091F50127C0CA3080E5D80721F4A3 +:101000008091F501806167C0CC3090E5D90721F46B +:101010008091F50180625FC0CE3020E5D20721F4D7 +:101020008091F501806457C0C03130E5D30721F4C9 +:101030008091F50180684FC0C23180E5D80729F45E +:101040008091F5018460886046C0C33090E5D9077F +:1010500021F48091F5018E7F3EC0C53020E5D20796 +:1010600021F48091F5018D7F36C0C73030E5D3077C +:1010700021F48091F5018B7F2EC0C93080E5D8071F +:1010800019F48091F50126C0CB3090E5D90721F401 +:101090008091F5018F7E1FC0CD3020E5D20721F46D +:1010A0008091F5018F7D17C0CF3030E5D30721F453 +:1010B0008091F5018F7B0FC0C13180E5D80721F405 +:1010C0008091F5018F7707C0C331D04531F480910D +:1010D000F5018B7F877F8093F5018091F5010E9458 +:1010E0000D1F9BC08D2F99278F70992781309105F7 +:1010F000E9F48E01037011279C0102C0220F331FF7 +:101100000A95E2F789011C68CE0164E0880F991FF7 +:101110006A95E1F788279370082B192B73E0CC0FA1 +:10112000DD1F7A95E1F7C076DD272CC0823091056E +:1011300029F41C2F0027016F106A6FC083309105BE +:1011400061F4CE018370992701E010E002C0000F26 +:10115000111F8A95E2F71C680EC0049709F05DC064 +:10116000CE018370992701E010E002C0000F111F2B +:101170008A95E2F71A6843E0CC0FDD1F4A95E1F744 +:10118000C07ED7700C2B1D2B48C08E011F701062C3 +:1011900044C000E010E041C001E010E03EC001E8C2 +:1011A00010E43BC002E810E438C002EE14E435C09D +:1011B00009EE14E432C00AEE14E42FC005EB14E487 +:1011C0002CC006EB14E429C007EB14E426C00CEC99 +:1011D00014E423C00DEC14E420C003E815E41DC0A2 +:1011E0000AE815E41AC002E915E417C004E915E499 +:1011F00014C001E216E411C003E216E40EC004E2DA +:1012000016E40BC005E216E408C006E216E405C0C9 +:1012100007E216E402C000E014E4C801DF91CF91B8 +:101220001F910F91089596E0799FF001112494E5A4 +:10123000899FE00DF11D1124E60FF11DEE0FFF1F38 +:10124000E050FF4F85919491803E9105E0F4803C01 +:10125000910558F58133910509F46FC048F489323E +:10126000910509F463C08A32910509F46DC072C01A +:1012700089339105E9F082389105D1F085339105E4 +:1012800009F44DC067C0833E910581F138F4803E7A +:101290009105B9F0823E9105D9F05CC0863E91057A +:1012A00061F1873E9105A1F155C00E94E9060895BC +:1012B0002091F50120FD02C021FF4CC080EE90E09E +:1012C00049C08091F50180FFF9CF89E390E042C0E9 +:1012D0008091F50182FF0EC08091F50184FF03C06B +:1012E00080E090E037C083EE90E034C08091F5015B +:1012F00082FFF2CF82EE90E02DC08091F50183FF56 +:101300000BC08091F50184FDEBCF87EE90E022C009 +:101310008091F50183FFF5CF86EE90E01BC08091B0 +:10132000F50185FF07C089E290E014C08091F501C6 +:1013300085FFF9CF85E390E00DC08091F50186FF30 +:1013400007C08AE290E006C08091F50186FFF9CFE0 +:1013500081E390E00E94F906089508950C94AD0988 +:1013600080916A010895CF93DF9300D01F92CDB78B +:10137000DEB72091EC01243019F523E029839B830B +:101380008A832093E9008FEF9091E800815095FDCA +:1013900006C095ED9A95F1F700008111F5CF809187 +:1013A000E80085FF0DC040E050E063E070E0CE0152 +:1013B00001960E941D0C8091E8008E778093E800D2 +:1013C0000F900F900F90DF91CF910895CF93DF93FF +:1013D00000D01F92CDB7DEB72091EC01243021F56B +:1013E00022E029839B838A8383E08093E9008FEF47 +:1013F0009091E800815095FD06C095ED9A95F1F722 +:1014000000008111F5CF8091E80085FF0DC040E01C +:1014100050E063E070E0CE0101960E941D0C8091C7 +:10142000E8008E778093E8000F900F900F90DF9187 +:10143000CF9108952091EC012430F1F422E0209323 +:10144000E9002FEF3091E800215035FD06C035ED61 +:101450003A95F1F700002111F5CF2091E80025FF22 +:101460000BC040E050E065E070E00E941D0C8091F0 +:10147000E8008E778093E8000895CF93DF93EC0126 +:101480008091EC01843009F046C090910C019923C1 +:10149000D9F090910D019923B9F08093E9008FEF75 +:1014A0009091E800815095FD06C095E19A95F1F77D +:1014B00000008111F5CF8091E80085FF2CC040E04D +:1014C00050E060E170E017C081E08093E9008FEFA9 +:1014D0009091E800815095FD06C095ED9A95F1F741 +:1014E00000008111F5CF8091E80085FF14C040E035 +:1014F00050E068E070E0CE010E941D0C8091E80091 +:101500008E778093E80080E1FE01AAE5B1E00190CA +:101510000D928A95E1F7DF91CF9108958091EB01CB +:10152000811109C00E94AF0D0E940C0E8091E20053 +:1015300084608093E20008951092EB01089508956D +:101540000C9468230E94DB1C0E946E230E94A91049 +:101550000C94AE0942E061EC81E00E94290D42E06A +:1015600061EC82E00E94290D42E061EC83E00E9480 +:10157000290D42E161EC84E00C94290D8091EE018B +:10158000833009F455C030F4813071F0823009F4B1 +:101590008EC008958A3009F47AC08B3009F460C097 +:1015A000893009F09CC020C08091ED01813A09F09A +:1015B00096C08091E800877F8093E8008091F101D8 +:1015C0009091F201892B21F060E080E090E003C06F +:1015D00060E18AE591E070E00E94660C8091E8008D +:1015E0008B778093E80008958091ED01813209F0B6 +:1015F00076C08091F1019091F201009719F0039764 +:1016000009F06DC08091E800877F8093E8008091A9 +:10161000E80082FD05C08091EC018111F8CF5FC028 +:101620008091F10080936A018091E8008B7753C02C +:101630008091ED01813A09F052C08091F1019091C1 +:10164000F201892B09F04BC08091E800877F8093DD +:10165000E8008091E80080FFFCCF80910C0136C04B +:101660008091ED018132D9F58091F1019091F201E3 +:10167000892BA9F58091E800877F8093E8000E947C +:101680005E0D8091EF0180930C010C942C168091DB +:10169000ED01813221F58091E800877F8093E80099 +:1016A0000E945E0D8091F00180936B0108958091FE +:1016B000ED01813AA1F48091E800877F8093E800F2 +:1016C0008091E80080FFFCCF80916B018093F10056 +:1016D0008091E8008E778093E8000C945E0D089569 +:1016E00084B7877F84BF88E10FB6F8948093600049 +:1016F000109260000FBE90E080E80FB6F8948093DF +:101700006100909361000FBE0E94F8100E94AF0D1F +:101710000E940C0E8091E20084608093E200789435 +:101720000E9487100E94FA1082E091E00E94A410AB +:101730000E9456238091EC01853069F40E949B1C25 +:101740008091EA018823B1F30E94C61C882391F39B +:101750000E94070CEFCF0E940011ECCF292F3327F6 +:1017600023303105A9F06CF42130310509F442C071 +:101770002230310509F043C08DE690E024ED33E0DE +:1017800042C021323105C9F02232310519F137C08A +:1017900099278130910541F08230910541F0892BE4 +:1017A00071F5E0EDF3E005C0E8EBF3E002C0E0EA3C +:1017B000F3E0849190E09F0126C0643000F5E62FAD +:1017C000F0E0EE0FFF1FEE5DFE4F2081318189E0DA +:1017D00090E019C0643098F4E62FF0E0DF01AA0F22 +:1017E000BB1FA65EBE4F2D913C91EA5EFE4F8081ED +:1017F00090E009C082E190E021E434E004C080E0A0 +:1018000090E020E030E0FA0131832083089580E108 +:1018100089BD82E189BD09B400FEFDCF8091D80069 +:101820008F7D8093D8008091E00082608093E000FB +:101830008091E00081FDFCCF0895CF92DF92EF927E +:10184000FF920F931F93CF93DF937C018B01EA01EB +:101850000E947F0D811131C0209731F088819981DC +:10186000081B190BE80EF91EC12CD12C011511050E +:1018700019F18091E80085FD14C08091E8008E7711 +:101880008093E800209741F0888199818C0D9D1DFF +:101890009983888385E011C00E947F0D882331F3EE +:1018A0000CC0F70181917F018093F1000150110973 +:1018B000FFEFCF1ADF0ADACF80E0DF91CF911F91DF +:1018C0000F91FF90EF90DF90CF9008952091F3015A +:1018D0003091F4012617370748F06115710539F486 +:1018E0002091E8002E772093E80001C0B901FC01A7 +:1018F00020E061157105B9F18091EC01882309F4AC +:1019000040C0853009F43FC08091E80083FD3DC0B0 +:101910008091E80082FF06C08091E80082FF26C027 +:1019200080E008958091E80080FFE3CF2091F300EC +:101930008091F20090E0922B6115710551F0883092 +:10194000910538F421912093F100615071090196BD +:10195000F3CF21E0089709F020E08091E8008E772E +:101960008093E800C6CF2111C7CFD6CF8091EC017C +:10197000882339F0853039F08091E80083FFCCCF9F +:1019800004C082E0089583E0089581E008952091E5 +:10199000F3013091F4012617370748F061157105FE +:1019A00039F42091E8002E772093E80001C0B901B6 +:1019B000FC0120E061157105C1F18091EC018823E3 +:1019C00009F441C0853009F440C08091E80083FDEE +:1019D0003EC08091E80082FF06C08091E80082FF4F +:1019E00027C080E008958091E80080FFE3CF209138 +:1019F000F3008091F20090E0922B6115710559F08F +:101A00008830910540F424912093F1003196615083 +:101A100071090196F2CF21E0089709F020E080914A +:101A2000E8008E778093E800C5CF2111C6CFD5CFCF +:101A30008091EC01882339F0853039F08091E800FD +:101A400083FFCBCF04C082E0089583E0089581E056 +:101A50000895982F973058F59093E900981739F02A +:101A60007091EC002091ED005091F00003C0242F04 +:101A7000762F50E021FF19C03091EB003E7F30936C +:101A8000EB003091ED003D7F3093ED003091EB00A5 +:101A900031603093EB007093EC002093ED00509395 +:101AA000F0002091EE0027FF07C09F5FD3CF8F701B +:101AB0008093E90081E0089580E008958091ED0130 +:101AC00087FD05C08091E80080FF0EC012C08091A4 +:101AD000E80082FD05C08091EC018111F8CF0895E6 +:101AE0008091E8008B7708C08091EC018111EACFEA +:101AF00008958091E8008E778093E80008958091A2 +:101B0000E4009091E50045E62091EC0020FF21C023 +:101B10002091E80020FD21C02091EC01222389F0D2 +:101B2000253089F02091EB0025FD0FC02091E400C5 +:101B30003091E5002817390739F3415041F0C901C8 +:101B4000E3CF82E0089583E0089581E0089584E082 +:101B500008952091E80022FFDFCF80E008950E94E1 +:101B60001D0E0E94250EE0EEF0E0808181608083F2 +:101B7000E8EDF0E080818F77808319BCA7EDB0E0BD +:101B80008C918E7F8C9380818F7E80831092EB016D +:101B900008950F931F93CF93DF930E941D0E0E9411 +:101BA000250EC8EDD0E088818F7788838881806892 +:101BB000888388818F7D888319BC1092EC011092F4 +:101BC000E8011092EA011092E90100EE10E0F8013C +:101BD00080818B7F808388818160888342E060E0A0 +:101BE00080E00E94290DE1EEF0E080818E7F80830D +:101BF000E2EEF0E080818160808380818860808374 +:101C0000F80180818E7F8083888180618883DF9165 +:101C1000CF911F910F910895E8EDF0E080818F7EC4 +:101C20008083E7EDF0E080818160808384E082BF83 +:101C300081E08093EB010C94C90DE8EDF0E0808128 +:101C40008E7F80831092E20008951092DA00109245 +:101C5000E10008951F920F920FB60F9211242F9357 +:101C60003F934F935F936F937F938F939F93AF9324 +:101C7000BF93EF93FF938091E10082FF0BC08091AF +:101C8000E20082FF07C08091E1008B7F8093E1003A +:101C90000E9486108091DA0080FF1FC08091D800DA +:101CA00080FF1BC08091DA008E7F8093DA008091E4 +:101CB000D90080FF0DC080E189BD82E189BD09B4F2 +:101CC00000FEFDCF81E08093EC010E948E0A05C0EA +:101CD00019BC1092EC010E949C0A8091E10080FFE7 +:101CE00019C08091E20080FF15C08091E2008E7FD4 +:101CF0008093E2008091E20080618093E200809115 +:101D0000D80080628093D80019BC85E08093EC01F4 +:101D10000E94A00A8091E10084FF30C08091E2001F +:101D200084FF2CC080E189BD82E189BD09B400FE39 +:101D3000FDCF8091D8008F7D8093D8008091E10005 +:101D40008F7E8093E1008091E2008F7E8093E2009D +:101D50008091E20081608093E2008091E801882315 +:101D600011F084E007C08091E30087FF02C083E0A8 +:101D700001C081E08093EC010E94A20A8091E10001 +:101D800083FF29C08091E20083FF25C08091E1009C +:101D9000877F8093E10082E08093EC011092E8015C +:101DA0008091E1008E7F8093E1008091E2008E7F40 +:101DB0008093E2008091E20080618093E20042E043 +:101DC00060E080E00E94290D8091F000886080939F +:101DD000F0000E949F0AFF91EF91BF91AF919F91F8 +:101DE0008F917F916F915F914F913F912F910F90C4 +:101DF0000FBE0F901F9018951F920F920FB60F9263 +:101E000011242F933F934F935F936F937F938F93FF +:101E10009F93AF93BF93CF93EF93FF93C091E9004C +:101E2000CF708091EC001092E9008091F000877FE4 +:101E30008093F00078940E94380F1092E90080910E +:101E4000F00088608093F000C093E900FF91EF916B +:101E5000CF91BF91AF919F918F917F916F915F9142 +:101E60004F913F912F910F900FBE0F901F9018959B +:101E70001F93CF93DF93CDB7DEB7AA970FB6F89431 +:101E8000DEBF0FBECDBFEDEEF1E08091F10081939A +:101E900021E0E53FF207C9F70E94BE0A8091E80001 +:101EA00083FF1CC12091ED013091EE01832F90E062 +:101EB0008A30910508F012C1FC01E05AFF4F0C94E2 +:101EC000F024203881F0223809F008C18091F10116 +:101ED0008F708093E9008091EB0085FB882780F963 +:101EE0001092E90006C08091E9019091EA019111F8 +:101EF00082609091E800977F9093E8008093F100D2 +:101F00001092F100C5C0822F8D7F09F0E7C0222317 +:101F100019F0223061F0E2C08091EF01813009F0C8 +:101F2000DDC0333009F080E08093EA0128C0809161 +:101F3000EF01811124C02091F1012F7009F4CEC06E +:101F40002093E9008091EB0080FF19C08091EB00A5 +:101F5000333011F4806211C080618093EB0081E026 +:101F600090E0022E01C0880F0A94EAF78093EA00FD +:101F70001092EA008091EB0088608093EB00109251 +:101F8000E9008091E800877F86C02111A7C01091E9 +:101F9000EF011F778091E3008078812B8093E3002D +:101FA0008091E800877F8093E8000E945E0D809119 +:101FB000E80080FFFCCF8091E30080688093E3001D +:101FC000112311F083E001C082E08093EC0186C010 +:101FD0002058223008F082C08091EF019091F001EA +:101FE0008C3D23E0920779F583E08A838AE2898336 +:101FF0004FB7F894DE01139620E03EE051E2E32F64 +:10200000F0E050935700E49120FF03C0E295EF7099 +:102010003F5FEF708E2F90E0EA3010F0C79601C05E +:10202000C0968D939D932F5F243149F74FBF8091C8 +:10203000E800877F8093E8006AE270E0CE010196B5 +:102040000E94660C14C0AE014F5F5F4F6091F101BA +:102050000E94AE0B009709F441C02091E800277F51 +:102060002093E800BC0189819A810E94C70C80916D +:10207000E8008B778093E80031C0203879F58091B3 +:10208000E800877F8093E8008091E8018093F10069 +:102090008091E8008E778093E8000E945E0D1EC05C +:1020A00021111CC09091EF019230C0F48091E800A2 +:1020B000877F8093E8009093E8010E945E0D8091F5 +:1020C000E801811104C08091E30087FF02C084E031 +:1020D00001C081E08093EC010E94AA0A8091E8008F +:1020E00083FF0AC08091E800877F8093E800809199 +:1020F000EB0080628093EB00AA960FB6F894DEBFE7 +:102100000FBECDBFDF91CF911F9108950895CF935A +:102110008091EC018823B1F08091E9008F7090915B +:10212000EC0090FF02C090E801C090E0C92FC82BDE +:102130001092E9008091E80083FD0E94380FCF7073 +:10214000C093E900CF91089590937101809370013D +:102150000895E0917001F0917101309721F00190A4 +:10216000F081E02D099480E00895E0917001F091F4 +:102170007101309721F00280F381E02D09940895D8 +:10218000E0917001F0917101309721F00480F581A8 +:10219000E02D0994089520916E0130916F0182170E +:1021A000930771F090936F0180936E01E09170013D +:1021B000F0917101309721F00680F781E02D0994AC +:1021C000089520916C0130916D018217930771F091 +:1021D00090936D0180936C01E0917001F091710119 +:1021E000309721F00084F185E02D09940895089539 +:1021F0000C94F7100E94E11C0E94CA050C94A71DC4 +:10220000CF92DF92EF92FF920F931F93CF93DF93C2 +:10221000CDB7DEB72B970FB6F894DEBF0FBECDBF9C +:102220000E94E20533E7E32E31E0F32E00E010E0F8 +:10223000C02E802F0E94CF06F701D1907F01D826B3 +:10224000B1F40F5F1F4F0E30110591F78FEF8983A7 +:102250008A831B820E94EA1C8160782F9D838C8375 +:1022600049815A816B818D810E94A31141C0909157 +:10227000D50191FF04C08B870E94D5068B8520E095 +:1022800030E04D2D50E0922FBA01022E02C075951C +:1022900067950A94E2F760FF25C02E83CF82EE2473 +:1022A000E394F12C02C0EE0CFF1C9A95E2F790E04B +:1022B0008E219F2121E0892B09F420E028870E94AC +:1022C000EA1C8160782F9A8789874E815F816885B3 +:1022D0008A850E94A311F801ED58FE4F80818E255A +:1022E000808306C02F5F3F4F2630310561F6A9CFAE +:1022F0000E948B20109172010E94A9101817A1F062 +:102300000E94A910809372012B960FB6F894DEBF3D +:102310000FBECDBFDF91CF911F910F91FF90EF9036 +:10232000DF90CF900C94AE092B960FB6F894DEBFD9 +:102330000FBECDBFDF91CF911F910F91FF90EF9016 +:10234000DF90CF900895CF93DF93CDB7DEB72B9773 +:102350000FB6F894DEBF0FBECDBF4F835887698795 +:102360007A878B87DE01119686E0FD0111928A95AE +:10237000E9F785E0FE01379601900D928A95E1F725 +:1023800049815A816B817C818D819E810E94F818E0 +:102390002B960FB6F894DEBF0FBECDBFDF91CF9165 +:1023A00008950895CF93C82F882309F4C1C08238B7 +:1023B00059F40E94A91081FDBBC089E30E94A21BB1 +:1023C0000E946C1C89E30CC0833879F40E94A91028 +:1023D00080FDAEC083E50E94A21B0E946C1C83E5B9 +:1023E0000E94E21BCF910C946C1C843859F40E941B +:1023F000A91082FD9DC087E40E94A21B0E946C1C54 +:1024000087E4EECF8CEF8C0F813A48F48C2F0E943A +:10241000BE2281118DC08C2F0E94A21BE3CF80E2CF +:102420008C0F883048F4C77081E001C0880FCA95CE +:10243000EAF70E94231CD6CF8BE58C0F833078F40B +:10244000C53A29F0C63A31F482E890E005C081E847 +:1024500090E002C083E890E0CF910C94CB1088E527 +:102460008C0F833108F064C0C83A39F1C93A41F1A0 +:10247000CA3A49F1CB3A51F1CC3A59F1CD3A61F12E +:10248000C03B69F1CE3A71F1CF3A79F1C13B81F1AC +:10249000C23B89F1C33B91F1C43B99F1C53BA1F12A +:1024A000C63BA9F1C73BB1F1C83BB9F1C93BC1F18A +:1024B000CA3BC9F58AE292E038C082EE90E035C0AE +:1024C00089EE90E032C08AEE90E02FC085EB90E07C +:1024D0002CC086EB90E029C087EB90E026C08CEC06 +:1024E00090E023C08DEC90E020C083E891E01DC017 +:1024F0008AE891E01AC082E991E017C084E991E08E +:1025000014C081E292E011C083E292E00EC084E246 +:1025100092E00BC085E292E008C086E292E005C03E +:1025200087E292E002C080E090E0CF910C94E1104D +:10253000CF910895882309F44BC0823859F40E9442 +:10254000A91081FF45C089E30E94A21B0E946C1C58 +:1025500089E30CC0833871F40E94A91080FF38C051 +:1025600083E50E94A21B0E946C1C83E50E94E21B73 +:102570000C946C1C843859F40E94A91082FF28C066 +:1025800087E40E94A21B0E946C1C87E4EFCF9CEFA3 +:10259000980F913A58F390E2980F983050F4877062 +:1025A00091E001C0990F8A95EAF7892F0E94291CB2 +:1025B000DFCF9BE5980F933020F480E090E00C94FF +:1025C000CB10885A833120F480E090E00C94E11025 +:1025D0000895882321F00E94231C0C946C1C0895FC +:1025E000882321F00E94291C0C946C1C0895CF9222 +:1025F000DF92EF92FF920F931F93CF93DF93CDB7AC +:10260000DEB728970FB6F894DEBF0FBECDBF8C01A2 +:1026100085E0F801DE01119601900D928A95E1F7AF +:10262000F801D080E180F280558152955F7023815E +:102630003481232B39F0FFEFEF1206C081E0DF1267 +:1026400003C003C081E001C080E080FDE2C2C80198 +:102650005F830E94D111D982EA8269817A818F2DAC +:102660000E949E1B9E8388870E94521B0E94251AEF +:102670004E815F816885FF2029F00E94401C68859B +:102680005F814E81E42FE295EF70F0E0E659FF4F55 +:102690000C94F024842F807F142F1F70882311F056 +:1026A0001295107FFF20B1F0112309F467C280E278 +:1026B000860F883028F4812F68870E94231C04C06D +:1026C000812F68870E94331C688568870E946C1C74 +:1026D000688554C2862F68870E949A1268851123E4 +:1026E00009F497C2605E812F683018F40E94291C9B +:1026F00002C00E94391C28960FB6F894DEBF0FBEA8 +:10270000CDBFDF91CF911F910F91FF90EF90DF90A0 +:10271000CF900C946C1C242F207F842F8F7020323C +:1027200011F08295807F662319F0613019F12BC07A +:10273000FF20B1F0552309F493C1513009F090C145 +:1027400028960FB6F894DEBF0FBECDBFDF91CF91B4 +:102750001F910F91FF90EF90DF90CF900C94531C3E +:10276000552319F0513009F454C28E830E94561C2F +:102770008E8189C1FF2021F0523008F04AC270C119 +:10278000511147C280C1FF2021F0552309F468C1CF +:10279000F5C1552309F477C105C2242F2695269546 +:1027A000237030E02115310521F021303105C9F0C9 +:1027B00030C2FF2021F0862F942F937002C080E05A +:1027C00090E028960FB6F894DEBF0FBECDBFDF9124 +:1027D000CF911F910F91FF90EF90DF90CF900C94CD +:1027E000CB10FF2021F0862F942F937002C080E041 +:1027F00090E028960FB6F894DEBF0FBECDBFDF91F4 +:10280000CF911F910F91FF90EF90DF90CF900C949C +:10281000E110862FFF2019F00E94931F02C00E9432 +:10282000FB1F28960FB6F894DEBF0FBECDBFDF9119 +:10283000CF911F910F91FF90EF90DF90CF900C946C +:102840008020842F837009F076C0F110E2C1262F1A +:10285000229526952770220F220F862F8F70C82E63 +:10286000D12CE12CF12C022E04C0CC0CDD1CEE1C72 +:10287000FF1C0A94D2F764FF10C06FE070E080E0A4 +:1028800090E004C0660F771F881F991F2A95D2F722 +:10289000609570958095909503C060E070E0CB01E5 +:1028A000242F269526952370422F50E04230510563 +:1028B000D1F04330510559F16C297D298E299F298A +:1028C0004130510541F128960FB6F894DEBF0FBE96 +:1028D000CDBFDF91CF911F910F91FF90EF90DF90CF +:1028E000CF900C944A1A6C297D298E299F2928960D +:1028F0000FB6F894DEBF0FBECDBFDF91CF911F9111 +:102900000F91FF90EF90DF90CF900C94641A0E948B +:102910004A1AC701B60128960FB6F894DEBF0FBE5B +:10292000CDBFDF91CF911F910F91FF90EF90DF907E +:10293000CF900C94301AFF2019F0842F817001C0C1 +:102940008695882309F465C1262F22952695277040 +:10295000220F220F862F8F70C82ED12CE12CF12C44 +:10296000022E04C0CC0CDD1CEE1CFF1C0A94D2F716 +:1029700064FF10C06FE070E080E090E004C0660F7C +:10298000771F881F991F2A95D2F7609570958095BB +:10299000909503C060E070E0CB01242F269526952A +:1029A0002370422F50E042305105D1F043305105A1 +:1029B00059F16C297D298E299F294130510541F11A +:1029C00028960FB6F894DEBF0FBECDBFDF91CF9132 +:1029D0001F910F91FF90EF90DF90CF900C941E1BF2 +:1029E0006C297D298E299F2928960FB6F894DEBF81 +:1029F0000FBECDBFDF91CF911F910F91FF90EF9050 +:102A0000DF90CF900C94381B0E941E1BC701B601AB +:102A100028960FB6F894DEBF0FBECDBFDF91CF91E1 +:102A20001F910F91FF90EF90DF90CF900C94041BBB +:102A3000603FC9F118F4603E50F49BC0623F09F456 +:102A400060C008F44AC0633F09F46FC092C0162FFB +:102A50001F70842F8F71FF2099F00E949D1A812F83 +:102A600028960FB6F894DEBF0FBECDBFDF91CF9191 +:102A70001F910F91FF90EF90DF90CF900C94E9128F +:102A80000E94BE1A812F28960FB6F894DEBF0FBEA3 +:102A9000CDBFDF91CF911F910F91FF90EF90DF900D +:102AA000CF900C94F012FF20A1F05111B2C0842FEE +:102AB0008F7128960FB6F894DEBF0FBECDBFDF91A1 +:102AC000CF911F910F91FF90EF90DF90CF900C94DA +:102AD000E31A523008F09DC0EACFFF20A1F0842F06 +:102AE0008F7128960FB6F894DEBF0FBECDBFDF9171 +:102AF000CF911F910F91FF90EF90DF90CF900C94AA +:102B00009D1AFF2061F3842F8F7128960FB6F894D9 +:102B1000DEBF0FBECDBFDF91CF911F910F91FF9010 +:102B2000EF90DF90CF900C94BE1AFF2091F0842F8D +:102B30008F7128960FB6F894DEBF0FBECDBFDF9120 +:102B4000CF911F910F91FF90EF90DF90CF900C9459 +:102B5000881A28960FB6F894DEBF0FBECDBFDF915E +:102B6000CF911F910F91FF90EF90DF90CF900C9439 +:102B70007E1AFF20A1F0552309F4B1CF862F2896A5 +:102B80000FB6F894DEBF0FBECDBFDF91CF911F917E +:102B90000F91FF90EF90DF90CF900C94D2115523BE +:102BA00009F4B1CF862F28960FB6F894DEBF0FBE7A +:102BB000CDBFDF91CF911F910F91FF90EF90DF90EC +:102BC000CF900C949A124F70C8010E940D03289662 +:102BD0000FB6F894DEBF0FBECDBFDF91CF911F912E +:102BE0000F91FF90EF90DF90CF900C94A5194F704C +:102BF000C80128960FB6F894DEBF0FBECDBFDF9197 +:102C0000CF911F910F91FF90EF90DF90CF900C9498 +:102C1000D60628960FB6F894DEBF0FBECDBFDF9163 +:102C2000CF911F910F91FF90EF90DF90CF9008957B +:102C30000E94401C0E94501C0E94151C0E946C1C8B +:102C40000E942C210E94802080E090E00E94CB1006 +:102C500080E090E00C94E1100E94301C0C94181657 +:102C60000E94931B292F22952F7030E02C303105C4 +:102C70004CF42A3031056CF42250310922303105F0 +:102C800090F407C02C30310551F02F30310539F068 +:102C90000AC0803E10F0803F31F481E0089593FB3C +:102CA000882780F9089580E00895CF93DF9300D0BE +:102CB00000D01F92CDB7DEB70F900F900F900F90FE +:102CC0000F90DF91CF910895CF93DF9300D000D084 +:102CD00000D0CDB7DEB726960FB6F894DEBF0FBE94 +:102CE000CDBFDF91CF9108951F93CF93DF93C09114 +:102CF000810116E080918201C81799F0D0E01C9FF5 +:102D0000F0011D9FF00D1124ED57FE4F40815181C0 +:102D100062817381848195810E9464162196C770B7 +:102D2000E9CFDF91CF911F9108954091B301509168 +:102D3000B4016091B5017091B6018091B701909195 +:102D4000B8010C946416CF938091B80182958F706E +:102D500009F05FC08091B501882309F45AC0209121 +:102D60008101A09182016091B3017091B4018091C1 +:102D7000B6019091B70131E06F3F09F030E0B32F19 +:102D8000C6E02A1709F445C0009721F07F3F21F4DF +:102D90004B2F03C041E001C040E030E040FD35C0B2 +:102DA000C29FF001C39FF00D1124ED57FE4F4181EA +:102DB00074132BC04081641328C04281411125C087 +:102DC000438154814817590710F441505109481B59 +:102DD000590B483C5105C8F48091B8018F7080614F +:102DE0008093B80186E0829FF001839FF00D11244B +:102DF000E857FE4F80818F708061808383EB91E084 +:102E00000E94F712CF910C9474162F5F3F4F2770DA +:102E1000B8CFCF910895CF92DF92EF92FF920F93A8 +:102E20001F93CF93DF93CDB7DEB762970FB6F894B9 +:102E3000DEBF0FBECDBF8C0185E0F801DE011D961F +:102E400001900D928A95E1F7D8014C9111965C9111 +:102E5000119712966C9112971396ED90FC9014971F +:102E60007091B301E091B4012091B6013091B701A6 +:102E70002115310531F0EF3F31F481E07F3F19F446 +:102E800003C081E001C080E0B82FB170CB2E80FD7F +:102E90006CC1D090B501DD2009F4F5C0F091B80106 +:102EA000E216F30638F0C701821B930B883C9105AC +:102EB00048F09BC0209530952E0D3F1D283C3105D4 +:102EC00008F093C08F2F807F09F052C0E51314C023 +:102ED000741312C0D62E61110FC0FF70F061F09311 +:102EE000B8010E94951683EB91E00E94F712809141 +:102EF000B801F80185836CC1EF2831F05F3F31F4F0 +:102F000081E04F3F19F403C081E001C080E080FD03 +:102F100003C081E0862701C080E0F82FF170FF2E0A +:102F200080FF1CC0809181012091820136E08217D0 +:102F300009F428C190E0389FF001399FF00D112469 +:102F4000ED57FE4F7181571306C07081471303C0C0 +:102F50007281671303C001968770E9CFD62E66236E +:102F600009F436C18091B80181608093B80153C0E3 +:102F7000E51308C0741306C0611104C0D80115968A +:102F8000FC93AEC04D875E878D859E856A8B0E94BF +:102F900030166A89882329F1D62E662311F12091F3 +:102FA000B801822F82958F7090E002970CF460C078 +:102FB0008091B3019091B40198878F831986FB8625 +:102FC000EA862C87CE01079651C0E51731F14D876F +:102FD0005E878D859E856A8B0E9430166A89811175 +:102FE0002EC0C8010E94F712A4C08F2F807F69F7FE +:102FF0007E2DF98AE88A89890E94551683EB91E033 +:103000000E94F712E3EBF1E086E0DF011D928A9562 +:10301000E9F70E949516D12CDBC07413D8CF61114B +:10302000D6CFD8011596FC93C8010E94F712E3EBA6 +:10303000F1E086E0DF011D928A95E9F7C9C0D62E3E +:10304000662379F22091B801822F82958F7090E0EB +:10305000029774F08091B3019091B4019A838983AF +:103060001B82FD82EC822E83CE0101960E94F71214 +:1030700086E0F801A3EBB1E001900D928A95E1F7AB +:103080000E94A3166FC0E216F30628F0C701821B48 +:10309000930B9C0104C0209530952E0D3F1D283CBC +:1030A000310508F052C0D62E662309F49ACFE513F5 +:1030B0002CC074132AC08091B80180FD1DC0982FC8 +:1030C00092959F70C9F0D80115968C9315979F30F3 +:1030D00039F09F5F9295907F8F70892B15968C9316 +:1030E000C8010E94F71286E0F801A3EBB1E001905D +:1030F0000D928A95E1F736C086E0F801A3EBB1E0C6 +:1031000001900D928A95E1F763C04D875E878D85AA +:103110009E850E943016882379F086E0F801A3EBA3 +:10312000B1E001900D928A95E1F70E94A3160E94EA +:103130009516DD24D3944CC08091B80181608093B2 +:10314000B801C8010E94F71243C07E2DF98AE88AAF +:1031500089890E945516E3EBF1E086E0DF011D92BC +:103160008A95E9F70E94951633C0662309F439CF92 +:103170004D875E878D859E850E943016882309F4D1 +:1031800030CFCBCF4D875E878D859E850E94931B68 +:10319000292F22952F7030E0223031052CF49F70BA +:1031A00041F0811106C00CC0243031052CF49F7011 +:1031B00049F4805E883020F0C8010E94F712CF2CBD +:1031C000DC2C06C0D80115969C91907F91F7F8CF22 +:1031D0008D2D62960FB6F894DEBF0FBECDBFDF9186 +:1031E000CF911F910F91FF90EF90DF90CF900895B6 +:1031F0001F93CF93DF93CDB7DEB72C970FB6F8941C +:10320000DEBF0FBECDBF4F83588769877A878B8714 +:103210009C87CE0107960E940B178823C1F02F814F +:1032200038858A859B85892B31F03F3F11F080E0FE +:1032300003C02F3FE1F781E0811147C04F815885DE +:1032400069857A858B859C850E9464163EC086E0E0 +:10325000FE013796DE01119601900D928A95E1F7F5 +:10326000FF81E8854A855B854115510531F0EF3FC7 +:1032700031F481E0FF3F19F403C081E001C080E038 +:1032800080FD23C02091820130E0C9010196877042 +:1032900099276091810170E086179707F1F1F98312 +:1032A000EA835D834C8396E0929FD001939FB00D9B +:1032B0001124AD57BE4FFE01319601900D929A95A3 +:1032C000E1F7809382010E94741616E080918101DB +:1032D00090918201891779F1189FC00111248D57AF +:1032E0009E4F0E940B17882331F1E09181011E9FB0 +:1032F000F0011124ED57FE4F4081518162817381AD +:10330000848195810E9464168091810190E00196EC +:103310008770992780938101D9CF0E942C16109233 +:10332000820110928101E3EBF1E086E0DF011D9262 +:103330008A95E9F7CACF2C960FB6F894DEBF0FBE78 +:10334000CDBFDF91CF911F910895EF92FF920F9320 +:103350001F93CF93DF93FC01009709F46FC0F12C0A +:10336000EE24E394EF0121968491843740F4843075 +:1033700008F055C0813081F0823021F15FC085377F +:1033800009F447C0C0F19CE7980F903708F056C089 +:103390008F770E949A1245C08F010E5F1F4FFE016A +:1033A000849190E2980F983050F48770FE2D01C000 +:1033B000FF0F8A95EAF78F2F0E94431C15C00E94C9 +:1033C000D21114C08F010E5F1F4FFE01849190E255 +:1033D000980F983068F48770FE2D01C0FF0F8A9512 +:1033E000EAF78F2F0E94491C0E946C1CE80119C04B +:1033F0000E949A12FBCFCF010296FE01C491CC230A +:1034000061F0EFE9FFE03197F1F700C00000C15033 +:10341000F6CFCF010296FE01F490EC0102C00E94AB +:10342000D2118F2D882341F0EFE9FFE03197F1F7BA +:1034300000C000008150F6CFFE0194CFDF91CF9104 +:103440001F910F91FF90EF90089508956093BD0133 +:103450007093BE018093BF019093C0010C94181625 +:103460000F931F930091BD011091BE012091BF01E8 +:103470003091C001062B172B282B392B0093BD014F +:103480001093BE012093BF013093C0011F910F9193 +:103490000C9418160F931F930091BD011091BE015B +:1034A0002091BF013091C00106231723282339231F +:1034B0000093BD011093BE012093BF013093C00162 +:1034C0001F910F910C9418160F931F930091BD013B +:1034D0001091BE012091BF013091C001062717272E +:1034E000282739270093BD011093BE012093BF0107 +:1034F0003093C0011F910F910C9418161092B901CE +:103500001092BA011092BB011092BC010C941816D3 +:1035100041E050E060E070E004C0440F551F661FBA +:10352000771F8A95D2F74093B9015093BA016093FF +:10353000BB017093BC010C94181641E050E060E0B0 +:1035400070E004C0440F551F661F771F8A95D2F79D +:103550008091B9019091BA01A091BB01B091BC01D9 +:10356000842B952BA62BB72B8093B9019093BA018E +:10357000A093BB01B093BC010C94181641E050E03D +:1035800060E070E004C0440F551F661F771F8A95E6 +:10359000D2F740955095609570958091B9019091C2 +:1035A000BA01A091BB01B091BC0184239523A6234D +:1035B000B7238093B9019093BA01A093BB01B09354 +:1035C000BC010C94181641E050E060E070E004C0CB +:1035D000440F551F661F771F8A95D2F78091B90156 +:1035E0009091BA01A091BB01B091BC0184279527AD +:1035F000A627B7278093B9019093BA01A093BB0186 +:10360000B093BC010C9418160F931F930091B9014D +:103610001091BA012091BB013091BC01062B172BF0 +:10362000282B392B0093B9011093BA012093BB01C9 +:103630003093BC011F910F910C9418160F931F9398 +:103640000091B9011091BA012091BB013091BC01E8 +:1036500006231723282339230093B9011093BA01B5 +:103660002093BB013093BC011F910F910C9418164D +:103670000F931F930091B9011091BA012091BB01E2 +:103680003091BC0106271727282739270093B90155 +:103690001093BA012093BB013093BC011F910F918D +:1036A0000C9418160895CF92DF92EF92FF920F9329 +:1036B0001F93CF93DF93EC01C090BD01D090BE016A +:1036C000E090BF01F090C0018091B9019091BA01E2 +:1036D000A091BB01B091BC01C82AD92AEA2AFB2AD1 +:1036E0000FE110E0B701A601002E04C076956795A2 +:1036F000579547950A94D2F740FD05C0015011092E +:1037000088F780E007C0BE01802F0E94130901974F +:10371000A9F3802FDF91CF911F910F91FF90EF9030 +:10372000DF90CF900895CF93DF93EC010E94531B5D +:10373000BE010E941309DF91CF910895CB010E9431 +:10374000931B089590910C019923D9F090910D014C +:103750009923B9F0982F9695969596959F3088F570 +:10376000E0910E01F0910F01E90FF11D877021E04A +:1037700030E001C0220F8A95EAF78181822B818394 +:10378000089540910E0150910F0120E030E09FEF2D +:10379000FA01E20FF31F6281681799F09F3F19F455 +:1037A000611101C0922F2F5F3F4F2E30310581F7FD +:1037B0009F3F39F0FA01E90FF11D97FDFA958283D9 +:1037C0000895089590910C019923E1F090910D01D5 +:1037D0009923C1F0982F9695969596959F3020F550 +:1037E000E0910E01F0910F01E90FF11D877021E0CA +:1037F00030E001C0220F8A95EAF7209581812823C5 +:103800002183089540910E0150910F0120E030E096 +:10381000FA01E20FF31F9281981301C012822F5F09 +:103820003F4F2E303105A1F7089581E090E0E091FF +:103830000E01F0910F01E80FF91F108201968031FF +:103840009105A9F708959091D401982B9093D401F4 +:10385000089580959091D40198239093D401089570 +:103860001092D40108959091D301982B9093D30195 +:10387000089580959091D30198239093D301089552 +:103880001092D30108959091D201982B9093D20178 +:10389000089580959091D20198239093D201089534 +:1038A0001092D20108958093C10108951092C10130 +:1038B000089540910E0150910F0120E030E080E02A +:1038C000FA01E20FF31F918191118F5F2F5F3F4F3C +:1038D0002F303105A9F70895E0910E01F0910F0105 +:1038E0008091D4018083E0910E01F0910F018081DD +:1038F0009091D301892B8083E0910E01F0910F010B +:1039000080819091D201892B80839091C10199236C +:1039100061F0E0910E01F0910F018081892B80838D +:103920000E94591C81111092C10180910E01909149 +:103930000F010C94B5108091EC01843021F11092AC +:10394000D60120E488E190E00FB6F894A895809322 +:1039500060000FBE2093600080E00E94AE0983B734 +:10396000817F846083BF83B7816083BF78948895AB +:1039700083B78E7F83BF88E10FB6F8948093600091 +:10398000109260000FBE089508950895CF930E948D +:10399000C41C0E94E2050E94C51CC0E08C2F0E943E +:1039A000CF06811105C0CF5FCE30C1F780E001C0E6 +:1039B00081E0CF9108950E942C160E94A9100C94CA +:1039C000AE0982E084BD93E095BD9AEF97BD8093E8 +:1039D0006E0008952FB7F8948091D7019091D80187 +:1039E000A091D901B091DA012FBF0895CF92DF9253 +:1039F000EF92FF920F931F932FB7F8944091D70146 +:103A00005091D8016091D9017091DA012FBF6A01FC +:103A10007B01EE24FF248C0120E030E0C016D106AB +:103A2000E206F30610F441505109481B590BCA0134 +:103A30001F910F91FF90EF90DF90CF9008951F920C +:103A40000F920FB60F9211248F939F93AF93BF9352 +:103A50008091D7019091D801A091D901B091DA015C +:103A60000196A11DB11D8093D7019093D801A09319 +:103A7000D901B093DA01BF91AF919F918F910F90CF +:103A80000FBE0F901F9018950E94AF0DF8942FEF66 +:103A900087EA91E6215080409040E1F700C00000A5 +:103AA00087E090EBDC018093F6019093F701A093FF +:103AB000F801B093F9012CE088E190E00FB6F8949A +:103AC000A895809360000FBE20936000FFCFEF9217 +:103AD000FF920F931F93CF93DF93E82EF12C8F2D3E +:103AE0000E94CF06C0E0D0E0082F10E098010C2E15 +:103AF00002C0359527950A94E2F720FD05C021966E +:103B0000C630D10599F709C06C2F7F2D80E00E9447 +:103B1000D706E812F4CF81E005C0F3948EE0F812E6 +:103B2000DECF80E0DF91CF911F910F91FF90EF905A +:103B30000895CF93C82F8CE20E94671D882321F03F +:103B40008C2FCF910C94671D80E0CF910895CF9377 +:103B50000E94EC1E811102C00E94D21EC5E6C15017 +:103B600049F00E94E2058FE39CE90197F1F700C05C +:103B70000000F5CF89E20E94991D811111C18AE2EE +:103B80000E94991D81110E94D21E85E00E94991DFC +:103B900081110E94441D0E94F71E8093D50187E089 +:103BA0000E94991D882399F18BE10E94991D882319 +:103BB00051F09091D50191FB882780F921E082276F +:103BC00080FB91F922C08EE00E94991D882351F05C +:103BD0009091D50192FB882780F921E0822780FB14 +:103BE00092F913C080E10E94991D9091D50188231C +:103BF00041F093FB882780F921E0822780FB93F92D +:103C000004C0892F809580FB90F99093D501809115 +:103C1000D5010E94FB1E0E94091F8093F50180EED2 +:103C20000E94991D882341F08091F501982F90956D +:103C300090FB80F98093F50189E30E94991D882308 +:103C400059F09091F50191FB882780F921E08227B6 +:103C500080FB91F99093F50182EE0E94991D8823D3 +:103C600059F09091F50192FB882780F921E0822795 +:103C700080FB92F99093F50186EE0E94991D8823AE +:103C800059F09091F50193FB882780F921E0822774 +:103C900080FB93F99093F50183EE0E94991D882390 +:103CA00059F09091F50194FB882780F921E0822753 +:103CB00080FB94F99093F50185E30E94991D882378 +:103CC00059F09091F50195FB882780F921E0822732 +:103CD00080FB95F99093F50181E30E94991D88235B +:103CE00059F09091F50196FB882780F921E0822711 +:103CF00080FB96F99093F50181E10E94991D88233C +:103D000059F09091F50197FB882780F921E08227EF +:103D100080FB97F99093F5018091F5010E940D1FAA +:103D20008091F50187FB882780F980930D0187E258 +:103D30000E94991DC82F8EE10E94991D8111C260B9 +:103D40008FE10E94991D8111C46080E20E94991D3B +:103D50008111C86081E20E94991D8111C06182E2D7 +:103D60000E94991D8111C06283E20E94991D8111F8 +:103D7000C06484E20E94991D882311F0C06802C0CB +:103D8000CC2329F08C2F0E94041F6C2F03C00E94AB +:103D9000001F682F70E080E090E0CF910C94261A0D +:103DA000CF9108956DEE7EEF80E090E00E942A258D +:103DB00060E082E090E00E94182560E083E090E0FF +:103DC0000E94182560E084E090E00E94182560E0E1 +:103DD00085E090E00C94182580E090E00E94122588 +:103DE00021E08D3E9E4F09F020E0822F089582E071 +:103DF00090E00C940A25682F82E090E00C9418253E +:103E000083E090E00C940A25682F83E090E00C9406 +:103E1000182584E090E00C940A25682F84E090E057 +:103E20000C9418258091DD0180FF0BC06091130177 +:103E300085E0689FB0011124759567957595679524 +:103E40002AC081FF09C06091130185E0689FB0011D +:103E50001124759567951FC082FF07C060911301FB +:103E600085E0689FB001112416C04091DE01442313 +:103E7000C9F060911201461788F72091130185E07F +:103E8000289F90011124429FC001439F900D11244F +:103E900070E00E94DC246038710540F46115710502 +:103EA00039F002C065E070E0862F08958FE708952D +:103EB00081E008958091DD0180FF08C060911101CB +:103EC00070E0759567957595679521C081FF06C06F +:103ED0006091110170E07595679519C082FF04C06B +:103EE0006091110170E010C08091DE018823C1F063 +:103EF000609110018617A0F790911101989FC00161 +:103F0000112470E00E94DC246038710528F46115EA +:103F1000710521F0862F08958FE7089581E00895B7 +:103F200061E070E0F4CF803F21F40E94121F819580 +:103F300004C0813F29F40E94121F8093E10108957B +:103F4000823F21F40E94121F819504C0833F29F40F +:103F50000E94121F8093E0010895893F19F40E9486 +:103F60005A1F05C08A3F31F40E945A1F81958093E1 +:103F7000E20108958B3F21F40E945A1F819504C0ED +:103F80008C3F29F40E945A1F8093E3010895843FD7 +:103F900021F48091DF01816017C0853F21F4809179 +:103FA000DF01826011C0863F21F48091DF018460CF +:103FB0000BC0873F21F48091DF01886005C0883FF6 +:103FC00031F48091DF0180618093DF0108958D3F9E +:103FD00021F48091DD0181600BC08E3F21F480913E +:103FE000DD01826005C08F3F29F48091DD0184608E +:103FF0008093DD010895803F39F48091E10187FFCE +:104000006CC01092E10169C0813F29F48091E10107 +:104010001816BCF362C09091E001823F29F497FF2B +:104020005CC01092E00159C0833F19F41916CCF31B +:1040300054C0893F41F48091E20118160CF04DC044 +:104040001092E2014AC08A3F29F48091E20187FF81 +:1040500044C0F6CF8B3F39F48091E30187FF3DC028 +:104060001092E3013AC08C3F29F48091E3011816C5 +:10407000BCF333C0843F21F48091DF018E7F17C0F1 +:10408000853F21F48091DF018D7F11C0863F21F4AF +:104090008091DF018B7F0BC0873F21F48091DF018E +:1040A000877F05C0883F31F48091DF018F7E809348 +:1040B000DF0113C08D3F21F48091DD018E7F0BC0A5 +:1040C0008E3F21F48091DD018D7F05C08F3F29F463 +:1040D0008091DD018B7F8093DD018091E001811172 +:1040E0000EC08091E10181110AC08091E20181112D +:1040F00006C08091E301811102C01092DE01089593 +:104100008FED91E00E94C0100E94EA1C9093DC01A8 +:104110008093DB0108951F93CF93DF938091DB01A0 +:104120009091DC010E94F61C4091DE01442321F0B5 +:104130002091140130E006C0209115015AE0259F1E +:10414000900111248217930708F482C08091E00146 +:104150001091E101D091E201C091E301811107C00A +:10416000111105C0D11103C0CC2309F471C04F3F18 +:1041700019F04F5F4093DE01181624F40E94121FBD +:104180008093E0018091E00187FF05C00E94121F2B +:1041900081958093E001111624F40E94121F8093F0 +:1041A000E1018091E10187FF05C00E94121F819506 +:1041B0008093E1016091E001662339F11091E10102 +:1041C000112319F1772767FD7095872F972F0E948C +:1041D000ED2323E333E343E35FE30E9451240E9492 +:1041E000BA236093E001612F772767FD7095872FD1 +:1041F000972F0E94ED2323E333E343E35FE30E9421 +:1042000051240E94BA236093E1011D1624F40E94F8 +:104210005A1F8093E2018091E20187FF05C00E944E +:104220005A1F81958093E2011C1624F40E945A1FA4 +:104230008093E3018091E30187FF05C00E945A1F2C +:1042400081958093E301DF91CF911F910C948020A1 +:10425000DF91CF911F910895EFEDF1E085E0DF014F +:104260001D928A95E9F71092DE011092DD01089502 +:10427000833081F128F4813059F08230D1F00895F3 +:10428000853009F449C0B8F1863009F456C0089564 +:1042900020911501862F90E0820F911D8F3F91058F +:1042A00020F4620F6093150108958FEF809315013C +:1042B000089520911401862F90E0820F911D8F3F69 +:1042C000910520F4620F6093140108958FEF80939D +:1042D0001401089520911301862F90E0820F911D03 +:1042E0008F3F910520F4620F6093130108958FEFC3 +:1042F00080931301089520911201862F90E0820F80 +:10430000911D8F3F910520F4620F60931201089573 +:104310008FEF80931201089520911101862F90E074 +:10432000820F911D8F3F910520F4620F6093110160 +:1043300008958FEF80931101089520911001862F29 +:1043400090E0820F911D8F3F910520F4620F6093E2 +:10435000100108958FEF809310010895833011F1BB +:1043600028F4813049F0823091F00895853081F150 +:1043700020F18630C1F1089580911501681720F46D +:10438000861B809315010895109215010895809160 +:104390001401681720F4861B80931401089510926D +:1043A0001401089580911301681720F4861B8093EF +:1043B0001301089510921301089580911201681756 +:1043C00020F4861B80931201089510921201089523 +:1043D00080911101681720F4861B809311010895C4 +:1043E00010921101089580911001681720F4861B26 +:1043F0008093100108951092100108958D3109F4F1 +:1044000042C020F58E3009F477C070F4873009F48B +:1044100059C018F48630F1F134C0883009F4A8C0CE +:104420008B3009F4A5C02DC0863109F4A1C038F441 +:10443000803109F472C0813109F479C022C0893118 +:1044400009F496C08B3109F44DC01BC0853309F4C3 +:1044500087C048F4873209F483C008F473C08932F6 +:1044600009F47EC00EC0833438F48A3308F068C083 +:10447000883309F47DC005C0833409F471C08834E1 +:1044800099F080E008950E9474230E94A9100E9470 +:10449000AE096EC08091D501817F8E7F8093D5015A +:1044A00081E08093E50108950E942C162FEF83EDA3 +:1044B00090E3215080409040E1F700C000000E944E +:1044C000441D56C09091D501892F8095817080FB45 +:1044D00090F919F0966098601DC0997F977F90932E +:1044E000D50146C09091D50191FB882780F921E044 +:1044F000822780FB91F909C09091D50192FB882712 +:1045000080F921E0822780FB92F99093D5018823DE +:1045100079F191609093D50108959091D50193FB25 +:10452000882780F921E0822780FB93F9EECF0E9453 +:104530002C1680910D0191E0892780930D0118C000 +:1045400027EC01C023EE280F61E070E080E090E0EE +:1045500004C0660F771F881F991F2A95D2F704C0E1 +:1045600061E070E080E090E00E94261A0E942C1624 +:1045700081E0089580E0089580E00895CF93C82FEA +:104580008091E501813079F018F08230D1F184C05A +:10459000A0910E01B0910F018C91813169F08232AE +:1045A00009F07CC009C0A0910E01B0910F018C915F +:1045B000813111F0823249F48C2F0E94BA2281118C +:1045C0001DC08C2F0E94FE211AC08C2F0E94BC227D +:1045D000811114C0C43179F048F4CB3079F0C03186 +:1045E00009F060C082E08093E50108C0C93219F08B +:1045F000C83321F057C01092E50154C081E08170AA +:1046000053C0C93289F118F5C43171F1A8F4C7302B +:1046100009F046C08AE08093150194E1909314015B +:1046200093E0909313018093120188E0809311012D +:1046300088E28093100134C0CE51C63088F5EC2F4B +:10464000F0E0E65DFE4F80818093E40129C0CE3426 +:10465000E9F020F4CB3421F56AE013C0C13579F0DC +:10466000C235F1F461E00DC08091E401882319F0B6 +:104670001092E40115C081E08093E50115C061E06E +:1046800006C08091E4010E9438210AC06AE080914E +:10469000E4010E94AE2104C01092E50180E004C054 +:1046A00081E002C080E0ABCFCF910895E1E8F0E077 +:1046B0008081886080838081816080838FB7F89457 +:1046C00093E09093890090ED909388008FBF0895B8 +:1046D000EFE6F0E08081826080830895EFE6F0E00D +:1046E00080818D7F80830895EFE6F0E0808192E005 +:1046F0008927808308951F920F920FB60F9211247D +:104700002F933F934F935F936F937F938F939F93D9 +:10471000AF93BF93EF93FF938091E6019091E701F0 +:1047200001969093E7018093E601811103C082E036 +:104730000E94AE09E091E701E695E695F0E0E25BC4 +:10474000FA4FE4918091E6018E1303C080E00E944D +:10475000AE09FF91EF91BF91AF919F918F917F91A2 +:104760006F915F914F913F912F910F900FBE0F90DE +:104770001F90189504D06894B1118DC0089570D021 +:1047800088F09F5790F0B92F9927B751A0F0D1F03A +:10479000660F771F881F991F1AF0BA95C9F712C0C4 +:1047A000B13081F077D0B1E0089574C0672F782FD1 +:1047B0008827B85F39F0B93FCCF386957795679530 +:1047C000B395D9F73EF490958095709561957F4F9C +:1047D0008F4F9F4F0895E89409C097FB3EF4909542 +:1047E0008095709561957F4F8F4F9F4F9923A9F0CA +:1047F000F92F96E9BB279395F69587957795679559 +:10480000B795F111F8CFFAF4BB0F11F460FF1BC09C +:104810006F5F7F4F8F4F9F4F16C0882311F096E92F +:1048200011C0772321F09EE8872F762F05C06623DD +:1048300071F096E8862F70E060E02AF09A95660F96 +:10484000771F881FDAF7880F9695879597F908954F +:1048500057FD9058440F551F59F05F3F71F0479531 +:10486000880F97FB991F61F09F3F79F08795089516 +:10487000121613061406551FF2CF4695F1DF08C035 +:10488000161617061806991FF1CF86957105610552 +:1048900008940895E894BB2766277727CB0197F9FA +:1048A00008950BD078C069D028F06ED018F0952309 +:1048B00009F05AC05FC01124EECFCADFA0F3959F64 +:1048C000D1F3950F50E0551F629FF001729FBB27F7 +:1048D000F00DB11D639FAA27F00DB11DAA1F649FA3 +:1048E0006627B00DA11D661F829F2227B00DA11D56 +:1048F000621F739FB00DA11D621F839FA00D611DDC +:10490000221F749F3327A00D611D231F849F600DFC +:10491000211D822F762F6A2F11249F5750408AF035 +:10492000E1F088234AF0EE0FFF1FBB1F661F771FC1 +:10493000881F91505040A9F79E3F510570F014C058 +:10494000AACF5F3FECF3983EDCF3869577956795A9 +:10495000B795F795E7959F5FC1F7FE2B880F911DDF +:104960009695879597F9089597F99F6780E870E085 +:1049700060E008959FEF80EC089500240A941616D5 +:10498000170618060906089500240A94121613063D +:10499000140605060895092E0394000C11F48823CB +:1049A00052F0BB0F40F4BF2B11F460FF04C06F5FE7 +:1049B0007F4F8F4F9F4F089597FB072E16F400945B +:1049C00007D077FD09D00E94F62407FC05D03EF4FD +:1049D000909581959F4F0895709561957F4F0895AB +:1049E000EE0FFF1F0590F491E02D0994AA1BBB1B4D +:1049F00051E107C0AA1FBB1FA617B70710F0A61BDF +:104A0000B70B881F991F5A95A9F780959095BC01FF +:104A1000CD010895F999FECF92BD81BDF89A9927ED +:104A200080B50895A8E1B0E042E050E00C94322552 +:104A3000262FF999FECF92BD81BDF89A019700B457 +:104A4000021639F01FBA20BD0FB6F894FA9AF99AF7 +:104A50000FBE08950196272F0E9419250C94182542 +:104A6000DC01CB01FC01F999FECF06C0F2BDE1BD2E +:104A7000F89A319600B40D9241505040B8F708951D +:044A8000F894FFCFD8 +:104A84002002B0093D0A1A0AE609B3090101C2016C +:104A940028080A03140A3F4D36390F05C2048C0452 +:104AA4005304E603FF03180431040102030405065A +:044AB40007080900E6 :00000001FF -- cgit v1.2.1 From 4b74eca2a5cee027965745ccf5f18c2b9f18115b Mon Sep 17 00:00:00 2001 From: Nicholas Keene Date: Tue, 3 May 2016 20:58:27 -0500 Subject: The Ordinary Layout is arranged as close as possible to a traditional keyboard, but with extra special features --- .../ergodox_ez/keymaps/ordinary/ordinary-media.png | Bin 122650 -> 123651 bytes .../ergodox_ez/keymaps/ordinary/ordinary-media.txt | 10 +++++----- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.png b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.png index 7cb3f5137a..f3fed3cdbe 100644 Binary files a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.png and b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.png differ diff --git a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.txt b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.txt index cfced1607f..f1ecd5fdce 100644 --- a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.txt +++ b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.txt @@ -3,7 +3,7 @@ [{y:-0.875,x:5.5},"F15",{c:"#ff4444"},"Esc",{x:4.5,c:"#cccccc",a:7},"",{c:"#99de2a",a:4},"F16"], [{y:-0.875,c:"#2277ff",w:1.5},"Shift\n\n\n\n\n\nLock",{c:"#99de2a"},"F11",{x:14.5},"F20",{c:"#2277ff",w:1.5},"\n\nShift\n\n\n\n\nLock"], [{y:-0.375,x:3.5,c:"#ff8500"},"Mouse\n\n\n\n\n\nUp",{x:10.5},"Cursor\n\n\n\n\n\nUp"], -[{y:-0.875,x:2.5},"Left\n\n\n\n\n\nClick",{x:1},"Right\n\n\n\n\n\nClick",{x:8.5,c:"#ffb063"},"Home",{x:1},"Page\n\n\n\n\n\nUp"], +[{y:-0.875,x:2.5},"Mouse\n\n\n\n\n\nUpLeft",{x:1},"Mouse\n\n\n\n\n\nUpRgt",{x:8.5,c:"#ffb063"},"Home",{x:1},"Page\n\n\n\n\n\nUp"], [{y:-0.875,x:5.5,c:"#e6e067"},"Vol\n\n\n\n\n\nUp",{c:"#ffb063",h:1.5},"Scroll\n\n\n\n\n\nUp",{x:4.5,h:1.5},"Scroll\n\n\n\n\n\nUp",{c:"#e6e067"},"Print\n\n\n\n\n\nScreen"], [{y:-0.875,c:"#000000",t:"#ff0000",w:1.5},"Media\n\n\n\n\n\nShift",{c:"#e6e067",t:"#000000"},"Shut\n\n\n\n\n\nDown",{x:14.5},"Mail",{c:"#000000",t:"#ff0000",w:1.5},"\n\nMedia\n\n\n\n\nShift"], [{y:-0.375,x:3.5,c:"#ff8500",t:"#000000"},"Mouse\n\n\n\n\n\nDown",{x:10.5},"Cursor\n\n\n\n\n\nDown"], @@ -12,11 +12,11 @@ [{y:-0.875,c:"#2277ff",w:1.5},"Symbols\n\n\n\n\n\nShift",{c:"#e6e067"},"Sleep",{x:14.5},"My\n\n\n\n\n\nComp",{c:"#2277ff",w:1.5},"\n\nSymbols\n\n\n\n\nShift"], [{y:-0.625,x:6.5,c:"#ffb063",h:1.5},"Scroll\n\n\n\n\n\nDown",{x:4.5,h:1.5},"Scroll\n\n\n\n\n\nDown"], [{y:-0.75,x:3.5,c:"#ff8500"},"Mouse\n\n\n\n\n\nDown",{x:10.5},"Cursor\n\n\n\n\n\nDown"], -[{y:-0.875,x:2.5,c:"#cccccc",a:7},"",{x:1},"",{x:8.5,c:"#ffb063",a:4},"End",{x:1},"Page\n\n\n\n\n\nDown"], +[{y:-0.875,x:2.5},"Mouse\n\n\n\n\n\nDnLeft",{x:1},"Mouse\n\n\n\n\n\nDnRgt",{x:8.5,c:"#ffb063"},"End",{x:1},"Page\n\n\n\n\n\nDown"], [{y:-0.875,x:5.5,c:"#e6e067"},"Mute",{x:6.5,c:"#cccccc",a:7},""], -[{y:-0.875,c:"#2277ff",a:4,f2:1,w:1.5},"Capitals\nShift\n\n\n\n\nShift",{c:"#cccccc",a:7},"",{x:14.5},"",{c:"#2277ff",a:4,fa:[0,1,0,1],w:1.5},"\n\nCapitals\nShift\n\n\n\nShift"], -[{y:-0.375,x:3.5,c:"#77aaff"},"Option\n\n\nLAlt",{x:10.5,c:"#ffb063"},"Delete\n\n\nOption"], -[{y:-0.875,x:2.5,c:"#77aaff"},"Hyper",{x:1},"Cmd\n\n\nSuper",{x:8.5,c:"#ffb063"},"Insert\n\n\nCmd",{x:1,c:"#77aaff"},"Hyper"], +[{y:-0.875,c:"#2277ff",a:4,fa:[0,1,0,0,0,0,0],w:1.5},"Capitals\nShift\n\n\n\n\nShift",{c:"#cccccc",a:7},"",{x:14.5},"",{c:"#2277ff",a:4,fa:[0,1,0,1],w:1.5},"\n\nCapitals\nShift\n\n\n\nShift"], +[{y:-0.375,x:3.5,c:"#ff8500"},"Middle\n\n\n\n\n\nClick",{x:10.5,c:"#ffb063"},"Delete\n\n\nOption"], +[{y:-0.875,x:2.5,c:"#ff8500"},"Left\n\n\n\n\n\nClick",{x:1},"Right\n\n\n\n\n\nClick",{x:8.5,c:"#ffb063"},"Insert\n\n\nCmd",{x:1,c:"#77aaff"},"Hyper"], [{y:-0.75,x:0.5},"Ctrl\n\n\nLCtrl","Meh",{x:14.5},"Meh","Crtl\n\n\nRCtrl"], [{r:30,rx:6.5,ry:4.25,y:-1,x:1,c:"#ccbb00"},"Stop\n\n\nBrowser","Reload\n\n\nBrowser"], [{h:2},"< Web\n\n\nBrowser",{h:2},"Web >\n\n\nBrowser","Search\n\n\nBrowser"], -- cgit v1.2.1 From 6bafe444865e228ddcae2234549f1fd0931d89ad Mon Sep 17 00:00:00 2001 From: Nathan Sharfi Date: Tue, 3 May 2016 19:19:47 -0700 Subject: zweihander: comment out action_get_macro() --- keyboard/ergodox_ez/keymaps/zweihander-osx/keymap.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/keyboard/ergodox_ez/keymaps/zweihander-osx/keymap.c b/keyboard/ergodox_ez/keymaps/zweihander-osx/keymap.c index d019b731f2..a9980593fb 100644 --- a/keyboard/ergodox_ez/keymaps/zweihander-osx/keymap.c +++ b/keyboard/ergodox_ez/keymaps/zweihander-osx/keymap.c @@ -139,6 +139,8 @@ const uint16_t PROGMEM fn_actions[] = { [1] = ACTION_LAYER_TAP_TOGGLE(SYMB) // FN1 - Momentary Layer 1 (Symbols) }; +// action_get_macro() is unused — remove the “#if 0” and “#endif” lines to reenable +#if 0 const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { // MACRODOWN only works in this function @@ -153,6 +155,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) } return MACRO_NONE; }; +#endif // Runs just one time when the keyboard initializes. void matrix_init_user(void) { -- cgit v1.2.1 From 5daf24b1a5e2d6b07c90b87d9225db4d28aa2aa2 Mon Sep 17 00:00:00 2001 From: Nicholas Keene Date: Wed, 4 May 2016 22:17:47 -0500 Subject: The Ordinary Layout is the most natural and powerful layout for the Ergodox EZ. Come check it out. --- keyboard/ergodox_ez/keymaps/ordinary/keymap.c | 104 +- .../ergodox_ez/keymaps/ordinary/ordinary-base.png | Bin 99031 -> 100472 bytes .../ergodox_ez/keymaps/ordinary/ordinary-base.txt | 10 +- .../ergodox_ez/keymaps/ordinary/ordinary-media.png | Bin 123651 -> 124173 bytes .../ergodox_ez/keymaps/ordinary/ordinary-media.txt | 4 +- .../keymaps/ordinary/ordinary-symbol.png | Bin 103944 -> 103677 bytes .../keymaps/ordinary/ordinary-symbol.txt | 2 +- keyboard/ergodox_ez/keymaps/ordinary/ordinary.hex | 2411 ++++++++++---------- keyboard/ergodox_ez/keymaps/ordinary/readme.md | 2 +- 9 files changed, 1284 insertions(+), 1249 deletions(-) diff --git a/keyboard/ergodox_ez/keymaps/ordinary/keymap.c b/keyboard/ergodox_ez/keymaps/ordinary/keymap.c index 871bda672c..6905cbc7a6 100644 --- a/keyboard/ergodox_ez/keymaps/ordinary/keymap.c +++ b/keyboard/ergodox_ez/keymaps/ordinary/keymap.c @@ -4,25 +4,27 @@ #include "action_layer.h" #include "action_util.h" -#define BASE 0 // default layer -#define SYMB 1 // symbols layer -#define MDIA 2 // media layer -#define LOCK 3 // shift-lock layer - -#define LSymb 0 // left symbol-shift key -#define LMdia 1 // left media-shift key -#define LLock 2 // left shift-lock key -#define RSymb 3 // right symbol-shift key -#define RMdia 4 // right media-shift key -#define RLock 5 // right shift-lock key - -#define MUL 6 // mouse up left -#define MUR 7 // mouse up right -#define MDL 8 // mouse down left -#define MDR 9 // mouse down right +#define BASE 0 // default layer +#define SYMB 1 // symbols layer +#define MDIA 2 // media layer +#define LOCK 3 // shift-lock layer + +#define LCaps 10 // left caps-shift key +#define LSymb 11 // left symbol-shift key +#define LMdia 12 // left media-shift key +#define LLock 13 // left shift-lock key +#define RCaps 20 // right caps-shift key +#define RSymb 21 // right symbol-shift key +#define RMdia 22 // right media-shift key +#define RLock 23 // right shift-lock key + +#define MUL 30 // mouse up left +#define MUR 31 // mouse up right +#define MDL 32 // mouse down left +#define MDR 33 // mouse down right /* - * The Ordinary Layout for the Ergodox EZ keyboard, v3.14 + * The Ordinary Layout for the Ergodox EZ keyboard, v3.141 * * Modifications from default by Nicholas Keene ergodoxez@nicholaskeene.com * @@ -41,7 +43,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------| * | Symbol | A | S | D | F | G |------| |------| H | J | K | L | ; | '" Symbol | * |-----------+------+------+------+------+------|Shift | | Tab |------+------+------+------+------+-----------| - * | LShift | Z | X | C | V | B | -Tab | | | N | M | , | . | / | RShift | + * | LShift | Z | X | C | V | B | -Tab | | | N | M | , | . | / | LShift | * `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------' * | LCtrl | Meh |Hyper | LAlt | LGui | | RGui | RAlt | Hyper| Meh | RCtrl | * `-----------------------------------' `-----------------------------------' @@ -50,7 +52,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * ,------|------|------| |------+------+------. * | | | PgUp | | Up | | | * |Backsp| Del |------| |------| Enter| Space| - * | | | PgDn | | Down | | | + * | | | PgDn | | Down | | |Aa * `--------------------' `--------------------' */ [BASE] = KEYMAP( @@ -58,7 +60,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { F(LLock) ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 ,KC_ESC ,F(LMdia) ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,KC_LBRC ,M(LSymb) ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G -,KC_LSFT ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,LSFT(KC_TAB) +,M(LCaps) ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,LSFT(KC_TAB) ,KC_LCTL ,KC_MEH ,KC_HYPR,KC_LALT,KC_LGUI ,KC_HOME,KC_END ,KC_PGUP @@ -67,7 +69,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ,KC_MINS ,KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,F(RLock) ,KC_RBRC ,KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,F(RMdia) ,KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN ,F(RSymb) - ,KC_TAB ,KC_N ,KC_M ,KC_COMM,KC_DOT ,KC_SLSH ,KC_RSFT + ,KC_TAB ,KC_N ,KC_M ,KC_COMM,KC_DOT ,KC_SLSH ,M(RCaps) ,KC_RGUI,KC_RALT,KC_HYPR ,KC_MEH ,KC_RCTL ,KC_LEFT ,KC_RGHT ,KC_UP @@ -125,7 +127,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |------+---------+---------+---------+---------+---------| Up | | Up |---------+---------+---------+---------+---------+------| * | | Sleep |MouseLeft|MouseDown|MouseRght|Volume Dn|------| |------| Num Lock| Left | Down | Right | MyComp | | * |------+---------+---------+---------+---------+---------|Scroll| |Scroll|---------+---------+---------+---------+---------+------| - * | | |MouseDnLf|MouseDown|MouseDnRg| Mute | Down | | Down | | End | Down | PgDn | | | + * | | |MouseDnLf|MouseDown|MouseDnRg| Mute | Down | | Down | | End | Down | PgDn | RShift | | * `------+---------+---------+---------+---------+----------------' `----------------+---------+---------+---------+---------+------' * |LCtrl| Meh | MClick | LClick | R Click| |Cmd/Insrt|Optn/Del | Hyper | Meh |RCtrl| * `---------------------------------------------' `---------------------------------------------' @@ -151,7 +153,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ,KC_NO ,KC_F16 ,KC_F17 ,KC_F18 ,KC_F19 ,KC_F20 ,KC_TRNS ,KC_WH_U ,KC_PSCR ,KC_HOME ,KC_UP ,KC_PGUP ,KC_MAIL ,KC_TRNS ,KC_NLCK ,KC_LEFT ,KC_DOWN ,KC_RIGHT,KC_MYCM ,KC_TRNS - ,KC_WH_D ,KC_NO ,KC_END ,KC_DOWN ,KC_PGDN ,KC_NO ,KC_TRNS + ,KC_WH_D ,KC_NO ,KC_END ,KC_DOWN ,KC_PGDN ,KC_RSFT ,KC_TRNS ,GUI_T(KC_INS),ALT_T(KC_DEL),KC_HYPR ,KC_MEH ,KC_RCTL ,KC_MPRV ,KC_MNXT ,KC_VOLU @@ -213,6 +215,7 @@ const uint16_t PROGMEM fn_actions[] = { ,[RLock] = ACTION_MACRO_TAP(RLock) }; +uint16_t caps_shift = 0; uint16_t symb_shift = 0; // there are two shift keys for each layer, and two lock uint16_t mdia_shift = 0; // keys; we increment a counter for each key pressed and uint16_t shift_lock = 0; // decrement when released. @@ -223,15 +226,30 @@ bool mdia_lock = false; // key the lock flag is toggled const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { switch(id) { - // shift and lock between layers + // shift and lock between layers?L? + + case LCaps: // both caps-shift keys trigger Left Shift + case RCaps: // so they don't interfere with the magic combo + if (record->event.pressed && !record->tap.count) { + if(++caps_shift > 2) caps_shift = 2; + if(shift_lock) { + register_code(KC_CAPS); + unregister_code(KC_CAPS); + } + register_code(KC_LSFT); + } else { + if(--caps_shift < 0) caps_shift = 0; + if(!caps_shift) unregister_code(KC_LSFT); + } + break; case LSymb: if (record->event.pressed) { - symb_shift++; + if(++symb_shift > 2) symb_shift = 2; if(shift_lock) symb_lock = !symb_lock; layer_on(SYMB); } else { - symb_shift--; + if(--symb_shift < 0) symb_shift = 0; if((!symb_shift) && (!symb_lock)) layer_off(SYMB); } break; @@ -241,7 +259,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) if (record->tap.count && !shift_lock) { register_code(KC_TAB); } else { - mdia_shift++; + if(++mdia_shift > 2) mdia_shift = 2; if(shift_lock) mdia_lock = !mdia_lock; layer_on(MDIA); } @@ -249,7 +267,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) if(record->tap.count && !shift_lock) { unregister_code(KC_TAB); } else { - mdia_shift--; + if(--mdia_shift < 0) mdia_shift = 0; if((!mdia_shift) && (!mdia_lock)) layer_off(MDIA); } } @@ -257,20 +275,20 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) case LLock: if (record->event.pressed) { - shift_lock++; - if(symb_shift) symb_lock = !symb_lock; - if(mdia_shift) mdia_lock = !mdia_lock; - if(!record->tap.count && (keyboard_report->mods & (MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT)))) { + if(++shift_lock > 2) shift_lock = 2; + if(caps_shift) { register_code(KC_CAPS); unregister_code(KC_CAPS); } + if(symb_shift) symb_lock = !symb_lock; + if(mdia_shift) mdia_lock = !mdia_lock; layer_on(LOCK); } else { if(record->tap.count && !record->tap.interrupted && !symb_shift && !mdia_shift) { register_code(KC_GRV); unregister_code(KC_GRV); } - shift_lock--; + if(--shift_lock < 0) shift_lock = 0; if(!shift_lock) layer_off(LOCK); } break; @@ -280,7 +298,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) if (record->tap.count && !shift_lock) { register_code(KC_QUOT); } else { - symb_shift++; + if(++symb_shift > 2) symb_shift = 2; if(shift_lock) symb_lock = !symb_lock; layer_on(SYMB); } @@ -288,7 +306,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) if(record->tap.count && !shift_lock) { unregister_code(KC_QUOT); } else { - symb_shift--; + if(--symb_shift < 0) symb_shift = 0; if((!symb_shift) && (!symb_lock)) layer_off(SYMB); } } @@ -299,7 +317,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) if (record->tap.count && !shift_lock) { register_code(KC_BSLS); } else { - mdia_shift++; + if(++mdia_shift > 2) mdia_shift = 2; if(shift_lock) mdia_lock = !mdia_lock; layer_on(MDIA); } @@ -307,7 +325,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) if(record->tap.count && !shift_lock) { unregister_code(KC_BSLS); } else { - mdia_shift--; + if(--mdia_shift < 0) mdia_shift = 0; if((!mdia_shift) && (!mdia_lock)) layer_off(MDIA); } } @@ -315,20 +333,20 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) case RLock: if (record->event.pressed) { - shift_lock++; + if(++shift_lock > 2) shift_lock = 2; + if(caps_shift) { + register_code(KC_CAPS); + unregister_code(KC_CAPS); + } if(symb_shift) symb_lock = !symb_lock; if(mdia_shift) mdia_lock = !mdia_lock; - if(!record->tap.count && (keyboard_report->mods & (MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT)))) { - register_code(KC_CAPS); - unregister_code(KC_CAPS); - } layer_on(LOCK); } else { if (record->tap.count && !record->tap.interrupted && !symb_shift && !mdia_shift) { register_code(KC_EQL); unregister_code(KC_EQL); } - shift_lock--; + if(--shift_lock < 0) shift_lock = 0; if(!shift_lock) layer_off(LOCK); } break; diff --git a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-base.png b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-base.png index 69af8df4e1..2864031b1b 100644 Binary files a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-base.png and b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-base.png differ diff --git a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-base.txt b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-base.txt index 04792f2dfc..66cd05503e 100644 --- a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-base.txt +++ b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-base.txt @@ -14,12 +14,12 @@ [{y:-0.75,x:3.5,c:"#cccccc"},"C",{x:10.5},"<\n,"], [{y:-0.875,x:2.5},"X",{x:1},"V",{x:8.5},"M",{x:1},">\n."], [{y:-0.875,x:5.5},"B",{x:6.5},"N"], -[{y:-0.875,c:"#2277ff",fa:[0,1,0,1,0,0,0],w:1.5},"Capitals\nShift\n\n\n\n\nShift",{c:"#cccccc"},"Z",{x:14.5,f:3},"?\n/",{c:"#2277ff",w:1.5},"\n\nCapitals\nShift\n\n\n\nShift"], -[{y:-0.375,x:3.5,c:"#77aaff"},"Option\n\n\nLAlt",{x:10.5},"Option\n\n\nRAlt"], -[{y:-0.875,x:2.5},"Hyper",{x:1},"Cmd\n\n\nSuper",{x:8.5},"Cmd\n\n\nSuper",{x:1},"Hyper"], -[{y:-0.75,x:0.5},"Ctrl\n\n\nLCtrl","Meh",{x:14.5},"Meh","Ctrl\n\n\nRCtrl"], +[{y:-0.875,c:"#2277ff",w:1.5},"Capitals\n\n\n\n\n\nShift",{c:"#cccccc"},"Z",{x:14.5},"?\n/",{c:"#2277ff",w:1.5},"\n\nCapitals\n\n\n\n\nShift"], +[{y:-0.375,x:3.5,c:"#77aaff",f:3},"Option\n\n\nLAlt",{x:10.5,f:3},"Option\n\n\nRAlt"], +[{y:-0.875,x:2.5},"Hyper",{x:1,f:3},"Cmd\n\n\nSuper",{x:8.5,f:3},"Cmd\n\n\nSuper",{x:1},"Hyper"], +[{y:-0.75,x:0.5,f:3},"Ctrl\n\n\nLCtrl","Meh",{x:14.5},"Meh",{f:3},"Ctrl\n\n\nRCtrl"], [{r:30,rx:6.5,ry:4.25,y:-1,x:1,c:"#54d6de"},"Home","End"], -[{h:2},"< Del\n\n\nBackspace",{h:2},"Del >\n\n\nDelete","Page\n\n\n\n\n\nUp"], +[{f:3,h:2},"< Del\n\n\nBackspace",{f:3,h:2},"Del >\n\n\nDelete","Page\n\n\n\n\n\nUp"], [{x:2},"Page\n\n\n\n\n\nDown"], [{r:-30,rx:13,y:-1,x:-3},"Left","Right"], [{x:-3},"Up",{h:2},"Enter",{h:2},"Space"], diff --git a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.png b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.png index f3fed3cdbe..85b08cc092 100644 Binary files a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.png and b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.png differ diff --git a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.txt b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.txt index f1ecd5fdce..815e2f5baf 100644 --- a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.txt +++ b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.txt @@ -14,8 +14,8 @@ [{y:-0.75,x:3.5,c:"#ff8500"},"Mouse\n\n\n\n\n\nDown",{x:10.5},"Cursor\n\n\n\n\n\nDown"], [{y:-0.875,x:2.5},"Mouse\n\n\n\n\n\nDnLeft",{x:1},"Mouse\n\n\n\n\n\nDnRgt",{x:8.5,c:"#ffb063"},"End",{x:1},"Page\n\n\n\n\n\nDown"], [{y:-0.875,x:5.5,c:"#e6e067"},"Mute",{x:6.5,c:"#cccccc",a:7},""], -[{y:-0.875,c:"#2277ff",a:4,fa:[0,1,0,0,0,0,0],w:1.5},"Capitals\nShift\n\n\n\n\nShift",{c:"#cccccc",a:7},"",{x:14.5},"",{c:"#2277ff",a:4,fa:[0,1,0,1],w:1.5},"\n\nCapitals\nShift\n\n\n\nShift"], -[{y:-0.375,x:3.5,c:"#ff8500"},"Middle\n\n\n\n\n\nClick",{x:10.5,c:"#ffb063"},"Delete\n\n\nOption"], +[{y:-0.875,c:"#2277ff",a:4,w:1.5},"Capitals\n\n\n\n\n\nShift",{c:"#cccccc",a:7},"",{x:14.5,c:"#77aaff",a:4},"RShift",{c:"#2277ff",w:1.5},"\n\nCapitals\n\n\n\n\nShift"], +[{y:-0.375,x:3.5,c:"#ff8500"},"Middle\n\n\n\n\n\nClick",{x:10.5,c:"#ffb063",fa:[0,0,0,1]},"Delete\n\n\nOption"], [{y:-0.875,x:2.5,c:"#ff8500"},"Left\n\n\n\n\n\nClick",{x:1},"Right\n\n\n\n\n\nClick",{x:8.5,c:"#ffb063"},"Insert\n\n\nCmd",{x:1,c:"#77aaff"},"Hyper"], [{y:-0.75,x:0.5},"Ctrl\n\n\nLCtrl","Meh",{x:14.5},"Meh","Crtl\n\n\nRCtrl"], [{r:30,rx:6.5,ry:4.25,y:-1,x:1,c:"#ccbb00"},"Stop\n\n\nBrowser","Reload\n\n\nBrowser"], diff --git a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-symbol.png b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-symbol.png index 8a0cfd63f8..2cf2cb2b10 100644 Binary files a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-symbol.png and b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-symbol.png differ diff --git a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-symbol.txt b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-symbol.txt index 93f632e955..4b6a6cb95e 100644 --- a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-symbol.txt +++ b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-symbol.txt @@ -14,7 +14,7 @@ [{y:-0.75,x:3.5,c:"#bbddbb"},"[",{x:10.5,c:"#89b087"},"2"], [{y:-0.875,x:2.5,c:"#bbddbb"},"^",{x:1},"]",{x:8.5,c:"#89b087"},"1",{x:1},"3"], [{y:-0.875,x:5.5,c:"#bbddbb"},"~",{x:6.5},"\\"], -[{y:-0.875,c:"#2277ff",f2:1,w:1.5},"Capitals\nShift\n\n\n\n\nShift",{c:"#bbddbb"},"%",{x:14.5,c:"#89b087"},"-",{c:"#2277ff",fa:[0,1,0,1],w:1.5},"\n\nCapitals\nShift\n\n\n\nShift"], +[{y:-0.875,c:"#2277ff",w:1.5},"Capitals\n\n\n\n\n\nShift",{c:"#bbddbb"},"%",{x:14.5,c:"#89b087"},"-",{c:"#2277ff",w:1.5},"\n\nCapitals\n\n\n\n\nShift"], [{y:-0.375,x:3.5,c:"#77aaff"},"Option\n\n\nLAlt",{x:10.5,c:"#89b087"},".\n\n\nOption"], [{y:-0.875,x:2.5,c:"#77aaff"},"Hyper",{x:1},"Cmd\n\n\nSuper",{x:8.5,c:"#89b087"},"0\n\n\nCmd",{x:1},"=\n\n\nHyper"], [{y:-0.75,x:0.5,c:"#77aaff"},"Ctrl\n\n\nLCtrl","Meh",{x:14.5,c:"#89b087"},"+\n\n\nMeh","Enter\n\n\nCtrl"], diff --git a/keyboard/ergodox_ez/keymaps/ordinary/ordinary.hex b/keyboard/ergodox_ez/keymaps/ordinary/ordinary.hex index 6a42b7098a..25fdc51714 100644 --- a/keyboard/ergodox_ez/keymaps/ordinary/ordinary.hex +++ b/keyboard/ergodox_ez/keymaps/ordinary/ordinary.hex @@ -1,1198 +1,1215 @@ -:100000000C94C7020C940B030C940B030C940B037D -:100010000C940B030C940B030C940B030C940B0328 -:100020000C940B030C940B030C942A0E0C94FC0EF2 -:100030000C940B030C940B030C940B030C940B0308 -:100040000C940B030C947B230C940B030C940B0368 -:100050000C940B030C941F1D0C940B030C940B03BA -:100060000C940B030C940B030C940B030C940B03D8 -:100070000C940B030C940B030C940B030C940B03C8 -:100080000C940B030C940B030C940B030C940B03B8 -:100090000C940B030C940B030C940B030C940B03A8 -:1000A0000C940B030C940B030C940B031C034E03D6 -:1000B0009A0335035E032D044A044D0450045E0484 -:1000C000610F830F6E10830F6E10C50FE80F6E1057 -:1000D0003D1050104A134A138B138B13CD13091480 -:1000E000091609162114091618151815E31509160D -:1000F0000916F71500C801C802C803C804C805C816 -:10010000022001200030E100E00000001E00140089 -:1001100004001D0000074E001F001A0016001B00FF -:10012000000F4C002000080007000600E2002A0033 -:100130002100150009001900E3004B002200170000 -:100140000A00050000004A0029002F0000002B02D1 -:1001500000004D002D00300000002B00000050007A -:1001600023001C000B00110000004F0024001800A9 -:100170000D001000E700520025000C000E003600B4 -:10018000E6002C00260012000F003700000F2800A8 -:100190002700130033003800000751000520042019 -:1001A0000320E500E400000001000100010001005F -:1001B000E00000003A001E02200222020007510067 -:1001C0003B001F0221022302000F28003C002F02E7 -:1001D00026022F00E2002C003D00300227023000F2 -:1001E000E30052003E0024023500350200005000BA -:1001F0002900360200002B0000004F002D003702BE -:1002000000002B0200004A003F003102380031009C -:1002100000004D004000240021001E0027784B0004 -:100220004100250022001F0037744C0042002600C8 -:10023000230020002E7F2A004300380025022D00D5 -:100240002E774E000100010001000100287100001E -:100250000100010001000100E00000004400660010 -:10026000A60000000007B50045000630F200083087 -:10027000F60000006800F000F100F100F400B600A4 -:1002800069000730F3000930F500B4006A00A900E6 -:10029000AA00A8000000B8002900F9000000FA0038 -:1002A0000000B9000000F9000000FA000000AC00F6 -:1002B0006B004600530000000000AB006C004A00D9 -:1002C00050004D004978A9006D00520051005100C6 -:1002D0004C74AE006E004B004F004E00000FAD009E -:1002E0006F00B100B30000000007AA000100010088 -:1002F00001000100E40000000100010001003900DC -:1003000001000000290001000100010001000100BE -:1003100001000100010001000100010001000100D5 -:1003200001000100010001000100010001000100C5 -:1003300001000100010001000100010000000100B6 -:1003400001000100000001000000010001000100A7 -:100350000000010000000100010001000100010097 -:100360000000010001000100010001000100010086 -:100370000100010001000100010001000100010075 -:1003800001000100010001002A000100010001003C -:10039000010001000100010001003900010000001E -:1003A00016034500720067006F0044006F0078007C -:1003B000200045005A000000160345007200670047 -:1003C0006F0044006F007800200045005A000000D4 -:1003D0000403090409026D00040100A0FA090400E5 -:1003E000000103010100092111010001223F000762 -:1003F00005810308000A0904010001030102000944 -:100400002111010001224D000705820308000A099D -:10041000040200010300000009211101000122363D -:10042000000705830308000A090403000103000014 -:100430000009211101000122390007058403100081 -:10044000011201100100000008EDFE071301000178 -:1004500002000105010906A101050719E029E715B8 -:1004600000250195087501810205081901290595E6 -:100470000575019102950175039101050719002980 -:100480007715002501957875018102C00501098065 -:10049000A101850216010026B7001A01002AB70043 -:1004A000751095018100C0050C0901A10185031695 -:1004B0000100269C021A01002A9C027510950181F8 -:1004C00000C005010902A1010901A10005091901E6 -:1004D0002905150025019505750181029501750312 -:1004E00081010501093009311581257F95027508C3 -:1004F000810609381581257F950175088106050C4F -:100500000A38021581257F950175088106C0C0054E -:10051000010906A101050719E029E7150025019544 -:1005200008750181029501750881010508190129E5 -:10053000059505750191029501750391010507194E -:100540000029FF150025FF950675088100C00000F1 -:10055000000000000000000000010204060A0F175E -:10056000202C3A4A5D71879DB3C7DAE9F5FCFFFCA0 -:10057000F5E9DAC7B39D87715D4A3A2C20170F0A57 -:100580000604020100000000000000000000112429 -:100590001FBECFEFDAE0DEBFCDBF04B603FE24C03E -:1005A0008091F6019091F701A091F801B091F901C5 -:1005B0008730904BA740B04BB9F41092F6011092DF -:1005C000F7011092F8011092F90114BE84B7877FE9 -:1005D00084BF88E10FB6F8948093600010926000A9 -:1005E0000FBEE0E0FFE3099511E0A0E0B1E0E4E830 -:1005F000FAE402C005900D92A433B107D9F721E0C7 -:10060000A4E3B1E001C01D92A63FB207E1F70E944A -:10061000700B0C9440250C940000DC01462F50E038 -:100620004A30510508F05DC14A5A5F4F12962C912D -:100630001297FA010C94F02480913A0190913B01B9 -:100640002223F1F0019690933B0180933A0180912F -:10065000360190913701892B31F08091350191E07D -:1006600089278093350181E09AC015968C91807F0F -:100670002111BFC009F0D5C080913A0190913B0192 -:10068000019790933B0180933A01892B09F029C18E -:1006900080913501811125C181E0A8C015968C910A -:1006A000807F222349F12091360130913701882340 -:1006B00081F02115310569F48BE2C1C015968C914A -:1006C000807F222319F12091360130913701811169 -:1006D000B1C0809138019091390101969093390110 -:1006E00080933801232B31F08091340191E08927E8 -:1006F0008093340182E053C0882351F08091360109 -:1007000090913701892B21F48BE2A4C081119AC00A -:10071000809138019091390101979093390180932C -:100720003801892B09F0DDC0809134018111D9C0D5 -:1007300082E05CC015963C912223A1F180913601A4 -:100740009091370101969093370180933601809103 -:100750003A0190913B01892B31F08091350191E074 -:100760008927809335018091380190913901892B37 -:1007700031F08091340191E0892780933401307FFA -:1007800069F4E0910E01F0910F018081827231F0E5 -:1007900089E30E94D21189E30E949A1283E00E94A9 -:1007A0009D1A9FC0832F807FA1F030FD12C08091E1 -:1007B0003A0190913B01892B61F48091380190912D -:1007C0003901892B31F485E30E94D21185E30E941F -:1007D0009A128091360190913701019790933701D9 -:1007E00080933601892B09F07CC083E00E94BE1AF9 -:1007F00078C02091360130913701882329F02115E6 -:10080000310511F484E31BC080913A0190913B01C2 -:10081000019690933B0180933A01232B09F01DCF61 -:1008200022CF8091360190913701892B09F024CF96 -:1008300084E310C02115310509F04BCF81E30E94FC -:10084000D2114FC08091360190913701892B09F068 -:100850005FCF81E30E949A1244C015963C9121110A -:100860006DCF832F807F09F4B4CF30FDB2CF80915C -:100870003A0190913B01892B09F0ABCF809138016F -:1008800090913901892B09F0A4CF8EE20E94D211F8 -:100890008EE29DCF80EF90E005C080EF90E010C029 -:1008A00081EF90E0222329F00E94931F82EF90E0D5 -:1008B0000DC00E94FB1F82EF90E00FC081EF90E01F -:1008C000222339F00E94931F83EF90E00E94931F30 -:1008D00006C00E94FB1F83EF90E00E94FB1F0E9456 -:1008E000802080E090E008950895E0910E01F0915D -:1008F0000F018081827219F0259A2D9A06C00E94FC -:10090000A91081FDF9CF25982D988091B90181FF1B -:1009100003C0269A2E9A02C026982E988091B9017B -:1009200082FF03C0279A2F9A089527982F98089539 -:100930000C94750456985E9825982D9826982E98B4 -:1009400027982F988FEF90E09093890080938800EC -:1009500090938B0080938A0090938D0080938C00FD -:10096000259A2D9A2FEF80E792E021508040904009 -:10097000E1F700C00000269A2E9A2FEF80E792E060 -:10098000215080409040E1F700C00000279A2F9A44 -:100990002FEF80E792E0215080409040E1F700C0C7 -:1009A000000025982D982FEF80E792E0215080409D -:1009B0009040E1F700C0000026982E982FEF80E7C6 -:1009C00092E0215080409040E1F700C0000027985D -:1009D0002F9856985E9825982D9826982E982798A7 -:1009E0002F98089589EA8093800089E080938100A0 -:1009F00024982C983F988AB18F748AB96E98479A38 -:100A00008BB1806B8BB9769A0E949A040C94740413 -:100A100080E28093000180913C0181110EC00E9410 -:100A2000570581E080933C012FEF83ED90E3215047 -:100A300080409040E1F700C0000080E40E945D0526 -:100A40008093000181112EC00E94870580930001D0 -:100A5000811128C00E94870580930001811122C066 -:100A60008FE30E9487058093000181111BC00E94C3 -:100A70007F0580E40E945D0580930001811112C012 -:100A80008CE00E9487058093000181110BC00E94B9 -:100A9000870580930001811105C08FE30E948705BF -:100AA000809300010E947F058091000108951092BB -:100AB000B9008AE08093B800089594EA9093BC004E -:100AC0009091BC0097FFFCCF9091B900987F98302F -:100AD00021F0903111F081E008958093BB0084E80B -:100AE0008093BC008091BC0087FFFCCF8091B9004F -:100AF000887F883111F0803471F780E0089584E9AF -:100B00008093BC008091BC0084FDFCCF089580934D -:100B1000BB0084E88093BC008091BC0087FFFCCFC1 -:100B20009091B900987F81E0983209F480E00895AF -:100B300084E88093BC008091BC0087FFFCCF80914B -:100B4000BB00089580910001811115C080E40E94CE -:100B50005D058093000181110CC082E10E94870530 -:100B600080930001811105C08FEF0E94870580935B -:100B700000010E947F0584B1807F84B985B1807FA8 -:100B800085B98AB1837F8AB98BB1837F8BB93E984F -:100B9000469808950E940805809300010E94A205CE -:100BA00080B38C7080BB81B3836F81BBECE4F1E0D8 -:100BB000AEE3B1E011921D9281E0EA35F807D1F77A -:100BC0000C94F204BF92CF92DF92EF92FF920F93B8 -:100BD0001F93CF93DF9380910001882379F0809158 -:100BE0003D018F5F80933D01811108C00E9408057F -:100BF00080930001811102C00E949A040EE311E06B -:100C0000C0E0D0E0DD24D39482E0C82EEE24E3944B -:100C1000F12CC73000F580910001811162C080E4A1 -:100C20000E945D0580930001811112C082E10E9443 -:100C300087058093000181110BC0C7010C2E01C0F4 -:100C4000880F0A94EAF780950E9487058093000137 -:100C50000E947F0546C0CA30A1F028F4C83059F080 -:100C6000C93061F005C0CC3089F070F0CD3089F02A -:100C7000209A289810C0219A29980DC0229A2A9863 -:100C80000AC0239A2B9807C0529A01C0539A5B98C6 -:100C900002C03E9A4698E0EAEA95F1F78FB1799959 -:100CA0005AC092E081708D25892B7C9B02C090E018 -:100CB00001C094E0892B7D9B02C090E001C098E0C8 -:100CC000892B7E9B02C090E001C090E1892B9FB1EF -:100CD0009095991F9927991F9295990F907E892B2E -:100CE0000FC08091000181114BC080E40E945D051E -:100CF00080930001882389F1B12C0E947F058B2D00 -:100D0000F8019081981719F08083C09201010E9428 -:100D1000A20521960F5F1F4FCE30D10509F079CF84 -:100D200080910101882371F1815080930101882312 -:100D300039F08FE99FE00197F1F700C0000022C071 -:100D4000ACE4B1E0EEE3F1E081918D9391E0EC341D -:100D5000F907D1F717C090E0A5CF83E10E9487057E -:100D6000809300018111C8CF81E40E945D058093CA -:100D700000018111C1CF0E949805B82EB094BDCF5B -:100D800080E0BECF0E94980481E0DF91CF911F9157 -:100D90000F91FF90EF90DF90CF90BF900895E82FD4 -:100DA000F0E0E45BFE4F808108950895089596E099 -:100DB000799FF001112494E5899FE00DF11D112424 -:100DC000E60FF11DEE0FFF1FE050FF4F859194914C -:100DD0000895880F991F8C589040FC01859194913B -:100DE0000895880F991F8C509F4FFC018591949115 -:100DF00008950F931F93CF93DF93EC01811520E3A8 -:100E0000920730F5811530E2930708F0B1C08B3BB3 -:100E1000910588F4883A910508F058C0853A910503 -:100E200008F049C08430910508F043C08130910535 -:100E300009F4B2C1AEC18F3F910509F0D0F5803FF2 -:100E4000910508F092C0805E9109089790F1A1C1C8 -:100E5000C11581E5D807A8F4C23090E5D90708F09C -:100E60009FC0C11520E5D20709F486C008F092C0E2 -:100E7000C11580E4D80708F08CC18E011127106CD1 -:100E8000CCC1C11590E8D90758F4C11520E7D207A5 -:100E900008F07BC1C11530E6D30708F423C179C13E -:100EA000C11580E9D80708F074C18E011F70106A5F -:100EB000B4C18E01B2C1853A910509F470C1863A78 -:100EC000910509F46FC103E810E4A7C1883A9105C0 -:100ED00009F46BC1893A910509F46AC18A3A91050E -:100EE00009F469C18B3A910509F468C18C3A9105FE -:100EF00009F467C18D3A910509F466C1803B9105FB -:100F000009F465C18E3A910509F464C18F3A9105DF -:100F100009F463C1813B910509F462C1823B9105EB -:100F200009F461C1833B910509F460C1843B9105DB -:100F300009F45FC1853B910509F45EC1863B9105CB -:100F400009F45DC1873B910509F45CC1883B9105BB -:100F500009F45BC1893B910509F45AC18A3B9105AB -:100F600009F059C10AE216E458C18C01106555C157 -:100F70009F700E94F10652C10E942C169FEF24E33D -:100F80003CE0915020403040E1F700C000000E945A -:100F9000441D43C18091D50181608093D5013DC13D -:100FA0000E94EC1E811102C00E94D21E0E94091FE5 -:100FB00090E09093F6018093F501C23080E5D80768 -:100FC00021F48091F501816086C0C43090E5D90795 -:100FD00021F48091F50182607EC0C63020E5D20701 -:100FE00021F48091F501846076C0C83030E5D307E4 -:100FF00019F48091F50127C0CA3080E5D80721F4A3 -:101000008091F501806167C0CC3090E5D90721F46B -:101010008091F50180625FC0CE3020E5D20721F4D7 -:101020008091F501806457C0C03130E5D30721F4C9 -:101030008091F50180684FC0C23180E5D80729F45E -:101040008091F5018460886046C0C33090E5D9077F -:1010500021F48091F5018E7F3EC0C53020E5D20796 -:1010600021F48091F5018D7F36C0C73030E5D3077C -:1010700021F48091F5018B7F2EC0C93080E5D8071F -:1010800019F48091F50126C0CB3090E5D90721F401 -:101090008091F5018F7E1FC0CD3020E5D20721F46D -:1010A0008091F5018F7D17C0CF3030E5D30721F453 -:1010B0008091F5018F7B0FC0C13180E5D80721F405 -:1010C0008091F5018F7707C0C331D04531F480910D -:1010D000F5018B7F877F8093F5018091F5010E9458 -:1010E0000D1F9BC08D2F99278F70992781309105F7 -:1010F000E9F48E01037011279C0102C0220F331FF7 -:101100000A95E2F789011C68CE0164E0880F991FF7 -:101110006A95E1F788279370082B192B73E0CC0FA1 -:10112000DD1F7A95E1F7C076DD272CC0823091056E -:1011300029F41C2F0027016F106A6FC083309105BE -:1011400061F4CE018370992701E010E002C0000F26 -:10115000111F8A95E2F71C680EC0049709F05DC064 -:10116000CE018370992701E010E002C0000F111F2B -:101170008A95E2F71A6843E0CC0FDD1F4A95E1F744 -:10118000C07ED7700C2B1D2B48C08E011F701062C3 -:1011900044C000E010E041C001E010E03EC001E8C2 -:1011A00010E43BC002E810E438C002EE14E435C09D -:1011B00009EE14E432C00AEE14E42FC005EB14E487 -:1011C0002CC006EB14E429C007EB14E426C00CEC99 -:1011D00014E423C00DEC14E420C003E815E41DC0A2 -:1011E0000AE815E41AC002E915E417C004E915E499 -:1011F00014C001E216E411C003E216E40EC004E2DA -:1012000016E40BC005E216E408C006E216E405C0C9 -:1012100007E216E402C000E014E4C801DF91CF91B8 -:101220001F910F91089596E0799FF001112494E5A4 -:10123000899FE00DF11D1124E60FF11DEE0FFF1F38 -:10124000E050FF4F85919491803E9105E0F4803C01 -:10125000910558F58133910509F46FC048F489323E -:10126000910509F463C08A32910509F46DC072C01A -:1012700089339105E9F082389105D1F085339105E4 -:1012800009F44DC067C0833E910581F138F4803E7A -:101290009105B9F0823E9105D9F05CC0863E91057A -:1012A00061F1873E9105A1F155C00E94E9060895BC -:1012B0002091F50120FD02C021FF4CC080EE90E09E -:1012C00049C08091F50180FFF9CF89E390E042C0E9 -:1012D0008091F50182FF0EC08091F50184FF03C06B -:1012E00080E090E037C083EE90E034C08091F5015B -:1012F00082FFF2CF82EE90E02DC08091F50183FF56 -:101300000BC08091F50184FDEBCF87EE90E022C009 -:101310008091F50183FFF5CF86EE90E01BC08091B0 -:10132000F50185FF07C089E290E014C08091F501C6 -:1013300085FFF9CF85E390E00DC08091F50186FF30 -:1013400007C08AE290E006C08091F50186FFF9CFE0 -:1013500081E390E00E94F906089508950C94AD0988 -:1013600080916A010895CF93DF9300D01F92CDB78B -:10137000DEB72091EC01243019F523E029839B830B -:101380008A832093E9008FEF9091E800815095FDCA -:1013900006C095ED9A95F1F700008111F5CF809187 -:1013A000E80085FF0DC040E050E063E070E0CE0152 -:1013B00001960E941D0C8091E8008E778093E800D2 -:1013C0000F900F900F90DF91CF910895CF93DF93FF -:1013D00000D01F92CDB7DEB72091EC01243021F56B -:1013E00022E029839B838A8383E08093E9008FEF47 -:1013F0009091E800815095FD06C095ED9A95F1F722 -:1014000000008111F5CF8091E80085FF0DC040E01C -:1014100050E063E070E0CE0101960E941D0C8091C7 -:10142000E8008E778093E8000F900F900F90DF9187 -:10143000CF9108952091EC012430F1F422E0209323 -:10144000E9002FEF3091E800215035FD06C035ED61 -:101450003A95F1F700002111F5CF2091E80025FF22 -:101460000BC040E050E065E070E00E941D0C8091F0 -:10147000E8008E778093E8000895CF93DF93EC0126 -:101480008091EC01843009F046C090910C019923C1 -:10149000D9F090910D019923B9F08093E9008FEF75 -:1014A0009091E800815095FD06C095E19A95F1F77D -:1014B00000008111F5CF8091E80085FF2CC040E04D -:1014C00050E060E170E017C081E08093E9008FEFA9 -:1014D0009091E800815095FD06C095ED9A95F1F741 -:1014E00000008111F5CF8091E80085FF14C040E035 -:1014F00050E068E070E0CE010E941D0C8091E80091 -:101500008E778093E80080E1FE01AAE5B1E00190CA -:101510000D928A95E1F7DF91CF9108958091EB01CB -:10152000811109C00E94AF0D0E940C0E8091E20053 -:1015300084608093E20008951092EB01089508956D -:101540000C9468230E94DB1C0E946E230E94A91049 -:101550000C94AE0942E061EC81E00E94290D42E06A -:1015600061EC82E00E94290D42E061EC83E00E9480 -:10157000290D42E161EC84E00C94290D8091EE018B -:10158000833009F455C030F4813071F0823009F4B1 -:101590008EC008958A3009F47AC08B3009F460C097 -:1015A000893009F09CC020C08091ED01813A09F09A -:1015B00096C08091E800877F8093E8008091F101D8 -:1015C0009091F201892B21F060E080E090E003C06F -:1015D00060E18AE591E070E00E94660C8091E8008D -:1015E0008B778093E80008958091ED01813209F0B6 -:1015F00076C08091F1019091F201009719F0039764 -:1016000009F06DC08091E800877F8093E8008091A9 -:10161000E80082FD05C08091EC018111F8CF5FC028 -:101620008091F10080936A018091E8008B7753C02C -:101630008091ED01813A09F052C08091F1019091C1 -:10164000F201892B09F04BC08091E800877F8093DD -:10165000E8008091E80080FFFCCF80910C0136C04B -:101660008091ED018132D9F58091F1019091F201E3 -:10167000892BA9F58091E800877F8093E8000E947C -:101680005E0D8091EF0180930C010C942C168091DB -:10169000ED01813221F58091E800877F8093E80099 -:1016A0000E945E0D8091F00180936B0108958091FE -:1016B000ED01813AA1F48091E800877F8093E800F2 -:1016C0008091E80080FFFCCF80916B018093F10056 -:1016D0008091E8008E778093E8000C945E0D089569 -:1016E00084B7877F84BF88E10FB6F8948093600049 -:1016F000109260000FBE90E080E80FB6F8948093DF -:101700006100909361000FBE0E94F8100E94AF0D1F -:101710000E940C0E8091E20084608093E200789435 -:101720000E9487100E94FA1082E091E00E94A410AB -:101730000E9456238091EC01853069F40E949B1C25 -:101740008091EA018823B1F30E94C61C882391F39B -:101750000E94070CEFCF0E940011ECCF292F3327F6 -:1017600023303105A9F06CF42130310509F442C071 -:101770002230310509F043C08DE690E024ED33E0DE -:1017800042C021323105C9F02232310519F137C08A -:1017900099278130910541F08230910541F0892BE4 -:1017A00071F5E0EDF3E005C0E8EBF3E002C0E0EA3C -:1017B000F3E0849190E09F0126C0643000F5E62FAD -:1017C000F0E0EE0FFF1FEE5DFE4F2081318189E0DA -:1017D00090E019C0643098F4E62FF0E0DF01AA0F22 -:1017E000BB1FA65EBE4F2D913C91EA5EFE4F8081ED -:1017F00090E009C082E190E021E434E004C080E0A0 -:1018000090E020E030E0FA0131832083089580E108 -:1018100089BD82E189BD09B400FEFDCF8091D80069 -:101820008F7D8093D8008091E00082608093E000FB -:101830008091E00081FDFCCF0895CF92DF92EF927E -:10184000FF920F931F93CF93DF937C018B01EA01EB -:101850000E947F0D811131C0209731F088819981DC -:10186000081B190BE80EF91EC12CD12C011511050E -:1018700019F18091E80085FD14C08091E8008E7711 -:101880008093E800209741F0888199818C0D9D1DFF -:101890009983888385E011C00E947F0D882331F3EE -:1018A0000CC0F70181917F018093F1000150110973 -:1018B000FFEFCF1ADF0ADACF80E0DF91CF911F91DF -:1018C0000F91FF90EF90DF90CF9008952091F3015A -:1018D0003091F4012617370748F06115710539F486 -:1018E0002091E8002E772093E80001C0B901FC01A7 -:1018F00020E061157105B9F18091EC01882309F4AC -:1019000040C0853009F43FC08091E80083FD3DC0B0 -:101910008091E80082FF06C08091E80082FF26C027 -:1019200080E008958091E80080FFE3CF2091F300EC -:101930008091F20090E0922B6115710551F0883092 -:10194000910538F421912093F100615071090196BD -:10195000F3CF21E0089709F020E08091E8008E772E -:101960008093E800C6CF2111C7CFD6CF8091EC017C -:10197000882339F0853039F08091E80083FFCCCF9F -:1019800004C082E0089583E0089581E008952091E5 -:10199000F3013091F4012617370748F061157105FE -:1019A00039F42091E8002E772093E80001C0B901B6 -:1019B000FC0120E061157105C1F18091EC018823E3 -:1019C00009F441C0853009F440C08091E80083FDEE -:1019D0003EC08091E80082FF06C08091E80082FF4F -:1019E00027C080E008958091E80080FFE3CF209138 -:1019F000F3008091F20090E0922B6115710559F08F -:101A00008830910540F424912093F1003196615083 -:101A100071090196F2CF21E0089709F020E080914A -:101A2000E8008E778093E800C5CF2111C6CFD5CFCF -:101A30008091EC01882339F0853039F08091E800FD -:101A400083FFCBCF04C082E0089583E0089581E056 -:101A50000895982F973058F59093E900981739F02A -:101A60007091EC002091ED005091F00003C0242F04 -:101A7000762F50E021FF19C03091EB003E7F30936C -:101A8000EB003091ED003D7F3093ED003091EB00A5 -:101A900031603093EB007093EC002093ED00509395 -:101AA000F0002091EE0027FF07C09F5FD3CF8F701B -:101AB0008093E90081E0089580E008958091ED0130 -:101AC00087FD05C08091E80080FF0EC012C08091A4 -:101AD000E80082FD05C08091EC018111F8CF0895E6 -:101AE0008091E8008B7708C08091EC018111EACFEA -:101AF00008958091E8008E778093E80008958091A2 -:101B0000E4009091E50045E62091EC0020FF21C023 -:101B10002091E80020FD21C02091EC01222389F0D2 -:101B2000253089F02091EB0025FD0FC02091E400C5 -:101B30003091E5002817390739F3415041F0C901C8 -:101B4000E3CF82E0089583E0089581E0089584E082 -:101B500008952091E80022FFDFCF80E008950E94E1 -:101B60001D0E0E94250EE0EEF0E0808181608083F2 -:101B7000E8EDF0E080818F77808319BCA7EDB0E0BD -:101B80008C918E7F8C9380818F7E80831092EB016D -:101B900008950F931F93CF93DF930E941D0E0E9411 -:101BA000250EC8EDD0E088818F7788838881806892 -:101BB000888388818F7D888319BC1092EC011092F4 -:101BC000E8011092EA011092E90100EE10E0F8013C -:101BD00080818B7F808388818160888342E060E0A0 -:101BE00080E00E94290DE1EEF0E080818E7F80830D -:101BF000E2EEF0E080818160808380818860808374 -:101C0000F80180818E7F8083888180618883DF9165 -:101C1000CF911F910F910895E8EDF0E080818F7EC4 -:101C20008083E7EDF0E080818160808384E082BF83 -:101C300081E08093EB010C94C90DE8EDF0E0808128 -:101C40008E7F80831092E20008951092DA00109245 -:101C5000E10008951F920F920FB60F9211242F9357 -:101C60003F934F935F936F937F938F939F93AF9324 -:101C7000BF93EF93FF938091E10082FF0BC08091AF -:101C8000E20082FF07C08091E1008B7F8093E1003A -:101C90000E9486108091DA0080FF1FC08091D800DA -:101CA00080FF1BC08091DA008E7F8093DA008091E4 -:101CB000D90080FF0DC080E189BD82E189BD09B4F2 -:101CC00000FEFDCF81E08093EC010E948E0A05C0EA -:101CD00019BC1092EC010E949C0A8091E10080FFE7 -:101CE00019C08091E20080FF15C08091E2008E7FD4 -:101CF0008093E2008091E20080618093E200809115 -:101D0000D80080628093D80019BC85E08093EC01F4 -:101D10000E94A00A8091E10084FF30C08091E2001F -:101D200084FF2CC080E189BD82E189BD09B400FE39 -:101D3000FDCF8091D8008F7D8093D8008091E10005 -:101D40008F7E8093E1008091E2008F7E8093E2009D -:101D50008091E20081608093E2008091E801882315 -:101D600011F084E007C08091E30087FF02C083E0A8 -:101D700001C081E08093EC010E94A20A8091E10001 -:101D800083FF29C08091E20083FF25C08091E1009C -:101D9000877F8093E10082E08093EC011092E8015C -:101DA0008091E1008E7F8093E1008091E2008E7F40 -:101DB0008093E2008091E20080618093E20042E043 -:101DC00060E080E00E94290D8091F000886080939F -:101DD000F0000E949F0AFF91EF91BF91AF919F91F8 -:101DE0008F917F916F915F914F913F912F910F90C4 -:101DF0000FBE0F901F9018951F920F920FB60F9263 -:101E000011242F933F934F935F936F937F938F93FF -:101E10009F93AF93BF93CF93EF93FF93C091E9004C -:101E2000CF708091EC001092E9008091F000877FE4 -:101E30008093F00078940E94380F1092E90080910E -:101E4000F00088608093F000C093E900FF91EF916B -:101E5000CF91BF91AF919F918F917F916F915F9142 -:101E60004F913F912F910F900FBE0F901F9018959B -:101E70001F93CF93DF93CDB7DEB7AA970FB6F89431 -:101E8000DEBF0FBECDBFEDEEF1E08091F10081939A -:101E900021E0E53FF207C9F70E94BE0A8091E80001 -:101EA00083FF1CC12091ED013091EE01832F90E062 -:101EB0008A30910508F012C1FC01E05AFF4F0C94E2 -:101EC000F024203881F0223809F008C18091F10116 -:101ED0008F708093E9008091EB0085FB882780F963 -:101EE0001092E90006C08091E9019091EA019111F8 -:101EF00082609091E800977F9093E8008093F100D2 -:101F00001092F100C5C0822F8D7F09F0E7C0222317 -:101F100019F0223061F0E2C08091EF01813009F0C8 -:101F2000DDC0333009F080E08093EA0128C0809161 -:101F3000EF01811124C02091F1012F7009F4CEC06E -:101F40002093E9008091EB0080FF19C08091EB00A5 -:101F5000333011F4806211C080618093EB0081E026 -:101F600090E0022E01C0880F0A94EAF78093EA00FD -:101F70001092EA008091EB0088608093EB00109251 -:101F8000E9008091E800877F86C02111A7C01091E9 -:101F9000EF011F778091E3008078812B8093E3002D -:101FA0008091E800877F8093E8000E945E0D809119 -:101FB000E80080FFFCCF8091E30080688093E3001D -:101FC000112311F083E001C082E08093EC0186C010 -:101FD0002058223008F082C08091EF019091F001EA -:101FE0008C3D23E0920779F583E08A838AE2898336 -:101FF0004FB7F894DE01139620E03EE051E2E32F64 -:10200000F0E050935700E49120FF03C0E295EF7099 -:102010003F5FEF708E2F90E0EA3010F0C79601C05E -:10202000C0968D939D932F5F243149F74FBF8091C8 -:10203000E800877F8093E8006AE270E0CE010196B5 -:102040000E94660C14C0AE014F5F5F4F6091F101BA -:102050000E94AE0B009709F441C02091E800277F51 -:102060002093E800BC0189819A810E94C70C80916D -:10207000E8008B778093E80031C0203879F58091B3 -:10208000E800877F8093E8008091E8018093F10069 -:102090008091E8008E778093E8000E945E0D1EC05C -:1020A00021111CC09091EF019230C0F48091E800A2 -:1020B000877F8093E8009093E8010E945E0D8091F5 -:1020C000E801811104C08091E30087FF02C084E031 -:1020D00001C081E08093EC010E94AA0A8091E8008F -:1020E00083FF0AC08091E800877F8093E800809199 -:1020F000EB0080628093EB00AA960FB6F894DEBFE7 -:102100000FBECDBFDF91CF911F9108950895CF935A -:102110008091EC018823B1F08091E9008F7090915B -:10212000EC0090FF02C090E801C090E0C92FC82BDE -:102130001092E9008091E80083FD0E94380FCF7073 -:10214000C093E900CF91089590937101809370013D -:102150000895E0917001F0917101309721F00190A4 -:10216000F081E02D099480E00895E0917001F091F4 -:102170007101309721F00280F381E02D09940895D8 -:10218000E0917001F0917101309721F00480F581A8 -:10219000E02D0994089520916E0130916F0182170E -:1021A000930771F090936F0180936E01E09170013D -:1021B000F0917101309721F00680F781E02D0994AC -:1021C000089520916C0130916D018217930771F091 -:1021D00090936D0180936C01E0917001F091710119 -:1021E000309721F00084F185E02D09940895089539 -:1021F0000C94F7100E94E11C0E94CA050C94A71DC4 -:10220000CF92DF92EF92FF920F931F93CF93DF93C2 -:10221000CDB7DEB72B970FB6F894DEBF0FBECDBF9C -:102220000E94E20533E7E32E31E0F32E00E010E0F8 -:10223000C02E802F0E94CF06F701D1907F01D826B3 -:10224000B1F40F5F1F4F0E30110591F78FEF8983A7 -:102250008A831B820E94EA1C8160782F9D838C8375 -:1022600049815A816B818D810E94A31141C0909157 -:10227000D50191FF04C08B870E94D5068B8520E095 -:1022800030E04D2D50E0922FBA01022E02C075951C -:1022900067950A94E2F760FF25C02E83CF82EE2473 -:1022A000E394F12C02C0EE0CFF1C9A95E2F790E04B -:1022B0008E219F2121E0892B09F420E028870E94AC -:1022C000EA1C8160782F9A8789874E815F816885B3 -:1022D0008A850E94A311F801ED58FE4F80818E255A -:1022E000808306C02F5F3F4F2630310561F6A9CFAE -:1022F0000E948B20109172010E94A9101817A1F062 -:102300000E94A910809372012B960FB6F894DEBF3D -:102310000FBECDBFDF91CF911F910F91FF90EF9036 -:10232000DF90CF900C94AE092B960FB6F894DEBFD9 -:102330000FBECDBFDF91CF911F910F91FF90EF9016 -:10234000DF90CF900895CF93DF93CDB7DEB72B9773 -:102350000FB6F894DEBF0FBECDBF4F835887698795 -:102360007A878B87DE01119686E0FD0111928A95AE -:10237000E9F785E0FE01379601900D928A95E1F725 -:1023800049815A816B817C818D819E810E94F818E0 -:102390002B960FB6F894DEBF0FBECDBFDF91CF9165 -:1023A00008950895CF93C82F882309F4C1C08238B7 -:1023B00059F40E94A91081FDBBC089E30E94A21BB1 -:1023C0000E946C1C89E30CC0833879F40E94A91028 -:1023D00080FDAEC083E50E94A21B0E946C1C83E5B9 -:1023E0000E94E21BCF910C946C1C843859F40E941B -:1023F000A91082FD9DC087E40E94A21B0E946C1C54 -:1024000087E4EECF8CEF8C0F813A48F48C2F0E943A -:10241000BE2281118DC08C2F0E94A21BE3CF80E2CF -:102420008C0F883048F4C77081E001C0880FCA95CE -:10243000EAF70E94231CD6CF8BE58C0F833078F40B -:10244000C53A29F0C63A31F482E890E005C081E847 -:1024500090E002C083E890E0CF910C94CB1088E527 -:102460008C0F833108F064C0C83A39F1C93A41F1A0 -:10247000CA3A49F1CB3A51F1CC3A59F1CD3A61F12E -:10248000C03B69F1CE3A71F1CF3A79F1C13B81F1AC -:10249000C23B89F1C33B91F1C43B99F1C53BA1F12A -:1024A000C63BA9F1C73BB1F1C83BB9F1C93BC1F18A -:1024B000CA3BC9F58AE292E038C082EE90E035C0AE -:1024C00089EE90E032C08AEE90E02FC085EB90E07C -:1024D0002CC086EB90E029C087EB90E026C08CEC06 -:1024E00090E023C08DEC90E020C083E891E01DC017 -:1024F0008AE891E01AC082E991E017C084E991E08E -:1025000014C081E292E011C083E292E00EC084E246 -:1025100092E00BC085E292E008C086E292E005C03E -:1025200087E292E002C080E090E0CF910C94E1104D -:10253000CF910895882309F44BC0823859F40E9442 -:10254000A91081FF45C089E30E94A21B0E946C1C58 -:1025500089E30CC0833871F40E94A91080FF38C051 -:1025600083E50E94A21B0E946C1C83E50E94E21B73 -:102570000C946C1C843859F40E94A91082FF28C066 -:1025800087E40E94A21B0E946C1C87E4EFCF9CEFA3 -:10259000980F913A58F390E2980F983050F4877062 -:1025A00091E001C0990F8A95EAF7892F0E94291CB2 -:1025B000DFCF9BE5980F933020F480E090E00C94FF -:1025C000CB10885A833120F480E090E00C94E11025 -:1025D0000895882321F00E94231C0C946C1C0895FC -:1025E000882321F00E94291C0C946C1C0895CF9222 -:1025F000DF92EF92FF920F931F93CF93DF93CDB7AC -:10260000DEB728970FB6F894DEBF0FBECDBF8C01A2 -:1026100085E0F801DE01119601900D928A95E1F7AF -:10262000F801D080E180F280558152955F7023815E -:102630003481232B39F0FFEFEF1206C081E0DF1267 -:1026400003C003C081E001C080E080FDE2C2C80198 -:102650005F830E94D111D982EA8269817A818F2DAC -:102660000E949E1B9E8388870E94521B0E94251AEF -:102670004E815F816885FF2029F00E94401C68859B -:102680005F814E81E42FE295EF70F0E0E659FF4F55 -:102690000C94F024842F807F142F1F70882311F056 -:1026A0001295107FFF20B1F0112309F467C280E278 -:1026B000860F883028F4812F68870E94231C04C06D -:1026C000812F68870E94331C688568870E946C1C74 -:1026D000688554C2862F68870E949A1268851123E4 -:1026E00009F497C2605E812F683018F40E94291C9B -:1026F00002C00E94391C28960FB6F894DEBF0FBEA8 -:10270000CDBFDF91CF911F910F91FF90EF90DF90A0 -:10271000CF900C946C1C242F207F842F8F7020323C -:1027200011F08295807F662319F0613019F12BC07A -:10273000FF20B1F0552309F493C1513009F090C145 -:1027400028960FB6F894DEBF0FBECDBFDF91CF91B4 -:102750001F910F91FF90EF90DF90CF900C94531C3E -:10276000552319F0513009F454C28E830E94561C2F -:102770008E8189C1FF2021F0523008F04AC270C119 -:10278000511147C280C1FF2021F0552309F468C1CF -:10279000F5C1552309F477C105C2242F2695269546 -:1027A000237030E02115310521F021303105C9F0C9 -:1027B00030C2FF2021F0862F942F937002C080E05A -:1027C00090E028960FB6F894DEBF0FBECDBFDF9124 -:1027D000CF911F910F91FF90EF90DF90CF900C94CD -:1027E000CB10FF2021F0862F942F937002C080E041 -:1027F00090E028960FB6F894DEBF0FBECDBFDF91F4 -:10280000CF911F910F91FF90EF90DF90CF900C949C -:10281000E110862FFF2019F00E94931F02C00E9432 -:10282000FB1F28960FB6F894DEBF0FBECDBFDF9119 -:10283000CF911F910F91FF90EF90DF90CF900C946C -:102840008020842F837009F076C0F110E2C1262F1A -:10285000229526952770220F220F862F8F70C82E63 -:10286000D12CE12CF12C022E04C0CC0CDD1CEE1C72 -:10287000FF1C0A94D2F764FF10C06FE070E080E0A4 -:1028800090E004C0660F771F881F991F2A95D2F722 -:10289000609570958095909503C060E070E0CB01E5 -:1028A000242F269526952370422F50E04230510563 -:1028B000D1F04330510559F16C297D298E299F298A -:1028C0004130510541F128960FB6F894DEBF0FBE96 -:1028D000CDBFDF91CF911F910F91FF90EF90DF90CF -:1028E000CF900C944A1A6C297D298E299F2928960D -:1028F0000FB6F894DEBF0FBECDBFDF91CF911F9111 -:102900000F91FF90EF90DF90CF900C94641A0E948B -:102910004A1AC701B60128960FB6F894DEBF0FBE5B -:10292000CDBFDF91CF911F910F91FF90EF90DF907E -:10293000CF900C94301AFF2019F0842F817001C0C1 -:102940008695882309F465C1262F22952695277040 -:10295000220F220F862F8F70C82ED12CE12CF12C44 -:10296000022E04C0CC0CDD1CEE1CFF1C0A94D2F716 -:1029700064FF10C06FE070E080E090E004C0660F7C -:10298000771F881F991F2A95D2F7609570958095BB -:10299000909503C060E070E0CB01242F269526952A -:1029A0002370422F50E042305105D1F043305105A1 -:1029B00059F16C297D298E299F294130510541F11A -:1029C00028960FB6F894DEBF0FBECDBFDF91CF9132 -:1029D0001F910F91FF90EF90DF90CF900C941E1BF2 -:1029E0006C297D298E299F2928960FB6F894DEBF81 -:1029F0000FBECDBFDF91CF911F910F91FF90EF9050 -:102A0000DF90CF900C94381B0E941E1BC701B601AB -:102A100028960FB6F894DEBF0FBECDBFDF91CF91E1 -:102A20001F910F91FF90EF90DF90CF900C94041BBB -:102A3000603FC9F118F4603E50F49BC0623F09F456 -:102A400060C008F44AC0633F09F46FC092C0162FFB -:102A50001F70842F8F71FF2099F00E949D1A812F83 -:102A600028960FB6F894DEBF0FBECDBFDF91CF9191 -:102A70001F910F91FF90EF90DF90CF900C94E9128F -:102A80000E94BE1A812F28960FB6F894DEBF0FBEA3 -:102A9000CDBFDF91CF911F910F91FF90EF90DF900D -:102AA000CF900C94F012FF20A1F05111B2C0842FEE -:102AB0008F7128960FB6F894DEBF0FBECDBFDF91A1 -:102AC000CF911F910F91FF90EF90DF90CF900C94DA -:102AD000E31A523008F09DC0EACFFF20A1F0842F06 -:102AE0008F7128960FB6F894DEBF0FBECDBFDF9171 -:102AF000CF911F910F91FF90EF90DF90CF900C94AA -:102B00009D1AFF2061F3842F8F7128960FB6F894D9 -:102B1000DEBF0FBECDBFDF91CF911F910F91FF9010 -:102B2000EF90DF90CF900C94BE1AFF2091F0842F8D -:102B30008F7128960FB6F894DEBF0FBECDBFDF9120 -:102B4000CF911F910F91FF90EF90DF90CF900C9459 -:102B5000881A28960FB6F894DEBF0FBECDBFDF915E -:102B6000CF911F910F91FF90EF90DF90CF900C9439 -:102B70007E1AFF20A1F0552309F4B1CF862F2896A5 -:102B80000FB6F894DEBF0FBECDBFDF91CF911F917E -:102B90000F91FF90EF90DF90CF900C94D2115523BE -:102BA00009F4B1CF862F28960FB6F894DEBF0FBE7A -:102BB000CDBFDF91CF911F910F91FF90EF90DF90EC -:102BC000CF900C949A124F70C8010E940D03289662 -:102BD0000FB6F894DEBF0FBECDBFDF91CF911F912E -:102BE0000F91FF90EF90DF90CF900C94A5194F704C -:102BF000C80128960FB6F894DEBF0FBECDBFDF9197 -:102C0000CF911F910F91FF90EF90DF90CF900C9498 -:102C1000D60628960FB6F894DEBF0FBECDBFDF9163 -:102C2000CF911F910F91FF90EF90DF90CF9008957B -:102C30000E94401C0E94501C0E94151C0E946C1C8B -:102C40000E942C210E94802080E090E00E94CB1006 -:102C500080E090E00C94E1100E94301C0C94181657 -:102C60000E94931B292F22952F7030E02C303105C4 -:102C70004CF42A3031056CF42250310922303105F0 -:102C800090F407C02C30310551F02F30310539F068 -:102C90000AC0803E10F0803F31F481E0089593FB3C -:102CA000882780F9089580E00895CF93DF9300D0BE -:102CB00000D01F92CDB7DEB70F900F900F900F90FE -:102CC0000F90DF91CF910895CF93DF9300D000D084 -:102CD00000D0CDB7DEB726960FB6F894DEBF0FBE94 -:102CE000CDBFDF91CF9108951F93CF93DF93C09114 -:102CF000810116E080918201C81799F0D0E01C9FF5 -:102D0000F0011D9FF00D1124ED57FE4F40815181C0 -:102D100062817381848195810E9464162196C770B7 -:102D2000E9CFDF91CF911F9108954091B301509168 -:102D3000B4016091B5017091B6018091B701909195 -:102D4000B8010C946416CF938091B80182958F706E -:102D500009F05FC08091B501882309F45AC0209121 -:102D60008101A09182016091B3017091B4018091C1 -:102D7000B6019091B70131E06F3F09F030E0B32F19 -:102D8000C6E02A1709F445C0009721F07F3F21F4DF -:102D90004B2F03C041E001C040E030E040FD35C0B2 -:102DA000C29FF001C39FF00D1124ED57FE4F4181EA -:102DB00074132BC04081641328C04281411125C087 -:102DC000438154814817590710F441505109481B59 -:102DD000590B483C5105C8F48091B8018F7080614F -:102DE0008093B80186E0829FF001839FF00D11244B -:102DF000E857FE4F80818F708061808383EB91E084 -:102E00000E94F712CF910C9474162F5F3F4F2770DA -:102E1000B8CFCF910895CF92DF92EF92FF920F93A8 -:102E20001F93CF93DF93CDB7DEB762970FB6F894B9 -:102E3000DEBF0FBECDBF8C0185E0F801DE011D961F -:102E400001900D928A95E1F7D8014C9111965C9111 -:102E5000119712966C9112971396ED90FC9014971F -:102E60007091B301E091B4012091B6013091B701A6 -:102E70002115310531F0EF3F31F481E07F3F19F446 -:102E800003C081E001C080E0B82FB170CB2E80FD7F -:102E90006CC1D090B501DD2009F4F5C0F091B80106 -:102EA000E216F30638F0C701821B930B883C9105AC -:102EB00048F09BC0209530952E0D3F1D283C3105D4 -:102EC00008F093C08F2F807F09F052C0E51314C023 -:102ED000741312C0D62E61110FC0FF70F061F09311 -:102EE000B8010E94951683EB91E00E94F712809141 -:102EF000B801F80185836CC1EF2831F05F3F31F4F0 -:102F000081E04F3F19F403C081E001C080E080FD03 -:102F100003C081E0862701C080E0F82FF170FF2E0A -:102F200080FF1CC0809181012091820136E08217D0 -:102F300009F428C190E0389FF001399FF00D112469 -:102F4000ED57FE4F7181571306C07081471303C0C0 -:102F50007281671303C001968770E9CFD62E66236E -:102F600009F436C18091B80181608093B80153C0E3 -:102F7000E51308C0741306C0611104C0D80115968A -:102F8000FC93AEC04D875E878D859E856A8B0E94BF -:102F900030166A89882329F1D62E662311F12091F3 -:102FA000B801822F82958F7090E002970CF460C078 -:102FB0008091B3019091B40198878F831986FB8625 -:102FC000EA862C87CE01079651C0E51731F14D876F -:102FD0005E878D859E856A8B0E9430166A89811175 -:102FE0002EC0C8010E94F712A4C08F2F807F69F7FE -:102FF0007E2DF98AE88A89890E94551683EB91E033 -:103000000E94F712E3EBF1E086E0DF011D928A9562 -:10301000E9F70E949516D12CDBC07413D8CF61114B -:10302000D6CFD8011596FC93C8010E94F712E3EBA6 -:10303000F1E086E0DF011D928A95E9F7C9C0D62E3E -:10304000662379F22091B801822F82958F7090E0EB -:10305000029774F08091B3019091B4019A838983AF -:103060001B82FD82EC822E83CE0101960E94F71214 -:1030700086E0F801A3EBB1E001900D928A95E1F7AB -:103080000E94A3166FC0E216F30628F0C701821B48 -:10309000930B9C0104C0209530952E0D3F1D283CBC -:1030A000310508F052C0D62E662309F49ACFE513F5 -:1030B0002CC074132AC08091B80180FD1DC0982FC8 -:1030C00092959F70C9F0D80115968C9315979F30F3 -:1030D00039F09F5F9295907F8F70892B15968C9316 -:1030E000C8010E94F71286E0F801A3EBB1E001905D -:1030F0000D928A95E1F736C086E0F801A3EBB1E0C6 -:1031000001900D928A95E1F763C04D875E878D85AA -:103110009E850E943016882379F086E0F801A3EBA3 -:10312000B1E001900D928A95E1F70E94A3160E94EA -:103130009516DD24D3944CC08091B80181608093B2 -:10314000B801C8010E94F71243C07E2DF98AE88AAF -:1031500089890E945516E3EBF1E086E0DF011D92BC -:103160008A95E9F70E94951633C0662309F439CF92 -:103170004D875E878D859E850E943016882309F4D1 -:1031800030CFCBCF4D875E878D859E850E94931B68 -:10319000292F22952F7030E0223031052CF49F70BA -:1031A00041F0811106C00CC0243031052CF49F7011 -:1031B00049F4805E883020F0C8010E94F712CF2CBD -:1031C000DC2C06C0D80115969C91907F91F7F8CF22 -:1031D0008D2D62960FB6F894DEBF0FBECDBFDF9186 -:1031E000CF911F910F91FF90EF90DF90CF900895B6 -:1031F0001F93CF93DF93CDB7DEB72C970FB6F8941C -:10320000DEBF0FBECDBF4F83588769877A878B8714 -:103210009C87CE0107960E940B178823C1F02F814F -:1032200038858A859B85892B31F03F3F11F080E0FE -:1032300003C02F3FE1F781E0811147C04F815885DE -:1032400069857A858B859C850E9464163EC086E0E0 -:10325000FE013796DE01119601900D928A95E1F7F5 -:10326000FF81E8854A855B854115510531F0EF3FC7 -:1032700031F481E0FF3F19F403C081E001C080E038 -:1032800080FD23C02091820130E0C9010196877042 -:1032900099276091810170E086179707F1F1F98312 -:1032A000EA835D834C8396E0929FD001939FB00D9B -:1032B0001124AD57BE4FFE01319601900D929A95A3 -:1032C000E1F7809382010E94741616E080918101DB -:1032D00090918201891779F1189FC00111248D57AF -:1032E0009E4F0E940B17882331F1E09181011E9FB0 -:1032F000F0011124ED57FE4F4081518162817381AD -:10330000848195810E9464168091810190E00196EC -:103310008770992780938101D9CF0E942C16109233 -:10332000820110928101E3EBF1E086E0DF011D9262 -:103330008A95E9F7CACF2C960FB6F894DEBF0FBE78 -:10334000CDBFDF91CF911F910895EF92FF920F9320 -:103350001F93CF93DF93FC01009709F46FC0F12C0A -:10336000EE24E394EF0121968491843740F4843075 -:1033700008F055C0813081F0823021F15FC085377F -:1033800009F447C0C0F19CE7980F903708F056C089 -:103390008F770E949A1245C08F010E5F1F4FFE016A -:1033A000849190E2980F983050F48770FE2D01C000 -:1033B000FF0F8A95EAF78F2F0E94431C15C00E94C9 -:1033C000D21114C08F010E5F1F4FFE01849190E255 -:1033D000980F983068F48770FE2D01C0FF0F8A9512 -:1033E000EAF78F2F0E94491C0E946C1CE80119C04B -:1033F0000E949A12FBCFCF010296FE01C491CC230A -:1034000061F0EFE9FFE03197F1F700C00000C15033 -:10341000F6CFCF010296FE01F490EC0102C00E94AB -:10342000D2118F2D882341F0EFE9FFE03197F1F7BA -:1034300000C000008150F6CFFE0194CFDF91CF9104 -:103440001F910F91FF90EF90089508956093BD0133 -:103450007093BE018093BF019093C0010C94181625 -:103460000F931F930091BD011091BE012091BF01E8 -:103470003091C001062B172B282B392B0093BD014F -:103480001093BE012093BF013093C0011F910F9193 -:103490000C9418160F931F930091BD011091BE015B -:1034A0002091BF013091C00106231723282339231F -:1034B0000093BD011093BE012093BF013093C00162 -:1034C0001F910F910C9418160F931F930091BD013B -:1034D0001091BE012091BF013091C001062717272E -:1034E000282739270093BD011093BE012093BF0107 -:1034F0003093C0011F910F910C9418161092B901CE -:103500001092BA011092BB011092BC010C941816D3 -:1035100041E050E060E070E004C0440F551F661FBA -:10352000771F8A95D2F74093B9015093BA016093FF -:10353000BB017093BC010C94181641E050E060E0B0 -:1035400070E004C0440F551F661F771F8A95D2F79D -:103550008091B9019091BA01A091BB01B091BC01D9 -:10356000842B952BA62BB72B8093B9019093BA018E -:10357000A093BB01B093BC010C94181641E050E03D -:1035800060E070E004C0440F551F661F771F8A95E6 -:10359000D2F740955095609570958091B9019091C2 -:1035A000BA01A091BB01B091BC0184239523A6234D -:1035B000B7238093B9019093BA01A093BB01B09354 -:1035C000BC010C94181641E050E060E070E004C0CB -:1035D000440F551F661F771F8A95D2F78091B90156 -:1035E0009091BA01A091BB01B091BC0184279527AD -:1035F000A627B7278093B9019093BA01A093BB0186 -:10360000B093BC010C9418160F931F930091B9014D -:103610001091BA012091BB013091BC01062B172BF0 -:10362000282B392B0093B9011093BA012093BB01C9 -:103630003093BC011F910F910C9418160F931F9398 -:103640000091B9011091BA012091BB013091BC01E8 -:1036500006231723282339230093B9011093BA01B5 -:103660002093BB013093BC011F910F910C9418164D -:103670000F931F930091B9011091BA012091BB01E2 -:103680003091BC0106271727282739270093B90155 -:103690001093BA012093BB013093BC011F910F918D -:1036A0000C9418160895CF92DF92EF92FF920F9329 -:1036B0001F93CF93DF93EC01C090BD01D090BE016A -:1036C000E090BF01F090C0018091B9019091BA01E2 -:1036D000A091BB01B091BC01C82AD92AEA2AFB2AD1 -:1036E0000FE110E0B701A601002E04C076956795A2 -:1036F000579547950A94D2F740FD05C0015011092E -:1037000088F780E007C0BE01802F0E94130901974F -:10371000A9F3802FDF91CF911F910F91FF90EF9030 -:10372000DF90CF900895CF93DF93EC010E94531B5D -:10373000BE010E941309DF91CF910895CB010E9431 -:10374000931B089590910C019923D9F090910D014C -:103750009923B9F0982F9695969596959F3088F570 -:10376000E0910E01F0910F01E90FF11D877021E04A -:1037700030E001C0220F8A95EAF78181822B818394 -:10378000089540910E0150910F0120E030E09FEF2D -:10379000FA01E20FF31F6281681799F09F3F19F455 -:1037A000611101C0922F2F5F3F4F2E30310581F7FD -:1037B0009F3F39F0FA01E90FF11D97FDFA958283D9 -:1037C0000895089590910C019923E1F090910D01D5 -:1037D0009923C1F0982F9695969596959F3020F550 -:1037E000E0910E01F0910F01E90FF11D877021E0CA -:1037F00030E001C0220F8A95EAF7209581812823C5 -:103800002183089540910E0150910F0120E030E096 -:10381000FA01E20FF31F9281981301C012822F5F09 -:103820003F4F2E303105A1F7089581E090E0E091FF -:103830000E01F0910F01E80FF91F108201968031FF -:103840009105A9F708959091D401982B9093D401F4 -:10385000089580959091D40198239093D401089570 -:103860001092D40108959091D301982B9093D30195 -:10387000089580959091D30198239093D301089552 -:103880001092D30108959091D201982B9093D20178 -:10389000089580959091D20198239093D201089534 -:1038A0001092D20108958093C10108951092C10130 -:1038B000089540910E0150910F0120E030E080E02A -:1038C000FA01E20FF31F918191118F5F2F5F3F4F3C -:1038D0002F303105A9F70895E0910E01F0910F0105 -:1038E0008091D4018083E0910E01F0910F018081DD -:1038F0009091D301892B8083E0910E01F0910F010B -:1039000080819091D201892B80839091C10199236C -:1039100061F0E0910E01F0910F018081892B80838D -:103920000E94591C81111092C10180910E01909149 -:103930000F010C94B5108091EC01843021F11092AC -:10394000D60120E488E190E00FB6F894A895809322 -:1039500060000FBE2093600080E00E94AE0983B734 -:10396000817F846083BF83B7816083BF78948895AB -:1039700083B78E7F83BF88E10FB6F8948093600091 -:10398000109260000FBE089508950895CF930E948D -:10399000C41C0E94E2050E94C51CC0E08C2F0E943E -:1039A000CF06811105C0CF5FCE30C1F780E001C0E6 -:1039B00081E0CF9108950E942C160E94A9100C94CA -:1039C000AE0982E084BD93E095BD9AEF97BD8093E8 -:1039D0006E0008952FB7F8948091D7019091D80187 -:1039E000A091D901B091DA012FBF0895CF92DF9253 -:1039F000EF92FF920F931F932FB7F8944091D70146 -:103A00005091D8016091D9017091DA012FBF6A01FC -:103A10007B01EE24FF248C0120E030E0C016D106AB -:103A2000E206F30610F441505109481B590BCA0134 -:103A30001F910F91FF90EF90DF90CF9008951F920C -:103A40000F920FB60F9211248F939F93AF93BF9352 -:103A50008091D7019091D801A091D901B091DA015C -:103A60000196A11DB11D8093D7019093D801A09319 -:103A7000D901B093DA01BF91AF919F918F910F90CF -:103A80000FBE0F901F9018950E94AF0DF8942FEF66 -:103A900087EA91E6215080409040E1F700C00000A5 -:103AA00087E090EBDC018093F6019093F701A093FF -:103AB000F801B093F9012CE088E190E00FB6F8949A -:103AC000A895809360000FBE20936000FFCFEF9217 -:103AD000FF920F931F93CF93DF93E82EF12C8F2D3E -:103AE0000E94CF06C0E0D0E0082F10E098010C2E15 -:103AF00002C0359527950A94E2F720FD05C021966E -:103B0000C630D10599F709C06C2F7F2D80E00E9447 -:103B1000D706E812F4CF81E005C0F3948EE0F812E6 -:103B2000DECF80E0DF91CF911F910F91FF90EF905A -:103B30000895CF93C82F8CE20E94671D882321F03F -:103B40008C2FCF910C94671D80E0CF910895CF9377 -:103B50000E94EC1E811102C00E94D21EC5E6C15017 -:103B600049F00E94E2058FE39CE90197F1F700C05C -:103B70000000F5CF89E20E94991D811111C18AE2EE -:103B80000E94991D81110E94D21E85E00E94991DFC -:103B900081110E94441D0E94F71E8093D50187E089 -:103BA0000E94991D882399F18BE10E94991D882319 -:103BB00051F09091D50191FB882780F921E082276F -:103BC00080FB91F922C08EE00E94991D882351F05C -:103BD0009091D50192FB882780F921E0822780FB14 -:103BE00092F913C080E10E94991D9091D50188231C -:103BF00041F093FB882780F921E0822780FB93F92D -:103C000004C0892F809580FB90F99093D501809115 -:103C1000D5010E94FB1E0E94091F8093F50180EED2 -:103C20000E94991D882341F08091F501982F90956D -:103C300090FB80F98093F50189E30E94991D882308 -:103C400059F09091F50191FB882780F921E08227B6 -:103C500080FB91F99093F50182EE0E94991D8823D3 -:103C600059F09091F50192FB882780F921E0822795 -:103C700080FB92F99093F50186EE0E94991D8823AE -:103C800059F09091F50193FB882780F921E0822774 -:103C900080FB93F99093F50183EE0E94991D882390 -:103CA00059F09091F50194FB882780F921E0822753 -:103CB00080FB94F99093F50185E30E94991D882378 -:103CC00059F09091F50195FB882780F921E0822732 -:103CD00080FB95F99093F50181E30E94991D88235B -:103CE00059F09091F50196FB882780F921E0822711 -:103CF00080FB96F99093F50181E10E94991D88233C -:103D000059F09091F50197FB882780F921E08227EF -:103D100080FB97F99093F5018091F5010E940D1FAA -:103D20008091F50187FB882780F980930D0187E258 -:103D30000E94991DC82F8EE10E94991D8111C260B9 -:103D40008FE10E94991D8111C46080E20E94991D3B -:103D50008111C86081E20E94991D8111C06182E2D7 -:103D60000E94991D8111C06283E20E94991D8111F8 -:103D7000C06484E20E94991D882311F0C06802C0CB -:103D8000CC2329F08C2F0E94041F6C2F03C00E94AB -:103D9000001F682F70E080E090E0CF910C94261A0D -:103DA000CF9108956DEE7EEF80E090E00E942A258D -:103DB00060E082E090E00E94182560E083E090E0FF -:103DC0000E94182560E084E090E00E94182560E0E1 -:103DD00085E090E00C94182580E090E00E94122588 -:103DE00021E08D3E9E4F09F020E0822F089582E071 -:103DF00090E00C940A25682F82E090E00C9418253E -:103E000083E090E00C940A25682F83E090E00C9406 -:103E1000182584E090E00C940A25682F84E090E057 -:103E20000C9418258091DD0180FF0BC06091130177 -:103E300085E0689FB0011124759567957595679524 -:103E40002AC081FF09C06091130185E0689FB0011D -:103E50001124759567951FC082FF07C060911301FB -:103E600085E0689FB001112416C04091DE01442313 -:103E7000C9F060911201461788F72091130185E07F -:103E8000289F90011124429FC001439F900D11244F -:103E900070E00E94DC246038710540F46115710502 -:103EA00039F002C065E070E0862F08958FE708952D -:103EB00081E008958091DD0180FF08C060911101CB -:103EC00070E0759567957595679521C081FF06C06F -:103ED0006091110170E07595679519C082FF04C06B -:103EE0006091110170E010C08091DE018823C1F063 -:103EF000609110018617A0F790911101989FC00161 -:103F0000112470E00E94DC246038710528F46115EA -:103F1000710521F0862F08958FE7089581E00895B7 -:103F200061E070E0F4CF803F21F40E94121F819580 -:103F300004C0813F29F40E94121F8093E10108957B -:103F4000823F21F40E94121F819504C0833F29F40F -:103F50000E94121F8093E0010895893F19F40E9486 -:103F60005A1F05C08A3F31F40E945A1F81958093E1 -:103F7000E20108958B3F21F40E945A1F819504C0ED -:103F80008C3F29F40E945A1F8093E3010895843FD7 -:103F900021F48091DF01816017C0853F21F4809179 -:103FA000DF01826011C0863F21F48091DF018460CF -:103FB0000BC0873F21F48091DF01886005C0883FF6 -:103FC00031F48091DF0180618093DF0108958D3F9E -:103FD00021F48091DD0181600BC08E3F21F480913E -:103FE000DD01826005C08F3F29F48091DD0184608E -:103FF0008093DD010895803F39F48091E10187FFCE -:104000006CC01092E10169C0813F29F48091E10107 -:104010001816BCF362C09091E001823F29F497FF2B -:104020005CC01092E00159C0833F19F41916CCF31B -:1040300054C0893F41F48091E20118160CF04DC044 -:104040001092E2014AC08A3F29F48091E20187FF81 -:1040500044C0F6CF8B3F39F48091E30187FF3DC028 -:104060001092E3013AC08C3F29F48091E3011816C5 -:10407000BCF333C0843F21F48091DF018E7F17C0F1 -:10408000853F21F48091DF018D7F11C0863F21F4AF -:104090008091DF018B7F0BC0873F21F48091DF018E -:1040A000877F05C0883F31F48091DF018F7E809348 -:1040B000DF0113C08D3F21F48091DD018E7F0BC0A5 -:1040C0008E3F21F48091DD018D7F05C08F3F29F463 -:1040D0008091DD018B7F8093DD018091E001811172 -:1040E0000EC08091E10181110AC08091E20181112D -:1040F00006C08091E301811102C01092DE01089593 -:104100008FED91E00E94C0100E94EA1C9093DC01A8 -:104110008093DB0108951F93CF93DF938091DB01A0 -:104120009091DC010E94F61C4091DE01442321F0B5 -:104130002091140130E006C0209115015AE0259F1E -:10414000900111248217930708F482C08091E00146 -:104150001091E101D091E201C091E301811107C00A -:10416000111105C0D11103C0CC2309F471C04F3F18 -:1041700019F04F5F4093DE01181624F40E94121FBD -:104180008093E0018091E00187FF05C00E94121F2B -:1041900081958093E001111624F40E94121F8093F0 -:1041A000E1018091E10187FF05C00E94121F819506 -:1041B0008093E1016091E001662339F11091E10102 -:1041C000112319F1772767FD7095872F972F0E948C -:1041D000ED2323E333E343E35FE30E9451240E9492 -:1041E000BA236093E001612F772767FD7095872FD1 -:1041F000972F0E94ED2323E333E343E35FE30E9421 -:1042000051240E94BA236093E1011D1624F40E94F8 -:104210005A1F8093E2018091E20187FF05C00E944E -:104220005A1F81958093E2011C1624F40E945A1FA4 -:104230008093E3018091E30187FF05C00E945A1F2C -:1042400081958093E301DF91CF911F910C948020A1 -:10425000DF91CF911F910895EFEDF1E085E0DF014F -:104260001D928A95E9F71092DE011092DD01089502 -:10427000833081F128F4813059F08230D1F00895F3 -:10428000853009F449C0B8F1863009F456C0089564 -:1042900020911501862F90E0820F911D8F3F91058F -:1042A00020F4620F6093150108958FEF809315013C -:1042B000089520911401862F90E0820F911D8F3F69 -:1042C000910520F4620F6093140108958FEF80939D -:1042D0001401089520911301862F90E0820F911D03 -:1042E0008F3F910520F4620F6093130108958FEFC3 -:1042F00080931301089520911201862F90E0820F80 -:10430000911D8F3F910520F4620F60931201089573 -:104310008FEF80931201089520911101862F90E074 -:10432000820F911D8F3F910520F4620F6093110160 -:1043300008958FEF80931101089520911001862F29 -:1043400090E0820F911D8F3F910520F4620F6093E2 -:10435000100108958FEF809310010895833011F1BB -:1043600028F4813049F0823091F00895853081F150 -:1043700020F18630C1F1089580911501681720F46D -:10438000861B809315010895109215010895809160 -:104390001401681720F4861B80931401089510926D -:1043A0001401089580911301681720F4861B8093EF -:1043B0001301089510921301089580911201681756 -:1043C00020F4861B80931201089510921201089523 -:1043D00080911101681720F4861B809311010895C4 -:1043E00010921101089580911001681720F4861B26 -:1043F0008093100108951092100108958D3109F4F1 -:1044000042C020F58E3009F477C070F4873009F48B -:1044100059C018F48630F1F134C0883009F4A8C0CE -:104420008B3009F4A5C02DC0863109F4A1C038F441 -:10443000803109F472C0813109F479C022C0893118 -:1044400009F496C08B3109F44DC01BC0853309F4C3 -:1044500087C048F4873209F483C008F473C08932F6 -:1044600009F47EC00EC0833438F48A3308F068C083 -:10447000883309F47DC005C0833409F471C08834E1 -:1044800099F080E008950E9474230E94A9100E9470 -:10449000AE096EC08091D501817F8E7F8093D5015A -:1044A00081E08093E50108950E942C162FEF83EDA3 -:1044B00090E3215080409040E1F700C000000E944E -:1044C000441D56C09091D501892F8095817080FB45 -:1044D00090F919F0966098601DC0997F977F90932E -:1044E000D50146C09091D50191FB882780F921E044 -:1044F000822780FB91F909C09091D50192FB882712 -:1045000080F921E0822780FB92F99093D5018823DE -:1045100079F191609093D50108959091D50193FB25 -:10452000882780F921E0822780FB93F9EECF0E9453 -:104530002C1680910D0191E0892780930D0118C000 -:1045400027EC01C023EE280F61E070E080E090E0EE -:1045500004C0660F771F881F991F2A95D2F704C0E1 -:1045600061E070E080E090E00E94261A0E942C1624 -:1045700081E0089580E0089580E00895CF93C82FEA -:104580008091E501813079F018F08230D1F184C05A -:10459000A0910E01B0910F018C91813169F08232AE -:1045A00009F07CC009C0A0910E01B0910F018C915F -:1045B000813111F0823249F48C2F0E94BA2281118C -:1045C0001DC08C2F0E94FE211AC08C2F0E94BC227D -:1045D000811114C0C43179F048F4CB3079F0C03186 -:1045E00009F060C082E08093E50108C0C93219F08B -:1045F000C83321F057C01092E50154C081E08170AA -:1046000053C0C93289F118F5C43171F1A8F4C7302B -:1046100009F046C08AE08093150194E1909314015B -:1046200093E0909313018093120188E0809311012D -:1046300088E28093100134C0CE51C63088F5EC2F4B -:10464000F0E0E65DFE4F80818093E40129C0CE3426 -:10465000E9F020F4CB3421F56AE013C0C13579F0DC -:10466000C235F1F461E00DC08091E401882319F0B6 -:104670001092E40115C081E08093E50115C061E06E -:1046800006C08091E4010E9438210AC06AE080914E -:10469000E4010E94AE2104C01092E50180E004C054 -:1046A00081E002C080E0ABCFCF910895E1E8F0E077 -:1046B0008081886080838081816080838FB7F89457 -:1046C00093E09093890090ED909388008FBF0895B8 -:1046D000EFE6F0E08081826080830895EFE6F0E00D -:1046E00080818D7F80830895EFE6F0E0808192E005 -:1046F0008927808308951F920F920FB60F9211247D -:104700002F933F934F935F936F937F938F939F93D9 -:10471000AF93BF93EF93FF938091E6019091E701F0 -:1047200001969093E7018093E601811103C082E036 -:104730000E94AE09E091E701E695E695F0E0E25BC4 -:10474000FA4FE4918091E6018E1303C080E00E944D -:10475000AE09FF91EF91BF91AF919F918F917F91A2 -:104760006F915F914F913F912F910F900FBE0F90DE -:104770001F90189504D06894B1118DC0089570D021 -:1047800088F09F5790F0B92F9927B751A0F0D1F03A -:10479000660F771F881F991F1AF0BA95C9F712C0C4 -:1047A000B13081F077D0B1E0089574C0672F782FD1 -:1047B0008827B85F39F0B93FCCF386957795679530 -:1047C000B395D9F73EF490958095709561957F4F9C -:1047D0008F4F9F4F0895E89409C097FB3EF4909542 -:1047E0008095709561957F4F8F4F9F4F9923A9F0CA -:1047F000F92F96E9BB279395F69587957795679559 -:10480000B795F111F8CFFAF4BB0F11F460FF1BC09C -:104810006F5F7F4F8F4F9F4F16C0882311F096E92F -:1048200011C0772321F09EE8872F762F05C06623DD -:1048300071F096E8862F70E060E02AF09A95660F96 -:10484000771F881FDAF7880F9695879597F908954F -:1048500057FD9058440F551F59F05F3F71F0479531 -:10486000880F97FB991F61F09F3F79F08795089516 -:10487000121613061406551FF2CF4695F1DF08C035 -:10488000161617061806991FF1CF86957105610552 -:1048900008940895E894BB2766277727CB0197F9FA -:1048A00008950BD078C069D028F06ED018F0952309 -:1048B00009F05AC05FC01124EECFCADFA0F3959F64 -:1048C000D1F3950F50E0551F629FF001729FBB27F7 -:1048D000F00DB11D639FAA27F00DB11DAA1F649FA3 -:1048E0006627B00DA11D661F829F2227B00DA11D56 -:1048F000621F739FB00DA11D621F839FA00D611DDC -:10490000221F749F3327A00D611D231F849F600DFC -:10491000211D822F762F6A2F11249F5750408AF035 -:10492000E1F088234AF0EE0FFF1FBB1F661F771FC1 -:10493000881F91505040A9F79E3F510570F014C058 -:10494000AACF5F3FECF3983EDCF3869577956795A9 -:10495000B795F795E7959F5FC1F7FE2B880F911DDF -:104960009695879597F9089597F99F6780E870E085 -:1049700060E008959FEF80EC089500240A941616D5 -:10498000170618060906089500240A94121613063D -:10499000140605060895092E0394000C11F48823CB -:1049A00052F0BB0F40F4BF2B11F460FF04C06F5FE7 -:1049B0007F4F8F4F9F4F089597FB072E16F400945B -:1049C00007D077FD09D00E94F62407FC05D03EF4FD -:1049D000909581959F4F0895709561957F4F0895AB -:1049E000EE0FFF1F0590F491E02D0994AA1BBB1B4D -:1049F00051E107C0AA1FBB1FA617B70710F0A61BDF -:104A0000B70B881F991F5A95A9F780959095BC01FF -:104A1000CD010895F999FECF92BD81BDF89A9927ED -:104A200080B50895A8E1B0E042E050E00C94322552 -:104A3000262FF999FECF92BD81BDF89A019700B457 -:104A4000021639F01FBA20BD0FB6F894FA9AF99AF7 -:104A50000FBE08950196272F0E9419250C94182542 -:104A6000DC01CB01FC01F999FECF06C0F2BDE1BD2E -:104A7000F89A319600B40D9241505040B8F708951D -:044A8000F894FFCFD8 -:104A84002002B0093D0A1A0AE609B3090101C2016C -:104A940028080A03140A3F4D36390F05C2048C0452 -:104AA4005304E603FF03180431040102030405065A -:044AB40007080900E6 +:100000000C94E7020C942B030C942B030C942B03FD +:100010000C942B030C942B030C942B030C942B03A8 +:100020000C942B030C942B030C94B10E0C94830FA3 +:100030000C942B030C942B030C942B030C942B0388 +:100040000C942B030C9402240C942B030C942B0380 +:100050000C942B030C94A61D0C942B030C942B03D3 +:100060000C942B030C942B030C942B030C942B0358 +:100070000C942B030C942B030C942B030C942B0348 +:100080000C942B030C942B030C942B030C942B0338 +:100090000C942B030C942B030C942B030C942B0328 +:1000A0000C942B030C942B030C942B033B036A033B +:1000B000A603DF03F804F804F804F804F804F804CD +:1000C0003B038A03C3036704F804F804F804F80444 +:1000D000F804F804BB04C504CF04E104E80F0A10D7 +:1000E000F5100A10F5104C106F10F510C410D71051 +:1000F000D113D11312141214541490149016901694 +:10010000A81490169F159F156A16901690167E16C5 +:1001100000000000000000000000000000000000DF +:100120000000000000000BC80CC80DC80000000053 +:100130000000000000000000000015C816C817C825 +:100140000D200C200B300A30E00000001E001400CF +:1001500004001D0000074E001F001A0016001B00BF +:10016000000F4C002000080007000600E2002A00F3 +:100170002100150009001900E3004B0022001700C0 +:100180000A00050000004A0029002F0000002B0291 +:1001900000004D002D00300000002B00000050003A +:1001A00023001C000B00110000004F002400180069 +:1001B0000D001000E700520025000C000E00360074 +:1001C000E6002C00260012000F003700000F280068 +:1001D00027001300330038000007510017201620B5 +:1001E00015201430E40000000100010001000100AE +:1001F000E00000003A001E02200222020007510027 +:100200003B001F0221022302000F28003C002F02A6 +:1002100026022F00E2002C003D00300227023000B1 +:10022000E30052003E002402350035020000500079 +:100230002900360200002B0000004F002D0037027D +:1002400000002B0200004A003F003102380031005C +:1002500000004D004000240021001E0027784B00C4 +:100260004100250022001F0037744C004200260088 +:10027000230020002E7F2A004300380025022D0095 +:100280002E774E00010001000100010028710000DE +:100290000100010001000100E000000044006600D0 +:1002A000A60000000007B50045001E30F200203017 +:1002B000F60000006800F000F100F100F400B60064 +:1002C00069001F30F3002130F500B4006A00A90076 +:1002D000AA00A8000000B8002900F9000000FA00F8 +:1002E0000000B9000000F9000000FA000000AC00B6 +:1002F0006B004600530000000000AB006C004A0099 +:1003000050004D004978A9006D0052005100510085 +:100310004C74AE006E004B004F004E00000FAD005D +:100320006F00B100B300E5000007AA000100010062 +:1003300001000100E400000001000100010039009B +:10034000010000002900010001000100010001007E +:100350000100010001000100010001000100010095 +:100360000100010001000100010001000100010085 +:100370000100010001000100010001000000010076 +:100380000100010000000100000001000100010067 +:100390000000010000000100010001000100010057 +:1003A0000000010001000100010001000100010046 +:1003B0000100010001000100010001000100010035 +:1003C00001000100010001002A00010001000100FC +:1003D00001000100010001000100390001000000DE +:1003E00016034500720067006F0044006F0078003C +:1003F000200045005A000000160345007200670007 +:100400006F0044006F007800200045005A00000093 +:100410000403090409026D00040100A0FA090400A4 +:10042000000103010100092111010001223F000721 +:1004300005810308000A0904010001030102000903 +:100440002111010001224D000705820308000A095D +:1004500004020001030000000921110100012236FD +:10046000000705830308000A0904030001030000D4 +:100470000009211101000122390007058403100041 +:10048000011201100100000008EDFE071301000138 +:1004900002000105010906A101050719E029E71578 +:1004A00000250195087501810205081901290595A6 +:1004B0000575019102950175039101050719002940 +:1004C0007715002501957875018102C00501098025 +:1004D000A101850216010026B7001A01002AB70003 +:1004E000751095018100C0050C0901A10185031655 +:1004F0000100269C021A01002A9C027510950181B8 +:1005000000C005010902A1010901A10005091901A5 +:1005100029051500250195057501810295017503D1 +:1005200081010501093009311581257F9502750882 +:10053000810609381581257F950175088106050C0E +:100540000A38021581257F950175088106C0C0050E +:10055000010906A101050719E029E7150025019504 +:1005600008750181029501750881010508190129A5 +:10057000059505750191029501750391010507190E +:100580000029FF150025FF950675088100C00000B1 +:10059000000000000000000000010204060A0F171E +:1005A000202C3A4A5D71879DB3C7DAE9F5FCFFFC60 +:1005B000F5E9DAC7B39D87715D4A3A2C20170F0A17 +:1005C00006040201000000000000000000001124E9 +:1005D0001FBECFEFDAE0DEBFCDBF04B603FE24C0FE +:1005E0008091F8019091F901A091FA01B091FB017D +:1005F0008730904BA740B04BB9F41092F80110929D +:10060000F9011092FA011092FB0114BE84B7877FA2 +:1006100084BF88E10FB6F894809360001092600068 +:100620000FBEE0E0FFE3099511E0A0E0B1E0E2E9F0 +:10063000FBE402C005900D92A433B107D9F721E085 +:10064000A4E3B1E001C01D92A83FB207E1F70E9408 +:10065000F70B0C94C7250C940000DC01462F50E0EA +:100660004A5051094831510508F0C2C14A5A5F4FFA +:10067000FA010C94772512962C91129780913C01E7 +:1006800090913D012223E1F015962C91207FC1F439 +:1006900001968330910510F082E090E090933D0147 +:1006A00080933C018091360190913701892B31F084 +:1006B00089E30E94591289E30E94211381EEF9C057 +:1006C000019790933D0180933C01892B09F090C1E3 +:1006D00081EEFAC012962C9180913A0190913B01E3 +:1006E000222331F101968330910510F082E090E0F1 +:1006F00090933B0180933A018091360190913701AC +:10070000892B31F08091350191E089278093350163 +:1007100081E078C012969C91129715968C91807FFB +:1007200091119CC009F0B7C080913A0190913B01B2 +:10073000019790933B0180933A01892B09F058C1AE +:1007400080913501811154C181E085C012969C9140 +:10075000129715968C91807F992359F0209136013C +:10076000309137018823B9F121153105A1F58BE2CC +:10077000A0C0882391F08091360190913701892B98 +:1007800061F48BE2A1C012969C91129715968C9100 +:10079000807F91111AC009F08FC08091380190912B +:1007A000390101979093390180933801892B09F021 +:1007B0001FC18091340181111BC182E04CC012968F +:1007C0008C911297882309F187C0209136013091CE +:1007D0003701811169C080913801909139010196EA +:1007E0008330910510F082E090E09093390180937E +:1007F0003801232B31F08091340191E089278093D7 +:10080000340182E00E94241BF3C015968C91982F2E +:10081000907FA1F080FD12C080913A0190913B0140 +:10082000892B61F48091380190913901892B31F441 +:1008300085E30E94591285E30E94211380913601BD +:100840009091370101979093370180933601892B5E +:1008500009F0CEC083E00E94451BCAC0209136013A +:1008600030913701882329F02115310511F484E3F3 +:1008700020C080913A0190913B010196833091050F +:1008800010F082E090E090933B0180933A01232B9B +:1008900009F038CF3DCF8091360190913701892BF7 +:1008A00009F042CF84E310C02115310509F093CF40 +:1008B00081E30E9459129CC08091360190913701CA +:1008C000892B09F06ACF81E30E94211391C012960F +:1008D0008C9112978823A1F1809136019091370174 +:1008E00001968330910510F082E090E090933701FB +:1008F0008093360180913C0190913D01892B31F02C +:1009000089E30E94591289E30E94211380913A01E0 +:1009100090913B01892B31F08091350191E089273D +:10092000809335018091380190913901892B31F004 +:100930008091340191E089278093340183E062CF74 +:1009400015968C91982F907F09F478CF80FD76CF03 +:1009500080913A0190913B01892B09F06FCF8091F2 +:10096000380190913901892B09F068CF8EE20E94FD +:1009700059128EE261CF12968C91882319F080EF84 +:1009800090E013C080EF90E017C012968C918823FE +:1009900019F080EF90E01BC080EF90E021C012962C +:1009A0008C91882339F081EF90E00E941A2082EF29 +:1009B00090E011C081EF90E00E94822082EF90E0F1 +:1009C00013C012968C91882349F081EF90E00E9429 +:1009D0001A2083EF90E00E941A2008C081EF90E077 +:1009E0000E94822083EF90E00E9482200E940721D3 +:1009F00080E090E008950895E0910E01F0910F01DC +:100A00008081827219F0259A2D9A06C00E943011B9 +:100A100081FDF9CF25982D988091BB0181FF03C0FE +:100A2000269A2E9A02C026982E988091BB0182FFAA +:100A300003C0279A2F9A089527982F9808950C9409 +:100A4000FC0456985E9825982D9826982E982798FD +:100A50002F988FEF90E09093890080938800909377 +:100A60008B0080938A0090938D0080938C00259A50 +:100A70002D9A2FEF80E792E0215080409040E1F7DF +:100A800000C00000269A2E9A2FEF80E792E02150B6 +:100A900080409040E1F700C00000279A2F9A2FEF86 +:100AA00080E792E0215080409040E1F700C00000D4 +:100AB00025982D982FEF80E792E0215080409040BC +:100AC000E1F700C0000026982E982FEF80E792E013 +:100AD000215080409040E1F700C0000027982F98F7 +:100AE00056985E9825982D9826982E9827982F9896 +:100AF000089589EA8093800089E08093810024989A +:100B00002C983F988AB18F748AB96E98479A8BB1A6 +:100B1000806B8BB9769A0E9421050C94FB0480E2CD +:100B20008093000180913E0181110EC00E94DE057C +:100B300081E080933E012FEF83ED90E321508040D0 +:100B40009040E1F700C0000080E40E94E40580933B +:100B5000000181112EC00E940E06809300018111B8 +:100B600028C00E940E0680930001811122C08FE3ED +:100B70000E940E068093000181111BC00E94060690 +:100B800080E40E94E40580930001811112C08CE092 +:100B90000E940E068093000181110BC00E940E0678 +:100BA00080930001811105C08FE30E940E0680939F +:100BB00000010E9406068091000108951092B9007C +:100BC0008AE08093B800089594EA9093BC009091D5 +:100BD000BC0097FFFCCF9091B900987F983021F02E +:100BE000903111F081E008958093BB0084E88093F8 +:100BF000BC008091BC0087FFFCCF8091B900887F4A +:100C0000883111F0803471F780E0089584E9809391 +:100C1000BC008091BC0084FDFCCF08958093BB0094 +:100C200084E88093BC008091BC0087FFFCCF90914A +:100C3000B900987F81E0983209F480E0089584E853 +:100C40008093BC008091BC0087FFFCCF8091BB00EB +:100C5000089580910001811115C080E40E94E4058F +:100C60008093000181110CC082E10E940E068093E6 +:100C70000001811105C08FEF0E940E0680930001D4 +:100C80000E94060684B1807F84B985B1807F85B9D2 +:100C90008AB1837F8AB98BB1837F8BB93E9846989E +:100CA00008950E948F05809300010E94290680B359 +:100CB0008C7080BB81B3836F81BBEEE4F1E0A0E474 +:100CC000B1E011921D9281E0EC35F807D1F70C9458 +:100CD0007905BF92CF92DF92EF92FF920F931F930D +:100CE000CF93DF9380910001882379F080913F01B9 +:100CF0008F5F80933F01811108C00E948F05809310 +:100D00000001811102C00E94210500E411E0C0E051 +:100D1000D0E0DD24D39482E0C82EEE24E394F12CBD +:100D2000C73000F580910001811162C080E40E940B +:100D3000E40580930001811112C082E10E940E0639 +:100D40008093000181110BC0C7010C2E01C0880FD8 +:100D50000A94EAF780950E940E06809300010E9493 +:100D6000060646C0CA30A1F028F4C83059F0C93090 +:100D700061F005C0CC3089F070F0CD3089F0209A58 +:100D8000289810C0219A29980DC0229A2A980AC042 +:100D9000239A2B9807C0529A01C0539A5B9802C0BD +:100DA0003E9A4698E0EAEA95F1F78FB179995AC0F0 +:100DB00092E081708D25892B7C9B02C090E001C060 +:100DC00094E0892B7D9B02C090E001C098E0892BC4 +:100DD0007E9B02C090E001C090E1892B9FB190956D +:100DE000991F9927991F9295990F907E892B0FC073 +:100DF0008091000181114BC080E40E94E405809342 +:100E00000001882389F1B12C0E9406068B2DF80180 +:100E10009081981719F08083C09201010E942906E1 +:100E200021960F5F1F4FCE30D10509F079CF809109 +:100E30000101882371F1815080930101882339F0E9 +:100E40008FE99FE00197F1F700C0000022C0AEE4F7 +:100E5000B1E0E0E4F1E081918D9391E0EE34F907A7 +:100E6000D1F717C090E0A5CF83E10E940E068093D2 +:100E700000018111C8CF81E40E94E4058093000144 +:100E80008111C1CF0E941F06B82EB094BDCF80E063 +:100E9000BECF0E941F0581E0DF91CF911F910F917E +:100EA000FF90EF90DF90CF90BF900895E82FF0E093 +:100EB000E25BFE4F808108950895089596E0799F42 +:100EC000F001112494E5899FE00DF11D1124E60F36 +:100ED000F11DEE0FFF1FE05CFE4F85919491089588 +:100EE000880F991F80579040FC0185919491089537 +:100EF000880F991F805F9E4FFC0185919491089502 +:100F00000F931F93CF93DF93EC01811520E392079A +:100F100030F5811530E2930708F0B1C08B3B9105A5 +:100F200088F4883A910508F058C0853A910508F090 +:100F300049C08430910508F043C08130910509F41F +:100F4000B2C1AEC18F3F910509F0D0F5803F910548 +:100F500008F092C0805E9109089790F1A1C1C11577 +:100F600081E5D807A8F4C23090E5D90708F09FC002 +:100F7000C11520E5D20709F486C008F092C0C1155A +:100F800080E4D80708F08CC18E011127106CCCC109 +:100F9000C11590E8D90758F4C11520E7D20708F029 +:100FA0007BC1C11530E6D30708F423C179C1C1154F +:100FB00080E9D80708F074C18E011F70106AB4C1AF +:100FC0008E01B2C1853A910509F470C1863A910546 +:100FD00009F46FC103E810E4A7C1883A910509F448 +:100FE0006BC1893A910509F46AC18A3A910509F4FD +:100FF00069C18B3A910509F468C18C3A910509F4ED +:1010000067C18D3A910509F466C1803B910509F4E9 +:1010100065C18E3A910509F464C18F3A910509F4CE +:1010200063C1813B910509F462C1823B910509F4DA +:1010300061C1833B910509F460C1843B910509F4CA +:101040005FC1853B910509F45EC1863B910509F4BA +:101050005DC1873B910509F45CC1883B910509F4AA +:101060005BC1893B910509F45AC18A3B910509F09E +:1010700059C10AE216E458C18C01106555C19F7030 +:101080000E94780752C10E94B3169FEF24E33CE010 +:10109000915020403040E1F700C000000E94CB1D7D +:1010A00043C18091D70181608093D7013DC10E94E7 +:1010B000731F811102C00E94591F0E94901F90E06F +:1010C0009093F8018093F701C23080E5D80721F4AE +:1010D0008091F701816086C0C43090E5D90721F482 +:1010E0008091F70182607EC0C63020E5D20721F4EE +:1010F0008091F701846076C0C83030E5D30719F4D9 +:101100008091F70127C0CA3080E5D80721F480918B +:10111000F701806167C0CC3090E5D90721F4809158 +:10112000F70180625FC0CE3020E5D20721F48091C4 +:10113000F701806457C0C03130E5D30721F48091B6 +:10114000F70180684FC0C23180E5D80729F480914B +:10115000F7018460886046C0C33090E5D90721F468 +:101160008091F7018E7F3EC0C53020E5D20721F483 +:101170008091F7018D7F36C0C73030E5D30721F469 +:101180008091F7018B7F2EC0C93080E5D80719F414 +:101190008091F70126C0CB3090E5D90721F48091EA +:1011A000F7018F7E1FC0CD3020E5D20721F480915A +:1011B000F7018F7D17C0CF3030E5D30721F4809140 +:1011C000F7018F7B0FC0C13180E5D80721F48091F2 +:1011D000F7018F7707C0C331D04531F48091F70113 +:1011E0008B7F877F8093F7018091F7010E94941F86 +:1011F0009BC08D2F99278F70992781309105E9F435 +:101200008E01037011279C0102C0220F331F0A9523 +:10121000E2F789011C68CE0164E0880F991F6A9586 +:10122000E1F788279370082B192B73E0CC0FDD1F93 +:101230007A95E1F7C076DD272CC08230910529F43C +:101240001C2F0027016F106A6FC08330910561F475 +:10125000CE018370992701E010E002C0000F111F3A +:101260008A95E2F71C680EC0049709F05DC0CE01B4 +:101270008370992701E010E002C0000F111F8A95CA +:10128000E2F71A6843E0CC0FDD1F4A95E1F7C07E14 +:10129000D7700C2B1D2B48C08E011F70106244C0EC +:1012A00000E010E041C001E010E03EC001E810E4C1 +:1012B0003BC002E810E438C002EE14E435C009EE89 +:1012C00014E432C00AEE14E42FC005EB14E42CC081 +:1012D00006EB14E429C007EB14E426C00CEC14E47C +:1012E00023C00DEC14E420C003E815E41DC00AE897 +:1012F00015E41AC002E915E417C004E915E414C0A6 +:1013000001E216E411C003E216E40EC004E216E4A2 +:101310000BC005E216E408C006E216E405C007E2C9 +:1013200016E402C000E014E4C801DF91CF911F91E0 +:101330000F91089596E0799FF001112494E5899F1B +:10134000E00DF11D1124E60FF11DEE0FFF1FE05C13 +:10135000FE4F85919491803E9105E0F4803C91058B +:1013600058F58133910509F46FC048F4893291052D +:1013700009F463C08A32910509F46DC072C08933E3 +:101380009105E9F082389105D1F08533910509F492 +:101390004DC067C0833E910581F138F4803E9105D0 +:1013A000B9F0823E9105D9F05CC0863E910561F1AD +:1013B000873E9105A1F155C00E94700708952091C4 +:1013C000F70120FD02C021FF4CC080EE90E049C033 +:1013D0008091F70180FFF9CF89E390E042C08091CE +:1013E000F70182FF0EC08091F70184FF03C080E007 +:1013F00090E037C083EE90E034C08091F70182FF27 +:10140000F2CF82EE90E02DC08091F70183FF0BC0F8 +:101410008091F70184FDEBCF87EE90E022C08091B0 +:10142000F70183FFF5CF86EE90E01BC08091F701B6 +:1014300085FF07C089E290E014C08091F70185FF25 +:10144000F9CF85E390E00DC08091F70186FF07C0DA +:101450008AE290E006C08091F70186FFF9CF81E330 +:1014600090E00E948007089508950C94340A8091BA +:101470006C010895CF93DF9300D01F92CDB7DEB7F4 +:101480002091EE01243019F523E029839B838A8380 +:101490002093E9008FEF9091E800815095FD06C000 +:1014A00095ED9A95F1F700008111F5CF8091E80054 +:1014B00085FF0DC040E050E063E070E0CE01019692 +:1014C0000E94A40C8091E8008E778093E8000F9032 +:1014D0000F900F90DF91CF910895CF93DF9300D0BD +:1014E0001F92CDB7DEB72091EE01243021F522E026 +:1014F00029839B838A8383E08093E9008FEF909117 +:10150000E800815095FD06C095ED9A95F1F7000031 +:101510008111F5CF8091E80085FF0DC040E050E0DB +:1015200063E070E0CE0101960E94A40C8091E80077 +:101530008E778093E8000F900F900F90DF91CF91FE +:1015400008952091EE012430F1F422E02093E90087 +:101550002FEF3091E800215035FD06C035ED3A956A +:10156000F1F700002111F5CF2091E80025FF0BC015 +:1015700040E050E065E070E00E94A40C8091E8003B +:101580008E778093E8000895CF93DF93EC018091EC +:10159000EE01843009F046C090910C019923D9F0F6 +:1015A00090910D019923B9F08093E9008FEF90910C +:1015B000E800815095FD06C095E19A95F1F700008D +:1015C0008111F5CF8091E80085FF2CC040E050E00C +:1015D00060E170E017C081E08093E9008FEF9091A7 +:1015E000E800815095FD06C095ED9A95F1F7000051 +:1015F0008111F5CF8091E80085FF14C040E050E0F4 +:1016000068E070E0CE010E94A40C8091E8008E7723 +:101610008093E80080E1FE01ACE5B1E001900D921D +:101620008A95E1F7DF91CF9108958091ED018111C5 +:1016300009C00E94360E0E94930E8091E2008460E1 +:101640008093E20008951092ED01089508950C949E +:10165000EF230E94621D0E94F5230E9430110C941A +:10166000350A42E061EC81E00E94B00D42E061EC9D +:1016700082E00E94B00D42E061EC83E00E94B00D78 +:1016800042E161EC84E00C94B00D8091F001833074 +:1016900009F455C030F4813071F0823009F48EC005 +:1016A00008958A3009F47AC08B3009F460C089301B +:1016B00009F09CC020C08091EF01813A09F096C0EA +:1016C0008091E800877F8093E8008091F3019091FA +:1016D000F401892B21F060E080E090E003C060E13C +:1016E0008CE591E070E00E94ED0C8091E8008B7732 +:1016F0008093E80008958091EF01813209F076C06F +:101700008091F3019091F401009719F0039709F08B +:101710006DC08091E800877F8093E8008091E800A9 +:1017200082FD05C08091EE018111F8CF5FC08091EC +:10173000F10080936C018091E8008B7753C0809119 +:10174000EF01813A09F052C08091F3019091F401C8 +:10175000892B09F04BC08091E800877F8093E800D7 +:101760008091E80080FFFCCF80910C0136C0809111 +:10177000EF018132D9F58091F3019091F401892B29 +:10178000A9F58091E800877F8093E8000E94E50D2D +:101790008091F10180930C010C94B3168091EF01BC +:1017A000813221F58091E800877F8093E8000E94D4 +:1017B000E50D8091F20180936D0108958091EF0114 +:1017C000813AA1F48091E800877F8093E8008091BE +:1017D000E80080FFFCCF80916D018093F100809143 +:1017E000E8008E778093E8000C94E50D089584B7A7 +:1017F000877F84BF88E10FB6F894809360001092D1 +:1018000060000FBE90E080E80FB6F894809361000E +:10181000909361000FBE0E947F110E94360E0E94BD +:10182000930E8091E20084608093E20078940E949D +:101830000E110E94811182E091E00E942B110E9402 +:10184000DD238091EE01853069F40E94221D809194 +:10185000EC018823B1F30E944D1D882391F30E946F +:101860008E0CEFCF0E948711ECCF292F3327233026 +:101870003105A9F06CF42130310509F442C0223061 +:10188000310509F043C08DE690E024E134E042C028 +:1018900021323105C9F02232310519F137C09927BB +:1018A0008130910541F08230910541F0892B71F52D +:1018B000E0E1F4E005C0E8EFF3E002C0E0EEF3E0C1 +:1018C000849190E09F0126C0643000F5E62FF0E09F +:1018D000EE0FFF1FEE5DFE4F2081318189E090E029 +:1018E00019C0643098F4E62FF0E0DF01AA0FBB1FA7 +:1018F000A65EBE4F2D913C91EA5EFE4F808190E046 +:1019000009C082E190E021E834E004C080E090E08A +:1019100020E030E0FA0131832083089580E189BD21 +:1019200082E189BD09B400FEFDCF8091D8008F7D92 +:101930008093D8008091E00082608093E0008091E5 +:10194000E00081FDFCCF0895CF92DF92EF92FF92ED +:101950000F931F93CF93DF937C018B01EA010E94C9 +:10196000060E811131C0209731F088819981081BC2 +:10197000190BE80EF91EC12CD12C0115110519F116 +:101980008091E80085FD14C08091E8008E778093F7 +:10199000E800209741F0888199818C0D9D1D9983E5 +:1019A000888385E011C00E94060E882331F30CC0A5 +:1019B000F70181917F018093F10001501109FFEF40 +:1019C000CF1ADF0ADACF80E0DF91CF911F910F911C +:1019D000FF90EF90DF90CF9008952091F501309126 +:1019E000F6012617370748F06115710539F4209183 +:1019F000E8002E772093E80001C0B901FC0120E047 +:101A000061157105B9F18091EE01882309F440C098 +:101A1000853009F43FC08091E80083FD3DC080918E +:101A2000E80082FF06C08091E80082FF26C080E0C7 +:101A300008958091E80080FFE3CF2091F30080912A +:101A4000F20090E0922B6115710551F088309105FC +:101A500038F421912093F100615071090196F3CF80 +:101A600021E0089709F020E08091E8008E778093CC +:101A7000E800C6CF2111C7CFD6CF8091EE018823D1 +:101A800039F0853039F08091E80083FFCCCF04C075 +:101A900082E0089583E0089581E008952091F501A2 +:101AA0003091F6012617370748F06115710539F4B2 +:101AB0002091E8002E772093E80001C0B901FC01D5 +:101AC00020E061157105C1F18091EE01882309F4D0 +:101AD00041C0853009F440C08091E80083FD3EC0DC +:101AE0008091E80082FF06C08091E80082FF27C055 +:101AF00080E008958091E80080FFE3CF2091F3001B +:101B00008091F20090E0922B6115710559F08830B8 +:101B1000910540F424912093F100319661507109B0 +:101B20000196F2CF21E0089709F020E08091E800CB +:101B30008E778093E800C5CF2111C6CFD5CF809195 +:101B4000EE01882339F0853039F08091E80083FF79 +:101B5000CBCF04C082E0089583E0089581E008952A +:101B6000982F973058F59093E900981739F07091B5 +:101B7000EC002091ED005091F00003C0242F762F4F +:101B800050E021FF19C03091EB003E7F3093EB0015 +:101B90003091ED003D7F3093ED003091EB003160EE +:101BA0003093EB007093EC002093ED005093F00025 +:101BB0002091EE0027FF07C09F5FD3CF8F708093E7 +:101BC000E90081E0089580E008958091EF0187FDAC +:101BD00005C08091E80080FF0EC012C08091E8002F +:101BE00082FD05C08091EE018111F8CF08958091AA +:101BF000E8008B7708C08091EE018111EACF08954B +:101C00008091E8008E778093E80008958091E40049 +:101C10009091E50045E62091EC0020FF21C0209145 +:101C2000E80020FD21C02091EE01222389F025301B +:101C300089F02091EB0025FD0FC02091E400309148 +:101C4000E5002817390739F3415041F0C901E3CFC6 +:101C500082E0089583E0089581E0089584E0089586 +:101C60002091E80022FFDFCF80E008950E94A40EBB +:101C70000E94AC0EE0EEF0E0808181608083E8EDB0 +:101C8000F0E080818F77808319BCA7EDB0E08C9164 +:101C90008E7F8C9380818F7E80831092ED010895DA +:101CA0000F931F93CF93DF930E94A40E0E94AC0E5C +:101CB000C8EDD0E088818F778883888180688883A9 +:101CC00088818F7D888319BC1092EE011092EA0101 +:101CD0001092EC011092EB0100EE10E0F80180810F +:101CE0008B7F808388818160888342E060E080E030 +:101CF0000E94B00DE1EEF0E080818E7F8083E2EE05 +:101D0000F0E0808181608083808188608083F80139 +:101D100080818E7F8083888180618883DF91CF91ED +:101D20001F910F910895E8EDF0E080818F7E808310 +:101D3000E7EDF0E080818160808384E082BF81E014 +:101D40008093ED010C94500EE8EDF0E080818E7FE1 +:101D500080831092E20008951092DA001092E10060 +:101D600008951F920F920FB60F9211242F933F9355 +:101D70004F935F936F937F938F939F93AF93BF9393 +:101D8000EF93FF938091E10082FF0BC08091E2000E +:101D900082FF07C08091E1008B7F8093E1000E9469 +:101DA0000D118091DA0080FF1FC08091D80080FF64 +:101DB0001BC08091DA008E7F8093DA008091D90079 +:101DC00080FF0DC080E189BD82E189BD09B400FEBC +:101DD000FDCF81E08093EE010E94150B05C019BC78 +:101DE0001092EE010E94230B8091E10080FF19C048 +:101DF0008091E20080FF15C08091E2008E7F809389 +:101E0000E2008091E20080618093E2008091D8003E +:101E100080628093D80019BC85E08093EE010E9417 +:101E2000270B8091E10084FF30C08091E20084FFA5 +:101E30002CC080E189BD82E189BD09B400FEFDCFDF +:101E40008091D8008F7D8093D8008091E1008F7EB3 +:101E50008093E1008091E2008F7E8093E200809188 +:101E6000E20081608093E2008091EA01882311F012 +:101E700084E007C08091E30087FF02C083E001C0D7 +:101E800081E08093EE010E94290B8091E10083FFA5 +:101E900029C08091E20083FF25C08091E100877F07 +:101EA0008093E10082E08093EE011092EA0180913C +:101EB000E1008E7F8093E1008091E2008E7F80932D +:101EC000E2008091E20080618093E20042E060E005 +:101ED00080E00E94B00D8091F00088608093F00057 +:101EE0000E94260BFF91EF91BF91AF919F918F912F +:101EF0007F916F915F914F913F912F910F900FBE06 +:101F00000F901F9018951F920F920FB60F921124E9 +:101F10002F933F934F935F936F937F938F939F93F1 +:101F2000AF93BF93CF93EF93FF93C091E900CF702E +:101F30008091EC001092E9008091F000877F8093FF +:101F4000F00078940E94BF0F1092E9008091F00099 +:101F500088608093F000C093E900FF91EF91CF91EA +:101F6000BF91AF919F918F917F916F915F914F91B1 +:101F70003F912F910F900FBE0F901F9018951F93B8 +:101F8000CF93DF93CDB7DEB7AA970FB6F894DEBF35 +:101F90000FBECDBFEFEEF1E08091F100819321E023 +:101FA000E73FF207C9F70E94450B8091E80083FFE5 +:101FB0001CC12091EF013091F001832F90E08A3015 +:101FC000910508F012C1FC01E259FF4F0C947725EE +:101FD000203881F0223809F008C18091F3018F7018 +:101FE0008093E9008091EB0085FB882780F91092AF +:101FF000E90006C08091EB019091EC0191118260A3 +:102000009091E800977F9093E8008093F100109200 +:10201000F100C5C0822F8D7F09F0E7C0222319F09F +:10202000223061F0E2C08091F101813009F0DDC021 +:10203000333009F080E08093EC0128C08091F101F9 +:10204000811124C02091F3012F7009F4CEC0209398 +:10205000E9008091EB0080FF19C08091EB003330E4 +:1020600011F4806211C080618093EB0081E090E008 +:10207000022E01C0880F0A94EAF78093EA001092BA +:10208000EA008091EB0088608093EB001092E900F9 +:102090008091E800877F86C02111A7C01091F101CF +:1020A0001F778091E3008078812B8093E3008091FB +:1020B000E800877F8093E8000E94E50D8091E800AA +:1020C00080FFFCCF8091E30080688093E3001123C0 +:1020D00011F083E001C082E08093EE0186C02058B9 +:1020E000223008F082C08091F1019091F2018C3D84 +:1020F00023E0920779F583E08A838AE289834FB7E8 +:10210000F894DE01139620E03EE051E2E32FF0E088 +:1021100050935700E49120FF03C0E295EF703F5FBA +:10212000EF708E2F90E0EA3010F0C79601C0C09695 +:102130008D939D932F5F243149F74FBF8091E80025 +:10214000877F8093E8006AE270E0CE0101960E94EA +:10215000ED0C14C0AE014F5F5F4F6091F3010E9420 +:10216000350C009709F441C02091E800277F2093A7 +:10217000E800BC0189819A810E944E0D8091E8009F +:102180008B778093E80031C0203879F58091E800A2 +:10219000877F8093E8008091EA018093F10080912D +:1021A000E8008E778093E8000E94E50D1EC02111A3 +:1021B0001CC09091F1019230C0F48091E800877FBB +:1021C0008093E8009093EA010E94E50D8091EA0176 +:1021D000811104C08091E30087FF02C084E001C048 +:1021E00081E08093EE010E94310B8091E80083FF33 +:1021F0000AC08091E800877F8093E8008091EB001F +:1022000080628093EB00AA960FB6F894DEBF0FBEF3 +:10221000CDBFDF91CF911F9108950895CF93809105 +:10222000EE018823B1F08091E9008F709091EC006D +:1022300090FF02C090E801C090E0C92FC82B109217 +:10224000E9008091E80083FD0E94BF0FCF70C0932A +:10225000E900CF91089590937301809372010895DE +:10226000E0917201F0917301309721F00190F081BB +:10227000E02D099480E00895E0917201F0917301DE +:10228000309721F00280F381E02D09940895E091C8 +:102290007201F0917301309721F00480F581E02DF7 +:1022A000099408952091700130917101821793076C +:1022B00071F09093710180937001E0917201F0913F +:1022C0007301309721F00680F781E02D099408957D +:1022D00020916E0130916F018217930771F09093F6 +:1022E0006F0180936E01E0917201F091730130975C +:1022F00021F00084F185E02D0994089508950C944F +:102300007E110E94681D0E9451060C942E1ECF92D1 +:10231000DF92EF92FF920F931F93CF93DF93CDB78E +:10232000DEB72B970FB6F894DEBF0FBECDBF0E946D +:10233000690635E7E32E31E0F32E00E010E0C02E11 +:10234000802F0E945607F701D1907F01D826B1F463 +:102350000F5F1F4F0E30110591F78FEF89838A832E +:102360001B820E94711D8160782F9D838C8349811F +:102370005A816B818D810E942A1241C09091D701B0 +:1023800091FF04C08B870E945C078B8520E030E0C2 +:102390004D2D50E0922FBA01022E02C0759567951F +:1023A0000A94E2F760FF25C02E83CF82EE24E394E7 +:1023B000F12C02C0EE0CFF1C9A95E2F790E08E2102 +:1023C0009F2121E0892B09F420E028870E94711DBC +:1023D0008160782F9A8789874E815F8168858A8599 +:1023E0000E942A12F801EB58FE4F80818E258083CF +:1023F00006C02F5F3F4F2630310561F6A9CF0E94FE +:102400001221109174010E9430111817A1F00E943E +:102410003011809374012B960FB6F894DEBF0FBE77 +:10242000CDBFDF91CF911F910F91FF90EF90DF9083 +:10243000CF900C94350A2B960FB6F894DEBF0FBEE2 +:10244000CDBFDF91CF911F910F91FF90EF90DF9063 +:10245000CF900895CF93DF93CDB7DEB72B970FB60C +:10246000F894DEBF0FBECDBF4F83588769877A8748 +:102470008B87DE01119686E0FD0111928A95E9F7BE +:1024800085E0FE01379601900D928A95E1F749812A +:102490005A816B817C818D819E810E947F192B9650 +:1024A0000FB6F894DEBF0FBECDBFDF91CF91089578 +:1024B0000895CF93C82F882309F4C1C0823859F4F6 +:1024C0000E94301181FDBBC089E30E94291C0E943B +:1024D000F31C89E30CC0833879F40E94301180FD2D +:1024E000AEC083E50E94291C0E94F31C83E50E9474 +:1024F000691CCF910C94F31C843859F40E9430115C +:1025000082FD9DC087E40E94291C0E94F31C87E481 +:10251000EECF8CEF8C0F813A48F48C2F0E9445232C +:1025200081118DC08C2F0E94291CE3CF80E28C0F7B +:10253000883048F4C77081E001C0880FCA95EAF777 +:102540000E94AA1CD6CF8BE58C0F833078F4C53A55 +:1025500029F0C63A31F482E890E005C081E890E0C5 +:1025600002C083E890E0CF910C94521188E58C0F63 +:10257000833108F064C0C83A39F1C93A41F1CA3A26 +:1025800049F1CB3A51F1CC3A59F1CD3A61F1C03B26 +:1025900069F1CE3A71F1CF3A79F1C13B81F1C23B99 +:1025A00089F1C33B91F1C43B99F1C53BA1F1C63B15 +:1025B000A9F1C73BB1F1C83BB9F1C93BC1F1CA3B75 +:1025C000C9F58AE292E038C082EE90E035C089EE2B +:1025D00090E032C08AEE90E02FC085EB90E02CC0F6 +:1025E00086EB90E029C087EB90E026C08CEC90E071 +:1025F00023C08DEC90E020C083E891E01DC08AE804 +:1026000091E01AC082E991E017C084E991E014C01A +:1026100081E292E011C083E292E00EC084E292E097 +:102620000BC085E292E008C086E292E005C087E236 +:1026300092E002C080E090E0CF910C946811CF91BD +:102640000895882309F44BC0823859F40E94301150 +:1026500081FF45C089E30E94291C0E94F31C89E385 +:102660000CC0833871F40E94301180FF38C083E5BC +:102670000E94291C0E94F31C83E50E94691C0C9493 +:10268000F31C843859F40E94301182FF28C087E47B +:102690000E94291C0E94F31C87E4EFCF9CEF980F47 +:1026A000913A58F390E2980F983050F4877091E087 +:1026B00001C0990F8A95EAF7892F0E94B01CDFCFDD +:1026C0009BE5980F933020F480E090E00C94521139 +:1026D000885A833120F480E090E00C9468110895CA +:1026E000882321F00E94AA1C0C94F31C08958823CF +:1026F00021F00E94B01C0C94F31C0895CF92DF923D +:10270000EF92FF920F931F93CF93DF93CDB7DEB776 +:1027100028970FB6F894DEBF0FBECDBF8C0185E0C1 +:10272000F801DE01119601900D928A95E1F7F8010A +:10273000D080E180F280558152955F702381348191 +:10274000232B39F0FFEFEF1206C081E0DF1203C048 +:1027500003C081E001C080E080FDE2C2C8015F8368 +:102760000E945812D982EA8269817A818F2D0E9453 +:10277000251C9E8388870E94D91B0E94AC1A4E811B +:102780005F816885FF2029F00E94C71C68855F81F2 +:102790004E81E42FE295EF70F0E0E858FF4F0C9483 +:1027A0007725842F807F142F1F70882311F01295B6 +:1027B000107FFF20B1F0112309F467C280E2860F79 +:1027C000883028F4812F68870E94AA1C04C0812FBA +:1027D00068870E94BA1C688568870E94F31C688518 +:1027E00054C2862F68870E9421136885112309F43B +:1027F00097C2605E812F683018F40E94B01C02C03E +:102800000E94C01C28960FB6F894DEBF0FBECDBF45 +:10281000DF91CF911F910F91FF90EF90DF90CF90BC +:102820000C94F31C242F207F842F8F70203211F002 +:102830008295807F662319F0613019F12BC0FF204B +:10284000B1F0552309F493C1513009F090C1289695 +:102850000FB6F894DEBF0FBECDBFDF91CF911F91B1 +:102860000F91FF90EF90DF90CF900C94DA1C5523DE +:1028700019F0513009F454C28E830E94DD1C8E8100 +:1028800089C1FF2021F0523008F04AC270C15111B5 +:1028900047C280C1FF2021F0552309F468C1F5C16A +:1028A000552309F477C105C2242F26952695237058 +:1028B00030E02115310521F021303105C9F030C259 +:1028C000FF2021F0862F942F937002C080E090E0CB +:1028D00028960FB6F894DEBF0FBECDBFDF91CF9123 +:1028E0001F910F91FF90EF90DF90CF900C945211B9 +:1028F000FF2021F0862F942F937002C080E090E09B +:1029000028960FB6F894DEBF0FBECDBFDF91CF91F2 +:102910001F910F91FF90EF90DF90CF900C94681172 +:10292000862FFF2019F00E941A2002C00E948220E8 +:1029300028960FB6F894DEBF0FBECDBFDF91CF91C2 +:102940001F910F91FF90EF90DF90CF900C94072193 +:10295000842F837009F076C0F110E2C1262F2295F2 +:1029600026952770220F220F862F8F70C82ED12C0C +:10297000E12CF12C022E04C0CC0CDD1CEE1CFF1C43 +:102980000A94D2F764FF10C06FE070E080E090E03E +:1029900004C0660F771F881F991F2A95D2F760958C +:1029A00070958095909503C060E070E0CB01242F76 +:1029B000269526952370422F50E042305105D1F0E4 +:1029C0004330510559F16C297D298E299F294130C9 +:1029D000510541F128960FB6F894DEBF0FBECDBF6A +:1029E000DF91CF911F910F91FF90EF90DF90CF90EB +:1029F0000C94D11A6C297D298E299F2928960FB60F +:102A0000F894DEBF0FBECDBFDF91CF911F910F9124 +:102A1000FF90EF90DF90CF900C94EB1A0E94D11AA8 +:102A2000C701B60128960FB6F894DEBF0FBECDBF22 +:102A3000DF91CF911F910F91FF90EF90DF90CF909A +:102A40000C94B71AFF2019F0842F817001C086956D +:102A5000882309F465C1262F229526952770220F19 +:102A6000220F862F8F70C82ED12CE12CF12C022E34 +:102A700004C0CC0CDD1CEE1CFF1C0A94D2F764FFD2 +:102A800010C06FE070E080E090E004C0660F771F38 +:102A9000881F991F2A95D2F760957095809590951B +:102AA00003C060E070E0CB01242F269526952370AB +:102AB000422F50E042305105D1F04330510559F1D9 +:102AC0006C297D298E299F294130510541F1289695 +:102AD0000FB6F894DEBF0FBECDBFDF91CF911F912F +:102AE0000F91FF90EF90DF90CF900C94A51B6C2975 +:102AF0007D298E299F2928960FB6F894DEBF0FBE38 +:102B0000CDBFDF91CF911F910F91FF90EF90DF909C +:102B1000CF900C94BF1B0E94A51BC701B60128963D +:102B20000FB6F894DEBF0FBECDBFDF91CF911F91DE +:102B30000F91FF90EF90DF90CF900C948B1B603F34 +:102B4000C9F118F4603E50F49BC0623F09F460C0C4 +:102B500008F44AC0633F09F46FC092C0162F1F707B +:102B6000842F8F71FF2099F00E94241B812F2896BB +:102B70000FB6F894DEBF0FBECDBFDF91CF911F918E +:102B80000F91FF90EF90DF90CF900C9470130E9404 +:102B9000451B812F28960FB6F894DEBF0FBECDBF20 +:102BA000DF91CF911F910F91FF90EF90DF90CF9029 +:102BB0000C947713FF20A1F05111B2C0842F8F71B4 +:102BC00028960FB6F894DEBF0FBECDBFDF91CF9130 +:102BD0001F910F91FF90EF90DF90CF900C946A1BA4 +:102BE000523008F09DC0EACFFF20A1F0842F8F71F2 +:102BF00028960FB6F894DEBF0FBECDBFDF91CF9100 +:102C00001F910F91FF90EF90DF90CF900C94241BB9 +:102C1000FF2061F3842F8F7128960FB6F894DEBFE2 +:102C20000FBECDBFDF91CF911F910F91FF90EF901D +:102C3000DF90CF900C94451BFF2091F0842F8F7173 +:102C400028960FB6F894DEBF0FBECDBFDF91CF91AF +:102C50001F910F91FF90EF90DF90CF900C940F1B7E +:102C600028960FB6F894DEBF0FBECDBFDF91CF918F +:102C70001F910F91FF90EF90DF90CF900C94051B68 +:102C8000FF20A1F0552309F4B1CF862F28960FB667 +:102C9000F894DEBF0FBECDBFDF91CF911F910F9192 +:102CA000FF90EF90DF90CF900C945912552309F4C8 +:102CB000B1CF862F28960FB6F894DEBF0FBECDBFDA +:102CC000DF91CF911F910F91FF90EF90DF90CF9008 +:102CD0000C9421134F70C8010E942D0328960FB643 +:102CE000F894DEBF0FBECDBFDF91CF911F910F9142 +:102CF000FF90EF90DF90CF900C942C1A4F70C8018A +:102D000028960FB6F894DEBF0FBECDBFDF91CF91EE +:102D10001F910F91FF90EF90DF90CF900C945D0783 +:102D200028960FB6F894DEBF0FBECDBFDF91CF91CE +:102D30001F910F91FF90EF90DF90CF9008950E9428 +:102D4000C71C0E94D71C0E949C1C0E94F31C0E945E +:102D5000B3210E94072180E090E00E94521180E0A0 +:102D600090E00C9468110E94B71C0C949F160E946E +:102D70001A1C292F22952F7030E02C3031054CF48D +:102D80002A3031056CF4225031092230310590F49B +:102D900007C02C30310551F02F30310539F00AC011 +:102DA000803E10F0803F31F481E0089593FB882746 +:102DB00080F9089580E00895CF93DF9300D000D08C +:102DC0001F92CDB7DEB70F900F900F900F900F901E +:102DD000DF91CF910895CF93DF9300D000D000D042 +:102DE000CDB7DEB726960FB6F894DEBF0FBECDBFC7 +:102DF000DF91CF9108951F93CF93DF93C09183010B +:102E000016E080918401C81799F0D0E01C9FF00172 +:102E10001D9FF00D1124EB57FE4F408151816281BF +:102E20007381848195810E94EB162196C770E9CF4A +:102E3000DF91CF911F9108954091B5015091B60156 +:102E40006091B7017091B8018091B9019091BA0178 +:102E50000C94EB16CF938091BA0182958F7009F094 +:102E60005FC08091B701882309F45AC02091830183 +:102E7000A09184016091B5017091B6018091B80173 +:102E80009091B90131E06F3F09F030E0B32FC6E017 +:102E90002A1709F445C0009721F07F3F21F44B2FFA +:102EA00003C041E001C040E030E040FD35C0C29FBA +:102EB000F001C39FF00D1124EB57FE4F41817413B5 +:102EC0002BC04081641328C04281411125C0438139 +:102ED00054814817590710F441505109481B590BA8 +:102EE000483C5105C8F48091BA018F70806180938D +:102EF000BA0186E0829FF001839FF00D1124E6570E +:102F0000FE4F80818F708061808385EB91E00E940D +:102F10007E13CF910C94FB162F5F3F4F2770B8CFD5 +:102F2000CF910895CF92DF92EF92FF920F931F936C +:102F3000CF93DF93CDB7DEB762970FB6F894DEBFBD +:102F40000FBECDBF8C0185E0F801DE011D9601901A +:102F50000D928A95E1F7D8014C9111965C911197E9 +:102F600012966C9112971396ED90FC9014977091B5 +:102F7000B501E091B6012091B8013091B901211558 +:102F8000310531F0EF3F31F481E07F3F19F403C0A8 +:102F900081E001C080E0B82FB170CB2E80FD6CC104 +:102FA000D090B701DD2009F4F5C0F091BA01E21626 +:102FB000F30638F0C701821B930B883C910548F05B +:102FC0009BC0209530952E0D3F1D283C310508F003 +:102FD00093C08F2F807F09F052C0E51314C0741383 +:102FE00012C0D62E61110FC0FF70F061F093BA01CC +:102FF0000E941C1785EB91E00E947E138091BA011C +:10300000F80185836CC1EF2831F05F3F31F481E036 +:103010004F3F19F403C081E001C080E080FD03C090 +:1030200081E0862701C080E0F82FF170FF2E80FF3D +:103030001CC0809183012091840136E0821709F43D +:1030400028C190E0389FF001399FF00D1124EB5713 +:10305000FE4F7181571306C07081471303C0728100 +:10306000671303C001968770E9CFD62E662309F453 +:1030700036C18091BA0181608093BA0153C0E513D3 +:1030800008C0741306C0611104C0D8011596FC93E2 +:10309000AEC04D875E878D859E856A8B0E94B71670 +:1030A0006A89882329F1D62E662311F12091BA016D +:1030B000822F82958F7090E002970CF460C080910F +:1030C000B5019091B60198878F831986FB86EA86B1 +:1030D0002C87CE01079651C0E51731F14D875E87E9 +:1030E0008D859E856A8B0E94B7166A8981112EC0D4 +:1030F000C8010E947E13A4C08F2F807F69F77E2DA8 +:10310000F98AE88A89890E94DC1685EB91E00E94A1 +:103110007E13E5EBF1E086E0DF011D928A95E9F789 +:103120000E941C17D12CDBC07413D8CF6111D6CFED +:10313000D8011596FC93C8010E947E13E5EBF1E0DF +:1031400086E0DF011D928A95E9F7C9C0D62E662375 +:1031500079F22091BA01822F82958F7090E00297C8 +:1031600074F08091B5019091B6019A8389831B8296 +:10317000FD82EC822E83CE0101960E947E1386E0B2 +:10318000F801A5EBB1E001900D928A95E1F70E945C +:103190002A176FC0E216F30628F0C701821B930BB3 +:1031A0009C0104C0209530952E0D3F1D283C310513 +:1031B00008F052C0D62E662309F49ACFE5132CC02E +:1031C00074132AC08091BA0180FD1DC0982F92957A +:1031D0009F70C9F0D80115968C9315979F3039F0E0 +:1031E0009F5F9295907F8F70892B15968C93C80165 +:1031F0000E947E1386E0F801A5EBB1E001900D92EC +:103200008A95E1F736C086E0F801A5EBB1E00190C0 +:103210000D928A95E1F763C04D875E878D859E8507 +:103220000E94B716882379F086E0F801A5EBB1E09B +:1032300001900D928A95E1F70E942A170E941C17AF +:10324000DD24D3944CC08091BA0181608093BA018F +:10325000C8010E947E1343C07E2DF98AE88A8989BD +:103260000E94DC16E5EBF1E086E0DF011D928A9515 +:10327000E9F70E941C1733C0662309F439CF4D8744 +:103280005E878D859E850E94B716882309F430CF0E +:10329000CBCF4D875E878D859E850E941A1C292F76 +:1032A00022952F7030E0223031052CF49F7041F0D0 +:1032B000811106C00CC0243031052CF49F7049F4F4 +:1032C000805E883020F0C8010E947E13CF2CDC2C59 +:1032D00006C0D80115969C91907F91F7F8CF8D2D5F +:1032E00062960FB6F894DEBF0FBECDBFDF91CF91CF +:1032F0001F910F91FF90EF90DF90CF9008951F9353 +:10330000CF93DF93CDB7DEB72C970FB6F894DEBF1F +:103310000FBECDBF4F83588769877A878B879C877D +:10332000CE0107960E9492178823C1F02F8138851D +:103330008A859B85892B31F03F3F11F080E003C0E7 +:103340002F3FE1F781E0811147C04F8158856985A2 +:103350007A858B859C850E94EB163EC086E0FE0137 +:103360003796DE01119601900D928A95E1F7FF8163 +:10337000E8854A855B854115510531F0EF3F31F411 +:1033800081E0FF3F19F403C081E001C080E080FDCF +:1033900023C02091840130E0C901019687709927EC +:1033A0006091830170E086179707F1F1F983EA8352 +:1033B0005D834C8396E0929FD001939FB00D1124C2 +:1033C000AB57BE4FFE01319601900D929A95E1F7F1 +:1033D000809384010E94FB1616E0809183019091F6 +:1033E0008401891779F1189FC00111248B579E4FD2 +:1033F0000E949217882331F1E09183011E9FF00112 +:103400001124EB57FE4F4081518162817381848189 +:1034100095810E94EB168091830190E00196877060 +:10342000992780938301D9CF0E94B316109284010B +:1034300010928301E5EBF1E086E0DF011D928A95B1 +:10344000E9F7CACF2C960FB6F894DEBF0FBECDBFFA +:10345000DF91CF911F910895EF92FF920F931F93E9 +:10346000CF93DF93FC01009709F46FC0F12CEE2499 +:10347000E394EF0121968491843740F4843008F07E +:1034800055C0813081F0823021F15FC0853709F469 +:1034900047C0C0F19CE7980F903708F056C08F776F +:1034A0000E94211345C08F010E5F1F4FFE018491C2 +:1034B00090E2980F983050F48770FE2D01C0FF0FF6 +:1034C0008A95EAF78F2F0E94CA1C15C00E945912D4 +:1034D00014C08F010E5F1F4FFE01849190E2980F80 +:1034E000983068F48770FE2D01C0FF0F8A95EAF7C7 +:1034F0008F2F0E94D01C0E94F31CE80119C00E946B +:103500002113FBCFCF010296FE01C491CC2361F0C1 +:10351000EFE9FFE03197F1F700C00000C150F6CFAE +:10352000CF010296FE01F490EC0102C00E945912F4 +:103530008F2D882341F0EFE9FFE03197F1F700C0CC +:1035400000008150F6CFFE0194CFDF91CF911F9103 +:103550000F91FF90EF90089508956093BF017093CD +:10356000C0018093C1019093C2010C949F160F93E8 +:103570001F930091BF011091C0012091C1013091B2 +:10358000C201062B172B282B392B0093BF01109358 +:10359000C0012093C1013093C2011F910F910C947F +:1035A0009F160F931F930091BF011091C0012091AE +:1035B000C1013091C2010623172328233923009328 +:1035C000BF011093C0012093C1013093C2011F912C +:1035D0000F910C949F160F931F930091BF011091B0 +:1035E000C0012091C1013091C20106271727282769 +:1035F00039270093BF011093C0012093C10130937C +:10360000C2011F910F910C949F161092BB01109252 +:10361000BC011092BD011092BE010C949F1641E0B6 +:1036200050E060E070E004C0440F551F661F771F34 +:103630008A95D2F74093BB015093BC016093BD01C2 +:103640007093BE010C949F1641E050E060E070E082 +:1036500004C0440F551F661F771F8A95D2F78091CB +:10366000BB019091BC01A091BD01B091BE01842B22 +:10367000952BA62BB72B8093BB019093BC01A093F5 +:10368000BD01B093BE010C949F1641E050E060E094 +:1036900070E004C0440F551F661F771F8A95D2F74C +:1036A00040955095609570958091BB019091BC01BB +:1036B000A091BD01B091BE0184239523A623B72319 +:1036C0008093BB019093BC01A093BD01B093BE0158 +:1036D0000C949F1641E050E060E070E004C0440F9D +:1036E000551F661F771F8A95D2F78091BB01909175 +:1036F000BC01A091BD01B091BE0184279527A627EA +:10370000B7278093BB019093BC01A093BD01B093F8 +:10371000BE010C949F160F931F930091BB01109153 +:10372000BC012091BD013091BE01062B172B282B27 +:10373000392B0093BB011093BC012093BD01309342 +:10374000BE011F910F910C949F160F931F93009130 +:10375000BB011091BC012091BD013091BE01062337 +:103760001723282339230093BB011093BC01209316 +:10377000BD013093BE011F910F910C949F160F93C2 +:103780001F930091BB011091BC012091BD013091AC +:10379000BE0106271727282739270093BB0110935E +:1037A000BC012093BD013093BE011F910F910C9479 +:1037B0009F160895CF92DF92EF92FF920F931F937F +:1037C000CF93DF93EC01C090BF01D090C001E09097 +:1037D000C101F090C2018091BB019091BC01A09108 +:1037E000BD01B091BE01C82AD92AEA2AFB2A0FE1FD +:1037F00010E0B701A601002E04C076956795579595 +:1038000047950A94D2F740FD05C00150110988F789 +:1038100080E007C0BE01802F0E949A090197A9F39A +:10382000802FDF91CF911F910F91FF90EF90DF904C +:10383000CF900895CF93DF93EC010E94DA1BBE0175 +:103840000E949A09DF91CF910895CB010E941A1C22 +:10385000089590910C019923D9F090910D0199232D +:10386000B9F0982F9695969596959F3088F5E091AA +:103870000E01F0910F01E90FF11D877021E030E09A +:1038800001C0220F8A95EAF78181822B81830895F6 +:1038900040910E0150910F0120E030E09FEFFA01BE +:1038A000E20FF31F6281681799F09F3F19F46111CD +:1038B00001C0922F2F5F3F4F2E30310581F79F3F80 +:1038C00039F0FA01E90FF11D97FDFA958283089509 +:1038D000089590910C019923E1F090910D019923A5 +:1038E000C1F0982F9695969596959F3020F5E0918A +:1038F0000E01F0910F01E90FF11D877021E030E01A +:1039000001C0220F8A95EAF720958181282321831F +:10391000089540910E0150910F0120E030E0FA012E +:10392000E20FF31F9281981301C012822F5F3F4F65 +:103930002E303105A1F7089581E090E0E0910E016D +:10394000F0910F01E80FF91F108201968031910567 +:10395000A9F708959091D601982B9093D6010895D8 +:1039600080959091D60198239093D6010895109256 +:10397000D60108959091D501982B9093D501089583 +:1039800080959091D50198239093D5010895109238 +:10399000D50108959091D401982B9093D401089566 +:1039A00080959091D40198239093D401089510921A +:1039B000D40108958093C30108951092C30108951E +:1039C00040910E0150910F0120E030E080E0FA01BB +:1039D000E20FF31F918191118F5F2F5F3F4F2F30C7 +:1039E0003105A9F70895E0910E01F0910F01809142 +:1039F000D6018083E0910E01F0910F0180819091BA +:103A0000D501892B8083E0910E01F0910F01808117 +:103A10009091D401892B80839091C301992361F007 +:103A2000E0910E01F0910F018081892B80830E942B +:103A3000E01C81111092C30180910E0190910F0141 +:103A40000C943C118091EE01843021F11092D80148 +:103A500020E488E190E00FB6F894A8958093600088 +:103A60000FBE2093600080E00E94350A83B7817FFB +:103A7000846083BF83B7816083BF7894889583B760 +:103A80008E7F83BF88E10FB6F89480936000109218 +:103A900060000FBE089508950895CF930E944B1DB6 +:103AA0000E9469060E944C1DC0E08C2F0E945607A0 +:103AB000811105C0CF5FCE30C1F780E001C081E049 +:103AC000CF9108950E94B3160E9430110C94350ACC +:103AD00082E084BD93E095BD9AEF97BD80936E0020 +:103AE00008952FB7F8948091D9019091DA01A091AF +:103AF000DB01B091DC012FBF0895CF92DF92EF92EE +:103B0000FF920F931F932FB7F8944091D9015091D2 +:103B1000DA016091DB017091DC012FBF6A017B014A +:103B2000EE24FF248C0120E030E0C016D106E2062E +:103B3000F30610F441505109481B590BCA011F915B +:103B40000F91FF90EF90DF90CF9008951F920F920A +:103B50000FB60F9211248F939F93AF93BF938091D1 +:103B6000D9019091DA01A091DB01B091DC010196BD +:103B7000A11DB11D8093D9019093DA01A093DB01BF +:103B8000B093DC01BF91AF919F918F910F900FBEC9 +:103B90000F901F9018950E94360EF8942FEF87EA29 +:103BA00091E6215080409040E1F700C0000087E09E +:103BB00090EBDC018093F8019093F901A093FA0156 +:103BC000B093FB012CE088E190E00FB6F894A89543 +:103BD000809360000FBE20936000FFCFEF92FF92B2 +:103BE0000F931F93CF93DF93E82EF12C8F2D0E941C +:103BF0005607C0E0D0E0082F10E098010C2E02C05C +:103C0000359527950A94E2F720FD05C02196C63028 +:103C1000D10599F709C06C2F7F2D80E00E945E07C7 +:103C2000E812F4CF81E005C0F3948EE0F812DECF05 +:103C300080E0DF91CF911F910F91FF90EF90089559 +:103C4000CF93C82F8CE20E94EE1D882321F08C2F89 +:103C5000CF910C94EE1D80E0CF910895CF930E94F8 +:103C6000731F811102C00E94591FC5E6C15049F05F +:103C70000E9469068FE39CE90197F1F700C00000FC +:103C8000F5CF89E20E94201E811111C18AE20E94B3 +:103C9000201E81110E94591F85E00E94201E811163 +:103CA0000E94CB1D0E947E1F8093D70187E00E9457 +:103CB000201E882399F18BE10E94201E882351F059 +:103CC0009091D70191FB882780F921E0822780FB22 +:103CD00091F922C08EE00E94201E882351F090911D +:103CE000D70192FB882780F921E0822780FB92F997 +:103CF00013C080E10E94201E9091D701882341F0DB +:103D000093FB882780F921E0822780FB93F904C088 +:103D1000892F809580FB90F99093D7018091D701EE +:103D20000E94821F0E94901F8093F70180EE0E94E4 +:103D3000201E882341F08091F701982F909590FBE9 +:103D400080F98093F70189E30E94201E882359F0AF +:103D50009091F70191FB882780F921E0822780FB71 +:103D600091F99093F70182EE0E94201E882359F06A +:103D70009091F70192FB882780F921E0822780FB50 +:103D800092F99093F70186EE0E94201E882359F045 +:103D90009091F70193FB882780F921E0822780FB2F +:103DA00093F99093F70183EE0E94201E882359F027 +:103DB0009091F70194FB882780F921E0822780FB0E +:103DC00094F99093F70185E30E94201E882359F00F +:103DD0009091F70195FB882780F921E0822780FBED +:103DE00095F99093F70181E30E94201E882359F0F2 +:103DF0009091F70196FB882780F921E0822780FBCC +:103E000096F99093F70181E10E94201E882359F0D2 +:103E10009091F70197FB882780F921E0822780FBAA +:103E200097F99093F7018091F7010E94941F809178 +:103E3000F70187FB882780F980930D0187E20E94B4 +:103E4000201EC82F8EE10E94201E8111C2608FE1CA +:103E50000E94201E8111C46080E20E94201E8111F8 +:103E6000C86081E20E94201E8111C06182E20E942E +:103E7000201E8111C06283E20E94201E8111C06455 +:103E800084E20E94201E882311F0C06802C0CC2367 +:103E900029F08C2F0E948B1F6C2F03C00E94871F5C +:103EA000682F70E080E090E0CF910C94AD1ACF9134 +:103EB00008956DEE7EEF80E090E00E94B12560E015 +:103EC00082E090E00E949F2560E083E090E00E9405 +:103ED0009F2560E084E090E00E949F2560E085E0FF +:103EE00090E00C949F2580E090E00E94992521E0CD +:103EF0008D3E9E4F09F020E0822F089582E090E0F1 +:103F00000C949125682F82E090E00C949F2583E02B +:103F100090E00C949125682F83E090E00C949F250D +:103F200084E090E00C949125682F84E090E00C945C +:103F30009F258091DF0180FF0BC06091130185E018 +:103F4000689FB001112475956795759567952AC08E +:103F500081FF09C06091130185E0689FB0011124C1 +:103F6000759567951FC082FF07C06091130185E0BA +:103F7000689FB001112416C04091E0014423C9F0AC +:103F800060911201461788F72091130185E0289F60 +:103F900090011124429FC001439F900D112470E0B5 +:103FA0000E9463256038710540F46115710539F090 +:103FB00002C065E070E0862F08958FE7089581E0E4 +:103FC00008958091DF0180FF08C06091110170E0C9 +:103FD000759567957595679521C081FF06C06091BD +:103FE000110170E07595679519C082FF04C060915A +:103FF000110170E010C08091E0018823C1F0609150 +:1040000010018617A0F790911101989FC00111240B +:1040100070E00E9463256038710528F46115710510 +:1040200021F0862F08958FE7089581E0089561E0DB +:1040300070E0F4CF803F21F40E94991F819504C065 +:10404000813F29F40E94991F8093E3010895823FE4 +:1040500021F40E94991F819504C0833F29F40E9496 +:10406000991F8093E2010895893F19F40E94E11F8E +:1040700005C08A3F31F40E94E11F81958093E401DD +:1040800008958B3F21F40E94E11F819504C08C3F6D +:1040900029F40E94E11F8093E5010895843F21F4F3 +:1040A0008091E101816017C0853F21F48091E10199 +:1040B000826011C0863F21F48091E10184600BC0D1 +:1040C000873F21F48091E101886005C0883F31F489 +:1040D0008091E10180618093E10108958D3F21F499 +:1040E0008091DF0181600BC08E3F21F48091DF0160 +:1040F000826005C08F3F29F48091DF018460809346 +:10410000DF010895803F39F48091E30187FF6CC09F +:104110001092E30169C0813F29F48091E3011816F0 +:10412000BCF362C09091E201823F29F497FF5CC02A +:104130001092E20159C0833F19F41916CCF354C010 +:10414000893F41F48091E40118160CF04DC01092A3 +:10415000E4014AC08A3F29F48091E40187FF44C00A +:10416000F6CF8B3F39F48091E50187FF3DC0109277 +:10417000E5013AC08C3F29F48091E5011816BCF3A3 +:1041800033C0843F21F48091E1018E7F17C0853FC9 +:1041900021F48091E1018D7F11C0863F21F480914F +:1041A000E1018B7F0BC0873F21F48091E101877F84 +:1041B00005C0883F31F48091E1018F7E8093E10159 +:1041C00013C08D3F21F48091DF018E7F0BC08E3FA5 +:1041D00021F48091DF018D7F05C08F3F29F480910C +:1041E000DF018B7F8093DF018091E20181110EC09E +:1041F0008091E30181110AC08091E401811106C020 +:104200008091E501811102C01092E001089581EED4 +:1042100091E00E9447110E94711D9093DE018093EE +:10422000DD0108951F93CF93DF938091DD0190917D +:10423000DE010E947D1D4091E001442321F0209188 +:10424000140130E006C0209115015AE0259F90012D +:1042500011248217930708F482C08091E201109123 +:10426000E301D091E401C091E501811107C0111172 +:1042700005C0D11103C0CC2309F471C04F3F19F020 +:104280004F5F4093E001181624F40E94991F809319 +:10429000E2018091E20187FF05C00E94991F81958C +:1042A0008093E201111624F40E94991F8093E30188 +:1042B0008091E30187FF05C00E94991F819580933B +:1042C000E3016091E201662339F11091E3011123CA +:1042D00019F1772767FD7095872F972F0E94742417 +:1042E00023E333E343E35FE30E94D8240E944124A5 +:1042F0006093E201612F772767FD7095872F972FD5 +:104300000E94742423E333E343E35FE30E94D82451 +:104310000E9441246093E3011D1624F40E94E11FD2 +:104320008093E4018091E40187FF05C00E94E11FB2 +:1043300081958093E4011C1624F40E94E11F809370 +:10434000E5018091E50187FF05C00E94E11F81958D +:104350008093E501DF91CF911F910C940721DF91AC +:10436000CF911F910895E1EEF1E085E0DF011D920C +:104370008A95E9F71092E0011092DF0108958330E9 +:1043800081F128F4813059F08230D1F008958530E0 +:1043900009F449C0B8F1863009F456C00895209157 +:1043A0001501862F90E0820F911D8F3F910520F41B +:1043B000620F6093150108958FEF809315010895A2 +:1043C00020911401862F90E0820F911D8F3F91055F +:1043D00020F4620F6093140108958FEF809314010D +:1043E000089520911301862F90E0820F911D8F3F39 +:1043F000910520F4620F6093130108958FEF80936D +:104400001301089520911201862F90E0820F911DD3 +:104410008F3F910520F4620F6093120108958FEF92 +:1044200080931201089520911101862F90E0820F50 +:10443000911D8F3F910520F4620F60931101089543 +:104440008FEF80931101089520911001862F90E045 +:10445000820F911D8F3F910520F4620F6093100130 +:1044600008958FEF809310010895833011F128F49F +:10447000813049F0823091F00895853081F120F14A +:104480008630C1F1089580911501681720F4861BCC +:1044900080931501089510921501089580911401DB +:1044A000681720F4861B809314010895109214015C +:1044B000089580911301681720F4861B80931301DF +:1044C000089510921301089580911201681720F445 +:1044D000861B809312010895109212010895809115 +:1044E0001101681720F4861B809311010895109222 +:1044F0001101089580911001681720F4861B8093A4 +:10450000100108951092100108958D3109F442C0F0 +:1045100020F58E3009F477C070F4873009F459C063 +:1045200018F48630F1F134C0883009F4A8C08B301B +:1045300009F4A5C02DC0863109F4A1C038F480313A +:1045400009F472C0813109F479C022C0893109F4BB +:1045500096C08B3109F44DC01BC0853309F487C068 +:1045600048F4873209F483C008F473C0893209F42F +:104570007EC00EC0833438F48A3308F068C08833B4 +:1045800009F47DC005C0833409F471C0883499F002 +:1045900080E008950E94FB230E9430110E94350A9A +:1045A0006EC08091D701817F8E7F8093D70181E09B +:1045B0008093E70108950E94B3162FEF83ED90E3F7 +:1045C000215080409040E1F700C000000E94CB1DC8 +:1045D00056C09091D701892F8095817080FB90F90A +:1045E00019F0966098601DC0997F977F9093D701CE +:1045F00046C09091D70191FB882780F921E082275E +:1046000080FB91F909C09091D70192FB882780F92E +:1046100021E0822780FB92F99093D701882379F1DA +:1046200091609093D70108959091D70193FB8827CB +:1046300080F921E0822780FB93F9EECF0E94B31628 +:1046400080910D0191E0892780930D0118C027EC1E +:1046500001C023EE280F61E070E080E090E004C02C +:10466000660F771F881F991F2A95D2F704C061E053 +:1046700070E080E090E00E94AD1A0E94B31681E0E5 +:10468000089580E0089580E00895CF93C82F809129 +:10469000E701813079F018F08230D1F184C0A09127 +:1046A0000E01B0910F018C91813169F0823209F0D5 +:1046B0007CC009C0A0910E01B0910F018C91813195 +:1046C00011F0823249F48C2F0E94412381111DC0C8 +:1046D0008C2F0E9485221AC08C2F0E9443238111A7 +:1046E00014C0C43179F048F4CB3079F0C03109F00E +:1046F00060C082E08093E70108C0C93219F0C83376 +:1047000021F057C01092E70154C081E0817053C07E +:10471000C93289F118F5C43171F1A8F4C73009F034 +:1047200046C08AE08093150194E19093140193E0D0 +:10473000909313018093120188E08093110188E225 +:104740008093100134C0CE51C63088F5EC2FF0E0D4 +:10475000E65DFE4F80818093E60129C0CE34E9F00A +:1047600020F4CB3421F56AE013C0C13579F0C235AD +:10477000F1F461E00DC08091E601882319F01092F8 +:10478000E60115C081E08093E70115C061E006C035 +:104790008091E6010E94BF210AC06AE08091E60193 +:1047A0000E94352204C01092E70180E004C081E03D +:1047B00002C080E0ABCFCF910895E1E8F0E08081C6 +:1047C000886080838081816080838FB7F89493E0D4 +:1047D0009093890090ED909388008FBF0895EFE645 +:1047E000F0E08081826080830895EFE6F0E08081D0 +:1047F0008D7F80830895EFE6F0E0808192E0892745 +:10480000808308951F920F920FB60F9211242F9359 +:104810003F934F935F936F937F938F939F93AF9348 +:10482000BF93EF93FF938091E8019091E901019686 +:104830009093E9018093E801811103C082E00E9416 +:10484000350AE091E901E695E695F0E0E257FA4F86 +:10485000E4918091E8018E1303C080E00E94350A44 +:10486000FF91EF91BF91AF919F918F917F916F9148 +:104870005F914F913F912F910F900FBE0F901F901E +:10488000189504D06894B1118DC0089570D088F047 +:104890009F5790F0B92F9927B751A0F0D1F0660F2C +:1048A000771F881F991F1AF0BA95C9F712C0B13047 +:1048B00081F077D0B1E0089574C0672F782F8827F2 +:1048C000B85F39F0B93FCCF3869577956795B39586 +:1048D000D9F73EF490958095709561957F4F8F4FF5 +:1048E0009F4F0895E89409C097FB3EF490958095FA +:1048F000709561957F4F8F4F9F4F9923A9F0F92FA6 +:1049000096E9BB279395F695879577956795B79523 +:10491000F111F8CFFAF4BB0F11F460FF1BC06F5F09 +:104920007F4F8F4F9F4F16C0882311F096E911C01B +:10493000772321F09EE8872F762F05C0662371F03C +:1049400096E8862F70E060E02AF09A95660F771F50 +:10495000881FDAF7880F9695879597F9089557FD80 +:104960009058440F551F59F05F3F71F04795880FDD +:1049700097FB991F61F09F3F79F087950895121674 +:1049800013061406551FF2CF4695F1DF08C0161620 +:1049900017061806991FF1CF8695710561050894D1 +:1049A0000895E894BB2766277727CB0197F90895E8 +:1049B0000BD078C069D028F06ED018F0952309F09C +:1049C0005AC05FC01124EECFCADFA0F3959FD1F388 +:1049D000950F50E0551F629FF001729FBB27F00DAD +:1049E000B11D639FAA27F00DB11DAA1F649F662702 +:1049F000B00DA11D661F829F2227B00DA11D621F51 +:104A0000739FB00DA11D621F839FA00D611D221F0A +:104A1000749F3327A00D611D231F849F600D211DEE +:104A2000822F762F6A2F11249F5750408AF0E1F091 +:104A300088234AF0EE0FFF1FBB1F661F771F881FDA +:104A400091505040A9F79E3F510570F014C0AACF75 +:104A50005F3FECF3983EDCF3869577956795B795C5 +:104A6000F795E7959F5FC1F7FE2B880F911D9695EF +:104A7000879597F9089597F99F6780E870E060E05F +:104A800008959FEF80EC089500240A9416161706E7 +:104A900018060906089500240A941216130614062F +:104AA00005060895092E0394000C11F4882352F092 +:104AB000BB0F40F4BF2B11F460FF04C06F5F7F4F4A +:104AC0008F4F9F4F089597FB072E16F4009407D041 +:104AD00077FD09D00E947D2507FC05D03EF4909516 +:104AE00081959F4F0895709561957F4F0895EE0FC2 +:104AF000FF1F0590F491E02D0994AA1BBB1B51E107 +:104B000007C0AA1FBB1FA617B70710F0A61BB70B3D +:104B1000881F991F5A95A9F780959095BC01CD01E2 +:104B20000895F999FECF92BD81BDF89A992780B575 +:104B30000895A8E1B0E042E050E00C94B925262F9A +:104B4000F999FECF92BD81BDF89A019700B4021683 +:104B500039F01FBA20BD0FB6F894FA9AF99A0FBE31 +:104B600008950196272F0E94A0250C949F25DC0113 +:104B7000CB01FC01F999FECF06C0F2BDE1BDF89A68 +:104B8000319600B40D9241505040B8F70895F89412 +:024B9000FFCF55 +:104B92002002370AC40AA10A6D0A3A0A0101C401B5 +:104BA20028080A03140A3F4D36394F050205CC0482 +:104BB200930426043F045804710401020304050609 +:044BC20007080900D7 :00000001FF diff --git a/keyboard/ergodox_ez/keymaps/ordinary/readme.md b/keyboard/ergodox_ez/keymaps/ordinary/readme.md index f264dd48fb..163b5d9021 100644 --- a/keyboard/ergodox_ez/keymaps/ordinary/readme.md +++ b/keyboard/ergodox_ez/keymaps/ordinary/readme.md @@ -67,7 +67,7 @@ Alas, the yellow keys have at best spotty success with common software. Good luc ## Switching Between Layers ## -In addition to Symbols and Media the Ordinary Layout treats the Capitals as a logical layer. Each layer is accessed by a shift key on each edge of the keyboard and corresponds to one of the three LEDs on the keyboard: Capitals (red), Symbols (green), Media (blue). The color of a layer illuminates when the layer is active. +In addition to Symbols and Media there is the Capitals layer which is exactly the same as pressing the shift key. (Note: it is exactly the same as pressing the *left* shift key; the *right* shift key is only available on the Media layer because holding both shift keys is the 'magic' command combo for this keyboard so it is inconviently locate to minimize accidents.) Each layer is accessed by a shift key on each edge of the keyboard and corresponds to one of the three LEDs on the keyboard: Capitals (red), Symbols (green), Media (blue). The color of a layer illuminates when the layer is active. Shift buttons work in the expected way: press them and all of the keys switch to that layer; release them and the keys switch back to the base layer. Lock layers using the Shift key in conjunction with the Shift Lock key. For instance, the widely and rightly loathed Caps Lock is engaged by pressing the Shift Lock button then Capitals Shift. Or, hold down the Shift key and press the Shift Lock key; it works either way. All the Shift keys work this way. -- cgit v1.2.1 From a096d205aac6f03203e69b5dc876a4983b1f08ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stephan=20Bo=CC=88sebeck?= Date: Thu, 5 May 2016 16:48:51 +0200 Subject: making default osx more ELG conform --- keyboard/ergodox_ez/keymaps/default_osx/keymap.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/keyboard/ergodox_ez/keymaps/default_osx/keymap.c b/keyboard/ergodox_ez/keymaps/default_osx/keymap.c index 81b49ceff9..e4c3df8048 100644 --- a/keyboard/ergodox_ez/keymaps/default_osx/keymap.c +++ b/keyboard/ergodox_ez/keymaps/default_osx/keymap.c @@ -1,4 +1,4 @@ -// Netable differences vs. the default firmware for the ErgoDox EZ: + Date: Thu, 5 May 2016 16:52:40 +0200 Subject: remove typo --- keyboard/ergodox_ez/keymaps/default_osx/keymap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboard/ergodox_ez/keymaps/default_osx/keymap.c b/keyboard/ergodox_ez/keymaps/default_osx/keymap.c index e4c3df8048..c57ffbb889 100644 --- a/keyboard/ergodox_ez/keymaps/default_osx/keymap.c +++ b/keyboard/ergodox_ez/keymaps/default_osx/keymap.c @@ -1,4 +1,4 @@ - Date: Thu, 5 May 2016 12:05:09 -0400 Subject: updates atreus's column mapping --- keyboard/atreus/config.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboard/atreus/config.h b/keyboard/atreus/config.h index ca0cd7e47a..55d3b62b92 100644 --- a/keyboard/atreus/config.h +++ b/keyboard/atreus/config.h @@ -36,7 +36,7 @@ along with this program. If not, see . // Change this to how you wired your keyboard // COLS: Left to right, ROWS: Top to bottom #if defined(ATREUS_ASTAR) - #define COLS (int []){ B7, D6, F7, F6, B6, D4, E6, B4, B5, C6, D7 } + #define COLS (int []){ D7, C6, B5, B4, E6, D4, B6, F6, F7, D6, B7 } #define ROWS (int []){ D0, D1, D3, D2 } #elif defined(ATREUS_TEENSY2) #define COLS (int []){ F6, F5, F4, B7, B6, B5, B4, B3, B2, B1, B0} -- cgit v1.2.1 From d4520cd3ac7550fc7243e9a76824d9ba674875c6 Mon Sep 17 00:00:00 2001 From: Tom Duckering Date: Thu, 5 May 2016 23:27:28 +0100 Subject: Referencing the hex file (#309) Seems that this is a typo. When I used the hex file it worked so presuming that means it's right ;) --- quantum/tools/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/quantum/tools/README.md b/quantum/tools/README.md index 0702144238..5f355256de 100644 --- a/quantum/tools/README.md +++ b/quantum/tools/README.md @@ -1,6 +1,6 @@ `eeprom_reset.hex` is to reset the eeprom on the Atmega32u4, like this: dfu-programmer atmega32u4 erase - dfu-programmer atmega32u4 flash --eeprom eeprom-reset.bin + dfu-programmer atmega32u4 flash --eeprom eeprom_reset.hex - You'll need to reflash afterwards, because DFU requires the flash to be erased before messing with the eeprom. \ No newline at end of file + You'll need to reflash afterwards, because DFU requires the flash to be erased before messing with the eeprom. -- cgit v1.2.1 From 74e97eefd7ae76f9ddcb76890a30aa9038804cdb Mon Sep 17 00:00:00 2001 From: Thiago Alves Date: Thu, 5 May 2016 18:41:37 -0700 Subject: Adds oneshot layer and oneshot tap toggling (#308) This commit is mostly a cherry-pick from `ahtn` at https://github.com/tmk/tmk_keyboard/pull/255. These are the changes: * Adds ACTION_LAYER_ONESHOT * Adds ONESHOT_TAP_TOGGLE * Mentions sticky keys in the docs on oneshot. --- tmk_core/common/action.c | 97 +++++++++++++++++++++++++++++++++++++++---- tmk_core/common/action_code.h | 5 ++- tmk_core/common/action_util.c | 70 +++++++++++++++++++++++++++++-- tmk_core/common/action_util.h | 20 +++++++++ tmk_core/doc/keymap.md | 8 +++- 5 files changed, 186 insertions(+), 14 deletions(-) diff --git a/tmk_core/common/action.c b/tmk_core/common/action.c index f9e6c17dc3..081e90b2db 100644 --- a/tmk_core/common/action.c +++ b/tmk_core/common/action.c @@ -74,6 +74,7 @@ void process_action_kb(keyrecord_t *record) {} void process_action(keyrecord_t *record) { + bool do_release_oneshot = false; keyevent_t event = record->event; #ifndef NO_ACTION_TAPPING uint8_t tap_count = record->tap.count; @@ -81,6 +82,13 @@ void process_action(keyrecord_t *record) if (IS_NOEVENT(event)) { return; } +#if (defined(ONESHOT_TIMEOUT) && (ONESHOT_TIMEOUT > 0)) + if (has_oneshot_layer_timed_out()) { + dprintf("Oneshot layer: timeout\n"); + clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED); + } +#endif + process_action_kb(record); action_t action = store_or_get_action(event.pressed, event.key); @@ -95,6 +103,15 @@ void process_action(keyrecord_t *record) // clear the potential weak mods left by previously pressed keys clear_weak_mods(); } + +#ifndef NO_ACTION_ONESHOT + // notice we only clear the one shot layer if the pressed key is not a modifier. + if (is_oneshot_layer_active() && event.pressed && !IS_MOD(action.key.code)) { + clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED); + do_release_oneshot = !is_oneshot_layer_active(); + } +#endif + switch (action.kind.id) { /* Key and Mods */ case ACT_LMODS: @@ -139,24 +156,37 @@ void process_action(keyrecord_t *record) // Oneshot modifier if (event.pressed) { if (tap_count == 0) { + dprint("MODS_TAP: Oneshot: 0\n"); register_mods(mods); - } - else if (tap_count == 1) { + } else if (tap_count == 1) { dprint("MODS_TAP: Oneshot: start\n"); set_oneshot_mods(mods); - } - else { + #if defined(ONESHOT_TAP_TOGGLE) && ONESHOT_TAP_TOGGLE > 1 + } else if (tap_count == ONESHOT_TAP_TOGGLE) { + dprint("MODS_TAP: Toggling oneshot"); + clear_oneshot_mods(); + set_oneshot_locked_mods(mods); + register_mods(mods); + #endif + } else { register_mods(mods); } } else { if (tap_count == 0) { clear_oneshot_mods(); unregister_mods(mods); - } - else if (tap_count == 1) { + } else if (tap_count == 1) { // Retain Oneshot mods - } - else { + #if defined(ONESHOT_TAP_TOGGLE) && ONESHOT_TAP_TOGGLE > 1 + if (mods & get_mods()) { + clear_oneshot_locked_mods(); + clear_oneshot_mods(); + unregister_mods(mods); + } + } else if (tap_count == ONESHOT_TAP_TOGGLE) { + // Toggle Oneshot Layer + #endif + } else { clear_oneshot_mods(); unregister_mods(mods); } @@ -309,6 +339,44 @@ void process_action(keyrecord_t *record) event.pressed ? layer_move(action.layer_tap.val) : layer_clear(); break; + #ifndef NO_ACTION_ONESHOT + case OP_ONESHOT: + // Oneshot modifier + #if defined(ONESHOT_TAP_TOGGLE) && ONESHOT_TAP_TOGGLE > 1 + do_release_oneshot = false; + if (event.pressed) { + del_mods(get_oneshot_locked_mods()); + if (get_oneshot_layer_state() == ONESHOT_TOGGLED) { + reset_oneshot_layer(); + layer_off(action.layer_tap.val); + break; + } else if (tap_count < ONESHOT_TAP_TOGGLE) { + layer_on(action.layer_tap.val); + set_oneshot_layer(action.layer_tap.val, ONESHOT_START); + } + } else { + add_mods(get_oneshot_locked_mods()); + if (tap_count >= ONESHOT_TAP_TOGGLE) { + reset_oneshot_layer(); + clear_oneshot_locked_mods(); + set_oneshot_layer(action.layer_tap.val, ONESHOT_TOGGLED); + } else { + clear_oneshot_layer_state(ONESHOT_PRESSED); + } + } + #else + if (event.pressed) { + layer_on(action.layer_tap.val); + set_oneshot_layer(action.layer_tap.val, ONESHOT_START); + } else { + clear_oneshot_layer_state(ONESHOT_PRESSED); + if (tap_count > 1) { + clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED); + } + } + #endif + break; + #endif default: /* tap key */ if (event.pressed) { @@ -372,6 +440,18 @@ void process_action(keyrecord_t *record) default: break; } + +#ifndef NO_ACTION_ONESHOT + /* Because we switch layers after a oneshot event, we need to release the + * key before we leave the layer or no key up event will be generated. + */ + if (do_release_oneshot && !(get_oneshot_layer_state() & ONESHOT_PRESSED ) ) { + record->event.pressed = false; + layer_on(get_oneshot_layer()); + process_action(record); + layer_off(get_oneshot_layer()); + } +#endif } @@ -560,6 +640,7 @@ bool is_tap_key(keypos_t key) switch (action.layer_tap.code) { case 0x00 ... 0xdf: case OP_TAP_TOGGLE: + case OP_ONESHOT: return true; } return false; diff --git a/tmk_core/common/action_code.h b/tmk_core/common/action_code.h index 2b0b0b077e..ca729aaece 100644 --- a/tmk_core/common/action_code.h +++ b/tmk_core/common/action_code.h @@ -76,7 +76,8 @@ along with this program. If not, see . * 101E|LLLL|1111 0001 On/Off (0xF1) [NOT TAP] * 101E|LLLL|1111 0010 Off/On (0xF2) [NOT TAP] * 101E|LLLL|1111 0011 Set/Clear (0xF3) [NOT TAP] - * 101E|LLLL|1111 xxxx Reserved (0xF4-FF) + * 101E|LLLL|1111 0100 One Shot Layer (0xF4) [TAP] + * 101E|LLLL|1111 xxxx Reserved (0xF5-FF) * ELLLL: layer 0-31(E: extra bit for layer 16-31) * * @@ -250,6 +251,7 @@ enum layer_pram_tap_op { OP_ON_OFF, OP_OFF_ON, OP_SET_CLEAR, + OP_ONESHOT, }; #define ACTION_LAYER_BITOP(op, part, bits, on) (ACT_LAYER<<12 | (op)<<10 | (on)<<8 | (part)<<5 | ((bits)&0x1f)) #define ACTION_LAYER_TAP(layer, key) (ACT_LAYER_TAP<<12 | (layer)<<8 | (key)) @@ -266,6 +268,7 @@ enum layer_pram_tap_op { #define ACTION_LAYER_ON_OFF(layer) ACTION_LAYER_TAP((layer), OP_ON_OFF) #define ACTION_LAYER_OFF_ON(layer) ACTION_LAYER_TAP((layer), OP_OFF_ON) #define ACTION_LAYER_SET_CLEAR(layer) ACTION_LAYER_TAP((layer), OP_SET_CLEAR) +#define ACTION_LAYER_ONESHOT(layer) ACTION_LAYER_TAP((layer), OP_ONESHOT) #define ACTION_LAYER_MODS(layer, mods) ACTION_LAYER_TAP((layer), 0xe0 | ((mods)&0x0f)) /* With Tapping */ #define ACTION_LAYER_TAP_KEY(layer, key) ACTION_LAYER_TAP((layer), (key)) diff --git a/tmk_core/common/action_util.c b/tmk_core/common/action_util.c index a2d6577b24..61ff202bef 100644 --- a/tmk_core/common/action_util.c +++ b/tmk_core/common/action_util.c @@ -18,6 +18,7 @@ along with this program. If not, see . #include "report.h" #include "debug.h" #include "action_util.h" +#include "action_layer.h" #include "timer.h" static inline void add_key_byte(uint8_t code); @@ -47,11 +48,70 @@ report_keyboard_t *keyboard_report = &(report_keyboard_t){}; #ifndef NO_ACTION_ONESHOT static int8_t oneshot_mods = 0; +static int8_t oneshot_locked_mods = 0; +int8_t get_oneshot_locked_mods(void) { return oneshot_locked_mods; } +void set_oneshot_locked_mods(int8_t mods) { oneshot_locked_mods = mods; } +void clear_oneshot_locked_mods(void) { oneshot_locked_mods = 0; } #if (defined(ONESHOT_TIMEOUT) && (ONESHOT_TIMEOUT > 0)) static int16_t oneshot_time = 0; +inline bool has_oneshot_mods_timed_out() { + return TIMER_DIFF_16(timer_read(), oneshot_time) >= ONESHOT_TIMEOUT; +} #endif #endif +/* oneshot layer */ +#ifndef NO_ACTION_ONESHOT +/* oneshot_layer_data bits +* LLLL LSSS +* where: +* L => are layer bits +* S => oneshot state bits +*/ +static int8_t oneshot_layer_data = 0; + +inline uint8_t get_oneshot_layer(void) { return oneshot_layer_data >> 3; } +inline uint8_t get_oneshot_layer_state(void) { return oneshot_layer_data & 0b111; } + +#if (defined(ONESHOT_TIMEOUT) && (ONESHOT_TIMEOUT > 0)) +static int16_t oneshot_layer_time = 0; +inline bool has_oneshot_layer_timed_out() { + return TIMER_DIFF_16(timer_read(), oneshot_layer_time) >= ONESHOT_TIMEOUT && + !(get_oneshot_layer_state() & ONESHOT_TOGGLED); +} +#endif + +/* Oneshot layer */ +void set_oneshot_layer(uint8_t layer, uint8_t state) +{ + oneshot_layer_data = layer << 3 | state; + layer_on(layer); +#if (defined(ONESHOT_TIMEOUT) && (ONESHOT_TIMEOUT > 0)) + oneshot_layer_time = timer_read(); +#endif +} +void reset_oneshot_layer(void) { + oneshot_layer_data = 0; +#if (defined(ONESHOT_TIMEOUT) && (ONESHOT_TIMEOUT > 0)) + oneshot_layer_time = 0; +#endif +} +void clear_oneshot_layer_state(oneshot_fullfillment_t state) +{ + uint8_t start_state = oneshot_layer_data; + oneshot_layer_data &= ~state; + if (!get_oneshot_layer_state() && start_state != oneshot_layer_data) { + layer_off(get_oneshot_layer()); +#if (defined(ONESHOT_TIMEOUT) && (ONESHOT_TIMEOUT > 0)) + oneshot_layer_time = 0; +#endif + } +} +bool is_oneshot_layer_active(void) +{ + return get_oneshot_layer_state(); +} +#endif void send_keyboard_report(void) { keyboard_report->mods = real_mods; @@ -60,7 +120,7 @@ void send_keyboard_report(void) { #ifndef NO_ACTION_ONESHOT if (oneshot_mods) { #if (defined(ONESHOT_TIMEOUT) && (ONESHOT_TIMEOUT > 0)) - if (TIMER_DIFF_16(timer_read(), oneshot_time) >= ONESHOT_TIMEOUT) { + if (has_oneshot_mods_timed_out()) { dprintf("Oneshot: timeout\n"); clear_oneshot_mods(); } @@ -70,6 +130,7 @@ void send_keyboard_report(void) { clear_oneshot_mods(); } } + #endif host_keyboard_send(keyboard_report); } @@ -143,11 +204,12 @@ void clear_oneshot_mods(void) oneshot_time = 0; #endif } +uint8_t get_oneshot_mods(void) +{ + return oneshot_mods; +} #endif - - - /* * inspect keyboard state */ diff --git a/tmk_core/common/action_util.h b/tmk_core/common/action_util.h index 1a95cec10e..dd0c4c2bfe 100644 --- a/tmk_core/common/action_util.h +++ b/tmk_core/common/action_util.h @@ -56,10 +56,30 @@ void clear_macro_mods(void); /* oneshot modifier */ void set_oneshot_mods(uint8_t mods); +uint8_t get_oneshot_mods(void); void clear_oneshot_mods(void); void oneshot_toggle(void); void oneshot_enable(void); void oneshot_disable(void); +bool has_oneshot_mods_timed_out(void); + +int8_t get_oneshot_locked_mods(void); +void set_oneshot_locked_mods(int8_t mods); +void clear_oneshot_locked_mods(void); + +typedef enum { + ONESHOT_PRESSED = 0b01, + ONESHOT_OTHER_KEY_PRESSED = 0b10, + ONESHOT_START = 0b11, + ONESHOT_TOGGLED = 0b100 +} oneshot_fullfillment_t; +void set_oneshot_layer(uint8_t layer, uint8_t state); +uint8_t get_oneshot_layer(void); +void clear_oneshot_layer_state(oneshot_fullfillment_t state); +void reset_oneshot_layer(void); +bool is_oneshot_layer_active(void); +uint8_t get_oneshot_layer_state(void); +bool has_oneshot_layer_timed_out(void); /* inspect */ uint8_t has_anykey(void); diff --git a/tmk_core/doc/keymap.md b/tmk_core/doc/keymap.md index d4a129b208..4d42fbe5cb 100644 --- a/tmk_core/doc/keymap.md +++ b/tmk_core/doc/keymap.md @@ -528,14 +528,20 @@ This is a feature to assign both toggle layer and momentary switch layer action ### 4.3 Oneshot Modifier -This runs onetime effects which modify only on just one following key. It works as normal modifier key when holding down while oneshot modifier when tapping. +This runs onetime effects which modify only on just one following key. It works as normal modifier key when holding down while oneshot modifier when tapping. The behavior of oneshot modifiers is similar to the [sticky keys](https://en.wikipedia.org/wiki/StickyKeys) functionality found in most operating systems. ACTION_MODS_ONESHOT(MOD_LSFT) +Oneshot layer key: + + ACTION_LAYER_ONESHOT(MY_LAYER) + Say you want to type 'The', you have to push and hold Shift key before type 't' then release it before type 'h' and 'e', otherwise you'll get 'THe' or 'the' unintentionally. With Oneshot Modifier you can tap Shift then type 't', 'h' and 'e' normally, you don't need to holding Shift key properly here. This mean you can release Shift before 't' is pressed down. Oneshot effect is cancel unless following key is pressed down within `ONESHOT_TIMEOUT` of `config.h`. No timeout when it is `0` or not defined. +Most implementations of sticky keys allow you to lock a modifier by double tapping the modifier. The layer then remains locked untill the modifier is tapped again. To enable this behaviour for oneshot modifiers set `ONESHOT_TAP_TOGGLE` to the number taps required. The feature is disabled if `ONESHOT_TAP_TOGGLE<2` or not defined. + ### 4.4 Tap Toggle Mods Similar to layer tap toggle, this works as a momentary modifier when holding, but toggles on with several taps. A single tap will 'unstick' the modifier again. -- cgit v1.2.1 From 41b3e399b1d43db9574c6016951d92974b3d93e7 Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Thu, 5 May 2016 21:50:51 -0400 Subject: adds keycode shortcuts for OSL and OSM --- quantum/keymap_common.c | 8 ++++++++ quantum/keymap_common.h | 6 ++++++ 2 files changed, 14 insertions(+) diff --git a/quantum/keymap_common.c b/quantum/keymap_common.c index 5e78d1157d..8f00f9cc32 100644 --- a/quantum/keymap_common.c +++ b/quantum/keymap_common.c @@ -272,6 +272,14 @@ static action_t keycode_to_action(uint16_t keycode) // Set default layer int layer = keycode & 0xFF; action.code = ACTION_LAYER_TOGGLE(layer); + } else if (type == 0x5) { + // OSL(layer) - One-shot layer + int layer = keycode & 0xFF; + action.code = ACTION_LAYER_ONESHOT(layer); + } else if (type == 0x6) { + // OSM(mod) - One-shot mod + int mod = keycode & 0xFF; + action.code = ACTION_MODS_ONESHOT(mod); } break; #ifdef MIDI_ENABLE diff --git a/quantum/keymap_common.h b/quantum/keymap_common.h index 0ede0296b9..ae10bc78d6 100644 --- a/quantum/keymap_common.h +++ b/quantum/keymap_common.h @@ -205,6 +205,12 @@ extern const uint16_t fn_actions[]; // Toggle to layer - 256 layer max #define TG(layer) (layer | 0x5400) +// One-shot layer - 256 layer max +#define OSL(layer) (layer | 0x5500) + +// One-shot mod +#define OSM(layer) (layer | 0x5600) + // M-od, T-ap - 256 keycode max #define MT(mod, kc) (kc | 0x7000 | ((mod & 0xF) << 8)) #define CTL_T(kc) MT(0x1, kc) -- cgit v1.2.1 From f293bf23404ea380e779a791e8c6a78d0a2fc45e Mon Sep 17 00:00:00 2001 From: Erez Zukerman Date: Thu, 5 May 2016 22:19:29 -0400 Subject: [Jack & Erez] Removes duplicate reference, sorts whitespace --- quantum/quantum.mk | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/quantum/quantum.mk b/quantum/quantum.mk index 4a076eca4d..ff34c463a0 100644 --- a/quantum/quantum.mk +++ b/quantum/quantum.mk @@ -28,8 +28,9 @@ ifeq ($(strip $(MIDI_ENABLE)), yes) endif ifeq ($(strip $(AUDIO_ENABLE)), yes) - SRC += $(QUANTUM_DIR)/audio/audio.c $(QUANTUM_DIR)/audio/voices.c - SRC += $(QUANTUM_DIR)/audio/audio.c $(QUANTUM_DIR)/audio/luts.c + SRC += $(QUANTUM_DIR)/audio/audio.c + SRC += $(QUANTUM_DIR)/audio/voices.c + SRC += $(QUANTUM_DIR)/audio/luts.c endif ifeq ($(strip $(UNICODE_ENABLE)), yes) -- cgit v1.2.1 From 8ffc73fcbdddf4ba11aa18658d9aaf7bdd9145c5 Mon Sep 17 00:00:00 2001 From: Erez Zukerman Date: Thu, 5 May 2016 22:19:59 -0400 Subject: [Jack & Erez] Adds an option for user-specific config.h files --- tmk_core/rules.mk | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/tmk_core/rules.mk b/tmk_core/rules.mk index 860fc1a931..69c7985b48 100644 --- a/tmk_core/rules.mk +++ b/tmk_core/rules.mk @@ -142,6 +142,9 @@ CFLAGS += $(CSTANDARD) ifdef CONFIG_H CFLAGS += -include $(CONFIG_H) endif +ifdef CONFIG_USER_H + CFLAGS += -include $(CONFIG_USER_H) +endif #---------------- Compiler Options C++ ---------------- @@ -176,6 +179,9 @@ CPPFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS)) ifdef CONFIG_H CPPFLAGS += -include $(CONFIG_H) endif +ifdef CONFIG_USER_H + CPPFLAGS += -include $(CONFIG_USER_H) +endif #---------------- Assembler Options ---------------- @@ -192,6 +198,9 @@ ASFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS)) ifdef CONFIG_H ASFLAGS += -include $(CONFIG_H) endif +ifdef CONFIG_USER_H + ASFLAGS += -include $(CONFIG_USER_H) +endif #---------------- Library Options ---------------- -- cgit v1.2.1 From 3a9d1c4279d4ccc6430e65f8d4d3ff2a6b11dac1 Mon Sep 17 00:00:00 2001 From: Erez Zukerman Date: Thu, 5 May 2016 22:23:32 -0400 Subject: [Jack & Erez] Enables config_user.h per keymap --- keyboard/ergodox_ez/Makefile | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/keyboard/ergodox_ez/Makefile b/keyboard/ergodox_ez/Makefile index 5dfcca2c80..3a07ec254f 100644 --- a/keyboard/ergodox_ez/Makefile +++ b/keyboard/ergodox_ez/Makefile @@ -101,6 +101,22 @@ NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: ht # MIDI_ENABLE = yes # MIDI controls # UNICODE_ENABLE = yes # Unicode +# If you want to have your own config_user.h, you can just put it in +# your keymap directory. Anything you set there will take precedence +# over the global config.h. +ifneq ("$(wildcard keymaps/$(KEYMAP)/config_user.h)","") +CONFIG_USER_H = keymaps/$(KEYMAP)/config_user.h +endif + +ifdef KEYMAP + +ifeq ("$(wildcard keymaps/$(KEYMAP).c)","") +ifneq ("$(wildcard keymaps/$(KEYMAP)/makefile.mk)","") + include keymaps/$(KEYMAP)/makefile.mk +endif +endif +endif + # Optimize size but this may cause error "relocation truncated to fit" #EXTRALDFLAGS = -Wl,--relax -- cgit v1.2.1 From cd30f971ae61aa5b676cb9140792b750b1e5b664 Mon Sep 17 00:00:00 2001 From: Erez Zukerman Date: Thu, 5 May 2016 22:24:09 -0400 Subject: [Jack & Erez] Creates a makefile.mk and a config file for the experimental layout --- keyboard/ergodox_ez/keymaps/erez_experimental/config_user.h | 8 ++++++++ keyboard/ergodox_ez/keymaps/erez_experimental/makefile.mk | 5 +++++ 2 files changed, 13 insertions(+) create mode 100644 keyboard/ergodox_ez/keymaps/erez_experimental/config_user.h create mode 100644 keyboard/ergodox_ez/keymaps/erez_experimental/makefile.mk diff --git a/keyboard/ergodox_ez/keymaps/erez_experimental/config_user.h b/keyboard/ergodox_ez/keymaps/erez_experimental/config_user.h new file mode 100644 index 0000000000..d19c2783c3 --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/erez_experimental/config_user.h @@ -0,0 +1,8 @@ +#ifndef CONFIG_USER_H +#define CONFIG_USER_H + +#include "config.h" +#define ONESHOT_TAP_TOGGLE 2 +#define ONESHOT_TIMEOUT 3000 + +#endif diff --git a/keyboard/ergodox_ez/keymaps/erez_experimental/makefile.mk b/keyboard/ergodox_ez/keymaps/erez_experimental/makefile.mk new file mode 100644 index 0000000000..4c3a314ed6 --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/erez_experimental/makefile.mk @@ -0,0 +1,5 @@ +# Having a file like this allows you to override Makefile definitions +# for your own particular keymap + +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend + -- cgit v1.2.1 From 9bb368a5fb55e069aafb49007871a7045e6d964f Mon Sep 17 00:00:00 2001 From: Erez Zukerman Date: Thu, 5 May 2016 22:44:24 -0400 Subject: [Jack & Erez] Defines MOD_HYPR and MOD_MEH --- quantum/keymap_common.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/quantum/keymap_common.h b/quantum/keymap_common.h index ae10bc78d6..ab80ea45c7 100644 --- a/quantum/keymap_common.h +++ b/quantum/keymap_common.h @@ -67,6 +67,9 @@ extern const uint16_t fn_actions[]; #define MEH(kc) kc | 0x0700 #define LCAG(kc) kc | 0x0D00 // Modifier Ctrl Alt and GUI +#define MOD_HYPR 0xf +#define MOD_MEH 0x7 + #define RCTL(kc) kc | 0x1100 #define RSFT(kc) kc | 0x1200 #define RALT(kc) kc | 0x1400 -- cgit v1.2.1 From bf6f3fe7f4571ea8907fc9dcc0befbd6c5ac0f73 Mon Sep 17 00:00:00 2001 From: Erez Zukerman Date: Thu, 5 May 2016 22:58:06 -0400 Subject: [Erez & Jack] Updates docs with one-shot information and config_user.h --- README.md | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index bb1cca1edf..3e6eb1fa3a 100644 --- a/README.md +++ b/README.md @@ -33,6 +33,10 @@ If your keymap directory has a file called `makefile.mk` (note the lowercase fil So let's say your keyboard's makefile has `CONSOLE_ENABLE = yes` (or maybe doesn't even list the `CONSOLE_ENABLE` option, which would cause it to revert to the global Quantum default). You want your particular keymap to not have the debug console, so you make a file called `makefile.mk` and specify `CONSOLE_ENABLE = no`. +### Customizing config.h on a per-keymap basis + +If you use the ErgoDox EZ, you can make a `config_user.h` file in your keymap directory and use it to override any `config.h` settings you don't like. Anything you set there will take precedence over the global `config.h` for the ErgoDox EZ. To see an example of this, check out `keymaps/erez_experimental`. + ## Quick aliases to common actions Your keymap can include shortcuts to common operations (called "function actions" in tmk). @@ -41,10 +45,13 @@ Your keymap can include shortcuts to common operations (called "function actions `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. +`OSL(layer)` - momentary switch to *layer*, as a one-shot operation. So if you have a key that's defined as `OSL(1)`, and you tap that key, then only the very next keystroke would come from layer 1. You would drop back to layer zero immediately after that one keystroke. That's handy if you have a layer full of custom shortcuts -- for example, a dedicated key for closing a window. So you tap your one-shot layer mod, then tap that magic 'close window' key, and keep typing like a boss. Layer 1 would remain active as long as you hold that key down, too (so you can use it like a momentary toggle-layer key with extra powers). + `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 @@ -83,14 +90,19 @@ The following shortcuts automatically add `LSFT()` to keycodes to get commonly u KC_PIPE | KC_COLN : +`OSM(mod)` - this is a "one shot" modifier. So let's say you have your left Shift key defined as `OSM(MOD_LSFT)`. Tap it, let go, and Shift is "on" -- but only for the next character you'll type. So to write "The", you don't need to hold down Shift -- you tap it, tap t, and move on with life. And if you hold down the left Shift key, it just works as a left Shift key, as you would expect (so you could type THE). There's also a magical, secret way to "lock" a modifier by tapping it multiple times. If you want to learn more about that, open an issue. :) + `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): +These are the values you can use for the `mod` in `MT()` and `OSM()` (right-hand modifiers are not available for `MT()`): * MOD_LCTL * MOD_LSFT * MOD_LALT * MOD_LGUI + * MOD_HYPR + * MOD_MEH + 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. -- cgit v1.2.1 From 78bd31f28e16458ed8f2f8a7a1fe97b4a9f3f6af Mon Sep 17 00:00:00 2001 From: Erez Zukerman Date: Thu, 5 May 2016 23:18:46 -0400 Subject: Uses @eltang's famous macro! Still not perfect though :( --- .../erez_experimental/erez_experimental.hex | 2243 ++++++++++---------- .../ergodox_ez/keymaps/erez_experimental/keymap.c | 69 +- 2 files changed, 1162 insertions(+), 1150 deletions(-) diff --git a/keyboard/ergodox_ez/keymaps/erez_experimental/erez_experimental.hex b/keyboard/ergodox_ez/keymaps/erez_experimental/erez_experimental.hex index ab32e94dd2..edbead2769 100644 --- a/keyboard/ergodox_ez/keymaps/erez_experimental/erez_experimental.hex +++ b/keyboard/ergodox_ez/keymaps/erez_experimental/erez_experimental.hex @@ -1,235 +1,235 @@ -:100000000C9465020C94A9020C94A9020C94A90208 -:100010000C94A9020C94A9020C94A9020C94A902B4 -:100020000C94A9020C94A9020C94A00C0C94720DCF -:100030000C94A9020C94A9020C94A9020C94A90294 -:100040000C94A9020C9446220C94A9020C94A902C7 -:100050000C94A9020C94EA1B0C94A9020C94A9021A -:100060000C94A9020C94A9020C94A9020C94A90264 -:100070000C94A9020C94A9020C94A9020C94A90254 -:100080000C94A9020C94A9020C94A9020C94A90244 -:100090000C94A9020C94A9020C94A9020C94A90234 -:1000A0000C94A9020C94A9020C94A902D70DF90D85 -:1000B000E40EF90DE40E3B0E5E0EE40EB30EC60E1A -:1000C000C011C0110112011243127F127F147F145C -:1000D00097127F148E138E1359147F147F146D148E -:1000E0000000F0A12E004C002A00003035810000F5 -:1000F0001E00140004001D7134004D001F001A0082 -:1001000016001B00E104C1002000080007000600E3 -:1001100050002C0021001500090019004F004A0072 -:10012000220017000A000500000065745000015409 -:1001300000002F7F0000E3004F00015400003077E3 -:100140000000E20023001C000B00110000002971D8 -:10015000240018000D74100052004B0025000C0004 -:100160000E00360051002800260012000F00370054 -:100170002F002B81270013003382387130004E008E -:100180002D003100347801302D0000000100010005 -:1001900001000100010000003A001E0022002602BA -:1001A000010001003B001F002300270201000100A5 -:1001B0003C00200024002F004B0101003D002100E5 -:1001C000250030004E0101003E00010026002700FE -:1001D000000001000100010000000100000001001A -:1001E0000100010000000100000001003F000100CB -:1001F0002402310200000100400022022D022602EA -:100200000100010041002E002D0027020100010025 -:1002100042001F0213002000010001004300010002 -:100220002E02010001000100440045000100010010 -:1002300001000000010001000100010001000000B8 -:1002400001000100010001000100010001000100A6 -:10025000F2000100010001000100F000F1000100C6 -:10026000F400010001000100F3000100F5000100AD -:100270000100010001000100000001000100010077 -:100280000000010000000100010001000000010069 -:100290000000010001000100010001000000010058 -:1002A0000100010001000100A9000100010001009E -:1002B0000100AC00AA00B600010001000100AB0083 -:1002C000A80001000100010001000100010001007F -:1002D00001000100AE00010001000000160345000E -:1002E000720067006F0044006F0078002000450036 -:1002F0005A00000016034500720067006F004400BA -:100300006F007800200045005A0000000403090433 -:1003100009026D00040100A0FA09040000010301B4 -:100320000100092111010001223F00070581030896 -:10033000000A090401000103010200092111010062 -:1003400001224D000705820308000A09040200018A -:100350000300000009211101000122360007058376 -:100360000308000A09040300010300000009211129 -:100370000100012239000705840310000112011059 -:100380000100000008EDFE07130100010200010555 -:10039000010906A101050719E029E71500250195C6 -:1003A0000875018102050819012905950575019156 -:1003B000029501750391010507190029771500259C -:1003C00001957875018102C005010980A1018502AE -:1003D00016010026B7001A01002AB7007510950112 -:1003E0008100C0050C0901A1018503160100269CAE -:1003F000021A01002A9C02751095018100C00501B6 -:100400000902A1010901A100050919012905150029 -:10041000250195057501810295017503810105018D -:10042000093009311581257F950275088106093843 -:100430001581257F950175088106050C0A3802157E -:1004400081257F950175088106C0C005010906A1B7 -:1004500001050719E029E7150025019508750181B7 -:100460000295017508810105081901290595057591 -:100470000191029501750391010507190029FF15E6 -:100480000025FF950675088100C0000000000000EF -:100490000000000000010204060A0F17202C3A4A4F -:1004A0005D71879DB3C7DAE9F5FCFFFCF5E9DAC7B2 -:1004B000B39D87715D4A3A2C20170F0A060402018A -:1004C0000000000000000000000011241FBECFEF5C -:1004D000DAE0DEBFCDBF04B603FE24C08091F00198 -:1004E0009091F101A091F201B091F3018730904B0E -:1004F000A740B04BB9F41092F0011092F1011092A4 -:10050000F2011092F30114BE84B7877F84BF88E1A3 -:100510000FB6F89480936000109260000FBEE0E088 -:10052000FFE3099511E0A0E0B1E0EAE1F8E402C0E0 -:1005300005900D92A433B107D9F711E0A4E3B1E01F -:1005400001C01D92A03FB107E1F70E94E6090C949B -:100550000B240C940000662319F06130F1F03DC0CB -:10056000FC018281882341F00E94B51B90933501E4 -:100570008093340181EE1CC080913401909135014B -:100580000E94C11B8634910534F486E20E94481013 -:1005900086E20E94101181EE1EC0FC018281882338 -:1005A00051F00E94B51B909335018093340185EE84 -:1005B0000E94481012C080913401909135010E9430 -:1005C000C11B8634910534F487E20E94481087E20B -:1005D0000E94101185EE0E94101180E090E00895B5 -:1005E00008956091B3017091B4018091B50190912B -:1005F000B6010E94131B56985E9825982D98269850 -:100600002E9827982F98813019F0823021F0089584 -:10061000259A2D9A0895269A2E9A08950C94F102FF -:1006200056985E9825982D9826982E9827982F985A -:100630008FEF90E0909389008093880090938B00D7 -:1006400080938A0090938D0080938C00259A2D9A38 -:100650002FEF80E792E0215080409040E1F700C00A -:100660000000269A2E9A2FEF80E792E021508040DA -:100670009040E1F700C00000279A2F9A2FEF80E703 -:1006800092E0215080409040E1F700C000002598A2 -:100690002D982FEF80E792E0215080409040E1F7C5 -:1006A00000C0000026982E982FEF80E792E021509E -:1006B00080409040E1F700C0000027982F9856989E -:1006C0005E9825982D9826982E9827982F9808950B -:1006D00089EA8093800089E08093810024982C9897 -:1006E0003F988AB18F748AB96E98479A8BB1806BA4 -:1006F0008BB9769A0E9410030C94F00280E28093EA -:1007000000018091360181110EC00E94CD0381E06D -:10071000809336012FEF83ED90E32150804090408D -:10072000E1F700C0000080E40E94D3038093000141 -:1007300081112EC00E94FD0380930001811128C009 -:100740000E94FD0380930001811122C08FE30E946B -:10075000FD038093000181111BC00E94F50380E41A -:100760000E94D30380930001811112C08CE00E948B -:10077000FD038093000181110BC00E94FD03809353 -:100780000001811105C08FE30E94FD0380930001E9 -:100790000E94F5038091000108951092B9008AE04B -:1007A0008093B800089594EA9093BC009091BC00A7 -:1007B00097FFFCCF9091B900987F983021F090314D -:1007C00011F081E008958093BB0084E88093BC0021 -:1007D0008091BC0087FFFCCF8091B900887F883171 -:1007E00011F0803471F780E0089584E98093BC00B3 -:1007F0008091BC0084FDFCCF08958093BB0084E809 -:100800008093BC008091BC0087FFFCCF9091B90021 -:10081000987F81E0983209F480E0089584E880931D -:10082000BC008091BC0087FFFCCF8091BB00089585 -:1008300080910001811115C080E40E94D303809350 -:10084000000181110CC082E10E94FD038093000130 -:10085000811105C08FEF0E94FD03809300010E946B -:10086000F50384B1807F84B985B1807F85B98AB171 -:10087000837F8AB98BB1837F8BB93E984698089560 -:100880000E947E03809300010E94180480B38C7044 -:1008900080BB81B3836F81BBE6E4F1E0A8E3B1E004 -:1008A00011921D9281E0E435F807D1F70C946803AA -:1008B000BF92CF92DF92EF92FF920F931F93CF934D -:1008C000DF9380910001882379F0809137018F5F59 -:1008D00080933701811108C00E947E03809300013C -:1008E000811102C00E94100308E311E0C0E0D0E0D3 -:1008F000DD24D39482E0C82EEE24E394F12CC7309B -:1009000000F580910001811162C080E40E94D30350 -:1009100080930001811112C082E10E94FD03809347 -:10092000000181110BC0C7010C2E01C0880F0A9471 -:10093000EAF780950E94FD03809300010E94F50371 -:1009400046C0CA30A1F028F4C83059F0C93061F06F -:1009500005C0CC3089F070F0CD3089F0209A28980D -:1009600010C0219A29980DC0229A2A980AC0239A69 -:100970002B9807C0529A01C0539A5B9802C03E9AC6 -:100980004698E0EAEA95F1F78FB179995AC092E07A -:1009900081708D25892B7C9B02C090E001C094E082 -:1009A000892B7D9B02C090E001C098E0892B7E9B43 -:1009B00002C090E001C090E1892B9FB19095991FF2 -:1009C0009927991F9295990F907E892B0FC080913E -:1009D000000181114BC080E40E94D3038093000189 -:1009E000882389F1B12C0E94F5038B2DF8019081A9 -:1009F000981719F08083C09201010E941804219673 -:100A00000F5F1F4FCE30D10509F079CF80910101E2 -:100A1000882371F1815080930101882339F08FE997 -:100A20009FE00197F1F700C0000022C0A6E4B1E00A -:100A3000E8E3F1E081918D9391E0E634F907D1F795 -:100A400017C090E0A5CF83E10E94FD0380930001D1 -:100A50008111C8CF81E40E94D303809300018111EA -:100A6000C1CF0E940E04B82EB094BDCF80E0BECF9F -:100A70000E940E0381E0DF91CF911F910F91FF90B3 -:100A8000EF90DF90CF90BF900895E82FF0E0EA5B01 -:100A9000FE4F808108950895089596E0799FF001B2 -:100AA000112494E5899FE00DF11D1124E60FF11D3D -:100AB000EE0FFF1FEC51FF4F859194910895880F21 -:100AC000991F805A9040FC01859194910895880F58 -:100AD000991F80529F4FFC018591949108950F9327 -:100AE0001F93CF93DF93EC01811520E3920730F53C -:100AF000811530E2930708F0B1C08B3B910588F473 -:100B0000883A910508F058C0853A910508F049C027 -:100B10008430910508F043C08130910509F4B2C1D9 -:100B2000AEC18F3F910509F0D0F5803F910508F0E7 -:100B300092C0805E9109089790F1A1C1C11581E52D -:100B4000D807A8F4C23090E5D90708F09FC0C115B6 -:100B500020E5D20709F486C008F092C0C11580E4F0 -:100B6000D80708F08CC18E011127106CCCC1C115BB -:100B700090E8D90758F4C11520E7D20708F07BC1E7 -:100B8000C11530E6D30708F423C179C1C11580E946 -:100B9000D80708F074C18E011F70106AB4C18E01AD -:100BA000B2C1853A910509F470C1863A910509F4FC -:100BB0006FC103E810E4A7C1883A910509F46BC13D -:100BC000893A910509F46AC18A3A910509F469C123 -:100BD0008B3A910509F468C18C3A910509F467C113 -:100BE0008D3A910509F466C1803B910509F465C110 -:100BF0008E3A910509F464C18F3A910509F463C1F5 -:100C0000813B910509F462C1823B910509F461C100 -:100C1000833B910509F460C1843B910509F45FC1F0 -:100C2000853B910509F45EC1863B910509F45DC1E0 -:100C3000873B910509F45CC1883B910509F45BC1D0 -:100C4000893B910509F45AC18A3B910509F059C1C4 -:100C50000AE216E458C18C01106555C19F700E94CC -:100C6000670552C10E94A2149FEF24E33CE091501B -:100C700020403040E1F700C000000E940F1C43C13B -:100C80008091CF0181608093CF013DC10E94B71D4B -:100C9000811102C00E949D1D0E94D41D90E090937E -:100CA000F0018093EF01C23080E5D80721F48091F4 -:100CB000EF01816086C0C43090E5D90721F48091AE -:100CC000EF0182607EC0C63020E5D20721F480911A -:100CD000EF01846076C0C83030E5D30719F4809105 -:100CE000EF0127C0CA3080E5D80721F48091EF01D9 -:100CF000806167C0CC3090E5D90721F48091EF0185 -:100D000080625FC0CE3020E5D20721F48091EF01F0 -:100D1000806457C0C03130E5D30721F48091EF01E2 -:100D200080684FC0C23180E5D80729F48091EF0177 -:100D30008460886046C0C33090E5D90721F4809173 -:100D4000EF018E7F3EC0C53020E5D20721F48091AF -:100D5000EF018D7F36C0C73030E5D30721F4809195 -:100D6000EF018B7F2EC0C93080E5D80719F4809140 -:100D7000EF0126C0CB3090E5D90721F48091EF0137 -:100D80008F7E1FC0CD3020E5D20721F48091EF0186 -:100D90008F7D17C0CF3030E5D30721F48091EF016C -:100DA0008F7B0FC0C13180E5D80721F48091EF011E -:100DB0008F7707C0C331D04531F48091EF018B7F2D -:100DC000877F8093EF018091EF010E94D81D9BC027 -:100DD0008D2F99278F70992781309105E9F48E0125 -:100DE000037011279C0102C0220F331F0A95E2F7FE -:100DF00089011C68CE0164E0880F991F6A95E1F7AC -:100E000088279370082B192B73E0CC0FDD1F7A9580 -:100E1000E1F7C076DD272CC08230910529F41C2F24 -:100E20000027016F106A6FC08330910561F4CE0115 -:100E30008370992701E010E002C0000F111F8A950E -:100E4000E2F71C680EC0049709F05DC0CE01837004 -:100E5000992701E010E002C0000F111F8A95E2F708 -:100E60001A6843E0CC0FDD1F4A95E1F7C07ED770CA -:100E70000C2B1D2B48C08E011F70106244C000E077 +:100000000C945C020C94A0020C94A0020C94A0022C +:100010000C94A0020C94A0020C94A0020C94A002D8 +:100020000C94A0020C94A0020C94970C0C94690DF3 +:100030000C94D61B0C94A0020C94A0020C94A00269 +:100040000C94A0020C94A0020C94A0020C94A002A8 +:100050000C94A0020C943D1C0C94A0020C94A002E1 +:100060000C94A0020C94A0020C94A0020C94A00288 +:100070000C94A0020C94A0020C94A0020C94A00278 +:100080000C94A0020C94A0020C94A0020C94A00268 +:100090000C94A0020C94A0020C94A0020C94A00258 +:1000A0000C94A0020C94A0020C94A002CE0DF00DB2 +:1000B000DB0EF00DDB0E320E550EDB0EAA0EBD0E62 +:1000C000CC11CC11FB11FB1146126812CF13CF13C8 +:1000D0007312CF131C131C13C013CF13CF13C913E8 +:1000E0002913291329132913291329132913291330 +:1000F0002913291329132913291329132913291320 +:100100003A1348134F13561360130000F0A100C8B0 +:1001100001C82E004C002A000030358100001E006E +:10012000140004001D7134004D001F001A00160059 +:100130001B00E104C1002000080007000600500079 +:100140002C0021001500090019004F004A00220070 +:1001500017000A00050000006574500001540000FB +:100160002F7F0000E3004F000154000030770000B3 +:10017000E20023001C000B00110000002971240084 +:1001800018000D74100052004B0025000C000E00EA +:10019000360051002800260012000F0037002F0003 +:1001A0002B81270013003382387130004E002D0060 +:1001B0003100347801302D00000001000100010001 +:1001C0000100010000003A001E002200260201008A +:1001D00001003B001F0023002702010001003C003A +:1001E000200024002F004B0101003D0021002500CC +:1001F00030004E0101003E000100260027000000F3 +:1002000001000100010000000100000001000100E8 +:10021000010000000100000001003F000100240275 +:10022000310200000100400022022D0226020100DE +:10023000010041002E002D002702010001004200B4 +:100240001F021300200001000100430001002E02E4 +:10025000010001000100440045000100010001000F +:100260000000010001000100010001000000010088 +:100270000100010001000100010001000100F20085 +:100280000100010001000100F000F1000100F40094 +:10029000010001000100F3000100F5000100010070 +:1002A0000100010001000000010001000100000048 +:1002B0000100000001000100010000000100000039 +:1002C0000100010001000100010000000100010027 +:1002D000010001000100A90001000100010001006E +:1002E000AC00AA00B600010001000100AB00A800AC +:1002F00001000100010001000100010001000100F6 +:100300000100AE000100010000001603450072006C +:1003100067006F0044006F007800200045005A001D +:10032000000016034500720067006F0044006F0074 +:100330007800200045005A00000004030904090267 +:100340006D00040100A0FA0904000001030101008E +:10035000092111010001223F000705810308000A5D +:100360000904010001030102000921110100012219 +:100370004D000705820308000A090402000103007A +:10038000000009211101000122360007058303083E +:10039000000A090403000103000000092111010003 +:1003A0000122390007058403100001120110010029 +:1003B000000008EDFE07130100010200010501091C +:1003C00006A101050719E029E71500250195087523 +:1003D000018102050819012905950575019102950C +:1003E000017503910105071900297715002501956D +:1003F0007875018102C005010980A10185021601FD +:100400000026B7001A01002AB70075109501810077 +:10041000C0050C0901A1018503160100269C021AE2 +:1004200001002A9C02751095018100C00501090296 +:10043000A1010901A10005091901290515002501DE +:10044000950575018102950175038101050109304A +:1004500009311581257F95027508810609381581B6 +:10046000257F950175088106050C0A38021581253E +:100470007F950175088106C0C005010906A1010527 +:100480000719E029E71500250195087501810295F6 +:100490000175088101050819012905950575019166 +:1004A000029501750391010507190029FF15002523 +:1004B000FF950675088100C011241FBECFEFDAE05A +:1004C000DEBFCDBF04B603FE24C08091F20190913F +:1004D000F301A091F401B091F5018730904BA74052 +:1004E000B04BB9F41092F2011092F3011092F401A2 +:1004F0001092F50114BE84B7877F84BF88E10FB6E0 +:10050000F89480936000109260000FBEE0E0FFE37B +:10051000099511E0A0E0B1E0EAEEF7E402C0059031 +:100520000D92A433B107D9F711E0A4E3B1E001C003 +:100530001D92A23FB107E1F70E94DF090C94F3235B +:100540000C940000CF93DF93EC01662319F0613027 +:1005500079F031C08A818823C9F082E00E94561167 +:100560008D81982F907F71F080FD0CC086E21BC0BA +:100570008A818823D9F082E00E9456118D81982FBC +:10058000907F71F48D818F708D8315C08D81807FF8 +:1005900019F086E20E94071182E00E945D110BC0F3 +:1005A00080FDF0CF87E20E943F1005C08D81807FE3 +:1005B00099F387E2EFCF80E090E0DF91CF9108954B +:1005C00008956091B1017091B2018091B301909151 +:1005D000B4010E943D1B56985E9825982D98269848 +:1005E0002E9827982F98813019F0823021F00895A5 +:1005F000259A2D9A0895269A2E9A08950C94E10230 +:1006000056985E9825982D9826982E9827982F987A +:100610008FEF90E0909389008093880090938B00F7 +:1006200080938A0090938D0080938C00259A2D9A58 +:100630002FEF80E792E0215080409040E1F700C02A +:100640000000269A2E9A2FEF80E792E021508040FA +:100650009040E1F700C00000279A2F9A2FEF80E723 +:1006600092E0215080409040E1F700C000002598C2 +:100670002D982FEF80E792E0215080409040E1F7E5 +:1006800000C0000026982E982FEF80E792E02150BE +:1006900080409040E1F700C0000027982F985698BE +:1006A0005E9825982D9826982E9827982F9808952B +:1006B00089EA8093800089E08093810024982C98B7 +:1006C0003F988AB18F748AB96E98479A8BB1806BC4 +:1006D0008BB9769A0E9400030C94E00280E280932A +:1006E00000018091340181110EC00E94BD0381E0A0 +:1006F000809334012FEF83ED90E3215080409040B0 +:10070000E1F700C0000080E40E94C3038093000171 +:1007100081112EC00E94ED0380930001811128C039 +:100720000E94ED0380930001811122C08FE30E949B +:10073000ED038093000181111BC00E94E50380E45A +:100740000E94C30380930001811112C08CE00E94BB +:10075000ED038093000181110BC00E94ED03809393 +:100760000001811105C08FE30E94ED038093000119 +:100770000E94E5038091000108951092B9008AE07B +:100780008093B800089594EA9093BC009091BC00C7 +:1007900097FFFCCF9091B900987F983021F090316D +:1007A00011F081E008958093BB0084E88093BC0041 +:1007B0008091BC0087FFFCCF8091B900887F883191 +:1007C00011F0803471F780E0089584E98093BC00D3 +:1007D0008091BC0084FDFCCF08958093BB0084E829 +:1007E0008093BC008091BC0087FFFCCF9091B90042 +:1007F000987F81E0983209F480E0089584E880933E +:10080000BC008091BC0087FFFCCF8091BB000895A5 +:1008100080910001811115C080E40E94C303809380 +:10082000000181110CC082E10E94ED038093000160 +:10083000811105C08FEF0E94ED03809300010E949B +:10084000E50384B1807F84B985B1807F85B98AB1A1 +:10085000837F8AB98BB1837F8BB93E984698089580 +:100860000E946E03809300010E94080480B38C7084 +:1008700080BB81B3836F81BBE4E4F1E0A6E3B1E028 +:1008800011921D9281E0E235F807D1F70C945803DC +:10089000BF92CF92DF92EF92FF920F931F93CF936D +:1008A000DF9380910001882379F0809135018F5F7B +:1008B00080933501811108C00E946E03809300016E +:1008C000811102C00E94000306E311E0C0E0D0E005 +:1008D000DD24D39482E0C82EEE24E394F12CC730BB +:1008E00000F580910001811162C080E40E94C30381 +:1008F00080930001811112C082E10E94ED03809378 +:10090000000181110BC0C7010C2E01C0880F0A9491 +:10091000EAF780950E94ED03809300010E94E503B1 +:1009200046C0CA30A1F028F4C83059F0C93061F08F +:1009300005C0CC3089F070F0CD3089F0209A28982D +:1009400010C0219A29980DC0229A2A980AC0239A89 +:100950002B9807C0529A01C0539A5B9802C03E9AE6 +:100960004698E0EAEA95F1F78FB179995AC092E09A +:1009700081708D25892B7C9B02C090E001C094E0A2 +:10098000892B7D9B02C090E001C098E0892B7E9B63 +:1009900002C090E001C090E1892B9FB19095991F12 +:1009A0009927991F9295990F907E892B0FC080915E +:1009B000000181114BC080E40E94C30380930001B9 +:1009C000882389F1B12C0E94E5038B2DF8019081D9 +:1009D000981719F08083C09201010E9408042196A3 +:1009E0000F5F1F4FCE30D10509F079CF8091010103 +:1009F000882371F1815080930101882339F08FE9B8 +:100A00009FE00197F1F700C0000022C0A4E4B1E02C +:100A1000E6E3F1E081918D9391E0E434F907D1F7B9 +:100A200017C090E0A5CF83E10E94ED038093000101 +:100A30008111C8CF81E40E94C3038093000181111A +:100A4000C1CF0E94FE03B82EB094BDCF80E0BECFD0 +:100A50000E94FE0281E0DF91CF911F910F91FF90E4 +:100A6000EF90DF90CF90BF900895E82FF0E0EC5B1F +:100A7000FE4F808108950895089596E0799FF001D2 +:100A8000112494E5899FE00DF11D1124E60FF11D5D +:100A9000EE0FFF1FEE5EFE4F859194910895880F33 +:100AA000991F86579040FC01859194910895880F75 +:100AB000991F865F9E4FFC018591949108950F9335 +:100AC0001F93CF93DF93EC01811520E3920730F55C +:100AD000811530E2930708F0B1C08B3B910588F493 +:100AE000883A910508F058C0853A910508F049C048 +:100AF0008430910508F043C08130910509F4C2C1EA +:100B0000BEC18F3F910509F0D0F5803F910508F0F7 +:100B100092C0805E9109089790F1B1C1C11581E53D +:100B2000D807A8F4C23090E5D90708F09FC0C115D6 +:100B300020E5D20709F486C008F092C0C11580E410 +:100B4000D80708F09CC18E011127106CDCC1C115BB +:100B500090E8D90758F4C11520E7D20708F08BC1F7 +:100B6000C11530E6D30708F423C189C1C11580E956 +:100B7000D80708F084C18E011F70106AC4C18E01AD +:100B8000C2C1853A910509F480C1863A910509F4FC +:100B90007FC103E810E4B7C1883A910509F47BC12D +:100BA000893A910509F47AC18A3A910509F479C123 +:100BB0008B3A910509F478C18C3A910509F477C113 +:100BC0008D3A910509F476C1803B910509F475C110 +:100BD0008E3A910509F474C18F3A910509F473C1F5 +:100BE000813B910509F472C1823B910509F471C101 +:100BF000833B910509F470C1843B910509F46FC1F1 +:100C0000853B910509F46EC1863B910509F46DC1E0 +:100C1000873B910509F46CC1883B910509F46BC1D0 +:100C2000893B910509F46AC18A3B910509F069C1C4 +:100C30000AE216E468C18C01106565C19F700E94CC +:100C4000570562C10E9419149FEF24E33CE09150C4 +:100C500020403040E1F700C000000E94621C53C1F8 +:100C60008091D30181608093D3014DC10E940A1EFF +:100C7000811102C00E94F01D0E94271E90E09093F7 +:100C8000F2018093F101C23080E5D80721F4809110 +:100C9000F101816086C0C43090E5D90721F48091CC +:100CA000F10182607EC0C63020E5D20721F4809138 +:100CB000F101846076C0C83030E5D30719F4809123 +:100CC000F10127C0CA3080E5D80721F48091F101F5 +:100CD000806167C0CC3090E5D90721F48091F101A3 +:100CE00080625FC0CE3020E5D20721F48091F1010F +:100CF000806457C0C03130E5D30721F48091F10101 +:100D000080684FC0C23180E5D80729F48091F10195 +:100D10008460886046C0C33090E5D90721F4809193 +:100D2000F1018E7F3EC0C53020E5D20721F48091CD +:100D3000F1018D7F36C0C73030E5D30721F48091B3 +:100D4000F1018B7F2EC0C93080E5D80719F480915E +:100D5000F10126C0CB3090E5D90721F48091F10153 +:100D60008F7E1FC0CD3020E5D20721F48091F101A4 +:100D70008F7D17C0CF3030E5D30721F48091F1018A +:100D80008F7B0FC0C13180E5D80721F48091F1013C +:100D90008F7707C0C331D04531F48091F1018B7F4B +:100DA000877F8093F1018091F1010E942B1EABC0DF +:100DB0008D2F99278F70992781309105E9F48E0145 +:100DC000037011279C0102C0220F331F0A95E2F71E +:100DD00089011C68CE01E4E0880F991FEA95E1F7CC +:100DE00088279370082B192BF3E0CC0FDD1FFA95A1 +:100DF000E1F7C076DD272CC08230910529F41C2F45 +:100E00000027016F106A7FC08330910561F4CE0125 +:100E10008370992701E010E002C0000F111F8A952E +:100E2000E2F71C680EC084309105A9F4CE018370EE +:100E3000992701E010E002C0000F111F8A95E2F728 +:100E40001A6863E0CC0FDD1F6A95E1F7C07ED770AA +:100E50000C2B1D2B58C08530910529F41C2F002721 +:100E6000046F106A50C0069709F04DC0CF71DD279E +:100E70001C2F002702C08E011F70106244C000E0CA :100E800010E041C001E010E03EC001E810E43BC0CA :100E900002E810E438C002EE14E435C009EE14E4B0 :100EA00032C00AEE14E42FC005EB14E42CC006EBAC @@ -240,43 +240,43 @@ :100EF00005E216E408C006E216E405C007E216E4BF :100F000002C000E014E4C801DF91CF911F910F915E :100F1000089596E0799FF001112494E5899FE00DF2 -:100F2000F11D1124E60FF11DEE0FFF1FEC51FF4FD5 +:100F2000F11D1124E60FF11DEE0FFF1FEE5EFE4FC7 :100F300085919491803E9105E0F4803C910558F5AF :100F40008133910509F46FC048F48932910509F4A1 :100F500063C08A32910509F46DC072C0893391056E :100F6000E9F082389105D1F08533910509F44DC03F :100F700067C0833E910581F138F4803E9105B9F058 :100F8000823E9105D9F05CC0863E910561F1873EB5 -:100F90009105A1F155C00E945F0508952091EF01D0 +:100F90009105A1F155C00E944F0508952091F101DE :100FA00020FD02C021FF4CC080EE90E049C080913E -:100FB000EF0180FFF9CF89E390E042C08091EF011B -:100FC00082FF0EC08091EF0184FF03C080E090E0BB -:100FD00037C083EE90E034C08091EF0182FFF2CF02 -:100FE00082EE90E02DC08091EF0183FF0BC08091D5 -:100FF000EF0184FDEBCF87EE90E022C08091EF01FE -:1010000083FFF5CF86EE90E01BC08091EF0185FF56 -:1010100007C089E290E014C08091EF0185FFF9CF0D -:1010200085E390E00DC08091EF0186FF07C08AE262 -:1010300090E006C08091EF0186FFF9CF81E390E058 -:101040000E946F05089508950C942308809164010F +:100FB000F10180FFF9CF89E390E042C08091F10117 +:100FC00082FF0EC08091F10184FF03C080E090E0B9 +:100FD00037C083EE90E034C08091F10182FFF2CF00 +:100FE00082EE90E02DC08091F10183FF0BC08091D3 +:100FF000F10184FDEBCF87EE90E022C08091F101FA +:1010000083FFF5CF86EE90E01BC08091F10185FF54 +:1010100007C089E290E014C08091F10185FFF9CF0B +:1010200085E390E00DC08091F10186FF07C08AE260 +:1010300090E006C08091F10186FFF9CF81E390E056 +:101040000E945F05089508950C9423088091620121 :101050000895CF93DF9300D01F92CDB7DEB72091D4 -:10106000E601243019F523E029839B838A832093AA +:10106000E801243019F523E029839B838A832093A8 :10107000E9008FEF9091E800815095FD06C095ED55 :101080009A95F1F700008111F5CF8091E80085FF76 :101090000DC040E050E063E070E0CE0101960E9498 -:1010A000930A8091E8008E778093E8000F900F906C +:1010A0008A0A8091E8008E778093E8000F900F9075 :1010B0000F90DF91CF910895CF93DF9300D01F92CF -:1010C000CDB7DEB72091E601243021F522E0298357 +:1010C000CDB7DEB72091E801243021F522E0298355 :1010D0009B838A8383E08093E9008FEF9091E800FF :1010E000815095FD06C095ED9A95F1F700008111AC :1010F000F5CF8091E80085FF0DC040E050E063E04F -:1011000070E0CE0101960E94930A8091E8008E77EC +:1011000070E0CE0101960E948A0A8091E8008E77F5 :101110008093E8000F900F900F90DF91CF9108958A -:101120002091E6012430F1F422E02093E9002FEF32 +:101120002091E8012430F1F422E02093E9002FEF30 :101130003091E800215035FD06C035ED3A95F1F7C4 :1011400000002111F5CF2091E80025FF0BC040E001 -:1011500050E065E070E00E94930A8091E8008E778D -:101160008093E8000895CF93DF93EC018091E6012E +:1011500050E065E070E00E948A0A8091E8008E7796 +:101160008093E8000895CF93DF93EC018091E8012C :10117000843009F046C090910C019923D9F09091E8 :101180000D019923B9F08093E9008FEF9091E80069 :10119000815095FD06C095E19A95F1F70000811107 @@ -284,876 +284,873 @@ :1011B00070E017C081E08093E9008FEF9091E80024 :1011C000815095FD06C095ED9A95F1F700008111CB :1011D000F5CF8091E80085FF14C040E050E068E062 -:1011E00070E0CE010E94930A8091E8008E77809390 -:1011F000E80080E1FE01A4E5B1E001900D928A953E -:10120000E1F7DF91CF9108958091E501811109C047 -:101210000E94250C0E94820C8091E20084608093E1 -:10122000E20008951092E501089508950C94332288 -:101230000E94A61B0E9439220E941F0F0C942408B2 -:1012400042E061EC81E00E949F0B42E061EC82E0B1 -:101250000E949F0B42E061EC83E00E949F0B42E101 -:1012600061EC84E00C949F0B8091E801833009F4D9 -:1012700055C030F4813071F0823009F48EC0089589 -:101280008A3009F47AC08B3009F460C0893009F0E3 -:101290009CC020C08091E701813A09F096C08091FE -:1012A000E800877F8093E8008091EB019091EC014A -:1012B000892B21F060E080E090E003C060E184E5EC -:1012C00091E070E00E94DC0A8091E8008B778093C7 -:1012D000E80008958091E701813209F076C080919D -:1012E000EB019091EC01009719F0039709F06DC0A4 -:1012F0008091E800877F8093E8008091E80082FD7C -:1013000005C08091E6018111F8CF5FC08091F100A6 -:10131000809364018091E8008B7753C08091E7014E -:10132000813A09F052C08091EB019091EC01892B38 -:1013300009F04BC08091E800877F8093E80080919E -:10134000E80080FFFCCF80910C0136C08091E7015E -:101350008132D9F58091EB019091EC01892BA9F5AF -:101360008091E800877F8093E8000E94D40B8091F1 -:10137000E90180930C010C94A2148091E701813261 -:1013800021F58091E800877F8093E8000E94D40BCC -:101390008091EA018093650108958091E701813A87 -:1013A000A1F48091E800877F8093E8008091E800B5 -:1013B00080FFFCCF809165018093F1008091E8006F -:1013C0008E778093E8000C94D40B089584B7877FC0 -:1013D00084BF88E10FB6F89480936000109260009B -:1013E0000FBE90E080E80FB6F89480936100909370 -:1013F00061000FBE0E946E0F0E94250C0E94820C9D -:101400008091E20084608093E20078940E94FD0E57 -:101410000E94700F82E091E00E941A0F0E94212228 -:101420008091E601853069F40E94661B8091E40199 -:101430008823B1F30E94911B882391F30E947D0AB7 -:10144000EFCF0E94760FECCF292F332723303105C1 -:10145000A9F06CF42130310509F442C02230310585 -:1014600009F043C08DE690E020E133E042C0213234 -:101470003105C9F02232310519F137C09927813081 -:10148000910541F08230910541F0892B71F5ECE036 -:10149000F3E005C0E4EFF2E002C0ECEDF2E084918D -:1014A00090E09F0126C0643000F5E62FF0E0EE0FDB -:1014B000FF1FEE5DFE4F2081318189E090E019C071 -:1014C000643098F4E62FF0E0DF01AA0FBB1FA65EA0 -:1014D000BE4F2D913C91EA5EFE4F808190E009C0A5 -:1014E00082E190E02DE733E004C080E090E020E06E -:1014F00030E0FA0131832083089580E189BD82E1E3 -:1015000089BD09B400FEFDCF8091D8008F7D809306 -:10151000D8008091E00082608093E0008091E0003C -:1015200081FDFCCF0895CF92DF92EF92FF920F934F -:101530001F93CF93DF937C018B01EA010E94F50B8F -:10154000811131C0209731F088819981081B190BD6 -:10155000E80EF91EC12CD12C0115110519F180914D -:10156000E80085FD14C08091E8008E778093E80044 -:10157000209741F0888199818C0D9D1D99838883E6 -:1015800085E011C00E94F50B882331F30CC0F701F0 -:1015900081917F018093F10001501109FFEFCF1A73 -:1015A000DF0ADACF80E0DF91CF911F910F91FF909A -:1015B000EF90DF90CF9008952091ED013091EE01F2 -:1015C0002617370748F06115710539F42091E800B6 -:1015D0002E772093E80001C0B901FC0120E06115DD -:1015E0007105B9F18091E601882309F440C0853086 -:1015F00009F43FC08091E80083FD3DC08091E80080 -:1016000082FF06C08091E80082FF26C080E0089536 -:101610008091E80080FFE3CF2091F3008091F200F9 -:1016200090E0922B6115710551F08830910538F4E6 -:1016300021912093F100615071090196F3CF21E0CF -:10164000089709F020E08091E8008E778093E80009 -:10165000C6CF2111C7CFD6CF8091E601882339F0BC -:10166000853039F08091E80083FFCCCF04C082E060 -:10167000089583E0089581E008952091ED0130916F -:10168000EE012617370748F06115710539F42091EE -:10169000E8002E772093E80001C0B901FC0120E0AA -:1016A00061157105C1F18091E601882309F441C0FB -:1016B000853009F440C08091E80083FD3EC08091F0 -:1016C000E80082FF06C08091E80082FF27C080E02A -:1016D00008958091E80080FFE3CF2091F30080918E -:1016E000F20090E0922B6115710559F08830910558 -:1016F00040F424912093F1003196615071090196D4 -:10170000F2CF21E0089709F020E08091E8008E7781 -:101710008093E800C5CF2111C6CFD5CF8091E601D7 -:10172000882339F0853039F08091E80083FFCBCFF2 -:1017300004C082E0089583E0089581E00895982F21 -:10174000973058F59093E900981739F07091EC00B4 -:101750002091ED005091F00003C0242F762F50E02F -:1017600021FF19C03091EB003E7F3093EB003091A8 -:10177000ED003D7F3093ED003091EB003160309310 -:10178000EB007093EC002093ED005093F00020915B -:10179000EE0027FF07C09F5FD3CF8F708093E900D3 -:1017A00081E0089580E008958091E70187FD05C0FC -:1017B0008091E80080FF0EC012C08091E80082FD99 -:1017C00005C08091E6018111F8CF08958091E8006D -:1017D0008B7708C08091E6018111EACF089580914E -:1017E000E8008E778093E80008958091E40090915E -:1017F000E50045E62091EC0020FF21C02091E800A3 -:1018000020FD21C02091E601222389F0253089F0B6 -:101810002091EB0025FD0FC02091E4003091E50000 -:101820002817390739F3415041F0C901E3CF82E06D -:10183000089583E0089581E0089584E0089520915B -:10184000E80022FFDFCF80E008950E94930C0E9401 -:101850009B0CE0EEF0E0808181608083E8EDF0E0B9 -:1018600080818F77808319BCA7EDB0E08C918E7F4B -:101870008C9380818F7E80831092E50108950F9371 -:101880001F93CF93DF930E94930C0E949B0CC8ED93 -:10189000D0E088818F778883888180688883888179 -:1018A0008F7D888319BC1092E6011092E20110929C -:1018B000E4011092E30100EE10E0F80180818B7FDB -:1018C000808388818160888342E060E080E00E94BC -:1018D0009F0BE1EEF0E080818E7F8083E2EEF0E00E -:1018E000808181608083808188608083F80180812D -:1018F0008E7F8083888180618883DF91CF911F9163 -:101900000F910895E8EDF0E080818F7E8083E7ED10 -:10191000F0E080818160808384E082BF81E08093F9 -:10192000E5010C943F0CE8EDF0E080818E7F808330 -:101930001092E20008951092DA001092E1000895EA -:101940001F920F920FB60F9211242F933F934F9334 -:101950005F936F937F938F939F93AF93BF93EF9317 -:10196000FF938091E10082FF0BC08091E20082FF33 -:1019700007C08091E1008B7F8093E1000E94FC0E04 -:101980008091DA0080FF1FC08091D80080FF1BC0CB -:101990008091DA008E7F8093DA008091D90080FFF9 -:1019A0000DC080E189BD82E189BD09B400FEFDCF93 -:1019B00081E08093E6010E94040905C019BC1092E1 -:1019C000E6010E9412098091E10080FF19C0809118 -:1019D000E20080FF15C08091E2008E7F8093E200DC -:1019E0008091E20080618093E2008091D800806263 -:1019F0008093D80019BC85E08093E6010E94160907 -:101A00008091E10084FF30C08091E20084FF2CC00F -:101A100080E189BD82E189BD09B400FEFDCF8091DE -:101A2000D8008F7D8093D8008091E1008F7E8093D5 -:101A3000E1008091E2008F7E8093E2008091E200DD -:101A400081608093E2008091E201882311F084E0BC -:101A500007C08091E30087FF02C083E001C081E0FE -:101A60008093E6010E9418098091E10083FF29C05C -:101A70008091E20083FF25C08091E100877F809301 -:101A8000E10082E08093E6011092E2018091E100A2 -:101A90008E7F8093E1008091E2008E7F8093E20050 -:101AA0008091E20080618093E20042E060E080E0AB -:101AB0000E949F0B8091F00088608093F0000E944C -:101AC0001509FF91EF91BF91AF919F918F917F91F8 -:101AD0006F915F914F913F912F910F900FBE0F909B -:101AE0001F9018951F920F920FB60F9211242F93EB -:101AF0003F934F935F936F937F938F939F93AF9396 -:101B0000BF93CF93EF93FF93C091E900CF70809183 -:101B1000EC001092E9008091F000877F8093F00044 -:101B200078940E94AE0D1092E9008091F0008860D8 -:101B30008093F000C093E900FF91EF91CF91BF91A6 -:101B4000AF919F918F917F916F915F914F913F9155 -:101B50002F910F900FBE0F901F9018951F93CF934A -:101B6000DF93CDB7DEB7AA970FB6F894DEBF0FBEEE -:101B7000CDBFE7EEF1E08091F100819321E0EF3EEF -:101B8000F207C9F70E9434098091E80083FF1CC165 -:101B90002091E7013091E801832F90E08A30910590 -:101BA00008F012C1FC01EA5AFF4F0C94BB23203805 -:101BB00081F0223809F008C18091EB018F70809389 -:101BC000E9008091EB0085FB882780F91092E900FD -:101BD00006C08091E3019091E4019111826090919F -:101BE000E800977F9093E8008093F1001092F10055 -:101BF000C5C0822F8D7F09F0E7C0222319F0223063 -:101C000061F0E2C08091E901813009F0DDC033303C -:101C100009F080E08093E40128C08091E9018111FE -:101C200024C02091EB012F7009F4CEC02093E9006D -:101C30008091EB0080FF19C08091EB00333011F4EC -:101C4000806211C080618093EB0081E090E0022E01 -:101C500001C0880F0A94EAF78093EA001092EA0024 -:101C60008091EB0088608093EB001092E9008091F6 -:101C7000E800877F86C02111A7C01091E9011F7776 -:101C80008091E3008078812B8093E3008091E800CD -:101C9000877F8093E8000E94D40B8091E80080FF4A -:101CA000FCCF8091E30080688093E300112311F062 -:101CB00083E001C082E08093E60186C02058223094 -:101CC00008F082C08091E9019091EA018C3D23E007 -:101CD000920779F583E08A838AE289834FB7F89483 -:101CE000DE01139620E03EE051E2E32FF0E0509356 -:101CF0005700E49120FF03C0E295EF703F5FEF7063 -:101D00008E2F90E0EA3010F0C79601C0C0968D93F8 -:101D10009D932F5F243149F74FBF8091E800877F63 -:101D20008093E8006AE270E0CE0101960E94DC0A2E -:101D300014C0AE014F5F5F4F6091EB010E94240A17 -:101D4000009709F441C02091E800277F2093E80024 -:101D5000BC0189819A810E943D0B8091E8008B77BC -:101D60008093E80031C0203879F58091E800877FC2 -:101D70008093E8008091E2018093F1008091E80077 -:101D80008E778093E8000E94D40B1EC021111CC0E6 -:101D90009091E9019230C0F48091E800877F8093B0 -:101DA000E8009093E2010E94D40B8091E20181113E -:101DB00004C08091E30087FF02C084E001C081E09D -:101DC0008093E6010E9420098091E80083FF0AC009 -:101DD0008091E800877F8093E8008091EB0080622B -:101DE0008093EB00AA960FB6F894DEBF0FBECDBF6E -:101DF000DF91CF911F9108950895CF938091E601CF -:101E00008823B1F08091E9008F709091EC0090FFF1 -:101E100002C090E801C090E0C92FC82B1092E900E1 -:101E20008091E80083FD0E94AE0DCF70C093E90061 -:101E3000CF91089590936B0180936A010895E0918A -:101E40006A01F0916B01309721F00190F081E02D53 -:101E5000099480E00895E0916A01F0916B01309758 -:101E600021F00280F381E02D09940895E0916A0148 -:101E7000F0916B01309721F00480F581E02D0994F9 -:101E8000089520916801309169018217930771F0DC -:101E90009093690180936801E0916A01F0916B0170 -:101EA000309721F00680F781E02D09940895209164 -:101EB0006601309167018217930771F09093670173 -:101EC00080936601E0916A01F0916B01309721F0F7 -:101ED0000084F185E02D0994089508950C946D0F08 -:101EE0000E94AC1B0E9440040C94721CCF92DF92A3 -:101EF000EF92FF920F931F93CF93DF93CDB7DEB78F -:101F00002B970FB6F894DEBF0FBECDBF0E945804CA -:101F10003DE6E32E31E0F32E00E010E0C02E802FEE -:101F20000E944505F701D1907F01D826B1F40F5FDB -:101F30001F4F0E30110591F78FEF89838A831B8223 -:101F40000E94B51B8160782F9D838C8349815A81C3 -:101F50006B818D810E94191041C09091CF0191FF3A -:101F600004C08B870E944B058B8520E030E04D2D0F -:101F700050E0922FBA01022E02C0759567950A941F -:101F8000E2F760FF25C02E83CF82EE24E394F12C8C -:101F900002C0EE0CFF1C9A95E2F790E08E219F2183 -:101FA00021E0892B09F420E028870E94B51B81607D -:101FB000782F9A8789874E815F8168858A850E94FC -:101FC0001910F801E359FE4F80818E25808306C0E9 -:101FD0002F5F3F4F2630310561F6A9CF0E94561F73 -:101FE00010916C010E941F0F1817A1F00E941F0F83 -:101FF00080936C012B960FB6F894DEBF0FBECDBF59 -:10200000DF91CF911F910F91FF90EF90DF90CF90D4 -:102010000C9424082B960FB6F894DEBF0FBECDBFEC -:10202000DF91CF911F910F91FF90EF90DF90CF90B4 -:102030000895CF93DF93CDB7DEB72B970FB6F89403 -:10204000DEBF0FBECDBF4F83588769877A878B87E6 -:10205000DE01119686E0FD0111928A95E9F785E08F -:10206000FE01379601900D928A95E1F749815A81D8 -:102070006B817C818D819E810E946E172B960FB69D -:10208000F894DEBF0FBECDBFDF91CF9108950895C4 -:10209000CF93C82F882309F4C1C0823859F40E9415 -:1020A0001F0F81FDBBC089E30E941A1A0E94E41A27 -:1020B00089E30CC0833879F40E941F0F80FDAEC005 -:1020C00083E50E941A1A0E94E41A83E50E945A1AB4 -:1020D000CF910C94E41A843859F40E941F0F82FDAA -:1020E0009DC087E40E941A1A0E94E41A87E4EECF8A -:1020F0008CEF8C0F813A48F48C2F0E94892181113A -:102100008DC08C2F0E941A1AE3CF80E28C0F88308A -:1021100048F4C77081E001C0880FCA95EAF70E94B1 -:102120009B1AD6CF8BE58C0F833078F4C53A29F013 -:10213000C63A31F482E890E005C081E890E002C040 -:1021400083E890E0CF910C94410F88E58C0F8331A8 -:1021500008F064C0C83A39F1C93A41F1CA3A49F1C4 -:10216000CB3A51F1CC3A59F1CD3A61F1C03B69F12A -:10217000CE3A71F1CF3A79F1C13B81F1C23B89F19D -:10218000C33B91F1C43B99F1C53BA1F1C63BA9F119 -:10219000C73BB1F1C83BB9F1C93BC1F1CA3BC9F575 -:1021A0008AE292E038C082EE90E035C089EE90E09D -:1021B00032C08AEE90E02FC085EB90E02CC086EB19 -:1021C00090E029C087EB90E026C08CEC90E023C023 -:1021D0008DEC90E020C083E891E01DC08AE891E09A -:1021E0001AC082E991E017C084E991E014C081E24D -:1021F00092E011C083E292E00EC084E292E00BC054 -:1022000085E292E008C086E292E005C087E292E0B3 -:1022100002C080E090E0CF910C94570FCF910895C9 -:10222000882309F44BC0823859F40E941F0F81FFA4 -:1022300045C089E30E941A1A0E94E41A89E30CC07F -:10224000833871F40E941F0F80FF38C083E50E941D -:102250001A1A0E94E41A83E50E945A1A0C94E41A8E -:10226000843859F40E941F0F82FF28C087E40E941F -:102270001A1A0E94E41A87E4EFCF9CEF980F913A64 -:1022800058F390E2980F983050F4877091E001C0B5 -:10229000990F8A95EAF7892F0E94A11ADFCF9BE553 -:1022A000980F933020F480E090E00C94410F885A0E -:1022B000833120F480E090E00C94570F0895882338 -:1022C00021F00E949B1A0C94E41A0895882321F0AF -:1022D0000E94A11A0C94E41A0895CF92DF92EF9213 -:1022E000FF920F931F93CF93DF93CDB7DEB728975D -:1022F0000FB6F894DEBF0FBECDBF8C0185E0F801AC -:10230000DE01119601900D928A95E1F7F801D080D7 -:10231000E180F280558152955F7023813481232BB7 -:1023200039F0FFEFEF1206C081E0DF1203C003C0F7 -:1023300081E001C080E080FDE2C2C8015F830E94AD -:102340004710D982EA8269817A818F2D0E94161AFC -:102350009E8388870E94CA190E949D184E815F81C2 -:102360006885FF2029F00E94B81A68855F814E8138 -:10237000E42FE295EF70F0E0E05AFF4F0C94BB239E -:10238000842F807F142F1F70882311F01295107FE7 -:10239000FF20B1F0112309F467C280E2860F883074 -:1023A00028F4812F68870E949B1A04C0812F6887B8 -:1023B0000E94AB1A688568870E94E41A688554C237 -:1023C000862F68870E9410116885112309F497C22F -:1023D000605E812F683018F40E94A11A02C00E942A -:1023E000B11A28960FB6F894DEBF0FBECDBFDF91AD -:1023F000CF911F910F91FF90EF90DF90CF900C94B1 -:10240000E41A242F207F842F8F70203211F08295C0 -:10241000807F662319F0613019F12BC0FF20B1F0E5 -:10242000552309F493C1513009F090C128960FB695 -:10243000F894DEBF0FBECDBFDF91CF911F910F91FA -:10244000FF90EF90DF90CF900C94CB1A552319F0AA -:10245000513009F454C28E830E94CE1A8E8189C1F4 -:10246000FF2021F0523008F04AC270C1511147C21A -:1024700080C1FF2021F0552309F468C1F5C155231F -:1024800009F477C105C2242F26952695237030E0E4 -:102490002115310521F021303105C9F030C2FF206E -:1024A00021F0862F942F937002C080E090E0289650 -:1024B0000FB6F894DEBF0FBECDBFDF91CF911F9155 -:1024C0000F91FF90EF90DF90CF900C94410FFF2081 -:1024D00021F0862F942F937002C080E090E0289620 -:1024E0000FB6F894DEBF0FBECDBFDF91CF911F9125 -:1024F0000F91FF90EF90DF90CF900C94570F862FA5 -:10250000FF2019F00E945E1E02C00E94C61E28967F -:102510000FB6F894DEBF0FBECDBFDF91CF911F91F4 -:102520000F91FF90EF90DF90CF900C944B1F842F72 -:10253000837009F076C0F110E2C1262F229526950E -:102540002770220F220F862F8F70C82ED12CE12CDE -:10255000F12C022E04C0CC0CDD1CEE1CFF1C0A94D6 -:10256000D2F764FF10C06FE070E080E090E004C03C -:10257000660F771F881F991F2A95D2F7609570956F -:102580008095909503C060E070E0CB01242F2695E4 -:1025900026952370422F50E042305105D1F0433050 -:1025A000510559F16C297D298E299F29413051050A -:1025B00041F128960FB6F894DEBF0FBECDBFDF9174 -:1025C000CF911F910F91FF90EF90DF90CF900C94DF -:1025D000C2186C297D298E299F2928960FB6F89458 -:1025E000DEBF0FBECDBFDF91CF911F910F91FF9046 -:1025F000EF90DF90CF900C94DC180E94C218C701B6 -:10260000B60128960FB6F894DEBF0FBECDBFDF919E -:10261000CF911F910F91FF90EF90DF90CF900C948E -:10262000A818FF2019F0842F817001C08695882397 -:1026300009F465C1262F229526952770220F220FB7 -:10264000862F8F70C82ED12CE12CF12C022E04C0C5 -:10265000CC0CDD1CEE1CFF1C0A94D2F764FF10C0EA -:102660006FE070E080E090E004C0660F771F881F85 -:10267000991F2A95D2F7609570958095909503C023 -:1026800060E070E0CB01242F269526952370422F21 -:1026900050E042305105D1F04330510559F16C29D9 -:1026A0007D298E299F294130510541F128960FB689 -:1026B000F894DEBF0FBECDBFDF91CF911F910F9178 -:1026C000FF90EF90DF90CF900C9496196C297D29A4 -:1026D0008E299F2928960FB6F894DEBF0FBECDBF76 -:1026E000DF91CF911F910F91FF90EF90DF90CF90EE -:1026F0000C94B0190E949619C701B60128960FB61E -:10270000F894DEBF0FBECDBFDF91CF911F910F9127 -:10271000FF90EF90DF90CF900C947C19603FC9F14F -:1027200018F4603E50F49BC0623F09F460C008F4A6 -:102730004AC0633F09F46FC092C0162F1F70842FE8 -:102740008F71FF2099F00E941519812F28960FB6DE -:10275000F894DEBF0FBECDBFDF91CF911F910F91D7 -:10276000FF90EF90DF90CF900C945F110E9436198C -:10277000812F28960FB6F894DEBF0FBECDBFDF9134 -:10278000CF911F910F91FF90EF90DF90CF900C941D -:102790006611FF20A1F05111B2C0842F8F712896CD -:1027A0000FB6F894DEBF0FBECDBFDF91CF911F9162 -:1027B0000F91FF90EF90DF90CF900C945B19523007 -:1027C00008F09DC0EACFFF20A1F0842F8F712896DA -:1027D0000FB6F894DEBF0FBECDBFDF91CF911F9132 -:1027E0000F91FF90EF90DF90CF900C941519FF2080 -:1027F00061F3842F8F7128960FB6F894DEBF0FBE59 -:10280000CDBFDF91CF911F910F91FF90EF90DF909F -:10281000CF900C943619FF2091F0842F8F71289659 -:102820000FB6F894DEBF0FBECDBFDF91CF911F91E1 -:102830000F91FF90EF90DF90CF900C9400192896A5 -:102840000FB6F894DEBF0FBECDBFDF91CF911F91C1 -:102850000F91FF90EF90DF90CF900C94F618FF202F -:10286000A1F0552309F4B1CF862F28960FB6F8941E -:10287000DEBF0FBECDBFDF91CF911F910F91FF90B3 -:10288000EF90DF90CF900C944810552309F4B1CF0E -:10289000862F28960FB6F894DEBF0FBECDBFDF910E -:1028A000CF911F910F91FF90EF90DF90CF900C94FC -:1028B00010114F70C8010E94AB0228960FB6F89411 -:1028C000DEBF0FBECDBFDF91CF911F910F91FF9063 -:1028D000EF90DF90CF900C941B184F70C801289692 -:1028E0000FB6F894DEBF0FBECDBFDF91CF911F9121 -:1028F0000F91FF90EF90DF90CF900C944C052896AD -:102900000FB6F894DEBF0FBECDBFDF91CF911F9100 -:102910000F91FF90EF90DF90CF9008950E94B81A2A -:102920000E94C81A0E948D1A0E94E41A0E94F71F82 -:102930000E944B1F80E090E00E94410F80E090E0F9 -:102940000C94570F0E94A81A0C948E140E940B1A14 -:10295000292F22952F7030E02C3031054CF42A308D -:1029600031056CF4225031092230310590F407C052 -:102970002C30310551F02F30310539F00AC0803E3E -:1029800010F0803F31F481E0089593FB882780F9AF -:10299000089580E00895CF93DF9300D000D01F9278 -:1029A000CDB7DEB70F900F900F900F900F90DF9183 -:1029B000CF910895CF93DF9300D000D000D0CDB752 -:1029C000DEB726960FB6F894DEBF0FBECDBFDF91FF -:1029D000CF9108951F93CF93DF93C0917B0116E0B1 -:1029E00080917C01C81799F0D0E01C9FF0011D9FD9 -:1029F000F00D1124E358FE4F4081518162817381B3 -:102A0000848195810E94DA142196C770E9CFDF9105 -:102A1000CF911F9108954091AD015091AE01609109 -:102A2000AF017091B0018091B1019091B2010C940D -:102A3000DA14CF938091B20182958F7009F05FC054 -:102A40008091AF01882309F45AC020917B01A091A5 -:102A50007C016091AD017091AE018091B0019091C7 -:102A6000B10131E06F3F09F030E0B32FC6E02A1723 -:102A700009F445C0009721F07F3F21F44B2F03C09C -:102A800041E001C040E030E040FD35C0C29FF001B0 -:102A9000C39FF00D1124E358FE4F418174132BC0E6 -:102AA0004081641328C04281411125C04381548173 -:102AB0004817590710F441505109481B590B483C1D -:102AC0005105C8F48091B2018F7080618093B2018A -:102AD00086E0829FF001839FF00D1124EE57FE4F98 -:102AE00080818F70806180838DEA91E00E946D11FA -:102AF000CF910C94EA142F5F3F4F2770B8CFCF913E -:102B00000895CF92DF92EF92FF920F931F93CF938E -:102B1000DF93CDB7DEB762970FB6F894DEBF0FBE76 -:102B2000CDBF8C0185E0F801DE011D9601900D926C -:102B30008A95E1F7D8014C9111965C911197129604 -:102B40006C9112971396ED90FC9014977091AD01D3 -:102B5000E091AE012091B0013091B1012115310514 -:102B600031F0EF3F31F481E07F3F19F403C081E0A1 -:102B700001C080E0B82FB170CB2E80FD6CC1D09029 -:102B8000AF01DD2009F4F5C0F091B201E216F306C1 -:102B900038F0C701821B930B883C910548F09BC01D -:102BA000209530952E0D3F1D283C310508F093C02F -:102BB0008F2F807F09F052C0E51314C0741312C028 -:102BC000D62E61110FC0FF70F061F093B2010E9428 -:102BD0000B158DEA91E00E946D118091B201F80110 -:102BE00085836CC1EF2831F05F3F31F481E04F3FC6 -:102BF00019F403C081E001C080E080FD03C081E0E2 -:102C0000862701C080E0F82FF170FF2E80FF1CC0E6 -:102C100080917B0120917C0136E0821709F428C164 -:102C200090E0389FF001399FF00D1124E358FE4FDA -:102C30007181571306C07081471303C072816713F7 -:102C400003C001968770E9CFD62E662309F436C1FA -:102C50008091B20181608093B20153C0E51308C036 -:102C6000741306C0611104C0D8011596FC93AEC060 -:102C70004D875E878D859E856A8B0E94A6146A8922 -:102C8000882329F1D62E662311F12091B201822FDB -:102C900082958F7090E002970CF460C08091AD0136 -:102CA0009091AE0198878F831986FB86EA862C87E0 -:102CB000CE01079651C0E51731F14D875E878D85AE -:102CC0009E856A8B0E94A6146A8981112EC0C80154 -:102CD0000E946D11A4C08F2F807F69F77E2DF98A25 -:102CE000E88A89890E94CB148DEA91E00E946D11D7 -:102CF000EDEAF1E086E0DF011D928A95E9F70E9496 -:102D00000B15D12CDBC07413D8CF6111D6CFD801ED -:102D10001596FC93C8010E946D11EDEAF1E086E082 -:102D2000DF011D928A95E9F7C9C0D62E662379F294 -:102D30002091B201822F82958F7090E0029774F0FB -:102D40008091AD019091AE019A8389831B82FD82AF -:102D5000EC822E83CE0101960E946D1186E0F8016F -:102D6000ADEAB1E001900D928A95E1F70E94191544 -:102D70006FC0E216F30628F0C701821B930B9C017B -:102D800004C0209530952E0D3F1D283C310508F0DC -:102D900052C0D62E662309F49ACFE5132CC07413C3 -:102DA0002AC08091B20180FD1DC0982F92959F701E -:102DB000C9F0D80115968C9315979F3039F09F5F15 -:102DC0009295907F8F70892B15968C93C8010E94E5 -:102DD0006D1186E0F801ADEAB1E001900D928A959F -:102DE000E1F736C086E0F801ADEAB1E001900D925E -:102DF0008A95E1F763C04D875E878D859E850E9429 -:102E0000A614882379F086E0F801ADEAB1E00190DC -:102E10000D928A95E1F70E9419150E940B15DD2489 -:102E2000D3944CC08091B20181608093B201C801FB -:102E30000E946D1143C07E2DF98AE88A89890E941B -:102E4000CB14EDEAF1E086E0DF011D928A95E9F707 -:102E50000E940B1533C0662309F439CF4D875E8776 -:102E60008D859E850E94A614882309F430CFCBCF90 -:102E70004D875E878D859E850E940B1A292F22958E -:102E80002F7030E0223031052CF49F7041F0811119 -:102E900006C00CC0243031052CF49F7049F4805ECC -:102EA000883020F0C8010E946D11CF2CDC2C06C0A8 -:102EB000D80115969C91907F91F7F8CF8D2D629651 -:102EC0000FB6F894DEBF0FBECDBFDF91CF911F913B -:102ED0000F91FF90EF90DF90CF9008951F93CF93C5 -:102EE000DF93CDB7DEB72C970FB6F894DEBF0FBED9 -:102EF000CDBF4F83588769877A878B879C87CE01A0 -:102F000007960E9481158823C1F02F8138858A8514 -:102F10009B85892B31F03F3F11F080E003C02F3FAC -:102F2000E1F781E0811147C04F81588569857A8535 -:102F30008B859C850E94DA143EC086E0FE013796A0 -:102F4000DE01119601900D928A95E1F7FF81E885E7 -:102F50004A855B854115510531F0EF3F31F481E041 -:102F6000FF3F19F403C081E001C080E080FD23C071 -:102F700020917C0130E0C90101968770992760910A -:102F80007B0170E086179707F1F1F983EA835D838F -:102F90004C8396E0929FD001939FB00D1124A358CB -:102FA000BE4FFE01319601900D929A95E1F7809304 -:102FB0007C010E94EA1416E080917B0190917C01D3 -:102FC000891779F1189FC001112483589E4F0E94E0 -:102FD0008115882331F1E0917B011E9FF0011124BE -:102FE000E358FE4F408151816281738184819581D4 -:102FF0000E94DA1480917B0190E0019687709927F6 -:1030000080937B01D9CF0E94A21410927C01109270 -:103010007B01EDEAF1E086E0DF011D928A95E9F798 -:10302000CACF2C960FB6F894DEBF0FBECDBFDF918E -:10303000CF911F910895EF92FF920F931F93CF931B -:10304000DF939C01009709F471C0F12CEE24E39406 -:10305000E9012196F9018491843740F4843008F025 -:1030600056C0813081F0823021F160C0853709F48B -:1030700049C0C0F19CE7980F903708F057C08F7790 -:103080000E94101146C089010E5F1F4FFE018491FE -:1030900090E2980F983050F48770FE2D01C0FF0F1A -:1030A0008A95EAF78F2F0E94BB1A15C00E9448101C -:1030B00014C089010E5F1F4FFE01849190E2980FAA -:1030C000983068F48770FE2D01C0FF0F8A95EAF7EB -:1030D0008F2F0E94C11A0E94E41AE8011AC00E94B0 -:1030E0001011FBCF2E5F3F4FFE01C491CC2341F066 -:1030F0008FE99FE00197F1F700C00000C150F6CFC3 -:10310000E90107C0FE01F490E901229602C00E9485 -:1031100048108F2D882341F0EFE9FFE03197F1F758 -:1031200000C000008150F6CF9E0192CFDF91CF9179 -:103130001F910F91FF90EF90089508956093B7014C -:103140007093B8018093B9019093BA010C948E14D6 -:103150000F931F930091B7011091B8012091B9010D -:103160003091BA01062B172B282B392B0093B7016E -:103170001093B8012093B9013093BA011F910F91B8 -:103180000C948E140F931F930091B7011091B80106 -:103190002091B9013091BA0106231723282339233E -:1031A0000093B7011093B8012093B9013093BA018D -:1031B0001F910F910C948E140F931F930091B701E0 -:1031C0001091B8012091B9013091BA010627172753 -:1031D000282739270093B7011093B8012093B9012C -:1031E0003093BA011F910F910C948E141092B30179 -:1031F0001092B4011092B5011092B6010C948E1485 -:1032000041E050E060E070E004C0440F551F661FCD -:10321000771F8A95D2F74093B3015093B40160931E -:10322000B5017093B6010C948E1441E050E060E05B -:1032300070E004C0440F551F661F771F8A95D2F7B0 -:103240008091B3019091B401A091B501B091B60104 -:10325000842B952BA62BB72B8093B3019093B401AD -:10326000A093B501B093B6010C948E1441E050E0E8 -:1032700060E070E004C0440F551F661F771F8A95F9 -:10328000D2F740955095609570958091B3019091DB -:10329000B401A091B501B091B60184239523A62372 -:1032A000B7238093B3019093B401A093B501B09379 -:1032B000B6010C948E1441E050E060E070E004C070 -:1032C000440F551F661F771F8A95D2F78091B3016F -:1032D0009091B401A091B501B091B60184279527D2 -:1032E000A627B7278093B3019093B401A093B501AB -:1032F000B093B6010C948E140F931F930091B301F9 -:103300001091B4012091B5013091B601062B172B15 -:10331000282B392B0093B3011093B4012093B501EE -:103320003093B6011F910F910C948E140F931F933D -:103330000091B3011091B4012091B5013091B60113 -:1033400006231723282339230093B3011093B401D4 -:103350002093B5013093B6011F910F910C948E14F8 -:103360000F931F930091B3011091B4012091B50107 -:103370003091B60106271727282739270093B30174 -:103380001093B4012093B5013093B6011F910F91B2 -:103390000C948E140895CF92DF92EF92FF920F93C8 -:1033A0001F93CF93DF93EC01C090B701D090B80189 -:1033B000E090B901F090BA018091B3019091B4010D -:1033C000A091B501B091B601C82AD92AEA2AFB2AF0 -:1033D0000FE110E0B701A601002E04C076956795B5 -:1033E000579547950A94D2F740FD05C00150110941 -:1033F00088F780E007C0BE01802F0E9489070197EF -:10340000A9F3802FDF91CF911F910F91FF90EF9043 -:10341000DF90CF900895CF93DF93EC010E94CB19FA -:10342000BE010E948907DF91CF910895CB010E94D0 -:103430000B1A089590910C019923D9F090910D01E8 -:103440009923B9F0982F9695969596959F3088F583 -:10345000E0910E01F0910F01E90FF11D877021E05D -:1034600030E001C0220F8A95EAF78181822B8183A7 -:10347000089540910E0150910F0120E030E09FEF40 -:10348000FA01E20FF31F6281681799F09F3F19F468 -:10349000611101C0922F2F5F3F4F2E30310581F710 -:1034A0009F3F39F0FA01E90FF11D97FDFA958283EC -:1034B0000895089590910C019923E1F090910D01E8 -:1034C0009923C1F0982F9695969596959F3020F563 -:1034D000E0910E01F0910F01E90FF11D877021E0DD -:1034E00030E001C0220F8A95EAF7209581812823D8 -:1034F0002183089540910E0150910F0120E030E0AA -:10350000FA01E20FF31F9281981301C012822F5F1C -:103510003F4F2E303105A1F7089581E090E0E09112 -:103520000E01F0910F01E80FF91F10820196803112 -:103530009105A9F708959091CE01982B9093CE0113 -:10354000089580959091CE0198239093CE0108958F -:103550001092CE0108959091CD01982B9093CD01BA -:10356000089580959091CD0198239093CD01089571 -:103570001092CD0108959091CC01982B9093CC019D -:10358000089580959091CC0198239093CC01089553 -:103590001092CC0108958093BB0108951092BB0155 -:1035A000089540910E0150910F0120E030E080E03D -:1035B000FA01E20FF31F918191118F5F2F5F3F4F4F -:1035C0002F303105A9F70895E0910E01F0910F0118 -:1035D0008091CE018083E0910E01F0910F018081F6 -:1035E0009091CD01892B8083E0910E01F0910F0124 -:1035F00080819091CC01892B80839091BB0199238C -:1036000061F0E0910E01F0910F018081892B8083A0 -:103610000E94D11A81111092BB0180910E019091EC -:103620000F010C942B0FCF92DF92EF92FF920F932A -:103630001F936C01EE24FF24C114D104E104F104B2 -:1036400021F46B017C0180E001C080E133272F2D44 -:103650001E2D0D2D011511052105310519F0885F6D -:103660006801790197018601A4E0369527951795A1 -:103670000795AA95D1F7011511052105310519F016 -:103680008C5F6801790197018601F2E036952795F4 -:1036900017950795FA95D1F7011511052105310503 -:1036A00019F08E5F68017901B701A60176956795DB -:1036B00057954795452B462B472B09F08F5F1F9158 -:1036C0000F91FF90EF90DF90CF9008958091E601E9 -:1036D000843021F11092D00120E488E190E00FB60F -:1036E000F894A895809360000FBE2093600080E05E -:1036F0000E94240883B7817F846083BF83B7816081 -:1037000083BF7894889583B78E7F83BF88E10FB697 -:10371000F89480936000109260000FBE08950895A1 -:103720000895CF930E948F1B0E9458040E94901B03 -:10373000C0E08C2F0E944505811105C0CF5FCE30BF -:10374000C1F780E001C081E0CF9108950E94A214EA -:103750000E941F0F0C94240882E084BD93E095BD65 -:103760009AEF97BD80936E0008952FB7F8948091DB -:10377000D1019091D201A091D301B091D4012FBF7A -:103780000895CF92DF92EF92FF920F931F932FB77E -:10379000F8944091D1015091D2016091D301709180 -:1037A000D4012FBF6A017B01EE24FF248C0120E0AD -:1037B00030E0C016D106E206F30610F4415051097C -:1037C000481B590BCA011F910F91FF90EF90DF909A -:1037D000CF9008951F920F920FB60F9211248F93DE -:1037E0009F93AF93BF938091D1019091D201A0910B -:1037F000D301B091D4010196A11DB11D8093D101D7 -:103800009093D201A093D301B093D401BF91AF9113 -:103810009F918F910F900FBE0F901F9018950E944F -:10382000250CF8942FEF87EA91E6215080409040D4 -:10383000E1F700C0000087E090EBDC018093F0012D -:103840009093F101A093F201B093F3012CE088E191 -:1038500090E00FB6F894A895809360000FBE209377 -:103860006000FFCFEF92FF920F931F93CF93DF93F0 -:10387000E82EF12C8F2D0E944505C0E0D0E0082FE6 -:1038800010E098010C2E02C0359527950A94E2F7B6 -:1038900020FD05C02196C630D10599F709C06C2FCF -:1038A0007F2D80E00E944D05E812F4CF81E005C035 -:1038B000F3948EE0F812DECF80E0DF91CF911F917C -:1038C0000F91FF90EF900895CF93C82F8CE20E9444 -:1038D000321C882321F08C2FCF910C94321C80E075 -:1038E000CF910895CF930E94B71D811102C00E940D -:1038F0009D1DC5E6C15049F00E9458048FE39CE924 -:103900000197F1F700C00000F5CF89E20E94641C26 -:10391000811111C18AE20E94641C81110E949D1DC7 -:1039200085E00E94641C81110E940F1C0E94C21D30 -:103930008093CF0187E00E94641C882399F18BE17A -:103940000E94641C882351F09091CF0191FB88273D -:1039500080F921E0822780FB91F922C08EE00E944D -:10396000641C882351F09091CF0192FB882780F945 -:1039700021E0822780FB92F913C080E10E94641C41 -:103980009091CF01882341F093FB882780F921E0B3 -:10399000822780FB93F904C0892F809580FB90F9E2 -:1039A0009093CF018091CF010E94C61D0E94D41D2B -:1039B0008093EF0180EE0E94641C882341F0809187 -:1039C000EF01982F909590FB80F98093EF0189E3A8 -:1039D0000E94641C882359F09091EF0191FB882785 -:1039E00080F921E0822780FB91F99093EF0182EE2C -:1039F0000E94641C882359F09091EF0192FB882764 -:103A000080F921E0822780FB92F99093EF0186EE06 -:103A10000E94641C882359F09091EF0193FB882742 -:103A200080F921E0822780FB93F99093EF0183EEE8 -:103A30000E94641C882359F09091EF0194FB882721 -:103A400080F921E0822780FB94F99093EF0185E3D0 -:103A50000E94641C882359F09091EF0195FB882700 -:103A600080F921E0822780FB95F99093EF0181E3B3 -:103A70000E94641C882359F09091EF0196FB8827DF -:103A800080F921E0822780FB96F99093EF0181E194 -:103A90000E94641C882359F09091EF0197FB8827BE -:103AA00080F921E0822780FB97F99093EF018091C4 -:103AB000EF010E94D81D8091EF0187FB882780F9D4 -:103AC00080930D0187E20E94641CC82F8EE10E9442 -:103AD000641C8111C2608FE10E94641C8111C4606A -:103AE00080E20E94641C8111C86081E20E94641C13 -:103AF0008111C06182E20E94641C8111C06283E274 -:103B00000E94641C8111C06484E20E94641C8823AA -:103B100011F0C06802C0CC2329F08C2F0E94CF1D69 -:103B20006C2F03C00E94CB1D682F70E080E090E0F6 -:103B3000CF910C949E18CF9108956DEE7EEF80E0AA -:103B400090E00E94F52360E082E090E00E94E32391 -:103B500060E083E090E00E94E32360E084E090E096 -:103B60000E94E32360E085E090E00C94E32380E092 -:103B700090E00E94DD2321E08D3E9E4F09F020E081 -:103B8000822F089582E090E00C94D523682F82E084 -:103B900090E00C94E32383E090E00C94D523682F0D -:103BA00083E090E00C94E32384E090E00C94D52330 -:103BB000682F84E090E00C94E3238091D70180FF8C -:103BC0000BC06091130185E0689FB00111247595C9 -:103BD0006795759567952AC081FF09C060911301AB -:103BE00085E0689FB0011124759567951FC082FF1D -:103BF00007C06091130185E0689FB001112416C0D1 -:103C00004091D8014423C9F060911201461788F70A -:103C10002091130185E0289F90011124429FC0014B -:103C2000439F900D112470E00E94A7236038710516 -:103C300040F46115710539F002C065E070E0862F2F -:103C400008958FE7089581E008958091D70180FF5E -:103C500008C06091110170E075956795759567953D -:103C600021C081FF06C06091110170E075956795D4 -:103C700019C082FF04C06091110170E010C08091F2 -:103C8000D8018823C1F0609110018617A0F79091A8 -:103C90001101989FC001112470E00E94A723603891 -:103CA000710528F46115710521F0862F08958FE7BD -:103CB000089581E0089561E070E0F4CF803F21F441 -:103CC0000E94DD1D819504C0813F29F40E94DD1D05 -:103CD0008093DB010895823F21F40E94DD1D8195D0 -:103CE00004C0833F29F40E94DD1D8093DA0108950A -:103CF000893F19F40E94251E05C08A3F31F40E94B5 -:103D0000251E81958093DC0108958B3F21F40E944C -:103D1000251E819504C08C3F29F40E94251E8093A6 -:103D2000DD010895843F21F48091D901816017C09D -:103D3000853F21F48091D901826011C0863F21F432 -:103D40008091D90184600BC0873F21F48091D90113 -:103D5000886005C0883F31F48091D90180618093EB -:103D6000D90108958D3F21F48091D70181600BC066 -:103D70008E3F21F48091D701826005C08F3F29F4E6 -:103D80008091D70184608093D7010895803F39F4F2 -:103D90008091DB0187FF6CC01092DB0169C0813F1D -:103DA00029F48091DB011816BCF362C09091DA010E -:103DB000823F29F497FF5CC01092DA0159C0833F1B -:103DC00019F41916CCF354C0893F41F48091DC01F9 -:103DD00018160CF04DC01092DC014AC08A3F29F43D -:103DE0008091DC0187FF44C0F6CF8B3F39F480918E -:103DF000DD0187FF3DC01092DD013AC08C3F29F400 -:103E00008091DD011816BCF333C0843F21F480910A -:103E1000D9018E7F17C0853F21F48091D9018D7F14 -:103E200011C0863F21F48091D9018B7F0BC0873F61 -:103E300021F48091D901877F05C0883F31F48091BA -:103E4000D9018F7E8093D90113C08D3F21F48091D9 -:103E5000D7018E7F0BC08E3F21F48091D7018D7FDB -:103E600005C08F3F29F48091D7018B7F8093D701C4 -:103E70008091DA0181110EC08091DB0181110AC0AD -:103E80008091DC01811106C08091DD01811102C0A9 -:103E90001092D801089589ED91E00E94360F0E949A -:103EA000B51B9093D6018093D50108951F93CF93AE -:103EB000DF938091D5019091D6010E94C11B409162 -:103EC000D801442321F02091140130E006C0209154 -:103ED00015015AE0259F900111248217930708F4D9 -:103EE00082C08091DA011091DB01D091DC01C09198 -:103EF000DD01811107C0111105C0D11103C0CC2310 -:103F000009F471C04F3F19F04F5F4093D801181664 -:103F100024F40E94DD1D8093DA018091DA0187FF8D -:103F200005C00E94DD1D81958093DA01111624F4ED -:103F30000E94DD1D8093DB018091DB0187FF05C0BE -:103F40000E94DD1D81958093DB016091DA0166237B -:103F500039F11091DB01112319F1772767FD709575 -:103F6000872F972F0E94B82223E333E343E35FE3D5 -:103F70000E941C230E9485226093DA01612F77271B -:103F800067FD7095872F972F0E94B82223E333E3B4 -:103F900043E35FE30E941C230E9485226093DB01C0 -:103FA0001D1624F40E94251E8093DC018091DC0103 -:103FB00087FF05C00E94251E81958093DC011C1699 -:103FC00024F40E94251E8093DD018091DD0187FF8E -:103FD00005C00E94251E81958093DD01DF91CF9160 -:103FE0001F910C944B1FDF91CF911F910895E9ED24 -:103FF000F1E085E0DF011D928A95E9F71092D80182 -:104000001092D7010895833081F128F4813059F05E -:104010008230D1F00895853009F449C0B8F1863076 -:1040200009F456C0089520911501862F90E0820F63 -:10403000911D8F3F910520F4620F60931501089543 -:104040008FEF80931501089520911401862F90E041 -:10405000820F911D8F3F910520F4620F6093140130 -:1040600008958FEF80931401089520911301862FF6 -:1040700090E0820F911D8F3F910520F4620F6093B5 -:10408000130108958FEF8093130108952091120179 -:10409000862F90E0820F911D8F3F910520F4620FD3 -:1040A0006093120108958FEF80931201089520917B -:1040B0001101862F90E0820F911D8F3F910520F412 -:1040C000620F6093110108958FEF8093110108959D -:1040D00020911001862F90E0820F911D8F3F910556 -:1040E00020F4620F6093100108958FEF8093100108 -:1040F0000895833011F128F4813049F0823091F035 -:104100000895853081F120F18630C1F108958091C4 -:104110001501681720F4861B8093150108951092ED -:104120001501089580911401681720F4861B80936F -:1041300014010895109214010895809113016817D5 -:1041400020F4861B809313010895109213010895A3 -:1041500080911201681720F4861B80931201089544 -:1041600010921201089580911101681720F4861BA6 -:10417000809311010895109211010895809110010A -:10418000681720F4861B8093100108951092100187 -:1041900008958D3109F442C020F58E3009F477C0BE -:1041A00070F4873009F459C018F48630F1F134C046 -:1041B000883009F4A8C08B3009F4A5C02DC0863121 -:1041C00009F4A1C038F4803109F472C0813109F4D6 -:1041D00079C022C0893109F496C08B3109F44DC0F1 -:1041E0001BC0853309F487C048F4873209F483C0C3 -:1041F00008F473C0893209F47EC00EC0833438F4E9 -:104200008A3308F068C0883309F47DC005C0833460 -:1042100009F471C0883499F080E008950E943F222B -:104220000E941F0F0E9424086EC08091CF01817FE1 -:104230008E7F8093CF0181E08093DF0108950E94FB -:10424000A2142FEF83ED90E3215080409040E1F7DE -:1042500000C000000E940F1C56C09091CF01892F12 -:104260008095817080FB90F919F0966098601DC070 -:10427000997F977F9093CF0146C09091CF0191FB9A -:10428000882780F921E0822780FB91F909C090916D -:10429000CF0192FB882780F921E0822780FB92F9E9 -:1042A0009093CF01882379F191609093CF01089585 -:1042B0009091CF0193FB882780F921E0822780FB32 -:1042C00093F9EECF0E94A21480910D0191E089270D -:1042D00080930D0118C027EC01C023EE280F61E088 -:1042E00070E080E090E004C0660F771F881F991F80 -:1042F0002A95D2F704C061E070E080E090E00E946F -:104300009E180E94A21481E0089580E0089580E044 -:104310000895CF93C82F8091DF01813079F018F094 -:104320008230D1F184C0A0910E01B0910F018C9127 -:10433000813169F0823209F07CC009C0A0910E0180 -:10434000B0910F018C91813111F0823249F48C2FA0 -:104350000E94852181111DC08C2F0E94C9201AC086 -:104360008C2F0E948721811114C0C43179F048F448 -:10437000CB3079F0C03109F060C082E08093DF017A -:1043800008C0C93219F0C83321F057C01092DF01BC -:1043900054C081E0817053C0C93289F118F5C4312D -:1043A00071F1A8F4C73009F046C08AE08093150186 -:1043B00094E19093140193E0909313018093120180 -:1043C00088E08093110188E28093100134C0CE51BF -:1043D000C63088F5EC2FF0E0E65DFE4F80818093DB -:1043E000DE0129C0CE34E9F020F4CB3421F56AE0B7 -:1043F00013C0C13579F0C235F1F461E00DC0809190 -:10440000DE01882319F01092DE0115C081E080934F -:10441000DF0115C061E006C08091DE010E9403202B -:104420000AC06AE08091DE010E94792004C01092E7 -:10443000DF0180E004C081E002C080E0ABCFCF911B -:104440000895E1E8F0E08081886080838081816068 -:1044500080838FB7F89493E09093890090ED9093C8 -:1044600088008FBF0895EFE6F0E08081826080834E -:104470000895EFE6F0E080818D7F80830895EFE678 -:10448000F0E0808192E08927808308951F920F9247 -:104490000FB60F9211242F933F934F935F936F9317 -:1044A0007F938F939F93AF93BF93EF93FF938091ED -:1044B000E0019091E10101969093E1018093E00188 -:1044C000811103C082E00E942408E091E101E69599 -:1044D000E695F0E0E657FB4FE4918091E0018E1302 -:1044E00003C080E00E942408FF91EF91BF91AF913B -:1044F0009F918F917F916F915F914F913F912F91FC -:104500000F900FBE0F901F90189504D06894B111B2 -:104510008DC0089570D088F09F5790F0B92F9927DB -:10452000B751A0F0D1F0660F771F881F991F1AF0BE -:10453000BA95C9F712C0B13081F077D0B1E00895D3 -:1045400074C0672F782F8827B85F39F0B93FCCF354 -:10455000869577956795B395D9F73EF490958095B4 -:10456000709561957F4F8F4F9F4F0895E89409C0D4 -:1045700097FB3EF490958095709561957F4F8F4F96 -:104580009F4F9923A9F0F92F96E9BB279395F695AC -:10459000879577956795B795F111F8CFFAF4BB0F2A -:1045A00011F460FF1BC06F5F7F4F8F4F9F4F16C08E -:1045B000882311F096E911C0772321F09EE8872F18 -:1045C000762F05C0662371F096E8862F70E060E0D4 -:1045D0002AF09A95660F771F881FDAF7880F96954D -:1045E000879597F9089557FD9058440F551F59F036 -:1045F0005F3F71F04795880F97FB991F61F09F3FD0 -:1046000079F087950895121613061406551FF2CFF8 -:104610004695F1DF08C0161617061806991FF1CF48 -:1046200086957105610508940895E894BB2766276F -:104630007727CB0197F908950BD078C069D028F07F -:104640006ED018F0952309F05AC05FC01124EECF48 -:10465000CADFA0F3959FD1F3950F50E0551F629FDD -:10466000F001729FBB27F00DB11D639FAA27F00DCB -:10467000B11DAA1F649F6627B00DA11D661F829FF2 -:104680002227B00DA11D621F739FB00DA11D621FD7 -:10469000839FA00D611D221F749F3327A00D611DF4 -:1046A000231F849F600D211D822F762F6A2F1124D6 -:1046B0009F5750408AF0E1F088234AF0EE0FFF1F29 -:1046C000BB1F661F771F881F91505040A9F79E3F60 -:1046D000510570F014C0AACF5F3FECF3983EDCF3B5 -:1046E000869577956795B795F795E7959F5FC1F79D -:1046F000FE2B880F911D9695879597F9089597F948 -:104700009F6780E870E060E008959FEF80EC089577 -:1047100000240A94161617061806090608950024A0 -:104720000A9412161306140605060895092E03941A -:10473000000C11F4882352F0BB0F40F4BF2B11F48E -:1047400060FF04C06F5F7F4F8F4F9F4F089597FBAF -:10475000072E16F4009407D077FD09D00E94C123DC -:1047600007FC05D03EF4909581959F4F0895709574 -:1047700061957F4F0895EE0FFF1F0590F491E02D96 -:104780000994AA1BBB1B51E107C0AA1FBB1FA61798 -:10479000B70710F0A61BB70B881F991F5A95A9F7EA -:1047A00080959095BC01CD010895F999FECF92BDF9 -:1047B00081BDF89A992780B50895A8E1B0E042E05C -:1047C00050E00C94FD23262FF999FECF92BD81BDB8 -:1047D000F89A019700B4021639F01FBA20BD0FB63F -:1047E000F894FA9AF99A0FBE08950196272F0E941D -:1047F000E4230C94E323DC01CB01FC01F999FECF07 -:1048000006C0F2BDE1BDF89A319600B40D92415058 -:0A4810005040B8F70895F894FFCF68 -:10481A0020022608B30890085C0829080101BC0197 -:10482A0028080A03140A3F4D36394B04FE03C8030D -:10483A008F0322033B0354036D030102030405069D -:04484A000708090052 +:1011E00070E0CE010E948A0A8091E8008E77809399 +:1011F000E80080E1FE01A2E5B1E001900D928A9540 +:10120000E1F7DF91CF9108958091E701811109C045 +:101210000E941C0C0E94790C8091E20084608093F3 +:10122000E20008951092E7010895089508950C943E +:10123000D01B42E061EC81E00E94960B42E061EC41 +:1012400082E00E94960B42E061EC83E00E94960BE4 +:1012500042E161EC84E00C94960B8091EA018330CA +:1012600009F455C030F4813071F0823009F48EC039 +:1012700008958A3009F47AC08B3009F460C089304F +:1012800009F09CC020C08091E901813A09F096C024 +:101290008091E800877F8093E8008091ED01909134 +:1012A000EE01892B21F060E080E090E003C060E176 +:1012B00082E591E070E00E94D30A8091E8008B778C +:1012C0008093E80008958091E901813209F076C0A9 +:1012D0008091ED019091EE01009719F0039709F0CC +:1012E0006DC08091E800877F8093E8008091E800DE +:1012F00082FD05C08091E8018111F8CF5FC0809127 +:10130000F100809362018091E8008B7753C0809157 +:10131000E901813A09F052C08091ED019091EE010E +:10132000892B09F04BC08091E800877F8093E8000B +:101330008091E80080FFFCCF80910C0136C0809145 +:10134000E9018132D9F58091ED019091EE01892B6F +:10135000A9F58091E800877F8093E8000E94CB0B7D +:101360008091EB0180930C010C9419148091E90198 +:10137000813221F58091E800877F8093E8000E9408 +:10138000CB0B8091EC018093630108958091E9017A +:10139000813AA1F48091E800877F8093E8008091F2 +:1013A000E80080FFFCCF809163018093F100809181 +:1013B000E8008E778093E8000C94CB0B089584B7F7 +:1013C000877F84BF88E10FB6F89480936000109205 +:1013D00060000FBE90E080E80FB6F8948093610043 +:1013E000909361000FBE0E94650F0E941C0C0E942A +:1013F000790C8091E20084608093E20078940E94EE +:10140000F40E0E94670F82E091E00E94110F80911C +:10141000E801853069F40E94901B8091E6018823E1 +:10142000B1F30E94BB1B882391F30E94740AEFCF93 +:101430000E946D0FECCF292F332723303105A9F0FF +:101440006CF42130310509F442C02230310509F035 +:1014500043C08DE690E02EE333E042C021323105F7 +:10146000C9F02232310519F137C099278130910531 +:1014700041F08230910541F0892B71F5EAE3F3E008 +:1014800005C0E2E2F3E002C0EAE0F3E0849190E01C +:101490009F0126C0643000F5E62FF0E0EE0FFF1F3D +:1014A000EE5DFE4F2081318189E090E019C064300B +:1014B00098F4E62FF0E0DF01AA0FBB1FA65EBE4F37 +:1014C0002D913C91EA5EFE4F808190E009C082E15F +:1014D00090E02BEA33E004C080E090E020E030E0D0 +:1014E000FA0131832083089580E189BD82E189BDBD +:1014F00009B400FEFDCF8091D8008F7D8093D80085 +:101500008091E00082608093E0008091E00081FDA6 +:10151000FCCF0895CF92DF92EF92FF920F931F932B +:10152000CF93DF937C018B01EA010E94EC0B8111C8 +:1015300031C0209731F088819981081B190BE80E82 +:10154000F91EC12CD12C0115110519F18091E8006B +:1015500085FD14C08091E8008E778093E800209785 +:1015600041F0888199818C0D9D1D9983888385E048 +:1015700011C00E94EC0B882331F30CC0F70181915C +:101580007F018093F10001501109FFEFCF1ADF0AAC +:10159000DACF80E0DF91CF911F910F91FF90EF9014 +:1015A000DF90CF9008952091EF013091F001261740 +:1015B000370748F06115710539F42091E8002E775E +:1015C0002093E80001C0B901FC0120E0611571051C +:1015D000B9F18091E801882309F440C0853009F40D +:1015E0003FC08091E80083FD3DC08091E80082FF0C +:1015F00006C08091E80082FF26C080E008958091B7 +:10160000E80080FFE3CF2091F3008091F20090E0AA +:10161000922B6115710551F08830910538F42191B4 +:101620002093F100615071090196F3CF21E00897F2 +:1016300009F020E08091E8008E778093E800C6CF23 +:101640002111C7CFD6CF8091E801882339F08530AA +:1016500039F08091E80083FFCCCF04C082E0089588 +:1016600083E0089581E008952091EF013091F00129 +:101670002617370748F06115710539F42091E80005 +:101680002E772093E80001C0B901FC0120E061152C +:101690007105C1F18091E801882309F441C08530CA +:1016A00009F440C08091E80083FD3EC08091E800CD +:1016B00082FF06C08091E80082FF27C080E0089585 +:1016C0008091E80080FFE3CF2091F3008091F20049 +:1016D00090E0922B6115710559F08830910540F426 +:1016E00024912093F1003196615071090196F2CF57 +:1016F00021E0089709F020E08091E8008E77809340 +:10170000E800C5CF2111C6CFD5CF8091E80188234D +:1017100039F0853039F08091E80083FFCBCF04C0E9 +:1017200082E0089583E0089581E00895982F97302E +:1017300058F59093E900981739F07091EC002091DA +:10174000ED005091F00003C0242F762F50E021FFD0 +:1017500019C03091EB003E7F3093EB003091ED00EB +:101760003D7F3093ED003091EB0031603093EB0022 +:101770007093EC002093ED005093F0002091EE0068 +:1017800027FF07C09F5FD3CF8F708093E90081E070 +:10179000089580E008958091E90187FD05C080915A +:1017A000E80080FF0EC012C08091E80082FD05C0F5 +:1017B0008091E8018111F8CF08958091E8008B773E +:1017C00008C08091E8018111EACF08958091E80076 +:1017D0008E778093E80008958091E4009091E50071 +:1017E00045E62091EC0020FF21C02091E80020FD7B +:1017F00021C02091E801222389F0253089F0209131 +:10180000EB0025FD0FC02091E4003091E500281782 +:10181000390739F3415041F0C901E3CF82E008951F +:1018200083E0089581E0089584E008952091E80020 +:1018300022FFDFCF80E008950E948A0C0E94920C64 +:10184000E0EEF0E0808181608083E8EDF0E080816F +:101850008F77808319BCA7EDB0E08C918E7F8C933D +:1018600080818F7E80831092E70108950F931F93EC +:10187000CF93DF930E948A0C0E94920CC8EDD0E0B7 +:1018800088818F77888388818068888388818F7D2D +:10189000888319BC1092E8011092E4011092E601CD +:1018A0001092E50100EE10E0F80180818B7F8083CB +:1018B00088818160888342E060E080E00E94960B2E +:1018C000E1EEF0E080818E7F8083E2EEF0E08081C7 +:1018D00081608083808188608083F80180818E7F31 +:1018E0008083888180618883DF91CF911F910F91E0 +:1018F0000895E8EDF0E080818F7E8083E7EDF0E0F1 +:1019000080818160808384E082BF81E08093E701F1 +:101910000C94360CE8EDF0E080818E7F808310928D +:10192000E20008951092DA001092E10008951F92EB +:101930000F920FB60F9211242F933F934F935F9303 +:101940006F937F938F939F93AF93BF93EF93FF9387 +:101950008091E10082FF0BC08091E20082FF07C00E +:101960008091E1008B7F8093E1000E94F30E8091D3 +:10197000DA0080FF1FC08091D80080FF1BC08091DB +:10198000DA008E7F8093DA008091D90080FF0DC04D +:1019900080E189BD82E189BD09B400FEFDCF81E00F +:1019A0008093E8010E94040905C019BC1092E80167 +:1019B0000E9412098091E10080FF19C08091E2002D +:1019C00080FF15C08091E2008E7F8093E2008091BD +:1019D000E20080618093E2008091D8008062809371 +:1019E000D80019BC85E08093E8010E941609809117 +:1019F000E10084FF30C08091E20084FF2CC080E1D0 +:101A000089BD82E189BD09B400FEFDCF8091D80077 +:101A10008F7D8093D8008091E1008F7E8093E100DC +:101A20008091E2008F7E8093E2008091E2008160ED +:101A30008093E2008091E401882311F084E007C0E4 +:101A40008091E30087FF02C083E001C081E08093C2 +:101A5000E8010E9417098091E10083FF29C080916D +:101A6000E20083FF25C08091E100877F8093E10041 +:101A700082E08093E8011092E4018091E1008E7F82 +:101A80008093E1008091E2008E7F8093E20080915C +:101A9000E20080618093E20042E060E080E00E942A +:101AA000960B8091F00088608093F0000E941509E9 +:101AB000FF91EF91BF91AF919F918F917F916F9126 +:101AC0005F914F913F912F910F900FBE0F901F90FC +:101AD00018951F920F920FB60F9211242F933F93D8 +:101AE0004F935F936F937F938F939F93AF93BF9326 +:101AF000CF93EF93FF93C091E900CF708091EC00FA +:101B00001092E9008091F000877F8093F000789434 +:101B10000E94A50D1092E9008091F00088608093EA +:101B2000F000C093E900FF91EF91CF91BF91AF9189 +:101B30009F918F917F916F915F914F913F912F91E5 +:101B40000F900FBE0F901F9018951F93CF93DF93A8 +:101B5000CDB7DEB7AA970FB6F894DEBF0FBECDBFE4 +:101B6000E9EEF1E08091F100819321E0E13FF2079D +:101B7000C9F70E942D098091E80083FF1CC12091C4 +:101B8000E9013091EA01832F90E08A30910508F055 +:101B900012C1FC01EA5AFF4F0C94A323203881F0B4 +:101BA000223809F008C18091ED018F708093E9001F +:101BB0008091EB0085FB882780F91092E90006C030 +:101BC0008091E5019091E601911182609091E80089 +:101BD000977F9093E8008093F1001092F100C5C0C8 +:101BE000822F8D7F09F0E7C0222319F0223061F0A7 +:101BF000E2C08091EB01813009F0DDC0333009F0A3 +:101C000080E08093E60128C08091EB01811124C01F +:101C10002091ED012F7009F4CEC02093E90080914E +:101C2000EB0080FF19C08091EB00333011F480622B +:101C300011C080618093EB0081E090E0022E01C032 +:101C4000880F0A94EAF78093EA001092EA008091E4 +:101C5000EB0088608093EB001092E9008091E8002F +:101C6000877F86C02111A7C01091EB011F7780915B +:101C7000E3008078812B8093E3008091E800877FE8 +:101C80008093E8000E94CB0B8091E80080FFFCCF9E +:101C90008091E30080688093E300112311F083E0DA +:101CA00001C082E08093E80186C02058223008F00D +:101CB00082C08091EB019091EC018C3D23E0920772 +:101CC00079F583E08A838AE289834FB7F894DE014D +:101CD000139620E03EE051E2E32FF0E050935700EE +:101CE000E49120FF03C0E295EF703F5FEF708E2F0D +:101CF00090E0EA3010F0C79601C0C0968D939D9396 +:101D00002F5F243149F74FBF8091E800877F809390 +:101D1000E8006AE270E0CE0101960E94D30A14C086 +:101D2000AE014F5F5F4F6091ED010E941B0A00976B +:101D300009F441C02091E800277F2093E800BC010E +:101D400089819A810E94340B8091E8008B7780937F +:101D5000E80031C0203879F58091E800877F8093D2 +:101D6000E8008091E4018093F1008091E8008E7793 +:101D70008093E8000E94CB0B1EC021111CC09091E3 +:101D8000EB019230C0F48091E800877F8093E800F7 +:101D90009093E4010E94CB0B8091E401811104C077 +:101DA0008091E30087FF02C084E001C081E080935E +:101DB000E8010E9419098091E80083FF0AC0809120 +:101DC000E800877F8093E8008091EB008062809339 +:101DD000EB00AA960FB6F894DEBF0FBECDBFDF9121 +:101DE000CF911F9108950895CF938091E8018823A2 +:101DF000B1F08091E9008F709091EC0090FF02C0EB +:101E000090E801C090E0C92FC82B1092E9008091A2 +:101E1000E80083FD0E94A50DCF70C093E900CF912B +:101E2000089590936901809368010895E091680195 +:101E3000F0916901309721F00190F081E02D099433 +:101E400080E00895E0916801F0916901309721F0F8 +:101E50000280F381E02D09940895E0916801F091EA +:101E60006901309721F00480F581E02D09940895EF +:101E700020916601309167018217930771F090936A +:101E8000670180936601E0916801F09169013097E4 +:101E900021F00680F781E02D0994089520916401D6 +:101EA000309165018217930771F0909365018093DB +:101EB0006401E0916801F0916901309721F000849C +:101EC000F185E02D0994089508950C94640F0E9403 +:101ED000FF1B0E9430040C94C51CCF92DF92EF923E +:101EE000FF920F931F93CF93DF93CDB7DEB72B975E +:101EF0000FB6F894DEBF0FBECDBF0E9448043BE68C +:101F0000E32E31E0F32E00E010E0C02E802F0E947F +:101F10003505F701D1907F01D826B1F40F5F1F4F2F +:101F20000E30110591F78FEF89838A831B820E94FF +:101F3000081C8160782F9D838C8349815A816B8135 +:101F40008D810E94101041C09091D30191FF04C077 +:101F50008B870E943B058B8520E030E04D2D50E0C3 +:101F6000922FBA01022E02C0759567950A94E2F786 +:101F700060FF25C02E83CF82EE24E394F12C02C0B3 +:101F8000EE0CFF1C9A95E2F790E08E219F2121E054 +:101F9000892B09F420E028870E94081C8160782F93 +:101FA0009A8789874E815F8168858A850E94101093 +:101FB000F801E559FE4F80818E25808306C02F5F92 +:101FC0003F4F2630310561F6A9CF0E94A91F10911D +:101FD0006A010E94160F1817A1F00E94160F809335 +:101FE0006A012B960FB6F894DEBF0FBECDBFDF910E +:101FF000CF911F910F91FF90EF90DF90CF900C94B5 +:1020000024082B960FB6F894DEBF0FBECDBFDF912C +:10201000CF911F910F91FF90EF90DF90CF90089597 +:10202000CF93DF93CDB7DEB72B970FB6F894DEBF13 +:102030000FBECDBF4F83588769877A878B87DE01B4 +:10204000119686E0FD0111928A95E9F785E0FE017F +:10205000379601900D928A95E1F749815A816B81FB +:102060007C818D819E810E94E9162B960FB6F89493 +:10207000DEBF0FBECDBFDF91CF9108950895CF93FE +:10208000C82F882309F4C1C0823859F40E94160F62 +:1020900081FDBBC089E30E94301A0E94071B89E3BF +:1020A0000CC0833879F40E94160F80FDAEC083E522 +:1020B0000E94301A0E94071B83E50E94701ACF917C +:1020C0000C94071B843859F40E94160F82FD9DC0A2 +:1020D00087E40E94301A0E94071B87E4EECF8CEF42 +:1020E0008C0F813A48F48C2F0E94D52181118DC02C +:1020F0008C2F0E94301AE3CF80E28C0F883048F496 +:10210000C77081E001C0880FCA95EAF70E94B41A2F +:10211000D6CF8BE58C0F833078F4C53A29F0C63AD8 +:1021200031F482E890E005C081E890E002C083E8E5 +:1021300090E0CF910C94380F88E58C0F833108F034 +:1021400064C0C83A39F1C93A41F1CA3A49F1CB3AC7 +:1021500051F1CC3A59F1CD3A61F1C03B69F1CE3A37 +:1021600071F1CF3A79F1C13B81F1C23B89F1C33BB7 +:1021700091F1C43B99F1C53BA1F1C63BA9F1C73B25 +:10218000B1F1C83BB9F1C93BC1F1CA3BC9F58AE21B +:1021900092E038C082EE90E035C089EE90E032C027 +:1021A0008AEE90E02FC085EB90E02CC086EB90E0AB +:1021B00029C087EB90E026C08CEC90E023C08DEC2A +:1021C00090E020C083E891E01DC08AE891E01AC049 +:1021D00082E991E017C084E991E014C081E292E0C5 +:1021E00011C083E292E00EC084E292E00BC085E26F +:1021F00092E008C086E292E005C087E292E002C069 +:1022000080E090E0CF910C944E0FCF9108958823F9 +:1022100009F44BC0823859F40E94160F81FF45C063 +:1022200089E30E94301A0E94071B89E30CC083389F +:1022300071F40E94160F80FF38C083E50E94301AA7 +:102240000E94071B83E50E94701A0C94071B8438B8 +:1022500059F40E94160F82FF28C087E40E94301AAA +:102260000E94071B87E4EFCF9CEF980F913A58F339 +:1022700090E2980F983050F4877091E001C0990F68 +:102280008A95EAF7892F0E94BA1ADFCF9BE5980F4B +:10229000933020F480E090E00C94380F885A83311A +:1022A00020F480E090E00C944E0F0895882321F0F4 +:1022B0000E94B41A0C94071B0895882321F00E94F1 +:1022C000BA1A0C94071B08958F929F92AF92BF92F7 +:1022D000CF92DF92EF92FF920F931F93CF93DF93F2 +:1022E00000D000D01F92CDB7DEB77C0185E0F701AA +:1022F000DE01119601900D928A95E1F7F701D080E9 +:1023000011810281B580B2942FE0B2222381348101 +:10231000232B39F01F3F39F481E0FFEFDF1203C0B8 +:1023200003C081E001C080E080FD5DC20E94CB1946 +:10233000882319F082E00E940E1AC7010E943E1005 +:10234000D9821A8369817A81802F0E949119182F6E +:10235000C92E0E9445190E94181801110E94D11A15 +:102360000E94291A882379F0002369F080E2810F06 +:10237000883048F082E00E940E1A0E94291ADD245B +:10238000D394D82601C0D12CEC2DE295EF70F0E06B +:10239000E05AFF4F0C94A3238C2D807F9C2D9F70BF +:1023A000B92E882319F0B29490EFB922002389F056 +:1023B000BB2009F4DAC180E2810F883020F48B2D34 +:1023C0000E94B41A03C08B2D0E94C41A0E94071BDE +:1023D000CCC1812F0E940711BB2009F4E0C1105E1F +:1023E0008B2D183018F40E94BA1A02C00E94CA1A23 +:1023F0000E94071BD4C18C2D807F9C2D9F70A92E1D +:10240000803219F0A29480EFA822112319F0113024 +:1024100049F132C0002391F0BB2091F181E0B81264 +:1024200004C08A2D0E94E41ABAC192E0B91228C0F1 +:102430000E94ED1A8A2D0E94981922C0BB2079F0C3 +:10244000E1E0BE1208C00E94B11A8A2109F4A7C1B6 +:102450000E949B1904C0F2E0BF1609F4A0C10E94BB +:10246000ED1A12C0002329F081E08B1508F497C102 +:1024700007C0B11094C108C0002321F0B11075C18C +:102480008A2DEFC0B11078C18A2DF1C02C2D269570 +:102490002695237030E02115310521F021303105DA +:1024A00061F07DC1002321F0812F9C2D937002C02B +:1024B00080E090E00E94380F72C1002321F0812F4C +:1024C0009C2D937002C080E090E00E944E0F67C187 +:1024D000812F002319F00E94B11E02C00E94191F13 +:1024E0000E949E1F5CC18C2D837009F04FC00111AA +:1024F00056C1212F229526952770220F220F812F5A +:102500008F70882E912CA12CB12C022E04C0880C27 +:10251000991CAA1CBB1C0A94D2F714FF10C06FE0D0 +:1025200070E080E090E004C0660F771F881F991F5D +:102530002A95D2F7609570958095909503C060E0DC +:1025400070E0CB012C2D269526952370422F50E06C +:102550004230510569F04330510589F068297929E5 +:102560008A299B294130510571F00E943D1817C1FD +:10257000682979298A299B290E94571810C10E942D +:102580003D18C501B4010E94231809C1002319F0A8 +:102590008C2D817001C08695882309F400C1212FFC +:1025A000229526952770220F220F812F8F70882E5B +:1025B000912CA12CB12C022E04C0880C991CAA1CB1 +:1025C000BB1C0A94D2F714FF10C06FE070E080E0EB +:1025D00090E004C0660F771F881F991F2A95D2F7D5 +:1025E000609570958095909503C060E070E0CB0198 +:1025F0002C2D269526952370422F50E04230510510 +:1026000069F04330510589F0682979298A299B2985 +:102610004130510571F00E941119C1C06829792912 +:102620008A299B290E942B19BAC00E941119C50141 +:10263000B4010E94F718B3C0412F50E0FA01E05EE8 +:10264000F109E531F10508F08BC0E059FF4F0C941A +:10265000A3231F708C2D8F71002331F00E949018DE +:10266000812F0E9456119BC00E94B118812F0E9499 +:102670005D1195C0002339F0B11091C08C2D8F7180 +:102680000E94D6188CC091E09B1508F488C0F6CF44 +:10269000002339F08C2D8F710E94901880C0002388 +:1026A000C9F38C2D8F710E94B11879C0002329F0D5 +:1026B0008C2D8F710E947B1872C00E9471186FC0A0 +:1026C0000023C9F00E9495190E94BA1A0E94C719E6 +:1026D000843029F40E94071A8C2D8F7171C0E1E0BB +:1026E000EB1508F480C01C2D1F71812F0E949018DB +:1026F00063E0812F0EC00E9495190E94B41AF1E088 +:10270000FB15D0F40E94071A0E949B1964E08C2DDF +:102710008F710F900F900F900F900F90DF91CF91CE +:102720001F910F91FF90EF90DF90CF90BF90AF90EF +:102730009F908F900C94F71981E00F900F900F905D +:102740000F900F90DF91CF911F910F91FF90EF901D +:10275000DF90CF90BF90AF909F908F900C940E1A07 +:10276000002339F0BB2009F495CF812F0E943F1040 +:1027700016C0BB2009F495CF812F0E9407110FC00E +:102780004C2D4F70612FC7010E94A2020E94961724 +:1027900006C04C2D4F70612FC7010E943C05DD2003 +:1027A00011F10E94C71980FD1EC0F70112820E941C +:1027B000C1190E949018C7010E9464110E94C1199A +:1027C0000F900F900F900F900F90DF91CF911F916E +:1027D0000F91FF90EF90DF90CF90BF90AF909F90C0 +:1027E0008F900C94B1180F900F900F900F900F9046 +:1027F000DF91CF911F910F91FF90EF90DF90CF90DD +:10280000BF90AF909F908F9008950E94D11A0E9420 +:10281000E11A0E94A31A0E94071B0E944A200E94EC +:102820009E1F80E090E00E94380F80E090E00C94C2 +:102830004E0F0E94C11A0C9405140E948619292F6C +:1028400022952F7030E02C3031054CF42A303105C0 +:102850006CF42250310922303105B0F407C02C301D +:10286000310571F02F30310559F00EC0803F31F045 +:1028700018F4803E48F402C0843F31F481E00895AA +:1028800093FB882780F9089580E00895CF93DF9324 +:1028900000D000D01F92CDB7DEB70F900F900F90F1 +:1028A0000F900F90DF91CF910895CF93DF9300D0D9 +:1028B00000D000D0CDB7DEB726960FB6F894DEBFB5 +:1028C0000FBECDBFDF91CF9108951F93CF93DF93BC +:1028D000C091790116E080917A01C81799F0D0E093 +:1028E0001C9FF0011D9FF00D1124E558FE4F408103 +:1028F000518162817381848195810E945514219652 +:10290000C770E9CFDF91CF911F9108954091AB013E +:102910005091AC016091AD017091AE018091AF0119 +:102920009091B0010C945514CF938091B001829591 +:102930008F7009F05FC08091AD01882309F45AC0FF +:1029400020917901A0917A016091AB017091AC0165 +:102950008091AE019091AF0131E06F3F09F030E01E +:10296000B32FC6E02A1709F445C0009721F07F3F36 +:1029700021F44B2F03C041E001C040E030E040FDB6 +:1029800035C0C29FF001C39FF00D1124E558FE4FE2 +:10299000418174132BC04081641328C042814111CE +:1029A00025C0438154814817590710F441505109FB +:1029B000481B590B483C5105C8F48091B0018F70F9 +:1029C00080618093B00186E0829FF001839FF00DCB +:1029D0001124E058FE4F80818F70806180838BEAE4 +:1029E00091E00E946411CF910C9465142F5F3F4FCA +:1029F0002770B8CFCF910895CF92DF92EF92FF92D8 +:102A00000F931F93CF93DF93CDB7DEB762970FB6C7 +:102A1000F894DEBF0FBECDBF8C0185E0F801DE016A +:102A20001D9601900D928A95E1F7D8014C9111966F +:102A30005C91119712966C9112971396ED90FC9001 +:102A400014977091AB01E091AC012091AE013091EF +:102A5000AF012115310531F0EF3F31F481E07F3FC7 +:102A600019F403C081E001C080E0B82FB170CB2E13 +:102A700080FD6CC1D090AD01DD2009F4F5C0F0916E +:102A8000B001E216F30638F0C701821B930B883CB5 +:102A9000910548F09BC0209530952E0D3F1D283C98 +:102AA000310508F093C08F2F807F09F052C0E513E5 +:102AB00014C0741312C0D62E61110FC0FF70F061E4 +:102AC000F093B0010E9486148BEA91E00E94641199 +:102AD0008091B001F80185836CC1EF2831F05F3F30 +:102AE00031F481E04F3F19F403C081E001C080E080 +:102AF00080FD03C081E0862701C080E0F82FF170DF +:102B0000FF2E80FF1CC08091790120917A0136E070 +:102B1000821709F428C190E0389FF001399FF00D29 +:102B20001124E558FE4F7181571306C07081471379 +:102B300003C07281671303C001968770E9CFD62E58 +:102B4000662309F436C18091B00181608093B001A1 +:102B500053C0E51308C0741306C0611104C0D80146 +:102B60001596FC93AEC04D875E878D859E856A8BDA +:102B70000E941D146A89882329F1D62E662311F13B +:102B80002091B001822F82958F7090E002970CF413 +:102B900060C08091AB019091AC0198878F831986BA +:102BA000FB86EA862C87CE01079651C0E51731F1E6 +:102BB0004D875E878D859E856A8B0E941D146A896C +:102BC00081112EC0C8010E946411A4C08F2F807F84 +:102BD00069F77E2DF98AE88A89890E9446148BEA72 +:102BE00091E00E946411EBEAF1E086E0DF011D92C2 +:102BF0008A95E9F70E948614D12CDBC07413D8CFD4 +:102C00006111D6CFD8011596FC93C8010E946411BA +:102C1000EBEAF1E086E0DF011D928A95E9F7C9C091 +:102C2000D62E662379F22091B001822F82958F7083 +:102C300090E0029774F08091AB019091AC019A837F +:102C400089831B82FD82EC822E83CE0101960E9435 +:102C5000641186E0F801ABEAB1E001900D928A952B +:102C6000E1F70E9494146FC0E216F30628F0C70142 +:102C7000821B930B9C0104C0209530952E0D3F1DA7 +:102C8000283C310508F052C0D62E662309F49ACFAD +:102C9000E5132CC074132AC08091B00180FD1DC0C3 +:102CA000982F92959F70C9F0D80115968C9315971F +:102CB0009F3039F09F5F9295907F8F70892B15968A +:102CC0008C93C8010E94641186E0F801ABEAB1E080 +:102CD00001900D928A95E1F736C086E0F801ABEAE3 +:102CE000B1E001900D928A95E1F763C04D875E8750 +:102CF0008D859E850E941D14882379F086E0F80159 +:102D0000ABEAB1E001900D928A95E1F70E9494142C +:102D10000E948614DD24D3944CC08091B001816060 +:102D20008093B001C8010E94641143C07E2DF98ACE +:102D3000E88A89890E944614EBEAF1E086E0DF0127 +:102D40001D928A95E9F70E94861433C0662309F420 +:102D500039CF4D875E878D859E850E941D148823FF +:102D600009F430CFCBCF4D875E878D859E850E943D +:102D70008619292F22952F7030E0223031052CF44E +:102D80009F7041F0811106C00CC0243031052CF435 +:102D90009F7049F4805E883020F0C8010E94641161 +:102DA000CF2CDC2C06C0D80115969C91907F91F712 +:102DB000F8CF8D2D62960FB6F894DEBF0FBECDBF53 +:102DC000DF91CF911F910F91FF90EF90DF90CF9007 +:102DD00008951F93CF93DF93CDB7DEB72C970FB62F +:102DE000F894DEBF0FBECDBF4F83588769877A87BF +:102DF0008B879C87CE0107960E94FC148823C1F024 +:102E00002F8138858A859B85892B31F03F3F11F0D2 +:102E100080E003C02F3FE1F781E0811147C04F817F +:102E2000588569857A858B859C850E9455143EC09E +:102E300086E0FE013796DE01119601900D928A958B +:102E4000E1F7FF81E8854A855B854115510531F041 +:102E5000EF3F31F481E0FF3F19F403C081E001C08E +:102E600080E080FD23C020917A0130E0C901019605 +:102E7000877099276091790170E086179707F1F1C3 +:102E8000F983EA835D834C8396E0929FD001939F00 +:102E9000B00D1124A558BE4FFE01319601900D9240 +:102EA0009A95E1F780937A010E94651416E080916B +:102EB000790190917A01891779F1189FC001112445 +:102EC00085589E4F0E94FC14882331F1E0917901CE +:102ED0001E9FF0011124E558FE4F4081518162810F +:102EE0007381848195810E9455148091790190E0CD +:102EF00001968770992780937901D9CF0E94191480 +:102F000010927A0110927901EBEAF1E086E0DF019C +:102F10001D928A95E9F7CACF2C960FB6F894DEBFBA +:102F20000FBECDBFDF91CF911F910895EF92FF9219 +:102F30000F931F93CF93DF939C01009709F471C007 +:102F4000F12CEE24E394E9012196F9018491843770 +:102F500040F4843008F056C0813081F0823021F195 +:102F600060C0853709F449C0C0F19CE7980F9037DD +:102F700008F057C08F770E94071146C089010E5F85 +:102F80001F4FFE01849190E2980F983050F48770A3 +:102F9000FE2D01C0FF0F8A95EAF78F2F0E94D41AE9 +:102FA00015C00E943F1014C089010E5F1F4FFE0123 +:102FB000849190E2980F983068F48770FE2D01C0DC +:102FC000FF0F8A95EAF78F2F0E94DA1A0E94071BDB +:102FD000E8011AC00E940711FBCF2E5F3F4FFE0190 +:102FE000C491CC2341F08FE99FE00197F1F700C035 +:102FF0000000C150F6CFE90107C0FE01F490E901DD +:10300000229602C00E943F108F2D882341F0EFE9E5 +:10301000FFE03197F1F700C000008150F6CF9E012C +:1030200092CFDF91CF911F910F91FF90EF90089574 +:1030300008956093B5017093B6018093B7019093A2 +:10304000B8010C9405140F931F930091B5011091D2 +:10305000B6012091B7013091B801062B172B282B10 +:10306000392B0093B5011093B6012093B70130932B +:10307000B8011F910F910C9405140F931F930091A9 +:10308000B5011091B6012091B7013091B801062326 +:103090001723282339230093B5011093B6012093F9 +:1030A000B7013093B8011F910F910C9405140F9341 +:1030B0001F930091B5011091B6012091B701309195 +:1030C000B80106271727282739270093B501109341 +:1030D000B6012093B7013093B8011F910F910C9462 +:1030E00005141092B1011092B2011092B301109226 +:1030F000B4010C94051441E050E060E070E004C0BD +:10310000440F551F661F771F8A95D2F74093B10170 +:103110005093B2016093B3017093B4010C94051401 +:1031200041E050E060E070E004C0440F551F661FAE +:10313000771F8A95D2F78091B1019091B201A09149 +:10314000B301B091B401842B952BA62BB72B8093A0 +:10315000B1019093B201A093B301B093B4010C9468 +:10316000051441E050E060E070E004C0440F551FDA +:10317000661F771F8A95D2F7409550956095709598 +:103180008091B1019091B201A091B301B091B401CD +:1031900084239523A623B7238093B1019093B20192 +:1031A000A093B301B093B4010C94051441E050E036 +:1031B00060E070E004C0440F551F661F771F8A95BA +:1031C000D2F78091B1019091B201A091B301B09179 +:1031D000B40184279527A627B7278093B101909340 +:1031E000B201A093B301B093B4010C9405140F93F2 +:1031F0001F930091B1011091B2012091B301309160 +:10320000B401062B172B282B392B0093B1011093F7 +:10321000B2012093B3013093B4011F910F910C942C +:1032200005140F931F930091B1011091B2012091E9 +:10323000B3013091B40106231723282339230093C7 +:10324000B1011093B2012093B3013093B4011F91E7 +:103250000F910C9405140F931F930091B1011091DD +:10326000B2012091B3013091B40106271727282716 +:1032700039270093B1011093B2012093B301309329 +:10328000B4011F910F910C9405140895CF92DF9211 +:10329000EF92FF920F931F93CF93DF93EC01C090B7 +:1032A000B501D090B601E090B701F090B8018091DF +:1032B000B1019091B201A091B301B091B401C82ABB +:1032C000D92AEA2AFB2A0FE110E0B701A601002E55 +:1032D00004C076956795579547950A94D2F740FDB7 +:1032E00005C00150110988F780E007C0BE01802F9A +:1032F0000E9489070197A9F3802FDF91CF911F9139 +:103300000F91FF90EF90DF90CF900895CF93DF93D0 +:10331000EC010E944619BE010E948907DF91CF91FE +:103320000895CB010E94861908958091BE010895E9 +:103330008093BE0108951092BE0108950E94081C5A +:103340002091BC013091BD018217930750F00E947B +:10335000081C2091BC013091BD01821B930B9C0184 +:103360000AC00E94081C2091BC013091BD0120952B +:103370003095280F391F81E0283B3B4008F480E05E +:1033800008958091BB0185958595859508958091D7 +:10339000BB01877008950E94081C2091B9013091EB +:1033A000BA018217930768F00E94081C2091B901A6 +:1033B0003091BA01821B930B883B9B4078F480E0EC +:1033C00014C00E94081C2091B9013091BA012095C7 +:1033D0003095280F391F283B3B4088F38091BB0173 +:1033E00082FB882780F991E089278170089598E011 +:1033F000899F90011124622B6093BB010E94901859 +:103400000E94081C9093BA018093B901089510920C +:10341000BB011092BA011092B90108954091BB010D +:10342000809584238093BB01982F977089F450E096 +:10343000282F332727FD30954217530749F08595EC +:10344000859585950E94B1181092BA011092B90124 +:1034500008959091BB01977081E009F480E0089590 +:1034600090910C019923D9F090910D019923B9F015 +:10347000982F9695969596959F3088F5E0910E0138 +:10348000F0910F01E90FF11D877021E030E001C0DC +:10349000220F8A95EAF78181822B818308954091DA +:1034A0000E0150910F0120E030E09FEFFA01E20F92 +:1034B000F31F6281681799F09F3F19F4611101C0F1 +:1034C000922F2F5F3F4F2E30310581F79F3F39F00C +:1034D000FA01E90FF11D97FDFA9582830895089589 +:1034E00090910C019923E1F090910D019923C1F085 +:1034F000982F9695969596959F3020F5E0910E0120 +:10350000F0910F01E90FF11D877021E030E001C05B +:10351000220F8A95EAF72095818128232183089537 +:1035200040910E0150910F0120E030E0FA01E20FCE +:10353000F31F9281981301C012822F5F3F4F2E30EC +:103540003105A1F7089581E090E0E0910E01F0913E +:103550000F01E80FF91F1082019680319105A9F73C +:1035600008958091D20108959091D201982B909363 +:10357000D201089580959091D20198239093D20121 +:1035800008951092D20108959091D101982B9093B3 +:10359000D101089580959091D10198239093D10104 +:1035A00008951092D10108959091D001982B909395 +:1035B000D001089580959091D00198239093D001E7 +:1035C00008951092D00108958093BF010E94081CB5 +:1035D0009093BD018093BC0108951092BF01109299 +:1035E000BD011092BC01089540910E0150910F0150 +:1035F00020E030E080E0FA01E20FF31F91819111A9 +:103600008F5F2F5F3F4F2F303105A9F70895E0916D +:103610000E01F0910F018091D2018083E0910E01A3 +:10362000F0910F0180819091D101892B8083E091ED +:103630000E01F0910F0180819091D001892B808340 +:103640008091BF01882399F00E949E1981110E94E8 +:10365000ED1AE0910E01F0910F0180819091BF0170 +:10366000892B80830E94F41A81110E94ED1A8091A7 +:103670000E0190910F010C94220FCF92DF92EF92E6 +:10368000FF920F931F936C01EE24FF24C114D10409 +:10369000E104F10421F46B017C0180E001C080E1D0 +:1036A00033272F2D1E2D0D2D011511052105310557 +:1036B00019F0885F6801790197018601A4E03695C9 +:1036C000279517950795AA95D1F70115110521059D +:1036D000310519F08C5F6801790197018601F2E0EC +:1036E0003695279517950795FA95D1F70115110588 +:1036F0002105310519F08E5F68017901B701A60136 +:103700007695679557954795452B462B472B09F09E +:103710008F5F1F910F91FF90EF90DF90CF900895F2 +:103720008091E801843021F11092D40120E488E1F5 +:1037300090E00FB6F894A895809360000FBE209398 +:10374000600080E00E94240883B7817F846083BF8B +:1037500083B7816083BF7894889583B78E7F83BF5A +:1037600088E10FB6F89480936000109260000FBE5D +:10377000089508950895CF930E94B91B0E944804AC +:103780000E94BA1BC0E08C2F0E943505811105C034 +:10379000CF5FCE30C1F780E001C081E0CF910895C6 +:1037A0000E9419140E94160F0C9424081F920F9265 +:1037B0000FB60F9211248F939F93AF93BF93809175 +:1037C000D401811113C08091D5019091D601A091AF +:1037D000D701B091D8014196A11DB11D8093D501AB +:1037E0009093D601A093D701B093D801BF91AF9128 +:1037F0009F918F910F900FBE0F901F90189582E0B0 +:1038000084BD93E095BD9AEF97BD80936E000895B7 +:103810002FB7F8948091D5019091D601A091D7014E +:10382000B091D8012FBF0895CF92DF92EF92FF920F +:103830000F931F932FB7F8944091D5015091D60163 +:103840006091D7017091D8012FBF6A017B01EE24EE +:10385000FF248C0120E030E0C016D106E206F3061A +:1038600010F441505109481B590BCA011F910F9187 +:10387000FF90EF90DF90CF9008951F920F920FB6B8 +:103880000F9211248F939F93AF93BF938091D50193 +:103890009091D601A091D701B091D8010196A11DB8 +:1038A000B11D8093D5019093D601A093D701B09319 +:1038B000D801BF91AF919F918F910F900FBE0F9044 +:1038C0001F9018950E941C0CF8942FEF87EA91E640 +:1038D000215080409040E1F700C0000087E090EB6D +:1038E000DC018093F2019093F301A093F401B09373 +:1038F000F5012CE088E190E00FB6F894A89580934C +:1039000060000FBE20936000FFCFEF92FF920F93F5 +:103910001F93CF93DF93E82EF12C8F2D0E94350556 +:10392000C0E0D0E0082F10E098010C2E02C03595C1 +:1039300027950A94E2F720FD05C02196C630D105EF +:1039400099F709C06C2F7F2D80E00E943D05E81299 +:10395000F4CF81E005C0F3948EE0F812DECF80E072 +:10396000DF91CF911F910F91FF90EF900895CF932A +:10397000C82F8CE20E94851C882321F08C2FCF91C8 +:103980000C94851C80E0CF910895CF930E940A1E6D +:10399000811102C00E94F01DC5E6C15049F00E948D +:1039A00048048FE39CE90197F1F700C00000F5CFD0 +:1039B00089E20E94B71C811111C18AE20E94B71CE2 +:1039C00081110E94F01D85E00E94B71C81110E94A8 +:1039D000621C0E94151E8093D30187E00E94B71CD1 +:1039E000882399F18BE10E94B71C882351F09091B4 +:1039F000D30191FB882780F921E0822780FB91F990 +:103A000022C08EE00E94B71C882351F09091D30110 +:103A100092FB882780F921E0822780FB92F913C06E +:103A200080E10E94B71C9091D301882341F093FB61 +:103A3000882780F921E0822780FB93F904C0892F31 +:103A4000809580FB90F99093D3018091D3010E94DF +:103A5000191E0E94271E8093F10180EE0E94B71C60 +:103A6000882341F08091F101982F909590FB80F987 +:103A70008093F10189E30E94B71C882359F090914B +:103A8000F10191FB882780F921E0822780FB91F9E1 +:103A90009093F10182EE0E94B71C882359F0909117 +:103AA000F10192FB882780F921E0822780FB92F9BF +:103AB0009093F10186EE0E94B71C882359F09091F3 +:103AC000F10193FB882780F921E0822780FB93F99D +:103AD0009093F10183EE0E94B71C882359F09091D6 +:103AE000F10194FB882780F921E0822780FB94F97B +:103AF0009093F10185E30E94B71C882359F09091BF +:103B0000F10195FB882780F921E0822780FB95F958 +:103B10009093F10181E30E94B71C882359F09091A2 +:103B2000F10196FB882780F921E0822780FB96F936 +:103B30009093F10181E10E94B71C882359F0909184 +:103B4000F10197FB882780F921E0822780FB97F914 +:103B50009093F1018091F1010E942B1E8091F1015F +:103B600087FB882780F980930D0187E20E94B71CAC +:103B7000C82F8EE10E94B71C8111C2608FE10E94A4 +:103B8000B71C8111C46080E20E94B71C8111C8601B +:103B900081E20E94B71C8111C06182E20E94B71CC1 +:103BA0008111C06283E20E94B71C8111C06484E26B +:103BB0000E94B71C882311F0C06802C0CC2329F0F2 +:103BC0008C2F0E94221E6C2F03C00E941E1E682F85 +:103BD00070E080E090E0CF910C941918CF91089597 +:103BE0006DEE7EEF80E090E00E94DD2360E082E0F9 +:103BF00090E00E94CB2360E083E090E00E94CB2322 +:103C000060E084E090E00E94CB2360E085E090E0FB +:103C10000C94CB2380E090E00E94C52321E08D3EF0 +:103C20009E4F09F020E0822F089582E090E00C94EE +:103C3000BD23682F82E090E00C94CB2383E090E0DA +:103C40000C94BD23682F83E090E00C94CB2384E098 +:103C500090E00C94BD23682F84E090E00C94CB237B +:103C60008091DB0180FF0BC06091130185E0689FAC +:103C7000B001112475956795759567952AC081FFE8 +:103C800009C06091130185E0689FB001112475950A +:103C900067951FC082FF07C06091130185E0689F90 +:103CA000B001112416C04091DC014423C9F0609199 +:103CB0001201461788F72091130185E0289F900193 +:103CC0001124429FC001439F900D112470E00E9477 +:103CD0008F236038710540F46115710539F002C019 +:103CE00065E070E0862F08958FE7089581E00895DC +:103CF0008091DB0180FF08C06091110170E0759533 +:103D000067957595679521C081FF06C06091110187 +:103D100070E07595679519C082FF04C0609111012C +:103D200070E010C08091DC018823C1F06091100127 +:103D30008617A0F790911101989FC001112470E09F +:103D40000E948F236038710528F46115710521F0F8 +:103D5000862F08958FE7089581E0089561E070E06F +:103D6000F4CF803F21F40E94301E819504C0813F32 +:103D700029F40E94301E8093DF010895823F21F4D0 +:103D80000E94301E819504C0833F29F40E94301E9A +:103D90008093DE010895893F19F40E94781E05C0C2 +:103DA0008A3F31F40E94781E81958093E001089546 +:103DB0008B3F21F40E94781E819504C08C3F29F42A +:103DC0000E94781E8093E1010895843F21F4809140 +:103DD000DD01816017C0853F21F48091DD018260A3 +:103DE00011C0863F21F48091DD0184600BC0873FC4 +:103DF00021F48091DD01886005C0883F31F4809115 +:103E0000DD0180618093DD0108958D3F21F4809173 +:103E1000DB0181600BC08E3F21F48091DB01826069 +:103E200005C08F3F29F48091DB0184608093DB0122 +:103E30000895803F39F48091DF0187FF6CC01092B4 +:103E4000DF0169C0813F29F48091DF011816BCF3BE +:103E500062C09091DE01823F29F497FF5CC010920E +:103E6000DE0159C0833F19F41916CCF354C0893FC1 +:103E700041F48091E00118160CF04DC01092E00161 +:103E80004AC08A3F29F48091E00187FF44C0F6CF01 +:103E90008B3F39F48091E10187FF3DC01092E10131 +:103EA0003AC08C3F29F48091E1011816BCF333C06D +:103EB000843F21F48091DD018E7F17C0853F21F47E +:103EC0008091DD018D7F11C0863F21F48091DD015D +:103ED0008B7F0BC0873F21F48091DD01877F05C078 +:103EE000883F31F48091DD018F7E8093DD0113C026 +:103EF0008D3F21F48091DB018E7F0BC08E3F21F43A +:103F00008091DB018D7F05C08F3F29F48091DB011B +:103F10008B7F8093DB018091DE0181110EC0809147 +:103F2000DF0181110AC08091E001811106C08091FA +:103F3000E101811102C01092DC0108958DED91E044 +:103F40000E942D0F0E94081C9093DA018093D901E2 +:103F500008951F93CF93DF938091D9019091DA0157 +:103F60000E94141C4091DC01442321F02091140193 +:103F700030E006C0209115015AE0259F90011124E0 +:103F80008217930708F482C08091DE011091DF014F +:103F9000D091E001C091E101811107C0111105C06C +:103FA000D11103C0CC2309F471C04F3F19F04F5F0A +:103FB0004093DC01181624F40E94301E8093DE0129 +:103FC0008091DE0187FF05C00E94301E819580939D +:103FD000DE01111624F40E94301E8093DF018091CF +:103FE000DF0187FF05C00E94301E81958093DF01AD +:103FF0006091DE01662339F11091DF01112319F17F +:10400000772767FD7095872F972F0E94A02223E3C3 +:1040100033E343E35FE30E9404230E946D22609335 +:10402000DE01612F772767FD7095872F972F0E94FC +:10403000A02223E333E343E35FE30E9404230E94CF +:104040006D226093DF011D1624F40E94781E809378 +:10405000E0018091E00187FF05C00E94781E8195F4 +:104060008093E0011C1624F40E94781E8093E101E5 +:104070008091E10187FF05C00E94781E81958093A1 +:10408000E101DF91CF911F910C949E1FDF91CF91A1 +:104090001F910895EDEDF1E085E0DF011D928A9515 +:1040A000E9F71092DC011092DB010895833081F171 +:1040B00028F4813059F08230D1F00895853009F428 +:1040C00049C0B8F1863009F456C008952091150111 +:1040D000862F90E0820F911D8F3F910520F4620F93 +:1040E0006093150108958FEF809315010895209135 +:1040F0001401862F90E0820F911D8F3F910520F4CF +:10410000620F6093140108958FEF80931401089556 +:1041100020911301862F90E0820F911D8F3F910512 +:1041200020F4620F6093130108958FEF80931301C1 +:10413000089520911201862F90E0820F911D8F3FEC +:10414000910520F4620F6093120108958FEF809320 +:104150001201089520911101862F90E0820F911D88 +:104160008F3F910520F4620F6093110108958FEF46 +:1041700080931101089520911001862F90E0820F05 +:10418000911D8F3F910520F4620F609310010895F7 +:104190008FEF809310010895833011F128F481305E +:1041A00049F0823091F00895853081F120F1863018 +:1041B000C1F1089580911501681720F4861B809342 +:1041C0001501089510921501089580911401681742 +:1041D00020F4861B80931401089510921401089511 +:1041E00080911301681720F4861B809313010895B2 +:1041F00010921301089580911201681720F4861B14 +:104200008093120108951092120108958091110176 +:10421000681720F4861B80931101089510921101F4 +:10422000089580911001681720F4861B8093100177 +:1042300008951092100108958B3109F46AC008F5B1 +:104240008E3009F470C070F4873009F452C018F44D +:104250008630B9F134C0883009F4A1C08B3009F43C +:104260009EC02DC0813109F479C020F4803109F459 +:1042700064C025C0863109F492C0893109F48FC029 +:104280001EC0853309F483C060F4873209F47FC00F +:1042900020F48E3108F06DC012C0893209F477C065 +:1042A0000EC0833438F48A3308F061C0883309F4CF +:1042B00076C005C0833409F46AC0883461F080E0B8 +:1042C00008958091D301817F8E7F8093D30181E017 +:1042D0008093E30108950E9419142FEF83ED90E37A +:1042E000215080409040E1F700C000000E94621C15 +:1042F00056C09091D301892F8095817080FB90F9F1 +:1043000019F09660986027C0997F977F9093D301AA +:1043100046C09091D30191FB882780F921E0822744 +:1043200080FB91F913C09091D30192FB882780F90B +:1043300021E0822780FB92F909C09091D30193FB81 +:10434000882780F921E0822780FB93F99093D3019D +:10435000882329F191609093D30108950E94191444 +:1043600080910D0191E0892780930D0118C027EC01 +:1043700001C023EE280F61E070E080E090E004C00F +:10438000660F771F881F991F2A95D2F704C061E036 +:1043900070E080E090E00E9419180E94191481E0FA +:1043A000089580E0089580E00895CF93C82F80910C +:1043B000E301813079F018F08230D1F184C0A0910E +:1043C0000E01B0910F018C91813169F0823209F0B8 +:1043D0007CC009C0A0910E01B0910F018C91813178 +:1043E00011F0823249F48C2F0E94D12181111DC01D +:1043F0008C2F0E941C211AC08C2F0E94D321811166 +:1044000014C0C43179F048F4CB3079F0C03109F0F0 +:1044100060C082E08093E30108C0C93219F0C8335C +:1044200021F057C01092E30154C081E0817053C065 +:10443000C93289F118F5C43171F1A8F4C73009F017 +:1044400046C08AE08093150194E19093140193E0B3 +:10445000909313018093120188E08093110188E208 +:104460008093100134C0CE51C63088F5EC2FF0E0B7 +:10447000E65DFE4F80818093E20129C0CE34E9F0F1 +:1044800020F4CB3421F56AE013C0C13579F0C23590 +:10449000F1F461E00DC08091E201882319F01092DF +:1044A000E20115C081E08093E30115C061E006C020 +:1044B0008091E2010E9456200AC06AE08091E201E8 +:1044C0000E94CC2004C01092E30180E004C081E08F +:1044D00002C080E0ABCFCF91089504D06894B111B1 +:1044E0008DC0089570D088F09F5790F0B92F99270C +:1044F000B751A0F0D1F0660F771F881F991F1AF0EF +:10450000BA95C9F712C0B13081F077D0B1E0089503 +:1045100074C0672F782F8827B85F39F0B93FCCF384 +:10452000869577956795B395D9F73EF490958095E4 +:10453000709561957F4F8F4F9F4F0895E89409C004 +:1045400097FB3EF490958095709561957F4F8F4FC6 +:104550009F4F9923A9F0F92F96E9BB279395F695DC +:10456000879577956795B795F111F8CFFAF4BB0F5A +:1045700011F460FF1BC06F5F7F4F8F4F9F4F16C0BE +:10458000882311F096E911C0772321F09EE8872F48 +:10459000762F05C0662371F096E8862F70E060E004 +:1045A0002AF09A95660F771F881FDAF7880F96957D +:1045B000879597F9089557FD9058440F551F59F066 +:1045C0005F3F71F04795880F97FB991F61F09F3F00 +:1045D00079F087950895121613061406551FF2CF29 +:1045E0004695F1DF08C0161617061806991FF1CF79 +:1045F00086957105610508940895E894BB276627A0 +:104600007727CB0197F908950BD078C069D028F0AF +:104610006ED018F0952309F05AC05FC01124EECF78 +:10462000CADFA0F3959FD1F3950F50E0551F629F0D +:10463000F001729FBB27F00DB11D639FAA27F00DFB +:10464000B11DAA1F649F6627B00DA11D661F829F22 +:104650002227B00DA11D621F739FB00DA11D621F07 +:10466000839FA00D611D221F749F3327A00D611D24 +:10467000231F849F600D211D822F762F6A2F112406 +:104680009F5750408AF0E1F088234AF0EE0FFF1F59 +:10469000BB1F661F771F881F91505040A9F79E3F90 +:1046A000510570F014C0AACF5F3FECF3983EDCF3E5 +:1046B000869577956795B795F795E7959F5FC1F7CD +:1046C000FE2B880F911D9695879597F9089597F978 +:1046D0009F6780E870E060E008959FEF80EC0895A8 +:1046E00000240A94161617061806090608950024D1 +:1046F0000A9412161306140605060895092E03944B +:10470000000C11F4882352F0BB0F40F4BF2B11F4BE +:1047100060FF04C06F5F7F4F8F4F9F4F089597FBDF +:10472000072E16F4009407D077FD09D00E94A92324 +:1047300007FC05D03EF4909581959F4F08957095A4 +:1047400061957F4F0895EE0FFF1F0590F491E02DC6 +:104750000994AA1BBB1B51E107C0AA1FBB1FA617C8 +:10476000B70710F0A61BB70B881F991F5A95A9F71A +:1047700080959095BC01CD010895F999FECF92BD29 +:1047800081BDF89A992780B50895A8E1B0E042E08C +:1047900050E00C94E523262FF999FECF92BD81BD00 +:1047A000F89A019700B4021639F01FBA20BD0FB66F +:1047B000F894FA9AF99A0FBE08950196272F0E944D +:1047C000CC230C94CB23DC01CB01FC01F999FECF67 +:1047D00006C0F2BDE1BDF89A319600B40D92415089 +:0A47E0005040B8F70895F894FFCF99 +:1047EA0020022608B30890085C0829080101C001C4 +:1047FA0028080A03140A3F4D363979042C04F603B3 +:10480A00BD035003690382039B03010203040506E7 +:04481A000708090082 :00000001FF diff --git a/keyboard/ergodox_ez/keymaps/erez_experimental/keymap.c b/keyboard/ergodox_ez/keymaps/erez_experimental/keymap.c index bf5a974bfe..f257dbee36 100644 --- a/keyboard/ergodox_ez/keymaps/erez_experimental/keymap.c +++ b/keyboard/ergodox_ez/keymaps/erez_experimental/keymap.c @@ -140,7 +140,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; const uint16_t PROGMEM fn_actions[] = { - [1] = ACTION_LAYER_TAP_TOGGLE(SYMB) // FN1 - Momentary Layer 1 (Symbols) + [1] = ACTION_LAYER_TAP_TOGGLE(SYMB), // FN1 - Momentary Layer 1 (Symbols) + [2] = ACTION_MACRO_TAP(0), // Eric Tang's Famous Macro! + [3] = ACTION_MACRO_TAP(1) // Eric Tang's Famous Macro! }; static uint16_t key_timer; @@ -148,33 +150,46 @@ static uint16_t key_timer; const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { switch(id) { - case 0: { - if (record->event.pressed) { - key_timer = timer_read(); // if the key is being pressed, we start the timer. - register_code(KC_LSFT); // we're now holding down Shift. - } else { // this means the key was just released, so we can figure out how long it was pressed for (tap or "held down"). - if (timer_elapsed(key_timer) < 70) { // the threshhold we pick for counting something as a tap. - register_code(KC_9); // sending 9 while Shift is held down gives us an opening paren - unregister_code(KC_9); // now let's let go of that key - } - unregister_code(KC_LSFT); // let's release the Shift key now. - } - break; - } - case 1: { - if (record->event.pressed) { - key_timer = timer_read(); // Now we're doing the same thing, only for the right shift/close paren key - register_code(KC_RSFT); - } else { - if (timer_elapsed(key_timer) < 70) { - register_code(KC_0); - unregister_code(KC_0); - } - unregister_code(KC_RSFT); - } - break; + case 0: + if (record->event.pressed) { + register_mods(MOD_BIT(KC_LSFT)); + if (record->tap.count && !record->tap.interrupted) { + register_code(KC_9); + } + else { + record->tap.count = 0; + } + } + else { + if (record->tap.count) { + unregister_code(KC_9); + } + else { + } + unregister_mods(MOD_BIT(KC_LSFT)); + } + break; + + case 1: + if (record->event.pressed) { + register_mods(MOD_BIT(KC_LSFT)); + if (record->tap.count && !record->tap.interrupted) { + register_code(KC_0); + } + else { + record->tap.count = 0; + } + } + else { + if (record->tap.count) { + unregister_code(KC_0); + } + else { + } + unregister_mods(MOD_BIT(KC_LSFT)); + } + break; } - } return MACRO_NONE; }; -- cgit v1.2.1 From 90a65347294e93ee23c1f24c6ae342a42e6c2b29 Mon Sep 17 00:00:00 2001 From: Nicholas Keene Date: Thu, 5 May 2016 22:55:55 -0500 Subject: The Ordinary Layout is extraordinarily familiar and powerful --- keyboard/ergodox_ez/keymaps/ordinary/keymap.c | 197 +- .../ergodox_ez/keymaps/ordinary/ordinary-base.png | Bin 100472 -> 99605 bytes .../ergodox_ez/keymaps/ordinary/ordinary-base.txt | 10 +- .../ergodox_ez/keymaps/ordinary/ordinary-media.png | Bin 124173 -> 124144 bytes .../ergodox_ez/keymaps/ordinary/ordinary-media.txt | 8 +- .../keymaps/ordinary/ordinary-special.png | Bin 0 -> 63065 bytes .../keymaps/ordinary/ordinary-special.txt | 27 + .../keymaps/ordinary/ordinary-symbol.png | Bin 103677 -> 103735 bytes .../keymaps/ordinary/ordinary-symbol.txt | 4 +- keyboard/ergodox_ez/keymaps/ordinary/ordinary.hex | 2415 ++++++++++---------- keyboard/ergodox_ez/keymaps/ordinary/readme.md | 37 +- 11 files changed, 1373 insertions(+), 1325 deletions(-) create mode 100644 keyboard/ergodox_ez/keymaps/ordinary/ordinary-special.png create mode 100644 keyboard/ergodox_ez/keymaps/ordinary/ordinary-special.txt diff --git a/keyboard/ergodox_ez/keymaps/ordinary/keymap.c b/keyboard/ergodox_ez/keymaps/ordinary/keymap.c index 6905cbc7a6..6af3720fdc 100644 --- a/keyboard/ergodox_ez/keymaps/ordinary/keymap.c +++ b/keyboard/ergodox_ez/keymaps/ordinary/keymap.c @@ -7,26 +7,29 @@ #define BASE 0 // default layer #define SYMB 1 // symbols layer #define MDIA 2 // media layer -#define LOCK 3 // shift-lock layer +#define SPEC 3 // special layer #define LCaps 10 // left caps-shift key #define LSymb 11 // left symbol-shift key #define LMdia 12 // left media-shift key -#define LLock 13 // left shift-lock key -#define RCaps 20 // right caps-shift key -#define RSymb 21 // right symbol-shift key -#define RMdia 22 // right media-shift key -#define RLock 23 // right shift-lock key +#define LSpec 13 // left special-shift key +#define RCaps 14 // right caps-shift key +#define RSymb 15 // right symbol-shift key +#define RMdia 16 // right media-shift key +#define RSpec 17 // right special-shift key -#define MUL 30 // mouse up left -#define MUR 31 // mouse up right -#define MDL 32 // mouse down left -#define MDR 33 // mouse down right +#define MUL 20 // mouse up left +#define MUR 21 // mouse up right +#define MDL 22 // mouse down left +#define MDR 23 // mouse down right /* - * The Ordinary Layout for the Ergodox EZ keyboard, v3.141 + * The Ordinary Layout for the Ergodox EZ keyboard, v4 * * Modifications from default by Nicholas Keene ergodoxez@nicholaskeene.com + * + * No rights reserved. This software is in the public domain. + * Credit me if you are friendly but if you're a jerk don't bother. * * Details: readme.md * https://github.com/nrrkeene/qmk_firmware/tree/master/keyboard/ergodox_ez/keymaps/ordinary @@ -36,37 +39,37 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /******* Base Layer ******************************************************************************************************** * - * ,-----------------------------------------------------. ,-----------------------------------------------------. - * | Lock `~ | 1 | 2 | 3 | 4 | 5 | ESC | | - | 6 | 7 | 8 | 9 | 0 | =+ Lock | - * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------| - * | Media Tab | Q | W | E | R | T | [ | | ] | Y | U | I | O | P | \| Media | - * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------| - * | Symbol | A | S | D | F | G |------| |------| H | J | K | L | ; | '" Symbol | - * |-----------+------+------+------+------+------|Shift | | Tab |------+------+------+------+------+-----------| - * | LShift | Z | X | C | V | B | -Tab | | | N | M | , | . | / | LShift | - * `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------' - * | LCtrl | Meh |Hyper | LAlt | LGui | | RGui | RAlt | Hyper| Meh | RCtrl | - * `-----------------------------------' `-----------------------------------' - * ,-------------. ,-------------. - * | Home | End | | Left | Right| - * ,------|------|------| |------+------+------. - * | | | PgUp | | Up | | | - * |Backsp| Del |------| |------| Enter| Space| - * | | | PgDn | | Down | | |Aa - * `--------------------' `--------------------' + * ,------------------------------------------------------. ,------------------------------------------------------. + * | Special `~ | 1 | 2 | 3 | 4 | 5 | ESC | | - | 6 | 7 | 8 | 9 | 0 | =+ Special | + * |------------+------+------+------+------+-------------| |------+------+------+------+------+------+------------| + * | Media Tab | Q | W | E | R | T | [ | | ] | Y | U | I | O | P | \| Media | + * |------------+------+------+------+------+------| | | |------+------+------+------+------+------------| + * | Symbol | A | S | D | F | G |------| |------| H | J | K | L | ; | '" Symbol | + * |------------+------+------+------+------+------|Shift | | Tab |------+------+------+------+------+------------| + * | Capitals | Z | X | C | V | B | -Tab | | | N | M | , | . | / | Capitals | + * `------------+------+------+------+------+-------------' `-------------+------+------+------+------+------------' + * | LCtrl | Meh |Hyper | LAlt | LGui | | RGui | RAlt | Hyper| Meh | RCtrl | + * `-----------------------------------' `-----------------------------------' + * ,-------------. ,-------------. + * | Home | End | | Left | Right| + * ,------|------|------| |------+------+------. + * | | | PgUp | | Up | | | + * |Backsp| Del |------| |------| Enter| Space| + * | | | PgDn | | Down | | | + * `--------------------' `--------------------' */ [BASE] = KEYMAP( // left hand - F(LLock) ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 ,KC_ESC + F(LSpec),KC_1,KC_2,KC_3 ,KC_4 ,KC_5 ,KC_ESC ,F(LMdia) ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,KC_LBRC ,M(LSymb) ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G -,M(LCaps) ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,LSFT(KC_TAB) +,M(LCaps) ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,LSFT(KC_TAB) ,KC_LCTL ,KC_MEH ,KC_HYPR,KC_LALT,KC_LGUI ,KC_HOME,KC_END ,KC_PGUP ,KC_BSPC,KC_DEL ,KC_PGDN // right hand - ,KC_MINS ,KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,F(RLock) + ,KC_MINS ,KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,F(RSpec) ,KC_RBRC ,KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,F(RMdia) ,KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN ,F(RSymb) ,KC_TAB ,KC_N ,KC_M ,KC_COMM,KC_DOT ,KC_SLSH ,M(RCaps) @@ -127,7 +130,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |------+---------+---------+---------+---------+---------| Up | | Up |---------+---------+---------+---------+---------+------| * | | Sleep |MouseLeft|MouseDown|MouseRght|Volume Dn|------| |------| Num Lock| Left | Down | Right | MyComp | | * |------+---------+---------+---------+---------+---------|Scroll| |Scroll|---------+---------+---------+---------+---------+------| - * | | |MouseDnLf|MouseDown|MouseDnRg| Mute | Down | | Down | | End | Down | PgDn | RShift | | + * | | |MouseDnLf|MouseDown|MouseDnRg| Mute | Down | | Down | | End | Down | PgDn | | | * `------+---------+---------+---------+---------+----------------' `----------------+---------+---------+---------+---------+------' * |LCtrl| Meh | MClick | LClick | R Click| |Cmd/Insrt|Optn/Del | Hyper | Meh |RCtrl| * `---------------------------------------------' `---------------------------------------------' @@ -153,14 +156,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ,KC_NO ,KC_F16 ,KC_F17 ,KC_F18 ,KC_F19 ,KC_F20 ,KC_TRNS ,KC_WH_U ,KC_PSCR ,KC_HOME ,KC_UP ,KC_PGUP ,KC_MAIL ,KC_TRNS ,KC_NLCK ,KC_LEFT ,KC_DOWN ,KC_RIGHT,KC_MYCM ,KC_TRNS - ,KC_WH_D ,KC_NO ,KC_END ,KC_DOWN ,KC_PGDN ,KC_RSFT ,KC_TRNS + ,KC_WH_D ,KC_NO ,KC_END ,KC_DOWN ,KC_PGDN ,KC_NO ,KC_TRNS ,GUI_T(KC_INS),ALT_T(KC_DEL),KC_HYPR ,KC_MEH ,KC_RCTL ,KC_MPRV ,KC_MNXT ,KC_VOLU ,KC_VOLD ,KC_MSTP ,KC_MPLY ), -/******* Lock Layer ******************************************************************************************************** +/******* Special Layer ***************************************************************************************************** * * ,-----------------------------------------------------. ,-----------------------------------------------------. * | | Esc | | | | | | | | | | | | Bspc | | @@ -169,7 +172,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------| * | | | | | | |------| |------| | | | | | | * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------| - * | Caps LOCK | | | | | | | | | | | | | | Caps LOCK | + * | | | | | | | | | | | | | | | RShift | * `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------' * | | | | | | | | | | | | * `----------------------------------' `----------------------------------' @@ -181,12 +184,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | * `--------------------' `--------------------' */ -[LOCK] = KEYMAP( +[SPEC] = KEYMAP( // left hand KC_TRNS ,KC_ESC ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS -,KC_CAPS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS +,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS @@ -196,7 +199,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_BSPC ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS - ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_CAPS + ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_RSFT ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS @@ -206,65 +209,77 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; const uint16_t PROGMEM fn_actions[] = { - // the six faux shift keys are implemented as macro taps - [LSymb] = ACTION_MACRO_TAP(LSymb) + // the faux shift keys are implemented as macro taps + [LCaps] = ACTION_MACRO_TAP(LCaps) + ,[LSymb] = ACTION_MACRO_TAP(LSymb) ,[LMdia] = ACTION_MACRO_TAP(LMdia) - ,[LLock] = ACTION_MACRO_TAP(LLock) + ,[LSpec] = ACTION_MACRO_TAP(LSpec) + ,[RCaps] = ACTION_MACRO_TAP(RCaps) ,[RSymb] = ACTION_MACRO_TAP(RSymb) ,[RMdia] = ACTION_MACRO_TAP(RMdia) - ,[RLock] = ACTION_MACRO_TAP(RLock) + ,[RSpec] = ACTION_MACRO_TAP(RSpec) }; uint16_t caps_shift = 0; -uint16_t symb_shift = 0; // there are two shift keys for each layer, and two lock -uint16_t mdia_shift = 0; // keys; we increment a counter for each key pressed and -uint16_t shift_lock = 0; // decrement when released. +uint16_t symb_shift = 0; +uint16_t mdia_shift = 0; -bool symb_lock = false; // when shift-lock is used in conjunction with a shift -bool mdia_lock = false; // key the lock flag is toggled +bool symb_lock = false; +bool mdia_lock = false; const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { switch(id) { - // shift and lock between layers?L? + // There are two shift keys for each layer so we increment a layer_shift var when one + // is pressed and decrement when one is released. If both are pressed at the same time + // then the layer is locked (or unlocked). The shift counts are bound between 0 and 2 + // only because sometimes rapid pressing led to irregular events; this way the states + // are self healing during use. case LCaps: // both caps-shift keys trigger Left Shift case RCaps: // so they don't interfere with the magic combo if (record->event.pressed && !record->tap.count) { if(++caps_shift > 2) caps_shift = 2; - if(shift_lock) { + if(caps_shift == 2) { register_code(KC_CAPS); unregister_code(KC_CAPS); + } else if(caps_shift == 1) { + register_code(KC_LSFT); } - register_code(KC_LSFT); } else { if(--caps_shift < 0) caps_shift = 0; - if(!caps_shift) unregister_code(KC_LSFT); + if(caps_shift == 0) unregister_code(KC_LSFT); } break; case LSymb: if (record->event.pressed) { if(++symb_shift > 2) symb_shift = 2; - if(shift_lock) symb_lock = !symb_lock; - layer_on(SYMB); + if(symb_shift == 2) { + symb_lock = !symb_lock; + } else if(symb_shift == 1) { + layer_on(SYMB); + } } else { if(--symb_shift < 0) symb_shift = 0; - if((!symb_shift) && (!symb_lock)) layer_off(SYMB); + if((symb_shift == 0) && (!symb_lock)) layer_off(SYMB); } break; case LMdia: if (record->event.pressed) { - if (record->tap.count && !shift_lock) { + if (record->tap.count && (!mdia_shift) && (!mdia_lock)) { register_code(KC_TAB); } else { if(++mdia_shift > 2) mdia_shift = 2; - if(shift_lock) mdia_lock = !mdia_lock; - layer_on(MDIA); + if(mdia_shift == 2) { + mdia_lock = !mdia_lock; + } else if(mdia_shift == 1) { + layer_on(MDIA); + } } } else { - if(record->tap.count && !shift_lock) { + if(record->tap.count && (!mdia_shift) && (!mdia_lock)) { unregister_code(KC_TAB); } else { if(--mdia_shift < 0) mdia_shift = 0; @@ -273,37 +288,36 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) } break; - case LLock: + case LSpec: if (record->event.pressed) { - if(++shift_lock > 2) shift_lock = 2; - if(caps_shift) { - register_code(KC_CAPS); - unregister_code(KC_CAPS); - } - if(symb_shift) symb_lock = !symb_lock; - if(mdia_shift) mdia_lock = !mdia_lock; - layer_on(LOCK); - } else { - if(record->tap.count && !record->tap.interrupted && !symb_shift && !mdia_shift) { + if (record->tap.count && !record->tap.interrupted) { register_code(KC_GRV); + } else { + layer_on(SPEC); + } + } else { + if(record->tap.count && !record->tap.interrupted) { unregister_code(KC_GRV); + } else { + layer_off(SPEC); } - if(--shift_lock < 0) shift_lock = 0; - if(!shift_lock) layer_off(LOCK); } break; case RSymb: if (record->event.pressed) { - if (record->tap.count && !shift_lock) { + if (record->tap.count && (!symb_shift) && (!symb_lock)) { register_code(KC_QUOT); } else { if(++symb_shift > 2) symb_shift = 2; - if(shift_lock) symb_lock = !symb_lock; - layer_on(SYMB); + if(symb_shift == 2) { + symb_lock = !symb_lock; + } else if(symb_shift == 1) { + layer_on(SYMB); + } } } else { - if(record->tap.count && !shift_lock) { + if(record->tap.count && symb_shift == 0) { unregister_code(KC_QUOT); } else { if(--symb_shift < 0) symb_shift = 0; @@ -314,15 +328,18 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) case RMdia: if (record->event.pressed) { - if (record->tap.count && !shift_lock) { + if (record->tap.count && (!mdia_shift) && (!mdia_lock)) { register_code(KC_BSLS); } else { if(++mdia_shift > 2) mdia_shift = 2; - if(shift_lock) mdia_lock = !mdia_lock; - layer_on(MDIA); + if(mdia_shift == 2) { + mdia_lock = !mdia_lock; + } else if(mdia_shift == 1) { + layer_on(MDIA); + } } } else { - if(record->tap.count && !shift_lock) { + if(record->tap.count && (!mdia_shift) && (!mdia_lock)) { unregister_code(KC_BSLS); } else { if(--mdia_shift < 0) mdia_shift = 0; @@ -331,23 +348,19 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) } break; - case RLock: + case RSpec: if (record->event.pressed) { - if(++shift_lock > 2) shift_lock = 2; - if(caps_shift) { - register_code(KC_CAPS); - unregister_code(KC_CAPS); + if (record->tap.count && !record->tap.interrupted) { + register_code(KC_EQL); + } else { + layer_on(SPEC); } - if(symb_shift) symb_lock = !symb_lock; - if(mdia_shift) mdia_lock = !mdia_lock; - layer_on(LOCK); } else { - if (record->tap.count && !record->tap.interrupted && !symb_shift && !mdia_shift) { - register_code(KC_EQL); + if(record->tap.count && !record->tap.interrupted) { unregister_code(KC_EQL); + } else { + layer_off(SPEC); } - if(--shift_lock < 0) shift_lock = 0; - if(!shift_lock) layer_off(LOCK); } break; diff --git a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-base.png b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-base.png index 2864031b1b..9c561a10aa 100644 Binary files a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-base.png and b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-base.png differ diff --git a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-base.txt b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-base.txt index 66cd05503e..25731ea2e6 100644 --- a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-base.txt +++ b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-base.txt @@ -1,7 +1,7 @@ [{x:3.5},"#\n3",{x:10.5},"*\n8"], [{y:-0.875,x:2.5},"@\n2",{x:1},"$\n4",{x:8.5},"&\n7",{x:1},"(\n9"], [{y:-0.875,x:5.5},"%\n5",{c:"#ff4444"},"Esc",{x:4.5,c:"#cccccc"},"_\n\n\n\n\n\n-","^\n6"], -[{y:-0.875,c:"#2277ff",w:1.5},"Shift\n\n~\n\n\n\nLock\n`",{c:"#cccccc"},"!\n1",{x:14.5},")\n0",{c:"#2277ff",w:1.5},"+\n\nShift\n\n\n\n=\nLock"], +[{y:-0.875,c:"#2277ff",w:1.5},"Special\n\n~\n\n\n\nShift\n`",{c:"#cccccc"},"!\n1",{x:14.5},")\n0",{c:"#2277ff",w:1.5},"+\n\nSpecial\n\n\n\n=\nShift"], [{y:-0.375,x:3.5,c:"#cccccc"},"E",{x:10.5},"I"], [{y:-0.875,x:2.5},"W",{x:1},"R",{x:8.5},"U",{x:1},"O"], [{y:-0.875,x:5.5},"T",{h:1.5},"{\n\n\n\n\n\n[",{x:4.5,h:1.5},"}\n\n\n\n\n\n]","Y"], @@ -15,11 +15,11 @@ [{y:-0.875,x:2.5},"X",{x:1},"V",{x:8.5},"M",{x:1},">\n."], [{y:-0.875,x:5.5},"B",{x:6.5},"N"], [{y:-0.875,c:"#2277ff",w:1.5},"Capitals\n\n\n\n\n\nShift",{c:"#cccccc"},"Z",{x:14.5},"?\n/",{c:"#2277ff",w:1.5},"\n\nCapitals\n\n\n\n\nShift"], -[{y:-0.375,x:3.5,c:"#77aaff",f:3},"Option\n\n\nLAlt",{x:10.5,f:3},"Option\n\n\nRAlt"], -[{y:-0.875,x:2.5},"Hyper",{x:1,f:3},"Cmd\n\n\nSuper",{x:8.5,f:3},"Cmd\n\n\nSuper",{x:1},"Hyper"], -[{y:-0.75,x:0.5,f:3},"Ctrl\n\n\nLCtrl","Meh",{x:14.5},"Meh",{f:3},"Ctrl\n\n\nRCtrl"], +[{y:-0.375,x:3.5,c:"#77aaff"},"Option\n\n\nLAlt",{x:10.5},"Option\n\n\nRAlt"], +[{y:-0.875,x:2.5},"Hyper",{x:1},"Cmd\n\n\nSuper",{x:8.5},"Cmd\n\n\nSuper",{x:1},"Hyper"], +[{y:-0.75,x:0.5},"Ctrl\n\n\nLCtrl","Meh",{x:14.5},"Meh","Ctrl\n\n\nRCtrl"], [{r:30,rx:6.5,ry:4.25,y:-1,x:1,c:"#54d6de"},"Home","End"], -[{f:3,h:2},"< Del\n\n\nBackspace",{f:3,h:2},"Del >\n\n\nDelete","Page\n\n\n\n\n\nUp"], +[{h:2},"< Del\n\n\nBackspace",{h:2},"Del >\n\n\nDelete","Page\n\n\n\n\n\nUp"], [{x:2},"Page\n\n\n\n\n\nDown"], [{r:-30,rx:13,y:-1,x:-3},"Left","Right"], [{x:-3},"Up",{h:2},"Enter",{h:2},"Space"], diff --git a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.png b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.png index 85b08cc092..99e5ed80b1 100644 Binary files a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.png and b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.png differ diff --git a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.txt b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.txt index 815e2f5baf..4eccc9f350 100644 --- a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.txt +++ b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.txt @@ -1,7 +1,7 @@ [{x:3.5,c:"#99de2a"},"F13",{x:10.5},"F18"], [{y:-0.875,x:2.5},"F12",{x:1},"F14",{x:8.5},"F17",{x:1},"F19"], -[{y:-0.875,x:5.5},"F15",{c:"#ff4444"},"Esc",{x:4.5,c:"#cccccc",a:7},"",{c:"#99de2a",a:4},"F16"], -[{y:-0.875,c:"#2277ff",w:1.5},"Shift\n\n\n\n\n\nLock",{c:"#99de2a"},"F11",{x:14.5},"F20",{c:"#2277ff",w:1.5},"\n\nShift\n\n\n\n\nLock"], +[{y:-0.875,x:5.5},"F15",{c:"#ff4444"},"Esc",{x:4.5,c:"#737373",a:7},"",{c:"#99de2a",a:4},"F16"], +[{y:-0.875,c:"#2277ff",w:1.5},"Special\n\n\n\n\n\nShift",{c:"#99de2a"},"F11",{x:14.5},"F20",{c:"#2277ff",w:1.5},"\n\nSpecial\n\n\n\n\nShift"], [{y:-0.375,x:3.5,c:"#ff8500"},"Mouse\n\n\n\n\n\nUp",{x:10.5},"Cursor\n\n\n\n\n\nUp"], [{y:-0.875,x:2.5},"Mouse\n\n\n\n\n\nUpLeft",{x:1},"Mouse\n\n\n\n\n\nUpRgt",{x:8.5,c:"#ffb063"},"Home",{x:1},"Page\n\n\n\n\n\nUp"], [{y:-0.875,x:5.5,c:"#e6e067"},"Vol\n\n\n\n\n\nUp",{c:"#ffb063",h:1.5},"Scroll\n\n\n\n\n\nUp",{x:4.5,h:1.5},"Scroll\n\n\n\n\n\nUp",{c:"#e6e067"},"Print\n\n\n\n\n\nScreen"], @@ -13,8 +13,8 @@ [{y:-0.625,x:6.5,c:"#ffb063",h:1.5},"Scroll\n\n\n\n\n\nDown",{x:4.5,h:1.5},"Scroll\n\n\n\n\n\nDown"], [{y:-0.75,x:3.5,c:"#ff8500"},"Mouse\n\n\n\n\n\nDown",{x:10.5},"Cursor\n\n\n\n\n\nDown"], [{y:-0.875,x:2.5},"Mouse\n\n\n\n\n\nDnLeft",{x:1},"Mouse\n\n\n\n\n\nDnRgt",{x:8.5,c:"#ffb063"},"End",{x:1},"Page\n\n\n\n\n\nDown"], -[{y:-0.875,x:5.5,c:"#e6e067"},"Mute",{x:6.5,c:"#cccccc",a:7},""], -[{y:-0.875,c:"#2277ff",a:4,w:1.5},"Capitals\n\n\n\n\n\nShift",{c:"#cccccc",a:7},"",{x:14.5,c:"#77aaff",a:4},"RShift",{c:"#2277ff",w:1.5},"\n\nCapitals\n\n\n\n\nShift"], +[{y:-0.875,x:5.5,c:"#e6e067"},"Mute",{x:6.5,c:"#737373",a:7},""], +[{y:-0.875,c:"#2277ff",a:4,w:1.5},"Capitals\n\n\n\n\n\nShift",{c:"#737373",a:7},"",{x:14.5},"",{c:"#2277ff",a:4,w:1.5},"\n\nCapitals\n\n\n\n\nShift"], [{y:-0.375,x:3.5,c:"#ff8500"},"Middle\n\n\n\n\n\nClick",{x:10.5,c:"#ffb063",fa:[0,0,0,1]},"Delete\n\n\nOption"], [{y:-0.875,x:2.5,c:"#ff8500"},"Left\n\n\n\n\n\nClick",{x:1},"Right\n\n\n\n\n\nClick",{x:8.5,c:"#ffb063"},"Insert\n\n\nCmd",{x:1,c:"#77aaff"},"Hyper"], [{y:-0.75,x:0.5},"Ctrl\n\n\nLCtrl","Meh",{x:14.5},"Meh","Crtl\n\n\nRCtrl"], diff --git a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-special.png b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-special.png new file mode 100644 index 0000000000..6eecf447ee Binary files /dev/null and b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-special.png differ diff --git a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-special.txt b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-special.txt new file mode 100644 index 0000000000..a08827c6de --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-special.txt @@ -0,0 +1,27 @@ +[{x:3.5,a:7},"",{x:10.5},""], +[{y:-0.875,x:2.5},"",{x:1},"",{x:8.5},"",{x:1},""], +[{y:-0.875,x:5.5},"",{c:"#ff4444",a:4},"Esc",{x:4.5,c:"#cccccc",a:7},"",""], +[{y:-0.875,c:"#000000",t:"#ff0000",a:4,w:1.5},"Special\n\n\n\n\n\nShift",{c:"#ff4444",t:"#000000"},"Esc",{x:14.5,c:"#54d6de"},"Back\n\n\n\n\n\nspace",{c:"#000000",t:"#ff0000",w:1.5},"\n\nSpecial\n\n\n\n\nShift"], +[{y:-0.375,x:3.5,c:"#cccccc",t:"#000000",a:7},"",{x:10.5},""], +[{y:-0.875,x:2.5},"",{x:1},"",{x:8.5},"",{x:1},""], +[{y:-0.875,x:5.5},"",{h:1.5},"",{x:4.5,h:1.5},"",""], +[{y:-0.875,w:1.5},"","",{x:14.5},"",{w:1.5},""], +[{y:-0.375,x:3.5},"",{x:10.5},""], +[{y:-0.875,x:2.5},"",{x:1},"",{x:8.5},"",{x:1},""], +[{y:-0.875,x:5.5},"",{x:6.5},""], +[{y:-0.875,w:1.5},"","",{x:14.5},"",{w:1.5},""], +[{y:-0.625,x:6.5,h:1.5},"",{x:4.5,h:1.5},""], +[{y:-0.75,x:3.5},"",{x:10.5},""], +[{y:-0.875,x:2.5},"",{x:1},"",{x:8.5},"",{x:1},""], +[{y:-0.875,x:5.5},"",{x:6.5},""], +[{y:-0.875,w:1.5},"","",{x:14.5},"",{c:"#2277ff",w:1.5},"RShift"], +[{y:-0.375,x:3.5,c:"#cccccc"},"",{x:10.5},""], +[{y:-0.875,x:2.5},"",{x:1},"",{x:8.5},"",{x:1},""], +[{y:-0.75,x:0.5},"","",{x:14.5},"",""], +[{r:30,rx:6.5,ry:4.25,y:-1,x:1},"",""], +[{h:2},"",{h:2},"",""], +[{x:2},""], +[{r:-30,rx:13,y:-1,x:-3},"",""], +[{x:-3},"",{h:2},"",{h:2},""], +[{x:-3},""] + diff --git a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-symbol.png b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-symbol.png index 2cf2cb2b10..e4de64a96f 100644 Binary files a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-symbol.png and b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-symbol.png differ diff --git a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-symbol.txt b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-symbol.txt index 4b6a6cb95e..e199f5c59f 100644 --- a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-symbol.txt +++ b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-symbol.txt @@ -1,7 +1,7 @@ [{x:3.5,c:"#99de2a"},"F3",{x:10.5},"F8"], [{y:-0.875,x:2.5},"F2",{x:1},"F4",{x:8.5},"F7",{x:1},"F9"], [{y:-0.875,x:5.5},"F5",{c:"#ff4444"},"Esc",{x:4.5,c:"#bbddbb"},"_\n\n\n\n\n\n-",{c:"#99de2a"},"F6"], -[{y:-0.875,c:"#2277ff",w:1.5},"Shift\n\n\n\n\n\nLock",{c:"#99de2a"},"F1",{x:14.5},"F10",{c:"#2277ff",w:1.5},"\n\nShift\n\n\n\n\nLock"], +[{y:-0.875,c:"#2277ff",w:1.5},"Special\n\n\n\n\n\nShift",{c:"#99de2a"},"F1",{x:14.5},"F10",{c:"#2277ff",w:1.5},"\n\nSpecial\n\n\n\n\nShift"], [{y:-0.375,x:3.5,c:"#bbddbb"},"{",{x:10.5,c:"#89b087"},"8"], [{y:-0.875,x:2.5,c:"#bbddbb"},"@",{x:1},"}",{x:8.5,c:"#89b087"},"7",{x:1},"9"], [{y:-0.875,x:5.5,c:"#bbddbb"},"&",{h:1.5},"<",{x:4.5,h:1.5},">","|"], @@ -22,6 +22,6 @@ [{h:2},"Space",{h:2},"Enter","Up"], [{x:2},"Down"], [{r:-30,rx:13,y:-1,x:-3},"Home","End"], -[{x:-3},"Page\n\n\n\n\n\nUp",{f:3,h:2},"< Del\n\n\nBackspace",{f:3,h:2},"Del >\n\n\nDelete"], +[{x:-3},"Page\n\n\n\n\n\nUp",{h:2},"< Del\n\n\nBackspace",{h:2},"Del >\n\n\nDelete"], [{x:-3},"Page\n\n\n\n\n\nDown"] diff --git a/keyboard/ergodox_ez/keymaps/ordinary/ordinary.hex b/keyboard/ergodox_ez/keymaps/ordinary/ordinary.hex index 25fdc51714..347b494643 100644 --- a/keyboard/ergodox_ez/keymaps/ordinary/ordinary.hex +++ b/keyboard/ergodox_ez/keymaps/ordinary/ordinary.hex @@ -1,1215 +1,1202 @@ -:100000000C94E7020C942B030C942B030C942B03FD -:100010000C942B030C942B030C942B030C942B03A8 -:100020000C942B030C942B030C94B10E0C94830FA3 -:100030000C942B030C942B030C942B030C942B0388 -:100040000C942B030C9402240C942B030C942B0380 -:100050000C942B030C94A61D0C942B030C942B03D3 -:100060000C942B030C942B030C942B030C942B0358 -:100070000C942B030C942B030C942B030C942B0348 -:100080000C942B030C942B030C942B030C942B0338 -:100090000C942B030C942B030C942B030C942B0328 -:1000A0000C942B030C942B030C942B033B036A033B -:1000B000A603DF03F804F804F804F804F804F804CD -:1000C0003B038A03C3036704F804F804F804F80444 -:1000D000F804F804BB04C504CF04E104E80F0A10D7 -:1000E000F5100A10F5104C106F10F510C410D71051 -:1000F000D113D11312141214541490149016901694 -:10010000A81490169F159F156A16901690167E16C5 -:1001100000000000000000000000000000000000DF -:100120000000000000000BC80CC80DC80000000053 -:100130000000000000000000000015C816C817C825 -:100140000D200C200B300A30E00000001E001400CF -:1001500004001D0000074E001F001A0016001B00BF -:10016000000F4C002000080007000600E2002A00F3 -:100170002100150009001900E3004B0022001700C0 -:100180000A00050000004A0029002F0000002B0291 -:1001900000004D002D00300000002B00000050003A -:1001A00023001C000B00110000004F002400180069 -:1001B0000D001000E700520025000C000E00360074 -:1001C000E6002C00260012000F003700000F280068 -:1001D00027001300330038000007510017201620B5 -:1001E00015201430E40000000100010001000100AE -:1001F000E00000003A001E02200222020007510027 -:100200003B001F0221022302000F28003C002F02A6 -:1002100026022F00E2002C003D00300227023000B1 -:10022000E30052003E002402350035020000500079 -:100230002900360200002B0000004F002D0037027D -:1002400000002B0200004A003F003102380031005C -:1002500000004D004000240021001E0027784B00C4 -:100260004100250022001F0037744C004200260088 -:10027000230020002E7F2A004300380025022D0095 -:100280002E774E00010001000100010028710000DE -:100290000100010001000100E000000044006600D0 -:1002A000A60000000007B50045001E30F200203017 -:1002B000F60000006800F000F100F100F400B60064 -:1002C00069001F30F3002130F500B4006A00A90076 -:1002D000AA00A8000000B8002900F9000000FA00F8 -:1002E0000000B9000000F9000000FA000000AC00B6 -:1002F0006B004600530000000000AB006C004A0099 -:1003000050004D004978A9006D0052005100510085 -:100310004C74AE006E004B004F004E00000FAD005D -:100320006F00B100B300E5000007AA000100010062 -:1003300001000100E400000001000100010039009B -:10034000010000002900010001000100010001007E -:100350000100010001000100010001000100010095 -:100360000100010001000100010001000100010085 -:100370000100010001000100010001000000010076 -:100380000100010000000100000001000100010067 -:100390000000010000000100010001000100010057 -:1003A0000000010001000100010001000100010046 -:1003B0000100010001000100010001000100010035 -:1003C00001000100010001002A00010001000100FC -:1003D00001000100010001000100390001000000DE -:1003E00016034500720067006F0044006F0078003C -:1003F000200045005A000000160345007200670007 -:100400006F0044006F007800200045005A00000093 -:100410000403090409026D00040100A0FA090400A4 -:10042000000103010100092111010001223F000721 -:1004300005810308000A0904010001030102000903 -:100440002111010001224D000705820308000A095D -:1004500004020001030000000921110100012236FD -:10046000000705830308000A0904030001030000D4 -:100470000009211101000122390007058403100041 -:10048000011201100100000008EDFE071301000138 -:1004900002000105010906A101050719E029E71578 -:1004A00000250195087501810205081901290595A6 -:1004B0000575019102950175039101050719002940 -:1004C0007715002501957875018102C00501098025 -:1004D000A101850216010026B7001A01002AB70003 -:1004E000751095018100C0050C0901A10185031655 -:1004F0000100269C021A01002A9C027510950181B8 -:1005000000C005010902A1010901A10005091901A5 -:1005100029051500250195057501810295017503D1 -:1005200081010501093009311581257F9502750882 -:10053000810609381581257F950175088106050C0E -:100540000A38021581257F950175088106C0C0050E -:10055000010906A101050719E029E7150025019504 -:1005600008750181029501750881010508190129A5 -:10057000059505750191029501750391010507190E -:100580000029FF150025FF950675088100C00000B1 -:10059000000000000000000000010204060A0F171E -:1005A000202C3A4A5D71879DB3C7DAE9F5FCFFFC60 -:1005B000F5E9DAC7B39D87715D4A3A2C20170F0A17 -:1005C00006040201000000000000000000001124E9 -:1005D0001FBECFEFDAE0DEBFCDBF04B603FE24C0FE -:1005E0008091F8019091F901A091FA01B091FB017D -:1005F0008730904BA740B04BB9F41092F80110929D -:10060000F9011092FA011092FB0114BE84B7877FA2 -:1006100084BF88E10FB6F894809360001092600068 -:100620000FBEE0E0FFE3099511E0A0E0B1E0E2E9F0 -:10063000FBE402C005900D92A433B107D9F721E085 -:10064000A4E3B1E001C01D92A83FB207E1F70E9408 -:10065000F70B0C94C7250C940000DC01462F50E0EA -:100660004A5051094831510508F0C2C14A5A5F4FFA -:10067000FA010C94772512962C91129780913C01E7 -:1006800090913D012223E1F015962C91207FC1F439 -:1006900001968330910510F082E090E090933D0147 -:1006A00080933C018091360190913701892B31F084 -:1006B00089E30E94591289E30E94211381EEF9C057 -:1006C000019790933D0180933C01892B09F090C1E3 -:1006D00081EEFAC012962C9180913A0190913B01E3 -:1006E000222331F101968330910510F082E090E0F1 -:1006F00090933B0180933A018091360190913701AC -:10070000892B31F08091350191E089278093350163 -:1007100081E078C012969C91129715968C91807FFB -:1007200091119CC009F0B7C080913A0190913B01B2 -:10073000019790933B0180933A01892B09F058C1AE -:1007400080913501811154C181E085C012969C9140 -:10075000129715968C91807F992359F0209136013C -:10076000309137018823B9F121153105A1F58BE2CC -:10077000A0C0882391F08091360190913701892B98 -:1007800061F48BE2A1C012969C91129715968C9100 -:10079000807F91111AC009F08FC08091380190912B -:1007A000390101979093390180933801892B09F021 -:1007B0001FC18091340181111BC182E04CC012968F -:1007C0008C911297882309F187C0209136013091CE -:1007D0003701811169C080913801909139010196EA -:1007E0008330910510F082E090E09093390180937E -:1007F0003801232B31F08091340191E089278093D7 -:10080000340182E00E94241BF3C015968C91982F2E -:10081000907FA1F080FD12C080913A0190913B0140 -:10082000892B61F48091380190913901892B31F441 -:1008300085E30E94591285E30E94211380913601BD -:100840009091370101979093370180933601892B5E -:1008500009F0CEC083E00E94451BCAC0209136013A -:1008600030913701882329F02115310511F484E3F3 -:1008700020C080913A0190913B010196833091050F -:1008800010F082E090E090933B0180933A01232B9B -:1008900009F038CF3DCF8091360190913701892BF7 -:1008A00009F042CF84E310C02115310509F093CF40 -:1008B00081E30E9459129CC08091360190913701CA -:1008C000892B09F06ACF81E30E94211391C012960F -:1008D0008C9112978823A1F1809136019091370174 -:1008E00001968330910510F082E090E090933701FB -:1008F0008093360180913C0190913D01892B31F02C -:1009000089E30E94591289E30E94211380913A01E0 -:1009100090913B01892B31F08091350191E089273D -:10092000809335018091380190913901892B31F004 -:100930008091340191E089278093340183E062CF74 -:1009400015968C91982F907F09F478CF80FD76CF03 -:1009500080913A0190913B01892B09F06FCF8091F2 -:10096000380190913901892B09F068CF8EE20E94FD -:1009700059128EE261CF12968C91882319F080EF84 -:1009800090E013C080EF90E017C012968C918823FE -:1009900019F080EF90E01BC080EF90E021C012962C -:1009A0008C91882339F081EF90E00E941A2082EF29 -:1009B00090E011C081EF90E00E94822082EF90E0F1 -:1009C00013C012968C91882349F081EF90E00E9429 -:1009D0001A2083EF90E00E941A2008C081EF90E077 -:1009E0000E94822083EF90E00E9482200E940721D3 -:1009F00080E090E008950895E0910E01F0910F01DC -:100A00008081827219F0259A2D9A06C00E943011B9 -:100A100081FDF9CF25982D988091BB0181FF03C0FE -:100A2000269A2E9A02C026982E988091BB0182FFAA -:100A300003C0279A2F9A089527982F9808950C9409 -:100A4000FC0456985E9825982D9826982E982798FD -:100A50002F988FEF90E09093890080938800909377 -:100A60008B0080938A0090938D0080938C00259A50 -:100A70002D9A2FEF80E792E0215080409040E1F7DF -:100A800000C00000269A2E9A2FEF80E792E02150B6 -:100A900080409040E1F700C00000279A2F9A2FEF86 -:100AA00080E792E0215080409040E1F700C00000D4 -:100AB00025982D982FEF80E792E0215080409040BC -:100AC000E1F700C0000026982E982FEF80E792E013 -:100AD000215080409040E1F700C0000027982F98F7 -:100AE00056985E9825982D9826982E9827982F9896 -:100AF000089589EA8093800089E08093810024989A -:100B00002C983F988AB18F748AB96E98479A8BB1A6 -:100B1000806B8BB9769A0E9421050C94FB0480E2CD -:100B20008093000180913E0181110EC00E94DE057C -:100B300081E080933E012FEF83ED90E321508040D0 -:100B40009040E1F700C0000080E40E94E40580933B -:100B5000000181112EC00E940E06809300018111B8 -:100B600028C00E940E0680930001811122C08FE3ED -:100B70000E940E068093000181111BC00E94060690 -:100B800080E40E94E40580930001811112C08CE092 -:100B90000E940E068093000181110BC00E940E0678 -:100BA00080930001811105C08FE30E940E0680939F -:100BB00000010E9406068091000108951092B9007C -:100BC0008AE08093B800089594EA9093BC009091D5 -:100BD000BC0097FFFCCF9091B900987F983021F02E -:100BE000903111F081E008958093BB0084E88093F8 -:100BF000BC008091BC0087FFFCCF8091B900887F4A -:100C0000883111F0803471F780E0089584E9809391 -:100C1000BC008091BC0084FDFCCF08958093BB0094 -:100C200084E88093BC008091BC0087FFFCCF90914A -:100C3000B900987F81E0983209F480E0089584E853 -:100C40008093BC008091BC0087FFFCCF8091BB00EB -:100C5000089580910001811115C080E40E94E4058F -:100C60008093000181110CC082E10E940E068093E6 -:100C70000001811105C08FEF0E940E0680930001D4 -:100C80000E94060684B1807F84B985B1807F85B9D2 -:100C90008AB1837F8AB98BB1837F8BB93E9846989E -:100CA00008950E948F05809300010E94290680B359 -:100CB0008C7080BB81B3836F81BBEEE4F1E0A0E474 -:100CC000B1E011921D9281E0EC35F807D1F70C9458 -:100CD0007905BF92CF92DF92EF92FF920F931F930D -:100CE000CF93DF9380910001882379F080913F01B9 -:100CF0008F5F80933F01811108C00E948F05809310 -:100D00000001811102C00E94210500E411E0C0E051 -:100D1000D0E0DD24D39482E0C82EEE24E394F12CBD -:100D2000C73000F580910001811162C080E40E940B -:100D3000E40580930001811112C082E10E940E0639 -:100D40008093000181110BC0C7010C2E01C0880FD8 -:100D50000A94EAF780950E940E06809300010E9493 -:100D6000060646C0CA30A1F028F4C83059F0C93090 -:100D700061F005C0CC3089F070F0CD3089F0209A58 -:100D8000289810C0219A29980DC0229A2A980AC042 -:100D9000239A2B9807C0529A01C0539A5B9802C0BD -:100DA0003E9A4698E0EAEA95F1F78FB179995AC0F0 -:100DB00092E081708D25892B7C9B02C090E001C060 -:100DC00094E0892B7D9B02C090E001C098E0892BC4 -:100DD0007E9B02C090E001C090E1892B9FB190956D -:100DE000991F9927991F9295990F907E892B0FC073 -:100DF0008091000181114BC080E40E94E405809342 -:100E00000001882389F1B12C0E9406068B2DF80180 -:100E10009081981719F08083C09201010E942906E1 -:100E200021960F5F1F4FCE30D10509F079CF809109 -:100E30000101882371F1815080930101882339F0E9 -:100E40008FE99FE00197F1F700C0000022C0AEE4F7 -:100E5000B1E0E0E4F1E081918D9391E0EE34F907A7 -:100E6000D1F717C090E0A5CF83E10E940E068093D2 -:100E700000018111C8CF81E40E94E4058093000144 -:100E80008111C1CF0E941F06B82EB094BDCF80E063 -:100E9000BECF0E941F0581E0DF91CF911F910F917E -:100EA000FF90EF90DF90CF90BF900895E82FF0E093 -:100EB000E25BFE4F808108950895089596E0799F42 -:100EC000F001112494E5899FE00DF11D1124E60F36 -:100ED000F11DEE0FFF1FE05CFE4F85919491089588 -:100EE000880F991F80579040FC0185919491089537 -:100EF000880F991F805F9E4FFC0185919491089502 -:100F00000F931F93CF93DF93EC01811520E392079A -:100F100030F5811530E2930708F0B1C08B3B9105A5 -:100F200088F4883A910508F058C0853A910508F090 -:100F300049C08430910508F043C08130910509F41F -:100F4000B2C1AEC18F3F910509F0D0F5803F910548 -:100F500008F092C0805E9109089790F1A1C1C11577 -:100F600081E5D807A8F4C23090E5D90708F09FC002 -:100F7000C11520E5D20709F486C008F092C0C1155A -:100F800080E4D80708F08CC18E011127106CCCC109 -:100F9000C11590E8D90758F4C11520E7D20708F029 -:100FA0007BC1C11530E6D30708F423C179C1C1154F -:100FB00080E9D80708F074C18E011F70106AB4C1AF -:100FC0008E01B2C1853A910509F470C1863A910546 -:100FD00009F46FC103E810E4A7C1883A910509F448 -:100FE0006BC1893A910509F46AC18A3A910509F4FD -:100FF00069C18B3A910509F468C18C3A910509F4ED -:1010000067C18D3A910509F466C1803B910509F4E9 -:1010100065C18E3A910509F464C18F3A910509F4CE -:1010200063C1813B910509F462C1823B910509F4DA -:1010300061C1833B910509F460C1843B910509F4CA -:101040005FC1853B910509F45EC1863B910509F4BA -:101050005DC1873B910509F45CC1883B910509F4AA -:101060005BC1893B910509F45AC18A3B910509F09E -:1010700059C10AE216E458C18C01106555C19F7030 -:101080000E94780752C10E94B3169FEF24E33CE010 -:10109000915020403040E1F700C000000E94CB1D7D -:1010A00043C18091D70181608093D7013DC10E94E7 -:1010B000731F811102C00E94591F0E94901F90E06F -:1010C0009093F8018093F701C23080E5D80721F4AE -:1010D0008091F701816086C0C43090E5D90721F482 -:1010E0008091F70182607EC0C63020E5D20721F4EE -:1010F0008091F701846076C0C83030E5D30719F4D9 -:101100008091F70127C0CA3080E5D80721F480918B -:10111000F701806167C0CC3090E5D90721F4809158 -:10112000F70180625FC0CE3020E5D20721F48091C4 -:10113000F701806457C0C03130E5D30721F48091B6 -:10114000F70180684FC0C23180E5D80729F480914B -:10115000F7018460886046C0C33090E5D90721F468 -:101160008091F7018E7F3EC0C53020E5D20721F483 -:101170008091F7018D7F36C0C73030E5D30721F469 -:101180008091F7018B7F2EC0C93080E5D80719F414 -:101190008091F70126C0CB3090E5D90721F48091EA -:1011A000F7018F7E1FC0CD3020E5D20721F480915A -:1011B000F7018F7D17C0CF3030E5D30721F4809140 -:1011C000F7018F7B0FC0C13180E5D80721F48091F2 -:1011D000F7018F7707C0C331D04531F48091F70113 -:1011E0008B7F877F8093F7018091F7010E94941F86 -:1011F0009BC08D2F99278F70992781309105E9F435 -:101200008E01037011279C0102C0220F331F0A9523 -:10121000E2F789011C68CE0164E0880F991F6A9586 -:10122000E1F788279370082B192B73E0CC0FDD1F93 -:101230007A95E1F7C076DD272CC08230910529F43C -:101240001C2F0027016F106A6FC08330910561F475 -:10125000CE018370992701E010E002C0000F111F3A -:101260008A95E2F71C680EC0049709F05DC0CE01B4 -:101270008370992701E010E002C0000F111F8A95CA -:10128000E2F71A6843E0CC0FDD1F4A95E1F7C07E14 -:10129000D7700C2B1D2B48C08E011F70106244C0EC -:1012A00000E010E041C001E010E03EC001E810E4C1 -:1012B0003BC002E810E438C002EE14E435C009EE89 -:1012C00014E432C00AEE14E42FC005EB14E42CC081 -:1012D00006EB14E429C007EB14E426C00CEC14E47C -:1012E00023C00DEC14E420C003E815E41DC00AE897 -:1012F00015E41AC002E915E417C004E915E414C0A6 -:1013000001E216E411C003E216E40EC004E216E4A2 -:101310000BC005E216E408C006E216E405C007E2C9 -:1013200016E402C000E014E4C801DF91CF911F91E0 -:101330000F91089596E0799FF001112494E5899F1B -:10134000E00DF11D1124E60FF11DEE0FFF1FE05C13 -:10135000FE4F85919491803E9105E0F4803C91058B -:1013600058F58133910509F46FC048F4893291052D -:1013700009F463C08A32910509F46DC072C08933E3 -:101380009105E9F082389105D1F08533910509F492 -:101390004DC067C0833E910581F138F4803E9105D0 -:1013A000B9F0823E9105D9F05CC0863E910561F1AD -:1013B000873E9105A1F155C00E94700708952091C4 -:1013C000F70120FD02C021FF4CC080EE90E049C033 -:1013D0008091F70180FFF9CF89E390E042C08091CE -:1013E000F70182FF0EC08091F70184FF03C080E007 -:1013F00090E037C083EE90E034C08091F70182FF27 -:10140000F2CF82EE90E02DC08091F70183FF0BC0F8 -:101410008091F70184FDEBCF87EE90E022C08091B0 -:10142000F70183FFF5CF86EE90E01BC08091F701B6 -:1014300085FF07C089E290E014C08091F70185FF25 -:10144000F9CF85E390E00DC08091F70186FF07C0DA -:101450008AE290E006C08091F70186FFF9CF81E330 -:1014600090E00E948007089508950C94340A8091BA -:101470006C010895CF93DF9300D01F92CDB7DEB7F4 -:101480002091EE01243019F523E029839B838A8380 -:101490002093E9008FEF9091E800815095FD06C000 -:1014A00095ED9A95F1F700008111F5CF8091E80054 -:1014B00085FF0DC040E050E063E070E0CE01019692 -:1014C0000E94A40C8091E8008E778093E8000F9032 -:1014D0000F900F90DF91CF910895CF93DF9300D0BD -:1014E0001F92CDB7DEB72091EE01243021F522E026 -:1014F00029839B838A8383E08093E9008FEF909117 -:10150000E800815095FD06C095ED9A95F1F7000031 -:101510008111F5CF8091E80085FF0DC040E050E0DB -:1015200063E070E0CE0101960E94A40C8091E80077 -:101530008E778093E8000F900F900F90DF91CF91FE -:1015400008952091EE012430F1F422E02093E90087 -:101550002FEF3091E800215035FD06C035ED3A956A -:10156000F1F700002111F5CF2091E80025FF0BC015 -:1015700040E050E065E070E00E94A40C8091E8003B -:101580008E778093E8000895CF93DF93EC018091EC -:10159000EE01843009F046C090910C019923D9F0F6 -:1015A00090910D019923B9F08093E9008FEF90910C -:1015B000E800815095FD06C095E19A95F1F700008D -:1015C0008111F5CF8091E80085FF2CC040E050E00C -:1015D00060E170E017C081E08093E9008FEF9091A7 -:1015E000E800815095FD06C095ED9A95F1F7000051 -:1015F0008111F5CF8091E80085FF14C040E050E0F4 -:1016000068E070E0CE010E94A40C8091E8008E7723 -:101610008093E80080E1FE01ACE5B1E001900D921D -:101620008A95E1F7DF91CF9108958091ED018111C5 -:1016300009C00E94360E0E94930E8091E2008460E1 -:101640008093E20008951092ED01089508950C949E -:10165000EF230E94621D0E94F5230E9430110C941A -:10166000350A42E061EC81E00E94B00D42E061EC9D -:1016700082E00E94B00D42E061EC83E00E94B00D78 -:1016800042E161EC84E00C94B00D8091F001833074 -:1016900009F455C030F4813071F0823009F48EC005 -:1016A00008958A3009F47AC08B3009F460C089301B -:1016B00009F09CC020C08091EF01813A09F096C0EA -:1016C0008091E800877F8093E8008091F3019091FA -:1016D000F401892B21F060E080E090E003C060E13C -:1016E0008CE591E070E00E94ED0C8091E8008B7732 -:1016F0008093E80008958091EF01813209F076C06F -:101700008091F3019091F401009719F0039709F08B -:101710006DC08091E800877F8093E8008091E800A9 -:1017200082FD05C08091EE018111F8CF5FC08091EC -:10173000F10080936C018091E8008B7753C0809119 -:10174000EF01813A09F052C08091F3019091F401C8 -:10175000892B09F04BC08091E800877F8093E800D7 -:101760008091E80080FFFCCF80910C0136C0809111 -:10177000EF018132D9F58091F3019091F401892B29 -:10178000A9F58091E800877F8093E8000E94E50D2D -:101790008091F10180930C010C94B3168091EF01BC -:1017A000813221F58091E800877F8093E8000E94D4 -:1017B000E50D8091F20180936D0108958091EF0114 -:1017C000813AA1F48091E800877F8093E8008091BE -:1017D000E80080FFFCCF80916D018093F100809143 -:1017E000E8008E778093E8000C94E50D089584B7A7 -:1017F000877F84BF88E10FB6F894809360001092D1 -:1018000060000FBE90E080E80FB6F894809361000E -:10181000909361000FBE0E947F110E94360E0E94BD -:10182000930E8091E20084608093E20078940E949D -:101830000E110E94811182E091E00E942B110E9402 -:10184000DD238091EE01853069F40E94221D809194 -:10185000EC018823B1F30E944D1D882391F30E946F -:101860008E0CEFCF0E948711ECCF292F3327233026 -:101870003105A9F06CF42130310509F442C0223061 -:10188000310509F043C08DE690E024E134E042C028 -:1018900021323105C9F02232310519F137C09927BB -:1018A0008130910541F08230910541F0892B71F52D -:1018B000E0E1F4E005C0E8EFF3E002C0E0EEF3E0C1 -:1018C000849190E09F0126C0643000F5E62FF0E09F -:1018D000EE0FFF1FEE5DFE4F2081318189E090E029 -:1018E00019C0643098F4E62FF0E0DF01AA0FBB1FA7 -:1018F000A65EBE4F2D913C91EA5EFE4F808190E046 -:1019000009C082E190E021E834E004C080E090E08A -:1019100020E030E0FA0131832083089580E189BD21 -:1019200082E189BD09B400FEFDCF8091D8008F7D92 -:101930008093D8008091E00082608093E0008091E5 -:10194000E00081FDFCCF0895CF92DF92EF92FF92ED -:101950000F931F93CF93DF937C018B01EA010E94C9 -:10196000060E811131C0209731F088819981081BC2 -:10197000190BE80EF91EC12CD12C0115110519F116 -:101980008091E80085FD14C08091E8008E778093F7 -:10199000E800209741F0888199818C0D9D1D9983E5 -:1019A000888385E011C00E94060E882331F30CC0A5 -:1019B000F70181917F018093F10001501109FFEF40 -:1019C000CF1ADF0ADACF80E0DF91CF911F910F911C -:1019D000FF90EF90DF90CF9008952091F501309126 -:1019E000F6012617370748F06115710539F4209183 -:1019F000E8002E772093E80001C0B901FC0120E047 -:101A000061157105B9F18091EE01882309F440C098 -:101A1000853009F43FC08091E80083FD3DC080918E -:101A2000E80082FF06C08091E80082FF26C080E0C7 -:101A300008958091E80080FFE3CF2091F30080912A -:101A4000F20090E0922B6115710551F088309105FC -:101A500038F421912093F100615071090196F3CF80 -:101A600021E0089709F020E08091E8008E778093CC -:101A7000E800C6CF2111C7CFD6CF8091EE018823D1 -:101A800039F0853039F08091E80083FFCCCF04C075 -:101A900082E0089583E0089581E008952091F501A2 -:101AA0003091F6012617370748F06115710539F4B2 -:101AB0002091E8002E772093E80001C0B901FC01D5 -:101AC00020E061157105C1F18091EE01882309F4D0 -:101AD00041C0853009F440C08091E80083FD3EC0DC -:101AE0008091E80082FF06C08091E80082FF27C055 -:101AF00080E008958091E80080FFE3CF2091F3001B -:101B00008091F20090E0922B6115710559F08830B8 -:101B1000910540F424912093F100319661507109B0 -:101B20000196F2CF21E0089709F020E08091E800CB -:101B30008E778093E800C5CF2111C6CFD5CF809195 -:101B4000EE01882339F0853039F08091E80083FF79 -:101B5000CBCF04C082E0089583E0089581E008952A -:101B6000982F973058F59093E900981739F07091B5 -:101B7000EC002091ED005091F00003C0242F762F4F -:101B800050E021FF19C03091EB003E7F3093EB0015 -:101B90003091ED003D7F3093ED003091EB003160EE -:101BA0003093EB007093EC002093ED005093F00025 -:101BB0002091EE0027FF07C09F5FD3CF8F708093E7 -:101BC000E90081E0089580E008958091EF0187FDAC -:101BD00005C08091E80080FF0EC012C08091E8002F -:101BE00082FD05C08091EE018111F8CF08958091AA -:101BF000E8008B7708C08091EE018111EACF08954B -:101C00008091E8008E778093E80008958091E40049 -:101C10009091E50045E62091EC0020FF21C0209145 -:101C2000E80020FD21C02091EE01222389F025301B -:101C300089F02091EB0025FD0FC02091E400309148 -:101C4000E5002817390739F3415041F0C901E3CFC6 -:101C500082E0089583E0089581E0089584E0089586 -:101C60002091E80022FFDFCF80E008950E94A40EBB -:101C70000E94AC0EE0EEF0E0808181608083E8EDB0 -:101C8000F0E080818F77808319BCA7EDB0E08C9164 -:101C90008E7F8C9380818F7E80831092ED010895DA -:101CA0000F931F93CF93DF930E94A40E0E94AC0E5C -:101CB000C8EDD0E088818F778883888180688883A9 -:101CC00088818F7D888319BC1092EE011092EA0101 -:101CD0001092EC011092EB0100EE10E0F80180810F -:101CE0008B7F808388818160888342E060E080E030 -:101CF0000E94B00DE1EEF0E080818E7F8083E2EE05 -:101D0000F0E0808181608083808188608083F80139 -:101D100080818E7F8083888180618883DF91CF91ED -:101D20001F910F910895E8EDF0E080818F7E808310 -:101D3000E7EDF0E080818160808384E082BF81E014 -:101D40008093ED010C94500EE8EDF0E080818E7FE1 -:101D500080831092E20008951092DA001092E10060 -:101D600008951F920F920FB60F9211242F933F9355 -:101D70004F935F936F937F938F939F93AF93BF9393 -:101D8000EF93FF938091E10082FF0BC08091E2000E -:101D900082FF07C08091E1008B7F8093E1000E9469 -:101DA0000D118091DA0080FF1FC08091D80080FF64 -:101DB0001BC08091DA008E7F8093DA008091D90079 -:101DC00080FF0DC080E189BD82E189BD09B400FEBC -:101DD000FDCF81E08093EE010E94150B05C019BC78 -:101DE0001092EE010E94230B8091E10080FF19C048 -:101DF0008091E20080FF15C08091E2008E7F809389 -:101E0000E2008091E20080618093E2008091D8003E -:101E100080628093D80019BC85E08093EE010E9417 -:101E2000270B8091E10084FF30C08091E20084FFA5 -:101E30002CC080E189BD82E189BD09B400FEFDCFDF -:101E40008091D8008F7D8093D8008091E1008F7EB3 -:101E50008093E1008091E2008F7E8093E200809188 -:101E6000E20081608093E2008091EA01882311F012 -:101E700084E007C08091E30087FF02C083E001C0D7 -:101E800081E08093EE010E94290B8091E10083FFA5 -:101E900029C08091E20083FF25C08091E100877F07 -:101EA0008093E10082E08093EE011092EA0180913C -:101EB000E1008E7F8093E1008091E2008E7F80932D -:101EC000E2008091E20080618093E20042E060E005 -:101ED00080E00E94B00D8091F00088608093F00057 -:101EE0000E94260BFF91EF91BF91AF919F918F912F -:101EF0007F916F915F914F913F912F910F900FBE06 -:101F00000F901F9018951F920F920FB60F921124E9 -:101F10002F933F934F935F936F937F938F939F93F1 -:101F2000AF93BF93CF93EF93FF93C091E900CF702E -:101F30008091EC001092E9008091F000877F8093FF -:101F4000F00078940E94BF0F1092E9008091F00099 -:101F500088608093F000C093E900FF91EF91CF91EA -:101F6000BF91AF919F918F917F916F915F914F91B1 -:101F70003F912F910F900FBE0F901F9018951F93B8 -:101F8000CF93DF93CDB7DEB7AA970FB6F894DEBF35 -:101F90000FBECDBFEFEEF1E08091F100819321E023 -:101FA000E73FF207C9F70E94450B8091E80083FFE5 -:101FB0001CC12091EF013091F001832F90E08A3015 -:101FC000910508F012C1FC01E259FF4F0C947725EE -:101FD000203881F0223809F008C18091F3018F7018 -:101FE0008093E9008091EB0085FB882780F91092AF -:101FF000E90006C08091EB019091EC0191118260A3 -:102000009091E800977F9093E8008093F100109200 -:10201000F100C5C0822F8D7F09F0E7C0222319F09F -:10202000223061F0E2C08091F101813009F0DDC021 -:10203000333009F080E08093EC0128C08091F101F9 -:10204000811124C02091F3012F7009F4CEC0209398 -:10205000E9008091EB0080FF19C08091EB003330E4 -:1020600011F4806211C080618093EB0081E090E008 -:10207000022E01C0880F0A94EAF78093EA001092BA -:10208000EA008091EB0088608093EB001092E900F9 -:102090008091E800877F86C02111A7C01091F101CF -:1020A0001F778091E3008078812B8093E3008091FB -:1020B000E800877F8093E8000E94E50D8091E800AA -:1020C00080FFFCCF8091E30080688093E3001123C0 -:1020D00011F083E001C082E08093EE0186C02058B9 -:1020E000223008F082C08091F1019091F2018C3D84 -:1020F00023E0920779F583E08A838AE289834FB7E8 -:10210000F894DE01139620E03EE051E2E32FF0E088 -:1021100050935700E49120FF03C0E295EF703F5FBA -:10212000EF708E2F90E0EA3010F0C79601C0C09695 -:102130008D939D932F5F243149F74FBF8091E80025 -:10214000877F8093E8006AE270E0CE0101960E94EA -:10215000ED0C14C0AE014F5F5F4F6091F3010E9420 -:10216000350C009709F441C02091E800277F2093A7 -:10217000E800BC0189819A810E944E0D8091E8009F -:102180008B778093E80031C0203879F58091E800A2 -:10219000877F8093E8008091EA018093F10080912D -:1021A000E8008E778093E8000E94E50D1EC02111A3 -:1021B0001CC09091F1019230C0F48091E800877FBB -:1021C0008093E8009093EA010E94E50D8091EA0176 -:1021D000811104C08091E30087FF02C084E001C048 -:1021E00081E08093EE010E94310B8091E80083FF33 -:1021F0000AC08091E800877F8093E8008091EB001F -:1022000080628093EB00AA960FB6F894DEBF0FBEF3 -:10221000CDBFDF91CF911F9108950895CF93809105 -:10222000EE018823B1F08091E9008F709091EC006D -:1022300090FF02C090E801C090E0C92FC82B109217 -:10224000E9008091E80083FD0E94BF0FCF70C0932A -:10225000E900CF91089590937301809372010895DE -:10226000E0917201F0917301309721F00190F081BB -:10227000E02D099480E00895E0917201F0917301DE -:10228000309721F00280F381E02D09940895E091C8 -:102290007201F0917301309721F00480F581E02DF7 -:1022A000099408952091700130917101821793076C -:1022B00071F09093710180937001E0917201F0913F -:1022C0007301309721F00680F781E02D099408957D -:1022D00020916E0130916F018217930771F09093F6 -:1022E0006F0180936E01E0917201F091730130975C -:1022F00021F00084F185E02D0994089508950C944F -:102300007E110E94681D0E9451060C942E1ECF92D1 -:10231000DF92EF92FF920F931F93CF93DF93CDB78E -:10232000DEB72B970FB6F894DEBF0FBECDBF0E946D -:10233000690635E7E32E31E0F32E00E010E0C02E11 -:10234000802F0E945607F701D1907F01D826B1F463 -:102350000F5F1F4F0E30110591F78FEF89838A832E -:102360001B820E94711D8160782F9D838C8349811F -:102370005A816B818D810E942A1241C09091D701B0 -:1023800091FF04C08B870E945C078B8520E030E0C2 -:102390004D2D50E0922FBA01022E02C0759567951F -:1023A0000A94E2F760FF25C02E83CF82EE24E394E7 -:1023B000F12C02C0EE0CFF1C9A95E2F790E08E2102 -:1023C0009F2121E0892B09F420E028870E94711DBC -:1023D0008160782F9A8789874E815F8168858A8599 -:1023E0000E942A12F801EB58FE4F80818E258083CF -:1023F00006C02F5F3F4F2630310561F6A9CF0E94FE -:102400001221109174010E9430111817A1F00E943E -:102410003011809374012B960FB6F894DEBF0FBE77 -:10242000CDBFDF91CF911F910F91FF90EF90DF9083 -:10243000CF900C94350A2B960FB6F894DEBF0FBEE2 -:10244000CDBFDF91CF911F910F91FF90EF90DF9063 -:10245000CF900895CF93DF93CDB7DEB72B970FB60C -:10246000F894DEBF0FBECDBF4F83588769877A8748 -:102470008B87DE01119686E0FD0111928A95E9F7BE -:1024800085E0FE01379601900D928A95E1F749812A -:102490005A816B817C818D819E810E947F192B9650 -:1024A0000FB6F894DEBF0FBECDBFDF91CF91089578 -:1024B0000895CF93C82F882309F4C1C0823859F4F6 -:1024C0000E94301181FDBBC089E30E94291C0E943B -:1024D000F31C89E30CC0833879F40E94301180FD2D -:1024E000AEC083E50E94291C0E94F31C83E50E9474 -:1024F000691CCF910C94F31C843859F40E9430115C -:1025000082FD9DC087E40E94291C0E94F31C87E481 -:10251000EECF8CEF8C0F813A48F48C2F0E9445232C -:1025200081118DC08C2F0E94291CE3CF80E28C0F7B -:10253000883048F4C77081E001C0880FCA95EAF777 -:102540000E94AA1CD6CF8BE58C0F833078F4C53A55 -:1025500029F0C63A31F482E890E005C081E890E0C5 -:1025600002C083E890E0CF910C94521188E58C0F63 -:10257000833108F064C0C83A39F1C93A41F1CA3A26 -:1025800049F1CB3A51F1CC3A59F1CD3A61F1C03B26 -:1025900069F1CE3A71F1CF3A79F1C13B81F1C23B99 -:1025A00089F1C33B91F1C43B99F1C53BA1F1C63B15 -:1025B000A9F1C73BB1F1C83BB9F1C93BC1F1CA3B75 -:1025C000C9F58AE292E038C082EE90E035C089EE2B -:1025D00090E032C08AEE90E02FC085EB90E02CC0F6 -:1025E00086EB90E029C087EB90E026C08CEC90E071 -:1025F00023C08DEC90E020C083E891E01DC08AE804 -:1026000091E01AC082E991E017C084E991E014C01A -:1026100081E292E011C083E292E00EC084E292E097 -:102620000BC085E292E008C086E292E005C087E236 -:1026300092E002C080E090E0CF910C946811CF91BD -:102640000895882309F44BC0823859F40E94301150 -:1026500081FF45C089E30E94291C0E94F31C89E385 -:102660000CC0833871F40E94301180FF38C083E5BC -:102670000E94291C0E94F31C83E50E94691C0C9493 -:10268000F31C843859F40E94301182FF28C087E47B -:102690000E94291C0E94F31C87E4EFCF9CEF980F47 -:1026A000913A58F390E2980F983050F4877091E087 -:1026B00001C0990F8A95EAF7892F0E94B01CDFCFDD -:1026C0009BE5980F933020F480E090E00C94521139 -:1026D000885A833120F480E090E00C9468110895CA -:1026E000882321F00E94AA1C0C94F31C08958823CF -:1026F00021F00E94B01C0C94F31C0895CF92DF923D -:10270000EF92FF920F931F93CF93DF93CDB7DEB776 -:1027100028970FB6F894DEBF0FBECDBF8C0185E0C1 -:10272000F801DE01119601900D928A95E1F7F8010A -:10273000D080E180F280558152955F702381348191 -:10274000232B39F0FFEFEF1206C081E0DF1203C048 -:1027500003C081E001C080E080FDE2C2C8015F8368 -:102760000E945812D982EA8269817A818F2D0E9453 -:10277000251C9E8388870E94D91B0E94AC1A4E811B -:102780005F816885FF2029F00E94C71C68855F81F2 -:102790004E81E42FE295EF70F0E0E858FF4F0C9483 -:1027A0007725842F807F142F1F70882311F01295B6 -:1027B000107FFF20B1F0112309F467C280E2860F79 -:1027C000883028F4812F68870E94AA1C04C0812FBA -:1027D00068870E94BA1C688568870E94F31C688518 -:1027E00054C2862F68870E9421136885112309F43B -:1027F00097C2605E812F683018F40E94B01C02C03E -:102800000E94C01C28960FB6F894DEBF0FBECDBF45 -:10281000DF91CF911F910F91FF90EF90DF90CF90BC -:102820000C94F31C242F207F842F8F70203211F002 -:102830008295807F662319F0613019F12BC0FF204B -:10284000B1F0552309F493C1513009F090C1289695 -:102850000FB6F894DEBF0FBECDBFDF91CF911F91B1 -:102860000F91FF90EF90DF90CF900C94DA1C5523DE -:1028700019F0513009F454C28E830E94DD1C8E8100 -:1028800089C1FF2021F0523008F04AC270C15111B5 -:1028900047C280C1FF2021F0552309F468C1F5C16A -:1028A000552309F477C105C2242F26952695237058 -:1028B00030E02115310521F021303105C9F030C259 -:1028C000FF2021F0862F942F937002C080E090E0CB -:1028D00028960FB6F894DEBF0FBECDBFDF91CF9123 -:1028E0001F910F91FF90EF90DF90CF900C945211B9 -:1028F000FF2021F0862F942F937002C080E090E09B -:1029000028960FB6F894DEBF0FBECDBFDF91CF91F2 -:102910001F910F91FF90EF90DF90CF900C94681172 -:10292000862FFF2019F00E941A2002C00E948220E8 -:1029300028960FB6F894DEBF0FBECDBFDF91CF91C2 -:102940001F910F91FF90EF90DF90CF900C94072193 -:10295000842F837009F076C0F110E2C1262F2295F2 -:1029600026952770220F220F862F8F70C82ED12C0C -:10297000E12CF12C022E04C0CC0CDD1CEE1CFF1C43 -:102980000A94D2F764FF10C06FE070E080E090E03E -:1029900004C0660F771F881F991F2A95D2F760958C -:1029A00070958095909503C060E070E0CB01242F76 -:1029B000269526952370422F50E042305105D1F0E4 -:1029C0004330510559F16C297D298E299F294130C9 -:1029D000510541F128960FB6F894DEBF0FBECDBF6A -:1029E000DF91CF911F910F91FF90EF90DF90CF90EB -:1029F0000C94D11A6C297D298E299F2928960FB60F -:102A0000F894DEBF0FBECDBFDF91CF911F910F9124 -:102A1000FF90EF90DF90CF900C94EB1A0E94D11AA8 -:102A2000C701B60128960FB6F894DEBF0FBECDBF22 -:102A3000DF91CF911F910F91FF90EF90DF90CF909A -:102A40000C94B71AFF2019F0842F817001C086956D -:102A5000882309F465C1262F229526952770220F19 -:102A6000220F862F8F70C82ED12CE12CF12C022E34 -:102A700004C0CC0CDD1CEE1CFF1C0A94D2F764FFD2 -:102A800010C06FE070E080E090E004C0660F771F38 -:102A9000881F991F2A95D2F760957095809590951B -:102AA00003C060E070E0CB01242F269526952370AB -:102AB000422F50E042305105D1F04330510559F1D9 -:102AC0006C297D298E299F294130510541F1289695 -:102AD0000FB6F894DEBF0FBECDBFDF91CF911F912F -:102AE0000F91FF90EF90DF90CF900C94A51B6C2975 -:102AF0007D298E299F2928960FB6F894DEBF0FBE38 -:102B0000CDBFDF91CF911F910F91FF90EF90DF909C -:102B1000CF900C94BF1B0E94A51BC701B60128963D -:102B20000FB6F894DEBF0FBECDBFDF91CF911F91DE -:102B30000F91FF90EF90DF90CF900C948B1B603F34 -:102B4000C9F118F4603E50F49BC0623F09F460C0C4 -:102B500008F44AC0633F09F46FC092C0162F1F707B -:102B6000842F8F71FF2099F00E94241B812F2896BB -:102B70000FB6F894DEBF0FBECDBFDF91CF911F918E -:102B80000F91FF90EF90DF90CF900C9470130E9404 -:102B9000451B812F28960FB6F894DEBF0FBECDBF20 -:102BA000DF91CF911F910F91FF90EF90DF90CF9029 -:102BB0000C947713FF20A1F05111B2C0842F8F71B4 -:102BC00028960FB6F894DEBF0FBECDBFDF91CF9130 -:102BD0001F910F91FF90EF90DF90CF900C946A1BA4 -:102BE000523008F09DC0EACFFF20A1F0842F8F71F2 -:102BF00028960FB6F894DEBF0FBECDBFDF91CF9100 -:102C00001F910F91FF90EF90DF90CF900C94241BB9 -:102C1000FF2061F3842F8F7128960FB6F894DEBFE2 -:102C20000FBECDBFDF91CF911F910F91FF90EF901D -:102C3000DF90CF900C94451BFF2091F0842F8F7173 -:102C400028960FB6F894DEBF0FBECDBFDF91CF91AF -:102C50001F910F91FF90EF90DF90CF900C940F1B7E -:102C600028960FB6F894DEBF0FBECDBFDF91CF918F -:102C70001F910F91FF90EF90DF90CF900C94051B68 -:102C8000FF20A1F0552309F4B1CF862F28960FB667 -:102C9000F894DEBF0FBECDBFDF91CF911F910F9192 -:102CA000FF90EF90DF90CF900C945912552309F4C8 -:102CB000B1CF862F28960FB6F894DEBF0FBECDBFDA -:102CC000DF91CF911F910F91FF90EF90DF90CF9008 -:102CD0000C9421134F70C8010E942D0328960FB643 -:102CE000F894DEBF0FBECDBFDF91CF911F910F9142 -:102CF000FF90EF90DF90CF900C942C1A4F70C8018A -:102D000028960FB6F894DEBF0FBECDBFDF91CF91EE -:102D10001F910F91FF90EF90DF90CF900C945D0783 -:102D200028960FB6F894DEBF0FBECDBFDF91CF91CE -:102D30001F910F91FF90EF90DF90CF9008950E9428 -:102D4000C71C0E94D71C0E949C1C0E94F31C0E945E -:102D5000B3210E94072180E090E00E94521180E0A0 -:102D600090E00C9468110E94B71C0C949F160E946E -:102D70001A1C292F22952F7030E02C3031054CF48D -:102D80002A3031056CF4225031092230310590F49B -:102D900007C02C30310551F02F30310539F00AC011 -:102DA000803E10F0803F31F481E0089593FB882746 -:102DB00080F9089580E00895CF93DF9300D000D08C -:102DC0001F92CDB7DEB70F900F900F900F900F901E -:102DD000DF91CF910895CF93DF9300D000D000D042 -:102DE000CDB7DEB726960FB6F894DEBF0FBECDBFC7 -:102DF000DF91CF9108951F93CF93DF93C09183010B -:102E000016E080918401C81799F0D0E01C9FF00172 -:102E10001D9FF00D1124EB57FE4F408151816281BF -:102E20007381848195810E94EB162196C770E9CF4A -:102E3000DF91CF911F9108954091B5015091B60156 -:102E40006091B7017091B8018091B9019091BA0178 -:102E50000C94EB16CF938091BA0182958F7009F094 -:102E60005FC08091B701882309F45AC02091830183 -:102E7000A09184016091B5017091B6018091B80173 -:102E80009091B90131E06F3F09F030E0B32FC6E017 -:102E90002A1709F445C0009721F07F3F21F44B2FFA -:102EA00003C041E001C040E030E040FD35C0C29FBA -:102EB000F001C39FF00D1124EB57FE4F41817413B5 -:102EC0002BC04081641328C04281411125C0438139 -:102ED00054814817590710F441505109481B590BA8 -:102EE000483C5105C8F48091BA018F70806180938D -:102EF000BA0186E0829FF001839FF00D1124E6570E -:102F0000FE4F80818F708061808385EB91E00E940D -:102F10007E13CF910C94FB162F5F3F4F2770B8CFD5 -:102F2000CF910895CF92DF92EF92FF920F931F936C -:102F3000CF93DF93CDB7DEB762970FB6F894DEBFBD -:102F40000FBECDBF8C0185E0F801DE011D9601901A -:102F50000D928A95E1F7D8014C9111965C911197E9 -:102F600012966C9112971396ED90FC9014977091B5 -:102F7000B501E091B6012091B8013091B901211558 -:102F8000310531F0EF3F31F481E07F3F19F403C0A8 -:102F900081E001C080E0B82FB170CB2E80FD6CC104 -:102FA000D090B701DD2009F4F5C0F091BA01E21626 -:102FB000F30638F0C701821B930B883C910548F05B -:102FC0009BC0209530952E0D3F1D283C310508F003 -:102FD00093C08F2F807F09F052C0E51314C0741383 -:102FE00012C0D62E61110FC0FF70F061F093BA01CC -:102FF0000E941C1785EB91E00E947E138091BA011C -:10300000F80185836CC1EF2831F05F3F31F481E036 -:103010004F3F19F403C081E001C080E080FD03C090 -:1030200081E0862701C080E0F82FF170FF2E80FF3D -:103030001CC0809183012091840136E0821709F43D -:1030400028C190E0389FF001399FF00D1124EB5713 -:10305000FE4F7181571306C07081471303C0728100 -:10306000671303C001968770E9CFD62E662309F453 -:1030700036C18091BA0181608093BA0153C0E513D3 -:1030800008C0741306C0611104C0D8011596FC93E2 -:10309000AEC04D875E878D859E856A8B0E94B71670 -:1030A0006A89882329F1D62E662311F12091BA016D -:1030B000822F82958F7090E002970CF460C080910F -:1030C000B5019091B60198878F831986FB86EA86B1 -:1030D0002C87CE01079651C0E51731F14D875E87E9 -:1030E0008D859E856A8B0E94B7166A8981112EC0D4 -:1030F000C8010E947E13A4C08F2F807F69F77E2DA8 -:10310000F98AE88A89890E94DC1685EB91E00E94A1 -:103110007E13E5EBF1E086E0DF011D928A95E9F789 -:103120000E941C17D12CDBC07413D8CF6111D6CFED -:10313000D8011596FC93C8010E947E13E5EBF1E0DF -:1031400086E0DF011D928A95E9F7C9C0D62E662375 -:1031500079F22091BA01822F82958F7090E00297C8 -:1031600074F08091B5019091B6019A8389831B8296 -:10317000FD82EC822E83CE0101960E947E1386E0B2 -:10318000F801A5EBB1E001900D928A95E1F70E945C -:103190002A176FC0E216F30628F0C701821B930BB3 -:1031A0009C0104C0209530952E0D3F1D283C310513 -:1031B00008F052C0D62E662309F49ACFE5132CC02E -:1031C00074132AC08091BA0180FD1DC0982F92957A -:1031D0009F70C9F0D80115968C9315979F3039F0E0 -:1031E0009F5F9295907F8F70892B15968C93C80165 -:1031F0000E947E1386E0F801A5EBB1E001900D92EC -:103200008A95E1F736C086E0F801A5EBB1E00190C0 -:103210000D928A95E1F763C04D875E878D859E8507 -:103220000E94B716882379F086E0F801A5EBB1E09B -:1032300001900D928A95E1F70E942A170E941C17AF -:10324000DD24D3944CC08091BA0181608093BA018F -:10325000C8010E947E1343C07E2DF98AE88A8989BD -:103260000E94DC16E5EBF1E086E0DF011D928A9515 -:10327000E9F70E941C1733C0662309F439CF4D8744 -:103280005E878D859E850E94B716882309F430CF0E -:10329000CBCF4D875E878D859E850E941A1C292F76 -:1032A00022952F7030E0223031052CF49F7041F0D0 -:1032B000811106C00CC0243031052CF49F7049F4F4 -:1032C000805E883020F0C8010E947E13CF2CDC2C59 -:1032D00006C0D80115969C91907F91F7F8CF8D2D5F -:1032E00062960FB6F894DEBF0FBECDBFDF91CF91CF -:1032F0001F910F91FF90EF90DF90CF9008951F9353 -:10330000CF93DF93CDB7DEB72C970FB6F894DEBF1F -:103310000FBECDBF4F83588769877A878B879C877D -:10332000CE0107960E9492178823C1F02F8138851D -:103330008A859B85892B31F03F3F11F080E003C0E7 -:103340002F3FE1F781E0811147C04F8158856985A2 -:103350007A858B859C850E94EB163EC086E0FE0137 -:103360003796DE01119601900D928A95E1F7FF8163 -:10337000E8854A855B854115510531F0EF3F31F411 -:1033800081E0FF3F19F403C081E001C080E080FDCF -:1033900023C02091840130E0C901019687709927EC -:1033A0006091830170E086179707F1F1F983EA8352 -:1033B0005D834C8396E0929FD001939FB00D1124C2 -:1033C000AB57BE4FFE01319601900D929A95E1F7F1 -:1033D000809384010E94FB1616E0809183019091F6 -:1033E0008401891779F1189FC00111248B579E4FD2 -:1033F0000E949217882331F1E09183011E9FF00112 -:103400001124EB57FE4F4081518162817381848189 -:1034100095810E94EB168091830190E00196877060 -:10342000992780938301D9CF0E94B316109284010B -:1034300010928301E5EBF1E086E0DF011D928A95B1 -:10344000E9F7CACF2C960FB6F894DEBF0FBECDBFFA -:10345000DF91CF911F910895EF92FF920F931F93E9 -:10346000CF93DF93FC01009709F46FC0F12CEE2499 -:10347000E394EF0121968491843740F4843008F07E -:1034800055C0813081F0823021F15FC0853709F469 -:1034900047C0C0F19CE7980F903708F056C08F776F -:1034A0000E94211345C08F010E5F1F4FFE018491C2 -:1034B00090E2980F983050F48770FE2D01C0FF0FF6 -:1034C0008A95EAF78F2F0E94CA1C15C00E945912D4 -:1034D00014C08F010E5F1F4FFE01849190E2980F80 -:1034E000983068F48770FE2D01C0FF0F8A95EAF7C7 -:1034F0008F2F0E94D01C0E94F31CE80119C00E946B -:103500002113FBCFCF010296FE01C491CC2361F0C1 -:10351000EFE9FFE03197F1F700C00000C150F6CFAE -:10352000CF010296FE01F490EC0102C00E945912F4 -:103530008F2D882341F0EFE9FFE03197F1F700C0CC -:1035400000008150F6CFFE0194CFDF91CF911F9103 -:103550000F91FF90EF90089508956093BF017093CD -:10356000C0018093C1019093C2010C949F160F93E8 -:103570001F930091BF011091C0012091C1013091B2 -:10358000C201062B172B282B392B0093BF01109358 -:10359000C0012093C1013093C2011F910F910C947F -:1035A0009F160F931F930091BF011091C0012091AE -:1035B000C1013091C2010623172328233923009328 -:1035C000BF011093C0012093C1013093C2011F912C -:1035D0000F910C949F160F931F930091BF011091B0 -:1035E000C0012091C1013091C20106271727282769 -:1035F00039270093BF011093C0012093C10130937C -:10360000C2011F910F910C949F161092BB01109252 -:10361000BC011092BD011092BE010C949F1641E0B6 -:1036200050E060E070E004C0440F551F661F771F34 -:103630008A95D2F74093BB015093BC016093BD01C2 -:103640007093BE010C949F1641E050E060E070E082 -:1036500004C0440F551F661F771F8A95D2F78091CB -:10366000BB019091BC01A091BD01B091BE01842B22 -:10367000952BA62BB72B8093BB019093BC01A093F5 -:10368000BD01B093BE010C949F1641E050E060E094 -:1036900070E004C0440F551F661F771F8A95D2F74C -:1036A00040955095609570958091BB019091BC01BB -:1036B000A091BD01B091BE0184239523A623B72319 -:1036C0008093BB019093BC01A093BD01B093BE0158 -:1036D0000C949F1641E050E060E070E004C0440F9D -:1036E000551F661F771F8A95D2F78091BB01909175 -:1036F000BC01A091BD01B091BE0184279527A627EA -:10370000B7278093BB019093BC01A093BD01B093F8 -:10371000BE010C949F160F931F930091BB01109153 -:10372000BC012091BD013091BE01062B172B282B27 -:10373000392B0093BB011093BC012093BD01309342 -:10374000BE011F910F910C949F160F931F93009130 -:10375000BB011091BC012091BD013091BE01062337 -:103760001723282339230093BB011093BC01209316 -:10377000BD013093BE011F910F910C949F160F93C2 -:103780001F930091BB011091BC012091BD013091AC -:10379000BE0106271727282739270093BB0110935E -:1037A000BC012093BD013093BE011F910F910C9479 -:1037B0009F160895CF92DF92EF92FF920F931F937F -:1037C000CF93DF93EC01C090BF01D090C001E09097 -:1037D000C101F090C2018091BB019091BC01A09108 -:1037E000BD01B091BE01C82AD92AEA2AFB2A0FE1FD -:1037F00010E0B701A601002E04C076956795579595 -:1038000047950A94D2F740FD05C00150110988F789 -:1038100080E007C0BE01802F0E949A090197A9F39A -:10382000802FDF91CF911F910F91FF90EF90DF904C -:10383000CF900895CF93DF93EC010E94DA1BBE0175 -:103840000E949A09DF91CF910895CB010E941A1C22 -:10385000089590910C019923D9F090910D0199232D -:10386000B9F0982F9695969596959F3088F5E091AA -:103870000E01F0910F01E90FF11D877021E030E09A -:1038800001C0220F8A95EAF78181822B81830895F6 -:1038900040910E0150910F0120E030E09FEFFA01BE -:1038A000E20FF31F6281681799F09F3F19F46111CD -:1038B00001C0922F2F5F3F4F2E30310581F79F3F80 -:1038C00039F0FA01E90FF11D97FDFA958283089509 -:1038D000089590910C019923E1F090910D019923A5 -:1038E000C1F0982F9695969596959F3020F5E0918A -:1038F0000E01F0910F01E90FF11D877021E030E01A -:1039000001C0220F8A95EAF720958181282321831F -:10391000089540910E0150910F0120E030E0FA012E -:10392000E20FF31F9281981301C012822F5F3F4F65 -:103930002E303105A1F7089581E090E0E0910E016D -:10394000F0910F01E80FF91F108201968031910567 -:10395000A9F708959091D601982B9093D6010895D8 -:1039600080959091D60198239093D6010895109256 -:10397000D60108959091D501982B9093D501089583 -:1039800080959091D50198239093D5010895109238 -:10399000D50108959091D401982B9093D401089566 -:1039A00080959091D40198239093D401089510921A -:1039B000D40108958093C30108951092C30108951E -:1039C00040910E0150910F0120E030E080E0FA01BB -:1039D000E20FF31F918191118F5F2F5F3F4F2F30C7 -:1039E0003105A9F70895E0910E01F0910F01809142 -:1039F000D6018083E0910E01F0910F0180819091BA -:103A0000D501892B8083E0910E01F0910F01808117 -:103A10009091D401892B80839091C301992361F007 -:103A2000E0910E01F0910F018081892B80830E942B -:103A3000E01C81111092C30180910E0190910F0141 -:103A40000C943C118091EE01843021F11092D80148 -:103A500020E488E190E00FB6F894A8958093600088 -:103A60000FBE2093600080E00E94350A83B7817FFB -:103A7000846083BF83B7816083BF7894889583B760 -:103A80008E7F83BF88E10FB6F89480936000109218 -:103A900060000FBE089508950895CF930E944B1DB6 -:103AA0000E9469060E944C1DC0E08C2F0E945607A0 -:103AB000811105C0CF5FCE30C1F780E001C081E049 -:103AC000CF9108950E94B3160E9430110C94350ACC -:103AD00082E084BD93E095BD9AEF97BD80936E0020 -:103AE00008952FB7F8948091D9019091DA01A091AF -:103AF000DB01B091DC012FBF0895CF92DF92EF92EE -:103B0000FF920F931F932FB7F8944091D9015091D2 -:103B1000DA016091DB017091DC012FBF6A017B014A -:103B2000EE24FF248C0120E030E0C016D106E2062E -:103B3000F30610F441505109481B590BCA011F915B -:103B40000F91FF90EF90DF90CF9008951F920F920A -:103B50000FB60F9211248F939F93AF93BF938091D1 -:103B6000D9019091DA01A091DB01B091DC010196BD -:103B7000A11DB11D8093D9019093DA01A093DB01BF -:103B8000B093DC01BF91AF919F918F910F900FBEC9 -:103B90000F901F9018950E94360EF8942FEF87EA29 -:103BA00091E6215080409040E1F700C0000087E09E -:103BB00090EBDC018093F8019093F901A093FA0156 -:103BC000B093FB012CE088E190E00FB6F894A89543 -:103BD000809360000FBE20936000FFCFEF92FF92B2 -:103BE0000F931F93CF93DF93E82EF12C8F2D0E941C -:103BF0005607C0E0D0E0082F10E098010C2E02C05C -:103C0000359527950A94E2F720FD05C02196C63028 -:103C1000D10599F709C06C2F7F2D80E00E945E07C7 -:103C2000E812F4CF81E005C0F3948EE0F812DECF05 -:103C300080E0DF91CF911F910F91FF90EF90089559 -:103C4000CF93C82F8CE20E94EE1D882321F08C2F89 -:103C5000CF910C94EE1D80E0CF910895CF930E94F8 -:103C6000731F811102C00E94591FC5E6C15049F05F -:103C70000E9469068FE39CE90197F1F700C00000FC -:103C8000F5CF89E20E94201E811111C18AE20E94B3 -:103C9000201E81110E94591F85E00E94201E811163 -:103CA0000E94CB1D0E947E1F8093D70187E00E9457 -:103CB000201E882399F18BE10E94201E882351F059 -:103CC0009091D70191FB882780F921E0822780FB22 -:103CD00091F922C08EE00E94201E882351F090911D -:103CE000D70192FB882780F921E0822780FB92F997 -:103CF00013C080E10E94201E9091D701882341F0DB -:103D000093FB882780F921E0822780FB93F904C088 -:103D1000892F809580FB90F99093D7018091D701EE -:103D20000E94821F0E94901F8093F70180EE0E94E4 -:103D3000201E882341F08091F701982F909590FBE9 -:103D400080F98093F70189E30E94201E882359F0AF -:103D50009091F70191FB882780F921E0822780FB71 -:103D600091F99093F70182EE0E94201E882359F06A -:103D70009091F70192FB882780F921E0822780FB50 -:103D800092F99093F70186EE0E94201E882359F045 -:103D90009091F70193FB882780F921E0822780FB2F -:103DA00093F99093F70183EE0E94201E882359F027 -:103DB0009091F70194FB882780F921E0822780FB0E -:103DC00094F99093F70185E30E94201E882359F00F -:103DD0009091F70195FB882780F921E0822780FBED -:103DE00095F99093F70181E30E94201E882359F0F2 -:103DF0009091F70196FB882780F921E0822780FBCC -:103E000096F99093F70181E10E94201E882359F0D2 -:103E10009091F70197FB882780F921E0822780FBAA -:103E200097F99093F7018091F7010E94941F809178 -:103E3000F70187FB882780F980930D0187E20E94B4 -:103E4000201EC82F8EE10E94201E8111C2608FE1CA -:103E50000E94201E8111C46080E20E94201E8111F8 -:103E6000C86081E20E94201E8111C06182E20E942E -:103E7000201E8111C06283E20E94201E8111C06455 -:103E800084E20E94201E882311F0C06802C0CC2367 -:103E900029F08C2F0E948B1F6C2F03C00E94871F5C -:103EA000682F70E080E090E0CF910C94AD1ACF9134 -:103EB00008956DEE7EEF80E090E00E94B12560E015 -:103EC00082E090E00E949F2560E083E090E00E9405 -:103ED0009F2560E084E090E00E949F2560E085E0FF -:103EE00090E00C949F2580E090E00E94992521E0CD -:103EF0008D3E9E4F09F020E0822F089582E090E0F1 -:103F00000C949125682F82E090E00C949F2583E02B -:103F100090E00C949125682F83E090E00C949F250D -:103F200084E090E00C949125682F84E090E00C945C -:103F30009F258091DF0180FF0BC06091130185E018 -:103F4000689FB001112475956795759567952AC08E -:103F500081FF09C06091130185E0689FB0011124C1 -:103F6000759567951FC082FF07C06091130185E0BA -:103F7000689FB001112416C04091E0014423C9F0AC -:103F800060911201461788F72091130185E0289F60 -:103F900090011124429FC001439F900D112470E0B5 -:103FA0000E9463256038710540F46115710539F090 -:103FB00002C065E070E0862F08958FE7089581E0E4 -:103FC00008958091DF0180FF08C06091110170E0C9 -:103FD000759567957595679521C081FF06C06091BD -:103FE000110170E07595679519C082FF04C060915A -:103FF000110170E010C08091E0018823C1F0609150 -:1040000010018617A0F790911101989FC00111240B -:1040100070E00E9463256038710528F46115710510 -:1040200021F0862F08958FE7089581E0089561E0DB -:1040300070E0F4CF803F21F40E94991F819504C065 -:10404000813F29F40E94991F8093E3010895823FE4 -:1040500021F40E94991F819504C0833F29F40E9496 -:10406000991F8093E2010895893F19F40E94E11F8E -:1040700005C08A3F31F40E94E11F81958093E401DD -:1040800008958B3F21F40E94E11F819504C08C3F6D -:1040900029F40E94E11F8093E5010895843F21F4F3 -:1040A0008091E101816017C0853F21F48091E10199 -:1040B000826011C0863F21F48091E10184600BC0D1 -:1040C000873F21F48091E101886005C0883F31F489 -:1040D0008091E10180618093E10108958D3F21F499 -:1040E0008091DF0181600BC08E3F21F48091DF0160 -:1040F000826005C08F3F29F48091DF018460809346 -:10410000DF010895803F39F48091E30187FF6CC09F -:104110001092E30169C0813F29F48091E3011816F0 -:10412000BCF362C09091E201823F29F497FF5CC02A -:104130001092E20159C0833F19F41916CCF354C010 -:10414000893F41F48091E40118160CF04DC01092A3 -:10415000E4014AC08A3F29F48091E40187FF44C00A -:10416000F6CF8B3F39F48091E50187FF3DC0109277 -:10417000E5013AC08C3F29F48091E5011816BCF3A3 -:1041800033C0843F21F48091E1018E7F17C0853FC9 -:1041900021F48091E1018D7F11C0863F21F480914F -:1041A000E1018B7F0BC0873F21F48091E101877F84 -:1041B00005C0883F31F48091E1018F7E8093E10159 -:1041C00013C08D3F21F48091DF018E7F0BC08E3FA5 -:1041D00021F48091DF018D7F05C08F3F29F480910C -:1041E000DF018B7F8093DF018091E20181110EC09E -:1041F0008091E30181110AC08091E401811106C020 -:104200008091E501811102C01092E001089581EED4 -:1042100091E00E9447110E94711D9093DE018093EE -:10422000DD0108951F93CF93DF938091DD0190917D -:10423000DE010E947D1D4091E001442321F0209188 -:10424000140130E006C0209115015AE0259F90012D -:1042500011248217930708F482C08091E201109123 -:10426000E301D091E401C091E501811107C0111172 -:1042700005C0D11103C0CC2309F471C04F3F19F020 -:104280004F5F4093E001181624F40E94991F809319 -:10429000E2018091E20187FF05C00E94991F81958C -:1042A0008093E201111624F40E94991F8093E30188 -:1042B0008091E30187FF05C00E94991F819580933B -:1042C000E3016091E201662339F11091E3011123CA -:1042D00019F1772767FD7095872F972F0E94742417 -:1042E00023E333E343E35FE30E94D8240E944124A5 -:1042F0006093E201612F772767FD7095872F972FD5 -:104300000E94742423E333E343E35FE30E94D82451 -:104310000E9441246093E3011D1624F40E94E11FD2 -:104320008093E4018091E40187FF05C00E94E11FB2 -:1043300081958093E4011C1624F40E94E11F809370 -:10434000E5018091E50187FF05C00E94E11F81958D -:104350008093E501DF91CF911F910C940721DF91AC -:10436000CF911F910895E1EEF1E085E0DF011D920C -:104370008A95E9F71092E0011092DF0108958330E9 -:1043800081F128F4813059F08230D1F008958530E0 -:1043900009F449C0B8F1863009F456C00895209157 -:1043A0001501862F90E0820F911D8F3F910520F41B -:1043B000620F6093150108958FEF809315010895A2 -:1043C00020911401862F90E0820F911D8F3F91055F -:1043D00020F4620F6093140108958FEF809314010D -:1043E000089520911301862F90E0820F911D8F3F39 -:1043F000910520F4620F6093130108958FEF80936D -:104400001301089520911201862F90E0820F911DD3 -:104410008F3F910520F4620F6093120108958FEF92 -:1044200080931201089520911101862F90E0820F50 -:10443000911D8F3F910520F4620F60931101089543 -:104440008FEF80931101089520911001862F90E045 -:10445000820F911D8F3F910520F4620F6093100130 -:1044600008958FEF809310010895833011F128F49F -:10447000813049F0823091F00895853081F120F14A -:104480008630C1F1089580911501681720F4861BCC -:1044900080931501089510921501089580911401DB -:1044A000681720F4861B809314010895109214015C -:1044B000089580911301681720F4861B80931301DF -:1044C000089510921301089580911201681720F445 -:1044D000861B809312010895109212010895809115 -:1044E0001101681720F4861B809311010895109222 -:1044F0001101089580911001681720F4861B8093A4 -:10450000100108951092100108958D3109F442C0F0 -:1045100020F58E3009F477C070F4873009F459C063 -:1045200018F48630F1F134C0883009F4A8C08B301B -:1045300009F4A5C02DC0863109F4A1C038F480313A -:1045400009F472C0813109F479C022C0893109F4BB -:1045500096C08B3109F44DC01BC0853309F487C068 -:1045600048F4873209F483C008F473C0893209F42F -:104570007EC00EC0833438F48A3308F068C08833B4 -:1045800009F47DC005C0833409F471C0883499F002 -:1045900080E008950E94FB230E9430110E94350A9A -:1045A0006EC08091D701817F8E7F8093D70181E09B -:1045B0008093E70108950E94B3162FEF83ED90E3F7 -:1045C000215080409040E1F700C000000E94CB1DC8 -:1045D00056C09091D701892F8095817080FB90F90A -:1045E00019F0966098601DC0997F977F9093D701CE -:1045F00046C09091D70191FB882780F921E082275E -:1046000080FB91F909C09091D70192FB882780F92E -:1046100021E0822780FB92F99093D701882379F1DA -:1046200091609093D70108959091D70193FB8827CB -:1046300080F921E0822780FB93F9EECF0E94B31628 -:1046400080910D0191E0892780930D0118C027EC1E -:1046500001C023EE280F61E070E080E090E004C02C -:10466000660F771F881F991F2A95D2F704C061E053 -:1046700070E080E090E00E94AD1A0E94B31681E0E5 -:10468000089580E0089580E00895CF93C82F809129 -:10469000E701813079F018F08230D1F184C0A09127 -:1046A0000E01B0910F018C91813169F0823209F0D5 -:1046B0007CC009C0A0910E01B0910F018C91813195 -:1046C00011F0823249F48C2F0E94412381111DC0C8 -:1046D0008C2F0E9485221AC08C2F0E9443238111A7 -:1046E00014C0C43179F048F4CB3079F0C03109F00E -:1046F00060C082E08093E70108C0C93219F0C83376 -:1047000021F057C01092E70154C081E0817053C07E -:10471000C93289F118F5C43171F1A8F4C73009F034 -:1047200046C08AE08093150194E19093140193E0D0 -:10473000909313018093120188E08093110188E225 -:104740008093100134C0CE51C63088F5EC2FF0E0D4 -:10475000E65DFE4F80818093E60129C0CE34E9F00A -:1047600020F4CB3421F56AE013C0C13579F0C235AD -:10477000F1F461E00DC08091E601882319F01092F8 -:10478000E60115C081E08093E70115C061E006C035 -:104790008091E6010E94BF210AC06AE08091E60193 -:1047A0000E94352204C01092E70180E004C081E03D -:1047B00002C080E0ABCFCF910895E1E8F0E08081C6 -:1047C000886080838081816080838FB7F89493E0D4 -:1047D0009093890090ED909388008FBF0895EFE645 -:1047E000F0E08081826080830895EFE6F0E08081D0 -:1047F0008D7F80830895EFE6F0E0808192E0892745 -:10480000808308951F920F920FB60F9211242F9359 -:104810003F934F935F936F937F938F939F93AF9348 -:10482000BF93EF93FF938091E8019091E901019686 -:104830009093E9018093E801811103C082E00E9416 -:10484000350AE091E901E695E695F0E0E257FA4F86 -:10485000E4918091E8018E1303C080E00E94350A44 -:10486000FF91EF91BF91AF919F918F917F916F9148 -:104870005F914F913F912F910F900FBE0F901F901E -:10488000189504D06894B1118DC0089570D088F047 -:104890009F5790F0B92F9927B751A0F0D1F0660F2C -:1048A000771F881F991F1AF0BA95C9F712C0B13047 -:1048B00081F077D0B1E0089574C0672F782F8827F2 -:1048C000B85F39F0B93FCCF3869577956795B39586 -:1048D000D9F73EF490958095709561957F4F8F4FF5 -:1048E0009F4F0895E89409C097FB3EF490958095FA -:1048F000709561957F4F8F4F9F4F9923A9F0F92FA6 -:1049000096E9BB279395F695879577956795B79523 -:10491000F111F8CFFAF4BB0F11F460FF1BC06F5F09 -:104920007F4F8F4F9F4F16C0882311F096E911C01B -:10493000772321F09EE8872F762F05C0662371F03C -:1049400096E8862F70E060E02AF09A95660F771F50 -:10495000881FDAF7880F9695879597F9089557FD80 -:104960009058440F551F59F05F3F71F04795880FDD -:1049700097FB991F61F09F3F79F087950895121674 -:1049800013061406551FF2CF4695F1DF08C0161620 -:1049900017061806991FF1CF8695710561050894D1 -:1049A0000895E894BB2766277727CB0197F90895E8 -:1049B0000BD078C069D028F06ED018F0952309F09C -:1049C0005AC05FC01124EECFCADFA0F3959FD1F388 -:1049D000950F50E0551F629FF001729FBB27F00DAD -:1049E000B11D639FAA27F00DB11DAA1F649F662702 -:1049F000B00DA11D661F829F2227B00DA11D621F51 -:104A0000739FB00DA11D621F839FA00D611D221F0A -:104A1000749F3327A00D611D231F849F600D211DEE -:104A2000822F762F6A2F11249F5750408AF0E1F091 -:104A300088234AF0EE0FFF1FBB1F661F771F881FDA -:104A400091505040A9F79E3F510570F014C0AACF75 -:104A50005F3FECF3983EDCF3869577956795B795C5 -:104A6000F795E7959F5FC1F7FE2B880F911D9695EF -:104A7000879597F9089597F99F6780E870E060E05F -:104A800008959FEF80EC089500240A9416161706E7 -:104A900018060906089500240A941216130614062F -:104AA00005060895092E0394000C11F4882352F092 -:104AB000BB0F40F4BF2B11F460FF04C06F5F7F4F4A -:104AC0008F4F9F4F089597FB072E16F4009407D041 -:104AD00077FD09D00E947D2507FC05D03EF4909516 -:104AE00081959F4F0895709561957F4F0895EE0FC2 -:104AF000FF1F0590F491E02D0994AA1BBB1B51E107 -:104B000007C0AA1FBB1FA617B70710F0A61BB70B3D -:104B1000881F991F5A95A9F780959095BC01CD01E2 -:104B20000895F999FECF92BD81BDF89A992780B575 -:104B30000895A8E1B0E042E050E00C94B925262F9A -:104B4000F999FECF92BD81BDF89A019700B4021683 -:104B500039F01FBA20BD0FB6F894FA9AF99A0FBE31 -:104B600008950196272F0E94A0250C949F25DC0113 -:104B7000CB01FC01F999FECF06C0F2BDE1BDF89A68 -:104B8000319600B40D9241505040B8F70895F89412 -:024B9000FFCF55 -:104B92002002370AC40AA10A6D0A3A0A0101C401B5 -:104BA20028080A03140A3F4D36394F050205CC0482 -:104BB200930426043F045804710401020304050609 -:044BC20007080900D7 +:100000000C94D7020C941B030C941B030C941B033D +:100010000C941B030C941B030C941B030C941B03E8 +:100020000C941B030C941B030C944A0E0C941C0F91 +:100030000C941B030C941B030C941B030C941B03C8 +:100040000C941B030C949B230C941B030C941B0318 +:100050000C941B030C943F1D0C941B030C941B036A +:100060000C941B030C941B030C941B030C941B0398 +:100070000C941B030C941B030C941B030C941B0388 +:100080000C941B030C941B030C941B030C941B0378 +:100090000C941B030C941B030C941B030C941B0368 +:1000A0000C941B030C941B030C941B032B035F0386 +:1000B0008403C2032B036803A603D00391049104B5 +:1000C00054045E0468047A04810FA30F8E10A30FFA +:1000D0008E10E50F08108E105D1070106A136A13F1 +:1000E000AB13AB13ED132914291629164114291645 +:1000F00038153815031629162916171600000000A2 +:1001000000000000000000000000000000000000EF +:100110000AC80BC80CC80DC80EC80FC810C811C833 +:100120000D200C200B300A30E00000001E001400EF +:1001300004001D0000074E001F001A0016001B00DF +:10014000000F4C002000080007000600E2002A0013 +:100150002100150009001900E3004B0022001700E0 +:100160000A00050000004A0029002F0000002B02B1 +:1001700000004D002D00300000002B00000050005A +:1001800023001C000B00110000004F002400180089 +:100190000D001000E700520025000C000E00360094 +:1001A000E6002C00260012000F003700000F280088 +:1001B00027001300330038000007510011201020E1 +:1001C0000F200E30E40000000100010001000100DA +:1001D000E00000003A001E02200222020007510047 +:1001E0003B001F0221022302000F28003C002F02C7 +:1001F00026022F00E2002C003D00300227023000D2 +:10020000E30052003E002402350035020000500099 +:100210002900360200002B0000004F002D0037029D +:1002200000002B0200004A003F003102380031007C +:1002300000004D004000240021001E0027784B00E4 +:100240004100250022001F0037744C0042002600A8 +:10025000230020002E7F2A004300380025022D00B5 +:100260002E774E00010001000100010028710000FE +:100270000100010001000100E000000044006600F0 +:10028000A60000000007B50045001430F20016304B +:10029000F60000006800F000F100F100F400B60084 +:1002A00069001530F3001730F500B4006A00A900AA +:1002B000AA00A8000000B8002900F9000000FA0018 +:1002C0000000B9000000F9000000FA000000AC00D6 +:1002D0006B004600530000000000AB006C004A00B9 +:1002E00050004D004978A9006D00520051005100A6 +:1002F0004C74AE006E004B004F004E00000FAD007E +:100300006F00B100B30000000007AA000100010067 +:1003100001000100E40000000100010001000100F3 +:10032000010000002900010001000100010001009E +:1003300001000100010001000100010001000100B5 +:1003400001000100010001000100010001000100A5 +:100350000100010001000100010001000000010096 +:100360000100010000000100000001000100010087 +:100370000000010000000100010001000100010077 +:100380000000010001000100010001000100010066 +:100390000100010001000100010001000100010055 +:1003A00001000100010001002A000100010001001C +:1003B00001000100010001000100E5000100000052 +:1003C00016034500720067006F0044006F0078005C +:1003D000200045005A000000160345007200670027 +:1003E0006F0044006F007800200045005A000000B4 +:1003F0000403090409026D00040100A0FA090400C5 +:10040000000103010100092111010001223F000741 +:1004100005810308000A0904010001030102000923 +:100420002111010001224D000705820308000A097D +:10043000040200010300000009211101000122361D +:10044000000705830308000A0904030001030000F4 +:100450000009211101000122390007058403100061 +:10046000011201100100000008EDFE071301000158 +:1004700002000105010906A101050719E029E71598 +:1004800000250195087501810205081901290595C6 +:100490000575019102950175039101050719002960 +:1004A0007715002501957875018102C00501098045 +:1004B000A101850216010026B7001A01002AB70023 +:1004C000751095018100C0050C0901A10185031675 +:1004D0000100269C021A01002A9C027510950181D8 +:1004E00000C005010902A1010901A10005091901C6 +:1004F00029051500250195057501810295017503F2 +:1005000081010501093009311581257F95027508A2 +:10051000810609381581257F950175088106050C2E +:100520000A38021581257F950175088106C0C0052E +:10053000010906A101050719E029E7150025019524 +:1005400008750181029501750881010508190129C5 +:10055000059505750191029501750391010507192E +:100560000029FF150025FF950675088100C00000D1 +:10057000000000000000000000010204060A0F173E +:10058000202C3A4A5D71879DB3C7DAE9F5FCFFFC80 +:10059000F5E9DAC7B39D87715D4A3A2C20170F0A37 +:1005A0000604020100000000000000000000112409 +:1005B0001FBECFEFDAE0DEBFCDBF04B603FE24C01E +:1005C0008091F6019091F701A091F801B091F901A5 +:1005D0008730904BA740B04BB9F41092F6011092BF +:1005E000F7011092F8011092F90114BE84B7877FC9 +:1005F00084BF88E10FB6F894809360001092600089 +:100600000FBEE0E0FFE3099511E0A0E0B1E0E4EC0B +:10061000FAE402C005900D92A433B107D9F721E0A6 +:10062000A4E3B1E001C01D92A63FB207E1F70E942A +:10063000900B0C9460250C940000DC01462F50E0D8 +:100640004A5051094E30510508F06BC14A5A5F4F6C +:10065000FA010C94102512962C91129780913A0170 +:1006600090913B012223F9F015962C91207FD9F42B +:1006700001968330910510F082E090E090933B0169 +:1006800080933A0180913A0190913B01823091052B +:1006900029F489E30E94F21189E30EC0019709F061 +:1006A00040C181EEFAC0019790933B0180933A01DB +:1006B000892B09F036C181EE0E94BA1232C112961E +:1006C0002C918091380190913901222379F090C0CA +:1006D00012963C91129715962C9180913801909129 +:1006E0003901207F31117AC009F09FC001979093A2 +:1006F000390180933801892B09F013C180913501AC +:1007000081110FC181E067C012963C911297159636 +:100710002C918091360190913701207F332361F035 +:10072000222309F491C0009709F08EC02091340172 +:1007300021118AC08BE2B1C02223B1F00097A1F44D +:1007400020913401211110C08BE2B6CF12963C915A +:10075000129715962C918091360190913701207F48 +:10076000311168C009F08DC00197909337018093D3 +:100770003601892B09F0D5C0809134018111D1C097 +:1007800082E029C012969C91129715968C9199231C +:10079000B1F0982F907F79F080FD0DC085E37DC08A +:1007A00012969C91129715968C91992379F0982F17 +:1007B000907F09F06FC083E00E94BD1AB2C0982FED +:1007C000907F41F080FD06C085E376CF982F907F23 +:1007D00009F066C083E00E94DE1AA3C0222341F024 +:1007E000009731F420913501211102C084E355C0F6 +:1007F00001968330910510F082E090E090933901EA +:1008000080933801809138019091390182309105AF +:1008100029F0019709F085C081E0CECF80913501A4 +:1008200091E08927809335017CC0009709F05ECF65 +:1008300084E342CF222341F0009731F42091340128 +:10084000211102C081E329C001968330910510F087 +:1008500082E090E0909337018093360180913601D9 +:10086000909137018230910529F0019709F059C024 +:1008700082E0A2CF8091340191E0892780933401F6 +:1008800050C0009709F070CF2091340121116CCF36 +:1008900081E312CF80FD8FCF8EE20E94F21141C022 +:1008A00080FD98CF8EE208CF12968C91882319F0A4 +:1008B00080EF90E013C080EF90E017C012968C910B +:1008C000882319F080EF90E01BC080EF90E021C0FA +:1008D00012968C91882339F081EF90E00E94B31F2B +:1008E00082EF90E011C081EF90E00E941B2082EF28 +:1008F00090E013C012968C91882349F081EF90E02C +:100900000E94B31F83EF90E00E94B31F08C081EFE5 +:1009100090E00E941B2083EF90E00E941B200E9429 +:10092000A02080E090E008950895E0910E01F091FC +:100930000F018081827219F0259A2D9A06C00E94BB +:10094000C91081FDF9CF25982D988091B90181FFBB +:1009500003C0269A2E9A02C026982E988091B9013B +:1009600082FF03C0279A2F9A089527982F980895F9 +:100970000C94950456985E9825982D9826982E9854 +:1009800027982F988FEF90E09093890080938800AC +:1009900090938B0080938A0090938D0080938C00BD +:1009A000259A2D9A2FEF80E792E0215080409040C9 +:1009B000E1F700C00000269A2E9A2FEF80E792E020 +:1009C000215080409040E1F700C00000279A2F9A04 +:1009D0002FEF80E792E0215080409040E1F700C087 +:1009E000000025982D982FEF80E792E0215080405D +:1009F0009040E1F700C0000026982E982FEF80E786 +:100A000092E0215080409040E1F700C0000027981C +:100A10002F9856985E9825982D9826982E98279866 +:100A20002F98089589EA8093800089E0809381005F +:100A300024982C983F988AB18F748AB96E98479AF7 +:100A40008BB1806B8BB9769A0E94BA040C94940493 +:100A500080E28093000180913C0181110EC00E94D0 +:100A6000770581E080933C012FEF83ED90E32150E7 +:100A700080409040E1F700C0000080E40E947D05C6 +:100A80008093000181112EC00E94A7058093000170 +:100A9000811128C00E94A70580930001811122C006 +:100AA0008FE30E94A7058093000181111BC00E9463 +:100AB0009F0580E40E947D0580930001811112C092 +:100AC0008CE00E94A7058093000181110BC00E9459 +:100AD000A70580930001811105C08FE30E94A7053F +:100AE000809300010E949F0580910001089510925B +:100AF000B9008AE08093B800089594EA9093BC000E +:100B00009091BC0097FFFCCF9091B900987F9830EE +:100B100021F0903111F081E008958093BB0084E8CA +:100B20008093BC008091BC0087FFFCCF8091B9000E +:100B3000887F883111F0803471F780E0089584E96E +:100B40008093BC008091BC0084FDFCCF089580930D +:100B5000BB0084E88093BC008091BC0087FFFCCF81 +:100B60009091B900987F81E0983209F480E008956F +:100B700084E88093BC008091BC0087FFFCCF80910B +:100B8000BB00089580910001811115C080E40E948E +:100B90007D058093000181110CC082E10E94A705B0 +:100BA00080930001811105C08FEF0E94A7058093FB +:100BB00000010E949F0584B1807F84B985B1807F48 +:100BC00085B98AB1837F8AB98BB1837F8BB93E980F +:100BD000469808950E942805809300010E94C2054E +:100BE00080B38C7080BB81B3836F81BBECE4F1E098 +:100BF000AEE3B1E011921D9281E0EA35F807D1F73A +:100C00000C941205BF92CF92DF92EF92FF920F9356 +:100C10001F93CF93DF9380910001882379F0809117 +:100C20003D018F5F80933D01811108C00E9428051E +:100C300080930001811102C00E94BA040EE311E00A +:100C4000C0E0D0E0DD24D39482E0C82EEE24E3940B +:100C5000F12CC73000F580910001811162C080E461 +:100C60000E947D0580930001811112C082E10E94E3 +:100C7000A7058093000181110BC0C7010C2E01C094 +:100C8000880F0A94EAF780950E94A70580930001D7 +:100C90000E949F0546C0CA30A1F028F4C83059F020 +:100CA000C93061F005C0CC3089F070F0CD3089F0EA +:100CB000209A289810C0219A29980DC0229A2A9823 +:100CC0000AC0239A2B9807C0529A01C0539A5B9886 +:100CD00002C03E9A4698E0EAEA95F1F78FB1799919 +:100CE0005AC092E081708D25892B7C9B02C090E0D8 +:100CF00001C094E0892B7D9B02C090E001C098E088 +:100D0000892B7E9B02C090E001C090E1892B9FB1AE +:100D10009095991F9927991F9295990F907E892BED +:100D20000FC08091000181114BC080E40E947D05BD +:100D300080930001882389F1B12C0E949F058B2D9F +:100D4000F8019081981719F08083C09201010E94E8 +:100D5000C20521960F5F1F4FCE30D10509F079CF24 +:100D600080910101882371F18150809301018823D2 +:100D700039F08FE99FE00197F1F700C0000022C031 +:100D8000ACE4B1E0EEE3F1E081918D9391E0EC34DD +:100D9000F907D1F717C090E0A5CF83E10E94A7051E +:100DA000809300018111C8CF81E40E947D0580936A +:100DB00000018111C1CF0E94B805B82EB094BDCFFB +:100DC00080E0BECF0E94B80481E0DF91CF911F91F7 +:100DD0000F91FF90EF90DF90CF90BF900895E82F94 +:100DE000F0E0E45BFE4F808108950895089596E059 +:100DF000799FF001112494E5899FE00DF11D1124E4 +:100E0000E60FF11DEE0FFF1FE05EFE4F85919491FE +:100E10000895880F991F84589040FC018591949102 +:100E20000895880F991F84509F4FFC0185919491DC +:100E300008950F931F93CF93DF93EC01811520E367 +:100E4000920730F5811530E2930708F0B1C08B3B73 +:100E5000910588F4883A910508F058C0853A9105C3 +:100E600008F049C08430910508F043C081309105F5 +:100E700009F4B2C1AEC18F3F910509F0D0F5803FB2 +:100E8000910508F092C0805E9109089790F1A1C188 +:100E9000C11581E5D807A8F4C23090E5D90708F05C +:100EA0009FC0C11520E5D20709F486C008F092C0A2 +:100EB000C11580E4D80708F08CC18E011127106C91 +:100EC000CCC1C11590E8D90758F4C11520E7D20765 +:100ED00008F07BC1C11530E6D30708F423C179C1FE +:100EE000C11580E9D80708F074C18E011F70106A1F +:100EF000B4C18E01B2C1853A910509F470C1863A38 +:100F0000910509F46FC103E810E4A7C1883A91057F +:100F100009F46BC1893A910509F46AC18A3A9105CD +:100F200009F469C18B3A910509F468C18C3A9105BD +:100F300009F467C18D3A910509F466C1803B9105BA +:100F400009F465C18E3A910509F464C18F3A91059F +:100F500009F463C1813B910509F462C1823B9105AB +:100F600009F461C1833B910509F460C1843B91059B +:100F700009F45FC1853B910509F45EC1863B91058B +:100F800009F45DC1873B910509F45CC1883B91057B +:100F900009F45BC1893B910509F45AC18A3B91056B +:100FA00009F059C10AE216E458C18C01106555C117 +:100FB0009F700E94110752C10E944C169FEF24E3BC +:100FC0003CE0915020403040E1F700C000000E941A +:100FD000641D43C18091D50181608093D5013DC1DD +:100FE0000E940C1F811102C00E94F21E0E94291F44 +:100FF00090E09093F6018093F501C23080E5D80728 +:1010000021F48091F501816086C0C43090E5D90754 +:1010100021F48091F50182607EC0C63020E5D207C0 +:1010200021F48091F501846076C0C83030E5D307A3 +:1010300019F48091F50127C0CA3080E5D80721F462 +:101040008091F501806167C0CC3090E5D90721F42B +:101050008091F50180625FC0CE3020E5D20721F497 +:101060008091F501806457C0C03130E5D30721F489 +:101070008091F50180684FC0C23180E5D80729F41E +:101080008091F5018460886046C0C33090E5D9073F +:1010900021F48091F5018E7F3EC0C53020E5D20756 +:1010A00021F48091F5018D7F36C0C73030E5D3073C +:1010B00021F48091F5018B7F2EC0C93080E5D807DF +:1010C00019F48091F50126C0CB3090E5D90721F4C1 +:1010D0008091F5018F7E1FC0CD3020E5D20721F42D +:1010E0008091F5018F7D17C0CF3030E5D30721F413 +:1010F0008091F5018F7B0FC0C13180E5D80721F4C5 +:101100008091F5018F7707C0C331D04531F48091CC +:10111000F5018B7F877F8093F5018091F5010E9417 +:101120002D1F9BC08D2F99278F7099278130910596 +:10113000E9F48E01037011279C0102C0220F331FB6 +:101140000A95E2F789011C68CE0164E0880F991FB7 +:101150006A95E1F788279370082B192B73E0CC0F61 +:10116000DD1F7A95E1F7C076DD272CC0823091052E +:1011700029F41C2F0027016F106A6FC0833091057E +:1011800061F4CE018370992701E010E002C0000FE6 +:10119000111F8A95E2F71C680EC0049709F05DC024 +:1011A000CE018370992701E010E002C0000F111FEB +:1011B0008A95E2F71A6843E0CC0FDD1F4A95E1F704 +:1011C000C07ED7700C2B1D2B48C08E011F70106283 +:1011D00044C000E010E041C001E010E03EC001E882 +:1011E00010E43BC002E810E438C002EE14E435C05D +:1011F00009EE14E432C00AEE14E42FC005EB14E447 +:101200002CC006EB14E429C007EB14E426C00CEC58 +:1012100014E423C00DEC14E420C003E815E41DC061 +:101220000AE815E41AC002E915E417C004E915E458 +:1012300014C001E216E411C003E216E40EC004E299 +:1012400016E40BC005E216E408C006E216E405C089 +:1012500007E216E402C000E014E4C801DF91CF9178 +:101260001F910F91089596E0799FF001112494E564 +:10127000899FE00DF11D1124E60FF11DEE0FFF1FF8 +:10128000E05EFE4F85919491803E9105E0F4803CB4 +:10129000910558F58133910509F46FC048F48932FE +:1012A000910509F463C08A32910509F46DC072C0DA +:1012B00089339105E9F082389105D1F085339105A4 +:1012C00009F44DC067C0833E910581F138F4803E3A +:1012D0009105B9F0823E9105D9F05CC0863E91053A +:1012E00061F1873E9105A1F155C00E94090708955B +:1012F0002091F50120FD02C021FF4CC080EE90E05E +:1013000049C08091F50180FFF9CF89E390E042C0A8 +:101310008091F50182FF0EC08091F50184FF03C02A +:1013200080E090E037C083EE90E034C08091F5011A +:1013300082FFF2CF82EE90E02DC08091F50183FF15 +:101340000BC08091F50184FDEBCF87EE90E022C0C9 +:101350008091F50183FFF5CF86EE90E01BC0809170 +:10136000F50185FF07C089E290E014C08091F50186 +:1013700085FFF9CF85E390E00DC08091F50186FFF0 +:1013800007C08AE290E006C08091F50186FFF9CFA0 +:1013900081E390E00E941907089508950C94CD0907 +:1013A00080916A010895CF93DF9300D01F92CDB74B +:1013B000DEB72091EC01243019F523E029839B83CB +:1013C0008A832093E9008FEF9091E800815095FD8A +:1013D00006C095ED9A95F1F700008111F5CF809147 +:1013E000E80085FF0DC040E050E063E070E0CE0112 +:1013F00001960E943D0C8091E8008E778093E80072 +:101400000F900F900F90DF91CF910895CF93DF93BE +:1014100000D01F92CDB7DEB72091EC01243021F52A +:1014200022E029839B838A8383E08093E9008FEF06 +:101430009091E800815095FD06C095ED9A95F1F7E1 +:1014400000008111F5CF8091E80085FF0DC040E0DC +:1014500050E063E070E0CE0101960E943D0C809167 +:10146000E8008E778093E8000F900F900F90DF9147 +:10147000CF9108952091EC012430F1F422E02093E3 +:10148000E9002FEF3091E800215035FD06C035ED21 +:101490003A95F1F700002111F5CF2091E80025FFE2 +:1014A0000BC040E050E065E070E00E943D0C809190 +:1014B000E8008E778093E8000895CF93DF93EC01E6 +:1014C0008091EC01843009F046C090910C01992381 +:1014D000D9F090910D019923B9F08093E9008FEF35 +:1014E0009091E800815095FD06C095E19A95F1F73D +:1014F00000008111F5CF8091E80085FF2CC040E00D +:1015000050E060E170E017C081E08093E9008FEF68 +:101510009091E800815095FD06C095ED9A95F1F700 +:1015200000008111F5CF8091E80085FF14C040E0F4 +:1015300050E068E070E0CE010E943D0C8091E80030 +:101540008E778093E80080E1FE01AAE5B1E001908A +:101550000D928A95E1F7DF91CF9108958091EB018B +:10156000811109C00E94CF0D0E942C0E8091E200D3 +:1015700084608093E20008951092EB01089508952D +:101580000C9488230E94FB1C0E948E230E94C91089 +:101590000C94CE0942E061EC81E00E94490D42E0EA +:1015A00061EC82E00E94490D42E061EC83E00E9420 +:1015B000490D42E161EC84E00C94490D8091EE010B +:1015C000833009F455C030F4813071F0823009F471 +:1015D0008EC008958A3009F47AC08B3009F460C057 +:1015E000893009F09CC020C08091ED01813A09F05A +:1015F00096C08091E800877F8093E8008091F10198 +:101600009091F201892B21F060E080E090E003C02E +:1016100060E18AE591E070E00E94860C8091E8002C +:101620008B778093E80008958091ED01813209F075 +:1016300076C08091F1019091F201009719F0039723 +:1016400009F06DC08091E800877F8093E800809169 +:10165000E80082FD05C08091EC018111F8CF5FC0E8 +:101660008091F10080936A018091E8008B7753C0EC +:101670008091ED01813A09F052C08091F101909181 +:10168000F201892B09F04BC08091E800877F80939D +:10169000E8008091E80080FFFCCF80910C0136C00B +:1016A0008091ED018132D9F58091F1019091F201A3 +:1016B000892BA9F58091E800877F8093E8000E943C +:1016C0007E0D8091EF0180930C010C944C1680915B +:1016D000ED01813221F58091E800877F8093E80059 +:1016E0000E947E0D8091F00180936B01089580919E +:1016F000ED01813AA1F48091E800877F8093E800B2 +:101700008091E80080FFFCCF80916B018093F10015 +:101710008091E8008E778093E8000C947E0D089508 +:1017200084B7877F84BF88E10FB6F8948093600008 +:10173000109260000FBE90E080E80FB6F89480939E +:101740006100909361000FBE0E9418110E94CF0D9E +:101750000E942C0E8091E20084608093E2007894D5 +:101760000E94A7100E941A1182E091E00E94C4100A +:101770000E9476238091EC01853069F40E94BB1CA5 +:101780008091EA018823B1F30E94E61C882391F33B +:101790000E94270CEFCF0E942011ECCF292F332776 +:1017A00023303105A9F06CF42130310509F442C031 +:1017B0002230310509F043C08DE690E024EF33E09C +:1017C00042C021323105C9F02232310519F137C04A +:1017D00099278130910541F08230910541F0892BA4 +:1017E00071F5E0EFF3E005C0E8EDF3E002C0E0ECF6 +:1017F000F3E0849190E09F0126C0643000F5E62F6D +:10180000F0E0EE0FFF1FEE5DFE4F2081318189E099 +:1018100090E019C0643098F4E62FF0E0DF01AA0FE1 +:10182000BB1FA65EBE4F2D913C91EA5EFE4F8081AC +:1018300090E009C082E190E021E634E004C080E05D +:1018400090E020E030E0FA0131832083089580E1C8 +:1018500089BD82E189BD09B400FEFDCF8091D80029 +:101860008F7D8093D8008091E00082608093E000BB +:101870008091E00081FDFCCF0895CF92DF92EF923E +:10188000FF920F931F93CF93DF937C018B01EA01AB +:101890000E949F0D811131C0209731F0888199817C +:1018A000081B190BE80EF91EC12CD12C01151105CE +:1018B00019F18091E80085FD14C08091E8008E77D1 +:1018C0008093E800209741F0888199818C0D9D1DBF +:1018D0009983888385E011C00E949F0D882331F38E +:1018E0000CC0F70181917F018093F1000150110933 +:1018F000FFEFCF1ADF0ADACF80E0DF91CF911F919F +:101900000F91FF90EF90DF90CF9008952091F30119 +:101910003091F4012617370748F06115710539F445 +:101920002091E8002E772093E80001C0B901FC0166 +:1019300020E061157105B9F18091EC01882309F46B +:1019400040C0853009F43FC08091E80083FD3DC070 +:101950008091E80082FF06C08091E80082FF26C0E7 +:1019600080E008958091E80080FFE3CF2091F300AC +:101970008091F20090E0922B6115710551F0883052 +:10198000910538F421912093F1006150710901967D +:10199000F3CF21E0089709F020E08091E8008E77EE +:1019A0008093E800C6CF2111C7CFD6CF8091EC013C +:1019B000882339F0853039F08091E80083FFCCCF5F +:1019C00004C082E0089583E0089581E008952091A5 +:1019D000F3013091F4012617370748F061157105BE +:1019E00039F42091E8002E772093E80001C0B90176 +:1019F000FC0120E061157105C1F18091EC018823A3 +:101A000009F441C0853009F440C08091E80083FDAD +:101A10003EC08091E80082FF06C08091E80082FF0E +:101A200027C080E008958091E80080FFE3CF2091F7 +:101A3000F3008091F20090E0922B6115710559F04E +:101A40008830910540F424912093F1003196615043 +:101A500071090196F2CF21E0089709F020E080910A +:101A6000E8008E778093E800C5CF2111C6CFD5CF8F +:101A70008091EC01882339F0853039F08091E800BD +:101A800083FFCBCF04C082E0089583E0089581E016 +:101A90000895982F973058F59093E900981739F0EA +:101AA0007091EC002091ED005091F00003C0242FC4 +:101AB000762F50E021FF19C03091EB003E7F30932C +:101AC000EB003091ED003D7F3093ED003091EB0065 +:101AD00031603093EB007093EC002093ED00509355 +:101AE000F0002091EE0027FF07C09F5FD3CF8F70DB +:101AF0008093E90081E0089580E008958091ED01F0 +:101B000087FD05C08091E80080FF0EC012C0809163 +:101B1000E80082FD05C08091EC018111F8CF0895A5 +:101B20008091E8008B7708C08091EC018111EACFA9 +:101B300008958091E8008E778093E8000895809161 +:101B4000E4009091E50045E62091EC0020FF21C0E3 +:101B50002091E80020FD21C02091EC01222389F092 +:101B6000253089F02091EB0025FD0FC02091E40085 +:101B70003091E5002817390739F3415041F0C90188 +:101B8000E3CF82E0089583E0089581E0089584E042 +:101B900008952091E80022FFDFCF80E008950E94A1 +:101BA0003D0E0E94450EE0EEF0E080818160808372 +:101BB000E8EDF0E080818F77808319BCA7EDB0E07D +:101BC0008C918E7F8C9380818F7E80831092EB012D +:101BD00008950F931F93CF93DF930E943D0E0E94B1 +:101BE000450EC8EDD0E088818F7788838881806832 +:101BF000888388818F7D888319BC1092EC011092B4 +:101C0000E8011092EA011092E90100EE10E0F801FB +:101C100080818B7F808388818160888342E060E05F +:101C200080E00E94490DE1EEF0E080818E7F8083AC +:101C3000E2EEF0E080818160808380818860808333 +:101C4000F80180818E7F8083888180618883DF9125 +:101C5000CF911F910F910895E8EDF0E080818F7E84 +:101C60008083E7EDF0E080818160808384E082BF43 +:101C700081E08093EB010C94E90DE8EDF0E08081C8 +:101C80008E7F80831092E20008951092DA00109205 +:101C9000E10008951F920F920FB60F9211242F9317 +:101CA0003F934F935F936F937F938F939F93AF93E4 +:101CB000BF93EF93FF938091E10082FF0BC080916F +:101CC000E20082FF07C08091E1008B7F8093E100FA +:101CD0000E94A6108091DA0080FF1FC08091D8007A +:101CE00080FF1BC08091DA008E7F8093DA008091A4 +:101CF000D90080FF0DC080E189BD82E189BD09B4B2 +:101D000000FEFDCF81E08093EC010E94AE0A05C089 +:101D100019BC1092EC010E94BC0A8091E10080FF86 +:101D200019C08091E20080FF15C08091E2008E7F93 +:101D30008093E2008091E20080618093E2008091D4 +:101D4000D80080628093D80019BC85E08093EC01B4 +:101D50000E94C00A8091E10084FF30C08091E200BF +:101D600084FF2CC080E189BD82E189BD09B400FEF9 +:101D7000FDCF8091D8008F7D8093D8008091E100C5 +:101D80008F7E8093E1008091E2008F7E8093E2005D +:101D90008091E20081608093E2008091E8018823D5 +:101DA00011F084E007C08091E30087FF02C083E068 +:101DB00001C081E08093EC010E94C20A8091E100A1 +:101DC00083FF29C08091E20083FF25C08091E1005C +:101DD000877F8093E10082E08093EC011092E8011C +:101DE0008091E1008E7F8093E1008091E2008E7F00 +:101DF0008093E2008091E20080618093E20042E003 +:101E000060E080E00E94490D8091F000886080933E +:101E1000F0000E94BF0AFF91EF91BF91AF919F9197 +:101E20008F917F916F915F914F913F912F910F9083 +:101E30000FBE0F901F9018951F920F920FB60F9222 +:101E400011242F933F934F935F936F937F938F93BF +:101E50009F93AF93BF93CF93EF93FF93C091E9000C +:101E6000CF708091EC001092E9008091F000877FA4 +:101E70008093F00078940E94580F1092E9008091AE +:101E8000F00088608093F000C093E900FF91EF912B +:101E9000CF91BF91AF919F918F917F916F915F9102 +:101EA0004F913F912F910F900FBE0F901F9018955B +:101EB0001F93CF93DF93CDB7DEB7AA970FB6F894F1 +:101EC000DEBF0FBECDBFEDEEF1E08091F10081935A +:101ED00021E0E53FF207C9F70E94DE0A8091E800A1 +:101EE00083FF1CC12091ED013091EE01832F90E022 +:101EF0008A30910508F012C1FC01EC59FF4F0C9497 +:101F00001025203881F0223809F008C18091F101B4 +:101F10008F708093E9008091EB0085FB882780F922 +:101F20001092E90006C08091E9019091EA019111B7 +:101F300082609091E800977F9093E8008093F10091 +:101F40001092F100C5C0822F8D7F09F0E7C02223D7 +:101F500019F0223061F0E2C08091EF01813009F088 +:101F6000DDC0333009F080E08093EA0128C0809121 +:101F7000EF01811124C02091F1012F7009F4CEC02E +:101F80002093E9008091EB0080FF19C08091EB0065 +:101F9000333011F4806211C080618093EB0081E0E6 +:101FA00090E0022E01C0880F0A94EAF78093EA00BD +:101FB0001092EA008091EB0088608093EB00109211 +:101FC000E9008091E800877F86C02111A7C01091A9 +:101FD000EF011F778091E3008078812B8093E300ED +:101FE0008091E800877F8093E8000E947E0D8091B9 +:101FF000E80080FFFCCF8091E30080688093E300DD +:10200000112311F083E001C082E08093EC0186C0CF +:102010002058223008F082C08091EF019091F001A9 +:102020008C3D23E0920779F583E08A838AE28983F5 +:102030004FB7F894DE01139620E03EE051E2E32F23 +:10204000F0E050935700E49120FF03C0E295EF7059 +:102050003F5FEF708E2F90E0EA3010F0C79601C01E +:10206000C0968D939D932F5F243149F74FBF809188 +:10207000E800877F8093E8006AE270E0CE01019675 +:102080000E94860C14C0AE014F5F5F4F6091F1015A +:102090000E94CE0B009709F441C02091E800277FF1 +:1020A0002093E800BC0189819A810E94E70C80910D +:1020B000E8008B778093E80031C0203879F5809173 +:1020C000E800877F8093E8008091E8018093F10029 +:1020D0008091E8008E778093E8000E947E0D1EC0FC +:1020E00021111CC09091EF019230C0F48091E80062 +:1020F000877F8093E8009093E8010E947E0D809195 +:10210000E801811104C08091E30087FF02C084E0F0 +:1021100001C081E08093EC010E94CA0A8091E8002E +:1021200083FF0AC08091E800877F8093E800809158 +:10213000EB0080628093EB00AA960FB6F894DEBFA6 +:102140000FBECDBFDF91CF911F9108950895CF931A +:102150008091EC018823B1F08091E9008F7090911B +:10216000EC0090FF02C090E801C090E0C92FC82B9E +:102170001092E9008091E80083FD0E94580FCF7013 +:10218000C093E900CF9108959093710180937001FD +:102190000895E0917001F0917101309721F0019064 +:1021A000F081E02D099480E00895E0917001F091B4 +:1021B0007101309721F00280F381E02D0994089598 +:1021C000E0917001F0917101309721F00480F58168 +:1021D000E02D0994089520916E0130916F018217CE +:1021E000930771F090936F0180936E01E0917001FD +:1021F000F0917101309721F00680F781E02D09946C +:10220000089520916C0130916D018217930771F050 +:1022100090936D0180936C01E0917001F0917101D8 +:10222000309721F00084F185E02D099408950895F8 +:102230000C9417110E94011D0E94EA050C94C71D01 +:10224000CF92DF92EF92FF920F931F93CF93DF9382 +:10225000CDB7DEB72B970FB6F894DEBF0FBECDBF5C +:102260000E94020633E7E32E31E0F32E00E010E097 +:10227000C02E802F0E94EF06F701D1907F01D82653 +:10228000B1F40F5F1F4F0E30110591F78FEF898367 +:102290008A831B820E940A1D8160782F9D838C8314 +:1022A00049815A816B818D810E94C31141C09091F7 +:1022B000D50191FF04C08B870E94F5068B8520E035 +:1022C00030E04D2D50E0922FBA01022E02C07595DC +:1022D00067950A94E2F760FF25C02E83CF82EE2433 +:1022E000E394F12C02C0EE0CFF1C9A95E2F790E00B +:1022F0008E219F2121E0892B09F420E028870E946C +:102300000A1D8160782F9A8789874E815F81688551 +:102310008A850E94C311F801ED58FE4F80818E25F9 +:10232000808306C02F5F3F4F2630310561F6A9CF6D +:102330000E94AB20109172010E94C9101817A1F0E1 +:102340000E94C910809372012B960FB6F894DEBFDD +:102350000FBECDBFDF91CF911F910F91FF90EF90F6 +:10236000DF90CF900C94CE092B960FB6F894DEBF79 +:102370000FBECDBFDF91CF911F910F91FF90EF90D6 +:10238000DF90CF900895CF93DF93CDB7DEB72B9733 +:102390000FB6F894DEBF0FBECDBF4F835887698755 +:1023A0007A878B87DE01119686E0FD0111928A956E +:1023B000E9F785E0FE01379601900D928A95E1F7E5 +:1023C00049815A816B817C818D819E810E9418197F +:1023D0002B960FB6F894DEBF0FBECDBFDF91CF9125 +:1023E00008950895CF93C82F882309F4C1C0823877 +:1023F00059F40E94C91081FDBBC089E30E94C21B31 +:102400000E948C1C89E30CC0833879F40E94C910A7 +:1024100080FDAEC083E50E94C21B0E948C1C83E538 +:102420000E94021CCF910C948C1C843859F40E9499 +:10243000C91082FD9DC087E40E94C21B0E948C1CB3 +:1024400087E4EECF8CEF8C0F813A48F48C2F0E94FA +:10245000DE2281118DC08C2F0E94C21BE3CF80E24F +:102460008C0F883048F4C77081E001C0880FCA958E +:10247000EAF70E94431CD6CF8BE58C0F833078F4AB +:10248000C53A29F0C63A31F482E890E005C081E807 +:1024900090E002C083E890E0CF910C94EB1088E5C7 +:1024A0008C0F833108F064C0C83A39F1C93A41F160 +:1024B000CA3A49F1CB3A51F1CC3A59F1CD3A61F1EE +:1024C000C03B69F1CE3A71F1CF3A79F1C13B81F16C +:1024D000C23B89F1C33B91F1C43B99F1C53BA1F1EA +:1024E000C63BA9F1C73BB1F1C83BB9F1C93BC1F14A +:1024F000CA3BC9F58AE292E038C082EE90E035C06E +:1025000089EE90E032C08AEE90E02FC085EB90E03B +:102510002CC086EB90E029C087EB90E026C08CECC5 +:1025200090E023C08DEC90E020C083E891E01DC0D6 +:102530008AE891E01AC082E991E017C084E991E04D +:1025400014C081E292E011C083E292E00EC084E206 +:1025500092E00BC085E292E008C086E292E005C0FE +:1025600087E292E002C080E090E0CF910C940111EC +:10257000CF910895882309F44BC0823859F40E9402 +:10258000C91081FF45C089E30E94C21B0E948C1CB8 +:1025900089E30CC0833871F40E94C91080FF38C0F1 +:1025A00083E50E94C21B0E948C1C83E50E94021CD2 +:1025B0000C948C1C843859F40E94C91082FF28C0E6 +:1025C00087E40E94C21B0E948C1C87E4EFCF9CEF23 +:1025D000980F913A58F390E2980F983050F4877022 +:1025E00091E001C0990F8A95EAF7892F0E94491C52 +:1025F000DFCF9BE5980F933020F480E090E00C94BF +:10260000EB10885A833120F480E090E00C940111A3 +:102610000895882321F00E94431C0C948C1C08957B +:10262000882321F00E94491C0C948C1C0895CF92A1 +:10263000DF92EF92FF920F931F93CF93DF93CDB76B +:10264000DEB728970FB6F894DEBF0FBECDBF8C0162 +:1026500085E0F801DE01119601900D928A95E1F76F +:10266000F801D080E180F280558152955F7023811E +:102670003481232B39F0FFEFEF1206C081E0DF1227 +:1026800003C003C081E001C080E080FDE2C2C80158 +:102690005F830E94F111D982EA8269817A818F2D4C +:1026A0000E94BE1B9E8388870E94721B0E94451A4F +:1026B0004E815F816885FF2029F00E94601C68853B +:1026C0005F814E81E42FE295EF70F0E0E259FF4F19 +:1026D0000C941025842F807F142F1F70882311F0F5 +:1026E0001295107FFF20B1F0112309F467C280E238 +:1026F000860F883028F4812F68870E94431C04C00D +:10270000812F68870E94531C688568870E948C1CF3 +:10271000688554C2862F68870E94BA126885112383 +:1027200009F497C2605E812F683018F40E94491C3A +:1027300002C00E94591C28960FB6F894DEBF0FBE47 +:10274000CDBFDF91CF911F910F91FF90EF90DF9060 +:10275000CF900C948C1C242F207F842F8F702032DC +:1027600011F08295807F662319F0613019F12BC03A +:10277000FF20B1F0552309F493C1513009F090C105 +:1027800028960FB6F894DEBF0FBECDBFDF91CF9174 +:102790001F910F91FF90EF90DF90CF900C94731CDE +:1027A000552319F0513009F454C28E830E94761CCF +:1027B0008E8189C1FF2021F0523008F04AC270C1D9 +:1027C000511147C280C1FF2021F0552309F468C18F +:1027D000F5C1552309F477C105C2242F2695269506 +:1027E000237030E02115310521F021303105C9F089 +:1027F00030C2FF2021F0862F942F937002C080E01A +:1028000090E028960FB6F894DEBF0FBECDBFDF91E3 +:10281000CF911F910F91FF90EF90DF90CF900C948C +:10282000EB10FF2021F0862F942F937002C080E0E0 +:1028300090E028960FB6F894DEBF0FBECDBFDF91B3 +:10284000CF911F910F91FF90EF90DF90CF900C945C +:102850000111862FFF2019F00E94B31F02C00E94B1 +:102860001B2028960FB6F894DEBF0FBECDBFDF91B8 +:10287000CF911F910F91FF90EF90DF90CF900C942C +:10288000A020842F837009F076C0F110E2C1262FBA +:10289000229526952770220F220F862F8F70C82E23 +:1028A000D12CE12CF12C022E04C0CC0CDD1CEE1C32 +:1028B000FF1C0A94D2F764FF10C06FE070E080E064 +:1028C00090E004C0660F771F881F991F2A95D2F7E2 +:1028D000609570958095909503C060E070E0CB01A5 +:1028E000242F269526952370422F50E04230510523 +:1028F000D1F04330510559F16C297D298E299F294A +:102900004130510541F128960FB6F894DEBF0FBE55 +:10291000CDBFDF91CF911F910F91FF90EF90DF908E +:10292000CF900C946A1A6C297D298E299F292896AC +:102930000FB6F894DEBF0FBECDBFDF91CF911F91D0 +:102940000F91FF90EF90DF90CF900C94841A0E942B +:102950006A1AC701B60128960FB6F894DEBF0FBEFB +:10296000CDBFDF91CF911F910F91FF90EF90DF903E +:10297000CF900C94501AFF2019F0842F817001C061 +:102980008695882309F465C1262F22952695277000 +:10299000220F220F862F8F70C82ED12CE12CF12C04 +:1029A000022E04C0CC0CDD1CEE1CFF1C0A94D2F7D6 +:1029B00064FF10C06FE070E080E090E004C0660F3C +:1029C000771F881F991F2A95D2F76095709580957B +:1029D000909503C060E070E0CB01242F26952695EA +:1029E0002370422F50E042305105D1F04330510561 +:1029F00059F16C297D298E299F294130510541F1DA +:102A000028960FB6F894DEBF0FBECDBFDF91CF91F1 +:102A10001F910F91FF90EF90DF90CF900C943E1B91 +:102A20006C297D298E299F2928960FB6F894DEBF40 +:102A30000FBECDBFDF91CF911F910F91FF90EF900F +:102A4000DF90CF900C94581B0E943E1BC701B6012B +:102A500028960FB6F894DEBF0FBECDBFDF91CF91A1 +:102A60001F910F91FF90EF90DF90CF900C94241B5B +:102A7000603FC9F118F4603E50F49BC0623F09F416 +:102A800060C008F44AC0633F09F46FC092C0162FBB +:102A90001F70842F8F71FF2099F00E94BD1A812F23 +:102AA00028960FB6F894DEBF0FBECDBFDF91CF9151 +:102AB0001F910F91FF90EF90DF90CF900C9409132E +:102AC0000E94DE1A812F28960FB6F894DEBF0FBE43 +:102AD000CDBFDF91CF911F910F91FF90EF90DF90CD +:102AE000CF900C941013FF20A1F05111B2C0842F8D +:102AF0008F7128960FB6F894DEBF0FBECDBFDF9161 +:102B0000CF911F910F91FF90EF90DF90CF900C9499 +:102B1000031B523008F09DC0EACFFF20A1F0842FA4 +:102B20008F7128960FB6F894DEBF0FBECDBFDF9130 +:102B3000CF911F910F91FF90EF90DF90CF900C9469 +:102B4000BD1AFF2061F3842F8F7128960FB6F89479 +:102B5000DEBF0FBECDBFDF91CF911F910F91FF90D0 +:102B6000EF90DF90CF900C94DE1AFF2091F0842F2D +:102B70008F7128960FB6F894DEBF0FBECDBFDF91E0 +:102B8000CF911F910F91FF90EF90DF90CF900C9419 +:102B9000A81A28960FB6F894DEBF0FBECDBFDF91FE +:102BA000CF911F910F91FF90EF90DF90CF900C94F9 +:102BB0009E1AFF20A1F0552309F4B1CF862F289645 +:102BC0000FB6F894DEBF0FBECDBFDF91CF911F913E +:102BD0000F91FF90EF90DF90CF900C94F21155235E +:102BE00009F4B1CF862F28960FB6F894DEBF0FBE3A +:102BF000CDBFDF91CF911F910F91FF90EF90DF90AC +:102C0000CF900C94BA124F70C8010E941D032896F1 +:102C10000FB6F894DEBF0FBECDBFDF91CF911F91ED +:102C20000F91FF90EF90DF90CF900C94C5194F70EB +:102C3000C80128960FB6F894DEBF0FBECDBFDF9156 +:102C4000CF911F910F91FF90EF90DF90CF900C9458 +:102C5000F60628960FB6F894DEBF0FBECDBFDF9103 +:102C6000CF911F910F91FF90EF90DF90CF9008953B +:102C70000E94601C0E94701C0E94351C0E948C1CCB +:102C80000E944C210E94A02080E090E00E94EB1066 +:102C900080E090E00C9401110E94501C0C943816B6 +:102CA0000E94B31B292F22952F7030E02C30310564 +:102CB0004CF42A3031056CF42250310922303105B0 +:102CC00090F407C02C30310551F02F30310539F028 +:102CD0000AC0803E10F0803F31F481E0089593FBFC +:102CE000882780F9089580E00895CF93DF9300D07E +:102CF00000D01F92CDB7DEB70F900F900F900F90BE +:102D00000F90DF91CF910895CF93DF9300D000D043 +:102D100000D0CDB7DEB726960FB6F894DEBF0FBE53 +:102D2000CDBFDF91CF9108951F93CF93DF93C091D3 +:102D3000810116E080918201C81799F0D0E01C9FB4 +:102D4000F0011D9FF00D1124ED57FE4F4081518180 +:102D500062817381848195810E9484162196C77057 +:102D6000E9CFDF91CF911F9108954091B301509128 +:102D7000B4016091B5017091B6018091B701909155 +:102D8000B8010C948416CF938091B80182958F700E +:102D900009F05FC08091B501882309F45AC02091E1 +:102DA0008101A09182016091B3017091B401809181 +:102DB000B6019091B70131E06F3F09F030E0B32FD9 +:102DC000C6E02A1709F445C0009721F07F3F21F49F +:102DD0004B2F03C041E001C040E030E040FD35C072 +:102DE000C29FF001C39FF00D1124ED57FE4F4181AA +:102DF00074132BC04081641328C04281411125C047 +:102E0000438154814817590710F441505109481B18 +:102E1000590B483C5105C8F48091B8018F7080610E +:102E20008093B80186E0829FF001839FF00D11240A +:102E3000E857FE4F80818F708061808383EB91E043 +:102E40000E941713CF910C9494162F5F3F4F277059 +:102E5000B8CFCF910895CF92DF92EF92FF920F9368 +:102E60001F93CF93DF93CDB7DEB762970FB6F89479 +:102E7000DEBF0FBECDBF8C0185E0F801DE011D96DF +:102E800001900D928A95E1F7D8014C9111965C91D1 +:102E9000119712966C9112971396ED90FC901497DF +:102EA0007091B301E091B4012091B6013091B70166 +:102EB0002115310531F0EF3F31F481E07F3F19F406 +:102EC00003C081E001C080E0B82FB170CB2E80FD3F +:102ED0006CC1D090B501DD2009F4F5C0F091B801C6 +:102EE000E216F30638F0C701821B930B883C91056C +:102EF00048F09BC0209530952E0D3F1D283C310594 +:102F000008F093C08F2F807F09F052C0E51314C0E2 +:102F1000741312C0D62E61110FC0FF70F061F093D0 +:102F2000B8010E94B51683EB91E00E9417138091BF +:102F3000B801F80185836CC1EF2831F05F3F31F4AF +:102F400081E04F3F19F403C081E001C080E080FDC3 +:102F500003C081E0862701C080E0F82FF170FF2ECA +:102F600080FF1CC0809181012091820136E0821790 +:102F700009F428C190E0389FF001399FF00D112429 +:102F8000ED57FE4F7181571306C07081471303C080 +:102F90007281671303C001968770E9CFD62E66232E +:102FA00009F436C18091B80181608093B80153C0A3 +:102FB000E51308C0741306C0611104C0D80115964A +:102FC000FC93AEC04D875E878D859E856A8B0E947F +:102FD00050166A89882329F1D62E662311F1209193 +:102FE000B801822F82958F7090E002970CF460C038 +:102FF0008091B3019091B40198878F831986FB86E5 +:10300000EA862C87CE01079651C0E51731F14D872E +:103010005E878D859E856A8B0E9450166A89811114 +:103020002EC0C8010E941713A4C08F2F807F69F79C +:103030007E2DF98AE88A89890E94751683EB91E0D2 +:103040000E941713E3EBF1E086E0DF011D928A9501 +:10305000E9F70E94B516D12CDBC07413D8CF6111EB +:10306000D6CFD8011596FC93C8010E941713E3EB45 +:10307000F1E086E0DF011D928A95E9F7C9C0D62EFE +:10308000662379F22091B801822F82958F7090E0AB +:10309000029774F08091B3019091B4019A8389836F +:1030A0001B82FD82EC822E83CE0101960E941713B3 +:1030B00086E0F801A3EBB1E001900D928A95E1F76B +:1030C0000E94C3166FC0E216F30628F0C701821BE8 +:1030D000930B9C0104C0209530952E0D3F1D283C7C +:1030E000310508F052C0D62E662309F49ACFE513B5 +:1030F0002CC074132AC08091B80180FD1DC0982F88 +:1031000092959F70C9F0D80115968C9315979F30B2 +:1031100039F09F5F9295907F8F70892B15968C93D5 +:10312000C8010E94171386E0F801A3EBB1E00190FB +:103130000D928A95E1F736C086E0F801A3EBB1E085 +:1031400001900D928A95E1F763C04D875E878D856A +:103150009E850E945016882379F086E0F801A3EB43 +:10316000B1E001900D928A95E1F70E94C3160E948A +:10317000B516DD24D3944CC08091B8018160809352 +:10318000B801C8010E94171343C07E2DF98AE88A4E +:1031900089890E947516E3EBF1E086E0DF011D925C +:1031A0008A95E9F70E94B51633C0662309F439CF32 +:1031B0004D875E878D859E850E945016882309F471 +:1031C00030CFCBCF4D875E878D859E850E94B31B08 +:1031D000292F22952F7030E0223031052CF49F707A +:1031E00041F0811106C00CC0243031052CF49F70D1 +:1031F00049F4805E883020F0C8010E941713CF2C5C +:10320000DC2C06C0D80115969C91907F91F7F8CFE1 +:103210008D2D62960FB6F894DEBF0FBECDBFDF9145 +:10322000CF911F910F91FF90EF90DF90CF90089575 +:103230001F93CF93DF93CDB7DEB72C970FB6F894DB +:10324000DEBF0FBECDBF4F83588769877A878B87D4 +:103250009C87CE0107960E942B178823C1F02F81EF +:1032600038858A859B85892B31F03F3F11F080E0BE +:1032700003C02F3FE1F781E0811147C04F8158859E +:1032800069857A858B859C850E9484163EC086E080 +:10329000FE013796DE01119601900D928A95E1F7B5 +:1032A000FF81E8854A855B854115510531F0EF3F87 +:1032B00031F481E0FF3F19F403C081E001C080E0F8 +:1032C00080FD23C02091820130E0C9010196877002 +:1032D00099276091810170E086179707F1F1F983D2 +:1032E000EA835D834C8396E0929FD001939FB00D5B +:1032F0001124AD57BE4FFE01319601900D929A9563 +:10330000E1F7809382010E94941616E0809181017A +:1033100090918201891779F1189FC00111248D576E +:103320009E4F0E942B17882331F1E09181011E9F4F +:10333000F0011124ED57FE4F40815181628173816C +:10334000848195810E9484168091810190E001968C +:103350008770992780938101D9CF0E944C161092D3 +:10336000820110928101E3EBF1E086E0DF011D9222 +:103370008A95E9F7CACF2C960FB6F894DEBF0FBE38 +:10338000CDBFDF91CF911F910895EF92FF920F93E0 +:103390001F93CF93DF93FC01009709F46FC0F12CCA +:1033A000EE24E394EF0121968491843740F4843035 +:1033B00008F055C0813081F0823021F15FC085373F +:1033C00009F447C0C0F19CE7980F903708F056C049 +:1033D0008F770E94BA1245C08F010E5F1F4FFE010A +:1033E000849190E2980F983050F48770FE2D01C0C0 +:1033F000FF0F8A95EAF78F2F0E94631C15C00E9469 +:10340000F21114C08F010E5F1F4FFE01849190E2F4 +:10341000980F983068F48770FE2D01C0FF0F8A95D1 +:10342000EAF78F2F0E94691C0E948C1CE80119C0CA +:103430000E94BA12FBCFCF010296FE01C491CC23A9 +:1034400061F0EFE9FFE03197F1F700C00000C150F3 +:10345000F6CFCF010296FE01F490EC0102C00E946B +:10346000F2118F2D882341F0EFE9FFE03197F1F75A +:1034700000C000008150F6CFFE0194CFDF91CF91C4 +:103480001F910F91FF90EF90089508956093BD01F3 +:103490007093BE018093BF019093C0010C943816C5 +:1034A0000F931F930091BD011091BE012091BF01A8 +:1034B0003091C001062B172B282B392B0093BD010F +:1034C0001093BE012093BF013093C0011F910F9153 +:1034D0000C9438160F931F930091BD011091BE01FB +:1034E0002091BF013091C0010623172328233923DF +:1034F0000093BD011093BE012093BF013093C00122 +:103500001F910F910C9438160F931F930091BD01DA +:103510001091BE012091BF013091C00106271727ED +:10352000282739270093BD011093BE012093BF01C6 +:103530003093C0011F910F910C9438161092B9016D +:103540001092BA011092BB011092BC010C94381673 +:1035500041E050E060E070E004C0440F551F661F7A +:10356000771F8A95D2F74093B9015093BA016093BF +:10357000BB017093BC010C94381641E050E060E050 +:1035800070E004C0440F551F661F771F8A95D2F75D +:103590008091B9019091BA01A091BB01B091BC0199 +:1035A000842B952BA62BB72B8093B9019093BA014E +:1035B000A093BB01B093BC010C94381641E050E0DD +:1035C00060E070E004C0440F551F661F771F8A95A6 +:1035D000D2F740955095609570958091B901909182 +:1035E000BA01A091BB01B091BC0184239523A6230D +:1035F000B7238093B9019093BA01A093BB01B09314 +:10360000BC010C94381641E050E060E070E004C06A +:10361000440F551F661F771F8A95D2F78091B90115 +:103620009091BA01A091BB01B091BC01842795276C +:10363000A627B7278093B9019093BA01A093BB0145 +:10364000B093BC010C9438160F931F930091B901ED +:103650001091BA012091BB013091BC01062B172BB0 +:10366000282B392B0093B9011093BA012093BB0189 +:103670003093BC011F910F910C9438160F931F9338 +:103680000091B9011091BA012091BB013091BC01A8 +:1036900006231723282339230093B9011093BA0175 +:1036A0002093BB013093BC011F910F910C943816ED +:1036B0000F931F930091B9011091BA012091BB01A2 +:1036C0003091BC0106271727282739270093B90115 +:1036D0001093BA012093BB013093BC011F910F914D +:1036E0000C9438160895CF92DF92EF92FF920F93C9 +:1036F0001F93CF93DF93EC01C090BD01D090BE012A +:10370000E090BF01F090C0018091B9019091BA01A1 +:10371000A091BB01B091BC01C82AD92AEA2AFB2A90 +:103720000FE110E0B701A601002E04C07695679561 +:10373000579547950A94D2F740FD05C001501109ED +:1037400088F780E007C0BE01802F0E9433090197EF +:10375000A9F3802FDF91CF911F910F91FF90EF90F0 +:10376000DF90CF900895CF93DF93EC010E94731BFD +:10377000BE010E943309DF91CF910895CB010E94D1 +:10378000B31B089590910C019923D9F090910D01EC +:103790009923B9F0982F9695969596959F3088F530 +:1037A000E0910E01F0910F01E90FF11D877021E00A +:1037B00030E001C0220F8A95EAF78181822B818354 +:1037C000089540910E0150910F0120E030E09FEFED +:1037D000FA01E20FF31F6281681799F09F3F19F415 +:1037E000611101C0922F2F5F3F4F2E30310581F7BD +:1037F0009F3F39F0FA01E90FF11D97FDFA95828399 +:103800000895089590910C019923E1F090910D0194 +:103810009923C1F0982F9695969596959F3020F50F +:10382000E0910E01F0910F01E90FF11D877021E089 +:1038300030E001C0220F8A95EAF720958181282384 +:103840002183089540910E0150910F0120E030E056 +:10385000FA01E20FF31F9281981301C012822F5FC9 +:103860003F4F2E303105A1F7089581E090E0E091BF +:103870000E01F0910F01E80FF91F108201968031BF +:103880009105A9F708959091D401982B9093D401B4 +:10389000089580959091D40198239093D401089530 +:1038A0001092D40108959091D301982B9093D30155 +:1038B000089580959091D30198239093D301089512 +:1038C0001092D30108959091D201982B9093D20138 +:1038D000089580959091D20198239093D2010895F4 +:1038E0001092D20108958093C10108951092C101F0 +:1038F000089540910E0150910F0120E030E080E0EA +:10390000FA01E20FF31F918191118F5F2F5F3F4FFB +:103910002F303105A9F70895E0910E01F0910F01C4 +:103920008091D4018083E0910E01F0910F0180819C +:103930009091D301892B8083E0910E01F0910F01CA +:1039400080819091D201892B80839091C10199232C +:1039500061F0E0910E01F0910F018081892B80834D +:103960000E94791C81111092C10180910E019091E9 +:103970000F010C94D5108091EC01843021F110924C +:10398000D60120E488E190E00FB6F894A8958093E2 +:1039900060000FBE2093600080E00E94CE0983B7D4 +:1039A000817F846083BF83B7816083BF789488956B +:1039B00083B78E7F83BF88E10FB6F8948093600051 +:1039C000109260000FBE089508950895CF930E944D +:1039D000E41C0E9402060E94E51CC0E08C2F0E949D +:1039E000EF06811105C0CF5FCE30C1F780E001C086 +:1039F00081E0CF9108950E944C160E94C9100C944A +:103A0000CE0982E084BD93E095BD9AEF97BD809387 +:103A10006E0008952FB7F8948091D7019091D80146 +:103A2000A091D901B091DA012FBF0895CF92DF9212 +:103A3000EF92FF920F931F932FB7F8944091D70105 +:103A40005091D8016091D9017091DA012FBF6A01BC +:103A50007B01EE24FF248C0120E030E0C016D1066B +:103A6000E206F30610F441505109481B590BCA01F4 +:103A70001F910F91FF90EF90DF90CF9008951F92CC +:103A80000F920FB60F9211248F939F93AF93BF9312 +:103A90008091D7019091D801A091D901B091DA011C +:103AA0000196A11DB11D8093D7019093D801A093D9 +:103AB000D901B093DA01BF91AF919F918F910F908F +:103AC0000FBE0F901F9018950E94CF0DF8942FEF06 +:103AD00087EA91E6215080409040E1F700C0000065 +:103AE00087E090EBDC018093F6019093F701A093BF +:103AF000F801B093F9012CE088E190E00FB6F8945A +:103B0000A895809360000FBE20936000FFCFEF92D6 +:103B1000FF920F931F93CF93DF93E82EF12C8F2DFD +:103B20000E94EF06C0E0D0E0082F10E098010C2EB4 +:103B300002C0359527950A94E2F720FD05C021962D +:103B4000C630D10599F709C06C2F7F2D80E00E9407 +:103B5000F706E812F4CF81E005C0F3948EE0F81286 +:103B6000DECF80E0DF91CF911F910F91FF90EF901A +:103B70000895CF93C82F8CE20E94871D882321F0DF +:103B80008C2FCF910C94871D80E0CF910895CF9317 +:103B90000E940C1F811102C00E94F21EC5E6C15096 +:103BA00049F00E9402068FE39CE90197F1F700C0FB +:103BB0000000F5CF89E20E94B91D811111C18AE28E +:103BC0000E94B91D81110E94F21E85E00E94B91D5C +:103BD00081110E94641D0E94171F8093D50187E008 +:103BE0000E94B91D882399F18BE10E94B91D882399 +:103BF00051F09091D50191FB882780F921E082272F +:103C000080FB91F922C08EE00E94B91D882351F0FB +:103C10009091D50192FB882780F921E0822780FBD3 +:103C200092F913C080E10E94B91D9091D5018823BB +:103C300041F093FB882780F921E0822780FB93F9EC +:103C400004C0892F809580FB90F99093D5018091D5 +:103C5000D5010E941B1F0E94291F8093F50180EE51 +:103C60000E94B91D882341F08091F501982F90950D +:103C700090FB80F98093F50189E30E94B91D8823A8 +:103C800059F09091F50191FB882780F921E0822776 +:103C900080FB91F99093F50182EE0E94B91D882373 +:103CA00059F09091F50192FB882780F921E0822755 +:103CB00080FB92F99093F50186EE0E94B91D88234E +:103CC00059F09091F50193FB882780F921E0822734 +:103CD00080FB93F99093F50183EE0E94B91D882330 +:103CE00059F09091F50194FB882780F921E0822713 +:103CF00080FB94F99093F50185E30E94B91D882318 +:103D000059F09091F50195FB882780F921E08227F1 +:103D100080FB95F99093F50181E30E94B91D8823FA +:103D200059F09091F50196FB882780F921E08227D0 +:103D300080FB96F99093F50181E10E94B91D8823DB +:103D400059F09091F50197FB882780F921E08227AF +:103D500080FB97F99093F5018091F5010E942D1F4A +:103D60008091F50187FB882780F980930D0187E218 +:103D70000E94B91DC82F8EE10E94B91D8111C26039 +:103D80008FE10E94B91D8111C46080E20E94B91DBB +:103D90008111C86081E20E94B91D8111C06182E277 +:103DA0000E94B91D8111C06283E20E94B91D811178 +:103DB000C06484E20E94B91D882311F0C06802C06B +:103DC000CC2329F08C2F0E94241F6C2F03C00E944B +:103DD000201F682F70E080E090E0CF910C94461A8D +:103DE000CF9108956DEE7EEF80E090E00E944A252D +:103DF00060E082E090E00E94382560E083E090E09F +:103E00000E94382560E084E090E00E94382560E060 +:103E100085E090E00C94382580E090E00E94322507 +:103E200021E08D3E9E4F09F020E0822F089582E030 +:103E300090E00C942A25682F82E090E00C943825BD +:103E400083E090E00C942A25682F83E090E00C94A6 +:103E5000382584E090E00C942A25682F84E090E0D7 +:103E60000C9438258091DD0180FF0BC06091130117 +:103E700085E0689FB00111247595679575956795E4 +:103E80002AC081FF09C06091130185E0689FB001DD +:103E90001124759567951FC082FF07C060911301BB +:103EA00085E0689FB001112416C04091DE014423D3 +:103EB000C9F060911201461788F72091130185E03F +:103EC000289F90011124429FC001439F900D11240F +:103ED00070E00E94FC246038710540F461157105A2 +:103EE00039F002C065E070E0862F08958FE70895ED +:103EF00081E008958091DD0180FF08C0609111018B +:103F000070E0759567957595679521C081FF06C02E +:103F10006091110170E07595679519C082FF04C02A +:103F20006091110170E010C08091DE018823C1F022 +:103F3000609110018617A0F790911101989FC00120 +:103F4000112470E00E94FC246038710528F461158A +:103F5000710521F0862F08958FE7089581E0089577 +:103F600061E070E0F4CF803F21F40E94321F819520 +:103F700004C0813F29F40E94321F8093E10108951B +:103F8000823F21F40E94321F819504C0833F29F4AF +:103F90000E94321F8093E0010895893F19F40E9426 +:103FA0007A1F05C08A3F31F40E947A1F8195809361 +:103FB000E20108958B3F21F40E947A1F819504C08D +:103FC0008C3F29F40E947A1F8093E3010895843F77 +:103FD00021F48091DF01816017C0853F21F4809139 +:103FE000DF01826011C0863F21F48091DF0184608F +:103FF0000BC0873F21F48091DF01886005C0883FB6 +:1040000031F48091DF0180618093DF0108958D3F5D +:1040100021F48091DD0181600BC08E3F21F48091FD +:10402000DD01826005C08F3F29F48091DD0184604D +:104030008093DD010895803F39F48091E10187FF8D +:104040006CC01092E10169C0813F29F48091E101C7 +:104050001816BCF362C09091E001823F29F497FFEB +:104060005CC01092E00159C0833F19F41916CCF3DB +:1040700054C0893F41F48091E20118160CF04DC004 +:104080001092E2014AC08A3F29F48091E20187FF41 +:1040900044C0F6CF8B3F39F48091E30187FF3DC0E8 +:1040A0001092E3013AC08C3F29F48091E301181685 +:1040B000BCF333C0843F21F48091DF018E7F17C0B1 +:1040C000853F21F48091DF018D7F11C0863F21F46F +:1040D0008091DF018B7F0BC0873F21F48091DF014E +:1040E000877F05C0883F31F48091DF018F7E809308 +:1040F000DF0113C08D3F21F48091DD018E7F0BC065 +:104100008E3F21F48091DD018D7F05C08F3F29F422 +:104110008091DD018B7F8093DD018091E001811131 +:104120000EC08091E10181110AC08091E2018111EC +:1041300006C08091E301811102C01092DE01089552 +:104140008FED91E00E94E0100E940A1D9093DC0127 +:104150008093DB0108951F93CF93DF938091DB0160 +:104160009091DC010E94161D4091DE01442321F054 +:104170002091140130E006C0209115015AE0259FDE +:10418000900111248217930708F482C08091E00106 +:104190001091E101D091E201C091E301811107C0CA +:1041A000111105C0D11103C0CC2309F471C04F3FD8 +:1041B00019F04F5F4093DE01181624F40E94321F5D +:1041C0008093E0018091E00187FF05C00E94321FCB +:1041D00081958093E001111624F40E94321F809390 +:1041E000E1018091E10187FF05C00E94321F8195A6 +:1041F0008093E1016091E001662339F11091E101C2 +:10420000112319F1772767FD7095872F972F0E944B +:104210000D2423E333E343E35FE30E9471240E9410 +:10422000DA236093E001612F772767FD7095872F70 +:10423000972F0E940D2423E333E343E35FE30E94BF +:1042400071240E94DA236093E1011D1624F40E9478 +:104250007A1F8093E2018091E20187FF05C00E94EE +:104260007A1F81958093E2011C1624F40E947A1F24 +:104270008093E3018091E30187FF05C00E947A1FCC +:1042800081958093E301DF91CF911F910C94A02041 +:10429000DF91CF911F910895EFEDF1E085E0DF010F +:1042A0001D928A95E9F71092DE011092DD010895C2 +:1042B000833081F128F4813059F08230D1F00895B3 +:1042C000853009F449C0B8F1863009F456C0089524 +:1042D00020911501862F90E0820F911D8F3F91054F +:1042E00020F4620F6093150108958FEF80931501FC +:1042F000089520911401862F90E0820F911D8F3F29 +:10430000910520F4620F6093140108958FEF80935C +:104310001401089520911301862F90E0820F911DC2 +:104320008F3F910520F4620F6093130108958FEF82 +:1043300080931301089520911201862F90E0820F3F +:10434000911D8F3F910520F4620F60931201089533 +:104350008FEF80931201089520911101862F90E034 +:10436000820F911D8F3F910520F4620F6093110120 +:1043700008958FEF80931101089520911001862FE9 +:1043800090E0820F911D8F3F910520F4620F6093A2 +:10439000100108958FEF809310010895833011F17B +:1043A00028F4813049F0823091F00895853081F110 +:1043B00020F18630C1F1089580911501681720F42D +:1043C000861B809315010895109215010895809120 +:1043D0001401681720F4861B80931401089510922D +:1043E0001401089580911301681720F4861B8093AF +:1043F0001301089510921301089580911201681716 +:1044000020F4861B809312010895109212010895E2 +:1044100080911101681720F4861B80931101089583 +:1044200010921101089580911001681720F4861BE5 +:104430008093100108951092100108958D3109F4B0 +:1044400042C020F58E3009F477C070F4873009F44B +:1044500059C018F48630F1F134C0883009F4A8C08E +:104460008B3009F4A5C02DC0863109F4A1C038F401 +:10447000803109F472C0813109F479C022C08931D8 +:1044800009F496C08B3109F44DC01BC0853309F483 +:1044900087C048F4873209F483C008F473C08932B6 +:1044A00009F47EC00EC0833438F48A3308F068C043 +:1044B000883309F47DC005C0833409F471C08834A1 +:1044C00099F080E008950E9494230E94C9100E94F0 +:1044D000CE096EC08091D501817F8E7F8093D501FA +:1044E00081E08093E50108950E944C162FEF83ED43 +:1044F00090E3215080409040E1F700C000000E940E +:10450000641D56C09091D501892F8095817080FBE4 +:1045100090F919F0966098601DC0997F977F9093ED +:10452000D50146C09091D50191FB882780F921E003 +:10453000822780FB91F909C09091D50192FB8827D1 +:1045400080F921E0822780FB92F99093D50188239E +:1045500079F191609093D50108959091D50193FBE5 +:10456000882780F921E0822780FB93F9EECF0E9413 +:104570004C1680910D0191E0892780930D0118C0A0 +:1045800027EC01C023EE280F61E070E080E090E0AE +:1045900004C0660F771F881F991F2A95D2F704C0A1 +:1045A00061E070E080E090E00E94461A0E944C16A4 +:1045B00081E0089580E0089580E00895CF93C82FAA +:1045C0008091E501813079F018F08230D1F184C01A +:1045D000A0910E01B0910F018C91813169F082326E +:1045E00009F07CC009C0A0910E01B0910F018C911F +:1045F000813111F0823249F48C2F0E94DA2281112C +:104600001DC08C2F0E941E221AC08C2F0E94DC22FB +:10461000811114C0C43179F048F4CB3079F0C03145 +:1046200009F060C082E08093E50108C0C93219F04A +:10463000C83321F057C01092E50154C081E0817069 +:1046400053C0C93289F118F5C43171F1A8F4C730EB +:1046500009F046C08AE08093150194E1909314011B +:1046600093E0909313018093120188E080931101ED +:1046700088E28093100134C0CE51C63088F5EC2F0B +:10468000F0E0E65DFE4F80818093E40129C0CE34E6 +:10469000E9F020F4CB3421F56AE013C0C13579F09C +:1046A000C235F1F461E00DC08091E401882319F076 +:1046B0001092E40115C081E08093E50115C061E02E +:1046C00006C08091E4010E9458210AC06AE08091EE +:1046D000E4010E94CE2104C01092E50180E004C0F4 +:1046E00081E002C080E0ABCFCF910895E1E8F0E037 +:1046F0008081886080838081816080838FB7F89417 +:1047000093E09093890090ED909388008FBF089577 +:10471000EFE6F0E08081826080830895EFE6F0E0CC +:1047200080818D7F80830895EFE6F0E0808192E0C4 +:104730008927808308951F920F920FB60F9211243C +:104740002F933F934F935F936F937F938F939F9399 +:10475000AF93BF93EF93FF938091E6019091E701B0 +:1047600001969093E7018093E601811103C082E0F6 +:104770000E94CE09E091E701E695E695F0E0E25966 +:10478000FA4FE4918091E6018E1303C080E00E940D +:10479000CE09FF91EF91BF91AF919F918F917F9142 +:1047A0006F915F914F913F912F910F900FBE0F909E +:1047B0001F90189504D06894B1118DC0089570D0E1 +:1047C00088F09F5790F0B92F9927B751A0F0D1F0FA +:1047D000660F771F881F991F1AF0BA95C9F712C084 +:1047E000B13081F077D0B1E0089574C0672F782F91 +:1047F0008827B85F39F0B93FCCF3869577956795F0 +:10480000B395D9F73EF490958095709561957F4F5B +:104810008F4F9F4F0895E89409C097FB3EF4909501 +:104820008095709561957F4F8F4F9F4F9923A9F089 +:10483000F92F96E9BB279395F69587957795679518 +:10484000B795F111F8CFFAF4BB0F11F460FF1BC05C +:104850006F5F7F4F8F4F9F4F16C0882311F096E9EF +:1048600011C0772321F09EE8872F762F05C066239D +:1048700071F096E8862F70E060E02AF09A95660F56 +:10488000771F881FDAF7880F9695879597F908950F +:1048900057FD9058440F551F59F05F3F71F04795F1 +:1048A000880F97FB991F61F09F3F79F087950895D6 +:1048B000121613061406551FF2CF4695F1DF08C0F5 +:1048C000161617061806991FF1CF86957105610512 +:1048D00008940895E894BB2766277727CB0197F9BA +:1048E00008950BD078C069D028F06ED018F09523C9 +:1048F00009F05AC05FC01124EECFCADFA0F3959F24 +:10490000D1F3950F50E0551F629FF001729FBB27B6 +:10491000F00DB11D639FAA27F00DB11DAA1F649F62 +:104920006627B00DA11D661F829F2227B00DA11D15 +:10493000621F739FB00DA11D621F839FA00D611D9B +:10494000221F749F3327A00D611D231F849F600DBC +:10495000211D822F762F6A2F11249F5750408AF0F5 +:10496000E1F088234AF0EE0FFF1FBB1F661F771F81 +:10497000881F91505040A9F79E3F510570F014C018 +:10498000AACF5F3FECF3983EDCF386957795679569 +:10499000B795F795E7959F5FC1F7FE2B880F911D9F +:1049A0009695879597F9089597F99F6780E870E045 +:1049B00060E008959FEF80EC089500240A94161695 +:1049C000170618060906089500240A9412161306FD +:1049D000140605060895092E0394000C11F488238B +:1049E00052F0BB0F40F4BF2B11F460FF04C06F5FA7 +:1049F0007F4F8F4F9F4F089597FB072E16F400941B +:104A000007D077FD09D00E94162507FC05D03EF49B +:104A1000909581959F4F0895709561957F4F08956A +:104A2000EE0FFF1F0590F491E02D0994AA1BBB1B0C +:104A300051E107C0AA1FBB1FA617B70710F0A61B9E +:104A4000B70B881F991F5A95A9F780959095BC01BF +:104A5000CD010895F999FECF92BD81BDF89A9927AD +:104A600080B50895A8E1B0E042E050E00C945225F2 +:104A7000262FF999FECF92BD81BDF89A019700B417 +:104A8000021639F01FBA20BD0FB6F894FA9AF99AB7 +:104A90000FBE08950196272F0E9439250C943825C2 +:104AA000DC01CB01FC01F999FECF06C0F2BDE1BDEE +:104AB000F89A319600B40D9241505040B8F70895DD +:044AC000F894FFCF98 +:104AC4002002D0095D0A3A0A060AD3090101C2018B +:104AD40028080A03140A3F4D36392F05E204AC04B2 +:104AE400730406041F043804510401020304050678 +:044AF40007080900A6 :00000001FF diff --git a/keyboard/ergodox_ez/keymaps/ordinary/readme.md b/keyboard/ergodox_ez/keymaps/ordinary/readme.md index 163b5d9021..6465cd79e0 100644 --- a/keyboard/ergodox_ez/keymaps/ordinary/readme.md +++ b/keyboard/ergodox_ez/keymaps/ordinary/readme.md @@ -55,7 +55,7 @@ Finally, consider the turquoise text-nav keys. Here in the Symbols layer, these * The bright green keys are more F-keys * The dark yellow keys signal Web and Audio applications * The light yellow keys signal the operating system -* The uncolored keys do nothing in case you bump them by accident +* The dark gray keys do nothing in case you bump them by accident ![Ordinary media layout](ordinary-media.png) @@ -67,16 +67,37 @@ Alas, the yellow keys have at best spotty success with common software. Good luc ## Switching Between Layers ## -In addition to Symbols and Media there is the Capitals layer which is exactly the same as pressing the shift key. (Note: it is exactly the same as pressing the *left* shift key; the *right* shift key is only available on the Media layer because holding both shift keys is the 'magic' command combo for this keyboard so it is inconviently locate to minimize accidents.) Each layer is accessed by a shift key on each edge of the keyboard and corresponds to one of the three LEDs on the keyboard: Capitals (red), Symbols (green), Media (blue). The color of a layer illuminates when the layer is active. +In addition to Symbols and Media there is the Capitals layer which is exactly the same as pressing the shift key. Each layer is accessed by a shift key on each edge of the keyboard and corresponds to one of the three LEDs on the keyboard: Capitals (red), Symbols (green), Media (blue). The color of a layer illuminates when the layer is active. -Shift buttons work in the expected way: press them and all of the keys switch to that layer; release them and the keys switch back to the base layer. Lock layers using the Shift key in conjunction with the Shift Lock key. For instance, the widely and rightly loathed Caps Lock is engaged by pressing the Shift Lock button then Capitals Shift. Or, hold down the Shift key and press the Shift Lock key; it works either way. All the Shift keys work this way. +Shift buttons work in the expected way: press them and all of the keys switch to that layer; release them and the keys switch back to the base layer. If you press both of a pair of shift keys, the layer will lock on until you press both shift keys again. For instance, the widely and rightly loathed Caps Lock is engaged by pressing both Capitals Shift buttons. All the Shift keys work this way. -Multiple layers can be turned on at once but only one controls the keyboard. The order of the LEDs indicates the priority order: Media, Symbols, Capitals. +Multiple layers can be turned on at once. The Capitals layer will affect characters on other layers to capitalize. Other layers, however, don't 'mix': Symbols blankets the base layout; Media blankets Symbols. -## Special Escape & Backspace Sequences ## +## Special Sequences ## -In the Ordinary Layout, the most unsatisfying key location is the Escape key which rightly belongs segregated on its own way up on the top left of the keyboard. The Ergodox does not have a physical button in such a location and the nearest one, in the top left corner, is home to the tilde (er, grave) which is commonly found there. The Escape key is important so it features prominently on the other top corner on the left side of the keyboard, and is always there in all layers. Nevertheless, alas, it isn't Ordinary to put the escape in that different corner! +![Ordinary special layout](ordinary-special.png) -That tilde key has a second function as the Shift Lock key and that makes possible a special feature. To make this layout as Ordinary as possible, the Escape key can *also* be accessed by pressing Shift Lock then the 1 button right next to it. This easy gesture is a way to partially maintain the ease of flicking your wrist to the left and tapping Escape. This gesture works in all layers. +### Escape ### -Finally, because the special Escape sequence is so natural and useful, on the top right corner of the Ergodox EZ you can do the same gesture with the 0 key to produce a Backspace. Users of this keyboard and this layout are well advised to learn to use their thumbs for deleting text, but sometimes you are doing other computery things and just want to flick your digits up to the right and press backspace a bunch times. These special sequences should feel unremarkably mundane but might prove to be remarkably useful. +The One True Location for the Escape key is segregated way up on the top left of the keyboard. The Ergodox does not have a physical button in such a location and the nearest one is home to the tilde (er, grave) which is commonly found there. In the Ordinary layout the Escape key is found on all layers in the prominent location in the corner next to the 5, whnich is easy to remember, and yet it isn't natural for those of us with muscle memory flicking our wrists up and to the left looking for Escape. + +The Ordinary layout offers as a consolation prize a Special sequence for Escape: Special Shift + 1. This is natural so you can tap the top left button, then the button next to it and get Escape. This gesture works in all layers. + +### Backspace ### + +At the top right corner of the Ergodox EZ you can a gesture similar to the special Escape sequence, using the 0 key, to produce a Backspace. Users of this keyboard and this layout are well advised to learn to use their thumbs for deleting text, but sometimes you are doing other computery things and just want to flick your digits up to the right and press backspace a bunch times. + +### RShift ### + +The Ordinary Layout locks layers by pressing both of a pair of shift keys. This interferes with the QMK firmware magic sequence, which is LShift+RShift. To work around this, both of the Capitals Shift keys produce a *Left Shift* keystroke. If for some reason a person needs *Right Shift* they can find it by pressing a Special Shift key, then the Capitals Shift key on the right side of the keyboard. + +**** + +The Ordinary Layout for the Ergodox EZ keyboard, v4 + +Modifications from default by Nicholas Keene ergodoxez@nicholaskeene.com + +No rights reserved. This software is in the public domain. Credit me if you are friendly but if you're a jerk don't bother. + +Details: readme.md + https://github.com/nrrkeene/qmk_firmware/tree/master/keyboard/ergodox_ez/keymaps/ordinary -- cgit v1.2.1 From 481c74cc569e47d42c7dfa55daa1f33d066eaef4 Mon Sep 17 00:00:00 2001 From: Nicholas Keene Date: Thu, 5 May 2016 23:18:48 -0500 Subject: The Ordinary Layout is the layout you are looking for. Come and see. --- keyboard/ergodox_ez/keymaps/ordinary/keymap.c | 2 +- keyboard/ergodox_ez/keymaps/ordinary/ordinary.hex | 2148 ++++++++++----------- 2 files changed, 1075 insertions(+), 1075 deletions(-) diff --git a/keyboard/ergodox_ez/keymaps/ordinary/keymap.c b/keyboard/ergodox_ez/keymaps/ordinary/keymap.c index 6af3720fdc..18939b1923 100644 --- a/keyboard/ergodox_ez/keymaps/ordinary/keymap.c +++ b/keyboard/ergodox_ez/keymaps/ordinary/keymap.c @@ -430,7 +430,7 @@ void matrix_init_user(void) { // Runs constantly in the background, in a loop. void matrix_scan_user(void) { // shift or caps lock turns on red light - if((keyboard_report->mods & (MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT))) || (host_keyboard_leds() & (1<mods & MOD_BIT(KC_RSFT)) || (host_keyboard_leds() & (1< Date: Fri, 6 May 2016 05:19:17 -0700 Subject: =?UTF-8?q?zweihander:=20add=20=E2=8C=98X,=20=E2=8C=98C,=20?= =?UTF-8?q?=E2=8C=98V=20to=20media=20thumb=20keys?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- keyboard/ergodox_ez/keymaps/zweihander-osx/keymap.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/keyboard/ergodox_ez/keymaps/zweihander-osx/keymap.c b/keyboard/ergodox_ez/keymaps/zweihander-osx/keymap.c index a9980593fb..1cd7e77230 100644 --- a/keyboard/ergodox_ez/keymaps/zweihander-osx/keymap.c +++ b/keyboard/ergodox_ez/keymaps/zweihander-osx/keymap.c @@ -109,8 +109,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | * ,------|------|------| |------+------+------. * | | | | | | | | - * | | |------| |------| | | - * | | | | | | | | + * | | |------| |------| ⌘C | ⌘V | + * | | | | | ⌘X | | | * `--------------------' `--------------------' */ // MEDIA AND MOUSE @@ -129,9 +129,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { LGUI(KC_LBRC), KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_MPLY, KC_TRNS, LSFT(KC_SPC), KC_SPC , KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS, KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS + LGUI(KC_X), LGUI(KC_C), LGUI(KC_V) ), }; -- cgit v1.2.1 From 08f31424634d5b614b69e3bb965ab50bdccd6d01 Mon Sep 17 00:00:00 2001 From: Nathan Sharfi Date: Fri, 6 May 2016 05:40:02 -0700 Subject: Add KC_LABK and KC_RABK (< and >) --- quantum/keymap_common.h | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/quantum/keymap_common.h b/quantum/keymap_common.h index 0ede0296b9..ffd8168f67 100644 --- a/quantum/keymap_common.h +++ b/quantum/keymap_common.h @@ -118,6 +118,12 @@ extern const uint16_t fn_actions[]; #define KC_RCBR LSFT(KC_RBRC) // } #define KC_RIGHT_CURLY_BRACE KC_RCBR +#define KC_LABK LSFT(KC_COMM) // < +#define KC_LEFT_ANGLE_BRACKET KC_LABK + +#define KC_RABK LSFT(KC_DOT) // > +#define KC_RIGHT_ANGLE_BRACKET KC_RABK + #define KC_COLN LSFT(KC_SCLN) // : #define KC_COLON KC_COLN -- cgit v1.2.1 From c702a522b077e09a3d7d080c0dc94471f110aa53 Mon Sep 17 00:00:00 2001 From: Nathan Sharfi Date: Fri, 6 May 2016 05:47:55 -0700 Subject: Rearrange code layer on Zweihander Makes it more like the iOS keyboard (and therefore easier to remember). Also adds angle brackets for HTML and comparisons. --- keyboard/ergodox_ez/keymaps/zweihander-osx/keymap.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/keyboard/ergodox_ez/keymaps/zweihander-osx/keymap.c b/keyboard/ergodox_ez/keymaps/zweihander-osx/keymap.c index 1cd7e77230..e9963886be 100644 --- a/keyboard/ergodox_ez/keymaps/zweihander-osx/keymap.c +++ b/keyboard/ergodox_ez/keymaps/zweihander-osx/keymap.c @@ -55,11 +55,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * ,--------------------------------------------------. ,--------------------------------------------------. * | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | | ! | @ | { | } | | | | | | / | 7 | 8 | 9 | * | F12 | + * | | [ | ] | { | } | | | | | / | 7 | 8 | 9 | * | F12 | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | # | $ | ( | ) | ` |------| |------| - | 4 | 5 | 6 | + | | + * | | < | > | ( | ) | |------| |------| - | 4 | 5 | 6 | + | | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | = | | + * | | | | | | | | | | & | 1 | 2 | 3 | = | | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' * | | | | | | | 0 | . | ← | → | | * `----------------------------------' `----------------------------------' @@ -75,9 +75,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [SYMB] = KEYMAP( // left hand KC_TRNS,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, - KC_TRNS,KC_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS, - KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV, - KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS, + KC_TRNS,KC_LBRC,KC_RBRC,KC_LCBR,KC_RCBR,KC_TRNS,KC_TRNS, + KC_TRNS,KC_LABK,KC_RABK,KC_LPRN,KC_RPRN,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, -- cgit v1.2.1 From 05db327b704343168f696af1a91915917fa4b5a9 Mon Sep 17 00:00:00 2001 From: Nathan Sharfi Date: Fri, 6 May 2016 06:22:26 -0700 Subject: Add KC_L[LR]ABK to top-level README --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index bb1cca1edf..67a768be7a 100644 --- a/README.md +++ b/README.md @@ -80,6 +80,8 @@ The following shortcuts automatically add `LSFT()` to keycodes to get commonly u KC_PLUS + KC_LCBR { KC_RCBR } + KC_LABK < + KC_RABK > KC_PIPE | KC_COLN : -- cgit v1.2.1 From 897396b58fb1bc833269d3c25f85cfcdd0b6057a Mon Sep 17 00:00:00 2001 From: Erez Zukerman Date: Sun, 8 May 2016 13:39:17 -0400 Subject: Tweaks layers 1 & 2 in my experimental layout --- .../erez_experimental/erez_experimental.hex | 22 ++++++------- .../ergodox_ez/keymaps/erez_experimental/keymap.c | 36 +++++++++++----------- .../ergodox_ez/keymaps/erez_experimental/readme.md | 8 +++++ 3 files changed, 37 insertions(+), 29 deletions(-) diff --git a/keyboard/ergodox_ez/keymaps/erez_experimental/erez_experimental.hex b/keyboard/ergodox_ez/keymaps/erez_experimental/erez_experimental.hex index edbead2769..14891aa8ec 100644 --- a/keyboard/ergodox_ez/keymaps/erez_experimental/erez_experimental.hex +++ b/keyboard/ergodox_ez/keymaps/erez_experimental/erez_experimental.hex @@ -25,21 +25,21 @@ :1001800018000D74100052004B0025000C000E00EA :10019000360051002800260012000F0037002F0003 :1001A0002B81270013003382387130004E002D0060 -:1001B0003100347801302D00000001000100010001 -:1001C0000100010000003A001E002200260201008A -:1001D00001003B001F0023002702010001003C003A -:1001E000200024002F004B0101003D0021002500CC -:1001F00030004E0101003E000100260027000000F3 +:1001B0003100347801302D81000001000100010080 +:1001C0000100010000003A001E0023002602010089 +:1001D00001003B001F0024002702010001003C0039 +:1001E000200025002F004B0101003D0021002600CA +:1001F00030004E0101003E002200270027000000D1 :1002000001000100010000000100000001000100E8 :10021000010000000100000001003F000100240275 -:10022000310200000100400022022D0226020100DE -:10023000010041002E002D002702010001004200B4 -:100240001F021300200001000100430001002E02E4 +:10022000310200000100400001002D022202010005 +:100230000100410001002D002E00010001004200DC +:10024000010013001F0201000100430001002E0203 :10025000010001000100440045000100010001000F :100260000000010001000100010001000000010088 -:100270000100010001000100010001000100F20085 -:100280000100010001000100F000F1000100F40094 -:10029000010001000100F3000100F5000100010070 +:1002700001004B00010001000100010001004A00E3 +:10028000010001000100010001004D00010001001A +:100290000100010001004E00010001000100010009 :1002A0000100010001000000010001000100000048 :1002B0000100000001000100010000000100000039 :1002C0000100010001000100010000000100010027 diff --git a/keyboard/ergodox_ez/keymaps/erez_experimental/keymap.c b/keyboard/ergodox_ez/keymaps/erez_experimental/keymap.c index f257dbee36..42e7cbe0d4 100644 --- a/keyboard/ergodox_ez/keymaps/erez_experimental/keymap.c +++ b/keyboard/ergodox_ez/keymaps/erez_experimental/keymap.c @@ -22,7 +22,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------| * |LShift/(|Z/Ctrl| X | C | V | B | [ | | ] | N | M | , | . |//Ctrl|RShift/)| * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * |Grv/L1| '" |AltShf| Left | Right| | Up | Down | [ | ] | - | + * |Grv/L1| '" |AltShf| Left | Right| | Up | Down | [ | ] | -/L1 | * `----------------------------------' `----------------------------------' * ,-------------. ,-------------. * | App | LGui | | Alt |Ctrl/Esc| @@ -49,7 +49,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { TG(SYMB), KC_Y,KC_U, KC_I, KC_O, KC_P, KC_BSLS, KC_H,ALT_T(KC_J),KC_K, KC_L, LT(MDIA,KC_SCLN),GUI_T(KC_QUOT), MEH_T(KC_RBRC),KC_N,KC_M, KC_COMM,KC_DOT, CTL_T(KC_SLSH), RSFTC, - KC_UP, KC_DOWN,KC_LBRC,KC_RBRC, KC_MINS, + KC_UP, KC_DOWN,KC_LBRC,KC_RBRC, LT(SYMB,KC_MINS), KC_LALT, CTL_T(KC_ESC), KC_PGUP, KC_PGDN,LT(SYMB, KC_TAB), KC_ENT @@ -59,11 +59,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * ,--------------------------------------------------. ,--------------------------------------------------. * | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | | 1 | 2 | 3 | 4 | | | | | | % | = | @ | | F12 | + * | | | | | | | | | | | | | | | F12 | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | 5 | 6 | 7 | 8 | 9 |------| |------| & | _ | - | ; | + | | + * | | 1 | 2 | 3 | 4 | 5 |------| |------| & | _ | - | ; | + | | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | ( | ) | [ | ] | 0 | | | | | | ( | ) | | | | + * | | 6 | 7 | 8 | 9 | 0 | | | | | | % | = | @ | | | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' * | | | | | | | | | | | | * `----------------------------------' `----------------------------------' @@ -79,19 +79,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [SYMB] = KEYMAP( // left hand KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, - KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_TRNS, KC_TRNS, - KC_TRNS, KC_5, KC_6, KC_7, KC_8, KC_9, + KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_TRNS, + KC_TRNS, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS, KC_LPRN,KC_RPRN,KC_LBRC, KC_RBRC, KC_0, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,LCTL(KC_PGUP), LCTL(KC_PGDN), KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, // right hand - KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, - KC_TRNS, KC_TRNS, KC_PERC,KC_EQL, KC_AT, KC_TRNS, KC_F12, - KC_AMPR, KC_UNDS,KC_MINS, CM_SCLN, KC_PLUS, KC_TRNS, - KC_TRNS, KC_PIPE, KC_LPRN,KC_RPRN, KC_3, KC_TRNS, KC_TRNS, - KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F12, + KC_AMPR, KC_UNDS, KC_MINS, CM_SCLN, KC_PLUS, KC_TRNS, + KC_TRNS, KC_PIPE, KC_PERC, KC_EQL, KC_AT, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS @@ -101,13 +101,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * ,--------------------------------------------------. ,--------------------------------------------------. * | | | | | | | | | | | | | | | | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | | | | MsUp | | | | | | | | | | | | + * | | | | | | | | | | | | | | | | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | |MsLeft|MsDown|MsRght| |------| |------| | | | | | Play | + * | | PgUp | Home | End | PgDn | |------| |------| | | | | | Play | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| * | | | | | | | | | | | | Prev | Next | | | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * | | | | Lclk | Rclk | |VolUp |VolDn | Mute | | | + * | | | | | | |VolUp |VolDn | Mute | | | * `----------------------------------' `----------------------------------' * ,-------------. ,-------------. * | | | | | | @@ -120,10 +120,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // MEDIA AND MOUSE [MDIA] = KEYMAP( KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2, + KC_TRNS, KC_PGUP, KC_HOME, KC_END, KC_PGDN, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, diff --git a/keyboard/ergodox_ez/keymaps/erez_experimental/readme.md b/keyboard/ergodox_ez/keymaps/erez_experimental/readme.md index 205280e290..a9c572390a 100644 --- a/keyboard/ergodox_ez/keymaps/erez_experimental/readme.md +++ b/keyboard/ergodox_ez/keymaps/erez_experimental/readme.md @@ -4,6 +4,14 @@ This is my personal layout which I use to test out ideas which may or may not ma Changelog: +## May 8, 2016: + +* Makes bottom-right key send minus/underscore when tapped, L1 temporary toggle when held +* Tweaked the positions of the numbers on the symbol layer. Basically, 12345 are now directly under their number-row counterparts in layer 0. You can imagine pulling the number row down to the home row. And 67890 are directly under 12345 - so it's a matter of just adding 5 and going to the next row (1+5 = 6, 2+5 = 7 and so on). +* Tweaks media/nav layer + * Removes mouse control, as I don't use it + * Makes left home row keys PgUp, Home, End, PgDn + ## Apr 29, 2016: * Tweaks the Hyper and Meh key to send brackets when tapped -- cgit v1.2.1 From 2ac27dd5745ad0780dc85e57758e05d49a65062e Mon Sep 17 00:00:00 2001 From: Erez Zukerman Date: Sun, 8 May 2016 13:45:26 -0400 Subject: A little more tweaking --- .../keymaps/erez_experimental/erez_experimental.hex | 12 ++++++------ keyboard/ergodox_ez/keymaps/erez_experimental/keymap.c | 12 ++++++------ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/keyboard/ergodox_ez/keymaps/erez_experimental/erez_experimental.hex b/keyboard/ergodox_ez/keymaps/erez_experimental/erez_experimental.hex index 14891aa8ec..acfd2ee31d 100644 --- a/keyboard/ergodox_ez/keymaps/erez_experimental/erez_experimental.hex +++ b/keyboard/ergodox_ez/keymaps/erez_experimental/erez_experimental.hex @@ -26,15 +26,15 @@ :10019000360051002800260012000F0037002F0003 :1001A0002B81270013003382387130004E002D0060 :1001B0003100347801302D81000001000100010080 -:1001C0000100010000003A001E0023002602010089 -:1001D00001003B001F0024002702010001003C0039 -:1001E000200025002F004B0101003D0021002600CA -:1001F00030004E0101003E002200270027000000D1 +:1001C0000100010000003A0001001E0023000100B0 +:1001D00001003B0001001F002400010001003C0061 +:1001E000010020002500010001003D000100210068 +:1001F0002600010001003E0001002200270000004F :1002000001000100010000000100000001000100E8 :10021000010000000100000001003F000100240275 -:10022000310200000100400001002D022202010005 +:10022000310200000100400001002D021F02010008 :100230000100410001002D002E00010001004200DC -:10024000010013001F0201000100430001002E0203 +:1002400001001300220201000100430001002E0200 :10025000010001000100440045000100010001000F :100260000000010001000100010001000000010088 :1002700001004B00010001000100010001004A00E3 diff --git a/keyboard/ergodox_ez/keymaps/erez_experimental/keymap.c b/keyboard/ergodox_ez/keymaps/erez_experimental/keymap.c index 42e7cbe0d4..6969ccd36c 100644 --- a/keyboard/ergodox_ez/keymaps/erez_experimental/keymap.c +++ b/keyboard/ergodox_ez/keymaps/erez_experimental/keymap.c @@ -63,7 +63,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| * | | 1 | 2 | 3 | 4 | 5 |------| |------| & | _ | - | ; | + | | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | 6 | 7 | 8 | 9 | 0 | | | | | | % | = | @ | | | + * | | 6 | 7 | 8 | 9 | 0 | | | | | | @ | = | % | | | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' * | | | | | | | | | | | | * `----------------------------------' `----------------------------------' @@ -79,10 +79,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [SYMB] = KEYMAP( // left hand KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, - KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_TRNS, - KC_TRNS, KC_6, KC_7, KC_8, KC_9, KC_0, - KC_TRNS, KC_LPRN,KC_RPRN,KC_LBRC, KC_RBRC, KC_0, KC_TRNS, - KC_TRNS, KC_TRNS,KC_TRNS,LCTL(KC_PGUP), LCTL(KC_PGDN), + KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, + KC_TRNS, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS, + KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, @@ -90,7 +90,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F12, KC_AMPR, KC_UNDS, KC_MINS, CM_SCLN, KC_PLUS, KC_TRNS, - KC_TRNS, KC_PIPE, KC_PERC, KC_EQL, KC_AT, KC_TRNS, KC_TRNS, + KC_TRNS, KC_PIPE, KC_AT, KC_EQL, KC_PERC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, -- cgit v1.2.1 From 35a72ca5e1abaf2eece7f61c17f94260ea1d16c7 Mon Sep 17 00:00:00 2001 From: Erez Zukerman Date: Sun, 8 May 2016 13:54:22 -0400 Subject: Adds next tab/prev tab back to symb layer and updates legend --- keyboard/ergodox_ez/keymaps/erez_experimental/erez_experimental.hex | 4 ++-- keyboard/ergodox_ez/keymaps/erez_experimental/keymap.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/keyboard/ergodox_ez/keymaps/erez_experimental/erez_experimental.hex b/keyboard/ergodox_ez/keymaps/erez_experimental/erez_experimental.hex index acfd2ee31d..bdd707165f 100644 --- a/keyboard/ergodox_ez/keymaps/erez_experimental/erez_experimental.hex +++ b/keyboard/ergodox_ez/keymaps/erez_experimental/erez_experimental.hex @@ -28,8 +28,8 @@ :1001B0003100347801302D81000001000100010080 :1001C0000100010000003A0001001E0023000100B0 :1001D00001003B0001001F002400010001003C0061 -:1001E000010020002500010001003D000100210068 -:1001F0002600010001003E0001002200270000004F +:1001E0000100200025004B0101003D00010021001D +:1001F00026004E0101003E00010022002700000001 :1002000001000100010000000100000001000100E8 :10021000010000000100000001003F000100240275 :10022000310200000100400001002D021F02010008 diff --git a/keyboard/ergodox_ez/keymaps/erez_experimental/keymap.c b/keyboard/ergodox_ez/keymaps/erez_experimental/keymap.c index 6969ccd36c..f4e4f92e01 100644 --- a/keyboard/ergodox_ez/keymaps/erez_experimental/keymap.c +++ b/keyboard/ergodox_ez/keymaps/erez_experimental/keymap.c @@ -65,7 +65,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| * | | 6 | 7 | 8 | 9 | 0 | | | | | | @ | = | % | | | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * | | | | | | | | | | | | + * | | | |NxtTab|PrvTab| | | | | | | * `----------------------------------' `----------------------------------' * ,-------------. ,-------------. * | | | | | | @@ -82,7 +82,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_TRNS, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS, - KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS,KC_TRNS,LCTL(KC_PGUP), LCTL(KC_PGDN), KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, -- cgit v1.2.1 From 684793360cdb08ac1e50a6d27e1796fadd527adb Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Mon, 9 May 2016 00:36:23 -0400 Subject: quantum accommodates more than 16 columns --- quantum/matrix.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/quantum/matrix.c b/quantum/matrix.c index 2dab6ae941..7d70f728d4 100644 --- a/quantum/matrix.c +++ b/quantum/matrix.c @@ -42,6 +42,13 @@ static matrix_row_t matrix_debouncing[MATRIX_ROWS]; static matrix_row_t matrix_reversed_debouncing[MATRIX_COLS]; #endif + +#if MATRIX_COLS > 16 + #define SHIFTER 1UL +#else + #define SHIFTER 1 +#endif + static matrix_row_t read_cols(void); static void init_cols(void); static void unselect_rows(void); @@ -235,15 +242,15 @@ static matrix_row_t read_cols(void) #endif if ((col & 0xF0) == 0x20) { - result |= (PINB&(1<<(col & 0x0F)) ? 0 : (1< Date: Mon, 9 May 2016 13:17:15 -0400 Subject: Backlight Breathing for Planck and Atomic * Updated personal layouts * tweaked personal * Nightly - Audio Cleanup Refactored the LUTs. Abstracted some of the registers out of audio to use more functional names. Split audio into audio and audio_pwm. WIP * nightly - collapsed code * Added check for note playing to LEDs * Usability tweaks * TWEAE * nightly added extra kcs to keymap common * turned on Plank audio * Added backlight breathing to atomic * reverted accidental merge * adds backlight pulse to planck --- keyboard/atomic/atomic.c | 260 +++++++++++++-- keyboard/atomic/atomic.h | 16 + keyboard/atomic/keymaps/pvc/config.h | 3 +- keyboard/atomic/keymaps/pvc/keymap.c | 357 ++++++++++++--------- keyboard/atomic/keymaps/pvc/makefile.mk | 2 +- keyboard/planck/keymaps/experimental/README.md | 2 + keyboard/planck/keymaps/experimental/keymap.c | 383 +++++++++++++++++++++++ keyboard/planck/keymaps/experimental/makefile.mk | 2 + keyboard/planck/keymaps/pvc/keymap.c | 13 +- keyboard/planck/keymaps/pvc/makefile.mk | 6 +- keyboard/planck/planck.c | 221 ++++++++++++- keyboard/planck/planck.h | 18 ++ quantum/audio/audio.c | 4 + quantum/audio/audio.h | 11 +- quantum/keymap_common.h | 18 ++ quantum/keymap_midi.h | 10 +- quantum/quantum.mk | 6 +- tmk_core/common/backlight.c | 5 + tmk_core/common/backlight.h | 1 + tmk_core/common/command.c | 4 +- tmk_core/common/nodebug.h | 12 +- 21 files changed, 1153 insertions(+), 201 deletions(-) create mode 100644 keyboard/planck/keymaps/experimental/README.md create mode 100644 keyboard/planck/keymaps/experimental/keymap.c create mode 100644 keyboard/planck/keymaps/experimental/makefile.mk diff --git a/keyboard/atomic/atomic.c b/keyboard/atomic/atomic.c index 3996497161..b4b2614572 100644 --- a/keyboard/atomic/atomic.c +++ b/keyboard/atomic/atomic.c @@ -2,27 +2,27 @@ __attribute__ ((weak)) void matrix_init_user(void) { - // leave this function blank - it can be defined in a keymap file + // leave this function blank - it can be defined in a keymap file }; __attribute__ ((weak)) void matrix_scan_user(void) { - // leave this function blank - it can be defined in a keymap file + // leave this function blank - it can be defined in a keymap file } __attribute__ ((weak)) void process_action_user(keyrecord_t *record) { - // leave this function blank - it can be defined in a keymap file + // leave this function blank - it can be defined in a keymap file } __attribute__ ((weak)) void led_set_user(uint8_t usb_led) { - // leave this function blank - it can be defined in a keymap file + // leave this function blank - it can be defined in a keymap file } void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up + // put your keyboard start-up code here + // runs once when the firmware starts up MCUCR |= (1<= BACKLIGHT_LEVELS ) { - // Prevent backlight blink on lowest level - PORTB &= ~(_BV(PORTB7)); // Turn on PWM control of PB7 TCCR1A |= _BV(COM1C1); - // Set the brightness + + // Set the brightness to max CHANNEL = 0xFFFF; } - else + else { - // Prevent backlight blink on lowest level - PORTB &= ~(_BV(PORTB7)); // Turn on PWM control of PB7 TCCR1A |= _BV(COM1C1); + // Set the brightness CHANNEL = 0xFFFF >> ((BACKLIGHT_LEVELS - level) * ((BACKLIGHT_LEVELS + 1) / 2)); } + breathing_intensity_default(); +} + + +void breathing_enable(void) +{ + if (get_backlight_level() == 0) + { + breathing_index = 0; + } + else + { + // Set breathing_index to be at the midpoint (brightest point) + breathing_index = 0x20 << breath_speed; + } + + breathing_halt = BREATHING_NO_HALT; + + // Enable breathing interrupt + TIMSK1 |= _BV(OCIE1A); +} + +void breathing_pulse(void) +{ + if (get_backlight_level() == 0) + { + breathing_index = 0; + } + else + { + // Set breathing_index to be at the midpoint + 1 (brightest point) + breathing_index = 0x21 << breath_speed; + } + + breathing_halt = BREATHING_HALT_ON; + + // Enable breathing interrupt + TIMSK1 |= _BV(OCIE1A); +} + +void breathing_disable(void) +{ + // Disable breathing interrupt + TIMSK1 &= ~_BV(OCIE1A); + backlight_set(get_backlight_level()); +} + +void breathing_self_disable(void) +{ + if (get_backlight_level() == 0) + { + breathing_halt = BREATHING_HALT_OFF; + } + else + { + breathing_halt = BREATHING_HALT_ON; + } + + //backlight_set(get_backlight_level()); +} + +void breathing_toggle(void) +{ + if (!is_breathing()) + { + if (get_backlight_level() == 0) + { + breathing_index = 0; + } + else + { + // Set breathing_index to be at the midpoint + 1 (brightest point) + breathing_index = 0x21 << breath_speed; + } + + breathing_halt = BREATHING_NO_HALT; + } + + // Toggle breathing interrupt + TIMSK1 ^= _BV(OCIE1A); + + // Restore backlight level + if (!is_breathing()) + { + backlight_set(get_backlight_level()); + } +} + +bool is_breathing(void) +{ + return (TIMSK1 && _BV(OCIE1A)); +} + +void breathing_intensity_default(void) +{ + //breath_intensity = (uint8_t)((uint16_t)100 * (uint16_t)get_backlight_level() / (uint16_t)BACKLIGHT_LEVELS); + breath_intensity = ((BACKLIGHT_LEVELS - get_backlight_level()) * ((BACKLIGHT_LEVELS + 1) / 2)); +} + +void breathing_intensity_set(uint8_t value) +{ + breath_intensity = value; +} + +void breathing_speed_default(void) +{ + breath_speed = 4; +} + +void breathing_speed_set(uint8_t value) +{ + bool is_breathing_now = is_breathing(); + uint8_t old_breath_speed = breath_speed; + + if (is_breathing_now) + { + // Disable breathing interrupt + TIMSK1 &= ~_BV(OCIE1A); + } + + breath_speed = value; + + if (is_breathing_now) + { + // Adjust index to account for new speed + breathing_index = (( (uint8_t)( (breathing_index) >> old_breath_speed ) ) & 0x3F) << breath_speed; + + // Enable breathing interrupt + TIMSK1 |= _BV(OCIE1A); + } + +} + +void breathing_speed_inc(uint8_t value) +{ + if ((uint16_t)(breath_speed - value) > 10 ) + { + breathing_speed_set(0); + } + else + { + breathing_speed_set(breath_speed - value); + } +} + +void breathing_speed_dec(uint8_t value) +{ + if ((uint16_t)(breath_speed + value) > 10 ) + { + breathing_speed_set(10); + } + else + { + breathing_speed_set(breath_speed + value); + } +} + +void breathing_defaults(void) +{ + breathing_intensity_default(); + breathing_speed_default(); + breathing_halt = BREATHING_NO_HALT; +} + +/* Breathing Sleep LED brighness(PWM On period) table + * (64[steps] * 4[duration]) / 64[PWM periods/s] = 4 second breath cycle + * + * http://www.wolframalpha.com/input/?i=%28sin%28+x%2F64*pi%29**8+*+255%2C+x%3D0+to+63 + * (0..63).each {|x| p ((sin(x/64.0*PI)**8)*255).to_i } + */ +static const uint8_t breathing_table[64] PROGMEM = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 4, 6, 10, + 15, 23, 32, 44, 58, 74, 93, 113, 135, 157, 179, 199, 218, 233, 245, 252, +255, 252, 245, 233, 218, 199, 179, 157, 135, 113, 93, 74, 58, 44, 32, 23, + 15, 10, 6, 4, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +}; + +ISR(TIMER1_COMPA_vect) +{ + // CHANNEL = (pgm_read_byte(&breathing_table[ ( (uint8_t)( (breathing_index++) >> breath_speed ) ) & 0x3F ] )) * breath_intensity; + + + uint8_t local_index = ( (uint8_t)( (breathing_index++) >> breath_speed ) ) & 0x3F; + + if (((breathing_halt == BREATHING_HALT_ON) && (local_index == 0x20)) || ((breathing_halt == BREATHING_HALT_OFF) && (local_index == 0x3F))) + { + // Disable breathing interrupt + TIMSK1 &= ~_BV(OCIE1A); + } + + CHANNEL = (uint16_t)(((uint16_t)pgm_read_byte(&breathing_table[local_index]) * 257)) >> breath_intensity; + } + + #endif \ No newline at end of file diff --git a/keyboard/atomic/atomic.h b/keyboard/atomic/atomic.h index 0c7aeb1cc8..845a9043e2 100644 --- a/keyboard/atomic/atomic.h +++ b/keyboard/atomic/atomic.h @@ -33,4 +33,20 @@ void process_action_user(keyrecord_t *record); void led_set_user(uint8_t usb_led); void backlight_init_ports(void); +void breathing_enable(void); +void breathing_pulse(void); +void breathing_disable(void); +void breathing_self_disable(void); +void breathing_toggle(void); +bool is_breathing(void); + + +void breathing_defaults(void); +void breathing_intensity_default(void); +void breathing_speed_default(void); +void breathing_speed_set(uint8_t value); +void breathing_speed_inc(uint8_t value); +void breathing_speed_dec(uint8_t value); + + #endif \ No newline at end of file diff --git a/keyboard/atomic/keymaps/pvc/config.h b/keyboard/atomic/keymaps/pvc/config.h index 034bc5dc5c..5e956286b5 100644 --- a/keyboard/atomic/keymaps/pvc/config.h +++ b/keyboard/atomic/keymaps/pvc/config.h @@ -22,7 +22,7 @@ along with this program. If not, see . /* USB Device descriptor parameter */ #define VENDOR_ID 0xFEED -#define PRODUCT_ID 0x6060 +#define PRODUCT_ID 0x0419 #define DEVICE_VER 0x0001 #define MANUFACTURER Ortholinear Keyboards #define PRODUCT The Atomic Keyboard @@ -162,5 +162,4 @@ along with this program. If not, see . //#define VIBRATO_ENABLE //#define VIBRATO_STRENGTH_ENABLE - #endif diff --git a/keyboard/atomic/keymaps/pvc/keymap.c b/keyboard/atomic/keymaps/pvc/keymap.c index 3d604a868e..ff7384268e 100644 --- a/keyboard/atomic/keymaps/pvc/keymap.c +++ b/keyboard/atomic/keymaps/pvc/keymap.c @@ -8,41 +8,44 @@ #include "song_list.h" #endif -#define LAYER_QWERTY 0 -#define LAYER_COLEMAK 1 -#define LAYER_DVORAK 2 -#define LAYER_RAISE 3 -#define LAYER_LOWER 4 -#define LAYER_FUNCTION 5 -#define LAYER_MOUSE 6 -#define LAYER_MUSIC 7 -#define LAYER_ADJUST 8 - -#define MACRO_QWERTY 0 -#define MACRO_COLEMAK 1 -#define MACRO_DVORAK 2 -#define MACRO_RAISE 3 -#define MACRO_LOWER 4 -#define MACRO_FUNCTION 5 -#define MACRO_MOUSE 6 -#define MACRO_TIMBRE_1 7 -#define MACRO_TIMBRE_2 8 -#define MACRO_TIMBRE_3 9 -#define MACRO_TIMBRE_4 10 -#define MACRO_TEMPO_U 11 -#define MACRO_TEMPO_D 12 -#define MACRO_TONE_DEFAULT 13 -#define MACRO_MUSIC_ON 14 -#define MACRO_MUSIC_OFF 15 -#define MACRO_AUDIO_ON 16 -#define MACRO_AUDIO_OFF 17 -#define MACRO_INC_VOICE 18 -#define MACRO_DEC_VOICE 19 +#define LAYER_QWERTY 0 +#define LAYER_COLEMAK 1 +#define LAYER_DVORAK 2 +#define LAYER_UPPER 3 +#define LAYER_LOWER 4 +#define LAYER_FUNCTION 5 +#define LAYER_MOUSE 6 +#define LAYER_MUSIC 7 +#define LAYER_ADJUST 8 + +#define MACRO_QWERTY 0 +#define MACRO_COLEMAK 1 +#define MACRO_DVORAK 2 +#define MACRO_UPPER 3 +#define MACRO_LOWER 4 +#define MACRO_FUNCTION 5 +#define MACRO_MOUSE 6 +#define MACRO_TIMBRE_1 7 +#define MACRO_TIMBRE_2 8 +#define MACRO_TIMBRE_3 9 +#define MACRO_TIMBRE_4 10 +#define MACRO_TEMPO_U 11 +#define MACRO_TEMPO_D 12 +#define MACRO_TONE_DEFAULT 13 +#define MACRO_MUSIC_TOGGLE 14 +#define MACRO_AUDIO_TOGGLE 16 +#define MACRO_INC_VOICE 18 +#define MACRO_DEC_VOICE 19 +#define MACRO_BACKLIGHT 20 +#define MACRO_BREATH_TOGGLE 21 +#define MACRO_BREATH_SPEED_INC 23 +#define MACRO_BREATH_SPEED_DEC 24 +#define MACRO_BREATH_DEFAULT 25 #define M_QWRTY M(MACRO_QWERTY) #define M_COLMK M(MACRO_COLEMAK) #define M_DVORK M(MACRO_DVORAK) -#define M_RAISE M(MACRO_RAISE) +#define M_UPPER M(MACRO_UPPER) #define M_LOWER M(MACRO_LOWER) #define M_FUNCT M(MACRO_FUNCTION) #define M_MOUSE M(MACRO_MOUSE) @@ -53,12 +56,15 @@ #define TMPO_UP M(MACRO_TEMPO_U) #define TMPO_DN M(MACRO_TEMPO_D) #define TMPO_DF M(MACRO_TONE_DEFAULT) +#define M_BACKL M(MACRO_BACKLIGHT) +#define M_BRTOG M(MACRO_BREATH_TOGGLE) +#define M_BSPDU M(MACRO_BREATH_SPEED_INC) +#define M_BSPDD M(MACRO_BREATH_SPEED_DEC) +#define M_BDFLT M(MACRO_BREATH_DEFAULT) -#define MUS_ON M(MACRO_MUSIC_ON) -#define MUS_OFF M(MACRO_MUSIC_OFF) -#define AUD_OFF M(MACRO_AUDIO_OFF) -#define AUD_ON M(MACRO_AUDIO_ON) +#define MUS_TOG M(MACRO_MUSIC_TOGGLE) +#define AUD_TOG M(MACRO_AUDIO_TOGGLE) #define VC_UP M(MACRO_INC_VOICE) #define VC_DOWN M(MACRO_DEC_VOICE) @@ -74,6 +80,7 @@ #define SC_ACLS LALT(KC_F4) #define SC_CCLS LCTL(KC_F4) +#define OS_SHFT KC_FN0 #define _______ KC_TRNS #define XXXXXXX KC_NO @@ -92,16 +99,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| * | LSHIFT | Z | X | C | V | B | N | M | , | . | / | XXXXXX . RSHIFT | UP | PG DN | * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------| - * | LCTRL | LWIN | FN | LALT | RAISE | XXXXXX . SPACE | LOWER | RALT | RWIN | MENU | RCTRL | LEFT | DOWN | RIGHT | + * | LCTRL | LWIN | FN | LALT | UPPER | XXXXXX . SPACE | LOWER | SHIFT | RALT | APP | RCTRL | LEFT | DOWN | RIGHT | * '--------------------------------------------------------------------------------------------------------------------------------------' */ - [LAYER_QWERTY] = { /* QWERTY */ + [LAYER_QWERTY] = { // QWERTY { KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_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_DEL }, { 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_ENT, KC_PGUP }, { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, KC_PGDN }, - { KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_RAISE, KC_SPC, KC_SPC, M_LOWER, KC_RALT, KC_RGUI, KC_MENU, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT }, + { KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_UPPER, KC_SPC, KC_SPC, M_LOWER, OS_SHFT, KC_RALT, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT }, }, /* COLEMAK @@ -114,17 +121,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| * | LSHIFT | Z | X | C | V | B | K | M | , | . | / | XXXXXX . RSHIFT | UP | PG DN | * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------| - * | LCTRL | LWIN | FN | LALT | RAISE | XXXXXX . SPACE | LOWER | RALT | RWIN | MENU | RCTRL | LEFT | DOWN | RIGHT | + * | LCTRL | LWIN | FN | LALT | UPPER | XXXXXX . SPACE | LOWER | SHIFT | RALT | APP | RCTRL | LEFT | DOWN | RIGHT | * '--------------------------------------------------------------------------------------------------------------------------------------' */ - [LAYER_COLEMAK] = { /* COLEMAK */ + [LAYER_COLEMAK] = { // COLEMAK { KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC }, { KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL }, { KC_BSPC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, KC_ENT, KC_ENT, KC_PGUP }, { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, KC_PGDN }, - { KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_RAISE, KC_SPC, KC_SPC, M_LOWER, KC_RALT, KC_RGUI, KC_MENU, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT }, - }, + { KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_UPPER, KC_SPC, KC_SPC, M_LOWER, OS_SHFT, KC_RALT, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT }, +}, /* DVORAK * .---------------------------------------------------------------------------------------------------------------------- 2u ------------. @@ -136,35 +143,63 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| * | LSHIFT | ; | Q | J | K | X | B | M | W | V | Z | XXXXXX . RSHIFT | UP | PG DN | * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------| - * | LCTRL | LWIN | FN | LALT | RAISE | XXXXXX . SPACE | LOWER | RALT | RWIN | MENU | RCTRL | LEFT | DOWN | RIGHT | + * | LCTRL | LWIN | FN | LALT | UPPER | XXXXXX . SPACE | LOWER | SHIFT | RALT | APP | RCTRL | LEFT | DOWN | RIGHT | * '--------------------------------------------------------------------------------------------------------------------------------------' */ - [LAYER_DVORAK] = { /* DVORAK */ + [LAYER_DVORAK] = { // DVORAK { KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_LBRC, KC_RBRC, KC_BSPC, KC_BSPC }, { KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, KC_EQL, KC_BSLS, KC_DEL }, { KC_CAPS, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, KC_ENT, KC_ENT, KC_PGUP }, { KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT, KC_RSFT, KC_UP, KC_PGDN }, - { KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_RAISE, KC_SPC, KC_SPC, M_LOWER, KC_RALT, KC_RGUI, KC_MENU, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT }, + { KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_UPPER, KC_SPC, KC_SPC, M_LOWER, OS_SHFT, KC_RALT, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT }, }, - [LAYER_RAISE] = { /* RAISED */ - { KC_TILD, KC_PSCR, KC_PAUS, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, ________________ }, - { _______, KC_F1, KC_F2, KC_F3, KC_F4, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS }, - { _______, KC_F5, KC_F6, KC_F7, KC_F8, _______, _______, _______, _______, _______, _______, _______, ________________, KC_HOME }, - { _______, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, ________________, _______, KC_END }, - { _______, _______, _______, _______, _______, ________________, _______, _______, _______, _______, _______, _______, _______, _______ }, +/* UPPER + * .---------------------------------------------------------------------------------------------------------------------- 2u ------------. + * | PRINT | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | NUM LK | / | * | - | NUM LK | SCR LK | XXXXXX . PAUSE | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| + * | | F1 | F2 | F3 | F4 | | | 7 | 8 | 9 | + | ~ | | | INS | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------| + * | CAP LK | F5 | F6 | F7 | F8 | | | 4 | 5 | 6 | + | ` | XXXXXX . | HOME | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| + * | | F9 | F10 | F11 | F12 | | | 1 | 2 | 3 | ENTER | XXXXXX . | | END | + * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------| + * | | | | | | 0 | | RALT | . | ENTER | | | | | + * '--------------------------------------------------------------------------------------------------------------------------------------' + */ + + [LAYER_UPPER] = { // UPPER + { KC_PSCR, M_BRTOG, M_BSPDU, M_BSPDD, M_BDFLT, XXXXXXX, XXXXXXX, KC_NLCK, KC_PSLS, KC_PAST, XXXXXXX, XXXXXXX, KC_SLCK, KC_PAUS, KC_PAUS }, + { _______, KC_F1, KC_F2, KC_F3, KC_F4, XXXXXXX, XXXXXXX, KC_KP_7, KC_KP_8, KC_KP_9, KC_PMNS, _______, _______, _______, KC_INS }, + { KC_CAPS, KC_F5, KC_F6, KC_F7, KC_F8, XXXXXXX, XXXXXXX, KC_KP_4, KC_KP_5, KC_KP_6, KC_PPLS, _______, ________________, KC_HOME }, + { _______, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, XXXXXXX, KC_KP_1, KC_KP_2, KC_KP_3, KC_PENT, ________________, _______, KC_END }, + { _______, _______, _______, _______, _______, KC_KP_0, KC_KP_0, _______, KC_RALT, KC_PDOT, KC_PENT, _______, _______, _______, _______ }, }, - [LAYER_LOWER] = { /* LOWERED */ - { KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, ________________ }, - { _______, KC_F13, KC_F14, KC_F15, KC_F16, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS }, - { _______, KC_F17, KC_F18, KC_F19, KC_F20, _______, _______, _______, _______, _______, _______, _______, ________________, KC_HOME }, - { _______, KC_F21, KC_F22, KC_F23, KC_F24, _______, _______, _______, _______, _______, _______, ________________, _______, KC_END }, - { _______, _______, _______, _______, _______, KC_BSPC, KC_BSPC, _______, _______, _______, _______, _______, _______, _______, _______ }, +/* LOWER + * .---------------------------------------------------------------------------------------------------------------------- 2u ------------. + * | | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | XXXXXX . BACKSP | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| + * | | $ | { | [ | ( | % | # | ) | ] | } | @ | | | | INS | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------| + * | | ^ | * | + | - | ; | : | _ | ' | " | ` | | XXXXXX . | HOME | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| + * | | | | & | ! | ~ | / | \ | = | < | > | ? | XXXXXX . | | END | + * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------| + * | | | | | | | | | | | | | | | + * '--------------------------------------------------------------------------------------------------------------------------------------' + */ + + [LAYER_LOWER] = { // LOWER + { _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, ________________ }, + { _______, KC_DLR, KC_LCBR, KC_LBRC, KC_LPRN, KC_PERC, KC_HASH, KC_RPRN, KC_RBRC, KC_RCBR, KC_AT, _______, _______, _______, KC_INS }, + { _______, KC_CIRC, KC_ASTR, KC_PPLS, KC_PMNS, KC_SCLN, KC_COLN, KC_UNDS, KC_QUOT, KC_DQT, KC_GRV, _______, ________________, KC_HOME }, + { _______, KC_PIPE, KC_AMPR, KC_EXLM, KC_TILD, KC_SLSH, KC_BSLS, KC_EQL, KC_LT, KC_GT, KC_QUES, ________________, _______, KC_END }, + { _______, _______, _______, _______, _______, ________________, _______, _______, _______, _______, _______, _______, _______, _______ }, }, - [LAYER_FUNCTION] = { /* FUNCTION */ + [LAYER_FUNCTION] = { // FUNCTION { KC_NLCK, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, ________________ }, { KC_SLCK, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, _______, KC_PAUS }, { KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ________________, KC_PSCR }, @@ -174,7 +209,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { #ifdef MOUSEKEY_ENABLE - [LAYER_MOUSE] = { /* MOUSE */ + [LAYER_MOUSE] = { // MOUSE { _______, KC_ACL0, KC_ACL1, KC_ACL2, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXXXXXXXXXXX }, { XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX }, { XXXXXXX, KC_BTN5, KC_BTN4, KC_BTN3, KC_BTN2, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXXXXXXXXXXX, KC_WH_U }, @@ -184,25 +219,25 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { #endif - [LAYER_MUSIC] = { /* MUSIC */ + [LAYER_MUSIC] = { // MUSIC { XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX }, { XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX }, { XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX }, { XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX }, - { XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, M_RAISE, XXXXXXX, XXXXXXX, M_LOWER, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX }, + { XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, M_UPPER, XXXXXXX, XXXXXXX, M_LOWER, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX }, }, - [LAYER_ADJUST] = { /* ADJUST */ - { _______, TIMBR_1, TIMBR_2, TIMBR_3, TIMBR_4, TMPO_UP, TMPO_DN, TMPO_DF, _______, MUS_ON, MUS_OFF, AUD_ON, AUD_OFF, ________________ }, + [LAYER_ADJUST] = { // ADJUST + { _______, TIMBR_1, TIMBR_2, TIMBR_3, TIMBR_4, TMPO_UP, TMPO_DN, TMPO_DF, _______, _______, _______, MUS_TOG, AUD_TOG, ________________ }, { _______, M_QWRTY, M_COLMK, M_DVORK, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ________________, _______ }, - { _______, _______, _______, _______, _______, RESET, _______, M_MOUSE, _______, _______, _______, ________________, VC_UP, _______ }, + { _______, _______, _______, _______, M_BACKL, RESET, _______, M_MOUSE, _______, _______, _______, ________________, VC_UP, _______ }, { _______, _______, _______, _______, _______, ________________, _______, _______, _______, _______, _______, _______, VC_DOWN, _______ }, }, /* - [LAYER_EMPTY] = { + [LAYER_EMPTY] = { // LAYER { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ________________ }, { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ________________, _______ }, @@ -241,6 +276,7 @@ void persistant_default_layer_set(uint16_t default_layer) } const uint16_t PROGMEM fn_actions[] = { + [0] = ACTION_MODS_ONESHOT(MOD_LSFT), }; const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) @@ -250,13 +286,41 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) switch(id) { + case MACRO_BREATH_TOGGLE: + if (record->event.pressed) + { + breathing_toggle(); + } + break; + + case MACRO_BREATH_SPEED_INC: + if (record->event.pressed) + { + breathing_speed_inc(1); + } + break; + + case MACRO_BREATH_SPEED_DEC: + if (record->event.pressed) + { + breathing_speed_dec(1); + } + break; + + case MACRO_BREATH_DEFAULT: + if (record->event.pressed) + { + breathing_defaults(); + } + break; + case MACRO_QWERTY: if (record->event.pressed) { persistant_default_layer_set(1UL<event.pressed) { persistant_default_layer_set(1UL<event.pressed) { persistant_default_layer_set(1UL<event.pressed) { - layer_on(LAYER_RAISE); - update_tri_layer(LAYER_LOWER, LAYER_RAISE, LAYER_ADJUST); + layer_on(LAYER_UPPER); + breathing_speed_set(2); + breathing_pulse(); + update_tri_layer(LAYER_LOWER, LAYER_UPPER, LAYER_ADJUST); } else { - layer_off(LAYER_RAISE); - update_tri_layer(LAYER_LOWER, LAYER_RAISE, LAYER_ADJUST); + layer_off(LAYER_UPPER); + update_tri_layer(LAYER_LOWER, LAYER_UPPER, LAYER_ADJUST); } break; @@ -297,22 +363,28 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) if (record->event.pressed) { layer_on(LAYER_LOWER); - update_tri_layer(LAYER_LOWER, LAYER_RAISE, LAYER_ADJUST); + breathing_speed_set(2); + breathing_pulse(); + update_tri_layer(LAYER_LOWER, LAYER_UPPER, LAYER_ADJUST); } else { layer_off(LAYER_LOWER); - update_tri_layer(LAYER_LOWER, LAYER_RAISE, LAYER_ADJUST); + update_tri_layer(LAYER_LOWER, LAYER_UPPER, LAYER_ADJUST); } break; case MACRO_FUNCTION: if (record->event.pressed) { + breathing_speed_set(3); + breathing_enable(); layer_on(LAYER_FUNCTION); } else { + breathing_speed_set(1); + breathing_self_disable(); layer_off(LAYER_FUNCTION); } break; @@ -362,42 +434,34 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) } break; - case MACRO_AUDIO_OFF: - if (record->event.pressed) - { - #ifdef AUDIO_ENABLE - audio_off(); - #endif - } - break; - - case MACRO_AUDIO_ON: + case MACRO_AUDIO_TOGGLE: if (record->event.pressed) { - #ifdef AUDIO_ENABLE - audio_on(); - PLAY_NOTE_ARRAY(tone_audio_on, false, STACCATO); - #endif + if (is_audio_on()) + { + audio_off(); + } + else + { + audio_on(); + PLAY_NOTE_ARRAY(tone_audio_on, false, STACCATO); + } } break; - case MACRO_MUSIC_ON: + case MACRO_MUSIC_TOGGLE: if (record->event.pressed) { - #ifdef AUDIO_ENABLE + if (IS_LAYER_ON(LAYER_MUSIC)) + { + layer_off(LAYER_MUSIC); + stop_all_notes(); + } + else + { PLAY_NOTE_ARRAY(tone_music_on, false, STACCATO); layer_on(LAYER_MUSIC); - #endif - } - break; - - case MACRO_MUSIC_OFF: - if (record->event.pressed) - { - #ifdef AUDIO_ENABLE - layer_off(LAYER_MUSIC); - stop_all_notes(); - #endif + } } break; @@ -423,6 +487,14 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) #endif /* AUDIO_ENABLE */ +#ifdef BACKLIGHT_ENABLE + case MACRO_BACKLIGHT: + if (record->event.pressed) + { + backlight_step(); + } +#endif + default: break; @@ -467,39 +539,39 @@ void led_set_user(uint8_t usb_led) _delay_ms(10); // gets rid of tick - if (!is_playing_notes()) - { - if ((usb_led & (1<event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_qwerty, false, 0); + #endif + persistant_default_layer_set(1UL<<_QWERTY); + } + break; + case _COLEMAK: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_colemak, false, 0); + #endif + persistant_default_layer_set(1UL<<_COLEMAK); + } + break; + case _DVORAK: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_dvorak, false, 0); + #endif + persistant_default_layer_set(1UL<<_DVORAK); + } + break; + case _LOWER: + if (record->event.pressed) { + layer_on(_LOWER); + breathing_speed_set(2); + breathing_pulse(); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + break; + case _RAISE: + if (record->event.pressed) { + layer_on(_RAISE); + breathing_speed_set(2); + breathing_pulse(); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + break; + case M_BL: + if (record->event.pressed) { + register_code(KC_RSFT); + #ifdef BACKLIGHT_ENABLE + backlight_step(); + #endif + } else { + unregister_code(KC_RSFT); + } + break; + case 6: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + audio_off(); + #endif + } + break; + case 7: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + audio_on(); + PLAY_NOTE_ARRAY(tone_startup, false, 0); + #endif + } + break; + case 8: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + layer_off(_MUSIC); + stop_all_notes(); + #endif + } + break; + case 9: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(music_scale, false, 0); + layer_on(_MUSIC); + #endif + } + break; + case 10: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + voice_iterate(); + PLAY_NOTE_ARRAY(music_scale, false, 0); + #endif + } + break; + case 11: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + voice_deiterate(); + PLAY_NOTE_ARRAY(music_scale, false, 0); + #endif + } + break; + case 12: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + stop_all_notes(); + PLAY_NOTE_ARRAY(tone_plover, false, 0); + #endif + layer_off(_RAISE); + layer_off(_LOWER); + layer_off(_ADJUST); + layer_off(_MUSIC); + layer_on(_PLOVER); + if (!eeconfig_is_enabled()) { + eeconfig_init(); + } + keymap_config.raw = eeconfig_read_keymap(); + keymap_config.nkro = 1; + eeconfig_update_keymap(keymap_config.raw); + } + break; + case 13: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_plover_gb, false, 0); + #endif + layer_off(_PLOVER); + } + break; + + } + return MACRO_NONE; +}; + +void matrix_init_user(void) { + #ifdef AUDIO_ENABLE + _delay_ms(20); // stops the tick + PLAY_NOTE_ARRAY(tone_startup, false, 0); + #endif +} + +#ifdef AUDIO_ENABLE +void play_goodbye_tone() +{ + PLAY_NOTE_ARRAY(goodbye, false, 0); + _delay_ms(150); +} + +uint8_t starting_note = 0x0C; +int offset = 0; + +void process_action_user(keyrecord_t *record) { + + if (IS_LAYER_ON(_MUSIC)) { + if (record->event.pressed) { + play_note(((double)220.0)*pow(2.0, -4.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row)), 0xF); + } else { + stop_note(((double)220.0)*pow(2.0, -4.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row))); + } + } + +} +#endif diff --git a/keyboard/planck/keymaps/experimental/makefile.mk b/keyboard/planck/keymaps/experimental/makefile.mk new file mode 100644 index 0000000000..99fbfbd0bb --- /dev/null +++ b/keyboard/planck/keymaps/experimental/makefile.mk @@ -0,0 +1,2 @@ +AUDIO_ENABLE = yes +NKRO_ENABLE = yes \ No newline at end of file diff --git a/keyboard/planck/keymaps/pvc/keymap.c b/keyboard/planck/keymaps/pvc/keymap.c index 830b00a4c4..177f04484d 100644 --- a/keyboard/planck/keymaps/pvc/keymap.c +++ b/keyboard/planck/keymaps/pvc/keymap.c @@ -38,6 +38,7 @@ #define MACRO_AUDIO_OFF 17 #define MACRO_INC_VOICE 18 #define MACRO_DEC_VOICE 19 +#define MACRO_BACKLIGHT 20 #define M_QWRTY M(MACRO_QWERTY) #define M_COLMK M(MACRO_COLEMAK) @@ -53,6 +54,7 @@ #define TMPO_UP M(MACRO_TEMPO_U) #define TMPO_DN M(MACRO_TEMPO_D) #define TMPO_DF M(MACRO_TONE_DEFAULT) +#define M_BACKL M(MACRO_BACKLIGHT) #define MUS_ON M(MACRO_MUSIC_ON) @@ -217,7 +219,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [LAYER_ADJUST] = { /* ADJUST */ { _______, TIMBR_1, TIMBR_2, TIMBR_3, TIMBR_4, TMPO_UP, TMPO_DN, TMPO_DF, MUS_ON, MUS_OFF, AUD_ON, AUD_OFF }, { _______, M_QWRTY, M_COLMK, M_DVORK, _______, _______, _______, _______, _______, _______, _______, _______ }, - { _______, _______, _______, _______, _______, RESET, _______, M_MOUSE, _______, _______, _______, _______ }, + { _______, _______, _______, _______, M_BACKL, RESET, _______, M_MOUSE, _______, _______, _______, _______ }, { _______, _______, _______, _______, _______, _______, _______, _______, VC_UP, VC_DOWN, _______, _______ }, }, @@ -337,6 +339,15 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) } break; + +#ifdef BACKLIGHT_ENABLE + case MACRO_BACKLIGHT: + if (record->event.pressed) + { + backlight_step(); + } +#endif + #ifdef MOUSEKEY_ENABLE case MACRO_MOUSE: diff --git a/keyboard/planck/keymaps/pvc/makefile.mk b/keyboard/planck/keymaps/pvc/makefile.mk index b3f1b9e51c..f7798b09d5 100644 --- a/keyboard/planck/keymaps/pvc/makefile.mk +++ b/keyboard/planck/keymaps/pvc/makefile.mk @@ -1,12 +1,12 @@ BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = yes # Console for debug(+400) +CONSOLE_ENABLE = no # Console for debug(+400) COMMAND_ENABLE = yes # Commands for debug and configuration NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = yes # Audio output on port C6 UNICODE_ENABLE = no # Unicode BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. diff --git a/keyboard/planck/planck.c b/keyboard/planck/planck.c index 6558501504..446353dbf5 100644 --- a/keyboard/planck/planck.c +++ b/keyboard/planck/planck.c @@ -9,6 +9,9 @@ void matrix_scan_user(void) {} __attribute__ ((weak)) void process_action_user(keyrecord_t *record) {} +__attribute__ ((weak)) +void led_set_user(uint8_t usb_led) {} + void matrix_init_kb(void) { #ifdef BACKLIGHT_ENABLE backlight_init_ports(); @@ -33,8 +36,22 @@ void process_action_kb(keyrecord_t *record) { process_action_user(record); } +void led_set_kb(uint8_t usb_led) { + // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here + + led_set_user(usb_led); +} + #ifdef BACKLIGHT_ENABLE #define CHANNEL OCR1C +#define BREATHING_NO_HALT 0 +#define BREATHING_HALT_OFF 1 +#define BREATHING_HALT_ON 2 + +static uint8_t breath_intensity; +static uint8_t breath_speed; +static uint16_t breathing_index; +static uint8_t breathing_halt; void backlight_init_ports() { @@ -60,22 +77,22 @@ void backlight_init_ports() TCCR1B = _BV(WGM13) | _BV(WGM12) | _BV(CS10); // = 0b00011001; backlight_init(); + breathing_defaults(); } void backlight_set(uint8_t level) { + // Prevent backlight blink on lowest level + PORTB &= ~(_BV(PORTB7)); + if ( level == 0 ) { // Turn off PWM control on PB7, revert to output low. TCCR1A &= ~(_BV(COM1C1)); CHANNEL = 0x0; - // Prevent backlight blink on lowest level - PORTB &= ~(_BV(PORTB7)); } else if ( level == BACKLIGHT_LEVELS ) { - // Prevent backlight blink on lowest level - PORTB &= ~(_BV(PORTB7)); // Turn on PWM control of PB7 TCCR1A |= _BV(COM1C1); // Set the brightness @@ -83,13 +100,205 @@ void backlight_set(uint8_t level) } else { - // Prevent backlight blink on lowest level - PORTB &= ~(_BV(PORTB7)); // Turn on PWM control of PB7 TCCR1A |= _BV(COM1C1); // Set the brightness CHANNEL = 0xFFFF >> ((BACKLIGHT_LEVELS - level) * ((BACKLIGHT_LEVELS + 1) / 2)); } + breathing_intensity_default(); +} + + +void breathing_enable(void) +{ + if (get_backlight_level() == 0) + { + breathing_index = 0; + } + else + { + // Set breathing_index to be at the midpoint (brightest point) + breathing_index = 0x20 << breath_speed; + } + + breathing_halt = BREATHING_NO_HALT; + + // Enable breathing interrupt + TIMSK1 |= _BV(OCIE1A); +} + +void breathing_pulse(void) +{ + if (get_backlight_level() == 0) + { + breathing_index = 0; + } + else + { + // Set breathing_index to be at the midpoint + 1 (brightest point) + breathing_index = 0x21 << breath_speed; + } + + breathing_halt = BREATHING_HALT_ON; + + // Enable breathing interrupt + TIMSK1 |= _BV(OCIE1A); } +void breathing_disable(void) +{ + // Disable breathing interrupt + TIMSK1 &= ~_BV(OCIE1A); + backlight_set(get_backlight_level()); +} + +void breathing_self_disable(void) +{ + if (get_backlight_level() == 0) + { + breathing_halt = BREATHING_HALT_OFF; + } + else + { + breathing_halt = BREATHING_HALT_ON; + } + + //backlight_set(get_backlight_level()); +} + +void breathing_toggle(void) +{ + if (!is_breathing()) + { + if (get_backlight_level() == 0) + { + breathing_index = 0; + } + else + { + // Set breathing_index to be at the midpoint + 1 (brightest point) + breathing_index = 0x21 << breath_speed; + } + + breathing_halt = BREATHING_NO_HALT; + } + + // Toggle breathing interrupt + TIMSK1 ^= _BV(OCIE1A); + + // Restore backlight level + if (!is_breathing()) + { + backlight_set(get_backlight_level()); + } +} + +bool is_breathing(void) +{ + return (TIMSK1 && _BV(OCIE1A)); +} + +void breathing_intensity_default(void) +{ + //breath_intensity = (uint8_t)((uint16_t)100 * (uint16_t)get_backlight_level() / (uint16_t)BACKLIGHT_LEVELS); + breath_intensity = ((BACKLIGHT_LEVELS - get_backlight_level()) * ((BACKLIGHT_LEVELS + 1) / 2)); +} + +void breathing_intensity_set(uint8_t value) +{ + breath_intensity = value; +} + +void breathing_speed_default(void) +{ + breath_speed = 4; +} + +void breathing_speed_set(uint8_t value) +{ + bool is_breathing_now = is_breathing(); + uint8_t old_breath_speed = breath_speed; + + if (is_breathing_now) + { + // Disable breathing interrupt + TIMSK1 &= ~_BV(OCIE1A); + } + + breath_speed = value; + + if (is_breathing_now) + { + // Adjust index to account for new speed + breathing_index = (( (uint8_t)( (breathing_index) >> old_breath_speed ) ) & 0x3F) << breath_speed; + + // Enable breathing interrupt + TIMSK1 |= _BV(OCIE1A); + } + +} + +void breathing_speed_inc(uint8_t value) +{ + if ((uint16_t)(breath_speed - value) > 10 ) + { + breathing_speed_set(0); + } + else + { + breathing_speed_set(breath_speed - value); + } +} + +void breathing_speed_dec(uint8_t value) +{ + if ((uint16_t)(breath_speed + value) > 10 ) + { + breathing_speed_set(10); + } + else + { + breathing_speed_set(breath_speed + value); + } +} + +void breathing_defaults(void) +{ + breathing_intensity_default(); + breathing_speed_default(); + breathing_halt = BREATHING_NO_HALT; +} + +/* Breathing Sleep LED brighness(PWM On period) table + * (64[steps] * 4[duration]) / 64[PWM periods/s] = 4 second breath cycle + * + * http://www.wolframalpha.com/input/?i=%28sin%28+x%2F64*pi%29**8+*+255%2C+x%3D0+to+63 + * (0..63).each {|x| p ((sin(x/64.0*PI)**8)*255).to_i } + */ +static const uint8_t breathing_table[64] PROGMEM = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 4, 6, 10, + 15, 23, 32, 44, 58, 74, 93, 113, 135, 157, 179, 199, 218, 233, 245, 252, +255, 252, 245, 233, 218, 199, 179, 157, 135, 113, 93, 74, 58, 44, 32, 23, + 15, 10, 6, 4, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +}; + +ISR(TIMER1_COMPA_vect) +{ + // CHANNEL = (pgm_read_byte(&breathing_table[ ( (uint8_t)( (breathing_index++) >> breath_speed ) ) & 0x3F ] )) * breath_intensity; + + + uint8_t local_index = ( (uint8_t)( (breathing_index++) >> breath_speed ) ) & 0x3F; + + if (((breathing_halt == BREATHING_HALT_ON) && (local_index == 0x20)) || ((breathing_halt == BREATHING_HALT_OFF) && (local_index == 0x3F))) + { + // Disable breathing interrupt + TIMSK1 &= ~_BV(OCIE1A); + } + + CHANNEL = (uint16_t)(((uint16_t)pgm_read_byte(&breathing_table[local_index]) * 257)) >> breath_intensity; + +} + + + #endif \ No newline at end of file diff --git a/keyboard/planck/planck.h b/keyboard/planck/planck.h index c5b59d9998..cfd4956bf1 100644 --- a/keyboard/planck/planck.h +++ b/keyboard/planck/planck.h @@ -45,4 +45,22 @@ void matrix_init_user(void); void matrix_scan_user(void); void process_action_user(keyrecord_t *record); +void led_set_user(uint8_t usb_led); +void backlight_init_ports(void); + +void breathing_enable(void); +void breathing_pulse(void); +void breathing_disable(void); +void breathing_self_disable(void); +void breathing_toggle(void); +bool is_breathing(void); + + +void breathing_defaults(void); +void breathing_intensity_default(void); +void breathing_speed_default(void); +void breathing_speed_set(uint8_t value); +void breathing_speed_inc(uint8_t value); +void breathing_speed_dec(uint8_t value); + #endif diff --git a/quantum/audio/audio.c b/quantum/audio/audio.c index 3a7f0f5567..27b64f8c96 100644 --- a/quantum/audio/audio.c +++ b/quantum/audio/audio.c @@ -374,6 +374,10 @@ bool is_playing_notes(void) { return playing_notes; } +bool is_audio_on(void) { + return (audio_config.enable != 0); +} + void audio_toggle(void) { audio_config.enable ^= 1; eeconfig_update_audio(audio_config.raw); diff --git a/quantum/audio/audio.h b/quantum/audio/audio.h index 3d706587ab..4ba879bbb1 100644 --- a/quantum/audio/audio.h +++ b/quantum/audio/audio.h @@ -25,6 +25,7 @@ typedef union { }; } audio_config_t; +bool is_audio_on(void); void audio_toggle(void); void audio_on(void); void audio_off(void); @@ -71,11 +72,11 @@ void stop_note(float freq); void stop_all_notes(void); void play_notes(float (*np)[][2], uint16_t n_count, bool n_repeat, float n_rest); -#define SCALE (int []){ 0 + (12*0), 2 + (12*0), 4 + (12*0), 5 + (12*0), 7 + (12*0), 9 + (12*0), 11 + (12*0), \ - 0 + (12*1), 2 + (12*1), 4 + (12*1), 5 + (12*1), 7 + (12*1), 9 + (12*1), 11 + (12*1), \ - 0 + (12*2), 2 + (12*2), 4 + (12*2), 5 + (12*2), 7 + (12*2), 9 + (12*2), 11 + (12*2), \ - 0 + (12*3), 2 + (12*3), 4 + (12*3), 5 + (12*3), 7 + (12*3), 9 + (12*3), 11 + (12*3), \ - 0 + (12*4), 2 + (12*4), 4 + (12*4), 5 + (12*4), 7 + (12*4), 9 + (12*4), 11 + (12*4), } +#define SCALE (int8_t []){ 0 + (12*0), 2 + (12*0), 4 + (12*0), 5 + (12*0), 7 + (12*0), 9 + (12*0), 11 + (12*0), \ + 0 + (12*1), 2 + (12*1), 4 + (12*1), 5 + (12*1), 7 + (12*1), 9 + (12*1), 11 + (12*1), \ + 0 + (12*2), 2 + (12*2), 4 + (12*2), 5 + (12*2), 7 + (12*2), 9 + (12*2), 11 + (12*2), \ + 0 + (12*3), 2 + (12*3), 4 + (12*3), 5 + (12*3), 7 + (12*3), 9 + (12*3), 11 + (12*3), \ + 0 + (12*4), 2 + (12*4), 4 + (12*4), 5 + (12*4), 7 + (12*4), 9 + (12*4), 11 + (12*4), } // These macros are used to allow play_notes to play an array of indeterminate // length. This works around the limitation of C's sizeof operation on pointers. diff --git a/quantum/keymap_common.h b/quantum/keymap_common.h index 8c27e90352..322fda498a 100644 --- a/quantum/keymap_common.h +++ b/quantum/keymap_common.h @@ -87,8 +87,11 @@ extern const uint16_t fn_actions[]; #define KC_EXCLAIM KC_EXLM #define KC_AT LSFT(KC_2) // @ + + #define KC_HASH LSFT(KC_3) // # + #define KC_DLR LSFT(KC_4) // $ #define KC_DOLLAR KC_DLR @@ -110,11 +113,13 @@ extern const uint16_t fn_actions[]; #define KC_RPRN LSFT(KC_0) // ) #define KC_RIGHT_PAREN KC_RPRN + #define KC_UNDS LSFT(KC_MINS) // _ #define KC_UNDERSCORE KC_UNDS #define KC_PLUS LSFT(KC_EQL) // + + #define KC_LCBR LSFT(KC_LBRC) // { #define KC_LEFT_CURLY_BRACE KC_LCBR @@ -132,6 +137,19 @@ extern const uint16_t fn_actions[]; #define KC_PIPE LSFT(KC_BSLS) // | +#define KC_LT LSFT(KC_COMM) // < + + +#define KC_GT LSFT(KC_DOT) // > + + +#define KC_QUES LSFT(KC_SLSH) // ? +#define KC_QUESTION KC_QUES + + +#define KC_DQT LSFT(KC_QUOT) // " +#define KC_DOUBLE_QUOTE KC_DQT + #define KC_DELT KC_DELETE // Del key (four letter code) // Alias for function layers than expand past FN31 diff --git a/quantum/keymap_midi.h b/quantum/keymap_midi.h index 795f26380e..3a2bf3afff 100644 --- a/quantum/keymap_midi.h +++ b/quantum/keymap_midi.h @@ -25,11 +25,11 @@ along with this program. If not, see . #define CHNL(note, channel) (note + (channel << 8)) -#define SCALE (int []){ 0 + (12*0), 2 + (12*0), 4 + (12*0), 5 + (12*0), 7 + (12*0), 9 + (12*0), 11 + (12*0), \ - 0 + (12*1), 2 + (12*1), 4 + (12*1), 5 + (12*1), 7 + (12*1), 9 + (12*1), 11 + (12*1), \ - 0 + (12*2), 2 + (12*2), 4 + (12*2), 5 + (12*2), 7 + (12*2), 9 + (12*2), 11 + (12*2), \ - 0 + (12*3), 2 + (12*3), 4 + (12*3), 5 + (12*3), 7 + (12*3), 9 + (12*3), 11 + (12*3), \ - 0 + (12*4), 2 + (12*4), 4 + (12*4), 5 + (12*4), 7 + (12*4), 9 + (12*4), 11 + (12*4), } +#define SCALE (int8_t []){ 0 + (12*0), 2 + (12*0), 4 + (12*0), 5 + (12*0), 7 + (12*0), 9 + (12*0), 11 + (12*0), \ + 0 + (12*1), 2 + (12*1), 4 + (12*1), 5 + (12*1), 7 + (12*1), 9 + (12*1), 11 + (12*1), \ + 0 + (12*2), 2 + (12*2), 4 + (12*2), 5 + (12*2), 7 + (12*2), 9 + (12*2), 11 + (12*2), \ + 0 + (12*3), 2 + (12*3), 4 + (12*3), 5 + (12*3), 7 + (12*3), 9 + (12*3), 11 + (12*3), \ + 0 + (12*4), 2 + (12*4), 4 + (12*4), 5 + (12*4), 7 + (12*4), 9 + (12*4), 11 + (12*4), } #define N_CN1 (0x600C + (12 * -1) + 0 ) #define N_CN1S (0x600C + (12 * -1) + 1 ) diff --git a/quantum/quantum.mk b/quantum/quantum.mk index ff34c463a0..5f4c2f0450 100644 --- a/quantum/quantum.mk +++ b/quantum/quantum.mk @@ -28,9 +28,9 @@ ifeq ($(strip $(MIDI_ENABLE)), yes) endif ifeq ($(strip $(AUDIO_ENABLE)), yes) - SRC += $(QUANTUM_DIR)/audio/audio.c - SRC += $(QUANTUM_DIR)/audio/voices.c - SRC += $(QUANTUM_DIR)/audio/luts.c + SRC += $(QUANTUM_DIR)/audio/audio.c + SRC += $(QUANTUM_DIR)/audio/voices.c + SRC += $(QUANTUM_DIR)/audio/luts.c endif ifeq ($(strip $(UNICODE_ENABLE)), yes) diff --git a/tmk_core/common/backlight.c b/tmk_core/common/backlight.c index 2f6fc1cd6c..c9e8fd3fd2 100644 --- a/tmk_core/common/backlight.c +++ b/tmk_core/common/backlight.c @@ -83,3 +83,8 @@ void backlight_level(uint8_t level) eeconfig_update_backlight(backlight_config.raw); backlight_set(backlight_config.level); } + +uint8_t get_backlight_level(void) +{ + return backlight_config.level; +} \ No newline at end of file diff --git a/tmk_core/common/backlight.h b/tmk_core/common/backlight.h index 525ec8bbef..f573092674 100644 --- a/tmk_core/common/backlight.h +++ b/tmk_core/common/backlight.h @@ -36,5 +36,6 @@ void backlight_toggle(void); void backlight_step(void); void backlight_set(uint8_t level); void backlight_level(uint8_t level); +uint8_t get_backlight_level(void); #endif diff --git a/tmk_core/common/command.c b/tmk_core/common/command.c index f06abaf7f0..9edcc42a05 100644 --- a/tmk_core/common/command.c +++ b/tmk_core/common/command.c @@ -357,9 +357,11 @@ static bool command_common(uint8_t code) clear_keyboard(); // clear to prevent stuck keys print("\n\nJumping to bootloader... "); #ifdef AUDIO_ENABLE + stop_all_notes(); play_goodbye_tone(); + #else + _delay_ms(1000); #endif - _delay_ms(1000); bootloader_jump(); // not return break; diff --git a/tmk_core/common/nodebug.h b/tmk_core/common/nodebug.h index 93309ada47..5e18656e5b 100644 --- a/tmk_core/common/nodebug.h +++ b/tmk_core/common/nodebug.h @@ -16,10 +16,14 @@ along with this program. If not, see . */ #ifndef NODEBUG_H -#define NODEBUG_H 1 +#define NODEBUG_H -#define NO_DEBUG -#include "debug.h" -#undef NO_DEBUG +#ifndef NO_DEBUG + #define NO_DEBUG + #include "debug.h" + #undef NO_DEBUG +#else + #include "debug.h" +#endif #endif -- cgit v1.2.1 From 6d343f3559db895e9eb6976477a958d962f703ce Mon Sep 17 00:00:00 2001 From: Thiago Alves Date: Mon, 25 Apr 2016 23:46:37 -0700 Subject: Add my personal keymap for OSX use. This keymap was created to have a feel keys on a different place and to have as fewer layers as possible. Currently I have only 2 extra layers and only one of them is really required to have all possible keys available. Check out the README.md file for more information. --- keyboard/ergodox_ez/Makefile | 2 +- keyboard/ergodox_ez/config.h | 2 + keyboard/ergodox_ez/keymaps/townk_osx/keymap.c | 287 +++++ .../ergodox_ez/keymaps/townk_osx/townk_osx.hex | 1166 ++++++++++++++++++++ 4 files changed, 1456 insertions(+), 1 deletion(-) create mode 100644 keyboard/ergodox_ez/keymaps/townk_osx/keymap.c create mode 100644 keyboard/ergodox_ez/keymaps/townk_osx/townk_osx.hex diff --git a/keyboard/ergodox_ez/Makefile b/keyboard/ergodox_ez/Makefile index 3a07ec254f..f4a61dde4b 100644 --- a/keyboard/ergodox_ez/Makefile +++ b/keyboard/ergodox_ez/Makefile @@ -96,7 +96,7 @@ EXTRAKEY_ENABLE = yes # Audio control and System control(+450) # CONSOLE_ENABLE = yes # Console for debug(+400) COMMAND_ENABLE = yes # Commands for debug and configuration CUSTOM_MATRIX = yes # Custom matrix file for the ErgoDox EZ -SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work # MIDI_ENABLE = yes # MIDI controls # UNICODE_ENABLE = yes # Unicode diff --git a/keyboard/ergodox_ez/config.h b/keyboard/ergodox_ez/config.h index 6a391ffb54..58ba690afd 100644 --- a/keyboard/ergodox_ez/config.h +++ b/keyboard/ergodox_ez/config.h @@ -86,5 +86,7 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION //#define DEBUG_MATRIX_SCAN_RATE +#define ONESHOT_TAP_TOGGLE 2 +#define ONESHOT_TIMEOUT 3000 #endif diff --git a/keyboard/ergodox_ez/keymaps/townk_osx/keymap.c b/keyboard/ergodox_ez/keymaps/townk_osx/keymap.c new file mode 100644 index 0000000000..62ebc5c3ac --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/townk_osx/keymap.c @@ -0,0 +1,287 @@ +#include "ergodox_ez.h" +#include "debug.h" +#include "action_layer.h" +#include "action_util.h" +#include "led.h" +#include "keymap_common.h" +#include "timer.h" + +/* + +# Why this Layout + +This layout was based on Kinesis layout and other ErgoDox user layouts +available. It's target to be used on a MacOS but I'm pretty sure it can be +addapted to Windows and/or Linux easily. + +## Function Key + +The `fn` key work almost like it would in any other keyboard with the exception +it has a semi-sticky behavior. What does that mean? + +Well, if you press the `fn` and release it, the keyboard will be put on the +_function layout_ and the next key stroke will be processed as if the `fn` key +was pressed. Aftwards, the leyout get back to _normal_. If you hold `fn` and +press any other key, when you release them, the keyboard leyout is back to +_normal_. + +While pressing the `fn` with the left hand and strikeing the other keys on the +right hand is farly easy, the same cannot being said for the other keys on the +left side. So, instead of trying to do contorcionism with my left hand, I +decided to do a semi-sticky version of `fn`. This way, I can press the `fn` +key with my pinky, release it and press the `1` key to issue an `F1` to the +operating system. + +## Key-Pad Key + +The `key pad` key is a layout switch key. If pressed, it will put the keyboard +on the _key pad layout_ and stay there until key is pressed again. + +This is used to make the keyboard behave mostly like a **num pad keyboard**. + +## Notes +- Regardless in which layout you are, keys from other layouts are not + accessible. This means that if you are on the _key pad layout_, the left hand + will be pretty much unusable. + Of course that like anything else, there are exceptions to this rule. + Modifiers should remain accessible throughout the layers. +- The _shift key_ is, like the _function key_, also configured to have a sticky + behavior. +- All sticky keys have a timeout of 3 seconds. + +*/ +#define BASE 0 +#define KEYPAD 1 +#define FN 2 + +#define MACRO_TMUX_ESC 10 +#define MACRO_SHIFT_OR_LPAREN 11 +#define MACRO_SHIFT_OR_RPAREN 12 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* Keymap 0: Base Layer + * + * ,-----------------------------------------------------. ,-----------------------------------------------------. + * | `~ | 1 | 2 | 3 | 4 | 5 | ESC | | Macro| 6 | 7 | 8 | 9 | 0 | + = | + * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------| + * | Tab | Q | W | E | R | T | F16 | | F17 | Y | U | I | O | P | - _ | + * |-----------+------+------+------+------+------| Meh | | Meh |------+------+------+------+------+-----------| + * | \ (Ctrl) | A | S | D | F | G |------| |------| H | J | K | L | ; | ' " (Ctrl)| + * |-----------+------+------+------+------+------| F18 | | F19 |------+------+------+------+------+-----------| + * | LShift | Z | X | C | V | B | Hyper| | Hyper| N | M | , | . | / | RShift | + * `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------' + * | FN | No |LCtrl | LAlt | LGui | | RGui | RAlt | RCtrl| No | KPAD | + * `-----------------------------------' `-----------------------------------' + * ,-------------. ,-------------. + * | Left | Right| | Down | Up | + * ,------|------|------| |------+------+------. + * | | | Home | | PgUp | | | + * |Backsp| Del |------| |------| Enter| Space| + * | | | End | | PgDn | | | + * `--------------------' `--------------------' + * + * Macro = Ctrk+A Esc + * (this is used to issue the Esc key to the Tmux application) + */ +[BASE]=KEYMAP(//left half + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_ESC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, MEH_T(KC_F16), + CTL_T(KC_BSLS), KC_A, KC_S, KC_D, KC_F, KC_G, + KC_FN2, KC_Z, KC_X, KC_C, KC_V, KC_B, ALL_T(KC_F18), + KC_FN1, KC_NO, KC_LCTRL, KC_LALT, KC_LGUI, + KC_LEFT, KC_RIGHT, + KC_HOME, + KC_BSPC, KC_DELT, KC_END, + //right half + M(MACRO_TMUX_ESC), KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQL, + MEH_T(KC_F17), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS, + KC_H, KC_J, KC_K, KC_L, KC_SCLN, CTL_T(KC_QUOT), + ALL_T(KC_F19), KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_FN2, + KC_RGUI, ALT_T(KC_LBRC), CTL_T(KC_RBRC), KC_NO, TG(KEYPAD), + KC_DOWN, KC_UP, + KC_PGUP, + KC_PGDN, KC_ENT, KC_SPC), + +/* Keymap 1: KeyPad Layer + * + * ,-----------------------------------------------------. ,-----------------------------------------------------. + * | | | | | | | | | BTab | Clear| / | * | ^ | ( | LeftClick | + * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------| + * | M.Accel 2 | |ScrlUp| U |ScrlDn| | | | Tab | 7 | 8 | 9 | + | ) | RightClick| + * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------| + * | M.Accel 1 | | L | D | R | |------| |------| 4 | 5 | 6 | - | | MidClick | + * |-----------+------+------+------+------+------| | |Return|------+------+------+------+------+-----------| + * | M.Accel 0 | |ScrlL | |ScrlR | | | | | 1 | 2 | 3 | = | | | + * `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------' + * | | | | | | | 0 | . | , | | KPAD | + * `-----------------------------------' `-----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | | | + * | | |------| |------| | | + * | | | | | | | | + * `--------------------' `--------------------' + */ +[KEYPAD]=KEYMAP(//left half + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_MS_WH_UP, KC_MS_U, KC_MS_WH_DOWN, KC_NO, KC_NO, + KC_NO, KC_NO, KC_MS_L, KC_MS_D, KC_MS_R, KC_NO, + KC_NO, KC_NO, KC_MS_WH_LEFT, KC_NO, KC_MS_WH_RIGHT, KC_NO, KC_NO, + KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, + KC_NO, + KC_NO, KC_NO, KC_NO, + //right half + LSFT(KC_TAB), KC_CLEAR, KC_KP_SLASH, KC_KP_ASTERISK, KC_CIRCUMFLEX, KC_LPRN, KC_MS_BTN1, + KC_TAB, KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_PLUS, KC_RPRN, KC_MS_BTN2, + KC_KP_4, KC_KP_5, KC_KP_6, KC_KP_MINUS, KC_NO, KC_MS_BTN3, + KC_KP_ENTER, KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_EQUAL, KC_NO, KC_NO, + KC_KP_0, KC_KP_DOT, KC_KP_COMMA, KC_NO, KC_TRNS, + KC_NO, KC_NO, + KC_NO, + KC_NO, KC_NO, KC_NO), + +/* Keymap 2: Functions Layer + * + * ,-----------------------------------------------------. ,-----------------------------------------------------. + * | | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 | Vol. Up | + * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------| + * | | Stop | Rw | Rec | FF | | XXXX | | XXXX | | | | | | Vol. Down | + * |-----------+------+------+------+------+------| XXXX | | XXXX |------+------+------+------+------+-----------| + * | CapsLock | Eject| Prev | Play | Next | |------| |------| Left | Down | Up | Right| | Mute | + * |-----------+------+------+------+------+------| XXXX | | XXXX |------+------+------+------+------+-----------| + * | L Shift | | | | | | XXXX | | XXXX | | | | | | R Shift | + * `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------' + * | XXXXX | | XXXX | XXXX | XXXX | | XXXX | XXXX | XXXX | | | + * `-----------------------------------' `-----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | | | + * | | |------| |------| | | + * | | | | | | | | + * `--------------------' `--------------------' + * + * XXX = These keys are transparent keys that, when pressed, they issue the key from the previous layer. + */ +[FN]=KEYMAP(//left half + KC_NO, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, + KC_NO, KC_MEDIA_STOP, KC_MEDIA_REWIND, KC_MEDIA_SELECT, KC_MEDIA_FAST_FORWARD, KC_NO, KC_TRNS, + KC_CAPS, KC_MEDIA_EJECT, KC_MEDIA_PREV_TRACK, KC_MEDIA_PLAY_PAUSE, KC_MEDIA_NEXT_TRACK, KC_NO, + KC_LSFT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, + KC_TRNS, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, + KC_NO, KC_NO, + KC_NO, + KC_NO, KC_NO, KC_NO, + //right half + KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_VOLU, + KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_VOLD, + KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_NO, KC_MUTE, + KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_RSFT, + KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_NO, + KC_NO, KC_NO, + KC_NO, + KC_NO, KC_NO, KC_NO)}; + +const uint16_t PROGMEM fn_actions[] = { + [1] = ACTION_LAYER_ONESHOT(FN), + [2] = ACTION_MODS_ONESHOT(MOD_LSFT), // Sticky shift light. Tap for the next keypress to be shifted. Hold for regular shift. +}; + +static uint16_t key_timer; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { + // MACRODOWN only works in this function + switch(id) { + case MACRO_TMUX_ESC: + if (record->event.pressed) { + return MACRO(D(LCTRL), T(A), U(LCTRL), D(ESC), END); + } + return MACRO(U(ESC), END); + case MACRO_SHIFT_OR_LPAREN: { + if (record->event.pressed) { + key_timer = timer_read(); // if the key is being pressed, we start the timer. + register_code(KC_LSFT); // we're now holding down Shift. + } else { // this means the key was just released, so we can figure out how long it was pressed for (tap or "held down"). + if (timer_elapsed(key_timer) < TAPPING_TERM) { // the threshhold we pick for counting something as a tap. + register_code(KC_9); // sending 9 while Shift is held down gives us an opening paren + unregister_code(KC_9); // now let's let go of that key + } + unregister_code(KC_LSFT); // let's release the Shift key now. + } + break; + } + case MACRO_SHIFT_OR_RPAREN: { + if (record->event.pressed) { + key_timer = timer_read(); // Now we're doing the same thing, only for the right shift/close paren key + register_code(KC_RSFT); + } else { + if (timer_elapsed(key_timer) < TAPPING_TERM) { + register_code(KC_0); + unregister_code(KC_0); + } + unregister_code(KC_RSFT); + } + break; + } + } + return MACRO_NONE; +}; + +// Runs just one time when the keyboard initializes. +void matrix_init_user(void) { +}; + +uint8_t current_layer = BASE; + +// Runs constantly in the background, in a loop. +void matrix_scan_user(void) { + uint8_t layer = biton32(layer_state); + + ergodox_led_all_off(); + ergodox_led_all_set(LED_BRIGHTNESS_LO); + + switch (layer) { + case BASE: + current_layer = BASE; + break; + case KEYPAD: + current_layer = KEYPAD; + break; + default: + // none + break; + } + + // layer leds + if (current_layer == KEYPAD) { + ergodox_right_led_3_on(); + } + + // capslock + if (host_keyboard_leds() & (3<mods & (MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT)) && // is shift pressed and there is no other + !(keyboard_report->mods & (~MOD_BIT(KC_LSFT) & ~MOD_BIT(KC_RSFT)))) || // modifier being pressed as well + (get_oneshot_mods() & (MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT)) && !has_oneshot_mods_timed_out())) { // or the one shot shift didn't timed out + ergodox_right_led_1_set(LED_BRIGHTNESS_HI); + ergodox_right_led_1_on(); + } +}; diff --git a/keyboard/ergodox_ez/keymaps/townk_osx/townk_osx.hex b/keyboard/ergodox_ez/keymaps/townk_osx/townk_osx.hex new file mode 100644 index 0000000000..89e9ffcce2 --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/townk_osx/townk_osx.hex @@ -0,0 +1,1166 @@ +:100000000C9462020C94A6020C94A6020C94A60214 +:100010000C94A6020C94A6020C94A6020C94A602C0 +:100020000C94A6020C94A6020C94E60C0C94B80D49 +:100030000C940D1C0C94A6020C94A6020C94A6021F +:100040000C94A6020C94A6020C94A6020C94A60290 +:100050000C94A6020C94751C0C94A6020C94A60297 +:100060000C94A6020C94A6020C94A6020C94A60270 +:100070000C94A6020C94A6020C94A6020C94A60260 +:100080000C94A6020C94A6020C94A6020C94A60250 +:100090000C94A6020C94A6020C94A6020C94A60240 +:1000A0000C94A6020C94A6020C94A602250E470EF0 +:1000B000350F470E350F8C0EAF0E350F040F170F8F +:1000C000221222124E124E129612B4123014301412 +:1000D000BF123014741374132114301430142A1402 +:1000E0008113811381138113811381138113811370 +:1000F0008113811381138113811381138113811360 +:100100009213A013A713AE13B81302290001E00144 +:1001100004020402E00129000000F4A200223500DC +:100120002B003171C200C10000001E001400040049 +:100130001D0000004D001F001A0016001B00E0000B +:100140004C002000080007000600E2002A00210001 +:10015000150009001900E3004A00220017000A00F8 +:1001600005000000500029006B7700006D7F000043 +:100170004F000A306C7700006E7F000051002300B2 +:100180001C000B00110000005200240018000D009C +:100190001000E7004B0025000C000E0036002F7405 +:1001A0002C00260012000F003700307128002700B5 +:1001B00013003300380000004E002E002D00347173 +:1001C000C200015400000000000000000000010017 +:1001D000000000000000000000000000000000001F +:1001E000F900F200FB00000000000000F000F10048 +:1001F0000000000000000000FA00F300FC00000016 +:1002000000000000000000000000000000000000EE +:10021000000000000000000000002B022B00000086 +:100220005800000000009C005F005C0059000000C6 +:100230000000540060005D005A006200000055009C +:1002400061005E005B00630000002302570056005F +:100250006700850000002602270200000000000061 +:100260000000F400F500F6000000010000000000AE +:1002700000003900E100010000003A00AD00B000CC +:100280000000000000003B00BC00AC0000000100CA +:1002900000003C00AF00AE000000010000003D0087 +:1002A000BB00AB000000010000003E0000000000A9 +:1002B0000000000000003F000100000001000000FD +:1002C00000004000010000000100000000004100AB +:1002D000000050000000000000004200000051003B +:1002E0000000010000004300000052000000010077 +:1002F0000000440000004F00000001000000450025 +:1003000000000000000000000000A900AA00A800F2 +:10031000E5000000000016034500720067006F0052 +:1003200044006F007800200045005A0000001603CA +:100330004500720067006F0044006F0078002000E5 +:1003400045005A0000000403090409026D0004017D +:1003500000A0FA09040000010301010009211101B4 +:100360000001223F000705810308000A090401007B +:100370000103010200092111010001224D000705BE +:10038000820308000A090402000103000000092199 +:10039000110100012236000705830308000A090441 +:1003A00003000103000000092111010001223900AE +:1003B000070584031000011201100100000008ED80 +:1003C000FE071301000102000105010906A1010554 +:1003D0000719E029E7150025019508750181020537 +:1003E000081901290595057501910295017503917B +:1003F00001050719002977150025019578750181F8 +:1004000002C005010980A101850216010026B7007E +:100410001A01002AB700751095018100C0050C096A +:1004200001A1018503160100269C021A01002A9CE5 +:1004300002751095018100C005010902A1010901A1 +:10044000A10005091901290515002501950575016A +:10045000810295017503810105010930093115817A +:10046000257F95027508810609381581257F95013C +:1004700075088106050C0A38021581257F950175DE +:10048000088106C0C005010906A101050719E02978 +:10049000E715002501950875018102950175088110 +:1004A0000105081901290595057501910295017548 +:1004B0000391010507190029FF150025FF95067511 +:1004C000088100C011241FBECFEFDAE0DEBFCDBF30 +:1004D00004B603FE24C08091F5019091F601A0912D +:1004E000F701B091F8018730904BA740B04BB9F4B9 +:1004F0001092F5011092F6011092F7011092F80196 +:1005000014BE84B7877F84BF88E10FB6F8948093C8 +:100510006000109260000FBEE0E0FFE3099511E07B +:10052000A0E0B1E0E2E8F8E402C005900D92A43347 +:10053000B107D9F711E0A4E3B1E001C01D92A53FD6 +:10054000B107E1F70E942C0A0C943F240C940000A0 +:10055000FC016B3059F06C3029F16A3009F041C070 +:100560008281811141C08AE091E0089582818823CF +:1005700041F00E943F1C909336018093350181EE3B +:100580001BC080913501909136010E944B1C883C24 +:10059000910530F486E20E94971086E20E945F1176 +:1005A00081EE1DC08281882351F00E943F1C9093F0 +:1005B00036018093350185EE0E94971012C080911C +:1005C0003501909136010E944B1C883C910530F416 +:1005D00087E20E94971087E20E945F1185EE0E94D9 +:1005E0005F1180E090E008958DE091E00895089516 +:1005F000CF936091B4017091B5018091B601909153 +:10060000B7010E94781BC82F56985E9825982D98A0 +:1006100026982E9827982F988FE090E09093890045 +:100620008093880090938B0080938A0090938D0034 +:1006300080938C00CC2329F0C13029F4C09334017D +:1006400002C01092340180913401813011F4279A54 +:100650002F9A0E946E0F867011F0259A2D9AC23043 +:1006600041F40E94011A811104C027982F98269AFC +:100670002E9AE0910E01F0910F018081982F9272D5 +:1006800059F08D7D49F48FEF90E09093890080932D +:100690008800259A2D9A08C00E942E1B827221F094 +:1006A0000E94D419882379F3CF9108950C94F8020D +:1006B00056985E9825982D9826982E9827982F98CA +:1006C0008FEF90E0909389008093880090938B0047 +:1006D00080938A0090938D0080938C00259A2D9AA8 +:1006E0002FEF80E792E0215080409040E1F700C07A +:1006F0000000269A2E9A2FEF80E792E0215080404A +:100700009040E1F700C00000279A2F9A2FEF80E772 +:1007100092E0215080409040E1F700C00000259811 +:100720002D982FEF80E792E0215080409040E1F734 +:1007300000C0000026982E982FEF80E792E021500D +:1007400080409040E1F700C0000027982F9856980D +:100750005E9825982D9826982E9827982F9808957A +:1007600089EA8093800089E08093810024982C9806 +:100770003F988AB18F748AB96E98479A8BB1806B13 +:100780008BB9769A0E9458030C94F70280E280930A +:1007900000018091370181110EC00E94150481E093 +:1007A000809337012FEF83ED90E3215080409040FC +:1007B000E1F700C0000080E40E941B048093000168 +:1007C00081112EC00E94450480930001811128C030 +:1007D0000E94450480930001811122C08FE30E9492 +:1007E00045048093000181111BC00E943D0480E4F8 +:1007F0000E941B0480930001811112C08CE00E94B2 +:1008000045048093000181110BC00E944504809330 +:100810000001811105C08FE30E944504809300010F +:100820000E943D048091000108951092B9008AE071 +:100830008093B800089594EA9093BC009091BC0016 +:1008400097FFFCCF9091B900987F983021F09031BC +:1008500011F081E008958093BB0084E88093BC0090 +:100860008091BC0087FFFCCF8091B900887F8831E0 +:1008700011F0803471F780E0089584E98093BC0022 +:100880008091BC0084FDFCCF08958093BB0084E878 +:100890008093BC008091BC0087FFFCCF9091B90091 +:1008A000987F81E0983209F480E0089584E880938D +:1008B000BC008091BC0087FFFCCF8091BB000895F5 +:1008C00080910001811115C080E40E941B04809377 +:1008D000000181110CC082E10E9445048093000157 +:1008E000811105C08FEF0E944504809300010E9492 +:1008F0003D0484B1807F84B985B1807F85B98AB198 +:10090000837F8AB98BB1837F8BB93E9846980895CF +:100910000E94C603809300010E94600480B38C7023 +:1009200080BB81B3836F81BBA9E3B1E0E7E4F1E071 +:100930008EE08E0F11921D928E13FCCF0C94B0039B +:10094000BF92CF92DF92EF92FF920F931F93CF93BC +:10095000DF9380910001882379F0809138018F5FC7 +:1009600080933801811108C00E94C6038093000162 +:10097000811102C00E94580309E311E0C0E0D0E0F9 +:10098000DD24D39482E0C82EEE24E394F12CC7300A +:10099000D10500F580910001811164C080E40E94BE +:1009A0001B0480930001811112C082E10E94450462 +:1009B0008093000181110BC0C7010C2E01C0880F6C +:1009C0000A94EAF780950E944504809300010E94F2 +:1009D0003D0448C0CA30A1F028F4C83059F0C930ED +:1009E00061F005C0CC3089F070F0CD3089F0209AEC +:1009F000289810C0219A29980DC0229A2A980AC0D6 +:100A0000239A2B9807C0529A01C0539A5B9802C050 +:100A10003E9A469890EA9A95F1F79FB1799902C06B +:100A200082E001C080E091709D25982B7C9902C0E6 +:100A300084E001C080E0892B7D9902C038E001C0CC +:100A400030E0832B7E9902C020E101C020E0822BA0 +:100A50009FB19095991F9927991F9295990F907E14 +:100A6000892B0FC080910001811149C080E40E9450 +:100A70001B0480930001882379F1B12C0E943D046E +:100A80008B2DF8019081981719F08083C092010195 +:100A90000E94600421960F5F1F4FCE30D10509F0F0 +:100AA00076CF80910101882361F18150809301010B +:100AB000882339F08FE99FE00197F1F700C000002B +:100AC00020C0A7E4B1E0E9E3F1E0CF01825F9191BA +:100AD0009D938E13FCCF15C083E10E944504809343 +:100AE00000018111CACF81E40E941B0480930001A0 +:100AF0008111C3CF0E945604B82EB094BFCF80E0BE +:100B0000C0CF0E94560381E0DF91CF911F910F91DA +:100B1000FF90EF90DF90CF90BF900895E82FF0E026 +:100B2000E95BFE4F808108950895089596E0799FCE +:100B3000F001112494E5899FE00DF11D1124E60FC9 +:100B4000F11DEE0FFF1FE25EFE4F85919491089517 +:100B5000880F991FFC01E856F04085919491089503 +:100B6000880F991FFC01E85EFE4F859194910895CE +:100B70000F931F93CF93DF93EC018115904350F5B2 +:100B8000C11580E2D80708F0B3C0CB3BD10590F483 +:100B9000C83AD10508F05AC0C53AD10508F04BC093 +:100BA000C430D10508F0BBC1219709F0B5C101E0FF +:100BB00010E0F5C1CF3FD10511F008F0B0C1C03F42 +:100BC000D10508F092C0CE01805E9109089708F423 +:100BD000A6C1A2C1C11591E5D907A8F4C23020E58C +:100BE000D20708F09EC0C11580E5D80709F485C07A +:100BF00008F091C0C11520E4D20708F08DC1DD27AF +:100C00008E01106CCCC1C11580E8D80758F4C1150D +:100C100090E7D90708F07CC1C11520E6D20708F497 +:100C200022C17AC1C11580E9D80708F075C1DF700B +:100C30008E01106AB4C1C53AD10509F472C1C63A31 +:100C4000D10509F071C102E810E4A9C1C83AD10583 +:100C500009F46DC1C93AD10509F46CC1CA3AD1058C +:100C600009F46BC1CB3AD10509F46AC1CC3AD1057C +:100C700009F469C1CD3AD10509F468C1C03BD10579 +:100C800009F467C1CE3AD10509F466C1CF3AD1055E +:100C900009F465C1C13BD10509F464C1C23BD1056A +:100CA00009F463C1C33BD10509F462C1C43BD1055A +:100CB00009F461C1C53BD10509F460C1C63BD1054A +:100CC00009F45FC1C73BD10509F45EC1C83BD1053A +:100CD00009F45DC1C93BD10509F45CC1CA3BD1052A +:100CE00009F45BC100E014E45AC18E01106557C1DC +:100CF000CE019F700E94B00553C10E9484149FEFE3 +:100D000024E38CE0915020408040E1F700C00000D7 +:100D10000E949A1C44C18091D60181608093D601C3 +:100D20003EC10E94431E811102C00E94291E0E94E2 +:100D3000601E90E09093F5018093F401C23090E53D +:100D4000D90721F48091F401816086C0C43020E588 +:100D5000D20721F48091F40182607EC0C63080E524 +:100D6000D80721F48091F401846076C0C83090E502 +:100D7000D90719F48091F40127C0CA3020E5D207C1 +:100D800021F48091F401806167C0CC3080E5D80700 +:100D900021F48091F40180625FC0CE3090E5D907E4 +:100DA00021F48091F401806457C0C03120E5D2075E +:100DB00021F48091F40180684FC0C23180E5D807EA +:100DC00029F48091F4018460886046C0C33090E5C6 +:100DD000D90721F48091F4018E7F3EC0C53020E513 +:100DE000D20721F48091F4018D7F36C0C73080E5B1 +:100DF000D80721F48091F4018B7F2EC0C93090E593 +:100E0000D90719F48091F40126C0CB3020E5D20730 +:100E100021F48091F4018F7E1FC0CD3080E5D8078A +:100E200021F48091F4018F7D17C0CF3090E5D90770 +:100E300021F48091F4018F7B0FC0C13120E5D207EE +:100E400021F48091F4018F7707C0C331D04531F48C +:100E50008091F4018B7F877F8093F4018091F4016E +:100E60000E94641E9CC08D2F99278F709927813016 +:100E70009105D9F49E012370332702C0880F991F72 +:100E80002A95E2F79C688E0144E0000F111F4A95F5 +:100E9000E1F700271370802B912B53E0CC0FDD1F5F +:100EA0005A95E1F7C076DD272FC08230910531F4E5 +:100EB000DC2FCC278E01016F106A71C08330910541 +:100EC00069F4CE018370992701E010E002C0000FA1 +:100ED000111F8A95E2F7C8019C680FC0049709F0BA +:100EE0005EC0CE018370992701E010E002C0000FC0 +:100EF000111F8A95E2F7C8019A6823E0CC0FDD1F25 +:100F00002A95E1F7C07ED7708C010C2B1D2B47C0B2 +:100F1000DF708E01106243C000E010E040C08E011F +:100F20003EC001E810E43BC003E810E438C002EE24 +:100F300014E435C009EE14E432C00AEE14E42FC004 +:100F400005EB14E42CC006EB14E429C007EB14E411 +:100F500026C00CEC14E423C00DEC14E420C003E81C +:100F600015E41DC00AE815E41AC002E915E417C02B +:100F700004E915E414C001E216E411C003E216E42A +:100F80000EC004E216E40BC005E216E408C006E257 +:100F900016E405C007E216E402C00AE216E4C8013E +:100FA000DF91CF911F910F91089596E0799FF00105 +:100FB000112494E5899FE00DF11D1124E60FF11D28 +:100FC000EE0FFF1FE25EFE4F85919491803E9105EA +:100FD000E0F4803C910558F58133910509F46FC028 +:100FE00048F48932910509F463C08A32910509F405 +:100FF0006DC072C089339105E9F082389105D1F056 +:101000008533910509F44DC067C0833E910581F198 +:1010100038F4803E9105B9F0823E9105D9F05CC06C +:10102000863E910561F1873E9105A1F155C00E9470 +:10103000A80508952091F40120FD02C021FF4CC0B5 +:1010400080EE90E049C08091F40180FFF9CF89E300 +:1010500090E042C08091F40182FF0EC08091F401C3 +:1010600084FF03C080E090E037C083EE90E034C09E +:101070008091F40182FFF2CF82EE90E02DC080914A +:10108000F40183FF0BC08091F40184FDEBCF87EE68 +:1010900090E022C08091F40183FFF5CF86EE90E0CE +:1010A0001BC08091F40185FF07C089E290E014C065 +:1010B0008091F40185FFF9CF85E390E00DC0809128 +:1010C000F40186FF07C08AE290E006C08091F40137 +:1010D00086FFF9CF81E390E00E94B8050895089556 +:1010E0000C946F08809165010895CF93DF9300D031 +:1010F0001F92CDB7DEB79C018091EB01843019F5CA +:1011000093E099833B832A839093E9008FEF90913A +:10111000E800815095FD06C095ED9A95F1F7000025 +:101120008111F5CF8091E80085FF0DC040E050E0CF +:1011300063E070E0CE0101960E94D60A8091E8003B +:101140008E778093E8000F900F900F90DF91CF91F2 +:101150000895CF93DF9300D01F92CDB7DEB72091D3 +:10116000EB01243021F522E029839B838A8383E0ED +:101170008093E9008FEF9091E800815095FD06C0C3 +:1011800095ED9A95F1F700008111F5CF8091E80077 +:1011900085FF0DC040E050E063E070E0CE010196B5 +:1011A0000E94D60A8091E8008E778093E8000F9025 +:1011B0000F900F90DF91CF9108952091EB01243093 +:1011C000F1F422E02093E9002FEF3091E800215064 +:1011D00035FD06C035ED3A95F1F700002111F5CF48 +:1011E0002091E80025FF0BC040E050E065E070E092 +:1011F0000E94D60A8091E8008E778093E8000895D7 +:10120000CF93DF93EC019091EB01943009F046C04D +:1012100080910C018823D9F080910D018823B9F0C9 +:101220009093E9008FEF9091E800815095FD06C002 +:1012300095E19A95F1F700008111F5CF8091E800D2 +:1012400085FF2CC040E050E060E170E017C081E015 +:101250008093E9008FEF9091E800815095FD06C0E2 +:1012600095ED9A95F1F700008111F5CF8091E80096 +:1012700085FF14C040E050E068E070E0CE010E94BD +:10128000D60A8091E8008E778093E80080E1FE0125 +:10129000A5E5B1E001900D928A95E1F7DF91CF913C +:1012A00008958091EA01811109C00E946B0C0E948F +:1012B000C80C8091E20084608093E200089510924F +:1012C000EA010895089508950C94071C42E061EC2A +:1012D00081E00E94E50B42E061EC82E00E94E50BB8 +:1012E00042E061EC83E00E94E50B42E161EC84E0C6 +:1012F0000C94E50B8091ED01833009F455C030F476 +:10130000813071F0823009F48EC008958A3009F47A +:101310007AC08B3009F460C0893009F09CC020C0CD +:101320008091EC01813A09F096C08091E800877FB6 +:101330008093E8008091F0019091F101892B21F4D4 +:1013400060E185E591E003C060E080E090E070E05E +:101350000E94210B8091E8008B778093E80008952C +:101360008091EC01813209F076C08091F00190917A +:10137000F101009719F0039709F06DC08091E80022 +:10138000877F8093E8008091E80082FD05C080910E +:10139000EB018111F8CF5FC08091F100809365016E +:1013A0008091E8008B7753C08091EC01813A09F07D +:1013B00052C08091F0019091F101892B09F04BC04E +:1013C0008091E800877F8093E8008091E80080FFAB +:1013D000FCCF80910C0136C08091EC018132D9F5AF +:1013E0008091F0019091F101892BA9F58091E8009D +:1013F000877F8093E8000E941A0C8091EE01809311 +:101400000C010C9484148091EC01813221F58091BF +:10141000E800877F8093E8000E941A0C8091EF011A +:101420008093660108958091EC01813AA1F4809146 +:10143000E800877F8093E8008091E80080FFFCCF80 +:10144000809166018093F1008091E8008E7780930F +:10145000E8000C941A0C089584B7877F84BF88E154 +:101460000FB6F89480936000109260000FBE90E079 +:1014700080E80FB6F89480936100909361000FBEEE +:101480000E94BD0F0E946B0C0E94C80C8091E2006C +:1014900084608093E20078940E944E0F0E94BF0FF8 +:1014A00082E091E00E94690F8091EB01853069F440 +:1014B0000E94C81B8091E9018823B1F30E94F31BAD +:1014C000882391F30E94C00AEFCF0E94C50FECCF92 +:1014D000292F332723303105C9F064F42130310539 +:1014E00081F02230310509F043C08DE690E02AE416 +:1014F00033E042C021323105F1F02232310541F1B1 +:1015000037C082E190E027EB33E036C09927813085 +:10151000910541F08230910541F0892B49F5E6E4CF +:10152000F3E005C0EEE2F3E002C0E6E1F3E084910F +:1015300090E09F0121C06430D8F4E62FF0E0EE0F78 +:10154000FF1FEE5DFE4F2081318189E090E014C0E5 +:10155000643070F470E0FB01EE0FFF1FE65EFE4F9B +:1015600020813181FB01EA5EFE4F808190E004C062 +:1015700080E090E020E030E0FA013183208308959C +:1015800080E189BD82E189BD09B400FEFDCF809173 +:10159000D8008F7D8093D8008091E0008260809396 +:1015A000E0008091E00081FDFCCF0895CF92DF92B2 +:1015B000EF92FF920F931F93CF93DF93EC018B0178 +:1015C0006A010E94390C811133C0C114D10439F071 +:1015D000F60180819181081B190BC80FD91FE12CDE +:1015E000F12C0115110519F18091E80085FD16C057 +:1015F0008091E8008E778093E800C114D10449F00F +:10160000F60180819181E80EF91EF182E08285E089 +:101610000FC00E94390C882321F30AC0899180935E +:10162000F10001501109FFEFEF1AFF0ADACF80E055 +:10163000DF91CF911F910F91FF90EF90DF90CF90AE +:1016400008952091F2013091F3012617370748F0F1 +:101650006115710539F42091E8002E772093E80098 +:1016600001C0B90140E061157105A9F12091EB01BC +:10167000222309F443C0253009F442C02091E80038 +:1016800023FD40C02091E80022FD32C02091E800F7 +:1016900020FFE9CF4091F3002091F20030E0342B9D +:1016A000FC01CF016115710559F02830310540F476 +:1016B00081918093F100615071092F5F3F4FF1CF0D +:1016C00041E02830310509F040E02091E8002E7714 +:1016D0002093E800C8CF4111C9CF0AC08091EB0127 +:1016E000882361F0853061F08091E80083FD0AC0B5 +:1016F0008091E80082FFF2CF80E0089582E00895B3 +:1017000083E0089581E008952091F2013091F30182 +:101710002617370748F06115710539F42091E80064 +:101720002E772093E80001C0B901FC0120E061158B +:10173000710591F18091EB01882309F440C0853057 +:1017400009F43FC08091E80083FD3DC08091E8002E +:1017500082FD2FC08091E80080FFE9CF2091F30047 +:101760008091F20090E0922B6115710559F088305C +:10177000910540F424912093F10031966150710954 +:101780000196F2CF21E0089709F020E08091E8006F +:101790008E778093E800CBCF2111CCCF0AC0809107 +:1017A000EB01882361F0853061F08091E80083FDD2 +:1017B0000AC08091E80082FFF2CF80E0089582E0C5 +:1017C000089583E0089581E00895982F973058F5A3 +:1017D0009093E900981739F07091EC002091ED009A +:1017E0005091F00003C0242F762F50E021FF19C044 +:1017F0003091EB003E7F3093EB003091ED003D7F68 +:101800003093ED003091EB0031603093EB0070933A +:10181000EC002093ED005093F0002091EE0027FFA4 +:1018200007C09F5FD3CF8F708093E90081E0089558 +:1018300080E008958091EC0187FF11C08091E8005D +:1018400082FD05C08091EB018111F8CF11C080911C +:10185000E8008B770BC08091EB01882349F08091E1 +:10186000E80080FFF8CF8091E8008E778093E80051 +:1018700008952091E4003091E50095E64091EC0058 +:10188000842F817040FF22C08091E80080FD1CC041 +:101890008091EB01882391F0853091F08091EB00ED +:1018A00085FD10C04091E4005091E50042175307B8 +:1018B00029F39A01915011F784E0089582E0089588 +:1018C00083E0089581E0089580E008954091E80064 +:1018D00042FFDECF08950E94D90C0E94E10CE0EE99 +:1018E000F0E0808181608083E8EDF0E080818F7797 +:1018F000808319BCA7EDB0E08C918E7F8C938081A2 +:101900008F7E80831092EA0108950F931F93CF93E7 +:10191000DF930E94D90C0E94E10CC8EDD0E08881D1 +:101920008F77888388818068888388818F7D88838A +:1019300019BC1092EB011092E7011092E90110928C +:10194000E80100EE10E0F80180818B7F80838881C0 +:101950008160888342E060E080E00E94E50BE1EE78 +:10196000F0E080818E7F8083E2EEF0E08081816014 +:101970008083808188608083F80180818E7F80836E +:10198000888180618883DF91CF911F910F910895A5 +:10199000E8EDF0E080818F7E8083E7EDF0E08081EC +:1019A0008160808384E082BF81E08093EA010C94AF +:1019B000850CE8EDF0E080818E7F80831092E2005C +:1019C00008951092DA001092E10008951F920F928C +:1019D0000FB60F9211242F933F934F935F936F9302 +:1019E0007F938F939F93AF93BF93EF93FF938091D8 +:1019F000E10082FF0BC08091E20082FF07C080916E +:101A0000E1008B7F8093E1000E944D0F8091DA000E +:101A100080FF1FC08091D80080FF1BC08091DA003A +:101A20008E7F8093DA008091D90080FF0DC080E125 +:101A300089BD82E189BD09B400FEFDCF81E08093BC +:101A4000EB010E94510905C019BC1092EB010E94E4 +:101A50005F098091E10080FF19C08091E20080FF62 +:101A600015C08091E2008E7F8093E2008091E200B9 +:101A700080618093E2008091D80080628093D800DA +:101A800019BC85E08093EB010E9463098091E1001D +:101A900084FF30C08091E20084FF2CC080E189BDCA +:101AA00082E189BD09B400FEFDCF8091D8008F7D11 +:101AB0008093D8008091E1008F7E8093E100809137 +:101AC000E2008F7E8093E2008091E200816080934B +:101AD000E2008091E701882311F084E007C0809143 +:101AE000E30087FD02C081E001C083E08093EB0149 +:101AF0000E9464098091E10083FF29C08091E20087 +:101B000083FF25C08091E100877F8093E10082E020 +:101B10008093EB011092E7018091E1008E7F80932A +:101B2000E1008091E2008E7F8093E2008091E200EC +:101B300080618093E20042E060E080E00E94E50B7B +:101B40008091F00088608093F0000E946209FF910C +:101B5000EF91BF91AF919F918F917F916F915F9125 +:101B60004F913F912F910F900FBE0F901F9018959E +:101B70001F920F920FB60F9211242F933F934F9302 +:101B80005F936F937F938F939F93AF93BF93CF9305 +:101B9000DF93EF93FF93C091E900CF708091EC0049 +:101BA000D82FD17080FDD0E81092E9008091F0002C +:101BB000877F8093F00078940E94FC0D1092E900DA +:101BC0008091F00088608093F000CD2BCF70C0939F +:101BD000E900FF91EF91DF91CF91BF91AF919F917C +:101BE0008F917F916F915F914F913F912F910F90C6 +:101BF0000FBE0F901F9018951F93CF93DF93CDB713 +:101C0000DEB7AA970FB6F894DEBF0FBECDBFECEEDD +:101C1000F1E088E08E0F9091F10091938E13FBCF4D +:101C20000E947A098091E80083FF1FC18091EC0136 +:101C30009091ED01492F50E04A30510508F015C14F +:101C4000FA01EA5AFF4F0C94EF23803881F0823872 +:101C500009F00BC18091F0018F708093E9008091B1 +:101C6000EB0085FB882780F91092E90006C080917F +:101C7000E8019091E901911182609091E800977FCD +:101C80009093E8008093F1001092F100C8C0282FD3 +:101C90002D7F09F0EAC0882319F0823061F0E5C099 +:101CA0008091EE01813009F0E0C0933009F080E0CE +:101CB0008093E9012BC08091EE01811127C08091B2 +:101CC000F0018F7009F4D1C08093E9002091EB00FE +:101CD00020FF1CC0933021F48091EB00806214C07F +:101CE0009091EB0090619093EB0021E030E0A9012E +:101CF00002C0440F551F8A95E2F74093EA00109204 +:101D0000EA008091EB0088608093EB001092E9007C +:101D10008091E800877F86C08111A7C01091EE01F5 +:101D20001F778091E3008078812B8093E30080917E +:101D3000E800877F8093E8000E941A0C8091E800F9 +:101D400080FFFCCF8091E30080688093E300111155 +:101D500002C082E001C083E08093EB0186C080581E +:101D6000823008F082C08091EE019091EF018C3DAD +:101D700053E0950779F583E08A838AE289834FB738 +:101D8000F894DE01139620E03EE051E2E32FF0E00C +:101D900050935700E49120FF03C0E295EF703F5F3E +:101DA000EF708E2F90E0EA3010F0C79601C0C09619 +:101DB0008D939D932F5F243149F74FBF8091E800A9 +:101DC000877F8093E8006AE270E0CE0101960E946E +:101DD000210B14C0AE014F5F5F4F6091F0010E9474 +:101DE000680ABC01892B09F440C09091E800977FF4 +:101DF0009093E80089819A810E94840B8091E80089 +:101E00008B778093E80031C0803879F58091E800C5 +:101E1000877F8093E8008091E7018093F1008091B3 +:101E2000E8008E778093E8000E941A0C1EC0811192 +:101E30001CC09091EE019230C0F48091E800877F41 +:101E40008093E8009093E7010E941A0C8091E701CB +:101E5000811106C08091E30087FD02C081E001C0CE +:101E600084E08093EB010E9466098091E80083FF83 +:101E70000AC08091E800877F8093E8008091EB00A2 +:101E800080628093EB00AA960FB6F894DEBF0FBE77 +:101E9000CDBFDF91CF911F9108950895CF93809189 +:101EA000EB018823A1F0C091E900CF709091EC0084 +:101EB000892F817090FD80E8C82B1092E9008091F5 +:101EC000E80083FD0E94FC0DCF70C093E900CF9124 +:101ED000089590936C0180936B010895E0916B01DC +:101EE000F0916C01309721F00190F081E02D099480 +:101EF00080E00895E0916B01F0916C01309721F042 +:101F00000280F381E02D09940895E0916B01F09136 +:101F10006C01309721F00480F581E02D099408953B +:101F20002091690130916A018217930771F09093B3 +:101F30006A0180936901E0916B01F0916C01309727 +:101F400021F00680F781E02D099408952091670122 +:101F5000309168018217930771F090936801809324 +:101F60006701E0916B01F0916C01309721F00084E2 +:101F7000F185E02D0994089508950C94BC0F0E94FA +:101F8000361C0E9488040C94FC1CCF92DF92EF92C6 +:101F9000FF920F931F93CF93DF93CDB7DEB72B97AD +:101FA0000FB6F894DEBF0FBECDBF0E94A0048EE630 +:101FB000C82E81E0D82E00E010E0E02E802F0E9495 +:101FC0008E05F60141916F01F42EF826B1F40F5FF2 +:101FD0001F4F0E30110589F78FEF89838A831B828B +:101FE0000E943F1C8160782F9D838C8349815A8198 +:101FF0006B818D810E94681040C09091D60191FF45 +:1020000004C08B870E9494058B8520E030E04F2D23 +:1020100050E0922FBA01022E02C0759567950A947E +:10202000E2F760FF24C02E83EF8221E030E06901F7 +:1020300002C0CC0CDD1C9A95E2F790E08C219D212A +:10204000892B09F420E028870E943F1C8160782FAB +:102050009A8789874E815F8168858A850E9468108A +:10206000F801E259FE4F8081C826C08206C02F5F6A +:102070003F4F2630310569F6AACF0E94E31F109129 +:102080006D010E946E0F1817A1F00E946E0F8093D1 +:102090006D012B960FB6F894DEBF0FBECDBFDF915A +:1020A000CF911F910F91FF90EF90DF90CF900C9404 +:1020B00070082B960FB6F894DEBF0FBECDBFDF9130 +:1020C000CF911F910F91FF90EF90DF90CF900895E7 +:1020D000CF93DF93CDB7DEB72B970FB6F894DEBF63 +:1020E0000FBECDBF4F83588769877A878B87DE0104 +:1020F000119686E0FD0111928A95E9F785E0FE01CF +:10210000379601900D928A95E1F749815A816B814A +:102110007C818D819E810E9422172B960FB6F894A8 +:10212000DEBF0FBECDBFDF91CF9108950895CF934D +:10213000882309F4C2C0C82F823859F40E946E0F58 +:1021400081FDBBC089E30E94651A0E94421B89E39E +:102150000CC0833879F40E946E0F80FDAEC083E519 +:102160000E94651A0E94421B83E50E94A71ACF9124 +:102170000C94421B843859F40E946E0F82FD9DC05E +:1021800087E40E94651A0E94421B87E4EECF8CEF21 +:102190008C0F813A48F48C2F0E941E2281118DC031 +:1021A0008C2F0E94651AE3CF80E28C0F883048F4B0 +:1021B000C77081E001C0880FCA95EAF70E94EE1A45 +:1021C000D6CF8BE58C0F833078F4C53A29F0C63A28 +:1021D00031F083E890E005C081E890E002C082E839 +:1021E00090E0CF910C94900F88E58C0F833108F02C +:1021F00064C0C83A39F1C93A41F1CA3A49F1CB3A17 +:1022000051F1CC3A59F1CD3A61F1C03B69F1CE3A86 +:1022100071F1CF3A79F1C13B81F1C23B89F1C33B06 +:1022200091F1C43B99F1C53BA1F1C63BA9F1C73B74 +:10223000B1F1C83BB9F1C93BC1F1CA3BC9F180E07A +:1022400090E038C082EE90E035C089EE90E032C078 +:102250008AEE90E02FC085EB90E02CC086EB90E0FA +:1022600029C087EB90E026C08CEC90E023C08DEC79 +:1022700090E020C083E891E01DC08AE891E01AC098 +:1022800082E991E017C084E991E014C081E292E014 +:1022900011C083E292E00EC084E292E00BC085E2BE +:1022A00092E008C086E292E005C087E292E002C0B8 +:1022B0008AE292E0CF910C94A60FCF9108958823E3 +:1022C00009F44BC0823859F40E946E0F81FF45C05B +:1022D00089E30E94651A0E94421B89E30CC083387F +:1022E00071F40E946E0F80FF38C083E50E94651A6A +:1022F0000E94421B83E50E94A71A0C94421B84385B +:1023000059F40E946E0F82FF28C087E40E94651A6C +:102310000E94421B87E4EFCF9CEF980F913A58F34D +:1023200090E2980F983050F4877091E001C0990FB7 +:102330008A95EAF7892F0E94F41ADFCF9BE5980F60 +:10234000933020F480E090E00C94900F885A833111 +:1023500020F480E090E00C94A60F0895882321F0EB +:102360000E94EE1A0C94421B0895882321F00E94CB +:10237000F41A0C94421B08952F923F924F925F9251 +:102380007F928F929F92AF92BF92CF92DF92EF9205 +:10239000FF920F931F93CF93DF9300D000D01F9233 +:1023A000CDB7DEB725E0FC01DE01119601900D925C +:1023B0002A95E1F7FC0100811181F280E580E29429 +:1023C0003FE0E32223813481232B09F472C21F3FB3 +:1023D00019F40F3F09F46DC26C010E94011A8823A1 +:1023E00019F082E00E94431AC6010E9496100983E8 +:1023F0001A8369817A818F2D0E94C7198C010E94EE +:102400007C190E944318F1100E940B1B0E945E1A57 +:10241000882379F0FF2069F080E2800F883048F04F +:1024200082E00E94431A0E945E1A91E0782E79267B +:1024300001C0712CE12FE295EF70F0E0E05AFF4F00 +:102440000C94EF23812F807F1F70882311F0129549 +:10245000107FFF2089F0112309F4E8C180E2800F8A +:10246000883020F4812F0E94EE1A03C0812F0E9431 +:10247000FE1A0E94421BDAC1802F0E945F111123B5 +:1024800009F4EEC1005E812F083018F40E94F41A9E +:1024900002C00E94041B0E94421BE2C1812F807F68 +:1024A0001F70803211F01295107F002319F0013057 +:1024B00049F132C0FF2091F0EE2091F1F1E0EF12EE +:1024C00004C0812F0E941E1BCBC122E0E21228C053 +:1024D0000E94271B812F0E94CE1922C0EE2079F086 +:1024E00031E0E31208C00E94EB1A812309F4B8C15D +:1024F0000E94D11904C042E0E41609F4B1C10E945F +:10250000271B12C0FF2029F051E05E1508F4A8C176 +:1025100007C0E110A5C108C0FF2021F0E11086C16D +:10252000812FF7C0E11089C1812FF9C0812F8695D5 +:102530008695837090E0009719F0019759F090C14B +:10254000FF2019F0C801937002C080E090E00E9463 +:10255000900F86C1FF2019F0C801937002C080E07F +:1025600090E00E94A60F7CC1802FFF2019F00E94EE +:10257000EB1E02C00E94531F0E94D81F71C1812F01 +:10258000837009F055C0F1106BC1802F829586953C +:102590008770880F880F902F9F70492F50E060E060 +:1025A00070E01A012B01082E04C0220C331C441CBD +:1025B000551C0A94D2F704FF15C02FE0822E912CEF +:1025C000A12CB12CA501940104C0220F331F441F7C +:1025D000551F8A95D2F7CA01B9016095709580950B +:1025E000909503C060E070E0CB01169516951370CE +:1025F000412F50E04230510569F04330510589F0D8 +:1026000062297329842995294130510571F00E946E +:102610006A1826C162297329842995290E9486187F +:102620001FC10E946A18C201B1010E944E1818C150 +:10263000FF2019F0812F817001C08695882309F44D +:102640000FC1802F829586958770880F880F902FF5 +:102650009F70492F50E060E070E01A012B01082EB6 +:1026600004C0220C331C441C551C0A94D2F704FFEE +:1026700015C09FE0892E912CA12CB12CA5019401AD +:1026800004C0220F331F441F551F8A95D2F7CA0179 +:10269000B901609570958095909503C060E070E0F9 +:1026A000CB01169516951370412F50E0423051051D +:1026B00069F04330510589F06229732984299529ED +:1026C0004130510571F00E944419CAC06229732932 +:1026D000842995290E946019C3C00E944419C2012F +:1026E000B1010E942819BCC0802F90E0FC01E05E7F +:1026F000F109E531F10508F094C0E059FF4F0C9461 +:10270000EF230F70812F8F71FF2031F00E94C118CD +:10271000802F0E94AE11A4C00E94E218802F0E9458 +:10272000B5119EC0FF2039F0E1109AC0812F8F7142 +:102730000E94071995C031E03E1508F491C0F6CF0C +:10274000FF2039F0812F8F710E94C11889C0FF20AE +:10275000C9F3812F8F710E94E21882C0FF2029F0F7 +:10276000812F8F710E94AC187BC00E94A21878C084 +:10277000FF20C1F00E94CB190E94F41A0E94FD199B +:10278000843029F40E943C1A812F8F717AC041E075 +:102790004E1508F48EC01F71812F0E94C11863E08E +:1027A000812F0EC00E94CB190E94EE1A51E05E15D7 +:1027B000F8F40E943C1A0E94D11964E0812F8F71B5 +:1027C0000F900F900F900F900F90DF91CF911F916E +:1027D0000F91FF90EF90DF90CF90BF90AF909F90C0 +:1027E0008F907F905F904F903F902F900C942C1A79 +:1027F00081E00F900F900F900F900F90DF91CF918D +:102800001F910F91FF90EF90DF90CF90BF90AF900E +:102810009F908F907F905F904F903F902F900C945F +:10282000431AFF2039F0EE2009F48CCF802F0E944C +:10283000971016C0EE2009F48CCF802F0E945F11F4 +:102840000FC0412F4F70602FC6010E94A8020E9446 +:10285000C61706C0412F4F70602FC6010E94950514 +:10286000772039F10E94FD1980FD23C0F601128204 +:102870000E94F7190E94C118C6010E94BC110E9453 +:10288000F7190F900F900F900F900F90DF91CF914D +:102890001F910F91FF90EF90DF90CF90BF90AF907E +:1028A0009F908F907F905F904F903F902F900C94CF +:1028B000E2180F900F900F900F900F90DF91CF9133 +:1028C0001F910F91FF90EF90DF90CF90BF90AF904E +:1028D0009F908F907F905F904F903F902F900895A2 +:1028E0000E940B1B0E941B1B0E94DD1A0E94421BB0 +:1028F0000E9489200E94D81F80E090E00E94900FE3 +:1029000080E090E00C94A60F0E94FB1A0C947014C7 +:102910000E94BC19292F22952F7030E02C303105F0 +:102920004CF42A3031056CF4225031092230310543 +:10293000A8F407C02C30310569F02F30310551F073 +:102940000DC0803F69F018F4803E40F409C0843F18 +:1029500029F406C093FB882780F9089580E0089544 +:1029600081E00895CF93DF9300D000D01F92CDB7C0 +:10297000DEB70F900F900F900F900F90DF91CF91D7 +:102980000895CF93DF9300D000D000D0CDB7DEB74D +:1029900026960FB6F894DEBF0FBECDBFDF91CF9164 +:1029A00008951F93CF93DF93C0917C0116E080912F +:1029B0007D01C81799F0D0E01C9FF0011D9FF00D1C +:1029C0001124E258FE4F40815181628173818481DC +:1029D00095810E94C1142196C770E9CFDF91CF91F4 +:1029E0001F9108954091AE015091AF016091B001E7 +:1029F0007091B1018091B2019091B3010C94C11416 +:102A00008091B30182958F7009F054C08091B0011C +:102A1000882309F44FC080917C01A0917D016091D1 +:102A2000AE017091AF014091B1015091B201B6E099 +:102A30008A1709F43FC090E041155105C1F17F3F6D +:102A400011F46F3FA1F1B89FF001B99FF00D11246F +:102A5000E258FE4F218172132AC02081621327C0E1 +:102A60002281211124C0238134812417350710F4D9 +:102A700021503109241B350B283C3105C0F420912D +:102A8000B3012F7020612093B30126E0289FF0014D +:102A9000299FF00D1124ED57FE4F80818F708061CA +:102AA00080838EEA91E00E94BC110C94D1140196AF +:102AB0008770BECF0895CF92DF92EF92FF920F936F +:102AC0001F93CF93DF93CDB7DEB762970FB6F8941D +:102AD000DEBF0FBECDBF8C0185E0F801DE011D9683 +:102AE00001900D928A95E1F7D8014C9111965C9175 +:102AF000119712966C9112971396CD90DC901497C3 +:102B00003091AE017091AF018091B1019091B2010D +:102B1000009709F46BC17F3F19F43F3F09F466C188 +:102B2000E090B001EE2009F4C0C02091B301C816B6 +:102B3000D90628F0F601E81BF90BCF0104C08095F7 +:102B400090958C0D9D1DFF24F394883C910578F0A1 +:102B5000F12C207F09F0C6C07C2DD98AC88A8989CA +:102B60000E94B2148EEA91E00E94BC11B1C0822F83 +:102B7000807F09F046C0751314C0341312C0611170 +:102B800010C02F7020612093B3010E94F2148EEACE +:102B900091E00E94BC118091B301D80115968C93ED +:102BA0002EC0CD2819F15F3F11F44F3FF9F0F62EFA +:102BB00061111CC080917C0120917D0136E082175B +:102BC00009F45AC090E0389FF001399FF00D1124AC +:102BD000E258FE4F7181571306C07081471303C03E +:102BE0007281711103C001968770E9CFF62E6623BA +:102BF00009F418C18091B30181608093B301F12C75 +:102C000011C1751308C0341306C0611104C080914E +:102C1000B301D801C3C04D875E878D859E856A8BC1 +:102C20000E9488146A898823E1F16623D1F12091FA +:102C3000B301822F82958F7090E0029774F080919B +:102C4000AE019091AF0198878F831986DB86CA8683 +:102C50002C87CE0107960E94BC1186E0F801AEEAEF +:102C6000B1E001900D928A95E1F70E9400150E9453 +:102C7000F214FF24F394D6C04D875E878D859E8520 +:102C80000E94BC19292F22952F7030E02230310587 +:102C90000CF0BCC09F7009F0B6C0805E883008F4AC +:102CA000C1C0C8010E94BC11E4CFC816D90608F4FF +:102CB00053C0F601E81BF90BCF01883C910508F4DD +:102CC00050C0F12C7C2DD98AC88A89890E94B214FF +:102CD000EEEAF1E086E0DF011D928A95E9F70E94B5 +:102CE000F214A0C0751314C0341312C0611110C0C7 +:102CF0008091B301F8018583C8010E94BC1186E070 +:102D0000EEEAF1E0DF011D928A95E9F7FE2C8AC018 +:102D10004D875E878D859E856A8B0E9488146A899F +:102D2000882309F4BECF662309F4BBCF2091B301F9 +:102D3000822F82958F7090E002970CF48ECF809155 +:102D4000AE019091AF019A8389831B82DD82CC8290 +:102D50002E83CE0101967FCF809590958C0D9D1D81 +:102D6000ACCFF62E662309F49CCF75132EC0341316 +:102D70002CC02091B30120FD1FC0822F82958F703F +:102D8000D9F0D80115962C9315978F3049F08F5FA5 +:102D9000982F9295907F822F8F70892B15968C9308 +:102DA000C8010E94BC1186E0F801AEEAB1E00190D2 +:102DB0000D928A95E1F793CF86E0F801AEEAB1E093 +:102DC00001900D928A95E1F72DC04D875E878D8524 +:102DD0009E850E948814811140CF8091B30181604B +:102DE0008093B301C8010E94BC111CC0662309F482 +:102DF00058CF4D875E878D859E850E9488148823D5 +:102E000009F44FCF2ACF811148CF0CC024303105AF +:102E10000CF047CF9F7009F440CFF8019581907F67 +:102E200009F03BCF8F2D62960FB6F894DEBF0FBE30 +:102E3000CDBFDF91CF911F910F91FF90EF90DF9069 +:102E4000CF9008951F93CF93DF93CDB7DEB72C9724 +:102E50000FB6F894DEBF0FBECDBF4F83588769878A +:102E60007A878B879C87CE0107960E945B15882303 +:102E700069F08F8198852A853B85232BF1F19F3F4F +:102E800009F063C08F3F09F060C037C086E0FE01E3 +:102E90003796DE01119601900D928A95E1F76F81C8 +:102EA0007885EA85FB85309741F17F3F11F46F3FCC +:102EB00021F120917D0130E0C901019687709927A9 +:102EC00040917C0150E08417950709F447C069835D +:102ED0007A83FD83EC8396E0929FD001939FB00D9F +:102EE0001124A258BE4FFE01319601900D929A9581 +:102EF000E1F780937D010E94D11416E080917C015E +:102F000090917D018917C1F1189FC0011124825849 +:102F10009E4F0E945B15882379F1E0917C011E9FF2 +:102F2000F0011124E258FE4F40815181628173818A +:102F3000848195810E94C11480917C0190E001966A +:102F40008770992780937C01D9CF4F8158856985F7 +:102F50007A858B859C850E94C114CFCF0E948414F2 +:102F600010927D0110927C01EEEAF1E086E0DF0133 +:102F70001D928A95E9F7C1CF2C960FB6F894DEBF63 +:102F80000FBECDBFDF91CF911F910895EF92FF92B9 +:102F90000F931F93CF93DF938C01892B09F46CC09F +:102FA000F12CEE24E394E8012196F8018491843712 +:102FB00040F4843008F051C0813081F0823019F142 +:102FC0005BC0853709F444C0A8F19CE7980F90379F +:102FD00008F052C08F770E945F1141C00E5F1F4FF3 +:102FE000FE01C49180E28C0F883048F4C7708E2DAA +:102FF00001C0880FCA95EAF70E940E1B14C08C2FDF +:103000000E9497102DC00E5F1F4FFE01C49180E2F9 +:103010008C0F883058F4C7708E2D01C0880FCA9568 +:10302000EAF70E94141B0E94421B1AC08C2F0E94B8 +:103030005F1116C00E5F1F4FFE01C491CC2381F0BB +:103040008FE99FE00197F1F700C00000C150F6CF73 +:103050000E5F1F4FFE01F49003C00E9497108E0177 +:103060008F2D882309F49FCFEFE9FFE03197F1F727 +:1030700000C000008150F5CFDF91CF911F910F91DB +:10308000FF90EF90089508956093B8017093B9018F +:103090008093BA019093BB010C9470140F931F930B +:1030A0000091B8011091B9012091BA013091BB0192 +:1030B000DC01CB01802B912BA22BB32B8093B80189 +:1030C0009093B901A093BA01B093BB011F910F91E6 +:1030D0000C9470140F931F930091B8011091B901D3 +:1030E0002091BA013091BB01DC01CB0180239123F7 +:1030F000A223B3238093B8019093B901A093BA019E +:10310000B093BB011F910F910C9470140F931F93F8 +:103110000091B8011091B9012091BA013091BB0121 +:10312000DC01CB0180279127A227B3278093B80128 +:103130009093B901A093BA01B093BB011F910F9175 +:103140000C9470141092B4011092B5011092B60153 +:103150001092B7010C94701441E050E060E070E010 +:1031600004C0440F551F661F771F8A95D2F74093FE +:10317000B4015093B5016093B6017093B7010C94FC +:10318000701441E050E060E070E004C0440F551F4F +:10319000661F771F8A95D2F78091B4019091B5018F +:1031A000A091B601B091B701482B592B6A2B7B2B0C +:1031B0004093B4015093B5016093B6017093B70189 +:1031C0000C94701441E050E060E070E004C0440FE3 +:1031D000551F661F771F8A95D2F7409550956095C9 +:1031E00070958091B4019091B501A091B601B09114 +:1031F000B701482359236A237B234093B40150939A +:10320000B5016093B6017093B7010C94701441E05E +:1032100050E060E070E004C0440F551F661F771F48 +:103220008A95D2F78091B4019091B501A091B60131 +:10323000B091B701482759276A277B274093B401EB +:103240005093B5016093B6017093B7010C9470145C +:103250000F931F930091B4011091B5012091B60115 +:103260003091B701DC01CB01802B912BA22BB32B2A +:103270008093B4019093B501A093B601B093B701C8 +:103280001F910F910C9470140F931F930091B40130 +:103290001091B5012091B6013091B701DC01CB014D +:1032A00080239123A223B3238093B4019093B5018B +:1032B000A093B601B093B7011F910F910C947014B5 +:1032C0000F931F930091B4011091B5012091B601A5 +:1032D0003091B701DC01CB0180279127A227B327CA +:1032E0008093B4019093B501A093B601B093B70158 +:1032F0001F910F910C9470140895CF92DF92EF926A +:10330000FF920F931F93CF93DF938C01C090B8016E +:10331000D090B901E090BA01F090BB018091B40166 +:103320009091B501A091B601B091B701C82AD92AF0 +:10333000EA2AFB2ACFE1D0E0D701C6010C2E04C057 +:10334000B695A795979587950A94D2F780FF06C002 +:10335000B8018C2F0E94D507019721F4219760F7BF +:1033600080E001C08C2FDF91CF911F910F91FF90D2 +:10337000EF90DF90CF900895CF93DF93EC010E9400 +:103380007D19BE010E94D507DF91CF910895CB0131 +:103390000E94BC1908958091C10108958093C101D4 +:1033A00008951092C10108950E943F1C2091BF0111 +:1033B0003091C0018217930750F00E943F1C20916A +:1033C000BF013091C001821B930B9C010AC00E9477 +:1033D0003F1C2091BF013091C00120953095280FEE +:1033E000391F81E0283B3B4008F480E0089580913C +:1033F000BE0185958595859508958091BE0187705C +:1034000008950E943F1C2091BC013091BD0182179C +:103410009307A8F00E943F1C2091BC013091BD0190 +:10342000821B930B883B9B4010F480E013C080917B +:10343000BE0182FB882780F991E089270BC00E949A +:103440003F1C2091BC013091BD0120953095820F29 +:10345000931FE8CF8170089598E0899F900111240F +:10346000262B2093BE010E94C1180E943F1C9093FE +:10347000BD018093BC0108951092BE011092BD0160 +:103480001092BC0108952091BE0180958223809303 +:10349000BE01982F977089F430E0482F552747FDDB +:1034A00050952417350749F08595859585950E9497 +:1034B000E2181092BD011092BC0108959091BE01D6 +:1034C000977081E009F480E0089590910C019923B0 +:1034D00021F090910D01911109C020910E013091C0 +:1034E0000F01F90132969FEF40E01FC0982F96958B +:1034F000969596959F3050F5E0910E01F0910F0151 +:10350000E90FF11D877021E030E0A90102C0440FEE +:10351000551F8A95E2F7CA019181892B818308950D +:103520009F3F39F04F5F4E3041F051915813F8CF23 +:103530000DC05111F7CF942FF5CF9F3F39F0F9010E +:10354000E90FF11D97FDFA958283089508959091F2 +:103550000C01992321F090910D01911109C0209146 +:103560000E0130910F01F9013296205F3F4F1FC0CD +:10357000982F9695969596959F30F0F4E0910E01D0 +:10358000F0910F01E90FF11D877021E030E0A901F2 +:1035900002C0440F551F8A95E2F7CA0180959181B8 +:1035A0008923818308953196E217F30729F09081EA +:1035B0009813F9CF1082F7CF089581E090E0E09161 +:1035C0000E01F0910F01E80FF91F10820196803172 +:1035D0009105A9F708958091D50108959091D5019D +:1035E000892B8093D501089580959091D5018923E9 +:1035F0008093D50108951092D50108959091D4013A +:10360000892B8093D401089580959091D4018923CA +:103610008093D40108951092D40108959091D3011C +:10362000892B8093D301089580959091D3018923AC +:103630008093D30108951092D30108958093C2011D +:103640000E943F1C9093C0018093BF010895109287 +:10365000C2011092C0011092BF0108958091C20171 +:10366000089580910E0190910F01FC0131969C010B +:10367000205F3F4F80E0919191118F5FE217F30738 +:10368000D1F70895E0910E01F0910F018091D501DD +:103690008083E0910E01F0910F0190818091D4011F +:1036A000892B8083E0910E01F0910F019081809130 +:1036B000D301892B80838091C201882399F00E94D5 +:1036C000D41981110E94271BE0910E01F0910F0186 +:1036D00090818091C201892B80830E94311B8111CE +:1036E0000E94271B80910E0190910F010C947A0F7C +:1036F000CF92DF92EF92FF926C01EE24FF24C1146F +:10370000D104E104F10421F0C701B60120E101C0B8 +:1037100020E0C72ED82EE92EFF24C114D104E104E5 +:10372000F10419F0285FC701B6016B017C0154E078 +:10373000F694E794D794C7945A95D1F7C114D1045D +:10374000E104F10419F02C5FC701B6016B017C01A3 +:1037500042E0F694E794D794C7944A95D1F7C11400 +:10376000D104E104F10419F02E5FC701B601DC01B8 +:10377000CB01B695A79597958795892B8A2B8B2B8F +:1037800009F02F5F822FFF90EF90DF90CF90089588 +:103790008091EB01843021F11092D70120E488E17F +:1037A00090E00FB6F894A895809360000FBE209328 +:1037B000600080E00E94700883B7817F846083BFCF +:1037C00083B7816083BF7894889583B78E7F83BFEA +:1037D00088E10FB6F89480936000109260000FBEED +:1037E000089508950895CF930E94F11B0E94A004AC +:1037F0000E94F21BC0E08C2F0E948E05811104C034 +:10380000CF5FCE30C1F701C081E0CF9108950E9413 +:1038100084140E946E0F0C9470081F920F920FB6C2 +:103820000F9211248F939F93AF93BF938091D701F1 +:10383000811113C08091D8019091D901A091DA0132 +:10384000B091DB014196A11DB11D8093D8019093E9 +:10385000D901A093DA01B093DB01BF91AF919F91A1 +:103860008F910F900FBE0F901F90189582E084BD2E +:1038700093E095BD9AEF97BD80936E0008952FB7A2 +:10388000F8948091D8019091D901A091DA01B0917A +:10389000DB012FBF0895CF92DF92EF92FF920F933B +:1038A0001F932FB7F8944091D8015091D90160919E +:1038B000DA017091DB012FBF6A017B01EE24FF2446 +:1038C0008C0120E030E0C016D106E206F30610F4C9 +:1038D000415051099A01281B390BC9011F910F91C1 +:1038E000FF90EF90DF90CF9008951F920F920FB648 +:1038F0000F9211248F939F93AF93BF938091D80120 +:103900009091D901A091DA01B091DB010196A11D3E +:10391000B11D8093D8019093D901A093DA01B0939F +:10392000DB01BF91AF919F918F910F900FBE0F90D0 +:103930001F9018950E946B0CF8942FEF87EA91E680 +:10394000215080409040E1F700C0000087E090EBFC +:10395000DC018093F5019093F601A093F701B093F9 +:10396000F8019CE088E10FB6F894A8958093600078 +:103970000FBE90936000FFCFEF92FF920F931F93C3 +:10398000CF93DF93D82FC0E08C2F0E948E0500E0EC +:1039900010E0E82EF12CC701002E02C09595879506 +:1039A0000A94E2F780FD06C00F5F1F4F0630110535 +:1039B00091F709C0602F7C2F80E00E949605D813F4 +:1039C000F3CF81E004C0CF5FCE30F1F680E0DF912D +:1039D000CF911F910F91FF90EF900895CF93C82F33 +:1039E0008CE20E94BC1C882321F08C2FCF910C9478 +:1039F000BC1C80E0CF910895CF930E94431E81119B +:103A000002C00E94291EC5E6C15049F00E94A004D0 +:103A10008FE39CE90197F1F700C00000F5CF89E240 +:103A20000E94EE1C811113C18AE20E94EE1C8111DA +:103A30000E94291E85E00E94EE1C81110E949A1CA2 +:103A40000E944E1E8093D60187E00E94EE1C8823C0 +:103A5000A9F18BE10E94EE1C882351F08091D601E0 +:103A600081FB222720F991E0922790FB81F90EC07B +:103A70008EE00E94EE1C882361F08091D60182FBCB +:103A8000222720F991E0922790FB82F98093D601BA +:103A900015C080E10E94EE1C9091D601882341F070 +:103AA00093FB222720F981E0822780FB93F904C051 +:103AB000892F809580FB90F99093D6018091D60153 +:103AC0000E94521E0E94601E8093F40180EE0E94AC +:103AD000EE1C882341F08091F401982F909590FB83 +:103AE00080F98093F40189E30E94EE1C882359F049 +:103AF0008091F40181FB222720F991E0922790FB2D +:103B000081F98093F40182EE0E94EE1C882359F023 +:103B10008091F40182FB222720F991E0922790FB0B +:103B200082F98093F40186EE0E94EE1C882359F0FE +:103B30008091F40183FB222720F991E0922790FBEA +:103B400083F98093F40183EE0E94EE1C882359F0E0 +:103B50008091F40184FB222720F991E0922790FBC9 +:103B600084F98093F40185E30E94EE1C882359F0C8 +:103B70008091F40185FB222720F991E0922790FBA8 +:103B800085F98093F40181E30E94EE1C882359F0AB +:103B90008091F40186FB222720F991E0922790FB87 +:103BA00086F98093F40181E10E94EE1C882359F08C +:103BB0008091F40187FB222720F991E0922790FB66 +:103BC00087F98093F4018091F4010E94641E809132 +:103BD000F40187FB882780F980930D0187E20E941A +:103BE000EE1CC82F8EE10E94EE1C8111C2608FE195 +:103BF0000E94EE1C8111C46080E20E94EE1C8111C3 +:103C0000C86081E20E94EE1C8111C06182E20E94C4 +:103C1000EE1C8111C06283E20E94EE1C8111C0641F +:103C200084E20E94EE1C882311F0C06802C0CC23FD +:103C300029F08C2F0E945B1E6C2F03C00E94571E20 +:103C4000682F70E080E090E0CF910C944418CF9101 +:103C500008956DEE7EEF80E090E00E94292460E000 +:103C600082E090E00E94172460E083E090E00E94F0 +:103C7000172460E084E090E00E94172460E085E073 +:103C800090E00C94172480E090E00E94112421E041 +:103C90008D3E9E4F09F020E0822F089582E090E053 +:103CA0000C940924682F82E090E00C94172483E0A0 +:103CB00090E00C940924682F83E090E00C94172482 +:103CC00084E090E00C940924682F84E090E00C9448 +:103CD00017248091DE0180FF0BC06091130185E005 +:103CE000689FB001112475956795759567952BC0F0 +:103CF00081FF09C06091130185E0689FB001112424 +:103D00007595679520C082FF07C06091130185E01B +:103D1000689FB001112417C09091DF019923D1F061 +:103D200060911201961788F72091130185E0289F72 +:103D300090011124929FA001939F500D112470E0D7 +:103D4000CA010E94DB236038710540F461157105DA +:103D500039F002C065E070E0862F08958FE708957E +:103D600081E008958091DE0180FF08C0609111011B +:103D700070E0759567957595679521C081FF06C0C0 +:103D80006091110170E07595679519C082FF04C0BC +:103D90006091110170E010C09091DF019923C1F092 +:103DA000609110019617A0F780911101899FC001C1 +:103DB000112470E00E94DB236038710528F461153E +:103DC000710521F0862F08958FE7089581E0089509 +:103DD00061E070E0F4CF803F21F40E94691E81957C +:103DE00004C0813F29F40E94691E8093E201089576 +:103DF000823F21F40E94691E819504C0833F29F40B +:103E00000E94691E8093E1010895893F19F40E9480 +:103E1000B21E05C08A3F31F40E94B21E8195809384 +:103E2000E30108958B3F21F40E94B21E819504C0E6 +:103E30008C3F29F40E94B21E8093E4010895843FD0 +:103E400021F48091E001816017C0853F21F48091C9 +:103E5000E001826011C0863F21F48091E00184601E +:103E60000BC0873F21F48091E001886005C0883F46 +:103E700031F48091E00180618093E00108958D3FED +:103E800021F48091DE0181600BC08E3F21F480918E +:103E9000DE01826005C08F3F29F48091DE018460DD +:103EA0008093DE010895803F39F48091E20187FF1D +:103EB0006CC01092E20169C0813F29F48091E20157 +:103EC0001816BCF362C09091E101823F29F497FF7C +:103ED0005CC01092E10159C0833F19F41916CCF36C +:103EE00054C0893F41F48091E30118160CF04DC095 +:103EF0001092E3014AC08A3F29F48091E30187FFD1 +:103F000044C0F6CF8B3F39F48091E40187FF3DC078 +:103F10001092E4013AC08C3F29F48091E401181614 +:103F2000BCF333C0843F21F48091E0018E7F17C041 +:103F3000853F21F48091E0018D7F11C0863F21F4FF +:103F40008091E0018B7F0BC0873F21F48091E001DD +:103F5000877F05C0883F31F48091E0018F7E809398 +:103F6000E00113C08D3F21F48091DE018E7F0BC0F4 +:103F70008E3F21F48091DE018D7F05C08F3F29F4B3 +:103F80008091DE018B7F8093DE018091E1018111C0 +:103F90000EC08091E20181110AC08091E30181117C +:103FA00006C08091E401811102C01092DF010895E2 +:103FB00080EE91E00E94850F0E943F1C9093DD01EE +:103FC0008093DC0108951F93CF93DF938091DC01F0 +:103FD0009091DD010E944B1CAC019091DF0199236F +:103FE00021F02091140130E006C0209115018AE0F3 +:103FF000289F900111244217530708F486C080912E +:10400000E101C091E201D091E3011091E40181113D +:1040100007C0C11176C0D11174C0111172C075C032 +:104020009F3F19F09F5F9093DF01181624F40E94C0 +:10403000691E8093E1018091E10187FF05C00E9424 +:10404000691E81958093E1011C1624F40E94691E6B +:104050008093E2018091E20187FF05C00E94691E02 +:1040600081958093E2016091E101662339F1C0916D +:10407000E201CC2319F1772767FD7095872F972FE1 +:104080000E94EC2223E333E343E35FE30E945023E7 +:104090000E94B9226093E1016C2F772767FD70952C +:1040A000872F972F0E94EC2223E333E343E35FE360 +:1040B0000E9450230E94B9226093E2011D1624F44D +:1040C0000E94B21E8093E3018091E30187FF05C047 +:1040D0000E94B21E81958093E301111624F40E9480 +:1040E000B21E8093E4018091E40187FF05C00E9425 +:1040F000B21E81958093E401DF91CF911F910C94C2 +:10410000D81F9F3F09F08ECF96CFDF91CF911F919F +:104110000895E0EEF1E085E0DF011D928A95E9F770 +:104120001092DF011092DE010895833081F128F4AE +:10413000813059F08230D1F00895853009F449C0BA +:10414000B8F1863009F456C0089580911501262FE4 +:1041500030E0280F311D2F3F310524F4680F6093A4 +:10416000150108958FEF8093150108958091140132 +:10417000262F30E0280F311D2F3F310524F4680F22 +:104180006093140108958FEF809314010895809136 +:104190001301262F30E0280F311D2F3F310524F465 +:1041A000680F6093130108958FEF809313010895B2 +:1041B00080911201262F30E0280F311D2F3F31054D +:1041C00024F4680F6093120108958FEF8093120119 +:1041D000089580911101262F30E0280F311D2F3FC7 +:1041E000310524F4680F6093110108958FEF8093D7 +:1041F0001101089580911001262F30E0280F311D04 +:104200002F3F310524F4680F6093100108958FEF5C +:10421000809310010895833011F128F4813049F022 +:10422000823091F00895853081F120F18630C1F11E +:10423000089580911501681720F4861B809315015D +:10424000089510921501089580911401681720F4C3 +:10425000861B809314010895109214010895809193 +:104260001301681720F4861B8093130108951092A0 +:104270001301089580911201681720F4861B809322 +:10428000120108951092120108958091110168178A +:1042900020F4861B80931101089510921101089556 +:1042A00080911001681720F4861B809310010895F7 +:1042B0001092100108950F931F938B3109F475C06C +:1042C000A0F58E3009F484C0C0F4873009F45BC0D7 +:1042D00068F4863009F0AAC08091D601817F8E7F74 +:1042E0008093D60181E08093E601A1C0883009F473 +:1042F00096C08B3009F493C099C0813109F472C023 +:1043000068F4803109F092C08091D60183FB2227A6 +:1043100020F991E0922790FB83F950C0863109F48F +:104320007EC0893109F47BC081C0853309F479C02E +:1043300068F4873209F475C028F48E3108F476C029 +:104340008D515AC0893209F46CC070C0833438F47E +:104350008A3308F050C0883309F461C067C08334E1 +:1043600009F45FC0883409F061C00E9484140FEF23 +:1043700013ED20E3015010402040E1F700C00000A1 +:104380000E949A1C4CC09091D601892F8095817013 +:1043900080FB90F929F0966098609093D60147C011 +:1043A000997F977F9093D6013AC08091D60181FB87 +:1043B000222720F991E0922790FB81F98093D60182 +:1043C000992369F18091D60181608093D60127C03D +:1043D0008091D60182FB222720F991E0922790FB61 +:1043E00082F9ECCF0E94841490910D0181E089271D +:1043F00080930D0114C0895341E050E060E070E00B +:104400008A019B0104C0000F111F221F331F8A95D0 +:10441000D2F7C901B8010E9444180E94841481E0B7 +:1044200006C061E070E080E090E0F5CF80E01F9191 +:104430000F91089580E0089580E00895CF93C82FEC +:104440008091E601813079F018F08230E9F187C07F +:10445000E0910E01F0910F018081813169F082328B +:1044600009F07FC009C0E0910E01F0910F01808139 +:10447000813111F0823261F48C2F0E941A22811155 +:1044800004C08C2F0E945B211DC081E090E01AC007 +:104490008C2F0E941C22811114C0C43179F048F481 +:1044A000CB3079F0C03109F060C082E08093E60142 +:1044B00008C0C93219F0C83321F057C01092E60184 +:1044C00054C081E0817053C0C93289F118F5C431FC +:1044D00071F1A8F4C73009F046C08AE08093150155 +:1044E00094E19093140193E090931301809312014F +:1044F00088E08093110188E28093100134C0CE518E +:10450000C63088F5EC2FF0E0E65DFE4F80818093A9 +:10451000E50129C0CE34E9F020F4CB3421F56AE07E +:1045200013C0C13579F0C235F1F461E00DC080915E +:10453000E501882319F01092E50115C081E0809310 +:10454000E60115C061E006C08091E5010E9495205A +:104550000AC06AE08091E5010E940B2104C010921C +:10456000E60180E004C081E002C080E0ABCFCF91E3 +:10457000089504D06894B1118DC0089570D088F06A +:104580009F5790F0B92F9927B751A0F0D1F0660F3F +:10459000771F881F991F1AF0BA95C9F712C0B1305A +:1045A00081F077D0B1E0089574C0672F782F882705 +:1045B000B85F39F0B93FCCF3869577956795B39599 +:1045C000D9F73EF490958095709561957F4F8F4F08 +:1045D0009F4F0895E89409C097FB3EF4909580950D +:1045E000709561957F4F8F4F9F4F9923A9F0F92FB9 +:1045F00096E9BB279395F695879577956795B79537 +:10460000F111F8CFFAF4BB0F11F460FF1BC06F5F1C +:104610007F4F8F4F9F4F16C0882311F096E911C02E +:10462000772321F09EE8872F762F05C0662371F04F +:1046300096E8862F70E060E02AF09A95660F771F63 +:10464000881FDAF7880F9695879597F9089557FD93 +:104650009058440F551F59F05F3F71F04795880FF0 +:1046600097FB991F61F09F3F79F087950895121687 +:1046700013061406551FF2CF4695F1DF08C0161633 +:1046800017061806991FF1CF8695710561050894E4 +:104690000895E894BB2766277727CB0197F90895FB +:1046A0000BD078C069D028F06ED018F0952309F0AF +:1046B0005AC05FC01124EECFCADFA0F3959FD1F39B +:1046C000950F50E0551F629FF001729FBB27F00DC0 +:1046D000B11D639FAA27F00DB11DAA1F649F662715 +:1046E000B00DA11D661F829F2227B00DA11D621F64 +:1046F000739FB00DA11D621F839FA00D611D221F1E +:10470000749F3327A00D611D231F849F600D211D01 +:10471000822F762F6A2F11249F5750408AF0E1F0A4 +:1047200088234AF0EE0FFF1FBB1F661F771F881FED +:1047300091505040A9F79E3F510570F014C0AACF88 +:104740005F3FECF3983EDCF3869577956795B795D8 +:10475000F795E7959F5FC1F7FE2B880F911D969502 +:10476000879597F9089597F99F6780E870E060E072 +:1047700008959FEF80EC089500240A9416161706FA +:1047800018060906089500240A9412161306140642 +:1047900005060895092E0394000C11F4882352F0A5 +:1047A000BB0F40F4BF2B11F460FF04C06F5F7F4F5D +:1047B0008F4F9F4F089597FB072E16F4009407D054 +:1047C00077FD09D00E94F52307FC05D03EF49095B3 +:1047D00081959F4F0895709561957F4F0895EE0FD5 +:1047E000FF1F0590F491E02D0994AA1BBB1B51E11A +:1047F00007C0AA1FBB1FA617B70710F0A61BB70B51 +:10480000881F991F5A95A9F780959095BC01CD01F5 +:104810000895F999FECF92BD81BDF89A992780B588 +:104820000895A8E1B0E042E050E00C943124262F36 +:10483000F999FECF92BD81BDF89A019700B4021696 +:1048400039F01FBA20BD0FB6F894FA9AF99A0FBE44 +:1048500008950196272F0E9418240C941724DC0138 +:10486000CB01FC01F999FECF06C0F2BDE1BDF89A7B +:10487000319600B40D9241505040B8F70895F89425 +:02488000FFCF68 +:10488200200272080009DD08A90875080101C301A8 +:1048920028080A03140A3F4D3639850438040204F5 +:1048A200C9035C0375038E03A70301020304050613 +:0448B20007080900EA +:00000001FF -- cgit v1.2.1 From 85f5eaec39c38751a273f8b40e9ff3ceb0784047 Mon Sep 17 00:00:00 2001 From: Thiago Alves Date: Wed, 4 May 2016 14:19:30 -0700 Subject: Change the access to the extra layer to be simetric. Instead of having a key on the left side for one layer and a key on the right side for the other layer, I put two dedicated layers on each side to get to the proper layers. --- keyboard/ergodox_ez/keymaps/townk_osx/keymap.c | 42 +++++++++++----------- .../ergodox_ez/keymaps/townk_osx/townk_osx.hex | 12 +++---- 2 files changed, 27 insertions(+), 27 deletions(-) diff --git a/keyboard/ergodox_ez/keymaps/townk_osx/keymap.c b/keyboard/ergodox_ez/keymaps/townk_osx/keymap.c index 62ebc5c3ac..9f16bc8636 100644 --- a/keyboard/ergodox_ez/keymaps/townk_osx/keymap.c +++ b/keyboard/ergodox_ez/keymaps/townk_osx/keymap.c @@ -70,7 +70,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |-----------+------+------+------+------+------| F18 | | F19 |------+------+------+------+------+-----------| * | LShift | Z | X | C | V | B | Hyper| | Hyper| N | M | , | . | / | RShift | * `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------' - * | FN | No |LCtrl | LAlt | LGui | | RGui | RAlt | RCtrl| No | KPAD | + * | FN | KPAD |LCtrl | LAlt | LGui | | RGui | RAlt | RCtrl| KPAD | FN | * `-----------------------------------' `-----------------------------------' * ,-------------. ,-------------. * | Left | Right| | Down | Up | @@ -84,23 +84,23 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * (this is used to issue the Esc key to the Tmux application) */ [BASE]=KEYMAP(//left half - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_ESC, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, MEH_T(KC_F16), - CTL_T(KC_BSLS), KC_A, KC_S, KC_D, KC_F, KC_G, - KC_FN2, KC_Z, KC_X, KC_C, KC_V, KC_B, ALL_T(KC_F18), - KC_FN1, KC_NO, KC_LCTRL, KC_LALT, KC_LGUI, - KC_LEFT, KC_RIGHT, - KC_HOME, - KC_BSPC, KC_DELT, KC_END, - //right half - M(MACRO_TMUX_ESC), KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQL, - MEH_T(KC_F17), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS, - KC_H, KC_J, KC_K, KC_L, KC_SCLN, CTL_T(KC_QUOT), - ALL_T(KC_F19), KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_FN2, - KC_RGUI, ALT_T(KC_LBRC), CTL_T(KC_RBRC), KC_NO, TG(KEYPAD), - KC_DOWN, KC_UP, - KC_PGUP, - KC_PGDN, KC_ENT, KC_SPC), + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_ESC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, MEH_T(KC_F16), + CTL_T(KC_BSLS), KC_A, KC_S, KC_D, KC_F, KC_G, + KC_FN2, KC_Z, KC_X, KC_C, KC_V, KC_B, ALL_T(KC_F18), + KC_FN1, TG(KEYPAD), KC_LCTRL, KC_LALT, KC_LGUI, + KC_LEFT, KC_RIGHT, + KC_HOME, + KC_BSPC, KC_DELT, KC_END, + //right half + M(MACRO_TMUX_ESC), KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQL, + MEH_T(KC_F17), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS, + KC_H, KC_J, KC_K, KC_L, KC_SCLN, CTL_T(KC_QUOT), + ALL_T(KC_F19), KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_FN2, + KC_RGUI, ALT_T(KC_LBRC), CTL_T(KC_RBRC), TG(KEYPAD), KC_FN1, + KC_DOWN, KC_UP, + KC_PGUP, + KC_PGDN, KC_ENT, KC_SPC), /* Keymap 1: KeyPad Layer * @@ -128,7 +128,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_NO, KC_NO, KC_MS_WH_UP, KC_MS_U, KC_MS_WH_DOWN, KC_NO, KC_NO, KC_NO, KC_NO, KC_MS_L, KC_MS_D, KC_MS_R, KC_NO, KC_NO, KC_NO, KC_MS_WH_LEFT, KC_NO, KC_MS_WH_RIGHT, KC_NO, KC_NO, - KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, + KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, @@ -137,7 +137,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TAB, KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_PLUS, KC_RPRN, KC_MS_BTN2, KC_KP_4, KC_KP_5, KC_KP_6, KC_KP_MINUS, KC_NO, KC_MS_BTN3, KC_KP_ENTER, KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_EQUAL, KC_NO, KC_NO, - KC_KP_0, KC_KP_DOT, KC_KP_COMMA, KC_NO, KC_TRNS, + KC_KP_0, KC_KP_DOT, KC_KP_COMMA, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO), @@ -179,7 +179,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_VOLD, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_NO, KC_MUTE, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_RSFT, - KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_NO, + KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO)}; diff --git a/keyboard/ergodox_ez/keymaps/townk_osx/townk_osx.hex b/keyboard/ergodox_ez/keymaps/townk_osx/townk_osx.hex index 89e9ffcce2..abfe837abb 100644 --- a/keyboard/ergodox_ez/keymaps/townk_osx/townk_osx.hex +++ b/keyboard/ergodox_ez/keymaps/townk_osx/townk_osx.hex @@ -17,7 +17,7 @@ :100100009213A013A713AE13B81302290001E00144 :1001100004020402E00129000000F4A200223500DC :100120002B003171C200C10000001E001400040049 -:100130001D0000004D001F001A0016001B00E0000B +:100130001D0001544D001F001A0016001B00E000B6 :100140004C002000080007000600E2002A00210001 :10015000150009001900E3004A00220017000A00F8 :1001600005000000500029006B7700006D7F000043 @@ -25,9 +25,9 @@ :100180001C000B00110000005200240018000D009C :100190001000E7004B0025000C000E0036002F7405 :1001A0002C00260012000F003700307128002700B5 -:1001B00013003300380000004E002E002D00347173 -:1001C000C200015400000000000000000000010017 -:1001D000000000000000000000000000000000001F +:1001B00013003300380001544E002E002D0034711E +:1001C000C200C100000000000000000000000100AB +:1001D000000000000000000000000100000000001E :1001E000F900F200FB00000000000000F000F10048 :1001F0000000000000000000FA00F300FC00000016 :1002000000000000000000000000000000000000EE @@ -35,7 +35,7 @@ :100220005800000000009C005F005C0059000000C6 :100230000000540060005D005A006200000055009C :1002400061005E005B00630000002302570056005F -:100250006700850000002602270200000000000061 +:100250006700850000002602270200000000010060 :100260000000F400F500F6000000010000000000AE :1002700000003900E100010000003A00AD00B000CC :100280000000000000003B00BC00AC0000000100CA @@ -47,7 +47,7 @@ :1002E0000000010000004300000052000000010077 :1002F0000000440000004F00000001000000450025 :1003000000000000000000000000A900AA00A800F2 -:10031000E5000000000016034500720067006F0052 +:10031000E5000100000016034500720067006F0051 :1003200044006F007800200045005A0000001603CA :100330004500720067006F0044006F0078002000E5 :1003400045005A0000000403090409026D0004017D -- cgit v1.2.1 From 3e43298d793f7f06782721c9745b7378eb906bb8 Mon Sep 17 00:00:00 2001 From: Thiago Alves Date: Thu, 5 May 2016 09:54:43 -0700 Subject: Revert the Makefile to the original one. Make sure I customize things as much as possible inside the keymap itself. --- keyboard/ergodox_ez/Makefile | 2 +- keyboard/ergodox_ez/keymaps/townk_osx/makefile.mk | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) create mode 100644 keyboard/ergodox_ez/keymaps/townk_osx/makefile.mk diff --git a/keyboard/ergodox_ez/Makefile b/keyboard/ergodox_ez/Makefile index f4a61dde4b..3a07ec254f 100644 --- a/keyboard/ergodox_ez/Makefile +++ b/keyboard/ergodox_ez/Makefile @@ -96,7 +96,7 @@ EXTRAKEY_ENABLE = yes # Audio control and System control(+450) # CONSOLE_ENABLE = yes # Console for debug(+400) COMMAND_ENABLE = yes # Commands for debug and configuration CUSTOM_MATRIX = yes # Custom matrix file for the ErgoDox EZ -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work # MIDI_ENABLE = yes # MIDI controls # UNICODE_ENABLE = yes # Unicode diff --git a/keyboard/ergodox_ez/keymaps/townk_osx/makefile.mk b/keyboard/ergodox_ez/keymaps/townk_osx/makefile.mk new file mode 100644 index 0000000000..733d0ee5e7 --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/townk_osx/makefile.mk @@ -0,0 +1,2 @@ +# I don't want my keyboard blinking lights when is suppose to be asleep. +SLEEP_LED_ENABLE = no -- cgit v1.2.1 From c2ffedd65cf0cf7b7bce874ef4dcb020d7520e36 Mon Sep 17 00:00:00 2001 From: Thiago Alves Date: Thu, 5 May 2016 10:19:26 -0700 Subject: Update the .hex file on the keymap folder. --- .../ergodox_ez/keymaps/townk_osx/townk_osx.hex | 2345 ++++++++++---------- 1 file changed, 1179 insertions(+), 1166 deletions(-) diff --git a/keyboard/ergodox_ez/keymaps/townk_osx/townk_osx.hex b/keyboard/ergodox_ez/keymaps/townk_osx/townk_osx.hex index abfe837abb..f0f2c5c79b 100644 --- a/keyboard/ergodox_ez/keymaps/townk_osx/townk_osx.hex +++ b/keyboard/ergodox_ez/keymaps/townk_osx/townk_osx.hex @@ -1,1166 +1,1179 @@ -:100000000C9462020C94A6020C94A6020C94A60214 -:100010000C94A6020C94A6020C94A6020C94A602C0 -:100020000C94A6020C94A6020C94E60C0C94B80D49 -:100030000C940D1C0C94A6020C94A6020C94A6021F -:100040000C94A6020C94A6020C94A6020C94A60290 -:100050000C94A6020C94751C0C94A6020C94A60297 -:100060000C94A6020C94A6020C94A6020C94A60270 -:100070000C94A6020C94A6020C94A6020C94A60260 -:100080000C94A6020C94A6020C94A6020C94A60250 -:100090000C94A6020C94A6020C94A6020C94A60240 -:1000A0000C94A6020C94A6020C94A602250E470EF0 -:1000B000350F470E350F8C0EAF0E350F040F170F8F -:1000C000221222124E124E129612B4123014301412 -:1000D000BF123014741374132114301430142A1402 -:1000E0008113811381138113811381138113811370 -:1000F0008113811381138113811381138113811360 -:100100009213A013A713AE13B81302290001E00144 -:1001100004020402E00129000000F4A200223500DC -:100120002B003171C200C10000001E001400040049 -:100130001D0001544D001F001A0016001B00E000B6 -:100140004C002000080007000600E2002A00210001 -:10015000150009001900E3004A00220017000A00F8 -:1001600005000000500029006B7700006D7F000043 -:100170004F000A306C7700006E7F000051002300B2 -:100180001C000B00110000005200240018000D009C -:100190001000E7004B0025000C000E0036002F7405 -:1001A0002C00260012000F003700307128002700B5 -:1001B00013003300380001544E002E002D0034711E -:1001C000C200C100000000000000000000000100AB -:1001D000000000000000000000000100000000001E -:1001E000F900F200FB00000000000000F000F10048 -:1001F0000000000000000000FA00F300FC00000016 -:1002000000000000000000000000000000000000EE -:10021000000000000000000000002B022B00000086 -:100220005800000000009C005F005C0059000000C6 -:100230000000540060005D005A006200000055009C -:1002400061005E005B00630000002302570056005F -:100250006700850000002602270200000000010060 -:100260000000F400F500F6000000010000000000AE -:1002700000003900E100010000003A00AD00B000CC -:100280000000000000003B00BC00AC0000000100CA -:1002900000003C00AF00AE000000010000003D0087 -:1002A000BB00AB000000010000003E0000000000A9 -:1002B0000000000000003F000100000001000000FD -:1002C00000004000010000000100000000004100AB -:1002D000000050000000000000004200000051003B -:1002E0000000010000004300000052000000010077 -:1002F0000000440000004F00000001000000450025 -:1003000000000000000000000000A900AA00A800F2 -:10031000E5000100000016034500720067006F0051 -:1003200044006F007800200045005A0000001603CA -:100330004500720067006F0044006F0078002000E5 -:1003400045005A0000000403090409026D0004017D -:1003500000A0FA09040000010301010009211101B4 -:100360000001223F000705810308000A090401007B -:100370000103010200092111010001224D000705BE -:10038000820308000A090402000103000000092199 -:10039000110100012236000705830308000A090441 -:1003A00003000103000000092111010001223900AE -:1003B000070584031000011201100100000008ED80 -:1003C000FE071301000102000105010906A1010554 -:1003D0000719E029E7150025019508750181020537 -:1003E000081901290595057501910295017503917B -:1003F00001050719002977150025019578750181F8 -:1004000002C005010980A101850216010026B7007E -:100410001A01002AB700751095018100C0050C096A -:1004200001A1018503160100269C021A01002A9CE5 -:1004300002751095018100C005010902A1010901A1 -:10044000A10005091901290515002501950575016A -:10045000810295017503810105010930093115817A -:10046000257F95027508810609381581257F95013C -:1004700075088106050C0A38021581257F950175DE -:10048000088106C0C005010906A101050719E02978 -:10049000E715002501950875018102950175088110 -:1004A0000105081901290595057501910295017548 -:1004B0000391010507190029FF150025FF95067511 -:1004C000088100C011241FBECFEFDAE0DEBFCDBF30 -:1004D00004B603FE24C08091F5019091F601A0912D -:1004E000F701B091F8018730904BA740B04BB9F4B9 -:1004F0001092F5011092F6011092F7011092F80196 -:1005000014BE84B7877F84BF88E10FB6F8948093C8 -:100510006000109260000FBEE0E0FFE3099511E07B -:10052000A0E0B1E0E2E8F8E402C005900D92A43347 -:10053000B107D9F711E0A4E3B1E001C01D92A53FD6 -:10054000B107E1F70E942C0A0C943F240C940000A0 -:10055000FC016B3059F06C3029F16A3009F041C070 -:100560008281811141C08AE091E0089582818823CF -:1005700041F00E943F1C909336018093350181EE3B -:100580001BC080913501909136010E944B1C883C24 -:10059000910530F486E20E94971086E20E945F1176 -:1005A00081EE1DC08281882351F00E943F1C9093F0 -:1005B00036018093350185EE0E94971012C080911C -:1005C0003501909136010E944B1C883C910530F416 -:1005D00087E20E94971087E20E945F1185EE0E94D9 -:1005E0005F1180E090E008958DE091E00895089516 -:1005F000CF936091B4017091B5018091B601909153 -:10060000B7010E94781BC82F56985E9825982D98A0 -:1006100026982E9827982F988FE090E09093890045 -:100620008093880090938B0080938A0090938D0034 -:1006300080938C00CC2329F0C13029F4C09334017D -:1006400002C01092340180913401813011F4279A54 -:100650002F9A0E946E0F867011F0259A2D9AC23043 -:1006600041F40E94011A811104C027982F98269AFC -:100670002E9AE0910E01F0910F018081982F9272D5 -:1006800059F08D7D49F48FEF90E09093890080932D -:100690008800259A2D9A08C00E942E1B827221F094 -:1006A0000E94D419882379F3CF9108950C94F8020D -:1006B00056985E9825982D9826982E9827982F98CA -:1006C0008FEF90E0909389008093880090938B0047 -:1006D00080938A0090938D0080938C00259A2D9AA8 -:1006E0002FEF80E792E0215080409040E1F700C07A -:1006F0000000269A2E9A2FEF80E792E0215080404A -:100700009040E1F700C00000279A2F9A2FEF80E772 -:1007100092E0215080409040E1F700C00000259811 -:100720002D982FEF80E792E0215080409040E1F734 -:1007300000C0000026982E982FEF80E792E021500D -:1007400080409040E1F700C0000027982F9856980D -:100750005E9825982D9826982E9827982F9808957A -:1007600089EA8093800089E08093810024982C9806 -:100770003F988AB18F748AB96E98479A8BB1806B13 -:100780008BB9769A0E9458030C94F70280E280930A -:1007900000018091370181110EC00E94150481E093 -:1007A000809337012FEF83ED90E3215080409040FC -:1007B000E1F700C0000080E40E941B048093000168 -:1007C00081112EC00E94450480930001811128C030 -:1007D0000E94450480930001811122C08FE30E9492 -:1007E00045048093000181111BC00E943D0480E4F8 -:1007F0000E941B0480930001811112C08CE00E94B2 -:1008000045048093000181110BC00E944504809330 -:100810000001811105C08FE30E944504809300010F -:100820000E943D048091000108951092B9008AE071 -:100830008093B800089594EA9093BC009091BC0016 -:1008400097FFFCCF9091B900987F983021F09031BC -:1008500011F081E008958093BB0084E88093BC0090 -:100860008091BC0087FFFCCF8091B900887F8831E0 -:1008700011F0803471F780E0089584E98093BC0022 -:100880008091BC0084FDFCCF08958093BB0084E878 -:100890008093BC008091BC0087FFFCCF9091B90091 -:1008A000987F81E0983209F480E0089584E880938D -:1008B000BC008091BC0087FFFCCF8091BB000895F5 -:1008C00080910001811115C080E40E941B04809377 -:1008D000000181110CC082E10E9445048093000157 -:1008E000811105C08FEF0E944504809300010E9492 -:1008F0003D0484B1807F84B985B1807F85B98AB198 -:10090000837F8AB98BB1837F8BB93E9846980895CF -:100910000E94C603809300010E94600480B38C7023 -:1009200080BB81B3836F81BBA9E3B1E0E7E4F1E071 -:100930008EE08E0F11921D928E13FCCF0C94B0039B -:10094000BF92CF92DF92EF92FF920F931F93CF93BC -:10095000DF9380910001882379F0809138018F5FC7 -:1009600080933801811108C00E94C6038093000162 -:10097000811102C00E94580309E311E0C0E0D0E0F9 -:10098000DD24D39482E0C82EEE24E394F12CC7300A -:10099000D10500F580910001811164C080E40E94BE -:1009A0001B0480930001811112C082E10E94450462 -:1009B0008093000181110BC0C7010C2E01C0880F6C -:1009C0000A94EAF780950E944504809300010E94F2 -:1009D0003D0448C0CA30A1F028F4C83059F0C930ED -:1009E00061F005C0CC3089F070F0CD3089F0209AEC -:1009F000289810C0219A29980DC0229A2A980AC0D6 -:100A0000239A2B9807C0529A01C0539A5B9802C050 -:100A10003E9A469890EA9A95F1F79FB1799902C06B -:100A200082E001C080E091709D25982B7C9902C0E6 -:100A300084E001C080E0892B7D9902C038E001C0CC -:100A400030E0832B7E9902C020E101C020E0822BA0 -:100A50009FB19095991F9927991F9295990F907E14 -:100A6000892B0FC080910001811149C080E40E9450 -:100A70001B0480930001882379F1B12C0E943D046E -:100A80008B2DF8019081981719F08083C092010195 -:100A90000E94600421960F5F1F4FCE30D10509F0F0 -:100AA00076CF80910101882361F18150809301010B -:100AB000882339F08FE99FE00197F1F700C000002B -:100AC00020C0A7E4B1E0E9E3F1E0CF01825F9191BA -:100AD0009D938E13FCCF15C083E10E944504809343 -:100AE00000018111CACF81E40E941B0480930001A0 -:100AF0008111C3CF0E945604B82EB094BFCF80E0BE -:100B0000C0CF0E94560381E0DF91CF911F910F91DA -:100B1000FF90EF90DF90CF90BF900895E82FF0E026 -:100B2000E95BFE4F808108950895089596E0799FCE -:100B3000F001112494E5899FE00DF11D1124E60FC9 -:100B4000F11DEE0FFF1FE25EFE4F85919491089517 -:100B5000880F991FFC01E856F04085919491089503 -:100B6000880F991FFC01E85EFE4F859194910895CE -:100B70000F931F93CF93DF93EC018115904350F5B2 -:100B8000C11580E2D80708F0B3C0CB3BD10590F483 -:100B9000C83AD10508F05AC0C53AD10508F04BC093 -:100BA000C430D10508F0BBC1219709F0B5C101E0FF -:100BB00010E0F5C1CF3FD10511F008F0B0C1C03F42 -:100BC000D10508F092C0CE01805E9109089708F423 -:100BD000A6C1A2C1C11591E5D907A8F4C23020E58C -:100BE000D20708F09EC0C11580E5D80709F485C07A -:100BF00008F091C0C11520E4D20708F08DC1DD27AF -:100C00008E01106CCCC1C11580E8D80758F4C1150D -:100C100090E7D90708F07CC1C11520E6D20708F497 -:100C200022C17AC1C11580E9D80708F075C1DF700B -:100C30008E01106AB4C1C53AD10509F472C1C63A31 -:100C4000D10509F071C102E810E4A9C1C83AD10583 -:100C500009F46DC1C93AD10509F46CC1CA3AD1058C -:100C600009F46BC1CB3AD10509F46AC1CC3AD1057C -:100C700009F469C1CD3AD10509F468C1C03BD10579 -:100C800009F467C1CE3AD10509F466C1CF3AD1055E -:100C900009F465C1C13BD10509F464C1C23BD1056A -:100CA00009F463C1C33BD10509F462C1C43BD1055A -:100CB00009F461C1C53BD10509F460C1C63BD1054A -:100CC00009F45FC1C73BD10509F45EC1C83BD1053A -:100CD00009F45DC1C93BD10509F45CC1CA3BD1052A -:100CE00009F45BC100E014E45AC18E01106557C1DC -:100CF000CE019F700E94B00553C10E9484149FEFE3 -:100D000024E38CE0915020408040E1F700C00000D7 -:100D10000E949A1C44C18091D60181608093D601C3 -:100D20003EC10E94431E811102C00E94291E0E94E2 -:100D3000601E90E09093F5018093F401C23090E53D -:100D4000D90721F48091F401816086C0C43020E588 -:100D5000D20721F48091F40182607EC0C63080E524 -:100D6000D80721F48091F401846076C0C83090E502 -:100D7000D90719F48091F40127C0CA3020E5D207C1 -:100D800021F48091F401806167C0CC3080E5D80700 -:100D900021F48091F40180625FC0CE3090E5D907E4 -:100DA00021F48091F401806457C0C03120E5D2075E -:100DB00021F48091F40180684FC0C23180E5D807EA -:100DC00029F48091F4018460886046C0C33090E5C6 -:100DD000D90721F48091F4018E7F3EC0C53020E513 -:100DE000D20721F48091F4018D7F36C0C73080E5B1 -:100DF000D80721F48091F4018B7F2EC0C93090E593 -:100E0000D90719F48091F40126C0CB3020E5D20730 -:100E100021F48091F4018F7E1FC0CD3080E5D8078A -:100E200021F48091F4018F7D17C0CF3090E5D90770 -:100E300021F48091F4018F7B0FC0C13120E5D207EE -:100E400021F48091F4018F7707C0C331D04531F48C -:100E50008091F4018B7F877F8093F4018091F4016E -:100E60000E94641E9CC08D2F99278F709927813016 -:100E70009105D9F49E012370332702C0880F991F72 -:100E80002A95E2F79C688E0144E0000F111F4A95F5 -:100E9000E1F700271370802B912B53E0CC0FDD1F5F -:100EA0005A95E1F7C076DD272FC08230910531F4E5 -:100EB000DC2FCC278E01016F106A71C08330910541 -:100EC00069F4CE018370992701E010E002C0000FA1 -:100ED000111F8A95E2F7C8019C680FC0049709F0BA -:100EE0005EC0CE018370992701E010E002C0000FC0 -:100EF000111F8A95E2F7C8019A6823E0CC0FDD1F25 -:100F00002A95E1F7C07ED7708C010C2B1D2B47C0B2 -:100F1000DF708E01106243C000E010E040C08E011F -:100F20003EC001E810E43BC003E810E438C002EE24 -:100F300014E435C009EE14E432C00AEE14E42FC004 -:100F400005EB14E42CC006EB14E429C007EB14E411 -:100F500026C00CEC14E423C00DEC14E420C003E81C -:100F600015E41DC00AE815E41AC002E915E417C02B -:100F700004E915E414C001E216E411C003E216E42A -:100F80000EC004E216E40BC005E216E408C006E257 -:100F900016E405C007E216E402C00AE216E4C8013E -:100FA000DF91CF911F910F91089596E0799FF00105 -:100FB000112494E5899FE00DF11D1124E60FF11D28 -:100FC000EE0FFF1FE25EFE4F85919491803E9105EA -:100FD000E0F4803C910558F58133910509F46FC028 -:100FE00048F48932910509F463C08A32910509F405 -:100FF0006DC072C089339105E9F082389105D1F056 -:101000008533910509F44DC067C0833E910581F198 -:1010100038F4803E9105B9F0823E9105D9F05CC06C -:10102000863E910561F1873E9105A1F155C00E9470 -:10103000A80508952091F40120FD02C021FF4CC0B5 -:1010400080EE90E049C08091F40180FFF9CF89E300 -:1010500090E042C08091F40182FF0EC08091F401C3 -:1010600084FF03C080E090E037C083EE90E034C09E -:101070008091F40182FFF2CF82EE90E02DC080914A -:10108000F40183FF0BC08091F40184FDEBCF87EE68 -:1010900090E022C08091F40183FFF5CF86EE90E0CE -:1010A0001BC08091F40185FF07C089E290E014C065 -:1010B0008091F40185FFF9CF85E390E00DC0809128 -:1010C000F40186FF07C08AE290E006C08091F40137 -:1010D00086FFF9CF81E390E00E94B8050895089556 -:1010E0000C946F08809165010895CF93DF9300D031 -:1010F0001F92CDB7DEB79C018091EB01843019F5CA -:1011000093E099833B832A839093E9008FEF90913A -:10111000E800815095FD06C095ED9A95F1F7000025 -:101120008111F5CF8091E80085FF0DC040E050E0CF -:1011300063E070E0CE0101960E94D60A8091E8003B -:101140008E778093E8000F900F900F90DF91CF91F2 -:101150000895CF93DF9300D01F92CDB7DEB72091D3 -:10116000EB01243021F522E029839B838A8383E0ED -:101170008093E9008FEF9091E800815095FD06C0C3 -:1011800095ED9A95F1F700008111F5CF8091E80077 -:1011900085FF0DC040E050E063E070E0CE010196B5 -:1011A0000E94D60A8091E8008E778093E8000F9025 -:1011B0000F900F90DF91CF9108952091EB01243093 -:1011C000F1F422E02093E9002FEF3091E800215064 -:1011D00035FD06C035ED3A95F1F700002111F5CF48 -:1011E0002091E80025FF0BC040E050E065E070E092 -:1011F0000E94D60A8091E8008E778093E8000895D7 -:10120000CF93DF93EC019091EB01943009F046C04D -:1012100080910C018823D9F080910D018823B9F0C9 -:101220009093E9008FEF9091E800815095FD06C002 -:1012300095E19A95F1F700008111F5CF8091E800D2 -:1012400085FF2CC040E050E060E170E017C081E015 -:101250008093E9008FEF9091E800815095FD06C0E2 -:1012600095ED9A95F1F700008111F5CF8091E80096 -:1012700085FF14C040E050E068E070E0CE010E94BD -:10128000D60A8091E8008E778093E80080E1FE0125 -:10129000A5E5B1E001900D928A95E1F7DF91CF913C -:1012A00008958091EA01811109C00E946B0C0E948F -:1012B000C80C8091E20084608093E200089510924F -:1012C000EA010895089508950C94071C42E061EC2A -:1012D00081E00E94E50B42E061EC82E00E94E50BB8 -:1012E00042E061EC83E00E94E50B42E161EC84E0C6 -:1012F0000C94E50B8091ED01833009F455C030F476 -:10130000813071F0823009F48EC008958A3009F47A -:101310007AC08B3009F460C0893009F09CC020C0CD -:101320008091EC01813A09F096C08091E800877FB6 -:101330008093E8008091F0019091F101892B21F4D4 -:1013400060E185E591E003C060E080E090E070E05E -:101350000E94210B8091E8008B778093E80008952C -:101360008091EC01813209F076C08091F00190917A -:10137000F101009719F0039709F06DC08091E80022 -:10138000877F8093E8008091E80082FD05C080910E -:10139000EB018111F8CF5FC08091F100809365016E -:1013A0008091E8008B7753C08091EC01813A09F07D -:1013B00052C08091F0019091F101892B09F04BC04E -:1013C0008091E800877F8093E8008091E80080FFAB -:1013D000FCCF80910C0136C08091EC018132D9F5AF -:1013E0008091F0019091F101892BA9F58091E8009D -:1013F000877F8093E8000E941A0C8091EE01809311 -:101400000C010C9484148091EC01813221F58091BF -:10141000E800877F8093E8000E941A0C8091EF011A -:101420008093660108958091EC01813AA1F4809146 -:10143000E800877F8093E8008091E80080FFFCCF80 -:10144000809166018093F1008091E8008E7780930F -:10145000E8000C941A0C089584B7877F84BF88E154 -:101460000FB6F89480936000109260000FBE90E079 -:1014700080E80FB6F89480936100909361000FBEEE -:101480000E94BD0F0E946B0C0E94C80C8091E2006C -:1014900084608093E20078940E944E0F0E94BF0FF8 -:1014A00082E091E00E94690F8091EB01853069F440 -:1014B0000E94C81B8091E9018823B1F30E94F31BAD -:1014C000882391F30E94C00AEFCF0E94C50FECCF92 -:1014D000292F332723303105C9F064F42130310539 -:1014E00081F02230310509F043C08DE690E02AE416 -:1014F00033E042C021323105F1F02232310541F1B1 -:1015000037C082E190E027EB33E036C09927813085 -:10151000910541F08230910541F0892B49F5E6E4CF -:10152000F3E005C0EEE2F3E002C0E6E1F3E084910F -:1015300090E09F0121C06430D8F4E62FF0E0EE0F78 -:10154000FF1FEE5DFE4F2081318189E090E014C0E5 -:10155000643070F470E0FB01EE0FFF1FE65EFE4F9B -:1015600020813181FB01EA5EFE4F808190E004C062 -:1015700080E090E020E030E0FA013183208308959C -:1015800080E189BD82E189BD09B400FEFDCF809173 -:10159000D8008F7D8093D8008091E0008260809396 -:1015A000E0008091E00081FDFCCF0895CF92DF92B2 -:1015B000EF92FF920F931F93CF93DF93EC018B0178 -:1015C0006A010E94390C811133C0C114D10439F071 -:1015D000F60180819181081B190BC80FD91FE12CDE -:1015E000F12C0115110519F18091E80085FD16C057 -:1015F0008091E8008E778093E800C114D10449F00F -:10160000F60180819181E80EF91EF182E08285E089 -:101610000FC00E94390C882321F30AC0899180935E -:10162000F10001501109FFEFEF1AFF0ADACF80E055 -:10163000DF91CF911F910F91FF90EF90DF90CF90AE -:1016400008952091F2013091F3012617370748F0F1 -:101650006115710539F42091E8002E772093E80098 -:1016600001C0B90140E061157105A9F12091EB01BC -:10167000222309F443C0253009F442C02091E80038 -:1016800023FD40C02091E80022FD32C02091E800F7 -:1016900020FFE9CF4091F3002091F20030E0342B9D -:1016A000FC01CF016115710559F02830310540F476 -:1016B00081918093F100615071092F5F3F4FF1CF0D -:1016C00041E02830310509F040E02091E8002E7714 -:1016D0002093E800C8CF4111C9CF0AC08091EB0127 -:1016E000882361F0853061F08091E80083FD0AC0B5 -:1016F0008091E80082FFF2CF80E0089582E00895B3 -:1017000083E0089581E008952091F2013091F30182 -:101710002617370748F06115710539F42091E80064 -:101720002E772093E80001C0B901FC0120E061158B -:10173000710591F18091EB01882309F440C0853057 -:1017400009F43FC08091E80083FD3DC08091E8002E -:1017500082FD2FC08091E80080FFE9CF2091F30047 -:101760008091F20090E0922B6115710559F088305C -:10177000910540F424912093F10031966150710954 -:101780000196F2CF21E0089709F020E08091E8006F -:101790008E778093E800CBCF2111CCCF0AC0809107 -:1017A000EB01882361F0853061F08091E80083FDD2 -:1017B0000AC08091E80082FFF2CF80E0089582E0C5 -:1017C000089583E0089581E00895982F973058F5A3 -:1017D0009093E900981739F07091EC002091ED009A -:1017E0005091F00003C0242F762F50E021FF19C044 -:1017F0003091EB003E7F3093EB003091ED003D7F68 -:101800003093ED003091EB0031603093EB0070933A -:10181000EC002093ED005093F0002091EE0027FFA4 -:1018200007C09F5FD3CF8F708093E90081E0089558 -:1018300080E008958091EC0187FF11C08091E8005D -:1018400082FD05C08091EB018111F8CF11C080911C -:10185000E8008B770BC08091EB01882349F08091E1 -:10186000E80080FFF8CF8091E8008E778093E80051 -:1018700008952091E4003091E50095E64091EC0058 -:10188000842F817040FF22C08091E80080FD1CC041 -:101890008091EB01882391F0853091F08091EB00ED -:1018A00085FD10C04091E4005091E50042175307B8 -:1018B00029F39A01915011F784E0089582E0089588 -:1018C00083E0089581E0089580E008954091E80064 -:1018D00042FFDECF08950E94D90C0E94E10CE0EE99 -:1018E000F0E0808181608083E8EDF0E080818F7797 -:1018F000808319BCA7EDB0E08C918E7F8C938081A2 -:101900008F7E80831092EA0108950F931F93CF93E7 -:10191000DF930E94D90C0E94E10CC8EDD0E08881D1 -:101920008F77888388818068888388818F7D88838A -:1019300019BC1092EB011092E7011092E90110928C -:10194000E80100EE10E0F80180818B7F80838881C0 -:101950008160888342E060E080E00E94E50BE1EE78 -:10196000F0E080818E7F8083E2EEF0E08081816014 -:101970008083808188608083F80180818E7F80836E -:10198000888180618883DF91CF911F910F910895A5 -:10199000E8EDF0E080818F7E8083E7EDF0E08081EC -:1019A0008160808384E082BF81E08093EA010C94AF -:1019B000850CE8EDF0E080818E7F80831092E2005C -:1019C00008951092DA001092E10008951F920F928C -:1019D0000FB60F9211242F933F934F935F936F9302 -:1019E0007F938F939F93AF93BF93EF93FF938091D8 -:1019F000E10082FF0BC08091E20082FF07C080916E -:101A0000E1008B7F8093E1000E944D0F8091DA000E -:101A100080FF1FC08091D80080FF1BC08091DA003A -:101A20008E7F8093DA008091D90080FF0DC080E125 -:101A300089BD82E189BD09B400FEFDCF81E08093BC -:101A4000EB010E94510905C019BC1092EB010E94E4 -:101A50005F098091E10080FF19C08091E20080FF62 -:101A600015C08091E2008E7F8093E2008091E200B9 -:101A700080618093E2008091D80080628093D800DA -:101A800019BC85E08093EB010E9463098091E1001D -:101A900084FF30C08091E20084FF2CC080E189BDCA -:101AA00082E189BD09B400FEFDCF8091D8008F7D11 -:101AB0008093D8008091E1008F7E8093E100809137 -:101AC000E2008F7E8093E2008091E200816080934B -:101AD000E2008091E701882311F084E007C0809143 -:101AE000E30087FD02C081E001C083E08093EB0149 -:101AF0000E9464098091E10083FF29C08091E20087 -:101B000083FF25C08091E100877F8093E10082E020 -:101B10008093EB011092E7018091E1008E7F80932A -:101B2000E1008091E2008E7F8093E2008091E200EC -:101B300080618093E20042E060E080E00E94E50B7B -:101B40008091F00088608093F0000E946209FF910C -:101B5000EF91BF91AF919F918F917F916F915F9125 -:101B60004F913F912F910F900FBE0F901F9018959E -:101B70001F920F920FB60F9211242F933F934F9302 -:101B80005F936F937F938F939F93AF93BF93CF9305 -:101B9000DF93EF93FF93C091E900CF708091EC0049 -:101BA000D82FD17080FDD0E81092E9008091F0002C -:101BB000877F8093F00078940E94FC0D1092E900DA -:101BC0008091F00088608093F000CD2BCF70C0939F -:101BD000E900FF91EF91DF91CF91BF91AF919F917C -:101BE0008F917F916F915F914F913F912F910F90C6 -:101BF0000FBE0F901F9018951F93CF93DF93CDB713 -:101C0000DEB7AA970FB6F894DEBF0FBECDBFECEEDD -:101C1000F1E088E08E0F9091F10091938E13FBCF4D -:101C20000E947A098091E80083FF1FC18091EC0136 -:101C30009091ED01492F50E04A30510508F015C14F -:101C4000FA01EA5AFF4F0C94EF23803881F0823872 -:101C500009F00BC18091F0018F708093E9008091B1 -:101C6000EB0085FB882780F91092E90006C080917F -:101C7000E8019091E901911182609091E800977FCD -:101C80009093E8008093F1001092F100C8C0282FD3 -:101C90002D7F09F0EAC0882319F0823061F0E5C099 -:101CA0008091EE01813009F0E0C0933009F080E0CE -:101CB0008093E9012BC08091EE01811127C08091B2 -:101CC000F0018F7009F4D1C08093E9002091EB00FE -:101CD00020FF1CC0933021F48091EB00806214C07F -:101CE0009091EB0090619093EB0021E030E0A9012E -:101CF00002C0440F551F8A95E2F74093EA00109204 -:101D0000EA008091EB0088608093EB001092E9007C -:101D10008091E800877F86C08111A7C01091EE01F5 -:101D20001F778091E3008078812B8093E30080917E -:101D3000E800877F8093E8000E941A0C8091E800F9 -:101D400080FFFCCF8091E30080688093E300111155 -:101D500002C082E001C083E08093EB0186C080581E -:101D6000823008F082C08091EE019091EF018C3DAD -:101D700053E0950779F583E08A838AE289834FB738 -:101D8000F894DE01139620E03EE051E2E32FF0E00C -:101D900050935700E49120FF03C0E295EF703F5F3E -:101DA000EF708E2F90E0EA3010F0C79601C0C09619 -:101DB0008D939D932F5F243149F74FBF8091E800A9 -:101DC000877F8093E8006AE270E0CE0101960E946E -:101DD000210B14C0AE014F5F5F4F6091F0010E9474 -:101DE000680ABC01892B09F440C09091E800977FF4 -:101DF0009093E80089819A810E94840B8091E80089 -:101E00008B778093E80031C0803879F58091E800C5 -:101E1000877F8093E8008091E7018093F1008091B3 -:101E2000E8008E778093E8000E941A0C1EC0811192 -:101E30001CC09091EE019230C0F48091E800877F41 -:101E40008093E8009093E7010E941A0C8091E701CB -:101E5000811106C08091E30087FD02C081E001C0CE -:101E600084E08093EB010E9466098091E80083FF83 -:101E70000AC08091E800877F8093E8008091EB00A2 -:101E800080628093EB00AA960FB6F894DEBF0FBE77 -:101E9000CDBFDF91CF911F9108950895CF93809189 -:101EA000EB018823A1F0C091E900CF709091EC0084 -:101EB000892F817090FD80E8C82B1092E9008091F5 -:101EC000E80083FD0E94FC0DCF70C093E900CF9124 -:101ED000089590936C0180936B010895E0916B01DC -:101EE000F0916C01309721F00190F081E02D099480 -:101EF00080E00895E0916B01F0916C01309721F042 -:101F00000280F381E02D09940895E0916B01F09136 -:101F10006C01309721F00480F581E02D099408953B -:101F20002091690130916A018217930771F09093B3 -:101F30006A0180936901E0916B01F0916C01309727 -:101F400021F00680F781E02D099408952091670122 -:101F5000309168018217930771F090936801809324 -:101F60006701E0916B01F0916C01309721F00084E2 -:101F7000F185E02D0994089508950C94BC0F0E94FA -:101F8000361C0E9488040C94FC1CCF92DF92EF92C6 -:101F9000FF920F931F93CF93DF93CDB7DEB72B97AD -:101FA0000FB6F894DEBF0FBECDBF0E94A0048EE630 -:101FB000C82E81E0D82E00E010E0E02E802F0E9495 -:101FC0008E05F60141916F01F42EF826B1F40F5FF2 -:101FD0001F4F0E30110589F78FEF89838A831B828B -:101FE0000E943F1C8160782F9D838C8349815A8198 -:101FF0006B818D810E94681040C09091D60191FF45 -:1020000004C08B870E9494058B8520E030E04F2D23 -:1020100050E0922FBA01022E02C0759567950A947E -:10202000E2F760FF24C02E83EF8221E030E06901F7 -:1020300002C0CC0CDD1C9A95E2F790E08C219D212A -:10204000892B09F420E028870E943F1C8160782FAB -:102050009A8789874E815F8168858A850E9468108A -:10206000F801E259FE4F8081C826C08206C02F5F6A -:102070003F4F2630310569F6AACF0E94E31F109129 -:102080006D010E946E0F1817A1F00E946E0F8093D1 -:102090006D012B960FB6F894DEBF0FBECDBFDF915A -:1020A000CF911F910F91FF90EF90DF90CF900C9404 -:1020B00070082B960FB6F894DEBF0FBECDBFDF9130 -:1020C000CF911F910F91FF90EF90DF90CF900895E7 -:1020D000CF93DF93CDB7DEB72B970FB6F894DEBF63 -:1020E0000FBECDBF4F83588769877A878B87DE0104 -:1020F000119686E0FD0111928A95E9F785E0FE01CF -:10210000379601900D928A95E1F749815A816B814A -:102110007C818D819E810E9422172B960FB6F894A8 -:10212000DEBF0FBECDBFDF91CF9108950895CF934D -:10213000882309F4C2C0C82F823859F40E946E0F58 -:1021400081FDBBC089E30E94651A0E94421B89E39E -:102150000CC0833879F40E946E0F80FDAEC083E519 -:102160000E94651A0E94421B83E50E94A71ACF9124 -:102170000C94421B843859F40E946E0F82FD9DC05E -:1021800087E40E94651A0E94421B87E4EECF8CEF21 -:102190008C0F813A48F48C2F0E941E2281118DC031 -:1021A0008C2F0E94651AE3CF80E28C0F883048F4B0 -:1021B000C77081E001C0880FCA95EAF70E94EE1A45 -:1021C000D6CF8BE58C0F833078F4C53A29F0C63A28 -:1021D00031F083E890E005C081E890E002C082E839 -:1021E00090E0CF910C94900F88E58C0F833108F02C -:1021F00064C0C83A39F1C93A41F1CA3A49F1CB3A17 -:1022000051F1CC3A59F1CD3A61F1C03B69F1CE3A86 -:1022100071F1CF3A79F1C13B81F1C23B89F1C33B06 -:1022200091F1C43B99F1C53BA1F1C63BA9F1C73B74 -:10223000B1F1C83BB9F1C93BC1F1CA3BC9F180E07A -:1022400090E038C082EE90E035C089EE90E032C078 -:102250008AEE90E02FC085EB90E02CC086EB90E0FA -:1022600029C087EB90E026C08CEC90E023C08DEC79 -:1022700090E020C083E891E01DC08AE891E01AC098 -:1022800082E991E017C084E991E014C081E292E014 -:1022900011C083E292E00EC084E292E00BC085E2BE -:1022A00092E008C086E292E005C087E292E002C0B8 -:1022B0008AE292E0CF910C94A60FCF9108958823E3 -:1022C00009F44BC0823859F40E946E0F81FF45C05B -:1022D00089E30E94651A0E94421B89E30CC083387F -:1022E00071F40E946E0F80FF38C083E50E94651A6A -:1022F0000E94421B83E50E94A71A0C94421B84385B -:1023000059F40E946E0F82FF28C087E40E94651A6C -:102310000E94421B87E4EFCF9CEF980F913A58F34D -:1023200090E2980F983050F4877091E001C0990FB7 -:102330008A95EAF7892F0E94F41ADFCF9BE5980F60 -:10234000933020F480E090E00C94900F885A833111 -:1023500020F480E090E00C94A60F0895882321F0EB -:102360000E94EE1A0C94421B0895882321F00E94CB -:10237000F41A0C94421B08952F923F924F925F9251 -:102380007F928F929F92AF92BF92CF92DF92EF9205 -:10239000FF920F931F93CF93DF9300D000D01F9233 -:1023A000CDB7DEB725E0FC01DE01119601900D925C -:1023B0002A95E1F7FC0100811181F280E580E29429 -:1023C0003FE0E32223813481232B09F472C21F3FB3 -:1023D00019F40F3F09F46DC26C010E94011A8823A1 -:1023E00019F082E00E94431AC6010E9496100983E8 -:1023F0001A8369817A818F2D0E94C7198C010E94EE -:102400007C190E944318F1100E940B1B0E945E1A57 -:10241000882379F0FF2069F080E2800F883048F04F -:1024200082E00E94431A0E945E1A91E0782E79267B -:1024300001C0712CE12FE295EF70F0E0E05AFF4F00 -:102440000C94EF23812F807F1F70882311F0129549 -:10245000107FFF2089F0112309F4E8C180E2800F8A -:10246000883020F4812F0E94EE1A03C0812F0E9431 -:10247000FE1A0E94421BDAC1802F0E945F111123B5 -:1024800009F4EEC1005E812F083018F40E94F41A9E -:1024900002C00E94041B0E94421BE2C1812F807F68 -:1024A0001F70803211F01295107F002319F0013057 -:1024B00049F132C0FF2091F0EE2091F1F1E0EF12EE -:1024C00004C0812F0E941E1BCBC122E0E21228C053 -:1024D0000E94271B812F0E94CE1922C0EE2079F086 -:1024E00031E0E31208C00E94EB1A812309F4B8C15D -:1024F0000E94D11904C042E0E41609F4B1C10E945F -:10250000271B12C0FF2029F051E05E1508F4A8C176 -:1025100007C0E110A5C108C0FF2021F0E11086C16D -:10252000812FF7C0E11089C1812FF9C0812F8695D5 -:102530008695837090E0009719F0019759F090C14B -:10254000FF2019F0C801937002C080E090E00E9463 -:10255000900F86C1FF2019F0C801937002C080E07F -:1025600090E00E94A60F7CC1802FFF2019F00E94EE -:10257000EB1E02C00E94531F0E94D81F71C1812F01 -:10258000837009F055C0F1106BC1802F829586953C -:102590008770880F880F902F9F70492F50E060E060 -:1025A00070E01A012B01082E04C0220C331C441CBD -:1025B000551C0A94D2F704FF15C02FE0822E912CEF -:1025C000A12CB12CA501940104C0220F331F441F7C -:1025D000551F8A95D2F7CA01B9016095709580950B -:1025E000909503C060E070E0CB01169516951370CE -:1025F000412F50E04230510569F04330510589F0D8 -:1026000062297329842995294130510571F00E946E -:102610006A1826C162297329842995290E9486187F -:102620001FC10E946A18C201B1010E944E1818C150 -:10263000FF2019F0812F817001C08695882309F44D -:102640000FC1802F829586958770880F880F902FF5 -:102650009F70492F50E060E070E01A012B01082EB6 -:1026600004C0220C331C441C551C0A94D2F704FFEE -:1026700015C09FE0892E912CA12CB12CA5019401AD -:1026800004C0220F331F441F551F8A95D2F7CA0179 -:10269000B901609570958095909503C060E070E0F9 -:1026A000CB01169516951370412F50E0423051051D -:1026B00069F04330510589F06229732984299529ED -:1026C0004130510571F00E944419CAC06229732932 -:1026D000842995290E946019C3C00E944419C2012F -:1026E000B1010E942819BCC0802F90E0FC01E05E7F -:1026F000F109E531F10508F094C0E059FF4F0C9461 -:10270000EF230F70812F8F71FF2031F00E94C118CD -:10271000802F0E94AE11A4C00E94E218802F0E9458 -:10272000B5119EC0FF2039F0E1109AC0812F8F7142 -:102730000E94071995C031E03E1508F491C0F6CF0C -:10274000FF2039F0812F8F710E94C11889C0FF20AE -:10275000C9F3812F8F710E94E21882C0FF2029F0F7 -:10276000812F8F710E94AC187BC00E94A21878C084 -:10277000FF20C1F00E94CB190E94F41A0E94FD199B -:10278000843029F40E943C1A812F8F717AC041E075 -:102790004E1508F48EC01F71812F0E94C11863E08E -:1027A000812F0EC00E94CB190E94EE1A51E05E15D7 -:1027B000F8F40E943C1A0E94D11964E0812F8F71B5 -:1027C0000F900F900F900F900F90DF91CF911F916E -:1027D0000F91FF90EF90DF90CF90BF90AF909F90C0 -:1027E0008F907F905F904F903F902F900C942C1A79 -:1027F00081E00F900F900F900F900F90DF91CF918D -:102800001F910F91FF90EF90DF90CF90BF90AF900E -:102810009F908F907F905F904F903F902F900C945F -:10282000431AFF2039F0EE2009F48CCF802F0E944C -:10283000971016C0EE2009F48CCF802F0E945F11F4 -:102840000FC0412F4F70602FC6010E94A8020E9446 -:10285000C61706C0412F4F70602FC6010E94950514 -:10286000772039F10E94FD1980FD23C0F601128204 -:102870000E94F7190E94C118C6010E94BC110E9453 -:10288000F7190F900F900F900F900F90DF91CF914D -:102890001F910F91FF90EF90DF90CF90BF90AF907E -:1028A0009F908F907F905F904F903F902F900C94CF -:1028B000E2180F900F900F900F900F90DF91CF9133 -:1028C0001F910F91FF90EF90DF90CF90BF90AF904E -:1028D0009F908F907F905F904F903F902F900895A2 -:1028E0000E940B1B0E941B1B0E94DD1A0E94421BB0 -:1028F0000E9489200E94D81F80E090E00E94900FE3 -:1029000080E090E00C94A60F0E94FB1A0C947014C7 -:102910000E94BC19292F22952F7030E02C303105F0 -:102920004CF42A3031056CF4225031092230310543 -:10293000A8F407C02C30310569F02F30310551F073 -:102940000DC0803F69F018F4803E40F409C0843F18 -:1029500029F406C093FB882780F9089580E0089544 -:1029600081E00895CF93DF9300D000D01F92CDB7C0 -:10297000DEB70F900F900F900F900F90DF91CF91D7 -:102980000895CF93DF9300D000D000D0CDB7DEB74D -:1029900026960FB6F894DEBF0FBECDBFDF91CF9164 -:1029A00008951F93CF93DF93C0917C0116E080912F -:1029B0007D01C81799F0D0E01C9FF0011D9FF00D1C -:1029C0001124E258FE4F40815181628173818481DC -:1029D00095810E94C1142196C770E9CFDF91CF91F4 -:1029E0001F9108954091AE015091AF016091B001E7 -:1029F0007091B1018091B2019091B3010C94C11416 -:102A00008091B30182958F7009F054C08091B0011C -:102A1000882309F44FC080917C01A0917D016091D1 -:102A2000AE017091AF014091B1015091B201B6E099 -:102A30008A1709F43FC090E041155105C1F17F3F6D -:102A400011F46F3FA1F1B89FF001B99FF00D11246F -:102A5000E258FE4F218172132AC02081621327C0E1 -:102A60002281211124C0238134812417350710F4D9 -:102A700021503109241B350B283C3105C0F420912D -:102A8000B3012F7020612093B30126E0289FF0014D -:102A9000299FF00D1124ED57FE4F80818F708061CA -:102AA00080838EEA91E00E94BC110C94D1140196AF -:102AB0008770BECF0895CF92DF92EF92FF920F936F -:102AC0001F93CF93DF93CDB7DEB762970FB6F8941D -:102AD000DEBF0FBECDBF8C0185E0F801DE011D9683 -:102AE00001900D928A95E1F7D8014C9111965C9175 -:102AF000119712966C9112971396CD90DC901497C3 -:102B00003091AE017091AF018091B1019091B2010D -:102B1000009709F46BC17F3F19F43F3F09F466C188 -:102B2000E090B001EE2009F4C0C02091B301C816B6 -:102B3000D90628F0F601E81BF90BCF0104C08095F7 -:102B400090958C0D9D1DFF24F394883C910578F0A1 -:102B5000F12C207F09F0C6C07C2DD98AC88A8989CA -:102B60000E94B2148EEA91E00E94BC11B1C0822F83 -:102B7000807F09F046C0751314C0341312C0611170 -:102B800010C02F7020612093B3010E94F2148EEACE -:102B900091E00E94BC118091B301D80115968C93ED -:102BA0002EC0CD2819F15F3F11F44F3FF9F0F62EFA -:102BB00061111CC080917C0120917D0136E082175B -:102BC00009F45AC090E0389FF001399FF00D1124AC -:102BD000E258FE4F7181571306C07081471303C03E -:102BE0007281711103C001968770E9CFF62E6623BA -:102BF00009F418C18091B30181608093B301F12C75 -:102C000011C1751308C0341306C0611104C080914E -:102C1000B301D801C3C04D875E878D859E856A8BC1 -:102C20000E9488146A898823E1F16623D1F12091FA -:102C3000B301822F82958F7090E0029774F080919B -:102C4000AE019091AF0198878F831986DB86CA8683 -:102C50002C87CE0107960E94BC1186E0F801AEEAEF -:102C6000B1E001900D928A95E1F70E9400150E9453 -:102C7000F214FF24F394D6C04D875E878D859E8520 -:102C80000E94BC19292F22952F7030E02230310587 -:102C90000CF0BCC09F7009F0B6C0805E883008F4AC -:102CA000C1C0C8010E94BC11E4CFC816D90608F4FF -:102CB00053C0F601E81BF90BCF01883C910508F4DD -:102CC00050C0F12C7C2DD98AC88A89890E94B214FF -:102CD000EEEAF1E086E0DF011D928A95E9F70E94B5 -:102CE000F214A0C0751314C0341312C0611110C0C7 -:102CF0008091B301F8018583C8010E94BC1186E070 -:102D0000EEEAF1E0DF011D928A95E9F7FE2C8AC018 -:102D10004D875E878D859E856A8B0E9488146A899F -:102D2000882309F4BECF662309F4BBCF2091B301F9 -:102D3000822F82958F7090E002970CF48ECF809155 -:102D4000AE019091AF019A8389831B82DD82CC8290 -:102D50002E83CE0101967FCF809590958C0D9D1D81 -:102D6000ACCFF62E662309F49CCF75132EC0341316 -:102D70002CC02091B30120FD1FC0822F82958F703F -:102D8000D9F0D80115962C9315978F3049F08F5FA5 -:102D9000982F9295907F822F8F70892B15968C9308 -:102DA000C8010E94BC1186E0F801AEEAB1E00190D2 -:102DB0000D928A95E1F793CF86E0F801AEEAB1E093 -:102DC00001900D928A95E1F72DC04D875E878D8524 -:102DD0009E850E948814811140CF8091B30181604B -:102DE0008093B301C8010E94BC111CC0662309F482 -:102DF00058CF4D875E878D859E850E9488148823D5 -:102E000009F44FCF2ACF811148CF0CC024303105AF -:102E10000CF047CF9F7009F440CFF8019581907F67 -:102E200009F03BCF8F2D62960FB6F894DEBF0FBE30 -:102E3000CDBFDF91CF911F910F91FF90EF90DF9069 -:102E4000CF9008951F93CF93DF93CDB7DEB72C9724 -:102E50000FB6F894DEBF0FBECDBF4F83588769878A -:102E60007A878B879C87CE0107960E945B15882303 -:102E700069F08F8198852A853B85232BF1F19F3F4F -:102E800009F063C08F3F09F060C037C086E0FE01E3 -:102E90003796DE01119601900D928A95E1F76F81C8 -:102EA0007885EA85FB85309741F17F3F11F46F3FCC -:102EB00021F120917D0130E0C901019687709927A9 -:102EC00040917C0150E08417950709F447C069835D -:102ED0007A83FD83EC8396E0929FD001939FB00D9F -:102EE0001124A258BE4FFE01319601900D929A9581 -:102EF000E1F780937D010E94D11416E080917C015E -:102F000090917D018917C1F1189FC0011124825849 -:102F10009E4F0E945B15882379F1E0917C011E9FF2 -:102F2000F0011124E258FE4F40815181628173818A -:102F3000848195810E94C11480917C0190E001966A -:102F40008770992780937C01D9CF4F8158856985F7 -:102F50007A858B859C850E94C114CFCF0E948414F2 -:102F600010927D0110927C01EEEAF1E086E0DF0133 -:102F70001D928A95E9F7C1CF2C960FB6F894DEBF63 -:102F80000FBECDBFDF91CF911F910895EF92FF92B9 -:102F90000F931F93CF93DF938C01892B09F46CC09F -:102FA000F12CEE24E394E8012196F8018491843712 -:102FB00040F4843008F051C0813081F0823019F142 -:102FC0005BC0853709F444C0A8F19CE7980F90379F -:102FD00008F052C08F770E945F1141C00E5F1F4FF3 -:102FE000FE01C49180E28C0F883048F4C7708E2DAA -:102FF00001C0880FCA95EAF70E940E1B14C08C2FDF -:103000000E9497102DC00E5F1F4FFE01C49180E2F9 -:103010008C0F883058F4C7708E2D01C0880FCA9568 -:10302000EAF70E94141B0E94421B1AC08C2F0E94B8 -:103030005F1116C00E5F1F4FFE01C491CC2381F0BB -:103040008FE99FE00197F1F700C00000C150F6CF73 -:103050000E5F1F4FFE01F49003C00E9497108E0177 -:103060008F2D882309F49FCFEFE9FFE03197F1F727 -:1030700000C000008150F5CFDF91CF911F910F91DB -:10308000FF90EF90089508956093B8017093B9018F -:103090008093BA019093BB010C9470140F931F930B -:1030A0000091B8011091B9012091BA013091BB0192 -:1030B000DC01CB01802B912BA22BB32B8093B80189 -:1030C0009093B901A093BA01B093BB011F910F91E6 -:1030D0000C9470140F931F930091B8011091B901D3 -:1030E0002091BA013091BB01DC01CB0180239123F7 -:1030F000A223B3238093B8019093B901A093BA019E -:10310000B093BB011F910F910C9470140F931F93F8 -:103110000091B8011091B9012091BA013091BB0121 -:10312000DC01CB0180279127A227B3278093B80128 -:103130009093B901A093BA01B093BB011F910F9175 -:103140000C9470141092B4011092B5011092B60153 -:103150001092B7010C94701441E050E060E070E010 -:1031600004C0440F551F661F771F8A95D2F74093FE -:10317000B4015093B5016093B6017093B7010C94FC -:10318000701441E050E060E070E004C0440F551F4F -:10319000661F771F8A95D2F78091B4019091B5018F -:1031A000A091B601B091B701482B592B6A2B7B2B0C -:1031B0004093B4015093B5016093B6017093B70189 -:1031C0000C94701441E050E060E070E004C0440FE3 -:1031D000551F661F771F8A95D2F7409550956095C9 -:1031E00070958091B4019091B501A091B601B09114 -:1031F000B701482359236A237B234093B40150939A -:10320000B5016093B6017093B7010C94701441E05E -:1032100050E060E070E004C0440F551F661F771F48 -:103220008A95D2F78091B4019091B501A091B60131 -:10323000B091B701482759276A277B274093B401EB -:103240005093B5016093B6017093B7010C9470145C -:103250000F931F930091B4011091B5012091B60115 -:103260003091B701DC01CB01802B912BA22BB32B2A -:103270008093B4019093B501A093B601B093B701C8 -:103280001F910F910C9470140F931F930091B40130 -:103290001091B5012091B6013091B701DC01CB014D -:1032A00080239123A223B3238093B4019093B5018B -:1032B000A093B601B093B7011F910F910C947014B5 -:1032C0000F931F930091B4011091B5012091B601A5 -:1032D0003091B701DC01CB0180279127A227B327CA -:1032E0008093B4019093B501A093B601B093B70158 -:1032F0001F910F910C9470140895CF92DF92EF926A -:10330000FF920F931F93CF93DF938C01C090B8016E -:10331000D090B901E090BA01F090BB018091B40166 -:103320009091B501A091B601B091B701C82AD92AF0 -:10333000EA2AFB2ACFE1D0E0D701C6010C2E04C057 -:10334000B695A795979587950A94D2F780FF06C002 -:10335000B8018C2F0E94D507019721F4219760F7BF -:1033600080E001C08C2FDF91CF911F910F91FF90D2 -:10337000EF90DF90CF900895CF93DF93EC010E9400 -:103380007D19BE010E94D507DF91CF910895CB0131 -:103390000E94BC1908958091C10108958093C101D4 -:1033A00008951092C10108950E943F1C2091BF0111 -:1033B0003091C0018217930750F00E943F1C20916A -:1033C000BF013091C001821B930B9C010AC00E9477 -:1033D0003F1C2091BF013091C00120953095280FEE -:1033E000391F81E0283B3B4008F480E0089580913C -:1033F000BE0185958595859508958091BE0187705C -:1034000008950E943F1C2091BC013091BD0182179C -:103410009307A8F00E943F1C2091BC013091BD0190 -:10342000821B930B883B9B4010F480E013C080917B -:10343000BE0182FB882780F991E089270BC00E949A -:103440003F1C2091BC013091BD0120953095820F29 -:10345000931FE8CF8170089598E0899F900111240F -:10346000262B2093BE010E94C1180E943F1C9093FE -:10347000BD018093BC0108951092BE011092BD0160 -:103480001092BC0108952091BE0180958223809303 -:10349000BE01982F977089F430E0482F552747FDDB -:1034A00050952417350749F08595859585950E9497 -:1034B000E2181092BD011092BC0108959091BE01D6 -:1034C000977081E009F480E0089590910C019923B0 -:1034D00021F090910D01911109C020910E013091C0 -:1034E0000F01F90132969FEF40E01FC0982F96958B -:1034F000969596959F3050F5E0910E01F0910F0151 -:10350000E90FF11D877021E030E0A90102C0440FEE -:10351000551F8A95E2F7CA019181892B818308950D -:103520009F3F39F04F5F4E3041F051915813F8CF23 -:103530000DC05111F7CF942FF5CF9F3F39F0F9010E -:10354000E90FF11D97FDFA958283089508959091F2 -:103550000C01992321F090910D01911109C0209146 -:103560000E0130910F01F9013296205F3F4F1FC0CD -:10357000982F9695969596959F30F0F4E0910E01D0 -:10358000F0910F01E90FF11D877021E030E0A901F2 -:1035900002C0440F551F8A95E2F7CA0180959181B8 -:1035A0008923818308953196E217F30729F09081EA -:1035B0009813F9CF1082F7CF089581E090E0E09161 -:1035C0000E01F0910F01E80FF91F10820196803172 -:1035D0009105A9F708958091D50108959091D5019D -:1035E000892B8093D501089580959091D5018923E9 -:1035F0008093D50108951092D50108959091D4013A -:10360000892B8093D401089580959091D4018923CA -:103610008093D40108951092D40108959091D3011C -:10362000892B8093D301089580959091D3018923AC -:103630008093D30108951092D30108958093C2011D -:103640000E943F1C9093C0018093BF010895109287 -:10365000C2011092C0011092BF0108958091C20171 -:10366000089580910E0190910F01FC0131969C010B -:10367000205F3F4F80E0919191118F5FE217F30738 -:10368000D1F70895E0910E01F0910F018091D501DD -:103690008083E0910E01F0910F0190818091D4011F -:1036A000892B8083E0910E01F0910F019081809130 -:1036B000D301892B80838091C201882399F00E94D5 -:1036C000D41981110E94271BE0910E01F0910F0186 -:1036D00090818091C201892B80830E94311B8111CE -:1036E0000E94271B80910E0190910F010C947A0F7C -:1036F000CF92DF92EF92FF926C01EE24FF24C1146F -:10370000D104E104F10421F0C701B60120E101C0B8 -:1037100020E0C72ED82EE92EFF24C114D104E104E5 -:10372000F10419F0285FC701B6016B017C0154E078 -:10373000F694E794D794C7945A95D1F7C114D1045D -:10374000E104F10419F02C5FC701B6016B017C01A3 -:1037500042E0F694E794D794C7944A95D1F7C11400 -:10376000D104E104F10419F02E5FC701B601DC01B8 -:10377000CB01B695A79597958795892B8A2B8B2B8F -:1037800009F02F5F822FFF90EF90DF90CF90089588 -:103790008091EB01843021F11092D70120E488E17F -:1037A00090E00FB6F894A895809360000FBE209328 -:1037B000600080E00E94700883B7817F846083BFCF -:1037C00083B7816083BF7894889583B78E7F83BFEA -:1037D00088E10FB6F89480936000109260000FBEED -:1037E000089508950895CF930E94F11B0E94A004AC -:1037F0000E94F21BC0E08C2F0E948E05811104C034 -:10380000CF5FCE30C1F701C081E0CF9108950E9413 -:1038100084140E946E0F0C9470081F920F920FB6C2 -:103820000F9211248F939F93AF93BF938091D701F1 -:10383000811113C08091D8019091D901A091DA0132 -:10384000B091DB014196A11DB11D8093D8019093E9 -:10385000D901A093DA01B093DB01BF91AF919F91A1 -:103860008F910F900FBE0F901F90189582E084BD2E -:1038700093E095BD9AEF97BD80936E0008952FB7A2 -:10388000F8948091D8019091D901A091DA01B0917A -:10389000DB012FBF0895CF92DF92EF92FF920F933B -:1038A0001F932FB7F8944091D8015091D90160919E -:1038B000DA017091DB012FBF6A017B01EE24FF2446 -:1038C0008C0120E030E0C016D106E206F30610F4C9 -:1038D000415051099A01281B390BC9011F910F91C1 -:1038E000FF90EF90DF90CF9008951F920F920FB648 -:1038F0000F9211248F939F93AF93BF938091D80120 -:103900009091D901A091DA01B091DB010196A11D3E -:10391000B11D8093D8019093D901A093DA01B0939F -:10392000DB01BF91AF919F918F910F900FBE0F90D0 -:103930001F9018950E946B0CF8942FEF87EA91E680 -:10394000215080409040E1F700C0000087E090EBFC -:10395000DC018093F5019093F601A093F701B093F9 -:10396000F8019CE088E10FB6F894A8958093600078 -:103970000FBE90936000FFCFEF92FF920F931F93C3 -:10398000CF93DF93D82FC0E08C2F0E948E0500E0EC -:1039900010E0E82EF12CC701002E02C09595879506 -:1039A0000A94E2F780FD06C00F5F1F4F0630110535 -:1039B00091F709C0602F7C2F80E00E949605D813F4 -:1039C000F3CF81E004C0CF5FCE30F1F680E0DF912D -:1039D000CF911F910F91FF90EF900895CF93C82F33 -:1039E0008CE20E94BC1C882321F08C2FCF910C9478 -:1039F000BC1C80E0CF910895CF930E94431E81119B -:103A000002C00E94291EC5E6C15049F00E94A004D0 -:103A10008FE39CE90197F1F700C00000F5CF89E240 -:103A20000E94EE1C811113C18AE20E94EE1C8111DA -:103A30000E94291E85E00E94EE1C81110E949A1CA2 -:103A40000E944E1E8093D60187E00E94EE1C8823C0 -:103A5000A9F18BE10E94EE1C882351F08091D601E0 -:103A600081FB222720F991E0922790FB81F90EC07B -:103A70008EE00E94EE1C882361F08091D60182FBCB -:103A8000222720F991E0922790FB82F98093D601BA -:103A900015C080E10E94EE1C9091D601882341F070 -:103AA00093FB222720F981E0822780FB93F904C051 -:103AB000892F809580FB90F99093D6018091D60153 -:103AC0000E94521E0E94601E8093F40180EE0E94AC -:103AD000EE1C882341F08091F401982F909590FB83 -:103AE00080F98093F40189E30E94EE1C882359F049 -:103AF0008091F40181FB222720F991E0922790FB2D -:103B000081F98093F40182EE0E94EE1C882359F023 -:103B10008091F40182FB222720F991E0922790FB0B -:103B200082F98093F40186EE0E94EE1C882359F0FE -:103B30008091F40183FB222720F991E0922790FBEA -:103B400083F98093F40183EE0E94EE1C882359F0E0 -:103B50008091F40184FB222720F991E0922790FBC9 -:103B600084F98093F40185E30E94EE1C882359F0C8 -:103B70008091F40185FB222720F991E0922790FBA8 -:103B800085F98093F40181E30E94EE1C882359F0AB -:103B90008091F40186FB222720F991E0922790FB87 -:103BA00086F98093F40181E10E94EE1C882359F08C -:103BB0008091F40187FB222720F991E0922790FB66 -:103BC00087F98093F4018091F4010E94641E809132 -:103BD000F40187FB882780F980930D0187E20E941A -:103BE000EE1CC82F8EE10E94EE1C8111C2608FE195 -:103BF0000E94EE1C8111C46080E20E94EE1C8111C3 -:103C0000C86081E20E94EE1C8111C06182E20E94C4 -:103C1000EE1C8111C06283E20E94EE1C8111C0641F -:103C200084E20E94EE1C882311F0C06802C0CC23FD -:103C300029F08C2F0E945B1E6C2F03C00E94571E20 -:103C4000682F70E080E090E0CF910C944418CF9101 -:103C500008956DEE7EEF80E090E00E94292460E000 -:103C600082E090E00E94172460E083E090E00E94F0 -:103C7000172460E084E090E00E94172460E085E073 -:103C800090E00C94172480E090E00E94112421E041 -:103C90008D3E9E4F09F020E0822F089582E090E053 -:103CA0000C940924682F82E090E00C94172483E0A0 -:103CB00090E00C940924682F83E090E00C94172482 -:103CC00084E090E00C940924682F84E090E00C9448 -:103CD00017248091DE0180FF0BC06091130185E005 -:103CE000689FB001112475956795759567952BC0F0 -:103CF00081FF09C06091130185E0689FB001112424 -:103D00007595679520C082FF07C06091130185E01B -:103D1000689FB001112417C09091DF019923D1F061 -:103D200060911201961788F72091130185E0289F72 -:103D300090011124929FA001939F500D112470E0D7 -:103D4000CA010E94DB236038710540F461157105DA -:103D500039F002C065E070E0862F08958FE708957E -:103D600081E008958091DE0180FF08C0609111011B -:103D700070E0759567957595679521C081FF06C0C0 -:103D80006091110170E07595679519C082FF04C0BC -:103D90006091110170E010C09091DF019923C1F092 -:103DA000609110019617A0F780911101899FC001C1 -:103DB000112470E00E94DB236038710528F461153E -:103DC000710521F0862F08958FE7089581E0089509 -:103DD00061E070E0F4CF803F21F40E94691E81957C -:103DE00004C0813F29F40E94691E8093E201089576 -:103DF000823F21F40E94691E819504C0833F29F40B -:103E00000E94691E8093E1010895893F19F40E9480 -:103E1000B21E05C08A3F31F40E94B21E8195809384 -:103E2000E30108958B3F21F40E94B21E819504C0E6 -:103E30008C3F29F40E94B21E8093E4010895843FD0 -:103E400021F48091E001816017C0853F21F48091C9 -:103E5000E001826011C0863F21F48091E00184601E -:103E60000BC0873F21F48091E001886005C0883F46 -:103E700031F48091E00180618093E00108958D3FED -:103E800021F48091DE0181600BC08E3F21F480918E -:103E9000DE01826005C08F3F29F48091DE018460DD -:103EA0008093DE010895803F39F48091E20187FF1D -:103EB0006CC01092E20169C0813F29F48091E20157 -:103EC0001816BCF362C09091E101823F29F497FF7C -:103ED0005CC01092E10159C0833F19F41916CCF36C -:103EE00054C0893F41F48091E30118160CF04DC095 -:103EF0001092E3014AC08A3F29F48091E30187FFD1 -:103F000044C0F6CF8B3F39F48091E40187FF3DC078 -:103F10001092E4013AC08C3F29F48091E401181614 -:103F2000BCF333C0843F21F48091E0018E7F17C041 -:103F3000853F21F48091E0018D7F11C0863F21F4FF -:103F40008091E0018B7F0BC0873F21F48091E001DD -:103F5000877F05C0883F31F48091E0018F7E809398 -:103F6000E00113C08D3F21F48091DE018E7F0BC0F4 -:103F70008E3F21F48091DE018D7F05C08F3F29F4B3 -:103F80008091DE018B7F8093DE018091E1018111C0 -:103F90000EC08091E20181110AC08091E30181117C -:103FA00006C08091E401811102C01092DF010895E2 -:103FB00080EE91E00E94850F0E943F1C9093DD01EE -:103FC0008093DC0108951F93CF93DF938091DC01F0 -:103FD0009091DD010E944B1CAC019091DF0199236F -:103FE00021F02091140130E006C0209115018AE0F3 -:103FF000289F900111244217530708F486C080912E -:10400000E101C091E201D091E3011091E40181113D -:1040100007C0C11176C0D11174C0111172C075C032 -:104020009F3F19F09F5F9093DF01181624F40E94C0 -:10403000691E8093E1018091E10187FF05C00E9424 -:10404000691E81958093E1011C1624F40E94691E6B -:104050008093E2018091E20187FF05C00E94691E02 -:1040600081958093E2016091E101662339F1C0916D -:10407000E201CC2319F1772767FD7095872F972FE1 -:104080000E94EC2223E333E343E35FE30E945023E7 -:104090000E94B9226093E1016C2F772767FD70952C -:1040A000872F972F0E94EC2223E333E343E35FE360 -:1040B0000E9450230E94B9226093E2011D1624F44D -:1040C0000E94B21E8093E3018091E30187FF05C047 -:1040D0000E94B21E81958093E301111624F40E9480 -:1040E000B21E8093E4018091E40187FF05C00E9425 -:1040F000B21E81958093E401DF91CF911F910C94C2 -:10410000D81F9F3F09F08ECF96CFDF91CF911F919F -:104110000895E0EEF1E085E0DF011D928A95E9F770 -:104120001092DF011092DE010895833081F128F4AE -:10413000813059F08230D1F00895853009F449C0BA -:10414000B8F1863009F456C0089580911501262FE4 -:1041500030E0280F311D2F3F310524F4680F6093A4 -:10416000150108958FEF8093150108958091140132 -:10417000262F30E0280F311D2F3F310524F4680F22 -:104180006093140108958FEF809314010895809136 -:104190001301262F30E0280F311D2F3F310524F465 -:1041A000680F6093130108958FEF809313010895B2 -:1041B00080911201262F30E0280F311D2F3F31054D -:1041C00024F4680F6093120108958FEF8093120119 -:1041D000089580911101262F30E0280F311D2F3FC7 -:1041E000310524F4680F6093110108958FEF8093D7 -:1041F0001101089580911001262F30E0280F311D04 -:104200002F3F310524F4680F6093100108958FEF5C -:10421000809310010895833011F128F4813049F022 -:10422000823091F00895853081F120F18630C1F11E -:10423000089580911501681720F4861B809315015D -:10424000089510921501089580911401681720F4C3 -:10425000861B809314010895109214010895809193 -:104260001301681720F4861B8093130108951092A0 -:104270001301089580911201681720F4861B809322 -:10428000120108951092120108958091110168178A -:1042900020F4861B80931101089510921101089556 -:1042A00080911001681720F4861B809310010895F7 -:1042B0001092100108950F931F938B3109F475C06C -:1042C000A0F58E3009F484C0C0F4873009F45BC0D7 -:1042D00068F4863009F0AAC08091D601817F8E7F74 -:1042E0008093D60181E08093E601A1C0883009F473 -:1042F00096C08B3009F493C099C0813109F472C023 -:1043000068F4803109F092C08091D60183FB2227A6 -:1043100020F991E0922790FB83F950C0863109F48F -:104320007EC0893109F47BC081C0853309F479C02E -:1043300068F4873209F475C028F48E3108F476C029 -:104340008D515AC0893209F46CC070C0833438F47E -:104350008A3308F050C0883309F461C067C08334E1 -:1043600009F45FC0883409F061C00E9484140FEF23 -:1043700013ED20E3015010402040E1F700C00000A1 -:104380000E949A1C4CC09091D601892F8095817013 -:1043900080FB90F929F0966098609093D60147C011 -:1043A000997F977F9093D6013AC08091D60181FB87 -:1043B000222720F991E0922790FB81F98093D60182 -:1043C000992369F18091D60181608093D60127C03D -:1043D0008091D60182FB222720F991E0922790FB61 -:1043E00082F9ECCF0E94841490910D0181E089271D -:1043F00080930D0114C0895341E050E060E070E00B -:104400008A019B0104C0000F111F221F331F8A95D0 -:10441000D2F7C901B8010E9444180E94841481E0B7 -:1044200006C061E070E080E090E0F5CF80E01F9191 -:104430000F91089580E0089580E00895CF93C82FEC -:104440008091E601813079F018F08230E9F187C07F -:10445000E0910E01F0910F018081813169F082328B -:1044600009F07FC009C0E0910E01F0910F01808139 -:10447000813111F0823261F48C2F0E941A22811155 -:1044800004C08C2F0E945B211DC081E090E01AC007 -:104490008C2F0E941C22811114C0C43179F048F481 -:1044A000CB3079F0C03109F060C082E08093E60142 -:1044B00008C0C93219F0C83321F057C01092E60184 -:1044C00054C081E0817053C0C93289F118F5C431FC -:1044D00071F1A8F4C73009F046C08AE08093150155 -:1044E00094E19093140193E090931301809312014F -:1044F00088E08093110188E28093100134C0CE518E -:10450000C63088F5EC2FF0E0E65DFE4F80818093A9 -:10451000E50129C0CE34E9F020F4CB3421F56AE07E -:1045200013C0C13579F0C235F1F461E00DC080915E -:10453000E501882319F01092E50115C081E0809310 -:10454000E60115C061E006C08091E5010E9495205A -:104550000AC06AE08091E5010E940B2104C010921C -:10456000E60180E004C081E002C080E0ABCFCF91E3 -:10457000089504D06894B1118DC0089570D088F06A -:104580009F5790F0B92F9927B751A0F0D1F0660F3F -:10459000771F881F991F1AF0BA95C9F712C0B1305A -:1045A00081F077D0B1E0089574C0672F782F882705 -:1045B000B85F39F0B93FCCF3869577956795B39599 -:1045C000D9F73EF490958095709561957F4F8F4F08 -:1045D0009F4F0895E89409C097FB3EF4909580950D -:1045E000709561957F4F8F4F9F4F9923A9F0F92FB9 -:1045F00096E9BB279395F695879577956795B79537 -:10460000F111F8CFFAF4BB0F11F460FF1BC06F5F1C -:104610007F4F8F4F9F4F16C0882311F096E911C02E -:10462000772321F09EE8872F762F05C0662371F04F -:1046300096E8862F70E060E02AF09A95660F771F63 -:10464000881FDAF7880F9695879597F9089557FD93 -:104650009058440F551F59F05F3F71F04795880FF0 -:1046600097FB991F61F09F3F79F087950895121687 -:1046700013061406551FF2CF4695F1DF08C0161633 -:1046800017061806991FF1CF8695710561050894E4 -:104690000895E894BB2766277727CB0197F90895FB -:1046A0000BD078C069D028F06ED018F0952309F0AF -:1046B0005AC05FC01124EECFCADFA0F3959FD1F39B -:1046C000950F50E0551F629FF001729FBB27F00DC0 -:1046D000B11D639FAA27F00DB11DAA1F649F662715 -:1046E000B00DA11D661F829F2227B00DA11D621F64 -:1046F000739FB00DA11D621F839FA00D611D221F1E -:10470000749F3327A00D611D231F849F600D211D01 -:10471000822F762F6A2F11249F5750408AF0E1F0A4 -:1047200088234AF0EE0FFF1FBB1F661F771F881FED -:1047300091505040A9F79E3F510570F014C0AACF88 -:104740005F3FECF3983EDCF3869577956795B795D8 -:10475000F795E7959F5FC1F7FE2B880F911D969502 -:10476000879597F9089597F99F6780E870E060E072 -:1047700008959FEF80EC089500240A9416161706FA -:1047800018060906089500240A9412161306140642 -:1047900005060895092E0394000C11F4882352F0A5 -:1047A000BB0F40F4BF2B11F460FF04C06F5F7F4F5D -:1047B0008F4F9F4F089597FB072E16F4009407D054 -:1047C00077FD09D00E94F52307FC05D03EF49095B3 -:1047D00081959F4F0895709561957F4F0895EE0FD5 -:1047E000FF1F0590F491E02D0994AA1BBB1B51E11A -:1047F00007C0AA1FBB1FA617B70710F0A61BB70B51 -:10480000881F991F5A95A9F780959095BC01CD01F5 -:104810000895F999FECF92BD81BDF89A992780B588 -:104820000895A8E1B0E042E050E00C943124262F36 -:10483000F999FECF92BD81BDF89A019700B4021696 -:1048400039F01FBA20BD0FB6F894FA9AF99A0FBE44 -:1048500008950196272F0E9418240C941724DC0138 -:10486000CB01FC01F999FECF06C0F2BDE1BDF89A7B -:10487000319600B40D9241505040B8F70895F89425 -:02488000FFCF68 -:10488200200272080009DD08A90875080101C301A8 -:1048920028080A03140A3F4D3639850438040204F5 -:1048A200C9035C0375038E03A70301020304050613 -:0448B20007080900EA -:00000001FF +:100000000C9482020C94C6020C94C6020C94C60294 +:100010000C94C6020C94C6020C94C6020C94C60240 +:100020000C94C6020C94C6020C940F0D0C94E10DB6 +:100030000C94C6020C94C6020C94C6020C94C60220 +:100040000C94C6020C94E6220C94C6020C94C602D0 +:100050000C94C6020C94751C0C94C6020C94C60237 +:100060000C94C6020C94C6020C94C6020C94C602F0 +:100070000C94C6020C94C6020C94C6020C94C602E0 +:100080000C94C6020C94C6020C94C6020C94C602D0 +:100090000C94C6020C94C6020C94C6020C94C602C0 +:1000A0000C94C6020C94C6020C94C6024E0E700E3E +:1000B0005E0F700E5E0FB50ED80E5E0F2D0F400F47 +:1000C0004B124B1277127712BF12DD1259145914CA +:1000D000E81259149D139D134A14591459145314BA +:1000E000AA13AA13AA13AA13AA13AA13AA13AA1328 +:1000F000AA13AA13AA13AA13AA13AA13AA13AA1318 +:10010000BB13C913D013D713E11302290001E00177 +:1001100004020402E00129000000F4A200223500DC +:100120002B003171C200C10000001E001400040049 +:100130001D0001544D001F001A0016001B00E000B6 +:100140004C002000080007000600E2002A00210001 +:10015000150009001900E3004A00220017000A00F8 +:1001600005000000500029006B7700006D7F000043 +:100170004F000A306C7700006E7F000051002300B2 +:100180001C000B00110000005200240018000D009C +:100190001000E7004B0025000C000E0036002F7405 +:1001A0002C00260012000F003700307128002700B5 +:1001B00013003300380001544E002E002D0034711E +:1001C000C200C100000000000000000000000100AB +:1001D000000000000000000000000100000000001E +:1001E000F900F200FB00000000000000F000F10048 +:1001F0000000000000000000FA00F300FC00000016 +:1002000000000000000000000000000000000000EE +:10021000000000000000000000002B022B00000086 +:100220005800000000009C005F005C0059000000C6 +:100230000000540060005D005A006200000055009C +:1002400061005E005B00630000002302570056005F +:100250006700850000002602270200000000010060 +:100260000000F400F500F6000000010000000000AE +:1002700000003900E100010000003A00AD00B000CC +:100280000000000000003B00BC00AC0000000100CA +:1002900000003C00AF00AE000000010000003D0087 +:1002A000BB00AB000000010000003E0000000000A9 +:1002B0000000000000003F000100000001000000FD +:1002C00000004000010000000100000000004100AB +:1002D000000050000000000000004200000051003B +:1002E0000000010000004300000052000000010077 +:1002F0000000440000004F00000001000000450025 +:1003000000000000000000000000A900AA00A800F2 +:10031000E5000100000016034500720067006F0051 +:1003200044006F007800200045005A0000001603CA +:100330004500720067006F0044006F0078002000E5 +:1003400045005A0000000403090409026D0004017D +:1003500000A0FA09040000010301010009211101B4 +:100360000001223F000705810308000A090401007B +:100370000103010200092111010001224D000705BE +:10038000820308000A090402000103000000092199 +:10039000110100012236000705830308000A090441 +:1003A00003000103000000092111010001223900AE +:1003B000070584031000011201100100000008ED80 +:1003C000FE071301000102000105010906A1010554 +:1003D0000719E029E7150025019508750181020537 +:1003E000081901290595057501910295017503917B +:1003F00001050719002977150025019578750181F8 +:1004000002C005010980A101850216010026B7007E +:100410001A01002AB700751095018100C0050C096A +:1004200001A1018503160100269C021A01002A9CE5 +:1004300002751095018100C005010902A1010901A1 +:10044000A10005091901290515002501950575016A +:10045000810295017503810105010930093115817A +:10046000257F95027508810609381581257F95013C +:1004700075088106050C0A38021581257F950175DE +:10048000088106C0C005010906A101050719E02978 +:10049000E715002501950875018102950175088110 +:1004A0000105081901290595057501910295017548 +:1004B0000391010507190029FF150025FF95067511 +:1004C000088100C0000000000000000000000001E2 +:1004D0000204060A0F17202C3A4A5D71879DB3C7A4 +:1004E000DAE9F5FCFFFCF5E9DAC7B39D87715D4AEF +:1004F0003A2C20170F0A0604020100000000000039 +:100500000000000011241FBECFEFDAE0DEBFCDBF38 +:1005100004B603FE24C08091F7019091F801A091E8 +:10052000F901B091FA018730904BA740B04BB9F474 +:100530001092F7011092F8011092F9011092FA014D +:1005400014BE84B7877F84BF88E10FB6F894809388 +:100550006000109260000FBEE0E0FFE3099511E03B +:10056000A0E0B1E0EAE5F9E402C005900D92A43301 +:10057000B107D9F711E0A4E3B1E001C01D92A73F94 +:10058000B107E1F70E94530A0C94AB240C940000CD +:10059000FC016B3059F06C3029F16A3009F041C030 +:1005A0008281811141C08AE091E00895828188238F +:1005B00041F00E943F1C909336018093350181EEFB +:1005C0001BC080913501909136010E944B1C883CE4 +:1005D000910530F486E20E94C01086E20E948811E4 +:1005E00081EE1DC08281882351F00E943F1C9093B0 +:1005F00036018093350185EE0E94C01012C08091B3 +:100600003501909136010E944B1C883C910530F4D5 +:1006100087E20E94C01087E20E94881185EE0E9446 +:10062000881180E090E008958DE091E008950895AC +:10063000CF936091B4017091B5018091B601909112 +:10064000B7010E94A11BC82F56985E9825982D9837 +:1006500026982E9827982F988FE090E09093890005 +:100660008093880090938B0080938A0090938D00F4 +:1006700080938C00CC2329F0C13029F4C09334013D +:1006800002C01092340180913401813011F4279A14 +:100690002F9A0E94970F867011F0259A2D9AC230DA +:1006A00041F40E942A1A811104C027982F98269A93 +:1006B0002E9AE0910E01F0910F018081982F927295 +:1006C00059F08D7D49F48FEF90E0909389008093ED +:1006D0008800259A2D9A08C00E94571B827221F02B +:1006E0000E94FD19882379F3CF9108950C94180383 +:1006F00056985E9825982D9826982E9827982F988A +:100700008FEF90E0909389008093880090938B0006 +:1007100080938A0090938D0080938C00259A2D9A67 +:100720002FEF80E792E0215080409040E1F700C039 +:100730000000269A2E9A2FEF80E792E02150804009 +:100740009040E1F700C00000279A2F9A2FEF80E732 +:1007500092E0215080409040E1F700C000002598D1 +:100760002D982FEF80E792E0215080409040E1F7F4 +:1007700000C0000026982E982FEF80E792E02150CD +:1007800080409040E1F700C0000027982F985698CD +:100790005E9825982D9826982E9827982F9808953A +:1007A00089EA8093800089E08093810024982C98C6 +:1007B0003F988AB18F748AB96E98479A8BB1806BD3 +:1007C0008BB9769A0E9478030C94170380E2809389 +:1007D00000018091370181110EC00E94350481E033 +:1007E000809337012FEF83ED90E3215080409040BC +:1007F000E1F700C0000080E40E943B048093000108 +:1008000081112EC00E94650480930001811128C0CF +:100810000E94650480930001811122C08FE30E9431 +:1008200065048093000181111BC00E945D0480E477 +:100830000E943B0480930001811112C08CE00E9451 +:1008400065048093000181110BC00E9465048093B0 +:100850000001811105C08FE30E94650480930001AF +:100860000E945D048091000108951092B9008AE011 +:100870008093B800089594EA9093BC009091BC00D6 +:1008800097FFFCCF9091B900987F983021F090317C +:1008900011F081E008958093BB0084E88093BC0050 +:1008A0008091BC0087FFFCCF8091B900887F8831A0 +:1008B00011F0803471F780E0089584E98093BC00E2 +:1008C0008091BC0084FDFCCF08958093BB0084E838 +:1008D0008093BC008091BC0087FFFCCF9091B90051 +:1008E000987F81E0983209F480E0089584E880934D +:1008F000BC008091BC0087FFFCCF8091BB000895B5 +:1009000080910001811115C080E40E943B04809316 +:10091000000181110CC082E10E94650480930001F6 +:10092000811105C08FEF0E946504809300010E9431 +:100930005D0484B1807F84B985B1807F85B98AB137 +:10094000837F8AB98BB1837F8BB93E98469808958F +:100950000E94E603809300010E94800480B38C70A3 +:1009600080BB81B3836F81BBA9E3B1E0E7E4F1E031 +:100970008EE08E0F11921D928E13FCCF0C94D0033B +:10098000BF92CF92DF92EF92FF920F931F93CF937C +:10099000DF9380910001882379F0809138018F5F87 +:1009A00080933801811108C00E94E6038093000102 +:1009B000811102C00E94780309E311E0C0E0D0E099 +:1009C000DD24D39482E0C82EEE24E394F12CC730CA +:1009D000D10500F580910001811164C080E40E947E +:1009E0003B0480930001811112C082E10E946504E2 +:1009F0008093000181110BC0C7010C2E01C0880F2C +:100A00000A94EAF780950E946504809300010E9491 +:100A10005D0448C0CA30A1F028F4C83059F0C9308C +:100A200061F005C0CC3089F070F0CD3089F0209AAB +:100A3000289810C0219A29980DC0229A2A980AC095 +:100A4000239A2B9807C0529A01C0539A5B9802C010 +:100A50003E9A469890EA9A95F1F79FB1799902C02B +:100A600082E001C080E091709D25982B7C9902C0A6 +:100A700084E001C080E0892B7D9902C038E001C08C +:100A800030E0832B7E9902C020E101C020E0822B60 +:100A90009FB19095991F9927991F9295990F907ED4 +:100AA000892B0FC080910001811149C080E40E9410 +:100AB0003B0480930001882379F1B12C0E945D04EE +:100AC0008B2DF8019081981719F08083C092010155 +:100AD0000E94800421960F5F1F4FCE30D10509F090 +:100AE00076CF80910101882361F1815080930101CB +:100AF000882339F08FE99FE00197F1F700C00000EB +:100B000020C0A7E4B1E0E9E3F1E0CF01825F919179 +:100B10009D938E13FCCF15C083E10E9465048093E2 +:100B200000018111CACF81E40E943B04809300013F +:100B30008111C3CF0E947604B82EB094BFCF80E05D +:100B4000C0CF0E94760381E0DF91CF911F910F917A +:100B5000FF90EF90DF90CF90BF900895E82FF0E0E6 +:100B6000E95BFE4F808108950895089596E0799F8E +:100B7000F001112494E5899FE00DF11D1124E60F89 +:100B8000F11DEE0FFF1FE25EFE4F859194910895D7 +:100B9000880F991FFC01E856F040859194910895C3 +:100BA000880F991FFC01E85EFE4F8591949108958E +:100BB0000F931F93CF93DF93EC018115904350F572 +:100BC000C11580E2D80708F0B3C0CB3BD10590F443 +:100BD000C83AD10508F05AC0C53AD10508F04BC053 +:100BE000C430D10508F0BBC1219709F0B5C101E0BF +:100BF00010E0F5C1CF3FD10511F008F0B0C1C03F02 +:100C0000D10508F092C0CE01805E9109089708F4E2 +:100C1000A6C1A2C1C11591E5D907A8F4C23020E54B +:100C2000D20708F09EC0C11580E5D80709F485C039 +:100C300008F091C0C11520E4D20708F08DC1DD276E +:100C40008E01106CCCC1C11580E8D80758F4C115CD +:100C500090E7D90708F07CC1C11520E6D20708F457 +:100C600022C17AC1C11580E9D80708F075C1DF70CB +:100C70008E01106AB4C1C53AD10509F472C1C63AF1 +:100C8000D10509F071C102E810E4A9C1C83AD10543 +:100C900009F46DC1C93AD10509F46CC1CA3AD1054C +:100CA00009F46BC1CB3AD10509F46AC1CC3AD1053C +:100CB00009F469C1CD3AD10509F468C1C03BD10539 +:100CC00009F467C1CE3AD10509F466C1CF3AD1051E +:100CD00009F465C1C13BD10509F464C1C23BD1052A +:100CE00009F463C1C33BD10509F462C1C43BD1051A +:100CF00009F461C1C53BD10509F460C1C63BD1050A +:100D000009F45FC1C73BD10509F45EC1C83BD105F9 +:100D100009F45DC1C93BD10509F45CC1CA3BD105E9 +:100D200009F45BC100E014E45AC18E01106557C19B +:100D3000CE019F700E94D00553C10E94AD149FEF59 +:100D400024E38CE0915020408040E1F700C0000097 +:100D50000E949A1C44C18091D60181608093D60183 +:100D60003EC10E94431E811102C00E94291E0E94A2 +:100D7000601E90E09093F7018093F601C23090E5F9 +:100D8000D90721F48091F601816086C0C43020E546 +:100D9000D20721F48091F60182607EC0C63080E5E2 +:100DA000D80721F48091F601846076C0C83090E5C0 +:100DB000D90719F48091F60127C0CA3020E5D2077F +:100DC00021F48091F601806167C0CC3080E5D807BE +:100DD00021F48091F60180625FC0CE3090E5D907A2 +:100DE00021F48091F601806457C0C03120E5D2071C +:100DF00021F48091F60180684FC0C23180E5D807A8 +:100E000029F48091F6018460886046C0C33090E583 +:100E1000D90721F48091F6018E7F3EC0C53020E5D0 +:100E2000D20721F48091F6018D7F36C0C73080E56E +:100E3000D80721F48091F6018B7F2EC0C93090E550 +:100E4000D90719F48091F60126C0CB3020E5D207EE +:100E500021F48091F6018F7E1FC0CD3080E5D80748 +:100E600021F48091F6018F7D17C0CF3090E5D9072E +:100E700021F48091F6018F7B0FC0C13120E5D207AC +:100E800021F48091F6018F7707C0C331D04531F44A +:100E90008091F6018B7F877F8093F6018091F60128 +:100EA0000E94641E9CC08D2F99278F7099278130D6 +:100EB0009105D9F49E012370332702C0880F991F32 +:100EC0002A95E2F79C688E0144E0000F111F4A95B5 +:100ED000E1F700271370802B912B53E0CC0FDD1F1F +:100EE0005A95E1F7C076DD272FC08230910531F4A5 +:100EF000DC2FCC278E01016F106A71C08330910501 +:100F000069F4CE018370992701E010E002C0000F60 +:100F1000111F8A95E2F7C8019C680FC0049709F079 +:100F20005EC0CE018370992701E010E002C0000F7F +:100F3000111F8A95E2F7C8019A6823E0CC0FDD1FE4 +:100F40002A95E1F7C07ED7708C010C2B1D2B47C072 +:100F5000DF708E01106243C000E010E040C08E01DF +:100F60003EC001E810E43BC003E810E438C002EEE4 +:100F700014E435C009EE14E432C00AEE14E42FC0C4 +:100F800005EB14E42CC006EB14E429C007EB14E4D1 +:100F900026C00CEC14E423C00DEC14E420C003E8DC +:100FA00015E41DC00AE815E41AC002E915E417C0EB +:100FB00004E915E414C001E216E411C003E216E4EA +:100FC0000EC004E216E40BC005E216E408C006E217 +:100FD00016E405C007E216E402C00AE216E4C801FE +:100FE000DF91CF911F910F91089596E0799FF001C5 +:100FF000112494E5899FE00DF11D1124E60FF11DE8 +:10100000EE0FFF1FE25EFE4F85919491803E9105A9 +:10101000E0F4803C910558F58133910509F46FC0E7 +:1010200048F48932910509F463C08A32910509F4C4 +:101030006DC072C089339105E9F082389105D1F015 +:101040008533910509F44DC067C0833E910581F158 +:1010500038F4803E9105B9F0823E9105D9F05CC02C +:10106000863E910561F1873E9105A1F155C00E9430 +:10107000C80508952091F60120FD02C021FF4CC053 +:1010800080EE90E049C08091F60180FFF9CF89E3BE +:1010900090E042C08091F60182FF0EC08091F6017F +:1010A00084FF03C080E090E037C083EE90E034C05E +:1010B0008091F60182FFF2CF82EE90E02DC0809108 +:1010C000F60183FF0BC08091F60184FDEBCF87EE24 +:1010D00090E022C08091F60183FFF5CF86EE90E08C +:1010E0001BC08091F60185FF07C089E290E014C023 +:1010F0008091F60185FFF9CF85E390E00DC08091E6 +:10110000F60186FF07C08AE290E006C08091F601F2 +:1011100086FFF9CF81E390E00E94D80508950895F5 +:101120000C948F08809165010895CF93DF9300D0D0 +:101130001F92CDB7DEB79C018091ED01843019F587 +:1011400093E099833B832A839093E9008FEF9091FA +:10115000E800815095FD06C095ED9A95F1F70000E5 +:101160008111F5CF8091E80085FF0DC040E050E08F +:1011700063E070E0CE0101960E94FF0A8091E800D2 +:101180008E778093E8000F900F900F90DF91CF91B2 +:101190000895CF93DF9300D01F92CDB7DEB7209193 +:1011A000ED01243021F522E029839B838A8383E0AB +:1011B0008093E9008FEF9091E800815095FD06C083 +:1011C00095ED9A95F1F700008111F5CF8091E80037 +:1011D00085FF0DC040E050E063E070E0CE01019675 +:1011E0000E94FF0A8091E8008E778093E8000F90BC +:1011F0000F900F90DF91CF9108952091ED01243051 +:10120000F1F422E02093E9002FEF3091E800215023 +:1012100035FD06C035ED3A95F1F700002111F5CF07 +:101220002091E80025FF0BC040E050E065E070E051 +:101230000E94FF0A8091E8008E778093E80008956D +:10124000CF93DF93EC019091ED01943009F046C00B +:1012500080910C018823D9F080910D018823B9F089 +:101260009093E9008FEF9091E800815095FD06C0C2 +:1012700095E19A95F1F700008111F5CF8091E80092 +:1012800085FF2CC040E050E060E170E017C081E0D5 +:101290008093E9008FEF9091E800815095FD06C0A2 +:1012A00095ED9A95F1F700008111F5CF8091E80056 +:1012B00085FF14C040E050E068E070E0CE010E947D +:1012C000FF0A8091E8008E778093E80080E1FE01BC +:1012D000A5E5B1E001900D928A95E1F7DF91CF91FC +:1012E00008958091EC01811109C00E94940C0E9424 +:1012F000F10C8091E20084608093E20008951092E6 +:10130000EC01089508950C94D3220E94301C0E9491 +:10131000D9220E94970F0C94900842E061EC81E082 +:101320000E940E0C42E061EC82E00E940E0C42E052 +:1013300061EC83E00E940E0C42E161EC84E00C94CD +:101340000E0C8091EF01833009F455C030F48130E8 +:1013500071F0823009F48EC008958A3009F47AC0A1 +:101360008B3009F460C0893009F09CC020C08091A6 +:10137000EE01813A09F096C08091E800877F809362 +:10138000E8008091F2019091F301892B21F460E152 +:1013900085E591E003C060E080E090E070E00E94AD +:1013A0004A0B8091E8008B778093E8000895809144 +:1013B000EE01813209F076C08091F2019091F30143 +:1013C000009719F0039709F06DC08091E800877FBE +:1013D0008093E8008091E80082FD05C08091ED01D6 +:1013E0008111F8CF5FC08091F100809365018091F9 +:1013F000E8008B7753C08091EE01813A09F052C02A +:101400008091F2019091F301892B09F04BC08091FA +:10141000E800877F8093E8008091E80080FFFCCFA0 +:1014200080910C0136C08091EE018132D9F5809116 +:10143000F2019091F301892BA9F58091E800877F53 +:101440008093E8000E94430C8091F00180930C018E +:101450000C94AD148091EE01813221F58091E80069 +:10146000877F8093E8000E94430C8091F101809374 +:10147000660108958091EE01813AA1F48091E8001F +:10148000877F8093E8008091E80080FFFCCF809107 +:1014900066018093F1008091E8008E778093E800E8 +:1014A0000C94430C089584B7877F84BF88E10FB6FE +:1014B000F89480936000109260000FBE90E080E886 +:1014C0000FB6F89480936100909361000FBE0E9464 +:1014D000E60F0E94940C0E94F10C8091E20084605F +:1014E0008093E20078940E94770F0E94E80F82E0D8 +:1014F00091E00E94920F0E94C1228091ED018530FF +:1015000069F40E94F11B8091EB018823B1F30E94E2 +:101510001C1C882391F30E94E90AEFCF0E94EE0F72 +:10152000ECCF292F332723303105C9F064F4213063 +:10153000310581F02230310509F043C08DE690E09D +:101540002AE433E042C021323105F1F02232310584 +:1015500041F137C082E190E027EB33E036C09927B4 +:101560008130910541F08230910541F0892B49F598 +:10157000E6E4F3E005C0EEE2F3E002C0E6E1F3E00A +:10158000849190E09F0121C06430D8F4E62FF0E010 +:10159000EE0FFF1FEE5DFE4F2081318189E090E06C +:1015A00014C0643070F470E0FB01EE0FFF1FE65EC4 +:1015B000FE4F20813181FB01EA5EFE4F808190E089 +:1015C00004C080E090E020E030E0FA013183208325 +:1015D000089580E189BD82E189BD09B400FEFDCF97 +:1015E0008091D8008F7D8093D8008091E000826048 +:1015F0008093E0008091E00081FDFCCF0895CF92C0 +:10160000DF92EF92FF920F931F93CF93DF93EC0142 +:101610008B016A010E94620C811133C0C114D10494 +:1016200039F0F60180819181081B190BC80FD91F71 +:10163000E12CF12C0115110519F18091E80085FDCF +:1016400016C08091E8008E778093E800C114D10421 +:1016500049F0F60180819181E80EF91EF182E08265 +:1016600085E00FC00E94620C882321F30AC0899193 +:101670008093F10001501109FFEFEF1AFF0ADACF52 +:1016800080E0DF91CF911F910F91FF90EF90DF905D +:10169000CF9008952091F4013091F5012617370776 +:1016A00048F06115710539F42091E8002E772093F8 +:1016B000E80001C0B90140E061157105A9F1209170 +:1016C000ED01222309F443C0253009F442C02091E2 +:1016D000E80023FD40C02091E80022FD32C02091A7 +:1016E000E80020FFE9CF4091F3002091F20030E0C4 +:1016F000342BFC01CF016115710559F028303105FB +:1017000040F481918093F100615071092F5F3F4F48 +:10171000F1CF41E02830310509F040E02091E800A8 +:101720002E772093E800C8CF4111C9CF0AC080911D +:10173000ED01882361F0853061F08091E80083FD40 +:101740000AC08091E80082FFF2CF80E0089582E035 +:10175000089583E0089581E008952091F401309187 +:10176000F5012617370748F06115710539F4209106 +:10177000E8002E772093E80001C0B901FC0120E0C9 +:101780006115710591F18091ED01882309F440C044 +:10179000853009F43FC08091E80083FD3DC0809111 +:1017A000E80082FD2FC08091E80080FFE9CF209102 +:1017B000F3008091F20090E0922B6115710559F0D1 +:1017C0008830910540F424912093F10031966150C6 +:1017D00071090196F2CF21E0089709F020E080918D +:1017E000E8008E778093E800CBCF2111CCCF0AC0E0 +:1017F0008091ED01882361F0853061F08091E800EF +:1018000083FD0AC08091E80082FFF2CF80E0089556 +:1018100082E0089583E0089581E00895982F97303D +:1018200058F59093E900981739F07091EC002091E9 +:10183000ED005091F00003C0242F762F50E021FFDF +:1018400019C03091EB003E7F3093EB003091ED00FA +:101850003D7F3093ED003091EB0031603093EB0031 +:101860007093EC002093ED005093F0002091EE0077 +:1018700027FF07C09F5FD3CF8F708093E90081E07F +:10188000089580E008958091EE0187FF11C0809156 +:10189000E80082FD05C08091ED018111F8CF11C0F3 +:1018A0008091E8008B770BC08091ED01882349F08F +:1018B0008091E80080FFF8CF8091E8008E778093D8 +:1018C000E80008952091E4003091E50095E640910C +:1018D000EC00842F817040FF22C08091E80080FDE1 +:1018E0001CC08091ED01882391F0853091F08091AA +:1018F000EB0085FD10C04091E4005091E5004217D7 +:10190000530729F39A01915011F784E0089582E07A +:10191000089583E0089581E0089580E0089540915E +:10192000E80042FFDECF08950E94020D0E940A0DDA +:10193000E0EEF0E0808181608083E8EDF0E080817E +:101940008F77808319BCA7EDB0E08C918E7F8C934C +:1019500080818F7E80831092EC0108950F931F93F6 +:10196000CF93DF930E94020D0E940A0DC8EDD0E0D4 +:1019700088818F77888388818068888388818F7D3C +:10198000888319BC1092ED011092E9011092EB01CD +:101990001092EA0100EE10E0F80180818B7F8083D5 +:1019A00088818160888342E060E080E00E940E0CC4 +:1019B000E1EEF0E080818E7F8083E2EEF0E08081D6 +:1019C00081608083808188608083F80180818E7F40 +:1019D0008083888180618883DF91CF911F910F91EF +:1019E0000895E8EDF0E080818F7E8083E7EDF0E000 +:1019F00080818160808384E082BF81E08093EC01FC +:101A00000C94AE0CE8EDF0E080818E7F8083109224 +:101A1000E20008951092DA001092E10008951F92FA +:101A20000F920FB60F9211242F933F934F935F9312 +:101A30006F937F938F939F93AF93BF93EF93FF9396 +:101A40008091E10082FF0BC08091E20082FF07C01D +:101A50008091E1008B7F8093E1000E94760F80915E +:101A6000DA0080FF1FC08091D80080FF1BC08091EA +:101A7000DA008E7F8093DA008091D90080FF0DC05C +:101A800080E189BD82E189BD09B400FEFDCF81E01E +:101A90008093ED010E94710905C019BC1092ED01FF +:101AA0000E947F098091E10080FF19C08091E200CF +:101AB00080FF15C08091E2008E7F8093E2008091CC +:101AC000E20080618093E2008091D8008062809380 +:101AD000D80019BC85E08093ED010E9483098091B4 +:101AE000E10084FF30C08091E20084FF2CC080E1DF +:101AF00089BD82E189BD09B400FEFDCF8091D80087 +:101B00008F7D8093D8008091E1008F7E8093E100EB +:101B10008091E2008F7E8093E2008091E2008160FC +:101B20008093E2008091E901882311F084E007C0EE +:101B30008091E30087FD02C081E001C083E08093D3 +:101B4000ED010E9485098091E10083FF29C0809109 +:101B5000E20083FF25C08091E100877F8093E10050 +:101B600082E08093ED011092E9018091E1008E7F87 +:101B70008093E1008091E2008E7F8093E20080916B +:101B8000E20080618093E20042E060E080E00E9439 +:101B90000E0C8091F00088608093F0000E94820912 +:101BA000FF91EF91BF91AF919F918F917F916F9135 +:101BB0005F914F913F912F910F900FBE0F901F900B +:101BC00018951F920F920FB60F9211242F933F93E7 +:101BD0004F935F936F937F938F939F93AF93BF9335 +:101BE000CF93DF93EF93FF93C091E900CF70809183 +:101BF000EC00D82FD17080FDD0E81092E9008091E0 +:101C0000F000877F8093F00078940E94250E109258 +:101C1000E9008091F00088608093F000CD2BCF70B8 +:101C2000C093E900FF91EF91DF91CF91BF91AF9108 +:101C30009F918F917F916F915F914F913F912F91E4 +:101C40000F900FBE0F901F9018951F93CF93DF93A7 +:101C5000CDB7DEB7AA970FB6F894DEBF0FBECDBFE3 +:101C6000EEEEF1E088E08E0F9091F10091938E13EB +:101C7000FBCF0E94A1098091E80083FF1FC18091E2 +:101C8000EE019091EF01492F50E04A30510508F0E4 +:101C900015C1FA01EA5AFF4F0C945B24803881F099 +:101CA000823809F00BC18091F2018F708093E900B6 +:101CB0008091EB0085FB882780F91092E90006C02F +:101CC0008091EA019091EB01911182609091E8007E +:101CD000977F9093E8008093F1001092F100C8C0C4 +:101CE000282F2D7F09F0EAC0882319F0823061F097 +:101CF000E5C08091F001813009F0E0C0933009F037 +:101D000080E08093EB012BC08091F001811127C00E +:101D10008091F2018F7009F4D1C08093E900209185 +:101D2000EB0020FF1CC0933021F48091EB00806217 +:101D300014C09091EB0090619093EB0021E030E0B3 +:101D4000A90102C0440F551F8A95E2F74093EA00AB +:101D50001092EA008091EB0088608093EB00109273 +:101D6000E9008091E800877F86C08111A7C01091AB +:101D7000F0011F778091E3008078812B8093E3004E +:101D80008091E800877F8093E8000E94430C809157 +:101D9000E80080FFFCCF8091E30080688093E3003F +:101DA000111102C082E001C083E08093ED0186C082 +:101DB0008058823008F082C08091F0019091F1014A +:101DC0008C3D53E0950779F583E08A838AE2898325 +:101DD0004FB7F894DE01139620E03EE051E2E32F86 +:101DE000F0E050935700E49120FF03C0E295EF70BC +:101DF0003F5FEF708E2F90E0EA3010F0C79601C081 +:101E0000C0968D939D932F5F243149F74FBF8091EA +:101E1000E800877F8093E8006AE270E0CE010196D7 +:101E20000E944A0B14C0AE014F5F5F4F6091F201F8 +:101E30000E94910ABC01892B09F440C09091E800EE +:101E4000977F9093E80089819A810E94AD0B8091E1 +:101E5000E8008B778093E80031C0803879F5809175 +:101E6000E800877F8093E8008091E9018093F1008A +:101E70008091E8008E778093E8000E94430C1EC09A +:101E800081111CC09091F0019230C0F48091E80063 +:101E9000877F8093E8009093E9010E94430C809132 +:101EA000E901811106C08091E30087FD02C081E055 +:101EB00001C084E08093ED010E948D098091E800CB +:101EC00083FF0AC08091E800877F8093E8008091BB +:101ED000EB0080628093EB00AA960FB6F894DEBF09 +:101EE0000FBECDBFDF91CF911F9108950895CF937D +:101EF0008091ED018823A1F0C091E900CF7090910D +:101F0000EC00892F817090FD80E8C82B1092E900C9 +:101F10008091E80083FD0E94250ECF70C093E900F8 +:101F2000CF91089590936C0180936B010895E09197 +:101F30006B01F0916C01309721F00190F081E02D60 +:101F4000099480E00895E0916B01F0916C01309765 +:101F500021F00280F381E02D09940895E0916B0156 +:101F6000F0916C01309721F00480F581E02D099407 +:101F700008952091690130916A018217930771F0E9 +:101F800090936A0180936901E0916B01F0916C017B +:101F9000309721F00680F781E02D09940895209173 +:101FA0006701309168018217930771F0909368017F +:101FB00080936701E0916B01F0916C01309721F003 +:101FC0000084F185E02D0994089508950C94E50F9F +:101FD0000E94361C0E94A8040C94FC1CCF92DF9235 +:101FE000EF92FF920F931F93CF93DF93CDB7DEB79E +:101FF0002B970FB6F894DEBF0FBECDBF0E94C00472 +:102000008EE6C82E81E0D82E00E010E0E02E802F72 +:102010000E94AE05F60141916F01F42EF826B1F44D +:102020000F5F1F4F0E30110589F78FEF89838A8369 +:102030001B820E943F1C8160782F9D838C83498185 +:102040005A816B818D810E94911040C09091D60180 +:1020500091FF04C08B870E94B4058B8520E030E09F +:102060004F2D50E0922FBA01022E02C07595679550 +:102070000A94E2F760FF24C02E83EF8221E030E073 +:10208000690102C0CC0CDD1C9A95E2F790E08C212E +:102090009D21892B09F420E028870E943F1C816044 +:1020A000782F9A8789874E815F8168858A850E940B +:1020B0009110F801E259FE4F8081C826C08206C007 +:1020C0002F5F3F4F2630310569F6AACF0E94E31FEC +:1020D00010916D010E94970F1817A1F00E94970FA1 +:1020E00080936D012B960FB6F894DEBF0FBECDBF67 +:1020F000DF91CF911F910F91FF90EF90DF90CF90E4 +:102100000C9490082B960FB6F894DEBF0FBECDBF8F +:10211000DF91CF911F910F91FF90EF90DF90CF90C3 +:102120000895CF93DF93CDB7DEB72B970FB6F89412 +:10213000DEBF0FBECDBF4F83588769877A878B87F5 +:10214000DE01119686E0FD0111928A95E9F785E09E +:10215000FE01379601900D928A95E1F749815A81E7 +:102160006B817C818D819E810E944B172B960FB6CF +:10217000F894DEBF0FBECDBFDF91CF9108950895D3 +:10218000CF93882309F4C2C0C82F823859F40E9423 +:10219000970F81FDBBC089E30E948E1A0E946B1BC2 +:1021A00089E30CC0833879F40E94970F80FDAEC09C +:1021B00083E50E948E1A0E946B1B83E50E94D01A51 +:1021C000CF910C946B1B843859F40E94970F82FDB9 +:1021D0009DC087E40E948E1A0E946B1B87E4EECF9D +:1021E0008CEF8C0F813A48F48C2F0E9426228111AB +:1021F0008DC08C2F0E948E1AE3CF80E28C0F883026 +:1022000048F4C77081E001C0880FCA95EAF70E94C0 +:10221000171BD6CF8BE58C0F833078F4C53A29F0A5 +:10222000C63A31F083E890E005C081E890E002C052 +:1022300082E890E0CF910C94B90F88E58C0F833140 +:1022400008F064C0C83A39F1C93A41F1CA3A49F1D3 +:10225000CB3A51F1CC3A59F1CD3A61F1C03B69F139 +:10226000CE3A71F1CF3A79F1C13B81F1C23B89F1AC +:10227000C33B91F1C43B99F1C53BA1F1C63BA9F128 +:10228000C73BB1F1C83BB9F1C93BC1F1CA3BC9F188 +:1022900080E090E038C082EE90E035C089EE90E0BA +:1022A00032C08AEE90E02FC085EB90E02CC086EB28 +:1022B00090E029C087EB90E026C08CEC90E023C032 +:1022C0008DEC90E020C083E891E01DC08AE891E0A9 +:1022D0001AC082E991E017C084E991E014C081E25C +:1022E00092E011C083E292E00EC084E292E00BC063 +:1022F00085E292E008C086E292E005C087E292E0C3 +:1023000002C08AE292E0CF910C94CF0FCF91089552 +:10231000882309F44BC0823859F40E94970F81FF3B +:1023200045C089E30E948E1A0E946B1B89E30CC092 +:10233000833871F40E94970F80FF38C083E50E94B4 +:102340008E1A0E946B1B83E50E94D01A0C946B1BA3 +:10235000843859F40E94970F82FF28C087E40E94B6 +:102360008E1A0E946B1B87E4EFCF9CEF980F913A77 +:1023700058F390E2980F983050F4877091E001C0C4 +:10238000990F8A95EAF7892F0E941D1BDFCF9BE5E5 +:10239000980F933020F480E090E00C94B90F885AA5 +:1023A000833120F480E090E00C94CF0F08958823CF +:1023B00021F00E94171B0C946B1B0895882321F0B9 +:1023C0000E941D1B0C946B1B08952F923F924F92FD +:1023D0005F927F928F929F92AF92BF92CF92DF9245 +:1023E000EF92FF920F931F93CF93DF9300D000D013 +:1023F0001F92CDB7DEB725E0FC01DE0111960190FA +:102400000D922A95E1F7FC0100811181F280E580AF +:10241000E2943FE0E32223813481232B09F472C24A +:102420001F3F19F40F3F09F46DC26C010E942A1A74 +:10243000882319F082E00E946C1AC6010E94BF1026 +:1024400009831A8369817A818F2D0E94F0198C018A +:102450000E94A5190E946C18F1100E94341B0E9462 +:10246000871A882379F0FF2069F080E2800F883096 +:1024700048F082E00E946C1A0E94871A91E0782E40 +:10248000792601C0712CE12FE295EF70F0E0E05A5F +:10249000FF4F0C945B24812F807F1F70882311F0E5 +:1024A0001295107FFF2089F0112309F4E8C180E222 +:1024B000800F883020F4812F0E94171B03C0812FCA +:1024C0000E94271B0E946B1BDAC1802F0E9488117B +:1024D000112309F4EEC1005E812F083018F40E9428 +:1024E0001D1B02C00E942D1B0E946B1BE2C1812F8D +:1024F000807F1F70803211F01295107F002319F039 +:10250000013049F132C0FF2091F0EE2091F1F1E06D +:10251000EF1204C0812F0E94471BCBC122E0E212C0 +:1025200028C00E94501B812F0E94F71922C0EE2064 +:1025300079F031E0E31208C00E94141B812309F4F2 +:10254000B8C10E94FA1904C042E0E41609F4B1C10E +:102550000E94501B12C0FF2029F051E05E1508F4C4 +:10256000A8C107C0E110A5C108C0FF2021F0E110FB +:1025700086C1812FF7C0E11089C1812FF9C0812F59 +:1025800086958695837090E0009719F0019759F031 +:1025900090C1FF2019F0C801937002C080E090E064 +:1025A0000E94B90F86C1FF2019F0C801937002C0C4 +:1025B00080E090E00E94CF0F7CC1802FFF2019F0B7 +:1025C0000E94EB1E02C00E94531F0E94D81F71C1BF +:1025D000812F837009F055C0F1106BC1802F829557 +:1025E00086958770880F880F902F9F70492F50E035 +:1025F00060E070E01A012B01082E04C0220C331C8D +:10260000441C551C0A94D2F704FF15C02FE0822EFB +:10261000912CA12CB12CA501940104C0220F331FD1 +:10262000441F551F8A95D2F7CA01B901609570956C +:102630008095909503C060E070E0CB0116951695EB +:102640001370412F50E04230510569F0433051057D +:1026500089F062297329842995294130510571F047 +:102660000E94931826C162297329842995290E9402 +:10267000AF181FC10E949318C201B1010E947718C0 +:1026800018C1FF2019F0812F817001C08695882321 +:1026900009F40FC1802F829586958770880F880F67 +:1026A000902F9F70492F50E060E070E01A012B01DD +:1026B000082E04C0220C331C441C551C0A94D2F76B +:1026C00004FF15C09FE0892E912CA12CB12CA501EF +:1026D000940104C0220F331F441F551F8A95D2F75F +:1026E000CA01B901609570958095909503C060E02E +:1026F00070E0CB01169516951370412F50E04230D3 +:10270000510569F04330510589F062297329842904 +:1027100095294130510571F00E946D19CAC0622996 +:102720007329842995290E948919C3C00E946D19B3 +:10273000C201B1010E945119BCC0802F90E0FC0180 +:10274000E05EF109E531F10508F094C0E059FF4F72 +:102750000C945B240F70812F8F71FF2031F00E9449 +:10276000EA18802F0E94D711A4C00E940B19802F55 +:102770000E94DE119EC0FF2039F0E1109AC0812F27 +:102780008F710E94301995C031E03E1508F491C058 +:10279000F6CFFF2039F0812F8F710E94EA1889C08F +:1027A000FF20C9F3812F8F710E940B1982C0FF2077 +:1027B00029F0812F8F710E94D5187BC00E94CB1801 +:1027C00078C0FF20C1F00E94F4190E941D1B0E94D6 +:1027D000261A843029F40E94651A812F8F717AC0DD +:1027E00041E04E1508F48EC01F71812F0E94EA1837 +:1027F00063E0812F0EC00E94F4190E94171B51E064 +:102800005E15F8F40E94651A0E94FA1964E0812F9F +:102810008F710F900F900F900F900F90DF91CF91CD +:102820001F910F91FF90EF90DF90CF90BF90AF90EE +:102830009F908F907F905F904F903F902F900C943F +:10284000551A81E00F900F900F900F900F90DF912D +:10285000CF911F910F91FF90EF90DF90CF90BF909D +:10286000AF909F908F907F905F904F903F902F9070 +:102870000C946C1AFF2039F0EE2009F48CCF802FD5 +:102880000E94C01016C0EE2009F48CCF802F0E9449 +:1028900088110FC0412F4F70602FC6010E94C802DF +:1028A0000E94EF1706C0412F4F70602FC6010E9493 +:1028B000B505772039F10E94261A80FD23C0F60164 +:1028C00012820E94201A0E94EA18C6010E94E51195 +:1028D0000E94201A0F900F900F900F900F90DF9191 +:1028E000CF911F910F91FF90EF90DF90CF90BF900D +:1028F000AF909F908F907F905F904F903F902F90E0 +:102900000C940B190F900F900F900F900F90DF9178 +:10291000CF911F910F91FF90EF90DF90CF90BF90DC +:10292000AF909F908F907F905F904F903F902F90AF +:1029300008950E94341B0E94441B0E94061B0E94A3 +:102940006B1B0E9489200E94D81F80E090E00E94AB +:10295000B90F80E090E00C94CF0F0E94241B0C94E0 +:1029600099140E94E519292F22952F7030E02C3000 +:1029700031054CF42A3031056CF4225031092230F3 +:102980003105A8F407C02C30310569F02F3031052E +:1029900051F00DC0803F69F018F4803E40F409C04A +:1029A000843F29F406C093FB882780F9089580E0CE +:1029B000089581E00895CF93DF9300D000D01F9257 +:1029C000CDB7DEB70F900F900F900F900F90DF9163 +:1029D000CF910895CF93DF9300D000D000D0CDB732 +:1029E000DEB726960FB6F894DEBF0FBECDBFDF91DF +:1029F000CF9108951F93CF93DF93C0917C0116E090 +:102A000080917D01C81799F0D0E01C9FF0011D9FB7 +:102A1000F00D1124E258FE4F408151816281738193 +:102A2000848195810E94EA142196C770E9CFDF91D5 +:102A3000CF911F9108954091AE015091AF016091E7 +:102A4000B0017091B1018091B2019091B3010C94E9 +:102A5000EA148091B30182958F7009F054C080917F +:102A6000B001882309F44FC080917C01A0917D01C1 +:102A70006091AE017091AF014091B1015091B201EE +:102A8000B6E08A1709F43FC090E041155105C1F145 +:102A90007F3F11F46F3FA1F1B89FF001B99FF00D96 +:102AA0001124E258FE4F218172132AC02081621343 +:102AB00027C02281211124C02381348124173507A6 +:102AC00010F421503109241B350B283C3105C0F48A +:102AD0002091B3012F7020612093B30126E0289F3D +:102AE000F001299FF00D1124ED57FE4F80818F706A +:102AF000806180838EEA91E00E94E5110C94FA14C3 +:102B000001968770BECF0895CF92DF92EF92FF9229 +:102B10000F931F93CF93DF93CDB7DEB762970FB6B6 +:102B2000F894DEBF0FBECDBF8C0185E0F801DE0159 +:102B30001D9601900D928A95E1F7D8014C9111965E +:102B40005C91119712966C9112971396CD90DC9030 +:102B500014973091AE017091AF018091B1019091C5 +:102B6000B201009709F46BC17F3F19F43F3F09F4AC +:102B700066C1E090B001EE2009F4C0C02091B3011D +:102B8000C816D90628F0F601E81BF90BCF0104C0DE +:102B9000809590958C0D9D1DFF24F394883C9105A4 +:102BA00078F0F12C207F09F0C6C07C2DD98AC88A24 +:102BB00089890E94DB148EEA91E00E94E511B1C080 +:102BC000822F807F09F046C0751314C0341312C0E1 +:102BD000611110C02F7020612093B3010E941B155A +:102BE0008EEA91E00E94E5118091B301D80115961B +:102BF0008C932EC0CD2819F15F3F11F44F3FF9F0AF +:102C0000F62E61111CC080917C0120917D0136E07F +:102C1000821709F45AC090E0389FF001399FF00DF7 +:102C20001124E258FE4F7181571306C0708147137B +:102C300003C07281711103C001968770E9CFF62E2F +:102C4000662309F418C18091B30181608093B301B8 +:102C5000F12C11C1751308C0341306C0611104C0F2 +:102C60008091B301D801C3C04D875E878D859E8555 +:102C70006A8B0E94B1146A898823E1F16623D1F13D +:102C80002091B301822F82958F7090E0029774F0AB +:102C90008091AE019091AF0198878F831986DB8672 +:102CA000CA862C87CE0107960E94E51186E0F801BE +:102CB000AEEAB1E001900D928A95E1F70E942915E4 +:102CC0000E941B15FF24F394D6C04D875E878D8527 +:102CD0009E850E94E519292F22952F7030E0223021 +:102CE00031050CF0BCC09F7009F0B6C0805E883022 +:102CF00008F4C1C0C8010E94E511E4CFC816D90686 +:102D000008F453C0F601E81BF90BCF01883C91058C +:102D100008F450C0F12C7C2DD98AC88A89890E9478 +:102D2000DB14EEEAF1E086E0DF011D928A95E9F717 +:102D30000E941B15A0C0751314C0341312C061117A +:102D400010C08091B301F8018583C8010E94E5118C +:102D500086E0EEEAF1E0DF011D928A95E9F7FE2CAC +:102D60008AC04D875E878D859E856A8B0E94B114CF +:102D70006A89882309F4BECF662309F4BBCF20916A +:102D8000B301822F82958F7090E002970CF48ECF62 +:102D90008091AE019091AF019A8389831B82DD827D +:102DA000CC822E83CE0101967FCF809590958C0D9D +:102DB0009D1DACCFF62E662309F49CCF75132EC053 +:102DC00034132CC02091B30120FD1FC0822F8295A7 +:102DD0008F70D9F0D80115962C9315978F3049F044 +:102DE0008F5F982F9295907F822F8F70892B1596E9 +:102DF0008C93C8010E94E51186E0F801AEEAB1E0CB +:102E000001900D928A95E1F793CF86E0F801AEEA42 +:102E1000B1E001900D928A95E1F72DC04D875E8754 +:102E20008D859E850E94B114811140CF8091B301A0 +:102E300081608093B301C8010E94E5111CC0662324 +:102E400009F458CF4D875E878D859E850E94B11409 +:102E5000882309F44FCF2ACF811148CF0CC02430EA +:102E600031050CF047CF9F7009F440CFF8019581F0 +:102E7000907F09F03BCF8F2D62960FB6F894DEBF9E +:102E80000FBECDBFDF91CF911F910F91FF90EF90BB +:102E9000DF90CF9008951F93CF93DF93CDB7DEB728 +:102EA0002C970FB6F894DEBF0FBECDBF4F83588767 +:102EB00069877A878B879C87CE0107960E94841545 +:102EC000882369F08F8198852A853B85232BF1F132 +:102ED0009F3F09F063C08F3F09F060C037C086E0B4 +:102EE000FE013796DE01119601900D928A95E1F769 +:102EF0006F817885EA85FB85309741F17F3F11F43A +:102F00006F3F21F120917D0130E0C901019687706A +:102F1000992740917C0150E08417950709F447C038 +:102F200069837A83FD83EC8396E0929FD001939F1F +:102F3000B00D1124A258BE4FFE01319601900D92A2 +:102F40009A95E1F780937D010E94FA1416E0809132 +:102F50007C0190917D018917C1F1189FC001112456 +:102F600082589E4F0E948415882379F1E0917C015C +:102F70001E9FF0011124E258FE4F40815181628171 +:102F80007381848195810E94EA1480917C0190E094 +:102F900001968770992780937C01D9CF4F815885FE +:102FA00069857A858B859C850E94EA14CFCF0E9423 +:102FB000AD1410927D0110927C01EEEAF1E086E002 +:102FC000DF011D928A95E9F7C1CF2C960FB6F894D0 +:102FD000DEBF0FBECDBFDF91CF911F910895EF925D +:102FE000FF920F931F93CF93DF938C01892B09F4EA +:102FF0006CC0F12CEE24E394E8012196F801849151 +:10300000843740F4843008F051C0813081F0823040 +:1030100019F15BC0853709F444C0A8F19CE7980F0B +:10302000903708F052C08F770E94881141C00E5F20 +:103030001F4FFE01C49180E28C0F883048F4C770A6 +:103040008E2D01C0880FCA95EAF70E94371B14C065 +:103050008C2F0E94C0102DC00E5F1F4FFE01C49127 +:1030600080E28C0F883058F4C7708E2D01C0880F15 +:10307000CA95EAF70E943D1B0E946B1B1AC08C2F59 +:103080000E94881116C00E5F1F4FFE01C491CC2311 +:1030900081F08FE99FE00197F1F700C00000C15077 +:1030A000F6CF0E5F1F4FFE01F49003C00E94C010C8 +:1030B0008E018F2D882309F49FCFEFE9FFE0319730 +:1030C000F1F700C000008150F5CFDF91CF911F9143 +:1030D0000F91FF90EF90089508956093B801709359 +:1030E000B9018093BA019093BB010C9499140F938A +:1030F0001F930091B8011091B9012091BA0130914C +:10310000BB01DC01CB01802B912BA22BB32B809335 +:10311000B8019093B901A093BA01B093BB011F917C +:103120000F910C9499140F931F930091B801109173 +:10313000B9012091BA013091BB01DC01CB018023A0 +:103140009123A223B3238093B8019093B901A09354 +:10315000BA01B093BB011F910F910C9499140F9376 +:103160001F930091B8011091B9012091BA013091DB +:10317000BB01DC01CB0180279127A227B3278093D5 +:10318000B8019093B901A093BA01B093BB011F910C +:103190000F910C9499141092B4011092B5011092F1 +:1031A000B6011092B7010C94991441E050E060E030 +:1031B00070E004C0440F551F661F771F8A95D2F731 +:1031C0004093B4015093B5016093B6017093B70179 +:1031D0000C94991441E050E060E070E004C0440FAA +:1031E000551F661F771F8A95D2F78091B401909181 +:1031F000B501A091B601B091B701482B592B6A2BAC +:103200007B2B4093B4015093B5016093B60170934A +:10321000B7010C94991441E050E060E070E004C004 +:10322000440F551F661F771F8A95D2F7409550951A +:10323000609570958091B4019091B501A091B6010F +:10324000B091B701482359236A237B234093B401EB +:103250005093B5016093B6017093B7010C94991423 +:1032600041E050E060E070E004C0440F551F661F6D +:10327000771F8A95D2F78091B4019091B501A09102 +:10328000B601B091B701482759276A277B27409399 +:10329000B4015093B5016093B6017093B7010C94DB +:1032A00099140F931F930091B4011091B5012091CF +:1032B000B6013091B701DC01CB01802B912BA22B01 +:1032C000B32B8093B4019093B501A093B601B09352 +:1032D000B7011F910F910C9499140F931F930091B4 +:1032E000B4011091B5012091B6013091B701DC0114 +:1032F000CB0180239123A223B3238093B401909325 +:10330000B501A093B601B093B7011F910F910C9432 +:1033100099140F931F930091B4011091B50120915E +:10332000B6013091B701DC01CB0180279127A2279C +:10333000B3278093B4019093B501A093B601B093E5 +:10334000B7011F910F910C9499140895CF92DF92B9 +:10335000EF92FF920F931F93CF93DF938C01C09056 +:10336000B801D090B901E090BA01F090BB01809112 +:10337000B4019091B501A091B601B091B701C82AEE +:10338000D92AEA2AFB2ACFE1D0E0D701C6010C2EC8 +:1033900004C0B695A795979587950A94D2F780FFB4 +:1033A00006C0B8018C2F0E94F507019721F42197E0 +:1033B00060F780E001C08C2FDF91CF911F910F91BA +:1033C000FF90EF90DF90CF900895CF93DF93EC01C3 +:1033D0000E94A619BE010E94F507DF91CF910895C2 +:1033E000CB010E94E51908958091C1010895809351 +:1033F000C10108951092C10108950E943F1C2091BF +:10340000BF013091C0018217930750F00E943F1C0A +:103410002091BF013091C001821B930B9C010AC017 +:103420000E943F1C2091BF013091C0012095309532 +:10343000280F391F81E0283B3B4008F480E00895C5 +:103440008091BE0185958595859508958091BE01F1 +:10345000877008950E943F1C2091BC013091BD01EE +:1034600082179307A8F00E943F1C2091BC01309165 +:10347000BD01821B930B883B9B4010F480E013C07E +:103480008091BE0182FB882780F991E089270BC0DB +:103490000E943F1C2091BC013091BD0120953095C8 +:1034A000820F931FE8CF8170089598E0899F900163 +:1034B0001124262B2093BE010E94EA180E943F1C73 +:1034C0009093BD018093BC0108951092BE011092AB +:1034D000BD011092BC0108952091BE018095822308 +:1034E0008093BE01982F977089F430E0482F5527BC +:1034F00047FD50952417350749F0859585958595A5 +:103500000E940B191092BD011092BC010895909178 +:10351000BE01977081E009F480E0089590910C015C +:10352000992321F090910D01911109C020910E0174 +:1035300030910F01F90132969FEF40E01FC0982FA4 +:103540009695969596959F3050F5E0910E01F091E5 +:103550000F01E90FF11D877021E030E0A90102C0E1 +:10356000440F551F8A95E2F7CA019181892B818307 +:1035700008959F3F39F04F5F4E3041F051915813FD +:10358000F8CF0DC05111F7CF942FF5CF9F3F39F0F1 +:10359000F901E90FF11D97FDFA95828308950895C9 +:1035A00090910C01992321F090910D01911109C086 +:1035B00020910E0130910F01F9013296205F3F4FAB +:1035C0001FC0982F9695969596959F30F0F4E091B0 +:1035D0000E01F0910F01E90FF11D877021E030E03D +:1035E000A90102C0440F551F8A95E2F7CA018095D0 +:1035F00091818923818308953196E217F30729F099 +:1036000090819813F9CF1082F7CF089581E090E070 +:10361000E0910E01F0910F01E80FF91F1082019661 +:1036200080319105A9F708958091D5010895909171 +:10363000D501892B8093D501089580959091D5016E +:1036400089238093D50108951092D5010895909112 +:10365000D401892B8093D401089580959091D40151 +:1036600089238093D40108951092D40108959091F4 +:10367000D301892B8093D301089580959091D30134 +:1036800089238093D30108951092D30108958093E4 +:10369000C2010E943F1C9093C0018093BF01089516 +:1036A0001092C2011092C0011092BF010895809142 +:1036B000C201089580910E0190910F01FC01319695 +:1036C0009C01205F3F4F80E0919191118F5FE21745 +:1036D000F307D1F70895E0910E01F0910F01809169 +:1036E000D5018083E0910E01F0910F0190818091CE +:1036F000D401892B8083E0910E01F0910F0190811C +:103700008091D301892B80838091C201882399F015 +:103710000E94FD1981110E94501BE0910E01F09151 +:103720000F0190818091C201892B80830E945A1BD6 +:1037300081110E94501B80910E0190910F010C94F9 +:10374000A30FCF92DF92EF92FF926C01EE24FF2441 +:10375000C114D104E104F10421F0C701B60120E154 +:1037600001C020E0C72ED82EE92EFF24C114D104B9 +:10377000E104F10419F0285FC701B6016B017C0177 +:1037800054E0F694E794D794C7945A95D1F7C114AE +:10379000D104E104F10419F02C5FC701B6016B01FB +:1037A0007C0142E0F694E794D794C7944A95D1F708 +:1037B000C114D104E104F10419F02E5FC701B60170 +:1037C000DC01CB01B695A79597958795892B8A2B18 +:1037D0008B2B09F02F5F822FFF90EF90DF90CF901F +:1037E00008958091ED01843021F11092D70120E4F9 +:1037F00088E190E00FB6F894A895809360000FBE22 +:103800002093600080E00E94900883B7817F8460ED +:1038100083BF83B7816083BF7894889583B78E7F99 +:1038200083BF88E10FB6F894809360001092600027 +:103830000FBE089508950895CF930E941A1C0E9408 +:10384000C0040E941B1CC0E08C2F0E94AE05811199 +:1038500004C0CF5FCE30C1F701C081E0CF910895A1 +:103860000E94AD140E94970F0C94900882E084BDD2 +:1038700093E095BD9AEF97BD80936E0008952FB7A2 +:10388000F8948091D8019091D901A091DA01B0917A +:10389000DB012FBF0895CF92DF92EF92FF920F933B +:1038A0001F932FB7F8944091D8015091D90160919E +:1038B000DA017091DB012FBF6A017B01EE24FF2446 +:1038C0008C0120E030E0C016D106E206F30610F4C9 +:1038D000415051099A01281B390BC9011F910F91C1 +:1038E000FF90EF90DF90CF9008951F920F920FB648 +:1038F0000F9211248F939F93AF93BF938091D80120 +:103900009091D901A091DA01B091DB010196A11D3E +:10391000B11D8093D8019093D901A093DA01B0939F +:10392000DB01BF91AF919F918F910F900FBE0F90D0 +:103930001F9018950E94940CF8942FEF87EA91E657 +:10394000215080409040E1F700C0000087E090EBFC +:10395000DC018093F7019093F801A093F901B093F3 +:10396000FA019CE088E10FB6F894A8958093600076 +:103970000FBE90936000FFCFEF92FF920F931F93C3 +:10398000CF93DF93D82FC0E08C2F0E94AE0500E0CC +:1039900010E0E82EF12CC701002E02C09595879506 +:1039A0000A94E2F780FD06C00F5F1F4F0630110535 +:1039B00091F709C0602F7C2F80E00E94B605D813D4 +:1039C000F3CF81E004C0CF5FCE30F1F680E0DF912D +:1039D000CF911F910F91FF90EF900895CF93C82F33 +:1039E0008CE20E94BC1C882321F08C2FCF910C9478 +:1039F000BC1C80E0CF910895CF930E94431E81119B +:103A000002C00E94291EC5E6C15049F00E94C004B0 +:103A10008FE39CE90197F1F700C00000F5CF89E240 +:103A20000E94EE1C811113C18AE20E94EE1C8111DA +:103A30000E94291E85E00E94EE1C81110E949A1CA2 +:103A40000E944E1E8093D60187E00E94EE1C8823C0 +:103A5000A9F18BE10E94EE1C882351F08091D601E0 +:103A600081FB222720F991E0922790FB81F90EC07B +:103A70008EE00E94EE1C882361F08091D60182FBCB +:103A8000222720F991E0922790FB82F98093D601BA +:103A900015C080E10E94EE1C9091D601882341F070 +:103AA00093FB222720F981E0822780FB93F904C051 +:103AB000892F809580FB90F99093D6018091D60153 +:103AC0000E94521E0E94601E8093F60180EE0E94AA +:103AD000EE1C882341F08091F601982F909590FB81 +:103AE00080F98093F60189E30E94EE1C882359F047 +:103AF0008091F60181FB222720F991E0922790FB2B +:103B000081F98093F60182EE0E94EE1C882359F021 +:103B10008091F60182FB222720F991E0922790FB09 +:103B200082F98093F60186EE0E94EE1C882359F0FC +:103B30008091F60183FB222720F991E0922790FBE8 +:103B400083F98093F60183EE0E94EE1C882359F0DE +:103B50008091F60184FB222720F991E0922790FBC7 +:103B600084F98093F60185E30E94EE1C882359F0C6 +:103B70008091F60185FB222720F991E0922790FBA6 +:103B800085F98093F60181E30E94EE1C882359F0A9 +:103B90008091F60186FB222720F991E0922790FB85 +:103BA00086F98093F60181E10E94EE1C882359F08A +:103BB0008091F60187FB222720F991E0922790FB64 +:103BC00087F98093F6018091F6010E94641E80912E +:103BD000F60187FB882780F980930D0187E20E9418 +:103BE000EE1CC82F8EE10E94EE1C8111C2608FE195 +:103BF0000E94EE1C8111C46080E20E94EE1C8111C3 +:103C0000C86081E20E94EE1C8111C06182E20E94C4 +:103C1000EE1C8111C06283E20E94EE1C8111C0641F +:103C200084E20E94EE1C882311F0C06802C0CC23FD +:103C300029F08C2F0E945B1E6C2F03C00E94571E20 +:103C4000682F70E080E090E0CF910C946D18CF91D8 +:103C500008956DEE7EEF80E090E00E94952460E094 +:103C600082E090E00E94832460E083E090E00E9484 +:103C7000832460E084E090E00E94832460E085E09B +:103C800090E00C94832480E090E00E947D2421E069 +:103C90008D3E9E4F09F020E0822F089582E090E053 +:103CA0000C947524682F82E090E00C94832483E0C8 +:103CB00090E00C947524682F83E090E00C948324AA +:103CC00084E090E00C947524682F84E090E00C94DC +:103CD00083248091DE0180FF0BC06091130185E099 +:103CE000689FB001112475956795759567952BC0F0 +:103CF00081FF09C06091130185E0689FB001112424 +:103D00007595679520C082FF07C06091130185E01B +:103D1000689FB001112417C09091DF019923D1F061 +:103D200060911201961788F72091130185E0289F72 +:103D300090011124929FA001939F500D112470E0D7 +:103D4000CA010E9447246038710540F4611571056D +:103D500039F002C065E070E0862F08958FE708957E +:103D600081E008958091DE0180FF08C0609111011B +:103D700070E0759567957595679521C081FF06C0C0 +:103D80006091110170E07595679519C082FF04C0BC +:103D90006091110170E010C09091DF019923C1F092 +:103DA000609110019617A0F780911101899FC001C1 +:103DB000112470E00E9447246038710528F46115D1 +:103DC000710521F0862F08958FE7089581E0089509 +:103DD00061E070E0F4CF803F21F40E94691E81957C +:103DE00004C0813F29F40E94691E8093E201089576 +:103DF000823F21F40E94691E819504C0833F29F40B +:103E00000E94691E8093E1010895893F19F40E9480 +:103E1000B21E05C08A3F31F40E94B21E8195809384 +:103E2000E30108958B3F21F40E94B21E819504C0E6 +:103E30008C3F29F40E94B21E8093E4010895843FD0 +:103E400021F48091E001816017C0853F21F48091C9 +:103E5000E001826011C0863F21F48091E00184601E +:103E60000BC0873F21F48091E001886005C0883F46 +:103E700031F48091E00180618093E00108958D3FED +:103E800021F48091DE0181600BC08E3F21F480918E +:103E9000DE01826005C08F3F29F48091DE018460DD +:103EA0008093DE010895803F39F48091E20187FF1D +:103EB0006CC01092E20169C0813F29F48091E20157 +:103EC0001816BCF362C09091E101823F29F497FF7C +:103ED0005CC01092E10159C0833F19F41916CCF36C +:103EE00054C0893F41F48091E30118160CF04DC095 +:103EF0001092E3014AC08A3F29F48091E30187FFD1 +:103F000044C0F6CF8B3F39F48091E40187FF3DC078 +:103F10001092E4013AC08C3F29F48091E401181614 +:103F2000BCF333C0843F21F48091E0018E7F17C041 +:103F3000853F21F48091E0018D7F11C0863F21F4FF +:103F40008091E0018B7F0BC0873F21F48091E001DD +:103F5000877F05C0883F31F48091E0018F7E809398 +:103F6000E00113C08D3F21F48091DE018E7F0BC0F4 +:103F70008E3F21F48091DE018D7F05C08F3F29F4B3 +:103F80008091DE018B7F8093DE018091E1018111C0 +:103F90000EC08091E20181110AC08091E30181117C +:103FA00006C08091E401811102C01092DF010895E2 +:103FB00080EE91E00E94AE0F0E943F1C9093DD01C5 +:103FC0008093DC0108951F93CF93DF938091DC01F0 +:103FD0009091DD010E944B1CAC019091DF0199236F +:103FE00021F02091140130E006C0209115018AE0F3 +:103FF000289F900111244217530708F486C080912E +:10400000E101C091E201D091E3011091E40181113D +:1040100007C0C11176C0D11174C0111172C075C032 +:104020009F3F19F09F5F9093DF01181624F40E94C0 +:10403000691E8093E1018091E10187FF05C00E9424 +:10404000691E81958093E1011C1624F40E94691E6B +:104050008093E2018091E20187FF05C00E94691E02 +:1040600081958093E2016091E101662339F1C0916D +:10407000E201CC2319F1772767FD7095872F972FE1 +:104080000E94582323E333E343E35FE30E94BC230E +:104090000E9425236093E1016C2F772767FD7095BF +:1040A000872F972F0E94582323E333E343E35FE3F3 +:1040B0000E94BC230E9425236093E2011D1624F474 +:1040C0000E94B21E8093E3018091E30187FF05C047 +:1040D0000E94B21E81958093E301111624F40E9480 +:1040E000B21E8093E4018091E40187FF05C00E9425 +:1040F000B21E81958093E401DF91CF911F910C94C2 +:10410000D81F9F3F09F08ECF96CFDF91CF911F919F +:104110000895E0EEF1E085E0DF011D928A95E9F770 +:104120001092DF011092DE010895833081F128F4AE +:10413000813059F08230D1F00895853009F449C0BA +:10414000B8F1863009F456C0089580911501262FE4 +:1041500030E0280F311D2F3F310524F4680F6093A4 +:10416000150108958FEF8093150108958091140132 +:10417000262F30E0280F311D2F3F310524F4680F22 +:104180006093140108958FEF809314010895809136 +:104190001301262F30E0280F311D2F3F310524F465 +:1041A000680F6093130108958FEF809313010895B2 +:1041B00080911201262F30E0280F311D2F3F31054D +:1041C00024F4680F6093120108958FEF8093120119 +:1041D000089580911101262F30E0280F311D2F3FC7 +:1041E000310524F4680F6093110108958FEF8093D7 +:1041F0001101089580911001262F30E0280F311D04 +:104200002F3F310524F4680F6093100108958FEF5C +:10421000809310010895833011F128F4813049F022 +:10422000823091F00895853081F120F18630C1F11E +:10423000089580911501681720F4861B809315015D +:10424000089510921501089580911401681720F4C3 +:10425000861B809314010895109214010895809193 +:104260001301681720F4861B8093130108951092A0 +:104270001301089580911201681720F4861B809322 +:10428000120108951092120108958091110168178A +:1042900020F4861B80931101089510921101089556 +:1042A00080911001681720F4861B809310010895F7 +:1042B0001092100108950F931F938D3109F46BC074 +:1042C00008F03FC08E3009F47FC0C0F4873009F495 +:1042D00069C068F4863009F0B1C08091D601817F51 +:1042E0008E7F8093D60181E08093E601A8C088305C +:1042F00009F4A2C08B3009F49FC0A0C0863109F434 +:104300009BC078F4803109F472C0813109F096C005 +:104310000E94AD1490910D0181E0892780930D01D9 +:104320008BC0893109F488C08B3109F087C0809136 +:10433000D60181FB222720F991E0922790FB81F999 +:104340004CC0853309F470C048F4873209F46CC05E +:1043500008F459C0893209F467C070C0833438F456 +:104360008A3308F04EC0883309F466C067C08334CE +:1043700009F45AC0883409F061C00E94AD140FEFEF +:1043800013ED20E3015010402040E1F700C0000091 +:104390000E949A1C51C00E94DF220E94970F0E9427 +:1043A00090084AC09091D601892F8095817080FB3A +:1043B00090F929F0966098609093D60140C0997F5B +:1043C000977F9093D60138C08091D60182FB222737 +:1043D00020F991E0922790FB82F98093D6019923EE +:1043E00059F18091D60181608093D60125C08091DA +:1043F000D60183FB222720F991E0922790FB83F9D5 +:10440000ECCF895301C08D5141E050E060E070E095 +:104410008A019B0104C0000F111F221F331F8A95C0 +:10442000D2F7C901B80104C061E070E080E090E01B +:104430000E946D180E94AD1481E001C080E01F91C0 +:104440000F91089580E0089580E00895CF93C82FDC +:104450008091E601813079F018F08230E9F187C06F +:10446000E0910E01F0910F018081813169F082327B +:1044700009F07FC009C0E0910E01F0910F01808129 +:10448000813111F0823261F48C2F0E94222281113D +:1044900004C08C2F0E945B211DC081E090E01AC0F7 +:1044A0008C2F0E942422811114C0C43179F048F469 +:1044B000CB3079F0C03109F060C082E08093E60132 +:1044C00008C0C93219F0C83321F057C01092E60174 +:1044D00054C081E0817053C0C93289F118F5C431EC +:1044E00071F1A8F4C73009F046C08AE08093150145 +:1044F00094E19093140193E090931301809312013F +:1045000088E08093110188E28093100134C0CE517D +:10451000C63088F5EC2FF0E0E65DFE4F8081809399 +:10452000E50129C0CE34E9F020F4CB3421F56AE06E +:1045300013C0C13579F0C235F1F461E00DC080914E +:10454000E501882319F01092E50115C081E0809300 +:10455000E60115C061E006C08091E5010E9495204A +:104560000AC06AE08091E5010E940B2104C010920C +:10457000E60180E004C081E002C080E0ABCFCF91D3 +:104580000895E1E8F0E08081886080838081816027 +:1045900080838FB7F89493E09093890090ED909387 +:1045A00088008FBF0895EFE6F0E08081826080830D +:1045B0000895EFE6F0E080818D7F80830895EFE637 +:1045C000F0E0908182E08927808308951F920F9206 +:1045D0000FB60F9211242F933F934F935F936F93D6 +:1045E0007F938F939F93AF93BF93EF93FF938091AC +:1045F000E7019091E80101969093E8018093E7012B +:10460000811103C082E00E949008E091E801E695E4 +:10461000E695F0E0EC53FB4FE4918091E7018E13B7 +:1046200003C080E00E949008FF91EF91BF91AF918D +:104630009F918F917F916F915F914F913F912F91BA +:104640000F900FBE0F901F90189504D06894B11171 +:104650008DC0089570D088F09F5790F0B92F99279A +:10466000B751A0F0D1F0660F771F881F991F1AF07D +:10467000BA95C9F712C0B13081F077D0B1E0089592 +:1046800074C0672F782F8827B85F39F0B93FCCF313 +:10469000869577956795B395D9F73EF49095809573 +:1046A000709561957F4F8F4F9F4F0895E89409C093 +:1046B00097FB3EF490958095709561957F4F8F4F55 +:1046C0009F4F9923A9F0F92F96E9BB279395F6956B +:1046D000879577956795B795F111F8CFFAF4BB0FE9 +:1046E00011F460FF1BC06F5F7F4F8F4F9F4F16C04D +:1046F000882311F096E911C0772321F09EE8872FD7 +:10470000762F05C0662371F096E8862F70E060E092 +:104710002AF09A95660F771F881FDAF7880F96950B +:10472000879597F9089557FD9058440F551F59F0F4 +:104730005F3F71F04795880F97FB991F61F09F3F8E +:1047400079F087950895121613061406551FF2CFB7 +:104750004695F1DF08C0161617061806991FF1CF07 +:1047600086957105610508940895E894BB2766272E +:104770007727CB0197F908950BD078C069D028F03E +:104780006ED018F0952309F05AC05FC01124EECF07 +:10479000CADFA0F3959FD1F3950F50E0551F629F9C +:1047A000F001729FBB27F00DB11D639FAA27F00D8A +:1047B000B11DAA1F649F6627B00DA11D661F829FB1 +:1047C0002227B00DA11D621F739FB00DA11D621F96 +:1047D000839FA00D611D221F749F3327A00D611DB3 +:1047E000231F849F600D211D822F762F6A2F112495 +:1047F0009F5750408AF0E1F088234AF0EE0FFF1FE8 +:10480000BB1F661F771F881F91505040A9F79E3F1E +:10481000510570F014C0AACF5F3FECF3983EDCF373 +:10482000869577956795B795F795E7959F5FC1F75B +:10483000FE2B880F911D9695879597F9089597F906 +:104840009F6780E870E060E008959FEF80EC089536 +:1048500000240A941616170618060906089500245F +:104860000A9412161306140605060895092E0394D9 +:10487000000C11F4882352F0BB0F40F4BF2B11F44D +:1048800060FF04C06F5F7F4F8F4F9F4F089597FB6E +:10489000072E16F4009407D077FD09D00E946124FA +:1048A00007FC05D03EF4909581959F4F0895709533 +:1048B00061957F4F0895EE0FFF1F0590F491E02D55 +:1048C0000994AA1BBB1B51E107C0AA1FBB1FA61757 +:1048D000B70710F0A61BB70B881F991F5A95A9F7A9 +:1048E00080959095BC01CD010895F999FECF92BDB8 +:1048F00081BDF89A992780B50895A8E1B0E042E01B +:1049000050E00C949D24262FF999FECF92BD81BDD5 +:10491000F89A019700B4021639F01FBA20BD0FB6FD +:10492000F894FA9AF99A0FBE08950196272F0E94DB +:1049300084240C948324DC01CB01FC01F999FECF83 +:1049400006C0F2BDE1BDF89A319600B40D92415017 +:0A4950005040B8F70895F894FFCF27 +:10495A00200292082009FD08C90895080101C3012F +:10496A0028080A03140A3F4D36398504380402041C +:10497A00C9035C0375038E03A7030102030405063A +:04498A000708090011 +:00000001FF -- cgit v1.2.1 From e4e0b4e105e57346e6dfb48457f22df9b389379f Mon Sep 17 00:00:00 2001 From: Peter Date: Tue, 10 May 2016 01:23:51 +0200 Subject: Update build guide with instructions to copy the whole keymap folder (#315) --- BUILD_GUIDE.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/BUILD_GUIDE.md b/BUILD_GUIDE.md index f7a57d2fc9..fd8b6202ff 100644 --- a/BUILD_GUIDE.md +++ b/BUILD_GUIDE.md @@ -47,8 +47,8 @@ If you have any problems building the firmware, you can try using a tool called Note: Some keyboard folders have non-standard organizations, and may not even support specifying alternate keymaps. Until these get reorganized, you will need to edit their default keymaps directly. -1. Running the `make` command from your keyboard's folder will generate a .hex file based on the default keymap. All keymaps for a particular keyboard live in the `keymaps` folder in that keyboard's folder. To create your own keymap, copy `keymaps/default/keymap.c` to the `keymaps` folder, and rename it with your name, for example jack.c. Or, if you don't care about the ability to share your keymap with the community via GitHub, you can just modify the default keymap itself. Details on how to program keymap files can be found in other guides. -2. To build a keymap other than the default, type `KEYMAP=` after `make`. So if I've named my keymap jack.c, the full command would be `make KEYMAP=jack`. +1. Running the `make` command from your keyboard's folder will generate a .hex file based on the default keymap. All keymaps for a particular keyboard live in the `keymaps` folder in that keyboard's folder. To create your own keymap, duplicate the folder `keymaps/default`, and rename it with your name, for example `jack`. Or, if you don't care about the ability to share your keymap with the community via GitHub, you can just modify the default keymap itself. Details on how to program keymap files can be found in other guides. +2. To build a keymap other than the default, type `KEYMAP=` after `make`. So if I've named my keymap `jack`, the full command would be `make KEYMAP=jack`. 3. How you deploy the firmware will depend on whether you are using a PCB or a Teensy. In both cases, you'll need to put the keyboard in bootloader mode, either by pressing a button on the PCB/Teensy or pressing the key with the `RESET` keycode. Then, if you're using a PCB, just run `make KEYMAP= dfu` to both build and deploy the firmware. If you're using a Teensy, you'll probably need to take the .hex file that make produces in the keyboard's folder, and deploy it using the [Teensy Loader.](https://www.pjrc.com/teensy/loader.html) ## Helpful Tips -- cgit v1.2.1 From b5c5b71828068f514aa721c172b2cf6bdd2f1dad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?James=20=E2=80=98Twey=E2=80=99=20Kay?= Date: Tue, 10 May 2016 22:23:36 +0100 Subject: keymaps/twey: Add more history keys to media layer; stop using toggleable media layer --- keyboard/ergodox_ez/keymaps/twey/keymap.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/keyboard/ergodox_ez/keymaps/twey/keymap.c b/keyboard/ergodox_ez/keymaps/twey/keymap.c index dec9f92f14..f80ffb6dd0 100644 --- a/keyboard/ergodox_ez/keymaps/twey/keymap.c +++ b/keyboard/ergodox_ez/keymaps/twey/keymap.c @@ -49,9 +49,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, KC_ENT, KC_B, KC_M, KC_W, KC_V, KC_Z , KC_RSFT, KC_UP, KC_DOWN,KC_LBRC,KC_RBRC, MO(SYMB), - KC_HOME,KC_END, + KC_HOME, KC_END, KC_RALT, - KC_FN1,KC_SPC,KC_RCTL + MO(MDIA),KC_SPC,KC_RCTL ), /* Keymap 1: Symbol Layer * @@ -102,7 +102,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_NO, PV_NUM, PV_NUM, PV_NUM, PV_NUM, PV_NUM, PV_STAR, KC_NO, PV_LS, PV_LT, PV_LP, PV_LH, PV_STAR, KC_NO, PV_LS, PV_LK, PV_LW, PV_LR, PV_STAR, PV_STAR, - KC_NO, KC_NO, KC_NO, KC_TRNS, KC_TRNS, + KC_TRNS,KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_NO, PV_A, PV_O, KC_NO, @@ -111,10 +111,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { PV_STAR, PV_NUM, PV_NUM, PV_NUM, PV_NUM, PV_NUM, PV_NUM, PV_STAR, PV_RF, PV_RP, PV_RL, PV_RT, PV_RD, PV_STAR, PV_STAR, PV_RR, PV_RB, PV_RG, PV_RS, PV_RZ, - KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_NO, + KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_TRNS, KC_NO, KC_NO, KC_NO, - KC_FN1, PV_E, PV_U + KC_TRNS,PV_E, PV_U ), /* Keymap 3: Media and mouse keys @@ -122,19 +122,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * ,--------------------------------------------------. ,--------------------------------------------------. * | | | | | | | | | | | | | | | | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | | | | MsUp | | | | | | | | | | | | + * | | | | MsUp | | | | | | | Back | | Frwd | | | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | |MsLeft|MsDown|MsRght| |------| |------| | | | | | Play | + * | | |MsLeft|MsDown|MsRght| |------| |------| | Prev | Play | Next | | | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | | | | | | | | | | | Prev | Next | | | + * | | | | | | | | | | | | | | | | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' * | | | | Lclk | Rclk | |VolUp |VolDn | Mute | | | * `----------------------------------' `----------------------------------' * ,-------------. ,-------------. * | | | | | | * ,------|------|------| |------+------+------. - * | | | | | | |Brwser| - * | | |------| |------| |Back | + * | | | | | | | | + * | | |------| |------| | | * | | | | | | | | * `--------------------' `--------------------' */ @@ -150,9 +150,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, // right hand KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_WBAK, KC_TRNS, KC_WFWD, KC_TRNS, KC_TRNS, + KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, - KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS, KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, -- cgit v1.2.1 From 373e441d860160cd07f1911f9dec13172012d0c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?James=20=E2=80=98Twey=E2=80=99=20Kay?= Date: Tue, 10 May 2016 22:30:17 +0100 Subject: keymaps/twey: Plover 3.0 has a standard TOGGLE keybinding; use that instead --- keyboard/ergodox_ez/keymaps/twey/keymap.c | 16 ++++++++++------ keyboard/ergodox_ez/keymaps/twey/readme.md | 8 +++----- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/keyboard/ergodox_ez/keymaps/twey/keymap.c b/keyboard/ergodox_ez/keymaps/twey/keymap.c index f80ffb6dd0..019930f2a2 100644 --- a/keyboard/ergodox_ez/keymaps/twey/keymap.c +++ b/keyboard/ergodox_ez/keymaps/twey/keymap.c @@ -171,15 +171,19 @@ void toggle_steno(int pressed) if (pressed) { if (layer != STEN) layer_on(STEN); else layer_off(STEN); - register_code(PV_LS); + register_code(PV_LP); register_code(PV_LH); - register_code(PV_RF); - register_code(PV_RT); + register_code(PV_LR); + register_code(PV_O); + register_code(PV_RL); + register_code(PV_RG); } else { - unregister_code(PV_LS); + unregister_code(PV_LP); unregister_code(PV_LH); - unregister_code(PV_RF); - unregister_code(PV_RT); + unregister_code(PV_LR); + unregister_code(PV_O); + unregister_code(PV_RL); + unregister_code(PV_RG); } } diff --git a/keyboard/ergodox_ez/keymaps/twey/readme.md b/keyboard/ergodox_ez/keymaps/twey/readme.md index d44c0a2382..0ff25e2067 100644 --- a/keyboard/ergodox_ez/keymaps/twey/readme.md +++ b/keyboard/ergodox_ez/keymaps/twey/readme.md @@ -12,8 +12,6 @@ The Plover key (top right key on the left half) also sends my Plover layer, so you can toggle between steno and typing modes with a single keypress. -If you want to use this feature, you'll need to add: - - "SH-FT": "{PLOVER:TOGGLE}" - -to your Plover dictionary. +If you want to use this feature, you'll need to add the +`commands.json` dictionary to your Plover dictionaries, or define the +toggle stroke (`PHROLG`) yourself. -- cgit v1.2.1 From a46a0ed4f3ce333e7b356f819ab5e212a29a14dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?James=20=E2=80=98Twey=E2=80=99=20Kay?= Date: Tue, 10 May 2016 22:33:06 +0100 Subject: keymaps/twey: fix documentation --- keyboard/ergodox_ez/keymaps/twey/readme.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/keyboard/ergodox_ez/keymaps/twey/readme.md b/keyboard/ergodox_ez/keymaps/twey/readme.md index 0ff25e2067..979e4261e5 100644 --- a/keyboard/ergodox_ez/keymaps/twey/readme.md +++ b/keyboard/ergodox_ez/keymaps/twey/readme.md @@ -3,8 +3,8 @@ - Layer 0: Non-ANSI Dvorak layout, with modified modifiers — all modifiers on thumb keys, as well as return and space. - Layer 1: Default symbol layout. -- Layer 2: Default media/mouse layout. -- Layer 3: Plover-oriented stenography layer. +- Layer 2: Plover-oriented stenography layer. +- Layer 3: Extended media/mouse layout. ## Unusual features The Plover key (top right key on the left half) also sends my Plover -- cgit v1.2.1 From 75384689b25994d495ccf4a36b81f8e31aa03484 Mon Sep 17 00:00:00 2001 From: Thiago Alves Date: Tue, 10 May 2016 16:15:32 -0700 Subject: Add custom config.h and revert the changes on the global one. Some options I defined on the config.h file don't make much sense to other keymaps so I revert the global config.h and add those options on the keymap custom one. --- keyboard/ergodox_ez/config.h | 2 - keyboard/ergodox_ez/keymaps/townk_osx/config.h | 92 +++++++++++++++++++++++ keyboard/ergodox_ez/keymaps/townk_osx/makefile.mk | 2 + 3 files changed, 94 insertions(+), 2 deletions(-) create mode 100644 keyboard/ergodox_ez/keymaps/townk_osx/config.h diff --git a/keyboard/ergodox_ez/config.h b/keyboard/ergodox_ez/config.h index 58ba690afd..6a391ffb54 100644 --- a/keyboard/ergodox_ez/config.h +++ b/keyboard/ergodox_ez/config.h @@ -86,7 +86,5 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION //#define DEBUG_MATRIX_SCAN_RATE -#define ONESHOT_TAP_TOGGLE 2 -#define ONESHOT_TIMEOUT 3000 #endif diff --git a/keyboard/ergodox_ez/keymaps/townk_osx/config.h b/keyboard/ergodox_ez/keymaps/townk_osx/config.h new file mode 100644 index 0000000000..78aa3ee8b9 --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/townk_osx/config.h @@ -0,0 +1,92 @@ +/* +Copyright 2012 Jun Wako +Copyright 2013 Oleg Kostyuk + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#ifndef CONFIG_H +#define CONFIG_H + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x1307 +#define DEVICE_VER 0x0001 +#define MANUFACTURER ErgoDox EZ +#define PRODUCT ErgoDox EZ +#define DESCRIPTION t.m.k. keyboard firmware for Ergodox + +/* key matrix size */ +#define MATRIX_ROWS 14 +#define MATRIX_COLS 6 + +#define MOUSEKEY_DELAY 100 +#define MOUSEKEY_INTERVAL 20 +#define MOUSEKEY_MAX_SPEED 3 +#define MOUSEKEY_TIME_TO_MAX 10 + +#define TAPPING_TOGGLE 1 + +#define COLS (int []){ F1, F0, B0, C7, F4, F5, F6, F7, D4, D6, B4, D7 } +#define ROWS (int []){ D0, D5, B5, B6 } + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +/* number of backlight levels */ +#define BACKLIGHT_LEVELS 3 + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 2 +#define TAPPING_TERM 200 +#define IGNORE_MOD_TAP_INTERRUPT // this makes it possible to do rolling combos (zx) with keys that convert to other keys on hold (z becomes ctrl when you hold it, and when this option isn't enabled, z rapidly followed by x actually sends Ctrl-x. That's bad.) + +/* 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_LCTL) | MOD_BIT(KC_RCTL)) || \ + keyboard_report->mods == (MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT)) \ +) + +/* + * 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 +//#define DEBUG_MATRIX_SCAN_RATE +#define ONESHOT_TAP_TOGGLE 2 +#define ONESHOT_TIMEOUT 3000 + +#endif diff --git a/keyboard/ergodox_ez/keymaps/townk_osx/makefile.mk b/keyboard/ergodox_ez/keymaps/townk_osx/makefile.mk index 733d0ee5e7..e757557bda 100644 --- a/keyboard/ergodox_ez/keymaps/townk_osx/makefile.mk +++ b/keyboard/ergodox_ez/keymaps/townk_osx/makefile.mk @@ -1,2 +1,4 @@ # I don't want my keyboard blinking lights when is suppose to be asleep. SLEEP_LED_ENABLE = no + +CONFIG_H = keymaps/$(KEYMAP)/config.h -- cgit v1.2.1 From 4a041f65e27033072fa5ef742c6653d4a078629e Mon Sep 17 00:00:00 2001 From: Thiago Alves Date: Tue, 10 May 2016 16:26:56 -0700 Subject: Tweak some key positions and changed macro location. After using the layout a while I learn that the - and = positions should be swapped since I keep typing = when I intend to type -. I also, removed the only macro from the top left on the right hand to put the power button there and since I never use the arrow keys on the separated groups of keys, I added 4 macros there to get a feel for it. --- keyboard/ergodox_ez/keymaps/townk_osx/keymap.c | 128 +- .../ergodox_ez/keymaps/townk_osx/townk_osx.hex | 2343 ++++++++++---------- 2 files changed, 1229 insertions(+), 1242 deletions(-) diff --git a/keyboard/ergodox_ez/keymaps/townk_osx/keymap.c b/keyboard/ergodox_ez/keymaps/townk_osx/keymap.c index 9f16bc8636..eb7700b7ff 100644 --- a/keyboard/ergodox_ez/keymaps/townk_osx/keymap.c +++ b/keyboard/ergodox_ez/keymaps/townk_osx/keymap.c @@ -55,16 +55,22 @@ This is used to make the keyboard behave mostly like a **num pad keyboard**. #define FN 2 #define MACRO_TMUX_ESC 10 -#define MACRO_SHIFT_OR_LPAREN 11 -#define MACRO_SHIFT_OR_RPAREN 12 +#define MACRO_TMUX_PASTE 11 +#define MACRO_OSX_COPY 12 +#define MACRO_OSX_PASTE 13 + +#define M_TESC M(MACRO_TMUX_ESC) +#define M_TPASTE M(MACRO_TMUX_PASTE) +#define M_OSXCPY M(MACRO_OSX_COPY) +#define M_OSXPST M(MACRO_OSX_PASTE) const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Keymap 0: Base Layer * * ,-----------------------------------------------------. ,-----------------------------------------------------. - * | `~ | 1 | 2 | 3 | 4 | 5 | ESC | | Macro| 6 | 7 | 8 | 9 | 0 | + = | + * | `~ | 1 | 2 | 3 | 4 | 5 | ESC | | Pwr | 6 | 7 | 8 | 9 | 0 | - _ | * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------| - * | Tab | Q | W | E | R | T | F16 | | F17 | Y | U | I | O | P | - _ | + * | Tab | Q | W | E | R | T | F16 | | F17 | Y | U | I | O | P | = + | * |-----------+------+------+------+------+------| Meh | | Meh |------+------+------+------+------+-----------| * | \ (Ctrl) | A | S | D | F | G |------| |------| H | J | K | L | ; | ' " (Ctrl)| * |-----------+------+------+------+------+------| F18 | | F19 |------+------+------+------+------+-----------| @@ -73,74 +79,78 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | FN | KPAD |LCtrl | LAlt | LGui | | RGui | RAlt | RCtrl| KPAD | FN | * `-----------------------------------' `-----------------------------------' * ,-------------. ,-------------. - * | Left | Right| | Down | Up | + * | M(0) | M(1) | | M(2) | M(3) | * ,------|------|------| |------+------+------. * | | | Home | | PgUp | | | * |Backsp| Del |------| |------| Enter| Space| * | | | End | | PgDn | | | * `--------------------' `--------------------' * - * Macro = Ctrk+A Esc - * (this is used to issue the Esc key to the Tmux application) + * M(0) = Ctrk+A Esc + * (this is used to issue the Esc key to the Tmux application) + * M(1) = Ctrk+A P + * (this is used to issue the Paste key to the Tmux application) + * M(2) = Cmd+C + * M(3) = Cmd+V */ [BASE]=KEYMAP(//left half - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_ESC, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, MEH_T(KC_F16), - CTL_T(KC_BSLS), KC_A, KC_S, KC_D, KC_F, KC_G, - KC_FN2, KC_Z, KC_X, KC_C, KC_V, KC_B, ALL_T(KC_F18), - KC_FN1, TG(KEYPAD), KC_LCTRL, KC_LALT, KC_LGUI, - KC_LEFT, KC_RIGHT, - KC_HOME, - KC_BSPC, KC_DELT, KC_END, - //right half - M(MACRO_TMUX_ESC), KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQL, - MEH_T(KC_F17), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS, - KC_H, KC_J, KC_K, KC_L, KC_SCLN, CTL_T(KC_QUOT), - ALL_T(KC_F19), KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_FN2, - KC_RGUI, ALT_T(KC_LBRC), CTL_T(KC_RBRC), TG(KEYPAD), KC_FN1, - KC_DOWN, KC_UP, - KC_PGUP, - KC_PGDN, KC_ENT, KC_SPC), + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_ESC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, MEH_T(KC_F16), + CTL_T(KC_BSLS), KC_A, KC_S, KC_D, KC_F, KC_G, + KC_FN2, KC_Z, KC_X, KC_C, KC_V, KC_B, ALL_T(KC_F18), + KC_FN1, TG(KEYPAD), KC_LCTRL, KC_LALT, KC_LGUI, + M_TESC, M_TPASTE, + KC_HOME, + KC_BSPC, KC_DELT, KC_END, + //right half + KC_POWER, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, + MEH_T(KC_F17), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_EQL, + KC_H, KC_J, KC_K, KC_L, KC_SCLN, CTL_T(KC_QUOT), + ALL_T(KC_F19), KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_FN2, + KC_RGUI, KC_RALT, CTL_T(KC_LBRC), KC_FN3, KC_FN1, + M_OSXCPY, M_OSXPST, + KC_PGUP, + KC_PGDN, KC_ENT, KC_SPC), /* Keymap 1: KeyPad Layer * * ,-----------------------------------------------------. ,-----------------------------------------------------. - * | | | | | | | | | BTab | Clear| / | * | ^ | ( | LeftClick | + * | | | LClk | RClk | MClk | | | | BTab | Clear| / | * | ^ | ( | | * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------| - * | M.Accel 2 | |ScrlUp| U |ScrlDn| | | | Tab | 7 | 8 | 9 | + | ) | RightClick| + * | M.Accel 2 | |ScrlUp| U |ScrlDn| | | | Tab | 7 | 8 | 9 | + | ) | | * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------| - * | M.Accel 1 | | L | D | R | |------| |------| 4 | 5 | 6 | - | | MidClick | + * | M.Accel 1 | | L | D | R | |------| |------| 4 | 5 | 6 | - | | | * |-----------+------+------+------+------+------| | |Return|------+------+------+------+------+-----------| * | M.Accel 0 | |ScrlL | |ScrlR | | | | | 1 | 2 | 3 | = | | | * `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------' - * | | | | | | | 0 | . | , | | KPAD | + * | | XXXX | | | | | 0 | . | , | XXXX | | * `-----------------------------------' `-----------------------------------' * ,-------------. ,-------------. * | | | | | | * ,------|------|------| |------+------+------. - * | | | | | | | | - * | | |------| |------| | | - * | | | | | | | | + * | | | | | | XXXX | | + * | | |------| |------| XXXX | | + * | | | | | | XXXX | | * `--------------------' `--------------------' */ [KEYPAD]=KEYMAP(//left half - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, - KC_NO, KC_NO, KC_MS_WH_UP, KC_MS_U, KC_MS_WH_DOWN, KC_NO, KC_NO, - KC_NO, KC_NO, KC_MS_L, KC_MS_D, KC_MS_R, KC_NO, - KC_NO, KC_NO, KC_MS_WH_LEFT, KC_NO, KC_MS_WH_RIGHT, KC_NO, KC_NO, - KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_MS_BTN1, KC_MS_BTN2, KC_MS_BTN3, KC_NO, KC_NO, + KC_MS_ACCEL2, KC_NO, KC_MS_WH_UP, KC_MS_U, KC_MS_WH_DOWN, KC_NO, KC_NO, + KC_MS_ACCEL1, KC_NO, KC_MS_L, KC_MS_D, KC_MS_R, KC_NO, + KC_MS_ACCEL0, KC_NO, KC_MS_WH_LEFT, KC_NO, KC_MS_WH_RIGHT, KC_NO, KC_NO, + KC_NO, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, //right half - LSFT(KC_TAB), KC_CLEAR, KC_KP_SLASH, KC_KP_ASTERISK, KC_CIRCUMFLEX, KC_LPRN, KC_MS_BTN1, - KC_TAB, KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_PLUS, KC_RPRN, KC_MS_BTN2, - KC_KP_4, KC_KP_5, KC_KP_6, KC_KP_MINUS, KC_NO, KC_MS_BTN3, + LSFT(KC_TAB), KC_CLEAR, KC_KP_SLASH, KC_KP_ASTERISK, KC_CIRCUMFLEX, KC_LPRN, KC_NO, + KC_TAB, KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_PLUS, KC_RPRN, KC_NO, + KC_KP_4, KC_KP_5, KC_KP_6, KC_KP_MINUS, KC_NO, KC_NO, KC_KP_ENTER, KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_EQUAL, KC_NO, KC_NO, - KC_KP_0, KC_KP_DOT, KC_KP_COMMA, KC_TRNS, KC_TRNS, + KC_KP_0, KC_KP_DOT, KC_KP_COMMA, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, - KC_NO, KC_NO, KC_NO), + KC_NO, KC_TRNS, KC_NO), /* Keymap 2: Functions Layer * @@ -153,7 +163,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |-----------+------+------+------+------+------| XXXX | | XXXX |------+------+------+------+------+-----------| * | L Shift | | | | | | XXXX | | XXXX | | | | | | R Shift | * `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------' - * | XXXXX | | XXXX | XXXX | XXXX | | XXXX | XXXX | XXXX | | | + * | XXXXX | | XXXX | XXXX | XXXX | | XXXX | XXXX | XXXX | | XXXXX | * `-----------------------------------' `-----------------------------------' * ,-------------. ,-------------. * | | | | | | @@ -187,6 +197,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { const uint16_t PROGMEM fn_actions[] = { [1] = ACTION_LAYER_ONESHOT(FN), [2] = ACTION_MODS_ONESHOT(MOD_LSFT), // Sticky shift light. Tap for the next keypress to be shifted. Hold for regular shift. + [3] = ACTION_LAYER_TAP_KEY(KEYPAD, KC_RBRC), }; static uint16_t key_timer; @@ -199,32 +210,21 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { return MACRO(D(LCTRL), T(A), U(LCTRL), D(ESC), END); } return MACRO(U(ESC), END); - case MACRO_SHIFT_OR_LPAREN: { + case MACRO_TMUX_PASTE: + if (record->event.pressed) { + return MACRO(D(LCTRL), T(A), U(LCTRL), D(P), END); + } + return MACRO(U(P), END); + case MACRO_OSX_COPY: if (record->event.pressed) { - key_timer = timer_read(); // if the key is being pressed, we start the timer. - register_code(KC_LSFT); // we're now holding down Shift. - } else { // this means the key was just released, so we can figure out how long it was pressed for (tap or "held down"). - if (timer_elapsed(key_timer) < TAPPING_TERM) { // the threshhold we pick for counting something as a tap. - register_code(KC_9); // sending 9 while Shift is held down gives us an opening paren - unregister_code(KC_9); // now let's let go of that key - } - unregister_code(KC_LSFT); // let's release the Shift key now. + return MACRO(D(LGUI), D(C), END); } - break; - } - case MACRO_SHIFT_OR_RPAREN: { + return MACRO(U(C), U(LGUI), END); + case MACRO_OSX_PASTE: if (record->event.pressed) { - key_timer = timer_read(); // Now we're doing the same thing, only for the right shift/close paren key - register_code(KC_RSFT); - } else { - if (timer_elapsed(key_timer) < TAPPING_TERM) { - register_code(KC_0); - unregister_code(KC_0); - } - unregister_code(KC_RSFT); + return MACRO(D(LGUI), D(V), END); } - break; - } + return MACRO(U(V), U(LGUI), END); } return MACRO_NONE; }; diff --git a/keyboard/ergodox_ez/keymaps/townk_osx/townk_osx.hex b/keyboard/ergodox_ez/keymaps/townk_osx/townk_osx.hex index f0f2c5c79b..868d86e82d 100644 --- a/keyboard/ergodox_ez/keymaps/townk_osx/townk_osx.hex +++ b/keyboard/ergodox_ez/keymaps/townk_osx/townk_osx.hex @@ -1,1179 +1,1166 @@ -:100000000C9482020C94C6020C94C6020C94C60294 -:100010000C94C6020C94C6020C94C6020C94C60240 -:100020000C94C6020C94C6020C940F0D0C94E10DB6 -:100030000C94C6020C94C6020C94C6020C94C60220 -:100040000C94C6020C94E6220C94C6020C94C602D0 -:100050000C94C6020C94751C0C94C6020C94C60237 -:100060000C94C6020C94C6020C94C6020C94C602F0 -:100070000C94C6020C94C6020C94C6020C94C602E0 -:100080000C94C6020C94C6020C94C6020C94C602D0 -:100090000C94C6020C94C6020C94C6020C94C602C0 -:1000A0000C94C6020C94C6020C94C6024E0E700E3E -:1000B0005E0F700E5E0FB50ED80E5E0F2D0F400F47 -:1000C0004B124B1277127712BF12DD1259145914CA -:1000D000E81259149D139D134A14591459145314BA -:1000E000AA13AA13AA13AA13AA13AA13AA13AA1328 -:1000F000AA13AA13AA13AA13AA13AA13AA13AA1318 -:10010000BB13C913D013D713E11302290001E00177 -:1001100004020402E00129000000F4A200223500DC -:100120002B003171C200C10000001E001400040049 -:100130001D0001544D001F001A0016001B00E000B6 -:100140004C002000080007000600E2002A00210001 -:10015000150009001900E3004A00220017000A00F8 -:1001600005000000500029006B7700006D7F000043 -:100170004F000A306C7700006E7F000051002300B2 -:100180001C000B00110000005200240018000D009C -:100190001000E7004B0025000C000E0036002F7405 -:1001A0002C00260012000F003700307128002700B5 -:1001B00013003300380001544E002E002D0034711E -:1001C000C200C100000000000000000000000100AB -:1001D000000000000000000000000100000000001E -:1001E000F900F200FB00000000000000F000F10048 -:1001F0000000000000000000FA00F300FC00000016 -:1002000000000000000000000000000000000000EE -:10021000000000000000000000002B022B00000086 -:100220005800000000009C005F005C0059000000C6 -:100230000000540060005D005A006200000055009C -:1002400061005E005B00630000002302570056005F -:100250006700850000002602270200000000010060 -:100260000000F400F500F6000000010000000000AE -:1002700000003900E100010000003A00AD00B000CC -:100280000000000000003B00BC00AC0000000100CA -:1002900000003C00AF00AE000000010000003D0087 -:1002A000BB00AB000000010000003E0000000000A9 -:1002B0000000000000003F000100000001000000FD -:1002C00000004000010000000100000000004100AB -:1002D000000050000000000000004200000051003B -:1002E0000000010000004300000052000000010077 -:1002F0000000440000004F00000001000000450025 -:1003000000000000000000000000A900AA00A800F2 -:10031000E5000100000016034500720067006F0051 -:1003200044006F007800200045005A0000001603CA -:100330004500720067006F0044006F0078002000E5 -:1003400045005A0000000403090409026D0004017D -:1003500000A0FA09040000010301010009211101B4 -:100360000001223F000705810308000A090401007B -:100370000103010200092111010001224D000705BE -:10038000820308000A090402000103000000092199 -:10039000110100012236000705830308000A090441 -:1003A00003000103000000092111010001223900AE -:1003B000070584031000011201100100000008ED80 -:1003C000FE071301000102000105010906A1010554 -:1003D0000719E029E7150025019508750181020537 -:1003E000081901290595057501910295017503917B -:1003F00001050719002977150025019578750181F8 -:1004000002C005010980A101850216010026B7007E -:100410001A01002AB700751095018100C0050C096A -:1004200001A1018503160100269C021A01002A9CE5 -:1004300002751095018100C005010902A1010901A1 -:10044000A10005091901290515002501950575016A -:10045000810295017503810105010930093115817A -:10046000257F95027508810609381581257F95013C -:1004700075088106050C0A38021581257F950175DE -:10048000088106C0C005010906A101050719E02978 -:10049000E715002501950875018102950175088110 -:1004A0000105081901290595057501910295017548 -:1004B0000391010507190029FF150025FF95067511 -:1004C000088100C0000000000000000000000001E2 -:1004D0000204060A0F17202C3A4A5D71879DB3C7A4 -:1004E000DAE9F5FCFFFCF5E9DAC7B39D87715D4AEF -:1004F0003A2C20170F0A0604020100000000000039 -:100500000000000011241FBECFEFDAE0DEBFCDBF38 -:1005100004B603FE24C08091F7019091F801A091E8 -:10052000F901B091FA018730904BA740B04BB9F474 -:100530001092F7011092F8011092F9011092FA014D -:1005400014BE84B7877F84BF88E10FB6F894809388 -:100550006000109260000FBEE0E0FFE3099511E03B -:10056000A0E0B1E0EAE5F9E402C005900D92A43301 -:10057000B107D9F711E0A4E3B1E001C01D92A73F94 -:10058000B107E1F70E94530A0C94AB240C940000CD -:10059000FC016B3059F06C3029F16A3009F041C030 -:1005A0008281811141C08AE091E00895828188238F -:1005B00041F00E943F1C909336018093350181EEFB -:1005C0001BC080913501909136010E944B1C883CE4 -:1005D000910530F486E20E94C01086E20E948811E4 -:1005E00081EE1DC08281882351F00E943F1C9093B0 -:1005F00036018093350185EE0E94C01012C08091B3 -:100600003501909136010E944B1C883C910530F4D5 -:1006100087E20E94C01087E20E94881185EE0E9446 -:10062000881180E090E008958DE091E008950895AC -:10063000CF936091B4017091B5018091B601909112 -:10064000B7010E94A11BC82F56985E9825982D9837 -:1006500026982E9827982F988FE090E09093890005 -:100660008093880090938B0080938A0090938D00F4 -:1006700080938C00CC2329F0C13029F4C09334013D -:1006800002C01092340180913401813011F4279A14 -:100690002F9A0E94970F867011F0259A2D9AC230DA -:1006A00041F40E942A1A811104C027982F98269A93 -:1006B0002E9AE0910E01F0910F018081982F927295 -:1006C00059F08D7D49F48FEF90E0909389008093ED -:1006D0008800259A2D9A08C00E94571B827221F02B -:1006E0000E94FD19882379F3CF9108950C94180383 -:1006F00056985E9825982D9826982E9827982F988A -:100700008FEF90E0909389008093880090938B0006 -:1007100080938A0090938D0080938C00259A2D9A67 -:100720002FEF80E792E0215080409040E1F700C039 -:100730000000269A2E9A2FEF80E792E02150804009 -:100740009040E1F700C00000279A2F9A2FEF80E732 -:1007500092E0215080409040E1F700C000002598D1 -:100760002D982FEF80E792E0215080409040E1F7F4 -:1007700000C0000026982E982FEF80E792E02150CD -:1007800080409040E1F700C0000027982F985698CD -:100790005E9825982D9826982E9827982F9808953A -:1007A00089EA8093800089E08093810024982C98C6 -:1007B0003F988AB18F748AB96E98479A8BB1806BD3 -:1007C0008BB9769A0E9478030C94170380E2809389 -:1007D00000018091370181110EC00E94350481E033 -:1007E000809337012FEF83ED90E3215080409040BC -:1007F000E1F700C0000080E40E943B048093000108 -:1008000081112EC00E94650480930001811128C0CF -:100810000E94650480930001811122C08FE30E9431 -:1008200065048093000181111BC00E945D0480E477 -:100830000E943B0480930001811112C08CE00E9451 -:1008400065048093000181110BC00E9465048093B0 -:100850000001811105C08FE30E94650480930001AF -:100860000E945D048091000108951092B9008AE011 -:100870008093B800089594EA9093BC009091BC00D6 -:1008800097FFFCCF9091B900987F983021F090317C -:1008900011F081E008958093BB0084E88093BC0050 -:1008A0008091BC0087FFFCCF8091B900887F8831A0 -:1008B00011F0803471F780E0089584E98093BC00E2 -:1008C0008091BC0084FDFCCF08958093BB0084E838 -:1008D0008093BC008091BC0087FFFCCF9091B90051 -:1008E000987F81E0983209F480E0089584E880934D -:1008F000BC008091BC0087FFFCCF8091BB000895B5 -:1009000080910001811115C080E40E943B04809316 -:10091000000181110CC082E10E94650480930001F6 -:10092000811105C08FEF0E946504809300010E9431 -:100930005D0484B1807F84B985B1807F85B98AB137 -:10094000837F8AB98BB1837F8BB93E98469808958F -:100950000E94E603809300010E94800480B38C70A3 -:1009600080BB81B3836F81BBA9E3B1E0E7E4F1E031 -:100970008EE08E0F11921D928E13FCCF0C94D0033B -:10098000BF92CF92DF92EF92FF920F931F93CF937C -:10099000DF9380910001882379F0809138018F5F87 -:1009A00080933801811108C00E94E6038093000102 -:1009B000811102C00E94780309E311E0C0E0D0E099 -:1009C000DD24D39482E0C82EEE24E394F12CC730CA -:1009D000D10500F580910001811164C080E40E947E -:1009E0003B0480930001811112C082E10E946504E2 -:1009F0008093000181110BC0C7010C2E01C0880F2C -:100A00000A94EAF780950E946504809300010E9491 -:100A10005D0448C0CA30A1F028F4C83059F0C9308C -:100A200061F005C0CC3089F070F0CD3089F0209AAB -:100A3000289810C0219A29980DC0229A2A980AC095 -:100A4000239A2B9807C0529A01C0539A5B9802C010 -:100A50003E9A469890EA9A95F1F79FB1799902C02B -:100A600082E001C080E091709D25982B7C9902C0A6 -:100A700084E001C080E0892B7D9902C038E001C08C -:100A800030E0832B7E9902C020E101C020E0822B60 -:100A90009FB19095991F9927991F9295990F907ED4 -:100AA000892B0FC080910001811149C080E40E9410 -:100AB0003B0480930001882379F1B12C0E945D04EE -:100AC0008B2DF8019081981719F08083C092010155 -:100AD0000E94800421960F5F1F4FCE30D10509F090 -:100AE00076CF80910101882361F1815080930101CB -:100AF000882339F08FE99FE00197F1F700C00000EB -:100B000020C0A7E4B1E0E9E3F1E0CF01825F919179 -:100B10009D938E13FCCF15C083E10E9465048093E2 -:100B200000018111CACF81E40E943B04809300013F -:100B30008111C3CF0E947604B82EB094BFCF80E05D -:100B4000C0CF0E94760381E0DF91CF911F910F917A -:100B5000FF90EF90DF90CF90BF900895E82FF0E0E6 -:100B6000E95BFE4F808108950895089596E0799F8E -:100B7000F001112494E5899FE00DF11D1124E60F89 -:100B8000F11DEE0FFF1FE25EFE4F859194910895D7 -:100B9000880F991FFC01E856F040859194910895C3 -:100BA000880F991FFC01E85EFE4F8591949108958E -:100BB0000F931F93CF93DF93EC018115904350F572 -:100BC000C11580E2D80708F0B3C0CB3BD10590F443 -:100BD000C83AD10508F05AC0C53AD10508F04BC053 -:100BE000C430D10508F0BBC1219709F0B5C101E0BF -:100BF00010E0F5C1CF3FD10511F008F0B0C1C03F02 -:100C0000D10508F092C0CE01805E9109089708F4E2 -:100C1000A6C1A2C1C11591E5D907A8F4C23020E54B -:100C2000D20708F09EC0C11580E5D80709F485C039 -:100C300008F091C0C11520E4D20708F08DC1DD276E -:100C40008E01106CCCC1C11580E8D80758F4C115CD -:100C500090E7D90708F07CC1C11520E6D20708F457 -:100C600022C17AC1C11580E9D80708F075C1DF70CB -:100C70008E01106AB4C1C53AD10509F472C1C63AF1 -:100C8000D10509F071C102E810E4A9C1C83AD10543 -:100C900009F46DC1C93AD10509F46CC1CA3AD1054C -:100CA00009F46BC1CB3AD10509F46AC1CC3AD1053C -:100CB00009F469C1CD3AD10509F468C1C03BD10539 -:100CC00009F467C1CE3AD10509F466C1CF3AD1051E -:100CD00009F465C1C13BD10509F464C1C23BD1052A -:100CE00009F463C1C33BD10509F462C1C43BD1051A -:100CF00009F461C1C53BD10509F460C1C63BD1050A -:100D000009F45FC1C73BD10509F45EC1C83BD105F9 -:100D100009F45DC1C93BD10509F45CC1CA3BD105E9 -:100D200009F45BC100E014E45AC18E01106557C19B -:100D3000CE019F700E94D00553C10E94AD149FEF59 -:100D400024E38CE0915020408040E1F700C0000097 -:100D50000E949A1C44C18091D60181608093D60183 -:100D60003EC10E94431E811102C00E94291E0E94A2 -:100D7000601E90E09093F7018093F601C23090E5F9 -:100D8000D90721F48091F601816086C0C43020E546 -:100D9000D20721F48091F60182607EC0C63080E5E2 -:100DA000D80721F48091F601846076C0C83090E5C0 -:100DB000D90719F48091F60127C0CA3020E5D2077F -:100DC00021F48091F601806167C0CC3080E5D807BE -:100DD00021F48091F60180625FC0CE3090E5D907A2 -:100DE00021F48091F601806457C0C03120E5D2071C -:100DF00021F48091F60180684FC0C23180E5D807A8 -:100E000029F48091F6018460886046C0C33090E583 -:100E1000D90721F48091F6018E7F3EC0C53020E5D0 -:100E2000D20721F48091F6018D7F36C0C73080E56E -:100E3000D80721F48091F6018B7F2EC0C93090E550 -:100E4000D90719F48091F60126C0CB3020E5D207EE -:100E500021F48091F6018F7E1FC0CD3080E5D80748 -:100E600021F48091F6018F7D17C0CF3090E5D9072E -:100E700021F48091F6018F7B0FC0C13120E5D207AC -:100E800021F48091F6018F7707C0C331D04531F44A -:100E90008091F6018B7F877F8093F6018091F60128 -:100EA0000E94641E9CC08D2F99278F7099278130D6 -:100EB0009105D9F49E012370332702C0880F991F32 -:100EC0002A95E2F79C688E0144E0000F111F4A95B5 -:100ED000E1F700271370802B912B53E0CC0FDD1F1F -:100EE0005A95E1F7C076DD272FC08230910531F4A5 -:100EF000DC2FCC278E01016F106A71C08330910501 -:100F000069F4CE018370992701E010E002C0000F60 -:100F1000111F8A95E2F7C8019C680FC0049709F079 -:100F20005EC0CE018370992701E010E002C0000F7F -:100F3000111F8A95E2F7C8019A6823E0CC0FDD1FE4 -:100F40002A95E1F7C07ED7708C010C2B1D2B47C072 -:100F5000DF708E01106243C000E010E040C08E01DF -:100F60003EC001E810E43BC003E810E438C002EEE4 -:100F700014E435C009EE14E432C00AEE14E42FC0C4 -:100F800005EB14E42CC006EB14E429C007EB14E4D1 -:100F900026C00CEC14E423C00DEC14E420C003E8DC -:100FA00015E41DC00AE815E41AC002E915E417C0EB -:100FB00004E915E414C001E216E411C003E216E4EA -:100FC0000EC004E216E40BC005E216E408C006E217 -:100FD00016E405C007E216E402C00AE216E4C801FE -:100FE000DF91CF911F910F91089596E0799FF001C5 -:100FF000112494E5899FE00DF11D1124E60FF11DE8 -:10100000EE0FFF1FE25EFE4F85919491803E9105A9 -:10101000E0F4803C910558F58133910509F46FC0E7 -:1010200048F48932910509F463C08A32910509F4C4 -:101030006DC072C089339105E9F082389105D1F015 -:101040008533910509F44DC067C0833E910581F158 -:1010500038F4803E9105B9F0823E9105D9F05CC02C -:10106000863E910561F1873E9105A1F155C00E9430 -:10107000C80508952091F60120FD02C021FF4CC053 -:1010800080EE90E049C08091F60180FFF9CF89E3BE -:1010900090E042C08091F60182FF0EC08091F6017F -:1010A00084FF03C080E090E037C083EE90E034C05E -:1010B0008091F60182FFF2CF82EE90E02DC0809108 -:1010C000F60183FF0BC08091F60184FDEBCF87EE24 -:1010D00090E022C08091F60183FFF5CF86EE90E08C -:1010E0001BC08091F60185FF07C089E290E014C023 -:1010F0008091F60185FFF9CF85E390E00DC08091E6 -:10110000F60186FF07C08AE290E006C08091F601F2 -:1011100086FFF9CF81E390E00E94D80508950895F5 -:101120000C948F08809165010895CF93DF9300D0D0 -:101130001F92CDB7DEB79C018091ED01843019F587 -:1011400093E099833B832A839093E9008FEF9091FA -:10115000E800815095FD06C095ED9A95F1F70000E5 -:101160008111F5CF8091E80085FF0DC040E050E08F -:1011700063E070E0CE0101960E94FF0A8091E800D2 -:101180008E778093E8000F900F900F90DF91CF91B2 -:101190000895CF93DF9300D01F92CDB7DEB7209193 -:1011A000ED01243021F522E029839B838A8383E0AB -:1011B0008093E9008FEF9091E800815095FD06C083 -:1011C00095ED9A95F1F700008111F5CF8091E80037 -:1011D00085FF0DC040E050E063E070E0CE01019675 -:1011E0000E94FF0A8091E8008E778093E8000F90BC -:1011F0000F900F90DF91CF9108952091ED01243051 -:10120000F1F422E02093E9002FEF3091E800215023 -:1012100035FD06C035ED3A95F1F700002111F5CF07 -:101220002091E80025FF0BC040E050E065E070E051 -:101230000E94FF0A8091E8008E778093E80008956D -:10124000CF93DF93EC019091ED01943009F046C00B -:1012500080910C018823D9F080910D018823B9F089 -:101260009093E9008FEF9091E800815095FD06C0C2 -:1012700095E19A95F1F700008111F5CF8091E80092 -:1012800085FF2CC040E050E060E170E017C081E0D5 -:101290008093E9008FEF9091E800815095FD06C0A2 -:1012A00095ED9A95F1F700008111F5CF8091E80056 -:1012B00085FF14C040E050E068E070E0CE010E947D -:1012C000FF0A8091E8008E778093E80080E1FE01BC -:1012D000A5E5B1E001900D928A95E1F7DF91CF91FC -:1012E00008958091EC01811109C00E94940C0E9424 -:1012F000F10C8091E20084608093E20008951092E6 -:10130000EC01089508950C94D3220E94301C0E9491 -:10131000D9220E94970F0C94900842E061EC81E082 -:101320000E940E0C42E061EC82E00E940E0C42E052 -:1013300061EC83E00E940E0C42E161EC84E00C94CD -:101340000E0C8091EF01833009F455C030F48130E8 -:1013500071F0823009F48EC008958A3009F47AC0A1 -:101360008B3009F460C0893009F09CC020C08091A6 -:10137000EE01813A09F096C08091E800877F809362 -:10138000E8008091F2019091F301892B21F460E152 -:1013900085E591E003C060E080E090E070E00E94AD -:1013A0004A0B8091E8008B778093E8000895809144 -:1013B000EE01813209F076C08091F2019091F30143 -:1013C000009719F0039709F06DC08091E800877FBE -:1013D0008093E8008091E80082FD05C08091ED01D6 -:1013E0008111F8CF5FC08091F100809365018091F9 -:1013F000E8008B7753C08091EE01813A09F052C02A -:101400008091F2019091F301892B09F04BC08091FA -:10141000E800877F8093E8008091E80080FFFCCFA0 -:1014200080910C0136C08091EE018132D9F5809116 -:10143000F2019091F301892BA9F58091E800877F53 -:101440008093E8000E94430C8091F00180930C018E -:101450000C94AD148091EE01813221F58091E80069 -:10146000877F8093E8000E94430C8091F101809374 -:10147000660108958091EE01813AA1F48091E8001F -:10148000877F8093E8008091E80080FFFCCF809107 -:1014900066018093F1008091E8008E778093E800E8 -:1014A0000C94430C089584B7877F84BF88E10FB6FE -:1014B000F89480936000109260000FBE90E080E886 -:1014C0000FB6F89480936100909361000FBE0E9464 -:1014D000E60F0E94940C0E94F10C8091E20084605F -:1014E0008093E20078940E94770F0E94E80F82E0D8 -:1014F00091E00E94920F0E94C1228091ED018530FF -:1015000069F40E94F11B8091EB018823B1F30E94E2 -:101510001C1C882391F30E94E90AEFCF0E94EE0F72 -:10152000ECCF292F332723303105C9F064F4213063 -:10153000310581F02230310509F043C08DE690E09D -:101540002AE433E042C021323105F1F02232310584 -:1015500041F137C082E190E027EB33E036C09927B4 -:101560008130910541F08230910541F0892B49F598 -:10157000E6E4F3E005C0EEE2F3E002C0E6E1F3E00A -:10158000849190E09F0121C06430D8F4E62FF0E010 -:10159000EE0FFF1FEE5DFE4F2081318189E090E06C -:1015A00014C0643070F470E0FB01EE0FFF1FE65EC4 -:1015B000FE4F20813181FB01EA5EFE4F808190E089 -:1015C00004C080E090E020E030E0FA013183208325 -:1015D000089580E189BD82E189BD09B400FEFDCF97 -:1015E0008091D8008F7D8093D8008091E000826048 -:1015F0008093E0008091E00081FDFCCF0895CF92C0 -:10160000DF92EF92FF920F931F93CF93DF93EC0142 -:101610008B016A010E94620C811133C0C114D10494 -:1016200039F0F60180819181081B190BC80FD91F71 -:10163000E12CF12C0115110519F18091E80085FDCF -:1016400016C08091E8008E778093E800C114D10421 -:1016500049F0F60180819181E80EF91EF182E08265 -:1016600085E00FC00E94620C882321F30AC0899193 -:101670008093F10001501109FFEFEF1AFF0ADACF52 -:1016800080E0DF91CF911F910F91FF90EF90DF905D -:10169000CF9008952091F4013091F5012617370776 -:1016A00048F06115710539F42091E8002E772093F8 -:1016B000E80001C0B90140E061157105A9F1209170 -:1016C000ED01222309F443C0253009F442C02091E2 -:1016D000E80023FD40C02091E80022FD32C02091A7 -:1016E000E80020FFE9CF4091F3002091F20030E0C4 -:1016F000342BFC01CF016115710559F028303105FB -:1017000040F481918093F100615071092F5F3F4F48 -:10171000F1CF41E02830310509F040E02091E800A8 -:101720002E772093E800C8CF4111C9CF0AC080911D -:10173000ED01882361F0853061F08091E80083FD40 -:101740000AC08091E80082FFF2CF80E0089582E035 -:10175000089583E0089581E008952091F401309187 -:10176000F5012617370748F06115710539F4209106 -:10177000E8002E772093E80001C0B901FC0120E0C9 -:101780006115710591F18091ED01882309F440C044 -:10179000853009F43FC08091E80083FD3DC0809111 -:1017A000E80082FD2FC08091E80080FFE9CF209102 -:1017B000F3008091F20090E0922B6115710559F0D1 -:1017C0008830910540F424912093F10031966150C6 -:1017D00071090196F2CF21E0089709F020E080918D -:1017E000E8008E778093E800CBCF2111CCCF0AC0E0 -:1017F0008091ED01882361F0853061F08091E800EF -:1018000083FD0AC08091E80082FFF2CF80E0089556 -:1018100082E0089583E0089581E00895982F97303D -:1018200058F59093E900981739F07091EC002091E9 -:10183000ED005091F00003C0242F762F50E021FFDF -:1018400019C03091EB003E7F3093EB003091ED00FA -:101850003D7F3093ED003091EB0031603093EB0031 -:101860007093EC002093ED005093F0002091EE0077 -:1018700027FF07C09F5FD3CF8F708093E90081E07F -:10188000089580E008958091EE0187FF11C0809156 -:10189000E80082FD05C08091ED018111F8CF11C0F3 -:1018A0008091E8008B770BC08091ED01882349F08F -:1018B0008091E80080FFF8CF8091E8008E778093D8 -:1018C000E80008952091E4003091E50095E640910C -:1018D000EC00842F817040FF22C08091E80080FDE1 -:1018E0001CC08091ED01882391F0853091F08091AA -:1018F000EB0085FD10C04091E4005091E5004217D7 -:10190000530729F39A01915011F784E0089582E07A -:10191000089583E0089581E0089580E0089540915E -:10192000E80042FFDECF08950E94020D0E940A0DDA -:10193000E0EEF0E0808181608083E8EDF0E080817E -:101940008F77808319BCA7EDB0E08C918E7F8C934C -:1019500080818F7E80831092EC0108950F931F93F6 -:10196000CF93DF930E94020D0E940A0DC8EDD0E0D4 -:1019700088818F77888388818068888388818F7D3C -:10198000888319BC1092ED011092E9011092EB01CD -:101990001092EA0100EE10E0F80180818B7F8083D5 -:1019A00088818160888342E060E080E00E940E0CC4 -:1019B000E1EEF0E080818E7F8083E2EEF0E08081D6 -:1019C00081608083808188608083F80180818E7F40 -:1019D0008083888180618883DF91CF911F910F91EF -:1019E0000895E8EDF0E080818F7E8083E7EDF0E000 -:1019F00080818160808384E082BF81E08093EC01FC -:101A00000C94AE0CE8EDF0E080818E7F8083109224 -:101A1000E20008951092DA001092E10008951F92FA -:101A20000F920FB60F9211242F933F934F935F9312 -:101A30006F937F938F939F93AF93BF93EF93FF9396 -:101A40008091E10082FF0BC08091E20082FF07C01D -:101A50008091E1008B7F8093E1000E94760F80915E -:101A6000DA0080FF1FC08091D80080FF1BC08091EA -:101A7000DA008E7F8093DA008091D90080FF0DC05C -:101A800080E189BD82E189BD09B400FEFDCF81E01E -:101A90008093ED010E94710905C019BC1092ED01FF -:101AA0000E947F098091E10080FF19C08091E200CF -:101AB00080FF15C08091E2008E7F8093E2008091CC -:101AC000E20080618093E2008091D8008062809380 -:101AD000D80019BC85E08093ED010E9483098091B4 -:101AE000E10084FF30C08091E20084FF2CC080E1DF -:101AF00089BD82E189BD09B400FEFDCF8091D80087 -:101B00008F7D8093D8008091E1008F7E8093E100EB -:101B10008091E2008F7E8093E2008091E2008160FC -:101B20008093E2008091E901882311F084E007C0EE -:101B30008091E30087FD02C081E001C083E08093D3 -:101B4000ED010E9485098091E10083FF29C0809109 -:101B5000E20083FF25C08091E100877F8093E10050 -:101B600082E08093ED011092E9018091E1008E7F87 -:101B70008093E1008091E2008E7F8093E20080916B -:101B8000E20080618093E20042E060E080E00E9439 -:101B90000E0C8091F00088608093F0000E94820912 -:101BA000FF91EF91BF91AF919F918F917F916F9135 -:101BB0005F914F913F912F910F900FBE0F901F900B -:101BC00018951F920F920FB60F9211242F933F93E7 -:101BD0004F935F936F937F938F939F93AF93BF9335 -:101BE000CF93DF93EF93FF93C091E900CF70809183 -:101BF000EC00D82FD17080FDD0E81092E9008091E0 -:101C0000F000877F8093F00078940E94250E109258 -:101C1000E9008091F00088608093F000CD2BCF70B8 -:101C2000C093E900FF91EF91DF91CF91BF91AF9108 -:101C30009F918F917F916F915F914F913F912F91E4 -:101C40000F900FBE0F901F9018951F93CF93DF93A7 -:101C5000CDB7DEB7AA970FB6F894DEBF0FBECDBFE3 -:101C6000EEEEF1E088E08E0F9091F10091938E13EB -:101C7000FBCF0E94A1098091E80083FF1FC18091E2 -:101C8000EE019091EF01492F50E04A30510508F0E4 -:101C900015C1FA01EA5AFF4F0C945B24803881F099 -:101CA000823809F00BC18091F2018F708093E900B6 -:101CB0008091EB0085FB882780F91092E90006C02F -:101CC0008091EA019091EB01911182609091E8007E -:101CD000977F9093E8008093F1001092F100C8C0C4 -:101CE000282F2D7F09F0EAC0882319F0823061F097 -:101CF000E5C08091F001813009F0E0C0933009F037 -:101D000080E08093EB012BC08091F001811127C00E -:101D10008091F2018F7009F4D1C08093E900209185 -:101D2000EB0020FF1CC0933021F48091EB00806217 -:101D300014C09091EB0090619093EB0021E030E0B3 -:101D4000A90102C0440F551F8A95E2F74093EA00AB -:101D50001092EA008091EB0088608093EB00109273 -:101D6000E9008091E800877F86C08111A7C01091AB -:101D7000F0011F778091E3008078812B8093E3004E -:101D80008091E800877F8093E8000E94430C809157 -:101D9000E80080FFFCCF8091E30080688093E3003F -:101DA000111102C082E001C083E08093ED0186C082 -:101DB0008058823008F082C08091F0019091F1014A -:101DC0008C3D53E0950779F583E08A838AE2898325 -:101DD0004FB7F894DE01139620E03EE051E2E32F86 -:101DE000F0E050935700E49120FF03C0E295EF70BC -:101DF0003F5FEF708E2F90E0EA3010F0C79601C081 -:101E0000C0968D939D932F5F243149F74FBF8091EA -:101E1000E800877F8093E8006AE270E0CE010196D7 -:101E20000E944A0B14C0AE014F5F5F4F6091F201F8 -:101E30000E94910ABC01892B09F440C09091E800EE -:101E4000977F9093E80089819A810E94AD0B8091E1 -:101E5000E8008B778093E80031C0803879F5809175 -:101E6000E800877F8093E8008091E9018093F1008A -:101E70008091E8008E778093E8000E94430C1EC09A -:101E800081111CC09091F0019230C0F48091E80063 -:101E9000877F8093E8009093E9010E94430C809132 -:101EA000E901811106C08091E30087FD02C081E055 -:101EB00001C084E08093ED010E948D098091E800CB -:101EC00083FF0AC08091E800877F8093E8008091BB -:101ED000EB0080628093EB00AA960FB6F894DEBF09 -:101EE0000FBECDBFDF91CF911F9108950895CF937D -:101EF0008091ED018823A1F0C091E900CF7090910D -:101F0000EC00892F817090FD80E8C82B1092E900C9 -:101F10008091E80083FD0E94250ECF70C093E900F8 -:101F2000CF91089590936C0180936B010895E09197 -:101F30006B01F0916C01309721F00190F081E02D60 -:101F4000099480E00895E0916B01F0916C01309765 -:101F500021F00280F381E02D09940895E0916B0156 -:101F6000F0916C01309721F00480F581E02D099407 -:101F700008952091690130916A018217930771F0E9 -:101F800090936A0180936901E0916B01F0916C017B -:101F9000309721F00680F781E02D09940895209173 -:101FA0006701309168018217930771F0909368017F -:101FB00080936701E0916B01F0916C01309721F003 -:101FC0000084F185E02D0994089508950C94E50F9F -:101FD0000E94361C0E94A8040C94FC1CCF92DF9235 -:101FE000EF92FF920F931F93CF93DF93CDB7DEB79E -:101FF0002B970FB6F894DEBF0FBECDBF0E94C00472 -:102000008EE6C82E81E0D82E00E010E0E02E802F72 -:102010000E94AE05F60141916F01F42EF826B1F44D -:102020000F5F1F4F0E30110589F78FEF89838A8369 -:102030001B820E943F1C8160782F9D838C83498185 -:102040005A816B818D810E94911040C09091D60180 -:1020500091FF04C08B870E94B4058B8520E030E09F -:102060004F2D50E0922FBA01022E02C07595679550 -:102070000A94E2F760FF24C02E83EF8221E030E073 -:10208000690102C0CC0CDD1C9A95E2F790E08C212E -:102090009D21892B09F420E028870E943F1C816044 -:1020A000782F9A8789874E815F8168858A850E940B -:1020B0009110F801E259FE4F8081C826C08206C007 -:1020C0002F5F3F4F2630310569F6AACF0E94E31FEC -:1020D00010916D010E94970F1817A1F00E94970FA1 -:1020E00080936D012B960FB6F894DEBF0FBECDBF67 -:1020F000DF91CF911F910F91FF90EF90DF90CF90E4 -:102100000C9490082B960FB6F894DEBF0FBECDBF8F -:10211000DF91CF911F910F91FF90EF90DF90CF90C3 -:102120000895CF93DF93CDB7DEB72B970FB6F89412 -:10213000DEBF0FBECDBF4F83588769877A878B87F5 -:10214000DE01119686E0FD0111928A95E9F785E09E -:10215000FE01379601900D928A95E1F749815A81E7 -:102160006B817C818D819E810E944B172B960FB6CF -:10217000F894DEBF0FBECDBFDF91CF9108950895D3 -:10218000CF93882309F4C2C0C82F823859F40E9423 -:10219000970F81FDBBC089E30E948E1A0E946B1BC2 -:1021A00089E30CC0833879F40E94970F80FDAEC09C -:1021B00083E50E948E1A0E946B1B83E50E94D01A51 -:1021C000CF910C946B1B843859F40E94970F82FDB9 -:1021D0009DC087E40E948E1A0E946B1B87E4EECF9D -:1021E0008CEF8C0F813A48F48C2F0E9426228111AB -:1021F0008DC08C2F0E948E1AE3CF80E28C0F883026 -:1022000048F4C77081E001C0880FCA95EAF70E94C0 -:10221000171BD6CF8BE58C0F833078F4C53A29F0A5 -:10222000C63A31F083E890E005C081E890E002C052 -:1022300082E890E0CF910C94B90F88E58C0F833140 -:1022400008F064C0C83A39F1C93A41F1CA3A49F1D3 -:10225000CB3A51F1CC3A59F1CD3A61F1C03B69F139 -:10226000CE3A71F1CF3A79F1C13B81F1C23B89F1AC -:10227000C33B91F1C43B99F1C53BA1F1C63BA9F128 -:10228000C73BB1F1C83BB9F1C93BC1F1CA3BC9F188 -:1022900080E090E038C082EE90E035C089EE90E0BA -:1022A00032C08AEE90E02FC085EB90E02CC086EB28 -:1022B00090E029C087EB90E026C08CEC90E023C032 -:1022C0008DEC90E020C083E891E01DC08AE891E0A9 -:1022D0001AC082E991E017C084E991E014C081E25C -:1022E00092E011C083E292E00EC084E292E00BC063 -:1022F00085E292E008C086E292E005C087E292E0C3 -:1023000002C08AE292E0CF910C94CF0FCF91089552 -:10231000882309F44BC0823859F40E94970F81FF3B -:1023200045C089E30E948E1A0E946B1B89E30CC092 -:10233000833871F40E94970F80FF38C083E50E94B4 -:102340008E1A0E946B1B83E50E94D01A0C946B1BA3 -:10235000843859F40E94970F82FF28C087E40E94B6 -:102360008E1A0E946B1B87E4EFCF9CEF980F913A77 -:1023700058F390E2980F983050F4877091E001C0C4 -:10238000990F8A95EAF7892F0E941D1BDFCF9BE5E5 -:10239000980F933020F480E090E00C94B90F885AA5 -:1023A000833120F480E090E00C94CF0F08958823CF -:1023B00021F00E94171B0C946B1B0895882321F0B9 -:1023C0000E941D1B0C946B1B08952F923F924F92FD -:1023D0005F927F928F929F92AF92BF92CF92DF9245 -:1023E000EF92FF920F931F93CF93DF9300D000D013 -:1023F0001F92CDB7DEB725E0FC01DE0111960190FA -:102400000D922A95E1F7FC0100811181F280E580AF -:10241000E2943FE0E32223813481232B09F472C24A -:102420001F3F19F40F3F09F46DC26C010E942A1A74 -:10243000882319F082E00E946C1AC6010E94BF1026 -:1024400009831A8369817A818F2D0E94F0198C018A -:102450000E94A5190E946C18F1100E94341B0E9462 -:10246000871A882379F0FF2069F080E2800F883096 -:1024700048F082E00E946C1A0E94871A91E0782E40 -:10248000792601C0712CE12FE295EF70F0E0E05A5F -:10249000FF4F0C945B24812F807F1F70882311F0E5 -:1024A0001295107FFF2089F0112309F4E8C180E222 -:1024B000800F883020F4812F0E94171B03C0812FCA -:1024C0000E94271B0E946B1BDAC1802F0E9488117B -:1024D000112309F4EEC1005E812F083018F40E9428 -:1024E0001D1B02C00E942D1B0E946B1BE2C1812F8D -:1024F000807F1F70803211F01295107F002319F039 -:10250000013049F132C0FF2091F0EE2091F1F1E06D -:10251000EF1204C0812F0E94471BCBC122E0E212C0 -:1025200028C00E94501B812F0E94F71922C0EE2064 -:1025300079F031E0E31208C00E94141B812309F4F2 -:10254000B8C10E94FA1904C042E0E41609F4B1C10E -:102550000E94501B12C0FF2029F051E05E1508F4C4 -:10256000A8C107C0E110A5C108C0FF2021F0E110FB -:1025700086C1812FF7C0E11089C1812FF9C0812F59 -:1025800086958695837090E0009719F0019759F031 -:1025900090C1FF2019F0C801937002C080E090E064 -:1025A0000E94B90F86C1FF2019F0C801937002C0C4 -:1025B00080E090E00E94CF0F7CC1802FFF2019F0B7 -:1025C0000E94EB1E02C00E94531F0E94D81F71C1BF -:1025D000812F837009F055C0F1106BC1802F829557 -:1025E00086958770880F880F902F9F70492F50E035 -:1025F00060E070E01A012B01082E04C0220C331C8D -:10260000441C551C0A94D2F704FF15C02FE0822EFB -:10261000912CA12CB12CA501940104C0220F331FD1 -:10262000441F551F8A95D2F7CA01B901609570956C -:102630008095909503C060E070E0CB0116951695EB -:102640001370412F50E04230510569F0433051057D -:1026500089F062297329842995294130510571F047 -:102660000E94931826C162297329842995290E9402 -:10267000AF181FC10E949318C201B1010E947718C0 -:1026800018C1FF2019F0812F817001C08695882321 -:1026900009F40FC1802F829586958770880F880F67 -:1026A000902F9F70492F50E060E070E01A012B01DD -:1026B000082E04C0220C331C441C551C0A94D2F76B -:1026C00004FF15C09FE0892E912CA12CB12CA501EF -:1026D000940104C0220F331F441F551F8A95D2F75F -:1026E000CA01B901609570958095909503C060E02E -:1026F00070E0CB01169516951370412F50E04230D3 -:10270000510569F04330510589F062297329842904 -:1027100095294130510571F00E946D19CAC0622996 -:102720007329842995290E948919C3C00E946D19B3 -:10273000C201B1010E945119BCC0802F90E0FC0180 -:10274000E05EF109E531F10508F094C0E059FF4F72 -:102750000C945B240F70812F8F71FF2031F00E9449 -:10276000EA18802F0E94D711A4C00E940B19802F55 -:102770000E94DE119EC0FF2039F0E1109AC0812F27 -:102780008F710E94301995C031E03E1508F491C058 -:10279000F6CFFF2039F0812F8F710E94EA1889C08F -:1027A000FF20C9F3812F8F710E940B1982C0FF2077 -:1027B00029F0812F8F710E94D5187BC00E94CB1801 -:1027C00078C0FF20C1F00E94F4190E941D1B0E94D6 -:1027D000261A843029F40E94651A812F8F717AC0DD -:1027E00041E04E1508F48EC01F71812F0E94EA1837 -:1027F00063E0812F0EC00E94F4190E94171B51E064 -:102800005E15F8F40E94651A0E94FA1964E0812F9F -:102810008F710F900F900F900F900F90DF91CF91CD -:102820001F910F91FF90EF90DF90CF90BF90AF90EE -:102830009F908F907F905F904F903F902F900C943F -:10284000551A81E00F900F900F900F900F90DF912D -:10285000CF911F910F91FF90EF90DF90CF90BF909D -:10286000AF909F908F907F905F904F903F902F9070 -:102870000C946C1AFF2039F0EE2009F48CCF802FD5 -:102880000E94C01016C0EE2009F48CCF802F0E9449 -:1028900088110FC0412F4F70602FC6010E94C802DF -:1028A0000E94EF1706C0412F4F70602FC6010E9493 -:1028B000B505772039F10E94261A80FD23C0F60164 -:1028C00012820E94201A0E94EA18C6010E94E51195 -:1028D0000E94201A0F900F900F900F900F90DF9191 -:1028E000CF911F910F91FF90EF90DF90CF90BF900D -:1028F000AF909F908F907F905F904F903F902F90E0 -:102900000C940B190F900F900F900F900F90DF9178 -:10291000CF911F910F91FF90EF90DF90CF90BF90DC -:10292000AF909F908F907F905F904F903F902F90AF -:1029300008950E94341B0E94441B0E94061B0E94A3 -:102940006B1B0E9489200E94D81F80E090E00E94AB -:10295000B90F80E090E00C94CF0F0E94241B0C94E0 -:1029600099140E94E519292F22952F7030E02C3000 -:1029700031054CF42A3031056CF4225031092230F3 -:102980003105A8F407C02C30310569F02F3031052E -:1029900051F00DC0803F69F018F4803E40F409C04A -:1029A000843F29F406C093FB882780F9089580E0CE -:1029B000089581E00895CF93DF9300D000D01F9257 -:1029C000CDB7DEB70F900F900F900F900F90DF9163 -:1029D000CF910895CF93DF9300D000D000D0CDB732 -:1029E000DEB726960FB6F894DEBF0FBECDBFDF91DF -:1029F000CF9108951F93CF93DF93C0917C0116E090 -:102A000080917D01C81799F0D0E01C9FF0011D9FB7 -:102A1000F00D1124E258FE4F408151816281738193 -:102A2000848195810E94EA142196C770E9CFDF91D5 -:102A3000CF911F9108954091AE015091AF016091E7 -:102A4000B0017091B1018091B2019091B3010C94E9 -:102A5000EA148091B30182958F7009F054C080917F -:102A6000B001882309F44FC080917C01A0917D01C1 -:102A70006091AE017091AF014091B1015091B201EE -:102A8000B6E08A1709F43FC090E041155105C1F145 -:102A90007F3F11F46F3FA1F1B89FF001B99FF00D96 -:102AA0001124E258FE4F218172132AC02081621343 -:102AB00027C02281211124C02381348124173507A6 -:102AC00010F421503109241B350B283C3105C0F48A -:102AD0002091B3012F7020612093B30126E0289F3D -:102AE000F001299FF00D1124ED57FE4F80818F706A -:102AF000806180838EEA91E00E94E5110C94FA14C3 -:102B000001968770BECF0895CF92DF92EF92FF9229 -:102B10000F931F93CF93DF93CDB7DEB762970FB6B6 -:102B2000F894DEBF0FBECDBF8C0185E0F801DE0159 -:102B30001D9601900D928A95E1F7D8014C9111965E -:102B40005C91119712966C9112971396CD90DC9030 -:102B500014973091AE017091AF018091B1019091C5 -:102B6000B201009709F46BC17F3F19F43F3F09F4AC -:102B700066C1E090B001EE2009F4C0C02091B3011D -:102B8000C816D90628F0F601E81BF90BCF0104C0DE -:102B9000809590958C0D9D1DFF24F394883C9105A4 -:102BA00078F0F12C207F09F0C6C07C2DD98AC88A24 -:102BB00089890E94DB148EEA91E00E94E511B1C080 -:102BC000822F807F09F046C0751314C0341312C0E1 -:102BD000611110C02F7020612093B3010E941B155A -:102BE0008EEA91E00E94E5118091B301D80115961B -:102BF0008C932EC0CD2819F15F3F11F44F3FF9F0AF -:102C0000F62E61111CC080917C0120917D0136E07F -:102C1000821709F45AC090E0389FF001399FF00DF7 -:102C20001124E258FE4F7181571306C0708147137B -:102C300003C07281711103C001968770E9CFF62E2F -:102C4000662309F418C18091B30181608093B301B8 -:102C5000F12C11C1751308C0341306C0611104C0F2 -:102C60008091B301D801C3C04D875E878D859E8555 -:102C70006A8B0E94B1146A898823E1F16623D1F13D -:102C80002091B301822F82958F7090E0029774F0AB -:102C90008091AE019091AF0198878F831986DB8672 -:102CA000CA862C87CE0107960E94E51186E0F801BE -:102CB000AEEAB1E001900D928A95E1F70E942915E4 -:102CC0000E941B15FF24F394D6C04D875E878D8527 -:102CD0009E850E94E519292F22952F7030E0223021 -:102CE00031050CF0BCC09F7009F0B6C0805E883022 -:102CF00008F4C1C0C8010E94E511E4CFC816D90686 -:102D000008F453C0F601E81BF90BCF01883C91058C -:102D100008F450C0F12C7C2DD98AC88A89890E9478 -:102D2000DB14EEEAF1E086E0DF011D928A95E9F717 -:102D30000E941B15A0C0751314C0341312C061117A -:102D400010C08091B301F8018583C8010E94E5118C -:102D500086E0EEEAF1E0DF011D928A95E9F7FE2CAC -:102D60008AC04D875E878D859E856A8B0E94B114CF -:102D70006A89882309F4BECF662309F4BBCF20916A -:102D8000B301822F82958F7090E002970CF48ECF62 -:102D90008091AE019091AF019A8389831B82DD827D -:102DA000CC822E83CE0101967FCF809590958C0D9D -:102DB0009D1DACCFF62E662309F49CCF75132EC053 -:102DC00034132CC02091B30120FD1FC0822F8295A7 -:102DD0008F70D9F0D80115962C9315978F3049F044 -:102DE0008F5F982F9295907F822F8F70892B1596E9 -:102DF0008C93C8010E94E51186E0F801AEEAB1E0CB -:102E000001900D928A95E1F793CF86E0F801AEEA42 -:102E1000B1E001900D928A95E1F72DC04D875E8754 -:102E20008D859E850E94B114811140CF8091B301A0 -:102E300081608093B301C8010E94E5111CC0662324 -:102E400009F458CF4D875E878D859E850E94B11409 -:102E5000882309F44FCF2ACF811148CF0CC02430EA -:102E600031050CF047CF9F7009F440CFF8019581F0 -:102E7000907F09F03BCF8F2D62960FB6F894DEBF9E -:102E80000FBECDBFDF91CF911F910F91FF90EF90BB -:102E9000DF90CF9008951F93CF93DF93CDB7DEB728 -:102EA0002C970FB6F894DEBF0FBECDBF4F83588767 -:102EB00069877A878B879C87CE0107960E94841545 -:102EC000882369F08F8198852A853B85232BF1F132 -:102ED0009F3F09F063C08F3F09F060C037C086E0B4 -:102EE000FE013796DE01119601900D928A95E1F769 -:102EF0006F817885EA85FB85309741F17F3F11F43A -:102F00006F3F21F120917D0130E0C901019687706A -:102F1000992740917C0150E08417950709F447C038 -:102F200069837A83FD83EC8396E0929FD001939F1F -:102F3000B00D1124A258BE4FFE01319601900D92A2 -:102F40009A95E1F780937D010E94FA1416E0809132 -:102F50007C0190917D018917C1F1189FC001112456 -:102F600082589E4F0E948415882379F1E0917C015C -:102F70001E9FF0011124E258FE4F40815181628171 -:102F80007381848195810E94EA1480917C0190E094 -:102F900001968770992780937C01D9CF4F815885FE -:102FA00069857A858B859C850E94EA14CFCF0E9423 -:102FB000AD1410927D0110927C01EEEAF1E086E002 -:102FC000DF011D928A95E9F7C1CF2C960FB6F894D0 -:102FD000DEBF0FBECDBFDF91CF911F910895EF925D -:102FE000FF920F931F93CF93DF938C01892B09F4EA -:102FF0006CC0F12CEE24E394E8012196F801849151 -:10300000843740F4843008F051C0813081F0823040 -:1030100019F15BC0853709F444C0A8F19CE7980F0B -:10302000903708F052C08F770E94881141C00E5F20 -:103030001F4FFE01C49180E28C0F883048F4C770A6 -:103040008E2D01C0880FCA95EAF70E94371B14C065 -:103050008C2F0E94C0102DC00E5F1F4FFE01C49127 -:1030600080E28C0F883058F4C7708E2D01C0880F15 -:10307000CA95EAF70E943D1B0E946B1B1AC08C2F59 -:103080000E94881116C00E5F1F4FFE01C491CC2311 -:1030900081F08FE99FE00197F1F700C00000C15077 -:1030A000F6CF0E5F1F4FFE01F49003C00E94C010C8 -:1030B0008E018F2D882309F49FCFEFE9FFE0319730 -:1030C000F1F700C000008150F5CFDF91CF911F9143 -:1030D0000F91FF90EF90089508956093B801709359 -:1030E000B9018093BA019093BB010C9499140F938A -:1030F0001F930091B8011091B9012091BA0130914C -:10310000BB01DC01CB01802B912BA22BB32B809335 -:10311000B8019093B901A093BA01B093BB011F917C -:103120000F910C9499140F931F930091B801109173 -:10313000B9012091BA013091BB01DC01CB018023A0 -:103140009123A223B3238093B8019093B901A09354 -:10315000BA01B093BB011F910F910C9499140F9376 -:103160001F930091B8011091B9012091BA013091DB -:10317000BB01DC01CB0180279127A227B3278093D5 -:10318000B8019093B901A093BA01B093BB011F910C -:103190000F910C9499141092B4011092B5011092F1 -:1031A000B6011092B7010C94991441E050E060E030 -:1031B00070E004C0440F551F661F771F8A95D2F731 -:1031C0004093B4015093B5016093B6017093B70179 -:1031D0000C94991441E050E060E070E004C0440FAA -:1031E000551F661F771F8A95D2F78091B401909181 -:1031F000B501A091B601B091B701482B592B6A2BAC -:103200007B2B4093B4015093B5016093B60170934A -:10321000B7010C94991441E050E060E070E004C004 -:10322000440F551F661F771F8A95D2F7409550951A -:10323000609570958091B4019091B501A091B6010F -:10324000B091B701482359236A237B234093B401EB -:103250005093B5016093B6017093B7010C94991423 -:1032600041E050E060E070E004C0440F551F661F6D -:10327000771F8A95D2F78091B4019091B501A09102 -:10328000B601B091B701482759276A277B27409399 -:10329000B4015093B5016093B6017093B7010C94DB -:1032A00099140F931F930091B4011091B5012091CF -:1032B000B6013091B701DC01CB01802B912BA22B01 -:1032C000B32B8093B4019093B501A093B601B09352 -:1032D000B7011F910F910C9499140F931F930091B4 -:1032E000B4011091B5012091B6013091B701DC0114 -:1032F000CB0180239123A223B3238093B401909325 -:10330000B501A093B601B093B7011F910F910C9432 -:1033100099140F931F930091B4011091B50120915E -:10332000B6013091B701DC01CB0180279127A2279C -:10333000B3278093B4019093B501A093B601B093E5 -:10334000B7011F910F910C9499140895CF92DF92B9 -:10335000EF92FF920F931F93CF93DF938C01C09056 -:10336000B801D090B901E090BA01F090BB01809112 -:10337000B4019091B501A091B601B091B701C82AEE -:10338000D92AEA2AFB2ACFE1D0E0D701C6010C2EC8 -:1033900004C0B695A795979587950A94D2F780FFB4 -:1033A00006C0B8018C2F0E94F507019721F42197E0 -:1033B00060F780E001C08C2FDF91CF911F910F91BA -:1033C000FF90EF90DF90CF900895CF93DF93EC01C3 -:1033D0000E94A619BE010E94F507DF91CF910895C2 -:1033E000CB010E94E51908958091C1010895809351 -:1033F000C10108951092C10108950E943F1C2091BF -:10340000BF013091C0018217930750F00E943F1C0A -:103410002091BF013091C001821B930B9C010AC017 -:103420000E943F1C2091BF013091C0012095309532 -:10343000280F391F81E0283B3B4008F480E00895C5 -:103440008091BE0185958595859508958091BE01F1 -:10345000877008950E943F1C2091BC013091BD01EE -:1034600082179307A8F00E943F1C2091BC01309165 -:10347000BD01821B930B883B9B4010F480E013C07E -:103480008091BE0182FB882780F991E089270BC0DB -:103490000E943F1C2091BC013091BD0120953095C8 -:1034A000820F931FE8CF8170089598E0899F900163 -:1034B0001124262B2093BE010E94EA180E943F1C73 -:1034C0009093BD018093BC0108951092BE011092AB -:1034D000BD011092BC0108952091BE018095822308 -:1034E0008093BE01982F977089F430E0482F5527BC -:1034F00047FD50952417350749F0859585958595A5 -:103500000E940B191092BD011092BC010895909178 -:10351000BE01977081E009F480E0089590910C015C -:10352000992321F090910D01911109C020910E0174 -:1035300030910F01F90132969FEF40E01FC0982FA4 -:103540009695969596959F3050F5E0910E01F091E5 -:103550000F01E90FF11D877021E030E0A90102C0E1 -:10356000440F551F8A95E2F7CA019181892B818307 -:1035700008959F3F39F04F5F4E3041F051915813FD -:10358000F8CF0DC05111F7CF942FF5CF9F3F39F0F1 -:10359000F901E90FF11D97FDFA95828308950895C9 -:1035A00090910C01992321F090910D01911109C086 -:1035B00020910E0130910F01F9013296205F3F4FAB -:1035C0001FC0982F9695969596959F30F0F4E091B0 -:1035D0000E01F0910F01E90FF11D877021E030E03D -:1035E000A90102C0440F551F8A95E2F7CA018095D0 -:1035F00091818923818308953196E217F30729F099 -:1036000090819813F9CF1082F7CF089581E090E070 -:10361000E0910E01F0910F01E80FF91F1082019661 -:1036200080319105A9F708958091D5010895909171 -:10363000D501892B8093D501089580959091D5016E -:1036400089238093D50108951092D5010895909112 -:10365000D401892B8093D401089580959091D40151 -:1036600089238093D40108951092D40108959091F4 -:10367000D301892B8093D301089580959091D30134 -:1036800089238093D30108951092D30108958093E4 -:10369000C2010E943F1C9093C0018093BF01089516 -:1036A0001092C2011092C0011092BF010895809142 -:1036B000C201089580910E0190910F01FC01319695 -:1036C0009C01205F3F4F80E0919191118F5FE21745 -:1036D000F307D1F70895E0910E01F0910F01809169 -:1036E000D5018083E0910E01F0910F0190818091CE -:1036F000D401892B8083E0910E01F0910F0190811C -:103700008091D301892B80838091C201882399F015 -:103710000E94FD1981110E94501BE0910E01F09151 -:103720000F0190818091C201892B80830E945A1BD6 -:1037300081110E94501B80910E0190910F010C94F9 -:10374000A30FCF92DF92EF92FF926C01EE24FF2441 -:10375000C114D104E104F10421F0C701B60120E154 -:1037600001C020E0C72ED82EE92EFF24C114D104B9 -:10377000E104F10419F0285FC701B6016B017C0177 -:1037800054E0F694E794D794C7945A95D1F7C114AE -:10379000D104E104F10419F02C5FC701B6016B01FB -:1037A0007C0142E0F694E794D794C7944A95D1F708 -:1037B000C114D104E104F10419F02E5FC701B60170 -:1037C000DC01CB01B695A79597958795892B8A2B18 -:1037D0008B2B09F02F5F822FFF90EF90DF90CF901F -:1037E00008958091ED01843021F11092D70120E4F9 -:1037F00088E190E00FB6F894A895809360000FBE22 -:103800002093600080E00E94900883B7817F8460ED -:1038100083BF83B7816083BF7894889583B78E7F99 -:1038200083BF88E10FB6F894809360001092600027 -:103830000FBE089508950895CF930E941A1C0E9408 -:10384000C0040E941B1CC0E08C2F0E94AE05811199 -:1038500004C0CF5FCE30C1F701C081E0CF910895A1 -:103860000E94AD140E94970F0C94900882E084BDD2 -:1038700093E095BD9AEF97BD80936E0008952FB7A2 -:10388000F8948091D8019091D901A091DA01B0917A -:10389000DB012FBF0895CF92DF92EF92FF920F933B -:1038A0001F932FB7F8944091D8015091D90160919E -:1038B000DA017091DB012FBF6A017B01EE24FF2446 -:1038C0008C0120E030E0C016D106E206F30610F4C9 -:1038D000415051099A01281B390BC9011F910F91C1 -:1038E000FF90EF90DF90CF9008951F920F920FB648 -:1038F0000F9211248F939F93AF93BF938091D80120 -:103900009091D901A091DA01B091DB010196A11D3E -:10391000B11D8093D8019093D901A093DA01B0939F -:10392000DB01BF91AF919F918F910F900FBE0F90D0 -:103930001F9018950E94940CF8942FEF87EA91E657 -:10394000215080409040E1F700C0000087E090EBFC -:10395000DC018093F7019093F801A093F901B093F3 -:10396000FA019CE088E10FB6F894A8958093600076 -:103970000FBE90936000FFCFEF92FF920F931F93C3 -:10398000CF93DF93D82FC0E08C2F0E94AE0500E0CC -:1039900010E0E82EF12CC701002E02C09595879506 -:1039A0000A94E2F780FD06C00F5F1F4F0630110535 -:1039B00091F709C0602F7C2F80E00E94B605D813D4 -:1039C000F3CF81E004C0CF5FCE30F1F680E0DF912D -:1039D000CF911F910F91FF90EF900895CF93C82F33 -:1039E0008CE20E94BC1C882321F08C2FCF910C9478 -:1039F000BC1C80E0CF910895CF930E94431E81119B -:103A000002C00E94291EC5E6C15049F00E94C004B0 -:103A10008FE39CE90197F1F700C00000F5CF89E240 -:103A20000E94EE1C811113C18AE20E94EE1C8111DA -:103A30000E94291E85E00E94EE1C81110E949A1CA2 -:103A40000E944E1E8093D60187E00E94EE1C8823C0 -:103A5000A9F18BE10E94EE1C882351F08091D601E0 -:103A600081FB222720F991E0922790FB81F90EC07B -:103A70008EE00E94EE1C882361F08091D60182FBCB -:103A8000222720F991E0922790FB82F98093D601BA -:103A900015C080E10E94EE1C9091D601882341F070 -:103AA00093FB222720F981E0822780FB93F904C051 -:103AB000892F809580FB90F99093D6018091D60153 -:103AC0000E94521E0E94601E8093F60180EE0E94AA -:103AD000EE1C882341F08091F601982F909590FB81 -:103AE00080F98093F60189E30E94EE1C882359F047 -:103AF0008091F60181FB222720F991E0922790FB2B -:103B000081F98093F60182EE0E94EE1C882359F021 -:103B10008091F60182FB222720F991E0922790FB09 -:103B200082F98093F60186EE0E94EE1C882359F0FC -:103B30008091F60183FB222720F991E0922790FBE8 -:103B400083F98093F60183EE0E94EE1C882359F0DE -:103B50008091F60184FB222720F991E0922790FBC7 -:103B600084F98093F60185E30E94EE1C882359F0C6 -:103B70008091F60185FB222720F991E0922790FBA6 -:103B800085F98093F60181E30E94EE1C882359F0A9 -:103B90008091F60186FB222720F991E0922790FB85 -:103BA00086F98093F60181E10E94EE1C882359F08A -:103BB0008091F60187FB222720F991E0922790FB64 -:103BC00087F98093F6018091F6010E94641E80912E -:103BD000F60187FB882780F980930D0187E20E9418 -:103BE000EE1CC82F8EE10E94EE1C8111C2608FE195 -:103BF0000E94EE1C8111C46080E20E94EE1C8111C3 -:103C0000C86081E20E94EE1C8111C06182E20E94C4 -:103C1000EE1C8111C06283E20E94EE1C8111C0641F -:103C200084E20E94EE1C882311F0C06802C0CC23FD -:103C300029F08C2F0E945B1E6C2F03C00E94571E20 -:103C4000682F70E080E090E0CF910C946D18CF91D8 -:103C500008956DEE7EEF80E090E00E94952460E094 -:103C600082E090E00E94832460E083E090E00E9484 -:103C7000832460E084E090E00E94832460E085E09B -:103C800090E00C94832480E090E00E947D2421E069 -:103C90008D3E9E4F09F020E0822F089582E090E053 -:103CA0000C947524682F82E090E00C94832483E0C8 -:103CB00090E00C947524682F83E090E00C948324AA -:103CC00084E090E00C947524682F84E090E00C94DC -:103CD00083248091DE0180FF0BC06091130185E099 -:103CE000689FB001112475956795759567952BC0F0 -:103CF00081FF09C06091130185E0689FB001112424 -:103D00007595679520C082FF07C06091130185E01B -:103D1000689FB001112417C09091DF019923D1F061 -:103D200060911201961788F72091130185E0289F72 -:103D300090011124929FA001939F500D112470E0D7 -:103D4000CA010E9447246038710540F4611571056D -:103D500039F002C065E070E0862F08958FE708957E -:103D600081E008958091DE0180FF08C0609111011B -:103D700070E0759567957595679521C081FF06C0C0 -:103D80006091110170E07595679519C082FF04C0BC -:103D90006091110170E010C09091DF019923C1F092 -:103DA000609110019617A0F780911101899FC001C1 -:103DB000112470E00E9447246038710528F46115D1 -:103DC000710521F0862F08958FE7089581E0089509 -:103DD00061E070E0F4CF803F21F40E94691E81957C -:103DE00004C0813F29F40E94691E8093E201089576 -:103DF000823F21F40E94691E819504C0833F29F40B -:103E00000E94691E8093E1010895893F19F40E9480 -:103E1000B21E05C08A3F31F40E94B21E8195809384 -:103E2000E30108958B3F21F40E94B21E819504C0E6 -:103E30008C3F29F40E94B21E8093E4010895843FD0 -:103E400021F48091E001816017C0853F21F48091C9 -:103E5000E001826011C0863F21F48091E00184601E -:103E60000BC0873F21F48091E001886005C0883F46 -:103E700031F48091E00180618093E00108958D3FED -:103E800021F48091DE0181600BC08E3F21F480918E -:103E9000DE01826005C08F3F29F48091DE018460DD -:103EA0008093DE010895803F39F48091E20187FF1D -:103EB0006CC01092E20169C0813F29F48091E20157 -:103EC0001816BCF362C09091E101823F29F497FF7C -:103ED0005CC01092E10159C0833F19F41916CCF36C -:103EE00054C0893F41F48091E30118160CF04DC095 -:103EF0001092E3014AC08A3F29F48091E30187FFD1 -:103F000044C0F6CF8B3F39F48091E40187FF3DC078 -:103F10001092E4013AC08C3F29F48091E401181614 -:103F2000BCF333C0843F21F48091E0018E7F17C041 -:103F3000853F21F48091E0018D7F11C0863F21F4FF -:103F40008091E0018B7F0BC0873F21F48091E001DD -:103F5000877F05C0883F31F48091E0018F7E809398 -:103F6000E00113C08D3F21F48091DE018E7F0BC0F4 -:103F70008E3F21F48091DE018D7F05C08F3F29F4B3 -:103F80008091DE018B7F8093DE018091E1018111C0 -:103F90000EC08091E20181110AC08091E30181117C -:103FA00006C08091E401811102C01092DF010895E2 -:103FB00080EE91E00E94AE0F0E943F1C9093DD01C5 -:103FC0008093DC0108951F93CF93DF938091DC01F0 -:103FD0009091DD010E944B1CAC019091DF0199236F -:103FE00021F02091140130E006C0209115018AE0F3 -:103FF000289F900111244217530708F486C080912E -:10400000E101C091E201D091E3011091E40181113D -:1040100007C0C11176C0D11174C0111172C075C032 -:104020009F3F19F09F5F9093DF01181624F40E94C0 -:10403000691E8093E1018091E10187FF05C00E9424 -:10404000691E81958093E1011C1624F40E94691E6B -:104050008093E2018091E20187FF05C00E94691E02 -:1040600081958093E2016091E101662339F1C0916D -:10407000E201CC2319F1772767FD7095872F972FE1 -:104080000E94582323E333E343E35FE30E94BC230E -:104090000E9425236093E1016C2F772767FD7095BF -:1040A000872F972F0E94582323E333E343E35FE3F3 -:1040B0000E94BC230E9425236093E2011D1624F474 -:1040C0000E94B21E8093E3018091E30187FF05C047 -:1040D0000E94B21E81958093E301111624F40E9480 -:1040E000B21E8093E4018091E40187FF05C00E9425 -:1040F000B21E81958093E401DF91CF911F910C94C2 -:10410000D81F9F3F09F08ECF96CFDF91CF911F919F -:104110000895E0EEF1E085E0DF011D928A95E9F770 -:104120001092DF011092DE010895833081F128F4AE -:10413000813059F08230D1F00895853009F449C0BA -:10414000B8F1863009F456C0089580911501262FE4 -:1041500030E0280F311D2F3F310524F4680F6093A4 -:10416000150108958FEF8093150108958091140132 -:10417000262F30E0280F311D2F3F310524F4680F22 -:104180006093140108958FEF809314010895809136 -:104190001301262F30E0280F311D2F3F310524F465 -:1041A000680F6093130108958FEF809313010895B2 -:1041B00080911201262F30E0280F311D2F3F31054D -:1041C00024F4680F6093120108958FEF8093120119 -:1041D000089580911101262F30E0280F311D2F3FC7 -:1041E000310524F4680F6093110108958FEF8093D7 -:1041F0001101089580911001262F30E0280F311D04 -:104200002F3F310524F4680F6093100108958FEF5C -:10421000809310010895833011F128F4813049F022 -:10422000823091F00895853081F120F18630C1F11E -:10423000089580911501681720F4861B809315015D -:10424000089510921501089580911401681720F4C3 -:10425000861B809314010895109214010895809193 -:104260001301681720F4861B8093130108951092A0 -:104270001301089580911201681720F4861B809322 -:10428000120108951092120108958091110168178A -:1042900020F4861B80931101089510921101089556 -:1042A00080911001681720F4861B809310010895F7 -:1042B0001092100108950F931F938D3109F46BC074 -:1042C00008F03FC08E3009F47FC0C0F4873009F495 -:1042D00069C068F4863009F0B1C08091D601817F51 -:1042E0008E7F8093D60181E08093E601A8C088305C -:1042F00009F4A2C08B3009F49FC0A0C0863109F434 -:104300009BC078F4803109F472C0813109F096C005 -:104310000E94AD1490910D0181E0892780930D01D9 -:104320008BC0893109F488C08B3109F087C0809136 -:10433000D60181FB222720F991E0922790FB81F999 -:104340004CC0853309F470C048F4873209F46CC05E -:1043500008F459C0893209F467C070C0833438F456 -:104360008A3308F04EC0883309F466C067C08334CE -:1043700009F45AC0883409F061C00E94AD140FEFEF -:1043800013ED20E3015010402040E1F700C0000091 -:104390000E949A1C51C00E94DF220E94970F0E9427 -:1043A00090084AC09091D601892F8095817080FB3A -:1043B00090F929F0966098609093D60140C0997F5B -:1043C000977F9093D60138C08091D60182FB222737 -:1043D00020F991E0922790FB82F98093D6019923EE -:1043E00059F18091D60181608093D60125C08091DA -:1043F000D60183FB222720F991E0922790FB83F9D5 -:10440000ECCF895301C08D5141E050E060E070E095 -:104410008A019B0104C0000F111F221F331F8A95C0 -:10442000D2F7C901B80104C061E070E080E090E01B -:104430000E946D180E94AD1481E001C080E01F91C0 -:104440000F91089580E0089580E00895CF93C82FDC -:104450008091E601813079F018F08230E9F187C06F -:10446000E0910E01F0910F018081813169F082327B -:1044700009F07FC009C0E0910E01F0910F01808129 -:10448000813111F0823261F48C2F0E94222281113D -:1044900004C08C2F0E945B211DC081E090E01AC0F7 -:1044A0008C2F0E942422811114C0C43179F048F469 -:1044B000CB3079F0C03109F060C082E08093E60132 -:1044C00008C0C93219F0C83321F057C01092E60174 -:1044D00054C081E0817053C0C93289F118F5C431EC -:1044E00071F1A8F4C73009F046C08AE08093150145 -:1044F00094E19093140193E090931301809312013F -:1045000088E08093110188E28093100134C0CE517D -:10451000C63088F5EC2FF0E0E65DFE4F8081809399 -:10452000E50129C0CE34E9F020F4CB3421F56AE06E -:1045300013C0C13579F0C235F1F461E00DC080914E -:10454000E501882319F01092E50115C081E0809300 -:10455000E60115C061E006C08091E5010E9495204A -:104560000AC06AE08091E5010E940B2104C010920C -:10457000E60180E004C081E002C080E0ABCFCF91D3 -:104580000895E1E8F0E08081886080838081816027 -:1045900080838FB7F89493E09093890090ED909387 -:1045A00088008FBF0895EFE6F0E08081826080830D -:1045B0000895EFE6F0E080818D7F80830895EFE637 -:1045C000F0E0908182E08927808308951F920F9206 -:1045D0000FB60F9211242F933F934F935F936F93D6 -:1045E0007F938F939F93AF93BF93EF93FF938091AC -:1045F000E7019091E80101969093E8018093E7012B -:10460000811103C082E00E949008E091E801E695E4 -:10461000E695F0E0EC53FB4FE4918091E7018E13B7 -:1046200003C080E00E949008FF91EF91BF91AF918D -:104630009F918F917F916F915F914F913F912F91BA -:104640000F900FBE0F901F90189504D06894B11171 -:104650008DC0089570D088F09F5790F0B92F99279A -:10466000B751A0F0D1F0660F771F881F991F1AF07D -:10467000BA95C9F712C0B13081F077D0B1E0089592 -:1046800074C0672F782F8827B85F39F0B93FCCF313 -:10469000869577956795B395D9F73EF49095809573 -:1046A000709561957F4F8F4F9F4F0895E89409C093 -:1046B00097FB3EF490958095709561957F4F8F4F55 -:1046C0009F4F9923A9F0F92F96E9BB279395F6956B -:1046D000879577956795B795F111F8CFFAF4BB0FE9 -:1046E00011F460FF1BC06F5F7F4F8F4F9F4F16C04D -:1046F000882311F096E911C0772321F09EE8872FD7 -:10470000762F05C0662371F096E8862F70E060E092 -:104710002AF09A95660F771F881FDAF7880F96950B -:10472000879597F9089557FD9058440F551F59F0F4 -:104730005F3F71F04795880F97FB991F61F09F3F8E -:1047400079F087950895121613061406551FF2CFB7 -:104750004695F1DF08C0161617061806991FF1CF07 -:1047600086957105610508940895E894BB2766272E -:104770007727CB0197F908950BD078C069D028F03E -:104780006ED018F0952309F05AC05FC01124EECF07 -:10479000CADFA0F3959FD1F3950F50E0551F629F9C -:1047A000F001729FBB27F00DB11D639FAA27F00D8A -:1047B000B11DAA1F649F6627B00DA11D661F829FB1 -:1047C0002227B00DA11D621F739FB00DA11D621F96 -:1047D000839FA00D611D221F749F3327A00D611DB3 -:1047E000231F849F600D211D822F762F6A2F112495 -:1047F0009F5750408AF0E1F088234AF0EE0FFF1FE8 -:10480000BB1F661F771F881F91505040A9F79E3F1E -:10481000510570F014C0AACF5F3FECF3983EDCF373 -:10482000869577956795B795F795E7959F5FC1F75B -:10483000FE2B880F911D9695879597F9089597F906 -:104840009F6780E870E060E008959FEF80EC089536 -:1048500000240A941616170618060906089500245F -:104860000A9412161306140605060895092E0394D9 -:10487000000C11F4882352F0BB0F40F4BF2B11F44D -:1048800060FF04C06F5F7F4F8F4F9F4F089597FB6E -:10489000072E16F4009407D077FD09D00E946124FA -:1048A00007FC05D03EF4909581959F4F0895709533 -:1048B00061957F4F0895EE0FFF1F0590F491E02D55 -:1048C0000994AA1BBB1B51E107C0AA1FBB1FA61757 -:1048D000B70710F0A61BB70B881F991F5A95A9F7A9 -:1048E00080959095BC01CD010895F999FECF92BDB8 -:1048F00081BDF89A992780B50895A8E1B0E042E01B -:1049000050E00C949D24262FF999FECF92BD81BDD5 -:10491000F89A019700B4021639F01FBA20BD0FB6FD -:10492000F894FA9AF99A0FBE08950196272F0E94DB -:1049300084240C948324DC01CB01FC01F999FECF83 -:1049400006C0F2BDE1BDF89A319600B40D92415017 -:0A4950005040B8F70895F894FFCF27 -:10495A00200292082009FD08C90895080101C3012F -:10496A0028080A03140A3F4D36398504380402041C -:10497A00C9035C0375038E03A7030102030405063A -:04498A000708090011 +:100000000C9474020C94B8020C94B8020C94B802CC +:100010000C94B8020C94B8020C94B8020C94B80278 +:100020000C94B8020C94B8020C94ED0C0C94BF0D17 +:100030000C94141C0C94B8020C94B8020C94B802E2 +:100040000C94B8020C94B8020C94B8020C94B80248 +:100050000C94B8020C947C1C0C94B8020C94B8025A +:100060000C94B8020C94B8020C94B8020C94B80228 +:100070000C94B8020C94B8020C94B8020C94B80218 +:100080000C94B8020C94B8020C94B8020C94B80208 +:100090000C94B8020C94B8020C94B8020C94B802F8 +:1000A0000C94B8020C94B8020C94B8022C0E4E0EAC +:1000B0003C0F4E0E3C0F930EB60E3C0F0B0F1E0F57 +:1000C00029122912551255129D12BB1237143714DA +:1000D000C61237147B137B132814371437143114CA +:1000E0008813881388138813881388138813881338 +:1000F0008813881388138813881388138813881328 +:100100009913A713AE13B513BF13021902E300012D +:10011000E3011900020602E30001E30106000213F5 +:100120000001E00104020402E001130002290001C1 +:10013000E00104020402E00129000000F4A2002210 +:1001400030A135002B003171C200C10000001E003B +:10015000140004001D0001544D001F001A00160079 +:100160001B00E0004C002000080007000600E20031 +:100170002A002100150009001900E3004A002200AE +:1001800017000A00050000000A3029006B77000004 +:100190006D7F00000B3066006C7700006E7F000002 +:1001A0000C3023001C000B00110000000D30240057 +:1001B00018000D001000E7004B0025000C000E0099 +:1001C0003600E6002C00260012000F0037002F71C9 +:1001D00028002700130033003800C3004E002D0014 +:1001E0002E003471C200C10000000000FF00FE00BC +:1001F000FD00000000000000000000000000010001 +:100200000000F400F900F200FB0000000000F5001F +:10021000F000F100000000000000F600FA00F3001A +:10022000FC000000000000000000000000000000D2 +:1002300000000000000000000000000000002B0291 +:100240002B0000005800000000009C005F005C00D4 +:10025000590000000000540060005D005A00620078 +:100260000000550061005E005B0063000000230297 +:100270005700560067008500010026022702000093 +:10028000000001000000000000000000000000006D +:100290000000000000003900E100010000003A0009 +:1002A000AD00B0000000000000003B00BC00AC004E +:1002B0000000010000003C00AF00AE0000000100A3 +:1002C00000003D00BB00AB000000010000003E004C +:1002D000000000000000000000003F0001000000DE +:1002E00001000000000040000100000001000000CB +:1002F000000041000000500000000000000042002B +:100300000000510000000100000043000000520006 +:10031000000001000000440000004F000000010048 +:100320000000450000000000000000000000A900DF +:10033000AA00A800E50001000000160345007200B5 +:1003400067006F0044006F007800200045005A00ED +:10035000000016034500720067006F0044006F0044 +:100360007800200045005A00000004030904090237 +:100370006D00040100A0FA0904000001030101005E +:10038000092111010001223F000705810308000A2D +:1003900009040100010301020009211101000122E9 +:1003A0004D000705820308000A090402000103004A +:1003B000000009211101000122360007058303080E +:1003C000000A0904030001030000000921110100D3 +:1003D00001223900070584031000011201100100F9 +:1003E000000008EDFE0713010001020001050109EC +:1003F00006A101050719E029E715002501950875F3 +:1004000001810205081901290595057501910295DB +:10041000017503910105071900297715002501953C +:100420007875018102C005010980A10185021601CC +:100430000026B7001A01002AB70075109501810047 +:10044000C0050C0901A1018503160100269C021AB2 +:1004500001002A9C02751095018100C00501090266 +:10046000A1010901A10005091901290515002501AE +:10047000950575018102950175038101050109301A +:1004800009311581257F9502750881060938158186 +:10049000257F950175088106050C0A38021581250E +:1004A0007F950175088106C0C005010906A10105F7 +:1004B0000719E029E71500250195087501810295C6 +:1004C0000175088101050819012905950575019136 +:1004D000029501750391010507190029FF150025F3 +:1004E000FF950675088100C011241FBECFEFDAE02A +:1004F000DEBFCDBF04B603FE24C08091F30190910E +:10050000F401A091F501B091F6018730904BA7401E +:10051000B04BB9F41092F3011092F4011092F5016E +:100520001092F60114BE84B7877F84BF88E10FB6AE +:10053000F89480936000109260000FBEE0E0FFE34B +:10054000099511E0A0E0B1E0E0E9F8E402C005900F +:100550000D92A433B107D9F711E0A4E3B1E001C0D3 +:100560001D92A33FB107E1F70E94330A0C94462481 +:100570000C940000FC016B3079F018F46A3031F013 +:100580001DC06C3079F06D3099F018C082818111F6 +:1005900018C08CE291E008958281811115C08EE12E +:1005A00091E008958281811112C084E191E0089563 +:1005B000828181110FC08AE091E0089580E090E08F +:1005C00008958FE291E0089581E291E0089589E134 +:1005D00091E008958FE091E008950895CF936091A0 +:1005E000B2017091B3018091B4019091B5010E9464 +:1005F0007F1BC82F56985E9825982D9826982E9880 +:1006000027982F988FE090E090938900809388003E +:1006100090938B0080938A0090938D0080938C0040 +:10062000CC2329F0C13029F4C093340102C01092C8 +:10063000340180913401813011F4279A2F9A0E945D +:10064000750F867011F0259A2D9AC23041F40E94E0 +:10065000081A811104C027982F98269A2E9AE091A3 +:100660000E01F0910F018081982F927259F08D7DCB +:1006700049F48FEF90E09093890080938800259A49 +:100680002D9A08C00E94351B827221F00E94DB194E +:10069000882379F3CF9108950C94EE0256985E98D2 +:1006A00025982D9826982E9827982F988FEF90E0D0 +:1006B000909389008093880090938B0080938A00A8 +:1006C00090938D0080938C00259A2D9A2FEF80E7D0 +:1006D00092E0215080409040E1F700C00000269A4F +:1006E0002E9A2FEF80E792E0215080409040E1F772 +:1006F00000C00000279A2F9A2FEF80E792E0215048 +:1007000080409040E1F700C0000025982D982FEF21 +:1007100080E792E0215080409040E1F700C0000067 +:1007200026982E982FEF80E792E02150804090404D +:10073000E1F700C0000027982F9856985E982598FA +:100740002D9826982E9827982F98089589EA8093B7 +:10075000800089E08093810024982C983F988AB18A +:100760008F748AB96E98479A8BB1806B8BB9769AE1 +:100770000E944E030C94ED0280E280930001809170 +:10078000350181110EC00E940B0481E08093350178 +:100790002FEF83ED90E3215080409040E1F700C0BF +:1007A000000080E40E9411048093000181112EC09A +:1007B0000E943B0480930001811128C00E943B04E9 +:1007C00080930001811122C08FE30E943B0480933B +:1007D000000181111BC00E94330480E40E941104B7 +:1007E00080930001811112C08CE00E943B04809331 +:1007F000000181110BC00E943B0480930001811114 +:1008000005C08FE30E943B04809300010E943304E3 +:100810008091000108951092B9008AE08093B80099 +:10082000089594EA9093BC009091BC0097FFFCCF90 +:100830009091B900987F983021F0903111F081E0CB +:1008400008958093BB0084E88093BC008091BC0035 +:1008500087FFFCCF8091B900887F883111F0803408 +:1008600071F780E0089584E98093BC008091BC001A +:1008700084FDFCCF08958093BB0084E88093BC0086 +:100880008091BC0087FFFCCF9091B900987F81E0F8 +:10089000983209F480E0089584E88093BC00809148 +:1008A000BC0087FFFCCF8091BB00089580910001C0 +:1008B000811115C080E40E94110480930001811110 +:1008C0000CC082E10E943B0480930001811105C0AD +:1008D0008FEF0E943B04809300010E94330484B197 +:1008E000807F84B985B1807F85B98AB1837F8AB9D9 +:1008F0008BB1837F8BB93E98469808950E94BC03C4 +:10090000809300010E94560480B38C7080BB81B339 +:10091000836F81BBA7E3B1E0E5E4F1E08EE08E0FE9 +:1009200011921D928E13FCCF0C94A603BF92CF920E +:10093000DF92EF92FF920F931F93CF93DF938091FB +:100940000001882379F0809136018F5F8093360112 +:10095000811108C00E94BC0380930001811102C074 +:100960000E944E0307E311E0C0E0D0E0DD24D39401 +:1009700082E0C82EEE24E394F12CC730D10500F5B7 +:1009800080910001811164C080E40E941104809371 +:100990000001811112C082E10E943B04809300019A +:1009A00081110BC0C7010C2E01C0880F0A94EAF711 +:1009B00080950E943B04809300010E94330448C04C +:1009C000CA30A1F028F4C83059F0C93061F005C030 +:1009D000CC3089F070F0CD3089F0209A289810C082 +:1009E000219A29980DC0229A2A980AC0239A2B98F6 +:1009F00007C0529A01C0539A5B9802C03E9A46982B +:100A000090EA9A95F1F79FB1799902C082E001C00E +:100A100080E091709D25982B7C9902C084E001C0F4 +:100A200080E0892B7D9902C038E001C030E0832B43 +:100A30007E9902C020E101C020E0822B9FB19095F9 +:100A4000991F9927991F9295990F907E892B0FC016 +:100A500080910001811149C080E40E9411048093BB +:100A60000001882379F1B12C0E9433048B2DF80109 +:100A70009081981719F08083C09201010E9456045A +:100A800021960F5F1F4FCE30D10509F076CF8091B0 +:100A90000101882361F1815080930101882339F09D +:100AA0008FE99FE00197F1F700C0000020C0A5E4A6 +:100AB000B1E0E7E3F1E0CF01825F91919D938E1366 +:100AC000FCCF15C083E10E943B048093000181119B +:100AD000CACF81E40E941104809300018111C3CF29 +:100AE0000E944C04B82EB094BFCF80E0C0CF0E94CB +:100AF0004C0381E0DF91CF911F910F91FF90EF9018 +:100B0000DF90CF90BF900895E82FF0E0EB5BFE4FB1 +:100B1000808108950895089596E0799FF001112449 +:100B200094E5899FE00DF11D1124E60FF11DEE0FF4 +:100B3000FF1FEE5BFE4F859194910895880F991FDA +:100B4000FC01E654F040859194910895880F991F17 +:100B5000FC01E65CFE4F8591949108950F931F93DD +:100B6000CF93DF93EC018115904350F5C11580E2DE +:100B7000D80708F0B3C0CB3BD10590F4C83AD105F3 +:100B800008F05AC0C53AD10508F04BC0C430D105B1 +:100B900008F0CCC1219709F0C6C101E010E006C2FF +:100BA000CF3FD10511F008F0C1C1C03FD10508F019 +:100BB00092C0CE01805E9109089708F4B7C1B3C115 +:100BC000C11591E5D907A8F4C23020E5D20708F095 +:100BD0009EC0C11580E5D80709F485C008F091C012 +:100BE000C11520E4D20708F09EC1DD278E01106CEC +:100BF000DDC1C11580E8D80758F4C11590E7D907C1 +:100C000008F08DC1C11520E6D20708F422C18BC1BE +:100C1000C11580E9D80708F086C1DF708E01106A1F +:100C2000C5C1C53AD10509F483C1C63AD10509F059 +:100C300082C102E810E4BAC1C83AD10509F47EC104 +:100C4000C93AD10509F47DC1CA3AD10509F47CC17C +:100C5000CB3AD10509F47BC1CC3AD10509F47AC16C +:100C6000CD3AD10509F479C1C03BD10509F478C169 +:100C7000CE3AD10509F477C1CF3AD10509F476C14E +:100C8000C13BD10509F475C1C23BD10509F474C15A +:100C9000C33BD10509F473C1C43BD10509F472C14A +:100CA000C53BD10509F471C1C63BD10509F470C13A +:100CB000C73BD10509F46FC1C83BD10509F46EC12A +:100CC000C93BD10509F46DC1CA3BD10509F46CC11A +:100CD00000E014E46BC18E01106568C1CE019F7005 +:100CE0000E94A60564C10E948B149FEF24E38CE050 +:100CF000915020408040E1F700C000000E94A11CFC +:100D000055C18091D40181608093D4014FC10E946C +:100D10004A1E811102C00E94301E0E94671E90E090 +:100D20009093F3018093F201C23090E5D90721F44A +:100D30008091F201816086C0C43020E5D20721F4A1 +:100D40008091F20182607EC0C63080E5D80721F430 +:100D50008091F201846076C0C83090E5D90719F41B +:100D60008091F20127C0CA3020E5D20721F480919A +:100D7000F201806167C0CC3080E5D80721F4809112 +:100D8000F20180625FC0CE3090E5D90721F48091F6 +:100D9000F201806457C0C03120E5D20721F4809170 +:100DA000F20180684FC0C23180E5D80729F48091F4 +:100DB000F2018460886046C0C33090E5D90721F411 +:100DC0008091F2018E7F3EC0C53020E5D20721F42C +:100DD0008091F2018D7F36C0C73080E5D80721F4BD +:100DE0008091F2018B7F2EC0C93090E5D90719F4AC +:100DF0008091F20126C0CB3020E5D20721F480910A +:100E0000F2018F7E1FC0CD3080E5D80721F480919C +:100E1000F2018F7D17C0CF3090E5D90721F4809182 +:100E2000F2018F7B0FC0C13120E5D20721F4809100 +:100E3000F2018F7707C0C331D04531F48091F201C0 +:100E40008B7F877F8093F2018091F2010E946B1E5D +:100E5000ADC08D2F99278F70992781309105D9F4D6 +:100E60009E012370332702C0880F991F2A95E2F74D +:100E70009C688E0144E0000F111F4A95E1F700279E +:100E80001370802B912B53E0CC0FDD1F5A95E1F7A7 +:100E9000C076DD272FC08230910531F4DC2FCC27BE +:100EA0008E01016F106A82C08330910569F4CE0112 +:100EB0008370992701E010E002C0000F111F8A958E +:100EC000E2F7C8019C680FC084309105B9F4CE01E7 +:100ED0008370992701E010E002C0000F111F8A956E +:100EE000E2F7C8019A6823E0CC0FDD1F2A95E1F7ED +:100EF000C07ED7708C010C2B1D2B58C085309105FE +:100F000031F4DC2FCC278E01046F106A4FC0069796 +:100F100009F04CC0CF71DD27DC2FCC2701C0DF707A +:100F20008E01106243C000E010E040C08E013EC060 +:100F300001E810E43BC003E810E438C002EE14E41A +:100F400035C009EE14E432C00AEE14E42FC005EBFC +:100F500014E42CC006EB14E429C007EB14E426C00B +:100F60000CEC14E423C00DEC14E420C003E815E4F9 +:100F70001DC00AE815E41AC002E915E417C004E927 +:100F800015E414C001E216E411C003E216E40EC039 +:100F900004E216E40BC005E216E408C006E216E41B +:100FA00005C007E216E402C00AE216E4C801DF91B8 +:100FB000CF911F910F91089596E0799FF001112430 +:100FC00094E5899FE00DF11D1124E60FF11DEE0F50 +:100FD000FF1FEE5BFE4F85919491803E9105E0F4FA +:100FE000803C910558F58133910509F46FC048F4B0 +:100FF0008932910509F463C08A32910509F46DC004 +:1010000072C089339105E9F082389105D1F08533BA +:10101000910509F44DC067C0833E910581F138F414 +:10102000803E9105B9F0823E9105D9F05CC0863EC4 +:10103000910561F1873E9105A1F155C00E949E0581 +:1010400008952091F20120FD02C021FF4CC080EEE6 +:1010500090E049C08091F20180FFF9CF89E390E0F0 +:1010600042C08091F20182FF0EC08091F20184FFA4 +:1010700003C080E090E037C083EE90E034C0809100 +:10108000F20182FFF2CF82EE90E02DC08091F2015A +:1010900083FF0BC08091F20184FDEBCF87EE90E0DF +:1010A00022C08091F20183FFF5CF86EE90E01BC055 +:1010B0008091F20185FF07C089E290E014C0809121 +:1010C000F20185FFF9CF85E390E00DC08091F20138 +:1010D00086FF07C08AE290E006C08091F20186FF99 +:1010E000F9CF81E390E00E94AE05089508950C9435 +:1010F0007608809163010895CF93DF9300D01F920B +:10110000CDB7DEB79C018091E901843019F593E0F9 +:1011100099833B832A839093E9008FEF9091E800B5 +:10112000815095FD06C095ED9A95F1F7000081116B +:10113000F5CF8091E80085FF0DC040E050E063E00E +:1011400070E0CE0101960E94DD0A8091E8008E7762 +:101150008093E8000F900F900F90DF91CF9108954A +:10116000CF93DF9300D01F92CDB7DEB72091E90176 +:10117000243021F522E029839B838A8383E08093B6 +:10118000E9008FEF9091E800815095FD06C095ED44 +:101190009A95F1F700008111F5CF8091E80085FF65 +:1011A0000DC040E050E063E070E0CE0101960E9487 +:1011B000DD0A8091E8008E778093E8000F900F9011 +:1011C0000F90DF91CF9108952091E9012430F1F43F +:1011D00022E02093E9002FEF3091E800215035FD07 +:1011E00006C035ED3A95F1F700002111F5CF2091B9 +:1011F000E80025FF0BC040E050E065E070E00E9491 +:10120000DD0A8091E8008E778093E8000895CF93FF +:10121000DF93EC019091E901943009F046C0809190 +:101220000C018823D9F080910D018823B9F09093A7 +:10123000E9008FEF9091E800815095FD06C095E19F +:101240009A95F1F700008111F5CF8091E80085FFB4 +:101250002CC040E050E060E170E017C081E0809376 +:10126000E9008FEF9091E800815095FD06C095ED63 +:101270009A95F1F700008111F5CF8091E80085FF84 +:1012800014C040E050E068E070E0CE010E94DD0A4A +:101290008091E8008E778093E80080E1FE01A3E56D +:1012A000B1E001900D928A95E1F7DF91CF91089519 +:1012B0008091E801811109C00E94720C0E94CF0C3C +:1012C0008091E20084608093E20008951092E8012A +:1012D0000895089508950C940E1C42E061EC81E09D +:1012E0000E94EC0B42E061EC82E00E94EC0B42E0D9 +:1012F00061EC83E00E94EC0B42E161EC84E00C9431 +:10130000EC0B8091EB01833009F455C030F481304F +:1013100071F0823009F48EC008958A3009F47AC0E1 +:101320008B3009F460C0893009F09CC020C08091E6 +:10133000EA01813A09F096C08091E800877F8093A6 +:10134000E8008091EE019091EF01892B21F460E19A +:1013500083E591E003C060E080E090E070E00E94EF +:10136000280B8091E8008B778093E80008958091A6 +:10137000EA01813209F076C08091EE019091EF018F +:10138000009719F0039709F06DC08091E800877FFE +:101390008093E8008091E80082FD05C08091E9011A +:1013A0008111F8CF5FC08091F1008093630180913B +:1013B000E8008B7753C08091EA01813A09F052C06E +:1013C0008091EE019091EF01892B09F04BC0809143 +:1013D000E800877F8093E8008091E80080FFFCCFE1 +:1013E00080910C0136C08091EA018132D9F580915B +:1013F000EE019091EF01892BA9F58091E800877F9C +:101400008093E8000E94210C8091EC0180930C01F4 +:101410000C948B148091EA01813221F58091E800CF +:10142000877F8093E8000E94210C8091ED018093DA +:10143000640108958091EA01813AA1F48091E80065 +:10144000877F8093E8008091E80080FFFCCF809147 +:1014500064018093F1008091E8008E778093E8002A +:101460000C94210C089584B7877F84BF88E10FB660 +:10147000F89480936000109260000FBE90E080E8C6 +:101480000FB6F89480936100909361000FBE0E94A4 +:10149000C40F0E94720C0E94CF0C8091E200846005 +:1014A0008093E20078940E94550F0E94C60F82E05C +:1014B00091E00E94700F8091E901853069F40E94EB +:1014C000CF1B8091E7018823B1F30E94FA1B882388 +:1014D00091F30E94C70AEFCF0E94CC0FECCF292FC7 +:1014E000332723303105C9F064F42130310581F010 +:1014F0002230310509F043C08DE690E02EE633E05E +:1015000042C021323105F1F02232310541F137C0BC +:1015100082E190E02BED33E036C0992781309105D0 +:1015200041F08230910541F0892B49F5EAE6F3E07C +:1015300005C0E2E5F3E002C0EAE3F3E0849190E065 +:101540009F0121C06430D8F4E62FF0E0EE0FFF1FBA +:10155000EE5DFE4F2081318189E090E014C064305F +:1015600070F470E0FB01EE0FFF1FE65EFE4F20817E +:101570003181FB01EA5EFE4F808190E004C080E093 +:1015800090E020E030E0FA0131832083089580E18B +:1015900089BD82E189BD09B400FEFDCF8091D800EC +:1015A0008F7D8093D8008091E00082608093E0007E +:1015B0008091E00081FDFCCF0895CF92DF92EF9201 +:1015C000FF920F931F93CF93DF93EC018B016A017E +:1015D0000E94400C811133C0C114D10439F0F601CE +:1015E00080819181081B190BC80FD91FE12CF12CA8 +:1015F0000115110519F18091E80085FD16C0809153 +:10160000E8008E778093E800C114D10449F0F60118 +:1016100080819181E80EF91EF182E08285E00FC0A1 +:101620000E94400C882321F30AC089918093F10025 +:1016300001501109FFEFEF1AFF0ADACF80E0DF91C6 +:10164000CF911F910F91FF90EF90DF90CF90089571 +:101650002091F0013091F1012617370748F061150C +:10166000710539F42091E8002E772093E80001C03D +:10167000B90140E061157105A9F12091E90122232A +:1016800009F443C0253009F442C02091E80023FD4D +:1016900040C02091E80022FD32C02091E80020FFE8 +:1016A000E9CF4091F3002091F20030E0342BFC01AF +:1016B000CF016115710559F02830310540F4819151 +:1016C0008093F100615071092F5F3F4FF1CF41E0EE +:1016D0002830310509F040E02091E8002E77209372 +:1016E000E800C8CF4111C9CF0AC08091E901882321 +:1016F00061F0853061F08091E80083FD0AC080913F +:10170000E80082FFF2CF80E0089582E0089583E050 +:10171000089581E008952091F0013091F10126179C +:10172000370748F06115710539F42091E8002E77EC +:101730002093E80001C0B901FC0120E061157105AA +:1017400091F18091E901882309F440C0853009F4C2 +:101750003FC08091E80083FD3DC08091E80082FD9C +:101760002FC08091E80080FFE9CF2091F3008091A5 +:10177000F20090E0922B6115710559F088309105C7 +:1017800040F424912093F100319661507109019643 +:10179000F2CF21E0089709F020E08091E8008E77F1 +:1017A0008093E800CBCF2111CCCF0AC08091E90112 +:1017B000882361F0853061F08091E80083FD0AC0E4 +:1017C0008091E80082FFF2CF80E0089582E00895E2 +:1017D00083E0089581E00895982F973058F590930D +:1017E000E900981739F07091EC002091ED005091CC +:1017F000F00003C0242F762F50E021FF19C0309154 +:10180000EB003E7F3093EB003091ED003D7F309355 +:10181000ED003091EB0031603093EB007093EC0001 +:101820002093ED005093F0002091EE0027FF07C0B9 +:101830009F5FD3CF8F708093E90081E0089580E0AF +:1018400008958091EA0187FF11C08091E80082FD30 +:1018500005C08091E9018111F8CF11C08091E800A5 +:101860008B770BC08091E901882349F08091E800D3 +:1018700080FFF8CF8091E8008E778093E80008958C +:101880002091E4003091E50095E64091EC00842F32 +:10189000817040FF22C08091E80080FD1CC08091D3 +:1018A000E901882391F0853091F08091EB0085FD6E +:1018B00010C04091E4005091E5004217530729F30E +:1018C0009A01915011F784E0089582E0089583E031 +:1018D000089581E0089580E008954091E80042FF76 +:1018E000DECF08950E94E00C0E94E80CE0EEF0E0EC +:1018F000808181608083E8EDF0E080818F77808354 +:1019000019BCA7EDB0E08C918E7F8C9380818F7E87 +:1019100080831092E80108950F931F93CF93DF9374 +:101920000E94E00C0E94E80CC8EDD0E088818F771F +:10193000888388818068888388818F7D888319BCAB +:101940001092E9011092E5011092E7011092E60170 +:1019500000EE10E0F80180818B7F808388818160B8 +:10196000888342E060E080E00E94EC0BE1EEF0E072 +:1019700080818E7F8083E2EEF0E0808181608083D1 +:10198000808188608083F80180818E7F8083888158 +:1019900080618883DF91CF911F910F910895E8EDC9 +:1019A000F0E080818F7E8083E7EDF0E080818160D0 +:1019B000808384E082BF81E08093E8010C948C0CEA +:1019C000E8EDF0E080818E7F80831092E200089540 +:1019D0001092DA001092E10008951F920F920FB654 +:1019E0000F9211242F933F934F935F936F937F93A5 +:1019F0008F939F93AF93BF93EF93FF938091E100F9 +:101A000082FF0BC08091E20082FF07C08091E1005D +:101A10008B7F8093E1000E94540F8091DA0080FF59 +:101A20001FC08091D80080FF1BC08091DA008E7F9C +:101A30008093DA008091D90080FF0DC080E189BDDC +:101A400082E189BD09B400FEFDCF81E08093E90108 +:101A50000E94580905C019BC1092E9010E9466094C +:101A60008091E10080FF19C08091E20080FF15C0E5 +:101A70008091E2008E7F8093E2008091E20080619D +:101A80008093E2008091D80080628093D80019BCD6 +:101A900085E08093E9010E946A098091E10084FF5A +:101AA00030C08091E20084FF2CC080E189BD82E1DA +:101AB00089BD09B400FEFDCF8091D8008F7D809351 +:101AC000D8008091E1008F7E8093E1008091E20058 +:101AD0008F7E8093E2008091E20081608093E2003B +:101AE0008091E501882311F084E007C08091E30034 +:101AF00087FD02C081E001C083E08093E9010E947C +:101B00006B098091E10083FF29C08091E20083FF8F +:101B100025C08091E100877F8093E10082E080937F +:101B2000E9011092E5018091E1008E7F8093E10050 +:101B30008091E2008E7F8093E2008091E2008061DC +:101B40008093E20042E060E080E00E94EC0B809134 +:101B5000F00088608093F0000E946909FF91EF9186 +:101B6000BF91AF919F918F917F916F915F914F91B5 +:101B70003F912F910F900FBE0F901F9018951F92BD +:101B80000F920FB60F9211242F933F934F935F93B1 +:101B90006F937F938F939F93AF93BF93CF93DF9375 +:101BA000EF93FF93C091E900CF708091EC00D82FA4 +:101BB000D17080FDD0E81092E9008091F000877F1D +:101BC0008093F00078940E94030E1092E9008091B7 +:101BD000F00088608093F000CD2BCF70C093E900B7 +:101BE000FF91EF91DF91CF91BF91AF919F918F9135 +:101BF0007F916F915F914F913F912F910F900FBE09 +:101C00000F901F9018951F93CF93DF93CDB7DEB73A +:101C1000AA970FB6F894DEBF0FBECDBFEAEEF1E093 +:101C200088E08E0F9091F10091938E13FBCF0E946C +:101C300081098091E80083FF1FC18091EA019091A2 +:101C4000EB01492F50E04A30510508F015C1FA0167 +:101C5000EA5AFF4F0C94F623803881F0823809F05D +:101C60000BC18091EE018F708093E9008091EB00B1 +:101C700085FB882780F91092E90006C08091E60173 +:101C80009091E701911182609091E800977F909385 +:101C9000E8008093F1001092F100C8C0282F2D7F3A +:101CA00009F0EAC0882319F0823061F0E5C0809124 +:101CB000EC01813009F0E0C0933009F080E08093BE +:101CC000E7012BC08091EC01811127C08091EE01CA +:101CD0008F7009F4D1C08093E9002091EB0020FFC0 +:101CE0001CC0933021F48091EB00806214C090916D +:101CF000EB0090619093EB0021E030E0A90102C07D +:101D0000440F551F8A95E2F74093EA001092EA00CB +:101D10008091EB0088608093EB001092E900809145 +:101D2000E800877F86C08111A7C01091EC011F7762 +:101D30008091E3008078812B8093E3008091E8001C +:101D4000877F8093E8000E94210C8091E80080FF4B +:101D5000FCCF8091E30080688093E300111102C002 +:101D600082E001C083E08093E90186C08058823020 +:101D700008F082C08091EC019091ED018C3D53E020 +:101D8000950779F583E08A838AE289834FB7F894CF +:101D9000DE01139620E03EE051E2E32FF0E05093A5 +:101DA0005700E49120FF03C0E295EF703F5FEF70B2 +:101DB0008E2F90E0EA3010F0C79601C0C0968D9348 +:101DC0009D932F5F243149F74FBF8091E800877FB3 +:101DD0008093E8006AE270E0CE0101960E94280B31 +:101DE00014C0AE014F5F5F4F6091EE010E946F0A19 +:101DF000BC01892B09F440C09091E800977F909333 +:101E0000E80089819A810E948B0B8091E8008B7792 +:101E10008093E80031C0803879F58091E800877FB1 +:101E20008093E8008091E5018093F1008091E800C3 +:101E30008E778093E8000E94210C1EC081111CC087 +:101E40009091EC019230C0F48091E800877F8093FC +:101E5000E8009093E5010E94210C8091E501811139 +:101E600006C08091E30087FD02C081E001C084E0EC +:101E70008093E9010E946D098091E80083FF0AC008 +:101E80008091E800877F8093E8008091EB0080627A +:101E90008093EB00AA960FB6F894DEBF0FBECDBFBD +:101EA000DF91CF911F9108950895CF938091E9011B +:101EB0008823A1F0C091E900CF709091EC00892FA8 +:101EC000817090FD80E8C82B1092E9008091E800B5 +:101ED00083FD0E94030ECF70C093E900CF91089557 +:101EE00090936A01809369010895E0916901F091EE +:101EF0006A01309721F00190F081E02D099480E093 +:101F00000895E0916901F0916A01309721F0028013 +:101F1000F381E02D09940895E0916901F0916A013F +:101F2000309721F00480F581E02D099408952091E7 +:101F30006701309168018217930771F090936801EF +:101F400080936701E0916901F0916A01309721F077 +:101F50000680F781E02D0994089520916501309164 +:101F600066018217930771F0909366018093650173 +:101F7000E0916901F0916A01309721F00084F185C8 +:101F8000E02D0994089508950C94C30F0E943D1C00 +:101F90000E947E040C94031DCF92DF92EF92FF9279 +:101FA0000F931F93CF93DF93CDB7DEB72B970FB669 +:101FB000F894DEBF0FBECDBF0E9496048CE6C82EFB +:101FC00081E0D82E00E010E0E02E802F0E948405F2 +:101FD000F60141916F01F42EF826B1F40F5F1F4F07 +:101FE0000E30110589F78FEF89838A831B820E9447 +:101FF000461C8160782F9D838C8349815A816B8137 +:102000008D810E946F1040C09091D40191FF04C057 +:102010008B870E948A058B8520E030E04F2D50E0B1 +:10202000922FBA01022E02C0759567950A94E2F7C5 +:1020300060FF24C02E83EF8221E030E0690102C0FE +:10204000CC0CDD1C9A95E2F790E08C219D21892B28 +:1020500009F420E028870E94461C8160782F9A8727 +:1020600089874E815F8168858A850E946F10F8019B +:10207000E459FE4F8081C826C08206C02F5F3F4FC3 +:102080002630310569F6AACF0E94EA1F10916B0134 +:102090000E94750F1817A1F00E94750F80936B01B5 +:1020A0002B960FB6F894DEBF0FBECDBFDF91CF9158 +:1020B0001F910F91FF90EF90DF90CF900C947708D5 +:1020C0002B960FB6F894DEBF0FBECDBFDF91CF9138 +:1020D0001F910F91FF90EF90DF90CF900895CF93D5 +:1020E000DF93CDB7DEB72B970FB6F894DEBF0FBEE8 +:1020F000CDBF4F83588769877A878B87DE0111961A +:1021000086E0FD0111928A95E9F785E0FE01379698 +:1021100001900D928A95E1F749815A816B817C810A +:102120008D819E810E9429172B960FB6F894DEBFF1 +:102130000FBECDBFDF91CF9108950895CF9388232F +:1021400009F4C2C0C82F823859F40E94750F81FD6E +:10215000BBC089E30E946C1A0E94491B89E30CC032 +:10216000833879F40E94750F80FDAEC083E50E942C +:102170006C1A0E94491B83E50E94AE1ACF910C9401 +:10218000491B843859F40E94750F82FD9DC087E475 +:102190000E946C1A0E94491B87E4EECF8CEF8C0FD3 +:1021A000813A48F48C2F0E94252281118DC08C2FFA +:1021B0000E946C1AE3CF80E28C0F883048F4C7701D +:1021C00081E001C0880FCA95EAF70E94F51AD6CFC0 +:1021D0008BE58C0F833078F4C53A29F0C63A31F09C +:1021E00083E890E005C081E890E002C082E890E0DA +:1021F000CF910C94970F88E58C0F833108F064C061 +:10220000C83A39F1C93A41F1CA3A49F1CB3A51F1E8 +:10221000CC3A59F1CD3A61F1C03B69F1CE3A71F156 +:10222000CF3A79F1C13B81F1C23B89F1C33B91F1D6 +:10223000C43B99F1C53BA1F1C63BA9F1C73BB1F144 +:10224000C83BB9F1C93BC1F1CA3BC9F180E090E09C +:1022500038C082EE90E035C089EE90E032C08AEE60 +:1022600090E02FC085EB90E02CC086EB90E029C079 +:1022700087EB90E026C08CEC90E023C08DEC90E0E2 +:1022800020C083E891E01DC08AE891E01AC082E98D +:1022900091E017C084E991E014C081E292E011C09E +:1022A00083E292E00EC084E292E00BC085E292E00D +:1022B00008C086E292E005C087E292E002C08AE2AE +:1022C00092E0CF910C94AD0FCF910895882309F43B +:1022D0004BC0823859F40E94750F81FF45C089E3D5 +:1022E0000E946C1A0E94491B89E30CC0833871F468 +:1022F0000E94750F80FF38C083E50E946C1A0E940F +:10230000491B83E50E94AE1A0C94491B843859F48A +:102310000E94750F82FF28C087E40E946C1A0E94F9 +:10232000491B87E4EFCF9CEF980F913A58F390E266 +:10233000980F983050F4877091E001C0990F8A95FA +:10234000EAF7892F0E94FB1ADFCF9BE5980F9330A5 +:1023500020F480E090E00C94970F885A833120F4A9 +:1023600080E090E00C94AD0F0895882321F00E9446 +:10237000F51A0C94491B0895882321F00E94FB1A3A +:102380000C94491B08952F923F924F925F927F9237 +:102390008F929F92AF92BF92CF92DF92EF92FF9275 +:1023A0000F931F93CF93DF9300D000D01F92CDB730 +:1023B000DEB725E0FC01DE01119601900D922A9511 +:1023C000E1F7FC0100811181F280E580E2943FE0B9 +:1023D000E32223813481232B09F472C21F3F19F4B5 +:1023E0000F3F09F46DC26C010E94081A882319F08E +:1023F00082E00E944A1AC6010E949D1009831A8336 +:1024000069817A818F2D0E94CE198C010E948319D7 +:102410000E944A18F1100E94121B0E94651A88231C +:1024200079F0FF2069F080E2800F883048F082E088 +:102430000E944A1A0E94651A91E0782E792601C0FE +:10244000712CE12FE295EF70F0E0E05AFF4F0C9411 +:10245000F623812F807F1F70882311F01295107F43 +:10246000FF2089F0112309F4E8C180E2800F883051 +:1024700020F4812F0E94F51A03C0812F0E94051BB2 +:102480000E94491BDAC1802F0E946611112309F4B2 +:10249000EEC1005E812F083018F40E94FB1A02C0C2 +:1024A0000E940B1B0E94491BE2C1812F807F1F707D +:1024B000803211F01295107F002319F0013049F19C +:1024C00032C0FF2091F0EE2091F1F1E0EF1204C054 +:1024D000812F0E94251BCBC122E0E21228C00E945E +:1024E0002E1B812F0E94D51922C0EE2079F031E0F9 +:1024F000E31208C00E94F21A812309F4B8C10E94B5 +:10250000D81904C042E0E41609F4B1C10E942E1BA0 +:1025100012C0FF2029F051E05E1508F4A8C107C0E1 +:10252000E110A5C108C0FF2021F0E11086C1812F74 +:10253000F7C0E11089C1812FF9C0812F869586955A +:10254000837090E0009719F0019759F090C1FF2037 +:1025500019F0C801937002C080E090E00E94970FCC +:1025600086C1FF2019F0C801937002C080E090E09E +:102570000E94AD0F7CC1802FFF2019F00E94F21E37 +:1025800002C00E945A1F0E94DF1F71C1812F8370F9 +:1025900009F055C0F1106BC1802F82958695877028 +:1025A000880F880F902F9F70492F50E060E070E0F7 +:1025B0001A012B01082E04C0220C331C441C551C8C +:1025C0000A94D2F704FF15C02FE0822E912CA12C83 +:1025D000B12CA501940104C0220F331F441F551FC5 +:1025E0008A95D2F7CA01B90160957095809590954A +:1025F00003C060E070E0CB01169516951370412F73 +:1026000050E04230510569F04330510589F06229AC +:102610007329842995294130510571F00E94711860 +:1026200026C162297329842995290E948D181FC10A +:102630000E947118C201B1010E94551818C1FF20F3 +:1026400019F0812F817001C08695882309F40FC18C +:10265000802F829586958770880F880F902F9F70A6 +:10266000492F50E060E070E01A012B01082E04C0F1 +:10267000220C331C441C551C0A94D2F704FF15C0CD +:102680009FE0892E912CA12CB12CA501940104C0AE +:10269000220F331F441F551F8A95D2F7CA01B90173 +:1026A000609570958095909503C060E070E0CB01D7 +:1026B000169516951370412F50E04230510569F080 +:1026C0004330510589F062297329842995294130C5 +:1026D000510571F00E944B19CAC0622973298429DF +:1026E00095290E946719C3C00E944B19C201B1010C +:1026F0000E942F19BCC0802F90E0FC01E05EF10920 +:10270000E531F10508F094C0E059FF4F0C94F62331 +:102710000F70812F8F71FF2031F00E94C818802F19 +:102720000E94B511A4C00E94E918802F0E94BC111C +:102730009EC0FF2039F0E1109AC0812F8F710E9456 +:102740000E1995C031E03E1508F491C0F6CFFF2078 +:1027500039F0812F8F710E94C81889C0FF20C9F3FA +:10276000812F8F710E94E91882C0FF2029F0812FEC +:102770008F710E94B3187BC00E94A91878C0FF20F7 +:10278000C1F00E94D2190E94FB1A0E94041A8430E0 +:1027900029F40E94431A812F8F717AC041E04E15AF +:1027A00008F48EC01F71812F0E94C81863E0812F2A +:1027B0000EC00E94D2190E94F51A51E05E15F8F47D +:1027C0000E94431A0E94D81964E0812F8F710F90E4 +:1027D0000F900F900F900F90DF91CF911F910F915D +:1027E000FF90EF90DF90CF90BF90AF909F908F9031 +:1027F0007F905F904F903F902F900C94331A81E020 +:102800000F900F900F900F900F90DF91CF911F912D +:102810000F91FF90EF90DF90CF90BF90AF909F907F +:102820008F907F905F904F903F902F900C944A1A1A +:10283000FF2039F0EE2009F48CCF802F0E949E10EB +:1028400016C0EE2009F48CCF802F0E9466110FC0B5 +:10285000412F4F70602FC6010E94BA020E94CD170F +:1028600006C0412F4F70602FC6010E948B05772054 +:1028700039F10E94041A80FD23C0F60112820E94E1 +:10288000FE190E94C818C6010E94C3110E94FE19B9 +:102890000F900F900F900F900F90DF91CF911F919D +:1028A0000F91FF90EF90DF90CF90BF90AF909F90EF +:1028B0008F907F905F904F903F902F900C94E918ED +:1028C0000F900F900F900F900F90DF91CF911F916D +:1028D0000F91FF90EF90DF90CF90BF90AF909F90BF +:1028E0008F907F905F904F903F902F9008950E941F +:1028F000121B0E94221B0E94E41A0E94491B0E9484 +:1029000090200E94DF1F80E090E00E94970F80E0FF +:1029100090E00C94AD0F0E94021B0C9477140E945F +:10292000C319292F22952F7030E02C3031054CF43B +:102930002A3031056CF42250310922303105A8F4D7 +:1029400007C02C30310569F02F30310551F00DC032 +:10295000803F69F018F4803E40F409C0843F29F4B8 +:1029600006C093FB882780F9089580E0089581E0F0 +:102970000895CF93DF9300D000D01F92CDB7DEB77C +:102980000F900F900F900F900F90DF91CF910895BF +:10299000CF93DF9300D000D000D0CDB7DEB726961E +:1029A0000FB6F894DEBF0FBECDBFDF91CF91089573 +:1029B0001F93CF93DF93C0917A0116E080917B0142 +:1029C000C81799F0D0E01C9FF0011D9FF00D112455 +:1029D000E458FE4F408151816281738184819581E9 +:1029E0000E94C8142196C770E9CFDF91CF911F9143 +:1029F00008954091AC015091AD016091AE0170918C +:102A0000AF018091B0019091B1010C94C8148091F4 +:102A1000B10182958F7009F054C08091AE01882376 +:102A200009F44FC080917A01A0917B016091AC01C3 +:102A30007091AD014091AF015091B001B6E08A179D +:102A400009F43FC090E041155105C1F17F3F11F4F9 +:102A50006F3FA1F1B89FF001B99FF00D1124E45828 +:102A6000FE4F218172132AC02081621327C0228168 +:102A7000211124C0238134812417350710F42150FB +:102A80003109241B350B283C3105C0F42091B101DC +:102A90002F7020612093B10126E0289FF001299F2B +:102AA000F00D1124EF57FE4F80818F70806180837D +:102AB0008CEA91E00E94C3110C94D814019687709F +:102AC000BECF0895CF92DF92EF92FF920F931F93A4 +:102AD000CF93DF93CDB7DEB762970FB6F894DEBF22 +:102AE0000FBECDBF8C0185E0F801DE011D9601907F +:102AF0000D928A95E1F7D8014C9111965C9111974E +:102B000012966C9112971396CD90DC901497309199 +:102B1000AC017091AD018091AF019091B00100972F +:102B200009F46BC17F3F19F43F3F09F466C1E0909F +:102B3000AE01EE2009F4C0C02091B101C816D9063B +:102B400028F0F601E81BF90BCF0104C080959095A1 +:102B50008C0D9D1DFF24F394883C910578F0F12C99 +:102B6000207F09F0C6C07C2DD98AC88A89890E9435 +:102B7000B9148CEA91E00E94C311B1C0822F807F0A +:102B800009F046C0751314C0341312C0611110C08F +:102B90002F7020612093B1010E94F9148CEA91E01A +:102BA0000E94C3118091B101D80115968C932EC05B +:102BB000CD2819F15F3F11F44F3FF9F0F62E611166 +:102BC0001CC080917A0120917B0136E0821709F4C4 +:102BD0005AC090E0389FF001399FF00D1124E4585D +:102BE000FE4F7181571306C07081471303C0728175 +:102BF000711103C001968770E9CFF62E662309F4A0 +:102C000018C18091B10181608093B101F12C11C193 +:102C1000751308C0341306C0611104C08091B1015E +:102C2000D801C3C04D875E878D859E856A8B0E94C3 +:102C30008F146A898823E1F16623D1F12091B101D3 +:102C4000822F82958F7090E0029774F08091AC0192 +:102C50009091AD0198878F831986DB86CA862C8771 +:102C6000CE0107960E94C31186E0F801ACEAB1E0FC +:102C700001900D928A95E1F70E9407150E94F914C0 +:102C8000FF24F394D6C04D875E878D859E850E9474 +:102C9000C319292F22952F7030E0223031050CF016 +:102CA000BCC09F7009F0B6C0805E883008F4C1C017 +:102CB000C8010E94C311E4CFC816D90608F453C056 +:102CC000F601E81BF90BCF01883C910508F450C0D0 +:102CD000F12C7C2DD98AC88A89890E94B914ECEA22 +:102CE000F1E086E0DF011D928A95E9F70E94F91470 +:102CF000A0C0751314C0341312C0611110C08091AC +:102D0000B101F8018583C8010E94C31186E0ECEA95 +:102D1000F1E0DF011D928A95E9F7FE2C8AC04D870C +:102D20005E878D859E856A8B0E948F146A898823B1 +:102D300009F4BECF662309F4BBCF2091B101822FE5 +:102D400082958F7090E002970CF48ECF8091AC0149 +:102D50009091AD019A8389831B82DD82CC822E8380 +:102D6000CE0101967FCF809590958C0D9D1DACCFA7 +:102D7000F62E662309F49CCF75132EC034132CC095 +:102D80002091B10120FD1FC0822F82958F70D9F054 +:102D9000D80115962C9315978F3049F08F5F982F97 +:102DA0009295907F822F8F70892B15968C93C801F6 +:102DB0000E94C31186E0F801ACEAB1E001900D92E7 +:102DC0008A95E1F793CF86E0F801ACEAB1E0019093 +:102DD0000D928A95E1F72DC04D875E878D859E8582 +:102DE0000E948F14811140CF8091B1018160809346 +:102DF000B101C8010E94C3111CC0662309F458CF59 +:102E00004D875E878D859E850E948F14882309F4E7 +:102E10004FCF2ACF811148CF0CC0243031050CF0A0 +:102E200047CF9F7009F440CFF8019581907F09F05A +:102E30003BCF8F2D62960FB6F894DEBF0FBECDBF8D +:102E4000DF91CF911F910F91FF90EF90DF90CF9086 +:102E500008951F93CF93DF93CDB7DEB72C970FB6AE +:102E6000F894DEBF0FBECDBF4F83588769877A873E +:102E70008B879C87CE0107960E946215882369F094 +:102E80008F8198852A853B85232BF1F19F3F09F09F +:102E900063C08F3F09F060C037C086E0FE013796FF +:102EA000DE01119601900D928A95E1F76F81788588 +:102EB000EA85FB85309741F17F3F11F46F3F21F1A7 +:102EC00020917B0130E0C9010196877099274091DC +:102ED0007A0150E08417950709F447C069837A8323 +:102EE000FD83EC8396E0929FD001939FB00D112457 +:102EF000A458BE4FFE01319601900D929A95E1F7CC +:102F000080937B010E94D81416E080917A01909101 +:102F10007B018917C1F1189FC001112484589E4F6D +:102F20000E946215882379F1E0917A011E9FF001D9 +:102F30001124E458FE4F4081518162817381848164 +:102F400095810E94C81480917A0190E00196877063 +:102F5000992780937A01D9CF4F81588569857A85E1 +:102F60008B859C850E94C814CFCF0E948B14109231 +:102F70007B0110927A01ECEAF1E086E0DF011D921C +:102F80008A95E9F7C1CF2C960FB6F894DEBF0FBE35 +:102F9000CDBFDF91CF911F910895EF92FF920F93D4 +:102FA0001F93CF93DF938C01892B09F46CC0F12C14 +:102FB000EE24E394E8012196F8018491843740F4EB +:102FC000843008F051C0813081F0823019F15BC04B +:102FD000853709F444C0A8F19CE7980F903708F0B2 +:102FE00052C08F770E94661141C00E5F1F4FFE01D5 +:102FF000C49180E28C0F883048F4C7708E2D01C0D8 +:10300000880FCA95EAF70E94151B14C08C2F0E94E6 +:103010009E102DC00E5F1F4FFE01C49180E28C0FE9 +:10302000883058F4C7708E2D01C0880FCA95EAF712 +:103030000E941B1B0E94491B1AC08C2F0E94661104 +:1030400016C00E5F1F4FFE01C491CC2381F08FE9A3 +:103050009FE00197F1F700C00000C150F6CF0E5F6E +:103060001F4FFE01F49003C00E949E108E018F2D11 +:10307000882309F49FCFEFE9FFE03197F1F700C013 +:1030800000008150F5CFDF91CF911F910F91FF90FC +:10309000EF90089508956093B6017093B7018093FF +:1030A000B8019093B9010C9477140F931F9300917A +:1030B000B6011091B7012091B8013091B901DC013E +:1030C000CB01802B912BA22BB32B8093B601909335 +:1030D000B701A093B801B093B9011F910F910C945F +:1030E00077140F931F930091B6011091B7012091AF +:1030F000B8013091B901DC01CB0180239123A223D7 +:10310000B3238093B6019093B701A093B801B09315 +:10311000B9011F910F910C9477140F931F93009195 +:10312000B6011091B7012091B8013091B901DC01CD +:10313000CB0180279127A227B3278093B6019093D4 +:10314000B701A093B801B093B9011F910F910C94EE +:1031500077141092B2011092B3011092B401109240 +:10316000B5010C94771441E050E060E070E004C0D9 +:10317000440F551F661F771F8A95D2F74093B201FF +:103180005093B3016093B4017093B5010C9477141C +:1031900041E050E060E070E004C0440F551F661F3E +:1031A000771F8A95D2F78091B2019091B301A091D7 +:1031B000B401B091B501482B592B6A2B7B2B40935E +:1031C000B2015093B3016093B4017093B5010C94B4 +:1031D000771441E050E060E070E004C0440F551FF8 +:1031E000661F771F8A95D2F7409550956095709528 +:1031F0008091B2019091B301A091B401B091B50159 +:10320000482359236A237B234093B2015093B3018F +:103210006093B4017093B5010C94771441E050E0D1 +:1032200060E070E004C0440F551F661F771F8A9549 +:10323000D2F78091B2019091B301A091B401B09105 +:10324000B501482759276A277B274093B20150933D +:10325000B3016093B4017093B5010C9477140F938C +:103260001F930091B2011091B3012091B4013091EC +:10327000B501DC01CB01802B912BA22BB32B8093CA +:10328000B2019093B301A093B401B093B5011F9123 +:103290000F910C9477140F931F930091B20110912A +:1032A000B3012091B4013091B501DC01CB01802341 +:1032B0009123A223B3238093B2019093B301A093EF +:1032C000B401B093B5011F910F910C9477140F9333 +:1032D0001F930091B2011091B3012091B40130917C +:1032E000B501DC01CB0180279127A227B32780936A +:1032F000B2019093B301A093B401B093B5011F91B3 +:103300000F910C9477140895CF92DF92EF92FF9271 +:103310000F931F93CF93DF938C01C090B601D09091 +:10332000B701E090B801F090B9018091B20190919D +:10333000B301A091B401B091B501C82AD92AEA2AF3 +:10334000FB2ACFE1D0E0D701C6010C2E04C0B69510 +:10335000A795979587950A94D2F780FF06C0B80184 +:103360008C2F0E94DC07019721F4219760F780E001 +:1033700001C08C2FDF91CF911F910F91FF90EF90A3 +:10338000DF90CF900895CF93DF93EC010E948419D2 +:10339000BE010E94DC07DF91CF910895CB010E940E +:1033A000C31908958091BF0108958093BF010895C6 +:1033B0001092BF0108950E94461C2091BD013091DA +:1033C000BE018217930750F00E94461C2091BD0158 +:1033D0003091BE01821B930B9C010AC00E94461CC7 +:1033E0002091BD013091BE0120953095280F391FE5 +:1033F00081E0283B3B4008F480E008958091BC01C7 +:1034000085958595859508958091BC01877008956F +:103410000E94461C2091BA013091BB01821793078C +:10342000A8F00E94461C2091BA013091BB01821B7A +:10343000930B883B9B4010F480E013C08091BC014B +:1034400082FB882780F991E089270BC00E94461CE7 +:103450002091BA013091BB0120953095820F931FC6 +:10346000E8CF8170089598E0899F90011124262B60 +:103470002093BC010E94C8180E94461C9093BB0177 +:103480008093BA0108951092BC011092BB01109272 +:10349000BA0108952091BC01809582238093BC01DC +:1034A000982F977089F430E0482F552747FD5095A5 +:1034B0002417350749F08595859585950E94E9186B +:1034C0001092BB011092BA0108959091BC019770BF +:1034D00081E009F480E0089590910C01992321F096 +:1034E00090910D01911109C020910E0130910F01B1 +:1034F000F90132969FEF40E01FC0982F9695969560 +:1035000096959F3050F5E0910E01F0910F01E90F73 +:10351000F11D877021E030E0A90102C0440F551F62 +:103520008A95E2F7CA019181892B818308959F3F93 +:1035300039F04F5F4E3041F051915813F8CF0DC024 +:103540005111F7CF942FF5CF9F3F39F0F901E90FD3 +:10355000F11D97FDFA9582830895089590910C01CD +:10356000992321F090910D01911109C020910E0134 +:1035700030910F01F9013296205F3F4F1FC0982F05 +:103580009695969596959F30F0F4E0910E01F09106 +:103590000F01E90FF11D877021E030E0A90102C0A1 +:1035A000440F551F8A95E2F7CA01809591818923BE +:1035B000818308953196E217F30729F090819813DB +:1035C000F9CF1082F7CF089581E090E0E0910E01ED +:1035D000F0910F01E80FF91F1082019680319105DB +:1035E000A9F708958091D30108959091D301892B73 +:1035F0008093D301089580959091D301892380937E +:10360000D30108951092D30108959091D201892B8E +:103610008093D201089580959091D201892380935F +:10362000D20108951092D20108959091D101892B71 +:103630008093D101089580959091D1018923809341 +:10364000D10108951092D10108958093C0010E9484 +:10365000461C9093BE018093BD0108951092C00155 +:103660001092BE011092BD0108958091C00108958D +:1036700080910E0190910F01FC0131969C01205F19 +:103680003F4F80E0919191118F5FE217F307D1F7DF +:103690000895E0910E01F0910F018091D301808394 +:1036A000E0910E01F0910F0190818091D201892B60 +:1036B0008083E0910E01F0910F0190818091D10102 +:1036C000892B80838091C001882399F00E94DB19A7 +:1036D00081110E942E1BE0910E01F0910F0190814B +:1036E0008091C001892B80830E94381B81110E9428 +:1036F0002E1B80910E0190910F010C94810FCF929F +:10370000DF92EF92FF926C01EE24FF24C114D104EA +:10371000E104F10421F0C701B60120E101C020E07D +:10372000C72ED82EE92EFF24C114D104E104F104E0 +:1037300019F0285FC701B6016B017C0154E0F694D3 +:10374000E794D794C7945A95D1F7C114D104E104F2 +:10375000F10419F02C5FC701B6016B017C0142E056 +:10376000F694E794D794C7944A95D1F7C114D1043D +:10377000E104F10419F02E5FC701B601DC01CB01B1 +:10378000B695A79597958795892B8A2B8B2B09F052 +:103790002F5F822FFF90EF90DF90CF900895809160 +:1037A000E901843021F11092D50120E488E190E014 +:1037B0000FB6F894A895809360000FBE2093600028 +:1037C00080E00E94770883B7817F846083BF83B7DE +:1037D000816083BF7894889583B78E7F83BF88E1AB +:1037E0000FB6F89480936000109260000FBE0895A9 +:1037F00008950895CF930E94F81B0E9496040E949A +:10380000F91BC0E08C2F0E948405811104C0CF5F9A +:10381000CE30C1F701C081E0CF9108950E948B1492 +:103820000E94750F0C9477081F920F920FB60F929B +:1038300011248F939F93AF93BF938091D5018111F2 +:1038400013C08091D6019091D701A091D801B09179 +:10385000D9014196A11DB11D8093D6019093D70146 +:10386000A093D801B093D901BF91AF919F918F914F +:103870000F900FBE0F901F90189582E084BD93E0CB +:1038800095BD9AEF97BD80936E0008952FB7F89479 +:103890008091D6019091D701A091D801B091D90122 +:1038A0002FBF0895CF92DF92EF92FF920F931F9355 +:1038B0002FB7F8944091D6015091D7016091D8016B +:1038C0007091D9012FBF6A017B01EE24FF248C0186 +:1038D00020E030E0C016D106E206F30610F44150B5 +:1038E00051099A01281B390BC9011F910F91FF90B3 +:1038F000EF90DF90CF9008951F920F920FB60F9226 +:1039000011248F939F93AF93BF938091D601909191 +:10391000D701A091D801B091D9010196A11DB11D87 +:103920008093D6019093D701A093D801B093D90189 +:10393000BF91AF919F918F910F900FBE0F901F90ED +:1039400018950E94720CF8942FEF87EA91E62150A7 +:1039500080409040E1F700C0000087E090EBDC0180 +:103960008093F3019093F401A093F501B093F601D5 +:103970009CE088E10FB6F894A895809360000FBE94 +:1039800090936000FFCFEF92FF920F931F93CF931E +:10399000DF93D82FC0E08C2F0E94840500E010E058 +:1039A000E82EF12CC701002E02C0959587950A9448 +:1039B000E2F780FD06C00F5F1F4F0630110591F73B +:1039C00009C0602F7C2F80E00E948C05D813F3CFB4 +:1039D00081E004C0CF5FCE30F1F680E0DF91CF917F +:1039E0001F910F91FF90EF900895CF93C82F8CE215 +:1039F0000E94C31C882321F08C2FCF910C94C31CF0 +:103A000080E0CF910895CF930E944A1E811102C099 +:103A10000E94301EC5E6C15049F00E9496048FE313 +:103A20009CE90197F1F700C00000F5CF89E20E9400 +:103A3000F51C811113C18AE20E94F51C81110E94BC +:103A4000301E85E00E94F51C81110E94A11C0E947D +:103A5000551E8093D40187E00E94F51C8823A9F1AC +:103A60008BE10E94F51C882351F08091D40181FBE9 +:103A7000222720F991E0922790FB81F90EC08EE079 +:103A80000E94F51C882361F08091D40182FB2227DB +:103A900020F991E0922790FB82F98093D40115C020 +:103AA00080E10E94F51C9091D401882341F093FBA2 +:103AB000222720F981E0822780FB93F904C0892F17 +:103AC000809580FB90F99093D4018091D4010E945D +:103AD000591E0E94671E8093F20180EE0E94F51C21 +:103AE000882341F08091F201982F909590FB80F906 +:103AF0008093F20189E30E94F51C882359F080919C +:103B0000F20181FB222720F991E0922790FB81F9B5 +:103B10008093F20182EE0E94F51C882359F0809177 +:103B2000F20182FB222720F991E0922790FB82F993 +:103B30008093F20186EE0E94F51C882359F0809153 +:103B4000F20183FB222720F991E0922790FB83F971 +:103B50008093F20183EE0E94F51C882359F0809136 +:103B6000F20184FB222720F991E0922790FB84F94F +:103B70008093F20185E30E94F51C882359F080911F +:103B8000F20185FB222720F991E0922790FB85F92D +:103B90008093F20181E30E94F51C882359F0809103 +:103BA000F20186FB222720F991E0922790FB86F90B +:103BB0008093F20181E10E94F51C882359F08091E5 +:103BC000F20187FB222720F991E0922790FB87F9E9 +:103BD0008093F2018091F2010E946B1E8091F201AC +:103BE00087FB882780F980930D0187E20E94F51CEE +:103BF000C82F8EE10E94F51C8111C2608FE10E94E6 +:103C0000F51C8111C46080E20E94F51C8111C8601E +:103C100081E20E94F51C8111C06182E20E94F51CC4 +:103C20008111C06283E20E94F51C8111C06484E2AC +:103C30000E94F51C882311F0C06802C0CC2329F033 +:103C40008C2F0E94621E6C2F03C00E945E1E682F84 +:103C500070E080E090E0CF910C944B18CF910895E4 +:103C60006DEE7EEF80E090E00E94302460E082E024 +:103C700090E00E941E2460E083E090E00E941E24F9 +:103C800060E084E090E00E941E2460E085E090E027 +:103C90000C941E2480E090E00E94182421E08D3EC8 +:103CA0009E4F09F020E0822F089582E090E00C946E +:103CB0001024682F82E090E00C941E2483E090E0B2 +:103CC0000C941024682F83E090E00C941E2484E070 +:103CD00090E00C941024682F84E090E00C941E2453 +:103CE0008091DC0180FF0BC06091130185E0689F2B +:103CF000B001112475956795759567952BC081FF67 +:103D000009C06091130185E0689FB0011124759589 +:103D1000679520C082FF07C06091130185E0689F0E +:103D2000B001112417C09091DD019923D1F0609169 +:103D30001201961788F72091130185E0289F9001C2 +:103D40001124929FA001939F500D112470E0CA018D +:103D50000E94E2236038710540F46115710539F065 +:103D600002C065E070E0862F08958FE7089581E036 +:103D700008958091DC0180FF08C06091110170E01E +:103D8000759567957595679521C081FF06C060910F +:103D9000110170E07595679519C082FF04C06091AC +:103DA000110170E010C09091DD019923C1F0609184 +:103DB00010019617A0F780911101899FC00111246D +:103DC00070E00E94E2236038710528F461157105E6 +:103DD00021F0862F08958FE7089581E0089561E02E +:103DE00070E0F4CF803F21F40E94701E819504C0E2 +:103DF000813F29F40E94701E8093E0010895823F64 +:103E000021F40E94701E819504C0833F29F40E9412 +:103E1000701E8093DF010895893F19F40E94B91E36 +:103E200005C08A3F31F40E94B91E81958093E1015B +:103E300008958B3F21F40E94B91E819504C08C3FE8 +:103E400029F40E94B91E8093E2010895843F21F471 +:103E50008091DE01816017C0853F21F48091DE01F1 +:103E6000826011C0863F21F48091DE0184600BC026 +:103E7000873F21F48091DE01886005C0883F31F4DE +:103E80008091DE0180618093DE0108958D3F21F4F1 +:103E90008091DC0181600BC08E3F21F48091DC01B8 +:103EA000826005C08F3F29F48091DC01846080939B +:103EB000DC010895803F39F48091E00187FF6CC0F8 +:103EC0001092E00169C0813F29F48091E001181649 +:103ED000BCF362C09091DF01823F29F497FF5CC080 +:103EE0001092DF0159C0833F19F41916CCF354C066 +:103EF000893F41F48091E10118160CF04DC01092F9 +:103F0000E1014AC08A3F29F48091E10187FF44C062 +:103F1000F6CF8B3F39F48091E20187FF3DC01092CC +:103F2000E2013AC08C3F29F48091E2011816BCF3FB +:103F300033C0843F21F48091DE018E7F17C0853F1E +:103F400021F48091DE018D7F11C0863F21F48091A4 +:103F5000DE018B7F0BC0873F21F48091DE01877FDC +:103F600005C0883F31F48091DE018F7E8093DE01B1 +:103F700013C08D3F21F48091DC018E7F0BC08E3FFA +:103F800021F48091DC018D7F05C08F3F29F4809161 +:103F9000DC018B7F8093DC018091DF0181110EC0F9 +:103FA0008091E00181110AC08091E101811106C078 +:103FB0008091E201811102C01092DD0108958EED21 +:103FC00091E00E948C0F0E94461C9093DB0180932D +:103FD000DA0108951F93CF93DF938091DA019091D6 +:103FE000DB010E94521CAC019091DD01992321F06C +:103FF0002091140130E006C0209115018AE0289F2D +:10400000900111244217530708F486C08091DF0104 +:10401000C091E001D091E1011091E201811107C04E +:10402000C11176C0D11174C0111172C075C09F3F0B +:1040300019F09F5F9093DD01181624F40E94701E02 +:104040008093DF018091DF0187FF05C00E94701E11 +:1040500081958093DF011C1624F40E94701E8093CA +:10406000E0018091E00187FF05C00E94701E8195EC +:104070008093E0016091DF01662339F1C091E00196 +:10408000CC2319F1772767FD7095872F972F0E9412 +:10409000F32223E333E343E35FE30E9457230E94C9 +:1040A000C0226093DF016C2F772767FD7095872F03 +:1040B000972F0E94F32223E333E343E35FE30E945D +:1040C00057230E94C0226093E0011D1624F40E9431 +:1040D000B91E8093E1018091E10187FF05C00E9434 +:1040E000B91E81958093E101111624F40E94B91E36 +:1040F0008093E2018091E20187FF05C00E94B91E12 +:1041000081958093E201DF91CF911F910C94DF1F85 +:104110009F3F09F08ECF96CFDF91CF911F910895E9 +:10412000EEEDF1E085E0DF011D928A95E9F710924E +:10413000DD011092DC010895833081F128F4813093 +:1041400059F08230D1F00895853009F449C0B8F1B2 +:10415000863009F456C0089580911501262F30E06D +:10416000280F311D2F3F310524F4680F609315018E +:1041700008958FEF80931501089580911401262FE3 +:1041800030E0280F311D2F3F310524F4680F609374 +:10419000140108958FEF8093140108958091130105 +:1041A000262F30E0280F311D2F3F310524F4680FF2 +:1041B0006093130108958FEF809313010895809108 +:1041C0001201262F30E0280F311D2F3F310524F436 +:1041D000680F6093120108958FEF80931201089584 +:1041E00080911101262F30E0280F311D2F3F31051E +:1041F00024F4680F6093110108958FEF80931101EB +:10420000089580911001262F30E0280F311D2F3F97 +:10421000310524F4680F6093100108958FEF8093A7 +:1042200010010895833011F128F4813049F0823073 +:1042300091F00895853081F120F18630C1F1089523 +:1042400080911501681720F4861B8093150108954D +:1042500010921501089580911401681720F4861BAF +:104260008093140108951092140108958091130110 +:10427000681720F4861B8093130108951092130190 +:10428000089580911201681720F4861B8093120113 +:10429000089510921201089580911101681720F479 +:1042A000861B809311010895109211010895809149 +:1042B0001001681720F4861B809310010895109256 +:1042C000100108950F931F938B3109F475C0A0F569 +:1042D0008E3009F484C0C0F4873009F45BC068F400 +:1042E000863009F0AAC08091D401817F8E7F8093AF +:1042F000D40181E08093E401A1C0883009F496C024 +:104300008B3009F493C099C0813109F472C068F40C +:10431000803109F092C08091D40183FB222720F9DB +:1043200091E0922790FB83F950C0863109F47EC05A +:10433000893109F47BC081C0853309F479C068F400 +:10434000873209F475C028F48E3108F476C08D5197 +:104350005AC0893209F46CC070C0833438F48A338F +:1043600008F050C0883309F461C067C0833409F491 +:104370005FC0883409F061C00E948B140FEF13ED09 +:1043800020E3015010402040E1F700C000000E94EF +:10439000A11C4CC09091D401892F8095817080FB25 +:1043A00090F929F0966098609093D40147C0997F66 +:1043B000977F9093D4013AC08091D40181FB22274A +:1043C00020F991E0922790FB81F98093D401992301 +:1043D00069F18091D40181608093D40127C08091DC +:1043E000D40182FB222720F991E0922790FB82F9E9 +:1043F000ECCF0E948B1490910D0181E0892780936E +:104400000D0114C0895341E050E060E070E08A0182 +:104410009B0104C0000F111F221F331F8A95D2F782 +:10442000C901B8010E944B180E948B1481E006C09C +:1044300061E070E080E090E0F5CF80E01F910F91A7 +:10444000089580E0089580E00895CF93C82F80916B +:10445000E401813079F018F08230E9F187C0E09111 +:104460000E01F0910F018081813169F0823209F0F3 +:104470007FC009C0E0910E01F0910F018081813170 +:1044800011F0823261F48C2F0E942122811104C02C +:104490008C2F0E9462211DC081E090E01AC08C2FF9 +:1044A0000E942322811114C0C43179F048F4CB302A +:1044B00079F0C03109F060C082E08093E40108C067 +:1044C000C93219F0C83321F057C01092E40154C02A +:1044D00081E0817053C0C93289F118F5C43171F19E +:1044E000A8F4C73009F046C08AE08093150194E132 +:1044F0009093140193E0909313018093120188E04C +:104500008093110188E28093100134C0CE51C630EF +:1045100088F5EC2FF0E0E65DFE4F80818093E301AB +:1045200029C0CE34E9F020F4CB3421F56AE013C081 +:10453000C13579F0C235F1F461E00DC08091E3013D +:10454000882319F01092E30115C081E08093E40103 +:1045500015C061E006C08091E3010E949C200AC062 +:104560006AE08091E3010E94122104C01092E401EC +:1045700080E004C081E002C080E0ABCFCF9108951D +:1045800004D06894B1118DC0089570D088F09F5701 +:1045900090F0B92F9927B751A0F0D1F0660F771F8F +:1045A000881F991F1AF0BA95C9F712C0B13081F06F +:1045B00077D0B1E0089574C0672F782F8827B85F4F +:1045C00039F0B93FCCF3869577956795B395D9F7D0 +:1045D0003EF490958095709561957F4F8F4F9F4FDA +:1045E0000895E89409C097FB3EF4909580957095E6 +:1045F00061957F4F8F4F9F4F9923A9F0F92F96E92F +:10460000BB279395F695879577956795B795F111A3 +:10461000F8CFFAF4BB0F11F460FF1BC06F5F7F4F40 +:104620008F4F9F4F16C0882311F096E911C0772352 +:1046300021F09EE8872F762F05C0662371F096E85B +:10464000862F70E060E02AF09A95660F771F881F2A +:10465000DAF7880F9695879597F9089557FD905842 +:10466000440F551F59F05F3F71F04795880F97FB36 +:10467000991F61F09F3F79F08795089512161306F0 +:104680001406551FF2CF4695F1DF08C0161617061F +:104690001806991FF1CF8695710561050894089554 +:1046A000E894BB2766277727CB0197F908950BD0AD +:1046B00078C069D028F06ED018F0952309F05AC060 +:1046C0005FC01124EECFCADFA0F3959FD1F3950F01 +:1046D00050E0551F629FF001729FBB27F00DB11D86 +:1046E000639FAA27F00DB11DAA1F649F6627B00D16 +:1046F000A11D661F829F2227B00DA11D621F739FFF +:10470000B00DA11D621F839FA00D611D221F749F0C +:104710003327A00D611D231F849F600D211D822F53 +:10472000762F6A2F11249F5750408AF0E1F088239A +:104730004AF0EE0FFF1FBB1F661F771F881F9150A7 +:104740005040A9F79E3F510570F014C0AACF5F3FBB +:10475000ECF3983EDCF3869577956795B795F795DA +:10476000E7959F5FC1F7FE2B880F911D9695879562 +:1047700097F9089597F99F6780E870E060E00895E1 +:104780009FEF80EC089500240A9416161706180669 +:104790000906089500240A94121613061406050645 +:1047A0000895092E0394000C11F4882352F0BB0FD6 +:1047B00040F4BF2B11F460FF04C06F5F7F4F8F4F39 +:1047C0009F4F089597FB072E16F4009407D077FDAE +:1047D00009D00E94FC2307FC05D03EF490958195FA +:1047E0009F4F0895709561957F4F0895EE0FFF1FBD +:1047F0000590F491E02D0994AA1BBB1B51E107C061 +:10480000AA1FBB1FA617B70710F0A61BB70B881F60 +:10481000991F5A95A9F780959095BC01CD010895EF +:10482000F999FECF92BD81BDF89A992780B5089578 +:10483000A8E1B0E042E050E00C943824262FF9992A +:10484000FECF92BD81BDF89A019700B4021639F0EF +:104850001FBA20BD0FB6F894FA9AF99A0FBE0895C0 +:104860000196272F0E941F240C941E24DC01CB01EB +:10487000FC01F999FECF06C0F2BDE1BDF89A319670 +:1048800000B40D9241505040B8F70895F894FFCF0E +:10489000200279080709E408B0087C080101C10179 +:1048A00028080A03140A3F4D3639A9045C0426047B +:1048B000ED0380039903B203CB0301020304050651 +:0448C00007080900DC :00000001FF -- cgit v1.2.1 From 5845eb05b53ea685c9622abf011870ab4ce84f39 Mon Sep 17 00:00:00 2001 From: Erez Zukerman Date: Tue, 10 May 2016 20:48:14 -0400 Subject: [Erez & Jack] Documents audio output --- README.md | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/README.md b/README.md index 071659e05d..395b4a5523 100644 --- a/README.md +++ b/README.md @@ -377,6 +377,55 @@ You can currently send 4 hex digits with your OS-specific modifier key (RALT for Enable the backlight from the Makefile. +## Driving a speaker - audio support + +Your keyboard can make sounds! If you've got a Planck, Preonic, or basically any keyboard that allows access to the C6 port, you can hook up a simple speaker and have it beep. You can use those beeps to indicate layer transitions, modifiers, special keys, or just to play some funky 8bit tunes. + +The audio code lives in [quantum/audio/audio.h](/quantum/audio/audio.h) and in the other files in the audio directory. It's enabled by default on the Planck [stock keymap](/keyboard/planck/keymaps/default/keymap.c). Here are the important bits: + +``` +#include "audio.h" +``` + +Then, lower down the file: + +``` +float tone_startup[][2] = { + ED_NOTE(_E7 ), + E__NOTE(_CS7), + E__NOTE(_E6 ), + E__NOTE(_A6 ), + M__NOTE(_CS7, 20) +}; +``` + +This is how you write a song. Each of these lines is a note, so we have a little ditty composed of five notes here. + +Then, we have this chunk: + +``` +float tone_qwerty[][2] = SONG(QWERTY_SOUND); +float tone_dvorak[][2] = SONG(DVORAK_SOUND); +float tone_colemak[][2] = SONG(COLEMAK_SOUND); +float tone_plover[][2] = SONG(PLOVER_SOUND); +float tone_plover_gb[][2] = SONG(PLOVER_GOODBYE_SOUND); + +float music_scale[][2] = SONG(MUSIC_SCALE_SOUND); +float goodbye[][2] = SONG(GOODBYE_SOUND); +``` + +Wherein we bind predefined songs (from [audio/song_list.h](/audio/song_list.h)) into named variables. This is one optimization that helps save on memory: These songs only take up memory when you reference them in your keymap, because they're essentially all preprocessor directives. + +So now you have something called `tone_plover` for example. How do you make it play the Plover tune, then? If you look further down the keymap, you'll see this: + +``` +PLAY_NOTE_ARRAY(tone_plover, false, 0); // Signature is: Song name, repeat, rest style +``` + +This is inside one of the macros. So when that macro executes, your keyboard plays that particular chime. + +"Rest style" in the method signature above (the last parameter) specifies if there's a rest (a moment of silence) between the notes. + ## MIDI functionalty This is still a WIP, but check out `quantum/keymap_midi.c` to see what's happening. Enable from the Makefile. -- cgit v1.2.1 From c7d52fda9ec856e32bb8e2d3975102d9fea48a72 Mon Sep 17 00:00:00 2001 From: Thiago Alves Date: Tue, 10 May 2016 20:58:59 -0700 Subject: Add an initial Readme to the keymap. --- keyboard/ergodox_ez/keymaps/townk_osx/readme.md | 77 +++++++++++++++++++++ .../keymaps/townk_osx/townk_osx_base.png | Bin 0 -> 785859 bytes .../ergodox_ez/keymaps/townk_osx/townk_osx_fn.png | Bin 0 -> 390041 bytes .../keymaps/townk_osx/townk_osx_keypad.png | Bin 0 -> 424425 bytes 4 files changed, 77 insertions(+) create mode 100644 keyboard/ergodox_ez/keymaps/townk_osx/readme.md create mode 100644 keyboard/ergodox_ez/keymaps/townk_osx/townk_osx_base.png create mode 100644 keyboard/ergodox_ez/keymaps/townk_osx/townk_osx_fn.png create mode 100644 keyboard/ergodox_ez/keymaps/townk_osx/townk_osx_keypad.png diff --git a/keyboard/ergodox_ez/keymaps/townk_osx/readme.md b/keyboard/ergodox_ez/keymaps/townk_osx/readme.md new file mode 100644 index 0000000000..c2853ca173 --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/townk_osx/readme.md @@ -0,0 +1,77 @@ +# Townk's Keymap + +Trying to take care of an enjury on my arm I borrow an ergonomic keyboard from +a frient ([Kinesis Advantage](http://www.kinesis-ergo.com/shop/advantage-pro-for-pc-mac/)). + +I really enjoyed my time with it but there were some anoyancies: + +* The curvature on the keys bothered me since I'm a Vim user and using the + motion keys on my editor was awkard. +* I had to spend too much time remapping the keyboard to make some symbol keys + more accessible to me. +* The fact that my hands had to stay close to each other was a bit stressfull + to my sholders. + +After a long research I find out that Ergodox EZ would be perfect for my needs +and purchase one. Before the keyboard even got in my hands I started to think +on the layout I would use on it and soon enough I planed couple adjustments +from the Kinesis I was using so far. + +## The layout + +Here are the layout mapping in images so you can have a glimpse on it: + +![Base Layout](townk_osx_base.png) +![fn Layout](townk_osx_fn.png) +![Keypad & Mouse Layout](townk_osx_keypad.png) + +Notice that, differently from the default behavior, my layer keys are not transparent +by default, which means that if you press any non-labeled white key, nothing will be +handled to the OS. + +### One shot keys + +It all started with the access to the function keys (F1, F2, F3...), since +those keys are located on a different layer I needed a way to press them with +minimal effort without disrupting my flow. + +For me, togglihg a layer to press a button and than toggle it back is a waste +of time (although I admit it's a single tap from what I have), so I decided to +do it as a one shot key. I could press it and the next pressed key would be +handled by the target layer which just after it delivers the key to the OS it +would get back to the previous layer. + +After setting up my layout to do just that I realized that occasionally I +would stop myseld on the middle of the process and the one shot layer would be +still triggered until I press any other key. So to prevent me from tapping +keys I don't want I added a timeout of 3 seconds for the one shot actions. + +Ultimately I tested the shift key as a one shot one and really like it, so +here you have it, all the one shot keys on my layout. + +## Glossary + +If you're not familiar with the Mac symbols used on some keys, here is a +reference to them: + +| Symbol | Description | +| :----: | ------------------- | +| ⌘ | Command | +| ⇪ | Caps Lock | +| ⇧ | Shift | +| ⌥ | Option (alt) | +| ⎋ | Esc | +| ⇥ | Tab forward | +| ⇤ | Tab backward | +| ⌃ | Control | +| ␣ | Space | +| ⌫ | Backspace | +| ⌦ | Delete | +| ⏎ | Enter | +| ⌤ | Return | +| ⌽ | Power on/off button | +| ↖ | Home | +| ↘ | End | +| ⇞ | Page up | +| ⇟ | Page down | +| ⌧ | Clear | diff --git a/keyboard/ergodox_ez/keymaps/townk_osx/townk_osx_base.png b/keyboard/ergodox_ez/keymaps/townk_osx/townk_osx_base.png new file mode 100644 index 0000000000..f9bc8b443a Binary files /dev/null and b/keyboard/ergodox_ez/keymaps/townk_osx/townk_osx_base.png differ diff --git a/keyboard/ergodox_ez/keymaps/townk_osx/townk_osx_fn.png b/keyboard/ergodox_ez/keymaps/townk_osx/townk_osx_fn.png new file mode 100644 index 0000000000..983b723480 Binary files /dev/null and b/keyboard/ergodox_ez/keymaps/townk_osx/townk_osx_fn.png differ diff --git a/keyboard/ergodox_ez/keymaps/townk_osx/townk_osx_keypad.png b/keyboard/ergodox_ez/keymaps/townk_osx/townk_osx_keypad.png new file mode 100644 index 0000000000..8f04b4327d Binary files /dev/null and b/keyboard/ergodox_ez/keymaps/townk_osx/townk_osx_keypad.png differ -- cgit v1.2.1 From f70dec3ee959f7352d4448da65c6b865f0d4417c Mon Sep 17 00:00:00 2001 From: Thiago Alves Date: Wed, 11 May 2016 14:01:15 -0700 Subject: Remove unused variable on the keymap. --- keyboard/ergodox_ez/keymaps/townk_osx/keymap.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/keyboard/ergodox_ez/keymaps/townk_osx/keymap.c b/keyboard/ergodox_ez/keymaps/townk_osx/keymap.c index eb7700b7ff..b63698ec6a 100644 --- a/keyboard/ergodox_ez/keymaps/townk_osx/keymap.c +++ b/keyboard/ergodox_ez/keymaps/townk_osx/keymap.c @@ -200,8 +200,6 @@ const uint16_t PROGMEM fn_actions[] = { [3] = ACTION_LAYER_TAP_KEY(KEYPAD, KC_RBRC), }; -static uint16_t key_timer; - const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { // MACRODOWN only works in this function switch(id) { -- cgit v1.2.1 From 69f05e1afd2e046938209e00db62d18efead4932 Mon Sep 17 00:00:00 2001 From: cwhits Date: Thu, 12 May 2016 15:08:53 -0400 Subject: [planck] adds button for toggling output in plover app (#323) * [planck] toggle plover output in app when toggling plover layer on keyboard * [planck] moved plover toggle to separate key * [planck] renamed toggle button --- keyboard/planck/keymaps/default/keymap.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/keyboard/planck/keymaps/default/keymap.c b/keyboard/planck/keymaps/default/keymap.c index ac4937b69e..56f20a3b99 100644 --- a/keyboard/planck/keymaps/default/keymap.c +++ b/keyboard/planck/keymaps/default/keymap.c @@ -38,6 +38,7 @@ extern keymap_config_t keymap_config; #define VC_DE M(11) #define PLOVER M(12) #define EXT_PLV M(13) +#define TOG_OUT M(14) // Fillers to make layering more clear #define _______ KC_TRNS @@ -151,7 +152,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |------+------+------+------+------+-------------+------+------+------+------+------| * | | S | T | P | H | * | * | F | P | L | T | D | * |------+------+------+------+------+------|------+------+------+------+------+------| - * | | S | K | W | R | * | * | R | B | G | S | Z | + * |TogOut| S | K | W | R | * | * | R | B | G | S | Z | * |------+------+------+------+------+------+------+------+------+------+------+------| * | Exit | | | A | O | | E | U | | | | * `-----------------------------------------------------------------------------------' @@ -160,7 +161,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_PLOVER] = { {KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1 }, {XXXXXXX, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC}, - {XXXXXXX, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, + {TOG_OUT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, {EXT_PLV, XXXXXXX, XXXXXXX, KC_C, KC_V, XXXXXXX, XXXXXXX, KC_N, KC_M, XXXXXXX, XXXXXXX, XXXXXXX} }, @@ -343,7 +344,11 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) layer_off(_PLOVER); } break; - + case 14: + if (record->event.pressed) { + return MACRO( D(E), D(R), D(F), D(V), D(O), D(L), U(E), U(R), U(F), U(V), U(O), U(L), END ); + } + break; } return MACRO_NONE; }; -- cgit v1.2.1 From 26e315a6bb026c2a722838c11ee4c101a80acc87 Mon Sep 17 00:00:00 2001 From: Tobias Matt Date: Sat, 14 May 2016 10:04:14 +0200 Subject: readme added --- keyboard/ergodox_ez/keymaps/adnw/k_o_y/readme.md | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 keyboard/ergodox_ez/keymaps/adnw/k_o_y/readme.md diff --git a/keyboard/ergodox_ez/keymaps/adnw/k_o_y/readme.md b/keyboard/ergodox_ez/keymaps/adnw/k_o_y/readme.md new file mode 100644 index 0000000000..f0dd3815c1 --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/adnw/k_o_y/readme.md @@ -0,0 +1,7 @@ +# Basic implementation for k.o,y variant of the adnw layout + +adnw is a layout optimised for usage with german and english language +k.o,y is a variant of this layout +http://www.adnw.de/index.php?n=Main.SeitlicheNachbaranschl%C3%A4ge + +The os must use the de_DE layout -- cgit v1.2.1 From c7d2c79d34501480147f8aa6221e1d46ce473af6 Mon Sep 17 00:00:00 2001 From: Jacob Bilger Date: Sat, 14 May 2016 21:11:33 -0400 Subject: adds Bilger321's planck keymap --- keyboard/planck/keymaps/Jacob/Keyboard Layout.PNG | Bin 0 -> 17292 bytes keyboard/planck/keymaps/Jacob/keymap.c | 56 + keyboard/planck/keymaps/Jacob/planck.hex | 1151 +++++++++++++++++++++ keyboard/planck/keymaps/Jacob/readme.md | 1 + 4 files changed, 1208 insertions(+) create mode 100644 keyboard/planck/keymaps/Jacob/Keyboard Layout.PNG create mode 100644 keyboard/planck/keymaps/Jacob/keymap.c create mode 100644 keyboard/planck/keymaps/Jacob/planck.hex create mode 100644 keyboard/planck/keymaps/Jacob/readme.md diff --git a/keyboard/planck/keymaps/Jacob/Keyboard Layout.PNG b/keyboard/planck/keymaps/Jacob/Keyboard Layout.PNG new file mode 100644 index 0000000000..40f0b89429 Binary files /dev/null and b/keyboard/planck/keymaps/Jacob/Keyboard Layout.PNG differ diff --git a/keyboard/planck/keymaps/Jacob/keymap.c b/keyboard/planck/keymaps/Jacob/keymap.c new file mode 100644 index 0000000000..5e6e8498e2 --- /dev/null +++ b/keyboard/planck/keymaps/Jacob/keymap.c @@ -0,0 +1,56 @@ +#include "planck.h" +#include "action_layer.h" +#ifdef BACKLIGHT_ENABLE + #include "backlight.h" +#endif + +//Simple Keymap where CTRL, WINKEY, and ALT keys are placed in a more familiar location for Windows users. +//Focus of this particular keymap is to enable easy transition from more traditional keyboards to OLKB Planck. + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +#define _QW 0 +#define _LW 1 +#define _RS 2 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_QW] = { /* Qwerty */ + {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, + {KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, + {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, MT(MOD_RSFT, KC_ENT)}, + {KC_LCTL, KC_LGUI, KC_LALT, M(0), MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} + }, + [_RS] = { /* RAISE */ + {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL }, + {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, + {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS} + }, + [_LW] = { /* LOWER */ + {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL }, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LBRC, KC_RBRC, KC_TRNS}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS} + } +}; + +const uint16_t PROGMEM fn_actions[] = { + +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + switch(id) { + case 0: + if (record->event.pressed) { + register_code(KC_RSFT); + #ifdef BACKLIGHT_ENABLE + backlight_step(); + #endif + } else { + unregister_code(KC_RSFT); + } + break; + } + return MACRO_NONE; +}; diff --git a/keyboard/planck/keymaps/Jacob/planck.hex b/keyboard/planck/keymaps/Jacob/planck.hex new file mode 100644 index 0000000000..3ea701202c --- /dev/null +++ b/keyboard/planck/keymaps/Jacob/planck.hex @@ -0,0 +1,1151 @@ +:100000000C94A8010C94EC010C94EC010C94EC0100 +:100010000C94EC010C94EC010C94EC010C94EC01AC +:100020000C94EC010C94EC010C94410D0C94050D16 +:100030000C94C11B0C94EC010C94EC010C94EC019D +:100040000C94EC010C94EC010C94EC010C94EC017C +:100050000C94EC010C94841C0C94EC010C94EC01B9 +:100060000C94EC010C94EC010C94EC010C94EC015C +:100070000C94EC010C94EC010C94EC010C94EC014C +:100080000C94EC010C94EC010C94EC010C94EC013C +:100090000C94EC010C94EC010C94EC010C94EC012C +:1000A0000C94EC010C94EC010C94EC012B0014006A +:1000B0001A000800150017001C0018000C001200A0 +:1000C00013002A00290004001600070009000A0096 +:1000D0000B000D000E000F0033003400E1001D0086 +:1000E0001B00060019000500110010003600370043 +:1000F00038002872E000E300E200003001522C00DA +:100100002C0002525000510052004F0035021E02D6 +:100110001F022002210222022302240225022602BB +:1001200027024C0001000100010001000100010054 +:1001300001002D022E022F023002310201000100C7 +:1001400001000100010001000100010001002F0079 +:100150003000010001000100010001000100010068 +:1001600001000100010001000100010035001E0036 +:100170001F0020002100220023002400250026006B +:1001800027004C0001003A003B003C003D003E00CF +:100190003F002D002E002F003000310001004000F4 +:1001A00041004200430044004500010001000100FD +:1001B0000100010001000100010001000100010037 +:1001C0000100010001000100010001000501090614 +:1001D000A101050719E029E715002501950875011A +:1001E0008102950175088101050819012905950508 +:1001F000750191029501750391010507190029FF09 +:10020000150025FF950675088100C005010902A1AA +:10021000010901A10005091901290515002501950C +:1002200005750181029501750381010501093009F8 +:10023000311581257F9502750881060938158125BC +:100240007F950175088106050C0A38021581257F06 +:10025000950175088106C0C005010980A1018502CC +:1002600016010026B7001A01002AB7007510950183 +:100270008100C0050C0901A1018503160100269C1F +:10028000021A01002A9C02751095018100C012011A +:10029000100100000008EDFE606001000102000195 +:1002A00009025400030100A0FA090400000103013F +:1002B0000100092111010001223F00070581030807 +:1002C000000A0904010001030102000921110100D3 +:1002D00001224D000705820308000A0904020001FB +:1002E00003000000092111010001223600070583E7 +:1002F0000308000A040309042C034F007200740071 +:1003000068006F006C0069006E006500610072009B +:1003100020004B006500790062006F0061007200F0 +:10032000640073000000280354006800650020008A +:1003300050006C0061006E0063006B0020004B00F9 +:100340006500790062006F006100720064000000C7 +:1003500011241FBECFEFDAE0DEBFCDBF04B603FE2F +:1003600024C08091ED019091EE01A091EF01B09138 +:10037000F0018750904BA740B04BB9F41092ED01BB +:100380001092EE011092EF011092F00114BE84B7AA +:10039000877F84BF88E10FB6F89480936000109245 +:1003A00060000FBEE0E0F8E3099511E0A0E0B1E0E5 +:1003B000EAE7F7E402C005900D92A435B107D9F73A +:1003C00011E0A4E5B1E001C01D92AD3EB107E1F737 +:1003D0000E9441090C94BB230C940000FC0166238D +:1003E00061F48281882331F085EE0E947D110E94A4 +:1003F000BC2103C085EE0E942A1180E090E00895A0 +:1004000008950895089508950E94010208950E9494 +:10041000020208950E940302089584E0809355012A +:1004200008950E949C2123E030E0281B3109220F0F +:10043000331F2093540108950E9411020E940D025F +:10044000109256010895982F2F98882351F4809187 +:100450008000877F8093800010928D0010928C0026 +:1004600020C0833041F480918000886080938000B8 +:100470008FEF9FEF12C08091800088608093800092 +:1004800023E030E0291B3109220F331F8FEF9FEF4C +:1004900002C0969587952A95E2F790938D008093F8 +:1004A0008C000E9411020895279A2F988FEF9FEFDA +:1004B00090938700809386008AE08093800089E192 +:1004C000809381000E942A220E941C0208950E94AB +:1004D00054026E9A769A0E94000208950895E62FBB +:1004E000F0E0EE0FFF1F98E1799F90011124E20FD9 +:1004F000F31F90E6899FC0011124E80FF91FE4550E +:10050000FF4F25913491C9010895FC01EE0FFF1FA3 +:10051000E45BFF4F25913491C9010895FC01EE0F72 +:10052000FF1FE453FE4F25913491C9010895CF93E5 +:10053000DF93EC0180E4C030D807A0F590E3C03031 +:10054000D90708F005C1C83ED105E8F4C03ED10581 +:1005500008F069C0C83AD10588F4C53AD10508F059 +:1005600064C0C130D10509F4E8C0C130D10508F438 +:1005700014C2C430D10508F410C255C0CB3BD1051C +:1005800008F00BC261C080E2C030D80708F0DBC0C1 +:1005900091E0C030D90708F0D3C0C03FD10508F4BE +:1005A000FCC1C8C080E5C130D80709F4F4C090E5AB +:1005B000C230D907F0F480E4C131D80709F4D4C0BF +:1005C00090E4C231D90730F480E4C031D80708F490 +:1005D000C3C0C7C090E4C331D90709F4CBC080E4DD +:1005E000C331D80708F4C3C0C050D04509F0D5C105 +:1005F000C4C080E6C030D80730F491E5C030D907D8 +:1006000008F05EC1CEC080E7C030D80708F4C5C18D +:1006100090E8C030D90708F4B8C180E9C030D807E5 +:1006200008F0BBC1B6C19E01BAC1C53AD10519F4E3 +:1006300081E890E47DC0C63AD10519F083E890E4E2 +:1006400077C082E890E474C0C83AD10519F482EE0C +:1006500094E46EC0C93AD10519F489EE94E468C0F7 +:10066000CA3AD10519F48AEE94E462C0CB3AD105B6 +:1006700019F485EB94E45CC0CC3AD10519F486EB0F +:1006800094E456C0CD3AD10519F487EB94E450C0F8 +:10069000C03BD10519F48CEC94E44AC0CE3AD105A4 +:1006A00019F48DEC94E444C0CF3AD10519F483E8F1 +:1006B00095E43EC0C13BD10519F48AE895E438C001 +:1006C000C23BD10519F482E995E432C0C33BD105A0 +:1006D00019F484E995E42CC0C43BD10519F481E2F6 +:1006E00096E426C0C53BD10519F483E296E420C008 +:1006F000C63BD10519F484E296E41AC0C73BD10584 +:1007000019F485E296E414C0C83BD10519F486E2D9 +:1007100096E40EC0C93BD10519F487E296E408C0FF +:10072000CA3BD10519F080E094E402C08AE296E465 +:100730009C0135C19E01306532C121E030E02FC1FE +:100740009E013F712CC1CE019F700E948E0228C174 +:100750009E013070306C23C19E012F703070346D5B +:100760001EC120E031ED1BC120E030ED18C120E0BA +:1007700032ED15C120E033ED12C10E94171184EC57 +:1007800099E020E931E0F9013197F1F70197D9F7C4 +:100790000E94A91C04C18091CD0181608093CD018C +:1007A000FEC00E94051D882311F40E94101D0E94A6 +:1007B000F61C8093EB011092EC0190E5C230D90752 +:1007C00011F4816076C090E5C430D90711F48260DD +:1007D00070C090E5C630D90711F484606AC090E516 +:1007E000C830D90711F4886064C090E5CA30D907D1 +:1007F00011F480615EC090E5CC30D90711F48062BD +:1008000058C090E5CE30D90711F4806452C090E50D +:10081000C031D90711F480684CC090E5C231D907C6 +:1008200011F48C6046C080E5C330D80721F4809174 +:10083000EB018E7F3EC090E5C530D90721F4809151 +:10084000EB018D7F36C080E5C730D80721F4809159 +:10085000EB018B7F2EC090E5C930D90721F4809140 +:10086000EB01877F26C080E5CB30D80721F480914B +:10087000EB018F7E1EC090E5CD30D90721F4809129 +:10088000EB018F7D16C080E5CF30D80721F4809131 +:10089000EB018F7B0EC090E5C131D90721F4809127 +:1008A000EB018F7706C0C351D04529F48091EB014D +:1008B000837F8093EB018091EB010E94EB1C6FC062 +:1008C0004D2F55274F70507041305105F9F49E015E +:1008D000A4E0220F331FAA95E1F720703370CE01F8 +:1008E000F3E0880F991FFA95E1F780769070282B36 +:1008F000392B3C68C370D07002C0440F551FCA9595 +:10090000E2F74F715070242B352B49C0423051050E +:1009100029F43C2F2227216F306A41C04330510512 +:1009200051F49E0173E0220F331F7A95E1F7207E88 +:1009300037703C680CC044305105B9F49E0163E047 +:10094000220F331F6A95E1F7207E37703A68C37033 +:10095000D07081E090E002C0880F991FCA95E2F73D +:100960008F719070282B392B1AC04530510529F40E +:100970003C2F2227246F306A12C04630510579F48B +:10098000CF71D0703C2F222702C09E013F70306291 +:1009900006C09E013F70306A02C020E030E0C9010D +:1009A000DF91CF9108950E946F02803E9105F0F48F +:1009B000803C910588F58133910509F475C0823337 +:1009C000910548F48932910509F464C08A32910591 +:1009D00009F07BC06EC08933910509F18238910519 +:1009E000F1F08533910509F070C04FC0833E910549 +:1009F00061F1843E910540F4803E9105B9F0823E5C +:100A0000910509F062C01CC0863E910551F1873EF8 +:100A1000910509F05AC02AC00E94850208952091CC +:100A2000EB0120FD0AC021FD08C04CC08091EB0104 +:100A300080FF03C089E390E045C080EE90E042C0B3 +:100A40008091EB0182FD08C004C08091EB0182FF20 +:100A500003C082EE90E036C084FD11C083EE90E0CA +:100A600031C08091EB0183FD08C004C08091EB018F +:100A700083FF03C086EE90E025C084FF03C080E0C2 +:100A800090E020C087EE90E01DC08091EB0185FFD3 +:100A900005C007C08091EB0185FF03C085E390E0AE +:100AA00011C089E290E00EC08091EB0186FF05C085 +:100AB00007C08091EB0186FF03C081E390E002C094 +:100AC0008AE290E00E94970208950E94970208959A +:100AD0000E940A020895E82FF0E0EE0FFF1FE95A86 +:100AE000FE4F80819181089508954F925F926F9299 +:100AF0007F928F929F92AF92BF92CF92DF92EF92AE +:100B0000FF920F931F93DF93CF93CDB7DEB7289754 +:100B10000FB6F894DEBF0FBECDBFAE014F5F5F4F83 +:100B200060E070E0EE24FF24CC24DD24AA24BB2462 +:100B3000882499242A0101E010E029E0622E712C1A +:100B40006C0E7D1ED201E4E3F1E088E001900D928D +:100B50008150E1F7FA01808191819C01207F307002 +:100B60002032310559F48F709070980102C0220F25 +:100B7000331F8A95E2F7622B732B37C02033310580 +:100B800059F48F709070F80102C0EE0FFF1F8A9524 +:100B9000E2F7EE2AFF2A29C02034310559F48F707C +:100BA0009070980102C0220F331F8A95E2F7C22A83 +:100BB000D32A1BC02035310559F48F709070F8018D +:100BC00002C0EE0FFF1F8A95E2F7AE2ABF2A0DC0C2 +:100BD0002036310551F48F709070980102C0220FB9 +:100BE000331F8A95E2F7822A932A4E5F5F4F46159C +:100BF000570509F0A7CF24B1962F862F8095822321 +:100C000084B985B1982B95B927B19E2D8E2D8095ED +:100C1000822387B988B1982B98B92AB19C2D8C2D45 +:100C2000809582238AB98BB1982B9BB92DB19A2DCF +:100C30008A2D809582238DB98EB1982B9EB920B3D1 +:100C4000982D882D8095822380BB81B3982B91BBF2 +:100C500028960FB6F894DEBF0FBECDBFCF91DF91BF +:100C60001F910F91FF90EF90DF90CF90BF90AF90CA +:100C70009F908F907F906F905F904F9008954F92CC +:100C80005F926F927F928F929F92AF92BF92CF921C +:100C9000DF92EF92FF920F931F93DF93CF93CDB725 +:100CA000DEB768970FB6F894DEBF0FBECDBF85B72D +:100CB000806885BF85B7806885BF0E947505AE01D5 +:100CC0004F5F5F4F60E070E0EE24FF24CC24DD2412 +:100CD000AA24BB24882499242A0101E010E039E1E8 +:100CE000632E712C6C0E7D1ED201ECE3F1E088E1E5 +:100CF00001900D928150E1F7FA01808191819C0170 +:100D0000207F30702032310559F48F709070980137 +:100D100002C0220F331F8A95E2F7622B732B37C074 +:100D20002033310559F48F709070F80102C0EE0F36 +:100D3000FF1F8A95E2F7EE2AFF2A29C020343105E9 +:100D400059F48F709070980102C0220F331F8A955A +:100D5000E2F7C22AD32A1BC02035310559F48F701F +:100D60009070F80102C0EE0FFF1F8A95E2F7AE2ADD +:100D7000BF2A0DC02036310551F48F709070980154 +:100D800002C0220F331F8A95E2F7822A932A4E5F10 +:100D90005F4F4615570509F0A7CF24B1962F862F30 +:100DA0008095822384B985B1982B95B927B19E2D62 +:100DB0008E2D8095822387B988B1982B98B92AB156 +:100DC0009C2D8C2D809582238AB98BB1982B9BB951 +:100DD0002DB19A2D8A2D809582238DB98EB1982BB5 +:100DE0009EB920B3982D882D8095822380BB81B336 +:100DF000982B91BB80E090E0FC01E95AFE4F1182F4 +:100E00001082FC01E15AFE4F118210820296883056 +:100E1000910591F70E94670268960FB6F894DEBFBD +:100E20000FBECDBFCF91DF911F910F91FF90EF903B +:100E3000DF90CF90BF90AF909F908F907F906F90FA +:100E40005F904F9008954F925F926F927F928F9232 +:100E50009F92AF92BF92CF92DF92EF92FF920F9349 +:100E60001F93DF93CF93CDB7DEB7A0970FB6F8945B +:100E7000DEBF0FBECDBF909000016E010894C11C73 +:100E8000D11CEFE5AE2EE1E0BE2EC6015C2C892E12 +:100E900071E0E72EF12C60EA462E59E0652E712CA8 +:100EA0006C0E7D1E852D982DDC01E4E1F1E088E0DB +:100EB00001900D928150E1F7F60120813181C90145 +:100EC000807F90708032910589F484B12F703070EA +:100ED000A70102C0440F551F2A95E2F79A01842BFF +:100EE00084B985B12095282325B94FC08033910559 +:100EF00089F487B12F703070F70102C0EE0FFF1F29 +:100F00002A95E2F79F018E2B87B988B12095282377 +:100F100028B93BC08034910589F48AB12F703070B4 +:100F2000A70102C0440F551F2A95E2F79A01842BAE +:100F30008AB98BB1209528232BB927C0803591051C +:100F400089F48DB12F703070F70102C0EE0FFF1FD2 +:100F50002A95E2F79F018E2B8DB98EB1209528231B +:100F60002EB913C08036910581F480B32F70307094 +:100F7000A70102C0440F551F2A95E2F79A01842B5E +:100F800080BB81B32095282321BB842D8A95F1F75E +:100F9000830160E070E040E050E0D301ECE1F1E07B +:100FA00088E101900D928150E1F7F80120813181B3 +:100FB000C901807F90708032910511F483B113C014 +:100FC0008033910511F486B10EC08034910511F47F +:100FD00089B109C08035910511F48CB104C0803607 +:100FE0009105B9F48FB190E02F70307002C09595E3 +:100FF00087952A95E2F780FF03C080E090E007C064 +:10100000C701062E02C0880F991F0A94E2F7482BE9 +:10101000592B6F5F7F4F0E5F1F4F6C30710509F0CA +:10102000BCCFF501808191818417950721F0518310 +:10103000408345E0942E0E94750542E050E0C40EC6 +:10104000D51EA40EB51EC614D70409F02BCF90925E +:101050000001992059F1892D815080930001882346 +:1010600029F080EA9FE00197F1F720C080915F01AD +:101070009091600190935801809357018091610194 +:101080009091620190935A0180935901809163017C +:101090009091640190935C0180935B018091650164 +:1010A0009091660190935E0180935D010E9404021D +:1010B00081E0A0960FB6F894DEBF0FBECDBFCF91F2 +:1010C000DF911F910F91FF90EF90DF90CF90BF9035 +:1010D000AF909F908F907F906F905F904F9008950A +:1010E0001092E1010895089508958091680108958E +:1010F000DF93CF9300D00F92CDB7DEB7AC018091D4 +:10110000E201843029F583E08093E9002FEF95ED2B +:1011100005C0892F8A95F1F7222329F08091E800F4 +:10112000215085FFF6CF8091E80085FF11C05B83D9 +:101130004A8383E08983CE01019663E070E040E05A +:1011400050E00E94A70B8091E8008E778093E80022 +:101150000F900F900F90CF91DF910895DF93CF9371 +:1011600000D00F92CDB7DEB7AC018091E2018430A0 +:1011700029F583E08093E9002FEF95ED05C0892FD5 +:101180008A95F1F7222329F08091E800215085FF0C +:10119000F6CF8091E80085FF11C05B834A8382E02F +:1011A0008983CE01019663E070E040E050E00E9448 +:1011B000A70B8091E8008E778093E8000F900F9046 +:1011C0000F90CF91DF910895AC018091E2018430BE +:1011D00001F582E08093E9002FEF95ED05C0892F9E +:1011E0008A95F1F7222329F08091E800215085FFAC +:1011F000F6CF8091E80085FF0CC0CA0165E070E081 +:1012000040E050E00E94A70B8091E8008E77809329 +:10121000E80008950F931F93182F092F8091E20182 +:10122000843061F581E08093E9009FEF25ED05C0F2 +:10123000822F8A95F1F7992329F08091E800915047 +:1012400085FFF6CF8091E80085FF18C0812F902F91 +:1012500068E070E040E050E00E94A70B8091E80059 +:101260008E778093E800A9E6B1E0212F302FC901E5 +:10127000FC0188E001900D928150E1F71F910F91E0 +:10128000089584B7877F84BF88E10FB6F894809370 +:101290006000109260000FBE80E090E020E80FB682 +:1012A000F89420936100809361000FBE0E94F30FB9 +:1012B0000E94850C0E94E60C8091E200846080937D +:1012C000E20078940E94840F0E94A81082E091E0CE +:1012D0000E949A0F0CC00E94F61B8091E0018823A7 +:1012E00031F00E94221C882311F00E94BC0A8091D8 +:1012F000E201853081F30E94F90FF9CF8091E1017D +:10130000882349F40E94850C0E94E60C8091E2003B +:1013100084608093E20008958091E401833009F4B1 +:1013200055C0843030F4813071F0823009F0AFC0A4 +:1013300096C08A3009F483C08B3009F468C08930C4 +:1013400009F0A5C020C08091E301813A09F09FC057 +:101350008091E800877F8093E8008091E701909179 +:10136000E801892B21F489E691E068E003C080E080 +:1013700090E060E070E00E94D20A8091E8008B77F4 +:101380008093E80008958091E301813209F07FC0E5 +:101390008091E7019091E801892B09F078C0809154 +:1013A000E800877F8093E80005C08091E2018823F0 +:1013B00009F46DC08091E80082FFF7CF8091F100C1 +:1013C000809368018091E8008B771CC08091E301D5 +:1013D000813A09F05CC08091E7019091E801892B86 +:1013E00009F055C08091E800877F8093E8008091E4 +:1013F000E80080FFFCCF809101018093F100809193 +:10140000E8008E778093E8000E94320C0895809166 +:10141000E3018132E1F58091E7019091E801892BA8 +:10142000B1F58091E800877F8093E8000E94320C3C +:101430008091E501809301010E9417110895809128 +:10144000E301813221F58091E800877F8093E800F5 +:101450000E94320C8091E60180936701089580918B +:10146000E301813AA1F48091E800877F8093E8004E +:101470008091E80080FFFCCF809167018093F100AC +:101480008091E8008E778093E8000E94320C0895E6 +:1014900081E061EC42E00E94FA0B82E061EC42E004 +:1014A0000E94FA0B83E061EC42E00E94FA0B08957F +:1014B0000E94EA1B0895DA019330C1F0943030F4B1 +:1014C000913051F0923009F04FC00BC0913221F1B0 +:1014D000923209F049C032C0EEE8F2E022E130E099 +:1014E00047C0E0EAF2E024E530E042C0813051F04C +:1014F000813020F0823009F037C008C0E4EFF2E01C +:10150000849107C0E8EFF2E0849103C0E6E2F3E0E3 +:101510008491282F30E02CC0613041F0613018F008 +:10152000623011F508C0E2EBF2E002C0EBECF2E051 +:1015300029E030E01DC0E4EEF2E0FACF613051F076 +:10154000613018F0623081F40AC0ECECF1E02FE376 +:1015500030E00EC0EBE0F2E02DE430E009C0E8E559 +:10156000F2E026E330E004C0E0E0F0E020E030E02C +:10157000ED93FC93C901089580E189BD82E189BDA5 +:1015800009B400FEFDCF8091D8008F7D8093D800F4 +:101590008091E00082608093E0008091E00081FD16 +:1015A000FCCF08959C014091E9015091EA01461752 +:1015B000570718F4F90190E043C06115710511F067 +:1015C000AB01F8CF8091E8008E778093E80040E08F +:1015D00050E0F0CF8091E201882309F447C08530C4 +:1015E00009F446C08091E80083FD44C08091E80082 +:1015F00082FD36C08091E80080FF22C08091F30018 +:101600009091F200782F60E0292F30E0262B372BC5 +:1016100007C081918093F100415050402F5F3F4FB0 +:101620004115510519F02830310598F390E0283024 +:10163000310509F491E08091E8008E778093E8000D +:101640004115510539F6992329F60AC08091E20126 +:10165000882361F0853061F08091E80083FD0AC045 +:101660008091E80082FFF2CF80E0089582E0089543 +:1016700083E0089581E008959C014091E901509133 +:10168000EA014617570718F4F90190E044C06115C4 +:10169000710511F0AB01F8CF8091E8008E7780934F +:1016A000E80040E050E0F0CF8091E201882309F4A7 +:1016B00048C0853009F447C08091E80083FD45C0EB +:1016C0008091E80082FD37C08091E80080FF23C050 +:1016D0008091F3009091F200782F60E0292F30E0A4 +:1016E000262B372B08C084918093F100319641500E +:1016F00050402F5F3F4F4115510519F028303105FB +:1017000090F390E02830310509F491E08091E800F1 +:101710008E778093E8004115510531F6992321F623 +:101720000AC08091E201882361F0853061F08091E8 +:10173000E80083FD0AC08091E80082FFF2CF80E0DC +:10174000089582E0089583E0089581E00895BF92AE +:10175000CF92DF92EF92FF920F931F93CF93DF937D +:10176000182F092F7B016A010E94530CB82E882381 +:10177000B1F5812F902F9C01E901C114D10439F0FA +:10178000F60180819181E81AF90AC80FD91F00E09B +:1017900010E022C08091E80085FD16C08091E8002D +:1017A0008E778093E800C114D10449F0F60180815E +:1017B0009181800F911F9183808385E011C00E94E9 +:1017C000530C882349F00CC089918093F100089450 +:1017D000E108F1080F5F1F4FE114F104D9F68B2DDA +:1017E000DF91CF911F910F91FF90EF90DF90CF90FD +:1017F000BF900895382F282F2EC0822F8F7080938E +:10180000E900231721F4762F942F50E006C0709141 +:10181000EC009091ED005091F00091FF1BC0809181 +:10182000EB008E7F8093EB008091ED008D7F8093A5 +:10183000ED008091EB0081608093EB007093EC00F1 +:101840009093ED005093F0008091EE0087FD02C070 +:1018500080E008952F5F273080F23F703093E900D9 +:1018600081E008958091E30188239CF404C0809175 +:10187000E2018823B9F08091E80082FFF8CF8091DF +:10188000E8008B778093E80008958091E201882337 +:1018900049F08091E80080FFF8CF8091E8008E77D2 +:1018A0008093E80008954091E4005091E50024E61B +:1018B0008091EC0080FF24C08091E80080FD1EC074 +:1018C0008091E201882311F482E00895853011F4BB +:1018D00083E008958091EB0085FF02C081E00895C8 +:1018E0008091E4009091E5008417950709F3222385 +:1018F00011F484E008952150AC01DACF80E008951E +:101900008091E80082FFDCCFF9CF0E94F80C0E94A2 +:10191000000DE0EEF0E0808181608083A8EDB0E012 +:101920008C918F778C9319BCE7EDF0E080818E7FEE +:1019300080838C918F7E8C931092E1010895EF92B9 +:10194000FF920F931F930E94F80C0E94000D08ED68 +:1019500010E0F80180818F778083808180688083A8 +:1019600080818F7D808319BC1092E2011092DE018C +:101970001092E0011092DF0180EEE82EF12CF701C9 +:1019800080818B7F8083F80180818160808380E00B +:1019900060E042E00E94FA0BE1EEF0E080818E7F91 +:1019A0008083E2EEF0E080818160808380818860C6 +:1019B0008083F70180818E7F8083F8018081806140 +:1019C00080831F910F91FF90EF900895E8EDF0E074 +:1019D00080818F7E8083E7EDF0E08081816080836D +:1019E00084E082BF81E08093E1010E949F0C089512 +:1019F000E8EDF0E080818E7F80831092E200089510 +:101A00001092DA001092E10008951F920F920FB623 +:101A10000F9211241F932F933F934F935F936F93D4 +:101A20007F938F939F93AF93BF93EF93FF93109107 +:101A3000E9008091EC001092E9008091F000877F2E +:101A40008093F00078940E94130E1092E900809128 +:101A5000F00088608093F0001F701093E900FF9100 +:101A6000EF91BF91AF919F918F917F916F915F9116 +:101A70004F913F912F911F910F900FBE0F901F908C +:101A800018951F920F920FB60F9211242F933F9328 +:101A90004F935F936F937F938F939F93AF93BF9376 +:101AA000EF93FF938091E10082FF0BC08091E200F1 +:101AB00082FF07C08091E1008B7F8093E1000E944C +:101AC000830F8091DA0080FF1FC08091D80080FFD3 +:101AD0001BC08091DA008E7F8093DA008091D9005C +:101AE00080FF0DC080E189BD82E189BD09B400FE9F +:101AF000FDCF81E08093E2010E947E0905C019BC00 +:101B00001092E2010E9470088091E10080FF19C0EC +:101B10008091E20080FF15C08091E2008E7F80936B +:101B2000E2008091E20080618093E2008091D80021 +:101B300080628093D80019BC85E08093E2010E9406 +:101B400074088091E10084FF30C08091E20084FF3E +:101B50002CC080E189BD82E189BD09B400FEFDCFC2 +:101B60008091D8008F7D8093D8008091E1008F7E96 +:101B70008093E1008091E2008F7E8093E20080916B +:101B8000E20081608093E2008091DE01882311F001 +:101B900084E007C08091E30087FD02C081E001C0BE +:101BA00083E08093E2010E94580A8091E10083FF64 +:101BB00029C08091E20083FF25C08091E100877FEA +:101BC0008093E10082E08093E2011092DE01809137 +:101BD000E1008E7F8093E1008091E2008E7F809310 +:101BE000E2008091E20080618093E20080E060E0AA +:101BF00042E00E94FA0B8091F00088608093F00030 +:101C00000E947308FF91EF91BF91AF919F918F91C7 +:101C10007F916F915F914F913F912F910F900FBEE8 +:101C20000F901F9018951F93DF93CF93CDB7DEB71A +:101C3000AC970FB6F894DEBF0FBECDBFE3EEF1E078 +:101C40008091F100819321E0EB3EF207C9F70E94F9 +:101C50008C098091E80083FF3EC18091E3013091BF +:101C6000E401353009F487C0363040F43130C9F131 +:101C7000313070F0333009F02EC133C0383009F400 +:101C8000F9C0393009F409C1363009F024C197C0D0 +:101C9000803821F0823809F01EC108C09091DF0120 +:101CA0008091E001882399F0926011C08091E70152 +:101CB0008F708093E9008091EB0090E025E096958D +:101CC00087952A95E1F7982F91701092E9008091FD +:101CD000E800877F8093E8009093F1001092F10074 +:101CE000D4C0882319F0823009F0F5C090E08F71DC +:101CF0009070009721F0029709F0EDC00CC0809120 +:101D0000E501813009F0E7C01092E001333069F558 +:101D10008093E0012AC08091E501882331F520916C +:101D2000E7012F7009F4D7C02093E9008091EB0000 +:101D300080FF1BC0333021F48091EB00806213C020 +:101D40008091EB0080618093EB0081E090E002C025 +:101D5000880F991F2A95E2F78093EA001092EA0013 +:101D60008091EB0088608093EB001092E9008091F5 +:101D7000E800877F8DC0882309F0ADC01091E50190 +:101D80001F778091E3008078812B8093E30080911E +:101D9000E800877F8093E8000E94320C8091E80081 +:101DA00080FFFCCF8091E30080688093E3001123E3 +:101DB00011F482E001C083E08093E2018CC080587E +:101DC000823008F088C08091E5019091E60123E01F +:101DD0008C3D920709F034C083E08C838AE28B83C8 +:101DE0007FB7F894DE0115966EE040E050E011E216 +:101DF000E62FF0E010935700849140FF03C08295D6 +:101E00008F706F5F8F70282F30E08A3018F0C90113 +:101E1000C79602C0C901C0968D939D934F5F5F4FD7 +:101E20004431510529F77FBF8091E800877F809377 +:101E3000E800CE0103966AE270E00E94D20A14C064 +:101E40006091E701AE014F5F5F4F0E945B0ABC01EA +:101E5000009709F440C08091E800877F8093E800F4 +:101E600089819A810E943C0B8091E8008B77809356 +:101E7000E80031C0803879F58091E800877F809351 +:101E8000E8008091DE018093F1008091E8008E7778 +:101E90008093E8000E94320C1EC08823E1F49091E8 +:101EA000E5019230C0F48091E800877F8093E800DC +:101EB0009093DE010E94320C8091DE01882331F480 +:101EC0008091E30087FD02C081E001C084E080933F +:101ED000E2010E94480A8091E80083FF0AC08091D5 +:101EE000E800877F8093E8008091EB008062809318 +:101EF000EB00AC960FB6F894DEBF0FBECDBFCF910E +:101F0000DF911F91089508951F938091E201882326 +:101F100079F01091E9008091EC001092E900809135 +:101F2000E80083FF02C00E94130E1F701093E900A7 +:101F30001F91089590937601809375010895E09123 +:101F40007501F0917601309711F480E008950190C9 +:101F5000F081E02D09950895E0917501F0917601E9 +:101F6000309721F00280F381E02D09950895E091EA +:101F70007501F0917601309721F00480F581E02D14 +:101F8000099508959C01809173019091740128171F +:101F9000390779F03093740120937301E091750152 +:101FA000F0917601309729F00680F781E02DC90184 +:101FB000099508959C0180917101909172012817F3 +:101FC000390779F03093720120937101E091750126 +:101FD000F0917601309729F00084F185E02DC90158 +:101FE0000995089508950E94F20F08950E946805CA +:101FF00008952F923F925F926F927F928F929F925D +:10200000AF92BF92CF92DF92EF92FF920F931F9306 +:10201000DF93CF93CDB7DEB72A970FB6F894DEBF24 +:102020000FBECDBF0E94230728E7822E21E0922E0B +:10203000AA24BB2491E0292E312C5A2C8A2D0E94EF +:102040006B056C01F401E080F180E826F926E114CB +:10205000F104E1F18091CD0181FF02C00E9474057D +:1020600000E010E03101002E02C0660C771C0A94DB +:10207000E2F7C3018E219F21892B19F10E944C1C8C +:102080009C0109835A821B82C620D720CD2811F0DB +:1020900081E08B83C9018160782F9D838C83498186 +:1020A0005A816B818D810E941C15F501EE0FFF1F77 +:1020B000E858FE4F80819181862597259183808302 +:1020C00021C00F5F1F4F0C30110561F60894A11C51 +:1020D000B11C82E090E0880E991E94E0A916B1042C +:1020E00009F0ABCF0E944C1C2FEF2E832F83188654 +:1020F0008160782F9A8789874FEF5FEF60E08A854C +:102100000E941C150E94B41E109177010E949F0F1F +:10211000181731F00E949F0F809377010E94F60FED +:102120002A960FB6F894DEBF0FBECDBFCF91DF91D8 +:102130001F910F91FF90EF90DF90CF90BF90AF90E5 +:102140009F908F907F906F905F903F902F90089519 +:102150000E94431C0E943F060E94CD1C0E942A221E +:102160000895DF93CF9300D000D00F92CDB7DEB7A4 +:102170000F900F900F900F900F90CF91DF910895D7 +:10218000DF93CF9300D000D000D0CDB7DEB7269636 +:102190000FB6F894DEBF0FBECDBFCF91DF9108958B +:1021A0000E94DA19482F892F82958F70282F30E0EE +:1021B0002C3031054CF42A3031056CF4225030407B +:1021C00022303105E8F407C02C30310579F02F308A +:1021D0003105B1F40BC0403F39F0413F18F4403EA7 +:1021E00078F402C0443F61F481E008959F70892F24 +:1021F00090E023E0969587952A95E1F78170089500 +:1022000080E008950E94431B0E94531B0E94181BEC +:102210000E946B1B0E949D1E0E94A91E80E090E000 +:102220000E94C20F80E090E00E94DA0F08950E94A1 +:10223000331B0E9402110895882321F00E942C1B59 +:102240000E946B1B0895882321F00E94261B0E9488 +:102250006B1B0895282F882309F44EC0823859F447 +:102260000E949F0F81FF48C089E30E94E71A0E94E5 +:102270006B1B89E30CC0833869F40E949F0F80FFB9 +:102280003BC083E50E94E71A0E946B1B83E50E9416 +:10229000051B1FC0843859F40E949F0F82FF2CC079 +:1022A00087E40E94E71A0E946B1B87E4F0CF8450FA +:1022B000813A10F4822FEBCF822F805E883060F459 +:1022C000277081E090E001C0880F2A95EAF70E940C +:1022D0002C1B0E946B1B0895822F855A833028F493 +:1022E00080E090E00E94C20F0895285A233120F424 +:1022F00080E090E00E94DA0F08951F93182F882342 +:1023000009F4D0C0823859F40E949F0F81FDCAC0E1 +:1023100089E30E94E71A0E946B1B89E30CC0833893 +:1023200079F40E949F0F80FDBDC083E50E94E71AEB +:102330000E946B1B83E50E94051B0E946B1BB2C0B1 +:10234000843859F40E949F0F82FDACC087E40E943C +:10235000E71A0E946B1B87E4EECF8450813A50F459 +:10236000812F0E94D020882309F09CC0812F0E94D9 +:10237000E71AE3CF812F805E883050F4177081E038 +:1023800090E001C0880F1A95EAF70E94261BD5CF6E +:10239000812F855A8330A0F4153A19F481E890E032 +:1023A0000CC0163A19F482E890E007C0173A19F009 +:1023B00080E090E002C083E890E00E94C20F72C00B +:1023C000812F885A833108F06DC0183A19F482EED3 +:1023D00090E066C0193A19F489EE90E061C01A3AAB +:1023E00019F48AEE90E05CC01B3A19F485EB90E09A +:1023F00057C01C3A19F486EB90E052C01B3B19F40D +:1024000083EB90E04DC01C3B19F484EB90E048C096 +:102410001D3A19F487EB90E043C0103B19F48CECA3 +:1024200090E03EC01E3A19F48DEC90E039C01F3A9E +:1024300019F483E891E034C0113B19F48AE891E083 +:102440002FC0123B19F482E991E02AC0133B19F422 +:1024500084E991E025C0143B19F481E292E020C0A8 +:10246000153B19F483E292E01BC0163B19F484E299 +:1024700092E016C0173B19F485E292E011C0183BB8 +:1024800019F486E292E00CC0193B19F487E292E05D +:1024900007C01A3B19F080E090E002C08AE292E0A7 +:1024A0000E94DA0F1F9108959F92AF92BF92CF9230 +:1024B000DF92EF92FF920F931F93DF93CF93CDB7ED +:1024C000DEB72A970FB6F894DEBF0FBECDBF5C0112 +:1024D000DE011196FC0185E001900D928150E1F73B +:1024E0000B81F501F580F2944FE0F422DE0116969F +:1024F000FE01319685E001900D928150E1F73E8119 +:102500002F8189859A85892B09F484C22F3F09F090 +:1025100070C23F3F09F06DC27DC20E94431B0E9402 +:10252000E11A882379F0002369F08C2D805E8830D1 +:1025300048F082E00E949C1B0E94E11A9924939427 +:10254000982601C099248D2D82958F7090E085305A +:10255000910509F4B5C08630910554F48430910595 +:102560000CF08FC02D2D207F02970CF049C017C0B2 +:102570008C30910544F48A3091050CF072C10897B3 +:1025800009F023C2A9C08D30910509F4EDC18D3049 +:1025900091050CF4DFC10F9709F017C20FC28D2D02 +:1025A0008F70222311F4182F03C0182F1295107F5B +:1025B000002389F0112309F4B9C18C2D805E883085 +:1025C00020F4812F0E94261B03C0812F0E94361BFE +:1025D0000E946B1BABC18C2D0E942A11112309F4A0 +:1025E000F4C1F0E2CF0E27E02C1520F0812F0E94DD +:1025F0002C1B03C0812F0E943C1B0E946B1BE5C15A +:102600008D2D8F70203211F4182F03C0182F1295C2 +:10261000107FCC2021F081E0C81609F514C00023FA +:1026200049F0FF2031F1E1E0FE1619F5812F0E94FB +:10263000561BCBC1FF2021F0F1E0FF1609F4C5C104 +:102640000E94591B30C1002329F025E02F1508F402 +:10265000BCC10FC084E08F1508F4B7C124C10023AA +:1026600061F0FF2031F0F501858180FF5FC18F703F +:102670008583812F0E942311A8C1FF2009F413C173 +:1026800060C18D2D86958695837090E0009721F02E +:10269000019709F09AC10AC0002319F0C60193708E +:1026A00002C080E090E00E94C20F8FC1002319F0A9 +:1026B000C601937002C080E090E00E94DA0F85C1ED +:1026C000002321F08C2D0E94AB1D03C08C2D0E9495 +:1026D000151E0E94A91E79C18D2D837009F05EC060 +:1026E000002309F072C12C2D229526952770220F08 +:1026F000220F8C2D8F70E82EFF2400E010E0022EB8 +:1027000004C0EE0CFF1C001F111F0A94D2F7C4FC7A +:1027100005C060E070E080E090E00FC06FE070E026 +:1027200080E090E004C0660F771F881F991F2A95EC +:10273000D2F76095709580959095D694D694F3E0F5 +:10274000DF224D2D50E041305105A9F042305105B6 +:102750001CF4452B49F039C14230510589F0433012 +:10276000510509F032C113C06E297F29802B912BAE +:102770000E94B21A2AC16E297F29802B912B0BC08F +:102780006E297F29802B912B0E94A11A1EC10E94C5 +:10279000B21AC801B7010E94C31A17C190E0002302 +:1027A00011F496958795817009F40FC12C2D22950F +:1027B00026952770220F220F8C2D8F70E82EFF2474 +:1027C00000E010E0022E04C0EE0CFF1C001F111FE1 +:1027D0000A94D2F7C4FC05C060E070E080E090E0AD +:1027E0000FC06FE070E080E090E004C0660F771FDC +:1027F000881F991F2A95D2F76095709580959095BE +:10280000D694D69423E0D2224D2D50E0413051058C +:10281000A9F0423051051CF4452B49F0D6C0423096 +:10282000510589F04330510509F0CFC013C06E291E +:102830007F29802B912B0E94051AC7C06E297F2902 +:10284000802B912B0BC06E297F29802B912B0E940E +:10285000F419BBC00E94051AC801B7010E94161ADC +:10286000B4C081EFC81699F18C1540F0E0EECE1699 +:1028700008F458C0FFEEFC1558F419C023EFC21637 +:1028800081F1C21648F184EFC81609F04BC033C07D +:102890001C2D1F708D2D8F71002319F00E94631A5B +:1028A000E8CE0E94431A812F0E941C118EC0002383 +:1028B00029F0E4E0EF1508F488C004C0F5E0FF1546 +:1028C00008F483C08D2D8F710E94271A7EC08D2D34 +:1028D0008F710023E1F130C08D2D8F71002361F1E4 +:1028E00036C0002329F08D2D8F710E947F1A6DC094 +:1028F0000E948F1A6AC0002351F01D2D1F71812F75 +:102900000E94631A812F63E00E94B51B5EC081E0C4 +:102910000E949C1B21E02F1508F057C082E00E9406 +:102920009C1B53C0002359F0FF2021F08C2D0E94E6 +:102930007D114BC08D2D8F710E94631A46C0FF2000 +:1029400021F08C2D0E942A1140C08D2D8F710E9484 +:10295000431A3BC08FE0D822C5016C2D4D2D0E943B +:10296000EE010E94181931C0002379F5EFE0DE2254 +:102970004D2D50E042305105B9F0433051053CF443 +:102980004115510559F041305105F9F40AC0433061 +:10299000510569F044305105C1F40CC00E94152264 +:1029A00014C00E94F82111C00E94E3210EC00E94B1 +:1029B000BC210BC08C2D0E94A02107C0FFE0DF22AC +:1029C000C5016C2D4D2D0E946E02992019F10E94B7 +:1029D000DD1A80FD1FC0F50112820E94D71A0E94E5 +:1029E000631AC5010E9454120E94D71A0E94431A0A +:1029F00011C0C5010E94070269817A81802F0E945F +:102A0000E5196C010E9492190E949119002309F4A2 +:102A100086CD83CD2A960FB6F894DEBF0FBECDBF0C +:102A2000CF91DF911F910F91FF90EF90DF90CF90AA +:102A3000BF90AF909F900895DF93CF93CDB7DEB74F +:102A40002B970FB6F894DEBF0FBECDBF342F4F8348 +:102A5000252F588769877A878B87472F582FFE0144 +:102A6000319686E0DF011D928A95E9F76B83398301 +:102A70002A834C835D83432F522F8D819E810E9438 +:102A800059182B960FB6F894DEBF0FBECDBFCF916D +:102A9000DF9108950F931F930091870115C010E0F7 +:102AA000F801EE0FFF1FE00FF11FEE0FFF1FE857B9 +:102AB000FE4F4081518162817381848195810E94A2 +:102AC000C0100F5F1F4F077080918601081739F7FC +:102AD0001F910F9108954091800150918101609163 +:102AE00082017091830180918401909185010E94FF +:102AF000C01008950F931F93CF93DF9380918501AA +:102B000082958F7009F06DC080918201882309F44D +:102B100068C06091870100918601409183015091C6 +:102B200084011091810170918001EA01C095D095D6 +:102B300055C04115510509F44FC01F3F49F480E0CD +:102B400090E07F3F11F481E090E0882309F044C0D9 +:102B5000262F30E0F901EE0FFF1FE20FF31FDF0118 +:102B6000AA0FBB1FA857BE4F11968C91119718172B +:102B700099F58C91781781F5EE0FFF1FE657FE4F00 +:102B80008081882349F513968D919C911497841721 +:102B9000950718F0841B950B02C08C0F9D1F883C75 +:102BA0009105D0F4809185018F70806180938501BB +:102BB000F901EE0FFF1FE20FF31FEE0FFF1FE357A8 +:102BC000FE4F80818F708061808380E891E00E9459 +:102BD00054120E944A1505C06F5F6770601709F0B4 +:102BE000A8CFDF91CF911F910F910895DF92EF92BF +:102BF000FF920F931F93DF93CF93CDB7DEB76B9701 +:102C00000FB6F894DEBF0FBECDBF8C01DC0112966B +:102C1000DC9012974C9111965C9111971396ED9060 +:102C2000FC9014972091830130918401609181017F +:102C3000709180012115310509F4DBC16F3F09F066 +:102C400003C27F3F09F000C2D4C1E216F30640F090 +:102C5000C701821B930B883C910508F0EEC008C0A9 +:102C6000209530952E0D3F1D283C310508F0E5C01C +:102C700080918501807F09F095C06F3F09F0EAC11E +:102C80007F3F09F0E7C115C0741799F4DD2089F47E +:102C9000809185018F708061809385010E946B1502 +:102CA00080E891E00E94541280918501F8018583AB +:102CB000BCC1FD82EC825A834983DB82DE01169619 +:102CC000FE01319685E001900D928150E1F7688513 +:102CD000DE011B96FE01369685E001900D92815033 +:102CE000E1F72C853B858E859F85892B09F451C0A2 +:102CF0002F3F09F0B3C13F3F09F0B0C14AC0FD8288 +:102D0000EC825A834983DB82DE011B96FE013196F9 +:102D100085E001900D928150E1F7FC847B856D8503 +:102D200080918701909186011FC0282F30E0F90122 +:102D3000EE0FFF1FE20FF31FDF01AA0FBB1FA85703 +:102D4000BE4F11968C911197F81651F48C9178170B +:102D500039F4EE0FFF1FE657FE4F80816817C9F464 +:102D60002F5F3F4F822F87708917F9F68DC19F70B3 +:102D700059F0442349F459C19F7031F0D801159698 +:102D80008C91807F09F451C1405E483008F44DC1F8 +:102D900048C1DD2009F449C180918501816080939B +:102DA000850143C16F3F09F05DC17F3F09F05AC102 +:102DB00014C0741791F4DD2081F480918501F8012D +:102DC0008583C8010E945412A0E8B1E0F80186E0B2 +:102DD00001900D928150E1F720C15A834983898186 +:102DE0009A810E94D010882309F41BC1DD2009F4C8 +:102DF00018C130918501832F82958F7090E00297E2 +:102E00009CF09091810120918001FE01709686E0F6 +:102E1000DF011D928A95E9F7998B288BFC8AEB8A52 +:102E20003D8BCF010E945412A0E8B1E0F80186E08A +:102E300001900D928150E1F7EEC080918501807F75 +:102E4000A9F47E2DFD82EC825A834983DB826D2DAD +:102E50008D810E94B11000E811E0C8010E94541257 +:102E600086E0F80111928A95E9F7C0C06F3F09F03A +:102E7000FDC07F3F09F0FAC014C0741791F4DD2043 +:102E800081F480918501D80115968C93C8010E9428 +:102E90005412E0E8F1E086E0DF011D928A95E9F73F +:102EA000BEC05A83498389819A810E94D0108823A9 +:102EB00009F4B7C0DD2009F4B4C030918501832F37 +:102EC00082958F7090E002979CF090918101209103 +:102ED0008001FE01769686E0DF011D928A95E9F772 +:102EE0009F8B2E8BFA8EE98E3B8FCF010E9454125E +:102EF000A0E8B1E0F80186E001900D928150E1F781 +:102F00008AC06F3F09F0B6C07F3F09F0B3C071C0FF +:102F1000E216F30640F0C701821B930B883C910533 +:102F200008F053C008C0209530952E0D3F1D283C59 +:102F3000310508F04AC0DD2009F473C06F3F09F085 +:102F40009FC07F3F09F09CC029C0741739F590914C +:102F5000850190FD1AC0892F82958F70B1F0F8011C +:102F600095838F3031F08F5F8295807F9F70982B93 +:102F70009583C8010E945412A0E8B1E0F80186E0F0 +:102F800001900D928150E1F748C0A0E8B1E0F8014E +:102F900086E001900D928150E1F741C05A83498348 +:102FA00089819A810E94D010882349F0A0E8B1E07D +:102FB000F80186E001900D928150E1F72CC08091DC +:102FC00085018160809385012CC07E2DFD82EC827D +:102FD0005A834983DB826D2D8D810E94B110E0E818 +:102FE000F1E086E0DF011D928A95E9F70E946B15FA +:102FF0001CC0DD20B1F05A83498389819A810E94E7 +:10300000D010882371F0A0E8B1E0F80186E00190CB +:103010000D928150E1F70E947A150E946B1581E0B4 +:1030200005C0C8010E945412FACF80E06B960FB61B +:10303000F894DEBF0FBECDBFCF91DF911F910F91EE +:10304000FF90EF90DF90089580918201882309F42A +:1030500058CFFBCD651709F02CCE16CE613009F4A0 +:1030600098CE4DCE651709F0B8CEA3CE651709F0FE +:1030700018CF03CF80918201882309F0BACF48CFBF +:10308000651709F08BCF61CF5A83498389819A8173 +:103090000E94DA19482F892F82958F70282F30E0EF +:1030A000223031050CF463CE243031050CF0B9CF59 +:1030B00063CE0F931F93DF93CF93CDB7DEB72C97DB +:1030C0000FB6F894DEBF0FBECDBF4F835887698718 +:1030D0007A878B879C878E01095F1F4FC8010E94EA +:1030E000F6158823D9F028853F818A859B85892B11 +:1030F00009F46BC02F3F49F480E090E03F3F11F4AA +:1031000081E090E0882309F060C04F81588569858F +:103110007A858B859C850E94C01057C0DE01119670 +:10312000F80186E001900D928150E1F7F981EA8182 +:103130004C815D814115510509F447C0EF3F09F00D +:103140004CC0FF3F09F049C040C0F983EA835D836A +:103150004C83F901EE0FFF1FE20FF31FEE0FFF1F6D +:10316000E857FE4FDE01119686E00D9001928150E6 +:10317000E1F7609386010E944A1527C0919FC00124 +:10318000112488579E4F0E94F615882309F445C0E4 +:103190008091870190E0FC01EE0FFF1FE80FF91FFF +:1031A000EE0FFF1FE857FE4F40815181628173810E +:1031B000848195810E94C0108091870190E00196E2 +:1031C000877090708093870101C016E0909187010D +:1031D00080918601981791F620C080918601282F52 +:1031E00030E02F5F3F4FB901677070702150304061 +:1031F0008091870190E06817790709F0A6CF0E94B7 +:1032000017111092860110928701E0E8F1E086E044 +:10321000DF011D928A95E9F7D8CF2C960FB6F89466 +:10322000DEBF0FBECDBFCF91DF911F910F910895EB +:10323000CF92DF92EF92FF921F93CF93DF93EC0137 +:10324000009709F466C010E090EAC92E9FE0D92EDD +:1032500081E0E82EF12CFE0121969491943748F4F8 +:10326000943008F044C0913079F0923009F051C0A8 +:103270001BC0953709F437C0953750F1892F845812 +:10328000803708F046C037C0FE0121969491892FFF +:10329000805E883060F597708E2D01C0880F9A95FA +:1032A000EAF70E94461B0FC0FE0121969491892FD8 +:1032B000805E883058F497708E2D01C0880F9A95E3 +:1032C000EAF70E944C1B0E946B1B19C0892F15C086 +:1032D000FE01249104C0C6010197F1F72150222379 +:1032E000D1F721960CC0FE012196149108C0892FB8 +:1032F0000E947D1104C0892F8F770E942A11212FEF +:1033000004C0C6010197F1F72150222309F4A3CF8D +:10331000F8CFDF91CF911F91FF90EF90DF90CF908A +:10332000089508950895AF92BF92DF92EF92FF92B1 +:103330000F931F93CF93DF935C01E090B801F0905F +:10334000B9010091BA011091BB018091BC0190912B +:10335000BD01A091BE01B091BF01E82AF92A0A2B54 +:103360001B2BCFE1D0E0DC2ED801C7010C2E04C00E +:10337000B695A795979587950A94D2F78170907026 +:10338000892B39F08C2FB5010E94D304813091052F +:1033900031F421978FEFCF3FD80729F7DD248D2D0A +:1033A000DF91CF911F910F91FF90EF90DF90BF9031 +:1033B000AF9008950F931F938C010E949319B80149 +:1033C0000E94D3041F910F910895CB010E94DA1936 +:1033D00008956093BC017093BD018093BE019093EA +:1033E000BF010E94021108959B01AC016091BC01D4 +:1033F0007091BD018091BE019091BF01622773273A +:10340000842795270E94E91908959B01AC016091DA +:10341000BC017091BD018091BE019091BF016223FA +:103420007323842395230E94E91908959B01AC011D +:103430006091BC017091BD018091BE019091BF016E +:10344000622B732B842B952B0E94E919089521E0A0 +:1034500030E040E050E004C0220F331F441F551FEE +:103460008A95D2F78091BC019091BD01A091BE01D7 +:10347000B091BF01282739274A275B27CA01B90124 +:103480000E94E919089521E030E040E050E004C0D6 +:10349000220F331F441F551F8A95D2F72095309570 +:1034A000409550958091BC019091BD01A091BE01C5 +:1034B000B091BF01282339234A235B23CA01B901F4 +:1034C0000E94E919089521E030E040E050E004C096 +:1034D000220F331F441F551F8A95D2F78091BC01DC +:1034E0009091BD01A091BE01B091BF01282B392B55 +:1034F0004A2B5B2BCA01B9010E94E919089521E00A +:1035000030E040E050E004C0220F331F441F551F3D +:103510008A95D2F7CA01B9010E94E919089560E0BD +:1035200070E080E090E00E94E91908956093B8018E +:103530007093B9018093BA019093BB010E9402116C +:1035400008959B01AC016091B8017091B90180911F +:10355000BA019091BB0162277327842795270E94A7 +:10356000961A08959B01AC016091B8017091B90160 +:103570008091BA019091BB01622373238423952328 +:103580000E94961A08959B01AC016091B801709158 +:10359000B9018091BA019091BB01622B732B842BEE +:1035A000952B0E94961A08950E94961A089580916C +:1035B000CC0185958595859508958091CC0187707E +:1035C00008958091CC01877009F081E00895382F2B +:1035D000A0910C01B0910D01FD0120E08FEF9281CF +:1035E000931791F08F3F19F4992309F4822F2F5FDD +:1035F00031962630A1F78F3F39F0992787FD9095B6 +:10360000A80FB91F12963C930895982F20E030E040 +:10361000E0910C01F0910D01E20FF31F82818917F7 +:1036200009F412822F5F3F4F2630310589F7089544 +:1036300081E090E0E0910C01F0910D01E80FF91F9D +:103640001082019688309105A9F708959091C801DC +:10365000982B9093C801089580959091C801982364 +:103660009093C80108951092C80108959091CB01DC +:10367000982B9093CB01089580959091CB0198233E +:103680009093CB0108951092CB0108959091CA01B7 +:10369000982B9093CA01089580959091CA01982320 +:1036A0009093CA0108951092CA0108958093C901A8 +:1036B00008951092C9010895E0910C01F0910D0157 +:1036C00020E091E0818181112F5F9F5F31969830DA +:1036D000C9F7822F0895E0910C01F0910D018091BE +:1036E000C8018083E0910C01F0910D0180819091DF +:1036F000CB01892B8083E0910C01F0910D01808139 +:103700009091CA01892B80839091C901992369F016 +:10371000E0910C01F0910D018081892B80830E9442 +:103720005C1B882311F00E94591B80910C01909121 +:103730000D010E94AC0F08952091CC01482F4095B7 +:1037400042234093CC01842F877071F430E0842FA2 +:10375000992787FD90952817390731F0842F859593 +:10376000859585950E94431A0895982F990F990F72 +:10377000990F962B9093CC010E94631A0895089597 +:1037800008951F920F920FB60F9211248F939F935B +:10379000AF93BF938091CE01882399F48091CF019C +:1037A0009091D001A091D101B091D2014196A11D7B +:1037B000B11D8093CF019093D001A093D101B0931C +:1037C000D201BF91AF919F918F910F900FBE0F903B +:1037D0001F9018950E94171180E00E9423020E94FA +:1037E0002A220E949F0F0E94680508958091E2019D +:1037F000843039F11092CE0120E488E190E00FB6D8 +:10380000F894A895809360000FBE2093600080E03C +:103810000E94230280E00E94680583B7817F846054 +:1038200083BF83B7816083BF7894889583B78E7F89 +:1038300083BF88E10FB6F894809360001092600017 +:103840000FBE089580E00E9423020E94BF1B0E94C9 +:1038500023070E94C01B80E00E946B05892B81F426 +:1038600081E00E946B05892B59F482E00E946B0570 +:10387000892B31F483E00E946B0520E0892B09F04D +:1038800021E0822F089582E084BD93E095BD9AEFF8 +:1038900097BD80936E0008958FB7F8942091CF0163 +:1038A0003091D0014091D1015091D2018FBFC90117 +:1038B0000895EF92FF920F931F93BC018FB7F89476 +:1038C000E090CF01F090D0010091D1011091D20190 +:1038D0008FBFA801970140705070CB01A0E0B0E00D +:1038E000281739074A075B0720F09701261B370B7B +:1038F00005C09B01209530952E0D3F1DC9011F91DC +:103900000F91FF90EF9008951F920F920FB60F92B4 +:1039100011248F939F93AF93BF938091CF01909188 +:10392000D001A091D101B091D2010196A11DB11D8C +:103930008093CF019093D001A093D101B093D20195 +:10394000BF91AF919F918F910F900FBE0F901F90DD +:1039500018950E94850CF89480E29EE420E931E0FD +:10396000F9013197F1F70197D9F787E090EBA7E0DC +:10397000B0EB8093ED019093EE01A093EF01B09333 +:10398000F0012CE088E190E00FB6F894A8958093C0 +:1039900060000FBE20936000FFCF0E94051D8823AA +:1039A00011F40E94101D0E94001D8093CD010E9401 +:1039B000F61C8093EB010E94FB1C90E0A0E0B0E0BD +:1039C000BC01CD010E94D41A0895682F86E090E0D2 +:1039D0000E9493230895682F84E090E00E9493232F +:1039E000089586E090E00E948523089584E090E0A9 +:1039F0000E948523089583E090E00E948523089526 +:103A000082E090E00E948523089580E090E00E948B +:103A10008D2320E08D5E9E4F09F421E0822F0895D2 +:103A200080E090E06DEE7EEF0E94A52382E090E0C2 +:103A300060E00E94932383E090E060E00E94932383 +:103A400084E090E060E00E94932385E090E060E0F5 +:103A50000E94932386E090E060E00E949323089503 +:103A60008091D90180FF0BC09091100185E0989F53 +:103A7000C0011124959587959595879530C081FF54 +:103A800009C09091100185E0989FC001112495957F +:103A9000879525C082FF03C0909110010DC08091D1 +:103AA000D801882319F485E090E008956091110110 +:103AB00090911001861728F085E0989FC00111248D +:103AC0000EC0899F90011124C901880F991F880F8A +:103AD000991F820F931F70E00E945E23CB018038F4 +:103AE000910510F08FE70895009709F481E008959B +:103AF0008091D90180FF05C080911201869586953D +:103B000018C081FF04C080911201869512C082FF07 +:103B100003C0809112010DC02091D801222319F415 +:103B200081E090E0089560911301809112012617C1 +:103B300010F090E007C0289FC001112470E00E949F +:103B40005E23CB018038910510F08FE70895009730 +:103B500009F481E00895803F21F40E94301D819591 +:103B600004C0813F29F40E94301D8093D50108953F +:103B7000823F21F40E94301D819504C0833F29F4C7 +:103B80000E94301D8093D4010895893F19F40E944A +:103B9000781D05C08A3F31F40E94781D819580937D +:103BA000D60108958B3F21F40E94781D819504C0B1 +:103BB0008C3F29F40E94781D8093D7010895843F9B +:103BC00021F48091D301816017C0853F21F4809159 +:103BD000D301826011C0863F21F48091D3018460BB +:103BE0000BC0873F21F48091D301886005C0883FD6 +:103BF00031F48091D30180618093D30108958D3F8A +:103C000021F48091D901816005C08E3F31F480910B +:103C1000D90182608093D90108958F3F29F4809162 +:103C2000D90184608093D9010895803F29F480915F +:103C3000D50187FF6FC007C0813F41F48091D50156 +:103C400018160CF067C01092D50164C0823F29F4A9 +:103C50008091D40187FF5EC007C0833F41F480910B +:103C6000D40118160CF056C01092D40153C0893FED +:103C700029F48091D60118163CF04CC08A3F39F4E3 +:103C80008091D60187FF46C01092D60143C08B3F7A +:103C900029F48091D70187FF3DC006C08C3F39F4DD +:103CA0008091D7011816B4F51092D70133C0843F24 +:103CB00021F48091D3018E7F05C0853F31F480913E +:103CC000D3018D7F8093D30125C0863F21F480915D +:103CD000D3018B7FF7CF873F21F48091D301877F7A +:103CE000F1CF883F21F48091D3018F7EEBCF8D3FC0 +:103CF00021F48091D9018E7F0BC08E3F21F48091F9 +:103D0000D9018D7F05C08F3F29F48091D9018B7F28 +:103D10008093D9018091D401882371F48091D501D9 +:103D2000882351F48091D601882331F48091D70102 +:103D3000882311F41092D8010895E3EDF1E085E0B5 +:103D4000DF011D928A95E9F71092D8011092D901EE +:103D5000089583ED91E00E94B70F0E944C1C909350 +:103D6000DB018093DA0108951F938091DA0190912D +:103D7000DB010E94591CAC012091D801222321F0C3 +:103D800080910F0190E006C090910E018AE0989F0B +:103D9000C00111244817590708F485C09091D40137 +:103DA000992369F48091D501882349F48091D60143 +:103DB000882329F48091D701882309F474C02F3F08 +:103DC00019F02F5F2093D801191624F40E94301D9A +:103DD0008093D4018091D40187FF05C00E94301DDB +:103DE00081958093D4018091D501181624F40E9406 +:103DF000301D8093D5018091D50187FF05C00E94B9 +:103E0000301D81958093D5016091D401662339F1ED +:103E10001091D501112319F1772767FD7095872F30 +:103E2000972F0E946F2223E333E343E35FE30E9473 +:103E3000D3220E943C226093D401612F772767FD33 +:103E40007095872F972F0E946F2223E333E343E37C +:103E50005FE30E94D3220E943C226093D5018091AF +:103E6000D601181624F40E94781D8093D601809103 +:103E7000D60187FF05C00E94781D81958093D601E9 +:103E80008091D701181624F40E94781D8093D701E1 +:103E90008091D70187FF05C00E94781D819580938E +:103EA000D7010E94A91E1F91089580E0089580E027 +:103EB0000895833099F1843030F4813069F0823094 +:103EC00009F06FC01AC0853009F44AC08530B8F1D6 +:103ED000863009F066C055C020910E01822F90E017 +:103EE000860F911D8F3F910520F4260F20930E0120 +:103EF00008958FEF80930E01089520910F01822F76 +:103F000090E0860F911D8F3F910520F4260F20939E +:103F10000F0108958FEF80930F01089520911001F4 +:103F2000822F90E0860F911D8F3F910520F4260F80 +:103F30002093100108958FEF809310010895209130 +:103F40001101822F90E0860F911D8F3F910520F483 +:103F5000260F2093110108958FEF8093110108958A +:103F600020911201822F90E0860F911D8F3F9105C5 +:103F700020F4260F2093120108958FEF80931201F1 +:103F8000089520911301822F90E0860F911D8F3F9D +:103F9000910520F4260F2093130108958FEF80934D +:103FA00013010895833031F1843030F4813061F0B1 +:103FB000823009F04AC013C0853091F1853028F174 +:103FC000863009F042C037C080910E01681720F496 +:103FD000861B80930E01089510920E010895809122 +:103FE0000F01681720F4861B80930F01089510922B +:103FF0000F01089580911001681720F4861B8093AB +:104000001001089510921001089580911101681710 +:1040100020F4861B809311010895109211010895D8 +:1040200080911201681720F4861B80931201089575 +:1040300010921201089580911301681720F4861BD5 +:1040400080931301089510921301089521E030E048 +:1040500040E050E004C0220F331F441F551F8A95D3 +:10406000D2F7CA01B9010E94D41A0E94171108950B +:104070008732F8F48E3108F08AC08E3009F463C0BC +:104080008F3048F4873009F445C08B3009F486C07E +:10409000863039F528C0863109F480C0873118F49C +:1040A0008031F9F45CC0893109F478C08B31C9F4EE +:1040B00040C0883309F472C0893348F4893209F466 +:1040C00068C0853309F465C0873259F462C083340F +:1040D00009F45FC0843418F48A3318F056C0883469 +:1040E00059F080E008958091CD01807F8093CD01CB +:1040F00081E08093DC0108950E94171180E197E22E +:1041000020E931E0F9013197F1F70197D9F70E94E1 +:10411000A91C42C09091CD01892F809581709E7F0E +:10412000982B882311F09E6001C0917F9093CD0160 +:1041300033C08091CD01982F969590959170292F3D +:10414000220F8D7F19C08091CD01982F969596955D +:1041500090959170292F220F220F8B7F0DC0809197 +:10416000CD01982F96959695969590959170292FBB +:10417000220F220F220F877F822B8093CD0199235C +:1041800069F081608093CD0107C0895303C08D51D0 +:1041900001C080E00E94262081E0089581E008951A +:1041A0001F93182F8091DC01813079F0813020F04D +:1041B000823009F0BCC037C0E0910C01F0910D01D4 +:1041C0008081823209F0B5C007C0E0910C01F09106 +:1041D0000D018081823249F4812F0E94551F88236E +:1041E000F9F4812F0E943820A5C0812F0E94571F0B +:1041F0008823B1F4143161F0153128F41B3081F0BB +:10420000103141F40AC0193219F0183319F408C0FA +:104210001092DC0180E090E08DC082E08093DC01B0 +:1042200081E090E087C0193201F11A3270F4143144 +:10423000E1F0153120F4173009F064C065C0812F1A +:104240008E51863008F05EC01BC01E3409F455C084 +:104250001F3420F41B3409F055C049C0113509F44E +:1042600042C0123509F04EC03AC08091DD0188236A +:1042700019F01092DD0146C081E08093DC015AC044 +:104280001232F9F0133260F41F3199F0103218F441 +:104290001E3109F510C0103281F01132E1F40FC067 +:1042A000143299F0143278F0153289F0163299F4FC +:1042B00010C082E011C081E00FC083E00DC084E037 +:1042C0000BC085E009C086E007C087E005C088E034 +:1042D00003C089E001C080E08093DD0113C08091BC +:1042E000DD0161E007C08091DD0161E009C08091DE +:1042F000DD016AE00E94591F05C08091DD016AE07E +:104300000E94D21F81E016C08EE180930E0182E3ED +:1043100080930F018AE08093100184E18093110162 +:1043200088E08093120188E280931301EBCF109212 +:10433000DC0180E01F9108958091EC01869508953D +:104340009091EC01292F26952827220F9170922B0E +:104350009093EC0120E09E7F09F021E08091EC0138 +:104360008E7F822B8093EC010E94E51C8091EC01F2 +:1043700086950E94230208958091EC01282F2695AE +:104380002F5F2F77922F990F8170892B8093EC01EB +:1043900030E0243031051CF081708093EC0190E016 +:1043A0008091EC018E7F09F091E08091EC018E7F8D +:1043B000892B8093EC010E94E51C8091EC0186958D +:1043C0000E94230208958091EC01982F909591709E +:1043D0008E7F892B8093EC010E94E51C8091EC017B +:1043E00080FD02C080E001C086950E9423020895EE +:1043F0008091EC01982F969591F09158990F8170CA +:10440000892B8093EC0190E08E7F09F091E0809100 +:10441000EC018E7F892B8093EC010E94E51C80913A +:10442000EC0186950E94230208952091EC012695C7 +:10443000822F90E0039744F4822F8F5F880F816072 +:104440008093EC010E94E51C8091EC0186950E940E +:10445000230208950E94051D882311F40E94101D57 +:104460000E94F11C8093EC0180FD02C080E001C03D +:1044700086950E942302089504D06894B1118DC0DE +:10448000089570D088F09F5790F0B92F9927B751B1 +:10449000A0F0D1F0660F771F881F991F1AF0BA9508 +:1044A000C9F712C0B13081F077D0B1E0089574C07F +:1044B000672F782F8827B85F39F0B93FCCF38695FE +:1044C00077956795B395D9F73EF49095809570955B +:1044D00061957F4F8F4F9F4F0895E89409C097FBD8 +:1044E0003EF490958095709561957F4F8F4F9F4FCB +:1044F0009923A9F0F92F96E9BB279395F69587950F +:1045000077956795B795F111F8CFFAF4BB0F11F4D1 +:1045100060FF1BC06F5F7F4F8F4F9F4F16C0882378 +:1045200011F096E911C0772321F09EE8872F762FAE +:1045300005C0662371F096E8862F70E060E02AF0EF +:104540009A95660F771F881FDAF7880F96958795DB +:1045500097F9089557FD9058440F551F59F05F3F44 +:1045600071F04795880F97FB991F61F09F3F79F095 +:1045700087950895121613061406551FF2CF469517 +:10458000F1DF08C0161617061806991FF1CF869599 +:104590007105610508940895E894BB27662777277D +:1045A000CB0197F908950BD078C069D028F06ED070 +:1045B00018F0952309F05AC05FC01124EECFCADF6E +:1045C000A0F3959FD1F3950F50E0551F629FF00126 +:1045D000729FBB27F00DB11D639FAA27F00DB11D7F +:1045E000AA1F649F6627B00DA11D661F829F222708 +:1045F000B00DA11D621F739FB00DA11D621F839F8F +:10460000A00D611D221F749F3327A00D611D231F64 +:10461000849F600D211D822F762F6A2F11249F57B2 +:1046200050408AF0E1F088234AF0EE0FFF1FBB1FD5 +:10463000661F771F881F91505040A9F79E3F510574 +:1046400070F014C0AACF5F3FECF3983EDCF3869580 +:1046500077956795B795F795E7959F5FC1F7FE2B1F +:10466000880F911D9695879597F9089597F99F67FB +:1046700080E870E060E008959FEF80EC08950024EA +:104680000A941616170618060906089500240A94B7 +:1046900012161306140605060895092E0394000C3D +:1046A00011F4882352F0BB0F40F4BF2B11F460FFCC +:1046B00004C06F5F7F4F8F4F9F4F089597FB092E68 +:1046C00007260AD077FD04D00CD006D000201AF4BB +:1046D000709561957F4F0895F6F7909581959F4F5E +:1046E0000895AA1BBB1B51E107C0AA1FBB1FA61739 +:1046F000B70710F0A61BB70B881F991F5A95A9F78B +:1047000080959095BC01CD010895F999FECF92BD99 +:1047100081BDF89A992780B50895A8E1B0E042E0FC +:1047200050E00C94AD23262FF999FECF92BD81BDA8 +:10473000F89A019700B4021639F01FBA20BD0FB6DF +:10474000F894FA9AF99A0FBE08950196272F0E94BD +:1047500094230C949323DC01CB01FC01F999FECF47 +:1047600006C0F2BDE1BDF89A319600B40D924150F9 +:0A4770005040B8F70895F894FFCF09 +:10477A00050175080A09E408AE087808C0011E3266 +:10478A000A14082840004500250026006100600040 +:10479A002000370064006500660067004400460098 +:1047AA002400470040004500250026006100600003 +:1047BA002000370064006500660067004400460078 +:0447CA002400470080 +:00000001FF diff --git a/keyboard/planck/keymaps/Jacob/readme.md b/keyboard/planck/keymaps/Jacob/readme.md new file mode 100644 index 0000000000..2a4be4ebce --- /dev/null +++ b/keyboard/planck/keymaps/Jacob/readme.md @@ -0,0 +1 @@ +Focus of this particular keymap is to enable easy transition from more traditional keyboards to OLKB Planck. \ No newline at end of file -- cgit v1.2.1 From 79d26f331a275c99f76a30d34752fbd65bb3f335 Mon Sep 17 00:00:00 2001 From: Erez Zukerman Date: Sat, 14 May 2016 22:07:16 -0400 Subject: Adds explanatory note re history of TMK and QMK --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 395b4a5523..4e53569a8e 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ This is a keyboard firmware based on the [tmk_keyboard firmware](http://github.com/tmk/tmk_keyboard) with some useful features for Atmel AVR controllers, and more specifically, the [OLKB product line](http://olkb.co), the [ErgoDox EZ](http://www.ergodox-ez.com) keyboard, and the [Clueboard product line](http://clueboard.co/). -QMK is developed and maintained by Jack Humbert of OLKB with contributions from the community, and of course, TMK. +QMK is developed and maintained by Jack Humbert of OLKB with contributions from the community, and of course, TMK. In fact, this repo used to be a fork of TMK, and we are incredibly grateful for his founding contributions to the firmware. We've had to break the fork due to purely technical reasons -- it simply became too different over time, and we've had to start refactoring some of the basic bits and pieces. We are huge fans of TMK, both the firmware and the person. :) This documentation is edited and maintained by Erez Zukerman of ErgoDox EZ. If you spot any typos or inaccuracies, please [open an issue](https://github.com/jackhumbert/qmk_firmware/issues/new). -- cgit v1.2.1 From 1a8c0dd22d6a2255511d0db6a456315541b5815b Mon Sep 17 00:00:00 2001 From: Erez Zukerman Date: Sun, 15 May 2016 00:27:32 -0400 Subject: Leader key implementation (#326) * implements leader key for planck experimental * allows override of leader timeout * adds ability to use the leader key in seq * fixes leader keycode * adds chording prototype * fixes keycode detection * moves music mode to quantum.c * disables chording by default * updates process_action functions to return bool --- keyboard/atomic/atomic.c | 7 +- keyboard/atomic/atomic.h | 2 +- keyboard/gh60_rev_c/gh60.c | 7 +- keyboard/gh60_rev_c/gh60.h | 2 +- keyboard/planck/keymaps/experimental/keymap.c | 48 +++++--- keyboard/planck/planck.c | 8 +- keyboard/planck/planck.h | 16 +-- keyboard/preonic/preonic.c | 8 +- keyboard/preonic/preonic.h | 2 +- quantum/keymap_common.c | 2 +- quantum/keymap_common.h | 4 +- quantum/matrix.c | 8 +- quantum/quantum.c | 167 ++++++++++++++++++++++++++ quantum/quantum.h | 48 ++++++++ quantum/quantum.mk | 3 +- quantum/template/template.c | 7 +- quantum/template/template.h | 2 +- tmk_core/common/action.c | 7 +- tmk_core/common/action.h | 2 +- tmk_core/common/matrix.h | 4 +- 20 files changed, 290 insertions(+), 64 deletions(-) create mode 100644 quantum/quantum.c create mode 100644 quantum/quantum.h diff --git a/keyboard/atomic/atomic.c b/keyboard/atomic/atomic.c index b4b2614572..fa218a48f3 100644 --- a/keyboard/atomic/atomic.c +++ b/keyboard/atomic/atomic.c @@ -11,8 +11,9 @@ void matrix_scan_user(void) { } __attribute__ ((weak)) -void process_action_user(keyrecord_t *record) { +bool process_action_user(keyrecord_t *record) { // leave this function blank - it can be defined in a keymap file + return true; } __attribute__ ((weak)) @@ -45,11 +46,11 @@ void matrix_scan_kb(void) { matrix_scan_user(); } -void process_action_kb(keyrecord_t *record) { +bool process_action_kb(keyrecord_t *record) { // put your per-action keyboard code here // runs for every action, just before processing by the firmware - process_action_user(record); + return process_action_user(record); } void led_set_kb(uint8_t usb_led) { diff --git a/keyboard/atomic/atomic.h b/keyboard/atomic/atomic.h index 845a9043e2..2d6b4c6cb5 100644 --- a/keyboard/atomic/atomic.h +++ b/keyboard/atomic/atomic.h @@ -29,7 +29,7 @@ void matrix_init_user(void); void matrix_scan_user(void); -void process_action_user(keyrecord_t *record); +bool process_action_user(keyrecord_t *record); void led_set_user(uint8_t usb_led); void backlight_init_ports(void); diff --git a/keyboard/gh60_rev_c/gh60.c b/keyboard/gh60_rev_c/gh60.c index 8e7219bfe8..6da4d8ee3e 100644 --- a/keyboard/gh60_rev_c/gh60.c +++ b/keyboard/gh60_rev_c/gh60.c @@ -12,8 +12,9 @@ void matrix_scan_user(void) { } __attribute__ ((weak)) -void process_action_user(keyrecord_t *record) { +bool process_action_user(keyrecord_t *record) { // leave this function blank - it can be defined in a keymap file + return true; } __attribute__ ((weak)) @@ -35,11 +36,11 @@ void matrix_scan_kb(void) { matrix_scan_user(); } -void process_action_kb(keyrecord_t *record) { +bool process_action_kb(keyrecord_t *record) { // put your per-action keyboard code here // runs for every action, just before processing by the firmware - process_action_user(record); + return process_action_user(record); } void led_set_kb(uint8_t usb_led) { diff --git a/keyboard/gh60_rev_c/gh60.h b/keyboard/gh60_rev_c/gh60.h index 2373ad333c..95e5e1ebc7 100644 --- a/keyboard/gh60_rev_c/gh60.h +++ b/keyboard/gh60_rev_c/gh60.h @@ -75,7 +75,7 @@ inline void gh60_wasd_leds_off(void) { DDRF &= ~(1<<7); PORTF &= ~(1<<7); } void matrix_init_user(void); void matrix_scan_user(void); -void process_action_user(keyrecord_t *record); +bool process_action_user(keyrecord_t *record); void led_set_user(uint8_t usb_led); #endif diff --git a/keyboard/planck/keymaps/experimental/keymap.c b/keyboard/planck/keymaps/experimental/keymap.c index fc3ac4a97e..8dc158c73f 100644 --- a/keyboard/planck/keymaps/experimental/keymap.c +++ b/keyboard/planck/keymaps/experimental/keymap.c @@ -6,6 +6,7 @@ #ifdef AUDIO_ENABLE #include "audio.h" #endif + #include "eeconfig.h" extern keymap_config_t keymap_config; @@ -78,7 +79,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC}, {KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT}, {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT }, - {M(M_BL), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} + {KC_LEAD, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} }, /* Dvorak @@ -291,7 +292,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) case 8: if (record->event.pressed) { #ifdef AUDIO_ENABLE - layer_off(_MUSIC); + music_activated = false; stop_all_notes(); #endif } @@ -300,7 +301,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) if (record->event.pressed) { #ifdef AUDIO_ENABLE PLAY_NOTE_ARRAY(music_scale, false, 0); - layer_on(_MUSIC); + music_activated = true; #endif } break; @@ -360,24 +361,35 @@ void matrix_init_user(void) { } #ifdef AUDIO_ENABLE -void play_goodbye_tone() -{ - PLAY_NOTE_ARRAY(goodbye, false, 0); - _delay_ms(150); -} + void play_goodbye_tone(void) + { + PLAY_NOTE_ARRAY(goodbye, false, 0); + _delay_ms(150); + } +#endif -uint8_t starting_note = 0x0C; -int offset = 0; +LEADER_EXTERNS(); -void process_action_user(keyrecord_t *record) { +#define LEADER_TIMEOUT 300 - if (IS_LAYER_ON(_MUSIC)) { - if (record->event.pressed) { - play_note(((double)220.0)*pow(2.0, -4.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row)), 0xF); - } else { - stop_note(((double)220.0)*pow(2.0, -4.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row))); +void matrix_scan_user(void) { + LEADER_DICTIONARY() { + leading = false; + leader_end(); + + SEQ_ONE_KEY(KC_F) { + register_code(KC_S); + unregister_code(KC_S); + } + SEQ_TWO_KEYS(KC_A, KC_S) { + register_code(KC_H); + unregister_code(KC_H); + } + SEQ_THREE_KEYS(KC_A, KC_S, KC_D) { + register_code(KC_LGUI); + register_code(KC_S); + unregister_code(KC_S); + unregister_code(KC_LGUI); } } - } -#endif diff --git a/keyboard/planck/planck.c b/keyboard/planck/planck.c index 446353dbf5..da7b3a1702 100644 --- a/keyboard/planck/planck.c +++ b/keyboard/planck/planck.c @@ -7,7 +7,9 @@ __attribute__ ((weak)) void matrix_scan_user(void) {} __attribute__ ((weak)) -void process_action_user(keyrecord_t *record) {} +bool process_action_user(keyrecord_t *record) { + return true; +} __attribute__ ((weak)) void led_set_user(uint8_t usb_led) {} @@ -32,8 +34,8 @@ void matrix_scan_kb(void) { matrix_scan_user(); } -void process_action_kb(keyrecord_t *record) { - process_action_user(record); +bool process_action_kb(keyrecord_t *record) { + return process_action_user(record); } void led_set_kb(uint8_t usb_led) { diff --git a/keyboard/planck/planck.h b/keyboard/planck/planck.h index cfd4956bf1..8aec6b2627 100644 --- a/keyboard/planck/planck.h +++ b/keyboard/planck/planck.h @@ -1,19 +1,7 @@ #ifndef PLANCK_H #define PLANCK_H -#include "matrix.h" -#include "keymap_common.h" -#ifdef BACKLIGHT_ENABLE - #include "backlight.h" -#endif -#ifdef RGBLIGHT_ENABLE - #include "rgblight.h" -#endif -#include -#include -#ifdef MIDI_ENABLE - #include -#endif +#include "quantum.h" #define PLANCK_MIT( \ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \ @@ -43,7 +31,7 @@ void matrix_init_user(void); void matrix_scan_user(void); -void process_action_user(keyrecord_t *record); +bool process_action_user(keyrecord_t *record); void led_set_user(uint8_t usb_led); void backlight_init_ports(void); diff --git a/keyboard/preonic/preonic.c b/keyboard/preonic/preonic.c index 211f8d0296..13e05c65a7 100644 --- a/keyboard/preonic/preonic.c +++ b/keyboard/preonic/preonic.c @@ -11,8 +11,8 @@ void matrix_scan_user(void) { }; __attribute__ ((weak)) -void process_action_user(keyrecord_t *record) { - +bool process_action_user(keyrecord_t *record) { + return true; }; void matrix_init_kb(void) { @@ -36,8 +36,8 @@ void matrix_scan_kb(void) { matrix_scan_user(); }; -void process_action_kb(keyrecord_t *record) { - process_action_user(record); +bool process_action_kb(keyrecord_t *record) { + return process_action_user(record); } #ifdef BACKLIGHT_ENABLE diff --git a/keyboard/preonic/preonic.h b/keyboard/preonic/preonic.h index 030acdadb4..2406a11d7e 100644 --- a/keyboard/preonic/preonic.h +++ b/keyboard/preonic/preonic.h @@ -47,6 +47,6 @@ void matrix_init_user(void); void matrix_scan_user(void); -void process_action_kb(keyrecord_t *record); +bool process_action_kb(keyrecord_t *record); #endif diff --git a/quantum/keymap_common.c b/quantum/keymap_common.c index 8f00f9cc32..0184770c4b 100644 --- a/quantum/keymap_common.c +++ b/quantum/keymap_common.c @@ -251,7 +251,7 @@ static action_t keycode_to_action(uint16_t keycode) } eeconfig_update_keymap(keymap_config.raw); break; - case 0x5100 ... 0x5FFF: ; + case 0x5100 ... 0x56FF: ; // Layer movement shortcuts // See .h to see constraints/usage int type = (keycode >> 0x8) & 0xF; diff --git a/quantum/keymap_common.h b/quantum/keymap_common.h index 322fda498a..2ad1ba6c60 100644 --- a/quantum/keymap_common.h +++ b/quantum/keymap_common.h @@ -159,7 +159,7 @@ extern const uint16_t fn_actions[]; #define S(kc) LSFT(kc) #define F(kc) FUNC(kc) -#define M(kc) kc | 0x3000 +#define M(kc) (kc | 0x3000) #define MACRODOWN(...) (record->event.pressed ? MACRO(__VA_ARGS__) : MACRO_NONE) @@ -191,6 +191,8 @@ extern const uint16_t fn_actions[]; #define RESET 0x5000 #define DEBUG 0x5001 +#define KC_LEAD 0x5014 + // MAGIC keycodes #define MAGIC_SWAP_CONTROL_CAPSLOCK 0x5002 diff --git a/quantum/matrix.c b/quantum/matrix.c index 7d70f728d4..cab39e117a 100644 --- a/quantum/matrix.c +++ b/quantum/matrix.c @@ -55,12 +55,12 @@ static void unselect_rows(void); static void select_row(uint8_t row); __attribute__ ((weak)) -void matrix_init_kb(void) { +void matrix_init_quantum(void) { } __attribute__ ((weak)) -void matrix_scan_kb(void) { +void matrix_scan_quantum(void) { } @@ -93,7 +93,7 @@ void matrix_init(void) matrix_debouncing[i] = 0; } - matrix_init_kb(); + matrix_init_quantum(); } @@ -157,7 +157,7 @@ uint8_t matrix_scan(void) } #endif - matrix_scan_kb(); + matrix_scan_quantum(); return 1; } diff --git a/quantum/quantum.c b/quantum/quantum.c new file mode 100644 index 0000000000..e274d846f2 --- /dev/null +++ b/quantum/quantum.c @@ -0,0 +1,167 @@ +#include "quantum.h" + +__attribute__ ((weak)) +void matrix_init_kb(void) {} + +__attribute__ ((weak)) +void matrix_scan_kb(void) {} + +__attribute__ ((weak)) +bool process_action_kb(keyrecord_t *record) { + return true; +} + +__attribute__ ((weak)) +void leader_start(void) {} + +__attribute__ ((weak)) +void leader_end(void) {} + +#ifdef AUDIO_ENABLE + uint8_t starting_note = 0x0C; + int offset = 0; + bool music_activated = false; +#endif + +// Leader key stuff +bool leading = false; +uint16_t leader_time = 0; + +uint16_t leader_sequence[3] = {0, 0, 0}; +uint8_t leader_sequence_size = 0; + +// Chording stuff +#define CHORDING_MAX 4 +bool chording = false; + +uint8_t chord_keys[CHORDING_MAX] = {0}; +uint8_t chord_key_count = 0; +uint8_t chord_key_down = 0; + +bool keys_chord(uint8_t keys[]) { + uint8_t keys_size = sizeof(keys)/sizeof(keys[0]); + bool pass = true; + uint8_t in = 0; + for (uint8_t i = 0; i < chord_key_count; i++) { + bool found = false; + for (uint8_t j = 0; j < keys_size; j++) { + if (chord_keys[i] == (keys[j] & 0xFF)) { + in++; // detects key in chord + found = true; + break; + } + } + if (found) + continue; + if (chord_keys[i] != 0) { + pass = false; // makes sure rest are blank + } + } + return (pass && (in == keys_size)); +} + +bool process_action_quantum(keyrecord_t *record) { + + /* This gets the keycode from the key pressed */ + keypos_t key = record->event.key; + uint16_t keycode; + + #if !defined(NO_ACTION_LAYER) && defined(PREVENT_STUCK_MODIFIERS) + uint8_t layer; + + if (record->event.pressed) { + layer = layer_switch_get_layer(key); + update_source_layers_cache(key, layer); + } else { + layer = read_source_layers_cache(key); + } + keycode = keymap_key_to_keycode(layer, key); + #else + keycode = keymap_key_to_keycode(layer_switch_get_layer(key), key); + #endif + + #ifdef AUDIO_ENABLE + if (music_activated) { + if (record->event.pressed) { + play_note(((double)220.0)*pow(2.0, -4.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row)), 0xF); + } else { + stop_note(((double)220.0)*pow(2.0, -4.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row))); + } + if (keycode < 0xFF) // ignores all normal keycodes, but lets RAISE, LOWER, etc through + return false; + } + #endif + + + +#ifndef DISABLE_LEADER + // Leader key set-up + if (record->event.pressed) { + if (!leading && keycode == KC_LEAD) { + leader_start(); + leading = true; + leader_time = timer_read(); + leader_sequence_size = 0; + leader_sequence[0] = 0; + leader_sequence[1] = 0; + leader_sequence[2] = 0; + return false; + } + if (leading && timer_elapsed(leader_time) < LEADER_TIMEOUT) { + leader_sequence[leader_sequence_size] = keycode; + leader_sequence_size++; + return false; + } + } +#endif + +#define DISABLE_CHORDING +#ifndef DISABLE_CHORDING + + if (keycode >= 0x5700 && keycode <= 0x57FF) { + if (record->event.pressed) { + if (!chording) { + chording = true; + for (uint8_t i = 0; i < CHORDING_MAX; i++) + chord_keys[i] = 0; + chord_key_count = 0; + chord_key_down = 0; + } + chord_keys[chord_key_count] = (keycode & 0xFF); + chord_key_count++; + chord_key_down++; + return false; + } else { + if (chording) { + chord_key_down--; + if (chord_key_down == 0) { + chording = false; + // Chord Dictionary + if (keys_chord((uint8_t[]){KC_ENTER, KC_SPACE})) { + register_code(KC_A); + unregister_code(KC_A); + return false; + } + for (uint8_t i = 0; i < chord_key_count; i++) { + register_code(chord_keys[i]); + unregister_code(chord_keys[i]); + return false; + } + } + } + } + } + +#endif + + + return process_action_kb(record); +} + +void matrix_init_quantum() { + matrix_init_kb(); +} + +void matrix_scan_quantum() { + matrix_scan_kb(); +} \ No newline at end of file diff --git a/quantum/quantum.h b/quantum/quantum.h new file mode 100644 index 0000000000..db726ad425 --- /dev/null +++ b/quantum/quantum.h @@ -0,0 +1,48 @@ +#ifndef QUANTUM_H +#define QUANTUM_H + +#include "matrix.h" +#include "keymap_common.h" +#ifdef BACKLIGHT_ENABLE + #include "backlight.h" +#endif +#ifdef RGBLIGHT_ENABLE + #include "rgblight.h" +#endif +#ifdef AUDIO_ENABLE + #include "audio.h" +#endif +#ifdef MIDI_ENABLE + #include +#endif +#include "action_layer.h" +#include "eeconfig.h" +#include +#include + +extern uint32_t default_layer_state; + +#ifndef NO_ACTION_LAYER + extern uint32_t layer_state; +#endif + +bool music_activated; + +void matrix_init_kb(void); +void matrix_scan_kb(void); +bool process_action_kb(keyrecord_t *record); + +void leader_start(void); +void leader_end(void); + +#ifndef LEADER_TIMEOUT + #define LEADER_TIMEOUT 200 +#endif +#define SEQ_ONE_KEY(key) if (leader_sequence[0] == (key) && leader_sequence[1] == 0 && leader_sequence[2] == 0) +#define SEQ_TWO_KEYS(key1, key2) if (leader_sequence[0] == (key1) && leader_sequence[1] == (key2) && leader_sequence[2] == 0) +#define SEQ_THREE_KEYS(key1, key2, key3) if (leader_sequence[0] == (key1) && leader_sequence[1] == (key2) && leader_sequence[2] == (key3)) + +#define LEADER_EXTERNS() extern bool leading; extern uint16_t leader_time; extern uint16_t leader_sequence[3]; extern uint8_t leader_sequence_size +#define LEADER_DICTIONARY() if (leading && timer_elapsed(leader_time) > LEADER_TIMEOUT) + +#endif \ No newline at end of file diff --git a/quantum/quantum.mk b/quantum/quantum.mk index 5f4c2f0450..b45ad850ab 100644 --- a/quantum/quantum.mk +++ b/quantum/quantum.mk @@ -1,7 +1,8 @@ QUANTUM_DIR = quantum # # project specific files -SRC += $(QUANTUM_DIR)/keymap_common.c \ +SRC += $(QUANTUM_DIR)/quantum.c \ + $(QUANTUM_DIR)/keymap_common.c \ $(QUANTUM_DIR)/led.c # ifdef KEYMAP_FILE diff --git a/quantum/template/template.c b/quantum/template/template.c index 6050a2d20c..649072eb2e 100644 --- a/quantum/template/template.c +++ b/quantum/template/template.c @@ -11,8 +11,9 @@ void matrix_scan_user(void) { } __attribute__ ((weak)) -void process_action_user(keyrecord_t *record) { +bool process_action_user(keyrecord_t *record) { // leave this function blank - it can be defined in a keymap file + return true; } __attribute__ ((weak)) @@ -34,11 +35,11 @@ void matrix_scan_kb(void) { matrix_scan_user(); } -void process_action_kb(keyrecord_t *record) { +bool process_action_kb(keyrecord_t *record) { // put your per-action keyboard code here // runs for every action, just before processing by the firmware - process_action_user(record); + return process_action_user(record); } void led_set_kb(uint8_t usb_led) { diff --git a/quantum/template/template.h b/quantum/template/template.h index 22742105a3..8537e3b4be 100644 --- a/quantum/template/template.h +++ b/quantum/template/template.h @@ -24,7 +24,7 @@ void matrix_init_user(void); void matrix_scan_user(void); -void process_action_user(keyrecord_t *record); +bool process_action_user(keyrecord_t *record); void led_set_user(uint8_t usb_led); #endif diff --git a/tmk_core/common/action.c b/tmk_core/common/action.c index 081e90b2db..c026b96d9c 100644 --- a/tmk_core/common/action.c +++ b/tmk_core/common/action.c @@ -70,7 +70,9 @@ void process_action_nocache(keyrecord_t *record) #endif __attribute__ ((weak)) -void process_action_kb(keyrecord_t *record) {} +bool process_action_quantum(keyrecord_t *record) { + return true; +} void process_action(keyrecord_t *record) { @@ -89,7 +91,8 @@ void process_action(keyrecord_t *record) } #endif - process_action_kb(record); + if (!process_action_quantum(record)) + return; action_t action = store_or_get_action(event.pressed, event.key); dprint("ACTION: "); debug_action(action); diff --git a/tmk_core/common/action.h b/tmk_core/common/action.h index 44ec3047ba..7d1cbafe99 100644 --- a/tmk_core/common/action.h +++ b/tmk_core/common/action.h @@ -59,7 +59,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt); void action_function(keyrecord_t *record, uint8_t id, uint8_t opt); /* keyboard-specific key event (pre)processing */ -void process_action_kb(keyrecord_t *record); +bool process_action_quantum(keyrecord_t *record); /* Utilities for actions. */ #if !defined(NO_ACTION_LAYER) && defined(PREVENT_STUCK_MODIFIERS) diff --git a/tmk_core/common/matrix.h b/tmk_core/common/matrix.h index 0b013fc989..ad0871bfb7 100644 --- a/tmk_core/common/matrix.h +++ b/tmk_core/common/matrix.h @@ -64,8 +64,8 @@ void matrix_power_up(void); void matrix_power_down(void); /* keyboard-specific setup/loop functionality */ -void matrix_init_kb(void); -void matrix_scan_kb(void); +void matrix_init_quantum(void); +void matrix_scan_quantum(void); #ifdef __cplusplus } -- cgit v1.2.1 From 15719f3574c6274ee0f3ec87431927c5a523aa3e Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Sun, 15 May 2016 00:40:59 -0400 Subject: adds a sequencer to the music mode (#330) * implements leader key for planck experimental * allows override of leader timeout * adds ability to use the leader key in seq * fixes leader keycode * adds chording prototype * fixes keycode detection * moves music mode to quantum.c * disables chording by default * adds music sequencer functionality * implements audio/music functions in quantum.c * Merge branch 'master' into process-record --- keyboard/planck/keymaps/experimental/keymap.c | 72 +----------------- quantum/audio/audio.c | 11 ++- quantum/audio/audio.h | 1 + quantum/keymap_common.h | 15 +++- quantum/quantum.c | 104 +++++++++++++++++++++++++- 5 files changed, 122 insertions(+), 81 deletions(-) diff --git a/keyboard/planck/keymaps/experimental/keymap.c b/keyboard/planck/keymaps/experimental/keymap.c index 8dc158c73f..8bc7334c9a 100644 --- a/keyboard/planck/keymaps/experimental/keymap.c +++ b/keyboard/planck/keymaps/experimental/keymap.c @@ -20,8 +20,7 @@ extern keymap_config_t keymap_config; #define _DVORAK 2 #define _LOWER 3 #define _RAISE 4 -#define _MUSIC 5 -#define _PLOVER 6 +#define _PLOVER 5 #define _ADJUST 16 // Macro name shortcuts @@ -31,12 +30,6 @@ extern keymap_config_t keymap_config; #define LOWER M(_LOWER) #define RAISE M(_RAISE) #define M_BL 5 -#define AUD_OFF M(6) -#define AUD_ON M(7) -#define MUS_OFF M(8) -#define MUS_ON M(9) -#define VC_IN M(10) -#define VC_DE M(11) #define PLOVER M(12) #define EXT_PLV M(13) @@ -136,16 +129,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} }, -/* Music (reserved for process_action_user) - * - */ -[_MUSIC] = { - {XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX}, - {XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX}, - {XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX}, - {XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, LOWER, XXXXXXX, XXXXXXX, RAISE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX} -}, - /* Plover layer (http://opensteno.org) * ,-----------------------------------------------------------------------------------. * | # | # | # | # | # | # | # | # | # | # | # | # | @@ -178,8 +161,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [_ADJUST] = { {_______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL}, - {_______, _______, _______, AUD_ON, AUD_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, PLOVER, _______}, - {_______, VC_DE, VC_IN, MUS_ON, MUS_OFF, _______, _______, _______, _______, _______, _______, _______}, + {_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, PLOVER, _______}, + {_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, _______, _______, _______, _______, _______, _______, _______}, {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} } @@ -205,7 +188,6 @@ float tone_colemak[][2] = SONG(COLEMAK_SOUND); float tone_plover[][2] = SONG(PLOVER_SOUND); float tone_plover_gb[][2] = SONG(PLOVER_GOODBYE_SOUND); -float music_scale[][2] = SONG(MUSIC_SCALE_SOUND); float goodbye[][2] = SONG(GOODBYE_SOUND); #endif @@ -274,53 +256,6 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) unregister_code(KC_RSFT); } break; - case 6: - if (record->event.pressed) { - #ifdef AUDIO_ENABLE - audio_off(); - #endif - } - break; - case 7: - if (record->event.pressed) { - #ifdef AUDIO_ENABLE - audio_on(); - PLAY_NOTE_ARRAY(tone_startup, false, 0); - #endif - } - break; - case 8: - if (record->event.pressed) { - #ifdef AUDIO_ENABLE - music_activated = false; - stop_all_notes(); - #endif - } - break; - case 9: - if (record->event.pressed) { - #ifdef AUDIO_ENABLE - PLAY_NOTE_ARRAY(music_scale, false, 0); - music_activated = true; - #endif - } - break; - case 10: - if (record->event.pressed) { - #ifdef AUDIO_ENABLE - voice_iterate(); - PLAY_NOTE_ARRAY(music_scale, false, 0); - #endif - } - break; - case 11: - if (record->event.pressed) { - #ifdef AUDIO_ENABLE - voice_deiterate(); - PLAY_NOTE_ARRAY(music_scale, false, 0); - #endif - } - break; case 12: if (record->event.pressed) { #ifdef AUDIO_ENABLE @@ -330,7 +265,6 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) layer_off(_RAISE); layer_off(_LOWER); layer_off(_ADJUST); - layer_off(_MUSIC); layer_on(_PLOVER); if (!eeconfig_is_enabled()) { eeconfig_init(); diff --git a/quantum/audio/audio.c b/quantum/audio/audio.c index 27b64f8c96..243f49f0ee 100644 --- a/quantum/audio/audio.c +++ b/quantum/audio/audio.c @@ -478,12 +478,11 @@ void increase_tempo(uint8_t tempo_change) { // Override these functions in your keymap file to play different tunes on // startup and bootloader jump __attribute__ ((weak)) -void play_startup_tone() -{ -} +void play_startup_tone() {} __attribute__ ((weak)) -void play_goodbye_tone() -{ -} +void play_goodbye_tone() {} + +__attribute__ ((weak)) +void audio_on_callback(void) {} //------------------------------------------------------------------------------ diff --git a/quantum/audio/audio.h b/quantum/audio/audio.h index 4ba879bbb1..fe85061318 100644 --- a/quantum/audio/audio.h +++ b/quantum/audio/audio.h @@ -29,6 +29,7 @@ bool is_audio_on(void); void audio_toggle(void); void audio_on(void); void audio_off(void); +void audio_on_callback(void); // Vibrato rate functions diff --git a/quantum/keymap_common.h b/quantum/keymap_common.h index 2ad1ba6c60..4107d575be 100644 --- a/quantum/keymap_common.h +++ b/quantum/keymap_common.h @@ -191,8 +191,6 @@ extern const uint16_t fn_actions[]; #define RESET 0x5000 #define DEBUG 0x5001 -#define KC_LEAD 0x5014 - // MAGIC keycodes #define MAGIC_SWAP_CONTROL_CAPSLOCK 0x5002 @@ -217,6 +215,19 @@ extern const uint16_t fn_actions[]; #define AG_SWAP MAGIC_SWAP_ALT_GUI #define AG_NORM MAGIC_UNSWAP_ALT_GUI +#define KC_LEAD 0x5014 + +// Audio on/off +#define AU_ON 0x5020 +#define AU_OFF 0x5021 + +// Music mode on/off +#define MU_ON 0x5022 +#define MU_OFF 0x5023 + +// Music voice iterate +#define MUV_IN 0x5024 +#define MUV_DE 0x5025 // GOTO layer - 16 layers max // when: diff --git a/quantum/quantum.c b/quantum/quantum.c index e274d846f2..cd7fdbb7fe 100644 --- a/quantum/quantum.c +++ b/quantum/quantum.c @@ -21,6 +21,7 @@ void leader_end(void) {} uint8_t starting_note = 0x0C; int offset = 0; bool music_activated = false; + float music_scale[][2] = SONG(MUSIC_SCALE_SOUND); #endif // Leader key stuff @@ -60,6 +61,15 @@ bool keys_chord(uint8_t keys[]) { return (pass && (in == keys_size)); } +static bool music_sequence_recording = false; +static bool music_sequence_playing = false; +static float music_sequence[16] = {0}; +static uint8_t music_sequence_count = 0; +static uint8_t music_sequence_position = 0; + +static uint16_t music_sequence_timer = 0; +static uint16_t music_sequence_interval = 100; + bool process_action_quantum(keyrecord_t *record) { /* This gets the keycode from the key pressed */ @@ -81,12 +91,87 @@ bool process_action_quantum(keyrecord_t *record) { #endif #ifdef AUDIO_ENABLE - if (music_activated) { + if (keycode == AU_ON && record->event.pressed) { + audio_on(); + audio_on_callback(); + return false; + } + + if (keycode == AU_OFF && record->event.pressed) { + audio_off(); + return false; + } + + if (keycode == MU_ON && record->event.pressed) { + music_activated = true; + PLAY_NOTE_ARRAY(music_scale, false, 0); + return false; + } + + if (keycode == MU_OFF && record->event.pressed) { + music_activated = false; + stop_all_notes(); + return false; + } + + if (keycode == MUV_IN && record->event.pressed) { + voice_iterate(); + PLAY_NOTE_ARRAY(music_scale, false, 0); + return false; + } + + if (keycode == MUV_DE && record->event.pressed) { + voice_deiterate(); + PLAY_NOTE_ARRAY(music_scale, false, 0); + return false; + } + + if (music_activated) { + + if (keycode == KC_LCTL && record->event.pressed) { // Start recording + stop_all_notes(); + music_sequence_recording = true; + music_sequence_playing = false; + music_sequence_count = 0; + return false; + } + if (keycode == KC_LALT && record->event.pressed) { // Stop recording/playing + stop_all_notes(); + music_sequence_recording = false; + music_sequence_playing = false; + return false; + } + if (keycode == KC_LGUI && record->event.pressed) { // Start playing + stop_all_notes(); + music_sequence_recording = false; + music_sequence_playing = true; + music_sequence_position = 0; + music_sequence_timer = 0; + return false; + } + + if (keycode == KC_UP) { + if (record->event.pressed) + music_sequence_interval-=10; + return false; + } + if (keycode == KC_DOWN) { + if (record->event.pressed) + music_sequence_interval+=10; + return false; + } + + float freq = ((float)220.0)*pow(2.0, -4.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row)); if (record->event.pressed) { - play_note(((double)220.0)*pow(2.0, -4.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row)), 0xF); + play_note(freq, 0xF); + if (music_sequence_recording) { + music_sequence[music_sequence_count] = freq; + music_sequence_count++; + } } else { - stop_note(((double)220.0)*pow(2.0, -4.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row))); - } + stop_note(freq); + } + if (keycode < 0xFF) // ignores all normal keycodes, but lets RAISE, LOWER, etc through return false; } @@ -163,5 +248,16 @@ void matrix_init_quantum() { } void matrix_scan_quantum() { + #ifdef AUDIO_ENABLE + if (music_sequence_playing) { + if ((music_sequence_timer == 0) || (timer_elapsed(music_sequence_timer) > music_sequence_interval)) { + music_sequence_timer = timer_read(); + stop_note(music_sequence[(music_sequence_position - 1 < 0)?(music_sequence_position - 1 + music_sequence_count):(music_sequence_position - 1)]); + play_note(music_sequence[music_sequence_position], 0xF); + music_sequence_position = (music_sequence_position + 1) % music_sequence_count; + } + } + + #endif matrix_scan_kb(); } \ No newline at end of file -- cgit v1.2.1 From bf5c2ccee5497523c214dae7aacdc27fdbb0f235 Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Sun, 15 May 2016 00:47:25 -0400 Subject: splits process_action up to handle records separately (#329) * implements leader key for planck experimental * allows override of leader timeout * adds ability to use the leader key in seq * fixes leader keycode * adds chording prototype * fixes keycode detection * moves music mode to quantum.c * disables chording by default * adds music sequencer functionality * implements audio/music functions in quantum.c * splits up process_action to allow independent processing of actions * merging? --- quantum/keymap_common.h | 3 +++ quantum/quantum.c | 11 +++++++++- tmk_core/common/action.c | 47 ++++++++++++++++++++++------------------ tmk_core/common/action.h | 7 +++--- tmk_core/common/action_tapping.c | 30 ++++++++++++------------- 5 files changed, 58 insertions(+), 40 deletions(-) diff --git a/quantum/keymap_common.h b/quantum/keymap_common.h index 4107d575be..0074ab164d 100644 --- a/quantum/keymap_common.h +++ b/quantum/keymap_common.h @@ -191,6 +191,9 @@ extern const uint16_t fn_actions[]; #define RESET 0x5000 #define DEBUG 0x5001 +#define KC_LEAD 0x5014 + + // MAGIC keycodes #define MAGIC_SWAP_CONTROL_CAPSLOCK 0x5002 diff --git a/quantum/quantum.c b/quantum/quantum.c index cd7fdbb7fe..dd5d84f826 100644 --- a/quantum/quantum.c +++ b/quantum/quantum.c @@ -70,7 +70,7 @@ static uint8_t music_sequence_position = 0; static uint16_t music_sequence_timer = 0; static uint16_t music_sequence_interval = 100; -bool process_action_quantum(keyrecord_t *record) { +bool process_record_quantum(keyrecord_t *record) { /* This gets the keycode from the key pressed */ keypos_t key = record->event.key; @@ -90,6 +90,14 @@ bool process_action_quantum(keyrecord_t *record) { keycode = keymap_key_to_keycode(layer_switch_get_layer(key), key); #endif + // This is how you use actions here + // if (keycode == KC_LEAD) { + // action_t action; + // action.code = ACTION_DEFAULT_LAYER_SET(0); + // process_action(record, action); + // return false; + // } + #ifdef AUDIO_ENABLE if (keycode == AU_ON && record->event.pressed) { audio_on(); @@ -259,5 +267,6 @@ void matrix_scan_quantum() { } #endif + matrix_scan_kb(); } \ No newline at end of file diff --git a/tmk_core/common/action.c b/tmk_core/common/action.c index c026b96d9c..be6dea2b79 100644 --- a/tmk_core/common/action.c +++ b/tmk_core/common/action.c @@ -46,7 +46,7 @@ void action_exec(keyevent_t event) #ifndef NO_ACTION_TAPPING action_tapping_process(record); #else - process_action(&record); + process_record(&record); if (!IS_NOEVENT(record.event)) { dprint("processed: "); debug_record(record); dprintln(); } @@ -56,25 +56,43 @@ void action_exec(keyevent_t event) #if !defined(NO_ACTION_LAYER) && defined(PREVENT_STUCK_MODIFIERS) bool disable_action_cache = false; -void process_action_nocache(keyrecord_t *record) +void process_record_nocache(keyrecord_t *record) { disable_action_cache = true; - process_action(record); + process_record(record); disable_action_cache = false; } #else -void process_action_nocache(keyrecord_t *record) +void process_record_nocache(keyrecord_t *record) { - process_action(record); + process_record(record); } #endif __attribute__ ((weak)) -bool process_action_quantum(keyrecord_t *record) { +bool process_record_quantum(keyrecord_t *record) { return true; } -void process_action(keyrecord_t *record) +void process_record(keyrecord_t *record) +{ + if (IS_NOEVENT(record->event)) { return; } + + if(!process_record_quantum(record)) + return; + + action_t action = store_or_get_action(record->event.pressed, record->event.key); + dprint("ACTION: "); debug_action(action); +#ifndef NO_ACTION_LAYER + dprint(" layer_state: "); layer_debug(); + dprint(" default_layer_state: "); default_layer_debug(); +#endif + dprintln(); + + process_action(record, action); +} + +void process_action(keyrecord_t *record, action_t action) { bool do_release_oneshot = false; keyevent_t event = record->event; @@ -82,8 +100,6 @@ void process_action(keyrecord_t *record) uint8_t tap_count = record->tap.count; #endif - if (IS_NOEVENT(event)) { return; } - #if (defined(ONESHOT_TIMEOUT) && (ONESHOT_TIMEOUT > 0)) if (has_oneshot_layer_timed_out()) { dprintf("Oneshot layer: timeout\n"); @@ -91,17 +107,6 @@ void process_action(keyrecord_t *record) } #endif - if (!process_action_quantum(record)) - return; - - action_t action = store_or_get_action(event.pressed, event.key); - dprint("ACTION: "); debug_action(action); -#ifndef NO_ACTION_LAYER - dprint(" layer_state: "); layer_debug(); - dprint(" default_layer_state: "); default_layer_debug(); -#endif - dprintln(); - if (event.pressed) { // clear the potential weak mods left by previously pressed keys clear_weak_mods(); @@ -451,7 +456,7 @@ void process_action(keyrecord_t *record) if (do_release_oneshot && !(get_oneshot_layer_state() & ONESHOT_PRESSED ) ) { record->event.pressed = false; layer_on(get_oneshot_layer()); - process_action(record); + process_record(record); layer_off(get_oneshot_layer()); } #endif diff --git a/tmk_core/common/action.h b/tmk_core/common/action.h index 7d1cbafe99..e8aa12a7cb 100644 --- a/tmk_core/common/action.h +++ b/tmk_core/common/action.h @@ -59,14 +59,15 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt); void action_function(keyrecord_t *record, uint8_t id, uint8_t opt); /* keyboard-specific key event (pre)processing */ -bool process_action_quantum(keyrecord_t *record); +bool process_record_quantum(keyrecord_t *record); /* Utilities for actions. */ #if !defined(NO_ACTION_LAYER) && defined(PREVENT_STUCK_MODIFIERS) extern bool disable_action_cache; #endif -void process_action_nocache(keyrecord_t *record); -void process_action(keyrecord_t *record); +void process_record_nocache(keyrecord_t *record); +void process_record(keyrecord_t *record); +void process_action(keyrecord_t *record, action_t action); void register_code(uint8_t code); void unregister_code(uint8_t code); void register_mods(uint8_t mods); diff --git a/tmk_core/common/action_tapping.c b/tmk_core/common/action_tapping.c index e6343e6da7..ff78d7f2ab 100644 --- a/tmk_core/common/action_tapping.c +++ b/tmk_core/common/action_tapping.c @@ -89,7 +89,7 @@ bool process_tapping(keyrecord_t *keyp) debug("Tapping: First tap(0->1).\n"); tapping_key.tap.count = 1; debug_tapping_key(); - process_action(&tapping_key); + process_record(&tapping_key); // copy tapping state keyp->tap = tapping_key.tap; @@ -103,7 +103,7 @@ bool process_tapping(keyrecord_t *keyp) */ else if (IS_RELEASED(event) && waiting_buffer_typed(event)) { debug("Tapping: End. No tap. Interfered by typing key\n"); - process_action(&tapping_key); + process_record(&tapping_key); tapping_key = (keyrecord_t){}; debug_tapping_key(); // enqueue @@ -131,7 +131,7 @@ bool process_tapping(keyrecord_t *keyp) } // Release of key should be process immediately. debug("Tapping: release event of a key pressed before tapping\n"); - process_action(keyp); + process_record(keyp); return true; } else { @@ -148,7 +148,7 @@ bool process_tapping(keyrecord_t *keyp) if (IS_TAPPING_KEY(event.key) && !event.pressed) { debug("Tapping: Tap release("); debug_dec(tapping_key.tap.count); debug(")\n"); keyp->tap = tapping_key.tap; - process_action(keyp); + process_record(keyp); tapping_key = *keyp; debug_tapping_key(); return true; @@ -157,7 +157,7 @@ bool process_tapping(keyrecord_t *keyp) if (tapping_key.tap.count > 1) { debug("Tapping: Start new tap with releasing last tap(>1).\n"); // unregister key - process_action(&(keyrecord_t){ + process_record(&(keyrecord_t){ .tap = tapping_key.tap, .event.key = tapping_key.event.key, .event.time = event.time, @@ -175,7 +175,7 @@ bool process_tapping(keyrecord_t *keyp) if (!IS_NOEVENT(event)) { debug("Tapping: key event while last tap(>0).\n"); } - process_action(keyp); + process_record(keyp); return true; } } @@ -185,7 +185,7 @@ bool process_tapping(keyrecord_t *keyp) if (tapping_key.tap.count == 0) { debug("Tapping: End. Timeout. Not tap(0): "); debug_event(event); debug("\n"); - process_action(&tapping_key); + process_record(&tapping_key); tapping_key = (keyrecord_t){}; debug_tapping_key(); return false; @@ -193,7 +193,7 @@ bool process_tapping(keyrecord_t *keyp) if (IS_TAPPING_KEY(event.key) && !event.pressed) { debug("Tapping: End. last timeout tap release(>0)."); keyp->tap = tapping_key.tap; - process_action(keyp); + process_record(keyp); tapping_key = (keyrecord_t){}; return true; } @@ -201,7 +201,7 @@ bool process_tapping(keyrecord_t *keyp) if (tapping_key.tap.count > 1) { debug("Tapping: Start new tap with releasing last timeout tap(>1).\n"); // unregister key - process_action(&(keyrecord_t){ + process_record(&(keyrecord_t){ .tap = tapping_key.tap, .event.key = tapping_key.event.key, .event.time = event.time, @@ -219,7 +219,7 @@ bool process_tapping(keyrecord_t *keyp) if (!IS_NOEVENT(event)) { debug("Tapping: key event while last timeout tap(>0).\n"); } - process_action(keyp); + process_record(keyp); return true; } } @@ -233,7 +233,7 @@ bool process_tapping(keyrecord_t *keyp) keyp->tap = tapping_key.tap; if (keyp->tap.count < 15) keyp->tap.count += 1; debug("Tapping: Tap press("); debug_dec(keyp->tap.count); debug(")\n"); - process_action(keyp); + process_record(keyp); tapping_key = *keyp; debug_tapping_key(); return true; @@ -253,12 +253,12 @@ bool process_tapping(keyrecord_t *keyp) // should none in buffer // FIX: interrupted when other key is pressed tapping_key.tap.interrupted = true; - process_action(keyp); + process_record(keyp); return true; } } else { if (!IS_NOEVENT(event)) debug("Tapping: other key just after tap.\n"); - process_action(keyp); + process_record(keyp); return true; } } else { @@ -280,7 +280,7 @@ bool process_tapping(keyrecord_t *keyp) debug_tapping_key(); return true; } else { - process_action(keyp); + process_record(keyp); return true; } } @@ -347,7 +347,7 @@ void waiting_buffer_scan_tap(void) WITHIN_TAPPING_TERM(waiting_buffer[i].event)) { tapping_key.tap.count = 1; waiting_buffer[i].tap.count = 1; - process_action(&tapping_key); + process_record(&tapping_key); debug("waiting_buffer_scan_tap: found at ["); debug_dec(i); debug("]\n"); debug_waiting_buffer(); -- cgit v1.2.1 From fde477a927edc6b4207a6968d44aeed021e8b300 Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Sun, 15 May 2016 00:51:06 -0400 Subject: updates midi functionality (#331) * implements leader key for planck experimental * allows override of leader timeout * adds ability to use the leader key in seq * fixes leader keycode * adds chording prototype * fixes keycode detection * moves music mode to quantum.c * disables chording by default * adds music sequencer functionality * implements audio/music functions in quantum.c * splits up process_action to allow independent processing of actions * moves midi stuff to quantum.c * adds additional scales for midi --- keyboard/planck/keymaps/experimental/keymap.c | 6 +- keyboard/planck/keymaps/experimental/makefile.mk | 5 +- quantum/keymap_common.c | 5 -- quantum/keymap_common.h | 5 ++ quantum/quantum.c | 88 ++++++++++++++++++++++-- quantum/quantum.h | 3 +- quantum/quantum.mk | 6 +- tmk_core/protocol/lufa/lufa.c | 2 +- 8 files changed, 103 insertions(+), 17 deletions(-) diff --git a/keyboard/planck/keymaps/experimental/keymap.c b/keyboard/planck/keymaps/experimental/keymap.c index 8bc7334c9a..2f8a0510a8 100644 --- a/keyboard/planck/keymaps/experimental/keymap.c +++ b/keyboard/planck/keymaps/experimental/keymap.c @@ -162,7 +162,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_ADJUST] = { {_______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL}, {_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, PLOVER, _______}, - {_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, _______, _______, _______, _______, _______, _______, _______}, + {_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______}, {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} } @@ -227,8 +227,10 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) case _LOWER: if (record->event.pressed) { layer_on(_LOWER); + #ifdef BACKLIGHT_ENABLE breathing_speed_set(2); breathing_pulse(); + #endif update_tri_layer(_LOWER, _RAISE, _ADJUST); } else { layer_off(_LOWER); @@ -238,8 +240,10 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) case _RAISE: if (record->event.pressed) { layer_on(_RAISE); + #ifdef BACKLIGHT_ENABLE breathing_speed_set(2); breathing_pulse(); + #endif update_tri_layer(_LOWER, _RAISE, _ADJUST); } else { layer_off(_RAISE); diff --git a/keyboard/planck/keymaps/experimental/makefile.mk b/keyboard/planck/keymaps/experimental/makefile.mk index 99fbfbd0bb..6c1e05b65a 100644 --- a/keyboard/planck/keymaps/experimental/makefile.mk +++ b/keyboard/planck/keymaps/experimental/makefile.mk @@ -1,2 +1,5 @@ AUDIO_ENABLE = yes -NKRO_ENABLE = yes \ No newline at end of file +NKRO_ENABLE = yes +MIDI_ENABLE = yes +BACKLIGHT_ENABLE = no +COMMAND_ENABLE = no \ No newline at end of file diff --git a/quantum/keymap_common.c b/quantum/keymap_common.c index 0184770c4b..2aae13e679 100644 --- a/quantum/keymap_common.c +++ b/quantum/keymap_common.c @@ -282,11 +282,6 @@ static action_t keycode_to_action(uint16_t keycode) action.code = ACTION_MODS_ONESHOT(mod); } break; - #ifdef MIDI_ENABLE - case 0x6000 ... 0x6FFF: - action.code = ACTION_FUNCTION_OPT(keycode & 0xFF, (keycode & 0x0F00) >> 8); - break; - #endif case 0x7000 ... 0x7FFF: action.code = ACTION_MODS_TAP_KEY((keycode >> 0x8) & 0xF, keycode & 0xFF); break; diff --git a/quantum/keymap_common.h b/quantum/keymap_common.h index 0074ab164d..07020150ae 100644 --- a/quantum/keymap_common.h +++ b/quantum/keymap_common.h @@ -195,6 +195,7 @@ extern const uint16_t fn_actions[]; + // MAGIC keycodes #define MAGIC_SWAP_CONTROL_CAPSLOCK 0x5002 #define MAGIC_UNSWAP_CONTROL_CAPSLOCK 0x5003 @@ -232,6 +233,10 @@ extern const uint16_t fn_actions[]; #define MUV_IN 0x5024 #define MUV_DE 0x5025 +// Midi mode on/off +#define MI_ON 0x5026 +#define MI_OFF 0x5027 + // GOTO layer - 16 layers max // when: // ON_PRESS = 1 diff --git a/quantum/quantum.c b/quantum/quantum.c index dd5d84f826..5a978d3320 100644 --- a/quantum/quantum.c +++ b/quantum/quantum.c @@ -19,11 +19,15 @@ void leader_end(void) {} #ifdef AUDIO_ENABLE uint8_t starting_note = 0x0C; - int offset = 0; + int offset = 7; bool music_activated = false; float music_scale[][2] = SONG(MUSIC_SCALE_SOUND); #endif +#ifdef MIDI_ENABLE + bool midi_activated = false; +#endif + // Leader key stuff bool leading = false; uint16_t leader_time = 0; @@ -98,6 +102,82 @@ bool process_record_quantum(keyrecord_t *record) { // return false; // } + #ifdef MIDI_ENABLE + if (keycode == MI_ON && record->event.pressed) { + midi_activated = true; + PLAY_NOTE_ARRAY(music_scale, false, 0); + return false; + } + + if (keycode == MI_OFF && record->event.pressed) { + midi_activated = false; + midi_send_cc(&midi_device, 0, 0x7B, 0); + return false; + } + + if (midi_activated) { + if (record->event.key.col == (MATRIX_COLS - 1) && record->event.key.row == (MATRIX_ROWS - 1)) { + if (record->event.pressed) { + starting_note++; // Change key + midi_send_cc(&midi_device, 0, 0x7B, 0); + // midi_send_cc(&midi_device, 1, 0x7B, 0); + // midi_send_cc(&midi_device, 2, 0x7B, 0); + // midi_send_cc(&midi_device, 3, 0x7B, 0); + // midi_send_cc(&midi_device, 4, 0x7B, 0); + } + return false; + } + if (record->event.key.col == (MATRIX_COLS - 2) && record->event.key.row == (MATRIX_ROWS - 1)) { + if (record->event.pressed) { + starting_note--; // Change key + midi_send_cc(&midi_device, 0, 0x7B, 0); + // midi_send_cc(&midi_device, 1, 0x7B, 0); + // midi_send_cc(&midi_device, 2, 0x7B, 0); + // midi_send_cc(&midi_device, 3, 0x7B, 0); + // midi_send_cc(&midi_device, 4, 0x7B, 0); + } + return false; + } + if (record->event.key.col == (MATRIX_COLS - 3) && record->event.key.row == (MATRIX_ROWS - 1) && record->event.pressed) { + offset++; // Change scale + midi_send_cc(&midi_device, 0, 0x7B, 0); + // midi_send_cc(&midi_device, 1, 0x7B, 0); + // midi_send_cc(&midi_device, 2, 0x7B, 0); + // midi_send_cc(&midi_device, 3, 0x7B, 0); + // midi_send_cc(&midi_device, 4, 0x7B, 0); + return false; + } + if (record->event.key.col == (MATRIX_COLS - 4) && record->event.key.row == (MATRIX_ROWS - 1) && record->event.pressed) { + offset--; // Change scale + midi_send_cc(&midi_device, 0, 0x7B, 0); + // midi_send_cc(&midi_device, 1, 0x7B, 0); + // midi_send_cc(&midi_device, 2, 0x7B, 0); + // midi_send_cc(&midi_device, 3, 0x7B, 0); + // midi_send_cc(&midi_device, 4, 0x7B, 0); + return false; + } + // basic + // uint8_t note = (starting_note + SCALE[record->event.key.col + offset])+12*(MATRIX_ROWS - record->event.key.row); + // advanced + // uint8_t note = (starting_note + record->event.key.col + offset)+12*(MATRIX_ROWS - record->event.key.row); + // guitar + uint8_t note = (starting_note + record->event.key.col + offset)+5*(MATRIX_ROWS - record->event.key.row); + // violin + // uint8_t note = (starting_note + record->event.key.col + offset)+7*(MATRIX_ROWS - record->event.key.row); + + if (record->event.pressed) { + // midi_send_noteon(&midi_device, record->event.key.row, starting_note + SCALE[record->event.key.col], 127); + midi_send_noteon(&midi_device, 0, note, 127); + } else { + // midi_send_noteoff(&midi_device, record->event.key.row, starting_note + SCALE[record->event.key.col], 127); + midi_send_noteoff(&midi_device, 0, note, 127); + } + + if (keycode < 0xFF) // ignores all normal keycodes, but lets RAISE, LOWER, etc through + return false; + } + #endif + #ifdef AUDIO_ENABLE if (keycode == AU_ON && record->event.pressed) { audio_on(); @@ -169,7 +249,7 @@ bool process_record_quantum(keyrecord_t *record) { return false; } - float freq = ((float)220.0)*pow(2.0, -4.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row)); + float freq = ((float)220.0)*pow(2.0, -5.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row)); if (record->event.pressed) { play_note(freq, 0xF); if (music_sequence_recording) { @@ -185,8 +265,6 @@ bool process_record_quantum(keyrecord_t *record) { } #endif - - #ifndef DISABLE_LEADER // Leader key set-up if (record->event.pressed) { @@ -267,6 +345,6 @@ void matrix_scan_quantum() { } #endif - + matrix_scan_kb(); } \ No newline at end of file diff --git a/quantum/quantum.h b/quantum/quantum.h index db726ad425..bfecdb2626 100644 --- a/quantum/quantum.h +++ b/quantum/quantum.h @@ -13,7 +13,8 @@ #include "audio.h" #endif #ifdef MIDI_ENABLE - #include + // #include + #include #endif #include "action_layer.h" #include "eeconfig.h" diff --git a/quantum/quantum.mk b/quantum/quantum.mk index b45ad850ab..e7ccfd6598 100644 --- a/quantum/quantum.mk +++ b/quantum/quantum.mk @@ -24,9 +24,9 @@ ifndef CUSTOM_MATRIX SRC += $(QUANTUM_DIR)/matrix.c endif -ifeq ($(strip $(MIDI_ENABLE)), yes) - SRC += $(QUANTUM_DIR)/keymap_midi.c -endif +#ifeq ($(strip $(MIDI_ENABLE)), yes) +# SRC += $(QUANTUM_DIR)/keymap_midi.c +#endif ifeq ($(strip $(AUDIO_ENABLE)), yes) SRC += $(QUANTUM_DIR)/audio/audio.c diff --git a/tmk_core/protocol/lufa/lufa.c b/tmk_core/protocol/lufa/lufa.c index f03f9a9b92..aba94cd597 100644 --- a/tmk_core/protocol/lufa/lufa.c +++ b/tmk_core/protocol/lufa/lufa.c @@ -883,7 +883,7 @@ int main(void) midi_register_cc_callback(&midi_device, cc_callback); midi_register_sysex_callback(&midi_device, sysex_callback); - init_notes(); + // init_notes(); // midi_send_cc(&midi_device, 0, 1, 2); // midi_send_cc(&midi_device, 15, 1, 0); // midi_send_noteon(&midi_device, 0, 64, 127); -- cgit v1.2.1 From e2aa980ad5d92f76dadf1de9dbadb9eacbddd5df Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Sun, 15 May 2016 01:07:48 -0400 Subject: cleans up default keymaps (olkb) --- keyboard/atomic/atomic.h | 6 +-- keyboard/planck/keymaps/default/keymap.c | 86 ++----------------------------- keyboard/preonic/keymaps/default/keymap.c | 85 +----------------------------- keyboard/preonic/preonic.h | 14 +---- 4 files changed, 7 insertions(+), 184 deletions(-) diff --git a/keyboard/atomic/atomic.h b/keyboard/atomic/atomic.h index 2d6b4c6cb5..456c3fbdf8 100644 --- a/keyboard/atomic/atomic.h +++ b/keyboard/atomic/atomic.h @@ -1,11 +1,7 @@ #ifndef ATOMIC_H #define ATOMIC_H -#include "matrix.h" -#include "keymap_common.h" -#ifdef BACKLIGHT_ENABLE - #include "backlight.h" -#endif +#include "quantum.h" #include #include diff --git a/keyboard/planck/keymaps/default/keymap.c b/keyboard/planck/keymaps/default/keymap.c index 56f20a3b99..79bf62436a 100644 --- a/keyboard/planck/keymaps/default/keymap.c +++ b/keyboard/planck/keymaps/default/keymap.c @@ -19,8 +19,7 @@ extern keymap_config_t keymap_config; #define _DVORAK 2 #define _LOWER 3 #define _RAISE 4 -#define _MUSIC 5 -#define _PLOVER 6 +#define _PLOVER 5 #define _ADJUST 16 // Macro name shortcuts @@ -30,12 +29,6 @@ extern keymap_config_t keymap_config; #define LOWER M(_LOWER) #define RAISE M(_RAISE) #define M_BL 5 -#define AUD_OFF M(6) -#define AUD_ON M(7) -#define MUS_OFF M(8) -#define MUS_ON M(9) -#define VC_IN M(10) -#define VC_DE M(11) #define PLOVER M(12) #define EXT_PLV M(13) #define TOG_OUT M(14) @@ -136,16 +129,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} }, -/* Music (reserved for process_action_user) - * - */ -[_MUSIC] = { - {XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX}, - {XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX}, - {XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX}, - {XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, LOWER, XXXXXXX, XXXXXXX, RAISE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX} -}, - /* Plover layer (http://opensteno.org) * ,-----------------------------------------------------------------------------------. * | # | # | # | # | # | # | # | # | # | # | # | # | @@ -178,8 +161,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [_ADJUST] = { {_______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL}, - {_______, _______, _______, AUD_ON, AUD_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, PLOVER, _______}, - {_______, VC_DE, VC_IN, MUS_ON, MUS_OFF, _______, _______, _______, _______, _______, _______, _______}, + {_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, PLOVER, _______}, + {_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______}, {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} } @@ -205,7 +188,6 @@ float tone_colemak[][2] = SONG(COLEMAK_SOUND); float tone_plover[][2] = SONG(PLOVER_SOUND); float tone_plover_gb[][2] = SONG(PLOVER_GOODBYE_SOUND); -float music_scale[][2] = SONG(MUSIC_SCALE_SOUND); float goodbye[][2] = SONG(GOODBYE_SOUND); #endif @@ -270,53 +252,6 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) unregister_code(KC_RSFT); } break; - case 6: - if (record->event.pressed) { - #ifdef AUDIO_ENABLE - audio_off(); - #endif - } - break; - case 7: - if (record->event.pressed) { - #ifdef AUDIO_ENABLE - audio_on(); - PLAY_NOTE_ARRAY(tone_startup, false, 0); - #endif - } - break; - case 8: - if (record->event.pressed) { - #ifdef AUDIO_ENABLE - layer_off(_MUSIC); - stop_all_notes(); - #endif - } - break; - case 9: - if (record->event.pressed) { - #ifdef AUDIO_ENABLE - PLAY_NOTE_ARRAY(music_scale, false, 0); - layer_on(_MUSIC); - #endif - } - break; - case 10: - if (record->event.pressed) { - #ifdef AUDIO_ENABLE - voice_iterate(); - PLAY_NOTE_ARRAY(music_scale, false, 0); - #endif - } - break; - case 11: - if (record->event.pressed) { - #ifdef AUDIO_ENABLE - voice_deiterate(); - PLAY_NOTE_ARRAY(music_scale, false, 0); - #endif - } - break; case 12: if (record->event.pressed) { #ifdef AUDIO_ENABLE @@ -366,19 +301,4 @@ void play_goodbye_tone() PLAY_NOTE_ARRAY(goodbye, false, 0); _delay_ms(150); } - -uint8_t starting_note = 0x0C; -int offset = 0; - -void process_action_user(keyrecord_t *record) { - - if (IS_LAYER_ON(_MUSIC)) { - if (record->event.pressed) { - play_note(((double)220.0)*pow(2.0, -4.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row)), 0xF); - } else { - stop_note(((double)220.0)*pow(2.0, -4.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row))); - } - } - -} #endif diff --git a/keyboard/preonic/keymaps/default/keymap.c b/keyboard/preonic/keymaps/default/keymap.c index b3aa14dcbe..f808ab1ce4 100644 --- a/keyboard/preonic/keymaps/default/keymap.c +++ b/keyboard/preonic/keymaps/default/keymap.c @@ -14,7 +14,6 @@ #define _DVORAK 2 #define _LOWER 3 #define _RAISE 4 -#define _MUSIC 5 #define _ADJUST 16 // Macro name shortcuts @@ -24,12 +23,6 @@ #define LOWER M(_LOWER) #define RAISE M(_RAISE) #define M_BL 5 -#define AUD_OFF M(6) -#define AUD_ON M(7) -#define MUS_OFF M(8) -#define MUS_ON M(9) -#define VC_IN M(10) -#define VC_DE M(11) // Fillers to make layering more clear #define _______ KC_TRNS @@ -142,17 +135,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} }, -/* Music (reserved for process_action_user) - * - */ -[_MUSIC] = { - {XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX}, - {XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX}, - {XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX}, - {XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX}, - {XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, LOWER, XXXXXXX, XXXXXXX, RAISE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX} -}, - /* Adjust (Lower + Raise) * ,-----------------------------------------------------------------------------------. * | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | @@ -169,8 +151,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_ADJUST] = { {KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12}, {_______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL}, - {_______, _______, _______, AUD_ON, AUD_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______}, - {_______, VC_DE, VC_IN, MUS_ON, MUS_OFF, _______, _______, _______, _______, _______, _______, _______}, + {_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______}, + {_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______}, {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} } @@ -193,7 +175,6 @@ float tone_qwerty[][2] = SONG(QWERTY_SOUND); float tone_dvorak[][2] = SONG(DVORAK_SOUND); float tone_colemak[][2] = SONG(COLEMAK_SOUND); -float music_scale[][2] = SONG(MUSIC_SCALE_SOUND); float goodbye[][2] = SONG(GOODBYE_SOUND); #endif @@ -257,53 +238,6 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) unregister_code(KC_RSFT); } break; - case 6: - if (record->event.pressed) { - #ifdef AUDIO_ENABLE - audio_off(); - #endif - } - break; - case 7: - if (record->event.pressed) { - #ifdef AUDIO_ENABLE - audio_on(); - PLAY_NOTE_ARRAY(start_up, false, 0); - #endif - } - break; - case 8: - if (record->event.pressed) { - #ifdef AUDIO_ENABLE - layer_off(_MUSIC); - stop_all_notes(); - #endif - } - break; - case 9: - if (record->event.pressed) { - #ifdef AUDIO_ENABLE - PLAY_NOTE_ARRAY(music_scale, false, 0); - layer_on(_MUSIC); - #endif - } - break; - case 10: - if (record->event.pressed) { - #ifdef AUDIO_ENABLE - voice_iterate(); - PLAY_NOTE_ARRAY(music_scale, false, 0); - #endif - } - break; - case 11: - if (record->event.pressed) { - #ifdef AUDIO_ENABLE - voice_deiterate(); - PLAY_NOTE_ARRAY(music_scale, false, 0); - #endif - } - break; } return MACRO_NONE; }; @@ -318,21 +252,6 @@ void matrix_init_user(void) { #ifdef AUDIO_ENABLE -uint8_t starting_note = 0x0C; -int offset = 0; - -void process_action_user(keyrecord_t *record) { - - if (IS_LAYER_ON(_MUSIC)) { - if (record->event.pressed) { - play_note(((double)220.0)*pow(2.0, -4.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row)), 0xF); - } else { - stop_note(((double)220.0)*pow(2.0, -4.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row))); - } - } - -} - void play_goodbye_tone() { PLAY_NOTE_ARRAY(goodbye, false, 0); diff --git a/keyboard/preonic/preonic.h b/keyboard/preonic/preonic.h index 2406a11d7e..feb8797744 100644 --- a/keyboard/preonic/preonic.h +++ b/keyboard/preonic/preonic.h @@ -1,19 +1,7 @@ #ifndef PREONIC_H #define PREONIC_H -#include "matrix.h" -#include "keymap_common.h" -#ifdef BACKLIGHT_ENABLE - #include "backlight.h" -#endif -#ifdef RGBLIGHT_ENABLE - #include "rgblight.h" -#endif -#include -#include -#ifdef MIDI_ENABLE - #include -#endif +#include "quantum.h" #define PREONIC_MIT( \ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \ -- cgit v1.2.1 From b79400e0e9080112fbdcf9ae1672297286b7938a Mon Sep 17 00:00:00 2001 From: Jacob Bilger Date: Sun, 15 May 2016 01:22:51 -0400 Subject: Folders for each keymap.c file (#332) * Add folders to keymaps * test * test --- keyboard/planck/keymaps/Jacob/Keyboard Layout.PNG | Bin 17292 -> 0 bytes keyboard/planck/keymaps/Jacob/keymap.c | 56 - keyboard/planck/keymaps/Jacob/planck.hex | 1151 -------------------- keyboard/planck/keymaps/Jacob/readme.md | 1 - keyboard/planck/keymaps/alexey.c | 51 - keyboard/planck/keymaps/alexey/alexey.c | 51 + keyboard/planck/keymaps/angerthosenear.c | 50 - .../planck/keymaps/angerthosenear/angerthosenear.c | 50 + keyboard/planck/keymaps/austin.c | 50 - keyboard/planck/keymaps/austin/austin.c | 50 + keyboard/planck/keymaps/bone2planck.c | 112 -- keyboard/planck/keymaps/bone2planck/bone2planck.c | 112 ++ keyboard/planck/keymaps/brandon.c | 134 --- keyboard/planck/keymaps/brandon/brandon.c | 134 +++ keyboard/planck/keymaps/charlie.c | 54 - keyboard/planck/keymaps/charlie/charlie.c | 54 + keyboard/planck/keymaps/daniel.c | 48 - keyboard/planck/keymaps/daniel/daniel.c | 48 + keyboard/planck/keymaps/david.c | 76 -- keyboard/planck/keymaps/david/david.c | 76 ++ keyboard/planck/keymaps/dzobert.c | 49 - keyboard/planck/keymaps/dzobert/dzobert.c | 49 + keyboard/planck/keymaps/gabriel.c | 108 -- keyboard/planck/keymaps/gabriel/gabriel.c | 108 ++ keyboard/planck/keymaps/jacob/Keyboard Layout.PNG | Bin 0 -> 17292 bytes keyboard/planck/keymaps/jacob/keymap.c | 56 + keyboard/planck/keymaps/jacob/readme.md | 1 + keyboard/planck/keymaps/joe.c | 88 -- keyboard/planck/keymaps/joe/joe.c | 88 ++ keyboard/planck/keymaps/kyle.c | 49 - keyboard/planck/keymaps/kyle/kyle.c | 49 + keyboard/planck/keymaps/leo.c | 46 - keyboard/planck/keymaps/leo/leo.c | 46 + keyboard/planck/keymaps/lucas.c | 163 --- keyboard/planck/keymaps/lucas/lucas.c | 163 +++ keyboard/planck/keymaps/lukas.c | 64 -- keyboard/planck/keymaps/lukas/lukas.c | 64 ++ keyboard/planck/keymaps/max.c | 49 - keyboard/planck/keymaps/max/max.c | 49 + keyboard/planck/keymaps/mollat.c | 149 --- keyboard/planck/keymaps/mollat/mollat.c | 149 +++ keyboard/planck/keymaps/monkey.c | 76 -- keyboard/planck/keymaps/monkey/monkey.c | 76 ++ keyboard/planck/keymaps/nico.c | 69 -- keyboard/planck/keymaps/nico/nico.c | 69 ++ keyboard/planck/keymaps/numpad.c | 26 - keyboard/planck/keymaps/numpad/numpad.c | 26 + keyboard/planck/keymaps/tak3over.c | 130 --- keyboard/planck/keymaps/tak3over/tak3over.c | 130 +++ 49 files changed, 1698 insertions(+), 2849 deletions(-) delete mode 100644 keyboard/planck/keymaps/Jacob/Keyboard Layout.PNG delete mode 100644 keyboard/planck/keymaps/Jacob/keymap.c delete mode 100644 keyboard/planck/keymaps/Jacob/planck.hex delete mode 100644 keyboard/planck/keymaps/Jacob/readme.md delete mode 100644 keyboard/planck/keymaps/alexey.c create mode 100644 keyboard/planck/keymaps/alexey/alexey.c delete mode 100644 keyboard/planck/keymaps/angerthosenear.c create mode 100644 keyboard/planck/keymaps/angerthosenear/angerthosenear.c delete mode 100644 keyboard/planck/keymaps/austin.c create mode 100644 keyboard/planck/keymaps/austin/austin.c delete mode 100644 keyboard/planck/keymaps/bone2planck.c create mode 100644 keyboard/planck/keymaps/bone2planck/bone2planck.c delete mode 100644 keyboard/planck/keymaps/brandon.c create mode 100644 keyboard/planck/keymaps/brandon/brandon.c delete mode 100644 keyboard/planck/keymaps/charlie.c create mode 100644 keyboard/planck/keymaps/charlie/charlie.c delete mode 100644 keyboard/planck/keymaps/daniel.c create mode 100644 keyboard/planck/keymaps/daniel/daniel.c delete mode 100644 keyboard/planck/keymaps/david.c create mode 100644 keyboard/planck/keymaps/david/david.c delete mode 100644 keyboard/planck/keymaps/dzobert.c create mode 100644 keyboard/planck/keymaps/dzobert/dzobert.c delete mode 100644 keyboard/planck/keymaps/gabriel.c create mode 100644 keyboard/planck/keymaps/gabriel/gabriel.c create mode 100644 keyboard/planck/keymaps/jacob/Keyboard Layout.PNG create mode 100644 keyboard/planck/keymaps/jacob/keymap.c create mode 100644 keyboard/planck/keymaps/jacob/readme.md delete mode 100644 keyboard/planck/keymaps/joe.c create mode 100644 keyboard/planck/keymaps/joe/joe.c delete mode 100644 keyboard/planck/keymaps/kyle.c create mode 100644 keyboard/planck/keymaps/kyle/kyle.c delete mode 100644 keyboard/planck/keymaps/leo.c create mode 100644 keyboard/planck/keymaps/leo/leo.c delete mode 100644 keyboard/planck/keymaps/lucas.c create mode 100644 keyboard/planck/keymaps/lucas/lucas.c delete mode 100644 keyboard/planck/keymaps/lukas.c create mode 100644 keyboard/planck/keymaps/lukas/lukas.c delete mode 100644 keyboard/planck/keymaps/max.c create mode 100644 keyboard/planck/keymaps/max/max.c delete mode 100644 keyboard/planck/keymaps/mollat.c create mode 100644 keyboard/planck/keymaps/mollat/mollat.c delete mode 100644 keyboard/planck/keymaps/monkey.c create mode 100644 keyboard/planck/keymaps/monkey/monkey.c delete mode 100644 keyboard/planck/keymaps/nico.c create mode 100644 keyboard/planck/keymaps/nico/nico.c delete mode 100644 keyboard/planck/keymaps/numpad.c create mode 100644 keyboard/planck/keymaps/numpad/numpad.c delete mode 100644 keyboard/planck/keymaps/tak3over.c create mode 100644 keyboard/planck/keymaps/tak3over/tak3over.c diff --git a/keyboard/planck/keymaps/Jacob/Keyboard Layout.PNG b/keyboard/planck/keymaps/Jacob/Keyboard Layout.PNG deleted file mode 100644 index 40f0b89429..0000000000 Binary files a/keyboard/planck/keymaps/Jacob/Keyboard Layout.PNG and /dev/null differ diff --git a/keyboard/planck/keymaps/Jacob/keymap.c b/keyboard/planck/keymaps/Jacob/keymap.c deleted file mode 100644 index 5e6e8498e2..0000000000 --- a/keyboard/planck/keymaps/Jacob/keymap.c +++ /dev/null @@ -1,56 +0,0 @@ -#include "planck.h" -#include "action_layer.h" -#ifdef BACKLIGHT_ENABLE - #include "backlight.h" -#endif - -//Simple Keymap where CTRL, WINKEY, and ALT keys are placed in a more familiar location for Windows users. -//Focus of this particular keymap is to enable easy transition from more traditional keyboards to OLKB Planck. - -// Each layer gets a name for readability, which is then used in the keymap matrix below. -#define _QW 0 -#define _LW 1 -#define _RS 2 - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_QW] = { /* Qwerty */ - {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, - {KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, - {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, MT(MOD_RSFT, KC_ENT)}, - {KC_LCTL, KC_LGUI, KC_LALT, M(0), MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} - }, - [_RS] = { /* RAISE */ - {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL }, - {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, - {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS} - }, - [_LW] = { /* LOWER */ - {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL }, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LBRC, KC_RBRC, KC_TRNS}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS} - } -}; - -const uint16_t PROGMEM fn_actions[] = { - -}; - -const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) -{ - // MACRODOWN only works in this function - switch(id) { - case 0: - if (record->event.pressed) { - register_code(KC_RSFT); - #ifdef BACKLIGHT_ENABLE - backlight_step(); - #endif - } else { - unregister_code(KC_RSFT); - } - break; - } - return MACRO_NONE; -}; diff --git a/keyboard/planck/keymaps/Jacob/planck.hex b/keyboard/planck/keymaps/Jacob/planck.hex deleted file mode 100644 index 3ea701202c..0000000000 --- a/keyboard/planck/keymaps/Jacob/planck.hex +++ /dev/null @@ -1,1151 +0,0 @@ -:100000000C94A8010C94EC010C94EC010C94EC0100 -:100010000C94EC010C94EC010C94EC010C94EC01AC -:100020000C94EC010C94EC010C94410D0C94050D16 -:100030000C94C11B0C94EC010C94EC010C94EC019D -:100040000C94EC010C94EC010C94EC010C94EC017C -:100050000C94EC010C94841C0C94EC010C94EC01B9 -:100060000C94EC010C94EC010C94EC010C94EC015C -:100070000C94EC010C94EC010C94EC010C94EC014C -:100080000C94EC010C94EC010C94EC010C94EC013C -:100090000C94EC010C94EC010C94EC010C94EC012C -:1000A0000C94EC010C94EC010C94EC012B0014006A -:1000B0001A000800150017001C0018000C001200A0 -:1000C00013002A00290004001600070009000A0096 -:1000D0000B000D000E000F0033003400E1001D0086 -:1000E0001B00060019000500110010003600370043 -:1000F00038002872E000E300E200003001522C00DA -:100100002C0002525000510052004F0035021E02D6 -:100110001F022002210222022302240225022602BB -:1001200027024C0001000100010001000100010054 -:1001300001002D022E022F023002310201000100C7 -:1001400001000100010001000100010001002F0079 -:100150003000010001000100010001000100010068 -:1001600001000100010001000100010035001E0036 -:100170001F0020002100220023002400250026006B -:1001800027004C0001003A003B003C003D003E00CF -:100190003F002D002E002F003000310001004000F4 -:1001A00041004200430044004500010001000100FD -:1001B0000100010001000100010001000100010037 -:1001C0000100010001000100010001000501090614 -:1001D000A101050719E029E715002501950875011A -:1001E0008102950175088101050819012905950508 -:1001F000750191029501750391010507190029FF09 -:10020000150025FF950675088100C005010902A1AA -:10021000010901A10005091901290515002501950C -:1002200005750181029501750381010501093009F8 -:10023000311581257F9502750881060938158125BC -:100240007F950175088106050C0A38021581257F06 -:10025000950175088106C0C005010980A1018502CC -:1002600016010026B7001A01002AB7007510950183 -:100270008100C0050C0901A1018503160100269C1F -:10028000021A01002A9C02751095018100C012011A -:10029000100100000008EDFE606001000102000195 -:1002A00009025400030100A0FA090400000103013F -:1002B0000100092111010001223F00070581030807 -:1002C000000A0904010001030102000921110100D3 -:1002D00001224D000705820308000A0904020001FB -:1002E00003000000092111010001223600070583E7 -:1002F0000308000A040309042C034F007200740071 -:1003000068006F006C0069006E006500610072009B -:1003100020004B006500790062006F0061007200F0 -:10032000640073000000280354006800650020008A -:1003300050006C0061006E0063006B0020004B00F9 -:100340006500790062006F006100720064000000C7 -:1003500011241FBECFEFDAE0DEBFCDBF04B603FE2F -:1003600024C08091ED019091EE01A091EF01B09138 -:10037000F0018750904BA740B04BB9F41092ED01BB -:100380001092EE011092EF011092F00114BE84B7AA -:10039000877F84BF88E10FB6F89480936000109245 -:1003A00060000FBEE0E0F8E3099511E0A0E0B1E0E5 -:1003B000EAE7F7E402C005900D92A435B107D9F73A -:1003C00011E0A4E5B1E001C01D92AD3EB107E1F737 -:1003D0000E9441090C94BB230C940000FC0166238D -:1003E00061F48281882331F085EE0E947D110E94A4 -:1003F000BC2103C085EE0E942A1180E090E00895A0 -:1004000008950895089508950E94010208950E9494 -:10041000020208950E940302089584E0809355012A -:1004200008950E949C2123E030E0281B3109220F0F -:10043000331F2093540108950E9411020E940D025F -:10044000109256010895982F2F98882351F4809187 -:100450008000877F8093800010928D0010928C0026 -:1004600020C0833041F480918000886080938000B8 -:100470008FEF9FEF12C08091800088608093800092 -:1004800023E030E0291B3109220F331F8FEF9FEF4C -:1004900002C0969587952A95E2F790938D008093F8 -:1004A0008C000E9411020895279A2F988FEF9FEFDA -:1004B00090938700809386008AE08093800089E192 -:1004C000809381000E942A220E941C0208950E94AB -:1004D00054026E9A769A0E94000208950895E62FBB -:1004E000F0E0EE0FFF1F98E1799F90011124E20FD9 -:1004F000F31F90E6899FC0011124E80FF91FE4550E -:10050000FF4F25913491C9010895FC01EE0FFF1FA3 -:10051000E45BFF4F25913491C9010895FC01EE0F72 -:10052000FF1FE453FE4F25913491C9010895CF93E5 -:10053000DF93EC0180E4C030D807A0F590E3C03031 -:10054000D90708F005C1C83ED105E8F4C03ED10581 -:1005500008F069C0C83AD10588F4C53AD10508F059 -:1005600064C0C130D10509F4E8C0C130D10508F438 -:1005700014C2C430D10508F410C255C0CB3BD1051C -:1005800008F00BC261C080E2C030D80708F0DBC0C1 -:1005900091E0C030D90708F0D3C0C03FD10508F4BE -:1005A000FCC1C8C080E5C130D80709F4F4C090E5AB -:1005B000C230D907F0F480E4C131D80709F4D4C0BF -:1005C00090E4C231D90730F480E4C031D80708F490 -:1005D000C3C0C7C090E4C331D90709F4CBC080E4DD -:1005E000C331D80708F4C3C0C050D04509F0D5C105 -:1005F000C4C080E6C030D80730F491E5C030D907D8 -:1006000008F05EC1CEC080E7C030D80708F4C5C18D -:1006100090E8C030D90708F4B8C180E9C030D807E5 -:1006200008F0BBC1B6C19E01BAC1C53AD10519F4E3 -:1006300081E890E47DC0C63AD10519F083E890E4E2 -:1006400077C082E890E474C0C83AD10519F482EE0C -:1006500094E46EC0C93AD10519F489EE94E468C0F7 -:10066000CA3AD10519F48AEE94E462C0CB3AD105B6 -:1006700019F485EB94E45CC0CC3AD10519F486EB0F -:1006800094E456C0CD3AD10519F487EB94E450C0F8 -:10069000C03BD10519F48CEC94E44AC0CE3AD105A4 -:1006A00019F48DEC94E444C0CF3AD10519F483E8F1 -:1006B00095E43EC0C13BD10519F48AE895E438C001 -:1006C000C23BD10519F482E995E432C0C33BD105A0 -:1006D00019F484E995E42CC0C43BD10519F481E2F6 -:1006E00096E426C0C53BD10519F483E296E420C008 -:1006F000C63BD10519F484E296E41AC0C73BD10584 -:1007000019F485E296E414C0C83BD10519F486E2D9 -:1007100096E40EC0C93BD10519F487E296E408C0FF -:10072000CA3BD10519F080E094E402C08AE296E465 -:100730009C0135C19E01306532C121E030E02FC1FE -:100740009E013F712CC1CE019F700E948E0228C174 -:100750009E013070306C23C19E012F703070346D5B -:100760001EC120E031ED1BC120E030ED18C120E0BA -:1007700032ED15C120E033ED12C10E94171184EC57 -:1007800099E020E931E0F9013197F1F70197D9F7C4 -:100790000E94A91C04C18091CD0181608093CD018C -:1007A000FEC00E94051D882311F40E94101D0E94A6 -:1007B000F61C8093EB011092EC0190E5C230D90752 -:1007C00011F4816076C090E5C430D90711F48260DD -:1007D00070C090E5C630D90711F484606AC090E516 -:1007E000C830D90711F4886064C090E5CA30D907D1 -:1007F00011F480615EC090E5CC30D90711F48062BD -:1008000058C090E5CE30D90711F4806452C090E50D -:10081000C031D90711F480684CC090E5C231D907C6 -:1008200011F48C6046C080E5C330D80721F4809174 -:10083000EB018E7F3EC090E5C530D90721F4809151 -:10084000EB018D7F36C080E5C730D80721F4809159 -:10085000EB018B7F2EC090E5C930D90721F4809140 -:10086000EB01877F26C080E5CB30D80721F480914B -:10087000EB018F7E1EC090E5CD30D90721F4809129 -:10088000EB018F7D16C080E5CF30D80721F4809131 -:10089000EB018F7B0EC090E5C131D90721F4809127 -:1008A000EB018F7706C0C351D04529F48091EB014D -:1008B000837F8093EB018091EB010E94EB1C6FC062 -:1008C0004D2F55274F70507041305105F9F49E015E -:1008D000A4E0220F331FAA95E1F720703370CE01F8 -:1008E000F3E0880F991FFA95E1F780769070282B36 -:1008F000392B3C68C370D07002C0440F551FCA9595 -:10090000E2F74F715070242B352B49C0423051050E -:1009100029F43C2F2227216F306A41C04330510512 -:1009200051F49E0173E0220F331F7A95E1F7207E88 -:1009300037703C680CC044305105B9F49E0163E047 -:10094000220F331F6A95E1F7207E37703A68C37033 -:10095000D07081E090E002C0880F991FCA95E2F73D -:100960008F719070282B392B1AC04530510529F40E -:100970003C2F2227246F306A12C04630510579F48B -:10098000CF71D0703C2F222702C09E013F70306291 -:1009900006C09E013F70306A02C020E030E0C9010D -:1009A000DF91CF9108950E946F02803E9105F0F48F -:1009B000803C910588F58133910509F475C0823337 -:1009C000910548F48932910509F464C08A32910591 -:1009D00009F07BC06EC08933910509F18238910519 -:1009E000F1F08533910509F070C04FC0833E910549 -:1009F00061F1843E910540F4803E9105B9F0823E5C -:100A0000910509F062C01CC0863E910551F1873EF8 -:100A1000910509F05AC02AC00E94850208952091CC -:100A2000EB0120FD0AC021FD08C04CC08091EB0104 -:100A300080FF03C089E390E045C080EE90E042C0B3 -:100A40008091EB0182FD08C004C08091EB0182FF20 -:100A500003C082EE90E036C084FD11C083EE90E0CA -:100A600031C08091EB0183FD08C004C08091EB018F -:100A700083FF03C086EE90E025C084FF03C080E0C2 -:100A800090E020C087EE90E01DC08091EB0185FFD3 -:100A900005C007C08091EB0185FF03C085E390E0AE -:100AA00011C089E290E00EC08091EB0186FF05C085 -:100AB00007C08091EB0186FF03C081E390E002C094 -:100AC0008AE290E00E94970208950E94970208959A -:100AD0000E940A020895E82FF0E0EE0FFF1FE95A86 -:100AE000FE4F80819181089508954F925F926F9299 -:100AF0007F928F929F92AF92BF92CF92DF92EF92AE -:100B0000FF920F931F93DF93CF93CDB7DEB7289754 -:100B10000FB6F894DEBF0FBECDBFAE014F5F5F4F83 -:100B200060E070E0EE24FF24CC24DD24AA24BB2462 -:100B3000882499242A0101E010E029E0622E712C1A -:100B40006C0E7D1ED201E4E3F1E088E001900D928D -:100B50008150E1F7FA01808191819C01207F307002 -:100B60002032310559F48F709070980102C0220F25 -:100B7000331F8A95E2F7622B732B37C02033310580 -:100B800059F48F709070F80102C0EE0FFF1F8A9524 -:100B9000E2F7EE2AFF2A29C02034310559F48F707C -:100BA0009070980102C0220F331F8A95E2F7C22A83 -:100BB000D32A1BC02035310559F48F709070F8018D -:100BC00002C0EE0FFF1F8A95E2F7AE2ABF2A0DC0C2 -:100BD0002036310551F48F709070980102C0220FB9 -:100BE000331F8A95E2F7822A932A4E5F5F4F46159C -:100BF000570509F0A7CF24B1962F862F8095822321 -:100C000084B985B1982B95B927B19E2D8E2D8095ED -:100C1000822387B988B1982B98B92AB19C2D8C2D45 -:100C2000809582238AB98BB1982B9BB92DB19A2DCF -:100C30008A2D809582238DB98EB1982B9EB920B3D1 -:100C4000982D882D8095822380BB81B3982B91BBF2 -:100C500028960FB6F894DEBF0FBECDBFCF91DF91BF -:100C60001F910F91FF90EF90DF90CF90BF90AF90CA -:100C70009F908F907F906F905F904F9008954F92CC -:100C80005F926F927F928F929F92AF92BF92CF921C -:100C9000DF92EF92FF920F931F93DF93CF93CDB725 -:100CA000DEB768970FB6F894DEBF0FBECDBF85B72D -:100CB000806885BF85B7806885BF0E947505AE01D5 -:100CC0004F5F5F4F60E070E0EE24FF24CC24DD2412 -:100CD000AA24BB24882499242A0101E010E039E1E8 -:100CE000632E712C6C0E7D1ED201ECE3F1E088E1E5 -:100CF00001900D928150E1F7FA01808191819C0170 -:100D0000207F30702032310559F48F709070980137 -:100D100002C0220F331F8A95E2F7622B732B37C074 -:100D20002033310559F48F709070F80102C0EE0F36 -:100D3000FF1F8A95E2F7EE2AFF2A29C020343105E9 -:100D400059F48F709070980102C0220F331F8A955A -:100D5000E2F7C22AD32A1BC02035310559F48F701F -:100D60009070F80102C0EE0FFF1F8A95E2F7AE2ADD -:100D7000BF2A0DC02036310551F48F709070980154 -:100D800002C0220F331F8A95E2F7822A932A4E5F10 -:100D90005F4F4615570509F0A7CF24B1962F862F30 -:100DA0008095822384B985B1982B95B927B19E2D62 -:100DB0008E2D8095822387B988B1982B98B92AB156 -:100DC0009C2D8C2D809582238AB98BB1982B9BB951 -:100DD0002DB19A2D8A2D809582238DB98EB1982BB5 -:100DE0009EB920B3982D882D8095822380BB81B336 -:100DF000982B91BB80E090E0FC01E95AFE4F1182F4 -:100E00001082FC01E15AFE4F118210820296883056 -:100E1000910591F70E94670268960FB6F894DEBFBD -:100E20000FBECDBFCF91DF911F910F91FF90EF903B -:100E3000DF90CF90BF90AF909F908F907F906F90FA -:100E40005F904F9008954F925F926F927F928F9232 -:100E50009F92AF92BF92CF92DF92EF92FF920F9349 -:100E60001F93DF93CF93CDB7DEB7A0970FB6F8945B -:100E7000DEBF0FBECDBF909000016E010894C11C73 -:100E8000D11CEFE5AE2EE1E0BE2EC6015C2C892E12 -:100E900071E0E72EF12C60EA462E59E0652E712CA8 -:100EA0006C0E7D1E852D982DDC01E4E1F1E088E0DB -:100EB00001900D928150E1F7F60120813181C90145 -:100EC000807F90708032910589F484B12F703070EA -:100ED000A70102C0440F551F2A95E2F79A01842BFF -:100EE00084B985B12095282325B94FC08033910559 -:100EF00089F487B12F703070F70102C0EE0FFF1F29 -:100F00002A95E2F79F018E2B87B988B12095282377 -:100F100028B93BC08034910589F48AB12F703070B4 -:100F2000A70102C0440F551F2A95E2F79A01842BAE -:100F30008AB98BB1209528232BB927C0803591051C -:100F400089F48DB12F703070F70102C0EE0FFF1FD2 -:100F50002A95E2F79F018E2B8DB98EB1209528231B -:100F60002EB913C08036910581F480B32F70307094 -:100F7000A70102C0440F551F2A95E2F79A01842B5E -:100F800080BB81B32095282321BB842D8A95F1F75E -:100F9000830160E070E040E050E0D301ECE1F1E07B -:100FA00088E101900D928150E1F7F80120813181B3 -:100FB000C901807F90708032910511F483B113C014 -:100FC0008033910511F486B10EC08034910511F47F -:100FD00089B109C08035910511F48CB104C0803607 -:100FE0009105B9F48FB190E02F70307002C09595E3 -:100FF00087952A95E2F780FF03C080E090E007C064 -:10100000C701062E02C0880F991F0A94E2F7482BE9 -:10101000592B6F5F7F4F0E5F1F4F6C30710509F0CA -:10102000BCCFF501808191818417950721F0518310 -:10103000408345E0942E0E94750542E050E0C40EC6 -:10104000D51EA40EB51EC614D70409F02BCF90925E -:101050000001992059F1892D815080930001882346 -:1010600029F080EA9FE00197F1F720C080915F01AD -:101070009091600190935801809357018091610194 -:101080009091620190935A0180935901809163017C -:101090009091640190935C0180935B018091650164 -:1010A0009091660190935E0180935D010E9404021D -:1010B00081E0A0960FB6F894DEBF0FBECDBFCF91F2 -:1010C000DF911F910F91FF90EF90DF90CF90BF9035 -:1010D000AF909F908F907F906F905F904F9008950A -:1010E0001092E1010895089508958091680108958E -:1010F000DF93CF9300D00F92CDB7DEB7AC018091D4 -:10110000E201843029F583E08093E9002FEF95ED2B -:1011100005C0892F8A95F1F7222329F08091E800F4 -:10112000215085FFF6CF8091E80085FF11C05B83D9 -:101130004A8383E08983CE01019663E070E040E05A -:1011400050E00E94A70B8091E8008E778093E80022 -:101150000F900F900F90CF91DF910895DF93CF9371 -:1011600000D00F92CDB7DEB7AC018091E2018430A0 -:1011700029F583E08093E9002FEF95ED05C0892FD5 -:101180008A95F1F7222329F08091E800215085FF0C -:10119000F6CF8091E80085FF11C05B834A8382E02F -:1011A0008983CE01019663E070E040E050E00E9448 -:1011B000A70B8091E8008E778093E8000F900F9046 -:1011C0000F90CF91DF910895AC018091E2018430BE -:1011D00001F582E08093E9002FEF95ED05C0892F9E -:1011E0008A95F1F7222329F08091E800215085FFAC -:1011F000F6CF8091E80085FF0CC0CA0165E070E081 -:1012000040E050E00E94A70B8091E8008E77809329 -:10121000E80008950F931F93182F092F8091E20182 -:10122000843061F581E08093E9009FEF25ED05C0F2 -:10123000822F8A95F1F7992329F08091E800915047 -:1012400085FFF6CF8091E80085FF18C0812F902F91 -:1012500068E070E040E050E00E94A70B8091E80059 -:101260008E778093E800A9E6B1E0212F302FC901E5 -:10127000FC0188E001900D928150E1F71F910F91E0 -:10128000089584B7877F84BF88E10FB6F894809370 -:101290006000109260000FBE80E090E020E80FB682 -:1012A000F89420936100809361000FBE0E94F30FB9 -:1012B0000E94850C0E94E60C8091E200846080937D -:1012C000E20078940E94840F0E94A81082E091E0CE -:1012D0000E949A0F0CC00E94F61B8091E0018823A7 -:1012E00031F00E94221C882311F00E94BC0A8091D8 -:1012F000E201853081F30E94F90FF9CF8091E1017D -:10130000882349F40E94850C0E94E60C8091E2003B -:1013100084608093E20008958091E401833009F4B1 -:1013200055C0843030F4813071F0823009F0AFC0A4 -:1013300096C08A3009F483C08B3009F468C08930C4 -:1013400009F0A5C020C08091E301813A09F09FC057 -:101350008091E800877F8093E8008091E701909179 -:10136000E801892B21F489E691E068E003C080E080 -:1013700090E060E070E00E94D20A8091E8008B77F4 -:101380008093E80008958091E301813209F07FC0E5 -:101390008091E7019091E801892B09F078C0809154 -:1013A000E800877F8093E80005C08091E2018823F0 -:1013B00009F46DC08091E80082FFF7CF8091F100C1 -:1013C000809368018091E8008B771CC08091E301D5 -:1013D000813A09F05CC08091E7019091E801892B86 -:1013E00009F055C08091E800877F8093E8008091E4 -:1013F000E80080FFFCCF809101018093F100809193 -:10140000E8008E778093E8000E94320C0895809166 -:10141000E3018132E1F58091E7019091E801892BA8 -:10142000B1F58091E800877F8093E8000E94320C3C -:101430008091E501809301010E9417110895809128 -:10144000E301813221F58091E800877F8093E800F5 -:101450000E94320C8091E60180936701089580918B -:10146000E301813AA1F48091E800877F8093E8004E -:101470008091E80080FFFCCF809167018093F100AC -:101480008091E8008E778093E8000E94320C0895E6 -:1014900081E061EC42E00E94FA0B82E061EC42E004 -:1014A0000E94FA0B83E061EC42E00E94FA0B08957F -:1014B0000E94EA1B0895DA019330C1F0943030F4B1 -:1014C000913051F0923009F04FC00BC0913221F1B0 -:1014D000923209F049C032C0EEE8F2E022E130E099 -:1014E00047C0E0EAF2E024E530E042C0813051F04C -:1014F000813020F0823009F037C008C0E4EFF2E01C -:10150000849107C0E8EFF2E0849103C0E6E2F3E0E3 -:101510008491282F30E02CC0613041F0613018F008 -:10152000623011F508C0E2EBF2E002C0EBECF2E051 -:1015300029E030E01DC0E4EEF2E0FACF613051F076 -:10154000613018F0623081F40AC0ECECF1E02FE376 -:1015500030E00EC0EBE0F2E02DE430E009C0E8E559 -:10156000F2E026E330E004C0E0E0F0E020E030E02C -:10157000ED93FC93C901089580E189BD82E189BDA5 -:1015800009B400FEFDCF8091D8008F7D8093D800F4 -:101590008091E00082608093E0008091E00081FD16 -:1015A000FCCF08959C014091E9015091EA01461752 -:1015B000570718F4F90190E043C06115710511F067 -:1015C000AB01F8CF8091E8008E778093E80040E08F -:1015D00050E0F0CF8091E201882309F447C08530C4 -:1015E00009F446C08091E80083FD44C08091E80082 -:1015F00082FD36C08091E80080FF22C08091F30018 -:101600009091F200782F60E0292F30E0262B372BC5 -:1016100007C081918093F100415050402F5F3F4FB0 -:101620004115510519F02830310598F390E0283024 -:10163000310509F491E08091E8008E778093E8000D -:101640004115510539F6992329F60AC08091E20126 -:10165000882361F0853061F08091E80083FD0AC045 -:101660008091E80082FFF2CF80E0089582E0089543 -:1016700083E0089581E008959C014091E901509133 -:10168000EA014617570718F4F90190E044C06115C4 -:10169000710511F0AB01F8CF8091E8008E7780934F -:1016A000E80040E050E0F0CF8091E201882309F4A7 -:1016B00048C0853009F447C08091E80083FD45C0EB -:1016C0008091E80082FD37C08091E80080FF23C050 -:1016D0008091F3009091F200782F60E0292F30E0A4 -:1016E000262B372B08C084918093F100319641500E -:1016F00050402F5F3F4F4115510519F028303105FB -:1017000090F390E02830310509F491E08091E800F1 -:101710008E778093E8004115510531F6992321F623 -:101720000AC08091E201882361F0853061F08091E8 -:10173000E80083FD0AC08091E80082FFF2CF80E0DC -:10174000089582E0089583E0089581E00895BF92AE -:10175000CF92DF92EF92FF920F931F93CF93DF937D -:10176000182F092F7B016A010E94530CB82E882381 -:10177000B1F5812F902F9C01E901C114D10439F0FA -:10178000F60180819181E81AF90AC80FD91F00E09B -:1017900010E022C08091E80085FD16C08091E8002D -:1017A0008E778093E800C114D10449F0F60180815E -:1017B0009181800F911F9183808385E011C00E94E9 -:1017C000530C882349F00CC089918093F100089450 -:1017D000E108F1080F5F1F4FE114F104D9F68B2DDA -:1017E000DF91CF911F910F91FF90EF90DF90CF90FD -:1017F000BF900895382F282F2EC0822F8F7080938E -:10180000E900231721F4762F942F50E006C0709141 -:10181000EC009091ED005091F00091FF1BC0809181 -:10182000EB008E7F8093EB008091ED008D7F8093A5 -:10183000ED008091EB0081608093EB007093EC00F1 -:101840009093ED005093F0008091EE0087FD02C070 -:1018500080E008952F5F273080F23F703093E900D9 -:1018600081E008958091E30188239CF404C0809175 -:10187000E2018823B9F08091E80082FFF8CF8091DF -:10188000E8008B778093E80008958091E201882337 -:1018900049F08091E80080FFF8CF8091E8008E77D2 -:1018A0008093E80008954091E4005091E50024E61B -:1018B0008091EC0080FF24C08091E80080FD1EC074 -:1018C0008091E201882311F482E00895853011F4BB -:1018D00083E008958091EB0085FF02C081E00895C8 -:1018E0008091E4009091E5008417950709F3222385 -:1018F00011F484E008952150AC01DACF80E008951E -:101900008091E80082FFDCCFF9CF0E94F80C0E94A2 -:10191000000DE0EEF0E0808181608083A8EDB0E012 -:101920008C918F778C9319BCE7EDF0E080818E7FEE -:1019300080838C918F7E8C931092E1010895EF92B9 -:10194000FF920F931F930E94F80C0E94000D08ED68 -:1019500010E0F80180818F778083808180688083A8 -:1019600080818F7D808319BC1092E2011092DE018C -:101970001092E0011092DF0180EEE82EF12CF701C9 -:1019800080818B7F8083F80180818160808380E00B -:1019900060E042E00E94FA0BE1EEF0E080818E7F91 -:1019A0008083E2EEF0E080818160808380818860C6 -:1019B0008083F70180818E7F8083F8018081806140 -:1019C00080831F910F91FF90EF900895E8EDF0E074 -:1019D00080818F7E8083E7EDF0E08081816080836D -:1019E00084E082BF81E08093E1010E949F0C089512 -:1019F000E8EDF0E080818E7F80831092E200089510 -:101A00001092DA001092E10008951F920F920FB623 -:101A10000F9211241F932F933F934F935F936F93D4 -:101A20007F938F939F93AF93BF93EF93FF93109107 -:101A3000E9008091EC001092E9008091F000877F2E -:101A40008093F00078940E94130E1092E900809128 -:101A5000F00088608093F0001F701093E900FF9100 -:101A6000EF91BF91AF919F918F917F916F915F9116 -:101A70004F913F912F911F910F900FBE0F901F908C -:101A800018951F920F920FB60F9211242F933F9328 -:101A90004F935F936F937F938F939F93AF93BF9376 -:101AA000EF93FF938091E10082FF0BC08091E200F1 -:101AB00082FF07C08091E1008B7F8093E1000E944C -:101AC000830F8091DA0080FF1FC08091D80080FFD3 -:101AD0001BC08091DA008E7F8093DA008091D9005C -:101AE00080FF0DC080E189BD82E189BD09B400FE9F -:101AF000FDCF81E08093E2010E947E0905C019BC00 -:101B00001092E2010E9470088091E10080FF19C0EC -:101B10008091E20080FF15C08091E2008E7F80936B -:101B2000E2008091E20080618093E2008091D80021 -:101B300080628093D80019BC85E08093E2010E9406 -:101B400074088091E10084FF30C08091E20084FF3E -:101B50002CC080E189BD82E189BD09B400FEFDCFC2 -:101B60008091D8008F7D8093D8008091E1008F7E96 -:101B70008093E1008091E2008F7E8093E20080916B -:101B8000E20081608093E2008091DE01882311F001 -:101B900084E007C08091E30087FD02C081E001C0BE -:101BA00083E08093E2010E94580A8091E10083FF64 -:101BB00029C08091E20083FF25C08091E100877FEA -:101BC0008093E10082E08093E2011092DE01809137 -:101BD000E1008E7F8093E1008091E2008E7F809310 -:101BE000E2008091E20080618093E20080E060E0AA -:101BF00042E00E94FA0B8091F00088608093F00030 -:101C00000E947308FF91EF91BF91AF919F918F91C7 -:101C10007F916F915F914F913F912F910F900FBEE8 -:101C20000F901F9018951F93DF93CF93CDB7DEB71A -:101C3000AC970FB6F894DEBF0FBECDBFE3EEF1E078 -:101C40008091F100819321E0EB3EF207C9F70E94F9 -:101C50008C098091E80083FF3EC18091E3013091BF -:101C6000E401353009F487C0363040F43130C9F131 -:101C7000313070F0333009F02EC133C0383009F400 -:101C8000F9C0393009F409C1363009F024C197C0D0 -:101C9000803821F0823809F01EC108C09091DF0120 -:101CA0008091E001882399F0926011C08091E70152 -:101CB0008F708093E9008091EB0090E025E096958D -:101CC00087952A95E1F7982F91701092E9008091FD -:101CD000E800877F8093E8009093F1001092F10074 -:101CE000D4C0882319F0823009F0F5C090E08F71DC -:101CF0009070009721F0029709F0EDC00CC0809120 -:101D0000E501813009F0E7C01092E001333069F558 -:101D10008093E0012AC08091E501882331F520916C -:101D2000E7012F7009F4D7C02093E9008091EB0000 -:101D300080FF1BC0333021F48091EB00806213C020 -:101D40008091EB0080618093EB0081E090E002C025 -:101D5000880F991F2A95E2F78093EA001092EA0013 -:101D60008091EB0088608093EB001092E9008091F5 -:101D7000E800877F8DC0882309F0ADC01091E50190 -:101D80001F778091E3008078812B8093E30080911E -:101D9000E800877F8093E8000E94320C8091E80081 -:101DA00080FFFCCF8091E30080688093E3001123E3 -:101DB00011F482E001C083E08093E2018CC080587E -:101DC000823008F088C08091E5019091E60123E01F -:101DD0008C3D920709F034C083E08C838AE28B83C8 -:101DE0007FB7F894DE0115966EE040E050E011E216 -:101DF000E62FF0E010935700849140FF03C08295D6 -:101E00008F706F5F8F70282F30E08A3018F0C90113 -:101E1000C79602C0C901C0968D939D934F5F5F4FD7 -:101E20004431510529F77FBF8091E800877F809377 -:101E3000E800CE0103966AE270E00E94D20A14C064 -:101E40006091E701AE014F5F5F4F0E945B0ABC01EA -:101E5000009709F440C08091E800877F8093E800F4 -:101E600089819A810E943C0B8091E8008B77809356 -:101E7000E80031C0803879F58091E800877F809351 -:101E8000E8008091DE018093F1008091E8008E7778 -:101E90008093E8000E94320C1EC08823E1F49091E8 -:101EA000E5019230C0F48091E800877F8093E800DC -:101EB0009093DE010E94320C8091DE01882331F480 -:101EC0008091E30087FD02C081E001C084E080933F -:101ED000E2010E94480A8091E80083FF0AC08091D5 -:101EE000E800877F8093E8008091EB008062809318 -:101EF000EB00AC960FB6F894DEBF0FBECDBFCF910E -:101F0000DF911F91089508951F938091E201882326 -:101F100079F01091E9008091EC001092E900809135 -:101F2000E80083FF02C00E94130E1F701093E900A7 -:101F30001F91089590937601809375010895E09123 -:101F40007501F0917601309711F480E008950190C9 -:101F5000F081E02D09950895E0917501F0917601E9 -:101F6000309721F00280F381E02D09950895E091EA -:101F70007501F0917601309721F00480F581E02D14 -:101F8000099508959C01809173019091740128171F -:101F9000390779F03093740120937301E091750152 -:101FA000F0917601309729F00680F781E02DC90184 -:101FB000099508959C0180917101909172012817F3 -:101FC000390779F03093720120937101E091750126 -:101FD000F0917601309729F00084F185E02DC90158 -:101FE0000995089508950E94F20F08950E946805CA -:101FF00008952F923F925F926F927F928F929F925D -:10200000AF92BF92CF92DF92EF92FF920F931F9306 -:10201000DF93CF93CDB7DEB72A970FB6F894DEBF24 -:102020000FBECDBF0E94230728E7822E21E0922E0B -:10203000AA24BB2491E0292E312C5A2C8A2D0E94EF -:102040006B056C01F401E080F180E826F926E114CB -:10205000F104E1F18091CD0181FF02C00E9474057D -:1020600000E010E03101002E02C0660C771C0A94DB -:10207000E2F7C3018E219F21892B19F10E944C1C8C -:102080009C0109835A821B82C620D720CD2811F0DB -:1020900081E08B83C9018160782F9D838C83498186 -:1020A0005A816B818D810E941C15F501EE0FFF1F77 -:1020B000E858FE4F80819181862597259183808302 -:1020C00021C00F5F1F4F0C30110561F60894A11C51 -:1020D000B11C82E090E0880E991E94E0A916B1042C -:1020E00009F0ABCF0E944C1C2FEF2E832F83188654 -:1020F0008160782F9A8789874FEF5FEF60E08A854C -:102100000E941C150E94B41E109177010E949F0F1F -:10211000181731F00E949F0F809377010E94F60FED -:102120002A960FB6F894DEBF0FBECDBFCF91DF91D8 -:102130001F910F91FF90EF90DF90CF90BF90AF90E5 -:102140009F908F907F906F905F903F902F90089519 -:102150000E94431C0E943F060E94CD1C0E942A221E -:102160000895DF93CF9300D000D00F92CDB7DEB7A4 -:102170000F900F900F900F900F90CF91DF910895D7 -:10218000DF93CF9300D000D000D0CDB7DEB7269636 -:102190000FB6F894DEBF0FBECDBFCF91DF9108958B -:1021A0000E94DA19482F892F82958F70282F30E0EE -:1021B0002C3031054CF42A3031056CF4225030407B -:1021C00022303105E8F407C02C30310579F02F308A -:1021D0003105B1F40BC0403F39F0413F18F4403EA7 -:1021E00078F402C0443F61F481E008959F70892F24 -:1021F00090E023E0969587952A95E1F78170089500 -:1022000080E008950E94431B0E94531B0E94181BEC -:102210000E946B1B0E949D1E0E94A91E80E090E000 -:102220000E94C20F80E090E00E94DA0F08950E94A1 -:10223000331B0E9402110895882321F00E942C1B59 -:102240000E946B1B0895882321F00E94261B0E9488 -:102250006B1B0895282F882309F44EC0823859F447 -:102260000E949F0F81FF48C089E30E94E71A0E94E5 -:102270006B1B89E30CC0833869F40E949F0F80FFB9 -:102280003BC083E50E94E71A0E946B1B83E50E9416 -:10229000051B1FC0843859F40E949F0F82FF2CC079 -:1022A00087E40E94E71A0E946B1B87E4F0CF8450FA -:1022B000813A10F4822FEBCF822F805E883060F459 -:1022C000277081E090E001C0880F2A95EAF70E940C -:1022D0002C1B0E946B1B0895822F855A833028F493 -:1022E00080E090E00E94C20F0895285A233120F424 -:1022F00080E090E00E94DA0F08951F93182F882342 -:1023000009F4D0C0823859F40E949F0F81FDCAC0E1 -:1023100089E30E94E71A0E946B1B89E30CC0833893 -:1023200079F40E949F0F80FDBDC083E50E94E71AEB -:102330000E946B1B83E50E94051B0E946B1BB2C0B1 -:10234000843859F40E949F0F82FDACC087E40E943C -:10235000E71A0E946B1B87E4EECF8450813A50F459 -:10236000812F0E94D020882309F09CC0812F0E94D9 -:10237000E71AE3CF812F805E883050F4177081E038 -:1023800090E001C0880F1A95EAF70E94261BD5CF6E -:10239000812F855A8330A0F4153A19F481E890E032 -:1023A0000CC0163A19F482E890E007C0173A19F009 -:1023B00080E090E002C083E890E00E94C20F72C00B -:1023C000812F885A833108F06DC0183A19F482EED3 -:1023D00090E066C0193A19F489EE90E061C01A3AAB -:1023E00019F48AEE90E05CC01B3A19F485EB90E09A -:1023F00057C01C3A19F486EB90E052C01B3B19F40D -:1024000083EB90E04DC01C3B19F484EB90E048C096 -:102410001D3A19F487EB90E043C0103B19F48CECA3 -:1024200090E03EC01E3A19F48DEC90E039C01F3A9E -:1024300019F483E891E034C0113B19F48AE891E083 -:102440002FC0123B19F482E991E02AC0133B19F422 -:1024500084E991E025C0143B19F481E292E020C0A8 -:10246000153B19F483E292E01BC0163B19F484E299 -:1024700092E016C0173B19F485E292E011C0183BB8 -:1024800019F486E292E00CC0193B19F487E292E05D -:1024900007C01A3B19F080E090E002C08AE292E0A7 -:1024A0000E94DA0F1F9108959F92AF92BF92CF9230 -:1024B000DF92EF92FF920F931F93DF93CF93CDB7ED -:1024C000DEB72A970FB6F894DEBF0FBECDBF5C0112 -:1024D000DE011196FC0185E001900D928150E1F73B -:1024E0000B81F501F580F2944FE0F422DE0116969F -:1024F000FE01319685E001900D928150E1F73E8119 -:102500002F8189859A85892B09F484C22F3F09F090 -:1025100070C23F3F09F06DC27DC20E94431B0E9402 -:10252000E11A882379F0002369F08C2D805E8830D1 -:1025300048F082E00E949C1B0E94E11A9924939427 -:10254000982601C099248D2D82958F7090E085305A -:10255000910509F4B5C08630910554F48430910595 -:102560000CF08FC02D2D207F02970CF049C017C0B2 -:102570008C30910544F48A3091050CF072C10897B3 -:1025800009F023C2A9C08D30910509F4EDC18D3049 -:1025900091050CF4DFC10F9709F017C20FC28D2D02 -:1025A0008F70222311F4182F03C0182F1295107F5B -:1025B000002389F0112309F4B9C18C2D805E883085 -:1025C00020F4812F0E94261B03C0812F0E94361BFE -:1025D0000E946B1BABC18C2D0E942A11112309F4A0 -:1025E000F4C1F0E2CF0E27E02C1520F0812F0E94DD -:1025F0002C1B03C0812F0E943C1B0E946B1BE5C15A -:102600008D2D8F70203211F4182F03C0182F1295C2 -:10261000107FCC2021F081E0C81609F514C00023FA -:1026200049F0FF2031F1E1E0FE1619F5812F0E94FB -:10263000561BCBC1FF2021F0F1E0FF1609F4C5C104 -:102640000E94591B30C1002329F025E02F1508F402 -:10265000BCC10FC084E08F1508F4B7C124C10023AA -:1026600061F0FF2031F0F501858180FF5FC18F703F -:102670008583812F0E942311A8C1FF2009F413C173 -:1026800060C18D2D86958695837090E0009721F02E -:10269000019709F09AC10AC0002319F0C60193708E -:1026A00002C080E090E00E94C20F8FC1002319F0A9 -:1026B000C601937002C080E090E00E94DA0F85C1ED -:1026C000002321F08C2D0E94AB1D03C08C2D0E9495 -:1026D000151E0E94A91E79C18D2D837009F05EC060 -:1026E000002309F072C12C2D229526952770220F08 -:1026F000220F8C2D8F70E82EFF2400E010E0022EB8 -:1027000004C0EE0CFF1C001F111F0A94D2F7C4FC7A -:1027100005C060E070E080E090E00FC06FE070E026 -:1027200080E090E004C0660F771F881F991F2A95EC -:10273000D2F76095709580959095D694D694F3E0F5 -:10274000DF224D2D50E041305105A9F042305105B6 -:102750001CF4452B49F039C14230510589F0433012 -:10276000510509F032C113C06E297F29802B912BAE -:102770000E94B21A2AC16E297F29802B912B0BC08F -:102780006E297F29802B912B0E94A11A1EC10E94C5 -:10279000B21AC801B7010E94C31A17C190E0002302 -:1027A00011F496958795817009F40FC12C2D22950F -:1027B00026952770220F220F8C2D8F70E82EFF2474 -:1027C00000E010E0022E04C0EE0CFF1C001F111FE1 -:1027D0000A94D2F7C4FC05C060E070E080E090E0AD -:1027E0000FC06FE070E080E090E004C0660F771FDC -:1027F000881F991F2A95D2F76095709580959095BE -:10280000D694D69423E0D2224D2D50E0413051058C -:10281000A9F0423051051CF4452B49F0D6C0423096 -:10282000510589F04330510509F0CFC013C06E291E -:102830007F29802B912B0E94051AC7C06E297F2902 -:10284000802B912B0BC06E297F29802B912B0E940E -:10285000F419BBC00E94051AC801B7010E94161ADC -:10286000B4C081EFC81699F18C1540F0E0EECE1699 -:1028700008F458C0FFEEFC1558F419C023EFC21637 -:1028800081F1C21648F184EFC81609F04BC033C07D -:102890001C2D1F708D2D8F71002319F00E94631A5B -:1028A000E8CE0E94431A812F0E941C118EC0002383 -:1028B00029F0E4E0EF1508F488C004C0F5E0FF1546 -:1028C00008F483C08D2D8F710E94271A7EC08D2D34 -:1028D0008F710023E1F130C08D2D8F71002361F1E4 -:1028E00036C0002329F08D2D8F710E947F1A6DC094 -:1028F0000E948F1A6AC0002351F01D2D1F71812F75 -:102900000E94631A812F63E00E94B51B5EC081E0C4 -:102910000E949C1B21E02F1508F057C082E00E9406 -:102920009C1B53C0002359F0FF2021F08C2D0E94E6 -:102930007D114BC08D2D8F710E94631A46C0FF2000 -:1029400021F08C2D0E942A1140C08D2D8F710E9484 -:10295000431A3BC08FE0D822C5016C2D4D2D0E943B -:10296000EE010E94181931C0002379F5EFE0DE2254 -:102970004D2D50E042305105B9F0433051053CF443 -:102980004115510559F041305105F9F40AC0433061 -:10299000510569F044305105C1F40CC00E94152264 -:1029A00014C00E94F82111C00E94E3210EC00E94B1 -:1029B000BC210BC08C2D0E94A02107C0FFE0DF22AC -:1029C000C5016C2D4D2D0E946E02992019F10E94B7 -:1029D000DD1A80FD1FC0F50112820E94D71A0E94E5 -:1029E000631AC5010E9454120E94D71A0E94431A0A -:1029F00011C0C5010E94070269817A81802F0E945F -:102A0000E5196C010E9492190E949119002309F4A2 -:102A100086CD83CD2A960FB6F894DEBF0FBECDBF0C -:102A2000CF91DF911F910F91FF90EF90DF90CF90AA -:102A3000BF90AF909F900895DF93CF93CDB7DEB74F -:102A40002B970FB6F894DEBF0FBECDBF342F4F8348 -:102A5000252F588769877A878B87472F582FFE0144 -:102A6000319686E0DF011D928A95E9F76B83398301 -:102A70002A834C835D83432F522F8D819E810E9438 -:102A800059182B960FB6F894DEBF0FBECDBFCF916D -:102A9000DF9108950F931F930091870115C010E0F7 -:102AA000F801EE0FFF1FE00FF11FEE0FFF1FE857B9 -:102AB000FE4F4081518162817381848195810E94A2 -:102AC000C0100F5F1F4F077080918601081739F7FC -:102AD0001F910F9108954091800150918101609163 -:102AE00082017091830180918401909185010E94FF -:102AF000C01008950F931F93CF93DF9380918501AA -:102B000082958F7009F06DC080918201882309F44D -:102B100068C06091870100918601409183015091C6 -:102B200084011091810170918001EA01C095D095D6 -:102B300055C04115510509F44FC01F3F49F480E0CD -:102B400090E07F3F11F481E090E0882309F044C0D9 -:102B5000262F30E0F901EE0FFF1FE20FF31FDF0118 -:102B6000AA0FBB1FA857BE4F11968C91119718172B -:102B700099F58C91781781F5EE0FFF1FE657FE4F00 -:102B80008081882349F513968D919C911497841721 -:102B9000950718F0841B950B02C08C0F9D1F883C75 -:102BA0009105D0F4809185018F70806180938501BB -:102BB000F901EE0FFF1FE20FF31FEE0FFF1FE357A8 -:102BC000FE4F80818F708061808380E891E00E9459 -:102BD00054120E944A1505C06F5F6770601709F0B4 -:102BE000A8CFDF91CF911F910F910895DF92EF92BF -:102BF000FF920F931F93DF93CF93CDB7DEB76B9701 -:102C00000FB6F894DEBF0FBECDBF8C01DC0112966B -:102C1000DC9012974C9111965C9111971396ED9060 -:102C2000FC9014972091830130918401609181017F -:102C3000709180012115310509F4DBC16F3F09F066 -:102C400003C27F3F09F000C2D4C1E216F30640F090 -:102C5000C701821B930B883C910508F0EEC008C0A9 -:102C6000209530952E0D3F1D283C310508F0E5C01C -:102C700080918501807F09F095C06F3F09F0EAC11E -:102C80007F3F09F0E7C115C0741799F4DD2089F47E -:102C9000809185018F708061809385010E946B1502 -:102CA00080E891E00E94541280918501F8018583AB -:102CB000BCC1FD82EC825A834983DB82DE01169619 -:102CC000FE01319685E001900D928150E1F7688513 -:102CD000DE011B96FE01369685E001900D92815033 -:102CE000E1F72C853B858E859F85892B09F451C0A2 -:102CF0002F3F09F0B3C13F3F09F0B0C14AC0FD8288 -:102D0000EC825A834983DB82DE011B96FE013196F9 -:102D100085E001900D928150E1F7FC847B856D8503 -:102D200080918701909186011FC0282F30E0F90122 -:102D3000EE0FFF1FE20FF31FDF01AA0FBB1FA85703 -:102D4000BE4F11968C911197F81651F48C9178170B -:102D500039F4EE0FFF1FE657FE4F80816817C9F464 -:102D60002F5F3F4F822F87708917F9F68DC19F70B3 -:102D700059F0442349F459C19F7031F0D801159698 -:102D80008C91807F09F451C1405E483008F44DC1F8 -:102D900048C1DD2009F449C180918501816080939B -:102DA000850143C16F3F09F05DC17F3F09F05AC102 -:102DB00014C0741791F4DD2081F480918501F8012D -:102DC0008583C8010E945412A0E8B1E0F80186E0B2 -:102DD00001900D928150E1F720C15A834983898186 -:102DE0009A810E94D010882309F41BC1DD2009F4C8 -:102DF00018C130918501832F82958F7090E00297E2 -:102E00009CF09091810120918001FE01709686E0F6 -:102E1000DF011D928A95E9F7998B288BFC8AEB8A52 -:102E20003D8BCF010E945412A0E8B1E0F80186E08A -:102E300001900D928150E1F7EEC080918501807F75 -:102E4000A9F47E2DFD82EC825A834983DB826D2DAD -:102E50008D810E94B11000E811E0C8010E94541257 -:102E600086E0F80111928A95E9F7C0C06F3F09F03A -:102E7000FDC07F3F09F0FAC014C0741791F4DD2043 -:102E800081F480918501D80115968C93C8010E9428 -:102E90005412E0E8F1E086E0DF011D928A95E9F73F -:102EA000BEC05A83498389819A810E94D0108823A9 -:102EB00009F4B7C0DD2009F4B4C030918501832F37 -:102EC00082958F7090E002979CF090918101209103 -:102ED0008001FE01769686E0DF011D928A95E9F772 -:102EE0009F8B2E8BFA8EE98E3B8FCF010E9454125E -:102EF000A0E8B1E0F80186E001900D928150E1F781 -:102F00008AC06F3F09F0B6C07F3F09F0B3C071C0FF -:102F1000E216F30640F0C701821B930B883C910533 -:102F200008F053C008C0209530952E0D3F1D283C59 -:102F3000310508F04AC0DD2009F473C06F3F09F085 -:102F40009FC07F3F09F09CC029C0741739F590914C -:102F5000850190FD1AC0892F82958F70B1F0F8011C -:102F600095838F3031F08F5F8295807F9F70982B93 -:102F70009583C8010E945412A0E8B1E0F80186E0F0 -:102F800001900D928150E1F748C0A0E8B1E0F8014E -:102F900086E001900D928150E1F741C05A83498348 -:102FA00089819A810E94D010882349F0A0E8B1E07D -:102FB000F80186E001900D928150E1F72CC08091DC -:102FC00085018160809385012CC07E2DFD82EC827D -:102FD0005A834983DB826D2D8D810E94B110E0E818 -:102FE000F1E086E0DF011D928A95E9F70E946B15FA -:102FF0001CC0DD20B1F05A83498389819A810E94E7 -:10300000D010882371F0A0E8B1E0F80186E00190CB -:103010000D928150E1F70E947A150E946B1581E0B4 -:1030200005C0C8010E945412FACF80E06B960FB61B -:10303000F894DEBF0FBECDBFCF91DF911F910F91EE -:10304000FF90EF90DF90089580918201882309F42A -:1030500058CFFBCD651709F02CCE16CE613009F4A0 -:1030600098CE4DCE651709F0B8CEA3CE651709F0FE -:1030700018CF03CF80918201882309F0BACF48CFBF -:10308000651709F08BCF61CF5A83498389819A8173 -:103090000E94DA19482F892F82958F70282F30E0EF -:1030A000223031050CF463CE243031050CF0B9CF59 -:1030B00063CE0F931F93DF93CF93CDB7DEB72C97DB -:1030C0000FB6F894DEBF0FBECDBF4F835887698718 -:1030D0007A878B879C878E01095F1F4FC8010E94EA -:1030E000F6158823D9F028853F818A859B85892B11 -:1030F00009F46BC02F3F49F480E090E03F3F11F4AA -:1031000081E090E0882309F060C04F81588569858F -:103110007A858B859C850E94C01057C0DE01119670 -:10312000F80186E001900D928150E1F7F981EA8182 -:103130004C815D814115510509F447C0EF3F09F00D -:103140004CC0FF3F09F049C040C0F983EA835D836A -:103150004C83F901EE0FFF1FE20FF31FEE0FFF1F6D -:10316000E857FE4FDE01119686E00D9001928150E6 -:10317000E1F7609386010E944A1527C0919FC00124 -:10318000112488579E4F0E94F615882309F445C0E4 -:103190008091870190E0FC01EE0FFF1FE80FF91FFF -:1031A000EE0FFF1FE857FE4F40815181628173810E -:1031B000848195810E94C0108091870190E00196E2 -:1031C000877090708093870101C016E0909187010D -:1031D00080918601981791F620C080918601282F52 -:1031E00030E02F5F3F4FB901677070702150304061 -:1031F0008091870190E06817790709F0A6CF0E94B7 -:1032000017111092860110928701E0E8F1E086E044 -:10321000DF011D928A95E9F7D8CF2C960FB6F89466 -:10322000DEBF0FBECDBFCF91DF911F910F910895EB -:10323000CF92DF92EF92FF921F93CF93DF93EC0137 -:10324000009709F466C010E090EAC92E9FE0D92EDD -:1032500081E0E82EF12CFE0121969491943748F4F8 -:10326000943008F044C0913079F0923009F051C0A8 -:103270001BC0953709F437C0953750F1892F845812 -:10328000803708F046C037C0FE0121969491892FFF -:10329000805E883060F597708E2D01C0880F9A95FA -:1032A000EAF70E94461B0FC0FE0121969491892FD8 -:1032B000805E883058F497708E2D01C0880F9A95E3 -:1032C000EAF70E944C1B0E946B1B19C0892F15C086 -:1032D000FE01249104C0C6010197F1F72150222379 -:1032E000D1F721960CC0FE012196149108C0892FB8 -:1032F0000E947D1104C0892F8F770E942A11212FEF -:1033000004C0C6010197F1F72150222309F4A3CF8D -:10331000F8CFDF91CF911F91FF90EF90DF90CF908A -:10332000089508950895AF92BF92DF92EF92FF92B1 -:103330000F931F93CF93DF935C01E090B801F0905F -:10334000B9010091BA011091BB018091BC0190912B -:10335000BD01A091BE01B091BF01E82AF92A0A2B54 -:103360001B2BCFE1D0E0DC2ED801C7010C2E04C00E -:10337000B695A795979587950A94D2F78170907026 -:10338000892B39F08C2FB5010E94D304813091052F -:1033900031F421978FEFCF3FD80729F7DD248D2D0A -:1033A000DF91CF911F910F91FF90EF90DF90BF9031 -:1033B000AF9008950F931F938C010E949319B80149 -:1033C0000E94D3041F910F910895CB010E94DA1936 -:1033D00008956093BC017093BD018093BE019093EA -:1033E000BF010E94021108959B01AC016091BC01D4 -:1033F0007091BD018091BE019091BF01622773273A -:10340000842795270E94E91908959B01AC016091DA -:10341000BC017091BD018091BE019091BF016223FA -:103420007323842395230E94E91908959B01AC011D -:103430006091BC017091BD018091BE019091BF016E -:10344000622B732B842B952B0E94E919089521E0A0 -:1034500030E040E050E004C0220F331F441F551FEE -:103460008A95D2F78091BC019091BD01A091BE01D7 -:10347000B091BF01282739274A275B27CA01B90124 -:103480000E94E919089521E030E040E050E004C0D6 -:10349000220F331F441F551F8A95D2F72095309570 -:1034A000409550958091BC019091BD01A091BE01C5 -:1034B000B091BF01282339234A235B23CA01B901F4 -:1034C0000E94E919089521E030E040E050E004C096 -:1034D000220F331F441F551F8A95D2F78091BC01DC -:1034E0009091BD01A091BE01B091BF01282B392B55 -:1034F0004A2B5B2BCA01B9010E94E919089521E00A -:1035000030E040E050E004C0220F331F441F551F3D -:103510008A95D2F7CA01B9010E94E919089560E0BD -:1035200070E080E090E00E94E91908956093B8018E -:103530007093B9018093BA019093BB010E9402116C -:1035400008959B01AC016091B8017091B90180911F -:10355000BA019091BB0162277327842795270E94A7 -:10356000961A08959B01AC016091B8017091B90160 -:103570008091BA019091BB01622373238423952328 -:103580000E94961A08959B01AC016091B801709158 -:10359000B9018091BA019091BB01622B732B842BEE -:1035A000952B0E94961A08950E94961A089580916C -:1035B000CC0185958595859508958091CC0187707E -:1035C00008958091CC01877009F081E00895382F2B -:1035D000A0910C01B0910D01FD0120E08FEF9281CF -:1035E000931791F08F3F19F4992309F4822F2F5FDD -:1035F00031962630A1F78F3F39F0992787FD9095B6 -:10360000A80FB91F12963C930895982F20E030E040 -:10361000E0910C01F0910D01E20FF31F82818917F7 -:1036200009F412822F5F3F4F2630310589F7089544 -:1036300081E090E0E0910C01F0910D01E80FF91F9D -:103640001082019688309105A9F708959091C801DC -:10365000982B9093C801089580959091C801982364 -:103660009093C80108951092C80108959091CB01DC -:10367000982B9093CB01089580959091CB0198233E -:103680009093CB0108951092CB0108959091CA01B7 -:10369000982B9093CA01089580959091CA01982320 -:1036A0009093CA0108951092CA0108958093C901A8 -:1036B00008951092C9010895E0910C01F0910D0157 -:1036C00020E091E0818181112F5F9F5F31969830DA -:1036D000C9F7822F0895E0910C01F0910D018091BE -:1036E000C8018083E0910C01F0910D0180819091DF -:1036F000CB01892B8083E0910C01F0910D01808139 -:103700009091CA01892B80839091C901992369F016 -:10371000E0910C01F0910D018081892B80830E9442 -:103720005C1B882311F00E94591B80910C01909121 -:103730000D010E94AC0F08952091CC01482F4095B7 -:1037400042234093CC01842F877071F430E0842FA2 -:10375000992787FD90952817390731F0842F859593 -:10376000859585950E94431A0895982F990F990F72 -:10377000990F962B9093CC010E94631A0895089597 -:1037800008951F920F920FB60F9211248F939F935B -:10379000AF93BF938091CE01882399F48091CF019C -:1037A0009091D001A091D101B091D2014196A11D7B -:1037B000B11D8093CF019093D001A093D101B0931C -:1037C000D201BF91AF919F918F910F900FBE0F903B -:1037D0001F9018950E94171180E00E9423020E94FA -:1037E0002A220E949F0F0E94680508958091E2019D -:1037F000843039F11092CE0120E488E190E00FB6D8 -:10380000F894A895809360000FBE2093600080E03C -:103810000E94230280E00E94680583B7817F846054 -:1038200083BF83B7816083BF7894889583B78E7F89 -:1038300083BF88E10FB6F894809360001092600017 -:103840000FBE089580E00E9423020E94BF1B0E94C9 -:1038500023070E94C01B80E00E946B05892B81F426 -:1038600081E00E946B05892B59F482E00E946B0570 -:10387000892B31F483E00E946B0520E0892B09F04D -:1038800021E0822F089582E084BD93E095BD9AEFF8 -:1038900097BD80936E0008958FB7F8942091CF0163 -:1038A0003091D0014091D1015091D2018FBFC90117 -:1038B0000895EF92FF920F931F93BC018FB7F89476 -:1038C000E090CF01F090D0010091D1011091D20190 -:1038D0008FBFA801970140705070CB01A0E0B0E00D -:1038E000281739074A075B0720F09701261B370B7B -:1038F00005C09B01209530952E0D3F1DC9011F91DC -:103900000F91FF90EF9008951F920F920FB60F92B4 -:1039100011248F939F93AF93BF938091CF01909188 -:10392000D001A091D101B091D2010196A11DB11D8C -:103930008093CF019093D001A093D101B093D20195 -:10394000BF91AF919F918F910F900FBE0F901F90DD -:1039500018950E94850CF89480E29EE420E931E0FD -:10396000F9013197F1F70197D9F787E090EBA7E0DC -:10397000B0EB8093ED019093EE01A093EF01B09333 -:10398000F0012CE088E190E00FB6F894A8958093C0 -:1039900060000FBE20936000FFCF0E94051D8823AA -:1039A00011F40E94101D0E94001D8093CD010E9401 -:1039B000F61C8093EB010E94FB1C90E0A0E0B0E0BD -:1039C000BC01CD010E94D41A0895682F86E090E0D2 -:1039D0000E9493230895682F84E090E00E9493232F -:1039E000089586E090E00E948523089584E090E0A9 -:1039F0000E948523089583E090E00E948523089526 -:103A000082E090E00E948523089580E090E00E948B -:103A10008D2320E08D5E9E4F09F421E0822F0895D2 -:103A200080E090E06DEE7EEF0E94A52382E090E0C2 -:103A300060E00E94932383E090E060E00E94932383 -:103A400084E090E060E00E94932385E090E060E0F5 -:103A50000E94932386E090E060E00E949323089503 -:103A60008091D90180FF0BC09091100185E0989F53 -:103A7000C0011124959587959595879530C081FF54 -:103A800009C09091100185E0989FC001112495957F -:103A9000879525C082FF03C0909110010DC08091D1 -:103AA000D801882319F485E090E008956091110110 -:103AB00090911001861728F085E0989FC00111248D -:103AC0000EC0899F90011124C901880F991F880F8A -:103AD000991F820F931F70E00E945E23CB018038F4 -:103AE000910510F08FE70895009709F481E008959B -:103AF0008091D90180FF05C080911201869586953D -:103B000018C081FF04C080911201869512C082FF07 -:103B100003C0809112010DC02091D801222319F415 -:103B200081E090E0089560911301809112012617C1 -:103B300010F090E007C0289FC001112470E00E949F -:103B40005E23CB018038910510F08FE70895009730 -:103B500009F481E00895803F21F40E94301D819591 -:103B600004C0813F29F40E94301D8093D50108953F -:103B7000823F21F40E94301D819504C0833F29F4C7 -:103B80000E94301D8093D4010895893F19F40E944A -:103B9000781D05C08A3F31F40E94781D819580937D -:103BA000D60108958B3F21F40E94781D819504C0B1 -:103BB0008C3F29F40E94781D8093D7010895843F9B -:103BC00021F48091D301816017C0853F21F4809159 -:103BD000D301826011C0863F21F48091D3018460BB -:103BE0000BC0873F21F48091D301886005C0883FD6 -:103BF00031F48091D30180618093D30108958D3F8A -:103C000021F48091D901816005C08E3F31F480910B -:103C1000D90182608093D90108958F3F29F4809162 -:103C2000D90184608093D9010895803F29F480915F -:103C3000D50187FF6FC007C0813F41F48091D50156 -:103C400018160CF067C01092D50164C0823F29F4A9 -:103C50008091D40187FF5EC007C0833F41F480910B -:103C6000D40118160CF056C01092D40153C0893FED -:103C700029F48091D60118163CF04CC08A3F39F4E3 -:103C80008091D60187FF46C01092D60143C08B3F7A -:103C900029F48091D70187FF3DC006C08C3F39F4DD -:103CA0008091D7011816B4F51092D70133C0843F24 -:103CB00021F48091D3018E7F05C0853F31F480913E -:103CC000D3018D7F8093D30125C0863F21F480915D -:103CD000D3018B7FF7CF873F21F48091D301877F7A -:103CE000F1CF883F21F48091D3018F7EEBCF8D3FC0 -:103CF00021F48091D9018E7F0BC08E3F21F48091F9 -:103D0000D9018D7F05C08F3F29F48091D9018B7F28 -:103D10008093D9018091D401882371F48091D501D9 -:103D2000882351F48091D601882331F48091D70102 -:103D3000882311F41092D8010895E3EDF1E085E0B5 -:103D4000DF011D928A95E9F71092D8011092D901EE -:103D5000089583ED91E00E94B70F0E944C1C909350 -:103D6000DB018093DA0108951F938091DA0190912D -:103D7000DB010E94591CAC012091D801222321F0C3 -:103D800080910F0190E006C090910E018AE0989F0B -:103D9000C00111244817590708F485C09091D40137 -:103DA000992369F48091D501882349F48091D60143 -:103DB000882329F48091D701882309F474C02F3F08 -:103DC00019F02F5F2093D801191624F40E94301D9A -:103DD0008093D4018091D40187FF05C00E94301DDB -:103DE00081958093D4018091D501181624F40E9406 -:103DF000301D8093D5018091D50187FF05C00E94B9 -:103E0000301D81958093D5016091D401662339F1ED -:103E10001091D501112319F1772767FD7095872F30 -:103E2000972F0E946F2223E333E343E35FE30E9473 -:103E3000D3220E943C226093D401612F772767FD33 -:103E40007095872F972F0E946F2223E333E343E37C -:103E50005FE30E94D3220E943C226093D5018091AF -:103E6000D601181624F40E94781D8093D601809103 -:103E7000D60187FF05C00E94781D81958093D601E9 -:103E80008091D701181624F40E94781D8093D701E1 -:103E90008091D70187FF05C00E94781D819580938E -:103EA000D7010E94A91E1F91089580E0089580E027 -:103EB0000895833099F1843030F4813069F0823094 -:103EC00009F06FC01AC0853009F44AC08530B8F1D6 -:103ED000863009F066C055C020910E01822F90E017 -:103EE000860F911D8F3F910520F4260F20930E0120 -:103EF00008958FEF80930E01089520910F01822F76 -:103F000090E0860F911D8F3F910520F4260F20939E -:103F10000F0108958FEF80930F01089520911001F4 -:103F2000822F90E0860F911D8F3F910520F4260F80 -:103F30002093100108958FEF809310010895209130 -:103F40001101822F90E0860F911D8F3F910520F483 -:103F5000260F2093110108958FEF8093110108958A -:103F600020911201822F90E0860F911D8F3F9105C5 -:103F700020F4260F2093120108958FEF80931201F1 -:103F8000089520911301822F90E0860F911D8F3F9D -:103F9000910520F4260F2093130108958FEF80934D -:103FA00013010895833031F1843030F4813061F0B1 -:103FB000823009F04AC013C0853091F1853028F174 -:103FC000863009F042C037C080910E01681720F496 -:103FD000861B80930E01089510920E010895809122 -:103FE0000F01681720F4861B80930F01089510922B -:103FF0000F01089580911001681720F4861B8093AB -:104000001001089510921001089580911101681710 -:1040100020F4861B809311010895109211010895D8 -:1040200080911201681720F4861B80931201089575 -:1040300010921201089580911301681720F4861BD5 -:1040400080931301089510921301089521E030E048 -:1040500040E050E004C0220F331F441F551F8A95D3 -:10406000D2F7CA01B9010E94D41A0E94171108950B -:104070008732F8F48E3108F08AC08E3009F463C0BC -:104080008F3048F4873009F445C08B3009F486C07E -:10409000863039F528C0863109F480C0873118F49C -:1040A0008031F9F45CC0893109F478C08B31C9F4EE -:1040B00040C0883309F472C0893348F4893209F466 -:1040C00068C0853309F465C0873259F462C083340F -:1040D00009F45FC0843418F48A3318F056C0883469 -:1040E00059F080E008958091CD01807F8093CD01CB -:1040F00081E08093DC0108950E94171180E197E22E -:1041000020E931E0F9013197F1F70197D9F70E94E1 -:10411000A91C42C09091CD01892F809581709E7F0E -:10412000982B882311F09E6001C0917F9093CD0160 -:1041300033C08091CD01982F969590959170292F3D -:10414000220F8D7F19C08091CD01982F969596955D -:1041500090959170292F220F220F8B7F0DC0809197 -:10416000CD01982F96959695969590959170292FBB -:10417000220F220F220F877F822B8093CD0199235C -:1041800069F081608093CD0107C0895303C08D51D0 -:1041900001C080E00E94262081E0089581E008951A -:1041A0001F93182F8091DC01813079F0813020F04D -:1041B000823009F0BCC037C0E0910C01F0910D01D4 -:1041C0008081823209F0B5C007C0E0910C01F09106 -:1041D0000D018081823249F4812F0E94551F88236E -:1041E000F9F4812F0E943820A5C0812F0E94571F0B -:1041F0008823B1F4143161F0153128F41B3081F0BB -:10420000103141F40AC0193219F0183319F408C0FA -:104210001092DC0180E090E08DC082E08093DC01B0 -:1042200081E090E087C0193201F11A3270F4143144 -:10423000E1F0153120F4173009F064C065C0812F1A -:104240008E51863008F05EC01BC01E3409F455C084 -:104250001F3420F41B3409F055C049C0113509F44E -:1042600042C0123509F04EC03AC08091DD0188236A -:1042700019F01092DD0146C081E08093DC015AC044 -:104280001232F9F0133260F41F3199F0103218F441 -:104290001E3109F510C0103281F01132E1F40FC067 -:1042A000143299F0143278F0153289F0163299F4FC -:1042B00010C082E011C081E00FC083E00DC084E037 -:1042C0000BC085E009C086E007C087E005C088E034 -:1042D00003C089E001C080E08093DD0113C08091BC -:1042E000DD0161E007C08091DD0161E009C08091DE -:1042F000DD016AE00E94591F05C08091DD016AE07E -:104300000E94D21F81E016C08EE180930E0182E3ED -:1043100080930F018AE08093100184E18093110162 -:1043200088E08093120188E280931301EBCF109212 -:10433000DC0180E01F9108958091EC01869508953D -:104340009091EC01292F26952827220F9170922B0E -:104350009093EC0120E09E7F09F021E08091EC0138 -:104360008E7F822B8093EC010E94E51C8091EC01F2 -:1043700086950E94230208958091EC01282F2695AE -:104380002F5F2F77922F990F8170892B8093EC01EB -:1043900030E0243031051CF081708093EC0190E016 -:1043A0008091EC018E7F09F091E08091EC018E7F8D -:1043B000892B8093EC010E94E51C8091EC0186958D -:1043C0000E94230208958091EC01982F909591709E -:1043D0008E7F892B8093EC010E94E51C8091EC017B -:1043E00080FD02C080E001C086950E9423020895EE -:1043F0008091EC01982F969591F09158990F8170CA -:10440000892B8093EC0190E08E7F09F091E0809100 -:10441000EC018E7F892B8093EC010E94E51C80913A -:10442000EC0186950E94230208952091EC012695C7 -:10443000822F90E0039744F4822F8F5F880F816072 -:104440008093EC010E94E51C8091EC0186950E940E -:10445000230208950E94051D882311F40E94101D57 -:104460000E94F11C8093EC0180FD02C080E001C03D -:1044700086950E942302089504D06894B1118DC0DE -:10448000089570D088F09F5790F0B92F9927B751B1 -:10449000A0F0D1F0660F771F881F991F1AF0BA9508 -:1044A000C9F712C0B13081F077D0B1E0089574C07F -:1044B000672F782F8827B85F39F0B93FCCF38695FE -:1044C00077956795B395D9F73EF49095809570955B -:1044D00061957F4F8F4F9F4F0895E89409C097FBD8 -:1044E0003EF490958095709561957F4F8F4F9F4FCB -:1044F0009923A9F0F92F96E9BB279395F69587950F -:1045000077956795B795F111F8CFFAF4BB0F11F4D1 -:1045100060FF1BC06F5F7F4F8F4F9F4F16C0882378 -:1045200011F096E911C0772321F09EE8872F762FAE -:1045300005C0662371F096E8862F70E060E02AF0EF -:104540009A95660F771F881FDAF7880F96958795DB -:1045500097F9089557FD9058440F551F59F05F3F44 -:1045600071F04795880F97FB991F61F09F3F79F095 -:1045700087950895121613061406551FF2CF469517 -:10458000F1DF08C0161617061806991FF1CF869599 -:104590007105610508940895E894BB27662777277D -:1045A000CB0197F908950BD078C069D028F06ED070 -:1045B00018F0952309F05AC05FC01124EECFCADF6E -:1045C000A0F3959FD1F3950F50E0551F629FF00126 -:1045D000729FBB27F00DB11D639FAA27F00DB11D7F -:1045E000AA1F649F6627B00DA11D661F829F222708 -:1045F000B00DA11D621F739FB00DA11D621F839F8F -:10460000A00D611D221F749F3327A00D611D231F64 -:10461000849F600D211D822F762F6A2F11249F57B2 -:1046200050408AF0E1F088234AF0EE0FFF1FBB1FD5 -:10463000661F771F881F91505040A9F79E3F510574 -:1046400070F014C0AACF5F3FECF3983EDCF3869580 -:1046500077956795B795F795E7959F5FC1F7FE2B1F -:10466000880F911D9695879597F9089597F99F67FB -:1046700080E870E060E008959FEF80EC08950024EA -:104680000A941616170618060906089500240A94B7 -:1046900012161306140605060895092E0394000C3D -:1046A00011F4882352F0BB0F40F4BF2B11F460FFCC -:1046B00004C06F5F7F4F8F4F9F4F089597FB092E68 -:1046C00007260AD077FD04D00CD006D000201AF4BB -:1046D000709561957F4F0895F6F7909581959F4F5E -:1046E0000895AA1BBB1B51E107C0AA1FBB1FA61739 -:1046F000B70710F0A61BB70B881F991F5A95A9F78B -:1047000080959095BC01CD010895F999FECF92BD99 -:1047100081BDF89A992780B50895A8E1B0E042E0FC -:1047200050E00C94AD23262FF999FECF92BD81BDA8 -:10473000F89A019700B4021639F01FBA20BD0FB6DF -:10474000F894FA9AF99A0FBE08950196272F0E94BD -:1047500094230C949323DC01CB01FC01F999FECF47 -:1047600006C0F2BDE1BDF89A319600B40D924150F9 -:0A4770005040B8F70895F894FFCF09 -:10477A00050175080A09E408AE087808C0011E3266 -:10478A000A14082840004500250026006100600040 -:10479A002000370064006500660067004400460098 -:1047AA002400470040004500250026006100600003 -:1047BA002000370064006500660067004400460078 -:0447CA002400470080 -:00000001FF diff --git a/keyboard/planck/keymaps/Jacob/readme.md b/keyboard/planck/keymaps/Jacob/readme.md deleted file mode 100644 index 2a4be4ebce..0000000000 --- a/keyboard/planck/keymaps/Jacob/readme.md +++ /dev/null @@ -1 +0,0 @@ -Focus of this particular keymap is to enable easy transition from more traditional keyboards to OLKB Planck. \ No newline at end of file diff --git a/keyboard/planck/keymaps/alexey.c b/keyboard/planck/keymaps/alexey.c deleted file mode 100644 index 89af4112c6..0000000000 --- a/keyboard/planck/keymaps/alexey.c +++ /dev/null @@ -1,51 +0,0 @@ -#include "keymap_common.h" -#include "planck.h" -#include "backlight.h" - -#define _QW 0 -#define _LW 1 -#define _RS 2 - -// This layout tries to imitate the Atreus keyboard - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -[_QW] = { /* Qwerty */ - {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, - {KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, MO(_LW)}, - {KC_TRNS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_TRNS}, - {M(0), KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, KC_SPC, KC_SPC, MO(_RS), KC_MINS, KC_QUOT, KC_ENT, KC_TRNS} -}, -[_RS] = { /* RAISE */ - {KC_TRNS, KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_PIPE, KC_PGUP, KC_7, KC_8, KC_9, KC_ASTR, KC_TRNS}, - {KC_TRNS, KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_GRV, KC_PGDN, KC_4, KC_5, KC_6, KC_PLUS, KC_TRNS}, - {KC_TRNS, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, KC_TRNS}, - {KC_TRNS, KC_TRNS, KC_INS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_0, KC_EQL, KC_TRNS} -}, -[_LW] = { /* LOWER */ - {KC_TRNS, KC_INS, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS}, - {KC_TRNS, KC_DELETE, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_TRNS, KC_F4, KC_F5, KC_F6, KC_F11, KC_TRNS}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F12, KC_TRNS}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_MNXT, KC_MPLY, KC_TRNS} -} -}; - -const uint16_t PROGMEM fn_actions[] = { - -}; - -const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) -{ - // MACRODOWN only works in this function - switch(id) { - case 0: - if (record->event.pressed) { - register_code(KC_RSFT); - backlight_step(); - } else { - unregister_code(KC_RSFT); - } - break; - } - return MACRO_NONE; -}; - diff --git a/keyboard/planck/keymaps/alexey/alexey.c b/keyboard/planck/keymaps/alexey/alexey.c new file mode 100644 index 0000000000..89af4112c6 --- /dev/null +++ b/keyboard/planck/keymaps/alexey/alexey.c @@ -0,0 +1,51 @@ +#include "keymap_common.h" +#include "planck.h" +#include "backlight.h" + +#define _QW 0 +#define _LW 1 +#define _RS 2 + +// This layout tries to imitate the Atreus keyboard + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[_QW] = { /* Qwerty */ + {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, + {KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, MO(_LW)}, + {KC_TRNS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_TRNS}, + {M(0), KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, KC_SPC, KC_SPC, MO(_RS), KC_MINS, KC_QUOT, KC_ENT, KC_TRNS} +}, +[_RS] = { /* RAISE */ + {KC_TRNS, KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_PIPE, KC_PGUP, KC_7, KC_8, KC_9, KC_ASTR, KC_TRNS}, + {KC_TRNS, KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_GRV, KC_PGDN, KC_4, KC_5, KC_6, KC_PLUS, KC_TRNS}, + {KC_TRNS, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, KC_TRNS}, + {KC_TRNS, KC_TRNS, KC_INS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_0, KC_EQL, KC_TRNS} +}, +[_LW] = { /* LOWER */ + {KC_TRNS, KC_INS, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS}, + {KC_TRNS, KC_DELETE, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_TRNS, KC_F4, KC_F5, KC_F6, KC_F11, KC_TRNS}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F12, KC_TRNS}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_MNXT, KC_MPLY, KC_TRNS} +} +}; + +const uint16_t PROGMEM fn_actions[] = { + +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + switch(id) { + case 0: + if (record->event.pressed) { + register_code(KC_RSFT); + backlight_step(); + } else { + unregister_code(KC_RSFT); + } + break; + } + return MACRO_NONE; +}; + diff --git a/keyboard/planck/keymaps/angerthosenear.c b/keyboard/planck/keymaps/angerthosenear.c deleted file mode 100644 index cdf60632e4..0000000000 --- a/keyboard/planck/keymaps/angerthosenear.c +++ /dev/null @@ -1,50 +0,0 @@ -#include "keymap_common.h" - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -[0] = { /* Qwerty */ - {KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, - {KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, 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_QUOT}, - {KC_LCTL, KC_LGUI, KC_LALT, BL_STEP, FUNC(2), KC_SPC, KC_SPC, FUNC(1), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} - // Space is repeated to accommadate for both spacebar wiring positions -}, -[1] = { /* WASD + NumPad */ - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_P7, KC_P8, KC_P9, KC_PSLS, KC_PMNS, KC_TRNS}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_P4, KC_P5, KC_P6, KC_PAST, KC_PPLS, KC_TRNS}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_P1, KC_P2, KC_P3, KC_PDOT, KC_PENT, KC_TRNS}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, FUNC(2), KC_SPC, KC_P0, FUNC(1), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS} -}, -[2] = { /* RAISE */ - {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS}, - {KC_TRNS, FUNC(3), FUNC(4), LSFT(RSFT(KC_PAUSE)), KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, - {KC_TRNS, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_TRNS}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, FUNC(1), KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} -}, -[3] = { /* LOWER */ - {S(KC_GRV), S(KC_1), S(KC_2), S(KC_3), S(KC_4), S(KC_5), S(KC_6), S(KC_7), S(KC_8), S(KC_9), S(KC_0), KC_DEL}, - {KC_TRNS, FUNC(3), FUNC(4), LSFT(RSFT(KC_PAUSE)), KC_TRNS, KC_TRNS, KC_TRNS, S(KC_MINS), S(KC_EQL), S(KC_LBRC), S(KC_RBRC), S(KC_BSLS)}, - {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, FUNC(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_PGUP, KC_END} -} -}; - - -const uint16_t PROGMEM fn_actions[] = { - [1] = ACTION_LAYER_MOMENTARY(2), // to RAISE - [2] = ACTION_LAYER_MOMENTARY(3), // to LOWER - - [3] = ACTION_DEFAULT_LAYER_SET(0), - [4] = ACTION_DEFAULT_LAYER_SET(1), - -}; - -const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) -{ - // MACRODOWN only works in this function - switch(id) { - case 0: - return MACRODOWN(T(CM_T), END); - break; - } - return MACRO_NONE; -}; diff --git a/keyboard/planck/keymaps/angerthosenear/angerthosenear.c b/keyboard/planck/keymaps/angerthosenear/angerthosenear.c new file mode 100644 index 0000000000..cdf60632e4 --- /dev/null +++ b/keyboard/planck/keymaps/angerthosenear/angerthosenear.c @@ -0,0 +1,50 @@ +#include "keymap_common.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = { /* Qwerty */ + {KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, + {KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, 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_QUOT}, + {KC_LCTL, KC_LGUI, KC_LALT, BL_STEP, FUNC(2), KC_SPC, KC_SPC, FUNC(1), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} + // Space is repeated to accommadate for both spacebar wiring positions +}, +[1] = { /* WASD + NumPad */ + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_P7, KC_P8, KC_P9, KC_PSLS, KC_PMNS, KC_TRNS}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_P4, KC_P5, KC_P6, KC_PAST, KC_PPLS, KC_TRNS}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_P1, KC_P2, KC_P3, KC_PDOT, KC_PENT, KC_TRNS}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, FUNC(2), KC_SPC, KC_P0, FUNC(1), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS} +}, +[2] = { /* RAISE */ + {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS}, + {KC_TRNS, FUNC(3), FUNC(4), LSFT(RSFT(KC_PAUSE)), KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, + {KC_TRNS, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_TRNS}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, FUNC(1), KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} +}, +[3] = { /* LOWER */ + {S(KC_GRV), S(KC_1), S(KC_2), S(KC_3), S(KC_4), S(KC_5), S(KC_6), S(KC_7), S(KC_8), S(KC_9), S(KC_0), KC_DEL}, + {KC_TRNS, FUNC(3), FUNC(4), LSFT(RSFT(KC_PAUSE)), KC_TRNS, KC_TRNS, KC_TRNS, S(KC_MINS), S(KC_EQL), S(KC_LBRC), S(KC_RBRC), S(KC_BSLS)}, + {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, FUNC(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_PGUP, KC_END} +} +}; + + +const uint16_t PROGMEM fn_actions[] = { + [1] = ACTION_LAYER_MOMENTARY(2), // to RAISE + [2] = ACTION_LAYER_MOMENTARY(3), // to LOWER + + [3] = ACTION_DEFAULT_LAYER_SET(0), + [4] = ACTION_DEFAULT_LAYER_SET(1), + +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + switch(id) { + case 0: + return MACRODOWN(T(CM_T), END); + break; + } + return MACRO_NONE; +}; diff --git a/keyboard/planck/keymaps/austin.c b/keyboard/planck/keymaps/austin.c deleted file mode 100644 index 49fc98a587..0000000000 --- a/keyboard/planck/keymaps/austin.c +++ /dev/null @@ -1,50 +0,0 @@ -#include "keymap_common.h" - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -[0] = { /* Qwerty */ - {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, - {KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, - {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT}, - {BL_STEP, KC_LGUI, KC_LALT, KC_LCTL, FUNC(2), KC_SPC, KC_SPC, FUNC(1), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} - // Space is repeated to accommadate for both spacebar wiring positions -}, -[1] = { /* Colemak */ - {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC}, - {KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT}, - {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT}, - {KC_FN3, KC_LGUI, KC_LALT, KC_LCTL, FUNC(2), KC_SPC, KC_SPC, FUNC(1), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} -}, -[2] = { /* RAISE */ - {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, - {KC_TRNS, FUNC(3), FUNC(4), LSFT(RSFT(KC_PAUSE)), KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, - {KC_TRNS, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_TRNS}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, FUNC(1), KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} -}, -[3] = { /* LOWER */ - {S(KC_GRV), S(KC_1), S(KC_2), S(KC_3), S(KC_4), S(KC_5), S(KC_6), S(KC_7), S(KC_8), S(KC_9), S(KC_0), KC_BSPC}, - {KC_TRNS, FUNC(3), FUNC(4), LSFT(RSFT(KC_PAUSE)), KC_TRNS, KC_TRNS, KC_TRNS, S(KC_MINS), S(KC_EQL), S(KC_LBRC), S(KC_RBRC), S(KC_BSLS)}, - {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, FUNC(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} -} -}; - - -const uint16_t PROGMEM fn_actions[] = { - [1] = ACTION_LAYER_MOMENTARY(2), // to RAISE - [2] = ACTION_LAYER_MOMENTARY(3), // to LOWER - - [3] = ACTION_DEFAULT_LAYER_SET(0), - [4] = ACTION_DEFAULT_LAYER_SET(1), - -}; - -const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) -{ - // MACRODOWN only works in this function - switch(id) { - case 0: - return MACRODOWN(T(CM_T), END); - break; - } - return MACRO_NONE; -}; diff --git a/keyboard/planck/keymaps/austin/austin.c b/keyboard/planck/keymaps/austin/austin.c new file mode 100644 index 0000000000..49fc98a587 --- /dev/null +++ b/keyboard/planck/keymaps/austin/austin.c @@ -0,0 +1,50 @@ +#include "keymap_common.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = { /* Qwerty */ + {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, + {KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, + {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT}, + {BL_STEP, KC_LGUI, KC_LALT, KC_LCTL, FUNC(2), KC_SPC, KC_SPC, FUNC(1), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} + // Space is repeated to accommadate for both spacebar wiring positions +}, +[1] = { /* Colemak */ + {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC}, + {KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT}, + {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT}, + {KC_FN3, KC_LGUI, KC_LALT, KC_LCTL, FUNC(2), KC_SPC, KC_SPC, FUNC(1), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} +}, +[2] = { /* RAISE */ + {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, + {KC_TRNS, FUNC(3), FUNC(4), LSFT(RSFT(KC_PAUSE)), KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, + {KC_TRNS, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_TRNS}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, FUNC(1), KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} +}, +[3] = { /* LOWER */ + {S(KC_GRV), S(KC_1), S(KC_2), S(KC_3), S(KC_4), S(KC_5), S(KC_6), S(KC_7), S(KC_8), S(KC_9), S(KC_0), KC_BSPC}, + {KC_TRNS, FUNC(3), FUNC(4), LSFT(RSFT(KC_PAUSE)), KC_TRNS, KC_TRNS, KC_TRNS, S(KC_MINS), S(KC_EQL), S(KC_LBRC), S(KC_RBRC), S(KC_BSLS)}, + {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, FUNC(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} +} +}; + + +const uint16_t PROGMEM fn_actions[] = { + [1] = ACTION_LAYER_MOMENTARY(2), // to RAISE + [2] = ACTION_LAYER_MOMENTARY(3), // to LOWER + + [3] = ACTION_DEFAULT_LAYER_SET(0), + [4] = ACTION_DEFAULT_LAYER_SET(1), + +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + switch(id) { + case 0: + return MACRODOWN(T(CM_T), END); + break; + } + return MACRO_NONE; +}; diff --git a/keyboard/planck/keymaps/bone2planck.c b/keyboard/planck/keymaps/bone2planck.c deleted file mode 100644 index a99e7719f9..0000000000 --- a/keyboard/planck/keymaps/bone2planck.c +++ /dev/null @@ -1,112 +0,0 @@ - -#include "planck.h" -#ifdef BACKLIGHT_ENABLE -#include "backlight.h" -#endif -#include "..\..\quantum\keymap_extras\keymap_german.h" - -/* This Layout tries to emulate the Bone2 Variant of Neo2, and is intended to be used with a German QWERTZ Softwarelayout. - It has Umlauts and "ß" as it is optimized for a mix of German & English. - My favourite features are the placement of the special characters often used for programming right on the home row - and the number & navigation block combo, so you never have to move your hands from their home position. - - Bone2 wiki page: http://wiki.neo-layout.org/wiki/Bone -*/ - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - /* Bone2 - * ,-----------------------------------------------------------------------------------. - * | Q | J | D | U | A | X | P | H | L | M | W | ẞ | - * |------+------+------+------+------+-------------+------+------+------+------+------| - * | M1 | C | T | I | E | O | B | N | R | S | G | M1 | - * |------+------+------+------+------+------|------+------+------+------+------+------| - * | Shift| F | V | Ü | Ä | Ö | Y | Z | , | . | K |Shift | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | Ctrl | GUI | Alt | M3 | M2 | Space | M2 | M3 | Esc | Tab |Enter | - * `-----------------------------------------------------------------------------------' - */ - [0] = { - { DE_Q, DE_J, DE_D, DE_U, DE_A, DE_X, DE_P, DE_H, DE_L, DE_M, DE_W, DE_SS }, - { MO(1), DE_C, DE_T, DE_I, DE_E, DE_O, DE_B, DE_N, DE_R, DE_S, DE_G, MO(1) }, - { DE_S, DE_F, DE_V, DE_UE, DE_AE, DE_OE, DE_Y, DE_Z, DE_COMM, DE_DOT, DE_K, DE_S }, - { KC_LCTL, KC_LGUI, KC_LALT, MO(3), MO(2), KC_SPC, KC_SPC, MO(2), MO(3), KC_ESC, KC_TAB, KC_ENT } - }, - - /* M1 Special Characters - * ,-----------------------------------------------------------------------------------. - * | ° | @ | _ | [ | ] | ^ | ! | < | > | = | & | | - * |------+------+------+------+------+-------------+------+------+------+------+------| - * | M1 | \ | / | { | } | * | ? | ( | ) | - | : | M1 | - * |------+------+------+------+------+------|------+------+------+------+------+------| - * | | # | $ | | | ~ | € | + | % | " | ' | ; | | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | Ctrl | GUI | Alt | M3 | M2 | Space | M2 | M3 | Esc | Tab |Enter | - * `-----------------------------------------------------------------------------------' - */ - [1] = { - { DE_RING, DE_AT, DE_UNDS, DE_LBRC, DE_RBRC, DE_CIRC, DE_EXLM, DE_LESS, DE_MORE, DE_EQL, DE_AMPR, KC_NO }, - { KC_TRNS, DE_BSLS, DE_SLSH, DE_LCBR, DE_RCBR, DE_ASTR, DE_QST, DE_LPRN, DE_RPRN, DE_MINS, DE_COLN, KC_TRNS }, - { KC_NO , DE_HASH, DE_DLR, DE_PIPE, DE_TILD, DE_EURO, DE_PLUS, DE_PERC, DE_DQOT, DE_QUOT, DE_SCLN, KC_NO }, - { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS } - }, - - /* Navigation & Number Blocks - * ,-----------------------------------------------------------------------------------. - * | | PgUp | Bksp | Up | DEL | PgDn | | 7 | 8 | 9 | | | - * |------+------+------+------+------+-------------+------+------+------+------+------| - * | | Home | Lft | Down | Right| End | . | 4 | 5 | 6 | , | | - * |------+------+------+------+------+------|------+------+------+------+------+------| - * | Shift| | Tab | Ins | Enter| | 0 | 1 | 2 | 3 | ; |Shift | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | Ctrl | GUI | Alt | M3 | M2 | Space | M2 | M3 | Esc | Tab |Enter | - * `-----------------------------------------------------------------------------------' - */ - [2] = { - { KC_NO, KC_PGUP, KC_BSPC, KC_UP, KC_DEL, KC_PGDN, KC_NO, DE_7, DE_8, DE_9, KC_NO, KC_NO }, - { KC_NO, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, DE_DOT, DE_4, DE_5, DE_6, DE_COMM, KC_NO }, - { DE_S, KC_NO, KC_TAB, KC_INS, KC_ENT, KC_NO, KC_0, DE_1, DE_2, DE_3, DE_SCLN, DE_S }, - { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS } - }, - - /* Function & Media Keys - * ,-----------------------------------------------------------------------------------. - * | | | Print|Scroll|Pause | | | F7 | F8 | F9 | F12 | | - * |------+------+------+------+------+-------------+------+------+------+------+------| - * | | | Mute | Vol- | Vol+ | | ³ | F4 | F5 | F6 | F11 | | - * |------+------+------+------+------+------|------+------+------+------+------+------| - * | Shift| | Prev | Play | Next | | ² | F1 | F2 | F3 | F10 |Shift | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | Ctrl | GUI | Alt | M3 | | Space | | M3 | Esc | Tab |Enter | - * `-----------------------------------------------------------------------------------' - */ - [3] = { - { KC_NO, KC_NO, KC_PSCR, KC_SLCK, KC_PAUS, KC_NO, KC_NO, KC_F7, KC_F8, KC_F9, KC_F12, KC_NO }, - { KC_NO, KC_NO, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, DE_SQ3, KC_F4, KC_F5, KC_F6, KC_F11, KC_NO }, - { KC_TRNS, KC_NO, KC_MPRV, KC_MPLY, KC_MNXT, KC_NO, DE_SQ2, KC_F1, KC_F2, KC_F3, KC_F10, KC_TRNS}, - { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_TRNS, KC_TRNS, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS} - } -}; - -const uint16_t PROGMEM fn_actions[] = { - -}; - -const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) -{ - // MACRODOWN only works in this function - switch (id) { - case 0: - if (record->event.pressed) { - register_code(KC_RSFT); -#ifdef BACKLIGHT_ENABLE - backlight_step(); -#endif - } - else { - unregister_code(KC_RSFT); - } - break; - } - return MACRO_NONE; -}; diff --git a/keyboard/planck/keymaps/bone2planck/bone2planck.c b/keyboard/planck/keymaps/bone2planck/bone2planck.c new file mode 100644 index 0000000000..a99e7719f9 --- /dev/null +++ b/keyboard/planck/keymaps/bone2planck/bone2planck.c @@ -0,0 +1,112 @@ + +#include "planck.h" +#ifdef BACKLIGHT_ENABLE +#include "backlight.h" +#endif +#include "..\..\quantum\keymap_extras\keymap_german.h" + +/* This Layout tries to emulate the Bone2 Variant of Neo2, and is intended to be used with a German QWERTZ Softwarelayout. + It has Umlauts and "ß" as it is optimized for a mix of German & English. + My favourite features are the placement of the special characters often used for programming right on the home row + and the number & navigation block combo, so you never have to move your hands from their home position. + + Bone2 wiki page: http://wiki.neo-layout.org/wiki/Bone +*/ + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + /* Bone2 + * ,-----------------------------------------------------------------------------------. + * | Q | J | D | U | A | X | P | H | L | M | W | ẞ | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | M1 | C | T | I | E | O | B | N | R | S | G | M1 | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| F | V | Ü | Ä | Ö | Y | Z | , | . | K |Shift | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Ctrl | GUI | Alt | M3 | M2 | Space | M2 | M3 | Esc | Tab |Enter | + * `-----------------------------------------------------------------------------------' + */ + [0] = { + { DE_Q, DE_J, DE_D, DE_U, DE_A, DE_X, DE_P, DE_H, DE_L, DE_M, DE_W, DE_SS }, + { MO(1), DE_C, DE_T, DE_I, DE_E, DE_O, DE_B, DE_N, DE_R, DE_S, DE_G, MO(1) }, + { DE_S, DE_F, DE_V, DE_UE, DE_AE, DE_OE, DE_Y, DE_Z, DE_COMM, DE_DOT, DE_K, DE_S }, + { KC_LCTL, KC_LGUI, KC_LALT, MO(3), MO(2), KC_SPC, KC_SPC, MO(2), MO(3), KC_ESC, KC_TAB, KC_ENT } + }, + + /* M1 Special Characters + * ,-----------------------------------------------------------------------------------. + * | ° | @ | _ | [ | ] | ^ | ! | < | > | = | & | | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | M1 | \ | / | { | } | * | ? | ( | ) | - | : | M1 | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | # | $ | | | ~ | € | + | % | " | ' | ; | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Ctrl | GUI | Alt | M3 | M2 | Space | M2 | M3 | Esc | Tab |Enter | + * `-----------------------------------------------------------------------------------' + */ + [1] = { + { DE_RING, DE_AT, DE_UNDS, DE_LBRC, DE_RBRC, DE_CIRC, DE_EXLM, DE_LESS, DE_MORE, DE_EQL, DE_AMPR, KC_NO }, + { KC_TRNS, DE_BSLS, DE_SLSH, DE_LCBR, DE_RCBR, DE_ASTR, DE_QST, DE_LPRN, DE_RPRN, DE_MINS, DE_COLN, KC_TRNS }, + { KC_NO , DE_HASH, DE_DLR, DE_PIPE, DE_TILD, DE_EURO, DE_PLUS, DE_PERC, DE_DQOT, DE_QUOT, DE_SCLN, KC_NO }, + { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS } + }, + + /* Navigation & Number Blocks + * ,-----------------------------------------------------------------------------------. + * | | PgUp | Bksp | Up | DEL | PgDn | | 7 | 8 | 9 | | | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | Home | Lft | Down | Right| End | . | 4 | 5 | 6 | , | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| | Tab | Ins | Enter| | 0 | 1 | 2 | 3 | ; |Shift | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Ctrl | GUI | Alt | M3 | M2 | Space | M2 | M3 | Esc | Tab |Enter | + * `-----------------------------------------------------------------------------------' + */ + [2] = { + { KC_NO, KC_PGUP, KC_BSPC, KC_UP, KC_DEL, KC_PGDN, KC_NO, DE_7, DE_8, DE_9, KC_NO, KC_NO }, + { KC_NO, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, DE_DOT, DE_4, DE_5, DE_6, DE_COMM, KC_NO }, + { DE_S, KC_NO, KC_TAB, KC_INS, KC_ENT, KC_NO, KC_0, DE_1, DE_2, DE_3, DE_SCLN, DE_S }, + { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS } + }, + + /* Function & Media Keys + * ,-----------------------------------------------------------------------------------. + * | | | Print|Scroll|Pause | | | F7 | F8 | F9 | F12 | | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | | Mute | Vol- | Vol+ | | ³ | F4 | F5 | F6 | F11 | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| | Prev | Play | Next | | ² | F1 | F2 | F3 | F10 |Shift | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Ctrl | GUI | Alt | M3 | | Space | | M3 | Esc | Tab |Enter | + * `-----------------------------------------------------------------------------------' + */ + [3] = { + { KC_NO, KC_NO, KC_PSCR, KC_SLCK, KC_PAUS, KC_NO, KC_NO, KC_F7, KC_F8, KC_F9, KC_F12, KC_NO }, + { KC_NO, KC_NO, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, DE_SQ3, KC_F4, KC_F5, KC_F6, KC_F11, KC_NO }, + { KC_TRNS, KC_NO, KC_MPRV, KC_MPLY, KC_MNXT, KC_NO, DE_SQ2, KC_F1, KC_F2, KC_F3, KC_F10, KC_TRNS}, + { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_TRNS, KC_TRNS, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS} + } +}; + +const uint16_t PROGMEM fn_actions[] = { + +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + switch (id) { + case 0: + if (record->event.pressed) { + register_code(KC_RSFT); +#ifdef BACKLIGHT_ENABLE + backlight_step(); +#endif + } + else { + unregister_code(KC_RSFT); + } + break; + } + return MACRO_NONE; +}; diff --git a/keyboard/planck/keymaps/brandon.c b/keyboard/planck/keymaps/brandon.c deleted file mode 100644 index 2b89f86db2..0000000000 --- a/keyboard/planck/keymaps/brandon.c +++ /dev/null @@ -1,134 +0,0 @@ -// This is the canonical layout file for the Quantum project. If you want to add another keyboard, -// this is the style you want to emulate. - -#include "planck.h" -#ifdef BACKLIGHT_ENABLE - #include "backlight.h" -#endif - -// Each layer gets a name for readability, which is then used in the keymap matrix below. -// The underscores don't mean anything - you can have a layer called STUFF or any other name. -// Layer names don't all need to be of the same length, obviously, and you can also skip them -// entirely and just use numbers. -#define _QW 0 -#define _CM 1 -#define _TK 2 -#define _LW 3 -#define _RS 4 - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -[_QW] = { /* Qwerty */ -/* MIT Layout (QWERTY layer) - * - * ,-----------------------------------------------------------------------. - * | esc | q | w | e | r | t | y | u | i | o | p | bspc| - * |-----------------------------------------------------------------------| - * | tab | a | s | d | f | g | h | j | k | l | ; | ' | - * |-----------------------------------------------------------------------| - * |shift| z | x | c | v | b | n | m | , | . | / |enter| - * |-----------------------------------------------------------------------| - * | ctl | alt | win | TK |lower| spc |raise|left |down | up |right| - * `-----------------------------------------------------------------------' - */ - {KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, - {KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, - {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, MT(MOD_LSFT, KC_ENT) }, - {KC_LCTL, KC_LALT, KC_LGUI, TG(_TK), MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} -}, -[_CM] = { /* Colemak */ -/* MIT Layout (Colemak layer) - * - * ,-----------------------------------------------------------------------. - * | esc | q | w | f | p | g | j | l | u | y | ; | bspc| - * |-----------------------------------------------------------------------| - * | tab | a | r | s | t | d | h | n | e | i | o | ' | - * |-----------------------------------------------------------------------| - * |shift| z | x | c | v | b | k | m | , | . | / |enter| - * |-----------------------------------------------------------------------| - * | ctl | alt | win | TK |lower| spc |raise|left |down | up |right| - * `-----------------------------------------------------------------------' - */ - {KC_ESC, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC}, - {KC_TAB, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT}, - {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, MT(MOD_LSFT, KC_ENT)}, - {KC_LCTL, KC_LALT, KC_LGUI, TG(_TK), MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} -}, -[_RS] = { /* RAISE */ -/* MIT Layout (RAISE layer) - * - * ,-----------------------------------------------------------------------. - * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | bspc| - * |-----------------------------------------------------------------------| - * | tab | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | - * |-----------------------------------------------------------------------| - * |shift| F7 | F8 | F9 | F10 | F11 | F12 | QW | CM | BL | RST |enter| - * |-----------------------------------------------------------------------| - * | ctl | alt | win | del |lower| spc |raise|next |vold |volu |PLAY | - * `-----------------------------------------------------------------------' - */ - - {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, - {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, - {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_CM), M(0), RESET, KC_TRNS}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} -}, -[_LW] = { /* LOWER */ -/* MIT Layout (Colemak layer) - * - * ,-----------------------------------------------------------------------. - * | esc | q | w | f | p | g | j | l | u | y | ; | bspc| - * |-----------------------------------------------------------------------| - * | tab | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | - * |-----------------------------------------------------------------------| - * |shift| F7 | F8 | F9 | F10 | F11 | F12 | QW | CM | BL | RST |enter| - * |-----------------------------------------------------------------------| - * | ctl | alt | win | TK |lower| spc |raise|next |vold |volu |PLAY | - * `-----------------------------------------------------------------------' - */ - {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC}, - {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, - {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_CM), M(0), RESET, KC_TRNS}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} -}, -[_TK] = { /* Ten Key*/ -/* MIT Layout (Ten Key layer) - * - * ,-----------------------------------------------------------------------. - * | esc | F9 | F10 | F11 | F12 | PGUP| % | / | 7 | 8 | 9 | bspc| - * |-----------------------------------------------------------------------| - * | tab | F5 | F6 | F7 | F8 | PGDN| HOME| * | 4 | 5 | 6 | \ | - * |-----------------------------------------------------------------------| - * |shift| F1 | F2 | F3 | F4 | DEL | END | 0 | 1 | 2 | 3 |enter| - * |-----------------------------------------------------------------------| - * | ctl | alt | win | TK |lower| spc |raise|left |down | up |right| - * `-----------------------------------------------------------------------' - */ - {KC_TRNS, KC_F9, KC_F10, KC_F11, KC_F12, KC_PGUP, KC_PERC, KC_SLSH, KC_7, KC_8, KC_9, KC_BSPC}, - {KC_TRNS, KC_F5, KC_F6, KC_F7, KC_F8, KC_PGDN, KC_HOME, KC_ASTR, KC_4, KC_5, KC_6, KC_PIPE}, - {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_DEL, KC_END, KC_0, KC_1, KC_2, KC_3, KC_TRNS}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} -} - -}; - -const uint16_t PROGMEM fn_actions[] = { - -}; - -const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) -{ - // MACRODOWN only works in this function - switch(id) { - case 0: - if (record->event.pressed) { - register_code(KC_RSFT); - #ifdef BACKLIGHT_ENABLE - backlight_step(); - #endif - } else { - unregister_code(KC_RSFT); - } - break; - } - return MACRO_NONE; -}; diff --git a/keyboard/planck/keymaps/brandon/brandon.c b/keyboard/planck/keymaps/brandon/brandon.c new file mode 100644 index 0000000000..2b89f86db2 --- /dev/null +++ b/keyboard/planck/keymaps/brandon/brandon.c @@ -0,0 +1,134 @@ +// This is the canonical layout file for the Quantum project. If you want to add another keyboard, +// this is the style you want to emulate. + +#include "planck.h" +#ifdef BACKLIGHT_ENABLE + #include "backlight.h" +#endif + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +#define _QW 0 +#define _CM 1 +#define _TK 2 +#define _LW 3 +#define _RS 4 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[_QW] = { /* Qwerty */ +/* MIT Layout (QWERTY layer) + * + * ,-----------------------------------------------------------------------. + * | esc | q | w | e | r | t | y | u | i | o | p | bspc| + * |-----------------------------------------------------------------------| + * | tab | a | s | d | f | g | h | j | k | l | ; | ' | + * |-----------------------------------------------------------------------| + * |shift| z | x | c | v | b | n | m | , | . | / |enter| + * |-----------------------------------------------------------------------| + * | ctl | alt | win | TK |lower| spc |raise|left |down | up |right| + * `-----------------------------------------------------------------------' + */ + {KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, + {KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, + {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, MT(MOD_LSFT, KC_ENT) }, + {KC_LCTL, KC_LALT, KC_LGUI, TG(_TK), MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} +}, +[_CM] = { /* Colemak */ +/* MIT Layout (Colemak layer) + * + * ,-----------------------------------------------------------------------. + * | esc | q | w | f | p | g | j | l | u | y | ; | bspc| + * |-----------------------------------------------------------------------| + * | tab | a | r | s | t | d | h | n | e | i | o | ' | + * |-----------------------------------------------------------------------| + * |shift| z | x | c | v | b | k | m | , | . | / |enter| + * |-----------------------------------------------------------------------| + * | ctl | alt | win | TK |lower| spc |raise|left |down | up |right| + * `-----------------------------------------------------------------------' + */ + {KC_ESC, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC}, + {KC_TAB, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT}, + {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, MT(MOD_LSFT, KC_ENT)}, + {KC_LCTL, KC_LALT, KC_LGUI, TG(_TK), MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} +}, +[_RS] = { /* RAISE */ +/* MIT Layout (RAISE layer) + * + * ,-----------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | bspc| + * |-----------------------------------------------------------------------| + * | tab | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | + * |-----------------------------------------------------------------------| + * |shift| F7 | F8 | F9 | F10 | F11 | F12 | QW | CM | BL | RST |enter| + * |-----------------------------------------------------------------------| + * | ctl | alt | win | del |lower| spc |raise|next |vold |volu |PLAY | + * `-----------------------------------------------------------------------' + */ + + {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, + {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, + {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_CM), M(0), RESET, KC_TRNS}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} +}, +[_LW] = { /* LOWER */ +/* MIT Layout (Colemak layer) + * + * ,-----------------------------------------------------------------------. + * | esc | q | w | f | p | g | j | l | u | y | ; | bspc| + * |-----------------------------------------------------------------------| + * | tab | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | + * |-----------------------------------------------------------------------| + * |shift| F7 | F8 | F9 | F10 | F11 | F12 | QW | CM | BL | RST |enter| + * |-----------------------------------------------------------------------| + * | ctl | alt | win | TK |lower| spc |raise|next |vold |volu |PLAY | + * `-----------------------------------------------------------------------' + */ + {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC}, + {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, + {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_CM), M(0), RESET, KC_TRNS}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} +}, +[_TK] = { /* Ten Key*/ +/* MIT Layout (Ten Key layer) + * + * ,-----------------------------------------------------------------------. + * | esc | F9 | F10 | F11 | F12 | PGUP| % | / | 7 | 8 | 9 | bspc| + * |-----------------------------------------------------------------------| + * | tab | F5 | F6 | F7 | F8 | PGDN| HOME| * | 4 | 5 | 6 | \ | + * |-----------------------------------------------------------------------| + * |shift| F1 | F2 | F3 | F4 | DEL | END | 0 | 1 | 2 | 3 |enter| + * |-----------------------------------------------------------------------| + * | ctl | alt | win | TK |lower| spc |raise|left |down | up |right| + * `-----------------------------------------------------------------------' + */ + {KC_TRNS, KC_F9, KC_F10, KC_F11, KC_F12, KC_PGUP, KC_PERC, KC_SLSH, KC_7, KC_8, KC_9, KC_BSPC}, + {KC_TRNS, KC_F5, KC_F6, KC_F7, KC_F8, KC_PGDN, KC_HOME, KC_ASTR, KC_4, KC_5, KC_6, KC_PIPE}, + {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_DEL, KC_END, KC_0, KC_1, KC_2, KC_3, KC_TRNS}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} +} + +}; + +const uint16_t PROGMEM fn_actions[] = { + +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + switch(id) { + case 0: + if (record->event.pressed) { + register_code(KC_RSFT); + #ifdef BACKLIGHT_ENABLE + backlight_step(); + #endif + } else { + unregister_code(KC_RSFT); + } + break; + } + return MACRO_NONE; +}; diff --git a/keyboard/planck/keymaps/charlie.c b/keyboard/planck/keymaps/charlie.c deleted file mode 100644 index 88f454d789..0000000000 --- a/keyboard/planck/keymaps/charlie.c +++ /dev/null @@ -1,54 +0,0 @@ -#include "keymap_common.h" - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = { /* Native */ - {KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, FUNC(2)}, - {KC_BSPC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, - {KC_TAB, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT}, - {KC_DEL, KC_LCTL, KC_NO, KC_LSFT, KC_LALT, KC_SPC, KC_NO, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} -}, - [1] = { /* QWERTY->PHOTOSHOP */ - {KC_DELETE, KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, FUNC(1)}, - {KC_O, KC_G, KC_S, KC_U, KC_T, FUNC(27), KC_F21, KC_F10, KC_F11, KC_F7, KC_F8, KC_F9}, - {KC_TAB, FUNC(4), FUNC(5), FUNC(6), KC_F1, FUNC(7), KC_F18, KC_F19, KC_F23, KC_F20, KC_F22, FUNC(9)}, - {KC_COMM, KC_DOT, KC_R, FUNC(11), FUNC(3), KC_SPC, FUNC(12), KC_F2, FUNC(8), KC_F3, KC_F14} - }, - [2] = { /* 2: FUNC(3 PHOTOSHOP */ - {KC_ESC, FUNC(25), FUNC(26), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO}, - {KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, FUNC(19), FUNC(20), FUNC(21)}, - {KC_C, KC_NO, FUNC(22), FUNC(5), KC_NO, FUNC(23), KC_NO, KC_NO, KC_NO, KC_NO, FUNC(13), KC_NO}, - {FUNC(14), FUNC(15), FUNC(16), FUNC(17), FUNC(3), KC_SPC, FUNC(18), KC_NO, KC_NO, KC_F24, KC_NO} - } -}; - -const uint16_t PROGMEM fn_actions[] = { - [1] = ACTION_DEFAULT_LAYER_SET(0), // set Qwerty layout - [2] = ACTION_DEFAULT_LAYER_SET(1), // set Photoshop presets - [3] = ACTION_LAYER_MOMENTARY(2), // Photoshop function layer - - [4] = ACTION_MODS_KEY(MOD_LSFT | MOD_LCTL | MOD_LALT, KC_F9), // photo folder AHK - [5] = ACTION_MODS_KEY(MOD_LSFT | MOD_LCTL, KC_I), // select inverse - [6] = ACTION_MODS_KEY(MOD_LSFT, KC_M), // marquee select - [7] = ACTION_MODS_KEY(MOD_LALT, KC_BSPC), // fill - [8] = ACTION_MODS_KEY(MOD_LSFT | MOD_LCTL | MOD_LALT, KC_X), // warp - [9] = ACTION_MODS_KEY(MOD_LCTL | MOD_LALT | MOD_LSFT, KC_F12), // merge all new layer - [10] = ACTION_MODS_KEY(MOD_LCTL, KC_MINS), // zoom out - [11] = ACTION_MODS_KEY(MOD_LCTL, KC_H), // RBG sliders - [12] = ACTION_MODS_KEY(MOD_LCTL, KC_S), // save - [13] = ACTION_MODS_KEY(MOD_LSFT | MOD_LCTL, KC_F5), // layer mask from transparancy - [14] = ACTION_MODS_KEY(MOD_LCTL, KC_F2), // stroke - [15] = ACTION_MODS_KEY(MOD_LCTL | MOD_LSFT, KC_F2), // stroke layer - [16] = ACTION_MODS_KEY(MOD_LCTL, KC_0), // zoom 0 - [17] = ACTION_MODS_KEY(MOD_LSFT | MOD_LCTL, KC_H), // HSV sliders - [18] = ACTION_MODS_KEY(MOD_LCTL | MOD_LSFT, KC_S), // save as - [19] = ACTION_MODS_KEY(MOD_LSFT | MOD_LCTL | MOD_LALT, KC_F7), // gaussian blur - [20] = ACTION_MODS_KEY(MOD_LSFT | MOD_LCTL | MOD_LALT, KC_F8), // motion blur - [21] = ACTION_MODS_KEY(MOD_LSFT | MOD_LCTL, KC_X), // liquify filter - [22] = ACTION_MODS_KEY(MOD_LSFT, KC_MINS), // prev layer blending - [23] = ACTION_MODS_KEY(MOD_LSFT | MOD_LCTL, KC_BSPC), // KC_NOrmal layer blending - [24] = ACTION_MODS_KEY(MOD_LSFT, KC_EQL), // next layer blending - [25] = ACTION_MODS_KEY(MOD_LCTL, KC_Z), // step back - [26] = ACTION_MODS_KEY(MOD_LCTL, KC_Y), // step forward - [27] = ACTION_MODS_KEY(MOD_LCTL, KC_R), // rasterize - -}; diff --git a/keyboard/planck/keymaps/charlie/charlie.c b/keyboard/planck/keymaps/charlie/charlie.c new file mode 100644 index 0000000000..88f454d789 --- /dev/null +++ b/keyboard/planck/keymaps/charlie/charlie.c @@ -0,0 +1,54 @@ +#include "keymap_common.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = { /* Native */ + {KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, FUNC(2)}, + {KC_BSPC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, + {KC_TAB, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT}, + {KC_DEL, KC_LCTL, KC_NO, KC_LSFT, KC_LALT, KC_SPC, KC_NO, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} +}, + [1] = { /* QWERTY->PHOTOSHOP */ + {KC_DELETE, KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, FUNC(1)}, + {KC_O, KC_G, KC_S, KC_U, KC_T, FUNC(27), KC_F21, KC_F10, KC_F11, KC_F7, KC_F8, KC_F9}, + {KC_TAB, FUNC(4), FUNC(5), FUNC(6), KC_F1, FUNC(7), KC_F18, KC_F19, KC_F23, KC_F20, KC_F22, FUNC(9)}, + {KC_COMM, KC_DOT, KC_R, FUNC(11), FUNC(3), KC_SPC, FUNC(12), KC_F2, FUNC(8), KC_F3, KC_F14} + }, + [2] = { /* 2: FUNC(3 PHOTOSHOP */ + {KC_ESC, FUNC(25), FUNC(26), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO}, + {KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, FUNC(19), FUNC(20), FUNC(21)}, + {KC_C, KC_NO, FUNC(22), FUNC(5), KC_NO, FUNC(23), KC_NO, KC_NO, KC_NO, KC_NO, FUNC(13), KC_NO}, + {FUNC(14), FUNC(15), FUNC(16), FUNC(17), FUNC(3), KC_SPC, FUNC(18), KC_NO, KC_NO, KC_F24, KC_NO} + } +}; + +const uint16_t PROGMEM fn_actions[] = { + [1] = ACTION_DEFAULT_LAYER_SET(0), // set Qwerty layout + [2] = ACTION_DEFAULT_LAYER_SET(1), // set Photoshop presets + [3] = ACTION_LAYER_MOMENTARY(2), // Photoshop function layer + + [4] = ACTION_MODS_KEY(MOD_LSFT | MOD_LCTL | MOD_LALT, KC_F9), // photo folder AHK + [5] = ACTION_MODS_KEY(MOD_LSFT | MOD_LCTL, KC_I), // select inverse + [6] = ACTION_MODS_KEY(MOD_LSFT, KC_M), // marquee select + [7] = ACTION_MODS_KEY(MOD_LALT, KC_BSPC), // fill + [8] = ACTION_MODS_KEY(MOD_LSFT | MOD_LCTL | MOD_LALT, KC_X), // warp + [9] = ACTION_MODS_KEY(MOD_LCTL | MOD_LALT | MOD_LSFT, KC_F12), // merge all new layer + [10] = ACTION_MODS_KEY(MOD_LCTL, KC_MINS), // zoom out + [11] = ACTION_MODS_KEY(MOD_LCTL, KC_H), // RBG sliders + [12] = ACTION_MODS_KEY(MOD_LCTL, KC_S), // save + [13] = ACTION_MODS_KEY(MOD_LSFT | MOD_LCTL, KC_F5), // layer mask from transparancy + [14] = ACTION_MODS_KEY(MOD_LCTL, KC_F2), // stroke + [15] = ACTION_MODS_KEY(MOD_LCTL | MOD_LSFT, KC_F2), // stroke layer + [16] = ACTION_MODS_KEY(MOD_LCTL, KC_0), // zoom 0 + [17] = ACTION_MODS_KEY(MOD_LSFT | MOD_LCTL, KC_H), // HSV sliders + [18] = ACTION_MODS_KEY(MOD_LCTL | MOD_LSFT, KC_S), // save as + [19] = ACTION_MODS_KEY(MOD_LSFT | MOD_LCTL | MOD_LALT, KC_F7), // gaussian blur + [20] = ACTION_MODS_KEY(MOD_LSFT | MOD_LCTL | MOD_LALT, KC_F8), // motion blur + [21] = ACTION_MODS_KEY(MOD_LSFT | MOD_LCTL, KC_X), // liquify filter + [22] = ACTION_MODS_KEY(MOD_LSFT, KC_MINS), // prev layer blending + [23] = ACTION_MODS_KEY(MOD_LSFT | MOD_LCTL, KC_BSPC), // KC_NOrmal layer blending + [24] = ACTION_MODS_KEY(MOD_LSFT, KC_EQL), // next layer blending + [25] = ACTION_MODS_KEY(MOD_LCTL, KC_Z), // step back + [26] = ACTION_MODS_KEY(MOD_LCTL, KC_Y), // step forward + [27] = ACTION_MODS_KEY(MOD_LCTL, KC_R), // rasterize + +}; diff --git a/keyboard/planck/keymaps/daniel.c b/keyboard/planck/keymaps/daniel.c deleted file mode 100644 index 234e48ff4a..0000000000 --- a/keyboard/planck/keymaps/daniel.c +++ /dev/null @@ -1,48 +0,0 @@ -#include "keymap_common.h" - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -[0] = { /* Qwerty */ - {KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, - {KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, - {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT}, - {FUNC(3), KC_LCTL, KC_LALT, KC_LGUI, FUNC(2), KC_SPC, KC_SPC, FUNC(1), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} - // Space is repeated to accommadate for both spacebar wiring positions -}, -[1] = { /* RAISE */ - {KC_GRV, S(KC_1), S(KC_2), S(KC_3), S(KC_4), S(KC_5), S(KC_6), S(KC_7), S(KC_8), S(KC_9), S(KC_0), KC_EQL}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LBRC, KC_RBRC}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, S(KC_MINS), KC_BSLS, KC_TRNS}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, FUNC(1), KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} -}, -[2] = { /* LOWER */ - {S(KC_GRV), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, S(KC_EQL)}, - {KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12}, - {KC_CAPS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_ENT}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, FUNC(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} -}, -[3] = { /* Qwerty */ - {KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL}, - {KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, - {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT}, - {KC_TRNS, KC_LCTL, KC_LALT, KC_LGUI, FUNC(2), KC_SPC, KC_SPC, FUNC(1), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} - // Space is repeated to accommadate for both spacebar wiring positions -} -}; - - -const uint16_t PROGMEM fn_actions[] = { - [1] = ACTION_LAYER_MOMENTARY(1), // to RAISE - [2] = ACTION_LAYER_MOMENTARY(2), // to LOWER - [3] = ACTION_LAYER_MOMENTARY(3) // to LOWER -}; - -const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) -{ - // MACRODOWN only works in this function - switch(id) { - case 0: - return MACRODOWN(T(CM_T), END); - break; - } - return MACRO_NONE; -}; diff --git a/keyboard/planck/keymaps/daniel/daniel.c b/keyboard/planck/keymaps/daniel/daniel.c new file mode 100644 index 0000000000..234e48ff4a --- /dev/null +++ b/keyboard/planck/keymaps/daniel/daniel.c @@ -0,0 +1,48 @@ +#include "keymap_common.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = { /* Qwerty */ + {KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, + {KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, + {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT}, + {FUNC(3), KC_LCTL, KC_LALT, KC_LGUI, FUNC(2), KC_SPC, KC_SPC, FUNC(1), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} + // Space is repeated to accommadate for both spacebar wiring positions +}, +[1] = { /* RAISE */ + {KC_GRV, S(KC_1), S(KC_2), S(KC_3), S(KC_4), S(KC_5), S(KC_6), S(KC_7), S(KC_8), S(KC_9), S(KC_0), KC_EQL}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LBRC, KC_RBRC}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, S(KC_MINS), KC_BSLS, KC_TRNS}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, FUNC(1), KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} +}, +[2] = { /* LOWER */ + {S(KC_GRV), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, S(KC_EQL)}, + {KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12}, + {KC_CAPS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_ENT}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, FUNC(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} +}, +[3] = { /* Qwerty */ + {KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL}, + {KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, + {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT}, + {KC_TRNS, KC_LCTL, KC_LALT, KC_LGUI, FUNC(2), KC_SPC, KC_SPC, FUNC(1), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} + // Space is repeated to accommadate for both spacebar wiring positions +} +}; + + +const uint16_t PROGMEM fn_actions[] = { + [1] = ACTION_LAYER_MOMENTARY(1), // to RAISE + [2] = ACTION_LAYER_MOMENTARY(2), // to LOWER + [3] = ACTION_LAYER_MOMENTARY(3) // to LOWER +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + switch(id) { + case 0: + return MACRODOWN(T(CM_T), END); + break; + } + return MACRO_NONE; +}; diff --git a/keyboard/planck/keymaps/david.c b/keyboard/planck/keymaps/david.c deleted file mode 100644 index f483084801..0000000000 --- a/keyboard/planck/keymaps/david.c +++ /dev/null @@ -1,76 +0,0 @@ -#include "keymap_common.h" -#include "beeps.h" - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -[0] = { /* Qwerty */ - {KC_Q, KC_W, KC_E, KC_R, KC_T, KC_BSPC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, - {KC_A, KC_S, KC_D, KC_F, KC_G, KC_ENT, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, - {KC_Z, KC_X, KC_C, KC_V, KC_B, KC_ESC, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT}, - {M(10), KC_LCTL, KC_LALT, KC_LGUI, FUNC(2), KC_SPC, KC_SPC, FUNC(1), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} - // Space is repeated to accommadate for both spacebar wiring positions -}, -[1] = { /* Colemak */ - {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC}, - {KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT}, - {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT}, - {KC_FN3, KC_LCTL, KC_LALT, KC_LGUI, FUNC(2), KC_SPC, KC_SPC, FUNC(1), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} -}, -[2] = { /* RAISE */ - {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, - {KC_TRNS, FUNC(3), FUNC(4), RESET, M(0), M(1), M(2), KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, - {KC_TRNS, KC_F11, KC_F12, M(0), M(1), M(2), M(3), M(4), M(5), M(6), M(7), KC_TRNS}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, FUNC(1), KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} -}, -[3] = { /* LOWER */ - {S(KC_GRV), S(KC_1), S(KC_2), S(KC_3), S(KC_4), S(KC_5), S(KC_6), S(KC_7), S(KC_8), S(KC_9), S(KC_0), KC_BSPC}, - {KC_TRNS, FUNC(3), FUNC(4), RESET, M(0), M(1), M(2), S(KC_MINS), S(KC_EQL), S(KC_LBRC), S(KC_RBRC), S(KC_BSLS)}, - {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, FUNC(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} -} -}; - -const uint16_t PROGMEM fn_actions[] = { - [1] = ACTION_LAYER_MOMENTARY(2), // to RAISE - [2] = ACTION_LAYER_MOMENTARY(3), // to LOWER - - [3] = ACTION_DEFAULT_LAYER_SET(0), - [4] = ACTION_DEFAULT_LAYER_SET(1), - -}; - -const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) -{ - // MACRODOWN only works in this function - if (record->event.pressed) { - switch(id) { - case 0: - true_note(12, 12, 20); - break; - case 1: - true_note(14, 14, 20); - break; - case 2: - true_note(16, 16, 20); - break; - case 3: - true_note(17, 17, 20); - break; - case 4: - true_note(19, 19, 20); - break; - case 5: - true_note(21, 21, 20); - break; - case 6: - true_note(23, 23, 20); - break; - case 7: - true_note(24, 24, 20); - break; - case 10: - - break; - } - } - return MACRO_NONE; -}; diff --git a/keyboard/planck/keymaps/david/david.c b/keyboard/planck/keymaps/david/david.c new file mode 100644 index 0000000000..f483084801 --- /dev/null +++ b/keyboard/planck/keymaps/david/david.c @@ -0,0 +1,76 @@ +#include "keymap_common.h" +#include "beeps.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = { /* Qwerty */ + {KC_Q, KC_W, KC_E, KC_R, KC_T, KC_BSPC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, + {KC_A, KC_S, KC_D, KC_F, KC_G, KC_ENT, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, + {KC_Z, KC_X, KC_C, KC_V, KC_B, KC_ESC, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT}, + {M(10), KC_LCTL, KC_LALT, KC_LGUI, FUNC(2), KC_SPC, KC_SPC, FUNC(1), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} + // Space is repeated to accommadate for both spacebar wiring positions +}, +[1] = { /* Colemak */ + {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC}, + {KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT}, + {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT}, + {KC_FN3, KC_LCTL, KC_LALT, KC_LGUI, FUNC(2), KC_SPC, KC_SPC, FUNC(1), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} +}, +[2] = { /* RAISE */ + {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, + {KC_TRNS, FUNC(3), FUNC(4), RESET, M(0), M(1), M(2), KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, + {KC_TRNS, KC_F11, KC_F12, M(0), M(1), M(2), M(3), M(4), M(5), M(6), M(7), KC_TRNS}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, FUNC(1), KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} +}, +[3] = { /* LOWER */ + {S(KC_GRV), S(KC_1), S(KC_2), S(KC_3), S(KC_4), S(KC_5), S(KC_6), S(KC_7), S(KC_8), S(KC_9), S(KC_0), KC_BSPC}, + {KC_TRNS, FUNC(3), FUNC(4), RESET, M(0), M(1), M(2), S(KC_MINS), S(KC_EQL), S(KC_LBRC), S(KC_RBRC), S(KC_BSLS)}, + {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, FUNC(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} +} +}; + +const uint16_t PROGMEM fn_actions[] = { + [1] = ACTION_LAYER_MOMENTARY(2), // to RAISE + [2] = ACTION_LAYER_MOMENTARY(3), // to LOWER + + [3] = ACTION_DEFAULT_LAYER_SET(0), + [4] = ACTION_DEFAULT_LAYER_SET(1), + +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + if (record->event.pressed) { + switch(id) { + case 0: + true_note(12, 12, 20); + break; + case 1: + true_note(14, 14, 20); + break; + case 2: + true_note(16, 16, 20); + break; + case 3: + true_note(17, 17, 20); + break; + case 4: + true_note(19, 19, 20); + break; + case 5: + true_note(21, 21, 20); + break; + case 6: + true_note(23, 23, 20); + break; + case 7: + true_note(24, 24, 20); + break; + case 10: + + break; + } + } + return MACRO_NONE; +}; diff --git a/keyboard/planck/keymaps/dzobert.c b/keyboard/planck/keymaps/dzobert.c deleted file mode 100644 index 665e9c20b6..0000000000 --- a/keyboard/planck/keymaps/dzobert.c +++ /dev/null @@ -1,49 +0,0 @@ -#include "keymap_common.h" - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -[0] = { /* Qwerty */ - {KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_TAB}, - {KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_BSPC}, - {KC_LALT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT}, - {KC_FN4, KC_RSFT, KC_LGUI, KC_LSFT, FUNC(2), KC_SPC, KC_SPC, FUNC(1), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} - // Space is repeated to accommadate for both spacebar wiring positions -}, -[1] = { /* Colemak */ - {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_TAB}, - {KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_BSPC}, - {KC_LALT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT}, - {KC_FN3, KC_RSFT, KC_LGUI, KC_LSFT, FUNC(2), KC_SPC, KC_SPC, FUNC(1), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} -}, -[2] = { /* RAISE */ - {KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12}, - {KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_DEL}, - {KC_TRNS, KC_GRV, KC_MINS, KC_EQL, KC_QUOT, S(KC_QUOT), S(KC_LBRC), S(KC_RBRC), KC_LBRC, KC_RBRC, KC_BSLS, KC_TRNS}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, FUNC(1), KC_HOME, KC_PGUP, KC_PGDN, KC_END} -}, -[3] = { /* LOWER */ - {KC_POWER,KC_PSCR, KC_SLCK, KC_PAUSE, KC_NLCK, KC_EXECUTE, KC_MENU, KC_APP, KC_7, KC_8, KC_9, KC_KP_SLASH}, - {KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_CAPS, KC_CANCEL, KC_UNDO, KC_AGAIN, KC_4, KC_5, KC_6, KC_KP_ASTERISK}, - {KC_TRNS, KC_INSERT,KC_CUT, KC_COPY, KC_PASTE, KC_BSLS, KC_9, KC_0, KC_1, KC_2, KC_3, KC_KP_MINUS}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, FUNC(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_0, KC_KP_DOT, KC_KP_ENTER, KC_KP_PLUS} -} -}; - -const uint16_t PROGMEM fn_actions[] = { - [1] = ACTION_LAYER_MOMENTARY(2), // to RAISE - [2] = ACTION_LAYER_MOMENTARY(3), // to LOWER - - [3] = ACTION_DEFAULT_LAYER_SET(0), - [4] = ACTION_DEFAULT_LAYER_SET(1), - -}; - -const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) -{ - // MACRODOWN only works in this function - switch(id) { - case 0: - return MACRODOWN(T(CM_T), END); - break; - } - return MACRO_NONE; -}; \ No newline at end of file diff --git a/keyboard/planck/keymaps/dzobert/dzobert.c b/keyboard/planck/keymaps/dzobert/dzobert.c new file mode 100644 index 0000000000..665e9c20b6 --- /dev/null +++ b/keyboard/planck/keymaps/dzobert/dzobert.c @@ -0,0 +1,49 @@ +#include "keymap_common.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = { /* Qwerty */ + {KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_TAB}, + {KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_BSPC}, + {KC_LALT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT}, + {KC_FN4, KC_RSFT, KC_LGUI, KC_LSFT, FUNC(2), KC_SPC, KC_SPC, FUNC(1), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} + // Space is repeated to accommadate for both spacebar wiring positions +}, +[1] = { /* Colemak */ + {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_TAB}, + {KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_BSPC}, + {KC_LALT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT}, + {KC_FN3, KC_RSFT, KC_LGUI, KC_LSFT, FUNC(2), KC_SPC, KC_SPC, FUNC(1), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} +}, +[2] = { /* RAISE */ + {KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12}, + {KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_DEL}, + {KC_TRNS, KC_GRV, KC_MINS, KC_EQL, KC_QUOT, S(KC_QUOT), S(KC_LBRC), S(KC_RBRC), KC_LBRC, KC_RBRC, KC_BSLS, KC_TRNS}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, FUNC(1), KC_HOME, KC_PGUP, KC_PGDN, KC_END} +}, +[3] = { /* LOWER */ + {KC_POWER,KC_PSCR, KC_SLCK, KC_PAUSE, KC_NLCK, KC_EXECUTE, KC_MENU, KC_APP, KC_7, KC_8, KC_9, KC_KP_SLASH}, + {KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_CAPS, KC_CANCEL, KC_UNDO, KC_AGAIN, KC_4, KC_5, KC_6, KC_KP_ASTERISK}, + {KC_TRNS, KC_INSERT,KC_CUT, KC_COPY, KC_PASTE, KC_BSLS, KC_9, KC_0, KC_1, KC_2, KC_3, KC_KP_MINUS}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, FUNC(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_0, KC_KP_DOT, KC_KP_ENTER, KC_KP_PLUS} +} +}; + +const uint16_t PROGMEM fn_actions[] = { + [1] = ACTION_LAYER_MOMENTARY(2), // to RAISE + [2] = ACTION_LAYER_MOMENTARY(3), // to LOWER + + [3] = ACTION_DEFAULT_LAYER_SET(0), + [4] = ACTION_DEFAULT_LAYER_SET(1), + +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + switch(id) { + case 0: + return MACRODOWN(T(CM_T), END); + break; + } + return MACRO_NONE; +}; \ No newline at end of file diff --git a/keyboard/planck/keymaps/gabriel.c b/keyboard/planck/keymaps/gabriel.c deleted file mode 100644 index 805484488b..0000000000 --- a/keyboard/planck/keymaps/gabriel.c +++ /dev/null @@ -1,108 +0,0 @@ -#include "planck.h" - -// Each layer gets a name for readability, which is then used in the keymap matrix below. -// The underscores don't mean anything - you can have a layer called STUFF or any other name. -// Layer names don't all need to be of the same length, obviously, and you can also skip them -// entirely and just use numbers. -#define _QW 0 -#define _LW 1 -#define _RS 2 -#define _FN 3 - -// This a slightly modified 'default' keymap that's closer to the Mac keyboard layout. I like the position -// of 'esc' and 'tab' better this way. I also got rid of the backlighting control key and the dvorak and -// colemak layers. I added an 'fn' layer that makes the 'bspc' a forward delete (like on OSX). -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -/* MIT Layout (QWERTY layer) - * - * ,-----------------------------------------------------------------------. - * | esc | q | w | e | r | t | y | u | i | o | p | bspc| - * |-----------------------------------------------------------------------| - * | tab | a | s | d | f | g | h | j | k | l | ; | ' | - * |-----------------------------------------------------------------------| - * |shift| z | x | c | v | b | n | m | , | . | / |enter| - * |-----------------------------------------------------------------------| - * | fn | ctl | alt | cmd |lower| spc |raise|left |down | up |right| - * `-----------------------------------------------------------------------' - */ -[_QW] = { /* QWERTY */ - {KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, - {KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, - {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT }, - {MO(_FN), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} -}, -/* MIT Layout (Raised layer) - * - * ,-----------------------------------------------------------------------. - * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | | - * |-----------------------------------------------------------------------| - * | | F1 | F2 | F3 | F4 | F5 | F6 | - | + | [ | ] | | | - * |-----------------------------------------------------------------------| - * | | F7 | F8 | F9 | F10 | F11 | F12 | | | | | | - * |-----------------------------------------------------------------------| - * | | | | | | | | | | | | - * `-----------------------------------------------------------------------' - */ -[_RS] = { /* RAISE */ - {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, - {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_PLUS, KC_LBRC, KC_RBRC, KC_PIPE}, - {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS} -}, -/* MIT Layout (Lowered layer) - * - * ,-----------------------------------------------------------------------. - * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | | - * |-----------------------------------------------------------------------| - * | | F1 | F2 | F3 | F4 | F5 | F6 | _ | = | { | } | \ | - * |-----------------------------------------------------------------------| - * | | F7 | F8 | F9 | F10 | F11 | F12 | | | | | | - * |-----------------------------------------------------------------------| - * | | | | | | | | | | | | - * `-----------------------------------------------------------------------' - */ -[_LW] = { /* LOWER */ - {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC}, - {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_EQL, KC_LCBR, KC_RCBR, KC_BSLS}, - {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS} -}, -/* MIT Layout (FN layer) - * - * ,-----------------------------------------------------------------------. - * | | | | | | | | | | | | del | - * |-----------------------------------------------------------------------| - * | | | | | | | | | | | | | - * |-----------------------------------------------------------------------| - * | | | | | | | | | | | | | - * |-----------------------------------------------------------------------| - * | | | | | | | |home |pgdn |pgup | end | - * `-----------------------------------------------------------------------' - */ -[_FN] = { /* FUNCTION */ - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DELT}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_PGUP, KC_END} -} -}; - -const uint16_t PROGMEM fn_actions[] = { - -}; - -const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) -{ - // MACRODOWN only works in this function - switch(id) { - case 0: - if (record->event.pressed) { - register_code(KC_RSFT); - backlight_step(); - } else { - unregister_code(KC_RSFT); - } - break; - } - return MACRO_NONE; -}; diff --git a/keyboard/planck/keymaps/gabriel/gabriel.c b/keyboard/planck/keymaps/gabriel/gabriel.c new file mode 100644 index 0000000000..805484488b --- /dev/null +++ b/keyboard/planck/keymaps/gabriel/gabriel.c @@ -0,0 +1,108 @@ +#include "planck.h" + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +#define _QW 0 +#define _LW 1 +#define _RS 2 +#define _FN 3 + +// This a slightly modified 'default' keymap that's closer to the Mac keyboard layout. I like the position +// of 'esc' and 'tab' better this way. I also got rid of the backlighting control key and the dvorak and +// colemak layers. I added an 'fn' layer that makes the 'bspc' a forward delete (like on OSX). +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* MIT Layout (QWERTY layer) + * + * ,-----------------------------------------------------------------------. + * | esc | q | w | e | r | t | y | u | i | o | p | bspc| + * |-----------------------------------------------------------------------| + * | tab | a | s | d | f | g | h | j | k | l | ; | ' | + * |-----------------------------------------------------------------------| + * |shift| z | x | c | v | b | n | m | , | . | / |enter| + * |-----------------------------------------------------------------------| + * | fn | ctl | alt | cmd |lower| spc |raise|left |down | up |right| + * `-----------------------------------------------------------------------' + */ +[_QW] = { /* QWERTY */ + {KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, + {KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, + {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT }, + {MO(_FN), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} +}, +/* MIT Layout (Raised layer) + * + * ,-----------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | | + * |-----------------------------------------------------------------------| + * | | F1 | F2 | F3 | F4 | F5 | F6 | - | + | [ | ] | | | + * |-----------------------------------------------------------------------| + * | | F7 | F8 | F9 | F10 | F11 | F12 | | | | | | + * |-----------------------------------------------------------------------| + * | | | | | | | | | | | | + * `-----------------------------------------------------------------------' + */ +[_RS] = { /* RAISE */ + {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, + {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_PLUS, KC_LBRC, KC_RBRC, KC_PIPE}, + {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS} +}, +/* MIT Layout (Lowered layer) + * + * ,-----------------------------------------------------------------------. + * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | | + * |-----------------------------------------------------------------------| + * | | F1 | F2 | F3 | F4 | F5 | F6 | _ | = | { | } | \ | + * |-----------------------------------------------------------------------| + * | | F7 | F8 | F9 | F10 | F11 | F12 | | | | | | + * |-----------------------------------------------------------------------| + * | | | | | | | | | | | | + * `-----------------------------------------------------------------------' + */ +[_LW] = { /* LOWER */ + {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC}, + {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_EQL, KC_LCBR, KC_RCBR, KC_BSLS}, + {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS} +}, +/* MIT Layout (FN layer) + * + * ,-----------------------------------------------------------------------. + * | | | | | | | | | | | | del | + * |-----------------------------------------------------------------------| + * | | | | | | | | | | | | | + * |-----------------------------------------------------------------------| + * | | | | | | | | | | | | | + * |-----------------------------------------------------------------------| + * | | | | | | | |home |pgdn |pgup | end | + * `-----------------------------------------------------------------------' + */ +[_FN] = { /* FUNCTION */ + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DELT}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_PGUP, KC_END} +} +}; + +const uint16_t PROGMEM fn_actions[] = { + +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + switch(id) { + case 0: + if (record->event.pressed) { + register_code(KC_RSFT); + backlight_step(); + } else { + unregister_code(KC_RSFT); + } + break; + } + return MACRO_NONE; +}; diff --git a/keyboard/planck/keymaps/jacob/Keyboard Layout.PNG b/keyboard/planck/keymaps/jacob/Keyboard Layout.PNG new file mode 100644 index 0000000000..40f0b89429 Binary files /dev/null and b/keyboard/planck/keymaps/jacob/Keyboard Layout.PNG differ diff --git a/keyboard/planck/keymaps/jacob/keymap.c b/keyboard/planck/keymaps/jacob/keymap.c new file mode 100644 index 0000000000..5e6e8498e2 --- /dev/null +++ b/keyboard/planck/keymaps/jacob/keymap.c @@ -0,0 +1,56 @@ +#include "planck.h" +#include "action_layer.h" +#ifdef BACKLIGHT_ENABLE + #include "backlight.h" +#endif + +//Simple Keymap where CTRL, WINKEY, and ALT keys are placed in a more familiar location for Windows users. +//Focus of this particular keymap is to enable easy transition from more traditional keyboards to OLKB Planck. + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +#define _QW 0 +#define _LW 1 +#define _RS 2 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_QW] = { /* Qwerty */ + {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, + {KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, + {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, MT(MOD_RSFT, KC_ENT)}, + {KC_LCTL, KC_LGUI, KC_LALT, M(0), MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} + }, + [_RS] = { /* RAISE */ + {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL }, + {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, + {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS} + }, + [_LW] = { /* LOWER */ + {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL }, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LBRC, KC_RBRC, KC_TRNS}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS} + } +}; + +const uint16_t PROGMEM fn_actions[] = { + +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + switch(id) { + case 0: + if (record->event.pressed) { + register_code(KC_RSFT); + #ifdef BACKLIGHT_ENABLE + backlight_step(); + #endif + } else { + unregister_code(KC_RSFT); + } + break; + } + return MACRO_NONE; +}; diff --git a/keyboard/planck/keymaps/jacob/readme.md b/keyboard/planck/keymaps/jacob/readme.md new file mode 100644 index 0000000000..2a4be4ebce --- /dev/null +++ b/keyboard/planck/keymaps/jacob/readme.md @@ -0,0 +1 @@ +Focus of this particular keymap is to enable easy transition from more traditional keyboards to OLKB Planck. \ No newline at end of file diff --git a/keyboard/planck/keymaps/joe.c b/keyboard/planck/keymaps/joe.c deleted file mode 100644 index 5b7bbe2bbb..0000000000 --- a/keyboard/planck/keymaps/joe.c +++ /dev/null @@ -1,88 +0,0 @@ -#include "keymap_common.h" - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = { /* Joe colemak */ - {F(3), KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_MINS}, - {KC_BSPC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_ENT }, - {F(15), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_UP, KC_QUOT}, - {KC_LCTL, KC_LGUI, KC_LALT, KC_LSFT, F(1), KC_SPC, KC_SPC, F(2), KC_SLSH, KC_LEFT, KC_DOWN, KC_RGHT} - }, - [1] = { /* Joe soft Colemak */ - {F(3), CM_Q, CM_W, CM_F, CM_P, CM_G, CM_J, CM_L, CM_U, CM_Y, CM_SCLN, KC_MINS}, - {KC_BSPC, CM_A, CM_R, CM_S, CM_T, CM_D, CM_H, CM_N, CM_E, CM_I, CM_O, KC_ENT }, - {F(15), CM_Z, CM_X, CM_C, CM_V, CM_B, CM_K, CM_M, KC_COMM, KC_DOT, KC_UP, KC_QUOT}, - {KC_LCTL, KC_LGUI, KC_LALT, KC_LSFT, F(1), KC_SPC, KC_SPC, F(2), KC_SLSH, KC_LEFT, KC_DOWN, KC_RGHT} - }, - [2] = { /* Joe NUMPAD */ - {F(3), KC_NO, KC_UP, KC_NO, KC_NO, KC_NO, LSFT(KC_9), LSFT(KC_0), KC_PSLS, KC_P7, KC_P8, KC_P9 }, - {KC_BSPC, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO, KC_NO, LSFT(KC_5), KC_PEQL, KC_PAST, KC_P4, KC_P5, KC_P6 }, - {F(15), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_PCMM, KC_PMNS, KC_P1, KC_P2, KC_P3 }, - {KC_LCTL, KC_LGUI, KC_LALT, KC_LSFT, F(1), KC_TRNS, KC_TRNS, F(2), KC_PPLS, KC_P0, KC_PDOT, KC_PENT} - }, - [3] = { /* Joe 1337 haxOr5*/ - {F(3), KC_Q, KC_W, KC_F, KC_P, KC_6, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_MINS}, - {KC_BSPC, KC_4, KC_R, KC_5, KC_7, KC_D, KC_H, KC_N, KC_3, KC_1, KC_0, KC_ENT }, - {F(15), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_UP, KC_QUOT}, - {KC_LCTL, KC_LGUI, KC_LALT, KC_LSFT, F(1), KC_SPC, KC_SPC, F(2), KC_SLSH, KC_LEFT, KC_DOWN, KC_RGHT} - }, - [4] = { /* Joe LOWER fn1 */ - {KC_GRV, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, M(3), M(2), M(1), M(0) }, - {KC_BSPC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS}, - {KC_BSLS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_LBRC, KC_RBRC, KC_PGUP, KC_EQL }, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, F(1), KC_TRNS, KC_TRNS, F(2), KC_NO, KC_HOME, KC_PGDN, KC_END } - }, - [5] = { /* Joe UPPER fn2 */ - {KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12 }, - {KC_DEL, KC_BTN1, KC_MS_U, KC_BTN2, KC_BTN3, KC_WH_U, KC_BTN4, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_NO }, - {KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_L, KC_WH_D, KC_WH_R, KC_NO, KC_NO, LCTL(KC_PGUP), LCTL(LALT(KC_UP)), LCTL(KC_PGDN) }, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, F(1), KC_NO, KC_NO, F(2), KC_NO, LCTL(LALT(KC_LEFT)), LCTL(LALT(KC_DOWN)), LCTL(LALT(KC_RGHT))} - }, - [6] = { /* Joe SPECIAL fn3 */ - {KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, - {KC_NO, KC_MPLY, KC_MPRV, KC_MNXT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RESET }, - {KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, - {F(6), F(7), F(8), F(9), F(1), KC_TRNS, KC_TRNS, F(2), KC_POWER, KC_WAKE, KC_SLEP, LCTL(LALT(KC_L))} - } -}; - -const uint16_t PROGMEM fn_actions[] = { - [1] = ACTION_LAYER_MOMENTARY(4), // fn1 - [2] = ACTION_LAYER_MOMENTARY(5), // fn2 - - /* ESC on tap, fn3 on hold */ - [3] = ACTION_LAYER_TAP_KEY(6, KC_ESC), - - /* toggle layers */ - [6] = ACTION_DEFAULT_LAYER_SET(0), - [7] = ACTION_DEFAULT_LAYER_SET(1), - [8] = ACTION_DEFAULT_LAYER_SET(2), - [9] = ACTION_DEFAULT_LAYER_SET(3), - - /* tab on tap, shift on hold */ - [15] = ACTION_MODS_TAP_KEY(MOD_LSFT, KC_TAB), -}; - -const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) -{ - switch (id) { - case 0: - /* :) */ - return MACRODOWN( DOWN(KC_LSFT), TYPE(KC_SCLN), TYPE(KC_0), UP(KC_LSFT), END ); - break; - case 1: - /* :( */ - return MACRODOWN( DOWN(KC_LSFT), TYPE(KC_SCLN), TYPE(KC_9), UP(KC_LSFT), END ); - break; - case 2: - /* (: | :) */ - return MACRODOWN( DOWN(KC_LSFT), TYPE(KC_9), TYPE(KC_SCLN), TYPE(KC_SPC), TYPE(KC_SPC), TYPE(KC_SCLN), TYPE(KC_0), UP(KC_LSFT), TYPE(KC_LEFT), TYPE(KC_LEFT), TYPE(KC_LEFT), END ); - break; - case 3: - /* :( | ): */ - return MACRODOWN( DOWN(KC_LSFT), TYPE(KC_SCLN), TYPE(KC_9), TYPE(KC_SPC), TYPE(KC_SPC), TYPE(KC_0), TYPE(KC_SCLN), UP(KC_LSFT), TYPE(KC_LEFT), TYPE(KC_LEFT), TYPE(KC_LEFT), END ); - break; - default: - break; - } - return MACRO_NONE; -} diff --git a/keyboard/planck/keymaps/joe/joe.c b/keyboard/planck/keymaps/joe/joe.c new file mode 100644 index 0000000000..5b7bbe2bbb --- /dev/null +++ b/keyboard/planck/keymaps/joe/joe.c @@ -0,0 +1,88 @@ +#include "keymap_common.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = { /* Joe colemak */ + {F(3), KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_MINS}, + {KC_BSPC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_ENT }, + {F(15), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_UP, KC_QUOT}, + {KC_LCTL, KC_LGUI, KC_LALT, KC_LSFT, F(1), KC_SPC, KC_SPC, F(2), KC_SLSH, KC_LEFT, KC_DOWN, KC_RGHT} + }, + [1] = { /* Joe soft Colemak */ + {F(3), CM_Q, CM_W, CM_F, CM_P, CM_G, CM_J, CM_L, CM_U, CM_Y, CM_SCLN, KC_MINS}, + {KC_BSPC, CM_A, CM_R, CM_S, CM_T, CM_D, CM_H, CM_N, CM_E, CM_I, CM_O, KC_ENT }, + {F(15), CM_Z, CM_X, CM_C, CM_V, CM_B, CM_K, CM_M, KC_COMM, KC_DOT, KC_UP, KC_QUOT}, + {KC_LCTL, KC_LGUI, KC_LALT, KC_LSFT, F(1), KC_SPC, KC_SPC, F(2), KC_SLSH, KC_LEFT, KC_DOWN, KC_RGHT} + }, + [2] = { /* Joe NUMPAD */ + {F(3), KC_NO, KC_UP, KC_NO, KC_NO, KC_NO, LSFT(KC_9), LSFT(KC_0), KC_PSLS, KC_P7, KC_P8, KC_P9 }, + {KC_BSPC, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO, KC_NO, LSFT(KC_5), KC_PEQL, KC_PAST, KC_P4, KC_P5, KC_P6 }, + {F(15), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_PCMM, KC_PMNS, KC_P1, KC_P2, KC_P3 }, + {KC_LCTL, KC_LGUI, KC_LALT, KC_LSFT, F(1), KC_TRNS, KC_TRNS, F(2), KC_PPLS, KC_P0, KC_PDOT, KC_PENT} + }, + [3] = { /* Joe 1337 haxOr5*/ + {F(3), KC_Q, KC_W, KC_F, KC_P, KC_6, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_MINS}, + {KC_BSPC, KC_4, KC_R, KC_5, KC_7, KC_D, KC_H, KC_N, KC_3, KC_1, KC_0, KC_ENT }, + {F(15), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_UP, KC_QUOT}, + {KC_LCTL, KC_LGUI, KC_LALT, KC_LSFT, F(1), KC_SPC, KC_SPC, F(2), KC_SLSH, KC_LEFT, KC_DOWN, KC_RGHT} + }, + [4] = { /* Joe LOWER fn1 */ + {KC_GRV, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, M(3), M(2), M(1), M(0) }, + {KC_BSPC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS}, + {KC_BSLS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_LBRC, KC_RBRC, KC_PGUP, KC_EQL }, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, F(1), KC_TRNS, KC_TRNS, F(2), KC_NO, KC_HOME, KC_PGDN, KC_END } + }, + [5] = { /* Joe UPPER fn2 */ + {KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12 }, + {KC_DEL, KC_BTN1, KC_MS_U, KC_BTN2, KC_BTN3, KC_WH_U, KC_BTN4, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_NO }, + {KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_L, KC_WH_D, KC_WH_R, KC_NO, KC_NO, LCTL(KC_PGUP), LCTL(LALT(KC_UP)), LCTL(KC_PGDN) }, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, F(1), KC_NO, KC_NO, F(2), KC_NO, LCTL(LALT(KC_LEFT)), LCTL(LALT(KC_DOWN)), LCTL(LALT(KC_RGHT))} + }, + [6] = { /* Joe SPECIAL fn3 */ + {KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, + {KC_NO, KC_MPLY, KC_MPRV, KC_MNXT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RESET }, + {KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, + {F(6), F(7), F(8), F(9), F(1), KC_TRNS, KC_TRNS, F(2), KC_POWER, KC_WAKE, KC_SLEP, LCTL(LALT(KC_L))} + } +}; + +const uint16_t PROGMEM fn_actions[] = { + [1] = ACTION_LAYER_MOMENTARY(4), // fn1 + [2] = ACTION_LAYER_MOMENTARY(5), // fn2 + + /* ESC on tap, fn3 on hold */ + [3] = ACTION_LAYER_TAP_KEY(6, KC_ESC), + + /* toggle layers */ + [6] = ACTION_DEFAULT_LAYER_SET(0), + [7] = ACTION_DEFAULT_LAYER_SET(1), + [8] = ACTION_DEFAULT_LAYER_SET(2), + [9] = ACTION_DEFAULT_LAYER_SET(3), + + /* tab on tap, shift on hold */ + [15] = ACTION_MODS_TAP_KEY(MOD_LSFT, KC_TAB), +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + switch (id) { + case 0: + /* :) */ + return MACRODOWN( DOWN(KC_LSFT), TYPE(KC_SCLN), TYPE(KC_0), UP(KC_LSFT), END ); + break; + case 1: + /* :( */ + return MACRODOWN( DOWN(KC_LSFT), TYPE(KC_SCLN), TYPE(KC_9), UP(KC_LSFT), END ); + break; + case 2: + /* (: | :) */ + return MACRODOWN( DOWN(KC_LSFT), TYPE(KC_9), TYPE(KC_SCLN), TYPE(KC_SPC), TYPE(KC_SPC), TYPE(KC_SCLN), TYPE(KC_0), UP(KC_LSFT), TYPE(KC_LEFT), TYPE(KC_LEFT), TYPE(KC_LEFT), END ); + break; + case 3: + /* :( | ): */ + return MACRODOWN( DOWN(KC_LSFT), TYPE(KC_SCLN), TYPE(KC_9), TYPE(KC_SPC), TYPE(KC_SPC), TYPE(KC_0), TYPE(KC_SCLN), UP(KC_LSFT), TYPE(KC_LEFT), TYPE(KC_LEFT), TYPE(KC_LEFT), END ); + break; + default: + break; + } + return MACRO_NONE; +} diff --git a/keyboard/planck/keymaps/kyle.c b/keyboard/planck/keymaps/kyle.c deleted file mode 100644 index da32b74f96..0000000000 --- a/keyboard/planck/keymaps/kyle.c +++ /dev/null @@ -1,49 +0,0 @@ -#include "keymap_common.h" - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -[0] = { /* Qwerty */ - {KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, - {KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, - {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT}, - {KC_RCTL, KC_LCTL, KC_LALT, KC_LGUI, FUNC(2), KC_SPC, KC_SPC, FUNC(1), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} - // Space is repeated to accommadate for both spacebar wiring positions -}, -[1] = { /* Colemak */ - {KC_ESC, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC}, - {KC_TAB, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT}, - {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT}, - {KC_FN3, KC_LCTL, KC_LALT, KC_LGUI, FUNC(2), KC_SPC, KC_SPC, FUNC(1), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} -}, -[2] = { /* RAISE */ - {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, - {KC_TRNS, FUNC(3), FUNC(4), LSFT(RSFT(KC_PAUSE)), KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, - {KC_TRNS, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_TRNS}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, FUNC(1), KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} -}, -[3] = { /* LOWER */ - {S(KC_GRV), S(KC_1), S(KC_2), S(KC_3), S(KC_4), S(KC_5), S(KC_6), S(KC_7), S(KC_8), S(KC_9), S(KC_0), KC_BSPC}, - {KC_TRNS, FUNC(3), FUNC(4), LSFT(RSFT(KC_PAUSE)), LSFT(RSFT(KC_D)), KC_TRNS, KC_TRNS, S(KC_MINS), S(KC_EQL), S(KC_LBRC), S(KC_RBRC), S(KC_BSLS)}, - {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS}, - {BL_STEP, KC_TRNS, KC_TRNS, KC_TRNS, FUNC(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} -} -}; - -const uint16_t PROGMEM fn_actions[] = { - [1] = ACTION_LAYER_MOMENTARY(2), // to RAISE - [2] = ACTION_LAYER_MOMENTARY(3), // to LOWER - - [3] = ACTION_DEFAULT_LAYER_SET(0), - [4] = ACTION_DEFAULT_LAYER_SET(1), - -}; - -const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) -{ - // MACRODOWN only works in this function - switch(id) { - case 0: - return MACRODOWN(T(CM_T), END); - break; - } - return MACRO_NONE; -}; diff --git a/keyboard/planck/keymaps/kyle/kyle.c b/keyboard/planck/keymaps/kyle/kyle.c new file mode 100644 index 0000000000..da32b74f96 --- /dev/null +++ b/keyboard/planck/keymaps/kyle/kyle.c @@ -0,0 +1,49 @@ +#include "keymap_common.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = { /* Qwerty */ + {KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, + {KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, + {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT}, + {KC_RCTL, KC_LCTL, KC_LALT, KC_LGUI, FUNC(2), KC_SPC, KC_SPC, FUNC(1), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} + // Space is repeated to accommadate for both spacebar wiring positions +}, +[1] = { /* Colemak */ + {KC_ESC, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC}, + {KC_TAB, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT}, + {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT}, + {KC_FN3, KC_LCTL, KC_LALT, KC_LGUI, FUNC(2), KC_SPC, KC_SPC, FUNC(1), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} +}, +[2] = { /* RAISE */ + {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, + {KC_TRNS, FUNC(3), FUNC(4), LSFT(RSFT(KC_PAUSE)), KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, + {KC_TRNS, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_TRNS}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, FUNC(1), KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} +}, +[3] = { /* LOWER */ + {S(KC_GRV), S(KC_1), S(KC_2), S(KC_3), S(KC_4), S(KC_5), S(KC_6), S(KC_7), S(KC_8), S(KC_9), S(KC_0), KC_BSPC}, + {KC_TRNS, FUNC(3), FUNC(4), LSFT(RSFT(KC_PAUSE)), LSFT(RSFT(KC_D)), KC_TRNS, KC_TRNS, S(KC_MINS), S(KC_EQL), S(KC_LBRC), S(KC_RBRC), S(KC_BSLS)}, + {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS}, + {BL_STEP, KC_TRNS, KC_TRNS, KC_TRNS, FUNC(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} +} +}; + +const uint16_t PROGMEM fn_actions[] = { + [1] = ACTION_LAYER_MOMENTARY(2), // to RAISE + [2] = ACTION_LAYER_MOMENTARY(3), // to LOWER + + [3] = ACTION_DEFAULT_LAYER_SET(0), + [4] = ACTION_DEFAULT_LAYER_SET(1), + +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + switch(id) { + case 0: + return MACRODOWN(T(CM_T), END); + break; + } + return MACRO_NONE; +}; diff --git a/keyboard/planck/keymaps/leo.c b/keyboard/planck/keymaps/leo.c deleted file mode 100644 index 6d66441822..0000000000 --- a/keyboard/planck/keymaps/leo.c +++ /dev/null @@ -1,46 +0,0 @@ -#include "keymap_common.h" - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -[0] = { /* BASE */ - {KC_ESC, KC_LBRC, KC_QUOT, KC_SCLN, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC}, - {KC_TAB, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_ENT}, - {KC_LSFT, KC_DOT, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_COMM}, - {KC_LCTL, KC_LALT, KC_LGUI, FUNC(3), FUNC(2), KC_SPC, KC_SPC, FUNC(1), FUNC(3), KC_RGUI, KC_RALT, KC_RCTL} -}, -[2] = { /* RAISE */ - {RALT(KC_RBRC), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, S(KC_RBRC)}, - {KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS} -}, -[3] = { /* LOWER */ - {S(KC_EQL),S(KC_1),S(KC_2),S(KC_3),RALT(KC_5),S(KC_5), S(KC_6), S(KC_7),RALT(KC_7),RALT(KC_0),S(KC_0), KC_MINS}, - {KC_TRNS,RALT(KC_2),S(KC_SLSH),KC_NUBS,S(KC_NUBS),RALT(KC_MINS),RALT(KC_NUBS), KC_NUHS, S(KC_8), S(KC_9), S(KC_MINS), KC_SLSH}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RALT(KC_8), RALT(KC_9), KC_TRNS, KC_TRNS}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS} -}, -[4] = { /* META */ - {KC_TRNS, KC_HOME, KC_UP, KC_END, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_UP, KC_END, KC_TRNS, KC_DEL}, - {KC_TRNS, KC_RGHT, KC_DOWN, KC_LEFT, KC_PGUP, KC_TRNS, KC_PGUP, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGDN, KC_TRNS, KC_PGDN, KC_TRNS, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS} -} -}; - -const uint16_t PROGMEM fn_actions[] = { - [1] = ACTION_LAYER_MOMENTARY(2), // to RAISE - [2] = ACTION_LAYER_MOMENTARY(3), // to LOWER - [3] = ACTION_LAYER_MOMENTARY(4), // to META - -}; - -const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) -{ - // MACRODOWN only works in this function - switch(id) { - case 0: - return MACRODOWN(T(CM_T), END); - break; - } - return MACRO_NONE; -}; diff --git a/keyboard/planck/keymaps/leo/leo.c b/keyboard/planck/keymaps/leo/leo.c new file mode 100644 index 0000000000..6d66441822 --- /dev/null +++ b/keyboard/planck/keymaps/leo/leo.c @@ -0,0 +1,46 @@ +#include "keymap_common.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = { /* BASE */ + {KC_ESC, KC_LBRC, KC_QUOT, KC_SCLN, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC}, + {KC_TAB, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_ENT}, + {KC_LSFT, KC_DOT, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_COMM}, + {KC_LCTL, KC_LALT, KC_LGUI, FUNC(3), FUNC(2), KC_SPC, KC_SPC, FUNC(1), FUNC(3), KC_RGUI, KC_RALT, KC_RCTL} +}, +[2] = { /* RAISE */ + {RALT(KC_RBRC), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, S(KC_RBRC)}, + {KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS} +}, +[3] = { /* LOWER */ + {S(KC_EQL),S(KC_1),S(KC_2),S(KC_3),RALT(KC_5),S(KC_5), S(KC_6), S(KC_7),RALT(KC_7),RALT(KC_0),S(KC_0), KC_MINS}, + {KC_TRNS,RALT(KC_2),S(KC_SLSH),KC_NUBS,S(KC_NUBS),RALT(KC_MINS),RALT(KC_NUBS), KC_NUHS, S(KC_8), S(KC_9), S(KC_MINS), KC_SLSH}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RALT(KC_8), RALT(KC_9), KC_TRNS, KC_TRNS}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS} +}, +[4] = { /* META */ + {KC_TRNS, KC_HOME, KC_UP, KC_END, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_UP, KC_END, KC_TRNS, KC_DEL}, + {KC_TRNS, KC_RGHT, KC_DOWN, KC_LEFT, KC_PGUP, KC_TRNS, KC_PGUP, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGDN, KC_TRNS, KC_PGDN, KC_TRNS, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS} +} +}; + +const uint16_t PROGMEM fn_actions[] = { + [1] = ACTION_LAYER_MOMENTARY(2), // to RAISE + [2] = ACTION_LAYER_MOMENTARY(3), // to LOWER + [3] = ACTION_LAYER_MOMENTARY(4), // to META + +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + switch(id) { + case 0: + return MACRODOWN(T(CM_T), END); + break; + } + return MACRO_NONE; +}; diff --git a/keyboard/planck/keymaps/lucas.c b/keyboard/planck/keymaps/lucas.c deleted file mode 100644 index 27672e1bbc..0000000000 --- a/keyboard/planck/keymaps/lucas.c +++ /dev/null @@ -1,163 +0,0 @@ -/* -This is the keymap of /u/deepshitgoeshere! -Layer 1 exists so I can have the symbol positions of QWERTY while having my system in german. -The second layer has all the german umlauts I need and with capital and small letters on the -same layer there is no need to press shift+lower. -This keymap is made to work with software implemented QWERTZ. -The "Gaming" layer is mainly customized for CS:GO. -If you have any question about this keymap feel free to shoot me a message on reddit! -*/ - -#include "keymap_common.h" -#include "keymap_extras/keymap_german.h" -#include "backlight.h" -#include "debug.h" - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -[0] = { /* Colemak - * ,-----------------------------------------------------------------------. - * | Esc | q | w | f | p | g | j | l | u | y | ; | - | - * |-----------------------------------------------------------------------| - * | BS | a | r | s | t | d | h | n | e | i | o | ' | - * |-----------------------------------------------------------------------| - * | SFT | z | x | c | v | b | k | m | , | . | / | Ent | - * |-----------------------------------------------------------------------| - * | CTL | GUI | Tab | ALT |Lower| Space |Raise|Left |Down | Up |Right| - * `-----------------------------------------------------------------------' - */ - {KC_ESC, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Z, DE_SCLN, DE_MINS}, - {KC_BSPC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, DE_QUOT}, - {M(0), KC_Y, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, DE_COMM, DE_DOT, DE_SLSH, KC_ENT}, - {KC_LCTL, KC_LGUI, KC_TAB, KC_LALT, F(2), F(3), F(3), F(1), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} -}, -[1] = { /* Symbols - * ,-----------------------------------------------------------------------. - * | | | | | | | | | | | : | | - * |-----------------------------------------------------------------------| - * | | | | | | | | | | | | " | - * |-----------------------------------------------------------------------| - * | | | | | | | | | < | > | ? | | - * |-----------------------------------------------------------------------| - * | | | | | | | | | | | | - * `-----------------------------------------------------------------------' - */ - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, DE_DOT, KC_TRNS}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, DE_DQOT}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, M(1), DE_MORE, DE_QST, KC_TRNS}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS} -}, -[2] = { /* Raise - * ,-----------------------------------------------------------------------. - * | | Ä | | | | | | | Ü | Ö | |Game | - * |-----------------------------------------------------------------------| - * | Del | ä | | ß | | | | | ü | ö | |FVol+| - * |-----------------------------------------------------------------------| - * | | | | | | | | |Stop | Prv | Nxt |FVol-| - * |-----------------------------------------------------------------------| - * |LCTL |LGUI | Tab |LALT |Lower| Space | |Mute |Vol- |Vol+ | P/P | - * `-----------------------------------------------------------------------' - */ - {KC_NO, S(DE_AE), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, S(DE_UE), S(DE_OE), KC_NO, F(4)}, - {KC_DEL, DE_AE, KC_NO, DE_SS, KC_NO, KC_NO, KC_NO, KC_NO, DE_UE, DE_OE, KC_NO, RALT(KC_F12)}, - {KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MSTP, KC_MPRV, KC_MNXT, RALT(KC_F11)}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPLY} -}, -[3] = { /* Lower - * ,-----------------------------------------------------------------------. - * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | + | - * |-----------------------------------------------------------------------| - * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | = | - * |-----------------------------------------------------------------------| - * | | | | | | [ | ] | { | } | € | | \ | Ent | - * |-----------------------------------------------------------------------| - * |LCTL |LGUI | Tab |LALT | | Space |Raise|Home |PgDn |PgUp | End | - * `-----------------------------------------------------------------------' - */ - {DE_TILD, DE_EXLM, DE_AT, DE_HASH, DE_DLR, DE_PERC, DE_CIRC, DE_AMPR, DE_ASTR, DE_LPRN, DE_RPRN, DE_PLUS}, - {DE_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, DE_EQL}, - {KC_NO, KC_NO, KC_NO, DE_PIPE, DE_LBRC, DE_RBRC, DE_LCBR, DE_RCBR, DE_EURO, KC_NO, DE_BSLS, KC_ENT}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_PGUP, KC_END} -}, -[4] = { /* Function - * ,-----------------------------------------------------------------------. - * | F13 | F14 | F15 | F16 | F17 | F18 | F19 | F20 | F21 | F22 | F23 | F24 | - * |-----------------------------------------------------------------------| - * | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | - * |-----------------------------------------------------------------------| - * | | | | | | KP- | KP+ | | | | |Reset| - * |-----------------------------------------------------------------------| - * | |Light|BL DN|BL UP| | | | |Mute |Vol- |Vol+ | P/P | - * `-----------------------------------------------------------------------' - */ - {KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24}, - {KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12}, - {KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_PMNS, KC_PPLS, KC_NO, KC_NO, KC_NO, RESET, KC_NO}, - {KC_NO, BL_TOGG, BL_DEC, BL_INC, FUNC(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPLY} -}, -[5] = { /* Gaming - * ,-----------------------------------------------------------------------. - * | Buy | ESC | q | w | e | r | t | y | u | i | o | p | - * |-----------------------------------------------------------------------| - * | ENT | BS | a | s | d | f | g | h | j | k | l | ; | - * |-----------------------------------------------------------------------| - * | CTL | SFT | z | x | c | v | b | n | m | , | Up | / | - * |-----------------------------------------------------------------------| - * | | | Tab | ALT | | Space |CrJmp| GUI |Left |Down |Right| - * `-----------------------------------------------------------------------' - */ - {MO(6), KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Z, KC_U, KC_I, KC_O, F(4)}, - {KC_ENT, KC_BSPC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, DE_SCLN}, - {KC_LCTL, KC_LSFT, KC_Y, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, DE_DOT, KC_UP, DE_SLSH}, - {KC_NO, KC_NO, KC_TAB, KC_LALT, KC_NO, KC_SPC, KC_SPC, LCTL(KC_SPC), KC_LGUI, KC_LEFT, KC_DOWN, KC_RGHT} -}, -[6] = { /* Gaming - /* CS:GO buy binds - * ,-----------------------------------------------------------------------. - * | | | | | | | | | 7 | 8 | 9 | | - * |-----------------------------------------------------------------------| - * | BS | | | | | | | | 6 | 5 | 4 | End | - * |-----------------------------------------------------------------------| - * | CTL | SFT | | | | | | | 1 | 2 | 3 |Pgdn | - * |-----------------------------------------------------------------------| - * | | | Tab | ALT | | Space |CrJmp| | 0 | KP+ |PEnt | - * `-----------------------------------------------------------------------' - */ - {KC_TRNS, KC_NO, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_P7, KC_P8, KC_P9, KC_NO}, - {KC_BSPC, KC_NO, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_P4, KC_P5, KC_P6, KC_END}, - {KC_LCTL, KC_LSFT, KC_Y, KC_X, KC_C, KC_V, KC_B, KC_K, KC_P1, KC_P2, KC_P3, KC_PGDN}, - {KC_NO, KC_NO, KC_TAB, KC_LALT, KC_NO, KC_SPC, KC_SPC, LCTL(KC_SPC), KC_NO, KC_P0, KC_PDOT, KC_PENT} -}, -}; - -const uint16_t PROGMEM fn_actions[] = { - [1] = ACTION_LAYER_MOMENTARY(2), // to RAISE - [2] = ACTION_LAYER_MOMENTARY(3), // to LOWER - [3] = ACTION_LAYER_TAP_KEY(4,KC_SPC), // to Function - [4] = ACTION_LAYER_TOGGLE(5), // toggle Gaming - [5] = ACTION_MODS_TAP_KEY(KC_LSFT, KC_CAPS), //Shift on press, Caps on tap -}; - -const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) -{ - switch(id) { - case 0: // M(0) - if (record->event.pressed) { - register_code(KC_LSFT); - layer_on(1); - } else { - layer_off(1); - unregister_code(KC_LSFT); - } - break; - case 1: // M(1) - if (record->event.pressed) { - unregister_code(KC_LSFT); - register_code(DE_MORE); - } else { - unregister_code(DE_MORE); - } - break; - } - return MACRO_NONE; - -}; \ No newline at end of file diff --git a/keyboard/planck/keymaps/lucas/lucas.c b/keyboard/planck/keymaps/lucas/lucas.c new file mode 100644 index 0000000000..27672e1bbc --- /dev/null +++ b/keyboard/planck/keymaps/lucas/lucas.c @@ -0,0 +1,163 @@ +/* +This is the keymap of /u/deepshitgoeshere! +Layer 1 exists so I can have the symbol positions of QWERTY while having my system in german. +The second layer has all the german umlauts I need and with capital and small letters on the +same layer there is no need to press shift+lower. +This keymap is made to work with software implemented QWERTZ. +The "Gaming" layer is mainly customized for CS:GO. +If you have any question about this keymap feel free to shoot me a message on reddit! +*/ + +#include "keymap_common.h" +#include "keymap_extras/keymap_german.h" +#include "backlight.h" +#include "debug.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = { /* Colemak + * ,-----------------------------------------------------------------------. + * | Esc | q | w | f | p | g | j | l | u | y | ; | - | + * |-----------------------------------------------------------------------| + * | BS | a | r | s | t | d | h | n | e | i | o | ' | + * |-----------------------------------------------------------------------| + * | SFT | z | x | c | v | b | k | m | , | . | / | Ent | + * |-----------------------------------------------------------------------| + * | CTL | GUI | Tab | ALT |Lower| Space |Raise|Left |Down | Up |Right| + * `-----------------------------------------------------------------------' + */ + {KC_ESC, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Z, DE_SCLN, DE_MINS}, + {KC_BSPC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, DE_QUOT}, + {M(0), KC_Y, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, DE_COMM, DE_DOT, DE_SLSH, KC_ENT}, + {KC_LCTL, KC_LGUI, KC_TAB, KC_LALT, F(2), F(3), F(3), F(1), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} +}, +[1] = { /* Symbols + * ,-----------------------------------------------------------------------. + * | | | | | | | | | | | : | | + * |-----------------------------------------------------------------------| + * | | | | | | | | | | | | " | + * |-----------------------------------------------------------------------| + * | | | | | | | | | < | > | ? | | + * |-----------------------------------------------------------------------| + * | | | | | | | | | | | | + * `-----------------------------------------------------------------------' + */ + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, DE_DOT, KC_TRNS}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, DE_DQOT}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, M(1), DE_MORE, DE_QST, KC_TRNS}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS} +}, +[2] = { /* Raise + * ,-----------------------------------------------------------------------. + * | | Ä | | | | | | | Ü | Ö | |Game | + * |-----------------------------------------------------------------------| + * | Del | ä | | ß | | | | | ü | ö | |FVol+| + * |-----------------------------------------------------------------------| + * | | | | | | | | |Stop | Prv | Nxt |FVol-| + * |-----------------------------------------------------------------------| + * |LCTL |LGUI | Tab |LALT |Lower| Space | |Mute |Vol- |Vol+ | P/P | + * `-----------------------------------------------------------------------' + */ + {KC_NO, S(DE_AE), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, S(DE_UE), S(DE_OE), KC_NO, F(4)}, + {KC_DEL, DE_AE, KC_NO, DE_SS, KC_NO, KC_NO, KC_NO, KC_NO, DE_UE, DE_OE, KC_NO, RALT(KC_F12)}, + {KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MSTP, KC_MPRV, KC_MNXT, RALT(KC_F11)}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPLY} +}, +[3] = { /* Lower + * ,-----------------------------------------------------------------------. + * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | + | + * |-----------------------------------------------------------------------| + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | = | + * |-----------------------------------------------------------------------| + * | | | | | | [ | ] | { | } | € | | \ | Ent | + * |-----------------------------------------------------------------------| + * |LCTL |LGUI | Tab |LALT | | Space |Raise|Home |PgDn |PgUp | End | + * `-----------------------------------------------------------------------' + */ + {DE_TILD, DE_EXLM, DE_AT, DE_HASH, DE_DLR, DE_PERC, DE_CIRC, DE_AMPR, DE_ASTR, DE_LPRN, DE_RPRN, DE_PLUS}, + {DE_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, DE_EQL}, + {KC_NO, KC_NO, KC_NO, DE_PIPE, DE_LBRC, DE_RBRC, DE_LCBR, DE_RCBR, DE_EURO, KC_NO, DE_BSLS, KC_ENT}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_PGUP, KC_END} +}, +[4] = { /* Function + * ,-----------------------------------------------------------------------. + * | F13 | F14 | F15 | F16 | F17 | F18 | F19 | F20 | F21 | F22 | F23 | F24 | + * |-----------------------------------------------------------------------| + * | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | + * |-----------------------------------------------------------------------| + * | | | | | | KP- | KP+ | | | | |Reset| + * |-----------------------------------------------------------------------| + * | |Light|BL DN|BL UP| | | | |Mute |Vol- |Vol+ | P/P | + * `-----------------------------------------------------------------------' + */ + {KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24}, + {KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12}, + {KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_PMNS, KC_PPLS, KC_NO, KC_NO, KC_NO, RESET, KC_NO}, + {KC_NO, BL_TOGG, BL_DEC, BL_INC, FUNC(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPLY} +}, +[5] = { /* Gaming + * ,-----------------------------------------------------------------------. + * | Buy | ESC | q | w | e | r | t | y | u | i | o | p | + * |-----------------------------------------------------------------------| + * | ENT | BS | a | s | d | f | g | h | j | k | l | ; | + * |-----------------------------------------------------------------------| + * | CTL | SFT | z | x | c | v | b | n | m | , | Up | / | + * |-----------------------------------------------------------------------| + * | | | Tab | ALT | | Space |CrJmp| GUI |Left |Down |Right| + * `-----------------------------------------------------------------------' + */ + {MO(6), KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Z, KC_U, KC_I, KC_O, F(4)}, + {KC_ENT, KC_BSPC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, DE_SCLN}, + {KC_LCTL, KC_LSFT, KC_Y, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, DE_DOT, KC_UP, DE_SLSH}, + {KC_NO, KC_NO, KC_TAB, KC_LALT, KC_NO, KC_SPC, KC_SPC, LCTL(KC_SPC), KC_LGUI, KC_LEFT, KC_DOWN, KC_RGHT} +}, +[6] = { /* Gaming + /* CS:GO buy binds + * ,-----------------------------------------------------------------------. + * | | | | | | | | | 7 | 8 | 9 | | + * |-----------------------------------------------------------------------| + * | BS | | | | | | | | 6 | 5 | 4 | End | + * |-----------------------------------------------------------------------| + * | CTL | SFT | | | | | | | 1 | 2 | 3 |Pgdn | + * |-----------------------------------------------------------------------| + * | | | Tab | ALT | | Space |CrJmp| | 0 | KP+ |PEnt | + * `-----------------------------------------------------------------------' + */ + {KC_TRNS, KC_NO, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_P7, KC_P8, KC_P9, KC_NO}, + {KC_BSPC, KC_NO, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_P4, KC_P5, KC_P6, KC_END}, + {KC_LCTL, KC_LSFT, KC_Y, KC_X, KC_C, KC_V, KC_B, KC_K, KC_P1, KC_P2, KC_P3, KC_PGDN}, + {KC_NO, KC_NO, KC_TAB, KC_LALT, KC_NO, KC_SPC, KC_SPC, LCTL(KC_SPC), KC_NO, KC_P0, KC_PDOT, KC_PENT} +}, +}; + +const uint16_t PROGMEM fn_actions[] = { + [1] = ACTION_LAYER_MOMENTARY(2), // to RAISE + [2] = ACTION_LAYER_MOMENTARY(3), // to LOWER + [3] = ACTION_LAYER_TAP_KEY(4,KC_SPC), // to Function + [4] = ACTION_LAYER_TOGGLE(5), // toggle Gaming + [5] = ACTION_MODS_TAP_KEY(KC_LSFT, KC_CAPS), //Shift on press, Caps on tap +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + switch(id) { + case 0: // M(0) + if (record->event.pressed) { + register_code(KC_LSFT); + layer_on(1); + } else { + layer_off(1); + unregister_code(KC_LSFT); + } + break; + case 1: // M(1) + if (record->event.pressed) { + unregister_code(KC_LSFT); + register_code(DE_MORE); + } else { + unregister_code(DE_MORE); + } + break; + } + return MACRO_NONE; + +}; \ No newline at end of file diff --git a/keyboard/planck/keymaps/lukas.c b/keyboard/planck/keymaps/lukas.c deleted file mode 100644 index 6fd95378b1..0000000000 --- a/keyboard/planck/keymaps/lukas.c +++ /dev/null @@ -1,64 +0,0 @@ -#include "planck.h" -#ifdef BACKLIGHT_ENABLE - #include "backlight.h" -#endif - -// This simple keymap is optimized for xmonad users using super as their modifier key. -// M(1) makes it possible to change virtual screens and swap windows between them. - -// Each layer gets a name for readability, which is then used in the keymap matrix below. -#define _QW 0 -#define _LW 1 -#define _RS 2 - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_QW] = { /* Qwerty */ - {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, - {KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, - {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT }, - {KC_LCTL, KC_LALT, KC_LGUI, M(1), MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} - }, - [_RS] = { /* RAISE */ - {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL }, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS} - }, - [_LW] = { /* LOWER */ - {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LBRC, KC_RBRC, KC_TRNS}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS} - } -}; - -const uint16_t PROGMEM fn_actions[] = { - -}; - -const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) -{ - // MACRODOWN only works in this function - switch(id) { - case 0: - if (record->event.pressed) { - register_code(KC_RSFT); - #ifdef BACKLIGHT_ENABLE - backlight_step(); - #endif - } else { - unregister_code(KC_RSFT); - } - break; - case 1: - if (record->event.pressed) { - register_code(KC_LGUI); - layer_on(_RS); - } else { - unregister_code(KC_LGUI); - layer_off(_RS); - } - break; - } - return MACRO_NONE; -}; diff --git a/keyboard/planck/keymaps/lukas/lukas.c b/keyboard/planck/keymaps/lukas/lukas.c new file mode 100644 index 0000000000..6fd95378b1 --- /dev/null +++ b/keyboard/planck/keymaps/lukas/lukas.c @@ -0,0 +1,64 @@ +#include "planck.h" +#ifdef BACKLIGHT_ENABLE + #include "backlight.h" +#endif + +// This simple keymap is optimized for xmonad users using super as their modifier key. +// M(1) makes it possible to change virtual screens and swap windows between them. + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +#define _QW 0 +#define _LW 1 +#define _RS 2 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_QW] = { /* Qwerty */ + {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, + {KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, + {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT }, + {KC_LCTL, KC_LALT, KC_LGUI, M(1), MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} + }, + [_RS] = { /* RAISE */ + {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL }, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS} + }, + [_LW] = { /* LOWER */ + {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LBRC, KC_RBRC, KC_TRNS}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS} + } +}; + +const uint16_t PROGMEM fn_actions[] = { + +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + switch(id) { + case 0: + if (record->event.pressed) { + register_code(KC_RSFT); + #ifdef BACKLIGHT_ENABLE + backlight_step(); + #endif + } else { + unregister_code(KC_RSFT); + } + break; + case 1: + if (record->event.pressed) { + register_code(KC_LGUI); + layer_on(_RS); + } else { + unregister_code(KC_LGUI); + layer_off(_RS); + } + break; + } + return MACRO_NONE; +}; diff --git a/keyboard/planck/keymaps/max.c b/keyboard/planck/keymaps/max.c deleted file mode 100644 index 7fb29bc7a4..0000000000 --- a/keyboard/planck/keymaps/max.c +++ /dev/null @@ -1,49 +0,0 @@ -#include "keymap_common.h" - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -[0] = { /* Qwerty */ - {KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, - {KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, 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_QUOT}, - {KC_LCTL, BL_STEP, KC_LALT, KC_LGUI, FUNC(2), KC_SPC, KC_SPC, FUNC(1), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} - // Space is repeated to accommadate for both spacebar wiring positions -}, -[1] = { /* Colemak */ - {KC_ESC, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC}, - {KC_TAB, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_ENT }, - {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_QUOT}, - {KC_LCTL, BL_STEP, KC_LALT, KC_LGUI, FUNC(2), KC_SPC, KC_SPC, FUNC(1), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} -}, -[2] = { /* RAISE */ - {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, - {KC_TRNS, FUNC(3), FUNC(4), RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_TRNS}, - {KC_TRNS, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_BSLS}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, FUNC(1), KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} -}, -[3] = { /* LOWER */ - {S(KC_GRV), S(KC_1), S(KC_2), S(KC_3), S(KC_4), S(KC_5), S(KC_6), S(KC_7), S(KC_8), S(KC_9), S(KC_0), KC_BSPC}, - {KC_TRNS, FUNC(3), FUNC(4), RESET, KC_TRNS, KC_TRNS, KC_TRNS, S(KC_MINS), S(KC_EQL), S(KC_LBRC), S(KC_RBRC), KC_TRNS}, - {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, S(KC_BSLS)}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, FUNC(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} -} -}; - -const uint16_t PROGMEM fn_actions[] = { - [1] = ACTION_LAYER_MOMENTARY(2), // to RAISE - [2] = ACTION_LAYER_MOMENTARY(3), // to LOWER - - [3] = ACTION_DEFAULT_LAYER_SET(0), - [4] = ACTION_DEFAULT_LAYER_SET(1), - -}; - -const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) -{ - // MACRODOWN only works in this function - switch(id) { - case 0: - return MACRODOWN(T(CM_T), END); - break; - } - return MACRO_NONE; -}; diff --git a/keyboard/planck/keymaps/max/max.c b/keyboard/planck/keymaps/max/max.c new file mode 100644 index 0000000000..7fb29bc7a4 --- /dev/null +++ b/keyboard/planck/keymaps/max/max.c @@ -0,0 +1,49 @@ +#include "keymap_common.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = { /* Qwerty */ + {KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, + {KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, 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_QUOT}, + {KC_LCTL, BL_STEP, KC_LALT, KC_LGUI, FUNC(2), KC_SPC, KC_SPC, FUNC(1), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} + // Space is repeated to accommadate for both spacebar wiring positions +}, +[1] = { /* Colemak */ + {KC_ESC, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC}, + {KC_TAB, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_ENT }, + {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_QUOT}, + {KC_LCTL, BL_STEP, KC_LALT, KC_LGUI, FUNC(2), KC_SPC, KC_SPC, FUNC(1), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} +}, +[2] = { /* RAISE */ + {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, + {KC_TRNS, FUNC(3), FUNC(4), RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_TRNS}, + {KC_TRNS, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_BSLS}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, FUNC(1), KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} +}, +[3] = { /* LOWER */ + {S(KC_GRV), S(KC_1), S(KC_2), S(KC_3), S(KC_4), S(KC_5), S(KC_6), S(KC_7), S(KC_8), S(KC_9), S(KC_0), KC_BSPC}, + {KC_TRNS, FUNC(3), FUNC(4), RESET, KC_TRNS, KC_TRNS, KC_TRNS, S(KC_MINS), S(KC_EQL), S(KC_LBRC), S(KC_RBRC), KC_TRNS}, + {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, S(KC_BSLS)}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, FUNC(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} +} +}; + +const uint16_t PROGMEM fn_actions[] = { + [1] = ACTION_LAYER_MOMENTARY(2), // to RAISE + [2] = ACTION_LAYER_MOMENTARY(3), // to LOWER + + [3] = ACTION_DEFAULT_LAYER_SET(0), + [4] = ACTION_DEFAULT_LAYER_SET(1), + +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + switch(id) { + case 0: + return MACRODOWN(T(CM_T), END); + break; + } + return MACRO_NONE; +}; diff --git a/keyboard/planck/keymaps/mollat.c b/keyboard/planck/keymaps/mollat.c deleted file mode 100644 index e7c71efd47..0000000000 --- a/keyboard/planck/keymaps/mollat.c +++ /dev/null @@ -1,149 +0,0 @@ -// -// This layout is based on the following needs: -// -// should be as close as possible to querty/us-international layout (using international/AltGr as o/s driver) -// added german umlauts at known places from de-layout -// all movement keys should be at known places from vi/bash (eg HJKL for cursor keys) -// Fn layer (at CapsLock place like the Pok3r does) for missing keys -// additional layer for tmux window switching -// -// This is work in Progress! If you have suggestions write me at github.com/mollat/qmk_firmware/ and check -// this fork for updates as I probably won't bother jack with my pull requests frequently. -// - -#include "planck.h" - -#define _QWERTY 0 -#define _HIGH 1 -#define _LOW 2 -#define _FN 3 -#define _TMUX 4 -#define _LCTL 5 -#define _MOUSE 6 -#define __________ KC_NO // just for easy reading - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - -[_QWERTY] = { /* Qwerty */ - { LT(_MOUSE, KC_ESC),KC_Q,KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC }, - { LT(_FN, KC_TAB),KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT }, - { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_T(KC_ENT)}, - { __________, __________, KC_LGUI, KC_LALT, KC_LCTL,LT(_TMUX, KC_SPC),LT(_HIGH, KC_SPC),MO(_LOW),KC_RALT,KC_RGUI, __________, __________ } -}, - -// missing keys regarding to the form factor -// keeping the dot and comma for typing faster IP addresses and (german) float values -// putting the backslash on the slash's place -[_HIGH] = { - { KC_GRV, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_MINS }, - { __________, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQL }, - { __________, __________, __________, __________, __________, __________, __________, __________, KC_COMM, KC_DOT, KC_BSLS, LSFT(KC_BSLS)}, - { __________, __________, __________, __________, __________, __________, KC_TRNS, __________, __________, __________, __________, __________ } -}, - -// classic Fn-Layer triggered with 'CapsLock-key' like on Pok3r -// SPC and ENT are doubled for using repeat (which I switched off, see https://github.com/tmk/tmk_keyboard/issues/287) -// '€' sign is on the '5' position as this is the usual AltGr place on the US Internation layout -// home/end at the 'a' and 'e' position like in bash -// ins at 'i' -// del besides backspace (had no better place for it because of the umlauts) -// pg-down at 'f' (forward in vi), pg-up at 'b' (back in 'vi') -// -[_FN] = { - { __________, __________, __________, KC_END, __________, __________, __________, __________, KC_INS, __________, KC_DEL, RALT(KC_Y) }, - { KC_TRNS, __________, RALT(KC_S), __________, KC_PGDN, RALT(KC_5), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, RALT(KC_P), RALT(KC_Q) }, - { __________, KC_HOME, __________, __________, __________, KC_PGUP, __________, __________, __________, __________, __________, KC_ENT }, - { RESET, __________, __________, __________, __________, KC_SPC, KC_SPC, __________, __________, __________, __________, __________ } -}, - -// function key layer and some shift + (missing key at the small form factor) -[_LOW] = { - { KC_TILD, __________, __________, __________, __________, __________, __________, __________, __________, KC_LCBR, KC_RCBR, KC_UNDS }, - { __________, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_LBRC, KC_RBRC, KC_PLUS }, - { __________, __________, __________, __________, __________, KC_F9, KC_F10, KC_F11, KC_F12, __________, __________, __________ }, - { __________, __________, __________, __________, __________, __________, __________, KC_TRNS, __________, __________, __________, __________ } -}, - -// most macros will switch tmux screens -// two macros are for vi's save/quit at 'w' and 'q' -[_TMUX] = { - { __________, M(14), M(13), __________, __________, __________, __________, __________, __________, __________, M(11), __________ }, - { M(0), M(1), M(2), M(3), M(4), M(5), M(6), M(7), M(8), M(9), __________, __________ }, - { __________, __________, __________, M(12), __________, __________, M(10), __________, __________, __________, __________, __________ }, - { __________, __________, __________, __________, __________, KC_TRNS, __________, __________, __________, __________, __________, __________ } -}, - -// mouse movement can be improved (e.g. can't press hj at once), but I will use this seldom, so I stick with hjkl keys. -[_MOUSE] = { - { KC_TRNS, __________, __________, __________, __________, __________, __________, __________, __________, __________, __________, __________ }, - { __________, __________, __________, __________, KC_WH_D, __________, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, __________, __________ }, - { __________, __________, __________, __________, __________, KC_WH_U, __________, __________, __________, __________, __________, __________ }, - { __________, __________, __________, KC_ACL2, KC_ACL1, KC_ACL0, KC_MS_BTN1, KC_MS_BTN3, KC_MS_BTN2, __________, __________, __________ } -} -}; - -const uint16_t PROGMEM fn_actions[] = { - [_LCTL] = ACTION_MODS_TAP_KEY(KC_LCTL, M(12)), // does not work -}; - -const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) -{ - switch(id) { - case 0: - return MACRODOWN( DOWN(KC_LCTL), TYPE(KC_B), UP(KC_LCTL), TYPE(KC_0), END ); - break; - case 1: - return MACRODOWN( DOWN(KC_LCTL), TYPE(KC_B), UP(KC_LCTL), TYPE(KC_1), END ); - break; - case 2: - return MACRODOWN( DOWN(KC_LCTL), TYPE(KC_B), UP(KC_LCTL), TYPE(KC_2), END ); - break; - case 3: - return MACRODOWN( DOWN(KC_LCTL), TYPE(KC_B), UP(KC_LCTL), TYPE(KC_3), END ); - break; - case 4: - return MACRODOWN( DOWN(KC_LCTL), TYPE(KC_B), UP(KC_LCTL), TYPE(KC_4), END ); - break; - case 5: - return MACRODOWN( DOWN(KC_LCTL), TYPE(KC_B), UP(KC_LCTL), TYPE(KC_5), END ); - break; - case 6: - return MACRODOWN( DOWN(KC_LCTL), TYPE(KC_B), UP(KC_LCTL), TYPE(KC_6), END ); - break; - case 7: - return MACRODOWN( DOWN(KC_LCTL), TYPE(KC_B), UP(KC_LCTL), TYPE(KC_7), END ); - break; - case 8: - return MACRODOWN( DOWN(KC_LCTL), TYPE(KC_B), UP(KC_LCTL), TYPE(KC_8), END ); - break; - case 9: - // tmux last window - return MACRODOWN( DOWN(KC_LCTL), TYPE(KC_B), UP(KC_LCTL), TYPE(KC_L), END ); - break; - // tmux next window - case 10: - return MACRODOWN( DOWN(KC_LCTL), TYPE(KC_B), UP(KC_LCTL), TYPE(KC_N), END ); - break; - // tmux previous window - case 11: - return MACRODOWN( DOWN(KC_LCTL), TYPE(KC_B), UP(KC_LCTL), TYPE(KC_P), END ); - break; - // tmux new window - case 12: - return MACRODOWN( DOWN(KC_LCTL), TYPE(KC_B), UP(KC_LCTL), TYPE(KC_C), END ); - break; - case 13: - // vi save document - return MACRODOWN( TYPE(KC_ESC), DOWN(KC_LSFT), TYPE(KC_SCLN), UP(KC_LSFT), TYPE(KC_W), TYPE(KC_ENT), END ); - break; - case 14: - // vi quit - return MACRODOWN( TYPE(KC_ESC), DOWN(KC_LSFT), TYPE(KC_SCLN), UP(KC_LSFT), TYPE(KC_Q), TYPE(KC_ENT), END ); - break; - // tmux press ctrl-b - case 15: - return MACRODOWN( DOWN(KC_LCTL), TYPE(KC_B), UP(KC_LCTL), END ); - break; - } - return MACRO_NONE; -}; diff --git a/keyboard/planck/keymaps/mollat/mollat.c b/keyboard/planck/keymaps/mollat/mollat.c new file mode 100644 index 0000000000..e7c71efd47 --- /dev/null +++ b/keyboard/planck/keymaps/mollat/mollat.c @@ -0,0 +1,149 @@ +// +// This layout is based on the following needs: +// +// should be as close as possible to querty/us-international layout (using international/AltGr as o/s driver) +// added german umlauts at known places from de-layout +// all movement keys should be at known places from vi/bash (eg HJKL for cursor keys) +// Fn layer (at CapsLock place like the Pok3r does) for missing keys +// additional layer for tmux window switching +// +// This is work in Progress! If you have suggestions write me at github.com/mollat/qmk_firmware/ and check +// this fork for updates as I probably won't bother jack with my pull requests frequently. +// + +#include "planck.h" + +#define _QWERTY 0 +#define _HIGH 1 +#define _LOW 2 +#define _FN 3 +#define _TMUX 4 +#define _LCTL 5 +#define _MOUSE 6 +#define __________ KC_NO // just for easy reading + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +[_QWERTY] = { /* Qwerty */ + { LT(_MOUSE, KC_ESC),KC_Q,KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC }, + { LT(_FN, KC_TAB),KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT }, + { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_T(KC_ENT)}, + { __________, __________, KC_LGUI, KC_LALT, KC_LCTL,LT(_TMUX, KC_SPC),LT(_HIGH, KC_SPC),MO(_LOW),KC_RALT,KC_RGUI, __________, __________ } +}, + +// missing keys regarding to the form factor +// keeping the dot and comma for typing faster IP addresses and (german) float values +// putting the backslash on the slash's place +[_HIGH] = { + { KC_GRV, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_MINS }, + { __________, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQL }, + { __________, __________, __________, __________, __________, __________, __________, __________, KC_COMM, KC_DOT, KC_BSLS, LSFT(KC_BSLS)}, + { __________, __________, __________, __________, __________, __________, KC_TRNS, __________, __________, __________, __________, __________ } +}, + +// classic Fn-Layer triggered with 'CapsLock-key' like on Pok3r +// SPC and ENT are doubled for using repeat (which I switched off, see https://github.com/tmk/tmk_keyboard/issues/287) +// '€' sign is on the '5' position as this is the usual AltGr place on the US Internation layout +// home/end at the 'a' and 'e' position like in bash +// ins at 'i' +// del besides backspace (had no better place for it because of the umlauts) +// pg-down at 'f' (forward in vi), pg-up at 'b' (back in 'vi') +// +[_FN] = { + { __________, __________, __________, KC_END, __________, __________, __________, __________, KC_INS, __________, KC_DEL, RALT(KC_Y) }, + { KC_TRNS, __________, RALT(KC_S), __________, KC_PGDN, RALT(KC_5), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, RALT(KC_P), RALT(KC_Q) }, + { __________, KC_HOME, __________, __________, __________, KC_PGUP, __________, __________, __________, __________, __________, KC_ENT }, + { RESET, __________, __________, __________, __________, KC_SPC, KC_SPC, __________, __________, __________, __________, __________ } +}, + +// function key layer and some shift + (missing key at the small form factor) +[_LOW] = { + { KC_TILD, __________, __________, __________, __________, __________, __________, __________, __________, KC_LCBR, KC_RCBR, KC_UNDS }, + { __________, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_LBRC, KC_RBRC, KC_PLUS }, + { __________, __________, __________, __________, __________, KC_F9, KC_F10, KC_F11, KC_F12, __________, __________, __________ }, + { __________, __________, __________, __________, __________, __________, __________, KC_TRNS, __________, __________, __________, __________ } +}, + +// most macros will switch tmux screens +// two macros are for vi's save/quit at 'w' and 'q' +[_TMUX] = { + { __________, M(14), M(13), __________, __________, __________, __________, __________, __________, __________, M(11), __________ }, + { M(0), M(1), M(2), M(3), M(4), M(5), M(6), M(7), M(8), M(9), __________, __________ }, + { __________, __________, __________, M(12), __________, __________, M(10), __________, __________, __________, __________, __________ }, + { __________, __________, __________, __________, __________, KC_TRNS, __________, __________, __________, __________, __________, __________ } +}, + +// mouse movement can be improved (e.g. can't press hj at once), but I will use this seldom, so I stick with hjkl keys. +[_MOUSE] = { + { KC_TRNS, __________, __________, __________, __________, __________, __________, __________, __________, __________, __________, __________ }, + { __________, __________, __________, __________, KC_WH_D, __________, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, __________, __________ }, + { __________, __________, __________, __________, __________, KC_WH_U, __________, __________, __________, __________, __________, __________ }, + { __________, __________, __________, KC_ACL2, KC_ACL1, KC_ACL0, KC_MS_BTN1, KC_MS_BTN3, KC_MS_BTN2, __________, __________, __________ } +} +}; + +const uint16_t PROGMEM fn_actions[] = { + [_LCTL] = ACTION_MODS_TAP_KEY(KC_LCTL, M(12)), // does not work +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + switch(id) { + case 0: + return MACRODOWN( DOWN(KC_LCTL), TYPE(KC_B), UP(KC_LCTL), TYPE(KC_0), END ); + break; + case 1: + return MACRODOWN( DOWN(KC_LCTL), TYPE(KC_B), UP(KC_LCTL), TYPE(KC_1), END ); + break; + case 2: + return MACRODOWN( DOWN(KC_LCTL), TYPE(KC_B), UP(KC_LCTL), TYPE(KC_2), END ); + break; + case 3: + return MACRODOWN( DOWN(KC_LCTL), TYPE(KC_B), UP(KC_LCTL), TYPE(KC_3), END ); + break; + case 4: + return MACRODOWN( DOWN(KC_LCTL), TYPE(KC_B), UP(KC_LCTL), TYPE(KC_4), END ); + break; + case 5: + return MACRODOWN( DOWN(KC_LCTL), TYPE(KC_B), UP(KC_LCTL), TYPE(KC_5), END ); + break; + case 6: + return MACRODOWN( DOWN(KC_LCTL), TYPE(KC_B), UP(KC_LCTL), TYPE(KC_6), END ); + break; + case 7: + return MACRODOWN( DOWN(KC_LCTL), TYPE(KC_B), UP(KC_LCTL), TYPE(KC_7), END ); + break; + case 8: + return MACRODOWN( DOWN(KC_LCTL), TYPE(KC_B), UP(KC_LCTL), TYPE(KC_8), END ); + break; + case 9: + // tmux last window + return MACRODOWN( DOWN(KC_LCTL), TYPE(KC_B), UP(KC_LCTL), TYPE(KC_L), END ); + break; + // tmux next window + case 10: + return MACRODOWN( DOWN(KC_LCTL), TYPE(KC_B), UP(KC_LCTL), TYPE(KC_N), END ); + break; + // tmux previous window + case 11: + return MACRODOWN( DOWN(KC_LCTL), TYPE(KC_B), UP(KC_LCTL), TYPE(KC_P), END ); + break; + // tmux new window + case 12: + return MACRODOWN( DOWN(KC_LCTL), TYPE(KC_B), UP(KC_LCTL), TYPE(KC_C), END ); + break; + case 13: + // vi save document + return MACRODOWN( TYPE(KC_ESC), DOWN(KC_LSFT), TYPE(KC_SCLN), UP(KC_LSFT), TYPE(KC_W), TYPE(KC_ENT), END ); + break; + case 14: + // vi quit + return MACRODOWN( TYPE(KC_ESC), DOWN(KC_LSFT), TYPE(KC_SCLN), UP(KC_LSFT), TYPE(KC_Q), TYPE(KC_ENT), END ); + break; + // tmux press ctrl-b + case 15: + return MACRODOWN( DOWN(KC_LCTL), TYPE(KC_B), UP(KC_LCTL), END ); + break; + } + return MACRO_NONE; +}; diff --git a/keyboard/planck/keymaps/monkey.c b/keyboard/planck/keymaps/monkey.c deleted file mode 100644 index 21a2c146ab..0000000000 --- a/keyboard/planck/keymaps/monkey.c +++ /dev/null @@ -1,76 +0,0 @@ -#include "keymap_common.h" -#include "backlight.h" -#include "debug.h" - -#define COLEMAK_LAYER 0 -#define QWERTY_LAYER 1 -#define LOWER_LAYER 2 -#define UPPER_LAYER 3 -#define SPACEFN_LAYER 4 -#define TENKEY_LAYER 5 - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -[COLEMAK_LAYER] = { /* Colemak */ - {KC_TAB, UNI(0x1961), KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC}, - {KC_LCTL, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT}, - {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT}, - {FUNC(5), KC_ESC, KC_LGUI, KC_LALT, FUNC(1), FUNC(6), FUNC(6), FUNC(2), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} -}, -[QWERTY_LAYER] = { /* Qwerty */ - {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, - {KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, - {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT}, - {FUNC(5), KC_ESC, KC_LGUI, KC_LALT, FUNC(1), FUNC(6), FUNC(6), FUNC(2), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} -}, -[LOWER_LAYER] = { /* LOWER */ - {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DELETE}, - {KC_TRNS, FUNC(3), FUNC(4), RESET, DEBUG, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, - {KC_TRNS, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_PGUP, KC_END} -}, -[UPPER_LAYER] = { /* RAISE */ - {S(KC_GRV), S(KC_1), S(KC_2), S(KC_3), S(KC_4), S(KC_5), S(KC_6), S(KC_7), S(KC_8), S(KC_9), S(KC_0), KC_DELETE}, - {KC_CALC, FUNC(3), FUNC(4), RESET, DEBUG, KC_TRNS, KC_TRNS, S(KC_MINS), S(KC_EQL), S(KC_LBRC), S(KC_RBRC), S(KC_BSLS)}, - {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} -}, -[SPACEFN_LAYER] = { /* SpaceFN */ - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_UP, KC_END, KC_TRNS, KC_TRNS}, - {KC_TRNS, FUNC(3), FUNC(4), KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS}, - {KC_TRNS, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS} -}, -[TENKEY_LAYER] = { /* TENKEY */ - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_KP_7, KC_KP_8, KC_KP_9, KC_PMNS, KC_BSPC}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_KP_4, KC_KP_5, KC_KP_6, KC_PPLS, KC_NLCK}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_KP_1, KC_KP_2, KC_KP_3, KC_PDOT, KC_ENT}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_SPC, KC_SPC, KC_KP_0, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS} -} -}; - -const uint16_t PROGMEM fn_actions[] = { - [1] = ACTION_LAYER_TAP_KEY(LOWER_LAYER, KC_BSPC), // Tap for backspace, hold for LOWER - [2] = ACTION_LAYER_TAP_KEY(UPPER_LAYER, KC_ENT), // Tap for enter, hold for RAISE - - [3] = ACTION_DEFAULT_LAYER_SET(COLEMAK_LAYER), - [4] = ACTION_DEFAULT_LAYER_SET(QWERTY_LAYER), - [5] = ACTION_LAYER_TOGGLE(TENKEY_LAYER), - - [6] = ACTION_LAYER_TAP_KEY(SPACEFN_LAYER, KC_SPC), // Tap for space, hold for SpaceFN -}; - -const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) -{ - // MACRODOWN only works in this function - switch(id) { - case 0: - if (record->event.pressed) { - register_code(KC_RSFT); - backlight_step(); - } else { - unregister_code(KC_RSFT); - } - break; - } - return MACRO_NONE; -}; \ No newline at end of file diff --git a/keyboard/planck/keymaps/monkey/monkey.c b/keyboard/planck/keymaps/monkey/monkey.c new file mode 100644 index 0000000000..21a2c146ab --- /dev/null +++ b/keyboard/planck/keymaps/monkey/monkey.c @@ -0,0 +1,76 @@ +#include "keymap_common.h" +#include "backlight.h" +#include "debug.h" + +#define COLEMAK_LAYER 0 +#define QWERTY_LAYER 1 +#define LOWER_LAYER 2 +#define UPPER_LAYER 3 +#define SPACEFN_LAYER 4 +#define TENKEY_LAYER 5 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[COLEMAK_LAYER] = { /* Colemak */ + {KC_TAB, UNI(0x1961), KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC}, + {KC_LCTL, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT}, + {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT}, + {FUNC(5), KC_ESC, KC_LGUI, KC_LALT, FUNC(1), FUNC(6), FUNC(6), FUNC(2), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} +}, +[QWERTY_LAYER] = { /* Qwerty */ + {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, + {KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, + {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT}, + {FUNC(5), KC_ESC, KC_LGUI, KC_LALT, FUNC(1), FUNC(6), FUNC(6), FUNC(2), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} +}, +[LOWER_LAYER] = { /* LOWER */ + {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DELETE}, + {KC_TRNS, FUNC(3), FUNC(4), RESET, DEBUG, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, + {KC_TRNS, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_PGUP, KC_END} +}, +[UPPER_LAYER] = { /* RAISE */ + {S(KC_GRV), S(KC_1), S(KC_2), S(KC_3), S(KC_4), S(KC_5), S(KC_6), S(KC_7), S(KC_8), S(KC_9), S(KC_0), KC_DELETE}, + {KC_CALC, FUNC(3), FUNC(4), RESET, DEBUG, KC_TRNS, KC_TRNS, S(KC_MINS), S(KC_EQL), S(KC_LBRC), S(KC_RBRC), S(KC_BSLS)}, + {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} +}, +[SPACEFN_LAYER] = { /* SpaceFN */ + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_UP, KC_END, KC_TRNS, KC_TRNS}, + {KC_TRNS, FUNC(3), FUNC(4), KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS}, + {KC_TRNS, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS} +}, +[TENKEY_LAYER] = { /* TENKEY */ + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_KP_7, KC_KP_8, KC_KP_9, KC_PMNS, KC_BSPC}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_KP_4, KC_KP_5, KC_KP_6, KC_PPLS, KC_NLCK}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_KP_1, KC_KP_2, KC_KP_3, KC_PDOT, KC_ENT}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_SPC, KC_SPC, KC_KP_0, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS} +} +}; + +const uint16_t PROGMEM fn_actions[] = { + [1] = ACTION_LAYER_TAP_KEY(LOWER_LAYER, KC_BSPC), // Tap for backspace, hold for LOWER + [2] = ACTION_LAYER_TAP_KEY(UPPER_LAYER, KC_ENT), // Tap for enter, hold for RAISE + + [3] = ACTION_DEFAULT_LAYER_SET(COLEMAK_LAYER), + [4] = ACTION_DEFAULT_LAYER_SET(QWERTY_LAYER), + [5] = ACTION_LAYER_TOGGLE(TENKEY_LAYER), + + [6] = ACTION_LAYER_TAP_KEY(SPACEFN_LAYER, KC_SPC), // Tap for space, hold for SpaceFN +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + switch(id) { + case 0: + if (record->event.pressed) { + register_code(KC_RSFT); + backlight_step(); + } else { + unregister_code(KC_RSFT); + } + break; + } + return MACRO_NONE; +}; \ No newline at end of file diff --git a/keyboard/planck/keymaps/nico.c b/keyboard/planck/keymaps/nico.c deleted file mode 100644 index e81fd80a44..0000000000 --- a/keyboard/planck/keymaps/nico.c +++ /dev/null @@ -1,69 +0,0 @@ -// This is the canonical layout file for the Quantum project. If you want to add another keyboard, -// this is the style you want to emulate. - -#include "planck.h" -#include "backlight.h" - -// Each layer gets a name for readability, which is then used in the keymap matrix below. -// The underscores don't mean anything - you can have a layer called STUFF or any other name. -// Layer names don't all need to be of the same length, obviously, and you can also skip them -// entirely and just use numbers. -#define _QW 0 -#define _CM 1 -#define _DV 2 -#define _LW 3 -#define _RS 4 - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -[_QW] = { /* Qwerty */ - {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, - {KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, - {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT }, - {M(0), KC_ESC, KC_LALT, KC_LGUI, F(1), KC_SPC, KC_SPC, F(2), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} -}, -[_CM] = { /* Colemak */ - {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC}, - {KC_LCTL, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT}, - {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT }, - {M(0), KC_ESC, KC_LALT, KC_LGUI, F(1), KC_SPC, KC_SPC, F(2), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} -}, -[_DV] = { /* Dvorak */ - {KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC}, - {KC_LCTL, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH}, - {KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT }, - {M(0), KC_ESC, KC_LALT, KC_LGUI, F(1), KC_SPC, KC_SPC, F(2), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} -}, -[_RS] = { /* RAISE */ - {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, - {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, - {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_CM), DF(_DV), RESET, KC_TRNS}, - {M(0), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F14, KC_F15, KC_TRNS, KC_MFFD, KC_VOLD, KC_VOLU, KC_MPLY} -}, -[_LW] = { /* LOWER */ - {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC}, - {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, - {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_CM), DF(_DV), RESET, KC_TRNS}, - {M(0), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F14, KC_F15, KC_TRNS, KC_MFFD, KC_VOLD, KC_VOLU, KC_MPLY} -} -}; - -const uint16_t PROGMEM fn_actions[] = { - [1] = ACTION_LAYER_TAP_KEY(MO(_LW), KC_BSPC), // Tap for backspace, hold for LOWER - [2] = ACTION_LAYER_TAP_KEY(MO(_RS), KC_ENT), // Tap for enter, hold for RAISE -}; - -const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) -{ - // MACRODOWN only works in this function - switch(id) { - case 0: - if (record->event.pressed) { - register_code(KC_RSFT); - backlight_step(); - } else { - unregister_code(KC_RSFT); - } - break; - } - return MACRO_NONE; -}; diff --git a/keyboard/planck/keymaps/nico/nico.c b/keyboard/planck/keymaps/nico/nico.c new file mode 100644 index 0000000000..e81fd80a44 --- /dev/null +++ b/keyboard/planck/keymaps/nico/nico.c @@ -0,0 +1,69 @@ +// This is the canonical layout file for the Quantum project. If you want to add another keyboard, +// this is the style you want to emulate. + +#include "planck.h" +#include "backlight.h" + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +#define _QW 0 +#define _CM 1 +#define _DV 2 +#define _LW 3 +#define _RS 4 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[_QW] = { /* Qwerty */ + {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, + {KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, + {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT }, + {M(0), KC_ESC, KC_LALT, KC_LGUI, F(1), KC_SPC, KC_SPC, F(2), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} +}, +[_CM] = { /* Colemak */ + {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC}, + {KC_LCTL, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT}, + {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT }, + {M(0), KC_ESC, KC_LALT, KC_LGUI, F(1), KC_SPC, KC_SPC, F(2), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} +}, +[_DV] = { /* Dvorak */ + {KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC}, + {KC_LCTL, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH}, + {KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT }, + {M(0), KC_ESC, KC_LALT, KC_LGUI, F(1), KC_SPC, KC_SPC, F(2), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} +}, +[_RS] = { /* RAISE */ + {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, + {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, + {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_CM), DF(_DV), RESET, KC_TRNS}, + {M(0), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F14, KC_F15, KC_TRNS, KC_MFFD, KC_VOLD, KC_VOLU, KC_MPLY} +}, +[_LW] = { /* LOWER */ + {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC}, + {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, + {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_CM), DF(_DV), RESET, KC_TRNS}, + {M(0), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F14, KC_F15, KC_TRNS, KC_MFFD, KC_VOLD, KC_VOLU, KC_MPLY} +} +}; + +const uint16_t PROGMEM fn_actions[] = { + [1] = ACTION_LAYER_TAP_KEY(MO(_LW), KC_BSPC), // Tap for backspace, hold for LOWER + [2] = ACTION_LAYER_TAP_KEY(MO(_RS), KC_ENT), // Tap for enter, hold for RAISE +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + switch(id) { + case 0: + if (record->event.pressed) { + register_code(KC_RSFT); + backlight_step(); + } else { + unregister_code(KC_RSFT); + } + break; + } + return MACRO_NONE; +}; diff --git a/keyboard/planck/keymaps/numpad.c b/keyboard/planck/keymaps/numpad.c deleted file mode 100644 index 7de4372ab0..0000000000 --- a/keyboard/planck/keymaps/numpad.c +++ /dev/null @@ -1,26 +0,0 @@ -#include "keymap_common.h" - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -[0] = { /* Qwerty */ - {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_KP_MINUS, KC_KP_PLUS, KC_KP_PLUS, KC_KP_ENTER, KC_KP_ENTER}, - {KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_KP_ASTERISK, KC_KP_9, KC_KP_6, KC_KP_3, KC_KP_DOT}, - {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_KP_SLASH, KC_KP_8, KC_KP_5, KC_KP_2, KC_KP_0}, - {BL_STEP, KC_LCTL, KC_LALT, KC_LGUI, KC_NO, KC_SPC, KC_SPC, KC_NUMLOCK, KC_KP_7, KC_KP_4, KC_KP_1, KC_KP_0} - // Space is repeated to accommadate for both spacebar wiring positions -} -}; - -const uint16_t PROGMEM fn_actions[] = { - -}; - -const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) -{ - // MACRODOWN only works in this function - switch(id) { - case 0: - return MACRODOWN(T(CM_T), END); - break; - } - return MACRO_NONE; -}; \ No newline at end of file diff --git a/keyboard/planck/keymaps/numpad/numpad.c b/keyboard/planck/keymaps/numpad/numpad.c new file mode 100644 index 0000000000..7de4372ab0 --- /dev/null +++ b/keyboard/planck/keymaps/numpad/numpad.c @@ -0,0 +1,26 @@ +#include "keymap_common.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = { /* Qwerty */ + {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_KP_MINUS, KC_KP_PLUS, KC_KP_PLUS, KC_KP_ENTER, KC_KP_ENTER}, + {KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_KP_ASTERISK, KC_KP_9, KC_KP_6, KC_KP_3, KC_KP_DOT}, + {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_KP_SLASH, KC_KP_8, KC_KP_5, KC_KP_2, KC_KP_0}, + {BL_STEP, KC_LCTL, KC_LALT, KC_LGUI, KC_NO, KC_SPC, KC_SPC, KC_NUMLOCK, KC_KP_7, KC_KP_4, KC_KP_1, KC_KP_0} + // Space is repeated to accommadate for both spacebar wiring positions +} +}; + +const uint16_t PROGMEM fn_actions[] = { + +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + switch(id) { + case 0: + return MACRODOWN(T(CM_T), END); + break; + } + return MACRO_NONE; +}; \ No newline at end of file diff --git a/keyboard/planck/keymaps/tak3over.c b/keyboard/planck/keymaps/tak3over.c deleted file mode 100644 index 7d8243dfac..0000000000 --- a/keyboard/planck/keymaps/tak3over.c +++ /dev/null @@ -1,130 +0,0 @@ -// This is the canonical layout file for the Quantum project. If you want to add another keyboard, -// this is the style you want to emulate. -// -//Dropped the Dvorak layer and added two my layer buttons. Both Raise and lower can be accessed from either side now. - -#include "planck.h" -#ifdef BACKLIGHT_ENABLE - #include "backlight.h" -#endif - -// Each layer gets a name for readability, which is then used in the keymap matrix below. -// The underscores don't mean anything - you can have a layer called STUFF or any other name. -// Layer names don't all need to be of the same length, obviously, and you can also skip them -// entirely and just use numbers. -#define _QW 0 -#define _CM 1 -#define _LW 2 -#define _RS 3 -#define _FN 4 - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - -/* Qwerty - * ,-----------------------------------------------------------------------------------. - * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp | - * |------+------+------+------+------+-------------+------+------+------+------+------| - * | Esc | A | S | D | F | G | H | J | K | L | ; | " | - * |------+------+------+------+------+------|------+------+------+------+------+------| - * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | Ctrl | Alt | GUI |Func |Lower | Space |Raise | Left | Down | Up |Right | - * `-----------------------------------------------------------------------------------' - */ -[_QW] = { - {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, - {KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, - {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT }, - {KC_LCTL, KC_LALT, KC_LGUI, MO(_FN), MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} -}, -/* Colemak - * ,-----------------------------------------------------------------------------------. - * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp | - * |------+------+------+------+------+-------------+------+------+------+------+------| - * | Esc | A | R | S | T | D | H | N | E | I | O | " | - * |------+------+------+------+------+------|------+------+------+------+------+------| - * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | Ctrl | Alt | GUI |Func |Lower | Space |Raise | Left | Down | Up |Right - * `-----------------------------------------------------------------------------------' - */ -[_CM] = { - {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC}, - {KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT}, - {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT }, - {KC_LCTL, KC_LALT, KC_LGUI, MO(_FN), MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} -}, -/* Raise - * ,-----------------------------------------------------------------------------------. - * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp - * |------+------+------+------+------+-------------+------+------+------+------+------| - * | Esc | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | | | - * |------+------+------+------+------+------|------+------+------+------+------+------| - * | Shift| F7 | F8 | F9 | F10 | F11 | F12 | _ | + | { | } |Enter | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | Ctrl | Alt | GUI |Func |Lower | Space |Raise | Left | Down | Up |Right | - * `-----------------------------------------------------------------------------------' - */ -[_RS] = { - {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, - {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_PIPE}, - {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_TRNS}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS} -}, -/* Lower - * ,-----------------------------------------------------------------------------------. - * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp | - * |------+------+------+------+------+-------------+------+------+------+------+------| - * | Esc | Reset| Ins | Home | PGUP |Colemk| Left | - | = | [ | ] | \ | - * |------+------+------+------+------+------|------+------+------+------+------+------| - * | Shift| Brite| Del | End | PGDN |Qwerty| Del | _ | + | { | } |Enter | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | Ctrl | Alt | GUI |Func |Lower | Space |Raise | Left | Down | Up |Right | - * `-----------------------------------------------------------------------------------' - */ -[_LW] = { - {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC}, - {KC_TRNS, RESET, KC_INS, KC_HOME, KC_PGUP, DF(_CM), KC_LEFT, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, - {KC_TRNS, M(0), KC_DEL, KC_END, KC_PGDN, DF(_QW), KC_DEL, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_TRNS}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS} -}, -/* Function - * ,-----------------------------------------------------------------------------------. - * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | - * |------+------+------+------+------+-------------+------+------+------+------+------| - * | Esc | GUI | X | C | V | Z | Left | Down | Up |Right | Del | \ | - * |------+------+------+------+------+------|------+------+------+------+------+------| - * |Shift | Ctrl | X | C | V | Z | Next | Mute | Vol- | Vol+ | Play |Enter | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | Ctrl | Alt | GUI |Func |Lower | Space |Raise | Left | Down | Up |Right | - * `-----------------------------------------------------------------------------------' - */ -[_FN] = { - {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, - {KC_TRNS, KC_RGUI, KC_X, KC_C, KC_V, KC_Z, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_DEL, KC_BSLS}, - {KC_TRNS, KC_RCTL, KC_X, KC_C, KC_V, KC_Z, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPLY, KC_TRNS}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS} -} -}; - -const uint16_t PROGMEM fn_actions[] = { - -}; - -const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) -{ - // MACRODOWN only works in this function - switch(id) { - case 0: - if (record->event.pressed) { - register_code(KC_RSFT); - #ifdef BACKLIGHT_ENABLE - backlight_step(); - #endif - } else { - unregister_code(KC_RSFT); - } - break; - } - return MACRO_NONE; -}; diff --git a/keyboard/planck/keymaps/tak3over/tak3over.c b/keyboard/planck/keymaps/tak3over/tak3over.c new file mode 100644 index 0000000000..7d8243dfac --- /dev/null +++ b/keyboard/planck/keymaps/tak3over/tak3over.c @@ -0,0 +1,130 @@ +// This is the canonical layout file for the Quantum project. If you want to add another keyboard, +// this is the style you want to emulate. +// +//Dropped the Dvorak layer and added two my layer buttons. Both Raise and lower can be accessed from either side now. + +#include "planck.h" +#ifdef BACKLIGHT_ENABLE + #include "backlight.h" +#endif + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +#define _QW 0 +#define _CM 1 +#define _LW 2 +#define _RS 3 +#define _FN 4 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* Qwerty + * ,-----------------------------------------------------------------------------------. + * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | S | D | F | G | H | J | K | L | ; | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Ctrl | Alt | GUI |Func |Lower | Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_QW] = { + {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, + {KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, + {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT }, + {KC_LCTL, KC_LALT, KC_LGUI, MO(_FN), MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} +}, +/* Colemak + * ,-----------------------------------------------------------------------------------. + * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | R | S | T | D | H | N | E | I | O | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Ctrl | Alt | GUI |Func |Lower | Space |Raise | Left | Down | Up |Right + * `-----------------------------------------------------------------------------------' + */ +[_CM] = { + {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC}, + {KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT}, + {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT }, + {KC_LCTL, KC_LALT, KC_LGUI, MO(_FN), MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} +}, +/* Raise + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| F7 | F8 | F9 | F10 | F11 | F12 | _ | + | { | } |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Ctrl | Alt | GUI |Func |Lower | Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_RS] = { + {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, + {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_PIPE}, + {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_TRNS}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS} +}, +/* Lower + * ,-----------------------------------------------------------------------------------. + * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | Reset| Ins | Home | PGUP |Colemk| Left | - | = | [ | ] | \ | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Brite| Del | End | PGDN |Qwerty| Del | _ | + | { | } |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Ctrl | Alt | GUI |Func |Lower | Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_LW] = { + {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC}, + {KC_TRNS, RESET, KC_INS, KC_HOME, KC_PGUP, DF(_CM), KC_LEFT, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, + {KC_TRNS, M(0), KC_DEL, KC_END, KC_PGDN, DF(_QW), KC_DEL, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_TRNS}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS} +}, +/* Function + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | GUI | X | C | V | Z | Left | Down | Up |Right | Del | \ | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * |Shift | Ctrl | X | C | V | Z | Next | Mute | Vol- | Vol+ | Play |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Ctrl | Alt | GUI |Func |Lower | Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_FN] = { + {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, + {KC_TRNS, KC_RGUI, KC_X, KC_C, KC_V, KC_Z, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_DEL, KC_BSLS}, + {KC_TRNS, KC_RCTL, KC_X, KC_C, KC_V, KC_Z, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPLY, KC_TRNS}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS} +} +}; + +const uint16_t PROGMEM fn_actions[] = { + +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + switch(id) { + case 0: + if (record->event.pressed) { + register_code(KC_RSFT); + #ifdef BACKLIGHT_ENABLE + backlight_step(); + #endif + } else { + unregister_code(KC_RSFT); + } + break; + } + return MACRO_NONE; +}; -- cgit v1.2.1 From 2425fd295af80a8e8c4f962085bca4a61d2a00db Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Mon, 16 May 2016 23:08:16 -0400 Subject: fixes default planck keymap --- keyboard/planck/keymaps/default/keymap.c | 1 - 1 file changed, 1 deletion(-) diff --git a/keyboard/planck/keymaps/default/keymap.c b/keyboard/planck/keymaps/default/keymap.c index 79bf62436a..43f570532b 100644 --- a/keyboard/planck/keymaps/default/keymap.c +++ b/keyboard/planck/keymaps/default/keymap.c @@ -261,7 +261,6 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) layer_off(_RAISE); layer_off(_LOWER); layer_off(_ADJUST); - layer_off(_MUSIC); layer_on(_PLOVER); if (!eeconfig_is_enabled()) { eeconfig_init(); -- cgit v1.2.1 From fe9b1482fd34a1c07afca0433e4bf5eb6229cf22 Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Tue, 17 May 2016 22:17:23 -0400 Subject: adds KC_NUBS, KC_NUHS and shifted versions to default keymaps --- keyboard/planck/keymaps/default/keymap.c | 8 ++++---- keyboard/planck/keymaps/experimental/keymap.c | 8 ++++---- keyboard/preonic/keymaps/default/keymap.c | 8 ++++---- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/keyboard/planck/keymaps/default/keymap.c b/keyboard/planck/keymaps/default/keymap.c index 43f570532b..36d496416e 100644 --- a/keyboard/planck/keymaps/default/keymap.c +++ b/keyboard/planck/keymaps/default/keymap.c @@ -99,7 +99,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |------+------+------+------+------+-------------+------+------+------+------+------| * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | * |------+------+------+------+------+------|------+------+------+------+------+------| - * | | F7 | F8 | F9 | F10 | F11 | F12 | | | | |Enter | + * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | | |Enter | * |------+------+------+------+------+------+------+------+------+------+------+------| * | | | | | | | | Next | Vol- | Vol+ | Play | * `-----------------------------------------------------------------------------------' @@ -107,7 +107,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_LOWER] = { {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC}, {KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, - {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______}, + {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),_______, _______, _______}, {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} }, @@ -117,7 +117,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |------+------+------+------+------+-------------+------+------+------+------+------| * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | * |------+------+------+------+------+------|------+------+------+------+------+------| - * | | F7 | F8 | F9 | F10 | F11 | F12 | | | | |Enter | + * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / | | |Enter | * |------+------+------+------+------+------+------+------+------+------+------+------| * | | | | | | | | Next | Vol- | Vol+ | Play | * `-----------------------------------------------------------------------------------' @@ -125,7 +125,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_RAISE] = { {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, {KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, - {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______}, + {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______}, {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} }, diff --git a/keyboard/planck/keymaps/experimental/keymap.c b/keyboard/planck/keymaps/experimental/keymap.c index 2f8a0510a8..4b9c15e084 100644 --- a/keyboard/planck/keymaps/experimental/keymap.c +++ b/keyboard/planck/keymaps/experimental/keymap.c @@ -99,7 +99,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |------+------+------+------+------+-------------+------+------+------+------+------| * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | * |------+------+------+------+------+------|------+------+------+------+------+------| - * | | F7 | F8 | F9 | F10 | F11 | F12 | | | | |Enter | + * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | | |Enter | * |------+------+------+------+------+------+------+------+------+------+------+------| * | | | | | | | | Next | Vol- | Vol+ | Play | * `-----------------------------------------------------------------------------------' @@ -107,7 +107,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_LOWER] = { {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC}, {KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, - {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______}, + {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),_______, _______, _______}, {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} }, @@ -117,7 +117,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |------+------+------+------+------+-------------+------+------+------+------+------| * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | * |------+------+------+------+------+------|------+------+------+------+------+------| - * | | F7 | F8 | F9 | F10 | F11 | F12 | | | | |Enter | + * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / | | |Enter | * |------+------+------+------+------+------+------+------+------+------+------+------| * | | | | | | | | Next | Vol- | Vol+ | Play | * `-----------------------------------------------------------------------------------' @@ -125,7 +125,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_RAISE] = { {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, {KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, - {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______}, + {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUHS, _______, _______, _______}, {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} }, diff --git a/keyboard/preonic/keymaps/default/keymap.c b/keyboard/preonic/keymaps/default/keymap.c index f808ab1ce4..06e6647136 100644 --- a/keyboard/preonic/keymaps/default/keymap.c +++ b/keyboard/preonic/keymaps/default/keymap.c @@ -101,7 +101,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |------+------+------+------+------+-------------+------+------+------+------+------| * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | * |------+------+------+------+------+------|------+------+------+------+------+------| - * | | F7 | F8 | F9 | F10 | F11 | F12 | | | | |Enter | + * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | | |Enter | * |------+------+------+------+------+------+------+------+------+------+------+------| * | | | | | | | | Next | Vol- | Vol+ | Play | * `-----------------------------------------------------------------------------------' @@ -110,7 +110,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC}, {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL}, {KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, - {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______}, + {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),_______, _______, _______}, {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} }, @@ -122,7 +122,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |------+------+------+------+------+-------------+------+------+------+------+------| * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | * |------+------+------+------+------+------|------+------+------+------+------+------| - * | | F7 | F8 | F9 | F10 | F11 | F12 | | | | |Enter | + * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / | | |Enter | * |------+------+------+------+------+------+------+------+------+------+------+------| * | | | | | | | | Next | Vol- | Vol+ | Play | * `-----------------------------------------------------------------------------------' @@ -131,7 +131,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL}, {KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, - {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______}, + {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______}, {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} }, -- cgit v1.2.1 From 465aabe11dbd673fb4c68ecbffbfb062273def1a Mon Sep 17 00:00:00 2001 From: heartsekai Date: Wed, 18 May 2016 21:22:04 +0200 Subject: Added Swiss-German keymap. (#335) --- quantum/keymap_extras/keymap_german_ch.h | 102 +++++++++++++++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 quantum/keymap_extras/keymap_german_ch.h diff --git a/quantum/keymap_extras/keymap_german_ch.h b/quantum/keymap_extras/keymap_german_ch.h new file mode 100644 index 0000000000..0874abf7dd --- /dev/null +++ b/quantum/keymap_extras/keymap_german_ch.h @@ -0,0 +1,102 @@ +#ifndef KEYMAP_SWISS_GERMAN +#define KEYMAP_SWISS_GERMAN + +#include "keymap_common.h" + +// Alt gr +#define ALGR(kc) kc | 0x1400 +#define CH_ALGR KC_RALT + +// normal characters +#define CH_Z KC_Y +#define CH_Y KC_Z + +#define CH_A KC_A +#define CH_B KC_B +#define CH_C KC_C +#define CH_D KC_D +#define CH_E KC_E +#define CH_F KC_F +#define CH_G KC_G +#define CH_H KC_H +#define CH_I KC_I +#define CH_J KC_J +#define CH_K KC_K +#define CH_L KC_L +#define CH_M KC_M +#define CH_N KC_N +#define CH_O KC_O +#define CH_P KC_P +#define CH_Q KC_Q +#define CH_R KC_R +#define CH_S KC_S +#define CH_T KC_T +#define CH_U KC_U +#define CH_V KC_V +#define CH_W KC_W +#define CH_X KC_X + +#define CH_0 KC_0 +#define CH_1 KC_1 +#define CH_2 KC_2 +#define CH_3 KC_3 +#define CH_4 KC_4 +#define CH_5 KC_5 +#define CH_6 KC_6 +#define CH_7 KC_7 +#define CH_8 KC_8 +#define CH_9 KC_9 + +#define CH_DOT KC_DOT +#define CH_COMM KC_COMM + +#define CH_QUOT KC_MINS // ' ? ´ +#define CH_AE KC_QUOT +#define CH_UE KC_LBRC +#define CH_OE KC_SCLN + +#define CH_PARA KC_GRAVE // secction sign § and ° +#define CH_CARR KC_EQL // carret ^ ` ~ +#define CH_DIER KC_RBRC // dieresis ¨ ! ] +#define CH_DLR KC_BSLS // $ £ } +#define CH_LESS KC_NUBS // < and > and backslash +#define CH_MINS KC_SLSH // - and _ + +// shifted characters +#define CH_RING LSFT(CH_PARA) // ° +#define CH_PLUS LSFT(KC_1) // + +#define CH_DQOT LSFT(KC_2) // " +#define CH_PAST LSFT(KC_3) // * +#define CH_CELA LSFT(KC_4) // ç +#define CH_PERC LSFT(KC_5) // % +#define CH_AMPR LSFT(KC_6) // & +#define CH_SLSH LSFT(KC_7) // / +#define CH_LPRN LSFT(KC_8) // ( +#define CH_RPRN LSFT(KC_9) // ) +#define CH_EQL LSFT(KC_0) // = +#define CH_QST LSFT(CH_QUOT) // ? +#define CH_GRV LSFT(CH_CARR) // ` +#define CH_EXLM LSFT(CH_DIER) // ! +#define CH_POND LSFT(CH_DLR) // £ +#define CH_MORE LSFT(CH_LESS) // > +#define CH_COLN LSFT(KC_DOT) // : +#define CH_SCLN LSFT(KC_COMM) // ; +#define CH_UNDS LSFT(CH_MINS) // _ + +// Alt Gr-ed characters +#define CH_BRBR ALGR(KC_1) // ¦ brocken bar +#define CH_AT ALGR(KC_2) // @ +#define CH_HASH ALGR(KC_3) // # +#define CH_NOTL ALGR(KC_6) // ¬ negative logic +#define CH_PIPE ALGR(KC_7) // | +#define CH_CENT ALGR(KC_8) // ¢ cent +#define CH_ACUT ALGR(CH_QUOT) // ´ +#define CH_TILD ALGR(CH_CARR) // ~ +#define CH_EURO ALGR(KC_E) // € +#define CH_LBRC ALGR(CH_UE) // [ +#define CH_RBRC ALGR(CH_DIER) // ] +#define CH_LCBR ALGR(CH_AE) // { +#define CH_RCBR ALGR(CH_DLR) // } +#define CH_BSLS ALGR(CH_LESS) // backslash + +#endif -- cgit v1.2.1 From 0428214b905e5f8b3bed721885957ce249ba4991 Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Wed, 18 May 2016 23:14:00 -0400 Subject: adds music and audio toggles (#337) * Updated personal layouts * tweaked personal * Nightly - Audio Cleanup Refactored the LUTs. Abstracted some of the registers out of audio to use more functional names. Split audio into audio and audio_pwm. WIP * nightly - collapsed code * Added check for note playing to LEDs * Usability tweaks * TWEAE * nightly added extra kcs to keymap common * turned on Plank audio * Added backlight breathing to atomic * reverted accidental merge * Added music and audio toggles to Quantum.c * Redid the audio callbacks * music/audio_on_user --- keyboard/atomic/keymaps/pvc/keymap.c | 48 +++++++++++++---------- quantum/audio/audio.c | 8 +++- quantum/audio/audio.h | 6 +-- quantum/keymap_common.h | 14 ++++--- quantum/quantum.c | 75 +++++++++++++++++++++++++++++------- quantum/quantum.h | 7 ++++ 6 files changed, 114 insertions(+), 44 deletions(-) diff --git a/keyboard/atomic/keymaps/pvc/keymap.c b/keyboard/atomic/keymaps/pvc/keymap.c index ff7384268e..8431654d7d 100644 --- a/keyboard/atomic/keymaps/pvc/keymap.c +++ b/keyboard/atomic/keymaps/pvc/keymap.c @@ -15,8 +15,7 @@ #define LAYER_LOWER 4 #define LAYER_FUNCTION 5 #define LAYER_MOUSE 6 -#define LAYER_MUSIC 7 -#define LAYER_ADJUST 8 +#define LAYER_ADJUST 7 #define MACRO_QWERTY 0 #define MACRO_COLEMAK 1 @@ -63,8 +62,8 @@ #define M_BDFLT M(MACRO_BREATH_DEFAULT) -#define MUS_TOG M(MACRO_MUSIC_TOGGLE) -#define AUD_TOG M(MACRO_AUDIO_TOGGLE) +//#define MU_TOG M(MACRO_MUSIC_TOGGLE) +//#define AU_TOG M(MACRO_AUDIO_TOGGLE) #define VC_UP M(MACRO_INC_VOICE) #define VC_DOWN M(MACRO_DEC_VOICE) @@ -219,20 +218,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { #endif - [LAYER_MUSIC] = { // MUSIC - { XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX }, - { XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX }, - { XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX }, - { XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX }, - { XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, M_UPPER, XXXXXXX, XXXXXXX, M_LOWER, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX }, - }, - [LAYER_ADJUST] = { // ADJUST - { _______, TIMBR_1, TIMBR_2, TIMBR_3, TIMBR_4, TMPO_UP, TMPO_DN, TMPO_DF, _______, _______, _______, MUS_TOG, AUD_TOG, ________________ }, + { _______, TIMBR_1, TIMBR_2, TIMBR_3, TIMBR_4, TMPO_UP, TMPO_DN, TMPO_DF, _______, _______, _______, MU_TOG, AU_TOG, ________________ }, { _______, M_QWRTY, M_COLMK, M_DVORK, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ________________, _______ }, - { _______, _______, _______, _______, M_BACKL, RESET, _______, M_MOUSE, _______, _______, _______, ________________, VC_UP, _______ }, - { _______, _______, _______, _______, _______, ________________, _______, _______, _______, _______, _______, _______, VC_DOWN, _______ }, + { _______, _______, _______, _______, M_BACKL, RESET, _______, M_MOUSE, _______, _______, _______, ________________, MUV_IN, _______ }, + { _______, _______, _______, _______, _______, ________________, _______, _______, _______, _______, _______, _______, MUV_DE, _______ }, }, @@ -259,13 +250,14 @@ float tone_colemak[][2] = SONG(COLEMAK_SOUND); float tone_audio_on[][2] = SONG(CLOSE_ENCOUNTERS_5_NOTE); float tone_music_on[][2] = SONG(DOE_A_DEER); +float music_scale[][2] = SONG(MUSIC_SCALE_SOUND); + float tone_caps_on[][2] = SONG(CAPS_LOCK_ON_SOUND); float tone_caps_off[][2] = SONG(CAPS_LOCK_OFF_SOUND); float tone_numlk_on[][2] = SONG(NUM_LOCK_ON_SOUND); float tone_numlk_off[][2] = SONG(NUM_LOCK_OFF_SOUND); float tone_scroll_on[][2] = SONG(SCROLL_LOCK_ON_SOUND); float tone_scroll_off[][2] = SONG(SCROLL_LOCK_OFF_SOUND); -float music_scale[][2] = SONG(MUSIC_SCALE_SOUND); #endif /* AUDIO_ENABLE */ @@ -434,6 +426,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) } break; +/* case MACRO_AUDIO_TOGGLE: if (record->event.pressed) { @@ -464,7 +457,6 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) } } break; - case MACRO_INC_VOICE: if (record->event.pressed) { @@ -484,6 +476,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) #endif } break; +*/ #endif /* AUDIO_ENABLE */ @@ -505,8 +498,8 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) #ifdef AUDIO_ENABLE - -void process_action_user(keyrecord_t *record) +/* +bool process_action_user(keyrecord_t *record) { uint8_t starting_note = 0x0C; @@ -524,7 +517,7 @@ void process_action_user(keyrecord_t *record) } } } - +*/ void matrix_init_user(void) { @@ -590,4 +583,19 @@ void play_goodbye_tone() stop_all_notes(); } +void play_audio_on_tone(void) +{ + PLAY_NOTE_ARRAY(tone_audio_on, false, STACCATO); +} + +void play_music_on_tone(void) +{ + PLAY_NOTE_ARRAY(tone_music_on, false, STACCATO); +} + +void play_music_scale(void) +{ + PLAY_NOTE_ARRAY(music_scale, false, STACCATO); +} + #endif /* AUDIO_ENABLE */ \ No newline at end of file diff --git a/quantum/audio/audio.c b/quantum/audio/audio.c index 243f49f0ee..32f64417ed 100644 --- a/quantum/audio/audio.c +++ b/quantum/audio/audio.c @@ -381,11 +381,14 @@ bool is_audio_on(void) { void audio_toggle(void) { audio_config.enable ^= 1; eeconfig_update_audio(audio_config.raw); + if (audio_config.enable) + audio_on_user(); } void audio_on(void) { audio_config.enable = 1; eeconfig_update_audio(audio_config.raw); + audio_on_user(); } void audio_off(void) { @@ -484,5 +487,8 @@ __attribute__ ((weak)) void play_goodbye_tone() {} __attribute__ ((weak)) -void audio_on_callback(void) {} +void audio_on_user() {} + +__attribute__ ((weak)) +void play_music_scale() {} //------------------------------------------------------------------------------ diff --git a/quantum/audio/audio.h b/quantum/audio/audio.h index fe85061318..b46f587bb4 100644 --- a/quantum/audio/audio.h +++ b/quantum/audio/audio.h @@ -29,7 +29,6 @@ bool is_audio_on(void); void audio_toggle(void); void audio_on(void); void audio_off(void); -void audio_on_callback(void); // Vibrato rate functions @@ -87,9 +86,10 @@ void play_notes(float (*np)[][2], uint16_t n_count, bool n_repeat, float n_rest) bool is_playing_notes(void); + void play_goodbye_tone(void); void play_startup_tone(void); - - +void audio_on_user(void); +void play_music_scale(void); #endif \ No newline at end of file diff --git a/quantum/keymap_common.h b/quantum/keymap_common.h index 07020150ae..1cbe8c61c0 100644 --- a/quantum/keymap_common.h +++ b/quantum/keymap_common.h @@ -224,18 +224,20 @@ extern const uint16_t fn_actions[]; // Audio on/off #define AU_ON 0x5020 #define AU_OFF 0x5021 +#define AU_TOG 0x5022 // Music mode on/off -#define MU_ON 0x5022 -#define MU_OFF 0x5023 +#define MU_ON 0x5023 +#define MU_OFF 0x5024 +#define MU_TOG 0x5025 // Music voice iterate -#define MUV_IN 0x5024 -#define MUV_DE 0x5025 +#define MUV_IN 0x5026 +#define MUV_DE 0x5027 // Midi mode on/off -#define MI_ON 0x5026 -#define MI_OFF 0x5027 +#define MI_ON 0x5028 +#define MI_OFF 0x5029 // GOTO layer - 16 layers max // when: diff --git a/quantum/quantum.c b/quantum/quantum.c index 5a978d3320..e4d7b91852 100644 --- a/quantum/quantum.c +++ b/quantum/quantum.c @@ -1,4 +1,5 @@ #include "quantum.h" +#include "timer.h" __attribute__ ((weak)) void matrix_init_kb(void) {} @@ -17,11 +18,11 @@ void leader_start(void) {} __attribute__ ((weak)) void leader_end(void) {} +uint8_t starting_note = 0x0C; +int offset = 7; + #ifdef AUDIO_ENABLE - uint8_t starting_note = 0x0C; - int offset = 7; bool music_activated = false; - float music_scale[][2] = SONG(MUSIC_SCALE_SOUND); #endif #ifdef MIDI_ENABLE @@ -105,7 +106,7 @@ bool process_record_quantum(keyrecord_t *record) { #ifdef MIDI_ENABLE if (keycode == MI_ON && record->event.pressed) { midi_activated = true; - PLAY_NOTE_ARRAY(music_scale, false, 0); + play_music_scale(); return false; } @@ -181,7 +182,6 @@ bool process_record_quantum(keyrecord_t *record) { #ifdef AUDIO_ENABLE if (keycode == AU_ON && record->event.pressed) { audio_on(); - audio_on_callback(); return false; } @@ -190,31 +190,53 @@ bool process_record_quantum(keyrecord_t *record) { return false; } + if (keycode == AU_TOG && record->event.pressed) { + if (is_audio_on()) + { + audio_off(); + } + else + { + audio_on(); + } + return false; + } + if (keycode == MU_ON && record->event.pressed) { - music_activated = true; - PLAY_NOTE_ARRAY(music_scale, false, 0); + music_on(); return false; } if (keycode == MU_OFF && record->event.pressed) { - music_activated = false; - stop_all_notes(); + music_off(); return false; } + if (keycode == MU_TOG && record->event.pressed) { + if (music_activated) + { + music_off(); + } + else + { + music_on(); + } + return false; + } + if (keycode == MUV_IN && record->event.pressed) { voice_iterate(); - PLAY_NOTE_ARRAY(music_scale, false, 0); + play_music_scale(); return false; } if (keycode == MUV_DE && record->event.pressed) { voice_deiterate(); - PLAY_NOTE_ARRAY(music_scale, false, 0); + play_music_scale(); return false; } - if (music_activated) { + if (music_activated) { if (keycode == KC_LCTL && record->event.pressed) { // Start recording stop_all_notes(); @@ -258,7 +280,7 @@ bool process_record_quantum(keyrecord_t *record) { } } else { stop_note(freq); - } + } if (keycode < 0xFF) // ignores all normal keycodes, but lets RAISE, LOWER, etc through return false; @@ -347,4 +369,29 @@ void matrix_scan_quantum() { #endif matrix_scan_kb(); -} \ No newline at end of file +} + +bool is_music_on(void) { + return (music_activated != 0); +} + +void music_toggle(void) { + if (!music_activated) { + music_on(); + } else { + music_off(); + } +} + +void music_on(void) { + music_activated = 1; + music_on_user(); +} + +void music_off(void) { + music_activated = 0; + stop_all_notes(); +} + +__attribute__ ((weak)) +void music_on_user() {} \ No newline at end of file diff --git a/quantum/quantum.h b/quantum/quantum.h index bfecdb2626..f4d8f09d48 100644 --- a/quantum/quantum.h +++ b/quantum/quantum.h @@ -46,4 +46,11 @@ void leader_end(void); #define LEADER_EXTERNS() extern bool leading; extern uint16_t leader_time; extern uint16_t leader_sequence[3]; extern uint8_t leader_sequence_size #define LEADER_DICTIONARY() if (leading && timer_elapsed(leader_time) > LEADER_TIMEOUT) +bool is_music_on(void); +void music_toggle(void); +void music_on(void); +void music_off(void); + +void music_on_user(void); + #endif \ No newline at end of file -- cgit v1.2.1 From bf545061f2a71b054ccdca6f6261bb7c2ffa4957 Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Wed, 18 May 2016 23:16:31 -0400 Subject: outputs size when make dfuing --- tmk_core/rules.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tmk_core/rules.mk b/tmk_core/rules.mk index 69c7985b48..552f32331a 100644 --- a/tmk_core/rules.mk +++ b/tmk_core/rules.mk @@ -428,7 +428,7 @@ flip: $(TARGET).hex batchisp -hardware usb -device $(MCU) -operation loadbuffer $(TARGET).hex program batchisp -hardware usb -device $(MCU) -operation start reset 0 -dfu: $(TARGET).hex +dfu: $(TARGET).hex sizeafter ifneq (, $(findstring 0.7, $(shell dfu-programmer --version 2>&1))) dfu-programmer $(MCU) erase --force else -- cgit v1.2.1 From b732b79b49b098dba8e14493c745075f336747d8 Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Wed, 18 May 2016 23:47:16 -0400 Subject: adapts unicode to quantum.c (#333) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Unicode to have unicode input you need to: - set your OS input method to UNICODE if needed - enable unicode in your makefile - copy the action_function from keyboard/planck/keymaps/unicode/unicode.c to your keymap.c set the target OS method in your keymap.c: void matrix_init_user() { set_unicode_mode(UC_OSX); } you can then switch when you want with: set_unicode_mode(UC_OSX); set_unicode_mode(UC_LNX); set_unicode_mode(UC_WIN); put some unicode codes in your keymap like so: UC(0x0061) I did change the bit mask in quantum/keymap_common.c and .h I’m afraid we will need uint32 to get a total support for all unicode tables or relocate the handler as @mbarkhau did. * rearranges keycode values, hooks-up unicode * removes extra lalt ref * adds unicode shortcuts and example --- keyboard/planck/keymaps/unicode/keymap.c | 326 ++++++++++++++++++++++++++++ keyboard/planck/keymaps/unicode/makefile.mk | 1 + quantum/keymap_common.c | 26 +-- quantum/keymap_common.h | 76 +++---- quantum/keymap_unicode.c | 61 ------ quantum/quantum.c | 79 ++++++- quantum/quantum.h | 44 ++-- quantum/quantum.mk | 4 - quantum/unicode.h | 128 +++++++++++ tmk_core/common.mk | 4 + 10 files changed, 609 insertions(+), 140 deletions(-) create mode 100644 keyboard/planck/keymaps/unicode/keymap.c create mode 100644 keyboard/planck/keymaps/unicode/makefile.mk delete mode 100644 quantum/keymap_unicode.c create mode 100644 quantum/unicode.h diff --git a/keyboard/planck/keymaps/unicode/keymap.c b/keyboard/planck/keymaps/unicode/keymap.c new file mode 100644 index 0000000000..d73e7e09d4 --- /dev/null +++ b/keyboard/planck/keymaps/unicode/keymap.c @@ -0,0 +1,326 @@ +/* + Copyright + 2015 Jack Humbert + 2016 Francois Marlier + + 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 . + + For more info on how this works per OS, see here + https://en.wikipedia.org/wiki/Unicode_input#Hexadecimal_code_input +*/ + + +#include "planck.h" +#include "action_layer.h" +#ifdef AUDIO_ENABLE + #include "audio.h" +#endif +#include "eeconfig.h" + +extern keymap_config_t keymap_config; + +// 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 _QWERTY 0 +#define _COLEMAK 1 +#define _DVORAK 2 +#define _LOWER 3 +#define _RAISE 4 +#define _PLOVER 5 +#define _ADJUST 16 + +// Macro name shortcuts +#define QWERTY M(_QWERTY) +#define COLEMAK M(_COLEMAK) +#define DVORAK M(_DVORAK) +#define LOWER M(_LOWER) +#define RAISE M(_RAISE) +#define M_BL 5 +#define PLOVER M(12) +#define EXT_PLV M(13) +#define TOG_OUT M(14) + +// Fillers to make layering more clear +#define _______ KC_TRNS +#define XXXXXXX KC_NO + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* Qwerty + * ,-----------------------------------------------------------------------------------. + * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | S | D | F | G | H | J | K | L | ; | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_QWERTY] = { + {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, + {KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, + {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT }, + {M(M_BL), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} +}, + +/* Colemak + * ,-----------------------------------------------------------------------------------. + * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | R | S | T | D | H | N | E | I | O | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_COLEMAK] = { + {KC_TAB, UC_q, UC_w, UC_f, UC_p, UC_g, UC_j, UC_l, UC_u, UC_y, UC_SCLN, UC_BSPC}, + {KC_ESC, UC_a, UC_r, UC_s, UC_t, UC_d, UC_h, UC_n, UC_e, UC_i, UC_o, UC_QUOT}, + {KC_LSFT, UC_z, UC_x, UC_c, UC_v, UC_b, UC_k, UC_m, UC_COMM, UC_DOT, UC_SLSH, KC_ENT}, + {KC_TRNS, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} +}, + +/* Dvorak + * ,-----------------------------------------------------------------------------------. + * | Tab | " | , | . | P | Y | F | G | C | R | L | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | O | E | U | I | D | H | T | N | S | / | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_DVORAK] = { + {KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC}, + {KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH}, + {KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT }, + {M(M_BL), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} +}, + +/* Lower + * ,-----------------------------------------------------------------------------------. + * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | F7 | F8 | F9 | F10 | F11 | F12 | | | | |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ +[_LOWER] = { + {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC}, + {KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, + {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} +}, + +/* Raise + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | F7 | F8 | F9 | F10 | F11 | F12 | | | | |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ +[_RAISE] = { + {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, + {KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, + {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} +}, + +/* Plover layer (http://opensteno.org) + * ,-----------------------------------------------------------------------------------. + * | # | # | # | # | # | # | # | # | # | # | # | # | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | S | T | P | H | * | * | F | P | L | T | D | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * |TogOut| S | K | W | R | * | * | R | B | G | S | Z | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Exit | | | A | O | | E | U | | | | + * `-----------------------------------------------------------------------------------' + */ + +[_PLOVER] = { + {KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1 }, + {XXXXXXX, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC}, + {TOG_OUT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, + {EXT_PLV, XXXXXXX, XXXXXXX, KC_C, KC_V, XXXXXXX, XXXXXXX, KC_N, KC_M, XXXXXXX, XXXXXXX, XXXXXXX} +}, + +/* Adjust (Lower + Raise) + * ,-----------------------------------------------------------------------------------. + * | | Reset| | | | | | | | | | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak|Plover| | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | |Voice-|Voice+|Mus on|Musoff| | | | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ +[_ADJUST] = { + {_______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL}, + {_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, PLOVER, _______}, + {_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} +} + + +}; + +const uint16_t PROGMEM fn_actions[] = { + +}; + +#ifdef AUDIO_ENABLE +float tone_startup[][2] = { + {440.0*pow(2.0,(31)/12.0), 12}, + {440.0*pow(2.0,(28)/12.0), 8}, + {440.0*pow(2.0,(19)/12.0), 8}, + {440.0*pow(2.0,(24)/12.0), 8}, + {440.0*pow(2.0,(28)/12.0), 20} +}; + +float tone_qwerty[][2] = SONG(QWERTY_SOUND); +float tone_dvorak[][2] = SONG(DVORAK_SOUND); +float tone_colemak[][2] = SONG(COLEMAK_SOUND); +float tone_plover[][2] = SONG(PLOVER_SOUND); +float tone_plover_gb[][2] = SONG(PLOVER_GOODBYE_SOUND); + +float goodbye[][2] = SONG(GOODBYE_SOUND); +#endif + + +void persistant_default_layer_set(uint16_t default_layer) { + eeconfig_update_default_layer(default_layer); + default_layer_set(default_layer); +} + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + switch(id) { + case _QWERTY: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_qwerty, false, 0); + #endif + persistant_default_layer_set(1UL<<_QWERTY); + } + break; + case _COLEMAK: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_colemak, false, 0); + #endif + persistant_default_layer_set(1UL<<_COLEMAK); + } + break; + case _DVORAK: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_dvorak, false, 0); + #endif + persistant_default_layer_set(1UL<<_DVORAK); + } + break; + case _LOWER: + if (record->event.pressed) { + layer_on(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + break; + case _RAISE: + if (record->event.pressed) { + layer_on(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + break; + case M_BL: + if (record->event.pressed) { + register_code(KC_RSFT); + #ifdef BACKLIGHT_ENABLE + backlight_step(); + #endif + } else { + unregister_code(KC_RSFT); + } + break; + case 12: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + stop_all_notes(); + PLAY_NOTE_ARRAY(tone_plover, false, 0); + #endif + layer_off(_RAISE); + layer_off(_LOWER); + layer_off(_ADJUST); + layer_on(_PLOVER); + if (!eeconfig_is_enabled()) { + eeconfig_init(); + } + keymap_config.raw = eeconfig_read_keymap(); + keymap_config.nkro = 1; + eeconfig_update_keymap(keymap_config.raw); + } + break; + case 13: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_plover_gb, false, 0); + #endif + layer_off(_PLOVER); + } + break; + case 14: + if (record->event.pressed) { + return MACRO( D(E), D(R), D(F), D(V), D(O), D(L), U(E), U(R), U(F), U(V), U(O), U(L), END ); + } + break; + } + return MACRO_NONE; +}; + +void matrix_init_user(void) { + #ifdef AUDIO_ENABLE + _delay_ms(20); // stops the tick + PLAY_NOTE_ARRAY(tone_startup, false, 0); + #endif +} + +#ifdef AUDIO_ENABLE +void play_goodbye_tone() +{ + PLAY_NOTE_ARRAY(goodbye, false, 0); + _delay_ms(150); +} +#endif + + diff --git a/keyboard/planck/keymaps/unicode/makefile.mk b/keyboard/planck/keymaps/unicode/makefile.mk new file mode 100644 index 0000000000..9b27b08bed --- /dev/null +++ b/keyboard/planck/keymaps/unicode/makefile.mk @@ -0,0 +1 @@ +UNICODE_ENABLE = yes # Unicode diff --git a/quantum/keymap_common.c b/quantum/keymap_common.c index 2aae13e679..1d9ab2e05c 100644 --- a/quantum/keymap_common.c +++ b/quantum/keymap_common.c @@ -31,7 +31,6 @@ along with this program. If not, see . #include "keymap_midi.h" #endif - extern keymap_config_t keymap_config; #include @@ -154,20 +153,22 @@ static action_t keycode_to_action(uint16_t keycode) case KC_TRNS: action.code = ACTION_TRANSPARENT; break; - case 0x0100 ... 0x1FFF: ; + case LCTL(0) ... 0x1FFF: ; // Has a modifier // Split it up action.code = ACTION_MODS_KEY(keycode >> 8, keycode & 0xFF); // adds modifier to key break; - case 0x2000 ... 0x2FFF: + case FUNC(0) ... FUNC(0xFFF): ; // Is a shortcut for function layer, pull last 12bits // This means we have 4,096 FN macros at our disposal return keymap_func_to_action(keycode & 0xFFF); break; - case 0x3000 ... 0x3FFF: ; - // When the code starts with 3, it's an action macro. + case M(0) ... M(0xFF): action.code = ACTION_MACRO(keycode & 0xFF); break; + case LT(0, 0) ... LT(0xFF, 0xF): + action.code = ACTION_LAYER_TAP_KEY((keycode >> 0x8) & 0xF, keycode & 0xFF); + break; #ifdef BACKLIGHT_ENABLE case BL_0 ... BL_15: action.code = ACTION_BACKLIGHT_LEVEL(keycode & 0x000F); @@ -201,7 +202,7 @@ static action_t keycode_to_action(uint16_t keycode) print("\nDEBUG: enabled.\n"); debug_enable = true; break; - case 0x5002 ... 0x50FF: + case MAGIC_SWAP_CONTROL_CAPSLOCK ... MAGIC_UNSWAP_ALT_GUI: // MAGIC actions (BOOTMAGIC without the boot) if (!eeconfig_is_enabled()) { eeconfig_init(); @@ -251,7 +252,7 @@ static action_t keycode_to_action(uint16_t keycode) } eeconfig_update_keymap(keymap_config.raw); break; - case 0x5100 ... 0x56FF: ; + case TO(0, 1) ... OSM(0xFF): ; // Layer movement shortcuts // See .h to see constraints/usage int type = (keycode >> 0x8) & 0xF; @@ -282,18 +283,9 @@ static action_t keycode_to_action(uint16_t keycode) action.code = ACTION_MODS_ONESHOT(mod); } break; - case 0x7000 ... 0x7FFF: + case MT(0, 0) ... MT(0xF, 0xFF): action.code = ACTION_MODS_TAP_KEY((keycode >> 0x8) & 0xF, keycode & 0xFF); break; - case 0x8000 ... 0x8FFF: - action.code = ACTION_LAYER_TAP_KEY((keycode >> 0x8) & 0xF, keycode & 0xFF); - break; - #ifdef UNICODE_ENABLE - case 0x8000000 ... 0x8FFFFFF: - uint16_t unicode = keycode & ~(0x8000); - action.code = ACTION_FUNCTION_OPT(unicode & 0xFF, (unicode & 0xFF00) >> 8); - break; - #endif default: action.code = ACTION_NO; break; diff --git a/quantum/keymap_common.h b/quantum/keymap_common.h index 1cbe8c61c0..91d5c09c1c 100644 --- a/quantum/keymap_common.h +++ b/quantum/keymap_common.h @@ -163,38 +163,13 @@ extern const uint16_t fn_actions[]; #define MACRODOWN(...) (record->event.pressed ? MACRO(__VA_ARGS__) : MACRO_NONE) -// These affect the backlight (if your keyboard has one). -// We don't need to comment them out if your keyboard doesn't have a backlight, -// since they don't take up any space. -#define BL_ON 0x4009 -#define BL_OFF 0x4000 -#define BL_0 0x4000 -#define BL_1 0x4001 -#define BL_2 0x4002 -#define BL_3 0x4003 -#define BL_4 0x4004 -#define BL_5 0x4005 -#define BL_6 0x4006 -#define BL_7 0x4007 -#define BL_8 0x4008 -#define BL_9 0x4009 -#define BL_10 0x400A -#define BL_11 0x400B -#define BL_12 0x400C -#define BL_13 0x400D -#define BL_14 0x400E -#define BL_15 0x400F -#define BL_DEC 0x4010 -#define BL_INC 0x4011 -#define BL_TOGG 0x4012 -#define BL_STEP 0x4013 +// 0x3100+ is free + +// L-ayer, T-ap - 256 keycode max, 16 layer max +#define LT(layer, kc) (kc | 0x4000 | ((layer & 0xF) << 8)) #define RESET 0x5000 #define DEBUG 0x5001 -#define KC_LEAD 0x5014 - - - // MAGIC keycodes #define MAGIC_SWAP_CONTROL_CAPSLOCK 0x5002 @@ -239,6 +214,32 @@ extern const uint16_t fn_actions[]; #define MI_ON 0x5028 #define MI_OFF 0x5029 +// These affect the backlight (if your keyboard has one). +// We don't need to comment them out if your keyboard doesn't have a backlight, +// since they don't take up any space. +#define BL_ON 0x5079 +#define BL_OFF 0x5070 +#define BL_0 0x5070 +#define BL_1 0x5071 +#define BL_2 0x5072 +#define BL_3 0x5073 +#define BL_4 0x5074 +#define BL_5 0x5075 +#define BL_6 0x5076 +#define BL_7 0x5077 +#define BL_8 0x5078 +#define BL_9 0x5079 +#define BL_10 0x507A +#define BL_11 0x507B +#define BL_12 0x507C +#define BL_13 0x507D +#define BL_14 0x507E +#define BL_15 0x507F +#define BL_DEC 0x5080 +#define BL_INC 0x5081 +#define BL_TOGG 0x5082 +#define BL_STEP 0x5083 + // GOTO layer - 16 layers max // when: // ON_PRESS = 1 @@ -261,6 +262,8 @@ extern const uint16_t fn_actions[]; // One-shot mod #define OSM(layer) (layer | 0x5600) +// chording is currently at 0x57xx + // M-od, T-ap - 256 keycode max #define MT(mod, kc) (kc | 0x7000 | ((mod & 0xF) << 8)) #define CTL_T(kc) MT(0x1, kc) @@ -276,14 +279,13 @@ extern const uint16_t fn_actions[]; #define KC_HYPR HYPR(KC_NO) #define KC_MEH MEH(KC_NO) -// L-ayer, T-ap - 256 keycode max, 16 layer max -#define LT(layer, kc) (kc | 0x8000 | ((layer & 0xF) << 8)) - -// For sending unicode codes. -// You may not send codes over 1FFF -- this supports most of UTF8. -// To have a key that sends out Œ, go UC(0x0152) -#define UNICODE(n) (n | 0x8000) -#define UC(n) UNICODE(n) +#ifdef UNICODE_ENABLE + // For sending unicode codes. + // You may not send codes over 7FFF -- this supports most of UTF8. + // To have a key that sends out Œ, go UC(0x0152) + #define UNICODE(n) (n | 0x8000) + #define UC(n) UNICODE(n) +#endif // For tri-layer void update_tri_layer(uint8_t layer1, uint8_t layer2, uint8_t layer3); diff --git a/quantum/keymap_unicode.c b/quantum/keymap_unicode.c deleted file mode 100644 index a44965e611..0000000000 --- a/quantum/keymap_unicode.c +++ /dev/null @@ -1,61 +0,0 @@ -/* -Copyright 2015 Jack Humbert - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -#include "keymap_common.h" - -uint16_t hextokeycode(int hex) { - if (hex == 0x0) { - return KC_0; - } else if (hex < 0xA) { - return KC_1 + (hex - 0x1); - } else { - return KC_A + (hex - 0xA); - } -} - -void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) -{ - - // For more info on how this works per OS, see here: https://en.wikipedia.org/wiki/Unicode_input#Hexadecimal_code_input - - if (record->event.pressed) { - uint16_t unicode = (opt << 8) | id; - register_code(KC_LALT); - - register_code(hextokeycode((unicode & 0xF000) >> 12)); - unregister_code(hextokeycode((unicode & 0xF000) >> 12)); - register_code(hextokeycode((unicode & 0x0F00) >> 8)); - unregister_code(hextokeycode((unicode & 0x0F00) >> 8)); - register_code(hextokeycode((unicode & 0x00F0) >> 4)); - unregister_code(hextokeycode((unicode & 0x00F0) >> 4)); - register_code(hextokeycode((unicode & 0x000F))); - unregister_code(hextokeycode((unicode & 0x000F))); - - /* Test 'a' */ - // register_code(hextokeycode(0x0)); - // unregister_code(hextokeycode(0x0)); - // register_code(hextokeycode(0x0)); - // unregister_code(hextokeycode(0x0)); - // register_code(hextokeycode(0x6)); - // unregister_code(hextokeycode(0x6)); - // register_code(hextokeycode(0x1)); - // unregister_code(hextokeycode(0x1)); - - unregister_code(KC_LALT); - } - return; -} \ No newline at end of file diff --git a/quantum/quantum.c b/quantum/quantum.c index e4d7b91852..1e91ac04a4 100644 --- a/quantum/quantum.c +++ b/quantum/quantum.c @@ -23,6 +23,18 @@ int offset = 7; #ifdef AUDIO_ENABLE bool music_activated = false; + float music_scale[][2] = SONG(MUSIC_SCALE_SOUND); + + // music sequencer + static bool music_sequence_recording = false; + static bool music_sequence_playing = false; + static float music_sequence[16] = {0}; + static uint8_t music_sequence_count = 0; + static uint8_t music_sequence_position = 0; + + static uint16_t music_sequence_timer = 0; + static uint16_t music_sequence_interval = 100; + #endif #ifdef MIDI_ENABLE @@ -44,6 +56,10 @@ uint8_t chord_keys[CHORDING_MAX] = {0}; uint8_t chord_key_count = 0; uint8_t chord_key_down = 0; +#ifdef UNICODE_ENABLE + static uint8_t input_mode; +#endif + bool keys_chord(uint8_t keys[]) { uint8_t keys_size = sizeof(keys)/sizeof(keys[0]); bool pass = true; @@ -66,14 +82,25 @@ bool keys_chord(uint8_t keys[]) { return (pass && (in == keys_size)); } -static bool music_sequence_recording = false; -static bool music_sequence_playing = false; -static float music_sequence[16] = {0}; -static uint8_t music_sequence_count = 0; -static uint8_t music_sequence_position = 0; +#ifdef UNICODE_ENABLE + +uint16_t hex_to_keycode(uint8_t hex) +{ + if (hex == 0x0) { + return KC_0; + } else if (hex < 0xA) { + return KC_1 + (hex - 0x1); + } else { + return KC_A + (hex - 0xA); + } +} + +void set_unicode_mode(uint8_t os_target) +{ + input_mode = os_target; +} -static uint16_t music_sequence_timer = 0; -static uint16_t music_sequence_interval = 100; +#endif bool process_record_quantum(keyrecord_t *record) { @@ -347,6 +374,44 @@ bool process_record_quantum(keyrecord_t *record) { #endif +#ifdef UNICODE_ENABLE + + if (keycode > UNICODE(0) && record->event.pressed) { + uint16_t unicode = keycode & 0x7FFF; + switch(input_mode) { + case UC_OSX: + register_code(KC_LALT); + break; + case UC_LNX: + register_code(KC_LCTL); + register_code(KC_LSFT); + register_code(KC_U); + unregister_code(KC_U); + break; + case UC_WIN: + register_code(KC_LALT); + register_code(KC_PPLS); + unregister_code(KC_PPLS); + break; + } + for(int i = 3; i >= 0; i--) { + uint8_t digit = ((unicode >> (i*4)) & 0xF); + register_code(hex_to_keycode(digit)); + unregister_code(hex_to_keycode(digit)); + } + switch(input_mode) { + case UC_OSX: + case UC_WIN: + unregister_code(KC_LALT); + break; + case UC_LNX: + unregister_code(KC_LCTL); + unregister_code(KC_LSFT); + break; + } + } + +#endif return process_action_kb(record); } diff --git a/quantum/quantum.h b/quantum/quantum.h index f4d8f09d48..d4da772890 100644 --- a/quantum/quantum.h +++ b/quantum/quantum.h @@ -13,9 +13,12 @@ #include "audio.h" #endif #ifdef MIDI_ENABLE - // #include #include #endif +#ifdef UNICODE_ENABLE + #include "unicode.h" +#endif + #include "action_layer.h" #include "eeconfig.h" #include @@ -27,24 +30,37 @@ extern uint32_t default_layer_state; extern uint32_t layer_state; #endif -bool music_activated; +#ifdef AUDIO_ENABLE + bool music_activated; +#endif -void matrix_init_kb(void); -void matrix_scan_kb(void); -bool process_action_kb(keyrecord_t *record); +#ifdef UNICODE_ENABLE + #define UC_OSX 0 + #define UC_LNX 1 + #define UC_WIN 2 + #define UC_BSD 3 -void leader_start(void); -void leader_end(void); + void set_unicode_input_mode(uint8_t os_target); +#endif + +#ifndef DISABLE_LEADER + void leader_start(void); + void leader_end(void); + + #ifndef LEADER_TIMEOUT + #define LEADER_TIMEOUT 200 + #endif + #define SEQ_ONE_KEY(key) if (leader_sequence[0] == (key) && leader_sequence[1] == 0 && leader_sequence[2] == 0) + #define SEQ_TWO_KEYS(key1, key2) if (leader_sequence[0] == (key1) && leader_sequence[1] == (key2) && leader_sequence[2] == 0) + #define SEQ_THREE_KEYS(key1, key2, key3) if (leader_sequence[0] == (key1) && leader_sequence[1] == (key2) && leader_sequence[2] == (key3)) -#ifndef LEADER_TIMEOUT - #define LEADER_TIMEOUT 200 + #define LEADER_EXTERNS() extern bool leading; extern uint16_t leader_time; extern uint16_t leader_sequence[3]; extern uint8_t leader_sequence_size + #define LEADER_DICTIONARY() if (leading && timer_elapsed(leader_time) > LEADER_TIMEOUT) #endif -#define SEQ_ONE_KEY(key) if (leader_sequence[0] == (key) && leader_sequence[1] == 0 && leader_sequence[2] == 0) -#define SEQ_TWO_KEYS(key1, key2) if (leader_sequence[0] == (key1) && leader_sequence[1] == (key2) && leader_sequence[2] == 0) -#define SEQ_THREE_KEYS(key1, key2, key3) if (leader_sequence[0] == (key1) && leader_sequence[1] == (key2) && leader_sequence[2] == (key3)) -#define LEADER_EXTERNS() extern bool leading; extern uint16_t leader_time; extern uint16_t leader_sequence[3]; extern uint8_t leader_sequence_size -#define LEADER_DICTIONARY() if (leading && timer_elapsed(leader_time) > LEADER_TIMEOUT) +void matrix_init_kb(void); +void matrix_scan_kb(void); +bool process_action_kb(keyrecord_t *record); bool is_music_on(void); void music_toggle(void); diff --git a/quantum/quantum.mk b/quantum/quantum.mk index e7ccfd6598..c099d67939 100644 --- a/quantum/quantum.mk +++ b/quantum/quantum.mk @@ -34,10 +34,6 @@ ifeq ($(strip $(AUDIO_ENABLE)), yes) SRC += $(QUANTUM_DIR)/audio/luts.c endif -ifeq ($(strip $(UNICODE_ENABLE)), yes) - SRC += $(QUANTUM_DIR)/keymap_unicode.c -endif - ifeq ($(strip $(RGBLIGHT_ENABLE)), yes) SRC += $(QUANTUM_DIR)/light_ws2812.c SRC += $(QUANTUM_DIR)/rgblight.c diff --git a/quantum/unicode.h b/quantum/unicode.h new file mode 100644 index 0000000000..756ec8bc3f --- /dev/null +++ b/quantum/unicode.h @@ -0,0 +1,128 @@ +/* +Copyright 2016 Jack Humbert +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#ifndef UNICODE_H +#define UNICODE_H + +#include "quantum.h" +#include + +#define UC_BSPC UC(0x0008) + +#define UC_SPC UC(0x0020) + +#define UC_EXLM UC(0x0021) +#define UC_DQUT UC(0x0022) +#define UC_HASH UC(0x0023) +#define UC_DLR UC(0x0024) +#define UC_PERC UC(0x0025) +#define UC_AMPR UC(0x0026) +#define UC_QUOT UC(0x0027) +#define UC_LPRN UC(0x0028) +#define UC_RPRN UC(0x0029) +#define UC_ASTR UC(0x002A) +#define UC_PLUS UC(0x002B) +#define UC_COMM UC(0x002C) +#define UC_DASH UC(0x002D) +#define UC_DOT UC(0x002E) +#define UC_SLSH UC(0x002F) + +#define UC_0 UC(0x0030) +#define UC_1 UC(0x0031) +#define UC_2 UC(0x0032) +#define UC_3 UC(0x0033) +#define UC_4 UC(0x0034) +#define UC_5 UC(0x0035) +#define UC_6 UC(0x0036) +#define UC_7 UC(0x0037) +#define UC_8 UC(0x0038) +#define UC_9 UC(0x0039) + +#define UC_COLN UC(0x003A) +#define UC_SCLN UC(0x003B) +#define UC_LT UC(0x003C) +#define UC_EQL UC(0x003D) +#define UC_GT UC(0x003E) +#define UC_QUES UC(0x003F) +#define UC_AT UC(0x0040) + +#define UC_A UC(0x0041) +#define UC_B UC(0x0042) +#define UC_C UC(0x0043) +#define UC_D UC(0x0044) +#define UC_E UC(0x0045) +#define UC_F UC(0x0046) +#define UC_G UC(0x0047) +#define UC_H UC(0x0048) +#define UC_I UC(0x0049) +#define UC_J UC(0x004A) +#define UC_K UC(0x004B) +#define UC_L UC(0x004C) +#define UC_M UC(0x004D) +#define UC_N UC(0x004E) +#define UC_O UC(0x004F) +#define UC_P UC(0x0050) +#define UC_Q UC(0x0051) +#define UC_R UC(0x0052) +#define UC_S UC(0x0053) +#define UC_T UC(0x0054) +#define UC_U UC(0x0055) +#define UC_V UC(0x0056) +#define UC_W UC(0x0057) +#define UC_X UC(0x0058) +#define UC_Y UC(0x0059) +#define UC_Z UC(0x005A) + +#define UC_LBRC UC(0x005B) +#define UC_BSLS UC(0x005C) +#define UC_RBRC UC(0x005D) +#define UC_CIRM UC(0x005E) +#define UC_UNDR UC(0x005F) + +#define UC_GRV UC(0x0060) + +#define UC_a UC(0x0061) +#define UC_b UC(0x0062) +#define UC_c UC(0x0063) +#define UC_d UC(0x0064) +#define UC_e UC(0x0065) +#define UC_f UC(0x0066) +#define UC_g UC(0x0067) +#define UC_h UC(0x0068) +#define UC_i UC(0x0069) +#define UC_j UC(0x006A) +#define UC_k UC(0x006B) +#define UC_l UC(0x006C) +#define UC_m UC(0x006D) +#define UC_n UC(0x006E) +#define UC_o UC(0x006F) +#define UC_p UC(0x0070) +#define UC_q UC(0x0071) +#define UC_r UC(0x0072) +#define UC_s UC(0x0073) +#define UC_t UC(0x0074) +#define UC_u UC(0x0075) +#define UC_v UC(0x0076) +#define UC_w UC(0x0077) +#define UC_x UC(0x0078) +#define UC_y UC(0x0079) +#define UC_z UC(0x007A) + +#define UC_LCBR UC(0x007B) +#define UC_PIPE UC(0x007C) +#define UC_RCBR UC(0x007D) +#define UC_TILD UC(0x007E) +#define UC_DEL UC(0x007F) + +#endif \ No newline at end of file diff --git a/tmk_core/common.mk b/tmk_core/common.mk index 9cb2eb8ecd..b5d7e39dd1 100644 --- a/tmk_core/common.mk +++ b/tmk_core/common.mk @@ -60,6 +60,10 @@ ifeq ($(strip $(AUDIO_ENABLE)), yes) OPT_DEFS += -DAUDIO_ENABLE endif +ifeq ($(strip $(UNICODE_ENABLE)), yes) + OPT_DEFS += -DUNICODE_ENABLE +endif + ifeq ($(strip $(USB_6KRO_ENABLE)), yes) OPT_DEFS += -DUSB_6KRO_ENABLE endif -- cgit v1.2.1 From 0275d444d77c9d85d2189b09d8813fb76dc4d566 Mon Sep 17 00:00:00 2001 From: purpleP Date: Thu, 19 May 2016 15:36:28 +0300 Subject: fixed small bug with AUDIO_ENABLED (#339) --- quantum/quantum.c | 43 ++++++++++++++++++++++--------------------- 1 file changed, 22 insertions(+), 21 deletions(-) diff --git a/quantum/quantum.c b/quantum/quantum.c index 1e91ac04a4..34c575af42 100644 --- a/quantum/quantum.c +++ b/quantum/quantum.c @@ -20,7 +20,7 @@ void leader_end(void) {} uint8_t starting_note = 0x0C; int offset = 7; - + #ifdef AUDIO_ENABLE bool music_activated = false; float music_scale[][2] = SONG(MUSIC_SCALE_SOUND); @@ -435,28 +435,29 @@ void matrix_scan_quantum() { matrix_scan_kb(); } +#ifdef AUDIO_ENABLE + bool is_music_on(void) { + return (music_activated != 0); + } -bool is_music_on(void) { - return (music_activated != 0); -} - -void music_toggle(void) { - if (!music_activated) { - music_on(); - } else { - music_off(); - } -} + void music_toggle(void) { + if (!music_activated) { + music_on(); + } else { + music_off(); + } + } -void music_on(void) { - music_activated = 1; - music_on_user(); -} + void music_on(void) { + music_activated = 1; + music_on_user(); + } -void music_off(void) { - music_activated = 0; - stop_all_notes(); -} + void music_off(void) { + music_activated = 0; + stop_all_notes(); + } +#endif __attribute__ ((weak)) -void music_on_user() {} \ No newline at end of file +void music_on_user() {} -- cgit v1.2.1 From d66aa0abf96b5e887250cf0a7fa5e575f18c5a91 Mon Sep 17 00:00:00 2001 From: Peter Date: Fri, 20 May 2016 17:14:08 +0200 Subject: adds petereichinger's planck keymap (#340) * Add custom keymap * A little readme and remove old layout comments --- keyboard/planck/keymaps/pete/README.md | 14 ++ keyboard/planck/keymaps/pete/keymap.c | 223 +++++++++++++++++++++++++++++++ keyboard/planck/keymaps/pete/makefile.mk | 2 + 3 files changed, 239 insertions(+) create mode 100644 keyboard/planck/keymaps/pete/README.md create mode 100644 keyboard/planck/keymaps/pete/keymap.c create mode 100644 keyboard/planck/keymaps/pete/makefile.mk diff --git a/keyboard/planck/keymaps/pete/README.md b/keyboard/planck/keymaps/pete/README.md new file mode 100644 index 0000000000..3cf594f3a9 --- /dev/null +++ b/keyboard/planck/keymaps/pete/README.md @@ -0,0 +1,14 @@ +# Planck Layout by Pete + +This layout is based on the default layout but uses a FN key in the bottom left corner instead of the shift / backlight key. +On the FN layer you can do the following things + +- Step through back light +- Put a mac to sleep +- The Fxx keys in a block to click with the right hand +- The delete key in the upper right corner +- Quick access to screenshot functions +- Control volume and media playback +- Home/PgDown/PgUp/End buttons where the arrow keys are + +Pressing the lower and raise buttons allows to reset and change from QWERT to Colemak or Dvorak. diff --git a/keyboard/planck/keymaps/pete/keymap.c b/keyboard/planck/keymaps/pete/keymap.c new file mode 100644 index 0000000000..57cab65a31 --- /dev/null +++ b/keyboard/planck/keymaps/pete/keymap.c @@ -0,0 +1,223 @@ +// This is the canonical layout file for the Quantum project. If you want to add another keyboard, +// this is the style you want to emulate. + +#include "planck.h" +#include "action_layer.h" +#ifdef AUDIO_ENABLE + #include "audio.h" +#endif +#include "eeconfig.h" + +extern keymap_config_t keymap_config; + +// 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 _QWERTY 0 +#define _COLEMAK 1 +#define _DVORAK 2 +#define _LOWER 3 +#define _RAISE 4 +#define _FCT 5 +#define _SETUP 6 +#define _MICMUTE 16 + +// Macro name shortcuts +#define QWERTY M(_QWERTY) +#define COLEMAK M(_COLEMAK) +#define DVORAK M(_DVORAK) +#define LOWER M(_LOWER) +#define RAISE M(_RAISE) +#define FCT M(_FCT) +#define MICMUTE M(_MICMUTE) + +#define MACPRNT LGUI(LSFT(KC_3)) +#define MACPRNT2 LGUI(LSFT(KC_4)) +#define CYCLWIN LGUI(KC_GRV) +#define MAC_SLEP LSFT(LCTL(KC_POWER)) + +// Fillers to make layering more clear +#define _______ KC_TRNS +#define XXXXXXX KC_NO + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +[_QWERTY] = { + {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, + {KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, + {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT }, + {FCT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} +}, + +[_COLEMAK] = { + {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC}, + {KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT}, + {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT }, + {FCT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} +}, + +[_DVORAK] = { + {KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC}, + {KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH}, + {KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT }, + {FCT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} +}, + +[_LOWER] = { + {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC}, + {_______, _______, _______, _______, _______, _______, _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, + {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} +}, + +[_RAISE] = { + {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, + {_______, _______, _______, _______, _______, _______, _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, + {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} +}, + +[_FCT] = { /* Function */ + {BL_STEP, MAC_SLEP,XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F4, KC_DELT}, + {_______, MICMUTE, KC_MUTE, KC_VOLD, KC_VOLU, XXXXXXX, XXXXXXX, KC_F5, KC_F6, KC_F7, KC_F8, MACPRNT}, + {_______, CYCLWIN, KC_MPRV, KC_MPLY, KC_MNXT, XXXXXXX, XXXXXXX, KC_F9, KC_F10, KC_F11, KC_F12, MACPRNT2}, + {FCT, _______, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_HOME, KC_PGDOWN,KC_PGUP,KC_END } +}, + +[_SETUP] = { /* Setup */ + {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, + {_______, _______, _______, _______, _______, _______, _______, QWERTY, COLEMAK, DVORAK, _______, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, + {_______, _______, _______, _______, _______, RESET, RESET, _______, _______, _______, _______, _______} +} +}; + +const uint16_t PROGMEM fn_actions[] = { + +}; + +#ifdef AUDIO_ENABLE +float tone_startup[][2] = { + {440.0*pow(2.0,(31)/12.0), 12}, + {440.0*pow(2.0,(28)/12.0), 8}, + {440.0*pow(2.0,(19)/12.0), 8}, + {440.0*pow(2.0,(24)/12.0), 8}, + {440.0*pow(2.0,(28)/12.0), 20} +}; + +float tone_qwerty[][2] = SONG(QWERTY_SOUND); +float tone_dvorak[][2] = SONG(DVORAK_SOUND); +float tone_colemak[][2] = SONG(COLEMAK_SOUND); +float tone_plover[][2] = SONG(PLOVER_SOUND); +float tone_plover_gb[][2] = SONG(PLOVER_GOODBYE_SOUND); + +float music_scale[][2] = SONG(MUSIC_SCALE_SOUND); +float goodbye[][2] = SONG(GOODBYE_SOUND); +#endif + + +void persistant_default_layer_set(uint16_t default_layer) { + eeconfig_update_default_layer(default_layer); + default_layer_set(default_layer); +} + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + switch(id) { + case _QWERTY: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_qwerty, false, 0); + #endif + persistant_default_layer_set(1UL<<_QWERTY); + } + break; + case _COLEMAK: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_colemak, false, 0); + #endif + persistant_default_layer_set(1UL<<_COLEMAK); + } + break; + case _DVORAK: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_dvorak, false, 0); + #endif + persistant_default_layer_set(1UL<<_DVORAK); + } + break; + case _LOWER: + if (record->event.pressed) { + layer_on(_LOWER); + update_tri_layer(_LOWER, _RAISE, _SETUP); + } else { + layer_off(_LOWER); + update_tri_layer(_LOWER, _RAISE, _SETUP); + } + break; + case _RAISE: + if (record->event.pressed) { + layer_on(_RAISE); + update_tri_layer(_LOWER, _RAISE, _SETUP); + } else { + layer_off(_RAISE); + update_tri_layer(_LOWER, _RAISE, _SETUP); + } + break; + case _FCT: + if (record->event.pressed) { + layer_on(_FCT); + } else { + layer_off(_FCT); + } + break; + case _MICMUTE: + if (record->event.pressed) { + register_code(KC_RSFT); + register_code(KC_RCTL); + register_code(KC_RALT); + register_code(KC_RGUI); + } else { + unregister_code(KC_RSFT); + unregister_code(KC_RCTL); + unregister_code(KC_RALT); + unregister_code(KC_RGUI); + } + break; + + } + return MACRO_NONE; +}; + +void matrix_init_user(void) { + #ifdef AUDIO_ENABLE + _delay_ms(20); // stops the tick + PLAY_NOTE_ARRAY(tone_startup, false, 0); + #endif +} + +#ifdef AUDIO_ENABLE +void play_goodbye_tone() +{ + PLAY_NOTE_ARRAY(goodbye, false, 0); + _delay_ms(150); +} + +uint8_t starting_note = 0x0C; +int offset = 0; + +void process_action_user(keyrecord_t *record) { + + if (IS_LAYER_ON(_MUSIC)) { + if (record->event.pressed) { + play_note(((double)220.0)*pow(2.0, -4.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row)), 0xF); + } else { + stop_note(((double)220.0)*pow(2.0, -4.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row))); + } + } + +} +#endif diff --git a/keyboard/planck/keymaps/pete/makefile.mk b/keyboard/planck/keymaps/pete/makefile.mk new file mode 100644 index 0000000000..812264cb35 --- /dev/null +++ b/keyboard/planck/keymaps/pete/makefile.mk @@ -0,0 +1,2 @@ +AUDIO_ENABLE = no +NKRO_ENABLE = yes \ No newline at end of file -- cgit v1.2.1 From aaa758f1d3f97dda39879f2b055ad2da9680adfe Mon Sep 17 00:00:00 2001 From: Eric Tang Date: Mon, 23 May 2016 20:42:21 -0700 Subject: Optimize matrix scanning (#343) --- HAND_WIRE.md | 26 ++- keyboard/Bantam44/config.h | 7 +- keyboard/atomic/config.h | 17 +- keyboard/atomic/keymaps/pvc/config.h | 7 +- keyboard/atreus/config.h | 12 +- keyboard/clueboard1/config.h | 25 ++- keyboard/clueboard2/config.h | 19 +- keyboard/cluepad/config.h | 19 +- keyboard/gh60_rev_c/config.h | 17 +- keyboard/jd45/config.h | 9 +- keyboard/planck/config.h | 7 +- keyboard/planck/keymaps/pvc/config.h | 7 +- keyboard/preonic/config.h | 7 +- keyboard/retro_refit/config.h | 9 +- quantum/config_common.h | 125 ++++++------ quantum/matrix.c | 369 +++++++++++++---------------------- quantum/template/config.h | 17 +- tmk_core/common/avr/suspend.c | 5 +- tmk_core/common/bootmagic.c | 14 +- tmk_core/common/keyboard.c | 134 ++++++------- tmk_core/common/matrix.h | 61 +++--- 21 files changed, 408 insertions(+), 505 deletions(-) diff --git a/HAND_WIRE.md b/HAND_WIRE.md index 3f4d75b272..0b7367eda3 100644 --- a/HAND_WIRE.md +++ b/HAND_WIRE.md @@ -51,11 +51,11 @@ A problem arises when you start pressing more than one key at a time. Looking at x row0 ---(-+-0)---(-+-1) x row0 ---(-+-0)---(-+-1) | | | | x row1 ---(key2)---(-+-3) x row1 ---(key2)---(-+-3) - + Remember that this ^ is still connected to row1 The data we get from that is: - + col0: 0b11 col1: 0b11 │└row0 @@ -73,7 +73,7 @@ Which isn't accurate, since we only have 3 keys pressed down, not all 4. This be │ │ | │ (key2) (key3) (key2) (key3) ! ! ! ! - row1 ─────┴────────┘ row1 ─────┴────────┘ + row1 ─────┴────────┘ row1 ─────┴────────┘ In practical applications, the black line of the diode will be placed facing the row, and away from the keyswitch - the `!` in this case is the diode, where the gap represents the black line. A good way to remember this is to think of this symbol: `>|` @@ -89,10 +89,10 @@ Now when we press the three keys, invoking what would be a ghosting scenario: │ │ │ │ (key2) (┌─┘3) (key2) (┌─┘3) ! ! ! ! - row1 ─────┴────────┘ x row1 ─────┴────────┘ + row1 ─────┴────────┘ x row1 ─────┴────────┘ Things act as they should! Which will get us the following data: - + col0: 0b01 col1: 0b11 │└row0 @@ -106,7 +106,7 @@ The firmware can then use this correct data to detect what it should do, and eve When starting this, you should have all of your stabilisers and keyswitches already installed (and optionally keycaps). If you're using a Cherry-type stabiliser (plate-mounted only, obviously), you'll need to install that before your keyswitches. If you're using Costar ones, you can installed them afterwards. -To make things easier on yourself, make sure all of the keyswitches are oriented the same way (if they can be - not all layouts support this). Despite this, it's important to remember that the contacts on the keyswitches are completely symmetrical. We'll be using the keyswitch's left side contact for wiring the rows, and the right side one for wiring the columns. +To make things easier on yourself, make sure all of the keyswitches are oriented the same way (if they can be - not all layouts support this). Despite this, it's important to remember that the contacts on the keyswitches are completely symmetrical. We'll be using the keyswitch's left side contact for wiring the rows, and the right side one for wiring the columns. Get your soldering iron heated-up and collect the rest of the materials from the part list at the beginning of the guide. Place your keyboard so that the bottoms of the keyswitches are accessible - it may be a good idea to place it on a cloth to protect your keyswitches/keycaps. @@ -155,7 +155,7 @@ When all of the diodes are completely soldered, it's a good idea to quickly insp ### Soldering the columns -You'll have some options in the next process - it's a good idea to insulate the column wires (since the diodes aren't), but if you're careful enough, you can use exposed wires for the columns - it's not recommended, though. If you're using single-cored wire, stripping the plastic off of the whole wire and feeding it back on is probably the best option, but can be difficult depending on the size and materials. You'll want to leave parts of the wire exposed where you're going to be solder it onto the keyswitch. +You'll have some options in the next process - it's a good idea to insulate the column wires (since the diodes aren't), but if you're careful enough, you can use exposed wires for the columns - it's not recommended, though. If you're using single-cored wire, stripping the plastic off of the whole wire and feeding it back on is probably the best option, but can be difficult depending on the size and materials. You'll want to leave parts of the wire exposed where you're going to be solder it onto the keyswitch. If you're using stranded wire, it's probably easiest to just use a lot of small wires to connect each keyswitch along the column. It's possible to use one and melt through the insulation, but this isn't recommended, will produce even more harmful fumes, and can ruin your soldering iron. @@ -195,15 +195,13 @@ You'll want to navigate to the `keyboard//` folder by typing, like #### config.h -The first thing we're going to want to modify is the `config.h` file. On line 32 and 33, you'll see `MATRIX_ROWS` and `MATRIX_COLS` - set both these variables to however many rows and columns you have on your keyboard. - -On line 38 and 39 you'll see the `COLS` and `ROWS` definitions - this is where you'll enter the pins you used, in order (left-to-right when looking at the top of the keyboard, but right-to-left when looking at the bottom). +The first thing you're going to want to modify is the `config.h` file. Find `MATRIX_ROWS` and `MATRIX_COLS` and them to match the dimensions of your keyboard's matrix. -There are some other variables that you'll be able to modify (lines 23-29), but it's not necessary to do that now (or ever, really). +Farther down are `MATRIX_ROW_PINS` and `MATRIX_COL_PINS`. Change their definitions to match how you wired up your matrix (looking from the top of the keyboard, the rows run top-to-bottom and the columns run left-to-right). Likewise, change the definition of `UNUSED_PINS` to match the pins you did not use (this will save power). #### \.h -The next file you'll want to look at is `.h`. You're going to want to rewrite the `KEYMAP` definition - the format and syntax here is extremely important, so pay attention to how things are setup. The first half of the definition are considered the arguments - this is the format that you'll be following in your keymap later on, so you'll want to have as many k*xy* variables here as you do keys. The second half is the part that the firmware actually looks at, and will contain gaps depending on how you wired your matrix. +The next file you'll want to look at is `.h`. You're going to want to rewrite the `KEYMAP` definition - the format and syntax here is extremely important, so pay attention to how things are setup. The first half of the definition are considered the arguments - this is the format that you'll be following in your keymap later on, so you'll want to have as many k*xy* variables here as you do keys. The second half is the part that the firmware actually looks at, and will contain gaps depending on how you wired your matrix. We'll dive into how this will work with the following example. Say we have a keyboard like this: @@ -230,7 +228,7 @@ The middle column is unused on the bottom row in this example. Our `KEYMAP` defi { \ { k00, k01, k02 }, \ { k10, KC_NO, k11 }, \ - } + } Notice how the top half is spaced to resemble our physical layout - this helps us understand which keys are associated with which columns. The bottom half uses the keycode `KC_NO` where there is no keyswitch wired in. It's easiest to keep the bottom half aligned in a grid to help us make sense of how the firmware actually sees the wiring. @@ -251,7 +249,7 @@ This would require our `KEYMAP` definition to look like this: { \ { k00, k01, k02 }, \ { k10, k11, KC_NO }, \ - } + } Notice how the `k11` and `KC_NO` switched places to represent the wiring, and the unused final column on the bottom row. Sometimes it'll make more sense to put a keyswitch on a particular column, but in the end, it won't matter, as long as all of them are accounted for. You can use this process to write out the `KEYMAP` for your entire keyboard - be sure to remember that your keyboard is actually backwards when looking at the underside of it. diff --git a/keyboard/Bantam44/config.h b/keyboard/Bantam44/config.h index 26d680704d..a55f629990 100644 --- a/keyboard/Bantam44/config.h +++ b/keyboard/Bantam44/config.h @@ -35,8 +35,9 @@ along with this program. If not, see . // Planck PCB default pin-out // Change this to how you wired your keyboard // COLS: Left to right, ROWS: Top to bottom -#define COLS (int []){ B0, B1, B2, B3, B7, D0, B6, F7, F6, F5, F4, F1 } -#define ROWS (int []){ F0, D6, D4, D5 } +#define MATRIX_ROW_PINS { F0, D6, D4, D5 } +#define MATRIX_COL_PINS { B0, B1, B2, B3, B7, D0, B6, F7, F6, F5, F4, F1 } +#define UNUSED_PINS /* COL2ROW or ROW2COL */ #define DIODE_DIRECTION COL2ROW @@ -48,7 +49,7 @@ along with this program. If not, see . #define BACKLIGHT_LEVELS 3 /* Set 0 if debouncing isn't needed */ -#define DEBOUNCE 5 +#define DEBOUNCING_DELAY 5 /* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ #define LOCKING_SUPPORT_ENABLE diff --git a/keyboard/atomic/config.h b/keyboard/atomic/config.h index 1b34decf9c..bf9550e948 100644 --- a/keyboard/atomic/config.h +++ b/keyboard/atomic/config.h @@ -41,15 +41,16 @@ along with this program. If not, see . * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) * -*/ -#define COLS (int []){ F1, F0, B0, C7, F4, F5, F6, F7, D4, D6, B4, D7, D3, D2, D1 } -#define ROWS (int []){ D0, D5, B5, B6, C6 } +*/ +#define MATRIX_ROW_PINS { D0, D5, B5, B6, C6 } +#define MATRIX_COL_PINS { F1, F0, B0, C7, F4, F5, F6, F7, D4, D6, B4, D7, D3, D2, D1 } +#define UNUSED_PINS /* COL2ROW or ROW2COL */ #define DIODE_DIRECTION COL2ROW /* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ -#define DEBOUNCE 5 +#define DEBOUNCING_DELAY 5 /* define if matrix has ghost (lacks anti-ghosting diodes) */ //#define MATRIX_HAS_GHOST @@ -62,17 +63,17 @@ along with this program. If not, see . /* Locking resynchronize hack */ #define LOCKING_RESYNC_ENABLE -/* +/* * Force NKRO * - * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the * makefile for this to work.) * * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) * until the next keyboard reset. * - * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is * fully operational during normal computer usage. * * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) @@ -90,7 +91,7 @@ along with this program. If not, see . * the keyboard. They are best used in combination with the HID Listen program, * found here: https://www.pjrc.com/teensy/hid_listen.html * - * The options below allow the magic key functionality to be changed. This is + * The options below allow the magic key functionality to be changed. This is * useful if your keyboard/keypad is missing keys and you want magic key support. * */ diff --git a/keyboard/atomic/keymaps/pvc/config.h b/keyboard/atomic/keymaps/pvc/config.h index 5e956286b5..1473aac34f 100644 --- a/keyboard/atomic/keymaps/pvc/config.h +++ b/keyboard/atomic/keymaps/pvc/config.h @@ -42,14 +42,15 @@ along with this program. If not, see . * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) * */ -#define COLS (int []){ F1, F0, B0, C7, F4, F5, F6, F7, D4, D6, B4, D7, D3, D2, D1 } -#define ROWS (int []){ D0, D5, B5, B6, B3 } +#define MATRIX_ROW_PINS { D0, D5, B5, B6, B3 } +#define MATRIX_COL_PINS { F1, F0, B0, C7, F4, F5, F6, F7, D4, D6, B4, D7, D3, D2, D1 } +#define UNUSED_PINS /* COL2ROW or ROW2COL */ #define DIODE_DIRECTION COL2ROW /* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ -#define DEBOUNCE 5 +#define DEBOUNCING_DELAY 5 /* define if matrix has ghost (lacks anti-ghosting diodes) */ //#define MATRIX_HAS_GHOST diff --git a/keyboard/atreus/config.h b/keyboard/atreus/config.h index 55d3b62b92..624d90188c 100644 --- a/keyboard/atreus/config.h +++ b/keyboard/atreus/config.h @@ -36,11 +36,13 @@ along with this program. If not, see . // Change this to how you wired your keyboard // COLS: Left to right, ROWS: Top to bottom #if defined(ATREUS_ASTAR) - #define COLS (int []){ D7, C6, B5, B4, E6, D4, B6, F6, F7, D6, B7 } - #define ROWS (int []){ D0, D1, D3, D2 } +# define MATRIX_ROW_PINS { D0, D1, D3, D2 } +# define MATRIX_COL_PINS { D7, C6, B5, B4, E6, D4, B6, F6, F7, D6, B7 } +# define UNUSED_PINS #elif defined(ATREUS_TEENSY2) - #define COLS (int []){ F6, F5, F4, B7, B6, B5, B4, B3, B2, B1, B0} - #define ROWS (int []){ D0, D1, D2, D3 } +# define MATRIX_ROW_PINS { D0, D1, D2, D3 } +# define MATRIX_COL_PINS { F6, F5, F4, B7, B6, B5, B4, B3, B2, B1, B0 } +# define UNUSED_PINS #endif /* COL2ROW or ROW2COL */ @@ -53,7 +55,7 @@ along with this program. If not, see . //#define BACKLIGHT_LEVELS 3 /* Set 0 if debouncing isn't needed */ -#define DEBOUNCE 5 +#define DEBOUNCING_DELAY 5 /* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ #define LOCKING_SUPPORT_ENABLE diff --git a/keyboard/clueboard1/config.h b/keyboard/clueboard1/config.h index 2b20c3873d..16338ddb03 100644 --- a/keyboard/clueboard1/config.h +++ b/keyboard/clueboard1/config.h @@ -32,19 +32,18 @@ along with this program. If not, see . #define MATRIX_ROWS 5 #define MATRIX_COLS 16 -// COLS: Left to right, ROWS: Top to bottom - +// ROWS: Top to bottom, COLS: Left to right /* Column pin configuration - * col: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 - * pin: B3 F1 F4 F5 F6 C7 C6 B6 B5 B4 D7 D6 D4 F7 B0 B1 - */ -#define COLS (int []){ B3, F1, F4, F5, F6, C7, C6, B6, B5, B4, D7, D6, D4, F7, B0, B1 } - - /* Row pin configuration - * row: 0 1 2 3 4 - * pin: D1 D0 D2 D5 D3 - */ -#define ROWS (int []){ D1, D0, D2, D5, D3 } +* col: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 +* pin: B3 F1 F4 F5 F6 C7 C6 B6 B5 B4 D7 D6 D4 F7 B0 B1 +*/ +#define MATRIX_COL_PINS { B3, F1, F4, F5, F6, C7, C6, B6, B5, B4, D7, D6, D4, F7, B0, B1 } +/* Row pin configuration +* row: 0 1 2 3 4 +* pin: D1 D0 D2 D5 D3 +*/ +#define MATRIX_ROW_PINS { D1, D0, D2, D5, D3 } +#define UNUSED_PINS /* COL2ROW or ROW2COL */ #define DIODE_DIRECTION COL2ROW @@ -53,7 +52,7 @@ along with this program. If not, see . //#define MATRIX_HAS_GHOST /* Set 0 if debouncing isn't needed */ -#define DEBOUNCE 5 +#define DEBOUNCING_DELAY 5 /* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ #define LOCKING_SUPPORT_ENABLE diff --git a/keyboard/clueboard2/config.h b/keyboard/clueboard2/config.h index 04166c20f6..2887519afd 100644 --- a/keyboard/clueboard2/config.h +++ b/keyboard/clueboard2/config.h @@ -32,19 +32,18 @@ along with this program. If not, see . #define MATRIX_ROWS 10 #define MATRIX_COLS 8 -// COLS: Left to right, ROWS: Top to bottom - +// ROWS: Top to bottom, COLS: Left to right +/* Row pin configuration +* row: 0 1 2 3 4 5 6 7 8 9 +* pin: B2 C7 C6 B6 B5 B0 B3 D5 D3 D2 +*/ +#define MATRIX_ROW_PINS { B2, C7, C6, B6, B5, B0, B3, D5, D3, D2 } /* Column pin configuration * col: 0 1 2 3 4 5 6 7 * pin: F0 F1 F4 F5 F6 F7 E6 B1 */ -#define COLS (int []){ F0, F1, F4, F5, F6, F7, E6, B1 } - - /* Row pin configuration - * row: 0 1 2 3 4 5 6 7 8 9 - * pin: B2 C7 C6 B6 B5 B0 B3 D5 D3 D2 - */ -#define ROWS (int []){ B2, C7, C6, B6, B5, B0, B3, D5, D3, D2 } +#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, E6, B1 } +#define UNUSED_PINS /* COL2ROW or ROW2COL */ #define DIODE_DIRECTION COL2ROW @@ -53,7 +52,7 @@ along with this program. If not, see . //#define MATRIX_HAS_GHOST /* Set 0 if debouncing isn't needed */ -#define DEBOUNCE 5 +#define DEBOUNCING_DELAY 5 /* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ #define LOCKING_SUPPORT_ENABLE diff --git a/keyboard/cluepad/config.h b/keyboard/cluepad/config.h index 5ed421a6e0..0955e0f702 100644 --- a/keyboard/cluepad/config.h +++ b/keyboard/cluepad/config.h @@ -32,19 +32,18 @@ along with this program. If not, see . #define MATRIX_ROWS 5 #define MATRIX_COLS 4 -// COLS: Left to right, ROWS: Top to bottom - +// ROWS: Top to bottom, COLS: Left to right +/* Row pin configuration +* row: 0 1 2 3 4 +* pin: +*/ +#define MATRIX_ROW_PINS { B0, D3, D5, D4, D6 } /* Column pin configuration * col: 0 1 2 3 * pin: F4 E6 B1 D2 */ -#define COLS (int []){ F4, E6, B1, D2 } - - /* Row pin configuration - * row: 0 1 2 3 4 - * pin: - */ -#define ROWS (int []){ B0, D3, D5, D4, D6 } +#define MATRIX_COL_PINS { F4, E6, B1, D2 } +#define UNUSED_PINS /* COL2ROW or ROW2COL */ #define DIODE_DIRECTION COL2ROW @@ -53,7 +52,7 @@ along with this program. If not, see . //#define MATRIX_HAS_GHOST /* Set 0 if debouncing isn't needed */ -#define DEBOUNCE 5 +#define DEBOUNCING_DELAY 5 /* Number of backlighting levels */ #define BACKLIGHT_LEVELS 3 diff --git a/keyboard/gh60_rev_c/config.h b/keyboard/gh60_rev_c/config.h index 2fd8f57439..827c08d1be 100644 --- a/keyboard/gh60_rev_c/config.h +++ b/keyboard/gh60_rev_c/config.h @@ -41,15 +41,16 @@ along with this program. If not, see . * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) * -*/ -#define COLS (int []){ F0, F1, E6, C7, C6, B6, D4, B1, B7, B5, B4, D7, D6, B3 } -#define ROWS (int []){ D0, D1, D2, D3, D5 } +*/ +#define MATRIX_ROW_PINS { D0, D1, D2, D3, D5 } +#define MATRIX_COL_PINS { F0, F1, E6, C7, C6, B6, D4, B1, B7, B5, B4, D7, D6, B3 } +#define UNUSED_PINS /* COL2ROW or ROW2COL */ #define DIODE_DIRECTION COL2ROW /* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ -#define DEBOUNCE 5 +#define DEBOUNCING_DELAY 5 /* define if matrix has ghost (lacks anti-ghosting diodes) */ //#define MATRIX_HAS_GHOST @@ -62,17 +63,17 @@ along with this program. If not, see . /* Locking resynchronize hack */ #define LOCKING_RESYNC_ENABLE -/* +/* * Force NKRO * - * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the * makefile for this to work.) * * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) * until the next keyboard reset. * - * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is * fully operational during normal computer usage. * * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) @@ -90,7 +91,7 @@ along with this program. If not, see . * the keyboard. They are best used in combination with the HID Listen program, * found here: https://www.pjrc.com/teensy/hid_listen.html * - * The options below allow the magic key functionality to be changed. This is + * The options below allow the magic key functionality to be changed. This is * useful if your keyboard/keypad is missing keys and you want magic key support. * */ diff --git a/keyboard/jd45/config.h b/keyboard/jd45/config.h index 1b81fe32ed..ffedb6a1a9 100644 --- a/keyboard/jd45/config.h +++ b/keyboard/jd45/config.h @@ -30,11 +30,12 @@ along with this program. If not, see . /* key matrix size */ #define MATRIX_ROWS 4 -#define MATRIX_COLS 13 +#define MATRIX_COLS 13 /* Planck PCB default pin-out */ -#define COLS (int []){F4, D7, B5, B6, C6, C7, D4, D6, D5, D0, D1, D2, B0} -#define ROWS (int []){F0, F1, F5, B4} +#define MATRIX_ROW_PINS { F0, F1, F5, B4 } +#define MATRIX_COL_PINS { F4, D7, B5, B6, C6, C7, D4, D6, D5, D0, D1, D2, B0 } +#define UNUSED_PINS /* COL2ROW or ROW2COL */ #define DIODE_DIRECTION COL2ROW @@ -46,7 +47,7 @@ along with this program. If not, see . #define BACKLIGHT_LEVELS 3 /* Set 0 if debouncing isn't needed */ -#define DEBOUNCE 5 +#define DEBOUNCING_DELAY 5 /* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ #define LOCKING_SUPPORT_ENABLE diff --git a/keyboard/planck/config.h b/keyboard/planck/config.h index 7d64f09773..b648931081 100644 --- a/keyboard/planck/config.h +++ b/keyboard/planck/config.h @@ -33,8 +33,9 @@ along with this program. If not, see . #define MATRIX_COLS 12 /* Planck PCB default pin-out */ -#define COLS (int []){ F1, F0, B0, C7, F4, F5, F6, F7, D4, D6, B4, D7 } -#define ROWS (int []){ D0, D5, B5, B6 } +#define MATRIX_ROW_PINS { D0, D5, B5, B6 } +#define MATRIX_COL_PINS { F1, F0, B0, C7, F4, F5, F6, F7, D4, D6, B4, D7 } +#define UNUSED_PINS /* COL2ROW or ROW2COL */ #define DIODE_DIRECTION COL2ROW @@ -46,7 +47,7 @@ along with this program. If not, see . #define BACKLIGHT_LEVELS 3 /* Set 0 if debouncing isn't needed */ -#define DEBOUNCE 5 +#define DEBOUNCING_DELAY 5 /* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ #define LOCKING_SUPPORT_ENABLE diff --git a/keyboard/planck/keymaps/pvc/config.h b/keyboard/planck/keymaps/pvc/config.h index d435cc795c..b8960038ab 100644 --- a/keyboard/planck/keymaps/pvc/config.h +++ b/keyboard/planck/keymaps/pvc/config.h @@ -33,8 +33,9 @@ along with this program. If not, see . #define MATRIX_COLS 12 /* Planck PCB default pin-out */ -#define COLS (int []){ F1, F0, B0, C7, F4, F5, F6, F7, D4, D6, B4, D7 } -#define ROWS (int []){ D0, D5, B5, B6 } +#define MATRIX_ROW_PINS { D0, D5, B5, B6 } +#define MATRIX_COL_PINS { F1, F0, B0, C7, F4, F5, F6, F7, D4, D6, B4, D7 } +#define UNUSED_PINS /* COL2ROW or ROW2COL */ #define DIODE_DIRECTION COL2ROW @@ -46,7 +47,7 @@ along with this program. If not, see . #define BACKLIGHT_LEVELS 3 /* Set 0 if debouncing isn't needed */ -#define DEBOUNCE 5 +#define DEBOUNCING_DELAY 5 /* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ #define LOCKING_SUPPORT_ENABLE diff --git a/keyboard/preonic/config.h b/keyboard/preonic/config.h index bb9d29dab7..e8d0e82fc9 100644 --- a/keyboard/preonic/config.h +++ b/keyboard/preonic/config.h @@ -33,8 +33,9 @@ along with this program. If not, see . #define MATRIX_COLS 12 /* Planck PCB default pin-out */ -#define COLS (int []){ F1, F0, B0, C7, F4, F5, F6, F7, D4, D6, B4, D7 } -#define ROWS (int []){ D2, D5, B5, B6, D3 } +#define MATRIX_ROW_PINS { D2, D5, B5, B6, D3 } +#define MATRIX_COL_PINS { F1, F0, B0, C7, F4, F5, F6, F7, D4, D6, B4, D7 } +#define UNUSED_PINS /* COL2ROW or ROW2COL */ #define DIODE_DIRECTION COL2ROW @@ -46,7 +47,7 @@ along with this program. If not, see . #define BACKLIGHT_LEVELS 3 /* Set 0 if debouncing isn't needed */ -#define DEBOUNCE 5 +#define DEBOUNCING_DELAY 5 /* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ #define LOCKING_SUPPORT_ENABLE diff --git a/keyboard/retro_refit/config.h b/keyboard/retro_refit/config.h index 05fceb92b2..f2194e550c 100644 --- a/keyboard/retro_refit/config.h +++ b/keyboard/retro_refit/config.h @@ -33,8 +33,9 @@ along with this program. If not, see . #define MATRIX_COLS 8 // See note in retro_refit.h for an explanation of how this matrix is wired up -#define COLS (int []){ B0, B1, B2, B3, D2, D3, C7, D5 } -#define ROWS (int []){ D4, D7, B4, B5, B6, F7, F6, F5, F4, F1, F0 } +#define MATRIX_ROW_PINS { D4, D7, B4, B5, B6, F7, F6, F5, F4, F1, F0 } +#define MATRIX_COL_PINS { B0, B1, B2, B3, D2, D3, C7, D5 } +#define UNUSED_PINS /* COL2ROW or ROW2COL */ #define DIODE_DIRECTION COL2ROW @@ -46,7 +47,7 @@ along with this program. If not, see . #define BACKLIGHT_LEVELS 0 /* Set 0 if debouncing isn't needed */ -#define DEBOUNCE 5 +#define DEBOUNCING_DELAY 5 /* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ #define LOCKING_SUPPORT_ENABLE @@ -119,4 +120,4 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -#endif \ No newline at end of file +#endif diff --git a/quantum/config_common.h b/quantum/config_common.h index da53fce89b..02f11d979c 100644 --- a/quantum/config_common.h +++ b/quantum/config_common.h @@ -1,70 +1,74 @@ #ifndef CONFIG_DEFINITIONS_H #define CONFIG_DEFINITIONS_H -#define B0 0x20 -#define B1 0x21 -#define B2 0x22 -#define B3 0x23 -#define B4 0x24 -#define B5 0x25 -#define B6 0x26 -#define B7 0x27 -#define C0 0x30 -#define C1 0x31 -#define C2 0x32 -#define C3 0x33 -#define C4 0x34 -#define C5 0x35 -#define C6 0x36 -#define C7 0x37 -#define D0 0x40 -#define D1 0x41 -#define D2 0x42 -#define D3 0x43 -#define D4 0x44 -#define D5 0x45 -#define D6 0x46 -#define D7 0x47 -#define E0 0x50 -#define E1 0x51 -#define E2 0x52 -#define E3 0x53 -#define E4 0x54 -#define E5 0x55 -#define E6 0x56 -#define E7 0x57 -#define F0 0x60 -#define F1 0x61 -#define F2 0x62 -#define F3 0x63 -#define F4 0x64 -#define F5 0x65 -#define F6 0x66 -#define F7 0x67 - -#define COL2ROW 0x0 -#define ROW2COL 0x1 +/* diode directions */ +#define COL2ROW 0 +#define ROW2COL 1 +/* I/O pins */ +#define B0 { .input_addr = 3, .bit = 0 } +#define B1 { .input_addr = 3, .bit = 1 } +#define B2 { .input_addr = 3, .bit = 2 } +#define B3 { .input_addr = 3, .bit = 3 } +#define B4 { .input_addr = 3, .bit = 4 } +#define B5 { .input_addr = 3, .bit = 5 } +#define B6 { .input_addr = 3, .bit = 6 } +#define B7 { .input_addr = 3, .bit = 7 } +#define C0 { .input_addr = 6, .bit = 0 } +#define C1 { .input_addr = 6, .bit = 1 } +#define C2 { .input_addr = 6, .bit = 2 } +#define C3 { .input_addr = 6, .bit = 3 } +#define C4 { .input_addr = 6, .bit = 4 } +#define C5 { .input_addr = 6, .bit = 5 } +#define C6 { .input_addr = 6, .bit = 6 } +#define C7 { .input_addr = 6, .bit = 7 } +#define D0 { .input_addr = 9, .bit = 0 } +#define D1 { .input_addr = 9, .bit = 1 } +#define D2 { .input_addr = 9, .bit = 2 } +#define D3 { .input_addr = 9, .bit = 3 } +#define D4 { .input_addr = 9, .bit = 4 } +#define D5 { .input_addr = 9, .bit = 5 } +#define D6 { .input_addr = 9, .bit = 6 } +#define D7 { .input_addr = 9, .bit = 7 } +#define E0 { .input_addr = 0xC, .bit = 0 } +#define E1 { .input_addr = 0xC, .bit = 1 } +#define E2 { .input_addr = 0xC, .bit = 2 } +#define E3 { .input_addr = 0xC, .bit = 3 } +#define E4 { .input_addr = 0xC, .bit = 4 } +#define E5 { .input_addr = 0xC, .bit = 5 } +#define E6 { .input_addr = 0xC, .bit = 6 } +#define E7 { .input_addr = 0xC, .bit = 7 } +#define F0 { .input_addr = 0xF, .bit = 0 } +#define F1 { .input_addr = 0xF, .bit = 1 } +#define F2 { .input_addr = 0xF, .bit = 2 } +#define F3 { .input_addr = 0xF, .bit = 3 } +#define F4 { .input_addr = 0xF, .bit = 4 } +#define F5 { .input_addr = 0xF, .bit = 5 } +#define F6 { .input_addr = 0xF, .bit = 6 } +#define F7 { .input_addr = 0xF, .bit = 7 } +/* USART configuration */ #ifdef BLUETOOTH_ENABLE -#ifdef __AVR_ATmega32U4__ - #define SERIAL_UART_BAUD 9600 - #define SERIAL_UART_DATA UDR1 - #define SERIAL_UART_UBRR ((F_CPU/(16UL*SERIAL_UART_BAUD))-1) - #define SERIAL_UART_RXD_VECT USART1_RX_vect - #define SERIAL_UART_TXD_READY (UCSR1A&(1<>8); /* baud rate */ \ - UCSR1B = (1<> 8; \ + /* enable TX */ \ + UCSR1B = _BV(TXEN1); \ + /* 8-bit data */ \ + UCSR1C = _BV(UCSZ11) | _BV(UCSZ10); \ + sei(); \ + } while(0) +# else +# error "USART configuration is needed." #endif - // I'm fairly sure these aren't needed, but oh well - Jack /* @@ -113,4 +117,3 @@ #endif #endif - diff --git a/quantum/matrix.c b/quantum/matrix.c index cab39e117a..22126aa7ae 100644 --- a/quantum/matrix.c +++ b/quantum/matrix.c @@ -1,6 +1,6 @@ /* -Copyright 2012 Jun Wako -Generated by planckkeyboard.com (2014 Jack Humbert) +Copyright 2012 Jun Wako +Copyright 2014 Jack Humbert This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -15,300 +15,211 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ - -/* - * scan matrix - */ #include #include #include -#include +#include "wait.h" #include "print.h" #include "debug.h" #include "util.h" #include "matrix.h" -#ifndef DEBOUNCE -# define DEBOUNCE 10 +#ifdef MATRIX_HAS_GHOST +# error "The universal matrix.c file cannot be used for this keyboard." #endif -static uint8_t debouncing = DEBOUNCE; -/* matrix state(1:on, 0:off) */ -static matrix_row_t matrix[MATRIX_ROWS]; -static matrix_row_t matrix_debouncing[MATRIX_ROWS]; - -#if DIODE_DIRECTION == ROW2COL - static matrix_row_t matrix_reversed[MATRIX_COLS]; - static matrix_row_t matrix_reversed_debouncing[MATRIX_COLS]; +#ifndef DEBOUNCING_DELAY +# define DEBOUNCING_DELAY 5 #endif - -#if MATRIX_COLS > 16 - #define SHIFTER 1UL +static const io_pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS; +static const io_pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS; +/* matrix state */ +#if DIODE_DIRECTION == COL2ROW +static matrix_row_t matrix[MATRIX_ROWS]; +static matrix_row_t debouncing_matrix[MATRIX_ROWS]; #else - #define SHIFTER 1 +static matrix_col_t matrix[MATRIX_COLS]; +static matrix_col_t debouncing_matrix[MATRIX_COLS]; #endif +static int8_t debouncing_delay = -1; +#if DIODE_DIRECTION == COL2ROW +static void toggle_row(uint8_t row); static matrix_row_t read_cols(void); -static void init_cols(void); -static void unselect_rows(void); -static void select_row(uint8_t row); +#else +static void toggle_col(uint8_t col); +static matrix_col_t read_rows(void); +#endif __attribute__ ((weak)) void matrix_init_quantum(void) { - } __attribute__ ((weak)) void matrix_scan_quantum(void) { - } -inline -uint8_t matrix_rows(void) -{ +uint8_t matrix_rows(void) { return MATRIX_ROWS; } -inline -uint8_t matrix_cols(void) -{ +uint8_t matrix_cols(void) { return MATRIX_COLS; } -void matrix_init(void) -{ - // To use PORTF disable JTAG with writing JTD bit twice within four cycles. - MCUCR |= (1<= 0; --r) { + /* DDRxn */ + _SFR_IO8(row_pins[r].input_addr + 1) |= _BV(row_pins[r].bit); + toggle_row(r); } - + for (int8_t c = MATRIX_COLS - 1; c >= 0; --c) { + /* PORTxn */ + _SFR_IO8(col_pins[c].input_addr + 2) |= _BV(col_pins[c].bit); + } +#else + for (int8_t c = MATRIX_COLS - 1; c >= 0; --c) { + /* DDRxn */ + _SFR_IO8(col_pins[c].input_addr + 1) |= _BV(col_pins[c].bit); + toggle_col(c); + } + for (int8_t r = MATRIX_ROWS - 1; r >= 0; --r) { + /* PORTxn */ + _SFR_IO8(row_pins[r].input_addr + 2) |= _BV(row_pins[r].bit); + } +#endif matrix_init_quantum(); } - -uint8_t matrix_scan(void) -{ - #if DIODE_DIRECTION == COL2ROW - for (uint8_t i = 0; i < MATRIX_ROWS; i++) { - select_row(i); - _delay_us(30); // without this wait read unstable value. - matrix_row_t cols = read_cols(); - if (matrix_debouncing[i] != cols) { - matrix_debouncing[i] = cols; - if (debouncing) { - debug("bounce!: "); debug_hex(debouncing); debug("\n"); - } - debouncing = DEBOUNCE; +uint8_t matrix_scan(void) { + for (int8_t r = MATRIX_ROWS - 1; r >= 0; --r) { + toggle_row(r); + matrix_row_t state = read_cols(); + if (debouncing_matrix[r] != state) { + debouncing_matrix[r] = state; + debouncing_delay = DEBOUNCING_DELAY; } - unselect_rows(); + toggle_row(r); } - - if (debouncing) { - if (--debouncing) { - _delay_ms(1); - } else { - for (uint8_t i = 0; i < MATRIX_ROWS; i++) { - matrix[i] = matrix_debouncing[i]; - } + if (debouncing_delay >= 0) { + dprintf("Debouncing delay remaining: %X\n", debouncing_delay); + --debouncing_delay; + if (debouncing_delay >= 0) { + wait_ms(1); } - } -#else - for (uint8_t i = 0; i < MATRIX_COLS; i++) { - select_row(i); - _delay_us(30); // without this wait read unstable value. - matrix_row_t rows = read_cols(); - if (matrix_reversed_debouncing[i] != rows) { - matrix_reversed_debouncing[i] = rows; - if (debouncing) { - debug("bounce!: "); debug_hex(debouncing); debug("\n"); + else { + for (int8_t r = MATRIX_ROWS - 1; r >= 0; --r) { + matrix[r] = debouncing_matrix[r]; } - debouncing = DEBOUNCE; } - unselect_rows(); } - - if (debouncing) { - if (--debouncing) { - _delay_ms(1); - } else { - for (uint8_t i = 0; i < MATRIX_COLS; i++) { - matrix_reversed[i] = matrix_reversed_debouncing[i]; - } - } - } - for (uint8_t y = 0; y < MATRIX_ROWS; y++) { - matrix_row_t row = 0; - for (uint8_t x = 0; x < MATRIX_COLS; x++) { - row |= ((matrix_reversed[x] & (1<> y) << x; - } - matrix[y] = row; - } -#endif - matrix_scan_quantum(); - return 1; } -bool matrix_is_modified(void) -{ - if (debouncing) return false; - return true; +static void toggle_row(uint8_t row) { + /* PINxn */ + _SFR_IO8(row_pins[row].input_addr) = _BV(row_pins[row].bit); } -inline -bool matrix_is_on(uint8_t row, uint8_t col) -{ - return (matrix[row] & ((matrix_row_t)1= 0; --c) { + /* PINxn */ + if (!(_SFR_IO8(col_pins[c].input_addr) & _BV(col_pins[c].bit))) { + state |= (matrix_row_t)1 << c; + } + } + return state; } -inline -matrix_row_t matrix_get_row(uint8_t row) -{ +matrix_row_t matrix_get_row(uint8_t row) { return matrix[row]; } -void matrix_print(void) -{ - print("\nr/c 0123456789ABCDEF\n"); - for (uint8_t row = 0; row < MATRIX_ROWS; row++) { - phex(row); print(": "); - pbin_reverse16(matrix_get_row(row)); - print("\n"); +#else +uint8_t matrix_scan(void) { + for (int8_t c = MATRIX_COLS - 1; c >= 0; --c) { + toggle_col(c); + matrix_col_t state = read_rows(); + if (debouncing_matrix[c] != state) { + debouncing_matrix[c] = state; + debouncing_delay = DEBOUNCING_DELAY; + } + toggle_col(c); } -} - -uint8_t matrix_key_count(void) -{ - uint8_t count = 0; - for (uint8_t i = 0; i < MATRIX_ROWS; i++) { - count += bitpop16(matrix[i]); + if (debouncing_delay >= 0) { + dprintf("Debouncing delay remaining: %X\n", debouncing_delay); + --debouncing_delay; + if (debouncing_delay >= 0) { + wait_ms(1); + } + else { + for (int8_t c = MATRIX_COLS - 1; c >= 0; --c) { + matrix[c] = debouncing_matrix[c]; + } + } } - return count; + matrix_scan_quantum(); + return 1; } -static void init_cols(void) -{ - int B = 0, C = 0, D = 0, E = 0, F = 0; +static void toggle_col(uint8_t col) { + /* PINxn */ + _SFR_IO8(col_pins[col].input_addr) = _BV(col_pins[col].bit); +} -#if DIODE_DIRECTION == COL2ROW - for(int x = 0; x < MATRIX_COLS; x++) { - int col = COLS[x]; -#else - for(int x = 0; x < MATRIX_ROWS; x++) { - int col = ROWS[x]; -#endif - if ((col & 0xF0) == 0x20) { - B |= (1<<(col & 0x0F)); - } else if ((col & 0xF0) == 0x30) { - C |= (1<<(col & 0x0F)); - } else if ((col & 0xF0) == 0x40) { - D |= (1<<(col & 0x0F)); - } else if ((col & 0xF0) == 0x50) { - E |= (1<<(col & 0x0F)); - } else if ((col & 0xF0) == 0x60) { - F |= (1<<(col & 0x0F)); - } +static matrix_col_t read_rows(void) { + matrix_col_t state = 0; + for (int8_t r = MATRIX_ROWS - 1; r >= 0; --r) { + /* PINxn */ + if (!(_SFR_IO8(row_pins[r].input_addr) & _BV(row_pins[r].bit))) { + state |= (matrix_col_t)1 << r; + } } - DDRB &= ~(B); PORTB |= (B); - DDRC &= ~(C); PORTC |= (C); - DDRD &= ~(D); PORTD |= (D); - DDRE &= ~(E); PORTE |= (E); - DDRF &= ~(F); PORTF |= (F); + return state; } -static matrix_row_t read_cols(void) -{ - matrix_row_t result = 0; +matrix_row_t matrix_get_row(uint8_t row) { + matrix_row_t state = 0; + matrix_col_t mask = (matrix_col_t)1 << row; + for (int8_t c = MATRIX_COLS - 1; c >= 0; --c) { + if (matrix[c] & mask) { + state |= (matrix_row_t)1 << c; + } + } + return state; +} -#if DIODE_DIRECTION == COL2ROW - for(int x = 0; x < MATRIX_COLS; x++) { - int col = COLS[x]; -#else - for(int x = 0; x < MATRIX_ROWS; x++) { - int col = ROWS[x]; #endif - if ((col & 0xF0) == 0x20) { - result |= (PINB&(1<<(col & 0x0F)) ? 0 : (SHIFTER<= 0) return false; + return true; } -static void unselect_rows(void) -{ - int B = 0, C = 0, D = 0, E = 0, F = 0; +bool matrix_is_on(uint8_t row, uint8_t col) { + return matrix_get_row(row) & (matrix_row_t)1 << col; +} -#if DIODE_DIRECTION == COL2ROW - for(int x = 0; x < MATRIX_ROWS; x++) { - int row = ROWS[x]; -#else - for(int x = 0; x < MATRIX_COLS; x++) { - int row = COLS[x]; -#endif - if ((row & 0xF0) == 0x20) { - B |= (1<<(row & 0x0F)); - } else if ((row & 0xF0) == 0x30) { - C |= (1<<(row & 0x0F)); - } else if ((row & 0xF0) == 0x40) { - D |= (1<<(row & 0x0F)); - } else if ((row & 0xF0) == 0x50) { - E |= (1<<(row & 0x0F)); - } else if ((row & 0xF0) == 0x60) { - F |= (1<<(row & 0x0F)); - } +void matrix_print(void) { + dprintln("Human-readable matrix state:"); + for (uint8_t r = 0; r < MATRIX_ROWS; r++) { + dprintf("State of row %X: %016b\n", r, bitrev16(matrix_get_row(r))); } - DDRB &= ~(B); PORTB |= (B); - DDRC &= ~(C); PORTC |= (C); - DDRD &= ~(D); PORTD |= (D); - DDRE &= ~(E); PORTE |= (E); - DDRF &= ~(F); PORTF |= (F); } -static void select_row(uint8_t row) -{ - -#if DIODE_DIRECTION == COL2ROW - int row_pin = ROWS[row]; -#else - int row_pin = COLS[row]; -#endif - - if ((row_pin & 0xF0) == 0x20) { - DDRB |= (1<<(row_pin & 0x0F)); - PORTB &= ~(1<<(row_pin & 0x0F)); - } else if ((row_pin & 0xF0) == 0x30) { - DDRC |= (1<<(row_pin & 0x0F)); - PORTC &= ~(1<<(row_pin & 0x0F)); - } else if ((row_pin & 0xF0) == 0x40) { - DDRD |= (1<<(row_pin & 0x0F)); - PORTD &= ~(1<<(row_pin & 0x0F)); - } else if ((row_pin & 0xF0) == 0x50) { - DDRE |= (1<<(row_pin & 0x0F)); - PORTE &= ~(1<<(row_pin & 0x0F)); - } else if ((row_pin & 0xF0) == 0x60) { - DDRF |= (1<<(row_pin & 0x0F)); - PORTF &= ~(1<<(row_pin & 0x0F)); - } -} \ No newline at end of file +uint8_t matrix_key_count(void) { + uint8_t count = 0; + for (int8_t r = MATRIX_ROWS - 1; r >= 0; --r) { + count += bitpop16(matrix_get_row(r)); + } + return count; +} diff --git a/quantum/template/config.h b/quantum/template/config.h index e6fb7866c6..cad3e3260a 100644 --- a/quantum/template/config.h +++ b/quantum/template/config.h @@ -41,15 +41,16 @@ along with this program. If not, see . * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) * -*/ -#define COLS (int []){ F1, F0, B0 } -#define ROWS (int []){ D0, D5 } +*/ +#define MATRIX_ROW_PINS { D0, D5 } +#define MATRIX_COL_PINS { F1, F0, B0 } +#define UNUSED_PINS /* COL2ROW or ROW2COL */ #define DIODE_DIRECTION COL2ROW /* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ -#define DEBOUNCE 5 +#define DEBOUNCING_DELAY 5 /* define if matrix has ghost (lacks anti-ghosting diodes) */ //#define MATRIX_HAS_GHOST @@ -62,17 +63,17 @@ along with this program. If not, see . /* Locking resynchronize hack */ #define LOCKING_RESYNC_ENABLE -/* +/* * Force NKRO * - * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the * makefile for this to work.) * * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) * until the next keyboard reset. * - * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is * fully operational during normal computer usage. * * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) @@ -90,7 +91,7 @@ along with this program. If not, see . * the keyboard. They are best used in combination with the HID Listen program, * found here: https://www.pjrc.com/teensy/hid_listen.html * - * The options below allow the magic key functionality to be changed. This is + * The options below allow the magic key functionality to be changed. This is * useful if your keyboard/keypad is missing keys and you want magic key support. * */ diff --git a/tmk_core/common/avr/suspend.c b/tmk_core/common/avr/suspend.c index 4980680198..a6f3c64414 100644 --- a/tmk_core/common/avr/suspend.c +++ b/tmk_core/common/avr/suspend.c @@ -114,9 +114,7 @@ bool suspend_wakeup_condition(void) matrix_power_up(); matrix_scan(); matrix_power_down(); - for (uint8_t r = 0; r < MATRIX_ROWS; r++) { - if (matrix_get_row(r)) return true; - } + if (matrix_key_count()) return true; return false; } @@ -146,4 +144,3 @@ ISR(WDT_vect) } } #endif - diff --git a/tmk_core/common/bootmagic.c b/tmk_core/common/bootmagic.c index 2c1b1adfc5..30e8a0f20f 100644 --- a/tmk_core/common/bootmagic.c +++ b/tmk_core/common/bootmagic.c @@ -105,15 +105,13 @@ void bootmagic(void) } } -static bool scan_keycode(uint8_t keycode) -{ - for (uint8_t r = 0; r < MATRIX_ROWS; r++) { +static bool scan_keycode(uint8_t keycode) { + for (int8_t r = MATRIX_ROWS - 1; r >= 0; --r) { matrix_row_t matrix_row = matrix_get_row(r); - for (uint8_t c = 0; c < MATRIX_COLS; c++) { - if (matrix_row & ((matrix_row_t)1<= 0; --c) { + if (matrix_row & (matrix_row_t)1 << c) { + keypos_t key = (keypos_t){ .row = r, .col = c }; + if (keycode == keymap_key_to_keycode(0, key)) return true; } } } diff --git a/tmk_core/common/keyboard.c b/tmk_core/common/keyboard.c index 1d99818481..c6d54ae333 100644 --- a/tmk_core/common/keyboard.c +++ b/tmk_core/common/keyboard.c @@ -1,5 +1,5 @@ /* -Copyright 2011,2012,2013 Jun Wako +Copyright 2011, 2012, 2013 Jun Wako This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -27,13 +27,13 @@ along with this program. If not, see . #include "command.h" #include "util.h" #include "sendchar.h" +#include "eeconfig.h" +#include "backlight.h" #ifdef BOOTMAGIC_ENABLE - #include "bootmagic.h" +# include "bootmagic.h" #else - #include "magic.h" +# include "magic.h" #endif -#include "eeconfig.h" -#include "backlight.h" #ifdef MOUSEKEY_ENABLE # include "mousekey.h" #endif @@ -41,40 +41,35 @@ along with this program. If not, see . # include "ps2_mouse.h" #endif #ifdef SERIAL_MOUSE_ENABLE -#include "serial_mouse.h" +# include "serial_mouse.h" #endif #ifdef ADB_MOUSE_ENABLE -#include "adb.h" +# include "adb.h" #endif - #ifdef MATRIX_HAS_GHOST -static bool has_ghost_in_row(uint8_t row) -{ - matrix_row_t matrix_row = matrix_get_row(row); - // No ghost exists when less than 2 keys are down on the row - if (((matrix_row - 1) & matrix_row) == 0) - return false; - - // Ghost occurs when the row shares column line with other row - for (uint8_t i=0; i < MATRIX_ROWS; i++) { - if (i != row && (matrix_get_row(i) & matrix_row)) - return true; +static bool is_row_ghosting(uint8_t row){ + matrix_row_t state = matrix_get_row(row); + /* no ghosting happens when only one key in the row is pressed */ + if (!(state - 1 & state)) return false; + /* ghosting occurs when two keys in the same column are pressed */ + for (int8_t r = MATRIX_ROWS - 1; r >= 0; --r) { + if (r != row && matrix_get_row(r) & state) return true; } return false; } + #endif +__attribute__ ((weak)) +void matrix_setup(void) { +} -__attribute__ ((weak)) void matrix_setup(void) {} -void keyboard_setup(void) -{ +void keyboard_setup(void) { matrix_setup(); } -void keyboard_init(void) -{ - +void keyboard_init(void) { timer_init(); matrix_init(); #ifdef PS2_MOUSE_ENABLE @@ -86,104 +81,87 @@ void keyboard_init(void) #ifdef ADB_MOUSE_ENABLE adb_mouse_init(); #endif - - #ifdef BOOTMAGIC_ENABLE bootmagic(); #else magic(); #endif - #ifdef BACKLIGHT_ENABLE backlight_init(); #endif - #if defined(NKRO_ENABLE) && defined(FORCE_NKRO) keyboard_nkro = true; #endif - } -/* - * Do keyboard routine jobs: scan mantrix, light LEDs, ... - * This is repeatedly called as fast as possible. - */ -void keyboard_task(void) -{ - static matrix_row_t matrix_prev[MATRIX_ROWS]; +/* does routine keyboard jobs */ +void keyboard_task(void) { + static matrix_row_t previous_matrix[MATRIX_ROWS]; #ifdef MATRIX_HAS_GHOST - static matrix_row_t matrix_ghost[MATRIX_ROWS]; + static matrix_row_t deghosting_matrix[MATRIX_ROWS]; #endif static uint8_t led_status = 0; - matrix_row_t matrix_row = 0; - matrix_row_t matrix_change = 0; - matrix_scan(); - for (uint8_t r = 0; r < MATRIX_ROWS; r++) { - matrix_row = matrix_get_row(r); - matrix_change = matrix_row ^ matrix_prev[r]; - if (matrix_change) { + for (int8_t r = MATRIX_ROWS - 1; r >= 0; --r) { + matrix_row_t state = matrix_get_row(r); + matrix_row_t changes = state ^ previous_matrix[r]; + if (changes) { #ifdef MATRIX_HAS_GHOST - if (has_ghost_in_row(r)) { - /* Keep track of whether ghosted status has changed for - * debugging. But don't update matrix_prev until un-ghosted, or - * the last key would be lost. + if (is_row_ghosting(r)) { + /* debugs the deghosting mechanism */ + /* doesn't update previous_matrix until the ghosting has stopped + * in order to prevent the last key from being lost */ - if (debug_matrix && matrix_ghost[r] != matrix_row) { + if (debug_matrix && deghosting_matrix[r] != state) { matrix_print(); } - matrix_ghost[r] = matrix_row; + deghosting_matrix[r] = state; continue; } - matrix_ghost[r] = matrix_row; + deghosting_matrix[r] = state; #endif if (debug_matrix) matrix_print(); - for (uint8_t c = 0; c < MATRIX_COLS; c++) { - if (matrix_change & ((matrix_row_t)1<= 0; --c) { + matrix_row_t mask = (matrix_row_t)1 << c; + if (changes & mask) { + keyevent_t event; + event.key = (keypos_t){ .row = r, .col = c }; + event.pressed = state & mask; + /* the time should not be 0 */ + event.time = timer_read() | 1; + action_exec(event); + /* records the processed key event */ + previous_matrix[r] ^= mask; + /* processes one key event per call */ + goto event_processed; } } } } - // call with pseudo tick event when no real key event. + /* sends tick events when the keyboard is idle */ action_exec(TICK); - -MATRIX_LOOP_END: - +event_processed: #ifdef MOUSEKEY_ENABLE - // mousekey repeat & acceleration + /* repeats and accelerates the mouse keys */ mousekey_task(); #endif - #ifdef PS2_MOUSE_ENABLE ps2_mouse_task(); #endif - #ifdef SERIAL_MOUSE_ENABLE - serial_mouse_task(); + serial_mouse_task(); #endif - #ifdef ADB_MOUSE_ENABLE - adb_mouse_task(); + adb_mouse_task(); #endif - - // update LED + /* updates the LEDs */ if (led_status != host_keyboard_leds()) { led_status = host_keyboard_leds(); keyboard_set_leds(led_status); } } -void keyboard_set_leds(uint8_t leds) -{ - if (debug_keyboard) { debug("keyboard_set_led: "); debug_hex8(leds); debug("\n"); } +void keyboard_set_leds(uint8_t leds) { + if (debug_keyboard) dprintf("Keyboard LEDs state: %x\n", leds); led_set(leds); } diff --git a/tmk_core/common/matrix.h b/tmk_core/common/matrix.h index ad0871bfb7..5f380aaaba 100644 --- a/tmk_core/common/matrix.h +++ b/tmk_core/common/matrix.h @@ -14,59 +14,68 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ - #ifndef MATRIX_H #define MATRIX_H #include #include - -#if (MATRIX_COLS <= 8) -typedef uint8_t matrix_row_t; -#elif (MATRIX_COLS <= 16) -typedef uint16_t matrix_row_t; -#elif (MATRIX_COLS <= 32) -typedef uint32_t matrix_row_t; +#if MATRIX_COLS <= 8 +typedef uint8_t matrix_row_t; +#elif MATRIX_COLS <= 16 +typedef uint16_t matrix_row_t; +#elif MATRIX_COLS <= 32 +typedef uint32_t matrix_row_t; #else -#error "MATRIX_COLS: invalid value" +# error "There are too many columns." #endif -#define MATRIX_IS_ON(row, col) (matrix_get_row(row) && (1< Date: Mon, 23 May 2016 23:44:36 -0400 Subject: updates midi in play_note to better octave --- tmk_core/protocol/lufa/lufa.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tmk_core/protocol/lufa/lufa.c b/tmk_core/protocol/lufa/lufa.c index aba94cd597..b70b52bf4d 100644 --- a/tmk_core/protocol/lufa/lufa.c +++ b/tmk_core/protocol/lufa/lufa.c @@ -947,10 +947,10 @@ void fallthrough_callback(MidiDevice * device, if (cnt == 3) { switch (byte0 & 0xF0) { case MIDI_NOTEON: - play_note(((double)261.6)*pow(2.0, -1.0)*pow(2.0,(byte1 & 0x7F)/12.0), (byte2 & 0x7F) / 8); + play_note(((double)261.6)*pow(2.0, -4.0)*pow(2.0,(byte1 & 0x7F)/12.0), (byte2 & 0x7F) / 8); break; case MIDI_NOTEOFF: - stop_note(((double)261.6)*pow(2.0, -1.0)*pow(2.0,(byte1 & 0x7F)/12.0)); + stop_note(((double)261.6)*pow(2.0, -4.0)*pow(2.0,(byte1 & 0x7F)/12.0)); break; } } -- cgit v1.2.1 From 1ae6011cef2230826a9e6db6c5b638677bc640b7 Mon Sep 17 00:00:00 2001 From: Eric Tang Date: Tue, 24 May 2016 08:44:40 -0700 Subject: Clean up #343's code (#348) --- quantum/matrix.c | 4 ++-- tmk_core/common/keyboard.c | 8 +++----- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/quantum/matrix.c b/quantum/matrix.c index 22126aa7ae..d5fd7def8a 100644 --- a/quantum/matrix.c +++ b/quantum/matrix.c @@ -37,10 +37,8 @@ static const io_pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS; /* matrix state */ #if DIODE_DIRECTION == COL2ROW static matrix_row_t matrix[MATRIX_ROWS]; -static matrix_row_t debouncing_matrix[MATRIX_ROWS]; #else static matrix_col_t matrix[MATRIX_COLS]; -static matrix_col_t debouncing_matrix[MATRIX_COLS]; #endif static int8_t debouncing_delay = -1; @@ -99,6 +97,7 @@ void matrix_init(void) { #if DIODE_DIRECTION == COL2ROW uint8_t matrix_scan(void) { + static matrix_row_t debouncing_matrix[MATRIX_ROWS]; for (int8_t r = MATRIX_ROWS - 1; r >= 0; --r) { toggle_row(r); matrix_row_t state = read_cols(); @@ -146,6 +145,7 @@ matrix_row_t matrix_get_row(uint8_t row) { #else uint8_t matrix_scan(void) { + static matrix_col_t debouncing_matrix[MATRIX_COLS]; for (int8_t c = MATRIX_COLS - 1; c >= 0; --c) { toggle_col(c); matrix_col_t state = read_rows(); diff --git a/tmk_core/common/keyboard.c b/tmk_core/common/keyboard.c index c6d54ae333..bd543c45e1 100644 --- a/tmk_core/common/keyboard.c +++ b/tmk_core/common/keyboard.c @@ -96,17 +96,15 @@ void keyboard_init(void) { /* does routine keyboard jobs */ void keyboard_task(void) { - static matrix_row_t previous_matrix[MATRIX_ROWS]; -#ifdef MATRIX_HAS_GHOST - static matrix_row_t deghosting_matrix[MATRIX_ROWS]; -#endif - static uint8_t led_status = 0; + static uint8_t led_status; matrix_scan(); for (int8_t r = MATRIX_ROWS - 1; r >= 0; --r) { + static matrix_row_t previous_matrix[MATRIX_ROWS]; matrix_row_t state = matrix_get_row(r); matrix_row_t changes = state ^ previous_matrix[r]; if (changes) { #ifdef MATRIX_HAS_GHOST + static matrix_row_t deghosting_matrix[MATRIX_ROWS]; if (is_row_ghosting(r)) { /* debugs the deghosting mechanism */ /* doesn't update previous_matrix until the ghosting has stopped -- cgit v1.2.1 From 287eb7ad148abc8fe3fb014218d71e205fd9131d Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Tue, 24 May 2016 11:56:53 -0400 Subject: Converted audio play functions to *_user (#349) * Updated personal layouts * tweaked personal * Nightly - Audio Cleanup Refactored the LUTs. Abstracted some of the registers out of audio to use more functional names. Split audio into audio and audio_pwm. WIP * nightly - collapsed code * Added check for note playing to LEDs * Usability tweaks * TWEAE * nightly added extra kcs to keymap common * turned on Plank audio * Added backlight breathing to atomic * reverted accidental merge * Added music and audio toggles to Quantum.c * Redid the audio callbacks * Adjusted default planck layout to use the user tone naming * tabs to spaces * Rewrote the ALL recipe to allow for faster parallel make * tabs to spaces * Renamed custom event functions to be 'startup_user' and 'shutdown_user'. Also moved the prototypes around. * Tweaked pvc atomic layout to work with the pvc planck. * updates midi scale calling --- keyboard/atomic/keymaps/pvc/keymap.c | 41 +---- keyboard/planck/keymaps/default/keymap.c | 43 +++-- keyboard/planck/keymaps/pvc/config.h | 2 +- keyboard/planck/keymaps/pvc/keymap.c | 291 ++++++++++++------------------- quantum/audio/audio.c | 17 -- quantum/audio/audio.h | 6 +- quantum/keymap_common.c | 3 +- quantum/quantum.c | 69 +++++--- quantum/quantum.h | 4 + tmk_core/common/command.c | 13 +- tmk_core/rules.mk | 8 +- 11 files changed, 215 insertions(+), 282 deletions(-) diff --git a/keyboard/atomic/keymaps/pvc/keymap.c b/keyboard/atomic/keymaps/pvc/keymap.c index 8431654d7d..f16ec8a6ec 100644 --- a/keyboard/atomic/keymaps/pvc/keymap.c +++ b/keyboard/atomic/keymaps/pvc/keymap.c @@ -62,8 +62,6 @@ #define M_BDFLT M(MACRO_BREATH_DEFAULT) -//#define MU_TOG M(MACRO_MUSIC_TOGGLE) -//#define AU_TOG M(MACRO_AUDIO_TOGGLE) #define VC_UP M(MACRO_INC_VOICE) #define VC_DOWN M(MACRO_DEC_VOICE) @@ -156,11 +154,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* UPPER * .---------------------------------------------------------------------------------------------------------------------- 2u ------------. - * | PRINT | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | NUM LK | / | * | - | NUM LK | SCR LK | XXXXXX . PAUSE | + * | PRINT | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | NUM LK | / | * | | NUM LK | SCR LK | XXXXXX . PAUSE | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| - * | | F1 | F2 | F3 | F4 | | | 7 | 8 | 9 | + | ~ | | | INS | + * | | F1 | F2 | F3 | F4 | | | 7 | 8 | 9 | - | | | | INS | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------| - * | CAP LK | F5 | F6 | F7 | F8 | | | 4 | 5 | 6 | + | ` | XXXXXX . | HOME | + * | CAP LK | F5 | F6 | F7 | F8 | | | 4 | 5 | 6 | + | | XXXXXX . | HOME | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| * | | F9 | F10 | F11 | F12 | | | 1 | 2 | 3 | ENTER | XXXXXX . | | END | * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------| @@ -498,31 +496,10 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) #ifdef AUDIO_ENABLE -/* -bool process_action_user(keyrecord_t *record) -{ - - uint8_t starting_note = 0x0C; - int offset = 7; - - if (IS_LAYER_ON(LAYER_MUSIC)) - { - if (record->event.pressed) - { - play_note(((double)220.0)*pow(2.0, -4.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row)), 0xF); - } - else - { - stop_note(((double)220.0)*pow(2.0, -4.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row))); - } - } -} -*/ - void matrix_init_user(void) { set_voice(default_voice); - play_startup_tone(); + startup_user(); println("Matrix Init"); } @@ -570,30 +547,30 @@ void led_set_user(uint8_t usb_led) } -void play_startup_tone() +void startup_user() { _delay_ms(10); // gets rid of tick PLAY_NOTE_ARRAY(tone_my_startup, false, STACCATO); } -void play_goodbye_tone() +void shutdown_user() { PLAY_NOTE_ARRAY(tone_my_goodbye, false, STACCATO); _delay_ms(2000); stop_all_notes(); } -void play_audio_on_tone(void) +void audio_on_user(void) { PLAY_NOTE_ARRAY(tone_audio_on, false, STACCATO); } -void play_music_on_tone(void) +void music_on_user(void) { PLAY_NOTE_ARRAY(tone_music_on, false, STACCATO); } -void play_music_scale(void) +void music_scale_user(void) { PLAY_NOTE_ARRAY(music_scale, false, STACCATO); } diff --git a/keyboard/planck/keymaps/default/keymap.c b/keyboard/planck/keymaps/default/keymap.c index 36d496416e..3d62898171 100644 --- a/keyboard/planck/keymaps/default/keymap.c +++ b/keyboard/planck/keymaps/default/keymap.c @@ -174,21 +174,16 @@ const uint16_t PROGMEM fn_actions[] = { }; #ifdef AUDIO_ENABLE -float tone_startup[][2] = { - {440.0*pow(2.0,(31)/12.0), 12}, - {440.0*pow(2.0,(28)/12.0), 8}, - {440.0*pow(2.0,(19)/12.0), 8}, - {440.0*pow(2.0,(24)/12.0), 8}, - {440.0*pow(2.0,(28)/12.0), 20} -}; +float tone_startup[][2] = SONG(STARTUP_SOUND); float tone_qwerty[][2] = SONG(QWERTY_SOUND); float tone_dvorak[][2] = SONG(DVORAK_SOUND); float tone_colemak[][2] = SONG(COLEMAK_SOUND); float tone_plover[][2] = SONG(PLOVER_SOUND); float tone_plover_gb[][2] = SONG(PLOVER_GOODBYE_SOUND); +float music_scale[][2] = SONG(MUSIC_SCALE_SOUND); -float goodbye[][2] = SONG(GOODBYE_SOUND); +float tone_goodbye[][2] = SONG(GOODBYE_SOUND); #endif @@ -288,16 +283,34 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) }; void matrix_init_user(void) { - #ifdef AUDIO_ENABLE - _delay_ms(20); // stops the tick - PLAY_NOTE_ARRAY(tone_startup, false, 0); - #endif + #ifdef AUDIO_ENABLE + startup_user(); + #endif } #ifdef AUDIO_ENABLE -void play_goodbye_tone() + +void startup_user() +{ + _delay_ms(20); // gets rid of tick + PLAY_NOTE_ARRAY(tone_startup, false, 0); +} + +void shutdown_user() { - PLAY_NOTE_ARRAY(goodbye, false, 0); - _delay_ms(150); + PLAY_NOTE_ARRAY(tone_goodbye, false, 0); + _delay_ms(150); + stop_all_notes(); } + +void music_on_user(void) +{ + music_scale_user(); +} + +void music_scale_user(void) +{ + PLAY_NOTE_ARRAY(music_scale, false, 0); +} + #endif diff --git a/keyboard/planck/keymaps/pvc/config.h b/keyboard/planck/keymaps/pvc/config.h index b8960038ab..b648931081 100644 --- a/keyboard/planck/keymaps/pvc/config.h +++ b/keyboard/planck/keymaps/pvc/config.h @@ -74,7 +74,7 @@ along with this program. If not, see . */ /* disable debug print */ -#define NO_DEBUG +//#define NO_DEBUG /* disable print */ //#define NO_PRINT diff --git a/keyboard/planck/keymaps/pvc/keymap.c b/keyboard/planck/keymaps/pvc/keymap.c index 177f04484d..2fc5f0da16 100644 --- a/keyboard/planck/keymaps/pvc/keymap.c +++ b/keyboard/planck/keymaps/pvc/keymap.c @@ -8,43 +8,44 @@ #include "song_list.h" #endif -#define LAYER_QWERTY 0 -#define LAYER_COLEMAK 1 -#define LAYER_DVORAK 2 -#define LAYER_LOWER 3 -#define LAYER_RAISE 4 -#define LAYER_FUNCTION 5 -#define LAYER_MOUSE 6 -#define LAYER_MUSIC 7 -#define LAYER_ADJUST 8 - -#define MACRO_QWERTY 0 -#define MACRO_COLEMAK 1 -#define MACRO_DVORAK 2 -#define MACRO_LOWER 3 -#define MACRO_RAISE 4 -#define MACRO_FUNCTION 5 -#define MACRO_MOUSE 6 -#define MACRO_TIMBRE_1 7 -#define MACRO_TIMBRE_2 8 -#define MACRO_TIMBRE_3 9 -#define MACRO_TIMBRE_4 10 -#define MACRO_TEMPO_U 11 -#define MACRO_TEMPO_D 12 -#define MACRO_TONE_DEFAULT 13 -#define MACRO_MUSIC_ON 14 -#define MACRO_MUSIC_OFF 15 -#define MACRO_AUDIO_ON 16 -#define MACRO_AUDIO_OFF 17 -#define MACRO_INC_VOICE 18 -#define MACRO_DEC_VOICE 19 -#define MACRO_BACKLIGHT 20 +#define LAYER_QWERTY 0 +#define LAYER_COLEMAK 1 +#define LAYER_DVORAK 2 +#define LAYER_UPPER 3 +#define LAYER_LOWER 4 +#define LAYER_FUNCTION 5 +#define LAYER_MOUSE 6 +#define LAYER_ADJUST 7 + +#define MACRO_QWERTY 0 +#define MACRO_COLEMAK 1 +#define MACRO_DVORAK 2 +#define MACRO_UPPER 3 +#define MACRO_LOWER 4 +#define MACRO_FUNCTION 5 +#define MACRO_MOUSE 6 +#define MACRO_TIMBRE_1 7 +#define MACRO_TIMBRE_2 8 +#define MACRO_TIMBRE_3 9 +#define MACRO_TIMBRE_4 10 +#define MACRO_TEMPO_U 11 +#define MACRO_TEMPO_D 12 +#define MACRO_TONE_DEFAULT 13 +#define MACRO_MUSIC_TOGGLE 14 +#define MACRO_AUDIO_TOGGLE 16 +#define MACRO_INC_VOICE 18 +#define MACRO_DEC_VOICE 19 +#define MACRO_BACKLIGHT 20 +#define MACRO_BREATH_TOGGLE 21 +#define MACRO_BREATH_SPEED_INC 23 +#define MACRO_BREATH_SPEED_DEC 24 +#define MACRO_BREATH_DEFAULT 25 #define M_QWRTY M(MACRO_QWERTY) #define M_COLMK M(MACRO_COLEMAK) #define M_DVORK M(MACRO_DVORAK) +#define M_UPPER M(MACRO_UPPER) #define M_LOWER M(MACRO_LOWER) -#define M_RAISE M(MACRO_RAISE) #define M_FUNCT M(MACRO_FUNCTION) #define M_MOUSE M(MACRO_MOUSE) #define TIMBR_1 M(MACRO_TIMBRE_1) @@ -55,12 +56,12 @@ #define TMPO_DN M(MACRO_TEMPO_D) #define TMPO_DF M(MACRO_TONE_DEFAULT) #define M_BACKL M(MACRO_BACKLIGHT) +#define M_BRTOG M(MACRO_BREATH_TOGGLE) +#define M_BSPDU M(MACRO_BREATH_SPEED_INC) +#define M_BSPDD M(MACRO_BREATH_SPEED_DEC) +#define M_BDFLT M(MACRO_BREATH_DEFAULT) -#define MUS_ON M(MACRO_MUSIC_ON) -#define MUS_OFF M(MACRO_MUSIC_OFF) -#define AUD_OFF M(MACRO_AUDIO_OFF) -#define AUD_ON M(MACRO_AUDIO_ON) #define VC_UP M(MACRO_INC_VOICE) #define VC_DOWN M(MACRO_DEC_VOICE) @@ -76,6 +77,7 @@ #define SC_ACLS LALT(KC_F4) #define SC_CCLS LCTL(KC_F4) +#define OS_SHFT KC_FN0 #define _______ KC_TRNS #define XXXXXXX KC_NO @@ -90,17 +92,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| * | ESC | A | S | D | F | G | H | J | K | L | ; | ' | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | LSHIFT | Z | X | C | V | B | N | M | , | . | / | ENTER | + * | LSHIFT | Z | X | C | V | B | N | M | , | . | UP | ENTER | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | LCTRL | LWIN | FN | LALT | RAISE | SPACE | SPACE | LOWER | UP | DOWN | LEFT | RIGHT | + * | LCTRL | LWIN | FN | LALT | UPPER | SPACE | SPACE | LOWER | SHIFT | LEFT | DOWN | RIGHT | * '-----------------------------------------------------------------------------------------------------------' */ - [LAYER_QWERTY] = { /* QWERTY */ - { KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC }, + [LAYER_QWERTY] = { // QWERTY + { KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC }, { KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT }, - { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT }, - { KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_RAISE, KC_SPC, KC_SPC, M_LOWER, KC_UP, KC_DOWN, KC_LEFT, KC_RGHT }, + { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_ENT }, + { KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_UPPER, KC_SPC, KC_SPC, M_LOWER, OS_SHFT, KC_LEFT, KC_DOWN, KC_RGHT }, }, /* COLEMAK @@ -109,77 +111,77 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| * | BACKSP | A | R | S | T | D | H | N | E | I | O | ' | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | LSHIFT | Z | X | C | V | B | K | M | , | . | / | ENTER | + * | LSHIFT | Z | X | C | V | B | K | M | , | . | UP | ENTER | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | LCTRL | LWIN | FN | LALT | RAISE | SPACE | SPACE | LOWER | UP | DOWN | LEFT | RIGHT | + * | LCTRL | LWIN | FN | LALT | UPPER | SPACE | SPACE | LOWER | SHIFT | LEFT | DOWN | RIGHT | * '-----------------------------------------------------------------------------------------------------------' */ - [LAYER_COLEMAK] = { /* COLEMAK */ + [LAYER_COLEMAK] = { // COLEMAK { KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_ESC }, { KC_BSPC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT }, - { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT }, - { KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_RAISE, KC_SPC, KC_SPC, M_LOWER, KC_UP, KC_DOWN, KC_LEFT, KC_RGHT }, + { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_UP, KC_ENT }, + { KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_UPPER, KC_SPC, KC_SPC, M_LOWER, OS_SHFT, KC_LEFT, KC_DOWN, KC_RGHT }, }, /* DVORAK * .-----------------------------------------------------------------------------------------------------------. * | TAB | ' | , | . | P | Y | F | G | C | R | L | BACKSP | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | ESC | A | O | E | U | I | D | H | T | N | S | ' | + * | ESC | A | O | E | U | I | D | H | T | N | S | / | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| * | LSHIFT | ; | Q | J | K | X | B | M | W | V | Z | ENTER | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | LCTRL | LWIN | FN | LALT | RAISE | SPACE | SPACE | LOWER | UP | DOWN | LEFT | RIGHT | + * | LCTRL | LWIN | FN | LALT | UPPER | SPACE | SPACE | LOWER | UP | DOWN | LEFT | RIGHT | * '-----------------------------------------------------------------------------------------------------------' */ - [LAYER_DVORAK] = { /* DVORAK */ + [LAYER_DVORAK] = { // DVORAK { KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC }, { KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH }, { KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT }, - { KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_RAISE, KC_SPC, KC_SPC, M_LOWER, KC_UP, KC_DOWN, KC_LEFT, KC_RGHT }, + { KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_UPPER, KC_SPC, KC_SPC, M_LOWER, KC_UP, KC_DOWN, KC_LEFT, KC_RGHT }, }, -/* Raise +/* UPPER * .-----------------------------------------------------------------------------------------------------------. - * | ~ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | DEL | + * | PRINT | F1 | F2 | F3 | F4 | NUM LK | / | 7 | 8 | 9 | - | DEL | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | XXXXXX | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | [ | ] | \ | + * | CAP LK | F5 | F6 | F7 | F8 | SCR LK | * | 4 | 5 | 6 | + | INS | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | LSHIFT | F7 | F8 | F9 | F10 | F11 | F12 | XXXXXX | XXXXXX | XXXXXX | XXXXXX | ENTER | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | LCTRL | LWIN | FN | LALT | RAISE | BACKSP | BACKSP | LOWER | PG UP | PG DN | HOME | END | + * | | F9 | F10 | F11 | F12 | PAUSE | | 1 | 2 | 3 | ENTER | HOME | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| + * | | | | | | 0 | 0 | | RALT | . | ENTER | END | * '-----------------------------------------------------------------------------------------------------------' */ - [LAYER_RAISE] = { /* RAISED */ - { KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL }, - { XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS }, - { _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX }, - { _______, _______, _______, _______, _______, KC_BSPC, KC_BSPC, _______, KC_PGUP, KC_PGDN, KC_HOME, KC_END }, + [LAYER_UPPER] = { // UPPER + { KC_PSCR, KC_F1, KC_F2, KC_F3, KC_F4, KC_NLCK, KC_PSLS, KC_KP_7, KC_KP_8, KC_KP_9, KC_PMNS, KC_DEL }, + { KC_CAPS, KC_F5, KC_F6, KC_F7, KC_F8, KC_SLCK, KC_PAST, KC_KP_4, KC_KP_5, KC_KP_6, KC_PPLS, KC_INS }, + { _______, KC_F9, KC_F10, KC_F11, KC_F12, KC_PAUS, XXXXXXX, KC_KP_1, KC_KP_2, KC_KP_3, KC_PENT, KC_HOME }, + { _______, _______, _______, _______, _______, KC_KP_0, KC_KP_0, _______, KC_RALT, KC_PDOT, KC_PENT, KC_END }, }, - -/* LOWERED +/* LOWER * .-----------------------------------------------------------------------------------------------------------. - * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | INS | + * | | $ | { | [ | ( | % | # | ) | ] | } | @ | PG UP | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | XXXXXX | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | + * | | ^ | * | + | - | ; | : | _ | ' | " | ` | PG DN | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | LSHIFT | F7 | F8 | F9 | F10 | F11 | F12 | XXXXXX | XXXXXX | XXXXXX | XXXXXX | ENTER | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | LCTRL | LWIN | FN | LALT | RAISE | BACKSP | BACKSP | LOWER | PG UP | PG DN | HOME | END | + * | | | | & | ! | ~ | / | \ | = | < | > | ? | HOME | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| + * | | | | | | | | | | | | END | * '-----------------------------------------------------------------------------------------------------------' */ - [LAYER_LOWER] = { /* LOWERED */ - { KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_INS }, - { XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS }, - { _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX }, - { _______, _______, _______, _______, _______, KC_BSPC, KC_BSPC, _______, KC_PGUP, KC_PGDN, KC_HOME, KC_END }, + [LAYER_LOWER] = { // LOWER + { _______, KC_DLR, KC_LCBR, KC_LBRC, KC_LPRN, KC_PERC, KC_HASH, KC_RPRN, KC_RBRC, KC_RCBR, KC_AT, KC_PGUP }, + { _______, KC_CIRC, KC_ASTR, KC_PPLS, KC_PMNS, KC_SCLN, KC_COLN, KC_UNDS, KC_QUOT, KC_DQT, KC_GRV, KC_PGDN }, + { _______, KC_PIPE, KC_AMPR, KC_EXLM, KC_TILD, KC_SLSH, KC_BSLS, KC_EQL, KC_LT, KC_GT, KC_QUES, KC_HOME }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_END }, }, + /* FUNCTION * .-----------------------------------------------------------------------------------------------------------. * | NUM LK | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | PAUSE | @@ -188,10 +190,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| * | SCR LK | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | MUTE | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | LCTRL | LWIN | FN | LALT | RAISE | PLAY | PLAY | LOWER | VOL UP | VOL DN | NEXT | PREV | + * | LCTRL | LWIN | FN | LALT | UPPER | PLAY | PLAY | LOWER | VOL UP | VOL DN | NEXT | PREV | * '-----------------------------------------------------------------------------------------------------------' */ - [LAYER_FUNCTION] = { /* FUNCTION */ + [LAYER_FUNCTION] = { // FUNCTION { KC_NLCK, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_PAUS }, { KC_CAPS, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_PSCR }, { KC_SLCK, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MUTE }, @@ -200,7 +202,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { #ifdef MOUSEKEY_ENABLE - [LAYER_MOUSE] = { /* MOUSE */ + [LAYER_MOUSE] = { // MOUSE { KC_ESC, KC_ACL0, KC_ACL1, KC_ACL2, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC }, { XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX }, { _______, KC_BTN5, KC_BTN4, KC_BTN3, KC_BTN2, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_WH_U, KC_WH_D }, @@ -209,21 +211,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { #endif - [LAYER_MUSIC] = { /* MUSIC */ - { XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX }, - { XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX }, - { XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX }, - { XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, M_RAISE, XXXXXXX, XXXXXXX, M_LOWER, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX }, - }, - - [LAYER_ADJUST] = { /* ADJUST */ - { _______, TIMBR_1, TIMBR_2, TIMBR_3, TIMBR_4, TMPO_UP, TMPO_DN, TMPO_DF, MUS_ON, MUS_OFF, AUD_ON, AUD_OFF }, + [LAYER_ADJUST] = { // ADJUST + { _______, TIMBR_1, TIMBR_2, TIMBR_3, TIMBR_4, TMPO_UP, TMPO_DN, TMPO_DF, _______, _______, MU_TOG, AU_TOG }, { _______, M_QWRTY, M_COLMK, M_DVORK, _______, _______, _______, _______, _______, _______, _______, _______ }, - { _______, _______, _______, _______, M_BACKL, RESET, _______, M_MOUSE, _______, _______, _______, _______ }, - { _______, _______, _______, _______, _______, _______, _______, _______, VC_UP, VC_DOWN, _______, _______ }, + { _______, _______, _______, _______, M_BACKL, RESET, _______, M_MOUSE, _______, _______, MUV_IN, _______ }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, MUV_DE, _______ }, }, - /* [LAYER_EMPTY] = { { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, }, @@ -263,6 +257,7 @@ void persistant_default_layer_set(uint16_t default_layer) } const uint16_t PROGMEM fn_actions[] = { + [0] = ACTION_MODS_ONESHOT(MOD_LSFT), }; const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) @@ -306,25 +301,25 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) if (record->event.pressed) { layer_on(LAYER_LOWER); - update_tri_layer(LAYER_LOWER, LAYER_RAISE, LAYER_ADJUST); + update_tri_layer(LAYER_LOWER, LAYER_UPPER, LAYER_ADJUST); } else { layer_off(LAYER_LOWER); - update_tri_layer(LAYER_LOWER, LAYER_RAISE, LAYER_ADJUST); + update_tri_layer(LAYER_LOWER, LAYER_UPPER, LAYER_ADJUST); } break; - case MACRO_RAISE: + case MACRO_UPPER: if (record->event.pressed) { - layer_on(LAYER_RAISE); - update_tri_layer(LAYER_LOWER, LAYER_RAISE, LAYER_ADJUST); + layer_on(LAYER_UPPER); + update_tri_layer(LAYER_LOWER, LAYER_UPPER, LAYER_ADJUST); } else { - layer_off(LAYER_RAISE); - update_tri_layer(LAYER_LOWER, LAYER_RAISE, LAYER_ADJUST); + layer_off(LAYER_UPPER); + update_tri_layer(LAYER_LOWER, LAYER_UPPER, LAYER_ADJUST); } break; @@ -393,65 +388,6 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) } break; - case MACRO_AUDIO_OFF: - if (record->event.pressed) - { - #ifdef AUDIO_ENABLE - audio_off(); - #endif - } - break; - - case MACRO_AUDIO_ON: - if (record->event.pressed) - { - #ifdef AUDIO_ENABLE - audio_on(); - PLAY_NOTE_ARRAY(tone_audio_on, false, STACCATO); - #endif - } - break; - - case MACRO_MUSIC_ON: - if (record->event.pressed) - { - #ifdef AUDIO_ENABLE - PLAY_NOTE_ARRAY(tone_music_on, false, STACCATO); - layer_on(LAYER_MUSIC); - #endif - } - break; - - case MACRO_MUSIC_OFF: - if (record->event.pressed) - { - #ifdef AUDIO_ENABLE - layer_off(LAYER_MUSIC); - stop_all_notes(); - #endif - } - break; - - case MACRO_INC_VOICE: - if (record->event.pressed) - { - #ifdef AUDIO_ENABLE - voice_iterate(); - PLAY_NOTE_ARRAY(music_scale, false, STACCATO); - #endif - } - break; - - case MACRO_DEC_VOICE: - if (record->event.pressed) - { - #ifdef AUDIO_ENABLE - voice_deiterate(); - PLAY_NOTE_ARRAY(music_scale, false, STACCATO); - #endif - } - break; - #endif /* AUDIO_ENABLE */ default: @@ -464,31 +400,10 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) #ifdef AUDIO_ENABLE - -void process_action_user(keyrecord_t *record) -{ - - uint8_t starting_note = 0x0C; - int offset = 7; - - if (IS_LAYER_ON(LAYER_MUSIC)) - { - if (record->event.pressed) - { - play_note(((double)220.0)*pow(2.0, -4.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row)), 0xF); - } - else - { - stop_note(((double)220.0)*pow(2.0, -4.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row))); - } - } -} - - void matrix_init_user(void) { set_voice(default_voice); - play_startup_tone(); + startup_user(); println("Matrix Init"); } @@ -532,16 +447,32 @@ void led_set_user(uint8_t usb_led) } -void play_startup_tone() +void startup_user() { _delay_ms(10); // gets rid of tick PLAY_NOTE_ARRAY(tone_my_startup, false, STACCATO); } -void play_goodbye_tone() +void shutdown_user() { PLAY_NOTE_ARRAY(tone_my_goodbye, false, STACCATO); - _delay_ms(1000); + _delay_ms(2000); + stop_all_notes(); +} + +void audio_on_user(void) +{ + PLAY_NOTE_ARRAY(tone_audio_on, false, STACCATO); +} + +void music_on_user(void) +{ + PLAY_NOTE_ARRAY(tone_music_on, false, STACCATO); +} + +void music_scale_user(void) +{ + PLAY_NOTE_ARRAY(music_scale, false, STACCATO); } #endif /* AUDIO_ENABLE */ \ No newline at end of file diff --git a/quantum/audio/audio.c b/quantum/audio/audio.c index 32f64417ed..3ca249fdf5 100644 --- a/quantum/audio/audio.c +++ b/quantum/audio/audio.c @@ -475,20 +475,3 @@ void increase_tempo(uint8_t tempo_change) { note_tempo -= tempo_change; } } - - -//------------------------------------------------------------------------------ -// Override these functions in your keymap file to play different tunes on -// startup and bootloader jump -__attribute__ ((weak)) -void play_startup_tone() {} - -__attribute__ ((weak)) -void play_goodbye_tone() {} - -__attribute__ ((weak)) -void audio_on_user() {} - -__attribute__ ((weak)) -void play_music_scale() {} -//------------------------------------------------------------------------------ diff --git a/quantum/audio/audio.h b/quantum/audio/audio.h index b46f587bb4..00d45f7ac1 100644 --- a/quantum/audio/audio.h +++ b/quantum/audio/audio.h @@ -5,6 +5,7 @@ #include "musical_notes.h" #include "song_list.h" #include "voices.h" +#include "quantum.h" #ifndef AUDIO_H #define AUDIO_H @@ -87,9 +88,4 @@ void play_notes(float (*np)[][2], uint16_t n_count, bool n_repeat, float n_rest) bool is_playing_notes(void); -void play_goodbye_tone(void); -void play_startup_tone(void); -void audio_on_user(void); -void play_music_scale(void); - #endif \ No newline at end of file diff --git a/quantum/keymap_common.c b/quantum/keymap_common.c index 1d9ab2e05c..ba7269388b 100644 --- a/quantum/keymap_common.c +++ b/quantum/keymap_common.c @@ -26,6 +26,7 @@ along with this program. If not, see . #include "backlight.h" #include "bootloader.h" #include "eeconfig.h" +#include "quantum.h" #ifdef MIDI_ENABLE #include "keymap_midi.h" @@ -190,7 +191,7 @@ static action_t keycode_to_action(uint16_t keycode) clear_keyboard(); #ifdef AUDIO_ENABLE stop_all_notes(); - play_goodbye_tone(); + shutdown_user(); #endif _delay_ms(250); #ifdef ATREUS_ASTAR diff --git a/quantum/quantum.c b/quantum/quantum.c index 34c575af42..eb64a99a4d 100644 --- a/quantum/quantum.c +++ b/quantum/quantum.c @@ -23,17 +23,16 @@ int offset = 7; #ifdef AUDIO_ENABLE bool music_activated = false; - float music_scale[][2] = SONG(MUSIC_SCALE_SOUND); - // music sequencer - static bool music_sequence_recording = false; - static bool music_sequence_playing = false; - static float music_sequence[16] = {0}; - static uint8_t music_sequence_count = 0; - static uint8_t music_sequence_position = 0; +// music sequencer +static bool music_sequence_recording = false; +static bool music_sequence_playing = false; +static float music_sequence[16] = {0}; +static uint8_t music_sequence_count = 0; +static uint8_t music_sequence_position = 0; - static uint16_t music_sequence_timer = 0; - static uint16_t music_sequence_interval = 100; +static uint16_t music_sequence_timer = 0; +static uint16_t music_sequence_interval = 100; #endif @@ -133,7 +132,7 @@ bool process_record_quantum(keyrecord_t *record) { #ifdef MIDI_ENABLE if (keycode == MI_ON && record->event.pressed) { midi_activated = true; - play_music_scale(); + music_scale_user(); return false; } @@ -230,37 +229,37 @@ bool process_record_quantum(keyrecord_t *record) { } if (keycode == MU_ON && record->event.pressed) { - music_on(); - return false; + music_on(); + return false; } if (keycode == MU_OFF && record->event.pressed) { - music_off(); - return false; + music_off(); + return false; } if (keycode == MU_TOG && record->event.pressed) { if (music_activated) { - music_off(); + music_off(); } else { - music_on(); + music_on(); } return false; } if (keycode == MUV_IN && record->event.pressed) { - voice_iterate(); - play_music_scale(); - return false; + voice_iterate(); + music_scale_user(); + return false; } if (keycode == MUV_DE && record->event.pressed) { - voice_deiterate(); - play_music_scale(); - return false; + voice_deiterate(); + music_scale_user(); + return false; } if (music_activated) { @@ -272,12 +271,14 @@ bool process_record_quantum(keyrecord_t *record) { music_sequence_count = 0; return false; } + if (keycode == KC_LALT && record->event.pressed) { // Stop recording/playing stop_all_notes(); music_sequence_recording = false; music_sequence_playing = false; return false; } + if (keycode == KC_LGUI && record->event.pressed) { // Start playing stop_all_notes(); music_sequence_recording = false; @@ -289,12 +290,13 @@ bool process_record_quantum(keyrecord_t *record) { if (keycode == KC_UP) { if (record->event.pressed) - music_sequence_interval-=10; + music_sequence_interval-=10; return false; } + if (keycode == KC_DOWN) { if (record->event.pressed) - music_sequence_interval+=10; + music_sequence_interval+=10; return false; } @@ -459,5 +461,24 @@ void matrix_scan_quantum() { } #endif + +//------------------------------------------------------------------------------ +// Override these functions in your keymap file to play different tunes on +// different events such as startup and bootloader jump + +__attribute__ ((weak)) +void startup_user() {} + +__attribute__ ((weak)) +void shutdown_user() {} + __attribute__ ((weak)) void music_on_user() {} + +__attribute__ ((weak)) +void audio_on_user() {} + +__attribute__ ((weak)) +void music_scale_user() {} + +//------------------------------------------------------------------------------ \ No newline at end of file diff --git a/quantum/quantum.h b/quantum/quantum.h index d4da772890..69a0d8126a 100644 --- a/quantum/quantum.h +++ b/quantum/quantum.h @@ -67,6 +67,10 @@ void music_toggle(void); void music_on(void); void music_off(void); +void startup_user(void); +void shutdown_user(void); +void audio_on_user(void); void music_on_user(void); +void music_scale_user(void); #endif \ No newline at end of file diff --git a/tmk_core/common/command.c b/tmk_core/common/command.c index 9edcc42a05..024d7c67a3 100644 --- a/tmk_core/common/command.c +++ b/tmk_core/common/command.c @@ -33,20 +33,21 @@ along with this program. If not, see . #include "led.h" #include "command.h" #include "backlight.h" +#include "quantum.h" #ifdef MOUSEKEY_ENABLE #include "mousekey.h" #endif #ifdef PROTOCOL_PJRC -# include "usb_keyboard.h" -# ifdef EXTRAKEY_ENABLE -# include "usb_extra.h" -# endif + #include "usb_keyboard.h" + #ifdef EXTRAKEY_ENABLE + #include "usb_extra.h" + #endif #endif #ifdef PROTOCOL_VUSB -# include "usbdrv.h" + #include "usbdrv.h" #endif #ifdef AUDIO_ENABLE @@ -358,7 +359,7 @@ static bool command_common(uint8_t code) print("\n\nJumping to bootloader... "); #ifdef AUDIO_ENABLE stop_all_notes(); - play_goodbye_tone(); + shutdown_user(); #else _delay_ms(1000); #endif diff --git a/tmk_core/rules.mk b/tmk_core/rules.mk index 552f32331a..1d384574f6 100644 --- a/tmk_core/rules.mk +++ b/tmk_core/rules.mk @@ -366,7 +366,13 @@ ALL_ASFLAGS = -mmcu=$(MCU) -x assembler-with-cpp $(ASFLAGS) $(EXTRAFLAGS) # Default target. -all: begin gccversion sizebefore build sizeafter end +all: + $(MAKE) begin + $(MAKE) gccversion + $(MAKE) sizebefore + $(MAKE) build + $(MAKE) sizeafter + $(MAKE) end # Change the build target to build a HEX file or a library. build: elf hex eep lss sym -- cgit v1.2.1