From 9d338abca7be2187a5d46d641d12ac96e3dce38c Mon Sep 17 00:00:00 2001 From: createskyblue Date: Tue, 25 Aug 2020 18:50:54 +0800 Subject: [PATCH] Add Japanese -.v1.7t3 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 使用了emutyworks的日语字库,添加日语支持 The Japanese font library of emutyworks is used to add Japanese support 修复一些内存越界的问题 Fixed some memory overruns --- img/文本/LANG_JP.png | Bin 0 -> 298 bytes img/设置/Lang_JP.png | Bin 0 -> 276 bytes software/binaries/1.7t3/T12.ino.standard.hex | 1793 +++++++++++++++ .../T12.ino.with_bootloader.standard.hex | 1827 +++++++++++++++ ...SolderingStation2_arduboy_gplib_v1.7t3.ino | 2015 +++++++++++++++++ 5 files changed, 5635 insertions(+) create mode 100644 img/文本/LANG_JP.png create mode 100644 img/设置/Lang_JP.png create mode 100644 software/binaries/1.7t3/T12.ino.standard.hex create mode 100644 software/binaries/1.7t3/T12.ino.with_bootloader.standard.hex create mode 100644 software/sources/SolderingStation2_arduboy_gplib_v1.7t3.ino diff --git a/img/文本/LANG_JP.png b/img/文本/LANG_JP.png new file mode 100644 index 0000000000000000000000000000000000000000..866f67aaa156f159493ed0504d0e33ad0c7e99e2 GIT binary patch literal 298 zcmeAS@N?(olHy`uVBq!ia0vp^DnKm2!3HGjUf)#)QjEnx?oJHr&dIz4a#+$GeH|GX zHuiJ>Nn{1`6_P!Id>I(3)EF2VS{N990fib~Fff!FFfhDIU|_JC!N4G1FlSew4N!u! zz$3Dlfr0M`2s2LA=92~rPWE(h4Ds+jJGqhTfC7h0_W%FqZ}SPM_!awXm-9%>I^Otq zPo}gZ>(_h7&!*?O&VQn0JVSh$LfD#(SrK+d{uak}^1f`^B3!_>@V(V>58)$r!i5&4 z6-zj~YQz*vPdjW0pOId(Db-)&u2IM5roesQ3c6ceXDXa-6jg0fI97acams0x{j;2Z n>pHH9_`K~{)#9dqi??!5df&!+@m8`6(0L4=u6{1-oD!M!lvI6;>1s;*bKn+Jgm~pB$pEOW#rKgKyh=u>ui3j;w6nIpobd)^ky8M&@z}ubX`Whpu$1-Aa-Q)d=O_eN*IBHD~K$8_o5z^nblg{5!Wn!)VIFp&52&Exi!H$`sjMzRkwQG=rzBpUXO@geCyd+i7M1 literal 0 HcmV?d00001 diff --git a/software/binaries/1.7t3/T12.ino.standard.hex b/software/binaries/1.7t3/T12.ino.standard.hex new file mode 100644 index 0000000..133f067 --- /dev/null +++ b/software/binaries/1.7t3/T12.ino.standard.hex @@ -0,0 +1,1793 @@ +:100000000C9406120C942E120C942E120C945F2752 +:100010000C942E120C942E120C942E120C942E1260 +:100020000C942E120C942E120C942E120C942E1250 +:100030000C942E120C942E120C942E120C942E1240 +:100040000C9415270C942E120C94E3260C94BD26C8 +:100050000C942E120C9436280C942E120C942E1202 +:100060000C942E120C942E1207634236B79BD8A71D +:100070001A39685618AEBAAB558C1D3CB7CC5763CD +:10008000BD6DEDFD753EF6177231BF000000803F7B +:1000900008000000BE922449123EABAAAA2ABECD97 +:1000A000CCCC4C3E00000080BEABAAAAAA3E000009 +:1000B0000000BF000000803F000000000008417801 +:1000C000D3BB4387D1133D190E3CC3BD4282AD2B38 +:1000D0003E68EC8276BED98FE1A93E4C80EFFFBE30 +:1000E00001C4FF7F3F0000000000536176650046B9 +:1000F0006C6970004D61696E2053637265656E00B6 +:100100004F4B004E4F004A5000454E00434E0059A1 +:100110004553004E4F004F4E004F464600496E6615 +:100120006F73004269670050494400446972656317 +:1001300074005361766500426F6F7374004F66669A +:1001400000536C656570005361766500426F6F7394 +:100150007400536C6565700044656661756C74006D +:1001600053617665004164640044656C65746500A4 +:1001700052656E616D650043616C696272617465A0 +:10018000004368616E67650052657475726E004168 +:10019000626F7574004C616E67004C4F5720566F4C +:1001A0006C0042757A7A65720053637265656E0001 +:1001B000436F6E74726F6C0054696D6572005465A4 +:1001C0006D700054697000F21415F0CADFB8CCF0FD +:1001D000D699E8AEA4DFEEE8F0714601F046464A53 +:1001E00001F21D1E08F21C08F21A1B08F0714601EC +:1001F000F046464A01F219F051F218F05A8DF0C05B +:10020000DAEEAEF0C8B8A5F1302924F0B599E1A432 +:10021000BDF21415F0CBEEAEBDF218F05A8DF21609 +:1002200017F21415F0CBEEAEBDF21617F0BCCA9E55 +:10023000E0BDF21415F21213F21011F20C0DF0944D +:10024000F20E0FF0A2D8DFCBE1EEACDCE8F20AF060 +:100250008CF20BF04A8DF209F08DF097C59BBDF240 +:100260000708F2040506F097DEEED5F0CBABEEF012 +:10027000AEA4DFEEE8F0A8E8BDE2EEE0F0B499D37A +:10028000EEF200010203F0CCDFB0B8BD00000000C8 +:10029000000F1DC20800054442080003845FBF0030 +:1002A0000FE44410000115451000054CC97F80097A +:1002B000244F900007C4C11000054D413F00055474 +:1002C00043810007C44D0200054441140005554117 +:1002D000080007C8810400000000000000000000C2 +:1002E0000001083FFE001FFF8100000040020000E7 +:1002F00007FE0FF80004020808000402088800073F +:10030000FE0888000402088800040208880007FE2E +:100310000888000402094800040202300007FE04B5 +:100320000C0004021804000000000000000000009F +:100330000007FE13FE00040208400004020840000B +:10034000040201FC0004023884000402088400074F +:10035000FE0FFF000402080000040209FE00040270 +:1003600009020004020B020004020D020007FE094C +:10037000FE00040201020000000000000000000076 +:100380000001100080001FFF80800001103FFF006F +:10039000004004080007FC040800044404100004A2 +:1003A0004402100004440220001FFF81200000408E +:1003B00000C00000A00130000110020800060C0C73 +:1003C00007001803B0020000000000000000000059 +:1003D00000004000800000400080000FFF3FFF0051 +:1003E00008410408000841040800084104100008FE +:1003F000410210000FFF02200008410120000040D0 +:1004000000C0000040013000004002080000400C25 +:100410000700004030020000000000000000000063 +:10042000001FDF10200002120C2000022404200014 +:10043000047F8020000424B820000FA488500014FA +:10044000BF88500004A488500004A488480004BF5A +:1004500088880004A48A880007A48C840004448946 +:10046000070000818602000000000000000000007C +:10047000000FF00491000440025200047F905400E9 +:10048000045088FF0007D0848100045100810004DB +:100490004901FF0007CA0281000444048100044AA4 +:1004A0001CFF0007EA0481000C510481000061C4B4 +:1004B0008500004080820000000000000000000075 +:1004C0000007FF802000008407FF00008404010073 +:1004D000008404010000840401000FFFC7FF000036 +:1004E000840400000084040000008405FF000084F0 +:1004F00005010001040901000104090100020411C1 +:10050000FF000404010100000000000000000000E2 +:1005100000008204FF00004402010007FF90210058 +:100520000010102100001017FD0000101021000F16 +:10053000FFD06100001010A1000028112100002848 +:100540001221000044142100008210A1000301D0F8 +:1005500045000C00900200000000000000000000B8 +:1005600000084410FE00042810920005FF229200AB +:1005700000103C920000100892001CFE1092000433 +:100580001020FE0004103E920005FF80920004102F +:1005900000920005100E9200061030920004100028 +:1005A000FE000010008200000000000000000000BB +:1005B0000007DF8840000A24104000114210FE00AE +:1005C000040022820002FF3D020008010A420009E5 +:1005D000F9103200090920120009F93E0200090948 +:1005E00000020009090E020009F930220008050086 +:1005F00014000802000800000000000000000000D5 +:10060000000FC3F1E0000FE3F1F8000C70C19E0091 +:100610000C30C186000C30C183000C30C183000C4B +:1006200060C183000C60C183000FC0C183000FC094 +:10063000C186000C00C186000C00C198000C03F1BB +:10064000F8000C03F1E000000000000000000000D2 +:100650000000200820000FFF09FC00002008000017 +:1006600000203E880003FE08500002020BFE00033B +:10067000FE0C4000020218400003FE2BFE000202A6 +:1006800008480003FE088800020208500002022801 +:1006900030001FFF91CC0000000000000104047C2A +:1006A0000000880444000FFF3F4400002004440081 +:1006B00000200C440000200E44001FFF9544000061 +:1006C00020144400005024440000500444000088DA +:1006D0000445000104048500060385030018010495 +:1006E000000000000000000000000000000000000A +:1006F00000047E21FC0004421104001F7E09040056 +:10070000044221FC000542110400067E1104000C85 +:100710000005FC0015FF880000040813FE000448D3 +:10072000325200044F125200044812520014A81210 +:100730005200091F97FF00000000000000000000A9 +:100740000002103DFC0002102504000410250400E6 +:1007500005FFBDFC000C102520000C3825200014DE +:100760003825FE0004543D20000454251000049256 +:100770002510000511A5090006113D4500041025AE +:1007800083000410010100000000000000000000D0 +:10079000001FC8102000124A0C20001AC9042000B3 +:1007A00017480020001FFFB8200002080850001F53 +:1007B000C8085000020808500003C80848001E146A +:1007C00008880001540A880015220C84001443890B +:1007D00007000081060200000000000002FE010088 +:1007E0000002823FFF00048202000004FE020000BB +:1007F0000C1004FC00141004080005FF8C10000409 +:1008000010141000043825FF0004340410000452B2 +:10081000041000049184100005100450000410041A +:1008200020000000000000000000000000000000A8 +:100830000002030010001FDC3EFE000890021200C0 +:10084000051004FF001FDF84120002120CFE001FBF +:10085000D2021000021222FE000A921410000A5264 +:1008600014100012220DFF0002220810000A421488 +:100870001000040223FF0000000000000000000040 +:10088000000F78BC20000948A45000094AA8500075 +:10089000094AA88800094AB104001FFEAAFB000902 +:1008A0004AA42000094AA42000094AA7FE00094AD8 +:1008B000B420000948A924000B48A22200088AA4F9 +:1008C000A2001119204000000000000000000000FC +:1008D000000020008000005001FC0000880104009E +:1008E000010403080006FB0490000800C060000734 +:1008F000DF018000045106000004511BFE0004517A +:1009000002020007D902020004560202000010038E +:10091000FE000010020200000000000000000000C5 +:10092000000208209000027F9890001F8009FF00BD +:10093000022201100006218B100007628DFE000AC2 +:10094000A20910000A14111000121431FE0002084E +:100950001110000214111000022211100002439124 +:10096000FF000281110000000000000000000000F4 +:1009700000100700000008F83FFE0004802002007D +:10098000008020020000BE23E2001C82222200041C +:10099000A42222000494222200048822220004942B +:1009A00023E200052220020005422002000A003F47 +:1009B000FE0011FFA0020000000000000000000087 +:1009C0000000820FFE00004400400007FF8040004E +:1009D0000010004000001000400000101FFF800FBA +:1009E000FFC0400000100040000028004000002828 +:1009F000004000004400400000820040000301C1AC +:100A000040000C00808000000000000009FF004052 +:100A10000004203FFF00042000000000FE00000052 +:100A20001C420FFC00044200000007FF800000048D +:100A3000000FFC0004FF000000048100000005819D +:100A40000FFC00068108040004FF08040000810F69 +:100A5000FC0000000000000000000000000000009A +:100A60000001000FFE00010008200003FF08200025 +:100A70000201082000042208200008200BFE0010BC +:100A8000200820000050082800005008240000889A +:100A9000082200008810200001041020000203A793 +:100AA000FF000C010000000000000000000000003A +:100AB0000000400080001FFF9FFC00004004100069 +:100AC0000FFF02200000003FFF000FFE00000008A3 +:100AD000420FF80008420808000FFE08080008024C +:100AE0000FF8000800080800080008080008000FB8 +:100AF000F8001000080800000000000000000000DE +:100B00000007FE0FF80004020000000402000000CD +:100B100007FE00000004023FFE0004020080000700 +:100B2000FE008000009004900008910C880006935D +:100B30001086000294208200009000800000900245 +:100B400080001FFF81000000000000000000000086 +:100B500000041012020005FF9FD20005009212004F +:100B60001E28A2120004443FF20004820212000672 +:100B7000000212000CFE1FD20014101252000410CA +:100B80001242000410134200041012820015FF826A +:100B90000A0008000204000000000000000000003D +:100BA00000002000000000203E04001FFFA20400FF +:100BB0001000A2FF0000012204000FFE220400002A +:100BC000403E440000402224000440222400047CD3 +:100BD00022040004402204000A403E04000940228E +:100BE000240010FF80140000000008000000000036 +:100BF0000010FE08200008820BFF0004820A01009A +:100C000010FE3C5100088208880008820904000296 +:100C1000FE0C0000040019FC0009FF28200019291F +:100C20000820000929082000092908200009292B8B +:100C3000FF000BFF9000000000000000000000001B +:100C4000001F7F90F80001080888000A100888003B +:100C5000047F0107001FC13A0000054909FC000498 +:100C600049088400044908880004490848000449E8 +:100C700008500004490A200004160C580014218969 +:100C8000870008C086020000000000008004000009 +:100C90003FF02430219027902730207027F0233018 +:100CA00030703FF000008004800400003FF03830D6 +:100CB00033103F90381033902790261030903FF03B +:100CC00000008004800400003FF03DF020103BF065 +:100CD0003B7030302B502AD031B03FF00000800400 +:100CE000800400003FF0387030302310279020102F +:100CF0002010279027903FF000008004800400001F +:100D00003FF03CF03CF020102490249020103CF068 +:100D10003CF03FF000008004800400003FF037B05A +:100D200023103030387038703030231037B03FF037 +:100D300000008004FCF4F860E044C08CC11CC22CAC +:100D4000C44CC88CD10CA204C4048FFC187CBCFC1D +:100D50008000BFF81FF8B0281FF8B4081FF8B108CA +:100D60001FF8B048BFF8B288BFF880008000BFF815 +:100D70001FF8B0081808B9E819B8B8381838B9B861 +:100D8000B9F8B0F8BFF8800015543FF815503FF09F +:100D90001550387010203104138C22A817FC2AA893 +:100DA0000000000015543FFC15543FFC15543C0452 +:100DB00014043CFC14543CFC005400A80000000047 +:100DC000800400003FF03CF034B024902490279041 +:100DD0002310303038703FF000008004FF7CFE7C30 +:100DE000FCECE8DCC84C984C88240820000000008B +:100DF000000000008004E01CF3FCE7FCCE0C8E1C1D +:100E00009F9C1F3C1F0C0E0C0FFC87F881E4C00C4C +:100E1000E01CF87C000458085808580840087FF87F +:100E200060185FE85B685FE85B681CE85FE80000EB +:100E3000800400003FF03CF03CF03CF0201020101B +:100E40003CF03CF03CF03FF000008004F87CF7BC44 +:100E500000007FF80000BFF4AB54AB54AB54AB546C +:100E6000AB54AB54BFF4C00CF03CCE0CBF04B30485 +:100E700073007F007E007C007C007C60BC64BE044C +:100E8000CF0CF03C81DC559C29045500299055D0AD +:100E900003FCFF002E00267002508270E600EE0474 +:100EA000800C001C3FF43FE03FC4378C23183030E7 +:100EB00038703CF03FF03FF000008004058074B8CB +:100EC00057A876B80580F97C4694AAA8F97C0688CC +:100ED00074A8578C75740698F03CCE4CBC34B8148A +:100EE000188010804230607860F844C08004B88474 +:100EF000CFCCF03CF87CE01CC00CCFCCCFCCCFCC1E +:100F0000CFCCCFCCCFCCCFCCC84CCFCCC00CE01CFE +:100F1000FCFCF87CE01CC00CC00CC00CC00CC00C6D +:100F2000C00C80048004FFFCF87CFCFC8004000002 +:100F30002000100008001000270000000000000042 +:100F40000000000000008004C3FC18001800C3FC6F +:100F5000FFFCFF0C00600060FF0CFFFCF0FC0600D3 +:100F60000600F0FC8FC4102020104CC89FE43DF018 +:100F70003DF01DE03EF03F709FE48CC40000303037 +:100F8000F87CF33CF4BCF6BCF4BCF6BCF4BCE49CCA +:100F9000C84CD02CD02CC84CE79CF03C88240820AE +:100FA00038303830383038303830383039303BB07D +:100FB0003FF03FF0000080041FE03FF07038601801 +:100FC00060186018FFFCFCFCFCFCFCFCF87CF87C66 +:100FD000FCFC7FF81E1033382D7C25382D38253841 +:100FE0002D386D80DEC0BF40BF40DEC061803F0055 +:100FF0007FF0FFE0C008C01CC038C870DCE4CFCC74 +:10100000C78CC30CC00CC00CFFFC7FF800000600AE +:101010000C0018F838F030307060707878F878008C +:101020003C023F0C1FF80FF003C000007FF8FFFCEC +:10103000C00CC30CCB4CDB6CDB6CD86CDCECCFCCC9 +:10104000C78CC00CFFFC7FF8030007800FC00CC0EA +:101050001CE01CE03CF03CF07FF87FF8FCFCFCFC62 +:10106000FFFC7FF81140820021208FE023FC8200EA +:101070004A23E200FE209FF013F880802220C080E7 +:101080004221BFF0FBFA8880022084800220848005 +:101090001A208080E3FE8280020101000F421FC0FF +:1010A000784110400840904008421FC0084110405D +:1010B000FFFD104008405FC00840800008413FE04D +:1010C00008432520104125201041252020412520BE +:1010D00040417FF07FF84880020049000201FFF0A4 +:1010E0000201001002027F202200410023F07F0055 +:1010F000220008002200FF802200888022008880D1 +:1011000022008A8022008900FFFC080023F21FC011 +:1011100022111040FBF0904022121FC02A111040F3 +:1011200033F1104060005FC0AFFC800020413FE021 +:10113000224325202279252022412520A541252052 +:1011400048FD7FF01083DFC0108250402082504065 +:101150002FFFDFC06082520061C25200A1C25FE077 +:1011600022A3D20022A2510024925100288E509036 +:10117000308BD4502082583020801010104047C04F +:1011800017FC44402003F44023F844406208C44064 +:10119000A3F8E440200154402FFD44402806444079 +:1011A00023F84440204044502040485021405030D3 +:1011B0002080400020921FC03DF990402090904038 +:1011C00040901FC07BFF0000A0013FE021F902001A +:1011D000FD09020021097FF021F9050021094500E0 +:1011E0002909888031F9107021082020250043004A +:1011F000202070F875407755757740403E4A5E2B49 +:101200005E4A6B627F352F357F7C5B5E247B0E3AB6 +:10121000047E017E4A5E69063A2F3F6B7E46403F60 +:1012200041497F494102626B6B6B62026A6B147DBC +:10123000577D10413F55553D5751213F2D7F2A1273 +:101240002E0A775A505A770A2024137D5553707A04 +:101250002A7B021A437A4A525E2B5E424A415F352C +:101260003F555F417D14577D0E407F7F1B54167D97 +:101270001654493A407E575676423F427E7E427E21 +:10128000047E51377D3750127A1752761E127F55E1 +:101290007F145D7F557F557F7F553D577F5537784C +:1012A00017457F7F2B7B287B2B7F1E12127F12120C +:1012B0001E7F416B7F6B517F525A573A575A5200EB +:1012C0007F494949497F22122A7F2A1222000000C1 +:1012D00000002F000300033F123F163F1A1208249C +:1012E000323D2A020100003E41413E000A070A0841 +:1012F0003E084020000808080020001008041C2AAE +:101300001C243E20322A24222A1418143E2E2A128B +:101310001C2A12023A06142A14242A1C0024004013 +:101320002400081422141414221408022906122975 +:101330001E3E093E3F251A1E21213F211E3F252129 +:101340003F05011E21393F083F213F2110201F3F4B +:10135000043B3F20203F063F3F013E1E211E3F0928 +:10136000061E215E3F0936222519013F013F203F1D +:101370003F100F3F183F330C33033C03312D230044 +:101380007F41153E15417F000201024040400001AF +:101390000218243C3F241818242418243F182C2C0D +:1013A000043F0548543C3F0438003D00403D003FA9 +:1013B0000834013F003C1C383C04381824187C24B5 +:1013C0001818247C3C0804283C14043E243C203C8F +:1013D0003C100C3C303C2418244C503C24342C0849 +:1013E0003641007F004136080101011028101F011D +:1013F0000120203E10200000080025150F241C0CA1 +:10140000103804180C3828382828183C083C1828AC +:101410003820242C3C2C2C1C040808211D07083CD7 +:101420000306231E223E22120A3F320F3E0A3F0AC3 +:1014300024130E271E0222223E27120F25251021DB +:1014400019273F222E21160F241B0E251F052626A5 +:101450001E251D053F0408241F04202222251927CC +:10146000123B1620100F3C013E1F242421110F0CAB +:10147000031C1A3F1A091927222A2A382730320C4E +:1014800013053F25023F0E213F2025253F25251D21 +:1014900007201F3C3F203F20103E223E23110F21FA +:1014A00021180100010205020000000000000000F8 +:1014B000204000000000000020502000000000003C +:1014C00050300000000000006060000000000000DC +:1014D0000000181800000000000036360000000070 +:1014E0000000563600000000000201510909060004 +:1014F0000000005F00000000000000007F4141008C +:1015000041417F00000000000000003F0101010098 +:101510004040407E0000000000003F213D050700E4 +:1015200070505E427E000000000000007F634100BA +:1015300041637F00000000000808087F08080800D9 +:1015400008080808080808004444445F444444006C +:1015500041221408142241000808082A080808003B +:1015600014141414141414001434141C1416140039 +:10157000080814141422220022221414140808004B +:101580000205023C42422400002B2C782C2B000048 +:1015900000242A7A2F2A1200001C62322E23140003 +:1015A00020545E2541422000422512082452210089 +:1015B00020623E633E2302002056495522584000D7 +:1015C0000022147F142200001C2259554D120C00D9 +:1015D00000004A555529000004643C173C6404008F +:1015E00004643C1F3C6404001C22414141221C0055 +:1015F0001C3E7F7F7F3E1C001C225D555D221C002F +:101600000814224122140800081C3E7F3E1C0800DA +:101610007F41414141417F007F7F7F7F7F7F7F000E +:1016200040704C434C70400040707C7F7C704000A8 +:10163000010719611907010001071F7F1F0701003A +:1016400049221449142249000505057D05050500B8 +:10165000080808082A1C0800081C2A0808080800AE +:101660000004027F020400000010207F2010000010 +:10167000003E414141413E000000427F40000000E9 +:10168000006251514949460000224149494936000A +:1016900000302824227F2000002F45454545390091 +:1016A000003E494949493200000101611905030022 +:1016B00000364949494936000026494949493E0012 +:1016C0000020547E3414600020527F2A1A4A3000D1 +:1016D000003C4020041800001E2040200204180096 +:1016E00000104A4A2A100000000845454525180008 +:1016F00000482A3A4A400000004425153D45400074 +:1017000000247E145024000022527F0A484A3400EC +:1017100044344F443804180044344F443904190009 +:10172000002A5A4B4E5A0800002A5A4B4E5B0800BA +:10173000000814142241000000081414224504007B +:101740003F0004443F0404003F0004443F040500FC +:101750000020524242424000002052424342410097 +:1017600000245444475C040000245444475C0500B2 +:1017700000003F404040200000003F404140210029 +:1017800002020A563F02020002020A563F0203000A +:1017900004043F44545F440004043F44545F450044 +:1017A0000008093D4B4908000008093D4B490A0063 +:1017B000423A072254444400423A07225544450025 +:1017C0000002124E4B4A32000002124E4B4A3300C6 +:1017D00000101048483000000404022222221C009D +:1017E0000404022223221D000002021A25434100A4 +:1017F0000002021A2543450000205748484444008F +:101800000020574849444500120A2752503A240004 +:101810007F00205242424000304E38540F6478001E +:1018200024147F0422523C001824124E4224180033 +:101830007F002454543F44007F002454543F45000B +:101840007F002454563D4600023A4740413E040082 +:10185000023A4740413E0500023A4740433D0600F8 +:101860004030404D321060004030404D3211610038 +:101870004030404D32156200080402040810100088 +:101880000804020409101100080402040A151200D9 +:101890007F006A6A7E2A4A007F006A6A7F2A4B00BC +:1018A0007F006A6A7E2D4A00006A6A6A7F2A4A00BF +:1018B00030291D4B483C1000122A7F424042240030 +:1018C000304E38540F443800000A3E4B4A4A30002C +:1018D00000080E384614080004071C62030A0400BE +:1018E000001C483E241800001E04523F12120C0037 +:1018F000002050503E480000002050503F2444003B +:10190000001C51494A483000000F4241211E00008E +:101910000010696D4B49300024147F04023E4000E2 +:101920000010494D4B4930000028187E084438000B +:1019300024147F0442423C003049251F24543800BF +:101940004028255735284000100A2E5B724A48006F +:1019500040300C33404020000004443C140C000094 +:101960000001413D0905030000202010780400001B +:10197000001010087C0201000018484C28180000D4 +:101980000006424322120E00004048784840000002 +:101990002022223E22222000002828587C08000015 +:1019A0002222124A7F0202000042221F02427E00CF +:1019B0000042221F02427F000012121F721210000A +:1019C0000012121F721310000008444322120E006E +:1019D0000008444322120F00080742221E020200A0 +:1019E000080742221F0203000042424242427E0098 +:1019F0000042424243427F0002024F42221F020045 +:101A000002024F42231E030000454A4020100C00F2 +:101A100000454A4021100D00404222221A26400073 +:101A2000404222221B26410004043F4444544C00FF +:101A300004043F4445544D000001464020100F006F +:101A40000001464020110F000008444B2A120E00EE +:101A50000008444B2A120F00080A4A3E09090800F0 +:101A6000080A4A3E090809000018405820180000DA +:101A7000020C424C20100E00020C424C21100D00B2 +:101A80000405453D050504000405453D0504050024 +:101A900000007F080810000000007F080910010006 +:101AA0000444241F040404002022222222222000B5 +:101AB00040412515192700002022127B0612200024 +:101AC000404020100807000040300E00020C70005B +:101AD00040300E00020D710040300E00020D720009 +:101AE000003F484848444400003F484849444500B6 +:101AF000003F48484A4546000002424222120E007A +:101B00000002424223120F000002424222150E0040 +:101B1000080402040810200008040204091021002F +:101B2000080402040A1522002414447F041424002B +:101B30002414447F051425002414447F0615220034 +:101B400002021222520A0600002125294A42000000 +:101B500040704C435020400040442414083700009B +:101B60000008093F4949480000101C680818000097 +:101B700004040F74020A0600004048487840000040 +:101B8000202222223E20200000004454547C0000E9 +:101B900000424A4A4A4A7E000004454525150C0089 +:101BA000000F4040201F000040201E007F2010003A +:101BB00000007F4020100800007E424242427E002A +:101BC000000C4444241C00000006424222120E0075 +:101BD00010121E12127F12002022223A262220000A +:101BE0000001454525150F000041424020100C0022 +:101BF0000006424322120F000048281C48780000CB +:101C000000100C48380800000804040810100800F0 +:101C10000800000800000800040808080808080078 +:101C20000808080808080808C301BE01B801B00187 +:101C3000A901A2019A0195018F0188018101770113 +:101C40007001690165016001580152014C014701B1 +:101C500041013D01370132012B01270123011D0103 +:101C60001901160113010F010C01090106010301FD +:101C70000001F400EF00EA00060505070604090369 +:101C80000504090A08030303060305030305050306 +:101C900006040405050405040403040504090503FA +:101CA0003E0053656C656374205469700000000049 +:101CB00000003E5B4F5B3E3E6B4F6B3E1C3E7C3EEE +:101CC0001C183C7E3C181C577D571C1C5E7F5E1CFC +:101CD00000183C1800FFE7C3E7FF0018241800FFB6 +:101CE000E7DBE7FF30483A060E2629792926407FB0 +:101CF000050507407F05253F5A3CE73C5A7F3E1CBF +:101D00001C08081C1C3E7F14227F22145F5F005FAA +:101D10005F06097F017F006689956A606060606088 +:101D200094A2FFA29408047E040810207E201008CC +:101D3000082A1C08081C2A08081E101010100C1E67 +:101D40000C1E0C30383E3830060E3E0E06000000E9 +:101D5000000000005F00000007000700147F147FF0 +:101D600014242A7F2A12231308646236495620500D +:101D70000008070300001C2241000041221C002A29 +:101D80001C7F1C2A08083E080800807030000808E4 +:101D9000080808000060600020100804023E514955 +:101DA000453E00427F400072494949462141494D24 +:101DB000331814127F1027454545393C4A494931AB +:101DC00041211109073649494936464949291E002A +:101DD00000140000004034000000081422411414D4 +:101DE000141414004122140802015909063E415DF1 +:101DF000594E7C1211127C7F494949363E4141417E +:101E0000227F4141413E7F494949417F09090901FA +:101E10003E414151737F0808087F00417F41002007 +:101E200040413F017F081422417F404040407F02F3 +:101E30001C027F7F0408107F3E4141413E7F09091B +:101E400009063E4151215E7F091929462649494923 +:101E50003203017F01033F4040403F1F2040201FCD +:101E60003F4038403F63140814630304780403615F +:101E700059494D43007F414141020408102000416F +:101E800041417F04020102044040404040000307FA +:101E9000080020545478407F28444438384444444F +:101EA00028384444287F385454541800087E0902C6 +:101EB00018A4A49C787F0804047800447D40002086 +:101EC00040403D007F1028440000417F40007C04DA +:101ED0007804787C080404783844444438FC182496 +:101EE000241818242418FC7C08040408485454546A +:101EF0002404043F44243C4040207C1C2040201CFF +:101F00003C4030403C44281028444C9090907C4405 +:101F100064544C4400083641000000770000004142 +:101F200036080002010204023C2623263C1EA1A121 +:101F300061123A4040207A38545455592155557908 +:101F400041215454784121555478402054557940CA +:101F50000C1E527212395555555939545454593929 +:101F6000555454580000457C410002457D42000113 +:101F7000457C40F0292429F0F0282528F07C545590 +:101F800045002054547C547C0A097F493249494910 +:101F9000323248484832324A4848303A4141217A40 +:101FA0003A42402078009DA0A07D39444444393D08 +:101FB0004040403D3C24FF2424487E4943662B2F6B +:101FC000FC2F2BFF0929F620C0887E0903205454DA +:101FD00079410000447D413048484A32384040222F +:101FE0007A007A0A0A727D0D19317D2629292F2857 +:101FF000262929292630484D402038080808080895 +:10200000080808382F10C8ACBA2F102834FA00007E +:102010007B000008142A142222142A140895002296 +:102020000095AA005500AAAA55AA55AA000000FFCB +:1020300000101010FF00141414FF001010FF00FF18 +:102040001010F010F0141414FC001414F700FF002A +:1020500000FF00FF1414F404FC141417101F1010D8 +:102060001F101F1414141F00101010F000000000A7 +:102070001F101010101F10101010F010000000FFA3 +:10208000101010101010101010FF10000000FF149E +:102090000000FF00FF00001F10170000FC04F414F4 +:1020A000141710171414F404F40000FF00F71414AC +:1020B0001414141414F700F7141414171410101F28 +:1020C000101F141414F4141010F010F000001F105E +:1020D0001F0000001F14000000FC140000F010F0AE +:1020E0001010FF10FF141414FF141010101F000024 +:1020F0000000F010FFFFFFFFFFF0F0F0F0F0FFFF37 +:10210000FF0000000000FFFF0F0F0F0F0F384444C7 +:1021100038447C2A2A3E147E02020606027E027E93 +:102120000263554941633844443C04407E201E20EC +:1021300006027E020299A5E7A5991C2A492A1C4C91 +:102140007201724C304A4D4D303048784830BC6294 +:102150005A463D3E494949007E0101017E2A2A2A0C +:102160002A2A44445F444440514A444040444A512E +:10217000400000FF0103E080FF000008086B6B08CF +:102180003612362436060F090F0600001818000014 +:10219000001010003040FF0101001F01011E001956 +:1021A0001D1712003C3C3C3C0000000000000000F9 +:1021B00000240027002A0000000000250028002B32 +:1021C0000000000000230026002900040404040489 +:1021D00004040402020202020203030303030301D4 +:1021E00002040810204080010204081020010204AB +:1021F000081020AED5F0A83FD300408D14A1C8DA56 +:102200001281CFD9F1DB40A4A6AF200021007F22AC +:102210000007506C65617365207761697400414403 +:10222000433A200074656D703A2000536574206D48 +:102230006561737572656400537465703A2000FFC0 +:10224000FFFFFFFFFF80038670800380038670809E +:10225000039FF3E1309FF39FF3E1309FF398330145 +:10226000CC9833983301CC9833983387C0983398FF +:1022700033E1C098339833E1C098339FF398C09FFF +:10228000F39FF398C09FF3800366CC8003800366BE +:10229000CC8003FFFF010CFFFFFFFF01001FFF8148 +:1022A0000061301F3F873CE6FC8733873CE6FC87B4 +:1022B000F3F8039E0F1F03F8039E0F1F03E13CFE7C +:1022C0000C07CFE13CFE0C07CF99033E3086C3E6F6 +:1022D000CF380F9EF3E6CF380F9EF39E0327CC81B5 +:1022E000039E0327CC8103E0FFE10CE6CFE0FFE192 +:1022F0000CE6CF9803060000FF9803060000FFFFDE +:10230000FF1EF0F8038003663099C380036630999E +:10231000C39FF3010CF8FF9FF3010CF8FF983339CA +:102320003C01CF9833393C01CF9833FF0C793F986B +:10233000333ECCE0F398333ECCE0F39FF33E00987D +:10234000CF9FF33E0098CF80033E30E7C380033E2B +:1023500030E7C3FFFFFFFFFFFFFFFFFFFFFFFF307F +:1023600030300076312E377433005600560043006B +:102370000FE01FC01FC03F803FF87FF07FE007C025 +:1023800007800F000E001C001800100014A03FF082 +:102390007FF8E01C6E18EC1C68186018E01C605890 +:1023A000E01C7FF83FF014A04552524F5200484FB6 +:1023B0004C44004845415400574F524B5900424F3E +:1023C0004F535400534C454550004F4646000000C3 +:1023D0003BEC7BEE63E663E663E663E663E663E6B7 +:1023E00063666226600660067FFE3FFC0000010215 +:1023F00004081020408000000008000201000003D3 +:1024000004070000000000000000372811241FBE50 +:10241000CFEFD8E0DEBFCDBF12E0A0E0B1E0ECE24C +:10242000FEE602C005900D92A63CB107D9F728E060 +:10243000A6ECB2E001C01D92AF30B207E1F712E1A5 +:10244000C6E0D2E104C02197FE010E94F536C530F6 +:10245000D107C9F70E94EC280C9414370C940000A3 +:102460004F925F926F927F928F929F92AF92BF92A4 +:10247000CF92DF92EF92FF920F931F93CF93DF9350 +:1024800000D000D0CDB7DEB74B015C0129013A0185 +:102490006701780120E030E0A9010E94983287FDB1 +:1024A000A6C020E030E0A901C301B2010E94983229 +:1024B00087FD9DC020E030E0A901C801B6010E945F +:1024C000983287FD94C081E02091D9073091DA07D6 +:1024D0002130310509F080E08093FA078092BF0730 +:1024E0009092C007A092C107B092C2074092C30762 +:1024F0005092C4076092C5077092C607C092C70782 +:10250000D092C807E092C907F092CA076091ED0720 +:102510007091EE078091EF079091F0070E949D3235 +:1025200020E030E04AE754E40E949A3469837A83D9 +:102530008B839C838092CB079092CC07A092CD078F +:10254000B092CE079B01AC01C301B2010E94FE32E2 +:102550002B013C014092CF075092D0076092D107E7 +:102560007092D20729813A814B815C81C701B60103 +:102570000E949A346B017C01C092D307D092D40799 +:10258000E092D507F092D6078091D7079091D807AF +:10259000019769F5A501940160E070E0CB010E940C +:1025A0002D346093CB077093CC078093CD07909325 +:1025B000CE07A301920160E070E0CB010E942D34B0 +:1025C0006093CF077093D0078093D1079093D20781 +:1025D000A701960160E070E0CB010E942D3460936A +:1025E000D3077093D4078093D5079093D6070F90A5 +:1025F0000F900F900F90DF91CF911F910F91FF904F +:10260000EF90DF90CF90BF90AF909F908F907F9092 +:102610006F905F904F90089580389105B0F46034CA +:10262000710598F4EEEEF3E290E1969FD001A07868 +:102630001124A80F6770E60FF11D9491AA5EBC4F9C +:10264000442321F08C91982B9C93089590958C9124 +:102650009823FACFDF92EF92FF920F931F93CF93BD +:10266000DF937C01D22E8B01040F111DEB0177FF4C +:1026700002C0D0E0C0E0C8010134110514F080E4CC +:1026800090E0C817D9073CF44D2DBE01C7010E9448 +:102690000C132196F0CFDF91CF911F910F91FF90F6 +:1026A000EF90DF900895CF92DF92EF92FF920F9319 +:1026B0001F93CF93DF936B01122FEC017C01E40E8B +:1026C000F11CCE15DF0544F4202F412FB601CE01B9 +:1026D0000E942A132196F5CFDF91CF911F910F9180 +:1026E000FF90EF90DF90CF9008952F923F924F92FE +:1026F0005F926F927F928F929F92AF92BF92CF9292 +:10270000DF92EF92FF920F931F93CF93DF9300D04E +:102710001F92CDB7DEB7C22ED12C9601280F391FDC +:1027200037FD4FC0803891050CF04BC0E9824A015B +:102730007B013C01402E512C160127E0220E311C5A +:1027400093E0359427949A95E1F78B01B12CA12C55 +:102750001B821A82EA81FB8183E0F595E7958A95D1 +:10276000E1F7EA0DFB1DE80DF91DE4918A819B81DB +:102770008770992720E830E002C0359527958A9523 +:10278000E2F7C901F0E0E223F923EF2B41F04981A0 +:10279000B8018A819B81860D971D0E940C138A8146 +:1027A0009B8101969B838A838C159D059CF2A20CCC +:1027B000B31C0F5F1F4FC8018E199F098415950523 +:1027C0003CF20F900F900F90DF91CF911F910F91DE +:1027D000FF90EF90DF90CF90BF90AF909F908F9041 +:1027E0007F906F905F904F903F902F9008950F9340 +:1027F0001F93CF93DF93EC018B0140E001960E9481 +:102800000C1340E0B801CE0101970E940C13B801EF +:102810006F5F7F4F40E0CE010E940C13B801615002 +:10282000710940E0CE010E940C1340E0B801CE01D6 +:10283000DF91CF911F910F910C940C1380E0E6E192 +:10284000F3E081118FEF0024819381938193819331 +:102850000394D1F7EBEFF7E01786168615861486FA +:1028600008956F927F928F929F92AF92BF92CF9274 +:10287000DF92EF92FF920F931F93CF93DF938038F5 +:1028800091050CF057C0603471050CF053C07B010A +:1028900037E0E322FF2433E0759567953A95E1F739 +:1028A000DB01B695BA2FAA27B795A7955D01C0E8B9 +:1028B000AC0EB11CA80EB91EA80FB91FAA5EBC4F62 +:1028C00000E810E0081B190B90E080E0E8E0F0E081 +:1028D0004F018E189F0830E0FA01E80FF91FC491EC +:1028E0007D906D01D1E0CD1AD1080E2C01C0CC0F26 +:1028F0000A94EAF77C2AE6017882E114F10499F05F +:102900006730710581F0E491EC01CA0DDB1DCA5EF0 +:10291000DC4FF0E0082C02C0F595E7950A94E2F749 +:10292000F881EF2BE8830196821793071CF40817B0 +:10293000190791F6DF91CF911F910F91FF90EF90C2 +:10294000DF90CF90BF90AF909F908F907F906F90CF +:102950000895AF92BF92CF92DF92EF92FF920F93C2 +:102960001F93CF93DF936C017B018B01040F151F25 +:10297000EB015E01AE18BF08C017D10759F069918D +:10298000D601ED91FC910190F081E02DC6010995F1 +:10299000892B79F7C501DF91CF911F910F91FF909E +:1029A000EF90DF90CF90BF90AF900895FC01538DD2 +:1029B000448D252F30E0842F90E0821B930B541719 +:1029C00010F0CF96089501970895FC01918D828DA6 +:1029D000981761F0A28DAE0FBF2FB11D5D968C913F +:1029E000928D9F5F9F73928F90E008958FEF9FEF7E +:1029F0000895FC01918D828D981731F0828DE80F3A +:102A0000F11D858D90E008958FEF9FEF0895FC01F3 +:102A1000918D228D892F90E0805C9F4F821B9109C0 +:102A20008F739927089586E197E00E94071521E0AA +:102A3000892B09F420E0822F089580E090E0892B13 +:102A400029F00E94131581110C9400000895FC01D7 +:102A5000A48DA80FB92FB11DA35ABF4F2C91848DFF +:102A600090E001968F739927848FA689B7892C935C +:102A7000A089B1898C91837080648C93938D848DAF +:102A8000981306C00288F389E02D80818F7D8083B2 +:102A90000895EF92FF920F931F93CF93DF93EC0172 +:102AA00081E0888F9B8D8C8D98131AC0E889F989F5 +:102AB000808185FF15C09FB7F894EE89FF896083F8 +:102AC000E889F98980818370806480839FBF81E079 +:102AD00090E0DF91CF911F910F91FF90EF900895BB +:102AE000F62E0B8D10E00F5F1F4F0F731127E02E96 +:102AF0008C8D8E110CC00FB607FCFACFE889F989CE +:102B0000808185FFF5CFCE010E942715F1CFEB8D97 +:102B1000EC0FFD2FF11DE35AFF4FF0829FB7F894A1 +:102B20000B8FEA89FB8980818062CFCFCF93DF93BF +:102B3000EC01888D8823B9F0AA89BB89E889F989D5 +:102B40008C9185FD03C0808186FD0DC00FB607FC0A +:102B5000F7CF8C9185FFF2CF808185FFEDCFCE013D +:102B60000E942715E9CFDF91CF910895833081F03E +:102B700028F4813099F08230A9F008958730A9F0C7 +:102B80008830C9F08430B1F4809180008F7D03C01B +:102B9000809180008F7780938000089584B58F772F +:102BA00084BD089584B58F7DFBCF8091B0008F7771 +:102BB0008093B00008958091B0008F7DF9CFCF93BE +:102BC000DF93282F30E0F901EA50FC4D8491F901A0 +:102BD000E152FE4DD491F901E553FE4DC491CC2351 +:102BE000A1F081110E94B615EC2FF0E0EE0FFF1F4F +:102BF000EF53FE4DA591B491EC91ED2381E090E06F +:102C000009F480E0DF91CF91089580E090E0FACF61 +:102C10001F93CF93DF93282F30E0F901EA50FC4D4A +:102C20008491F901E152FE4DD491F901E553FE4D35 +:102C3000C491CC23A9F0162F81110E94B615EC2F58 +:102C4000F0E0EE0FFF1FE954FE4DA591B4918FB750 +:102C5000F894EC91111108C0D095DE23DC938FBF5E +:102C6000DF91CF911F910895DE2BF8CFCF93DF93A3 +:102C700090E0FC01E152FE4D249185539E4DFC01F4 +:102C800084918823C9F090E0880F991FFC01E355D7 +:102C9000FE4DA591B491FC01E954FE4DC591D4912E +:102CA00061110DC09FB7F8948C91209582238C936D +:102CB0008881282328839FBFDF91CF9108956230B8 +:102CC00051F49FB7F8943C91822F809583238C9385 +:102CD000E8812E2BEFCF8FB7F894EC912E2B2C930D +:102CE0008FBFEACFCF93DF93EC0161E089E00E94D0 +:102CF0003616209731F460E089E0DF91CF910C9493 +:102D00000816CF3FD10511F461E0F6CFEFEFF3E203 +:102D1000E491E33029F140F4E130B1F0E230D9F050 +:102D2000C038D1058CF7E7CFE73021F1E83051F119 +:102D3000E430B1F780918000806280938000D0936E +:102D40008B00C0938A0004C084B5806884BDC7BD71 +:102D5000DF91CF91089584B5806284BDC8BDF8CF5E +:102D600080918000806880938000D0938900C09318 +:102D70008800EECF8091B00080688093B000C0934F +:102D8000B300E6CF8091B00080628093B000C09322 +:102D9000B400DECF3FB7F8948091E0029091E10259 +:102DA000A091E202B091E30226B5A89B05C02F3F97 +:102DB00019F00196A11DB11D3FBFBA2FA92F982F61 +:102DC0008827BC01CD01620F711D811D911D42E05C +:102DD000660F771F881F991F4A95D1F708958F9224 +:102DE0009F92AF92BF92CF92DF92EF92FF924B01F0 +:102DF0005C010E94CA166B017C010E94CA166C1904 +:102E00007D098E099F09683E734081059105A8F3ED +:102E100021E0821A9108A108B10888EEC80E83E06B +:102E2000D81EE11CF11C81149104A104B10429F7FE +:102E3000FF90EF90DF90CF90BF90AF909F908F90DA +:102E400008952FB7F8946091DC027091DD028091B3 +:102E5000DE029091DF022FBF089584E98093BC00C9 +:102E60008091BC0084FDFCCF08958093BB0084E872 +:102E70008093BC008091BC0087FFFCCF089584EA5A +:102E80008093BC008091BC0087FFFCCF88E70C9446 +:102E900035170E943F1780E48093BB0084E880933D +:102EA000BC00E6E1F3E09091BC0097FFFCCF91916C +:102EB0009093BB008093BC0097E0E631F90799F747 +:102EC0008091BC0087FFFCCF0C942D17CF93C82FA7 +:102ED0000E943F1780E00E9435178C2F0E94351703 +:102EE000CF910C942D17480F592F511D4138510582 +:102EF00014F040E850E0481BFB0177FD379633E0C3 +:102F0000F595E7953A95E1F7F695FE2FEE27F795BB +:102F1000E795E80FF91FEA5EFC4F6770772781E0BD +:102F200090E001C0880F6A95EAF7382F213041F40C +:102F3000415078F08191DF011197832B8C93F8CF6A +:102F40008095415030F09191DF01119798239C9327 +:102F5000F8CF0895CF92DF92EF92FF920F93CF9325 +:102F6000DF936C017B01C42FD22F202F0E94731797 +:102F7000B7016D0F711D61507109603471052CF43A +:102F8000202F4C2FC6010E947317202F4D2FB70101 +:102F9000C6010E942A13C6018C0F911D202F4D2FB0 +:102FA000B7010197DF91CF910F91FF90EF90DF90E4 +:102FB000CF900C942A132F923F924F925F926F9270 +:102FC0007F928F929F92AF92BF92CF92DF92EF92B9 +:102FD000FF920F931F93CF93DF93CDB7DEB72A975E +:102FE0000FB6F894DEBF0FBECDBF9A8389836A30D7 +:102FF00061F5DC0152968C91B8E08B9F9001112411 +:10300000E981FA8186859785820F931F9787868746 +:103010001586148681E090E02A960FB6F894DEBFFC +:103020000FBECDBFDF91CF911F910F91FF90EF9019 +:10303000DF90CF90BF90AF909F908F907F906F90D8 +:103040005F904F903F902F9008956D3019F3298134 +:103050003A813A872987D9011C96AD90BC90B0E897 +:10306000AB16B1040CF07BC0F901C684D784F0E440 +:10307000CF16D1040CF073C0D90152966C905297C0 +:1030800045E09501649E200D311D11241216130692 +:103090000CF065C0262C312C910153E0220F331F18 +:1030A0005A95E1F72C0D3D1D121613060CF057C072 +:1030B0005196BC91BB83E985FA85F089FC83649FB6 +:1030C000B00111249B012355334E3A832983712C7F +:1030D000E981FA818491F5E07F1201C080E0460128 +:1030E00038E0532E282F30E03E832D834C8080FF24 +:1030F0004B80411004C03B818C813817E1F010E017 +:1031000000E00615C0F4D501A00FB11FB887AF834A +:10311000F12CE12CE61460F4B701680D791D442D03 +:103120008F8198850E940C13BFEFEB1AFB0AF2CF38 +:103130000F5F1F4FE6CF8D819E81959587955A949D +:10314000820C931C5110CECF7394E981FA81319691 +:10315000FA83E983A20CB31CF6E07F12B9CFA985EC +:10316000BA8552962C915297422F50E01C968D9121 +:103170009C91B6E02B9F800D911D1124E985FA8565 +:10318000958784872389222309F444CF6AEF640357 +:103190009001659F300D112420583F4F28173907A3 +:1031A0000CF038CFDF010190F081E02D0190F0812B +:1031B000E02D6AE0CD0109952DCF0F931F93CF939A +:1031C000DF938C01D0E0C0E0F801EC0FFD1F6491AB +:1031D000662341F08BEF97E00E94DB17892B11F0FB +:1031E0002196F2CFCE01DF91CF911F910F910895DB +:1031F000682F8BEF97E00C94DB17089590E080E048 +:10320000089580917A00806980937A008EE480939B +:103210007C0061E070E080E090E00E94EF1683B7F0 +:10322000817F826083BF80E130E020E093B79160CE +:1032300093BF889593B79E7F93BF90917A0096FD38 +:10324000FCCF4091780050917900240F351F8150B8 +:1032500069F780917A008F7780937A0084E03695C1 +:1032600027958A95E1F750E040E064EB7BE281E14D +:1032700090E00E94D233C901089588EC80937C00CD +:1032800080917A00806880937A0065E070E080E049 +:1032900090E00E94EF1680917A00806480937A001B +:1032A00080917A0086FDFCCF609178007091790062 +:1032B0006A54714090E080E00E949D3226EF38E22F +:1032C0004CE95FE30E949A34089590917A009069E6 +:1032D00090937A008E50806480937C0083B7817FC6 +:1032E000826083BF20E290E080E033B7316033BF7B +:1032F000889533B73E7F33BF30917A0036FDFCCFDF +:103300004091780050917900840F951F215069F702 +:1033100020917A002F7720937A0025E09695879563 +:103320002A95E1F708958FE00E946519A091E702C0 +:10333000B091E8029C010E941E340E949F3228E551 +:1033400039E743E353E40E949A340E941335CB01DA +:1033500008952091F50230E0E1E7F2E090E080E0AE +:10336000AF01415752404217530724F44191840F53 +:10337000911DF6CF08958091EE02882369F086E0D2 +:103380000E94DF15892B41F06AE070E080E090E058 +:103390000E94EF161092EE0208950F931F93CF93A1 +:1033A00080914801882399F0CFEF0FEE11E061E0A2 +:1033B00085E00E940816C8010197F1F760E085E0FA +:1033C0000E940816C8010197F1F7C15081F7CF910B +:1033D0001F910F9108952F923F924F925F926F929B +:1033E0007F928F929F92AF92BF92CF92DF92EF9295 +:1033F000FF920F931F93CF93DF9310E000E0D0E094 +:10340000C0E03EE3E32EF12C40ECC42ED12CAA24E4 +:10341000A394B12C60E2662E712C70E4272E312C1F +:103420004C2E86E00E94DF1521E0892B09F020E078 +:103430002093EE02F092F402E092F302D092F202B4 +:10344000C092F102B092F002A092EF0282E890E006 +:10345000909300038093FF028091FF0290910003FC +:1034600095958795582E9FE1591243C0F092F4022A +:10347000E092F302D092F202C092F102B092F00216 +:10348000A092EF02EEEBF0E0F0930003E093FF0276 +:103490009FE5592E0E941E1482E080930D08109320 +:1034A000080800930708E0E3F0E0F0930A08E093CF +:1034B00009088EE50E94F818109208081092070873 +:1034C00070920A0860920908912C812C841438F5B6 +:1034D00080911503F40196E0989FE00DF11D1124F1 +:1034E000E05BFE4F80810E94F818EFEF8E1A9E0A73 +:1034F000EDCFF0E65F12CECFF092F402E092F3024D +:10350000D092F202C092F102B092F002A092EF02C9 +:10351000309200032092FF0280E2582EBBCF10931E +:1035200008080093070870920A0860920908852D20 +:103530000E94F8180E94BB190E94491786E00E9459 +:10354000DF15892B09F088CF8091EE02811184CF9D +:1035500080901503F6E08F9E40011124C401805B2A +:103560009E4F4C01FC01EC0FFD1F50820E94CD19B3 +:103570006AE070E080E090E00E94EF162196005F24 +:103580001F4FC530D10509F04BCFF4011582DF91F3 +:10359000CF911F910F91FF90EF90DF90CF90BF9050 +:1035A000AF909F908F907F906F905F904F903F90E3 +:1035B0002F9008953F924F925F926F927F928F92D9 +:1035C0009F92AF92BF92CF92DF92EF92FF920F93B2 +:1035D0001F93CF93DF93CDB7DEB72E970FB6F89436 +:1035E000DEBF0FBECDBF80911203882309F4A5C1B1 +:1035F0001092B3071092B4071092B5071092B60755 +:103600008090B3079090B407A090B507B090B6072C +:10361000C0900803D0900903E0900A03F0900B03D8 +:10362000A7019601C501B4010E942D342B013C0174 +:1036300020E030E0A9010E94423518160CF0A0C12C +:10364000C301B2010E94133580914901882309F416 +:10365000B8C1C092BB07D092BC07E092BD07F09200 +:10366000BE07E12CF12C00EA10E420E030E040E459 +:1036700050E46E31710540F0E12CF12C00E81FE3BD +:1036800020E030E040E05FE360E070E080E391E460 +:103690000E9430128091F907882309F42AC10E9400 +:1036A00021176D837E838F8398878091E1079091A6 +:1036B000E207A091E307B091E4074D815E816F813D +:1036C0007885481B590B6A0B7B0B8091ED07909115 +:1036D000EE07A091EF07B091F007481759076A0766 +:1036E0007B0708F406C1E091DB07F091DC078081DD +:1036F0009181A281B38189839A83AB83BC83E0915A +:10370000DF07F091E0079C01AD016081718182814A +:1037100093810E942D344B015C012091E907309187 +:10372000EA074091EB075091EC0769817A818B8120 +:103730009C810E942D346B017C012091CF07309138 +:10374000D0074091D1075091D207C501B4010E9422 +:10375000FE322091E5073091E6074091E70750914E +:10376000E8070E942E342B013C014092E50750925D +:10377000E6076092E7077092E8073090FA07311089 +:103780001AC02091CB073091CC074091CD075091C2 +:10379000CE07C701B6010E94FE329B01AC01C301F6 +:1037A000B2010E942D346093E5077093E607809381 +:1037B000E7079093E8074090E5075090E607609090 +:1037C000E7077090E8071091F5079091F6079E873C +:1037D000A091F707AD870091F807212F392F4A2FC5 +:1037E000502FC301B2010E94423518160CF0CCC014 +:1037F000812F9E85AD85B02F8093E5079093E607D6 +:10380000A093E707B093E807332009F4D6C02091CE +:10381000CB073091CC074091CD075091CE07C50121 +:10382000B4010E94FE324B015C012091D30730911C +:10383000D4074091D5075091D607C701B6010E9421 +:10384000FE329B01AC016091E5077091E607809123 +:10385000E7079091E8070E942D34A50194010E948A +:103860002E346B017C019B01AC01612F7E858D851F +:10387000902F0E94983287FD18C01091F107909107 +:10388000F2079E87A091F307AD870091F407212FDF +:10389000392F4A2F502FB601C7010E94983287FD59 +:1038A00004C01C2DDE86ED860F2DE091DD07F09122 +:1038B000DE07812F9E85AD85B02F80839183A28303 +:1038C000B38389819A81AB81BC818093E90790930E +:1038D000EA07A093EB07B093EC078D819E81AF813F +:1038E000B8858093E1079093E207A093E307B09334 +:1038F000E4076091B7077091B8078091B90790917C +:10390000BA070E940C35CB012E960FB6F894DEBF95 +:103910000FBECDBFDF91CF911F910F91FF90EF9020 +:10392000DF90CF90BF90AF909F908F907F906F90DF +:103930005F904F903F900C947216809111036091AC +:1039400044017091450181110EC080910603909150 +:10395000070320911003BC01222329F06091430149 +:10396000680F792F711D90E080E00E949D32609376 +:10397000B3077093B4078093B5079093B60740CE12 +:10398000C301B20190585ECE8091F1079091F20789 +:10399000A091F307B091F40789879A87AB87BC871A +:1039A0009C01AD01C301B2010E94983287FF2CCF68 +:1039B00089859A85AB85BC851FCF812C912C5401BC +:1039C00034CF20E030E040E05FE3C701B6010E9461 +:1039D0002E349B01AC01C501B4010E94423518167A +:1039E0004CF41092B7071092B8071092B9071092D2 +:1039F000BA077FCF80E090E0AFE7B3E48093B707EA +:103A00009093B807A093B907B093BA0772CF4F92BB +:103A10005F926F927F928F929F92AF92BF92CF925E +:103A2000DF92EF92FF92CF93DF938090E902909024 +:103A3000EA02A090EB02B090EC02C0911503D0E036 +:103A4000C501B4010E940C356B017C0120E030E01F +:103A500048E453E4C501B4010E94983293E0CC0FCE +:103A6000DD1F9A95E1F7CE5FDE4F87FF31C02881D9 +:103A7000398150E040E02551310941095109C70120 +:103A8000B6010E94D13628EC30E040E050E00E94C0 +:103A9000D233CA01B9016B5E7F4F8F4F9F4F0E9497 +:103AA0009F32609308037093090380930A039093F5 +:103AB0000B03DF91CF91FF90EF90DF90CF90BF90FD +:103AC000AF909F908F907F906F905F904F900895F0 +:103AD0004A805B80712C612C20E030E04CE853E49C +:103AE000C501B4010E94983287FF1FC08880998069 +:103AF000B12CA12CA7019601285C3109410951097B +:103B0000C301B201681979098A099B090E94D1365B +:103B100020E530E040E050E00E94D233CA01B90114 +:103B2000680D791D8A1D9B1DBACF2C813D8150E007 +:103B300040E02419350946095709C701B601685103 +:103B40007140810991090E94D13620E530E040E0C2 +:103B500050E00E94D233CA01B901640D751D861D63 +:103B6000971D9DCFFC0101900020E9F73197AF012F +:103B7000481B590BBC018BEF97E00C94A9148F9252 +:103B80009F92AF92BF920F931F93CF93DF93CDB7C6 +:103B9000DEB7A1970FB6F894DEBF0FBECDBF19A256 +:103BA000423008F44AE08E010F5D1F4F842E912CA5 +:103BB000B12CA12CA50194010E94FC33E62FB90180 +:103BC000CA01EA30F4F4E05DD801EE938D01232BB5 +:103BD000242B252B79F790E080E0109719F0CD0188 +:103BE0000E94B21DA1960FB6F894DEBF0FBECDBFE6 +:103BF000DF91CF911F910F91BF90AF909F908F90C9 +:103C00000895E95CE1CFCF92DF92EF92FF92CF93DC +:103C1000DF9397FF19C06B017C018DE20E94F818B9 +:103C2000EC0166277727CB016C197D098E099F0966 +:103C30004AE00E94BF1D8C0F9D1FDF91CF91FF9026 +:103C4000EF90DF90CF9008954AE0DF91CF91FF9001 +:103C5000EF90DF90CF900C94BF1D4F925F926F92C8 +:103C60007F928F929F92AF92BF92CF92DF92EF920C +:103C7000FF920F931F93CF936B017C01742EAC01C5 +:103C80009B010E949735882399F086EB92E0CF91B3 +:103C90001F910F91FF90EF90DF90CF90BF90AF906A +:103CA0009F908F907F906F905F904F900C94B21D7B +:103CB00046015701E894B7F82FEF3FEF4FE75FE772 +:103CC000C501B4010E94973581110DC02FEF3FEF60 +:103CD0004FE75FE7C501B4010E94983218161CF443 +:103CE0008AEB92E0D4CF2FEF3FEF4FE75FE4C701BD +:103CF000B6010E94423518161CF48EEB92E0C7CF35 +:103D00002FEF3FEF4FE75FECC701B6010E949832FB +:103D100087FDF3CF20E030E0A901C701B6010E9482 +:103D2000983210E000E087FF08C08DE20E94F8188A +:103D30008C01F7FAF094F7F8F094C0E060E070E0DE +:103D400080E09FE37C1641F020E030E040E251E467 +:103D50000E949A34CF5FF6CFA70196010E942E34BD +:103D60002B013C010E9413354B015C014AE00E948B +:103D7000BF1D7C01E00EF11ECC23B1F1C501B401E1 +:103D80000E949D329B01AC01C301B2010E942D34FF +:103D90004B015C018EE20E94F818E80EF91EC1503A +:103DA00018F120E030E040E251E4C501B4010E9486 +:103DB000FE322B013C010E9413354B01B12CA12C8A +:103DC0004AE0C501B4010E94BF1DE80EF91EC501FD +:103DD000B4010E949D329B01AC01C301B2010E945B +:103DE0002D344B015C01DBCFC701CF911F910F91A7 +:103DF000FF90EF90DF90CF90BF90AF909F908F900B +:103E00007F906F905F904F900895CF92DF92EF92E6 +:103E1000FF920F931F93CF93DF93C82F81E0DC2F86 +:103E2000D827D0930C08C0930B0880930D080C2F53 +:103E30002EE046E661E370E081E090E00E94AA1780 +:103E40002091130330911403253F81E03807B8F423 +:103E5000A4E6B0E00E941E3424EF31E040E050E0E0 +:103E60000E94D233BA01A9014E5F5F4F6F4F7F4F5F +:103E70002EE061E370E081E090E00E9453136091D6 +:103E8000B3077091B4078091B5079091B6070E946F +:103E90000C359B01AC01A4E6B0E00E94F13334EF95 +:103EA000C32EDD24D394E12CF12CA70196010E94AE +:103EB000D233DA01C9010296A11DB11D02970C2F60 +:103EC0002DE043E062E370E00E9453136091B3077A +:103ED0007091B4078091B5079091B6070E940C3598 +:103EE0009B01AC01A4E6B0E00E94F133A70196016A +:103EF0000E94D233DA01C9010296A11DB11D0397B8 +:103F000024E045E06CE370E00E9453136091B30736 +:103F10007091B4078091B5079091B6070E940C3557 +:103F20009B01AC01A4E6B0E00E94F133A701960129 +:103F30000E94D23389019A010E5F1F4F2F4F3F4FCE +:103F40000150110941E3E42EF12C4D2FB701C801B6 +:103F50000E940C138FEFE81AF80A8DE3E816F104BB +:103F6000A1F76091B3077091B4078091B507909164 +:103F7000B6070E940C359B01AC01A4E6B0E00E949C +:103F8000F13324EF31E040E050E00E94D233DA0117 +:103F9000C9010296A11DB11D0397ED2E04E025E095 +:103FA00040EF51E16BE370E00E9475130C2F2EE09F +:103FB00047E161E370E088E690E00E94AA17609113 +:103FC000B7077091B8078091B9079091BA070E941E +:103FD0000C359B01AC012F5F310941095109A7E163 +:103FE000B0E00E94F133CC24C394DD24DA94ED2CAC +:103FF000FD2CA70196010E94D233422F2EE061E3EF +:1040000070E088E690E00E945313C0930C08D093B0 +:104010000B0882E090E0909308088093070807E37C +:1040200010E010930A08009309086091B30770919B +:10403000B4078091B5079091B60740E00E942D1E0D +:1040400088EF0E94F8188EEE91E10E94DD1889E653 +:1040500090E0909308088093070810930A08009353 +:1040600009086091B7077091B8078091B9079091DE +:10407000BA070E940C359B01AC012F5F3109410941 +:104080005109A4E6B0E00E94F133A70196010E9415 +:10409000D233CA01B9010E94031E8CEE91E10E9445 +:1040A000DD18D0930C08C0930B08DF91CF911F91BE +:1040B0000F91FF90EF90DF90CF9008956F927F92D5 +:1040C0008F929F92AF92BF92CF92DF92EF92FF9228 +:1040D0000F931F93CF93DF93B090150377247394BE +:1040E000B11001C0712C809142018150990B109246 +:1040F000F4021092F302880F991F9093F2028093BA +:10410000F10281E090E09093F0028093EF028B2D1A +:1041100090E0880F991F909300038093FF0286E040 +:104120000E94DF1521E0892B09F020E02093EE02A8 +:10413000FF24F39472E0972EE6E08E2EFCE0CF2E63 +:10414000D12C0E941E14C091FF02D0910003D5957E +:10415000C795EC2E8E011127C801870D911D77FCA4 +:104160009A958B199109712C97FD06C083309105A2 +:1041700014F082E090E0782EF0920C0810920B0878 +:1041800090920D08109208081092070810920A08E1 +:104190001092090882EA9CE10E94DD1810920C0836 +:1041A000F0920B081092080810920708A72C072C11 +:1041B000000CBB08C501019654E0880F991F5A9561 +:1041C000E1F790930A088093090880EA9CE10E9435 +:1041D000DD186C2E671890E080E098012A193B09E1 +:1041E0005901209142018C010F5F1F4F6216D0F4DC +:1041F000D0920808C0920708980144E0220F331FAC +:104200004A95E1F730930A08209309088A0D9B1D0F +:10421000889E9001899E300D1124C901805B9E4FBC +:104220000E94B21DC801639403301105D1F60E94AB +:10423000BB190E94491786E00E94DF15892BB9F44B +:104240008091EE02811113C00E94CD19E0921503F6 +:10425000DF91CF911F910F91FF90EF90DF90CF9062 +:10426000BF90AF909F908F907F906F900895BC2EDD +:1042700068CF0E940F371F93CF93DF93EC01162F67 +:104280000E94BC33181739F0612FCE01DF91CF9116 +:104290001F910C94C433DF91CF911F910895AF9279 +:1042A000BF92CF92DF92EF92FF920F931F93CF9323 +:1042B000DF936091470182E090E00E943B21609192 +:1042C000460183E090E00E943B216091450184E03B +:1042D00090E00E943B216091440185E090E00E94C3 +:1042E0003B216091430186E090E00E943B21609178 +:1042F0004C0187E090E00E943B2160914B0188E0F7 +:1043000090E00E943B2160914A0189E090E00E9488 +:104310003B21609180018AE090E00E943B21609106 +:1043200049018BE090E00E943B21609148018CE0C4 +:1043300090E00E943B21609115038DE090E00E9487 +:104340003B21609142018EE090E00E943B21609110 +:104350004E018FE090E00E943B216091ED0280E1F0 +:1043600090E00E943B2160910D0381E190E00E946A +:104370003B2182E1E82EF12C10E006E08091420121 +:104380001817B8F5109F60011124D0E0C0E0FE01BD +:10439000EC0DFD1DE05BFE4F6081C7018C0F9D1F82 +:1043A0000E943B212196C630D10589F7670186E03E +:1043B000C80ED11C88E0189FE0011124CE5FDE4FAB +:1043C0008EE0E80EF11C69812296C6010E943B2115 +:1043D000560182E0A80EB11CFE0132976081C60131 +:1043E00001960E943B216501AE14BF0461F71F5F77 +:1043F000C5CFDF91CF911F910F91FF90EF90DF908C +:10440000CF90BF90AF9008958F929F92AF92BF923E +:10441000CF92DF92EF92FF92CF938FEF90E00E94C6 +:1044200072168BEA94E00197F1F78EE00E9465190D +:104430007C018AE00E94DF159091C602981729F04E +:1044400091E090930C038093C602809101019FEF4D +:10445000980F90930101811106C00E9493199093C7 +:104460000F0380930E036091B7077091B807809196 +:10447000B9079091BA070E940C35CB010E947216C1 +:104480008090E9029090EA02A090EB02B090EC02DA +:10449000B70190E080E00E949D32A50194010E9446 +:1044A0002D342DEC3CEC4CE45DE30E94FE32A50182 +:1044B00094010E942E346093E9027093EA02809383 +:1044C000EB029093EC020E94071D60911303709120 +:1044D000140390E080E00E949D326B017C012091EA +:1044E000B3073091B4074091B5075091B6070E94C9 +:1044F00098328111B5C02091080330910903409191 +:104500000A0350910B03C701B6010E942D346B01C1 +:104510007C0120E030E0A9010E94423518160CF021 +:1045200095C020E030E040EA50E4C701B6010E94A7 +:10453000423518160CF494C060910603709107037D +:1045400090E080E00E949D322091080330910903A1 +:1045500040910A0350910B030E942D346B017C01A2 +:1045600020E030E0A9010E94423518160CF087C007 +:10457000C701B6010E9413356530710508F083C08C +:1045800080914F01811105C080914D0181110E94E0 +:10459000CD1981E080934F0110924D01809113035A +:1045A00090911403853F21E0920710F010920001D2 +:1045B00020910001211140C0843F9140E8F58FEF28 +:1045C00090E00E9472160E94CD19C1E0C0930001D4 +:1045D0000E945E200E944F21C0930C038EE00E9437 +:1045E0006519BC0190E080E00E949D326093E90271 +:1045F0007093EA028093EB029093EC021092FE0219 +:1046000080910603909107032CE231E03093F4028D +:104610002093F30220E233E03093F2022093F10280 +:104620002AE030E03093F0022093EF02880F991FC8 +:10463000909300038093FF02CF91FF90EF90DF9063 +:10464000CF90BF90AF909F908F90089520E030E082 +:1046500040EA50ECC701B6010E94983287FF6CCF48 +:10466000609108037091090380910A0390910B03F4 +:104670000E94133570931403609313035DCFC70139 +:10468000B601905877CF10924F0188CF0C94BC336D +:104690002F923F924F925F926F927F928F929F9252 +:1046A000AF92BF92CF92DF92EF92FF920F931F9340 +:1046B000CF93DF938C0186E080930D0881E0809397 +:1046C0000C0810920B086091D9027091DA02072E43 +:1046D000000C880B990B0E949F322B013C0143ED8B +:1046E000C42E42E0D42E7601C2E0D0E05AE0A52EDE +:1046F000B12CBE010D2E000C880B990B0E949F322D +:104700009B01AC0160E070E080E291E40E944735DB +:104710009B01AC01C301B2010E949A340E940C3586 +:10472000CB01B5010E94E136F701819391937F019E +:104730002197F8F61093DA020093D902C7ECD2E081 +:1047400094E0E92EF12C22E0822E912C3AE0232EE7 +:10475000312CB401092C000C880B990B0E949F325C +:104760009B01AC0160E070E080E291E40E9447357B +:104770002B013C016091D9027091DA02072E000CE6 +:10478000880B990B0E949F32A30192010E949A34D8 +:104790000E940C35CB01B1010E94E136F601208167 +:1047A0003181821B930BF2E3F89FB001F99F700DEA +:1047B0001124072E000C880B990B0E949F32288130 +:1047C00039814A815B810E942E342B013C0120E01B +:1047D00030E0A9010E94983281117CC04882598240 +:1047E0006A827B8201E022E346E270E060E0C7017A +:1047F00004970E9453138EECA82EBB24BA940FEF9B +:104800001FEF288139814A815B8160E070E080E898 +:1048100090E40E942D342B013C01B5010B2C000CBF +:10482000880B990B0E949F329B01AC01C301B2011E +:104830000E942E340E940C35F0920808E09207087E +:1048400070930A0860930908F60160817181600F16 +:10485000711F072E000C880B990B0E94031E0F5F1F +:104860001F4FF2E3AF0EB11C0230110551F6249632 +:1048700021E0821A910882E0C80ED11CECE2EE0E13 +:10488000F11CF8E8EF16F10409F063CF00E022E034 +:1048900040E870E060E090E080E00E9453132DE07B +:1048A00040E863E370E090E080E00E945313DF9102 +:1048B000CF911F910F91FF90EF90DF90CF90BF901D +:1048C000AF909F908F907F906F905F904F903F90B0 +:1048D0002F900895C301B20190582DEC3CEC4CE4AC +:1048E0005FE30E94FE32A30192010E942E3468838E +:1048F00079838A839B8376CF86E00E94DF1521E04F +:10490000892B09F020E02093EE020E941E14809172 +:10491000FF0290910003959587950E9448230E947D +:1049200049170E94BB1986E00E94DF15892B69F7A1 +:104930008091EE028111E9CF0E94CD198091D902B8 +:104940009091DA0208952F923F924F925F926F9268 +:104950007F928F929F92AF92BF92CF92DF92EF920F +:10496000FF920F931F93CF93DF93CDB7DEB7659779 +:104970000FB6F894DEBF0FBECDBF182FE091F50241 +:10498000F0E0EF58FD4F80818150990B1092F402B6 +:104990001092F302880F991F9093F2028093F10214 +:1049A00081E090E09093F0028093EF02812F90E0FD +:1049B000880F991F909300038093FF0286E00E9466 +:1049C000DF1521E0892B09F020E02093EE02109200 +:1049D0000C0881E080930B088091FF029091000306 +:1049E0009C01359527953D872C873C853D8B6C84B4 +:1049F0007D8477249301211B310948E3429FC00144 +:104A0000439F900D1124280E391E2114310409F101 +:104A10006627772762197309072E000C880B990BFC +:104A20000E949F322AE939E949E15FE30E94FE32A0 +:104A30004B015C01B101330C880B990B0E949F3232 +:104A40009B01AC01C501B4010E942E340E940C35BB +:104A50001B010E941E14430182E0881A9108610123 +:104A600098E4C91AD108F3013396FC8BEB8B97FCC1 +:104A70008AC0E091F502F0E0EF58FD4F8081881583 +:104A8000190409F00CF47FC001E020E340E370E07A +:104A900060E0C6010E94531396012D5F3F4F3A8B91 +:104AA000298B00E02AE24AE263E070E089899A8972 +:104AB0000E94531370E060E0C6010E94F71370E09B +:104AC00060E08601015D1F4FC8010E94F7136FE28D +:104AD00070E0C6010E94F7136FE270E0C8010E9407 +:104AE000F7130E94A919F401E80FF11DEE0FFF1F43 +:104AF000EF5DFD4F80819181988B8F8773E0E72E6A +:104B0000F12C512C412CB12CA12CF50153E0F59541 +:104B1000E7955A95E1F7E40DF51D2F853889E20FE9 +:104B2000F31FE491C5018770992720E830E002C0A7 +:104B3000359527958A95E2F7C901F0E0E223F9233C +:104B4000EF2B79F0C501880F991F8A0D9B1D01E09D +:104B500023E043E0B701E989FA898E0F9F1F0E9485 +:104B60005313FFEFAF1ABF0A2EE0A216B10469F685 +:104B700032E0430E511C43E0E40EF11C8DE2E816D6 +:104B8000F10409F0C0CF9FEF891A990AE8E3CE0E2D +:104B9000D11C2B893C898216930609F068CF80913D +:104BA0004E01811140C00E94A919F301E80FF11DC7 +:104BB000EE0FFF1FEF52FE4F40815181EE24E39430 +:104BC00000E124E260E370E080E390E00E9475136E +:104BD0000E9449170E94BB1986E00E94DF15892BAD +:104BE00001F58091EE0281111CC00E94CD198D89C2 +:104BF00065960FB6F894DEBF0FBECDBFDF91CF91A3 +:104C00001F910F91FF90EF90DF90CF90BF90AF90EA +:104C10009F908F907F906F905F904F903F902F90DC +:104C200008951C85D9CE823009F083C00E94A9194D +:104C3000860D972D911DFC01E858F34EE490880FE6 +:104C4000991FFC01EF57FE4F80809180D12CC12C21 +:104C500004E310E3CE1408F0BBCFF401EC0DFD1D0E +:104C6000449180E1840F833008F45EC03E85313F7B +:104C7000E9F0323FD1F1403F08F058C0193710F049 +:104C8000085F10E088E0489FA001112448555B4E62 +:104C9000602F70E028E0812F90E00E943114185FAF +:104CA00090EF9E873FEFC31AD30AD4CF4E39D0F787 +:104CB0001D3710F0085F10E0A02EB12C612E712C72 +:104CC000E3E04E9FA001112442535D4E23E0B50165 +:104CD000C3010E94311421E04DEC52E1B501C30142 +:104CE00003960E9431141C5FDDCF4F31D8F619377F +:104CF00010F0085F10E0A02EB12C612E712CF7E0AF +:104D00004F9FA00111244C505E4E27E0B501C30116 +:104D10000E94311421E04DEC52E1B501C301079628 +:104D20000E943114185FBECF4E87BCCF20EF2E8774 +:104D3000B9CF80E390E09093080880930708E1E3FF +:104D4000F0E0F0930A08E093090881E080930D08F1 +:104D50000E94A919FC858F0FE82FF0E0EE0FFF1FCE +:104D6000E85DF34E65917491CE0101960E949132F7 +:104D7000CE0101960E94B21D2BCF1F920F920FB64B +:104D80000F9211242F933F934F935F936F937F93D1 +:104D90008F939F93AF93BF93EF93FF9386E197E039 +:104DA0000E942715FF91EF91BF91AF919F918F9135 +:104DB0007F916F915F914F913F912F910F900FBE17 +:104DC0000F901F9018951F920F920FB60F921124FB +:104DD0002F938F939F93EF93FF93E0912607F0918A +:104DE00027078081E0912C07F0912D0782FD1BC0E1 +:104DF000908180912F078F5F8F73209130078217EA +:104E000041F0E0912F07F0E0EA5EF84F958F809334 +:104E10002F07FF91EF919F918F912F910F900FBED0 +:104E20000F901F9018958081F4CF1F920F920FB6AC +:104E30000F9211242F933F938F939F93AF93BF9320 +:104E40008091DC029091DD02A091DE02B091DF0240 +:104E50003091DB0223E0230F2D3758F50196A11D79 +:104E6000B11D2093DB028093DC029093DD02A093BE +:104E7000DE02B093DF028091E0029091E102A09106 +:104E8000E202B091E3020196A11DB11D8093E00200 +:104E90009093E102A093E202B093E302BF91AF913D +:104EA0009F918F913F912F910F900FBE0F901F9068 +:104EB000189526E8230F0296A11DB11DD2CF1F928F +:104EC0000F920FB60F9211242F933F934F935F933E +:104ED0006F937F938F939F93EF93FF9383B1817031 +:104EE00029B19091E602981709F49DC030E0220F95 +:104EF000232F221F330B922F8093E6024091E5026D +:104F0000241709F490C02093E5022091EF0230911C +:104F1000F002981719F03195219531094091FF025F +:104F2000509100036091F3027091F402240F351F39 +:104F3000261737070CF48BC02091EF023091F00256 +:104F4000981719F03195219531094091FF02509140 +:104F500000036091F1027091F202240F351F621775 +:104F600073070CF46FC04091EF025091F002981754 +:104F700019F05195419551092091FF02309100039C +:104F8000240F351F309300032093FF0241E0981354 +:104F900040E02091E402421709F440C02091EF0262 +:104FA0003091F002981719F03195219531096091EF +:104FB000FF0270910003E091F302F091F402260FDA +:104FC000371F2E173F070CF44CC02091EF02309191 +:104FD000F002981719F03195219531096091FF027F +:104FE00070910003E091F102F091F202260F371F59 +:104FF000E217F3078CF12091EF023091F00298173D +:1050000019F03195219531098091FF0290910003AB +:10501000820F931F909300038093FF024093E4025A +:1050200081E080930C03FF91EF919F918F917F918D +:105030006F915F914F913F912F910F900FBE0F9005 +:105040001F9018952091F1023091F2029BCF209190 +:10505000F3023091F40296CF8091F1029091F20226 +:10506000D9CF8091F3029091F402D4CF18950F9389 +:105070001F93CF93DF93E6E1F7E01382128288EE6D +:1050800093E0A0E0B0E084839583A683B7838CE9A6 +:1050900092E09183808385EC90E09587848784EC0F +:1050A00090E09787868780EC90E0918B808B81ECF5 +:1050B00090E0938B828B82EC90E0958B848B86ECD6 +:1050C00090E0978B868B118E128E138E148EEBEFE1 +:1050D000F7E0138212821682178280E180871582A0 +:1050E000148212868EEA92E091838083158614865C +:1050F0001786168681E0808B118A828B138ACFEB0C +:10510000D7E027EB37E03F8F2E8F2BEB37E03D8F3B +:105110002C8F23EB37E039A328A31AAE1AAA1BAAB7 +:105120001CAA1DAA40E050E06FE773E44EAB5FABF2 +:1051300068AF79AF44E650E060E070E04EA75FA74B +:1051400068AB79AB21E030E0398F288F3B8F2A8F15 +:105150008BAF80E090E0A0E3B1E488839983AA83D9 +:10516000BB8380E090E0A0E0BFE38C839D83AE83AF +:10517000BF8380E090E0A0E8BFE388879987AA8793 +:10518000BB8780E090E0A0E3B1EC8C879D87AE8781 +:10519000BF878DEC9CECACE4BDEB888B998BAA8B24 +:1051A000BB8B80E090E0A0E2B1EC8C8B9D8BAE8B52 +:1051B000BF8B0E9421170EA51FA528A939A9601B26 +:1051C000710B820B930B6AA37BA38CA39DA3DF912E +:1051D000CF911F910F910895CF93DF93CDB7DEB795 +:1051E0002A970FB6F894DEBF0FBECDBF789484B572 +:1051F000826084BD84B5816084BD85B5826085BDD3 +:1052000085B5816085BD80916E00816080936E0060 +:105210001092810080918100826080938100809152 +:105220008100816080938100809180008160809303 +:1052300080008091B10084608093B1008091B000C3 +:1052400081608093B00080917A00846080937A00BE +:1052500080917A00826080937A0080917A008160E8 +:1052600080937A0080917A00806880937A0010920F +:10527000C1001092B90088E48093B8000E943F17E3 +:1052800080E00E94351703EF11E282E1E82E82E20E +:10529000F82EF80184910E9435170F5F1F4FE0161A +:1052A000F106B9F70E942D1711E01093B8000E9483 +:1052B000491781E28093030860E08EE00E94361671 +:1052C00060E08FE00E94361661E085E00E943616AD +:1052D00061E089E00E94361662E087E00E9436169F +:1052E00062E088E00E94361662E086E00E94361690 +:1052F00062E08AE00E9436168FEF90E00E947216FC +:1053000060E085E00E94081680917A0087608093B3 +:105310007A0080917A00886080937A007894109364 +:105320006B00109368001BBB90E080E00E94462356 +:10533000182F81E090E00E944623912F8F3F9840E4 +:1053400009F0BBC082E090E00E944623182F83E062 +:1053500090E00E944623912F90934701809346014D +:1053600084E090E00E944623182F85E090E00E94A0 +:105370004623912F909345018093440186E090E06D +:105380000E9446238093430187E090E00E944623D9 +:1053900080934C0188E090E00E94462380934B016B +:1053A00089E090E00E94462380934A018AE090E0E1 +:1053B0000E944623809380018BE090E00E94462368 +:1053C00091E0811101C090E0909349018CE090E060 +:1053D0000E94462391E0811101C090E09093480122 +:1053E0008DE090E00E944623809315038EE090E0CC +:1053F0000E944623282E809342018FE090E00E9475 +:10540000462380934E0180E190E00E94462391E084 +:10541000811101C090E09093ED0281E190E00E9443 +:10542000462380930D03A2E08A2EA1E09A2EB0E5D8 +:10543000AB2EB1E0BB2E12E1E12EF12C312C231466 +:1054400009F447C010E000E0C701800F911F0E94DF +:105450004623F501E00FF11F80830F5F1F4F0630D9 +:10546000110591F7670126E0C20ED11C3EE0E30E64 +:10547000F11C3401C6010E944623082F10E0102FB2 +:105480000027F301118300832601F2E04F0E511C27 +:10549000C60101960E944623082BF3010193119344 +:1054A0003F0162014E145F0429F73394F8E08F0E38 +:1054B000911C26E0A20EB11CC2CF68E090E080E013 +:1054C0000E943B216FEF81E090E00E943B210E940F +:1054D0004F211091ED0280EC111101C088EC0E9467 +:1054E000661780EA111101C081EA0E9466170E94C6 +:1054F00001199093E8028093E7020E949319909318 +:105500000F0380930E030091460110914701109301 +:105510000703009306038EE00E946519BC0190E02A +:1055200080E00E949D326093E9027093EA028093CA +:10553000EB029093EC020E943D190E94071D20E0AF +:1055400030E040EA51E460910803709109038091D2 +:105550000A0390910B030E942E346B017C01B80169 +:1055600090E080E00E949D329B01AC01C701B60132 +:105570000E94983287FF04C090E080E00E9472167B +:105580001092F1071092F2071092F3071092F407AD +:10559000412C512CEFE76E2EE3E47E2E4092F5076E +:1055A0005092F6076092F7077092F807A090DD0717 +:1055B000B090DE078091F907F501C080D180E280CC +:1055C000F380882309F481C7A3019201C701B601C2 +:1055D0000E944235181634F5F501408251826282EC +:1055E00073828090E5079090E607A090E707B0905F +:1055F000E807C090F507D090F607E090F707F09025 +:10560000F807A7019601C501B4010E94423518169A +:10561000C4F4C092E507D092E607E092E707F09263 +:10562000E8071FC020E030E0A901C701B6010E94D1 +:10563000983287FFD6CFF501108211821282138231 +:10564000D0CFC090F107D090F207E090F307F09030 +:10565000F407A7019601C501B4010E94983287FDA5 +:10566000D8CF81E08093F90783B181708093E602FF +:1056700089B190E0880F892F881F990B8093E502EC +:105680002091E6029091E50281E0291380E0809369 +:10569000E4028CE291E09093F4028093F30280E2C2 +:1056A00093E09093F2028093F1028AE090E090936D +:1056B000F0028093EF02000F111F1093000300937C +:1056C000FF020E94211760930203709303038093EB +:1056D0000403909305030E94CD190E94CD192090D8 +:1056E000FF02309000039101359527953A8729876D +:1056F000309307032093060386E00E94DF15482EAF +:1057000081119FC08091FE02882309F49AC00E94F3 +:10571000CD190E9421176B017C01C092FA02D09230 +:10572000FB02E092FC02F092FD0286E00E94DF158F +:10573000892B59F40E9421176C197D098E099F0944 +:10574000643F71408105910580F30E9421176C1917 +:105750007D098E099F09643F71408105910508F418 +:105760005CC48FEF90E00E9472160E94CD19512CFC +:105770004AE0642E712C1092F502852D0E94A3241C +:10578000582EF8E0F81708F439C0E82FF0E0E55398 +:10579000F44D0C94F536E62B8E2E052F6D2F7B2FB6 +:1057A000B52FC32FE32FED2F20E030E0A901C70173 +:1057B000B6010E94983287FF54CF1092E5071092ED +:1057C000E6071092E7071092E8074BCF3EE1632E01 +:1057D000712C81E08093F502852D0E94A324582E20 +:1057E00022E0821709F434C2281708F4E8C088239D +:1057F00009F410C131E0831709F40FC10E944F2151 +:1058000081E080930C0329853A8530930703209328 +:1058100006038CE291E09093F4028093F30280E21D +:1058200093E09093F2028093F1028AE090E09093EB +:10583000F0028093EF02C1018E7F9093000380936A +:10584000FF024092FE0280911003882309F110911B +:105850004A011123E9F00E942117C090F602D0906E +:10586000F702E090F802F090F9026C197D098E09B8 +:105870009F0928EE33E040E050E00E94FC332117FE +:1058800038F0109210030E94CD1981E080934D01F1 +:1058900080910C038823E9F180911103882349F159 +:1058A00020E030E040EA51E4609108037091090380 +:1058B00080910A0390910B030E942E346B017C01AE +:1058C000609106037091070390E080E00E949D3292 +:1058D0009B01AC01C701B6010E94983287FF04C04A +:1058E00090E080E00E9472160E94CD1981E08093C2 +:1058F0004D0110920C0310921103109212030E949A +:105900002117609302037093030380930403909321 +:1059100005030E94211700910203109103032091B7 +:10592000040330910503601B710B820B930B20E67F +:105930003AEE40E050E00E94FC33122F2093010326 +:105940008091110381110BC080914C01882339F0A3 +:10595000281728F081E0809311030E94CD198091CF +:10596000120381110BC080914B01882339F0181765 +:1059700028F081E0809312030E94CD190E94042236 +:105980000E94DA1A0E94211780910408362F381BD2 +:10599000832F90910508992309F455C33093060885 +:1059A0001092050880E090E0892B09F498CE0E94BF +:1059B0001315882309F493CE0E94000090CE83E053 +:1059C000581609F448C194E0591218CF8091420149 +:1059D000883008F0FECE91E0980F909342018093BA +:1059E00015030E94EB19E091150328E0E29FF001F6 +:1059F0001124EE5FFE4F88ED90E09183808324E3D5 +:105A000031E03383228386E891E095838483778233 +:105A10006682DFCE0E945E20DCCE8E010F5F1F4FBC +:105A2000812C912C5401839498EEE92E93E0F92E69 +:105A3000CC24C394D12CE091150324E0E29FF00123 +:105A40001124C4010197E80FF91FEE0FFF1FEE5F4D +:105A5000FE4F808191819093070380930603E8ECC9 +:105A6000F0E0F093F402E093F302F092F202E0929D +:105A7000F102D092F002C092EF02880F991F90932A +:105A800000038093FF02F1E0F0934D0186E00E9455 +:105A9000DF1521E0892B09F020E02093EE020E941F +:105AA0001E1422E020930D080E9404220E94DA1A9C +:105AB000109208081092070810920A08109209081C +:105AC00088E392E20E94DD18C501B4010E94031E22 +:105AD00082EC92E00E94B21D80914F011092080862 +:105AE00010920708882309F48BC080E190E090931E +:105AF0000A08809309088BE292E20E94DD18109256 +:105B0000080810920708E0E2F0E0F0930A08E0933A +:105B1000090884E292E20E94DD186091FF02709110 +:105B2000000375956795072E000C880B990B0E9452 +:105B3000031E0E94BB190E94491786E00E94DF15D0 +:105B4000892B09F0ACCF8091EE028111A8CF809112 +:105B5000FF029091000395958795F80181939193A9 +:105B60008F010E94CD196AE070E080E090E00E9411 +:105B7000EF16FFEF8F1A9F0AAF0ABF0A24E08216C2 +:105B80009104A104B10409F056CF8FEF90E00E9478 +:105B900072168BEA94E00197F1F70E943D190E947A +:105BA00013354B0178876F83C980DA800B811C81A4 +:105BB000C6014E968017910708F00BCEED80FE804F +:105BC000C8014E968E159F0508F003CE87E080939E +:105BD000F50280E00E94A324882309F4FACDE09125 +:105BE000150338E0E39FF0011124EE5FFE4FD182F0 +:105BF000C08213830283F582E48297828682E9CD94 +:105C000020E130E030930A08209309088EE192E207 +:105C10000E94DD186091E9027091EA028091EB0226 +:105C20009091EC020E94133590E080E04AE00E94DF +:105C3000BF1D109208081092070880E290E0909330 +:105C40000A088093090882E192E20E94DD1871CF70 +:105C50000E94EB19BECD87E08093F502809142014E +:105C6000813009F4B6CD80E00E94A324882309F492 +:105C7000B0CD1091150300914201802F8150990BF6 +:105C8000BC011817190639F411501093150301506F +:105C9000009342019ECD812F90E086179707BCF7B5 +:105CA000E6E01E9FD001112450E040E09C012F5FF0 +:105CB0003F4FFA01EA0FFB1FE05BFE4FF680F082D8 +:105CC0004F5F5F4F46305105A1F7B3E0220F331FFE +:105CD000BA95E1F7F901EE5FFE4F2081318143E093 +:105CE000880F991F4A95E1F7DC01AE5FBE4F119610 +:105CF0003C932E938281938113969C938E9312975B +:105D00008481958115969C938E93149786819781B3 +:105D100017969C938E9316971F5FBDCF82E080935A +:105D2000F50210E078E2C72ED12CECE2AE2EBB24B7 +:105D3000B394F0E28F2EF3E09F2EA4E1EA2EF12C33 +:105D4000812F0E94A324182F813021F130F082305E +:105D500009F43FC00E944F210ECD809146019091E1 +:105D60004701B092F402A092F3029092F202809264 +:105D7000F1027092F0026092EF02880F991F9093E7 +:105D800000038093FF020E947C249093470180933C +:105D90004601D6CF8091440190914501D092F40202 +:105DA000C092F302E0E9F1E0F093F202E093F10235 +:105DB0007092F0026092EF02880F991F9093000397 +:105DC0008093FF020E947C249093450180934401BC +:105DD000B7CF8091430190E0F092F402E092F30299 +:105DE00028EC30E03093F2022093F1027092F0023E +:105DF0006092EF02880F991F909300038093FF0237 +:105E00000E947C24809343019BCF83E08093F50222 +:105E1000F12C01E010E08F2D0E94A324F82E31E038 +:105E20008317E9F18317F8F082E0F81293CF80919D +:105E30004A0190E01092F4021092F30228E631E059 +:105E40003093F2022093F1027092F0026092EF021E +:105E5000880F991F909300038093FF020E947C2477 +:105E600080934A01D8CF80914C0190E01092F402C7 +:105E70001092F302ECE3F0E0F093F202E093F1020F +:105E80001093F0020093EF02880F991F9093000384 +:105E90008093FF020E947C2480934C01BCCF8091B0 +:105EA0004B0190E01092F4021092F30228E730E0E8 +:105EB0003093F2022093F102E5E0F0E0F093F0027B +:105EC000E093EF02880F991F909300038093FF02E5 +:105ED0000E947C2480934B019ECF84E08093F50246 +:105EE000809149010E94A32491E0811101C090E0BA +:105EF0009093490140CC10E0EAE0EE2EF5E0DF2E71 +:105F0000A9E0CA2EE092F502812F0E94A324182F47 +:105F1000882321F08130E1F000E009C0D092F50241 +:105F2000809180010E94A3248093800101E0F09081 +:105F3000ED0280ECF11001C088EC0E94661780EA47 +:105F4000F11001C081EA0E9466170111DBCF02CF78 +:105F5000C092F5028091ED020E94A32491E081118C +:105F600001C090E09093ED02E1CF86E08093F502CE +:105F7000809148010E94A32491E0811101C090E02A +:105F800090934801F8CB80910D0390E01092F402B9 +:105F90001092F302E4EFF1E0F093F202E093F102E9 +:105FA00021E030E03093F0022093EF02880F991F38 +:105FB000909300038093FF020E947C2480930D0342 +:105FC0000E94CD19D8CB88E08093F50280914E01D4 +:105FD0000E94A32480934E01CECB0E941E14EE2477 +:105FE000E39400E320E34FE352E270E060E088E2F4 +:105FF00090E00E9475130E94491764E670E080E00B +:1060000090E00E94EF1686E00E94DF15892BD9F7F9 +:106010008091EE028111F7CFD3CF8091100391E0F0 +:10602000892780931003882351F00E9421176093E1 +:10603000F6027093F7028093F8029093F90281E0E0 +:1060400080930C03FECB90910308391748F48F5FBF +:10605000891708F0A7CC81E083BF889513BEA2CC36 +:1060600011E010930508609304088091FF07909158 +:1060700000080196909300088093FF0780918001AB +:10608000882309F4BCC10E941E1401E020E440E80A +:1060900070E060E090E080E00E94531310930D08E0 +:1060A00010930C0810920B08E12C00E120E14EEC5B +:1060B00053E270E060E090E080E00E94751383E1BD +:1060C00090E0909308088093070884E090E0909314 +:1060D0000A088093090880911503E6E08E9FC001AD +:1060E0001124805B9E4F0E94B21D809113039091FA +:1060F0001403853F914008F02DC180911203811156 +:106100002BC180911103811129C18091100381114C +:1061100027C180914F01811125C120E030E044E387 +:1061200053E46091B7077091B8078091B9079091D7 +:10613000BA070E94983287FF17C185E025E330E057 +:10614000309308082093070821E030E030930A08D4 +:106150002093090892E090930D08C82ED12C9091BD +:106160004E01CC0CDD1C911101C1F601E657FD4F2B +:1061700040815181E12C0EE02CE161E070E080E58E +:1061800090E00E947513F601E458FD4F4081518163 +:10619000E12C0EE02EE061E070E081E790E00E94EB +:1061A000751381E080930D080E943D1920E030E0D6 +:1061B00040EA52E40E94423518160CF0FAC00E94E0 +:1061C000211752E0660F771F881F991F5A95D1F744 +:1061D00028EE33E040E050E00E94FC3320FFE9C0AD +:1061E0000E94CD1960910E0370910F0390E080E042 +:1061F0000E949D3220E030E048EC52E40E949A3444 +:106200006B017C0160910D0370E090E080E00E94E2 +:106210009F329B01AC01C701B6010E94983287FDF5 +:10622000D4C0E12C0EE02EE040E753E262E270E0E1 +:1062300082E090E00E94751303E110E010930808DB +:106240000093070820E130E030930A082093090802 +:106250000E943D1941E00E942D1E88EF0E94F8180F +:106260008EE693E20E94DD18109308080093070859 +:1062700088E190E090930A08809309080E94011930 +:10628000BC0190E080E00E949D3220E030E04AE7CF +:1062900054E40E949A3442E00E942D1E8CE693E260 +:1062A0000E94DD18109308080093070880E290E030 +:1062B00090930A088093090860910E0370910F0370 +:1062C00090E080E00E949D3220E030E04AE754E414 +:1062D0000E949A3441E00E942D1E8AE693E20E94B9 +:1062E000DD18109308080093070888E290E0909367 +:1062F0000A088093090883E693E20E94DD1889E387 +:1063000090E0909308088093070882E190E09093D2 +:106310000A088093090884E080930D0860911303B4 +:1063200070911403653F91E0790708F462C08FE52E +:1063300093E20E94DD1800E020E248E460E170E0B2 +:1063400087E390E00E94AA1780E00E94051F0E9448 +:10635000491728CB80E0F2CE81E0F0CE82E0EECE8D +:1063600083E0ECCE84E0EACE86E0E8CE8330C1F074 +:1063700038F4813069F0823081F088EA93E20AC013 +:106380008530A1F080F08630C1F78EEA93E202C03A +:106390008AEC93E20E94DD18F6CE84EC93E2FACF09 +:1063A0008EEB93E2F7CF88EB93E2F4CF83EB93E2AB +:1063B000F1CFE12C0EE02EE04CE853E262E170E018 +:1063C00082E090E00E9475130DCF0E94211742E0F9 +:1063D000660F771F881F991F4A95D1F728EE33E083 +:1063E00040E050E00E94FC3320FF1BCF0E94CD19FB +:1063F00023CF90E080E04AE00E94BF1D9CCF0E9426 +:106400001E140E943D1920E030E040EA52E40E9450 +:106410004235181694F40E94211732E0660F771F58 +:10642000881F991F3A95D1F728EE33E040E050E0FD +:106430000E94FC3320FD0E94CD1960910E037091E3 +:106440000F0390E080E00E949D3220E030E048ECB5 +:1064500052E40E949A346B017C0160910D0370E05C +:1064600090E080E00E949F329B01AC01C701B60121 +:106470000E94983287FF12C00E94211722E0660F07 +:10648000771F881F991F2A95D1F728EE33E040E047 +:1064900050E00E94FC3320FD0E94CD19809113032F +:1064A00090911403853FE1E09E0710F087EE93E0A2 +:1064B0000E94482300E023E040E860E370E090E0C1 +:1064C00080E00E94531381E040CFC092E507D09254 +:1064D000E607E092E707F092E807E091DB07F0912A +:1064E000DC0780819181A281B3818093E907909339 +:1064F000EA07A093EB07B093EC0720E030E04FE70A +:1065000053E4C701B6010E94423518160CF04CC97D +:106510004092E5075092E6076092E7077092E8071D +:10652000A0C8FB01DC0105900D920020E1F7089561 +:106530000E94DA3208F481E00895E89409C097FBDC +:106540003EF490958095709561957F4F8F4F9F4F4A +:106550009923A9F0F92F96E9BB279395F69587958E +:1065600077956795B795F111F8CFFAF4BB0F11F451 +:1065700060FF1BC06F5F7F4F8F4F9F4F16C08823F8 +:1065800011F096E911C0772321F09EE8872F762F2E +:1065900005C0662371F096E8862F70E060E02AF06F +:1065A0009A95660F771F881FDAF7880F969587955B +:1065B00097F90895990F0008550FAA0BE0E8FEEF30 +:1065C00016161706E807F907C0F012161306E407B7 +:1065D000F50798F0621B730B840B950B39F40A26B0 +:1065E00061F0232B242B252B21F408950A2609F48E +:1065F000A140A6958FEF811D811D08950E94113342 +:106600000C9482330E94743338F00E947B3320F064 +:10661000952311F00C946B330C94713311240C946A +:10662000B6330E94933370F3959FC1F3950F50E0FA +:10663000551F629FF001729FBB27F00DB11D639F34 +:10664000AA27F00DB11DAA1F649F6627B00DA11DDA +:10665000661F829F2227B00DA11D621F739FB00D80 +:10666000A11D621F839FA00D611D221F749F3327F0 +:10667000A00D611D231F849F600D211D822F762F89 +:106680006A2F11249F5750409AF0F1F088234AF066 +:10669000EE0FFF1FBB1F661F771F881F91505040D2 +:1066A000A9F79E3F510580F00C946B330C94B633E0 +:1066B0005F3FE4F3983ED4F3869577956795B79559 +:1066C000F795E7959F5FC1F7FE2B880F911D969573 +:1066D000879597F9089597F99F6780E870E060E0E3 +:1066E00008959FEF80EC089500240A94161617066B +:1066F00018060906089500240A94121613061406B3 +:1067000005060895092E0394000C11F4882352F015 +:10671000BB0F40F4BF2B11F460FF04C06F5F7F4FCD +:106720008F4F9F4F089557FD9058440F551F59F0B4 +:106730005F3F71F04795880F97FB991F61F09F3F6E +:1067400079F087950895121613061406551FF2CF97 +:106750004695F1DF08C0161617061806991FF1CFE7 +:1067600086957105610508940895E894BB2766270E +:106770007727CB0197F90895F999FECF92BD81BD96 +:10678000F89A992780B50895262FF999FECF1FBA58 +:1067900092BD81BD20BD0FB6F894FA9AF99A0FBE4A +:1067A00001960895052E97FB1EF400940E94E9338C +:1067B00057FD07D00E94FC3307FC03D04EF40C9425 +:1067C000E93350954095309521953F4F4F4F5F4F9E +:1067D000089590958095709561957F4F8F4F9F4F4D +:1067E00008950E941E34A59F900DB49F900DA49F04 +:1067F000800D911D11240895A1E21A2EAA1BBB1B26 +:10680000FD010DC0AA1FBB1FEE1FFF1FA217B3077C +:10681000E407F50720F0A21BB30BE40BF50B661F92 +:10682000771F881F991F1A9469F760957095809556 +:1068300090959B01AC01BD01CF010895A29FB001CD +:10684000B39FC001A39F700D811D1124911DB29FA4 +:10685000700D811D1124911D08955058BB27AA2742 +:106860000E9445340C9482330E94743338F00E94A5 +:106870007B3320F039F49F3F19F426F40C947133E4 +:106880000EF4E095E7FB0C946B33E92F0E949333F1 +:1068900058F3BA17620773078407950720F079F455 +:1068A000A6F50C94B5330EF4E0950B2EBA2FA02D5F +:1068B0000B01B90190010C01CA01A0011124FF27AD +:1068C000591B99F0593F50F4503E68F11A16F040A8 +:1068D000A22F232F342F4427585FF3CF46953795A7 +:1068E0002795A795F0405395C9F77EF41F16BA0B6C +:1068F000620B730B840BBAF09150A1F0FF0FBB1F1A +:10690000661F771F881FC2F70EC0BA0F621F731F62 +:10691000841F48F4879577956795B795F7959E3FBF +:1069200008F0B0CF9395880F08F09927EE0F979550 +:10693000879508950E94AE340C9482330E947B3375 +:1069400058F00E94743340F029F45F3F29F00C9412 +:106950006B3351110C94B6330C9471330E94933302 +:1069600068F39923B1F3552391F3951B550BBB277E +:10697000AA2762177307840738F09F5F5F4F220FC3 +:10698000331F441FAA1FA9F335D00E2E3AF0E0E8BA +:1069900032D091505040E695001CCAF72BD0FE2F04 +:1069A00029D0660F771F881FBB1F26173707480798 +:1069B000AB07B0E809F0BB0B802DBF01FF27935850 +:1069C0005F4F3AF09E3F510578F00C946B330C9476 +:1069D000B6335F3FE4F3983ED4F386957795679599 +:1069E000B795F7959F5FC9F7880F911D9695879585 +:1069F00097F90895E1E0660F771F881FBB1F6217A4 +:106A000073078407BA0720F0621B730B840BBA0B61 +:106A1000EE1F88F7E09508950E9413356894B11130 +:106A20000C94B63308950E949B3388F09F5798F0DA +:106A3000B92F9927B751B0F0E1F0660F771F881F83 +:106A4000991F1AF0BA95C9F714C0B13091F00E949D +:106A5000B533B1E008950C94B533672F782F8827AC +:106A6000B85F39F0B93FCCF3869577956795B395C4 +:106A7000D9F73EF490958095709561957F4F8F4F33 +:106A80009F4F08950E94DA3208F48FEF0895FA01BB +:106A9000EE0FFF1F309621053105A1F1611571053B +:106AA00061F48038BFE39B0749F168949038810511 +:106AB00061F08038BFEF9B0741F099234AF5FF3F13 +:106AC000E1053105210519F1E8940894E795D9010C +:106AD000AA2329F4AB2FBE2FF85FD0F310C0FF5FBD +:106AE00070F4A695E0F7F73950F019F0FF3A38F452 +:106AF0009F779F930DD00F9007FC9058089546F014 +:106B00000C94713360E070E080E89FE308954FE7F4 +:106B10009F775F934F933F932F930E9447362F9118 +:106B20003F914F915F910E94FE320C94A4350E94D8 +:106B3000DA32880B990B089529F416F00C946B3314 +:106B40000C94B5330C9471330E949B33A8F39638A0 +:106B5000A0F707F80F92E8942BE33AEA48EB5FE7D7 +:106B60000E9414330F920F920F924DB75EB70F929F +:106B70000E948F36E8E6F0E00E94D6354F915F9193 +:106B8000EF91FF91E595EE1FFF1F49F0FE57E0687A +:106B90004427EE0F441FFA95E1F74195550B0E94EB +:106BA00009360F9007FE0C94FD350895DF93CF93BF +:106BB0001F930F93FF92EF92DF927B018C016894F9 +:106BC00006C0DA2EEF010E941133FE01E894A59170 +:106BD0002591359145915591A6F3EF010E944534D9 +:106BE000FE019701A801DA9469F7DF90EF90FF901A +:106BF0000F911F91CF91DF9108959B01AC0160E04F +:106C000070E080E89FE30C949A340C946B330C94FE +:106C1000C3360E949B33D8F39923C9F3940F511DB7 +:106C2000A3F39150504094F059F0882332F0660F4E +:106C3000771F881F91505040C1F79E3F51052CF798 +:106C4000880F911D9695879597F908955F3FACF051 +:106C5000983E9CF0BB27869577956795B79508F485 +:106C6000B1609395C1F7BB0F58F711F460FFE8CFFF +:106C70006F5F7F4F8F4F9F4FE3CF0C94B63316F06B +:106C80000C94C3360C94713368940C946B330E944B +:106C90009B33A8F39923C1F3AEF3DF93CF931F93F4 +:106CA0000F93FF92C92FDD2788232AF02197660FC3 +:106CB000771F881FDAF720E030E040E85FEB9FE3C2 +:106CC000883920F0803E38F021968F770E942E344C +:106CD000E0E9F0E004C00E942E34EDEBF0E00E9409 +:106CE000D6358B01BE01EC01FB2E6F5771097595EE +:106CF000771F880B990B0E949F3228E132E741E30E +:106D00005FE30E941133AF2D9801AE01FF900F9108 +:106D10001F91CF91DF910E9445340C948233FA0188 +:106D2000DC01AA0FBB1F9B01AC01BF5728F422272F +:106D300033274427507820C0B75190F4AB2F00245C +:106D4000469537952795011CA395D2F3002071F045 +:106D5000220F331F441FB395DAF30ED00C942D3459 +:106D600061307105A0E88A07B94630F49B01AC0197 +:106D70006627772788279078309621F02083318303 +:106D80004283538308959F3F31F0915020F48795BB +:106D900077956795B795880F911D9695879597F983 +:106DA0000895DB018F939F930E94F133BF91AF91C0 +:106DB000A29F800D911DA39F900DB29F900D112455 +:106DC000089597FB072E16F4009407D077FD09D09D +:106DD0000E94FB3607FC05D03EF4909581959F4FAD +:106DE0000895709561957F4F0895EE0FFF1F0590F0 +:106DF000F491E02D0994AA1BBB1B51E107C0AA1F07 +:106E0000BB1FA617B70710F0A61BB70B881F991F4B +:106E10005A95A9F780959095BC01CD01089581E020 +:0C6E200090E0F8940C941437F894FFCF25 +:106E2C0001FFD800340186011E00000000000000A4 +:106E3C000000000000000000000000000000000046 +:106E4C000000000000000000000000000000000036 +:106E5C000000000000000000000000000000000026 +:106E6C000000013C960040010101280F05010101C1 +:106E7C004243312E350000000000000000000000ED +:106E8C0000000000000000000000000000000000F6 +:106E9C0000000000000000000000000000000000E6 +:106EAC0001860281027C0275026F026B0262025F34 +:106EBC00025A0256024D0243023B0238023502329C +:106ECC00022C022902240221021E021902140211B0 +:106EDC00020B0207020302FE01F901F501F001ECBD +:106EEC0001E801E501E101DC01D801CF01CA01C7CC +:106EFC00013C0CEC0B9C0B4C0BFC0AAC0A5C0A0C1A +:106F0C000ABC096C093C0C1C09CC087C082C08DC5C +:106F1C00078C073C07EC06DC073C079C06EC06DC00 +:106F2C00074C06FC05AC055C050C05BC046C041C8C +:106F3C0004CC037C032C036C041C04DC028C02DCEC +:106F4C00079C0F800F640F480F2C0F100FF40ED8F6 +:106F5C000EBC0EA00E840E680E9C0F4C0E300E1440 +:106F6C000E9C0FF80DDC0D140EF80DC00DDC0D147D +:106F7C000EA40D880D6C0D500D340D100F180DA0B6 +:106F8C000EFC0CE00CC40CA80C8C0C2C0FA80C14D4 +:106F9C000E0A0604040202020203020348102C101B +:106FAC000C107023F00FD40FB80FB4117C114411D6 +:106FBC000C11D4109C106410000000004915A91489 +:106FCC00D61496150715E514F91400000000DB170C +:106FDC00A914FE18FD186E616E00696E66006F765E +:066FEC0066002F330000D7 +:00000001FF diff --git a/software/binaries/1.7t3/T12.ino.with_bootloader.standard.hex b/software/binaries/1.7t3/T12.ino.with_bootloader.standard.hex new file mode 100644 index 0000000..752fb8f --- /dev/null +++ b/software/binaries/1.7t3/T12.ino.with_bootloader.standard.hex @@ -0,0 +1,1827 @@ +:020000040000FA +:100000000C9406120C942E120C942E120C945F2752 +:100010000C942E120C942E120C942E120C942E1260 +:100020000C942E120C942E120C942E120C942E1250 +:100030000C942E120C942E120C942E120C942E1240 +:100040000C9415270C942E120C94E3260C94BD26C8 +:100050000C942E120C9436280C942E120C942E1202 +:100060000C942E120C942E1207634236B79BD8A71D +:100070001A39685618AEBAAB558C1D3CB7CC5763CD +:10008000BD6DEDFD753EF6177231BF000000803F7B +:1000900008000000BE922449123EABAAAA2ABECD97 +:1000A000CCCC4C3E00000080BEABAAAAAA3E000009 +:1000B0000000BF000000803F000000000008417801 +:1000C000D3BB4387D1133D190E3CC3BD4282AD2B38 +:1000D0003E68EC8276BED98FE1A93E4C80EFFFBE30 +:1000E00001C4FF7F3F0000000000536176650046B9 +:1000F0006C6970004D61696E2053637265656E00B6 +:100100004F4B004E4F004A5000454E00434E0059A1 +:100110004553004E4F004F4E004F464600496E6615 +:100120006F73004269670050494400446972656317 +:1001300074005361766500426F6F7374004F66669A +:1001400000536C656570005361766500426F6F7394 +:100150007400536C6565700044656661756C74006D +:1001600053617665004164640044656C65746500A4 +:1001700052656E616D650043616C696272617465A0 +:10018000004368616E67650052657475726E004168 +:10019000626F7574004C616E67004C4F5720566F4C +:1001A0006C0042757A7A65720053637265656E0001 +:1001B000436F6E74726F6C0054696D6572005465A4 +:1001C0006D700054697000F21415F0CADFB8CCF0FD +:1001D000D699E8AEA4DFEEE8F0714601F046464A53 +:1001E00001F21D1E08F21C08F21A1B08F0714601EC +:1001F000F046464A01F219F051F218F05A8DF0C05B +:10020000DAEEAEF0C8B8A5F1302924F0B599E1A432 +:10021000BDF21415F0CBEEAEBDF218F05A8DF21609 +:1002200017F21415F0CBEEAEBDF21617F0BCCA9E55 +:10023000E0BDF21415F21213F21011F20C0DF0944D +:10024000F20E0FF0A2D8DFCBE1EEACDCE8F20AF060 +:100250008CF20BF04A8DF209F08DF097C59BBDF240 +:100260000708F2040506F097DEEED5F0CBABEEF012 +:10027000AEA4DFEEE8F0A8E8BDE2EEE0F0B499D37A +:10028000EEF200010203F0CCDFB0B8BD00000000C8 +:10029000000F1DC20800054442080003845FBF0030 +:1002A0000FE44410000115451000054CC97F80097A +:1002B000244F900007C4C11000054D413F00055474 +:1002C00043810007C44D0200054441140005554117 +:1002D000080007C8810400000000000000000000C2 +:1002E0000001083FFE001FFF8100000040020000E7 +:1002F00007FE0FF80004020808000402088800073F +:10030000FE0888000402088800040208880007FE2E +:100310000888000402094800040202300007FE04B5 +:100320000C0004021804000000000000000000009F +:100330000007FE13FE00040208400004020840000B +:10034000040201FC0004023884000402088400074F +:10035000FE0FFF000402080000040209FE00040270 +:1003600009020004020B020004020D020007FE094C +:10037000FE00040201020000000000000000000076 +:100380000001100080001FFF80800001103FFF006F +:10039000004004080007FC040800044404100004A2 +:1003A0004402100004440220001FFF81200000408E +:1003B00000C00000A00130000110020800060C0C73 +:1003C00007001803B0020000000000000000000059 +:1003D00000004000800000400080000FFF3FFF0051 +:1003E00008410408000841040800084104100008FE +:1003F000410210000FFF02200008410120000040D0 +:1004000000C0000040013000004002080000400C25 +:100410000700004030020000000000000000000063 +:10042000001FDF10200002120C2000022404200014 +:10043000047F8020000424B820000FA488500014FA +:10044000BF88500004A488500004A488480004BF5A +:1004500088880004A48A880007A48C840004448946 +:10046000070000818602000000000000000000007C +:10047000000FF00491000440025200047F905400E9 +:10048000045088FF0007D0848100045100810004DB +:100490004901FF0007CA0281000444048100044AA4 +:1004A0001CFF0007EA0481000C510481000061C4B4 +:1004B0008500004080820000000000000000000075 +:1004C0000007FF802000008407FF00008404010073 +:1004D000008404010000840401000FFFC7FF000036 +:1004E000840400000084040000008405FF000084F0 +:1004F00005010001040901000104090100020411C1 +:10050000FF000404010100000000000000000000E2 +:1005100000008204FF00004402010007FF90210058 +:100520000010102100001017FD0000101021000F16 +:10053000FFD06100001010A1000028112100002848 +:100540001221000044142100008210A1000301D0F8 +:1005500045000C00900200000000000000000000B8 +:1005600000084410FE00042810920005FF229200AB +:1005700000103C920000100892001CFE1092000433 +:100580001020FE0004103E920005FF80920004102F +:1005900000920005100E9200061030920004100028 +:1005A000FE000010008200000000000000000000BB +:1005B0000007DF8840000A24104000114210FE00AE +:1005C000040022820002FF3D020008010A420009E5 +:1005D000F9103200090920120009F93E0200090948 +:1005E00000020009090E020009F930220008050086 +:1005F00014000802000800000000000000000000D5 +:10060000000FC3F1E0000FE3F1F8000C70C19E0091 +:100610000C30C186000C30C183000C30C183000C4B +:1006200060C183000C60C183000FC0C183000FC094 +:10063000C186000C00C186000C00C198000C03F1BB +:10064000F8000C03F1E000000000000000000000D2 +:100650000000200820000FFF09FC00002008000017 +:1006600000203E880003FE08500002020BFE00033B +:10067000FE0C4000020218400003FE2BFE000202A6 +:1006800008480003FE088800020208500002022801 +:1006900030001FFF91CC0000000000000104047C2A +:1006A0000000880444000FFF3F4400002004440081 +:1006B00000200C440000200E44001FFF9544000061 +:1006C00020144400005024440000500444000088DA +:1006D0000445000104048500060385030018010495 +:1006E000000000000000000000000000000000000A +:1006F00000047E21FC0004421104001F7E09040056 +:10070000044221FC000542110400067E1104000C85 +:100710000005FC0015FF880000040813FE000448D3 +:10072000325200044F125200044812520014A81210 +:100730005200091F97FF00000000000000000000A9 +:100740000002103DFC0002102504000410250400E6 +:1007500005FFBDFC000C102520000C3825200014DE +:100760003825FE0004543D20000454251000049256 +:100770002510000511A5090006113D4500041025AE +:1007800083000410010100000000000000000000D0 +:10079000001FC8102000124A0C20001AC9042000B3 +:1007A00017480020001FFFB8200002080850001F53 +:1007B000C8085000020808500003C80848001E146A +:1007C00008880001540A880015220C84001443890B +:1007D00007000081060200000000000002FE010088 +:1007E0000002823FFF00048202000004FE020000BB +:1007F0000C1004FC00141004080005FF8C10000409 +:1008000010141000043825FF0004340410000452B2 +:10081000041000049184100005100450000410041A +:1008200020000000000000000000000000000000A8 +:100830000002030010001FDC3EFE000890021200C0 +:10084000051004FF001FDF84120002120CFE001FBF +:10085000D2021000021222FE000A921410000A5264 +:1008600014100012220DFF0002220810000A421488 +:100870001000040223FF0000000000000000000040 +:10088000000F78BC20000948A45000094AA8500075 +:10089000094AA88800094AB104001FFEAAFB000902 +:1008A0004AA42000094AA42000094AA7FE00094AD8 +:1008B000B420000948A924000B48A22200088AA4F9 +:1008C000A2001119204000000000000000000000FC +:1008D000000020008000005001FC0000880104009E +:1008E000010403080006FB0490000800C060000734 +:1008F000DF018000045106000004511BFE0004517A +:1009000002020007D902020004560202000010038E +:10091000FE000010020200000000000000000000C5 +:10092000000208209000027F9890001F8009FF00BD +:10093000022201100006218B100007628DFE000AC2 +:10094000A20910000A14111000121431FE0002084E +:100950001110000214111000022211100002439124 +:10096000FF000281110000000000000000000000F4 +:1009700000100700000008F83FFE0004802002007D +:10098000008020020000BE23E2001C82222200041C +:10099000A42222000494222200048822220004942B +:1009A00023E200052220020005422002000A003F47 +:1009B000FE0011FFA0020000000000000000000087 +:1009C0000000820FFE00004400400007FF8040004E +:1009D0000010004000001000400000101FFF800FBA +:1009E000FFC0400000100040000028004000002828 +:1009F000004000004400400000820040000301C1AC +:100A000040000C00808000000000000009FF004052 +:100A10000004203FFF00042000000000FE00000052 +:100A20001C420FFC00044200000007FF800000048D +:100A3000000FFC0004FF000000048100000005819D +:100A40000FFC00068108040004FF08040000810F69 +:100A5000FC0000000000000000000000000000009A +:100A60000001000FFE00010008200003FF08200025 +:100A70000201082000042208200008200BFE0010BC +:100A8000200820000050082800005008240000889A +:100A9000082200008810200001041020000203A793 +:100AA000FF000C010000000000000000000000003A +:100AB0000000400080001FFF9FFC00004004100069 +:100AC0000FFF02200000003FFF000FFE00000008A3 +:100AD000420FF80008420808000FFE08080008024C +:100AE0000FF8000800080800080008080008000FB8 +:100AF000F8001000080800000000000000000000DE +:100B00000007FE0FF80004020000000402000000CD +:100B100007FE00000004023FFE0004020080000700 +:100B2000FE008000009004900008910C880006935D +:100B30001086000294208200009000800000900245 +:100B400080001FFF81000000000000000000000086 +:100B500000041012020005FF9FD20005009212004F +:100B60001E28A2120004443FF20004820212000672 +:100B7000000212000CFE1FD20014101252000410CA +:100B80001242000410134200041012820015FF826A +:100B90000A0008000204000000000000000000003D +:100BA00000002000000000203E04001FFFA20400FF +:100BB0001000A2FF0000012204000FFE220400002A +:100BC000403E440000402224000440222400047CD3 +:100BD00022040004402204000A403E04000940228E +:100BE000240010FF80140000000008000000000036 +:100BF0000010FE08200008820BFF0004820A01009A +:100C000010FE3C5100088208880008820904000296 +:100C1000FE0C0000040019FC0009FF28200019291F +:100C20000820000929082000092908200009292B8B +:100C3000FF000BFF9000000000000000000000001B +:100C4000001F7F90F80001080888000A100888003B +:100C5000047F0107001FC13A0000054909FC000498 +:100C600049088400044908880004490848000449E8 +:100C700008500004490A200004160C580014218969 +:100C8000870008C086020000000000008004000009 +:100C90003FF02430219027902730207027F0233018 +:100CA00030703FF000008004800400003FF03830D6 +:100CB00033103F90381033902790261030903FF03B +:100CC00000008004800400003FF03DF020103BF065 +:100CD0003B7030302B502AD031B03FF00000800400 +:100CE000800400003FF0387030302310279020102F +:100CF0002010279027903FF000008004800400001F +:100D00003FF03CF03CF020102490249020103CF068 +:100D10003CF03FF000008004800400003FF037B05A +:100D200023103030387038703030231037B03FF037 +:100D300000008004FCF4F860E044C08CC11CC22CAC +:100D4000C44CC88CD10CA204C4048FFC187CBCFC1D +:100D50008000BFF81FF8B0281FF8B4081FF8B108CA +:100D60001FF8B048BFF8B288BFF880008000BFF815 +:100D70001FF8B0081808B9E819B8B8381838B9B861 +:100D8000B9F8B0F8BFF8800015543FF815503FF09F +:100D90001550387010203104138C22A817FC2AA893 +:100DA0000000000015543FFC15543FFC15543C0452 +:100DB00014043CFC14543CFC005400A80000000047 +:100DC000800400003FF03CF034B024902490279041 +:100DD0002310303038703FF000008004FF7CFE7C30 +:100DE000FCECE8DCC84C984C88240820000000008B +:100DF000000000008004E01CF3FCE7FCCE0C8E1C1D +:100E00009F9C1F3C1F0C0E0C0FFC87F881E4C00C4C +:100E1000E01CF87C000458085808580840087FF87F +:100E200060185FE85B685FE85B681CE85FE80000EB +:100E3000800400003FF03CF03CF03CF0201020101B +:100E40003CF03CF03CF03FF000008004F87CF7BC44 +:100E500000007FF80000BFF4AB54AB54AB54AB546C +:100E6000AB54AB54BFF4C00CF03CCE0CBF04B30485 +:100E700073007F007E007C007C007C60BC64BE044C +:100E8000CF0CF03C81DC559C29045500299055D0AD +:100E900003FCFF002E00267002508270E600EE0474 +:100EA000800C001C3FF43FE03FC4378C23183030E7 +:100EB00038703CF03FF03FF000008004058074B8CB +:100EC00057A876B80580F97C4694AAA8F97C0688CC +:100ED00074A8578C75740698F03CCE4CBC34B8148A +:100EE000188010804230607860F844C08004B88474 +:100EF000CFCCF03CF87CE01CC00CCFCCCFCCCFCC1E +:100F0000CFCCCFCCCFCCCFCCC84CCFCCC00CE01CFE +:100F1000FCFCF87CE01CC00CC00CC00CC00CC00C6D +:100F2000C00C80048004FFFCF87CFCFC8004000002 +:100F30002000100008001000270000000000000042 +:100F40000000000000008004C3FC18001800C3FC6F +:100F5000FFFCFF0C00600060FF0CFFFCF0FC0600D3 +:100F60000600F0FC8FC4102020104CC89FE43DF018 +:100F70003DF01DE03EF03F709FE48CC40000303037 +:100F8000F87CF33CF4BCF6BCF4BCF6BCF4BCE49CCA +:100F9000C84CD02CD02CC84CE79CF03C88240820AE +:100FA00038303830383038303830383039303BB07D +:100FB0003FF03FF0000080041FE03FF07038601801 +:100FC00060186018FFFCFCFCFCFCFCFCF87CF87C66 +:100FD000FCFC7FF81E1033382D7C25382D38253841 +:100FE0002D386D80DEC0BF40BF40DEC061803F0055 +:100FF0007FF0FFE0C008C01CC038C870DCE4CFCC74 +:10100000C78CC30CC00CC00CFFFC7FF800000600AE +:101010000C0018F838F030307060707878F878008C +:101020003C023F0C1FF80FF003C000007FF8FFFCEC +:10103000C00CC30CCB4CDB6CDB6CD86CDCECCFCCC9 +:10104000C78CC00CFFFC7FF8030007800FC00CC0EA +:101050001CE01CE03CF03CF07FF87FF8FCFCFCFC62 +:10106000FFFC7FF81140820021208FE023FC8200EA +:101070004A23E200FE209FF013F880802220C080E7 +:101080004221BFF0FBFA8880022084800220848005 +:101090001A208080E3FE8280020101000F421FC0FF +:1010A000784110400840904008421FC0084110405D +:1010B000FFFD104008405FC00840800008413FE04D +:1010C00008432520104125201041252020412520BE +:1010D00040417FF07FF84880020049000201FFF0A4 +:1010E0000201001002027F202200410023F07F0055 +:1010F000220008002200FF802200888022008880D1 +:1011000022008A8022008900FFFC080023F21FC011 +:1011100022111040FBF0904022121FC02A111040F3 +:1011200033F1104060005FC0AFFC800020413FE021 +:10113000224325202279252022412520A541252052 +:1011400048FD7FF01083DFC0108250402082504065 +:101150002FFFDFC06082520061C25200A1C25FE077 +:1011600022A3D20022A2510024925100288E509036 +:10117000308BD4502082583020801010104047C04F +:1011800017FC44402003F44023F844406208C44064 +:10119000A3F8E440200154402FFD44402806444079 +:1011A00023F84440204044502040485021405030D3 +:1011B0002080400020921FC03DF990402090904038 +:1011C00040901FC07BFF0000A0013FE021F902001A +:1011D000FD09020021097FF021F9050021094500E0 +:1011E0002909888031F9107021082020250043004A +:1011F000202070F875407755757740403E4A5E2B49 +:101200005E4A6B627F352F357F7C5B5E247B0E3AB6 +:10121000047E017E4A5E69063A2F3F6B7E46403F60 +:1012200041497F494102626B6B6B62026A6B147DBC +:10123000577D10413F55553D5751213F2D7F2A1273 +:101240002E0A775A505A770A2024137D5553707A04 +:101250002A7B021A437A4A525E2B5E424A415F352C +:101260003F555F417D14577D0E407F7F1B54167D97 +:101270001654493A407E575676423F427E7E427E21 +:10128000047E51377D3750127A1752761E127F55E1 +:101290007F145D7F557F557F7F553D577F5537784C +:1012A00017457F7F2B7B287B2B7F1E12127F12120C +:1012B0001E7F416B7F6B517F525A573A575A5200EB +:1012C0007F494949497F22122A7F2A1222000000C1 +:1012D00000002F000300033F123F163F1A1208249C +:1012E000323D2A020100003E41413E000A070A0841 +:1012F0003E084020000808080020001008041C2AAE +:101300001C243E20322A24222A1418143E2E2A128B +:101310001C2A12023A06142A14242A1C0024004013 +:101320002400081422141414221408022906122975 +:101330001E3E093E3F251A1E21213F211E3F252129 +:101340003F05011E21393F083F213F2110201F3F4B +:10135000043B3F20203F063F3F013E1E211E3F0928 +:10136000061E215E3F0936222519013F013F203F1D +:101370003F100F3F183F330C33033C03312D230044 +:101380007F41153E15417F000201024040400001AF +:101390000218243C3F241818242418243F182C2C0D +:1013A000043F0548543C3F0438003D00403D003FA9 +:1013B0000834013F003C1C383C04381824187C24B5 +:1013C0001818247C3C0804283C14043E243C203C8F +:1013D0003C100C3C303C2418244C503C24342C0849 +:1013E0003641007F004136080101011028101F011D +:1013F0000120203E10200000080025150F241C0CA1 +:10140000103804180C3828382828183C083C1828AC +:101410003820242C3C2C2C1C040808211D07083CD7 +:101420000306231E223E22120A3F320F3E0A3F0AC3 +:1014300024130E271E0222223E27120F25251021DB +:1014400019273F222E21160F241B0E251F052626A5 +:101450001E251D053F0408241F04202222251927CC +:10146000123B1620100F3C013E1F242421110F0CAB +:10147000031C1A3F1A091927222A2A382730320C4E +:1014800013053F25023F0E213F2025253F25251D21 +:1014900007201F3C3F203F20103E223E23110F21FA +:1014A00021180100010205020000000000000000F8 +:1014B000204000000000000020502000000000003C +:1014C00050300000000000006060000000000000DC +:1014D0000000181800000000000036360000000070 +:1014E0000000563600000000000201510909060004 +:1014F0000000005F00000000000000007F4141008C +:1015000041417F00000000000000003F0101010098 +:101510004040407E0000000000003F213D050700E4 +:1015200070505E427E000000000000007F634100BA +:1015300041637F00000000000808087F08080800D9 +:1015400008080808080808004444445F444444006C +:1015500041221408142241000808082A080808003B +:1015600014141414141414001434141C1416140039 +:10157000080814141422220022221414140808004B +:101580000205023C42422400002B2C782C2B000048 +:1015900000242A7A2F2A1200001C62322E23140003 +:1015A00020545E2541422000422512082452210089 +:1015B00020623E633E2302002056495522584000D7 +:1015C0000022147F142200001C2259554D120C00D9 +:1015D00000004A555529000004643C173C6404008F +:1015E00004643C1F3C6404001C22414141221C0055 +:1015F0001C3E7F7F7F3E1C001C225D555D221C002F +:101600000814224122140800081C3E7F3E1C0800DA +:101610007F41414141417F007F7F7F7F7F7F7F000E +:1016200040704C434C70400040707C7F7C704000A8 +:10163000010719611907010001071F7F1F0701003A +:1016400049221449142249000505057D05050500B8 +:10165000080808082A1C0800081C2A0808080800AE +:101660000004027F020400000010207F2010000010 +:10167000003E414141413E000000427F40000000E9 +:10168000006251514949460000224149494936000A +:1016900000302824227F2000002F45454545390091 +:1016A000003E494949493200000101611905030022 +:1016B00000364949494936000026494949493E0012 +:1016C0000020547E3414600020527F2A1A4A3000D1 +:1016D000003C4020041800001E2040200204180096 +:1016E00000104A4A2A100000000845454525180008 +:1016F00000482A3A4A400000004425153D45400074 +:1017000000247E145024000022527F0A484A3400EC +:1017100044344F443804180044344F443904190009 +:10172000002A5A4B4E5A0800002A5A4B4E5B0800BA +:10173000000814142241000000081414224504007B +:101740003F0004443F0404003F0004443F040500FC +:101750000020524242424000002052424342410097 +:1017600000245444475C040000245444475C0500B2 +:1017700000003F404040200000003F404140210029 +:1017800002020A563F02020002020A563F0203000A +:1017900004043F44545F440004043F44545F450044 +:1017A0000008093D4B4908000008093D4B490A0063 +:1017B000423A072254444400423A07225544450025 +:1017C0000002124E4B4A32000002124E4B4A3300C6 +:1017D00000101048483000000404022222221C009D +:1017E0000404022223221D000002021A25434100A4 +:1017F0000002021A2543450000205748484444008F +:101800000020574849444500120A2752503A240004 +:101810007F00205242424000304E38540F6478001E +:1018200024147F0422523C001824124E4224180033 +:101830007F002454543F44007F002454543F45000B +:101840007F002454563D4600023A4740413E040082 +:10185000023A4740413E0500023A4740433D0600F8 +:101860004030404D321060004030404D3211610038 +:101870004030404D32156200080402040810100088 +:101880000804020409101100080402040A151200D9 +:101890007F006A6A7E2A4A007F006A6A7F2A4B00BC +:1018A0007F006A6A7E2D4A00006A6A6A7F2A4A00BF +:1018B00030291D4B483C1000122A7F424042240030 +:1018C000304E38540F443800000A3E4B4A4A30002C +:1018D00000080E384614080004071C62030A0400BE +:1018E000001C483E241800001E04523F12120C0037 +:1018F000002050503E480000002050503F2444003B +:10190000001C51494A483000000F4241211E00008E +:101910000010696D4B49300024147F04023E4000E2 +:101920000010494D4B4930000028187E084438000B +:1019300024147F0442423C003049251F24543800BF +:101940004028255735284000100A2E5B724A48006F +:1019500040300C33404020000004443C140C000094 +:101960000001413D0905030000202010780400001B +:10197000001010087C0201000018484C28180000D4 +:101980000006424322120E00004048784840000002 +:101990002022223E22222000002828587C08000015 +:1019A0002222124A7F0202000042221F02427E00CF +:1019B0000042221F02427F000012121F721210000A +:1019C0000012121F721310000008444322120E006E +:1019D0000008444322120F00080742221E020200A0 +:1019E000080742221F0203000042424242427E0098 +:1019F0000042424243427F0002024F42221F020045 +:101A000002024F42231E030000454A4020100C00F2 +:101A100000454A4021100D00404222221A26400073 +:101A2000404222221B26410004043F4444544C00FF +:101A300004043F4445544D000001464020100F006F +:101A40000001464020110F000008444B2A120E00EE +:101A50000008444B2A120F00080A4A3E09090800F0 +:101A6000080A4A3E090809000018405820180000DA +:101A7000020C424C20100E00020C424C21100D00B2 +:101A80000405453D050504000405453D0504050024 +:101A900000007F080810000000007F080910010006 +:101AA0000444241F040404002022222222222000B5 +:101AB00040412515192700002022127B0612200024 +:101AC000404020100807000040300E00020C70005B +:101AD00040300E00020D710040300E00020D720009 +:101AE000003F484848444400003F484849444500B6 +:101AF000003F48484A4546000002424222120E007A +:101B00000002424223120F000002424222150E0040 +:101B1000080402040810200008040204091021002F +:101B2000080402040A1522002414447F041424002B +:101B30002414447F051425002414447F0615220034 +:101B400002021222520A0600002125294A42000000 +:101B500040704C435020400040442414083700009B +:101B60000008093F4949480000101C680818000097 +:101B700004040F74020A0600004048487840000040 +:101B8000202222223E20200000004454547C0000E9 +:101B900000424A4A4A4A7E000004454525150C0089 +:101BA000000F4040201F000040201E007F2010003A +:101BB00000007F4020100800007E424242427E002A +:101BC000000C4444241C00000006424222120E0075 +:101BD00010121E12127F12002022223A262220000A +:101BE0000001454525150F000041424020100C0022 +:101BF0000006424322120F000048281C48780000CB +:101C000000100C48380800000804040810100800F0 +:101C10000800000800000800040808080808080078 +:101C20000808080808080808C301BE01B801B00187 +:101C3000A901A2019A0195018F0188018101770113 +:101C40007001690165016001580152014C014701B1 +:101C500041013D01370132012B01270123011D0103 +:101C60001901160113010F010C01090106010301FD +:101C70000001F400EF00EA00060505070604090369 +:101C80000504090A08030303060305030305050306 +:101C900006040405050405040403040504090503FA +:101CA0003E0053656C656374205469700000000049 +:101CB00000003E5B4F5B3E3E6B4F6B3E1C3E7C3EEE +:101CC0001C183C7E3C181C577D571C1C5E7F5E1CFC +:101CD00000183C1800FFE7C3E7FF0018241800FFB6 +:101CE000E7DBE7FF30483A060E2629792926407FB0 +:101CF000050507407F05253F5A3CE73C5A7F3E1CBF +:101D00001C08081C1C3E7F14227F22145F5F005FAA +:101D10005F06097F017F006689956A606060606088 +:101D200094A2FFA29408047E040810207E201008CC +:101D3000082A1C08081C2A08081E101010100C1E67 +:101D40000C1E0C30383E3830060E3E0E06000000E9 +:101D5000000000005F00000007000700147F147FF0 +:101D600014242A7F2A12231308646236495620500D +:101D70000008070300001C2241000041221C002A29 +:101D80001C7F1C2A08083E080800807030000808E4 +:101D9000080808000060600020100804023E514955 +:101DA000453E00427F400072494949462141494D24 +:101DB000331814127F1027454545393C4A494931AB +:101DC00041211109073649494936464949291E002A +:101DD00000140000004034000000081422411414D4 +:101DE000141414004122140802015909063E415DF1 +:101DF000594E7C1211127C7F494949363E4141417E +:101E0000227F4141413E7F494949417F09090901FA +:101E10003E414151737F0808087F00417F41002007 +:101E200040413F017F081422417F404040407F02F3 +:101E30001C027F7F0408107F3E4141413E7F09091B +:101E400009063E4151215E7F091929462649494923 +:101E50003203017F01033F4040403F1F2040201FCD +:101E60003F4038403F63140814630304780403615F +:101E700059494D43007F414141020408102000416F +:101E800041417F04020102044040404040000307FA +:101E9000080020545478407F28444438384444444F +:101EA00028384444287F385454541800087E0902C6 +:101EB00018A4A49C787F0804047800447D40002086 +:101EC00040403D007F1028440000417F40007C04DA +:101ED0007804787C080404783844444438FC182496 +:101EE000241818242418FC7C08040408485454546A +:101EF0002404043F44243C4040207C1C2040201CFF +:101F00003C4030403C44281028444C9090907C4405 +:101F100064544C4400083641000000770000004142 +:101F200036080002010204023C2623263C1EA1A121 +:101F300061123A4040207A38545455592155557908 +:101F400041215454784121555478402054557940CA +:101F50000C1E527212395555555939545454593929 +:101F6000555454580000457C410002457D42000113 +:101F7000457C40F0292429F0F0282528F07C545590 +:101F800045002054547C547C0A097F493249494910 +:101F9000323248484832324A4848303A4141217A40 +:101FA0003A42402078009DA0A07D39444444393D08 +:101FB0004040403D3C24FF2424487E4943662B2F6B +:101FC000FC2F2BFF0929F620C0887E0903205454DA +:101FD00079410000447D413048484A32384040222F +:101FE0007A007A0A0A727D0D19317D2629292F2857 +:101FF000262929292630484D402038080808080895 +:10200000080808382F10C8ACBA2F102834FA00007E +:102010007B000008142A142222142A140895002296 +:102020000095AA005500AAAA55AA55AA000000FFCB +:1020300000101010FF00141414FF001010FF00FF18 +:102040001010F010F0141414FC001414F700FF002A +:1020500000FF00FF1414F404FC141417101F1010D8 +:102060001F101F1414141F00101010F000000000A7 +:102070001F101010101F10101010F010000000FFA3 +:10208000101010101010101010FF10000000FF149E +:102090000000FF00FF00001F10170000FC04F414F4 +:1020A000141710171414F404F40000FF00F71414AC +:1020B0001414141414F700F7141414171410101F28 +:1020C000101F141414F4141010F010F000001F105E +:1020D0001F0000001F14000000FC140000F010F0AE +:1020E0001010FF10FF141414FF141010101F000024 +:1020F0000000F010FFFFFFFFFFF0F0F0F0F0FFFF37 +:10210000FF0000000000FFFF0F0F0F0F0F384444C7 +:1021100038447C2A2A3E147E02020606027E027E93 +:102120000263554941633844443C04407E201E20EC +:1021300006027E020299A5E7A5991C2A492A1C4C91 +:102140007201724C304A4D4D303048784830BC6294 +:102150005A463D3E494949007E0101017E2A2A2A0C +:102160002A2A44445F444440514A444040444A512E +:10217000400000FF0103E080FF000008086B6B08CF +:102180003612362436060F090F0600001818000014 +:10219000001010003040FF0101001F01011E001956 +:1021A0001D1712003C3C3C3C0000000000000000F9 +:1021B00000240027002A0000000000250028002B32 +:1021C0000000000000230026002900040404040489 +:1021D00004040402020202020203030303030301D4 +:1021E00002040810204080010204081020010204AB +:1021F000081020AED5F0A83FD300408D14A1C8DA56 +:102200001281CFD9F1DB40A4A6AF200021007F22AC +:102210000007506C65617365207761697400414403 +:10222000433A200074656D703A2000536574206D48 +:102230006561737572656400537465703A2000FFC0 +:10224000FFFFFFFFFF80038670800380038670809E +:10225000039FF3E1309FF39FF3E1309FF398330145 +:10226000CC9833983301CC9833983387C0983398FF +:1022700033E1C098339833E1C098339FF398C09FFF +:10228000F39FF398C09FF3800366CC8003800366BE +:10229000CC8003FFFF010CFFFFFFFF01001FFF8148 +:1022A0000061301F3F873CE6FC8733873CE6FC87B4 +:1022B000F3F8039E0F1F03F8039E0F1F03E13CFE7C +:1022C0000C07CFE13CFE0C07CF99033E3086C3E6F6 +:1022D000CF380F9EF3E6CF380F9EF39E0327CC81B5 +:1022E000039E0327CC8103E0FFE10CE6CFE0FFE192 +:1022F0000CE6CF9803060000FF9803060000FFFFDE +:10230000FF1EF0F8038003663099C380036630999E +:10231000C39FF3010CF8FF9FF3010CF8FF983339CA +:102320003C01CF9833393C01CF9833FF0C793F986B +:10233000333ECCE0F398333ECCE0F39FF33E00987D +:10234000CF9FF33E0098CF80033E30E7C380033E2B +:1023500030E7C3FFFFFFFFFFFFFFFFFFFFFFFF307F +:1023600030300076312E377433005600560043006B +:102370000FE01FC01FC03F803FF87FF07FE007C025 +:1023800007800F000E001C001800100014A03FF082 +:102390007FF8E01C6E18EC1C68186018E01C605890 +:1023A000E01C7FF83FF014A04552524F5200484FB6 +:1023B0004C44004845415400574F524B5900424F3E +:1023C0004F535400534C454550004F4646000000C3 +:1023D0003BEC7BEE63E663E663E663E663E663E6B7 +:1023E00063666226600660067FFE3FFC0000010215 +:1023F00004081020408000000008000201000003D3 +:1024000004070000000000000000372811241FBE50 +:10241000CFEFD8E0DEBFCDBF12E0A0E0B1E0ECE24C +:10242000FEE602C005900D92A63CB107D9F728E060 +:10243000A6ECB2E001C01D92AF30B207E1F712E1A5 +:10244000C6E0D2E104C02197FE010E94F536C530F6 +:10245000D107C9F70E94EC280C9414370C940000A3 +:102460004F925F926F927F928F929F92AF92BF92A4 +:10247000CF92DF92EF92FF920F931F93CF93DF9350 +:1024800000D000D0CDB7DEB74B015C0129013A0185 +:102490006701780120E030E0A9010E94983287FDB1 +:1024A000A6C020E030E0A901C301B2010E94983229 +:1024B00087FD9DC020E030E0A901C801B6010E945F +:1024C000983287FD94C081E02091D9073091DA07D6 +:1024D0002130310509F080E08093FA078092BF0730 +:1024E0009092C007A092C107B092C2074092C30762 +:1024F0005092C4076092C5077092C607C092C70782 +:10250000D092C807E092C907F092CA076091ED0720 +:102510007091EE078091EF079091F0070E949D3235 +:1025200020E030E04AE754E40E949A3469837A83D9 +:102530008B839C838092CB079092CC07A092CD078F +:10254000B092CE079B01AC01C301B2010E94FE32E2 +:102550002B013C014092CF075092D0076092D107E7 +:102560007092D20729813A814B815C81C701B60103 +:102570000E949A346B017C01C092D307D092D40799 +:10258000E092D507F092D6078091D7079091D807AF +:10259000019769F5A501940160E070E0CB010E940C +:1025A0002D346093CB077093CC078093CD07909325 +:1025B000CE07A301920160E070E0CB010E942D34B0 +:1025C0006093CF077093D0078093D1079093D20781 +:1025D000A701960160E070E0CB010E942D3460936A +:1025E000D3077093D4078093D5079093D6070F90A5 +:1025F0000F900F900F90DF91CF911F910F91FF904F +:10260000EF90DF90CF90BF90AF909F908F907F9092 +:102610006F905F904F90089580389105B0F46034CA +:10262000710598F4EEEEF3E290E1969FD001A07868 +:102630001124A80F6770E60FF11D9491AA5EBC4F9C +:10264000442321F08C91982B9C93089590958C9124 +:102650009823FACFDF92EF92FF920F931F93CF93BD +:10266000DF937C01D22E8B01040F111DEB0177FF4C +:1026700002C0D0E0C0E0C8010134110514F080E4CC +:1026800090E0C817D9073CF44D2DBE01C7010E9448 +:102690000C132196F0CFDF91CF911F910F91FF90F6 +:1026A000EF90DF900895CF92DF92EF92FF920F9319 +:1026B0001F93CF93DF936B01122FEC017C01E40E8B +:1026C000F11CCE15DF0544F4202F412FB601CE01B9 +:1026D0000E942A132196F5CFDF91CF911F910F9180 +:1026E000FF90EF90DF90CF9008952F923F924F92FE +:1026F0005F926F927F928F929F92AF92BF92CF9292 +:10270000DF92EF92FF920F931F93CF93DF9300D04E +:102710001F92CDB7DEB7C22ED12C9601280F391FDC +:1027200037FD4FC0803891050CF04BC0E9824A015B +:102730007B013C01402E512C160127E0220E311C5A +:1027400093E0359427949A95E1F78B01B12CA12C55 +:102750001B821A82EA81FB8183E0F595E7958A95D1 +:10276000E1F7EA0DFB1DE80DF91DE4918A819B81DB +:102770008770992720E830E002C0359527958A9523 +:10278000E2F7C901F0E0E223F923EF2B41F04981A0 +:10279000B8018A819B81860D971D0E940C138A8146 +:1027A0009B8101969B838A838C159D059CF2A20CCC +:1027B000B31C0F5F1F4FC8018E199F098415950523 +:1027C0003CF20F900F900F90DF91CF911F910F91DE +:1027D000FF90EF90DF90CF90BF90AF909F908F9041 +:1027E0007F906F905F904F903F902F9008950F9340 +:1027F0001F93CF93DF93EC018B0140E001960E9481 +:102800000C1340E0B801CE0101970E940C13B801EF +:102810006F5F7F4F40E0CE010E940C13B801615002 +:10282000710940E0CE010E940C1340E0B801CE01D6 +:10283000DF91CF911F910F910C940C1380E0E6E192 +:10284000F3E081118FEF0024819381938193819331 +:102850000394D1F7EBEFF7E01786168615861486FA +:1028600008956F927F928F929F92AF92BF92CF9274 +:10287000DF92EF92FF920F931F93CF93DF938038F5 +:1028800091050CF057C0603471050CF053C07B010A +:1028900037E0E322FF2433E0759567953A95E1F739 +:1028A000DB01B695BA2FAA27B795A7955D01C0E8B9 +:1028B000AC0EB11CA80EB91EA80FB91FAA5EBC4F62 +:1028C00000E810E0081B190B90E080E0E8E0F0E081 +:1028D0004F018E189F0830E0FA01E80FF91FC491EC +:1028E0007D906D01D1E0CD1AD1080E2C01C0CC0F26 +:1028F0000A94EAF77C2AE6017882E114F10499F05F +:102900006730710581F0E491EC01CA0DDB1DCA5EF0 +:10291000DC4FF0E0082C02C0F595E7950A94E2F749 +:10292000F881EF2BE8830196821793071CF40817B0 +:10293000190791F6DF91CF911F910F91FF90EF90C2 +:10294000DF90CF90BF90AF909F908F907F906F90CF +:102950000895AF92BF92CF92DF92EF92FF920F93C2 +:102960001F93CF93DF936C017B018B01040F151F25 +:10297000EB015E01AE18BF08C017D10759F069918D +:10298000D601ED91FC910190F081E02DC6010995F1 +:10299000892B79F7C501DF91CF911F910F91FF909E +:1029A000EF90DF90CF90BF90AF900895FC01538DD2 +:1029B000448D252F30E0842F90E0821B930B541719 +:1029C00010F0CF96089501970895FC01918D828DA6 +:1029D000981761F0A28DAE0FBF2FB11D5D968C913F +:1029E000928D9F5F9F73928F90E008958FEF9FEF7E +:1029F0000895FC01918D828D981731F0828DE80F3A +:102A0000F11D858D90E008958FEF9FEF0895FC01F3 +:102A1000918D228D892F90E0805C9F4F821B9109C0 +:102A20008F739927089586E197E00E94071521E0AA +:102A3000892B09F420E0822F089580E090E0892B13 +:102A400029F00E94131581110C9400000895FC01D7 +:102A5000A48DA80FB92FB11DA35ABF4F2C91848DFF +:102A600090E001968F739927848FA689B7892C935C +:102A7000A089B1898C91837080648C93938D848DAF +:102A8000981306C00288F389E02D80818F7D8083B2 +:102A90000895EF92FF920F931F93CF93DF93EC0172 +:102AA00081E0888F9B8D8C8D98131AC0E889F989F5 +:102AB000808185FF15C09FB7F894EE89FF896083F8 +:102AC000E889F98980818370806480839FBF81E079 +:102AD00090E0DF91CF911F910F91FF90EF900895BB +:102AE000F62E0B8D10E00F5F1F4F0F731127E02E96 +:102AF0008C8D8E110CC00FB607FCFACFE889F989CE +:102B0000808185FFF5CFCE010E942715F1CFEB8D97 +:102B1000EC0FFD2FF11DE35AFF4FF0829FB7F894A1 +:102B20000B8FEA89FB8980818062CFCFCF93DF93BF +:102B3000EC01888D8823B9F0AA89BB89E889F989D5 +:102B40008C9185FD03C0808186FD0DC00FB607FC0A +:102B5000F7CF8C9185FFF2CF808185FFEDCFCE013D +:102B60000E942715E9CFDF91CF910895833081F03E +:102B700028F4813099F08230A9F008958730A9F0C7 +:102B80008830C9F08430B1F4809180008F7D03C01B +:102B9000809180008F7780938000089584B58F772F +:102BA00084BD089584B58F7DFBCF8091B0008F7771 +:102BB0008093B00008958091B0008F7DF9CFCF93BE +:102BC000DF93282F30E0F901EA50FC4D8491F901A0 +:102BD000E152FE4DD491F901E553FE4DC491CC2351 +:102BE000A1F081110E94B615EC2FF0E0EE0FFF1F4F +:102BF000EF53FE4DA591B491EC91ED2381E090E06F +:102C000009F480E0DF91CF91089580E090E0FACF61 +:102C10001F93CF93DF93282F30E0F901EA50FC4D4A +:102C20008491F901E152FE4DD491F901E553FE4D35 +:102C3000C491CC23A9F0162F81110E94B615EC2F58 +:102C4000F0E0EE0FFF1FE954FE4DA591B4918FB750 +:102C5000F894EC91111108C0D095DE23DC938FBF5E +:102C6000DF91CF911F910895DE2BF8CFCF93DF93A3 +:102C700090E0FC01E152FE4D249185539E4DFC01F4 +:102C800084918823C9F090E0880F991FFC01E355D7 +:102C9000FE4DA591B491FC01E954FE4DC591D4912E +:102CA00061110DC09FB7F8948C91209582238C936D +:102CB0008881282328839FBFDF91CF9108956230B8 +:102CC00051F49FB7F8943C91822F809583238C9385 +:102CD000E8812E2BEFCF8FB7F894EC912E2B2C930D +:102CE0008FBFEACFCF93DF93EC0161E089E00E94D0 +:102CF0003616209731F460E089E0DF91CF910C9493 +:102D00000816CF3FD10511F461E0F6CFEFEFF3E203 +:102D1000E491E33029F140F4E130B1F0E230D9F050 +:102D2000C038D1058CF7E7CFE73021F1E83051F119 +:102D3000E430B1F780918000806280938000D0936E +:102D40008B00C0938A0004C084B5806884BDC7BD71 +:102D5000DF91CF91089584B5806284BDC8BDF8CF5E +:102D600080918000806880938000D0938900C09318 +:102D70008800EECF8091B00080688093B000C0934F +:102D8000B300E6CF8091B00080628093B000C09322 +:102D9000B400DECF3FB7F8948091E0029091E10259 +:102DA000A091E202B091E30226B5A89B05C02F3F97 +:102DB00019F00196A11DB11D3FBFBA2FA92F982F61 +:102DC0008827BC01CD01620F711D811D911D42E05C +:102DD000660F771F881F991F4A95D1F708958F9224 +:102DE0009F92AF92BF92CF92DF92EF92FF924B01F0 +:102DF0005C010E94CA166B017C010E94CA166C1904 +:102E00007D098E099F09683E734081059105A8F3ED +:102E100021E0821A9108A108B10888EEC80E83E06B +:102E2000D81EE11CF11C81149104A104B10429F7FE +:102E3000FF90EF90DF90CF90BF90AF909F908F90DA +:102E400008952FB7F8946091DC027091DD028091B3 +:102E5000DE029091DF022FBF089584E98093BC00C9 +:102E60008091BC0084FDFCCF08958093BB0084E872 +:102E70008093BC008091BC0087FFFCCF089584EA5A +:102E80008093BC008091BC0087FFFCCF88E70C9446 +:102E900035170E943F1780E48093BB0084E880933D +:102EA000BC00E6E1F3E09091BC0097FFFCCF91916C +:102EB0009093BB008093BC0097E0E631F90799F747 +:102EC0008091BC0087FFFCCF0C942D17CF93C82FA7 +:102ED0000E943F1780E00E9435178C2F0E94351703 +:102EE000CF910C942D17480F592F511D4138510582 +:102EF00014F040E850E0481BFB0177FD379633E0C3 +:102F0000F595E7953A95E1F7F695FE2FEE27F795BB +:102F1000E795E80FF91FEA5EFC4F6770772781E0BD +:102F200090E001C0880F6A95EAF7382F213041F40C +:102F3000415078F08191DF011197832B8C93F8CF6A +:102F40008095415030F09191DF01119798239C9327 +:102F5000F8CF0895CF92DF92EF92FF920F93CF9325 +:102F6000DF936C017B01C42FD22F202F0E94731797 +:102F7000B7016D0F711D61507109603471052CF43A +:102F8000202F4C2FC6010E947317202F4D2FB70101 +:102F9000C6010E942A13C6018C0F911D202F4D2FB0 +:102FA000B7010197DF91CF910F91FF90EF90DF90E4 +:102FB000CF900C942A132F923F924F925F926F9270 +:102FC0007F928F929F92AF92BF92CF92DF92EF92B9 +:102FD000FF920F931F93CF93DF93CDB7DEB72A975E +:102FE0000FB6F894DEBF0FBECDBF9A8389836A30D7 +:102FF00061F5DC0152968C91B8E08B9F9001112411 +:10300000E981FA8186859785820F931F9787868746 +:103010001586148681E090E02A960FB6F894DEBFFC +:103020000FBECDBFDF91CF911F910F91FF90EF9019 +:10303000DF90CF90BF90AF909F908F907F906F90D8 +:103040005F904F903F902F9008956D3019F3298134 +:103050003A813A872987D9011C96AD90BC90B0E897 +:10306000AB16B1040CF07BC0F901C684D784F0E440 +:10307000CF16D1040CF073C0D90152966C905297C0 +:1030800045E09501649E200D311D11241216130692 +:103090000CF065C0262C312C910153E0220F331F18 +:1030A0005A95E1F72C0D3D1D121613060CF057C072 +:1030B0005196BC91BB83E985FA85F089FC83649FB6 +:1030C000B00111249B012355334E3A832983712C7F +:1030D000E981FA818491F5E07F1201C080E0460128 +:1030E00038E0532E282F30E03E832D834C8080FF24 +:1030F0004B80411004C03B818C813817E1F010E017 +:1031000000E00615C0F4D501A00FB11FB887AF834A +:10311000F12CE12CE61460F4B701680D791D442D03 +:103120008F8198850E940C13BFEFEB1AFB0AF2CF38 +:103130000F5F1F4FE6CF8D819E81959587955A949D +:10314000820C931C5110CECF7394E981FA81319691 +:10315000FA83E983A20CB31CF6E07F12B9CFA985EC +:10316000BA8552962C915297422F50E01C968D9121 +:103170009C91B6E02B9F800D911D1124E985FA8565 +:10318000958784872389222309F444CF6AEF640357 +:103190009001659F300D112420583F4F28173907A3 +:1031A0000CF038CFDF010190F081E02D0190F0812B +:1031B000E02D6AE0CD0109952DCF0F931F93CF939A +:1031C000DF938C01D0E0C0E0F801EC0FFD1F6491AB +:1031D000662341F08BEF97E00E94DB17892B11F0FB +:1031E0002196F2CFCE01DF91CF911F910F910895DB +:1031F000682F8BEF97E00C94DB17089590E080E048 +:10320000089580917A00806980937A008EE480939B +:103210007C0061E070E080E090E00E94EF1683B7F0 +:10322000817F826083BF80E130E020E093B79160CE +:1032300093BF889593B79E7F93BF90917A0096FD38 +:10324000FCCF4091780050917900240F351F8150B8 +:1032500069F780917A008F7780937A0084E03695C1 +:1032600027958A95E1F750E040E064EB7BE281E14D +:1032700090E00E94D233C901089588EC80937C00CD +:1032800080917A00806880937A0065E070E080E049 +:1032900090E00E94EF1680917A00806480937A001B +:1032A00080917A0086FDFCCF609178007091790062 +:1032B0006A54714090E080E00E949D3226EF38E22F +:1032C0004CE95FE30E949A34089590917A009069E6 +:1032D00090937A008E50806480937C0083B7817FC6 +:1032E000826083BF20E290E080E033B7316033BF7B +:1032F000889533B73E7F33BF30917A0036FDFCCFDF +:103300004091780050917900840F951F215069F702 +:1033100020917A002F7720937A0025E09695879563 +:103320002A95E1F708958FE00E946519A091E702C0 +:10333000B091E8029C010E941E340E949F3228E551 +:1033400039E743E353E40E949A340E941335CB01DA +:1033500008952091F50230E0E1E7F2E090E080E0AE +:10336000AF01415752404217530724F44191840F53 +:10337000911DF6CF08958091EE02882369F086E0D2 +:103380000E94DF15892B41F06AE070E080E090E058 +:103390000E94EF161092EE0208950F931F93CF93A1 +:1033A00080914801882399F0CFEF0FEE11E061E0A2 +:1033B00085E00E940816C8010197F1F760E085E0FA +:1033C0000E940816C8010197F1F7C15081F7CF910B +:1033D0001F910F9108952F923F924F925F926F929B +:1033E0007F928F929F92AF92BF92CF92DF92EF9295 +:1033F000FF920F931F93CF93DF9310E000E0D0E094 +:10340000C0E03EE3E32EF12C40ECC42ED12CAA24E4 +:10341000A394B12C60E2662E712C70E4272E312C1F +:103420004C2E86E00E94DF1521E0892B09F020E078 +:103430002093EE02F092F402E092F302D092F202B4 +:10344000C092F102B092F002A092EF0282E890E006 +:10345000909300038093FF028091FF0290910003FC +:1034600095958795582E9FE1591243C0F092F4022A +:10347000E092F302D092F202C092F102B092F00216 +:10348000A092EF02EEEBF0E0F0930003E093FF0276 +:103490009FE5592E0E941E1482E080930D08109320 +:1034A000080800930708E0E3F0E0F0930A08E093CF +:1034B00009088EE50E94F818109208081092070873 +:1034C00070920A0860920908912C812C841438F5B6 +:1034D00080911503F40196E0989FE00DF11D1124F1 +:1034E000E05BFE4F80810E94F818EFEF8E1A9E0A73 +:1034F000EDCFF0E65F12CECFF092F402E092F3024D +:10350000D092F202C092F102B092F002A092EF02C9 +:10351000309200032092FF0280E2582EBBCF10931E +:1035200008080093070870920A0860920908852D20 +:103530000E94F8180E94BB190E94491786E00E9459 +:10354000DF15892B09F088CF8091EE02811184CF9D +:1035500080901503F6E08F9E40011124C401805B2A +:103560009E4F4C01FC01EC0FFD1F50820E94CD19B3 +:103570006AE070E080E090E00E94EF162196005F24 +:103580001F4FC530D10509F04BCFF4011582DF91F3 +:10359000CF911F910F91FF90EF90DF90CF90BF9050 +:1035A000AF909F908F907F906F905F904F903F90E3 +:1035B0002F9008953F924F925F926F927F928F92D9 +:1035C0009F92AF92BF92CF92DF92EF92FF920F93B2 +:1035D0001F93CF93DF93CDB7DEB72E970FB6F89436 +:1035E000DEBF0FBECDBF80911203882309F4A5C1B1 +:1035F0001092B3071092B4071092B5071092B60755 +:103600008090B3079090B407A090B507B090B6072C +:10361000C0900803D0900903E0900A03F0900B03D8 +:10362000A7019601C501B4010E942D342B013C0174 +:1036300020E030E0A9010E94423518160CF0A0C12C +:10364000C301B2010E94133580914901882309F416 +:10365000B8C1C092BB07D092BC07E092BD07F09200 +:10366000BE07E12CF12C00EA10E420E030E040E459 +:1036700050E46E31710540F0E12CF12C00E81FE3BD +:1036800020E030E040E05FE360E070E080E391E460 +:103690000E9430128091F907882309F42AC10E9400 +:1036A00021176D837E838F8398878091E1079091A6 +:1036B000E207A091E307B091E4074D815E816F813D +:1036C0007885481B590B6A0B7B0B8091ED07909115 +:1036D000EE07A091EF07B091F007481759076A0766 +:1036E0007B0708F406C1E091DB07F091DC078081DD +:1036F0009181A281B38189839A83AB83BC83E0915A +:10370000DF07F091E0079C01AD016081718182814A +:1037100093810E942D344B015C012091E907309187 +:10372000EA074091EB075091EC0769817A818B8120 +:103730009C810E942D346B017C012091CF07309138 +:10374000D0074091D1075091D207C501B4010E9422 +:10375000FE322091E5073091E6074091E70750914E +:10376000E8070E942E342B013C014092E50750925D +:10377000E6076092E7077092E8073090FA07311089 +:103780001AC02091CB073091CC074091CD075091C2 +:10379000CE07C701B6010E94FE329B01AC01C301F6 +:1037A000B2010E942D346093E5077093E607809381 +:1037B000E7079093E8074090E5075090E607609090 +:1037C000E7077090E8071091F5079091F6079E873C +:1037D000A091F707AD870091F807212F392F4A2FC5 +:1037E000502FC301B2010E94423518160CF0CCC014 +:1037F000812F9E85AD85B02F8093E5079093E607D6 +:10380000A093E707B093E807332009F4D6C02091CE +:10381000CB073091CC074091CD075091CE07C50121 +:10382000B4010E94FE324B015C012091D30730911C +:10383000D4074091D5075091D607C701B6010E9421 +:10384000FE329B01AC016091E5077091E607809123 +:10385000E7079091E8070E942D34A50194010E948A +:103860002E346B017C019B01AC01612F7E858D851F +:10387000902F0E94983287FD18C01091F107909107 +:10388000F2079E87A091F307AD870091F407212FDF +:10389000392F4A2F502FB601C7010E94983287FD59 +:1038A00004C01C2DDE86ED860F2DE091DD07F09122 +:1038B000DE07812F9E85AD85B02F80839183A28303 +:1038C000B38389819A81AB81BC818093E90790930E +:1038D000EA07A093EB07B093EC078D819E81AF813F +:1038E000B8858093E1079093E207A093E307B09334 +:1038F000E4076091B7077091B8078091B90790917C +:10390000BA070E940C35CB012E960FB6F894DEBF95 +:103910000FBECDBFDF91CF911F910F91FF90EF9020 +:10392000DF90CF90BF90AF909F908F907F906F90DF +:103930005F904F903F900C947216809111036091AC +:1039400044017091450181110EC080910603909150 +:10395000070320911003BC01222329F06091430149 +:10396000680F792F711D90E080E00E949D32609376 +:10397000B3077093B4078093B5079093B60740CE12 +:10398000C301B20190585ECE8091F1079091F20789 +:10399000A091F307B091F40789879A87AB87BC871A +:1039A0009C01AD01C301B2010E94983287FF2CCF68 +:1039B00089859A85AB85BC851FCF812C912C5401BC +:1039C00034CF20E030E040E05FE3C701B6010E9461 +:1039D0002E349B01AC01C501B4010E94423518167A +:1039E0004CF41092B7071092B8071092B9071092D2 +:1039F000BA077FCF80E090E0AFE7B3E48093B707EA +:103A00009093B807A093B907B093BA0772CF4F92BB +:103A10005F926F927F928F929F92AF92BF92CF925E +:103A2000DF92EF92FF92CF93DF938090E902909024 +:103A3000EA02A090EB02B090EC02C0911503D0E036 +:103A4000C501B4010E940C356B017C0120E030E01F +:103A500048E453E4C501B4010E94983293E0CC0FCE +:103A6000DD1F9A95E1F7CE5FDE4F87FF31C02881D9 +:103A7000398150E040E02551310941095109C70120 +:103A8000B6010E94D13628EC30E040E050E00E94C0 +:103A9000D233CA01B9016B5E7F4F8F4F9F4F0E9497 +:103AA0009F32609308037093090380930A039093F5 +:103AB0000B03DF91CF91FF90EF90DF90CF90BF90FD +:103AC000AF909F908F907F906F905F904F900895F0 +:103AD0004A805B80712C612C20E030E04CE853E49C +:103AE000C501B4010E94983287FF1FC08880998069 +:103AF000B12CA12CA7019601285C3109410951097B +:103B0000C301B201681979098A099B090E94D1365B +:103B100020E530E040E050E00E94D233CA01B90114 +:103B2000680D791D8A1D9B1DBACF2C813D8150E007 +:103B300040E02419350946095709C701B601685103 +:103B40007140810991090E94D13620E530E040E0C2 +:103B500050E00E94D233CA01B901640D751D861D63 +:103B6000971D9DCFFC0101900020E9F73197AF012F +:103B7000481B590BBC018BEF97E00C94A9148F9252 +:103B80009F92AF92BF920F931F93CF93DF93CDB7C6 +:103B9000DEB7A1970FB6F894DEBF0FBECDBF19A256 +:103BA000423008F44AE08E010F5D1F4F842E912CA5 +:103BB000B12CA12CA50194010E94FC33E62FB90180 +:103BC000CA01EA30F4F4E05DD801EE938D01232BB5 +:103BD000242B252B79F790E080E0109719F0CD0188 +:103BE0000E94B21DA1960FB6F894DEBF0FBECDBFE6 +:103BF000DF91CF911F910F91BF90AF909F908F90C9 +:103C00000895E95CE1CFCF92DF92EF92FF92CF93DC +:103C1000DF9397FF19C06B017C018DE20E94F818B9 +:103C2000EC0166277727CB016C197D098E099F0966 +:103C30004AE00E94BF1D8C0F9D1FDF91CF91FF9026 +:103C4000EF90DF90CF9008954AE0DF91CF91FF9001 +:103C5000EF90DF90CF900C94BF1D4F925F926F92C8 +:103C60007F928F929F92AF92BF92CF92DF92EF920C +:103C7000FF920F931F93CF936B017C01742EAC01C5 +:103C80009B010E949735882399F086EB92E0CF91B3 +:103C90001F910F91FF90EF90DF90CF90BF90AF906A +:103CA0009F908F907F906F905F904F900C94B21D7B +:103CB00046015701E894B7F82FEF3FEF4FE75FE772 +:103CC000C501B4010E94973581110DC02FEF3FEF60 +:103CD0004FE75FE7C501B4010E94983218161CF443 +:103CE0008AEB92E0D4CF2FEF3FEF4FE75FE4C701BD +:103CF000B6010E94423518161CF48EEB92E0C7CF35 +:103D00002FEF3FEF4FE75FECC701B6010E949832FB +:103D100087FDF3CF20E030E0A901C701B6010E9482 +:103D2000983210E000E087FF08C08DE20E94F8188A +:103D30008C01F7FAF094F7F8F094C0E060E070E0DE +:103D400080E09FE37C1641F020E030E040E251E467 +:103D50000E949A34CF5FF6CFA70196010E942E34BD +:103D60002B013C010E9413354B015C014AE00E948B +:103D7000BF1D7C01E00EF11ECC23B1F1C501B401E1 +:103D80000E949D329B01AC01C301B2010E942D34FF +:103D90004B015C018EE20E94F818E80EF91EC1503A +:103DA00018F120E030E040E251E4C501B4010E9486 +:103DB000FE322B013C010E9413354B01B12CA12C8A +:103DC0004AE0C501B4010E94BF1DE80EF91EC501FD +:103DD000B4010E949D329B01AC01C301B2010E945B +:103DE0002D344B015C01DBCFC701CF911F910F91A7 +:103DF000FF90EF90DF90CF90BF90AF909F908F900B +:103E00007F906F905F904F900895CF92DF92EF92E6 +:103E1000FF920F931F93CF93DF93C82F81E0DC2F86 +:103E2000D827D0930C08C0930B0880930D080C2F53 +:103E30002EE046E661E370E081E090E00E94AA1780 +:103E40002091130330911403253F81E03807B8F423 +:103E5000A4E6B0E00E941E3424EF31E040E050E0E0 +:103E60000E94D233BA01A9014E5F5F4F6F4F7F4F5F +:103E70002EE061E370E081E090E00E9453136091D6 +:103E8000B3077091B4078091B5079091B6070E946F +:103E90000C359B01AC01A4E6B0E00E94F13334EF95 +:103EA000C32EDD24D394E12CF12CA70196010E94AE +:103EB000D233DA01C9010296A11DB11D02970C2F60 +:103EC0002DE043E062E370E00E9453136091B3077A +:103ED0007091B4078091B5079091B6070E940C3598 +:103EE0009B01AC01A4E6B0E00E94F133A70196016A +:103EF0000E94D233DA01C9010296A11DB11D0397B8 +:103F000024E045E06CE370E00E9453136091B30736 +:103F10007091B4078091B5079091B6070E940C3557 +:103F20009B01AC01A4E6B0E00E94F133A701960129 +:103F30000E94D23389019A010E5F1F4F2F4F3F4FCE +:103F40000150110941E3E42EF12C4D2FB701C801B6 +:103F50000E940C138FEFE81AF80A8DE3E816F104BB +:103F6000A1F76091B3077091B4078091B507909164 +:103F7000B6070E940C359B01AC01A4E6B0E00E949C +:103F8000F13324EF31E040E050E00E94D233DA0117 +:103F9000C9010296A11DB11D0397ED2E04E025E095 +:103FA00040EF51E16BE370E00E9475130C2F2EE09F +:103FB00047E161E370E088E690E00E94AA17609113 +:103FC000B7077091B8078091B9079091BA070E941E +:103FD0000C359B01AC012F5F310941095109A7E163 +:103FE000B0E00E94F133CC24C394DD24DA94ED2CAC +:103FF000FD2CA70196010E94D233422F2EE061E3EF +:1040000070E088E690E00E945313C0930C08D093B0 +:104010000B0882E090E0909308088093070807E37C +:1040200010E010930A08009309086091B30770919B +:10403000B4078091B5079091B60740E00E942D1E0D +:1040400088EF0E94F8188EEE91E10E94DD1889E653 +:1040500090E0909308088093070810930A08009353 +:1040600009086091B7077091B8078091B9079091DE +:10407000BA070E940C359B01AC012F5F3109410941 +:104080005109A4E6B0E00E94F133A70196010E9415 +:10409000D233CA01B9010E94031E8CEE91E10E9445 +:1040A000DD18D0930C08C0930B08DF91CF911F91BE +:1040B0000F91FF90EF90DF90CF9008956F927F92D5 +:1040C0008F929F92AF92BF92CF92DF92EF92FF9228 +:1040D0000F931F93CF93DF93B090150377247394BE +:1040E000B11001C0712C809142018150990B109246 +:1040F000F4021092F302880F991F9093F2028093BA +:10410000F10281E090E09093F0028093EF028B2D1A +:1041100090E0880F991F909300038093FF0286E040 +:104120000E94DF1521E0892B09F020E02093EE02A8 +:10413000FF24F39472E0972EE6E08E2EFCE0CF2E63 +:10414000D12C0E941E14C091FF02D0910003D5957E +:10415000C795EC2E8E011127C801870D911D77FCA4 +:104160009A958B199109712C97FD06C083309105A2 +:1041700014F082E090E0782EF0920C0810920B0878 +:1041800090920D08109208081092070810920A08E1 +:104190001092090882EA9CE10E94DD1810920C0836 +:1041A000F0920B081092080810920708A72C072C11 +:1041B000000CBB08C501019654E0880F991F5A9561 +:1041C000E1F790930A088093090880EA9CE10E9435 +:1041D000DD186C2E671890E080E098012A193B09E1 +:1041E0005901209142018C010F5F1F4F6216D0F4DC +:1041F000D0920808C0920708980144E0220F331FAC +:104200004A95E1F730930A08209309088A0D9B1D0F +:10421000889E9001899E300D1124C901805B9E4FBC +:104220000E94B21DC801639403301105D1F60E94AB +:10423000BB190E94491786E00E94DF15892BB9F44B +:104240008091EE02811113C00E94CD19E0921503F6 +:10425000DF91CF911F910F91FF90EF90DF90CF9062 +:10426000BF90AF909F908F907F906F900895BC2EDD +:1042700068CF0E940F371F93CF93DF93EC01162F67 +:104280000E94BC33181739F0612FCE01DF91CF9116 +:104290001F910C94C433DF91CF911F910895AF9279 +:1042A000BF92CF92DF92EF92FF920F931F93CF9323 +:1042B000DF936091470182E090E00E943B21609192 +:1042C000460183E090E00E943B216091450184E03B +:1042D00090E00E943B216091440185E090E00E94C3 +:1042E0003B216091430186E090E00E943B21609178 +:1042F0004C0187E090E00E943B2160914B0188E0F7 +:1043000090E00E943B2160914A0189E090E00E9488 +:104310003B21609180018AE090E00E943B21609106 +:1043200049018BE090E00E943B21609148018CE0C4 +:1043300090E00E943B21609115038DE090E00E9487 +:104340003B21609142018EE090E00E943B21609110 +:104350004E018FE090E00E943B216091ED0280E1F0 +:1043600090E00E943B2160910D0381E190E00E946A +:104370003B2182E1E82EF12C10E006E08091420121 +:104380001817B8F5109F60011124D0E0C0E0FE01BD +:10439000EC0DFD1DE05BFE4F6081C7018C0F9D1F82 +:1043A0000E943B212196C630D10589F7670186E03E +:1043B000C80ED11C88E0189FE0011124CE5FDE4FAB +:1043C0008EE0E80EF11C69812296C6010E943B2115 +:1043D000560182E0A80EB11CFE0132976081C60131 +:1043E00001960E943B216501AE14BF0461F71F5F77 +:1043F000C5CFDF91CF911F910F91FF90EF90DF908C +:10440000CF90BF90AF9008958F929F92AF92BF923E +:10441000CF92DF92EF92FF92CF938FEF90E00E94C6 +:1044200072168BEA94E00197F1F78EE00E9465190D +:104430007C018AE00E94DF159091C602981729F04E +:1044400091E090930C038093C602809101019FEF4D +:10445000980F90930101811106C00E9493199093C7 +:104460000F0380930E036091B7077091B807809196 +:10447000B9079091BA070E940C35CB010E947216C1 +:104480008090E9029090EA02A090EB02B090EC02DA +:10449000B70190E080E00E949D32A50194010E9446 +:1044A0002D342DEC3CEC4CE45DE30E94FE32A50182 +:1044B00094010E942E346093E9027093EA02809383 +:1044C000EB029093EC020E94071D60911303709120 +:1044D000140390E080E00E949D326B017C012091EA +:1044E000B3073091B4074091B5075091B6070E94C9 +:1044F00098328111B5C02091080330910903409191 +:104500000A0350910B03C701B6010E942D346B01C1 +:104510007C0120E030E0A9010E94423518160CF021 +:1045200095C020E030E040EA50E4C701B6010E94A7 +:10453000423518160CF494C060910603709107037D +:1045400090E080E00E949D322091080330910903A1 +:1045500040910A0350910B030E942D346B017C01A2 +:1045600020E030E0A9010E94423518160CF087C007 +:10457000C701B6010E9413356530710508F083C08C +:1045800080914F01811105C080914D0181110E94E0 +:10459000CD1981E080934F0110924D01809113035A +:1045A00090911403853F21E0920710F010920001D2 +:1045B00020910001211140C0843F9140E8F58FEF28 +:1045C00090E00E9472160E94CD19C1E0C0930001D4 +:1045D0000E945E200E944F21C0930C038EE00E9437 +:1045E0006519BC0190E080E00E949D326093E90271 +:1045F0007093EA028093EB029093EC021092FE0219 +:1046000080910603909107032CE231E03093F4028D +:104610002093F30220E233E03093F2022093F10280 +:104620002AE030E03093F0022093EF02880F991FC8 +:10463000909300038093FF02CF91FF90EF90DF9063 +:10464000CF90BF90AF909F908F90089520E030E082 +:1046500040EA50ECC701B6010E94983287FF6CCF48 +:10466000609108037091090380910A0390910B03F4 +:104670000E94133570931403609313035DCFC70139 +:10468000B601905877CF10924F0188CF0C94BC336D +:104690002F923F924F925F926F927F928F929F9252 +:1046A000AF92BF92CF92DF92EF92FF920F931F9340 +:1046B000CF93DF938C0186E080930D0881E0809397 +:1046C0000C0810920B086091D9027091DA02072E43 +:1046D000000C880B990B0E949F322B013C0143ED8B +:1046E000C42E42E0D42E7601C2E0D0E05AE0A52EDE +:1046F000B12CBE010D2E000C880B990B0E949F322D +:104700009B01AC0160E070E080E291E40E944735DB +:104710009B01AC01C301B2010E949A340E940C3586 +:10472000CB01B5010E94E136F701819391937F019E +:104730002197F8F61093DA020093D902C7ECD2E081 +:1047400094E0E92EF12C22E0822E912C3AE0232EE7 +:10475000312CB401092C000C880B990B0E949F325C +:104760009B01AC0160E070E080E291E40E9447357B +:104770002B013C016091D9027091DA02072E000CE6 +:10478000880B990B0E949F32A30192010E949A34D8 +:104790000E940C35CB01B1010E94E136F601208167 +:1047A0003181821B930BF2E3F89FB001F99F700DEA +:1047B0001124072E000C880B990B0E949F32288130 +:1047C00039814A815B810E942E342B013C0120E01B +:1047D00030E0A9010E94983281117CC04882598240 +:1047E0006A827B8201E022E346E270E060E0C7017A +:1047F00004970E9453138EECA82EBB24BA940FEF9B +:104800001FEF288139814A815B8160E070E080E898 +:1048100090E40E942D342B013C01B5010B2C000CBF +:10482000880B990B0E949F329B01AC01C301B2011E +:104830000E942E340E940C35F0920808E09207087E +:1048400070930A0860930908F60160817181600F16 +:10485000711F072E000C880B990B0E94031E0F5F1F +:104860001F4FF2E3AF0EB11C0230110551F6249632 +:1048700021E0821A910882E0C80ED11CECE2EE0E13 +:10488000F11CF8E8EF16F10409F063CF00E022E034 +:1048900040E870E060E090E080E00E9453132DE07B +:1048A00040E863E370E090E080E00E945313DF9102 +:1048B000CF911F910F91FF90EF90DF90CF90BF901D +:1048C000AF909F908F907F906F905F904F903F90B0 +:1048D0002F900895C301B20190582DEC3CEC4CE4AC +:1048E0005FE30E94FE32A30192010E942E3468838E +:1048F00079838A839B8376CF86E00E94DF1521E04F +:10490000892B09F020E02093EE020E941E14809172 +:10491000FF0290910003959587950E9448230E947D +:1049200049170E94BB1986E00E94DF15892B69F7A1 +:104930008091EE028111E9CF0E94CD198091D902B8 +:104940009091DA0208952F923F924F925F926F9268 +:104950007F928F929F92AF92BF92CF92DF92EF920F +:10496000FF920F931F93CF93DF93CDB7DEB7659779 +:104970000FB6F894DEBF0FBECDBF182FE091F50241 +:10498000F0E0EF58FD4F80818150990B1092F402B6 +:104990001092F302880F991F9093F2028093F10214 +:1049A00081E090E09093F0028093EF02812F90E0FD +:1049B000880F991F909300038093FF0286E00E9466 +:1049C000DF1521E0892B09F020E02093EE02109200 +:1049D0000C0881E080930B088091FF029091000306 +:1049E0009C01359527953D872C873C853D8B6C84B4 +:1049F0007D8477249301211B310948E3429FC00144 +:104A0000439F900D1124280E391E2114310409F101 +:104A10006627772762197309072E000C880B990BFC +:104A20000E949F322AE939E949E15FE30E94FE32A0 +:104A30004B015C01B101330C880B990B0E949F3232 +:104A40009B01AC01C501B4010E942E340E940C35BB +:104A50001B010E941E14430182E0881A9108610123 +:104A600098E4C91AD108F3013396FC8BEB8B97FCC1 +:104A70008AC0E091F502F0E0EF58FD4F8081881583 +:104A8000190409F00CF47FC001E020E340E370E07A +:104A900060E0C6010E94531396012D5F3F4F3A8B91 +:104AA000298B00E02AE24AE263E070E089899A8972 +:104AB0000E94531370E060E0C6010E94F71370E09B +:104AC00060E08601015D1F4FC8010E94F7136FE28D +:104AD00070E0C6010E94F7136FE270E0C8010E9407 +:104AE000F7130E94A919F401E80FF11DEE0FFF1F43 +:104AF000EF5DFD4F80819181988B8F8773E0E72E6A +:104B0000F12C512C412CB12CA12CF50153E0F59541 +:104B1000E7955A95E1F7E40DF51D2F853889E20FE9 +:104B2000F31FE491C5018770992720E830E002C0A7 +:104B3000359527958A95E2F7C901F0E0E223F9233C +:104B4000EF2B79F0C501880F991F8A0D9B1D01E09D +:104B500023E043E0B701E989FA898E0F9F1F0E9485 +:104B60005313FFEFAF1ABF0A2EE0A216B10469F685 +:104B700032E0430E511C43E0E40EF11C8DE2E816D6 +:104B8000F10409F0C0CF9FEF891A990AE8E3CE0E2D +:104B9000D11C2B893C898216930609F068CF80913D +:104BA0004E01811140C00E94A919F301E80FF11DC7 +:104BB000EE0FFF1FEF52FE4F40815181EE24E39430 +:104BC00000E124E260E370E080E390E00E9475136E +:104BD0000E9449170E94BB1986E00E94DF15892BAD +:104BE00001F58091EE0281111CC00E94CD198D89C2 +:104BF00065960FB6F894DEBF0FBECDBFDF91CF91A3 +:104C00001F910F91FF90EF90DF90CF90BF90AF90EA +:104C10009F908F907F906F905F904F903F902F90DC +:104C200008951C85D9CE823009F083C00E94A9194D +:104C3000860D972D911DFC01E858F34EE490880FE6 +:104C4000991FFC01EF57FE4F80809180D12CC12C21 +:104C500004E310E3CE1408F0BBCFF401EC0DFD1D0E +:104C6000449180E1840F833008F45EC03E85313F7B +:104C7000E9F0323FD1F1403F08F058C0193710F049 +:104C8000085F10E088E0489FA001112448555B4E62 +:104C9000602F70E028E0812F90E00E943114185FAF +:104CA00090EF9E873FEFC31AD30AD4CF4E39D0F787 +:104CB0001D3710F0085F10E0A02EB12C612E712C72 +:104CC000E3E04E9FA001112442535D4E23E0B50165 +:104CD000C3010E94311421E04DEC52E1B501C30142 +:104CE00003960E9431141C5FDDCF4F31D8F619377F +:104CF00010F0085F10E0A02EB12C612E712CF7E0AF +:104D00004F9FA00111244C505E4E27E0B501C30116 +:104D10000E94311421E04DEC52E1B501C301079628 +:104D20000E943114185FBECF4E87BCCF20EF2E8774 +:104D3000B9CF80E390E09093080880930708E1E3FF +:104D4000F0E0F0930A08E093090881E080930D08F1 +:104D50000E94A919FC858F0FE82FF0E0EE0FFF1FCE +:104D6000E85DF34E65917491CE0101960E949132F7 +:104D7000CE0101960E94B21D2BCF1F920F920FB64B +:104D80000F9211242F933F934F935F936F937F93D1 +:104D90008F939F93AF93BF93EF93FF9386E197E039 +:104DA0000E942715FF91EF91BF91AF919F918F9135 +:104DB0007F916F915F914F913F912F910F900FBE17 +:104DC0000F901F9018951F920F920FB60F921124FB +:104DD0002F938F939F93EF93FF93E0912607F0918A +:104DE00027078081E0912C07F0912D0782FD1BC0E1 +:104DF000908180912F078F5F8F73209130078217EA +:104E000041F0E0912F07F0E0EA5EF84F958F809334 +:104E10002F07FF91EF919F918F912F910F900FBED0 +:104E20000F901F9018958081F4CF1F920F920FB6AC +:104E30000F9211242F933F938F939F93AF93BF9320 +:104E40008091DC029091DD02A091DE02B091DF0240 +:104E50003091DB0223E0230F2D3758F50196A11D79 +:104E6000B11D2093DB028093DC029093DD02A093BE +:104E7000DE02B093DF028091E0029091E102A09106 +:104E8000E202B091E3020196A11DB11D8093E00200 +:104E90009093E102A093E202B093E302BF91AF913D +:104EA0009F918F913F912F910F900FBE0F901F9068 +:104EB000189526E8230F0296A11DB11DD2CF1F928F +:104EC0000F920FB60F9211242F933F934F935F933E +:104ED0006F937F938F939F93EF93FF9383B1817031 +:104EE00029B19091E602981709F49DC030E0220F95 +:104EF000232F221F330B922F8093E6024091E5026D +:104F0000241709F490C02093E5022091EF0230911C +:104F1000F002981719F03195219531094091FF025F +:104F2000509100036091F3027091F402240F351F39 +:104F3000261737070CF48BC02091EF023091F00256 +:104F4000981719F03195219531094091FF02509140 +:104F500000036091F1027091F202240F351F621775 +:104F600073070CF46FC04091EF025091F002981754 +:104F700019F05195419551092091FF02309100039C +:104F8000240F351F309300032093FF0241E0981354 +:104F900040E02091E402421709F440C02091EF0262 +:104FA0003091F002981719F03195219531096091EF +:104FB000FF0270910003E091F302F091F402260FDA +:104FC000371F2E173F070CF44CC02091EF02309191 +:104FD000F002981719F03195219531096091FF027F +:104FE00070910003E091F102F091F202260F371F59 +:104FF000E217F3078CF12091EF023091F00298173D +:1050000019F03195219531098091FF0290910003AB +:10501000820F931F909300038093FF024093E4025A +:1050200081E080930C03FF91EF919F918F917F918D +:105030006F915F914F913F912F910F900FBE0F9005 +:105040001F9018952091F1023091F2029BCF209190 +:10505000F3023091F40296CF8091F1029091F20226 +:10506000D9CF8091F3029091F402D4CF18950F9389 +:105070001F93CF93DF93E6E1F7E01382128288EE6D +:1050800093E0A0E0B0E084839583A683B7838CE9A6 +:1050900092E09183808385EC90E09587848784EC0F +:1050A00090E09787868780EC90E0918B808B81ECF5 +:1050B00090E0938B828B82EC90E0958B848B86ECD6 +:1050C00090E0978B868B118E128E138E148EEBEFE1 +:1050D000F7E0138212821682178280E180871582A0 +:1050E000148212868EEA92E091838083158614865C +:1050F0001786168681E0808B118A828B138ACFEB0C +:10510000D7E027EB37E03F8F2E8F2BEB37E03D8F3B +:105110002C8F23EB37E039A328A31AAE1AAA1BAAB7 +:105120001CAA1DAA40E050E06FE773E44EAB5FABF2 +:1051300068AF79AF44E650E060E070E04EA75FA74B +:1051400068AB79AB21E030E0398F288F3B8F2A8F15 +:105150008BAF80E090E0A0E3B1E488839983AA83D9 +:10516000BB8380E090E0A0E0BFE38C839D83AE83AF +:10517000BF8380E090E0A0E8BFE388879987AA8793 +:10518000BB8780E090E0A0E3B1EC8C879D87AE8781 +:10519000BF878DEC9CECACE4BDEB888B998BAA8B24 +:1051A000BB8B80E090E0A0E2B1EC8C8B9D8BAE8B52 +:1051B000BF8B0E9421170EA51FA528A939A9601B26 +:1051C000710B820B930B6AA37BA38CA39DA3DF912E +:1051D000CF911F910F910895CF93DF93CDB7DEB795 +:1051E0002A970FB6F894DEBF0FBECDBF789484B572 +:1051F000826084BD84B5816084BD85B5826085BDD3 +:1052000085B5816085BD80916E00816080936E0060 +:105210001092810080918100826080938100809152 +:105220008100816080938100809180008160809303 +:1052300080008091B10084608093B1008091B000C3 +:1052400081608093B00080917A00846080937A00BE +:1052500080917A00826080937A0080917A008160E8 +:1052600080937A0080917A00806880937A0010920F +:10527000C1001092B90088E48093B8000E943F17E3 +:1052800080E00E94351703EF11E282E1E82E82E20E +:10529000F82EF80184910E9435170F5F1F4FE0161A +:1052A000F106B9F70E942D1711E01093B8000E9483 +:1052B000491781E28093030860E08EE00E94361671 +:1052C00060E08FE00E94361661E085E00E943616AD +:1052D00061E089E00E94361662E087E00E9436169F +:1052E00062E088E00E94361662E086E00E94361690 +:1052F00062E08AE00E9436168FEF90E00E947216FC +:1053000060E085E00E94081680917A0087608093B3 +:105310007A0080917A00886080937A007894109364 +:105320006B00109368001BBB90E080E00E94462356 +:10533000182F81E090E00E944623912F8F3F9840E4 +:1053400009F0BBC082E090E00E944623182F83E062 +:1053500090E00E944623912F90934701809346014D +:1053600084E090E00E944623182F85E090E00E94A0 +:105370004623912F909345018093440186E090E06D +:105380000E9446238093430187E090E00E944623D9 +:1053900080934C0188E090E00E94462380934B016B +:1053A00089E090E00E94462380934A018AE090E0E1 +:1053B0000E944623809380018BE090E00E94462368 +:1053C00091E0811101C090E0909349018CE090E060 +:1053D0000E94462391E0811101C090E09093480122 +:1053E0008DE090E00E944623809315038EE090E0CC +:1053F0000E944623282E809342018FE090E00E9475 +:10540000462380934E0180E190E00E94462391E084 +:10541000811101C090E09093ED0281E190E00E9443 +:10542000462380930D03A2E08A2EA1E09A2EB0E5D8 +:10543000AB2EB1E0BB2E12E1E12EF12C312C231466 +:1054400009F447C010E000E0C701800F911F0E94DF +:105450004623F501E00FF11F80830F5F1F4F0630D9 +:10546000110591F7670126E0C20ED11C3EE0E30E64 +:10547000F11C3401C6010E944623082F10E0102FB2 +:105480000027F301118300832601F2E04F0E511C27 +:10549000C60101960E944623082BF3010193119344 +:1054A0003F0162014E145F0429F73394F8E08F0E38 +:1054B000911C26E0A20EB11CC2CF68E090E080E013 +:1054C0000E943B216FEF81E090E00E943B210E940F +:1054D0004F211091ED0280EC111101C088EC0E9467 +:1054E000661780EA111101C081EA0E9466170E94C6 +:1054F00001199093E8028093E7020E949319909318 +:105500000F0380930E030091460110914701109301 +:105510000703009306038EE00E946519BC0190E02A +:1055200080E00E949D326093E9027093EA028093CA +:10553000EB029093EC020E943D190E94071D20E0AF +:1055400030E040EA51E460910803709109038091D2 +:105550000A0390910B030E942E346B017C01B80169 +:1055600090E080E00E949D329B01AC01C701B60132 +:105570000E94983287FF04C090E080E00E9472167B +:105580001092F1071092F2071092F3071092F407AD +:10559000412C512CEFE76E2EE3E47E2E4092F5076E +:1055A0005092F6076092F7077092F807A090DD0717 +:1055B000B090DE078091F907F501C080D180E280CC +:1055C000F380882309F481C7A3019201C701B601C2 +:1055D0000E944235181634F5F501408251826282EC +:1055E00073828090E5079090E607A090E707B0905F +:1055F000E807C090F507D090F607E090F707F09025 +:10560000F807A7019601C501B4010E94423518169A +:10561000C4F4C092E507D092E607E092E707F09263 +:10562000E8071FC020E030E0A901C701B6010E94D1 +:10563000983287FFD6CFF501108211821282138231 +:10564000D0CFC090F107D090F207E090F307F09030 +:10565000F407A7019601C501B4010E94983287FDA5 +:10566000D8CF81E08093F90783B181708093E602FF +:1056700089B190E0880F892F881F990B8093E502EC +:105680002091E6029091E50281E0291380E0809369 +:10569000E4028CE291E09093F4028093F30280E2C2 +:1056A00093E09093F2028093F1028AE090E090936D +:1056B000F0028093EF02000F111F1093000300937C +:1056C000FF020E94211760930203709303038093EB +:1056D0000403909305030E94CD190E94CD192090D8 +:1056E000FF02309000039101359527953A8729876D +:1056F000309307032093060386E00E94DF15482EAF +:1057000081119FC08091FE02882309F49AC00E94F3 +:10571000CD190E9421176B017C01C092FA02D09230 +:10572000FB02E092FC02F092FD0286E00E94DF158F +:10573000892B59F40E9421176C197D098E099F0944 +:10574000643F71408105910580F30E9421176C1917 +:105750007D098E099F09643F71408105910508F418 +:105760005CC48FEF90E00E9472160E94CD19512CFC +:105770004AE0642E712C1092F502852D0E94A3241C +:10578000582EF8E0F81708F439C0E82FF0E0E55398 +:10579000F44D0C94F536E62B8E2E052F6D2F7B2FB6 +:1057A000B52FC32FE32FED2F20E030E0A901C70173 +:1057B000B6010E94983287FF54CF1092E5071092ED +:1057C000E6071092E7071092E8074BCF3EE1632E01 +:1057D000712C81E08093F502852D0E94A324582E20 +:1057E00022E0821709F434C2281708F4E8C088239D +:1057F00009F410C131E0831709F40FC10E944F2151 +:1058000081E080930C0329853A8530930703209328 +:1058100006038CE291E09093F4028093F30280E21D +:1058200093E09093F2028093F1028AE090E09093EB +:10583000F0028093EF02C1018E7F9093000380936A +:10584000FF024092FE0280911003882309F110911B +:105850004A011123E9F00E942117C090F602D0906E +:10586000F702E090F802F090F9026C197D098E09B8 +:105870009F0928EE33E040E050E00E94FC332117FE +:1058800038F0109210030E94CD1981E080934D01F1 +:1058900080910C038823E9F180911103882349F159 +:1058A00020E030E040EA51E4609108037091090380 +:1058B00080910A0390910B030E942E346B017C01AE +:1058C000609106037091070390E080E00E949D3292 +:1058D0009B01AC01C701B6010E94983287FF04C04A +:1058E00090E080E00E9472160E94CD1981E08093C2 +:1058F0004D0110920C0310921103109212030E949A +:105900002117609302037093030380930403909321 +:1059100005030E94211700910203109103032091B7 +:10592000040330910503601B710B820B930B20E67F +:105930003AEE40E050E00E94FC33122F2093010326 +:105940008091110381110BC080914C01882339F0A3 +:10595000281728F081E0809311030E94CD198091CF +:10596000120381110BC080914B01882339F0181765 +:1059700028F081E0809312030E94CD190E94042236 +:105980000E94DA1A0E94211780910408362F381BD2 +:10599000832F90910508992309F455C33093060885 +:1059A0001092050880E090E0892B09F498CE0E94BF +:1059B0001315882309F493CE0E94000090CE83E053 +:1059C000581609F448C194E0591218CF8091420149 +:1059D000883008F0FECE91E0980F909342018093BA +:1059E00015030E94EB19E091150328E0E29FF001F6 +:1059F0001124EE5FFE4F88ED90E09183808324E3D5 +:105A000031E03383228386E891E095838483778233 +:105A10006682DFCE0E945E20DCCE8E010F5F1F4FBC +:105A2000812C912C5401839498EEE92E93E0F92E69 +:105A3000CC24C394D12CE091150324E0E29FF00123 +:105A40001124C4010197E80FF91FEE0FFF1FEE5F4D +:105A5000FE4F808191819093070380930603E8ECC9 +:105A6000F0E0F093F402E093F302F092F202E0929D +:105A7000F102D092F002C092EF02880F991F90932A +:105A800000038093FF02F1E0F0934D0186E00E9455 +:105A9000DF1521E0892B09F020E02093EE020E941F +:105AA0001E1422E020930D080E9404220E94DA1A9C +:105AB000109208081092070810920A08109209081C +:105AC00088E392E20E94DD18C501B4010E94031E22 +:105AD00082EC92E00E94B21D80914F011092080862 +:105AE00010920708882309F48BC080E190E090931E +:105AF0000A08809309088BE292E20E94DD18109256 +:105B0000080810920708E0E2F0E0F0930A08E0933A +:105B1000090884E292E20E94DD186091FF02709110 +:105B2000000375956795072E000C880B990B0E9452 +:105B3000031E0E94BB190E94491786E00E94DF15D0 +:105B4000892B09F0ACCF8091EE028111A8CF809112 +:105B5000FF029091000395958795F80181939193A9 +:105B60008F010E94CD196AE070E080E090E00E9411 +:105B7000EF16FFEF8F1A9F0AAF0ABF0A24E08216C2 +:105B80009104A104B10409F056CF8FEF90E00E9478 +:105B900072168BEA94E00197F1F70E943D190E947A +:105BA00013354B0178876F83C980DA800B811C81A4 +:105BB000C6014E968017910708F00BCEED80FE804F +:105BC000C8014E968E159F0508F003CE87E080939E +:105BD000F50280E00E94A324882309F4FACDE09125 +:105BE000150338E0E39FF0011124EE5FFE4FD182F0 +:105BF000C08213830283F582E48297828682E9CD94 +:105C000020E130E030930A08209309088EE192E207 +:105C10000E94DD186091E9027091EA028091EB0226 +:105C20009091EC020E94133590E080E04AE00E94DF +:105C3000BF1D109208081092070880E290E0909330 +:105C40000A088093090882E192E20E94DD1871CF70 +:105C50000E94EB19BECD87E08093F502809142014E +:105C6000813009F4B6CD80E00E94A324882309F492 +:105C7000B0CD1091150300914201802F8150990BF6 +:105C8000BC011817190639F411501093150301506F +:105C9000009342019ECD812F90E086179707BCF7B5 +:105CA000E6E01E9FD001112450E040E09C012F5FF0 +:105CB0003F4FFA01EA0FFB1FE05BFE4FF680F082D8 +:105CC0004F5F5F4F46305105A1F7B3E0220F331FFE +:105CD000BA95E1F7F901EE5FFE4F2081318143E093 +:105CE000880F991F4A95E1F7DC01AE5FBE4F119610 +:105CF0003C932E938281938113969C938E9312975B +:105D00008481958115969C938E93149786819781B3 +:105D100017969C938E9316971F5FBDCF82E080935A +:105D2000F50210E078E2C72ED12CECE2AE2EBB24B7 +:105D3000B394F0E28F2EF3E09F2EA4E1EA2EF12C33 +:105D4000812F0E94A324182F813021F130F082305E +:105D500009F43FC00E944F210ECD809146019091E1 +:105D60004701B092F402A092F3029092F202809264 +:105D7000F1027092F0026092EF02880F991F9093E7 +:105D800000038093FF020E947C249093470180933C +:105D90004601D6CF8091440190914501D092F40202 +:105DA000C092F302E0E9F1E0F093F202E093F10235 +:105DB0007092F0026092EF02880F991F9093000397 +:105DC0008093FF020E947C249093450180934401BC +:105DD000B7CF8091430190E0F092F402E092F30299 +:105DE00028EC30E03093F2022093F1027092F0023E +:105DF0006092EF02880F991F909300038093FF0237 +:105E00000E947C24809343019BCF83E08093F50222 +:105E1000F12C01E010E08F2D0E94A324F82E31E038 +:105E20008317E9F18317F8F082E0F81293CF80919D +:105E30004A0190E01092F4021092F30228E631E059 +:105E40003093F2022093F1027092F0026092EF021E +:105E5000880F991F909300038093FF020E947C2477 +:105E600080934A01D8CF80914C0190E01092F402C7 +:105E70001092F302ECE3F0E0F093F202E093F1020F +:105E80001093F0020093EF02880F991F9093000384 +:105E90008093FF020E947C2480934C01BCCF8091B0 +:105EA0004B0190E01092F4021092F30228E730E0E8 +:105EB0003093F2022093F102E5E0F0E0F093F0027B +:105EC000E093EF02880F991F909300038093FF02E5 +:105ED0000E947C2480934B019ECF84E08093F50246 +:105EE000809149010E94A32491E0811101C090E0BA +:105EF0009093490140CC10E0EAE0EE2EF5E0DF2E71 +:105F0000A9E0CA2EE092F502812F0E94A324182F47 +:105F1000882321F08130E1F000E009C0D092F50241 +:105F2000809180010E94A3248093800101E0F09081 +:105F3000ED0280ECF11001C088EC0E94661780EA47 +:105F4000F11001C081EA0E9466170111DBCF02CF78 +:105F5000C092F5028091ED020E94A32491E081118C +:105F600001C090E09093ED02E1CF86E08093F502CE +:105F7000809148010E94A32491E0811101C090E02A +:105F800090934801F8CB80910D0390E01092F402B9 +:105F90001092F302E4EFF1E0F093F202E093F102E9 +:105FA00021E030E03093F0022093EF02880F991F38 +:105FB000909300038093FF020E947C2480930D0342 +:105FC0000E94CD19D8CB88E08093F50280914E01D4 +:105FD0000E94A32480934E01CECB0E941E14EE2477 +:105FE000E39400E320E34FE352E270E060E088E2F4 +:105FF00090E00E9475130E94491764E670E080E00B +:1060000090E00E94EF1686E00E94DF15892BD9F7F9 +:106010008091EE028111F7CFD3CF8091100391E0F0 +:10602000892780931003882351F00E9421176093E1 +:10603000F6027093F7028093F8029093F90281E0E0 +:1060400080930C03FECB90910308391748F48F5FBF +:10605000891708F0A7CC81E083BF889513BEA2CC36 +:1060600011E010930508609304088091FF07909158 +:1060700000080196909300088093FF0780918001AB +:10608000882309F4BCC10E941E1401E020E440E80A +:1060900070E060E090E080E00E94531310930D08E0 +:1060A00010930C0810920B08E12C00E120E14EEC5B +:1060B00053E270E060E090E080E00E94751383E1BD +:1060C00090E0909308088093070884E090E0909314 +:1060D0000A088093090880911503E6E08E9FC001AD +:1060E0001124805B9E4F0E94B21D809113039091FA +:1060F0001403853F914008F02DC180911203811156 +:106100002BC180911103811129C18091100381114C +:1061100027C180914F01811125C120E030E044E387 +:1061200053E46091B7077091B8078091B9079091D7 +:10613000BA070E94983287FF17C185E025E330E057 +:10614000309308082093070821E030E030930A08D4 +:106150002093090892E090930D08C82ED12C9091BD +:106160004E01CC0CDD1C911101C1F601E657FD4F2B +:1061700040815181E12C0EE02CE161E070E080E58E +:1061800090E00E947513F601E458FD4F4081518163 +:10619000E12C0EE02EE061E070E081E790E00E94EB +:1061A000751381E080930D080E943D1920E030E0D6 +:1061B00040EA52E40E94423518160CF0FAC00E94E0 +:1061C000211752E0660F771F881F991F5A95D1F744 +:1061D00028EE33E040E050E00E94FC3320FFE9C0AD +:1061E0000E94CD1960910E0370910F0390E080E042 +:1061F0000E949D3220E030E048EC52E40E949A3444 +:106200006B017C0160910D0370E090E080E00E94E2 +:106210009F329B01AC01C701B6010E94983287FDF5 +:10622000D4C0E12C0EE02EE040E753E262E270E0E1 +:1062300082E090E00E94751303E110E010930808DB +:106240000093070820E130E030930A082093090802 +:106250000E943D1941E00E942D1E88EF0E94F8180F +:106260008EE693E20E94DD18109308080093070859 +:1062700088E190E090930A08809309080E94011930 +:10628000BC0190E080E00E949D3220E030E04AE7CF +:1062900054E40E949A3442E00E942D1E8CE693E260 +:1062A0000E94DD18109308080093070880E290E030 +:1062B00090930A088093090860910E0370910F0370 +:1062C00090E080E00E949D3220E030E04AE754E414 +:1062D0000E949A3441E00E942D1E8AE693E20E94B9 +:1062E000DD18109308080093070888E290E0909367 +:1062F0000A088093090883E693E20E94DD1889E387 +:1063000090E0909308088093070882E190E09093D2 +:106310000A088093090884E080930D0860911303B4 +:1063200070911403653F91E0790708F462C08FE52E +:1063300093E20E94DD1800E020E248E460E170E0B2 +:1063400087E390E00E94AA1780E00E94051F0E9448 +:10635000491728CB80E0F2CE81E0F0CE82E0EECE8D +:1063600083E0ECCE84E0EACE86E0E8CE8330C1F074 +:1063700038F4813069F0823081F088EA93E20AC013 +:106380008530A1F080F08630C1F78EEA93E202C03A +:106390008AEC93E20E94DD18F6CE84EC93E2FACF09 +:1063A0008EEB93E2F7CF88EB93E2F4CF83EB93E2AB +:1063B000F1CFE12C0EE02EE04CE853E262E170E018 +:1063C00082E090E00E9475130DCF0E94211742E0F9 +:1063D000660F771F881F991F4A95D1F728EE33E083 +:1063E00040E050E00E94FC3320FF1BCF0E94CD19FB +:1063F00023CF90E080E04AE00E94BF1D9CCF0E9426 +:106400001E140E943D1920E030E040EA52E40E9450 +:106410004235181694F40E94211732E0660F771F58 +:10642000881F991F3A95D1F728EE33E040E050E0FD +:106430000E94FC3320FD0E94CD1960910E037091E3 +:106440000F0390E080E00E949D3220E030E048ECB5 +:1064500052E40E949A346B017C0160910D0370E05C +:1064600090E080E00E949F329B01AC01C701B60121 +:106470000E94983287FF12C00E94211722E0660F07 +:10648000771F881F991F2A95D1F728EE33E040E047 +:1064900050E00E94FC3320FD0E94CD19809113032F +:1064A00090911403853FE1E09E0710F087EE93E0A2 +:1064B0000E94482300E023E040E860E370E090E0C1 +:1064C00080E00E94531381E040CFC092E507D09254 +:1064D000E607E092E707F092E807E091DB07F0912A +:1064E000DC0780819181A281B3818093E907909339 +:1064F000EA07A093EB07B093EC0720E030E04FE70A +:1065000053E4C701B6010E94423518160CF04CC97D +:106510004092E5075092E6076092E7077092E8071D +:10652000A0C8FB01DC0105900D920020E1F7089561 +:106530000E94DA3208F481E00895E89409C097FBDC +:106540003EF490958095709561957F4F8F4F9F4F4A +:106550009923A9F0F92F96E9BB279395F69587958E +:1065600077956795B795F111F8CFFAF4BB0F11F451 +:1065700060FF1BC06F5F7F4F8F4F9F4F16C08823F8 +:1065800011F096E911C0772321F09EE8872F762F2E +:1065900005C0662371F096E8862F70E060E02AF06F +:1065A0009A95660F771F881FDAF7880F969587955B +:1065B00097F90895990F0008550FAA0BE0E8FEEF30 +:1065C00016161706E807F907C0F012161306E407B7 +:1065D000F50798F0621B730B840B950B39F40A26B0 +:1065E00061F0232B242B252B21F408950A2609F48E +:1065F000A140A6958FEF811D811D08950E94113342 +:106600000C9482330E94743338F00E947B3320F064 +:10661000952311F00C946B330C94713311240C946A +:10662000B6330E94933370F3959FC1F3950F50E0FA +:10663000551F629FF001729FBB27F00DB11D639F34 +:10664000AA27F00DB11DAA1F649F6627B00DA11DDA +:10665000661F829F2227B00DA11D621F739FB00D80 +:10666000A11D621F839FA00D611D221F749F3327F0 +:10667000A00D611D231F849F600D211D822F762F89 +:106680006A2F11249F5750409AF0F1F088234AF066 +:10669000EE0FFF1FBB1F661F771F881F91505040D2 +:1066A000A9F79E3F510580F00C946B330C94B633E0 +:1066B0005F3FE4F3983ED4F3869577956795B79559 +:1066C000F795E7959F5FC1F7FE2B880F911D969573 +:1066D000879597F9089597F99F6780E870E060E0E3 +:1066E00008959FEF80EC089500240A94161617066B +:1066F00018060906089500240A94121613061406B3 +:1067000005060895092E0394000C11F4882352F015 +:10671000BB0F40F4BF2B11F460FF04C06F5F7F4FCD +:106720008F4F9F4F089557FD9058440F551F59F0B4 +:106730005F3F71F04795880F97FB991F61F09F3F6E +:1067400079F087950895121613061406551FF2CF97 +:106750004695F1DF08C0161617061806991FF1CFE7 +:1067600086957105610508940895E894BB2766270E +:106770007727CB0197F90895F999FECF92BD81BD96 +:10678000F89A992780B50895262FF999FECF1FBA58 +:1067900092BD81BD20BD0FB6F894FA9AF99A0FBE4A +:1067A00001960895052E97FB1EF400940E94E9338C +:1067B00057FD07D00E94FC3307FC03D04EF40C9425 +:1067C000E93350954095309521953F4F4F4F5F4F9E +:1067D000089590958095709561957F4F8F4F9F4F4D +:1067E00008950E941E34A59F900DB49F900DA49F04 +:1067F000800D911D11240895A1E21A2EAA1BBB1B26 +:10680000FD010DC0AA1FBB1FEE1FFF1FA217B3077C +:10681000E407F50720F0A21BB30BE40BF50B661F92 +:10682000771F881F991F1A9469F760957095809556 +:1068300090959B01AC01BD01CF010895A29FB001CD +:10684000B39FC001A39F700D811D1124911DB29FA4 +:10685000700D811D1124911D08955058BB27AA2742 +:106860000E9445340C9482330E94743338F00E94A5 +:106870007B3320F039F49F3F19F426F40C947133E4 +:106880000EF4E095E7FB0C946B33E92F0E949333F1 +:1068900058F3BA17620773078407950720F079F455 +:1068A000A6F50C94B5330EF4E0950B2EBA2FA02D5F +:1068B0000B01B90190010C01CA01A0011124FF27AD +:1068C000591B99F0593F50F4503E68F11A16F040A8 +:1068D000A22F232F342F4427585FF3CF46953795A7 +:1068E0002795A795F0405395C9F77EF41F16BA0B6C +:1068F000620B730B840BBAF09150A1F0FF0FBB1F1A +:10690000661F771F881FC2F70EC0BA0F621F731F62 +:10691000841F48F4879577956795B795F7959E3FBF +:1069200008F0B0CF9395880F08F09927EE0F979550 +:10693000879508950E94AE340C9482330E947B3375 +:1069400058F00E94743340F029F45F3F29F00C9412 +:106950006B3351110C94B6330C9471330E94933302 +:1069600068F39923B1F3552391F3951B550BBB277E +:10697000AA2762177307840738F09F5F5F4F220FC3 +:10698000331F441FAA1FA9F335D00E2E3AF0E0E8BA +:1069900032D091505040E695001CCAF72BD0FE2F04 +:1069A00029D0660F771F881FBB1F26173707480798 +:1069B000AB07B0E809F0BB0B802DBF01FF27935850 +:1069C0005F4F3AF09E3F510578F00C946B330C9476 +:1069D000B6335F3FE4F3983ED4F386957795679599 +:1069E000B795F7959F5FC9F7880F911D9695879585 +:1069F00097F90895E1E0660F771F881FBB1F6217A4 +:106A000073078407BA0720F0621B730B840BBA0B61 +:106A1000EE1F88F7E09508950E9413356894B11130 +:106A20000C94B63308950E949B3388F09F5798F0DA +:106A3000B92F9927B751B0F0E1F0660F771F881F83 +:106A4000991F1AF0BA95C9F714C0B13091F00E949D +:106A5000B533B1E008950C94B533672F782F8827AC +:106A6000B85F39F0B93FCCF3869577956795B395C4 +:106A7000D9F73EF490958095709561957F4F8F4F33 +:106A80009F4F08950E94DA3208F48FEF0895FA01BB +:106A9000EE0FFF1F309621053105A1F1611571053B +:106AA00061F48038BFE39B0749F168949038810511 +:106AB00061F08038BFEF9B0741F099234AF5FF3F13 +:106AC000E1053105210519F1E8940894E795D9010C +:106AD000AA2329F4AB2FBE2FF85FD0F310C0FF5FBD +:106AE00070F4A695E0F7F73950F019F0FF3A38F452 +:106AF0009F779F930DD00F9007FC9058089546F014 +:106B00000C94713360E070E080E89FE308954FE7F4 +:106B10009F775F934F933F932F930E9447362F9118 +:106B20003F914F915F910E94FE320C94A4350E94D8 +:106B3000DA32880B990B089529F416F00C946B3314 +:106B40000C94B5330C9471330E949B33A8F39638A0 +:106B5000A0F707F80F92E8942BE33AEA48EB5FE7D7 +:106B60000E9414330F920F920F924DB75EB70F929F +:106B70000E948F36E8E6F0E00E94D6354F915F9193 +:106B8000EF91FF91E595EE1FFF1F49F0FE57E0687A +:106B90004427EE0F441FFA95E1F74195550B0E94EB +:106BA00009360F9007FE0C94FD350895DF93CF93BF +:106BB0001F930F93FF92EF92DF927B018C016894F9 +:106BC00006C0DA2EEF010E941133FE01E894A59170 +:106BD0002591359145915591A6F3EF010E944534D9 +:106BE000FE019701A801DA9469F7DF90EF90FF901A +:106BF0000F911F91CF91DF9108959B01AC0160E04F +:106C000070E080E89FE30C949A340C946B330C94FE +:106C1000C3360E949B33D8F39923C9F3940F511DB7 +:106C2000A3F39150504094F059F0882332F0660F4E +:106C3000771F881F91505040C1F79E3F51052CF798 +:106C4000880F911D9695879597F908955F3FACF051 +:106C5000983E9CF0BB27869577956795B79508F485 +:106C6000B1609395C1F7BB0F58F711F460FFE8CFFF +:106C70006F5F7F4F8F4F9F4FE3CF0C94B63316F06B +:106C80000C94C3360C94713368940C946B330E944B +:106C90009B33A8F39923C1F3AEF3DF93CF931F93F4 +:106CA0000F93FF92C92FDD2788232AF02197660FC3 +:106CB000771F881FDAF720E030E040E85FEB9FE3C2 +:106CC000883920F0803E38F021968F770E942E344C +:106CD000E0E9F0E004C00E942E34EDEBF0E00E9409 +:106CE000D6358B01BE01EC01FB2E6F5771097595EE +:106CF000771F880B990B0E949F3228E132E741E30E +:106D00005FE30E941133AF2D9801AE01FF900F9108 +:106D10001F91CF91DF910E9445340C948233FA0188 +:106D2000DC01AA0FBB1F9B01AC01BF5728F422272F +:106D300033274427507820C0B75190F4AB2F00245C +:106D4000469537952795011CA395D2F3002071F045 +:106D5000220F331F441FB395DAF30ED00C942D3459 +:106D600061307105A0E88A07B94630F49B01AC0197 +:106D70006627772788279078309621F02083318303 +:106D80004283538308959F3F31F0915020F48795BB +:106D900077956795B795880F911D9695879597F983 +:106DA0000895DB018F939F930E94F133BF91AF91C0 +:106DB000A29F800D911DA39F900DB29F900D112455 +:106DC000089597FB072E16F4009407D077FD09D09D +:106DD0000E94FB3607FC05D03EF4909581959F4FAD +:106DE0000895709561957F4F0895EE0FFF1F0590F0 +:106DF000F491E02D0994AA1BBB1B51E107C0AA1F07 +:106E0000BB1FA617B70710F0A61BB70B881F991F4B +:106E10005A95A9F780959095BC01CD01089581E020 +:106E200090E0F8940C941437F894FFCF01FFD80049 +:106E3000340186011E000000000000000000000078 +:106E40000000000000000000000000000000000042 +:106E50000000000000000000000000000000000032 +:106E60000000000000000000000000000000013CE5 +:106E7000960040010101280F050101014243312E16 +:106E800035000000000000000000000000000000CD +:106E900000000000000000000000000000000000F2 +:106EA00000000000000000000000000001860281D8 +:106EB000027C0275026F026B0262025F025A025686 +:106EC000024D0243023B023802350232022C0229F3 +:106ED00002240221021E021902140211020B0207EF +:106EE000020302FE01F901F501F001EC01E801E500 +:106EF00001E101DC01D801CF01CA01C7013C0CEC62 +:106F00000B9C0B4C0BFC0AAC0A5C0A0C0ABC096C0F +:106F1000093C0C1C09CC087C082C08DC078C073CBD +:106F200007EC06DC073C079C06EC06DC074C06FC7D +:106F300005AC055C050C05BC046C041C04CC037C8E +:106F4000032C036C041C04DC028C02DC079C0F8005 +:106F50000F640F480F2C0F100FF40ED80EBC0EA0AC +:106F60000E840E680E9C0F4C0E300E140E9C0FF803 +:106F70000DDC0D140EF80DC00DDC0D140EA40D88E3 +:106F80000D6C0D500D340D100F180DA00EFC0CE003 +:106F90000CC40CA80C8C0C2C0FA80C140E0A0604A4 +:106FA000040202020203020348102C100C1070238A +:106FB000F00FD40FB80FB4117C1144110C11D41080 +:106FC0009C106410000000004915A914D6149615F1 +:106FD0000715E514F91400000000DB17A914FE18CA +:106FE000FD186E616E00696E66006F7666002F3365 +:026FF00000009F +:107E0000112484B714BE81FFF0D085E080938100F7 +:107E100082E08093C00088E18093C10086E0809377 +:107E2000C20080E18093C4008EE0C9D0259A86E02C +:107E300020E33CEF91E0309385002093840096BBD3 +:107E4000B09BFECF1D9AA8958150A9F7CC24DD24C4 +:107E500088248394B5E0AB2EA1E19A2EF3E0BF2EE7 +:107E6000A2D0813461F49FD0082FAFD0023811F036 +:107E7000013811F484E001C083E08DD089C08234E0 +:107E800011F484E103C0853419F485E0A6D080C0E4 +:107E9000853579F488D0E82EFF2485D0082F10E0AE +:107EA000102F00270E291F29000F111F8ED06801E7 +:107EB0006FC0863521F484E090D080E0DECF843638 +:107EC00009F040C070D06FD0082F6DD080E0C81688 +:107ED00080E7D80618F4F601B7BEE895C0E0D1E017 +:107EE00062D089930C17E1F7F0E0CF16F0E7DF06D8 +:107EF00018F0F601B7BEE89568D007B600FCFDCFD4 +:107F0000A601A0E0B1E02C9130E011968C91119780 +:107F100090E0982F8827822B932B1296FA010C0160 +:107F200087BEE89511244E5F5F4FF1E0A038BF0790 +:107F300051F7F601A7BEE89507B600FCFDCF97BE46 +:107F4000E89526C08437B1F42ED02DD0F82E2BD052 +:107F50003CD0F601EF2C8F010F5F1F4F84911BD097 +:107F6000EA94F801C1F70894C11CD11CFA94CF0C13 +:107F7000D11C0EC0853739F428D08EE10CD085E9AC +:107F80000AD08FE07ACF813511F488E018D01DD067 +:107F900080E101D065CF982F8091C00085FFFCCF94 +:107FA0009093C60008958091C00087FFFCCF809118 +:107FB000C00084FD01C0A8958091C6000895E0E648 +:107FC000F0E098E1908380830895EDDF803219F02E +:107FD00088E0F5DFFFCF84E1DECF1F93182FE3DFCA +:107FE0001150E9F7F2DF1F91089580E0E8DFEE27F6 +:047FF000FF270994CA +:027FFE00040479 +:00000001FF diff --git a/software/sources/SolderingStation2_arduboy_gplib_v1.7t3.ino b/software/sources/SolderingStation2_arduboy_gplib_v1.7t3.ino new file mode 100644 index 0000000..258714f --- /dev/null +++ b/software/sources/SolderingStation2_arduboy_gplib_v1.7t3.ino @@ -0,0 +1,2015 @@ +/*License: http://creativecommons.org/licenses/by-sa/3.0/ + 采用CC3.0协议共享此程序 + 您可以自由地:- + -AZ + 共享 — 在任何媒介以任何形式复制、发行本作品 + 演绎 — 修改、转换或以本作品为基础进行创作 + 在任何用途下,甚至商业目的。 + 本许可协议为“自由文化作品(Free Cultural Works)”所接受。 + 只要你遵守许可协议条款,许可人就无法收回你的这些权利。 + + Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) + This is a human-readable summary of (and not a substitute for) the license. Disclaimer. + You are free to: + Share — copy and redistribute the material in any medium or format + Adapt — remix, transform, and build upon the material + for any purpose, even commercially. + This license is acceptable for Free Cultural Works. + The licensor cannot revoke these freedoms as long as you follow the license terms. +*/ +// SolderingStation2 +// +// ATmega328-controlled Soldering Station for Hakko T12 Tips. +// +// This version of the code implements: +// - Temperature measurement of the tip +// - Direct or PID control of the heater +// - Temperature control via rotary encoder +// - Boost mode by short pressing rotary encoder switch +// - Setup menu by long pressing rotary encoder switch +// - Handle movement detection (by checking ball switch) +// - Iron unconnected detection (by idenfying invalid temperature readings) +// - Time driven sleep/power off mode if iron is unused (movement detection) +// - Measurement of input voltage, Vcc and ATmega's internal temperature +// - Information display on OLED +// - Buzzer +// - Calibrating and managing different soldering tips +// - Storing user settings into the EEPROM +// - Tip change detection +// +// Power supply should be in the range of 16V/2A to 24V/3A and well +// stabilized. +// +// For calibration you need a soldering iron tips thermometer. For best results +// wait at least three minutes after switching on the soldering station before +// you start the calibration process. +// +// Controller: ATmega328p +// Core: Barebones ATmega (https://github.com/carlosefr/atmega) +// Clockspeed: 16 MHz external +// +// 2019/2020 by Stefan Wagner with great support from John Glavinos +// 2020-8 UI upgrade by LHW-createskyblue + +// Project Page: https://easyeda.com/wagiminator + +//关于界面-项目页面二维码 ->为了加入欠压报警只能阉割掉关于页面的二维码 +//const unsigned char QRCode[] PROGMEM = { 0x00, 0x00, 0x3e, 0x0e, 0x7c, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x0e, 0x7c, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x0e, 0x7c, 0x0c, 0x00, 0x00, 0x1f, 0xfe, 0x3f, 0xc1, 0x8c, 0x0c, 0x7f, 0xf8, 0x1f, 0xfe, 0x3f, 0xc1, 0x8c, 0x0c, 0x7f, 0xf8, 0x18, 0x06, 0x30, 0x01, 0xf3, 0x8c, 0x60, 0x18, 0x18, 0x06, 0x30, 0x01, 0xf3, 0x8c, 0x60, 0x18, 0x18, 0x06, 0x30, 0x01, 0xf3, 0x8c, 0x60, 0x18, 0x18, 0x06, 0x3e, 0x0f, 0xf0, 0x0c, 0x60, 0x18, 0x18, 0x06, 0x3e, 0x0f, 0xf0, 0x0c, 0x60, 0x18, 0x18, 0x06, 0x3f, 0xc1, 0xf0, 0x0c, 0x60, 0x18, 0x18, 0x06, 0x3f, 0xc1, 0xf0, 0x0c, 0x60, 0x18, 0x18, 0x06, 0x3f, 0xc1, 0xf0, 0x0c, 0x60, 0x18, 0x1f, 0xfe, 0x3e, 0x30, 0x70, 0x0c, 0x7f, 0xf8, 0x1f, 0xfe, 0x3e, 0x30, 0x70, 0x0c, 0x7f, 0xf8, 0x00, 0x00, 0x31, 0xce, 0x73, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x31, 0xce, 0x73, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x31, 0xce, 0x73, 0x8c, 0x00, 0x00, 0xff, 0xff, 0xf0, 0x01, 0x83, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x01, 0x83, 0x8f, 0xff, 0xff, 0x00, 0xc0, 0x01, 0xc1, 0x8c, 0x00, 0x7f, 0x1f, 0x00, 0xc0, 0x01, 0xc1, 0x8c, 0x00, 0x7f, 0x1f, 0x00, 0xc0, 0x01, 0xc1, 0x8c, 0x00, 0x7f, 0x1f, 0x07, 0xc7, 0xcf, 0xce, 0x7f, 0x8c, 0x1f, 0xf8, 0x07, 0xc7, 0xcf, 0xce, 0x7f, 0x8c, 0x1f, 0xf8, 0x07, 0xc7, 0xcf, 0xce, 0x7f, 0x8c, 0x1f, 0xf8, 0xf8, 0x00, 0x3e, 0x3e, 0x03, 0xf0, 0x7f, 0x00, 0xf8, 0x00, 0x3e, 0x3e, 0x03, 0xf0, 0x7f, 0x00, 0xe0, 0xc7, 0xcf, 0xfe, 0x03, 0x80, 0x1f, 0xe7, 0xe0, 0xc7, 0xcf, 0xfe, 0x03, 0x80, 0x1f, 0xe7, 0xe0, 0xc7, 0xcf, 0xfe, 0x03, 0x80, 0x1f, 0xe7, 0x18, 0xc0, 0x31, 0xfe, 0x0c, 0x0c, 0x1c, 0xe0, 0x18, 0xc0, 0x31, 0xfe, 0x0c, 0x0c, 0x1c, 0xe0, 0xe7, 0x39, 0xf1, 0xf0, 0x03, 0xfc, 0x7c, 0xf8, 0xe7, 0x39, 0xf1, 0xf0, 0x03, 0xfc, 0x7c, 0xf8, 0xe7, 0x39, 0xf1, 0xf0, 0x03, 0xfc, 0x7c, 0xf8, 0x1f, 0x00, 0x31, 0xcf, 0xf3, 0x8c, 0x03, 0x00, 0x1f, 0x00, 0x31, 0xcf, 0xf3, 0x8c, 0x03, 0x00, 0xe0, 0x3f, 0xff, 0xc1, 0x83, 0x8f, 0x9c, 0xe7, 0xe0, 0x3f, 0xff, 0xc1, 0x83, 0x8f, 0x9c, 0xe7, 0xe0, 0x3f, 0xff, 0xc1, 0x83, 0x8f, 0x9c, 0xe7, 0x18, 0x00, 0x30, 0x0e, 0x00, 0x00, 0x00, 0xff, 0x18, 0x00, 0x30, 0x0e, 0x00, 0x00, 0x00, 0xff, 0x18, 0x00, 0x30, 0x0e, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xf0, 0x3e, 0x7c, 0x0f, 0xe0, 0x00, 0xff, 0xff, 0xf0, 0x3e, 0x7c, 0x0f, 0xe0, 0x00, 0x00, 0x00, 0x31, 0xce, 0x0c, 0x0c, 0x63, 0xe0, 0x00, 0x00, 0x31, 0xce, 0x0c, 0x0c, 0x63, 0xe0, 0x00, 0x00, 0x31, 0xce, 0x0c, 0x0c, 0x63, 0xe0, 0x1f, 0xfe, 0x30, 0x01, 0x83, 0x8f, 0xe0, 0xff, 0x1f, 0xfe, 0x30, 0x01, 0x83, 0x8f, 0xe0, 0xff, 0x18, 0x06, 0x31, 0xf1, 0x8f, 0x80, 0x03, 0xe7, 0x18, 0x06, 0x31, 0xf1, 0x8f, 0x80, 0x03, 0xe7, 0x18, 0x06, 0x31, 0xf1, 0x8f, 0x80, 0x03, 0xe7, 0x18, 0x06, 0x3f, 0xff, 0x83, 0x83, 0xe3, 0x1f, 0x18, 0x06, 0x3f, 0xff, 0x83, 0x83, 0xe3, 0x1f, 0x18, 0x06, 0x31, 0xfe, 0x73, 0x8f, 0x80, 0xf8, 0x18, 0x06, 0x31, 0xfe, 0x73, 0x8f, 0x80, 0xf8, 0x18, 0x06, 0x31, 0xfe, 0x73, 0x8f, 0x80, 0xf8, 0x1f, 0xfe, 0x31, 0xfe, 0x00, 0x0c, 0x60, 0xe7, 0x1f, 0xfe, 0x31, 0xfe, 0x00, 0x0c, 0x60, 0xe7, 0x00, 0x00, 0x31, 0xfe, 0x0c, 0x0f, 0x9f, 0xe0, 0x00, 0x00, 0x31, 0xfe, 0x0c, 0x0f, 0x9f, 0xe0, 0x00, 0x00, 0x31, 0xfe, 0x0c, 0x0f, 0x9f, 0xe0 }; +const unsigned char QRCode[] PROGMEM = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x03, 0x86, 0x70, 0x80, 0x03, 0x80, 0x03, 0x86, 0x70, 0x80, 0x03, 0x9f, 0xf3, 0xe1, 0x30, 0x9f, 0xf3, 0x9f, 0xf3, 0xe1, 0x30, 0x9f, 0xf3, 0x98, 0x33, 0x01, 0xcc, 0x98, 0x33, 0x98, 0x33, 0x01, 0xcc, 0x98, 0x33, 0x98, 0x33, 0x87, 0xc0, 0x98, 0x33, 0x98, 0x33, 0xe1, 0xc0, 0x98, 0x33, 0x98, 0x33, 0xe1, 0xc0, 0x98, 0x33, 0x9f, 0xf3, 0x98, 0xc0, 0x9f, 0xf3, 0x9f, 0xf3, 0x98, 0xc0, 0x9f, 0xf3, 0x80, 0x03, 0x66, 0xcc, 0x80, 0x03, 0x80, 0x03, 0x66, 0xcc, 0x80, 0x03, 0xff, 0xff, 0x01, 0x0c, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x1f, 0xff, 0x81, 0x00, 0x61, 0x30, 0x1f, 0x3f, 0x87, 0x3c, 0xe6, 0xfc, 0x87, 0x33, 0x87, 0x3c, 0xe6, 0xfc, 0x87, 0xf3, 0xf8, 0x03, 0x9e, 0x0f, 0x1f, 0x03, 0xf8, 0x03, 0x9e, 0x0f, 0x1f, 0x03, 0xe1, 0x3c, 0xfe, 0x0c, 0x07, 0xcf, 0xe1, 0x3c, 0xfe, 0x0c, 0x07, 0xcf, 0x99, 0x03, 0x3e, 0x30, 0x86, 0xc3, 0xe6, 0xcf, 0x38, 0x0f, 0x9e, 0xf3, 0xe6, 0xcf, 0x38, 0x0f, 0x9e, 0xf3, 0x9e, 0x03, 0x27, 0xcc, 0x81, 0x03, 0x9e, 0x03, 0x27, 0xcc, 0x81, 0x03, 0xe0, 0xff, 0xe1, 0x0c, 0xe6, 0xcf, 0xe0, 0xff, 0xe1, 0x0c, 0xe6, 0xcf, 0x98, 0x03, 0x06, 0x00, 0x00, 0xff, 0x98, 0x03, 0x06, 0x00, 0x00, 0xff, 0xff, 0xff, 0x1e, 0xf0, 0xf8, 0x03, 0x80, 0x03, 0x66, 0x30, 0x99, 0xc3, 0x80, 0x03, 0x66, 0x30, 0x99, 0xc3, 0x9f, 0xf3, 0x01, 0x0c, 0xf8, 0xff, 0x9f, 0xf3, 0x01, 0x0c, 0xf8, 0xff, 0x98, 0x33, 0x39, 0x3c, 0x01, 0xcf, 0x98, 0x33, 0x39, 0x3c, 0x01, 0xcf, 0x98, 0x33, 0xff, 0x0c, 0x79, 0x3f, 0x98, 0x33, 0x3e, 0xcc, 0xe0, 0xf3, 0x98, 0x33, 0x3e, 0xcc, 0xe0, 0xf3, 0x9f, 0xf3, 0x3e, 0x00, 0x98, 0xcf, 0x9f, 0xf3, 0x3e, 0x00, 0x98, 0xcf, 0x80, 0x03, 0x3e, 0x30, 0xe7, 0xc3, 0x80, 0x03, 0x3e, 0x30, 0xe7, 0xc3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; +//ICO +//width:16,height:16 +const unsigned char Tag[] PROGMEM = { 0x00, 0x00, 0x3b, 0xec, 0x7b, 0xee, 0x63, 0xe6, 0x63, 0xe6, 0x63, 0xe6, 0x63, 0xe6, 0x63, 0xe6, 0x63, 0xe6, 0x63, 0x66, 0x62, 0x26, 0x60, 0x06, 0x60, 0x06, 0x7f, 0xfe, 0x3f, 0xfc, 0x00, 0x00 }; +const unsigned char Chip[] PROGMEM = { 0x14, 0xa0, 0x3f, 0xf0, 0x7f, 0xf8, 0xe0, 0x1c, 0x6e, 0x18, 0xec, 0x1c, 0x68, 0x18, 0x60, 0x18, 0xe0, 0x1c, 0x60, 0x58, 0xe0, 0x1c, 0x7f, 0xf8, 0x3f, 0xf0, 0x14, 0xa0 }; +//const unsigned char HeatPipe[] PROGMEM = { 0x00, 0x00, 0x09, 0x90, 0x11, 0x88, 0x21, 0x84, 0x11, 0x88, 0x09, 0x90, 0x11, 0x88, 0x21, 0x84, 0x11, 0x88, 0x09, 0x90, 0x11, 0x88, 0x21, 0x84, 0x11, 0x88, 0x09, 0x90, 0x01, 0x80, 0x00, 0x00 }; +const unsigned char Lightning[] PROGMEM = { 0x0f, 0xe0, 0x1f, 0xc0, 0x1f, 0xc0, 0x3f, 0x80, 0x3f, 0xf8, 0x7f, 0xf0, 0x7f, 0xe0, 0x07, 0xc0, 0x07, 0x80, 0x0f, 0x00, 0x0e, 0x00, 0x1c, 0x00, 0x18, 0x00, 0x10, 0x00 }; +//const unsigned char Thermometer[] PROGMEM = { 0x01, 0x80, 0x02, 0x40, 0x03, 0x40, 0x02, 0x40, 0x03, 0x40, 0x02, 0x40, 0x03, 0x40, 0x02, 0x40, 0x03, 0x40, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x03, 0xc0 }; +const unsigned char Pointer[] PROGMEM = { 0x20, 0x20, 0x70, 0xf8 }; +//状态提示 +//width:14,height:14 图标库 + +const unsigned char c1[] PROGMEM = { 0x03, 0x00, 0x07, 0x80, 0x0f, 0xc0, 0x0c, 0xc0, 0x1c, 0xe0, 0x1c, 0xe0, 0x3c, 0xf0, 0x3c, 0xf0, 0x7f, 0xf8, 0x7f, 0xf8, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0xfc, 0x7f, 0xf8 }; +const unsigned char c2[] PROGMEM = { 0x7f, 0xf8, 0xff, 0xfc, 0xc0, 0x0c, 0xc3, 0x0c, 0xcb, 0x4c, 0xdb, 0x6c, 0xdb, 0x6c, 0xd8, 0x6c, 0xdc, 0xec, 0xcf, 0xcc, 0xc7, 0x8c, 0xc0, 0x0c, 0xff, 0xfc, 0x7f, 0xf8 }; +const unsigned char c3[] PROGMEM = { 0x00, 0x00, 0x06, 0x00, 0x0c, 0x00, 0x18, 0xf8, 0x38, 0xf0, 0x30, 0x30, 0x70, 0x60, 0x70, 0x78, 0x78, 0xf8, 0x78, 0x00, 0x3c, 0x02, 0x3f, 0x0c, 0x1f, 0xf8, 0x0f, 0xf0, 0x03, 0xc0, 0x00, 0x00 }; +const unsigned char c5[] PROGMEM = { 0x7f, 0xf0, 0xff, 0xe0, 0xc0, 0x08, 0xc0, 0x1c, 0xc0, 0x38, 0xc8, 0x70, 0xdc, 0xe4, 0xcf, 0xcc, 0xc7, 0x8c, 0xc3, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xff, 0xfc, 0x7f, 0xf8 }; +const unsigned char c6[] PROGMEM = { 0x1e, 0x10, 0x33, 0x38, 0x2d, 0x7c, 0x25, 0x38, 0x2d, 0x38, 0x25, 0x38, 0x2d, 0x38, 0x6d, 0x80, 0xde, 0xc0, 0xbf, 0x40, 0xbf, 0x40, 0xde, 0xc0, 0x61, 0x80, 0x3f, 0x00 }; +const unsigned char c7[] PROGMEM = { 0x1f, 0xe0, 0x3f, 0xf0, 0x70, 0x38, 0x60, 0x18, 0x60, 0x18, 0x60, 0x18, 0xff, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xf8, 0x7c, 0xf8, 0x7c, 0xfc, 0xfc, 0x7f, 0xf8 }; +const unsigned char c_NO[] PROGMEM = { 0x80, 0x04, 0x00, 0x00, 0x3f, 0xf0, 0x37, 0xb0, 0x23, 0x10, 0x30, 0x30, 0x38, 0x70, 0x38, 0x70, 0x30, 0x30, 0x23, 0x10, 0x37, 0xb0, 0x3f, 0xf0, 0x00, 0x00, 0x80, 0x04 }; +const unsigned char *C_table[] = {c1, c2, c3, Lightning, c5, c6, c7}; + +//设置(陈星汉认为语言是一种低像素的表达方式,容易造成隔阂; 交互界面设计尽可能形象化) +// width: 14, height: 14 +const unsigned char QRC[] PROGMEM = { 0x05, 0x80, 0x74, 0xb8, 0x57, 0xa8, 0x76, 0xb8, 0x05, 0x80, 0xf9, 0x7c, 0x46, 0x94, 0xaa, 0xa8, 0xf9, 0x7c, 0x06, 0x88, 0x74, 0xa8, 0x57, 0x8c, 0x75, 0x74, 0x06, 0x98 }; +const unsigned char Set0[] PROGMEM = { 0x88, 0x24, 0x08, 0x20, 0x38, 0x30, 0x38, 0x30, 0x38, 0x30, 0x38, 0x30, 0x38, 0x30, 0x38, 0x30, 0x39, 0x30, 0x3b, 0xb0, 0x3f, 0xf0, 0x3f, 0xf0, 0x00, 0x00, 0x80, 0x04 }; +const unsigned char Set1[] PROGMEM = { 0xf8, 0x7c, 0xf3, 0x3c, 0xf4, 0xbc, 0xf6, 0xbc, 0xf4, 0xbc, 0xf6, 0xbc, 0xf4, 0xbc, 0xe4, 0x9c, 0xc8, 0x4c, 0xd0, 0x2c, 0xd0, 0x2c, 0xc8, 0x4c, 0xe7, 0x9c, 0xf0, 0x3c }; +const unsigned char Set2[] PROGMEM = { 0x8f, 0xc4, 0x10, 0x20, 0x20, 0x10, 0x4c, 0xc8, 0x9f, 0xe4, 0x3d, 0xf0, 0x3d, 0xf0, 0x1d, 0xe0, 0x3e, 0xf0, 0x3f, 0x70, 0x9f, 0xe4, 0x8c, 0xc4, 0x00, 0x00, 0x30, 0x30 }; +const unsigned char Set3[] PROGMEM = { 0xc3, 0xfc, 0x18, 0x00, 0x18, 0x00, 0xc3, 0xfc, 0xff, 0xfc, 0xff, 0x0c, 0x00, 0x60, 0x00, 0x60, 0xff, 0x0c, 0xff, 0xfc, 0xf0, 0xfc, 0x06, 0x00, 0x06, 0x00, 0xf0, 0xfc }; +const unsigned char Set4[] PROGMEM = { 0x80, 0x04, 0x00, 0x00, 0x20, 0x00, 0x10, 0x00, 0x08, 0x00, 0x10, 0x00, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x04 }; +const unsigned char Set4F[] PROGMEM = { 0x80, 0x04, 0x00, 0x00, 0x3f, 0xf0, 0x38, 0x30, 0x33, 0x10, 0x3f, 0x90, 0x38, 0x10, 0x33, 0x90, 0x27, 0x90, 0x26, 0x10, 0x30, 0x90, 0x3f, 0xf0, 0x00, 0x00, 0x80, 0x04 }; +const unsigned char Set4FF[] PROGMEM = { 0x80, 0x04, 0x00, 0x00, 0x3f, 0xf0, 0x24, 0x30, 0x21, 0x90, 0x27, 0x90, 0x27, 0x30, 0x20, 0x70, 0x27, 0xf0, 0x23, 0x30, 0x30, 0x70, 0x3f, 0xf0, 0x00, 0x00, 0x80, 0x04 }; +const unsigned char Set5[] PROGMEM = { 0xfc, 0xfc, 0xf8, 0x7c, 0xe0, 0x1c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0x80, 0x04, 0x80, 0x04, 0xff, 0xfc, 0xf8, 0x7c, 0xfc, 0xfc }; +const unsigned char Set5_1[] PROGMEM = { 0xfc, 0xf4, 0xf8, 0x60, 0xe0, 0x44, 0xc0, 0x8c, 0xc1, 0x1c, 0xc2, 0x2c, 0xc4, 0x4c, 0xc8, 0x8c, 0xd1, 0x0c, 0xa2, 0x04, 0xc4, 0x04, 0x8f, 0xfc, 0x18, 0x7c, 0xbc, 0xfc }; +const unsigned char Set6[] PROGMEM = { 0xf8, 0x7c, 0xe0, 0x1c, 0xc0, 0x0c, 0xcf, 0xcc, 0xcf, 0xcc, 0xcf, 0xcc, 0xcf, 0xcc, 0xcf, 0xcc, 0xcf, 0xcc, 0xcf, 0xcc, 0xc8, 0x4c, 0xcf, 0xcc, 0xc0, 0x0c, 0xe0, 0x1c }; +const unsigned char Set_LANG[] PROGMEM = { 0xf0, 0x3c, 0xce, 0x4c, 0xbc, 0x34, 0xb8, 0x14, 0x18, 0x80, 0x10, 0x80, 0x42, 0x30, 0x60, 0x78, 0x60, 0xf8, 0x44, 0xc0, 0x80, 0x04, 0xb8, 0x84, 0xcf, 0xcc, 0xf0, 0x3c }; +const unsigned char Set7[] PROGMEM = { 0x80, 0x0c, 0x00, 0x1c, 0x3f, 0xf4, 0x3f, 0xe0, 0x3f, 0xc4, 0x37, 0x8c, 0x23, 0x18, 0x30, 0x30, 0x38, 0x70, 0x3c, 0xf0, 0x3f, 0xf0, 0x3f, 0xf0, 0x00, 0x00, 0x80, 0x04 }; +const unsigned char Set11[] PROGMEM = { 0xf3, 0xfc, 0xe7, 0xfc, 0xce, 0x0c, 0x8e, 0x1c, 0x9f, 0x9c, 0x1f, 0x3c, 0x1f, 0x0c, 0x0e, 0x0c, 0x0f, 0xfc, 0x87, 0xf8, 0x81, 0xe4, 0xc0, 0x0c, 0xe0, 0x1c, 0xf8, 0x7c }; +const unsigned char Set8[] PROGMEM = { 0x81, 0xdc, 0x55, 0x9c, 0x29, 0x04, 0x55, 0x00, 0x29, 0x90, 0x55, 0xd0, 0x03, 0xfc, 0xff, 0x00, 0x2e, 0x00, 0x26, 0x70, 0x02, 0x50, 0x82, 0x70, 0xe6, 0x00, 0xee, 0x04 }; +const unsigned char Set9[] PROGMEM = { 0xf0, 0x3c, 0xce, 0x0c, 0xbf, 0x04, 0xb3, 0x04, 0x73, 0x00, 0x7f, 0x00, 0x7e, 0x00, 0x7c, 0x00, 0x7c, 0x00, 0x7c, 0x60, 0xbc, 0x64, 0xbe, 0x04, 0xcf, 0x0c, 0xf0, 0x3c }; +const unsigned char Set10[] PROGMEM = { 0xf8, 0x7c, 0xf7, 0xbc, 0x00, 0x00, 0x7f, 0xf8, 0x00, 0x00, 0xbf, 0xf4, 0xab, 0x54, 0xab, 0x54, 0xab, 0x54, 0xab, 0x54, 0xab, 0x54, 0xab, 0x54, 0xbf, 0xf4, 0xc0, 0x0c }; +const unsigned char Set13[] PROGMEM = { 0x80, 0x04, 0x00, 0x00, 0x3f, 0xf0, 0x3c, 0xf0, 0x34, 0xb0, 0x24, 0x90, 0x24, 0x90, 0x27, 0x90, 0x23, 0x10, 0x30, 0x30, 0x38, 0x70, 0x3f, 0xf0, 0x00, 0x00, 0x80, 0x04 }; +const unsigned char Set12[] PROGMEM = { 0x80, 0x04, 0x00, 0x00, 0x3f, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x20, 0x10, 0x20, 0x10, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3f, 0xf0, 0x00, 0x00, 0x80, 0x04 }; +const unsigned char Set14[] PROGMEM = { 0xff, 0x7c, 0xfe, 0x7c, 0xfc, 0xec, 0xe8, 0xdc, 0xc8, 0x4c, 0x98, 0x4c, 0x88, 0x24, 0x08, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x04, 0xe0, 0x1c }; +const unsigned char Set15[] PROGMEM = { 0x15, 0x54, 0x3f, 0xfc, 0x15, 0x54, 0x3f, 0xfc, 0x15, 0x54, 0x3c, 0x04, 0x14, 0x04, 0x3c, 0xfc, 0x14, 0x54, 0x3c, 0xfc, 0x00, 0x54, 0x00, 0xa8, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char Set16[] PROGMEM = { 0x15, 0x54, 0x3f, 0xf8, 0x15, 0x50, 0x3f, 0xf0, 0x15, 0x50, 0x38, 0x70, 0x10, 0x20, 0x31, 0x04, 0x13, 0x8c, 0x22, 0xa8, 0x17, 0xfc, 0x2a, 0xa8, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char Set17[] PROGMEM = { 0x80, 0x00, 0xbf, 0xf8, 0x1f, 0xf8, 0xb0, 0x08, 0x18, 0x08, 0xb9, 0xe8, 0x19, 0xb8, 0xb8, 0x38, 0x18, 0x38, 0xb9, 0xb8, 0xb9, 0xf8, 0xb0, 0xf8, 0xbf, 0xf8, 0x80, 0x00 }; +const unsigned char Set18[] PROGMEM = { 0x80, 0x00, 0xbf, 0xf8, 0x1f, 0xf8, 0xb0, 0x28, 0x1f, 0xf8, 0xb4, 0x08, 0x1f, 0xf8, 0xb1, 0x08, 0x1f, 0xf8, 0xb0, 0x48, 0xbf, 0xf8, 0xb2, 0x88, 0xbf, 0xf8, 0x80, 0x00 }; +const unsigned char Lang_CN[] PROGMEM = { 0x80, 0x04, 0x00, 0x00, 0x3f, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x20, 0x10, 0x24, 0x90, 0x24, 0x90, 0x20, 0x10, 0x3c, 0xf0, 0x3c, 0xf0, 0x3f, 0xf0, 0x00, 0x00, 0x80, 0x04 }; +const unsigned char Lang_EN[] PROGMEM = { 0x80, 0x04, 0x00, 0x00, 0x3f, 0xf0, 0x38, 0x70, 0x30, 0x30, 0x23, 0x10, 0x27, 0x90, 0x20, 0x10, 0x20, 0x10, 0x27, 0x90, 0x27, 0x90, 0x3f, 0xf0, 0x00, 0x00, 0x80, 0x04 }; +const unsigned char Lang_JP[] PROGMEM = { 0x80, 0x04, 0x00, 0x00, 0x3f, 0xf0, 0x3d, 0xf0, 0x20, 0x10, 0x3b, 0xf0, 0x3b, 0x70, 0x30, 0x30, 0x2b, 0x50, 0x2a, 0xd0, 0x31, 0xb0, 0x3f, 0xf0, 0x00, 0x00, 0x80, 0x04 }; +const unsigned char Save[] PROGMEM = { 0x00, 0x04, 0x58, 0x08, 0x58, 0x08, 0x58, 0x08, 0x40, 0x08, 0x7f, 0xf8, 0x60, 0x18, 0x5f, 0xe8, 0x5b, 0x68, 0x5f, 0xe8, 0x5b, 0x68, 0x1c, 0xe8, 0x5f, 0xe8, 0x00, 0x00 }; + +const unsigned char *Ico_table[] = { + Set0, Set1, Set2, Set3, Set4, Set5, Set6, Set_LANG, QRC, Set7, + Set8, Set9, Set0, Set10, Set12, Save, + Set0, Set11, Set14, Save, + Set11, Set13, Set14, Save, + Set15, Set16, + Set17, Set18, //5 + Set5_1, Set5, + c_NO, Set7, + Lang_CN, Lang_EN, Lang_JP, //8 + Set4F, Set4FF, + Set4, Set4F, Save, +}; +const byte Menu_table[] = {10, 6, 4, 4, 2, 2, 2, 2, 3, 2, 3}; //菜单 标签 温控 定时 控制方式 首页 蜂鸣器 标签删除确认界面 语言菜单 翻转 显示 +byte MenuLevel = 0; //菜单层级 + +/*//////////////////////////////////////////////////////////////////////////////////////////////////// + 多语言支持 + Multilingual support + /////////////////////////////////////////////////////////////////////////////////////////////////// +*/ +/* + 英语库 ENGLISH +*/ +const char EN_0[] PROGMEM = "Tip"; +const char EN_1[] PROGMEM = "Temp"; +const char EN_2[] PROGMEM = "Timer"; +const char EN_3[] PROGMEM = "Control"; +const char EN_4[] PROGMEM = "Screen"; +const char EN_5[] PROGMEM = "Buzzer"; +const char EN_6[] PROGMEM = "LOW Vol"; +const char EN_7[] PROGMEM = "Lang"; +const char EN_8[] PROGMEM = "Return"; +const char EN_9[] PROGMEM = "Change"; +const char EN_10[] PROGMEM = "Calibrate"; +const char EN_11[] PROGMEM = "Rename"; +const char EN_12[] PROGMEM = "Delete"; +const char EN_13[] PROGMEM = "Add"; +const char EN_14[] PROGMEM = "Save"; +const char EN_15[] PROGMEM = "Default"; +const char EN_16[] PROGMEM = "Sleep"; +const char EN_17[] PROGMEM = "Boost"; +const char EN_18[] PROGMEM = "Save"; +const char EN_19[] PROGMEM = "Sleep"; +const char EN_20[] PROGMEM = "Off"; +const char EN_21[] PROGMEM = "Boost"; +const char EN_22[] PROGMEM = "Save"; +const char EN_23[] PROGMEM = "Direct"; +const char EN_24[] PROGMEM = "PID"; +const char EN_25[] PROGMEM = "Big"; +const char EN_26[] PROGMEM = "Infos"; +const char EN_27[] PROGMEM = "OFF"; +const char EN_28[] PROGMEM = "ON"; +const char EN_29[] PROGMEM = "NO"; +const char EN_30[] PROGMEM = "YES"; +const char EN_31[] PROGMEM = "CN"; +const char EN_32[] PROGMEM = "EN"; +const char EN_33[] PROGMEM = "NO"; +const char EN_34[] PROGMEM = "OK"; +const char EN_35[] PROGMEM = "Main Screen"; +const char EN_36[] PROGMEM = "Flip"; +const char EN_37[] PROGMEM = "Save"; +const char EN_38[] PROGMEM = "About"; +const char EN_39[] PROGMEM = "JP"; +const char *const EN_table[] PROGMEM = {EN_0, EN_1, EN_2, EN_3, EN_4, EN_5, EN_6, EN_7, EN_38, EN_8, EN_9, EN_10, EN_11, EN_12, EN_13, EN_14, EN_15, EN_16, EN_17, EN_18, EN_19, EN_20, EN_21, EN_22, EN_23, EN_24, EN_25, EN_26, EN_27, EN_28, EN_29, EN_30, EN_31, EN_32, EN_39, EN_33, EN_34, EN_35, EN_36, EN_37,}; + +/* + #!/usr/bin/python + # -*- coding: UTF-8 -*- + for num in range(0,38): + print("EN_",end="") + print(num,end='') + print(",",end="") +*/ +/* + 中文语言库 CHINESE + + //////////////////////////////////////////////////////////////////////////////////////////////////////// + 本地化提示:你可以按照位图的大小,把这里的文字位图替换成你的语言,确保位图分辨率一致即可,我们欢迎你把程序翻译为你当地的语言! + Localization tips: you can according to the size of the bitmap, + replace the text bitmap here with your language, + ensure that the bitmap resolution is consistent, + we welcome you to translate the program into your local language! + //////////////////////////////////////////////////////////////////////////////////////////////////////// +*/ +//width:28,height:14 主界面中文提示 +//Main Screen +//错误-ERROR +const unsigned char S1[] PROGMEM = { 0x20, 0x92, 0x1f, 0xc0, 0x3d, 0xf9, 0x90, 0x40, 0x20, 0x90, 0x90, 0x40, 0x40, 0x90, 0x1f, 0xc0, 0x7b, 0xff, 0x00, 0x00, 0xa0, 0x01, 0x3f, 0xe0, 0x21, 0xf9, 0x02, 0x00, 0xfd, 0x09, 0x02, 0x00, 0x21, 0x09, 0x7f, 0xf0, 0x21, 0xf9, 0x05, 0x00, 0x21, 0x09, 0x45, 0x00, 0x29, 0x09, 0x88, 0x80, 0x31, 0xf9, 0x10, 0x70, 0x21, 0x08, 0x20, 0x20 }; +//关机-OFF +const unsigned char S2[] PROGMEM = { 0x10, 0x40, 0x47, 0xc0, 0x17, 0xfc, 0x44, 0x40, 0x20, 0x03, 0xf4, 0x40, 0x23, 0xf8, 0x44, 0x40, 0x62, 0x08, 0xc4, 0x40, 0xa3, 0xf8, 0xe4, 0x40, 0x20, 0x01, 0x54, 0x40, 0x2f, 0xfd, 0x44, 0x40, 0x28, 0x06, 0x44, 0x40, 0x23, 0xf8, 0x44, 0x40, 0x20, 0x40, 0x44, 0x50, 0x20, 0x40, 0x48, 0x50, 0x21, 0x40, 0x50, 0x30, 0x20, 0x80, 0x40, 0x00 }; +//休眠-SLEEP +const unsigned char S3[] PROGMEM = { 0x10, 0x83, 0xdf, 0xc0, 0x10, 0x82, 0x50, 0x40, 0x20, 0x82, 0x50, 0x40, 0x2f, 0xff, 0xdf, 0xc0, 0x60, 0x82, 0x52, 0x00, 0x61, 0xc2, 0x52, 0x00, 0xa1, 0xc2, 0x5f, 0xe0, 0x22, 0xa3, 0xd2, 0x00, 0x22, 0xa2, 0x51, 0x00, 0x24, 0x92, 0x51, 0x00, 0x28, 0x8e, 0x50, 0x90, 0x30, 0x8b, 0xd4, 0x50, 0x20, 0x82, 0x58, 0x30, 0x20, 0x80, 0x10, 0x10 }; +//提温-BOOST +const unsigned char S4[] PROGMEM = { 0x23, 0xf2, 0x1f, 0xc0, 0x22, 0x11, 0x10, 0x40, 0xfb, 0xf0, 0x90, 0x40, 0x22, 0x12, 0x1f, 0xc0, 0x2a, 0x11, 0x10, 0x40, 0x33, 0xf1, 0x10, 0x40, 0x60, 0x00, 0x5f, 0xc0, 0xaf, 0xfc, 0x80, 0x00, 0x20, 0x41, 0x3f, 0xe0, 0x22, 0x43, 0x25, 0x20, 0x22, 0x79, 0x25, 0x20, 0x22, 0x41, 0x25, 0x20, 0xa5, 0x41, 0x25, 0x20, 0x48, 0xfd, 0x7f, 0xf0 }; +//正常工作-WORKY +const unsigned char S5[] PROGMEM = { 0x7f, 0xf8, 0x48, 0x80, 0x02, 0x00, 0x49, 0x00, 0x02, 0x01, 0xff, 0xf0, 0x02, 0x01, 0x00, 0x10, 0x02, 0x02, 0x7f, 0x20, 0x22, 0x00, 0x41, 0x00, 0x23, 0xf0, 0x7f, 0x00, 0x22, 0x00, 0x08, 0x00, 0x22, 0x00, 0xff, 0x80, 0x22, 0x00, 0x88, 0x80, 0x22, 0x00, 0x88, 0x80, 0x22, 0x00, 0x8a, 0x80, 0x22, 0x00, 0x89, 0x00, 0xff, 0xfc, 0x08, 0x00 }; +//加热-HEAT +const unsigned char S6[] PROGMEM = { 0x0f, 0x42, 0x1f, 0xc0, 0x78, 0x41, 0x10, 0x40, 0x08, 0x40, 0x90, 0x40, 0x08, 0x42, 0x1f, 0xc0, 0x08, 0x41, 0x10, 0x40, 0xff, 0xfd, 0x10, 0x40, 0x08, 0x40, 0x5f, 0xc0, 0x08, 0x40, 0x80, 0x00, 0x08, 0x41, 0x3f, 0xe0, 0x08, 0x43, 0x25, 0x20, 0x10, 0x41, 0x25, 0x20, 0x10, 0x41, 0x25, 0x20, 0x20, 0x41, 0x25, 0x20, 0x40, 0x41, 0x7f, 0xf0 }; +//维持-HOLD +const unsigned char S7[] PROGMEM = { 0x11, 0x40, 0x82, 0x00, 0x21, 0x20, 0x8f, 0xe0, 0x23, 0xfc, 0x82, 0x00, 0x4a, 0x23, 0xe2, 0x00, 0xfe, 0x20, 0x9f, 0xf0, 0x13, 0xf8, 0x80, 0x80, 0x22, 0x20, 0xc0, 0x80, 0x42, 0x21, 0xbf, 0xf0, 0xfb, 0xfa, 0x88, 0x80, 0x02, 0x20, 0x84, 0x80, 0x02, 0x20, 0x84, 0x80, 0x1a, 0x20, 0x80, 0x80, 0xe3, 0xfe, 0x82, 0x80, 0x02, 0x01, 0x01, 0x00 }; +const unsigned char *S_table[] = {S1, S2, S3, S4, S5, S6, S7}; + +// 菜单 width:36,height:16 +//MENU Oj +/* + The order here(↓) can refer to EN_table(↑↑↑) +*/ +const unsigned char t0[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x7f, 0x90, 0xf8, 0x00, 0x01, 0x08, 0x08, 0x88, 0x00, 0x0a, 0x10, 0x08, 0x88, 0x00, 0x04, 0x7f, 0x01, 0x07, 0x00, 0x1f, 0xc1, 0x3a, 0x00, 0x00, 0x05, 0x49, 0x09, 0xfc, 0x00, 0x04, 0x49, 0x08, 0x84, 0x00, 0x04, 0x49, 0x08, 0x88, 0x00, 0x04, 0x49, 0x08, 0x48, 0x00, 0x04, 0x49, 0x08, 0x50, 0x00, 0x04, 0x49, 0x0a, 0x20, 0x00, 0x04, 0x16, 0x0c, 0x58, 0x00, 0x14, 0x21, 0x89, 0x87, 0x00, 0x08, 0xc0, 0x86, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char t1[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xfe, 0x08, 0x20, 0x00, 0x08, 0x82, 0x0b, 0xff, 0x00, 0x04, 0x82, 0x0a, 0x01, 0x00, 0x10, 0xfe, 0x3c, 0x51, 0x00, 0x08, 0x82, 0x08, 0x88, 0x00, 0x08, 0x82, 0x09, 0x04, 0x00, 0x02, 0xfe, 0x0c, 0x00, 0x00, 0x04, 0x00, 0x19, 0xfc, 0x00, 0x09, 0xff, 0x28, 0x20, 0x00, 0x19, 0x29, 0x08, 0x20, 0x00, 0x09, 0x29, 0x08, 0x20, 0x00, 0x09, 0x29, 0x08, 0x20, 0x00, 0x09, 0x29, 0x2b, 0xff, 0x00, 0x0b, 0xff, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char t2[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x20, 0x3e, 0x04, 0x00, 0x1f, 0xff, 0xa2, 0x04, 0x00, 0x10, 0x00, 0xa2, 0xff, 0x00, 0x00, 0x01, 0x22, 0x04, 0x00, 0x0f, 0xfe, 0x22, 0x04, 0x00, 0x00, 0x40, 0x3e, 0x44, 0x00, 0x00, 0x40, 0x22, 0x24, 0x00, 0x04, 0x40, 0x22, 0x24, 0x00, 0x04, 0x7c, 0x22, 0x04, 0x00, 0x04, 0x40, 0x22, 0x04, 0x00, 0x0a, 0x40, 0x3e, 0x04, 0x00, 0x09, 0x40, 0x22, 0x24, 0x00, 0x10, 0xff, 0x80, 0x14, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00 }; +const unsigned char t3[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x12, 0x02, 0x00, 0x05, 0xff, 0x9f, 0xd2, 0x00, 0x05, 0x00, 0x92, 0x12, 0x00, 0x1e, 0x28, 0xa2, 0x12, 0x00, 0x04, 0x44, 0x3f, 0xf2, 0x00, 0x04, 0x82, 0x02, 0x12, 0x00, 0x06, 0x00, 0x02, 0x12, 0x00, 0x0c, 0xfe, 0x1f, 0xd2, 0x00, 0x14, 0x10, 0x12, 0x52, 0x00, 0x04, 0x10, 0x12, 0x42, 0x00, 0x04, 0x10, 0x13, 0x42, 0x00, 0x04, 0x10, 0x12, 0x82, 0x00, 0x15, 0xff, 0x82, 0x0a, 0x00, 0x08, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char t4[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xfe, 0x0f, 0xf8, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x07, 0xfe, 0x00, 0x00, 0x00, 0x04, 0x02, 0x3f, 0xfe, 0x00, 0x04, 0x02, 0x00, 0x80, 0x00, 0x07, 0xfe, 0x00, 0x80, 0x00, 0x00, 0x90, 0x04, 0x90, 0x00, 0x08, 0x91, 0x0c, 0x88, 0x00, 0x06, 0x93, 0x10, 0x86, 0x00, 0x02, 0x94, 0x20, 0x82, 0x00, 0x00, 0x90, 0x00, 0x80, 0x00, 0x00, 0x90, 0x02, 0x80, 0x00, 0x1f, 0xff, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char t5[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x80, 0x00, 0x1f, 0xff, 0x9f, 0xfc, 0x00, 0x00, 0x40, 0x04, 0x10, 0x00, 0x0f, 0xff, 0x02, 0x20, 0x00, 0x00, 0x00, 0x3f, 0xff, 0x00, 0x0f, 0xfe, 0x00, 0x00, 0x00, 0x08, 0x42, 0x0f, 0xf8, 0x00, 0x08, 0x42, 0x08, 0x08, 0x00, 0x0f, 0xfe, 0x08, 0x08, 0x00, 0x08, 0x02, 0x0f, 0xf8, 0x00, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x00, 0x0f, 0xf8, 0x00, 0x10, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char t6[] PROGMEM = { 0x09, 0xff, 0x00, 0x40, 0x00, 0x04, 0x20, 0x3f, 0xff, 0x00, 0x04, 0x20, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x1c, 0x42, 0x0f, 0xfc, 0x00, 0x04, 0x42, 0x00, 0x00, 0x00, 0x07, 0xff, 0x80, 0x00, 0x00, 0x04, 0x00, 0x0f, 0xfc, 0x00, 0x04, 0xff, 0x00, 0x00, 0x00, 0x04, 0x81, 0x00, 0x00, 0x00, 0x05, 0x81, 0x0f, 0xfc, 0x00, 0x06, 0x81, 0x08, 0x04, 0x00, 0x04, 0xff, 0x08, 0x04, 0x00, 0x00, 0x81, 0x0f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; + +const unsigned char t7[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0f, 0xfe, 0x00, 0x01, 0x00, 0x08, 0x20, 0x00, 0x03, 0xff, 0x08, 0x20, 0x00, 0x02, 0x01, 0x08, 0x20, 0x00, 0x04, 0x22, 0x08, 0x20, 0x00, 0x08, 0x20, 0x0b, 0xfe, 0x00, 0x10, 0x20, 0x08, 0x20, 0x00, 0x00, 0x50, 0x08, 0x28, 0x00, 0x00, 0x50, 0x08, 0x24, 0x00, 0x00, 0x88, 0x08, 0x22, 0x00, 0x00, 0x88, 0x10, 0x20, 0x00, 0x01, 0x04, 0x10, 0x20, 0x00, 0x02, 0x03, 0xa7, 0xff, 0x00, 0x0c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char Back[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x07, 0x00, 0x00, 0x00, 0x08, 0xf8, 0x3f, 0xfe, 0x00, 0x04, 0x80, 0x20, 0x02, 0x00, 0x00, 0x80, 0x20, 0x02, 0x00, 0x00, 0xbe, 0x23, 0xe2, 0x00, 0x1c, 0x82, 0x22, 0x22, 0x00, 0x04, 0xa4, 0x22, 0x22, 0x00, 0x04, 0x94, 0x22, 0x22, 0x00, 0x04, 0x88, 0x22, 0x22, 0x00, 0x04, 0x94, 0x23, 0xe2, 0x00, 0x05, 0x22, 0x20, 0x02, 0x00, 0x05, 0x42, 0x20, 0x02, 0x00, 0x0a, 0x00, 0x3f, 0xfe, 0x00, 0x11, 0xff, 0xa0, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; + +const unsigned char t1_1[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x08, 0x20, 0x90, 0x00, 0x02, 0x7f, 0x98, 0x90, 0x00, 0x1f, 0x80, 0x09, 0xff, 0x00, 0x02, 0x22, 0x01, 0x10, 0x00, 0x06, 0x21, 0x8b, 0x10, 0x00, 0x07, 0x62, 0x8d, 0xfe, 0x00, 0x0a, 0xa2, 0x09, 0x10, 0x00, 0x0a, 0x14, 0x11, 0x10, 0x00, 0x12, 0x14, 0x31, 0xfe, 0x00, 0x02, 0x08, 0x11, 0x10, 0x00, 0x02, 0x14, 0x11, 0x10, 0x00, 0x02, 0x22, 0x11, 0x10, 0x00, 0x02, 0x43, 0x91, 0xff, 0x00, 0x02, 0x81, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char t1_2[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x80, 0x00, 0x00, 0x50, 0x01, 0xfc, 0x00, 0x00, 0x88, 0x01, 0x04, 0x00, 0x01, 0x04, 0x03, 0x08, 0x00, 0x06, 0xfb, 0x04, 0x90, 0x00, 0x08, 0x00, 0xc0, 0x60, 0x00, 0x07, 0xdf, 0x01, 0x80, 0x00, 0x04, 0x51, 0x06, 0x00, 0x00, 0x04, 0x51, 0x1b, 0xfe, 0x00, 0x04, 0x51, 0x02, 0x02, 0x00, 0x07, 0xd9, 0x02, 0x02, 0x00, 0x04, 0x56, 0x02, 0x02, 0x00, 0x00, 0x10, 0x03, 0xfe, 0x00, 0x00, 0x10, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char t1_3[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x78, 0xbc, 0x20, 0x00, 0x09, 0x48, 0xa4, 0x50, 0x00, 0x09, 0x4a, 0xa8, 0x50, 0x00, 0x09, 0x4a, 0xa8, 0x88, 0x00, 0x09, 0x4a, 0xb1, 0x04, 0x00, 0x1f, 0xfe, 0xaa, 0xfb, 0x00, 0x09, 0x4a, 0xa4, 0x20, 0x00, 0x09, 0x4a, 0xa4, 0x20, 0x00, 0x09, 0x4a, 0xa7, 0xfe, 0x00, 0x09, 0x4a, 0xb4, 0x20, 0x00, 0x09, 0x48, 0xa9, 0x24, 0x00, 0x0b, 0x48, 0xa2, 0x22, 0x00, 0x08, 0x8a, 0xa4, 0xa2, 0x00, 0x11, 0x19, 0x20, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char t1_4[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x03, 0x00, 0x10, 0x00, 0x1f, 0xdc, 0x3e, 0xfe, 0x00, 0x08, 0x90, 0x02, 0x12, 0x00, 0x05, 0x10, 0x04, 0xff, 0x00, 0x1f, 0xdf, 0x84, 0x12, 0x00, 0x02, 0x12, 0x0c, 0xfe, 0x00, 0x1f, 0xd2, 0x02, 0x10, 0x00, 0x02, 0x12, 0x22, 0xfe, 0x00, 0x0a, 0x92, 0x14, 0x10, 0x00, 0x0a, 0x52, 0x14, 0x10, 0x00, 0x12, 0x22, 0x0d, 0xff, 0x00, 0x02, 0x22, 0x08, 0x10, 0x00, 0x0a, 0x42, 0x14, 0x10, 0x00, 0x04, 0x02, 0x23, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +//默认 +const unsigned char t2_0[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xc8, 0x10, 0x20, 0x00, 0x12, 0x4a, 0x0c, 0x20, 0x00, 0x1a, 0xc9, 0x04, 0x20, 0x00, 0x17, 0x48, 0x00, 0x20, 0x00, 0x1f, 0xff, 0xb8, 0x20, 0x00, 0x02, 0x08, 0x08, 0x50, 0x00, 0x1f, 0xc8, 0x08, 0x50, 0x00, 0x02, 0x08, 0x08, 0x50, 0x00, 0x03, 0xc8, 0x08, 0x48, 0x00, 0x1e, 0x14, 0x08, 0x88, 0x00, 0x01, 0x54, 0x0a, 0x88, 0x00, 0x15, 0x22, 0x0c, 0x84, 0x00, 0x14, 0x43, 0x89, 0x07, 0x00, 0x00, 0x81, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +//休眠 +const unsigned char t2_1[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x3d, 0xfc, 0x00, 0x02, 0x10, 0x25, 0x04, 0x00, 0x04, 0x10, 0x25, 0x04, 0x00, 0x05, 0xff, 0xbd, 0xfc, 0x00, 0x0c, 0x10, 0x25, 0x20, 0x00, 0x0c, 0x38, 0x25, 0x20, 0x00, 0x14, 0x38, 0x25, 0xfe, 0x00, 0x04, 0x54, 0x3d, 0x20, 0x00, 0x04, 0x54, 0x25, 0x10, 0x00, 0x04, 0x92, 0x25, 0x10, 0x00, 0x05, 0x11, 0xa5, 0x09, 0x00, 0x06, 0x11, 0x3d, 0x45, 0x00, 0x04, 0x10, 0x25, 0x83, 0x00, 0x04, 0x10, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +//提温 +const unsigned char t2_2[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x7e, 0x21, 0xfc, 0x00, 0x04, 0x42, 0x11, 0x04, 0x00, 0x1f, 0x7e, 0x09, 0x04, 0x00, 0x04, 0x42, 0x21, 0xfc, 0x00, 0x05, 0x42, 0x11, 0x04, 0x00, 0x06, 0x7e, 0x11, 0x04, 0x00, 0x0c, 0x00, 0x05, 0xfc, 0x00, 0x15, 0xff, 0x88, 0x00, 0x00, 0x04, 0x08, 0x13, 0xfe, 0x00, 0x04, 0x48, 0x32, 0x52, 0x00, 0x04, 0x4f, 0x12, 0x52, 0x00, 0x04, 0x48, 0x12, 0x52, 0x00, 0x14, 0xa8, 0x12, 0x52, 0x00, 0x09, 0x1f, 0x97, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +//关机 +const unsigned char t3_1[] PROGMEM = { 0x01, 0x04, 0x04, 0x7c, 0x00, 0x00, 0x88, 0x04, 0x44, 0x00, 0x0f, 0xff, 0x3f, 0x44, 0x00, 0x00, 0x20, 0x04, 0x44, 0x00, 0x00, 0x20, 0x0c, 0x44, 0x00, 0x00, 0x20, 0x0e, 0x44, 0x00, 0x1f, 0xff, 0x95, 0x44, 0x00, 0x00, 0x20, 0x14, 0x44, 0x00, 0x00, 0x50, 0x24, 0x44, 0x00, 0x00, 0x50, 0x04, 0x44, 0x00, 0x00, 0x88, 0x04, 0x45, 0x00, 0x01, 0x04, 0x04, 0x85, 0x00, 0x06, 0x03, 0x85, 0x03, 0x00, 0x18, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; + +const unsigned char t_4[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x08, 0x20, 0x00, 0x0f, 0xff, 0x09, 0xfc, 0x00, 0x00, 0x20, 0x08, 0x00, 0x00, 0x00, 0x20, 0x3e, 0x88, 0x00, 0x03, 0xfe, 0x08, 0x50, 0x00, 0x02, 0x02, 0x0b, 0xfe, 0x00, 0x03, 0xfe, 0x0c, 0x40, 0x00, 0x02, 0x02, 0x18, 0x40, 0x00, 0x03, 0xfe, 0x2b, 0xfe, 0x00, 0x02, 0x02, 0x08, 0x48, 0x00, 0x03, 0xfe, 0x08, 0x88, 0x00, 0x02, 0x02, 0x08, 0x50, 0x00, 0x02, 0x02, 0x28, 0x30, 0x00, 0x1f, 0xff, 0x91, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char t_PID[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xc3, 0xf1, 0xe0, 0x00, 0x0f, 0xe3, 0xf1, 0xf8, 0x00, 0x0c, 0x70, 0xc1, 0x9e, 0x00, 0x0c, 0x30, 0xc1, 0x86, 0x00, 0x0c, 0x30, 0xc1, 0x83, 0x00, 0x0c, 0x30, 0xc1, 0x83, 0x00, 0x0c, 0x60, 0xc1, 0x83, 0x00, 0x0c, 0x60, 0xc1, 0x83, 0x00, 0x0f, 0xc0, 0xc1, 0x83, 0x00, 0x0f, 0xc0, 0xc1, 0x86, 0x00, 0x0c, 0x00, 0xc1, 0x86, 0x00, 0x0c, 0x00, 0xc1, 0x98, 0x00, 0x0c, 0x03, 0xf1, 0xf8, 0x00, 0x0c, 0x03, 0xf1, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; + +const unsigned char t5_0[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xdf, 0x88, 0x40, 0x00, 0x0a, 0x24, 0x10, 0x40, 0x00, 0x11, 0x42, 0x10, 0xfe, 0x00, 0x04, 0x00, 0x22, 0x82, 0x00, 0x02, 0xff, 0x3d, 0x02, 0x00, 0x08, 0x01, 0x0a, 0x42, 0x00, 0x09, 0xf9, 0x10, 0x32, 0x00, 0x09, 0x09, 0x20, 0x12, 0x00, 0x09, 0xf9, 0x3e, 0x02, 0x00, 0x09, 0x09, 0x00, 0x02, 0x00, 0x09, 0x09, 0x0e, 0x02, 0x00, 0x09, 0xf9, 0x30, 0x22, 0x00, 0x08, 0x05, 0x00, 0x14, 0x00, 0x08, 0x02, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char t5_1[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x44, 0x10, 0xfe, 0x00, 0x04, 0x28, 0x10, 0x92, 0x00, 0x05, 0xff, 0x22, 0x92, 0x00, 0x00, 0x10, 0x3c, 0x92, 0x00, 0x00, 0x10, 0x08, 0x92, 0x00, 0x1c, 0xfe, 0x10, 0x92, 0x00, 0x04, 0x10, 0x20, 0xfe, 0x00, 0x04, 0x10, 0x3e, 0x92, 0x00, 0x05, 0xff, 0x80, 0x92, 0x00, 0x04, 0x10, 0x00, 0x92, 0x00, 0x05, 0x10, 0x0e, 0x92, 0x00, 0x06, 0x10, 0x30, 0x92, 0x00, 0x04, 0x10, 0x00, 0xfe, 0x00, 0x00, 0x10, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char t5_3[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x08, 0x3f, 0xfe, 0x00, 0x1f, 0xff, 0x81, 0x00, 0x00, 0x00, 0x40, 0x02, 0x00, 0x00, 0x07, 0xfe, 0x0f, 0xf8, 0x00, 0x04, 0x02, 0x08, 0x08, 0x00, 0x04, 0x02, 0x08, 0x88, 0x00, 0x07, 0xfe, 0x08, 0x88, 0x00, 0x04, 0x02, 0x08, 0x88, 0x00, 0x04, 0x02, 0x08, 0x88, 0x00, 0x07, 0xfe, 0x08, 0x88, 0x00, 0x04, 0x02, 0x09, 0x48, 0x00, 0x04, 0x02, 0x02, 0x30, 0x00, 0x07, 0xfe, 0x04, 0x0c, 0x00, 0x04, 0x02, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; + +const unsigned char t_off[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x04, 0xff, 0x00, 0x00, 0x44, 0x02, 0x01, 0x00, 0x07, 0xff, 0x90, 0x21, 0x00, 0x00, 0x10, 0x10, 0x21, 0x00, 0x00, 0x10, 0x17, 0xfd, 0x00, 0x00, 0x10, 0x10, 0x21, 0x00, 0x0f, 0xff, 0xd0, 0x61, 0x00, 0x00, 0x10, 0x10, 0xa1, 0x00, 0x00, 0x28, 0x11, 0x21, 0x00, 0x00, 0x28, 0x12, 0x21, 0x00, 0x00, 0x44, 0x14, 0x21, 0x00, 0x00, 0x82, 0x10, 0xa1, 0x00, 0x03, 0x01, 0xd0, 0x45, 0x00, 0x0c, 0x00, 0x90, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char t_on[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0x80, 0x20, 0x00, 0x00, 0x84, 0x07, 0xff, 0x00, 0x00, 0x84, 0x04, 0x01, 0x00, 0x00, 0x84, 0x04, 0x01, 0x00, 0x00, 0x84, 0x04, 0x01, 0x00, 0x0f, 0xff, 0xc7, 0xff, 0x00, 0x00, 0x84, 0x04, 0x00, 0x00, 0x00, 0x84, 0x04, 0x00, 0x00, 0x00, 0x84, 0x05, 0xff, 0x00, 0x00, 0x84, 0x05, 0x01, 0x00, 0x01, 0x04, 0x09, 0x01, 0x00, 0x01, 0x04, 0x09, 0x01, 0x00, 0x02, 0x04, 0x11, 0xff, 0x00, 0x04, 0x04, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; + +const unsigned char t_NO[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xf0, 0x04, 0x91, 0x00, 0x04, 0x40, 0x02, 0x52, 0x00, 0x04, 0x7f, 0x90, 0x54, 0x00, 0x04, 0x50, 0x88, 0xff, 0x00, 0x07, 0xd0, 0x84, 0x81, 0x00, 0x04, 0x51, 0x00, 0x81, 0x00, 0x04, 0x49, 0x01, 0xff, 0x00, 0x07, 0xca, 0x02, 0x81, 0x00, 0x04, 0x44, 0x04, 0x81, 0x00, 0x04, 0x4a, 0x1c, 0xff, 0x00, 0x07, 0xea, 0x04, 0x81, 0x00, 0x0c, 0x51, 0x04, 0x81, 0x00, 0x00, 0x61, 0xc4, 0x85, 0x00, 0x00, 0x40, 0x80, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char t_OK[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xdf, 0x10, 0x20, 0x00, 0x02, 0x12, 0x0c, 0x20, 0x00, 0x02, 0x24, 0x04, 0x20, 0x00, 0x04, 0x7f, 0x80, 0x20, 0x00, 0x04, 0x24, 0xb8, 0x20, 0x00, 0x0f, 0xa4, 0x88, 0x50, 0x00, 0x14, 0xbf, 0x88, 0x50, 0x00, 0x04, 0xa4, 0x88, 0x50, 0x00, 0x04, 0xa4, 0x88, 0x48, 0x00, 0x04, 0xbf, 0x88, 0x88, 0x00, 0x04, 0xa4, 0x8a, 0x88, 0x00, 0x07, 0xa4, 0x8c, 0x84, 0x00, 0x04, 0x44, 0x89, 0x07, 0x00, 0x00, 0x81, 0x86, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; + +const unsigned char t_CN_CN[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x80, 0x00, 0x00, 0x40, 0x00, 0x80, 0x00, 0x0f, 0xff, 0x3f, 0xff, 0x00, 0x08, 0x41, 0x04, 0x08, 0x00, 0x08, 0x41, 0x04, 0x08, 0x00, 0x08, 0x41, 0x04, 0x10, 0x00, 0x08, 0x41, 0x02, 0x10, 0x00, 0x0f, 0xff, 0x02, 0x20, 0x00, 0x08, 0x41, 0x01, 0x20, 0x00, 0x00, 0x40, 0x00, 0xc0, 0x00, 0x00, 0x40, 0x01, 0x30, 0x00, 0x00, 0x40, 0x02, 0x08, 0x00, 0x00, 0x40, 0x0c, 0x07, 0x00, 0x00, 0x40, 0x30, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char t_CN_EN[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x80, 0x00, 0x1f, 0xff, 0x80, 0x80, 0x00, 0x01, 0x10, 0x3f, 0xff, 0x00, 0x00, 0x40, 0x04, 0x08, 0x00, 0x07, 0xfc, 0x04, 0x08, 0x00, 0x04, 0x44, 0x04, 0x10, 0x00, 0x04, 0x44, 0x02, 0x10, 0x00, 0x04, 0x44, 0x02, 0x20, 0x00, 0x1f, 0xff, 0x81, 0x20, 0x00, 0x00, 0x40, 0x00, 0xc0, 0x00, 0x00, 0xa0, 0x01, 0x30, 0x00, 0x01, 0x10, 0x02, 0x08, 0x00, 0x06, 0x0c, 0x0c, 0x07, 0x00, 0x18, 0x03, 0xb0, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char t_CN_JP[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xfe, 0x13, 0xfe, 0x00, 0x04, 0x02, 0x08, 0x40, 0x00, 0x04, 0x02, 0x08, 0x40, 0x00, 0x04, 0x02, 0x01, 0xfc, 0x00, 0x04, 0x02, 0x38, 0x84, 0x00, 0x04, 0x02, 0x08, 0x84, 0x00, 0x07, 0xfe, 0x0f, 0xff, 0x00, 0x04, 0x02, 0x08, 0x00, 0x00, 0x04, 0x02, 0x09, 0xfe, 0x00, 0x04, 0x02, 0x09, 0x02, 0x00, 0x04, 0x02, 0x0b, 0x02, 0x00, 0x04, 0x02, 0x0d, 0x02, 0x00, 0x07, 0xfe, 0x09, 0xfe, 0x00, 0x04, 0x02, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; + +//翻转 +const unsigned char t4f[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x1d, 0xc2, 0x08, 0x00, 0x05, 0x44, 0x42, 0x08, 0x00, 0x03, 0x84, 0x5f, 0xbf, 0x00, 0x0f, 0xe4, 0x44, 0x10, 0x00, 0x01, 0x15, 0x45, 0x10, 0x00, 0x05, 0x4c, 0xc9, 0x7f, 0x80, 0x09, 0x24, 0x4f, 0x90, 0x00, 0x07, 0xc4, 0xc1, 0x10, 0x00, 0x05, 0x4d, 0x41, 0x3f, 0x00, 0x05, 0x54, 0x43, 0x81, 0x00, 0x07, 0xc4, 0x4d, 0x02, 0x00, 0x05, 0x44, 0x41, 0x14, 0x00, 0x05, 0x55, 0x41, 0x08, 0x00, 0x07, 0xc8, 0x81, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +//保存 +const unsigned char t_save[] PROGMEM = { 0x02, 0xfe, 0x01, 0x00, 0x00, 0x02, 0x82, 0x3f, 0xff, 0x00, 0x04, 0x82, 0x02, 0x00, 0x00, 0x04, 0xfe, 0x02, 0x00, 0x00, 0x0c, 0x10, 0x04, 0xfc, 0x00, 0x14, 0x10, 0x04, 0x08, 0x00, 0x05, 0xff, 0x8c, 0x10, 0x00, 0x04, 0x10, 0x14, 0x10, 0x00, 0x04, 0x38, 0x25, 0xff, 0x00, 0x04, 0x34, 0x04, 0x10, 0x00, 0x04, 0x52, 0x04, 0x10, 0x00, 0x04, 0x91, 0x84, 0x10, 0x00, 0x05, 0x10, 0x04, 0x50, 0x00, 0x04, 0x10, 0x04, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char tAbout[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x0f, 0xfe, 0x00, 0x00, 0x44, 0x00, 0x40, 0x00, 0x07, 0xff, 0x80, 0x40, 0x00, 0x00, 0x10, 0x00, 0x40, 0x00, 0x00, 0x10, 0x00, 0x40, 0x00, 0x00, 0x10, 0x1f, 0xff, 0x80, 0x0f, 0xff, 0xc0, 0x40, 0x00, 0x00, 0x10, 0x00, 0x40, 0x00, 0x00, 0x28, 0x00, 0x40, 0x00, 0x00, 0x28, 0x00, 0x40, 0x00, 0x00, 0x44, 0x00, 0x40, 0x00, 0x00, 0x82, 0x00, 0x40, 0x00, 0x03, 0x01, 0xc1, 0x40, 0x00, 0x0c, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; + +const unsigned char *CN_table[] = { + t0, t1, t2, t3, t4, t5, t7, t6, tAbout, Back, //0 + t0, t1_1, t1_2, t1_3, t1_4, t_save, //1 + t2_0, t2_1, t2_2, t_save, //2 + t2_1, t3_1, t2_2, t_save,//3 + t_4, t_PID,//4 + t5_0, t5_1,//5 + t_off, t_on,//6 + t_NO, t_OK,//7 + t_CN_CN, t_CN_EN, t_CN_JP, //8 + t_NO, t_OK,//9 + t5_3, t4f, t_save, //10 +}; +/* + 日语 Japanese +*/ +/* + 8x8 dot Japanese font for Arduboy + + Copyright (c) 2016 emutyworks + + Released under the MIT license + https://github.com/emutyworks/8x8DotJPFont/blob/master/LICENSE.txt +*/ + +#define MISAKI_FONT_H + +#define MISAKI_FONT_F0_PAGE 0xF0 +#define MISAKI_FONT_F1_PAGE 0xF1 +#define MISAKI_FONT_F2_PAGE 0xF2 + +#define MISAKI_FONT_F0_W 8 +#define MISAKI_FONT_F1_W 3 +#define MISAKI_FONT_F2_W 7 + +#define MISAKI_FONT_F0_SIZE 0xEF +#define MISAKI_FONT_F1_SIZE 0x9D +#define MISAKI_FONT_F2_SIZE 0x1E // misaki_font_f2.h の最終行の値をここに設定する、最大0xEFまで + +/* + 利用しないフォントデータはヘッダファイルを読み込まないようにするとメモリが節約できます、 + drawText() 実行時にフォントが無い場合は処理がスキップされます。 + + 例) 8x8 dot ひらがな・カタカナ・記号 のみ利用 + #include "misaki_font_f0.h" // 8x8 dot ひらがな・カタカナ・記号 + //#include "misaki_font_f1.h" // 4x8 dot 英語・カタカナ・記号 + //#include "misaki_font_f2.h" // 8x8 dot 漢字 +*/ +PROGMEM const uint8_t misaki_font_0x00[1] = { 0x00 }; +#define MISAKI_FONT_F0_H +PROGMEM const uint8_t misaki_font_f0[ MISAKI_FONT_F0_SIZE + 1 ][ MISAKI_FONT_F0_W ] = +{ + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 0x00   */ + { 0x20, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 0x01 、 */ + { 0x20, 0x50, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 0x02 。 */ + { 0x50, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 0x03 , */ + { 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 0x04 . */ + { 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00 }, /* 0x05 ・ */ + { 0x00, 0x00, 0x36, 0x36, 0x00, 0x00, 0x00, 0x00 }, /* 0x06 : */ + { 0x00, 0x00, 0x56, 0x36, 0x00, 0x00, 0x00, 0x00 }, /* 0x07 ; */ + { 0x00, 0x02, 0x01, 0x51, 0x09, 0x09, 0x06, 0x00 }, /* 0x08 ? */ + { 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x00 }, /* 0x09 ! */ + { 0x00, 0x00, 0x00, 0x00, 0x7f, 0x41, 0x41, 0x00 }, /* 0x0A [ */ + { 0x41, 0x41, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 0x0B ] */ + { 0x00, 0x00, 0x00, 0x3f, 0x01, 0x01, 0x01, 0x00 }, /* 0x0C 「 */ + { 0x40, 0x40, 0x40, 0x7e, 0x00, 0x00, 0x00, 0x00 }, /* 0x0D 」 */ + { 0x00, 0x00, 0x3f, 0x21, 0x3d, 0x05, 0x07, 0x00 }, /* 0x0E 『 */ + { 0x70, 0x50, 0x5e, 0x42, 0x7e, 0x00, 0x00, 0x00 }, /* 0x0F 』 */ + { 0x00, 0x00, 0x00, 0x00, 0x7f, 0x63, 0x41, 0x00 }, /* 0x10 【 */ + { 0x41, 0x63, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 0x11 】 */ + { 0x08, 0x08, 0x08, 0x7f, 0x08, 0x08, 0x08, 0x00 }, /* 0x12 + */ + { 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00 }, /* 0x13 - */ + { 0x44, 0x44, 0x44, 0x5f, 0x44, 0x44, 0x44, 0x00 }, /* 0x14 ± */ + { 0x41, 0x22, 0x14, 0x08, 0x14, 0x22, 0x41, 0x00 }, /* 0x15 × */ + { 0x08, 0x08, 0x08, 0x2a, 0x08, 0x08, 0x08, 0x00 }, /* 0x16 ÷ */ + { 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x00 }, /* 0x17 = */ + { 0x14, 0x34, 0x14, 0x1c, 0x14, 0x16, 0x14, 0x00 }, /* 0x18 ≠ */ + { 0x08, 0x08, 0x14, 0x14, 0x14, 0x22, 0x22, 0x00 }, /* 0x19 < */ + { 0x22, 0x22, 0x14, 0x14, 0x14, 0x08, 0x08, 0x00 }, /* 0x1A > */ + { 0x02, 0x05, 0x02, 0x3c, 0x42, 0x42, 0x24, 0x00 }, /* 0x1B ℃ */ + { 0x00, 0x2b, 0x2c, 0x78, 0x2c, 0x2b, 0x00, 0x00 }, /* 0x1C ¥ */ + { 0x00, 0x24, 0x2a, 0x7a, 0x2f, 0x2a, 0x12, 0x00 }, /* 0x1D $ */ + { 0x00, 0x1c, 0x62, 0x32, 0x2e, 0x23, 0x14, 0x00 }, /* 0x1E ¢ */ + { 0x20, 0x54, 0x5e, 0x25, 0x41, 0x42, 0x20, 0x00 }, /* 0x1F £ */ + { 0x42, 0x25, 0x12, 0x08, 0x24, 0x52, 0x21, 0x00 }, /* 0x20 % */ + { 0x20, 0x62, 0x3e, 0x63, 0x3e, 0x23, 0x02, 0x00 }, /* 0x21 # */ + { 0x20, 0x56, 0x49, 0x55, 0x22, 0x58, 0x40, 0x00 }, /* 0x22 & */ + { 0x00, 0x22, 0x14, 0x7f, 0x14, 0x22, 0x00, 0x00 }, /* 0x23 * */ + { 0x1c, 0x22, 0x59, 0x55, 0x4d, 0x12, 0x0c, 0x00 }, /* 0x24 @ */ + { 0x00, 0x00, 0x4a, 0x55, 0x55, 0x29, 0x00, 0x00 }, /* 0x25 § */ + { 0x04, 0x64, 0x3c, 0x17, 0x3c, 0x64, 0x04, 0x00 }, /* 0x26 ☆ */ + { 0x04, 0x64, 0x3c, 0x1f, 0x3c, 0x64, 0x04, 0x00 }, /* 0x27 ★ */ + { 0x1c, 0x22, 0x41, 0x41, 0x41, 0x22, 0x1c, 0x00 }, /* 0x28 ○ */ + { 0x1c, 0x3e, 0x7f, 0x7f, 0x7f, 0x3e, 0x1c, 0x00 }, /* 0x29 ● */ + { 0x1c, 0x22, 0x5d, 0x55, 0x5d, 0x22, 0x1c, 0x00 }, /* 0x2A ◎ */ + { 0x08, 0x14, 0x22, 0x41, 0x22, 0x14, 0x08, 0x00 }, /* 0x2B ◇ */ + { 0x08, 0x1c, 0x3e, 0x7f, 0x3e, 0x1c, 0x08, 0x00 }, /* 0x2C ◆ */ + { 0x7f, 0x41, 0x41, 0x41, 0x41, 0x41, 0x7f, 0x00 }, /* 0x2D □ */ + { 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x00 }, /* 0x2E ■ */ + { 0x40, 0x70, 0x4c, 0x43, 0x4c, 0x70, 0x40, 0x00 }, /* 0x2F △ */ + { 0x40, 0x70, 0x7c, 0x7f, 0x7c, 0x70, 0x40, 0x00 }, /* 0x30 ▲ */ + { 0x01, 0x07, 0x19, 0x61, 0x19, 0x07, 0x01, 0x00 }, /* 0x31 ▽ */ + { 0x01, 0x07, 0x1f, 0x7f, 0x1f, 0x07, 0x01, 0x00 }, /* 0x32 ▼ */ + { 0x49, 0x22, 0x14, 0x49, 0x14, 0x22, 0x49, 0x00 }, /* 0x33 ※ */ + { 0x05, 0x05, 0x05, 0x7d, 0x05, 0x05, 0x05, 0x00 }, /* 0x34 〒 */ + { 0x08, 0x08, 0x08, 0x08, 0x2a, 0x1c, 0x08, 0x00 }, /* 0x35 → */ + { 0x08, 0x1c, 0x2a, 0x08, 0x08, 0x08, 0x08, 0x00 }, /* 0x36 ← */ + { 0x00, 0x04, 0x02, 0x7f, 0x02, 0x04, 0x00, 0x00 }, /* 0x37 ↑ */ + { 0x00, 0x10, 0x20, 0x7f, 0x20, 0x10, 0x00, 0x00 }, /* 0x38 ↓ */ + { 0x00, 0x3e, 0x41, 0x41, 0x41, 0x41, 0x3e, 0x00 }, /* 0x39 0 */ + { 0x00, 0x00, 0x42, 0x7f, 0x40, 0x00, 0x00, 0x00 }, /* 0x3A 1 */ + { 0x00, 0x62, 0x51, 0x51, 0x49, 0x49, 0x46, 0x00 }, /* 0x3B 2 */ + { 0x00, 0x22, 0x41, 0x49, 0x49, 0x49, 0x36, 0x00 }, /* 0x3C 3 */ + { 0x00, 0x30, 0x28, 0x24, 0x22, 0x7f, 0x20, 0x00 }, /* 0x3D 4 */ + { 0x00, 0x2f, 0x45, 0x45, 0x45, 0x45, 0x39, 0x00 }, /* 0x3E 5 */ + { 0x00, 0x3e, 0x49, 0x49, 0x49, 0x49, 0x32, 0x00 }, /* 0x3F 6 */ + { 0x00, 0x01, 0x01, 0x61, 0x19, 0x05, 0x03, 0x00 }, /* 0x40 7 */ + { 0x00, 0x36, 0x49, 0x49, 0x49, 0x49, 0x36, 0x00 }, /* 0x41 8 */ + { 0x00, 0x26, 0x49, 0x49, 0x49, 0x49, 0x3e, 0x00 }, /* 0x42 9 */ + { 0x00, 0x20, 0x54, 0x7e, 0x34, 0x14, 0x60, 0x00 }, /* 0x43 ぁ */ + { 0x20, 0x52, 0x7f, 0x2a, 0x1a, 0x4a, 0x30, 0x00 }, /* 0x44 あ */ + { 0x00, 0x3c, 0x40, 0x20, 0x04, 0x18, 0x00, 0x00 }, /* 0x45 ぃ */ + { 0x1e, 0x20, 0x40, 0x20, 0x02, 0x04, 0x18, 0x00 }, /* 0x46 い */ + { 0x00, 0x10, 0x4a, 0x4a, 0x2a, 0x10, 0x00, 0x00 }, /* 0x47 ぅ */ + { 0x00, 0x08, 0x45, 0x45, 0x45, 0x25, 0x18, 0x00 }, /* 0x48 う */ + { 0x00, 0x48, 0x2a, 0x3a, 0x4a, 0x40, 0x00, 0x00 }, /* 0x49 ぇ */ + { 0x00, 0x44, 0x25, 0x15, 0x3d, 0x45, 0x40, 0x00 }, /* 0x4A え */ + { 0x00, 0x24, 0x7e, 0x14, 0x50, 0x24, 0x00, 0x00 }, /* 0x4B ぉ */ + { 0x22, 0x52, 0x7f, 0x0a, 0x48, 0x4a, 0x34, 0x00 }, /* 0x4C お */ + { 0x44, 0x34, 0x4f, 0x44, 0x38, 0x04, 0x18, 0x00 }, /* 0x4D か */ + { 0x44, 0x34, 0x4f, 0x44, 0x39, 0x04, 0x19, 0x00 }, /* 0x4E が */ + { 0x00, 0x2a, 0x5a, 0x4b, 0x4e, 0x5a, 0x08, 0x00 }, /* 0x4F き */ + { 0x00, 0x2a, 0x5a, 0x4b, 0x4e, 0x5b, 0x08, 0x00 }, /* 0x50 ぎ */ + { 0x00, 0x08, 0x14, 0x14, 0x22, 0x41, 0x00, 0x00 }, /* 0x51 く */ + { 0x00, 0x08, 0x14, 0x14, 0x22, 0x45, 0x04, 0x00 }, /* 0x52 ぐ */ + { 0x3f, 0x00, 0x04, 0x44, 0x3f, 0x04, 0x04, 0x00 }, /* 0x53 け */ + { 0x3f, 0x00, 0x04, 0x44, 0x3f, 0x04, 0x05, 0x00 }, /* 0x54 げ */ + { 0x00, 0x20, 0x52, 0x42, 0x42, 0x42, 0x40, 0x00 }, /* 0x55 こ */ + { 0x00, 0x20, 0x52, 0x42, 0x43, 0x42, 0x41, 0x00 }, /* 0x56 ご */ + { 0x00, 0x24, 0x54, 0x44, 0x47, 0x5c, 0x04, 0x00 }, /* 0x57 さ */ + { 0x00, 0x24, 0x54, 0x44, 0x47, 0x5c, 0x05, 0x00 }, /* 0x58 ざ */ + { 0x00, 0x00, 0x3f, 0x40, 0x40, 0x40, 0x20, 0x00 }, /* 0x59 し */ + { 0x00, 0x00, 0x3f, 0x40, 0x41, 0x40, 0x21, 0x00 }, /* 0x5A じ */ + { 0x02, 0x02, 0x0a, 0x56, 0x3f, 0x02, 0x02, 0x00 }, /* 0x5B す */ + { 0x02, 0x02, 0x0a, 0x56, 0x3f, 0x02, 0x03, 0x00 }, /* 0x5C ず */ + { 0x04, 0x04, 0x3f, 0x44, 0x54, 0x5f, 0x44, 0x00 }, /* 0x5D せ */ + { 0x04, 0x04, 0x3f, 0x44, 0x54, 0x5f, 0x45, 0x00 }, /* 0x5E ぜ */ + { 0x00, 0x08, 0x09, 0x3d, 0x4b, 0x49, 0x08, 0x00 }, /* 0x5F そ */ + { 0x00, 0x08, 0x09, 0x3d, 0x4b, 0x49, 0x0a, 0x00 }, /* 0x60 ぞ */ + { 0x42, 0x3a, 0x07, 0x22, 0x54, 0x44, 0x44, 0x00 }, /* 0x61 た */ + { 0x42, 0x3a, 0x07, 0x22, 0x55, 0x44, 0x45, 0x00 }, /* 0x62 だ */ + { 0x00, 0x02, 0x12, 0x4e, 0x4b, 0x4a, 0x32, 0x00 }, /* 0x63 ち */ + { 0x00, 0x02, 0x12, 0x4e, 0x4b, 0x4a, 0x33, 0x00 }, /* 0x64 ぢ */ + { 0x00, 0x10, 0x10, 0x48, 0x48, 0x30, 0x00, 0x00 }, /* 0x65 っ */ + { 0x04, 0x04, 0x02, 0x22, 0x22, 0x22, 0x1c, 0x00 }, /* 0x66 つ */ + { 0x04, 0x04, 0x02, 0x22, 0x23, 0x22, 0x1d, 0x00 }, /* 0x67 づ */ + { 0x00, 0x02, 0x02, 0x1a, 0x25, 0x43, 0x41, 0x00 }, /* 0x68 て */ + { 0x00, 0x02, 0x02, 0x1a, 0x25, 0x43, 0x45, 0x00 }, /* 0x69 で */ + { 0x00, 0x20, 0x57, 0x48, 0x48, 0x44, 0x44, 0x00 }, /* 0x6A と */ + { 0x00, 0x20, 0x57, 0x48, 0x49, 0x44, 0x45, 0x00 }, /* 0x6B ど */ + { 0x12, 0x0a, 0x27, 0x52, 0x50, 0x3a, 0x24, 0x00 }, /* 0x6C な */ + { 0x7f, 0x00, 0x20, 0x52, 0x42, 0x42, 0x40, 0x00 }, /* 0x6D に */ + { 0x30, 0x4e, 0x38, 0x54, 0x0f, 0x64, 0x78, 0x00 }, /* 0x6E ぬ */ + { 0x24, 0x14, 0x7f, 0x04, 0x22, 0x52, 0x3c, 0x00 }, /* 0x6F ね */ + { 0x18, 0x24, 0x12, 0x4e, 0x42, 0x24, 0x18, 0x00 }, /* 0x70 の */ + { 0x7f, 0x00, 0x24, 0x54, 0x54, 0x3f, 0x44, 0x00 }, /* 0x71 は */ + { 0x7f, 0x00, 0x24, 0x54, 0x54, 0x3f, 0x45, 0x00 }, /* 0x72 ば */ + { 0x7f, 0x00, 0x24, 0x54, 0x56, 0x3d, 0x46, 0x00 }, /* 0x73 ぱ */ + { 0x02, 0x3a, 0x47, 0x40, 0x41, 0x3e, 0x04, 0x00 }, /* 0x74 ひ */ + { 0x02, 0x3a, 0x47, 0x40, 0x41, 0x3e, 0x05, 0x00 }, /* 0x75 び */ + { 0x02, 0x3a, 0x47, 0x40, 0x43, 0x3d, 0x06, 0x00 }, /* 0x76 ぴ */ + { 0x40, 0x30, 0x40, 0x4d, 0x32, 0x10, 0x60, 0x00 }, /* 0x77 ふ */ + { 0x40, 0x30, 0x40, 0x4d, 0x32, 0x11, 0x61, 0x00 }, /* 0x78 ぶ */ + { 0x40, 0x30, 0x40, 0x4d, 0x32, 0x15, 0x62, 0x00 }, /* 0x79 ぷ */ + { 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x00 }, /* 0x7A へ */ + { 0x08, 0x04, 0x02, 0x04, 0x09, 0x10, 0x11, 0x00 }, /* 0x7B べ */ + { 0x08, 0x04, 0x02, 0x04, 0x0a, 0x15, 0x12, 0x00 }, /* 0x7C ぺ */ + { 0x7f, 0x00, 0x6a, 0x6a, 0x7e, 0x2a, 0x4a, 0x00 }, /* 0x7D ほ */ + { 0x7f, 0x00, 0x6a, 0x6a, 0x7f, 0x2a, 0x4b, 0x00 }, /* 0x7E ぼ */ + { 0x7f, 0x00, 0x6a, 0x6a, 0x7e, 0x2d, 0x4a, 0x00 }, /* 0x7F ぽ */ + { 0x00, 0x6a, 0x6a, 0x6a, 0x7f, 0x2a, 0x4a, 0x00 }, /* 0x80 ま */ + { 0x30, 0x29, 0x1d, 0x4b, 0x48, 0x3c, 0x10, 0x00 }, /* 0x81 み */ + { 0x12, 0x2a, 0x7f, 0x42, 0x40, 0x42, 0x24, 0x00 }, /* 0x82 む */ + { 0x30, 0x4e, 0x38, 0x54, 0x0f, 0x44, 0x38, 0x00 }, /* 0x83 め */ + { 0x00, 0x0a, 0x3e, 0x4b, 0x4a, 0x4a, 0x30, 0x00 }, /* 0x84 も */ + { 0x00, 0x08, 0x0e, 0x38, 0x46, 0x14, 0x08, 0x00 }, /* 0x85 ゃ */ + { 0x04, 0x07, 0x1c, 0x62, 0x03, 0x0a, 0x04, 0x00 }, /* 0x86 や */ + { 0x00, 0x1c, 0x48, 0x3e, 0x24, 0x18, 0x00, 0x00 }, /* 0x87 ゅ */ + { 0x1e, 0x04, 0x52, 0x3f, 0x12, 0x12, 0x0c, 0x00 }, /* 0x88 ゆ */ + { 0x00, 0x20, 0x50, 0x50, 0x3e, 0x48, 0x00, 0x00 }, /* 0x89 ょ */ + { 0x00, 0x20, 0x50, 0x50, 0x3f, 0x24, 0x44, 0x00 }, /* 0x8A よ */ + { 0x00, 0x1c, 0x51, 0x49, 0x4a, 0x48, 0x30, 0x00 }, /* 0x8B ら */ + { 0x00, 0x0f, 0x42, 0x41, 0x21, 0x1e, 0x00, 0x00 }, /* 0x8C り */ + { 0x00, 0x10, 0x69, 0x6d, 0x4b, 0x49, 0x30, 0x00 }, /* 0x8D る */ + { 0x24, 0x14, 0x7f, 0x04, 0x02, 0x3e, 0x40, 0x00 }, /* 0x8E れ */ + { 0x00, 0x10, 0x49, 0x4d, 0x4b, 0x49, 0x30, 0x00 }, /* 0x8F ろ */ + { 0x00, 0x28, 0x18, 0x7e, 0x08, 0x44, 0x38, 0x00 }, /* 0x90 ゎ */ + { 0x24, 0x14, 0x7f, 0x04, 0x42, 0x42, 0x3c, 0x00 }, /* 0x91 わ */ + { 0x30, 0x49, 0x25, 0x1f, 0x24, 0x54, 0x38, 0x00 }, /* 0x92 ゐ */ + { 0x40, 0x28, 0x25, 0x57, 0x35, 0x28, 0x40, 0x00 }, /* 0x93 ゑ */ + { 0x10, 0x0a, 0x2e, 0x5b, 0x72, 0x4a, 0x48, 0x00 }, /* 0x94 を */ + { 0x40, 0x30, 0x0c, 0x33, 0x40, 0x40, 0x20, 0x00 }, /* 0x95 ん */ + { 0x00, 0x04, 0x44, 0x3c, 0x14, 0x0c, 0x00, 0x00 }, /* 0x96 ァ */ + { 0x00, 0x01, 0x41, 0x3d, 0x09, 0x05, 0x03, 0x00 }, /* 0x97 ア */ + { 0x00, 0x20, 0x20, 0x10, 0x78, 0x04, 0x00, 0x00 }, /* 0x98 ィ */ + { 0x00, 0x10, 0x10, 0x08, 0x7c, 0x02, 0x01, 0x00 }, /* 0x99 イ */ + { 0x00, 0x18, 0x48, 0x4c, 0x28, 0x18, 0x00, 0x00 }, /* 0x9A ゥ */ + { 0x00, 0x06, 0x42, 0x43, 0x22, 0x12, 0x0e, 0x00 }, /* 0x9B ウ */ + { 0x00, 0x40, 0x48, 0x78, 0x48, 0x40, 0x00, 0x00 }, /* 0x9C ェ */ + { 0x20, 0x22, 0x22, 0x3e, 0x22, 0x22, 0x20, 0x00 }, /* 0x9D エ */ + { 0x00, 0x28, 0x28, 0x58, 0x7c, 0x08, 0x00, 0x00 }, /* 0x9E ォ */ + { 0x22, 0x22, 0x12, 0x4a, 0x7f, 0x02, 0x02, 0x00 }, /* 0x9F オ */ + { 0x00, 0x42, 0x22, 0x1f, 0x02, 0x42, 0x7e, 0x00 }, /* 0xA0 カ */ + { 0x00, 0x42, 0x22, 0x1f, 0x02, 0x42, 0x7f, 0x00 }, /* 0xA1 ガ */ + { 0x00, 0x12, 0x12, 0x1f, 0x72, 0x12, 0x10, 0x00 }, /* 0xA2 キ */ + { 0x00, 0x12, 0x12, 0x1f, 0x72, 0x13, 0x10, 0x00 }, /* 0xA3 ギ */ + { 0x00, 0x08, 0x44, 0x43, 0x22, 0x12, 0x0e, 0x00 }, /* 0xA4 ク */ + { 0x00, 0x08, 0x44, 0x43, 0x22, 0x12, 0x0f, 0x00 }, /* 0xA5 グ */ + { 0x08, 0x07, 0x42, 0x22, 0x1e, 0x02, 0x02, 0x00 }, /* 0xA6 ケ */ + { 0x08, 0x07, 0x42, 0x22, 0x1f, 0x02, 0x03, 0x00 }, /* 0xA7 ゲ */ + { 0x00, 0x42, 0x42, 0x42, 0x42, 0x42, 0x7e, 0x00 }, /* 0xA8 コ */ + { 0x00, 0x42, 0x42, 0x42, 0x43, 0x42, 0x7f, 0x00 }, /* 0xA9 ゴ */ + { 0x02, 0x02, 0x4f, 0x42, 0x22, 0x1f, 0x02, 0x00 }, /* 0xAA サ */ + { 0x02, 0x02, 0x4f, 0x42, 0x23, 0x1e, 0x03, 0x00 }, /* 0xAB ザ */ + { 0x00, 0x45, 0x4a, 0x40, 0x20, 0x10, 0x0c, 0x00 }, /* 0xAC シ */ + { 0x00, 0x45, 0x4a, 0x40, 0x21, 0x10, 0x0d, 0x00 }, /* 0xAD ジ */ + { 0x40, 0x42, 0x22, 0x22, 0x1a, 0x26, 0x40, 0x00 }, /* 0xAE ス */ + { 0x40, 0x42, 0x22, 0x22, 0x1b, 0x26, 0x41, 0x00 }, /* 0xAF ズ */ + { 0x04, 0x04, 0x3f, 0x44, 0x44, 0x54, 0x4c, 0x00 }, /* 0xB0 セ */ + { 0x04, 0x04, 0x3f, 0x44, 0x45, 0x54, 0x4d, 0x00 }, /* 0xB1 ゼ */ + { 0x00, 0x01, 0x46, 0x40, 0x20, 0x10, 0x0f, 0x00 }, /* 0xB2 ソ */ + { 0x00, 0x01, 0x46, 0x40, 0x20, 0x11, 0x0f, 0x00 }, /* 0xB3 ゾ */ + { 0x00, 0x08, 0x44, 0x4b, 0x2a, 0x12, 0x0e, 0x00 }, /* 0xB4 タ */ + { 0x00, 0x08, 0x44, 0x4b, 0x2a, 0x12, 0x0f, 0x00 }, /* 0xB5 ダ */ + { 0x08, 0x0a, 0x4a, 0x3e, 0x09, 0x09, 0x08, 0x00 }, /* 0xB6 チ */ + { 0x08, 0x0a, 0x4a, 0x3e, 0x09, 0x08, 0x09, 0x00 }, /* 0xB7 ヂ */ + { 0x00, 0x18, 0x40, 0x58, 0x20, 0x18, 0x00, 0x00 }, /* 0xB8 ッ */ + { 0x02, 0x0c, 0x42, 0x4c, 0x20, 0x10, 0x0e, 0x00 }, /* 0xB9 ツ */ + { 0x02, 0x0c, 0x42, 0x4c, 0x21, 0x10, 0x0d, 0x00 }, /* 0xBA ヅ */ + { 0x04, 0x05, 0x45, 0x3d, 0x05, 0x05, 0x04, 0x00 }, /* 0xBB テ */ + { 0x04, 0x05, 0x45, 0x3d, 0x05, 0x04, 0x05, 0x00 }, /* 0xBC デ */ + { 0x00, 0x00, 0x7f, 0x08, 0x08, 0x10, 0x00, 0x00 }, /* 0xBD ト */ + { 0x00, 0x00, 0x7f, 0x08, 0x09, 0x10, 0x01, 0x00 }, /* 0xBE ド */ + { 0x04, 0x44, 0x24, 0x1f, 0x04, 0x04, 0x04, 0x00 }, /* 0xBF ナ */ + { 0x20, 0x22, 0x22, 0x22, 0x22, 0x22, 0x20, 0x00 }, /* 0xC0 ニ */ + { 0x40, 0x41, 0x25, 0x15, 0x19, 0x27, 0x00, 0x00 }, /* 0xC1 ヌ */ + { 0x20, 0x22, 0x12, 0x7b, 0x06, 0x12, 0x20, 0x00 }, /* 0xC2 ネ */ + { 0x40, 0x40, 0x20, 0x10, 0x08, 0x07, 0x00, 0x00 }, /* 0xC3 ノ */ + { 0x40, 0x30, 0x0e, 0x00, 0x02, 0x0c, 0x70, 0x00 }, /* 0xC4 ハ */ + { 0x40, 0x30, 0x0e, 0x00, 0x02, 0x0d, 0x71, 0x00 }, /* 0xC5 バ */ + { 0x40, 0x30, 0x0e, 0x00, 0x02, 0x0d, 0x72, 0x00 }, /* 0xC6 パ */ + { 0x00, 0x3f, 0x48, 0x48, 0x48, 0x44, 0x44, 0x00 }, /* 0xC7 ヒ */ + { 0x00, 0x3f, 0x48, 0x48, 0x49, 0x44, 0x45, 0x00 }, /* 0xC8 ビ */ + { 0x00, 0x3f, 0x48, 0x48, 0x4a, 0x45, 0x46, 0x00 }, /* 0xC9 ピ */ + { 0x00, 0x02, 0x42, 0x42, 0x22, 0x12, 0x0e, 0x00 }, /* 0xCA フ */ + { 0x00, 0x02, 0x42, 0x42, 0x23, 0x12, 0x0f, 0x00 }, /* 0xCB ブ */ + { 0x00, 0x02, 0x42, 0x42, 0x22, 0x15, 0x0e, 0x00 }, /* 0xCC プ */ + { 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x20, 0x00 }, /* 0xCD ヘ */ + { 0x08, 0x04, 0x02, 0x04, 0x09, 0x10, 0x21, 0x00 }, /* 0xCE ベ */ + { 0x08, 0x04, 0x02, 0x04, 0x0a, 0x15, 0x22, 0x00 }, /* 0xCF ペ */ + { 0x24, 0x14, 0x44, 0x7f, 0x04, 0x14, 0x24, 0x00 }, /* 0xD0 ホ */ + { 0x24, 0x14, 0x44, 0x7f, 0x05, 0x14, 0x25, 0x00 }, /* 0xD1 ボ */ + { 0x24, 0x14, 0x44, 0x7f, 0x06, 0x15, 0x22, 0x00 }, /* 0xD2 ポ */ + { 0x02, 0x02, 0x12, 0x22, 0x52, 0x0a, 0x06, 0x00 }, /* 0xD3 マ */ + { 0x00, 0x21, 0x25, 0x29, 0x4a, 0x42, 0x00, 0x00 }, /* 0xD4 ミ */ + { 0x40, 0x70, 0x4c, 0x43, 0x50, 0x20, 0x40, 0x00 }, /* 0xD5 ム */ + { 0x40, 0x44, 0x24, 0x14, 0x08, 0x37, 0x00, 0x00 }, /* 0xD6 メ */ + { 0x00, 0x08, 0x09, 0x3f, 0x49, 0x49, 0x48, 0x00 }, /* 0xD7 モ */ + { 0x00, 0x10, 0x1c, 0x68, 0x08, 0x18, 0x00, 0x00 }, /* 0xD8 ャ */ + { 0x04, 0x04, 0x0f, 0x74, 0x02, 0x0a, 0x06, 0x00 }, /* 0xD9 ヤ */ + { 0x00, 0x40, 0x48, 0x48, 0x78, 0x40, 0x00, 0x00 }, /* 0xDA ュ */ + { 0x20, 0x22, 0x22, 0x22, 0x3e, 0x20, 0x20, 0x00 }, /* 0xDB ユ */ + { 0x00, 0x00, 0x44, 0x54, 0x54, 0x7c, 0x00, 0x00 }, /* 0xDC ョ */ + { 0x00, 0x42, 0x4a, 0x4a, 0x4a, 0x4a, 0x7e, 0x00 }, /* 0xDD ヨ */ + { 0x00, 0x04, 0x45, 0x45, 0x25, 0x15, 0x0c, 0x00 }, /* 0xDE ラ */ + { 0x00, 0x0f, 0x40, 0x40, 0x20, 0x1f, 0x00, 0x00 }, /* 0xDF リ */ + { 0x40, 0x20, 0x1e, 0x00, 0x7f, 0x20, 0x10, 0x00 }, /* 0xE0 ル */ + { 0x00, 0x00, 0x7f, 0x40, 0x20, 0x10, 0x08, 0x00 }, /* 0xE1 レ */ + { 0x00, 0x7e, 0x42, 0x42, 0x42, 0x42, 0x7e, 0x00 }, /* 0xE2 ロ */ + { 0x00, 0x0c, 0x44, 0x44, 0x24, 0x1c, 0x00, 0x00 }, /* 0xE3 ヮ */ + { 0x00, 0x06, 0x42, 0x42, 0x22, 0x12, 0x0e, 0x00 }, /* 0xE4 ワ */ + { 0x10, 0x12, 0x1e, 0x12, 0x12, 0x7f, 0x12, 0x00 }, /* 0xE5 ヰ */ + { 0x20, 0x22, 0x22, 0x3a, 0x26, 0x22, 0x20, 0x00 }, /* 0xE6 ヱ */ + { 0x00, 0x01, 0x45, 0x45, 0x25, 0x15, 0x0f, 0x00 }, /* 0xE7 ヲ */ + { 0x00, 0x41, 0x42, 0x40, 0x20, 0x10, 0x0c, 0x00 }, /* 0xE8 ン */ + { 0x00, 0x06, 0x42, 0x43, 0x22, 0x12, 0x0f, 0x00 }, /* 0xE9 ヴ */ + { 0x00, 0x48, 0x28, 0x1c, 0x48, 0x78, 0x00, 0x00 }, /* 0xEA ヵ */ + { 0x00, 0x10, 0x0c, 0x48, 0x38, 0x08, 0x00, 0x00 }, /* 0xEB ヶ */ + { 0x08, 0x04, 0x04, 0x08, 0x10, 0x10, 0x08, 0x00 }, /* 0xEC 〜 */ + { 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00 }, /* 0xED … */ + { 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00 }, /* 0xEE ー */ + { 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08 }, /* 0xEF ― */ +}; + +#define MISAKI_FONT_F1_H +PROGMEM const uint8_t misaki_font_f1[ MISAKI_FONT_F1_SIZE + 1 ][ MISAKI_FONT_F1_W ] = +{ + { 0x00, 0x00, 0x00 }, /* 0x00 */ + { 0x00, 0x2f, 0x00 }, /* 0x01 ! */ + { 0x03, 0x00, 0x03 }, /* 0x02 " */ + { 0x3f, 0x12, 0x3f }, /* 0x03 # */ + { 0x16, 0x3f, 0x1a }, /* 0x04 $ */ + { 0x12, 0x08, 0x24 }, /* 0x05 % */ + { 0x32, 0x3d, 0x2a }, /* 0x06 & */ + { 0x02, 0x01, 0x00 }, /* 0x07 ' */ + { 0x00, 0x3e, 0x41 }, /* 0x08 ( */ + { 0x41, 0x3e, 0x00 }, /* 0x09 ) */ + { 0x0a, 0x07, 0x0a }, /* 0x0A * */ + { 0x08, 0x3e, 0x08 }, /* 0x0B + */ + { 0x40, 0x20, 0x00 }, /* 0x0C , */ + { 0x08, 0x08, 0x08 }, /* 0x0D - */ + { 0x00, 0x20, 0x00 }, /* 0x0E . */ + { 0x10, 0x08, 0x04 }, /* 0x0F / */ + { 0x1c, 0x2a, 0x1c }, /* 0x10 0 */ + { 0x24, 0x3e, 0x20 }, /* 0x11 1 */ + { 0x32, 0x2a, 0x24 }, /* 0x12 2 */ + { 0x22, 0x2a, 0x14 }, /* 0x13 3 */ + { 0x18, 0x14, 0x3e }, /* 0x14 4 */ + { 0x2e, 0x2a, 0x12 }, /* 0x15 5 */ + { 0x1c, 0x2a, 0x12 }, /* 0x16 6 */ + { 0x02, 0x3a, 0x06 }, /* 0x17 7 */ + { 0x14, 0x2a, 0x14 }, /* 0x18 8 */ + { 0x24, 0x2a, 0x1c }, /* 0x19 9 */ + { 0x00, 0x24, 0x00 }, /* 0x1A : */ + { 0x40, 0x24, 0x00 }, /* 0x1B ; */ + { 0x08, 0x14, 0x22 }, /* 0x1C < */ + { 0x14, 0x14, 0x14 }, /* 0x1D = */ + { 0x22, 0x14, 0x08 }, /* 0x1E > */ + { 0x02, 0x29, 0x06 }, /* 0x1F ? */ + { 0x12, 0x29, 0x1e }, /* 0x20 @ */ + { 0x3e, 0x09, 0x3e }, /* 0x21 A */ + { 0x3f, 0x25, 0x1a }, /* 0x22 B */ + { 0x1e, 0x21, 0x21 }, /* 0x23 C */ + { 0x3f, 0x21, 0x1e }, /* 0x24 D */ + { 0x3f, 0x25, 0x21 }, /* 0x25 E */ + { 0x3f, 0x05, 0x01 }, /* 0x26 F */ + { 0x1e, 0x21, 0x39 }, /* 0x27 G */ + { 0x3f, 0x08, 0x3f }, /* 0x28 H */ + { 0x21, 0x3f, 0x21 }, /* 0x29 I */ + { 0x10, 0x20, 0x1f }, /* 0x2A J */ + { 0x3f, 0x04, 0x3b }, /* 0x2B K */ + { 0x3f, 0x20, 0x20 }, /* 0x2C L */ + { 0x3f, 0x06, 0x3f }, /* 0x2D M */ + { 0x3f, 0x01, 0x3e }, /* 0x2E N */ + { 0x1e, 0x21, 0x1e }, /* 0x2F O */ + { 0x3f, 0x09, 0x06 }, /* 0x30 P */ + { 0x1e, 0x21, 0x5e }, /* 0x31 Q */ + { 0x3f, 0x09, 0x36 }, /* 0x32 R */ + { 0x22, 0x25, 0x19 }, /* 0x33 S */ + { 0x01, 0x3f, 0x01 }, /* 0x34 T */ + { 0x3f, 0x20, 0x3f }, /* 0x35 U */ + { 0x3f, 0x10, 0x0f }, /* 0x36 V */ + { 0x3f, 0x18, 0x3f }, /* 0x37 W */ + { 0x33, 0x0c, 0x33 }, /* 0x38 X */ + { 0x03, 0x3c, 0x03 }, /* 0x39 Y */ + { 0x31, 0x2d, 0x23 }, /* 0x3A Z */ + { 0x00, 0x7f, 0x41 }, /* 0x3B [ */ + { 0x15, 0x3e, 0x15 }, /* 0x3C \ */ + { 0x41, 0x7f, 0x00 }, /* 0x3D ] */ + { 0x02, 0x01, 0x02 }, /* 0x3E ^ */ + { 0x40, 0x40, 0x40 }, /* 0x3F _ */ + { 0x00, 0x01, 0x02 }, /* 0x40 ` */ + { 0x18, 0x24, 0x3c }, /* 0x41 a */ + { 0x3f, 0x24, 0x18 }, /* 0x42 b */ + { 0x18, 0x24, 0x24 }, /* 0x43 c */ + { 0x18, 0x24, 0x3f }, /* 0x44 d */ + { 0x18, 0x2c, 0x2c }, /* 0x45 e */ + { 0x04, 0x3f, 0x05 }, /* 0x46 f */ + { 0x48, 0x54, 0x3c }, /* 0x47 g */ + { 0x3f, 0x04, 0x38 }, /* 0x48 h */ + { 0x00, 0x3d, 0x00 }, /* 0x49 i */ + { 0x40, 0x3d, 0x00 }, /* 0x4A j */ + { 0x3f, 0x08, 0x34 }, /* 0x4B k */ + { 0x01, 0x3f, 0x00 }, /* 0x4C l */ + { 0x3c, 0x1c, 0x38 }, /* 0x4D m */ + { 0x3c, 0x04, 0x38 }, /* 0x4E n */ + { 0x18, 0x24, 0x18 }, /* 0x4F o */ + { 0x7c, 0x24, 0x18 }, /* 0x50 p */ + { 0x18, 0x24, 0x7c }, /* 0x51 q */ + { 0x3c, 0x08, 0x04 }, /* 0x52 r */ + { 0x28, 0x3c, 0x14 }, /* 0x53 s */ + { 0x04, 0x3e, 0x24 }, /* 0x54 t */ + { 0x3c, 0x20, 0x3c }, /* 0x55 u */ + { 0x3c, 0x10, 0x0c }, /* 0x56 v */ + { 0x3c, 0x30, 0x3c }, /* 0x57 w */ + { 0x24, 0x18, 0x24 }, /* 0x58 x */ + { 0x4c, 0x50, 0x3c }, /* 0x59 y */ + { 0x24, 0x34, 0x2c }, /* 0x5A z */ + { 0x08, 0x36, 0x41 }, /* 0x5B { */ + { 0x00, 0x7f, 0x00 }, /* 0x5C | */ + { 0x41, 0x36, 0x08 }, /* 0x5D } */ + { 0x01, 0x01, 0x01 }, /* 0x5E ~ */ + { 0x10, 0x28, 0x10 }, /* 0x5F 。 */ + { 0x1f, 0x01, 0x01 }, /* 0x60 「 */ + { 0x20, 0x20, 0x3e }, /* 0x61 」 */ + { 0x10, 0x20, 0x00 }, /* 0x62 、 */ + { 0x00, 0x08, 0x00 }, /* 0x63 ・ */ + { 0x25, 0x15, 0x0f }, /* 0x64 ヲ */ + { 0x24, 0x1c, 0x0c }, /* 0x65 ァ */ + { 0x10, 0x38, 0x04 }, /* 0x66 ィ */ + { 0x18, 0x0c, 0x38 }, /* 0x67 ゥ */ + { 0x28, 0x38, 0x28 }, /* 0x68 ェ */ + { 0x28, 0x18, 0x3c }, /* 0x69 ォ */ + { 0x08, 0x3c, 0x18 }, /* 0x6A ャ */ + { 0x28, 0x38, 0x20 }, /* 0x6B ュ */ + { 0x24, 0x2c, 0x3c }, /* 0x6C ョ */ + { 0x2c, 0x2c, 0x1c }, /* 0x6D ッ */ + { 0x04, 0x08, 0x08 }, /* 0x6E ー */ + { 0x21, 0x1d, 0x07 }, /* 0x6F ア */ + { 0x08, 0x3c, 0x03 }, /* 0x70 イ */ + { 0x06, 0x23, 0x1e }, /* 0x71 ウ */ + { 0x22, 0x3e, 0x22 }, /* 0x72 エ */ + { 0x12, 0x0a, 0x3f }, /* 0x73 オ */ + { 0x32, 0x0f, 0x3e }, /* 0x74 カ */ + { 0x0a, 0x3f, 0x0a }, /* 0x75 キ */ + { 0x24, 0x13, 0x0e }, /* 0x76 ク */ + { 0x27, 0x1e, 0x02 }, /* 0x77 ケ */ + { 0x22, 0x22, 0x3e }, /* 0x78 コ */ + { 0x27, 0x12, 0x0f }, /* 0x79 サ */ + { 0x25, 0x25, 0x10 }, /* 0x7A シ */ + { 0x21, 0x19, 0x27 }, /* 0x7B ス */ + { 0x3f, 0x22, 0x2e }, /* 0x7C セ */ + { 0x21, 0x16, 0x0f }, /* 0x7D ソ */ + { 0x24, 0x1b, 0x0e }, /* 0x7E タ */ + { 0x25, 0x1f, 0x05 }, /* 0x7F チ */ + { 0x26, 0x26, 0x1e }, /* 0x80 ツ */ + { 0x25, 0x1d, 0x05 }, /* 0x81 テ */ + { 0x3f, 0x04, 0x08 }, /* 0x82 ト */ + { 0x24, 0x1f, 0x04 }, /* 0x83 ナ */ + { 0x20, 0x22, 0x22 }, /* 0x84 ニ */ + { 0x25, 0x19, 0x27 }, /* 0x85 ヌ */ + { 0x12, 0x3b, 0x16 }, /* 0x86 ネ */ + { 0x20, 0x10, 0x0f }, /* 0x87 ノ */ + { 0x3c, 0x01, 0x3e }, /* 0x88 ハ */ + { 0x1f, 0x24, 0x24 }, /* 0x89 ヒ */ + { 0x21, 0x11, 0x0f }, /* 0x8A フ */ + { 0x0c, 0x03, 0x1c }, /* 0x8B ヘ */ + { 0x1a, 0x3f, 0x1a }, /* 0x8C ホ */ + { 0x09, 0x19, 0x27 }, /* 0x8D マ */ + { 0x22, 0x2a, 0x2a }, /* 0x8E ミ */ + { 0x38, 0x27, 0x30 }, /* 0x8F ム */ + { 0x32, 0x0c, 0x13 }, /* 0x90 メ */ + { 0x05, 0x3f, 0x25 }, /* 0x91 モ */ + { 0x02, 0x3f, 0x0e }, /* 0x92 ヤ */ + { 0x21, 0x3f, 0x20 }, /* 0x93 ユ */ + { 0x25, 0x25, 0x3f }, /* 0x94 ヨ */ + { 0x25, 0x25, 0x1d }, /* 0x95 ラ */ + { 0x07, 0x20, 0x1f }, /* 0x96 リ */ + { 0x3c, 0x3f, 0x20 }, /* 0x97 ル */ + { 0x3f, 0x20, 0x10 }, /* 0x98 レ */ + { 0x3e, 0x22, 0x3e }, /* 0x99 ロ */ + { 0x23, 0x11, 0x0f }, /* 0x9A ワ */ + { 0x21, 0x21, 0x18 }, /* 0x9B ン */ + { 0x01, 0x00, 0x01 }, /* 0x9C ゙ */ + { 0x02, 0x05, 0x02 }, /* 0x9D ゚ */ +}; +#define MISAKI_FONT_F2_H +PROGMEM const uint8_t misaki_font_f2[ MISAKI_FONT_F2_SIZE + 1 ][ MISAKI_FONT_F2_W ] = +{ + { 0x75, 0x40, 0x77, 0x55, 0x75, 0x77, 0x40 }, /* 0x00 温 */ + { 0x40, 0x3e, 0x4a, 0x5e, 0x2b, 0x5e, 0x4a }, /* 0x01 度 */ + { 0x6b, 0x62, 0x7f, 0x35, 0x2f, 0x35, 0x7f }, /* 0x02 調 */ + { 0x7c, 0x5b, 0x5e, 0x24, 0x7b, 0x0e, 0x3a }, /* 0x03 節 */ + { 0x04, 0x7e, 0x01, 0x7e, 0x4a, 0x5e, 0x69 }, /* 0x04 低 */ + { 0x06, 0x3a, 0x2f, 0x3f, 0x6b, 0x7e, 0x46 }, /* 0x05 電 */ + { 0x40, 0x3f, 0x41, 0x49, 0x7f, 0x49, 0x41 }, /* 0x06 圧 */ + { 0x02, 0x62, 0x6b, 0x6b, 0x6b, 0x62, 0x02 }, /* 0x07 言 */ + { 0x6a, 0x6b, 0x14, 0x7d, 0x57, 0x7d, 0x10 }, /* 0x08 語 */ + { 0x41, 0x3f, 0x55, 0x55, 0x3d, 0x57, 0x51 }, /* 0x09 戻 */ + { 0x21, 0x3f, 0x2d, 0x7f, 0x2a, 0x12, 0x2e }, /* 0x0A 取 */ + { 0x0a, 0x77, 0x5a, 0x50, 0x5a, 0x77, 0x0a }, /* 0x0B 替 */ + { 0x20, 0x24, 0x13, 0x7d, 0x55, 0x53, 0x70 }, /* 0x0C 名 */ + { 0x7a, 0x2a, 0x7b, 0x02, 0x1a, 0x43, 0x7a }, /* 0x0D 前 */ + { 0x4a, 0x52, 0x5e, 0x2b, 0x5e, 0x42, 0x4a }, /* 0x0E 変 */ + { 0x41, 0x5f, 0x35, 0x3f, 0x55, 0x5f, 0x41 }, /* 0x0F 更 */ + { 0x7d, 0x14, 0x57, 0x7d, 0x0e, 0x40, 0x7f }, /* 0x10 削 */ + { 0x7f, 0x1b, 0x54, 0x16, 0x7d, 0x16, 0x54 }, /* 0x11 除 */ + { 0x49, 0x3a, 0x40, 0x7e, 0x57, 0x56, 0x76 }, /* 0x12 追 */ + { 0x42, 0x3f, 0x42, 0x7e, 0x7e, 0x42, 0x7e }, /* 0x13 加 */ + { 0x04, 0x7e, 0x51, 0x37, 0x7d, 0x37, 0x50 }, /* 0x14 保 */ + { 0x12, 0x7a, 0x17, 0x52, 0x76, 0x1e, 0x12 }, /* 0x15 存 */ + { 0x7f, 0x55, 0x7f, 0x14, 0x5d, 0x7f, 0x55 }, /* 0x16 睡 */ + { 0x7f, 0x55, 0x7f, 0x7f, 0x55, 0x3d, 0x57 }, /* 0x17 眠 */ + { 0x7f, 0x55, 0x37, 0x78, 0x17, 0x45, 0x7f }, /* 0x18 閉 */ + { 0x7f, 0x2b, 0x7b, 0x28, 0x7b, 0x2b, 0x7f }, /* 0x19 開 */ + { 0x1e, 0x12, 0x12, 0x7f, 0x12, 0x12, 0x1e }, /* 0x1A 中 */ + { 0x7f, 0x41, 0x6b, 0x7f, 0x6b, 0x51, 0x7f }, /* 0x1B 国 */ + { 0x52, 0x5a, 0x57, 0x3a, 0x57, 0x5a, 0x52 }, /* 0x1C 英 */ + { 0x00, 0x7f, 0x49, 0x49, 0x49, 0x49, 0x7f }, /* 0x1D 日 */ + { 0x22, 0x12, 0x2a, 0x7f, 0x2a, 0x12, 0x22 }, /* 0x1E 本 */ +}; +/* + プリセット + 温度調節 + タイマー + コントロール + スクリーン + ブザー + 低電圧アラーム + 言語 + 戻る + 取り替える + キャリブレーション + 名前を変更 + 削除 + 追加 + 保存 + デフォルト + 睡眠 + ブースト + 保存 + 睡眠 + 閉じる + ブースト + 保存 + ダイレクト + PID + ビッグ + ニュース + 閉じる + 開く + いいえ、 + はい、 + 中国語 + 英語 + いいえ、 + はい、 + メインスクリーン + フリップ + 保存 + アバウト + 日本語 + + 汉字转换表:温度調節低電圧言語戻取替名前変更削除追加保存睡眠閉開中国英日本 +*/ +const char JP_0[] PROGMEM = { 0xf0, 0xcc, 0xdf, 0xb0, 0xb8, 0xbd, }; +const char JP_1[] PROGMEM = { 0xf2, 0x00, 0x01, 0x02, 0x03, }; +const char JP_2[] PROGMEM = { 0xf0, 0xb4, 0x99, 0xd3, 0xee, }; +const char JP_3[] PROGMEM = { 0xf0, 0xa8, 0xe8, 0xbd, 0xe2, 0xee, 0xe0, }; +const char JP_4[] PROGMEM = { 0xf0, 0xae, 0xa4, 0xdf, 0xee, 0xe8, }; +const char JP_5[] PROGMEM = { 0xf0, 0xcb, 0xab, 0xee, }; +const char JP_6[] PROGMEM = { 0xf2, 0x04, 0x05, 0x06, 0xf0, 0x97, 0xde, 0xee, 0xd5, }; +const char JP_7[] PROGMEM = { 0xf2, 0x07, 0x08, }; +const char JP_8[] PROGMEM = { 0xf2, 0x09, 0xf0, 0x8d, }; +const char JP_9[] PROGMEM = { 0xf2, 0x0a, 0xf0, 0x8c, 0xf2, 0x0b, 0xf0, 0x4a, 0x8d, }; +const char JP_10[] PROGMEM = { 0xf0, 0xa2, 0xd8, 0xdf, 0xcb, 0xe1, 0xee, 0xac, 0xdc, 0xe8, }; +const char JP_11[] PROGMEM = { 0xf2, 0x0c, 0x0d, 0xf0, 0x94, 0xf2, 0x0e, 0x0f, }; +const char JP_12[] PROGMEM = { 0xf2, 0x10, 0x11, }; +const char JP_13[] PROGMEM = { 0xf2, 0x12, 0x13, }; +const char JP_14[] PROGMEM = { 0xf2, 0x14, 0x15, }; +const char JP_15[] PROGMEM = { 0xf0, 0xbc, 0xca, 0x9e, 0xe0, 0xbd, }; +const char JP_16[] PROGMEM = { 0xf2, 0x16, 0x17, }; +const char JP_17[] PROGMEM = { 0xf0, 0xcb, 0xee, 0xae, 0xbd, }; +const char JP_18[] PROGMEM = { 0xf2, 0x14, 0x15, }; +const char JP_19[] PROGMEM = { 0xf2, 0x16, 0x17, }; +const char JP_20[] PROGMEM = { 0xf2, 0x18, 0xf0, 0x5a, 0x8d, }; +const char JP_21[] PROGMEM = { 0xf0, 0xcb, 0xee, 0xae, 0xbd, }; +const char JP_22[] PROGMEM = { 0xf2, 0x14, 0x15, }; +const char JP_23[] PROGMEM = { 0xf0, 0xb5, 0x99, 0xe1, 0xa4, 0xbd, }; +const char JP_24[] PROGMEM = { 0xf1, 0x30, 0x29, 0x24, }; +const char JP_25[] PROGMEM = { 0xf0, 0xc8, 0xb8, 0xa5, }; +const char JP_26[] PROGMEM = { 0xf0, 0xc0, 0xda, 0xee, 0xae, }; +const char JP_27[] PROGMEM = { 0xf2, 0x18, 0xf0, 0x5a, 0x8d, }; +const char JP_28[] PROGMEM = { 0xf2, 0x19, 0xf0, 0x51, }; +const char JP_29[] PROGMEM = { 0xf0, 0x46, 0x46, 0x4a, 0x01, }; +const char JP_30[] PROGMEM = { 0xf0, 0x71, 0x46, 0x01, }; +const char JP_31[] PROGMEM = { 0xf2, 0x1a, 0x1b, 0x08, }; +const char JP_32[] PROGMEM = { 0xf2, 0x1c, 0x08, }; +const char JP_33[] PROGMEM = { 0xf0, 0x46, 0x46, 0x4a, 0x01, }; +const char JP_34[] PROGMEM = { 0xf0, 0x71, 0x46, 0x01, }; +const char JP_35[] PROGMEM = { 0xf0, 0xd6, 0x99, 0xe8, 0xae, 0xa4, 0xdf, 0xee, 0xe8, }; +const char JP_36[] PROGMEM = { 0xf0, 0xca, 0xdf, 0xb8, 0xcc, }; +const char JP_37[] PROGMEM = { 0xf2, 0x14, 0x15, }; +const char JP_38[] PROGMEM = { 0xf0, 0x97, 0xc5, 0x9b, 0xbd, }; +const char JP_39[] PROGMEM = { 0xf2, 0x1d, 0x1e, 0x08, }; +const char *const JP_table[] = {JP_0, JP_1, JP_2, JP_3, JP_4, JP_5, JP_6, JP_7, JP_38, JP_8, JP_9, JP_10, JP_11, JP_12, JP_13, JP_14, JP_15, JP_16, JP_17, JP_18, JP_19, JP_20, JP_21, JP_22, JP_23, JP_24, JP_25, JP_26, JP_27, JP_28, JP_29, JP_30, JP_31, JP_32, JP_39, JP_33, JP_34, JP_35, JP_36, JP_37,}; +const char JP_Length_table[] PROGMEM = {6, 5, 5, 7, 6, 4, 9, 3 ,5, 4, 9, 10, 8, 3, 3, 3, 6, 3, 5, 3, 3, 5, 5, 3, 6, 4, 4, 5, 5, 4, 5, 4, 4, 3, 4, 5, 4, 9, 5, 3,}; + +bool lastbutton; +#include //注意 这里使用被阉割的图形库,只有绘图功能,并非通用的版本 +Arduboy2 arduboy; + +#include +#include +#include + +// Firmware version +#define VERSION "v1.7t3" + +// Type of rotary encoder +#define ROTARY_TYPE 1 // 0: 2 increments/step; 1: 4 increments/step + +// Pins +#define SENSOR_PIN A0 // temperature sense +#define VIN_PIN A1 // input voltage sense +#define BUZZER_PIN 5 // buzzer +#define BUTTON_PIN 6 // rotary encoder switch +#define ROTARY_1_PIN 7 // rotary encoder 1 +#define ROTARY_2_PIN 8 // rotary encoder 2 +#define CONTROL_PIN 9 // heater MOSFET PWM control +#define SWITCH_PIN 10 // handle vibration switch + +// Default temperature control values (recommended soldering temperature: 300-380°C) +#define ChipTempCalVal 330 //芯片内部温度读取校准值 -->可以根据实际情况修改,不同机器情况不同,通常误差在10°C内 +#define TEMP_MIN 150 // min selectable temperature +#define TEMP_MAX 400 // max selectable temperature +#define TEMP_DEFAULT 320 // default start setpoint +#define TEMP_SLEEP 150 // temperature in sleep mode +#define TEMP_BOOST 60 // temperature increase in boost mode +#define TEMP_STEP 10 // rotary encoder temp change steps + +// Default tip temperature calibration values +#define TEMP200 216 // temperature at ADC = 200 +#define TEMP280 308 // temperature at ADC = 280 +#define TEMP360 390 // temperature at ADC = 360 +#define TEMPCHP 30 // chip temperature while calibration +#define TIPMAX 8 // max number of tips +#define TIPNAMELENGTH 6 // max length of tip names (including termination) +#define TIPNAME "BC1.5" // default tip name + +// Default timer values (0 = disabled) +#define TIME2SLEEP 5 // time to enter sleep mode in minutes +#define TIME2OFF 15 // time to shut off heater in minutes +#define TIMEOFBOOST 40 // time to stay in boost mode in seconds + +// Control values +#define TIME2SETTLE 950 // time in microseconds to allow OpAmp output to settle +#define SMOOTHIE 0.05 // OpAmp output smooth factor (1=no smoothing; 0.05 default) +#define PID_ENABLE true // enable PID control +#define BEEP_ENABLE true // enable/disable buzzer +#define MAINSCREEN 1 // type of main screen (0: big numbers; 1: more infos) + +// EEPROM identifier +#define EEPROM_IDENT 0x08FF // to identify if EEPROM was written by this program + +//Beep +#define SetBeepCoolTime 200 +unsigned long BeepCoolTime; + +// Define the aggressive and conservative PID tuning parameters +double aggKp = 11, aggKi = 0.5, aggKd = 1; +double consKp = 11, consKi = 3, consKd = 5; + +// Default values that can be changed by the user and stored in the EEPROM +uint16_t DefaultTemp = TEMP_DEFAULT; +uint16_t SleepTemp = TEMP_SLEEP; +uint8_t BoostTemp = TEMP_BOOST; +uint8_t time2sleep = TIME2SLEEP; +uint8_t time2off = TIME2OFF; +uint8_t timeOfBoost = TIMEOFBOOST; +uint8_t MainScrType = MAINSCREEN; +bool PIDenable = PID_ENABLE; +bool beepEnable = BEEP_ENABLE; +// Default values for tips +uint16_t CalTemp[TIPMAX][4] = {TEMP200, TEMP280, TEMP360, TEMPCHP}; +char TipName[TIPMAX][TIPNAMELENGTH] = {TIPNAME}; +uint8_t CurrentTip = 0; +uint8_t NumberOfTips = 1; + +// Menu items +/* + 这个可以选择进行界面美化 + const char *DeleteMessage[] = { "Warning", "You cannot", "delete your", "last tip!" }; + const char *MaxTipMessage[] = { "Warning", "You reached", "maximum number", "of tips!" }; +*/ +// Variables for pin change interrupt +volatile uint8_t a0, b0, c0, d0; +volatile bool ab0; +volatile int count, countMin, countMax, countStep; +volatile bool handleMoved; + +// Variables for temperature control +uint16_t SetTemp, ShowTemp, gap, Step; +double Input, Output, Setpoint, RawTemp, CurrentTemp, ChipTemp; + +// Variables for voltage readings +uint16_t Vcc, Vin; + +// State variables +bool inSleepMode = false; +bool inOffMode = false; +bool inBoostMode = false; +bool inCalibMode = false; +bool isWorky = true; +bool beepIfWorky = true; +bool TipIsPresent = true; +bool FlipState = false; +// Timing variables +uint32_t sleepmillis; +uint32_t boostmillis; +uint32_t buttonmillis; +uint8_t goneMinutes; +uint8_t goneSeconds; +uint8_t SensorCounter = 255; +//串口助手 +int x, y, a, b; +//欠压报警 +byte UnderVoltage = 0; +// Control variables +uint16_t time2settle = 300; + +//模拟数字滚轮 Numerical scrolling effect +int Value; +int LastValue[3]; +float SlidingAnimationY[3]; + +// Specify the links and initial PID tuning parameters +PID ctrl(&Input, &Output, &Setpoint, aggKp, aggKi, aggKd, REVERSE); + + + +//LANG 语言支持 +/* 0 - 中文 CHINESE + 1 - 英文 ENGLISH + 2 - 日语 +*/ +byte LANG = 1; +void Flip(bool Fmode) { + arduboy.flipVertical(Fmode); + arduboy.flipHorizontal(Fmode); +} +void setup() { + arduboy.begin(); + arduboy.setFrameRate(30); + + //Serial.begin(115200); + // set the pin modes + pinMode(SENSOR_PIN, INPUT); + pinMode(VIN_PIN, INPUT); + pinMode(BUZZER_PIN, OUTPUT); + pinMode(CONTROL_PIN, OUTPUT); + pinMode(ROTARY_1_PIN, INPUT_PULLUP); + pinMode(ROTARY_2_PIN, INPUT_PULLUP); + pinMode(BUTTON_PIN, INPUT_PULLUP); + pinMode(SWITCH_PIN, INPUT_PULLUP); + + analogWrite(CONTROL_PIN, 255); // this shuts off the heater + digitalWrite(BUZZER_PIN, LOW); // must be LOW when buzzer not in use + + // setup ADC + ADCSRA |= bit (ADPS0) | bit (ADPS1) | bit (ADPS2); // set ADC prescaler to 128 + ADCSRA |= bit (ADIE); // enable ADC interrupt + interrupts (); // enable global interrupts + + // setup pin change interrupt for rotary encoder + PCMSK0 = bit (PCINT0); // Configure pin change interrupt on Pin8 + PCICR = bit (PCIE0); // Enable pin change interrupt + PCIFR = bit (PCIF0); // Clear interrupt flag + + + // get default values from EEPROM + getEEPROM(); + //设置屏幕反转状态 + Flip(FlipState); + // read supply voltages in mV + Vcc = getVCC(); Vin = getVIN(); + + // read and set current iron temperature + SetTemp = DefaultTemp; + RawTemp = denoiseAnalog(SENSOR_PIN); + ChipTemp = getChipTemp(); + calculateTemp(); + + // turn on heater if iron temperature is well below setpoint + if ((CurrentTemp + 20) < DefaultTemp) analogWrite(CONTROL_PIN, 0); + + // tell the PID to range between 0 and the full window size + ctrl.SetOutputLimits(0, 255); + + // start PID + ctrl.SetMode(AUTOMATIC); + + // set initial rotary encoder values + a0 = PINB & 1; b0 = PIND >> 7 & 1; ab0 = (a0 == b0); + setRotary(TEMP_MIN, TEMP_MAX, TEMP_STEP, DefaultTemp); + + // reset sleep timer + sleepmillis = millis(); + + // long beep for setup completion + beep(); beep(); + + +} + + +void loop() { + //HelpMeSerialer(); + ROTARYCheck(); // check rotary encoder (temp/boost setting, enter setup menu) + SLEEPCheck(); // check and activate/deactivate sleep modes + SENSORCheck(); // reads temperature and vibration switch of the iron + Thermostat(); // heater control + MainScreen(); // updates the main page on the OLED + //beep(0); +} + + + + +// check rotary encoder; set temperature, toggle boost mode, enter setup menu accordingly +void ROTARYCheck() { + // set working temperature according to rotary encoder value + SetTemp = getRotary(); + + // check rotary encoder switch + uint8_t c = digitalRead(BUTTON_PIN); + if ( !c && c0 ) { + beep(); + buttonmillis = millis(); + while ( (!digitalRead(BUTTON_PIN)) && ((millis() - buttonmillis) < 500) ); + if ((millis() - buttonmillis) >= 500) SetupScreen(); + else { + inBoostMode = !inBoostMode; + if (inBoostMode) boostmillis = millis(); + handleMoved = true; + } + } + c0 = c; + + // check timer when in boost mode + if (inBoostMode && timeOfBoost) { + goneSeconds = (millis() - boostmillis) / 1000; + if (goneSeconds >= timeOfBoost) { + inBoostMode = false; // stop boost mode + beep(); // beep if boost mode is over + beepIfWorky = true; // beep again when working temperature is reached + } + } +} + + +// check and activate/deactivate sleep modes +void SLEEPCheck() { + if (handleMoved) { // if handle was moved + if (inSleepMode) { // in sleep or off mode? + if ((CurrentTemp + 20) < SetTemp) // if temp is well below setpoint + analogWrite(CONTROL_PIN, 0); // then start the heater right now + beep(); // beep on wake-up + beepIfWorky = true; // beep again when working temperature is reached + } + handleMoved = false; // reset handleMoved flag + inSleepMode = false; // reset sleep flag + inOffMode = false; // reset off flag + sleepmillis = millis(); // reset sleep timer + } + + // check time passed since the handle was moved + goneMinutes = (millis() - sleepmillis) / 60000; + if ( (!inSleepMode) && (time2sleep > 0) && (goneMinutes >= time2sleep) ) { + inSleepMode = true; + beep(); + } + if ( (!inOffMode) && (time2off > 0) && (goneMinutes >= time2off ) ) { + inOffMode = true; + beep(); + } +} + + +// reads temperature, vibration switch and supply voltages +void SENSORCheck() { + analogWrite(CONTROL_PIN, 255); // shut off heater in order to measure temperature + delayMicroseconds(time2settle); // wait for voltage to settle + + uint16_t temp = denoiseAnalog(SENSOR_PIN); // read ADC value for temperature + uint8_t d = digitalRead(SWITCH_PIN); // check handle vibration switch + if (d != d0) { + handleMoved = true; // set flag if handle was moved + d0 = d; + } + if (! SensorCounter--) Vin = getVIN(); // get Vin every now and then + + analogWrite(CONTROL_PIN, Output); // turn on again heater + + RawTemp += (temp - RawTemp) * SMOOTHIE; // stabilize ADC temperature reading + calculateTemp(); + + // stabilize displayed temperature when around setpoint + if ((ShowTemp != Setpoint) || (abs(ShowTemp - CurrentTemp) > 5)) ShowTemp = CurrentTemp; + + // set state variable if temperature is in working range; beep if working temperature was just reached + gap = abs(SetTemp - CurrentTemp); + if (gap < 5) { + if (!isWorky && beepIfWorky) beep(); + isWorky = true; + beepIfWorky = false; + } + else isWorky = false; + // checks if tip is present or currently inserted + if (ShowTemp > 500) TipIsPresent = false; // tip removed ? + if (!TipIsPresent && (ShowTemp < 500)) { // new tip inserted ? + analogWrite(CONTROL_PIN, 255); // shut off heater + beep(); // beep for info + TipIsPresent = true; // tip is present now + ChangeTipScreen(); // show tip selection screen + updateEEPROM(); // update setting in EEPROM + handleMoved = true; // reset all timers + RawTemp = denoiseAnalog(SENSOR_PIN); // restart temp smooth algorithm + c0 = LOW; // switch must be released + setRotary(TEMP_MIN, TEMP_MAX, TEMP_STEP, SetTemp); // reset rotary encoder + } +} + + +// calculates real temperature value according to ADC reading and calibration values +void calculateTemp() { + if (RawTemp < 200) CurrentTemp = map (RawTemp, 0, 200, 21, CalTemp[CurrentTip][0]); + else if (RawTemp < 280) CurrentTemp = map (RawTemp, 200, 280, CalTemp[CurrentTip][0], CalTemp[CurrentTip][1]); + else CurrentTemp = map (RawTemp, 280, 360, CalTemp[CurrentTip][1], CalTemp[CurrentTip][2]); +} + + +//调温 +void Thermostat() { + // define Setpoint acoording to current working mode + if (inOffMode) Setpoint = 0; + else if (inSleepMode) Setpoint = SleepTemp; + else if (inBoostMode) Setpoint = SetTemp + BoostTemp; + else Setpoint = SetTemp; + + // control the heater (PID or direct) + gap = abs(Setpoint - CurrentTemp); + if (PIDenable) { + Input = CurrentTemp; + if (gap < 30) ctrl.SetTunings(consKp, consKi, consKd); + else ctrl.SetTunings(aggKp, aggKi, aggKd); + ctrl.Compute(); + } else { + // turn on heater if current temperature is below setpoint + if ((CurrentTemp + 0.5) < Setpoint) Output = 0; else Output = 255; + } + analogWrite(CONTROL_PIN, Output); // set heater PWM +} + + +// creates a short beep on the buzzer +void beep() { + /* + if (beepEnable) { + if (BeepCoolTime + SetBeepCoolTime < millis()) { + if (state) BeepCoolTime = millis(); + analogWrite(BUZZER_PIN, 0); + } else analogWrite(BUZZER_PIN, 127); + } else analogWrite(BUZZER_PIN, 0); + */ + //体谅一下,没内存了,只能用原始的办法驱动无源蜂鸣器,否则我也不想牺牲宝贵响应资源换内存 + if (beepEnable) { + for (uint8_t i = 0; i < 255; i++) { + digitalWrite(BUZZER_PIN, HIGH); + delayMicroseconds(125); + digitalWrite(BUZZER_PIN, LOW); + delayMicroseconds(125); + } + } +} + +//设置旋转编码器的起始值 +// sets start values for rotary encoder +void setRotary(int rmin, int rmax, int rstep, int rvalue) { + countMin = rmin << ROTARY_TYPE; + countMax = rmax << ROTARY_TYPE; + countStep = rstep; + count = rvalue << ROTARY_TYPE; +} + + +// reads current rotary encoder value +int getRotary() { + return (count >> ROTARY_TYPE); +} + + +// reads user settings from EEPROM; if EEPROM values are invalid, write defaults +void getEEPROM() { + uint16_t identifier = (EEPROM.read(0) << 8) | EEPROM.read(1); + if (identifier == EEPROM_IDENT) { + DefaultTemp = (EEPROM.read(2) << 8) | EEPROM.read(3); + SleepTemp = (EEPROM.read(4) << 8) | EEPROM.read(5); + BoostTemp = EEPROM.read(6); + time2sleep = EEPROM.read(7); + time2off = EEPROM.read(8); + timeOfBoost = EEPROM.read(9); + MainScrType = EEPROM.read(10); + PIDenable = EEPROM.read(11); + beepEnable = EEPROM.read(12); + CurrentTip = EEPROM.read(13); + NumberOfTips = EEPROM.read(14); + LANG = EEPROM.read(15); + FlipState = EEPROM.read(16); + UnderVoltage = EEPROM.read(17); + uint8_t i, j; + uint16_t counter = 18; + for (i = 0; i < NumberOfTips; i++) { + for (j = 0; j < TIPNAMELENGTH; j++) { + TipName[i][j] = EEPROM.read(counter++); + } + for (j = 0; j < 4; j++) { + CalTemp[i][j] = EEPROM.read(counter++) << 8; + CalTemp[i][j] |= EEPROM.read(counter++); + } + } + } + else { + EEPROM.update(0, EEPROM_IDENT >> 8); EEPROM.update(1, EEPROM_IDENT & 0xFF); + updateEEPROM(); + } +} + + +// writes user settings to EEPROM using updade function to minimize write cycles +void updateEEPROM() { + EEPROM.update( 2, DefaultTemp >> 8); + EEPROM.update( 3, DefaultTemp & 0xFF); + EEPROM.update( 4, SleepTemp >> 8); + EEPROM.update( 5, SleepTemp & 0xFF); + EEPROM.update( 6, BoostTemp); + EEPROM.update( 7, time2sleep); + EEPROM.update( 8, time2off); + EEPROM.update( 9, timeOfBoost); + EEPROM.update(10, MainScrType); + EEPROM.update(11, PIDenable); + EEPROM.update(12, beepEnable); + EEPROM.update(13, CurrentTip); + EEPROM.update(14, NumberOfTips); + EEPROM.update(15, LANG); + EEPROM.update(16, FlipState); + EEPROM.update(17, UnderVoltage); + uint8_t i, j; + uint16_t counter = 18; + for (i = 0; i < NumberOfTips; i++) { + for (j = 0; j < TIPNAMELENGTH; j++) EEPROM.update(counter++, TipName[i][j]); + for (j = 0; j < 4; j++) { + EEPROM.update(counter++, CalTemp[i][j] >> 8); + EEPROM.update(counter++, CalTemp[i][j] & 0xFF); + } + } +} +//此片段用于DEBUG +void HelpMeSerialer() { + //串口助手 + if (Serial.available()) { + char TmpChar = Serial.read(); + switch (TmpChar) { + case 'x': x = Serial.parseInt(); + case 'y': y = Serial.parseInt(); + case 'a': a = Serial.parseInt(); + case 'b': b = Serial.parseInt(); + } + } + /* + Serial.println(String("X ->") + x); + Serial.println(String("Y ->") + y); + Serial.println(String("A ->") + a); + Serial.println(String("B ->") + b); + */ +} +// draws the main screen +void MainScreen() { + if (!(arduboy.nextFrame())) //帧率锁 + return; + byte SysState; + if (MainScrType) { + arduboy.clear(); + //详细信息页 + arduboy.fillRect(0, 0, 128, 64, 1); //白底 + arduboy.setTextSize(1); + SetTextColor(0); + //预设名 + arduboy.drawSlowXYBitmap(0, 0, Tag, 16, 16, 0); + arduboy.setCursor(19, 4); arduboy.print(TipName[CurrentTip]); + //状态显示 + if (ShowTemp > 500) SysState = 0; + else if (inOffMode) SysState = 1; + else if (inSleepMode) SysState = 2; + else if (inBoostMode) SysState = 3; + else if (isWorky) SysState = 4; + else if (Output < 180) SysState = 5; + else SysState = 6; + //显示状态 + arduboy.setCursor(53, 1); + arduboy.setTextSize(2); + switch (LANG) { + case 0: arduboy.drawSlowXYBitmap(80, 1, S_table[SysState], 28, 14, 0); break; //中文 Chinese + default: //英文 English + switch (SysState) { + case 1: arduboy.print(F("OFF")); break; + case 2: arduboy.print(F("SLEEP")); break; + case 3: arduboy.print(F("BOOST")); break; + case 4: arduboy.print(F("WORKY")); break; + case 5: arduboy.print(F("HEAT")); break; + case 6: arduboy.print(F("HOLD")); break; + default: arduboy.print(F("ERROR")); break; + } break; + } + arduboy.drawSlowXYBitmap(113, 1, C_table[SysState], 14, 14, 0); + arduboy.setTextSize(1); + //芯片 + //R1 + if (getChipTemp() > 80 && ((millis() * 4) / 1000) % 2) beep(); else arduboy.drawSlowXYBitmap(2, 18, Chip, 14, 14, 0); + + //R2 + if ((float)Vin / 100 < UnderVoltage && ((millis() * 4) / 1000) % 2) beep(); else arduboy.drawSlowXYBitmap(2, 34, Lightning, 14, 14, 0); + //R3 + arduboy.setCursor(19, 16); arduboy.print(getChipTemp(), 1); arduboy.print((char)248); arduboy.print(F("C")); //芯片温度 + arduboy.setCursor(19, 24); arduboy.print((float)getVCC() / 1000, 2); arduboy.print(F("V")); //芯片电压 + arduboy.setCursor(19, 32); arduboy.print((float)Vin / 1000, 1); arduboy.print(F("V")); //输入电压 + arduboy.setCursor(19, 40); arduboy.print(F(VERSION)); //固件 + //显示探头温度 + arduboy.setCursor(57, 18); + arduboy.setTextSize(4); + if (ShowTemp > 500) arduboy.print(F("000")); else arduboy.print(ShowTemp); + arduboy.drawRect(55, 16, 72, 32, 0); + + DrawStatusBar(0); + arduboy.display(); + } else { + arduboy.clear(); + if (getChipTemp() > 80 && ((millis() * 4) / 1000) % 2) beep(); + if ((float)Vin / 100 < UnderVoltage && ((millis() * 4) / 1000) % 2) beep(); + if (ShowTemp > 500) DisplayNum(999); else DisplayNum(ShowTemp); + arduboy.fillRect(0, 48, 128, 3, 0); + DrawStatusBar(1); + arduboy.display(); + } + +} + +void DrawStatusBar(bool color) { + SetTextColor(color); + arduboy.setTextSize(1); + //温度条 + //框 + arduboy.drawRect(1, 49, 102, 14, color); + //条 + if (ShowTemp <= 500) arduboy.fillRect(1, 49, map(ShowTemp, 0, 500, 2, 102), 14, color); + //指示部分 + arduboy.fillRect(map(Setpoint, 0, 500, 2, 102) - 2, 50, 3, 13, color); + //先来个白底 + arduboy.fillRect(map(Setpoint, 0, 500, 2, 102) - 3, 60, 5, 4, color); + arduboy.drawLine(map(Setpoint, 0, 500, 2, 102) - 1, 60, map(Setpoint, 0, 500, 2, 102) - 1, 49, !color); + + //画指示针 + arduboy.drawSlowXYBitmap(map(Setpoint, 0, 500, 2, 102) - 3, 59, Pointer, 5, 4, !color); + + //功率条 + arduboy.drawRect(104, 49, 23, 14, color); + arduboy.fillRect(104, 49, map(Output, 255, 0, 0, 23), 14, color); + + SetTextColor(!color); + //////////////进入反色//////////////////////////////// + arduboy.setCursor(2, 55); arduboy.print(Setpoint, 0); arduboy.print((char)248); arduboy.print(F("C")); //探头预设温度 + arduboy.setCursor(105, 55); arduboy.print(map(Output, 255, 0, 0, 100)); arduboy.print(F("%")); //功率百分比 + SetTextColor(color); +} + +//设置画笔颜色 +void SetTextColor(bool color) { + arduboy.setTextBackground(!color); + arduboy.setTextColor(color); +} +// setup screen +void SetupScreen() { + analogWrite(CONTROL_PIN, 255); // shut off heater + beep(); + uint16_t SaveSetTemp = SetTemp; + uint8_t selection = 0; + bool repeat = true; + + while (repeat) { + MenuLevel = 0; //默认打开主菜单 + selection = MenuScreen(selection); + switch (selection) { + case 0: MenuLevel = 1; TipScreen(); repeat = false; break; + case 1: MenuLevel = 2; TempScreen(); break; + case 2: MenuLevel = 3; TimerScreen(); break; + case 3: MenuLevel = 4; PIDenable = MenuScreen(PIDenable); break; + case 4: MenuLevel = 10; ScreenSet(); break; + case 5: MenuLevel = 6; beepEnable = MenuScreen(beepEnable); break; + case 6: UnderVoltageSet(); break; + case 7: MenuLevel = 8; LANG = MenuScreen(LANG); break; + case 8: QRcodeScreen(); break; + default: repeat = false; break; + } + } + updateEEPROM(); + handleMoved = true; + SetTemp = SaveSetTemp; + setRotary(TEMP_MIN, TEMP_MAX, TEMP_STEP, SetTemp); +} + + +//显示设置菜单 +// tip settings screen +void ScreenSet() { + uint8_t selection = 0; + bool repeat = true; + while (repeat) { + MenuLevel = 10; + selection = MenuScreen(selection); + switch (selection) { + case 0: MenuLevel = 5; MainScrType = MenuScreen(MainScrType); break; + case 1: MenuLevel = 9; FlipState = MenuScreen(FlipState); break; + default: repeat = false; break; + } + Flip(FlipState); //设置屏幕反转状态 + } + updateEEPROM(); +} + +//预设设置菜单 +// tip settings screen +void TipScreen() { + uint8_t selection = 0; + bool repeat = true; + while (repeat) { + MenuLevel = 1; + selection = MenuScreen(selection); + switch (selection) { + case 0: ChangeTipScreen(); break; + case 1: CalibrationScreen(); break; + case 2: InputNameScreen(); break; + case 3: DeleteTipScreen(); break; + case 4: AddTipScreen(); break; + default: repeat = false; break; + } + } +} + +//温控设置菜单 +// temperature settings screen +void TempScreen() { + uint8_t selection = 0; + bool repeat = true; + while (repeat) { + selection = MenuScreen(selection); + switch (selection) { + case 0: setRotary(TEMP_MIN, TEMP_MAX, TEMP_STEP, DefaultTemp); + DefaultTemp = InputScreen(); break; + case 1: setRotary(20, 200, TEMP_STEP, SleepTemp); + SleepTemp = InputScreen(); break; + case 2: setRotary(10, 100, TEMP_STEP, BoostTemp); + BoostTemp = InputScreen(); break; + default: repeat = false; break; + } + } + updateEEPROM(); +} + +//定时器设置菜单 +// timer settings screen +void TimerScreen() { + uint8_t selection = 0; + bool repeat = true; + while (repeat) { + selection = MenuScreen(selection); + switch (selection) { + case 0: setRotary(0, 30, 1, time2sleep); + time2sleep = InputScreen(); break; + case 1: setRotary(0, 60, 5, time2off); + time2off = InputScreen(); break; + case 2: setRotary(0, 180, 10, timeOfBoost); + timeOfBoost = InputScreen(); break; + default: repeat = false; break; + } + } + updateEEPROM(); +} +//英语支持 +void Print_EN(byte i) { + char buffer[11]; + strcpy_P(buffer, (char *)pgm_read_word(&(EN_table[i]))); + arduboy.print(buffer); +} +//菜单界面 +// menu screen +uint8_t MenuScreen(uint8_t selected) { + int SlidingAnimationX; + uint8_t lastselected = selected; + setRotary(0, Menu_table[MenuLevel] - 1, 1, selected); + lastbutton = (!digitalRead(BUTTON_PIN)); + SetTextColor(1); + do { + selected = getRotary(); + //非线性滑动动画 + SlidingAnimationX += (selected - lastselected) * 56; + if (SlidingAnimationX != 0) SlidingAnimationX += 0.6 * (-SlidingAnimationX); + lastselected = selected; + arduboy.clear(); + //绘制图标 如果有指定的话 + for (byte i = 0; i < 5; i++) if (selected - 2 + i >= 0 && selected - 2 + i < Menu_table[MenuLevel]) { + DrawUIFrame(-72 + i * 56 + SlidingAnimationX, 0, 1); + drawSlowXYBitmapResize(-72 + i * 56 + SlidingAnimationX + 3, 3, Ico_table[selected - 2 + i + QueryMenuObject()], 14, 14, 3, 1); + } + + + if (LANG == 0) arduboy.drawSlowXYBitmap(48, 48, CN_table[selected + QueryMenuObject()], 36, 16, 1); else if (LANG == 2) { + drawText(48, 52, JP_table[selected + QueryMenuObject()], pgm_read_byte(&(JP_Length_table[selected + QueryMenuObject()]))); + } else { + arduboy.setCursor(48, 49); + arduboy.setTextSize(1); + Print_EN(selected + QueryMenuObject()); + } + + + arduboy.display(); + CheckLastButton(); + //beep(0); + } while (digitalRead(BUTTON_PIN) || lastbutton); + beep(); + return selected; +} +void DrawUIFrame(int x, int y, bool color) { + arduboy.fillRect(x, y, 48, 48, color); + arduboy.fillRect(x + 3, y + 3, 42, 42, !color); //雕空 + DrawPoint(x, y, 0); + DrawPoint(x + 47, y, 0); + DrawPoint(x, y + 47, 0); + DrawPoint(x + 47, y + 47, 0); +} +void DrawPoint(int x, int y, bool color) { + arduboy.drawPixel(x + 1, y, color); + arduboy.drawPixel(x - 1, y, color); + arduboy.drawPixel(x, y + 1, color); + arduboy.drawPixel(x, y - 1, color); + arduboy.drawPixel(x, y, color); +} +//检查按键 +void CheckLastButton() { + if (lastbutton && digitalRead(BUTTON_PIN)) { + delay(10); + lastbutton = false; + } +} +//返回对应层数的对象数 +byte QueryMenuObject() { + int SUM = 0; + for (int i = 0; i < (MenuLevel); i++) SUM += Menu_table[i]; + return SUM; +} +//信息窗 +/* + void MessageScreen(const char *Items[], uint8_t numberOfItems) { + lastbutton = (!digitalRead(BUTTON_PIN)); + + //u8g.setFont(//u8g_font_9x15); + //u8g.setFontPosTop(); + for (uint8_t i = 0; i < numberOfItems; i++) //u8g.drawStr( 0, i * 16, Items[i]); + + do { + CheckLastButton(); + } while (digitalRead(BUTTON_PIN) || lastbutton); + beep(); + } +*/ +/* + 好看是好看,但是浪费内存 + int wav(byte wavi, int num) { + return (wavi + byte(millis() / 100)) * (float(float(num - countMin) / float(countMax - countMin)) - 0.5) * 5; + } +*/ + +//模拟数字滚轮 Numerical scrolling effect +void DisplayNum(int Num) { + arduboy.setTextSize(6); + SetTextColor(0); + //数字滚轮 + for (byte i = 0; i < 3; i++) LastValue[i] = int(Value/pow(10,2-i))%10; + Value = Num; + for (byte i = 0; i < 3; i++) { + SlidingAnimationY[i] += ((int(Value/pow(10,2-i))%10) - LastValue[i]) * 50; + if (SlidingAnimationY[i] != 0) SlidingAnimationY[i] += 0.8 * (-SlidingAnimationY[i]); + arduboy.fillRect(0 + i * 44, 0, 38, 50, 1); //白底 + for (int ii = -1; ii < 2; ii++) { + arduboy.setCursor(4 + i * 44, 4 - SlidingAnimationY[i] + ii * 50); + arduboy.print(LastValue[i] + ii); + } + } + //刻度标 + arduboy.fillRect(0, 0, 128, 2, 0); //上遮罩层 + arduboy.fillRect(0, 51, 128, 13, 0); //下遮罩层 +} + +//数值输入界面 +// input value screen +uint16_t InputScreen() { + lastbutton = (!digitalRead(BUTTON_PIN)); + do { + arduboy.clear(); + DisplayNum(getRotary()); + arduboy.display(); + CheckLastButton(); + } while (digitalRead(BUTTON_PIN) || lastbutton); + beep(); + return Value; +} +void QRcodeScreen() { + arduboy.clear(); + arduboy.drawSlowXYBitmap(40, 0, QRCode, 48, 48, 1); + arduboy.display(); + delay(100); + do { + } while (digitalRead(BUTTON_PIN) || lastbutton); + beep(); +} +//欠压报警设置 +// information display screen +void UnderVoltageSet() { + setRotary(0, 250, 1, UnderVoltage); + UnderVoltage = InputScreen(); + beep(); +} + +//更换预设界面 +// change tip screen +void ChangeTipScreen() { + uint8_t selected = CurrentTip; + uint8_t lastselected = selected; + int8_t arrow = 0; + if (selected) arrow = 1; + setRotary(0, NumberOfTips - 1, 1, selected); + lastbutton = (!digitalRead(BUTTON_PIN)); + do { + //beep(0); + arduboy.clear(); + selected = getRotary(); + arrow = constrain(arrow + selected - lastselected, 0, 2); + lastselected = selected; + SetTextColor(0); + arduboy.setTextSize(2); + arduboy.setCursor(0, 0); arduboy.print(F("Select Tip")); + SetTextColor(1); + arduboy.setCursor(0, 16 * (arrow + 1)); arduboy.print(F(">")); + for (uint8_t i = 0; i < 3; i++) { + uint8_t drawnumber = selected + i - arrow; + if (drawnumber < NumberOfTips) { + arduboy.setCursor(12, 16 * (i + 1)); arduboy.print(TipName[selected + i - arrow]); + } + } + CheckLastButton(); + arduboy.display(); + } while (digitalRead(BUTTON_PIN) || lastbutton); + + beep(); + CurrentTip = selected; +} + +//温度校准界面 +// temperature calibration screen +void CalibrationScreen() { + uint16_t CalTempNew[4]; + for (uint8_t CalStep = 0; CalStep < 3; CalStep++) { + SetTemp = CalTemp[CurrentTip][CalStep]; + setRotary(100, 500, 1, SetTemp); + beepIfWorky = true; + lastbutton = (!digitalRead(BUTTON_PIN)); + do { + arduboy.clear(); + arduboy.setTextSize(2); + SENSORCheck(); // reads temperature and vibration switch of the iron + Thermostat(); // heater control + arduboy.setCursor(0, 0); arduboy.print(F("Step: ")); arduboy.print(CalStep + 1); arduboy.print("/3"); + if (isWorky) { + arduboy.setCursor(0, 16); arduboy.print(F("Set measured")); + arduboy.setCursor(0, 32); arduboy.print(F("temp: ")); arduboy.print(getRotary()); + } else { + arduboy.setCursor(0, 16); arduboy.print(F("ADC: ")); arduboy.print(uint16_t(RawTemp)); + arduboy.setCursor(0, 32); arduboy.print(F("Please wait")); + } + CheckLastButton(); + arduboy.display(); + } while (digitalRead(BUTTON_PIN) || lastbutton); + + CalTempNew[CalStep] = getRotary(); + beep(); delay (10); + } + + analogWrite(CONTROL_PIN, 255); // shut off heater + delayMicroseconds(time2settle); // wait for voltage to settle + CalTempNew[3] = getChipTemp(); // read chip temperature + if ((CalTempNew[0] + 30 < CalTempNew[1]) && (CalTempNew[1] + 30 < CalTempNew[2])) { + MenuLevel = 7; + if (MenuScreen(0)) { + for (uint8_t i = 0; i < 4; i++) CalTemp[CurrentTip][i] = CalTempNew[i]; + } + } +} + +//命名界面 文本输入界面 +// input tip name screen +void InputNameScreen() { + uint8_t value; + for (uint8_t digit = 0; digit < (TIPNAMELENGTH - 1); digit++) { + lastbutton = (!digitalRead(BUTTON_PIN)); + setRotary(31, 96, 1, 65); + do { + value = getRotary(); + if (value == 31) { + value = 95; + setRotary(31, 96, 1, 95); + } + if (value == 96) { + value = 32; + setRotary(31, 96, 1, 32); + } + //arduboy.setCursor(0, 0);arduboy.print(); + arduboy.clear(); + arduboy.setTextSize(2); + arduboy.setCursor(16 * digit, 48); arduboy.print(char(94)); + arduboy.setCursor(0, 32); + for (uint8_t i = 0; i < digit; i++) arduboy.print(TipName[CurrentTip][i]); + arduboy.setCursor(16 * digit, 32); arduboy.print(char(value)); + CheckLastButton(); + arduboy.display(); + } while (digitalRead(BUTTON_PIN) || lastbutton); + TipName[CurrentTip][digit] = value; + beep(); delay (10); + } + TipName[CurrentTip][TIPNAMELENGTH - 1] = 0; + return value; +} + + +// delete tip screen +void DeleteTipScreen() { + MenuLevel = 7; + if (NumberOfTips == 1) { + //MessageScreen(DeleteMessage, sizeof(DeleteMessage)); + } + else if (MenuScreen(0)) { + if (CurrentTip == (NumberOfTips - 1)) { + CurrentTip--; + } + else { + for (uint8_t i = CurrentTip; i < (NumberOfTips - 1); i++) { + for (uint8_t j = 0; j < TIPNAMELENGTH; j++) TipName[i][j] = TipName[i + 1][j]; + for (uint8_t j = 0; j < 4; j++) CalTemp[i][j] = CalTemp[i + 1][j]; + } + } + NumberOfTips--; + } +} + + +// add new tip screen +void AddTipScreen() { + if (NumberOfTips < TIPMAX) { + CurrentTip = NumberOfTips++; InputNameScreen(); + CalTemp[CurrentTip][0] = TEMP200; CalTemp[CurrentTip][1] = TEMP280; + CalTemp[CurrentTip][2] = TEMP360; CalTemp[CurrentTip][3] = TEMPCHP; + } //MessageScreen(MaxTipMessage, sizeof(MaxTipMessage)); 信息窗 +} + + +// average several ADC readings in sleep mode to denoise +uint16_t denoiseAnalog (byte port) { + uint16_t result = 0; + ADCSRA |= bit (ADEN) | bit (ADIF); // enable ADC, turn off any pending interrupt + if (port >= A0) port -= A0; // set port and + ADMUX = (0x0F & port) | bit(REFS0); // reference to AVcc + set_sleep_mode (SLEEP_MODE_ADC); // sleep during sample for noise reduction + for (uint8_t i = 0; i < 32; i++) { // get 32 readings + sleep_mode(); // go to sleep while taking ADC sample + while (bitRead(ADCSRA, ADSC)); // make sure sampling is completed + result += ADC; // add them up + } + bitClear (ADCSRA, ADEN); // disable ADC + return (result >> 5); // devide by 32 and return value +} + +//读取芯片温度 +// get internal temperature by reading ADC channel 8 against 1.1V reference +double getChipTemp() { + unsigned int wADC; + double t; + ADMUX = (_BV(REFS1) | _BV(REFS0) | _BV(MUX3)); + ADCSRA |= _BV(ADEN); + delay(5); + ADCSRA |= _BV(ADSC); + while (bit_is_set(ADCSRA, ADSC)); + wADC = ADCW; + t = (wADC - ChipTempCalVal ) / 1.22; + return (t); +} + +/* + // get internal temperature by reading ADC channel 8 against 1.1V reference + double getChipTemp() { + uint16_t result = 0; + ADCSRA |= bit (ADEN) | bit (ADIF); // enable ADC, turn off any pending interrupt + ADMUX = bit (REFS1) | bit (REFS0) | bit (MUX3); // set reference and mux + delay(20); // wait for voltages to settle + set_sleep_mode (SLEEP_MODE_ADC); // sleep during sample for noise reduction + for (uint8_t i = 0; i < 32; i++) { // get 32 readings + sleep_mode(); // go to sleep while taking ADC sample + while (bitRead(ADCSRA, ADSC)); // make sure sampling is completed + result += ADC; // add them up + } + bitClear (ADCSRA, ADEN); // disable ADC + result >>= 2; // devide by 4 + return ((result - 2594) / 9.76); // calculate internal temperature in degrees C + } +*/ +// get input voltage in mV by reading 1.1V reference against AVcc +uint16_t getVCC() { + uint16_t result = 0; + ADCSRA |= bit (ADEN) | bit (ADIF); // enable ADC, turn off any pending interrupt + // set Vcc measurement against 1.1V reference + ADMUX = bit (REFS0) | bit (MUX3) | bit (MUX2) | bit (MUX1); + delay(1); // wait for voltages to settle + set_sleep_mode (SLEEP_MODE_ADC); // sleep during sample for noise reduction + for (uint8_t i = 0; i < 16; i++) { // get 16 readings + sleep_mode(); // go to sleep while taking ADC sample + while (bitRead(ADCSRA, ADSC)); // make sure sampling is completed + result += ADC; // add them up + } + bitClear (ADCSRA, ADEN); // disable ADC + result >>= 4; // devide by 16 + return (1125300L / result); // 1125300 = 1.1 * 1023 * 1000 +} + + +// get supply voltage in mV +uint16_t getVIN() { + long result; + result = denoiseAnalog (VIN_PIN); // read supply voltage via voltage divider + return (result * Vcc / 179.474); // 179.474 = 1023 * R13 / (R12 + R13) +} + +//ADC中断服务 +// ADC interrupt service routine +EMPTY_INTERRUPT (ADC_vect); // nothing to be done here + +//旋转编码器触发中断 +// Pin change interrupt service routine for rotary encoder +ISR (PCINT0_vect) { + uint8_t a = PINB & 1; + uint8_t b = PIND >> 7 & 1; + if (a != a0) { // A changed + a0 = a; + if (b != b0) { // B changed + b0 = b; + count = constrain(count + ((a == b) ? countStep : -countStep), countMin, countMax); + if (ROTARY_TYPE && ((a == b) != ab0)) { + count = constrain(count + ((a == b) ? countStep : -countStep), countMin, countMax);; + } + ab0 = (a == b); + handleMoved = true; + } + } +} + +//显示位图,并允许放大 代码片段改自arduboy2 +void drawSlowXYBitmapResize(int x, int y, const uint8_t *bitmap, uint8_t w, uint8_t h, uint8_t size, uint8_t color) { + // no need to draw at all of we're offscreen + /* + if (x + w < 0 || x > WIDTH - 1 || y + h < 0 || y > HEIGHT - 1) + return; + */ + int16_t xi, yi, byteWidth = (w + 7) / 8; + for (yi = 0; yi < h; yi ++) { + for (xi = 0; xi < w; xi ++) { + if (pgm_read_byte(bitmap + yi * byteWidth + xi / 8) & (128 >> (xi & 7))) { + //arduboy.drawPixel(x + xi, y + yi, color); + arduboy.fillRect(x + xi * size, y + yi * size, size, size, color); + } + } + } +} +/* + 8x8 dot Japanese font for Arduboy + + Copyright (c) 2016 emutyworks + + Released under the MIT license + https://github.com/emutyworks/8x8DotJPFont/blob/master/LICENSE.txt +*/ +void drawText(uint8_t x, uint8_t y, const uint8_t *mes, uint8_t cnt) +{ + uint8_t pb; + uint8_t page; + uint8_t screen_start = 0; + uint8_t screen_end = 128; + + if (x < screen_start) { + x = screen_start; + } + + for (uint8_t i = 0; i < cnt; i++) { + pb = pgm_read_byte_near(mes + i); + + switch (pb) { + case MISAKI_FONT_F0_PAGE: + page = MISAKI_FONT_F0_PAGE; + continue; + case MISAKI_FONT_F1_PAGE: + page = MISAKI_FONT_F1_PAGE; + continue; + case MISAKI_FONT_F2_PAGE: + page = MISAKI_FONT_F2_PAGE; + continue; + } + + if (!page) { + continue; + } + + switch (page) { +#ifdef MISAKI_FONT_F0_H + case MISAKI_FONT_F0_PAGE: + if (pb > MISAKI_FONT_F0_SIZE) { + continue; + } + if ((x + 8) > screen_end) { + x = screen_start; + y = y + 8; + } + arduboy.drawBitmap(x, y, misaki_font_f0[ pb ], MISAKI_FONT_F0_W, 8, WHITE); + x = x + 8; + break; +#endif +#ifdef MISAKI_FONT_F1_H + case MISAKI_FONT_F1_PAGE: + if (pb > MISAKI_FONT_F1_SIZE) { + continue; + } + if ((x + 4) > screen_end) { + x = screen_start; + y = y + 8; + } + arduboy.drawBitmap(x, y, misaki_font_f1[ pb ], MISAKI_FONT_F1_W, 8, WHITE); + arduboy.drawBitmap(x + 3, y, misaki_font_0x00, 1, 8, WHITE); + x = x + 4; + break; +#endif +#ifdef MISAKI_FONT_F2_H + case MISAKI_FONT_F2_PAGE: + if (pb > MISAKI_FONT_F2_SIZE) { + continue; + } + if ((x + 8) > screen_end) { + x = screen_start; + y = y + 8; + } + arduboy.drawBitmap(x, y, misaki_font_f2[ pb ], MISAKI_FONT_F2_W, 8, WHITE); + arduboy.drawBitmap(x + 7, y, misaki_font_0x00, 1, 8, WHITE); + x = x + 8; + break; +#endif + } + } +}