0  D$404mNJN…L04e$ÐFHuqaY}ÎÒ},…•¡mª,Òª™mÂÊÚÔ^ÞîÖ
0      ÿÿÿÿ    ÿÿÿÿ2Tv˜ºÜþïÍ«‰gE#2Tv˜ºÜþ2Tv˜ºÜþ  ÿÿÿÿ                     ÿÿÿÿ   €   €   €   €   €   €   €ÿÿÿÿ                     ÿÿÿÿ   €   €   €   €   €   €   €ÿÿÿÿ                     ÿÿÿÿ   €   €   €   €   €   €   €ÿÿÿÿ                     ÿÿÿÿ   €   €   €   €   €   €   €ÿÿÿÿ                     ÿÿÿÿ   €   €   €   €   €   €   €ÿÿÿÿ                     ÿÿÿÿ   €   €   €   €   €   €   €ÿÿÿÿ                     ÿÿÿÿ   €   €   €   €   €   €   €ÿÿÿÿ                     ÿÿÿÿ   €   €   €   €   €   €   €ð@<@’D@N<ñ/~÷0† Î¿‡y €²� €*q €&	 €�û €� €c €œ € ð<`–mcÎ<óo÷x��Î¿Ç{ €¶Ã €>s €6 €œÿ €œ3 €÷6 €œ €€  €•D€]8�/~÷0† Î¿‡y €²� €*q €&	 €œû €� €c €œ €À  ÀŒMÃÓ8Ão÷x��Î¿Ç{ €¶Ã €>s €6 €œÿ €�3 €÷6 €œ €  €
 @ „ /~÷0† Î¿‡y €²� €*q €&	 €œû €� €cD €œ € €
 ÀŸcÄ 3o÷x��Î¿Ç{ €·Ã €>s €6 €œÿ €�c €÷f €œ €   €|@„  D /~÷0† Î¿‡y €²� €*q €&	 €œû €� €c €œ €Â(@„Ä_  ` BµÆµªŠ5I	Q €Q €Q €   €   €U €* €ª  €ÂH>'yá‚‚<Â€yA‰}÷" €œ €<þ €# €¼| €ä� €b| €c| €ãm?g†yãÆ–Æ<ÆÀ†yÃ‹}÷66 €œ3 €<ÿ €· €ü~ €ôß €ò~ €÷| €ÂH>'á‚|‚ Â€|Aîýï" €œ € €«Œ €z| €Â� €\| €ãÿ €ãm?g†ãÆ|–Æ ÆÀ|†Ãîýï66 €œ3 € €«ß €ú~ €Âß €Ü~ €÷û €ÂH>')áˆ(ˆ Â€ AÒ;g"D €œ €ˆ4 €E €�B €�D €�ô €’ €ãm?gŒmãÌH–Ì ÆÀ ŒÃÛ{ç6f €œc €˜4 €™u €C €�F €�ô €>Û €ÂH>'á‚|‚ Â€|AŸ|÷" €œ €  €•Œ €H| €Ô� €@| €ãÿ €     !Áˆ|BDD‚|B	aLzª  €U­ €b €¢’ €~s €B’ €œu €! €I…I½é?~ÑÇèIîGÖIÆT† €Hõ €Ô„ €b| €~z €c� €ã� €c} €K�:K½:ë7?2ÓïíKÿ½G×¿KÇ½ÜÆ €È÷ €ÜÅ €ö| €~ €wÝ €÷Ý €w €1†!¾×1†îýà1Äè)ì'Ô)Ä"� €?� €#‰ €âw €ž{ €cŒ €cL €Ÿ; €s�1c¿·s�1îýásìékü»gÔ¿kÄ½¶Á €¿Á €·Ù €ös €x €÷Þ €÷~ €ß~ €BˆJÈJ(J(Î7âJ$J$E$$’ €$  €%` €% €œw €%„ €­„ €¡‚ €Û{ïBˆJèJhÞ/öÞöJEö>Û €$’ €%` €%8 €¼w €½÷ €-„ €¡‚ €@…_½ ÿ‘ÄèIíGÕ)Æ"� €>� €"‰ €âw €¾{ €cŒ €ã� €c| €‚§Ì¹j"'Üx"j¤èŠ¤†$Æ\&  €"! €"! €"1 €¾c €U” €Õw €U €1ÆèîÇW‘ÄX�øW‘ÀXŽ¸÷      b
 €G¬ €E¬ €Ýt €e­ €Ý¬ €   €   €3ÇíîíWÓì]ÃøWÓà]Î¸÷      v €Ï¬ €Íü €ýw €íþ €Ý­ €   €   €ñÇèþÇX�DUŽDU�D¢�8¢      Ì €cü €•B €	! € €"ù €   €   €óÇéþíÃìÎì]Øl÷Ï8²      †Û €÷þ €�Ç €	c €3 €·ù €   €   €ŽdæO;TRRTQRdQR$ŽYÄ      �€ €�d €%… €-C €!A € A €   €   €eæ{T~zTQRtß[4ß[ä      ¼€ €Ýæ €ýæ €­‚ €¡A € @ €   €   €1Æèÿÿê‚Ä„¨‚(§Ÿ²      ¢ €bü €•B €	! € €#ù €   €   €*âÞû¤©„‰„Z‰8W!¢      ” €Rò €UD €I$ €Uä €¤ƒ €   €   €   9Ñ EJ D EÄ 9D    ÿÿÿÿ   €   €   €   €   €   €   €ÿÿÿÿ   9Ñó EJDò EÄ9Dö    ÿÿÿÿ   €   €   €   €   €   €   €ÿÿÿÿ   Ü    }    ÿÿÿÿ   €   €   €   €   €   €   €ÿÿÿÿ   Ü÷ ñ }ñ    ÿÿÿÿ   €   €   €   €   €   €   €ÿÿÿÿ   Eß EA }Ï EA Eß    ÿÿÿÿ   €   €   €   €   €   €   €ÿÿÿÿ   Eßó EA}Ïó EAEßó    ÿÿÿÿ   €   €   €   €   €   €   €ÿÿÿÿ   yO Q uÉ EG 9Y    ÿÿÿÿ   €   €   €   €   €   €   €ÿÿÿÿ   yOQ²uÉQEG9Y   ÿÿÿÿ   €   €   €   €   €   €   €ÿÿÿÿÿÿÿÿ                     ÿÿÿÿ   €   €   €   €   €   €   €ÿÿÿÿ                     ÿÿÿÿ   €   €   €   €   €   €   €ÿÿÿÿ                     ÿÿÿÿ   €   €   €   €   €   €   €ÿÿÿÿ                     ÿÿÿÿ   €   €   €   €   €   €   €                                                                                                                                                                                                                                                                ’�”}òä@Â„@¢‚¸Ÿâ«ñ~	ª‰ €ÿ÷ €$‰ €ä‡ €$a €Eô €Œ €¤¤ €?r$½/6Bä-BSVº,éÿð¢€	¸@¥Â €Þ1 €¤ €c0 €“Ã €Õ €>: €Õ× €(ð(@ ò„ EBÿ?B ŠOn?ð  €"p €ã €"ø €  €”  €Ô €•" € €@‘ _‚|÷Š„ Î½‡y €²� €*q €&	 €œû €� €c €œ €                                                                                                                                                                                                                                                                "Äæ3¸|A§ñ~CEÄ!HÅ/B €¹1 €Àÿ €?„ € Å € r €¾­ €Èÿ €)ÄˆÅgß})""v!‘˜Ì —.-#	 €î €BZ €»³ €C• €ÊZ €³Ö €ú? € *EÿÿÈÄ àD|D Ä@| F„E” €c €Ä÷ €K” €Ä÷ €@” €À÷ €‰ €ªÂH¨>'á‚|‚ Â€|AD *" €œ € €R €3 €”R €R2 €#A €                                                                                                                                                                                                                                                                H%XHˆ$"ú~æ‚’‰	}…Ÿ�> €ˆú €« €*ù €þO € H €þO € D €µkZ5%‚³¥¨7½VÂ	û£žY³JÒ €úO €ù €ªN €ˆH €¸K €M\ €L €õþïÄBªºO‘Tõ€üïá‹š>úïàË¨ê €*ù €ˆ’ €EÌ €?ù €Ä €{í €èG €Ä(§N1bÕ('U°*RTÁÊTaF9ÃBeQ €a €Q €"a €œp €”‘ €”r €”T €                                                                                                                                                                                                                                                                p`ñ*üÿ*Ä*Dø:G„é|c      ÿ# €#ú €¥G €¡" €Ð' €ú €   €   €~2DgœõÄkN9¹y¥IL…      ¤# €È` €ˆ’ €…Í €ì €ÓV €   €   € æøä›Šœ�¯„¢„ªªŸÄÿ      9á €"  €  €Iq €„ €£c €   €   €BA‚"Ê§®ªíŠH¥ˆH…      ”” €! €! €q €© €© €   €   €                                                                                                                                                                                                                                                                   E\Ä%Ò$Q%_öEQ   ÿÿÿÿ   €   €   €   €   €   €   €ÿÿÿÿ   EßÃED$}DEÄñE_   ÿÿÿÿ   €   €   €   €   €   €   €ÿÿÿÿ   }O AÑ AQ EO 9A    ÿÿÿÿ   €   €   €   €   €   €   €ÿÿÿÿ   =QôEÑ %Qõ Q eNô   ÿÿÿÿ   €   €   €   €   €   €   €ÿÿÿÿ	>                                                              Y?                                                                                                                                                                                                                                                     ÿ ð   ÿ     ÿ  ÿ                     ðÿ                ð                 ðÿ       ÿ                         ðÿÿ ð   ÿ  ÿðÿÿðÿÿ ÿðÿ ÿÿ           ÿ     ð    ðÿðÿ ðÿðÿ   ð           ÿ     ð   ÿ  ÿÿðÿ ÿðð ÿÿ ÿ ÿ   ðÿ ð   ÿ ðÿ ÿ  ÿ ðÿðððÿ            ÿ   ÿ    ÿ ÿ ðÿð    ÿ            ðÿ   ÿ   ÿ ð ÿððð ÿððð ÿð ÿðÿ   ðÿ ð   ÿ ðÿ  ÿ  ÿ ðÿ ð  ðÿ           ÿÿ    ð    ÿ ÿ ðÿ     ð              ÿ    ð   ÿ ð ÿðððÿÿððð ÿðÿÿðÿ    ðÿðÿ ÿ  ðÿ ÿ ðÿ ðÿ ÿð ðÿ           ÿ         ðÿðÿ ðÿðÿ                   ÿÿ        ðÿ ÿÿðð  ÿ ÿ ÿÿ  ÿ ÿ                                                                                                          ÿ       ÿ                                                                                                                                                                                                                                                     """"""""""""""""""""""""""""""""                                                                                                                                                                                                                ð ðÿ   ÿÿ                                                                                                     ðð                                                                                          ÿ   ð     ð   ðÿ                                                                                               ð ÿ                                                                                            ÿð  ðÿ ð   ð ðÿ ðÿ ÿÿ                                                                            ð ð                                                                                              ðÿ ÿ ÿÿððð ÿÿ     """"òÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ                     ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ                      ðððÿðÿ ððð ð                                                   ÿÿÿÿ   ÿÿÿÿ                            ð ðÿ  ðÿððð ð      ÿÿ  ÿÿðÿ ÿÿðÿ ðÿ                         ÿÿÿÿ   ÿÿÿÿ                            ð  ÿðÿ ÿ ÿ ÿ                ð                       ÿÿÿÿ   ÿÿÿÿ                                                   ðÿ ðÿÿÿ ÿÿ  ð ðÿ ðÿ                        ÿÿÿÿ   ÿÿÿÿ                                                               ð                       ÿÿÿÿ   ÿÿÿÿ                                                   ÿÿ   ÿÿ ðÿ ð  ðÿ ðÿ                         ÿÿÿÿ   ÿÿÿÿ                                                                                                ÿÿÿÿ   ÿÿÿÿ                          ðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ   òÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ                     ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ                    ð                                                          ÿÿÿÿ   ÿÿÿÿ                          ð                ð   ð    ð  ðÿ ðÿ  ÿÿÿ                      ÿÿÿÿ   ÿÿÿÿ                          ð           ð    ÿÿ   ð                       ÿÿÿÿ   ÿÿÿÿ                          ð           ð          ÿ ÿ ÿÿ                      ÿÿÿÿ   ÿÿÿÿ                          ð             ÿÿ       ÿÿ                      ÿÿÿÿ   ÿÿÿÿ                          ð       ð   ð    ð    ðÿ  ÿÿ         ÿÿ        ÿÿÿÿ   ÿÿÿÿ                          ð                                         ð      ÿ     ð    ÿÿÿÿ   ÿÿÿÿ                          ð        òÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ    ÿ  ð   ÿ    ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ                    ð                                         ð     ÿ      ð    ÿÿÿÿ   ÿÿÿÿÿÿÿÿÿÿÿÿ                    ð           ðÿ ÿÿ ÿÿÿÿðÿ ÿÿÿÿ        ÿÿ        ÿÿÿÿ   ÿÿÿÿÿÿÿÿÿÿÿÿ                    ð                                              ÿÿÿÿ   ÿÿÿÿÿÿÿÿÿÿÿÿ                    ð             ÿÿ ÿÿ ÿÿÿ                         ÿÿÿÿ   ÿÿÿÿÿÿÿÿÿÿÿÿ                    ð                                            ÿÿÿÿ   ÿÿÿÿÿÿÿÿÿÿÿÿ                    ð             ðÿ ÿÿ ÿÿ  ðÿ  ÿÿðÿ          ÿ         ÿÿÿÿ   ÿÿÿÿÿÿÿÿÿÿÿÿ                    ð                                              ÿ     ð    ÿÿÿÿ   ÿÿÿÿÿÿÿÿÿÿÿÿ                    ð    òÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ         ðÿ   ÿ    ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ                    ð                                              ÿ     ð    ÿÿÿÿ   ÿÿÿÿ   ÿÿÿÿ                    ð             ðÿ ÿÿ ðÿ ÿÿ          ÿ         ÿÿÿÿ   ÿÿÿÿ   ÿÿÿÿ                    ð            ð   ÿðÿ                          ÿÿÿÿ   ÿÿÿÿ   ÿÿÿÿ                    ð      ÿ      ð                      ÿÿÿÿ   ÿÿÿÿ   ÿÿÿÿ                    ð        ð    ð ÿÿ ðÿ ÿ                      ÿÿÿÿ   ÿÿÿÿ   ÿÿÿÿ                    ð          ÿÿ  ðÿ     ð                     ÿÿÿÿ   ÿÿÿÿ   ÿÿÿÿ                    ð                                                      ÿÿÿÿ   ÿÿÿÿ   ÿÿÿÿ                    ð         òÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ                     ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ                    ð                                                        ÿÿÿÿ   ÿÿÿÿÿÿÿÿÿÿÿÿ                    ð       ðÿÿÿ    ÿÿ                     ÿÿÿÿ   ÿÿÿÿÿÿÿÿÿÿÿÿ                    ð              ðð ðð ðð  ð                      ÿÿÿÿ   ÿÿÿÿÿÿÿÿÿÿÿÿ                    ð          ðÿ    ðð                            ÿÿÿÿ   ÿÿÿÿÿÿÿÿÿÿÿÿ                    ð                   ðð ðð   ð                       ÿÿÿÿ   ÿÿÿÿÿÿÿÿÿÿÿÿ                    ð         ÿÿ   ðÿ   ðð    ÿÿ                     ÿÿÿÿ   ÿÿÿÿÿÿÿÿÿÿÿÿ                    ð                                                                    ÿÿÿÿ   ÿÿÿÿÿÿÿÿÿÿÿÿ                    ð                       """"""""""""""""""""""""""""""""                     ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ                    ðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ                                                                                                                                                                                                                                                                                                                                                                            ðÿ   ðÿÿ    ÿ ÿÿ   ðÿ   ÿÿ ÿÿ ÿÿ        ðÿð   ÿ ÿð ð ÿð  ðÿÿ ÿ   ðÿ ÿÿ   ÿ ÿð ððÿ ÿÿðÿÿ            ð    ð ÿ      ð       ÿ ð       ðð  ð ðð ðð ðð ðð   ð ð ð        ð ðð ðð ðð ðð  ð         ÿÿ    ð         ð ð    ð   ÿ      ð ðð  ð  ð ððÿÿð ðð   ð ð      ÿÿ   ð  ð ðð ðð  ÿðÿ         ðð    ð    ðð ÿÿð    ðÿÿ    ÿ   ðð     ðÿÿð  ð ðð ðð ðð ðð   ð ð ð        ð ðð ðð ððÿ   ðð   ð      ðÿ ðð   ðÿÿ   ðð       ð ð   ÿÿ ðÿÿ  ð    ð ððÿÿ ÿ ÿð ð ÿðÿÿðÿÿ ÿ   ðÿ      ÿ ÿ ÿð ÿðÿðÿÿ                                                                                                                                                                                                                                                            ÿÿÿÿÿÿÿÿÿ   ðÿÿð ððÿÿ    ÿÿ ÿ    ð  ðÿÿ ÿðÿÿð ððÿðÿÿ ÿÿ   ÿÿ  ðÿ    ÿÿ ðÿ                    ð           ð ð ðð        ð ðð ðð   ð  ð  ð ð ð ð ðð ðð  ð       ÿ ðð    ðð   ÿ                        ÿÿ   ÿÿ ð    ð ðÿÿðÿ   ÿÿÿÿ  ðð     ð  ðÿð   ð ð ðð ðÿ ÿ     ðð    ðð   ÿ                    ÿÿ      ÿ    ð ð ðð        ÿÿ      ð  ð  ð ð ð ð ððÿ ð    ð     ð         ð                          ÿÿð   ð ð ððÿÿ    ÿÿ       ðÿÿðÿÿ ÿ ð  ÿð ÿðÿÿðÿ   ÿÿ   ðÿ ÿÿ  ÿÿ ðÿ                                                                                                                                                                                                                                                                     ðÿ   ÿ ÿÿ    ð ððÿÿ ÿð ð ðÿð ððÿÿ ÿ ÿÿ                                                                        ð ÿ    ÿð  ðÿð  ð ðð ð ððð ð ð ðð                                                                                ððððÿð  ðÿÿð ðððð ð ð   ÿ                                                                        ÿÿð      ð ðð  ð ðð ððÿÿð ÿ ð ð ð  ð                                                                      ðÿ ðÿ     ðÿ    ð ððÿÿ ÿð ðð ðð ððÿÿ ÿðÿ                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      ÿÿ ÿðÿ  ÿÿ  ÿðÿ  ð   ÿð ððÿÿ       ðÿðÿÿ ÿÿ   ðÿÿÿ  ÿÿ     ÿðÿÿ   ðÿ   ÿÿÿ ÿÿÿÿ              ð  ð  ð     ð  ð ð ð     ÿððð   ð ð ð ð           ÿ ðð   ð ðð       ð     ð                  ÿ   ðÿ   ð  ð ð ðÿ       ðÿ ð ððÿ   ðÿ  ÿÿ      ð ððÿ      ð                  ÿÿ ð  ÿÿðð     ð  ð ð ð ð          ð ð ð ð ð     ÿÿ    ððð   ð ðð       ÿÿÿ   ð              ðÿ  ðÿ  ÿÿ  ðð ÿÿ   ðÿÿ ÿ ð ðÿÿ        ðÿðÿÿ ÿ   ÿÿ    ÿÿ     ÿð     ðÿ ðÿ  ð  ÿÿð                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ðÿ  ÿÿðÿ    ðÿðÿ ÿðððð ð   ÿÿðÿ    ðÿÿð ðð ððÿ ÿÿ   ðÿ  ÿÿÿÿ   ðÿÿð ððÿÿ      ÿÿÿ   ðÿ ÿ ÿÿ            ð   ð ðð ðð ðððððð      ðð     ðð ððÿð ðð      ðð       ð ð ðð       ð  ð ðð   ð ðð ðð               ÿ   ðÿð ð ððððððð   ÿÿ        ðð ððððð ð ÿ    ðð ÿÿ ð    ð ðÿÿðÿ            ð ðð ðððÿ            ð   ð ððÿ ð ð ð ÿ      ðð   ð ðð ðð ððÿ  ð        ÿ    ð ð ðð       ÿÿð      ð ðð ðð ð       ðÿ ðÿ ÿÿðÿ    ðÿð ÿ ÿ ð ð     ðÿ     ÿ ÿð ðð  ðÿ   ðÿ   ÿÿð   ð ð ððÿÿ   ÿÿ ÿÿ    ðÿ ÿ ÿ                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               ðÿ ÿÿ ÿÿ   ðÿÿðÿ ÿÿð ðð ð   ÿÿ ðÿ   ðÿ ÿÿ    ÿÿðÿÿðÿÿ    ÿ ÿÿÿÿ       ÿ ÿð ð ÿÿðÿÿ ÿðÿÿð ððÿ                  ÿð   ð ð ðð  ð ððÿ           ð   ð  ð    ð ÿð        ð ðð ðððð  ð  ð ð ð ð ðð ð               ð ÿÿ    ð ð ð ÿð ðððð        ð    ÿ ð  ð     ÿÿ ð      ð  ð ðððð ÿðÿð   ð ð ðð                ÿ       ð ðÿ  ðð ðð ð        ÿ     ð ð  ð    ÿÿ   ÿ     ð ðð ðð ÿ  ðð  ð ð ð ð ððÿ             ÿÿðÿ ðÿÿ   ðÿÿð  ðÿ ÿð ð   ÿÿ ðÿ ÿÿðÿ ð  ðÿðÿÿ ð      ÿÿðð     ÿ ÿð ððÿðÿÿ ÿ ð  ÿð ÿ                                                                                                                                                                                                                                                                  ÿÿÿ ÿÿÿÿ ÿÿðÿðÿ ÿÿ ðÿ  ðÿÿð  ðÿÿðÿÿ      ðÿÿÿÿÿ   ðÿ ÿ   ÿÿÿÿ ðÿ ðÿ ÿÿ   ðÿÿðÿÿð ððÿ ÿðÿ         ð            ÿ     ð  ð   ð  ð              ð ðð ð          ÿð     ð ð  ðÿð ðð ðð ð                ðÿ     ÿ  ðÿð   ð  ð       ðÿ ÿÿ    ð ðð ð   ÿÿ    ðÿ      ð ðÿðððð ðð ðð          ÿÿ   ÿÿ        ð   ð  ð   ð  ð  ð           ð ðð ð                ð ð  ð ððÿð ððÿ           ÿÿ ÿÿ  ÿÿÿÿ ðÿ ÿÿ ðÿ   ðÿÿðÿÿðÿÿ ð      ÿÿ ÿÿÿÿ   ðÿ ÿ   ÿÿÿÿðÿ ÿÿ  ðÿ ÿÿ    ð ðÿÿð ðð   ÿð ÿ                                                                                                                                                                                                                                                         ÿÿ ðÿ ÿÿÿÿ ÿÿðÿ   ÿÿ  ð ððÿÿ      ÿÿÿ ðÿ ÿÿ ÿÿ  ðÿÿðÿÿ   ÿÿ ðÿ   ðÿ ÿÿ ÿÿ  ð ð ðÿ ÿÿð ð ðÿ                 ÿ         ÿ     ð ð ð      ð        ð   ð              ðÿ ðð  ðð ð                               ð ð ð       ÿÿ  ð ÿÿ   ðÿ ð         ð ÿÿ   ðððð ðððÿðððð ð                 ð        ð    ð ð ð      ÿÿ  ÿ     ð   ð         ÿ     ð ððÿÿð ðð ÿðÿÿ               ÿÿ ðÿ ÿÿÿÿ ÿÿðÿ ðÿ       ÿ ð    ÿÿ ÿÿ ðÿ ðÿÿ  ðÿÿ ð    ÿÿ ðÿ ÿÿðÿ ðÿÿ  ð ðð ð ÿð ðð ð                                                                                                                                                                                                                                                                ÿ  ÿÿðÿ   ÿ     ð ððÿÿ   ÿÿ ÿÿ    ðÿðÿ    ÿÿ ÿÿ   ð ððÿÿð ððÿÿ ðÿð ð                              ð       ð      ð ð ð      ÿ   ÿð   ðð ð   ÿð  ÿ   ÿð   ð  ðð ð  ððÿ                                           ð ð ð    ÿÿ     ð ðð ð          ðÿððð ð ð ðððð                              ÿÿ      ÿÿ     ð ð ð      ð     ðÿÿð ð      ð      ð ð  ð ÿ ð ðÿÿð ð ð                             ÿÿÿÿðÿ ðÿ  ð     ÿ ð    ÿÿ ÿÿ   ð ððÿ    ÿÿ ÿÿ    ð ðÿÿð ððÿÿð ðð ð     ð  ð  ð                            p5 -- title:  tiny 5x5 fonts and editor
-- author: lb_ii, andreyorst
-- desc:   simple editor for 5x5 fonts with samples in Cyrillic, Latin, Greek, Hebrew and even some Japanese writings
-- script: lua

-- Tiny font's size is just 5x5 pixels stored in a 1BPP format.
-- It requires just 2x4 sprites/tiles per font.

-- Code usage sample:
--   lbprint("PRIVET, MIR;",42,100)            -- defaults
--   lbprint("PRIVET;",42,100,12,<TILE_ID>)    -- color + font
--   lbprint args: str,x,y,color,font,space,step

-- Supported letters:

-- +--UPPER MODIFIERS--+
-- |   |   |   |   |   |
-- | $ | ( | ' | ) | # |
-- |   |   |   |   |   |
-- +---+LETTER BASE+---+
-- |                   |
-- | +,-./012 3456789: |
-- | ;<=>?@AB CDEFGHIJ |
-- | KLMNOPQR STUVWXYZ |
-- |                   |
-- +--LOWER MODIFIERS--+
-- |   |   |   |   |   |
-- | ^ | [ | ` | ] | _ |
-- |   |   |   |   |   |
-- +--FONTS SWITCHERS--+
-- | abcdef ghijk      |
-- +-------------------+

-- Letter bases are mapped to 5x5 tiles,
-- which may be sprites of other letters
-- e.g. cyrillic, kana or runic stuff

-- Modifiers add extra pixels like
-- diacritic marks or just additional
-- pixels for letters bigger than 5x5,
-- e.g. 'Q' is good as "O" with "_" mod

-- Lowercase letters switches fonts,
-- e.g. "aPRIVET cIS RUSSIAN FOR HELLO"

----------------------------------------
-- copy to your code to use tiny font --
--                                    --
-- you can remove unused fonts or mods--
-- to save some code space            --
--                                    --
-- | | | | | | | | | | | | | | | | | |--
-- V V V V V V V V V V V V V V V V V V--

-- defaults, used when lbprint args are omitted
local LBFONT  = 65   -- font base tile
local LBCOLOR = 15   -- color
local LBSPACE = 5    -- space width
local LBSTEP  = 7    -- line step
local LBFONTS = {    -- font switcher: lowercase letter -> base tile
 a = 65,  -- Cyrillic
 b = 73,  -- Cyrillic Bold
 c = 81,  -- Latin
 d = 89,  -- Latin Bold
 e = 97,  -- Hebrew
 f = 105, -- Hebrew Bold
 g = 113, -- Greek
 h = 121, -- Greek & Math
 i = 449, -- Japanese Katakana
 j = 457, -- Japanese Hiragana
 k = 465, -- Japanese Other
 l = 473, -- Runic Slavic
}
local LBMOD = {      -- modifiers: char -> {dx,dy}
 ["$"]={0,-1},
 ["("]={1,-1},
 ["'"]={2,-1},
 [")"]={3,-1},
 ["#"]={4,-1},
 ["^"]={0, 5},
 ["["]={1, 5},
 ["`"]={2, 5},
 ["]"]={3, 5},
 ["_"]={4, 5},
}

function lbfont5x5(i,x,y,c)
 local X = x-i%8*5%8
 local Y = y-i//8*5+i//16*8
 c = c+i%8*5//8+i//16%8*64
 clip(x,y,5,5)
 spr(c,X,Y,0)
 spr(c+1,X+8,Y,0)
 spr(c+64,X,Y+8,0)
 spr(c+65,X+8,Y+8,0)
end

function lbprint(str,x,y,color,font,space,step)
 color = color or LBCOLOR
 font  = font  or LBFONT
 space = space or LBSPACE
 step  = step  or LBSTEP
 local oldmap = peek4(0x3FF0*2+1)
 local oldseg = peek4(0x3FFC*2)
 poke4(0x3FF0*2+1,color)
 poke4(0x3FFC*2,8)
 local X = x-6
 local w = 0
 for c in str:gmatch"." do
  local m = LBMOD[c]
  if m ~= nil then
   clip()
   pix(X+m[1],y+m[2],color)
  elseif c == "|" then
   w = math.max(w,X+6-x)
   X,y = x-6,y+step
  elseif c == " " then
   X = X+space
  elseif c >= "a" then
   font = LBFONTS[c]
  else
   X = X+6
   lbfont5x5(string.byte(c)-43,X,y,font)
  end
 end
 clip()
 poke4(0x3FF0*2+1,oldmap)
 poke4(0x3FFC*2,oldseg)
 return math.max(w,X+6-x)
end

-- ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^--
-- | | | | | | | | | | | | | | | | | |--
--                                    --
-- copy to your code to use tiny font --
----------------------------------------

----------------------------------------
-- here goes code specific to editor, --
-- you don't need it                  --
----------------------------------------

LANG={
  {
    id = "Russian",
    linestep = 7,
    spacing = 5,
    offset = LBFONTS.a,
    samples = {
      {"SXEW- EW_E() JTIH M@GKIH FRANC_U3SKIH BULOK,|  DA VYPEI' ZE 4AQ;",0,62},
      {"BYSTRA@ RYZA@ LISA PEREPRYGNULA 4ERE3|  LENIVUQ SOBAKU...",0,80},
      {"JI', ZLOB; GDE TU3? PR@4- QNYH SXEMW_IC_ V|  WKAF.",0,99},
      {"V 4AW_AH QGA ZIL BY CITRUS?;|  DA <NO FAL-WIVYI' JK3EMPL@R>",0,117},
    }
  },
  {
    id = "Russian Bold",
    linestep = 7,
    spacing = 5,
    offset = LBFONTS.b,
    samples = {
      {"SXEW- EW_E() JTIH M@GKIH FRANC_U3SKIH BULOK,|  DA VYPEI' ZE 4AQ;",0,62},
      {"BYSTRA@ RYZA@ LISA PEREPRYGNULA 4ERE3|  LENIVUQ SOBAKU...",0,80},
      {"JI', ZLOB; GDE TU3? PR@4- QNYH SXEMW_IC_ V|  WKAF.",0,99},
      {"V 4AW_AH QGA ZIL BY CITRUS?;|  DA <NO FAL-WIVYI' JK3EMPL@R>",0,117},
    }
  },
  {
    id = "Old-Slavic and Ukranian",
    linestep = 7,
    spacing = 5,
    offset = LBFONTS.a,
    samples = {
      {"NO4I VX PL@SKAHX, VO3L/'@N-@HX",0,70},
      {"DA UT+(HAHX PLOTSKIHX,",118,80},
      {"NOVYE M/'RY SUL@TX VAMX GRE()3Y KISLOVODSKA;;;",0,90},
      {"4U=W /()H, DOC_Q, GA?|  KUMEDNA Z TI, PROW_AI'S@ BE3 G#OL-F/'V;",0,110},
    }
  },
  {
    id = "Old-Slavic and Ukranian Bold",
    linestep = 7,
    spacing = 5,
    offset = LBFONTS.b,
    samples = {
      {"NO4I VX PL@SKAHX, VO3L/('@N-@HX",0,70},
      {"DA UT+('HAHX PLOTSKIHX,",118,80},
      {"NOVYE M/('RY SUL@TX VAMX GRE()3Y KISLOVODSKA;;;",0,90},
      {"4U=W /$)H, DOC_Q, GA?|  KUMEDNA Z TI, PROW_AI'S@ BE3 G#OL-F/')V;",0,110},
    }
  },
  {
    id = "English",
    linestep = 7,
    spacing = 5,
    offset = LBFONTS.c,
    samples = {
      {"HOW I WANT A DRINK, ALCOHOLIC OF COURSE,|  AFTER THE HEAVY LECTURES INVOLVING|  O_UANTUM MECHANICS..",0,62},
      {"JACKDAWS LOVE MY BIG SPHINX OF O_UARTZ.",0,88},
      {"O_UICK BROWN FOX JUMPS OVER THE LAZY DOG.",0,99},
      {"LOREM IPSUM DOLOR SIT AMER, CONSECTUR|  ADIPISCING ELIT, SED DO EIUSMOD TEMPOR|  INCIDICUNT UT LABORE ET DOLORE MAGNA|  ALIO_UA. UT ENIM AD MINIM VENIAM, ...",0,109},
    }
  },
  {
    id = "English Bold",
    linestep = 7,
    spacing = 5,
    offset = LBFONTS.d,
    samples = {
      {"HOW I WANT A DRINK, ALCOHOLIC OF COURSE,|  AFTER THE HEAVY LECTURES INVOLVING|  O_UANTUM MECHANICS..",0,62},
      {"JACKDAWS LOVE MY BIG SPHINX OF O_UARTZ.",0,88},
      {"O_UICK BROWN FOX JUMPS OVER THE LAZY DOG.",0,99},
      {"LOREM IPSUM DOLOR SIT AMER, CONSECTUR|  ADIPISCING ELIT, SED DO EIUSMOD TEMPOR|  INCIDICUNT UT LABORE ET DOLORE MAGNA|  ALIO_UA. UT ENIM AD MINIM VENIAM, ...",0,109},
    }
  },
  {
    id = "Espanol",
    linestep = 7,
    spacing = 5,
    offset = LBFONTS.c,
    samples = {
      {"O_UIERE LA BOCA EXHAUSTA VID, KIWI PIN'A|  Y FUGAZ JAMO'N.",0,62},
      {"WHISKY BUENO:|         /EXCITAD MI FRA'GIL PEO_UEN'A;",0,81},
      {"EL VELOZ MURCIE'LAGO HINDU' COMI'A FELIZ|  CARDILLO Y KIWI. LA CIGU()EN'A TOCABA EL|  SAXOFO'N DETRA'S DEL PALENO_UE DE PAJA.",0,99},
    }
  },
  {
    id = "Espanol Bold",
    linestep = 7,
    spacing = 5,
    offset = LBFONTS.d,
    samples = {
      {"O_UIERE LA BOCA EXHAUSTA VID, KIWI PIN'A|  Y FUGAZ JAMO'N.",0,62},
      {"WHISKY BUENO:|         /EXCITAD MI FRA'GIL PEO_UEN'A;",0,81},
      {"EL VELOZ MURCIE'LAGO HINDU' COMI'A FELIZ|  CARDILLO Y KIWI. LA CIGQ()EN'A TOCABA EL|  SAXOFO'N DETRA'S DEL PALENO_UE DE PAJA.",0,99},
    }
  },
  {
    id = "Greek Upper-Case",
    linestep = 7,
    spacing = 5,
    offset = LBFONTS.g,
    samples = {
      {"CESKEPA)ZW THN' VYXOFQO)RA BDELYGMI)A.",8,80},
      {"DY/DX = 2A@X + 12@B",8,100},
    }
  },
  {
    id = "Greek Lower-Case & Math",
    linestep = 6,
    spacing = 4,
    offset = LBFONTS.h,
    samples = {
      {"C_ESKEPA#ZW THN' VYXOhQO)RA B[D')ELYGMI)Ag.",8,80},
      {"hP g= 3,141592653589793238462643383279h:",8,100},
      {"h@-gX = S  Xh-Ig/hIg; = 1 + X + Xh-g2/2 + Xh-g3/6 + h:g",0,120},
      {"h8|g0",39,117},
    }
  },
  {
    id = "Hebrew",
    linestep = 7,
    spacing = 5,
    offset = LBFONTS.e,
    samples = {
      {"                  16 16 :Z=T, Z=T UVMW",4,75},
      {"WIA , VNMM VTQ[L( , EVEI EVC RWA RBDE EZ",4,90},
      {", OKIUWPN RPSM -( UL(GL(GL( RMJ . VL(KA IPL(",4,100},
      {"                   VHQ[U VL(EAB RWAL( WIA",4,110},
    }
  },
  {
    id = "Hebrew Bold",
    linestep = 7,
    spacing = 5,
    offset = LBFONTS.f,
    samples = {
      {"                  16 16 :Z=T, Z=T UVMW",4,75},
      {"WIA , VNMM VTQ[L( , EVEI EVC RWA RBDE EZ",4,90},
      {", OKIUWPN RPSM -( UL(GL(GL( RMJ . VL(KA IPL(",4,100},
      {"                   VHQ[U VL(EAB RWAL( WIA",4,110},
    }
  },
  {
    id = "Runic",
    linestep = 7,
    spacing = 5,
    offset = LBFONTS.l,
    samples = {
      {"HOW I WANT A DRINK, ALCOHOLIC OF COURSE,|  AFTER THE HEAVY LECTURES INVOLVING|  QUANTUM MECHANICS..",0,62},
      {"JACKDAWS LOVE MY BIG SPHINX OF QUARTZ.",0,88},
      {"QUICK BROWN FOX JUMPS OVER THE LAZY DOG.",0,99},
      {"LOREM IPSUM DOLOR SIT AMER, CONSECTUR|  ADIPISCING ELIT, SED DO EIUSMOD TEMPOR|  INCIDICUNT UT LABORE ET DOLORE MAGNA|  ALIQUA. UT ENIM AD MINIM VENIAM, ...",0,109},
    }
  },
  {
    id = "Hiragana",
    linestep = 8,
    spacing = 6,
    offset = LBFONTS.j,
    samples = {
      {"+' 0 5' : ? D I' N Q) V",0,70},
      {", 1 6 ;' @ E J   R Y",0,79},
      {"- 2 7) < A_ F' K( O S X",0,88},
      {". 3 8 = B G L   T Z`^_('$",0,97},
      {"/( 4 9 > C H M( P U W(",0,106},
      {",|U|D|@|H|G|>",230,70},
      {";'|R|A_|S|W(",219,70},
      {"V|0|P|:|T|9",208,70},
      {"<|B|?|Q)|K(",197,70},
      {"-|Y|C|/(|2|P|I'",186,70},
      {"3|F'|4|.|=",175,70},
      {"+'|5'|1|O|L|J|6",164,70},
      {"Z`^_('$|E|M(|8|7)",153,70},
    }
  },
  {
    id = "Katakana",
    linestep = 8,
    spacing = 6,
    offset = LBFONTS.i,
    samples = {
--       akasatanahamayarawa
      {"+ 0 5 :( ? D I N Q V",0,70}, --a
      {", 1 6 ; @ E J   R Y",0,79}, --i
      {"- 2 7 < A F K O S X",0,88}, --u
      {". 3 8 = B G L   T Z",0,97}, --e
      {"/ 4 9 > C H M P U W",0,106},--o
      {",|U|D|@|H|G|>",230,70},
      {";|R|A|S|W",219,70},
      {"V|0|P|:(|T|9",208,70},
      {"<|B|?|Q|K",197,70},
      {"-|Y|C|/|2|P|I",186,70},
      {"3|F|4|.|=",175,70},
      {"+|5|1|O|L|J|6",164,70},
      {"Z|E|M|8|7)",153,70},
    }
  },
  {
    id = "Basic Kanji and Punctuation",
    linestep = 8,
    spacing = 6,
    offset = LBFONTS.k,
    samples = {
      {" 2B^[_2/#+7O(]|A   5|B^[_   6|C   7|D 1 8|E 2 9|F'^[`]_ 3 1+|G 4 1+1",0,64},
      {"2/#6L()'$#^[`]_MNj0k-jH6,,:k-j?k?;",60,70},
      {"k<J()j0RI'8Xk>j>,kZj=k,VjI'6:k...",60,80},
      {"k<i,X:(kKiB'kYi>k>=cINTERNETk",60,120},
      {" S|P(Q'`R(| T",60,92},
      {"Hj5',k|Ij1,k",100,92},
      {"X UjSk|0 VjSk|X WjLSk",200,92},
    }
  },
}

ID=0

DECORATOR = {
  {id="" ,dots={}},
  {id="_",dots={{4,5}}},
  {id="(",dots={{1,-1}}},
  {id="'",dots={{2,-1}}},
  {id=")",dots={{3,-1}}},
  {id="()",dots={{1,-1},{3,-1}}},
}
DID=1

function getadr(chr,i,j,font)
  local c  = font+(chr%8*5+i)//8 + (chr//8*5+j)//8*64
  local ci = (chr%8*5+i)%8
  local cj = (chr//8*5+j)%8
  -- 1bpp tilesheet addressing: 4 tiles row-interleaved per 32B slot
  local p = (c//64)*16+((c%64)//16)*4+(c%16)//4
  return 0x20000+p*256+(c%4)*8+cj*32+ci
end

function buttons(idx,font)
  if btnp(7) then
    ID = ID<#LANG and ID+1 or 0
  end
  if ID == 0 then
    return
  end

  if btnp(0) and idx.i>=idx.w then
    idx.i = idx.i - idx.w
  end
  if btnp(1) and idx.i<idx.w*(idx.h-1) then
    idx.i = idx.i + idx.w
  end
  if btnp(2) and idx.i>0 then
    idx.i = idx.i - 1
  end
  if btnp(3) and idx.i<idx.w*idx.h-1 then
    idx.i = idx.i + 1
  end
  if btnp(4) then
    MODE = 3 - MODE
  end
  if btnp(5) and MODE==2 then
    local i = IDX[2].i%5
    local j = IDX[2].i//5
    local a = getadr(IDX[1].i,i,j,font)
    poke1(a,1-peek1(a))
    sync(3,0,true)
  end
  if btnp(6) then
    DID = DID<#DECORATOR and DID+1 or 1
  end
end

IDX = {{i=0,w=8,h=6},{i=0,w=5,h=5}}
MODE = 1

function showletters(font)
  local x = 0
  local y = 10
  print("all letters",x+2,2)
  for i=0,7 do
    for j=0,5 do
      rectb(x+i*8,y+j*8,9,9,15)
      lbprint(string.char(43+i+j*8),x+2+i*8,y+2+j*8,nil,font)
    end
  end
  rectb(x+IDX[1].i%8*8,y+IDX[1].i//8*8,9,9,2)
  if MODE == 1 then
    rectb(x,y,8*8+1,8*6+1,2)
  end
end

function showeditor(font)
  local x = 108

  local y = 18
  print("code \""..string.char(43+IDX[1].i)..DECORATOR[DID].id.."\"",x,2)
  for i=0,4 do
    for j=0,4 do
      if peek1(getadr(IDX[1].i,i,j,font))~=0 then
        rect(x+i*8,y+j*8,9,9,15)
      end
      rectb(x+i*8,y+j*8,9,9,15)
    end
  end
  for _,d in pairs(DECORATOR[DID].dots) do
    rect(x+d[1]*8,y+d[2]*8,9,9,15)
  end
  if MODE == 2 then
    rectb(x,y,8*5+1,8*5+1,2)
    rectb(x+IDX[2].i%5*8,y+IDX[2].i//5*8,9,9,2)
  end
end

function showresult(font)
  local x = 191
  local y = 25
  print("result",x+4,y-9)
  rectb(x,y,42,34,15)
  local oldseg = peek4(0x3FFC*2)
  poke4(0x3FFC*2,8) -- 1bpp page 0
  for i=0,4 do
    for j=0,3 do
      spr(font+i+j*64,x+1+i*8,y+1+j*8)
    end
  end
  poke4(0x3FFC*2,oldseg)
end

function showusage()
  print("   A ->",72,2)
  print("S -> language",168,2)
  print("<- Z ->",72,32)
  print("   X ->",72,40)
end

function showsamples(lang)
  for _,s in pairs(lang.samples) do
    lbprint(s[1],s[2],s[3],nil,lang.offset,lang.spacing,lang.linestep)
  end
end

function TIC()
  cls(0)
  local font = LBFONT
  if ID>0 then
    local lang = LANG[ID]
    font = lang.offset
    showletters(font)
    showeditor(font)
    showresult(font)
    showusage()
    showsamples(lang)
  else
    lbprint("aPRIV/'T, SV/'T;",40,100)
    lbprint("bPRIVET, MIR;",20,20)
    lbprint("c/HOLA, MUNDO;",60,60)
    lbprint("dHELLO, WORLD;",120,35)
    lbprint("gGEIA) SOY, KO'SME;",110,80)
    lbprint("e;OL(VJ OVL(W",170,110)
    lbprint("iDUkK:iVkKiS>k-",160,15)
    lbprint("j4|X|@|;'|D|k,j|8|0|,|k;",10,45,nil,nil,nil,8)
    if time()//500%2==0 then
      lbprint("cPRESS S TO START",70,125)
    end
  end
  buttons(IDX[MODE],font)
end
