diff --git a/editor/alps64/firmware.js b/editor/alps64/firmware.js new file mode 100644 index 00000000..d38bd7e8 --- /dev/null +++ b/editor/alps64/firmware.js @@ -0,0 +1,1385 @@ +/* + * TMK Alps64 PCB + */ +KEYBOARD_ID = "alps64"; +KEYBOARD_DESC = "TMK Alps64 PCB" + +/* for ATMega32U4 with 32KB flash */ +KEYMAP_START_ADDRESS = 0x6800; + +/* https://github.com/tmk/tmk_keyboard/tree/master/keyboard/alps64 + * + * Default keymap + * ,-----------------------------------------------------------. + * |` | 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| #|Bsp| + * |-----------------------------------------------------------| + * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ | + * |-----------------------------------------------------------| + * |Caps | A| S| D| F| G| H| J| K| L| ;| '|Enter | + * |-----------------------------------------------------------| + * |Shft| \| Z| X| C| V| B| N| M| ,| .| /|Shift |Esc| + * |-----------------------------------------------------------' + * |Ctrl|Gui |Alt | Space |App |Alt |Gui |Ctrl | + * `-----------------------------------------------------------' + */ +no_map = function() { return [ + [0,0,0,0,0,0,0,0], + [0,0,0,0,0,0,0,0], + [0,0,0,0,0,0,0,0], + [0,0,0,0,0,0,0,0], + [0,0,0,0,0,0,0,0], + [0,0,0,0,0,0,0,0], + [0,0,0,0,0,0,0,0], + [0,0,0,0,0,0,0,0], +]; }; +transparent_map = function() { return [ + [1,1,1,1,1,1,1,1], + [1,1,1,1,1,1,1,1], + [1,1,1,1,1,1,1,1], + [1,1,1,1,1,1,1,1], + [1,1,1,1,1,1,1,1], + [1,1,1,1,1,1,1,1], + [1,1,1,1,1,1,1,1], + [1,1,1,1,1,1,1,1], +]; }; + +// default keymap +keymaps = [ + [ + [ 0xE6, 0x10, 0x36, 0x0E, 0x0F, 0x12, 0x27, 0x2D, ], + [ 0xE7, 0x37, 0x38, 0x33, 0x34, 0x13, 0x2F, 0x2E, ], + [ 0xE4, 0xE5, 0x29, 0x28, 0x31, 0x30, 0x32, 0x2A, ], + [ 0xE0, 0xE1, 0x39, 0x04, 0x2B, 0x14, 0x35, 0x1E, ], + [ 0xE3, 0x64, 0x1D, 0x16, 0x1A, 0x08, 0x1F, 0x20, ], + [ 0xE2, 0x1B, 0x07, 0x09, 0x15, 0x17, 0x21, 0x22, ], + [ 0x2C, 0x06, 0x19, 0x0A, 0x1C, 0x18, 0x23, 0x24, ], + [ 0x65, 0x05, 0x11, 0x0B, 0x0D, 0x0C, 0x25, 0x26, ], + ], + no_map(), + no_map(), + no_map(), + no_map(), + no_map(), + no_map(), + no_map(), +]; + +fn_actions = [ + 0xF1,0xA1,0xF1,0xA2,0xF1,0xA3,0xF1,0xA4,0xF1,0xA5,0xF1,0xA6,0xF1,0xA7,0x02,0x8A, + 0x04,0x8A,0x08,0x8A,0xF0,0xA1,0xF0,0xA2,0xF0,0xA3,0x04,0xA1,0x09,0xA2,0x0D,0xA3, + 0x2C,0xA4,0x33,0xA5,0x34,0xA6,0x38,0xA7,0x2C,0x22,0x2C,0x21,0x34,0x31,0x28,0x31, + 0x29,0x21,0x2A,0x21,0x00,0x21,0x29,0x22,0x2A,0x22,0x00,0x22,0x35,0x32,0x31,0x32, +]; + + +/* hex file whthout keymap region and eof */ +function firmware_hex() +{ + /* HHKB firmware: v4.0-162-g52a7398 */ + /* Flash Map of ATMega32U4(32KB) + * +------------+ 0x0000 + * | .vectors | 0xac (43vectors * 4bytes) + * | .progmem | PROGMEM variables and PSTR + * | .init0-9 | + * | .text | code + * | .fini9-0 | + * | | > text region + * |------------| _etext + * | .data | + * | .bss | + * | .noinit | + * | | > data region + * |------------| 0x6800 + * | .keymap | > keymap region(2KB) + * |------------| 0x7000 + * | bootloader | 4KB + * +------------+ 0x7FFF + * + * keymap region(.keymap): + * +----------------+ + * | fn_actions[] | 64 byte + * |----------------| + * | | + * | keymaps[][][] | < 2KB-64 + * | | + * +----------------+ + */ + // TODO: read hex file directly from remote URL + // Place HEX format string of firmware(0x0000-0x67ff) excluding keymap region. + return "\ +:100000000C942A050C946E050C946E050C946E05E8\r\n\ +:100010000C946E050C946E050C946E050C946E0594\r\n\ +:100020000C946E050C946E050C946E050C943D0CAE\r\n\ +:100030000C94EB0C0C94FA1B0C946E050C946E054E\r\n\ +:100040000C946E050C946E050C946E050C94611C5A\r\n\ +:100050000C946E050C946E050C946E050C946E0554\r\n\ +:100060000C946E050C946E050C946E050C946E0544\r\n\ +:100070000C946E058306860689068C068F0692060A\r\n\ +:100080009506500D720D5D0E720D5D0EB40DD70DFF\r\n\ +:100090005D0E2C0E3F0E701170119E119E11F3110A\r\n\ +:1000A0002F1220142014471220143E133E13FA136B\r\n\ +:1000B000201420140E140A002530313662003A2034\r\n\ +:1000C0000025303258000A722F6320303132333429\r\n\ +:1000D00035363738394142434445460A000A00253F\r\n\ +:1000E00030325800626F756E6365213A20005B7391\r\n\ +:1000F0005D004B6579626F61726420737461727424\r\n\ +:100100002E0A0055534220636F6E666967757265EB\r\n\ +:10011000642E0A005B525D005B445D005B435D0042\r\n\ +:100120000E0341006C0070007300360034000000C4\r\n\ +:10013000080354004D004B000000040309040902A9\r\n\ +:100140007400040100A03209040000010301010051\r\n\ +:10015000092111010001223F000705810308000A5F\r\n\ +:10016000090401000103010200092111010001221B\r\n\ +:100170004D000705820308000A090402000103007C\r\n\ +:100180000000092111010001223600070583030840\r\n\ +:10019000000A090403000203000000092111010004\r\n\ +:1001A0000122200007058403200001070504032025\r\n\ +:1001B00000011201100100000008EDFE646401005E\r\n\ +:1001C000010200010631FF0974A10109751500251E\r\n\ +:1001D000FF9520750881020976150025FF95207589\r\n\ +:1001E000089102C005010980A101850216010026BF\r\n\ +:1001F000B7001A01002AB700751095018100C005EB\r\n\ +:100200000C0901A1018503160100269C021A0100B8\r\n\ +:100210002A9C02751095018100C005010902A10107\r\n\ +:100220000901A100050919012905150025019505F8\r\n\ +:1002300075018102950175038101050109300931BC\r\n\ +:100240001581257F95027508810609381581257F5E\r\n\ +:10025000950175088106050C0A38021581257F95E0\r\n\ +:100260000175088106C0C005010906A1010507192D\r\n\ +:10027000E029E715002501950875018102950175B2\r\n\ +:100280000881010508190129059505750191029557\r\n\ +:1002900001750391010507190029FF150025FF9538\r\n\ +:1002A0000675088100C00A002530325820006B65B1\r\n\ +:1002B00079626F6172645F7265706F72743A200068\r\n\ +:1002C0000A0025303258006B6579626F6172645F95\r\n\ +:1002D0007365745F6C65643A2000646F6E652E0A06\r\n\ +:1002E00000626F6F676D61676963207363616E3A67\r\n\ +:1002F000202E2E2E2000290A002575002F0025759E\r\n\ +:10030000005D28002564002000256400200025648D\r\n\ +:100310000020002564007C0025303258006D6F7588\r\n\ +:1003200073656B6579205B62746E7C7820792076CA\r\n\ +:1003300020685D287265702F61636C293A205B002C\r\n\ +:100340006D6B5F776865656C5F74696D655F746F11\r\n\ +:100350005F6D6178203D2025640A006D6B5F7768D2\r\n\ +:1003600065656C5F6D61785F7370656564203D20C5\r\n\ +:1003700025640A006D6B5F74696D655F746F5F6DF6\r\n\ +:100380006178203D2025640A006D6B5F6D61785FA8\r\n\ +:100390007370656564203D2025640A006D6B5F699C\r\n\ +:1003A0006E74657276616C203D2025640A006D6B69\r\n\ +:1003B0005F64656C6179203D2025640A006D6B5F88\r\n\ +:1003C000776865656C5F74696D655F746F5F6D619B\r\n\ +:1003D00078203D2025640A006D6B5F776865656C49\r\n\ +:1003E0005F6D61785F7370656564203D2025640AE8\r\n\ +:1003F000006D6B5F74696D655F746F5F6D61782010\r\n\ +:100400003D2025640A006D6B5F6D61785F737065D8\r\n\ +:100410006564203D2025640A006D6B5F696E74651C\r\n\ +:100420007276616C203D2025640A006D6B5F646507\r\n\ +:100430006C6179203D2025640A000A00257500368C\r\n\ +:100440003A20776865656C5F74696D655F746F5F8E\r\n\ +:100450006D61783A20000A00257500353A207768EA\r\n\ +:1004600065656C5F6D61785F73706565643A2000E7\r\n\ +:100470000A00257500343A2074696D655F746F5FFA\r\n\ +:100480006D61783A20000A00257500333A206D61CD\r\n\ +:10049000785F73706565643A20000A002575003244\r\n\ +:1004A0003A20696E74657276616C286D73293A2002\r\n\ +:1004B000000A00257500313A2064656C6179282AAC\r\n\ +:1004C00031306D73293A20000A092D2056616C7570\r\n\ +:1004D0006573202D0A004D3E004D25643E20003FEF\r\n\ +:1004E000007365742064656661756C740A00433E30\r\n\ +:1004F000200077686572652064656C74613A2063DA\r\n\ +:100500007572736F723D25642C20776865656C3D4C\r\n\ +:1005100025640A53656520687474703A2F2F656EE0\r\n\ +:100520002E77696B6970656469612E6F72672F77CA\r\n\ +:10053000696B692F4D6F7573655F6B6579730A0021\r\n\ +:100540000A092D204D6F7573656B6579202D0A455D\r\n\ +:1005500053432F713A09717569740A313A09646518\r\n\ +:100560006C6179282A31306D73290A323A09696E33\r\n\ +:1005700074657276616C286D73290A333A096D616E\r\n\ +:10058000785F73706565640A343A0974696D655FF4\r\n\ +:10059000746F5F6D61780A353A09776865656C5FDD\r\n\ +:1005A0006D61785F73706565640A363A09776865CE\r\n\ +:1005B000656C5F74696D655F746F5F6D61780A0A61\r\n\ +:1005C000703A097072696E742076616C7565730A91\r\n\ +:1005D000643A097365742064656661756C74730AA6\r\n\ +:1005E00075703A092B310A646F776E3A092D310A1A\r\n\ +:1005F000706775703A092B31300A7067646F776ED7\r\n\ +:100600003A092D31300A0A7370656564203D206413\r\n\ +:10061000656C7461202A206D61785F737065656414\r\n\ +:10062000202A2028726570656174202F2074696DFE\r\n\ +:10063000655F746F5F6D6178290A003F004D3E2051\r\n\ +:1006400000433E20004C25640A000A092D20436F18\r\n\ +:100650006E736F6C65202D0A4553432F713A0971F3\r\n\ +:100660007569740A6D3A096D6F7573656B65790A02\r\n\ +:10067000000A092D204D61676963202D0A643A093B\r\n\ +:1006800064656275670A783A096465627567206D0A\r\n\ +:1006900061747269780A6B3A096465627567206BE8\r\n\ +:1006A0006579626F6172640A6D3A096465627567A3\r\n\ +:1006B000206D6F7573650A763A0976657273696F96\r\n\ +:1006C0006E0A733A097374617475730A633A096345\r\n\ +:1006D0006F6E736F6C65206D6F64650A302D343AF0\r\n\ +:1006E000096C61796572302D34284631302D4634DD\r\n\ +:1006F000290A506175733A09626F6F746C6F616497\r\n\ +:1007000065720A653A09656570726F6D0A000A00C4\r\n\ +:100710002575002E6E6B726F3A20000A0025750059\r\n\ +:100720002E737761705F6261636B736C6173685F76\r\n\ +:100730006261636B73706163653A20000A0025751E\r\n\ +:10074000002E737761705F67726176655F657363B2\r\n\ +:100750003A20000A002575002E6E6F5F6775693AB2\r\n\ +:1007600020000A002575002E737761705F72616C3E\r\n\ +:10077000745F726775693A20000A002575002E7350\r\n\ +:100780007761705F6C616C745F6C6775693A2000AB\r\n\ +:100790000A002575002E636170736C6F636B5F7464\r\n\ +:1007A0006F5F636F6E74726F6C3A20000A0025757C\r\n\ +:1007B000002E737761705F636F6E74726F6C5F632E\r\n\ +:1007C0006170736C6F636B3A20000A0025303258F9\r\n\ +:1007D000006B65796D61705F636F6E6669672E721D\r\n\ +:1007E00061773A20000A002575002E6D6F757365DC\r\n\ +:1007F0003A20000A002575002E6B6579626F6172E0\r\n\ +:10080000643A20000A002575002E6D6174726978C3\r\n\ +:100810003A20000A002575002E656E61626C653A0B\r\n\ +:1008200020000A00253032580064656275675F63F6\r\n\ +:100830006F6E6669672E7261773A20000A0025752F\r\n\ +:100840000064656661756C745F6C617965723A20ED\r\n\ +:10085000003F0074696D65725F636F756E743A2056\r\n\ +:100860002530346C580A006B6579626F6172645F81\r\n\ +:1008700069646C653A2025580A006B6579626F617E\r\n\ +:1008800072645F70726F746F636F6C3A2025580AE0\r\n\ +:1008900000686F73745F6B6579626F6172645F6C1F\r\n\ +:1008A00065647328293A2025580A000A092D205327\r\n\ +:1008B0007461747573202D0A004743433A20342E27\r\n\ +:1008C000382E31204156522D4C4942433A20312E88\r\n\ +:1008D000382E3073766E204156525F415243483A6B\r\n\ +:1008E0002061767233350A004F5054494F4E533AC7\r\n\ +:1008F000204C55464120424F4F544D4147494320DB\r\n\ +:100900004D4F5553454B45592045585452414B4541\r\n\ +:100910005920434F4E534F4C4520434F4D4D414E70\r\n\ +:1009200044204B45594D41505F53454354494F4E28\r\n\ +:1009300020343039360A004255494C443A2031348B\r\n\ +:100940006136366131202831333A30373A3032203F\r\n\ +:100950004E6F762020382032303135290A00564932\r\n\ +:10096000443A2030784645454428544D4B29205080\r\n\ +:1009700049443A2030783634363428416C70733626\r\n\ +:100980003429205645523A203078303030310A0030\r\n\ +:10099000444553433A20544D4B206B6579626F6157\r\n\ +:1009A0007264206669726D7761726520666F72206D\r\n\ +:1009B000416C707336340A000A092D205665727333\r\n\ +:1009C000696F6E202D0A000A6D6F7573653A206F8E\r\n\ +:1009D00066660A000A6D6F7573653A206F6E0A00CD\r\n\ +:1009E0000A6B6579626F6172643A206F66660A000D\r\n\ +:1009F0000A6B6579626F6172643A206F6E0A000A51\r\n\ +:100A00006D61747269783A206F66660A000A6D61DA\r\n\ +:100A1000747269783A206F6E0A000A6465627567BD\r\n\ +:100A20003A206F6E0A000A64656275673A206F6645\r\n\ +:100A3000660A000A0A626F6F746C6F616465722ED9\r\n\ +:100A40002E2E2000433E20006565636F6E66696749\r\n\ +:100A50003A0A000011241FBECFEFD4E0DEBFCDBFA5\r\n\ +:100A600004B603FE24C08091CA019091CB01A091ED\r\n\ +:100A7000CC01B091CD018730904BA740B04BB9F479\r\n\ +:100A80001092CA011092CB011092CC011092CD01AC\r\n\ +:100A900014BE84B7877F84BF88E10FB6F894809333\r\n\ +:100AA0006000109260000FBEE0E0F8E3099511E0ED\r\n\ +:100AB000A0E0B1E0ECE5FFE402C005900D92A233A6\r\n\ +:100AC000B107D9F721E0A2E3B1E001C01D92AA3C31\r\n\ +:100AD000B207E1F70E9487090C94AC270C94000040\r\n\ +:100AE000FF93EF93E0913201F0913301309709F0D9\r\n\ +:100AF0000995EF91FF910895FC018591803011F0E7\r\n\ +:100B0000EFDFFBCF0895FF27E0E230E247FF0CC0A4\r\n\ +:100B1000419597FF09C0EDE260957095809590959D\r\n\ +:100B2000611D711D811D911D27FF02C0219530E3BC\r\n\ +:100B300050E2AA27660F771F881F991FAA1FA417C4\r\n\ +:100B400010F0A41B63955A95A9F7AA3008F0A95F85\r\n\ +:100B5000A05DAF93F395611571058105910541F78E\r\n\ +:100B6000ED3211F4EF93F395F21718F43F93F395E8\r\n\ +:100B7000FBCF8F91B5DFFA95E1F70895E991F991EF\r\n\ +:100B80008591803021F0853219F0AADFF9CF0895E0\r\n\ +:100B900020E0E89455915532C1F3503311F4689434\r\n\ +:100BA00055915A3348F4505390F3220F022E220FDE\r\n\ +:100BB000220F200D250FF4CF0EF4219589919991E4\r\n\ +:100BC000533619F3533729F1533559F1BC018827AE\r\n\ +:100BD0009927E8945C3621F489919991689455910C\r\n\ +:100BE000543639F446EF7EF077FF0DC08FEF9FEF5C\r\n\ +:100BF0000AC055374AE039F0583540E121F0523605\r\n\ +:100C000042E009F00895FF93EF937DDFEF91FF91AC\r\n\ +:100C1000B7CFFF93EF93FC0181918030B9F360DF90\r\n\ +:100C2000FBCFFF93EF9368DFF1CFDF93CF93CDB787\r\n\ +:100C3000DEB72596A3DFCF91DF910895E82FF0E08E\r\n\ +:100C400083E0EE0FFF1F8A95E1F7E70FF11D93E0B8\r\n\ +:100C5000EE0FFF1F9A95E1F7E60FF11DE05CF749F3\r\n\ +:100C600084910895E82FF0E0EE0FFF1FE058F94956\r\n\ +:100C70008591949108958AB180788AB98BB18078F2\r\n\ +:100C80008BB93A98429808950E943B0684B114B8F3\r\n\ +:100C900085B18FEF85B9ECE3F1E0A4E3B1E0119207\r\n\ +:100CA0001D9221E0E434F207D1F78091AB0182601C\r\n\ +:100CB0008093AB013D9A459A8FEF99E628E18150E8\r\n\ +:100CC00090402040E1F700C000003D98459808950D\r\n\ +:100CD000EF92FF920F931F93CF93DF93C4E3D1E082\r\n\ +:100CE000F12C85E0E82E0FED10E08F2D90E0FC0157\r\n\ +:100CF0003197E730F10520F4E65CFF4F0C94612753\r\n\ +:100D0000509A589814C0519A599811C0529A5A98AA\r\n\ +:100D10000EC0539A5B980BC0549A5C9808C0559AC1\r\n\ +:100D20005D9805C0569A5E9802C03A9A429880EA49\r\n\ +:100D30008A95F1F783B180959881981739F1888366\r\n\ +:100D400080910001882301F18091AB0180FF04C0F4\r\n\ +:100D500084EE90E00E947C058091AB0180FF0CC086\r\n\ +:100D6000809100011F928F931F930F930E9415068D\r\n\ +:100D70000F900F900F900F908091AB0180FF04C0F7\r\n\ +:100D80008DED90E00E947C05E09200010E943B0600\r\n\ +:100D9000F394219698E0F912A8CF8091000188235E\r\n\ +:100DA000B1F0815080930001882339F08FE99FE0F2\r\n\ +:100DB0000197F1F700C000000AC0ACE3B1E0E4E342\r\n\ +:100DC000F1E081918D9391E0EC33F907D1F781E067\r\n\ +:100DD000DF91CF911F910F91FF90EF900895E82F31\r\n\ +:100DE000F0E0E45CFE4F80810895CF92DF92EF92B5\r\n\ +:100DF000FF920F931F93CF93DF9386EC90E00E94B6\r\n\ +:100E00007C059CE3E92E91E0F92EC0E0D0E021ECD6\r\n\ +:100E1000C22E20E0D22E08EB10E0DF93CF93DF92BA\r\n\ +:100E2000CF920E9415068EEB90E00E947C05F701A0\r\n\ +:100E300081917F0190E00E94A31B9F938F931F934A\r\n\ +:100E40000F930E94150686EB90E00E947C05219688\r\n\ +:100E50008DB79EB708960FB6F8949EBF0FBE8DBF94\r\n\ +:100E6000C830D105D1F6DF91CF911F910F91FF903E\r\n\ +:100E7000EF90DF90CF90089581FF03C03D9A459A8F\r\n\ +:100E800008953D984598089580914F0108959FB722\r\n\ +:100E9000F894109246019FBF9091C101943009F0DF\r\n\ +:100EA00058C09091E9009F702091EC0020FF02C093\r\n\ +:100EB00020E801C020E0292B94E09093E900909174\r\n\ +:100EC000EB0090FF43C09091EE0097FF3FC09091E0\r\n\ +:100ED0004401992321F09091E80095FF37C01092CA\r\n\ +:100EE000440196E03091E80035FD15C03091C10114\r\n\ +:100EF000343061F53091EB0035FD28C0915021F47C\r\n\ +:100F000081E08093440122C0EFE9FFE03197F1F7DF\r\n\ +:100F100000C00000E7CF8093F1008091E80085FDDC\r\n\ +:100F20000AC08091E80080FFFCCF8091E8008E77B6\r\n\ +:100F30008093E80006C08FB7F89491E09093460143\r\n\ +:100F40008FBF2F702093E90080E008952F702093C9\r\n\ +:100F5000E9008FEF0895CF93DF9300D01F92CDB7B4\r\n\ +:100F6000DEB72091C101243019F523E029839B834A\r\n\ +:100F70008A832093E9008FEF9091E800815095FDDE\r\n\ +:100F800006C095ED9A95F1F700008111F5CF80919B\r\n\ +:100F9000E80085FF0DC040E050E063E070E0CE0166\r\n\ +:100FA00001960E94440A8091E8008E778093E800C1\r\n\ +:100FB0000F900F900F90DF91CF910895CF93DF9313\r\n\ +:100FC00000D01F92CDB7DEB72091C101243021F5AA\r\n\ +:100FD00022E029839B838A8383E08093E9008FEF5B\r\n\ +:100FE0009091E800815095FD06C095ED9A95F1F736\r\n\ +:100FF00000008111F5CF8091E80085FF0DC040E031\r\n\ +:1010000050E063E070E0CE0101960E94440A8091B6\r\n\ +:10101000E8008E778093E8000F900F900F90DF919B\r\n\ +:10102000CF9108952091C1012430F1F422E0209362\r\n\ +:10103000E9002FEF3091E800215035FD06C035ED75\r\n\ +:101040003A95F1F700002111F5CF2091E80025FF36\r\n\ +:101050000BC040E050E065E070E00E94440A8091DF\r\n\ +:10106000E8008E778093E8000895CF93DF93EC013A\r\n\ +:101070008091C101843039F581E08093E9008FEFE0\r\n\ +:101080009091E800815095FD06C095ED9A95F1F795\r\n\ +:1010900000008111F5CF8091E80085FF14C040E089\r\n\ +:1010A00050E068E070E0CE010E94440A8091E800C0\r\n\ +:1010B0008E778093E80088E0FE01A7E4B1E001901C\r\n\ +:1010C0000D928A95E1F7DF91CF9108958CE191E03F\r\n\ +:1010D0000E947C058091C001811109C00E94DA0B39\r\n\ +:1010E0000E942D0C8091E20084608093E2000895BC\r\n\ +:1010F00088E191E00E947C051092C001089584E18E\r\n\ +:1011000091E00C947C05809145018F5F80934501AF\r\n\ +:1011100062E30E944127911135C0109245018091F0\r\n\ +:101120004601882379F18091C101843049F580918D\r\n\ +:10113000E9008F709091EC0090FF02C090E801C030\r\n\ +:1011400090E0982B84E08093E9008091EB0080FF91\r\n\ +:1011500014C08091EE0087FF10C08091E80085FFE9\r\n\ +:1011600003C01092F100F9CF8091E80080FF05C024\r\n\ +:101170008091E8008E778093E8009F709093E9005B\r\n\ +:1011800010924601089542E061EC81E00E94540B08\r\n\ +:1011900042E061EC82E00E94540B42E061EC83E0AB\r\n\ +:1011A0000E94540B42E261EC84E00C94540B809159\r\n\ +:1011B000C301833009F453C030F4813071F08230C0\r\n\ +:1011C00009F48CC008958A3009F478C08B3009F492\r\n\ +:1011D0005EC0893009F09AC020C08091C201813A76\r\n\ +:1011E00009F094C08091E800877F8093E8008091A7\r\n\ +:1011F000C6019091C701892B21F060E080E090E06A\r\n\ +:1012000003C068E087E491E070E00E948D0A80915D\r\n\ +:10121000E8008B778093E80008958091C2018132C5\r\n\ +:1012200009F074C08091C6019091C701892B09F023\r\n\ +:101230006DC08091E800877F8093E8008091E8008E\r\n\ +:1012400082FD05C08091C1018111F8CF5FC08091FE\r\n\ +:10125000F10080934F018091E8008B7753C080911B\r\n\ +:10126000C201813A09F052C08091C6019091C70134\r\n\ +:10127000892B09F04BC08091E800877F8093E800BC\r\n\ +:101280008091E80080FFFCCF80910B0136C08091F7\r\n\ +:10129000C2018132D9F58091C6019091C701892B95\r\n\ +:1012A000A9F58091E800877F8093E8000E94890B70\r\n\ +:1012B0008091C40180930B010C9441148091C20170\r\n\ +:1012C000813221F58091E800877F8093E8000E94B9\r\n\ +:1012D000890B8091C5018093500108958091C201CE\r\n\ +:1012E000813AA1F48091E800877F8093E8008091A3\r\n\ +:1012F000E80080FFFCCF809150018093F100809145\r\n\ +:10130000E8008E778093E8000C94890B089584B7E9\r\n\ +:10131000877F84BF88E10FB6F894809360001092B5\r\n\ +:1013200060000FBE90E080E80FB6F89480936100F3\r\n\ +:10133000909361000FBE0E94030F0E94DA0B0E947F\r\n\ +:101340002D0C8091E20084608093E20087E497E0B6\r\n\ +:101350000E948D1B78948091C1018430E1F783E075\r\n\ +:1013600091E00E947C050E94050F81E091E00E94BF\r\n\ +:10137000750E82EF90E00E947C058091C10185305E\r\n\ +:1013800089F48EEE90E00E947C050E94BD1B809146\r\n\ +:10139000BF01882391F30E94E51B882371F30E940B\r\n\ +:1013A0002E0AEBCF0E94330FE8CF292F33272330AB\r\n\ +:1013B0003105A9F06CF42130310509F442C0223026\r\n\ +:1013C000310509F043C084E790E02EE331E042C0EC\r\n\ +:1013D00021323105C9F02232310519F137C0992780\r\n\ +:1013E0008130910541F08230910541F0892B71F5F2\r\n\ +:1013F000EAE3F1E005C0E0E3F1E002C0E0E2F1E0A1\r\n\ +:10140000849190E09F0126C0643000F5E62FF0E063\r\n\ +:10141000EE0FFF1FE05EFE4F2081318189E090E0FA\r\n\ +:1014200019C0643098F4E62FF0E0DF01AA0FBB1F6B\r\n\ +:10143000A85EBE4F2D913C91EC5EFE4F808190E006\r\n\ +:1014400009C082E190E022EB31E004C080E090E04E\r\n\ +:1014500020E030E0FA0131832083089584E089BDE3\r\n\ +:1014600086E089BD09B400FEFDCF8091D8008F7D54\r\n\ +:101470008093D8008091E00082608093E0008091AA\r\n\ +:10148000E00081FDFCCF0895CF92DF92EF92FF92B2\r\n\ +:101490000F931F93CF93DF937C018B01EA010E948E\r\n\ +:1014A000AA0B811131C0209731F088819981081BE6\r\n\ +:1014B000190BE80EF91EC12CD12C0115110519F1DB\r\n\ +:1014C0008091E80085FD14C08091E8008E778093BC\r\n\ +:1014D000E800209741F0888199818C0D9D1D9983AA\r\n\ +:1014E000888385E011C00E94AA0B882331F30CC0C9\r\n\ +:1014F000F70181917F018093F10001501109FFEF05\r\n\ +:10150000CF1ADF0ADACF80E0DF91CF911F910F91E0\r\n\ +:10151000FF90EF90DF90CF9008952091C801309117\r\n\ +:10152000C9012617370748F06115710539F4209174\r\n\ +:10153000E8002E772093E80001C0B90120E0611592\r\n\ +:101540007105D1F13091C101332309F443C0353025\r\n\ +:1015500009F442C03091E80033FD40C03091E8000A\r\n\ +:1015600032FF06C08091E80082FF29C080E0089524\r\n\ +:101570003091E80030FFE3CF2091F20030E0FC0131\r\n\ +:10158000281B390BCF01820F931F6115710549F09C\r\n\ +:101590008830910530F481918093F1006150710998\r\n\ +:1015A000F1CF21E0089709F020E08091E8008E77E4\r\n\ +:1015B0008093E800CF01C3CF2111C4CFD3CF809156\r\n\ +:1015C000C101882339F0853039F08091E80083FF2C\r\n\ +:1015D000C9CF04C082E0089583E0089581E00895B2\r\n\ +:1015E0002091C8013091C9012617370748F06115CD\r\n\ +:1015F000710539F42091E8002E772093E80001C0AE\r\n\ +:10160000B90120E061157105D9F13091C101332391\r\n\ +:1016100009F444C0353009F443C03091E80033FD8B\r\n\ +:1016200041C03091E80032FF06C08091E80082FF9F\r\n\ +:101630002AC080E008953091E80030FFE3CF209188\r\n\ +:10164000F20030E0FC01281B390BC9018E0F9F1FEF\r\n\ +:101650006115710551F08830910538F484918093BB\r\n\ +:10166000F100319661507109F0CF21E0089709F03F\r\n\ +:1016700020E08091E8008E778093E800CF01C2CF10\r\n\ +:101680002111C3CFD2CF8091C101882339F0853099\r\n\ +:1016900039F08091E80083FFC8CF04C082E008954C\r\n\ +:1016A00083E0089581E00895982F953058F5909340\r\n\ +:1016B000E900981739F07091EC002091ED005091FD\r\n\ +:1016C000F00003C0242F762F50E021FF19C0309185\r\n\ +:1016D000EB003E7F3093EB003091ED003D7F309387\r\n\ +:1016E000ED003091EB0031603093EB007093EC0033\r\n\ +:1016F0002093ED005093F0002091EE0027FF07C0EB\r\n\ +:101700009F5FD3CF8F708093E90081E0089580E0E0\r\n\ +:1017100008958091C20187FD05C08091E80080FF97\r\n\ +:101720000EC012C08091E80082FD05C08091C10109\r\n\ +:101730008111F8CF08958091E8008B7708C08091DF\r\n\ +:10174000C1018111EACF08958091E8008E778093DE\r\n\ +:10175000E80008958091E4009091E50045E620912D\r\n\ +:10176000EC0020FF21C02091E80020FD21C0209145\r\n\ +:10177000C101222389F0253089F02091EB0025FD5D\r\n\ +:101780000FC02091E4003091E5002817390739F3A4\r\n\ +:10179000415041F0C901E3CF82E0089583E008950C\r\n\ +:1017A00081E0089584E008952091E80022FFDFCFD2\r\n\ +:1017B00080E008950E94370C0E943A0CE0EEF0E0C1\r\n\ +:1017C000808181608083E8EDF0E080818F77808385\r\n\ +:1017D00019BCE3E6F0E08081816080831092C00153\r\n\ +:1017E00008950E94370C0E943A0C8091D8008F77A0\r\n\ +:1017F0008093D8008091D80080688093D800809131\r\n\ +:10180000D8008F7D8093D80084E089BD86E089BDB3\r\n\ +:1018100009B400FEFDCF1092C1011092BD011092DB\r\n\ +:10182000BF011092BE0142E060E080E00E94540BD4\r\n\ +:101830008091E1008E7F8093E1008091E2008160E1\r\n\ +:101840008093E2008091E20088608093E2008091C2\r\n\ +:10185000E0008E7F8093E0000895E3E6F0E0808171\r\n\ +:101860008E7F808381E08093C0010C94F10B1092F5\r\n\ +:10187000E20008951092E10008951F920F920FB6B2\r\n\ +:101880000F9211242F933F934F935F936F937F9306\r\n\ +:101890008F939F93AF93BF93EF93FF938091E1005A\r\n\ +:1018A00082FF0BC08091E20082FF07C08091E100BF\r\n\ +:1018B0008B7F8093E1000E9483088091E10080FF8C\r\n\ +:1018C00018C08091E20080FF14C08091E2008E7FFA\r\n\ +:1018D0008093E2008091E20080618093E200809139\r\n\ +:1018E000D80080628093D80019BC1092C1010E9478\r\n\ +:1018F00078088091E10084FF30C08091E20084FF8D\r\n\ +:101900002CC084E089BD86E089BD09B400FEFDCF0E\r\n\ +:101910008091D8008F7D8093D8008091E1008F7EE8\r\n\ +:101920008093E1008091E2008F7E8093E2008091BD\r\n\ +:10193000E20081608093E2008091BD01882311F074\r\n\ +:1019400084E007C08091E30087FF02C083E001C00C\r\n\ +:1019500081E08093C1010E9466088091E10083FFCD\r\n\ +:1019600029C08091E20083FF25C08091E100877F3C\r\n\ +:101970008093E10082E08093C1011092BD018091CB\r\n\ +:10198000E1008E7F8093E1008091E2008E7F809362\r\n\ +:10199000E2008091E20080618093E20042E060E03A\r\n\ +:1019A00080E00E94540B8091F00088608093F000EA\r\n\ +:1019B0000E947F08FF91EF91BF91AF919F918F910E\r\n\ +:1019C0007F916F915F914F913F912F910F900FBE3B\r\n\ +:1019D0000F901F9018951F920F920FB60F9211241F\r\n\ +:1019E0002F933F934F935F936F937F938F939F9327\r\n\ +:1019F000AF93BF93CF93EF93FF93C091E900CF7064\r\n\ +:101A00008091EC001092E9008091F000877F809334\r\n\ +:101A1000F00078940E94270D1092E9008091F00068\r\n\ +:101A200088608093F000C093E900FF91EF91CF911F\r\n\ +:101A3000BF91AF919F918F917F916F915F914F91E6\r\n\ +:101A40003F912F910F900FBE0F901F9018951F93ED\r\n\ +:101A5000CF93DF93CDB7DEB7AA970FB6F894DEBF6A\r\n\ +:101A60000FBECDBFE2ECF1E08091F100819321E067\r\n\ +:101A7000EA3CF207C9F70E94D7088091E80083FF8B\r\n\ +:101A80001CC12091C2013091C301832F90E08A30A4\r\n\ +:101A9000910508F012C1FC01EF5BFF4F0C94612728\r\n\ +:101AA000203881F0223809F008C18091C6018F707A\r\n\ +:101AB0008093E9008091EB0085FB882780F91092E4\r\n\ +:101AC000E90006C08091BE019091BF019111826032\r\n\ +:101AD0009091E800977F9093E8008093F100109236\r\n\ +:101AE000F100C5C0822F8D7F09F0E7C0222319F0D5\r\n\ +:101AF000223061F0E2C08091C401813009F0DDC084\r\n\ +:101B0000333009F080E08093BF0128C08091C40188\r\n\ +:101B1000811124C02091C6012F7009F4CEC02093FA\r\n\ +:101B2000E9008091EB0080FF19C08091EB00333019\r\n\ +:101B300011F4806211C080618093EB0081E090E03D\r\n\ +:101B4000022E01C0880F0A94EAF78093EA001092EF\r\n\ +:101B5000EA008091EB0088608093EB001092E9002E\r\n\ +:101B60008091E800877F86C02111A7C01091C40131\r\n\ +:101B70001F778091E3008078812B8093E300809130\r\n\ +:101B8000E800877F8093E8000E94890B8091E8003D\r\n\ +:101B900080FFFCCF8091E30080688093E3001123F5\r\n\ +:101BA00011F083E001C082E08093C10186C020581B\r\n\ +:101BB000223008F082C08091C4019091C5018C3D13\r\n\ +:101BC00023E0920779F583E08A838AE289834FB71D\r\n\ +:101BD000F894DE01139620E03EE051E2E32FF0E0BE\r\n\ +:101BE00050935700E49120FF03C0E295EF703F5FF0\r\n\ +:101BF000EF708E2F90E0EA3010F0C79601C0C096CB\r\n\ +:101C00008D939D932F5F243149F74FBF8091E8005A\r\n\ +:101C1000877F8093E8006AE270E0CE0101960E941F\r\n\ +:101C20008D0A14C0AE014F5F5F4F6091C6010E94E4\r\n\ +:101C3000D509009709F441C02091E800277F20933F\r\n\ +:101C4000E800BC0189819A810E94F00A8091E80035\r\n\ +:101C50008B778093E80031C0203879F58091E800D7\r\n\ +:101C6000877F8093E8008091BD018093F10080918F\r\n\ +:101C7000E8008E778093E8000E94890B1EC0211136\r\n\ +:101C80001CC09091C4019230C0F48091E800877F1D\r\n\ +:101C90008093E8009093BD010E94890B8091BD0163\r\n\ +:101CA000811104C08091E30087FF02C084E001C07D\r\n\ +:101CB00081E08093C1010E94C3088091E80083FF06\r\n\ +:101CC0000AC08091E800877F8093E8008091EB0054\r\n\ +:101CD00080628093EB00AA960FB6F894DEBF0FBE29\r\n\ +:101CE000CDBFDF91CF911F910895909356018093BE\r\n\ +:101CF00055010895E0915501F0915601309721F07A\r\n\ +:101D00000190F081E02D099480E00895FF920F93F7\r\n\ +:101D10001F93CF93DF938C01E0915501F091560111\r\n\ +:101D2000309799F10280F381E02D09958091AB0104\r\n\ +:101D300082FF2BC080FF04C08EEA92E00E947C05E7\r\n\ +:101D4000E80188E0F82E08EA12E08091AB0180FFFC\r\n\ +:101D50000BC088811F928F931F930F930E941506CB\r\n\ +:101D60000F900F900F900F90FA942196F110EDCFF5\r\n\ +:101D70008091AB0180FF09C086EA92E0DF91CF91AC\r\n\ +:101D80001F910F91FF900C947C05DF91CF911F91D3\r\n\ +:101D90000F91FF900895E0915501F0915601309711\r\n\ +:101DA00021F00480F581E02D0994089520915301DC\r\n\ +:101DB000309154018217930771F0909354018093EE\r\n\ +:101DC0005301E0915501F0915601309721F00680C2\r\n\ +:101DD000F781E02D0994089520915101309152012D\r\n\ +:101DE0008217930771F09093520180935101E09113\r\n\ +:101DF0005501F0915601309721F00084F185E02DD6\r\n\ +:101E00000994089508950C94020F0E94231C0E94C7\r\n\ +:101E100044060C94E91CCF93C82F8091AB0182FF3C\r\n\ +:101E20001EC080FF04C087EC92E00E947C05809178\r\n\ +:101E3000AB0180FF0CC01F92CF9322EC32E03F93A6\r\n\ +:101E40002F930E9415060F900F900F900F90809186\r\n\ +:101E5000AB0180FF04C080EC92E00E947C058C2FD7\r\n\ +:101E6000CF910C943C07CF92DF92EF92FF920F93A9\r\n\ +:101E70001F93CF93DF93CDB7DEB72B970FB6F894B0\r\n\ +:101E8000DEBF0FBECDBF0E94680638E5E32E31E00D\r\n\ +:101E9000F32E00E010E0C02E802F0E94EF06F70125\r\n\ +:101EA000D1907F01D826B1F40F5F1F4F0830110584\r\n\ +:101EB00091F78FEF89838A831B820E942C1C81609B\r\n\ +:101EC000782F9D838C8349815A816B818D810E94FB\r\n\ +:101ED000D60F41C09091AB0191FF04C08B870E9447\r\n\ +:101EE000F5068B8520E030E04D2D50E0922FBA01B1\r\n\ +:101EF000022E02C0759567950A94E2F760FF25C02F\r\n\ +:101F00002E83CF82EE24E394F12C02C0EE0CFF1C52\r\n\ +:101F10009A95E2F790E08E219F2121E0892B09F428\r\n\ +:101F200020E028870E942C1C8160782F9A8789875F\r\n\ +:101F30004E815F8168858A850E94D60FF801E85A34\r\n\ +:101F4000FE4F80818E25808306C02F5F3F4F283053\r\n\ +:101F5000310561F6A9CF0E945620109157010E94C9\r\n\ +:101F60007A0E1817A1F00E947A0E809357012B96D3\r\n\ +:101F70000FB6F894DEBF0FBECDBFDF91CF911F919A\r\n\ +:101F80000F91FF90EF90DF90CF900C940B0F2B965A\r\n\ +:101F90000FB6F894DEBF0FBECDBFDF91CF911F917A\r\n\ +:101FA0000F91FF90EF90DF90CF900895CF93DF9344\r\n\ +:101FB000CDB7DEB72B970FB6F894DEBF0FBECDBFFF\r\n\ +:101FC0004F83588769877A878B87DE01119686E071\r\n\ +:101FD000FD0111928A95E9F785E0FE01379601909F\r\n\ +:101FE0000D928A95E1F749815A816B817C818D81BF\r\n\ +:101FF0009E810E940E172B960FB6F894DEBF0FBE7F\r\n\ +:10200000CDBFDF91CF910895CF93C82F882309F4D6\r\n\ +:10201000C1C0823859F40E947A0E81FDBBC089E3A9\r\n\ +:102020000E94B0190E942B1A89E30CC0833879F4FE\r\n\ +:102030000E947A0E80FDAEC083E50E94B0190E9416\r\n\ +:102040002B1A83E50E94D119CF910C942B1A843856\r\n\ +:1020500059F40E947A0E82FD9DC087E40E94B01957\r\n\ +:102060000E942B1A87E4EECF8CEF8C0F813A48F454\r\n\ +:102070008C2F0E94B42481118DC08C2F0E94B01926\r\n\ +:10208000E3CF80E28C0F883048F4C77081E001C054\r\n\ +:10209000880FCA95EAF70E94F219D6CF8BE58C0F0C\r\n\ +:1020A000833078F4C53A29F0C63A31F482E890E0FA\r\n\ +:1020B00005C081E890E002C083E890E0CF910C94E5\r\n\ +:1020C000D60E88E58C0F833108F064C0C83A39F128\r\n\ +:1020D000C93A41F1CA3A49F1CB3A51F1CC3A59F1F6\r\n\ +:1020E000CD3A61F1C03B69F1CE3A71F1CF3A79F165\r\n\ +:1020F000C13B81F1C23B89F1C33B91F1C43B99F1F2\r\n\ +:10210000C53BA1F1C63BA9F1C73BB1F1C83BB9F151\r\n\ +:10211000C93BC1F1CA3BC9F58AE292E038C082EE00\r\n\ +:1021200090E035C089EE90E032C08AEE90E02FC09A\r\n\ +:1021300085EB90E02CC086EB90E029C087EB90E027\r\n\ +:1021400026C08CEC90E023C08DEC90E020C083E8AA\r\n\ +:1021500091E01DC08AE891E01AC082E991E017C0C1\r\n\ +:1021600084E991E014C081E292E011C083E292E040\r\n\ +:102170000EC084E292E00BC085E292E008C086E2E5\r\n\ +:1021800092E005C087E292E002C080E090E0CF914B\r\n\ +:102190000C94EC0ECF910895882309F44BC082383B\r\n\ +:1021A00059F40E947A0E81FF45C089E30E94B0195C\r\n\ +:1021B0000E942B1A89E30CC0833871F40E947A0EB6\r\n\ +:1021C00080FF38C083E50E94B0190E942B1A83E576\r\n\ +:1021D0000E94D1190C942B1A843859F40E947A0E5B\r\n\ +:1021E00082FF28C087E40E94B0190E942B1A87E45E\r\n\ +:1021F000EFCF9CEF980F913A58F390E2980F9830F8\r\n\ +:1022000050F4877091E001C0990F8A95EAF7892F01\r\n\ +:102210000E94F819DFCF9BE5980F933020F480E0FF\r\n\ +:1022200090E00C94D60E885A833120F480E090E040\r\n\ +:102230000C94EC0E0895882321F00E94F2190C945E\r\n\ +:102240002B1A0895882321F00E94F8190C942B1A58\r\n\ +:102250000895CF92DF92EF92FF920F931F93CF9347\r\n\ +:10226000DF93CDB7DEB728970FB6F894DEBF0FBE69\r\n\ +:10227000CDBF8C0185E0F801DE01119601900D9231\r\n\ +:102280008A95E1F7F80140813181F280258122951C\r\n\ +:102290002F7083819481892B31F03F3F31F481E0AD\r\n\ +:1022A0004F3F19F403C081E001C080E080FDC8C247\r\n\ +:1022B00049833A8389819A812F830E946E199E8374\r\n\ +:1022C00088870E946D190E9440184E81E42FE29584\r\n\ +:1022D000EF70F0E0E55BFF4F2F8168850C9461277C\r\n\ +:1022E000842F807F142F1F70882311F01295107F88\r\n\ +:1022F000FF2059F0112309F458C2812F68870E94EA\r\n\ +:10230000021A0E942B1A688550C2862F0E94CC1098\r\n\ +:10231000112309F495C2812F0E94081A28960FB63E\r\n\ +:10232000F894DEBF0FBECDBFDF91CF911F910F910B\r\n\ +:10233000FF90EF90DF90CF900C942B1A342F307FCA\r\n\ +:10234000842F8F70303211F08295807F662319F0D0\r\n\ +:10235000613009F12AC0FF20A1F0222381F1213050\r\n\ +:1023600071F528960FB6F894DEBF0FBECDBFDF9192\r\n\ +:10237000CF911F910F91FF90EF90DF90CF900C9431\r\n\ +:10238000121A222319F0213009F45AC28E830E94B6\r\n\ +:10239000151A8E818EC1FF2021F0263008F050C220\r\n\ +:1023A0000EC0253008F04CC284C1FF20C1F02223AA\r\n\ +:1023B00031F0F801958190FFF8C19F7095832896C0\r\n\ +:1023C0000FB6F894DEBF0FBECDBFDF91CF911F9146\r\n\ +:1023D0000F91FF90EF90DF90CF900C941B11222370\r\n\ +:1023E00009F467C1F6C1242F26952695237030E0A5\r\n\ +:1023F0002115310521F021303105C9F021C2FF201E\r\n\ +:1024000021F0862F942F937002C080E090E02896F0\r\n\ +:102410000FB6F894DEBF0FBECDBFDF91CF911F91F5\r\n\ +:102420000F91FF90EF90DF90CF900C94D60EFF208D\r\n\ +:1024300021F0862F942F937002C080E090E02896C0\r\n\ +:102440000FB6F894DEBF0FBECDBFDF91CF911F91C5\r\n\ +:102450000F91FF90EF90DF90CF900C94EC0E862FB1\r\n\ +:10246000FF2019F00E94DC1E02C00E94441F289623\r\n\ +:102470000FB6F894DEBF0FBECDBFDF91CF911F9195\r\n\ +:102480000F91FF90EF90DF90CF900C94C91F842F95\r\n\ +:10249000837009F076C0F110D3C1262F22952695BE\r\n\ +:1024A0002770220F220F862F8F70C82ED12CE12C7F\r\n\ +:1024B000F12C022E04C0CC0CDD1CEE1CFF1C0A9477\r\n\ +:1024C000D2F764FF10C06FE070E080E090E004C0DD\r\n\ +:1024D000660F771F881F991F2A95D2F76095709510\r\n\ +:1024E0008095909503C060E070E0CB01242F269585\r\n\ +:1024F00026952370422F50E042305105D1F04330F1\r\n\ +:10250000510559F16C297D298E299F2941305105AA\r\n\ +:1025100041F128960FB6F894DEBF0FBECDBFDF9114\r\n\ +:10252000CF911F910F91FF90EF90DF90CF900C947F\r\n\ +:1025300065186C297D298E299F2928960FB6F89455\r\n\ +:10254000DEBF0FBECDBFDF91CF911F910F91FF90E6\r\n\ +:10255000EF90DF90CF900C947F180E946518C70110\r\n\ +:10256000B60128960FB6F894DEBF0FBECDBFDF913F\r\n\ +:10257000CF911F910F91FF90EF90DF90CF900C942F\r\n\ +:102580004B18FF2019F0842F817001C08695882395\r\n\ +:1025900009F456C1262F229526952770220F220F67\r\n\ +:1025A000862F8F70C82ED12CE12CF12C022E04C066\r\n\ +:1025B000CC0CDD1CEE1CFF1C0A94D2F764FF10C08B\r\n\ +:1025C0006FE070E080E090E004C0660F771F881F26\r\n\ +:1025D000991F2A95D2F7609570958095909503C0C4\r\n\ +:1025E00060E070E0CB01242F269526952370422FC2\r\n\ +:1025F00050E042305105D1F04330510559F16C297A\r\n\ +:102600007D298E299F294130510541F128960FB629\r\n\ +:10261000F894DEBF0FBECDBFDF91CF911F910F9118\r\n\ +:10262000FF90EF90DF90CF900C9439196C297D29A1\r\n\ +:102630008E299F2928960FB6F894DEBF0FBECDBF16\r\n\ +:10264000DF91CF911F910F91FF90EF90DF90CF908E\r\n\ +:102650000C9453190E943919C701B60128960FB678\r\n\ +:10266000F894DEBF0FBECDBFDF91CF911F910F91C8\r\n\ +:10267000FF90EF90DF90CF900C941F19603F49F1CD\r\n\ +:1026800018F4603E48F48CC0623F09F451C0E0F198\r\n\ +:10269000633F09F461C084C0162F1F70842F8F71AF\r\n\ +:1026A000FF2021F00E94B818812F89CE0E94D918EE\r\n\ +:1026B000812F28960FB6F894DEBF0FBECDBFDF91F5\r\n\ +:1026C000CF911F910F91FF90EF90DF90CF900C94DE\r\n\ +:1026D0002211FF20A9F0253008F0B2C0842F8F719D\r\n\ +:1026E00028960FB6F894DEBF0FBECDBFDF91CF9115\r\n\ +:1026F0001F910F91FF90EF90DF90CF900C94FE18F8\r\n\ +:10270000263008F09DC0EACFFF20A1F0842F8F7102\r\n\ +:1027100028960FB6F894DEBF0FBECDBFDF91CF91E4\r\n\ +:102720001F910F91FF90EF90DF90CF900C94B8180D\r\n\ +:10273000FF2061F3842F8F7128960FB6F894DEBFC7\r\n\ +:102740000FBECDBFDF91CF911F910F91FF90EF9002\r\n\ +:10275000DF90CF900C94D918FF2091F0842F8F71C7\r\n\ +:1027600028960FB6F894DEBF0FBECDBFDF91CF9194\r\n\ +:102770001F910F91FF90EF90DF90CF900C94A318D2\r\n\ +:1027800028960FB6F894DEBF0FBECDBFDF91CF9174\r\n\ +:102790001F910F91FF90EF90DF90CF900C949918BC\r\n\ +:1027A000FF20A1F0222309F4B1CF862F28960FB67F\r\n\ +:1027B000F894DEBF0FBECDBFDF91CF911F910F9177\r\n\ +:1027C000FF90EF90DF90CF900C940410222309F437\r\n\ +:1027D000B1CF862F28960FB6F894DEBF0FBECDBFBF\r\n\ +:1027E000DF91CF911F910F91FF90EF90DF90CF90ED\r\n\ +:1027F0000C94CC104F70C8010E94891B28960FB60C\r\n\ +:10280000F894DEBF0FBECDBFDF91CF911F910F9126\r\n\ +:10281000FF90EF90DF90CF900C94C0174F70C801DD\r\n\ +:1028200028960FB6F894DEBF0FBECDBFDF91CF91D3\r\n\ +:102830001F910F91FF90EF90DF90CF900C948C1B25\r\n\ +:1028400028960FB6F894DEBF0FBECDBFDF91CF91B3\r\n\ +:102850001F910F91FF90EF90DF90CF9008950E940D\r\n\ +:102860000F1A0E94E4190E942B1A0E94F9200E945C\r\n\ +:10287000C91F80E090E00E94D60E80E090E00C94AA\r\n\ +:10288000EC0E0E94FF190C942F140E946E19292F30\r\n\ +:1028900022952F7030E02C3031054CF42A30310570\r\n\ +:1028A0006CF4225031092230310590F407C02C30ED\r\n\ +:1028B000310551F02F30310539F00AC0803E10F05B\r\n\ +:1028C000803F31F481E0089593FB882780F90895D3\r\n\ +:1028D00080E00895CF93DF9300D000D01F92CDB752\r\n\ +:1028E000DEB70F900F900F900F900F90DF91CF9168\r\n\ +:1028F0000895CF93DF9300D000D000D0CDB7DEB7DE\r\n\ +:1029000026960FB6F894DEBF0FBECDBFDF91CF91F4\r\n\ +:102910000895CF93DF93C091600180916101C81742\r\n\ +:10292000A1F0D0E0CE0166E070E00E943027FC010B\r\n\ +:10293000EE59FE4F4081518162817381848195817E\r\n\ +:102940000E9479142196C770E8CFDF91CF91089546\r\n\ +:102950004091920150919301609194017091950181\r\n\ +:1029600080919601909197010C9479141F93CF93C5\r\n\ +:10297000DF938091970182958F7009F060C08091FC\r\n\ +:102980009401882309F45BC0A0916001D09161019A\r\n\ +:1029900040919201C091930120919501309196014F\r\n\ +:1029A00081E04F3F09F080E0182FAD1709F447C0D0\r\n\ +:1029B0002115310521F0CF3F21F4812F03C081E0A3\r\n\ +:1029C00001C080E0B0E080FD37C0CD0166E070E07E\r\n\ +:1029D0000E943027FC01EE59FE4F8181C8132CC0A4\r\n\ +:1029E0008081481329C08281811126C0838194810E\r\n\ +:1029F0008217930708F40197821B930B883C91057B\r\n\ +:102A0000D8F4809197018F70806180939701CD01F8\r\n\ +:102A100066E070E00E943027FC01E959FE4F80819A\r\n\ +:102A20008F708061808382E991E00E942911DF919B\r\n\ +:102A3000CF911F910C9489141196A770B6CFDF9196\r\n\ +:102A4000CF911F910895BF92CF92DF92EF92FF92A4\r\n\ +:102A50000F931F93CF93DF93CDB7DEB761970FB678\r\n\ +:102A6000F894DEBF0FBECDBF8C0185E0F801DE011A\r\n\ +:102A70001D9601900D928A95E1F7D8014C9111961F\r\n\ +:102A8000AC91F801C280E380F48050919201609192\r\n\ +:102A9000930120919501309196012115310531F076\r\n\ +:102AA0006F3F31F481E05F3F19F403C081E001C062\r\n\ +:102AB00080E0F82FF170BF2E80FD6DC1D0909401A1\r\n\ +:102AC000DD2009F4F4C070919701E216F30638F0A6\r\n\ +:102AD000C701821B930B883C910548F099C0209553\r\n\ +:102AE00030952E0D3F1D283C310508F091C0872FF1\r\n\ +:102AF000807F09F054C06A1315C0541313C0DC2C36\r\n\ +:102B0000C11010C07F707061709397010E94A8146B\r\n\ +:102B100082E991E00E94291180919701D8011596D0\r\n\ +:102B20008C936BC1EF2831F0AF3F31F481E04F3F20\r\n\ +:102B300019F403C081E001C080E080FD03C081E0A2\r\n\ +:102B40008C2501C080E0B82FB170FB2E80FF1DC026\r\n\ +:102B500020916001B09161012B1709F429C130E087\r\n\ +:102B6000C90166E070E00E943027FC01EE59FE4F7B\r\n\ +:102B70008181A81306C08081481303C08281C812D6\r\n\ +:102B800004C02F5F3F4F2770E7CFDC2CCC2009F427\r\n\ +:102B900034C18091970181608093970151C06A137D\r\n\ +:102BA00008C0541306C0C11004C0D80115967C9308\r\n\ +:102BB000ABC04D87AE878D859E850E9445148823C6\r\n\ +:102BC00019F1DC2CCC2001F120919701822F829504\r\n\ +:102BD0008F7090E002970CF45FC080919201909109\r\n\ +:102BE000930198878F831986FB86EA862C87CE010E\r\n\ +:102BF000079650C06A1731F14D87AE878D859E8547\r\n\ +:102C00000E94451481112FC0C8010E942911A5C03E\r\n\ +:102C1000872F807F79F77E2DF98AE88A5A2F6C2DCD\r\n\ +:102C200089890E946A1482E991E00E942911E2E9EF\r\n\ +:102C3000F1E086E0DF011D928A95E9F70E94A81471\r\n\ +:102C4000D12CDBC05413D8CFC110D6CFF801758377\r\n\ +:102C5000C8010E942911E2E9F1E086E0DF011D923E\r\n\ +:102C60008A95E9F7CAC0DC2CCC2071F2209197013B\r\n\ +:102C7000822F82958F7090E0029774F0809192017C\r\n\ +:102C8000909193019A8389831B82FD82EC822E832B\r\n\ +:102C9000CE0101960E94291186E0F801A2E9B1E077\r\n\ +:102CA00001900D928A95E1F70E94B61471C0E21668\r\n\ +:102CB000F30628F0F701E21BF30B9F0104C02095F7\r\n\ +:102CC00030952E0D3F1D283C310508F052C0DC2CFC\r\n\ +:102CD000CC2009F499CF6A132CC054132AC08091D8\r\n\ +:102CE000970180FD1DC0982F92959F70C9F0D80163\r\n\ +:102CF00015968C9315979F3039F09F5F9295907F32\r\n\ +:102D00008F70892B15968C93C8010E94291186E03B\r\n\ +:102D1000F801A2E9B1E001900D928A95E1F738C07F\r\n\ +:102D200086E0F801A2E9B1E001900D928A95E1F701\r\n\ +:102D300064C04D87AE878D859E850E94451488238B\r\n\ +:102D400079F086E0F801A2E9B1E001900D928A9550\r\n\ +:102D5000E1F70E94B6140E94A814DD24D3944DC05C\r\n\ +:102D600080919701816080939701C8010E94291189\r\n\ +:102D700044C07E2DF98AE88A5A2F6C2D89890E94D9\r\n\ +:102D80006A14E2E9F1E086E0DF011D928A95E9F735\r\n\ +:102D90000E94A81432C0CC2009F436CF4D87AE87EC\r\n\ +:102DA0008D859E850E944514882309F42DCFC9CFB7\r\n\ +:102DB0004D87AE878D859E850E946E19292F22959D\r\n\ +:102DC0002F7030E0223031052CF49F7041F08111DA\r\n\ +:102DD00006C00CC0243031052CF49F7049F4805E8D\r\n\ +:102DE000883020F0C8010E942911BF2CDB2C05C0BF\r\n\ +:102DF000F8019581907F99F7F9CF8D2D61960FB6E7\r\n\ +:102E0000F894DEBF0FBECDBFDF91CF911F910F9120\r\n\ +:102E1000FF90EF90DF90CF90BF900895CF93DF9316\r\n\ +:102E2000CDB7DEB72C970FB6F894DEBF0FBECDBF7F\r\n\ +:102E30004F83588769877A878B879C87CE0107964F\r\n\ +:102E40000E9423158823C1F02F8138858A859B85B0\r\n\ +:102E5000892B31F03F3F11F080E003C02F3FE1F7B5\r\n\ +:102E600081E081116FC04F81588569857A858B8596\r\n\ +:102E70009C850E94791466C086E0FE013796DE01CB\r\n\ +:102E8000119601900D928A95E1F7FF81E8854A85B8\r\n\ +:102E90005B854115510531F0EF3F31F481E0FF3F93\r\n\ +:102EA00019F403C081E001C080E080FD4BC0809137\r\n\ +:102EB000610190E09C012F5F3F4F277033276091A5\r\n\ +:102EC000600170E02617370709F443C0F983EA83ED\r\n\ +:102ED0005D834C8366E070E00E943027DC01AE59D0\r\n\ +:102EE000BE4F86E0FE01319601900D928A95E1F782\r\n\ +:102EF000209361010E94891425C090E066E070E093\r\n\ +:102F00000E9430278E599E4F0E942315882379F105\r\n\ +:102F10008091600190E066E070E00E943027FC0143\r\n\ +:102F2000EE59FE4F40815181628173818481958188\r\n\ +:102F30000E9479148091600190E001968770992732\r\n\ +:102F40008093600180916001909161018913D5CFD8\r\n\ +:102F50000EC00E9441141092610110926001E2E9DA\r\n\ +:102F6000F1E086E0DF011D928A95E9F7EBCF2C9620\r\n\ +:102F70000FB6F894DEBF0FBECDBFDF91CF9108959D\r\n\ +:102F8000EF92FF920F931F93CF93DF93FC01009773\r\n\ +:102F900009F46FC0F12CEE24E394EF0121968491A3\r\n\ +:102FA000843740F4843008F055C0813081F082309D\r\n\ +:102FB00021F15FC0853709F447C0C0F19CE7980F45\r\n\ +:102FC000903708F056C08F770E94CC1045C08F0113\r\n\ +:102FD0000E5F1F4FFE01849190E2980F983050F4DD\r\n\ +:102FE0008770FE2D01C0FF0F8A95EAF78F2F0E9490\r\n\ +:102FF000021A15C00E94041014C08F010E5F1F4FEB\r\n\ +:10300000FE01849190E2980F983068F48770FE2D4D\r\n\ +:1030100001C0FF0F8A95EAF78F2F0E94081A0E94BD\r\n\ +:103020002B1AE80119C00E94CC10FBCFCF010296E9\r\n\ +:10303000FE01C491CC2361F0EFE9FFE03197F1F795\r\n\ +:1030400000C00000C150F6CFCF010296FE01F490FF\r\n\ +:10305000EC0102C00E9404108F2D882341F0EFE99B\r\n\ +:10306000FFE03197F1F700C000008150F6CFFE017C\r\n\ +:1030700094CFDF91CF911F910F91FF90EF90089522\r\n\ +:10308000089560939C0170939D0180939E0190939D\r\n\ +:103090009F010C942F140F931F9300919C0110918A\r\n\ +:1030A0009D0120919E0130919F01062B172B282B0B\r\n\ +:1030B000392B00939C0110939D0120939E01309326\r\n\ +:1030C0009F011F910F910C942F140F931F93009148\r\n\ +:1030D0009C0110919D0120919E0130919F0106233A\r\n\ +:1030E00017232823392300939C0110939D012093DB\r\n\ +:1030F0009E0130939F011F910F910C942F140F93F9\r\n\ +:103100001F9300919C0110919D0120919E0130918F\r\n\ +:103110009F01062717272827392700939C01109322\r\n\ +:103120009D0120939E0130939F011F910F910C945C\r\n\ +:103130002F14109298011092990110929A011092F6\r\n\ +:103140009B010C942F1441E050E060E070E004C05B\r\n\ +:10315000440F551F661F771F8A95D2F74093980139\r\n\ +:103160005093990160939A0170939B010C942F14D2\r\n\ +:1031700041E050E060E070E004C0440F551F661F5E\r\n\ +:10318000771F8A95D2F78091980190919901A0912B\r\n\ +:103190009A01B0919B01842B952BA62BB72B809382\r\n\ +:1031A000980190939901A0939A01B0939B010C947C\r\n\ +:1031B0002F1441E050E060E070E004C0440F551F60\r\n\ +:1031C000661F771F8A95D2F7409550956095709548\r\n\ +:1031D0008091980190919901A0919A01B0919B01E1\r\n\ +:1031E00084239523A623B723809398019093990174\r\n\ +:1031F000A0939A01B0939B010C942F1441E050E0EE\r\n\ +:1032000060E070E004C0440F551F661F771F8A9569\r\n\ +:10321000D2F78091980190919901A0919A01B09173\r\n\ +:103220009B0184279527A627B72780939801909321\r\n\ +:103230009901A0939A01B0939B010C942F140F93C2\r\n\ +:103240001F93009198011091990120919A0130915A\r\n\ +:103250009B01062B172B282B392B009398011093D9\r\n\ +:10326000990120939A0130939B011F910F910C9427\r\n\ +:103270002F140F931F9300919801109199012091A1\r\n\ +:103280009A0130919B0106231723282339230093A9\r\n\ +:1032900098011093990120939A0130939B011F91FB\r\n\ +:1032A0000F910C942F140F931F930091980110917C\r\n\ +:1032B000990120919A0130919B0106271727282711\r\n\ +:1032C0003927009398011093990120939A01309324\r\n\ +:1032D0009B011F910F910C942F140895CF92DF92B0\r\n\ +:1032E000EF92FF920F931F93CF93DF93EC01C09067\r\n\ +:1032F0009C01D0909D01E0909E01F0909F018091F3\r\n\ +:10330000980190919901A0919A01B0919B01C82ACE\r\n\ +:10331000D92AEA2AFB2A0FE110E0B701A601002E04\r\n\ +:1033200004C076956795579547950A94D2F740FF64\r\n\ +:1033300007C0BE01802F0E94161B8130910539F411\r\n\ +:103340000150110950F7BE0180E00E94161BDF9169\r\n\ +:10335000CF911F910F91FF90EF90DF90CF90089544\r\n\ +:1033600040910C0150910D0120E030E09FEFFA01F7\r\n\ +:10337000E20FF31F6281681799F09F3F19F4611102\r\n\ +:1033800001C0922F2F5F3F4F2630310581F79F3FBD\r\n\ +:1033900039F0FA01E90FF11D97FDFA95828308953E\r\n\ +:1033A000089540910C0150910D0120E030E0FA01A8\r\n\ +:1033B000E20FF31F9281981301C012822F5F3F4FDB\r\n\ +:1033C00026303105A1F7089581E090E0E0910C01ED\r\n\ +:1033D000F0910D01E80FF91F1082019688309105D8\r\n\ +:1033E000A9F708959091AA01982B9093AA010895A6\r\n\ +:1033F00080959091AA0198239093AA010895109224\r\n\ +:10340000AA0108959091A901982B9093A90108957C\r\n\ +:1034100080959091A90198239093A9010895109205\r\n\ +:10342000A90108958093A00108951092A001089524\r\n\ +:1034300040910C0150910D0120E030E080E0FA0154\r\n\ +:10344000E20FF31F918191118F5F2F5F3F4F273064\r\n\ +:103450003105A9F70895E0910C01F0910D018091DB\r\n\ +:10346000AA018083E0910C01F0910D01808190917F\r\n\ +:10347000A901892B80839091A001992361F0E091AB\r\n\ +:103480000C01F0910D018081892B80830E94181A14\r\n\ +:1034900081111092A00180910C0190910D010C946A\r\n\ +:1034A000860ECF93DF938D3B60F4883A90F5853A92\r\n\ +:1034B00038F5843010F5813009F06DC0C1E0D0E0FE\r\n\ +:1034C000B1C0883E98F4803EC0F48F3B09F063C0E1\r\n\ +:1034D0000E9441142FEF80E792E0215080409040FD\r\n\ +:1034E000E1F700C000000E94861C9CC0803F08F4E9\r\n\ +:1034F00052C0C82FD0E0D06595C0C82FD0E092C090\r\n\ +:10350000853A09F44BC0863A09F04BC0C2E8D0E4D2\r\n\ +:1035100089C0883A09F448C0893A09F448C08A3A0F\r\n\ +:1035200009F448C08B3A09F448C08C3A09F448C001\r\n\ +:103530008B3B09F448C08C3B09F448C08D3A09F430\r\n\ +:1035400048C0803B09F448C08E3A09F448C08F3A1D\r\n\ +:1035500009F448C0813B09F448C0823B09F448C0E3\r\n\ +:10356000833B09F448C0843B09F448C0853B09F417\r\n\ +:1035700048C0863B09F448C0873B09F448C0883BF3\r\n\ +:1035800009F448C0893B09F448C08A3B09F048C0A7\r\n\ +:10359000CAE2D6E447C0C0E0D0E044C0C1E8D0E40D\r\n\ +:1035A00041C0C3E8D0E43EC0C2EED4E43BC0C9EEA3\r\n\ +:1035B000D4E438C0CAEED4E435C0C5EBD4E432C09C\r\n\ +:1035C000C6EBD4E42FC0C3EBD4E42CC0C4EBD4E4EA\r\n\ +:1035D00029C0C7EBD4E426C0CCECD4E423C0CDECA6\r\n\ +:1035E000D4E420C0C3E8D5E41DC0CAE8D5E41AC0BD\r\n\ +:1035F000C2E9D5E417C0C4E9D5E414C0C1E2D6E4F9\r\n\ +:1036000011C0C3E2D6E40EC0C4E2D6E40BC0C5E2EA\r\n\ +:10361000D6E408C0C6E2D6E405C0C7E2D6E402C0DC\r\n\ +:10362000C0E0D4E4CE01DF91CF9108950E941E0640\r\n\ +:10363000803EA8F4803C00F5813309F45CC038F486\r\n\ +:10364000893209F452C08A3209F45BC05FC0893301\r\n\ +:10365000B1F08238A1F0853309F441C057C0833EF0\r\n\ +:1036600041F128F4803E99F0823EB9F04FC0863E89\r\n\ +:1036700031F1873E71F14AC00E943206089590915F\r\n\ +:10368000BC0190FD02C091FF41C080EE3FC080911F\r\n\ +:10369000BC0180FFFACF89E339C08091BC0182FF71\r\n\ +:1036A0000CC08091BC0184FF02C080E02FC083EE7B\r\n\ +:1036B0002DC08091BC0182FFF4CF82EE27C08091A3\r\n\ +:1036C000BC0183FF0AC08091BC0184FDEECF87EE70\r\n\ +:1036D0001DC08091BC0183FFF6CF86EE17C080919C\r\n\ +:1036E000BC0185FF06C089E211C08091BC0185FF45\r\n\ +:1036F000FACF85E30BC08091BC0186FF06C08AE249\r\n\ +:1037000005C08091BC0186FFFACF81E30E94511A67\r\n\ +:10371000089580E090E00895089590933301809398\r\n\ +:10372000320108958295282F2C7C26952695982F76\r\n\ +:103730009373990F990F922B892F8A7A8695957595\r\n\ +:10374000990F892B08951F93CF93DF931F92CDB7C5\r\n\ +:10375000DEB799830E94921B182F9981892F0E94AE\r\n\ +:10376000921B212F30E0322F2227A901482BCA01BA\r\n\ +:103770000F90DF91CF911F9108958091C101843006\r\n\ +:1037800009F11092AC0120E488E190E00FB6F894C2\r\n\ +:10379000A895809360000FBE2093600083B7817F5F\r\n\ +:1037A000846083BF83B7816083BF7894889583B733\r\n\ +:1037B0008E7F83BF88E10FB6F894809360001092EB\r\n\ +:1037C00060000FBE089508950895CF930E94E31BF3\r\n\ +:1037D0000E9468060E94E41BC0E08C2F0E94EF0646\r\n\ +:1037E000811105C0CF5FC830C1F780E001C081E022\r\n\ +:1037F000CF9108951F920F920FB60F9211248F93BD\r\n\ +:103800009F93AF93BF938091AC01811113C08091BE\r\n\ +:10381000AD019091AE01A091AF01B091B001419680\r\n\ +:10382000A11DB11D8093AD019093AE01A093AF0196\r\n\ +:10383000B093B001BF91AF919F918F910F900FBE48\r\n\ +:103840000F901F90189582E084BD93E095BD9AEF8C\r\n\ +:1038500097BD80936E0008952FB7F8948091AD01C5\r\n\ +:103860009091AE01A091AF01B091B0012FBF08952A\r\n\ +:10387000CF92DF92EF92FF920F931F932FB7F8949E\r\n\ +:103880004091AD015091AE016091AF017091B001D6\r\n\ +:103890002FBF6A017B01EE24FF248C0120E030E081\r\n\ +:1038A000C016D106E206F30610F441505109481B38\r\n\ +:1038B000590BCA011F910F91FF90EF90DF90CF90AD\r\n\ +:1038C00008951F920F920FB60F9211248F939F931A\r\n\ +:1038D000AF93BF938091AD019091AE01A091AF01E4\r\n\ +:1038E000B091B0010196A11DB11D8093AD019093DF\r\n\ +:1038F000AE01A093AF01B093B001BF91AF919F9182\r\n\ +:103900008F910F900FBE0F901F9018950E94DA0BA9\r\n\ +:10391000F8942FEF87EA91E6215080409040E1F73C\r\n\ +:1039200000C0000087E090EBDC018093CA01909317\r\n\ +:10393000CB01A093CC01B093CD012CE088E190E0C5\r\n\ +:103940000FB6F894A895809360000FBE2093600096\r\n\ +:10395000FFCFEF92FF920F931F93CF93DF93E82E49\r\n\ +:10396000F12C8F2D0E94EF06C0E0D0E0082F10E070\r\n\ +:1039700098010C2E02C0359527950A94E2F720FD98\r\n\ +:1039800005C02196C830D10599F709C06C2F7F2D4D\r\n\ +:1039900080E00E941E06E812F4CF81E005C0F39497\r\n\ +:1039A00088E0F812DECF80E0DF91CF911F910F9178\r\n\ +:1039B000FF90EF900895CF93C82F8CE20E94A91C2E\r\n\ +:1039C000882321F08C2FCF910C94A91C80E0CF91FB\r\n\ +:1039D0000895CF930E942F1E811102C00E94151ED0\r\n\ +:1039E00081EE92E00E947C05C5E6C15049F00E943C\r\n\ +:1039F00068068FE39CE90197F1F700C00000F5CF5E\r\n\ +:103A00008AED92E00E947C0589E20E94DB1C811114\r\n\ +:103A10000AC18AE20E94DB1C81110E94151E85E00A\r\n\ +:103A20000E94DB1C81110E94861C0E943A1E80931A\r\n\ +:103A3000AB0187E00E94DB1C882399F18BE10E9497\r\n\ +:103A4000DB1C882351F09091AB0191FB882780F912\r\n\ +:103A500021E0822780FB91F922C08EE00E94DB1CCE\r\n\ +:103A6000882351F09091AB0192FB882780F921E0E7\r\n\ +:103A7000822780FB92F913C080E10E94DB1C9091A9\r\n\ +:103A8000AB01882341F093FB882780F921E082274E\r\n\ +:103A900080FB93F904C0892F809580FB90F9909367\r\n\ +:103AA000AB018091AB010E943E1E0E944C1E809390\r\n\ +:103AB000BC0180EE0E94DB1C882341F08091BC0198\r\n\ +:103AC000982F909590FB80F98093BC0189E30E9428\r\n\ +:103AD000DB1C882359F09091BC0191FB882780F969\r\n\ +:103AE00021E0822780FB91F99093BC0182EE0E9435\r\n\ +:103AF000DB1C882359F09091BC0192FB882780F948\r\n\ +:103B000021E0822780FB92F99093BC0186EE0E940F\r\n\ +:103B1000DB1C882359F09091BC0193FB882780F926\r\n\ +:103B200021E0822780FB93F99093BC0183EE0E94F1\r\n\ +:103B3000DB1C882359F09091BC0194FB882780F905\r\n\ +:103B400021E0822780FB94F99093BC0185E30E94D9\r\n\ +:103B5000DB1C882359F09091BC0195FB882780F9E4\r\n\ +:103B600021E0822780FB95F99093BC0181E30E94BC\r\n\ +:103B7000DB1C882359F09091BC0196FB882780F9C3\r\n\ +:103B800021E0822780FB96F99093BC0181E10E949D\r\n\ +:103B9000DB1C882359F09091BC0197FB882780F9A2\r\n\ +:103BA00021E0822780FB97F99093BC018091BC01B2\r\n\ +:103BB0000E94501E87E20E94DB1CC82F8EE10E94EB\r\n\ +:103BC000DB1C8111C2608FE10E94DB1C8111C4608B\r\n\ +:103BD00080E20E94DB1C8111C86081E20E94DB1C34\r\n\ +:103BE0008111C06182E20E94DB1C8111C06283E20C\r\n\ +:103BF0000E94DB1C8111C06484E20E94DB1C8823CC\r\n\ +:103C000011F0C06802C0CC2329F08C2F0E94471EFF\r\n\ +:103C10006C2F03C00E94431E682F70E080E090E08C\r\n\ +:103C2000CF910C944118CF9108956DEE7EEF80E016\r\n\ +:103C300090E00E94972760E082E090E00E94892750\r\n\ +:103C400060E083E090E00E94892760E084E090E0FB\r\n\ +:103C50000E94892760E085E090E00C94892780E04D\r\n\ +:103C600090E00E94832721E08D3E9E4F09F020E0E6\r\n\ +:103C7000822F089582E090E00C947B27682F82E0E9\r\n\ +:103C800090E00C94892783E090E00C947B27682FC8\r\n\ +:103C900083E090E00C94892784E090E00C947B27EB\r\n\ +:103CA000682F84E090E00C9489278091B30180FF15\r\n\ +:103CB0000CC08091110190E065E070E00E94302717\r\n\ +:103CC00095958795959587952EC081FF0AC080911F\r\n\ +:103CD000110190E065E070E00E943027959587958E\r\n\ +:103CE00022C082FF08C08091110190E065E070E081\r\n\ +:103CF0000E94302718C02091B4012223D1F03091C6\r\n\ +:103D00001001231780F78091110190E065E070E0C9\r\n\ +:103D10000E943027622F70E00E943027632F70E0EE\r\n\ +:103D20000E944D27CB018038910530F4009731F087\r\n\ +:103D3000089585E090E008958FE7089581E0089563\r\n\ +:103D40008091B30180FF08C060910F0170E075950C\r\n\ +:103D500067957595679524C081FF06C060910F0136\r\n\ +:103D600070E0759567951CC082FF04C060910F01DB\r\n\ +:103D700070E013C09091B4019923D9F020910E0105\r\n\ +:103D80009217A0F780910F01692F70E090E00E94D8\r\n\ +:103D90003027622F70E00E944D276038710528F4AB\r\n\ +:103DA0006115710521F0862F08958FE7089581E050\r\n\ +:103DB000089561E070E0F4CF803F21F40E94551E29\r\n\ +:103DC000819504C0813F29F40E94551E8093B7015C\r\n\ +:103DD0000895823F21F40E94551E819504C0833FBF\r\n\ +:103DE00029F40E94551E8093B6010895893F19F465\r\n\ +:103DF0000E94A01E05C08A3F31F40E94A01E81953A\r\n\ +:103E00008093B80108958B3F21F40E94A01E8195F4\r\n\ +:103E100004C08C3F29F40E94A01E8093B90108952C\r\n\ +:103E2000843F21F48091B501816017C0853F21F462\r\n\ +:103E30008091B501826011C0863F21F48091B50167\r\n\ +:103E400084600BC0873F21F48091B501886005C074\r\n\ +:103E5000883F31F48091B50180618093B501089568\r\n\ +:103E60008D3F21F48091B30181600BC08E3F21F41E\r\n\ +:103E70008091B301826005C08F3F29F48091B30126\r\n\ +:103E800084608093B3010895803F39F48091B70135\r\n\ +:103E900087FF6CC01092B70169C0813F29F48091FF\r\n\ +:103EA000B7011816BCF362C09091B601823F29F4A5\r\n\ +:103EB00097FF5CC01092B60159C0833F19F41916E0\r\n\ +:103EC000CCF354C0893F41F48091B80118160CF02E\r\n\ +:103ED0004DC01092B8014AC08A3F29F48091B801C0\r\n\ +:103EE00087FF44C0F6CF8B3F39F48091B90187FF3B\r\n\ +:103EF0003DC01092B9013AC08C3F29F48091B901BC\r\n\ +:103F00001816BCF333C0843F21F48091B5018E7F35\r\n\ +:103F100017C0853F21F48091B5018D7F11C0863F88\r\n\ +:103F200021F48091B5018B7F0BC0873F21F48091F4\r\n\ +:103F3000B501877F05C0883F31F48091B5018F7E40\r\n\ +:103F40008093B50113C08D3F21F48091B3018E7F22\r\n\ +:103F50000BC08E3F21F48091B3018D7F05C08F3F50\r\n\ +:103F600029F48091B3018B7F8093B3018091B601D6\r\n\ +:103F700081110EC08091B70181110AC08091B801F2\r\n\ +:103F8000811106C08091B901811102C01092B40163\r\n\ +:103F900008958091AB0183FF7EC08DE193E00E9484\r\n\ +:103FA0007C058091B5011F928F9388E193E09F93E8\r\n\ +:103FB0008F930E94150686E193E00E947C05209174\r\n\ +:103FC000B601822F992787FD90959F932F9383E1C8\r\n\ +:103FD00093E09F938F930E94150681E193E00E94E6\r\n\ +:103FE0007C052091B701822F992787FD90959F939B\r\n\ +:103FF0002F938EE093E09F938F930E9415068CE0A1\r\n\ +:1040000093E00E947C052091B801822F992787FDBB\r\n\ +:1040100090959F932F9389E093E09F938F930E94B5\r\n\ +:10402000150687E093E00E947C052091B901822F5C\r\n\ +:10403000992787FD90959F932F9384E093E09F931A\r\n\ +:104040008F930E94150681E093E00E947C05809189\r\n\ +:10405000B4011F928F938EEF92E09F938F930E94F3\r\n\ +:1040600015068CEF92E00E947C058091B3011F92AF\r\n\ +:104070008F9389EF92E09F938F930E94150686EFAE\r\n\ +:1040800092E00E947C058DB79EB74C960FB6F894CF\r\n\ +:104090009EBF0FBE8DBF85EB91E00E94CB0E0E94AC\r\n\ +:1040A0002C1C9093B2018093B10108951F93CF937C\r\n\ +:1040B000DF938091B1019091B2010E94381C9C0164\r\n\ +:1040C0004091B401442321F08091120190E007C097\r\n\ +:1040D0008091130190E06AE070E00E943027281779\r\n\ +:1040E000390708F482C08091B6011091B701D091D0\r\n\ +:1040F000B801C091B901811107C0111105C0D111DA\r\n\ +:1041000003C0CC2309F471C04F3F19F04F5F4093B7\r\n\ +:10411000B401181624F40E94551E8093B6018091B4\r\n\ +:10412000B60187FF05C00E94551E81958093B60198\r\n\ +:10413000111624F40E94551E8093B7018091B70197\r\n\ +:1041400087FF05C00E94551E81958093B70160913D\r\n\ +:10415000B601662339F11091B701112319F17727C0\r\n\ +:1041600067FD7095872F972F0E94392623E333E34D\r\n\ +:1041700043E35FE30E949D260E9406266093B601FA\r\n\ +:10418000612F772767FD7095872F972F0E9439261B\r\n\ +:1041900023E333E343E35FE30E949D260E94062668\r\n\ +:1041A0006093B7011D1624F40E94A01E8093B801ED\r\n\ +:1041B0008091B80187FF05C00E94A01E8195809361\r\n\ +:1041C000B8011C1624F40E94A01E8093B9018091AE\r\n\ +:1041D000B90187FF05C00E94A01E81958093B90197\r\n\ +:1041E000DF91CF911F910C94C91FDF91CF911F9147\r\n\ +:1041F0000895E5EBF1E085E0DF011D928A95E9F78E\r\n\ +:104200001092B4011092B301089580E495E00E94E9\r\n\ +:104210007C051F9281E08F931F9285E08F9382EF40\r\n\ +:1042200094E09F938F930E9415060F900F900F902C\r\n\ +:104230000F900F900F9008958330E9F128F48130AA\r\n\ +:1042400061F0823009F10895853009F462C008F404\r\n\ +:1042500049C0863009F474C0089520911301862F57\r\n\ +:1042600090E0820F911D8F3F910520F4620F6093C3\r\n\ +:10427000130103C08FEF80931301809113011F92EC\r\n\ +:104280008F938BE294E072C020911201862F90E010\r\n\ +:10429000820F911D8F3F910520F4620F60931201F0\r\n\ +:1042A00003C08FEF80931201809112011F928F93B0\r\n\ +:1042B00089E194E05BC020911101862F90E0820F8C\r\n\ +:1042C000911D8F3F910520F4620F6093110103C08F\r\n\ +:1042D0008FEF80931101809111011F928F9386E0DF\r\n\ +:1042E00094E044C020911001862F90E0820F911D30\r\n\ +:1042F0008F3F910520F4620F6093100103C08FEF90\r\n\ +:1043000080931001809110011F928F9381EF93E0B1\r\n\ +:104310002DC020910F01862F90E0820F911D8F3FBD\r\n\ +:10432000910520F4620F60930F0103C08FEF80931B\r\n\ +:104330000F0180910F011F928F9388ED93E016C0BB\r\n\ +:1043400020910E01862F90E0820F911D8F3F9105E5\r\n\ +:1043500020F4620F60930E0103C08FEF80930E0173\r\n\ +:1043600080910E011F928F938DEB93E09F938F931B\r\n\ +:104370000E9415060F900F900F900F9008958330B4\r\n\ +:1043800081F128F4813059F08230D1F008958530E0\r\n\ +:1043900009F449C0B8F1863009F456C008958091F7\r\n\ +:1043A0001301681720F4861B8093130102C010923A\r\n\ +:1043B0001301809113011F928F938EEA93E054C0F2\r\n\ +:1043C00080911201681720F4861B8093120102C0AD\r\n\ +:1043D00010921201809112011F928F938CE993E049\r\n\ +:1043E00043C080911101681720F4861B809311014E\r\n\ +:1043F00002C010921101809111011F928F9389E8E0\r\n\ +:1044000093E032C080911001681720F4861B8093DE\r\n\ +:10441000100102C010921001809110011F928F9321\r\n\ +:1044200084E793E021C080910F01681720F4861B78\r\n\ +:1044300080930F0102C010920F0180910F011F9213\r\n\ +:104440008F938BE593E010C080910E01681720F4E4\r\n\ +:10445000861B80930E0102C010920E0180910E0106\r\n\ +:104460001F928F9380E493E09F938F930E94150691\r\n\ +:104470000F900F900F900F900895CF93C82F1F9219\r\n\ +:104480008F9325E436E03F932F930E94150661E059\r\n\ +:1044900070E080E090E004C0660F771F881F991FCE\r\n\ +:1044A000CA95D2F70E9441180F900F900F900F906D\r\n\ +:1044B000CF910C944114CF938732B0F58E3108F030\r\n\ +:1044C00043C28E3009F4BDC100F5873009F48DC1B7\r\n\ +:1044D000A8F4863009F03CC28091AB01817F8E7FC9\r\n\ +:1044E0008093AB018AE496E00E947C0584E49AE024\r\n\ +:1044F0000E947C0581E08093BB0175C1883009F47E\r\n\ +:104500003FC08B3009F46BC123C2863109F4DDC191\r\n\ +:1045100020F4803109F4A8C11BC2893109F4BEC15D\r\n\ +:104520008B3109F47BC114C2883309F458C150F4AB\r\n\ +:10453000893209F407C2853309F404C2873209F0CD\r\n\ +:1045400007C200C2833409F4FDC128F48A3308F499\r\n\ +:10455000FFC18953FAC1883409F0FAC10E9441149D\r\n\ +:1045600083E39AE00E947C059FEF23ED80E3915066\r\n\ +:1045700020408040E1F700C000000E94861C33C14B\r\n\ +:1045800088E49AE00E947C0581E498E00E947C0522\r\n\ +:104590000E94431E1F928F938EE398E09F938F9308\r\n\ +:1045A0000E9415068CE398E00E947C050E943A1E4A\r\n\ +:1045B000C82F89E298E00E947C051F92CF9324E2E5\r\n\ +:1045C00038E03F932F930E94150682E298E00E9404\r\n\ +:1045D0007C0588E198E00E947C058C2F81701F92F9\r\n\ +:1045E0008F9325E138E03F932F930E94150683E1D6\r\n\ +:1045F00098E00E947C0589E098E00E947C05C1FB60\r\n\ +:10460000882780F91F928F9326E038E03F932F93FD\r\n\ +:104610000E94150684E098E00E947C0588EF97E0F0\r\n\ +:104620000E947C05C2FB882780F91F928F9325EF9B\r\n\ +:1046300037E03F932F930E94150683EF97E00E9487\r\n\ +:104640007C058AEE97E00E947C05C3FBCC27C0F96D\r\n\ +:104650001F92CF9387EE97E09F938F930E9415064A\r\n\ +:1046600085EE97E00E947C050E944C1EC82F81EDCC\r\n\ +:1046700097E00E947C051F92CF932CEC37E03F938C\r\n\ +:104680002F930E9415068AEC97E00E947C0581EB2F\r\n\ +:1046900097E00E947C058C2F81701F928F932EEAE9\r\n\ +:1046A00037E03F932F930E9415068DB79EB78096F3\r\n\ +:1046B0000FB6F8949EBF0FBE8DBF8CEA97E00E94A4\r\n\ +:1046C0007C0585E997E00E947C05C1FB882780F97D\r\n\ +:1046D0001F928F9322E937E03F932F930E94150694\r\n\ +:1046E00080E997E00E947C058EE797E00E947C05B8\r\n\ +:1046F000C2FB882780F91F928F932BE737E03F9307\r\n\ +:104700002F930E94150689E797E00E947C0587E6B3\r\n\ +:1047100097E00E947C05C3FB882780F91F928F9346\r\n\ +:1047200024E637E03F932F930E94150682E697E038\r\n\ +:104730000E947C0588E597E00E947C05C4FB8827E1\r\n\ +:1047400080F91F928F9325E537E03F932F930E94C6\r\n\ +:10475000150683E597E00E947C0581E497E00E94BE\r\n\ +:104760007C05C5FB882780F91F928F932EE337E0E5\r\n\ +:104770003F932F930E9415068CE397E00E947C05DF\r\n\ +:1047800080E297E00E947C05C6FB882780F91F9293\r\n\ +:104790008F932DE137E03F932F930E9415068BE115\r\n\ +:1047A00097E00E947C0583E197E00E947C05C7FBAF\r\n\ +:1047B000CC27C0F91F92CF9380E197E09F938F930E\r\n\ +:1047C0000E9415068EE097E00E947C058DB79EB78B\r\n\ +:1047D0004C960FB6F8949EBF0FBE8DBF04C081E704\r\n\ +:1047E00096E00E947C05C1E0B8C08091AB01C82F63\r\n\ +:1047F000C17080FF09C086E29AE00E947C0580912A\r\n\ +:10480000AB01817F8E7F44C08AE19AE00E947C05E3\r\n\ +:104810008091AB0181608093AB01E5CF8091AB01CA\r\n\ +:1048200081FBCC27C0F991E0C927C0FB81F98093B7\r\n\ +:10483000AB01CC2319F08DE09AE025C08FEF99E011\r\n\ +:10484000D0CF8091AB0182FBCC27C0F991E0C92782\r\n\ +:10485000C0FB82F98093AB01CC2319F080EF99E083\r\n\ +:1048600012C080EE99E0BDCF8091AB0183FBCC27D5\r\n\ +:10487000C0F991E0C927C0FB83F98093AB01CC2339\r\n\ +:1048800051F084ED99E00E947C058091AB0181603C\r\n\ +:104890008093AB0162C087EC99E0A3CF88EB99E0ED\r\n\ +:1048A0000E947C0580E999E00E947C058EE599E0F4\r\n\ +:1048B0000E947C0587E399E00E947C0588EE98E0E1\r\n\ +:1048C0000E947C0589EB98E08CCF8BEA98E00E94EF\r\n\ +:1048D0007C050E947A0E1F928F9381E998E09F9346\r\n\ +:1048E0008F930E94150680910B011F928F938AE788\r\n\ +:1048F00098E09F938F930E941506809150011F921C\r\n\ +:104900008F9387E698E09F938F930E94150680917E\r\n\ +:10491000AD019091AE01A091AF01B091B001BF93F4\r\n\ +:10492000AF939F938F9383E598E09F938F930E941B\r\n\ +:1049300015068DB79EB742960FB6F8949EBF0FBE70\r\n\ +:104940008DBF51CF80E001C08D510E943D224BCFE1\r\n\ +:1049500081E598E00E947C05C0E08C2FCF910895FE\r\n\ +:1049600080E0089580E00895CF93C82F8091BB0127\r\n\ +:10497000813071F020F0823009F448C03FC1A0912D\r\n\ +:104980000C01B0910D018C91823209F039C107C040\r\n\ +:10499000A0910C01B0910D018C91823249F48C2FC1\r\n\ +:1049A0000E94B02481112FC08C2F0E945B222CC04A\r\n\ +:1049B0008C2F0E94B224811126C0C431E1F070F422\r\n\ +:1049C000CB3081F0C031D1F40E9405218DE396E017\r\n\ +:1049D0000E947C0582E08093BB0115C0C93259F06A\r\n\ +:1049E000C83361F48AE496E00E947C0581E496E095\r\n\ +:1049F0000E947C0508C01092BB0104C18BE396E0C5\r\n\ +:104A00000E947C05FFC081E08170FEC0C43228F5A1\r\n\ +:104A1000CE3108F0C1C0CB30A1F1D0F4C73009F0DD\r\n\ +:104A2000D3C08EE18093130182E3809312018AE068\r\n\ +:104A30008093110184E18093100188E080930F013D\r\n\ +:104A400088E280930E0181EE94E00E947C05BFC055\r\n\ +:104A5000C33149F1C431C1F0B7C0CB3409F4A9C0A6\r\n\ +:104A600028F4C93289F0C83361F0AEC0C13509F409\r\n\ +:104A70009EC0C23509F499C0CE3409F0A5C06AE0E1\r\n\ +:104A80009EC00E940521A3C08091BA01882319F01D\r\n\ +:104A90001092BA019CC08EEE94E00E947C0581E0E9\r\n\ +:104AA0008093BB01B1C088EC94E00E947C0586EB4A\r\n\ +:104AB00094E00E947C05809113011F928F9383EBF9\r\n\ +:104AC00094E09F938F930E94150681EB94E00E94DF\r\n\ +:104AD0007C058FE994E00E947C05809112011F9271\r\n\ +:104AE0008F938CE994E09F938F930E9415068AE937\r\n\ +:104AF00094E00E947C058BE894E00E947C05809104\r\n\ +:104B000011011F928F9388E894E09F938F930E94E6\r\n\ +:104B1000150686E894E00E947C0585E794E00E94F3\r\n\ +:104B20007C05809110011F928F9382E794E09F9300\r\n\ +:104B30008F930E94150680E794E00E947C058BE528\r\n\ +:104B400094E00E947C0580910F011F928F9388E56D\r\n\ +:104B500094E09F938F930E94150686E594E00E944F\r\n\ +:104B60007C058FE394E00E947C0580910E011F92EA\r\n\ +:104B70008F938CE394E09F938F930E9415068AE3B2\r\n\ +:104B800094E00E947C058DB79EB748960FB6F894C6\r\n\ +:104B90009EBF0FBE8DBF1BC0CE51EC2FF0E0E85D75\r\n\ +:104BA000FE4F80818093BA0112C061E003C061E0D2\r\n\ +:104BB00006C06AE08091BA010E941C2108C0809161\r\n\ +:104BC000BA010E94BF2103C08FED94E013C0809111\r\n\ +:104BD000BA01882369F01F928F9389ED94E09F9327\r\n\ +:104BE0008F930E9415060F900F900F900F9004C0A6\r\n\ +:104BF00086ED94E00E947C0581E006C01092BB0126\r\n\ +:104C000080E002C080E000CFCF91089504D0689486\r\n\ +:104C1000B1118DC0089570D088F09F5790F0B92FD2\r\n\ +:104C20009927B751A0F0D1F0660F771F881F991F01\r\n\ +:104C30001AF0BA95C9F712C0B13081F077D0B1E05F\r\n\ +:104C4000089574C0672F782F8827B85F39F0B93F6F\r\n\ +:104C5000CCF3869577956795B395D9F73EF4909503\r\n\ +:104C60008095709561957F4F8F4F9F4F0895E89481\r\n\ +:104C700009C097FB3EF490958095709561957F4FA4\r\n\ +:104C80008F4F9F4F9923A9F0F92F96E9BB27939552\r\n\ +:104C9000F695879577956795B795F111F8CFFAF462\r\n\ +:104CA000BB0F11F460FF1BC06F5F7F4F8F4F9F4F93\r\n\ +:104CB00016C0882311F096E911C0772321F09EE8F1\r\n\ +:104CC000872F762F05C0662371F096E8862F70E057\r\n\ +:104CD00060E02AF09A95660F771F881FDAF7880F31\r\n\ +:104CE0009695879597F9089557FD9058440F551F4D\r\n\ +:104CF00059F05F3F71F04795880F97FB991F61F05E\r\n\ +:104D00009F3F79F087950895121613061406551FD4\r\n\ +:104D1000F2CF4695F1DF08C0161617061806991F40\r\n\ +:104D2000F1CF86957105610508940895E894BB2735\r\n\ +:104D300066277727CB0197F908950AD080C071D0F4\r\n\ +:104D400028F076D018F0952309F062C067C0EFCF45\r\n\ +:104D5000CBDFA8F39923D9F35523C9F3950F50E07E\r\n\ +:104D6000551FAA27EE27FF27BB2700240894679525\r\n\ +:104D700020F4E20FF31FB41F0A1E220F331F441F3B\r\n\ +:104D8000AA1F6695A9F7779530F4F30FB41F0A1E92\r\n\ +:104D9000121E08F46395330F441FAA1F221F769535\r\n\ +:104DA00099F7879520F4B40F0A1E121E631F440F53\r\n\ +:104DB000AA1F221F331F8695A9F7862F712D602DFC\r\n\ +:104DC00011249F5750408AF0E1F088234AF0EE0FFB\r\n\ +:104DD000FF1FBB1F661F771F881F91505040A9F708\r\n\ +:104DE0009E3F510570F014C0A2CF5F3FECF3983E98\r\n\ +:104DF000DCF3869577956795B795F795E7959F5F6F\r\n\ +:104E0000C1F7FE2B880F911D9695879597F9089508\r\n\ +:104E100097F99F6780E870E060E008959FEF80EC6D\r\n\ +:104E2000089500240A941616170618060906089510\r\n\ +:104E300000240A9412161306140605060895092E76\r\n\ +:104E40000394000C11F4882352F0BB0F40F4BF2BE5\r\n\ +:104E500011F460FF04C06F5F7F4F8F4F9F4F089525\r\n\ +:104E60000024552704C0080E591F880F991F00976A\r\n\ +:104E700029F076956795B8F37105B9F7802D952FD0\r\n\ +:104E80000895991B79E004C0991F961708F0961BA6\r\n\ +:104E9000881F7A95C9F78095089597FB072E16F419\r\n\ +:104EA000009407D077FD09D00E94672707FC05D042\r\n\ +:104EB0003EF4909581959F4F0895709561957F4F31\r\n\ +:104EC0000895EE0FFF1F0590F491E02D0994AA1BA1\r\n\ +:104ED000BB1B51E107C0AA1FBB1FA617B70710F0E5\r\n\ +:104EE000A61BB70B881F991F5A95A9F78095909517\r\n\ +:104EF000BC01CD010895F999FECF92BD81BDF89A0C\r\n\ +:104F0000992780B50895A8E1B0E042E050E00C9404\r\n\ +:104F10009E27262FF999FECF1FBA92BD81BD20BDD5\r\n\ +:104F20000FB6F894FA9AF99A0FBE019608950E9466\r\n\ +:104F30008927272F0C948A27DC01CB01FC01F999E2\r\n\ +:104F4000FECF06C0F2BDE1BDF89A319600B40D92D5\r\n\ +:0C4F500041505040B8F70895F894FFCF8E\r\n\ +:104F5C0005440735081208DE07AB0701A101280834\r\n\ +:104F6C00140A321E3F4D362067021A02E401C401B6\r\n\ +:104F7C005001690182019B01010203040506070827\r\n\ +:024F8C0009001A\r\n\ +"; +} diff --git a/editor/alps64/index.html b/editor/alps64/index.html new file mode 100644 index 00000000..2db78b40 --- /dev/null +++ b/editor/alps64/index.html @@ -0,0 +1,718 @@ + + + TMK Keymap Editor + + + + + + + + + + + +

TMK Keymap Editor

+ +

Instruction

+How to edit keymap +
    +
  1. Select layer
  2. +
  3. Select key to edit
  4. +
  5. Select keycode to assign to the key
  6. +
  7. Download firmware
  8. +
+See this for detailed description of keymap. + +

Keyboard

+
+
+
+ + + + + + + + +
+
+ + + +
+
+
Esc
+
1
+
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+
0
+
-
+
=
+
Iso1
+
BSpc
+
+ +
+
Tab
+
Q
+
W
+
E
+
R
+
T
+
Y
+
U
+
I
+
O
+
P
+
[
+
]
+
\
+
+ +
+
Ctrl
+
A
+
S
+
D
+
F
+
G
+
H
+
J
+
K
+
L
+
;
+
'
+
Enter
+
+ +
+
Shift
+
Z
+
Iso2
+
X
+
C
+
V
+
B
+
N
+
M
+
,
+
.
+
/
+
Shift
+
Fn
+
+ +
+
LCtl
+
LGui
+
LAlt
+
Space
+
App
+
RAlt
+
RGui
+
RCtl
+
+
+ +
+
+ + +

Keycodes

+
+ + + +
+ + +
+
+ + + + + + + + + + + + + + +
+ + + + + + + + + + + + + +
+
+ + + + + + + + + + +
+
+ + + + + + + + + + + +
+
+ + + + + + + + + +
+
+ + + + + + + + +
+
+ + +
+ + +
+
+ + + + + + + + + + + + +
+ + + + + + + + + + + + +
+
+ + + +
+
+ + + + + + + + + + +
+
+ Keypad:
+ + + + + + + + + + +
+ + + + + + + + + + +
+
+ Japanese:
+ + + + + +
+
+ Korean:
+ + +
+
+ + Mechanical Locking key support:
+ + + + + + + + + +
+ + +
+ + +
+
+ + System:
+ + + +
+ + Volume:
+ + + +
+ + Media:
+ + + + + + +
+ + Application:
+ + + +
+ Web:
+ + + + + + + +
+
+ + + + Mouse key:
+ + + + +
+
+ + + + + +
+
+ + + + +
+
+ + + +
+
+ + +
+ + +
+
+ + + + Layer Switch Momentary:
+ + + + + + + +
+ Layer Switch Toggle:
+ + + +
+ Layer Switch with Tap Toggle:
+ + + +
+ Layer switch with Tap key:
+ + + + + + + +
+
+ Modifier with special function:
+ + + + +
+ + + +
+ + + +
+ + +
+

+ See this for detail of Layer Switching.
+ See this for Tap key(Dual-role Modifier).
+ See this for OneShot Modifier.

+
+
+
+ +

Firmware Hex File Download:

+ + + +

Share URL:

+ +
+ + + +

Keymap Output(for debug):

+ +
+ + + + + + + + diff --git a/editor/alps64/keyboard.css b/editor/alps64/keyboard.css new file mode 100644 index 00000000..2d0baa93 --- /dev/null +++ b/editor/alps64/keyboard.css @@ -0,0 +1,115 @@ +html * { + font-family:helvetica, arial, sans-serif; +} + +.key { + box-shadow:inset -3px -3px 5px 5px #ebebeb; + background-color:#ffffff; + border-radius:6px; + border:2px solid #dcdcdc; + display:inline-block; + float: left; + color:#777777; + font-family:helvetica, arial, sans-serif; + font-size:16px; + font-weight:bold; + text-decoration:none; + padding:4px 16px 16px 4px; + width: 25px; + height: 25px; + overflow: hidden; + margin: 0px 1px 1px 0px; + white-space: normal; +} +.key:hover { + background-color:#ebebeb; +} +.key:active { +} +.key:focus { +} +.key-editing { + background-color:#b4b4b4; + border:2px solid #7f7f7f; + position:relative; + top:2px; +} +/* This imageless css button was generated by CSSButtonGenerator.com */ + +/* Key unit and pixel + * key unit: 1.00 1.25 1.50 1.75 2.00 + * px: 50 62.5 75 87.5 100 + * + * Key CSS Metrics + * +---------------------------+ + * | margin | + * | +-----------------------+ | + * | |border 2 | | + * | | +-------------------+ | | + * | | |padding 4 | | | + * | | | +--------------+ | | | + * |0|2|4|width x height|16|2|1| + * | | | +--------------+ | | | + * | | | 16 | | | + * | | +-------------------+ | | + * | | 2 | | + * | +-----------------------+ | + * | 1 | + * +---------------------------+ + * width/height:25 + (margin:0 + border:2 + padding:4 + padding:16 + border:2 + margin:1) = 50px + */ +.btn100 { width:25px; } /* 50 - 25 */ +.btn125 { width:37.5px; } /* 62.5 - 25 */ +.btn150 { width:50px; } /* 75 - 25 */ +.btn175 { width:62.5px; } /* 87.5 - 25 */ +.btn200 { width:75px; } /* 100 - 25 */ +.btn225 { width:87.5px; } /* 112.5 - 25 */ +.btn250 { width:100; } /* 125 - 25 */ +.btn275 { width:112.5px; } /* 137.5 - 25 */ +.btn600 { width:275px; } /* 300 - 25 */ +.btn625 { width:287.5px; } /* 312.5 - 25 */ +.btn700 { width:325px; } /* 350 - 25 */ +.btn750 { width:350px; } /* 375 - 25 */ + +.spc100 { width:25px; visibility:hidden; } +.spc125 { width:37.5px; visibility:hidden; } +.spc150 { width:50px; visibility:hidden; } +.spc175 { width:62.5px; visibility:hidden; } +.spc200 { width 75px; visibility:hidden; } + +.keyboard-row { + width: auto; + display: inline-block; +} + +.keyboard-outline { +} + +.keyboard-pane { + width: 750px; + font-size: 14px; + font-weight:bold; +} + + + +.action { + font-size:16px; + font-weight:bold; + min-width: 30px; +} + +.keycode_tabs { + width: 750px; + overflow: auto; + font-size:14px; + font-weight:bold; +} + + + +/* http://www.w3schools.com/cssref/css3_pr_resize.asp */ +.resizable { + resize: both; + overflow: auto; +} diff --git a/editor/alps64/keymap_editor.js b/editor/alps64/keymap_editor.js new file mode 100644 index 00000000..66c3992f --- /dev/null +++ b/editor/alps64/keymap_editor.js @@ -0,0 +1,527 @@ +/* + * TMK keymap editor + */ + +/* + * Share URL + */ +function encode_keymap(keymap) +{ + return window.btoa(JSON.stringify(keymap)); +} + +function decode_keymap(hash) +{ + try { + return JSON.parse(window.atob(hash)); + } catch (err) { + return null; + } +} + +/* + * Hex file + */ +function hexstr2(b) +{ + return ('0'+ b.toString(16)).substr(-2).toUpperCase(); +} + +function hex_line(address, record_type, data) +{ + var sum = 0; + sum += data.length; + sum += (address >> 8); + sum += (address & 0xff); + sum += record_type; + + var line = ''; + line += ':'; + line += hexstr2(data.length); + line += hexstr2(address >> 8); + line += hexstr2(address & 0xff); + line += hexstr2(record_type); + for (var i = 0; i < data.length; i++) { + sum = (sum + data[i]); + line += hexstr2(data[i]); + } + line += hexstr2((~sum + 1)&0xff); // Checksum + line +="\r\n"; + return line; +} + +function hex_eof() +{ + return ":00000001FF\r\n"; +} + +/* +function flatten(array) +{ +}; +*/ + +function hex_output(address, data) { + var output = ''; + var line = []; + + // TODO: refine: flatten data into one dimension array + [].concat.apply([], [].concat.apply([], data)).forEach(function(e) { + line.push(e); + if (line.length == 16) { + output += hex_line(address, 0x00, line); + address += 16; + line.length = 0; // clear array + } + }); + if (line.length > 0) { + output += hex_line(address, 0x00, line); + } + return output; +} + + + +/* + * Source file + */ +function source_output(keymaps) { + var output = ''; + // fn actions + output += "/*\n"; + output += " * Keymap for " + KEYBOARD_ID + "\n";; + output += " * generated by tmk keymap editor\n"; + output += " */\n"; + output += "#include \n"; + output += "#include \n"; + output += "#include \n"; + output += "#include \"keycode.h\"\n"; + output += "#include \"action.h\"\n"; + output += "#include \"action_macro.h\"\n"; + output += "#include \"keymap.h\"\n\n"; + + output += "#ifdef KEYMAP_SECTION\n"; + output += "const uint16_t fn_actions[] __attribute__ ((section (\".keymap.fn_actions\"))) = {\n"; + output += "#else\n"; + output += "static const uint16_t fn_actions[] PROGMEM = {\n"; + output += "#endif\n"; + output += " [0] = ACTION_LAYER_MOMENTARY(1),\n"; + output += " [1] = ACTION_LAYER_MOMENTARY(2),\n"; + output += " [2] = ACTION_LAYER_MOMENTARY(3),\n"; + output += " [3] = ACTION_LAYER_MOMENTARY(4),\n"; + output += " [4] = ACTION_LAYER_MOMENTARY(5),\n"; + output += " [5] = ACTION_LAYER_MOMENTARY(6),\n"; + output += " [6] = ACTION_LAYER_MOMENTARY(7),\n"; + output += " [7] = ACTION_LAYER_TOGGLE(1),\n"; + output += " [8] = ACTION_LAYER_TOGGLE(2),\n"; + output += " [9] = ACTION_LAYER_TOGGLE(3),\n"; + output += " [10] = ACTION_LAYER_TAP_TOGGLE(1),\n"; + output += " [11] = ACTION_LAYER_TAP_TOGGLE(2),\n"; + output += " [12] = ACTION_LAYER_TAP_TOGGLE(3),\n"; + output += " [13] = ACTION_LAYER_TAP_KEY(1, KC_A),\n"; + output += " [14] = ACTION_LAYER_TAP_KEY(2, KC_F),\n"; + output += " [15] = ACTION_LAYER_TAP_KEY(3, KC_J),\n"; + output += " [16] = ACTION_LAYER_TAP_KEY(4, KC_SPACE),\n"; + output += " [17] = ACTION_LAYER_TAP_KEY(5, KC_SCOLON),\n"; + output += " [18] = ACTION_LAYER_TAP_KEY(6, KC_QUOTE),\n"; + output += " [19] = ACTION_LAYER_TAP_KEY(7, KC_SLASH),\n"; + output += " [20] = ACTION_MODS_TAP_KEY(MOD_LSFT, KC_SPACE),\n"; + output += " [21] = ACTION_MODS_TAP_KEY(MOD_LCTL, KC_SPACE),\n"; + output += " [22] = ACTION_MODS_TAP_KEY(MOD_RCTL, KC_QUOTE),\n"; + output += " [23] = ACTION_MODS_TAP_KEY(MOD_RCTL, KC_ENTER),\n"; + output += " [24] = ACTION_MODS_TAP_KEY(MOD_LCTL, KC_ESC),\n"; + output += " [25] = ACTION_MODS_TAP_KEY(MOD_LCTL, KC_BSPACE),\n"; + output += " [26] = ACTION_MODS_ONESHOT(MOD_LCTL),\n"; + output += " [27] = ACTION_MODS_TAP_KEY(MOD_LSFT, KC_ESC),\n"; + output += " [28] = ACTION_MODS_TAP_KEY(MOD_LSFT, KC_BSPACE),\n"; + output += " [29] = ACTION_MODS_ONESHOT(MOD_LSFT),\n"; + output += " [30] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_GRAVE),\n"; + output += " [31] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_BSLASH),\n"; + output += "};\n\n"; + + // keymaps + output += "#ifdef KEYMAP_SECTION\n"; + output += "const uint8_t keymaps[]["; + output += keymaps[0].length; // row + output += "]["; + output += keymaps[0][0].length; // col + output += "] __attribute__ ((section (\".keymap.keymaps\"))) = {\n"; + output += "#else\n"; + output += "static const uint8_t keymaps[]["; + output += keymaps[0].length; // row + output += "]["; + output += keymaps[0][0].length; // col + output += "] PROGMEM = {\n"; + output += "#endif\n"; + for (var i in keymaps) { + output += " {\n"; + for (var j in keymaps[i]) { + output += " { "; + for (var k in keymaps[i][j]) { + output += '0x' + ('0' + keymaps[i][j][k].toString(16)).substr(-2); + output += ','; + } + output += " },\n"; + } + output += " },\n"; + } + output += "};\n\n"; + output += "/* translates key to keycode */\n"; + output += "uint8_t keymap_key_to_keycode(uint8_t layer, key_t key)\n"; + output += "{\n"; + output += " return pgm_read_byte(&keymaps[(layer)][(key.row)][(key.col)]);\n"; + output += "}\n"; + output += "\n"; + output += "/* translates Fn index to action */\n"; + output += "action_t keymap_fn_to_action(uint8_t keycode)\n"; + output += "{\n"; + output += " action_t action;\n"; + output += " if (FN_INDEX(keycode) < sizeof(fn_actions) / sizeof(fn_actions[0])) {\n"; + output += " action.code = pgm_read_word(&fn_actions[FN_INDEX(keycode)]);\n"; + output += " } else {\n"; + output += " action.code = ACTION_NO;\n"; + output += " }\n"; + output += " return action;\n"; + output += "}\n"; + return output; +}; + + + +/* + * keycodes + */ +var code_display = [ + // {id, name(text), description(tooltip)} + {id: 'NO ', name: 'NO', desc: 'No action'}, + {id: 'TRNS', name: 'TRNS', desc: 'Transparent'}, + {id: 'POST_FAIL', name: 'POST_FAIL', desc: 'POST_FAIL'}, + {id: 'UNDEFINED', name: 'UNDEFINED', desc: 'UNDEFINED'}, + {id: 'A', name: 'A', desc: 'A'}, + {id: 'B', name: 'B', desc: 'B'}, + {id: 'C', name: 'C', desc: 'C'}, + {id: 'D', name: 'D', desc: 'D'}, + {id: 'E', name: 'E', desc: 'E'}, + {id: 'F', name: 'F', desc: 'F'}, + {id: 'G', name: 'G', desc: 'G'}, + {id: 'H', name: 'H', desc: 'H'}, + {id: 'I', name: 'I', desc: 'I'}, + {id: 'J', name: 'J', desc: 'J'}, + {id: 'K', name: 'K', desc: 'K'}, + {id: 'L', name: 'L', desc: 'L'}, + {id: 'M', name: 'M', desc: 'M'}, + {id: 'N', name: 'N', desc: 'N'}, + {id: 'O', name: 'O', desc: 'O'}, + {id: 'P', name: 'P', desc: 'P'}, + {id: 'Q', name: 'Q', desc: 'Q'}, + {id: 'R', name: 'R', desc: 'R'}, + {id: 'S', name: 'S', desc: 'S'}, + {id: 'T', name: 'T', desc: 'T'}, + {id: 'U', name: 'U', desc: 'U'}, + {id: 'V', name: 'V', desc: 'V'}, + {id: 'W', name: 'W', desc: 'W'}, + {id: 'X', name: 'X', desc: 'X'}, + {id: 'Y', name: 'Y', desc: 'Y'}, + {id: 'Z', name: 'Z', desc: 'Z'}, + {id: '1', name: '1', desc: '1'}, + {id: '2', name: '2', desc: '2'}, + {id: '3', name: '3', desc: '3'}, + {id: '4', name: '4', desc: '4'}, + {id: '5', name: '5', desc: '5'}, + {id: '6', name: '6', desc: '6'}, + {id: '7', name: '7', desc: '7'}, + {id: '8', name: '8', desc: '8'}, + {id: '9', name: '9', desc: '9'}, + {id: '0', name: '0', desc: '0'}, + {id: 'ENT', name: 'Enter', desc: 'ENTER'}, + {id: 'ESC', name: 'Esc', desc: 'Escape'}, + {id: 'BSPC', name: 'Back space', desc: 'Backspace'}, + {id: 'TAB', name: 'Tab', desc: 'Tab'}, + {id: 'SPC', name: 'Space', desc: 'Space'}, + {id: 'MINS', name: '-', desc: 'MINUS'}, + {id: 'EQL', name: '=', desc: 'EQUAL'}, + {id: 'LBRC', name: '[', desc: 'Left Bracket'}, + {id: 'RBRC', name: ']', desc: 'Right Bracket'}, + {id: 'BSLS', name: "\\", desc: 'Backslash'}, + {id: 'NUHS', name: 'ISO #', desc: 'Non-US Hash'}, + {id: 'SCLN', name: ';', desc: 'Semicolon'}, + {id: 'QUOT', name: "'", desc: 'Quote'}, + {id: 'GRV ', name: '`', desc: 'Grave'}, + {id: 'COMM', name: ',', desc: 'Comma'}, + {id: 'DOT ', name: '.', desc: 'Dot'}, + {id: 'SLSH', name: '/', desc: 'Slash'}, + {id: 'CAPS', name: 'Caps Lock', desc: 'Need this? Sure? :)'}, + {id: 'F1 ', name: 'F1', desc: 'F1'}, + {id: 'F2 ', name: 'F2', desc: 'F2'}, + {id: 'F3 ', name: 'F3', desc: 'F3'}, + {id: 'F4 ', name: 'F4', desc: 'F4'}, + {id: 'F5 ', name: 'F5', desc: 'F5'}, + {id: 'F6 ', name: 'F6', desc: 'F6'}, + {id: 'F7 ', name: 'F7', desc: 'F7'}, + {id: 'F8 ', name: 'F8', desc: 'F8'}, + {id: 'F9 ', name: 'F9', desc: 'F9'}, + {id: 'F10 ', name: 'F10', desc: 'F10'}, + {id: 'F11 ', name: 'F11', desc: 'F11'}, + {id: 'F12 ', name: 'F12', desc: 'F12'}, + {id: 'PSCR', name: 'Print Screen', desc: 'Print Screen'}, + {id: 'SLCK', name: 'Scroll Lock', desc: 'Scroll Lock'}, + {id: 'PAUS', name: 'Pause', desc: 'Pause'}, + {id: 'INS ', name: 'Insert', desc: 'Insert'}, + {id: 'HOME', name: 'Home', desc: 'Home'}, + {id: 'PGUP', name: 'Page Up', desc: 'Page Up'}, + {id: 'DEL ', name: 'Delete', desc: 'Delete'}, + {id: 'END ', name: 'End', desc: 'End'}, + {id: 'PGDN', name: 'Page Down', desc: 'Page Down'}, + {id: 'RGHT', name: '\u2192', desc: 'Right'}, + {id: 'LEFT', name: '\u2190', desc: 'Left'}, + {id: 'DOWN', name: '\u2193', desc: 'Down'}, + {id: 'UP ', name: '\u2191', desc: 'Up'}, + {id: 'NLCK', name: 'Num Lock', desc: 'Num Lock'}, + {id: 'PSLS', name: 'P/', desc: 'Keypad Slash'}, + {id: 'PAST', name: 'P*', desc: 'Keypad Asterisk'}, + {id: 'PMNS', name: 'P-', desc: 'Keypad Minus'}, + {id: 'PPLS', name: 'P+', desc: 'Keypad Plus'}, + {id: 'PENT', name: 'P\u21A9', desc: 'Keypad Enter'}, + {id: 'P1 ', name: 'P1', desc: 'Keypad 1'}, + {id: 'P2 ', name: 'P2', desc: 'Keypad 2'}, + {id: 'P3 ', name: 'P3', desc: 'Keypad 3'}, + {id: 'P4 ', name: 'P4', desc: 'Keypad 4'}, + {id: 'P5 ', name: 'P5', desc: 'Keypad 5'}, + {id: 'P6 ', name: 'P6', desc: 'Keypad 6'}, + {id: 'P7 ', name: 'P7', desc: 'Keypad 7'}, + {id: 'P8 ', name: 'P8', desc: 'Keypad 8'}, + {id: 'P9 ', name: 'P9', desc: 'Keypad 9'}, + {id: 'P0 ', name: 'P0', desc: 'Keypad 0'}, + {id: 'PDOT', name: 'P.', desc: 'Keypad Dot'}, + {id: 'NUBS', name: 'ISO \\', desc: 'Non-US Backslash'}, + {id: 'APP ', name: 'Application', desc: 'Application'}, + {id: 'POWER', name: '_Power', desc: 'Power(Not work on Windows)'}, + {id: 'PEQL', name: 'P=', desc: 'Keymapd Equal'}, + {id: 'F13 ', name: 'F13', desc: 'F13'}, + {id: 'F14 ', name: 'F14', desc: 'F14'}, + {id: 'F15 ', name: 'F15', desc: 'F15'}, + {id: 'F16 ', name: 'F16', desc: 'F16'}, + {id: 'F17 ', name: 'F17', desc: 'F17'}, + {id: 'F18 ', name: 'F18', desc: 'F18'}, + {id: 'F19 ', name: 'F19', desc: 'F19'}, + {id: 'F20 ', name: 'F20', desc: 'F20'}, + {id: 'F21 ', name: 'F21', desc: 'F21'}, + {id: 'F22 ', name: 'F22', desc: 'F22'}, + {id: 'F23 ', name: 'F23', desc: 'F23'}, + {id: 'F24 ', name: 'F24', desc: 'F24'}, + {id: 'EXECUTE', name: 'EXECUTE', desc: 'EXECUTE'}, + {id: 'HELP', name: 'HELP', desc: 'HELP'}, + {id: 'MENU', name: 'MENU', desc: 'MENU'}, + {id: 'SELECT', name: 'SELECT', desc: 'SELECT'}, + {id: 'STOP', name: 'STOP', desc: 'STOP'}, + {id: 'AGAIN', name: 'AGAIN', desc: 'AGAIN'}, + {id: 'UNDO', name: 'UNDO', desc: 'UNDO'}, + {id: 'CUT', name: 'CUT', desc: 'CUT'}, + {id: 'COPY', name: 'COPY', desc: 'COPY'}, + {id: 'PASTE', name: 'PASTE', desc: 'PASTE'}, + {id: 'FIND', name: 'FIND', desc: 'FIND'}, + {id: '_MUTE', name: '_MUTE', desc: '_MUTE(Not work on Windows)'}, + {id: '_VOLUP', name: '_VOLUP', desc: '_VOLUP(Not work on Windows)'}, + {id: '_VOLDOWN', name: '_VOLDOWN', desc: '_VOLDOWN(Not work on Windows)'}, + {id: 'LCAP', name: 'Locking Caps Lock', desc: 'Locking Caps Lock'}, + {id: 'LNUM', name: 'Locking Num Lock', desc: 'Locking Num Lock'}, + {id: 'LSCR', name: 'Locking Scroll Lock', desc: 'Locking Scroll Lock'}, + {id: 'PCMM', name: 'P,', desc: 'Keypad Comma'}, + {id: 'KP_EQUAL_AS400', name: 'P= (AS400)', desc: 'Keypad Equal (AS400)'}, + {id: 'INT1', name: '\u308D', desc: 'Japanese RO'}, + {id: 'INT2', name: '\u3072\u3089\u304c\u306a', desc: 'Japanese Hiragana'}, + {id: 'INT3', name: '\uffe5', desc: 'Japanese Yen'}, + {id: 'INT4', name: '\u5909\u63db', desc: 'Japanese Henkan'}, + {id: 'INT5', name: '\u7121\u5909\u63db', desc: 'Japanese Muhenkan'}, + {id: 'INT6', name: 'INT6', desc: 'INT6'}, + {id: 'INT7', name: 'INT7', desc: 'INT7'}, + {id: 'INT8', name: 'INT8', desc: 'INT8'}, + {id: 'INT9', name: 'INT9', desc: 'INT9'}, + {id: 'LANG1', name: '\ud55c/\uc601', desc: 'Korean Hangul/English'}, + {id: 'LANG2', name: '\ud55c\uc790', desc: 'Korean Hanja'}, + {id: 'LANG3', name: 'LANG3', desc: 'LANG3'}, + {id: 'LANG4', name: 'LANG4', desc: 'LANG4'}, + {id: 'LANG5', name: 'LANG5', desc: 'LANG5'}, + {id: 'LANG6', name: 'LANG6', desc: 'LANG6'}, + {id: 'LANG7', name: 'LANG7', desc: 'LANG7'}, + {id: 'LANG8', name: 'LANG8', desc: 'LANG8'}, + {id: 'LANG9', name: 'LANG9', desc: 'LANG9'}, + {id: 'ALT_ERASE', name: 'ALT_ERASE', desc: 'ALT_ERASE'}, + {id: 'SYSREQ', name: 'SYSREQ', desc: 'SYSREQ'}, + {id: 'CANCEL', name: 'CANCEL', desc: 'CANCEL'}, + {id: 'CLEAR', name: 'CLEAR', desc: 'CLEAR'}, + {id: 'PRIOR', name: 'PRIOR', desc: 'PRIOR'}, + {id: 'RETURN', name: 'RETURN', desc: 'RETURN'}, + {id: 'SEPARATOR', name: 'SEPARATOR', desc: 'SEPARATOR'}, + {id: 'OUT', name: 'OUT', desc: 'OUT'}, + {id: 'OPER', name: 'OPER', desc: 'OPER'}, + {id: 'CLEAR_AGAIN', name: 'CLEAR_AGAIN', desc: 'CLEAR_AGAIN'}, + {id: 'CRSEL', name: 'CRSEL', desc: 'CRSEL'}, + {id: 'EXSEL', name: 'EXSEL', desc: 'EXSEL'}, + + /* System & Media key 165-191(0xa5-bf) */ + {id: 'PWR ', name: 'Sys Power', desc: 'System Power'}, + {id: 'SLEP', name: 'Sys Sleep', desc: 'System Sleep'}, + {id: 'WAKE', name: 'Sys Wake', desc: 'System Wake'}, + {id: 'MUTE', name: 'Mute', desc: 'Audio Mute'}, + {id: 'VOLU', name: 'Vol Up', desc: 'Audio Vol Up'}, + {id: 'VOLD', name: 'Vol Down', desc: 'Audio Vol Down'}, + {id: 'MNXT', name: 'Next Track', desc: 'Next Track'}, + {id: 'MPRV', name: 'Prev Track', desc: 'Previous Track'}, + {id: 'MSTP', name: 'Stop', desc: 'Media Stop'}, + {id: 'MPLY', name: 'Play Pause', desc: 'Play Pause'}, + {id: 'MSEL', name: 'Select', desc: 'Media Select'}, + {id: 'EJCT', name: 'Eject', desc: 'Media Eject'}, + {id: 'MAIL', name: 'Mail', desc: 'Mail'}, + {id: 'CALC', name: 'Calc', desc: 'Calculator'}, + {id: 'MYCM', name: 'My Computer', desc: 'My Computer'}, + {id: 'WSCH', name: 'Web Search', desc: 'WWW Search'}, + {id: 'WHOM', name: 'Web Home', desc: 'WWW Home'}, + {id: 'WBAK', name: 'Web Back', desc: 'WWW Back'}, + {id: 'WFWD', name: 'Web Forward', desc: 'WWW Forward'}, + {id: 'WSTP', name: 'Web Stop', desc: 'WWW Stop'}, + {id: 'WREF', name: 'Web Refresh', desc: 'WWW Refresh'}, + {id: 'WFAV', name: 'Web Favorites', desc: 'WWW Favorites'}, + {id: 'RESERVED-187', name: 'RESERVED-187', desc: 'RESERVED-187'}, + {id: 'RESERVED-188', name: 'RESERVED-188', desc: 'RESERVED-188'}, + {id: 'RESERVED-189', name: 'RESERVED-189', desc: 'RESERVED-189'}, + {id: 'RESERVED-190', name: 'RESERVED-190', desc: 'RESERVED-190'}, + {id: 'RESERVED-191', name: 'RESERVED-191', desc: 'RESERVED-191'}, + + /* Fn key 192-223(0xc0-df) */ + {id: 'FN0 ', name: 'L1', desc: 'Change to Layer 1(Momentary) '}, + {id: 'FN1 ', name: 'L2', desc: 'Change to Layer 2(Momentary) '}, + {id: 'FN2 ', name: 'L3', desc: 'Change to Layer 3(Momentary) '}, + {id: 'FN3 ', name: 'L4', desc: 'Change to Layer 4(Momentary) '}, + {id: 'FN4 ', name: 'L5', desc: 'Change to Layer 5(Momentary) '}, + {id: 'FN5 ', name: 'L6', desc: 'Change to Layer 6(Momentary) '}, + {id: 'FN6 ', name: 'L7', desc: 'Change to Layer 7(Momentary) '}, + {id: 'FN7 ', name: 'T1', desc: 'Change to Layer 1(Toggle) '}, + {id: 'FN8 ', name: 'T2', desc: 'Change to Layer 2(Toggle) '}, + {id: 'FN9 ', name: 'T3', desc: 'Change to Layer 3(Toggle) '}, + {id: 'FN10', name: 'L1t', desc: 'Change to Layer 1(Momentary with Tap Toggle) '}, + {id: 'FN11', name: 'L2t', desc: 'Change to Layer 2(Momentary with Tap Toggle) '}, + {id: 'FN12', name: 'L3t', desc: 'Change to Layer 3(Momentary with Tap Toggle) '}, + /* Layer swith with Tap key */ + {id: 'FN13', name: 'A (L1)', desc: 'A with with L1(Tap key)'}, + {id: 'FN14', name: 'F (L2)', desc: 'F with with L2(Tap key)'}, + {id: 'FN15', name: 'J (L3)', desc: 'J with with L3(Tap key)'}, + {id: 'FN16', name: 'Space (L4)', desc: 'Space with L4(Tap key)'}, + {id: 'FN17', name: '; (L5)', desc: 'Semicolon with L5(Tap key)'}, + {id: 'FN18', name: '\'( L6)', desc: 'Quote with L6(Tap key)'}, + {id: 'FN19', name: '/ (L7)', desc: 'Slash with with L7(Tap key)'}, + /* Modifier on alpha key(Tap key, Dual-role key) */ + {id: 'FN20', name: 'Space (LShift)', desc: 'Space with Left Sfhit(Tap key)'}, + {id: 'FN21', name: 'Space (LCtrl)', desc: 'Space with Left Control(Tap key)'}, + {id: 'FN22', name: '\' (RCtrl)', desc: 'Quote with Right Control(Tap key)'}, + {id: 'FN23', name: 'Enter (RCtrl)', desc: 'Enter with Right Control(Tap key)'}, + /* Modifier with a key(Tap key, Dual-role key) */ + {id: 'FN24', name: 'LCtrl (Esc)', desc: 'Left Control with Escape'}, + {id: 'FN25', name: 'LCtrl (Backspace)', desc: 'Left Control with Backspace'}, + {id: 'FN26', name: 'LCtrl (OneShot)', desc: 'Left Control(OneShot Modifier)'}, + {id: 'FN27', name: 'LShift (Esc)', desc: 'Left Shift with Escape'}, + {id: 'FN28', name: 'LShift (Backspace)', desc: 'Left Shift with Backspace'}, + {id: 'FN29', name: 'LShift (OneShot)', desc: 'Left Shift(OneShot Modifier)'}, + {id: 'FN30', name: 'RShift (`)', desc: 'Right Shift with Grave(Tap key)'}, + {id: 'FN31', name: 'RShift (\\)', desc: 'Right Shift with Backslash(Tap key)'}, + +/* Standeard codes for 16bit Action 165-223(0xa5-df) + {id: 'RESERVED-165', name: 'RESERVED-165', desc: 'RESERVED-165'}, + {id: 'RESERVED-166', name: 'RESERVED-166', desc: 'RESERVED-166'}, + {id: 'RESERVED-167', name: 'RESERVED-167', desc: 'RESERVED-167'}, + {id: 'RESERVED-168', name: 'RESERVED-168', desc: 'RESERVED-168'}, + {id: 'RESERVED-169', name: 'RESERVED-169', desc: 'RESERVED-169'}, + {id: 'RESERVED-170', name: 'RESERVED-170', desc: 'RESERVED-170'}, + {id: 'RESERVED-171', name: 'RESERVED-171', desc: 'RESERVED-171'}, + {id: 'RESERVED-172', name: 'RESERVED-172', desc: 'RESERVED-172'}, + {id: 'RESERVED-173', name: 'RESERVED-173', desc: 'RESERVED-173'}, + {id: 'RESERVED-174', name: 'RESERVED-174', desc: 'RESERVED-174'}, + {id: 'RESERVED-175', name: 'RESERVED-175', desc: 'RESERVED-175'}, + {id: 'KP_00', name: 'KP_00', desc: 'KP_00'}, + {id: 'KP_000', name: 'KP_000', desc: 'KP_000'}, + {id: 'THOUSANDS_SEPARATOR', name: 'THOUSANDS_SEPARATOR', desc: 'THOUSANDS_SEPARATOR'}, + {id: 'DECIMAL_SEPARATOR', name: 'DECIMAL_SEPARATOR', desc: 'DECIMAL_SEPARATOR'}, + {id: 'CURRENCY_UNIT', name: 'CURRENCY_UNIT', desc: 'CURRENCY_UNIT'}, + {id: 'CURRENCY_SUB_UNIT', name: 'CURRENCY_SUB_UNIT', desc: 'CURRENCY_SUB_UNIT'}, + {id: 'KP_LPAREN', name: 'KP_LPAREN', desc: 'KP_LPAREN'}, + {id: 'KP_RPAREN', name: 'KP_RPAREN', desc: 'KP_RPAREN'}, + {id: 'KP_LCBRACKET', name: 'KP_LCBRACKET', desc: 'KP_LCBRACKET'}, + {id: 'KP_RCBRACKET', name: 'KP_RCBRACKET', desc: 'KP_RCBRACKET'}, + {id: 'KP_TAB', name: 'KP_TAB', desc: 'KP_TAB'}, + {id: 'KP_BSPACE', name: 'KP_BSPACE', desc: 'KP_BSPACE'}, + {id: 'KP_A', name: 'KP_A', desc: 'KP_A'}, + {id: 'KP_B', name: 'KP_B', desc: 'KP_B'}, + {id: 'KP_C', name: 'KP_C', desc: 'KP_C'}, + {id: 'KP_D', name: 'KP_D', desc: 'KP_D'}, + {id: 'KP_E', name: 'KP_E', desc: 'KP_E'}, + {id: 'KP_F', name: 'KP_F', desc: 'KP_F'}, + {id: 'KP_XOR', name: 'KP_XOR', desc: 'KP_XOR'}, + {id: 'KP_HAT', name: 'KP_HAT', desc: 'KP_HAT'}, + {id: 'KP_PERC', name: 'KP_PERC', desc: 'KP_PERC'}, + {id: 'KP_LT', name: 'KP_LT', desc: 'KP_LT'}, + {id: 'KP_GT', name: 'KP_GT', desc: 'KP_GT'}, + {id: 'KP_AND', name: 'KP_AND', desc: 'KP_AND'}, + {id: 'KP_LAZYAND', name: 'KP_LAZYAND', desc: 'KP_LAZYAND'}, + {id: 'KP_OR', name: 'KP_OR', desc: 'KP_OR'}, + {id: 'KP_LAZYOR', name: 'KP_LAZYOR', desc: 'KP_LAZYOR'}, + {id: 'KP_COLON', name: 'KP_COLON', desc: 'KP_COLON'}, + {id: 'KP_HASH', name: 'KP_HASH', desc: 'KP_HASH'}, + {id: 'KP_SPACE', name: 'KP_SPACE', desc: 'KP_SPACE'}, + {id: 'KP_ATMARK', name: 'KP_ATMARK', desc: 'KP_ATMARK'}, + {id: 'KP_EXCLAMATION', name: 'KP_EXCLAMATION', desc: 'KP_EXCLAMATION'}, + {id: 'KP_MEM_STORE', name: 'KP_MEM_STORE', desc: 'KP_MEM_STORE'}, + {id: 'KP_MEM_RECALL', name: 'KP_MEM_RECALL', desc: 'KP_MEM_RECALL'}, + {id: 'KP_MEM_CLEAR', name: 'KP_MEM_CLEAR', desc: 'KP_MEM_CLEAR'}, + {id: 'KP_MEM_ADD', name: 'KP_MEM_ADD', desc: 'KP_MEM_ADD'}, + {id: 'KP_MEM_SUB', name: 'KP_MEM_SUB', desc: 'KP_MEM_SUB'}, + {id: 'KP_MEM_MUL', name: 'KP_MEM_MUL', desc: 'KP_MEM_MUL'}, + {id: 'KP_MEM_DIV', name: 'KP_MEM_DIV', desc: 'KP_MEM_DIV'}, + {id: 'KP_PLUS_MINUS', name: 'KP_PLUS_MINUS', desc: 'KP_PLUS_MINUS'}, + {id: 'KP_CLEAR', name: 'KP_CLEAR', desc: 'KP_CLEAR'}, + {id: 'KP_CLEAR_ENTRY', name: 'KP_CLEAR_ENTRY', desc: 'KP_CLEAR_ENTRY'}, + {id: 'KP_BINARY', name: 'KP_BINARY', desc: 'KP_BINARY'}, + {id: 'KP_OCTAL', name: 'KP_OCTAL', desc: 'KP_OCTAL'}, + {id: 'KP_DECIMAL', name: 'KP_DECIMAL', desc: 'KP_DECIMAL'}, + {id: 'KP_HEXADECIMAL', name: 'KP_HEXADECIMAL', desc: 'KP_HEXADECIMAL'}, + {id: 'RESERVED-222', name: 'RESERVED-222', desc: 'RESERVED-222'}, + {id: 'RESERVED-223', name: 'RESERVED-223', desc: 'RESERVED-223'}, +*/ + + /* Modifier 224-231(0xe0-e7) */ + {id: 'LCTL', name: 'LCtrl', desc: 'Left Control'}, + {id: 'LSFT', name: 'LShift', desc: 'Left Shift'}, + {id: 'LALT', name: 'LAlt', desc: 'Left Alt(\u2325)'}, + {id: 'LGUI', name: 'LGui', desc: 'Left Windows(\u2318)'}, + {id: 'RCTL', name: 'RCtrl', desc: 'Right Control'}, + {id: 'RSFT', name: 'RShift', desc: 'Right Shift'}, + {id: 'RALT', name: 'RAlt', desc: 'Right Alt(\u2325)'}, + {id: 'RGUI', name: 'RGui', desc: 'Right Windows(\u2318)'}, + + /* Not used 232-239(0xe8-ef) */ + {id: 'RESERVED-232', name: 'RESERVED-232', desc: 'RESERVED-232'}, + {id: 'RESERVED-233', name: 'RESERVED-233', desc: 'RESERVED-233'}, + {id: 'RESERVED-234', name: 'RESERVED-234', desc: 'RESERVED-234'}, + {id: 'RESERVED-235', name: 'RESERVED-235', desc: 'RESERVED-235'}, + {id: 'RESERVED-236', name: 'RESERVED-236', desc: 'RESERVED-236'}, + {id: 'RESERVED-237', name: 'RESERVED-237', desc: 'RESERVED-237'}, + {id: 'RESERVED-238', name: 'RESERVED-238', desc: 'RESERVED-238'}, + {id: 'RESERVED-239', name: 'RESERVED-239', desc: 'RESERVED-239'}, + + /* Mousekey 240-255(0xf0-ff) */ + {id: 'MS_U', name: 'Mouse Up', desc: 'Mouse UP'}, + {id: 'MS_D', name: 'Mouse down', desc: 'Mouse Down'}, + {id: 'MS_L', name: 'Mouse left', desc: 'Mouse Left'}, + {id: 'MS_R', name: 'Mouse right', desc: 'Mouse Right'}, + {id: 'BTN1', name: 'Mouse Btn1', desc: 'Mouse Button1'}, + {id: 'BTN2', name: 'Mouse Btn2', desc: 'Mouse Button2'}, + {id: 'BTN3', name: 'Mouse Btn3', desc: 'Mouse Button3'}, + {id: 'BTN4', name: 'Mouse Btn4', desc: 'Mouse Button4'}, + {id: 'BTN5', name: 'Mouse Btn5', desc: 'Mouse Button5'}, + {id: 'WH_U', name: 'Wheel Up', desc: 'Wheel Up'}, + {id: 'WH_D', name: 'Wheel Down', desc: 'Wheel Down'}, + {id: 'WH_L', name: 'Wheel Left', desc: 'Wheel Left'}, + {id: 'WH_R', name: 'Wheel Right', desc: 'Wheel Right'}, + {id: 'ACL0', name: 'Mouse Slow', desc: 'Mouse Slow'}, + {id: 'ACL1', name: 'Mouse Medium', desc: 'Mouse Medium'}, + {id: 'ACL2', name: 'Mouse Fast', desc: 'Mouse Fast'}, +];