From f43e90458c52deec10e74a7ed95c778a4eeb0acd Mon Sep 17 00:00:00 2001 From: Adam Le Doux Date: Thu, 2 May 2024 20:19:43 -0700 Subject: [PATCH] version 8.12 (#265) * Add regenerate button for blips (#236) * Regenerate blips without creating a new one * Regenerating a blip does not modify its name * Write Guide for lockedDoor.md (#257) * Write Guide for lockedDoor.md Write step by step guide with images explaining how to create a locked door * Fix build crash for lockedDoor.md The format for one of the images caused the build to crash. Attempt to fix it. * Fix another build crash in lockedDoor.md The crash seems to be related to the images placed side-by-side, but I'm not entirely sure. Hopefully this fixes it. * Add new image in lockedDoor.md I combined the two separate images, so hopefully npm doesn't get upset and crash this time. * Remove image in lockedDoor.md I'm not sure why the last image kept causing a crash. Removing it for now, and maybe someone can help me add it back later. * Add image back to lockedDoor.md npm crashed even without the image, so that was not the problem. Trying to rewrite the bottom of the file in case there was a hidden character causing the crash. * Removing Step 5 in lockedDoor.md Seeing if npm crashes without the last step written. * Update lockedDoor.md I'm not sure what's causing the npm crash. I'm just going to leave the file so it looks how I intended in the preview, and hopefully someone can help me fix the npm crash. * Add closing tags to img in lockedDoor.md * v8.12 updates --------- Co-authored-by: Alex Nash Co-authored-by: vaasut --- CHANGELOG.md | 16 ++++ CREDITS.md | 1 + dev/resources/defaultGameData.bitsy | 4 +- docs/docs/faq/lockedDoor.md | 42 +++++++-- docs/docs/tools/blip/.images/blipDiagram.png | Bin 0 -> 10403 bytes docs/docs/tools/blip/index.md | 39 ++++++++ .../blipomatic/.images/blipomaticDiagram.JPG | Bin 49780 -> 0 bytes docs/docs/tools/blipomatic/index.md | 41 -------- docs/docs/tools/paint/itemPaint.md | 2 +- docs/docs/tools/paint/spritePaint.md | 2 +- docs/docs/tools/tune/index.md | 88 ++++++++++-------- editor/script/card.js | 2 +- editor/script/dialog_editor.js | 25 ++++- editor/script/editor.js | 76 +++++++++------ editor/script/engine/bitsy.js | 8 +- editor/script/engine/renderer.js | 4 +- editor/script/engine/world.js | 2 +- editor/script/generated/resources.js | 10 +- editor/script/system/input.js | 2 + editor/script/tools/blip.js | 68 +++++++------- editor/script/tools/game.js | 1 + editor/script/tools/room.js | 15 ++- editor/script/tools/tune.js | 2 +- package.json | 2 +- 24 files changed, 284 insertions(+), 168 deletions(-) create mode 100644 docs/docs/tools/blip/.images/blipDiagram.png create mode 100644 docs/docs/tools/blip/index.md delete mode 100644 docs/docs/tools/blipomatic/.images/blipomaticDiagram.JPG delete mode 100644 docs/docs/tools/blipomatic/index.md diff --git a/CHANGELOG.md b/CHANGELOG.md index 24d77ff2..fc105237 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,19 @@ +## 8.12 + +- docs: add locked door guide (@vaasut) +- docs: add tune tool documentation +- docs: add blip tool documentation +- feature: blip tool: add re-generate button (@nashalexander) +- feature: blip tool: tweaks to menu layout & tool name +- feature: room tool: grid & wall visibility settings are saved +- feature: dialog tool: "none" option for exit transitions from dialog +- fix: fixed memory leak when editing rooms with large numbers of unique tiles (such as those exported by pixsy) +- fix: game data text wasn't updating with edits from other tools +- fix: added missing docs link to game tool +- fix: copying drawings no longer loses animation frames +- fix: reset game doesn't break title text +- fix: game & dialog tools were opening at unexpected times + ## 8.11 - game tool: combines the features of the download, settings, and game data tools into one tool diff --git a/CREDITS.md b/CREDITS.md index 60fa604e..4383e40d 100644 --- a/CREDITS.md +++ b/CREDITS.md @@ -8,6 +8,7 @@ - equa (@equaa) - Contributor - @frojo - Contributor - max - Contributor +- @nashalexander - Contributor - @pancelor - Contributor - Pirijuamps - Contributor - @ragzouken - Contributor diff --git a/dev/resources/defaultGameData.bitsy b/dev/resources/defaultGameData.bitsy index 7e9f55a8..13f36ce2 100644 --- a/dev/resources/defaultGameData.bitsy +++ b/dev/resources/defaultGameData.bitsy @@ -1,9 +1,9 @@ Write your game's title here -# BITSY VERSION 8.0 +# BITSY VERSION 8.12 ! VER_MAJ 8 -! VER_MIN 0 +! VER_MIN 12 ! ROOM_FORMAT 1 ! DLG_COMPAT 0 ! TXT_MODE 0 diff --git a/docs/docs/faq/lockedDoor.md b/docs/docs/faq/lockedDoor.md index ec6f2810..a8de4044 100644 --- a/docs/docs/faq/lockedDoor.md +++ b/docs/docs/faq/lockedDoor.md @@ -1,9 +1,37 @@ ---- -tags: [stub] ---- +# How to Make a Locked Door -# How to make a locked door +There are many different variations of a locked door. This guide will explain the basics. -:::info This page is a stub -You can improve the docs by [expanding it](../contributing). -::: +demo_gif + +(In this example, the door is not open to you unless you have a membership id card.) + +## Step 1 +To start, open the room view and place objects around as you like. In this example, the cat will function as our locked door. The membership id card is the key. Note that the card is an "item" and we have changed its name to "card". + +room_view + + +## Step 2 +Select exits & endings in the room view, and open the exits & endings tools if it's not already open (click the little arrow next to it). Create an exit, and place an entrance and exit before and after your locked door. You may also place these in different rooms depending on your game. Click the gear for the first exit to add logic for the locked door. + +exit_one + + +## Step 3 +With the gear selected in the exits & endings tool, you can click "+ add lock". This will populate the dialogue editor with some simple logic for your locked door. + +exit_ending + + +## Step 4 +In the dialogue editor, you can write specific text and logic for when the player has the key and when they do not have the key. You can adjust the logic depending on the needs of your game. In this example, notice that we set the specific item to be "card" and the player must have at least one of them. + +dialogue_editor +dialogue_editor_two + +## Step 5 +That's all you need to do for a simple locked door! However, you may want to adjust other variables or items after you open a locked door. For example, in Zelda games, you lose a key after you use it. To do this, you can select "item and variable actions" and add some logic for specific branches. For the Zelda key example, you may wish to decrement the item count. + +item_variable +item_variable_two diff --git a/docs/docs/tools/blip/.images/blipDiagram.png b/docs/docs/tools/blip/.images/blipDiagram.png new file mode 100644 index 0000000000000000000000000000000000000000..47c3ac70ed788ba3c1bd9c88c207c66af4311b4b GIT binary patch literal 10403 zcmd^lWn5g#vM&}i1Peg|Oa>c5aDrPxaCdi2aCb=v8Y~10Zow_MyXypJa3?r}4L0y5 zd!L+}d)~YI_ul9Cp{BcMb=B&wuIl>N>JC#kZ&yb|WUaNVe9xQt55n0}099uepXajE^;p3wrk7bMZ=<3#4l}hSHdsQ!9%(%@= zyVb#L!OM2;^LFr>dD|x4(%QKp4eJ(LP3RLmF>yis2WV)WG5Aj4qiBX8hhRY<(TQi9 z&lR=tiCOTlWh-Z_=a%uwi53dd%VR+yR3tdY8rmz|KPWO2t|~*P%osK@4dX;zq4W?O z|M7~Pd`{@-SgVj0`#~kz58{+ahR0%sEn!myASl-)m&4 zN$*|X0~QfomQ4fqrQbG9`KB_c(M~(;7ca!3IwhD5&81Nq7sCz>^$YzrMi~m#tJX6@ zz_gEU)@^}Od@cohi=5GWvF8ajyXRY57C5p}H@swL5-p=<7GZH9SyJ*BkIvU&J%S&i ztqjBGFe+yRA{YA#kD_8orA&- z=hNn+@%!wV^WLf3y;d2`UghXjJ6{hGAKZD~oD(GZDMe0HThHPo4oex>DV$>X6U;AQ z;8bCBrky$)OcdmqglZ|ore$Hn+fcPKKa~)Kms{LZN?)O!k~}Og|0Dsw*J^ynW!tay zvoQPVhaEy|`JVEpiauG}LV}#4)0)l?DJHeWPcHd{np%q$5;8BzVslW)L_=K`Y^-}e z#bSWzi#eOVBB%H`%*A!c2m{5+(%EYqdm7gQpsNt%mt~~L%hTFS`ho?Hhr{VF;)-6G z%i^0MR{(2i)a5nC#g7b)t7XQVbVMH$QFLgi>6v1!p#|cPs(qWjF5~A5%*?6siK1Zn zVlpR$x>7P4l{lBN=RBlNQ2Nw0S7j=3imMWNMmD_lP=7{*s1e#d?1h?&75Jet7nCTh4KSpquii&!1TiukRA8Ku;3dg7&|nN^jSb5lpQx%PX}uRS6;bw^>D=%j00zeN zcXKpI_0NKc2F(KY!i)n8i7@&VGj73P{v4$zu?ZD#ovKmZo!GJ%WbfMfs-%$)$io(# zh=75C4;!bT?pZm`cP{YlgaNx-1u71^rFutS_VAS#jgPYWTHV)HYLTynqRL(M4kCw0 z2Fy)Fur3bTQ`jEm;PrNUSScViD{5<}gy@wjAQ@mHoT4Kw0;vGHD?kQRXcw=?VM5|U z{JbxJlZsUE`VVq!M&lM-ps7M$iFb%0c;EC)0crA|h}YMYEp}jXVZo-#)e$!B7u2^d zovRWfwQ<}GkvsD;dC9*R9&8+{C1=J#ZNsBMJh$POqVLS2Kp$IJSUAw&e(c1ZGSb># zN@UI*+t_H}CTXf|!iJv{gN9yvRsDk=Hou?XEZ{vdGBP@%>A(7Y#jB;b4q&96JyYk2 zZtK)GV#h}UT88vFuY6yTpb6rpB!8WHD}mznf$+_N~YpA``yaTO@MY$#``@lRZ`?U@GyOIO)Gzkzm>O<9Kx`&2pRh61qXu#i7{Ta@i1&lyP)Vulw~L_5dc_z~Ve2v>GYWcJ_lD zVm&`Pg2i_aUE{-RNx53KtPK9{|D2&NGO8{=xl}-1DbdmJ(@cUK=56O(-5X9C8 z@V0GVO_+-$I*s(5jn6j~ViNMSuPXo|5{QzjH7DTCt>y3nlo*Lke1cj@rT5kE?M*Aa ziEtxavuz%bO2)c1FmcpkZ*x9MN#a4)HU23&gX1e+8^6^hXH(=BXCD}sf?I6=+637n zpg8C~XoaYA9S03X*!WT~rAL%$N}Y=fBZIW6Z>hFHTJUZ1s6|n+^&<*=o9J>jTD7sv zLQ{Ci!ehAd9fW#Ex*~N^SE+<|oyW!aYh4DFqhaL9h>WQ0OkboM)zgNSH%!1l0O6Bl zpZi^X@HeO~y!SCFLur$SHBFe0=rGrm&gOe0D#J9cdT5TmE-e8bYpmTujkZ#{Un1;q z_XF6utMNsn=jg+A8h`!sCK!n&BlA>{_oKHMiU5Li*CF1;@C-W-HfOivp!kfVN9o5( zgc+Eel`4uY(5devb&;_7tF6-;A}W7XQU55x06RKIN&Rf^9`r=za?v!$zNmP!ZXCmA z(v}^63EHBy2@tEkcBVO|F-l&`6%=K0*-rkGeA`XakNmrFo#tjJXwC(*c^ z-tKp~NjyQ`H)T|pY>7p&w`Eg7?gXO!vJEL%K-yIilKrGa+7VA{cxv68!UzuK{qWpJ zaJBCjk)Jz@n~FrDnA*4cJ0_Z2=+}CdGtG`ky3r!aI7kJEKtAWP(?7UtwcFUp4;y_H z@&FyZ_Et|_Jbz?*Jw8+Zunw{`mSanm&5x{vh}8%>NALP!kM`R&slbx!+uv7A$Y);j zy$s-PShlE34G&RcbS=BO>oo2#=g{Qwd-%qzk{kS&EJWy~B@Da0z4a-QfO-guh=_zV zwPOd-vVE4KZMkYE4VI#%T)-pvTRNPpOp4aZKg1Y7`krPqHHOgIox)eD37Ez8qyP5wP626gZ@&oh%pJvnq#Nr!`TvQ|de4Q^d@RL0FytCSfUK##pQ1~4nI*2zH-}nQ60)Ht;DXlT!PITq*ulkSW!u$zTeZ3o> zv1P3Hy1#X&$Lr?gbU!|ykI`6vaiyXS_-i14M4R7&f0fXl7lUJMmKrl$+|@#l0A4Z)Ard#Kj}$PWLuf#0_9Kb6-4A1obgeP8*5 zknH}g4u8<`!?IGmpGRoz%>QJ_e?CKWPVcBWM~0^%)j#+fBWI!`l*IY}gOXax6_!Gi zoa692{W7L{?2)~2|7AsP1)?kT2-o``LCmF{Kj7yY@fH&uojWQ#d-PzkrGTxx|Q_b#^+siodm< zY$o1O)N&@hZu&ZQZSHKTxQb3_&TaLVt04SsDbN~T{=;wx`ERVT6oP2_e8+Z0|24ng z7W|*(nS1Bi*H)ehcg#O~A?*Ao6~Z>pxc;;M|J43}l#`rpKs*-9-iYi&@oThy8t1RN z0?eHwCCorELZY*BQE`F13%}xPznK_=%Y{(KjOUQfwqEM6g^K3(88xJWiJdfbObP`x zhQT3#q||lvV1MVlMX%@ylkAySq7IVby0~?k^VGoGZ^sF0Rcg@C|Oxp&d(z1 z^+f|11-##Sc!a{Ue)0AU^hBcdNchOBtB=gpJe7u;V{*?cX!Neq^Thf%@m*LXc0kH=1#UhRq@}78AF}*Q=%UO~t zY(YOiKLWdCQ3@4$`SsY+A%Zg zz+*F1$(|^g^PC2D2atwp#k&Itjrt5pI2I;FI*|ac#CxW5&O;sGqPJX+6#63nTl`Il z#n2WgI4b5rWD4cR0NIICYLQf_qvOq}&RO3Ki5&*Cw9ID*=y}T00jy=|4&(yrlLVJuAReCOI-{al5^Zo*x`dND0+TPZcuS znq=SAaf!%uQ z6<2*YA)l({BX|Ybolb@~R+Sm_3f~O)y!~);L%r z^*INxoXOO?5uMT?y1<&R+d>s1B${ieImqn7oQ)Z5c=bA!LhVK((nr@tj)Ra(s%%ieU%-H zOf?aHw49O3Nl&9e%;PYe-F7fBn_{$gdUyUaV)f(X7^>v3m#1o26253?sn_zS5PCfM zh)UcDeqn?U^Ro1Ls~pyClbk!a{p zwXR5&-QwKwu@Qf%H+f%F8YVFCYuDOQ5*aao5m#AUuEkv`x%OJ)BX*^0>32WA($A@5mK6PkO@?4Q4gRrUck3`{$1$ zqHrH$6s`B>;_Na5IV~j%QF>luK}{z-HhXX_L@{ZGS}kV-mc{YZt{$NG6G{|+(H^^!(!kj=Dn7LY z4ht8yTqi#F!)EiL1UpD2~0yyzGVT8Y_< zI4($Kd|K;!g5E;n+o#dpyGF#ij=8CHuWeQv4ewps`w2xcyKq8%H*%}ZvYDAd6-1~y z3Ru`C0c#KFa?Lde>D~?sT+Agiq7D&u;(u7H71_LHNyZobitqU|k_TTF?e>QTUJpvj zw3Tt#SKt%*^K|{(d>I#9^aM#J@{e32lbhLXe3Vwm{8Z_9OF)~Q$5HUWH& zfj~1zWiI0s`VF4*_Gpy|#F;|Ss&aj;g6Lfx(B(oGbL-ks#D1k@jCI+{9N{iqL}4gs zfnTxa$8=|}a7R3Zfm2TK2Poq0kqKXG%N;!4wgvX+wC#NC>YGf$6B4AA=`dwde~}?< zv1b7YGvD#)>(pfUhThU4T#oJkz?6ej+ge>bck`spg5GED#Dc8mJYn#J@pUTy*7e0J z(nNf7A+Ph~Db{WG99;W-e!I|-dDHZhPQWL?VzZ`mzKx|p_l5{)LQm1aA6}}OuP~DC zivgsimpH%PvsboRsM3RTHkjgMHK=L!q0hotwDcEyWDF)fJT-MCr}dnat>rc6H1SQt z^5XhI5^RC^=~@)Db^`2%S)XVddT_T=0`?yasu=k9tR)hUfCBMbmB=QC$}6>e*W-0M z-V5Yp6AL1IJr7zGBZe=EY3%VZ<2$!*(+peZ*SCeM)mue$Ow%>d0jtotyJ5mkJS-f7 zywSx*_`u^kdsQ6;i6Ct!*+E;e5t=|P8CgaT0%c>LUjNQBNARurX z>Dmk)Sy<3g?aQ=X4b4KeyW_52?J5g=QNK&$92LlwpCm}9+%>gGO;6B`P(%OD$<(~C zH}iSIqC)nxBp}N#e-il?5 z#SI$v1uQH#TSKz)@51<$%ce1VS)TzHyey95$LUiV$}EOpxm?UmB{KJK8(P`g434x) zJfNmTu}@iiD-H*P7~i~+UyO)4zbo9@#x-Xwgtrce?Hl@=CxQ zKWqh6{WN4PnRU*}zMTx7S-y;t(>-Z23T8tlvQ)IX-3p2xq?a2Z3{gl7imA*P-*#JhlW6D$qn6d{tw<9JJ_3>S;K~9P9afj^t*u5nLmy9}M$?1Bv49b3 zEE<>LVuARhUm20d7ZS^w6gt!9xfKum8UM3%W(}6La_B(Q+t0~ zGx)|p7lw$i5dZgy9kN2bjePtt9ig}(ah{VADPrn|*R*Ds#<%%`Um<7eW8UC&W0a3h z7P%Xf=`~jbqL>6|%eBw$PHQmI7ka}pxOWG_M1%B7KC=hn)4x3IFdy#4?a63XH^P^q zCZqu^60qdEEP%uHPr$4Z<;~Ewv=@Ue5!7C@IT?N}Os_tltymh88hV{q=-zA6M2t4B zk8rUrTZm|>%V~Lpto2dWjZm@B%Uw=t^R)TAYFas*&W-fuRWJ17e-^2)PMqeBi!#Xpr zsSIVV%oOO~R<&Grw@I@e!mk(m*Cmw}mb2YI5`^lwrC#%7?7Hpb;_Shvq$yfAY0Rt3KoT_=p?0f~mo! z@T~nq4g~V%0PHcQv%OFl8jNnj=EC(_QHu7Pe;VZhjj;C~F-y5COWLQ;176O1?bD>e z{bnux4XikLcuDN*PZYsH7=N*jrYj);ZkX73%J=}A7RcVc`AtsYMnQqL+$J0Z#Wg&(Cs$&$)Pgq4%}LR{1C;A;=4`$- zG{9_in7Xa#RGt%V_V}FTAh5w_dZHk1dHrRnhxH?p>l+9Or5f0_D(}z)ds-a5E>|m_yJO)<9B{6>Ty%&%8&bX=C&-&^;;<~G#mMrd$_G5<@u``SS|1}RbLjz#;O-^ z%KiMY0b!25-j&nbg97J8jBziYW|y9#nf6|AN;qdsCZpmx_aa>tgM+j`zPz? zk0?G9bkhWuF0|eQG$&b^32c3?Ru1_S=r&q%=^|e7!5i2ovXi2MTdQZZWUoF1fa?sH zr)O`oJMGgl*k3PhzCuQ-Zg`=vm^x@$s#98MW{u2Ae+~oV#qjV@=w;jwU=LMVV&LLe zd6g>Xb0wiEJ1?j5yWYo;a7zRHxO_9;ui}u_-t88_PKUmzJP{(J8s&L>Ab`MWHD^5p zf%v-bpy-}!lz5S0kIAvQDQ+%Aw$}~F;(l(Nj8S&gyXsrr3tFk&uMe1lWX*0n=V?q( zdXSZkRTIADap^%^#}~Y|qgJ74KEe1B&kz{r;l%lm#Oz~%C!jp>p@7bSUb!%=(iy$U z6#?a+s%07=%~mCB6%6!S?zfgkCV^aaYL-uzt|+Y=DXzbeYyqY?t{c@DfYSzs_Y!-f z&;pUx-W{lJD;xRwWr#1Y?b+!B+*=Kx zo$}g#b11O7Rm!Qa;2S?>8uz9X|G_K3@o0x2S$a3L0Qjy#ub>#edb;CXwAAp6^6)f3U{Se`Hjk_>=NiTA$3L zp7-)uBx^QTKa$6jUupRn#%c9lo=Qb99B?oq3poGDoAlH!%BUsTzveY@EP3~WNBP2= zk4{t>D^W0%%gB%-BI~Igxk#OG-AARikr*>1Hq305Z7qong#$uI4}QoPK1`gR=~LT} z^gpXNeYSgHTkD73r@RzOq$&RW`r7v?_|B=MtTBlsGb+`|(n_J^Gtg%90uG4lSxV8X zdpAEN>sn%{Hv6sNBM3BiRASTOb-90Cy189k`X%%;JLhDlEl36wk(P@Fkp>nJZ@I)CHm*TAk~jYFORKg1ll=6MvaKw9Tg5(nOfLg+`oS&($-$cPpbz(PB2l03w5m6A?)}DwV?)r* zA_l+40G|cg3KfAW@W!4K4bTPRuVrvuvdfOa=A&9#mZ%@$Q2KgXT}1cE9z4a6;5D<5 z7~8g7^2%2Fl5n>`v+C!RrFS>4rQ#zJqX+!r8_?&uZIm80n+ylFwLTjejFO8Y#Ch1LstZoX7Z?7zV8Kh0 zF2%4{f{es-JkHDBL00i`h~?J(JhyyzSmOhOAiLEaKz00EdOGW|tpPcxlL4h~LC9x# zF+Cmcy@rF}67s`ytd@_wuI-d>d>eD*SID~yQU883%FHtbN{2qBjKjA?^}V`^;`J#4 z!PkhZ6YbCc>BHrUH%OASm&gm((F(Q8BjCmNsu}cPD4OOo1zRIhMTZA#lmBWWumB(N znAc^}G+VP}okP|A-Cv*Z`QOO9YXmjk*)C5|@tDIGyrOspmSG6mhU-Xhin zk_RkOs|PQJnQb^i&7^6*Y|BM|`o286Y#|7fUCk3xPvp{Y)H)tfoj4?=uQOycDq&c@ z?ds{;uHl!Uh%HO^)fD{_01TYnEw1y`jPuS@?vtAAilxW!uyX7G{fJhLwu+H&g2$Rl z(r{3DJ!kqlMRM5k{bnZl%$xe#6V)6I&F_bz(-Fh@Te3{?#3H49&<_c)+ciu+)0VS| zEJZNdh_8c>1X?*%bYM&i{*HwC1&*7QBU=RMEHxx5twdh4*rVbj&18qk{pa@mq^^uc z(Au?pxmJq5+nhcR2HK5mXY5q?mc)G26F{LUByZ5xyM$&NmpqR!JgD=>ByyGWr6k@| zGL~-RcBl4Kdr<5fQ8S;4HjbOo4dmR-zG7|D)!fCI0E=5;bFF4Wr2?n^>a4o%)jcH# zn&hd0FjLys4x?I-w&@K&CDQnGiqtRU6uI>THWH-y8r2Jph9!?QDu^`)wNt8FOCS#B zu7^oai7G9sn8Io*^IjyT4Cij&LoJ|@Bo*jkTDIm~n>waa9@&-VK6=Wc*{PcHmd40) zr<0coopBJ;B~oSI6SaeekNN(0gULRY7pOU#l+!Z3!tX&qCPO~Yo&K=bw)Sd$*?u9;#B)B3>o5!I5t83r5*c6)9N!% z8N+2-ZySgCwS1j1yBMhL$(Wztu3mz#B3*T2w`4XGz;10&+tPS8s42!b?sy;Q<|fWe zL?ilQLreaW_ojoL&H z)6pK9qoU4vC?kWnRw17Y5ccMN>uAwl(Ya{pf*!*Jv_{wrWBkT-@#rDbLY()3Q=0k) zt0DzCkGYIZw#XYy_P9jbIS2NmR0YYvj-ns?($cZP{XH{^aTy~*iv^p~Q(a&3denUV z7>>h4=-k}Y(RwM-@_8eK`%60n4;--#_}|^V0>{aBW2LU)gEAWXG22_}i9r(2RQh|c z$)X(EUpT%{5JO~K2Ne_Qp+pWnu;udd(y22Clc=77351bX*IJAuj*X3Vbi5WyrTS~L z5e?_EZlz!|Y7ZrV2>E0Ez0(MIC!phvUJe=F6&*osA^7>+2Ell0}z?#Ia9V)-p1nMu>`eVNKU>6`1R8T zhKl*b4$Qf8Vy@8XWV2gOfBpQK`(q_PbMTE7gxL1W4*b&zZk)*{H#L7gC0{$1r^Z>&E literal 0 HcmV?d00001 diff --git a/docs/docs/tools/blip/index.md b/docs/docs/tools/blip/index.md new file mode 100644 index 00000000..a375d0f9 --- /dev/null +++ b/docs/docs/tools/blip/index.md @@ -0,0 +1,39 @@ +# Blip + +## Description + +The Blip tool lets you generate sound effects using several built-in generators and then tweak the results. These sound effects can be played when walking into [sprites](../paint/spritePaint), picking up [items](../paint/itemPaint), from [dialog](../dialog/soundActions), or as part of a [tune](../tune). + +## Features + +![blip diagram](.images/blipDiagram.png) + +- **Navigation controls.** The top row of controls are the standard navigation and editing controls. + - **Blip name.** Name your blip to easily refer to it in other tools. + - **Previous / next blip.** Navigate sequentially through all the blips in the game. + - **Add new blip.** Add a new blip. This blip will be generated using the currently selected [blip-o-matic](#blip-o-matic) generator. + - **Duplicate blip.** Make a copy of the currently selected blip. + - **Delete blip.** Delete the currently selected blip. (Cannot be undone!) + - **Open blip in find tool.** Show blips in the find tool. +- **Blip visualiser.** Under the navigation controls is a visual representation of the blip based on how its frequency and volume changes over time. Click anywhere on the visualizer to play the blip with its current settings. +- **Playback and generator controls.** + - **Play blip.** Click the play button to replay the blip with its current settings. + - **Blip-o-matic.** Use the blip-o-matic dropdown to select the type of sound generator to use (see [blip-o-matic](#blip-o-matic) for a list). + - **Regenerate blip.** Click the button next to the blip-o-matic dropdown to re-generate the current blip using the selected generator. +- **Adjust blip pitch.** Increase or decrease the frequency of the notes used in the blip. +- **Adjust blip duration.** Increase or decrease the total length of the blip. +- **Adjust blip speed.** Increase or decrease how quickly the blip cycles through notes. + +## Blip-o-matic + +Use the blip-o-matic dropdown to select different sound generators. The generators have names to indicate the types of things the sounds *could* be used for, but they can be used in many other ways as well. If the generators aren't quite making what you want, try using the pitch, duration, and speed controls to tweak the results. Experiment and have fun! + +Here are the generators and their descriptions: +- **Pick up.** Sounds an item might make when you pick it up. +- **Greeting.** Sounds a sprite could say hello with. +- **Bloop.** Lower pitched, rounder sounds. +- **Bleep.** Higher pitched, tinnier sounds. +- **Magic.** Weird sounds. +- **Meow.** "I'm a cat." +- **Random.** Who knows??? +- **Mutate.** Make a new blip from the selected one, with random tweaks. \ No newline at end of file diff --git a/docs/docs/tools/blipomatic/.images/blipomaticDiagram.JPG b/docs/docs/tools/blipomatic/.images/blipomaticDiagram.JPG deleted file mode 100644 index 5e4a09d4798000c79f76822418eead6ebc0b6d3c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49780 zcmeFZ1z1$;yEiuw9+9h z(%m&oybrqnyUyABod5fs>;10pd-r&)VXawf*7H2~y5o2M?t8?4#eajGRg_bZgAfo9 zKpud95d7rXZ?f)|W)O(7GK3QXfsjCs6I_EF1AD~aKrz4)avbavfPM9Z#G}8EGZ4tx zwnh3M=TCuSX|O@)7r`6J(cV9=eC)3uluDD;Xn2XMfo9+h=||ze?t`{ua6}6532aTQGfnf^FI>!M*{yy;2#P6 zBZ1!}AiyUeAi*at!7p}+UqnJ!KtfOe@}GSMfyh8?AVv^Nh!f-pgy1L1Xe?Y@93-Gn zJ7-=a6Z?mzyvFvnP9uq-96H#G)F#$9Fhs?hWZ({uG=nk$-l;s&s-obVm;MjD{u$)o67oOd`bS*~$)$w|_a6l7!+ob=T6od5O<-vBvB zax9nN9U%cTQz`a0!9r|y#%S%oIqHjb9|V`cxng+2St)V2_5f35guuL0o zFh~jFfT+o8C94;eRR;~s?vB&FK=sS8<`l3WzD-E}5U0FM6n8b{6%i%T3^pT?I62GU zhV@0agUFV1&I^&6JQ(?RW23AW<2sThd+1pm4Oj%39-L8De;!wTvsx%CB`DmFlCpoS zE~-Y=!;!L~6*|bxt@1**EX9+nDM66`?#9(B z&1{v#(%-99QeJ+@`!eGddvf@$Z+Mf}rYE_Is^U)dtTZd4RjMDc6o-e*KdfGNzKdjl zy4CB33%f9##zUr)7T`NyP}_nAQqF%mHV?!JVd1l4n5$qm4R2F|u0oDBDX{{H;(g0g z!~WSh?%yp6;>@6Q^4GFLJX)nBP8nx46v!5^Y-k6O2Mh15uY~5>rZ4c7^X9K!(ZP%| zUT>vg^hIejK6=ovHSAlwc*x9dmyU<{mMB%|misHP^%^C3$0m$J*OtEt-U=z5l1%uvy=3S(#pCs%o@JfR%7}+$z-*{knA48sfx`{4<5@J*8-^J~ z{V%mpT;A6X4ruNbE$TXrUWv7-_)I(VP)+d6S|~!dNT;6Mx?`03jFqztO}Q`yS`r_%%k_+>_whcpt0WJ^N3*qpXnQg zsoNOOz5K)Pc46O7JB@!BlqsdsYMWJh^Eu~fU{jY_m z%pQCgS7Ior6{aq&%j?cc>UkLFW0cqD z*QeJj$jzw+GB5+W+XL;QxI80K;9U56(J6J~gb z=AL+ySkto0l<;bYXlnb#o@rDJM*P`+*{Wwhn9sRNHCYPaDE@n!rh$@jY5(?tjVpES zlBGX`C}m5B=QDDvG95-ix3C+*sgy9=G8$rfnyzyP^y;risU+rYZ^o48(rTBD)o*Dl z_u2}DNOLhrK(7p+d#>DAD43KMIgV75)v&E8Is4ON{hUbfyS`i(7UBf$t3Fiwk_m|{ ztawOo-vq|MHL7#JZupu3cPb^jR_Sry&{J>E9cX%abiZ`4^}I&gos!!hB0UpA{vi(P zKOMWR2Q3l$MoJ#HR(U4bJz4i_N)Q`|^0>-!+rU>~{;$qO8Jw*4*P^}@{ERCppn>tC z?_H`Qi!M@MI~wl0OeX9WnB0^+lCiK)FJE)JoxZ|MC3(y&lAY-ZCi~E`w}&S;t~Yh% zUh-xx4nAuSoLum;;_vH(6<~Ef zvthPE{j6h&6Jz#UqM=N2&vWq*t{^<5;dL@@WIs`pLhZ)W#5{L|(gsoW`@H+|Ero6%Ggqsvf$d`TCo0;U?G3 zkGLBH6FaSlSD7oBm}@mYC-OtGIqOE?PViY(SqgQ5lUGxo{O!g;Mnv-vvLlrA5aErG zaC;yTWdA040^SkE535HdUi^>8Rd@&;q6I~TMGPb6w~=cZxAN8g<RSf>^d-jrcJ~eT)ify?8ZrGHf}}3oORc zn)AiDbfz8EWG;^CAT=c={>PkCe_X6PlpvFvyxxp?UMr7>7|GxvDGz^@3AHP2OyDM% zTmTBoA5GxqwNz|LbaRV5|?oEU6c-9_Kqw@7uys_xH%c#+N^#Pgp3~p=+1l|*o=4HC5yjeIaeMlBUuPlmlAaoF3EuN zW~Psfr%(^LfAnK#HLGy6G>FhmNvW##@8R1!bMF4LXWpuc;cu9uji02l_66%UY$Riz z7~>%YOK>b>6!J{E<+Yp4u{s@Oa>N@11I3Sl(p;j(Lzd8kc!+$uaiCT@RL;#54_R|T zeL@NP1YJdj^8E{tq`WH5CI}=7g|H*#V(zv&vXWl1WNzBo{sK|bVdTX_!VI9e4+F_) zAua3!_Zpm(3+j+e7ct+hGl-+R=D@UecSm$SCFtw-A9mO95~nEJiG2nhM|ThS!jZ-? z&*9$l9cdgFZB6qarehTPQ5yr@lEYG{>CxW+z6uX{6&8qEzKYnsqlx;{aWGB{VQ^-c zsR22U+D-$$kFw|!<4>`wUydLc2hli-#y>!lwuA~HOCM7tWAvD8TVGuLh(F)rY0|t*%yEe=f zvo4*Pw>WTN)cX4ChZ$p-!gm4UO%l8LDW$LVP0buHy!~*MfnVu1%Eg<*`su0;2!wx$ zRBe(S28F+uiC%QPuXk(0zG}3*1WZ9)j+CvLE4-Pqr*-eNjKMu7-n0_GDtU?7oauv{ zYC^f5?9udQwPf9S3_Gxe&{$v#OPFjs7wX|Jwn7I!jf5&DmA4E&xWYVCRB3jQT-Fvg zE2$ObH|W*!`)+*IzB8L(!*Zbs__Lyv%|PwLJ6;O&XRJ78QN6+>D|Q9CyId_Mhx0kc zrZiI)^v)Ao$Pm>#zFMV+!UNcN-^T&O%x`^fRs?9MqZcfyE3q;&=o)8$X32?EFOCU=Tnx%tmcw|L496o z$3w;!5HA=a7i)Acap$L<=PaM^qNKrC`6^{uRU?;0D!v#qB=r-V)2TU^kl3)X-DnSz z?o$L^TDIdaPJihgm6vKPjo=+Rb%ywj)aGejt2w5d^~uO~kub_nyCupT55sm{iNhx% zI2mqkqUW@FS8V1YT6tN_B3-QXjh9}Xw$;^bG_{J}T`Cu%J{HUKT+r(5xb&I`C1<7N zgPqhk$-zPw@#i%Iy6x&wWjA3ZrdKQdVBWz@$zd{~{Mz=eq?y)^7gKpk>Z;owls`4t z^onQ*_R-7|vR1SABH0oduk!G*nvT4U&|9jFfWm>Z3R&A?tPfm+L^$Im{rXgp-Q`e7`VBp|_xL+>F zmsG-zTr0*y_Od*W?9$57?R%{Q%gAWe+8r;&g)Vh z`DsLp{3rM>1q^+K6ZnANA2uQAVfg{JzE4D%uyw%dz`$O+pI5I+UU z+Z}*n%ahUkxikn`>98$%8`$U~B8chr7XXaP#X_~eUn#QB*jHQ~cQuRHC1rj&(?ZOk znyI@bR_cA-GCTjJEFaku$&`R3QSVXj&)PZrQ!1r(>!GPUeOxRfx=O6v&YL11I~Q~Z z?%o>asjIsFP-M{$HZ&6Kb8kWO-eL{!%Pn*LsP&(b$J8D6=^}bH;y7R4dA%pa&9t^5 z3Y}v#3ym(6O3K~a*vlpcB15*Ho>QGv6k+MUFje1y~Cfl&DC^aCIN>i zB-4*~#(~Sm5`~g~3@L6u&pFqNmA`l_b&d=Vf$sViU?tg%4bu!bJQ>~);RaPPN?Sq} zNTy;L?8HFWkN5K3BC+NF?EXRBKjvid^L@97jHXX3Z0Is>ZAt#;ds(1PM?Rtv57}5q z$3wpA9zDjO<)2fZleDxwKeQlbSpDVA5+0%)U4&HUjlbqVhRtEjh@wp0y^W|rcmH@F z7$0D#3|{1tUw(y$JlaY9<6 z9+J^BAj~PZv2)EKckBl~QvAcrt?jKZ1U0!naJR)Xlb-8vGI{HIX|5IUU{ZUg3e?Gfc`bWf--Eeo?@_kA=(v;H9a3LtxKr}4jxgQ87Z-O#6H#Z=)&{PbYz)=H{n zfeYmmP)v~u?n99#%L+UNtI`VnCFF7aQA=!B9y)%_If`zUIz$hNuRCyXC9VRDal{S% zrzsx+E7MXmvi~-0kcT&`QOK+5rsnfAHyA>D6>7MmD8H}1TPiJ zJugm7Z0DroHARs;64!}^P~jnjF(CS8Sa4qW80VDLaIpxO5&`AA`*H#i%I%wY2un`d z!UsFfIJY$~+-V9_g>W(&0>u$S0o0SF1$U4hkSDaYA2kG{F1w*>p5H>#7risVMi6@5%TeAZgi*A+7(# z{3x814!{sM{_-2zLUoS9WU)N#<a;N<4d@W0GlU{1{4-; zdH1T4>X5jbxtuOm5>})mN;TWt7BzpkRSp1c)~|G-yPQot1(&N^>SQXL-ap%(5?j(< zwmUtWZ11FP6vq~6=N$aR5j~I?Hiq~Rbq7}68;OCn+}lu0cs-?TfOrX_g+RRifM%f! zQ70C0^mrA1KT5gJM&4=dMiDeD(6;oj>pacm_?78bBZX8DFIS|opHsI2j%ixHA^>v; zKM=)3SgjEDR#R&hGz`1r?_gO>9r+{s{vW&eGvzG$z+op_Pw=0%sAgFu8HH2Gm>Z2)G9+QdwXoq8enA1hxe6f&w-5-Q{OE^;_l!)G&vP2tybjWN#?9t_-J z;Ql~qGaz!_t^?bil$eXi*|KNP%silOrlf{P#|^5MRgCLIej4`6i7jy9I6vkQK3RF6 zhB$xp7~*74{h-Zq>6?Q0)`4@wJU!>4-&Bm9ltT9jf6+m-KtGUSE@w2L<@WP9o9<1g zB(C8seKJZ@RZ8^}Y}<#?^AlQ!K367oafKd?Oby%CeVy}MFr~`=()JKJ)9zdTxcSjS z(I63qpvr|#5|~7`x1(2{`?I;*#dVR&hqSC2?hVFQCcAulDW95ucj?Ax4WPpU&FV@* zuiU4-O)_%T#|@u|~b?3gDaJg6}%lT!Kq+6H1%-bGSPsa?X z-OhZOozRW%`rd+enYXP_xj)IUL9p!IsKc$-WL+5{7k;jFFMJE*=hz|Or)uuKf(BVZ?PV1gYyl6_TezeQIe>K? zT;)O7TQhA#;F!~J+?C?TP;B;O*y-Vgv-5a}g_8Gvc){6=qswFbxPE~{jST^PRm$Xm zp4+|xjiSR{7a8J-Gkc1*Jsvw}3N;<7NCY~Fyx>hWc+=s@c!1?9SQOo>+S!3mKP-yQ zSje&Zl7ZvtU)il48oBQtl6*I`{a#_jhx?nCj4y?=UNXs_?3yZ~z{-C*F@X8Hu&WLq zWA=Z|_5AkJg{m;;c|o1?qi_Q~ODC&nB~!8f%g6Yy`UnoPELzK`≷7Z2AnJ@P5w! zy~>nEF0&ZbsWRc16C$cQ;s5zV!QYH~iZSq9_}7t<`wRT`H7K(n_A?akAoRf-_qEaXK`vtg zbo;I^U$z=^vF?682e~USA>y$R%9SI=ik%ZFSis3aFII_5#etN|8d&SK5H3T5n~O?Z zx%av4jjzwrQ1iLsHVeN6Z>;F{f3lQ#(eK)M2L9%gvZJk&B4NTQcAB-G8qe91;B?~d zNL~I?b4oi?ugAmKlj?{(`|OO~G(1FSLPI&@!EZH=-`6{S?kf?o2-6{|-k0x!@V|*`$f|ty;Yyf$OGp2b zzKfyg25(Z_>%AC$I5I~+&yo9Nti}6F5nNqDuwtvE3nf81Q%M)>!j&k3sO|0&sFS~= zbd%yz4U%Ei5@}i1iPm|2Ua!CoyJ)#|e9%}CtrcNiu;?IyW7+UYOqnoTENbRv)TL$* zpS(sBO3KVE*Tv^#IXKQf;6m4mTotwu7PD=v`&4m^=w?xk!0XHIiv+|4y35Owf^Qcb zJL1e2QH(UYAeD&d|_*KFSn|A1ija7nBM`SsmQQbM^%}X6H8F5C!`*@&%IyCNnI473+V~2_28KWWlnjdy}Ru* zozY?bW7c}DJ({be;cuAU9j6`4$FPoayw7h*cnC}}IhWItzgCwg*eP3H$-Vz|@Y$Qe zL4!rWO8qo)qhYRi$Vpd&??a!10ae#E{; zt2l7M;n7X5geR zNmSSP>XD)R>Vz}yMirWNYolXbdle74;u&kd!PJh2D8A^j@-(e4csLOA^z)q?*Qm3n zMztACzgdfJh@?|C*7XcA-?E+FqPAo6v5!XykL42IZIR(R_3X?Iin95pw3NKqnNk7j zXc88G$(4|s`6}*&lpS9YE!RH4)>HxSHeSt<5jsv4_lT6<>V9k}gs{%JykW#5>3n6S z28GpXo{q6)IGvrh;42vIRuOa}U}u0m(^qwdHp6pJ)mV z3dIQ5rTkx5Wqv0`zvA7&P=-`0RXK_srM}#bw4I{ z%>1;xSSZAA*EDC=LKvEPr9cH`wvl$sxT2%?yjZ81iIWcb`=|`CEIuy|e###rgFBdbB?!S(u4nHM!t@?3Oo#LFV|B`N)x(Dm|X2RkSFcH#MU7VHZ`X!;}{I*B2u+}~Q!t~_UCVzQ_ziFvFpA8?=S>bEodNGTbEjT5Qq zjmFj~<0JaY<>GVEr!so@ni;BR%Uqa_TUMX$9ld2ZD-(j0$mS0pQxOyH9z=4!(o)kd zni)#i4a=;L%5%4B(!S3~<`uJzuO-A1$uJ zesb)ht;z>Tjkh9SOpgrlnZ;W#v$3rH_@Q_9|JcO+IBhyyX9&R6w<4o=cwU-%? z*fqcp7`V>e=i}d)i|#R8x;d%wR&*uJ4O zAU=~sQF|W%Xus#J0^b6h{5L2jUuN(~E$rYgjr z?t}QS0a)*iI^ZEe-Vv0#2vUM%V1@*UX{P%HKzX!r#7tWfVf#0?Cl2=e5bF}~ja1y( zI#HaDFcaoX48|IyDt=RwVFy!yWPc21O(~CoGMz$n(oGyrBKC8nGoc57ie9I}-S|H~ zQ6z()Y+-lzzy|`FS2Lp#9e9YAWO7rb{ol(Vlb-wgYPQl38QfXYjGKwNH@H8AGdIoJ zH^0-*Ti@$Qmfpl?_Dn9MWsg%1L7R<-kZ1u`5=I+_BUZo(fBv&faa3Xcu(^;m>^cgg zNlqrRx&Xrv0dFN&r<2Q>Gcgr*kO;$E);0h6?AiBw2j34n1(WVDVaS1SgYvcia090G z+QwcEWzbIPr zlz#Ico)GMh%Bz6}>D}BxI|jS1m~zg@hre^z-q^l0(n7jo58N*6Qn5PNX%ceRvhcGB|0D}4zE z4hAhj(og8gKSbirA_ae{StQ2#&EKmTTr(MiM(hLYW5$)};Sf;FX+&%v`?FGq#a^B- zE$SpnFJr=;aSLLw5Sy|4dWJ)F>7yJ%=T9T)K;g0z^+yr>$$sNL-cxLQjRGnx=aem8 zI-_>Yb`4BAVV_H>vy}%8HPsus&V&TU{NI+b`tM{+>upwn!NK?G5ucZkl5FX^25b$X zmb1Y#w6kt8Mmq#AAcy@cN{Yq($mg`r$v8PiYhSf_-=O#1&L{s{y};_GXzi+3?86Ue zs-xK0MAZyj=YG|+y(3FjJ+kEg9TBsr<^f2ReB{Nz9h2fGk)n!~q8GcbsmS#T^$3N9 z-6;}dQjFB-D#aRvuNhs@X*zEKiu+Q89K?)cT!DZ8BoSKK)?OTX7$_zfo37%6uqc>F z68)imzfIKwxH+yn|MI~ACDYFSS&P5z4^Fnn2Y!1telQdDf%&#&e*9u{q%I|h?xaL>STfH{+)ZF=OY%y6Ed8Z5 zUi*|0*Pfrr*>52pq)ad;Uj5X8l*rwS65gstWDWg377YZ5{RK;O#2)=%imFgSh)v}k zSPBAk;T(}h&Ik&?;KnZ^ZUN}oc*QmV$L*~e?_xl!Y`5|)NHZ|Sp3UF6g=rvXLbohr zdm#UP96P6ui&(}DXQ`6t^0?bN!58Q#S$!ymSUpV4qhiNGmH1oPm*6=|U#1_Qo@%$Y zQZ_Oh+*=<`J#MLIVcew|VtzYPu3pd5^#1)<()WzBS*!GMb!Nv6qsptEsJ}$1ZCLEAO@!lwgxr1UV`^7+ z7J6R5-^w<^W6usWg-s5*zEsEzatXfm_3~5kDd8{;84qW>;OM>cpOAelQN)`m+Sb=! z2Kj7WMlw*zN9xvkxu@#{HNm+BN6DA&_p?%6&=dEvO!EtTZ}Byor8kJp%i`*glpAY( zsWsgJ(!jU$&b`8Ui^5Xt!+l$|XF|wQ{&`NCA2J*IAv0LWxt5LFjO-?^;-@l?`v~n6 zS|XTnWoZg2<7~CXdFiR-QPivQ+j)x-UN7?Xr9SuEX?P$Mtn+l?i@c&}`8zJrjHafd z$srf7+vd?OuN1!$+@L;MgtCXT(^ETMwkYklkGP5F?sn6qubolhIm{XYI_+e?FOMjz z-QL_?-CTFxE7Iu~9pSC-+(ndrnVw>Vzi~rvFMx0Ckc!nfr5ekvFAsmo>y?#|V;1{O zL^kQRt86dyvO?N?5AF$Zjg8WUM1{XgSvYU4jkKl6y})g{`B935X&`rESlAB(^k?|W zu#Sr`z32r!=|hjS7cEWmU$dJhl_TV%Z*JCHD{3_pXWvLQw7*mf$Q}h7TUs=l?%snC zF27TrC(Do)n-(#a$ALI{-8uO~Z{wnFiZgOhem9fXc-7`0Kc$j1>lH)pEELH{eL{}= zI>ur!z6Hvtr>8FQbwKi(NSOKQPbF#3v>Hy5G}GjH##y(=KfhO58Lep;w5mhi5#W`3 z%(0~UGBRp?`pYl6lm46TytChRbQX;a_V6(pS?WzcU-Omud%@>GYh&5<F)begGapZ$`Zoj~9a@xOjJqk4yoW_JW$g>%Zq;$& z>IUlN)T~mf=kXAkg$KPK+s392Zr8D+o6vE#5~@2PJ3_-H34ho47eT($u0PQTJGg>Q z?uKpi8yqpvzxOMVA|LUPi_)2&%OzX~(gkHr&qeh=I!i*$6gH5OM9P!TNIGZ|o|soP zZ`Bc-GrB-^S~&LZa{QT@P8wpgrdMt(lsBz1p3x-uej%SAJm+w9T)yG3w*H~sNV}`U zE4_>ZRx!;E0V|~uvP22T)5~%kCs$A2mh@p#v`z1e)^;3y|CH6X%1J;_!^$(U3F*Si z+ZID|)>hv!0)b@Q6Mf}XTW=~+}HKApJjbDsqn!0fHqxMH@e0vSB75O^kkD$ zjW$D(%xrZbuimv)v;K)?uZ;{WYI$zCvNN{Qr9;A8$|}l|!E+nPa41%_#F%=dQ-25D z&1?6R(ZC~kxW+UMZpBwy?lyZbcrx$-|3p=eW_rd_MYU$_t6>V#%k6ghyN%~(E2_`U zpz4a^wQO7tk&4EYujRBgN3UOU+{ap#>GujNC0?1yEa7B`G#ag%0vwCtkxLoI?KXM^ zvXxc3vl~RnIkYEy>$X2$p-p<6tX|;^rE_qc>)7X*7$<$@Faf#IuhcXtJ%ApnT)osB zOJ}Da9NarFZj_D*n6TW_wfR8zHCSC>74pg*BORriZ{?ZZfpjVvr{v8p{3$Jsbh?qd zQ3b2Z26a8q(s^~gcIWfA9nuQLF(K+m9wmdie%mSk<#)F`w5_JfxkLiD^v3C{?7`)@ zW)$wrA!4X=$T3;aVIje#!?T~W2RB}aYsP(U^Ny!(8uy$l7$~s_6TKV5n~*-j!+far zV!F6OAkF-g3_;juaCNWi$QbA&D7|`7CVI4LCFsjLXM<5Do~R1$`#SoIf^Te61X`#Z z?_QtUK=(bmxH&v3Nkv+GyMx9#fwm~a>JhDScV#Ij!>f0{$j*OtQE8-#*StBF#m?r` zsqQsr58|5kSrHP}>dM=f3^s4O<;>9t^Xw+NW_&I({PfVxpyB)(d6fyp(1BT{Yn7{) zfdEec0rrQeYF72HUbOy@-Y;@GH&j4%Cv|*wll)Q4=X7m*p_ePt6mgrQjr0L08=rR4 zECV&Ml2}>Iwxy>sJ$dU-YSo=Oktn+IeH0r*vn6^aw)xH+QXP4@z%V}y`{v}YQhMR+ zLbAE^*{pwrf%#B9WV~&(ttf&2)Crj2yodmf=TFhgn9%$Ai(pXi>c+u?emGkJq`mqMVJULs2R`NO=0 z3SZT}x78f8B*|{0Q^Mx({-&}lp0*E0WYo&(6)voEJ1J{%16@3fdJ`G~3EkDFss(%( z`IV7lUZ1Ryx;IXaP(RM-P+IMz-hNl%YCtvnFtTXMtINZk?;daMaZeC!%jXbN-Y9IbFCW&*9rPpOW zLyl;~ndrkQldXxkc!LevC6T+=%bS=uN-FD}o20lh_Ai58B?j114}3wtGOjm0An{gS zkJ)zi2iH`xF%dVAo4*x;qsb-!dBK6BoUR`9E#skU>~{Atm2q`s=4KMR>|5T~x&pti z?f3WwP=mu1#GoDwO9vN^niY$SGNp~E55YDUgnUqYe&JbpHf`LahHErJBaixaxGL>w z`OHFj{4{HxIJOkP_5;3=VlHH5w4NIFem`Q*RXG0XD$gqkC+kJpjfr7$+>K!-tZV!M zkDOlYL#yvoq-_fmn6{<|^Sy6pD9wTa>xnt5tZ^fB%b+f4z$4JTXEc{1IEzz7-cXe? ze1mLK#$D--fvQqv#9|vC(MOdw8l6JT2EwGWHAY5|aGHaRzCaAMO`wlzf*r68#~iMM z-mU(ucd_3ygM;-;oyzLnIP*_FcUVc!(XN_7kxNsGzAWACE4%iBCr|$zVME*fHzFjL zw&}GdUf_u3GcBA9EJRDj^lv?q(5KY=O2F+zY{*r*4^ng1rgmKQ7hpYcOFIPz5G$sg zC3f61i%(|mS;lPC?YCBpy5HZ8W)LZ}cAm;PdZaCF4+KSwRZ3La*+vrM`h&926F+({fnhPJC_#3qp-*^{#)^Smx5l_ zjRn&>HLdNPi=P(+c0u^bIz>j|q^=fAmRrM#wQb z=wx0s-Eqd`JI~N^18RmB7%2oU9u!MSmE0?%s)$st^tyC$w2J=;|I_V)evi5(oqb05 zqqrF>&Ve_(-HQ%V>!s-J994^a=xz1N~^C!4fc7`Mgmr$11uwmYO2Qq!BA1Bu#m?bdSzyU`PMGYNB# z3VL2BjveEltgWXY+Nq}35^abq1QrR3XIL~61vdG=4JGbXb6yNK4t<0;g=2e4# zbYq4~hLjt`IHgq(?+k1}U#_jkf&9h{?xO1~)5owJse#%@yS`v%Zh#FiFvBSsHX2?# z1b(pPnhaP%34$$eGkI?q0c(v4!$aI+cKUXh$Pq0i>3GOs0vrv=hfgtKB36{J`-p9; zLAA-XgNrUG^wvwzq(Rw^F$VtBARB=q$A##&li?1@H=v(;P=}>;up7xIVAF4g5QF!R zeuU#w1{z;a%i!uv04bpC#Prwas8M?$lYD_Q0@HO1%bb7gDocqf(4Q}{++9j*$`&)4 zJx8M-j0o`wnlXzC3kO;}3$zqHI-k5Abie~zRxNE|qS4NY<0wToE*FyKIP}+sl%VnT zosO48c~d$ehBrU9kI~qi@={}OD|is>kyv1SB8W@l{Bfagvbsn7GEHd0 zbzgh49rdm$N9GzWLDyt9V?BSSKrYEkbc>c{Tk;wIRV_5%{(CYe(pz;t8BLx4=iEpk z-UttQ$)qvU#-;bM+BGTDn^pJuEcJlYdtblS7V5dBdu3Od%lh&!Rd{d6&8WQ~W?AIg zF*N#fkKDMqG~!eR|IbvpVFzcb8>G% zpA?S~z3NnNXv`bLh4@4(otQE7p3SfQ&ZY=G4P_z!@>M5=^ic{uMWXm)mwm&GHJ?Fz_e6R#d$9{Naq3i#U3oN0RjW%O$aVq>xh8+gQS8=FC%>?Cr}ruH3v0bi&J)3JmuRF^q?QK$aN(5Mn`ESsMZeWx)%-V$L)smV32XY~zxFeI z$ux-RH=vDj@HS%mVGjoAUIZKv!h;H^ZDVaHrVX_Mlzjqcj9QuKTijVYpc00nw*e!5 zU3dmjGKXg3keH#RP{zG6wN_~40>ji6k5wUp5t~Y7(7j2}SeI)cAAp*^ z-vhi@2NVm@hHix66x`Br7#LdEnj3n!3ZS;e1RhPOj?3QdV9MZ1L8cdiSu183- z%(bn}8fVZMu4XGzO--R@aBP0qaXoYQX%)~{_O>l5nz7I~or-L13?KNN>Oy^h#(x}^ zPR!QryzZSlNy*ZZPWF+tx zjnq}wSh!sakeJ^{6FA3W^!l(>^Of8 zK^xeH@#5nuS&R8<$+-TJ_ouRHZjCDuE)wtLR16@Ey@hiN&0e%cGn_f{7+y?-Z3iCJ zXVtX0d1!ICAC#Fbpv;Q$76dE?b8UrQvIr2jg^IHx6vd;K=?h}w-z9_J002hS7BH$A zN#e&dAy*|GTsVPwP&Y)t`vaL6~gE{Hy2l!c1tg(OJJSdM~} z5jAZ4K>;#%I{7#VP}sMip;V3>OU<=pb#Ue~j#~<*G0}zyfNC^>CIi_1Ru^gsF<2pI{3DHs?kcSe?2s<2u$4omR{>FsW z9|NU~FhT&$ybP53rP8`JPQfP`99{v3A*wi2_%1-;Oj`_ih#f9d`>!!V!M#D$w0<87 zq%c^>U=*%1d1EU7hu?_o`3M$TkIF;vA#r<3a|evge>7-d!kx#!8s9G=c80e=wO$Qa z+zHga3>8MvF!R600+Olwo1hYV>f^rSj(qiCD6R{!d8P{(X5K`r_1D~Hgazz?*aERL zU_V`!q=7qBojVXHIVo^~My*PQPLU~jCLza}Xf|rqV zrpo2Iz{bl4?-hu{J}$_`oVK0T&Yr8QuGZ9xkIm4WxfKd{@3*-z)ylhxvX?ii5aWXD8tb<7~F5P4`H1v5rZDy&QL0h?#O z9|&Hn@gR7GgWy%^$g~N4w*>vXkc!*Wo;mp6j`|v)a;=R;p@}igh!IqF|I)-JuN8b} z0g8KK-G+ylckXWtB9_u%txNsFe}xCO3-ORmXu%TGXD&ot&jC)pXwcuC3a3J@2jKc( zGFqUnqgJp1wdvqFfpx0|p6E4jQ|}9KXB+X5^D)`0u9NVyi0S(IpL;3Tc==$rQR@^shlLQk=!@^ymn?$R8iVa4L+_!`n7;r-UrOGTafq}$`{0v=0yeF zi3Qo4CwIFtHL%t5y4W}RU#5*2wYDk-GZmlZhcNFiOxR!iv+_~oxI^ubn$g3v7MfK? zM!p>YsX0Te2AG|AhK(4 z!0->g1^QiWI|euGEuxCZ9YAgU$Gn35eI=FC3Z@=bGXyK_th(z=^&%IVPHyUHjM0aoG|Pl3NZpe3F7l3 zYz;cmunydNHXV4R2mmTh)E4Xlz#qo&2v;qGNvhK@1aQ$=9l%8e#5SR!_MtSQIke^o znc!5F$d6`)E5dxJI2?l}PkS-An?FTNf7?N!S3H1aa*h5uYmkE+Mk#Xpw;YH*AgJV(#^1`b_};5`DAlH_zhW&LakhKmn9|<_t0~q$(lQTHLJ+|`pp(c)`g){|%^A6aLnYDyt zhYge8cKR}H-myUe;DV;fN9h7a;{+Jeuoy9arHcHo&jrH|m+_EKcnBZxQZ@3u+tL!C z)MQxOZ=3RLseR~N+loHpo4jH5;8gB3az}WoP<)N_4TZFx^QHcEp4FneI-9u8VDF#h zB}+Gvu@RLC{kuJ0&m#3mb#=|^Jkn%X-I5H4&gg+QXiH6+`o+j?3Zb|XlGesCQf;9x zDpLy8q8H;IMR9DM3Z_T+X{2j%JG_ltzG^9KMq0Z1B7ZflzBXd^u?HxJSTq#m{jS&w zXZ_~?o?3cmr{Y(FVOs2^;;#h5QUDS$8!#iV{exL3{RuU!XI1a~kJMT_q?rb^Z`DUU zdj6SFDqhBz-Z!}?dr|b^p?cE%mG@lH!zzw(NLioUwyLVIr*n3ab!57x-+Fh%c!TWE zNw2(}61Il-59;<^oH63_3%=4bG_TOPbl*h{T<#mYxw(CEd=MiS*PnJ4St2td;sh6; zVvO>YJ;PBtab4X~sM-%yJ1(zRfNDp)+gQCFPI}k#VWCBen))byB=g^2PPCTRnB>#BGo3+D7I}&vun0`^h z)vb-9K^!mNQJvG5b1Z|Nr0)^@i61dvyw*joHSr zkP-eYD4htxQZ|aj&p!@|R7mgR@_2mv<)r;`Sc%9=`r|Q-_wsh*gYH`?>6LPJqJ>&} z0YFXJ@-~D^lxGXY$%7rk6yK-3kX5+<+~nKZS)>%9wgHuzb@cPkr%Xlso7Ks;^V&E{ z)AAZ=#A;H;Gu?$xt9z9xKhqj3P554)_gk&=mBe5Vj=txy5-ecZyth`BAw4g8|b`F05r?H>4{z4MX)wH%UmbW3f37WjQcvAMy|4h!eG+Z)%- zwj?#k=#%84Qvt|KJ!Jnhu`LLE>a%{(^_4qwFoP*r2hFv^=rZU5mZ=(ndD^9>ztQtp z**A>h7P-yBOVIP%hxl60B_OBQSVW{v^vv=$S?E&498K!5(gA!DXRKod-@?IM@Q?$- z^tZv;kSP`VW(Nx*R&71(4K4U$?k{z`t%WBgbm|R1E${CFvQlLGBHnUVE+8o zSIk$JAq@p8WtLb2jx{J-3VhZiVz&1k8~874jIw^0M*SOIXbH7aBC)5pL-KM;uSi}s z;n_0r^fJq~;;}zu!N)QzkEthNZRpBVjL?Y(talx^29 z45A<*h=NM1fFMIigTx3(Dj-OwN;3k|ATcJ$NJvX72uODdjI@+=cX#(NGwyTn4)6PZ zo@ej&G9iNAw)+(1+LzaMF#+eXl*a6G$RU02 zeO!#X@}|})Dkb65EfI6`FW@u4@>pRe!unJ17I}vLUBq3fgVy_|E_ocPZp<#ZjsFLC zrXm9uO9_%7#g?n0Ln^g_o%3f7#y}+K@M6bqZJn02B>; z78I|Q_ZfH-PdDzbaTIUb54_e4>^O$tzXP2AbpcMh<$hY0A+Pd9_Kf39h!OAlx(=20 zLbk9~!qsHc{wGaD1YM|Z3aD+*%Q04gz;JyC5AFxjO37-MPYm7-V}d)AeQ zvvYhSCPO%_I;VBIC42-VLADkZo~U&sHk0e(Gg| z;hidjk3QpV?E0HH>%;!yuLMo8T8C->jA*)gN?82Ih$i`?`D&!~!E?JQE1uGlphrW8 z(3Rl0VdPM|(&9p5wlk}kqf>_>3rL&X`ZWmpzZLYHom>^_)~E`BEDoL2*(cN@4SmPk z-UnKhZR%NTpVcpOOL9oBdl`J7X${%cmxPTRFq*Z%E)=#{<_L;#tTP5-OaOwz)irepGma`YkRn|s13{~roUG97=(4xSSS8f$AS9@Yzb}zg@nfvh4Jg9!L9oz`jYe|ez&bT7`X|3gHT%p#}PkVdcO%cL1d6#Frseeg@ z&OGm{D*4mifm2$k2YouuaCkl0Mb`f#G}^}a|50c(#>s}!(0Xy=#qEG#;gG{!0#vX5 zuvT7GbngKF?O8t`{6G7R3Xk`Go*Ph=fRrBBTwX2r2kNU%=aR4XL?bRuS~P z!rike^EmUNGXPNg7{Z=TOlUym6b;xII5;Y(}w zqt9iEqljMm8vA&?%n0O3*ch2Wo+N3jcx~|edL^PUgURm85!;}5w=jr-K-`D>CDKa(Z@?F#(~qtHVkeJ#2;CrhI(XLMEY3})=3zhzv!xbLc#=_<^B z7vYe;ra+B?%$4VDU2ph4`*gsVTxIMxE{yn%3r}EI^t{3h+V(tg(feJHGi~d@Vb-;? zyy$8RmbJF;kaacy%=&gaO(r7G4(@81SzN*|o#{{`3`uDAGt6NMhSSF}S|&CH~vPcX(uswg1GO z-wDxWi~1BbB#%pbT&pVlQ{edi7lTPn^SjrIXrdwPce67}pUD#d5V2!5YvDTClKO2i zT~!k;r%Jtf`BL{RAv>o5*KD_M(5??(%0jl*^rQ0TlS9r7s?MT`zW3*BO&{BozNP?65{dlUAgxKCNAT@uG+DtJ6Yc zWTpwr^59mC>pW2^*+y2vL!MTwvtMopKKT^fKC7{;dcQwM(DEu`y=9oPdBwn`9w&Ip zfZ&PJhUVM(B+56PqH`l4CVRLP3%d&zT+Q9pnO#}8+`@O2#swYJ!%+k4=~-bC=W0V zVitM$r|jkSyl0+`Lw(@dws*q5b4wZuQI+MyTg}r1mA)Dx5x8e z=kb7qj$P&zMcdUOP*|Z8-2OCG?`cG(d-_oQss6}(=J0`130~vGDp&^7)t@{}80rb) z6eXlCM?(B_rY1Cv+v(0Jf=Bh8@chO|Ah_1hqmKQ{x68^;x;xMDbIeABdVOwKH?!?Z zr{_Isf7pAoyK8s3?J5m(;nv8dvhL1A z@=v!0=MT%B@_P737U%$b6*7E-(7^EEE_E|#ml}pR@FgFif z!*eLbvGX_F_8tiF0s)m~jSKgdmTR)JI#eru2cJx1ZFKBOIieM1kviJmrkR4 zuoMN@Jlw?+>ZI~Ke9l8%OJv-2NDN#8&u~h2XDw_#mRqd}?oyPFp z##cpmxU_5b_!j%G+tc6sr1H&sIh`!0N4w3Q#5PWNuHEE1EM8&0iVtKVZXkccI~VGc zaj{btq$(~~1Yc-KPoOQj!!8b*CERiFbAQrVaU*nFM3+zjrM981k)QC@1?42nz8}%X z+;$quM;M%|+E`y|zYS(z3`Yr7_Wdn-tb2?!75~2;U6Q7h z3s@PUG}iAa7u}FxXB)9f`T9AhzUVYCiEIQ-JrRna8pFz^cw}O_pDMhnidptI-t77Z zZzh+Y@O}|eQURS3=(Mr$!|~>c(~nL3f0ki{x`gJvRKl0Qhbk%cbO<_kI$tPr^Z(Fr z-}15ZWl)nvXJyI$X*4RzpPmu2Z1*Sh=w6Lm)fs-QYyixu>^Un|<8 zmqjZ{f~?_xjmRjIg}FU7&wbn3Yg6yh8{LKYdsl^FL4aqn$}5sh0TvXWfON{7lermEo#mDXVb$iKYOZXrPqc|2Wt z3_$BDVMZ~w1RBfQwOxzB#$|n)dK8?mM?m;1NcC}7TvmFiG`dfv9#Sd2g#oo|^JS)& z?hCwb4tgBTB}m#rXrB8eelYf-KVR7BZgr})@?%u&>La`oZqHnNdT#-%EZnp`@k_|X zanq*Kbr>3QIpbc!;GD6f-EpX0{<^o$eKg-{u)*tzvUW*Xe3x^4pVj4X@0H*(Er!yo zg`P6pQQRMVBkjN+Sz-%8tMMZY?=|f+vRx{WUT`e04`-Go6M#vRlRwLKZC;A?}aTY zX#w@ue9%8IqdB3?&>)_Tg0WVpFOvpH7XJk%T8a1@++24Sx?YHdheDXJt31nTOOpSg zmL)r>c6^I-5xzT*%eF@zfD|&z7m)P!X2Q@GMO?(}F-;jqCByfvo_fEOB!f5c<^#D@ z0ADaK$H1_+XniqHn?NEtdgecT#|vKvIqmc4S_md<-e;P@vTK?enOxmp=)6*6wf2W@fx9ks23p98>+JL}K4Jweu~wWDJ%Y?lR!GLe0K{`{af=d4xnkWpf;Zfm!k37PJDMhCa) zMR`C%uHDjlT%hvuc3#)YM8x;m6n8o@ny~4hhcY3`+!Hw1=nc!nlJCBc#37jEy_6%B zkwg9dzo2z-cwT)Jxt~eez=*OtK$Mu#l+d7yWp;^&M!Ic}A2&52poTAf4Ij>BJPrvsWZ06uq8F2;soF7;H!nz|@G zzU3!)83JPA`DwCgkPl%7hVL~Zwwr98 zgi6;N36Z6aIO;#e`kAEY47XW0bc+Z0s5jd;cxatsZ&EgJc>A(IZ2Z8Gksq{y7>1(> zRX4I3J)&%FMaQ(~`4 zB62V3`PT`O%1O+*Mva1a{g#N=(~sH7lEf`4AE>DWoK|k8RNT+ih|@lq3Mx}J_Unu( z4@{JWXq9`c@ZWvA9Sn(mM|6LOTD7ixDF^xC>aZ$TMYLltX`&zeTb%vqb-cjBAKx&!b_~~VXy%;-& zv1B_tv9LgSl2-B?P}(n341E1cRe^NZhfFPNFPIY%v6uuUpG%VJy>AbmMB=O|6jnLb z&j)yFclBK3-R{--0$iLPKP*4iKEC%0V7fUau9SY669^DL6+1s^yvpn}ZZ)JDUTGgU zu;{;&sICS8%aETHC3}7*=|kE9v5T{?A_LWhUTLPW+%aEXZjpAq7gL*nJV-PI@k=&staZu^^( zkLzW5SoaBc>nq^;btvtCXa!#-(C#jC3sSN=d4(QF3pOTZTH(bnMo+0`TJbFah`6{P z4kB)Gi6s!&H8_xX_Q)s+m6{%^(brZ0=4KvmIRn~mL{0nee{5niXT_m-gJr3+J;k1g zLjj6ce%5BRAa2})N|d#9`XZM}QqsY#?OX`r%jx>2K^kyh zTA^U>BDcK_h2Z>;4#px4w^nykhLlzmMa7sU5%H+bOuLk#;Fkh-HNqDx^9o_hV8joy zAU3DUNw~9~6jZ)p&pKnF5Gh-s?>?hQ^G@V?tO<)NO3RBlCHr~mMRO{xs+`H;0LDI= z`DoD#_n(~?rMIXwRre1I?@;3AZe`DcAIRH6C;t++{q|8&!k4{t4bTPwTJs^R578oZ zVC3%85*b%tvy8qIDGc?JMj(?G`IdzPY`}VRfOy!YlVH7HpgLE0z<|S}uMH{f2slCp z3~=kWqp_!z<>hrI^D%YugAXNATF!Bdh8Gqu$KMW)6MhlZz$Xt+rf=S3f|Ll$NFpG{ zS{thk!Jth=x7_meuf(x|{4xMCeaz%n5fDSL)_;xh0Ytw2+lU5PFya6(Vr$~$7nakM z^k)y}{r3R(Yd^#lI9x?=V1qujWRAsHvM3B(@vO3cCZF0DV+F}$nOQ*){H0z>8r8Og zi{8=bCfa<;`AhUp=1ts^nm5qzIK#DD2dBLMMaehc|GeaTUh?{hadPL&A3~(@h~Tl> z@}Q$+8qZ^!B08<&s@H6<-*D0SzkC_2I5tG99`ah2E#KmsP)pk2H=|DOj}A9xwbRRjz&3W1HRYzol<|inxlp6BIUPKj%NSUsRk*@?w3QB z#L{BP2%R6nQhu-wL(M(ss8*b`tO>N>Fnm6%xg1{B+qv+H=r z5jdcye&Fpjwjmz^{6~T=a(yu4B3Fjd)#Q#ZQ5v%{J|a1Z745#r?N!(hyl46FO#%16 z-u?%k?l}4gwD|ggH{^>d!z_YQAtZL-uw+FTzP&7rITEyR$=QPflPVdLaA_-d`00FV zUzOi)qe}fbs=lls-wNimVbTDoYHsP9Sla-p>K#d+=qcT%L3OYOCCDRnws+DY6{!Nq zYCBBnp~)Y2e>7SIQyAou9bs?e{CtVPSOZ=|H#v?X7=n+NLnqH{tYh$3q3ff@sCvzH zS@;B)Z!oW}B#n)h@d3z~&a{VOYh6K8<^uS5!F~N}sTNm4{@lH)bl?mK*CKa_3V+}s zoqoM@A4d+>AO}qhK-E{VjkP?79-x00e9NL)eb`tPq9|~Ye8r*lTV3dFt^N(A{Mu7B zH)At6Zd~r~MQ->UxMH8}CG4*S9msf!0qB;8>e0SDs$L)K`SXTXFhM?GFTj$0)drPO zo*53&aWgOO6qZMQ{c54bLZRgQ$Lx1~(O0S%fORU7ia7#ptH#Menvby?i|NGXX&P_M z{+uwyiYG7!BLBEy&Xb{{5$j0lHPidy+GMxDEdSX2oXlSqjp>)M?jq8M5MV^0Q01y{ z=w$q^8Q_N;?A=3?e{OGvm(M!Z%N(qkc@==2|Jx#GXJN^3Qsh_hxp6 z^cdD;I#d(jStAE*LF2VPyQ4kWGR3be_Up_sk21g}YGY3VDA8H4AMo};_yh#hyh>^o zD=U4MVa;^CS9XaL@pT&aN}{(43#9B>{Bb)JjVk$d*+7w-oiBWW!V0(tplgaw`ufVB zchwu~`;BYD5{s*RG(#?NQ})d2-g|LIa@JX_iC{Fj=Q|<6&AiJ`wR??!S-W3HjjGp% zKSFM>f%+WZJxSWWy+3v(VUG@ZxEq7TMCal52gcApG%G8r`J|2n^_QLf#}L8m4G{3p zq1fBdyp8egy?=7HmW=gO`%2O(2)2u7f}`vaeZ>@SwSL_uwwrla} z!^UmQsBN7Ui8fL*7yDpXwdC z8nW!+@3#`4+<0XXted+O{jK9spLzU+pv#q|K{STLjtP3A+&dPcJuI7wkVbk$JEQPt z@oX=v-Iig)OF2a?Z{`pLZ{CEMyf%2*7c#Ef!%`9boiwa0IIA^J;o$%Q`PfvT9MOH< z;y1+eZn9L_O*IK;=xfLFDKJD4;!< zW!eaa!FSk}m=37_6OA4A6$VEGru37>7|=iu&i|7JbQ--0i3Nf*2;kE{Le;<=W8hd( zFu14f7-Cc;_M|>&e%dUN>4}{O{X{t`r+@aQ3`ERBCz<=;3#vWHjjQ87@B#rT@wGg# zbl%AT?YWA3GGm`4+z}My{>4DV6NQH`qaCQ)ee` zhs#SaB($j*4A`3KFnEnJP)Z#i!H@A_+)QzMRlB5#1UAZZdGz<=iCyc3FWl>eug`*w zqEEt}v$>Cb&7hCP;y~HQ`}7_>BNBV+kJXC-gZL;9hJ$qCHM~e5;(tRgb9rNKyjA`Mdb`XTB0}}($3!>kfe@#fDR}p!WDvm zS*U#mvq;MHegd8+kqQ4)yChhFJf3vcPnhiksGr?_30l3pbiNPVR1s_s7hrXgawKjV z(_tRqW{SQ&Fn9Rz3V%ohOLw4{gIv(;gKklPc_*u$Gb;FOM`pc1T>a?E*ZnCa+;i%8 zImV0+sNk*R;H=O4{u4z|#0iE+)2ba#kV>;G#q&+Xm$^kmYVsP(>YXI1HVq@+IyICR z$ooy%gvzju$zhYmD*9E*dv`!B7HoVYd(|h|b~WbZlV==4s-t2)Yl@9IAD0bzYE<)t zg5WIol~DeXbUEr8#Cc_33A%HjMyH+*_)D;>IUsuVv&;7l$&#)OE(oZ}x?lVFONXW7 zu1e7}7Yg6whp0UxKvI+84hZQGSXpz3r@2xANqI1jp&`QFgs7*%YXrR>eJ^KBrWb0h ze_hnd_^3g#iA3fEQC=I*p7tBCi>#^e2|C<6knUXeAaQC3jGR9`OGG2>dV_V_ICwjP zAI;twYEI|VJx#EY?WhPE=OyavkAahDFRyz@6Y|GSi+mTG7A(PpPeD<{R^tbR$Gp0d zLkTwUjtXE2VXz(H>Gir+7Z2c33BBMAgI=7*%IXJ^4;yeT6^7uu+>3qi_al*M7-Nkxo}5&DQl3nM@?4o z8^A#Ra$NBL+VAQ=OUUDX^6^h{%6DLYi9#0h++rsCGSZ~1J}74njwx2rJQ%U>Ke>8x ze}>*^*^r{vnA}?Lu3lhrR^yDJwfdnC{ZPs{vKZRTKYHx^bzt@WNYXIJ& zZqWHVD*NXtGWy^+W=M3G=R<1H447x<&Kq>uL{tdFhj&X!ETJ8=pKH{Wv!6K?YBSiS zEpu%OtLGJ;n5q%KU?KAszRw#mP__g0;)3k! z)f)@ouoSift$-lVLh=45+z|?T)t%N_xPxgZhHJ52Ime{HqAD(GM_rW160seqVM>6o z@Az_P%yytTXq)KcmKdD76+&gwm69}o#8DEJfOAxWj!(3qw9;$Ui&3WZ(bvy#IN7(2 zU&i0@g737*1fnzhDYv-C1?bzmp^^vTyy*6M!!x(_dnI3FT}p{{QZ@jUMFq!)B`5x~ z_tEd4p9uT49?9~zkBPss>;XR5xs1nS9%#REG2@01ROX5K@Wqz5j>s5i%DE>)nH?F zsDzX`=`x!J%P^Di<$h!CN-QoYF3{4yXgG`}nTXE1zGupl05(OCV_hEP zXY(l#_CD#}+H+T%Zwn%ei2hCfR@B;C3x<`xU;}|fV-D%$uXxX+7hxCmI*`SJ%0jx* zf|Yrpt?G5WBZN2PyZds6uJ_J8h1U{(``WXXz4KYHg$}mt$L!NT6Xh%1*RQH${aX5jxc#n0YKhW#P%X;T<^E7s@uSioczQI0Z!tQt*doD(U^7R1 zvTd2DhnM8F%`QKEA}61hx~hE(b_bl)2$y-GY+h&G|1^0-_>36ZPgG|b{~K|^+73el zOtN1!ME{KUE>HHPhewnVtIs0@%{}^el6!8;(M$TZ(f18wUc&rn_H)nOP#;T{YJigz zFveI>SJv^?oOET4HfuU;x&%#T(}Vz(TuXsMH!KSCxPHhTqFxhn50WDTA%i zHbx0%q`o-4`a$7=Vep5cbTN|ILSbUb4C}`8vY+p^`hM1a)a?C=wpwtt+sHyz0GlJY zhzb{1o}@FT6zAuq9Ffz!`zrK(HA^=BdVEoVi3wqh33YPxW1lOp)D^#ee;S=9>sqFm zt+gXcss&x9TU3c;O&}tQrM3CxMVgCjQ2TD+W;?ay5)G@fuuW~Lx6zdmxKJY&bvv_y zkTg(&qn=ttIpc=ts`MCkzTw8TaPJ7S4Bxqg>nlBDim5gQ%mIQ=T z=u`D?womtM1y0(ehJ^)9S_CTvWm82jEVtiN4~ze@Z;>jltfcnpoIcm|1#tA`VA~Ho zQ?~-FPlhp?DhL=Td-4dN8Lf&y8MgvXd3C92t|ZOxBe(fbt45tbrCkBmZ|pp{47p%c z46eF&Y_ymjWMF;X+M%g|Jz~f}<-vZ4Sx49J4pk-rEh7Uosp$Ah0u_)7oj~Qh0Jdb~ zb$Grfu>WKvkXRC6DZkD3L3lSy!aZ>MZ1&G5?eD4jfdN^(1RM$ufoJ9xgY~h5 zZs;J_=@C7qpKo4Bh`aTSmhse*tHOJuw zCy(~0SjjmD?`XM*CDjH4!Idl}?C{I}Ub5tkkcjof?qeVB{!S1G2bX|OQjOq}9uO@{ z16yzhOyxHGfJ+t2QBKRgXTN*zXmmEuA zOM^7(jEd|I{G5A00#%MNibx(SFuno@6YGI)7&0C7%l}lmj6WBd7xN35#}OTvvLJl+ zCUi4dnW^q!PYJ@6T|8&c$%MH(3%AC{EI^Un`*V%o01cZ~=kDoE(Uax8DqBH0^;XP7 z-=}Rv>}3TFn?K%D$Cq32y%($BIx>7OUuaNxGQ~7A=NTF}7 zFu9_A=%JtDIg8JezC;~!^IXh~pZYVj&l5@2E3FPE$H$G| zXT8|wsD)t9Vek31v=rBxN^9xUu`&3Mj-0yDk-ko&TF#~AuOlY4E#qlug&R|5F9)x{ zR1nJ7A$*gf-JTsT=0xZ#<*sP-lJNl(&jDcd)3(4wg5He86189jE%bY5yN8DQ8mQv; zR^Q*w=he8E#JM8>Fu2hZ(Y`ING!iGTYOr_VF(|407M{SOUuXg^T@6rL<516lt-Acc zyAz>ZL;G~6w8s}y2l!y>vm|AAJGufq>_#LoMbd}SfP~3>nq5`@mZ|NUJ-O21>98RH}C?T_DT4Cbbuegn*=@>n^t4)7;kCEO5Ba+IVb%g zPVejdha*zpNBF|QOThLJ@Vhe3(b4GE)&Qq5Zc|ukW8vVCXyX~1#UaD^aNCF7t9?}F zBLg#eyDVF(Wf{(`>zh27lPk~-V&uUrfiCFPF?q9b(Dw0c@FT0$&Lqn_XYn}{Pnu5q zn+QIwhFyqk+2M6ERJ0Pj4%J6iGN&XWIKJQd4+j1j$&MfIfc3u0{kamgiy>I>3;Oottv#w_D$JH4T3VrycLFq6Wc}^8G4m_ zZ#}Gt)mZknZYKxf<-g-U?2li7o}NysW|&oyPK|*e{Q(PQlTi z|9RV!3-@G%;w1;uhV;fs1HK!bv!$+mLev%lCDY0ZjI{8|aC^RfS$EKsB)P$UYi~!; zA^B3u@GurH+c`v)jGfU+T~LDNJ)U(Iw!kD+r*dTbV*qcQKe4C?wy1tUnY8w!>J&wM z?TVP@r&I3~$R+JOO|owF?P=>7BhG{|ni30eon`k{8+qnVkfoigI0&@)fZ~da18i?G zU3d6;Kw_ES%yx-CcV~2Wpw8T_jc@ta7n%pD8zoYr;8R>ABIk&0WGh}}no@B+?`LW* zM2pf6Tcdh2NzR>Kqe>)y8-5bhAoxjNw;JBfHNF$ji=1)nMlLtQG2}OGld`Oar2MV5 z?T4fI3%tD_J7b+z^|A62P;3Pdj~&x#^M%Fb!+SAqDZ|~Zw+7HlPx|(A#&_gZm?u-Q zOubRLZaFgLrGcbgN;Is&FB1J{{T6O&)nF!f)6-H08kRN(^^>lDGxL)o+RC`I@7q_N z+|n_}HSVO^P!(K8oVdnO{7BX+eO;g5bznjFW_AS#}uSex2(*!491B-_YrV_DCz4o z7~IextBZ52qhS-b&JS7!?)_js>2RJYo0VMT_AZe7&<&Lc#2j*x z7)Xi_^KYOVHa~^euOxxi2`vY{`Jhz1y&pUlXziPNkZ2HQxi*e{84rxq>cZnAbA&+0 zMtab{@eGLb&>laAv4s>!8DlKL54@9$mf0}u*%&yA+zn`BLZFEQm^NMwgAH=5V>%Fu zL|e|Kp^eGRro^9FuhJzm+mJPLUj5;lRpboELgf2YjM{bCNgF5KDvBq^0fpl1JpsO<%K4-gP z&u#*{0T-48r@~ynU!xB~QRmJ$t%}wf%`kNZS^*h7#n^ZTYyo^r%SmvKiBkMwnvydQ z#e$3asp7ZJyMtINW)_OOFa6`6K7({G$8NT&HBKnoBn4=GDlvD+c+vPgblLDgS58oy zudEtUXo2PrliKL&(mu-b)4>qrW%J+O*a0V)uNE1?HG6E6;ze~IcL~v%Ts9?R9C`jc zaJL^V{%XYYx)1d-i{l5h?rT%eYdx0>Hf%GfTi>1^QrS{s$klWSRGm7Vy=EoV7c0qa z*BiBN+LrUWe7CP;QcGD{E@JBYed6Hnx{-MP@$<13Ltm7(6JDMz-2jpMW@%Ly7mrCf zc-&LLC)3QArdX0jNLoNz zfl`Wv{Z#pcb8_M{{vrlG{h~K|hM33}ECu^b;a=ryp-CxG^hdM8=MAb3P0a{gFA*^K zK$H;K7BIZJ7wns}b#DV>G|2A1NYCT=aAE1z@*Pc5RsXZ_*;Be z$22mSq{6Eu@~_wGbnBcb5BNy*@qErf|LtZPg$Jj_&wBKp|7b;4R~%`sxTIVTww=AK zy2>b3RpNRBN205q)iS)N72DU1T(|-QVbMsmm9|!Q3B|#CJ@7Wi14|(PzAF8A^id9-FEmLT;&^GL7qU6wC)e?q&mPoROgM6FPyU9lf+ow`>HOcg0o<0CY3 zS`R*;2Uz;O;W3Rm`~k2IcS!Pq>Fxx&KELnDptdo(XNy>B^Pz^WCWV4xAH1h;l1M=@&G%1J zQ>*3%Y|>$2Q!y}`5;maLMNj;Pga_`sza7j7JaTYWVA|4<>CNxKj;V$MerKAgT>PJX z^)RI^lNA_py=A^Y%TVGgVCmFyF+$-Xr)J9Kye76-JTa6uG}Du7W33=vVkg7Vh9#g} zw&Wd0*_y)TX~}`?W<;OhlC+9_c+5o(>v}_B<-#t3gG{FbEjl;t({HivlDpOj$hBct z6Wn=)zaMe-=h0@p<#_CwL6qPijKY`J{02sMxop1kWk3iDOQ5dIv5q0gjJx+rc&lZrKi|N2 zUjLVkGU~d^PrVMph7BA~x4yk9U?!hNhTmApt*f_p0z(~Vk+WE`{l>n7hlA4E&yQYaVvA$Sj@+Dt&o19UIx<*Itt)l{@w zX^{#;VvD4b4xT%|^}A{)gzbK`HtJ0N)x80~U2m)abR2lTBj|jiXDY5UvTqqKJY&-S zp~4|t*-mG=Z~X^e7OZrHr(yLi5mZEtx^j4uy{NH7RZ3VIM|pv-#LVzQ-D#tfT0Y+M2#ggg-cHY%qS zf;V!yi71DvjY)^Lj!&UjJ0f2H)Ufk~nz8949)ECCca-21!mhM-jl(;*rtd}IbzkpA23p5sc3 zfTrCl9nbHd3Lu9r7;oO$ zT6bL>@KY5s4&VGH!tQ;-xbgQOUg*!iUr48M-oi5t9YSm)nU><2E6Trg>_F@|y2Olc zuIfgG56UzwdotZTyY6i zF7E0NE<8c}n9=>)%TiP7Tl<_e z%&UKg-qXk>iaf(aGRo1Bt2J;_;7O#e3_1P-0IeL_C_FcGpsnIFC4|sf?KPx-kk%*- z(L?xYl$WGVh`}({lEpapuw2dzRWnKKGN~C3&s2I8pY3vS5Jk@Kq%NZq$Yq~CT8{B=Yek!+F`FHcPEwg zqNQxSZOn`F^X0dOoY=R%)!LD`yc*s-vK4IfEIMDO;Du`U-pGRMZPLdqo z+5&q5Bo<~tIL<|Cw^bF5jsz(F1L+Dd1nIpfunK8dD&Q|n!ci9s$I+)$H?o@9_nu%i zm<;NG>}v8_0q)EzX7FQ&#|n8sk}wI*{A2{m<|7=0IKBcD8_8&5keTY?Jug@4pTj1_ zo`sXbJCG@0*nGe+V?$rYUceFHQgy(zAsIU+&>n$iPa)@Ls`eg$PE}_n?NAqY*3m@9 z8vsyahoc8+!<&HIPE9^P6`iq0@%z>A8q(v7K^Blm4?1~rBL_nYTI?O@jsJFECZl?Q zG4fjZ3Pygu2D!tt2;}*s6?BpScj+DzFzlpc8JiQfa!MsDK^!(AA4CyjlMa|_rsN2u z^OoSVZ@}1VC?XMV$j1KwOUiSYo_hk}Vbhi>11PZDk*F?gBC^^RoK zlWyk1+REqJbX8lGVvL(SI&bkw z9}|CKw%N{nW>@r)s&$a=#$5Om1yIVcAxzTBiXP9{%~f%@lm89_tXSkdr*`pTS^{Kd zRv>aMD4C0aJ)7Xyh|ym{KBuTO)D5K=YQApEu{m=FU!)r#|3sehj5V>K(98Oa`S4SD z*1}qhS=Lul0TYo^k)kw95*czaD%`C=+ z-c=sW<_*A{34`#Bb9UIPnQHP}D$4+U@q&K9ZU&%0kca1xf4wB!(|NM*0r`jfYA}O zQYG85nyWrrYUf5J|WW`^!$2U(z^a6hg!lS-9 z?o$}kZ3WM`9hz2qm07V6b?(D6?;`8iS#HgX_J$0nsLv$N7Gcs2236@d6!=2q2JavA z^qvt|X#k1s%fJ_ShWp0?4ma*CPXid<3@3c*9%YHxPL?cEMLPEIn;)6!d`p*&>@t_M zNk3Tg`9SSDvrP(p@3pU+s@K}H0k5fx+h+PpVf4_Xt1O>@ZCQhcKjono>-y{IvXa8? zm(LT2>x))$T}A0Xj>q~ldBYO@r!TG(hZVvPuVa}(G0}x_)G3>#@|wkb{c47aNNwSh zZzh9iE<1~gRe$u%MnjC{Jj&)%X*>Jy-5!{uBcpp@tV7gl|DDSS3PCtM&zkS z{rh}Od5B$zyb0|aWda+@mSLm`lm^S2BZ{Z368)&BW~raEknJzF!E~&&NyR;O#7L#z z$f)?!_%%ox;3FJfo!bV|`-)A)qsR-z`@YI$fz7U`xi9&ja9ixBS=Y)&%U$_W>eJV( zpJ$C<>h$1*YommU=+|`S+I{54tHDL%FGqJ-Nj*oN42t(Sx_QHFRQ4=)GL)6XQqDo{ zPU;CYoE9Zwey-dQ$zPHHKY)vk3 z!g;iIRwIXEdx!R>s6r+0niKis z4IBpQIBFqtYO%ziK|K(STe6j~#=Vy^y)2#H9o@s#{4x%GSuEv*Vb!b4=rt~TDU5-kyh1VXQj<}w-WA$ z>SL+8c+e8(7rE1}MUnUvg*8Q86weoO7ZI&JA9AzX@HWa5*bpmY*Sfi;kRiGT+zB_O zo_H2)eX;qz0nQhrpG*TjNmo5!s^cF(_41r|gUD`L72B8(d>Ix}>ulz|-%HG( zF=5I`4sp3;Qu6%D^9v%=_tMjE;4yqAIA2?JwR6X`_e!s`7)+Gueq6ZuyXz0%@$u_3 zZN#~0V|~s*vB3G&-gvCmWS0>c0Bi{B?|d3eN(nr?!?JvHEB- ziJQT%eSyCQHeB4nAN1g6fBb{##;gUA$HNJ6IG#7N}LleWd zt}&t6;(-nJ@uezoKBs~XRK+2{sXwAP!a`iXfe;KEW{Z965pey0CFzOa`b`H?{H_CW zhTb+XmzV(iBWnP;=k=fDXozbQAWy}Sn*egyza*~)b4ILr<!JE*c+Rwr{bpIqouu?!nQzJid1 zvxT$~=r0Ba(ggngrwl@U*h=T4D>s@oUQTAkcIE0!Z|lC_!ygDW@`6u!@i$blgG7be z&g!||f>Y^oD_uu%A12~wcD@s3xyn(q870287VaBf@A$qb%K)!_pMAfkL|y5Uev{K( z{Gi8p3TSxvQ`ScZ7J3~;HsbY@Y2m9`CmM?$IT1G!%$+FCXs>JfUYN{k$E=WX82}bz zKP3Ld0sYNjRJ(ObUZU`#+M(->Mm`HM(_6J$f~-{d^cObt8fS-P=&$!bwx;ry{*;Ko z`#t82`yUdwndt~O88)mYz5CdXxy-UVgJXu?o3NbY^tb96jb`!YhOl%G(X@4wP}(X# z4=Q!R)iA`To9-dp8mNga3aDPfk;z>ki~~|JKk$qdMxbj)q-vvUk%{LzW8~{ZqP5k z7a}KrA&^Hi-=x6c3#_A02BFz2Rlafgtn-w?qhc_5Dew-tZXkAY4tgA6Lw6|!Lac?p zXqc{s@uKl&u+;w?iRVqiAiK*U5cwJ6C?}li(QD%jS<&rG(RsXx9tMs?Q`qz8wxpZ&@b6k-q+N+Vs2Rq91j%21e`H>vLjq@#p}srvGqrPGp2V zXvSyG6Ukt*Qk6^Zxpyk3Ff~bSFKov;Ll#f(Na?BI@fU^v_kY1`5Rhse;z3ZamH3RT dz+r+={2lo%fF1td#;5*2!L 1; - tile[id] = tileData; - makeDrawing(tileData.drw, imageData); + tile[id] = makeDrawing("TIL", id, imageData); } function makeSprite(id, imageData) { - var spriteData = createDrawingData("SPR", id); - spriteData.frameCount = (!imageData) ? 1 : (imageData.length); - spriteData.isAnimated = spriteData.frameCount > 1; - sprite[id] = spriteData; - makeDrawing(spriteData.drw, imageData); + sprite[id] = makeDrawing("SPR", id, imageData); } function makeItem(id, imageData) { - var itemData = createDrawingData("ITM", id); - itemData.frameCount = (!imageData) ? 1 : (imageData.length); - itemData.isAnimated = itemData.frameCount > 1; - item[id] = itemData; - makeDrawing(itemData.drw, imageData); + item[id] = makeDrawing("ITM", id, imageData); } -function makeDrawing(id, imageData) { +function makeDrawing(type, id, imageData) { + // initialize drawing data + var drawingData = createDrawingData(type, id); + drawingData.animation.frameCount = (!imageData) ? 1 : (imageData.length); + drawingData.animation.isAnimated = drawingData.animation.frameCount > 1; + + // initialize renderer cache if (!imageData) { // if there's no image data, initialize with one empty frame imageData = [ @@ -209,7 +203,9 @@ function makeDrawing(id, imageData) { ]; } - renderer.SetDrawingSource(id, imageData); + renderer.SetDrawingSource(drawingData.drw, imageData); + + return drawingData; } /* EVENTS */ @@ -560,6 +556,14 @@ function refreshGameData() { var gameDataNoFonts = serializeWorld(true); Store.set("game_data", gameDataNoFonts); + + // make sure to update the game tool! + // this ensures the game data text is up-to-date + // TODO : this is kind of a hack and it undoes any scrolling the game data textarea + // I should look into a better solution soon (some kind of file-watching-like concept?) + if (gameTool) { + gameTool.menu.update(); + } } /* TIMER */ @@ -750,12 +754,11 @@ function isPortraitOrientation() { function start() { initSystem(); + // TODO : I need to get rid of this event system... it's too hard to debug events.Listen("game_data_change", function(event) { - // TODO -- over time I can move more things in here - // on the other hand this is still sort of global thing that we don't want TOO much of - + // TODO : refactor "openDialogTool" to split out the actual opening from reloading // force re-load the dialog tool - openDialogTool(titleDialogId); + openDialogTool(titleDialogId, /*insertNextToId*/ null, /*showIfHidden*/ false); }); isPlayerEmbeddedInEditor = true; // flag for game player to make changes specific to editor @@ -936,6 +939,9 @@ function start() { tuneTool = makeTuneTool(); blipTool = makeBlipTool(); + // game tool + gameTool = makeGameTool(); + // load panel preferences var prefs = getPanelPrefs(); Store.set('panel_prefs', prefs); // save loaded prefs @@ -950,9 +956,6 @@ function start() { } } - // game tool - gameTool = makeGameTool(); - // about tool initAbout(); } @@ -1384,17 +1387,25 @@ function togglePlayMode(e) { function on_play_mode() { isPlayMode = true; + if (document.getElementById("roomPanel").style.display === "none") { showPanel("roomPanel"); } else { document.getElementById("roomPanel").scrollIntoView(); } + roomTool.setTitlebar("play", "playing..."); roomTool.system._active = false; roomTool.menu.update(); + document.getElementById("appRoot").classList.add("bitsy-playmode"); - // todo : I feel likef I need to take a look at the font manager and simplify things there + + // clear render cache(s) + renderer.ClearCache(); + roomTool.renderer.ClearCache(); + + // todo : I feel like I need to take a look at the font manager and simplify things there loadGame(roomTool.canvasElement, serializeWorld(), fontManager.GetData(defaultFontName)); } @@ -1405,6 +1416,10 @@ function on_edit_mode() { quitGame(); + // clear render cache(s) + renderer.ClearCache(); + roomTool.renderer.ClearCache(); + // reparse world to reset any changes from gameplay var gamedataStorage = Store.get("game_data"); loadWorldFromGameData(gamedataStorage); @@ -1439,7 +1454,6 @@ function on_edit_mode() { } paintTool.reloadDrawing(); - renderer.ClearCache(true); roomTool.resetTitlebar(); roomTool.system._active = true; roomTool.menu.update(); @@ -1739,6 +1753,10 @@ function on_game_data_change_core() { blipTool.selectAtIndex(0); } + if (gameTool) { + gameTool.menu.update(); + } + if (markerTool) { markerTool.Refresh(); } @@ -2808,6 +2826,12 @@ function hackUpdateEditorToolMenusOnLanguageChange() { document.getElementById(tuneTool.id + "CheckLabelText").innerText = tuneTool.name(); } + if (gameTool) { + gameTool.resetTitlebar(); + gameTool.menu.update(); + document.getElementById(gameTool.id + "CheckLabelText").innerText = gameTool.name(); + } + // do this in case the the current sprite dialog changed if (paintTool) { paintTool.reloadDrawing(); diff --git a/editor/script/engine/bitsy.js b/editor/script/engine/bitsy.js index f63e72b3..fe5e1d3a 100644 --- a/editor/script/engine/bitsy.js +++ b/editor/script/engine/bitsy.js @@ -123,7 +123,7 @@ var isPlayerEmbeddedInEditor = false; var renderer; if (engineFeatureFlags.isRendererEnabled) { - renderer = new TileRenderer(); + renderer = new TileRenderer("bitsy"); } var curGameData = null; @@ -390,6 +390,7 @@ function update(dt) { } var isAnyButtonHeld = false; +var isMenuButtonHeld = false; var isIgnoringInput = false; function isAnyButtonDown() { @@ -456,13 +457,14 @@ function updateInput() { isIgnoringInput = false; } - // quit if the user ever presses the restart button + // quit when the user releases the restart button // todo : should I rename it bitsy.BTN_RESTART or bitsy.BTN_QUIT or bitsy.BTN_OFF? - if (bitsy.button(bitsy.BTN_MENU)) { + if (isMenuButtonHeld && !bitsy.button(bitsy.BTN_MENU)) { isGameOver = true; } isAnyButtonHeld = isAnyButtonDown(); + isMenuButtonHeld = bitsy.button(bitsy.BTN_MENU); } var animationCounter = 0; diff --git a/editor/script/engine/renderer.js b/editor/script/engine/renderer.js index 3ee1f5d8..9321af3f 100644 --- a/editor/script/engine/renderer.js +++ b/editor/script/engine/renderer.js @@ -1,5 +1,5 @@ -function TileRenderer() { -bitsy.log("!!!!! NEW TILE RENDERER"); +function TileRenderer(debugName) { +bitsy.log("!!!!! NEW TILE RENDERER: " + debugName); var drawingCache = { source: {}, diff --git a/editor/script/engine/world.js b/editor/script/engine/world.js index 79d9c0ce..15e3ae64 100644 --- a/editor/script/engine/world.js +++ b/editor/script/engine/world.js @@ -2,7 +2,7 @@ // is this the right place for this to live? var version = { major: 8, // major changes - minor: 11, // smaller changes + minor: 12, // smaller changes devBuildPhase: "RELEASE", }; function getEngineVersion() { diff --git a/editor/script/generated/resources.js b/editor/script/generated/resources.js index 7061ee79..a79b1786 100644 --- a/editor/script/generated/resources.js +++ b/editor/script/generated/resources.js @@ -1,6 +1,6 @@ var Resources = { "localization.tsv": "id\ten\tfr\tpt\tes\tit\tru\tsv\tde\tar\tis\thu\teo\tet\tzh\tpl\tja\tchn\tcze\tuk\tbr\nabout_tool_name\tabout\tà propos\tsobre\tsobre\tA proposito di\tо битси\tinfo\tÜber\tعن\tupplýsingar\ta bitsyről\tpri\tbitsy kohta\t相关\tinfo\t説明\tikta bitsy?\tO bitsy\tпро Бітсі\tsobre\nabout_tool_title\tabout bitsy\tà propos de Bitsy\tsobre o Bitsy\tSobre Bitsy\tA proposito di Bitsy\tо битси\tom bitsy\tÜber Bitsy\tعن بيتسي\tum bitsy\ta bitsyről\tpri Bitsy\tbitsy kohta\t关于 Bitsy\to bitsy\tBitsyについて\tikta bitsy?\tO Bisty\tпро Бітсі\tsobre o bitsy\nabout1\thi! bitsy is a little editor for little games or worlds. the goal is to make it easy to make games where you can walk around and talk to people and be somewhere.\tSalut ! Bitsy est un petit moteur de jeu vidéo pour des petits jeux ou des petits mondes. Le but est de rendre accessible la création de jeux dans lesquels tu peux te promener, parler à des personnes et découvrir de nouveaux environnements.\tolá! o bitsy é um pequeno editor para pequenos jogos ou mundos. o objectivo é tornar fácil a criação de jogos onde podes mover-te, falar com pessoas e estar em algum lado.\t¡Hola! Bitsy es un motor para crear pequeños juegos y mundos. El objetivo es crear juegos fácilmente en cualquier lugar.\tCiao! Bitsy è un piccolo motore, concepito per creare piccoli giochi e mondi. Lo scopo è creare giochi dove puoi gironzolare, parlare con qualcuno, ed essere da qualche parte.\tпривет! битси это небольшой редактор для маленьких игр или игровых миров. главная цель этой программы - сделать простым и доступным процесс создания игры, в которой ты можешь ходить, разговаривать и просто быть где-то.\thej! bitsy är ett litet verktyg för små spel eller världar. syftet är att det ska vara lätt att göra spel där du kan gå omkring, prata med folk och vara någonstans.\tHi! Bitsy ist ein kleiner Editor für kleine Spiele oder Welten. Ziel ist, möglichst einfach Spiele machen zu können, in denen man umherlaufen, mit Figuren reden und sich irgendwo wiederfinden kann.\tأهلاً! بيتسي عبارة عن محرر لتصميم الألعاب الصغيرة و العوالم. الهدف تسهيل عملية تصميم الألعاب التي يمكن أن تتحرك وتتحدث مع شخصيات مختلفة في عالمها.\thæ! bitsy er tól til að búa til litla leiki eða heima. tilgangur þess er að auðvelda gerð leikja þar sem þú getur gengið um og talað við fólk og verið til staðar.\tszia! a bitsy egy kicsi fejlesztői eszköz pici játékokhoz és apró világokhoz. a cél, hogy segítségével könnyen létrehozhass olyan játékokat, ahol barangolhatsz, beszélgethetsz emberekkel és felfedezhetsz új világokat.\tsaluton! Bitsy estas eta kreilo por ludetoj kaj mondetoj. Bitsy celas faciligi la kreadon de ludoj pri marŝadi tien-ĉi-tien, paroli ludulojn kaj ĝui la ludomondon.\ttere! bitsy on väike programm millega saab luua väikseid mänge või maailmaid. bitsy eesmärk on teha lihtsaks mängude tegemise, kus saab ringi jalutada, inimestega rääkida ja olla kuskil.\t你好!Bitsy 是一个为小游戏和小世界制作的小编辑器,目的是为了使得制作游戏更容易,你可以在这些游戏中随处走走,随意聊聊,或者去到某个地方。\tCześć! Bitsy to mały edytor do małych gier lub światów. Powstał by ułatwić tworzenie gier, w których możesz chodzić, rozmawiać z ludźmi, i sobie przebywać.\tこんにちは!bitsyはちょっとしたゲームや世界のための編集ツール。歩き回って人と話たり、いろんな場所に行ったりするようなゲームを簡単に作れるようにする事を目指しています。\ttlahowya! maika mamook hihi kopa okok bitsy. bitsy mamook tenas hihi, okok hihi klosh spos maika tiki tlatawa pi wawa tilikum, spos maika tiki wawa yahim.\t\tпривіт! бітсі це невеличкий редактор для маленьких ігор або світів. його мета - спростити створення ігр, де ти можеш ходити, розмовляти з людьми, та просто бути.\tolá! o bitsy é um pequeno editor para pequenos mundos ou jogos. a ideia é facilitar a criação de um jogo onde você possa andar, explorar e conversar em um lugarzinho só seu.\nabout10_link_twitter\tadam\tadam\tadam\tadam\tadam\tадам\tadam\tadam\tآدم\tadam\tadam\tAdam\tadam\tadam\tadam\tadam\tadam\t\tадам\tadam\nabout2\tnot sure where to start? try this helpful\tTu ne sais pas par où commencer ? Essaie ce\tsem certeza por onde começar? tenta este\t¿No sabes por dónde empezar? ¡Prueba este\tNon sai da dove cominciare? Da un occhiata a questo utile\tне знаете с чего начать? прочитайте эту прекрасную обучающую\tVet du inte var du ska börja? här finns en hjälpsam\tNicht sicher wie du loslegen kannst? Probiere diese hilfreiche\tلا تدري من أين تبدأ؟ يمكنك تجربة\tekki viss um hvar best er að byrja? prófaðu þessa hjálplegu\tnem tudod hogyan kezdj neki? akkor kövesd ezt a hasznos\tĉu ne scias vi kion fari je la komenco? se scipovas la anglan, legu ĉi utilan\tpole kindel kust alustada? proovi seda suurepärast\t不知道从哪里开始?这个或许会帮到你。\tnie wiesz gdzie zacząć? wypróbuj ten pomocny\tどこから始めればいいかわからないんですか?じゃあこれをみてください!\twik maika komtuks kata maika chi? klosh maika nanich okok klosh\t\tне знаєш з чого почати? спробуй цей корисний\tsem ideia de por onde começar? tente o nosso\nabout3_link_tutorial\tbitsy tutorial!\ttutoriel Bitsy !\ttutorial do bitsy!\ttutorial de Bitsy!\ttutorial di Bitsy!\tстатью про битси!\tbitsy-guide!\tBitsy Anleitung!\tدورة بيتسي التعليمية\tbitsy kennslu!\tbitsy segédletet!\tBitsy-helposkribo!\tbitsy õpetust!\tBitsy 教程!\tsamouczek bitsy!\tBitsyチュートリアル(英語)。\tbitsy hilp-pipa!\t\tпідручнік по Бітсі!\ttutorial do bitsy!\nabout4\tif you need inspiration, you can\tSi tu as besoin d'inspiration, tu peux\tse precisares de inspiração, podes\tSi necesitas inspiración, puedes\tSe hai bisogno d'ispirazione puoi\tесли вы ищите вдохновения,\tför att få mer inspiration kan du\tFalls du Inspiration suchst, kannst du\tتبحث عن الإلهام؟ لما لا\tef þig vantar innblástur geturðu\tha inspirációra van szükséged,\tse vi volas ideojn por kian ludon krei, provu\tkui vajad inspiratsiooni, võid\t如果你需要灵感,你可以\tjeśli szukasz inspiracji, możesz\tもしインスピレーションが欲しいならこれをみてください→\tspos wik maika komtuks ikta hihi maika mamook, klosh maika\t\tбракує натхнення? можеш\tse precisar se inspirar, você pode\nabout5_link_games\tplay other bitsy games.\tjouer à ces jeux Bitsy.\tjogar outros jogos do bitsy.\tjugar a otros juegos de Bitsy\tgiocare altri giochi creati con Bitsy\tсыграйте в другие битси-игры.\tspela andra bitsy-spel.\tandere Bitsy Spiele spielen\tتلعب بعض ألعاب بيتسي الآخرى\tspilað aðra bitsy leiki.\tjátssz más bitsy játékokkal,\tludi aliajn Bitsy-ludojn.\tmängida teisi bitsy mänge.\t试试其它用 Bitsy 制作的游戏\tzagrać w inne gry bitsy.\t他のBitsyで作られたゲーム。\tkultus hihi kopa huloima tilikum tlaska bitsy hihi.\t\tпограти в інші ігри з Бітсі.\tjogar outros jogos feitos com bitsy.\nabout6\tyou can find many on\tTu peux aussi en trouver plein d'autres sur\tpodes encontrar muitos no\t¡Puedes encontrar otros títulos en\tPuoi trovarne altri su\tмногие из них можно найти на сайте\tdu kan hitta många på\tDu kannst viele von ihnen auf\tيمكنك أن تجد الكثير على\tþú finnur marga slíka á\tvan egy csomó itt:\tekzistas multaj ludoj ĉe\tmitmeid võib leida\t你可以在这里找到很多\tznajdziesz je na\t多くのゲームはここで見つけられます→\thayu bitsy hihi mitlayt kopa\t\tБагато з них можна знайти на\tvocê pode encontrar vários em\nabout7_link_itchio\titch.io\titch.io\titch.io\titch.io\titch.io\titch.io\titch.io\titch.io\titch.io\titch.io\titch.io\titch.io\titch.io\titch.io\titch.io\titch.io\titch.io\titch.io\titch.io\titch.io\nabout8\t, which is a great place to share games!\t, qui est un endroit fantastique pour partager des jeux!\t, um sítio fantástico para partilhar jogos!\tque es un gran lugar para compartir tus creaciones!\tche è un bellissimo luogo per condividere le tue creazioni!\t, это отличное место для того, чтобы делиться своими играми!\t, ett bra ställe att dela sina spel!\tfinden, was auch ein toller Ort ist um deine Spiele zu teilen!\tفأنه المكان الأمثل لمشاركة الألعاب!\t, sem er frábær staður til að deila leikjum!\t- ez egy tök jó oldal ahol megoszthatod a játékaidat!\t, kiu estas bonega retejo por disdoni ludojn!\tlehelt - üks imepärane koht, kus jagada mänge!\t,这是个很棒的分享游戏的地方!\t, które jest świetnym miejscem do dzielenia się grami!\t、このサイトは作ったゲームをシェアするのにおすすめです!\t, okok itch.io klosh twa-pipa spos maika tiki munk-nanich huloima tilikum maika bitsy hihi!\t\t, це чудове місце для поширення ігор!\t, um ótimo lugar para compartilhar jogos!\nabout9\thave fun making things with bitsy!\tAmuse-toi bien avec Bitsy!\tdiverte-te a criar coisas com o bitsy!\t¡Diviértete creando en Bitsy!\tDivertiti creando con Bitsy!\tи пусть творческий процесс будет весёлым и захватывающим!\thoppas du har roligt med bitsy!\tViel Spaß beim Basteln mit Bitsy!\tو لا تنسى أن تستمتع و أنت تستخدم بيتسي!\tskemmtu þér vel við að skapa með bitsy!\tjó szórakozást a bitsyhez!\tĝuu kreadi per Bitsy!\tlõbutse bitsyga luues!\t希望你用 Bitsy 玩的开心!\tbaw się dobrze, tworząc z bitsy!\tBitsyでのゲームづくりを楽しんでください!\tnaika tiki spos maika hayu klosh-tumtum kopa mamook hihi kopa bitsy!\t\tНасолоджуйся творінням з Бітсі!\tdivirta-se criando com bitsy!\naction_add_new\tadd\tajouter\t\t\taggiungi\tдобавить\t\tHinzufügen\tإضافة\tbæta við\thozzáadás\t\t\t\tdodaj\t\t\t\tдодати\tcolocar\naction_back\tback\tretour\t\t\tindietro\tназад\t\tZurück\tرجوع\tbakka\tvissza\t\t\t\twstecz\t\t\tzpět\tназад\tvoltar\naction_cancel\tcancel\tannuler\t\t\tcancella\tотмена\t\tAbbrechen\tإلغاء\thætta við\tmégsem\t\t\t\tanuluj\t\t\t\tскасувати\tcancelar\naction_save\tsave\tsauvegarder\t\t\tsalva\tсохранить\t\tSpeichern\tحفظ\tvista\tmentés\t\t\t\tzapisz\t\t\tuložit\tзберегти\tsalvar\nanimation_frame1\tframe 1\tcalque 1\tframe 1\tframe 1\tframe 1\tкадр 1\tbild 1\tFrame 1\tإطار ١\trammi 1\t1. képkocka\tmovo 1\tkaader 1\t第1帧\tklatka 1\tフレーム1\thulel 1\tframe 1\tкадр 1\tquadro 1\nanimation_frame2\tframe 2\tcalque 2\tframe 2\tframe 2\tframe 2\tкадр 2\tbild 2\tFrame 2\tإطار ٢\trammi 2\t2. képkocka\tmovo 2\tkaader 2\t第2帧\tklatka 2\tフレーム2\thulel 2\tframe 2\tкадр 2\tquadro 2\nanimation_preview\tpreview\taperçu\tpré-vizualizar\tprevisualizar\tanteprima\tпредпросмотр\tförhandsvisning\tVorschau\tمعاينة\tsýnishorn\telőnézet\tantaŭvido\teelvaade\t预览\tpodgląd\tプレビュー\ttenas nanich\tnáhled\tперегляд\tprévia\nanimation_title\tanimation\tanimation\tanimação\tanimación\tanimazione\tанимация\tanimation\tAnimation\tالرسوم المتحركة\threyfimynd\tanimáció\tmovanta bildo\tanimatsioon\t动画\tanimacja\tアニメーション\thulel-picha\tanimace\tанімація\tanimação\nauthor_by\tby\tpar\tde\tpor\tdi\tот\tav\tvon\tبواسطة\teftir\tkészítette:\tde\tautor:\t来自\tautor\tby\tkopa\tautor\tвід\tpor\nauthor_twitter\t@adamledoux\t@adamledoux\t@adamledoux\t@adamledoux\t@adamledoux\t@adamledoux\t@adamledoux\t@adamledoux\t@adamledoux\t@adamledoux\t@adamledoux\t@adamledoux\t@adamledoux\t@adamledoux\t@adamledoux\t@adamledoux\t@adamledoux\t@adamledoux\t@adamledoux\t@adamledoux\navatar_label\tavatar\tavatar\tavatar\tavatar\tavatar\tаватар\tavatar\tAvatar\tالشخصية الممثل\tleikpeð\tavatár\tmovulo\tavatar\t人物\tawatar\tアバター\ttayi picha\tavatar\tаватар\tavatar\naxis_x_label\tx\tx\t\t\tx\tx\t\tx\tx\tx\tx\t\t\t\tx\t\t\tx\tx\tx\naxis_y_label\ty\ty\t\t\ty\ty\t\ty\ty\ty\ty\t\t\t\ty\t\t\ty\ty\ty\nbitsy_title\tBitsy\tBitsy\tBitsy\tBitsy\tBitsy\tБитси\tBitsy\tBitsy\tبيتسي\tBitsy\tBitsy\tBitsy\tBitsy\tBitsy\tBitsy\tBitsy\tBitsy\tBitsy\tБітсі\tBitsy\nbranch_add\tadd branch\tajouter un choix\t\t\taggiungi ramificazione\tдобавить ветвь\t\tVerzweigung hinzufügen\tإضافة فرع\tbæta við grein\telágazás hozzáadása\t\t\t\tdodaj gałąź\t\t\t\tдодати гілку\tcolocar opção\nbranch_type_default\tdefault branch\tchoix par défaut\t\t\tramificazione di default\tветвь по умолчанию\t\tdann\tفرع\tsjálfgefin grein\talapértelmezett elágazás\t\t\t\tgałąź domyślna\t\t\t\tгілка за замовчуванням\topção padrão\nbranch_type_item\titem branch\tchoix avec un objet\t\t\tramificazione con oggetti\tтип ветви объекта\t\tWenn Objekt\tفرع معتمد على أداة\thluta grein\ttárgy elágazás\t\t\t\tgałąź przedmiotu\t\t\t\tгілка з предметом\topção de item\nbranch_type_variable\tvariable branch\tchoix avec une variable\t\t\tramificazione con variabili\tпеременная ветви\t\tWenn Variable\tفرع معتمد على متغير\tbreytu grein\tváltozó elágazás\t\t\t\tgałąź zmiennej\t\t\t\tгілка зі змінною\topção de variável\nbranching_list_description\tgo to the first branch whose condition is true:\taller au premier choix dont la condition est vraie\t\t\tsegui la prima ramificazione la cui condizione è vera:\tперейдите к первой ветви, условие которой истинно:\t\tZeige den ersten Block in dem eine Bedingung erfüllt ist:\tالإتجاة إلى الفرع الأول إذا كان الشرط صحيح:\tfarðu að fyrstu greininni þar sem aðstæður eru sannar:\tmenj az első elágazáshoz, ami igaz:\t\t\t\tprzejdź do pierwszej gałęzi, której warunek jest spełniony:\t\t\t\tпіти на першу гілку, де умова справджується:\tir à primeira opção de condição verdadeira:\nbranching_list_name\tbranching list\tliste à choix\t\t\tlista ramificata\tветвящийся список\t\tVerzweigte Liste\tقائمة متفرعة\tgreinar listi\tszétágazó lista\t\t\t\tlista rozgałęzień\t\t\t\tсписок-розгалуження\tlista de opções\nbrowser_chrome\tchrome\tchrome\tchrome\tchrome\tchrome\tchrome\tchrome\tChrome\tكروم\tchrome\tchrome\tChrome\tChrome\tchrome\tchrome\tchrome\tchrome\tchrome\tchrome\tchrome\nbrowser_firefox\tfirefox\tfirefox\tfirefox\tfirefox\tfirefox\tfirefox\tfirefox\tFirefox\tفيرفوكس\tfirefox\tfirefox\tFirefox\tFirefox\tfirefox\tfirefox\tfirefox\tfirefox\tfirefox\tfirefox\tfirefox\nclose_label\tclose\tfermer\tfechar\tcerrar\tchiudi\tзакрыть\tstäng\tSchließen\tأغلق\tloka\tbezárás\tmalvidu\tsulge\t关闭\tzamknij\t\tipui\tzavřít\tзакрити\tfechar\ncondition_else_if_label\telse if\tsinon si\t\t\taltrimenti se\tиначе, если\t\tsonst - Wenn\telse if\tannars ef\tkülönben, ha\t\t\t\tw przeciwnym wypadku, jeżeli\t\t\t\tінакше, якщо\tou se\ncondition_else_label\telse\tsinon\t\t\taltrimenti\tиначе\t\tsonst\telse\tannars\tkülönben\t\t\t\tw przeciwnym wypadku\t\t\t\tінакше\tou\ncondition_if_label\tif\tsi\t\t\tse\tесли\t\tWenn\tif\tef\tha\t\t\t\tjeżeli\t\t\t\tякщо\tse\ncondition_then_label\tthen\tpuis\t\t\tallora\tзатем\t\tdann\tthen\tþá\takkor\t\t\t\twtedy\t\t\t\tто\tentão\ncondition_type_custom\tcustom\tcustomisée\tcostumizado\tpersonalizado\tpersonalizzato\tспециальное условие\tanpassa\tBenutzerdefiniert\tمعدل\tsérval\tegyedi\tlaŭmia\tmäära oma tingimus\t自定义\tużytkownika\tカスタム\thuloima\tvlastní\tвласний\tcustom\ncondition_type_default\tdefault\tpar défault\tpadrão\tpor defecto\tdefailt\tпо умолчанию\tstandard\tStandard\tافتراضي\tsjálfgefið\talapértelmezett\tnormala\tvaikevalik\t默认\tdomyślna\tデフォルト\tkwan\tvýchozí\tза замовчуванням\tpadrão\ncycle_list_description\trepeat items in a _:\t\t\t\tfrasi in _ che si ripetono:\tповторить объекты в _:\t\tAlle Blöcke werden in _ eingeblendet.\tتكرار البنود في _:\tendurtaktu hluti í _:\tismételd a tárgyakat ebben: _\t\t\t\tpowtarzaj pozycje zapętlone w _:\t\t\t\tповторювати пункти з _:\trepetir itens em _:\ncycle_list_name\tcycle list\tnom de la boucle\t\t\tlista serie\tсписок циклов\t\tSchleifen-Liste\tقائمة دائرية\tlotu listi\tismétlés lista\t\t\t\tlista cyklu\t\t\t\tсписок-цикл\tlista de ciclo\ncycle_name\tcycle\tboucle\t\t\tserie\tцикл\t\tSchleife\tدائري\tlota\tismétlés\t\t\t\tcykl\t\t\t\tцикл\tciclo\ndata_tool_name\tdata\tdonnées du jeu\tdados do jogo\tdatos del juego\tdati del gioco\tигровые данные\tspeldata\tSpieldaten\tبيانات اللعبة\tleikjagögn\tjátékadatok\tludodosiero\tmängu andmed\t游戏数据\tdane\tゲームデータ\thihi kod\tkód hry\tдані гри\tcódigo de jogo\ndefault_end_dlg\tThe end\tFin\tFim\tFin\tFine\tконец\tslut\tEnde\tالنهاية\tEndir\tItt a vége, fuss el véle!\tLudofino\t\t结束\tKoniec\t\talta kopit hihi\t\tКінець\tFim\ndefault_item_dlg\tYou found a nice warm cup of tea\tVous avez trouvé une bonne tasse de thé chaud\tEncontraste um copo com chá quentinho\tEncontraste una buena taza de té\tHai trovato una buona tazza di tè caldo\tвы нашли чашку тёплого чая\tdu hittade en varm kopp te\tDu hast einen schönen warmen Tee gefunden\tلقد وجدت كوب دافئ من الشاي\tÞú fannst heitann bolla af te\tTaláltál egy bögre forró teát\tVi trovis belan, varman tason da teo\t\t你找到了一杯暖心的茶\tZnajdujesz kubek ciepłej herbaty\t\tnaika tlap 1 uskan wam tipso-chuk!\t\tВи знайшли чашку запашного гарячого чаю\tVocê encontrou um chá quentinho\ndefault_sprite_dlg\tI'm a cat\tJe suis un chat\tSou um gato\t\tSono un gatto\tя котейка\tjag är en katt\tIch bin eine Katze\tأنا قطة\tÉg er köttur\tÉn egy cica vagyok\tMi estas kato\t\t我是一只猫\tJestem kotem\t\tpuspus naika\tJá jsem kočka.\tЯ киця\tMeow. Que foi?\ndefault_title\tWrite your game's title here\tEcris le nom de ton jeu ici\tEscreve o título do teu jogo aqui\tEscribe el título de tú juego aqui\tScrivi qui il titolo del tuo gioco\tНапишите название вашей игры здесь\tSkriv spelets titel här\tHier solltest du deinen Spieltitel hinschreiben\tأكتب عنوان لعبتك هنا\tSkrifaðu heiti leiksins þíns hér\tÍrd ide a játékod címét\tSkribu vian ludonomon\tKirjuta oma mängu pealkiri siia\t在这里写下你的游戏标题\tWpisz tutaj tytuł swojej gry\tゲームのタイトルを入力\thihi nim\tZde napište název vaší hry.\tНапиши назву гри тут\tDigite o título do seu jogo aqui\ndestination_label\tdestination\tdestination\tdestino\tdestino\tdestinazione\tточка прибытия\tdestination\tAusgang\tالمقصد\tákvörðunarstaður\térkezés\tcelo\t\t目的地\tcel przejścia\t\tko\t\tпризначення\tdestino\ndialog_action_category_dialog\tdialog\tdialogue\t\t\tdialogo\tдиалог\t\tDialog\tحوار\tsamtal\tpárbeszéd\t\t\t\tdialog\t\t\trozhovor\tдіалог\tdiálogo\ndialog_action_category_exit\texit and ending actions\t\t\t\tazioni di uscita e finale\tвыход и завершение действий\t\tAktionen: Übergänge & Enden\tتصرفات الخروج و النهاية\taðgerðir fyrir útgöngleiðir og endalok\tkijárat és befejezés akciók\t\t\t\takcje przejścia i zakończenia\t\t\t\tдії виходу та закінчень\tações de saída e final\ndialog_action_category_item\titem and variable actions\t\t\t\tazioni di variabili e oggetti\tдействия с объектами и переменными\t\tAktionen: Objekte & Variablen\tتصرفات الأدوات و المتغيرات\taðgerðir fyrir hluti og breytur\ttárgy és változó akciók\t\t\t\takcje przedmiotów i zmiennych\t\t\t\tдії предметів та змінних\tações de item e variável\ndialog_action_category_list\tlists\tlistes\t\t\tliste\tсписки\t\tListen\tقائمة\tlistar\tlisták\t\t\t\tkategorie list\t\t\tseznam\tсписки\tlistas\ndialog_action_item_decrease\tdecrease item count\t\t\t\tdiminuisci conteggio oggetti\tуменьшить счётчик объекта\t\tObjekt-Anzahl verringern\tتقليص عدد الأدوات\tfækka tölu hluta\ttárgyak számának csökkentése\t\t\t\tzmniejsz liczbę przedmiotów\t\t\t\tзменшити кількість предмету\tdiminuir itens\ndialog_action_item_increase\tincrease item count\t\t\t\taumenta conteggio oggetti\tувеличить счётчик объекта\t\tObjekt-Anzahl erhöhen\tزيادة عدد الأداوات\tfjölga tölu hluta\ttárgyak számának növelése\t\t\t\tzwiększ liczbę przedmiotów\t\t\t\tзбільшити кількість предмету\taumentar itens\ndialog_action_item_set\tset item count\t\t\t\timposta conteggio oggetti\tзадать значение счётчика\t\tObjekt-Anzahl festlegen\tتعيين عدد الأدوات\tsetja tölu hluta\ttárgyak számának beálltása\t\t\t\tustaw liczbę przedmiotów\t\t\t\tвстановити кількість предмету\tdefinir itens\ndialog_action_locked_set\tlock / unlock\tverrouiller/déverrouiller\t\t\tblocca/sblocca\tзаблокировать / разблокировать\t\tsperren / entsperren\tقفل / فتح\tlæsa / aflæsa\tnyitás / zárás\t\t\t\tzablokuj / odblokuj\t\t\t\tзамкнути / відімкнути\ttrancar / destrancar\ndialog_action_variable_change\tchange variable value\t\t\t\tcambia valore variabile\tизменить значение переменной\t\tVariablen-Wert ändern\tتغيير قيمة المتغير\tbreyta gildi í breytu\tváltozó értékének módoítása\t\t\t\tzmień wartość zmiennej\t\t\t\tзмінити значення змінної\tmudar valor de variável\ndialog_action_variable_set\tset variable value\t\t\t\timposta valore variabile\tзадать значение переменной\t\tVariablen-Wert festlegen\tتعيين قيمة المتغير\tsetja gildi í breytu\tváltozó értékének beálltása\t\t\t\tustaw wartość zmiennej\t\t\t\tвстановити значення змінної\tdefinir valor de variável\ndialog_block_basic\tdialog\tdialogue\tdiálogo\tdiálogo\tdialogo\tфаза\tdialog\tDialog\tحوار\tsamtal\tpárbeszéd\tparolo\tdialoog\t对话\tdialog\tダイアログ\twawa\trozhovor\tдіалог\tdiálogo\ndialog_block_conditional\tconditional\tconditions\tcondicional\tcondicional\tcondizionale\tусловие\tvillkor\tBedingungen\tشرطي\tskilyrt\tfeltételes\tse...do kodo\ttingimusega\t条件\twarunek\t条件\tspos\tpodmínka\tумова\tcondicional\ndialog_block_list\tlist\tliste\tlista\tlista\tlista\tсписок\tlista\tListe\tقائمة\tlisti\tlista\tlisto\tlist\t列表\tlista\tリスト\tlist\tseznam\tсписок\tlista\ndialog_block_new\tnew section\tnouvelle section\tnova secção\tnueva sección\tnuova sezione\tновая секция\tny replik\tNeuer Absatz\tقسم جديد\tnýr hluti\túj szakasz\tnovan parton\tlisa dialoogi kast\t新部分\tnowa sekcja\t新規セクション\tchi wawa sitkum\tnová část\tновий розділ\tnova seção\ndialog_conditional_add\tadd option\tajouter une option\tadicionar opção\tañadir opción\taggiungi opzione\tдобавить опцию\tlägg till alternativ\tOption hinzufügen\tإضافة أختيار\tnýr liður\topció hozzáadása\taldonu elekton\tlisa võimalus\t加入选项\tdodaj opcję\tオプション追加\tchi spos\t\tдодати опцію\tcolocar opção\ndialog_conditional_when\twhen\tquand\tquando\tcuando\tquando\tкогда\tom\tWenn\tمتى\tþegar\tha\tse\tkui\t当\tjeżeli\tいつ\tspos\t\tколи\tquando\ndialog_effect_color1\tcolor 1\tcouleur 1\tcôr 1\tcolor 1\tcolore 1\tцвет 1\tfärg 1\tFarbe 1\tلون ١\tlitur 1\tszín 1\tkoloro 1\tvärv 1\t颜色1\tkolor 1\t色1\ttsum 1\tbarva 1\tколір 1\tcor 1\ndialog_effect_color2\tcolor 2\tcouleur 2\tcôr 2\tcolor 2\tcolore 2\tцвет 2\tfärg 2\tFarbe 2\tلون ٢\tlitur 2\tszín 2\tkoloro 2\tvärv 2\t颜色2\tkolor 2\t色2\ttsum 2\tbarva 2\tколір 2\tcor 2\ndialog_effect_color3\tcolor 3\tcouleur 3\tcôr 3\tcolor 3\tcolore 3\tцвет 3\tfärg 3\tFarbe 3\tلون ٣\tlitur 3\tszín 3\tkoloro 3\tvärv 3\t颜色3\tkolor 3\t色3\ttsum 3\tbarva 3\tколір 3\tcor 3\ndialog_effect_drawing\tinsert drawing\tinsérer un dessin\t\t\tinserisci disegno\tвставить рисунок\t\tZeichnung einfügen\tإضافة رسم\tsetja inn teikningu\trajz beillesztése\t\t\t\twstaw rysunek\t\t\t\tвставити малюнок\tinserir desenho\ndialog_effect_new\ttext effects\teffets de texte\tefeitos do texto\tefectos de texto\teffetti di testo\tэффекты текста\ttexteffekter\tText Effekte\tمؤثرات كتابية\ttextaáhrif\tszövegeffektek\tskribostiloj\tteksti efektid\t文字效果\tefekt tekstu\tテキストエフェクト\tala pipa\ttextové efekty\tефекти тексту\tefeitos de texto\ndialog_effect_rainbow\trainbow\tarc-en-ciel\tarco-íris\tarcoiris\tarcobaleno\tрадужный\tregnbåge\tRegenbogen\tقوس قزح\tregnbogi\tszivárványos\tmultkolora\tvikerkaar\t彩虹\ttęcza\tレインボー\tolawtet\tduha\tвеселка\tarco-íris\ndialog_effect_shaky\tshaky\ttremblement\ttremido\ttembloroso\ttremante\tдрожащий\tskakig\tzitternd\tمهزوز\thristist\tremegő\tmovada\tvärisev\t晃动\tdrżenie\t振動\tshuk-shuk\ttřas\tтремтіння\ttremer\ndialog_effect_wavy\twavy\tvague\tondulado\tondulado\tondulato\tволнистый\tvågor\twellig\tمموج\tbylgjað\thullámos\tondeca\tlainetav\t波纹\tfala\t波紋\thantli\tvlnění\tволна\tondular\ndialog_hide_code\thide code\tcacher le code\tesconder código\tesconder código\tnascondi codice\tспрятать код\tgöm kod\tCode verbergen\tأخفي شفرة البرنامج\tfela kóða\tforráskód elrejtése\tmalvidu kodon\tpeida kood\t隐藏代码\tukryj kod\tコード格納\tipui kod\tskrýt kód\tприховати код\tesconder código\ndialog_list_add\tadd line\tajouter une ligne\tadicionar fala\tañadir línea\taggiungere frase\tдобавить линию\tlägg till replik\tZeile hinzufügen\tإضافة سطر\tný setning\tsor hozzáadása\taldonu skribon\tlisa rida\t加入行\tdodaj linijkę\t行の追加\tchi layn\tpřidat řádek\tдодати рядок\tcolocar linha\ndialog_list_order\torder:\tordre :\tordem:\torden:\tordine\tпорядок:\tordning:\tReihenfolge\tالترتيب:\tröð:\tsorrend:\tordo:\tjärjekord:\t次序:\tkolejność:\t順序:\tiht-iht:\tpořadí:\tпорядок:\tordem:\ndialog_no_selection\tSelect a sprite or item to edit its dialog.\tsélectionner un sprite ou un item pour éditer ses lignes de dialogue\tseleciona um sprite ou item para editares o seu diálogo\tSelecciona un sprite u objeto para editar este diálogo\tSeleziona uno sprite per modificare questo dialogo\tВыберете спрайт или объект, чтобы редактировать прикреплённый диалог.\tvälj en sprite eller föremål för att ändra dess dialog\tWähle einen Sprite oder ein Objekt aus, um den Dialog zu editieren.\tأختار رسمة تفاعلية او أداة لتعديل الحوار المرتبط بها.\tVeldu sprota eða hlut til að breyta þessu samtali.\tVálassz ki egy sprite-ot vagy tárgyat.\telektu enludanon aŭ objekton por redakti ties parolon.\tVali kuju või ese, et muuta selle dialoogi.\t选择一个精灵或物品编辑它的对话。\tWybierz sprite lub przedmiot żeby edytować.\tスプライトもしくはアイテムを選択してそのダイアログを編集\tpik iktas pi tilikum kopa tsum tlaska wawa.\tVyberte objekt nebo předmět a editujte daný rozhovor.\tВиберіть спрайт або предмет, щоб редагувати його діалог.\tSelecione um ator ou item para editar o seu diálogo.\ndialog_show_code\tshow code\tafficher le code\tmostrar códiogo\tmostrar código\tmostra codice\tпоказать код\tvisa kod\tCode zeigen\tأظهر شفرة البرنامج\tsýna kóða\tforráskód mutatása\tvidu kodon\tnäita koodi\t显示代码\tpokaż kod\tコード表示\tnanich kod\tzobrazit kód\tпоказати код\tmostrar código\ndialog_start_preview\tpreview\taperçu\tpré-vizualizar\tprevisualizar\tanteprima\tпредпросмотр\tförhandsvisning\tVorschau\tمعاينة\tsýnishorn\telőnézet\tantaŭvidu\teelvaade\t预览\tpodgląd\tプレビュー\ttenas nanich\tnáhled rozhovoru\tперегляд\tprévia\ndialog_tool_name\tdialog\tdialogue\tdiálogo\tdiálogo\tdialogo\tдиалог\tdialog\tDialoge\tحوار\tsamtöl\tpárbeszéd\tskribejo\tdialoog\t对话\tdialogi\tダイアログ\twawa\trozhovor\tдіалог\tdiálogo\ndownload_data\tsave data\ttélécharger les données\tdescarregar data\tdescargar data\tscarica dati\tскачать данные\tladda ned data\tDaten herunterladen\tتحميل المعلومات\thala niður gögnum\tadatok letöltése\tprenu dosieron\tlae alla andmed\t下载数据\tpobierz dane\tデータをダウンロード\tiskum hihi kod\tstáhnout kód\tзавантажити дані\tbaixar código\ndownload_font\tsave font\ttélécharger la police\tdescarregar fonte\tdescargar fuente\tscarica font\tскачать шрифт\tladda ned typsnitt\tSchriftart herunterladen\tتحميل الخط\thala niður leturgerð\tbetűtípus letöltése\tprenu tiparon\tlae alla font\t下载字体\tpobierz czcionkę\tフォントをダウンロード\tiskum .bitsyfont\tstáhnout font\tзавантажити шрифт\tbaixar fonte\ndownload_game\tsave game\ttélécharger le jeu\tdescarregar jogo\tdescargar juego como html\tscarica gioco\tскачать игру\tladda ned\tSpiel herunterladen\tتحميل اللعبة\thala niður leik\tjáték letöltése\tprenu ludon\tlae alla mäng\t下载游戏\tpobierz grę\tゲームをダウンロード\tiskum hihi\tstáhnout hru\tзавантажити гру\tbaixar o jogo\ndownload_html\tdownload game as html file:\ttélécharger en fichier html\tdescarregar jogo como ficheiro html:\tdescargar juego como html\tscarica il gioco come html\tскачать игру как html файл:\tladda ned spelet som html-fil:\tLade das Spiel als HTML Datei herunter:\tتحميل اللعبة كملف html\thala niður leik sem html skjal\tjáték letöltése html fájlként:\tprenu la ludon kiel HTML-dosieron:\tlae alla mäng html failina:\t下载游戏为 html 文件:\tpobierz grę jako plik html:\tゲームをhtmlファイルとしてダウンロード\tiskum hihi kakwa .html:\tstáhnout hru v .html\tзавантажити гру як файл HTML:\tbaixar o jogo como arquivo html:\ndownload_tool_name\tsave\ttélécharger\tdescarregar\tdescargar\tscarica\tскачать\tladda ned\tHerunterladen\tتحميل\tniðurhal\tletöltés\tprenu (elŝutu)\tlae alla\t下载\tpobierz\tダウンロード\tmunk-iskum hihi\tstáhnout\tзавантажити\tbaixar\neditor_settings\ttool settings\tparamètres de l'éditeur\tdefinições do editor\tajustes del editor\timpostazioni dell'editor\tнастройки редактора\teditor-inställningar\tEditor-Einstellungen\tإعدادات المحرر\tstillingar á tóli\tszerkesztő beállításai\tkreila elektaro\tbitsy seaded\t编辑器设置\tustawienia edytora\tエディター設定\tedita setins\tnastavení editoru\tналаштування редактору\tdefinições de editor\nending_dialog\tending dialog\tfin de dialogue\tdiálogo de final\tdialógo de final\tdialogo del finale\tтекст концовки\tslut-dialog\tEnd-Nachricht\tحوار النهاية\tenda samtal\tbefejező párbeszéd\tfinluda parolo\t\t结局对话\tdialog zakończenia\t\tkopit-hihi taim wawa\t\tдіалог закінчення\tdiálogo de final\nending_label\tending\tfin\tfinal\tfinal\tfinale\tконцовка\tslut\tEnde\tنهاية\tendir\tbefejezés\tludofino\tlõpp\t结局\tzakończenie\tエンディング\tkopit-skwil\tkonec hry\tзакінчення\tfinal\nending_place\tplace ending\tajouter une fin\tcolocar final\tcolocar final\tpiazza finale\tрасположить концовку\tplacera slut\tPlatziere Ende\tمكان النهاية\tstaðsetja enda\tbefejezés elhelyezése\tmetu finon\tpaiguta lõpp\t安排结局\tumieść zakończenie\tエンディング配置\tmunk-mitlait kopit-skwil\tumístit konec hry\tрозмістити закінчення\tcolocar final\nending_place_help\tclick space in room to add ending\tcliquez une case dans la salle pour ajouter une fin\tclica num espaço da sala para adicionar um final\thaz click en un espacio de la sala para añadir un final\tfai click nella stanza per aggiungere un finale\tщёлкните на точку пространстве, чтобы добавить концовку\tklicka någonstans i rummet för att lägga till ett slut\tKlicke einen Bereich in einem Raum an, um ein Ende zu platzieren\tحدد فراغ في الغرفة لوضع النهاية\tsmelltu á reit í rýminu til að bæta við enda\tkattints valahova a szobában a befejezés elhelyezéséhez\tklaku enĉambre por aldoni ludofinon\tvali toa ruut kuhu paigutada lõpp\t在房间中选中格子增加结局\tkliknij na wolnym miejscu w pomieszczeniu, aby dodać zakończenie\tルームの空いている場所をクリックしてエンディングを追加\tkwutl speis spos maika tiki munk-mitlait kopit-skwil\tvložte konec hry kliknutím do prostředí místnosti\tклацни місце, де буде закінчення\tclique na cena para colocar um final\nending_remove\tremove selected ending\tretirer la fin sélectionnée\tremover final selecionado\teliminar el final seleccionado\tcancella il finale selezionato\tубрать выбранную концовку\tta bort det valda slutet\tEntferne ausgewähltes Ende\tامسح النهاية المختارة\tfjarlæga valinn enda\tkiválasztott befejezés törlése\tforigu ĉi ludofinon\tkustuta valitud lõpp\t移除已选择的结局\tusuń wybrane zakończenie\t選択中のエンディングを削除\tmunk-heilo okok kopit-skwil\todstranit vybraný konec hry\tприбрати обране закінчення\ttirar final selecionado\nendings_tool_name\tendings\tfins\tfinais\tfinales\tfinali\tконцовки\tslut\tEnden\tنهايات\tendar\tbefejezések\tludofinoj\tlõpud\t结局\tzakończenia\tエンディング\tkopit\tkonce hry\tзакінчення\tfinais\nexit_click_add\tclick space in room to add exit\tCliquer un espace dans la salle pour ajouter une sortie\tclica num espaço da sala para adicionar uma saída\thaz click en un espacio de la sala para añadir una salida\tclicca nella stanza per aggiungere l'uscita\tкликните в панели пространства, чтобы добавить точку выхода\tklicka i rummet för att lägga till en utgång\tDrücke Leertaste im Raum um einen Ausgang hinzuzufügen\tحدد فراغ في الغرفة لوضع النهاية\tsmelltu á reit í rýminu til að bæta við útgönguleið\tkattints valahova a szobában a kijárat elhelyezéséhez\tklaku spacon enĉambre por aldoni pordon\t\t在房间中选中格子增加出口\tkliknij na wolnym miejscu w pomieszczeniu, aby dodać przejście\t\tspos maika tiki mash lapot, kwutl skwil (lapot-ilahi) kopa loom.\tvložte průchod kliknutím do prostředí místnosti\tклацни місце, де буде вихід\tclique na cena para colocar uma saída\nexit_delete\tdelete selected exit\tsupprimer la sortie sélectionnée\tapagar saída selecionada\tborrar salida seleccionada\tcancella uscita selezionata\tудалить выбранную точку выхода\tta bort den valda utgången\tAusgewählten Ausgang löschen\tإزالة المخرج المختار\teyða valdri útgönguleið\tkiválasztott kijárat törlése\tforigu ĉi pordon\tkustuta valitud väljapääs\t删除已选中的出口\tusuń wybrane przejście\t選択中の出口の削除\tmunk-heilo okok lapot\tsmazat vybraný průchod\tприбрати обраний вихід\ttirar saída selecionada\nexit_destination\tthis exit goes to\tcette sortie va à\testa saída leva-te a\testa salida te lleva a\tquesta uscita ti porta a\tэта точка выхода ведёт к\tdenna utgång leder till\tDieser Ausgang führt zu\tهذا المخرج يؤدي إلى\tþessi útgönguleið fer til\tkijárat ide\tĉi pordo iras al\tsee väljapääs viib\t这个出口去向\tto przejście prowadzi do\tこの出口はここに向かいます\tokok lapot tlatawa\ttento průchod vede do\tцей вихід прямує до\tessa saída sai em\nexit_destination_move\tmove destination\tdéplacer la destination\t\t\tmuovi destinazione\tпереместить точку прибытия\t\tZiel verschieben\tتحريك المقصد\tfæra ákvörðunarstað\térkezés mozgatása\t\t\t\tzmień pozycję docelową\t\t\t\tперемістити призначення\tmover destino\nexit_dialog\texit dialog\tfermer le dialogue\t\t\tinterrompi il dialogo\tвыход из диалога\t\tDialog\tحوار يحدث عند الخروج\tljúka samtali\tkilépés a párbeszédből\t\t\t\tdialog przejścia\t\t\t\tдіалог виходу\tsair de diálogo\nexit_dialog_lock_add\tadd lock\tajouter un verrou\t\t\tAggiungi blocco\tдобавить блокировку\t\tSperre\tاضافه قفل\tbæta við lás\tzár hozzáadása\t\t\t\tdodaj blokadę\t\t\t\tдодати замок\ttrancar\nexit_dialog_lock_default_text1\tThe key opens the door!\tLa clé ouvre la porte!\t\t\tLa chiave apre la porta!\tЭтот ключ открывает дверь!\t\tDer Schlüssel öffnet die Tür!\tالمفتاح يستعمل لفتح الباب!\tLykillinn opnar hurðina!\tA kulcs nyitja az ajtót.\t\t\t\tKlucz otwiera drzwi!\t\t\t\tКлюч відчиняє двері!\tA chave abre a porta!\nexit_dialog_lock_default_text2\tThe door is locked...\tLa porte est verrouillée...\t\t\tLa porta è chiusa a chiave...\tДверь заперта...\t\tDie Tür ist verschlossen...\tالبال مقفل بإحكام ...\tHurðin er læst...\tAz ajtó zárva...\t\t\t\tDrzwi są zamknięte na klucz…\t\t\t\tДвері зачинені…\tA porta está trancada...\nexit_dialog_lock_name\tlocked exit\tsortie verrouillée\t\t\tUscita bloccata\tЗаблокированный выход\t\tGesperrter Übergang\tمخرج مقفل\tlæst útgönguleið\tzárt kijárat\t\t\t\tzablokowane przejście\t\t\t\tзамкнений вихід\tsaída trancada\nexit_dialog_narration_add\tadd narration\t\t\t\taggiungi narrazione\tдобавить рассказ\t\tErzählung\tإضافة سرد\tbæta við frásögn\tnarráció hozzáadása\t\t\t\tdodaj narrację\t\t\t\tдодати розповідь\tcolocar narração\nexit_dialog_narration_default_text\tYou walk through the doorway\t\t\t\tAttraversi la porta\tТы проходишь через дверной проём\t\tDu gehst durch die Tür\tأنت تمشي عبر المدخل\tÞú gengur í gegnum dyragáttina\tÁtmész az ajtón\t\t\t\tPrzechodzisz przez drzwi\t\t\t\tВи проходите через дверний отвір\tVocê entrou pela porta\nexit_dialog_narration_name\texit narration\t\t\t\tinterrompi narrazione\tзавершающий рассказ\t\tÜbergangs-Erzählung\tسرد يحدث عند الخروج\tútgangs frásögn\tkilépés a narrációból\t\t\t\tnarracja przejścia\t\t\t\tрозповідь при виході\tsair da narração\nexit_label\texit\tsortie\tsaída\tsalida\tuscita\tточка выхода\tutgång\tEingang\tمخرج\tútgönguleið\tkijárat\tpordo\t\t退出\tprzejście\t\tlapot\tprůchod\tвихід\tsair\nexit_new\tplace new exit\tajouter une nouvelle sortie\tcolocar uma nova saída\tcoloca una nueva salida\tpiazza una nuova uscita\tрасположить новую точку выхода\tplacera ny utgång\tPlatziere neuen Ausgang\tوضع مخرج جديد\tsetja nýja útgönguleið\túj kijárat elhelyezése\tmetu novan pordon\taseta uus väljapääs\t放置新出口\tumieść nowe przejście\t新規出口の配置\tmunk-mitlait chi lapot\tumístit nový průchod\tдодати новий вихід\tcolocar uma nova saída\nexit_one_way_label\tone-way exit\t\t\t\tuscita a senso unico\tвыход в одну сторону\t\tEinseitiger Übergang\tمخرج بإتجاة واحد\teinstefnu útgönguleið\tegyirányú kijárat\t\t\t\twyjście w jedną stronę\t\t\t\tодносторонній вихід\tsaída de um lado\nexit_options\texit options\toptions de sortie\topções de saída\topciones de salida\topzioni dell'uscita\tопции точки выхода\tutgångs-inställningar\tÜbergangs-Optionen\tخيارات المخرج\tútgöngu valmöguleikar\tkijárat beállítások\tpordaj elektaroj\t\t对出选项\topcje przejścia\t\tkata lapot?\t\tопції виходу\topções de saída\nexit_return_label\treturn exit\t\tsaída de retorno\tregresar salida\tuscita di ritorno\tточка возвращения\tretur\tAusgang\tإعادة المخرج\tbaka til útgangs\tvisszaút\trevenila pordo\t\t返回退出\tprzejście powrotne\t\tkilapi lapot\t\tзворотній вихід\tsaída de retorno\nexit_selected\tselected exit\tsortie sélectionnée\tsaída selecionada\tsalida seleccionada\tuscita selezionata\tвыбрать точку выхода\tvald utgång\tAusgewählter Ausgang\tالمخرج المختار\tvalin útgönguleið\tkiválasztott kijárat\tĉi pordo\thetkel valitud väljapääs\t已选中的出口\twybrane przejście\t出口選択中\tokok lapot\tvybraný průchod\tобраний вихід\tsaída selecionada\nexit_selected_none\tno exit selected\tpas de sortie sélectionnée\tnão há uma saída selecionada\tno has seleccionado una salida\tnon hai selezionato nessuna uscita\tни одна точка выхода не выбрана\tingen vald utgång\tKein Ausgang ausgewählt\tلم يتم إختيار مخرج\tengin útgönguleið valin\tnincs kijárat kiválasztva\telektu pordon\thetkel pole ühtki väljapääsu valitud\t没有出口被选中\tnie wybrano żadnego przejścia\t出口未選択\tikta lapot?\tprůchod není vybrán\tвихід не обраний\tnenhuma saída selecionada\nexit_transition_label\ttransition effect\teffet de transition\tefeito de transição\tefectos de transición\teffetto di transizione\tэффект перехода\tövergångseffekt\tÜbergangs-Effekt\tالمؤثرات الإنتقالية\tumskipti\táttűnések\tporda-al-porda stilo\t\t转场效果\tefekt przejścia\t\tkata tlatawa chi loom\t\tефект переходу\tefeito de transição\nexits_tool_name\texits\tsorties\tsaídas\tsalidas\tuscite\tточки выхода\tutgång\tÜbergänge\tمخارج\tútgangar\tkijáratok\tpordoj\tväljapääsud\t出口\tprzejścia\t出口\tlapot\tprůchody\tвиходи\tsaídas\nexplorer_tool_name\tfind drawing\ttrouver un dessin\tprocurar desenho\tbuscar dibujo\tcerca disegno\tнайти рисунок\thitta bilder\tAlle Zeichnungen\tأبحث عن رسم\tteikningar\trajz keresése\ttrovu desegnon\totsi joonistusi\t素材库\tznajdź rysunek\t絵を探す\ttlap picha\tvyhledat objekt\tзнайти малюнок\tencontrar desenho\nexpression_builder_all_clear\tAC\t\t\t\tC\tочистить всё\t\tDEL\tAC\tAC\tösszes törlése\t\t\t\tAC\t\t\t\tAC\tAC\nfilter_placeholder\tfilter drawings\tFiltrer les dessins\tfiltrar desenho\tfiltrar dibujos\tFiltra i disegni\tвведите название рисунка\tsök bilder\tSuche Zeichnungen..\tصفي الرسومات\tfinna teikningar\trajz keresése\tforelektu desegnojn\t\t过滤图画\tfiltruj rysunki\t\ttlap picha\t\tфільтрувати малюнки\tfiltrar desenhos\nfont_arabic\tArabic\tArabe\tÁrabe\tarábico\tArabo\tарабский шрифт\tArabiska\tArabische Schrift\tالعربية\tArabískt\tarab\tla araba\t\tArabic\tArabska\t\talab wawa\t\tArabic\tArábico\nfont_arabic_description\tPixel font with Arabic characters\tPolice d'écriture avec l'alphabet arabe\tfonte pixelizada com caracteres árabes\tFuente pixel con carácteres arábicos.\tFont pixel con caratteri arabi\tописание арабского шрифта\tPixel-typsnitt med Arabiska tecken\tPixel-Schrift mit arabischen Buchstaben\tخط بكسل يحتوي على الحروف العربية\tSmátt letur sem inniheldur stafi fyrir arabísku.\tpixelbetűtípus arab karakterekkel\ttiparo por la araba lingvo\t\t使用 Arabic 字母的像素字体\tCzcionka pikselowa ze znakami Arabskimi\t\tpiksel pipa-tsum kopa alab wawa\t\tПіксельний шрифт з арабськими літерами\tFonte pixel com caractéres arábicos\nfont_ascii_small\tASCII Small\tASCII - petit\tASCII - pequeno\tASCII - pequeño\tASCII piccolo\tASCII Small\tASCII Small\tASCII Small\tASCII صغير\tASCII smátt\tASCII kicsi\tASCII Eta\tASCII Väike\tASCII Small\tASCII Mała\tASCII Small\ttenas ASCII\tASCII malé\tASCII Small\tASCII Small\nfont_ascii_small_description\tSmall font limited to ASCII, which includes English characters and some symbols.\tPetite police limitée à l'ASCII, incluant les caractères anglais et quelques symboles.\tFonte pequena limitada a ASCII que inclui caracteres ingleses e pequenos símbolos\tLa fuente pequeña sólo sirve para carácteres ASCII, que incluye los carácteres del inglés y algunos símbolos.\tFont piccolo, limitato all'ASCII, include i caratteri dell'inglese e alcuni simboli.\tмелкий шрифт только для ASCII, включая английские буквы и некоторые символы\tLitet ASCII-typsnitt, innehåller engelska bokstäver och vissa tecken\tKleine Schriftart, auf ASCII limitiert (englische Zeichen).\tخط صغير مقتصر على الـASCII، الذي يحتوي على الحروف الأنجليزية و بعض الرموز.\tSmátt letur sem styður ASCII stafi. ASCII staðallinn inniheldur enska stafi og algeng tákn.\tKisméretű betűtípus az angol ábécé betűivel és néhány speciális karakterrel\tMalgranda dosiero, nur anglaj literoj de ASCII. Ne ekzistas esperantaj (ĉapelitaj) literoj.\tVäike font ASCII piires, mis sisaldab Inglise keel tähti ja sümboleid.\t受 ASCII 限制的小字体,包含英文字母和一些符号。\tMała czcionka ograniczona do ASCII, angielskie litery i niektóre symbole.\t英語といくつかの記号を含む、ASCIIに限られる小さいフォント\twik hayu pipa-tsum. kopit tlosh spos maika tiki kopit ASCII tsum (pastin wawa pi wik-hayu huloima tsum).\t\tМаленький шрифт, обмежений ASCII, тобто англійські літери та ще деякі.\tPequena fonte limitada a ASCII, incluindo alguns carácteres e símbolos em inglês.\nfont_custom_description\t\"Upload your own custom font in the \"\".bitsyfont\"\" format!\"\t\"Importe ta propre police customisée dans le format \"\".bitsy\"\"!\"\t\"Envia a tua própria fonte costumizada no formato \"\".bitsyfont\"\"\"\tSube tú fuente personalizada en el formato “.bitsyfont”!\t\"Carica il tuo font personale nel formato \"\".bitsyfont\"\"\"\t\"загрузить собственный шрифт в формате \"\".bitsyfont\"\".\"\t\"Ladda upp ett eget typsnitt med filformatet \"\".bitsyfont\"\"\"\t\"Lade deine eigene Schriftart im \"\".bitsyfont\"\" Format hoch!\"\t\"أرفع خطك المعدل من ملف \"\"bitsyfont.\"\"!\"\t\"Notaðu þína eigin leturgerð með því að hlaða inn \"\".bitsyfont\"\" skrá!\"\t\"Töltsd fel a saját betűtípusodat \"\".bitsyfont\"\" formátumban!\"\tUzu vian propran .bitsyfont-dosieron kiel tiparo!\t\"Lae üles oma font \"\".bitsyfont\"\" formaadis!\"\t上传你的定制字体,请用“.bitsyfont”格式!\t\"Wyślij swoją własną czcionkę w formacie \"\".bitsyfont\"\"!\"\t\"自分のカスタムフォントを \"\".bitsyfont\"\"形式でアップロード!\"\t\"mash yakwa maika huloima (\"\"custom\"\") pipa-tsum (\"\"font\"\") kakwa \"\".bitsyfont\"\"!\"\tДодайте власний шрифт в форматі .bitsyfont!\t\t\"Envie a sua própria fonte no formato \"\".bitsyfont\"\"!\"\nfont_data_toggle_visible\tfont data\tDonnée de police d'écriture\tdata da fonte\tdatos de la fuente\tdati del font\tданные шрифта\ttypsnittsdata\tSchrift Daten sichtbar\tبيانات الخط\tsýna letur upplýsingar\tbetűtípus adatok\ttipara dosiero\t\t字体数据\tdane czcionki\t\tpipa-tsum kod\tfont (kód)\tдані шрифту\tdados de fonte\nfont_label\tfont\tpolice\tfonte\tfuente\tfont\tшрифт\ttypsnitt\tSchriftart\tالخط\tleturgerð\tbetűtípus\ttiparo\tfont\t字体\tczcionka\tフォント\tpipa setins\tfont\tшрифт\tfonte\nfont_missing_character\tThe current font is missing some of the characters used in your dialog. Not all text in your game will display correctly. Consider picking a different font in the settings.\tCertains caractères utilisés dans tes dialogues ne sont pas présents dans la police d'écriture sélectionnée. Certains textes ne s'afficheront pas correctement. Peut-être devrais-tu changer de police d'écriture dans les paramètres.\tA fonte actual não possui alguns dos caracteres usados no teu diálogo. Partes do texto no teu jogo podem não aparecer correctamente. Considera escolher uma fonte diferente nas definições.\tLa fuente actual no incluye algunos de los carácteres usados en tú dialógo. No todo el texto de tú juego se va a mostrar correctamente. Considera elegir una fuente distinta en las opciones.\tAl font attuale mancano alcuni caratteri usati nel tuo dialogo. Il testo del tuo gioco non apparità correttamente. Prova a scegliere un font diverso nelle impostazioni.\tвыбранный шрифт не поддерживает некоторые символы, использованные в диалогах. не весь текст в игре будет отображён правильным образом. вы можете выбрать другой шрифт в настройках.\tDet valda typsnittet saknar vissa tecken du har använt. En del av texten kommer inte att se rätt ut. Ett annat typsnitt kan väljas i inställningarna.\tDie aktuelle Schriftart unterstützt nicht alle Zeichen aus deinem Dialog. Das kann merkwürdig aussehen. Wähle lieber eine andere Schriftart in den Einstellungen.\tهذا الخط ينقصة بعض الرموز التي تستخدمها في حوارك. بعض الجمل قد تظهر بشكل خاطئ. يفضل أن تختار خط أخر من الإعدادات\tValið letur inniheldur ekki alla stafi sem koma fyrir í textanum þínum. Stafir sem eru ekki til staðir verða ekki sýnilegir í leiknum. Þú getur prófað að velja annað letur í leikjastillingunum.\tA kiválasztott betűtípus nem tartalmazza az összes betűt, amit használsz. Válassz egy másik betűtípust a beálllításoknál!\tLa nuna tiparo mankas kelkajn literojn de viaj skriboj, do kiam la ludo ludiĝas oni ne vidos ĉion el via skribo. Pensu pri elekti alian tiparon je la elektaro.\tValitud fondil puudub mõned tähed, mida oled kasutanud oma dialoogis. Osa sinu mängu tekstist ei ilmu õigesti. Ehk tahad valida teist fonti seadetes.\t使用在你对话中的当前字体中有一些字母丢失。你的游戏中的文字不能完全显示正确。请考虑在设置中选一个不同的字体。\tBieżąca czcionka nie posiada niektórych znaków, użytych w twoim dialogu. Nie wszystkie teksty w twojej grze zostaną wyświetlone prawidłowo. Rozważ wybranie innej czcionki, w panelu ustawienia.\t\talta maika tsum pipa kopa maika hihi, pi olo iht tsum (character) kopa maika pipa-tsum (font). spos tilikum nanich maika hihi, wik kata nanich kanawei maika pipa. tlosh spos maika pik huloima pipa-tsum.\t\tУ поточному шрифті відсутні деякі символи з ваших діалогів. Не весь текст гри буде відображений коректно. Радимо обрати інший шрифт.\tA fonte atual está sem alguns dos caractéres usados em seu diálogo. Nem todo o texto no seu jogo será mostrado corretamente. Tente escolher outra fonte nas definições.\nfont_unicode_asian\tUnicode Asian\tUnicode asiatique\tUnicode Asiático\tUnicode asiático\tUnicode Asiatico\tUnicode Asian\tUnicode Asian\tUnicode Asian\tUnicode أسيوي\tUnicode asískt\tUnicode ázsiai\tUnikodo Azia\tUnicode Aasia\tUnicode Asian\tUnicode Azjatycka\tUnicode Asian\tUnicode Asian\tUnicode Asian\tUnicode Asian\tUnicode Asiático\nfont_unicode_asian_description\tLarge font which includes characters for Asian languages such as Chinese, Japanese, and Korean.\tLarge police incluant les caractères de langues asiatiques, comme le chinois, le japonais ou le coréen.\tFonte grande que inclui caracteres para linguagens asiáticas como o Chinês, o Japonês e o Coreano.\tFuente grande que incluye carácteres para lenguajes asiáticos como chino, japonés y coreano.\tFont grande, include i caratteri per lingue asiatiche quali cinese, giapponese, coreano\tкрупный шрифт, включающий символы из китайского, японского, корейского и других языков Азии.\tStort typsnitt med tecken för Asiatiska språk inklusive Kinesiska, Japanska, och Koreanska\tGroße Schriftart, unterstützt Asiatische Zeichen für z.B. Japan, China, Korea.\tخط كبير يحتوي على حروف من اللغات الأسيوية مثل الصينية، اليابانية، و الكورية.\tStórt letur sem inniheldur stafi fyrir asísk tungumál svo sem kínversku, japönsku, og kóresku.\tNagyméretű betűtípus, tartalmazza a legtöbb ázsiai nyelv karaktereit, mint a kínai, japán és a koreai.\tGranda dosiero, ekzistas literoj por aziaj lingvoj kiel la ĉina, japana kaj korea, ankaŭ eŭropecaj lingvoj kiel la esperanta.\tSuur font, mis sisaldab Aasia keelte tähti nagu näiteks Hiina, Jaapani ja Korea.\t为亚洲语言准备的大字体,比如中文,日文和韩文字母。\tDuża czcionka, która zawiera znaki dla języków azjatyckich, takich jak chiński, japoński i koreański.\t中国、韓国、日本などアジア圏の言語を含む大きいフォント\thayu pipa-tsum, tlosh kanawei wik-saya chaina-man ilahi le-lang (chapan ilahi, kolia ilahi, tailan ilahi...).\t\tВеликий шрифт з символами для азійських мов, таких як китайська, японська та корейська.\tFonte grande que inclui caractéres para línguas asiáticas como o Chinês, Japonês e Coreano.\nfont_unicode_european_large\tUnicode European Large\tUnicode européen - large\tUnicode Europeu - grande\tUnicode Europeo - grande\tUnicode Europeo Grande\tUnicode European Large\tUnicode European Large\tUnicode European Large\tUnicode أوربي كبير\tUnicode evrópskt stórt\tUnicode európai nagy\tUnikodo Eŭropa Granda\tUnicode Euroopa Suur\tUnicode European Large\tUnicode Europejska Duża\tUnicode European Large\thayas Unicode European\tUnicode European Large\tUnicode European Large\tUnicode Europeu Grande\nfont_unicode_european_large_description\tLarge font with more unicode support. Includes characters for all European languages.\tLarge police supportant plus d'unicode, incluant les caractères de la plupart des langages européens.\tFonte grande com mais suporte para unicode. Inclui caracteres para todas as linguas Europeias.\tFuente grande con soporte unicode. Incluye los carácteres usados en todos los lenguajes europeos.\tFont grande, con più supporto unicode. Include i caratteri per tutte le lingue europee\tкрупный шрифт с поддержкой символов из юникода. включает буквы их всех европейских языков.\tStort typsnitt med mer unicode-support. Innehåller tecken för alla Europeiska språk.\tGroße Schriftart, unterstützt Unicode (alle Europäischen Zeichen).\tخط كبير ذو دعم أكبر للـUnicode، يحتوي على حروف من كل اللغات الأروبية.\tStórt letur sem styður unicode stafi. Unicode staðallinn inniheldur stafi fyrir flest evrópsk tungumál.\tNagyméretű betűtípus unicode támogatással. Tartalmazza az európai nyelvek legtöbb karakterét.\tGranda dosiero, ekzistas literoj por ĉiuj eŭropaj lingvoj kaj esperanto.\tSuur font, mis toetab rohkem unicode-i. Sisaldab kõike Euroopa keelte tähti.\t有着更多Unicode支持的大字体,包括所有欧洲语言字母。\tDuża czcionka z większym wsparciem Unicode. Zawiera znaki dla wszystkich europejskich języków.\tヨーロッパ圏の言語の全てをカバーした、より多くのunicodeをサポートした大きいフォント\thayu pipa-tsum, tlosh kanawei dachman-ilahi le-lang.\t\tВеликий шрифт з підтримкою Unicode. Містить символи для всіх європейських мов.\tFonte grande com maior apoio ao unicode. Inclui caractéres de todas as línguas europeias.\nfont_unicode_european_small\tUnicode European Small\tUnicode européen - petit\tUnicode Europeu - pequeno\tUnicode Europeo - pequeño\tUnicode Europeo Piccolo\tUnicode European Small\tUnicode European Small\tUnicode European Small\tUnicode أوربي صغير\tUnicode evrópskt smátt\tUnicode európai kicsi\tUnikodo Eŭropa Eta\tUnicode Euroopa Väike\tUnicode European Small\tUnicode Europejska Mała\tUnicode European Small\ttenas Unicode European\tUnicode European Small\tUnicode European Small\tUnicode Europeu Pequeno\nfont_unicode_european_small_description\tSmall font with some unicode support. Includes characters for most European languages.\tPetite police supportant l'unicode, incluant les caractères de la plupart des langages européens.\tFonte pequena com algum suporte para unicode. Inclui caracteres de maior parte das linguagens Europeias.\tFuente pequeña con un poco de soporte unicode. Incluye los carácteres usados en la mayoría de los lenguajes europeos.\tFont piccolo, con un po' di supporto unicode. Include i caratteri per buona parte delle lingue europee.\tмелкий шрифт с поддержкой многих символов из юникода. включает буквы для большинства европейских языков.\tLitet typsnitt med viss unicode-support. Innehåller tecken för de flesta Europeiska språk.\tKleine Schriftart, unterstützt teilweise Unicode (fast alle Europäischen Zeichen).\tخط صغير يدعم بعض الـUnicode، يحتوي على حروف من معظم اللغات الأروبية.\tSmátt letur sem styður unicode stafi. Unicode staðallinn inniheldur stafi fyrir flest evrópsk tungumál.\tKisméretű betűtípus unicode támogatással. Tartalmazza az európai nyelvek legtöbb karakterét.\tMalgranda dosiero por la plejmulto da eŭropaj lingvoj, kaj povas skribi esperanton.\tVäike font, mis mõneti toetab unicode-i. Sisaldab enamus Euroopa keelte tähti.\t有一些Unicode支持的小字体,包含大部分欧洲语言字母。\tMała czcionka z częściowym wsparciem Unicode. Zawiera znaki dla większości języków europejskich.\tヨーロッパ圏の言語のほとんどをカバーした、 unicodeのサポートも含む小さいフォント\twik hayu pipa-tsum, tlosh wik-saya kanawei dachman-ilahi le-lang.\t\tМаленький шрифт з обмеженою підтримкою Unicode. Містить символи для більшості європейських мов.\tFonte pequena com maior apoio ao unicode. Inclui caractéres de todas as línguas europeias.\nfunction_end_description\tstop the game\tarreter le jeu\t\t\tferma il gioco\tостановить игру\t\tStoppe das Spiel\tإيقاف اللعبة\tenda leikinn\tjáték leálltása\t\t\t\tzatrzymaj grę\t\t\t\tзупинити гру\tparar o jogo\nfunction_end_help\tthe game stops immediately, but if there is dialog after this action, it will still play\tle jeu s'arrete immédiatement, mais si il y a encore des dialogues après cette action, il continura de jouer\t\t\til gioco si ferma immediatamente, ma se c'è un dialogo dopo questa azione, apparirà\tигра немедленно прекращается, но если после этого действия появится диалоговое окно, она всё равно будет воспроизводиться\t\tDas Spiel endet sofort, aber Blöcke nach diesem hier werden noch angezeigt\tإيقاف اللعبة حالاً، ولكن إذا كان يوجد حوار بعد ذلك فسوف يعرض\tendar leikinn samstundis, ef það er samtal eftir þessari aðgerð mun það samt keyra\ta játék azonnal leáll, de ha még van párbeszéd, az még lemegy\t\t\t\tgra zatrzymuje się natychmiast, ale jeżeli jest jakiś dialog po tej akcji, to wciąż zostanie on odegrany\t\t\t\tгра зупиняється негайно, але якщо за цією дією є діалог, він буде відображений до кінця\to jogo para na hora, mas se houver diálogo após essa ação, ele ainda será mostrado\nfunction_end_name\tend\tfin\t\t\tfine\tконец\t\tEnde\tإنهاء\tenda\tvége\t\t\t\tzakończenie\t\t\t\tкінець\tfinal\nfunction_exit_description\tmove player to _ at (_,_)[ with effect _]\tdéplacer\t\t\tsposta giocatore a _ a (_,_)[con effetto _]\tпереместить игрока в _ (_,_)[с эффектом _]\t\tBewege Avatar zu _ bei (_,_)[ mit Effekt _]\tتحريك اللاعب إلى ـــ في (ــ،ــ) [بإستخدام مؤثر الـ_]\tfærðu leikpeðið til _ á (_,_)[ með áhrifum _]\tjátékos mozgatása ide: _ innen (_,_)[ ezzel az effekttel _]\t\t\t\tprzenieś gracza do _ pozycja (_,_)[ z efektem _]\t\t\t\tперемістити гравця до _ в (_,_)[ з ефектом _]\tmover jogador para _ em (_,_)[ com efeito _]\nfunction_exit_name\texit\tsortie\t\t\tuscita\tвыход\t\tÜbergang\tخروج\tútgönguleið\tkijárat\t\t\t\tprzejście\t\t\t\tвихід\tsaída\nfunction_item_description\t_ in inventory[ = _]\t_ dans l'inventaire [ = _]\t\t\t_ nell'inventario [ = _]\t_ в инвентаре[ = _]\t\t_ im Inventar [ =_]\t_ في المخزن [ = _]\t_ í tösku [ = _]\t_ a leltárban[ = _]\t\t\t\t_ w ekwipunku[ = _]\t\t\t\t_ в інвентарі[ = _]\t_ no inventário[ = _]\nfunction_item_name\titem\tobjet\t\t\toggetto\tпредмет\t\tObjekt\tأداة\thlutur\ttárgy\t\t\t\tprzedmiot\t\t\t\tпредмет\titem\nfunction_pg_description\tstart a new page of dialog\tdémarrer une nouvelle page de dialogue\t\t\tcomincia una nuova pagina di dialogo\tначать новую страницу диалога\t\tWarte auf Tastendruck\tبدء صفحة جديدة من الحوار\tbyrja á nýrri síðu af samtali\tkezdj egy új párbeszédoldalt\t\t\t\trozpocznij nową stronę dialogu\t\t\t\tпочати нову сторінку діалогу\tcomeçar uma nova caixa de diálogo\nfunction_pg_help\tif there are actions after this one, they will start after the player presses continue\t\t\t\t\"se ci sono altre azioni dopo questa, si attiveranno dopo che il giocatore sceglie \"\"continua\"\"\"\tесли после этого будут какие-либо действия, они начнутся после того, как игрок нажмёт продолжить\t\tNachfolgende Handlungen werden erst nach einem Tastendruck in einem neuen Dialogs-Fenster angezeigt.\tإذا كان يوجد آي تصرفات بعد هذا التصرف، فسوف يبدئون بعد الضغط على إكمال\tef það eru aðrar aðgerðir eftir þessa, þá munu þær byrja eftir að spilarinn heldur áfram\tha vannak akciók még ez után, azok akkor játszódnak le, ha a játléos a folytatásra kattint\t\t\t\tjeśli po tej stronie są jeszcze jakieś akcje, to rozpoczną się one po tym, jak gracz naciśnie przycisk aby kontynuować\t\t\t\tдії після розриву почнуться тоді, як гравець натисне “продовжити”\tse houverem ações após essa, elas começam após o jogador apertar em continuar\nfunction_pg_name\tpagebreak\tsaut de page\t\t\tinterruzione di pagina\tразрыв\t\tPause\tفاصل صفحة\tsíðu skil\toldaltörés\t\t\t\tnowa strona\t\t\t\tрозрив сторінки\tdividir diálogo\nfunction_print_description\tprint _ in the dialog box\t\t\t\tscrive _ nel box di dialogo\tотобразить _ в окне диалога\t\tschreibe _ in die Dialog Box\tطباعة ـــ في صندوق الحوار\tskrifa _ í samtals glugga\tírd ki, hogy _ a párbeszédablakba\t\t\t\tpisze _ w oknie dialogu\t\t\t\tвивести _ в діалоговому вікні\tprint _ na caixa de diálogo\nfunction_print_name\tprint\t\t\t\tscrive\tотобразить\t\tschreibe\tطباعة\tskrifa\tkiírás\t\t\t\tnapisz\t\t\t\tвивід\tprint\nfunction_property_description\tproperty _[ = _]\tpropriété _[ = _]\t\t\tproprietà _[ = _]\tсвойство _[ = _]\t\tEigenschaft _[ = _]\tخاصية _[ = _]\teiginleiki _[= _]\ttulajdonság _[ = _]\t\t\t\twłaściwość _[ = _]\t\t\t\tвластивість _[ = _]\tpropriedade _[ = _]\nfunction_property_locked_example_help\tchange the value of a property: for example, set the locked property to true to stop an exit from changing rooms, or to prevent an ending from stopping the game\tchange the value of a property: for example, set the locked property to true to stop an exit from changing rooms, or to prevent an ending from stopping the game\t\t\tcambia il valore di una proprietà: ad esempio, imposta la proprietà bloccata come vero per impedire ad un'uscita di far cambiare stanza, o impedisci ad un finale di far finire il gioco\tизмените значение свойства: например, установите для свойства locked значение true, чтобы остановить выход из раздевалок или предотвратить остановку игры в конце\t\tÄndere den Wert einer Eigenschaft: z.B. setze gesperrt auf wahr, um einen Übergang zu sperren oder zu verhindern, dass ein Ende das Spiel beendet.\tتغيير قيمة خاصية: على سبيل المثال، تعين خاصية القفل لمنع مخرج من تغيير الغرف أو منع النهاية من إيقاف اللعبة\tstilltu eiginleika: til dæmis, að stilla læsingar eiginleikan í sannan til að stöðva útgönguleið frá því að skipta um rými, eða til að koma í veg fyrir að endir stöðvi leikinn\ta tulajdonság értékének megváltoztatása: például, állítsd a zárt tulajdonságot igazra, hogy megakadályozz egy kijáratot, hogy szobát változtasson, vagy egy befejezést, hogy megállítsa a játékot\t\t\t\tzmień wartość właściwości, np.: ustaw właściwość locked na true, żeby zatrzymać zmienianie pomieszczeń dla Przejścia, lub zapobiec zatrzymywaniu gry dla Zakończenia\t\t\t\tзмінити значення властивості; наприклад, встановте властивсть “замкнений” щоб не дозволити виходу змінити кімнату, або закінченню збутися\tmudar o valor de uma propriedade: por exemplo, trancar uma cena para impedir que uma saída mude de sala, ou para prevenir que um final pare o jogo\nfunction_property_name\tproperty\tpropriété\t\t\tproprietà\tсвойство\t\tEigenschaft\tخاصية\teiginleiki\ttulajdonság\t\t\t\twłaściwość\t\t\t\tвластивість\tpropriedade\nfunction_say_name\tsay\t\t\t\tscrive\tсказать\t\tsage\tتقول\tsegja\tmondd\t\t\t\tpowiedz\t\t\t\tсказати\tfalar\ngame_settings\tgame settings\tparamètres du jeu\tdefinições do jogo\tajustes del juego\timpostazioni di gioco\tнастройки игры\tspel-inställningar\tSpiel-Einstellungen\tإعدادات اللعبة\tleikjastillingar\tjátékbeállítások\tluda elektaro\tmängu seaded\t游戏设置\tustawienia gry\tゲーム設定\thihi setins\tnastavení hry\tналаштування гри\tdefinições de jogo\ngif_download\tdownload gif\ttélécharger le gif\tdescarregar gif\tdescargar gif\tscarica gif\tскачать гифку\tladda ned gif\tGIF herrunterladen\tتحميل GIF\thala niður gif\tgif letöltése\tprenu (elŝutu) GIF-bildon\tlae alla gif\t下载动图\tpobierz gif\tGIFダウンロード\tiskum GIF\tstáhnout gif\tскачати gif\tbaixar gif\ngif_encoding\tencoding...\tencodage en cours...\ta codificar...\tcodificando...\telaborando...\tобрабатываю...\tkodar...\tVerarbeite...\tتشفير...\tumrita...\ttömörítés\tkodiĝante...\tkodeerib...\t编码中……\tkodowanie…\tエンコード中・・・\talta GIF chako kod...\tzpracování...\tкодування…\tprocessando...\ngif_recording\trecording...\tenregistrement en cours...\ta gravar...\tgrabando...\tregistrando...\tзаписываю...\tspelar in...\tZeichne auf...\tتسجيل...\tupptaka í gangi...\tfelvétel...\tkreadante...\tlindistab...\t录制中……\tnagrywanie…\t録画中・・・\talta hayu-mamook GIF...\tnahrávání...\tзапис…\tgravando...\ngif_snapshot\tsnapshot\tcapture d'écran\tcaptura de ecrã\tcaptura\tistantanea\tсделать снимок\tta en bild\tSchnappschuss\tلمحة\tskjáskot\tpillanatkép\tantaŭvida bildo\tpildista\t截图\tzrzut ekranu\tスナップショット\ttenas picha\tscreenshot\tзнімок\ttirar foto\ngif_start\tstart recording\tcommencer l'enregistrement\tcomeçar gravação\tempezar grabación\tinizia la registrazione\tначать запись\tstarta inspelning\tAufnahme starten\tأبدأ التسجيل\thefja upptöku\tfelvétel indítása\tkomencu krei\talusta lindistamist\t开始录制\tnagrywaj\t録画開始\tmamook chi GIF\tspustit nahrávání\tпочати запис\tiniciar gravação\ngif_stop\tstop recording\tarrêter l'enregistrement\tparar gravação\tparar grabación\tferma la registrazione\tостановить запись\tstoppa inspelning\tAufnahme stoppen\tأوقف التسجيل\tstöðva upptöku\tfelvétel leállítása\tmalkomencu krei\tlõpeta lindistamine\t停止录制\tzatrzymaj nagrywanie\t録画停止\tkopit mamook GIF\tzastavit nahrávání\tзупинити запис\tparar gravação\ngif_tool_name\trecord gif\tenregistrer un gif\tgravar gif\tgrabar gif\tregistra gif\tзаписать гифку\tspela in gif\tGIF aufnehmen\tتسجيل GIF\tgif upptaka\tgif készítése\tfari GIF-bildon\tlindista gif\t录制动图\tnagraj GIF\tGIF録画\tmunk-GIF\tnahrát gif\tзаписати gif\tgravar um gif\ngrid_toggle_visible\tgrid\tgrille\tgrelha\tgrid\tgriglia\tсетка\trutnät\tRaster\tشبكة\trúðustrik\tnégyzetháló\tkrado\truudustik\t格子\tsiatka\tグリッド\tskwil-skwil\tmřížka\tсітка\tgrade\nimport_html\timport game from html file:\timporter à partir d'un fichier html :\timportar um jogo a partir de um ficheiro html:\timportar juego desde archivo html\timporta il gioco da un file html\tзагрузить игру из html файла:\timportera spel från html-fil\tSpiel aus HTML-Datei importieren:\tاستخراج بيانات اللعبة من ملف html:\tflytja inn leik úr html skjali\tjáték importálása html fájlból\tlegu iun ludon el HTML-dosiero:\timpordi mäng html failist:\t导入游戏从 html 文件:\timportuj grę z pliku html:\thtmlファイルからゲームを読み込む\tmash .html hihi kopa edita:\timportovat hru z .html\tімпортувати гру з файлу HTML:\timportar jogo de um arquivo html:\ninstructions_title\tinstructions\tinstructions\tinstruções\tinstrucciones\tistruzioni\tинструкции\tinstruktioner\tAnleitung\tالتعليمات\tleiðbeiningar\thasználati utasítás\tkiel krei?\tõpetused\t说明\tinstrukcja\t説明\tkata mamook\t\tінструкції\tinstruções\ninstructions1\tyou can draw things in the paint panel, then place them in your world in the room panel. you can write dialog for your characters (aka sprites) too. you can also animate your drawings if you want to!\tTu peux dessiner des choses dans la fenêtre de dessin, puis les placer dans tes mondes dans la fenêtre de salle. Tu peux aussi écrire des dialogues pour tes personnages (tes sprites) . Enfin, tu peux animer tes dessins si tu le souhaites!\tpodes desenhar coisas no painel de desenho para as poderes colocar no teu mundo usando o painel da sala e escrever diálogos para as tuas personagens (os teus sprites). podes também animar os teus desenhos se quiseres!\tpuedes dibujar cosas en la caja de pintura, después colócalo en tu mundo en la caja de room. Puedes escribir también diálogos para tus personajes (aka sprites). ¡Ah! Y también puedes animar tus dibujos si quieres!\tPuoi disegnare cose nel pannello di disegno, e poi piazzarle nel tuo mondo dal pannello della stanza. Puoi anche aggiungere dialoghi per i tuoi personaggi (gli sprite). Puoi anche animare i tuoi disegni, se vuoi!\tвы можете создавать изображения в панели рисования, и затем размещать их в игровом мире в панели пространства. ещё вы можете писать диалоги для персонажей (спрайтов). вы также можете анимировать рисунки, если захотите!\tdu kan rita saker i rita-fönstret och sedan sätta in dem i din värld i rum-fönstret. du kan också skriva dialog till dina figurer(sprites), och göra animerade bilder!\tMit dem Zeichnen-Panel, kannst du Dinge zeichnen und anschließend im Räume-Panel in der Welt platzieren. Du kannst auch Dialoge für deine Figuren (Sprites) schreiben. Wenn du magst, kannst du deine Zeichnungen sogar animieren!\tيمكنك أن ترسم الأشياء في لوحة الرسم، ثم يمكنك وضعها في عالمك عن طريق لوحة الغرفة. يمكنك أيضاً أن تكتب الحوار لشخصياتك (الرسومات التفاعلية). كما يمكنك أن تحرك روسماتك إذا أردت.\tþú getur teiknað hluti í teikningasvæðinu og sett þá svo í heiminn þinn í rýmissvæðinu. þú getur líka skrifað samtöl fyrir persónurnar þínar (þ.e. sprotana). það er líka hægt að láta teikningarnar hreyfa sig ef þú vilt!\ta rajz panelben bármit megrajzolhatsz, amit aztán elhelyezhetsz a világodban a szoba panel segítségével. itt írhatsz párbeszédeket is a karaktereidnek (más néven sprite-oknak). sőt animálhatod is őket!\tvi povas desegni bildon je la desegnejo, tiam meti la bildon en la ĉambron de via ludomondo. ankaŭ povas skribi parolojn kaj kodojn por la enludanoj (ludroluloj). eĉ povas krei movantajn bildojn!\tjoonista asju joonista paneelis, siis aseta need oma maailmasse tuba paneelis. Kui sa tahad võid kirjutada teksti oma tegelastele ja animeerida oma joonistusi ka!\t你可以在“画图”面板中画东西,然后可以将它们在“房间”面板中放到你的世界中。你也可以为你的角色(也叫精灵)写对话。你还可以为你的图画制作动画!\tmożesz rysować rzeczy w panelu rysowania, następnie umieść je w twoim świecie, w panelu pomieszczenia. możesz też napisać dialog dla twojej postaci(inaczej: sprite'a). możesz również animować swoje rysunki, jeśli chcesz!\tペイントパネルで何か絵を描いたら、それをルームパネルからあなたの世界に配置することができます。作ったキャラクター(スプライト)にダイアログを追加することもできます。描いた絵をアニメーションにして動かす事もできます!\telip maika tsum kopa pint skwil, alta maika munk-mitlait okok tsum kopa loom skwil. spos maika tiki, maika munk-pipa wawa kopa maika mitlait-hihi-tilikum (sprites), pi maika munk-hulel (animate) maika tsum.\t\tМалюй предмети в панелі малюнки, а потім будуй з них свій світ на панелі “кімнати. Також можна написати діалог для твоїх персонажів (спрайтів). Якщо хочеш, малюнки можна анімувати!\tvocê pode criar coisas no painel de desenho, podendo até animá-las, e colocá-las no seu mundo no painel de cena. você pode escrever diálogos para os seus personagens (atores) também!\ninstructions10\tyou can make multiple rooms, but make sure you add some exits to connect them to each other!\tTu peux faire plusieurs salles, mais fais bien attention d'ajouter des sorties pour les connecter entre elles!\tpodes criar múltiplas salas, mas não te esqueças de as conectar adicionando algumas saídas\tpuedes crear múltiples salas, pero no te olvides de conectarlas añadiendo algunas salidas\tpuoi creare più di una stanza, ma non dimenticarti di aggiungere delle uscite per collegarle tra di loro!\tвы можете создать несколько пространств, главное не забудьте добавить точки выхода, чтобы соединить их между собой!\tdu kan göra flera rum, men kom ihåg att koppla ihop dem med utgångar!\tDu kannst mehrere Räume anlegen - aber füge Ausgänge hinzu, um sie miteinander verbinden!\tيمكنك عمل مجموعة من الغرف، و لكن لا تنسى أن تضيف المخارج لوصلهم ببعض.\tþú getur búið til mörg rými en gættu þess að bæta við útgöngum til að tengja þau saman!\takár több szobát is létrehozhatsz, csak ne felejts el kijáratokat hozzáadni, hogy összekösd őket!\tvi povas krei pliajn ĉambrojn, sed aldonu pordojn (elirejojn) por iri kaj reveni!\tvõid luua mitu erinevat tuba peaasi, et lisad mõned väljapääsud, et neid omavahel ühendada!\t你可以制作多个房间,但记得连接他们的时候加入出口!\tmożesz zrobić wiele pomeszczeń, ale upewnij się, że dodasz kilka przejść, żeby połączyć je ze sobą\tルームは複数作ることができますが、出口を用意して繋げるようにしましょう。\tklosh spos maika tiki mamook hayu loom. pi klosh maika mash lapot-skwil, kakwa maika tlatawa kopa iht loom chi loom, wik maika tlap stuk!\t\tМожна зробити багато кімнат, тільки не забудь додати виходи, що зʼєднають їх між собою!\tvocê pode fazer várias cenas, mas não se esqueça de adicionar algumas saídas para conectá-las!\ninstructions11\tuse download game to download the game as an html file. you can email the file to a friend, or host it online!\tClique sur partager mon jeu pour télécharger ton jeu en fichier html. Tu peux l'envoyer par mail à tes amis ou le mettre en ligne!\tusa a opção de partilhar jogo para descarregares o teu jogo como ficheiro html. podes partilhá-lo com um amigo enviando um e-mail ou podes hospedá-lo online!\tusa compartir juego para descargarlo como un archivo html. Puedes enviarlo en un mail a un amigo o compartirlo online!\tusa scarica gioco per scaricarlo come file html. Puoi inviarlo come allegato ad una email, oppure condividerlo online!\tиспользуйте кнопку загрузить игру, чтобы загрузить вашу игру в формате html-файла. вы можете переслать её друзьям по электронной почте или опубликовать на сайте!\ti fönstret ladda ned kan du ladda ned ditt spel som en html-fil. sen kan du maila filen till en vän, eller ladda upp det på internet!\tKlick auf Herunterladen um dein Spiel als html Datei herunterzuladen. Verschicke die Datei via eMail oder stelle sie woanders online!\tأستخدم رابط تحميل اللعبة لتحميل اللعبة كملف html. يمكنك أن ترسلها إلى صديق أو تستضيفها أونلاين!\tnotaðu 'hala niður leik' til að hala leiknum niður sem html skjali. þú getur sent leikinn til vinar með tölvupósti eða setta hann á netið!\ta játék letöltése gombbal letöltheted a játékodat html fájlként. utána egyszerűen átküldheted emailben egy barátodnak vagy feltöltheted valahova!\tklaku 'prenu ludon' por elŝuti vian ludon kiel .HTML-dosiero. vi povas sendi la dosieron al amikoj per retletero, aŭ afiŝi ĝin rete!\tkasuta lae alla mäng, et laadi alla mäng html failina. võid saata mängu sõbrale emaili kaudu või hostida ise!\t使用“下载游戏“将游戏下载为 html 文件。你可以把文件发送给朋友,或者将其发布上线!\tużyj pobierz grę aby pobrać grę jako plik html. możesz go wysłać e-mailem do znajomych, lub umieścić w internecie!\tゲームをダウンロードを使って、ゲームをhtmlファイルとしてダウンロードする事ができます。友達にそのファイルをemailで送ったり、自分のホームページに乗せたりする事ができます。\tspos maika tiki iskum hihi pi mash hihi maika siks kakwa .html, klosh maika kwutl iskum hihi. alta maika mash okok .html maika siks, pi mash hihi kopa inanet\t\tВикористай “завантажити гру” щоб завантажити гру у вигляді файлу HTML. Її можна надслати другові, або розмістити онлайн!\tclique em baixar jogo para baixá-lo como um arquivo html. você pode enviar o arquivo para amigos por email ou até colocá-lo online!\ninstructions12\tif you want to talk about bitsy, report a bug, or share a game you made, i'm on twitter\tSi tu veux parler de Bitsy, rapporter un bug ou partager un jeu que tu as fait, je suis sur twitter\tse queres falar sobre o bitsy, relatar um erro ou partilhar um jogo que criaste, podes-me encontrar no twitter\tsi quieres hablar sobre bitsy, reportar un bug, o compartir el juego que has creado, estoy en twitter\tse vuoi parlare di Bitsy, segnalare un bug, o condividere il gioco che hai fatto, sono su twitter come\tесли вы хотите обсудить битси, сообщить об ошибке или поделиться игрой, которую вы сделали, вы можете найти меня в X (бывшем твиттере)\tom du vill prata om bitsy, rapportera en bugg, eller visa ditt spel, finns jag på twitter:\tWenn du über Bitsy reden möchtest, einen Fehler entdeckt hast oder ein Spiel von dir teilen magst - Ich bin auf Twitter\tإذا أردت أن تتكلم عن بيتسي، تبلغ عن مشكلة، أو تشارك لعبتك، أنا موجود على التويتر.\tef þú vilt tala um bitsy, tilkynna um villu eða deila leik sem þú bjóst til þá er ég á twitter\tha szeretnél a bitsyről beszélgetni, bugot jelenteni, vagy csak meg akarod osztani velem a játékodat, twitteren megtalálsz itt:\tse (en la angla) vi volas paroli pri Bitsy, informi min pri miskodo en la programo aŭ diskonigi vian ludon, mi uzas tviteron:\tkui tahad rääkida bitsy-st, anda teada rikkest, või jagada oma tehtud mängu, olen twitter-is\t如果你想和我聊聊 Bitsy,反馈问题,或者分享你制作的游戏,请在 Twitter 上找我\tjeśli chcesz porozmawiać o bitsy, zgłosić błąd, lub podzielić się swoją grą, jestem dostępny na twitterze\tもしbitsyについて、質問やバグのレポート、作ったゲームのシェアなどしたければ、ツイッターで連絡してください。\tspos maika tiki kultus-wawa kopa bitsy, pi maika tlap tsipi (bug), pi maika tiki munk-nanich maika bitsy hihi, maika tlap naika kopa twitter kopa pastin wawa\t\tЯкщо хочеш поговорити про Бітсі, відзвітувати про баг, або поділитися грою, я є у Twitter.\tse você quiser conversar sobre o bitsy, denunciar um bug ou compartilhar algo que você fez, estou no twitter\ninstructions13_link_twitter\t@adamledoux\t@adamledoux\t@adamledoux\t@adamledoux\tadamledoux\t@adamledoux\t@adamledoux\t@adamledoux\t@adamledoux\t@adamledoux\t@adamledoux\t@adamledoux\t@adamledoux\t@adamledoux\t@adamledoux\t@adamledoux\t@adamledoux\t\t@adamledoux\t@adamledoux\ninstructions14\tor you can post in the\tou tu peux poster dans le\tou podes postar no\to puedes escribir en\to puoi scrivere nel\tили написать\teller så kan du skriva på\toder du schreibst in das\tأو يمكنك النشر في\teða þú getur sent á\t, vagy kiposztolhatod\taŭ vi povas afiŝi ĝin je la\tvõi võid postitada\t或者你可以发布在\tlub możesz ją umieścić na\tもしくはこちらに投稿する事ができます\twuht maika tsum kopa pastin wawa kopa\t\tабо можеш запостити в\tou você pode conversar no\ninstructions15_link_forum\tcommunity forum\tforum de la communauté\tforum da comunidade\tel foro de la comunidad\tforum della comunità\tна форуме нашего сообщества\tvårt forum\tCommunity Forum\tالمنتدى\tspjallsvæðið\ta közösségi fórumba\tBitsy-babilejo\tbitsy foorumis\t社区论坛\tforum społeczności\tコミュニティフォーラム\t\"kanawei tilikum tlaska wawa-ilahi (\"\"forum\"\")\"\t\tфорум спільноти\tfórum da comunidade\ninstructions16\tspecial thanks to:\tRemerciements spéciaux à :\tagradecimentos especiais a:\tAgradecimientos especiales a:\tRingraziamenti speciali a:\tотдельная благодарность:\ttack till:\tBesonderer Dank an:\tشكر خاص إلى:\tsérstakar þakkir til:\tkülön köszönet:\tkromajn dankojn al:\ttänud:\t特别感谢:\tspecjalne podziękowania dla:\tスペシャルサンクス:\thayu masi kopa:\t\tособлива подяка:\tagradecimentos a:\ninstructions17\tmary-margaret\tmary-margaret\tmary-margaret\tmary-margaret\tmary-margaret\tмэри-маргарет\tmary-margaret\tmary-margaret\tماري-مارجرت\tmary-margaret\tmary-margaretnek\tmary-margaret\tmary-margaret\tmary-margaret\tmary-margaret\tmary-margaret\tmary-margaret\t\tmary-margaret\tmary-margaret\ninstructions18\tseattle game meetup folks\tles gens du seattle game meetup\tseattle game meetup folks\tseattle game meetup folks\tla gente dei seattle game meetup\tлюдям с митапа в сиэтле\tseattle game meetup folks\tseattle game meetup folks\tمجتمع سياتل للألعاب\tfólksins í seattle game meetup\tseattle-i game meetupos arcoknak\tla anojn de la ludrenkontiĝo de Seatlo\tseattle-i mängu gruppi inimesed\tseattle game meetup 朋友们\tludzi z seattle game meetup\tseattle game meetup folksの友達\t\"siatl tawn hihi-hiyu tilikum (\"\"seattle game meetup folks\"\")\"\t\tлюдям з seattle game meetup\tpessoas do seattle game meetup\ninstructions19\teveryone in the bitsy community!\ttoutes les personnes de la communauté Bitsy!\ttoda a gente na comunidade do bitsy!\t¡todas las personas que forman la comunidad de Bitsy!\ttutte le persone che formano la communità di Bitsy!\tвсем, всем, всем из сообщества битси!\talla i bitsy-communityn!\talle in der Bitsy Community!\tو كل من هو جزء من مجتمع بيتسي!\tallra í bitsy-samfélaginu!\tmindenkinek a bitsy közösségben!\tĉiujn Bitsy-uzantojn!\tkõik bitsy kogukonna inimesed!\t所有 Bitsy 社区的朋友们!\twszystkich ze społeczności bitsy!\tBitsyコミュニティーのみんな!\tkanawei mesaika bitsy tilikum!\t\tвсім у спільноті Бітсі!\ttodo mundo da comunidade bitsy!\ninstructions2\tsome words:\tvocabulaire :\talgumas palavras-chave:\talgunas palabras clave:\talcune parole chiave:\tключевые термины:\tviktiga ord:\tEinge Begriffe:\tبعض الكلمات:\tnokkur orð:\tnéhány kifejezés:\tĉefvortoj:\tmõned terminid:\t名词解释:\tniektóre słowa:\t用語解説\tiht-iht tenas-wawa:\t\tдекілька слів:\to que é, o que é:\ninstructions3\troom - a place in your game world\tsalle - un environnement dans ton jeu\tsala - um sítio no teu jogo\troom - una sala de tu juego\tstanza - una scena del tuo gioco\tпространство - фрагмент игрового мира\trum - en plats i din spel-värld\tRaum - Ein Bereich deiner Spielwelt\tغرفة - مكان في عالم لعبتك\trými - staður í heiminum þínum\tszoba - egy hely a játékod világában\tĉambro - eta loko en via ludomondo\ttuba - koht sinu mängu maailmas\t房间 - 你创造的游戏世界中的某处\tpomieszczenie - miejsce w twoim świecie\tルーム - あなたのゲーム世界の中のあるひとつの場所\tloom - maika hihi pelik iht ilahi\t\tкімната - простір у світі твоєї гри\tcena - um lugar no seu mundo\ninstructions4\tavatar - the player's character\tavatar - le personnage du joueur\tavatar - a personagem do jogador\tavatar: el personaje del jugador\tavatar - il personaggio del giocatore\tаватар - персонаж, управляемый игроком\tavatar - figuren som spelaren styr\tAvatar - Die Spielfigur\tالشخص الممثل - شخصية اللاعب\tleikpeð - persónan sem þú stjórnar\tavatár - a játékos karaktere\tmovulo - la ulo kiu movas kiam oni ludas la ludon\tavatar - mängija tegelane\t人物 - 玩家角色\tawatar - postać gracza\tアバター - プレイヤーのキャラクター\ttayi picha - spos tilikum munk-hihi, okok picha tlaska picha\t\tаватар - персонаж гравця\tavatar - o personagem do jogador\ninstructions5\ttile - a piece of the scenery\ttile - un élément du décor\ttile - um elemento do cenário\ttile: un elemento del escenario\ttile - un elemento dello scenario\tтайл - элемент окружения\truta- en del av bakgrunden\tTile - Ein Teil des Hintergrundes\tرقعة - قطعة من المشهد\tflís - hluti af umhverfinu\ttile - a környezet egy eleme\tplanko - bildo sub aŭ malantaŭ la movulo. Planko, muro, pejzaĝo ktp\tkild - üks tükk mängu maailma maastikku\t地块 - 你的场景中的一块\tkafelek - element scenerii\tスプライト - インタラクティブなキャラクターやもの\tlaplash - okok tsum kakwa tipso pi chuk pi kalahan\t\tплитка - шматочок декорацій\tdetalhe - um pedaço do cenário\ninstructions6\tsprite - interactive characters or things\tsprite - un élément ou personnage interactif\tsprite - personagens ou coisas com que podes interagir\tsprite: un elemento o personaje interactivo\tsprite - un elemento o personaggio interattivo\tспрайт - нечто интерактивное, персонаж или предмет\tsprite - interaktiva personer eller saker\tSprite - Interaktive Figuren oder Dinge\tرسمة تفاعلية - أشخاص أو أشياء تفاعلية\tsproti - gagnvirk persóna eða hlutur\tsprite - interaktív karakterek vagy dolgok\tenludano - bildo (ulo aŭ objekto) kiu povas paroli, agi ktp per kodo\tkuju - interaktiivsed tegelased või asjad\t精灵 - 可交互的角色或者事物\tsprite - interaktywna postać lub rzecz\tタイル - 風景の一部\ttilikum - okok tsum komtuks wawa\t\tспрайт - інтерактивний персонаж або предмет\tator - personagens ou coisas interativas\ninstructions7\tto try your game, switch the room to play mode:\tPour essayer ton jeu, clique sur le bouton jouer pour passer ta salle en mode jeu :\tpara experimentares o teu jogo, muda a sala para o modo de jogo:\tpara probar tu juego cambia a modo de juego:\tper provare il tuo gioco, cambia la modalità cliccando gioca nel pannello della stanza\tчтобы протестировать игру, переведите панель пространства в игровой режим\tför att prova ditt rum kan du starta rum-fönstrets spelläge:\tUm dein Spiel zu testen, schalte das Räume-Panel in den Spielmodus:\tلتجرب لعبتك، انقل الغرفة إلى وضع اللعب:\ttil að prófa leikinn þinn settu þá rýmið á leikstillinguna:\ta játékod kipróbálásához, kapcsold a szobát lejátszás módba:\tpor provi vian ludon, klaku 'provu la ludon'\tet proovida oma mängu, vaheta tuba paneel mängu reziimi:\t如果要试玩游戏,调节房间到游玩模式:\tżeby wypróbować swoją grę, przełącz pomieszczenie w tryb gry:\tゲームを動かしてみるには、ルームをプレイモードに変更\tspos maika tiki tlai maika hihi, kwutl nanich hihi chilchil:\t\tщоб випробувати гру, перемикни її в режим гри:\tpara testar o seu jogo, mude a cena para o modo jogar:\ninstructions8\twalk around with the arrow keys\tdéplace-toi avec les flèches directionnelles\tmove-te usando as teclas direccionais\tpara probar tu juego cambia al modo de juego:\tesplora il mondo usando i tasti freccia\tперемещайтесь в пространстве, используя клавиши со стрелками\tgå omkring med piltangenterna\tLaufe mit den Pfeiltasten umher\tتحرك بحرية عن طريق إستخدام الأسهم\tnotaðu örvatakkana til að ganga um\tmozogni a nyilakkal tudsz\tmovadu la movulon per la sagoklavoj\tjaluta ringi noolte nuppudega\t用方向键四处走走\tporuszaj się przy pomocy klawiszy strzałek\t十字キーで歩き回る\t\"spos maika kwutl kalitan-chilchil (\"\"arrow keys\"\"), maika kultus-tlatawa kopa hihi\"\t\tходи стрілочками\tande com as teclas de setas\ninstructions9\ttalk to sprites by walking up to them\tparle aux sprites en marchant vers eux\tfala com sprites movendo-te até eles\thabla con los sprites acercándote a ellos\tparla con gli sprite avvicinandoti a loro\tговорите со спрайтами, подойдя к ним вплотную\tgå in i en sprite för att prata med den\tRede mit Sprites indem du an sie trittst\tلتتكلم مع الرسومات التفاعلية، تحرك في إتجاههم\ttalaðu við sprota með því að ganga upp að þeim\tha sprite-okkal szeretnél beszélni, csak sétálj oda hozzájuk\tproksimiĝu la enludanojn por paroli\träägi kujudega neile otsa jalutades\t走向精灵来和他们对话\trozmawiaj ze sprite'ami nachodząc na nie\tスプライトに立ち寄って話しかける\tspos maika tiki wawa mitlait-hihi-tilikum, maika tlatawa wik-saya okok tilikum\t\tщоб поговорити зі спрайтом, підійди до нього\tconverse com atores ao chegar perto deles\ninventory_tool_name\tinventory\tinventaire\tinventário\tinventario\tinventario\tинвентарь\tinventarie\tInventar\tمخزن\ttaska\ttárgyak\tobjektaro\tvarustus\t清单\tekwipunek\tインベントリ\thuyhuy-nampa haws\tinventář\tінвентар\tinventário\nitem_label\titem\titem\titem\titem\toggetto\tобъект\tföremål\tObjekt\tأداة\thlutur\ttárgy\tobjekto\tese\t物品\tprzedmiot\tアイテム\tiktas\tpředmět\tпредмет\titem\nitems_label\titems\titems\titems\titems\toggetti\tобъекты\tföremål\tObjekte\tأدوات\thlutir\ttárgyak\tobjektoj\tesemed\t物品\tprzedmioty\tアイテム\tiktas\tpředměty\tпредмети\titens\nlanguage_label\tlanguage\tlangue\tlinguagem\tidioma\tlingua\tязык\tspråk\tSprache\tاللغة\ttungumál\tnyelv\tlingvo\tkeel\t语言\tjęzyk\t言語\tle-lang\tjazyk\tмова\tlíngua\nlanguage_name\tEnglish\tFrançais\tPortuguês\tEspañol\tItaliano\tРусский\tsvenska\tDeutsch\tالعربية\tÍslenska\tmagyar\tEsperanto\tEesti\t简体中文\tpolski\t日本語\tchinuk wawa\tČeština\tУкраїнська\tPortuguês Brasileiro\nlanguage_translator_credit\tEnglish text by Adam Le Doux\tVersion française par Peter Februar & Dorian Beaugendre\tVersão portuguesa por Bruno Silva\tVersión española por Marina Díez (@Ninfa_dp) y Florencia Rumpel Rodriguez (@__rumpel)\tVersione italiana a cura di enui (@enricapr)\tперевели: онион (@le_american), элки (@aloelazoe), павел бид (www.paul.bid)\tSvensk översättning av Em (@Embotronic)\tDeutsche Übersetzung von Kai Werder und Matthias Löwe\tالنصوص العربية بواسطة أحمد خليفة\tÍslensk þýðing eftir Game Makers Iceland\tmagyar változat: Török Ádám (@gepember)\tEsperanta eldono de Ariel J Moody/Bonkorpa kaj Sequoia Edwards\tEesti keele tõlge: @scumslug\t简体中文文本由 Ray Song 翻译\tWersja polska Mateusz Teklak (plyr0)\t日本語訳 野老快南\tsequoia edwards yaka tsum okok chinuk bitsy.\tZZ\tПереклав Леонід Шевцов (leonid.codes)\tTexto em Português Brasileiro por Marco\nlist_type_description_cycle\tcycle (say each line, then repeat)\tboucle (lit chaque phrase, puis recommence)\tciclo (diz cada fala, depois repete)\tciclo (dice cada línea, entonces repite)\tciclo (dice ogni frase, poi ripete)\tцикл (показать каждую линию, потом повторить)\tcykel (säg repliker i ordning och upprepa)\tSchleife (sagt nach letzter Zeile wieder erste)\tحلقي (يقول كل سطر، ثم يقوم بتكريرهم)\thringhrás (segir hverja setningu og byrjar svo aftur frá byrjun)\tismétlés (minden sor kimondása, aztán megismétlése)\trondo (diru kiel linio, tiam rekomencu)\tkorduv (ütle igat rida üks kord, siis korda)\t循环(说每一行,并重复)\tpętla (powiedz każdą linijkę, a potem od powtarzaj)\tサイクル(各行を話し、繰り返す)\tkakwa lolo (wawa kakwa layn, kwanisom kilapi okok layn, kakwa: 1-2-3 1-2-3 1-2-3)\tsmyčka (každý řádek jednou a pak celé znovu)\tцикл (сказати кожний рядок, потім повторити)\tciclo (de fala em fala, depois repete)\nlist_type_description_sequence\tsequence (say each line once)\tséquence (lit chaque phrase une fois)\tsequência (diz uma fala de cada vez)\tsecuencia (dice cada línea una vez)\tsequenza (dice la frase ogni volta)\tпоследовательность (показать каждую линию один раз)\tsekvens (säg repliker i ordning)\tReihe (sagt jede Zeile einmal)\tمتتالي (يقول كل سطر مرة واحدة)\truna (segir hverja setningu einu sinni)\tsorozat (sorok kimondása egymás után)\tlinio (diru ĉiun skribon nur unufoje)\tjärjend (ütle igat rida üks kord)\t顺序(每一行说一次)\tsekwencja (powiedz każdą linijkę tylko raz)\tシーケンス(各行を一度だけ話す)\tkakwa iht (wawa kakwa layn iht taim: 1-2-3)\tsekvence (každý řádek jednou)\tпослідовність (сказати кожний рядок один раз)\tsequência (de fala em fala, depois acaba)\nlist_type_description_shuffle\tshuffle (say lines in random order)\tmélange (lit les phrases dans un ordre aléatoire)\tbaralho (diz falas numa ordem aleatória\tshuffle (dice cada línea en un orden cualquiera)\tshuffle (dice ogni frase, ma in ordine casuale)\tперемешать (показать случайную линию)\tblanda (säg repliker i slumpad ordning)\tZufall (sagt eine zufällige Zeile)\tعشوائي (يقول السطور بترتيب عشوائي)\tstokkun (segir setningar að handahófi)\tvéletlen (sorok kimondása véletlen sorrendben)\thazardo (diru ne laŭorde)\tsegamini (ütle igat rida suvalises järjekorras)\t随机(随机说一行)\tlosowo (mów linijki w losowej kolejności)\tシャッフル(ランダムな行を話す)\tkakwa pelton (heilo layn. wawa kakwa: 1-3-1 2-2-3 2-3-1...)\tnáhodně (náhodné pořadí řádků)\tмішанина (казати рядки в довільному порядку)\tmistura (falas em ordem aleatória)\nmarker_move\tmove\tbouger\tmover\tmover\tmuovi\tпереместить\tflytta\tVerschieben\tتحريك\threyfa\tmozgatás\tmovu\t\t移动\tzmień pozycję\t\ttlatawa\t\tперемістити\tmover\nmarker_move_click\tclick in room\tcliquer dans la salle\tclicar numa sala\tclick en la sala\tclicca nella stanza\tкликните в панели пространства\tclicka i rummet\tKlicke in gewünschten Raum\tإضغط في الغرفة\tsmelltu innan svæðis\tkattints a szobába\tklaku enĉambre\t\t点击房间中的一格\tkliknij wewnątrz pomieszczenia\t\tkwutl kopa loom\t\tклацні в кімнаті\tclique na cena\nmarker_moving\tmoving\ten train de bouger\tmovendo\tmoviendo\tmuovendo\tперемещаю\tflyttar\tverschiebe...\tيتحرك\threyfing\tezt mozgatod\tmovanta\t\t移动\tprzesuwanie...\t\thayu-tlatawa\t\tпереміщення\tmovendo\nmarker_tool_empty\tThere are no exits or endings in this room yet! You can add one with this tool. :)\tIl n'y a pas encore de sorties ou de fins dans cette salle! Tu peux en ajouter une avec cet outil :)\tNão existem saídas ou finais nesta sala! Podes adicioná-los com esta ferramenta :)\tTodavía no hay salidas ni finales en esta sala! Las puedes agregar con esta herramienta. =)\tIn questa stanza non ci sono ancora uscite o finali! Puoi aggiungerli da qui :)\tв этом пространстве ещё нет точек выхода или концовок! вы можете добавить их в этой панели :)\tDet finns inga utgångar eller slut i det här rummet! Du kan lägga till dem med det här verktyget\tBisher gibt es in diesem Raum keine Übergänge oder Enden. Füge sie hier hinzu!\tلا يوجد اي مخارج أو نهايات! يمكنك إضافة إحداها عن طريق هذة الأداة. :)\tÞað er engar útgönguleiðir né endalok\tMég nincs kijárat vagy befejezés ebben a szobában. Ezzel az eszközzel adhatod hozzá :)\tNe ekzistas pordoj kaj ludofinoj en ĉi ludo! Vi povas aldoni iom per ĉi ilo. :)\t\t这个房间中还没有出口或者结局!你可以用这个工具添加。 :)\tW tym pomieszczeniu nie ma jeszcze wyjść ani zakończeń! Możesz je dodać tym narzędziem. :)\t\twik mitlait lapot pi kopit-skwil kopa okok loom! spos maika tiki, mamook iht yakwa. :)\t\tВ цій кімнаті ще немає виходів та закінчень! Можеш додати їх цим інструментом :)\tAinda não existem saídas ou finais nessa cena! Você consegue adicioná-los aqui. :)\nmarker_tool_name\texits & endings\tsorties & fins\tsaídas e finais\tsalidas y finales\tfinali e uscite\tточки выхода и концовок\tutgångar och slut\tÜbergänge & Enden\tمخارج و نهايات\tútgönguleiðir og endalok\tkijáratok és befejezések\tpordoj k ludofinoj\t\t退出&结局\tprzejścia i zakończenia\t\tlapot pi kopit-skwil\tprůchody a konec hry\tвиходи та закінчення\tsaídas & finais\nname_label\tname\tnom\tnome\tnombre\tnome\tимя\tnamn\tName\tالأسم\tnafn\tnév\tnomo\tnimi\t名字\tnazwa\t名前\tnim\tnázev\tімʼя\tnome\nopen_settings\topen settings\touvrir les paramètres\tabrir definições\tabrir opciones\tapri le impostazioni\tоткрыть настройки\töppna inställningar\tÖffne Einstellungen\tأفتح الإعدادات\topna stillingar\tbeállítások megnyitása\tvidu la elektaron\tava seaded\t开启设置\totwórz ustawienia\t\tnanich setins\totevřít nastavení\tвідкрити налаштування\tabrir definições\noption_fixed_size\tfixed size\trésolution fixe\tresolução fixa\tresolución fija\tdimensione fissa\tфиксированный размер\tfast storlek\tFeste Größe\tحجم ثابت\tföst stærð\tfix méret\tneplena paĝo\tfikseeritud suurus\t固定尺寸\tstały rozmiar\t固定サイズ\ttenas winto\tfixní velikost\tфіксований розмір\ttamanho fixo\noption_full_size\tfull page\tplein écran\tpágina completa\tpágina completa\tpagina intera\tна всю страницу\thela sidan\tVollbild\tالصفحة بالكامل\tfylla út í skjá\tteljes oldal\tplena paĝo\ttäida terve leht\t全页面\tcała strona\t全画面\tpatl winto\t\tповний екран\ttela cheia\noption_page_color\thtml page color:\tcouleur de la page html :\tcôr da página html:\tcolor de la página html\tcolore della pagina html\tцвет html страницы:\tfärg på html-sidan:\tHTML-Hintergrund-Farbe:\tلون صفحة الـhtml:\tvefsíðulitur\thtml oldal háttérszíne:\t.HTML paĝa koloro:\thtml lehe värv:\thtml 页面颜色:\tkolor strony html:\thtmlページの色\t.html pipa tsum\tbarva html stránky:\tколір сторінки HTML:\tcor da página html:\noption_window_size\tgame window size:\ttaille de l'écran de jeu :\ttamanho da janela do jogo:\ttamaño de la pantalla de juego\tmisura della finestra di gioco\tразмер окна игры:\tspelfönstrets storlek:\tSpiel-Fenstergröße:\tحجم نافذة اللعبة:\tstærð leikjaglugga\tjátékablak mérete:\tgrandeco kiam oni ludas:\tmängu akna suurus:\t游戏窗口尺寸:\trozmiar okna gry:\tゲームウィンドウの大きさ\tmaika nanich hihi, spos tenas spos hayas winto:\tvelikost okna hry:\tрозмір вікна гри:\ttamanho da janela do jogo:\noptions_label\toptions\toptions\topções\topciones\topzioni\tопции\tinställningar\tOptionen\tخيارات\tvalmöguleikar\tbeállítások\telektaro\tvalikud\t选项\topcje\t設定\tpik iktas\tmožnosti\tналаштування\topções\npaint_tool_name\tpaint\tdessin\tdesenhar\tdibujar\tdisegna\tрисовать\trita\tZeichnen\tأرسم\tteikna\trajz\tdesegnejo\tjoonista\t画图\trysowanie\tペイント\tpint\t\tмалювання\tdesenhar\npalette_background\tbackground color\tcouleur du fond\tcôr de fundo\tcolor de fondo\tcolore dello sfondo\tцвет фона\tbakgrundsfärg\tHintergrundfarbe\tلون الخلفية\tbakgrunnslitur\tháttér színe\tsuba koloro\ttagaplaani värv\t背景颜色\tkolor tła\t背景色\tkimta tsum\tbarva pozadí\tколір фону\tcor de fundo\npalette_label\tpalette\tpalette\tpalete de cores\tpaleta\tpalette\tпалитра\tpalett\tPalette\tلوحة الألوان\tlitaval\tszínpaletta\tkoloraro\t\t调色板\tpaleta\t\tloom tsum-hayu\tbarevná paleta\tпалітра\tpaleta\npalette_sprite\tsprite color\tcouleur du sprite\tcôr das sprites\tcolor del sprite\tcolore dello sprite\tцвет спрайта\tsprite-färg\tSprite Farbe\tلون الرسمة التفاعلية\tsprotalitur\tsprite színe\tenludana koloro\tkujude värv\t精灵颜色\tkolor sprite'a\tスプライト色\ttilikum tsum\tbarva objektů\tколір спрайтів\tcor de atores\npalette_tile\ttile color\tcouleur des tiles\tcôr das tiles\tcolor del tile\tcolore del tile\tцвет тайла\trut-färg\tTile Farbe\tلون الرقعة\tflísalitur\ttile színe\tplanka koloro\tkildude värv\t地块颜色\tkolor kafelka\tタイル色\tlaplash tsum\tbarva prostředí\tколір плиток\tcor de detalhes\npalette_tool_advanced\tpalette select\tsélectionner une palette\tescolher uma palete\tselecciona una paleta\tselezionare una palette\tвыбрать палитру\tvälj palett\tAusgewählte Farbpalette\tأختيار لوحة الألوان\tlitaval\tszínpaletta kiválasztása\telektu koloraron\tvali palett\t调色板选择\twybór palety\tパレット選択\tpik loom tsum-hayu\tvýběr barevné palety\tвибір палітри\tescolher paleta\npalette_tool_name\tcolors\tcouleurs\tcores\tcolores\tcolori\tцвета\tfärger\tFarben\tألوان\tlitaval\tszínek\tkoloroj\tvärvid\t颜色\tkolory\t色\tloom tsum-hayu\tbarvy\tкольори\tcores\nplay_game\tplay\tjouer\tjogar\tjugar\tgioca\tиграть\tspela\tSpielen\tألعب\tspila\tlejátszás\tprovu la ludon\tmängi\t玩\tgraj\tプレイ\tnanich hihi\thrát\tграти\ttestar\nreset_data\treset game data\tréinitialiser les données du jeu\trepor dados do jogo\treset datos de juego\tresetta i dati del gioco\tсбросить данные\tnollställ speldata\tSetze Spiel Daten zurück\tامسح بيانات اللعبة\tendursetja leikjagögn\tjátékadatok törlése\trelegu la ludodosieron\ttaasta esialgsed mängu andmed\t重置游戏数据\tusuń dane gry\tゲームデータをリセット\tmunk-heilo hihi kod\tresetovat kód hry\tскинути дані гри\tapagar dados de jogo\nreset_game\tnew game\tnouveau jeu\tnovo jogo\tnuevo juego\tnuovo gioco\tновая игра\tnytt spel\tNeues Spiel\tلعبة جديدة\tbyrja á nýjum leik\túj játék\tnovan ludon\tuus mäng\t新游戏\tnowa\t新規ゲーム\tchi hihi\tnová hra\tнова гра\tnovo jogo\nreset_game_message\tStarting a new game will erase your old data. Consider exporting your work first! Are you sure you want to start over?\tCommencer un nouveau jeu écrasera vos anciennes données. Pensez à exporter votre travail d'abord ! Êtes vous sûr de vouloir repartir de zero ?\tComeçar um jogo novo irá eliminar toda a data do antigo. Considera a exportação do teu trabalho primeiro. Tens a certeza que queres começar de novo?\tCrear un nuevo juego va a borrar tu data vieja. Considera exportar tu trabajo primero! Empezar de cero?\tIniziare un nuovo gioco cancellerà i dati esistenti. Hai pensato di esportarne una copia, prima? Sei sicuro di voler ripartire da zero?\tначав работу над новой игрой, вы сбросите все нынешние данные. вы можете сперва скачать свою игру. вы уверены, что хотите начать заново?\tNär du startar ett nytt spel raderas gammal data. Du kan exportera data först! Är du säker att du vill börja om?\tNeustarten des Spiels wird deinen alten Daten löschen. Exportiere deine Arbeit vielleicht vorher! Möchtest du wirklich von vorn beginnen?\tبداية لعبة جديدة ستؤدي إلى مسح البيانات القديمة. يفضل أن تستخرج بيانات اللعبة أولاً! هل أنت متأكد من أنك تريد البدأ من جديد؟\tAð byrja á nýjum leik getur eytt núverandi leikjagögnum. Íhugaði að niðurhala leikjagögnum áður! Ertu viss um að þú viljir byrja á nýjum leik?\tAz új játék létrehozása törli a meglévő adatokat. Lehet, hogy exportálni kéne előbb a munkádat. Biztos, hogy elölről akarod kezdeni?\tSe vi kreas novan ludon, via antaŭa ludodosiero foriĝos. Bonas konservi la dosieron antaŭ ol krei novan ludon. Ĉu vere vi volas krei novan ludon?\t\t开始一个新游戏会覆盖你的旧数据。请先考虑导出你的作品!你确定要重新来吗?\tRozpoczęcie nowej gry usunie twoje stare dane. Rozważ najpierw wyeksportowanie swojej pracy! Czy na pewno chcesz zacząć od nowa?\t\tspos maika mamook chi hihi, chako heilo maika ol hihi. klosh kakwa?\t\tПочаток нової гри видалить старі дані. Радимо експортувати свою роботу! Дійсно хочеш почати наново?\tAo começar um novo jogo, o seu antigo será apagado. Lembre-se de exportar o seu trabalho! Deseja recomeçar mesmo assim?\nroom_add_endings\tadd endings\tajouter une fin\tadicionar finais\tañadir finales\taggiungi finali\tдобавить концовку\tlägg till slut\tEnde hinzufügen\tإضافة النهايات\tbæta við endalokum\tbefejezés hozzáadása\taldonu ludofinojn\tlisa lõpud\t增加结局\tdodaj zakończenia\tエンディング追加\tmash kopit-skwil\tvložit konec hry\tдодати закінчення\tadicionar finais\nroom_add_exits\tadd exits\tajouter une sortie\tadicionar saídas\tañadir salidas\taggiungi uscite\tдобавить точку выхода\tlägg till utgångar\tAusgang hinzufügen\tإضافة المخارج\tbæta við útgönguleiðum\tkijárat hozzáadása\taldonu pordojn\tlisa väljapääsud\t增加出口\tdodaj przejścia\t出口追加\tmash lapot\tvložit průchod\tдодати виходи\tadicionar saídas\nroom_add_markers\tadd exits & endings\tajouter des sorties & des fins\tadicionar saídas e finais\tañadir salidas y finales\taggiungi finali e uscite\tдобавить точки выхода и концовки\tlägg till utgångar och slut\tFüge Übergänge & Enden hinzu\tإضافة مخارج و نهايات\tbæta við útgönguleiðum og endalokum\tkijárat vagy befejezés hozzáadása\taldonu pordojn k ludofinojn\t\t加入退出&结局\tdodaj przejścia i zakończenia\t\tmash lapot pi kopit-skwil\tpřidat průchody a konec hry\tдодати виходи та закінчення\tadicionar saídas & finais\nroom_label\troom\tsalle\tsala\tsala\tstanza\tпространство\trum\tRäume\tغرفة\trými\tszoba\tĉambro\ttuba\t房间\tpomieszczenie\t\tloom\tmístnost\tкімната\tcena\nroom_tool_advanced\troom tools\toutils d'édition de salle\toutras ferramentas para a edição de sala\therramientas de juego\tstrumenti della stanza\tнастройки пространства\trum-verktyg\tRaum-Werkzeuge\tأدوات الغرفة\trýmistól\tszoba eszközök\tĉambraĵoj\ttoa tööriistad\t房间工具\tnarzędzia pomieszczenia\tルームツール\tloom iktas\tnástroje místnosti\troom tools\topções de cena\nroom_tool_name\troom\tsalle\tsala\troom\tstanza\tпространство\trum\tRäume\tغرفة\trými\tszoba\tĉambro\ttuba\t房间\tpomieszczenie\tルーム\tloom\tmístnost\troom\tcena\nsequence_list_description\tgo through each item once in _:\t\t\t\togni frase una volta sola in _:\tпройтись по каждому объекту один раз в _:\t\tAlle Blöcke werden in _ eingeblendet.\tزيارة كل بند في الـ_ مرة واحدة:\tfarðu í gegnum hvern hlut einu sinni í _:\tmenj végig a tárgyakon ebben: _\t\t\t\tprzejdź przez każdą pozycję tylko raz w _:\t\t\t\tперебрати по одному разу всі пункти з _:\tpassar por cada item uma só vez em _:\nsequence_list_name\tsequence list\tliste de séquences\t\t\tlista sequesnza\tсписок последовательностей\t\tReihen-Liste\tقائمة التسلسل\traðar listi\tsorozat lista\t\t\t\tlista sekwencji\t\t\t\tсписок послідовності\tlista de sequência\nsequence_name\tsequence\tséquence\t\t\tsequenza\tпоследовательность\t\tReihe\tتسلسل\tröð\tsorozat\t\t\t\tsekwencja\t\t\t\tпослідовність\tsequência\nsettings_tool_name\tsettings\tparamètres\tdefinições\tajustes\timpostazioni\tнастройки\tinställningar\tEinstellungen\tالإعدادات\tstillingar\tbeállítások\telektaro\tseaded\t设置\tustawienia\t設定\tsetins\tnastavení\tналаштування\tconfigurações\nshuffle_list_description\t_ items in a random order:\t_\t\t\tfrasi in ordine _:\t_ объекты в случайном порядке:\t\tAlle Blöcke werden in _ eingeblendet.\t_ الأدوات بترتيب عشوائي\t_ hlutir í handhófskenndri röð:\t_ tárgy véletlen sorrendben:\t\t\t\t_ pozycje w przypadkowej kolejności\t\t\t\t_ пунктів в довільному порядку:\titens em _ por ordem aleatória:\nshuffle_list_name\tshuffle list\tmélanger liste\t\t\tlista casuale\tперемешать список\t\tZufalls-Liste\tقائمة مخلوطة\tuppstokkunarlisti\tvéletlen lista\t\t\t\tlista losowa\t\t\t\tсписок мішаніни\tlista de mistura\nshuffle_name\tshuffle\tmélanger\t\t\tcasuale\tперемешать\t\tZufall\tخلط\tstokka upp\tvéletlen\t\t\t\tlosowe\t\t\t\tмішаніна\tmistura\nsprite_label\tsprite\tsprite\tsprite\tsprite\tsprite\tспрайт\tsprite\tSprite\tرسمة تفاعلية\tsproti\tsprite\tenludano\tkuju\t精灵\tsprite\tスプライト\ttilikum\tobjekt\tспрайт\tator\nstop_game\tstop\tStop\tparar\tpausar\tstop\tостановить\tstopp\tSpiel stoppen\tأقف\tstop\tstop\tmalkomencu\t\t停止\tzatrzymaj\t\tkopit nanich\tzastavit\tзупинити\tparar\ntext_direction_description\tOption for languages that read right to left\tOptions pour les langues qui se lisent de la droite vers la gauche\tOpção para linguagens que se lêem da direita para a esquerda\tOpciones para idiomas que se leen de derecha a izquierda\tOpzione per le lingue che si leggono da destra a sinistra\tОпция для языков, которые читаются справа налево\tinställning för språk som skrivs från höger till vänster\tOptionen für Sprachen, die von Rechts nach Links gelesen werden\tخيار للغات التي تقرأ من اليمين إلى اليسار\tValmöguleiki fyrir tungumál sem er lesið frá hægri til vinstri.\tOpció jobbról balra író nyelvek használatához\tElektu por lingvoj kiel la araba, hebrea, judgermana...\t\t语言从右向左选项\tOpcje dla języków czytanych od prawej strony do lewej\t\tspos maika pipa kuli kakwa pastin pi lushan pi pasiuks man tlaska pipa. spos maika pipa kuli kakwa alab pi shyu tlaska pipa.\t\tОпція для мов з напрямком справа наліво\tOpção para línguas lidas da direita para a esquerda.\ntext_direction_label\ttext direction\tdirection du texte\tdirecção do texto\tdirección del texto\tdirezione del testo\tнаправление текста\ttextriktning\tText-Richtung\tإتجاة الخط\ttextastefna\tszöveg iránya\ttekstokielo\t\t文字方向\tkierunek tekstu\t\tpipa kuli\t\tнапрямок тексту\tdireção de texto\ntext_direction_ltr\tLeft to Right\tDe la Gauche vers la Droite\tEsquerda para a direita\tIzquierda a Derecha\tDa sinistra a destra\tслева направо\tvänster till höger\tLinks nach Rechts\tمن اليسار إلى اليمين\tVinstri til hægri\tbalról jobbra\tMaldekstre Dekstren\t\t从左向右\tOd lewej do prawej\t\tkakwa pastin\t\tзліва направо\tEsquerda para Direita\ntext_direction_rtl\tRight to Left\tDe la Droite vers la Gauche\tDireita para a esquerda\tDerecha a Izquierda\tDa destra a sinistra\tсправа налево\thöger till vänster\tRechts nach Links\tمن اليمين إلى اليسار\tHægri til vinstri\tjobbról balra\tMaldekstren Dekstre\t\t从右向左\tOd prawej do lewej\t\tkakwa shyu\t\tсправа наліво\tDireita para Esquerda\ntile_label\ttile\ttile\ttile\ttile\ttile\tтайл\truta\tTile\tرقعة\tflís\ttile\tplanko\tkild\t地块\tkafelek\tタイル\tlaplash\tprostředí\tплитка\tdetalhe\ntitle_placeholder\tTitle\tTitre\tTítulo\tTitúlo\tTitolo\tНазвание\ttitel\tTitel\tعنوان\tTitill\tCím\tLudonomo\t\t\b标题\tTytuł\t\thihi nim\t\tНазва\tTítulo\ntools_label\ttools\toutils\tferramentas\tHerramientas\tStrumenti\tпанель инструментов\tverktyg\tWerkzeuge\tأدوات\ttól\teszközök\tiloj\ttööriistad\t工具\tnarzędzia\tツール\tmamook-iktas\tnástroje\tінструменти\tferramentas\ntransition_fade_b\tfade (black)\tfondu (noir)\t\t\tdissolvenza (nero)\tзатухание (в чёрное)\t\tVerblassen (schwarz)\tتلاشي إلى أسود\thverfa (í svart)\táttűnés (fekete)\t\t\t\twyciemnienie\t\t\t\tзатухання (чорний)\tdesmaecer (preto)\ntransition_fade_w\tfade (white)\tfondu (blanc)\t\t\tdissolvenza (bianco)\tзатухание (в белое)\t\tVerblassen (weiß)\tتلاشي إلى أبيض\thverfa (í hvítt)\táttűnés (fehér)\t\t\t\trozjaśnienie\t\t\t\tзатухання (білий)\tdesmaecer (branco)\ntransition_slide_d\tslide down\tglisser vers le bas\t\t\tscorri verso il basso\tсдвиг вниз\t\tRunterschieben\tالزحف للأسفل\trenna niður\tlecsúszás\t\t\t\tprzesuń w dół\t\t\t\tковзання вниз\tdeslizar (baixo)\ntransition_slide_l\tslide left\tglisser vers la gauche\t\t\tscorri a sinistra\tсдвиг влево\t\tNach Links schieben\tالزحف لليسار\trenna til vinstri\tbalra csúszás\t\t\t\tprzesuń w lewo\t\t\t\tковзання ліворуч\tdeslizar (esquerda)\ntransition_slide_r\tslide right\tglisser vers la droite\t\t\tscorri a destra\tсдвиг вправо\t\tNach Rechts schieben\tالزحف لليمين\trenna til hægri\tjobbra csúszás\t\t\t\tprzesuń w prawo\t\t\t\tковзання праворуч\tdeslizar (direita)\ntransition_slide_u\tslide up\tglisser vers le haut\t\t\tscorri verso l'alto\tвдвиг вверх\t\tHochschieben\tالزحف للأعلى\trenna upp\tfelcsúszás\t\t\t\tprzesuń w górę\t\t\t\tковзання вгору\tdeslizar (cima)\ntransition_tunnel\ttunnel\ttunnel\t\t\ttunnel\tтоннель\t\tTunnel\tنفق\tgöng\talagút\t\t\t\ttunel\t\t\t\tтунель\ttúnel\ntransition_wave\twave\tvague\t\t\tonda\tволна\t\tWelle\tموجي\talda\thullám\t\t\t\tfalowanie\t\t\t\tволна\tondular\nunsupported_features\tuh oh ~ your browser doesn't support all of bitsy's features, so some things might not work right. maybe try another browser, such as:\toh oh ~ ton navigateur internet ne supporte pas toutes les fonctionnalités de Bitsy, certaines choses pourraient ne pas fonctionner correctement, essaie un autre navigateur, comme :\tuh oh - o teu explorador não suporta todas as funcionalidades do Bitsy, por isso algumas coisas poderão não funcionar correctamente. talvez queiras tentar outro explorador como:\toh oh! tu navegador no es compatible con todas las funcionalidades de Bitsy y es posible que algunas no funcionen correctamente. Puedes intentar utilizar otros como:\toh no! il tuo browser non è compatibile con tutte le funzionalità di Bitsy, ed è possibile che alcune non funzionino bene. Puoi usarne altri come:\tупс ~ ваш браузер не поддерживает все функции битси, поэтому что-то работать не будет. попробуйте другой браузер, например:\toj då ~ bitsy har vissa funktioner som inte stöds av din webbläsare, så allt kanske inte fungerar som det ska. du kan prova med en annan webbläsare, till exempel:\tOh oh - Dein Browser unterstützt nicht alle Funktionen von Bitsy. Manche Dinge könnten nicht funktionieren, probiere doch einen der anderen Browser aus:\tمتصفحك لا يدعم جميع ميزات بيتسي، و لهذا، بعض الوظائف قد لا تعمل. من الأفضل أن تجرب أحد المتصفحات التالية:\tæji nei ~ vafrinn sem þú notar styður ekki alla eiginleika bitsy, þannig að nokkrir hlutir munu ef til vill ekki virka. Ef þú getur prófaðu að nota aðra vafra eins og:\tajjajj ~ a böngésződ nem támogatja az összes bitsy funkciót, próbálj ki egy másik böngészőt, mondjuk ezeket:\tho ve ~ via retvidilo ne povas ĉiujn aferojn de Bitsy, do eble iuj aferoj ne funkcios ĝuste. vi povas provi alian retvidilon, ekzemple:\tups ~ sinu brauser ei toeta kõiki bitsy funktsioone, nii et mõned asjad ei pruugi õigesti töötada. Võibolla proovi teist brauserit, nagu näiteks:\t啊噢~你的浏览器不完全支持 Bitsy ,有些功能无法正确运行。试试其他的浏览器吧,比如:\to nie ~ twoja przeglądarka nie wspiera wszystkich funkcjonalności bitsy, więc niektóre rzeczy mogą nie działać prawidłowo. możesz wypróbować inną przeglądarkę, taką jak:\tあらら、残念ながら使用中のブラウザでは一部のBitsyの機能が使用できないようです。次のブラウザを使ってみるといいかもしれません:\taaana ~ wik maika nanich-inanet ikta klosh kopa nanich kanawei bitsy iktas. klosh maika tlai huloima nanich-inanet ikta, kakwa:\t\tйой ~ ваш браузер не підтримує всі функції Бітсі, щось може не працювати. Пропоную спробувати інший браузер, такий як:\tvish ~ o seu navegador não suporta todas as funções do bitsy, então algumas coisas não funcionam. tente um desses navegadores:\nunsupported_features_dismiss\tI'll be ok, hide this message\tj'ai compris, cacher ce message\teu compreendo, esconde esta mensagem\tEntiendo. Oculta este mensaje.\tCapito. Nascondi questo messaggio.\tсо мной всё будет в порядке, спрятать это сообщение\tdet går bra, göm det här meddelandet\tIst in Ordnung. Verberge diese Nachricht\tسأكون بخير، أخفي هذه الرسالة\tekkert mál, feldu þessi skilaboð\tköszi, de megoldom, üzenet elrejtése\tmi ne zorgas. malvidu ĉi informon\tkõik on korras, peida see sõnum\t没关系,隐藏这条消息\tWszystko w porządku, ukryj tę wiadomość\tなんとかなるので、このメッセージを隠す\tklosh naika. ipui okok sisim.\t\tнай буде, приховати повідомлення\tTudo certo, pode esconder a mensagem\nupload_font\tload font\tcharger une police d'écriture\tcarregar uma fonte para utilização\tsubir fuente\tCarica font\tзагрузить шрифт\tladda upp typsnitt\tSchrift hochladen\tأرفع الخط\thala upp letri\tbetűtípus feltöltése\tlegu tiparon\t\t上传字体\twyślij czcionkę\t\tmash pipa-tsum\tnahrát font\tвідвантажити шрифт\tcarregar fonte\nupload_game\tload game\tcharger un jeu\tcarregar um jogo para edição\tsubir juego\tCarica gioco\tзагрузить игру\tladda upp spel\tSpiel hochladen\tأرفع اللعبة\thala upp leik\tjáték feltöltése\tlegu (alŝutu) ludon\t\t上传游戏\twyślij grę\t\tmash hihi\tnahrát hru\tвідвантажити гру\tcarregar jogo\nvalue_type_text\ttext\ttexte\t\t\ttesto\tтекст\t\tText\tنص\ttexti\tszöveg\t\t\t\ttekst\t\t\t\tтекст\ttexto\nvariable_add\tadd variable\tajouter une variable\tadicionar variável\tañadir variable\taggiungi variabile\tдобавить переменную\tlägg till variabel\tVariable hinzufügen\tإضافة متغير\tný breyta\tváltozó hozzáadása\taldonu ŝangeblan numeron\tlisa muutuja\t加入变量\tdodaj zmienną\t変数の追加\tmash huyhuy-nampa\tpřidat proměnnou\tдодати змінну\tcolocar variável\nvariable_label\tvariable\tvariable\tvariável\tvariables\tvariabili\tпеременная\tvariabel\tVariablen\tمتغير\tbreyta\tváltozó\tŝangebla numero\tmuutuja\t变量\tzmienna\t変数\thuyhuy-nampa\tproměnná\tзмінна\tvariável\nvariables_label\tvariables\tvariables\tvariáveis\tvariables\tvariabili\tпеременные\tvariabler\tVariablen\tمتغيرات\tbreytur\tváltozók\tŝanĝeblaj numeroj\tmuutujad\t变量\tzmienne\t変数\thuyhuy-nampa\tproměnné\tзмінні\tvariáveis\nversion_notes_title\twhat's new in\tquoi de neuf\to que há de novo na\tqué hay de nuevo\tcosa c'è di nuovo\tчто нового в\tnyheter i\tWas gibt's Neues in\tما هو جديد في\tnýtt í\tújdonságok:\tkio novas en\tmida on uut:\t新东西:\tco nowego w\t新機能:\tchi ikta kopa\t\tщо нового у\to que tem de novo no\nwall_toggle\twall\tmur\tparede\tpared\tmuro\tстена\tvägg\tWand\tحائط\tveggur\tfal\tmuro\tsein\t墙\tściana\t壁\tkalahan\tzeď\tстіна\tparede\nwalls_toggle_visible\twalls\tmurs\tparedes\tmuros\tmuri\tстены\tväggar\tWände\tحوائط\tveggir\tfalak\tmuroj\tseinad\t墙\tściany\t壁\tkalahan\tzdi\tстіни\tparedes\ngeneral_edit\tedit\t\t\t\t\tредактировать\t\t\t\t\t\t\t\t\t\t\t\t\t\teditar\ngeneral_length\tlength\t\t\t\t\tдлина\t\t\t\t\t\t\t\t\t\t\t\t\t\tduração\ngeneral_speed\tspeed\t\t\t\t\tскорость\t\t\t\t\t\t\t\t\t\t\t\t\t\tvelocidade\nroom_eyedropper_pick\tpick\t\t\t\t\tвыбор\t\t\t\t\t\t\t\t\t\t\t\t\t\textrair\nblip_tool\tblip-o-matic\t\t\t\t\tзвуки\t\t\t\t\t\t\t\t\t\t\t\t\t\tmelodi-za-dô\nblip_sfx\tblip\t\t\t\t\tsfx импульса\t\t\t\t\t\t\t\t\t\t\t\t\t\tplim\nblip_pitch\tpitch\t\t\t\t\tвысота импульса\t\t\t\t\t\t\t\t\t\t\t\t\t\taltura\nblip_generator\tgenerator\t\t\t\t\tгенератор\t\t\t\t\t\t\t\t\t\t\t\t\t\tsom de base\ntune_tool\ttune\t\t\t\t\tмузыка\t\t\t\t\t\t\t\t\t\t\t\t\t\tmelodia\ntune_bar\tbar\t\t\t\t\tпанель\t\t\t\t\t\t\t\t\t\t\t\t\t\tbarra\ntune_compose\tcompose\t\t\t\t\tсочинить\t\t\t\t\t\t\t\t\t\t\t\t\t\tcompor\ntune_instrument\tinstrument\t\t\t\t\tинструмент\t\t\t\t\t\t\t\t\t\t\t\t\t\tinstrumento\ntune_style\tstyle\t\t\t\t\tстиль\t\t\t\t\t\t\t\t\t\t\t\t\t\testilo\ntune_note\tnote\t\t\t\t\tзаметка\t\t\t\t\t\t\t\t\t\t\t\t\t\tnota\ntune_arp_off\tstrum off\t\t\t\t\tбренчание выкл.\t\t\t\t\t\t\t\t\t\t\t\t\t\tsem dedilhado\ntune_arp_up\tstrum chord (up)\t\t\t\t\tаккорд бренчания (вверх)\t\t\t\t\t\t\t\t\t\t\t\t\t\tdedilhar acorde (cima)\ntune_arp_down\tstrum chord (down)\t\t\t\t\tаккорд бренчания (вниз)\t\t\t\t\t\t\t\t\t\t\t\t\t\tdedilhar acorde (baixo)\ntune_arp_int5\tstrum interval (small)\t\t\t\t\tинтервал бренчания (небольшой)\t\t\t\t\t\t\t\t\t\t\t\t\t\tintervalo (pequeno)\ntune_arp_int8\tstrum interval (big)\t\t\t\t\tинтервал бренчания (большой)\t\t\t\t\t\t\t\t\t\t\t\t\t\tintervalo (grande)\ntune_wave_pulse2\ttone P2\t\t\t\t\tтон P2\t\t\t\t\t\t\t\t\t\t\t\t\t\tmelodia P2\ntune_wave_pulse4\ttone P4\t\t\t\t\tтон P4\t\t\t\t\t\t\t\t\t\t\t\t\t\tmelodia P4\ntune_wave_pulse8\ttone P8\t\t\t\t\tтон P8\t\t\t\t\t\t\t\t\t\t\t\t\t\tmelodia P8\ntune_tempo_slow\tslow\t\t\t\t\tмедленно\t\t\t\t\t\t\t\t\t\t\t\t\t\tlenta\ntune_tempo_med\tmedium\t\t\t\t\tсредне\t\t\t\t\t\t\t\t\t\t\t\t\t\tmédia\ntune_tempo_fast\tfast\t\t\t\t\tбыстро\t\t\t\t\t\t\t\t\t\t\t\t\t\trápida\ntune_tempo_xfast\tturbo\t\t\t\t\tтурбо\t\t\t\t\t\t\t\t\t\t\t\t\t\tturbo\ntune_key\tkey\t\t\t\t\tлад\t\t\t\t\t\t\t\t\t\t\t\t\t\ttom\ntune_key_basic\tmood\t\t\t\t\tнастрой\t\t\t\t\t\t\t\t\t\t\t\t\t\tritmo\ntune_key_major\tcheery\t\t\t\t\tвеселый\t\t\t\t\t\t\t\t\t\t\t\t\t\tfeliz\ntune_key_minor\tgloomy\t\t\t\t\tмрачный\t\t\t\t\t\t\t\t\t\t\t\t\t\ttriste\nsetting_text_mode\ttext mode\t\t\t\t\tтекстовый режим\t\t\t\t\t\t\t\t\t\t\t\t\t\testilo de texto\nsetting_text_hirez\tdefault\t\t\t\t\tсглаженный\t\t\t\t\t\t\t\t\t\t\t\t\t\tpadrão\nsetting_text_lorez\tchunky\t\t\t\t\tрубленный\t\t\t\t\t\t\t\t\t\t\t\t\t\tlargo\nfind_tool\tfind\t\t\t\t\tпоиск\t\t\t\t\t\t\t\t\t\t\t\t\t\tbuscar\nfind_all\tall\t\t\t\t\tнайти все\t\t\t\t\t\t\t\t\t\t\t\t\t\ttudo\n", - "defaultGameData.bitsy": "Write your game's title here\n\n# BITSY VERSION 8.0\n\n! VER_MAJ 8\n! VER_MIN 0\n! ROOM_FORMAT 1\n! DLG_COMPAT 0\n! TXT_MODE 0\n\nPAL 0\n0,82,204\n128,159,255\n255,255,255\nNAME blueprint\n\nROOM 0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,a,a,a,a,a,a,a,a,a,a,a,a,a,a,0\n0,a,0,0,0,0,0,0,0,0,0,0,0,0,a,0\n0,a,0,0,0,0,0,0,0,0,0,0,0,0,a,0\n0,a,0,0,0,0,0,0,0,0,0,0,0,0,a,0\n0,a,0,0,0,0,0,0,0,0,0,0,0,0,a,0\n0,a,0,0,0,0,0,0,0,0,0,0,0,0,a,0\n0,a,0,0,0,0,0,0,0,0,0,0,0,0,a,0\n0,a,0,0,0,0,0,0,0,0,0,0,0,0,a,0\n0,a,0,0,0,0,0,0,0,0,0,0,0,0,a,0\n0,a,0,0,0,0,0,0,0,0,0,0,0,0,a,0\n0,a,0,0,0,0,0,0,0,0,0,0,0,0,a,0\n0,a,0,0,0,0,0,0,0,0,0,0,0,0,a,0\n0,a,0,0,0,0,0,0,0,0,0,0,0,0,a,0\n0,a,a,a,a,a,a,a,a,a,a,a,a,a,a,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\nNAME example room\nPAL 0\nTUNE 2\n\nTIL a\n11111111\n10000001\n10000001\n10011001\n10011001\n10000001\n10000001\n11111111\nNAME block\n\nSPR A\n00011000\n00011000\n00011000\n00111100\n01111110\n10111101\n00100100\n00100100\nPOS 0 4,4\n\nSPR a\n00000000\n00000000\n01010001\n01110001\n01110010\n01111100\n00111100\n00100100\nNAME cat\nDLG 0\nPOS 0 8,12\nBLIP 1\n\nITM 0\n00000000\n00000000\n00000000\n00111100\n01100100\n00100100\n00011000\n00000000\nNAME tea\nDLG 1\n\nITM 1\n00000000\n00111100\n00100100\n00111100\n00010000\n00011000\n00010000\n00011000\nNAME key\nDLG 2\nBLIP 2\n\nDLG 0\nI'm a cat\nNAME cat dialog\n\nDLG 1\nYou found a nice warm cup of tea\nNAME tea dialog\n\nDLG 2\nA key! {wvy}What does it open?{wvy}\nNAME key dialog\n\nVAR a\n42\n\nTUNE 1\n3d,0,0,0,3d5,0,0,0,3l,0,0,0,3s,0,0,0\n16d2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n>\n4l,0,0,0,s,0,3l,0,0,0,2s,0,2m,0,2r,0\n16m2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n>\n3d,0,0,0,3d5,0,0,0,3l,0,0,0,3s,0,0,0\n16l2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n>\n3l,0,0,0,s,0,4m,0,0,0,4r,0,0,0,0,0\n16s2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\nNAME finale fanfare\nKEY C,D,E,F,G,A,B d,r,m,s,l\nTMP XFST\nSQR P2 P8\nARP INT8\n\nTUNE 2\n0,0,2G,0,A,0,B,0,2C5,0,B,A,G,0,2G,0\nG3,0,D,0,G3,0,D,0,2A3,0,E,0,C,0,E,0\n>\n2F#,0,G,0,A,0,F#,0,2E,0,F#,E,4D,0,0,0\n2D,0,E,0,F#,0,D,0,2C,0,2G3,0,2F#3,0,D2,0\n>\n0,0,2G,0,A,0,B,0,2C5,0,B,A,G,0,G,0\n2G2,0,D,D5,G3,G,D,0,2C2,0,E,E5,C3,C,E5,0\n>\n2D,0,C5,B,A,0,A,0,4A,0,0,0,F#,0,0,0\nA2,0,E3,0,C3,0,E3,0,D3,0,A3,0,D,0,0,0\n>\n2E5,0,2G,0,2G5,0,2G,0,2F#5,0,2E5,0,2D5,0,2C5,0\n2C3,0,2E,0,2E5,0,2C,0,2A3,0,2C,0,2F#,0,2E,0\n>\n3B,0,0,0,2E5,0,D5,0,4A,0,0,0,G,0,0,0\n2G3,0,B3,0,2D,0,D3,0,2C3,0,G3,0,D#,0,0,0\n>\n0,0,2G,0,A,0,2B,0,C5,0,B,C5,A,0,G,0\nA2,0,A3,0,C,0,2D,0,D#,0,D,E,C,0,C3,0\n>\n8B,0,0,0,0,0,0,0,A,0,2F#,0,E,0,D,0\nD3,0,A3,0,F#,0,D,0,C,0,2D3,0,C3,0,F#3,0\nNAME tuneful town\nTMP FST\nSQR P4 P2\n\nTUNE 3\n3F5,0,0,A#,0,2C#5,0,A#,3F5,0,0,F#5,0,0,2F5,0\nA#3,C#,F,0,0,F,C#,F,A#3,C#,F,A#,0,A#,C#,F\n>\n3F5,0,0,A,0,2C#5,0,A,3F5,0,0,2A#5,0,A#,D#5,0\nA3,C#,F,A3,0,F,C#,F,A,C#,F,0,D#,0,C#5,0\n>\n4F5,0,0,0,G#,2C#5,0,G#,3F5,0,0,D#5,0,F5,2C#5,0\nG#3,C#,F,3F#,0,0,2F,0,G#3,C#,F,F#,B,A,F,D#\n>\n4D#5,0,0,0,0,0,2A#,0,4A#,0,0,0,0,0,A#,C5\nG3,D#,F,G,0,D#,F,G,G3,D#,G,F,0,F,D#,C#3\n>\n4C#5,0,0,0,0,0,2C#5,0,3C#5,0,0,D#5,0,0,2C#5,0\nF#2,C#,F#3,A#3,0,F#3,C#3,F#3,F#2,A,F#3,C#,0,F#3,A3,F#3\n>\n3C#5,0,0,F,3C5,0,0,C,3C5,0,0,D#,3A#,0,0,0\nF2,D#3,A3,0,0,F3,C#,0,F#2,A#3,D#3,0,0,F#3,C#,C\n>\n3A#,0,0,0,C5,0,C#5,0,A#,0,C#,D#,G#,G#3,0,C#3\nC3,A#3,C,E,A,0,A#,0,0,B2,B3,0,2F,0,0,0\n>\nA#,0,A#3,0,C#,0,F,0,A#,0,0,0,0,0,0,0\nA#2,0,C#3,0,F3,0,A#3,0,D,0,0,0,0,F#3,0,F3\nNAME rhythmic ruins\nTMP MED\nSQR P4 P4\n\nBLIP 1\nE5,B5,B5\nNAME meow\nENV 40 99 4 185 138\nBEAT 61 115\nSQR P2\n\nBLIP 2\nD5,E5,D5\nNAME pick up key\nENV 99 65 6 96 152\nBEAT 95 0\nSQR P4\n\n", + "defaultGameData.bitsy": "Write your game's title here\n\n# BITSY VERSION 8.12\n\n! VER_MAJ 8\n! VER_MIN 12\n! ROOM_FORMAT 1\n! DLG_COMPAT 0\n! TXT_MODE 0\n\nPAL 0\n0,82,204\n128,159,255\n255,255,255\nNAME blueprint\n\nROOM 0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,a,a,a,a,a,a,a,a,a,a,a,a,a,a,0\n0,a,0,0,0,0,0,0,0,0,0,0,0,0,a,0\n0,a,0,0,0,0,0,0,0,0,0,0,0,0,a,0\n0,a,0,0,0,0,0,0,0,0,0,0,0,0,a,0\n0,a,0,0,0,0,0,0,0,0,0,0,0,0,a,0\n0,a,0,0,0,0,0,0,0,0,0,0,0,0,a,0\n0,a,0,0,0,0,0,0,0,0,0,0,0,0,a,0\n0,a,0,0,0,0,0,0,0,0,0,0,0,0,a,0\n0,a,0,0,0,0,0,0,0,0,0,0,0,0,a,0\n0,a,0,0,0,0,0,0,0,0,0,0,0,0,a,0\n0,a,0,0,0,0,0,0,0,0,0,0,0,0,a,0\n0,a,0,0,0,0,0,0,0,0,0,0,0,0,a,0\n0,a,0,0,0,0,0,0,0,0,0,0,0,0,a,0\n0,a,a,a,a,a,a,a,a,a,a,a,a,a,a,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\nNAME example room\nPAL 0\nTUNE 2\n\nTIL a\n11111111\n10000001\n10000001\n10011001\n10011001\n10000001\n10000001\n11111111\nNAME block\n\nSPR A\n00011000\n00011000\n00011000\n00111100\n01111110\n10111101\n00100100\n00100100\nPOS 0 4,4\n\nSPR a\n00000000\n00000000\n01010001\n01110001\n01110010\n01111100\n00111100\n00100100\nNAME cat\nDLG 0\nPOS 0 8,12\nBLIP 1\n\nITM 0\n00000000\n00000000\n00000000\n00111100\n01100100\n00100100\n00011000\n00000000\nNAME tea\nDLG 1\n\nITM 1\n00000000\n00111100\n00100100\n00111100\n00010000\n00011000\n00010000\n00011000\nNAME key\nDLG 2\nBLIP 2\n\nDLG 0\nI'm a cat\nNAME cat dialog\n\nDLG 1\nYou found a nice warm cup of tea\nNAME tea dialog\n\nDLG 2\nA key! {wvy}What does it open?{wvy}\nNAME key dialog\n\nVAR a\n42\n\nTUNE 1\n3d,0,0,0,3d5,0,0,0,3l,0,0,0,3s,0,0,0\n16d2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n>\n4l,0,0,0,s,0,3l,0,0,0,2s,0,2m,0,2r,0\n16m2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n>\n3d,0,0,0,3d5,0,0,0,3l,0,0,0,3s,0,0,0\n16l2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n>\n3l,0,0,0,s,0,4m,0,0,0,4r,0,0,0,0,0\n16s2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\nNAME finale fanfare\nKEY C,D,E,F,G,A,B d,r,m,s,l\nTMP XFST\nSQR P2 P8\nARP INT8\n\nTUNE 2\n0,0,2G,0,A,0,B,0,2C5,0,B,A,G,0,2G,0\nG3,0,D,0,G3,0,D,0,2A3,0,E,0,C,0,E,0\n>\n2F#,0,G,0,A,0,F#,0,2E,0,F#,E,4D,0,0,0\n2D,0,E,0,F#,0,D,0,2C,0,2G3,0,2F#3,0,D2,0\n>\n0,0,2G,0,A,0,B,0,2C5,0,B,A,G,0,G,0\n2G2,0,D,D5,G3,G,D,0,2C2,0,E,E5,C3,C,E5,0\n>\n2D,0,C5,B,A,0,A,0,4A,0,0,0,F#,0,0,0\nA2,0,E3,0,C3,0,E3,0,D3,0,A3,0,D,0,0,0\n>\n2E5,0,2G,0,2G5,0,2G,0,2F#5,0,2E5,0,2D5,0,2C5,0\n2C3,0,2E,0,2E5,0,2C,0,2A3,0,2C,0,2F#,0,2E,0\n>\n3B,0,0,0,2E5,0,D5,0,4A,0,0,0,G,0,0,0\n2G3,0,B3,0,2D,0,D3,0,2C3,0,G3,0,D#,0,0,0\n>\n0,0,2G,0,A,0,2B,0,C5,0,B,C5,A,0,G,0\nA2,0,A3,0,C,0,2D,0,D#,0,D,E,C,0,C3,0\n>\n8B,0,0,0,0,0,0,0,A,0,2F#,0,E,0,D,0\nD3,0,A3,0,F#,0,D,0,C,0,2D3,0,C3,0,F#3,0\nNAME tuneful town\nTMP FST\nSQR P4 P2\n\nTUNE 3\n3F5,0,0,A#,0,2C#5,0,A#,3F5,0,0,F#5,0,0,2F5,0\nA#3,C#,F,0,0,F,C#,F,A#3,C#,F,A#,0,A#,C#,F\n>\n3F5,0,0,A,0,2C#5,0,A,3F5,0,0,2A#5,0,A#,D#5,0\nA3,C#,F,A3,0,F,C#,F,A,C#,F,0,D#,0,C#5,0\n>\n4F5,0,0,0,G#,2C#5,0,G#,3F5,0,0,D#5,0,F5,2C#5,0\nG#3,C#,F,3F#,0,0,2F,0,G#3,C#,F,F#,B,A,F,D#\n>\n4D#5,0,0,0,0,0,2A#,0,4A#,0,0,0,0,0,A#,C5\nG3,D#,F,G,0,D#,F,G,G3,D#,G,F,0,F,D#,C#3\n>\n4C#5,0,0,0,0,0,2C#5,0,3C#5,0,0,D#5,0,0,2C#5,0\nF#2,C#,F#3,A#3,0,F#3,C#3,F#3,F#2,A,F#3,C#,0,F#3,A3,F#3\n>\n3C#5,0,0,F,3C5,0,0,C,3C5,0,0,D#,3A#,0,0,0\nF2,D#3,A3,0,0,F3,C#,0,F#2,A#3,D#3,0,0,F#3,C#,C\n>\n3A#,0,0,0,C5,0,C#5,0,A#,0,C#,D#,G#,G#3,0,C#3\nC3,A#3,C,E,A,0,A#,0,0,B2,B3,0,2F,0,0,0\n>\nA#,0,A#3,0,C#,0,F,0,A#,0,0,0,0,0,0,0\nA#2,0,C#3,0,F3,0,A#3,0,D,0,0,0,0,F#3,0,F3\nNAME rhythmic ruins\nTMP MED\nSQR P4 P4\n\nBLIP 1\nE5,B5,B5\nNAME meow\nENV 40 99 4 185 138\nBEAT 61 115\nSQR P2\n\nBLIP 2\nD5,E5,D5\nNAME pick up key\nENV 99 65 6 96 152\nBEAT 95 0\nSQR P4\n\n", "ascii_small.bitsyfont": "FONT ascii_small\nSIZE 6 8\nCHAR 0\n000000\n000000\n000000\n000000\n000000\n000000\n000000\n000000\nCHAR 32\n000000\n000000\n000000\n000000\n000000\n000000\n000000\n000000\nCHAR 33\n000100\n001110\n001110\n000100\n000100\n000000\n000100\n000000\nCHAR 34\n011011\n011011\n010010\n000000\n000000\n000000\n000000\n000000\nCHAR 8220\n011011\n011011\n010010\n000000\n000000\n000000\n000000\n000000\nCHAR 8221\n011011\n011011\n010010\n000000\n000000\n000000\n000000\n000000\nCHAR 35\n000000\n001010\n011111\n001010\n001010\n011111\n001010\n000000\nCHAR 36\n001000\n001110\n010000\n001100\n000010\n011100\n000100\n000000\nCHAR 37\n011001\n011001\n000010\n000100\n001000\n010011\n010011\n000000\nCHAR 38\n001000\n010100\n010100\n001000\n010101\n010010\n001101\n000000\nCHAR 39\n001100\n001100\n001000\n000000\n000000\n000000\n000000\n000000\nCHAR 8216\n001100\n001100\n001000\n000000\n000000\n000000\n000000\n000000\nCHAR 8217\n001100\n001100\n001000\n000000\n000000\n000000\n000000\n000000\nCHAR 40\n000100\n001000\n001000\n001000\n001000\n001000\n000100\n000000\nCHAR 41\n001000\n000100\n000100\n000100\n000100\n000100\n001000\n000000\nCHAR 42\n000000\n001010\n001110\n011111\n001110\n001010\n000000\n000000\nCHAR 43\n000000\n000100\n000100\n011111\n000100\n000100\n000000\n000000\nCHAR 44\n000000\n000000\n000000\n000000\n000000\n001100\n001100\n001000\nCHAR 45\n000000\n000000\n000000\n011111\n000000\n000000\n000000\n000000\nCHAR 46\n000000\n000000\n000000\n000000\n000000\n001100\n001100\n000000\nCHAR 47\n000000\n000001\n000010\n000100\n001000\n010000\n000000\n000000\nCHAR 48\n001110\n010001\n010011\n010101\n011001\n010001\n001110\n000000\nCHAR 49\n000100\n001100\n000100\n000100\n000100\n000100\n001110\n000000\nCHAR 50\n001110\n010001\n000001\n000110\n001000\n010000\n011111\n000000\nCHAR 51\n001110\n010001\n000001\n001110\n000001\n010001\n001110\n000000\nCHAR 52\n000010\n000110\n001010\n010010\n011111\n000010\n000010\n000000\nCHAR 53\n011111\n010000\n010000\n011110\n000001\n010001\n001110\n000000\nCHAR 54\n000110\n001000\n010000\n011110\n010001\n010001\n001110\n000000\nCHAR 55\n011111\n000001\n000010\n000100\n001000\n001000\n001000\n000000\nCHAR 56\n001110\n010001\n010001\n001110\n010001\n010001\n001110\n000000\nCHAR 57\n001110\n010001\n010001\n001111\n000001\n000010\n001100\n000000\nCHAR 58\n000000\n000000\n001100\n001100\n000000\n001100\n001100\n000000\nCHAR 59\n000000\n000000\n001100\n001100\n000000\n001100\n001100\n001000\nCHAR 60\n000010\n000100\n001000\n010000\n001000\n000100\n000010\n000000\nCHAR 61\n000000\n000000\n011111\n000000\n000000\n011111\n000000\n000000\nCHAR 62\n001000\n000100\n000010\n000001\n000010\n000100\n001000\n000000\nCHAR 63\n001110\n010001\n000001\n000110\n000100\n000000\n000100\n000000\nCHAR 64\n001110\n010001\n010111\n010101\n010111\n010000\n001110\n000000\nCHAR 65\n001110\n010001\n010001\n010001\n011111\n010001\n010001\n000000\nCHAR 66\n011110\n010001\n010001\n011110\n010001\n010001\n011110\n000000\nCHAR 67\n001110\n010001\n010000\n010000\n010000\n010001\n001110\n000000\nCHAR 68\n011110\n010001\n010001\n010001\n010001\n010001\n011110\n000000\nCHAR 69\n011111\n010000\n010000\n011110\n010000\n010000\n011111\n000000\nCHAR 70\n011111\n010000\n010000\n011110\n010000\n010000\n010000\n000000\nCHAR 71\n001110\n010001\n010000\n010111\n010001\n010001\n001111\n000000\nCHAR 72\n010001\n010001\n010001\n011111\n010001\n010001\n010001\n000000\nCHAR 73\n001110\n000100\n000100\n000100\n000100\n000100\n001110\n000000\nCHAR 74\n000001\n000001\n000001\n000001\n010001\n010001\n001110\n000000\nCHAR 75\n010001\n010010\n010100\n011000\n010100\n010010\n010001\n000000\nCHAR 76\n010000\n010000\n010000\n010000\n010000\n010000\n011111\n000000\nCHAR 77\n010001\n011011\n010101\n010001\n010001\n010001\n010001\n000000\nCHAR 78\n010001\n011001\n010101\n010011\n010001\n010001\n010001\n000000\nCHAR 79\n001110\n010001\n010001\n010001\n010001\n010001\n001110\n000000\nCHAR 80\n011110\n010001\n010001\n011110\n010000\n010000\n010000\n000000\nCHAR 81\n001110\n010001\n010001\n010001\n010101\n010010\n001101\n000000\nCHAR 82\n011110\n010001\n010001\n011110\n010010\n010001\n010001\n000000\nCHAR 83\n001110\n010001\n010000\n001110\n000001\n010001\n001110\n000000\nCHAR 84\n011111\n000100\n000100\n000100\n000100\n000100\n000100\n000000\nCHAR 85\n010001\n010001\n010001\n010001\n010001\n010001\n001110\n000000\nCHAR 86\n010001\n010001\n010001\n010001\n010001\n001010\n000100\n000000\nCHAR 87\n010001\n010001\n010101\n010101\n010101\n010101\n001010\n000000\nCHAR 88\n010001\n010001\n001010\n000100\n001010\n010001\n010001\n000000\nCHAR 89\n010001\n010001\n010001\n001010\n000100\n000100\n000100\n000000\nCHAR 90\n011110\n000010\n000100\n001000\n010000\n010000\n011110\n000000\nCHAR 91\n001110\n001000\n001000\n001000\n001000\n001000\n001110\n000000\nCHAR 92\n000000\n010000\n001000\n000100\n000010\n000001\n000000\n000000\nCHAR 93\n001110\n000010\n000010\n000010\n000010\n000010\n001110\n000000\nCHAR 94\n000100\n001010\n010001\n000000\n000000\n000000\n000000\n000000\nCHAR 95\n000000\n000000\n000000\n000000\n000000\n000000\n000000\n111111\nCHAR 96\n001100\n001100\n000100\n000000\n000000\n000000\n000000\n000000\nCHAR 97\n000000\n000000\n001110\n000001\n001111\n010001\n001111\n000000\nCHAR 98\n010000\n010000\n011110\n010001\n010001\n010001\n011110\n000000\nCHAR 99\n000000\n000000\n001110\n010001\n010000\n010001\n001110\n000000\nCHAR 100\n000001\n000001\n001111\n010001\n010001\n010001\n001111\n000000\nCHAR 101\n000000\n000000\n001110\n010001\n011110\n010000\n001110\n000000\nCHAR 102\n000110\n001000\n001000\n011110\n001000\n001000\n001000\n000000\nCHAR 103\n000000\n000000\n001111\n010001\n010001\n001111\n000001\n001110\nCHAR 104\n010000\n010000\n011100\n010010\n010010\n010010\n010010\n000000\nCHAR 105\n000100\n000000\n000100\n000100\n000100\n000100\n000110\n000000\nCHAR 106\n000010\n000000\n000110\n000010\n000010\n000010\n010010\n001100\nCHAR 107\n010000\n010000\n010010\n010100\n011000\n010100\n010010\n000000\nCHAR 108\n000100\n000100\n000100\n000100\n000100\n000100\n000110\n000000\nCHAR 109\n000000\n000000\n011010\n010101\n010101\n010001\n010001\n000000\nCHAR 110\n000000\n000000\n011100\n010010\n010010\n010010\n010010\n000000\nCHAR 111\n000000\n000000\n001110\n010001\n010001\n010001\n001110\n000000\nCHAR 112\n000000\n000000\n011110\n010001\n010001\n010001\n011110\n010000\nCHAR 113\n000000\n000000\n001111\n010001\n010001\n010001\n001111\n000001\nCHAR 114\n000000\n000000\n010110\n001001\n001000\n001000\n011100\n000000\nCHAR 115\n000000\n000000\n001110\n010000\n001110\n000001\n001110\n000000\nCHAR 116\n000000\n001000\n011110\n001000\n001000\n001010\n000100\n000000\nCHAR 117\n000000\n000000\n010010\n010010\n010010\n010110\n001010\n000000\nCHAR 118\n000000\n000000\n010001\n010001\n010001\n001010\n000100\n000000\nCHAR 119\n000000\n000000\n010001\n010001\n010101\n011111\n001010\n000000\nCHAR 120\n000000\n000000\n010010\n010010\n001100\n010010\n010010\n000000\nCHAR 121\n000000\n000000\n010010\n010010\n010010\n001110\n000100\n011000\nCHAR 122\n000000\n000000\n011110\n000010\n001100\n010000\n011110\n000000\nCHAR 123\n000110\n001000\n001000\n011000\n001000\n001000\n000110\n000000\nCHAR 124\n000100\n000100\n000100\n000100\n000100\n000100\n000100\n000100\nCHAR 125\n001100\n000010\n000010\n000011\n000010\n000010\n001100\n000000\nCHAR 126\n000000\n000000\n000000\n001010\n010100\n000000\n000000\n000000\nCHAR 160\n000000\n000000\n000000\n000000\n000000\n000000\n000000\n000000\nCHAR 161\n000100\n000000\n000100\n000100\n001110\n001110\n000100\n000000\nCHAR 162\n000000\n000100\n001110\n010000\n010000\n001110\n000100\n000000\nCHAR 163\n000110\n001001\n001000\n011110\n001000\n001001\n010111\n000000\nCHAR 165\n010001\n001010\n000100\n011111\n000100\n011111\n000100\n000000\nCHAR 167\n001110\n010001\n001100\n001010\n000110\n010001\n001110\n000000\nCHAR 171\n000000\n000000\n001001\n010010\n001001\n000000\n000000\n000000\nCHAR 172\n000000\n000000\n111111\n000001\n000001\n000000\n000000\n000000\nCHAR 177\n000000\n000100\n001110\n000100\n000000\n001110\n000000\n000000\nCHAR 178\n011000\n000100\n001000\n011100\n000000\n000000\n000000\n000000\nCHAR 181\n000000\n000000\n010010\n010010\n010010\n011100\n010000\n010000\nCHAR 182\n001111\n010101\n010101\n001101\n000101\n000101\n000101\n000000\nCHAR 187\n000000\n000000\n010010\n001001\n010010\n000000\n000000\n000000\nCHAR 188\n010000\n010010\n010100\n001011\n010101\n000111\n000001\n000000\nCHAR 189\n010000\n010010\n010100\n001110\n010001\n000010\n000111\n000000\nCHAR 191\n000100\n000000\n000100\n001100\n010000\n010001\n001110\n000000\nCHAR 196\n001010\n000000\n000100\n001010\n010001\n011111\n010001\n000000\nCHAR 197\n001110\n001010\n001110\n011011\n010001\n011111\n010001\n000000\nCHAR 198\n001111\n010100\n010100\n011111\n010100\n010100\n010111\n000000\nCHAR 199\n001110\n010001\n010000\n010000\n010001\n001110\n000100\n001100\nCHAR 201\n000011\n000000\n011111\n010000\n011110\n010000\n011111\n000000\nCHAR 209\n001010\n010100\n000000\n010010\n011010\n010110\n010010\n000000\nCHAR 214\n010010\n001100\n010010\n010010\n010010\n010010\n001100\n000000\nCHAR 220\n001010\n000000\n010010\n010010\n010010\n010010\n001100\n000000\nCHAR 223\n000000\n011100\n010010\n011100\n010010\n010010\n011100\n010000\nCHAR 224\n001100\n000000\n001110\n000001\n001111\n010001\n001111\n000000\nCHAR 225\n000110\n000000\n001110\n000001\n001111\n010001\n001111\n000000\nCHAR 226\n001110\n000000\n001110\n000001\n001111\n010001\n001111\n000000\nCHAR 228\n001010\n000000\n001110\n000001\n001111\n010001\n001111\n000000\nCHAR 229\n001110\n001010\n001110\n000001\n001111\n010001\n001111\n000000\nCHAR 230\n000000\n000000\n011110\n000101\n011111\n010100\n001111\n000000\nCHAR 231\n000000\n001110\n010001\n010000\n010001\n001110\n000100\n001100\nCHAR 232\n001100\n000000\n001110\n010001\n011110\n010000\n001110\n000000\nCHAR 233\n000011\n000000\n001110\n010001\n011110\n010000\n001110\n000000\nCHAR 234\n001110\n000000\n001110\n010001\n011110\n010000\n001110\n000000\nCHAR 235\n001010\n000000\n001110\n010001\n011110\n010000\n001110\n000000\nCHAR 236\n001000\n000000\n000100\n000100\n000100\n000100\n000110\n000000\nCHAR 237\n000110\n000000\n000100\n000100\n000100\n000100\n000110\n000000\nCHAR 238\n000100\n001010\n000000\n000100\n000100\n000100\n000110\n000000\nCHAR 239\n001010\n000000\n000100\n000100\n000100\n000100\n000110\n000000\nCHAR 241\n001010\n010100\n000000\n011100\n010010\n010010\n010010\n000000\nCHAR 242\n011000\n000000\n001100\n010010\n010010\n010010\n001100\n000000\nCHAR 243\n000110\n000000\n001100\n010010\n010010\n010010\n001100\n000000\nCHAR 244\n001110\n000000\n001100\n010010\n010010\n010010\n001100\n000000\nCHAR 246\n001010\n000000\n001100\n010010\n010010\n010010\n001100\n000000\nCHAR 247\n001010\n000000\n001110\n010001\n010001\n010001\n001110\n000000\nCHAR 249\n011000\n000000\n010010\n010010\n010010\n010110\n001010\n000000\nCHAR 250\n000110\n000000\n010010\n010010\n010010\n010110\n001010\n000000\nCHAR 251\n001110\n000000\n010010\n010010\n010010\n010110\n001010\n000000\nCHAR 252\n010010\n000000\n010010\n010010\n010010\n010110\n001010\n000000\nCHAR 255\n001010\n000000\n010010\n010010\n010010\n001110\n000100\n011000\nCHAR 402\n000010\n000101\n000100\n001110\n000100\n000100\n010100\n001000\nCHAR 915\n011110\n010010\n010000\n010000\n010000\n010000\n010000\n000000\nCHAR 920\n001100\n010010\n010010\n011110\n010010\n010010\n001100\n000000\nCHAR 931\n011111\n010000\n001000\n000100\n001000\n010000\n011111\n000000\nCHAR 934\n001110\n000100\n001110\n010001\n001110\n000100\n001110\n000000\nCHAR 937\n000000\n001110\n010001\n010001\n001010\n001010\n011011\n000000\nCHAR 948\n001100\n010000\n001000\n000100\n001110\n010010\n001100\n000000\nCHAR 949\n000000\n001110\n010000\n011110\n010000\n001110\n000000\n000000\nCHAR 960\n000000\n011111\n001010\n001010\n001010\n001010\n001010\n000000\nCHAR 963\n000000\n000000\n001111\n010010\n010010\n001100\n000000\n000000\nCHAR 964\n000000\n000000\n001010\n010100\n000100\n000100\n000100\n000000\nCHAR 966\n000000\n000100\n001110\n010101\n010101\n001110\n000100\n000000\nCHAR 8226\n000000\n000000\n000000\n001100\n001100\n000000\n000000\n000000\nCHAR 8252\n001010\n001010\n001010\n001010\n001010\n000000\n001010\n000000\nCHAR 8592\n000000\n000100\n001100\n011111\n001100\n000100\n000000\n000000\nCHAR 8593\n000100\n001110\n011111\n000100\n000100\n000100\n000100\n000000\nCHAR 8594\n000000\n000100\n000110\n011111\n000110\n000100\n000000\n000000\nCHAR 8595\n000100\n000100\n000100\n000100\n011111\n001110\n000100\n000000\nCHAR 8734\n000000\n000000\n001010\n010101\n010101\n001010\n000000\n000000\nCHAR 8735\n000000\n000000\n000000\n010000\n010000\n010000\n011111\n000000\nCHAR 8801\n000000\n011110\n000000\n011110\n000000\n011110\n000000\n000000\nCHAR 8804\n000010\n001100\n010000\n001100\n000010\n000000\n011110\n000000\nCHAR 8805\n010000\n001100\n000010\n001100\n010000\n000000\n011110\n000000\nCHAR 8962\n000100\n001110\n011011\n010001\n010001\n011111\n000000\n000000\nCHAR 8976\n000000\n000000\n011111\n010000\n010000\n010000\n000000\n000000\nCHAR 9472\n000000\n000000\n000000\n111111\n000000\n000000\n000000\n000000\nCHAR 9474\n000100\n000100\n000100\n000100\n000100\n000100\n000100\n000100\nCHAR 9488\n000000\n000000\n000000\n111100\n000100\n000100\n000100\n000100\nCHAR 9492\n000100\n000100\n000100\n000111\n000000\n000000\n000000\n000000\nCHAR 9500\n000100\n000100\n000100\n000111\n000100\n000100\n000100\n000100\nCHAR 9508\n000100\n000100\n000100\n111100\n000100\n000100\n000100\n000100\nCHAR 9516\n000000\n000000\n000000\n111111\n000100\n000100\n000100\n000100\nCHAR 9524\n000100\n000100\n000100\n111111\n000000\n000000\n000000\n000000\nCHAR 9532\n000100\n000100\n000100\n111111\n000100\n000100\n000100\n000100\nCHAR 9552\n000000\n111111\n000000\n111111\n000000\n000000\n000000\n000000\nCHAR 9553\n010100\n010100\n010100\n010100\n010100\n010100\n010100\n010100\nCHAR 9556\n000000\n011111\n010000\n010111\n010100\n010100\n010100\n010100\nCHAR 9557\n000000\n111100\n000100\n111100\n000100\n000100\n000100\n000100\nCHAR 9558\n000000\n000000\n000000\n111100\n010100\n010100\n010100\n010100\nCHAR 9559\n000000\n111100\n000100\n110100\n010100\n010100\n010100\n010100\nCHAR 9561\n010100\n010100\n010100\n011111\n000000\n000000\n000000\n000000\nCHAR 9562\n010100\n010111\n010000\n011111\n000000\n000000\n000000\n000000\nCHAR 9563\n000100\n111100\n000100\n111100\n000000\n000000\n000000\n000000\nCHAR 9564\n010100\n010100\n010100\n111100\n000000\n000000\n000000\n000000\nCHAR 9565\n010100\n110100\n000100\n111100\n000000\n000000\n000000\n000000\nCHAR 9566\n000100\n000111\n000100\n000111\n000100\n000100\n000100\n000100\nCHAR 9567\n010100\n010100\n010100\n010111\n010100\n010100\n010100\n010100\nCHAR 9568\n010100\n010111\n010000\n010111\n010100\n010100\n010100\n010100\nCHAR 9569\n000000\n000000\n010010\n010010\n010010\n011100\n010000\n010000\nCHAR 9570\n010100\n010100\n010100\n110100\n010100\n010100\n010100\n010100\nCHAR 9571\n010100\n110100\n000100\n110100\n010100\n010100\n010100\n010100\nCHAR 9572\n000000\n111111\n000000\n111111\n000100\n000100\n000100\n000100\nCHAR 9573\n000000\n000000\n000000\n111111\n010100\n010100\n010100\n010100\nCHAR 9574\n000000\n111111\n000000\n110111\n010100\n010100\n010100\n010100\nCHAR 9575\n000100\n111111\n000000\n111111\n000000\n000000\n000000\n000000\nCHAR 9576\n010100\n010100\n010100\n111111\n000000\n000000\n000000\n000000\nCHAR 9577\n010100\n110111\n000000\n111111\n000000\n000000\n000000\n000000\nCHAR 9580\n010100\n110111\n000000\n110111\n010100\n010100\n010100\n010100\nCHAR 9601\n000000\n000000\n000000\n000000\n000000\n000000\n000000\n111111\nCHAR 9602\n000000\n000000\n000000\n000000\n000000\n000000\n111111\n111111\nCHAR 9603\n000000\n000000\n000000\n000000\n000000\n111111\n111111\n111111\nCHAR 9604\n000000\n000000\n000000\n000000\n111111\n111111\n111111\n111111\nCHAR 9605\n000000\n000000\n000000\n111111\n111111\n111111\n111111\n111111\nCHAR 9606\n000000\n000000\n111111\n111111\n111111\n111111\n111111\n111111\nCHAR 9607\n000000\n111111\n111111\n111111\n111111\n111111\n111111\n111111\nCHAR 9608\n111111\n111111\n111111\n111111\n111111\n111111\n111111\n111111\nCHAR 9609\n111100\n111100\n111100\n111100\n111100\n111100\n111100\n111100\nCHAR 9610\n111100\n111100\n111100\n111100\n111100\n111100\n111100\n111100\nCHAR 9611\n111000\n111000\n111000\n111000\n111000\n111000\n111000\n111000\nCHAR 9613\n110000\n110000\n110000\n110000\n110000\n110000\n110000\n110000\nCHAR 9615\n100000\n100000\n100000\n100000\n100000\n100000\n100000\n100000\nCHAR 9617\n010101\n000000\n101010\n000000\n010101\n000000\n101010\n000000\nCHAR 9618\n010101\n101010\n010101\n101010\n010101\n101010\n010101\n101010\nCHAR 9619\n101010\n111111\n010101\n111111\n101010\n111111\n010101\n111111\nCHAR 9644\n000000\n000000\n000000\n000000\n000000\n011110\n011110\n000000\nCHAR 9650\n000100\n000100\n001110\n001110\n011111\n011111\n000000\n000000\nCHAR 9658\n001000\n001100\n001110\n001111\n001110\n001100\n001000\n000000\nCHAR 9660\n011111\n011111\n001110\n001110\n000100\n000100\n000000\n000000\nCHAR 9668\n000010\n000110\n001110\n011110\n001110\n000110\n000010\n000000\nCHAR 9675\n000000\n000000\n011110\n010010\n010010\n011110\n000000\n000000\nCHAR 9688\n111111\n111111\n111111\n110011\n110011\n111111\n111111\n111111\nCHAR 9689\n111111\n111111\n100001\n101101\n101101\n100001\n111111\n111111\nCHAR 9786\n001110\n010001\n011011\n010001\n010101\n010001\n001110\n000000\nCHAR 9787\n001110\n011111\n010101\n011111\n010001\n011111\n001110\n000000\nCHAR 9788\n000000\n010101\n001110\n011011\n001110\n010101\n000000\n000000\nCHAR 9792\n001110\n010001\n010001\n001110\n000100\n001110\n000100\n000000\nCHAR 9794\n000000\n000111\n000011\n001101\n010010\n010010\n001100\n000000\nCHAR 9824\n000000\n000100\n001110\n011111\n011111\n000100\n001110\n000000\nCHAR 9827\n000100\n001110\n001110\n000100\n011111\n011111\n000100\n000000\nCHAR 9829\n000000\n001010\n011111\n011111\n011111\n001110\n000100\n000000\nCHAR 9830\n000000\n000100\n001110\n011111\n011111\n001110\n000100\n000000\nCHAR 9834\n000100\n000110\n000101\n000100\n001100\n011100\n011000\n000000\nCHAR 9835\n000011\n001101\n001011\n001101\n001011\n011011\n011000\n000000", "unicode_european_small.bitsyfont": "FONT unicode_european_small\nSIZE 6 9\nCHAR 0\n000000\n001010\n010000\n000010\n010000\n000010\n010100\n000000\n000000\nCHAR 32\n000000\n000000\n000000\n000000\n000000\n000000\n000000\n000000\n000000\nCHAR 33\n000000\n001000\n001000\n001000\n001000\n000000\n001000\n000000\n000000\nCHAR 34\n000000\n010100\n010100\n010100\n000000\n000000\n000000\n000000\n000000\nCHAR 35\n000000\n010100\n010100\n111110\n010100\n111110\n010100\n010100\n000000\nCHAR 36\n001000\n011100\n101010\n101000\n011100\n001010\n101010\n011100\n001000\nCHAR 37\n010000\n101010\n010010\n000100\n001000\n010010\n010101\n000010\n000000\nCHAR 38\n000000\n011000\n100100\n100100\n011000\n100110\n100100\n011010\n000000\nCHAR 39\n000000\n001000\n001000\n001000\n000000\n000000\n000000\n000000\n000000\nCHAR 40\n000000\n000100\n001000\n001000\n001000\n001000\n001000\n000100\n000000\nCHAR 41\n000000\n001000\n000100\n000100\n000100\n000100\n000100\n001000\n000000\nCHAR 42\n000000\n000000\n100010\n010100\n111110\n010100\n100010\n000000\n000000\nCHAR 43\n000000\n000000\n001000\n001000\n111110\n001000\n001000\n000000\n000000\nCHAR 44\n000000\n000000\n000000\n000000\n000000\n001100\n000100\n000100\n001000\nCHAR 45\n000000\n000000\n000000\n000000\n111110\n000000\n000000\n000000\n000000\nCHAR 46\n000000\n000000\n000000\n000000\n000000\n001100\n001100\n000000\n000000\nCHAR 47\n000000\n000010\n000010\n000100\n001000\n010000\n010000\n000000\n000000\nCHAR 48\n000000\n001100\n010010\n010010\n010010\n010010\n001100\n000000\n000000\nCHAR 49\n000000\n001000\n011000\n001000\n001000\n001000\n011100\n000000\n000000\nCHAR 50\n000000\n001100\n010010\n000010\n000100\n001000\n011110\n000000\n000000\nCHAR 51\n000000\n011110\n000100\n001100\n000010\n000010\n011100\n000000\n000000\nCHAR 52\n000000\n000100\n001100\n010100\n100100\n111110\n000100\n000000\n000000\nCHAR 53\n000000\n011110\n010000\n011100\n000010\n000010\n011100\n000000\n000000\nCHAR 54\n000000\n001100\n010000\n011100\n010010\n010010\n001100\n000000\n000000\nCHAR 55\n000000\n011110\n000010\n000010\n000100\n001000\n001000\n000000\n000000\nCHAR 56\n000000\n001100\n010010\n001100\n010010\n010010\n001100\n000000\n000000\nCHAR 57\n000000\n001100\n010010\n010010\n001110\n000010\n001100\n000000\n000000\nCHAR 58\n000000\n000000\n001100\n001100\n000000\n001100\n001100\n000000\n000000\nCHAR 59\n000000\n000000\n001100\n001100\n000000\n001100\n000100\n000100\n001000\nCHAR 60\n000000\n000000\n000110\n011000\n100000\n011000\n000110\n000000\n000000\nCHAR 61\n000000\n000000\n000000\n111110\n000000\n111110\n000000\n000000\n000000\nCHAR 62\n000000\n000000\n110000\n001100\n000010\n001100\n110000\n000000\n000000\nCHAR 63\n001100\n010010\n000010\n001100\n001000\n000000\n001000\n000000\n000000\nCHAR 64\n000000\n011100\n100100\n101010\n101100\n100000\n011100\n000000\n000000\nCHAR 65\n000000\n001000\n010100\n100010\n111110\n100010\n100010\n000000\n000000\nCHAR 66\n000000\n111100\n100010\n111100\n100010\n100010\n111100\n000000\n000000\nCHAR 67\n000000\n001100\n010010\n010000\n010000\n010010\n001100\n000000\n000000\nCHAR 68\n000000\n011100\n010010\n010010\n010010\n010010\n011100\n000000\n000000\nCHAR 69\n000000\n011110\n010000\n011100\n010000\n010000\n011110\n000000\n000000\nCHAR 70\n000000\n011110\n010000\n011100\n010000\n010000\n010000\n000000\n000000\nCHAR 71\n000000\n001100\n010010\n010000\n010110\n010010\n001100\n000000\n000000\nCHAR 72\n000000\n010010\n010010\n011110\n010010\n010010\n010010\n000000\n000000\nCHAR 73\n000000\n011100\n001000\n001000\n001000\n001000\n011100\n000000\n000000\nCHAR 74\n000000\n001110\n000100\n000100\n000100\n100100\n011000\n000000\n000000\nCHAR 75\n000000\n010010\n010100\n011000\n010100\n010010\n010010\n000000\n000000\nCHAR 76\n000000\n010000\n010000\n010000\n010000\n010000\n011110\n000000\n000000\nCHAR 77\n000000\n100010\n110110\n101010\n101010\n100010\n100010\n000000\n000000\nCHAR 78\n000000\n010010\n011010\n010110\n010010\n010010\n010010\n000000\n000000\nCHAR 79\n000000\n011100\n100010\n100010\n100010\n100010\n011100\n000000\n000000\nCHAR 80\n000000\n011100\n010010\n010010\n011100\n010000\n010000\n000000\n000000\nCHAR 81\n000000\n001100\n010010\n010010\n011010\n010110\n001100\n000010\n000000\nCHAR 82\n000000\n011100\n010010\n010010\n011100\n010010\n010010\n000000\n000000\nCHAR 83\n000000\n001100\n010010\n001000\n000100\n010010\n001100\n000000\n000000\nCHAR 84\n000000\n111110\n001000\n001000\n001000\n001000\n001000\n000000\n000000\nCHAR 85\n000000\n010010\n010010\n010010\n010010\n010010\n001100\n000000\n000000\nCHAR 86\n000000\n010010\n010010\n010010\n011110\n001100\n001100\n000000\n000000\nCHAR 87\n000000\n100010\n100010\n101010\n101010\n110110\n100010\n000000\n000000\nCHAR 88\n000000\n100010\n010100\n001000\n001000\n010100\n100010\n000000\n000000\nCHAR 89\n000000\n100010\n100010\n010100\n001000\n001000\n001000\n000000\n000000\nCHAR 90\n000000\n011110\n000010\n000100\n001000\n010000\n011110\n000000\n000000\nCHAR 91\n000000\n011100\n010000\n010000\n010000\n010000\n011100\n000000\n000000\nCHAR 92\n000000\n010000\n010000\n001000\n000100\n000010\n000010\n000000\n000000\nCHAR 93\n000000\n011100\n000100\n000100\n000100\n000100\n011100\n000000\n000000\nCHAR 94\n000000\n001000\n010100\n100010\n000000\n000000\n000000\n000000\n000000\nCHAR 95\n000000\n000000\n000000\n000000\n000000\n000000\n000000\n000000\n111110\nCHAR 96\n000000\n001000\n000100\n000000\n000000\n000000\n000000\n000000\n000000\nCHAR 97\n000000\n000000\n000000\n001110\n010010\n010010\n001110\n000000\n000000\nCHAR 98\n000000\n010000\n010000\n011100\n010010\n010010\n011100\n000000\n000000\nCHAR 99\n000000\n000000\n000000\n001110\n010000\n010000\n001110\n000000\n000000\nCHAR 100\n000000\n000010\n000010\n001110\n010010\n010010\n001110\n000000\n000000\nCHAR 101\n000000\n000000\n000000\n001100\n010110\n011000\n001110\n000000\n000000\nCHAR 102\n000000\n000100\n001010\n001000\n011100\n001000\n001000\n000000\n000000\nCHAR 103\n000000\n000000\n000000\n001100\n010010\n010010\n001110\n000010\n001100\nCHAR 104\n000000\n010000\n010000\n011100\n010010\n010010\n010010\n000000\n000000\nCHAR 105\n000000\n001000\n000000\n011000\n001000\n001000\n011100\n000000\n000000\nCHAR 106\n000000\n000100\n000000\n001100\n000100\n000100\n000100\n010100\n001000\nCHAR 107\n000000\n010000\n010000\n010100\n011000\n010100\n010010\n000000\n000000\nCHAR 108\n000000\n011000\n001000\n001000\n001000\n001000\n011100\n000000\n000000\nCHAR 109\n000000\n000000\n000000\n110100\n101010\n101010\n100010\n000000\n000000\nCHAR 110\n000000\n000000\n000000\n011100\n010010\n010010\n010010\n000000\n000000\nCHAR 111\n000000\n000000\n000000\n001100\n010010\n010010\n001100\n000000\n000000\nCHAR 112\n000000\n000000\n000000\n011100\n010010\n010010\n011100\n010000\n010000\nCHAR 113\n000000\n000000\n000000\n001110\n010010\n010010\n001110\n000010\n000010\nCHAR 114\n000000\n000000\n000000\n010100\n011010\n010000\n010000\n000000\n000000\nCHAR 115\n000000\n000000\n000000\n001110\n011000\n000110\n011100\n000000\n000000\nCHAR 116\n000000\n001000\n001000\n011100\n001000\n001010\n000100\n000000\n000000\nCHAR 117\n000000\n000000\n000000\n010010\n010010\n010010\n001110\n000000\n000000\nCHAR 118\n000000\n000000\n000000\n010010\n010010\n001100\n001100\n000000\n000000\nCHAR 119\n000000\n000000\n000000\n100010\n101010\n101010\n010100\n000000\n000000\nCHAR 120\n000000\n000000\n000000\n010010\n001100\n001100\n010010\n000000\n000000\nCHAR 121\n000000\n000000\n000000\n010010\n010010\n010010\n001110\n010010\n001100\nCHAR 122\n000000\n000000\n000000\n011110\n000100\n001000\n011110\n000000\n000000\nCHAR 123\n000100\n001000\n001000\n010000\n001000\n001000\n000100\n000000\n000000\nCHAR 124\n000000\n001000\n001000\n001000\n001000\n001000\n001000\n001000\n000000\nCHAR 125\n010000\n001000\n001000\n000100\n001000\n001000\n010000\n000000\n000000\nCHAR 126\n000000\n000000\n001010\n010100\n000000\n000000\n000000\n000000\n000000\nCHAR 160\n000000\n000000\n000000\n000000\n000000\n000000\n000000\n000000\n000000\nCHAR 161\n000000\n001000\n000000\n001000\n001000\n001000\n001000\n000000\n000000\nCHAR 162\n000000\n000000\n000100\n001110\n010100\n010100\n001110\n000100\n000000\nCHAR 163\n000000\n001100\n010010\n010000\n111100\n010000\n010000\n111110\n000000\nCHAR 164\n000000\n000000\n101010\n010100\n100010\n010100\n101010\n000000\n000000\nCHAR 165\n000000\n100010\n010100\n111110\n001000\n111110\n001000\n000000\n000000\nCHAR 166\n000000\n001000\n001000\n001000\n000000\n001000\n001000\n001000\n000000\nCHAR 167\n000000\n001110\n010000\n001100\n010010\n001100\n000010\n011100\n000000\nCHAR 168\n000000\n010100\n000000\n000000\n000000\n000000\n000000\n000000\n000000\nCHAR 169\n011110\n100001\n100101\n101001\n100101\n100001\n011110\n000000\n000000\nCHAR 170\n000000\n001100\n010100\n001100\n000000\n011100\n000000\n000000\n000000\nCHAR 171\n000000\n000000\n001010\n010100\n101000\n010100\n001010\n000000\n000000\nCHAR 172\n000000\n000000\n000000\n000000\n011110\n000010\n000010\n000000\n000000\nCHAR 173\n000000\n000000\n000000\n000000\n011110\n000000\n000000\n000000\n000000\nCHAR 174\n011110\n100001\n101101\n101001\n101001\n100001\n011110\n000000\n000000\nCHAR 175\n000000\n011110\n000000\n000000\n000000\n000000\n000000\n000000\n000000\nCHAR 176\n000000\n000000\n001100\n010010\n001100\n000000\n000000\n000000\n000000\nCHAR 177\n000000\n001000\n001000\n111110\n001000\n001000\n000000\n111110\n000000\nCHAR 178\n000000\n001000\n010100\n000100\n001000\n011100\n000000\n000000\n000000\nCHAR 179\n000000\n011000\n000100\n001000\n000100\n011000\n000000\n000000\n000000\nCHAR 180\n000000\n000100\n001000\n000000\n000000\n000000\n000000\n000000\n000000\nCHAR 181\n000000\n000000\n000000\n010010\n010010\n010110\n011010\n010000\n000000\nCHAR 182\n000000\n011110\n111010\n111010\n011010\n001010\n001010\n000000\n000000\nCHAR 183\n000000\n000000\n000000\n000000\n001000\n000000\n000000\n000000\n000000\nCHAR 184\n000000\n000000\n000000\n000000\n000000\n000000\n000000\n000100\n001000\nCHAR 185\n000000\n001000\n011000\n001000\n001000\n011100\n000000\n000000\n000000\nCHAR 186\n000000\n001000\n010100\n001000\n000000\n011100\n000000\n000000\n000000\nCHAR 187\n000000\n000000\n101000\n010100\n001010\n010100\n101000\n000000\n000000\nCHAR 188\n010000\n110000\n010000\n010100\n011100\n001100\n011110\n000100\n000000\nCHAR 189\n010000\n110000\n010000\n010100\n011010\n000010\n000100\n001110\n000000\nCHAR 190\n110000\n001000\n010000\n001100\n111100\n001100\n011110\n000100\n000000\nCHAR 191\n000100\n000000\n000100\n001100\n010000\n010010\n001100\n000000\n000000\nCHAR 192\n010000\n001000\n001000\n010100\n011100\n100010\n100010\n000000\n000000\nCHAR 193\n000100\n001000\n001000\n010100\n011100\n100010\n100010\n000000\n000000\nCHAR 194\n001000\n010100\n001000\n010100\n011100\n100010\n100010\n000000\n000000\nCHAR 195\n001010\n010100\n001000\n010100\n011100\n100010\n100010\n000000\n000000\nCHAR 196\n010100\n000000\n001000\n010100\n011100\n100010\n100010\n000000\n000000\nCHAR 197\n001000\n010100\n001000\n010100\n011100\n100010\n100010\n000000\n000000\nCHAR 198\n000000\n011110\n101000\n111100\n101000\n101000\n101110\n000000\n000000\nCHAR 199\n000000\n001100\n010010\n010000\n010000\n010010\n001100\n000100\n001000\nCHAR 200\n001000\n000100\n011110\n010000\n011100\n010000\n011110\n000000\n000000\nCHAR 201\n000100\n001000\n011110\n010000\n011100\n010000\n011110\n000000\n000000\nCHAR 202\n000100\n001010\n011110\n010000\n011100\n010000\n011110\n000000\n000000\nCHAR 203\n001010\n000000\n011110\n010000\n011100\n010000\n011110\n000000\n000000\nCHAR 204\n010000\n001000\n011100\n001000\n001000\n001000\n011100\n000000\n000000\nCHAR 205\n000100\n001000\n011100\n001000\n001000\n001000\n011100\n000000\n000000\nCHAR 206\n001000\n010100\n011100\n001000\n001000\n001000\n011100\n000000\n000000\nCHAR 207\n010100\n000000\n011100\n001000\n001000\n001000\n011100\n000000\n000000\nCHAR 208\n000000\n011100\n010010\n111010\n010010\n010010\n011100\n000000\n000000\nCHAR 209\n001010\n010100\n010010\n011010\n010110\n010010\n010010\n000000\n000000\nCHAR 210\n001000\n000100\n001100\n010010\n010010\n010010\n001100\n000000\n000000\nCHAR 211\n000100\n001000\n001100\n010010\n010010\n010010\n001100\n000000\n000000\nCHAR 212\n000100\n001010\n001100\n010010\n010010\n010010\n001100\n000000\n000000\nCHAR 213\n001010\n010100\n001100\n010010\n010010\n010010\n001100\n000000\n000000\nCHAR 214\n001010\n000000\n001100\n010010\n010010\n010010\n001100\n000000\n000000\nCHAR 215\n000000\n000000\n100010\n010100\n001000\n010100\n100010\n000000\n000000\nCHAR 216\n000010\n001110\n010110\n010110\n011010\n011010\n011100\n010000\n000000\nCHAR 217\n001000\n000100\n010010\n010010\n010010\n010010\n001100\n000000\n000000\nCHAR 218\n000100\n001000\n010010\n010010\n010010\n010010\n001100\n000000\n000000\nCHAR 219\n000100\n001010\n010010\n010010\n010010\n010010\n001100\n000000\n000000\nCHAR 220\n001010\n000000\n010010\n010010\n010010\n010010\n001100\n000000\n000000\nCHAR 221\n000100\n001000\n100010\n010100\n001000\n001000\n001000\n000000\n000000\nCHAR 222\n000000\n010000\n011100\n010010\n010010\n011100\n010000\n000000\n000000\nCHAR 223\n000000\n001100\n010010\n010100\n010100\n010010\n010100\n000000\n000000\nCHAR 224\n001000\n000100\n000000\n001110\n010010\n010010\n001110\n000000\n000000\nCHAR 225\n000100\n001000\n000000\n001110\n010010\n010010\n001110\n000000\n000000\nCHAR 226\n000100\n001010\n000000\n001110\n010010\n010010\n001110\n000000\n000000\nCHAR 227\n001010\n010100\n000000\n001110\n010010\n010010\n001110\n000000\n000000\nCHAR 228\n000000\n001010\n000000\n001110\n010010\n010010\n001110\n000000\n000000\nCHAR 229\n000100\n001010\n000100\n001110\n010010\n010010\n001110\n000000\n000000\nCHAR 230\n000000\n000000\n000000\n011100\n101010\n101100\n011110\n000000\n000000\nCHAR 231\n000000\n000000\n000000\n001110\n010000\n010000\n001110\n000100\n001000\nCHAR 232\n001000\n000100\n000000\n001100\n010110\n011000\n001110\n000000\n000000\nCHAR 233\n000100\n001000\n000000\n001100\n010110\n011000\n001110\n000000\n000000\nCHAR 234\n000100\n001010\n000000\n001100\n010110\n011000\n001110\n000000\n000000\nCHAR 235\n000000\n001010\n000000\n001100\n010110\n011000\n001110\n000000\n000000\nCHAR 236\n010000\n001000\n000000\n011000\n001000\n001000\n011100\n000000\n000000\nCHAR 237\n000100\n001000\n000000\n011000\n001000\n001000\n011100\n000000\n000000\nCHAR 238\n001000\n010100\n000000\n011000\n001000\n001000\n011100\n000000\n000000\nCHAR 239\n000000\n010100\n000000\n011000\n001000\n001000\n011100\n000000\n000000\nCHAR 240\n000110\n001100\n000010\n001110\n010010\n010010\n001100\n000000\n000000\nCHAR 241\n001010\n010100\n000000\n011100\n010010\n010010\n010010\n000000\n000000\nCHAR 242\n001000\n000100\n000000\n001100\n010010\n010010\n001100\n000000\n000000\nCHAR 243\n000100\n001000\n000000\n001100\n010010\n010010\n001100\n000000\n000000\nCHAR 244\n000100\n001010\n000000\n001100\n010010\n010010\n001100\n000000\n000000\nCHAR 245\n001010\n010100\n000000\n001100\n010010\n010010\n001100\n000000\n000000\nCHAR 246\n000000\n001010\n000000\n001100\n010010\n010010\n001100\n000000\n000000\nCHAR 247\n000000\n000000\n001000\n000000\n111110\n000000\n001000\n000000\n000000\nCHAR 248\n000000\n000000\n000000\n001110\n010110\n011010\n011100\n000000\n000000\nCHAR 249\n001000\n000100\n000000\n010010\n010010\n010010\n001110\n000000\n000000\nCHAR 250\n000100\n001000\n000000\n010010\n010010\n010010\n001110\n000000\n000000\nCHAR 251\n000100\n001010\n000000\n010010\n010010\n010010\n001110\n000000\n000000\nCHAR 252\n000000\n001010\n000000\n010010\n010010\n010010\n001110\n000000\n000000\nCHAR 253\n000100\n001000\n000000\n010010\n010010\n010010\n001110\n010010\n001100\nCHAR 254\n000000\n010000\n010000\n011100\n010010\n010010\n011100\n010000\n010000\nCHAR 255\n000000\n001010\n000000\n010010\n010010\n010010\n001110\n010010\n001100\nCHAR 256\n011100\n000000\n001000\n010100\n011100\n100010\n100010\n000000\n000000\nCHAR 257\n000000\n001110\n000000\n001110\n010010\n010010\n001110\n000000\n000000\nCHAR 258\n100100\n011000\n001000\n010100\n011100\n100010\n100010\n000000\n000000\nCHAR 259\n010010\n001100\n000000\n001110\n010010\n010010\n001110\n000000\n000000\nCHAR 260\n000000\n001000\n010100\n100010\n111110\n100010\n100010\n000100\n000010\nCHAR 261\n000000\n000000\n000000\n001110\n010010\n010010\n001110\n000100\n000010\nCHAR 262\n000100\n001000\n001100\n010010\n010000\n010010\n001100\n000000\n000000\nCHAR 263\n000100\n001000\n000000\n001110\n010000\n010000\n001110\n000000\n000000\nCHAR 264\n000100\n001010\n001100\n010010\n010000\n010010\n001100\n000000\n000000\nCHAR 265\n000100\n001010\n000000\n001110\n010000\n010000\n001110\n000000\n000000\nCHAR 266\n000100\n000000\n001100\n010010\n010000\n010010\n001100\n000000\n000000\nCHAR 267\n000000\n000100\n000000\n001110\n010000\n010000\n001110\n000000\n000000\nCHAR 268\n001010\n000100\n001100\n010010\n010000\n010010\n001100\n000000\n000000\nCHAR 269\n001010\n000100\n000000\n001110\n010000\n010000\n001110\n000000\n000000\nCHAR 270\n001010\n000100\n011100\n010010\n010010\n010010\n011100\n000000\n000000\nCHAR 271\n010100\n001010\n000010\n001110\n010010\n010010\n001110\n000000\n000000\nCHAR 272\n000000\n011100\n010010\n111010\n010010\n010010\n011100\n000000\n000000\nCHAR 273\n000000\n000100\n001110\n011100\n100100\n100100\n011100\n000000\n000000\nCHAR 274\n011110\n000000\n011110\n010000\n011100\n010000\n011110\n000000\n000000\nCHAR 275\n000000\n011110\n000000\n001100\n010110\n011000\n001110\n000000\n000000\nCHAR 276\n010010\n001100\n011110\n010000\n011100\n010000\n011110\n000000\n000000\nCHAR 277\n010010\n001100\n000000\n001100\n010110\n011000\n001110\n000000\n000000\nCHAR 278\n001000\n000000\n011110\n010000\n011100\n010000\n011110\n000000\n000000\nCHAR 279\n000000\n001000\n000000\n001100\n010110\n011000\n001110\n000000\n000000\nCHAR 280\n000000\n011110\n010000\n011100\n010000\n010000\n011110\n001000\n000100\nCHAR 281\n000000\n000000\n000000\n001100\n010110\n011000\n001110\n001000\n000100\nCHAR 282\n001010\n000100\n011110\n010000\n011100\n010000\n011110\n000000\n000000\nCHAR 283\n001010\n000100\n000000\n001100\n010110\n011000\n001110\n000000\n000000\nCHAR 284\n000100\n001010\n001110\n010000\n010110\n010010\n001100\n000000\n000000\nCHAR 285\n000100\n001010\n000000\n001100\n010010\n010010\n001110\n000010\n001100\nCHAR 286\n010010\n001100\n001110\n010000\n010110\n010010\n001100\n000000\n000000\nCHAR 287\n010010\n001100\n000000\n001100\n010010\n010010\n001110\n000010\n001100\nCHAR 288\n000100\n000000\n001110\n010000\n010110\n010010\n001100\n000000\n000000\nCHAR 289\n000000\n000100\n000000\n001100\n010010\n010010\n001110\n000010\n001100\nCHAR 290\n000000\n001100\n010010\n010000\n010110\n010010\n001100\n000100\n001000\nCHAR 291\n000000\n000100\n001000\n001100\n010010\n010010\n001110\n000010\n001100\nCHAR 292\n000100\n001010\n000000\n010010\n011110\n010010\n010010\n000000\n000000\nCHAR 293\n000100\n101010\n100000\n111000\n100100\n100100\n100100\n000000\n000000\nCHAR 294\n000000\n010100\n111110\n010100\n011100\n010100\n010100\n000000\n000000\nCHAR 295\n000000\n010000\n111000\n011100\n010010\n010010\n010010\n000000\n000000\nCHAR 296\n001010\n010100\n001110\n000100\n000100\n000100\n001110\n000000\n000000\nCHAR 297\n001010\n010100\n000000\n001100\n000100\n000100\n001110\n000000\n000000\nCHAR 298\n011100\n000000\n011100\n001000\n001000\n001000\n011100\n000000\n000000\nCHAR 299\n000000\n011100\n000000\n011000\n001000\n001000\n011100\n000000\n000000\nCHAR 300\n010010\n001100\n000000\n001110\n000100\n000100\n001110\n000000\n000000\nCHAR 301\n010010\n001100\n000000\n001100\n000100\n000100\n001110\n000000\n000000\nCHAR 302\n000000\n011100\n001000\n001000\n001000\n001000\n011100\n001000\n000100\nCHAR 303\n000000\n001000\n000000\n011000\n001000\n001000\n011100\n001000\n000100\nCHAR 304\n001000\n000000\n011100\n001000\n001000\n001000\n011100\n000000\n000000\nCHAR 305\n000000\n000000\n000000\n011000\n001000\n001000\n011100\n000000\n000000\nCHAR 306\n000000\n101110\n100010\n100010\n100010\n101010\n100100\n000000\n000000\nCHAR 307\n000000\n100010\n000000\n100110\n100010\n100010\n100010\n001010\n000100\nCHAR 308\n000100\n001010\n001110\n000100\n000100\n100100\n011000\n000000\n000000\nCHAR 309\n000100\n001010\n000000\n001100\n000100\n000100\n000100\n010100\n001000\nCHAR 310\n000000\n010010\n010100\n011000\n010100\n010010\n010010\n001000\n010000\nCHAR 311\n000000\n010000\n010000\n010100\n011000\n010100\n010010\n001000\n010000\nCHAR 312\n000000\n000000\n000000\n010110\n011000\n010100\n010010\n000000\n000000\nCHAR 313\n000010\n000100\n010000\n010000\n010000\n010000\n011110\n000000\n000000\nCHAR 314\n001000\n010000\n011000\n001000\n001000\n001000\n011100\n000000\n000000\nCHAR 315\n000000\n010000\n010000\n010000\n010000\n010000\n011110\n000100\n001000\nCHAR 316\n000000\n011000\n001000\n001000\n001000\n001000\n011100\n001000\n010000\nCHAR 317\n001010\n000100\n010000\n010000\n010000\n010000\n011110\n000000\n000000\nCHAR 318\n010100\n001000\n011000\n001000\n001000\n001000\n011100\n000000\n000000\nCHAR 319\n000000\n010000\n010000\n010100\n010000\n010000\n011110\n000000\n000000\nCHAR 320\n000000\n011000\n001000\n001010\n001000\n001000\n011100\n000000\n000000\nCHAR 321\n000000\n010000\n010000\n011000\n110000\n010000\n011110\n000000\n000000\nCHAR 322\n000000\n011000\n001000\n001100\n011000\n001000\n011100\n000000\n000000\nCHAR 323\n000100\n001000\n010010\n011010\n010110\n010010\n010010\n000000\n000000\nCHAR 324\n000100\n001000\n000000\n011100\n010010\n010010\n010010\n000000\n000000\nCHAR 325\n000000\n010010\n011010\n010110\n010010\n010010\n010010\n001000\n010000\nCHAR 326\n000000\n000000\n000000\n011100\n010010\n010010\n010010\n001000\n010000\nCHAR 327\n001010\n000100\n010010\n011010\n010110\n010010\n010010\n000000\n000000\nCHAR 328\n010100\n001000\n000000\n011100\n010010\n010010\n010010\n000000\n000000\nCHAR 329\n000000\n110000\n010000\n101100\n001010\n001010\n001010\n000000\n000000\nCHAR 330\n000000\n010010\n011010\n010110\n010010\n010010\n010010\n000010\n000100\nCHAR 331\n000000\n000000\n000000\n011100\n010010\n010010\n010010\n000010\n000100\nCHAR 332\n111110\n000000\n011100\n100010\n100010\n100010\n011100\n000000\n000000\nCHAR 333\n000000\n011110\n000000\n001100\n010010\n010010\n001100\n000000\n000000\nCHAR 334\n100010\n011100\n011100\n100010\n100010\n100010\n011100\n000000\n000000\nCHAR 335\n010010\n001100\n000000\n001100\n010010\n010010\n001100\n000000\n000000\nCHAR 336\n010010\n100100\n011100\n100010\n100010\n100010\n011100\n000000\n000000\nCHAR 337\n010010\n100100\n000000\n011000\n100100\n100100\n011000\n000000\n000000\nCHAR 338\n000000\n011110\n101000\n101100\n101000\n101000\n011110\n000000\n000000\nCHAR 339\n000000\n000000\n000000\n010100\n101010\n101100\n010110\n000000\n000000\nCHAR 340\n000100\n001000\n011100\n010010\n011100\n010100\n010010\n000000\n000000\nCHAR 341\n000100\n001000\n000000\n010100\n011010\n010000\n010000\n000000\n000000\nCHAR 342\n000000\n011100\n010010\n010010\n011100\n010010\n010010\n001000\n010000\nCHAR 343\n000000\n000000\n000000\n010100\n011010\n010000\n010000\n001000\n010000\nCHAR 344\n010100\n001000\n011100\n010010\n011100\n010100\n010010\n000000\n000000\nCHAR 345\n010100\n001000\n000000\n010100\n011010\n010000\n010000\n000000\n000000\nCHAR 346\n000100\n001000\n001110\n010000\n001100\n000010\n011100\n000000\n000000\nCHAR 347\n000100\n001000\n000000\n001110\n011000\n000110\n011100\n000000\n000000\nCHAR 348\n000100\n001010\n001110\n010000\n001100\n000010\n011100\n000000\n000000\nCHAR 349\n000100\n001010\n000000\n001110\n011000\n000110\n011100\n000000\n000000\nCHAR 350\n000000\n001100\n010010\n001000\n000100\n010010\n001100\n000100\n001000\nCHAR 351\n000000\n000000\n000000\n001110\n011000\n000110\n011100\n000100\n001000\nCHAR 352\n001010\n000100\n001110\n010000\n001100\n000010\n011100\n000000\n000000\nCHAR 353\n001010\n000100\n000000\n001110\n011000\n000110\n011100\n000000\n000000\nCHAR 354\n000000\n111110\n001000\n001000\n001000\n001000\n001000\n000100\n001000\nCHAR 355\n000000\n001000\n001000\n011100\n001000\n001010\n000100\n000100\n001000\nCHAR 356\n010100\n001000\n111110\n001000\n001000\n001000\n001000\n000000\n000000\nCHAR 357\n001010\n000100\n001000\n011100\n001000\n001010\n000100\n000000\n000000\nCHAR 358\n000000\n111110\n001000\n001000\n011100\n001000\n001000\n000000\n000000\nCHAR 359\n000000\n001000\n001000\n011100\n011100\n001010\n000100\n000000\n000000\nCHAR 360\n001010\n010100\n000000\n010010\n010010\n010010\n001100\n000000\n000000\nCHAR 361\n001010\n010100\n000000\n010010\n010010\n010010\n001110\n000000\n000000\nCHAR 362\n011110\n000000\n010010\n010010\n010010\n010010\n001100\n000000\n000000\nCHAR 363\n000000\n011110\n000000\n010010\n010010\n010010\n001110\n000000\n000000\nCHAR 364\n010010\n001100\n000000\n010010\n010010\n010010\n001100\n000000\n000000\nCHAR 365\n010010\n001100\n000000\n010010\n010010\n010010\n001110\n000000\n000000\nCHAR 366\n001100\n010010\n001100\n010010\n010010\n010010\n001100\n000000\n000000\nCHAR 367\n001100\n010010\n001100\n010010\n010010\n010010\n001110\n000000\n000000\nCHAR 368\n010010\n100100\n000000\n100100\n100100\n100100\n011000\n000000\n000000\nCHAR 369\n010010\n100100\n000000\n100100\n100100\n100100\n011100\n000000\n000000\nCHAR 370\n000000\n010010\n010010\n010010\n010010\n010010\n001100\n001000\n000100\nCHAR 371\n000000\n000000\n000000\n010010\n010010\n010010\n001110\n001000\n000100\nCHAR 372\n001000\n010100\n000000\n100010\n101010\n110110\n100010\n000000\n000000\nCHAR 373\n001000\n010100\n000000\n100010\n101010\n101010\n010100\n000000\n000000\nCHAR 374\n001000\n010100\n000000\n100010\n010100\n001000\n001000\n000000\n000000\nCHAR 375\n000100\n001010\n000000\n010010\n010010\n010010\n001110\n010010\n001100\nCHAR 376\n010100\n000000\n100010\n010100\n001000\n001000\n001000\n000000\n000000\nCHAR 377\n000100\n001000\n011110\n000100\n001000\n010000\n011110\n000000\n000000\nCHAR 378\n000100\n001000\n000000\n011110\n000100\n001000\n011110\n000000\n000000\nCHAR 379\n000100\n000000\n011110\n000100\n001000\n010000\n011110\n000000\n000000\nCHAR 380\n000000\n000100\n000000\n011110\n000100\n001000\n011110\n000000\n000000\nCHAR 381\n001010\n000100\n011110\n000100\n001000\n010000\n011110\n000000\n000000\nCHAR 382\n001010\n000100\n000000\n011110\n000100\n001000\n011110\n000000\n000000\nCHAR 383\n000000\n000100\n001010\n011000\n001000\n001000\n001000\n000000\n000000\nCHAR 399\n000000\n001100\n010010\n000010\n011110\n010010\n001100\n000000\n000000\nCHAR 402\n000000\n000100\n001010\n001000\n011100\n001000\n001000\n001000\n010000\nCHAR 416\n000000\n011001\n100101\n100110\n100100\n100100\n011000\n000000\n000000\nCHAR 417\n000000\n000000\n000000\n001101\n010010\n010010\n001100\n000000\n000000\nCHAR 431\n000000\n010101\n010101\n010110\n010100\n010100\n001000\n000000\n000000\nCHAR 432\n000000\n000000\n000000\n010101\n010110\n010100\n001100\n000000\n000000\nCHAR 437\n000000\n011110\n000010\n011110\n001000\n010000\n011110\n000000\n000000\nCHAR 438\n000000\n000000\n000000\n011110\n011110\n001000\n011110\n000000\n000000\nCHAR 465\n001010\n000100\n001100\n010010\n010010\n010010\n001100\n000000\n000000\nCHAR 466\n001010\n000100\n000000\n001100\n010010\n010010\n001100\n000000\n000000\nCHAR 486\n001010\n000100\n001110\n010000\n010110\n010010\n001100\n000000\n000000\nCHAR 487\n001010\n000100\n000000\n001100\n010010\n010010\n001110\n000010\n001100\nCHAR 506\n000100\n001000\n010100\n001000\n010100\n011100\n010100\n000000\n000000\nCHAR 507\n000010\n000100\n001010\n001110\n010010\n010010\n001110\n000000\n000000\nCHAR 508\n000100\n001000\n011110\n101000\n111100\n101000\n101110\n000000\n000000\nCHAR 509\n000100\n001000\n000000\n011100\n101010\n101100\n011110\n000000\n000000\nCHAR 510\n000010\n000100\n001110\n010110\n011010\n011010\n011100\n000000\n000000\nCHAR 511\n000100\n001000\n000000\n001110\n010110\n011010\n011100\n000000\n000000\nCHAR 536\n000000\n001100\n010010\n001000\n000100\n010010\n001100\n000100\n001000\nCHAR 537\n000000\n000000\n000000\n001110\n011000\n000110\n011100\n000100\n001000\nCHAR 538\n000000\n111110\n001000\n001000\n001000\n001000\n001000\n000100\n001000\nCHAR 539\n000000\n001000\n001000\n011100\n001000\n001010\n000100\n000100\n001000\nCHAR 600\n000000\n000000\n000000\n001100\n011010\n000110\n011100\n000000\n000000\nCHAR 601\n000000\n000000\n000000\n011100\n000110\n011010\n001100\n000000\n000000\nCHAR 699\n000000\n000100\n001000\n001100\n000000\n000000\n000000\n000000\n000000\nCHAR 700\n000000\n001100\n000100\n001000\n000000\n000000\n000000\n000000\n000000\nCHAR 701\n000000\n001100\n001000\n000100\n000000\n000000\n000000\n000000\n000000\nCHAR 710\n001000\n010100\n000000\n000000\n000000\n000000\n000000\n000000\n000000\nCHAR 711\n010100\n001000\n000000\n000000\n000000\n000000\n000000\n000000\n000000\nCHAR 713\n000000\n011100\n000000\n000000\n000000\n000000\n000000\n000000\n000000\nCHAR 728\n010010\n001100\n000000\n000000\n000000\n000000\n000000\n000000\n000000\nCHAR 729\n000000\n001000\n000000\n000000\n000000\n000000\n000000\n000000\n000000\nCHAR 730\n001000\n010100\n001000\n000000\n000000\n000000\n000000\n000000\n000000\nCHAR 731\n000000\n000000\n000000\n000000\n000000\n000000\n000000\n001000\n000100\nCHAR 732\n001010\n010100\n000000\n000000\n000000\n000000\n000000\n000000\n000000\nCHAR 733\n010010\n100100\n000000\n000000\n000000\n000000\n000000\n000000\n000000\nCHAR 768\n010000\n001000\n000000\n000000\n000000\n000000\n000000\n000000\n000000\nCHAR 769\n000100\n001000\n000000\n000000\n000000\n000000\n000000\n000000\n000000\nCHAR 770\n001000\n010100\n000000\n000000\n000000\n000000\n000000\n000000\n000000\nCHAR 771\n001010\n010100\n000000\n000000\n000000\n000000\n000000\n000000\n000000\nCHAR 772\n011100\n000000\n000000\n000000\n000000\n000000\n000000\n000000\n000000\nCHAR 773\n111110\n000000\n000000\n000000\n000000\n000000\n000000\n000000\n000000\nCHAR 774\n100010\n011100\n000000\n000000\n000000\n000000\n000000\n000000\n000000\nCHAR 775\n001000\n000000\n000000\n000000\n000000\n000000\n000000\n000000\n000000\nCHAR 776\n010100\n000000\n000000\n000000\n000000\n000000\n000000\n000000\n000000\nCHAR 777\n011000\n000100\n001000\n000000\n000000\n000000\n000000\n000000\n000000\nCHAR 778\n001000\n010100\n001000\n000000\n000000\n000000\n000000\n000000\n000000\nCHAR 779\n010010\n100100\n000000\n000000\n000000\n000000\n000000\n000000\n000000\nCHAR 780\n010100\n001000\n000000\n000000\n000000\n000000\n000000\n000000\n000000\nCHAR 781\n001000\n001000\n000000\n000000\n000000\n000000\n000000\n000000\n000000\nCHAR 782\n010100\n010100\n000000\n000000\n000000\n000000\n000000\n000000\n000000\nCHAR 783\n100100\n010010\n000000\n000000\n000000\n000000\n000000\n000000\n000000\nCHAR 784\n101010\n011100\n000000\n000000\n000000\n000000\n000000\n000000\n000000\nCHAR 785\n011100\n100010\n000000\n000000\n000000\n000000\n000000\n000000\n000000\nCHAR 786\n000100\n001000\n001100\n000000\n000000\n000000\n000000\n000000\n000000\nCHAR 787\n001100\n000100\n001000\n000000\n000000\n000000\n000000\n000000\n000000\nCHAR 788\n001100\n001000\n000100\n000000\n000000\n000000\n000000\n000000\n000000\nCHAR 803\n000000\n000000\n000000\n000000\n000000\n000000\n000000\n000000\n001000\nCHAR 804\n000000\n000000\n000000\n000000\n000000\n000000\n000000\n000000\n010100\nCHAR 884\n000100\n001000\n000000\n000000\n000000\n000000\n000000\n000000\n000000\nCHAR 885\n000000\n000000\n000000\n000000\n000000\n000000\n000000\n000100\n001000\nCHAR 890\n000000\n000000\n000000\n000000\n000000\n000000\n000000\n001000\n001100\nCHAR 894\n000000\n000000\n001100\n001100\n000000\n001100\n000100\n000100\n001000\nCHAR 900\n001000\n001000\n000000\n000000\n000000\n000000\n000000\n000000\n000000\nCHAR 901\n001000\n101010\n000000\n000000\n000000\n000000\n000000\n000000\n000000\nCHAR 902\n100000\n101100\n010010\n010010\n011110\n010010\n010010\n000000\n000000\nCHAR 903\n000000\n000000\n000000\n000000\n001000\n000000\n000000\n000000\n000000\nCHAR 904\n100000\n101110\n001000\n001100\n001000\n001000\n001110\n000000\n000000\nCHAR 905\n100000\n101010\n001010\n001110\n001010\n001010\n001010\n000000\n000000\nCHAR 906\n100000\n101110\n000100\n000100\n000100\n000100\n001110\n000000\n000000\nCHAR 908\n100000\n101100\n010010\n010010\n010010\n010010\n001100\n000000\n000000\nCHAR 910\n100000\n101010\n001010\n001010\n000100\n000100\n000100\n000000\n000000\nCHAR 911\n100000\n101100\n010010\n010010\n010010\n001100\n011110\n000000\n000000\nCHAR 912\n001000\n101010\n000000\n001000\n001000\n001000\n000100\n000000\n000000\nCHAR 913\n000000\n001000\n010100\n100010\n111110\n100010\n100010\n000000\n000000\nCHAR 914\n000000\n111100\n100010\n111100\n100010\n100010\n111100\n000000\n000000\nCHAR 915\n000000\n011110\n010000\n010000\n010000\n010000\n010000\n000000\n000000\nCHAR 916\n000000\n001000\n001000\n010100\n010100\n100010\n111110\n000000\n000000\nCHAR 917\n000000\n011110\n010000\n011100\n010000\n010000\n011110\n000000\n000000\nCHAR 918\n000000\n011110\n000010\n000100\n001000\n010000\n011110\n000000\n000000\nCHAR 919\n000000\n010010\n010010\n011110\n010010\n010010\n010010\n000000\n000000\nCHAR 920\n000000\n011100\n100010\n111110\n100010\n100010\n011100\n000000\n000000\nCHAR 921\n000000\n011100\n001000\n001000\n001000\n001000\n011100\n000000\n000000\nCHAR 922\n000000\n010010\n010100\n011000\n010100\n010010\n010010\n000000\n000000\nCHAR 923\n000000\n001000\n001000\n010100\n010100\n100010\n100010\n000000\n000000\nCHAR 924\n000000\n100010\n110110\n101010\n101010\n100010\n100010\n000000\n000000\nCHAR 925\n000000\n010010\n011010\n010110\n010010\n010010\n010010\n000000\n000000\nCHAR 926\n000000\n011110\n000000\n001100\n000000\n000000\n011110\n000000\n000000\nCHAR 927\n000000\n011100\n100010\n100010\n100010\n100010\n011100\n000000\n000000\nCHAR 928\n000000\n011110\n010010\n010010\n010010\n010010\n010010\n000000\n000000\nCHAR 929\n000000\n011100\n010010\n010010\n011100\n010000\n010000\n000000\n000000\nCHAR 931\n000000\n011110\n010000\n001000\n001000\n010000\n011110\n000000\n000000\nCHAR 932\n000000\n111110\n001000\n001000\n001000\n001000\n001000\n000000\n000000\nCHAR 933\n000000\n100010\n100010\n010100\n001000\n001000\n001000\n000000\n000000\nCHAR 934\n000000\n001000\n011100\n101010\n101010\n011100\n001000\n000000\n000000\nCHAR 935\n000000\n100010\n010100\n001000\n001000\n010100\n100010\n000000\n000000\nCHAR 936\n000000\n101010\n101010\n101010\n011100\n001000\n001000\n000000\n000000\nCHAR 937\n000000\n011100\n100010\n100010\n100010\n010100\n110110\n000000\n000000\nCHAR 938\n010100\n000000\n011100\n001000\n001000\n001000\n011100\n000000\n000000\nCHAR 939\n010100\n000000\n100010\n010100\n001000\n001000\n001000\n000000\n000000\nCHAR 940\n000010\n000100\n000000\n001110\n010010\n010010\n001110\n000000\n000000\nCHAR 941\n000010\n000100\n000000\n001100\n010110\n011000\n001110\n000000\n000000\nCHAR 942\n000100\n001000\n000000\n101100\n110010\n100010\n100010\n000010\n000010\nCHAR 943\n001000\n010000\n000000\n010000\n010000\n010100\n001000\n000000\n000000\nCHAR 944\n001000\n101010\n000000\n100010\n100010\n100010\n011100\n000000\n000000\nCHAR 945\n000000\n000000\n000000\n001110\n010010\n010010\n001110\n000000\n000000\nCHAR 946\n000000\n001100\n010010\n011100\n010010\n010010\n011100\n010000\n010000\nCHAR 947\n000000\n000000\n000000\n100010\n100010\n010100\n010100\n001000\n001000\nCHAR 948\n000000\n011100\n100000\n011100\n100010\n100010\n011100\n000000\n000000\nCHAR 949\n000000\n000000\n000000\n001100\n010110\n011000\n001110\n000000\n000000\nCHAR 950\n000000\n111110\n001000\n010000\n010000\n001100\n000010\n001100\n000000\nCHAR 951\n000000\n000000\n000000\n101100\n110010\n100010\n100010\n000010\n000010\nCHAR 952\n000000\n001100\n010010\n011110\n010010\n010010\n001100\n000000\n000000\nCHAR 953\n000000\n000000\n000000\n010000\n010000\n010100\n001000\n000000\n000000\nCHAR 954\n000000\n000000\n000000\n010010\n010100\n011000\n010110\n000000\n000000\nCHAR 955\n000000\n011100\n100010\n000010\n011010\n100110\n100010\n000000\n000000\nCHAR 956\n000000\n000000\n000000\n100010\n100010\n100110\n111010\n100000\n100000\nCHAR 957\n000000\n000000\n000000\n100010\n100010\n010100\n001000\n000000\n000000\nCHAR 958\n000000\n111110\n001000\n010000\n011100\n100000\n011100\n000010\n000100\nCHAR 959\n000000\n000000\n000000\n001100\n010010\n010010\n001100\n000000\n000000\nCHAR 960\n000000\n000000\n000000\n111110\n010100\n010100\n010100\n000000\n000000\nCHAR 961\n000000\n000000\n000000\n011100\n100010\n100010\n111100\n100000\n100000\nCHAR 962\n000000\n000000\n000000\n011100\n100010\n100000\n011100\n000010\n001100\nCHAR 963\n000000\n000000\n000000\n011110\n100100\n100010\n011100\n000000\n000000\nCHAR 964\n000000\n000000\n000000\n011110\n001000\n001010\n000100\n000000\n000000\nCHAR 965\n000000\n000000\n000000\n100010\n100010\n100010\n011100\n000000\n000000\nCHAR 966\n000000\n000000\n000000\n100100\n101010\n101010\n011100\n001000\n001000\nCHAR 967\n000000\n000000\n000000\n100010\n010100\n001000\n010100\n100010\n100010\nCHAR 968\n000000\n000000\n000000\n101010\n101010\n101010\n011100\n001000\n001000\nCHAR 969\n000000\n000000\n000000\n010100\n100010\n101010\n010100\n000000\n000000\nCHAR 970\n000000\n010100\n000000\n001000\n001000\n001010\n000100\n000000\n000000\nCHAR 971\n000000\n010100\n000000\n100010\n100010\n100010\n011100\n000000\n000000\nCHAR 972\n000100\n001000\n000000\n011100\n100010\n100010\n011100\n000000\n000000\nCHAR 973\n000100\n001000\n000000\n100010\n100010\n100010\n011100\n000000\n000000\nCHAR 974\n000100\n001000\n000000\n010100\n100010\n101010\n010100\n000000\n000000\nCHAR 976\n000000\n011000\n100100\n100100\n111100\n100010\n011100\n000000\n000000\nCHAR 977\n000000\n001000\n010100\n001110\n110100\n010100\n001000\n000000\n000000\nCHAR 978\n000000\n100100\n101010\n010000\n010000\n010000\n010000\n000000\n000000\nCHAR 979\n000000\n110100\n001010\n011000\n101000\n001000\n001000\n000000\n000000\nCHAR 980\n101000\n000000\n100100\n101010\n010000\n010000\n010000\n000000\n000000\nCHAR 981\n000000\n001000\n001000\n011100\n101010\n101010\n011100\n001000\n001000\nCHAR 982\n000000\n000000\n000000\n111110\n100010\n101010\n010100\n000000\n000000\nCHAR 983\n000100\n001000\n000000\n100010\n010010\n011100\n100010\n000010\n001100\nCHAR 986\n000000\n001100\n010010\n100000\n100000\n100000\n011100\n000010\n000100\nCHAR 987\n000000\n000000\n000010\n011100\n100000\n100000\n011100\n000010\n001100\nCHAR 988\n000000\n111110\n100000\n100000\n111000\n100000\n100000\n000000\n000000\nCHAR 989\n000000\n000000\n000000\n011110\n010000\n010000\n011100\n010000\n010000\nCHAR 990\n000000\n100000\n100010\n100110\n101010\n110010\n000010\n000000\n000000\nCHAR 991\n000000\n001000\n010000\n100000\n111110\n000010\n000100\n001000\n001000\nCHAR 992\n000000\n001000\n010100\n010100\n100110\n101010\n101010\n000000\n000000\nCHAR 993\n000000\n111000\n000100\n001100\n010010\n000110\n001010\n000010\n000010\nCHAR 994\n000000\n101010\n101010\n101010\n101010\n011110\n000010\n111100\n000000\nCHAR 995\n000000\n000000\n000000\n101010\n101010\n011110\n000010\n111100\n000000\nCHAR 996\n000000\n010010\n101010\n100010\n011110\n000010\n000010\n000000\n000000\nCHAR 997\n000000\n000000\n000000\n001010\n010010\n001110\n000010\n000000\n000000\nCHAR 998\n000000\n100000\n100000\n101100\n110010\n100010\n000010\n111100\n000000\nCHAR 999\n000000\n001000\n011100\n101010\n010010\n000010\n111100\n000000\n000000\nCHAR 1000\n000000\n011100\n100010\n000010\n011100\n100000\n011110\n000000\n000000\nCHAR 1001\n000000\n000000\n011100\n100010\n011100\n100000\n011110\n000000\n000000\nCHAR 1002\n000000\n010100\n101010\n001000\n010100\n100010\n111110\n000000\n000000\nCHAR 1003\n000000\n000000\n010100\n101010\n001000\n010100\n011100\n000000\n000000\nCHAR 1004\n000000\n000010\n011100\n100000\n111100\n100010\n011100\n000000\n000000\nCHAR 1005\n000000\n000000\n000010\n011100\n100000\n110110\n011100\n000000\n000000\nCHAR 1006\n000000\n011100\n001000\n111110\n101010\n001000\n011100\n000000\n000000\nCHAR 1007\n000000\n001000\n001100\n001000\n111110\n101000\n001000\n011000\n001000\nCHAR 1008\n000000\n000000\n000000\n100010\n010010\n011100\n100010\n000000\n000000\nCHAR 1009\n000000\n000000\n000000\n011100\n100010\n100010\n111100\n100000\n011110\nCHAR 1010\n000000\n000000\n000000\n011100\n100010\n100000\n011110\n000000\n000000\nCHAR 1011\n000000\n000010\n000000\n000110\n000010\n000010\n010010\n010010\n001100\nCHAR 1012\n000000\n011100\n100010\n111110\n100010\n100010\n011100\n000000\n000000\nCHAR 1013\n000000\n000000\n000000\n001110\n011100\n010000\n001110\n000000\n000000\nCHAR 1024\n001000\n000100\n011110\n010000\n011100\n010000\n011110\n000000\n000000\nCHAR 1025\n001010\n000000\n011110\n010000\n011100\n010000\n011110\n000000\n000000\nCHAR 1026\n000000\n111110\n001000\n001100\n001010\n001010\n001010\n000010\n000100\nCHAR 1027\n000100\n001000\n011110\n010000\n010000\n010000\n010000\n000000\n000000\nCHAR 1028\n000000\n011100\n100010\n111000\n100000\n100010\n011100\n000000\n000000\nCHAR 1029\n000000\n001100\n010010\n001000\n000100\n010010\n001100\n000000\n000000\nCHAR 1030\n000000\n011100\n001000\n001000\n001000\n001000\n011100\n000000\n000000\nCHAR 1031\n010100\n000000\n011100\n001000\n001000\n001000\n011100\n000000\n000000\nCHAR 1032\n000000\n001110\n000100\n000100\n000100\n100100\n011000\n000000\n000000\nCHAR 1033\n000000\n011000\n101000\n101100\n101010\n101010\n101100\n000000\n000000\nCHAR 1034\n000000\n101000\n101000\n111100\n101010\n101010\n101100\n000000\n000000\nCHAR 1035\n000000\n111110\n001000\n001100\n001010\n001010\n001010\n000000\n000000\nCHAR 1036\n000010\n000100\n010010\n010100\n011000\n010100\n010010\n000000\n000000\nCHAR 1037\n010000\n001000\n100010\n100110\n101010\n110010\n100010\n000000\n000000\nCHAR 1038\n010010\n001100\n100010\n100010\n011110\n000010\n011100\n000000\n000000\nCHAR 1039\n000000\n100010\n100010\n100010\n100010\n100010\n111110\n001000\n001000\nCHAR 1040\n000000\n001000\n010100\n100010\n111110\n100010\n100010\n000000\n000000\nCHAR 1041\n000000\n111100\n100000\n111100\n100010\n100010\n111100\n000000\n000000\nCHAR 1042\n000000\n111100\n100010\n111100\n100010\n100010\n111100\n000000\n000000\nCHAR 1043\n000000\n011110\n010000\n010000\n010000\n010000\n010000\n000000\n000000\nCHAR 1044\n000000\n001100\n010100\n010100\n010100\n010100\n111110\n100010\n000000\nCHAR 1045\n000000\n011110\n010000\n011100\n010000\n010000\n011110\n000000\n000000\nCHAR 1046\n000000\n101010\n101010\n011100\n101010\n101010\n101010\n000000\n000000\nCHAR 1047\n000000\n011100\n100010\n001100\n000010\n100010\n011100\n000000\n000000\nCHAR 1048\n000000\n010010\n010110\n011010\n010010\n010010\n010010\n000000\n000000\nCHAR 1049\n010010\n001100\n010010\n010110\n011010\n010010\n010010\n000000\n000000\nCHAR 1050\n000000\n010010\n010100\n011000\n010100\n010010\n010010\n000000\n000000\nCHAR 1051\n000000\n001110\n010010\n010010\n010010\n010010\n100010\n000000\n000000\nCHAR 1052\n000000\n100010\n110110\n101010\n101010\n100010\n100010\n000000\n000000\nCHAR 1053\n000000\n010010\n010010\n011110\n010010\n010010\n010010\n000000\n000000\nCHAR 1054\n000000\n011100\n100010\n100010\n100010\n100010\n011100\n000000\n000000\nCHAR 1055\n000000\n111110\n100010\n100010\n100010\n100010\n100010\n000000\n000000\nCHAR 1056\n000000\n011100\n010010\n010010\n011100\n010000\n010000\n000000\n000000\nCHAR 1057\n000000\n001100\n010010\n010000\n010000\n010010\n001100\n000000\n000000\nCHAR 1058\n000000\n111110\n001000\n001000\n001000\n001000\n001000\n000000\n000000\nCHAR 1059\n000000\n100010\n100010\n100010\n011110\n000010\n011100\n000000\n000000\nCHAR 1060\n000000\n001000\n011100\n101010\n101010\n011100\n001000\n000000\n000000\nCHAR 1061\n000000\n100010\n010100\n001000\n001000\n010100\n100010\n000000\n000000\nCHAR 1062\n000000\n100100\n100100\n100100\n100100\n100100\n111110\n000010\n000100\nCHAR 1063\n000000\n100010\n100010\n100010\n011110\n000010\n000010\n000000\n000000\nCHAR 1064\n000000\n101010\n101010\n101010\n101010\n101010\n111110\n000000\n000000\nCHAR 1065\n000000\n101010\n101010\n101010\n101010\n101010\n111110\n000010\n000100\nCHAR 1066\n000000\n110000\n010000\n011100\n010010\n010010\n011100\n000000\n000000\nCHAR 1067\n000000\n100010\n100010\n111010\n100110\n100110\n111010\n000000\n000000\nCHAR 1068\n000000\n010000\n010000\n011100\n010010\n010010\n011100\n000000\n000000\nCHAR 1069\n000000\n011100\n100010\n001110\n000010\n100010\n011100\n000000\n000000\nCHAR 1070\n000000\n100100\n101010\n111010\n111010\n101010\n100100\n000000\n000000\nCHAR 1071\n000000\n001110\n010010\n010010\n001110\n010010\n010010\n000000\n000000\nCHAR 1072\n000000\n000000\n000000\n011100\n100100\n100100\n011110\n000000\n000000\nCHAR 1073\n000010\n001100\n010000\n011100\n010010\n010010\n001100\n000000\n000000\nCHAR 1074\n000000\n000000\n000000\n011000\n010100\n011010\n011100\n000000\n000000\nCHAR 1075\n000000\n000000\n000000\n011110\n010000\n010000\n010000\n000000\n000000\nCHAR 1076\n000000\n000000\n000000\n001100\n010100\n010100\n111110\n100010\n000000\nCHAR 1077\n000000\n000000\n000000\n011000\n100100\n111000\n011100\n000000\n000000\nCHAR 1078\n000000\n000000\n000000\n101010\n011100\n011100\n101010\n000000\n000000\nCHAR 1079\n000000\n000000\n000000\n001100\n001010\n000110\n011100\n000000\n000000\nCHAR 1080\n000000\n000000\n000000\n100010\n100110\n101010\n110010\n000000\n000000\nCHAR 1081\n100010\n011100\n000000\n100010\n100110\n101010\n110010\n000000\n000000\nCHAR 1082\n000000\n000000\n000000\n010010\n010100\n011100\n010010\n000000\n000000\nCHAR 1083\n000000\n000000\n000000\n001110\n010010\n010010\n100010\n000000\n000000\nCHAR 1084\n000000\n000000\n000000\n100010\n110110\n101010\n100010\n000000\n000000\nCHAR 1085\n000000\n000000\n000000\n100010\n111110\n100010\n100010\n000000\n000000\nCHAR 1086\n000000\n000000\n000000\n011100\n100010\n100010\n011100\n000000\n000000\nCHAR 1087\n000000\n000000\n000000\n111110\n100010\n100010\n100010\n000000\n000000\nCHAR 1088\n000000\n000000\n000000\n111100\n100010\n100010\n111100\n100000\n100000\nCHAR 1089\n000000\n000000\n000000\n011100\n100010\n100000\n011110\n000000\n000000\nCHAR 1090\n000000\n000000\n000000\n111110\n001000\n001000\n001000\n000000\n000000\nCHAR 1091\n000000\n000000\n000000\n100010\n100010\n100010\n011110\n000010\n011100\nCHAR 1092\n000000\n001000\n001000\n011100\n101010\n101010\n011100\n001000\n001000\nCHAR 1093\n000000\n000000\n000000\n010010\n001100\n001100\n010010\n000000\n000000\nCHAR 1094\n000000\n000000\n000000\n100100\n100100\n100100\n111110\n000010\n000100\nCHAR 1095\n000000\n000000\n000000\n100010\n100010\n011110\n000010\n000000\n000000\nCHAR 1096\n000000\n000000\n000000\n101010\n101010\n101010\n111110\n000000\n000000\nCHAR 1097\n000000\n000000\n000000\n101010\n101010\n101010\n111110\n000010\n000100\nCHAR 1098\n000000\n000000\n000000\n110000\n011100\n010010\n011100\n000000\n000000\nCHAR 1099\n000000\n000000\n000000\n100010\n111010\n100110\n111010\n000000\n000000\nCHAR 1100\n000000\n000000\n000000\n010000\n011100\n010010\n011100\n000000\n000000\nCHAR 1101\n000000\n000000\n000000\n111000\n010100\n001100\n111000\n000000\n000000\nCHAR 1102\n000000\n000000\n000000\n100100\n111010\n111010\n100100\n000000\n000000\nCHAR 1103\n000000\n000000\n000000\n011100\n100100\n011100\n100100\n000000\n000000\nCHAR 1104\n001000\n000100\n000000\n001100\n010010\n011100\n001110\n000000\n000000\nCHAR 1105\n000000\n010100\n000000\n001100\n010010\n011100\n001110\n000000\n000000\nCHAR 1106\n000000\n010000\n111000\n010000\n011100\n010010\n010010\n000010\n000100\nCHAR 1107\n000100\n001000\n000000\n011110\n010000\n010000\n010000\n000000\n000000\nCHAR 1108\n000000\n000000\n000000\n001110\n010100\n011000\n001110\n000000\n000000\nCHAR 1109\n000000\n000000\n000000\n001110\n011000\n000110\n011100\n000000\n000000\nCHAR 1110\n000000\n001000\n000000\n011000\n001000\n001000\n011100\n000000\n000000\nCHAR 1111\n000000\n010100\n000000\n011000\n001000\n001000\n011100\n000000\n000000\nCHAR 1112\n000000\n000010\n000000\n000110\n000010\n000010\n000010\n010010\n001100\nCHAR 1113\n000000\n000000\n000000\n011000\n101100\n101010\n101100\n000000\n000000\nCHAR 1114\n000000\n000000\n000000\n101000\n111100\n101010\n101100\n000000\n000000\nCHAR 1115\n000000\n010000\n111000\n010000\n011100\n010010\n010010\n000000\n000000\nCHAR 1116\n000100\n001000\n000000\n010010\n010100\n011100\n010010\n000000\n000000\nCHAR 1117\n010000\n001000\n000000\n100010\n100110\n101010\n110010\n000000\n000000\nCHAR 1118\n000000\n010010\n001100\n000000\n100010\n100010\n011110\n000010\n011100\nCHAR 1119\n000000\n000000\n000000\n100010\n100010\n100010\n111110\n001000\n001000\nCHAR 1122\n010000\n111000\n010000\n011100\n010010\n010010\n011100\n000000\n000000\nCHAR 1123\n000000\n010000\n010000\n111000\n011100\n010010\n011100\n000000\n000000\nCHAR 1136\n000000\n101010\n101010\n101010\n011100\n001000\n001000\n000000\n000000\nCHAR 1137\n000000\n000000\n000000\n101010\n101010\n011100\n001000\n000000\n000000\nCHAR 1138\n000000\n011100\n100010\n111110\n100010\n100010\n011100\n000000\n000000\nCHAR 1139\n000000\n000000\n000000\n011100\n101010\n110110\n011100\n000000\n000000\nCHAR 1140\n000000\n010000\n010010\n010110\n011100\n001000\n001000\n000000\n000000\nCHAR 1141\n000000\n000000\n000000\n010000\n010110\n001100\n001000\n000000\n000000\nCHAR 1168\n000010\n011110\n010000\n010000\n010000\n010000\n010000\n000000\n000000\nCHAR 1169\n000000\n000000\n000010\n011110\n010000\n010000\n010000\n000000\n000000\nCHAR 1170\n000000\n011110\n010000\n111100\n010000\n010000\n010000\n000000\n000000\nCHAR 1171\n000000\n000000\n000000\n011110\n010000\n111000\n010000\n000000\n000000\nCHAR 1174\n000000\n101010\n101010\n011100\n101010\n101010\n101011\n000001\n000001\nCHAR 1175\n000000\n000000\n000000\n101010\n011100\n011100\n101010\n000001\n000001\nCHAR 1178\n000000\n010010\n010100\n011000\n010100\n010010\n010010\n000001\n000001\nCHAR 1179\n000000\n000000\n000000\n010010\n010100\n011100\n010010\n000001\n000001\nCHAR 1198\n000000\n100010\n100010\n010100\n001000\n001000\n001000\n000000\n000000\nCHAR 1199\n000000\n000000\n000000\n100010\n100010\n010100\n001000\n001000\n001000\nCHAR 1200\n000000\n100010\n100010\n010100\n111110\n001000\n001000\n000000\n000000\nCHAR 1201\n000000\n000000\n000000\n100010\n100010\n010100\n111110\n001000\n001000\nCHAR 1202\n000000\n100010\n010100\n001000\n001000\n010100\n100010\n000001\n000001\nCHAR 1203\n000000\n000000\n000000\n010010\n001100\n001100\n010010\n000001\n000001\nCHAR 1210\n000000\n100000\n100000\n111100\n100010\n100010\n100010\n000000\n000000\nCHAR 1211\n000000\n010000\n010000\n011100\n010010\n010010\n010010\n000000\n000000\nCHAR 1240\n000000\n001100\n010010\n000010\n011110\n010010\n001100\n000000\n000000\nCHAR 1241\n000000\n000000\n000000\n011100\n000110\n011010\n001100\n000000\n000000\nCHAR 1250\n011100\n000000\n011100\n001000\n001000\n001000\n011100\n000000\n000000\nCHAR 1251\n000000\n011100\n000000\n011000\n001000\n001000\n011100\n000000\n000000\nCHAR 1256\n000000\n011100\n100010\n111110\n100010\n100010\n011100\n000000\n000000\nCHAR 1257\n000000\n000000\n000000\n001100\n011110\n010010\n001100\n000000\n000000\nCHAR 1262\n011110\n000000\n010010\n010010\n010010\n010010\n001100\n000000\n000000\nCHAR 1263\n000000\n011110\n000000\n010010\n010010\n010010\n001110\n000000\n000000\nCHAR 1488\n000000\n000000\n000000\n100100\n010010\n101100\n100010\n000000\n000000\nCHAR 1489\n000000\n000000\n000000\n111100\n000100\n000100\n111110\n000000\n000000\nCHAR 1490\n000000\n000000\n000000\n010000\n001000\n001100\n010100\n000000\n000000\nCHAR 1491\n000000\n000000\n000000\n111110\n000100\n000100\n000100\n000000\n000000\nCHAR 1492\n000000\n000000\n000000\n111110\n000010\n100010\n100010\n000000\n000000\nCHAR 1493\n000000\n000000\n000000\n001100\n000100\n000100\n000100\n000000\n000000\nCHAR 1494\n000000\n000000\n000000\n111110\n001000\n000100\n000100\n000000\n000000\nCHAR 1495\n000000\n000000\n000000\n111110\n010010\n010010\n010010\n000000\n000000\nCHAR 1496\n000000\n000000\n000000\n100110\n101010\n100010\n111110\n000000\n000000\nCHAR 1497\n000000\n000000\n000000\n001100\n000100\n000000\n000000\n000000\n000000\nCHAR 1498\n000000\n000000\n000000\n111110\n000010\n000010\n000010\n000010\n000010\nCHAR 1499\n000000\n000000\n000000\n111110\n000010\n000010\n111100\n000000\n000000\nCHAR 1500\n000000\n100000\n100000\n111110\n000010\n000100\n011000\n000000\n000000\nCHAR 1501\n000000\n000000\n000000\n111110\n010010\n010010\n011110\n000000\n000000\nCHAR 1502\n000000\n000000\n000000\n100100\n101010\n010010\n100110\n000000\n000000\nCHAR 1503\n000000\n000000\n000000\n001100\n000100\n000100\n000100\n000100\n000100\nCHAR 1504\n000000\n000000\n000000\n000110\n000010\n000010\n011110\n000000\n000000\nCHAR 1505\n000000\n000000\n000000\n011110\n001010\n001010\n001100\n000000\n000000\nCHAR 1506\n000000\n000000\n000000\n110110\n010010\n010100\n111000\n000000\n000000\nCHAR 1507\n000000\n000000\n000000\n111110\n010010\n010010\n000010\n000010\n000010\nCHAR 1508\n000000\n000000\n000000\n111110\n010010\n000010\n111100\n000000\n000000\nCHAR 1509\n000000\n000000\n000000\n100100\n010010\n010100\n011000\n010000\n010000\nCHAR 1510\n000000\n000000\n000000\n100100\n010010\n001100\n111110\n000000\n000000\nCHAR 1511\n000000\n000000\n000000\n111110\n000010\n100010\n101100\n100000\n100000\nCHAR 1512\n000000\n000000\n000000\n111100\n000010\n000010\n000010\n000000\n000000\nCHAR 1513\n000000\n000000\n000000\n101010\n111010\n100010\n111100\n000000\n000000\nCHAR 1514\n000000\n000000\n000000\n111110\n010010\n010010\n110010\n000000\n000000\nCHAR 1520\n000000\n000000\n000000\n110110\n010010\n010010\n010010\n000000\n000000\nCHAR 1521\n000000\n000000\n000000\n110110\n010010\n000010\n000010\n000000\n000000\nCHAR 1522\n000000\n000000\n000000\n110110\n010010\n000000\n000000\n000000\n000000\nCHAR 1523\n000000\n000000\n000000\n000100\n001000\n000000\n000000\n000000\n000000\nCHAR 1524\n000000\n000000\n000000\n010010\n100100\n000000\n000000\n000000\n000000\nCHAR 7682\n001000\n000000\n111100\n100010\n111100\n100010\n111100\n000000\n000000\nCHAR 7683\n000100\n010000\n010000\n011100\n010010\n010010\n011100\n000000\n000000\nCHAR 7690\n001000\n000000\n011100\n010010\n010010\n010010\n011100\n000000\n000000\nCHAR 7691\n001000\n000010\n000010\n001110\n010010\n010010\n001110\n000000\n000000\nCHAR 7710\n001000\n000000\n011110\n010000\n011100\n010000\n010000\n000000\n000000\nCHAR 7711\n001000\n000000\n000100\n001010\n011100\n001000\n001000\n000000\n000000\nCHAR 7744\n001000\n100010\n110110\n101010\n101010\n100010\n100010\n000000\n000000\nCHAR 7745\n000000\n001000\n000000\n110100\n101010\n101010\n100010\n000000\n000000\nCHAR 7766\n001000\n000000\n011100\n010010\n011100\n010000\n010000\n000000\n000000\nCHAR 7767\n000000\n001000\n000000\n011100\n010010\n010010\n011100\n010000\n010000\nCHAR 7776\n000100\n000000\n001110\n010000\n001100\n000010\n011100\n000000\n000000\nCHAR 7777\n000000\n000100\n000000\n001110\n011000\n000110\n011100\n000000\n000000\nCHAR 7786\n001000\n000000\n111110\n001000\n001000\n001000\n001000\n000000\n000000\nCHAR 7787\n001000\n000000\n001000\n011100\n001000\n001010\n000100\n000000\n000000\nCHAR 7808\n010000\n001000\n100010\n100010\n101010\n110110\n100010\n000000\n000000\nCHAR 7809\n010000\n001000\n000000\n100010\n101010\n101010\n010100\n000000\n000000\nCHAR 7810\n000100\n001000\n100010\n100010\n101010\n110110\n100010\n000000\n000000\nCHAR 7811\n000100\n001000\n000000\n100010\n101010\n101010\n010100\n000000\n000000\nCHAR 7812\n010100\n000000\n100010\n100010\n101010\n110110\n100010\n000000\n000000\nCHAR 7813\n000000\n010100\n000000\n100010\n101010\n101010\n010100\n000000\n000000\nCHAR 7922\n010000\n001000\n100010\n010100\n001000\n001000\n001000\n000000\n000000\nCHAR 7923\n001000\n000100\n000000\n010010\n010010\n010010\n001110\n010010\n001100\nCHAR 8208\n000000\n000000\n000000\n000000\n011110\n000000\n000000\n000000\n000000\nCHAR 8209\n000000\n000000\n000000\n000000\n011110\n000000\n000000\n000000\n000000\nCHAR 8210\n000000\n000000\n000000\n000000\n111110\n000000\n000000\n000000\n000000\nCHAR 8211\n000000\n000000\n000000\n000000\n111110\n000000\n000000\n000000\n000000\nCHAR 8212\n000000\n000000\n000000\n000000\n111111\n000000\n000000\n000000\n000000\nCHAR 8213\n000000\n000000\n000000\n000000\n111111\n000000\n000000\n000000\n000000\nCHAR 8214\n000000\n010100\n010100\n010100\n010100\n010100\n010100\n000000\n000000\nCHAR 8215\n000000\n000000\n000000\n000000\n000000\n000000\n111111\n000000\n111111\nCHAR 8216\n000000\n000100\n001000\n001100\n000000\n000000\n000000\n000000\n000000\nCHAR 8217\n000000\n001100\n000100\n001000\n000000\n000000\n000000\n000000\n000000\nCHAR 8218\n000000\n000000\n000000\n000000\n000000\n000000\n001100\n000100\n001000\nCHAR 8219\n000000\n001100\n001000\n000100\n000000\n000000\n000000\n000000\n000000\nCHAR 8220\n000000\n010010\n100100\n110110\n000000\n000000\n000000\n000000\n000000\nCHAR 8221\n000000\n110110\n010010\n100100\n000000\n000000\n000000\n000000\n000000\nCHAR 8222\n000000\n000000\n000000\n000000\n000000\n000000\n110110\n010010\n100100\nCHAR 8223\n000000\n110110\n100100\n010010\n000000\n000000\n000000\n000000\n000000\nCHAR 8224\n000000\n001000\n001000\n111110\n001000\n001000\n001000\n001000\n000000\nCHAR 8225\n000000\n001000\n001000\n111110\n001000\n111110\n001000\n001000\n000000\nCHAR 8226\n000000\n000000\n001100\n011110\n011110\n001100\n000000\n000000\n000000\nCHAR 8227\n000000\n000000\n010000\n011000\n011100\n011000\n010000\n000000\n000000\nCHAR 8228\n000000\n000000\n000000\n000000\n000000\n000000\n001000\n000000\n000000\nCHAR 8229\n000000\n000000\n000000\n000000\n000000\n000000\n010100\n000000\n000000\nCHAR 8230\n000000\n000000\n000000\n000000\n000000\n000000\n101010\n000000\n000000\nCHAR 8231\n000000\n000000\n000000\n000000\n001100\n000000\n000000\n000000\n000000\nCHAR 8240\n010000\n101010\n010010\n000100\n001000\n011010\n110101\n001010\n000000\nCHAR 8242\n000000\n000100\n000100\n001000\n000000\n000000\n000000\n000000\n000000\nCHAR 8243\n000000\n010010\n010010\n100100\n000000\n000000\n000000\n000000\n000000\nCHAR 8244\n000000\n010101\n010101\n101010\n000000\n000000\n000000\n000000\n000000\nCHAR 8245\n000000\n001000\n001000\n000100\n000000\n000000\n000000\n000000\n000000\nCHAR 8246\n000000\n100100\n100100\n010010\n000000\n000000\n000000\n000000\n000000\nCHAR 8247\n000000\n101010\n101010\n010101\n000000\n000000\n000000\n000000\n000000\nCHAR 8249\n000000\n000000\n000100\n001000\n010000\n001000\n000100\n000000\n000000\nCHAR 8250\n000000\n000000\n010000\n001000\n000100\n001000\n010000\n000000\n000000\nCHAR 8252\n000000\n010100\n010100\n010100\n010100\n000000\n010100\n000000\n000000\nCHAR 8254\n000000\n111111\n000000\n000000\n000000\n000000\n000000\n000000\n000000\nCHAR 8260\n000000\n000010\n000010\n000100\n001000\n010000\n010000\n000000\n000000\nCHAR 8304\n000000\n001000\n010100\n010100\n010100\n001000\n000000\n000000\n000000\nCHAR 8305\n000000\n001000\n000000\n011000\n001000\n011100\n000000\n000000\n000000\nCHAR 8308\n000000\n010100\n010100\n011100\n000100\n000100\n000000\n000000\n000000\nCHAR 8309\n000000\n011100\n010000\n011000\n000100\n011000\n000000\n000000\n000000\nCHAR 8310\n000000\n001000\n010000\n011000\n010100\n001000\n000000\n000000\n000000\nCHAR 8311\n000000\n011100\n000100\n001000\n001000\n001000\n000000\n000000\n000000\nCHAR 8312\n000000\n001000\n010100\n001000\n010100\n001000\n000000\n000000\n000000\nCHAR 8313\n000000\n001000\n010100\n001100\n000100\n001000\n000000\n000000\n000000\nCHAR 8314\n000000\n000000\n000000\n001000\n011100\n001000\n000000\n000000\n000000\nCHAR 8315\n000000\n000000\n000000\n000000\n011100\n000000\n000000\n000000\n000000\nCHAR 8316\n000000\n000000\n000000\n011100\n000000\n011100\n000000\n000000\n000000\nCHAR 8317\n000000\n001000\n010000\n010000\n010000\n001000\n000000\n000000\n000000\nCHAR 8318\n000000\n001000\n000100\n000100\n000100\n001000\n000000\n000000\n000000\nCHAR 8319\n000000\n000000\n011000\n010100\n010100\n010100\n000000\n000000\n000000\nCHAR 8320\n000000\n000000\n000000\n000000\n001000\n010100\n010100\n010100\n001000\nCHAR 8321\n000000\n000000\n000000\n000000\n001000\n011000\n001000\n001000\n011100\nCHAR 8322\n000000\n000000\n000000\n000000\n001000\n010100\n000100\n001000\n011100\nCHAR 8323\n000000\n000000\n000000\n000000\n011000\n000100\n001000\n000100\n011000\nCHAR 8324\n000000\n000000\n000000\n000000\n010100\n010100\n011100\n000100\n000100\nCHAR 8325\n000000\n000000\n000000\n000000\n011100\n010000\n011000\n000100\n011000\nCHAR 8326\n000000\n000000\n000000\n000000\n001000\n010000\n011000\n010100\n001000\nCHAR 8327\n000000\n000000\n000000\n000000\n011100\n000100\n001000\n001000\n001000\nCHAR 8328\n000000\n000000\n000000\n000000\n001000\n010100\n001000\n010100\n001000\nCHAR 8329\n000000\n000000\n000000\n000000\n001000\n010100\n001100\n000100\n001000\nCHAR 8330\n000000\n000000\n000000\n000000\n000000\n000000\n001000\n011100\n001000\nCHAR 8331\n000000\n000000\n000000\n000000\n000000\n000000\n000000\n011100\n000000\nCHAR 8332\n000000\n000000\n000000\n000000\n000000\n000000\n011100\n000000\n011100\nCHAR 8333\n000000\n000000\n000000\n000000\n001000\n010000\n010000\n010000\n001000\nCHAR 8334\n000000\n000000\n000000\n000000\n001000\n000100\n000100\n000100\n001000\nCHAR 8355\n000000\n111110\n100000\n111010\n101100\n101000\n101000\n000000\n000000\nCHAR 8356\n000000\n001100\n010010\n111000\n010000\n111000\n010000\n111110\n000000\nCHAR 8359\n000000\n011000\n010100\n111110\n010100\n011000\n010000\n000000\n000000\nCHAR 8363\n000000\n000010\n000111\n001110\n010010\n010010\n001110\n000000\n011110\nCHAR 8364\n000000\n001110\n010000\n111100\n111100\n010000\n001110\n000000\n000000\nCHAR 8367\n010000\n111000\n010100\n010010\n010010\n111010\n110100\n000000\n000000\nCHAR 8400\n010000\n111110\n000000\n000000\n000000\n000000\n000000\n000000\n000000\nCHAR 8401\n000100\n111110\n000000\n000000\n000000\n000000\n000000\n000000\n000000\nCHAR 8402\n001000\n001000\n001000\n001000\n001000\n001000\n001000\n001000\n001000\nCHAR 8403\n000000\n000000\n001000\n001000\n001000\n001000\n001000\n001000\n000000\nCHAR 8404\n101100\n110010\n111000\n000000\n000000\n000000\n000000\n000000\n000000\nCHAR 8405\n011010\n100110\n001110\n000000\n000000\n000000\n000000\n000000\n000000\nCHAR 8406\n010000\n111110\n010000\n000000\n000000\n000000\n000000\n000000\n000000\nCHAR 8407\n000100\n111110\n000100\n000000\n000000\n000000\n000000\n000000\n000000\nCHAR 8450\n000000\n011100\n101010\n101000\n101000\n101010\n011100\n000000\n000000\nCHAR 8453\n000000\n010000\n100000\n010000\n000100\n001010\n000100\n000000\n000000\nCHAR 8467\n000000\n000100\n001010\n001010\n001100\n001000\n010110\n000000\n000000\nCHAR 8469\n000000\n110010\n111010\n111010\n110110\n110110\n110010\n000000\n000000\nCHAR 8470\n000000\n100100\n110100\n110100\n101110\n101101\n100110\n000000\n000000\nCHAR 8474\n000000\n011100\n101010\n101010\n101010\n101010\n011100\n000110\n000000\nCHAR 8477\n000000\n111100\n101010\n101010\n101100\n101010\n101010\n000000\n000000\nCHAR 8482\n000000\n111111\n010111\n010101\n000000\n000000\n000000\n000000\n000000\nCHAR 8484\n000000\n111110\n001010\n010100\n010100\n101000\n111110\n000000\n000000\nCHAR 8486\n000000\n011100\n100010\n100010\n100010\n010100\n110110\n000000\n000000\nCHAR 8494\n000000\n000000\n011100\n110110\n111110\n110000\n011100\n000000\n000000\nCHAR 8539\n010000\n110000\n010000\n010100\n011010\n000100\n001010\n000100\n000000\nCHAR 8540\n110000\n001000\n010000\n001100\n111010\n000100\n001010\n000100\n000000\nCHAR 8541\n111000\n100000\n110000\n001100\n111010\n000100\n001010\n000100\n000000\nCHAR 8542\n111000\n001000\n010000\n010100\n011010\n000100\n001010\n000100\n000000\nCHAR 8592\n000000\n000000\n001000\n010000\n111110\n010000\n001000\n000000\n000000\nCHAR 8593\n000000\n001000\n011100\n101010\n001000\n001000\n001000\n000000\n000000\nCHAR 8594\n000000\n000000\n001000\n000100\n111110\n000100\n001000\n000000\n000000\nCHAR 8595\n000000\n001000\n001000\n001000\n101010\n011100\n001000\n000000\n000000\nCHAR 8596\n000000\n000000\n000000\n010010\n111111\n010010\n000000\n000000\n000000\nCHAR 8597\n000000\n001000\n011100\n101010\n001000\n101010\n011100\n001000\n000000\nCHAR 8612\n000000\n000000\n001000\n010010\n111110\n010010\n001000\n000000\n000000\nCHAR 8613\n000000\n001000\n011100\n101010\n001000\n001000\n011100\n000000\n000000\nCHAR 8614\n000000\n000000\n001000\n100100\n111110\n100100\n001000\n000000\n000000\nCHAR 8615\n000000\n011100\n001000\n001000\n101010\n011100\n001000\n000000\n000000\nCHAR 8616\n001000\n011100\n101010\n001000\n101010\n011100\n001000\n111110\n000000\nCHAR 8656\n000000\n000000\n001000\n011110\n100000\n011110\n001000\n000000\n000000\nCHAR 8657\n000000\n001000\n010100\n110110\n010100\n010100\n010100\n000000\n000000\nCHAR 8658\n000000\n000000\n001000\n111100\n000010\n111100\n001000\n000000\n000000\nCHAR 8659\n000000\n010100\n010100\n010100\n110110\n011100\n001000\n000000\n000000\nCHAR 8660\n000000\n000000\n001100\n011110\n100001\n011110\n001100\n000000\n000000\nCHAR 8661\n000000\n001000\n011100\n110110\n010100\n110110\n011100\n001000\n000000\nCHAR 8704\n000000\n100010\n100010\n111110\n100010\n010100\n001000\n000000\n000000\nCHAR 8705\n000000\n001000\n010100\n010000\n010000\n010000\n010100\n001000\n000000\nCHAR 8706\n000000\n001100\n000010\n001110\n010010\n010010\n001100\n000000\n000000\nCHAR 8707\n000000\n011110\n000010\n001110\n000010\n000010\n011110\n000000\n000000\nCHAR 8708\n001000\n011110\n001010\n001110\n001010\n001010\n011110\n001000\n000000\nCHAR 8709\n000000\n011110\n100110\n101010\n101010\n110010\n111100\n000000\n000000\nCHAR 8710\n000000\n001000\n001000\n010100\n010100\n100010\n111110\n000000\n000000\nCHAR 8711\n000000\n111110\n100010\n010100\n010100\n001000\n001000\n000000\n000000\nCHAR 8712\n000000\n000000\n001110\n010000\n011110\n010000\n001110\n000000\n000000\nCHAR 8713\n000000\n000100\n001110\n010100\n011110\n010100\n001110\n000100\n000000\nCHAR 8715\n000000\n000000\n011100\n000010\n011110\n000010\n011100\n000000\n000000\nCHAR 8716\n000000\n001000\n011100\n001010\n011110\n001010\n011100\n001000\n000000\nCHAR 8719\n111110\n010100\n010100\n010100\n010100\n010100\n010100\n010100\n000000\nCHAR 8720\n010100\n010100\n010100\n010100\n010100\n010100\n010100\n111110\n000000\nCHAR 8721\n000000\n111110\n010000\n001000\n001000\n010000\n111110\n000000\n000000\nCHAR 8722\n000000\n000000\n000000\n000000\n111110\n000000\n000000\n000000\n000000\nCHAR 8723\n000000\n111110\n000000\n001000\n001000\n111110\n001000\n001000\n000000\nCHAR 8725\n000000\n000010\n000010\n000100\n001000\n010000\n010000\n000000\n000000\nCHAR 8728\n000000\n000000\n000000\n001000\n010100\n001000\n000000\n000000\n000000\nCHAR 8729\n000000\n000000\n000000\n001000\n011100\n001000\n000000\n000000\n000000\nCHAR 8730\n000011\n000010\n000010\n000010\n000100\n110100\n001100\n001100\n000100\nCHAR 8733\n000000\n000000\n001010\n010100\n010100\n001010\n000000\n000000\n000000\nCHAR 8734\n000000\n000000\n010100\n101010\n101010\n010100\n000000\n000000\n000000\nCHAR 8735\n000000\n000000\n100000\n100000\n100000\n100000\n111110\n000000\n000000\nCHAR 8737\n000000\n000000\n010100\n001000\n010100\n100100\n111110\n000100\n000000\nCHAR 8740\n000000\n001000\n001000\n001100\n011000\n001000\n001000\n000000\n000000\nCHAR 8741\n000000\n010100\n010100\n010100\n010100\n010100\n010100\n000000\n000000\nCHAR 8742\n000000\n010100\n010110\n011100\n110100\n010100\n010100\n000000\n000000\nCHAR 8743\n000000\n000000\n000000\n001000\n010100\n010100\n100010\n000000\n000000\nCHAR 8744\n000000\n000000\n000000\n100010\n010100\n010100\n001000\n000000\n000000\nCHAR 8745\n000000\n000000\n000000\n011100\n100010\n100010\n100010\n000000\n000000\nCHAR 8746\n000000\n000000\n000000\n100010\n100010\n100010\n011100\n000000\n000000\nCHAR 8747\n000100\n001010\n001000\n001000\n001000\n001000\n001000\n101000\n010000\nCHAR 8750\n000100\n001010\n001000\n011100\n101010\n011100\n001000\n101000\n010000\nCHAR 8756\n000000\n000000\n001000\n000000\n000000\n100010\n000000\n000000\n000000\nCHAR 8757\n000000\n000000\n100010\n000000\n000000\n001000\n000000\n000000\n000000\nCHAR 8758\n000000\n000000\n001000\n000000\n000000\n001000\n000000\n000000\n000000\nCHAR 8759\n000000\n000000\n010010\n000000\n000000\n010010\n000000\n000000\n000000\nCHAR 8760\n000000\n000000\n001000\n000000\n111110\n000000\n000000\n000000\n000000\nCHAR 8761\n000000\n000000\n000010\n000000\n111000\n000000\n000010\n000000\n000000\nCHAR 8762\n000000\n000000\n100010\n000000\n111110\n000000\n100010\n000000\n000000\nCHAR 8763\n000000\n000000\n000100\n000000\n001010\n010100\n000000\n001000\n000000\nCHAR 8764\n000000\n000000\n000000\n000000\n001010\n010100\n000000\n000000\n000000\nCHAR 8765\n000000\n000000\n000000\n000000\n010100\n001010\n000000\n000000\n000000\nCHAR 8771\n000000\n000000\n000000\n001010\n010100\n000000\n011110\n000000\n000000\nCHAR 8773\n000000\n000000\n001010\n010100\n000000\n011110\n000000\n011110\n000000\nCHAR 8776\n000000\n000000\n010000\n101010\n010100\n101010\n000100\n000000\n000000\nCHAR 8777\n000000\n000100\n010100\n101010\n011100\n101010\n010100\n010000\n000000\nCHAR 8793\n001000\n010100\n000000\n111110\n000000\n111110\n000000\n000000\n000000\nCHAR 8799\n011000\n000100\n001000\n000000\n001000\n000000\n111110\n000000\n111110\nCHAR 8800\n000000\n000000\n000100\n111110\n001000\n111110\n010000\n000000\n000000\nCHAR 8801\n000000\n000000\n111110\n000000\n111110\n000000\n111110\n000000\n000000\nCHAR 8802\n000000\n000100\n111110\n001000\n111110\n001000\n111110\n010000\n000000\nCHAR 8803\n000000\n111110\n000000\n111110\n000000\n111110\n000000\n111110\n000000\nCHAR 8804\n000000\n000110\n011000\n100000\n011000\n100110\n011000\n000110\n000000\nCHAR 8805\n000000\n110000\n001100\n000010\n001100\n110010\n001100\n110000\n000000\nCHAR 8810\n000000\n000000\n001010\n010100\n101000\n010100\n001010\n000000\n000000\nCHAR 8811\n000000\n000000\n101000\n010100\n001010\n010100\n101000\n000000\n000000\nCHAR 8834\n000000\n000000\n001110\n010000\n010000\n001110\n000000\n000000\n000000\nCHAR 8835\n000000\n000000\n011100\n000010\n000010\n011100\n000000\n000000\n000000\nCHAR 8836\n000000\n000100\n001110\n010100\n010100\n001110\n000100\n000000\n000000\nCHAR 8837\n000000\n001000\n011100\n001010\n001010\n011100\n001000\n000000\n000000\nCHAR 8838\n000000\n001110\n010000\n010000\n001110\n000000\n011110\n000000\n000000\nCHAR 8839\n000000\n011100\n000010\n000010\n011100\n000000\n011110\n000000\n000000\nCHAR 8840\n000100\n001110\n010100\n010100\n001110\n000100\n011110\n000100\n000000\nCHAR 8841\n001000\n011100\n001010\n001010\n011100\n001000\n011110\n001000\n000000\nCHAR 8842\n000000\n001110\n010000\n010000\n001110\n000100\n011110\n001000\n000000\nCHAR 8843\n000000\n011100\n000010\n000010\n011100\n000100\n011110\n001000\n000000\nCHAR 8853\n000000\n000000\n011100\n101010\n111110\n101010\n011100\n000000\n000000\nCHAR 8854\n000000\n000000\n011100\n100010\n111110\n100010\n011100\n000000\n000000\nCHAR 8855\n000000\n000000\n011100\n110110\n101010\n110110\n011100\n000000\n000000\nCHAR 8856\n000000\n000000\n011100\n100110\n101010\n110010\n011100\n000000\n000000\nCHAR 8857\n000000\n000000\n011100\n100010\n101010\n100010\n011100\n000000\n000000\nCHAR 8866\n000000\n000000\n100000\n100000\n111110\n100000\n100000\n000000\n000000\nCHAR 8867\n000000\n000000\n000010\n000010\n111110\n000010\n000010\n000000\n000000\nCHAR 8868\n000000\n111110\n001000\n001000\n001000\n001000\n001000\n000000\n000000\nCHAR 8869\n000000\n001000\n001000\n001000\n001000\n001000\n111110\n000000\n000000\nCHAR 8870\n000000\n000000\n010000\n010000\n011100\n010000\n010000\n000000\n000000\nCHAR 8871\n000000\n000000\n010000\n011100\n010000\n011100\n010000\n000000\n000000\nCHAR 8872\n000000\n000000\n100000\n111110\n100000\n111110\n100000\n000000\n000000\nCHAR 8896\n001000\n001000\n010100\n010100\n010100\n100010\n100010\n100010\n000000\nCHAR 8897\n100010\n100010\n100010\n010100\n010100\n010100\n001000\n001000\n000000\nCHAR 8898\n011100\n100010\n100010\n100010\n100010\n100010\n100010\n100010\n000000\nCHAR 8899\n100010\n100010\n100010\n100010\n100010\n100010\n100010\n011100\n000000\nCHAR 8901\n000000\n000000\n000000\n000000\n001000\n000000\n000000\n000000\n000000\nCHAR 8942\n000000\n001000\n000000\n000000\n001000\n000000\n000000\n001000\n000000\nCHAR 8943\n000000\n000000\n000000\n000000\n101010\n000000\n000000\n000000\n000000\nCHAR 8944\n000000\n000010\n000000\n000000\n001000\n000000\n000000\n100000\n000000\nCHAR 8945\n000000\n100000\n000000\n000000\n001000\n000000\n000000\n000010\n000000\nCHAR 8960\n000000\n000000\n011110\n100110\n101010\n110010\n111100\n000000\n000000\nCHAR 8962\n000000\n001000\n010100\n100010\n100010\n100010\n111110\n000000\n000000\nCHAR 8968\n000000\n011100\n010000\n010000\n010000\n010000\n010000\n000000\n000000\nCHAR 8969\n000000\n011100\n000100\n000100\n000100\n000100\n000100\n000000\n000000\nCHAR 8970\n000000\n010000\n010000\n010000\n010000\n010000\n011100\n000000\n000000\nCHAR 8971\n000000\n000100\n000100\n000100\n000100\n000100\n011100\n000000\n000000\nCHAR 8976\n000000\n000000\n000000\n000000\n011110\n010000\n010000\n000000\n000000\nCHAR 8992\n000000\n000010\n000101\n000100\n000100\n000100\n000100\n000100\n000100\nCHAR 8993\n000100\n000100\n000100\n000100\n000100\n000100\n010100\n001000\n000000\nCHAR 9146\n111111\n000000\n000000\n000000\n000000\n000000\n000000\n000000\n000000\nCHAR 9147\n000000\n000000\n111111\n000000\n000000\n000000\n000000\n000000\n000000\nCHAR 9148\n000000\n000000\n000000\n000000\n000000\n000000\n111111\n000000\n000000\nCHAR 9149\n000000\n000000\n000000\n000000\n000000\n000000\n000000\n000000\n111111\nCHAR 9225\n000000\n101000\n111000\n101000\n000000\n001110\n000100\n000100\n000000\nCHAR 9226\n000000\n100000\n100000\n100000\n110000\n001110\n001000\n001100\n001000\nCHAR 9227\n000000\n101000\n101000\n010000\n010000\n001110\n000100\n000100\n000100\nCHAR 9228\n000000\n111000\n100000\n110000\n100000\n001110\n001000\n001100\n001000\nCHAR 9229\n000000\n011000\n100000\n011000\n000000\n001100\n001010\n001100\n001010\nCHAR 9252\n000000\n100100\n110100\n101100\n100100\n001000\n001000\n001000\n001110\nCHAR 9472\n000000\n000000\n000000\n000000\n111111\n000000\n000000\n000000\n000000\nCHAR 9473\n000000\n000000\n000000\n111111\n111111\n000000\n000000\n000000\n000000\nCHAR 9474\n000100\n000100\n000100\n000100\n000100\n000100\n000100\n000100\n000100\nCHAR 9475\n001100\n001100\n001100\n001100\n001100\n001100\n001100\n001100\n001100\nCHAR 9484\n000000\n000000\n000000\n000000\n000111\n000100\n000100\n000100\n000100\nCHAR 9488\n000000\n000000\n000000\n000000\n111100\n000100\n000100\n000100\n000100\nCHAR 9492\n000100\n000100\n000100\n000100\n000111\n000000\n000000\n000000\n000000\nCHAR 9496\n000100\n000100\n000100\n000100\n111100\n000000\n000000\n000000\n000000\nCHAR 9500\n000100\n000100\n000100\n000100\n000111\n000100\n000100\n000100\n000100\nCHAR 9508\n000100\n000100\n000100\n000100\n111100\n000100\n000100\n000100\n000100\nCHAR 9516\n000000\n000000\n000000\n000000\n111111\n000100\n000100\n000100\n000100\nCHAR 9524\n000100\n000100\n000100\n000100\n111111\n000000\n000000\n000000\n000000\nCHAR 9532\n000100\n000100\n000100\n000100\n111111\n000100\n000100\n000100\n000100\nCHAR 9548\n000000\n000000\n000000\n000000\n110110\n000000\n000000\n000000\n000000\nCHAR 9549\n000000\n000000\n000000\n110110\n110110\n000000\n000000\n000000\n000000\nCHAR 9550\n000100\n000100\n000100\n000100\n000000\n000100\n000100\n000100\n000000\nCHAR 9551\n001100\n001100\n001100\n001100\n000000\n001100\n001100\n001100\n000000\nCHAR 9552\n000000\n000000\n000000\n111111\n000000\n111111\n000000\n000000\n000000\nCHAR 9553\n001010\n001010\n001010\n001010\n001010\n001010\n001010\n001010\n001010\nCHAR 9554\n000000\n000000\n000000\n000111\n000100\n000111\n000100\n000100\n000100\nCHAR 9555\n000000\n000000\n000000\n000000\n001111\n001010\n001010\n001010\n001010\nCHAR 9556\n000000\n000000\n000000\n001111\n001000\n001011\n001010\n001010\n001010\nCHAR 9557\n000000\n000000\n000000\n111100\n000100\n111100\n000100\n000100\n000100\nCHAR 9558\n000000\n000000\n000000\n000000\n111110\n001010\n001010\n001010\n001010\nCHAR 9559\n000000\n000000\n000000\n111110\n000010\n111010\n001010\n001010\n001010\nCHAR 9560\n000100\n000100\n000100\n000111\n000100\n000111\n000000\n000000\n000000\nCHAR 9561\n001010\n001010\n001010\n001010\n001111\n000000\n000000\n000000\n000000\nCHAR 9562\n001010\n001010\n001010\n001011\n001000\n001111\n000000\n000000\n000000\nCHAR 9563\n000100\n000100\n000100\n111100\n000100\n111100\n000000\n000000\n000000\nCHAR 9564\n001010\n001010\n001010\n001010\n111110\n000000\n000000\n000000\n000000\nCHAR 9565\n001010\n001010\n001010\n111010\n000010\n111110\n000000\n000000\n000000\nCHAR 9566\n000100\n000100\n000100\n000111\n000100\n000111\n000100\n000100\n000100\nCHAR 9567\n001010\n001010\n001010\n001010\n001011\n001010\n001010\n001010\n001010\nCHAR 9568\n001010\n001010\n001010\n001011\n001000\n001011\n001010\n001010\n001010\nCHAR 9569\n000100\n000100\n000100\n111100\n000100\n111100\n000100\n000100\n000100\nCHAR 9570\n001010\n001010\n001010\n001010\n111010\n001010\n001010\n001010\n001010\nCHAR 9571\n001010\n001010\n001010\n111010\n000010\n111010\n001010\n001010\n001010\nCHAR 9572\n000000\n000000\n000000\n111111\n000000\n111111\n000100\n000100\n000100\nCHAR 9573\n000000\n000000\n000000\n000000\n111111\n001010\n001010\n001010\n001010\nCHAR 9574\n000000\n000000\n000000\n111111\n000000\n111011\n001010\n001010\n001010\nCHAR 9575\n000100\n000100\n000100\n111111\n000000\n111111\n000000\n000000\n000000\nCHAR 9576\n001010\n001010\n001010\n001010\n111111\n000000\n000000\n000000\n000000\nCHAR 9577\n001010\n001010\n001010\n111011\n000000\n111111\n000000\n000000\n000000\nCHAR 9578\n000100\n000100\n000100\n111111\n000100\n111111\n000100\n000100\n000100\nCHAR 9579\n001010\n001010\n001010\n001010\n111111\n001010\n001010\n001010\n001010\nCHAR 9580\n001010\n001010\n001010\n111011\n000000\n111011\n001010\n001010\n001010\nCHAR 9581\n000000\n000000\n000000\n000000\n000001\n000010\n000100\n000100\n000100\nCHAR 9582\n000000\n000000\n000000\n000000\n110000\n001000\n000100\n000100\n000100\nCHAR 9583\n000100\n000100\n000100\n001000\n110000\n000000\n000000\n000000\n000000\nCHAR 9584\n000100\n000100\n000100\n000010\n000001\n000000\n000000\n000000\n000000\nCHAR 9585\n000001\n000001\n000010\n000100\n000100\n001000\n010000\n010000\n100000\nCHAR 9586\n100000\n100000\n010000\n001000\n001000\n000100\n000010\n000010\n000001\nCHAR 9587\n100001\n100001\n010010\n001100\n001100\n001100\n010010\n010010\n100001\nCHAR 9600\n111111\n111111\n111111\n111111\n000000\n000000\n000000\n000000\n000000\nCHAR 9601\n000000\n000000\n000000\n000000\n000000\n000000\n000000\n000000\n111111\nCHAR 9602\n000000\n000000\n000000\n000000\n000000\n000000\n000000\n111111\n111111\nCHAR 9603\n000000\n000000\n000000\n000000\n000000\n111111\n111111\n111111\n111111\nCHAR 9604\n000000\n000000\n000000\n000000\n111111\n111111\n111111\n111111\n111111\nCHAR 9605\n000000\n000000\n000000\n111111\n111111\n111111\n111111\n111111\n111111\nCHAR 9606\n000000\n000000\n111111\n111111\n111111\n111111\n111111\n111111\n111111\nCHAR 9607\n000000\n111111\n111111\n111111\n111111\n111111\n111111\n111111\n111111\nCHAR 9608\n111111\n111111\n111111\n111111\n111111\n111111\n111111\n111111\n111111\nCHAR 9609\n111110\n111110\n111110\n111110\n111110\n111110\n111110\n111110\n111110\nCHAR 9610\n111100\n111100\n111100\n111100\n111100\n111100\n111100\n111100\n111100\nCHAR 9611\n111100\n111100\n111100\n111100\n111100\n111100\n111100\n111100\n111100\nCHAR 9612\n111000\n111000\n111000\n111000\n111000\n111000\n111000\n111000\n111000\nCHAR 9613\n110000\n110000\n110000\n110000\n110000\n110000\n110000\n110000\n110000\nCHAR 9614\n110000\n110000\n110000\n110000\n110000\n110000\n110000\n110000\n110000\nCHAR 9615\n100000\n100000\n100000\n100000\n100000\n100000\n100000\n100000\n100000\nCHAR 9616\n000111\n000111\n000111\n000111\n000111\n000111\n000111\n000111\n000111\nCHAR 9617\n101010\n000000\n010101\n000000\n101010\n000000\n010101\n000000\n101010\nCHAR 9618\n010101\n101010\n010101\n101010\n010101\n101010\n010101\n101010\n010101\nCHAR 9619\n111111\n101010\n111111\n010101\n111111\n101010\n111111\n010101\n111111\nCHAR 9620\n111111\n000000\n000000\n000000\n000000\n000000\n000000\n000000\n000000\nCHAR 9621\n000001\n000001\n000001\n000001\n000001\n000001\n000001\n000001\n000001\nCHAR 9622\n000000\n000000\n000000\n000000\n111000\n111000\n111000\n111000\n111000\nCHAR 9623\n000000\n000000\n000000\n000000\n000111\n000111\n000111\n000111\n000111\nCHAR 9624\n111000\n111000\n111000\n111000\n000000\n000000\n000000\n000000\n000000\nCHAR 9625\n111000\n111000\n111000\n111000\n111111\n111111\n111111\n111111\n111111\nCHAR 9626\n111000\n111000\n111000\n111000\n000111\n000111\n000111\n000111\n000111\nCHAR 9627\n111111\n111111\n111111\n111111\n111000\n111000\n111000\n111000\n111000\nCHAR 9628\n111111\n111111\n111111\n111111\n000111\n000111\n000111\n000111\n000111\nCHAR 9629\n000111\n000111\n000111\n000111\n000000\n000000\n000000\n000000\n000000\nCHAR 9630\n000111\n000111\n000111\n000111\n111000\n111000\n111000\n111000\n111000\nCHAR 9631\n000111\n000111\n000111\n000111\n111111\n111111\n111111\n111111\n111111\nCHAR 9632\n000000\n000000\n111110\n111110\n111110\n111110\n111110\n000000\n000000\nCHAR 9633\n000000\n000000\n111110\n100010\n100010\n100010\n111110\n000000\n000000\nCHAR 9634\n000000\n000000\n011100\n100010\n100010\n100010\n011100\n000000\n000000\nCHAR 9635\n000000\n000000\n111110\n100010\n101010\n100010\n111110\n000000\n000000\nCHAR 9642\n000000\n000000\n000000\n011100\n011100\n011100\n000000\n000000\n000000\nCHAR 9643\n000000\n000000\n000000\n011100\n010100\n011100\n000000\n000000\n000000\nCHAR 9644\n000000\n000000\n000000\n111110\n111110\n111110\n000000\n000000\n000000\nCHAR 9645\n000000\n000000\n000000\n111110\n100010\n111110\n000000\n000000\n000000\nCHAR 9646\n000000\n011110\n011110\n011110\n011110\n011110\n011110\n000000\n000000\nCHAR 9647\n000000\n011110\n010010\n010010\n010010\n010010\n011110\n000000\n000000\nCHAR 9648\n000000\n000000\n000000\n011110\n111110\n111100\n000000\n000000\n000000\nCHAR 9649\n000000\n000000\n000000\n011110\n100010\n111100\n000000\n000000\n000000\nCHAR 9650\n000000\n001000\n001000\n011100\n011100\n111110\n111110\n000000\n000000\nCHAR 9651\n000000\n001000\n001000\n010100\n010100\n100010\n111110\n000000\n000000\nCHAR 9652\n000000\n000000\n001000\n001000\n011100\n011100\n000000\n000000\n000000\nCHAR 9653\n000000\n000000\n001000\n001000\n010100\n011100\n000000\n000000\n000000\nCHAR 9654\n000000\n000000\n110000\n111100\n111110\n111100\n110000\n000000\n000000\nCHAR 9655\n000000\n000000\n110000\n101100\n100010\n101100\n110000\n000000\n000000\nCHAR 9656\n000000\n000000\n000000\n011000\n011110\n011000\n000000\n000000\n000000\nCHAR 9657\n000000\n000000\n000000\n011000\n010110\n011000\n000000\n000000\n000000\nCHAR 9658\n000000\n000000\n000000\n111000\n111110\n111000\n000000\n000000\n000000\nCHAR 9659\n000000\n000000\n000000\n111000\n100110\n111000\n000000\n000000\n000000\nCHAR 9660\n000000\n111110\n111110\n011100\n011100\n001000\n001000\n000000\n000000\nCHAR 9661\n000000\n111110\n100010\n010100\n010100\n001000\n001000\n000000\n000000\nCHAR 9662\n000000\n000000\n011100\n011100\n001000\n001000\n000000\n000000\n000000\nCHAR 9663\n000000\n000000\n011100\n010100\n001000\n001000\n000000\n000000\n000000\nCHAR 9664\n000000\n000000\n000110\n011110\n111110\n011110\n000110\n000000\n000000\nCHAR 9665\n000000\n000000\n000110\n011010\n100010\n011010\n000110\n000000\n000000\nCHAR 9666\n000000\n000000\n000000\n000110\n011110\n000110\n000000\n000000\n000000\nCHAR 9667\n000000\n000000\n000000\n000110\n011010\n000110\n000000\n000000\n000000\nCHAR 9668\n000000\n000000\n000000\n001110\n111110\n001110\n000000\n000000\n000000\nCHAR 9669\n000000\n000000\n000000\n001110\n110010\n001110\n000000\n000000\n000000\nCHAR 9670\n000000\n000000\n001100\n011110\n111111\n011110\n001100\n000000\n000000\nCHAR 9674\n000000\n001000\n010100\n010100\n100010\n010100\n010100\n001000\n000000\nCHAR 9675\n000000\n000000\n011100\n100010\n100010\n100010\n011100\n000000\n000000\nCHAR 9679\n000000\n000000\n011100\n111110\n111110\n111110\n011100\n000000\n000000\nCHAR 9688\n111111\n111111\n110011\n100001\n100001\n110011\n111111\n111111\n111111\nCHAR 9689\n111111\n111111\n110011\n101101\n101101\n110011\n111111\n111111\n111111\nCHAR 9702\n000000\n000000\n001100\n010010\n010010\n001100\n000000\n000000\n000000\nCHAR 9728\n000000\n001000\n101010\n011100\n111110\n011100\n101010\n001000\n000000\nCHAR 9785\n011110\n100001\n110011\n100001\n101101\n110011\n100001\n011110\n000000\nCHAR 9786\n011110\n100001\n110011\n100001\n110011\n101101\n100001\n011110\n000000\nCHAR 9787\n011110\n111111\n101101\n111111\n101101\n110011\n111111\n011110\n000000\nCHAR 9788\n000000\n001000\n101010\n011100\n110110\n011100\n101010\n001000\n000000\nCHAR 9791\n100010\n011100\n100010\n100010\n011100\n001000\n111110\n001000\n000000\nCHAR 9792\n000000\n011100\n100010\n100010\n011100\n001000\n111110\n001000\n000000\nCHAR 9793\n000000\n001000\n111110\n001000\n011100\n100010\n100010\n011100\n000000\nCHAR 9794\n000000\n000111\n000011\n000101\n011100\n100010\n100010\n011100\n000000\nCHAR 9824\n000000\n001000\n011100\n111110\n111110\n001000\n011100\n000000\n000000\nCHAR 9825\n000000\n010100\n101010\n100010\n100010\n010100\n001000\n000000\n000000\nCHAR 9826\n000000\n000000\n001000\n010100\n100010\n010100\n001000\n000000\n000000\nCHAR 9827\n001000\n011100\n101010\n111110\n101010\n001000\n011100\n000000\n000000\nCHAR 9828\n000000\n001000\n010100\n100010\n111110\n001000\n011100\n000000\n000000\nCHAR 9829\n000000\n010100\n111110\n111110\n111110\n011100\n001000\n000000\n000000\nCHAR 9830\n000000\n000000\n001000\n011100\n111110\n011100\n001000\n000000\n000000\nCHAR 9833\n000000\n000100\n000100\n000100\n000100\n011100\n011000\n000000\n000000\nCHAR 9834\n000000\n001100\n001010\n001000\n001000\n111000\n110000\n000000\n000000\nCHAR 9835\n000000\n011000\n010110\n010010\n110010\n110110\n000110\n000000\n000000\nCHAR 10216\n000000\n000100\n000100\n001000\n001000\n001000\n000100\n000100\n000000\nCHAR 10217\n000000\n001000\n001000\n000100\n000100\n000100\n001000\n001000\n000000\nCHAR 10240\n000000\n000000\n000000\n000000\n000000\n000000\n000000\n000000\n000000\nCHAR 10241\n000000\n010000\n000000\n000000\n000000\n000000\n000000\n000000\n000000\nCHAR 10242\n000000\n000000\n000000\n010000\n000000\n000000\n000000\n000000\n000000\nCHAR 10243\n000000\n010000\n000000\n010000\n000000\n000000\n000000\n000000\n000000\nCHAR 10244\n000000\n000000\n000000\n000000\n000000\n010000\n000000\n000000\n000000\nCHAR 10245\n000000\n010000\n000000\n000000\n000000\n010000\n000000\n000000\n000000\nCHAR 10246\n000000\n000000\n000000\n010000\n000000\n010000\n000000\n000000\n000000\nCHAR 10247\n000000\n010000\n000000\n010000\n000000\n010000\n000000\n000000\n000000\nCHAR 10248\n000000\n000100\n000000\n000000\n000000\n000000\n000000\n000000\n000000\nCHAR 10249\n000000\n010100\n000000\n000000\n000000\n000000\n000000\n000000\n000000\nCHAR 10250\n000000\n000100\n000000\n010000\n000000\n000000\n000000\n000000\n000000\nCHAR 10251\n000000\n010100\n000000\n010000\n000000\n000000\n000000\n000000\n000000\nCHAR 10252\n000000\n000100\n000000\n000000\n000000\n010000\n000000\n000000\n000000\nCHAR 10253\n000000\n010100\n000000\n000000\n000000\n010000\n000000\n000000\n000000\nCHAR 10254\n000000\n000100\n000000\n010000\n000000\n010000\n000000\n000000\n000000\nCHAR 10255\n000000\n010100\n000000\n010000\n000000\n010000\n000000\n000000\n000000\nCHAR 10256\n000000\n000000\n000000\n000100\n000000\n000000\n000000\n000000\n000000\nCHAR 10257\n000000\n010000\n000000\n000100\n000000\n000000\n000000\n000000\n000000\nCHAR 10258\n000000\n000000\n000000\n010100\n000000\n000000\n000000\n000000\n000000\nCHAR 10259\n000000\n010000\n000000\n010100\n000000\n000000\n000000\n000000\n000000\nCHAR 10260\n000000\n000000\n000000\n000100\n000000\n010000\n000000\n000000\n000000\nCHAR 10261\n000000\n010000\n000000\n000100\n000000\n010000\n000000\n000000\n000000\nCHAR 10262\n000000\n000000\n000000\n010100\n000000\n010000\n000000\n000000\n000000\nCHAR 10263\n000000\n010000\n000000\n010100\n000000\n010000\n000000\n000000\n000000\nCHAR 10264\n000000\n000100\n000000\n000100\n000000\n000000\n000000\n000000\n000000\nCHAR 10265\n000000\n010100\n000000\n000100\n000000\n000000\n000000\n000000\n000000\nCHAR 10266\n000000\n000100\n000000\n010100\n000000\n000000\n000000\n000000\n000000\nCHAR 10267\n000000\n010100\n000000\n010100\n000000\n000000\n000000\n000000\n000000\nCHAR 10268\n000000\n000100\n000000\n000100\n000000\n010000\n000000\n000000\n000000\nCHAR 10269\n000000\n010100\n000000\n000100\n000000\n010000\n000000\n000000\n000000\nCHAR 10270\n000000\n000100\n000000\n010100\n000000\n010000\n000000\n000000\n000000\nCHAR 10271\n000000\n010100\n000000\n010100\n000000\n010000\n000000\n000000\n000000\nCHAR 10272\n000000\n000000\n000000\n000000\n000000\n000100\n000000\n000000\n000000\nCHAR 10273\n000000\n010000\n000000\n000000\n000000\n000100\n000000\n000000\n000000\nCHAR 10274\n000000\n000000\n000000\n010000\n000000\n000100\n000000\n000000\n000000\nCHAR 10275\n000000\n010000\n000000\n010000\n000000\n000100\n000000\n000000\n000000\nCHAR 10276\n000000\n000000\n000000\n000000\n000000\n010100\n000000\n000000\n000000\nCHAR 10277\n000000\n010000\n000000\n000000\n000000\n010100\n000000\n000000\n000000\nCHAR 10278\n000000\n000000\n000000\n010000\n000000\n010100\n000000\n000000\n000000\nCHAR 10279\n000000\n010000\n000000\n010000\n000000\n010100\n000000\n000000\n000000\nCHAR 10280\n000000\n000100\n000000\n000000\n000000\n000100\n000000\n000000\n000000\nCHAR 10281\n000000\n010100\n000000\n000000\n000000\n000100\n000000\n000000\n000000\nCHAR 10282\n000000\n000100\n000000\n010000\n000000\n000100\n000000\n000000\n000000\nCHAR 10283\n000000\n010100\n000000\n010000\n000000\n000100\n000000\n000000\n000000\nCHAR 10284\n000000\n000100\n000000\n000000\n000000\n010100\n000000\n000000\n000000\nCHAR 10285\n000000\n010100\n000000\n000000\n000000\n010100\n000000\n000000\n000000\nCHAR 10286\n000000\n000100\n000000\n010000\n000000\n010100\n000000\n000000\n000000\nCHAR 10287\n000000\n010100\n000000\n010000\n000000\n010100\n000000\n000000\n000000\nCHAR 10288\n000000\n000000\n000000\n000100\n000000\n000100\n000000\n000000\n000000\nCHAR 10289\n000000\n010000\n000000\n000100\n000000\n000100\n000000\n000000\n000000\nCHAR 10290\n000000\n000000\n000000\n010100\n000000\n000100\n000000\n000000\n000000\nCHAR 10291\n000000\n010000\n000000\n010100\n000000\n000100\n000000\n000000\n000000\nCHAR 10292\n000000\n000000\n000000\n000100\n000000\n010100\n000000\n000000\n000000\nCHAR 10293\n000000\n010000\n000000\n000100\n000000\n010100\n000000\n000000\n000000\nCHAR 10294\n000000\n000000\n000000\n010100\n000000\n010100\n000000\n000000\n000000\nCHAR 10295\n000000\n010000\n000000\n010100\n000000\n010100\n000000\n000000\n000000\nCHAR 10296\n000000\n000100\n000000\n000100\n000000\n000100\n000000\n000000\n000000\nCHAR 10297\n000000\n010100\n000000\n000100\n000000\n000100\n000000\n000000\n000000\nCHAR 10298\n000000\n000100\n000000\n010100\n000000\n000100\n000000\n000000\n000000\nCHAR 10299\n000000\n010100\n000000\n010100\n000000\n000100\n000000\n000000\n000000\nCHAR 10300\n000000\n000100\n000000\n000100\n000000\n010100\n000000\n000000\n000000\nCHAR 10301\n000000\n010100\n000000\n000100\n000000\n010100\n000000\n000000\n000000\nCHAR 10302\n000000\n000100\n000000\n010100\n000000\n010100\n000000\n000000\n000000\nCHAR 10303\n000000\n010100\n000000\n010100\n000000\n010100\n000000\n000000\n000000\nCHAR 10304\n000000\n000000\n000000\n000000\n000000\n000000\n000000\n010000\n000000\nCHAR 10305\n000000\n010000\n000000\n000000\n000000\n000000\n000000\n010000\n000000\nCHAR 10306\n000000\n000000\n000000\n010000\n000000\n000000\n000000\n010000\n000000\nCHAR 10307\n000000\n010000\n000000\n010000\n000000\n000000\n000000\n010000\n000000\nCHAR 10308\n000000\n000000\n000000\n000000\n000000\n010000\n000000\n010000\n000000\nCHAR 10309\n000000\n010000\n000000\n000000\n000000\n010000\n000000\n010000\n000000\nCHAR 10310\n000000\n000000\n000000\n010000\n000000\n010000\n000000\n010000\n000000\nCHAR 10311\n000000\n010000\n000000\n010000\n000000\n010000\n000000\n010000\n000000\nCHAR 10312\n000000\n000100\n000000\n000000\n000000\n000000\n000000\n010000\n000000\nCHAR 10313\n000000\n010100\n000000\n000000\n000000\n000000\n000000\n010000\n000000\nCHAR 10314\n000000\n000100\n000000\n010000\n000000\n000000\n000000\n010000\n000000\nCHAR 10315\n000000\n010100\n000000\n010000\n000000\n000000\n000000\n010000\n000000\nCHAR 10316\n000000\n000100\n000000\n000000\n000000\n010000\n000000\n010000\n000000\nCHAR 10317\n000000\n010100\n000000\n000000\n000000\n010000\n000000\n010000\n000000\nCHAR 10318\n000000\n000100\n000000\n010000\n000000\n010000\n000000\n010000\n000000\nCHAR 10319\n000000\n010100\n000000\n010000\n000000\n010000\n000000\n010000\n000000\nCHAR 10320\n000000\n000000\n000000\n000100\n000000\n000000\n000000\n010000\n000000\nCHAR 10321\n000000\n010000\n000000\n000100\n000000\n000000\n000000\n010000\n000000\nCHAR 10322\n000000\n000000\n000000\n010100\n000000\n000000\n000000\n010000\n000000\nCHAR 10323\n000000\n010000\n000000\n010100\n000000\n000000\n000000\n010000\n000000\nCHAR 10324\n000000\n000000\n000000\n000100\n000000\n010000\n000000\n010000\n000000\nCHAR 10325\n000000\n010000\n000000\n000100\n000000\n010000\n000000\n010000\n000000\nCHAR 10326\n000000\n000000\n000000\n010100\n000000\n010000\n000000\n010000\n000000\nCHAR 10327\n000000\n010000\n000000\n010100\n000000\n010000\n000000\n010000\n000000\nCHAR 10328\n000000\n000100\n000000\n000100\n000000\n000000\n000000\n010000\n000000\nCHAR 10329\n000000\n010100\n000000\n000100\n000000\n000000\n000000\n010000\n000000\nCHAR 10330\n000000\n000100\n000000\n010100\n000000\n000000\n000000\n010000\n000000\nCHAR 10331\n000000\n010100\n000000\n010100\n000000\n000000\n000000\n010000\n000000\nCHAR 10332\n000000\n000100\n000000\n000100\n000000\n010000\n000000\n010000\n000000\nCHAR 10333\n000000\n010100\n000000\n000100\n000000\n010000\n000000\n010000\n000000\nCHAR 10334\n000000\n000100\n000000\n010100\n000000\n010000\n000000\n010000\n000000\nCHAR 10335\n000000\n010100\n000000\n010100\n000000\n010000\n000000\n010000\n000000\nCHAR 10336\n000000\n000000\n000000\n000000\n000000\n000100\n000000\n010000\n000000\nCHAR 10337\n000000\n010000\n000000\n000000\n000000\n000100\n000000\n010000\n000000\nCHAR 10338\n000000\n000000\n000000\n010000\n000000\n000100\n000000\n010000\n000000\nCHAR 10339\n000000\n010000\n000000\n010000\n000000\n000100\n000000\n010000\n000000\nCHAR 10340\n000000\n000000\n000000\n000000\n000000\n010100\n000000\n010000\n000000\nCHAR 10341\n000000\n010000\n000000\n000000\n000000\n010100\n000000\n010000\n000000\nCHAR 10342\n000000\n000000\n000000\n010000\n000000\n010100\n000000\n010000\n000000\nCHAR 10343\n000000\n010000\n000000\n010000\n000000\n010100\n000000\n010000\n000000\nCHAR 10344\n000000\n000100\n000000\n000000\n000000\n000100\n000000\n010000\n000000\nCHAR 10345\n000000\n010100\n000000\n000000\n000000\n000100\n000000\n010000\n000000\nCHAR 10346\n000000\n000100\n000000\n010000\n000000\n000100\n000000\n010000\n000000\nCHAR 10347\n000000\n010100\n000000\n010000\n000000\n000100\n000000\n010000\n000000\nCHAR 10348\n000000\n000100\n000000\n000000\n000000\n010100\n000000\n010000\n000000\nCHAR 10349\n000000\n010100\n000000\n000000\n000000\n010100\n000000\n010000\n000000\nCHAR 10350\n000000\n000100\n000000\n010000\n000000\n010100\n000000\n010000\n000000\nCHAR 10351\n000000\n010100\n000000\n010000\n000000\n010100\n000000\n010000\n000000\nCHAR 10352\n000000\n000000\n000000\n000100\n000000\n000100\n000000\n010000\n000000\nCHAR 10353\n000000\n010000\n000000\n000100\n000000\n000100\n000000\n010000\n000000\nCHAR 10354\n000000\n000000\n000000\n010100\n000000\n000100\n000000\n010000\n000000\nCHAR 10355\n000000\n010000\n000000\n010100\n000000\n000100\n000000\n010000\n000000\nCHAR 10356\n000000\n000000\n000000\n000100\n000000\n010100\n000000\n010000\n000000\nCHAR 10357\n000000\n010000\n000000\n000100\n000000\n010100\n000000\n010000\n000000\nCHAR 10358\n000000\n000000\n000000\n010100\n000000\n010100\n000000\n010000\n000000\nCHAR 10359\n000000\n010000\n000000\n010100\n000000\n010100\n000000\n010000\n000000\nCHAR 10360\n000000\n000100\n000000\n000100\n000000\n000100\n000000\n010000\n000000\nCHAR 10361\n000000\n010100\n000000\n000100\n000000\n000100\n000000\n010000\n000000\nCHAR 10362\n000000\n000100\n000000\n010100\n000000\n000100\n000000\n010000\n000000\nCHAR 10363\n000000\n010100\n000000\n010100\n000000\n000100\n000000\n010000\n000000\nCHAR 10364\n000000\n000100\n000000\n000100\n000000\n010100\n000000\n010000\n000000\nCHAR 10365\n000000\n010100\n000000\n000100\n000000\n010100\n000000\n010000\n000000\nCHAR 10366\n000000\n000100\n000000\n010100\n000000\n010100\n000000\n010000\n000000\nCHAR 10367\n000000\n010100\n000000\n010100\n000000\n010100\n000000\n010000\n000000\nCHAR 10368\n000000\n000000\n000000\n000000\n000000\n000000\n000000\n000100\n000000\nCHAR 10369\n000000\n010000\n000000\n000000\n000000\n000000\n000000\n000100\n000000\nCHAR 10370\n000000\n000000\n000000\n010000\n000000\n000000\n000000\n000100\n000000\nCHAR 10371\n000000\n010000\n000000\n010000\n000000\n000000\n000000\n000100\n000000\nCHAR 10372\n000000\n000000\n000000\n000000\n000000\n010000\n000000\n000100\n000000\nCHAR 10373\n000000\n010000\n000000\n000000\n000000\n010000\n000000\n000100\n000000\nCHAR 10374\n000000\n000000\n000000\n010000\n000000\n010000\n000000\n000100\n000000\nCHAR 10375\n000000\n010000\n000000\n010000\n000000\n010000\n000000\n000100\n000000\nCHAR 10376\n000000\n000100\n000000\n000000\n000000\n000000\n000000\n000100\n000000\nCHAR 10377\n000000\n010100\n000000\n000000\n000000\n000000\n000000\n000100\n000000\nCHAR 10378\n000000\n000100\n000000\n010000\n000000\n000000\n000000\n000100\n000000\nCHAR 10379\n000000\n010100\n000000\n010000\n000000\n000000\n000000\n000100\n000000\nCHAR 10380\n000000\n000100\n000000\n000000\n000000\n010000\n000000\n000100\n000000\nCHAR 10381\n000000\n010100\n000000\n000000\n000000\n010000\n000000\n000100\n000000\nCHAR 10382\n000000\n000100\n000000\n010000\n000000\n010000\n000000\n000100\n000000\nCHAR 10383\n000000\n010100\n000000\n010000\n000000\n010000\n000000\n000100\n000000\nCHAR 10384\n000000\n000000\n000000\n000100\n000000\n000000\n000000\n000100\n000000\nCHAR 10385\n000000\n010000\n000000\n000100\n000000\n000000\n000000\n000100\n000000\nCHAR 10386\n000000\n000000\n000000\n010100\n000000\n000000\n000000\n000100\n000000\nCHAR 10387\n000000\n010000\n000000\n010100\n000000\n000000\n000000\n000100\n000000\nCHAR 10388\n000000\n000000\n000000\n000100\n000000\n010000\n000000\n000100\n000000\nCHAR 10389\n000000\n010000\n000000\n000100\n000000\n010000\n000000\n000100\n000000\nCHAR 10390\n000000\n000000\n000000\n010100\n000000\n010000\n000000\n000100\n000000\nCHAR 10391\n000000\n010000\n000000\n010100\n000000\n010000\n000000\n000100\n000000\nCHAR 10392\n000000\n000100\n000000\n000100\n000000\n000000\n000000\n000100\n000000\nCHAR 10393\n000000\n010100\n000000\n000100\n000000\n000000\n000000\n000100\n000000\nCHAR 10394\n000000\n000100\n000000\n010100\n000000\n000000\n000000\n000100\n000000\nCHAR 10395\n000000\n010100\n000000\n010100\n000000\n000000\n000000\n000100\n000000\nCHAR 10396\n000000\n000100\n000000\n000100\n000000\n010000\n000000\n000100\n000000\nCHAR 10397\n000000\n010100\n000000\n000100\n000000\n010000\n000000\n000100\n000000\nCHAR 10398\n000000\n000100\n000000\n010100\n000000\n010000\n000000\n000100\n000000\nCHAR 10399\n000000\n010100\n000000\n010100\n000000\n010000\n000000\n000100\n000000\nCHAR 10400\n000000\n000000\n000000\n000000\n000000\n000100\n000000\n000100\n000000\nCHAR 10401\n000000\n010000\n000000\n000000\n000000\n000100\n000000\n000100\n000000\nCHAR 10402\n000000\n000000\n000000\n010000\n000000\n000100\n000000\n000100\n000000\nCHAR 10403\n000000\n010000\n000000\n010000\n000000\n000100\n000000\n000100\n000000\nCHAR 10404\n000000\n000000\n000000\n000000\n000000\n010100\n000000\n000100\n000000\nCHAR 10405\n000000\n010000\n000000\n000000\n000000\n010100\n000000\n000100\n000000\nCHAR 10406\n000000\n000000\n000000\n010000\n000000\n010100\n000000\n000100\n000000\nCHAR 10407\n000000\n010000\n000000\n010000\n000000\n010100\n000000\n000100\n000000\nCHAR 10408\n000000\n000100\n000000\n000000\n000000\n000100\n000000\n000100\n000000\nCHAR 10409\n000000\n010100\n000000\n000000\n000000\n000100\n000000\n000100\n000000\nCHAR 10410\n000000\n000100\n000000\n010000\n000000\n000100\n000000\n000100\n000000\nCHAR 10411\n000000\n010100\n000000\n010000\n000000\n000100\n000000\n000100\n000000\nCHAR 10412\n000000\n000100\n000000\n000000\n000000\n010100\n000000\n000100\n000000\nCHAR 10413\n000000\n010100\n000000\n000000\n000000\n010100\n000000\n000100\n000000\nCHAR 10414\n000000\n000100\n000000\n010000\n000000\n010100\n000000\n000100\n000000\nCHAR 10415\n000000\n010100\n000000\n010000\n000000\n010100\n000000\n000100\n000000\nCHAR 10416\n000000\n000000\n000000\n000100\n000000\n000100\n000000\n000100\n000000\nCHAR 10417\n000000\n010000\n000000\n000100\n000000\n000100\n000000\n000100\n000000\nCHAR 10418\n000000\n000000\n000000\n010100\n000000\n000100\n000000\n000100\n000000\nCHAR 10419\n000000\n010000\n000000\n010100\n000000\n000100\n000000\n000100\n000000\nCHAR 10420\n000000\n000000\n000000\n000100\n000000\n010100\n000000\n000100\n000000\nCHAR 10421\n000000\n010000\n000000\n000100\n000000\n010100\n000000\n000100\n000000\nCHAR 10422\n000000\n000000\n000000\n010100\n000000\n010100\n000000\n000100\n000000\nCHAR 10423\n000000\n010000\n000000\n010100\n000000\n010100\n000000\n000100\n000000\nCHAR 10424\n000000\n000100\n000000\n000100\n000000\n000100\n000000\n000100\n000000\nCHAR 10425\n000000\n010100\n000000\n000100\n000000\n000100\n000000\n000100\n000000\nCHAR 10426\n000000\n000100\n000000\n010100\n000000\n000100\n000000\n000100\n000000\nCHAR 10427\n000000\n010100\n000000\n010100\n000000\n000100\n000000\n000100\n000000\nCHAR 10428\n000000\n000100\n000000\n000100\n000000\n010100\n000000\n000100\n000000\nCHAR 10429\n000000\n010100\n000000\n000100\n000000\n010100\n000000\n000100\n000000\nCHAR 10430\n000000\n000100\n000000\n010100\n000000\n010100\n000000\n000100\n000000\nCHAR 10431\n000000\n010100\n000000\n010100\n000000\n010100\n000000\n000100\n000000\nCHAR 10432\n000000\n000000\n000000\n000000\n000000\n000000\n000000\n010100\n000000\nCHAR 10433\n000000\n010000\n000000\n000000\n000000\n000000\n000000\n010100\n000000\nCHAR 10434\n000000\n000000\n000000\n010000\n000000\n000000\n000000\n010100\n000000\nCHAR 10435\n000000\n010000\n000000\n010000\n000000\n000000\n000000\n010100\n000000\nCHAR 10436\n000000\n000000\n000000\n000000\n000000\n010000\n000000\n010100\n000000\nCHAR 10437\n000000\n010000\n000000\n000000\n000000\n010000\n000000\n010100\n000000\nCHAR 10438\n000000\n000000\n000000\n010000\n000000\n010000\n000000\n010100\n000000\nCHAR 10439\n000000\n010000\n000000\n010000\n000000\n010000\n000000\n010100\n000000\nCHAR 10440\n000000\n000100\n000000\n000000\n000000\n000000\n000000\n010100\n000000\nCHAR 10441\n000000\n010100\n000000\n000000\n000000\n000000\n000000\n010100\n000000\nCHAR 10442\n000000\n000100\n000000\n010000\n000000\n000000\n000000\n010100\n000000\nCHAR 10443\n000000\n010100\n000000\n010000\n000000\n000000\n000000\n010100\n000000\nCHAR 10444\n000000\n000100\n000000\n000000\n000000\n010000\n000000\n010100\n000000\nCHAR 10445\n000000\n010100\n000000\n000000\n000000\n010000\n000000\n010100\n000000\nCHAR 10446\n000000\n000100\n000000\n010000\n000000\n010000\n000000\n010100\n000000\nCHAR 10447\n000000\n010100\n000000\n010000\n000000\n010000\n000000\n010100\n000000\nCHAR 10448\n000000\n000000\n000000\n000100\n000000\n000000\n000000\n010100\n000000\nCHAR 10449\n000000\n010000\n000000\n000100\n000000\n000000\n000000\n010100\n000000\nCHAR 10450\n000000\n000000\n000000\n010100\n000000\n000000\n000000\n010100\n000000\nCHAR 10451\n000000\n010000\n000000\n010100\n000000\n000000\n000000\n010100\n000000\nCHAR 10452\n000000\n000000\n000000\n000100\n000000\n010000\n000000\n010100\n000000\nCHAR 10453\n000000\n010000\n000000\n000100\n000000\n010000\n000000\n010100\n000000\nCHAR 10454\n000000\n000000\n000000\n010100\n000000\n010000\n000000\n010100\n000000\nCHAR 10455\n000000\n010000\n000000\n010100\n000000\n010000\n000000\n010100\n000000\nCHAR 10456\n000000\n000100\n000000\n000100\n000000\n000000\n000000\n010100\n000000\nCHAR 10457\n000000\n010100\n000000\n000100\n000000\n000000\n000000\n010100\n000000\nCHAR 10458\n000000\n000100\n000000\n010100\n000000\n000000\n000000\n010100\n000000\nCHAR 10459\n000000\n010100\n000000\n010100\n000000\n000000\n000000\n010100\n000000\nCHAR 10460\n000000\n000100\n000000\n000100\n000000\n010000\n000000\n010100\n000000\nCHAR 10461\n000000\n010100\n000000\n000100\n000000\n010000\n000000\n010100\n000000\nCHAR 10462\n000000\n000100\n000000\n010100\n000000\n010000\n000000\n010100\n000000\nCHAR 10463\n000000\n010100\n000000\n010100\n000000\n010000\n000000\n010100\n000000\nCHAR 10464\n000000\n000000\n000000\n000000\n000000\n000100\n000000\n010100\n000000\nCHAR 10465\n000000\n010000\n000000\n000000\n000000\n000100\n000000\n010100\n000000\nCHAR 10466\n000000\n000000\n000000\n010000\n000000\n000100\n000000\n010100\n000000\nCHAR 10467\n000000\n010000\n000000\n010000\n000000\n000100\n000000\n010100\n000000\nCHAR 10468\n000000\n000000\n000000\n000000\n000000\n010100\n000000\n010100\n000000\nCHAR 10469\n000000\n010000\n000000\n000000\n000000\n010100\n000000\n010100\n000000\nCHAR 10470\n000000\n000000\n000000\n010000\n000000\n010100\n000000\n010100\n000000\nCHAR 10471\n000000\n010000\n000000\n010000\n000000\n010100\n000000\n010100\n000000\nCHAR 10472\n000000\n000100\n000000\n000000\n000000\n000100\n000000\n010100\n000000\nCHAR 10473\n000000\n010100\n000000\n000000\n000000\n000100\n000000\n010100\n000000\nCHAR 10474\n000000\n000100\n000000\n010000\n000000\n000100\n000000\n010100\n000000\nCHAR 10475\n000000\n010100\n000000\n010000\n000000\n000100\n000000\n010100\n000000\nCHAR 10476\n000000\n000100\n000000\n000000\n000000\n010100\n000000\n010100\n000000\nCHAR 10477\n000000\n010100\n000000\n000000\n000000\n010100\n000000\n010100\n000000\nCHAR 10478\n000000\n000100\n000000\n010000\n000000\n010100\n000000\n010100\n000000\nCHAR 10479\n000000\n010100\n000000\n010000\n000000\n010100\n000000\n010100\n000000\nCHAR 10480\n000000\n000000\n000000\n000100\n000000\n000100\n000000\n010100\n000000\nCHAR 10481\n000000\n010000\n000000\n000100\n000000\n000100\n000000\n010100\n000000\nCHAR 10482\n000000\n000000\n000000\n010100\n000000\n000100\n000000\n010100\n000000\nCHAR 10483\n000000\n010000\n000000\n010100\n000000\n000100\n000000\n010100\n000000\nCHAR 10484\n000000\n000000\n000000\n000100\n000000\n010100\n000000\n010100\n000000\nCHAR 10485\n000000\n010000\n000000\n000100\n000000\n010100\n000000\n010100\n000000\nCHAR 10486\n000000\n000000\n000000\n010100\n000000\n010100\n000000\n010100\n000000\nCHAR 10487\n000000\n010000\n000000\n010100\n000000\n010100\n000000\n010100\n000000\nCHAR 10488\n000000\n000100\n000000\n000100\n000000\n000100\n000000\n010100\n000000\nCHAR 10489\n000000\n010100\n000000\n000100\n000000\n000100\n000000\n010100\n000000\nCHAR 10490\n000000\n000100\n000000\n010100\n000000\n000100\n000000\n010100\n000000\nCHAR 10491\n000000\n010100\n000000\n010100\n000000\n000100\n000000\n010100\n000000\nCHAR 10492\n000000\n000100\n000000\n000100\n000000\n010100\n000000\n010100\n000000\nCHAR 10493\n000000\n010100\n000000\n000100\n000000\n010100\n000000\n010100\n000000\nCHAR 10494\n000000\n000100\n000000\n010100\n000000\n010100\n000000\n010100\n000000\nCHAR 10495\n000000\n010100\n000000\n010100\n000000\n010100\n000000\n010100\n000000\nCHAR 64257\n000000\n000100\n001010\n001000\n011110\n001010\n001010\n000000\n000000\nCHAR 64258\n000000\n000110\n001010\n001010\n011110\n001010\n001010\n000000\n000000\nCHAR 65533\n011100\n110110\n101010\n111010\n110110\n110110\n111110\n110110\n011100", "unicode_european_large.bitsyfont": "FONT unicode_european_large\nSIZE 8 13\nCHAR 0\n00000000\n00000000\n10101010\n00000000\n10000010\n00000000\n10000010\n00000000\n10000010\n00000000\n10101010\n00000000\n00000000\nCHAR 32\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 33\n00000000\n00000000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00000000\n00010000\n00000000\n00000000\nCHAR 34\n00000000\n00000000\n00100100\n00100100\n00100100\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 35\n00000000\n00000000\n00000000\n00100100\n00100100\n01111110\n00100100\n01111110\n00100100\n00100100\n00000000\n00000000\n00000000\nCHAR 36\n00000000\n00000000\n00010000\n00111100\n01010000\n01010000\n00111000\n00010100\n00010100\n01111000\n00010000\n00000000\n00000000\nCHAR 37\n00000000\n00000000\n00100010\n01010010\n00100100\n00001000\n00001000\n00010000\n00100100\n00101010\n01000100\n00000000\n00000000\nCHAR 38\n00000000\n00000000\n00000000\n00000000\n00110000\n01001000\n01001000\n00110000\n01001010\n01000100\n00111010\n00000000\n00000000\nCHAR 39\n00000000\n00000000\n00010000\n00010000\n00010000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 40\n00000000\n00000000\n00000100\n00001000\n00001000\n00010000\n00010000\n00010000\n00001000\n00001000\n00000100\n00000000\n00000000\nCHAR 41\n00000000\n00000000\n00100000\n00010000\n00010000\n00001000\n00001000\n00001000\n00010000\n00010000\n00100000\n00000000\n00000000\nCHAR 42\n00000000\n00000000\n00100100\n00011000\n01111110\n00011000\n00100100\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 43\n00000000\n00000000\n00000000\n00000000\n00010000\n00010000\n01111100\n00010000\n00010000\n00000000\n00000000\n00000000\n00000000\nCHAR 44\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00111000\n00110000\n01000000\n00000000\nCHAR 45\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n01111100\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 46\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00010000\n00111000\n00010000\n00000000\nCHAR 47\n00000000\n00000000\n00000010\n00000010\n00000100\n00001000\n00010000\n00100000\n01000000\n10000000\n10000000\n00000000\n00000000\nCHAR 48\n00000000\n00000000\n00011000\n00100100\n01000010\n01000010\n01000010\n01000010\n01000010\n00100100\n00011000\n00000000\n00000000\nCHAR 49\n00000000\n00000000\n00010000\n00110000\n01010000\n00010000\n00010000\n00010000\n00010000\n00010000\n01111100\n00000000\n00000000\nCHAR 50\n00000000\n00000000\n00111100\n01000010\n01000010\n00000010\n00000100\n00011000\n00100000\n01000000\n01111110\n00000000\n00000000\nCHAR 51\n00000000\n00000000\n01111110\n00000010\n00000100\n00001000\n00011100\n00000010\n00000010\n01000010\n00111100\n00000000\n00000000\nCHAR 52\n00000000\n00000000\n00000100\n00001100\n00010100\n00100100\n01000100\n01000100\n01111110\n00000100\n00000100\n00000000\n00000000\nCHAR 53\n00000000\n00000000\n01111110\n01000000\n01000000\n01011100\n01100010\n00000010\n00000010\n01000010\n00111100\n00000000\n00000000\nCHAR 54\n00000000\n00000000\n00011100\n00100000\n01000000\n01000000\n01011100\n01100010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 55\n00000000\n00000000\n01111110\n00000010\n00000100\n00001000\n00001000\n00010000\n00010000\n00100000\n00100000\n00000000\n00000000\nCHAR 56\n00000000\n00000000\n00111100\n01000010\n01000010\n01000010\n00111100\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 57\n00000000\n00000000\n00111100\n01000010\n01000010\n01000110\n00111010\n00000010\n00000010\n00000100\n00111000\n00000000\n00000000\nCHAR 58\n00000000\n00000000\n00000000\n00000000\n00010000\n00111000\n00010000\n00000000\n00000000\n00010000\n00111000\n00010000\n00000000\nCHAR 59\n00000000\n00000000\n00000000\n00000000\n00010000\n00111000\n00010000\n00000000\n00000000\n00111000\n00110000\n01000000\n00000000\nCHAR 60\n00000000\n00000000\n00000010\n00000100\n00001000\n00010000\n00100000\n00010000\n00001000\n00000100\n00000010\n00000000\n00000000\nCHAR 61\n00000000\n00000000\n00000000\n00000000\n00000000\n01111110\n00000000\n00000000\n01111110\n00000000\n00000000\n00000000\n00000000\nCHAR 62\n00000000\n00000000\n01000000\n00100000\n00010000\n00001000\n00000100\n00001000\n00010000\n00100000\n01000000\n00000000\n00000000\nCHAR 63\n00000000\n00000000\n00111100\n01000010\n01000010\n00000010\n00000100\n00001000\n00001000\n00000000\n00001000\n00000000\n00000000\nCHAR 64\n00000000\n00000000\n00111100\n01000010\n01000010\n01001110\n01010010\n01010110\n01001010\n01000000\n00111100\n00000000\n00000000\nCHAR 65\n00000000\n00000000\n00011000\n00100100\n01000010\n01000010\n01000010\n01111110\n01000010\n01000010\n01000010\n00000000\n00000000\nCHAR 66\n00000000\n00000000\n01111000\n01000100\n01000010\n01000100\n01111000\n01000100\n01000010\n01000100\n01111000\n00000000\n00000000\nCHAR 67\n00000000\n00000000\n00111100\n01000010\n01000000\n01000000\n01000000\n01000000\n01000000\n01000010\n00111100\n00000000\n00000000\nCHAR 68\n00000000\n00000000\n01111000\n01000100\n01000010\n01000010\n01000010\n01000010\n01000010\n01000100\n01111000\n00000000\n00000000\nCHAR 69\n00000000\n00000000\n01111110\n01000000\n01000000\n01000000\n01111000\n01000000\n01000000\n01000000\n01111110\n00000000\n00000000\nCHAR 70\n00000000\n00000000\n01111110\n01000000\n01000000\n01000000\n01111000\n01000000\n01000000\n01000000\n01000000\n00000000\n00000000\nCHAR 71\n00000000\n00000000\n00111100\n01000010\n01000000\n01000000\n01000000\n01001110\n01000010\n01000110\n00111010\n00000000\n00000000\nCHAR 72\n00000000\n00000000\n01000010\n01000010\n01000010\n01000010\n01111110\n01000010\n01000010\n01000010\n01000010\n00000000\n00000000\nCHAR 73\n00000000\n00000000\n01111100\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n01111100\n00000000\n00000000\nCHAR 74\n00000000\n00000000\n00011111\n00000100\n00000100\n00000100\n00000100\n00000100\n00000100\n01000100\n00111000\n00000000\n00000000\nCHAR 75\n00000000\n00000000\n01000010\n01000100\n01001000\n01010000\n01100000\n01010000\n01001000\n01000100\n01000010\n00000000\n00000000\nCHAR 76\n00000000\n00000000\n01000000\n01000000\n01000000\n01000000\n01000000\n01000000\n01000000\n01000000\n01111110\n00000000\n00000000\nCHAR 77\n00000000\n00000000\n10000010\n10000010\n11000110\n10101010\n10010010\n10010010\n10000010\n10000010\n10000010\n00000000\n00000000\nCHAR 78\n00000000\n00000000\n01000010\n01000010\n01100010\n01010010\n01001010\n01000110\n01000010\n01000010\n01000010\n00000000\n00000000\nCHAR 79\n00000000\n00000000\n00111100\n01000010\n01000010\n01000010\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 80\n00000000\n00000000\n01111100\n01000010\n01000010\n01000010\n01111100\n01000000\n01000000\n01000000\n01000000\n00000000\n00000000\nCHAR 81\n00000000\n00000000\n00111100\n01000010\n01000010\n01000010\n01000010\n01000010\n01010010\n01001010\n00111100\n00000010\n00000000\nCHAR 82\n00000000\n00000000\n01111100\n01000010\n01000010\n01000010\n01111100\n01010000\n01001000\n01000100\n01000010\n00000000\n00000000\nCHAR 83\n00000000\n00000000\n00111100\n01000010\n01000000\n01000000\n00111100\n00000010\n00000010\n01000010\n00111100\n00000000\n00000000\nCHAR 84\n00000000\n00000000\n11111110\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00000000\n00000000\nCHAR 85\n00000000\n00000000\n01000010\n01000010\n01000010\n01000010\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 86\n00000000\n00000000\n10000010\n10000010\n01000100\n01000100\n01000100\n00101000\n00101000\n00101000\n00010000\n00000000\n00000000\nCHAR 87\n00000000\n00000000\n10000010\n10000010\n10000010\n10000010\n10010010\n10010010\n10010010\n10101010\n01000100\n00000000\n00000000\nCHAR 88\n00000000\n00000000\n10000010\n10000010\n01000100\n00101000\n00010000\n00101000\n01000100\n10000010\n10000010\n00000000\n00000000\nCHAR 89\n00000000\n00000000\n10000010\n10000010\n01000100\n00101000\n00010000\n00010000\n00010000\n00010000\n00010000\n00000000\n00000000\nCHAR 90\n00000000\n00000000\n01111110\n00000010\n00000100\n00001000\n00010000\n00100000\n01000000\n01000000\n01111110\n00000000\n00000000\nCHAR 91\n00000000\n00000000\n00111100\n00100000\n00100000\n00100000\n00100000\n00100000\n00100000\n00100000\n00111100\n00000000\n00000000\nCHAR 92\n00000000\n00000000\n10000000\n10000000\n01000000\n00100000\n00010000\n00001000\n00000100\n00000010\n00000010\n00000000\n00000000\nCHAR 93\n00000000\n00000000\n01111000\n00001000\n00001000\n00001000\n00001000\n00001000\n00001000\n00001000\n01111000\n00000000\n00000000\nCHAR 94\n00000000\n00000000\n00010000\n00101000\n01000100\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 95\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n11111110\n00000000\nCHAR 96\n00000000\n00010000\n00001000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 97\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n00000010\n00111110\n01000010\n01000110\n00111010\n00000000\n00000000\nCHAR 98\n00000000\n00000000\n01000000\n01000000\n01000000\n01011100\n01100010\n01000010\n01000010\n01100010\n01011100\n00000000\n00000000\nCHAR 99\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n01000010\n01000000\n01000000\n01000010\n00111100\n00000000\n00000000\nCHAR 100\n00000000\n00000000\n00000010\n00000010\n00000010\n00111010\n01000110\n01000010\n01000010\n01000110\n00111010\n00000000\n00000000\nCHAR 101\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n01000010\n01111110\n01000000\n01000010\n00111100\n00000000\n00000000\nCHAR 102\n00000000\n00000000\n00011100\n00100010\n00100000\n00100000\n01111100\n00100000\n00100000\n00100000\n00100000\n00000000\n00000000\nCHAR 103\n00000000\n00000000\n00000000\n00000000\n00000000\n00111010\n01000100\n01000100\n00111000\n01000000\n00111100\n01000010\n00111100\nCHAR 104\n00000000\n00000000\n01000000\n01000000\n01000000\n01011100\n01100010\n01000010\n01000010\n01000010\n01000010\n00000000\n00000000\nCHAR 105\n00000000\n00000000\n00000000\n00010000\n00000000\n00110000\n00010000\n00010000\n00010000\n00010000\n01111100\n00000000\n00000000\nCHAR 106\n00000000\n00000000\n00000000\n00000100\n00000000\n00001100\n00000100\n00000100\n00000100\n00000100\n01000100\n01000100\n00111000\nCHAR 107\n00000000\n00000000\n01000000\n01000000\n01000000\n01000100\n01001000\n01110000\n01001000\n01000100\n01000010\n00000000\n00000000\nCHAR 108\n00000000\n00000000\n00110000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n01111100\n00000000\n00000000\nCHAR 109\n00000000\n00000000\n00000000\n00000000\n00000000\n11101100\n10010010\n10010010\n10010010\n10010010\n10000010\n00000000\n00000000\nCHAR 110\n00000000\n00000000\n00000000\n00000000\n00000000\n01011100\n01100010\n01000010\n01000010\n01000010\n01000010\n00000000\n00000000\nCHAR 111\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 112\n00000000\n00000000\n00000000\n00000000\n00000000\n01011100\n01100010\n01000010\n01100010\n01011100\n01000000\n01000000\n01000000\nCHAR 113\n00000000\n00000000\n00000000\n00000000\n00000000\n00111010\n01000110\n01000010\n01000110\n00111010\n00000010\n00000010\n00000010\nCHAR 114\n00000000\n00000000\n00000000\n00000000\n00000000\n01011100\n00100010\n00100000\n00100000\n00100000\n00100000\n00000000\n00000000\nCHAR 115\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n01000010\n00110000\n00001100\n01000010\n00111100\n00000000\n00000000\nCHAR 116\n00000000\n00000000\n00000000\n00100000\n00100000\n01111100\n00100000\n00100000\n00100000\n00100010\n00011100\n00000000\n00000000\nCHAR 117\n00000000\n00000000\n00000000\n00000000\n00000000\n01000100\n01000100\n01000100\n01000100\n01000100\n00111010\n00000000\n00000000\nCHAR 118\n00000000\n00000000\n00000000\n00000000\n00000000\n01000100\n01000100\n01000100\n00101000\n00101000\n00010000\n00000000\n00000000\nCHAR 119\n00000000\n00000000\n00000000\n00000000\n00000000\n10000010\n10000010\n10010010\n10010010\n10101010\n01000100\n00000000\n00000000\nCHAR 120\n00000000\n00000000\n00000000\n00000000\n00000000\n01000010\n00100100\n00011000\n00011000\n00100100\n01000010\n00000000\n00000000\nCHAR 121\n00000000\n00000000\n00000000\n00000000\n00000000\n01000010\n01000010\n01000010\n01000110\n00111010\n00000010\n01000010\n00111100\nCHAR 122\n00000000\n00000000\n00000000\n00000000\n00000000\n01111110\n00000100\n00001000\n00010000\n00100000\n01111110\n00000000\n00000000\nCHAR 123\n00000000\n00000000\n00001110\n00010000\n00010000\n00001000\n00110000\n00001000\n00010000\n00010000\n00001110\n00000000\n00000000\nCHAR 124\n00000000\n00000000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00000000\n00000000\nCHAR 125\n00000000\n00000000\n01110000\n00001000\n00001000\n00010000\n00001100\n00010000\n00001000\n00001000\n01110000\n00000000\n00000000\nCHAR 126\n00000000\n00000000\n00100100\n01010100\n01001000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 160\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 161\n00000000\n00000000\n00010000\n00000000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00000000\n00000000\nCHAR 162\n00000000\n00000000\n00010000\n00111000\n01010100\n01010000\n01010000\n01010100\n00111000\n00010000\n00000000\n00000000\n00000000\nCHAR 163\n00000000\n00000000\n00011100\n00100010\n00100000\n01110000\n00100000\n00100000\n00100000\n01100010\n11011100\n00000000\n00000000\nCHAR 164\n00000000\n00000000\n00000000\n00000000\n01000010\n00111100\n00100100\n00100100\n00111100\n01000010\n00000000\n00000000\n00000000\nCHAR 165\n00000000\n00000000\n10000010\n10000010\n01000100\n00101000\n01111100\n00010000\n01111100\n00010000\n00010000\n00000000\n00000000\nCHAR 166\n00000000\n00000000\n00010000\n00010000\n00010000\n00010000\n00000000\n00010000\n00010000\n00010000\n00010000\n00000000\n00000000\nCHAR 167\n00000000\n00011000\n00100100\n00100000\n00011000\n00100100\n00100100\n00011000\n00000100\n00100100\n00011000\n00000000\n00000000\nCHAR 168\n00000000\n00100100\n00100100\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 169\n00000000\n00111000\n01000100\n10010010\n10101010\n10100010\n10101010\n10010010\n01000100\n00111000\n00000000\n00000000\n00000000\nCHAR 170\n00000000\n00000000\n00111000\n00000100\n00111100\n01000100\n00111100\n00000000\n01111100\n00000000\n00000000\n00000000\n00000000\nCHAR 171\n00000000\n00000000\n00000000\n00010010\n00100100\n01001000\n10010000\n01001000\n00100100\n00010010\n00000000\n00000000\n00000000\nCHAR 172\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n01111110\n00000010\n00000010\n00000010\n00000000\n00000000\n00000000\nCHAR 173\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 174\n00000000\n00111000\n01000100\n10010010\n10101010\n10101010\n10110010\n10101010\n01000100\n00111000\n00000000\n00000000\n00000000\nCHAR 175\n00000000\n00000000\n01111110\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 176\n00000000\n00000000\n00011000\n00100100\n00100100\n00011000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 177\n00000000\n00000000\n00000000\n00010000\n00010000\n01111100\n00010000\n00010000\n00000000\n01111100\n00000000\n00000000\n00000000\nCHAR 178\n00000000\n00110000\n01001000\n00001000\n00110000\n01000000\n01111000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 179\n00000000\n00110000\n01001000\n00010000\n00001000\n01001000\n00110000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 180\n00000000\n00001000\n00010000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 181\n00000000\n00000000\n00000000\n00000000\n00000000\n01000010\n01000010\n01000010\n01000010\n01100110\n01011010\n01000000\n00000000\nCHAR 182\n00000000\n00000000\n00111110\n01110100\n01110100\n01110100\n00110100\n00010100\n00010100\n00010100\n00010100\n00000000\n00000000\nCHAR 183\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00011000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 184\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00001000\n00011000\nCHAR 185\n00000000\n00100000\n01100000\n00100000\n00100000\n00100000\n01110000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 186\n00000000\n00000000\n00110000\n01001000\n01001000\n00110000\n00000000\n01111000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 187\n00000000\n00000000\n00000000\n10010000\n01001000\n00100100\n00010010\n00100100\n01001000\n10010000\n00000000\n00000000\n00000000\nCHAR 188\n00000000\n01000000\n11000000\n01000000\n01000000\n01000010\n11100110\n00001010\n00010010\n00011010\n00000110\n00000000\n00000000\nCHAR 189\n00000000\n01000000\n11000000\n01000000\n01000000\n01001100\n11110010\n00000010\n00001100\n00010000\n00011110\n00000000\n00000000\nCHAR 190\n00000000\n01100000\n10010000\n00100000\n00010000\n10010010\n01100110\n00001010\n00010010\n00011010\n00000110\n00000000\n00000000\nCHAR 191\n00000000\n00000000\n00010000\n00000000\n00010000\n00010000\n00100000\n01000000\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 192\n00000000\n00010000\n00001000\n00000000\n00011000\n00100100\n01000010\n01000010\n01111110\n01000010\n01000010\n00000000\n00000000\nCHAR 193\n00000000\n00001000\n00010000\n00000000\n00011000\n00100100\n01000010\n01000010\n01111110\n01000010\n01000010\n00000000\n00000000\nCHAR 194\n00000000\n00011000\n00100100\n00000000\n00011000\n00100100\n01000010\n01000010\n01111110\n01000010\n01000010\n00000000\n00000000\nCHAR 195\n00000000\n00110010\n01001100\n00000000\n00011000\n00100100\n01000010\n01000010\n01111110\n01000010\n01000010\n00000000\n00000000\nCHAR 196\n00000000\n00100100\n00100100\n00000000\n00011000\n00100100\n01000010\n01000010\n01111110\n01000010\n01000010\n00000000\n00000000\nCHAR 197\n00000000\n00011000\n00100100\n00011000\n00011000\n00100100\n01000010\n01000010\n01111110\n01000010\n01000010\n00000000\n00000000\nCHAR 198\n00000000\n00000000\n01101110\n10010000\n10010000\n10010000\n10011100\n11110000\n10010000\n10010000\n10011110\n00000000\n00000000\nCHAR 199\n00000000\n00000000\n00111100\n01000010\n01000000\n01000000\n01000000\n01000000\n01000000\n01000010\n00111100\n00001000\n00010000\nCHAR 200\n00000000\n00010000\n00001000\n00000000\n01111110\n01000000\n01000000\n01111000\n01000000\n01000000\n01111110\n00000000\n00000000\nCHAR 201\n00000000\n00001000\n00010000\n00000000\n01111110\n01000000\n01000000\n01111000\n01000000\n01000000\n01111110\n00000000\n00000000\nCHAR 202\n00000000\n00011000\n00100100\n00000000\n01111110\n01000000\n01000000\n01111000\n01000000\n01000000\n01111110\n00000000\n00000000\nCHAR 203\n00000000\n00100100\n00100100\n00000000\n01111110\n01000000\n01000000\n01111000\n01000000\n01000000\n01111110\n00000000\n00000000\nCHAR 204\n00000000\n00100000\n00010000\n00000000\n01111100\n00010000\n00010000\n00010000\n00010000\n00010000\n01111100\n00000000\n00000000\nCHAR 205\n00000000\n00001000\n00010000\n00000000\n01111100\n00010000\n00010000\n00010000\n00010000\n00010000\n01111100\n00000000\n00000000\nCHAR 206\n00000000\n00011000\n00100100\n00000000\n01111100\n00010000\n00010000\n00010000\n00010000\n00010000\n01111100\n00000000\n00000000\nCHAR 207\n00000000\n01000100\n01000100\n00000000\n01111100\n00010000\n00010000\n00010000\n00010000\n00010000\n01111100\n00000000\n00000000\nCHAR 208\n00000000\n00000000\n01111000\n01000100\n01000010\n01000010\n11100010\n01000010\n01000010\n01000100\n01111000\n00000000\n00000000\nCHAR 209\n00000000\n01100100\n10011000\n00000000\n10000010\n11000010\n10100010\n10010010\n10001010\n10000110\n10000010\n00000000\n00000000\nCHAR 210\n00000000\n00100000\n00010000\n00000000\n01111100\n10000010\n10000010\n10000010\n10000010\n10000010\n01111100\n00000000\n00000000\nCHAR 211\n00000000\n00001000\n00010000\n00000000\n01111100\n10000010\n10000010\n10000010\n10000010\n10000010\n01111100\n00000000\n00000000\nCHAR 212\n00000000\n00011000\n00100100\n00000000\n01111100\n10000010\n10000010\n10000010\n10000010\n10000010\n01111100\n00000000\n00000000\nCHAR 213\n00000000\n01100100\n10011000\n00000000\n01111100\n10000010\n10000010\n10000010\n10000010\n10000010\n01111100\n00000000\n00000000\nCHAR 214\n00000000\n01000100\n01000100\n00000000\n01111100\n10000010\n10000010\n10000010\n10000010\n10000010\n01111100\n00000000\n00000000\nCHAR 215\n00000000\n00000000\n00000000\n00000000\n01000010\n00100100\n00011000\n00011000\n00100100\n01000010\n00000000\n00000000\n00000000\nCHAR 216\n00000000\n00000010\n00111100\n01000110\n01001010\n01001010\n01010010\n01010010\n01010010\n01100010\n00111100\n01000000\n00000000\nCHAR 217\n00000000\n00100000\n00010000\n00000000\n01000010\n01000010\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 218\n00000000\n00001000\n00010000\n00000000\n01000010\n01000010\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 219\n00000000\n00011000\n00100100\n00000000\n01000010\n01000010\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 220\n00000000\n00100100\n00100100\n00000000\n01000010\n01000010\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 221\n00000000\n00001000\n00010000\n00000000\n01000100\n01000100\n00101000\n00010000\n00010000\n00010000\n00010000\n00000000\n00000000\nCHAR 222\n00000000\n00000000\n01000000\n01111100\n01000010\n01000010\n01000010\n01111100\n01000000\n01000000\n01000000\n00000000\n00000000\nCHAR 223\n00000000\n00000000\n00111000\n01000100\n01000100\n01001000\n01010000\n01001100\n01000010\n01000010\n01011100\n00000000\n00000000\nCHAR 224\n00000000\n00000000\n00010000\n00001000\n00000000\n00111100\n00000010\n00111110\n01000010\n01000110\n00111010\n00000000\n00000000\nCHAR 225\n00000000\n00000000\n00000100\n00001000\n00000000\n00111100\n00000010\n00111110\n01000010\n01000110\n00111010\n00000000\n00000000\nCHAR 226\n00000000\n00000000\n00011000\n00100100\n00000000\n00111100\n00000010\n00111110\n01000010\n01000110\n00111010\n00000000\n00000000\nCHAR 227\n00000000\n00000000\n00110010\n01001100\n00000000\n00111100\n00000010\n00111110\n01000010\n01000110\n00111010\n00000000\n00000000\nCHAR 228\n00000000\n00000000\n00100100\n00100100\n00000000\n00111100\n00000010\n00111110\n01000010\n01000110\n00111010\n00000000\n00000000\nCHAR 229\n00000000\n00011000\n00100100\n00011000\n00000000\n00111100\n00000010\n00111110\n01000010\n01000110\n00111010\n00000000\n00000000\nCHAR 230\n00000000\n00000000\n00000000\n00000000\n00000000\n01101100\n00010010\n01111100\n10010000\n10010010\n01101100\n00000000\n00000000\nCHAR 231\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n01000010\n01000000\n01000000\n01000010\n00111100\n00001000\n00010000\nCHAR 232\n00000000\n00000000\n00010000\n00001000\n00000000\n00111100\n01000010\n01111110\n01000000\n01000010\n00111100\n00000000\n00000000\nCHAR 233\n00000000\n00000000\n00001000\n00010000\n00000000\n00111100\n01000010\n01111110\n01000000\n01000010\n00111100\n00000000\n00000000\nCHAR 234\n00000000\n00000000\n00011000\n00100100\n00000000\n00111100\n01000010\n01111110\n01000000\n01000010\n00111100\n00000000\n00000000\nCHAR 235\n00000000\n00000000\n00100100\n00100100\n00000000\n00111100\n01000010\n01111110\n01000000\n01000010\n00111100\n00000000\n00000000\nCHAR 236\n00000000\n00000000\n00100000\n00010000\n00000000\n00110000\n00010000\n00010000\n00010000\n00010000\n01111100\n00000000\n00000000\nCHAR 237\n00000000\n00000000\n00010000\n00100000\n00000000\n00110000\n00010000\n00010000\n00010000\n00010000\n01111100\n00000000\n00000000\nCHAR 238\n00000000\n00000000\n00110000\n01001000\n00000000\n00110000\n00010000\n00010000\n00010000\n00010000\n01111100\n00000000\n00000000\nCHAR 239\n00000000\n00000000\n01001000\n01001000\n00000000\n00110000\n00010000\n00010000\n00010000\n00010000\n01111100\n00000000\n00000000\nCHAR 240\n00000000\n00100100\n00011000\n00101000\n00000100\n00111100\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 241\n00000000\n00000000\n00110010\n01001100\n00000000\n01011100\n01100010\n01000010\n01000010\n01000010\n01000010\n00000000\n00000000\nCHAR 242\n00000000\n00000000\n00100000\n00010000\n00000000\n00111100\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 243\n00000000\n00000000\n00001000\n00010000\n00000000\n00111100\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 244\n00000000\n00000000\n00011000\n00100100\n00000000\n00111100\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 245\n00000000\n00000000\n00110010\n01001100\n00000000\n00111100\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 246\n00000000\n00000000\n00100100\n00100100\n00000000\n00111100\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 247\n00000000\n00000000\n00000000\n00010000\n00010000\n00000000\n01111100\n00000000\n00010000\n00010000\n00000000\n00000000\n00000000\nCHAR 248\n00000000\n00000000\n00000000\n00000000\n00000010\n00111100\n01000110\n01001010\n01010010\n01100010\n00111100\n01000000\n00000000\nCHAR 249\n00000000\n00000000\n00100000\n00010000\n00000000\n01000100\n01000100\n01000100\n01000100\n01000100\n00111010\n00000000\n00000000\nCHAR 250\n00000000\n00000000\n00001000\n00010000\n00000000\n01000100\n01000100\n01000100\n01000100\n01000100\n00111010\n00000000\n00000000\nCHAR 251\n00000000\n00000000\n00011000\n00100100\n00000000\n01000100\n01000100\n01000100\n01000100\n01000100\n00111010\n00000000\n00000000\nCHAR 252\n00000000\n00000000\n00101000\n00101000\n00000000\n01000100\n01000100\n01000100\n01000100\n01000100\n00111010\n00000000\n00000000\nCHAR 253\n00000000\n00000000\n00001000\n00010000\n00000000\n01000010\n01000010\n01000010\n01000110\n00111010\n00000010\n01000010\n00111100\nCHAR 254\n00000000\n00000000\n00000000\n01000000\n01000000\n01011100\n01100010\n01000010\n01000010\n01100010\n01011100\n01000000\n01000000\nCHAR 255\n00000000\n00000000\n00100100\n00100100\n00000000\n01000010\n01000010\n01000010\n01000110\n00111010\n00000010\n01000010\n00111100\nCHAR 256\n00000000\n01111110\n00000000\n00011000\n00100100\n01000010\n01000010\n01111110\n01000010\n01000010\n01000010\n00000000\n00000000\nCHAR 257\n00000000\n00000000\n00000000\n01111110\n00000000\n00111100\n00000010\n00111110\n01000010\n01000110\n00111010\n00000000\n00000000\nCHAR 258\n00000000\n01000010\n00111100\n00000000\n00011000\n00100100\n01000010\n01000010\n01111110\n01000010\n01000010\n00000000\n00000000\nCHAR 259\n00000000\n00000000\n01000010\n00111100\n00000000\n00111100\n00000010\n00111110\n01000010\n01000110\n00111010\n00000000\n00000000\nCHAR 260\n00000000\n00000000\n00011000\n00100100\n01000010\n01000010\n01000010\n01111110\n01000010\n01000010\n01000010\n00000100\n00000011\nCHAR 261\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n00000010\n00111110\n01000010\n01000110\n00111010\n00000100\n00000011\nCHAR 262\n00000000\n00001000\n00010000\n00000000\n00111100\n01000010\n01000000\n01000000\n01000000\n01000010\n00111100\n00000000\n00000000\nCHAR 263\n00000000\n00000000\n00001000\n00010000\n00000000\n00111100\n01000010\n01000000\n01000000\n01000010\n00111100\n00000000\n00000000\nCHAR 264\n00000000\n00011000\n00100100\n00000000\n00111100\n01000010\n01000000\n01000000\n01000000\n01000010\n00111100\n00000000\n00000000\nCHAR 265\n00000000\n00000000\n00011000\n00100100\n00000000\n00111100\n01000010\n01000000\n01000000\n01000010\n00111100\n00000000\n00000000\nCHAR 266\n00000000\n00011000\n00000000\n00111100\n01000010\n01000000\n01000000\n01000000\n01000000\n01000010\n00111100\n00000000\n00000000\nCHAR 267\n00000000\n00000000\n00000000\n00011000\n00000000\n00111100\n01000010\n01000000\n01000000\n01000010\n00111100\n00000000\n00000000\nCHAR 268\n00000000\n00100100\n00011000\n00000000\n00111100\n01000010\n01000000\n01000000\n01000000\n01000010\n00111100\n00000000\n00000000\nCHAR 269\n00000000\n00000000\n00100100\n00011000\n00000000\n00111100\n01000010\n01000000\n01000000\n01000010\n00111100\n00000000\n00000000\nCHAR 270\n00000000\n00100100\n00011000\n00000000\n01111000\n01000100\n01000010\n01000010\n01000010\n01000100\n01111000\n00000000\n00000000\nCHAR 271\n00000000\n00100100\n00011000\n00000010\n00000010\n00111010\n01000110\n01000010\n01000010\n01000110\n00111010\n00000000\n00000000\nCHAR 272\n00000000\n00000000\n01111000\n01000100\n01000010\n01000010\n11110010\n01000010\n01000010\n01000100\n01111000\n00000000\n00000000\nCHAR 273\n00000000\n00000000\n00000100\n00011110\n00000100\n01110100\n10001100\n10000100\n10000100\n10001100\n01110100\n00000000\n00000000\nCHAR 274\n00000000\n01111110\n00000000\n01111110\n01000000\n01000000\n01111000\n01000000\n01000000\n01000000\n01111110\n00000000\n00000000\nCHAR 275\n00000000\n00000000\n00000000\n01111110\n00000000\n00111100\n01000010\n01111110\n01000000\n01000010\n00111100\n00000000\n00000000\nCHAR 276\n00000000\n01000010\n00111100\n00000000\n01111110\n01000000\n01000000\n01111000\n01000000\n01000000\n01111110\n00000000\n00000000\nCHAR 277\n00000000\n00000000\n01000010\n00111100\n00000000\n00111100\n01000010\n01111110\n01000000\n01000010\n00111100\n00000000\n00000000\nCHAR 278\n00000000\n00011000\n00000000\n01111110\n01000000\n01000000\n01111000\n01000000\n01000000\n01000000\n01111110\n00000000\n00000000\nCHAR 279\n00000000\n00000000\n00000000\n00011000\n00000000\n00111100\n01000010\n01111110\n01000000\n01000010\n00111100\n00000000\n00000000\nCHAR 280\n00000000\n00000000\n01111110\n01000000\n01000000\n01000000\n01111000\n01000000\n01000000\n01000000\n01111110\n00010000\n00011100\nCHAR 281\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n01000010\n01111110\n01000000\n01000010\n00111100\n00010000\n00011100\nCHAR 282\n00000000\n00100100\n00011000\n00000000\n01111110\n01000000\n01000000\n01111000\n01000000\n01000000\n01111110\n00000000\n00000000\nCHAR 283\n00000000\n00000000\n00100100\n00011000\n00000000\n00111100\n01000010\n01111110\n01000000\n01000010\n00111100\n00000000\n00000000\nCHAR 284\n00000000\n00011000\n00100100\n00000000\n00111100\n01000010\n01000000\n01001110\n01000010\n01000110\n00111010\n00000000\n00000000\nCHAR 285\n00000000\n00000000\n00011000\n00100100\n00000000\n00111010\n01000100\n01000100\n00111000\n01000000\n00111100\n01000010\n00111100\nCHAR 286\n00000000\n01000010\n00111100\n00000000\n00111100\n01000010\n01000000\n01001110\n01000010\n01000110\n00111010\n00000000\n00000000\nCHAR 287\n00000000\n00000000\n01000010\n00111100\n00000000\n00111010\n01000100\n01000100\n00111000\n01000000\n00111100\n01000010\n00111100\nCHAR 288\n00000000\n00011000\n00000000\n00111100\n01000010\n01000000\n01000000\n01001110\n01000010\n01000110\n00111010\n00000000\n00000000\nCHAR 289\n00000000\n00000000\n00000000\n00011000\n00000000\n00111010\n01000100\n01000100\n00111000\n01000000\n00111100\n01000010\n00111100\nCHAR 290\n00000000\n00000000\n00111100\n01000010\n01000000\n01000000\n01000000\n01001110\n01000010\n01000110\n00111010\n00001000\n00010000\nCHAR 291\n00000000\n00001000\n00010000\n00011000\n00000000\n00111010\n01000100\n01000100\n00111000\n01000000\n00111100\n01000010\n00111100\nCHAR 292\n00000000\n00011000\n00100100\n00000000\n01000010\n01000010\n01000010\n01111110\n01000010\n01000010\n01000010\n00000000\n00000000\nCHAR 293\n00000000\n00001100\n00010010\n01000000\n01000000\n01000000\n01011100\n01100010\n01000010\n01000010\n01000010\n00000000\n00000000\nCHAR 294\n00000000\n00000000\n01000010\n01000010\n11111111\n01000010\n01111110\n01000010\n01000010\n01000010\n01000010\n00000000\n00000000\nCHAR 295\n00000000\n00000000\n01000000\n11111000\n01000000\n01011100\n01100010\n01000010\n01000010\n01000010\n01000010\n00000000\n00000000\nCHAR 296\n00000000\n01100100\n10011000\n00000000\n01111100\n00010000\n00010000\n00010000\n00010000\n00010000\n01111100\n00000000\n00000000\nCHAR 297\n00000000\n00000000\n01100100\n10011000\n00000000\n00110000\n00010000\n00010000\n00010000\n00010000\n01111100\n00000000\n00000000\nCHAR 298\n00000000\n01111100\n00000000\n01111100\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n01111100\n00000000\n00000000\nCHAR 299\n00000000\n00000000\n00000000\n01111100\n00000000\n00110000\n00010000\n00010000\n00010000\n00010000\n01111100\n00000000\n00000000\nCHAR 300\n00000000\n01000100\n00111000\n00000000\n01111100\n00010000\n00010000\n00010000\n00010000\n00010000\n01111100\n00000000\n00000000\nCHAR 301\n00000000\n00000000\n01000100\n00111000\n00000000\n00110000\n00010000\n00010000\n00010000\n00010000\n01111100\n00000000\n00000000\nCHAR 302\n00000000\n00000000\n01111100\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n01111100\n00010000\n00011000\nCHAR 303\n00000000\n00000000\n00000000\n00110000\n00000000\n00110000\n00010000\n00010000\n00010000\n00010000\n01111100\n00010000\n00011000\nCHAR 304\n00000000\n00010000\n00000000\n01111100\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n01111100\n00000000\n00000000\nCHAR 305\n00000000\n00000000\n00000000\n00000000\n00000000\n00110000\n00010000\n00010000\n00010000\n00010000\n01111100\n00000000\n00000000\nCHAR 306\n00000000\n00000000\n11101110\n01000010\n01000010\n01000010\n01000010\n01000010\n01000010\n01010010\n11101100\n00000000\n00000000\nCHAR 307\n00000000\n00000000\n00000000\n01000010\n00000000\n11000110\n01000010\n01000010\n01000010\n01000010\n11110010\n00010010\n00001100\nCHAR 308\n00000000\n00001100\n00010010\n00000000\n00011110\n00000100\n00000100\n00000100\n00000100\n01000100\n00111000\n00000000\n00000000\nCHAR 309\n00000000\n00000000\n00001100\n00010010\n00000000\n00001100\n00000100\n00000100\n00000100\n00000100\n01000100\n01000100\n00111000\nCHAR 310\n00000000\n00000000\n01000010\n01000100\n01001000\n01010000\n01100000\n01010000\n01001000\n01000100\n01000010\n00100000\n11000000\nCHAR 311\n00000000\n00000000\n01000000\n01000000\n01000000\n01000100\n01001000\n01110000\n01001000\n01000100\n01000010\n00100000\n11000000\nCHAR 312\n00000000\n00000000\n00000000\n00000000\n00000000\n01000010\n01000100\n01111000\n01000100\n01000010\n01000010\n00000000\n00000000\nCHAR 313\n00000000\n00001000\n00010000\n01000000\n01000000\n01000000\n01000000\n01000000\n01000000\n01000000\n01111110\n00000000\n00000000\nCHAR 314\n00001000\n00010000\n00000000\n00110000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n01111100\n00000000\n00000000\nCHAR 315\n00000000\n00000000\n01000000\n01000000\n01000000\n01000000\n01000000\n01000000\n01000000\n01000000\n01111110\n00001000\n00010000\nCHAR 316\n00000000\n00000000\n00110000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n01111100\n00010000\n00100000\nCHAR 317\n01001000\n00110000\n00000000\n01000000\n01000000\n01000000\n01000000\n01000000\n01000000\n01000000\n01111110\n00000000\n00000000\nCHAR 318\n01001000\n00110000\n00000000\n00110000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n01111100\n00000000\n00000000\nCHAR 319\n00000000\n00000000\n01000000\n01000000\n01000000\n01001000\n01001000\n01000000\n01000000\n01000000\n01111110\n00000000\n00000000\nCHAR 320\n00000000\n00000000\n00110000\n00010000\n00010000\n00010010\n00010010\n00010000\n00010000\n00010000\n01111100\n00000000\n00000000\nCHAR 321\n00000000\n00000000\n01000000\n01000000\n01000000\n01100000\n11000000\n01000000\n01000000\n01000000\n01111110\n00000000\n00000000\nCHAR 322\n00000000\n00000000\n00110000\n00010000\n00010000\n00011000\n00110000\n00010000\n00010000\n00010000\n01111100\n00000000\n00000000\nCHAR 323\n00000000\n00001000\n00010000\n01000010\n01000010\n01100010\n01010010\n01001010\n01000110\n01000010\n01000010\n00000000\n00000000\nCHAR 324\n00000000\n00000000\n00001000\n00010000\n00000000\n01011100\n01100010\n01000010\n01000010\n01000010\n01000010\n00000000\n00000000\nCHAR 325\n00000000\n00000000\n01000010\n01000010\n01100010\n01010010\n01001010\n01000110\n01000010\n01000010\n01000010\n00100000\n01000000\nCHAR 326\n00000000\n00000000\n00000000\n00000000\n00000000\n01011100\n01100010\n01000010\n01000010\n01000010\n01000010\n00100000\n01000000\nCHAR 327\n00000000\n00100100\n00011000\n01000010\n01000010\n01100010\n01010010\n01001010\n01000110\n01000010\n01000010\n00000000\n00000000\nCHAR 328\n00000000\n00000000\n00100100\n00011000\n00000000\n01011100\n01100010\n01000010\n01000010\n01000010\n01000010\n00000000\n00000000\nCHAR 329\n00000000\n11000000\n01000000\n10000000\n00000000\n01011100\n01100010\n01000010\n01000010\n01000010\n01000010\n00000000\n00000000\nCHAR 330\n00000000\n00000000\n01000010\n01000010\n01100010\n01010010\n01001010\n01000110\n01000010\n01000010\n01000010\n00000010\n00001100\nCHAR 331\n00000000\n00000000\n00000000\n00000000\n00000000\n01011100\n01100010\n01000010\n01000010\n01000010\n01000010\n00000010\n00001100\nCHAR 332\n00000000\n00000000\n01111100\n00000000\n01111100\n10000010\n10000010\n10000010\n10000010\n10000010\n01111100\n00000000\n00000000\nCHAR 333\n00000000\n00000000\n00000000\n01111110\n00000000\n00111100\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 334\n00000000\n01000100\n00111000\n00000000\n01111100\n10000010\n10000010\n10000010\n10000010\n10000010\n01111100\n00000000\n00000000\nCHAR 335\n00000000\n00000000\n01000010\n00111100\n00000000\n00111100\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 336\n00000000\n00100100\n01001000\n00000000\n01111100\n10000010\n10000010\n10000010\n10000010\n10000010\n01111100\n00000000\n00000000\nCHAR 337\n00000000\n00000000\n00010010\n00100100\n00000000\n00111100\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 338\n00000000\n00000000\n01111110\n10010000\n10010000\n10010000\n10011100\n10010000\n10010000\n10010000\n01111110\n00000000\n00000000\nCHAR 339\n00000000\n00000000\n00000000\n00000000\n00000000\n01101100\n10010010\n10011100\n10010000\n10010010\n01101100\n00000000\n00000000\nCHAR 340\n00000000\n00001000\n00010000\n00000000\n01111100\n01000010\n01000010\n01111100\n01001000\n01000100\n01000010\n00000000\n00000000\nCHAR 341\n00000000\n00000000\n00001000\n00010000\n00000000\n01011100\n00100010\n00100000\n00100000\n00100000\n00100000\n00000000\n00000000\nCHAR 342\n00000000\n00000000\n01111100\n01000010\n01000010\n01000010\n01111100\n01010000\n01001000\n01000100\n01000010\n00100000\n01000000\nCHAR 343\n00000000\n00000000\n00000000\n00000000\n00000000\n01011100\n00100010\n00100000\n00100000\n00100000\n00100000\n00010000\n00100000\nCHAR 344\n00000000\n00100100\n00011000\n00000000\n01111100\n01000010\n01000010\n01111100\n01001000\n01000100\n01000010\n00000000\n00000000\nCHAR 345\n00000000\n00000000\n00100100\n00011000\n00000000\n01011100\n00100010\n00100000\n00100000\n00100000\n00100000\n00000000\n00000000\nCHAR 346\n00000000\n00001000\n00010000\n00000000\n00111100\n01000010\n01000000\n00111100\n00000010\n01000010\n00111100\n00000000\n00000000\nCHAR 347\n00000000\n00000000\n00001000\n00010000\n00000000\n00111100\n01000010\n00110000\n00001100\n01000010\n00111100\n00000000\n00000000\nCHAR 348\n00000000\n00011000\n00100100\n00000000\n00111100\n01000010\n01000000\n00111100\n00000010\n01000010\n00111100\n00000000\n00000000\nCHAR 349\n00000000\n00000000\n00011000\n00100100\n00000000\n00111100\n01000010\n00110000\n00001100\n01000010\n00111100\n00000000\n00000000\nCHAR 350\n00000000\n00000000\n00111100\n01000010\n01000000\n01000000\n00111100\n00000010\n00000010\n01000010\n00111100\n00001000\n00010000\nCHAR 351\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n01000010\n00110000\n00001100\n01000010\n00111100\n00001000\n00010000\nCHAR 352\n00000000\n00100100\n00011000\n00000000\n00111100\n01000010\n01000000\n00111100\n00000010\n01000010\n00111100\n00000000\n00000000\nCHAR 353\n00000000\n00000000\n00100100\n00011000\n00000000\n00111100\n01000010\n00110000\n00001100\n01000010\n00111100\n00000000\n00000000\nCHAR 354\n00000000\n00000000\n11111110\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00001000\n00010000\nCHAR 355\n00000000\n00000000\n00000000\n00100000\n00100000\n01111100\n00100000\n00100000\n00100000\n00100010\n00011100\n00001000\n00010000\nCHAR 356\n00000000\n00101000\n00010000\n00000000\n11111110\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00000000\n00000000\nCHAR 357\n00000000\n01001000\n00110000\n00000000\n00100000\n00100000\n01111100\n00100000\n00100000\n00100010\n00011100\n00000000\n00000000\nCHAR 358\n00000000\n00000000\n11111110\n00010000\n00010000\n01111100\n00010000\n00010000\n00010000\n00010000\n00010000\n00000000\n00000000\nCHAR 359\n00000000\n00000000\n00000000\n00100000\n01111100\n00100000\n01111100\n00100000\n00100000\n00100010\n00011100\n00000000\n00000000\nCHAR 360\n00000000\n00110010\n01001100\n00000000\n01000010\n01000010\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 361\n00000000\n00000000\n00110010\n01001100\n00000000\n01000100\n01000100\n01000100\n01000100\n01000100\n00111010\n00000000\n00000000\nCHAR 362\n00000000\n01111110\n00000000\n01000010\n01000010\n01000010\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 363\n00000000\n00000000\n00000000\n01111100\n00000000\n01000100\n01000100\n01000100\n01000100\n01000100\n00111010\n00000000\n00000000\nCHAR 364\n00000000\n01000010\n00111100\n00000000\n01000010\n01000010\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 365\n00000000\n00000000\n01000100\n00111000\n00000000\n01000100\n01000100\n01000100\n01000100\n01000100\n00111010\n00000000\n00000000\nCHAR 366\n00000000\n00011000\n00100100\n00011000\n01000010\n01000010\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 367\n00000000\n00011000\n00100100\n00011000\n00000000\n01000100\n01000100\n01000100\n01000100\n01000100\n00111010\n00000000\n00000000\nCHAR 368\n00000000\n00010010\n00100100\n00000000\n01000010\n01000010\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 369\n00000000\n00000000\n00010010\n00100100\n00000000\n01000100\n01000100\n01000100\n01000100\n01000100\n00111010\n00000000\n00000000\nCHAR 370\n00000000\n00000000\n01000010\n01000010\n01000010\n01000010\n01000010\n01000010\n01000010\n01000010\n00111100\n00001000\n00001100\nCHAR 371\n00000000\n00000000\n00000000\n00000000\n00000000\n01000100\n01000100\n01000100\n01000100\n01000100\n00111010\n00001000\n00001100\nCHAR 372\n00000000\n00010000\n00101000\n00000000\n10000010\n10000010\n10010010\n10010010\n10010010\n10101010\n01000100\n00000000\n00000000\nCHAR 373\n00000000\n00000000\n00010000\n00101000\n00000000\n10000010\n10000010\n10010010\n10010010\n10101010\n01000100\n00000000\n00000000\nCHAR 374\n00000000\n00011000\n00100100\n00000000\n10000010\n01000100\n00101000\n00010000\n00010000\n00010000\n00010000\n00000000\n00000000\nCHAR 375\n00000000\n00000000\n00011000\n00100100\n00000000\n01000010\n01000010\n01000010\n01000110\n00111010\n00000010\n01000010\n00111100\nCHAR 376\n00000000\n01000100\n01000100\n00000000\n10000010\n01000100\n00101000\n00010000\n00010000\n00010000\n00010000\n00000000\n00000000\nCHAR 377\n00000000\n00001000\n00010000\n00000000\n01111110\n00000100\n00001000\n00010000\n00100000\n01000000\n01111110\n00000000\n00000000\nCHAR 378\n00000000\n00000000\n00001000\n00010000\n00000000\n01111110\n00000100\n00001000\n00010000\n00100000\n01111110\n00000000\n00000000\nCHAR 379\n00000000\n00011000\n00000000\n01111110\n00000010\n00000100\n00001000\n00010000\n00100000\n01000000\n01111110\n00000000\n00000000\nCHAR 380\n00000000\n00000000\n00000000\n00011000\n00000000\n01111110\n00000100\n00001000\n00010000\n00100000\n01111110\n00000000\n00000000\nCHAR 381\n00000000\n00100100\n00011000\n00000000\n01111110\n00000100\n00001000\n00010000\n00100000\n01000000\n01111110\n00000000\n00000000\nCHAR 382\n00000000\n00000000\n00100100\n00011000\n00000000\n01111110\n00000100\n00001000\n00010000\n00100000\n01111110\n00000000\n00000000\nCHAR 383\n00000000\n00000000\n00011000\n00100100\n00100000\n00100000\n01100000\n00100000\n00100000\n00100000\n00100000\n00000000\n00000000\nCHAR 384\n00000000\n00000000\n01000000\n11110000\n01000000\n01011100\n01100010\n01000010\n01000010\n01100010\n01011100\n00000000\n00000000\nCHAR 385\n00000000\n00000000\n11111100\n10100010\n00100010\n00100010\n00111100\n00100010\n00100010\n00100010\n00111100\n00000000\n00000000\nCHAR 386\n00000000\n00000000\n11111100\n01000000\n01000000\n01000000\n01111100\n01000010\n01000010\n01000010\n11111100\n00000000\n00000000\nCHAR 387\n00000000\n00000000\n01111100\n01000000\n01000000\n01011100\n01100010\n01000010\n01000010\n01100010\n01011100\n00000000\n00000000\nCHAR 388\n00000000\n00000000\n00100000\n01100000\n00100000\n00101100\n00110010\n00100010\n00100010\n00110010\n00101100\n00000000\n00000000\nCHAR 389\n00000000\n00000000\n00100000\n01100000\n00100000\n00111100\n00100010\n00100010\n00100010\n00100010\n00011100\n00000000\n00000000\nCHAR 390\n00000000\n00000000\n00111100\n01000010\n00000010\n00000010\n00000010\n00000010\n00000010\n01000010\n00111100\n00000000\n00000000\nCHAR 391\n00000000\n00000010\n00111100\n01000100\n01000000\n01000000\n01000000\n01000000\n01000000\n01000100\n00111000\n00000000\n00000000\nCHAR 392\n00000000\n00000000\n00000000\n00000000\n00000000\n00111010\n01000100\n01000000\n01000000\n01000100\n00111000\n00000000\n00000000\nCHAR 393\n00000000\n00000000\n01111000\n01000100\n01000010\n01000010\n11110010\n01000010\n01000010\n01000100\n01111000\n00000000\n00000000\nCHAR 394\n00000000\n00000000\n01111100\n10100010\n00100010\n00100010\n00100010\n00100010\n00100010\n00100010\n00111100\n00000000\n00000000\nCHAR 395\n00000000\n00000000\n00111110\n00000010\n00000010\n00111010\n01000110\n01000010\n01000010\n01000110\n00111010\n00000000\n00000000\nCHAR 396\n00000000\n00000000\n01111000\n00001000\n00001000\n00101000\n01011000\n01001000\n01001000\n01011000\n00101000\n00000000\n00000000\nCHAR 397\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n01000010\n01000010\n01000010\n00100100\n00011000\n00000100\n00111000\nCHAR 398\n00000000\n00000000\n01111110\n00000010\n00000010\n00000010\n00011110\n00000010\n00000010\n00000010\n01111110\n00000000\n00000000\nCHAR 399\n00000000\n00000000\n00111100\n01000010\n00000010\n00000010\n00000010\n01111110\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 400\n00000000\n00000000\n00111100\n01000010\n01000000\n01000000\n00111000\n01000000\n01000000\n01000010\n00111100\n00000000\n00000000\nCHAR 401\n00000000\n00000000\n00111110\n00100000\n00100000\n00100000\n00111100\n00100000\n00100000\n00100000\n10100000\n01000000\n00000000\nCHAR 402\n00000000\n00000000\n00001100\n00010010\n00010000\n00010000\n00111100\n00010000\n00010000\n00010000\n00010000\n10010000\n01100000\nCHAR 403\n00000001\n00000010\n00111110\n01000010\n01000000\n01000000\n01000000\n01001110\n01000010\n01000110\n00111010\n00000000\n00000000\nCHAR 404\n00000000\n00000000\n10000010\n10000010\n01000100\n01000100\n00101000\n00101000\n00010000\n00101000\n00101000\n00010000\n00000000\nCHAR 405\n00000000\n00000000\n01000000\n01000000\n01000000\n01010010\n01101010\n01001010\n01001010\n01001010\n01000100\n00000000\n00000000\nCHAR 406\n00000000\n00000000\n00110000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00001100\n00000000\n00000000\nCHAR 407\n00000000\n00000000\n01111100\n00010000\n00010000\n00010000\n00111000\n00010000\n00010000\n00010000\n01111100\n00000000\n00000000\nCHAR 408\n00000000\n00000000\n01000100\n01001010\n01010000\n01100000\n01100000\n01010000\n01001000\n01000100\n01000010\n00000000\n00000000\nCHAR 409\n00000000\n00000000\n00110000\n01001000\n01000000\n01000100\n01001000\n01110000\n01001000\n01000100\n01000010\n00000000\n00000000\nCHAR 410\n00000000\n00000000\n00110000\n00010000\n00010000\n00111000\n00010000\n00010000\n00010000\n00010000\n01111100\n00000000\n00000000\nCHAR 411\n00000000\n00000000\n00100100\n01011000\n00110000\n01010000\n00010000\n00101000\n00101000\n01001010\n01000100\n00000000\n00000000\nCHAR 412\n00000000\n00000000\n10010010\n10010010\n10010010\n10010010\n10010010\n10010010\n10010010\n10010010\n01101110\n00000000\n00000000\nCHAR 413\n00000000\n00000000\n01000010\n01000010\n01100010\n01010010\n01001010\n01000110\n01000010\n01000010\n01000010\n01000000\n10000000\nCHAR 414\n00000000\n00000000\n00000000\n00000000\n00000000\n01011100\n01100010\n01000010\n01000010\n01000010\n01000010\n00000010\n00000010\nCHAR 415\n00000000\n00000000\n00111100\n01000010\n01000010\n01000010\n01111110\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 416\n00000000\n00000001\n00111101\n01000010\n01000010\n01000010\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 417\n00000000\n00000000\n00000000\n00000000\n00000001\n00111101\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 418\n00000000\n00000000\n00110110\n01001010\n01001010\n01001010\n01001010\n01001010\n01001010\n01001010\n00110010\n00000010\n00000000\nCHAR 419\n00000000\n00000000\n00000000\n00000000\n00000000\n00110110\n01001010\n01001010\n01001010\n01001010\n00110010\n00000010\n00000000\nCHAR 420\n00000000\n00000000\n01111100\n10100010\n10100010\n00100010\n00111100\n00100000\n00100000\n00100000\n00100000\n00000000\n00000000\nCHAR 421\n00000000\n00000000\n00000000\n00110000\n01000000\n01011000\n01100100\n01000100\n01000100\n01100100\n01011000\n01000000\n01000000\nCHAR 422\n00000000\n00000000\n01000000\n01000000\n01111100\n01000010\n01000010\n01111100\n01001000\n01000100\n01000100\n00000100\n00000010\nCHAR 423\n00000000\n00000000\n00111100\n01000010\n00000010\n00000010\n00111100\n01000000\n01000000\n01000010\n00111100\n00000000\n00000000\nCHAR 424\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n01000010\n00001100\n00110000\n01000010\n00111100\n00000000\n00000000\nCHAR 425\n00000000\n00000000\n01111110\n00100000\n00010000\n00001000\n00000100\n00001000\n00010000\n00100000\n01111110\n00000000\n00000000\nCHAR 426\n00000000\n00000000\n00110000\n01001000\n01001000\n00111000\n00001000\n00001000\n00001000\n00001000\n00001000\n00001010\n00000100\nCHAR 427\n00000000\n00000000\n00000000\n00100000\n00100000\n01111100\n00100000\n00100000\n00100000\n00100100\n00011010\n00000010\n00001100\nCHAR 428\n00000000\n00000000\n01111110\n10010000\n10010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00000000\n00000000\nCHAR 429\n00000000\n00011100\n00100010\n00100000\n00100000\n01111100\n00100000\n00100000\n00100000\n00100010\n00011100\n00000000\n00000000\nCHAR 430\n00000000\n00000000\n11111110\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010010\n00001100\nCHAR 431\n00000010\n00000010\n01000100\n01000100\n01000100\n01000100\n01000100\n01000100\n01000100\n01000100\n00111000\n00000000\n00000000\nCHAR 432\n00000000\n00000000\n00000000\n00000010\n00000010\n01000100\n01000100\n01000100\n01000100\n01000100\n00111010\n00000000\n00000000\nCHAR 433\n00000000\n00000000\n00100100\n00100100\n00100100\n01000010\n01000010\n01000010\n01000010\n00100100\n00011000\n00000000\n00000000\nCHAR 434\n00000000\n00000000\n01001000\n01000100\n01000100\n01000010\n01000010\n01000010\n01000010\n01000100\n00111000\n00000000\n00000000\nCHAR 435\n00000000\n00000000\n11000010\n00100010\n00010100\n00010100\n00001000\n00001000\n00001000\n00001000\n00001000\n00000000\n00000000\nCHAR 436\n00000000\n00000000\n00000010\n00000101\n00000100\n01000100\n01000100\n01000100\n01001100\n00110100\n00000100\n01000100\n00111000\nCHAR 437\n00000000\n00000000\n01111110\n00000010\n00000100\n00001000\n01111110\n00100000\n01000000\n01000000\n01111110\n00000000\n00000000\nCHAR 438\n00000000\n00000000\n00000000\n00000000\n00000000\n01111110\n00000100\n01111110\n00010000\n00100000\n01111110\n00000000\n00000000\nCHAR 439\n00000000\n00000000\n01111110\n00000010\n00000100\n00001000\n00011100\n00000010\n00000010\n01000010\n00111100\n00000000\n00000000\nCHAR 440\n00000000\n00000000\n01111110\n01000000\n00100000\n00010000\n00111000\n01000000\n01000000\n01000010\n00111100\n00000000\n00000000\nCHAR 441\n00000000\n00000000\n00000000\n00000000\n01111110\n01000000\n00100000\n00010000\n00111000\n01000000\n01000000\n01000010\n00111100\nCHAR 442\n00000000\n00000000\n01111110\n00000010\n00000100\n00001000\n00011100\n00000010\n00001100\n00110000\n01000010\n00111100\n00000000\nCHAR 443\n00000000\n00000000\n00111100\n01000010\n01000010\n00000010\n00000100\n01111110\n00100000\n01000000\n01111110\n00000000\n00000000\nCHAR 444\n00000000\n00000000\n01111110\n01000010\n01111000\n00000100\n00000010\n00000010\n00000010\n01000010\n00111100\n00000000\n00000000\nCHAR 445\n00000000\n00000000\n00000000\n00000000\n00000000\n01111000\n01000000\n01110000\n00001000\n01001000\n01110000\n00000000\n00000000\nCHAR 446\n00000000\n00000000\n00010000\n00010000\n01111100\n00010000\n00011000\n00000100\n00000100\n01000100\n00111000\n00000000\n00000000\nCHAR 447\n00000000\n00000000\n00000000\n00000000\n00000000\n01011000\n01100100\n01000100\n01001000\n01010000\n01100000\n01000000\n01000000\nCHAR 448\n00000000\n00000000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00000000\n00000000\nCHAR 449\n00000000\n00000000\n00101000\n00101000\n00101000\n00101000\n00101000\n00101000\n00101000\n00101000\n00101000\n00000000\n00000000\nCHAR 450\n00000000\n00000000\n00010000\n00010000\n00010000\n01111100\n00010000\n01111100\n00010000\n00010000\n00010000\n00000000\n00000000\nCHAR 451\n00000000\n00000000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00000000\n00010000\n00000000\n00000000\nCHAR 452\n00001010\n00000100\n11000000\n10101110\n10100010\n10100010\n10100100\n10100100\n10101000\n10101000\n11001110\n00000000\n00000000\nCHAR 453\n00000000\n00000000\n11001010\n10100100\n10100000\n10101110\n10100010\n10100100\n10101000\n10101000\n11001110\n00000000\n00000000\nCHAR 454\n00000000\n00000000\n00101010\n00100100\n00100000\n01101110\n10100010\n10100100\n10101000\n10101000\n01101110\n00000000\n00000000\nCHAR 455\n00000000\n00000000\n10001110\n10000010\n10000010\n10000010\n10000010\n10000010\n10000010\n10010010\n11101100\n00000000\n00000000\nCHAR 456\n00000000\n00000000\n10000000\n10000010\n10000000\n10000110\n10000010\n10000010\n10000010\n10000010\n11101010\n00001010\n00000100\nCHAR 457\n00000000\n00000000\n10000000\n10000010\n10000000\n10000110\n10000010\n10000010\n10000010\n10000010\n01101010\n00001010\n00000100\nCHAR 458\n00000000\n00000000\n10010111\n10010001\n11010001\n10110001\n10010001\n10010001\n10010001\n10010101\n10010010\n00000000\n00000000\nCHAR 459\n00000000\n00000000\n10010000\n10010001\n11010000\n10110011\n10010001\n10010001\n10010001\n10010001\n10010101\n00000101\n00000010\nCHAR 460\n00000000\n00000000\n00000000\n00000001\n00000000\n11100011\n10010001\n10010001\n10010001\n10010001\n10010101\n00000101\n00000010\nCHAR 461\n00000000\n00100100\n00011000\n00000000\n00011000\n00100100\n01000010\n01000010\n01111110\n01000010\n01000010\n00000000\n00000000\nCHAR 462\n00000000\n00000000\n00100100\n00011000\n00000000\n00111100\n00000010\n00111110\n01000010\n01000110\n00111010\n00000000\n00000000\nCHAR 463\n00000000\n00100100\n00011000\n00000000\n01111100\n00010000\n00010000\n00010000\n00010000\n00010000\n01111100\n00000000\n00000000\nCHAR 464\n00000000\n00000000\n01001000\n00110000\n00000000\n00110000\n00010000\n00010000\n00010000\n00010000\n01111100\n00000000\n00000000\nCHAR 465\n00000000\n00100100\n00011000\n00000000\n01111100\n10000010\n10000010\n10000010\n10000010\n10000010\n01111100\n00000000\n00000000\nCHAR 466\n00000000\n00000000\n00100100\n00011000\n00000000\n00111100\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 467\n00000000\n00100100\n00011000\n00000000\n01000010\n01000010\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 468\n00000000\n00000000\n00100100\n00011000\n00000000\n01000100\n01000100\n01000100\n01000100\n01000100\n00111010\n00000000\n00000000\nCHAR 469\n00111100\n00000000\n00100100\n00000000\n01000010\n01000010\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 470\n00000000\n00111100\n00000000\n00100100\n00000000\n01000100\n01000100\n01000100\n01000100\n01000100\n00111010\n00000000\n00000000\nCHAR 471\n00000100\n00001000\n00100010\n00000000\n01000010\n01000010\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 472\n00000000\n00001000\n00010000\n01000100\n00000000\n01000100\n01000100\n01000100\n01000100\n01000100\n00111010\n00000000\n00000000\nCHAR 473\n00010100\n00001000\n00100010\n00000000\n01000010\n01000010\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 474\n00000000\n00101000\n00010000\n01000100\n00000000\n01000100\n01000100\n01000100\n01000100\n01000100\n00111010\n00000000\n00000000\nCHAR 475\n00010000\n00001000\n00100010\n00000000\n01000010\n01000010\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 476\n00000000\n00100000\n00010000\n01000100\n00000000\n01000100\n01000100\n01000100\n01000100\n01000100\n00111010\n00000000\n00000000\nCHAR 477\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n01000010\n00000010\n01111110\n01000010\n00111100\n00000000\n00000000\nCHAR 478\n00111100\n00000000\n00100100\n00000000\n00011000\n00100100\n01000010\n01000010\n01111110\n01000010\n01000010\n00000000\n00000000\nCHAR 479\n00000000\n00111100\n00000000\n00100100\n00000000\n00111100\n00000010\n00111110\n01000010\n01000110\n00111010\n00000000\n00000000\nCHAR 480\n00111100\n00000000\n00011000\n00000000\n00011000\n00100100\n01000010\n01000010\n01111110\n01000010\n01000010\n00000000\n00000000\nCHAR 481\n00000000\n00111100\n00000000\n00011000\n00000000\n00111100\n00000010\n00111110\n01000010\n01000110\n00111010\n00000000\n00000000\nCHAR 482\n00000000\n00000000\n00111100\n00000000\n01111110\n10010000\n10010000\n11111100\n10010000\n10010000\n10011110\n00000000\n00000000\nCHAR 483\n00000000\n00000000\n00000000\n00111100\n00000000\n01101100\n00010010\n01111100\n10010000\n10010010\n01101100\n00000000\n00000000\nCHAR 484\n00000000\n00000000\n00111100\n01000010\n01000000\n01000000\n01001110\n01000010\n01000111\n01000010\n00111100\n00000000\n00000000\nCHAR 485\n00000000\n00000000\n00000000\n00000000\n00000000\n00111010\n01000100\n01000100\n00111000\n01000000\n00111100\n01000111\n00111100\nCHAR 486\n00000000\n00100100\n00011000\n00000000\n00111100\n01000010\n01000000\n01001110\n01000010\n01000110\n00111010\n00000000\n00000000\nCHAR 487\n00000000\n00000000\n00100100\n00011000\n00000000\n00111010\n01000100\n01000100\n00111000\n01000000\n00111100\n01000010\n00111100\nCHAR 488\n00000000\n00100100\n00011000\n00000000\n01000100\n01001000\n01010000\n01100000\n01010000\n01001000\n01000100\n00000000\n00000000\nCHAR 489\n00000000\n00100100\n00011000\n01000000\n01000000\n01000100\n01001000\n01110000\n01001000\n01000100\n01000010\n00000000\n00000000\nCHAR 490\n00000000\n00000000\n00111100\n01000010\n01000010\n01000010\n01000010\n01000010\n01000010\n01000010\n00111100\n00010000\n00001000\nCHAR 491\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n01000010\n01000010\n01000010\n01000010\n00111100\n00010000\n00001000\nCHAR 492\n00000000\n00000000\n00111100\n00000000\n00111100\n01000010\n01000010\n01000010\n01000010\n01000010\n00111100\n00010000\n00001000\nCHAR 493\n00000000\n00000000\n00000000\n00111100\n00000000\n00111100\n01000010\n01000010\n01000010\n01000010\n00111100\n00010000\n00001000\nCHAR 494\n00100100\n00011000\n00000000\n01111110\n00000100\n00001000\n00011100\n00000010\n00000010\n01000010\n00111100\n00000000\n00000000\nCHAR 495\n00000000\n00100100\n00011000\n00000000\n01111110\n00000010\n00000100\n00001000\n00011100\n00000010\n00000010\n01000010\n00111100\nCHAR 496\n00000000\n00000000\n00010010\n00001100\n00000000\n00001100\n00000100\n00000100\n00000100\n00000100\n01000100\n01000100\n00111000\nCHAR 497\n00000000\n00000000\n11001110\n10100010\n10100010\n10100100\n10100100\n10100100\n10101000\n10101000\n11001110\n00000000\n00000000\nCHAR 498\n00000000\n00000000\n11000000\n10100000\n10100000\n10101110\n10100010\n10100100\n10101000\n10101000\n11001110\n00000000\n00000000\nCHAR 499\n00000000\n00000000\n00100000\n00100000\n00100000\n01101110\n10100010\n10100100\n10101000\n10101000\n01101110\n00000000\n00000000\nCHAR 500\n00000000\n00001000\n00010000\n00000000\n00111100\n01000010\n01000000\n01001110\n01000010\n01000110\n00111010\n00000000\n00000000\nCHAR 501\n00000000\n00000000\n00001000\n00010000\n00000000\n00111010\n01000100\n01000100\n00111000\n01000000\n00111100\n01000010\n00111100\nCHAR 502\n00000000\n00000000\n01001000\n01001000\n01001000\n01001010\n01111010\n01001010\n01001010\n01001010\n01000100\n00000000\n00000000\nCHAR 503\n00000000\n00000000\n01011100\n01100010\n01000010\n01000100\n01001000\n01010000\n01100000\n01000000\n01000000\n00000000\n00000000\nCHAR 504\n00010000\n00001000\n01000010\n01000010\n01100010\n01010010\n01001010\n01000110\n01000010\n01000010\n01000010\n00000000\n00000000\nCHAR 505\n00000000\n00000000\n00010000\n00001000\n00000000\n01011100\n01100010\n01000010\n01000010\n01000010\n01000010\n00000000\n00000000\nCHAR 506\n00001000\n00010000\n00000000\n00011000\n00100100\n00011000\n00100100\n01000010\n01111110\n01000010\n01000010\n00000000\n00000000\nCHAR 507\n00001000\n00010000\n00011000\n00100100\n00011000\n00111100\n00000010\n00111110\n01000010\n01000110\n00111010\n00000000\n00000000\nCHAR 508\n00000000\n00001000\n00010000\n00000000\n01111110\n10010000\n10010000\n11111100\n10010000\n10010000\n10011110\n00000000\n00000000\nCHAR 509\n00000000\n00000000\n00001000\n00010000\n00000000\n01101100\n00010010\n01111100\n10010000\n10010010\n01101100\n00000000\n00000000\nCHAR 510\n00000000\n00001000\n00010000\n00000010\n00111100\n01000110\n01001010\n01010010\n01010010\n01100010\n00111100\n01000000\n00000000\nCHAR 511\n00000000\n00000000\n00001000\n00010000\n00000010\n00111100\n01000110\n01001010\n01010010\n01100010\n00111100\n01000000\n00000000\nCHAR 512\n00000000\n01001000\n00100100\n00000000\n00011000\n00100100\n01000010\n01000010\n01111110\n01000010\n01000010\n00000000\n00000000\nCHAR 513\n00000000\n00000000\n01001000\n00100100\n00000000\n00111100\n00000010\n00111110\n01000010\n01000110\n00111010\n00000000\n00000000\nCHAR 514\n00000000\n00111100\n01000010\n00000000\n00011000\n00100100\n01000010\n01000010\n01111110\n01000010\n01000010\n00000000\n00000000\nCHAR 515\n00000000\n00000000\n00111100\n01000010\n00000000\n00111100\n00000010\n00111110\n01000010\n01000110\n00111010\n00000000\n00000000\nCHAR 516\n00000000\n01001000\n00100100\n00000000\n01111110\n01000000\n01000000\n01111000\n01000000\n01000000\n01111110\n00000000\n00000000\nCHAR 517\n00000000\n00000000\n01001000\n00100100\n00000000\n00111100\n01000010\n01111110\n01000000\n01000010\n00111100\n00000000\n00000000\nCHAR 518\n00000000\n00111100\n01000010\n00000000\n01111110\n01000000\n01000000\n01111000\n01000000\n01000000\n01111110\n00000000\n00000000\nCHAR 519\n00000000\n00000000\n00111100\n01000010\n00000000\n00111100\n01000010\n01111110\n01000000\n01000010\n00111100\n00000000\n00000000\nCHAR 520\n00000000\n01001000\n00100100\n00000000\n01111100\n00010000\n00010000\n00010000\n00010000\n00010000\n01111100\n00000000\n00000000\nCHAR 521\n00000000\n00000000\n01001000\n00100100\n00000000\n00011000\n00001000\n00001000\n00001000\n00001000\n00111110\n00000000\n00000000\nCHAR 522\n00000000\n00111000\n01000100\n00000000\n01111100\n00010000\n00010000\n00010000\n00010000\n00010000\n01111100\n00000000\n00000000\nCHAR 523\n00000000\n00000000\n00111000\n01000100\n00000000\n00110000\n00010000\n00010000\n00010000\n00010000\n01111100\n00000000\n00000000\nCHAR 524\n00000000\n10010000\n01001000\n00000000\n01111100\n10000010\n10000010\n10000010\n10000010\n10000010\n01111100\n00000000\n00000000\nCHAR 525\n00000000\n00000000\n01001000\n00100100\n00000000\n00111100\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 526\n00000000\n00111000\n01000100\n00000000\n01111100\n10000010\n10000010\n10000010\n10000010\n10000010\n01111100\n00000000\n00000000\nCHAR 527\n00000000\n00000000\n00111100\n01000010\n00000000\n00111100\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 528\n00000000\n01001000\n00100100\n00000000\n01111100\n01000010\n01000010\n01111100\n01001000\n01000100\n01000010\n00000000\n00000000\nCHAR 529\n00000000\n00000000\n01001000\n00100100\n00000000\n01011100\n00100010\n00100000\n00100000\n00100000\n00100000\n00000000\n00000000\nCHAR 530\n00000000\n00111100\n01000010\n00000000\n01111100\n01000010\n01000010\n01111100\n01001000\n01000100\n01000010\n00000000\n00000000\nCHAR 531\n00000000\n00000000\n00111100\n01000010\n00000000\n01011100\n00100010\n00100000\n00100000\n00100000\n00100000\n00000000\n00000000\nCHAR 532\n00000000\n01001000\n00100100\n00000000\n01000010\n01000010\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 533\n00000000\n00000000\n01001000\n00100100\n00000000\n01000100\n01000100\n01000100\n01000100\n01000100\n00111010\n00000000\n00000000\nCHAR 534\n00000000\n00111100\n01000010\n00000000\n01000010\n01000010\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 535\n00000000\n00000000\n00111000\n01000100\n00000000\n01000100\n01000100\n01000100\n01000100\n01000100\n00111010\n00000000\n00000000\nCHAR 536\n00000000\n00000000\n00111100\n01000010\n01000000\n01000000\n00111100\n00000010\n00000010\n01000010\n00111100\n00001000\n00010000\nCHAR 537\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n01000010\n00110000\n00001100\n01000010\n00111100\n00001000\n00010000\nCHAR 538\n00000000\n00000000\n11111110\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00001000\n00010000\nCHAR 539\n00000000\n00000000\n00000000\n00100000\n00100000\n01111100\n00100000\n00100000\n00100000\n00100010\n00011100\n00001000\n00010000\nCHAR 540\n00000000\n00000000\n01111110\n00000010\n00000100\n00001000\n00011100\n00000010\n00000010\n01000010\n00111100\n00000000\n00000000\nCHAR 541\n00000000\n00000000\n00000000\n00000000\n01111110\n00000010\n00000100\n00001000\n00011100\n00000010\n00000010\n01000010\n00111100\nCHAR 542\n00000000\n00100100\n00011000\n01000010\n01000010\n01000010\n01111110\n01000010\n01000010\n01000010\n01000010\n00000000\n00000000\nCHAR 543\n00000000\n00100100\n00011000\n01000000\n01000000\n01011100\n01100010\n01000010\n01000010\n01000010\n01000010\n00000000\n00000000\nCHAR 544\n00000000\n00000000\n01011100\n01100010\n01000010\n01000010\n01000010\n01000010\n01000010\n01000010\n01000010\n00000010\n00000010\nCHAR 546\n00000000\n00000000\n00100100\n01000010\n01000010\n01000010\n00111100\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 547\n00000000\n00000000\n00010100\n00100010\n00100010\n00100010\n00011100\n00100010\n00100010\n00100010\n00011100\n00000000\n00000000\nCHAR 548\n00000000\n00000000\n01111110\n00000010\n00000100\n00001000\n00010000\n00100000\n01000000\n01000000\n01111110\n00000010\n00001100\nCHAR 549\n00000000\n00000000\n00000000\n00000000\n00000000\n01111110\n00000100\n00001000\n00010000\n00100000\n01111110\n00000010\n00001100\nCHAR 550\n00000000\n00011000\n00000000\n00011000\n00100100\n01000010\n01000010\n01111110\n01000010\n01000010\n01000010\n00000000\n00000000\nCHAR 551\n00000000\n00000000\n00000000\n00011000\n00000000\n00111100\n00000010\n00111110\n01000010\n01000110\n00111010\n00000000\n00000000\nCHAR 552\n00000000\n00000000\n01111110\n01000000\n01000000\n01000000\n01111000\n01000000\n01000000\n01000000\n01111110\n00000010\n00001100\nCHAR 553\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n01000010\n01111110\n01000000\n01000010\n00111110\n00000010\n00001100\nCHAR 554\n01111100\n00000000\n00101000\n00000000\n01111100\n10000010\n10000010\n10000010\n10000010\n10000010\n01111100\n00000000\n00000000\nCHAR 555\n00000000\n01111110\n00000000\n00100100\n00000000\n00111100\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 556\n01111100\n00110100\n01011000\n00000000\n01111100\n10000010\n10000010\n10000010\n10000010\n10000010\n01111100\n00000000\n00000000\nCHAR 557\n01111110\n00000000\n00010100\n00101000\n00000000\n00111100\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 558\n00010000\n00000000\n01111100\n10000010\n10000010\n10000010\n10000010\n10000010\n10000010\n10000010\n01111100\n00000000\n00000000\nCHAR 559\n00000000\n00000000\n00000000\n00011000\n00000000\n00111100\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 560\n01111100\n00000000\n00010000\n00000000\n01111100\n10000010\n10000010\n10000010\n10000010\n10000010\n01111100\n00000000\n00000000\nCHAR 561\n00000000\n01111110\n00000000\n00011000\n00000000\n00111100\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 562\n00000000\n01111100\n00000000\n10000010\n01000100\n00101000\n00010000\n00010000\n00010000\n00010000\n00010000\n00000000\n00000000\nCHAR 563\n00000000\n00000000\n00000000\n00111100\n00000000\n01000010\n01000010\n01000010\n01000110\n00111010\n00000010\n01000010\n00111100\nCHAR 592\n00000000\n00000000\n00000000\n00000000\n00000000\n01011100\n01100010\n01000010\n01111100\n01000000\n00111100\n00000000\n00000000\nCHAR 593\n00000000\n00000000\n00000000\n00000000\n00000000\n00111010\n01000110\n01000010\n01000010\n01000110\n00111010\n00000000\n00000000\nCHAR 594\n00000000\n00000000\n00000000\n00000000\n00000000\n01011100\n01100010\n01000010\n01000010\n01100010\n01011100\n00000000\n00000000\nCHAR 595\n00000000\n00111000\n01000100\n01000000\n01000000\n01011100\n01100010\n01000010\n01000010\n01100010\n01011100\n00000000\n00000000\nCHAR 596\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n01000010\n00000010\n00000010\n01000010\n00111100\n00000000\n00000000\nCHAR 597\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n01000010\n01000000\n01000100\n01001010\n00111100\n00010000\n00000000\nCHAR 598\n00000000\n00000000\n00000100\n00000100\n00000100\n00110100\n01001100\n01000100\n01000100\n01001100\n00110100\n00000100\n00000010\nCHAR 599\n00000000\n00000010\n00000101\n00000100\n00000100\n00110100\n01001100\n01000100\n01000100\n01001100\n00110100\n00000000\n00000000\nCHAR 600\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n01000010\n01111110\n00000010\n01000010\n00111100\n00000000\n00000000\nCHAR 601\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n01000010\n00000010\n01111110\n01000010\n00111100\n00000000\n00000000\nCHAR 602\n00000000\n00000000\n00000000\n00000000\n00000000\n00111000\n01000100\n00000110\n01111101\n01000101\n00111000\n00000000\n00000000\nCHAR 603\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n01000010\n00111000\n01000000\n01000010\n00111100\n00000000\n00000000\nCHAR 604\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n01000010\n00011100\n00000010\n01000010\n00111100\n00000000\n00000000\nCHAR 605\n00000000\n00000000\n00000000\n00000000\n00000000\n00111000\n01000110\n00011001\n00000100\n01000100\n00111000\n00000000\n00000000\nCHAR 606\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n01000010\n01011100\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 607\n00000000\n00000000\n00000000\n00000000\n00000000\n00000100\n00000100\n00000100\n00111110\n00000100\n00000100\n01000100\n00111000\nCHAR 608\n00000000\n00000000\n00000000\n00000000\n00000011\n00110100\n01001100\n01000100\n01001100\n00110100\n00000100\n01000100\n00111000\nCHAR 609\n00000000\n00000000\n00000000\n00000000\n00000000\n00111010\n01000110\n01000010\n01000110\n00111010\n00000010\n01000010\n00111100\nCHAR 610\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n01000010\n01000000\n01000110\n01000010\n00111100\n00000000\n00000000\nCHAR 611\n00000000\n00000000\n00000000\n00000000\n00000000\n01000100\n01000100\n00101000\n00101000\n00010000\n00101000\n00010000\n00000000\nCHAR 612\n00000000\n00000000\n00000000\n00000000\n00000000\n00100010\n01010101\n00001000\n00001000\n00010100\n00001000\n00000000\n00000000\nCHAR 613\n00000000\n00000000\n00000000\n00000000\n00000000\n01000010\n01000010\n01000010\n01000010\n01000110\n00111010\n00000010\n00000010\nCHAR 614\n00000000\n00111100\n01000000\n01000000\n01000000\n01011100\n01100010\n01000010\n01000010\n01000010\n01000010\n00000000\n00000000\nCHAR 615\n00000000\n00111100\n01000000\n01000000\n01000000\n01011100\n01100010\n01000010\n01000010\n01000010\n01000010\n00010010\n00001100\nCHAR 616\n00000000\n00000000\n00000000\n00010000\n00000000\n00110000\n00010000\n01111100\n00010000\n00010000\n01111100\n00000000\n00000000\nCHAR 617\n00000000\n00000000\n00000000\n00000000\n00000000\n00110000\n00010000\n00010000\n00010000\n00010000\n00001100\n00000000\n00000000\nCHAR 618\n00000000\n00000000\n00000000\n00000000\n00000000\n01111100\n00010000\n00010000\n00010000\n00010000\n01111100\n00000000\n00000000\nCHAR 619\n00000000\n00000000\n00110000\n00010000\n00010000\n00110100\n01011000\n00010000\n00010000\n00010000\n01111100\n00000000\n00000000\nCHAR 620\n00000000\n00000000\n00110000\n00010000\n00010000\n00110000\n01010000\n00111100\n00010000\n00010000\n01111100\n00000000\n00000000\nCHAR 621\n00000000\n00000000\n00110000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00001100\nCHAR 622\n00000000\n00000000\n01100000\n00100000\n00100000\n00111110\n00100010\n00100100\n00101100\n00100010\n01110010\n00000010\n00011100\nCHAR 623\n00000000\n00000000\n00000000\n00000000\n00000000\n10000010\n10010010\n10010010\n10010010\n10010010\n01101110\n00000000\n00000000\nCHAR 624\n00000000\n00000000\n00000000\n00000000\n00000000\n10000010\n10010010\n10010010\n10010010\n10010010\n01101110\n00000010\n00000010\nCHAR 625\n00000000\n00000000\n00000000\n00000000\n00000000\n11101100\n10010010\n10010010\n10010010\n10010010\n10000010\n00000010\n00001100\nCHAR 626\n00000000\n00000000\n00000000\n00000000\n00000000\n00101100\n00110010\n00100010\n00100010\n00100010\n00100010\n00100000\n11000000\nCHAR 627\n00000000\n00000000\n00000000\n00000000\n00000000\n01011000\n01100100\n01000100\n01000100\n01000100\n01000101\n00000010\n00000000\nCHAR 628\n00000000\n00000000\n00000000\n00000000\n00000000\n01000010\n01100010\n01010010\n01001010\n01000110\n01000010\n00000000\n00000000\nCHAR 629\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n01000010\n01111110\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 630\n00000000\n00000000\n00000000\n00000000\n00000000\n00111110\n01001000\n01001110\n01001000\n01001000\n00111110\n00000000\n00000000\nCHAR 631\n00000000\n00000000\n00000000\n00000000\n00000000\n01111100\n10000010\n10010010\n10010010\n10010010\n01101100\n00000000\n00000000\nCHAR 632\n00000000\n00000000\n00000000\n00010000\n00010000\n01111100\n10010010\n10010010\n10010010\n10010010\n01111100\n00010000\n00010000\nCHAR 633\n00000000\n00000000\n00000000\n00000000\n00000000\n00000100\n00000100\n00000100\n00000100\n01000100\n00111010\n00000000\n00000000\nCHAR 634\n00000000\n00000000\n00000100\n00000100\n00000100\n00000100\n00000100\n00000100\n00000100\n01000100\n00111010\n00000000\n00000000\nCHAR 635\n00000000\n00000000\n00000000\n00000000\n00000000\n00001000\n00001000\n00001000\n00001000\n01001000\n00111000\n00001000\n00000110\nCHAR 636\n00000000\n00000000\n00000000\n00000000\n00000000\n01011100\n00100010\n00100000\n00100000\n00100000\n00100000\n00100000\n00100000\nCHAR 637\n00000000\n00000000\n00000000\n00000000\n00000000\n01011100\n00100010\n00100000\n00100000\n00100000\n00100000\n00100100\n00011000\nCHAR 638\n00000000\n00000000\n00000000\n00000000\n00000000\n00011100\n00100010\n00100000\n00100000\n00100000\n00100000\n00000000\n00000000\nCHAR 639\n00000000\n00000000\n00000000\n00000000\n00000000\n00011100\n00100010\n00000010\n00000010\n00000010\n00000010\n00000000\n00000000\nCHAR 640\n00000000\n00000000\n00000000\n00000000\n00000000\n01111100\n01000010\n01000010\n01111100\n01000100\n01000010\n00000000\n00000000\nCHAR 641\n00000000\n00000000\n00000000\n00000000\n00000000\n01000010\n01000100\n01111100\n01000010\n01000010\n01111100\n00000000\n00000000\nCHAR 642\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n01000010\n00110000\n00001100\n00000010\n00111100\n01000000\n00110000\nCHAR 643\n00000000\n00000100\n00001010\n00001000\n00001000\n00001000\n00001000\n00001000\n00001000\n00001000\n00101000\n00010000\n00000000\nCHAR 644\n00000000\n00000100\n00001010\n00001000\n00001000\n00001000\n00001000\n00011100\n00001000\n00001000\n00101000\n00010000\n00000000\nCHAR 645\n00000000\n00010000\n00101000\n00001000\n00001000\n00001000\n00001000\n00001000\n00001000\n00001000\n00001010\n00000100\n00000000\nCHAR 646\n00000000\n00000100\n00001010\n00001000\n00001000\n00001000\n00001000\n00001000\n00011100\n00101010\n00101000\n00010000\n00000000\nCHAR 647\n00000000\n00000000\n00000000\n00000000\n00000000\n00111000\n01000100\n00000100\n00000100\n00000100\n00111110\n00000100\n00000100\nCHAR 648\n00000000\n00000000\n00000000\n00100000\n00100000\n01111100\n00100000\n00100000\n00100000\n00100000\n00100000\n00100010\n00011100\nCHAR 649\n00000000\n00000000\n00000000\n00000000\n00000000\n01000100\n01000100\n11111110\n01000100\n01000100\n00111010\n00000000\n00000000\nCHAR 650\n00000000\n00000000\n00000000\n00000000\n00000000\n01100110\n00100100\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 651\n00000000\n00000000\n00000000\n00000000\n00000000\n01000100\n01000010\n01000010\n01000010\n01000100\n00111000\n00000000\n00000000\nCHAR 652\n00000000\n00000000\n00000000\n00000000\n00000000\n00010000\n00101000\n00101000\n01000100\n01000100\n01000100\n00000000\n00000000\nCHAR 653\n00000000\n00000000\n00000000\n00000000\n00000000\n01000100\n10101010\n10010010\n10010010\n10000010\n10000010\n00000000\n00000000\nCHAR 654\n00000000\n00000000\n00000100\n00001010\n00001000\n00010000\n00010000\n00101000\n00101000\n01000100\n01000100\n00000000\n00000000\nCHAR 655\n00000000\n00000000\n00000000\n00000000\n00000000\n10000010\n01000100\n00101000\n00010000\n00010000\n00010000\n00000000\n00000000\nCHAR 656\n00000000\n00000000\n00000000\n00000000\n00000000\n01111110\n00000100\n00001000\n00010000\n00100000\n01111100\n00000100\n00000011\nCHAR 657\n00000000\n00000000\n00000000\n00000000\n00000000\n01111110\n00000100\n00001000\n00010010\n00100101\n01111110\n00001000\n00000000\nCHAR 658\n00000000\n00000000\n00000000\n00000000\n01111110\n00000010\n00000100\n00001000\n00011100\n00000010\n00000010\n01000010\n00111100\nCHAR 659\n00000000\n00000000\n00000000\n00000000\n01111110\n00000010\n00000100\n00001000\n00011100\n00000010\n00111110\n01000011\n00111100\nCHAR 660\n00000000\n00000000\n00011100\n00100010\n00000010\n00000010\n00000010\n00001100\n00001000\n00001000\n00001000\n00000000\n00000000\nCHAR 661\n00000000\n00000000\n00011100\n00100010\n00100000\n00100000\n00100000\n00011000\n00001000\n00001000\n00001000\n00000000\n00000000\nCHAR 662\n00000000\n00000000\n00001000\n00001000\n00001000\n00001100\n00000010\n00000010\n00000010\n00100010\n00011100\n00000000\n00000000\nCHAR 663\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n01000010\n01000000\n01000000\n01000000\n01000000\n01000010\n00111100\nCHAR 664\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n01000010\n01011010\n01011010\n01000010\n00111100\n00000000\n00000000\nCHAR 665\n00000000\n00000000\n00000000\n00000000\n00000000\n01111100\n01000010\n01111100\n01000010\n01000010\n01111100\n00000000\n00000000\nCHAR 666\n00000000\n00000000\n00000000\n00000000\n00111000\n01000100\n01000010\n00111010\n01000010\n01000100\n00111000\n00000000\n00000000\nCHAR 667\n00000000\n00000000\n00000000\n00000001\n00000010\n00111100\n01000010\n01000000\n01000110\n01000010\n00111100\n00000000\n00000000\nCHAR 668\n00000000\n00000000\n00000000\n00000000\n00000000\n01000010\n01000010\n01111110\n01000010\n01000010\n01000010\n00000000\n00000000\nCHAR 669\n00000000\n00000000\n00000000\n00000100\n00000000\n00001100\n00000100\n00000100\n00000111\n00001100\n00010100\n00100100\n00011000\nCHAR 670\n00000000\n00000000\n00000000\n00000000\n00000000\n01000010\n00100010\n00010010\n00001110\n00010010\n00100010\n00000010\n00000010\nCHAR 671\n00000000\n00000000\n00000000\n00000000\n00000000\n01000000\n01000000\n01000000\n01000000\n01000000\n01111110\n00000000\n00000000\nCHAR 672\n00000000\n00000000\n00000011\n00000100\n00000100\n00110100\n01001100\n01000100\n01001100\n00110100\n00000100\n00000100\n00000100\nCHAR 673\n00000000\n00000000\n00011100\n00100010\n00000010\n00000010\n00000010\n00001100\n00001000\n00011100\n00001000\n00001000\n00000000\nCHAR 674\n00000000\n00000000\n00011100\n00100010\n00100000\n00100000\n00100000\n00011000\n00001000\n00011100\n00001000\n00001000\n00000000\nCHAR 675\n00000000\n00000000\n00010000\n00010000\n00010000\n01010111\n10110001\n10010010\n10010010\n10110100\n01010111\n00000000\n00000000\nCHAR 676\n00000000\n00000000\n00010000\n00010000\n00010000\n01010111\n10110001\n10010010\n10010110\n10110001\n01010001\n00000110\n00000000\nCHAR 677\n00000000\n00000000\n00010000\n00010000\n00010000\n01010111\n10110001\n10010010\n10010010\n10110101\n01010111\n00000010\n00000010\nCHAR 678\n00000000\n00000000\n01000000\n01000000\n01000000\n11110011\n01000100\n01000010\n01000001\n01000001\n00110110\n00000000\n00000000\nCHAR 679\n00000000\n00000010\n01000101\n01000100\n01000100\n11110100\n01000100\n01000100\n01000100\n01000100\n00100100\n00010100\n00001000\nCHAR 680\n00000000\n00000000\n01000000\n01000000\n01000000\n11110110\n01001001\n01001000\n01001010\n01001101\n00110110\n00000100\n00000000\nCHAR 681\n00000000\n00000000\n00111000\n01000100\n01000000\n01000000\n11110100\n01011010\n01010010\n01010010\n01010010\n00000010\n00001100\nCHAR 682\n00000000\n00000000\n01100000\n00100000\n00100000\n00101100\n00110010\n00101000\n00100100\n00110010\n01111100\n00000000\n00000000\nCHAR 683\n00000000\n00000000\n01100000\n00100000\n00100000\n00111110\n00100010\n00100100\n00101000\n00110000\n01111110\n00000000\n00000000\nCHAR 684\n00000000\n00000000\n01010100\n01010100\n00101000\n00101000\n00000000\n01010100\n01010100\n00101000\n00101000\n00000000\n00000000\nCHAR 685\n00000000\n00000000\n00000000\n00000000\n01111110\n01000010\n00000000\n01111110\n01000010\n00000000\n00000000\n00000000\n00000000\nCHAR 688\n00000000\n00000000\n00100000\n00101000\n00110100\n00100100\n00100100\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 689\n00000000\n00011000\n00100000\n00101000\n00110100\n00100100\n00100100\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 690\n00000000\n00001000\n00000000\n00001000\n00001000\n00101000\n00010000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 691\n00000000\n00000000\n00101000\n00110100\n00100000\n00100000\n00100000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 692\n00000000\n00000000\n00001000\n00001000\n00001000\n01011000\n00101000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 693\n00000000\n00000000\n00001000\n00001000\n00001000\n01011000\n00101010\n00000100\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 694\n00000000\n00000000\n01000100\n01001000\n01110000\n01001000\n01110000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 695\n00000000\n00000000\n10000010\n10010010\n10010010\n01101100\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 696\n00000000\n00000000\n01000100\n00101000\n00010000\n00100000\n01000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 697\n00000000\n00000000\n00010000\n00010000\n00100000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 698\n00000000\n00000000\n00010100\n00010100\n00101000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 699\n00000000\n00000000\n00001000\n00010000\n00011000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 700\n00000000\n00000000\n00011000\n00001000\n00010000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 701\n00000000\n00000000\n00011000\n00010000\n00001000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 702\n00000000\n00010000\n00001000\n00001000\n00010000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 703\n00000000\n00001000\n00010000\n00010000\n00001000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 704\n00000000\n00010000\n00101000\n00001000\n00010000\n00010000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 705\n00000000\n00010000\n00101000\n00100000\n00010000\n00010000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 706\n00000000\n00001000\n00010000\n00100000\n00010000\n00001000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 707\n00000000\n00100000\n00010000\n00001000\n00010000\n00100000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 708\n00000000\n00010000\n00101000\n01000100\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 709\n00000000\n01000100\n00101000\n00010000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 710\n00000000\n00011000\n00100100\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 711\n00000000\n00100100\n00011000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 712\n00000000\n00000000\n00010000\n00010000\n00010000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 713\n00000000\n00000000\n01111100\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 714\n00000000\n00000000\n00010000\n00100000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 715\n00000000\n00000000\n00100000\n00010000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 716\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00100000\n00100000\n00100000\n00000000\n00000000\nCHAR 717\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00111000\nCHAR 718\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00010000\n00001000\nCHAR 719\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00010000\n00100000\nCHAR 720\n00000000\n00000000\n00000000\n00000000\n00000000\n00111000\n00010000\n00000000\n00000000\n00010000\n00111000\n00000000\n00000000\nCHAR 721\n00000000\n00000000\n00000000\n00000000\n00000000\n00111000\n00010000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 722\n00000000\n00000000\n00000000\n00000000\n00000000\n00010000\n00001000\n00001000\n00010000\n00000000\n00000000\n00000000\n00000000\nCHAR 723\n00000000\n00000000\n00000000\n00000000\n00000000\n00010000\n00100000\n00100000\n00010000\n00000000\n00000000\n00000000\n00000000\nCHAR 724\n00000000\n00000000\n00000000\n00000000\n00010000\n00010000\n01111100\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 725\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n01111100\n00010000\n00010000\n00000000\n00000000\n00000000\n00000000\nCHAR 726\n00000000\n00000000\n00000000\n00000000\n00010000\n00010000\n01111100\n00010000\n00010000\n00000000\n00000000\n00000000\n00000000\nCHAR 727\n00000000\n00000000\n00000000\n00000000\n00000000\n01000100\n01111100\n01000100\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 728\n00000000\n01000010\n00111100\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 729\n00000000\n00000000\n00011000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 730\n00011000\n00100100\n00011000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 731\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00010000\n00011100\nCHAR 732\n00000000\n00010100\n00101000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 733\n00000000\n00100010\n01000100\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 734\n00000000\n00000000\n00000000\n00000000\n00000000\n01100000\n10010010\n00001100\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 735\n00000000\n00101000\n00010000\n00101000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 736\n00000000\n00000000\n01000100\n00101000\n00010000\n00101000\n00010000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 737\n00000000\n00110000\n00010000\n00010000\n00010000\n00111000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 738\n00000000\n00000000\n00011000\n00100000\n00010000\n00001000\n00110000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 739\n00000000\n00000000\n00100100\n00011000\n00011000\n00100100\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 740\n00000000\n00000000\n00111000\n01000100\n01000000\n01000000\n00110000\n00010000\n00010000\n00000000\n00000000\n00000000\n00000000\nCHAR 741\n00000000\n00000000\n01111000\n00001000\n00001000\n00001000\n00001000\n00001000\n00001000\n00001000\n00001000\n00001000\n00001000\nCHAR 742\n00000000\n00000000\n00001000\n00001000\n01111000\n00001000\n00001000\n00001000\n00001000\n00001000\n00001000\n00001000\n00001000\nCHAR 743\n00000000\n00000000\n00001000\n00001000\n00001000\n00001000\n00001000\n01111000\n00001000\n00001000\n00001000\n00001000\n00001000\nCHAR 744\n00000000\n00000000\n00001000\n00001000\n00001000\n00001000\n00001000\n00001000\n00001000\n00001000\n01111000\n00001000\n00001000\nCHAR 745\n00000000\n00000000\n00001000\n00001000\n00001000\n00001000\n00001000\n00001000\n00001000\n00001000\n00001000\n00001000\n01111000\nCHAR 746\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n01000000\n01000000\n01000000\n01111000\n00000000\n00000000\nCHAR 747\n00000000\n00000000\n00000000\n00000000\n00100000\n00100000\n00100000\n00111100\n00100000\n00100000\n00100000\n00000000\n00000000\nCHAR 748\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n01000100\n00101000\n00010000\nCHAR 749\n00000000\n00000000\n01111110\n00000000\n01111110\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 750\n00000000\n00000000\n01100110\n00100010\n01000100\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 768\n00000000\n00010000\n00001000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 769\n00000000\n00001000\n00010000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 770\n00000000\n00011000\n00100100\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 771\n00000000\n00110010\n01001100\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 772\n00000000\n00000000\n00111100\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 773\n00000000\n00000000\n01111110\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 774\n00000000\n01000010\n00111100\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 775\n00000000\n00000000\n00011000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 776\n00000000\n00100100\n00100100\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 777\n00011000\n00100100\n00000100\n00001000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 778\n00011000\n00100100\n00100100\n00011000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 779\n00000000\n00100100\n01001000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 780\n00000000\n00100100\n00011000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 781\n00000000\n00010000\n00010000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 782\n00000000\n00101000\n00101000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 783\n00000000\n01001000\n00100100\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 784\n00011000\n01000010\n00111100\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 785\n00000000\n00111100\n01000010\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 786\n00000000\n00001000\n00010000\n00011000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 787\n00000000\n00011000\n00001000\n00010000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 788\n00000000\n00011000\n00010000\n00001000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 789\n00000000\n00000110\n00000010\n00000100\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 790\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00010000\n00001000\nCHAR 791\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00001000\n00010000\nCHAR 792\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000100\n00111100\n00000100\nCHAR 793\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00100000\n00111100\n00100000\nCHAR 794\n00000111\n00000001\n00000001\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 795\n00000000\n00000000\n00000001\n00000001\n00000010\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 796\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00011000\n00100000\n00011000\nCHAR 797\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00010000\n00010000\n01111100\nCHAR 798\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n01111100\n00010000\n00010000\nCHAR 799\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00010000\n00111000\n00010000\nCHAR 800\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n01111100\n00000000\nCHAR 801\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000010\n00001100\nCHAR 802\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000010\n00000010\n00000001\nCHAR 803\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00010000\nCHAR 804\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00101000\nCHAR 805\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00010000\n00101000\n00010000\nCHAR 806\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00011000\n00001000\n00010000\nCHAR 807\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00010000\n01001000\n00110000\nCHAR 808\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00100000\n01000000\n00110000\nCHAR 809\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00010000\n00010000\nCHAR 810\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n01111100\n01000100\n00000000\nCHAR 811\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n01000100\n01010100\n00101000\nCHAR 812\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00101000\n00010000\nCHAR 813\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00010000\n00101000\nCHAR 814\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n01000100\n00111000\nCHAR 815\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00111000\n01000100\nCHAR 816\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00110100\n01011000\nCHAR 817\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n01111100\n00000000\nCHAR 818\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n01111100\nCHAR 819\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n01111100\n00000000\n01111100\nCHAR 820\n00000000\n00000000\n00000000\n00000000\n00000000\n00110100\n01011000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 821\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00111000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 822\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n01111100\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 823\n00000000\n00000000\n00000000\n00000000\n00000000\n00000100\n00001000\n00010000\n00100000\n01000000\n00000000\n00000000\n00000000\nCHAR 824\n00000010\n00000010\n00000100\n00001000\n00001000\n00010000\n00100000\n00100000\n01000000\n10000000\n10000000\n00000000\n00000000\nCHAR 825\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00010000\n00001000\n00010000\nCHAR 826\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n01000100\n01111100\n00000000\nCHAR 827\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00111000\n00101000\n00111000\n00000000\nCHAR 828\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00101000\n01010100\nCHAR 829\n00000000\n01101100\n00010000\n01101100\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 830\n00010000\n00100000\n00010000\n00100000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 831\n00000000\n01111100\n00000000\n01111100\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 832\n00000000\n01000000\n00100000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 833\n00000000\n00000010\n00000100\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 834\n00000000\n00110100\n01011000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 835\n00000000\n00110000\n00010000\n00100000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 836\n00001000\n00010000\n00000000\n00101000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 837\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00010000\n00011000\nCHAR 838\n00000000\n01111100\n01000100\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 839\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n00000000\n00111100\nCHAR 840\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00101000\n00101000\n00101000\nCHAR 841\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00111000\n00001000\nCHAR 842\n00001000\n00110100\n01011000\n00100000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 843\n00000100\n01110001\n10001110\n00100000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 844\n00110010\n01001100\n00110010\n01001100\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 845\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00100100\n01111110\n00100100\nCHAR 846\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00010000\n00111000\n00010000\n00010000\nCHAR 847\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 864\n00011001\n00100110\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 865\n00011110\n00100001\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 866\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000010\n00011111\n00000010\nCHAR 867\n00010000\n00001000\n00011000\n00101000\n00011000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 868\n00010000\n00101000\n00111000\n00100000\n00011000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 869\n00010000\n00000000\n00010000\n00010000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 870\n00011000\n00100100\n00100100\n00011000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 871\n00101000\n00101000\n00011000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 872\n00011000\n00100000\n00011000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 873\n00001000\n00011000\n00101000\n00011000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 874\n00100000\n00110000\n00101000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 875\n01101000\n01010100\n01010100\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 876\n00101000\n00110000\n00100000\n00100000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 877\n00010000\n00111000\n00010000\n00011000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 878\n00101000\n00101000\n00010000\n00010000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 879\n00101000\n00010000\n00101000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 884\n00000000\n00000000\n00001000\n00010000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 885\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00001000\n00010000\nCHAR 890\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00010000\n00011000\nCHAR 894\n00000000\n00000000\n00000000\n00000000\n00010000\n00111000\n00010000\n00000000\n00000000\n00111000\n00110000\n01000000\n00000000\nCHAR 900\n00000000\n00000000\n00001000\n00010000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 901\n00000000\n00001000\n01010010\n01000010\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 902\n00000000\n00000000\n01001100\n10010010\n00010010\n00010010\n00010010\n00011110\n00010010\n00010010\n00010010\n00000000\n00000000\nCHAR 903\n00000000\n00000000\n00000000\n00000000\n00000000\n00011000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 904\n00000000\n00000000\n01011110\n10010000\n00010000\n00010000\n00011100\n00010000\n00010000\n00010000\n00011110\n00000000\n00000000\nCHAR 905\n00000000\n00000000\n01010010\n10010010\n00010010\n00010010\n00011110\n00010010\n00010010\n00010010\n00010010\n00000000\n00000000\nCHAR 906\n00000000\n00000000\n00101110\n01000100\n00000100\n00000100\n00000100\n00000100\n00000100\n00000100\n00001110\n00000000\n00000000\nCHAR 908\n00000000\n00000000\n01001100\n10010010\n00010010\n00010010\n00010010\n00010010\n00010010\n00010010\n00001100\n00000000\n00000000\nCHAR 910\n00000000\n00000000\n00101010\n01001010\n00001010\n00000100\n00000100\n00000100\n00000100\n00000100\n00000100\n00000000\n00000000\nCHAR 911\n00000000\n00000000\n01001100\n10010010\n00010010\n00010010\n00010010\n00010010\n00001100\n00001100\n00010010\n00000000\n00000000\nCHAR 912\n00000000\n00001000\n01010010\n01000010\n00000000\n00010000\n00010000\n00010000\n00010000\n00010010\n00001100\n00000000\n00000000\nCHAR 913\n00000000\n00000000\n00011000\n00100100\n01000010\n01000010\n01000010\n01111110\n01000010\n01000010\n01000010\n00000000\n00000000\nCHAR 914\n00000000\n00000000\n01111100\n01000010\n01000010\n01000010\n01111100\n01000010\n01000010\n01000010\n01111100\n00000000\n00000000\nCHAR 915\n00000000\n00000000\n01111110\n01000000\n01000000\n01000000\n01000000\n01000000\n01000000\n01000000\n01000000\n00000000\n00000000\nCHAR 916\n00000000\n00000000\n00010000\n00101000\n00101000\n00101000\n01000100\n01000100\n01000100\n10000010\n11111110\n00000000\n00000000\nCHAR 917\n00000000\n00000000\n01111110\n01000000\n01000000\n01000000\n01111000\n01000000\n01000000\n01000000\n01111110\n00000000\n00000000\nCHAR 918\n00000000\n00000000\n01111110\n00000010\n00000100\n00001000\n00010000\n00100000\n01000000\n01000000\n01111110\n00000000\n00000000\nCHAR 919\n00000000\n00000000\n01000010\n01000010\n01000010\n01000010\n01111110\n01000010\n01000010\n01000010\n01000010\n00000000\n00000000\nCHAR 920\n00000000\n00000000\n00111100\n01000010\n01000010\n01000010\n01111110\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 921\n00000000\n00000000\n01111100\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n01111100\n00000000\n00000000\nCHAR 922\n00000000\n00000000\n01000010\n01000100\n01001000\n01010000\n01100000\n01010000\n01001000\n01000100\n01000010\n00000000\n00000000\nCHAR 923\n00000000\n00000000\n00010000\n00101000\n00101000\n00101000\n01000100\n01000100\n01000100\n10000010\n10000010\n00000000\n00000000\nCHAR 924\n00000000\n00000000\n10000010\n10000010\n11000110\n10101010\n10010010\n10010010\n10000010\n10000010\n10000010\n00000000\n00000000\nCHAR 925\n00000000\n00000000\n01000010\n01000010\n01100010\n01010010\n01001010\n01000110\n01000010\n01000010\n01000010\n00000000\n00000000\nCHAR 926\n00000000\n00000000\n01111110\n00000000\n00000000\n00000000\n00111100\n00000000\n00000000\n00000000\n01111110\n00000000\n00000000\nCHAR 927\n00000000\n00000000\n00111100\n01000010\n01000010\n01000010\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 928\n00000000\n00000000\n11111110\n01000100\n01000100\n01000100\n01000100\n01000100\n01000100\n01000100\n01000100\n00000000\n00000000\nCHAR 929\n00000000\n00000000\n01111100\n01000010\n01000010\n01000010\n01111100\n01000000\n01000000\n01000000\n01000000\n00000000\n00000000\nCHAR 931\n00000000\n00000000\n01111110\n01000000\n00100000\n00010000\n00001000\n00010000\n00100000\n01000000\n01111110\n00000000\n00000000\nCHAR 932\n00000000\n00000000\n11111110\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00000000\n00000000\nCHAR 933\n00000000\n00000000\n10000010\n10000010\n01000100\n00101000\n00010000\n00010000\n00010000\n00010000\n00010000\n00000000\n00000000\nCHAR 934\n00000000\n00000000\n00010000\n01111100\n10010010\n10010010\n10010010\n10010010\n10010010\n01111100\n00010000\n00000000\n00000000\nCHAR 935\n00000000\n00000000\n10000010\n10000010\n01000100\n00101000\n00010000\n00101000\n01000100\n10000010\n10000010\n00000000\n00000000\nCHAR 936\n00000000\n00000000\n10010010\n10010010\n10010010\n10010010\n10010010\n01111100\n00010000\n00010000\n00010000\n00000000\n00000000\nCHAR 937\n00000000\n00000000\n01111100\n10000010\n10000010\n10000010\n10000010\n10000010\n01101100\n00101000\n11101110\n00000000\n00000000\nCHAR 938\n00000000\n01000100\n01000100\n00000000\n01111100\n00010000\n00010000\n00010000\n00010000\n00010000\n01111100\n00000000\n00000000\nCHAR 939\n00000000\n01000100\n01000100\n00000000\n01000100\n01000100\n00101000\n00010000\n00010000\n00010000\n00010000\n00000000\n00000000\nCHAR 940\n00000000\n00000100\n00001000\n00000000\n00000000\n00111010\n01000110\n01000010\n01000110\n01001010\n00110010\n00000000\n00000000\nCHAR 941\n00000000\n00000100\n00001000\n00000000\n00000000\n00111100\n01000010\n00111000\n01000000\n01000010\n00111100\n00000000\n00000000\nCHAR 942\n00000000\n00000100\n00001000\n00000000\n00000000\n01011100\n01100010\n01000010\n01000010\n01000010\n01000010\n00000010\n00000010\nCHAR 943\n00000000\n00010000\n00100000\n00000000\n00000000\n00100000\n00100000\n00100000\n00100000\n00100100\n00011000\n00000000\n00000000\nCHAR 944\n00000000\n00001000\n01010010\n01000010\n00000000\n01000010\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 945\n00000000\n00000000\n00000000\n00000000\n00000000\n00111010\n01000110\n01000010\n01000110\n01001010\n00110010\n00000000\n00000000\nCHAR 946\n00000000\n00000000\n00111000\n01000100\n01000100\n01111100\n01000010\n01000010\n01000010\n01100010\n01011100\n01000000\n01000000\nCHAR 947\n00000000\n00000000\n00000000\n00000000\n00000000\n01000100\n01000100\n01000100\n00101000\n00101000\n00010000\n00010000\n00010000\nCHAR 948\n00000000\n00000000\n00111100\n01000010\n00100000\n00111100\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 949\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n01000010\n00111000\n01000000\n01000010\n00111100\n00000000\n00000000\nCHAR 950\n00000000\n00000000\n01111110\n00010000\n00100000\n00100000\n01000000\n01000000\n01000000\n01000000\n00111100\n00000010\n00001100\nCHAR 951\n00000000\n00000000\n00000000\n00000000\n00000000\n01011100\n01100010\n01000010\n01000010\n01000010\n01000010\n00000010\n00000010\nCHAR 952\n00000000\n00000000\n00111000\n01000100\n01000100\n01000100\n01111100\n01000100\n01000100\n01000100\n00111000\n00000000\n00000000\nCHAR 953\n00000000\n00000000\n00000000\n00000000\n00000000\n00100000\n00100000\n00100000\n00100000\n00100100\n00011000\n00000000\n00000000\nCHAR 954\n00000000\n00000000\n00000000\n00000000\n00000000\n01000100\n01001000\n01010000\n01110000\n01001000\n01000100\n00000000\n00000000\nCHAR 955\n00000000\n00000000\n00111100\n01000010\n00000010\n00111010\n01000110\n01000010\n01000010\n01000010\n01000010\n00000000\n00000000\nCHAR 956\n00000000\n00000000\n00000000\n00000000\n00000000\n01000010\n01000010\n01000010\n01000010\n01100110\n01011010\n01000000\n01000000\nCHAR 957\n00000000\n00000000\n00000000\n00000000\n00000000\n01000100\n01000100\n01000100\n00101000\n00101000\n00010000\n00000000\n00000000\nCHAR 958\n00000000\n00000000\n01111110\n00010000\n00100000\n00100000\n00011100\n00100000\n01000000\n01000000\n00111100\n00000010\n00001100\nCHAR 959\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 960\n00000000\n00000000\n00000000\n00000000\n00000000\n11111110\n01000100\n01000100\n01000100\n01000100\n01000100\n00000000\n00000000\nCHAR 961\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n01000010\n01000010\n01000010\n01100010\n01011100\n01000000\n01000000\nCHAR 962\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n01000010\n01000000\n01000000\n01000000\n00111100\n00000010\n00001100\nCHAR 963\n00000000\n00000000\n00000000\n00000000\n00000000\n00111110\n01001000\n01000100\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 964\n00000000\n00000000\n00000000\n00000000\n00000000\n01111110\n00010000\n00010000\n00010000\n00010010\n00001100\n00000000\n00000000\nCHAR 965\n00000000\n00000000\n00000000\n00000000\n00000000\n01000010\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 966\n00000000\n00000000\n00000000\n00000000\n00000000\n01001100\n10010010\n10010010\n10010010\n10010010\n01111100\n00010000\n00010000\nCHAR 967\n00000000\n00000000\n00000000\n00000000\n00000000\n01000010\n01000010\n00100100\n00011000\n00011000\n00100100\n01000010\n01000010\nCHAR 968\n00000000\n00000000\n00000000\n00000000\n00000000\n10010010\n10010010\n10010010\n10010010\n10010010\n01111100\n00010000\n00010000\nCHAR 969\n00000000\n00000000\n00000000\n00000000\n00000000\n10000010\n10010010\n10010010\n10010010\n10010010\n01101100\n00000000\n00000000\nCHAR 970\n00000000\n00000000\n01000010\n01000010\n00000000\n00010000\n00010000\n00010000\n00010000\n00010010\n00001100\n00000000\n00000000\nCHAR 971\n00000000\n00000000\n01000010\n01000010\n00000000\n01000010\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 972\n00000000\n00000100\n00001000\n00000000\n00000000\n00111100\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 973\n00000000\n00000100\n00001000\n00000000\n00000000\n01000010\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 974\n00000000\n00001000\n00010000\n00000000\n00000000\n10000010\n10010010\n10010010\n10010010\n10010010\n01101100\n00000000\n00000000\nCHAR 976\n00000000\n00000000\n00011000\n00100100\n01000100\n01001000\n01011100\n01100010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 977\n00000000\n00000000\n00111000\n01000100\n01000100\n00111110\n00000100\n01000100\n01000100\n01000100\n00111000\n00000000\n00000000\nCHAR 978\n00000000\n00000000\n01000100\n10101010\n00101000\n00101000\n00010000\n00010000\n00010000\n00010000\n00010000\n00000000\n00000000\nCHAR 979\n00000000\n00000000\n10100100\n10101010\n00101000\n00101000\n00010000\n00010000\n00010000\n00010000\n00010000\n00000000\n00000000\nCHAR 980\n00000000\n01000100\n01000100\n00000000\n01000100\n10101010\n00101000\n00010000\n00010000\n00010000\n00010000\n00000000\n00000000\nCHAR 981\n00000000\n00000000\n00000000\n00010000\n00010000\n01111100\n10010010\n10010010\n10010010\n10010010\n01111100\n00010000\n00010000\nCHAR 982\n00000000\n00000000\n00000000\n00000000\n00000000\n11111110\n10000010\n10010010\n10010010\n10010010\n01101100\n00000000\n00000000\nCHAR 983\n00000000\n00010000\n00001000\n00000000\n00000000\n01000010\n00100100\n00101000\n00111000\n00100100\n01000010\n00000010\n00011100\nCHAR 984\n00000000\n00000000\n00111100\n01000010\n01000010\n01000010\n01000010\n01000010\n01000010\n01000010\n00111100\n00011000\n00011000\nCHAR 985\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n01000010\n01000010\n01000010\n01000010\n00111100\n00011000\n00011000\nCHAR 986\n00000000\n00000000\n00011100\n00100010\n01000000\n01000000\n01000000\n01000000\n01000000\n00111100\n00000010\n00000100\n00000000\nCHAR 987\n00000000\n00000000\n00000000\n00000000\n00000010\n00111100\n01000000\n01000000\n01000000\n01000000\n00111100\n00000010\n00001100\nCHAR 988\n00000000\n00000000\n01111110\n01000000\n01000000\n01000000\n01111000\n01000000\n01000000\n01000000\n01000000\n00000000\n00000000\nCHAR 989\n00000000\n00000000\n00000000\n00000000\n00000000\n01111100\n01000000\n01000000\n01111000\n01000000\n01000000\n01000000\n01000000\nCHAR 990\n00000000\n00000000\n10000000\n01000000\n01000100\n01001100\n01010100\n01100100\n01000100\n00000100\n00000010\n00000000\n00000000\nCHAR 991\n00000000\n00000000\n00010000\n00010000\n00100000\n00100000\n01000000\n01111110\n00000010\n00000100\n00000100\n00001000\n00001000\nCHAR 992\n00000000\n00000000\n00010000\n00101000\n00101000\n00101000\n01000100\n01001100\n01001100\n10010010\n10010010\n00000000\n00000000\nCHAR 993\n00000000\n00000000\n01100000\n00010000\n00001000\n00001100\n00010100\n00100110\n00001010\n00010010\n00000010\n00000010\n00000010\nCHAR 994\n00000000\n00000000\n00000000\n10010010\n10010010\n10010010\n10010010\n10010010\n01101110\n00000010\n01111100\n00000000\n00000000\nCHAR 995\n00000000\n00000000\n00000000\n00000000\n00000000\n10010010\n10010010\n10010010\n10010010\n10010010\n01101110\n00000010\n01111100\nCHAR 996\n00000000\n00000000\n00110010\n01000010\n01000010\n01000010\n00111110\n00000010\n00000010\n00000010\n00000010\n00000000\n00000000\nCHAR 997\n00000000\n00000000\n00101000\n01001000\n01001000\n01001000\n00111000\n00001000\n00001000\n00001000\n00001000\n00000000\n00000000\nCHAR 998\n00000000\n00000000\n01110000\n00100000\n00100000\n00111100\n00100010\n00100010\n00100010\n00100010\n01110010\n00000010\n00001100\nCHAR 999\n00000000\n00000000\n00000000\n00100000\n00010000\n00111100\n01010010\n00100010\n00000010\n01000010\n00111100\n00000000\n00000000\nCHAR 1000\n00000000\n00000000\n00111100\n01000010\n01000010\n00000100\n00011000\n00100000\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 1001\n00000000\n00000000\n00000000\n00111100\n01000010\n01000010\n00100100\n00011000\n00100000\n01000000\n00111110\n00000000\n00000000\nCHAR 1002\n00000000\n00000000\n01101100\n00010000\n00010000\n00101000\n00101000\n01000100\n01000100\n10000010\n11111110\n00000000\n00000000\nCHAR 1003\n00000000\n00000000\n00000000\n00000000\n00000000\n01101100\n00010000\n00101000\n00101000\n01000100\n01111100\n00000000\n00000000\nCHAR 1004\n00000000\n00000000\n00111100\n01000000\n01111100\n01000010\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 1005\n00000000\n00000000\n00000000\n00000000\n00111100\n01000000\n01011100\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 1006\n00000000\n00000000\n00111000\n00010000\n01111100\n01010100\n00010000\n00010000\n00010000\n00010000\n00010000\n00000000\n00000000\nCHAR 1007\n00000000\n00000000\n00000000\n00000000\n00010000\n00010100\n01111100\n01010000\n00010000\n00010000\n00010000\n00000000\n00000000\nCHAR 1008\n00000000\n00000000\n00000000\n00000000\n00000000\n01000010\n00100100\n00101000\n00111000\n00100100\n01000010\n00000000\n00000000\nCHAR 1009\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n01000010\n01000010\n01000010\n01100010\n01011100\n01000000\n00111100\nCHAR 1010\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n01000010\n01000000\n01000000\n01000010\n00111100\n00000000\n00000000\nCHAR 1011\n00000000\n00000000\n00000000\n00000100\n00000000\n00001100\n00000100\n00000100\n00000100\n00000100\n01000100\n01000100\n00111000\nCHAR 1012\n00000000\n00000000\n00111100\n01000010\n01000010\n01000010\n01111110\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 1013\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n01000000\n01111000\n01000000\n01000000\n00111100\n00000000\n00000000\nCHAR 1014\n00000000\n00000000\n00000000\n00000000\n00000000\n01111000\n00000100\n00111100\n00000100\n00000100\n01111000\n00000000\n00000000\nCHAR 1024\n00000000\n00010000\n00001000\n00000000\n01111110\n01000000\n01000000\n01111100\n01000000\n01000000\n01111110\n00000000\n00000000\nCHAR 1025\n00000000\n00100100\n00100100\n00000000\n01111110\n01000000\n01000000\n01111100\n01000000\n01000000\n01111110\n00000000\n00000000\nCHAR 1026\n00000000\n00000000\n11111100\n00100000\n00100000\n00111100\n00100010\n00100010\n00100010\n00100010\n00100010\n00000010\n00001100\nCHAR 1027\n00000000\n00001000\n00010000\n00000000\n01111110\n01000010\n01000000\n01000000\n01000000\n01000000\n01000000\n00000000\n00000000\nCHAR 1028\n00000000\n00000000\n00011110\n00100010\n01000000\n01000000\n01111100\n01000000\n01000000\n00100010\n00011100\n00000000\n00000000\nCHAR 1029\n00000000\n00000000\n00111100\n01000010\n01000000\n01000000\n00111100\n00000010\n00000010\n01000010\n00111100\n00000000\n00000000\nCHAR 1030\n00000000\n00000000\n00111000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00111000\n00000000\n00000000\nCHAR 1031\n00000000\n01000100\n01000100\n00000000\n01111100\n00010000\n00010000\n00010000\n00010000\n00010000\n01111100\n00000000\n00000000\nCHAR 1032\n00000000\n00000000\n00001110\n00000100\n00000100\n00000100\n00000100\n00000100\n00000100\n01000100\n00111000\n00000000\n00000000\nCHAR 1033\n00000000\n00000000\n01110000\n10010000\n10010000\n10010000\n10011100\n10010010\n10010010\n10010010\n10011100\n00000000\n00000000\nCHAR 1034\n00000000\n00000000\n10010000\n10010000\n10010000\n10010000\n11111100\n10010010\n10010010\n10010010\n10011100\n00000000\n00000000\nCHAR 1035\n00000000\n00000000\n11111100\n00100000\n00100000\n00101100\n00110010\n00100010\n00100010\n00100010\n00100010\n00000000\n00000000\nCHAR 1036\n00001000\n00010000\n00000000\n01000100\n01001000\n01010000\n01100000\n01010000\n01001000\n01000100\n01000100\n00000000\n00000000\nCHAR 1037\n00000000\n00010000\n00001000\n01000010\n01000110\n01000110\n01001010\n01010010\n01100010\n01100010\n01000010\n00000000\n00000000\nCHAR 1038\n00000000\n01000010\n00111100\n00000000\n01000010\n01000010\n01000010\n00111110\n00000010\n00000010\n00111100\n00000000\n00000000\nCHAR 1039\n00000000\n00000000\n01000100\n01000100\n01000100\n01000100\n01000100\n01000100\n01000100\n01000100\n01111100\n00010000\n00010000\nCHAR 1040\n00000000\n00000000\n00011000\n00100100\n01000010\n01000010\n01000010\n01111110\n01000010\n01000010\n01000010\n00000000\n00000000\nCHAR 1041\n00000000\n00000000\n01111100\n01000000\n01000000\n01000000\n01111100\n01000010\n01000010\n01000010\n01111100\n00000000\n00000000\nCHAR 1042\n00000000\n00000000\n01111100\n01000010\n01000010\n01000010\n01111100\n01000010\n01000010\n01000010\n01111100\n00000000\n00000000\nCHAR 1043\n00000000\n00000000\n01111110\n01000010\n01000000\n01000000\n01000000\n01000000\n01000000\n01000000\n01000000\n00000000\n00000000\nCHAR 1044\n00000000\n00000000\n00111100\n00100100\n00100100\n00100100\n01000100\n01000100\n01000100\n01000100\n11111110\n10000010\n00000000\nCHAR 1045\n00000000\n00000000\n01111110\n01000000\n01000000\n01000000\n01111100\n01000000\n01000000\n01000000\n01111110\n00000000\n00000000\nCHAR 1046\n00000000\n00000000\n10010010\n10010010\n01010100\n00111000\n01010100\n10010010\n10010010\n10010010\n10010010\n00000000\n00000000\nCHAR 1047\n00000000\n00000000\n00111100\n01000010\n00000010\n00000010\n00001100\n00000010\n00000010\n01000010\n00111100\n00000000\n00000000\nCHAR 1048\n00000000\n00000000\n01000010\n01000110\n01000110\n01001010\n01001010\n01010010\n01010010\n01100010\n01000010\n00000000\n00000000\nCHAR 1049\n00000000\n01000010\n00111100\n01000010\n01000110\n01000110\n01001010\n01010010\n01100010\n01100010\n01000010\n00000000\n00000000\nCHAR 1050\n00000000\n00000000\n01000010\n01000100\n01001000\n01010000\n01100000\n01010000\n01001000\n01000100\n01000010\n00000000\n00000000\nCHAR 1051\n00000000\n00000000\n00011110\n00100010\n00100010\n00100010\n00100010\n00100010\n00100010\n01000010\n01000010\n00000000\n00000000\nCHAR 1052\n00000000\n00000000\n10000010\n10000010\n11000110\n10101010\n10010010\n10010010\n10000010\n10000010\n10000010\n00000000\n00000000\nCHAR 1053\n00000000\n00000000\n01000010\n01000010\n01000010\n01000010\n01111110\n01000010\n01000010\n01000010\n01000010\n00000000\n00000000\nCHAR 1054\n00000000\n00000000\n00111100\n01000010\n01000010\n01000010\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 1055\n00000000\n00000000\n01111110\n01000010\n01000010\n01000010\n01000010\n01000010\n01000010\n01000010\n01000010\n00000000\n00000000\nCHAR 1056\n00000000\n00000000\n01111100\n01000010\n01000010\n01000010\n01000010\n01111100\n01000000\n01000000\n01000000\n00000000\n00000000\nCHAR 1057\n00000000\n00000000\n00111100\n01000010\n01000000\n01000000\n01000000\n01000000\n01000000\n01000010\n00111100\n00000000\n00000000\nCHAR 1058\n00000000\n00000000\n11111110\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00000000\n00000000\nCHAR 1059\n00000000\n00000000\n01000010\n01000010\n01000010\n01000010\n00100100\n00011000\n00010000\n00100000\n01000000\n00000000\n00000000\nCHAR 1060\n00000000\n00000000\n00010000\n01111100\n10010010\n10010010\n10010010\n10010010\n01111100\n00010000\n00010000\n00000000\n00000000\nCHAR 1061\n00000000\n00000000\n01000100\n01000100\n00101000\n00101000\n00010000\n00101000\n00101000\n01000100\n01000100\n00000000\n00000000\nCHAR 1062\n00000000\n00000000\n10000100\n10000100\n10000100\n10000100\n10000100\n10000100\n10000100\n10000100\n11111110\n00000010\n00000010\nCHAR 1063\n00000000\n00000000\n01000010\n01000010\n01000010\n01000010\n00111110\n00000010\n00000010\n00000010\n00000010\n00000000\n00000000\nCHAR 1064\n00000000\n00000000\n10010010\n10010010\n10010010\n10010010\n10010010\n10010010\n10010010\n10010010\n11111110\n00000000\n00000000\nCHAR 1065\n00000000\n00000000\n10010010\n10010010\n10010010\n10010010\n10010010\n10010010\n10010010\n10010010\n11111110\n00000010\n00000010\nCHAR 1066\n00000000\n00000000\n11100000\n00100000\n00100000\n00100000\n00111100\n00100010\n00100010\n00100010\n00111100\n00000000\n00000000\nCHAR 1067\n00000000\n00000000\n01000010\n01000010\n01000010\n01110010\n01001010\n01001010\n01001010\n01001010\n01110010\n00000000\n00000000\nCHAR 1068\n00000000\n00000000\n01000000\n01000000\n01000000\n01000000\n01111100\n01000010\n01000010\n01000010\n01111100\n00000000\n00000000\nCHAR 1069\n00000000\n00000000\n01111000\n00000100\n00000010\n00000010\n00111110\n00000010\n00000010\n00000100\n01111000\n00000000\n00000000\nCHAR 1070\n00000000\n00000000\n10001100\n10010010\n10010010\n10010010\n11110010\n10010010\n10010010\n10010010\n10001100\n00000000\n00000000\nCHAR 1071\n00000000\n00000000\n00111100\n01000100\n01000100\n01000100\n00111100\n00010100\n00100100\n01000100\n01000100\n00000000\n00000000\nCHAR 1072\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n00000010\n00111110\n01000010\n01000010\n00111110\n00000000\n00000000\nCHAR 1073\n00000000\n00000000\n00000010\n00111100\n01000000\n01111100\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 1074\n00000000\n00000000\n00000000\n00000000\n00000000\n01111100\n01000010\n01111100\n01000010\n01000010\n01111100\n00000000\n00000000\nCHAR 1075\n00000000\n00000000\n00000000\n00000000\n00000000\n01111110\n01000010\n01000000\n01000000\n01000000\n01000000\n00000000\n00000000\nCHAR 1076\n00000000\n00000000\n00000000\n00000000\n00000000\n00011100\n00100100\n00100100\n00100100\n00100100\n01111110\n01000010\n00000000\nCHAR 1077\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n01000010\n01111110\n01000000\n01000010\n00111100\n00000000\n00000000\nCHAR 1078\n00000000\n00000000\n00000000\n00000000\n00000000\n10010010\n10010010\n01111100\n01010100\n10010010\n10010010\n00000000\n00000000\nCHAR 1079\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n01000010\n00011100\n00000010\n01000010\n00111100\n00000000\n00000000\nCHAR 1080\n00000000\n00000000\n00000000\n00000000\n00000000\n01000010\n01000110\n01001010\n01010010\n01100010\n01000010\n00000000\n00000000\nCHAR 1081\n00000000\n00000000\n01000010\n00111100\n00000000\n01000010\n01000110\n01001010\n01010010\n01100010\n01000010\n00000000\n00000000\nCHAR 1082\n00000000\n00000000\n00000000\n00000000\n00000000\n01000100\n01001000\n01110000\n01001000\n01000100\n01000100\n00000000\n00000000\nCHAR 1083\n00000000\n00000000\n00000000\n00000000\n00000000\n00011110\n00100010\n00100010\n00100010\n00100010\n01000010\n00000000\n00000000\nCHAR 1084\n00000000\n00000000\n00000000\n00000000\n00000000\n01000100\n01101100\n01010100\n01010100\n01000100\n01000100\n00000000\n00000000\nCHAR 1085\n00000000\n00000000\n00000000\n00000000\n00000000\n01000010\n01000010\n01111110\n01000010\n01000010\n01000010\n00000000\n00000000\nCHAR 1086\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 1087\n00000000\n00000000\n00000000\n00000000\n00000000\n01111110\n01000010\n01000010\n01000010\n01000010\n01000010\n00000000\n00000000\nCHAR 1088\n00000000\n00000000\n00000000\n00000000\n00000000\n01011100\n01100010\n01000010\n01000010\n01100010\n01011100\n01000000\n01000000\nCHAR 1089\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n01000010\n01000000\n01000000\n01000010\n00111100\n00000000\n00000000\nCHAR 1090\n00000000\n00000000\n00000000\n00000000\n00000000\n01111100\n00010000\n00010000\n00010000\n00010000\n00010000\n00000000\n00000000\nCHAR 1091\n00000000\n00000000\n00000000\n00000000\n00000000\n01000010\n01000010\n01000010\n01000110\n00111010\n00000010\n01000010\n00111100\nCHAR 1092\n00000000\n00000000\n00010000\n00010000\n00010000\n01111100\n10010010\n10010010\n10010010\n10010010\n01111100\n00010000\n00010000\nCHAR 1093\n00000000\n00000000\n00000000\n00000000\n00000000\n01000010\n00100100\n00011000\n00011000\n00100100\n01000010\n00000000\n00000000\nCHAR 1094\n00000000\n00000000\n00000000\n00000000\n00000000\n01000100\n01000100\n01000100\n01000100\n01000100\n01111110\n00000010\n00000010\nCHAR 1095\n00000000\n00000000\n00000000\n00000000\n00000000\n01000010\n01000010\n01000110\n00111010\n00000010\n00000010\n00000000\n00000000\nCHAR 1096\n00000000\n00000000\n00000000\n00000000\n00000000\n10010010\n10010010\n10010010\n10010010\n10010010\n11111110\n00000000\n00000000\nCHAR 1097\n00000000\n00000000\n00000000\n00000000\n00000000\n10010010\n10010010\n10010010\n10010010\n10010010\n11111110\n00000010\n00000010\nCHAR 1098\n00000000\n00000000\n00000000\n00000000\n00000000\n11100000\n00100000\n00111100\n00100010\n00100010\n00111100\n00000000\n00000000\nCHAR 1099\n00000000\n00000000\n00000000\n00000000\n00000000\n01000010\n01000010\n01110010\n01001010\n01001010\n01110010\n00000000\n00000000\nCHAR 1100\n00000000\n00000000\n00000000\n00000000\n00000000\n00100000\n00100000\n00111100\n00100010\n00100010\n00111100\n00000000\n00000000\nCHAR 1101\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n00000010\n00001110\n00000010\n00000010\n00111100\n00000000\n00000000\nCHAR 1102\n00000000\n00000000\n00000000\n00000000\n00000000\n10001100\n10010010\n10010010\n11110010\n10010010\n10001100\n00000000\n00000000\nCHAR 1103\n00000000\n00000000\n00000000\n00000000\n00000000\n00111110\n01000010\n01000010\n00111110\n00100010\n01000010\n00000000\n00000000\nCHAR 1104\n00000000\n00000000\n00010000\n00001000\n00000000\n00111100\n01000010\n01111110\n01000000\n01000010\n00111100\n00000000\n00000000\nCHAR 1105\n00000000\n00000000\n00100100\n00100100\n00000000\n00111100\n01000010\n01111110\n01000000\n01000010\n00111100\n00000000\n00000000\nCHAR 1106\n00000000\n00000000\n00100000\n01111100\n00100000\n00101100\n00110010\n00100010\n00100010\n00100010\n00100010\n00000010\n00000100\nCHAR 1107\n00000000\n00000000\n00001000\n00010000\n00000000\n01111110\n01000010\n01000000\n01000000\n01000000\n01000000\n00000000\n00000000\nCHAR 1108\n00000000\n00000000\n00000000\n00000000\n00000000\n00111110\n01000000\n01111000\n01000000\n01000000\n00111110\n00000000\n00000000\nCHAR 1109\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n01000010\n00110000\n00001100\n01000010\n00111100\n00000000\n00000000\nCHAR 1110\n00000000\n00000000\n00000000\n00010000\n00000000\n00110000\n00010000\n00010000\n00010000\n00010000\n00111000\n00000000\n00000000\nCHAR 1111\n00000000\n00000000\n01001000\n01001000\n00000000\n00110000\n00010000\n00010000\n00010000\n00010000\n01111100\n00000000\n00000000\nCHAR 1112\n00000000\n00000000\n00000000\n00000100\n00000000\n00001100\n00000100\n00000100\n00000100\n00000100\n00100100\n00100100\n00011000\nCHAR 1113\n00000000\n00000000\n00000000\n00000000\n00000000\n01110000\n10010000\n10011100\n10010010\n10010010\n10011100\n00000000\n00000000\nCHAR 1114\n00000000\n00000000\n00000000\n00000000\n00000000\n10010000\n10010000\n11111100\n10010010\n10010010\n10011100\n00000000\n00000000\nCHAR 1115\n00000000\n00000000\n00100000\n01111100\n00100000\n00101100\n00110010\n00100010\n00100010\n00100010\n00100010\n00000000\n00000000\nCHAR 1116\n00000000\n00000000\n00010000\n00100000\n00000000\n01000100\n01001000\n01110000\n01001000\n01000100\n01000100\n00000000\n00000000\nCHAR 1117\n00000000\n00000000\n00010000\n00001000\n00000000\n01000010\n01000110\n01001010\n01010010\n01100010\n01000010\n00000000\n00000000\nCHAR 1118\n00000000\n00000000\n01000010\n00111100\n00000000\n01000010\n01000010\n01000010\n01000110\n00111010\n00000010\n01000010\n00111100\nCHAR 1119\n00000000\n00000000\n00000000\n00000000\n00000000\n01000100\n01000100\n01000100\n01000100\n01000100\n01111100\n00010000\n00010000\nCHAR 1120\n00000000\n00000000\n01101100\n10000010\n10000010\n10000010\n10000010\n10010010\n10010010\n10010010\n01101100\n00000000\n00000000\nCHAR 1121\n00000000\n00000000\n00000000\n00000000\n00000000\n01000100\n10010010\n10010010\n10010010\n10010010\n01101100\n00000000\n00000000\nCHAR 1122\n00000000\n00000000\n00100000\n11111000\n00100000\n00100000\n00111100\n00100010\n00100010\n00100010\n00111100\n00000000\n00000000\nCHAR 1123\n00000000\n00000000\n00100000\n00100000\n00100000\n11111000\n00100000\n00111100\n00100010\n00100010\n00111100\n00000000\n00000000\nCHAR 1124\n00000000\n00000000\n10001110\n10010000\n10010000\n10010000\n11111100\n10010000\n10010000\n10010000\n10001110\n00000000\n00000000\nCHAR 1125\n00000000\n00000000\n00000000\n00000000\n00000000\n10001110\n10010000\n11111100\n10010000\n10010000\n10001110\n00000000\n00000000\nCHAR 1126\n00000000\n00000000\n00010000\n00101000\n00101000\n01000100\n01000100\n01101100\n10010010\n10010010\n10010010\n00000000\n00000000\nCHAR 1127\n00000000\n00000000\n00000000\n00000000\n00000000\n00010000\n00101000\n01000100\n01101100\n10010010\n10010010\n00000000\n00000000\nCHAR 1128\n00000000\n00000000\n10010000\n10010000\n10101000\n10101000\n10101000\n11000100\n11010100\n10010010\n10010010\n00000000\n00000000\nCHAR 1129\n00000000\n00000000\n00000000\n00000000\n00000000\n01001000\n01010100\n01010100\n01100010\n01101010\n01001010\n00000000\n00000000\nCHAR 1130\n00000000\n00000000\n01111100\n01000100\n01000100\n00101000\n00111000\n01010100\n10010010\n10010010\n10010010\n00000000\n00000000\nCHAR 1131\n00000000\n00000000\n00000000\n00000000\n00000000\n00111000\n00101000\n00101000\n01111100\n10010010\n10010010\n00000000\n00000000\nCHAR 1132\n00000000\n00000000\n10111110\n10100010\n10100010\n10010100\n11111000\n10011100\n10101010\n10101010\n10101010\n00000000\n00000000\nCHAR 1133\n00000000\n00000000\n00000000\n00000000\n00000000\n10011100\n10010100\n11111000\n10011100\n10101010\n10101010\n00000000\n00000000\nCHAR 1134\n00000000\n00100010\n00011100\n00000000\n00111100\n01000010\n00000010\n00011100\n00000010\n00000010\n00111100\n01000000\n00111000\nCHAR 1135\n00000000\n00100010\n00011100\n00000000\n00000000\n00111100\n01000010\n00011100\n00000010\n00000010\n00111100\n01000000\n00111000\nCHAR 1136\n00000000\n00000000\n10010010\n10010010\n10010010\n10010010\n10010010\n01111100\n00010000\n00010000\n00010000\n00000000\n00000000\nCHAR 1137\n00000000\n00000000\n00000000\n00000000\n00000000\n10010010\n10010010\n10010010\n10010010\n10010010\n01111100\n00010000\n00010000\nCHAR 1138\n00000000\n00000000\n00111100\n01000010\n01000010\n01000010\n01111110\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 1139\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n01000010\n01111110\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 1140\n00000000\n00000000\n01000010\n01000100\n01000100\n01001000\n00101000\n00101000\n00101000\n00010000\n00010000\n00000000\n00000000\nCHAR 1141\n00000000\n00000000\n00000000\n00000000\n00000000\n01000010\n01000100\n01001000\n00101000\n00101000\n00010000\n00000000\n00000000\nCHAR 1142\n00000000\n01001000\n00100100\n00000000\n01000010\n01000100\n01001000\n00101000\n00101000\n00010000\n00010000\n00000000\n00000000\nCHAR 1143\n00000000\n00000000\n01001000\n00100100\n00000000\n01000010\n01000100\n01001000\n00101000\n00101000\n00010000\n00000000\n00000000\nCHAR 1144\n00000000\n00000000\n01000000\n10100000\n10100000\n10101010\n10101010\n10101010\n10101010\n10101010\n01000110\n00000010\n00001100\nCHAR 1145\n00000000\n00000000\n00000000\n00000000\n00000000\n01001010\n10101010\n10101010\n10101010\n10101010\n01000110\n00000010\n00001100\nCHAR 1146\n00000000\n00010000\n01111100\n10010010\n10000010\n10000010\n10000010\n10000010\n10000010\n10010010\n01111100\n00010000\n00000000\nCHAR 1147\n00000000\n00000000\n00000000\n00000000\n00010000\n01111100\n10010010\n10000010\n10000010\n10010010\n01111100\n00010000\n00000000\nCHAR 1148\n00000100\n01111100\n01000000\n00000000\n01101100\n10000010\n10010010\n10010010\n10010010\n10010010\n01101100\n00000000\n00000000\nCHAR 1149\n00000100\n01111100\n01000000\n00000000\n00000000\n01101100\n10000010\n10010010\n10010010\n10010010\n01101100\n00000000\n00000000\nCHAR 1150\n00000000\n01111100\n00010000\n00000000\n01101100\n10000010\n10010010\n10010010\n10010010\n10010010\n01101100\n00000000\n00000000\nCHAR 1151\n00000000\n01111100\n00010000\n00000000\n00000000\n10010010\n10010010\n10010010\n01010100\n01010100\n00101000\n00000000\n00000000\nCHAR 1152\n00000000\n00000000\n00111100\n01000010\n01000010\n01000000\n01000000\n01000000\n01000000\n01000000\n00111100\n00000100\n00001110\nCHAR 1153\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n01000010\n01000000\n01000000\n00111100\n00000100\n00000100\n00000000\nCHAR 1154\n00000000\n00000000\n00000000\n00010100\n00001000\n01010100\n00100000\n01010000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 1155\n00000010\n01111110\n01000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 1156\n00111000\n01000110\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 1157\n01111000\n01100110\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 1158\n00011110\n01100110\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 1160\n01000000\n10100100\n00001010\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n01000000\n10100100\n00001010\nCHAR 1161\n00100100\n01001000\n01101100\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00100000\n01000100\n01101000\n00001100\nCHAR 1162\n00000000\n10000100\n01111000\n00000000\n10000100\n10001100\n10010100\n10100100\n11000100\n10000100\n10000110\n00000010\n00000100\nCHAR 1163\n00000000\n00000000\n10000100\n01111000\n00000000\n10000100\n10001100\n10010100\n10100100\n11000100\n10000110\n00000010\n00000100\nCHAR 1164\n00000000\n00000000\n00100000\n01111000\n00100000\n00100000\n00111100\n00100010\n00100010\n00100010\n00111100\n00000000\n00000000\nCHAR 1165\n00000000\n00000000\n00000000\n00000000\n00000000\n00100000\n01111000\n00100000\n00111100\n00100010\n00111100\n00000000\n00000000\nCHAR 1166\n00000000\n00000000\n01111100\n01000010\n01000010\n01001010\n01000100\n01111010\n01000000\n01000000\n01000000\n00000000\n00000000\nCHAR 1167\n00000000\n00000000\n00000000\n00000000\n00000000\n01111100\n01000010\n01001010\n01000100\n01111010\n01000000\n01000000\n01000000\nCHAR 1168\n00000000\n00000010\n01111110\n01000000\n01000000\n01000000\n01000000\n01000000\n01000000\n01000000\n01000000\n00000000\n00000000\nCHAR 1169\n00000000\n00000000\n00000000\n00000000\n00000010\n01111110\n01000000\n01000000\n01000000\n01000000\n01000000\n00000000\n00000000\nCHAR 1170\n00000000\n00000000\n00111110\n00100010\n00100000\n00100000\n01110000\n00100000\n00100000\n00100000\n00100000\n00000000\n00000000\nCHAR 1171\n00000000\n00000000\n00000000\n00000000\n00000000\n00111110\n00100010\n01110000\n00100000\n00100000\n00100000\n00000000\n00000000\nCHAR 1172\n00000000\n00000000\n01111110\n01000000\n01000000\n01000000\n01111100\n01000010\n01000010\n01000010\n11100010\n00001100\n00000000\nCHAR 1173\n00000000\n00000000\n00000000\n00000000\n00000000\n01111110\n01000000\n01111100\n01000010\n01000010\n11100010\n00001100\n00000000\nCHAR 1174\n00000000\n00000000\n10010010\n10010010\n01010100\n00111000\n01010100\n10010010\n10010010\n10010010\n10010011\n00000001\n00000001\nCHAR 1175\n00000000\n00000000\n00000000\n00000000\n00000000\n10010010\n10010010\n01111100\n01010100\n10010010\n10010011\n00000001\n00000001\nCHAR 1176\n00000000\n00000000\n00111100\n01000010\n00000010\n00000010\n00011100\n00000010\n00000010\n01000010\n00111100\n00010000\n00100000\nCHAR 1177\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n01000010\n00011100\n00000010\n01000010\n00111100\n00010000\n00100000\nCHAR 1178\n00000000\n00000000\n01000010\n01000100\n01001000\n01010000\n01100000\n01010000\n01001000\n01000100\n01000010\n00000010\n00000010\nCHAR 1179\n00000000\n00000000\n00000000\n00000000\n00000000\n01001000\n01010000\n01100000\n01010000\n01001000\n01000100\n00000100\n00000100\nCHAR 1180\n00000000\n00000000\n01000010\n01000010\n01010100\n01010100\n01111000\n01010100\n01010100\n01000010\n01000010\n00000000\n00000000\nCHAR 1181\n00000000\n00000000\n00000000\n00000000\n00000000\n01000010\n01010100\n01111000\n01010100\n01000100\n01000010\n00000000\n00000000\nCHAR 1182\n00000000\n00000000\n00100010\n01110100\n00101000\n00110000\n00110000\n00110000\n00101000\n00100100\n00100010\n00000000\n00000000\nCHAR 1183\n00000000\n00000000\n00100000\n00100000\n01110010\n00100100\n00101000\n00110000\n00101000\n00100100\n00100010\n00000000\n00000000\nCHAR 1184\n00000000\n00000000\n01100010\n00100100\n00101000\n00110000\n00110000\n00110000\n00101000\n00100100\n00100010\n00000000\n00000000\nCHAR 1185\n00000000\n00000000\n00000000\n00000000\n00000000\n01100100\n00101000\n00110000\n00101000\n00100100\n00100010\n00000000\n00000000\nCHAR 1186\n00000000\n00000000\n01000100\n01000100\n01000100\n01000100\n01111100\n01000100\n01000100\n01000100\n01000110\n00000010\n00000010\nCHAR 1187\n00000000\n00000000\n00000000\n00000000\n00000000\n01000100\n01000100\n01111100\n01000100\n01000100\n01000110\n00000010\n00000010\nCHAR 1188\n00000000\n00000000\n01001110\n01001000\n01001000\n01001000\n01111000\n01001000\n01001000\n01001000\n01001000\n00000000\n00000000\nCHAR 1189\n00000000\n00000000\n00000000\n00000000\n00000000\n01001110\n01001000\n01111000\n01001000\n01001000\n01001000\n00000000\n00000000\nCHAR 1190\n00000000\n00000000\n11110000\n10010000\n10010000\n10010000\n10011100\n10010010\n10010010\n10010010\n10010010\n00000010\n00001100\nCHAR 1191\n00000000\n00000000\n00000000\n00000000\n00000000\n11110000\n10010000\n10011100\n10010010\n10010010\n10010010\n00000010\n00001100\nCHAR 1192\n00000000\n00000000\n00111100\n01000010\n01000000\n01001100\n01010010\n01010010\n01010010\n00111100\n00010000\n00001110\n00000000\nCHAR 1193\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n01000000\n01001100\n01010010\n00111100\n00010000\n00001110\n00000000\nCHAR 1194\n00000000\n00000000\n00111100\n01000010\n01000000\n01000000\n01000000\n01000000\n01000000\n01000010\n00111100\n00010000\n00011000\nCHAR 1195\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n01000010\n01000000\n01000000\n01000010\n00111100\n00010000\n00011000\nCHAR 1196\n00000000\n00000000\n11111110\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00011000\n00001000\n00001000\nCHAR 1197\n00000000\n00000000\n00000000\n00000000\n00000000\n11111110\n10010010\n00010000\n00010000\n00010000\n00011000\n00001000\n00001000\nCHAR 1198\n00000000\n00000000\n10000010\n10000010\n01000100\n00101000\n00010000\n00010000\n00010000\n00010000\n00010000\n00000000\n00000000\nCHAR 1199\n00000000\n00000000\n00000000\n00000000\n00000000\n10000010\n10000010\n01000100\n00101000\n00010000\n00010000\n00010000\n00010000\nCHAR 1200\n00000000\n00000000\n10000010\n10000010\n01000100\n00101000\n00010000\n01111100\n00010000\n00010000\n00010000\n00000000\n00000000\nCHAR 1201\n00000000\n00000000\n00000000\n00000000\n00000000\n10000010\n10000010\n01000100\n00101000\n00010000\n01111100\n00010000\n00010000\nCHAR 1202\n00000000\n00000000\n01000100\n01000100\n00101000\n00101000\n00010000\n00101000\n00101000\n01000100\n01000110\n00000010\n00000010\nCHAR 1203\n00000000\n00000000\n00000000\n00000000\n00000000\n01000100\n00101000\n00010000\n00101000\n01000100\n01000110\n00000010\n00000010\nCHAR 1204\n00000000\n00000000\n01110010\n00100010\n00100010\n00100010\n00100010\n00100010\n00100010\n00100010\n00111110\n00000010\n00000010\nCHAR 1205\n00000000\n00000000\n00000000\n00000000\n00000000\n01110010\n00100010\n00100010\n00100010\n00100010\n00111110\n00000010\n00000010\nCHAR 1206\n00000000\n00000000\n01000100\n01000100\n01000100\n01000100\n01001100\n00110100\n00000100\n00000100\n00000110\n00000010\n00000010\nCHAR 1207\n00000000\n00000000\n00000000\n00000000\n00000000\n01000100\n01000100\n01001100\n00110100\n00000100\n00000110\n00000010\n00000010\nCHAR 1208\n00000000\n00000000\n01000010\n01000010\n01000010\n01010010\n01010110\n00111010\n00010010\n00010010\n00000010\n00000000\n00000000\nCHAR 1209\n00000000\n00000000\n00000000\n00000000\n00000000\n01000010\n01000010\n01010110\n00111010\n00010010\n00000010\n00000000\n00000000\nCHAR 1210\n00000000\n00000000\n01000000\n01000000\n01000000\n01011100\n01100010\n01000010\n01000010\n01000010\n01000010\n00000000\n00000000\nCHAR 1211\n00000000\n00000000\n00100000\n00100000\n00100000\n00100000\n00101100\n00110010\n00100010\n00100010\n00100010\n00000000\n00000000\nCHAR 1212\n00000000\n00000000\n00011100\n00100010\n10100010\n10100010\n01111110\n00100000\n00100000\n00100010\n00011100\n00000000\n00000000\nCHAR 1213\n00000000\n00000000\n00000000\n00000000\n00000000\n10011100\n10100010\n01111110\n00100000\n00100010\n00011100\n00000000\n00000000\nCHAR 1214\n00000000\n00000000\n00011100\n00100010\n10100010\n10100010\n01111110\n00100000\n00100000\n00100010\n00011100\n00001000\n00001100\nCHAR 1215\n00000000\n00000000\n00000000\n00000000\n00000000\n10011100\n10100010\n01111110\n00100000\n00100010\n00011100\n00001000\n00001100\nCHAR 1216\n00000000\n00000000\n00011100\n00001000\n00001000\n00001000\n00001000\n00001000\n00001000\n00001000\n00011100\n00000000\n00000000\nCHAR 1217\n01000100\n00111000\n00000000\n10010010\n10010010\n01010100\n00111000\n01010100\n10010010\n10010010\n10010010\n00000000\n00000000\nCHAR 1218\n00000000\n00000000\n01000100\n00111000\n00000000\n10010010\n10010010\n01111100\n01010100\n10010010\n10010010\n00000000\n00000000\nCHAR 1219\n00000000\n00000000\n01000010\n01000100\n01001000\n01010000\n01100000\n01010000\n01001000\n01000100\n01000010\n00000010\n00011100\nCHAR 1220\n00000000\n00000000\n00000000\n00000000\n00000000\n01000100\n01001000\n01110000\n01001000\n01000100\n01000100\n00000100\n00011000\nCHAR 1221\n00000000\n00000000\n00111100\n01000100\n01000100\n01000100\n01000100\n01000100\n01000100\n10000100\n10000110\n00000010\n00000100\nCHAR 1222\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n01000100\n01000100\n01000100\n01000100\n10000110\n00000010\n00000100\nCHAR 1223\n00000000\n00000000\n01000010\n01000010\n01000010\n01000010\n01111110\n01000010\n01000010\n01000010\n01000010\n00000010\n00011100\nCHAR 1224\n00000000\n00000000\n00000000\n00000000\n00000000\n01000010\n01000010\n01111110\n01000010\n01000010\n01000010\n00000010\n00011100\nCHAR 1225\n00000000\n00000000\n10000100\n10000100\n10000100\n10000100\n11111100\n10000100\n10000100\n10000100\n10000110\n00000010\n00000100\nCHAR 1226\n00000000\n00000000\n00000000\n00000000\n00000000\n10000100\n10000100\n11111100\n10000100\n10000100\n10000110\n00000010\n00000100\nCHAR 1227\n00000000\n00000000\n01000010\n01000010\n01000010\n01000010\n01000110\n00111010\n00000010\n00000010\n00000110\n00000100\n00000100\nCHAR 1228\n00000000\n00000000\n00000000\n00000000\n00000000\n01000010\n01000010\n01000110\n00111010\n00000010\n00000110\n00000100\n00000100\nCHAR 1229\n00000000\n00000000\n10000010\n10000010\n11000110\n10101010\n10010010\n10010010\n10000010\n10000010\n10000011\n00000001\n00000010\nCHAR 1230\n00000000\n00000000\n00000000\n00000000\n00000000\n01000100\n01101100\n01010100\n01010100\n01000100\n01000110\n00000010\n00000100\nCHAR 1232\n00000000\n01000010\n00111100\n00000000\n00011000\n00100100\n01000010\n01000010\n01111110\n01000010\n01000010\n00000000\n00000000\nCHAR 1233\n00000000\n00000000\n01000010\n00111100\n00000000\n00111100\n00000010\n00111110\n01000010\n01000110\n00111010\n00000000\n00000000\nCHAR 1234\n00000000\n00100100\n00100100\n00000000\n00011000\n00100100\n01000010\n01000010\n01111110\n01000010\n01000010\n00000000\n00000000\nCHAR 1235\n00000000\n00000000\n00100100\n00100100\n00000000\n00011100\n00000010\n00111110\n01000010\n01000110\n00111010\n00000000\n00000000\nCHAR 1236\n00000000\n00000000\n01101110\n10010000\n10010000\n10010000\n10011100\n11110000\n10010000\n10010000\n10011110\n00000000\n00000000\nCHAR 1237\n00000000\n00000000\n00000000\n00000000\n00000000\n01111100\n00010010\n01111100\n10010000\n10010010\n01101100\n00000000\n00000000\nCHAR 1238\n00000000\n01000010\n00111100\n00000000\n01111110\n01000000\n01000000\n01111100\n01000000\n01000000\n01111110\n00000000\n00000000\nCHAR 1239\n00000000\n00000000\n01000010\n00111100\n00000000\n00111100\n01000010\n01111110\n01000000\n01000010\n00111100\n00000000\n00000000\nCHAR 1240\n00000000\n00000000\n00111100\n01000010\n00000010\n00000010\n01111110\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 1241\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n01000010\n00000010\n01111110\n01000010\n00111100\n00000000\n00000000\nCHAR 1242\n00000000\n00100100\n00100100\n00000000\n00111100\n01000010\n00000010\n01111110\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 1243\n00000000\n00000000\n00100100\n00100100\n00000000\n00111100\n01000010\n00000010\n01111110\n01000010\n00111100\n00000000\n00000000\nCHAR 1244\n00101000\n00101000\n00000000\n10010010\n10010010\n01010100\n00111000\n01010100\n10010010\n10010010\n10010010\n00000000\n00000000\nCHAR 1245\n00000000\n00000000\n00101000\n00101000\n00000000\n10010010\n10010010\n01111100\n01010100\n10010010\n10010010\n00000000\n00000000\nCHAR 1246\n00000000\n00100100\n00100100\n00000000\n00111100\n01000010\n00000010\n00011100\n00000010\n01000010\n00111100\n00000000\n00000000\nCHAR 1247\n00000000\n00000000\n00100100\n00100100\n00000000\n00111100\n01000010\n00011100\n00000010\n01000010\n00111100\n00000000\n00000000\nCHAR 1248\n00000000\n00000000\n01111110\n00000010\n00000100\n00001000\n00011100\n00000010\n00000010\n01000010\n00111100\n00000000\n00000000\nCHAR 1249\n00000000\n00000000\n00000000\n00000000\n00000000\n01111110\n00000100\n00001000\n00011100\n00000010\n00000010\n01000010\n00111100\nCHAR 1250\n00000000\n00000000\n01111110\n00000000\n01000010\n01000110\n01001010\n01010010\n01100010\n01000010\n01000010\n00000000\n00000000\nCHAR 1251\n00000000\n00000000\n00000000\n01111110\n00000000\n01000010\n01000110\n01001010\n01010010\n01100010\n01000010\n00000000\n00000000\nCHAR 1252\n00000000\n00100100\n00100100\n00000000\n01000010\n01000110\n01001010\n01010010\n01100010\n01000010\n01000010\n00000000\n00000000\nCHAR 1253\n00000000\n00000000\n00100100\n00100100\n00000000\n01000010\n01000110\n01001010\n01010010\n01100010\n01000010\n00000000\n00000000\nCHAR 1254\n00000000\n00100100\n00100100\n00000000\n00111100\n01000010\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 1255\n00000000\n00000000\n00100100\n00100100\n00000000\n00111100\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 1256\n00000000\n00000000\n00111100\n01000010\n01000010\n01000010\n01111110\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 1257\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n01000010\n01111110\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 1258\n00000000\n00100100\n00100100\n00000000\n00111100\n01000010\n01000010\n01111110\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 1259\n00000000\n00000000\n00100100\n00100100\n00000000\n00111100\n01000010\n01111110\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 1260\n00101000\n00000000\n01111000\n00000100\n00000010\n00000010\n00111110\n00000010\n00000010\n00000100\n01111000\n00000000\n00000000\nCHAR 1261\n00000000\n00000000\n00000000\n00010100\n00000000\n00111100\n00000010\n00001110\n00000010\n00000010\n00111100\n00000000\n00000000\nCHAR 1262\n00000000\n00000000\n01111110\n00000000\n01000010\n01000010\n01000110\n00111010\n00000010\n01000010\n00111100\n00000000\n00000000\nCHAR 1263\n00000000\n00000000\n00000000\n01111110\n00000000\n01000010\n01000010\n01000010\n01000110\n00111010\n00000010\n01000010\n00111100\nCHAR 1264\n00000000\n00100100\n00100100\n00000000\n01000010\n01000010\n01000110\n00111010\n00000010\n01000010\n00111100\n00000000\n00000000\nCHAR 1265\n00000000\n00000000\n00100100\n00100100\n00000000\n01000010\n01000010\n01000010\n01000110\n00111010\n00000010\n01000010\n00111100\nCHAR 1266\n00000000\n00010010\n00100100\n00000000\n01000010\n01000010\n01000110\n00111010\n00000010\n01000010\n00111100\n00000000\n00000000\nCHAR 1267\n00000000\n00000000\n00010010\n00100100\n00000000\n01000010\n01000010\n01000010\n01000110\n00111010\n00000010\n01000010\n00111100\nCHAR 1268\n00000000\n00100100\n00100100\n00000000\n01000010\n01000010\n01000110\n00111010\n00000010\n00000010\n00000010\n00000000\n00000000\nCHAR 1269\n00000000\n00000000\n00100100\n00100100\n00000000\n01000010\n01000010\n01000110\n00111010\n00000010\n00000010\n00000000\n00000000\nCHAR 1272\n00000000\n00100100\n00100100\n00000000\n01000010\n01000010\n01110010\n01001010\n01001010\n01001010\n01110010\n00000000\n00000000\nCHAR 1273\n00000000\n00000000\n00100100\n00100100\n00000000\n01000010\n01000010\n01110010\n01001010\n01001010\n01110010\n00000000\n00000000\nCHAR 1280\n00000000\n00000000\n00000010\n00000010\n00000010\n00111110\n01000010\n01000010\n01000010\n01000010\n00111110\n00000000\n00000000\nCHAR 1281\n00000000\n00000000\n00000100\n00000100\n00000100\n00111100\n01000100\n01000100\n01000100\n01000100\n00111100\n00000000\n00000000\nCHAR 1282\n00000000\n00000000\n00001000\n00001000\n00001000\n01111000\n10001000\n10001010\n10001010\n10001010\n01111100\n00000000\n00000000\nCHAR 1283\n00000000\n00000000\n00001000\n00001000\n00001000\n00111000\n01001000\n01001000\n01001010\n01001010\n00111100\n00000000\n00000000\nCHAR 1284\n00000000\n00000000\n01110000\n10001000\n00001000\n00001000\n00110000\n00001010\n00001010\n00001010\n00000100\n00000000\n00000000\nCHAR 1285\n00000000\n00000000\n00000000\n00000000\n00000000\n00110000\n01001000\n00001000\n00110010\n00001010\n00000100\n00000000\n00000000\nCHAR 1286\n00000000\n00000000\n00111000\n01000100\n00000100\n00000100\n00000100\n00011000\n00000100\n00000100\n00000110\n00000010\n00000100\nCHAR 1287\n00000000\n00000000\n00000000\n00000000\n00000000\n00111000\n01000100\n00000100\n00011000\n00000100\n00000110\n00000010\n00000100\nCHAR 1288\n00000000\n00000000\n00111000\n01001000\n01001000\n01001000\n01001000\n01001010\n01001010\n01001010\n10000100\n00000000\n00000000\nCHAR 1289\n00000000\n00000000\n00000000\n00000000\n00000000\n00111000\n01001000\n01001000\n01001010\n01001010\n10000100\n00000000\n00000000\nCHAR 1290\n00000000\n00000000\n10001000\n10001000\n10001000\n10001000\n11111000\n10001010\n10001010\n10001010\n10000100\n00000000\n00000000\nCHAR 1291\n00000000\n00000000\n00000000\n00000000\n00000000\n10001000\n10001000\n11111000\n10001010\n10001010\n10000100\n00000000\n00000000\nCHAR 1292\n00000000\n00000000\n00011100\n00100010\n01000000\n01000000\n01000000\n01000110\n01000010\n00100010\n00011100\n00000000\n00000000\nCHAR 1293\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n01000010\n01000000\n01000110\n01000010\n00111100\n00000000\n00000000\nCHAR 1294\n00000000\n00000000\n11111110\n00010000\n00010000\n00010000\n00010000\n00010100\n00010100\n00010100\n00001000\n00000000\n00000000\nCHAR 1295\n00000000\n00000000\n00000000\n00000000\n00000000\n01111100\n00010000\n00010000\n00010100\n00010100\n00001000\n00000000\n00000000\nCHAR 1329\n00000000\n00000000\n10001000\n10001000\n10001000\n10001000\n10001000\n10001000\n10011100\n10001010\n01110010\n00000000\n00000000\nCHAR 1330\n00000000\n00000000\n00111100\n01000010\n01000010\n01000000\n01000000\n01111100\n01000010\n01000000\n01000000\n00000000\n00000000\nCHAR 1331\n00000000\n00000000\n01110000\n10001000\n10001000\n10001000\n10001000\n01111100\n00001010\n00001000\n00001000\n00000000\n00000000\nCHAR 1332\n00000000\n00000000\n01110000\n10001000\n10001000\n00001000\n00001100\n00001010\n00001000\n00001000\n00001000\n00000000\n00000000\nCHAR 1333\n00000000\n00000000\n01000000\n01000000\n01111100\n01000010\n01000000\n01000000\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 1334\n00000000\n00000000\n00111100\n01000010\n01000010\n01000010\n00111100\n00000100\n00001000\n01111100\n01000010\n00000000\n00000000\nCHAR 1335\n00000000\n00000000\n01000000\n01000000\n01000000\n01111100\n01000010\n01000000\n01000000\n01000000\n01111100\n00000010\n00000000\nCHAR 1336\n00000000\n00000000\n00111100\n01000010\n01000010\n01000010\n01000000\n01000000\n01000000\n01000000\n01111100\n00000010\n00000000\nCHAR 1337\n00000000\n00000000\n01111000\n10000100\n10000100\n10000100\n10011110\n10100100\n10100100\n10100100\n10011000\n00000000\n00000000\nCHAR 1338\n00000000\n00000000\n00000100\n00000100\n00000100\n01111110\n10000100\n10000100\n10000100\n10000100\n01111000\n00000000\n00000000\nCHAR 1339\n00000000\n00000000\n01000000\n01000000\n01000000\n01111100\n01000010\n01000010\n01000000\n01000000\n01000000\n00000000\n00000000\nCHAR 1340\n00000000\n00000000\n01000000\n01000000\n01000000\n01000000\n01000000\n01000000\n01000000\n01000000\n01111100\n00000010\n00000100\nCHAR 1341\n00000000\n00000000\n10000000\n10000000\n10000000\n11110010\n10010010\n10010010\n10010010\n10010010\n10001100\n00000000\n00000000\nCHAR 1342\n00000000\n00000000\n01111110\n00011000\n00100100\n01000010\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 1343\n00000000\n00000000\n01000000\n01000000\n01000010\n01000010\n01000010\n01000110\n00111010\n00000010\n00000010\n00000000\n00000000\nCHAR 1344\n00000000\n00000000\n00001000\n00010000\n00001000\n00010000\n00100000\n01000000\n01100000\n00011000\n00000110\n00000000\n00000000\nCHAR 1345\n00000000\n00000000\n00111100\n01000010\n01000010\n01000010\n00000010\n00000010\n00111100\n01000100\n00111010\n00000000\n00000000\nCHAR 1346\n00000000\n00000000\n01110000\n10001000\n10001000\n10001000\n00001000\n00001000\n00001000\n00001000\n00001100\n00000010\n00000000\nCHAR 1347\n00000000\n00000000\n11001100\n00110010\n00010000\n00101000\n01000100\n01000100\n10000010\n10000010\n11111110\n00000000\n00000000\nCHAR 1348\n00000000\n00000000\n10001100\n10001010\n10001010\n10001000\n10001000\n10001000\n10001000\n10001000\n01110000\n00000000\n00000000\nCHAR 1349\n00000000\n00000000\n00111000\n01000100\n00000100\n01111000\n10000100\n00000010\n00000010\n10000100\n01111000\n00000000\n00000000\nCHAR 1350\n00000000\n00000000\n11100000\n00100000\n00100000\n00100000\n00100000\n00100010\n00100010\n00100010\n00011100\n00000000\n00000000\nCHAR 1351\n00000000\n00000000\n01100000\n00011000\n00100110\n01000000\n01000000\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 1352\n00000000\n00000000\n00111100\n01000010\n01000010\n01000010\n01000010\n01000010\n01000010\n01000010\n01000010\n00000000\n00000000\nCHAR 1353\n00000000\n00000000\n00111100\n01000010\n01000010\n01000010\n00000010\n00000010\n01100100\n00011000\n00000110\n00000000\n00000000\nCHAR 1354\n00000000\n00000000\n01111100\n10010010\n10010010\n10010010\n00010010\n00010010\n00000010\n00000010\n00000010\n00000000\n00000000\nCHAR 1355\n00000000\n00000000\n00111000\n01000100\n01000010\n00100010\n00010010\n00001100\n00001000\n01111100\n00100010\n00000000\n00000000\nCHAR 1356\n00000000\n00000000\n01110000\n10001000\n10001000\n10001100\n10001010\n10001010\n10001000\n10001000\n10001000\n00000000\n00000000\nCHAR 1357\n00000000\n00000000\n01000010\n01000010\n01000010\n01000010\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 1358\n00000000\n00000000\n00001000\n00001000\n10001000\n10001000\n10001000\n01111000\n00001000\n00001000\n00001100\n00000010\n00000010\nCHAR 1359\n00000000\n00000000\n00111100\n01000010\n01000000\n01000000\n00111100\n00000010\n00000010\n01000010\n00111100\n00000000\n00000000\nCHAR 1360\n00000000\n00000000\n00111100\n01000010\n01000010\n01000000\n01000000\n01000000\n01000000\n01000000\n01000000\n00000000\n00000000\nCHAR 1361\n00000000\n00000000\n00111000\n01000100\n01000100\n00111000\n11000100\n00000010\n00000010\n10000010\n01111100\n00000000\n00000000\nCHAR 1362\n00000000\n00000000\n01000000\n01000000\n01000000\n01111000\n01000100\n01000000\n01000000\n01000000\n01000000\n00000000\n00000000\nCHAR 1363\n00000000\n00000000\n00010000\n01111100\n10010010\n10010010\n10010010\n10010010\n10010010\n01111100\n00010000\n00000000\n00000000\nCHAR 1364\n00000000\n00000000\n00011100\n00100010\n00100010\n00100010\n00100010\n00111100\n10100000\n01111100\n00100010\n00000000\n00000000\nCHAR 1365\n00000000\n00000000\n00111000\n01000100\n10000010\n10000010\n10000010\n10000010\n10000010\n01000100\n00111000\n00000000\n00000000\nCHAR 1366\n00000000\n00000000\n01100000\n10010000\n10010000\n01111100\n00010010\n00010010\n10010010\n10010010\n01111100\n00000000\n00000000\nCHAR 1369\n00000000\n00100000\n01000000\n01000000\n00100000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 1370\n00000000\n00100000\n00010000\n00010000\n00100000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 1371\n00000000\n00000000\n00001000\n00010000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 1372\n00000000\n00000100\n00111000\n01000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 1373\n00000000\n00000000\n00010000\n00001000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 1374\n00000000\n00000000\n00111000\n01000100\n01010100\n01001000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 1375\n00000000\n00000000\n01100000\n01000100\n00111000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 1377\n00000000\n00000000\n00000000\n00000000\n00000000\n10000010\n10010010\n10010010\n10010010\n10010010\n01101110\n00000000\n00000000\nCHAR 1378\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n01000010\n01000010\n01000010\n01000000\n01111110\n01000000\n01000000\nCHAR 1379\n00000000\n00000000\n00000000\n00000000\n00000000\n00110100\n01001100\n01000100\n01000100\n01000100\n00111110\n00000100\n00000100\nCHAR 1380\n00000000\n00000000\n00000000\n00000000\n00000000\n01011000\n01100100\n01000100\n01000100\n01000100\n01000110\n00000100\n00000100\nCHAR 1381\n00000000\n00000000\n01000000\n01000000\n01000000\n01111110\n01000000\n01000010\n01000010\n01000110\n00111010\n00000000\n00000000\nCHAR 1382\n00000000\n00000000\n00000000\n00000000\n00000000\n00110100\n01001100\n01000100\n01000100\n01001100\n00110100\n00000100\n00000110\nCHAR 1383\n00000000\n00000000\n01000000\n01000000\n01111100\n01000000\n01000000\n01000000\n01000000\n01000000\n00111100\n00000010\n00000100\nCHAR 1384\n00000000\n00000000\n00000000\n00000000\n00000000\n01011100\n01100010\n01000010\n01000010\n01000010\n01000010\n01000000\n01111110\nCHAR 1385\n00000000\n00000000\n00000000\n00000000\n00000000\n01011000\n01100100\n01000100\n01001110\n01010100\n01001000\n01000000\n01000000\nCHAR 1386\n00000000\n00000000\n00000100\n00000100\n00000100\n00111110\n01000100\n01000100\n01000100\n01000100\n00111000\n00000000\n00000000\nCHAR 1387\n00000000\n00000000\n01000000\n01000000\n01000000\n01011000\n01100100\n01000100\n01000100\n01000100\n01000100\n01000000\n01000000\nCHAR 1388\n00000000\n00000000\n00000000\n00000000\n00000000\n00110000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00001100\nCHAR 1389\n00000000\n00000000\n01000000\n01000000\n01000000\n01000000\n01110010\n01010010\n01010010\n01010010\n01001110\n01000000\n01000000\nCHAR 1390\n00000000\n00000000\n00000000\n01110000\n00001000\n00000100\n00111110\n01000100\n01000100\n01000100\n00111000\n00000000\n00000000\nCHAR 1391\n00000000\n00000000\n01000000\n01000000\n01000000\n01000000\n01000010\n01000010\n01000010\n01000110\n00111010\n00000010\n00000010\nCHAR 1392\n00000000\n00000000\n01000000\n01000000\n01000000\n01011100\n01100010\n01000010\n01000010\n01000010\n01000010\n00000000\n00000000\nCHAR 1393\n00000000\n00000000\n00001000\n00010000\n00001000\n00111100\n01000010\n01000010\n01000010\n01000110\n00111010\n00000000\n00000000\nCHAR 1394\n00000000\n00000000\n00000000\n00000000\n00000000\n01011000\n01100100\n01000100\n01000100\n01000100\n01000100\n00000100\n00000110\nCHAR 1395\n00000000\n00000000\n00011100\n00100010\n00100000\n01111100\n00100010\n00100010\n00100010\n00100110\n00111010\n00000000\n00000000\nCHAR 1396\n00000000\n00000000\n00000100\n00001010\n00001000\n01000100\n01000100\n01000100\n01000100\n01001100\n00110100\n00000000\n00000000\nCHAR 1397\n00000000\n00000000\n00000000\n00000000\n00000000\n00001100\n00000100\n00000100\n00000100\n00000100\n00000100\n00000100\n00111000\nCHAR 1398\n00000000\n00000000\n00110000\n01000000\n01000000\n00100010\n00100010\n00100010\n00100010\n00100110\n00011010\n00000000\n00000000\nCHAR 1399\n00000000\n00000000\n00000000\n00000000\n00000000\n00111000\n01000100\n00000100\n00001000\n00010000\n00100000\n01000000\n00111100\nCHAR 1400\n00000000\n00000000\n00000000\n00000000\n00000000\n01011100\n01100010\n01000010\n01000010\n01000010\n01000010\n00000000\n00000000\nCHAR 1401\n00000000\n00000000\n00000000\n00000000\n00010000\n00100000\n00010000\n00001000\n00010000\n00100000\n01000000\n01000000\n00111110\nCHAR 1402\n00000000\n00000000\n00000000\n00000000\n00000000\n10000010\n10010010\n10010010\n10010010\n10010010\n01101110\n00000010\n00000010\nCHAR 1403\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n01000010\n01000010\n01000010\n00110100\n00001000\n00010000\n00011110\nCHAR 1404\n00000000\n00000000\n00000000\n00000000\n00000000\n01011100\n01100010\n01000010\n01000100\n01001000\n01011100\n00000000\n00000000\nCHAR 1405\n00000000\n00000000\n00000000\n00000000\n00000000\n01000010\n01000010\n01000010\n01000010\n01000110\n00111010\n00000000\n00000000\nCHAR 1406\n00000000\n00000000\n00000100\n00000100\n00000100\n01000100\n01000100\n01000100\n01000100\n01001100\n00110100\n00000100\n00000110\nCHAR 1407\n00000000\n00000000\n00000000\n00000000\n00000000\n10010100\n10011010\n10010010\n10010010\n10110010\n01010010\n00010000\n00010000\nCHAR 1408\n00000000\n00000000\n00000000\n00000000\n01011100\n01100010\n01000010\n01000010\n01000010\n01000010\n01000010\n01000000\n01000000\nCHAR 1409\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n01000010\n01000010\n01000010\n00111110\n00000010\n01000010\n00111100\nCHAR 1410\n00000000\n00000000\n00000000\n00000000\n00000000\n00110000\n00010000\n00010000\n00010000\n00010000\n00001100\n00000000\n00000000\nCHAR 1411\n00000000\n00000000\n00010000\n00010000\n00010000\n10010100\n10011010\n10010010\n10010010\n10110010\n01010010\n00010000\n00010000\nCHAR 1412\n00000000\n00000000\n00011100\n00100010\n00100000\n00100000\n01111100\n00100000\n00100000\n00100000\n00100000\n00000000\n00000000\nCHAR 1413\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 1414\n00000000\n00000000\n01110000\n10010000\n10010000\n01111100\n00010010\n10010010\n10010010\n10010010\n01111100\n00010000\n00010000\nCHAR 1415\n00000000\n00000000\n01000000\n01000000\n01000000\n01000100\n01000100\n01000100\n01000100\n01000100\n00111010\n00000000\n00000000\nCHAR 1417\n00000000\n00000000\n00000000\n00000000\n00011000\n00011000\n00000000\n00011000\n00011000\n00000000\n00000000\n00000000\n00000000\nCHAR 1418\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n01100000\n01000100\n00111000\n00000000\n00000000\n00000000\n00000000\nCHAR 1456\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00010000\n00000000\n00010000\nCHAR 1457\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n11011011\n00000000\n00110011\nCHAR 1458\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n01110110\n00000000\n00000110\nCHAR 1459\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n01110110\n00100000\n00100110\nCHAR 1460\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00110000\n00000000\nCHAR 1461\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n01101100\n00000000\nCHAR 1462\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n11001100\n00000000\n00110000\nCHAR 1463\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n01111000\n00000000\nCHAR 1464\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n01111100\n00010000\n00010000\nCHAR 1465\n00000000\n00000000\n00000000\n00010000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 1467\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n01000000\n00010000\n00000100\nCHAR 1468\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00010000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 1469\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00010000\n00010000\nCHAR 1470\n00000000\n00000000\n00111110\n01111100\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 1471\n00000000\n00111100\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 1472\n00000000\n00000000\n00000000\n00000000\n00000000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00000000\n00000000\nCHAR 1473\n00000000\n00000000\n00000000\n00001100\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 1474\n00000000\n00000000\n00000000\n01100000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 1475\n00000000\n00000000\n00000000\n00000000\n00000000\n00010000\n00010000\n00000000\n00000000\n00010000\n00010000\n00000000\n00000000\nCHAR 1476\n00000000\n00000000\n00000000\n00011000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 1488\n00000000\n00000000\n00000000\n00000000\n01000100\n00100010\n00010010\n00101100\n01000100\n01000010\n01100010\n00000000\n00000000\nCHAR 1489\n00000000\n00000000\n00000000\n00000000\n01111100\n00000100\n00000100\n00000100\n00000100\n00000100\n01111110\n00000000\n00000000\nCHAR 1490\n00000000\n00000000\n00000000\n00000000\n00110000\n00001000\n00001000\n00000100\n00001100\n00010010\n01100010\n00000000\n00000000\nCHAR 1491\n00000000\n00000000\n00000000\n00000000\n01111110\n00000100\n00000100\n00000100\n00000100\n00000100\n00000100\n00000000\n00000000\nCHAR 1492\n00000000\n00000000\n00000000\n00000000\n01111110\n00000010\n00000010\n00100010\n00100010\n00100010\n00100010\n00000000\n00000000\nCHAR 1493\n00000000\n00000000\n00000000\n00000000\n00011000\n00001000\n00001000\n00001000\n00001000\n00001000\n00001000\n00000000\n00000000\nCHAR 1494\n00000000\n00000000\n00000000\n00000000\n01111100\n00010000\n00010000\n00001000\n00001000\n00001000\n00001000\n00000000\n00000000\nCHAR 1495\n00000000\n00000000\n00000000\n00000000\n01111110\n00100010\n00100010\n00100010\n00100010\n00100010\n00100010\n00000000\n00000000\nCHAR 1496\n00000000\n00000000\n00000000\n00000000\n01000110\n01001010\n01000010\n01000010\n01000010\n01000100\n01111000\n00000000\n00000000\nCHAR 1497\n00000000\n00000000\n00000000\n00000000\n00011000\n00001000\n00001000\n00001000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 1498\n00000000\n00000000\n00000000\n00000000\n01111110\n00000010\n00000010\n00000010\n00000010\n00000010\n00000010\n00000010\n00000010\nCHAR 1499\n00000000\n00000000\n00000000\n00000000\n01111110\n00000010\n00000010\n00000010\n00000010\n00000100\n01111000\n00000000\n00000000\nCHAR 1500\n00000000\n00000000\n01000000\n01000000\n01111110\n00000010\n00000010\n00000010\n00000100\n00001000\n00110000\n00000000\n00000000\nCHAR 1501\n00000000\n00000000\n00000000\n00000000\n01111110\n00100010\n00100010\n00100010\n00100010\n00100010\n00111110\n00000000\n00000000\nCHAR 1502\n00000000\n00000000\n00000000\n00000000\n01001100\n01010010\n00100010\n01000010\n01000010\n01000010\n01011110\n00000000\n00000000\nCHAR 1503\n00000000\n00000000\n00000000\n00000000\n00011000\n00001000\n00001000\n00001000\n00001000\n00001000\n00001000\n00001000\n00001000\nCHAR 1504\n00000000\n00000000\n00000000\n00000000\n00000110\n00000010\n00000010\n00000010\n00000010\n00000010\n00111110\n00000000\n00000000\nCHAR 1505\n00000000\n00000000\n00000000\n00000000\n01111110\n00100010\n00100010\n00100010\n00100010\n00100100\n00111000\n00000000\n00000000\nCHAR 1506\n00000000\n00000000\n00000000\n00000000\n01100110\n00100010\n00100010\n00100010\n00100010\n00100100\n01111000\n00000000\n00000000\nCHAR 1507\n00000000\n00000000\n00000000\n00000000\n01111110\n00100010\n00100010\n00100010\n00000010\n00000010\n00000010\n00000010\n00000010\nCHAR 1508\n00000000\n00000000\n00000000\n00000000\n01111110\n00100010\n00100010\n00100010\n00000010\n00000100\n01111000\n00000000\n00000000\nCHAR 1509\n00000000\n00000000\n00000000\n00000000\n01000100\n00100010\n00100010\n00100010\n00100100\n00111000\n00100000\n00100000\n00100000\nCHAR 1510\n00000000\n00000000\n00000000\n00000000\n01000100\n00100010\n00010010\n00001100\n00000100\n00000010\n01111110\n00000000\n00000000\nCHAR 1511\n00000000\n00000000\n00000000\n00000000\n01111110\n00000010\n00000010\n01000010\n01000010\n01000100\n01011000\n01000000\n01000000\nCHAR 1512\n00000000\n00000000\n00000000\n00000000\n01111110\n00000010\n00000010\n00000010\n00000010\n00000010\n00000010\n00000000\n00000000\nCHAR 1513\n00000000\n00000000\n00000000\n00000000\n01001001\n01001001\n01001001\n01001001\n01110001\n01000010\n01111100\n00000000\n00000000\nCHAR 1514\n00000000\n00000000\n00000000\n00000000\n01111110\n00100010\n00100010\n00100010\n00100010\n00100010\n01100010\n00000000\n00000000\nCHAR 1520\n00000000\n00000000\n00000000\n00000000\n01100110\n00100010\n00100010\n00100010\n00100010\n00100010\n00100010\n00000000\n00000000\nCHAR 1521\n00000000\n00000000\n00000000\n00000000\n01100110\n00100010\n00100010\n00000010\n00000010\n00000010\n00000010\n00000000\n00000000\nCHAR 1522\n00000000\n00000000\n00000000\n00000000\n01100110\n00100010\n00100010\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 1523\n00000000\n00000000\n00000000\n00000000\n00001000\n00010000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 1524\n00000000\n00000000\n00000000\n00000000\n00100100\n01001000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 3585\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n01000010\n01100010\n00100010\n00100010\n00100010\n00000000\n00000000\nCHAR 3586\n00000000\n00000000\n00000000\n00000000\n00000000\n01110100\n01110100\n00010100\n01100100\n01000100\n00111000\n00000000\n00000000\nCHAR 3587\n00000000\n00000000\n00000000\n00000000\n00000000\n01001010\n01111010\n00001010\n00110010\n00100010\n00011100\n00000000\n00000000\nCHAR 3588\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n01000010\n01011010\n01011010\n01010010\n00110010\n00000000\n00000000\nCHAR 3589\n00000000\n00000000\n00000000\n00000000\n00000000\n00110100\n01001010\n01011010\n01011010\n01010010\n00110010\n00000000\n00000000\nCHAR 3590\n00000000\n00000000\n00000000\n00000000\n00000000\n01010010\n01110010\n00010010\n00100010\n01110010\n01101100\n00000000\n00000000\nCHAR 3591\n00000000\n00000000\n00000000\n00000000\n00000000\n00001100\n00001100\n01000100\n00100100\n00100100\n00011100\n00000000\n00000000\nCHAR 3592\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n01000010\n00011010\n00011010\n00001010\n00001100\n00000000\n00000000\nCHAR 3593\n00000000\n00000000\n00000000\n00000000\n00000000\n01111000\n00000100\n01100100\n01100100\n00101110\n00110110\n00000000\n00000000\nCHAR 3594\n00000000\n00000000\n00000000\n00000000\n00000100\n01100100\n01101000\n00100100\n01000100\n01000100\n00111000\n00000000\n00000000\nCHAR 3595\n00000000\n00000000\n00000000\n00000000\n00000010\n01010010\n01110100\n00010010\n00100010\n00100010\n00011100\n00000000\n00000000\nCHAR 3596\n00000000\n00000000\n00000000\n00000000\n00000000\n00111001\n01000101\n00100101\n01000101\n01101111\n01101101\n00000000\n00000000\nCHAR 3597\n00000000\n00000000\n00000000\n00000000\n00000000\n00110010\n01001010\n00101010\n01001110\n01101000\n01101110\n00000000\n00000000\nCHAR 3598\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n01000010\n00100010\n00100010\n01100010\n01101010\n00010010\n00101110\nCHAR 3599\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n01000010\n00100010\n00100010\n01100010\n01101010\n00011110\n00101010\nCHAR 3600\n00000000\n00000000\n00000000\n00000000\n00000000\n00111110\n01000000\n00111100\n00110010\n00110010\n00001100\n00101010\n01010110\nCHAR 3601\n00000000\n00000000\n00000000\n00000000\n00000000\n01010100\n01111010\n00010010\n00100010\n00100010\n00100010\n00000000\n00000000\nCHAR 3602\n00000000\n00000000\n00000000\n00000000\n00000000\n00101001\n01010101\n01000101\n01110101\n01011111\n01101101\n00000000\n00000000\nCHAR 3603\n00000000\n00000000\n00000000\n00000000\n00000000\n00110010\n01001010\n00101010\n01001010\n01101111\n01101011\n00000000\n00000000\nCHAR 3604\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n01000010\n01011010\n01011010\n01001010\n00110010\n00000000\n00000000\nCHAR 3605\n00000000\n00000000\n00000000\n00000000\n00000000\n00110100\n01001010\n01011010\n01011010\n01001010\n00110010\n00000000\n00000000\nCHAR 3606\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n01000010\n01100010\n00100010\n00110010\n00110010\n00000000\n00000000\nCHAR 3607\n00000000\n00000000\n00000000\n00000000\n00000000\n01100100\n01101010\n00110010\n00100010\n00100010\n00100010\n00000000\n00000000\nCHAR 3608\n00000000\n00000000\n00000000\n00000000\n00000000\n00111110\n01000000\n01111100\n00100010\n00100010\n00011100\n00000000\n00000000\nCHAR 3609\n00000000\n00000000\n00000000\n00000000\n00000000\n01100100\n01100100\n00100100\n01000100\n01001110\n00110110\n00000000\n00000000\nCHAR 3610\n00000000\n00000000\n00000000\n00000000\n00000000\n01100010\n01100010\n00100010\n00100010\n00100010\n00011100\n00000000\n00000000\nCHAR 3611\n00000000\n00000000\n00000000\n00000010\n00000010\n01100010\n01100010\n00100010\n00100010\n00100010\n00011100\n00000000\n00000000\nCHAR 3612\n00000000\n00000000\n00000000\n00000000\n00000000\n01100010\n01100010\n01000010\n01001010\n01001010\n00110100\n00000000\n00000000\nCHAR 3613\n00000000\n00000000\n00000000\n00000010\n00000010\n01100010\n01100010\n01000010\n01001010\n01001010\n00110100\n00000000\n00000000\nCHAR 3614\n00000000\n00000000\n00000000\n00000000\n00000000\n01101010\n01101010\n00101010\n00101010\n00101010\n00010100\n00000000\n00000000\nCHAR 3615\n00000000\n00000000\n00000000\n00000010\n00000010\n01101010\n01101010\n00101010\n00101010\n00101010\n00010100\n00000000\n00000000\nCHAR 3616\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n01000010\n01100010\n00100010\n01100010\n01100010\n00000000\n00000000\nCHAR 3617\n00000000\n00000000\n00000000\n00000000\n00000000\n01100010\n01100010\n00100010\n00100010\n01110010\n01101100\n00000000\n00000000\nCHAR 3618\n00000000\n00000000\n00000000\n00000000\n00000000\n01100010\n01100010\n01000010\n00110010\n01000010\n00111100\n00000000\n00000000\nCHAR 3619\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n01000010\n01111000\n00000100\n00001100\n00001100\n00000000\n00000000\nCHAR 3620\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n01000010\n01100010\n00100010\n00110010\n00110010\n00000010\n00000010\nCHAR 3621\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n01000010\n00011010\n00100110\n00110010\n00110010\n00000000\n00000000\nCHAR 3622\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n01000010\n01100010\n00100010\n01100010\n01100010\n00000010\n00000010\nCHAR 3623\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n01000010\n00000010\n00000010\n00000110\n00000110\n00000000\n00000000\nCHAR 3624\n00000000\n00000000\n00000000\n00000010\n00000010\n00111100\n01000010\n01011010\n01011010\n01010010\n00110010\n00000000\n00000000\nCHAR 3625\n00000000\n00000000\n00000000\n00000000\n00000000\n01100010\n01100010\n00101010\n00101110\n00100010\n00011100\n00000000\n00000000\nCHAR 3626\n00000000\n00000000\n00000000\n00000010\n00000010\n00111100\n01000010\n00011010\n00100110\n00110010\n00110010\n00000000\n00000000\nCHAR 3627\n00000000\n00000000\n00000000\n00000000\n00000000\n01100110\n01100110\n00100100\n00101010\n00110010\n00100010\n00000000\n00000000\nCHAR 3628\n00000000\n00000000\n00000000\n00000010\n00000010\n01101100\n01100010\n00101010\n00101010\n00101010\n00010100\n00000000\n00000000\nCHAR 3629\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n01000010\n00110010\n00110010\n00100010\n00011100\n00000000\n00000000\nCHAR 3630\n00000000\n00000000\n00000000\n00000010\n00000010\n00111100\n01111010\n00110010\n00110010\n00100010\n00011100\n00000000\n00000000\nCHAR 3631\n00000000\n00000000\n00000000\n00000000\n00000000\n01100110\n01111010\n00000010\n00000010\n00000010\n00000100\n00000000\n00000000\nCHAR 3632\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n01100100\n01111000\n00000000\n01100100\n01111000\n00000000\n00000000\nCHAR 3633\n00000000\n00000000\n01000000\n01111100\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 3634\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n01000010\n00000010\n00000010\n00000010\n00000010\n00000000\n00000000\nCHAR 3635\n00000000\n00000000\n00000000\n01100000\n01100000\n00011100\n00100010\n00000010\n00000010\n00000010\n00000010\n00000000\n00000000\nCHAR 3636\n00000000\n00000000\n00000000\n01111110\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 3637\n00000000\n00000000\n00000010\n01111110\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 3638\n00000000\n00000000\n00000110\n01111110\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 3639\n00000000\n00000000\n00001010\n01111110\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 3640\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000110\n00000010\nCHAR 3641\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00011010\n00001110\nCHAR 3642\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00001100\n00001100\nCHAR 3647\n00000000\n00000000\n00000000\n00010100\n01111100\n01010110\n01010110\n01111100\n01010110\n01010110\n01111100\n00010100\n00000000\nCHAR 3648\n00000000\n00000000\n00000000\n00000000\n00000000\n00010000\n00010000\n00010000\n00010000\n00011000\n00011000\n00000000\n00000000\nCHAR 3649\n00000000\n00000000\n00000000\n00000000\n00000000\n00100100\n00100100\n00100100\n00100100\n00110110\n00110110\n00000000\n00000000\nCHAR 3650\n00000000\n00000000\n00000000\n00111110\n01000000\n01111100\n00000100\n00000100\n00000100\n00000110\n00000110\n00000000\n00000000\nCHAR 3651\n00000000\n00000000\n00000000\n00111000\n01000100\n01010100\n00110100\n00000100\n00000100\n00000110\n00000110\n00000000\n00000000\nCHAR 3652\n00000000\n00000000\n00000000\n01101100\n00010100\n00000100\n00000100\n00000100\n00000100\n00000110\n00000110\n00000000\n00000000\nCHAR 3653\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n01000010\n00000010\n00000010\n00000010\n00000010\n00000010\n00000010\nCHAR 3654\n00000000\n00000000\n00000000\n00000000\n00000000\n01110100\n01101010\n00000010\n00000010\n00000010\n00000010\n00000100\n00001000\nCHAR 3655\n00000010\n00111100\n01010100\n00101100\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 3656\n00000010\n00000010\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 3657\n00110100\n00011000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 3658\n00101010\n00111100\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 3659\n00000010\n00000111\n00000010\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 3660\n00000110\n00000100\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 3661\n00000110\n00000110\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 3662\n00000111\n00000100\n00001000\n00001100\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 3663\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00111000\n01000100\n01010100\n01000100\n00111000\n00000000\n00000000\nCHAR 3664\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 3665\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n01011010\n00111010\n00000010\n00111100\n00000000\n00000000\nCHAR 3666\n00000000\n00000000\n00000000\n00000000\n01000000\n01000000\n01001010\n01010110\n01011010\n01011010\n00111100\n00000000\n00000000\nCHAR 3667\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00110100\n01001010\n01001010\n01101010\n01101010\n00000000\n00000000\nCHAR 3668\n00000000\n00000000\n00000000\n00000000\n00000010\n00000010\n00111100\n01000000\n01001100\n01001100\n00111110\n00000000\n00000000\nCHAR 3669\n00000000\n00000000\n00000000\n00000000\n00000010\n00011010\n00111100\n01000000\n01001100\n01001100\n00111110\n00000000\n00000000\nCHAR 3670\n00000000\n00000000\n00000000\n00000000\n00000000\n01000000\n00101100\n00010010\n00000010\n00011010\n00011100\n00000000\n00000000\nCHAR 3671\n00000000\n00000000\n00000000\n00000000\n00000010\n00000010\n00101010\n01011010\n01001010\n01001010\n01100100\n00000000\n00000000\nCHAR 3672\n00000000\n00000000\n00000000\n00000000\n00000000\n00000010\n00111100\n01000000\n01000110\n01110110\n00101100\n00000000\n00000000\nCHAR 3673\n00000000\n00000000\n00000000\n00000000\n00000010\n00000010\n00001100\n00111000\n01001000\n01110100\n00110010\n00000000\n00000000\nCHAR 3674\n00000000\n00000000\n00000000\n00000000\n00000000\n01101010\n01111010\n00001010\n00001010\n00001010\n00010100\n00000000\n00000000\nCHAR 3675\n00000000\n00000000\n00000000\n00000000\n00000000\n01100000\n01100000\n01010110\n01011000\n01010000\n00100000\n00000000\n00000000\nCHAR 4256\n00000000\n00000000\n01111110\n00010000\n00100000\n01000000\n01000000\n01000000\n01000000\n01000010\n00111100\n00000000\n00000000\nCHAR 4257\n00000000\n00000000\n10001000\n10001000\n10001000\n10011000\n01101000\n00001000\n00001000\n00001000\n00001110\n00000000\n00000000\nCHAR 4258\n00000000\n11111000\n10001000\n10001000\n10001000\n00001000\n00001000\n00001000\n00001000\n00001000\n00001110\n00000010\n00000010\nCHAR 4259\n00000000\n00000000\n11111110\n00010000\n01101100\n10000010\n10000010\n10000010\n10000010\n10000010\n01111100\n00000000\n00000000\nCHAR 4260\n00000000\n00000000\n01111110\n01000010\n01000010\n00000010\n00000010\n00000010\n00000010\n00000010\n00000010\n00000000\n00000000\nCHAR 4261\n00000000\n00000000\n11111000\n10001000\n10001000\n00001110\n00001010\n00001010\n00001000\n00001000\n00001000\n00000000\n00000000\nCHAR 4262\n00000000\n00000000\n11100000\n00100000\n00100000\n00101100\n00110010\n00100010\n00100010\n00100010\n00011100\n00000000\n00000000\nCHAR 4263\n00000000\n00000000\n00111000\n01001000\n10001000\n10001110\n10001010\n10001010\n10001000\n01001000\n00111000\n00000000\n00000000\nCHAR 4264\n00000000\n00000000\n01111110\n00000010\n00000010\n00000010\n00000010\n00000010\n00000010\n00000010\n00000010\n00000000\n00000000\nCHAR 4265\n00000000\n00000000\n01000000\n01000000\n01011000\n01100100\n01000010\n00100110\n00011010\n00000010\n00000010\n00000000\n00000000\nCHAR 4266\n00000000\n00000000\n11100000\n10100000\n10100000\n00101100\n00110010\n00100010\n00100010\n00100010\n00011100\n00000000\n00000000\nCHAR 4267\n00000000\n00000000\n11111000\n00001000\n00001000\n01111110\n10001000\n10001000\n10001000\n10001000\n01110000\n00000000\n00000000\nCHAR 4268\n00000000\n00000000\n01111110\n01000000\n01000000\n01000000\n01111110\n01000010\n01000010\n01000010\n01000010\n00000000\n00000000\nCHAR 4269\n00000000\n00000000\n01100000\n10010000\n10010000\n10010000\n10010000\n10010000\n10010000\n10010010\n01101110\n00000000\n00000000\nCHAR 4270\n00000000\n00000000\n11100010\n00100010\n00100010\n00100010\n00100010\n00100010\n00100010\n00100010\n00011100\n00000000\n00000000\nCHAR 4271\n00000000\n00000000\n11100010\n00100010\n00100010\n00100010\n00100110\n00011010\n00000010\n00000010\n00000010\n00000000\n00000000\nCHAR 4272\n00000000\n00000000\n00001000\n00001000\n00001000\n00001110\n00001010\n10001010\n10001000\n10001000\n01110000\n00000000\n00000000\nCHAR 4273\n00000000\n00000000\n01000000\n01000000\n01000000\n01000000\n01000000\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 4274\n00000000\n00000000\n01111100\n01000010\n01000010\n01000010\n01111100\n01000000\n01000000\n01000000\n01111110\n00000000\n00000000\nCHAR 4275\n00000000\n01100000\n10010000\n10010000\n10010000\n10010000\n10010000\n10010000\n10010100\n10011010\n01100010\n00000000\n00000000\nCHAR 4276\n00000000\n00000000\n01111100\n10010010\n10010010\n10010010\n01111100\n00010000\n00010000\n00010000\n00010000\n00000000\n00000000\nCHAR 4277\n00000000\n00000000\n00010000\n10010000\n10010000\n11111110\n00010010\n00010000\n00010000\n00010000\n00010000\n00000000\n00000000\nCHAR 4278\n00000000\n00000000\n00111100\n01000010\n01000010\n01000010\n01000010\n01000010\n01000010\n01000010\n01000010\n00000000\n00000000\nCHAR 4279\n00000000\n00000000\n00100010\n01000010\n01000010\n01000110\n00111010\n00000010\n00000010\n00000010\n00000010\n00000000\n00000000\nCHAR 4280\n00000000\n00000000\n00100010\n01000010\n01000010\n01000110\n00111010\n00000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 4281\n00000000\n00000000\n01000000\n01000000\n01000000\n01111110\n01000010\n01000010\n01000010\n01000010\n01000010\n00000000\n00000000\nCHAR 4282\n00000000\n00000000\n00111100\n01000010\n01000000\n01000000\n01000000\n01000000\n01000000\n01000010\n00111100\n00000100\n00000100\nCHAR 4283\n00000000\n00000000\n00001000\n00001000\n00001000\n00111110\n01001010\n01001010\n01001000\n01001000\n00110000\n00000000\n00000000\nCHAR 4284\n00000000\n00000000\n01111100\n01000010\n01000010\n01111100\n01000000\n01111000\n01001000\n01001000\n01000000\n00000000\n00000000\nCHAR 4285\n00000000\n00000000\n00111100\n01000010\n01000000\n01000000\n00111100\n00000010\n00000010\n01000010\n00111100\n00000000\n00000000\nCHAR 4286\n00000000\n00000000\n01000010\n01000010\n01000010\n01000010\n01111110\n01000000\n01000000\n01000000\n01111110\n00000000\n00000000\nCHAR 4287\n00000000\n00000000\n01111110\n01000010\n00100010\n00010100\n00001000\n00010100\n00100010\n01000000\n01000000\n00000000\n00000000\nCHAR 4288\n00000000\n00000000\n11100000\n10100000\n10100000\n00100000\n00100000\n00100010\n00100010\n00100010\n00011100\n00000000\n00000000\nCHAR 4289\n00000000\n00000000\n01000000\n01000000\n01000000\n01111000\n01000110\n01000000\n01000000\n01000000\n01000000\n00000000\n00000000\nCHAR 4290\n00000000\n00000000\n00000000\n01000000\n01000000\n00111100\n00000010\n00000010\n01000010\n01000100\n00111000\n00000000\n00000000\nCHAR 4291\n00000000\n00000000\n00000010\n00100010\n01000010\n01000110\n00111010\n00000010\n00000010\n00000010\n00000010\n00000000\n00000000\nCHAR 4292\n00000000\n00000000\n10000010\n10000010\n10000010\n10000010\n01111100\n00010000\n00010000\n00010000\n00010000\n00000000\n00000000\nCHAR 4293\n00000000\n00000000\n00011100\n00010010\n00011100\n00010000\n01111100\n10010010\n10010000\n10010000\n01100000\n00000000\n00000000\nCHAR 4304\n00000000\n00000000\n00000000\n00000000\n00000000\n00010000\n00010000\n00001100\n00000010\n01000010\n00111100\n00000000\n00000000\nCHAR 4305\n00000000\n00000000\n00100000\n00110000\n00010000\n00010000\n00111000\n01000100\n01000100\n01000100\n00111000\n00000000\n00000000\nCHAR 4306\n00000000\n00000000\n00000000\n00000000\n00110000\n01001000\n01001000\n00001000\n00111100\n01000010\n01000010\n01000010\n00111100\nCHAR 4307\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n01010010\n01010010\n01001100\n01000000\n00111000\n00000100\nCHAR 4308\n00000000\n00000000\n00000000\n00000000\n00111100\n01000010\n01000010\n00000010\n00000010\n00000010\n01000010\n01000010\n00111100\nCHAR 4309\n00000000\n00000000\n00000000\n00000000\n00111100\n01000010\n01000010\n00011100\n00000010\n00000010\n01000010\n01000010\n00111100\nCHAR 4310\n00000000\n00000000\n00100000\n01010000\n01010100\n00111000\n00011100\n00010010\n00010010\n00010010\n00001100\n00000000\n00000000\nCHAR 4311\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00110100\n01001010\n01001010\n01001010\n00110010\n00000000\n00000000\nCHAR 4312\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n01000010\n01000010\n01000010\n00100100\n00000000\n00000000\nCHAR 4313\n00000000\n00000000\n00000000\n00000000\n00001100\n00000010\n00000010\n00011100\n00000010\n00000010\n01000010\n01000010\n00111100\nCHAR 4314\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n01010100\n10101010\n10101010\n10000010\n10000100\n01110000\n00001000\nCHAR 4315\n00000000\n00000000\n00111100\n01000010\n01000010\n00000010\n00111110\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 4316\n00000000\n00000000\n00111110\n01000000\n01000000\n01000000\n01111100\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 4317\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00101000\n01010100\n01010100\n01010100\n01000100\n00000000\n00000000\nCHAR 4318\n00000000\n00000000\n00010000\n00001100\n00000010\n00000010\n00011100\n00000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 4319\n00000000\n00000000\n00000000\n00000000\n00000000\n00000110\n00001010\n01010010\n01010010\n00100010\n00000010\n00100010\n00011100\nCHAR 4320\n00000000\n00000000\n00000000\n00000100\n00111000\n01000000\n01101000\n01010100\n01010100\n01010100\n01000100\n00000000\n00000000\nCHAR 4321\n00000000\n00000000\n01000000\n01000000\n01000000\n01001000\n01010000\n01001000\n01000100\n01000100\n00111000\n00000000\n00000000\nCHAR 4322\n00000000\n00000000\n00011000\n00100100\n00100100\n00111100\n01100110\n01100110\n01011010\n01000010\n01000010\n01000010\n00111100\nCHAR 4323\n00000000\n00000000\n00000000\n00000000\n01101100\n00010010\n00010010\n00000010\n00000010\n00000010\n00100010\n00100010\n00011100\nCHAR 4324\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00110100\n01001010\n01001010\n00110100\n00000010\n00010010\n00001100\nCHAR 4325\n00000000\n00000000\n00000100\n00001100\n00000100\n00000100\n00011100\n00100100\n00000100\n00000100\n00000100\n01000100\n00111000\nCHAR 4326\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00101000\n01010100\n01010100\n01000100\n01000000\n00111000\n00000100\nCHAR 4327\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00100010\n01000010\n01000110\n00111010\n00000010\n01000010\n00111100\nCHAR 4328\n00000000\n00000000\n00101000\n01010100\n01010100\n01010100\n01000100\n00011100\n00100100\n00100100\n00011000\n00000000\n00000000\nCHAR 4329\n00000000\n00000000\n00110000\n01001000\n01001000\n01110000\n01000000\n01011100\n01100010\n01000010\n01000010\n00000000\n00000000\nCHAR 4330\n00000000\n00000000\n00000000\n00000000\n01001100\n01000010\n01000010\n01011100\n01000010\n01000010\n01000010\n01000010\n00111100\nCHAR 4331\n00000000\n00000000\n00001100\n00000010\n00000010\n00000010\n00111110\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 4332\n00000000\n00000000\n00101000\n01010100\n01010100\n01000000\n01000000\n01111100\n01000100\n00101000\n00101000\n00010000\n00010000\nCHAR 4333\n00000000\n00000000\n00001000\n00011000\n00101000\n00001000\n00101010\n01011100\n00101010\n00001000\n00001000\n01001000\n00110000\nCHAR 4334\n00000000\n00000000\n01000000\n01000000\n01001000\n01010000\n01111000\n01000100\n01000100\n01000100\n00111000\n00000000\n00000000\nCHAR 4335\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n01000100\n00101000\n00010000\n00101000\n01000100\n00100000\n01000000\nCHAR 4336\n00000000\n00100000\n00011100\n00000010\n00011100\n00000010\n00000010\n00011100\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 4337\n00000000\n01011000\n01000100\n01000010\n01011100\n01000010\n01000010\n01011100\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 4338\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n01000010\n01000010\n01000010\n00100100\n01111110\n00000000\n00000000\nCHAR 4339\n00000000\n00000000\n00000000\n00000000\n00000000\n01111110\n00000100\n00001000\n00011100\n00000010\n00000010\n01000010\n00111100\nCHAR 4340\n00000000\n00000000\n00010000\n00100000\n00011100\n00000010\n00000010\n00011100\n00000010\n00000010\n01000010\n01000010\n00111100\nCHAR 4341\n00000000\n00000000\n00111000\n01000100\n01000100\n00111110\n00000100\n00111110\n01000100\n01000100\n00111000\n00000000\n00000000\nCHAR 4342\n00000000\n00000000\n00000000\n00100000\n00010000\n00010000\n00111000\n01010100\n01010100\n00111000\n00010000\n00010000\n00001000\nCHAR 4343\n00000000\n00000000\n00011100\n00100010\n00000010\n00001100\n00110000\n01000000\n01000000\n01000010\n00111100\n00000000\n00000000\nCHAR 4344\n00000000\n00000000\n01000010\n01000010\n01000010\n01111100\n01000000\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 4347\n00000000\n00000000\n00000000\n00000000\n01100000\n01100000\n00001100\n00001100\n01100000\n01100000\n00000000\n00000000\n00000000\nCHAR 5792\n00000000\n00000000\n00010010\n00010100\n00011000\n00010010\n00010100\n00011000\n00010000\n00010000\n00010000\n00000000\n00000000\nCHAR 5793\n00000100\n00000000\n00010010\n00010100\n00011000\n00010010\n00010100\n00011000\n00010000\n00010000\n00010000\n00000000\n00000000\nCHAR 5794\n00000000\n00000000\n01110000\n01001000\n01000100\n01000100\n01000010\n01000010\n01000010\n01000010\n01000010\n00000000\n00000000\nCHAR 5795\n00000000\n00000000\n01100000\n01010000\n01001000\n01000100\n01010100\n01010100\n01010100\n01010100\n01010100\n00000000\n00000000\nCHAR 5796\n00000000\n00000000\n01110000\n01001000\n01000100\n01000100\n01010010\n01010010\n01000010\n01000010\n01000010\n00000000\n00000000\nCHAR 5797\n00000000\n00000000\n01110000\n01001000\n01000100\n01100100\n01010010\n01001010\n01001010\n01001010\n01001010\n00000000\n00000000\nCHAR 5798\n00000000\n00000000\n00010000\n00010000\n00011100\n00010010\n00010010\n00010010\n00011100\n00010000\n00010000\n00000000\n00000000\nCHAR 5799\n00000000\n00000000\n00100000\n00100000\n00111100\n00100010\n00101010\n00100010\n00111100\n00100000\n00100000\n00000000\n00000000\nCHAR 5800\n00000000\n00000000\n00110000\n00101000\n00100100\n00110000\n00101000\n00100100\n00100000\n00100000\n00100000\n00000000\n00000000\nCHAR 5801\n00000000\n00000000\n01000100\n01101000\n01010000\n01000100\n01101000\n01010000\n01000000\n01000000\n01000000\n00000000\n00000000\nCHAR 5802\n00000000\n00000000\n01000100\n01101000\n01010000\n01000000\n01100000\n01010000\n01001000\n01000000\n01000000\n00000000\n00000000\nCHAR 5803\n00000000\n00000000\n01000000\n01100000\n01010000\n01001000\n01100000\n01010000\n01001000\n01000000\n01000000\n00000000\n00000000\nCHAR 5804\n00000000\n00000000\n00010000\n01010000\n00110000\n00011000\n01010100\n00110000\n00011000\n00010100\n00010000\n00000000\n00000000\nCHAR 5805\n00000000\n00000000\n00100000\n00100000\n00110000\n00101000\n00100100\n00110000\n00101000\n00100100\n00100000\n00000000\n00000000\nCHAR 5806\n00000000\n00000000\n00000100\n00000100\n00001100\n00010100\n00100100\n00001100\n00010100\n00100100\n00000100\n00000000\n00000000\nCHAR 5807\n00000000\n00000000\n00010000\n00010100\n00011000\n00110000\n01010100\n00011000\n00110000\n01010000\n00010000\n00000000\n00000000\nCHAR 5808\n00000000\n00000000\n00010000\n00010100\n00011000\n00110000\n01010000\n00010000\n00110000\n01010000\n00010000\n00000000\n00000000\nCHAR 5809\n00000000\n00000000\n00110000\n00101000\n00100100\n00101000\n00110000\n00101000\n00100100\n00100000\n00100000\n00000000\n00000000\nCHAR 5810\n00000000\n00000000\n00000000\n00000000\n00001000\n00010000\n00100000\n00010000\n00001000\n00000000\n00000000\n00000000\n00000000\nCHAR 5811\n00000000\n00000000\n00100000\n00100000\n00100000\n00100000\n00100000\n00100000\n00110000\n00101000\n00100100\n00000000\n00000000\nCHAR 5812\n00000000\n00000000\n00100010\n00100010\n00100010\n00100100\n00111000\n00100000\n00100000\n00100000\n00100000\n00000000\n00000000\nCHAR 5813\n00000000\n00000000\n00101010\n00101010\n00100010\n00100100\n00111000\n00100000\n00100000\n00100000\n00100000\n00000000\n00000000\nCHAR 5814\n00000000\n00000000\n00100010\n00100010\n00100010\n01110100\n01111000\n01110000\n00100000\n00100000\n00100000\n00000000\n00000000\nCHAR 5815\n00000000\n00000000\n01000100\n01000100\n00101000\n00101000\n00010000\n00101000\n00101000\n01000100\n01000100\n00000000\n00000000\nCHAR 5816\n00000000\n00000000\n01000100\n01000100\n00111000\n00101000\n01010100\n00101000\n00111000\n01000100\n01000100\n00000000\n00000000\nCHAR 5817\n00000000\n00000000\n01100000\n01010000\n01001000\n01010000\n01100000\n01000000\n01000000\n01000000\n01000000\n00000000\n00000000\nCHAR 5818\n00000000\n00000000\n01000100\n01000100\n01000100\n01100100\n01010100\n01001100\n01000100\n01000100\n01000100\n00000000\n00000000\nCHAR 5819\n00000000\n00000000\n01000100\n01000100\n01100100\n01010100\n01001100\n01100100\n01010100\n01001100\n01000100\n00000000\n00000000\nCHAR 5820\n00000000\n00000000\n00010000\n00010000\n01010100\n00111000\n00010000\n00111000\n01010100\n00010000\n00010000\n00000000\n00000000\nCHAR 5821\n00000000\n00000000\n00010000\n00010000\n00010000\n00111000\n00111000\n00111000\n00010000\n00010000\n00010000\n00000000\n00000000\nCHAR 5822\n00000000\n00000000\n00010000\n00010000\n01010000\n00110000\n00010000\n00011000\n00010100\n00010000\n00010000\n00000000\n00000000\nCHAR 5823\n00000000\n00000000\n00010000\n00010000\n00010000\n00010000\n00011000\n00010100\n00010000\n00010000\n00010000\n00000000\n00000000\nCHAR 5824\n00000000\n00000000\n00010000\n00010000\n01010000\n00111000\n00111000\n00111000\n00010100\n00010000\n00010000\n00000000\n00000000\nCHAR 5825\n00000000\n00000000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00000000\n00000000\nCHAR 5826\n00000000\n00000000\n00010000\n00010000\n00010000\n00111000\n00111000\n00111000\n00010000\n00010000\n00010000\n00000000\n00000000\nCHAR 5827\n00000000\n00000000\n00000000\n00010000\n00100000\n01001000\n00100100\n00010010\n00000100\n00001000\n00000000\n00000000\n00000000\nCHAR 5828\n00000000\n00000000\n00010000\n00010000\n00111000\n01010100\n10010010\n01010100\n00111000\n00010000\n00010000\n00000000\n00000000\nCHAR 5829\n00000000\n00000000\n00010000\n00010000\n00010100\n00011000\n00010000\n00110000\n01010000\n00010000\n00010000\n00000000\n00000000\nCHAR 5830\n00000000\n00000000\n00001000\n00001000\n00001000\n00001000\n00011000\n00101000\n01001000\n00001000\n00001000\n00000000\n00000000\nCHAR 5831\n00000000\n00000000\n00010000\n00011000\n00010100\n00010010\n00010000\n10010000\n01010000\n00110000\n00010000\n00000000\n00000000\nCHAR 5832\n00000000\n00000000\n01000100\n01101000\n01010000\n01000000\n01000000\n01000000\n01010000\n01101000\n01000100\n00000000\n00000000\nCHAR 5833\n00000000\n00000000\n10010010\n01010100\n00111000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00000000\n00000000\nCHAR 5834\n00000000\n00000000\n00001000\n00010000\n00100000\n00010000\n00001000\n00010000\n00100000\n00010000\n00001000\n00000000\n00000000\nCHAR 5835\n00000000\n00000000\n01000000\n01000000\n01000100\n01001100\n01010100\n01100100\n01000100\n00000100\n00000100\n00000000\n00000000\nCHAR 5836\n00000000\n00000000\n00010000\n00010000\n00010000\n00010000\n00010000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 5837\n00000000\n00000000\n00010000\n00010000\n00010000\n00010000\n00111000\n00111000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 5838\n00000000\n00000000\n00010000\n00010000\n00010000\n01010100\n00111000\n00010000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 5839\n00000000\n00000000\n00010000\n00111000\n01010100\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00000000\n00000000\nCHAR 5840\n00000000\n00000000\n00000100\n00001100\n00010100\n00100100\n00000100\n00000100\n00000100\n00000100\n00000100\n00000000\n00000000\nCHAR 5841\n00000000\n00000000\n00000100\n00001100\n00010100\n00100100\n00001110\n00001110\n00000100\n00000100\n00000100\n00000000\n00000000\nCHAR 5842\n00000000\n00000000\n01100000\n01010000\n01001000\n01010000\n01100000\n01010000\n01001000\n01010000\n01100000\n00000000\n00000000\nCHAR 5843\n00000000\n00000000\n00100000\n00100100\n00101000\n00110000\n00100100\n00101000\n00110000\n00100000\n00100000\n00000000\n00000000\nCHAR 5844\n00000000\n00000000\n01111000\n01000100\n01010100\n01000100\n01111000\n01000100\n01010100\n01000100\n01111000\n00000000\n00000000\nCHAR 5845\n00000000\n00000000\n01000010\n01000100\n01001000\n01010000\n01100000\n01010000\n01001000\n01000100\n01000010\n00000000\n00000000\nCHAR 5846\n00000000\n00000000\n10000010\n11000110\n10101010\n10010010\n10000010\n10000010\n10000010\n10000010\n10000010\n00000000\n00000000\nCHAR 5847\n00000000\n00000000\n10000010\n11000110\n10101010\n10010010\n10101010\n11000110\n10000010\n10000010\n10000010\n00000000\n00000000\nCHAR 5848\n00000000\n00000000\n10010010\n10010010\n10010010\n01111100\n00010000\n00010000\n00010000\n00010000\n00010000\n00000000\n00000000\nCHAR 5849\n00000000\n00000000\n00111000\n00111000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00000000\n00000000\nCHAR 5850\n00000000\n00000000\n00100000\n00110000\n00101000\n00100100\n00100000\n00100000\n00100000\n00100000\n00100000\n00000000\n00000000\nCHAR 5851\n00000000\n00000000\n00100000\n00110000\n00101000\n00100100\n01110000\n01110000\n00100000\n00100000\n00100000\n00000000\n00000000\nCHAR 5852\n00000000\n00000000\n00000000\n00000000\n00010000\n00101000\n01000100\n00101000\n00010000\n00000000\n00000000\n00000000\n00000000\nCHAR 5853\n00000000\n00000000\n01000100\n00101000\n00010000\n00101000\n01000100\n00101000\n00010000\n00101000\n01000100\n00000000\n00000000\nCHAR 5854\n00000000\n00000000\n10000010\n10000010\n11000110\n10101010\n10010010\n10101010\n11000110\n10000010\n10000010\n00000000\n00000000\nCHAR 5855\n00000000\n00000000\n00010000\n00101000\n01000100\n00101000\n00010000\n00101000\n01000100\n01000100\n01000100\n00000000\n00000000\nCHAR 5856\n00000000\n00000000\n10010010\n10111010\n01010100\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00000000\n00000000\nCHAR 5857\n00000000\n00000000\n00010000\n10010010\n01010100\n00111000\n00010000\n00111000\n01010100\n10010010\n00010000\n00000000\n00000000\nCHAR 5858\n00000000\n00000000\n00011010\n00010100\n00010000\n00010000\n00010000\n00010000\n00010000\n01010000\n10110000\n00000000\n00000000\nCHAR 5859\n00000000\n00000000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00111000\n01010100\n10010010\n00000000\n00000000\nCHAR 5860\n00000000\n00000000\n10010010\n10010010\n01010100\n00111000\n01010100\n00111000\n01010100\n10010010\n10010010\n00000000\n00000000\nCHAR 5861\n00000000\n00000000\n01000100\n01101100\n01010100\n01101100\n01000100\n01101100\n01010100\n01101100\n01000100\n00000000\n00000000\nCHAR 5862\n00000000\n00000000\n00010000\n00010000\n00010000\n00010000\n00010000\n01111100\n10010010\n10010010\n10010010\n00000000\n00000000\nCHAR 5863\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00010000\n00010000\n00010000\n00010000\n00010000\n00000000\n00000000\nCHAR 5864\n00000000\n00000000\n00010000\n00111000\n01010100\n00010000\n00010000\n00010000\n01010100\n00111000\n00010000\n00000000\n00000000\nCHAR 5865\n00000000\n00000000\n00011000\n00101000\n01001000\n00101000\n00011000\n00001000\n00001000\n00001000\n00001000\n00000000\n00000000\nCHAR 5866\n00000000\n00000000\n01000000\n11100000\n01000100\n01001100\n01010100\n01100100\n01000100\n00001110\n00000100\n00000000\n00000000\nCHAR 5867\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00010000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 5868\n00000000\n00000000\n00000000\n00000000\n00000000\n00010000\n00000000\n00010000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 5869\n00000000\n00000000\n00000000\n00111000\n00010000\n01010100\n01111100\n01010100\n00010000\n00111000\n00000000\n00000000\n00000000\nCHAR 5870\n00000000\n00000000\n00010000\n00011000\n00010100\n00010000\n00110000\n01010000\n00010000\n00010000\n00010000\n00000000\n00000000\nCHAR 5871\n00000000\n00000000\n10010010\n10010010\n10010010\n01111100\n00010000\n01111100\n10010010\n10010010\n10010010\n00000000\n00000000\nCHAR 5872\n00000000\n00000000\n00010000\n00010000\n01111100\n10010010\n10010010\n10010010\n01111100\n00010000\n00010000\n00000000\n00000000\nCHAR 7680\n00000000\n00000000\n00011000\n00100100\n01000010\n01000010\n01000010\n01111110\n01000010\n01000010\n00011000\n00100100\n00011000\nCHAR 7681\n00000000\n00000000\n00000000\n00000000\n00111100\n00000010\n00111110\n01000010\n01000110\n00111010\n00011000\n00100100\n00011000\nCHAR 7682\n00000000\n00011000\n00000000\n01111100\n01000010\n01000010\n01111100\n01000010\n01000010\n01000010\n01111100\n00000000\n00000000\nCHAR 7683\n00000000\n00001000\n01000000\n01000000\n01000000\n01011100\n01100010\n01000010\n01000010\n01100010\n01011100\n00000000\n00000000\nCHAR 7684\n00000000\n00000000\n01111000\n01000100\n01000010\n01000100\n01111000\n01000100\n01000010\n01000100\n01111000\n00000000\n00011000\nCHAR 7685\n00000000\n00000000\n01000000\n01000000\n01000000\n01011100\n01100010\n01000010\n01000010\n01100010\n01011100\n00000000\n00011000\nCHAR 7686\n00000000\n00000000\n01111000\n01000100\n01000010\n01000100\n01111000\n01000100\n01000010\n01000100\n01111000\n00000000\n01111100\nCHAR 7687\n00000000\n00000000\n01000000\n01000000\n01000000\n01011100\n01100010\n01000010\n01000010\n01100010\n01011100\n00000000\n01111110\nCHAR 7688\n00000000\n00001000\n00010000\n00000000\n00111100\n01000010\n01000000\n01000000\n01000000\n01000010\n00111100\n00001000\n00010000\nCHAR 7689\n00000000\n00000000\n00001000\n00010000\n00000000\n00111100\n01000010\n01000000\n01000000\n01000010\n00111100\n00001000\n00010000\nCHAR 7690\n00000000\n00011000\n00000000\n01111000\n01000100\n01000010\n01000010\n01000010\n01000010\n01000100\n01111000\n00000000\n00000000\nCHAR 7691\n00000000\n00011000\n00000010\n00000010\n00000010\n00111010\n01000110\n01000010\n01000010\n01000110\n00111010\n00000000\n00000000\nCHAR 7692\n00000000\n00000000\n01111000\n01000100\n01000010\n01000010\n01000010\n01000010\n01000010\n01000100\n01111000\n00000000\n00011000\nCHAR 7693\n00000000\n00000000\n00000010\n00000010\n00000010\n00111010\n01000110\n01000010\n01000010\n01000110\n00111010\n00000000\n00011000\nCHAR 7694\n00000000\n00000000\n01111000\n01000100\n01000010\n01000010\n01000010\n01000010\n01000010\n01000100\n01111000\n00000000\n01111100\nCHAR 7695\n00000000\n00000000\n00000010\n00000010\n00000010\n00111010\n01000110\n01000010\n01000010\n01000110\n00111010\n00000000\n01111110\nCHAR 7696\n00000000\n00000000\n01111000\n01000100\n01000010\n01000010\n01000010\n01000010\n01000010\n01000100\n01111000\n00001000\n00010000\nCHAR 7697\n00000000\n00000000\n00000010\n00000010\n00000010\n00111010\n01000110\n01000010\n01000010\n01000110\n00111010\n00001000\n00010000\nCHAR 7698\n00000000\n00000000\n01111000\n01000100\n01000010\n01000010\n01000010\n01000010\n01000010\n01000100\n01111000\n00011000\n00100100\nCHAR 7699\n00000000\n00000000\n00000010\n00000010\n00111010\n01000110\n01000010\n01000010\n01000110\n00111010\n00000000\n00011000\n00100100\nCHAR 7700\n00010000\n00001000\n00111100\n00000000\n01111110\n01000000\n01000000\n01111000\n01000000\n01000000\n01111110\n00000000\n00000000\nCHAR 7701\n00010000\n00001000\n00000000\n00111100\n00000000\n00111100\n01000010\n01111110\n01000000\n01000010\n00111100\n00000000\n00000000\nCHAR 7702\n00001000\n00010000\n00111100\n00000000\n01111110\n01000000\n01000000\n01111000\n01000000\n01000000\n01111110\n00000000\n00000000\nCHAR 7703\n00001000\n00010000\n00000000\n00111100\n00000000\n00111100\n01000010\n01111110\n01000000\n01000010\n00111100\n00000000\n00000000\nCHAR 7704\n00000000\n00000000\n01111110\n01000000\n01000000\n01111000\n01000000\n01000000\n01000000\n01111110\n00000000\n00011000\n00100100\nCHAR 7705\n00000000\n00000000\n00000000\n00000000\n00111100\n01000010\n01111110\n01000000\n01000010\n00111100\n00000000\n00011000\n00100100\nCHAR 7706\n00000000\n00000000\n01111110\n01000000\n01000000\n01111000\n01000000\n01000000\n01000000\n01111110\n00000000\n00110010\n01001100\nCHAR 7707\n00000000\n00000000\n00000000\n00000000\n00111100\n01000010\n01111110\n01000000\n01000010\n00111100\n00000000\n00110010\n01001100\nCHAR 7708\n00000000\n01000010\n00111100\n00000000\n01111110\n01000000\n01000000\n01111000\n01000000\n01000000\n01111110\n00001000\n00010000\nCHAR 7709\n00000000\n00000000\n01000010\n00111100\n00000000\n00111100\n01000010\n01111110\n01000000\n01000010\n00111100\n00001000\n00010000\nCHAR 7710\n00000000\n00011000\n00000000\n01111110\n01000000\n01000000\n01111000\n01000000\n01000000\n01000000\n01000000\n00000000\n00000000\nCHAR 7711\n00000000\n00011000\n00000000\n00011100\n00100010\n00100000\n01111100\n00100000\n00100000\n00100000\n00100000\n00000000\n00000000\nCHAR 7712\n00000000\n01111110\n00000000\n00111100\n01000010\n01000000\n01000000\n01001110\n01000010\n01000110\n00111010\n00000000\n00000000\nCHAR 7713\n00000000\n00000000\n00000000\n01111110\n00000000\n00111010\n01000100\n01000100\n00111000\n01000000\n00111100\n01000010\n00111100\nCHAR 7714\n00000000\n00011000\n00000000\n01000010\n01000010\n01000010\n01111110\n01000010\n01000010\n01000010\n01000010\n00000000\n00000000\nCHAR 7715\n00000000\n00001000\n01000000\n01000000\n01000000\n01011100\n01100010\n01000010\n01000010\n01000010\n01000010\n00000000\n00000000\nCHAR 7716\n00000000\n00000000\n01000010\n01000010\n01000010\n01000010\n01111110\n01000010\n01000010\n01000010\n01000010\n00000000\n00011000\nCHAR 7717\n00000000\n00000000\n01000000\n01000000\n01000000\n01011100\n01100010\n01000010\n01000010\n01000010\n01000010\n00000000\n00011000\nCHAR 7718\n00000000\n00100100\n00100100\n00000000\n01000010\n01000010\n01000010\n01111110\n01000010\n01000010\n01000010\n00000000\n00000000\nCHAR 7719\n00000000\n00100100\n00100100\n00000000\n01000000\n01000000\n01011100\n01100010\n01000010\n01000010\n01000010\n00000000\n00000000\nCHAR 7720\n00000000\n00000000\n01000010\n01000010\n01000010\n01000010\n01111110\n01000010\n01000010\n01000010\n01000010\n00000100\n00001000\nCHAR 7721\n00000000\n00000000\n01000000\n01000000\n01000000\n01011100\n01100010\n01000010\n01000010\n01000010\n01000010\n00000100\n00001000\nCHAR 7722\n00000000\n00000000\n01000010\n01000010\n01000010\n01111110\n01000010\n01000010\n01000010\n01000010\n00000000\n01000010\n00111100\nCHAR 7723\n00000000\n00000000\n01000000\n01000000\n01000000\n01011100\n01100010\n01000010\n01000010\n01000010\n00000000\n01000010\n00111100\nCHAR 7724\n00000000\n00000000\n00111110\n00001000\n00001000\n00001000\n00001000\n00001000\n00001000\n00111110\n00000000\n00110010\n01001100\nCHAR 7725\n00000000\n00000000\n00000000\n00011000\n00000000\n00011000\n00001000\n00001000\n00001000\n00111110\n00000000\n00110010\n01001100\nCHAR 7726\n00001000\n00010000\n01000100\n00000000\n01111100\n00010000\n00010000\n00010000\n00010000\n00010000\n01111100\n00000000\n00000000\nCHAR 7727\n00001000\n00010000\n00000000\n01001000\n00000000\n00110000\n00010000\n00010000\n00010000\n00010000\n01111100\n00000000\n00000000\nCHAR 7728\n00001000\n00010000\n01000010\n01000100\n01001000\n01010000\n01100000\n01010000\n01001000\n01000100\n01000010\n00000000\n00000000\nCHAR 7729\n00000000\n00000100\n01001000\n01000000\n01000000\n01000100\n01001000\n01110000\n01001000\n01000100\n01000010\n00000000\n00000000\nCHAR 7730\n00000000\n00000000\n01000010\n01000100\n01001000\n01010000\n01100000\n01010000\n01001000\n01000100\n01000010\n00000000\n00011000\nCHAR 7731\n00000000\n00000000\n01000000\n01000000\n01000000\n01000100\n01001000\n01110000\n01001000\n01000100\n01000010\n00000000\n00011000\nCHAR 7732\n00000000\n00000000\n01000010\n01000100\n01001000\n01010000\n01100000\n01010000\n01001000\n01000100\n01000010\n00000000\n01111110\nCHAR 7733\n00000000\n00000000\n01000000\n01000000\n01000000\n01000100\n01001000\n01110000\n01001000\n01000100\n01000010\n00000000\n01111110\nCHAR 7734\n00000000\n00000000\n01000000\n01000000\n01000000\n01000000\n01000000\n01000000\n01000000\n01000000\n01111110\n00000000\n00011000\nCHAR 7735\n00000000\n00000000\n00110000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n01111100\n00000000\n00011000\nCHAR 7736\n00000000\n01111110\n00000000\n01000000\n01000000\n01000000\n01000000\n01000000\n01000000\n01000000\n01111110\n00000000\n00011000\nCHAR 7737\n00000000\n01111100\n00000000\n00110000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n01111100\n00000000\n00011000\nCHAR 7738\n00000000\n00000000\n01000000\n01000000\n01000000\n01000000\n01000000\n01000000\n01000000\n01000000\n01111110\n00000000\n01111110\nCHAR 7739\n00000000\n00000000\n00110000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n01111100\n00000000\n01111100\nCHAR 7740\n00000000\n00000000\n01000000\n01000000\n01000000\n01000000\n01000000\n01000000\n01000000\n01111110\n00000000\n00011000\n00100100\nCHAR 7741\n00000000\n00000000\n00110000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n01111100\n00000000\n00010000\n00101000\nCHAR 7742\n00000000\n00001000\n00010000\n10000010\n11000110\n10101010\n10010010\n10010010\n10000010\n10000010\n10000010\n00000000\n00000000\nCHAR 7743\n00000000\n00000000\n00001000\n00010000\n00000000\n11101100\n10010010\n10010010\n10010010\n10010010\n10000010\n00000000\n00000000\nCHAR 7744\n00000000\n00110000\n00000000\n10000010\n11000110\n10101010\n10010010\n10000010\n10000010\n10000010\n10000010\n00000000\n00000000\nCHAR 7745\n00000000\n00000000\n00010000\n00010000\n00000000\n11101100\n10010010\n10010010\n10010010\n10010010\n10000010\n00000000\n00000000\nCHAR 7746\n00000000\n00000000\n10000010\n10000010\n11000110\n10101010\n10010010\n10010010\n10000010\n10000010\n10000010\n00010000\n00010000\nCHAR 7747\n00000000\n00000000\n00000000\n00000000\n00000000\n11101100\n10010010\n10010010\n10010010\n10010010\n10000010\n00010000\n00010000\nCHAR 7748\n00000000\n00011000\n00000000\n01000010\n01000010\n01100010\n01010010\n01001010\n01000110\n01000010\n01000010\n00000000\n00000000\nCHAR 7749\n00000000\n00000000\n00000000\n00011000\n00000000\n01011100\n01100010\n01000010\n01000010\n01000010\n01000010\n00000000\n00000000\nCHAR 7750\n00000000\n00000000\n01000010\n01000010\n01100010\n01010010\n01001010\n01000110\n01000010\n01000010\n01000010\n00000000\n00011000\nCHAR 7751\n00000000\n00000000\n00000000\n00000000\n00000000\n01011100\n01100010\n01000010\n01000010\n01000010\n01000010\n00000000\n00011000\nCHAR 7752\n00000000\n00000000\n01000010\n01000010\n01100010\n01010010\n01001010\n01000110\n01000010\n01000010\n01000010\n00000000\n01111110\nCHAR 7753\n00000000\n00000000\n00000000\n00000000\n00000000\n01011100\n01100010\n01000010\n01000010\n01000010\n01000010\n00000000\n01111110\nCHAR 7754\n00000000\n00000000\n01000010\n01000010\n01100010\n01010010\n01001010\n01000110\n01000010\n01000010\n00000000\n00011000\n00100100\nCHAR 7755\n00000000\n00000000\n00000000\n00000000\n00000000\n01011100\n01100010\n01000010\n01000010\n01000010\n01000010\n00011000\n00100100\nCHAR 7756\n00000100\n00001000\n00110010\n01001100\n00000000\n01111100\n10000010\n10000010\n10000010\n10000010\n01111100\n00000000\n00000000\nCHAR 7757\n00000100\n00001000\n00000000\n00110010\n01001100\n00000000\n00111100\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 7758\n00100100\n00000000\n00110010\n01001100\n00000000\n01111100\n10000010\n10000010\n10000010\n10000010\n01111100\n00000000\n00000000\nCHAR 7759\n00000000\n00100100\n00000000\n00110010\n01001100\n00000000\n00111100\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 7760\n00100000\n00010000\n01111100\n00000000\n01111100\n10000010\n10000010\n10000010\n10000010\n10000010\n01111100\n00000000\n00000000\nCHAR 7761\n00100000\n00010000\n00000000\n00111100\n00000000\n00111100\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 7762\n00001000\n00010000\n01111100\n00000000\n01111100\n10000010\n10000010\n10000010\n10000010\n10000010\n01111100\n00000000\n00000000\nCHAR 7763\n00000100\n00001000\n00000000\n00111100\n00000000\n00111100\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 7764\n00000000\n00001000\n00010000\n00000000\n01111100\n01000010\n01000010\n01111100\n01000000\n01000000\n01000000\n00000000\n00000000\nCHAR 7765\n00000000\n00000000\n00001000\n00010000\n00000000\n01011100\n01100010\n01000010\n01100010\n01011100\n01000000\n01000000\n01000000\nCHAR 7766\n00000000\n00011000\n00000000\n01111100\n01000010\n01000010\n01111100\n01000000\n01000000\n01000000\n01000000\n00000000\n00000000\nCHAR 7767\n00000000\n00000000\n00000000\n00011000\n00000000\n01011100\n01100010\n01000010\n01100010\n01011100\n01000000\n01000000\n01000000\nCHAR 7768\n00000000\n00011000\n00000000\n01111100\n01000010\n01000010\n01111100\n01010000\n01001000\n01000100\n01000010\n00000000\n00000000\nCHAR 7769\n00000000\n00000000\n00000000\n00011000\n00000000\n01011100\n00100010\n00100000\n00100000\n00100000\n00100000\n00000000\n00000000\nCHAR 7770\n00000000\n00000000\n01111100\n01000010\n01000010\n01000010\n01111100\n01010000\n01001000\n01000100\n01000010\n00000000\n00011000\nCHAR 7771\n00000000\n00000000\n00000000\n00000000\n00000000\n01011100\n00100010\n00100000\n00100000\n00100000\n00100000\n00000000\n00011000\nCHAR 7772\n00000000\n00111100\n00000000\n01111100\n01000010\n01000010\n01111100\n01010000\n01001000\n01000100\n01000010\n00000000\n00011000\nCHAR 7773\n00000000\n00000000\n00000000\n00111100\n00000000\n01011100\n00100010\n00100000\n00100000\n00100000\n00100000\n00000000\n00011000\nCHAR 7774\n00000000\n00000000\n01111100\n01000010\n01000010\n01000010\n01111100\n01010000\n01001000\n01000100\n01000010\n00000000\n01111110\nCHAR 7775\n00000000\n00000000\n00000000\n00000000\n00000000\n01011100\n00100010\n00100000\n00100000\n00100000\n00100000\n00000000\n01111110\nCHAR 7776\n00000000\n00011000\n00000000\n00111100\n01000010\n01000000\n00111100\n00000010\n00000010\n01000010\n00111100\n00000000\n00000000\nCHAR 7777\n00000000\n00000000\n00000000\n00011000\n00000000\n00111100\n01000010\n00110000\n00001100\n01000010\n00111100\n00000000\n00000000\nCHAR 7778\n00000000\n00000000\n00111100\n01000010\n01000000\n01000000\n00111100\n00000010\n00000010\n01000010\n00111100\n00000000\n00011000\nCHAR 7779\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n01000010\n00110000\n00001100\n01000010\n00111100\n00000000\n00011000\nCHAR 7780\n00100000\n00001000\n00010000\n00000000\n00111100\n01000010\n01000000\n00111100\n00000010\n01000010\n00111100\n00000000\n00000000\nCHAR 7781\n00000000\n00100000\n00001000\n00010000\n00000000\n00111100\n01000010\n00110000\n00001100\n01000010\n00111100\n00000000\n00000000\nCHAR 7782\n00011000\n00000000\n00100100\n00011000\n00111100\n01000010\n01000000\n00111100\n00000010\n01000010\n00111100\n00000000\n00000000\nCHAR 7783\n00011000\n00000000\n00100100\n00011000\n00000000\n00111100\n01000010\n00110000\n00001100\n01000010\n00111100\n00000000\n00000000\nCHAR 7784\n00000000\n00011000\n00000000\n00111100\n01000010\n01000000\n00111100\n00000010\n00000010\n01000010\n00111100\n00000000\n00011000\nCHAR 7785\n00000000\n00000000\n00000000\n00011000\n00000000\n00111100\n01000010\n00110000\n00001100\n01000010\n00111100\n00000000\n00011000\nCHAR 7786\n00000000\n00010000\n00000000\n11111110\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00000000\n00000000\nCHAR 7787\n00000000\n00110000\n00000000\n00100000\n00100000\n01111100\n00100000\n00100000\n00100000\n00100010\n00011100\n00000000\n00000000\nCHAR 7788\n00000000\n00000000\n11111110\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00000000\n00010000\nCHAR 7789\n00000000\n00000000\n00000000\n00100000\n00100000\n01111100\n00100000\n00100000\n00100000\n00100010\n00011100\n00000000\n00011000\nCHAR 7790\n00000000\n00000000\n11111110\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00000000\n11111110\nCHAR 7791\n00000000\n00000000\n00000000\n00100000\n00100000\n01111100\n00100000\n00100000\n00100000\n00100010\n00011100\n00000000\n01111110\nCHAR 7792\n00000000\n00000000\n11111110\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00000000\n00010000\n00101000\nCHAR 7793\n00000000\n00000000\n00000000\n00100000\n00100000\n01111100\n00100000\n00100000\n00100010\n00011100\n00000000\n00011000\n00100100\nCHAR 7794\n00000000\n00000000\n01000010\n01000010\n01000010\n01000010\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n01100110\nCHAR 7795\n00000000\n00000000\n00000000\n00000000\n00000000\n01000100\n01000100\n01000100\n01000100\n01000100\n00111010\n00000000\n01101100\nCHAR 7796\n00000000\n00000000\n01000010\n01000010\n01000010\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00110010\n01001100\nCHAR 7797\n00000000\n00000000\n00000000\n00000000\n00000000\n01000100\n01000100\n01000100\n01000100\n00111010\n00000000\n00110010\n01001100\nCHAR 7798\n00000000\n00000000\n01000010\n01000010\n01000010\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00011000\n00100100\nCHAR 7799\n00000000\n00000000\n00000000\n00000000\n00000000\n01000100\n01000100\n01000100\n01000100\n00111010\n00000000\n00011000\n00100100\nCHAR 7800\n00000100\n00001000\n00110010\n01001100\n00000000\n01000010\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 7801\n00000100\n00001000\n00000000\n00110010\n01001100\n00000000\n01000100\n01000100\n01000100\n01000100\n00111010\n00000000\n00000000\nCHAR 7802\n00100100\n00000000\n00111100\n00000000\n01000010\n01000010\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 7803\n00000000\n01000100\n00000000\n01111100\n00000000\n01000100\n01000100\n01000100\n01000100\n01000100\n00111010\n00000000\n00000000\nCHAR 7804\n00000000\n00110010\n01001100\n00000000\n10000010\n10000010\n01000100\n01000100\n00101000\n00101000\n00010000\n00000000\n00000000\nCHAR 7805\n00000000\n00000000\n00110010\n01001100\n00000000\n00100010\n00100010\n00100010\n00010100\n00010100\n00001000\n00000000\n00000000\nCHAR 7806\n00000000\n00000000\n10000010\n10000010\n01000100\n01000100\n01000100\n00101000\n00101000\n00101000\n00010000\n00000000\n00010000\nCHAR 7807\n00000000\n00000000\n00000000\n00000000\n00000000\n01000100\n01000100\n01000100\n00101000\n00101000\n00010000\n00000000\n00010000\nCHAR 7808\n00000000\n00100000\n00010000\n00000000\n10000010\n10000010\n10010010\n10010010\n10010010\n10101010\n01000100\n00000000\n00000000\nCHAR 7809\n00000000\n00000000\n00100000\n00010000\n00000000\n10000010\n10000010\n10010010\n10010010\n10101010\n01000100\n00000000\n00000000\nCHAR 7810\n00000000\n00001000\n00010000\n00000000\n10000010\n10000010\n10010010\n10010010\n10010010\n10101010\n01000100\n00000000\n00000000\nCHAR 7811\n00000000\n00000000\n00001000\n00010000\n00000000\n10000010\n10000010\n10010010\n10010010\n10101010\n01000100\n00000000\n00000000\nCHAR 7812\n00000000\n01000100\n01000100\n00000000\n10000010\n10000010\n10010010\n10010010\n10010010\n10101010\n01000100\n00000000\n00000000\nCHAR 7813\n00000000\n00000000\n01000100\n01000100\n00000000\n10000010\n10000010\n10010010\n10010010\n10101010\n01000100\n00000000\n00000000\nCHAR 7814\n00000000\n00010000\n00010000\n10000010\n10000010\n10000010\n10010010\n10010010\n10010010\n10101010\n01000100\n00000000\n00000000\nCHAR 7815\n00000000\n00000000\n00010000\n00010000\n00000000\n10000010\n10000010\n10010010\n10010010\n10101010\n01000100\n00000000\n00000000\nCHAR 7816\n00000000\n00000000\n10000010\n10000010\n10000010\n10000010\n10010010\n10010010\n10010010\n10101010\n01000100\n00010000\n00010000\nCHAR 7817\n00000000\n00000000\n00000000\n00000000\n00000000\n10000010\n10000010\n10010010\n10010010\n10101010\n01000100\n00010000\n00010000\nCHAR 7818\n00000000\n00010000\n00010000\n00000000\n10000010\n01000100\n00101000\n00010000\n00101000\n01000100\n10000010\n00000000\n00000000\nCHAR 7819\n00000000\n00000000\n00000000\n00011000\n00000000\n01000010\n00100100\n00011000\n00011000\n00100100\n01000010\n00000000\n00000000\nCHAR 7820\n00000000\n01000100\n01000100\n00000000\n10000010\n01000100\n00101000\n00010000\n00101000\n01000100\n10000010\n00000000\n00000000\nCHAR 7821\n00000000\n00000000\n00100100\n00100100\n00000000\n01000010\n00100100\n00011000\n00011000\n00100100\n01000010\n00000000\n00000000\nCHAR 7822\n00000000\n00010000\n00010000\n10000010\n10000010\n01000100\n00101000\n00010000\n00010000\n00010000\n00010000\n00000000\n00000000\nCHAR 7823\n00000000\n00000000\n00000000\n00011000\n00000000\n01000010\n01000010\n01000010\n01000110\n00111010\n00000010\n01000010\n00111100\nCHAR 7824\n00000000\n00011000\n00100100\n00000000\n01111110\n00000010\n00000100\n00001000\n00010000\n00100000\n01111110\n00000000\n00000000\nCHAR 7825\n00000000\n00000000\n00011000\n00100100\n00000000\n01111110\n00000100\n00001000\n00010000\n00100000\n01111110\n00000000\n00000000\nCHAR 7826\n00000000\n00000000\n01111110\n00000010\n00000100\n00001000\n00010000\n00100000\n01000000\n01000000\n01111110\n00000000\n00011000\nCHAR 7827\n00000000\n00000000\n00000000\n00000000\n00000000\n01111110\n00000100\n00001000\n00010000\n00100000\n01111110\n00000000\n00011000\nCHAR 7828\n00000000\n00000000\n01111110\n00000010\n00000100\n00001000\n00010000\n00100000\n01000000\n01000000\n01111110\n00000000\n00111100\nCHAR 7829\n00000000\n00000000\n00000000\n00000000\n00000000\n01111110\n00000100\n00001000\n00010000\n00100000\n01111110\n00000000\n00111100\nCHAR 7830\n00000000\n00000000\n01000000\n01000000\n01000000\n01011100\n01100010\n01000010\n01000010\n01000010\n01000010\n00000000\n00111100\nCHAR 7831\n00000000\n00010010\n00010010\n00000000\n00100000\n00100000\n01111100\n00100000\n00100000\n00100010\n00011100\n00000000\n00000000\nCHAR 7832\n00000000\n00000000\n00110000\n01001000\n00110000\n10000010\n10000010\n10010010\n10010010\n10101010\n01000100\n00000000\n00000000\nCHAR 7833\n00000000\n00000000\n00011000\n00100100\n00011000\n01000010\n01000010\n01000010\n01000110\n00111010\n00000010\n01000010\n00111100\nCHAR 7834\n00000100\n00000010\n00000010\n00000100\n00000000\n00111100\n00000010\n00111110\n01000010\n01000110\n00111010\n00000000\n00000000\nCHAR 7835\n00000000\n00011000\n00000000\n00011000\n00100100\n00100000\n00100000\n01100000\n00100000\n00100000\n00100000\n00000000\n00000000\nCHAR 7840\n00000000\n00000000\n00011000\n00100100\n01000010\n01000010\n01000010\n01111110\n01000010\n01000010\n01000010\n00000000\n00011000\nCHAR 7841\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n00000010\n00111110\n01000010\n01000110\n00111010\n00000000\n00011000\nCHAR 7842\n00011000\n00100100\n00000100\n00001000\n00011000\n00100100\n01000010\n01000010\n01111110\n01000010\n01000010\n00000000\n00000000\nCHAR 7843\n00000000\n00011000\n00100100\n00000100\n00001000\n00111100\n00000010\n00111110\n01000010\n01000110\n00111010\n00000000\n00000000\nCHAR 7844\n00000000\n00100001\n01010010\n00000000\n00011000\n00100100\n01000010\n01000010\n01111110\n01000010\n01000010\n00000000\n00000000\nCHAR 7845\n00000000\n00000000\n01000010\n10100100\n00000000\n01111000\n00000100\n01111100\n10000100\n10001100\n01110100\n00000000\n00000000\nCHAR 7846\n00000000\n10000100\n01001010\n00000000\n00011000\n00100100\n01000010\n01000010\n01111110\n01000010\n01000010\n00000000\n00000000\nCHAR 7847\n00000000\n00000000\n10000100\n01001010\n00000000\n01111000\n00000100\n01111100\n10000100\n10001100\n01110100\n00000000\n00000000\nCHAR 7848\n00000100\n01001010\n00100010\n00000100\n00011100\n00100100\n01000010\n01000010\n01111110\n01000010\n01000010\n00000000\n00000000\nCHAR 7849\n00000000\n00000100\n01001010\n00100010\n00000100\n00111100\n00000010\n00111110\n01000010\n01000110\n00111010\n00000000\n00000000\nCHAR 7850\n00110010\n01001100\n00010000\n00101000\n00000000\n00011000\n00100100\n01000010\n01111110\n01000010\n01000010\n00000000\n00000000\nCHAR 7851\n00110010\n01001100\n00010000\n00101000\n00000000\n00111100\n00000010\n00111110\n01000010\n01000110\n00111010\n00000000\n00000000\nCHAR 7852\n00000000\n00011000\n00100100\n00000000\n00011000\n00100100\n01000010\n01000010\n01111110\n01000010\n01000010\n00000000\n00011000\nCHAR 7853\n00000000\n00000000\n00011000\n00100100\n00000000\n00111100\n00000010\n00111110\n01000010\n01000110\n00111010\n00000000\n00011000\nCHAR 7854\n00001000\n01010010\n00111100\n00000000\n00011000\n00100100\n01000010\n01000010\n01111110\n01000010\n01000010\n00000000\n00000000\nCHAR 7855\n00000100\n00001000\n01000010\n00111100\n00000000\n00111100\n00000010\n00111110\n01000010\n01000110\n00111010\n00000000\n00000000\nCHAR 7856\n00100000\n00010000\n01000010\n00111100\n00000000\n00011000\n00100100\n01000010\n01111110\n01000010\n01000010\n00000000\n00000000\nCHAR 7857\n00100000\n00010000\n01000010\n00111100\n00000000\n00111100\n00000010\n00111110\n01000010\n01000110\n00111010\n00000000\n00000000\nCHAR 7858\n00011000\n00001000\n01010010\n00111100\n00000000\n00011000\n00100100\n01000010\n01000010\n01111110\n01000010\n00000000\n00000000\nCHAR 7859\n00011000\n00001000\n01010010\n00111100\n00000000\n00111100\n00000010\n00111110\n01000010\n01000110\n00111010\n00000000\n00000000\nCHAR 7860\n00110010\n01001100\n01000010\n00111100\n00000000\n00011000\n00100100\n01000010\n01111110\n01000010\n01000010\n00000000\n00000000\nCHAR 7861\n00110010\n01001100\n01000010\n00111100\n00000000\n00111100\n00000010\n00111110\n01000010\n01000110\n00111010\n00000000\n00000000\nCHAR 7862\n00000000\n01000010\n00111100\n00000000\n00011000\n00100100\n01000010\n01000010\n01111110\n01000010\n01000010\n00000000\n00011000\nCHAR 7863\n00000000\n00000000\n01000010\n00111100\n00000000\n00111100\n00000010\n00111110\n01000010\n01000110\n00111010\n00000000\n00011000\nCHAR 7864\n00000000\n00000000\n01111110\n01000000\n01000000\n01000000\n01111000\n01000000\n01000000\n01000000\n01111110\n00000000\n00011000\nCHAR 7865\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n01000010\n01111110\n01000000\n01000010\n00111100\n00000000\n00011000\nCHAR 7866\n00011000\n00100100\n00000100\n00001000\n01111110\n01000000\n01000000\n01111000\n01000000\n01000000\n01111110\n00000000\n00000000\nCHAR 7867\n00011000\n00100100\n00000100\n00001000\n00001000\n00111100\n01000010\n01111110\n01000000\n01000010\n00111100\n00000000\n00000000\nCHAR 7868\n00000000\n00110010\n01001100\n00000000\n01111110\n01000000\n01000000\n01111000\n01000000\n01000000\n01111110\n00000000\n00000000\nCHAR 7869\n00000000\n00000000\n00110010\n01001100\n00000000\n00111100\n01000010\n01111110\n01000000\n01000010\n00111100\n00000000\n00000000\nCHAR 7870\n00000000\n01000010\n10100100\n00000000\n11111100\n10000000\n10000000\n11110000\n10000000\n10000000\n11111100\n00000000\n00000000\nCHAR 7871\n00000000\n00000000\n01000010\n10100100\n00000000\n01111000\n10000100\n11111100\n10000000\n10000100\n01111000\n00000000\n00000000\nCHAR 7872\n00000000\n10000100\n01001010\n00000000\n01111110\n01000000\n01000000\n01111000\n01000000\n01000000\n01111110\n00000000\n00000000\nCHAR 7873\n00000000\n00000000\n10000100\n01001010\n00000000\n00111100\n01000010\n01111110\n01000000\n01000010\n00111100\n00000000\n00000000\nCHAR 7874\n00000100\n01001010\n10100010\n00000100\n01111110\n01000000\n01000000\n01111000\n01000000\n01000000\n01111110\n00000000\n00000000\nCHAR 7875\n00000100\n00001010\n00100010\n01010100\n00000100\n00111100\n01000010\n01111110\n01000000\n01000010\n00111100\n00000000\n00000000\nCHAR 7876\n00110010\n01001100\n00010000\n00101000\n00000000\n01111110\n01000000\n01111000\n01000000\n01000000\n01111110\n00000000\n00000000\nCHAR 7877\n00110010\n01001100\n00010000\n00101000\n00000000\n00111100\n01000010\n01111110\n01000000\n01000010\n00111100\n00000000\n00000000\nCHAR 7878\n00000000\n00011000\n00100100\n00000000\n01111110\n01000000\n01000000\n01111000\n01000000\n01000000\n01111110\n00000000\n00011000\nCHAR 7879\n00000000\n00000000\n00011000\n00100100\n00000000\n00111100\n01000010\n01111110\n01000000\n01000010\n00111100\n00000000\n00011000\nCHAR 7880\n00010000\n00101000\n00001000\n00010000\n01111100\n00010000\n00010000\n00010000\n00010000\n00010000\n01111100\n00000000\n00000000\nCHAR 7881\n00010000\n00101000\n00001000\n00010000\n00000000\n00110000\n00010000\n00010000\n00010000\n00010000\n01111100\n00000000\n00000000\nCHAR 7882\n00000000\n00000000\n01111100\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n01111100\n00000000\n00110000\nCHAR 7883\n00000000\n00000000\n00000000\n00010000\n00000000\n00110000\n00010000\n00010000\n00010000\n00010000\n01111100\n00000000\n00110000\nCHAR 7884\n00000000\n00000000\n00111100\n01000010\n01000010\n01000010\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00011000\nCHAR 7885\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00011000\nCHAR 7886\n00110000\n01001000\n00001000\n00010000\n01111100\n10000010\n10000010\n10000010\n10000010\n10000010\n01111100\n00000000\n00000000\nCHAR 7887\n00000000\n00011000\n00100100\n00000100\n00001000\n00111100\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 7888\n00000000\n01000010\n10100100\n00000000\n01111100\n10000010\n10000010\n10000010\n10000010\n10000010\n01111100\n00000000\n00000000\nCHAR 7889\n00000000\n00000000\n00100010\n01010100\n00000000\n00111100\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 7890\n00000000\n10000100\n01001010\n00000000\n01111100\n10000010\n10000010\n10000010\n10000010\n10000010\n01111100\n00000000\n00000000\nCHAR 7891\n00000000\n00000000\n01000100\n00101010\n00000000\n00111100\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 7892\n00000100\n01001010\n10100010\n00000100\n01111100\n10000010\n10000010\n10000010\n10000010\n10000010\n01111100\n00000000\n00000000\nCHAR 7893\n00000000\n00000100\n01001010\n10100010\n00000100\n00111100\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 7894\n00110010\n01001100\n00010000\n00101000\n00000000\n01111100\n10000010\n10000010\n10000010\n10000010\n01111100\n00000000\n00000000\nCHAR 7895\n00110010\n01001100\n00000000\n00011000\n00100100\n00000000\n00111100\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 7896\n00000000\n00011000\n00100100\n00000000\n01111100\n10000010\n10000010\n10000010\n10000010\n10000010\n01111100\n00000000\n00011000\nCHAR 7897\n00000000\n00000000\n00011000\n00100100\n00000000\n00111100\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00011000\nCHAR 7898\n00000000\n00001000\n00010000\n00000000\n01111001\n10000101\n10000110\n10000100\n10000100\n10000100\n01111000\n00000000\n00000000\nCHAR 7899\n00000000\n00000000\n00001000\n00010000\n00000000\n01111001\n10000101\n10000110\n10000100\n10000100\n01111000\n00000000\n00000000\nCHAR 7900\n00000000\n00001000\n00010000\n00000000\n01111001\n10000101\n10000110\n10000100\n10000100\n10000100\n01111000\n00000000\n00000000\nCHAR 7901\n00000000\n00000000\n00100000\n00010000\n00000000\n01111001\n10000101\n10000110\n10000100\n10000100\n01111000\n00000000\n00000000\nCHAR 7902\n00110000\n01001000\n00001000\n00010000\n01111001\n10000101\n10000110\n10000100\n10000100\n10000100\n01111000\n00000000\n00000000\nCHAR 7903\n00000000\n00110000\n01001000\n00001000\n00010000\n01111001\n10000101\n10000110\n10000100\n10000100\n01111000\n00000000\n00000000\nCHAR 7904\n00000000\n00110010\n01001100\n00000000\n01111001\n10000101\n10000110\n10000100\n10000100\n10000100\n01111000\n00000000\n00000000\nCHAR 7905\n00000000\n00000000\n00110010\n01001100\n00000000\n01111001\n10000101\n10000110\n10000100\n10000100\n01111000\n00000000\n00000000\nCHAR 7906\n00000000\n00000000\n01111001\n10000101\n10000110\n10000100\n10000100\n10000100\n10000100\n10000100\n01111000\n00000000\n00110000\nCHAR 7907\n00000000\n00000000\n00000000\n00000000\n00000000\n01111001\n10000101\n10000110\n10000100\n10000100\n01111000\n00000000\n00110000\nCHAR 7908\n00000000\n00000000\n01000010\n01000010\n01000010\n01000010\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00011000\nCHAR 7909\n00000000\n00000000\n00000000\n00000000\n00000000\n01000100\n01000100\n01000100\n01000100\n01000100\n00111010\n00000000\n00011000\nCHAR 7910\n00011000\n00100100\n00000100\n00001000\n01001010\n01000010\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 7911\n00110000\n01001000\n00001000\n00010000\n00010000\n01000100\n01000100\n01000100\n01000100\n01000100\n00111010\n00000000\n00000000\nCHAR 7912\n00000000\n00010000\n00100000\n00000000\n10001010\n10001010\n10001100\n10001000\n10001000\n10001000\n01110000\n00000000\n00000000\nCHAR 7913\n00000000\n00000000\n00010000\n00100000\n00000000\n10001010\n10001010\n10001100\n10001000\n10001000\n01110100\n00000000\n00000000\nCHAR 7914\n00000000\n01000000\n00100000\n00000000\n10001010\n10001010\n10001100\n10001000\n10001000\n10001000\n01110000\n00000000\n00000000\nCHAR 7915\n00000000\n00000000\n01000000\n00100000\n00000000\n10001010\n10001010\n10001100\n10001000\n10001000\n01110100\n00000000\n00000000\nCHAR 7916\n00100000\n01010000\n00010000\n00100000\n10101010\n10001010\n10001100\n10001000\n10001000\n10001000\n01110000\n00000000\n00000000\nCHAR 7917\n00100000\n01010000\n00010000\n00100000\n00100000\n10001010\n10001010\n10001100\n10001000\n10001000\n01110100\n00000000\n00000000\nCHAR 7918\n00000000\n01100100\n10011000\n00000000\n10001010\n10001010\n10001100\n10001000\n10001000\n10001000\n01110000\n00000000\n00000000\nCHAR 7919\n00000000\n00000000\n01100100\n10011000\n00000000\n10001010\n10001010\n10001100\n10001000\n10001000\n01110100\n00000000\n00000000\nCHAR 7920\n00000000\n00000000\n10001010\n10001010\n10001100\n10001000\n10001000\n10001000\n10001000\n10001000\n01110000\n00000000\n00110000\nCHAR 7921\n00000000\n00000000\n00000000\n00000000\n00000000\n10001010\n10001010\n10001100\n10001000\n10001000\n01110100\n00000000\n00110000\nCHAR 7922\n00000000\n00100000\n00010000\n00000000\n10000010\n01000100\n00101000\n00010000\n00010000\n00010000\n00010000\n00000000\n00000000\nCHAR 7923\n00000000\n00000000\n00010000\n00001000\n00000000\n01000010\n01000010\n01000010\n01000110\n00111010\n00000010\n01000010\n00111100\nCHAR 7924\n00000000\n00000000\n10000010\n10000010\n01000100\n00101000\n00010000\n00010000\n00010000\n00010000\n00010000\n00000000\n00011000\nCHAR 7925\n00000000\n00000000\n00000000\n00000000\n01000010\n01000010\n01000110\n00111010\n00000010\n01000010\n00111100\n00000000\n00011000\nCHAR 7926\n00110000\n01001000\n00001000\n00010000\n10010010\n01000100\n00101000\n00010000\n00010000\n00010000\n00010000\n00000000\n00000000\nCHAR 7927\n00011000\n00100100\n00000100\n00001000\n00001000\n01000010\n01000010\n01000010\n01000110\n00111010\n00000010\n01000010\n00111100\nCHAR 7928\n00000000\n00110010\n01001100\n00000000\n10000010\n01000100\n00101000\n00010000\n00010000\n00010000\n00010000\n00000000\n00000000\nCHAR 7929\n00000000\n00000000\n00110010\n01001100\n00000000\n01000010\n01000010\n01000010\n01000110\n00111010\n00000010\n01000010\n00111100\nCHAR 7936\n00000000\n00011000\n00001000\n00010000\n00000000\n00111010\n01000110\n01000010\n01000110\n01001010\n00110010\n00000000\n00000000\nCHAR 7937\n00000000\n00011000\n00010000\n00001000\n00000000\n00111010\n01000110\n01000010\n01000110\n01001010\n00110010\n00000000\n00000000\nCHAR 7938\n00000000\n00110100\n00010010\n00100000\n00000000\n00111010\n01000110\n01000010\n01000110\n01001010\n00110010\n00000000\n00000000\nCHAR 7939\n00000000\n00110100\n00100010\n00010000\n00000000\n00111010\n01000110\n01000010\n01000110\n01001010\n00110010\n00000000\n00000000\nCHAR 7940\n00000000\n00110010\n00010100\n00100000\n00000000\n00111010\n01000110\n01000010\n01000110\n01001010\n00110010\n00000000\n00000000\nCHAR 7941\n00000000\n00110010\n00100100\n00010000\n00000000\n00111010\n01000110\n01000010\n01000110\n01001010\n00110010\n00000000\n00000000\nCHAR 7942\n00110100\n01011000\n00001000\n00010000\n00000000\n00111010\n01000110\n01000010\n01000110\n01001010\n00110010\n00000000\n00000000\nCHAR 7943\n00110100\n01011000\n00010000\n00001000\n00000000\n00111010\n01000110\n01000010\n01000110\n01001010\n00110010\n00000000\n00000000\nCHAR 7944\n00000000\n00000000\n11001100\n01010010\n10010010\n00010010\n00010010\n00011110\n00010010\n00010010\n00010010\n00000000\n00000000\nCHAR 7945\n00000000\n00000000\n11001100\n10010010\n01010010\n00010010\n00010010\n00011110\n00010010\n00010010\n00010010\n00000000\n00000000\nCHAR 7946\n00000000\n00000000\n11001100\n01010010\n10010010\n10010010\n01010010\n00011110\n00010010\n00010010\n00010010\n00000000\n00000000\nCHAR 7947\n00000000\n00000000\n11001100\n10010010\n01010010\n10010010\n01010010\n00011110\n00010010\n00010010\n00010010\n00000000\n00000000\nCHAR 7948\n00000000\n00000000\n11001100\n01010010\n10010010\n01010010\n10010010\n00011110\n00010010\n00010010\n00010010\n00000000\n00000000\nCHAR 7949\n00000000\n00000000\n11001100\n10010010\n01010010\n01010010\n10010010\n00011110\n00010010\n00010010\n00010010\n00000000\n00000000\nCHAR 7950\n00000000\n00000000\n11001100\n00010010\n11010010\n01010010\n10010010\n00011110\n00010010\n00010010\n00010010\n00000000\n00000000\nCHAR 7951\n00000000\n00000000\n11001100\n00010010\n11010010\n10010010\n01010010\n00011110\n00010010\n00010010\n00010010\n00000000\n00000000\nCHAR 7952\n00000000\n00011000\n00001000\n00010000\n00000000\n00111100\n01000010\n00111000\n01000000\n01000010\n00111100\n00000000\n00000000\nCHAR 7953\n00000000\n00011000\n00010000\n00001000\n00000000\n00111100\n01000010\n00111000\n01000000\n01000010\n00111100\n00000000\n00000000\nCHAR 7954\n00000000\n00110100\n00010010\n00100000\n00000000\n00111100\n01000010\n00111000\n01000000\n01000010\n00111100\n00000000\n00000000\nCHAR 7955\n00000000\n00110100\n00100010\n00010000\n00000000\n00111100\n01000010\n00111000\n01000000\n01000010\n00111100\n00000000\n00000000\nCHAR 7956\n00000000\n00110010\n00010100\n00100000\n00000000\n00111100\n01000010\n00111000\n01000000\n01000010\n00111100\n00000000\n00000000\nCHAR 7957\n00000000\n00110010\n00100100\n00010000\n00000000\n00111100\n01000010\n00111000\n01000000\n01000010\n00111100\n00000000\n00000000\nCHAR 7960\n00000000\n00000000\n11011110\n01010000\n10010000\n00010000\n00011100\n00010000\n00010000\n00010000\n00011110\n00000000\n00000000\nCHAR 7961\n00000000\n00000000\n11011110\n10010000\n01010000\n00010000\n00011100\n00010000\n00010000\n00010000\n00011110\n00000000\n00000000\nCHAR 7962\n00000000\n00000000\n11011110\n01010000\n10010000\n10010000\n01011100\n00010000\n00010000\n00010000\n00011110\n00000000\n00000000\nCHAR 7963\n00000000\n00000000\n11011110\n10010000\n01010000\n10010000\n01011100\n00010000\n00010000\n00010000\n00011110\n00000000\n00000000\nCHAR 7964\n00000000\n00000000\n11011110\n01010000\n10010000\n01010000\n10011100\n00010000\n00010000\n00010000\n00011110\n00000000\n00000000\nCHAR 7965\n00000000\n00000000\n11011110\n10010000\n01010000\n01010000\n10011100\n00010000\n00010000\n00010000\n00011110\n00000000\n00000000\nCHAR 7968\n00000000\n00011000\n00001000\n00010000\n00000000\n01011100\n01100010\n01000010\n01000010\n01000010\n01000010\n00000010\n00000010\nCHAR 7969\n00000000\n00011000\n00010000\n00001000\n00000000\n01011100\n01100010\n01000010\n01000010\n01000010\n01000010\n00000010\n00000010\nCHAR 7970\n00000000\n00110100\n00010010\n00100000\n00000000\n01011100\n01100010\n01000010\n01000010\n01000010\n01000010\n00000010\n00000010\nCHAR 7971\n00000000\n00110100\n00100010\n00010000\n00000000\n01011100\n01100010\n01000010\n01000010\n01000010\n01000010\n00000010\n00000010\nCHAR 7972\n00000000\n00110010\n00010100\n00100000\n00000000\n01011100\n01100010\n01000010\n01000010\n01000010\n01000010\n00000010\n00000010\nCHAR 7973\n00000000\n00110010\n00100100\n00010000\n00000000\n01011100\n01100010\n01000010\n01000010\n01000010\n01000010\n00000010\n00000010\nCHAR 7974\n00110100\n01011000\n00001000\n00010000\n00000000\n01011100\n01100010\n01000010\n01000010\n01000010\n01000010\n00000010\n00000010\nCHAR 7975\n00110100\n01011000\n00010000\n00001000\n00000000\n01011100\n01100010\n01000010\n01000010\n01000010\n01000010\n00000010\n00000010\nCHAR 7976\n00000000\n00000000\n11010010\n01010010\n10010010\n00010010\n00011110\n00010010\n00010010\n00010010\n00010010\n00000000\n00000000\nCHAR 7977\n00000000\n00000000\n11010010\n10010010\n01010010\n00010010\n00011110\n00010010\n00010010\n00010010\n00010010\n00000000\n00000000\nCHAR 7978\n00000000\n00000000\n11010010\n01010010\n10010010\n10010010\n01011110\n00010010\n00010010\n00010010\n00010010\n00000000\n00000000\nCHAR 7979\n00000000\n00000000\n11010010\n10010010\n01010010\n10010010\n01011110\n00010010\n00010010\n00010010\n00010010\n00000000\n00000000\nCHAR 7980\n00000000\n00000000\n11010010\n01010010\n10010010\n01010010\n10011110\n00010010\n00010010\n00010010\n00010010\n00000000\n00000000\nCHAR 7981\n00000000\n00000000\n11010010\n10010010\n01010010\n01010010\n10011110\n00010010\n00010010\n00010010\n00010010\n00000000\n00000000\nCHAR 7982\n00000000\n00000000\n11010010\n00010010\n11010010\n01010010\n10011110\n00010010\n00010010\n00010010\n00010010\n00000000\n00000000\nCHAR 7983\n00000000\n00000000\n11010010\n00010010\n11010010\n10010010\n01011110\n00010010\n00010010\n00010010\n00010010\n00000000\n00000000\nCHAR 7984\n00000000\n00110000\n00010000\n00100000\n00000000\n00100000\n00100000\n00100000\n00100000\n00100100\n00011000\n00000000\n00000000\nCHAR 7985\n00000000\n00110000\n00100000\n00010000\n00000000\n00100000\n00100000\n00100000\n00100000\n00100100\n00011000\n00000000\n00000000\nCHAR 7986\n00000000\n01101000\n00100100\n01000000\n00000000\n00010000\n00010000\n00010000\n00010000\n00010010\n00001100\n00000000\n00000000\nCHAR 7987\n00000000\n01101000\n01000100\n00100000\n00000000\n00010000\n00010000\n00010000\n00010000\n00010010\n00001100\n00000000\n00000000\nCHAR 7988\n00000000\n01100100\n00101000\n01000000\n00000000\n00010000\n00010000\n00010000\n00010000\n00010010\n00001100\n00000000\n00000000\nCHAR 7989\n00000000\n01100100\n01001000\n00100000\n00000000\n00010000\n00010000\n00010000\n00010000\n00010010\n00001100\n00000000\n00000000\nCHAR 7990\n00110100\n01011000\n00001000\n00010000\n00000000\n00010000\n00010000\n00010000\n00010000\n00010010\n00001100\n00000000\n00000000\nCHAR 7991\n00110100\n01011000\n00010000\n00001000\n00000000\n00010000\n00010000\n00010000\n00010000\n00010010\n00001100\n00000000\n00000000\nCHAR 7992\n00000000\n00000000\n01101110\n00100100\n01000100\n00000100\n00000100\n00000100\n00000100\n00000100\n00001110\n00000000\n00000000\nCHAR 7993\n00000000\n00000000\n01101110\n01000100\n00100100\n00000100\n00000100\n00000100\n00000100\n00000100\n00001110\n00000000\n00000000\nCHAR 7994\n00000000\n00000000\n01101110\n00100100\n01000100\n01000100\n00100100\n00000100\n00000100\n00000100\n00001110\n00000000\n00000000\nCHAR 7995\n00000000\n00000000\n01101110\n01000100\n00100100\n01000100\n00100100\n00000100\n00000100\n00000100\n00001110\n00000000\n00000000\nCHAR 7996\n00000000\n00000000\n01101110\n00100100\n01000100\n00100100\n01000100\n00000100\n00000100\n00000100\n00001110\n00000000\n00000000\nCHAR 7997\n00000000\n00000000\n01101110\n01000100\n00100100\n00100100\n01000100\n00000100\n00000100\n00000100\n00001110\n00000000\n00000000\nCHAR 7998\n00000000\n00000000\n01101110\n00000100\n01100100\n00100100\n01000100\n00000100\n00000100\n00000100\n00001110\n00000000\n00000000\nCHAR 7999\n00000000\n00000000\n01101110\n00000100\n01100100\n01000100\n00100100\n00000100\n00000100\n00000100\n00001110\n00000000\n00000000\nCHAR 8000\n00000000\n00011000\n00001000\n00010000\n00000000\n00111100\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 8001\n00000000\n00011000\n00010000\n00001000\n00000000\n00111100\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 8002\n00000000\n00110100\n00010010\n00100000\n00000000\n00111100\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 8003\n00000000\n00110100\n00100010\n00010000\n00000000\n00111100\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 8004\n00000000\n00110010\n00010100\n00100000\n00000000\n00111100\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 8005\n00000000\n00110010\n00100100\n00010000\n00000000\n00111100\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 8008\n00000000\n00000000\n11001100\n01010010\n10010010\n00010010\n00010010\n00010010\n00010010\n00010010\n00001100\n00000000\n00000000\nCHAR 8009\n00000000\n00000000\n11001100\n10010010\n01010010\n00010010\n00010010\n00010010\n00010010\n00010010\n00001100\n00000000\n00000000\nCHAR 8010\n00000000\n00000000\n11001100\n01010010\n10010010\n10010010\n01010010\n00010010\n00010010\n00010010\n00001100\n00000000\n00000000\nCHAR 8011\n00000000\n00000000\n11001100\n10010010\n01010010\n10010010\n01010010\n00010010\n00010010\n00010010\n00001100\n00000000\n00000000\nCHAR 8012\n00000000\n00000000\n11001100\n01010010\n10010010\n01010010\n10010010\n00010010\n00010010\n00010010\n00001100\n00000000\n00000000\nCHAR 8013\n00000000\n00000000\n11001100\n10010010\n01010010\n01010010\n10010010\n00010010\n00010010\n00010010\n00001100\n00000000\n00000000\nCHAR 8016\n00000000\n00011000\n00001000\n00010000\n00000000\n01000010\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 8017\n00000000\n00011000\n00010000\n00001000\n00000000\n01000010\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 8018\n00000000\n00110100\n00010010\n00100000\n00000000\n01000010\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 8019\n00000000\n00110100\n00100010\n00010000\n00000000\n01000010\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 8020\n00000000\n00110010\n00010100\n00100000\n00000000\n01000010\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 8021\n00000000\n00110010\n00100100\n00010000\n00000000\n01000010\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 8022\n00110100\n01011000\n00011000\n00001000\n00010000\n01000010\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 8023\n00110100\n01011000\n00011000\n00010000\n00001000\n01000010\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 8025\n00000000\n00000000\n01101010\n01001010\n00101010\n00000100\n00000100\n00000100\n00000100\n00000100\n00000100\n00000000\n00000000\nCHAR 8027\n00000000\n00000000\n01101010\n01001010\n00101010\n01000100\n00100100\n00000100\n00000100\n00000100\n00000100\n00000000\n00000000\nCHAR 8029\n00000000\n00000000\n01101010\n01001010\n00101010\n00100100\n01000100\n00000100\n00000100\n00000100\n00000100\n00000000\n00000000\nCHAR 8031\n00000000\n00000000\n01101010\n00001010\n01101010\n01000100\n00100100\n00000100\n00000100\n00000100\n00000100\n00000000\n00000000\nCHAR 8032\n00000000\n00011000\n00001000\n00010000\n00000000\n10000010\n10010010\n10010010\n10010010\n10010010\n01101100\n00000000\n00000000\nCHAR 8033\n00000000\n00011000\n00010000\n00001000\n00000000\n10000010\n10010010\n10010010\n10010010\n10010010\n01101100\n00000000\n00000000\nCHAR 8034\n00000000\n01101000\n00100100\n01000000\n00000000\n10000010\n10010010\n10010010\n10010010\n10010010\n01101100\n00000000\n00000000\nCHAR 8035\n00000000\n01101000\n01000100\n00100000\n00000000\n10000010\n10010010\n10010010\n10010010\n10010010\n01101100\n00000000\n00000000\nCHAR 8036\n00000000\n01100100\n00101000\n01000000\n00000000\n10000010\n10010010\n10010010\n10010010\n10010010\n01101100\n00000000\n00000000\nCHAR 8037\n00000000\n01100100\n01001000\n00100000\n00000000\n10000010\n10010010\n10010010\n10010010\n10010010\n01101100\n00000000\n00000000\nCHAR 8038\n00110100\n01011000\n00011000\n00001000\n00010000\n10000010\n10010010\n10010010\n10010010\n10010010\n01101100\n00000000\n00000000\nCHAR 8039\n00110100\n01011000\n00011000\n00010000\n00001000\n10000010\n10010010\n10010010\n10010010\n10010010\n01101100\n00000000\n00000000\nCHAR 8040\n00000000\n00000000\n11001100\n01010010\n10010010\n00010010\n00010010\n00010010\n00001100\n00001100\n00010010\n00000000\n00000000\nCHAR 8041\n00000000\n00000000\n11001100\n10010010\n01010010\n00010010\n00010010\n00010010\n00001100\n00001100\n00010010\n00000000\n00000000\nCHAR 8042\n00000000\n00000000\n11001100\n01010010\n10010010\n10010010\n01010010\n00010010\n00001100\n00001100\n00010010\n00000000\n00000000\nCHAR 8043\n00000000\n00000000\n11001100\n10010010\n01010010\n10010010\n01010010\n00010010\n00001100\n00001100\n00010010\n00000000\n00000000\nCHAR 8044\n00000000\n00000000\n11001100\n01010010\n10010010\n01010010\n10010010\n00010010\n00001100\n00001100\n00010010\n00000000\n00000000\nCHAR 8045\n00000000\n00000000\n11001100\n10010010\n01010010\n01010010\n10010010\n00010010\n00001100\n00001100\n00010010\n00000000\n00000000\nCHAR 8046\n00000000\n00000000\n11001100\n00010010\n11010010\n01010010\n10010010\n00010010\n00001100\n00001100\n00010010\n00000000\n00000000\nCHAR 8047\n00000000\n00000000\n11001100\n00010010\n11010010\n10010010\n01010010\n00010010\n00001100\n00001100\n00010010\n00000000\n00000000\nCHAR 8048\n00000000\n00000000\n00010000\n00001000\n00000000\n00111010\n01000110\n01000010\n01000110\n01001010\n00110010\n00000000\n00000000\nCHAR 8049\n00000000\n00000000\n00001000\n00010000\n00000000\n00111010\n01000110\n01000010\n01000110\n01001010\n00110010\n00000000\n00000000\nCHAR 8050\n00000000\n00000000\n00010000\n00001000\n00000000\n00111100\n01000010\n00111000\n01000000\n01000010\n00111100\n00000000\n00000000\nCHAR 8051\n00000000\n00000000\n00001000\n00010000\n00000000\n00111100\n01000010\n00111000\n01000000\n01000010\n00111100\n00000000\n00000000\nCHAR 8052\n00000000\n00000000\n00010000\n00001000\n00000000\n01011100\n01100010\n01000010\n01000010\n01000010\n01000010\n00000010\n00000010\nCHAR 8053\n00000000\n00000000\n00001000\n00010000\n00000000\n01011100\n01100010\n01000010\n01000010\n01000010\n01000010\n00000010\n00000010\nCHAR 8054\n00000000\n00000000\n01000000\n00100000\n00000000\n00100000\n00100000\n00100000\n00100000\n00100100\n00011000\n00000000\n00000000\nCHAR 8055\n00000000\n00000000\n00010000\n00100000\n00000000\n00100000\n00100000\n00100000\n00100000\n00100100\n00011000\n00000000\n00000000\nCHAR 8056\n00000000\n00000000\n00010000\n00001000\n00000000\n00111100\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 8057\n00000000\n00000000\n00001000\n00010000\n00000000\n00111100\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 8058\n00000000\n00000000\n00010000\n00001000\n00000000\n01000010\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 8059\n00000000\n00000000\n00001000\n00010000\n00000000\n01000010\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 8060\n00000000\n00000000\n00100000\n00010000\n00000000\n10000010\n10010010\n10010010\n10010010\n10010010\n01101100\n00000000\n00000000\nCHAR 8061\n00000000\n00000000\n00001000\n00010000\n00000000\n10000010\n10010010\n10010010\n10010010\n10010010\n01101100\n00000000\n00000000\nCHAR 8064\n00000000\n00011000\n00001000\n00010000\n00000000\n00111010\n01000110\n01000010\n01000110\n01001010\n00110010\n00000000\n00010000\nCHAR 8065\n00000000\n00011000\n00010000\n00001000\n00000000\n00111010\n01000110\n01000010\n01000110\n01001010\n00110010\n00000000\n00010000\nCHAR 8066\n00000000\n00110100\n00010010\n00100000\n00000000\n00111010\n01000110\n01000010\n01000110\n01001010\n00110010\n00000000\n00010000\nCHAR 8067\n00000000\n00110100\n00100010\n00010000\n00000000\n00111010\n01000110\n01000010\n01000110\n01001010\n00110010\n00000000\n00010000\nCHAR 8068\n00000000\n00110010\n00010100\n00100000\n00000000\n00111010\n01000110\n01000010\n01000110\n01001010\n00110010\n00000000\n00010000\nCHAR 8069\n00000000\n00110010\n00100100\n00010000\n00000000\n00111010\n01000110\n01000010\n01000110\n01001010\n00110010\n00000000\n00010000\nCHAR 8070\n00110100\n01011000\n00001000\n00010000\n00000000\n00111010\n01000110\n01000010\n01000110\n01001010\n00110010\n00000000\n00010000\nCHAR 8071\n00110100\n01011000\n00010000\n00001000\n00000000\n00111010\n01000110\n01000010\n01000110\n01001010\n00110010\n00000000\n00010000\nCHAR 8072\n00000000\n00000000\n11001100\n01010010\n10010010\n00010010\n00010010\n00011110\n00010010\n00010010\n00010010\n00000000\n00001000\nCHAR 8073\n00000000\n00000000\n11001100\n10010010\n01010010\n00010010\n00010010\n00011110\n00010010\n00010010\n00010010\n00000000\n00001000\nCHAR 8074\n00000000\n00000000\n11001100\n01010010\n10010010\n10010010\n01010010\n00011110\n00010010\n00010010\n00010010\n00000000\n00001000\nCHAR 8075\n00000000\n00000000\n11001100\n10010010\n01010010\n10010010\n01010010\n00011110\n00010010\n00010010\n00010010\n00000000\n00001000\nCHAR 8076\n00000000\n00000000\n11001100\n01010010\n10010010\n01010010\n10010010\n00011110\n00010010\n00010010\n00010010\n00000000\n00001000\nCHAR 8077\n00000000\n00000000\n11001100\n10010010\n01010010\n01010010\n10010010\n00011110\n00010010\n00010010\n00010010\n00000000\n00001000\nCHAR 8078\n00000000\n00000000\n11001100\n00010010\n11010010\n01010010\n10010010\n00011110\n00010010\n00010010\n00010010\n00000000\n00001000\nCHAR 8079\n00000000\n00000000\n11001100\n00010010\n11010010\n10010010\n01010010\n00011110\n00010010\n00010010\n00010010\n00000000\n00001000\nCHAR 8080\n00000000\n00011000\n00001000\n00010000\n00000000\n01011100\n01100010\n01000010\n01000010\n01000010\n01000010\n00000010\n01000010\nCHAR 8081\n00000000\n00011000\n00010000\n00001000\n00000000\n01011100\n01100010\n01000010\n01000010\n01000010\n01000010\n00000010\n01000010\nCHAR 8082\n00000000\n00110100\n00010010\n00100000\n00000000\n01011100\n01100010\n01000010\n01000010\n01000010\n01000010\n00000010\n01000010\nCHAR 8083\n00000000\n00110100\n00100010\n00010000\n00000000\n01011100\n01100010\n01000010\n01000010\n01000010\n01000010\n00000010\n01000010\nCHAR 8084\n00000000\n00110010\n00010100\n00100000\n00000000\n01011100\n01100010\n01000010\n01000010\n01000010\n01000010\n00000010\n01000010\nCHAR 8085\n00000000\n00110010\n00100100\n00010000\n00000000\n01011100\n01100010\n01000010\n01000010\n01000010\n01000010\n00000010\n01000010\nCHAR 8086\n00110100\n01011000\n00001000\n00010000\n00000000\n01011100\n01100010\n01000010\n01000010\n01000010\n01000010\n00000010\n01000010\nCHAR 8087\n00110100\n01011000\n00010000\n00001000\n00000000\n01011100\n01100010\n01000010\n01000010\n01000010\n01000010\n00000010\n01000010\nCHAR 8088\n00000000\n00000000\n11010010\n01010010\n10010010\n00010010\n00011110\n00010010\n00010010\n00010010\n00010010\n00000000\n00001000\nCHAR 8089\n00000000\n00000000\n11010010\n10010010\n01010010\n00010010\n00011110\n00010010\n00010010\n00010010\n00010010\n00000000\n00001000\nCHAR 8090\n00000000\n00000000\n11010010\n01010010\n10010010\n10010010\n01011110\n00010010\n00010010\n00010010\n00010010\n00000000\n00001000\nCHAR 8091\n00000000\n00000000\n11010010\n10010010\n01010010\n10010010\n01011110\n00010010\n00010010\n00010010\n00010010\n00000000\n00001000\nCHAR 8092\n00000000\n00000000\n11010010\n01010010\n10010010\n01010010\n10011110\n00010010\n00010010\n00010010\n00010010\n00000000\n00001000\nCHAR 8093\n00000000\n00000000\n11010010\n10010010\n01010010\n01010010\n10011110\n00010010\n00010010\n00010010\n00010010\n00000000\n00001000\nCHAR 8094\n00000000\n00000000\n11010010\n00010010\n11010010\n01010010\n10011110\n00010010\n00010010\n00010010\n00010010\n00000000\n00001000\nCHAR 8095\n00000000\n00000000\n11010010\n00010010\n11010010\n10010010\n01011110\n00010010\n00010010\n00010010\n00010010\n00000000\n00001000\nCHAR 8096\n00000000\n00011000\n00001000\n00010000\n00000000\n10000010\n10010010\n10010010\n10010010\n10010010\n01101100\n00000000\n00010000\nCHAR 8097\n00000000\n00011000\n00010000\n00001000\n00000000\n10000010\n10010010\n10010010\n10010010\n10010010\n01101100\n00000000\n00010000\nCHAR 8098\n00000000\n01101000\n00100100\n01000000\n00000000\n10000010\n10010010\n10010010\n10010010\n10010010\n01101100\n00000000\n00010000\nCHAR 8099\n00000000\n01101000\n01000100\n00100000\n00000000\n10000010\n10010010\n10010010\n10010010\n10010010\n01101100\n00000000\n00010000\nCHAR 8100\n00000000\n01100100\n00101000\n01000000\n00000000\n10000010\n10010010\n10010010\n10010010\n10010010\n01101100\n00000000\n00010000\nCHAR 8101\n00000000\n01100100\n01001000\n00100000\n00000000\n10000010\n10010010\n10010010\n10010010\n10010010\n01101100\n00000000\n00010000\nCHAR 8102\n00110100\n01011000\n00001000\n00010000\n00000000\n10000010\n10010010\n10010010\n10010010\n10010010\n01101100\n00000000\n00010000\nCHAR 8103\n00110100\n01011000\n00010000\n00001000\n00000000\n10000010\n10010010\n10010010\n10010010\n10010010\n01101100\n00000000\n00010000\nCHAR 8104\n00000000\n00000000\n11001100\n01010010\n10010010\n00010010\n00010010\n00010010\n00001100\n00001100\n00010010\n00000000\n00001000\nCHAR 8105\n00000000\n00000000\n11001100\n10010010\n01010010\n00010010\n00010010\n00010010\n00001100\n00001100\n00010010\n00000000\n00001000\nCHAR 8106\n00000000\n00000000\n11001100\n01010010\n10010010\n10010010\n01010010\n00010010\n00001100\n00001100\n00010010\n00000000\n00001000\nCHAR 8107\n00000000\n00000000\n11001100\n10010010\n01010010\n10010010\n01010010\n00010010\n00001100\n00001100\n00010010\n00000000\n00001000\nCHAR 8108\n00000000\n00000000\n11001100\n01010010\n10010010\n01010010\n10010010\n00010010\n00001100\n00001100\n00010010\n00000000\n00001000\nCHAR 8109\n00000000\n00000000\n11001100\n10010010\n01010010\n01010010\n10010010\n00010010\n00001100\n00001100\n00010010\n00000000\n00001000\nCHAR 8110\n00000000\n00000000\n11001100\n00010010\n11010010\n01010010\n10010010\n00010010\n00001100\n00001100\n00010010\n00000000\n00001000\nCHAR 8111\n00000000\n00000000\n11001100\n00010010\n11010010\n10010010\n01010010\n00010010\n00001100\n00001100\n00010010\n00000000\n00001000\nCHAR 8112\n00000000\n00000000\n01000010\n00111100\n00000000\n00111010\n01000110\n01000010\n01000110\n01001010\n00110010\n00000000\n00000000\nCHAR 8113\n00000000\n00000000\n00000000\n01111110\n00000000\n00111010\n01000110\n01000010\n01000110\n01001010\n00110010\n00000000\n00000000\nCHAR 8114\n00000000\n00000000\n00010000\n00001000\n00000000\n00111010\n01000110\n01000010\n01000110\n01001010\n00110010\n00000000\n00010000\nCHAR 8115\n00000000\n00000000\n00000000\n00000000\n00000000\n00111010\n01000110\n01000010\n01000110\n01001010\n00110010\n00000000\n00010000\nCHAR 8116\n00000000\n00000000\n00001000\n00010000\n00000000\n00111010\n01000110\n01000010\n01000110\n01001010\n00110010\n00000000\n00010000\nCHAR 8118\n00000000\n00000000\n00011010\n00101100\n00000000\n00111010\n01000110\n01000010\n01000110\n01001010\n00110010\n00000000\n00000000\nCHAR 8119\n00000000\n00000000\n00011010\n00101100\n00000000\n00111010\n01000110\n01000010\n01000110\n01001010\n00110010\n00000000\n00010000\nCHAR 8120\n00000000\n01000010\n00111100\n00000000\n00011000\n00100100\n01000010\n01000010\n01111110\n01000010\n01000010\n00000000\n00000000\nCHAR 8121\n00000000\n01111110\n00000000\n00011000\n00100100\n01000010\n01000010\n01111110\n01000010\n01000010\n01000010\n00000000\n00000000\nCHAR 8122\n00000000\n00000000\n10001100\n01010010\n00010010\n00010010\n00010010\n00011110\n00010010\n00010010\n00010010\n00000000\n00000000\nCHAR 8123\n00000000\n00000000\n01001100\n10010010\n00010010\n00010010\n00010010\n00011110\n00010010\n00010010\n00010010\n00000000\n00000000\nCHAR 8124\n00000000\n00000000\n00011000\n00100100\n01000010\n01000010\n01000010\n01111110\n01000010\n01000010\n01000010\n00010000\n00011000\nCHAR 8125\n00000000\n00000000\n00011000\n00001000\n00010000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8126\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00010000\n00010000\n00010000\n00001000\n00000000\n00000000\nCHAR 8127\n00000000\n00000000\n00011000\n00001000\n00010000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8128\n00000000\n00000000\n00011010\n00101100\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8129\n00000000\n00011010\n00101100\n00000000\n00110110\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8130\n00000000\n00000000\n00010000\n00001000\n00000000\n01011100\n01100010\n01000010\n01000010\n01000010\n01000010\n00000010\n01000010\nCHAR 8131\n00000000\n00000000\n00000000\n00000000\n00000000\n01011100\n01100010\n01000010\n01000010\n01000010\n01000010\n00000010\n01000010\nCHAR 8132\n00000000\n00000000\n00000100\n00001000\n00000000\n01011100\n01100010\n01000010\n01000010\n01000010\n01000010\n00000010\n01000010\nCHAR 8134\n00000000\n00000000\n00011010\n00101100\n00000000\n01011100\n01100010\n01000010\n01000010\n01000010\n01000010\n00000010\n00000010\nCHAR 8135\n00000000\n00000000\n00011010\n00101100\n00000000\n01011100\n01100010\n01000010\n01000010\n01000010\n01000010\n00000010\n01000010\nCHAR 8136\n00000000\n00000000\n10011110\n01010000\n00010000\n00010000\n00011100\n00010000\n00010000\n00010000\n00011110\n00000000\n00000000\nCHAR 8137\n00000000\n00000000\n01011110\n10010000\n00010000\n00010000\n00011100\n00010000\n00010000\n00010000\n00011110\n00000000\n00000000\nCHAR 8138\n00000000\n00000000\n10010010\n01010010\n00010010\n00010010\n00011110\n00010010\n00010010\n00010010\n00010010\n00000000\n00000000\nCHAR 8139\n00000000\n00000000\n01010010\n10010010\n00010010\n00010010\n00011110\n00010010\n00010010\n00010010\n00010010\n00000000\n00000000\nCHAR 8140\n00000000\n00000000\n01000010\n01000010\n01000010\n01000010\n01111110\n01000010\n01000010\n01000010\n01000010\n00010000\n00011000\nCHAR 8141\n00000000\n00000000\n00110100\n00010010\n00100000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8142\n00000000\n00000000\n00110010\n00010100\n00100000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8143\n00000000\n00000000\n00011010\n00101100\n00000100\n00001000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8144\n00000000\n00000000\n01000010\n00111100\n00000000\n00010000\n00010000\n00010000\n00010000\n00010010\n00001100\n00000000\n00000000\nCHAR 8145\n00000000\n00000000\n00000000\n01111110\n00000000\n00010000\n00010000\n00010000\n00010000\n00010010\n00001100\n00000000\n00000000\nCHAR 8146\n00000000\n00010000\n01001010\n01000010\n00000000\n00010000\n00010000\n00010000\n00010000\n00010010\n00001100\n00000000\n00000000\nCHAR 8147\n00000000\n00001000\n01010010\n01000010\n00000000\n00010000\n00010000\n00010000\n00010000\n00010010\n00001100\n00000000\n00000000\nCHAR 8150\n00000000\n00000000\n00110100\n01011000\n00000000\n00010000\n00010000\n00010000\n00010000\n00010010\n00001100\n00000000\n00000000\nCHAR 8151\n00110100\n01011000\n00000000\n01101100\n00000000\n00010000\n00010000\n00010000\n00010000\n00010010\n00001100\n00000000\n00000000\nCHAR 8152\n00000000\n10000100\n01111000\n00000000\n01111100\n00010000\n00010000\n00010000\n00010000\n00010000\n01111100\n00000000\n00000000\nCHAR 8153\n00000000\n01111100\n00000000\n01111100\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n01111100\n00000000\n00000000\nCHAR 8154\n00000000\n00000000\n01001110\n00100100\n00000100\n00000100\n00000100\n00000100\n00000100\n00000100\n00001110\n00000000\n00000000\nCHAR 8155\n00000000\n00000000\n00101110\n01000100\n00000100\n00000100\n00000100\n00000100\n00000100\n00000100\n00001110\n00000000\n00000000\nCHAR 8157\n00000000\n00000000\n00110100\n00100010\n00010000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8158\n00000000\n00000000\n00110010\n00100100\n00010000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8159\n00000000\n00000000\n00011010\n00101100\n00001000\n00000100\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8160\n00000000\n00000000\n01000010\n00111100\n00000000\n01000010\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 8161\n00000000\n00000000\n00000000\n01111110\n00000000\n01000010\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 8162\n00000000\n00010000\n01001010\n01000010\n00000000\n01000010\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 8163\n00000000\n00001000\n01010010\n01000010\n00000000\n01000010\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 8164\n00000000\n00011000\n00001000\n00010000\n00000000\n00111100\n01000010\n01000010\n01000010\n01100010\n01011100\n01000000\n01000000\nCHAR 8165\n00000000\n00011000\n00010000\n00001000\n00000000\n00111100\n01000010\n01000010\n01000010\n01100010\n01011100\n01000000\n01000000\nCHAR 8166\n00000000\n00000000\n00011010\n00101100\n00000000\n01000010\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 8167\n00110010\n01011100\n00000000\n01100110\n00000000\n01000010\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 8168\n00000000\n10000100\n01111000\n00000000\n10000010\n01000100\n00101000\n00010000\n00010000\n00010000\n00010000\n00000000\n00000000\nCHAR 8169\n00000000\n01111100\n00000000\n10000010\n10000010\n01000100\n00101000\n00010000\n00010000\n00010000\n00010000\n00000000\n00000000\nCHAR 8170\n00000000\n00000000\n01001010\n00101010\n00001010\n00000100\n00000100\n00000100\n00000100\n00000100\n00000100\n00000000\n00000000\nCHAR 8171\n00000000\n00000000\n00101010\n01001010\n00001010\n00000100\n00000100\n00000100\n00000100\n00000100\n00000100\n00000000\n00000000\nCHAR 8172\n00000000\n00000000\n11011100\n10010010\n01010010\n00010010\n00011100\n00010000\n00010000\n00010000\n00010000\n00000000\n00000000\nCHAR 8173\n00000000\n00010000\n01001010\n01000010\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8174\n00000000\n00001000\n01010010\n01000010\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8175\n00000000\n00000000\n00010000\n00001000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8178\n00000000\n00000000\n00100000\n00010000\n00000000\n10000010\n10010010\n10010010\n10010010\n10010010\n01101100\n00000000\n00010000\nCHAR 8179\n00000000\n00000000\n00000000\n00000000\n00000000\n10000010\n10010010\n10010010\n10010010\n10010010\n01101100\n00000000\n00010000\nCHAR 8180\n00000000\n00000000\n00001000\n00010000\n00000000\n10000010\n10010010\n10010010\n10010010\n10010010\n01101100\n00000000\n00010000\nCHAR 8182\n00000000\n00000000\n00110100\n01011000\n00000000\n10000010\n10010010\n10010010\n10010010\n10010010\n01101100\n00000000\n00000000\nCHAR 8183\n00000000\n00000000\n00110100\n01011000\n00000000\n10000010\n10010010\n10010010\n10010010\n10010010\n01101100\n00000000\n00010000\nCHAR 8184\n00000000\n00000000\n10001100\n01010010\n00010010\n00010010\n00010010\n00010010\n00010010\n00010010\n00001100\n00000000\n00000000\nCHAR 8185\n00000000\n00000000\n01001100\n10010010\n00010010\n00010010\n00010010\n00010010\n00010010\n00010010\n00001100\n00000000\n00000000\nCHAR 8186\n00000000\n00000000\n10001100\n01010010\n00010010\n00010010\n00010010\n00010010\n00001100\n00001100\n00010010\n00000000\n00000000\nCHAR 8187\n00000000\n00000000\n01001100\n10010010\n00010010\n00010010\n00010010\n00010010\n00001100\n00001100\n00010010\n00000000\n00000000\nCHAR 8188\n00000000\n00000000\n01111100\n10000010\n10000010\n10000010\n10000010\n10000010\n01101100\n00101000\n11101110\n00010000\n00011000\nCHAR 8189\n00000000\n00000000\n00001000\n00010000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8190\n00000000\n00000000\n00011000\n00010000\n00001000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8192\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8193\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8194\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8195\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8196\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8197\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8198\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8199\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8200\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8201\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8202\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8208\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8209\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8210\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n01111110\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8211\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n01111110\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8212\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n11111111\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8213\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n11111111\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8214\n00000000\n00000000\n00101000\n00101000\n00101000\n00101000\n00101000\n00101000\n00101000\n00101000\n00101000\n00000000\n00000000\nCHAR 8215\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n11111110\n00000000\n11111110\nCHAR 8216\n00000000\n00001000\n00010000\n00011000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8217\n00000000\n00000000\n00011000\n00001000\n00010000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8218\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00011000\n00001000\n00010000\n00000000\nCHAR 8219\n00000000\n00000000\n00011000\n00010000\n00001000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8220\n00000000\n00100100\n01001000\n01101100\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8221\n00000000\n00000000\n01101100\n00100100\n01001000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8222\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n01101100\n00100100\n01001000\n00000000\nCHAR 8223\n00000000\n00000000\n01101100\n01001000\n00100100\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8224\n00000000\n00000000\n00010000\n00010000\n01111100\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00000000\n00000000\nCHAR 8225\n00000000\n00000000\n00010000\n00010000\n01111100\n00010000\n00010000\n00010000\n01111100\n00010000\n00010000\n00000000\n00000000\nCHAR 8226\n00000000\n00000000\n00000000\n00000000\n00111000\n01111100\n01111100\n01111100\n00111000\n00000000\n00000000\n00000000\n00000000\nCHAR 8227\n00000000\n00000000\n00000000\n00100000\n00110000\n00111000\n00111100\n00111000\n00110000\n00100000\n00000000\n00000000\n00000000\nCHAR 8228\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00010000\n00000000\n00000000\nCHAR 8229\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00101000\n00000000\n00000000\nCHAR 8230\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n01010100\n00000000\n00000000\nCHAR 8231\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00011000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8239\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8240\n00000000\n00000000\n01000100\n10100100\n01001000\n00010000\n00010000\n00100000\n01001010\n01010101\n10001010\n00000000\n00000000\nCHAR 8241\n00000000\n00000000\n01000100\n10100100\n01001000\n00010000\n00100000\n01000000\n01101010\n11010101\n10101010\n00000000\n00000000\nCHAR 8242\n00000000\n00000000\n00001000\n00001000\n00010000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8243\n00000000\n00000000\n00100100\n00100100\n01001000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8244\n00000000\n00000000\n01001001\n01001001\n10010010\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8245\n00000000\n00000000\n00010000\n00010000\n00001000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8246\n00000000\n00000000\n01001000\n01001000\n00100100\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8247\n00000000\n00000000\n10010010\n10010010\n01001001\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8248\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00010000\n00101000\n01000100\nCHAR 8249\n00000000\n00000000\n00000000\n00000100\n00001000\n00010000\n00100000\n00010000\n00001000\n00000100\n00000000\n00000000\n00000000\nCHAR 8250\n00000000\n00000000\n00000000\n00100000\n00010000\n00001000\n00000100\n00001000\n00010000\n00100000\n00000000\n00000000\n00000000\nCHAR 8251\n00000000\n00000000\n10010010\n01000100\n00101000\n00010000\n01010100\n00010000\n00101000\n01000100\n10010010\n00000000\n00000000\nCHAR 8252\n00000000\n00000000\n00100100\n00100100\n00100100\n00100100\n00100100\n00100100\n00100100\n00000000\n00100100\n00000000\n00000000\nCHAR 8253\n00000000\n00000000\n00111100\n01001010\n00001010\n00001010\n00001100\n00001000\n00001000\n00000000\n00001000\n00000000\n00000000\nCHAR 8254\n00000000\n01111110\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8255\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n01000010\n00111100\nCHAR 8256\n00000000\n00111100\n01000010\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8257\n00000000\n00000000\n00000000\n00000000\n00000000\n00000100\n00000100\n00001000\n00001000\n00010000\n00010000\n00101000\n00101000\nCHAR 8258\n00000000\n00000000\n00000000\n00000000\n00010000\n00111000\n00010000\n01000100\n11101110\n01000100\n00000000\n00000000\n00000000\nCHAR 8259\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n00111100\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8260\n00000000\n00000000\n00000100\n00001000\n00001000\n00010000\n00010000\n00100000\n00100000\n01000000\n01000000\n00000000\n00000000\nCHAR 8261\n00000000\n00000000\n00111000\n00100000\n00100000\n00100000\n00111000\n00100000\n00100000\n00100000\n00111000\n00000000\n00000000\nCHAR 8262\n00000000\n00000000\n00111000\n00001000\n00001000\n00001000\n00111000\n00001000\n00001000\n00001000\n00111000\n00000000\n00000000\nCHAR 8263\n00000000\n00000000\n01000100\n10101010\n10101010\n00100010\n01000100\n01000100\n01000100\n00000000\n01000100\n00000000\n00000000\nCHAR 8264\n00000000\n00000000\n01110010\n10001010\n10001010\n00001010\n00010010\n00100010\n00100010\n00000000\n00100010\n00000000\n00000000\nCHAR 8265\n00000000\n00000000\n10011100\n10100010\n10100010\n10000010\n10000100\n10001000\n10001000\n00000000\n10001000\n00000000\n00000000\nCHAR 8266\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n01111100\n00000100\n00000100\n00000100\n00000100\n00000000\n00000000\nCHAR 8267\n00000000\n00000000\n01111100\n00101110\n00101110\n00101110\n00101100\n00101000\n00101000\n00101000\n00101000\n00000000\n00000000\nCHAR 8268\n00000000\n00000000\n00000000\n00000000\n00111100\n01110100\n01110100\n01110100\n00111100\n00000000\n00000000\n00000000\n00000000\nCHAR 8269\n00000000\n00000000\n00000000\n00000000\n01111000\n01011100\n01011100\n01011100\n01111000\n00000000\n00000000\n00000000\n00000000\nCHAR 8270\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00100100\n00011000\n01111110\n00011000\n00100100\n00000000\n00000000\nCHAR 8271\n00000000\n00000000\n00000000\n00000000\n00010000\n00111000\n00010000\n00000000\n00000000\n00111000\n00011000\n00000100\n00000000\nCHAR 8272\n00000000\n00000000\n00000000\n00111100\n01000010\n00000000\n00000000\n00000000\n01000010\n00111100\n00000000\n00000000\n00000000\nCHAR 8273\n00000000\n00000000\n00100100\n00011000\n01111110\n00011000\n00100100\n00011000\n01111110\n00011000\n00100100\n00000000\n00000000\nCHAR 8274\n00000000\n00000000\n01100010\n01100010\n00000100\n00001000\n00001000\n00010000\n00100000\n00100110\n01000110\n00000000\n00000000\nCHAR 8279\n00000000\n00000000\n01010101\n01010101\n10101010\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8287\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8288\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8289\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8290\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8291\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8298\n00000000\n11100000\n01000000\n01000000\n11100000\n00000000\n01110111\n10001000\n01100110\n00010001\n11101110\n00000000\n00000000\nCHAR 8299\n00000000\n01100000\n10010000\n11110000\n10010000\n00000000\n01110111\n10001000\n01100110\n00010001\n11101110\n00000000\n00000000\nCHAR 8300\n00000000\n11100110\n01001001\n01001111\n11101001\n00000000\n01110111\n10001000\n01100110\n00010001\n11101110\n00000000\n00000000\nCHAR 8301\n00000000\n00100010\n01010101\n01110111\n01010101\n00000000\n01110111\n10001000\n01100110\n00010001\n11101110\n00000000\n00000000\nCHAR 8302\n00000000\n10010010\n11010101\n10110111\n10010101\n00000000\n01110111\n10001000\n01100110\n00010001\n11101110\n00000000\n00000000\nCHAR 8303\n00000000\n10010010\n11010101\n10110101\n10010010\n00000000\n01110111\n10001000\n01100110\n00010001\n11101110\n00000000\n00000000\nCHAR 8304\n00000000\n00110000\n01001000\n01001000\n01001000\n01001000\n00110000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8305\n00100000\n00000000\n01100000\n00100000\n00100000\n00100000\n01110000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8308\n00000000\n00010000\n00110000\n00110000\n01010000\n01111000\n00010000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8309\n00000000\n01111000\n01000000\n01110000\n00001000\n00001000\n01110000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8310\n00000000\n00111000\n01000000\n01110000\n01001000\n01001000\n00110000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8311\n00000000\n01111000\n00001000\n00010000\n00010000\n00100000\n00100000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8312\n00000000\n00110000\n01001000\n00110000\n01001000\n01001000\n00110000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8313\n00000000\n00110000\n01001000\n01001000\n00111000\n00001000\n00110000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8314\n00000000\n00000000\n00010000\n00010000\n01111100\n00010000\n00010000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8315\n00000000\n00000000\n00000000\n00000000\n01111100\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8316\n00000000\n00000000\n00000000\n01111100\n00000000\n01111100\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8317\n00000000\n00100000\n01000000\n01000000\n01000000\n01000000\n00100000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8318\n00000000\n00100000\n00010000\n00010000\n00010000\n00010000\n00100000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8319\n00000000\n00000000\n00000000\n00111000\n00100100\n00100100\n00100100\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8320\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00110000\n01001000\n01001000\n01001000\n01001000\n00110000\n00000000\nCHAR 8321\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00100000\n01100000\n00100000\n00100000\n00100000\n01110000\n00000000\nCHAR 8322\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00110000\n01001000\n00001000\n00110000\n01000000\n01111000\n00000000\nCHAR 8323\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00110000\n01001000\n00010000\n00001000\n01001000\n00110000\n00000000\nCHAR 8324\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00010000\n00110000\n00110000\n01010000\n01111000\n00010000\n00000000\nCHAR 8325\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n01111000\n01000000\n01110000\n00001000\n00001000\n01110000\n00000000\nCHAR 8326\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00111000\n01000000\n01110000\n01001000\n01001000\n00110000\n00000000\nCHAR 8327\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n01111000\n00001000\n00010000\n00010000\n00100000\n00100000\n00000000\nCHAR 8328\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00110000\n01001000\n00110000\n01001000\n01001000\n00110000\n00000000\nCHAR 8329\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00110000\n01001000\n01001000\n00111000\n00001000\n00110000\n00000000\nCHAR 8330\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00010000\n00010000\n01111100\n00010000\n00010000\n00000000\nCHAR 8331\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n01111100\n00000000\n00000000\n00000000\nCHAR 8332\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n01111100\n00000000\n01111100\n00000000\n00000000\nCHAR 8333\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00100000\n01000000\n01000000\n01000000\n01000000\n00100000\n00000000\nCHAR 8334\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00100000\n00010000\n00010000\n00010000\n00010000\n00100000\n00000000\nCHAR 8352\n00000000\n00000000\n00000000\n00110000\n01000000\n01000000\n01011100\n01010000\n00111000\n00010000\n00011100\n00000000\n00000000\nCHAR 8353\n00000000\n00001010\n00111110\n01001010\n01001010\n01010100\n01010100\n01101000\n01101000\n01010010\n01111100\n01010000\n00000000\nCHAR 8354\n00000000\n00000000\n00111100\n01000010\n01000000\n01000000\n01010110\n01011000\n01010000\n01010010\n00111100\n00000000\n00000000\nCHAR 8355\n00000000\n00000000\n01111100\n01000000\n01000000\n01000000\n01110110\n01011000\n01010000\n01010000\n01010000\n00000000\n00000000\nCHAR 8356\n00000000\n00000000\n00011100\n00100010\n00100000\n01110000\n00100000\n01110000\n00100000\n00100010\n01011100\n00000000\n00000000\nCHAR 8357\n00000000\n00000000\n00000000\n00000000\n00000001\n01110110\n01001101\n01001001\n01011001\n01101001\n01000001\n10000000\n00000000\nCHAR 8358\n00000000\n00000000\n01000100\n01000100\n01100100\n11111110\n01010100\n11111110\n01001100\n01001100\n01000100\n00000000\n00000000\nCHAR 8359\n00000000\n00000000\n01111100\n01000010\n11111111\n01000010\n01111100\n01000000\n01000000\n01000000\n01000000\n00000000\n00000000\nCHAR 8360\n00000000\n00000000\n11100000\n10010000\n10010000\n10010110\n11101000\n10101000\n10100100\n10010010\n10001100\n00000000\n00000000\nCHAR 8361\n00000000\n00000000\n01000100\n01000100\n11111110\n01000100\n11111110\n01000100\n01010100\n01101100\n01000100\n00000000\n00000000\nCHAR 8362\n00000000\n00000000\n01110010\n10001010\n10101010\n10101010\n10101010\n10101010\n10101010\n10100010\n10011100\n00000000\n00000000\nCHAR 8363\n00000000\n00000000\n00000010\n00111110\n00000010\n00111010\n01000110\n01000010\n01000010\n01000110\n00111010\n00000000\n00111100\nCHAR 8364\n00000000\n00000000\n00111100\n01000010\n01000000\n11111000\n01000000\n11111000\n01000000\n01000010\n00111100\n00000000\n00000000\nCHAR 8365\n00000000\n00000000\n01000010\n01000100\n01001000\n01010000\n11111100\n01010000\n01001000\n01000100\n01000010\n00000000\n00000000\nCHAR 8366\n00000000\n00000000\n11111110\n00010000\n00011000\n00110000\n00010000\n00011000\n00110000\n00010000\n00010000\n00000000\n00000000\nCHAR 8367\n00000000\n00000000\n00100000\n00111000\n01100100\n00100010\n00100010\n00100010\n00100010\n01110010\n01101100\n00000000\n00000000\nCHAR 8368\n00000000\n00000000\n00011000\n00100100\n00010100\n00001000\n00001100\n01010010\n01010010\n10100010\n10100010\n00000100\n00001000\nCHAR 8369\n00000000\n00000000\n01111100\n01000010\n11111111\n01000010\n11111111\n01000010\n01111100\n01000000\n01000000\n00000000\n00000000\nCHAR 8400\n00100000\n01111110\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8401\n00000100\n01111110\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8402\n00000000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00000000\nCHAR 8403\n00000000\n00000000\n00000000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00000000\nCHAR 8404\n01011100\n01100010\n01110000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8405\n00111010\n01000110\n00001110\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8406\n00100000\n01111110\n00100000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8407\n00000100\n01111110\n00000100\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8408\n00000000\n00000000\n00000000\n00000000\n00111000\n01000100\n01000100\n01000100\n00111000\n00000000\n00000000\n00000000\n00000000\nCHAR 8409\n00000000\n00000000\n00000000\n00111100\n01000010\n01000010\n01001010\n01010010\n00111100\n00010000\n00001000\n00000000\n00000000\nCHAR 8410\n00000000\n00000000\n00000000\n00111100\n01000010\n01000010\n01010010\n01001010\n00111100\n00001000\n00010000\n00000000\n00000000\nCHAR 8411\n00000000\n01010100\n01010100\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8412\n00000000\n10101010\n10101010\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8413\n00011000\n00100100\n01000010\n01000010\n10000001\n10000001\n10000001\n10000001\n10000001\n01000010\n01000010\n00100100\n00011000\nCHAR 8414\n11111111\n10000001\n10000001\n10000001\n10000001\n10000001\n10000001\n10000001\n10000001\n10000001\n10000001\n10000001\n11111111\nCHAR 8415\n00011000\n00100100\n00100100\n01000010\n01000010\n10000001\n10000001\n10000001\n01000010\n01000010\n00100100\n00100100\n00011000\nCHAR 8416\n00011000\n00100100\n01000010\n01000010\n10100001\n10010001\n10011001\n10001001\n10000101\n01000010\n01000010\n00100100\n00011000\nCHAR 8417\n00000000\n00100100\n01111110\n00100100\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8418\n00000000\n01111110\n10000001\n10000001\n10000001\n10000001\n10000001\n10000001\n10000001\n10000001\n10000001\n01111110\n00000000\nCHAR 8419\n01111110\n10000001\n10000001\n10000001\n10000001\n10000001\n10000001\n10000001\n10000001\n10000001\n10000001\n10000001\n01111110\nCHAR 8420\n00011000\n00100100\n00100100\n01000010\n01000010\n10000001\n10000001\n10000001\n10000001\n10000001\n10000001\n10000001\n01111110\nCHAR 8421\n00000000\n01000000\n01000000\n00100000\n00100000\n00010000\n00010000\n00010000\n00001000\n00001000\n00000100\n00000100\n00000000\nCHAR 8422\n00000000\n00101000\n00101000\n00101000\n00101000\n00101000\n00101000\n00101000\n00101000\n00101000\n00101000\n00101000\n00000000\nCHAR 8423\n11111111\n00000001\n00000001\n00000001\n00000001\n00000001\n00000001\n00000001\n00000001\n00000001\n00000001\n00000000\n00000000\nCHAR 8424\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n01010100\n01010100\nCHAR 8425\n11111111\n10000001\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8426\n00000000\n00000000\n00000000\n00000000\n00000000\n01000000\n11111111\n01000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8448\n00000000\n00000000\n01100100\n10100100\n10100100\n01101000\n00010000\n00100110\n01001000\n01001000\n01000110\n00000000\n00000000\nCHAR 8449\n00000000\n00000000\n01100100\n10100100\n10100100\n01101000\n00010110\n00101000\n01000100\n01000010\n01001100\n00000000\n00000000\nCHAR 8450\n00000000\n00000000\n00111100\n01010010\n01010000\n01010000\n01010000\n01010000\n01010000\n01010010\n00111100\n00000000\n00000000\nCHAR 8451\n00000000\n01000000\n10101100\n01010010\n00010000\n00010000\n00010000\n00010000\n00010000\n00010010\n00001100\n00000000\n00000000\nCHAR 8452\n00000000\n00000000\n00010000\n00010000\n00111000\n01010000\n01010000\n01010000\n00111000\n00010000\n00011100\n00000000\n00000000\nCHAR 8453\n00000000\n00000000\n01100100\n10000100\n10001000\n01101000\n00010000\n00100100\n00101010\n01001010\n01000100\n00000000\n00000000\nCHAR 8454\n00000000\n00000000\n01100100\n10000100\n10001000\n01101000\n00010000\n00101010\n00101010\n01001010\n01000110\n00000000\n00000000\nCHAR 8455\n00000000\n00000000\n00111110\n01000010\n01000000\n01000000\n00111000\n01000000\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 8456\n00000000\n00000000\n00111000\n01000100\n00000010\n00010010\n00011110\n00010010\n00000010\n01000100\n00111000\n00000000\n00000000\nCHAR 8457\n00100000\n01010000\n00100000\n00011110\n00010000\n00010000\n00011100\n00010000\n00010000\n00010000\n00010000\n00000000\n00000000\nCHAR 8458\n00000000\n00000000\n00000000\n00000000\n00000000\n00011100\n00100010\n01000010\n01000010\n00111100\n00000100\n01000100\n00111000\nCHAR 8459\n00000000\n00000000\n01100010\n00100010\n00100010\n00100010\n00111110\n01000100\n01000100\n01000100\n01000110\n00000000\n00000000\nCHAR 8460\n00000000\n00000000\n01101000\n10010000\n10000000\n10110000\n11001000\n01001000\n00101000\n10101000\n01001000\n00010000\n00100000\nCHAR 8461\n00000000\n00000000\n10100010\n10100010\n10100010\n10100010\n10111110\n10100010\n10100010\n10100010\n10100010\n00000000\n00000000\nCHAR 8462\n00000000\n00000000\n00010000\n00010000\n00010000\n00100000\n00111100\n00100010\n00100010\n01000100\n01000100\n00000000\n00000000\nCHAR 8463\n00000000\n00000000\n00010000\n00011100\n01110000\n00100000\n00111100\n00100010\n00100010\n01000100\n01000100\n00000000\n00000000\nCHAR 8464\n00000000\n00000000\n00011100\n00000100\n00000100\n00001000\n00001000\n00001000\n00010000\n01010000\n00100000\n00000000\n00000000\nCHAR 8465\n00000000\n00000000\n01111110\n01000010\n00100010\n00000010\n00000100\n00000100\n00000010\n01100010\n00011100\n00000000\n00000000\nCHAR 8466\n00000000\n00000000\n00011000\n01010100\n00111000\n00010000\n00010000\n00100000\n01110000\n10101000\n01000110\n00000000\n00000000\nCHAR 8467\n00000000\n00000000\n00010000\n00101000\n00101000\n00101000\n00101000\n00101000\n00010000\n00110000\n01001100\n00000000\n00000000\nCHAR 8468\n00000000\n00000000\n10010000\n11111100\n10010000\n10010100\n10011010\n10010010\n10010010\n10110010\n01001100\n00000000\n00000000\nCHAR 8469\n00000000\n00000000\n11100010\n10110010\n10110010\n10101010\n10101010\n10100110\n10100110\n10100010\n10100010\n00000000\n00000000\nCHAR 8470\n00000000\n00000000\n10010000\n10010100\n10011010\n11010100\n11010000\n10111110\n10110000\n10010000\n10010000\n00000000\n00000000\nCHAR 8471\n00000000\n00000000\n01111100\n10000010\n10110010\n10101010\n10110010\n10100010\n10100010\n10000010\n01111100\n00000000\n00000000\nCHAR 8472\n00000000\n00000000\n00000000\n00000000\n01000000\n10011100\n10100010\n01000010\n01000010\n10110010\n10101100\n10100000\n01000000\nCHAR 8473\n00000000\n00000000\n01111100\n01010010\n01010010\n01010010\n01010010\n01011100\n01010000\n01010000\n01010000\n00000000\n00000000\nCHAR 8474\n00000000\n00000000\n01111100\n10100010\n10100010\n10100010\n10100010\n10100010\n10100010\n10100010\n01111100\n00000010\n00000000\nCHAR 8475\n00000000\n00000000\n01111100\n00100010\n00100010\n00100010\n00111100\n01001000\n01000100\n01000100\n01000100\n00000000\n00000000\nCHAR 8476\n00000000\n00000000\n01111100\n01010010\n00110010\n00010010\n00011100\n00010100\n01010010\n01010010\n00100010\n00000000\n00000000\nCHAR 8477\n00000000\n00000000\n01111100\n01010010\n01010010\n01010010\n01011100\n01010010\n01010010\n01010010\n01010010\n00000000\n00000000\nCHAR 8478\n00000000\n00000000\n01111100\n01000010\n01000010\n01000010\n01111100\n01001010\n01000100\n01001010\n01000010\n00000000\n00000000\nCHAR 8479\n00110000\n00010000\n01111100\n01010010\n01010010\n01010010\n01111100\n01011000\n01010100\n01010010\n01010010\n00010000\n00000000\nCHAR 8480\n00110100\n01011100\n00110100\n01010100\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8481\n00000000\n11100000\n01000000\n01111000\n01100000\n01110000\n00100100\n00111100\n00000100\n00000100\n00000111\n00000000\n00000000\nCHAR 8482\n00000000\n00000000\n11101010\n01001110\n01001010\n01001010\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8483\n00110000\n00010000\n10010010\n10010010\n10010010\n10010010\n01010100\n01010100\n00111000\n00010000\n00010000\n00010000\n00000000\nCHAR 8484\n00000000\n00000000\n11111110\n00001010\n00010100\n00010100\n00101000\n01010000\n01010000\n10100000\n11111110\n00000000\n00000000\nCHAR 8485\n00000000\n00000000\n00011110\n00000100\n00001000\n00011110\n00000100\n00001000\n00011100\n00000010\n00000010\n00100010\n00011100\nCHAR 8486\n00000000\n00000000\n01111100\n10000010\n10000010\n10000010\n10000010\n10000010\n01101100\n00101000\n11101110\n00000000\n00000000\nCHAR 8487\n00000000\n00000000\n01100110\n00100100\n00100100\n01000010\n01000010\n01000010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 8488\n00000000\n00000000\n00111100\n01000010\n00000010\n00010010\n00001100\n00010010\n00000010\n01000010\n00111100\n00000000\n00000000\nCHAR 8489\n00000000\n00000000\n00000000\n00000000\n00000000\n00110000\n00001000\n00001000\n00001000\n00001000\n00001000\n00000000\n00000000\nCHAR 8490\n00000000\n00000000\n01000010\n01000100\n01001000\n01010000\n01100000\n01010000\n01001000\n01000100\n01000010\n00000000\n00000000\nCHAR 8491\n00000000\n00010000\n00101000\n00010000\n00010000\n00101000\n01000100\n01000100\n01111100\n01000100\n01000100\n00000000\n00000000\nCHAR 8492\n00000000\n00000000\n01111100\n00100010\n00100010\n00100010\n00111100\n01000100\n01000100\n01000100\n01111000\n00000000\n00000000\nCHAR 8493\n00000000\n00000000\n00011110\n00101000\n01001000\n01000100\n01010100\n01001000\n01000000\n01000010\n00111100\n00000000\n00000000\nCHAR 8494\n00000000\n00000000\n00000000\n00000000\n00111100\n01100110\n01100110\n01111110\n01100000\n01100010\n00111100\n00000000\n00000000\nCHAR 8495\n00000000\n00000000\n00000000\n00000000\n00000000\n00011110\n00100010\n00111110\n01000000\n01000100\n00111000\n00000000\n00000000\nCHAR 8496\n00000000\n00000000\n00111100\n01000010\n01000010\n01000000\n00111000\n01000000\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 8497\n00000000\n00000000\n01111110\n10010000\n00010000\n00010000\n01111100\n00100000\n00100000\n10100000\n01000000\n00000000\n00000000\nCHAR 8498\n00000000\n00000000\n00000010\n00000010\n00000010\n00000010\n00111110\n00000010\n00000010\n00000010\n01111110\n00000000\n00000000\nCHAR 8499\n00000000\n00000000\n00101000\n00101000\n00101000\n01010100\n01010100\n01000100\n01000100\n01000100\n10001000\n00000000\n00000000\nCHAR 8500\n00000000\n00000000\n00000000\n00000000\n00000000\n00011110\n00100010\n00100010\n01000100\n01000100\n01111000\n00000000\n00000000\nCHAR 8501\n00000000\n00000000\n00000000\n00000000\n00000000\n01001000\n00100100\n00110100\n01001000\n01000100\n01100100\n00000000\n00000000\nCHAR 8502\n00000000\n00000000\n00000000\n00000000\n00000000\n01111100\n00000100\n00000100\n00000100\n00000100\n01111110\n00000000\n00000000\nCHAR 8503\n00000000\n00000000\n00000000\n00000000\n00000000\n00110000\n00001000\n00000100\n00000100\n00001010\n00110010\n00000000\n00000000\nCHAR 8504\n00000000\n00000000\n00000000\n00000000\n00000000\n01111110\n00000100\n00000100\n00000100\n00000100\n00000100\n00000000\n00000000\nCHAR 8505\n00000000\n00000000\n00000000\n00111000\n00111000\n00000000\n00111000\n00111000\n00111000\n00111000\n01111100\n00000000\n00000000\nCHAR 8506\n00000000\n00000000\n00000000\n00000000\n00000001\n00111110\n01000110\n01001010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 8509\n00000000\n00000000\n00000000\n00000000\n00000000\n10100010\n10100010\n10100010\n01010100\n01010100\n00101000\n00101000\n01010000\nCHAR 8510\n00000000\n00000000\n01111110\n01010010\n01010010\n01010000\n01010000\n01010000\n01010000\n01010000\n01010000\n00000000\n00000000\nCHAR 8511\n00000000\n00000000\n11111111\n01010010\n01010010\n01010010\n01010010\n01010010\n01010010\n01010010\n01010010\n00000000\n00000000\nCHAR 8512\n00000000\n00000000\n11111110\n10100010\n01010000\n01010000\n00101000\n01010000\n01010000\n10100010\n11111110\n00000000\n00000000\nCHAR 8513\n00000000\n00000000\n00111100\n01000010\n01000010\n01110010\n00000010\n00000010\n00000010\n01000010\n00111100\n00000000\n00000000\nCHAR 8514\n00000000\n00000000\n01111110\n00000010\n00000010\n00000010\n00000010\n00000010\n00000010\n00000010\n00000010\n00000000\n00000000\nCHAR 8515\n00000000\n00000000\n00000010\n00000010\n00000010\n00000010\n00000010\n00000010\n00000010\n00000010\n01111110\n00000000\n00000000\nCHAR 8516\n00000000\n00000000\n00010000\n00010000\n00010000\n00010000\n00010000\n00101000\n01000100\n10000010\n10000010\n00000000\n00000000\nCHAR 8517\n00000000\n00000000\n01111110\n01010001\n01010001\n01010001\n10100010\n10100010\n10100010\n10100010\n11111100\n00000000\n00000000\nCHAR 8518\n00000000\n00000000\n00000101\n00000101\n00000101\n00111101\n01001010\n10001010\n10001010\n10001010\n01111010\n00000000\n00000000\nCHAR 8519\n00000000\n00000000\n00000000\n00000000\n00000000\n00111110\n01010001\n01011110\n10100000\n10100000\n01111100\n00000000\n00000000\nCHAR 8520\n00000000\n00000000\n00001100\n00001100\n00000000\n00111100\n00010100\n00010100\n00101000\n00101000\n01111100\n00000000\n00000000\nCHAR 8521\n00000000\n00000000\n00000110\n00000110\n00000000\n00011110\n00001010\n00001010\n00010100\n00010100\n00010100\n00101000\n01110000\nCHAR 8522\n00000000\n00000000\n00100000\n00100000\n11111100\n10100010\n10100010\n10111100\n10100000\n00100000\n00111110\n00000000\n00000000\nCHAR 8523\n00000000\n00000000\n00000000\n00000000\n01011100\n00100010\n01010010\n00001100\n00010010\n00010010\n00001100\n00000000\n00000000\nCHAR 8531\n00000000\n00000000\n01000000\n01000000\n01000000\n01000000\n01001000\n00010100\n00001000\n00000100\n00011000\n00000000\n00000000\nCHAR 8532\n00000000\n00000000\n00100000\n01010000\n00100000\n01000000\n01111100\n00000010\n00000100\n00000010\n00001100\n00000000\n00000000\nCHAR 8533\n00000000\n00000000\n01000000\n01000000\n01000000\n01000000\n01011100\n00010000\n00011000\n00000100\n00011000\n00000000\n00000000\nCHAR 8534\n00000000\n00100000\n01010000\n00100000\n01000000\n01110000\n00001110\n00001000\n00001100\n00000010\n00001100\n00000000\n00000000\nCHAR 8535\n00000000\n00100000\n01010000\n00100000\n00010000\n01100000\n00001110\n00001000\n00001100\n00000010\n00001100\n00000000\n00000000\nCHAR 8536\n00000000\n00000000\n01000000\n01010000\n01110000\n00010000\n00001110\n00001000\n00001100\n00000010\n00001100\n00000000\n00000000\nCHAR 8537\n00000000\n00000000\n01000000\n01000000\n01000000\n01000000\n01001100\n00010000\n00011000\n00010100\n00001000\n00000000\n00000000\nCHAR 8538\n00000000\n00000000\n01110000\n01000000\n01100000\n00010000\n01101110\n00001000\n00001100\n00001010\n00000100\n00000000\n00000000\nCHAR 8539\n00000000\n01000000\n11000000\n01000000\n01000000\n01001100\n11110010\n00001100\n00010010\n00010010\n00001100\n00000000\n00000000\nCHAR 8540\n00000000\n11000000\n00100000\n11000000\n00100000\n00101100\n11010010\n00001100\n00010010\n00010010\n00001100\n00000000\n00000000\nCHAR 8541\n00000000\n11100000\n10000000\n11000000\n00100000\n00101100\n11010010\n00001100\n00010010\n00010010\n00001100\n00000000\n00000000\nCHAR 8542\n00000000\n11100000\n00100000\n00100000\n01000000\n01001100\n01010010\n00001100\n00010010\n00010010\n00001100\n00000000\n00000000\nCHAR 8543\n00000000\n00000000\n01000000\n01000000\n01000000\n01000000\n01000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8544\n00000000\n00000000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00000000\n00000000\nCHAR 8545\n00000000\n00000000\n00100100\n00100100\n00100100\n00100100\n00100100\n00100100\n00100100\n00100100\n00100100\n00000000\n00000000\nCHAR 8546\n00000000\n00000000\n01010100\n01010100\n01010100\n01010100\n01010100\n01010100\n01010100\n01010100\n01010100\n00000000\n00000000\nCHAR 8547\n00000000\n00000000\n10100010\n10100010\n10100010\n10100010\n10010100\n10010100\n10010100\n10001000\n10001000\n00000000\n00000000\nCHAR 8548\n00000000\n00000000\n01000100\n01000100\n01000100\n01000100\n00101000\n00101000\n00101000\n00010000\n00010000\n00000000\n00000000\nCHAR 8549\n00000000\n00000000\n10001010\n10001010\n10001010\n10001010\n01010010\n01010010\n01010010\n00100010\n00100010\n00000000\n00000000\nCHAR 8550\n00000000\n00000000\n10101010\n10101010\n10101010\n10101010\n10101010\n10101010\n10101010\n01001010\n01001010\n00000000\n00000000\nCHAR 8551\n00000000\n00000000\n10101101\n10101101\n10101101\n10101101\n10101101\n10101101\n10101101\n01001101\n01001101\n00000000\n00000000\nCHAR 8552\n00000000\n00000000\n10100010\n10100010\n10010100\n10010100\n10001000\n10010100\n10010100\n10100010\n10100010\n00000000\n00000000\nCHAR 8553\n00000000\n00000000\n10001000\n10001000\n01010000\n01010000\n00100000\n01010000\n01010000\n10001000\n10001000\n00000000\n00000000\nCHAR 8554\n00000000\n00000000\n10001010\n10001010\n01010010\n01010010\n00100010\n01010010\n01010010\n10001010\n10001010\n00000000\n00000000\nCHAR 8555\n00000000\n00000000\n10101010\n10101010\n10101010\n01001010\n01001010\n01001010\n10101010\n10101010\n10101010\n00000000\n00000000\nCHAR 8556\n00000000\n00000000\n01000000\n01000000\n01000000\n01000000\n01000000\n01000000\n01000000\n01000000\n01111110\n00000000\n00000000\nCHAR 8557\n00000000\n00000000\n00111100\n01000010\n01000000\n01000000\n01000000\n01000000\n01000000\n01000010\n00111100\n00000000\n00000000\nCHAR 8558\n00000000\n00000000\n01111100\n00100010\n00100010\n00100010\n00100010\n00100010\n00100010\n00100010\n01111100\n00000000\n00000000\nCHAR 8559\n00000000\n00000000\n10000010\n11000110\n10101010\n10010010\n10010010\n10000010\n10000010\n10000010\n10000010\n00000000\n00000000\nCHAR 8560\n00000000\n00000000\n00000000\n00010000\n00000000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00000000\n00000000\nCHAR 8561\n00000000\n00000000\n00000000\n00100100\n00000000\n00100100\n00100100\n00100100\n00100100\n00100100\n00100100\n00000000\n00000000\nCHAR 8562\n00000000\n00000000\n00000000\n01010100\n00000000\n01010100\n01010100\n01010100\n01010100\n01010100\n01010100\n00000000\n00000000\nCHAR 8563\n00000000\n00000000\n00000000\n10000000\n00000000\n10100010\n10100010\n10010100\n10010100\n10001000\n10001000\n00000000\n00000000\nCHAR 8564\n00000000\n00000000\n00000000\n00000000\n00000000\n01000100\n01000100\n01000100\n00101000\n00101000\n00010000\n00000000\n00000000\nCHAR 8565\n00000000\n00000000\n00000000\n00000010\n00000000\n10001010\n10001010\n01010010\n01010010\n00100010\n00100010\n00000000\n00000000\nCHAR 8566\n00000000\n00000000\n00000000\n00001010\n00000000\n10101010\n10101010\n10101010\n10101010\n01001010\n01001010\n00000000\n00000000\nCHAR 8567\n00000000\n00000000\n00000000\n00001101\n00000000\n10101101\n10101101\n10101101\n10101101\n01001101\n01001101\n00000000\n00000000\nCHAR 8568\n00000000\n00000000\n00000000\n10000000\n00000000\n10100010\n10010100\n10001000\n10001000\n10010100\n10100010\n00000000\n00000000\nCHAR 8569\n00000000\n00000000\n00000000\n00000000\n00000000\n01000100\n00101000\n00010000\n00010000\n00101000\n01000100\n00000000\n00000000\nCHAR 8570\n00000000\n00000000\n00000000\n00000010\n00000000\n10001010\n01010010\n00100010\n00100010\n01010010\n10001010\n00000000\n00000000\nCHAR 8571\n00000000\n00000000\n00000000\n00001010\n00000000\n10101010\n10101010\n01001010\n01001010\n10101010\n10101010\n00000000\n00000000\nCHAR 8572\n00000000\n00000000\n00110000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00111000\n00000000\n00000000\nCHAR 8573\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n01000010\n01000000\n01000000\n01000010\n00111100\n00000000\n00000000\nCHAR 8574\n00000000\n00000000\n00000010\n00000010\n00000010\n00111110\n01000010\n01000010\n01000010\n01000010\n00111110\n00000000\n00000000\nCHAR 8575\n00000000\n00000000\n00000000\n00000000\n00000000\n11101100\n10010010\n10010010\n10010010\n10010010\n10000010\n00000000\n00000000\nCHAR 8576\n00000000\n00000000\n01111100\n10010010\n10010010\n10010010\n10010010\n10010010\n10010010\n10010010\n01111100\n00000000\n00000000\nCHAR 8577\n00000000\n00000000\n01111100\n01000010\n01110010\n01010010\n01010010\n01010010\n01110010\n01000010\n01111100\n00000000\n00000000\nCHAR 8578\n00000000\n00000000\n01111100\n10010010\n10111010\n10101010\n10101010\n10101010\n10111010\n10010010\n01111100\n00000000\n00000000\nCHAR 8579\n00000000\n00000000\n00111100\n01000010\n00000010\n00000010\n00000010\n00000010\n00000010\n01000010\n00111100\n00000000\n00000000\nCHAR 8592\n00000000\n00000000\n00000000\n00000000\n00100000\n01000000\n11111110\n01000000\n00100000\n00000000\n00000000\n00000000\n00000000\nCHAR 8593\n00000000\n00000000\n00010000\n00111000\n01010100\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00000000\n00000000\nCHAR 8594\n00000000\n00000000\n00000000\n00000000\n00000100\n00000010\n01111111\n00000010\n00000100\n00000000\n00000000\n00000000\n00000000\nCHAR 8595\n00000000\n00000000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n01010100\n00111000\n00010000\n00000000\n00000000\nCHAR 8596\n00000000\n00000000\n00000000\n00000000\n00100100\n01000010\n11111111\n01000010\n00100100\n00000000\n00000000\n00000000\n00000000\nCHAR 8597\n00000000\n00000000\n00000000\n00010000\n00111000\n01010100\n00010000\n00010000\n01010100\n00111000\n00010000\n00000000\n00000000\nCHAR 8598\n00000000\n00000000\n00000000\n00000000\n00000000\n01110000\n01100000\n01010000\n00001000\n00000100\n00000010\n00000000\n00000000\nCHAR 8599\n00000000\n00000000\n00000000\n00000000\n00000000\n00001110\n00000110\n00001010\n00010000\n00100000\n01000000\n00000000\n00000000\nCHAR 8600\n00000000\n00000000\n00000000\n00000000\n00000000\n01000000\n00100000\n00010000\n00001010\n00000110\n00001110\n00000000\n00000000\nCHAR 8601\n00000000\n00000000\n00000000\n00000000\n00000000\n00000010\n00000100\n00001000\n01010000\n01100000\n01110000\n00000000\n00000000\nCHAR 8602\n00000000\n00000000\n00000000\n00000000\n00000000\n00100010\n01000010\n11111111\n01000100\n00100100\n00000000\n00000000\n00000000\nCHAR 8603\n00000000\n00000000\n00000000\n00000000\n00000000\n00100100\n00100010\n11111111\n01000010\n01000100\n00000000\n00000000\n00000000\nCHAR 8604\n00000000\n00000000\n00000000\n00000000\n00000000\n00100000\n01000010\n11110101\n01001000\n00100000\n00000000\n00000000\n00000000\nCHAR 8605\n00000000\n00000000\n00000000\n00000000\n00000000\n00000100\n01000010\n10101111\n00010010\n00000100\n00000000\n00000000\n00000000\nCHAR 8606\n00000000\n00000000\n00000000\n00000000\n00000000\n00100100\n01001000\n11111111\n01001000\n00100100\n00000000\n00000000\n00000000\nCHAR 8607\n00000000\n00000000\n00000000\n00010000\n00111000\n01010100\n00010000\n00111000\n01010100\n00010000\n00010000\n00000000\n00000000\nCHAR 8608\n00000000\n00000000\n00000000\n00000000\n00000000\n00100100\n00010010\n11111111\n00010010\n00100100\n00000000\n00000000\n00000000\nCHAR 8609\n00000000\n00000000\n00000000\n00010000\n00010000\n01010100\n00111000\n00010000\n01010100\n00111000\n00010000\n00000000\n00000000\nCHAR 8610\n00000000\n00000000\n00000000\n00000000\n00010000\n00100010\n01000100\n11111000\n01000100\n00100010\n00010000\n00000000\n00000000\nCHAR 8611\n00000000\n00000000\n00000000\n00000000\n00001000\n01000100\n00100010\n00011111\n00100010\n01000100\n00001000\n00000000\n00000000\nCHAR 8612\n00000000\n00000000\n00000000\n00000000\n00000000\n00100000\n01000001\n11111111\n01000001\n00100000\n00000000\n00000000\n00000000\nCHAR 8613\n00000000\n00000000\n00010000\n00111000\n01010100\n00010000\n00010000\n00010000\n00010000\n00010000\n00111000\n00000000\n00000000\nCHAR 8614\n00000000\n00000000\n00000000\n00000000\n00000000\n00000100\n10000010\n11111111\n10000010\n00000100\n00000000\n00000000\n00000000\nCHAR 8615\n00000000\n00000000\n00111000\n00010000\n00010000\n00010000\n00010000\n00010000\n01010100\n00111000\n00010000\n00000000\n00000000\nCHAR 8616\n00000000\n00010000\n00111000\n01010100\n00010000\n00010000\n00010000\n01010100\n00111000\n00010000\n11111110\n00000000\n00000000\nCHAR 8617\n00000000\n00000000\n00000000\n00000000\n00000000\n00100010\n01000001\n11111110\n01000000\n00100000\n00000000\n00000000\n00000000\nCHAR 8618\n00000000\n00000000\n00000000\n00000000\n00000000\n01000100\n10000010\n01111111\n00000010\n00000100\n00000000\n00000000\n00000000\nCHAR 8619\n00000000\n00000000\n00000000\n00000000\n00000000\n00100010\n01000101\n11111110\n01000100\n00100100\n00000000\n00000000\n00000000\nCHAR 8620\n00000000\n00000000\n00000000\n00000000\n00000000\n01000100\n10100010\n01111111\n00100010\n00100100\n00000000\n00000000\n00000000\nCHAR 8621\n00000000\n00000000\n00000000\n00000000\n00000000\n00100100\n01011010\n11100111\n01000010\n00100100\n00000000\n00000000\n00000000\nCHAR 8622\n00000000\n00000000\n00000000\n00000000\n00000000\n00100100\n01010010\n11111111\n01010010\n00100100\n00000000\n00000000\n00000000\nCHAR 8623\n00000000\n00100000\n00100000\n01000000\n01001100\n00110100\n00000100\n00001000\n00101010\n00011100\n00001000\n00000000\n00000000\nCHAR 8624\n00000000\n00010000\n00100000\n01111110\n00100010\n00010010\n00000010\n00000010\n00000010\n00000010\n00000010\n00000000\n00000000\nCHAR 8625\n00000000\n00001000\n00000100\n01111110\n01000100\n01001000\n01000000\n01000000\n01000000\n01000000\n01000000\n00000000\n00000000\nCHAR 8626\n00000000\n00000010\n00000010\n00000010\n00000010\n00000010\n00010010\n00100010\n01111110\n00100000\n00010000\n00000000\n00000000\nCHAR 8627\n00000000\n01000000\n01000000\n01000000\n01000000\n01000000\n01001000\n01000100\n01111110\n00000100\n00001000\n00000000\n00000000\nCHAR 8628\n00000000\n00000000\n00000000\n01111000\n00001000\n00001000\n00001000\n00001000\n00101010\n00011100\n00001000\n00000000\n00000000\nCHAR 8629\n00000000\n00000100\n00000100\n00000100\n00000100\n00000100\n00010100\n00100100\n01111100\n00100000\n00010000\n00000000\n00000000\nCHAR 8630\n00000000\n00000000\n00001100\n00010010\n00100001\n00100001\n10101001\n01110000\n00100000\n00000000\n00000000\n00000000\n00000000\nCHAR 8631\n00000000\n00000000\n00110000\n01001000\n10000100\n10000100\n10010101\n00001110\n00000100\n00000000\n00000000\n00000000\n00000000\nCHAR 8632\n00000000\n00000000\n00000000\n11111111\n00000000\n01110000\n01100000\n01010000\n00001000\n00000100\n00000010\n00000000\n00000000\nCHAR 8633\n00000000\n00000000\n00000000\n10001000\n10010000\n10111110\n10010000\n00001001\n01111101\n00001001\n00010001\n00000000\n00000000\nCHAR 8634\n00000000\n00000000\n01100100\n10001110\n10010101\n10000100\n10000100\n01001000\n00110000\n00000000\n00000000\n00000000\n00000000\nCHAR 8635\n00000000\n00000000\n00100110\n01110001\n10101001\n00100001\n00100001\n00010010\n00001100\n00000000\n00000000\n00000000\n00000000\nCHAR 8636\n00000000\n00000000\n00000000\n00000000\n00000000\n00100000\n01000000\n11111111\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8637\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n11111111\n01000000\n00100000\n00000000\n00000000\n00000000\nCHAR 8638\n00000000\n00000000\n00010000\n00011000\n00010100\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00000000\n00000000\nCHAR 8639\n00000000\n00000000\n00001000\n00011000\n00101000\n00001000\n00001000\n00001000\n00001000\n00001000\n00001000\n00000000\n00000000\nCHAR 8640\n00000000\n00000000\n00000000\n00000000\n00000000\n00000100\n00000010\n11111111\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8641\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n11111111\n00000010\n00000100\n00000000\n00000000\n00000000\nCHAR 8642\n00000000\n00000000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010100\n00011000\n00010000\n00000000\n00000000\nCHAR 8643\n00000000\n00000000\n00001000\n00001000\n00001000\n00001000\n00001000\n00001000\n00101000\n00011000\n00001000\n00000000\n00000000\nCHAR 8644\n00000000\n00000000\n00001000\n00000100\n11111110\n00000100\n00101000\n01000000\n11111110\n01000000\n00100000\n00000000\n00000000\nCHAR 8645\n00000000\n00100100\n01110100\n10101100\n00100100\n00100100\n00100100\n00100100\n00110101\n00101110\n00100100\n00000000\n00000000\nCHAR 8646\n00000000\n00000000\n00100000\n01000000\n11111110\n01000000\n00101000\n00000100\n11111110\n00000100\n00001000\n00000000\n00000000\nCHAR 8647\n00100000\n01000000\n11111111\n01000000\n00100000\n00000000\n00100000\n01000000\n11111111\n01000000\n00100000\n00000000\n00000000\nCHAR 8648\n00000000\n01000100\n11101110\n01000100\n01000100\n01000100\n01000100\n01000100\n01000100\n01000100\n01000100\n00000000\n00000000\nCHAR 8649\n00000100\n00000010\n11111111\n00000010\n00000100\n00000000\n00000100\n00000010\n11111111\n00000010\n00000100\n00000000\n00000000\nCHAR 8650\n00000000\n01000100\n01000100\n01000100\n01000100\n01000100\n01000100\n01000100\n01000100\n11101110\n01000100\n00000000\n00000000\nCHAR 8651\n00000000\n00000000\n00000000\n00000000\n00100000\n01000000\n11111110\n00000000\n11111110\n00000100\n00001000\n00000000\n00000000\nCHAR 8652\n00000000\n00000000\n00000000\n00000000\n00001000\n00000100\n11111110\n00000000\n11111110\n01000000\n00100000\n00000000\n00000000\nCHAR 8653\n00000000\n00000000\n00000000\n00000000\n00010000\n00100001\n01111111\n10000010\n01111111\n00100100\n00010000\n00000000\n00000000\nCHAR 8654\n00000000\n00000000\n00000000\n00000000\n00000000\n00100100\n01111110\n10011001\n01111110\n00100100\n00000000\n00000000\n00000000\nCHAR 8655\n00000000\n00000000\n00000000\n00000000\n00001000\n00100100\n11111110\n01000001\n11111110\n10000100\n00001000\n00000000\n00000000\nCHAR 8656\n00000000\n00000000\n00000000\n00000000\n00010000\n00100000\n01111111\n10000000\n01111111\n00100000\n00010000\n00000000\n00000000\nCHAR 8657\n00000000\n00000000\n00001000\n00010100\n00110110\n01010101\n00010100\n00010100\n00010100\n00010100\n00010100\n00000000\n00000000\nCHAR 8658\n00000000\n00000000\n00000000\n00000000\n00001000\n00000100\n11111110\n00000001\n11111110\n00000100\n00001000\n00000000\n00000000\nCHAR 8659\n00000000\n00000000\n00101000\n00101000\n00101000\n00101000\n00101000\n10101010\n01101100\n00101000\n00010000\n00000000\n00000000\nCHAR 8660\n00000000\n00000000\n00000000\n00000000\n00000000\n00100100\n01111110\n10000001\n01111110\n00100100\n00000000\n00000000\n00000000\nCHAR 8661\n00010000\n00101000\n01101100\n10101010\n00101000\n00101000\n00101000\n10101010\n01101100\n00101000\n00010000\n00000000\n00000000\nCHAR 8662\n00000000\n00000000\n00000000\n00000000\n11111100\n10010000\n10001000\n11000100\n10100010\n10010000\n00001000\n00000000\n00000000\nCHAR 8663\n00000000\n00000000\n00000000\n00000000\n00111111\n00001001\n00010001\n00100011\n01000101\n00001001\n00010000\n00000000\n00000000\nCHAR 8664\n00000000\n00000000\n00000000\n00000000\n00010000\n00001001\n01000101\n00100011\n00010001\n00001001\n00111111\n00000000\n00000000\nCHAR 8665\n00000000\n00000000\n00000000\n00000000\n00001000\n10010000\n10100010\n11000100\n10001000\n10010000\n11111100\n00000000\n00000000\nCHAR 8666\n00000000\n00000000\n00001000\n00010000\n00111111\n01000000\n11111111\n01000000\n00111111\n00010000\n00001000\n00000000\n00000000\nCHAR 8667\n00000000\n00000000\n00010000\n00001000\n11111100\n00000010\n11111111\n00000010\n11111100\n00001000\n00010000\n00000000\n00000000\nCHAR 8668\n00000000\n00000000\n00000000\n00000000\n00010000\n00100000\n01001000\n11110101\n01000010\n00100000\n00010000\n00000000\n00000000\nCHAR 8669\n00000000\n00000000\n00000000\n00000000\n00001000\n00000100\n00010010\n10101111\n01000010\n00000100\n00001000\n00000000\n00000000\nCHAR 8670\n00000000\n00010000\n00111000\n01010100\n10010010\n00010000\n01111100\n00010000\n01111100\n00010000\n00010000\n00000000\n00000000\nCHAR 8671\n00000000\n00010000\n00010000\n01111100\n00010000\n01111100\n00010000\n10010010\n01010100\n00111000\n00010000\n00000000\n00000000\nCHAR 8672\n00000000\n00000000\n00000000\n00000000\n00010000\n00100000\n01000000\n10110110\n01000000\n00100000\n00010000\n00000000\n00000000\nCHAR 8673\n00000000\n00010000\n00101000\n01010100\n10010010\n00000000\n00010000\n00010000\n00000000\n00010000\n00010000\n00000000\n00000000\nCHAR 8674\n00000000\n00000000\n00000000\n00000000\n00001000\n00000100\n00000010\n01101101\n00000010\n00000100\n00001000\n00000000\n00000000\nCHAR 8675\n00000000\n00010000\n00010000\n00000000\n00010000\n00010000\n00000000\n10010010\n01010100\n00101000\n00010000\n00000000\n00000000\nCHAR 8676\n00000000\n00000000\n00000000\n00000000\n00000000\n10010000\n10100000\n11111110\n10100000\n10010000\n00000000\n00000000\n00000000\nCHAR 8677\n00000000\n00000000\n00000000\n00000000\n00000000\n00001001\n00000101\n01111111\n00000101\n00001001\n00000000\n00000000\n00000000\nCHAR 8678\n00000000\n00000000\n00000000\n00000000\n00010000\n00110000\n01011111\n10000001\n01011111\n00110000\n00010000\n00000000\n00000000\nCHAR 8679\n00000000\n00000000\n00010000\n00101000\n01000100\n11101110\n00101000\n00101000\n00101000\n00101000\n00111000\n00000000\n00000000\nCHAR 8680\n00000000\n00000000\n00000000\n00000000\n00001000\n00001100\n11111010\n10000001\n11111010\n00001100\n00001000\n00000000\n00000000\nCHAR 8681\n00000000\n00000000\n00111000\n00101000\n00101000\n00101000\n00101000\n11101110\n01000100\n00101000\n00010000\n00000000\n00000000\nCHAR 8682\n00000000\n00010000\n00101000\n01000100\n11101110\n00101000\n00101000\n00111000\n00000000\n00111000\n00101000\n00111000\n00000000\nCHAR 8683\n00000000\n00000000\n00010000\n00101000\n01000100\n11101110\n00101000\n00101000\n00101000\n01101100\n01000100\n01111100\n00000000\nCHAR 8684\n00000000\n00000000\n00010000\n00101000\n01000100\n11111110\n00101000\n00101000\n00101000\n01101100\n01000100\n01111100\n00000000\nCHAR 8685\n00000000\n00000000\n00010000\n00101000\n01000100\n11111110\n00111000\n00111000\n00111000\n01111100\n01000100\n01111100\n00000000\nCHAR 8686\n00000000\n00000000\n00010000\n00101000\n01000100\n11101110\n01000100\n11101110\n00101000\n00101000\n00111000\n00000000\n00000000\nCHAR 8687\n00000000\n00000000\n00010000\n00101000\n01000100\n11101110\n01000100\n11101110\n00101000\n01101100\n01000100\n01111100\n00000000\nCHAR 8688\n00000000\n00000000\n00000000\n00000000\n10001000\n10001100\n11111010\n10000001\n11111010\n10001100\n10001000\n00000000\n00000000\nCHAR 8689\n00000000\n00000000\n00000000\n00000000\n11111110\n10000000\n10111100\n10110000\n10101000\n10100100\n10000010\n00000000\n00000000\nCHAR 8690\n00000000\n00000000\n00000000\n00000000\n10000010\n01001010\n00101010\n00011010\n01111010\n00000010\n11111110\n00000000\n00000000\nCHAR 8691\n00000000\n00000000\n00010000\n00101000\n01000100\n11101110\n00101000\n11101110\n01000100\n00101000\n00010000\n00000000\n00000000\nCHAR 8692\n00000000\n00000000\n00000000\n00000000\n00100100\n01010010\n11111111\n01010010\n00100100\n00000000\n00000000\n00000000\n00000000\nCHAR 8693\n00000000\n00100100\n00101110\n00110101\n00100100\n00100100\n00100100\n00100100\n10101100\n01110100\n00100100\n00000000\n00000000\nCHAR 8694\n00000100\n00000010\n11111111\n00000010\n00000100\n00000010\n11111111\n00000010\n00000100\n00000010\n11111111\n00000010\n00000100\nCHAR 8695\n00000000\n00000000\n00000000\n00000000\n00101000\n01001000\n11111110\n01001000\n00101000\n00000000\n00000000\n00000000\n00000000\nCHAR 8696\n00000000\n00000000\n00000000\n00000000\n00010100\n00010010\n01111111\n00010010\n00010100\n00000000\n00000000\n00000000\n00000000\nCHAR 8697\n00000000\n00000000\n00000000\n00000000\n00010000\n01010100\n11111110\n01010100\n00010000\n00000000\n00000000\n00000000\n00000000\nCHAR 8698\n00000000\n00000000\n00000000\n00000000\n00101010\n01001010\n11111111\n01001010\n00101010\n00000000\n00000000\n00000000\n00000000\nCHAR 8699\n00000000\n00000000\n00000000\n00000000\n01010100\n01010010\n11111111\n01010010\n01010100\n00000000\n00000000\n00000000\n00000000\nCHAR 8700\n00000000\n00000000\n00000000\n00000000\n00011000\n01011010\n11111111\n01011010\n00011000\n00000000\n00000000\n00000000\n00000000\nCHAR 8701\n00000000\n00000000\n00000000\n00010000\n00110000\n01010000\n10011111\n01010000\n00110000\n00010000\n00000000\n00000000\n00000000\nCHAR 8702\n00000000\n00000000\n00000000\n00001000\n00001100\n00001010\n11111001\n00001010\n00001100\n00001000\n00000000\n00000000\n00000000\nCHAR 8703\n00000000\n00000000\n00000000\n00000000\n00100100\n01100110\n10111101\n01100110\n00100100\n00000000\n00000000\n00000000\n00000000\nCHAR 8704\n00000000\n00000000\n01000010\n01000010\n01000010\n01111110\n01000010\n01000010\n01000010\n00100100\n00011000\n00000000\n00000000\nCHAR 8705\n00000000\n00000000\n00110000\n01001000\n01000000\n01000000\n01000000\n01000000\n01000000\n01001000\n00110000\n00000000\n00000000\nCHAR 8706\n00000000\n00000000\n00000000\n00111000\n01000100\n00000100\n00111100\n01000100\n01000100\n01001000\n00110000\n00000000\n00000000\nCHAR 8707\n00000000\n00000000\n01111110\n00000010\n00000010\n00000010\n00111110\n00000010\n00000010\n00000010\n01111110\n00000000\n00000000\nCHAR 8708\n00000100\n00000100\n11111110\n00001010\n00001010\n00010010\n01111110\n00010010\n00100010\n00100010\n11111110\n01000000\n01000000\nCHAR 8709\n00000000\n00000010\n00000010\n00111100\n01000110\n01001010\n01001010\n01010010\n01100010\n00111100\n01000000\n01000000\n00000000\nCHAR 8710\n00000000\n00000000\n00010000\n00010000\n00101000\n00101000\n01000100\n01000100\n10000010\n10000010\n11111110\n00000000\n00000000\nCHAR 8711\n00000000\n00000000\n11111110\n10000010\n10000010\n01000100\n01000100\n00101000\n00101000\n00010000\n00010000\n00000000\n00000000\nCHAR 8712\n00000000\n00000000\n00000000\n00000000\n00011110\n00100000\n01000000\n01111110\n01000000\n00100000\n00011110\n00000000\n00000000\nCHAR 8713\n00000000\n00000000\n00001000\n00001000\n00011110\n00101000\n01001000\n01111110\n01001000\n00101000\n00011110\n00001000\n00001000\nCHAR 8714\n00000000\n00000000\n00000000\n00000000\n00000000\n00011100\n00100000\n00111100\n00100000\n00011100\n00000000\n00000000\n00000000\nCHAR 8715\n00000000\n00000000\n00000000\n00000000\n01111000\n00000100\n00000010\n01111110\n00000010\n00000100\n01111000\n00000000\n00000000\nCHAR 8716\n00000000\n00000000\n00010000\n00010000\n01111000\n00010100\n00010010\n01111110\n00010010\n00010100\n01111000\n00010000\n00010000\nCHAR 8717\n00000000\n00000000\n00000000\n00000000\n00000000\n00111000\n00000100\n00111100\n00000100\n00111000\n00000000\n00000000\n00000000\nCHAR 8718\n00000000\n00000000\n00000000\n01111110\n01111110\n01111110\n01111110\n01111110\n01111110\n01111110\n00000000\n00000000\n00000000\nCHAR 8719\n00000000\n01111110\n00100100\n00100100\n00100100\n00100100\n00100100\n00100100\n00100100\n00100100\n00100100\n01110110\n00000000\nCHAR 8720\n00000000\n01110110\n00100100\n00100100\n00100100\n00100100\n00100100\n00100100\n00100100\n00100100\n00100100\n01111110\n00000000\nCHAR 8721\n00000000\n01111110\n01000000\n00100000\n00010000\n00001000\n00000100\n00001000\n00010000\n00100000\n01000000\n01111110\n00000000\nCHAR 8722\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n01111100\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8723\n00000000\n00000000\n00000000\n01111100\n00000000\n00010000\n00010000\n01111100\n00010000\n00010000\n00000000\n00000000\n00000000\nCHAR 8724\n00000000\n00000000\n00000000\n00010000\n00000000\n00010000\n00010000\n01111100\n00010000\n00010000\n00000000\n00000000\n00000000\nCHAR 8725\n00000000\n00000000\n00000100\n00000100\n00001000\n00001000\n00010000\n00010000\n00100000\n00100000\n01000000\n00000000\n00000000\nCHAR 8726\n00000000\n00000000\n00000000\n01000000\n00100000\n00100000\n00010000\n00010000\n00001000\n00001000\n00000100\n00000000\n00000000\nCHAR 8727\n00000000\n00000000\n00000000\n00000000\n00000000\n01010100\n00111000\n01111100\n00111000\n01010100\n00000000\n00000000\n00000000\nCHAR 8728\n00000000\n00000000\n00000000\n00000000\n00000000\n00011000\n00100100\n00100100\n00011000\n00000000\n00000000\n00000000\n00000000\nCHAR 8729\n00000000\n00000000\n00000000\n00000000\n00000000\n00011000\n00111100\n00111100\n00011000\n00000000\n00000000\n00000000\n00000000\nCHAR 8730\n00000000\n00000000\n00000010\n00000010\n00000100\n00000100\n00001000\n00001000\n10010000\n01010000\n00100000\n00000000\n00000000\nCHAR 8731\n00000000\n00000000\n11000010\n00100010\n01000100\n00100100\n11001000\n00001000\n10010000\n01010000\n00100000\n00000000\n00000000\nCHAR 8732\n00000000\n00000000\n10000010\n10000010\n10100100\n11100100\n00101000\n00001000\n10010000\n01010000\n00100000\n00000000\n00000000\nCHAR 8733\n00000000\n00000000\n00000000\n00000000\n00000000\n00110100\n01001000\n01001000\n00110100\n00000000\n00000000\n00000000\n00000000\nCHAR 8734\n00000000\n00000000\n00000000\n00000000\n00000000\n01101100\n10010010\n10010010\n01101100\n00000000\n00000000\n00000000\n00000000\nCHAR 8735\n00000000\n00000000\n00000000\n00000000\n00000000\n01000000\n01000000\n01000000\n01000000\n01000000\n01111110\n00000000\n00000000\nCHAR 8736\n00000000\n00000000\n00000000\n00000010\n00000100\n00001000\n00010000\n00100000\n01000000\n01111110\n00000000\n00000000\n00000000\nCHAR 8737\n00000000\n00000000\n00000000\n00000010\n01000100\n00101000\n00010000\n00101000\n01001000\n01111110\n00001000\n00000000\n00000000\nCHAR 8738\n00000000\n00000000\n00000100\n00101000\n00010000\n00101000\n01001000\n00101000\n00010000\n00101000\n00000100\n00000000\n00000000\nCHAR 8739\n00000000\n00000000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00000000\n00000000\nCHAR 8740\n00000000\n00000000\n00010000\n00010000\n00010100\n00011000\n00010000\n00110000\n01010000\n00010000\n00010000\n00000000\n00000000\nCHAR 8741\n00000000\n00000000\n00101000\n00101000\n00101000\n00101000\n00101000\n00101000\n00101000\n00101000\n00101000\n00000000\n00000000\nCHAR 8742\n00000000\n00000000\n00101000\n00101010\n00101100\n00101000\n00111000\n00101000\n01101000\n10101000\n00101000\n00000000\n00000000\nCHAR 8743\n00000000\n00000000\n00000000\n00000000\n00000000\n00010000\n00101000\n00101000\n01000100\n01000100\n10000010\n00000000\n00000000\nCHAR 8744\n00000000\n00000000\n00000000\n00000000\n00000000\n10000010\n01000100\n01000100\n00101000\n00101000\n00010000\n00000000\n00000000\nCHAR 8745\n00000000\n00000000\n00000000\n00000000\n00000000\n00011000\n00100100\n01000010\n01000010\n01000010\n01000010\n00000000\n00000000\nCHAR 8746\n00000000\n00000000\n00000000\n00000000\n00000000\n01000010\n01000010\n01000010\n01000010\n00100100\n00011000\n00000000\n00000000\nCHAR 8747\n00001000\n00010100\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n01010000\n00100000\nCHAR 8748\n00000000\n00010010\n00100100\n00100100\n00100100\n00100100\n00100100\n00100100\n00100100\n00100100\n00100100\n00100100\n01001000\nCHAR 8749\n00000000\n00101010\n01010100\n01010100\n01010100\n01010100\n01010100\n01010100\n01010100\n01010100\n01010100\n01010100\n01101000\nCHAR 8750\n00001000\n00010100\n00010000\n00010000\n00111000\n01010100\n01010100\n01010100\n00111000\n00010000\n00010000\n01010000\n00100000\nCHAR 8751\n00000000\n00010010\n00100100\n00100100\n01111110\n10100101\n10100101\n10100101\n01111110\n00100100\n00100100\n00100100\n01001000\nCHAR 8752\n00000000\n00101010\n01010100\n01010100\n01111110\n11010101\n11010101\n11010101\n01111110\n01010100\n01010100\n01010100\n10101000\nCHAR 8753\n00010000\n00101000\n00100000\n00100000\n00100000\n01111010\n10100110\n00101110\n00100000\n00100000\n00100000\n10100000\n01000000\nCHAR 8754\n00010000\n00101000\n00100000\n00100000\n01110100\n10101100\n10111100\n10101000\n01110000\n00100000\n00100000\n10100000\n01000000\nCHAR 8755\n00010000\n00101000\n00100000\n00100000\n01110000\n10101000\n10111100\n10101100\n01110100\n00100000\n00100000\n10100000\n01000000\nCHAR 8756\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00010000\n00000000\n00000000\n01000100\n00000000\n00000000\n00000000\nCHAR 8757\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n01000100\n00000000\n00000000\n00010000\n00000000\n00000000\n00000000\nCHAR 8758\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00010000\n00000000\n00000000\n00010000\n00000000\n00000000\n00000000\nCHAR 8759\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00100100\n00000000\n00000000\n00100100\n00000000\n00000000\n00000000\nCHAR 8760\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00010000\n00000000\n01111100\n00000000\n00000000\n00000000\n00000000\nCHAR 8761\n00000000\n00000000\n00000000\n00000000\n00000000\n00000100\n00000000\n11110000\n00000000\n00000100\n00000000\n00000000\n00000000\nCHAR 8762\n00000000\n00000000\n00000000\n00000000\n00000000\n01000100\n00000000\n01111100\n00000000\n01000100\n00000000\n00000000\n00000000\nCHAR 8763\n00000000\n00000000\n00000000\n00000000\n00000000\n00000100\n01100000\n10010010\n10010010\n00001100\n01000000\n00000000\n00000000\nCHAR 8764\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n01100000\n10010010\n10010010\n00001100\n00000000\n00000000\n00000000\nCHAR 8765\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00001100\n10010010\n10010010\n01100000\n00000000\n00000000\n00000000\nCHAR 8766\n00000000\n00000000\n00000000\n00000000\n00000000\n01100010\n10010001\n10001001\n01000110\n00000000\n00000000\n00000000\n00000000\nCHAR 8767\n00000000\n00000000\n00000000\n01100000\n10010000\n10010000\n10010000\n00010010\n00010010\n00010010\n00001100\n00000000\n00000000\nCHAR 8768\n00000000\n00000000\n00110000\n00001000\n00001000\n00001000\n00010000\n00100000\n00100000\n00100000\n00011000\n00000000\n00000000\nCHAR 8769\n00000000\n00000000\n00000000\n00000000\n00010000\n00010000\n01110010\n10010010\n10011100\n00010000\n00010000\n00000000\n00000000\nCHAR 8770\n00000000\n00000000\n00000000\n00000000\n00000000\n11111110\n00000000\n01100010\n10010010\n10001100\n00000000\n00000000\n00000000\nCHAR 8771\n00000000\n00000000\n00000000\n00000000\n00000000\n01100010\n10010010\n10001100\n00000000\n11111110\n00000000\n00000000\n00000000\nCHAR 8772\n00000000\n00000000\n00000000\n00010000\n00010000\n01110010\n10010010\n10011100\n00010000\n11111110\n00010000\n00000000\n00000000\nCHAR 8773\n00000000\n00000000\n00000000\n01100010\n10010010\n10001100\n00000000\n11111110\n00000000\n11111110\n00000000\n00000000\n00000000\nCHAR 8774\n00000000\n00000000\n00000000\n01100010\n10010010\n10001100\n00010000\n11111110\n00010000\n11111110\n00010000\n00000000\n00000000\nCHAR 8775\n00000000\n00000000\n00010000\n01110010\n10010010\n10011100\n00010000\n11111110\n00010000\n11111110\n00010000\n00000000\n00000000\nCHAR 8776\n00000000\n00000000\n00000000\n00000000\n01100000\n10010010\n00001100\n01100000\n10010010\n00001100\n00000000\n00000000\n00000000\nCHAR 8777\n00000000\n00000000\n00010000\n00010000\n01110010\n10010010\n10011100\n01110010\n10010010\n10011100\n00010000\n00010000\n00000000\nCHAR 8778\n00000000\n00000000\n00000000\n01100010\n10010010\n10001100\n01100010\n10010010\n10001100\n00000000\n01111100\n00000000\n00000000\nCHAR 8779\n00000000\n00000000\n01100010\n10010010\n10001100\n01100010\n10010010\n10001100\n01100010\n10010010\n10001100\n00000000\n00000000\nCHAR 8780\n00000000\n00000000\n00000000\n10001100\n10010010\n01100010\n00000000\n11111110\n00000000\n11111110\n00000000\n00000000\n00000000\nCHAR 8781\n00000000\n00000000\n00000000\n00000000\n00000000\n01000010\n00111100\n00000000\n00111100\n01000010\n00000000\n00000000\n00000000\nCHAR 8782\n00000000\n00000000\n00000000\n00000000\n00000000\n00011000\n01100110\n00000000\n01100110\n00011000\n00000000\n00000000\n00000000\nCHAR 8783\n00000000\n00000000\n00000000\n00000000\n00000000\n00011000\n01100110\n00000000\n01111110\n00000000\n00000000\n00000000\n00000000\nCHAR 8784\n00000000\n00000000\n00000000\n00000000\n00010000\n00000000\n01111100\n00000000\n01111100\n00000000\n00000000\n00000000\n00000000\nCHAR 8785\n00000000\n00000000\n00000000\n00000000\n00010000\n00000000\n01111100\n00000000\n01111100\n00000000\n00010000\n00000000\n00000000\nCHAR 8786\n00000000\n00000000\n00000000\n00000000\n01000000\n00000000\n01111100\n00000000\n01111100\n00000000\n00000100\n00000000\n00000000\nCHAR 8787\n00000000\n00000000\n00000000\n00000000\n00000100\n00000000\n01111100\n00000000\n01111100\n00000000\n01000000\n00000000\n00000000\nCHAR 8788\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n01001110\n00000000\n01001110\n00000000\n00000000\n00000000\n00000000\nCHAR 8789\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n01110010\n00000000\n01110010\n00000000\n00000000\n00000000\n00000000\nCHAR 8790\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n01111110\n00100100\n01111110\n00000000\n00000000\n00000000\n00000000\nCHAR 8791\n00000000\n00000000\n00010000\n00101000\n00010000\n00000000\n01111100\n00000000\n01111100\n00000000\n00000000\n00000000\n00000000\nCHAR 8792\n00000000\n00000000\n00000000\n00111000\n01000100\n00000000\n01111100\n00000000\n01111100\n00000000\n00000000\n00000000\n00000000\nCHAR 8793\n00000000\n00000000\n00000000\n00010000\n00101000\n00000000\n01111100\n00000000\n01111100\n00000000\n00000000\n00000000\n00000000\nCHAR 8794\n00000000\n00000000\n01000100\n00101000\n00010000\n00000000\n01111100\n00000000\n01111100\n00000000\n00000000\n00000000\n00000000\nCHAR 8795\n00000000\n00000000\n01010100\n00111000\n01111100\n00111000\n01010100\n00000000\n01111100\n00000000\n01111100\n00000000\n00000000\nCHAR 8796\n00000000\n00000000\n00010000\n00101000\n00101000\n01000100\n01111100\n00000000\n01111100\n00000000\n01111100\n00000000\n00000000\nCHAR 8797\n00000000\n00000000\n00100110\n01101100\n01100100\n00000000\n01111110\n00000000\n01111110\n00000000\n00000000\n00000000\n00000000\nCHAR 8798\n00000000\n00000000\n01101000\n01010100\n01010100\n01010100\n00000000\n01111100\n00000000\n01111100\n00000000\n00000000\n00000000\nCHAR 8799\n00010000\n00101000\n00001000\n00010000\n00000000\n00010000\n01111100\n00000000\n01111100\n00000000\n00000000\n00000000\n00000000\nCHAR 8800\n00000000\n00000000\n00000000\n00000100\n00000100\n01111110\n00001000\n00010000\n01111110\n00100000\n00100000\n00000000\n00000000\nCHAR 8801\n00000000\n00000000\n00000000\n00000000\n00000000\n01111110\n00000000\n01111110\n00000000\n01111110\n00000000\n00000000\n00000000\nCHAR 8802\n00000000\n00000000\n00000000\n00000100\n00000100\n01111110\n00001000\n01111110\n00010000\n01111110\n00100000\n00100000\n00000000\nCHAR 8803\n00000000\n00000000\n00000000\n00000000\n01111110\n00000000\n01111110\n00000000\n01111110\n00000000\n01111110\n00000000\n00000000\nCHAR 8804\n00000000\n00000000\n00000000\n00000000\n00001110\n00110000\n11000000\n00110000\n00001110\n00000000\n11111110\n00000000\n00000000\nCHAR 8805\n00000000\n00000000\n00000000\n00000000\n11100000\n00011000\n00000110\n00011000\n11100000\n00000000\n11111110\n00000000\n00000000\nCHAR 8806\n00000000\n00000000\n00001110\n00110000\n11000000\n00110000\n00001110\n00000000\n11111110\n00000000\n11111110\n00000000\n00000000\nCHAR 8807\n00000000\n00000000\n11100000\n00011000\n00000110\n00011000\n11100000\n00000000\n11111110\n00000000\n11111110\n00000000\n00000000\nCHAR 8808\n00000000\n00000000\n00001110\n00110000\n11000000\n00110000\n00001110\n00010000\n11111110\n00010000\n11111110\n00010000\n00000000\nCHAR 8809\n00000000\n00000000\n11100000\n00011000\n00000110\n00011000\n11100000\n00010000\n11111110\n00010000\n11111110\n00010000\n00000000\nCHAR 8810\n00000000\n00000000\n00000000\n00010010\n00100100\n01001000\n10010000\n01001000\n00100100\n00010010\n00000000\n00000000\n00000000\nCHAR 8811\n00000000\n00000000\n00000000\n10010000\n01001000\n00100100\n00010010\n00100100\n01001000\n10010000\n00000000\n00000000\n00000000\nCHAR 8812\n00000000\n00000000\n00100100\n00011000\n00100100\n00100100\n00100100\n00100100\n00100100\n00011000\n00100100\n00000000\n00000000\nCHAR 8813\n00000000\n00000000\n00000000\n00000000\n00010000\n01010100\n00111000\n00010000\n00111000\n01010100\n00010000\n00000000\n00000000\nCHAR 8814\n00000000\n00010000\n00010100\n00011000\n00010000\n00110000\n01010000\n00110000\n00010000\n00011000\n00010100\n00010000\n00000000\nCHAR 8815\n00000000\n00010000\n01010000\n00110000\n00010000\n00011000\n00010100\n00011000\n00010000\n00110000\n01010000\n00010000\n00000000\nCHAR 8816\n00000000\n00010000\n00010000\n00011100\n00110000\n01010000\n00110000\n00011100\n00010000\n01111100\n00010000\n00010000\n00000000\nCHAR 8817\n00000000\n00010000\n00010000\n01110000\n00011000\n00010100\n00011000\n01110000\n00010000\n01111100\n00010000\n00010000\n00000000\nCHAR 8818\n00000000\n00000000\n00001100\n00110000\n01000000\n00110000\n00001100\n00000000\n00100100\n01010100\n01001000\n00000000\n00000000\nCHAR 8819\n00000000\n00000000\n01100000\n00011000\n00000100\n00011000\n01100000\n00000000\n00100100\n01010100\n01001000\n00000000\n00000000\nCHAR 8820\n00010000\n00010000\n00011100\n00110000\n01010000\n00110000\n00011100\n00010000\n00110100\n01010100\n01011000\n00010000\n00000000\nCHAR 8821\n00010000\n00010000\n01110000\n00011000\n00010100\n00011000\n01110000\n00010000\n00110100\n01010100\n01011000\n00010000\n00000000\nCHAR 8822\n00000000\n00001110\n00110000\n11000000\n00110000\n00001110\n11100000\n00011000\n00000110\n00011000\n11100000\n00000000\n00000000\nCHAR 8823\n00000000\n11100000\n00011000\n00000110\n00011000\n11100000\n00001110\n00110000\n11000000\n00110000\n00001110\n00000000\n00000000\nCHAR 8824\n00010000\n00011110\n00110000\n11010000\n00110000\n00011110\n11110000\n00011000\n00010110\n00011000\n11110000\n00010000\n00000000\nCHAR 8825\n00010000\n11110000\n00011000\n00010110\n00011000\n11110000\n00011110\n00110000\n11010000\n00110000\n00011110\n00010000\n00000000\nCHAR 8826\n00000000\n00000000\n00000000\n00000010\n00000100\n00001000\n01110000\n00001000\n00000100\n00000010\n00000000\n00000000\n00000000\nCHAR 8827\n00000000\n00000000\n00000000\n01000000\n00100000\n00010000\n00001110\n00010000\n00100000\n01000000\n00000000\n00000000\n00000000\nCHAR 8828\n00000000\n00000000\n00000000\n00000010\n00000100\n00001000\n01110000\n00001000\n01110100\n00001010\n00000100\n00000010\n00000000\nCHAR 8829\n00000000\n00000000\n00000000\n01000000\n00100000\n00010000\n00001110\n00010000\n00101110\n01010000\n00100000\n01000000\n00000000\nCHAR 8830\n00000000\n00000000\n00000100\n00001000\n01110000\n00001000\n00000100\n00000000\n00100100\n01010100\n01001000\n00000000\n00000000\nCHAR 8831\n00000000\n00000000\n01000000\n00100000\n00011100\n00100000\n01000000\n00000000\n00100100\n01010100\n01001000\n00000000\n00000000\nCHAR 8832\n00000000\n00000000\n00010000\n00010010\n00010100\n00011000\n01110000\n00011000\n00010100\n00010010\n00010000\n00000000\n00000000\nCHAR 8833\n00000000\n00000000\n00001000\n01001000\n00101000\n00011000\n00001110\n00011000\n00101000\n01001000\n00001000\n00000000\n00000000\nCHAR 8834\n00000000\n00000000\n00000000\n00000000\n00000000\n00111110\n01000000\n01000000\n01000000\n00111110\n00000000\n00000000\n00000000\nCHAR 8835\n00000000\n00000000\n00000000\n00000000\n00000000\n01111100\n00000010\n00000010\n00000010\n01111100\n00000000\n00000000\n00000000\nCHAR 8836\n00000000\n00000000\n00000000\n00001000\n00001000\n00111110\n01001000\n01001000\n01001000\n00111110\n00001000\n00001000\n00000000\nCHAR 8837\n00000000\n00000000\n00000000\n00010000\n00010000\n01111100\n00010010\n00010010\n00010010\n01111100\n00010000\n00010000\n00000000\nCHAR 8838\n00000000\n00000000\n00000000\n00111110\n01000000\n01000000\n01000000\n00111110\n00000000\n01111110\n00000000\n00000000\n00000000\nCHAR 8839\n00000000\n00000000\n00000000\n01111100\n00000010\n00000010\n00000010\n01111100\n00000000\n01111110\n00000000\n00000000\n00000000\nCHAR 8840\n00000000\n00001000\n00001000\n00111110\n01001000\n01001000\n01001000\n00111110\n00001000\n01111110\n00001000\n00001000\n00000000\nCHAR 8841\n00000000\n00010000\n00010000\n01111100\n00010010\n00010010\n00010010\n01111100\n00010000\n01111110\n00010000\n00010000\n00000000\nCHAR 8842\n00000000\n00000000\n00000000\n00111110\n01000000\n01000000\n01000000\n00111110\n00001000\n01111110\n00010000\n00000000\n00000000\nCHAR 8843\n00000000\n00000000\n00000000\n01111100\n00000010\n00000010\n00000010\n01111100\n00001000\n01111110\n00010000\n00000000\n00000000\nCHAR 8844\n00000000\n00000000\n00000000\n01000010\n01001010\n01010010\n01111110\n01010010\n01001010\n01000010\n00111100\n00000000\n00000000\nCHAR 8845\n00000000\n00000000\n00000000\n01000010\n01000010\n01000010\n01011010\n01011010\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 8846\n00000000\n00000000\n00000000\n01000010\n01010010\n01010010\n01111010\n01010010\n01010010\n01000010\n00111100\n00000000\n00000000\nCHAR 8847\n00000000\n00000000\n00000000\n00000000\n00000000\n01111110\n01000000\n01000000\n01000000\n01111110\n00000000\n00000000\n00000000\nCHAR 8848\n00000000\n00000000\n00000000\n00000000\n00000000\n01111110\n00000010\n00000010\n00000010\n01111110\n00000000\n00000000\n00000000\nCHAR 8849\n00000000\n00000000\n00000000\n01111110\n01000000\n01000000\n01000000\n01111110\n00000000\n01111110\n00000000\n00000000\n00000000\nCHAR 8850\n00000000\n00000000\n00000000\n01111110\n00000010\n00000010\n00000010\n01111110\n00000000\n01111110\n00000000\n00000000\n00000000\nCHAR 8851\n00000000\n00000000\n00000000\n00000000\n00000000\n01111110\n01000010\n01000010\n01000010\n01000010\n01000010\n00000000\n00000000\nCHAR 8852\n00000000\n00000000\n00000000\n00000000\n00000000\n01000010\n01000010\n01000010\n01000010\n01000010\n01111110\n00000000\n00000000\nCHAR 8853\n00000000\n00000000\n00000000\n00000000\n00111000\n01010100\n01111100\n01010100\n00111000\n00000000\n00000000\n00000000\n00000000\nCHAR 8854\n00000000\n00000000\n00000000\n00000000\n00111000\n01000100\n01111100\n01000100\n00111000\n00000000\n00000000\n00000000\n00000000\nCHAR 8855\n00000000\n00000000\n00000000\n00000000\n00111000\n01101100\n01010100\n01101100\n00111000\n00000000\n00000000\n00000000\n00000000\nCHAR 8856\n00000000\n00000000\n00000000\n00000000\n00111000\n01001100\n01010100\n01100100\n00111000\n00000000\n00000000\n00000000\n00000000\nCHAR 8857\n00000000\n00000000\n00000000\n00000000\n00111000\n01000100\n01010100\n01000100\n00111000\n00000000\n00000000\n00000000\n00000000\nCHAR 8858\n00000000\n00000000\n00000000\n00111000\n01000100\n01010100\n01101100\n01010100\n01000100\n00111000\n00000000\n00000000\n00000000\nCHAR 8859\n00000000\n00000000\n00000000\n00111000\n01000100\n01101100\n01010100\n01101100\n01000100\n00111000\n00000000\n00000000\n00000000\nCHAR 8860\n00000000\n00000000\n00000000\n00111000\n01000100\n01111100\n01000100\n01111100\n01000100\n00111000\n00000000\n00000000\n00000000\nCHAR 8861\n00000000\n00000000\n00000000\n00111000\n01000100\n01000100\n01111100\n01000100\n01000100\n00111000\n00000000\n00000000\n00000000\nCHAR 8862\n00000000\n00000000\n00000000\n00000000\n01111100\n01010100\n01111100\n01010100\n01111100\n00000000\n00000000\n00000000\n00000000\nCHAR 8863\n00000000\n00000000\n00000000\n00000000\n01111100\n01000100\n01111100\n01000100\n01111100\n00000000\n00000000\n00000000\n00000000\nCHAR 8864\n00000000\n00000000\n00000000\n00000000\n01111100\n01101100\n01010100\n01101100\n01111100\n00000000\n00000000\n00000000\n00000000\nCHAR 8865\n00000000\n00000000\n00000000\n00000000\n01111100\n01000100\n01010100\n01000100\n01111100\n00000000\n00000000\n00000000\n00000000\nCHAR 8866\n00000000\n00000000\n01000000\n01000000\n01000000\n01000000\n01111100\n01000000\n01000000\n01000000\n01000000\n00000000\n00000000\nCHAR 8867\n00000000\n00000000\n00000100\n00000100\n00000100\n00000100\n01111100\n00000100\n00000100\n00000100\n00000100\n00000000\n00000000\nCHAR 8868\n00000000\n00000000\n00000000\n01111100\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00000000\n00000000\nCHAR 8869\n00000000\n00000000\n00000000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n01111100\n00000000\n00000000\nCHAR 8870\n00000000\n00000000\n01000000\n01000000\n01000000\n01000000\n01111000\n01000000\n01000000\n01000000\n01000000\n00000000\n00000000\nCHAR 8871\n00000000\n00000000\n01000000\n01000000\n01000000\n01111000\n01000000\n01111000\n01000000\n01000000\n01000000\n00000000\n00000000\nCHAR 8872\n00000000\n00000000\n01000000\n01000000\n01000000\n01111100\n01000000\n01111100\n01000000\n01000000\n01000000\n00000000\n00000000\nCHAR 8873\n00000000\n00000000\n01010000\n01010000\n01010000\n01010000\n01011100\n01010000\n01010000\n01010000\n01010000\n00000000\n00000000\nCHAR 8874\n00000000\n00000000\n01010100\n01010100\n01010100\n01010100\n01010110\n01010100\n01010100\n01010100\n01010100\n00000000\n00000000\nCHAR 8875\n00000000\n00000000\n01010000\n01010000\n01010000\n01011100\n01010000\n01011100\n01010000\n01010000\n01010000\n00000000\n00000000\nCHAR 8876\n00000000\n00000000\n01000000\n01000000\n01001000\n01001000\n01111100\n01010000\n01010000\n01000000\n01000000\n00000000\n00000000\nCHAR 8877\n00000000\n00000000\n01000000\n01000100\n01000100\n01111100\n01001000\n01111100\n01010000\n01010000\n01000000\n00000000\n00000000\nCHAR 8878\n00000000\n00000000\n10100000\n10100000\n10100100\n10100100\n10111110\n10101000\n10101000\n10100000\n10100000\n00000000\n00000000\nCHAR 8879\n00000000\n00000000\n10100000\n10100010\n10100010\n10111110\n10100100\n10111110\n10101000\n10101000\n10100000\n00000000\n00000000\nCHAR 8880\n00000000\n00000000\n00000000\n00001100\n00000010\n00000100\n01111000\n00000100\n00000010\n00001100\n00000000\n00000000\n00000000\nCHAR 8881\n00000000\n00000000\n00000000\n00110000\n01000000\n00100000\n00011110\n00100000\n01000000\n00110000\n00000000\n00000000\n00000000\nCHAR 8882\n00000000\n00000000\n00000000\n00000000\n00000110\n00011010\n01100010\n00011010\n00000110\n00000000\n00000000\n00000000\n00000000\nCHAR 8883\n00000000\n00000000\n00000000\n00000000\n01100000\n01011000\n01000110\n01011000\n01100000\n00000000\n00000000\n00000000\n00000000\nCHAR 8884\n00000000\n00000000\n00000000\n00000110\n00011010\n01100010\n00011010\n00000110\n00000000\n01111110\n00000000\n00000000\n00000000\nCHAR 8885\n00000000\n00000000\n00000000\n01100000\n01011000\n01000110\n01011000\n01100000\n00000000\n01111110\n00000000\n00000000\n00000000\nCHAR 8886\n00000000\n00000000\n00000000\n00000000\n00000000\n00100100\n01011110\n00100100\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8887\n00000000\n00000000\n00000000\n00000000\n00000000\n00100100\n01111010\n00100100\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8888\n00000000\n00000000\n00000000\n00000000\n00000000\n00000100\n01111010\n00000100\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8889\n00000000\n00000000\n00000000\n00000000\n00010000\n00010000\n01101100\n00010000\n00010000\n00000000\n00000000\n00000000\n00000000\nCHAR 8890\n00000000\n00000000\n00000000\n00000000\n00000000\n00111000\n00010000\n00010000\n00010000\n00010000\n00010000\n00000000\n00000000\nCHAR 8891\n00000000\n00000000\n00000000\n01000100\n01000100\n00101000\n00101000\n00010000\n00010000\n00000000\n01111100\n00000000\n00000000\nCHAR 8892\n00000000\n00000000\n00000000\n01111100\n00000000\n00010000\n00010000\n00101000\n00101000\n01000100\n01000100\n00000000\n00000000\nCHAR 8893\n00000000\n00000000\n00000000\n01111100\n00000000\n01000100\n01000100\n00101000\n00101000\n00010000\n00010000\n00000000\n00000000\nCHAR 8894\n00000000\n00000000\n00000000\n00000000\n00000000\n01000000\n01000000\n01000000\n01100000\n01010000\n01111100\n00000000\n00000000\nCHAR 8895\n00000000\n00000000\n00000000\n00000000\n00000000\n00000010\n00000110\n00001010\n00010010\n00100010\n01111110\n00000000\n00000000\nCHAR 8896\n00000000\n00010000\n00010000\n00101000\n00101000\n01000100\n01000100\n01000100\n10000010\n10000010\n10000010\n10000010\n00000000\nCHAR 8897\n00000000\n10000010\n10000010\n10000010\n10000010\n01000100\n01000100\n01000100\n00101000\n00101000\n00010000\n00010000\n00000000\nCHAR 8898\n00000000\n00111000\n01000100\n10000010\n10000010\n10000010\n10000010\n10000010\n10000010\n10000010\n10000010\n10000010\n00000000\nCHAR 8899\n00000000\n10000010\n10000010\n10000010\n10000010\n10000010\n10000010\n10000010\n10000010\n10000010\n01000100\n00111000\n00000000\nCHAR 8900\n00000000\n00000000\n00000000\n00010000\n00010000\n00101000\n01000100\n00101000\n00010000\n00010000\n00000000\n00000000\n00000000\nCHAR 8901\n00000000\n00000000\n00000000\n00000000\n00000000\n00011000\n00011000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8902\n00000000\n00000000\n00000000\n00010000\n00010000\n01111100\n00111000\n00111000\n01000100\n00000000\n00000000\n00000000\n00000000\nCHAR 8903\n00000000\n00000000\n00000000\n00010000\n01000100\n00101000\n01111100\n00101000\n01000100\n00010000\n00000000\n00000000\n00000000\nCHAR 8904\n00000000\n00000000\n00000000\n00000000\n01000100\n01101100\n01010100\n01101100\n01000100\n00000000\n00000000\n00000000\n00000000\nCHAR 8905\n00000000\n00000000\n00000000\n00000000\n01000100\n01101000\n01010000\n01101000\n01000100\n00000000\n00000000\n00000000\n00000000\nCHAR 8906\n00000000\n00000000\n00000000\n00000000\n01000100\n00101100\n00010100\n00101100\n01000100\n00000000\n00000000\n00000000\n00000000\nCHAR 8907\n00000000\n00000000\n00000000\n00000000\n01000000\n00100000\n00010000\n00101000\n01000100\n00000000\n00000000\n00000000\n00000000\nCHAR 8908\n00000000\n00000000\n00000000\n00000000\n00000100\n00001000\n00010000\n00101000\n01000100\n00000000\n00000000\n00000000\n00000000\nCHAR 8909\n00000000\n00000000\n00000000\n00000000\n00000000\n01001000\n01010100\n00100100\n00000000\n01111100\n00000000\n00000000\n00000000\nCHAR 8910\n00000000\n00000000\n00000000\n00000000\n00000000\n10000010\n01000100\n01000100\n00101000\n00101000\n00010000\n00000000\n00000000\nCHAR 8911\n00000000\n00000000\n00000000\n00000000\n00000000\n00010000\n00101000\n00101000\n01000100\n01000100\n10000010\n00000000\n00000000\nCHAR 8912\n00000000\n00000000\n00000000\n00000000\n00011110\n00100000\n01001110\n01010000\n01001110\n00100000\n00011110\n00000000\n00000000\nCHAR 8913\n00000000\n00000000\n00000000\n00000000\n01111000\n00000100\n01110010\n00001010\n01110010\n00000100\n01111000\n00000000\n00000000\nCHAR 8914\n00000000\n00000000\n00000000\n00000000\n00111000\n01000100\n01010100\n01010100\n01010100\n01010100\n01010100\n00000000\n00000000\nCHAR 8915\n00000000\n00000000\n00000000\n00000000\n01010100\n01010100\n01010100\n01010100\n01010100\n01000100\n00111000\n00000000\n00000000\nCHAR 8916\n00000000\n00000000\n00000000\n00010000\n00010000\n00111000\n01010100\n01010100\n01010100\n01010100\n01010100\n00000000\n00000000\nCHAR 8917\n00000000\n00000000\n00101000\n00101000\n00101000\n01111100\n00101000\n00101000\n01111100\n00101000\n00101000\n00000000\n00000000\nCHAR 8918\n00000000\n00000000\n00000100\n00001000\n00010000\n00100000\n01000100\n00100000\n00010000\n00001000\n00000100\n00000000\n00000000\nCHAR 8919\n00000000\n00000000\n01000000\n00100000\n00010000\n00001000\n01000100\n00001000\n00010000\n00100000\n01000000\n00000000\n00000000\nCHAR 8920\n00000000\n00000000\n00000000\n00000000\n00010010\n00100100\n01001000\n10010000\n01001000\n00100100\n00010010\n00000000\n00000000\nCHAR 8921\n00000000\n00000000\n00000000\n00000000\n10010000\n01001000\n00100100\n00010010\n00100100\n01001000\n10010000\n00000000\n00000000\nCHAR 8922\n00001110\n00110000\n11000000\n00110000\n00001110\n00000000\n11111110\n00000000\n11100000\n00011000\n00000110\n00011000\n11100000\nCHAR 8923\n11100000\n00011000\n00000110\n00011000\n11100000\n00000000\n11111110\n00000000\n00001110\n00110000\n11000000\n00110000\n00001110\nCHAR 8924\n00000000\n00000000\n00000000\n11111110\n00000000\n00001110\n00110000\n11000000\n00110000\n00001110\n00000000\n00000000\n00000000\nCHAR 8925\n00000000\n00000000\n00000000\n11111110\n00000000\n11100000\n00011000\n00000110\n00011000\n11100000\n00000000\n00000000\n00000000\nCHAR 8926\n00000000\n00000000\n00000010\n00000100\n00001010\n01110100\n00001000\n01110000\n00001000\n00000100\n00000010\n00000000\n00000000\nCHAR 8927\n00000000\n00000000\n01000000\n00100000\n01010000\n00101110\n00010000\n00001110\n00010000\n00100000\n01000000\n00000000\n00000000\nCHAR 8928\n00000000\n00000000\n00000000\n00010010\n00010100\n00011000\n01110000\n00011000\n01110100\n00011010\n00010100\n00010010\n00000000\nCHAR 8929\n00000000\n00000000\n00000000\n01001000\n00101000\n00011000\n00001110\n00011000\n00101110\n01011000\n00101000\n01001000\n00000000\nCHAR 8930\n00000000\n00001000\n00001000\n01111110\n01001000\n01001000\n01001000\n01111110\n00001000\n01111110\n00001000\n00001000\n00000000\nCHAR 8931\n00000000\n00010000\n00010000\n01111110\n00010010\n00010010\n00010010\n01111110\n00010000\n01111110\n00010000\n00010000\n00000000\nCHAR 8932\n00000000\n00000000\n00000000\n01111110\n01000000\n01000000\n01000000\n01111110\n00001000\n01111110\n00010000\n00000000\n00000000\nCHAR 8933\n00000000\n00000000\n00000000\n01111110\n00000010\n00000010\n00000010\n01111110\n00001000\n01111110\n00010000\n00000000\n00000000\nCHAR 8934\n00000000\n00000000\n00001110\n00110000\n11000000\n00110000\n00011110\n00010000\n01110010\n10010010\n10011100\n00010000\n00010000\nCHAR 8935\n00000000\n00000000\n11100000\n00011000\n00000110\n00011000\n11110000\n00010000\n01110010\n10010010\n10011100\n00010000\n00010000\nCHAR 8936\n00000000\n00000000\n00000010\n00000100\n11111000\n00000100\n00010010\n00010000\n01110010\n10010010\n10011100\n00010000\n00010000\nCHAR 8937\n00000000\n00000000\n10000000\n01000000\n00111110\n01000000\n10010000\n00010000\n01110010\n10010010\n10011100\n00010000\n00010000\nCHAR 8938\n00000000\n00000000\n00001000\n00001000\n00011110\n00101010\n01001010\n00101010\n00011110\n00001000\n00001000\n00000000\n00000000\nCHAR 8939\n00000000\n00000000\n00010000\n00010000\n01111000\n01010100\n01010010\n01010100\n01111000\n00010000\n00010000\n00000000\n00000000\nCHAR 8940\n00000000\n00010000\n00010000\n00111100\n01010100\n10010100\n01010100\n00111100\n00010000\n01111100\n00010000\n00010000\n00000000\nCHAR 8941\n00000000\n00010000\n00010000\n01111000\n01010100\n01010010\n01010100\n01111000\n00010000\n01111100\n00010000\n00010000\n00000000\nCHAR 8942\n00000000\n00000000\n00010000\n00000000\n00000000\n00000000\n00010000\n00000000\n00000000\n00000000\n00010000\n00000000\n00000000\nCHAR 8943\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n10010010\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8944\n00000000\n00000000\n00000100\n00000000\n00000000\n00000000\n00010000\n00000000\n00000000\n00000000\n01000000\n00000000\n00000000\nCHAR 8945\n00000000\n00000000\n01000000\n00000000\n00000000\n00000000\n00010000\n00000000\n00000000\n00000000\n00000100\n00000000\n00000000\nCHAR 8946\n00000000\n00000000\n00000000\n00000000\n00011110\n00100000\n00100000\n11111110\n00100000\n00100000\n00011110\n00000000\n00000000\nCHAR 8947\n00000000\n00000000\n00000000\n00000000\n00011110\n00100000\n01000010\n01111110\n01000010\n00100000\n00011110\n00000000\n00000000\nCHAR 8948\n00000000\n00000000\n00000000\n00000000\n00011100\n00100000\n00100100\n00111100\n00100100\n00100000\n00011100\n00000000\n00000000\nCHAR 8949\n00000000\n00001000\n00001000\n00000000\n00011110\n00100000\n01000000\n01111110\n01000000\n00100000\n00011110\n00000000\n00000000\nCHAR 8950\n00000000\n00000000\n01111110\n00000000\n00011110\n00100000\n01000000\n01111110\n01000000\n00100000\n00011110\n00000000\n00000000\nCHAR 8951\n00000000\n00000000\n00000000\n00111100\n00000000\n00011100\n00100000\n00111100\n00100000\n00011100\n00000000\n00000000\n00000000\nCHAR 8952\n00000000\n00000000\n00000000\n00000000\n00011110\n00100000\n01000000\n01111110\n01000000\n00100000\n00011110\n00000000\n01111110\nCHAR 8953\n00000000\n00000000\n00011110\n00100000\n01000000\n01111110\n01000000\n01111110\n01000000\n00100000\n00011110\n00000000\n00000000\nCHAR 8954\n00000000\n00000000\n00000000\n00000000\n11110000\n00001000\n00001000\n11111110\n00001000\n00001000\n11110000\n00000000\n00000000\nCHAR 8955\n00000000\n00000000\n00000000\n00000000\n01111000\n00000100\n01000010\n01111110\n01000010\n00000100\n01111000\n00000000\n00000000\nCHAR 8956\n00000000\n00000000\n00000000\n00000000\n00111000\n00000100\n00100100\n00111100\n00100100\n00000100\n00111000\n00000000\n00000000\nCHAR 8957\n00000000\n00000000\n01111110\n00000000\n01111000\n00000100\n00000010\n01111110\n00000010\n00000100\n01111000\n00000000\n00000000\nCHAR 8958\n00000000\n00000000\n00000000\n00111100\n00000000\n00111000\n00000100\n00111100\n00000100\n00111000\n00000000\n00000000\n00000000\nCHAR 8959\n00000000\n00000000\n11111110\n10000000\n10000000\n10000000\n11111110\n10000000\n10000000\n10000000\n11111110\n00000000\n00000000\nCHAR 8960\n00000000\n00000000\n00000000\n00000000\n00111010\n01000100\n10001010\n10010010\n10100010\n01000100\n10111000\n00000000\n00000000\nCHAR 8961\n00000000\n00000000\n00000000\n00000000\n00010000\n10011000\n01010100\n00110010\n00010000\n00000000\n00000000\n00000000\n00000000\nCHAR 8962\n00000000\n00000000\n00000000\n00000000\n00011000\n00100100\n01000010\n01000010\n01000010\n01000010\n01111110\n00000000\n00000000\nCHAR 8963\n00000000\n00010000\n00111000\n01101100\n11000110\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8964\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n11000110\n01101100\n00111000\n00010000\n00000000\n00000000\nCHAR 8965\n00000000\n00000000\n00000000\n00000000\n00000000\n11111110\n00000000\n00010000\n00111000\n01101100\n11000110\n00000000\n00000000\nCHAR 8966\n00000000\n00000000\n00000000\n11111110\n00000000\n11111110\n00000000\n00010000\n00111000\n01101100\n11000110\n00000000\n00000000\nCHAR 8967\n00000000\n00100000\n00010000\n00001000\n00010000\n00100000\n00010000\n00001000\n00010000\n00100000\n00010000\n00001000\n00000000\nCHAR 8968\n00000000\n00111100\n00100000\n00100000\n00100000\n00100000\n00100000\n00100000\n00100000\n00100000\n00100000\n00100000\n00000000\nCHAR 8969\n00000000\n00111100\n00000100\n00000100\n00000100\n00000100\n00000100\n00000100\n00000100\n00000100\n00000100\n00000100\n00000000\nCHAR 8970\n00000000\n00100000\n00100000\n00100000\n00100000\n00100000\n00100000\n00100000\n00100000\n00100000\n00100000\n00111100\n00000000\nCHAR 8971\n00000000\n00000100\n00000100\n00000100\n00000100\n00000100\n00000100\n00000100\n00000100\n00000100\n00000100\n00111100\n00000000\nCHAR 8972\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000111\n00000000\n00010000\n00010000\n00010000\n00000000\n00000000\nCHAR 8973\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n11100000\n00000000\n00001000\n00001000\n00001000\n00000000\n00000000\nCHAR 8974\n00000000\n00000000\n00010000\n00010000\n00010000\n00000000\n00000111\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8975\n00000000\n00000000\n00001000\n00001000\n00001000\n00000000\n11100000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8976\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n01111110\n01000000\n01000000\n01000000\n00000000\n00000000\n00000000\nCHAR 8977\n00000000\n00000000\n00000000\n01000010\n00111100\n00100100\n00100100\n00100100\n00111100\n01000010\n00000000\n00000000\n00000000\nCHAR 8978\n00000000\n00000000\n00000000\n00000000\n00000000\n00111000\n01000100\n10000010\n10000010\n10000010\n00000000\n00000000\n00000000\nCHAR 8979\n00000000\n00000000\n00000000\n00000000\n00000000\n00111000\n01000100\n10000010\n10000010\n11111110\n00000000\n00000000\n00000000\nCHAR 8980\n00000000\n00000000\n00000000\n00000000\n00111000\n01000100\n10000010\n01000100\n00101000\n00010000\n00000000\n00000000\n00000000\nCHAR 8981\n00000000\n00000000\n00000000\n00000000\n00111000\n01000100\n10000010\n10000010\n10100010\n01000100\n10111000\n00000000\n00000000\nCHAR 8982\n00000000\n00000000\n00010000\n00010000\n00111000\n01010100\n11111110\n01010100\n00111000\n00010000\n00010000\n00000000\n00000000\nCHAR 8983\n00000000\n00000000\n00100100\n00100100\n11111111\n00100100\n00100100\n00100100\n11111111\n00100100\n00100100\n00000000\n00000000\nCHAR 8984\n00000000\n00000000\n01000100\n10101010\n10101010\n01111100\n00101000\n01111100\n10101010\n10101010\n01000100\n00000000\n00000000\nCHAR 8985\n00000000\n00000000\n00000000\n00000000\n00000000\n01000000\n01000000\n01111110\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8986\n00000000\n00111000\n00101000\n00111000\n01000100\n10010010\n10010010\n10110010\n10000010\n01000100\n00111000\n00101000\n00111000\nCHAR 8987\n00000000\n00000000\n11111110\n10000010\n01000100\n00111000\n00010000\n00101000\n01010100\n10101010\n11111110\n00000000\n00000000\nCHAR 8988\n00000000\n01111100\n01000000\n01000000\n01000000\n01000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8989\n00000000\n00111110\n00000010\n00000010\n00000010\n00000010\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8990\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n01000000\n01000000\n01000000\n01000000\n01111100\n00000000\n00000000\nCHAR 8991\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000010\n00000010\n00000010\n00000010\n00111110\n00000000\n00000000\nCHAR 8992\n00000000\n00001100\n00010010\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\nCHAR 8993\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n10010000\n01100000\n00000000\nCHAR 8994\n00000000\n00000000\n00000000\n00000000\n00000000\n01111100\n10000010\n10000010\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8995\n00000000\n00000000\n00000000\n00000000\n00000000\n10000010\n10000010\n01111100\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 8996\n00000000\n00000000\n00000000\n00000000\n00000000\n11010110\n00111000\n01101100\n11000110\n00000000\n00000000\n00000000\n00000000\nCHAR 8997\n00000000\n00000000\n00000000\n00000000\n00000000\n11001110\n00100000\n00010000\n00001110\n00000000\n00000000\n00000000\n00000000\nCHAR 8998\n00000000\n00000000\n00000000\n00000000\n11111000\n11001100\n10110010\n10110010\n11001100\n11111000\n00000000\n00000000\n00000000\nCHAR 8999\n00000000\n00000000\n00000000\n00000000\n11111111\n10100101\n10011001\n10011001\n10100101\n11111111\n00000000\n00000000\n00000000\nCHAR 9000\n00000000\n00000000\n00000000\n11111111\n10000001\n10101011\n10000001\n10101011\n10000001\n11111111\n00000000\n00000000\n00000000\nCHAR 9003\n00000000\n00000000\n00000000\n00000000\n00111110\n01100110\n10011010\n10011010\n01100110\n00111110\n00000000\n00000000\n00000000\nCHAR 9004\n00000000\n00000000\n00000000\n00010000\n00111000\n01001100\n11000110\n11000010\n01000110\n00101100\n00011000\n00000000\n00000000\nCHAR 9005\n00000000\n00000000\n00000000\n00001000\n00010000\n00101000\n01000110\n11000100\n00101000\n00010000\n00100000\n00000000\n00000000\nCHAR 9006\n00000000\n00000000\n00000000\n00000000\n00011000\n00100100\n01111110\n10100100\n00011000\n00000000\n00000000\n00000000\n00000000\nCHAR 9007\n00000000\n00000000\n00000000\n00000000\n00000000\n00011000\n00000000\n01111110\n00000000\n00011000\n00000000\n00000000\n00000000\nCHAR 9008\n00000000\n00000000\n00000000\n00100010\n00100010\n01000100\n01000100\n01000100\n10001000\n11111000\n00000000\n00000000\n00000000\nCHAR 9009\n00000000\n00000000\n00010000\n00111000\n01010100\n10010110\n10011111\n10010110\n01010100\n00111000\n00010000\n00000000\n00000000\nCHAR 9010\n00000000\n00000000\n00000000\n11000000\n10110000\n10001000\n11111110\n10001000\n10110000\n11000000\n00000000\n00000000\n00000000\nCHAR 9011\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n11000000\n10110000\n10001100\n11111110\n00000000\n00000000\n00000000\nCHAR 9012\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n01000010\n01000010\n01000010\n01111110\n00000000\n00000000\n00000000\nCHAR 9013\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n10000010\n01000100\n00101000\n00010000\n00000000\n00000000\n00000000\nCHAR 9014\n00000000\n11111110\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n11111110\n00000000\n00000000\nCHAR 9015\n00000000\n00000000\n01111100\n01000100\n01000100\n01000100\n01000100\n01000100\n01000100\n01000100\n01111100\n00000000\n00000000\nCHAR 9016\n00000000\n00000000\n11111110\n10000010\n10000010\n11111110\n10000010\n11111110\n10000010\n10000010\n11111110\n00000000\n00000000\nCHAR 9017\n00000000\n00000000\n11111110\n10000010\n10010010\n10000010\n11111110\n10000010\n10010010\n10000010\n11111110\n00000000\n00000000\nCHAR 9018\n00000000\n00000000\n11111110\n10010010\n10101010\n10101010\n11000110\n10101010\n10101010\n10010010\n11111110\n00000000\n00000000\nCHAR 9019\n00000000\n00000000\n11111110\n10000010\n10000010\n10010010\n10101010\n10010010\n10000010\n10000010\n11111110\n00000000\n00000000\nCHAR 9020\n00000000\n00000000\n11111110\n10000010\n10111010\n11000110\n10000010\n11000110\n10111010\n10000010\n11111110\n00000000\n00000000\nCHAR 9021\n00000000\n00000000\n00010000\n00010000\n00111000\n01010100\n10010010\n10010010\n01010100\n00111000\n00010000\n00010000\n00000000\nCHAR 9022\n00000000\n00000000\n00000000\n00111000\n01000100\n10010010\n10101010\n10010010\n01000100\n00111000\n00000000\n00000000\n00000000\nCHAR 9023\n00000000\n00000000\n00000100\n00000100\n00001000\n00001000\n11111110\n00100000\n00100000\n01000000\n01000000\n00000000\n00000000\nCHAR 9024\n00000000\n00000000\n01000000\n01000000\n00100000\n00100000\n11111110\n00001000\n00001000\n00000100\n00000100\n00000000\n00000000\nCHAR 9025\n00000000\n00000000\n11111110\n10000110\n10001010\n10001010\n10010010\n10100010\n10100010\n11000010\n11111110\n00000000\n00000000\nCHAR 9026\n00000000\n00000000\n11111110\n11000010\n10100010\n10100010\n10010010\n10001010\n10001010\n10000110\n11111110\n00000000\n00000000\nCHAR 9027\n00000000\n00000000\n11111110\n10000010\n10001110\n10110010\n11000010\n10110010\n10001110\n10000010\n11111110\n00000000\n00000000\nCHAR 9028\n00000000\n00000000\n11111110\n10000010\n11100010\n10011010\n10000110\n10011010\n11100010\n10000010\n11111110\n00000000\n00000000\nCHAR 9029\n00000000\n00000000\n00010000\n00010000\n00010000\n01010000\n11111110\n01010000\n00010000\n00010000\n00010000\n00000000\n00000000\nCHAR 9030\n00000000\n00000000\n00010000\n00010000\n00010000\n00010100\n11111110\n00010100\n00010000\n00010000\n00010000\n00000000\n00000000\nCHAR 9031\n00000000\n00000000\n11111110\n10000010\n10000010\n10100010\n11111110\n10100010\n10000010\n10000010\n11111110\n00000000\n00000000\nCHAR 9032\n00000000\n00000000\n11111110\n10000010\n10000010\n10001010\n11111110\n10001010\n10000010\n10000010\n11111110\n00000000\n00000000\nCHAR 9033\n00000000\n00000000\n00000000\n00000000\n10111000\n01000100\n10100010\n10010010\n10001010\n01000100\n00111010\n00000000\n00000000\nCHAR 9034\n00000000\n00000000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n11111110\n00000000\n11111110\n00000000\n00000000\nCHAR 9035\n00000000\n00010000\n00010000\n00010000\n00111000\n00111000\n01010100\n01010100\n10010010\n10010010\n11111110\n00010000\n00010000\nCHAR 9036\n00000000\n00000000\n11111110\n10000010\n11000110\n11000110\n10101010\n10101010\n10010010\n10010010\n11111110\n00000000\n00000000\nCHAR 9037\n00000000\n00000000\n11111110\n10000010\n10010010\n10101010\n10101010\n11000110\n11111110\n10000010\n11111110\n00000000\n00000000\nCHAR 9038\n00000000\n00000000\n00010000\n00010000\n00111000\n01010100\n01010100\n00111000\n00010000\n00010000\n11111110\n00000000\n00000000\nCHAR 9039\n00000000\n00000000\n00010000\n00111000\n01010100\n00010000\n11111110\n00010000\n00010000\n00010000\n00010000\n00000000\n00000000\nCHAR 9040\n00000000\n00000000\n11111110\n10010010\n10111010\n11010110\n10010010\n10010010\n10010010\n10010010\n11111110\n00000000\n00000000\nCHAR 9041\n00000000\n00000000\n11111110\n00000000\n11111110\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00000000\n00000000\nCHAR 9042\n00000000\n00010000\n00010000\n11111110\n10010010\n10010010\n01010100\n01010100\n00111000\n00111000\n00010000\n00010000\n00010000\nCHAR 9043\n00000000\n00000000\n11111110\n10010010\n10010010\n10101010\n10101010\n11000110\n11000110\n10000010\n11111110\n00000000\n00000000\nCHAR 9044\n00000000\n00000000\n11111110\n10000010\n11111110\n11000110\n10101010\n10101010\n10010010\n10000010\n11111110\n00000000\n00000000\nCHAR 9045\n00000000\n00000000\n11111110\n00010000\n00010000\n00111000\n01010100\n01010100\n00111000\n00010000\n00010000\n00000000\n00000000\nCHAR 9046\n00000000\n00000000\n00010000\n00010000\n00010000\n00010000\n11111110\n00010000\n01010100\n00111000\n00010000\n00000000\n00000000\nCHAR 9047\n00000000\n00000000\n11111110\n10010010\n10010010\n10010010\n10010010\n11010110\n10111010\n10010010\n11111110\n00000000\n00000000\nCHAR 9048\n00000000\n00000000\n00010000\n00010000\n00010000\n00000000\n00000000\n00000000\n00000000\n00000000\n11111110\n00000000\n00000000\nCHAR 9049\n00000000\n00000000\n00010000\n00101000\n00101000\n01000100\n01000100\n10000010\n11111110\n00000000\n11111110\n00000000\n00000000\nCHAR 9050\n00000000\n00000000\n00010000\n00101000\n01000100\n10000010\n01000100\n00101000\n00010000\n00000000\n11111110\n00000000\n00000000\nCHAR 9051\n00000000\n00000000\n00000000\n00111000\n01000100\n01000100\n01000100\n00111000\n00000000\n00000000\n11111110\n00000000\n00000000\nCHAR 9052\n00000000\n00000000\n00111000\n01000100\n10000010\n10000010\n10000010\n01000100\n00111000\n00000000\n11111110\n00000000\n00000000\nCHAR 9053\n00000000\n00000000\n01111100\n10000010\n10000010\n10111010\n11000110\n11000110\n11000110\n10111010\n10000010\n00000000\n00000000\nCHAR 9054\n00000000\n00000000\n11111110\n10000010\n10010010\n10010010\n10010010\n10000010\n10000010\n10000010\n11111110\n00000000\n00000000\nCHAR 9055\n00000000\n00000000\n00000000\n00111000\n01010100\n10111010\n10010010\n10101010\n01000100\n00111000\n00000000\n00000000\n00000000\nCHAR 9056\n00000000\n00000000\n11111110\n10000010\n10010010\n10010010\n10000010\n10010010\n10010010\n10000010\n11111110\n00000000\n00000000\nCHAR 9057\n00000000\n01000100\n01000100\n00000000\n11111110\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00000000\n00000000\nCHAR 9058\n00000000\n01000100\n01000100\n00000000\n11111110\n10000010\n01000100\n01000100\n00101000\n00101000\n00010000\n00000000\n00000000\nCHAR 9059\n00000000\n00000000\n01000100\n01000100\n00000000\n00010000\n00010000\n01111100\n00111000\n00111000\n01000100\n00000000\n00000000\nCHAR 9060\n00000000\n00000000\n01000100\n01000100\n00000000\n00111000\n01000100\n01000100\n01000100\n00111000\n00000000\n00000000\n00000000\nCHAR 9061\n00000000\n01000100\n01000100\n00000000\n00111000\n01000100\n10000010\n10000010\n10000010\n01000100\n00111000\n00000000\n00000000\nCHAR 9062\n00000000\n00000000\n00010000\n00010000\n10010010\n10010010\n10010010\n10010010\n10010010\n01010100\n00111000\n00010000\n00010000\nCHAR 9063\n00000000\n00000000\n00010000\n00010000\n00111110\n01010000\n10010000\n10010000\n10010000\n01010000\n00111110\n00010000\n00010000\nCHAR 9064\n00000000\n00000000\n00000000\n01000100\n01000100\n00000000\n01100000\n10010010\n00001100\n00000000\n00000000\n00000000\n00000000\nCHAR 9065\n00000000\n00000000\n00100100\n00100100\n00000000\n01100000\n00011000\n00000110\n00011000\n01100000\n00000000\n00000000\n00000000\nCHAR 9066\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n01111110\n00000000\n00011000\n00001000\n00010000\n00000000\n00000000\nCHAR 9067\n00000000\n00000000\n11111110\n10000010\n10000010\n01110010\n11011100\n00100100\n00101000\n00010000\n00010000\n00000000\n00000000\nCHAR 9068\n00000000\n00000000\n00111000\n01000100\n10000010\n11100010\n10010010\n10001110\n10000010\n01000100\n00111000\n00000000\n00000000\nCHAR 9069\n00000000\n00000000\n00010000\n00010000\n00010000\n01110010\n10011100\n00010000\n00010000\n00010000\n00010000\n00000000\n00000000\nCHAR 9070\n00000000\n00000000\n00000000\n00000000\n00000000\n00011000\n00011000\n00000000\n00011000\n01111110\n00001000\n00010000\n00000000\nCHAR 9071\n00000000\n00000000\n11111110\n10000010\n10001010\n11111110\n10010010\n11111110\n10100010\n10000010\n11111110\n00000000\n00000000\nCHAR 9072\n00000000\n00000000\n11111110\n10000010\n10110010\n10001010\n10010010\n10000010\n10010010\n10000010\n11111110\n00000000\n00000000\nCHAR 9073\n00000000\n00000000\n00000000\n10000010\n10000010\n01000100\n01110110\n10111100\n00101000\n00010000\n00010000\n00000000\n00000000\nCHAR 9074\n00000000\n00000000\n00000000\n00010000\n00010000\n00101000\n00101000\n01110110\n11011100\n10000010\n10000010\n00000000\n00000000\nCHAR 9075\n00000000\n00000000\n00000000\n00000000\n00000000\n00110000\n00010000\n00010000\n00010000\n00010100\n00001000\n00000000\n00000000\nCHAR 9076\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n01000010\n01000010\n01000010\n01100010\n01011100\n01000000\n01000000\nCHAR 9077\n00000000\n00000000\n00000000\n00000000\n00000000\n01000100\n10000010\n10010010\n10010010\n10010010\n01101100\n00000000\n00000000\nCHAR 9078\n00000000\n00000000\n00000000\n00000000\n00000000\n00111010\n01000110\n01000010\n01000010\n01000110\n00111010\n00000000\n01111110\nCHAR 9079\n00000000\n00000000\n00000000\n00000000\n00011110\n00100000\n01000000\n01111000\n01000000\n00100000\n00011110\n00000000\n01111110\nCHAR 9080\n00000000\n00000000\n00000000\n00000000\n00000000\n00110000\n00010000\n00010000\n00010000\n00010100\n00001000\n00000000\n01111110\nCHAR 9081\n00000000\n00000000\n00000000\n00000000\n00000000\n01000100\n10000010\n10010010\n10010010\n10010010\n01101100\n00000000\n11111110\nCHAR 9082\n00000000\n00000000\n00000000\n00000000\n00000000\n00111010\n01000110\n01000010\n01000010\n01000110\n00111010\n00000000\n00000000\nCHAR 9083\n00000000\n00000000\n00000010\n00000100\n00000100\n00111110\n00001000\n10010000\n01010000\n00100000\n00000000\n00000000\n00000000\nCHAR 9084\n00000000\n00000000\n00101000\n00110000\n00100000\n01100000\n00100000\n00110000\n00101000\n00110000\n10111110\n11000000\n11100000\nCHAR 9085\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n11101110\n00101000\n00111000\n00000000\n00000000\n00000000\n00000000\nCHAR 9086\n00000000\n00000000\n00000000\n00000000\n00111000\n01000100\n10000010\n11111110\n00101000\n00101000\n11101110\n00000000\n00000000\nCHAR 9087\n00000000\n00000000\n00010000\n00010000\n00111000\n01111100\n01111100\n01111100\n00111000\n00010000\n00010000\n00000000\n00000000\nCHAR 9088\n00000000\n00000000\n00000000\n00111000\n00000100\n00111100\n01000100\n01001100\n00110100\n10000010\n01000100\n00101000\n00010000\nCHAR 9089\n00000000\n00000000\n00000000\n00000000\n00000000\n01100000\n00010000\n01110000\n10010000\n10110000\n01010101\n00000000\n11111111\nCHAR 9090\n00000000\n00000000\n00000000\n00000000\n00000000\n01100110\n00010001\n01110111\n10011001\n10111011\n01010101\n00000000\n01110111\nCHAR 9091\n00000000\n00000000\n00000000\n00000000\n10000001\n01011010\n00000100\n11011111\n00100100\n01101110\n10010101\n00000000\n00000000\nCHAR 9092\n00000000\n00000000\n11111000\n10011100\n10101010\n10101010\n10101010\n10101010\n10101010\n10011100\n11111000\n00000000\n00000000\nCHAR 9093\n00000000\n00010000\n00010000\n11111110\n10010010\n10010010\n10010010\n10010010\n10010010\n11111110\n00010000\n00010000\n00000000\nCHAR 9094\n00000000\n00000000\n00100000\n01010000\n10001000\n00100100\n11110010\n00100100\n10001000\n01010000\n00100000\n00000000\n00000000\nCHAR 9095\n00000000\n00000000\n00000000\n00000000\n00000000\n00001100\n00011010\n00101100\n00100000\n11011110\n00000000\n00000000\n00000000\nCHAR 9096\n00000000\n00010000\n00010000\n00111000\n11010110\n01111100\n01010100\n01111100\n11010110\n00111000\n00010000\n00010000\n00000000\nCHAR 9097\n00000000\n00000000\n00111000\n01000100\n10000010\n10000010\n11000110\n10101010\n10010010\n01000100\n00111000\n00000000\n00000000\nCHAR 9098\n00000000\n00000000\n00111000\n01000100\n11111110\n11000110\n10101010\n10101010\n10010010\n01010100\n00111000\n00000000\n00000000\nCHAR 9099\n00000000\n00000000\n00000000\n11110000\n10100100\n11100010\n10010010\n00010010\n01001010\n01000100\n00111000\n00000000\n00000000\nCHAR 9100\n00000000\n00000000\n00000000\n01011000\n01100100\n01110100\n01000100\n10101010\n10101010\n01000100\n00000000\n00000000\n00000000\nCHAR 9101\n00000000\n00000000\n00000000\n00000000\n00000000\n01111100\n01000100\n01000100\n01000100\n11000110\n00000000\n00000000\n00000000\nCHAR 9102\n00000000\n00000000\n00000000\n00000000\n00000000\n00111110\n00101000\n00101000\n00101000\n11111000\n00000000\n00000000\n00000000\nCHAR 9103\n00000000\n00000000\n00000000\n11111110\n00010000\n00101000\n01000100\n10000010\n01000100\n00101000\n00010000\n00000000\n00000000\nCHAR 9104\n00000000\n00000000\n00000000\n00010000\n00101000\n01000100\n10000010\n01000100\n00101000\n00010000\n11111110\n00000000\n00000000\nCHAR 9105\n00000000\n00000000\n00000000\n11111110\n00010000\n00101000\n01000100\n11111110\n01000100\n00101000\n00010000\n00000000\n00000000\nCHAR 9106\n00000000\n00000000\n00000000\n00010000\n00101000\n01000100\n11111110\n01000100\n00101000\n00010000\n11111110\n00000000\n00000000\nCHAR 9107\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n01111100\n00000000\n01010100\n00000000\n00000000\n00000000\n00000000\nCHAR 9108\n00000000\n00000000\n00000000\n00000000\n00111000\n01000100\n10000010\n01000100\n00111000\n00000000\n00000000\n00000000\n00000000\nCHAR 9109\n00000000\n00000000\n11111110\n10000010\n10000010\n10000010\n10000010\n10000010\n10000010\n10000010\n11111110\n00000000\n00000000\nCHAR 9110\n00000000\n00000000\n00000000\n00000000\n00111000\n00111000\n00110000\n00110000\n00100000\n00100000\n00000000\n00000000\n00000000\nCHAR 9111\n10101000\n00000000\n10111110\n00100010\n10001010\n00010010\n10111110\n00010010\n10001010\n00100010\n00111110\n00000000\n00000000\nCHAR 9112\n11111000\n10001000\n10101010\n10000000\n10010010\n10001000\n11111110\n10001000\n11010010\n00000000\n00101010\n00000000\n00000000\nCHAR 9113\n00000000\n00011000\n00111000\n00101000\n01101100\n10101010\n10101010\n10111010\n10000010\n10000010\n01111100\n00000000\n00000000\nCHAR 9114\n00000000\n00000000\n00000000\n01111100\n10010110\n10101010\n11010110\n10101010\n11010010\n01111100\n00000000\n00000000\n00000000\nCHAR 9115\n00000000\n00000100\n00001000\n00001000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\nCHAR 9116\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\nCHAR 9117\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00001000\n00001000\n00000100\n00000000\nCHAR 9118\n00000000\n00100000\n00010000\n00010000\n00001000\n00001000\n00001000\n00001000\n00001000\n00001000\n00001000\n00001000\n00001000\nCHAR 9119\n00001000\n00001000\n00001000\n00001000\n00001000\n00001000\n00001000\n00001000\n00001000\n00001000\n00001000\n00001000\n00001000\nCHAR 9120\n00001000\n00001000\n00001000\n00001000\n00001000\n00001000\n00001000\n00001000\n00001000\n00010000\n00010000\n00100000\n00000000\nCHAR 9121\n00000000\n00111100\n00100000\n00100000\n00100000\n00100000\n00100000\n00100000\n00100000\n00100000\n00100000\n00100000\n00100000\nCHAR 9122\n00100000\n00100000\n00100000\n00100000\n00100000\n00100000\n00100000\n00100000\n00100000\n00100000\n00100000\n00100000\n00100000\nCHAR 9123\n00100000\n00100000\n00100000\n00100000\n00100000\n00100000\n00100000\n00100000\n00100000\n00100000\n00100000\n00111100\n00000000\nCHAR 9124\n00000000\n01111000\n00001000\n00001000\n00001000\n00001000\n00001000\n00001000\n00001000\n00001000\n00001000\n00001000\n00001000\nCHAR 9125\n00001000\n00001000\n00001000\n00001000\n00001000\n00001000\n00001000\n00001000\n00001000\n00001000\n00001000\n00001000\n00001000\nCHAR 9126\n00001000\n00001000\n00001000\n00001000\n00001000\n00001000\n00001000\n00001000\n00001000\n00001000\n00001000\n01111000\n00000000\nCHAR 9127\n00000000\n00001110\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\nCHAR 9128\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n01100000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\nCHAR 9129\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00001110\n00000000\nCHAR 9130\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\nCHAR 9131\n00000000\n11100000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\nCHAR 9132\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00001100\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\nCHAR 9133\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n11100000\n00000000\nCHAR 9134\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\nCHAR 9135\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n11111111\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 9136\n00001100\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n01100000\nCHAR 9137\n01100000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00001100\nCHAR 9138\n00000000\n00000000\n11111110\n10000010\n10000010\n01000000\n01000000\n01000000\n00100000\n00100000\n00100000\n00010000\n00010000\nCHAR 9139\n00010000\n00010000\n00100000\n00100000\n00100000\n01000000\n01000000\n01000000\n10000010\n10000010\n11111110\n00000000\n00000000\nCHAR 9140\n00000000\n00000000\n01111110\n01000010\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 9141\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n01000010\n01111110\n00000000\n00000000\nCHAR 9142\n00000000\n00000000\n00000000\n01000010\n01111110\n00000000\n00000000\n00000000\n01111110\n01000010\n00000000\n00000000\n00000000\nCHAR 9143\n00010000\n00010000\n00010000\n00010000\n00010000\n10010000\n01010000\n01010000\n00110000\n00110000\n00010000\n00010000\n00000000\nCHAR 9144\n10000000\n10000000\n10000000\n10000000\n10000000\n10000000\n10000000\n10000000\n10000000\n10000000\n10000000\n10000000\n10000000\nCHAR 9145\n00000001\n00000001\n00000001\n00000001\n00000001\n00000001\n00000001\n00000001\n00000001\n00000001\n00000001\n00000001\n00000001\nCHAR 9146\n11111111\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 9147\n00000000\n00000000\n00000000\n11111111\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 9148\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n11111111\n00000000\n00000000\n00000000\nCHAR 9149\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n11111111\nCHAR 9150\n00000000\n00000000\n01111110\n01000000\n01000000\n01000000\n01000000\n01000000\n01000000\n01000000\n01000000\n00000000\n00000000\nCHAR 9151\n00000000\n00000000\n01000000\n01000000\n01000000\n01000000\n01000000\n01000000\n01000000\n01000000\n01111110\n00000000\n00000000\nCHAR 9152\n00000000\n00000000\n00010000\n00010000\n01111100\n10010010\n10010010\n10010010\n01111100\n00010000\n00010000\n00000000\n00000000\nCHAR 9153\n00000000\n00000000\n11111110\n00010000\n01111100\n10010010\n10010010\n10010010\n01111100\n00010000\n00010000\n00000000\n00000000\nCHAR 9154\n00000000\n00000000\n00010000\n00010000\n01111100\n10010010\n10010010\n10010010\n01111100\n00010000\n11111110\n00000000\n00000000\nCHAR 9155\n00000000\n00000000\n00010000\n00010000\n00111000\n01010100\n01010100\n10010010\n11111110\n00010000\n00010000\n00000000\n00000000\nCHAR 9156\n00000000\n00000000\n11111110\n00010000\n00010000\n00111000\n01010100\n01010100\n10010010\n11111110\n00010000\n00000000\n00000000\nCHAR 9157\n00000000\n00000000\n00010000\n00010000\n00111000\n01010100\n01010100\n10010010\n11111110\n00010000\n11111110\n00000000\n00000000\nCHAR 9158\n00000000\n00000000\n00010000\n00010000\n00010000\n00010000\n01110010\n10011100\n00010000\n00010000\n00010000\n00000000\n00000000\nCHAR 9159\n00000000\n00000000\n11111110\n00010000\n00010000\n00010000\n01110010\n10011100\n00010000\n00010000\n00010000\n00000000\n00000000\nCHAR 9160\n00000000\n00000000\n00010000\n00010000\n00010000\n00010000\n01110010\n10011100\n00010000\n00010000\n11111110\n00000000\n00000000\nCHAR 9161\n00000000\n00000000\n11111110\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00000000\n00000000\nCHAR 9162\n00000000\n00000000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n11111110\n00000000\n00000000\nCHAR 9163\n00000000\n00000000\n01111110\n00000010\n00000010\n00000010\n00000010\n00000010\n00000010\n00000010\n00000010\n00000000\n00000000\nCHAR 9164\n00000000\n00000000\n00000010\n00000010\n00000010\n00000010\n00000010\n00000010\n00000010\n00000010\n01111110\n00000000\n00000000\nCHAR 9165\n00000000\n00000000\n00001000\n01001010\n01010010\n01000010\n01000010\n01000010\n01000010\n01000010\n01111110\n00000000\n00000000\nCHAR 9166\n00000000\n00000000\n00001110\n00001010\n00001010\n00001010\n00101010\n01011010\n10000010\n01011100\n00100000\n00000000\n00000000\nCHAR 9216\n00000000\n00000000\n11000000\n10100000\n10110100\n10110100\n10110110\n00010110\n00001010\n00000010\n00000011\n00000000\n00000000\nCHAR 9217\n00000000\n00000000\n01000000\n10000000\n01010000\n01101000\n10101101\n00101101\n00010111\n00000101\n00000101\n00000000\n00000000\nCHAR 9218\n00000000\n00000000\n01000000\n10000000\n01111000\n01010000\n10010101\n00010101\n00010010\n00000101\n00000101\n00000000\n00000000\nCHAR 9219\n00000000\n00000000\n11000000\n10000000\n11111000\n10010000\n11010101\n00010101\n00010010\n00000101\n00000101\n00000000\n00000000\nCHAR 9220\n00000000\n00000000\n11000000\n10000000\n11010000\n10101000\n11101111\n00101010\n00010010\n00000010\n00000010\n00000000\n00000000\nCHAR 9221\n00000000\n00000000\n11000000\n10000000\n11110000\n10101000\n11101010\n00101101\n00101101\n00000111\n00000011\n00000000\n00000000\nCHAR 9222\n00000000\n00000000\n01000000\n10100000\n11101000\n10110000\n10110101\n00010101\n00001110\n00000101\n00000101\n00000000\n00000000\nCHAR 9223\n00000000\n00000000\n11000000\n10100000\n11011000\n10110000\n11011100\n00010100\n00011100\n00000100\n00000111\n00000000\n00000000\nCHAR 9224\n00000000\n00000000\n11100000\n10010000\n11100000\n10010000\n11100110\n00001000\n00000100\n00000010\n00001100\n00000000\n00000000\nCHAR 9225\n00000000\n00000000\n10100000\n10100000\n11100000\n10100000\n10101110\n00000100\n00000100\n00000100\n00000100\n00000000\n00000000\nCHAR 9226\n00000000\n00000000\n10000000\n10000000\n10000000\n10000000\n11101110\n00001000\n00001100\n00001000\n00001000\n00000000\n00000000\nCHAR 9227\n00000000\n00000000\n10001000\n10001000\n01010000\n01010000\n00101110\n00000100\n00000100\n00000100\n00000100\n00000000\n00000000\nCHAR 9228\n00000000\n00000000\n11100000\n10000000\n11000000\n10000000\n10001110\n00001000\n00001100\n00001000\n00001000\n00000000\n00000000\nCHAR 9229\n00000000\n00000000\n01100000\n10000000\n10000000\n10000000\n01101100\n00001010\n00001100\n00001010\n00001010\n00000000\n00000000\nCHAR 9230\n00000000\n00000000\n01100000\n10000000\n01000000\n00100000\n11000100\n00001010\n00001010\n00001010\n00000100\n00000000\n00000000\nCHAR 9231\n00000000\n00000000\n01100000\n10000000\n01000000\n00100000\n11001110\n00000100\n00000100\n00000100\n00001110\n00000000\n00000000\nCHAR 9232\n00000000\n00000000\n11000000\n10100000\n10110000\n10110000\n11010011\n00010010\n00011111\n00000010\n00000011\n00000000\n00000000\nCHAR 9233\n00000000\n00000000\n11000000\n10100000\n10101000\n10110000\n11010010\n00010010\n00001010\n00000010\n00000010\n00000000\n00000000\nCHAR 9234\n00000000\n00000000\n11000000\n10100000\n10101000\n10110000\n11010110\n00010001\n00001010\n00000100\n00000111\n00000000\n00000000\nCHAR 9235\n00000000\n00000000\n11000000\n10100000\n10101000\n10110000\n11010110\n00010001\n00001010\n00000001\n00000110\n00000000\n00000000\nCHAR 9236\n00000000\n00000000\n11000000\n10100000\n10101000\n10110000\n11010001\n00010011\n00001101\n00000111\n00000001\n00000000\n00000000\nCHAR 9237\n00000000\n00000000\n11000000\n10100000\n10110000\n10101000\n10111101\n00101101\n00101110\n00000101\n00000101\n00000000\n00000000\nCHAR 9238\n00000000\n00000000\n01000000\n10000000\n01101000\n01101000\n10010110\n00010101\n00010101\n00000101\n00000101\n00000000\n00000000\nCHAR 9239\n00000000\n00000000\n11000000\n10000000\n11111000\n10010000\n11010110\n00010101\n00010110\n00000101\n00000110\n00000000\n00000000\nCHAR 9240\n00000000\n00000000\n01000000\n10000000\n10010000\n10101000\n01111110\n00101101\n00101101\n00000101\n00000101\n00000000\n00000000\nCHAR 9241\n00000000\n00000000\n11000000\n10000000\n11000000\n10000000\n11010001\n00011011\n00010101\n00010101\n00010001\n00000000\n00000000\nCHAR 9242\n00000000\n00000000\n01000000\n10000000\n01101000\n01101000\n10101110\n00101101\n00010110\n00000101\n00000110\n00000000\n00000000\nCHAR 9243\n00000000\n00000000\n11100000\n10000000\n11001100\n10010000\n11101001\n00000110\n00011010\n00000010\n00000001\n00000000\n00000000\nCHAR 9244\n00000000\n00000000\n01110000\n01000000\n01100000\n01000000\n01000110\n00001000\n00000100\n00000010\n00001100\n00000000\n00000000\nCHAR 9245\n00000000\n00000000\n01110000\n10000000\n10110000\n10010000\n01100110\n00001000\n00000100\n00000010\n00001100\n00000000\n00000000\nCHAR 9246\n00000000\n00000000\n11100000\n10010000\n11100000\n10010000\n10010110\n00001000\n00000100\n00000010\n00001100\n00000000\n00000000\nCHAR 9247\n00000000\n00000000\n10010000\n10010000\n10010000\n10010000\n01100110\n00001000\n00000100\n00000010\n00001100\n00000000\n00000000\nCHAR 9248\n00000000\n00000000\n01100000\n10000000\n01000000\n00100000\n11001100\n00001010\n00001100\n00001000\n00001000\n00000000\n00000000\nCHAR 9249\n00000000\n00000000\n11000000\n10100000\n10111000\n10110000\n11011100\n00010100\n00011100\n00000100\n00000111\n00000000\n00000000\nCHAR 9250\n00000000\n00000000\n01010000\n01100000\n01000000\n11011100\n01100010\n01000010\n01000010\n01100010\n01011100\n00000000\n00000000\nCHAR 9251\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n01000010\n01111110\n00000000\n00000000\nCHAR 9252\n00000000\n00000000\n11000000\n10100000\n10100000\n10100000\n10101000\n00001000\n00001000\n00001000\n00001110\n00000000\n00000000\nCHAR 9253\n00000000\n00000000\n00000000\n00100100\n00100100\n01001000\n01001000\n00010010\n00010010\n00100100\n00100100\n00000000\n00000000\nCHAR 9254\n00000000\n00000000\n00111100\n01000010\n01000010\n01000000\n00100000\n00010000\n00010000\n00000000\n00010000\n00000000\n00000000\nCHAR 9280\n00000000\n00000000\n00011110\n00010010\n00010010\n00010010\n00010000\n10010000\n10010000\n10010000\n11110000\n00000000\n00000000\nCHAR 9281\n00000000\n00000000\n00000010\n00000010\n00000010\n00000010\n01111110\n01000010\n01000010\n01000010\n01000010\n00000000\n00000000\nCHAR 9282\n00000000\n00000000\n10000010\n10000010\n10000010\n10000010\n11111110\n00010000\n00010000\n00010000\n00010000\n00000000\n00000000\nCHAR 9283\n00000000\n00000000\n00010000\n00010000\n00010000\n00010000\n11111110\n10000010\n10000010\n10000010\n10000010\n00000000\n00000000\nCHAR 9284\n00000000\n00000000\n11111110\n10010010\n10010010\n00010000\n00010000\n00010000\n10010010\n10010010\n11111110\n00000000\n00000000\nCHAR 9285\n00000000\n00000000\n10000010\n11000110\n10101010\n10010010\n10101010\n11000110\n10000010\n00000000\n00000000\n00000000\n00000000\nCHAR 9286\n00000000\n00000000\n00000000\n00000110\n00000110\n01100110\n01100000\n01100000\n01100110\n00000110\n00000110\n00000000\n00000000\nCHAR 9287\n00000000\n00000000\n00000110\n00000110\n00000110\n00010000\n00010000\n00010000\n11000000\n11000000\n11000000\n00000000\n00000000\nCHAR 9288\n00000000\n00000000\n00000000\n00000110\n01010110\n01010110\n01010110\n01010000\n01010000\n00000000\n00000000\n00000000\n00000000\nCHAR 9289\n00000000\n00000000\n00000000\n00000000\n10010010\n10010010\n10010010\n10010010\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 9290\n00000000\n00000000\n00000000\n01001000\n01001000\n01001000\n00100100\n00100100\n00010010\n00010010\n00010010\n00000000\n00000000\nCHAR 9472\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n11111111\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 9473\n00000000\n00000000\n00000000\n00000000\n00000000\n11111111\n11111111\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 9474\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\nCHAR 9475\n00011000\n00011000\n00011000\n00011000\n00011000\n00011000\n00011000\n00011000\n00011000\n00011000\n00011000\n00011000\n00011000\nCHAR 9476\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n11011011\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 9477\n00000000\n00000000\n00000000\n00000000\n00000000\n11011011\n11011011\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 9478\n00010000\n00010000\n00010000\n00010000\n00000000\n00010000\n00010000\n00010000\n00000000\n00010000\n00010000\n00010000\n00010000\nCHAR 9479\n00011000\n00011000\n00011000\n00011000\n00000000\n00011000\n00011000\n00011000\n00000000\n00011000\n00011000\n00011000\n00011000\nCHAR 9480\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n10100101\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 9481\n00000000\n00000000\n00000000\n00000000\n00000000\n10100101\n10100101\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 9482\n00010000\n00010000\n00000000\n00010000\n00010000\n00010000\n00000000\n00010000\n00010000\n00010000\n00000000\n00010000\n00010000\nCHAR 9483\n00011000\n00011000\n00000000\n00011000\n00011000\n00011000\n00000000\n00011000\n00011000\n00011000\n00000000\n00011000\n00011000\nCHAR 9484\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00011111\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\nCHAR 9485\n00000000\n00000000\n00000000\n00000000\n00000000\n00011111\n00011111\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\nCHAR 9486\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00011111\n00011000\n00011000\n00011000\n00011000\n00011000\n00011000\nCHAR 9487\n00000000\n00000000\n00000000\n00000000\n00000000\n00011111\n00011111\n00011000\n00011000\n00011000\n00011000\n00011000\n00011000\nCHAR 9488\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n11110000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\nCHAR 9489\n00000000\n00000000\n00000000\n00000000\n00000000\n11110000\n11110000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\nCHAR 9490\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n11111000\n00011000\n00011000\n00011000\n00011000\n00011000\n00011000\nCHAR 9491\n00000000\n00000000\n00000000\n00000000\n00000000\n11111000\n11111000\n00011000\n00011000\n00011000\n00011000\n00011000\n00011000\nCHAR 9492\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00011111\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 9493\n00010000\n00010000\n00010000\n00010000\n00010000\n00011111\n00011111\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 9494\n00011000\n00011000\n00011000\n00011000\n00011000\n00011000\n00011111\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 9495\n00011000\n00011000\n00011000\n00011000\n00011000\n00011111\n00011111\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 9496\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n11110000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 9497\n00010000\n00010000\n00010000\n00010000\n00010000\n11110000\n11110000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 9498\n00011000\n00011000\n00011000\n00011000\n00011000\n00011000\n11111000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 9499\n00011000\n00011000\n00011000\n00011000\n00011000\n11111000\n11111000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 9500\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00011111\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\nCHAR 9501\n00010000\n00010000\n00010000\n00010000\n00010000\n00011111\n00011111\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\nCHAR 9502\n00011000\n00011000\n00011000\n00011000\n00011000\n00011000\n00011111\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\nCHAR 9503\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00011111\n00011000\n00011000\n00011000\n00011000\n00011000\n00011000\nCHAR 9504\n00011000\n00011000\n00011000\n00011000\n00011000\n00011000\n00011111\n00011000\n00011000\n00011000\n00011000\n00011000\n00011000\nCHAR 9505\n00011000\n00011000\n00011000\n00011000\n00011000\n00011111\n00011111\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\nCHAR 9506\n00010000\n00010000\n00010000\n00010000\n00010000\n00011111\n00011111\n00011000\n00011000\n00011000\n00011000\n00011000\n00011000\nCHAR 9507\n00011000\n00011000\n00011000\n00011000\n00011000\n00011111\n00011111\n00011000\n00011000\n00011000\n00011000\n00011000\n00011000\nCHAR 9508\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n11110000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\nCHAR 9509\n00010000\n00010000\n00010000\n00010000\n00010000\n11110000\n11110000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\nCHAR 9510\n00011000\n00011000\n00011000\n00011000\n00011000\n00011000\n11110000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\nCHAR 9511\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n11111000\n00011000\n00011000\n00011000\n00011000\n00011000\n00011000\nCHAR 9512\n00011000\n00011000\n00011000\n00011000\n00011000\n00011000\n11111000\n00011000\n00011000\n00011000\n00011000\n00011000\n00011000\nCHAR 9513\n00011000\n00011000\n00011000\n00011000\n00011000\n11111000\n11110000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\nCHAR 9514\n00010000\n00010000\n00010000\n00010000\n00010000\n11110000\n11111000\n00011000\n00011000\n00011000\n00011000\n00011000\n00011000\nCHAR 9515\n00011000\n00011000\n00011000\n00011000\n00011000\n11111000\n11111000\n00011000\n00011000\n00011000\n00011000\n00011000\n00011000\nCHAR 9516\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n11111111\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\nCHAR 9517\n00000000\n00000000\n00000000\n00000000\n00000000\n11110000\n11111111\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\nCHAR 9518\n00000000\n00000000\n00000000\n00000000\n00000000\n00001111\n11111111\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\nCHAR 9519\n00000000\n00000000\n00000000\n00000000\n00000000\n11111111\n11111111\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\nCHAR 9520\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n11111111\n00011000\n00011000\n00011000\n00011000\n00011000\n00011000\nCHAR 9521\n00000000\n00000000\n00000000\n00000000\n00000000\n11110000\n11111111\n00011000\n00011000\n00011000\n00011000\n00011000\n00011000\nCHAR 9522\n00000000\n00000000\n00000000\n00000000\n00000000\n00001111\n11111111\n00011000\n00011000\n00011000\n00011000\n00011000\n00011000\nCHAR 9523\n00000000\n00000000\n00000000\n00000000\n00000000\n11111111\n11111111\n00011000\n00011000\n00011000\n00011000\n00011000\n00011000\nCHAR 9524\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n11111111\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 9525\n00010000\n00010000\n00010000\n00010000\n00010000\n11110000\n11111111\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 9526\n00010000\n00010000\n00010000\n00010000\n00010000\n00011111\n11111111\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 9527\n00010000\n00010000\n00010000\n00010000\n00010000\n11111111\n11111111\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 9528\n00011000\n00011000\n00011000\n00011000\n00011000\n00011000\n11111111\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 9529\n00011000\n00011000\n00011000\n00011000\n00011000\n11111000\n11111111\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 9530\n00011000\n00011000\n00011000\n00011000\n00011000\n00011111\n11111111\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 9531\n00011000\n00011000\n00011000\n00011000\n00011000\n11111111\n11111111\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 9532\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n11111111\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\nCHAR 9533\n00010000\n00010000\n00010000\n00010000\n00010000\n11110000\n11111111\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\nCHAR 9534\n00010000\n00010000\n00010000\n00010000\n00010000\n00011111\n11111111\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\nCHAR 9535\n00010000\n00010000\n00010000\n00010000\n00010000\n11111111\n11111111\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\nCHAR 9536\n00011000\n00011000\n00011000\n00011000\n00011000\n00011000\n11111111\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\nCHAR 9537\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n11111111\n00011000\n00011000\n00011000\n00011000\n00011000\n00011000\nCHAR 9538\n00011000\n00011000\n00011000\n00011000\n00011000\n00011000\n11111111\n00011000\n00011000\n00011000\n00011000\n00011000\n00011000\nCHAR 9539\n00011000\n00011000\n00011000\n00011000\n00011000\n11111000\n11111111\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\nCHAR 9540\n00011000\n00011000\n00011000\n00011000\n00011000\n00011111\n11111111\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\nCHAR 9541\n00010000\n00010000\n00010000\n00010000\n00010000\n11110000\n11111111\n00011000\n00011000\n00011000\n00011000\n00011000\n00011000\nCHAR 9542\n00010000\n00010000\n00010000\n00010000\n00010000\n00011111\n11111111\n00011000\n00011000\n00011000\n00011000\n00011000\n00011000\nCHAR 9543\n00011000\n00011000\n00011000\n00011000\n00011000\n11111111\n11111111\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\nCHAR 9544\n00010000\n00010000\n00010000\n00010000\n00010000\n11111111\n11111111\n00011000\n00011000\n00011000\n00011000\n00011000\n00011000\nCHAR 9545\n00011000\n00011000\n00011000\n00011000\n00011000\n11111000\n11111111\n00011000\n00011000\n00011000\n00011000\n00011000\n00011000\nCHAR 9546\n00011000\n00011000\n00011000\n00011000\n00011000\n00011111\n11111111\n00011000\n00011000\n00011000\n00011000\n00011000\n00011000\nCHAR 9547\n00011000\n00011000\n00011000\n00011000\n00011000\n11111111\n11111111\n00011000\n00011000\n00011000\n00011000\n00011000\n00011000\nCHAR 9548\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n11110111\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 9549\n00000000\n00000000\n00000000\n00000000\n00000000\n11110111\n11110111\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 9550\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00000000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\nCHAR 9551\n00011000\n00011000\n00011000\n00011000\n00011000\n00011000\n00000000\n00011000\n00011000\n00011000\n00011000\n00011000\n00011000\nCHAR 9552\n00000000\n00000000\n00000000\n00000000\n00000000\n11111111\n00000000\n11111111\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 9553\n00101000\n00101000\n00101000\n00101000\n00101000\n00101000\n00101000\n00101000\n00101000\n00101000\n00101000\n00101000\n00101000\nCHAR 9554\n00000000\n00000000\n00000000\n00000000\n00000000\n00011111\n00010000\n00011111\n00010000\n00010000\n00010000\n00010000\n00010000\nCHAR 9555\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00111111\n00101000\n00101000\n00101000\n00101000\n00101000\n00101000\nCHAR 9556\n00000000\n00000000\n00000000\n00000000\n00000000\n00111111\n00100000\n00101111\n00101000\n00101000\n00101000\n00101000\n00101000\nCHAR 9557\n00000000\n00000000\n00000000\n00000000\n00000000\n11110000\n00010000\n11110000\n00010000\n00010000\n00010000\n00010000\n00010000\nCHAR 9558\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n11111000\n00101000\n00101000\n00101000\n00101000\n00101000\n00101000\nCHAR 9559\n00000000\n00000000\n00000000\n00000000\n00000000\n11111000\n00001000\n11101000\n00101000\n00101000\n00101000\n00101000\n00101000\nCHAR 9560\n00010000\n00010000\n00010000\n00010000\n00010000\n00011111\n00010000\n00011111\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 9561\n00101000\n00101000\n00101000\n00101000\n00101000\n00101000\n00111111\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 9562\n00101000\n00101000\n00101000\n00101000\n00101000\n00101111\n00100000\n00111111\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 9563\n00010000\n00010000\n00010000\n00010000\n00010000\n11110000\n00010000\n11110000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 9564\n00101000\n00101000\n00101000\n00101000\n00101000\n00101000\n11111000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 9565\n00101000\n00101000\n00101000\n00101000\n00101000\n11101000\n00001000\n11111000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 9566\n00010000\n00010000\n00010000\n00010000\n00010000\n00011111\n00010000\n00011111\n00010000\n00010000\n00010000\n00010000\n00010000\nCHAR 9567\n00101000\n00101000\n00101000\n00101000\n00101000\n00101000\n00101111\n00101000\n00101000\n00101000\n00101000\n00101000\n00101000\nCHAR 9568\n00101000\n00101000\n00101000\n00101000\n00101000\n00101111\n00100000\n00101111\n00101000\n00101000\n00101000\n00101000\n00101000\nCHAR 9569\n00010000\n00010000\n00010000\n00010000\n00010000\n11110000\n00010000\n11110000\n00010000\n00010000\n00010000\n00010000\n00010000\nCHAR 9570\n00101000\n00101000\n00101000\n00101000\n00101000\n00101000\n11101000\n00101000\n00101000\n00101000\n00101000\n00101000\n00101000\nCHAR 9571\n00101000\n00101000\n00101000\n00101000\n00101000\n11101000\n00001000\n11101000\n00101000\n00101000\n00101000\n00101000\n00101000\nCHAR 9572\n00000000\n00000000\n00000000\n00000000\n00000000\n11111111\n00000000\n11111111\n00010000\n00010000\n00010000\n00010000\n00010000\nCHAR 9573\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n11111111\n00101000\n00101000\n00101000\n00101000\n00101000\n00101000\nCHAR 9574\n00000000\n00000000\n00000000\n00000000\n00000000\n11111111\n00000000\n11101111\n00101000\n00101000\n00101000\n00101000\n00101000\nCHAR 9575\n00010000\n00010000\n00010000\n00010000\n00010000\n11111111\n00000000\n11111111\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 9576\n00101000\n00101000\n00101000\n00101000\n00101000\n00101000\n11111111\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 9577\n00101000\n00101000\n00101000\n00101000\n00101000\n11101111\n00000000\n11111111\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 9578\n00010000\n00010000\n00010000\n00010000\n00010000\n11111111\n00010000\n11111111\n00010000\n00010000\n00010000\n00010000\n00010000\nCHAR 9579\n00101000\n00101000\n00101000\n00101000\n00101000\n00101000\n11111111\n00101000\n00101000\n00101000\n00101000\n00101000\n00101000\nCHAR 9580\n00101000\n00101000\n00101000\n00101000\n00101000\n11101111\n00000000\n11101111\n00101000\n00101000\n00101000\n00101000\n00101000\nCHAR 9581\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000111\n00001000\n00010000\n00010000\n00010000\n00010000\n00010000\nCHAR 9582\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n11000000\n00100000\n00010000\n00010000\n00010000\n00010000\n00010000\nCHAR 9583\n00010000\n00010000\n00010000\n00010000\n00010000\n00100000\n11000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 9584\n00010000\n00010000\n00010000\n00010000\n00010000\n00001000\n00000111\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 9585\n00000001\n00000010\n00000010\n00000100\n00000100\n00001000\n00010000\n00010000\n00100000\n00100000\n01000000\n01000000\n10000000\nCHAR 9586\n10000000\n01000000\n01000000\n00100000\n00100000\n00010000\n00001000\n00001000\n00000100\n00000100\n00000010\n00000010\n00000001\nCHAR 9587\n10000001\n01000010\n01000010\n00100100\n00100100\n00011000\n00011000\n00011000\n00100100\n00100100\n01000010\n01000010\n10000001\nCHAR 9588\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n11110000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 9589\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 9590\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00001111\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 9591\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\nCHAR 9592\n00000000\n00000000\n00000000\n00000000\n00000000\n11110000\n11110000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 9593\n00011000\n00011000\n00011000\n00011000\n00011000\n00011000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 9594\n00000000\n00000000\n00000000\n00000000\n00000000\n00001111\n00001111\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 9595\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00011000\n00011000\n00011000\n00011000\n00011000\n00011000\n00011000\nCHAR 9596\n00000000\n00000000\n00000000\n00000000\n00000000\n00001111\n11111111\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 9597\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00011000\n00011000\n00011000\n00011000\n00011000\n00011000\n00011000\nCHAR 9598\n00000000\n00000000\n00000000\n00000000\n00000000\n11110000\n11111111\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 9599\n00011000\n00011000\n00011000\n00011000\n00011000\n00011000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\nCHAR 9600\n11111111\n11111111\n11111111\n11111111\n11111111\n11111111\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 9601\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n11111111\n11111111\nCHAR 9602\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n11111111\n11111111\n11111111\nCHAR 9603\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n11111111\n11111111\n11111111\n11111111\n11111111\nCHAR 9604\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n11111111\n11111111\n11111111\n11111111\n11111111\n11111111\n11111111\nCHAR 9605\n00000000\n00000000\n00000000\n00000000\n00000000\n11111111\n11111111\n11111111\n11111111\n11111111\n11111111\n11111111\n11111111\nCHAR 9606\n00000000\n00000000\n00000000\n11111111\n11111111\n11111111\n11111111\n11111111\n11111111\n11111111\n11111111\n11111111\n11111111\nCHAR 9607\n00000000\n00000000\n11111111\n11111111\n11111111\n11111111\n11111111\n11111111\n11111111\n11111111\n11111111\n11111111\n11111111\nCHAR 9608\n11111111\n11111111\n11111111\n11111111\n11111111\n11111111\n11111111\n11111111\n11111111\n11111111\n11111111\n11111111\n11111111\nCHAR 9609\n11111110\n11111110\n11111110\n11111110\n11111110\n11111110\n11111110\n11111110\n11111110\n11111110\n11111110\n11111110\n11111110\nCHAR 9610\n11111100\n11111100\n11111100\n11111100\n11111100\n11111100\n11111100\n11111100\n11111100\n11111100\n11111100\n11111100\n11111100\nCHAR 9611\n11111000\n11111000\n11111000\n11111000\n11111000\n11111000\n11111000\n11111000\n11111000\n11111000\n11111000\n11111000\n11111000\nCHAR 9612\n11110000\n11110000\n11110000\n11110000\n11110000\n11110000\n11110000\n11110000\n11110000\n11110000\n11110000\n11110000\n11110000\nCHAR 9613\n11100000\n11100000\n11100000\n11100000\n11100000\n11100000\n11100000\n11100000\n11100000\n11100000\n11100000\n11100000\n11100000\nCHAR 9614\n11000000\n11000000\n11000000\n11000000\n11000000\n11000000\n11000000\n11000000\n11000000\n11000000\n11000000\n11000000\n11000000\nCHAR 9615\n10000000\n10000000\n10000000\n10000000\n10000000\n10000000\n10000000\n10000000\n10000000\n10000000\n10000000\n10000000\n10000000\nCHAR 9616\n00001111\n00001111\n00001111\n00001111\n00001111\n00001111\n00001111\n00001111\n00001111\n00001111\n00001111\n00001111\n00001111\nCHAR 9617\n00000000\n01010101\n00000000\n10101010\n00000000\n01010101\n00000000\n10101010\n00000000\n01010101\n00000000\n10101010\n00000000\nCHAR 9618\n10101010\n01010101\n10101010\n01010101\n10101010\n01010101\n10101010\n01010101\n10101010\n01010101\n10101010\n01010101\n10101010\nCHAR 9619\n11111111\n01010101\n11111111\n10101010\n11111111\n01010101\n11111111\n10101010\n11111111\n01010101\n11111111\n10101010\n11111111\nCHAR 9620\n11111111\n11111111\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 9621\n00000001\n00000001\n00000001\n00000001\n00000001\n00000001\n00000001\n00000001\n00000001\n00000001\n00000001\n00000001\n00000001\nCHAR 9622\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n11110000\n11110000\n11110000\n11110000\n11110000\n11110000\n11110000\nCHAR 9623\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00001111\n00001111\n00001111\n00001111\n00001111\n00001111\n00001111\nCHAR 9624\n11110000\n11110000\n11110000\n11110000\n11110000\n11110000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 9625\n11110000\n11110000\n11110000\n11110000\n11110000\n11110000\n11111111\n11111111\n11111111\n11111111\n11111111\n11111111\n11111111\nCHAR 9626\n11110000\n11110000\n11110000\n11110000\n11110000\n11110000\n00001111\n00001111\n00001111\n00001111\n00001111\n00001111\n00001111\nCHAR 9627\n11111111\n11111111\n11111111\n11111111\n11111111\n11111111\n11110000\n11110000\n11110000\n11110000\n11110000\n11110000\n11110000\nCHAR 9628\n11111111\n11111111\n11111111\n11111111\n11111111\n11111111\n00001111\n00001111\n00001111\n00001111\n00001111\n00001111\n00001111\nCHAR 9629\n00001111\n00001111\n00001111\n00001111\n00001111\n00001111\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 9630\n00001111\n00001111\n00001111\n00001111\n00001111\n00001111\n11110000\n11110000\n11110000\n11110000\n11110000\n11110000\n11110000\nCHAR 9631\n00001111\n00001111\n00001111\n00001111\n00001111\n00001111\n11111111\n11111111\n11111111\n11111111\n11111111\n11111111\n11111111\nCHAR 9632\n00000000\n00000000\n00000000\n00000000\n11111110\n11111110\n11111110\n11111110\n11111110\n11111110\n11111110\n00000000\n00000000\nCHAR 9633\n00000000\n00000000\n00000000\n00000000\n11111110\n10000010\n10000010\n10000010\n10000010\n10000010\n11111110\n00000000\n00000000\nCHAR 9634\n00000000\n00000000\n00000000\n00000000\n01111100\n10000010\n10000010\n10000010\n10000010\n10000010\n01111100\n00000000\n00000000\nCHAR 9635\n00000000\n00000000\n00000000\n00000000\n11111110\n10000010\n10111010\n10111010\n10111010\n10000010\n11111110\n00000000\n00000000\nCHAR 9636\n00000000\n00000000\n00000000\n00000000\n11111110\n10000010\n11111110\n10000010\n11111110\n10000010\n11111110\n00000000\n00000000\nCHAR 9637\n00000000\n00000000\n00000000\n00000000\n11111110\n10101010\n10101010\n10101010\n10101010\n10101010\n11111110\n00000000\n00000000\nCHAR 9638\n00000000\n00000000\n00000000\n00000000\n11111110\n10101010\n11111110\n10101010\n11111110\n10101010\n11111110\n00000000\n00000000\nCHAR 9639\n00000000\n00000000\n00000000\n00000000\n11111110\n10010010\n10001010\n11000110\n10100010\n10010010\n11111110\n00000000\n00000000\nCHAR 9640\n00000000\n00000000\n00000000\n00000000\n11111110\n10010010\n10100010\n11000110\n10001010\n10010010\n11111110\n00000000\n00000000\nCHAR 9641\n00000000\n00000000\n00000000\n00000000\n11111110\n11010110\n10101010\n11010110\n10101010\n11010110\n11111110\n00000000\n00000000\nCHAR 9642\n00000000\n00000000\n00000000\n00000000\n00000000\n00111000\n00111000\n00111000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 9643\n00000000\n00000000\n00000000\n00000000\n00000000\n00111000\n00101000\n00111000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 9644\n00000000\n00000000\n00000000\n00000000\n01111110\n01111110\n01111110\n01111110\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 9645\n00000000\n00000000\n00000000\n00000000\n01111110\n01000010\n01000010\n01111110\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 9646\n00000000\n00000000\n01111100\n01111100\n01111100\n01111100\n01111100\n01111100\n01111100\n01111100\n01111100\n00000000\n00000000\nCHAR 9647\n00000000\n00000000\n01111100\n01000100\n01000100\n01000100\n01000100\n01000100\n01000100\n01000100\n01111100\n00000000\n00000000\nCHAR 9648\n00000000\n00000000\n00000000\n00000000\n00011111\n00111110\n01111100\n11111000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 9649\n00000000\n00000000\n00000000\n00000000\n00011111\n00100010\n01000100\n11111000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 9650\n00000000\n00000000\n00000000\n00011000\n00011000\n00111100\n00111100\n01111110\n01111110\n11111111\n11111111\n00000000\n00000000\nCHAR 9651\n00000000\n00000000\n00000000\n00011000\n00011000\n00100100\n00100100\n01000010\n01000010\n10000001\n11111111\n00000000\n00000000\nCHAR 9652\n00000000\n00000000\n00000000\n00000000\n00000000\n00011000\n00011000\n00111100\n00111100\n01111110\n01111110\n00000000\n00000000\nCHAR 9653\n00000000\n00000000\n00000000\n00000000\n00000000\n00011000\n00011000\n00100100\n00100100\n01000010\n01111110\n00000000\n00000000\nCHAR 9654\n01000000\n01100000\n01110000\n01111000\n01111100\n01111110\n01111100\n01111000\n01110000\n01100000\n01000000\n00000000\n00000000\nCHAR 9655\n01000000\n01100000\n01010000\n01001000\n01000100\n01000010\n01000100\n01001000\n01010000\n01100000\n01000000\n00000000\n00000000\nCHAR 9656\n00000000\n00000000\n00000000\n00000000\n01100000\n01111000\n01111110\n01111000\n01100000\n00000000\n00000000\n00000000\n00000000\nCHAR 9657\n00000000\n00000000\n00000000\n00000000\n01100000\n01011000\n01000110\n01011000\n01100000\n00000000\n00000000\n00000000\n00000000\nCHAR 9658\n00000000\n00000000\n00000000\n10000000\n11100000\n11111000\n11111110\n11111000\n11100000\n10000000\n00000000\n00000000\n00000000\nCHAR 9659\n00000000\n00000000\n00000000\n10000000\n11100000\n10011000\n10000110\n10011000\n11100000\n10000000\n00000000\n00000000\n00000000\nCHAR 9660\n00000000\n00000000\n00000000\n11111111\n11111111\n01111110\n01111110\n00111100\n00111100\n00011000\n00011000\n00000000\n00000000\nCHAR 9661\n00000000\n00000000\n00000000\n11111111\n10000001\n01000010\n01000010\n00100100\n00100100\n00011000\n00011000\n00000000\n00000000\nCHAR 9662\n00000000\n00000000\n00000000\n00000000\n00000000\n01111110\n01111110\n00111100\n00111100\n00011000\n00011000\n00000000\n00000000\nCHAR 9663\n00000000\n00000000\n00000000\n00000000\n00000000\n01111110\n01000010\n00100100\n00100100\n00011000\n00011000\n00000000\n00000000\nCHAR 9664\n00000010\n00000110\n00001110\n00011110\n00111110\n01111110\n00111110\n00011110\n00001110\n00000110\n00000010\n00000000\n00000000\nCHAR 9665\n00000010\n00000110\n00001010\n00010010\n00100010\n01000010\n00100010\n00010010\n00001010\n00000110\n00000010\n00000000\n00000000\nCHAR 9666\n00000000\n00000000\n00000000\n00000000\n00000110\n00011110\n01111110\n00011110\n00000110\n00000000\n00000000\n00000000\n00000000\nCHAR 9667\n00000000\n00000000\n00000000\n00000000\n00000110\n00011010\n01100010\n00011010\n00000110\n00000000\n00000000\n00000000\n00000000\nCHAR 9668\n00000000\n00000000\n00000000\n00000010\n00001110\n00111110\n11111110\n00111110\n00001110\n00000010\n00000000\n00000000\n00000000\nCHAR 9669\n00000000\n00000000\n00000000\n00000010\n00001110\n00110010\n11000010\n00110010\n00001110\n00000010\n00000000\n00000000\n00000000\nCHAR 9670\n00000000\n00000000\n00000000\n00010000\n00111000\n01111100\n11111110\n01111100\n00111000\n00010000\n00000000\n00000000\n00000000\nCHAR 9671\n00000000\n00000000\n00000000\n00010000\n00101000\n01000100\n10000010\n01000100\n00101000\n00010000\n00000000\n00000000\n00000000\nCHAR 9672\n00000000\n00000000\n00000000\n00010000\n00101000\n01010100\n10111010\n01010100\n00101000\n00010000\n00000000\n00000000\n00000000\nCHAR 9673\n00000000\n00000000\n00000000\n00111000\n01000100\n10010010\n10111010\n10010010\n01000100\n00111000\n00000000\n00000000\n00000000\nCHAR 9674\n00000000\n00000000\n00011000\n00011000\n00100100\n00100100\n01000010\n00100100\n00100100\n00011000\n00011000\n00000000\n00000000\nCHAR 9675\n00000000\n00000000\n00000000\n00111100\n01000010\n10000001\n10000001\n10000001\n10000001\n01000010\n00111100\n00000000\n00000000\nCHAR 9676\n00000000\n00000000\n00000000\n00011000\n01000010\n00000000\n10000001\n10000001\n00000000\n01000010\n00011000\n00000000\n00000000\nCHAR 9677\n00000000\n00000000\n00000000\n00111100\n01101010\n10101011\n10101011\n10101011\n10101011\n01101010\n00111100\n00000000\n00000000\nCHAR 9678\n00000000\n00000000\n00000000\n00111100\n01000010\n10011001\n10100101\n10100101\n10011001\n01000010\n00111100\n00000000\n00000000\nCHAR 9679\n00000000\n00000000\n00000000\n00111100\n01111110\n11111111\n11111111\n11111111\n11111111\n01111110\n00111100\n00000000\n00000000\nCHAR 9680\n00000000\n00000000\n00000000\n00111100\n01110010\n11110001\n11110001\n11110001\n11110001\n01110010\n00111100\n00000000\n00000000\nCHAR 9681\n00000000\n00000000\n00000000\n00111100\n01001110\n10001111\n10001111\n10001111\n10001111\n01001110\n00111100\n00000000\n00000000\nCHAR 9682\n00000000\n00000000\n00000000\n00111100\n01000010\n10000001\n10000001\n11111111\n11111111\n01111110\n00111100\n00000000\n00000000\nCHAR 9683\n00000000\n00000000\n00000000\n00111100\n01111110\n11111111\n11111111\n10000001\n10000001\n01000010\n00111100\n00000000\n00000000\nCHAR 9684\n00000000\n00000000\n00000000\n00111100\n01001110\n10001111\n10001111\n10000001\n10000001\n01000010\n00111100\n00000000\n00000000\nCHAR 9685\n00000000\n00000000\n00000000\n00111100\n01001110\n10001111\n10001111\n11111111\n11111111\n01111110\n00111100\n00000000\n00000000\nCHAR 9686\n00000000\n00000000\n00000000\n00110000\n01110000\n11110000\n11110000\n11110000\n11110000\n01110000\n00110000\n00000000\n00000000\nCHAR 9687\n00000000\n00000000\n00000000\n00001100\n00001110\n00001111\n00001111\n00001111\n00001111\n00001110\n00001100\n00000000\n00000000\nCHAR 9688\n11111111\n11111111\n11111111\n11111111\n11000011\n10000001\n10000001\n10000001\n10000001\n11000011\n11111111\n11111111\n11111111\nCHAR 9689\n11111111\n11111111\n11111111\n11111111\n11000011\n10011001\n10111101\n10111101\n10011001\n11000011\n11111111\n11111111\n11111111\nCHAR 9690\n11111111\n11111111\n11111111\n11111111\n11000011\n10011001\n10111101\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 9691\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n10111101\n10011001\n11000011\n11111111\n11111111\n11111111\nCHAR 9692\n00000000\n00000000\n00000000\n00110000\n01000000\n10000000\n10000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 9693\n00000000\n00000000\n00000000\n00001100\n00000010\n00000001\n00000001\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 9694\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000001\n00000001\n00000010\n00001100\n00000000\n00000000\nCHAR 9695\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n10000000\n10000000\n01000000\n00110000\n00000000\n00000000\nCHAR 9696\n00000000\n00000000\n00000000\n00111100\n01000010\n10000001\n10000001\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 9697\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n10000001\n10000001\n01000010\n00111100\n00000000\n00000000\nCHAR 9698\n00000000\n00000000\n00000000\n00000001\n00000011\n00000111\n00001111\n00011111\n00111111\n01111111\n11111111\n00000000\n00000000\nCHAR 9699\n00000000\n00000000\n00000000\n10000000\n11000000\n11100000\n11110000\n11111000\n11111100\n11111110\n11111111\n00000000\n00000000\nCHAR 9700\n00000000\n00000000\n00000000\n11111111\n11111110\n11111100\n11111000\n11110000\n11100000\n11000000\n10000000\n00000000\n00000000\nCHAR 9701\n00000000\n00000000\n00000000\n11111111\n01111111\n00111111\n00011111\n00001111\n00000111\n00000011\n00000001\n00000000\n00000000\nCHAR 9702\n00000000\n00000000\n00000000\n00000000\n00111000\n01000100\n01000100\n01000100\n00111000\n00000000\n00000000\n00000000\n00000000\nCHAR 9703\n00000000\n00000000\n00000000\n11111110\n11100010\n11100010\n11100010\n11100010\n11100010\n11100010\n11111110\n00000000\n00000000\nCHAR 9704\n00000000\n00000000\n00000000\n11111110\n10001110\n10001110\n10001110\n10001110\n10001110\n10001110\n11111110\n00000000\n00000000\nCHAR 9705\n00000000\n00000000\n00000000\n11111110\n11111110\n11111010\n11110010\n11100010\n11000010\n10000010\n11111110\n00000000\n00000000\nCHAR 9706\n00000000\n00000000\n00000000\n11111110\n10000010\n10000110\n10001110\n10011110\n10111110\n11111110\n11111110\n00000000\n00000000\nCHAR 9707\n00000000\n00000000\n00000000\n11111110\n10010010\n10010010\n10010010\n10010010\n10010010\n10010010\n11111110\n00000000\n00000000\nCHAR 9708\n00000000\n00010000\n00010000\n00101000\n00101000\n01000100\n01010100\n01111100\n10010010\n10000010\n11111110\n00000000\n00000000\nCHAR 9709\n00000000\n00010000\n00010000\n00111000\n00111000\n01110100\n01110100\n01110100\n11110010\n11110010\n11111110\n00000000\n00000000\nCHAR 9710\n00000000\n00010000\n00010000\n00111000\n00111000\n01011100\n01011100\n01011100\n10011110\n10011110\n11111110\n00000000\n00000000\nCHAR 9711\n00000000\n00000000\n00000000\n00111100\n01000010\n10000001\n10000001\n10000001\n10000001\n01000010\n00111100\n00000000\n00000000\nCHAR 9712\n00000000\n00000000\n00000000\n00000000\n11111110\n10010010\n10010010\n11110010\n10000010\n10000010\n11111110\n00000000\n00000000\nCHAR 9713\n00000000\n00000000\n00000000\n00000000\n11111110\n10000010\n10000010\n11110010\n10010010\n10010010\n11111110\n00000000\n00000000\nCHAR 9714\n00000000\n00000000\n00000000\n00000000\n11111110\n10000010\n10000010\n10011110\n10010010\n10010010\n11111110\n00000000\n00000000\nCHAR 9715\n00000000\n00000000\n00000000\n00000000\n11111110\n10010010\n10010010\n10011110\n10000010\n10000010\n11111110\n00000000\n00000000\nCHAR 9716\n00000000\n00000000\n00000000\n00000000\n01111100\n10010010\n10010010\n11110010\n10000010\n10000010\n01111100\n00000000\n00000000\nCHAR 9717\n00000000\n00000000\n00000000\n00000000\n01111100\n10000010\n10000010\n11110010\n10010010\n10010010\n01111100\n00000000\n00000000\nCHAR 9718\n00000000\n00000000\n00000000\n00000000\n01111100\n10000010\n10000010\n10011110\n10010010\n10010010\n01111100\n00000000\n00000000\nCHAR 9719\n00000000\n00000000\n00000000\n00000000\n01111100\n10010010\n10010010\n10011110\n10000010\n10000010\n01111100\n00000000\n00000000\nCHAR 9720\n00000000\n00000000\n00000000\n00000000\n01111110\n01000100\n01001000\n01010000\n01100000\n01000000\n00000000\n00000000\n00000000\nCHAR 9721\n00000000\n00000000\n00000000\n00000000\n01111110\n00100010\n00010010\n00001010\n00000110\n00000010\n00000000\n00000000\n00000000\nCHAR 9722\n00000000\n00000000\n00000000\n00000000\n01000000\n01100000\n01010000\n01001000\n01000100\n01111110\n00000000\n00000000\n00000000\nCHAR 9723\n00000000\n00000000\n00000000\n00000000\n01111110\n01000010\n01000010\n01000010\n01000010\n01111110\n00000000\n00000000\n00000000\nCHAR 9724\n00000000\n00000000\n00000000\n00000000\n01111110\n01111110\n01111110\n01111110\n01111110\n01111110\n00000000\n00000000\n00000000\nCHAR 9725\n00000000\n00000000\n00000000\n00000000\n00111100\n00100100\n00100100\n00111100\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 9726\n00000000\n00000000\n00000000\n00000000\n00111100\n00111100\n00111100\n00111100\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 9727\n00000000\n00000000\n00000000\n00000000\n00000010\n00000110\n00001010\n00010010\n00100010\n01111110\n00000000\n00000000\n00000000\nCHAR 9728\n00000000\n00000000\n00010000\n10010010\n01000100\n00010000\n00111000\n00010000\n01000100\n10010010\n00010000\n00000000\n00000000\nCHAR 9729\n00000000\n00000000\n00000000\n00000000\n01000000\n11100110\n11111111\n01111110\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 9730\n00000000\n00000000\n00010000\n00111000\n11111110\n00010000\n00010000\n00010000\n00010000\n01010000\n00100000\n00000000\n00000000\nCHAR 9731\n10000010\n00111000\n01111100\n00101001\n01010100\n10101010\n01111100\n10000010\n10010010\n10000010\n01111100\n00000001\n01000000\nCHAR 9732\n00000000\n00001000\n01001000\n01010000\n01010010\n01000100\n00001000\n01100000\n10010000\n10010000\n01100000\n00000000\n00000000\nCHAR 9733\n00000000\n00000000\n00000000\n00010000\n00010000\n11111110\n00111000\n00101000\n01000100\n00000000\n00000000\n00000000\n00000000\nCHAR 9734\n00000000\n00000000\n00000000\n00010000\n00010000\n11111110\n00101000\n00111000\n01000100\n00000000\n00000000\n00000000\n00000000\nCHAR 9735\n00000000\n00000000\n00000100\n00001000\n00010000\n00100000\n01000000\n00100000\n00010100\n00001100\n00011100\n00000000\n00000000\nCHAR 9736\n00000000\n00000000\n01111110\n01000010\n01000100\n01001000\n01010000\n01010000\n01001010\n01000110\n01001110\n00000000\n00000000\nCHAR 9737\n00000000\n00000000\n00000000\n00000000\n00000000\n00111000\n01000100\n01010100\n01000100\n00111000\n00000000\n00000000\n00000000\nCHAR 9738\n00000000\n00000000\n00000000\n00000000\n00111100\n01000010\n01000010\n00100100\n00100100\n01011010\n00100100\n00000000\n00000000\nCHAR 9739\n00000000\n00000000\n00000000\n00000000\n00100100\n01011010\n00100100\n00100100\n01000010\n01000010\n00111100\n00000000\n00000000\nCHAR 9740\n00000000\n00000000\n00000000\n00000000\n00000000\n00000100\n00001000\n00110000\n01001000\n01001000\n00110000\n00000000\n00000000\nCHAR 9741\n00000000\n00000000\n00001100\n00010010\n00010010\n00001100\n00010000\n00110000\n01001000\n01001000\n00110000\n00000000\n00000000\nCHAR 9742\n00000000\n00000000\n00000000\n00000000\n01111100\n11111110\n10010010\n00111000\n11101110\n11101110\n11111110\n00000000\n00000000\nCHAR 9743\n00000000\n00000000\n00000000\n00000000\n01111100\n10010010\n10010010\n01111100\n10111010\n10000010\n11111110\n00000000\n00000000\nCHAR 9744\n00000000\n00000000\n11111110\n10000010\n10000010\n10000010\n10000010\n10000010\n10000010\n10000010\n11111110\n00000000\n00000000\nCHAR 9745\n00000000\n00000000\n11111110\n10000110\n10000110\n10001010\n10001010\n10010010\n11010010\n10100010\n11111110\n00000000\n00000000\nCHAR 9746\n00000000\n00000000\n11111110\n10000010\n10101010\n10101010\n10010010\n10101010\n10101010\n10000010\n11111110\n00000000\n00000000\nCHAR 9747\n00000000\n00000000\n10000010\n10000010\n01000100\n00101000\n00010000\n00101000\n01000100\n10000010\n10000010\n00000000\n00000000\nCHAR 9750\n00000000\n00000000\n00010000\n00101000\n01000100\n10000010\n10000010\n10000010\n10000010\n10000010\n11111110\n00000000\n00000000\nCHAR 9751\n00000000\n00000000\n00010000\n00111000\n01111100\n11111110\n11111110\n11111110\n11111110\n11111110\n11111110\n00000000\n00000000\nCHAR 9753\n00000000\n00000000\n00000000\n00000100\n00010010\n00111010\n01111100\n01110100\n01111010\n00111010\n00010100\n00000000\n00000000\nCHAR 9754\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n11111111\n00111101\n00011101\n00011101\n00001111\n00000000\n00000000\nCHAR 9755\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n11111111\n10111100\n10111000\n10111000\n11110000\n00000000\n00000000\nCHAR 9756\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n11111111\n00100001\n00010001\n00010001\n00001111\n00000000\n00000000\nCHAR 9757\n00000000\n00000000\n00000000\n00000010\n00000010\n00000110\n00011010\n00100010\n00100010\n00100010\n00111110\n00000000\n00000000\nCHAR 9758\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n11111111\n10000100\n10001000\n10001000\n11110000\n00000000\n00000000\nCHAR 9759\n00000000\n00000000\n00000000\n00111110\n00100010\n00100010\n00100010\n00011010\n00000110\n00000010\n00000010\n00000000\n00000000\nCHAR 9760\n00000000\n01111100\n10000010\n10101010\n01000100\n00111000\n10010010\n11000110\n10101010\n00010000\n10101010\n11000110\n10000010\nCHAR 9761\n00000000\n01111100\n00000010\n00000010\n00000100\n00001000\n00010000\n00100000\n01000000\n01000000\n00111110\n00000000\n00000000\nCHAR 9762\n00000000\n00000000\n00111000\n01000100\n11101110\n11111110\n10010010\n10111010\n01111100\n00111000\n00000000\n00000000\n00000000\nCHAR 9763\n00000000\n00000000\n00000000\n00101000\n01000100\n10111010\n00101000\n00101000\n00010000\n00010000\n00111000\n00000000\n00000000\nCHAR 9764\n00010000\n00111000\n11111110\n10010010\n01111100\n10010010\n01111100\n10010010\n01111100\n01010100\n00111000\n00000000\n00000000\nCHAR 9765\n00000000\n00111000\n01000100\n01000100\n00101000\n00010000\n01111100\n00010000\n00010000\n00010000\n00010000\n00000000\n00000000\nCHAR 9766\n00000000\n00010000\n00111000\n00010000\n11111110\n00010000\n01010000\n00110000\n00011000\n00010100\n00010000\n00000000\n00000000\nCHAR 9767\n00000000\n00011100\n00010010\n00010010\n00011100\n00010000\n10010010\n01010100\n00111000\n01010100\n10010010\n00000000\n00000000\nCHAR 9768\n00000000\n00010000\n00111000\n00010000\n11111110\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00000000\n00000000\nCHAR 9769\n00000000\n00000000\n00000000\n00000000\n00111000\n00010000\n10010010\n11111110\n10010010\n00010000\n00111000\n00000000\n00000000\nCHAR 9770\n00000000\n00000000\n01111100\n11100010\n11001000\n11011100\n11001000\n11010100\n11000000\n11100010\n01111100\n00000000\n00000000\nCHAR 9771\n01010100\n00101000\n00000000\n10111010\n10111010\n10111010\n10111010\n10111010\n10010010\n10010010\n01111100\n00010000\n00000000\nCHAR 9772\n00000000\n00010000\n10111010\n10010010\n10101010\n10101010\n10010010\n11010010\n11111110\n11111110\n10010010\n10111010\n01010100\nCHAR 9773\n00000000\n00000000\n01111000\n10000100\n00010100\n00110100\n01100100\n01010100\n00001100\n01000100\n10111010\n00000000\n00000000\nCHAR 9774\n00000000\n00000000\n00000000\n00111000\n01010100\n10010010\n10010010\n10111010\n11010110\n01010100\n00111000\n00000000\n00000000\nCHAR 9775\n00000000\n00000000\n00000000\n00111000\n01000100\n11101010\n11110010\n11011110\n01111100\n00111000\n00000000\n00000000\n00000000\nCHAR 9776\n00000000\n00000000\n00000000\n11111110\n11111110\n00000000\n11111110\n11111110\n00000000\n11111110\n11111110\n00000000\n00000000\nCHAR 9777\n00000000\n00000000\n00000000\n11101110\n11101110\n00000000\n11111110\n11111110\n00000000\n11111110\n11111110\n00000000\n00000000\nCHAR 9778\n00000000\n00000000\n00000000\n11111110\n11111110\n00000000\n11101110\n11101110\n00000000\n11111110\n11111110\n00000000\n00000000\nCHAR 9779\n00000000\n00000000\n00000000\n11101110\n11101110\n00000000\n11101110\n11101110\n00000000\n11111110\n11111110\n00000000\n00000000\nCHAR 9780\n00000000\n00000000\n00000000\n11111110\n11111110\n00000000\n11111110\n11111110\n00000000\n11101110\n11101110\n00000000\n00000000\nCHAR 9781\n00000000\n00000000\n00000000\n11101110\n11101110\n00000000\n11111110\n11111110\n00000000\n11101110\n11101110\n00000000\n00000000\nCHAR 9782\n00000000\n00000000\n00000000\n11111110\n11111110\n00000000\n11101110\n11101110\n00000000\n11101110\n11101110\n00000000\n00000000\nCHAR 9783\n00000000\n00000000\n00000000\n11101110\n11101110\n00000000\n11101110\n11101110\n00000000\n11101110\n11101110\n00000000\n00000000\nCHAR 9784\n00000000\n00000000\n00000000\n00000000\n10111010\n01010100\n10111010\n11111110\n10111010\n01010100\n10111010\n00000000\n00000000\nCHAR 9785\n00000000\n00111100\n01000010\n10100101\n10000001\n10011001\n10000001\n10011001\n10100101\n01000010\n00111100\n00000000\n00000000\nCHAR 9786\n00000000\n00111100\n01000010\n10100101\n10000001\n10011001\n10000001\n10100101\n10011001\n01000010\n00111100\n00000000\n00000000\nCHAR 9787\n00000000\n00111100\n01111110\n11011011\n11111111\n11100111\n11111111\n11011011\n11100111\n01111110\n00111100\n00000000\n00000000\nCHAR 9788\n00000000\n00000000\n00010000\n10010010\n01000100\n00010000\n00101000\n00010000\n01000100\n10010010\n00010000\n00000000\n00000000\nCHAR 9789\n00000000\n00000000\n00111000\n01100100\n00010010\n00010010\n00010010\n00010010\n00010010\n01100100\n00111000\n00000000\n00000000\nCHAR 9790\n00000000\n00000000\n00011100\n00100110\n01001000\n01001000\n01001000\n01001000\n01001000\n00100110\n00011100\n00000000\n00000000\nCHAR 9791\n00000000\n00000000\n01000100\n00111000\n01000100\n01000100\n01000100\n00111000\n00010000\n00111000\n00010000\n00000000\n00000000\nCHAR 9792\n00000000\n00000000\n00000000\n00111000\n01000100\n01000100\n01000100\n00111000\n00010000\n00111000\n00010000\n00000000\n00000000\nCHAR 9793\n00000000\n00000000\n00000000\n00010000\n00111000\n00010000\n00111000\n01000100\n01000100\n01000100\n00111000\n00000000\n00000000\nCHAR 9794\n00000000\n00000000\n00000000\n00000000\n00001110\n00000110\n01111010\n10001000\n10001000\n10001000\n01110000\n00000000\n00000000\nCHAR 9795\n00000000\n00000000\n00000010\n00110010\n01001010\n00001010\n00001010\n00010010\n01111110\n00000010\n00000010\n00000000\n00000000\nCHAR 9796\n00000000\n00000000\n00100000\n01110000\n00100000\n00101100\n00110010\n00100010\n00100010\n00100100\n00100100\n00000000\n00000000\nCHAR 9797\n00000000\n00000000\n10000010\n10010010\n10010010\n11111110\n10010010\n10010010\n10010010\n00010000\n00101000\n00010000\n00000000\nCHAR 9798\n00000000\n00000000\n01010100\n01111110\n01010100\n01010100\n01010100\n00111000\n00010000\n00111000\n00010000\n00000000\n00000000\nCHAR 9799\n00000000\n00000000\n01111100\n01000010\n01000010\n01000010\n01111100\n01000000\n01000000\n01000000\n01111110\n00000000\n00000000\nCHAR 9800\n00000000\n00000000\n01101100\n10010010\n10010010\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00000000\n00000000\nCHAR 9801\n00000000\n00000000\n00000000\n00000000\n01000010\n01000010\n00100100\n00011000\n00100100\n00100100\n00011000\n00000000\n00000000\nCHAR 9802\n00000000\n00000000\n00000000\n01111110\n00100100\n00100100\n00100100\n00100100\n00100100\n00100100\n01111110\n00000000\n00000000\nCHAR 9803\n00000000\n00000000\n00000000\n00011100\n00100010\n01010000\n00100000\n00000100\n00001010\n01000100\n00111000\n00000000\n00000000\nCHAR 9804\n00000000\n00000000\n00111000\n01000100\n01000100\n00100100\n00010100\n00110100\n01010100\n01010100\n00100100\n00000010\n00000000\nCHAR 9805\n00000000\n00000000\n10101000\n11111000\n10101010\n10101110\n10101010\n10101010\n10101010\n10101010\n10101100\n00011000\n00101000\nCHAR 9806\n00000000\n00000000\n00000000\n00000000\n00111100\n01000010\n01000010\n00100100\n01100110\n00000000\n01111110\n00000000\n00000000\nCHAR 9807\n00000000\n00000000\n01010100\n01111100\n01010100\n01010100\n01010100\n01010100\n01010100\n01010100\n01010100\n00000011\n00000000\nCHAR 9808\n00000000\n00000000\n00011100\n00000010\n00000101\n10001001\n01010001\n00100000\n01010000\n10001000\n00000000\n00000000\n00000000\nCHAR 9809\n00000000\n00000000\n00000000\n10000000\n01010000\n01101000\n01001000\n01001000\n01001010\n01001101\n01001010\n00001000\n00110000\nCHAR 9810\n00000000\n00000000\n00000000\n00000000\n00000000\n00101010\n01010100\n00000000\n00000000\n00101010\n01010100\n00000000\n00000000\nCHAR 9811\n00000000\n00000000\n10000010\n01000100\n00101000\n00101000\n11111110\n00101000\n00101000\n01000100\n10000010\n00000000\n00000000\nCHAR 9812\n00000000\n00011000\n01011010\n01100110\n01000010\n01000010\n00100100\n00100100\n00100100\n01000010\n01111110\n00000000\n00000000\nCHAR 9813\n00000000\n00011000\n01100110\n01000010\n01000010\n01000010\n00100100\n00100100\n00100100\n01000010\n01111110\n00000000\n00000000\nCHAR 9814\n00000000\n00000000\n01011010\n01111110\n01000010\n00100100\n00100100\n00100100\n00100100\n01000010\n01111110\n00000000\n00000000\nCHAR 9815\n00000000\n00000000\n00011000\n00100100\n00100100\n00100100\n00100100\n00011000\n00100100\n01000010\n01111110\n00000000\n00000000\nCHAR 9816\n00000000\n00000000\n00000100\n00111010\n01000010\n01000010\n00110010\n00010010\n00100010\n01000010\n01111110\n00000000\n00000000\nCHAR 9817\n00000000\n00000000\n00000000\n00011000\n00100100\n00100100\n00011000\n00100100\n00100100\n01000010\n01111110\n00000000\n00000000\nCHAR 9818\n00000000\n00011000\n01011010\n01111110\n01111110\n01111110\n00111100\n00111100\n00111100\n01111110\n01111110\n00000000\n00000000\nCHAR 9819\n00000000\n00011000\n01111110\n01011010\n01111110\n01111110\n00111100\n00111100\n00111100\n01111110\n01111110\n00000000\n00000000\nCHAR 9820\n00000000\n00000000\n01011010\n01111110\n01111110\n00111100\n00111100\n00111100\n00111100\n01111110\n01111110\n00000000\n00000000\nCHAR 9821\n00000000\n00000000\n00011000\n00110100\n00110100\n00111100\n00111100\n00011000\n00111100\n01111110\n01111110\n00000000\n00000000\nCHAR 9822\n00000000\n00000000\n00000100\n00111110\n01110110\n01111110\n00111110\n00011110\n00111110\n01111110\n01111110\n00000000\n00000000\nCHAR 9823\n00000000\n00000000\n00000000\n00011000\n00111100\n00111100\n00011000\n00111100\n00111100\n01111110\n01111110\n00000000\n00000000\nCHAR 9824\n00000000\n00000000\n00010000\n00010000\n00111000\n01111100\n11111110\n11111110\n01111100\n00010000\n00111000\n00000000\n00000000\nCHAR 9825\n00000000\n00000000\n00000000\n01101100\n10010010\n10010010\n10000010\n01000100\n00101000\n00010000\n00010000\n00000000\n00000000\nCHAR 9826\n00000000\n00000000\n00000000\n00000000\n00010000\n00101000\n01000100\n10000010\n01000100\n00101000\n00010000\n00000000\n00000000\nCHAR 9827\n00000000\n00010000\n00111000\n01111100\n00010000\n01010100\n11111110\n11111110\n01010100\n00010000\n00111000\n00000000\n00000000\nCHAR 9828\n00000000\n00000000\n00000000\n00010000\n00010000\n00101000\n01000100\n10000010\n01111100\n00010000\n00111000\n00000000\n00000000\nCHAR 9829\n00000000\n00000000\n00000000\n01101100\n11111110\n11111110\n11111110\n01111100\n00111000\n00010000\n00010000\n00000000\n00000000\nCHAR 9830\n00000000\n00000000\n00000000\n00000000\n00010000\n00111000\n01111100\n11111110\n01111100\n00111000\n00010000\n00000000\n00000000\nCHAR 9831\n00000000\n00010000\n00101000\n01101100\n00101000\n01101100\n10000010\n10101010\n01010100\n00010000\n00111000\n00000000\n00000000\nCHAR 9832\n00000000\n00000000\n00000000\n00100100\n01001000\n00100100\n01001000\n00100100\n00000000\n01111110\n00111100\n00000000\n00000000\nCHAR 9833\n00000000\n00000000\n00000100\n00000100\n00000100\n00000100\n00000100\n00011100\n00111100\n00111100\n00011000\n00000000\n00000000\nCHAR 9834\n00000000\n00000000\n00011000\n00010110\n00010000\n00010000\n00010000\n01110000\n11110000\n11110000\n01100000\n00000000\n00000000\nCHAR 9835\n00000000\n00100000\n00110000\n00101000\n00100100\n00100010\n01100010\n11100010\n01000110\n00001110\n00000100\n00000000\n00000000\nCHAR 9836\n00000000\n00100000\n00110000\n00101000\n00110100\n00101010\n01100110\n11100010\n01000110\n00001110\n00000100\n00000000\n00000000\nCHAR 9837\n00000000\n01000000\n01000000\n01000000\n01011000\n01100100\n01000100\n01000100\n01001000\n01010000\n01100000\n00000000\n00000000\nCHAR 9838\n00000000\n01000000\n01000010\n01000110\n01001010\n01010010\n01100110\n01001010\n01010010\n01100010\n01000010\n00000010\n00000000\nCHAR 9839\n00000000\n00000100\n00100110\n00101100\n00110100\n01100100\n00100100\n00101110\n00110100\n01100100\n00100000\n00000000\n00000000\nCHAR 9840\n00000000\n00000000\n00101000\n00010000\n01010100\n00111000\n01010100\n00010000\n00010000\n00010000\n00101000\n00000000\n00000000\nCHAR 9841\n00000000\n00000000\n00010000\n00101000\n00010000\n01010100\n01111100\n01010100\n00010000\n00010000\n00101000\n00010000\n00000000\nCHAR 9842\n00000000\n00000000\n00000000\n00011000\n00000111\n11100101\n10100111\n11100000\n10001010\n01010100\n00001000\n00000000\n00000000\nCHAR 9843\n00000000\n00001000\n00000100\n11000010\n11010110\n10010110\n10010000\n10010010\n10010010\n10001010\n00011100\n00001000\n00000000\nCHAR 9844\n00000000\n00001000\n00000100\n11000010\n11010110\n10101110\n10001000\n10010010\n10111010\n10001010\n00011100\n00001000\n00000000\nCHAR 9845\n00000000\n00001000\n00000100\n11000010\n11010110\n10101110\n10011000\n10001010\n10110010\n10001010\n00011100\n00001000\n00000000\nCHAR 9846\n00000000\n00001000\n00000100\n11000010\n11100110\n10100110\n10110000\n10111010\n10010010\n10001010\n00011100\n00001000\n00000000\nCHAR 9847\n00000000\n00001000\n00000100\n11000010\n11111110\n10100110\n10110000\n10001010\n10110010\n10001010\n00011100\n00001000\n00000000\nCHAR 9848\n00000000\n00001000\n00000100\n11000010\n11010110\n10100110\n10110000\n10101010\n10010010\n10001010\n00011100\n00001000\n00000000\nCHAR 9849\n00000000\n00001000\n00000100\n11000010\n11111110\n10001110\n10010000\n10010010\n10010010\n10001010\n00011100\n00001000\n00000000\nCHAR 9850\n00000000\n00001000\n00000100\n11000010\n11000110\n10000110\n10000000\n10000010\n10000010\n10001010\n00011100\n00001000\n00000000\nCHAR 9851\n00000000\n00000000\n00000000\n00011000\n00000100\n01100110\n01100110\n10000000\n10001010\n01011100\n00001000\n00000000\n00000000\nCHAR 9852\n00000000\n00111100\n01111110\n11100111\n11101011\n10011001\n10011001\n10111111\n10110101\n10100011\n11110111\n01111110\n00111100\nCHAR 9853\n00000000\n00111100\n01000010\n10011001\n10010101\n11100111\n11100111\n11000001\n11001011\n11011101\n10001001\n01000010\n00111100\nCHAR 9856\n00000000\n00000000\n11111110\n10000010\n10000010\n10000010\n10010010\n10000010\n10000010\n10000010\n11111110\n00000000\n00000000\nCHAR 9857\n00000000\n00000000\n11111110\n10000010\n10100010\n10000010\n10000010\n10000010\n10001010\n10000010\n11111110\n00000000\n00000000\nCHAR 9858\n00000000\n00000000\n11111110\n10000010\n10100010\n10000010\n10010010\n10000010\n10001010\n10000010\n11111110\n00000000\n00000000\nCHAR 9859\n00000000\n00000000\n11111110\n10000010\n10101010\n10000010\n10000010\n10000010\n10101010\n10000010\n11111110\n00000000\n00000000\nCHAR 9860\n00000000\n00000000\n11111110\n10000010\n10101010\n10000010\n10010010\n10000010\n10101010\n10000010\n11111110\n00000000\n00000000\nCHAR 9861\n00000000\n00000000\n11111110\n10000010\n10101010\n10000010\n10101010\n10000010\n10101010\n10000010\n11111110\n00000000\n00000000\nCHAR 9862\n00000000\n00000000\n00000000\n00111000\n01000100\n10000010\n10001010\n10001010\n10000010\n01000100\n00111000\n00000000\n00000000\nCHAR 9863\n00000000\n00000000\n00000000\n00111000\n01000100\n10000010\n10101010\n10101010\n10000010\n01000100\n00111000\n00000000\n00000000\nCHAR 9864\n00000000\n00000000\n00000000\n00111000\n01111100\n11111110\n11110110\n11110110\n11111110\n01111100\n00111000\n00000000\n00000000\nCHAR 9865\n00000000\n00000000\n00000000\n00111000\n01111100\n11111110\n11010110\n11010110\n11111110\n01111100\n00111000\n00000000\n00000000\nCHAR 10197\n00000000\n00000000\n11100010\n00110110\n00110110\n00101010\n00101010\n00101010\n00110110\n00110110\n11100010\n00000000\n00000000\nCHAR 10198\n00000000\n00000000\n10001110\n11011000\n11011000\n10101000\n10101000\n10101000\n11011000\n11011000\n10001110\n00000000\n00000000\nCHAR 10199\n00000000\n00000000\n11000110\n01101100\n01101100\n01010100\n01010100\n01010100\n01101100\n01101100\n11000110\n00000000\n00000000\nCHAR 10214\n00000000\n00000000\n01111100\n01010000\n01010000\n01010000\n01010000\n01010000\n01010000\n01010000\n01111100\n00000000\n00000000\nCHAR 10215\n00000000\n00000000\n01111100\n00010100\n00010100\n00010100\n00010100\n00010100\n00010100\n00010100\n01111100\n00000000\n00000000\nCHAR 10216\n00000000\n00000100\n00001000\n00001000\n00010000\n00010000\n00100000\n00010000\n00010000\n00001000\n00001000\n00000100\n00000000\nCHAR 10217\n00000000\n00100000\n00010000\n00010000\n00001000\n00001000\n00000100\n00001000\n00001000\n00010000\n00010000\n00100000\n00000000\nCHAR 10218\n00000000\n00001010\n00010100\n00010100\n00101000\n00101000\n01010000\n00101000\n00101000\n00010100\n00010100\n00001010\n00000000\nCHAR 10219\n00000000\n01010000\n00101000\n00101000\n00010100\n00010100\n00001010\n00010100\n00010100\n00101000\n00101000\n01010000\n00000000\nCHAR 10224\n00000000\n00000000\n00010000\n00101000\n01101100\n10101010\n10101011\n10101010\n10101010\n10101010\n10101010\n00000000\n00000000\nCHAR 10225\n00000000\n00000000\n10101010\n10101010\n10101010\n10101010\n10101011\n10101010\n01101100\n00101000\n00010000\n00000000\n00000000\nCHAR 10229\n00000000\n00000000\n00000000\n00000000\n00100000\n01000000\n11111111\n01000000\n00100000\n00000000\n00000000\n00000000\n00000000\nCHAR 10230\n00000000\n00000000\n00000000\n00000000\n00000100\n00000010\n11111111\n00000010\n00000100\n00000000\n00000000\n00000000\n00000000\nCHAR 10231\n00000000\n00000000\n00000000\n00000000\n00100100\n01000010\n11111111\n01000010\n00100100\n00000000\n00000000\n00000000\n00000000\nCHAR 10232\n00000000\n00000000\n00000000\n00000000\n00010000\n00100000\n01111111\n10000000\n01111111\n00100000\n00010000\n00000000\n00000000\nCHAR 10233\n00000000\n00000000\n00000000\n00000000\n00001000\n00000100\n11111110\n00000001\n11111110\n00000100\n00001000\n00000000\n00000000\nCHAR 10234\n00000000\n00000000\n00000000\n00000000\n00000000\n00100100\n01111110\n10000001\n01111110\n00100100\n00000000\n00000000\n00000000\nCHAR 10235\n00000000\n00000000\n00000000\n00000000\n00100001\n01000001\n11111111\n01000001\n00100001\n00000000\n00000000\n00000000\n00000000\nCHAR 10236\n00000000\n00000000\n00000000\n00000000\n10000100\n10000010\n11111111\n10000010\n10000100\n00000000\n00000000\n00000000\n00000000\nCHAR 10237\n00000000\n00000000\n00000000\n00000000\n00010001\n00100001\n01111111\n10000001\n01111111\n00100001\n00010001\n00000000\n00000000\nCHAR 10238\n00000000\n00000000\n00000000\n00000000\n10001000\n10000100\n11111110\n10000001\n11111110\n10000100\n10001000\n00000000\n00000000\nCHAR 10239\n00000000\n00000000\n00000000\n00000000\n00000100\n10101010\n10101111\n01010010\n01010100\n00000000\n00000000\n00000000\n00000000\nCHAR 10240\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 10241\n00000000\n01100000\n01100000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 10242\n00000000\n00000000\n00000000\n00000000\n01100000\n01100000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 10243\n00000000\n01100000\n01100000\n00000000\n01100000\n01100000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 10244\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n01100000\n01100000\n00000000\n00000000\n00000000\n00000000\nCHAR 10245\n00000000\n01100000\n01100000\n00000000\n00000000\n00000000\n00000000\n01100000\n01100000\n00000000\n00000000\n00000000\n00000000\nCHAR 10246\n00000000\n00000000\n00000000\n00000000\n01100000\n01100000\n00000000\n01100000\n01100000\n00000000\n00000000\n00000000\n00000000\nCHAR 10247\n00000000\n01100000\n01100000\n00000000\n01100000\n01100000\n00000000\n01100000\n01100000\n00000000\n00000000\n00000000\n00000000\nCHAR 10248\n00000000\n00000110\n00000110\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 10249\n00000000\n01100110\n01100110\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 10250\n00000000\n00000110\n00000110\n00000000\n01100000\n01100000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 10251\n00000000\n01100110\n01100110\n00000000\n01100000\n01100000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 10252\n00000000\n00000110\n00000110\n00000000\n00000000\n00000000\n00000000\n01100000\n01100000\n00000000\n00000000\n00000000\n00000000\nCHAR 10253\n00000000\n01100110\n01100110\n00000000\n00000000\n00000000\n00000000\n01100000\n01100000\n00000000\n00000000\n00000000\n00000000\nCHAR 10254\n00000000\n00000110\n00000110\n00000000\n01100000\n01100000\n00000000\n01100000\n01100000\n00000000\n00000000\n00000000\n00000000\nCHAR 10255\n00000000\n01100110\n01100110\n00000000\n01100000\n01100000\n00000000\n01100000\n01100000\n00000000\n00000000\n00000000\n00000000\nCHAR 10256\n00000000\n00000000\n00000000\n00000000\n00000110\n00000110\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 10257\n00000000\n01100000\n01100000\n00000000\n00000110\n00000110\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 10258\n00000000\n00000000\n00000000\n00000000\n01100110\n01100110\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 10259\n00000000\n01100000\n01100000\n00000000\n01100110\n01100110\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 10260\n00000000\n00000000\n00000000\n00000000\n00000110\n00000110\n00000000\n01100000\n01100000\n00000000\n00000000\n00000000\n00000000\nCHAR 10261\n00000000\n01100000\n01100000\n00000000\n00000110\n00000110\n00000000\n01100000\n01100000\n00000000\n00000000\n00000000\n00000000\nCHAR 10262\n00000000\n00000000\n00000000\n00000000\n01100110\n01100110\n00000000\n01100000\n01100000\n00000000\n00000000\n00000000\n00000000\nCHAR 10263\n00000000\n01100000\n01100000\n00000000\n01100110\n01100110\n00000000\n01100000\n01100000\n00000000\n00000000\n00000000\n00000000\nCHAR 10264\n00000000\n00000110\n00000110\n00000000\n00000110\n00000110\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 10265\n00000000\n01100110\n01100110\n00000000\n00000110\n00000110\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 10266\n00000000\n00000110\n00000110\n00000000\n01100110\n01100110\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 10267\n00000000\n01100110\n01100110\n00000000\n01100110\n01100110\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 10268\n00000000\n00000110\n00000110\n00000000\n00000110\n00000110\n00000000\n01100000\n01100000\n00000000\n00000000\n00000000\n00000000\nCHAR 10269\n00000000\n01100110\n01100110\n00000000\n00000110\n00000110\n00000000\n01100000\n01100000\n00000000\n00000000\n00000000\n00000000\nCHAR 10270\n00000000\n00000110\n00000110\n00000000\n01100110\n01100110\n00000000\n01100000\n01100000\n00000000\n00000000\n00000000\n00000000\nCHAR 10271\n00000000\n01100110\n01100110\n00000000\n01100110\n01100110\n00000000\n01100000\n01100000\n00000000\n00000000\n00000000\n00000000\nCHAR 10272\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000110\n00000110\n00000000\n00000000\n00000000\n00000000\nCHAR 10273\n00000000\n01100000\n01100000\n00000000\n00000000\n00000000\n00000000\n00000110\n00000110\n00000000\n00000000\n00000000\n00000000\nCHAR 10274\n00000000\n00000000\n00000000\n00000000\n01100000\n01100000\n00000000\n00000110\n00000110\n00000000\n00000000\n00000000\n00000000\nCHAR 10275\n00000000\n01100000\n01100000\n00000000\n01100000\n01100000\n00000000\n00000110\n00000110\n00000000\n00000000\n00000000\n00000000\nCHAR 10276\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n01100110\n01100110\n00000000\n00000000\n00000000\n00000000\nCHAR 10277\n00000000\n01100000\n01100000\n00000000\n00000000\n00000000\n00000000\n01100110\n01100110\n00000000\n00000000\n00000000\n00000000\nCHAR 10278\n00000000\n00000000\n00000000\n00000000\n01100000\n01100000\n00000000\n01100110\n01100110\n00000000\n00000000\n00000000\n00000000\nCHAR 10279\n00000000\n01100000\n01100000\n00000000\n01100000\n01100000\n00000000\n01100110\n01100110\n00000000\n00000000\n00000000\n00000000\nCHAR 10280\n00000000\n00000110\n00000110\n00000000\n00000000\n00000000\n00000000\n00000110\n00000110\n00000000\n00000000\n00000000\n00000000\nCHAR 10281\n00000000\n01100110\n01100110\n00000000\n00000000\n00000000\n00000000\n00000110\n00000110\n00000000\n00000000\n00000000\n00000000\nCHAR 10282\n00000000\n00000110\n00000110\n00000000\n01100000\n01100000\n00000000\n00000110\n00000110\n00000000\n00000000\n00000000\n00000000\nCHAR 10283\n00000000\n01100110\n01100110\n00000000\n01100000\n01100000\n00000000\n00000110\n00000110\n00000000\n00000000\n00000000\n00000000\nCHAR 10284\n00000000\n00000110\n00000110\n00000000\n00000000\n00000000\n00000000\n01100110\n01100110\n00000000\n00000000\n00000000\n00000000\nCHAR 10285\n00000000\n01100110\n01100110\n00000000\n00000000\n00000000\n00000000\n01100110\n01100110\n00000000\n00000000\n00000000\n00000000\nCHAR 10286\n00000000\n00000110\n00000110\n00000000\n01100000\n01100000\n00000000\n01100110\n01100110\n00000000\n00000000\n00000000\n00000000\nCHAR 10287\n00000000\n01100110\n01100110\n00000000\n01100000\n01100000\n00000000\n01100110\n01100110\n00000000\n00000000\n00000000\n00000000\nCHAR 10288\n00000000\n00000000\n00000000\n00000000\n00000110\n00000110\n00000000\n00000110\n00000110\n00000000\n00000000\n00000000\n00000000\nCHAR 10289\n00000000\n01100000\n01100000\n00000000\n00000110\n00000110\n00000000\n00000110\n00000110\n00000000\n00000000\n00000000\n00000000\nCHAR 10290\n00000000\n00000000\n00000000\n00000000\n01100110\n01100110\n00000000\n00000110\n00000110\n00000000\n00000000\n00000000\n00000000\nCHAR 10291\n00000000\n01100000\n01100000\n00000000\n01100110\n01100110\n00000000\n00000110\n00000110\n00000000\n00000000\n00000000\n00000000\nCHAR 10292\n00000000\n00000000\n00000000\n00000000\n00000110\n00000110\n00000000\n01100110\n01100110\n00000000\n00000000\n00000000\n00000000\nCHAR 10293\n00000000\n01100000\n01100000\n00000000\n00000110\n00000110\n00000000\n01100110\n01100110\n00000000\n00000000\n00000000\n00000000\nCHAR 10294\n00000000\n00000000\n00000000\n00000000\n01100110\n01100110\n00000000\n01100110\n01100110\n00000000\n00000000\n00000000\n00000000\nCHAR 10295\n00000000\n01100000\n01100000\n00000000\n01100110\n01100110\n00000000\n01100110\n01100110\n00000000\n00000000\n00000000\n00000000\nCHAR 10296\n00000000\n00000110\n00000110\n00000000\n00000110\n00000110\n00000000\n00000110\n00000110\n00000000\n00000000\n00000000\n00000000\nCHAR 10297\n00000000\n01100110\n01100110\n00000000\n00000110\n00000110\n00000000\n00000110\n00000110\n00000000\n00000000\n00000000\n00000000\nCHAR 10298\n00000000\n00000110\n00000110\n00000000\n01100110\n01100110\n00000000\n00000110\n00000110\n00000000\n00000000\n00000000\n00000000\nCHAR 10299\n00000000\n01100110\n01100110\n00000000\n01100110\n01100110\n00000000\n00000110\n00000110\n00000000\n00000000\n00000000\n00000000\nCHAR 10300\n00000000\n00000110\n00000110\n00000000\n00000110\n00000110\n00000000\n01100110\n01100110\n00000000\n00000000\n00000000\n00000000\nCHAR 10301\n00000000\n01100110\n01100110\n00000000\n00000110\n00000110\n00000000\n01100110\n01100110\n00000000\n00000000\n00000000\n00000000\nCHAR 10302\n00000000\n00000110\n00000110\n00000000\n01100110\n01100110\n00000000\n01100110\n01100110\n00000000\n00000000\n00000000\n00000000\nCHAR 10303\n00000000\n01100110\n01100110\n00000000\n01100110\n01100110\n00000000\n01100110\n01100110\n00000000\n00000000\n00000000\n00000000\nCHAR 10304\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n01100000\n01100000\n00000000\nCHAR 10305\n00000000\n01100000\n01100000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n01100000\n01100000\n00000000\nCHAR 10306\n00000000\n00000000\n00000000\n00000000\n01100000\n01100000\n00000000\n00000000\n00000000\n00000000\n01100000\n01100000\n00000000\nCHAR 10307\n00000000\n01100000\n01100000\n00000000\n01100000\n01100000\n00000000\n00000000\n00000000\n00000000\n01100000\n01100000\n00000000\nCHAR 10308\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n01100000\n01100000\n00000000\n01100000\n01100000\n00000000\nCHAR 10309\n00000000\n01100000\n01100000\n00000000\n00000000\n00000000\n00000000\n01100000\n01100000\n00000000\n01100000\n01100000\n00000000\nCHAR 10310\n00000000\n00000000\n00000000\n00000000\n01100000\n01100000\n00000000\n01100000\n01100000\n00000000\n01100000\n01100000\n00000000\nCHAR 10311\n00000000\n01100000\n01100000\n00000000\n01100000\n01100000\n00000000\n01100000\n01100000\n00000000\n01100000\n01100000\n00000000\nCHAR 10312\n00000000\n00000110\n00000110\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n01100000\n01100000\n00000000\nCHAR 10313\n00000000\n01100110\n01100110\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n01100000\n01100000\n00000000\nCHAR 10314\n00000000\n00000110\n00000110\n00000000\n01100000\n01100000\n00000000\n00000000\n00000000\n00000000\n01100000\n01100000\n00000000\nCHAR 10315\n00000000\n01100110\n01100110\n00000000\n01100000\n01100000\n00000000\n00000000\n00000000\n00000000\n01100000\n01100000\n00000000\nCHAR 10316\n00000000\n00000110\n00000110\n00000000\n00000000\n00000000\n00000000\n01100000\n01100000\n00000000\n01100000\n01100000\n00000000\nCHAR 10317\n00000000\n01100110\n01100110\n00000000\n00000000\n00000000\n00000000\n01100000\n01100000\n00000000\n01100000\n01100000\n00000000\nCHAR 10318\n00000000\n00000110\n00000110\n00000000\n01100000\n01100000\n00000000\n01100000\n01100000\n00000000\n01100000\n01100000\n00000000\nCHAR 10319\n00000000\n01100110\n01100110\n00000000\n01100000\n01100000\n00000000\n01100000\n01100000\n00000000\n01100000\n01100000\n00000000\nCHAR 10320\n00000000\n00000000\n00000000\n00000000\n00000110\n00000110\n00000000\n00000000\n00000000\n00000000\n01100000\n01100000\n00000000\nCHAR 10321\n00000000\n01100000\n01100000\n00000000\n00000110\n00000110\n00000000\n00000000\n00000000\n00000000\n01100000\n01100000\n00000000\nCHAR 10322\n00000000\n00000000\n00000000\n00000000\n01100110\n01100110\n00000000\n00000000\n00000000\n00000000\n01100000\n01100000\n00000000\nCHAR 10323\n00000000\n01100000\n01100000\n00000000\n01100110\n01100110\n00000000\n00000000\n00000000\n00000000\n01100000\n01100000\n00000000\nCHAR 10324\n00000000\n00000000\n00000000\n00000000\n00000110\n00000110\n00000000\n01100000\n01100000\n00000000\n01100000\n01100000\n00000000\nCHAR 10325\n00000000\n01100000\n01100000\n00000000\n00000110\n00000110\n00000000\n01100000\n01100000\n00000000\n01100000\n01100000\n00000000\nCHAR 10326\n00000000\n00000000\n00000000\n00000000\n01100110\n01100110\n00000000\n01100000\n01100000\n00000000\n01100000\n01100000\n00000000\nCHAR 10327\n00000000\n01100000\n01100000\n00000000\n01100110\n01100110\n00000000\n01100000\n01100000\n00000000\n01100000\n01100000\n00000000\nCHAR 10328\n00000000\n00000110\n00000110\n00000000\n00000110\n00000110\n00000000\n00000000\n00000000\n00000000\n01100000\n01100000\n00000000\nCHAR 10329\n00000000\n01100110\n01100110\n00000000\n00000110\n00000110\n00000000\n00000000\n00000000\n00000000\n01100000\n01100000\n00000000\nCHAR 10330\n00000000\n00000110\n00000110\n00000000\n01100110\n01100110\n00000000\n00000000\n00000000\n00000000\n01100000\n01100000\n00000000\nCHAR 10331\n00000000\n01100110\n01100110\n00000000\n01100110\n01100110\n00000000\n00000000\n00000000\n00000000\n01100000\n01100000\n00000000\nCHAR 10332\n00000000\n00000110\n00000110\n00000000\n00000110\n00000110\n00000000\n01100000\n01100000\n00000000\n01100000\n01100000\n00000000\nCHAR 10333\n00000000\n01100110\n01100110\n00000000\n00000110\n00000110\n00000000\n01100000\n01100000\n00000000\n01100000\n01100000\n00000000\nCHAR 10334\n00000000\n00000110\n00000110\n00000000\n01100110\n01100110\n00000000\n01100000\n01100000\n00000000\n01100000\n01100000\n00000000\nCHAR 10335\n00000000\n01100110\n01100110\n00000000\n01100110\n01100110\n00000000\n01100000\n01100000\n00000000\n01100000\n01100000\n00000000\nCHAR 10336\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000110\n00000110\n00000000\n01100000\n01100000\n00000000\nCHAR 10337\n00000000\n01100000\n01100000\n00000000\n00000000\n00000000\n00000000\n00000110\n00000110\n00000000\n01100000\n01100000\n00000000\nCHAR 10338\n00000000\n00000000\n00000000\n00000000\n01100000\n01100000\n00000000\n00000110\n00000110\n00000000\n01100000\n01100000\n00000000\nCHAR 10339\n00000000\n01100000\n01100000\n00000000\n01100000\n01100000\n00000000\n00000110\n00000110\n00000000\n01100000\n01100000\n00000000\nCHAR 10340\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n01100110\n01100110\n00000000\n01100000\n01100000\n00000000\nCHAR 10341\n00000000\n01100000\n01100000\n00000000\n00000000\n00000000\n00000000\n01100110\n01100110\n00000000\n01100000\n01100000\n00000000\nCHAR 10342\n00000000\n00000000\n00000000\n00000000\n01100000\n01100000\n00000000\n01100110\n01100110\n00000000\n01100000\n01100000\n00000000\nCHAR 10343\n00000000\n01100000\n01100000\n00000000\n01100000\n01100000\n00000000\n01100110\n01100110\n00000000\n01100000\n01100000\n00000000\nCHAR 10344\n00000000\n00000110\n00000110\n00000000\n00000000\n00000000\n00000000\n00000110\n00000110\n00000000\n01100000\n01100000\n00000000\nCHAR 10345\n00000000\n01100110\n01100110\n00000000\n00000000\n00000000\n00000000\n00000110\n00000110\n00000000\n01100000\n01100000\n00000000\nCHAR 10346\n00000000\n00000110\n00000110\n00000000\n01100000\n01100000\n00000000\n00000110\n00000110\n00000000\n01100000\n01100000\n00000000\nCHAR 10347\n00000000\n01100110\n01100110\n00000000\n01100000\n01100000\n00000000\n00000110\n00000110\n00000000\n01100000\n01100000\n00000000\nCHAR 10348\n00000000\n00000110\n00000110\n00000000\n00000000\n00000000\n00000000\n01100110\n01100110\n00000000\n01100000\n01100000\n00000000\nCHAR 10349\n00000000\n01100110\n01100110\n00000000\n00000000\n00000000\n00000000\n01100110\n01100110\n00000000\n01100000\n01100000\n00000000\nCHAR 10350\n00000000\n00000110\n00000110\n00000000\n01100000\n01100000\n00000000\n01100110\n01100110\n00000000\n01100000\n01100000\n00000000\nCHAR 10351\n00000000\n01100110\n01100110\n00000000\n01100000\n01100000\n00000000\n01100110\n01100110\n00000000\n01100000\n01100000\n00000000\nCHAR 10352\n00000000\n00000000\n00000000\n00000000\n00000110\n00000110\n00000000\n00000110\n00000110\n00000000\n01100000\n01100000\n00000000\nCHAR 10353\n00000000\n01100000\n01100000\n00000000\n00000110\n00000110\n00000000\n00000110\n00000110\n00000000\n01100000\n01100000\n00000000\nCHAR 10354\n00000000\n00000000\n00000000\n00000000\n01100110\n01100110\n00000000\n00000110\n00000110\n00000000\n01100000\n01100000\n00000000\nCHAR 10355\n00000000\n01100000\n01100000\n00000000\n01100110\n01100110\n00000000\n00000110\n00000110\n00000000\n01100000\n01100000\n00000000\nCHAR 10356\n00000000\n00000000\n00000000\n00000000\n00000110\n00000110\n00000000\n01100110\n01100110\n00000000\n01100000\n01100000\n00000000\nCHAR 10357\n00000000\n01100000\n01100000\n00000000\n00000110\n00000110\n00000000\n01100110\n01100110\n00000000\n01100000\n01100000\n00000000\nCHAR 10358\n00000000\n00000000\n00000000\n00000000\n01100110\n01100110\n00000000\n01100110\n01100110\n00000000\n01100000\n01100000\n00000000\nCHAR 10359\n00000000\n01100000\n01100000\n00000000\n01100110\n01100110\n00000000\n01100110\n01100110\n00000000\n01100000\n01100000\n00000000\nCHAR 10360\n00000000\n00000110\n00000110\n00000000\n00000110\n00000110\n00000000\n00000110\n00000110\n00000000\n01100000\n01100000\n00000000\nCHAR 10361\n00000000\n01100110\n01100110\n00000000\n00000110\n00000110\n00000000\n00000110\n00000110\n00000000\n01100000\n01100000\n00000000\nCHAR 10362\n00000000\n00000110\n00000110\n00000000\n01100110\n01100110\n00000000\n00000110\n00000110\n00000000\n01100000\n01100000\n00000000\nCHAR 10363\n00000000\n01100110\n01100110\n00000000\n01100110\n01100110\n00000000\n00000110\n00000110\n00000000\n01100000\n01100000\n00000000\nCHAR 10364\n00000000\n00000110\n00000110\n00000000\n00000110\n00000110\n00000000\n01100110\n01100110\n00000000\n01100000\n01100000\n00000000\nCHAR 10365\n00000000\n01100110\n01100110\n00000000\n00000110\n00000110\n00000000\n01100110\n01100110\n00000000\n01100000\n01100000\n00000000\nCHAR 10366\n00000000\n00000110\n00000110\n00000000\n01100110\n01100110\n00000000\n01100110\n01100110\n00000000\n01100000\n01100000\n00000000\nCHAR 10367\n00000000\n01100110\n01100110\n00000000\n01100110\n01100110\n00000000\n01100110\n01100110\n00000000\n01100000\n01100000\n00000000\nCHAR 10368\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000110\n00000110\n00000000\nCHAR 10369\n00000000\n01100000\n01100000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000110\n00000110\n00000000\nCHAR 10370\n00000000\n00000000\n00000000\n00000000\n01100000\n01100000\n00000000\n00000000\n00000000\n00000000\n00000110\n00000110\n00000000\nCHAR 10371\n00000000\n01100000\n01100000\n00000000\n01100000\n01100000\n00000000\n00000000\n00000000\n00000000\n00000110\n00000110\n00000000\nCHAR 10372\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n01100000\n01100000\n00000000\n00000110\n00000110\n00000000\nCHAR 10373\n00000000\n01100000\n01100000\n00000000\n00000000\n00000000\n00000000\n01100000\n01100000\n00000000\n00000110\n00000110\n00000000\nCHAR 10374\n00000000\n00000000\n00000000\n00000000\n01100000\n01100000\n00000000\n01100000\n01100000\n00000000\n00000110\n00000110\n00000000\nCHAR 10375\n00000000\n01100000\n01100000\n00000000\n01100000\n01100000\n00000000\n01100000\n01100000\n00000000\n00000110\n00000110\n00000000\nCHAR 10376\n00000000\n00000110\n00000110\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000110\n00000110\n00000000\nCHAR 10377\n00000000\n01100110\n01100110\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000110\n00000110\n00000000\nCHAR 10378\n00000000\n00000110\n00000110\n00000000\n01100000\n01100000\n00000000\n00000000\n00000000\n00000000\n00000110\n00000110\n00000000\nCHAR 10379\n00000000\n01100110\n01100110\n00000000\n01100000\n01100000\n00000000\n00000000\n00000000\n00000000\n00000110\n00000110\n00000000\nCHAR 10380\n00000000\n00000110\n00000110\n00000000\n00000000\n00000000\n00000000\n01100000\n01100000\n00000000\n00000110\n00000110\n00000000\nCHAR 10381\n00000000\n01100110\n01100110\n00000000\n00000000\n00000000\n00000000\n01100000\n01100000\n00000000\n00000110\n00000110\n00000000\nCHAR 10382\n00000000\n00000110\n00000110\n00000000\n01100000\n01100000\n00000000\n01100000\n01100000\n00000000\n00000110\n00000110\n00000000\nCHAR 10383\n00000000\n01100110\n01100110\n00000000\n01100000\n01100000\n00000000\n01100000\n01100000\n00000000\n00000110\n00000110\n00000000\nCHAR 10384\n00000000\n00000000\n00000000\n00000000\n00000110\n00000110\n00000000\n00000000\n00000000\n00000000\n00000110\n00000110\n00000000\nCHAR 10385\n00000000\n01100000\n01100000\n00000000\n00000110\n00000110\n00000000\n00000000\n00000000\n00000000\n00000110\n00000110\n00000000\nCHAR 10386\n00000000\n00000000\n00000000\n00000000\n01100110\n01100110\n00000000\n00000000\n00000000\n00000000\n00000110\n00000110\n00000000\nCHAR 10387\n00000000\n01100000\n01100000\n00000000\n01100110\n01100110\n00000000\n00000000\n00000000\n00000000\n00000110\n00000110\n00000000\nCHAR 10388\n00000000\n00000000\n00000000\n00000000\n00000110\n00000110\n00000000\n01100000\n01100000\n00000000\n00000110\n00000110\n00000000\nCHAR 10389\n00000000\n01100000\n01100000\n00000000\n00000110\n00000110\n00000000\n01100000\n01100000\n00000000\n00000110\n00000110\n00000000\nCHAR 10390\n00000000\n00000000\n00000000\n00000000\n01100110\n01100110\n00000000\n01100000\n01100000\n00000000\n00000110\n00000110\n00000000\nCHAR 10391\n00000000\n01100000\n01100000\n00000000\n01100110\n01100110\n00000000\n01100000\n01100000\n00000000\n00000110\n00000110\n00000000\nCHAR 10392\n00000000\n00000110\n00000110\n00000000\n00000110\n00000110\n00000000\n00000000\n00000000\n00000000\n00000110\n00000110\n00000000\nCHAR 10393\n00000000\n01100110\n01100110\n00000000\n00000110\n00000110\n00000000\n00000000\n00000000\n00000000\n00000110\n00000110\n00000000\nCHAR 10394\n00000000\n00000110\n00000110\n00000000\n01100110\n01100110\n00000000\n00000000\n00000000\n00000000\n00000110\n00000110\n00000000\nCHAR 10395\n00000000\n01100110\n01100110\n00000000\n01100110\n01100110\n00000000\n00000000\n00000000\n00000000\n00000110\n00000110\n00000000\nCHAR 10396\n00000000\n00000110\n00000110\n00000000\n00000110\n00000110\n00000000\n01100000\n01100000\n00000000\n00000110\n00000110\n00000000\nCHAR 10397\n00000000\n01100110\n01100110\n00000000\n00000110\n00000110\n00000000\n01100000\n01100000\n00000000\n00000110\n00000110\n00000000\nCHAR 10398\n00000000\n00000110\n00000110\n00000000\n01100110\n01100110\n00000000\n01100000\n01100000\n00000000\n00000110\n00000110\n00000000\nCHAR 10399\n00000000\n01100110\n01100110\n00000000\n01100110\n01100110\n00000000\n01100000\n01100000\n00000000\n00000110\n00000110\n00000000\nCHAR 10400\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000110\n00000110\n00000000\n00000110\n00000110\n00000000\nCHAR 10401\n00000000\n01100000\n01100000\n00000000\n00000000\n00000000\n00000000\n00000110\n00000110\n00000000\n00000110\n00000110\n00000000\nCHAR 10402\n00000000\n00000000\n00000000\n00000000\n01100000\n01100000\n00000000\n00000110\n00000110\n00000000\n00000110\n00000110\n00000000\nCHAR 10403\n00000000\n01100000\n01100000\n00000000\n01100000\n01100000\n00000000\n00000110\n00000110\n00000000\n00000110\n00000110\n00000000\nCHAR 10404\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n01100110\n01100110\n00000000\n00000110\n00000110\n00000000\nCHAR 10405\n00000000\n01100000\n01100000\n00000000\n00000000\n00000000\n00000000\n01100110\n01100110\n00000000\n00000110\n00000110\n00000000\nCHAR 10406\n00000000\n00000000\n00000000\n00000000\n01100000\n01100000\n00000000\n01100110\n01100110\n00000000\n00000110\n00000110\n00000000\nCHAR 10407\n00000000\n01100000\n01100000\n00000000\n01100000\n01100000\n00000000\n01100110\n01100110\n00000000\n00000110\n00000110\n00000000\nCHAR 10408\n00000000\n00000110\n00000110\n00000000\n00000000\n00000000\n00000000\n00000110\n00000110\n00000000\n00000110\n00000110\n00000000\nCHAR 10409\n00000000\n01100110\n01100110\n00000000\n00000000\n00000000\n00000000\n00000110\n00000110\n00000000\n00000110\n00000110\n00000000\nCHAR 10410\n00000000\n00000110\n00000110\n00000000\n01100000\n01100000\n00000000\n00000110\n00000110\n00000000\n00000110\n00000110\n00000000\nCHAR 10411\n00000000\n01100110\n01100110\n00000000\n01100000\n01100000\n00000000\n00000110\n00000110\n00000000\n00000110\n00000110\n00000000\nCHAR 10412\n00000000\n00000110\n00000110\n00000000\n00000000\n00000000\n00000000\n01100110\n01100110\n00000000\n00000110\n00000110\n00000000\nCHAR 10413\n00000000\n01100110\n01100110\n00000000\n00000000\n00000000\n00000000\n01100110\n01100110\n00000000\n00000110\n00000110\n00000000\nCHAR 10414\n00000000\n00000110\n00000110\n00000000\n01100000\n01100000\n00000000\n01100110\n01100110\n00000000\n00000110\n00000110\n00000000\nCHAR 10415\n00000000\n01100110\n01100110\n00000000\n01100000\n01100000\n00000000\n01100110\n01100110\n00000000\n00000110\n00000110\n00000000\nCHAR 10416\n00000000\n00000000\n00000000\n00000000\n00000110\n00000110\n00000000\n00000110\n00000110\n00000000\n00000110\n00000110\n00000000\nCHAR 10417\n00000000\n01100000\n01100000\n00000000\n00000110\n00000110\n00000000\n00000110\n00000110\n00000000\n00000110\n00000110\n00000000\nCHAR 10418\n00000000\n00000000\n00000000\n00000000\n01100110\n01100110\n00000000\n00000110\n00000110\n00000000\n00000110\n00000110\n00000000\nCHAR 10419\n00000000\n01100000\n01100000\n00000000\n01100110\n01100110\n00000000\n00000110\n00000110\n00000000\n00000110\n00000110\n00000000\nCHAR 10420\n00000000\n00000000\n00000000\n00000000\n00000110\n00000110\n00000000\n01100110\n01100110\n00000000\n00000110\n00000110\n00000000\nCHAR 10421\n00000000\n01100000\n01100000\n00000000\n00000110\n00000110\n00000000\n01100110\n01100110\n00000000\n00000110\n00000110\n00000000\nCHAR 10422\n00000000\n00000000\n00000000\n00000000\n01100110\n01100110\n00000000\n01100110\n01100110\n00000000\n00000110\n00000110\n00000000\nCHAR 10423\n00000000\n01100000\n01100000\n00000000\n01100110\n01100110\n00000000\n01100110\n01100110\n00000000\n00000110\n00000110\n00000000\nCHAR 10424\n00000000\n00000110\n00000110\n00000000\n00000110\n00000110\n00000000\n00000110\n00000110\n00000000\n00000110\n00000110\n00000000\nCHAR 10425\n00000000\n01100110\n01100110\n00000000\n00000110\n00000110\n00000000\n00000110\n00000110\n00000000\n00000110\n00000110\n00000000\nCHAR 10426\n00000000\n00000110\n00000110\n00000000\n01100110\n01100110\n00000000\n00000110\n00000110\n00000000\n00000110\n00000110\n00000000\nCHAR 10427\n00000000\n01100110\n01100110\n00000000\n01100110\n01100110\n00000000\n00000110\n00000110\n00000000\n00000110\n00000110\n00000000\nCHAR 10428\n00000000\n00000110\n00000110\n00000000\n00000110\n00000110\n00000000\n01100110\n01100110\n00000000\n00000110\n00000110\n00000000\nCHAR 10429\n00000000\n01100110\n01100110\n00000000\n00000110\n00000110\n00000000\n01100110\n01100110\n00000000\n00000110\n00000110\n00000000\nCHAR 10430\n00000000\n00000110\n00000110\n00000000\n01100110\n01100110\n00000000\n01100110\n01100110\n00000000\n00000110\n00000110\n00000000\nCHAR 10431\n00000000\n01100110\n01100110\n00000000\n01100110\n01100110\n00000000\n01100110\n01100110\n00000000\n00000110\n00000110\n00000000\nCHAR 10432\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n01100110\n01100110\n00000000\nCHAR 10433\n00000000\n01100000\n01100000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n01100110\n01100110\n00000000\nCHAR 10434\n00000000\n00000000\n00000000\n00000000\n01100000\n01100000\n00000000\n00000000\n00000000\n00000000\n01100110\n01100110\n00000000\nCHAR 10435\n00000000\n01100000\n01100000\n00000000\n01100000\n01100000\n00000000\n00000000\n00000000\n00000000\n01100110\n01100110\n00000000\nCHAR 10436\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n01100000\n01100000\n00000000\n01100110\n01100110\n00000000\nCHAR 10437\n00000000\n01100000\n01100000\n00000000\n00000000\n00000000\n00000000\n01100000\n01100000\n00000000\n01100110\n01100110\n00000000\nCHAR 10438\n00000000\n00000000\n00000000\n00000000\n01100000\n01100000\n00000000\n01100000\n01100000\n00000000\n01100110\n01100110\n00000000\nCHAR 10439\n00000000\n01100000\n01100000\n00000000\n01100000\n01100000\n00000000\n01100000\n01100000\n00000000\n01100110\n01100110\n00000000\nCHAR 10440\n00000000\n00000110\n00000110\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n01100110\n01100110\n00000000\nCHAR 10441\n00000000\n01100110\n01100110\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n01100110\n01100110\n00000000\nCHAR 10442\n00000000\n00000110\n00000110\n00000000\n01100000\n01100000\n00000000\n00000000\n00000000\n00000000\n01100110\n01100110\n00000000\nCHAR 10443\n00000000\n01100110\n01100110\n00000000\n01100000\n01100000\n00000000\n00000000\n00000000\n00000000\n01100110\n01100110\n00000000\nCHAR 10444\n00000000\n00000110\n00000110\n00000000\n00000000\n00000000\n00000000\n01100000\n01100000\n00000000\n01100110\n01100110\n00000000\nCHAR 10445\n00000000\n01100110\n01100110\n00000000\n00000000\n00000000\n00000000\n01100000\n01100000\n00000000\n01100110\n01100110\n00000000\nCHAR 10446\n00000000\n00000110\n00000110\n00000000\n01100000\n01100000\n00000000\n01100000\n01100000\n00000000\n01100110\n01100110\n00000000\nCHAR 10447\n00000000\n01100110\n01100110\n00000000\n01100000\n01100000\n00000000\n01100000\n01100000\n00000000\n01100110\n01100110\n00000000\nCHAR 10448\n00000000\n00000000\n00000000\n00000000\n00000110\n00000110\n00000000\n00000000\n00000000\n00000000\n01100110\n01100110\n00000000\nCHAR 10449\n00000000\n01100000\n01100000\n00000000\n00000110\n00000110\n00000000\n00000000\n00000000\n00000000\n01100110\n01100110\n00000000\nCHAR 10450\n00000000\n00000000\n00000000\n00000000\n01100110\n01100110\n00000000\n00000000\n00000000\n00000000\n01100110\n01100110\n00000000\nCHAR 10451\n00000000\n01100000\n01100000\n00000000\n01100110\n01100110\n00000000\n00000000\n00000000\n00000000\n01100110\n01100110\n00000000\nCHAR 10452\n00000000\n00000000\n00000000\n00000000\n00000110\n00000110\n00000000\n01100000\n01100000\n00000000\n01100110\n01100110\n00000000\nCHAR 10453\n00000000\n01100000\n01100000\n00000000\n00000110\n00000110\n00000000\n01100000\n01100000\n00000000\n01100110\n01100110\n00000000\nCHAR 10454\n00000000\n00000000\n00000000\n00000000\n01100110\n01100110\n00000000\n01100000\n01100000\n00000000\n01100110\n01100110\n00000000\nCHAR 10455\n00000000\n01100000\n01100000\n00000000\n01100110\n01100110\n00000000\n01100000\n01100000\n00000000\n01100110\n01100110\n00000000\nCHAR 10456\n00000000\n00000110\n00000110\n00000000\n00000110\n00000110\n00000000\n00000000\n00000000\n00000000\n01100110\n01100110\n00000000\nCHAR 10457\n00000000\n01100110\n01100110\n00000000\n00000110\n00000110\n00000000\n00000000\n00000000\n00000000\n01100110\n01100110\n00000000\nCHAR 10458\n00000000\n00000110\n00000110\n00000000\n01100110\n01100110\n00000000\n00000000\n00000000\n00000000\n01100110\n01100110\n00000000\nCHAR 10459\n00000000\n01100110\n01100110\n00000000\n01100110\n01100110\n00000000\n00000000\n00000000\n00000000\n01100110\n01100110\n00000000\nCHAR 10460\n00000000\n00000110\n00000110\n00000000\n00000110\n00000110\n00000000\n01100000\n01100000\n00000000\n01100110\n01100110\n00000000\nCHAR 10461\n00000000\n01100110\n01100110\n00000000\n00000110\n00000110\n00000000\n01100000\n01100000\n00000000\n01100110\n01100110\n00000000\nCHAR 10462\n00000000\n00000110\n00000110\n00000000\n01100110\n01100110\n00000000\n01100000\n01100000\n00000000\n01100110\n01100110\n00000000\nCHAR 10463\n00000000\n01100110\n01100110\n00000000\n01100110\n01100110\n00000000\n01100000\n01100000\n00000000\n01100110\n01100110\n00000000\nCHAR 10464\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000110\n00000110\n00000000\n01100110\n01100110\n00000000\nCHAR 10465\n00000000\n01100000\n01100000\n00000000\n00000000\n00000000\n00000000\n00000110\n00000110\n00000000\n01100110\n01100110\n00000000\nCHAR 10466\n00000000\n00000000\n00000000\n00000000\n01100000\n01100000\n00000000\n00000110\n00000110\n00000000\n01100110\n01100110\n00000000\nCHAR 10467\n00000000\n01100000\n01100000\n00000000\n01100000\n01100000\n00000000\n00000110\n00000110\n00000000\n01100110\n01100110\n00000000\nCHAR 10468\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n01100110\n01100110\n00000000\n01100110\n01100110\n00000000\nCHAR 10469\n00000000\n01100000\n01100000\n00000000\n00000000\n00000000\n00000000\n01100110\n01100110\n00000000\n01100110\n01100110\n00000000\nCHAR 10470\n00000000\n00000000\n00000000\n00000000\n01100000\n01100000\n00000000\n01100110\n01100110\n00000000\n01100110\n01100110\n00000000\nCHAR 10471\n00000000\n01100000\n01100000\n00000000\n01100000\n01100000\n00000000\n01100110\n01100110\n00000000\n01100110\n01100110\n00000000\nCHAR 10472\n00000000\n00000110\n00000110\n00000000\n00000000\n00000000\n00000000\n00000110\n00000110\n00000000\n01100110\n01100110\n00000000\nCHAR 10473\n00000000\n01100110\n01100110\n00000000\n00000000\n00000000\n00000000\n00000110\n00000110\n00000000\n01100110\n01100110\n00000000\nCHAR 10474\n00000000\n00000110\n00000110\n00000000\n01100000\n01100000\n00000000\n00000110\n00000110\n00000000\n01100110\n01100110\n00000000\nCHAR 10475\n00000000\n01100110\n01100110\n00000000\n01100000\n01100000\n00000000\n00000110\n00000110\n00000000\n01100110\n01100110\n00000000\nCHAR 10476\n00000000\n00000110\n00000110\n00000000\n00000000\n00000000\n00000000\n01100110\n01100110\n00000000\n01100110\n01100110\n00000000\nCHAR 10477\n00000000\n01100110\n01100110\n00000000\n00000000\n00000000\n00000000\n01100110\n01100110\n00000000\n01100110\n01100110\n00000000\nCHAR 10478\n00000000\n00000110\n00000110\n00000000\n01100000\n01100000\n00000000\n01100110\n01100110\n00000000\n01100110\n01100110\n00000000\nCHAR 10479\n00000000\n01100110\n01100110\n00000000\n01100000\n01100000\n00000000\n01100110\n01100110\n00000000\n01100110\n01100110\n00000000\nCHAR 10480\n00000000\n00000000\n00000000\n00000000\n00000110\n00000110\n00000000\n00000110\n00000110\n00000000\n01100110\n01100110\n00000000\nCHAR 10481\n00000000\n01100000\n01100000\n00000000\n00000110\n00000110\n00000000\n00000110\n00000110\n00000000\n01100110\n01100110\n00000000\nCHAR 10482\n00000000\n00000000\n00000000\n00000000\n01100110\n01100110\n00000000\n00000110\n00000110\n00000000\n01100110\n01100110\n00000000\nCHAR 10483\n00000000\n01100000\n01100000\n00000000\n01100110\n01100110\n00000000\n00000110\n00000110\n00000000\n01100110\n01100110\n00000000\nCHAR 10484\n00000000\n00000000\n00000000\n00000000\n00000110\n00000110\n00000000\n01100110\n01100110\n00000000\n01100110\n01100110\n00000000\nCHAR 10485\n00000000\n01100000\n01100000\n00000000\n00000110\n00000110\n00000000\n01100110\n01100110\n00000000\n01100110\n01100110\n00000000\nCHAR 10486\n00000000\n00000000\n00000000\n00000000\n01100110\n01100110\n00000000\n01100110\n01100110\n00000000\n01100110\n01100110\n00000000\nCHAR 10487\n00000000\n01100000\n01100000\n00000000\n01100110\n01100110\n00000000\n01100110\n01100110\n00000000\n01100110\n01100110\n00000000\nCHAR 10488\n00000000\n00000110\n00000110\n00000000\n00000110\n00000110\n00000000\n00000110\n00000110\n00000000\n01100110\n01100110\n00000000\nCHAR 10489\n00000000\n01100110\n01100110\n00000000\n00000110\n00000110\n00000000\n00000110\n00000110\n00000000\n01100110\n01100110\n00000000\nCHAR 10490\n00000000\n00000110\n00000110\n00000000\n01100110\n01100110\n00000000\n00000110\n00000110\n00000000\n01100110\n01100110\n00000000\nCHAR 10491\n00000000\n01100110\n01100110\n00000000\n01100110\n01100110\n00000000\n00000110\n00000110\n00000000\n01100110\n01100110\n00000000\nCHAR 10492\n00000000\n00000110\n00000110\n00000000\n00000110\n00000110\n00000000\n01100110\n01100110\n00000000\n01100110\n01100110\n00000000\nCHAR 10493\n00000000\n01100110\n01100110\n00000000\n00000110\n00000110\n00000000\n01100110\n01100110\n00000000\n01100110\n01100110\n00000000\nCHAR 10494\n00000000\n00000110\n00000110\n00000000\n01100110\n01100110\n00000000\n01100110\n01100110\n00000000\n01100110\n01100110\n00000000\nCHAR 10495\n00000000\n01100110\n01100110\n00000000\n01100110\n01100110\n00000000\n01100110\n01100110\n00000000\n01100110\n01100110\n00000000\nCHAR 10752\n00000000\n00111000\n01000100\n10000010\n10000010\n10010010\n10111010\n10010010\n10000010\n10000010\n01000100\n00111000\n00000000\nCHAR 10753\n00000000\n00111000\n01010100\n10010010\n10010010\n10010010\n11111110\n10010010\n10010010\n10010010\n01010100\n00111000\n00000000\nCHAR 10754\n00000000\n00111000\n01000100\n10101010\n10101010\n10010010\n10010010\n10010010\n10101010\n10101010\n01000100\n00111000\n00000000\nCHAR 10755\n00000000\n10000010\n10000010\n10000010\n10000010\n10010010\n10111010\n10010010\n10000010\n10000010\n01000100\n00111000\n00000000\nCHAR 10756\n00000000\n10000010\n10000010\n10010010\n10010010\n10010010\n11111110\n10010010\n10010010\n10010010\n01000100\n00111000\n00000000\nCHAR 10757\n00000000\n11111110\n10000010\n10000010\n10000010\n10000010\n10000010\n10000010\n10000010\n10000010\n10000010\n10000010\n00000000\nCHAR 10758\n00000000\n10000010\n10000010\n10000010\n10000010\n10000010\n10000010\n10000010\n10000010\n10000010\n10000010\n11111110\n00000000\nCHAR 10759\n00000000\n00101000\n00101000\n00101000\n01010100\n01010100\n01010100\n01010100\n10101010\n10101010\n10101010\n10101010\n00000000\nCHAR 10760\n00000000\n10101010\n10101010\n10101010\n10101010\n01010100\n01010100\n01010100\n01010100\n00101000\n00101000\n00101000\n00000000\nCHAR 10761\n00000000\n10000010\n01000100\n01000100\n00101000\n00101000\n00010000\n00101000\n00101000\n01000100\n01000100\n10000010\n00000000\nCHAR 10781\n00000000\n00000000\n01000100\n01101100\n01101100\n01010100\n01010100\n01010100\n01101100\n01101100\n01000100\n00000000\n00000000\nCHAR 10815\n00000000\n00000000\n00000000\n00000000\n01110110\n00100100\n00100100\n00100100\n00100100\n00100100\n01111110\n00000000\n00000000\nCHAR 12351\n00000000\n00000000\n11111110\n11000110\n10101010\n10101010\n10010010\n10101010\n10101010\n11000110\n11111110\n00000000\n00000000\nCHAR 64256\n00000000\n00000000\n00100100\n01011010\n01001000\n01001000\n11111100\n01001000\n01001000\n01001000\n01001000\n00000000\n00000000\nCHAR 64257\n00000000\n00000000\n00011000\n00100100\n00100000\n00100100\n01111100\n00100100\n00100100\n00100100\n00100100\n00000000\n00000000\nCHAR 64258\n00000000\n00000000\n00011010\n00100110\n00100010\n00100010\n01111110\n00100010\n00100010\n00100010\n00100010\n00000000\n00000000\nCHAR 64259\n00000000\n00000000\n00110100\n01001010\n01001000\n01001000\n11111111\n01001001\n01001001\n01001001\n01001001\n00000000\n00000000\nCHAR 64260\n00000000\n00000000\n00110110\n01001001\n01001001\n01001001\n11111111\n01001001\n01001001\n01001001\n01001001\n00000000\n00000000\nCHAR 64261\n00000000\n00000000\n00110000\n01001000\n01001000\n01001000\n11011110\n01001000\n01001000\n01001010\n01000100\n00000000\n00000000\nCHAR 64262\n00000000\n00000000\n00011000\n00101000\n00101000\n01101110\n10001000\n01001000\n00101000\n00101010\n11000100\n00000000\n00000000\nCHAR 64275\n00000000\n00000000\n00010000\n00101000\n00100000\n10111010\n10101010\n10101010\n10101010\n10101010\n01100110\n00000000\n00000000\nCHAR 64276\n00000000\n00000000\n00011000\n00101000\n00101000\n10101110\n10101000\n10101010\n10101010\n10101010\n01100110\n00000000\n00000000\nCHAR 64277\n00000000\n00000000\n00011000\n00101000\n00101000\n10101100\n10101010\n10101010\n10101010\n10101010\n01101010\n00001000\n00001000\nCHAR 64278\n00000000\n00000000\n10100000\n01100000\n00100000\n10111010\n10101010\n10101010\n10101010\n10101010\n01100110\n00100000\n00110000\nCHAR 64279\n00000000\n00000000\n00110000\n01010000\n01010000\n11011010\n11010110\n11010110\n11010110\n11010110\n11010110\n00010000\n00010000\nCHAR 64285\n00000000\n00000000\n00000000\n00000000\n00011000\n00001000\n00001000\n00001000\n00000000\n00001000\n00000000\n00000000\n00000000\nCHAR 64286\n00000000\n01001000\n01001000\n00110000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 64287\n00000000\n00000000\n00000000\n00000000\n00000000\n01101100\n00100100\n00100100\n00000000\n01111100\n00000000\n00000000\n00000000\nCHAR 64288\n00000000\n00000000\n00000000\n00000000\n00000000\n01000110\n00100010\n00100010\n00010010\n00010100\n01111000\n00000000\n00000000\nCHAR 64289\n00000000\n00000000\n00000000\n00000000\n00000000\n01000100\n00100010\n00111100\n01000100\n01000010\n01100010\n00000000\n00000000\nCHAR 64290\n00000000\n00000000\n00000000\n00000000\n00000000\n01111110\n00000100\n00000100\n00000100\n00000100\n00000100\n00000000\n00000000\nCHAR 64291\n00000000\n00000000\n00000000\n00000000\n00000000\n01111110\n00000010\n00000010\n01000010\n01000010\n01000010\n00000000\n00000000\nCHAR 64292\n00000000\n00000000\n00000000\n00000000\n00000000\n01111110\n00000010\n00000010\n00000010\n00000010\n01111100\n00000000\n00000000\nCHAR 64293\n00000000\n00000000\n01000000\n01000000\n01000000\n01111110\n00000010\n00000010\n00000010\n00000100\n00111000\n00000000\n00000000\nCHAR 64294\n00000000\n00000000\n00000000\n00000000\n01111110\n00100010\n00100010\n00100010\n00100010\n00100010\n00111110\n00000000\n00000000\nCHAR 64295\n00000000\n00000000\n00000000\n00000000\n01111110\n00000010\n00000010\n00000010\n00000010\n00000010\n00000010\n00000000\n00000000\nCHAR 64296\n00000000\n00000000\n00000000\n00000000\n01111110\n00100010\n00100010\n00100010\n00100010\n00100010\n01100010\n00000000\n00000000\nCHAR 64297\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00010000\n00010000\n01111100\n00000000\n00000000\nCHAR 64298\n00000000\n00000000\n00000000\n00000100\n00000000\n10010010\n10010010\n10010010\n11100010\n10000100\n11111000\n00000000\n00000000\nCHAR 64299\n00000000\n00000000\n00000000\n00100000\n00000000\n10010010\n10010010\n10010010\n11100010\n10000100\n11111000\n00000000\n00000000\nCHAR 64300\n00000000\n00000000\n00000000\n00000100\n00000000\n10010010\n10010010\n10100010\n11010010\n10000100\n11111000\n00000000\n00000000\nCHAR 64301\n00000000\n00000000\n00000000\n01000000\n00000000\n10010010\n10010010\n10100010\n11010010\n10000100\n11111000\n00000000\n00000000\nCHAR 64302\n00000000\n00000000\n00000000\n00000000\n01000100\n00100010\n00111100\n01000100\n01000010\n01100010\n00000000\n00111100\n00000000\nCHAR 64303\n00000000\n00000000\n00000000\n00000000\n01000100\n00100010\n00111100\n01000100\n01000010\n01100010\n00000000\n00011100\n00001000\nCHAR 64304\n00000000\n00000000\n00000000\n00000000\n00000000\n01000100\n00100010\n00111100\n01000100\n01000010\n01100010\n00001000\n00000000\nCHAR 64305\n00000000\n00000000\n00000000\n00000000\n00000000\n01111100\n00000100\n00100100\n00000100\n00000100\n01111110\n00000000\n00000000\nCHAR 64306\n00000000\n00000000\n00000000\n00000000\n00110000\n00001000\n00000100\n00100100\n00001100\n00010010\n01100010\n00000000\n00000000\nCHAR 64307\n00000000\n00000000\n00000000\n00000000\n00000000\n01111110\n00000100\n00000100\n00100100\n00000100\n00000100\n00000000\n00000000\nCHAR 64308\n00000000\n00000000\n00000000\n00000000\n00000000\n01111110\n00000010\n00000010\n01010010\n01000010\n01000010\n00000000\n00000000\nCHAR 64309\n00000000\n00000000\n00000000\n00000000\n00000000\n00001100\n00000100\n00000100\n00010100\n00000100\n00000100\n00000000\n00000000\nCHAR 64310\n00000000\n00000000\n00000000\n00000000\n00000000\n01111110\n00001000\n00001000\n00000100\n00100100\n00000100\n00000000\n00000000\nCHAR 64312\n00000000\n00000000\n00000000\n00000000\n00000000\n01000110\n01000010\n01010010\n01000010\n01000010\n01111110\n00000000\n00000000\nCHAR 64313\n00000000\n00000000\n00000000\n00000000\n00000000\n00001100\n00000100\n00100100\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 64314\n00000000\n00000000\n00000000\n00000000\n00000000\n01111110\n00000010\n00000010\n00010010\n00000010\n00000010\n00000010\n00000010\nCHAR 64315\n00000000\n00000000\n00000000\n00000000\n00000000\n01111110\n00000010\n00010010\n00000010\n00000010\n01111100\n00000000\n00000000\nCHAR 64316\n00000000\n00000000\n01000000\n01000000\n01000000\n01111110\n00000010\n00010010\n00000010\n00000100\n00111000\n00000000\n00000000\nCHAR 64318\n00000000\n00000000\n00000000\n00000000\n00000000\n01011100\n00100010\n01000010\n01001010\n01000010\n01011110\n00000000\n00000000\nCHAR 64320\n00000000\n00000000\n00000000\n00000000\n00000000\n00001100\n00000100\n00100100\n00000100\n00000100\n00111100\n00000000\n00000000\nCHAR 64321\n00000000\n00000000\n00000000\n00000000\n00000000\n01111110\n01000010\n01010010\n01000010\n01000100\n01111000\n00000000\n00000000\nCHAR 64323\n00000000\n00000000\n00000000\n00000000\n00000000\n00111110\n01000010\n01000010\n00010010\n00000010\n00000010\n00000010\n00000010\nCHAR 64324\n00000000\n00000000\n00000000\n00000000\n00000000\n00111110\n01000010\n01010010\n00000010\n00000010\n01111100\n00000000\n00000000\nCHAR 64326\n00000000\n00000000\n00000000\n00000000\n00000000\n01100010\n00010010\n00001100\n01000100\n00000010\n01111110\n00000000\n00000000\nCHAR 64327\n00000000\n00000000\n00000000\n00000000\n00000000\n01111110\n00000010\n01010010\n01000010\n01000010\n01011100\n01000000\n01000000\nCHAR 64328\n00000000\n00000000\n00000000\n00000000\n00000000\n01111100\n00000010\n00010010\n00000010\n00000010\n00000010\n00000000\n00000000\nCHAR 64329\n00000000\n00000000\n00000000\n00000000\n00000000\n10010010\n10010010\n10100010\n11010010\n10000010\n11111100\n00000000\n00000000\nCHAR 64330\n00000000\n00000000\n00000000\n00000000\n00000000\n01111110\n00100010\n00101010\n00100010\n00100010\n01100010\n00000000\n00000000\nCHAR 64331\n00000000\n00000000\n00000000\n00010000\n00000000\n00011000\n00001000\n00001000\n00001000\n00001000\n00001000\n00000000\n00000000\nCHAR 64332\n00000000\n00000000\n00000000\n00111000\n00000000\n01111100\n00000100\n00000100\n00000100\n00000100\n01111110\n00000000\n00000000\nCHAR 64333\n00000000\n00000000\n00000000\n00111100\n00000000\n01111110\n00000010\n00000010\n00000010\n00000010\n01111100\n00000000\n00000000\nCHAR 64334\n00000000\n00000000\n00000000\n00111100\n00000000\n00111110\n01000010\n01000010\n00000010\n00000010\n01111100\n00000000\n00000000\nCHAR 64335\n00000000\n00000000\n01000000\n01000000\n01000100\n00100010\n00010010\n00101100\n01000100\n01000010\n01100010\n00000000\n00000000\nCHAR 65056\n00011111\n01100000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 65057\n11111000\n00000110\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 65058\n00011111\n01100000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 65059\n00000110\n11111000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 65377\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00010000\n00101000\n00010000\n00000000\n00000000\nCHAR 65378\n00000000\n00000000\n00110000\n00100000\n00100000\n00100000\n00100000\n00100000\n00100000\n00100000\n00100000\n00000000\n00000000\nCHAR 65379\n00000000\n00000000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00110000\n00000000\n00000000\nCHAR 65380\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00110000\n00100000\n00010000\n00000000\n00000000\nCHAR 65381\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00010000\n00111000\n00010000\n00000000\n00000000\n00000000\n00000000\nCHAR 65382\n00000000\n00000000\n01111110\n00000010\n00000010\n01111100\n00000100\n00001000\n00010000\n00100000\n01000000\n00000000\n00000000\nCHAR 65383\n00000000\n00000000\n00000000\n00000000\n00000000\n01111100\n00000100\n00101000\n00110000\n00100000\n01000000\n00000000\n00000000\nCHAR 65384\n00000000\n00000000\n00000000\n00000000\n00000000\n00000100\n00011000\n00110000\n01010000\n00010000\n00010000\n00000000\n00000000\nCHAR 65385\n00000000\n00000000\n00000000\n00000000\n00000000\n00010000\n01111100\n01000100\n00000100\n00001000\n00010000\n00000000\n00000000\nCHAR 65386\n00000000\n00000000\n00000000\n00000000\n00000000\n00111000\n00010000\n00010000\n00010000\n00010000\n01111100\n00000000\n00000000\nCHAR 65387\n00000000\n00000000\n00000000\n00000000\n00000000\n00010000\n01111100\n00110000\n01010000\n00010000\n00100000\n00000000\n00000000\nCHAR 65388\n00000000\n00000000\n00000000\n00000000\n00000000\n00100000\n01111100\n00100100\n00101000\n00100000\n00010000\n00000000\n00000000\nCHAR 65389\n00000000\n00000000\n00000000\n00000000\n00000000\n01111000\n00001000\n00001000\n00001000\n00001000\n01111100\n00000000\n00000000\nCHAR 65390\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n00000100\n00111100\n00000100\n00000100\n00111100\n00000000\n00000000\nCHAR 65391\n00000000\n00000000\n00000000\n00000000\n00000000\n00100010\n10010010\n01000100\n00001000\n00010000\n00100000\n00000000\n00000000\nCHAR 65392\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n01111110\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 65393\n00000000\n01111110\n00000010\n00000010\n00010100\n00011000\n00010000\n00010000\n00010000\n00100000\n00100000\n00000000\n00000000\nCHAR 65394\n00000000\n00000000\n00000010\n00000100\n00001000\n00011000\n00101000\n01001000\n00001000\n00001000\n00001000\n00000000\n00000000\nCHAR 65395\n00000000\n00010000\n00010000\n01111110\n01000010\n01000010\n00000100\n00000100\n00001000\n00010000\n00100000\n00000000\n00000000\nCHAR 65396\n00000000\n00000000\n00111000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n00010000\n01111100\n00000000\n00000000\nCHAR 65397\n00000000\n00000000\n00001000\n00001000\n01111110\n00011000\n00101000\n01001000\n00001000\n00101000\n00010000\n00000000\n00000000\nCHAR 65398\n00000000\n00000000\n00100000\n00100000\n01111110\n00100010\n00100010\n00100010\n01000010\n01000010\n10000100\n00000000\n00000000\nCHAR 65399\n00000000\n00000000\n00010000\n00011100\n01110000\n00010000\n00011110\n11110000\n00010000\n00010000\n00010000\n00000000\n00000000\nCHAR 65400\n00000000\n00010000\n00010000\n00011110\n00100010\n01000010\n00000100\n00000100\n00001000\n00010000\n00100000\n00000000\n00000000\nCHAR 65401\n00000000\n00100000\n00100000\n00111110\n01001000\n10001000\n00001000\n00001000\n00010000\n00010000\n00100000\n00000000\n00000000\nCHAR 65402\n00000000\n00000000\n01111100\n00000100\n00000100\n00000100\n00000100\n00000100\n00000100\n00000100\n01111100\n00000000\n00000000\nCHAR 65403\n00000000\n00000000\n00100100\n00100100\n01111110\n00100100\n00100100\n00001000\n00001000\n00010000\n00100000\n00000000\n00000000\nCHAR 65404\n00000000\n00000000\n00100010\n00010010\n01000010\n00100100\n00000100\n00001000\n00010000\n00100000\n01000000\n00000000\n00000000\nCHAR 65405\n00000000\n00000000\n01111110\n00000010\n00000010\n00000100\n00000100\n00001000\n00010100\n00100010\n01000010\n00000000\n00000000\nCHAR 65406\n00000000\n00000000\n00100000\n00100000\n01111100\n00100100\n00101000\n00100000\n00100000\n00101000\n00010000\n00000000\n00000000\nCHAR 65407\n00000000\n00000000\n01000010\n01000010\n00100010\n00000100\n00000100\n00001000\n00010000\n00100000\n01000000\n00000000\n00000000\nCHAR 65408\n00000000\n00010000\n00010000\n00011110\n00100010\n01010010\n00001100\n00000100\n00001000\n00010000\n00100000\n00000000\n00000000\nCHAR 65409\n00000000\n00000000\n01111100\n00010000\n00010000\n01111100\n00010000\n00010000\n00100000\n00100000\n01000000\n00000000\n00000000\nCHAR 65410\n00000000\n00000000\n00010010\n01010010\n01000010\n00000100\n00000100\n00001000\n00010000\n00100000\n01000000\n00000000\n00000000\nCHAR 65411\n00000000\n00000000\n01111100\n00000000\n01111100\n00010000\n00010000\n00010000\n00010000\n00100000\n01000000\n00000000\n00000000\nCHAR 65412\n00000000\n00000000\n00100000\n00100000\n00100000\n00110000\n00101000\n00100100\n00100000\n00100000\n00100000\n00000000\n00000000\nCHAR 65413\n00000000\n00000000\n00010000\n00010000\n01111100\n00010000\n00010000\n00010000\n00010000\n00100000\n01000000\n00000000\n00000000\nCHAR 65414\n00000000\n00000000\n00000000\n00000000\n00000000\n00111100\n00000000\n00000000\n00000000\n01111110\n00000000\n00000000\n00000000\nCHAR 65415\n00000000\n00000000\n01111110\n00000010\n00000010\n00100100\n00010100\n00001000\n00010100\n00100010\n01000010\n00000000\n00000000\nCHAR 65416\n00000000\n00000000\n01111110\n00000010\n00000010\n00000100\n00001000\n00010100\n01101010\n00001000\n00001000\n00000000\n00000000\nCHAR 65417\n00000000\n00000000\n00000010\n00000010\n00000010\n00000100\n00000100\n00001000\n00010000\n00100000\n01000000\n00000000\n00000000\nCHAR 65418\n00000000\n00000000\n00101000\n00101000\n00100100\n00100100\n00100010\n01000010\n01000010\n01000010\n10000010\n00000000\n00000000\nCHAR 65419\n00000000\n00000000\n01000000\n01000100\n01001000\n01010000\n01100000\n01000100\n01001000\n01010000\n01100000\n00000000\n00000000\nCHAR 65420\n00000000\n00000000\n01111110\n00000010\n00000010\n00000100\n00000100\n00001000\n00010000\n00100000\n01000000\n00000000\n00000000\nCHAR 65421\n00000000\n00000000\n00000000\n00000000\n00000000\n00010000\n00101000\n00100100\n01000100\n01000010\n10000010\n00000000\n00000000\nCHAR 65422\n00000000\n00000000\n00010000\n00010000\n01111100\n00010000\n01010100\n01010100\n10010010\n00010000\n00100000\n00000000\n00000000\nCHAR 65423\n00000000\n00000000\n01111110\n00000010\n00000010\n00100100\n00010100\n00001000\n00000100\n00000010\n00000010\n00000000\n00000000\nCHAR 65424\n00000000\n00000000\n01100000\n00011000\n00000100\n01100000\n00011000\n00000100\n01100000\n00011000\n00000110\n00000000\n00000000\nCHAR 65425\n00000000\n00000000\n00000010\n00000100\n00001000\n00010000\n00100100\n00100100\n01000010\n01111110\n01000010\n00000000\n00000000\nCHAR 65426\n00000000\n00000000\n00000010\n00000010\n01000010\n00100100\n00010100\n00001000\n00010100\n00100010\n01000010\n00000000\n00000000\nCHAR 65427\n00000000\n00000000\n00111000\n00010000\n00010000\n01111100\n00010000\n00010000\n00010000\n00010010\n00001100\n00000000\n00000000\nCHAR 65428\n00000000\n00000000\n00010000\n00010000\n01111110\n00010010\n00010100\n00010000\n00010000\n00001000\n00000100\n00000000\n00000000\nCHAR 65429\n00000000\n00000000\n01111000\n00001000\n00001000\n00001000\n00001000\n00001000\n00001000\n00001000\n01111110\n00000000\n00000000\nCHAR 65430\n00000000\n00000000\n01111110\n00000010\n00000010\n00000010\n01111110\n00000010\n00000010\n00000010\n01111110\n00000010\n00000000\nCHAR 65431\n00000000\n00000000\n01111100\n00000000\n01111100\n00000100\n00001000\n00001000\n00010000\n00100000\n01000000\n00000000\n00000000\nCHAR 65432\n00000000\n00000000\n01000010\n01000010\n01000010\n01000100\n00000100\n00001000\n00010000\n00100000\n01000000\n00000000\n00000000\nCHAR 65433\n00000000\n00000000\n01010000\n01010000\n01010000\n01010000\n01010010\n01010010\n01010100\n01011000\n10010000\n00000000\n00000000\nCHAR 65434\n00000000\n01000000\n01000000\n01000000\n01000000\n01000000\n01000100\n01000100\n01001000\n01010000\n01100000\n00000000\n00000000\nCHAR 65435\n00000000\n00000000\n01111110\n01000010\n01000010\n01000010\n01000010\n01000010\n01000010\n01111110\n01000010\n00000000\n00000000\nCHAR 65436\n00000000\n00000000\n01111110\n01000010\n01000010\n00000100\n00000100\n00001000\n00010000\n00100000\n01000000\n00000000\n00000000\nCHAR 65437\n00000000\n00000000\n01000010\n00110010\n00000010\n00000100\n00000100\n00001000\n00010000\n01100000\n01000000\n00000000\n00000000\nCHAR 65438\n00000000\n00000000\n00001000\n00001100\n00110000\n00010000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 65439\n00000000\n00000000\n00010000\n00101000\n00010000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\n00000000\nCHAR 65533\n00000000\n00000000\n01111100\n11000110\n10111010\n11110110\n11101110\n11101110\n11111110\n11101110\n01111100\n00000000\n00000000", @@ -9,18 +9,18 @@ var Resources = { "exportTemplate.html": "\n\n\n\n\n\n\n\n@@T\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\n\t\n\n\n\n", "exportStyleFixed.css": "/*html { height: 592px; }*/\n\nbody {\n\twidth:100%;\n\theight:100%;\n\toverflow:hidden;\n\tbackground:@@B;\n}\n\n#game {\n\tbackground:black;\n\tmargin: 0 auto;\n\tmargin-top: 40px;\n\tdisplay: block;\n\twidth:@@Z;\n\theight:@@Z;\n}", "exportStyleFull.css": "html {\n\tmargin:0px;\n\tpadding:0px;\n}\n\nbody {\n\tmargin:0px;\n\tpadding:0px;\n\toverflow:hidden;\n\tbackground:@@B;\n}\n\n#game {\n\tbackground:black;\n\twidth:100vw;\n\tmax-width:100vh;\n\tmargin:auto;\n\tdisplay:block;\n}", - "input.js": "function InputSystem() {\n\tvar self = this;\n\n\tthis.Key = {\n\t\tLEFT: 37,\n\t\tRIGHT: 39,\n\t\tUP: 38,\n\t\tDOWN: 40,\n\t\tSPACE: 32,\n\t\tENTER: 13,\n\t\tW: 87,\n\t\tA: 65,\n\t\tS: 83,\n\t\tD: 68,\n\t\tR: 82,\n\t\tSHIFT: 16,\n\t\tCTRL: 17,\n\t\tALT: 18,\n\t\tCMD: 224\n\t};\n\n\tvar pressed;\n\tvar ignored;\n\tvar touchState;\n\n\tvar isRestartComboPressed = false;\n\n\tvar SwipeDir = {\n\t\tNone : -1,\n\t\tUp : 0,\n\t\tDown : 1,\n\t\tLeft : 2,\n\t\tRight : 3,\n\t};\n\n\tfunction resetAll() {\n\t\tisRestartComboPressed = false;\n\n\t\tpressed = {};\n\t\tignored = {};\n\n\t\ttouchState = {\n\t\t\tisDown : false,\n\t\t\tstartX : 0,\n\t\t\tstartY : 0,\n\t\t\tcurX : 0,\n\t\t\tcurY : 0,\n\t\t\tswipeDistance : 30,\n\t\t\tswipeDirection : SwipeDir.None,\n\t\t\ttapReleased : false\n\t\t};\n\t}\n\n\tresetAll();\n\n\tfunction stopWindowScrolling(e) {\n\t\tif (e.keyCode == self.Key.LEFT || e.keyCode == self.Key.RIGHT || e.keyCode == self.Key.UP || e.keyCode == self.Key.DOWN || !isPlayerEmbeddedInEditor) {\n\t\t\te.preventDefault();\n\t\t}\n\t}\n\n\tfunction isRestartCombo(e) {\n\t\treturn (e.keyCode === self.Key.R && (e.getModifierState(\"Control\")|| e.getModifierState(\"Meta\")));\n\t}\n\n\tfunction eventIsModifier(event) {\n\t\treturn (event.keyCode == self.Key.SHIFT || event.keyCode == self.Key.CTRL || event.keyCode == self.Key.ALT || event.keyCode == self.Key.CMD);\n\t}\n\n\tfunction isModifierKeyDown() {\n\t\treturn (self.isKeyDown(self.Key.SHIFT) || self.isKeyDown(self.Key.CTRL) || self.isKeyDown(self.Key.ALT) || self.isKeyDown(self.Key.CMD));\n\t}\n\n\tthis.ignoreHeldKeys = function() {\n\t\tfor (var key in pressed) {\n\t\t\tif (pressed[key]) { // only ignore keys that are actually held\n\t\t\t\tignored[key] = true;\n\t\t\t\t// bitsyLog(\"IGNORE -- \" + key, \"system\");\n\t\t\t}\n\t\t}\n\t}\n\n\tthis.onkeydown = function(event) {\n\t\tenableGlobalAudioContext();\n\t\t// bitsyLog(\"KEYDOWN -- \" + event.keyCode, \"system\");\n\n\t\tstopWindowScrolling(event);\n\n\t\tisRestartComboPressed = isRestartCombo(event);\n\n\t\t// Special keys being held down can interfere with keyup events and lock movement\n\t\t// so just don't collect input when they're held\n\t\t{\n\t\t\tif (isModifierKeyDown()) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (eventIsModifier(event)) {\n\t\t\t\tresetAll();\n\t\t\t}\n\t\t}\n\n\t\tif (ignored[event.keyCode]) {\n\t\t\treturn;\n\t\t}\n\n\t\tpressed[event.keyCode] = true;\n\t\tignored[event.keyCode] = false;\n\t}\n\n\tthis.onkeyup = function(event) {\n\t\t// bitsyLog(\"KEYUP -- \" + event.keyCode, \"system\");\n\t\tpressed[event.keyCode] = false;\n\t\tignored[event.keyCode] = false;\n\t}\n\n\tthis.ontouchstart = function(event) {\n\t\tenableGlobalAudioContext();\n\n\t\tevent.preventDefault();\n\n\t\tif( event.changedTouches.length > 0 ) {\n\t\t\ttouchState.isDown = true;\n\n\t\t\ttouchState.startX = touchState.curX = event.changedTouches[0].clientX;\n\t\t\ttouchState.startY = touchState.curY = event.changedTouches[0].clientY;\n\n\t\t\ttouchState.swipeDirection = SwipeDir.None;\n\t\t}\n\t}\n\n\tthis.ontouchmove = function(event) {\n\t\tevent.preventDefault();\n\n\t\tif( touchState.isDown && event.changedTouches.length > 0 ) {\n\t\t\ttouchState.curX = event.changedTouches[0].clientX;\n\t\t\ttouchState.curY = event.changedTouches[0].clientY;\n\n\t\t\tvar prevDirection = touchState.swipeDirection;\n\n\t\t\tif( touchState.curX - touchState.startX <= -touchState.swipeDistance ) {\n\t\t\t\ttouchState.swipeDirection = SwipeDir.Left;\n\t\t\t}\n\t\t\telse if( touchState.curX - touchState.startX >= touchState.swipeDistance ) {\n\t\t\t\ttouchState.swipeDirection = SwipeDir.Right;\n\t\t\t}\n\t\t\telse if( touchState.curY - touchState.startY <= -touchState.swipeDistance ) {\n\t\t\t\ttouchState.swipeDirection = SwipeDir.Up;\n\t\t\t}\n\t\t\telse if( touchState.curY - touchState.startY >= touchState.swipeDistance ) {\n\t\t\t\ttouchState.swipeDirection = SwipeDir.Down;\n\t\t\t}\n\n\t\t\tif( touchState.swipeDirection != prevDirection ) {\n\t\t\t\t// reset center so changing directions is easier\n\t\t\t\ttouchState.startX = touchState.curX;\n\t\t\t\ttouchState.startY = touchState.curY;\n\t\t\t}\n\t\t}\n\t}\n\n\tthis.ontouchend = function(event) {\n\t\tevent.preventDefault();\n\n\t\ttouchState.isDown = false;\n\n\t\tif( touchState.swipeDirection == SwipeDir.None ) {\n\t\t\t// tap!\n\t\t\ttouchState.tapReleased = true;\n\t\t}\n\n\t\ttouchState.swipeDirection = SwipeDir.None;\n\t}\n\n\tthis.isKeyDown = function(keyCode) {\n\t\treturn pressed[keyCode] != null && pressed[keyCode] == true && (ignored[keyCode] == null || ignored[keyCode] == false);\n\t}\n\n\tthis.anyKeyDown = function() {\n\t\tvar anyKey = false;\n\n\t\tfor (var key in pressed) {\n\t\t\tif (pressed[key] && (ignored[key] == null || ignored[key] == false) &&\n\t\t\t\t!(key === self.Key.UP || key === self.Key.DOWN || key === self.Key.LEFT || key === self.Key.RIGHT) &&\n\t\t\t\t!(key === self.Key.W || key === self.Key.S || key === self.Key.A || key === self.Key.D)) {\n\t\t\t\t// detected that a key other than the d-pad keys are down!\n\t\t\t\tanyKey = true;\n\t\t\t}\n\t\t}\n\n\t\treturn anyKey;\n\t}\n\n\tthis.isRestartComboPressed = function() {\n\t\treturn isRestartComboPressed;\n\t}\n\n\tthis.swipeLeft = function() {\n\t\treturn touchState.swipeDirection == SwipeDir.Left;\n\t}\n\n\tthis.swipeRight = function() {\n\t\treturn touchState.swipeDirection == SwipeDir.Right;\n\t}\n\n\tthis.swipeUp = function() {\n\t\treturn touchState.swipeDirection == SwipeDir.Up;\n\t}\n\n\tthis.swipeDown = function() {\n\t\treturn touchState.swipeDirection == SwipeDir.Down;\n\t}\n\n\tthis.isTapReleased = function() {\n\t\treturn touchState.tapReleased;\n\t}\n\n\tthis.resetTapReleased = function() {\n\t\ttouchState.tapReleased = false;\n\t}\n\n\tthis.onblur = function() {\n\t\t// bitsyLog(\"~~~ BLUR ~~\", \"system\");\n\t\tresetAll();\n\t}\n\n\tthis.resetAll = resetAll;\n\n\tthis.listen = function(canvas) {\n\t\tdocument.addEventListener('keydown', self.onkeydown);\n\t\tdocument.addEventListener('keyup', self.onkeyup);\n\n\t\tif (isPlayerEmbeddedInEditor) {\n\t\t\tcanvas.addEventListener('touchstart', self.ontouchstart, {passive:false});\n\t\t\tcanvas.addEventListener('touchmove', self.ontouchmove, {passive:false});\n\t\t\tcanvas.addEventListener('touchend', self.ontouchend, {passive:false});\n\t\t}\n\t\telse {\n\t\t\t// creates a 'touchTrigger' element that covers the entire screen and can universally have touch event listeners added w/o issue.\n\n\t\t\t// we're checking for existing touchTriggers both at game start and end, so it's slightly redundant.\n\t\t\tvar existingTouchTrigger = document.querySelector('#touchTrigger');\n\n\t\t\tif (existingTouchTrigger === null) {\n\t\t\t\tvar touchTrigger = document.createElement(\"div\");\n\t\t\t\ttouchTrigger.setAttribute(\"id\",\"touchTrigger\");\n\n\t\t\t\t// afaik css in js is necessary here to force a fullscreen element\n\t\t\t\ttouchTrigger.setAttribute(\n\t\t\t\t\t\"style\",\"position: absolute; top: 0; left: 0; width: 100vw; height: 100vh; overflow: hidden;\"\n\t\t\t\t);\n\n\t\t\t\tdocument.body.appendChild(touchTrigger);\n\n\t\t\t\ttouchTrigger.addEventListener('touchstart', self.ontouchstart);\n\t\t\t\ttouchTrigger.addEventListener('touchmove', self.ontouchmove);\n\t\t\t\ttouchTrigger.addEventListener('touchend', self.ontouchend);\n\t\t\t}\n\t\t}\n\n\t\twindow.onblur = self.onblur;\n\t}\n\n\tthis.unlisten = function(canvas) {\n\t\tdocument.removeEventListener('keydown', self.onkeydown);\n\t\tdocument.removeEventListener('keyup', self.onkeyup);\n\n\t\tif (isPlayerEmbeddedInEditor) {\n\t\t\tcanvas.removeEventListener('touchstart', self.ontouchstart);\n\t\t\tcanvas.removeEventListener('touchmove', self.ontouchmove);\n\t\t\tcanvas.removeEventListener('touchend', self.ontouchend);\n\t\t}\n\t\telse {\n\t\t\t//check for touchTrigger and removes it\n\n\t\t\tvar existingTouchTrigger = document.querySelector('#touchTrigger');\n\n\t\t\tif (existingTouchTrigger !== null) {\n\t\t\t\texistingTouchTrigger.removeEventListener('touchstart', self.ontouchstart);\n\t\t\t\texistingTouchTrigger.removeEventListener('touchmove', self.ontouchmove);\n\t\t\t\texistingTouchTrigger.removeEventListener('touchend', self.ontouchend);\n\n\t\t\t\texistingTouchTrigger.parentElement.removeChild(existingTouchTrigger);\n\t\t\t}\n\t\t}\n\n\t\twindow.onblur = null;\n\t}\n}", + "input.js": "function InputSystem() {\n\tvar self = this;\n\n\tthis.Key = {\n\t\tLEFT: 37,\n\t\tRIGHT: 39,\n\t\tUP: 38,\n\t\tDOWN: 40,\n\t\tSPACE: 32,\n\t\tENTER: 13,\n\t\tW: 87,\n\t\tA: 65,\n\t\tS: 83,\n\t\tD: 68,\n\t\tR: 82,\n\t\tSHIFT: 16,\n\t\tCTRL: 17,\n\t\tALT: 18,\n\t\tCMD: 224\n\t};\n\n\tvar pressed;\n\tvar ignored;\n\tvar touchState;\n\n\tvar isRestartComboPressed = false;\n\n\tvar SwipeDir = {\n\t\tNone : -1,\n\t\tUp : 0,\n\t\tDown : 1,\n\t\tLeft : 2,\n\t\tRight : 3,\n\t};\n\n\tfunction resetAll() {\n\t\tisRestartComboPressed = false;\n\n\t\tpressed = {};\n\t\tignored = {};\n\n\t\ttouchState = {\n\t\t\tisDown : false,\n\t\t\tstartX : 0,\n\t\t\tstartY : 0,\n\t\t\tcurX : 0,\n\t\t\tcurY : 0,\n\t\t\tswipeDistance : 30,\n\t\t\tswipeDirection : SwipeDir.None,\n\t\t\ttapReleased : false\n\t\t};\n\t}\n\n\tresetAll();\n\n\tfunction stopWindowScrolling(e) {\n\t\tif (e.keyCode == self.Key.LEFT || e.keyCode == self.Key.RIGHT || e.keyCode == self.Key.UP || e.keyCode == self.Key.DOWN || !isPlayerEmbeddedInEditor) {\n\t\t\te.preventDefault();\n\t\t}\n\t}\n\n\tfunction isRestartCombo(e) {\n\t\treturn (e.keyCode === self.Key.R && (e.getModifierState(\"Control\")|| e.getModifierState(\"Meta\")));\n\t}\n\n\tfunction eventIsModifier(event) {\n\t\treturn (event.keyCode == self.Key.SHIFT || event.keyCode == self.Key.CTRL || event.keyCode == self.Key.ALT || event.keyCode == self.Key.CMD);\n\t}\n\n\tfunction isModifierKeyDown() {\n\t\treturn (self.isKeyDown(self.Key.SHIFT) || self.isKeyDown(self.Key.CTRL) || self.isKeyDown(self.Key.ALT) || self.isKeyDown(self.Key.CMD));\n\t}\n\n\tthis.ignoreHeldKeys = function() {\n\t\tfor (var key in pressed) {\n\t\t\tif (pressed[key]) { // only ignore keys that are actually held\n\t\t\t\tignored[key] = true;\n\t\t\t\t// bitsyLog(\"IGNORE -- \" + key, \"system\");\n\t\t\t}\n\t\t}\n\t}\n\n\tthis.onkeydown = function(event) {\n\t\tenableGlobalAudioContext();\n\t\t// bitsyLog(\"KEYDOWN -- \" + event.keyCode, \"system\");\n\n\t\tstopWindowScrolling(event);\n\n\t\tisRestartComboPressed = isRestartCombo(event);\n\n\t\t// Special keys being held down can interfere with keyup events and lock movement\n\t\t// so just don't collect input when they're held\n\t\t{\n\t\t\tif (isModifierKeyDown()) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (eventIsModifier(event)) {\n\t\t\t\tresetAll();\n\t\t\t}\n\t\t}\n\n\t\tif (ignored[event.keyCode]) {\n\t\t\treturn;\n\t\t}\n\n\t\tpressed[event.keyCode] = true;\n\t\tignored[event.keyCode] = false;\n\t}\n\n\tthis.onkeyup = function(event) {\n\t\t// bitsyLog(\"KEYUP -- \" + event.keyCode, \"system\");\n\t\tpressed[event.keyCode] = false;\n\t\tignored[event.keyCode] = false;\n\n\t\tisRestartComboPressed = false;\n\t}\n\n\tthis.ontouchstart = function(event) {\n\t\tenableGlobalAudioContext();\n\n\t\tevent.preventDefault();\n\n\t\tif( event.changedTouches.length > 0 ) {\n\t\t\ttouchState.isDown = true;\n\n\t\t\ttouchState.startX = touchState.curX = event.changedTouches[0].clientX;\n\t\t\ttouchState.startY = touchState.curY = event.changedTouches[0].clientY;\n\n\t\t\ttouchState.swipeDirection = SwipeDir.None;\n\t\t}\n\t}\n\n\tthis.ontouchmove = function(event) {\n\t\tevent.preventDefault();\n\n\t\tif( touchState.isDown && event.changedTouches.length > 0 ) {\n\t\t\ttouchState.curX = event.changedTouches[0].clientX;\n\t\t\ttouchState.curY = event.changedTouches[0].clientY;\n\n\t\t\tvar prevDirection = touchState.swipeDirection;\n\n\t\t\tif( touchState.curX - touchState.startX <= -touchState.swipeDistance ) {\n\t\t\t\ttouchState.swipeDirection = SwipeDir.Left;\n\t\t\t}\n\t\t\telse if( touchState.curX - touchState.startX >= touchState.swipeDistance ) {\n\t\t\t\ttouchState.swipeDirection = SwipeDir.Right;\n\t\t\t}\n\t\t\telse if( touchState.curY - touchState.startY <= -touchState.swipeDistance ) {\n\t\t\t\ttouchState.swipeDirection = SwipeDir.Up;\n\t\t\t}\n\t\t\telse if( touchState.curY - touchState.startY >= touchState.swipeDistance ) {\n\t\t\t\ttouchState.swipeDirection = SwipeDir.Down;\n\t\t\t}\n\n\t\t\tif( touchState.swipeDirection != prevDirection ) {\n\t\t\t\t// reset center so changing directions is easier\n\t\t\t\ttouchState.startX = touchState.curX;\n\t\t\t\ttouchState.startY = touchState.curY;\n\t\t\t}\n\t\t}\n\t}\n\n\tthis.ontouchend = function(event) {\n\t\tevent.preventDefault();\n\n\t\ttouchState.isDown = false;\n\n\t\tif( touchState.swipeDirection == SwipeDir.None ) {\n\t\t\t// tap!\n\t\t\ttouchState.tapReleased = true;\n\t\t}\n\n\t\ttouchState.swipeDirection = SwipeDir.None;\n\t}\n\n\tthis.isKeyDown = function(keyCode) {\n\t\treturn pressed[keyCode] != null && pressed[keyCode] == true && (ignored[keyCode] == null || ignored[keyCode] == false);\n\t}\n\n\tthis.anyKeyDown = function() {\n\t\tvar anyKey = false;\n\n\t\tfor (var key in pressed) {\n\t\t\tif (pressed[key] && (ignored[key] == null || ignored[key] == false) &&\n\t\t\t\t!(key === self.Key.UP || key === self.Key.DOWN || key === self.Key.LEFT || key === self.Key.RIGHT) &&\n\t\t\t\t!(key === self.Key.W || key === self.Key.S || key === self.Key.A || key === self.Key.D)) {\n\t\t\t\t// detected that a key other than the d-pad keys are down!\n\t\t\t\tanyKey = true;\n\t\t\t}\n\t\t}\n\n\t\treturn anyKey;\n\t}\n\n\tthis.isRestartComboPressed = function() {\n\t\treturn isRestartComboPressed;\n\t}\n\n\tthis.swipeLeft = function() {\n\t\treturn touchState.swipeDirection == SwipeDir.Left;\n\t}\n\n\tthis.swipeRight = function() {\n\t\treturn touchState.swipeDirection == SwipeDir.Right;\n\t}\n\n\tthis.swipeUp = function() {\n\t\treturn touchState.swipeDirection == SwipeDir.Up;\n\t}\n\n\tthis.swipeDown = function() {\n\t\treturn touchState.swipeDirection == SwipeDir.Down;\n\t}\n\n\tthis.isTapReleased = function() {\n\t\treturn touchState.tapReleased;\n\t}\n\n\tthis.resetTapReleased = function() {\n\t\ttouchState.tapReleased = false;\n\t}\n\n\tthis.onblur = function() {\n\t\t// bitsyLog(\"~~~ BLUR ~~\", \"system\");\n\t\tresetAll();\n\t}\n\n\tthis.resetAll = resetAll;\n\n\tthis.listen = function(canvas) {\n\t\tdocument.addEventListener('keydown', self.onkeydown);\n\t\tdocument.addEventListener('keyup', self.onkeyup);\n\n\t\tif (isPlayerEmbeddedInEditor) {\n\t\t\tcanvas.addEventListener('touchstart', self.ontouchstart, {passive:false});\n\t\t\tcanvas.addEventListener('touchmove', self.ontouchmove, {passive:false});\n\t\t\tcanvas.addEventListener('touchend', self.ontouchend, {passive:false});\n\t\t}\n\t\telse {\n\t\t\t// creates a 'touchTrigger' element that covers the entire screen and can universally have touch event listeners added w/o issue.\n\n\t\t\t// we're checking for existing touchTriggers both at game start and end, so it's slightly redundant.\n\t\t\tvar existingTouchTrigger = document.querySelector('#touchTrigger');\n\n\t\t\tif (existingTouchTrigger === null) {\n\t\t\t\tvar touchTrigger = document.createElement(\"div\");\n\t\t\t\ttouchTrigger.setAttribute(\"id\",\"touchTrigger\");\n\n\t\t\t\t// afaik css in js is necessary here to force a fullscreen element\n\t\t\t\ttouchTrigger.setAttribute(\n\t\t\t\t\t\"style\",\"position: absolute; top: 0; left: 0; width: 100vw; height: 100vh; overflow: hidden;\"\n\t\t\t\t);\n\n\t\t\t\tdocument.body.appendChild(touchTrigger);\n\n\t\t\t\ttouchTrigger.addEventListener('touchstart', self.ontouchstart);\n\t\t\t\ttouchTrigger.addEventListener('touchmove', self.ontouchmove);\n\t\t\t\ttouchTrigger.addEventListener('touchend', self.ontouchend);\n\t\t\t}\n\t\t}\n\n\t\twindow.onblur = self.onblur;\n\t}\n\n\tthis.unlisten = function(canvas) {\n\t\tdocument.removeEventListener('keydown', self.onkeydown);\n\t\tdocument.removeEventListener('keyup', self.onkeyup);\n\n\t\tif (isPlayerEmbeddedInEditor) {\n\t\t\tcanvas.removeEventListener('touchstart', self.ontouchstart);\n\t\t\tcanvas.removeEventListener('touchmove', self.ontouchmove);\n\t\t\tcanvas.removeEventListener('touchend', self.ontouchend);\n\t\t}\n\t\telse {\n\t\t\t//check for touchTrigger and removes it\n\n\t\t\tvar existingTouchTrigger = document.querySelector('#touchTrigger');\n\n\t\t\tif (existingTouchTrigger !== null) {\n\t\t\t\texistingTouchTrigger.removeEventListener('touchstart', self.ontouchstart);\n\t\t\t\texistingTouchTrigger.removeEventListener('touchmove', self.ontouchmove);\n\t\t\t\texistingTouchTrigger.removeEventListener('touchend', self.ontouchend);\n\n\t\t\t\texistingTouchTrigger.parentElement.removeChild(existingTouchTrigger);\n\t\t\t}\n\t\t}\n\n\t\twindow.onblur = null;\n\t}\n}", "soundchip.js": "// init global audio context\nvar audioContext = new AudioContext();\n\nfunction enableGlobalAudioContext() {\n\taudioContext.resume();\n}\n\nfunction SoundSystem() {\n\tvar self = this;\n\n\t// volume\n\tvar maxGain = 0.15;\n\n\t// curves for different pulse wave duties (ratios between on and off)\n\tvar dutyCycle_1_8 = new Float32Array(256);\n\tfor (var i = 0; i < 256; i++) {\n\t\tdutyCycle_1_8[i] = ((i / 256) * 2) - 1.75;\n\t}\n\n\tvar dutyCycle_1_4 = new Float32Array(256);\n\tfor (var i = 0; i < 256; i++) {\n\t\tdutyCycle_1_4[i] = ((i / 256) * 2) - 1.5;\n\t}\n\n\tvar dutyCycle_1_2 = new Float32Array(256);\n\tfor (var i = 0; i < 256; i++) {\n\t\tdutyCycle_1_2[i] = ((i / 256) * 2) - 1.0;\n\t}\n\n\tvar dutyCycles = [\n\t\tdutyCycle_1_8,\n\t\tdutyCycle_1_4,\n\t\tdutyCycle_1_2 // square wave\n\t];\n\n\tfunction createPulseWidthModulator() {\n\t\t// the base oscillator: start with a sawtooth wave that we'll shape into a pulse wave\n\t\tvar oscillator = audioContext.createOscillator();\n\t\toscillator.type = \"sawtooth\";\n\n\t\t// create a gain node to control the volume of the sound\n\t\tvar volumeControl = audioContext.createGain();\n\t\tvolumeControl.gain.value = 0;\n\n\t\t// create a wave shaper that turns the sawtooth wave into a pulse\n\t\t// by mapping any negative value to -1 and any positive value to 1\n\t\tvar pulseCurve = new Float32Array(256);\n\t\tfor (var i = 0; i < 128; i++) {\n\t\t\tpulseCurve[i] = -1;\n\t\t}\n\t\tfor (var i = 128; i < 256; i++) {\n\t\t\tpulseCurve[i] = 1;\n\t\t}\n\n\t\tvar pulseShaper = audioContext.createWaveShaper();\n\t\tpulseShaper.curve = pulseCurve;\n\n\t\tvar dutyShaper = audioContext.createWaveShaper();\n\t\tdutyShaper.curve = dutyCycle_1_2;\n\n\t\toscillator.connect(dutyShaper);\n\t\tdutyShaper.connect(pulseShaper);\n\t\tpulseShaper.connect(volumeControl);\n\t\tvolumeControl.connect(audioContext.destination);\n\t\toscillator.start();\n\n\t\treturn {\n\t\t\toscillator: oscillator,\n\t\t\tvolumeControl: volumeControl,\n\t\t\tdutyShaper: dutyShaper\n\t\t};\n\t}\n\n\tvar pulseChannels = [createPulseWidthModulator(), createPulseWidthModulator()];\n\n\tthis.setPulse = function(channel, pulse) {\n\t\tvar pulseChannel = pulseChannels[channel];\n\t\tpulseChannel.dutyShaper.curve = dutyCycles[pulse];\n\t}\n\n\tthis.setFrequency = function(channel, frequencyHz) {\n\t\tvar pulseChannel = pulseChannels[channel];\n\t\t// set frequency in hertz\n\t\tpulseChannel.oscillator.frequency.setValueAtTime(frequencyHz, audioContext.currentTime);\n\t}\n\n\tthis.setVolume = function(channel, volumeNorm) {\n\t\tvar pulseChannel = pulseChannels[channel];\n\t\tpulseChannel.volumeControl.gain.value = volumeNorm * maxGain;\n\t}\n\n\tthis.mute = function() {\n\t\tfor (var i = 0; i < pulseChannels.length; i++) {\n\t\t\tpulseChannels[i].volumeControl.gain.value = 0;\n\t\t}\n\t}\n}\n\nvar sound = new SoundSystem();", "graphics.js": "function GraphicsSystem() {\n\tvar self = this;\n\n\tvar canvas;\n\tvar ctx;\n\n\tvar scale;\n\tvar textScale;\n\tvar palette = [];\n\tvar images = [];\n\tvar imageFillColors = [];\n\n\tfunction makeFillStyle(color, isTransparent) {\n\t\tvar i = color * 3;\n\t\tif (isTransparent) {\n\t\t\treturn \"rgba(\" + palette[i + 0] + \",\" + palette[i + 1] + \",\" + palette[i + 2] + \", 0)\";\n\t\t}\n\t\telse {\n\t\t\treturn \"rgb(\" + palette[i + 0] + \",\" + palette[i + 1] + \",\" + palette[i + 2] + \")\";\n\t\t}\n\t}\n\n\tthis._images = images;\n\tthis._getPalette = function() {\n\t\treturn palette;\n\t};\n\n\t// todo : do I really need to pass in size here?\n\tthis.attachCanvas = function(c, size) {\n\t\tcanvas = c;\n\t\tcanvas.width = size * scale;\n\t\tcanvas.height = size * scale;\n\t\tctx = canvas.getContext(\"2d\");\n\t};\n\n\tthis.getCanvas = function() {\n\t\treturn canvas;\n\t};\n\n\tthis.getContext = function() {\n\t\treturn ctx;\n\t};\n\n\tthis.setScale = function(s) {\n\t\tscale = s;\n\t};\n\n\tthis.setTextScale = function(s) {\n\t\ttextScale = s;\n\t};\n\n\tthis.getTextScale = function() {\n\t\treturn textScale;\n\t};\n\n\tthis.setPalette = function(p) {\n\t\tpalette = p;\n\t};\n\n\t// todo : rename this since it doesn't always create a totally new canvas?\n\tthis.createImage = function(id, width, height, pixels, useTextScale) {\n\t\tvar imageScale = useTextScale === true ? textScale : scale;\n\t\tvar widthScaled = width * imageScale;\n\t\tvar heightScaled = height * imageScale;\n\n\t\t// try to use an existing image canvas if it is the right size,\n\t\t// instead of expensively creating a new one\n\t\tvar imageCanvas = images[id];\n\t\tif (imageCanvas === undefined || imageCanvas.width != widthScaled || imageCanvas.height != heightScaled) {\n\t\t\timageCanvas = document.createElement(\"canvas\");\n\t\t\timageCanvas.width = widthScaled;\n\t\t\timageCanvas.height = heightScaled;\n\t\t}\n\n\t\tvar imageCtx = imageCanvas.getContext(\"2d\");\n\n\t\t// if we know the fill color for this image, we can speed things up\n\t\t// by filling the whole image with that color\n\t\tvar fillColor;\n\t\tif (imageFillColors[id] != undefined) {\n\t\t\tfillColor = imageFillColors[id];\n\t\t\tvar isTransparent = (fillColor === 0);\n\t\t\tif (isTransparent) {\n\t\t\t\timageCtx.clearRect(0, 0, imageCanvas.width, imageCanvas.height);\n\t\t\t}\n\t\t\telse {\n\t\t\t\timageCtx.fillStyle = makeFillStyle(fillColor, isTransparent);\n\t\t\t\timageCtx.fillRect(0, 0, imageCanvas.width, imageCanvas.height);\n\t\t\t}\n\t\t}\n\n\t\tfor (var i = 0; i < pixels.length; i++) {\n\t\t\tvar x = i % width;\n\t\t\tvar y = Math.floor(i / width);\n\t\t\tvar color = pixels[i];\n\t\t\tif (color != fillColor) {\n\t\t\t\tvar isTransparent = (color === 0);\n\t\t\t\timageCtx.fillStyle = makeFillStyle(color, isTransparent);\n\t\t\t\timageCtx.fillRect(x * imageScale, y * imageScale, imageScale, imageScale);\n\t\t\t}\n\t\t}\n\n\t\timages[id] = imageCanvas;\n\t};\n\n\tthis.setImageFill = function(id, color) {\n\t\timageFillColors[id] = color;\n\t};\n\n\tthis.drawImage = function(id, x, y, destId) {\n\t\tif (!images[id]) {\n\t\t\tbitsyLog(\"image doesn't exist: \" + id, \"graphics\");\n\t\t\treturn;\n\t\t}\n\n\t\tvar destCtx = ctx;\n\t\tif (destId != undefined) {\n\t\t\t// if there's a destination ID, that means we're drawing this image *onto* another image canvas\n\t\t\tvar destCanvas = images[destId];\n\t\t\tdestCtx = destCanvas.getContext(\"2d\");\n\t\t}\n\n\t\tdestCtx.drawImage(images[id], x * scale, y * scale, images[id].width, images[id].height);\n\t};\n\n\tthis.hasImage = function(id) {\n\t\treturn images[id] != undefined;\n\t};\n\n\tthis.getImage = function(id) {\n\t\treturn images[id];\n\t};\n\n\tthis.deleteImage = function(id) {\n\t\tdelete images[id];\n\t\tdelete imageFillColors[id];\n\t};\n\n\tthis.getCanvas = function() {\n\t\treturn canvas;\n\t};\n\n\tthis.clearCanvas = function(color) {\n\t\tbitsyLog(\"pal? \" + palette.length + \" / \" + color, \"graphics\");\n\t\tctx.fillStyle = makeFillStyle(color);\n\t\tctx.fillRect(0, 0, canvas.width, canvas.height);\n\t};\n}", "system.js": "/* LOGGING */\nvar DebugLogCategory = {\n\t// system\n\tinput: false,\n\tsound: false,\n\tgraphics: false,\n\tsystem: false,\n\n\t// engine\n\tbitsy: false,\n\n\t// editor\n\teditor: false,\n\n\t// tools\n\troom: false,\n\ttune: false,\n\tblip: false,\n};\n\nvar isLoggingVerbose = false;\n\nfunction bitsyLog(message, category) {\n\tif (!category) {\n\t\tcategory = \"bitsy\";\n\t}\n\n\tvar summary = category + \"::\" + message;\n\n\tif (DebugLogCategory[category] === true) {\n\t\tif (isLoggingVerbose) {\n\t\t\tconsole.group(summary);\n\n\t\t\tconsole.dir(message);\n\n\t\t\tconsole.group(\"stack\")\n\t\t\tconsole.trace();\n\t\t\tconsole.groupEnd();\n\n\t\t\tconsole.groupEnd();\n\t\t}\n\t\telse {\n\t\t\tconsole.log(summary);\n\t\t}\n\t}\n}\n\n/* GLOBALS */\nvar tilesize = 8;\nvar mapsize = 16;\nvar width = mapsize * tilesize;\nvar height = mapsize * tilesize;\nvar scale = 4;\nvar textScale = 2;\n\n/* SYSTEM */\nvar updateInterval = null;\nvar prevTime = 0;\nvar deltaTime = 0;\n\nfunction initSystem() {\n\tprevTime = Date.now();\n\tupdateInterval = setInterval(updateSystem, 16);\n}\n\nfunction updateSystem() {\n\tvar curTime = Date.now();\n\tdeltaTime = curTime - prevTime;\n\n\t// update all active processes\n\tfor (var i = 0; i < processes.length; i++) {\n\t\tbitsy = processes[i].system;\n\t\tif (bitsy._active) {\n\t\t\tbitsyLog(bitsy._name + \" img count: \" + bitsy._graphics._images.length, \"system\");\n\t\t\tvar shouldContinue = bitsy._update(deltaTime);\n\t\t\tif (!shouldContinue) {\n\t\t\t\t// todo : do I really care about this _exit thing?\n\t\t\t\tif (bitsy._name != \"bitsy\") {\n\t\t\t\t\tbitsy._exit();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tbitsy = mainProcess.system;\n\tprevTime = curTime;\n}\n\nfunction loadGame(canvas, gameData, defaultFontData) {\n\tbitsyLog(\"load!\", \"system\");\n\t// initialize bitsy system\n\tbitsy._attachCanvas(canvas);\n\tbitsy._write(bitsy._gameDataBlock, gameData);\n\tbitsy._write(bitsy._fontDataBlock, defaultFontData);\n\tbitsy._start();\n}\n\nfunction quitGame() {\n\t// hack to press the menu button to force game over state\n\tbitsy._injectPreLoop = function() { bitsy._poke(bitsy._buttonBlock, bitsy.BTN_MENU, 1); };\n\n\t// one last update to clean up (a little hacky to do this here?)\n\tbitsy._update(0);\n\tbitsy._exit();\n\n\t// clean up this gross hack\n\tbitsy._injectPreLoop = null;\n}\n\n/* GRAPHICS */\nvar canvas; // can I get rid of these?\nvar ctx;\n\nfunction attachCanvas(c) {\n\t// hack : tes tnew system\n\tbitsy._attachCanvas(c);\n\t// extra hacky\n\tcanvas = bitsy._getCanvas();\n\tctx = bitsy._getContext();\n}\n\n/* PROCESSES */\nvar processes = [];\n\nfunction addProcess(name) {\n\tvar proc = {};\n\tproc.system = new BitsySystem(name);\n\n\tprocesses.push(proc);\n\n\treturn proc;\n}\n\n/* == SYSTEM v0.2 === */\nfunction BitsySystem(name) {\n\tvar self = this;\n\n\tif (!name) {\n\t\tname = \"bitsy\";\n\t}\n\n\t// memory\n\tvar memory = {\n\t\tblocks: [],\n\t\tchanged: []\n\t};\n\n\t// input\n\tvar input = new InputSystem();\n\n\t// sound\n\tvar sound = new SoundSystem();\n\tvar soundDurationIndex = 0;\n\tvar soundFrequencyIndex = 1;\n\tvar soundVolumeIndex = 2;\n\tvar soundPulseIndex = 3;\n\tvar maxVolume = 15;\n\n\t// graphics\n\tvar graphics = new GraphicsSystem();\n\tgraphics.setScale(scale);\n\tgraphics.setTextScale(textScale);\n\tvar initialPaletteSize = 64;\n\tvar tilePoolStart = null;\n\tvar tilePoolSize = 512;\n\t// hack!!! (access for debugging)\n\tthis._graphics = graphics;\n\n\tfunction updateTextScale() {\n\t\t// make sure the text scale matches the text mode\n\t\tvar textMode = self._peek(modeBlock, 1);\n\t\tvar textModeScale = (textMode === self.TXT_LOREZ) ? scale : textScale;\n\t\tif (graphics.getTextScale() != textModeScale) {\n\t\t\tgraphics.setTextScale(textModeScale);\n\t\t\tmemory.changed[self.TEXTBOX] = true;\n\t\t}\n\t}\n\n\tfunction updateInput() {\n\t\t// update input flags\n\t\tself._poke(self._buttonBlock, self.BTN_UP,\n\t\t\t(input.isKeyDown(input.Key.UP) || input.isKeyDown(input.Key.W) || input.swipeUp()) ? 1 : 0);\n\n\t\tself._poke(self._buttonBlock, self.BTN_DOWN,\n\t\t\t(input.isKeyDown(input.Key.DOWN) || input.isKeyDown(input.Key.S) || input.swipeDown()) ? 1 : 0);\n\n\t\tself._poke(self._buttonBlock, self.BTN_LEFT,\n\t\t\t(input.isKeyDown(input.Key.LEFT) || input.isKeyDown(input.Key.A) || input.swipeLeft()) ? 1 : 0);\n\n\t\tself._poke(self._buttonBlock, self.BTN_RIGHT,\n\t\t\t(input.isKeyDown(input.Key.RIGHT) || input.isKeyDown(input.Key.D) || input.swipeRight()) ? 1 : 0);\n\n\t\tself._poke(self._buttonBlock, self.BTN_OK,\n\t\t\t(input.anyKeyDown() || input.isTapReleased()) ? 1 : 0);\n\n\t\tself._poke(self._buttonBlock, self.BTN_MENU,\n\t\t\t(input.isRestartComboPressed()) ? 1 : 0);\n\n\t\tinput.resetTapReleased();\n\t}\n\n\tfunction updateSound(dt) {\n\t\tvar changed0 = memory.changed[self.SOUND1];\n\t\tvar changed1 = memory.changed[self.SOUND2];\n\n\t\t// update sound channel timers\n\t\tvar timer0 = self._peek(self.SOUND1, soundDurationIndex);\n\t\ttimer0 -= dt;\n\t\tif (timer0 <= 0) {\n\t\t\ttimer0 = 0;\n\t\t\tif (self._peek(self.SOUND1, soundVolumeIndex) > 0) {\n\t\t\t\tself._poke(self.SOUND1, soundVolumeIndex, 0);\n\t\t\t\tchanged0 = true;\n\t\t\t}\n\t\t}\n\t\tself._poke(self.SOUND1, soundDurationIndex, timer0);\n\n\t\tvar timer1 = self._peek(self.SOUND2, soundDurationIndex);\n\t\ttimer1 -= dt;\n\t\tif (timer1 <= 0) {\n\t\t\ttimer1 = 0;\n\t\t\tif (self._peek(self.SOUND2, soundVolumeIndex) > 0) {\n\t\t\t\tself._poke(self.SOUND2, soundVolumeIndex, 0);\n\t\t\t\tchanged1 = true;\n\t\t\t}\n\t\t}\n\t\tself._poke(self.SOUND2, soundDurationIndex, timer1);\n\n\t\t// send updated channel attributes to the sound system\n\t\tif (changed0) {\n\t\t\tsound.setPulse(0, self._peek(self.SOUND1, soundPulseIndex));\n\n\t\t\tvar freq = self._peek(self.SOUND1, soundFrequencyIndex);\n\t\t\tvar freqHz = freq / 100;\n\t\t\tsound.setFrequency(0, freqHz);\n\n\t\t\tvar volume = self._peek(self.SOUND1, soundVolumeIndex);\n\t\t\tvolume = Math.max(0, Math.min(volume, maxVolume));\n\t\t\tvolumeNorm = (volume / maxVolume);\n\t\t\tsound.setVolume(0, volumeNorm);\n\t\t}\n\n\t\tif (changed1) {\n\t\t\tsound.setPulse(1, self._peek(self.SOUND2, soundPulseIndex));\n\n\t\t\tvar freq = self._peek(self.SOUND2, soundFrequencyIndex);\n\t\t\tvar freqHz = freq / 100;\n\t\t\tsound.setFrequency(1, freqHz);\n\n\t\t\tvar volume = self._peek(self.SOUND2, soundVolumeIndex);\n\t\t\tvolume = Math.max(0, Math.min(volume, maxVolume));\n\t\t\tvolumeNorm = (volume / maxVolume);\n\t\t\tsound.setVolume(1, volumeNorm);\n\t\t}\n\t}\n\n\tfunction updateGraphics() {\n\t\tif (self._enableGraphics === false) {\n\t\t\treturn;\n\t\t}\n\n\t\tbitsyLog(\"update graphics\", \"system\");\n\n\t\tif (memory.changed[paletteBlock]) {\n\t\t\tgraphics.setPalette(self._dump()[paletteBlock]);\n\t\t}\n\n\t\tif (tilePoolStart != null) {\n\t\t\tfor (var i = 0; i < tilePoolSize; i++) {\n\t\t\t\tvar tile = tilePoolStart + i;\n\t\t\t\tif (memory.blocks[tile] != undefined && memory.changed[tile]) {\n\t\t\t\t\tbitsyLog(\"tile changed? \" + tile, \"system\");\n\t\t\t\t\t// update tile image\n\t\t\t\t\tgraphics.createImage(tile, self.TILE_SIZE, self.TILE_SIZE, self._dump()[tile]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tvar textboxChanged = memory.changed[self.TEXTBOX] || memory.changed[textboxAttributeBlock];\n\t\tif (textboxChanged) {\n\t\t\t// todo : should this be optimized in some way?\n\t\t\t// update textbox image\n\t\t\tvar w = self._peek(textboxAttributeBlock, 3); // todo : need a variable to store this index?\n\t\t\tvar h = self._peek(textboxAttributeBlock, 4);\n\t\t\tif (w > 0 && h > 0) {\n\t\t\t\tbitsyLog(\"textbox changed! \" + memory.changed[self.TEXTBOX] + \" \" + memory.changed[textboxAttributeBlock] + \" \" + w + \" \" + h, \"system\");\n\t\t\t\tvar useTextBoxScale = true; // todo : check mode here?\n\t\t\t\tgraphics.createImage(self.TEXTBOX, w, h, self._dump()[self.TEXTBOX], useTextBoxScale);\n\t\t\t}\n\t\t}\n\n\t\tvar mode = self._peek(modeBlock, 0);\n\t\tif (mode === self.GFX_VIDEO) {\n\t\t\tif (memory.changed[self.VIDEO]) {\n\t\t\t\tgraphics.clearCanvas(0);\n\t\t\t\t// update screen image\n\t\t\t\tgraphics.createImage(self.VIDEO, self.VIDEO_SIZE, self.VIDEO_SIZE, self._dump()[self.VIDEO]);\n\t\t\t\t// render screen onto canvas\n\t\t\t\tgraphics.drawImage(self.VIDEO, 0, 0);\n\t\t\t}\n\t\t}\n\t\telse if (mode === self.GFX_MAP) {\n\t\t\t// redraw any changed layers\n\t\t\tvar layers = self._getTileMapLayers();\n\t\t\tvar anyMapLayerChanged = false;\n\t\t\tfor (var i = 0; i < layers.length; i++) {\n\t\t\t\tvar layerId = layers[i];\n\t\t\t\tif (memory.changed[layerId]) {\n\t\t\t\t\t// need to redraw this map layer\n\t\t\t\t\tanyMapLayerChanged = true;\n\t\t\t\t\t// clear layer canvas\n\t\t\t\t\tgraphics.setImageFill(layerId, 0); // fill transparent\n\t\t\t\t\tgraphics.createImage(layerId, self.VIDEO_SIZE, self.VIDEO_SIZE, []);\n\t\t\t\t\t// render tiles onto layer canvas\n\t\t\t\t\tvar layerData = self._dump()[layerId];\n\t\t\t\t\tfor (var ty = 0; ty < self.MAP_SIZE; ty++) {\n\t\t\t\t\t\tfor (var tx = 0; tx < self.MAP_SIZE; tx++) {\n\t\t\t\t\t\t\tvar tileIndex = (ty * self.MAP_SIZE) + tx;\n\t\t\t\t\t\t\tvar tile = layerData[tileIndex];\n\t\t\t\t\t\t\tif (tile > 0) {\n\t\t\t\t\t\t\t\tgraphics.drawImage(tile, tx * self.TILE_SIZE, ty * self.TILE_SIZE, layerId);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// redraw the main canvas\n\t\t\tif (textboxChanged || anyMapLayerChanged) {\n\t\t\t\tbitsyLog(\"map changed? \" + memory.changed[self.MAP1] + \" \" + memory.changed[self.MAP2], \"system\");\n\t\t\t\tgraphics.clearCanvas(0);\n\n\t\t\t\tfor (var i = 0; i < layers.length; i++) {\n\t\t\t\t\tvar layerId = layers[i];\n\t\t\t\t\t// draw the layer's image canvas onto the main canvas\n\t\t\t\t\tgraphics.drawImage(layerId, 0, 0);\n\t\t\t\t}\n\n\t\t\t\t// draw textbox onto canvas\n\t\t\t\tvar visible = self._peek(textboxAttributeBlock, 0)\n\t\t\t\tvar x = self._peek(textboxAttributeBlock, 1);\n\t\t\t\tvar y = self._peek(textboxAttributeBlock, 2);\n\t\t\t\tvar w = self._peek(textboxAttributeBlock, 3);\n\t\t\t\tvar h = self._peek(textboxAttributeBlock, 4);\n\t\t\t\tif (visible > 0 && w > 0 && h > 0) {\n\t\t\t\t\tgraphics.drawImage(self.TEXTBOX, x, y);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/* == PRIVATE / DEBUG == */\n\tthis._name = name;\n\n\tthis._active = false;\n\n\tthis._attachCanvas = function(c) {\n\t\tgraphics.attachCanvas(c, self.VIDEO_SIZE);\n\t};\n\n\tthis._getCanvas = graphics.getCanvas;\n\tthis._getContext = graphics.getContext;\n\n\tthis._start = function() {\n\t\tinput.listen(graphics.getCanvas());\n\t\tupdateTextScale();\n\t\tself._active = true;\n\t};\n\n\t// hacky...\n\tthis._startNoInput = function() {\n\t\tupdateTextScale();\n\t\tself._active = true;\n\t};\n\n\tthis._exit = function() {\n\t\t// disable graphics\n\t\tvar canvas = graphics.getCanvas();\n\t\tif (canvas) {\n\t\t\tinput.unlisten(canvas);\t\n\t\t}\n\n\t\t// disable sound\n\t\tsound.mute();\n\n\t\tself._active = false;\n\t};\n\n\t// hacky....\n\tthis._injectPreLoop = null;\n\tthis._injectPostDraw = null;\n\n\tthis._update = function(dt) {\n\t\tvar shouldContinue = false;\n\n\t\tupdateInput();\n\n\t\t// too hacky???\n\t\tif (self._injectPreLoop) {\n\t\t\tself._injectPreLoop();\n\t\t}\n\n\t\t// run main loop\n\t\tif (onLoopFunction) {\n\t\t\tshouldContinue = onLoopFunction(dt);\n\t\t}\n\n\t\tif (memory.changed[modeBlock]) {\n\t\t\tupdateTextScale();\n\t\t}\n\n\t\t// update output systems\n\t\tupdateSound(dt);\n\t\tupdateGraphics();\n\n\t\tif (self._injectPostDraw) {\n\t\t\tself._injectPostDraw();\n\t\t}\n\n\t\t// reset memory block changed flags\n\t\tfor (var i = 0; i < memory.changed.length; i++) {\n\t\t\tmemory.changed[i] = false;\n\t\t}\n\n\t\t// todo : should the _exit() call go in here?\n\n\t\treturn shouldContinue;\n\t};\n\n\tthis._updateGraphics = updateGraphics;\n\n\tthis._allocate = function(args) {\n\t\t// find next available block in range\n\t\tvar next = (args && args.start) ? args.start : 0;\n\t\tvar count = (args && args.max) ? args.max : -1;\n\t\twhile (memory.blocks[next] != undefined && count != 0) {\n\t\t\tnext++;\n\t\t\tcount--;\n\t\t}\n\n\t\tif (count == 0) {\n\t\t\t// couldn't find any available block\n\t\t\treturn null;\n\t\t}\n\n\t\tif (args && args.str) {\n\t\t\tmemory.blocks[next] = args.str;\n\t\t}\n\t\telse {\n\t\t\tvar size = args && args.size ? args.size : 0;\n\t\t\tmemory.blocks[next] = [];\n\t\t\tfor (var i = 0; i < size; i++) {\n\t\t\t\tmemory.blocks[next].push(0);\n\t\t\t}\n\t\t}\n\n\t\tmemory.changed[next] = false;\n\n\t\treturn next;\n\t};\n\n\tthis._free = function(block) {\n\t\tdelete memory.blocks[block];\n\t\tdelete memory.changed[block];\n\t};\n\n\tthis._peek = function(block, index) {\n\t\tvar memoryBlock = memory.blocks[block];\n\t\tif (typeof(memoryBlock) === \"string\") {\n\t\t\treturn memoryBlock.charCodeAt(index);\n\t\t}\n\t\telse {\n\t\t\treturn memoryBlock[index];\n\t\t}\n\t};\n\n\tthis._poke = function(block, index, value) {\n\t\tvar memoryBlock = memory.blocks[block];\n\t\tif (typeof(memoryBlock) === \"string\") {\n\t\t\tmemory.blocks[block] = memoryBlock.substring(0, index) + String.fromCharCode(value) + memoryBlock.substring(index + 1);\n\t\t}\n\t\telse {\n\t\t\tvar value = parseInt(value);\n\t\t\tif (!isNaN(value)) {\n\t\t\t\tmemoryBlock[index] = value;\n\t\t\t}\n\t\t}\n\t\tmemory.changed[block] = true;\n\t};\n\n\tthis._read = function(block) {\n\t\tvar memoryBlock = memory.blocks[block];\n\t\tif (typeof(memoryBlock) === \"string\") {\n\t\t\treturn memoryBlock;\n\t\t}\n\t\telse {\n\t\t\tvar str = \"\";\n\t\t\tfor (var i = 0; i < memoryBlock.length; i++) {\n\t\t\t\tstr += String.fromCharCode(memoryBlock[i]);\n\t\t\t}\n\t\t\treturn str;\n\t\t}\n\t};\n\n\tthis._write = function(block, str) {\n\t\tvar memoryBlock = memory.blocks[block];\n\t\tif (typeof(memoryBlock) === \"string\") {\n\t\t\tmemory.blocks[block] = str;\n\t\t}\n\t\telse {\n\t\t\tmemory.blocks[block] = [];\n\t\t\tfor (var i = 0; i < str.length; i++) {\n\t\t\t\tmemory.blocks[block][i] = str.charCodeAt(i);\n\t\t\t}\n\t\t}\n\t\tmemory.changed[block] = true;\n\t};\n\n\tthis._dump = function() {\n\t\treturn memory.blocks;\n\t};\n\n\t// convenience methods for hacking around with map layers\n\tvar tileMapLayers = [];\n\tthis._getTileMapLayers = function() {\n\t\treturn tileMapLayers;\n\t};\n\tthis._addTileMapLayer = function() {\n\t\tvar layer = self._allocate({\n\t\t\tstart: (tilePoolStart + tilePoolSize),\n\t\t\tsize: (self.MAP_SIZE * self.MAP_SIZE)\n\t\t});\n\n\t\ttileMapLayers.push(layer);\n\n\t\treturn layer;\n\t};\n\n\t/* == CONSTANTS == */\n\t// memory blocks (these will be initialized below)\n\tthis.VIDEO;\n\tthis.TEXTBOX;\n\tthis.MAP1;\n\tthis.MAP2;\n\tthis.SOUND1;\n\tthis.SOUND2;\n\n\t// graphics modes\n\tthis.GFX_VIDEO = 0;\n\tthis.GFX_MAP = 1;\n\n\t// text modes\n\tthis.TXT_HIREZ = 0; // 2x resolution\n\tthis.TXT_LOREZ = 1; // 1x resolution\n\n\t// size\n\tthis.TILE_SIZE = tilesize;\n\tthis.MAP_SIZE = mapsize;\n\tthis.VIDEO_SIZE = width;\n\t// todo : should text scale have a constant?\n\n\t// button codes\n\tthis.BTN_UP = 0;\n\tthis.BTN_DOWN = 1;\n\tthis.BTN_LEFT = 2;\n\tthis.BTN_RIGHT = 3;\n\tthis.BTN_OK = 4;\n\tthis.BTN_MENU = 5;\n\n\t// pulse waves\n\tthis.PULSE_1_8 = 0;\n\tthis.PULSE_1_4 = 1;\n\tthis.PULSE_1_2 = 2;\n\n\t/* == IO == */\n\tthis.log = function(message) {\n\t\tbitsyLog(message, name);\n\t};\n\n\tthis.button = function(code) {\n\t\treturn self._peek(buttonBlock, code) > 0;\n\t};\n\n\tthis.getGameData = function() {\n\t\treturn self._read(gameDataBlock);\n\t};\n\n\tthis.getFontData = function() {\n\t\treturn self._read(fontDataBlock);\n\t};\n\n\t/* == GRAPHICS == */\n\tthis.graphicsMode = function(mode) {\n\t\t// todo : store the mode flag indices somewhere?\n\t\tif (mode != undefined) {\n\t\t\tself._poke(modeBlock, 0, mode);\n\t\t}\n\n\t\treturn self._peek(modeBlock, 0);\n\t};\n\n\tthis.textMode = function(mode) {\n\t\t// todo : test whether the requested mode is supported!\n\t\tif (mode != undefined) {\n\t\t\tself._poke(modeBlock, 1, mode);\n\t\t}\n\n\t\treturn self._peek(modeBlock, 1);\n\t};\n\n\tthis.color = function(color, r, g, b) {\n\t\tself._poke(paletteBlock, (color * 3) + 0, r);\n\t\tself._poke(paletteBlock, (color * 3) + 1, g);\n\t\tself._poke(paletteBlock, (color * 3) + 2, b);\n\n\t\t// mark all graphics as changed\n\t\tmemory.changed[self.VIDEO] = true;\n\t\tmemory.changed[self.TEXTBOX] = true;\n\t\tmemory.changed[self.MAP1] = true;\n\t\tmemory.changed[self.MAP2] = true;\n\n\t\tif (tilePoolStart != null) {\n\t\t\tfor (var i = 0; i < tilePoolSize; i++) {\n\t\t\t\tif (memory.blocks[tilePoolStart + i] != undefined) {\n\t\t\t\t\tmemory.changed[tilePoolStart + i] = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\tthis.tile = function() {\n\t\treturn self._allocate({\n\t\t\tstart: tilePoolStart,\n\t\t\tmax: tilePoolSize,\n\t\t\tsize: (self.TILE_SIZE * self.TILE_SIZE)\n\t\t});\n\t};\n\n\tthis.delete = function(tile) {\n\t\tif (graphics.hasImage(tile)) {\n\t\t\tgraphics.deleteImage(tile);\n\t\t}\n\n\t\tself._free(tile);\n\t};\n\n\tthis.fill = function(block, value) {\n\t\tvar len = memory.blocks[block].length;\n\t\tfor (var i = 0; i < len; i++) {\n\t\t\tself._poke(block, i, value);\n\t\t}\n\n\t\tvar isImage = (block === self.VIDEO) ||\n\t\t\t(block === self.TEXTBOX) ||\n\t\t\t(block >= tilePoolStart && block < (tilePoolStart + tilePoolSize));\n\n\t\t// optimize rendering by notifying the graphics system what the fill color is for this image\n\t\tif (isImage) {\n\t\t\tgraphics.setImageFill(block, value);\n\t\t}\n\t};\n\n\tthis.set = function(block, index, value) {\n\t\tself._poke(block, index, value);\n\t};\n\n\tthis.textbox = function(visible, x, y, w, h) {\n\t\tif (visible != undefined) {\n\t\t\tself._poke(textboxAttributeBlock, 0, (visible === true) ? 1 : 0);\n\t\t}\n\t\t\n\t\tif (x != undefined) {\n\t\t\tself._poke(textboxAttributeBlock, 1, x);\n\t\t}\n\t\t\n\t\tif (y != undefined) {\n\t\t\tself._poke(textboxAttributeBlock, 2, y);\n\t\t}\n\n\t\tvar prevWidth = self._peek(textboxAttributeBlock, 3);\n\t\tvar prevHeight = self._peek(textboxAttributeBlock, 4);\n\n\t\tif (w != undefined) {\n\t\t\tself._poke(textboxAttributeBlock, 3, w);\n\t\t}\n\t\t\n\t\tif (h != undefined) {\n\t\t\tself._poke(textboxAttributeBlock, 4, h);\n\t\t}\n\n\t\tif (w != undefined && h != undefined && (prevWidth != w || prevHeight != h)) {\n\t\t\t// re-allocate the textbox block (should I have a helper function for this?)\n\t\t\tmemory.blocks[self.TEXTBOX] = [];\n\t\t\tfor (var i = 0; i < (w * h); i++) {\n\t\t\t\tmemory.blocks[self.TEXTBOX].push(0);\n\t\t\t}\n\t\t\tmemory.changed[self.TEXTBOX] = true;\n\t\t}\n\t};\n\n\t/* == SOUND == */\n\t// duration is in milliseconds (ms)\n\tthis.sound = function(channel, duration, frequency, volume, pulse) {\n\t\tself._poke(channel, soundDurationIndex, duration);\n\t\tself._poke(channel, soundFrequencyIndex, frequency);\n\t\tself._poke(channel, soundVolumeIndex, volume);\n\t\tself._poke(channel, soundPulseIndex, pulse);\n\t};\n\n\t// frequency is in decihertz (dHz)\n\tthis.frequency = function(channel, frequency) {\n\t\tself._poke(channel, soundFrequencyIndex, frequency);\n\t};\n\n\t// volume: min = 0, max = 15\n\tthis.volume = function(channel, volume) {\n\t\tself._poke(channel, soundVolumeIndex, volume);\n\t};\n\n\t/* == EVENTS == */\n\tthis.loop = function(fn) {\n\t\tonLoopFunction = fn;\n\t};\n\n\t/* == INTERNAL == */\n\t// initialize memory blocks\n\tvar gameDataBlock = this._allocate({ str: \"\" });\n\tvar fontDataBlock = this._allocate({ str: \"\" });\n\tthis.VIDEO = this._allocate({ size: self.VIDEO_SIZE * self.VIDEO_SIZE });\n\tthis.TEXTBOX = this._allocate();\n\tthis.MAP1 = this._allocate({ size: self.MAP_SIZE * self.MAP_SIZE });\n\ttileMapLayers.push(this.MAP1);\n\tthis.MAP2 = this._allocate({ size: self.MAP_SIZE * self.MAP_SIZE });\n\ttileMapLayers.push(this.MAP2);\n\tvar paletteBlock = this._allocate({ size: initialPaletteSize * 3 });\n\tvar buttonBlock = this._allocate({ size: 8 });\n\tthis.SOUND1 = this._allocate({ size: 4 });\n\tthis.SOUND2 = this._allocate({ size: 4 });\n\tvar modeBlock = this._allocate({ size: 8 });\n\tvar textboxAttributeBlock = this._allocate({ size: 8 });\n\n\ttilePoolStart = (textboxAttributeBlock + 1);\n\n\t// access for debugging\n\tthis._gameDataBlock = gameDataBlock;\n\tthis._fontDataBlock = fontDataBlock;\n\tthis._buttonBlock = buttonBlock;\n\n\t// events\n\tvar onLoopFunction = null;\n}\n\nvar mainProcess = addProcess();\nvar bitsy = mainProcess.system;", - "world.js": "/* BITSY VERSION */\n// is this the right place for this to live?\nvar version = {\n\tmajor: 8, // major changes\n\tminor: 11, // smaller changes\n\tdevBuildPhase: \"RELEASE\",\n};\nfunction getEngineVersion() {\n\treturn version.major + \".\" + version.minor;\n}\n\n/* TEXT CONSTANTS */\nvar titleDialogId = \"title\";\n\n// todo : where should this be stored?\nvar tileColorStartIndex = 16;\n\nvar TextDirection = {\n\tLeftToRight : \"LTR\",\n\tRightToLeft : \"RTL\"\n};\n\nvar defaultFontName = \"ascii_small\";\n\n/* TUNE CONSTANTS */\nvar barLength = 16; // sixteenth notes\nvar minTuneLength = 1;\nvar maxTuneLength = 16;\n\n// chromatic notes\nvar Note = {\n\tNONE \t\t: -1,\n\tC \t\t\t: 0,\t// C\n\tC_SHARP \t: 1,\t// C sharp / D flat\n\tD \t\t\t: 2,\t// D\n\tD_SHARP \t: 3,\t// D sharp / E flat\n\tE \t\t\t: 4,\t// E\n\tF \t\t\t: 5,\t// F\n\tF_SHARP \t: 6,\t// F sharp / G flat\n\tG \t\t\t: 7,\t// G\n\tG_SHARP \t: 8,\t// G sharp / A flat\n\tA \t\t\t: 9,\t// A\n\tA_SHARP \t: 10,\t// A sharp / B flat\n\tB \t\t\t: 11,\t// B\n\tCOUNT \t\t: 12\n};\n\n// solfa notes\nvar Solfa = {\n\tNONE \t: -1,\n\tD \t\t: 0,\t// Do\n\tR \t\t: 1,\t// Re\n\tM \t\t: 2,\t// Mi\n\tF \t\t: 3,\t// Fa\n\tS \t\t: 4,\t// Sol\n\tL \t\t: 5,\t// La\n\tT \t\t: 6,\t// Ti\n\tCOUNT \t: 7\n};\n\nvar Octave = {\n\tNONE: -1,\n\t2: 0,\n\t3: 1,\n\t4: 2, // octave 4: middle C octave\n\t5: 3,\n\tCOUNT: 4\n};\n\nvar Tempo = {\n\tSLW: 0, // slow\n\tMED: 1, // medium\n\tFST: 2, // fast\n\tXFST: 3 // extra fast (aka turbo)\n};\n\nvar SquareWave = {\n\tP8: 0, // pulse 1 / 8\n\tP4: 1, // pulse 1 / 4\n\tP2: 2, // pulse 1 / 2\n\tCOUNT: 3\n};\n\nvar ArpeggioPattern = {\n\tOFF: 0,\n\tUP: 1, // ascending triad chord\n\tDWN: 2, // descending triad chord\n\tINT5: 3, // 5 step interval\n\tINT8: 4 // 8 setp interval\n};\n\nfunction createWorldData() {\n\treturn {\n\t\troom : {},\n\t\ttile : {},\n\t\tsprite : {},\n\t\titem : {},\n\t\tdialog : {},\n\t\tend : {}, // pre-7.0 ending data for backwards compatibility\n\t\tpalette : { // start off with a default palette\n\t\t\t\"default\" : {\n\t\t\t\tname : \"default\",\n\t\t\t\tcolors : [[0,0,0],[255,255,255],[255,255,255]]\n\t\t\t}\n\t\t},\n\t\tvariable : {},\n\t\ttune : {},\n\t\tblip : {},\n\t\tversionNumberFromComment : -1, // -1 indicates no version information found\n\t\tfontName : defaultFontName,\n\t\ttextDirection : TextDirection.LeftToRight,\n\t\tflags : createDefaultFlags(),\n\t\tnames : {},\n\t\t// source data for all drawings (todo: better name?)\n\t\tdrawings : {},\n\t};\n}\n\n// creates a drawing data structure with default property values for the type\nfunction createDrawingData(type, id) {\n\t// the avatar's drawing id still uses the sprite prefix (for back compat)\n\tvar drwId = (type === \"AVA\" ? \"SPR\" : type) + \"_\" + id;\n\n\tvar drawingData = {\n\t\ttype : type,\n\t\tid : id,\n\t\tname : null,\n\t\tdrw : drwId,\n\t\tcol : (type === \"TIL\") ? 1 : 2, // foreground color\n\t\tbgc : 0, // background color\n\t\tanimation : {\n\t\t\tisAnimated : false,\n\t\t\tframeIndex : 0,\n\t\t\tframeCount : 1,\n\t\t},\n\t};\n\n\t// add type specific properties\n\tif (type === \"TIL\") {\n\t\t// default null value indicates it can vary from room to room (original version)\n\t\tdrawingData.isWall = null;\n\t}\n\n\tif (type === \"AVA\" || type === \"SPR\") {\n\t\t// default sprite location is \"offstage\"\n\t\tdrawingData.room = null;\n\t\tdrawingData.x = -1;\n\t\tdrawingData.y = -1;\n\t\tdrawingData.inventory = {};\n\t}\n\n\tif (type === \"AVA\" || type === \"SPR\" || type === \"ITM\") {\n\t\tdrawingData.dlg = null;\n\t\tdrawingData.blip = null;\n\t}\n\n\treturn drawingData;\n}\n\nfunction createTuneData(id) {\n\tvar tuneData = {\n\t\tid : id,\n\t\tname : null,\n\t\tmelody : [],\n\t\tharmony : [],\n\t\tkey: null, // a null key indicates a chromatic scale (all notes enabled)\n\t\ttempo: Tempo.MED,\n\t\tinstrumentA : SquareWave.P2,\n\t\tinstrumentB : SquareWave.P2,\n\t\tarpeggioPattern : ArpeggioPattern.OFF,\n\t};\n\treturn tuneData;\n}\n\nfunction createTuneBarData() {\n\tvar bar = [];\n\tfor (var i = 0; i < barLength; i++) {\n\t\tbar.push({ beats: 0, note: Note.C, octave: Octave[4] });\n\t}\n\treturn bar;\n}\n\nfunction createTuneKeyData() {\n\tvar key = {\n\t\tnotes: [], // mapping of the solfa scale degrees to chromatic notes\n\t\tscale: [] // list of solfa notes that are enabled for this key\n\t};\n\n\t// initialize notes\n\tfor (var i = 0; i < Solfa.COUNT; i++) {\n\t\tkey.notes.push(Note.NONE);\n\t}\n\n\treturn key;\n}\n\nfunction createBlipData(id) {\n\tvar blipData = {\n\t\tid: id,\n\t\tname: null,\n\t\tpitchA: { beats: 0, note: Note.C, octave: Octave[4] },\n\t\tpitchB: { beats: 0, note: Note.C, octave: Octave[4] },\n\t\tpitchC: { beats: 0, note: Note.C, octave: Octave[4] },\n\t\tenvelope: {\n\t\t\tattack: 0, // attack time in ms\n\t\t\tdecay: 0, // decay time in ms\n\t\t\tsustain: 0, // sustain volume\n\t\t\tlength: 0, // sustain time in ms\n\t\t\trelease: 0 // release time in ms\n\t\t},\n\t\tbeat : {\n\t\t\ttime: 0, // time in ms between pitch changes\n\t\t\tdelay: 0 // time in ms *before* first pitch change\n\t\t},\n\t\tinstrument: SquareWave.P2,\n\t\tdoRepeat: false\n\t\t// TODO : consider for future update\n\t\t// doSlide: false,\n\t};\n\n\treturn blipData;\n}\n\nfunction createDefaultFlags() {\n\treturn {\n\t\t// version\n\t\tVER_MAJ: -1, // major version number (-1 = no version information found)\n\t\tVER_MIN: -1, // minor version number (-1 = no version information found)\n\t\t// compatibility\n\t\tROOM_FORMAT: 0, // 0 = non-comma separated (original), 1 = comma separated (default)\n\t\tDLG_COMPAT: 0, // 0 = default dialog behavior, 1 = pre-7.0 dialog behavior\n\t\t// config\n\t\tTXT_MODE: 0 // 0 = HIREZ (2x - default), 1 = LOREZ (1x)\n\t};\n}\n\nfunction createDialogData(id) {\n\treturn {\n\t\tsrc : \"\",\n\t\tname : null,\n\t\tid : id,\n\t};\n}\n\nfunction parseWorld(file) {\n\tbitsy.log(\"create world data\");\n\n\tvar world = createWorldData();\n\n\tbitsy.log(\"init parse state\");\n\n\tvar parseState = {\n\t\tlines : file.split(\"\\n\"),\n\t\tindex : 0,\n\t\tspriteStartLocations : {}\n\t};\n\n\tbitsy.log(\"start reading lines\");\n\n\twhile (parseState.index < parseState.lines.length) {\n\t\tvar i = parseState.index;\n\t\tvar lines = parseState.lines;\n\t\tvar curLine = lines[i];\n\n\t\t// bitsy.log(\"LN \" + i + \" xx \" + curLine);\n\n\t\tif (i == 0) {\n\t\t\ti = parseTitle(parseState, world);\n\t\t}\n\t\telse if (curLine.length <= 0 || curLine.charAt(0) === \"#\") {\n\t\t\t// collect version number from a comment (hacky but required for pre-8.0 compatibility)\n\t\t\tif (curLine.indexOf(\"# BITSY VERSION \") != -1) {\n\t\t\t\tworld.versionNumberFromComment = parseFloat(curLine.replace(\"# BITSY VERSION \", \"\"));\n\t\t\t}\n\n\t\t\t//skip blank lines & comments\n\t\t\ti++;\n\t\t}\n\t\telse if (getType(curLine) === \"PAL\") {\n\t\t\ti = parsePalette(parseState, world);\n\t\t}\n\t\telse if (getType(curLine) === \"ROOM\" || getType(curLine) === \"SET\") { // SET for back compat\n\t\t\ti = parseRoom(parseState, world);\n\t\t}\n\t\telse if (getType(curLine) === \"TIL\") {\n\t\t\ti = parseTile(parseState, world);\n\t\t}\n\t\telse if (getType(curLine) === \"SPR\") {\n\t\t\ti = parseSprite(parseState, world);\n\t\t}\n\t\telse if (getType(curLine) === \"ITM\") {\n\t\t\ti = parseItem(parseState, world);\n\t\t}\n\t\telse if (getType(curLine) === \"DLG\") {\n\t\t\ti = parseDialog(parseState, world);\n\t\t}\n\t\telse if (getType(curLine) === \"END\") {\n\t\t\t// parse endings for back compat\n\t\t\ti = parseEnding(parseState, world);\n\t\t}\n\t\telse if (getType(curLine) === \"VAR\") {\n\t\t\ti = parseVariable(parseState, world);\n\t\t}\n\t\telse if (getType(curLine) === \"DEFAULT_FONT\") {\n\t\t\ti = parseFontName(parseState, world);\n\t\t}\n\t\telse if (getType(curLine) === \"TEXT_DIRECTION\") {\n\t\t\ti = parseTextDirection(parseState, world);\n\t\t}\n\t\telse if (getType(curLine) === \"FONT\") {\n\t\t\ti = parseFontData(parseState, world);\n\t\t}\n\t\telse if (getType(curLine) === \"TUNE\") {\n\t\t\ti = parseTune(parseState, world);\n\t\t}\n\t\telse if (getType(curLine) === \"BLIP\") {\n\t\t\ti = parseBlip(parseState, world);\n\t\t}\n\t\telse if (getType(curLine) === \"!\") {\n\t\t\ti = parseFlag(parseState, world);\n\t\t}\n\t\telse {\n\t\t\ti++;\n\t\t}\n\n\t\tparseState.index = i;\n\t}\n\n\tworld.names = createNameMapsForWorld(world);\n\n\tplaceSprites(parseState, world);\n\n\tif ((world.flags.VER_MAJ <= -1 || world.flags.VER_MIN <= -1) && world.versionNumberFromComment > -1) {\n\t\tvar versionNumberStr = \"\" + world.versionNumberFromComment;\n\t\tversionNumberStr = versionNumberStr.split(\".\");\n\t\tworld.flags.VER_MAJ = parseFloat(versionNumberStr[0]);\n\t\tworld.flags.VER_MIN = parseFloat(versionNumberStr[1]);\n\t}\n\n\t// starting in version v7.0, there were two major changes to dialog behavior:\n\t// 1) sprite dialog was no longer implicitly linked by the sprite and dialog IDs matching\n\t// (see this commit: 5e1adb29faad4e50603c689d2dac143074117b4e)\n\t// 2) ending dialogs no longer had their own world data type (\"END\")\n\t// for the v7.x versions I tried to automatically convert old dialog to the new format,\n\t// however, that process can be unreliable and lead to weird bugs.\n\t// with v8.0 and above I will no longer attempt to convert old files, and instead will use\n\t// a flag to indicate files that need to use the backwards compatible behavior -\n\t// this is more reliable & configurable (at the cost of making pre-7.0 games a bit harder to edit)\n\tif (world.flags.VER_MAJ < 7) {\n\t\tworld.flags.DLG_COMPAT = 1;\n\t}\n\n\treturn world;\n}\n\nfunction parseTitle(parseState, world) {\n\tvar i = parseState.index;\n\tvar lines = parseState.lines;\n\n\tvar results;\n\tif (scriptUtils) {\n\t\tresults = scriptUtils.ReadDialogScript(lines,i);\n\t}\n\telse {\n\t\tresults = { script: lines[i], index: (i + 1) };\n\t}\n\n\tworld.dialog[titleDialogId] = createDialogData(titleDialogId);\n\tworld.dialog[titleDialogId].src = results.script;\n\n\ti = results.index;\n\ti++;\n\n\treturn i;\n}\n\nfunction parsePalette(parseState, world) {\n\tvar i = parseState.index;\n\tvar lines = parseState.lines;\n\n\tvar id = getId(lines[i]);\n\ti++;\n\tvar colors = [];\n\tvar name = null;\n\twhile (i < lines.length && lines[i].length > 0) { //look for empty line\n\t\tvar args = lines[i].split(\" \");\n\t\tif (args[0] === \"NAME\") {\n\t\t\tname = lines[i].split(/\\s(.+)/)[1];\n\t\t}\n\t\telse {\n\t\t\tvar col = [];\n\t\t\tlines[i].split(\",\").forEach(function(i) {\n\t\t\t\tcol.push(parseInt(i));\n\t\t\t});\n\t\t\tcolors.push(col);\n\t\t}\n\t\ti++;\n\t}\n\tworld.palette[id] = {\n\t\tid : id,\n\t\tname : name,\n\t\tcolors : colors\n\t};\n\treturn i;\n}\n\nfunction createRoomData(id) {\n\treturn {\n\t\tid: id,\n\t\tname: null,\n\t\ttilemap: [],\n\t\twalls: [],\n\t\texits: [],\n\t\tendings: [],\n\t\titems: [],\n\t\tpal: null,\n\t\tava: null,\n\t\ttune: \"0\"\n\t};\n}\n\nfunction createExitData(x, y, destRoom, destX, destY, transition, dlg) {\n\treturn {\n\t\tx: x,\n\t\ty: y,\n\t\tdest: {\n\t\t\troom: destRoom,\n\t\t\tx: destX,\n\t\t\ty: destY\n\t\t},\n\t\ttransition_effect: transition,\n\t\tdlg: dlg,\n\t};\n}\n\nfunction createEndingData(id, x, y) {\n\treturn {\n\t\tid: id,\n\t\tx: x,\n\t\ty: y\n\t};\n}\n\nfunction parseRoom(parseState, world) {\n\tvar i = parseState.index;\n\tvar lines = parseState.lines;\n\tvar id = getId(lines[i]);\n\n\tvar roomData = createRoomData(id);\n\n\ti++;\n\n\t// create tile map\n\tif (world.flags.ROOM_FORMAT === 0) {\n\t\t// old way: no commas, single char tile ids\n\t\tvar end = i + bitsy.MAP_SIZE;\n\t\tvar y = 0;\n\t\tfor (; i < end; i++) {\n\t\t\troomData.tilemap.push([]);\n\t\t\tfor (x = 0; x < bitsy.MAP_SIZE; x++) {\n\t\t\t\troomData.tilemap[y].push(lines[i].charAt(x));\n\t\t\t}\n\t\t\ty++;\n\t\t}\n\t}\n\telse if (world.flags.ROOM_FORMAT === 1) {\n\t\t// new way: comma separated, multiple char tile ids\n\t\tvar end = i + bitsy.MAP_SIZE;\n\t\tvar y = 0;\n\t\tfor (; i < end; i++) {\n\t\t\troomData.tilemap.push([]);\n\t\t\tvar lineSep = lines[i].split(\",\");\n\t\t\tfor (x = 0; x < bitsy.MAP_SIZE; x++) {\n\t\t\t\troomData.tilemap[y].push(lineSep[x]);\n\t\t\t}\n\t\t\ty++;\n\t\t}\n\t}\n\n\twhile (i < lines.length && lines[i].length > 0) { //look for empty line\n\t\t// bitsy.log(getType(lines[i]));\n\t\tif (getType(lines[i]) === \"SPR\") {\n\t\t\t/* NOTE SPRITE START LOCATIONS */\n\t\t\tvar sprId = getId(lines[i]);\n\t\t\tif (sprId.indexOf(\",\") == -1 && lines[i].split(\" \").length >= 3) { //second conditional checks for coords\n\t\t\t\t/* PLACE A SINGLE SPRITE */\n\t\t\t\tvar sprCoord = lines[i].split(\" \")[2].split(\",\");\n\t\t\t\tparseState.spriteStartLocations[sprId] = {\n\t\t\t\t\troom : id,\n\t\t\t\t\tx : parseInt(sprCoord[0]),\n\t\t\t\t\ty : parseInt(sprCoord[1])\n\t\t\t\t};\n\t\t\t}\n\t\t\telse if ( world.flags.ROOM_FORMAT == 0 ) { // TODO: right now this shortcut only works w/ the old comma separate format\n\t\t\t\t/* PLACE MULTIPLE SPRITES*/ \n\t\t\t\t//Does find and replace in the tilemap (may be hacky, but its convenient)\n\t\t\t\tvar sprList = sprId.split(\",\");\n\t\t\t\tfor (row in roomData.tilemap) {\n\t\t\t\t\tfor (s in sprList) {\n\t\t\t\t\t\tvar col = roomData.tilemap[row].indexOf( sprList[s] );\n\t\t\t\t\t\t//if the sprite is in this row, replace it with the \"null tile\" and set its starting position\n\t\t\t\t\t\tif (col != -1) {\n\t\t\t\t\t\t\troomData.tilemap[row][col] = \"0\";\n\t\t\t\t\t\t\tparseState.spriteStartLocations[ sprList[s] ] = {\n\t\t\t\t\t\t\t\troom : id,\n\t\t\t\t\t\t\t\tx : parseInt(col),\n\t\t\t\t\t\t\t\ty : parseInt(row)\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse if (getType(lines[i]) === \"ITM\") {\n\t\t\tvar itmId = getId(lines[i]);\n\t\t\tvar itmCoord = lines[i].split(\" \")[2].split(\",\");\n\t\t\tvar itm = {\n\t\t\t\tid: itmId,\n\t\t\t\tx : parseInt(itmCoord[0]),\n\t\t\t\ty : parseInt(itmCoord[1])\n\t\t\t};\n\t\t\troomData.items.push( itm );\n\t\t}\n\t\telse if (getType(lines[i]) === \"WAL\") {\n\t\t\t/* DEFINE COLLISIONS (WALLS) */\n\t\t\troomData.walls = getId(lines[i]).split(\",\");\n\t\t}\n\t\telse if (getType(lines[i]) === \"EXT\") {\n\t\t\t/* ADD EXIT */\n\t\t\tvar exitArgs = lines[i].split(\" \");\n\t\t\t//arg format: EXT 10,5 M 3,2 [AVA:7 LCK:a,9] [AVA 7 LCK a 9]\n\t\t\tvar exitCoords = exitArgs[1].split(\",\");\n\t\t\tvar destName = exitArgs[2];\n\t\t\tvar destCoords = exitArgs[3].split(\",\");\n\t\t\tvar ext = createExitData(\n\t\t\t\t/* x \t\t\t*/ parseInt(exitCoords[0]),\n\t\t\t\t/* y \t\t\t*/ parseInt(exitCoords[1]),\n\t\t\t\t/* destRoom \t*/ destName,\n\t\t\t\t/* destX \t\t*/ parseInt(destCoords[0]),\n\t\t\t\t/* destY \t\t*/ parseInt(destCoords[1]),\n\t\t\t\t/* transition \t*/ null,\n\t\t\t\t/* dlg \t\t\t*/ null);\n\n\t\t\t// optional arguments\n\t\t\tvar exitArgIndex = 4;\n\t\t\twhile (exitArgIndex < exitArgs.length) {\n\t\t\t\tif (exitArgs[exitArgIndex] == \"FX\") {\n\t\t\t\t\text.transition_effect = exitArgs[exitArgIndex+1];\n\t\t\t\t\texitArgIndex += 2;\n\t\t\t\t}\n\t\t\t\telse if (exitArgs[exitArgIndex] == \"DLG\") {\n\t\t\t\t\text.dlg = exitArgs[exitArgIndex+1];\n\t\t\t\t\texitArgIndex += 2;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\texitArgIndex += 1;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\troomData.exits.push(ext);\n\t\t}\n\t\telse if (getType(lines[i]) === \"END\") {\n\t\t\t/* ADD ENDING */\n\t\t\tvar endId = getId(lines[i]);\n\n\t\t\tvar endCoords = getCoord(lines[i], 2);\n\t\t\tvar end = createEndingData(\n\t\t\t\t/* id */ endId,\n\t\t\t\t/* x */ parseInt(endCoords[0]),\n\t\t\t\t/* y */ parseInt(endCoords[1]));\n\n\t\t\troomData.endings.push(end);\n\t\t}\n\t\telse if (getType(lines[i]) === \"PAL\") {\n\t\t\t/* CHOOSE PALETTE (that's not default) */\n\t\t\troomData.pal = getId(lines[i]);\n\t\t}\n\t\telse if (getType(lines[i]) === \"AVA\") {\n\t\t\t// change avatar appearance per room\n\t\t\troomData.ava = getId(lines[i]);\n\t\t}\n\t\telse if (getType(lines[i]) === \"TUNE\") {\n\t\t\troomData.tune = getId(lines[i]);\n\t\t}\n\t\telse if (getType(lines[i]) === \"NAME\") {\n\t\t\troomData.name = getNameArg(lines[i]);\n\t\t}\n\n\t\ti++;\n\t}\n\n\tworld.room[id] = roomData;\n\n\treturn i;\n}\n\nfunction parseTile(parseState, world) {\n\tvar i = parseState.index;\n\tvar lines = parseState.lines;\n\n\tvar id = getId(lines[i]);\n\tvar tileData = createDrawingData(\"TIL\", id);\n\n\ti++;\n\n\t// read & store tile image source\n\ti = parseDrawingCore(lines, i, tileData.drw, world);\n\n\t// update animation info\n\ttileData.animation.frameCount = getDrawingFrameCount(world, tileData.drw);\n\ttileData.animation.isAnimated = tileData.animation.frameCount > 1;\n\n\t// read other properties\n\twhile (i < lines.length && lines[i].length > 0) { // look for empty line\n\t\tif (getType(lines[i]) === \"COL\") {\n\t\t\ttileData.col = parseInt(getId(lines[i]));\n\t\t}\n\t\telse if (getType(lines[i]) === \"BGC\") {\n\t\t\tvar bgcId = getId(lines[i]);\n\t\t\tif (bgcId === \"*\") {\n\t\t\t\t// transparent background\n\t\t\t\ttileData.bgc = (-1 * tileColorStartIndex);\n\t\t\t}\n\t\t\telse {\n\t\t\t\ttileData.bgc = parseInt(bgcId);\n\t\t\t}\n\t\t}\n\t\telse if (getType(lines[i]) === \"NAME\") {\n\t\t\t/* NAME */\n\t\t\ttileData.name = getNameArg(lines[i]);\n\t\t}\n\t\telse if (getType(lines[i]) === \"WAL\") {\n\t\t\tvar wallArg = getArg(lines[i], 1);\n\t\t\tif (wallArg === \"true\") {\n\t\t\t\ttileData.isWall = true;\n\t\t\t}\n\t\t\telse if (wallArg === \"false\") {\n\t\t\t\ttileData.isWall = false;\n\t\t\t}\n\t\t}\n\n\t\ti++;\n\t}\n\n\t// store tile data\n\tworld.tile[id] = tileData;\n\n\treturn i;\n}\n\nfunction parseSprite(parseState, world) {\n\tvar i = parseState.index;\n\tvar lines = parseState.lines;\n\n\tvar id = getId(lines[i]);\n\tvar type = (id === \"A\") ? \"AVA\" : \"SPR\";\n\tvar spriteData = createDrawingData(type, id);\n\n\t// bitsy.log(spriteData);\n\n\ti++;\n\n\t// read & store sprite image source\n\ti = parseDrawingCore(lines, i, spriteData.drw, world);\n\n\t// update animation info\n\tspriteData.animation.frameCount = getDrawingFrameCount(world, spriteData.drw);\n\tspriteData.animation.isAnimated = spriteData.animation.frameCount > 1;\n\n\t// read other properties\n\twhile (i < lines.length && lines[i].length > 0) { // look for empty line\n\t\tif (getType(lines[i]) === \"COL\") {\n\t\t\t/* COLOR OFFSET INDEX */\n\t\t\tspriteData.col = parseInt(getId(lines[i]));\n\t\t}\n\t\telse if (getType(lines[i]) === \"BGC\") {\n\t\t\t/* BACKGROUND COLOR */\n\t\t\tvar bgcId = getId(lines[i]);\n\t\t\tif (bgcId === \"*\") {\n\t\t\t\t// transparent background\n\t\t\t\tspriteData.bgc = (-1 * tileColorStartIndex);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tspriteData.bgc = parseInt(bgcId);\n\t\t\t}\n\t\t}\n\t\telse if (getType(lines[i]) === \"POS\") {\n\t\t\t/* STARTING POSITION */\n\t\t\tvar posArgs = lines[i].split(\" \");\n\t\t\tvar roomId = posArgs[1];\n\t\t\tvar coordArgs = posArgs[2].split(\",\");\n\t\t\tparseState.spriteStartLocations[id] = {\n\t\t\t\troom : roomId,\n\t\t\t\tx : parseInt(coordArgs[0]),\n\t\t\t\ty : parseInt(coordArgs[1])\n\t\t\t};\n\t\t}\n\t\telse if(getType(lines[i]) === \"DLG\") {\n\t\t\tspriteData.dlg = getId(lines[i]);\n\t\t}\n\t\telse if (getType(lines[i]) === \"NAME\") {\n\t\t\t/* NAME */\n\t\t\tspriteData.name = getNameArg(lines[i]);\n\t\t}\n\t\telse if (getType(lines[i]) === \"ITM\") {\n\t\t\t/* ITEM STARTING INVENTORY */\n\t\t\tvar itemId = getId(lines[i]);\n\t\t\tvar itemCount = parseFloat(getArg(lines[i], 2));\n\t\t\tspriteData.inventory[itemId] = itemCount;\n\t\t}\n\t\telse if (getType(lines[i]) == \"BLIP\") {\n\t\t\tvar blipId = getId(lines[i]);\n\t\t\tspriteData.blip = blipId;\n\t\t}\n\n\t\ti++;\n\t}\n\n\t// store sprite data\n\tworld.sprite[id] = spriteData;\n\n\treturn i;\n}\n\nfunction parseItem(parseState, world) {\n\tvar i = parseState.index;\n\tvar lines = parseState.lines;\n\n\tvar id = getId(lines[i]);\n\tvar itemData = createDrawingData(\"ITM\", id);\n\n\ti++;\n\n\t// read & store item image source\n\ti = parseDrawingCore(lines, i, itemData.drw, world);\n\n\t// update animation info\n\titemData.animation.frameCount = getDrawingFrameCount(world, itemData.drw);\n\titemData.animation.isAnimated = itemData.animation.frameCount > 1;\n\n\t// read other properties\n\twhile (i < lines.length && lines[i].length > 0) { // look for empty line\n\t\tif (getType(lines[i]) === \"COL\") {\n\t\t\t/* COLOR OFFSET INDEX */\n\t\t\titemData.col = parseInt(getArg(lines[i], 1));\n\t\t}\n\t\telse if (getType(lines[i]) === \"BGC\") {\n\t\t\t/* BACKGROUND COLOR */\n\t\t\tvar bgcId = getId(lines[i]);\n\t\t\tif (bgcId === \"*\") {\n\t\t\t\t// transparent background\n\t\t\t\titemData.bgc = (-1 * tileColorStartIndex);\n\t\t\t}\n\t\t\telse {\n\t\t\t\titemData.bgc = parseInt(bgcId);\n\t\t\t}\n\t\t}\n\t\telse if (getType(lines[i]) === \"DLG\") {\n\t\t\titemData.dlg = getId(lines[i]);\n\t\t}\n\t\telse if (getType(lines[i]) === \"NAME\") {\n\t\t\t/* NAME */\n\t\t\titemData.name = getNameArg(lines[i]);\n\t\t}\n\t\telse if (getType(lines[i]) == \"BLIP\") {\n\t\t\tvar blipId = getId(lines[i]);\n\t\t\titemData.blip = blipId;\n\t\t}\n\n\t\ti++;\n\t}\n\n\t// store item data\n\tworld.item[id] = itemData;\n\n\treturn i;\n}\n\nfunction parseDrawingCore(lines, i, drwId, world) {\n\tvar frameList = []; //init list of frames\n\tframeList.push( [] ); //init first frame\n\tvar frameIndex = 0;\n\tvar y = 0;\n\twhile (y < bitsy.TILE_SIZE) {\n\t\tvar line = lines[i + y];\n\t\tvar row = [];\n\n\t\tfor (x = 0; x < bitsy.TILE_SIZE; x++) {\n\t\t\trow.push(parseInt(line.charAt(x)));\n\t\t}\n\n\t\tframeList[frameIndex].push(row);\n\t\ty++;\n\n\t\tif (y === bitsy.TILE_SIZE) {\n\t\t\ti = i + y;\n\t\t\tif (lines[i] != undefined && lines[i].charAt(0) === \">\") {\n\t\t\t\t// start next frame!\n\t\t\t\tframeList.push([]);\n\t\t\t\tframeIndex++;\n\n\t\t\t\t//start the count over again for the next frame\n\t\t\t\ti++;\n\t\t\t\ty = 0;\n\t\t\t}\n\t\t}\n\t}\n\n\tstoreDrawingData(world, drwId, frameList);\n\n\treturn i;\n}\n\nfunction parseDialog(parseState, world) {\n\tvar i = parseState.index;\n\tvar lines = parseState.lines;\n\n\t// hacky but I need to store this so I can set the name below\n\tvar id = getId(lines[i]);\n\n\ti = parseScript(lines, i, world.dialog);\n\n\tif (i < lines.length && lines[i].length > 0 && getType(lines[i]) === \"NAME\") {\n\t\tworld.dialog[id].name = getNameArg(lines[i]);\n\t\ti++;\n\t}\n\n\treturn i;\n}\n\n// keeping this around to parse old files where endings were separate from dialogs\nfunction parseEnding(parseState, world) {\n\tvar i = parseState.index;\n\tvar lines = parseState.lines;\n\n\treturn parseScript(lines, i, world.end);\n}\n\nfunction parseScript(lines, i, data) {\n\tvar id = getId(lines[i]);\n\ti++;\n\n\tvar results;\n\tif (scriptUtils) {\n\t\tresults = scriptUtils.ReadDialogScript(lines,i);\n\t}\n\telse {\n\t\tresults = { script: lines[i], index: (i + 1)};\n\t}\n\n\tdata[id] = createDialogData(id);\n\tdata[id].src = results.script;\n\n\ti = results.index;\n\n\treturn i;\n}\n\nfunction parseVariable(parseState, world) {\n\tvar i = parseState.index;\n\tvar lines = parseState.lines;\n\tvar id = getId(lines[i]);\n\ti++;\n\tvar value = lines[i];\n\ti++;\n\tworld.variable[id] = value;\n\treturn i;\n}\n\nfunction parseFontName(parseState, world) {\n\tvar i = parseState.index;\n\tvar lines = parseState.lines;\n\tworld.fontName = getArg(lines[i], 1);\n\ti++;\n\treturn i;\n}\n\nfunction parseTextDirection(parseState, world) {\n\tvar i = parseState.index;\n\tvar lines = parseState.lines;\n\tworld.textDirection = getArg(lines[i], 1);\n\ti++;\n\treturn i;\n}\n\nfunction parseFontData(parseState, world) {\n\tvar i = parseState.index;\n\tvar lines = parseState.lines;\n\n\t// NOTE : we're not doing the actual parsing here --\n\t// just grabbing the block of text that represents the font\n\t// and giving it to the font manager to use later\n\n\tvar localFontName = getId(lines[i]);\n\tvar localFontData = lines[i];\n\ti++;\n\n\twhile (i < lines.length && lines[i] != \"\") {\n\t\tlocalFontData += \"\\n\" + lines[i];\n\t\ti++;\n\t}\n\n\tvar localFontFilename = localFontName + fontManager.GetExtension();\n\tfontManager.AddResource( localFontFilename, localFontData );\n\n\treturn i;\n}\n\nfunction parseTune(parseState, world) {\n\tvar i = parseState.index;\n\tvar lines = parseState.lines;\n\n\tvar id = getId(lines[i]);\n\ti++;\n\n\tvar tuneData = createTuneData(id);\n\n\tvar barIndex = 0;\n\twhile (barIndex < maxTuneLength) {\n\t\t// MELODY\n\t\tvar melodyBar = createTuneBarData();\n\t\tvar melodyNotes = lines[i].split(\",\");\n\t\tfor (var j = 0; j < barLength; j++) {\n\t\t\t// default to a rest\n\t\t\tvar pitch = { beats: 0, note: Note.C, octave: Octave[4], };\n\n\t\t\tif (j < melodyNotes.length) {\n\t\t\t\tvar pitchSplit = melodyNotes[j].split(\"~\");\n\t\t\t\tvar pitchStr = pitchSplit[0];\n\t\t\t\tpitch = parsePitch(melodyNotes[j]);\n\n\t\t\t\t// look for effect added to the note\n\t\t\t\tif (pitchSplit.length > 1) {\n\t\t\t\t\tvar blipId = pitchSplit[1];\n\t\t\t\t\tpitch.blip = blipId;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tmelodyBar[j] = pitch;\n\t\t}\n\t\ttuneData.melody.push(melodyBar);\n\t\ti++;\n\n\t\t// HARMONY\n\t\tvar harmonyBar = createTuneBarData();\n\t\tvar harmonyNotes = lines[i].split(\",\");\n\t\tfor (var j = 0; j < barLength; j++) {\n\t\t\t// default to a rest\n\t\t\tvar pitch = { beats: 0, note: Note.C, octave: Octave[4], };\n\n\t\t\tif (j < harmonyNotes.length) {\n\t\t\t\tvar pitchSplit = harmonyNotes[j].split(\"~\");\n\t\t\t\tvar pitchStr = pitchSplit[0];\n\t\t\t\tpitch = parsePitch(harmonyNotes[j]);\n\n\t\t\t\t// look for effect added to the note\n\t\t\t\tif (pitchSplit.length > 1) {\n\t\t\t\t\tvar blipId = pitchSplit[1];\n\t\t\t\t\tpitch.blip = blipId;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tharmonyBar[j] = pitch;\n\t\t}\n\t\ttuneData.harmony.push(harmonyBar);\n\t\ti++;\n\n\t\t// check if there's another bar after this one\n\t\tif (lines[i] === \">\") {\n\t\t\t// there is! increment the index\n\t\t\tbarIndex++;\n\t\t\ti++;\n\t\t}\n\t\telse {\n\t\t\t// we've reached the end of the tune!\n\t\t\tbarIndex = maxTuneLength;\n\t\t}\n\t}\n\n\t// parse other tune properties\n\twhile (i < lines.length && lines[i].length > 0) { // look for empty line\n\t\tif (getType(lines[i]) === \"KEY\") {\n\t\t\ttuneData.key = createTuneKeyData();\n\n\t\t\tvar keyNotes = getArg(lines[i], 1);\n\t\t\tif (keyNotes) {\n\t\t\t\tkeyNotes = keyNotes.split(\",\");\n\t\t\t\tfor (var j = 0; j < keyNotes.length && j < tuneData.key.notes.length; j++) {\n\t\t\t\t\tvar pitch = parsePitch(keyNotes[j]);\n\t\t\t\t\ttuneData.key.notes[j] = pitch.note;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar keyScale = getArg(lines[i], 2);\n\t\t\tif (keyScale) {\n\t\t\t\tkeyScale = keyScale.split(\",\");\n\t\t\t\tfor (var j = 0; j < keyScale.length; j++) {\n\t\t\t\t\tvar pitch = parsePitch(keyScale[j]);\n\t\t\t\t\tif (pitch.note > Solfa.NONE && pitch.note < Solfa.COUNT) {\n\t\t\t\t\t\ttuneData.key.scale.push(pitch.note);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse if (getType(lines[i]) === \"TMP\") {\n\t\t\tvar tempoId = getId(lines[i]);\n\t\t\tif (Tempo[tempoId] != undefined) {\n\t\t\t\ttuneData.tempo = Tempo[tempoId];\n\t\t\t}\n\t\t}\n\t\telse if (getType(lines[i]) === \"SQR\") {\n\t\t\t// square wave instrument settings\n\t\t\tvar squareWaveIdA = getArg(lines[i], 1);\n\t\t\tif (SquareWave[squareWaveIdA] != undefined) {\n\t\t\t\ttuneData.instrumentA = SquareWave[squareWaveIdA];\n\t\t\t}\n\n\t\t\tvar squareWaveIdB = getArg(lines[i], 2);\n\t\t\tif (SquareWave[squareWaveIdB] != undefined) {\n\t\t\t\ttuneData.instrumentB = SquareWave[squareWaveIdB];\n\t\t\t}\n\t\t}\n\t\telse if (getType(lines[i]) === \"ARP\") {\n\t\t\tvar arp = getId(lines[i]);\n\t\t\tif (ArpeggioPattern[arp] != undefined) {\n\t\t\t\ttuneData.arpeggioPattern = ArpeggioPattern[arp];\n\t\t\t}\n\t\t}\n\t\telse if (getType(lines[i]) === \"NAME\") {\n\t\t\tvar name = lines[i].split(/\\s(.+)/)[1];\n\t\t\ttuneData.name = name;\n\t\t\t// todo : add to map?\n\t\t}\n\n\t\ti++;\n\t}\n\n\tworld.tune[id] = tuneData;\n\n\treturn i;\n}\n\nfunction parseBlip(parseState, world) {\n\tvar i = parseState.index;\n\tvar lines = parseState.lines;\n\n\tvar id = getId(lines[i]);\n\ti++;\n\n\tvar blipData = createBlipData(id);\n\n\t// blip pitches\n\tvar notes = lines[i].split(\",\");\n\tif (notes.length >= 1) {\n\t\tblipData.pitchA = parsePitch(notes[0]);\n\t}\n\tif (notes.length >= 2) {\n\t\tblipData.pitchB = parsePitch(notes[1]);\n\t}\n\tif (notes.length >= 3) {\n\t\tblipData.pitchC = parsePitch(notes[2]);\n\t}\n\ti++;\n\n\t// blip parameters\n\twhile (i < lines.length && lines[i].length > 0) { // look for empty line\n\t\tif (getType(lines[i]) === \"ENV\") {\n\t\t\t// envelope\n\t\t\tblipData.envelope.attack = parseInt(getArg(lines[i], 1));\n\t\t\tblipData.envelope.decay = parseInt(getArg(lines[i], 2));\n\t\t\tblipData.envelope.sustain = parseInt(getArg(lines[i], 3));\n\t\t\tblipData.envelope.length = parseInt(getArg(lines[i], 4));\n\t\t\tblipData.envelope.release = parseInt(getArg(lines[i], 5));\n\t\t}\n\t\telse if (getType(lines[i]) === \"BEAT\") {\n\t\t\t// pitch beat length\n\t\t\tblipData.beat.time = parseInt(getArg(lines[i], 1));\n\t\t\tblipData.beat.delay = parseInt(getArg(lines[i], 2));\n\t\t}\n\t\telse if (getType(lines[i]) === \"SQR\") {\n\t\t\t// square wave\n\t\t\tvar squareWaveId = getArg(lines[i], 1);\n\t\t\tif (SquareWave[squareWaveId] != undefined) {\n\t\t\t\tblipData.instrument = SquareWave[squareWaveId];\n\t\t\t}\n\t\t}\n\t\t// TODO : consider for future update\n\t\t// else if (getType(lines[i]) === \"SLD\") {\n\t\t// \t// slide mode\n\t\t// \tif (parseInt(getArg(lines[i], 1)) === 1) {\n\t\t// \t\tblipData.doSlide = true;\n\t\t// \t}\n\t\t// }\n\t\telse if (getType(lines[i]) === \"RPT\") {\n\t\t\t// repeat mode\n\t\t\tif (parseInt(getArg(lines[i], 1)) === 1) {\n\t\t\t\tblipData.doRepeat = true;\n\t\t\t}\n\t\t}\n\t\telse if (getType(lines[i]) === \"NAME\") {\n\t\t\tvar name = lines[i].split(/\\s(.+)/)[1];\n\t\t\tblipData.name = name;\n\t\t}\n\n\t\ti++;\n\t}\n\n\tworld.blip[id] = blipData;\n\n\treturn i;\n}\n\nfunction parsePitch(pitchStr) {\n\tvar pitch = { beats: 1, note: Note.C, octave: Octave[4], };\n\tvar i;\n\n\t// beats\n\tvar beatsToken = \"\";\n\tfor (i = 0; i < pitchStr.length && (\"0123456789\".indexOf(pitchStr[i]) != -1); i++) {\n\t\tbeatsToken += pitchStr[i];\n\t}\n\tif (beatsToken.length > 0) {\n\t\tpitch.beats = parseInt(beatsToken);\n\t}\n\n\t// note\n\tvar noteType;\n\tvar noteName = \"\";\n\tif (i < pitchStr.length) {\n\t\tif (pitchStr[i] === pitchStr[i].toUpperCase()) {\n\t\t\t// uppercase letters represent chromatic notes\n\t\t\tnoteType = Note;\n\t\t\tnoteName += pitchStr[i];\n\t\t\ti++;\n\n\t\t\t// check for sharp\n\t\t\tif (i < pitchStr.length && pitchStr[i] === \"#\") {\n\t\t\t\tnoteName += \"_SHARP\";\n\t\t\t\ti++;\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\t// lowercase letters represent solfa notes\n\t\t\tnoteType = Solfa;\n\t\t\tnoteName += pitchStr[i].toUpperCase();\n\t\t\ti++;\n\t\t}\n\t}\n\n\tif (noteType != undefined && noteType[noteName] != undefined) {\n\t\tpitch.note = noteType[noteName];\n\t}\n\n\t// octave\n\tvar octaveToken = \"\";\n\tif (i < pitchStr.length) {\n\t\toctaveToken += pitchStr[i];\n\t}\n\n\tif (Octave[octaveToken] != undefined) {\n\t\tpitch.octave = Octave[octaveToken];\n\t}\n\n\treturn pitch;\n}\n\nfunction parseFlag(parseState, world) {\n\tvar i = parseState.index;\n\tvar lines = parseState.lines;\n\tvar id = getId(lines[i]);\n\tvar valStr = lines[i].split(\" \")[2];\n\tworld.flags[id] = parseInt( valStr );\n\ti++;\n\treturn i;\n}\n\nfunction getDrawingFrameCount(world, drwId) {\n\treturn world.drawings[drwId].length;\n}\n\nfunction storeDrawingData(world, drwId, drawingData) {\n\tworld.drawings[drwId] = drawingData;\n}\n\nfunction placeSprites(parseState, world) {\n\tfor (id in parseState.spriteStartLocations) {\n\t\tworld.sprite[id].room = parseState.spriteStartLocations[id].room;\n\t\tworld.sprite[id].x = parseState.spriteStartLocations[id].x;\n\t\tworld.sprite[id].y = parseState.spriteStartLocations[id].y;\n\t}\n}\n\nfunction createNameMapsForWorld(world) {\n\tvar nameMaps = {};\n\n\tfunction createNameMap(objectStore) {\n\t\tvar map = {};\n\n\t\tfor (id in objectStore) {\n\t\t\tif (objectStore[id].name != undefined && objectStore[id].name != null) {\n\t\t\t\tmap[objectStore[id].name] = id;\n\t\t\t}\n\t\t}\n\n\t\treturn map;\n\t}\n\n\tnameMaps.room = createNameMap(world.room);\n\tnameMaps.tile = createNameMap(world.tile);\n\tnameMaps.sprite = createNameMap(world.sprite);\n\tnameMaps.item = createNameMap(world.item);\n\tnameMaps.dialog = createNameMap(world.dialog);\n\tnameMaps.palette = createNameMap(world.palette);\n\tnameMaps.tune = createNameMap(world.tune);\n\tnameMaps.blip = createNameMap(world.blip);\n\n\treturn nameMaps;\n}\n\nfunction getType(line) {\n\treturn getArg(line,0);\n}\n\nfunction getId(line) {\n\treturn getArg(line,1);\n}\n\nfunction getCoord(line,arg) {\n\treturn getArg(line,arg).split(\",\");\n}\n\nfunction getArg(line,arg) {\n\treturn line.split(\" \")[arg];\n}\n\nfunction getNameArg(line) {\n\tvar name = line.split(/\\s(.+)/)[1];\n\treturn name;\n}", + "world.js": "/* BITSY VERSION */\n// is this the right place for this to live?\nvar version = {\n\tmajor: 8, // major changes\n\tminor: 12, // smaller changes\n\tdevBuildPhase: \"RELEASE\",\n};\nfunction getEngineVersion() {\n\treturn version.major + \".\" + version.minor;\n}\n\n/* TEXT CONSTANTS */\nvar titleDialogId = \"title\";\n\n// todo : where should this be stored?\nvar tileColorStartIndex = 16;\n\nvar TextDirection = {\n\tLeftToRight : \"LTR\",\n\tRightToLeft : \"RTL\"\n};\n\nvar defaultFontName = \"ascii_small\";\n\n/* TUNE CONSTANTS */\nvar barLength = 16; // sixteenth notes\nvar minTuneLength = 1;\nvar maxTuneLength = 16;\n\n// chromatic notes\nvar Note = {\n\tNONE \t\t: -1,\n\tC \t\t\t: 0,\t// C\n\tC_SHARP \t: 1,\t// C sharp / D flat\n\tD \t\t\t: 2,\t// D\n\tD_SHARP \t: 3,\t// D sharp / E flat\n\tE \t\t\t: 4,\t// E\n\tF \t\t\t: 5,\t// F\n\tF_SHARP \t: 6,\t// F sharp / G flat\n\tG \t\t\t: 7,\t// G\n\tG_SHARP \t: 8,\t// G sharp / A flat\n\tA \t\t\t: 9,\t// A\n\tA_SHARP \t: 10,\t// A sharp / B flat\n\tB \t\t\t: 11,\t// B\n\tCOUNT \t\t: 12\n};\n\n// solfa notes\nvar Solfa = {\n\tNONE \t: -1,\n\tD \t\t: 0,\t// Do\n\tR \t\t: 1,\t// Re\n\tM \t\t: 2,\t// Mi\n\tF \t\t: 3,\t// Fa\n\tS \t\t: 4,\t// Sol\n\tL \t\t: 5,\t// La\n\tT \t\t: 6,\t// Ti\n\tCOUNT \t: 7\n};\n\nvar Octave = {\n\tNONE: -1,\n\t2: 0,\n\t3: 1,\n\t4: 2, // octave 4: middle C octave\n\t5: 3,\n\tCOUNT: 4\n};\n\nvar Tempo = {\n\tSLW: 0, // slow\n\tMED: 1, // medium\n\tFST: 2, // fast\n\tXFST: 3 // extra fast (aka turbo)\n};\n\nvar SquareWave = {\n\tP8: 0, // pulse 1 / 8\n\tP4: 1, // pulse 1 / 4\n\tP2: 2, // pulse 1 / 2\n\tCOUNT: 3\n};\n\nvar ArpeggioPattern = {\n\tOFF: 0,\n\tUP: 1, // ascending triad chord\n\tDWN: 2, // descending triad chord\n\tINT5: 3, // 5 step interval\n\tINT8: 4 // 8 setp interval\n};\n\nfunction createWorldData() {\n\treturn {\n\t\troom : {},\n\t\ttile : {},\n\t\tsprite : {},\n\t\titem : {},\n\t\tdialog : {},\n\t\tend : {}, // pre-7.0 ending data for backwards compatibility\n\t\tpalette : { // start off with a default palette\n\t\t\t\"default\" : {\n\t\t\t\tname : \"default\",\n\t\t\t\tcolors : [[0,0,0],[255,255,255],[255,255,255]]\n\t\t\t}\n\t\t},\n\t\tvariable : {},\n\t\ttune : {},\n\t\tblip : {},\n\t\tversionNumberFromComment : -1, // -1 indicates no version information found\n\t\tfontName : defaultFontName,\n\t\ttextDirection : TextDirection.LeftToRight,\n\t\tflags : createDefaultFlags(),\n\t\tnames : {},\n\t\t// source data for all drawings (todo: better name?)\n\t\tdrawings : {},\n\t};\n}\n\n// creates a drawing data structure with default property values for the type\nfunction createDrawingData(type, id) {\n\t// the avatar's drawing id still uses the sprite prefix (for back compat)\n\tvar drwId = (type === \"AVA\" ? \"SPR\" : type) + \"_\" + id;\n\n\tvar drawingData = {\n\t\ttype : type,\n\t\tid : id,\n\t\tname : null,\n\t\tdrw : drwId,\n\t\tcol : (type === \"TIL\") ? 1 : 2, // foreground color\n\t\tbgc : 0, // background color\n\t\tanimation : {\n\t\t\tisAnimated : false,\n\t\t\tframeIndex : 0,\n\t\t\tframeCount : 1,\n\t\t},\n\t};\n\n\t// add type specific properties\n\tif (type === \"TIL\") {\n\t\t// default null value indicates it can vary from room to room (original version)\n\t\tdrawingData.isWall = null;\n\t}\n\n\tif (type === \"AVA\" || type === \"SPR\") {\n\t\t// default sprite location is \"offstage\"\n\t\tdrawingData.room = null;\n\t\tdrawingData.x = -1;\n\t\tdrawingData.y = -1;\n\t\tdrawingData.inventory = {};\n\t}\n\n\tif (type === \"AVA\" || type === \"SPR\" || type === \"ITM\") {\n\t\tdrawingData.dlg = null;\n\t\tdrawingData.blip = null;\n\t}\n\n\treturn drawingData;\n}\n\nfunction createTuneData(id) {\n\tvar tuneData = {\n\t\tid : id,\n\t\tname : null,\n\t\tmelody : [],\n\t\tharmony : [],\n\t\tkey: null, // a null key indicates a chromatic scale (all notes enabled)\n\t\ttempo: Tempo.MED,\n\t\tinstrumentA : SquareWave.P2,\n\t\tinstrumentB : SquareWave.P2,\n\t\tarpeggioPattern : ArpeggioPattern.OFF,\n\t};\n\treturn tuneData;\n}\n\nfunction createTuneBarData() {\n\tvar bar = [];\n\tfor (var i = 0; i < barLength; i++) {\n\t\tbar.push({ beats: 0, note: Note.C, octave: Octave[4] });\n\t}\n\treturn bar;\n}\n\nfunction createTuneKeyData() {\n\tvar key = {\n\t\tnotes: [], // mapping of the solfa scale degrees to chromatic notes\n\t\tscale: [] // list of solfa notes that are enabled for this key\n\t};\n\n\t// initialize notes\n\tfor (var i = 0; i < Solfa.COUNT; i++) {\n\t\tkey.notes.push(Note.NONE);\n\t}\n\n\treturn key;\n}\n\nfunction createBlipData(id) {\n\tvar blipData = {\n\t\tid: id,\n\t\tname: null,\n\t\tpitchA: { beats: 0, note: Note.C, octave: Octave[4] },\n\t\tpitchB: { beats: 0, note: Note.C, octave: Octave[4] },\n\t\tpitchC: { beats: 0, note: Note.C, octave: Octave[4] },\n\t\tenvelope: {\n\t\t\tattack: 0, // attack time in ms\n\t\t\tdecay: 0, // decay time in ms\n\t\t\tsustain: 0, // sustain volume\n\t\t\tlength: 0, // sustain time in ms\n\t\t\trelease: 0 // release time in ms\n\t\t},\n\t\tbeat : {\n\t\t\ttime: 0, // time in ms between pitch changes\n\t\t\tdelay: 0 // time in ms *before* first pitch change\n\t\t},\n\t\tinstrument: SquareWave.P2,\n\t\tdoRepeat: false\n\t\t// TODO : consider for future update\n\t\t// doSlide: false,\n\t};\n\n\treturn blipData;\n}\n\nfunction createDefaultFlags() {\n\treturn {\n\t\t// version\n\t\tVER_MAJ: -1, // major version number (-1 = no version information found)\n\t\tVER_MIN: -1, // minor version number (-1 = no version information found)\n\t\t// compatibility\n\t\tROOM_FORMAT: 0, // 0 = non-comma separated (original), 1 = comma separated (default)\n\t\tDLG_COMPAT: 0, // 0 = default dialog behavior, 1 = pre-7.0 dialog behavior\n\t\t// config\n\t\tTXT_MODE: 0 // 0 = HIREZ (2x - default), 1 = LOREZ (1x)\n\t};\n}\n\nfunction createDialogData(id) {\n\treturn {\n\t\tsrc : \"\",\n\t\tname : null,\n\t\tid : id,\n\t};\n}\n\nfunction parseWorld(file) {\n\tbitsy.log(\"create world data\");\n\n\tvar world = createWorldData();\n\n\tbitsy.log(\"init parse state\");\n\n\tvar parseState = {\n\t\tlines : file.split(\"\\n\"),\n\t\tindex : 0,\n\t\tspriteStartLocations : {}\n\t};\n\n\tbitsy.log(\"start reading lines\");\n\n\twhile (parseState.index < parseState.lines.length) {\n\t\tvar i = parseState.index;\n\t\tvar lines = parseState.lines;\n\t\tvar curLine = lines[i];\n\n\t\t// bitsy.log(\"LN \" + i + \" xx \" + curLine);\n\n\t\tif (i == 0) {\n\t\t\ti = parseTitle(parseState, world);\n\t\t}\n\t\telse if (curLine.length <= 0 || curLine.charAt(0) === \"#\") {\n\t\t\t// collect version number from a comment (hacky but required for pre-8.0 compatibility)\n\t\t\tif (curLine.indexOf(\"# BITSY VERSION \") != -1) {\n\t\t\t\tworld.versionNumberFromComment = parseFloat(curLine.replace(\"# BITSY VERSION \", \"\"));\n\t\t\t}\n\n\t\t\t//skip blank lines & comments\n\t\t\ti++;\n\t\t}\n\t\telse if (getType(curLine) === \"PAL\") {\n\t\t\ti = parsePalette(parseState, world);\n\t\t}\n\t\telse if (getType(curLine) === \"ROOM\" || getType(curLine) === \"SET\") { // SET for back compat\n\t\t\ti = parseRoom(parseState, world);\n\t\t}\n\t\telse if (getType(curLine) === \"TIL\") {\n\t\t\ti = parseTile(parseState, world);\n\t\t}\n\t\telse if (getType(curLine) === \"SPR\") {\n\t\t\ti = parseSprite(parseState, world);\n\t\t}\n\t\telse if (getType(curLine) === \"ITM\") {\n\t\t\ti = parseItem(parseState, world);\n\t\t}\n\t\telse if (getType(curLine) === \"DLG\") {\n\t\t\ti = parseDialog(parseState, world);\n\t\t}\n\t\telse if (getType(curLine) === \"END\") {\n\t\t\t// parse endings for back compat\n\t\t\ti = parseEnding(parseState, world);\n\t\t}\n\t\telse if (getType(curLine) === \"VAR\") {\n\t\t\ti = parseVariable(parseState, world);\n\t\t}\n\t\telse if (getType(curLine) === \"DEFAULT_FONT\") {\n\t\t\ti = parseFontName(parseState, world);\n\t\t}\n\t\telse if (getType(curLine) === \"TEXT_DIRECTION\") {\n\t\t\ti = parseTextDirection(parseState, world);\n\t\t}\n\t\telse if (getType(curLine) === \"FONT\") {\n\t\t\ti = parseFontData(parseState, world);\n\t\t}\n\t\telse if (getType(curLine) === \"TUNE\") {\n\t\t\ti = parseTune(parseState, world);\n\t\t}\n\t\telse if (getType(curLine) === \"BLIP\") {\n\t\t\ti = parseBlip(parseState, world);\n\t\t}\n\t\telse if (getType(curLine) === \"!\") {\n\t\t\ti = parseFlag(parseState, world);\n\t\t}\n\t\telse {\n\t\t\ti++;\n\t\t}\n\n\t\tparseState.index = i;\n\t}\n\n\tworld.names = createNameMapsForWorld(world);\n\n\tplaceSprites(parseState, world);\n\n\tif ((world.flags.VER_MAJ <= -1 || world.flags.VER_MIN <= -1) && world.versionNumberFromComment > -1) {\n\t\tvar versionNumberStr = \"\" + world.versionNumberFromComment;\n\t\tversionNumberStr = versionNumberStr.split(\".\");\n\t\tworld.flags.VER_MAJ = parseFloat(versionNumberStr[0]);\n\t\tworld.flags.VER_MIN = parseFloat(versionNumberStr[1]);\n\t}\n\n\t// starting in version v7.0, there were two major changes to dialog behavior:\n\t// 1) sprite dialog was no longer implicitly linked by the sprite and dialog IDs matching\n\t// (see this commit: 5e1adb29faad4e50603c689d2dac143074117b4e)\n\t// 2) ending dialogs no longer had their own world data type (\"END\")\n\t// for the v7.x versions I tried to automatically convert old dialog to the new format,\n\t// however, that process can be unreliable and lead to weird bugs.\n\t// with v8.0 and above I will no longer attempt to convert old files, and instead will use\n\t// a flag to indicate files that need to use the backwards compatible behavior -\n\t// this is more reliable & configurable (at the cost of making pre-7.0 games a bit harder to edit)\n\tif (world.flags.VER_MAJ < 7) {\n\t\tworld.flags.DLG_COMPAT = 1;\n\t}\n\n\treturn world;\n}\n\nfunction parseTitle(parseState, world) {\n\tvar i = parseState.index;\n\tvar lines = parseState.lines;\n\n\tvar results;\n\tif (scriptUtils) {\n\t\tresults = scriptUtils.ReadDialogScript(lines,i);\n\t}\n\telse {\n\t\tresults = { script: lines[i], index: (i + 1) };\n\t}\n\n\tworld.dialog[titleDialogId] = createDialogData(titleDialogId);\n\tworld.dialog[titleDialogId].src = results.script;\n\n\ti = results.index;\n\ti++;\n\n\treturn i;\n}\n\nfunction parsePalette(parseState, world) {\n\tvar i = parseState.index;\n\tvar lines = parseState.lines;\n\n\tvar id = getId(lines[i]);\n\ti++;\n\tvar colors = [];\n\tvar name = null;\n\twhile (i < lines.length && lines[i].length > 0) { //look for empty line\n\t\tvar args = lines[i].split(\" \");\n\t\tif (args[0] === \"NAME\") {\n\t\t\tname = lines[i].split(/\\s(.+)/)[1];\n\t\t}\n\t\telse {\n\t\t\tvar col = [];\n\t\t\tlines[i].split(\",\").forEach(function(i) {\n\t\t\t\tcol.push(parseInt(i));\n\t\t\t});\n\t\t\tcolors.push(col);\n\t\t}\n\t\ti++;\n\t}\n\tworld.palette[id] = {\n\t\tid : id,\n\t\tname : name,\n\t\tcolors : colors\n\t};\n\treturn i;\n}\n\nfunction createRoomData(id) {\n\treturn {\n\t\tid: id,\n\t\tname: null,\n\t\ttilemap: [],\n\t\twalls: [],\n\t\texits: [],\n\t\tendings: [],\n\t\titems: [],\n\t\tpal: null,\n\t\tava: null,\n\t\ttune: \"0\"\n\t};\n}\n\nfunction createExitData(x, y, destRoom, destX, destY, transition, dlg) {\n\treturn {\n\t\tx: x,\n\t\ty: y,\n\t\tdest: {\n\t\t\troom: destRoom,\n\t\t\tx: destX,\n\t\t\ty: destY\n\t\t},\n\t\ttransition_effect: transition,\n\t\tdlg: dlg,\n\t};\n}\n\nfunction createEndingData(id, x, y) {\n\treturn {\n\t\tid: id,\n\t\tx: x,\n\t\ty: y\n\t};\n}\n\nfunction parseRoom(parseState, world) {\n\tvar i = parseState.index;\n\tvar lines = parseState.lines;\n\tvar id = getId(lines[i]);\n\n\tvar roomData = createRoomData(id);\n\n\ti++;\n\n\t// create tile map\n\tif (world.flags.ROOM_FORMAT === 0) {\n\t\t// old way: no commas, single char tile ids\n\t\tvar end = i + bitsy.MAP_SIZE;\n\t\tvar y = 0;\n\t\tfor (; i < end; i++) {\n\t\t\troomData.tilemap.push([]);\n\t\t\tfor (x = 0; x < bitsy.MAP_SIZE; x++) {\n\t\t\t\troomData.tilemap[y].push(lines[i].charAt(x));\n\t\t\t}\n\t\t\ty++;\n\t\t}\n\t}\n\telse if (world.flags.ROOM_FORMAT === 1) {\n\t\t// new way: comma separated, multiple char tile ids\n\t\tvar end = i + bitsy.MAP_SIZE;\n\t\tvar y = 0;\n\t\tfor (; i < end; i++) {\n\t\t\troomData.tilemap.push([]);\n\t\t\tvar lineSep = lines[i].split(\",\");\n\t\t\tfor (x = 0; x < bitsy.MAP_SIZE; x++) {\n\t\t\t\troomData.tilemap[y].push(lineSep[x]);\n\t\t\t}\n\t\t\ty++;\n\t\t}\n\t}\n\n\twhile (i < lines.length && lines[i].length > 0) { //look for empty line\n\t\t// bitsy.log(getType(lines[i]));\n\t\tif (getType(lines[i]) === \"SPR\") {\n\t\t\t/* NOTE SPRITE START LOCATIONS */\n\t\t\tvar sprId = getId(lines[i]);\n\t\t\tif (sprId.indexOf(\",\") == -1 && lines[i].split(\" \").length >= 3) { //second conditional checks for coords\n\t\t\t\t/* PLACE A SINGLE SPRITE */\n\t\t\t\tvar sprCoord = lines[i].split(\" \")[2].split(\",\");\n\t\t\t\tparseState.spriteStartLocations[sprId] = {\n\t\t\t\t\troom : id,\n\t\t\t\t\tx : parseInt(sprCoord[0]),\n\t\t\t\t\ty : parseInt(sprCoord[1])\n\t\t\t\t};\n\t\t\t}\n\t\t\telse if ( world.flags.ROOM_FORMAT == 0 ) { // TODO: right now this shortcut only works w/ the old comma separate format\n\t\t\t\t/* PLACE MULTIPLE SPRITES*/ \n\t\t\t\t//Does find and replace in the tilemap (may be hacky, but its convenient)\n\t\t\t\tvar sprList = sprId.split(\",\");\n\t\t\t\tfor (row in roomData.tilemap) {\n\t\t\t\t\tfor (s in sprList) {\n\t\t\t\t\t\tvar col = roomData.tilemap[row].indexOf( sprList[s] );\n\t\t\t\t\t\t//if the sprite is in this row, replace it with the \"null tile\" and set its starting position\n\t\t\t\t\t\tif (col != -1) {\n\t\t\t\t\t\t\troomData.tilemap[row][col] = \"0\";\n\t\t\t\t\t\t\tparseState.spriteStartLocations[ sprList[s] ] = {\n\t\t\t\t\t\t\t\troom : id,\n\t\t\t\t\t\t\t\tx : parseInt(col),\n\t\t\t\t\t\t\t\ty : parseInt(row)\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse if (getType(lines[i]) === \"ITM\") {\n\t\t\tvar itmId = getId(lines[i]);\n\t\t\tvar itmCoord = lines[i].split(\" \")[2].split(\",\");\n\t\t\tvar itm = {\n\t\t\t\tid: itmId,\n\t\t\t\tx : parseInt(itmCoord[0]),\n\t\t\t\ty : parseInt(itmCoord[1])\n\t\t\t};\n\t\t\troomData.items.push( itm );\n\t\t}\n\t\telse if (getType(lines[i]) === \"WAL\") {\n\t\t\t/* DEFINE COLLISIONS (WALLS) */\n\t\t\troomData.walls = getId(lines[i]).split(\",\");\n\t\t}\n\t\telse if (getType(lines[i]) === \"EXT\") {\n\t\t\t/* ADD EXIT */\n\t\t\tvar exitArgs = lines[i].split(\" \");\n\t\t\t//arg format: EXT 10,5 M 3,2 [AVA:7 LCK:a,9] [AVA 7 LCK a 9]\n\t\t\tvar exitCoords = exitArgs[1].split(\",\");\n\t\t\tvar destName = exitArgs[2];\n\t\t\tvar destCoords = exitArgs[3].split(\",\");\n\t\t\tvar ext = createExitData(\n\t\t\t\t/* x \t\t\t*/ parseInt(exitCoords[0]),\n\t\t\t\t/* y \t\t\t*/ parseInt(exitCoords[1]),\n\t\t\t\t/* destRoom \t*/ destName,\n\t\t\t\t/* destX \t\t*/ parseInt(destCoords[0]),\n\t\t\t\t/* destY \t\t*/ parseInt(destCoords[1]),\n\t\t\t\t/* transition \t*/ null,\n\t\t\t\t/* dlg \t\t\t*/ null);\n\n\t\t\t// optional arguments\n\t\t\tvar exitArgIndex = 4;\n\t\t\twhile (exitArgIndex < exitArgs.length) {\n\t\t\t\tif (exitArgs[exitArgIndex] == \"FX\") {\n\t\t\t\t\text.transition_effect = exitArgs[exitArgIndex+1];\n\t\t\t\t\texitArgIndex += 2;\n\t\t\t\t}\n\t\t\t\telse if (exitArgs[exitArgIndex] == \"DLG\") {\n\t\t\t\t\text.dlg = exitArgs[exitArgIndex+1];\n\t\t\t\t\texitArgIndex += 2;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\texitArgIndex += 1;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\troomData.exits.push(ext);\n\t\t}\n\t\telse if (getType(lines[i]) === \"END\") {\n\t\t\t/* ADD ENDING */\n\t\t\tvar endId = getId(lines[i]);\n\n\t\t\tvar endCoords = getCoord(lines[i], 2);\n\t\t\tvar end = createEndingData(\n\t\t\t\t/* id */ endId,\n\t\t\t\t/* x */ parseInt(endCoords[0]),\n\t\t\t\t/* y */ parseInt(endCoords[1]));\n\n\t\t\troomData.endings.push(end);\n\t\t}\n\t\telse if (getType(lines[i]) === \"PAL\") {\n\t\t\t/* CHOOSE PALETTE (that's not default) */\n\t\t\troomData.pal = getId(lines[i]);\n\t\t}\n\t\telse if (getType(lines[i]) === \"AVA\") {\n\t\t\t// change avatar appearance per room\n\t\t\troomData.ava = getId(lines[i]);\n\t\t}\n\t\telse if (getType(lines[i]) === \"TUNE\") {\n\t\t\troomData.tune = getId(lines[i]);\n\t\t}\n\t\telse if (getType(lines[i]) === \"NAME\") {\n\t\t\troomData.name = getNameArg(lines[i]);\n\t\t}\n\n\t\ti++;\n\t}\n\n\tworld.room[id] = roomData;\n\n\treturn i;\n}\n\nfunction parseTile(parseState, world) {\n\tvar i = parseState.index;\n\tvar lines = parseState.lines;\n\n\tvar id = getId(lines[i]);\n\tvar tileData = createDrawingData(\"TIL\", id);\n\n\ti++;\n\n\t// read & store tile image source\n\ti = parseDrawingCore(lines, i, tileData.drw, world);\n\n\t// update animation info\n\ttileData.animation.frameCount = getDrawingFrameCount(world, tileData.drw);\n\ttileData.animation.isAnimated = tileData.animation.frameCount > 1;\n\n\t// read other properties\n\twhile (i < lines.length && lines[i].length > 0) { // look for empty line\n\t\tif (getType(lines[i]) === \"COL\") {\n\t\t\ttileData.col = parseInt(getId(lines[i]));\n\t\t}\n\t\telse if (getType(lines[i]) === \"BGC\") {\n\t\t\tvar bgcId = getId(lines[i]);\n\t\t\tif (bgcId === \"*\") {\n\t\t\t\t// transparent background\n\t\t\t\ttileData.bgc = (-1 * tileColorStartIndex);\n\t\t\t}\n\t\t\telse {\n\t\t\t\ttileData.bgc = parseInt(bgcId);\n\t\t\t}\n\t\t}\n\t\telse if (getType(lines[i]) === \"NAME\") {\n\t\t\t/* NAME */\n\t\t\ttileData.name = getNameArg(lines[i]);\n\t\t}\n\t\telse if (getType(lines[i]) === \"WAL\") {\n\t\t\tvar wallArg = getArg(lines[i], 1);\n\t\t\tif (wallArg === \"true\") {\n\t\t\t\ttileData.isWall = true;\n\t\t\t}\n\t\t\telse if (wallArg === \"false\") {\n\t\t\t\ttileData.isWall = false;\n\t\t\t}\n\t\t}\n\n\t\ti++;\n\t}\n\n\t// store tile data\n\tworld.tile[id] = tileData;\n\n\treturn i;\n}\n\nfunction parseSprite(parseState, world) {\n\tvar i = parseState.index;\n\tvar lines = parseState.lines;\n\n\tvar id = getId(lines[i]);\n\tvar type = (id === \"A\") ? \"AVA\" : \"SPR\";\n\tvar spriteData = createDrawingData(type, id);\n\n\t// bitsy.log(spriteData);\n\n\ti++;\n\n\t// read & store sprite image source\n\ti = parseDrawingCore(lines, i, spriteData.drw, world);\n\n\t// update animation info\n\tspriteData.animation.frameCount = getDrawingFrameCount(world, spriteData.drw);\n\tspriteData.animation.isAnimated = spriteData.animation.frameCount > 1;\n\n\t// read other properties\n\twhile (i < lines.length && lines[i].length > 0) { // look for empty line\n\t\tif (getType(lines[i]) === \"COL\") {\n\t\t\t/* COLOR OFFSET INDEX */\n\t\t\tspriteData.col = parseInt(getId(lines[i]));\n\t\t}\n\t\telse if (getType(lines[i]) === \"BGC\") {\n\t\t\t/* BACKGROUND COLOR */\n\t\t\tvar bgcId = getId(lines[i]);\n\t\t\tif (bgcId === \"*\") {\n\t\t\t\t// transparent background\n\t\t\t\tspriteData.bgc = (-1 * tileColorStartIndex);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tspriteData.bgc = parseInt(bgcId);\n\t\t\t}\n\t\t}\n\t\telse if (getType(lines[i]) === \"POS\") {\n\t\t\t/* STARTING POSITION */\n\t\t\tvar posArgs = lines[i].split(\" \");\n\t\t\tvar roomId = posArgs[1];\n\t\t\tvar coordArgs = posArgs[2].split(\",\");\n\t\t\tparseState.spriteStartLocations[id] = {\n\t\t\t\troom : roomId,\n\t\t\t\tx : parseInt(coordArgs[0]),\n\t\t\t\ty : parseInt(coordArgs[1])\n\t\t\t};\n\t\t}\n\t\telse if(getType(lines[i]) === \"DLG\") {\n\t\t\tspriteData.dlg = getId(lines[i]);\n\t\t}\n\t\telse if (getType(lines[i]) === \"NAME\") {\n\t\t\t/* NAME */\n\t\t\tspriteData.name = getNameArg(lines[i]);\n\t\t}\n\t\telse if (getType(lines[i]) === \"ITM\") {\n\t\t\t/* ITEM STARTING INVENTORY */\n\t\t\tvar itemId = getId(lines[i]);\n\t\t\tvar itemCount = parseFloat(getArg(lines[i], 2));\n\t\t\tspriteData.inventory[itemId] = itemCount;\n\t\t}\n\t\telse if (getType(lines[i]) == \"BLIP\") {\n\t\t\tvar blipId = getId(lines[i]);\n\t\t\tspriteData.blip = blipId;\n\t\t}\n\n\t\ti++;\n\t}\n\n\t// store sprite data\n\tworld.sprite[id] = spriteData;\n\n\treturn i;\n}\n\nfunction parseItem(parseState, world) {\n\tvar i = parseState.index;\n\tvar lines = parseState.lines;\n\n\tvar id = getId(lines[i]);\n\tvar itemData = createDrawingData(\"ITM\", id);\n\n\ti++;\n\n\t// read & store item image source\n\ti = parseDrawingCore(lines, i, itemData.drw, world);\n\n\t// update animation info\n\titemData.animation.frameCount = getDrawingFrameCount(world, itemData.drw);\n\titemData.animation.isAnimated = itemData.animation.frameCount > 1;\n\n\t// read other properties\n\twhile (i < lines.length && lines[i].length > 0) { // look for empty line\n\t\tif (getType(lines[i]) === \"COL\") {\n\t\t\t/* COLOR OFFSET INDEX */\n\t\t\titemData.col = parseInt(getArg(lines[i], 1));\n\t\t}\n\t\telse if (getType(lines[i]) === \"BGC\") {\n\t\t\t/* BACKGROUND COLOR */\n\t\t\tvar bgcId = getId(lines[i]);\n\t\t\tif (bgcId === \"*\") {\n\t\t\t\t// transparent background\n\t\t\t\titemData.bgc = (-1 * tileColorStartIndex);\n\t\t\t}\n\t\t\telse {\n\t\t\t\titemData.bgc = parseInt(bgcId);\n\t\t\t}\n\t\t}\n\t\telse if (getType(lines[i]) === \"DLG\") {\n\t\t\titemData.dlg = getId(lines[i]);\n\t\t}\n\t\telse if (getType(lines[i]) === \"NAME\") {\n\t\t\t/* NAME */\n\t\t\titemData.name = getNameArg(lines[i]);\n\t\t}\n\t\telse if (getType(lines[i]) == \"BLIP\") {\n\t\t\tvar blipId = getId(lines[i]);\n\t\t\titemData.blip = blipId;\n\t\t}\n\n\t\ti++;\n\t}\n\n\t// store item data\n\tworld.item[id] = itemData;\n\n\treturn i;\n}\n\nfunction parseDrawingCore(lines, i, drwId, world) {\n\tvar frameList = []; //init list of frames\n\tframeList.push( [] ); //init first frame\n\tvar frameIndex = 0;\n\tvar y = 0;\n\twhile (y < bitsy.TILE_SIZE) {\n\t\tvar line = lines[i + y];\n\t\tvar row = [];\n\n\t\tfor (x = 0; x < bitsy.TILE_SIZE; x++) {\n\t\t\trow.push(parseInt(line.charAt(x)));\n\t\t}\n\n\t\tframeList[frameIndex].push(row);\n\t\ty++;\n\n\t\tif (y === bitsy.TILE_SIZE) {\n\t\t\ti = i + y;\n\t\t\tif (lines[i] != undefined && lines[i].charAt(0) === \">\") {\n\t\t\t\t// start next frame!\n\t\t\t\tframeList.push([]);\n\t\t\t\tframeIndex++;\n\n\t\t\t\t//start the count over again for the next frame\n\t\t\t\ti++;\n\t\t\t\ty = 0;\n\t\t\t}\n\t\t}\n\t}\n\n\tstoreDrawingData(world, drwId, frameList);\n\n\treturn i;\n}\n\nfunction parseDialog(parseState, world) {\n\tvar i = parseState.index;\n\tvar lines = parseState.lines;\n\n\t// hacky but I need to store this so I can set the name below\n\tvar id = getId(lines[i]);\n\n\ti = parseScript(lines, i, world.dialog);\n\n\tif (i < lines.length && lines[i].length > 0 && getType(lines[i]) === \"NAME\") {\n\t\tworld.dialog[id].name = getNameArg(lines[i]);\n\t\ti++;\n\t}\n\n\treturn i;\n}\n\n// keeping this around to parse old files where endings were separate from dialogs\nfunction parseEnding(parseState, world) {\n\tvar i = parseState.index;\n\tvar lines = parseState.lines;\n\n\treturn parseScript(lines, i, world.end);\n}\n\nfunction parseScript(lines, i, data) {\n\tvar id = getId(lines[i]);\n\ti++;\n\n\tvar results;\n\tif (scriptUtils) {\n\t\tresults = scriptUtils.ReadDialogScript(lines,i);\n\t}\n\telse {\n\t\tresults = { script: lines[i], index: (i + 1)};\n\t}\n\n\tdata[id] = createDialogData(id);\n\tdata[id].src = results.script;\n\n\ti = results.index;\n\n\treturn i;\n}\n\nfunction parseVariable(parseState, world) {\n\tvar i = parseState.index;\n\tvar lines = parseState.lines;\n\tvar id = getId(lines[i]);\n\ti++;\n\tvar value = lines[i];\n\ti++;\n\tworld.variable[id] = value;\n\treturn i;\n}\n\nfunction parseFontName(parseState, world) {\n\tvar i = parseState.index;\n\tvar lines = parseState.lines;\n\tworld.fontName = getArg(lines[i], 1);\n\ti++;\n\treturn i;\n}\n\nfunction parseTextDirection(parseState, world) {\n\tvar i = parseState.index;\n\tvar lines = parseState.lines;\n\tworld.textDirection = getArg(lines[i], 1);\n\ti++;\n\treturn i;\n}\n\nfunction parseFontData(parseState, world) {\n\tvar i = parseState.index;\n\tvar lines = parseState.lines;\n\n\t// NOTE : we're not doing the actual parsing here --\n\t// just grabbing the block of text that represents the font\n\t// and giving it to the font manager to use later\n\n\tvar localFontName = getId(lines[i]);\n\tvar localFontData = lines[i];\n\ti++;\n\n\twhile (i < lines.length && lines[i] != \"\") {\n\t\tlocalFontData += \"\\n\" + lines[i];\n\t\ti++;\n\t}\n\n\tvar localFontFilename = localFontName + fontManager.GetExtension();\n\tfontManager.AddResource( localFontFilename, localFontData );\n\n\treturn i;\n}\n\nfunction parseTune(parseState, world) {\n\tvar i = parseState.index;\n\tvar lines = parseState.lines;\n\n\tvar id = getId(lines[i]);\n\ti++;\n\n\tvar tuneData = createTuneData(id);\n\n\tvar barIndex = 0;\n\twhile (barIndex < maxTuneLength) {\n\t\t// MELODY\n\t\tvar melodyBar = createTuneBarData();\n\t\tvar melodyNotes = lines[i].split(\",\");\n\t\tfor (var j = 0; j < barLength; j++) {\n\t\t\t// default to a rest\n\t\t\tvar pitch = { beats: 0, note: Note.C, octave: Octave[4], };\n\n\t\t\tif (j < melodyNotes.length) {\n\t\t\t\tvar pitchSplit = melodyNotes[j].split(\"~\");\n\t\t\t\tvar pitchStr = pitchSplit[0];\n\t\t\t\tpitch = parsePitch(melodyNotes[j]);\n\n\t\t\t\t// look for effect added to the note\n\t\t\t\tif (pitchSplit.length > 1) {\n\t\t\t\t\tvar blipId = pitchSplit[1];\n\t\t\t\t\tpitch.blip = blipId;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tmelodyBar[j] = pitch;\n\t\t}\n\t\ttuneData.melody.push(melodyBar);\n\t\ti++;\n\n\t\t// HARMONY\n\t\tvar harmonyBar = createTuneBarData();\n\t\tvar harmonyNotes = lines[i].split(\",\");\n\t\tfor (var j = 0; j < barLength; j++) {\n\t\t\t// default to a rest\n\t\t\tvar pitch = { beats: 0, note: Note.C, octave: Octave[4], };\n\n\t\t\tif (j < harmonyNotes.length) {\n\t\t\t\tvar pitchSplit = harmonyNotes[j].split(\"~\");\n\t\t\t\tvar pitchStr = pitchSplit[0];\n\t\t\t\tpitch = parsePitch(harmonyNotes[j]);\n\n\t\t\t\t// look for effect added to the note\n\t\t\t\tif (pitchSplit.length > 1) {\n\t\t\t\t\tvar blipId = pitchSplit[1];\n\t\t\t\t\tpitch.blip = blipId;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tharmonyBar[j] = pitch;\n\t\t}\n\t\ttuneData.harmony.push(harmonyBar);\n\t\ti++;\n\n\t\t// check if there's another bar after this one\n\t\tif (lines[i] === \">\") {\n\t\t\t// there is! increment the index\n\t\t\tbarIndex++;\n\t\t\ti++;\n\t\t}\n\t\telse {\n\t\t\t// we've reached the end of the tune!\n\t\t\tbarIndex = maxTuneLength;\n\t\t}\n\t}\n\n\t// parse other tune properties\n\twhile (i < lines.length && lines[i].length > 0) { // look for empty line\n\t\tif (getType(lines[i]) === \"KEY\") {\n\t\t\ttuneData.key = createTuneKeyData();\n\n\t\t\tvar keyNotes = getArg(lines[i], 1);\n\t\t\tif (keyNotes) {\n\t\t\t\tkeyNotes = keyNotes.split(\",\");\n\t\t\t\tfor (var j = 0; j < keyNotes.length && j < tuneData.key.notes.length; j++) {\n\t\t\t\t\tvar pitch = parsePitch(keyNotes[j]);\n\t\t\t\t\ttuneData.key.notes[j] = pitch.note;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar keyScale = getArg(lines[i], 2);\n\t\t\tif (keyScale) {\n\t\t\t\tkeyScale = keyScale.split(\",\");\n\t\t\t\tfor (var j = 0; j < keyScale.length; j++) {\n\t\t\t\t\tvar pitch = parsePitch(keyScale[j]);\n\t\t\t\t\tif (pitch.note > Solfa.NONE && pitch.note < Solfa.COUNT) {\n\t\t\t\t\t\ttuneData.key.scale.push(pitch.note);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse if (getType(lines[i]) === \"TMP\") {\n\t\t\tvar tempoId = getId(lines[i]);\n\t\t\tif (Tempo[tempoId] != undefined) {\n\t\t\t\ttuneData.tempo = Tempo[tempoId];\n\t\t\t}\n\t\t}\n\t\telse if (getType(lines[i]) === \"SQR\") {\n\t\t\t// square wave instrument settings\n\t\t\tvar squareWaveIdA = getArg(lines[i], 1);\n\t\t\tif (SquareWave[squareWaveIdA] != undefined) {\n\t\t\t\ttuneData.instrumentA = SquareWave[squareWaveIdA];\n\t\t\t}\n\n\t\t\tvar squareWaveIdB = getArg(lines[i], 2);\n\t\t\tif (SquareWave[squareWaveIdB] != undefined) {\n\t\t\t\ttuneData.instrumentB = SquareWave[squareWaveIdB];\n\t\t\t}\n\t\t}\n\t\telse if (getType(lines[i]) === \"ARP\") {\n\t\t\tvar arp = getId(lines[i]);\n\t\t\tif (ArpeggioPattern[arp] != undefined) {\n\t\t\t\ttuneData.arpeggioPattern = ArpeggioPattern[arp];\n\t\t\t}\n\t\t}\n\t\telse if (getType(lines[i]) === \"NAME\") {\n\t\t\tvar name = lines[i].split(/\\s(.+)/)[1];\n\t\t\ttuneData.name = name;\n\t\t\t// todo : add to map?\n\t\t}\n\n\t\ti++;\n\t}\n\n\tworld.tune[id] = tuneData;\n\n\treturn i;\n}\n\nfunction parseBlip(parseState, world) {\n\tvar i = parseState.index;\n\tvar lines = parseState.lines;\n\n\tvar id = getId(lines[i]);\n\ti++;\n\n\tvar blipData = createBlipData(id);\n\n\t// blip pitches\n\tvar notes = lines[i].split(\",\");\n\tif (notes.length >= 1) {\n\t\tblipData.pitchA = parsePitch(notes[0]);\n\t}\n\tif (notes.length >= 2) {\n\t\tblipData.pitchB = parsePitch(notes[1]);\n\t}\n\tif (notes.length >= 3) {\n\t\tblipData.pitchC = parsePitch(notes[2]);\n\t}\n\ti++;\n\n\t// blip parameters\n\twhile (i < lines.length && lines[i].length > 0) { // look for empty line\n\t\tif (getType(lines[i]) === \"ENV\") {\n\t\t\t// envelope\n\t\t\tblipData.envelope.attack = parseInt(getArg(lines[i], 1));\n\t\t\tblipData.envelope.decay = parseInt(getArg(lines[i], 2));\n\t\t\tblipData.envelope.sustain = parseInt(getArg(lines[i], 3));\n\t\t\tblipData.envelope.length = parseInt(getArg(lines[i], 4));\n\t\t\tblipData.envelope.release = parseInt(getArg(lines[i], 5));\n\t\t}\n\t\telse if (getType(lines[i]) === \"BEAT\") {\n\t\t\t// pitch beat length\n\t\t\tblipData.beat.time = parseInt(getArg(lines[i], 1));\n\t\t\tblipData.beat.delay = parseInt(getArg(lines[i], 2));\n\t\t}\n\t\telse if (getType(lines[i]) === \"SQR\") {\n\t\t\t// square wave\n\t\t\tvar squareWaveId = getArg(lines[i], 1);\n\t\t\tif (SquareWave[squareWaveId] != undefined) {\n\t\t\t\tblipData.instrument = SquareWave[squareWaveId];\n\t\t\t}\n\t\t}\n\t\t// TODO : consider for future update\n\t\t// else if (getType(lines[i]) === \"SLD\") {\n\t\t// \t// slide mode\n\t\t// \tif (parseInt(getArg(lines[i], 1)) === 1) {\n\t\t// \t\tblipData.doSlide = true;\n\t\t// \t}\n\t\t// }\n\t\telse if (getType(lines[i]) === \"RPT\") {\n\t\t\t// repeat mode\n\t\t\tif (parseInt(getArg(lines[i], 1)) === 1) {\n\t\t\t\tblipData.doRepeat = true;\n\t\t\t}\n\t\t}\n\t\telse if (getType(lines[i]) === \"NAME\") {\n\t\t\tvar name = lines[i].split(/\\s(.+)/)[1];\n\t\t\tblipData.name = name;\n\t\t}\n\n\t\ti++;\n\t}\n\n\tworld.blip[id] = blipData;\n\n\treturn i;\n}\n\nfunction parsePitch(pitchStr) {\n\tvar pitch = { beats: 1, note: Note.C, octave: Octave[4], };\n\tvar i;\n\n\t// beats\n\tvar beatsToken = \"\";\n\tfor (i = 0; i < pitchStr.length && (\"0123456789\".indexOf(pitchStr[i]) != -1); i++) {\n\t\tbeatsToken += pitchStr[i];\n\t}\n\tif (beatsToken.length > 0) {\n\t\tpitch.beats = parseInt(beatsToken);\n\t}\n\n\t// note\n\tvar noteType;\n\tvar noteName = \"\";\n\tif (i < pitchStr.length) {\n\t\tif (pitchStr[i] === pitchStr[i].toUpperCase()) {\n\t\t\t// uppercase letters represent chromatic notes\n\t\t\tnoteType = Note;\n\t\t\tnoteName += pitchStr[i];\n\t\t\ti++;\n\n\t\t\t// check for sharp\n\t\t\tif (i < pitchStr.length && pitchStr[i] === \"#\") {\n\t\t\t\tnoteName += \"_SHARP\";\n\t\t\t\ti++;\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\t// lowercase letters represent solfa notes\n\t\t\tnoteType = Solfa;\n\t\t\tnoteName += pitchStr[i].toUpperCase();\n\t\t\ti++;\n\t\t}\n\t}\n\n\tif (noteType != undefined && noteType[noteName] != undefined) {\n\t\tpitch.note = noteType[noteName];\n\t}\n\n\t// octave\n\tvar octaveToken = \"\";\n\tif (i < pitchStr.length) {\n\t\toctaveToken += pitchStr[i];\n\t}\n\n\tif (Octave[octaveToken] != undefined) {\n\t\tpitch.octave = Octave[octaveToken];\n\t}\n\n\treturn pitch;\n}\n\nfunction parseFlag(parseState, world) {\n\tvar i = parseState.index;\n\tvar lines = parseState.lines;\n\tvar id = getId(lines[i]);\n\tvar valStr = lines[i].split(\" \")[2];\n\tworld.flags[id] = parseInt( valStr );\n\ti++;\n\treturn i;\n}\n\nfunction getDrawingFrameCount(world, drwId) {\n\treturn world.drawings[drwId].length;\n}\n\nfunction storeDrawingData(world, drwId, drawingData) {\n\tworld.drawings[drwId] = drawingData;\n}\n\nfunction placeSprites(parseState, world) {\n\tfor (id in parseState.spriteStartLocations) {\n\t\tworld.sprite[id].room = parseState.spriteStartLocations[id].room;\n\t\tworld.sprite[id].x = parseState.spriteStartLocations[id].x;\n\t\tworld.sprite[id].y = parseState.spriteStartLocations[id].y;\n\t}\n}\n\nfunction createNameMapsForWorld(world) {\n\tvar nameMaps = {};\n\n\tfunction createNameMap(objectStore) {\n\t\tvar map = {};\n\n\t\tfor (id in objectStore) {\n\t\t\tif (objectStore[id].name != undefined && objectStore[id].name != null) {\n\t\t\t\tmap[objectStore[id].name] = id;\n\t\t\t}\n\t\t}\n\n\t\treturn map;\n\t}\n\n\tnameMaps.room = createNameMap(world.room);\n\tnameMaps.tile = createNameMap(world.tile);\n\tnameMaps.sprite = createNameMap(world.sprite);\n\tnameMaps.item = createNameMap(world.item);\n\tnameMaps.dialog = createNameMap(world.dialog);\n\tnameMaps.palette = createNameMap(world.palette);\n\tnameMaps.tune = createNameMap(world.tune);\n\tnameMaps.blip = createNameMap(world.blip);\n\n\treturn nameMaps;\n}\n\nfunction getType(line) {\n\treturn getArg(line,0);\n}\n\nfunction getId(line) {\n\treturn getArg(line,1);\n}\n\nfunction getCoord(line,arg) {\n\treturn getArg(line,arg).split(\",\");\n}\n\nfunction getArg(line,arg) {\n\treturn line.split(\" \")[arg];\n}\n\nfunction getNameArg(line) {\n\tvar name = line.split(/\\s(.+)/)[1];\n\treturn name;\n}", "sound.js": "/* PITCH HELPER FUNCTIONS */\nfunction pitchToSteps(pitch) {\n\treturn (pitch.octave * Note.COUNT) + pitch.note;\n}\n\nfunction stepsToPitch(steps) {\n\tvar pitch = { beats: 1, note: Note.C, octave: Octave[2], };\n\n\twhile (steps >= Note.COUNT) {\n\t\tpitch.octave = (pitch.octave + 1) % Octave.COUNT;\n\t\tsteps -= Note.COUNT;\n\t}\n\n\tpitch.note += steps;\n\n\t// make sure pitch isn't outside a valid range\n\tif (pitch.note <= Note.NONE) {\n\t\tpitch.note = Note.C;\n\t}\n\telse if (pitch.note >= Note.COUNT) {\n\t\tpitch.note = Note.B;\n\t}\n\n\tif (pitch.octave <= Octave.NONE) {\n\t\tpitch.octave = Octave[2];\n\t}\n\telse if (pitch.octave >= Octave.COUNT) {\n\t\tpitch.octave = Octave[5];\n\t}\n\n\treturn pitch;\n}\n\nfunction adjustPitch(pitch, stepDelta) {\n\treturn stepsToPitch(pitchToSteps(pitch) + stepDelta);\n}\n\nfunction pitchDistance(pitchA, pitchB) {\n\treturn pitchToSteps(pitchB) - pitchToSteps(pitchA);\n}\n\nfunction isMinPitch(pitch) {\n\treturn pitchToSteps(pitch) <= pitchToSteps({ note: Note.C, octave: Octave[2] });\n}\n\nfunction isMaxPitch(pitch) {\n\treturn pitchToSteps(pitch) >= pitchToSteps({ note: Note.B, octave: Octave[5] });\n}\n\nfunction SoundPlayer() {\n\t// frequencies (in hertz) for octave 0 (or is it octave 4?)\n\tvar frequencies = [\n\t\t261.7, // middle C\n\t\t277.2,\n\t\t293.7,\n\t\t311.2,\n\t\t329.7,\n\t\t349.3,\n\t\t370.0,\n\t\t392.0,\n\t\t415.3,\n\t\t440.0,\n\t\t466.2,\n\t\t493.9,\n\t];\n\n\t// tempos are calculated as the duration of a 16th note, rounded to the nearest millisecond\n\tvar tempos = {};\n\ttempos[Tempo.SLW] = 250; // 60bpm (adagio)\n\ttempos[Tempo.MED] = 188; // ~80bpm (andante) [exact would be 187.5 ms]\n\ttempos[Tempo.FST] = 125; // 120bpm (moderato)\n\ttempos[Tempo.XFST] = 94; // ~160bpm (allegro) [exact would be 93.75 ms]\n\n\t// arpeggio patterns expressed in scale degrees\n\tvar arpeggioPattern = {};\n\tarpeggioPattern[ArpeggioPattern.UP] = [0, 2, 4, 7];\n\tarpeggioPattern[ArpeggioPattern.DWN] = [7, 4, 2, 0];\n\tarpeggioPattern[ArpeggioPattern.INT5] = [0, 4];\n\tarpeggioPattern[ArpeggioPattern.INT8] = [0, 7];\n\n\tthis.getArpeggioSteps = function(tune) { return arpeggioPattern[tune.arpeggioPattern]; };\n\n\tfunction isPitchPlayable(pitch, key) {\n\t\tif (pitch.beats <= 0) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (key === undefined || key === null) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// test if note is in the scale\n\t\treturn (key.scale.indexOf(pitch.note) > -1)\n\t\t\t&& (key.notes[pitch.note] > Note.NONE)\n\t\t\t&& (key.notes[pitch.note] < Note.COUNT);\n\t}\n\n\tfunction pitchToChromatic(pitch, key) {\n\t\tif (pitch === undefined || pitch === null) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif (key === undefined || key === null) {\n\t\t\treturn pitch;\n\t\t}\n\n\t\t// convert from solfa\n\t\tvar octaveOffset = (pitch.note >= Solfa.COUNT) ? 1 : 0;\n\n\t\treturn {\n\t\t\tbeats: pitch.beats,\n\t\t\toctave: pitch.octave + octaveOffset,\n\t\t\t// todo : what about the scale limits?\n\t\t\tnote: key.notes[(pitch.note % Solfa.COUNT)],\n\t\t\tblip: pitch.blip\n\t\t};\n\t}\n\n\tfunction makePitchFrequency(pitch) {\n\t\t// todo : this clamp shouldn't be required.. there's a bug in the pitch shifting somewhere\n\t\tvar note = Math.max(0, pitch.note);\n\t\tvar octave = (pitch.octave != undefined ? pitch.octave : Octave[4]);\n\n\t\tvar octaveMin = Octave[2];\n\t\tvar octaveMax = Octave[5];\n\n\t\t// make sure octave is in valid range\n\t\toctave = Math.max(octaveMin, Math.min(octave, octaveMax));\n\t\tvar distFromMiddleC = octave - 2;\n\n\t\tvar freq = frequencies[note] * Math.pow(2, distFromMiddleC);\n\n\t\tif (isNaN(freq)) {\n\t\t\tbitsy.log(\"invalid frequency \" + pitch, \"sound\");\n\t\t}\n\n\t\treturn freq;\n\t}\n\n\tvar maxVolume = 15; // todo : should this be a system constant?\n\tvar noteVolume = 5;\n\n\tvar curTune = null;\n\tvar isTunePaused = false;\n\tvar barIndex = -1;\n\tvar curArpeggio = [];\n\n\tvar beat16 = 0;\n\tvar beat16Timer = 0;\n\tvar beat16Index = 0;\n\n\t// special settings\n\tvar isLooping = false;\n\tvar isMelodyMuted = false;\n\tvar maxBeatCount = null;\n\tvar muteTimer = 0; // allow temporary muting of all notes\n\n\tfunction arpeggiateBar(bar, key, pattern) {\n\t\tvar arpeggio = [];\n\n\t\tif (key != undefined && key != null && isPitchPlayable(bar[0], key)) {\n\t\t\tfor (var i = 0; i < arpeggioPattern[pattern].length; i++) {\n\t\t\t\tvar pitch = { beats: 1, note: bar[0].note + arpeggioPattern[pattern][i], octave: bar[0].octave };\n\t\t\t\tarpeggio.push(pitchToChromatic(pitch, key));\n\t\t\t}\n\t\t}\n\n\t\tfor (var i = 0; i < arpeggio.length; i++) {\n\t\t\tbitsy.log(i + \": \" + serializeNote(arpeggio[i].note));\n\t\t}\n\n\t\treturn arpeggio;\n\t};\n\n\tfunction playNote(pitch, instrument, options) {\n\t\tif (pitch.beats <= 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar channel = bitsy.SOUND1;\n\t\tif (options != undefined && options.channel != undefined) {\n\t\t\tchannel = options.channel;\n\t\t}\n\n\t\tvar key = null;\n\t\tif (options != undefined && options.key != undefined) {\n\t\t\tkey = options.key;\n\t\t}\n\n\t\tvar beatLen = beat16;\n\t\tif (options != undefined && options.beatLen != undefined) {\n\t\t\tbeatLen = options.beatLen;\n\t\t}\n\n\t\tif (isPitchPlayable(pitch, key)) {\n\t\t\tvar freq = makePitchFrequency(pitchToChromatic(pitch, key));\n\t\t\tbitsy.sound(channel, (pitch.beats * beatLen), freq * 100, noteVolume, instrument);\n\t\t}\n\t}\n\n\tfunction sfxFrequencyAtTime(sfx, time) {\n\t\tvar beatDelay = sfx.blip.beat.delay;\n\t\tvar beatTime = sfx.blip.beat.time;\n\t\tvar delta = Math.max(0, time - beatDelay) / beatTime;\n\n\t\tvar pitchDelta = sfx.blip.doRepeat\n\t\t\t? (delta % sfx.frequencies.length)\n\t\t\t: Math.min(delta, sfx.frequencies.length - 1);\n\n\t\tsfx.pitchIndex = Math.floor(pitchDelta);\n\t\tvar curFreq = sfx.frequencies[sfx.pitchIndex];\n\n\t\t// TODO : consider for future update\n\t\t// if (sfx.blip.doSlide) {\n\t\t// \tvar nextPitchIndex = (sfx.pitchIndex + 1) % sfx.frequencies.length;\n\t\t// \tvar nextFreq = sfx.frequencies[nextPitchIndex];\n\t\t// \tvar d = pitchDelta - sfx.pitchIndex;\n\t\t// \tcurFreq = curFreq + ((nextFreq - curFreq) * d);\n\t\t// }\n\n\t\treturn curFreq;\n\t}\n\n\tfunction sfxVolumeAtTime(sfx, time) {\n\t\tvar volume = 0;\n\n\t\t// use envelope settings to calculate volume\n\t\tvar attack = sfx.blip.envelope.attack;\n\t\tvar decay = sfx.blip.envelope.decay;\n\t\tvar length = sfx.blip.envelope.length;\n\t\tvar release = sfx.blip.envelope.release;\n\t\tif (time < attack) {\n\t\t\t// attack\n\t\t\tvar t = time / attack;\n\t\t\tvolume = Math.floor(sfxPeakVolume * t);\n\t\t}\n\t\telse if (time < attack + decay) {\n\t\t\t// decay\n\t\t\tvar t = (time - attack) / decay;\n\t\t\tvar d = sfx.blip.envelope.sustain - sfxPeakVolume;\n\t\t\tvolume = Math.floor(sfxPeakVolume + (d * t));\n\t\t}\n\t\telse if (time < attack + decay + length) {\n\t\t\t// sustain\n\t\t\tvolume = sfx.blip.envelope.sustain;\n\t\t}\n\t\telse if (time < attack + decay + length + release) {\n\t\t\t// release\n\t\t\tvar t = (time - (attack + decay + length)) / release;\n\t\t\tvolume = Math.floor(sfx.blip.envelope.sustain * (1 - t));\n\t\t}\n\t\telse {\n\t\t\tvolume = 0;\n\t\t}\n\n\t\treturn volume;\n\t}\n\n\tfunction updateSfx(dt) {\n\t\t// try limiting the max change per frame\n\t\tdt = Math.min(dt, 32);\n\t\tvar isAnyBlipPlaying = false;\n\n\t\tif (activeSfx != null) {\n\t\t\tisAnyBlipPlaying = true;\n\t\t\tvar sfx = activeSfx;\n\n\t\t\tsfx.timer += dt;\n\t\t\tif (sfx.timer >= sfx.duration) {\n\t\t\t\tsfx.timer = sfx.duration;\n\t\t\t}\n\n\t\t\tif (sfx.frequencies.length > 0) {\n\t\t\t\t// update pitch\n\t\t\t\tvar prevPitchIndex = sfx.pitchIndex;\n\t\t\t\tvar freq = sfxFrequencyAtTime(sfx, sfx.timer);\n\t\t\t\tif (prevPitchIndex != sfx.pitchIndex) {\n\t\t\t\t\t// pitch changed!\n\t\t\t\t\tbitsy.frequency(bitsy.SOUND1, freq * 100);\n\t\t\t\t}\n\n\t\t\t\t// update volume envelope\n\t\t\t\tbitsy.volume(bitsy.SOUND1, sfxVolumeAtTime(sfx, sfx.timer));\n\t\t\t}\n\n\t\t\tif (sfx.timer >= sfx.duration) {\n\t\t\t\t// turn off sound\n\t\t\t\tbitsy.volume(bitsy.SOUND1, 0);\n\t\t\t\tactiveSfx = null;\n\t\t\t}\n\t\t}\n\n\t\tif (isMusicPausedForBlip && !isAnyBlipPlaying) {\n\t\t\tisMusicPausedForBlip = false;\n\t\t}\n\t}\n\n\tfunction updateTune(dt) {\n\t\tif (curTune === undefined || curTune === null) {\n\t\t\treturn;\n\t\t}\n\n\t\tbeat16Timer += dt;\n\n\t\tif (muteTimer > 0) {\n\t\t\tmuteTimer -= dt;\n\t\t}\n\n\t\tif (beat16Timer >= beat16) {\n\t\t\tbeat16Timer = 0;\n\t\t\tbeat16Index++;\n\n\t\t\tif (beat16Index >= 16) {\n\t\t\t\tbeat16Index = 0;\n\n\t\t\t\tif (!isLooping) {\n\t\t\t\t\tbarIndex = (barIndex + 1) % curTune.melody.length;\n\n\t\t\t\t\tif (curTune.arpeggioPattern != ArpeggioPattern.OFF && curTune.key != null) {\n\t\t\t\t\t\tcurArpeggio = arpeggiateBar(curTune.harmony[barIndex], curTune.key, curTune.arpeggioPattern);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (muteTimer <= 0) {\n\t\t\t\tif (!isMelodyMuted) {\n\t\t\t\t\t// melody note\n\t\t\t\t\tvar pitchA = curTune.melody[barIndex][beat16Index];\n\t\t\t\t\tif (pitchA.beats > 0) {\n\t\t\t\t\t\t// since they're played on the same channel, any melody note will cancel a blip\n\t\t\t\t\t\tactiveSfx = null;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (pitchA.blip != undefined && pitchA.beats > 0) {\n\t\t\t\t\t\tplayBlip(blip[pitchA.blip], { interruptMusic: false, pitch: pitchA, key: curTune.key });\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tplayNote(pitchA, curTune.instrumentA, { channel: bitsy.SOUND1, key: curTune.key });\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (curTune.arpeggioPattern === ArpeggioPattern.OFF) {\n\t\t\t\t\t// harmony note\n\t\t\t\t\tvar pitchB = curTune.harmony[barIndex][beat16Index];\n\t\t\t\t\tif (pitchB.blip != undefined && pitchB.beats > 0) {\n\t\t\t\t\t\tplayBlip(blip[pitchB.blip], { interruptMusic: false, pitch: pitchB, key: curTune.key });\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tplayNote(pitchB, curTune.instrumentB, { channel: bitsy.SOUND2, key: curTune.key });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tvar arpPitch = curArpeggio[beat16Index % curArpeggio.length];\n\t\t\t\t\tif (arpPitch != undefined && arpPitch.beats > 0) {\n\t\t\t\t\t\tplayNote(arpPitch, curTune.instrumentB, { channel: bitsy.SOUND2, beatLen: beat16 });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (maxBeatCount != null && beat16Index >= (maxBeatCount - 1)) {\n\t\t\t\t// stop playback early\n\t\t\t\tcurTune = null;\n\t\t\t}\n\t\t}\n\t}\n\n\tthis.update = function(dt) {\n\t\tupdateSfx(dt);\n\t\tif (!isTunePaused && !isMusicPausedForBlip) {\n\t\t\tupdateTune(dt);\n\t\t}\n\t};\n\n\tthis.playTune = function(tune, options) {\n\t\tcurTune = tune;\n\t\tbeat16Timer = 0;\n\t\tbeat16Index = -1;\n\t\tbarIndex = 0;\n\n\t\tisLooping = false;\n\t\tisMelodyMuted = false;\n\t\tmaxBeatCount = null;\n\n\t\t// special options for the editor\n\t\tif (options != undefined) {\n\t\t\tif (options.barIndex != undefined) {\n\t\t\t\tbarIndex = options.barIndex;\n\t\t\t}\n\n\t\t\tif (options.loop != undefined) {\n\t\t\t\tisLooping = options.loop;\n\t\t\t}\n\n\t\t\tif (options.melody != undefined) {\n\t\t\t\tisMelodyMuted = !options.melody;\n\t\t\t}\n\n\t\t\tif (options.beatCount != undefined) {\n\t\t\t\tmaxBeatCount = options.beatCount;\n\t\t\t}\n\t\t}\n\n\t\t// update tempo\n\t\tbeat16 = tempos[curTune.tempo];\n\n\t\tif (curTune.arpeggioPattern != ArpeggioPattern.OFF && curTune.key != null) {\n\t\t\tcurArpeggio = arpeggiateBar(curTune.harmony[barIndex], curTune.key, curTune.arpeggioPattern);\n\t\t}\n\t};\n\n\tthis.isTunePlaying = function() {\n\t\treturn curTune != null;\n\t};\n\n\tthis.getCurTuneId = function() {\n\t\tif (curTune) {\n\t\t\treturn curTune.id;\n\t\t}\n\n\t\treturn null;\n\t};\n\n\tthis.stopTune = function() {\n\t\tcurTune = null;\n\t};\n\n\tthis.pauseTune = function() {\n\t\tisTunePaused = true;\n\t};\n\n\tthis.resumeTune = function() {\n\t\tisTunePaused = false;\n\t};\n\n\tthis.getBeat = function() {\n\t\tif (curTune == null) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn {\n\t\t\tbar : barIndex,\n\t\t\tbeat : beat16Index,\n\t\t};\n\t};\n\n\tthis.getBlipState = function() {\n\t\treturn activeSfx;\n\t};\n\n\tthis.playNote = function(pitch, instrument, channel, key) {\n\t\tbeat16 = tempos[Tempo.SLW];\n\t\tmuteTimer = beat16;\n\t\tplayNote(pitch, instrument, { channel: channel, key: key });\n\t};\n\n\tthis.setTempo = function(tempo) {\n\t\tbeat16 = tempos[tempo];\n\t};\n\n\tthis.setLooping = function(looping) {\n\t\tisLooping = looping;\n\t};\n\n\t/* SOUND EFFECTS */\n\tvar sfxPeakVolume = 10; // todo : is this a good value?\n\tvar activeSfx = null;\n\tvar isMusicPausedForBlip = false;\n\n\tfunction createSfxState(blip, pitch, isPitchRandomized) {\n\t\t// bitsy.log(\"init sfx blip: \" + blip.id);\n\n\t\tvar sfxState = {\n\t\t\tblip : blip,\n\t\t\tpitchIndex : -1,\n\t\t\tfrequencies : [],\n\t\t\ttimer : 0,\n\t\t\tduration : 0,\n\t\t};\n\n\t\t// is it weird to track this both in the system *AND* the engine?\n\t\tsfxState.duration = (blip.envelope.attack + blip.envelope.decay + blip.envelope.length + blip.envelope.release);\n\n\t\t// adjust starting pitch\n\t\tvar step = 0;\n\t\tif (pitch != null) {\n\t\t\tstep = pitchDistance(blip.pitchA, pitch);\n\t\t}\n\t\telse if (isPitchRandomized > 0) {\n\t\t\tstep = Math.floor(Math.random() * 6);\n\t\t}\n\n\t\tif (blip.pitchA.beats > 0) {\n\t\t\tsfxState.frequencies.push(makePitchFrequency(adjustPitch(blip.pitchA, step)));\n\t\t}\n\t\tif (blip.pitchB.beats > 0) {\n\t\t\tsfxState.frequencies.push(makePitchFrequency(adjustPitch(blip.pitchB, step)));\n\t\t}\n\t\tif (blip.pitchC.beats > 0) {\n\t\t\tsfxState.frequencies.push(makePitchFrequency(adjustPitch(blip.pitchC, step)));\n\t\t}\n\n\t\treturn sfxState;\n\t}\n\n\tfunction playBlip(blip, options) {\n\t\t// default to pausing music while the blip plays (except when playing a blip as *part* of music)\n\t\tisMusicPausedForBlip = (options === undefined || options.interruptMusic === undefined) ? true : options.interruptMusic;\n\n\t\t// always play blips on channel 1\n\t\tvar channel = bitsy.SOUND1;\n\n\t\t// other options\n\t\tvar pitch = (options === undefined || options.pitch === undefined) ? null : options.pitch;\n\t\tvar isPitchRandomized = (options === undefined || options.isPitchRandomized === undefined) ? false : options.isPitchRandomized;\n\t\tvar key = (options != undefined && options.key != undefined) ? options.key : null;\n\n\t\tactiveSfx = createSfxState(blip, pitchToChromatic(pitch, key), isPitchRandomized);\n\t\tbitsy.log(\"play blip: \" + activeSfx.frequencies);\n\n\t\tbitsy.sound(\n\t\t\tchannel,\n\t\t\tactiveSfx.duration * 10, // HACK : mult by 10 is to avoid accidentally turning off early\n\t\t\tactiveSfx.frequencies.length > 0 ? (activeSfx.frequencies[0] * 100) : 0,\n\t\t\t0, // volume\n\t\t\tactiveSfx.blip.instrument);\n\t};\n\n\tthis.playBlip = playBlip;\n\n\tthis.isBlipPlaying = function() {\n\t\treturn isMusicPausedForBlip; // todo : rename this variable?\n\t};\n\n\t// todo : should any of this stuff be moved into the tool code?\n\tthis.sampleBlip = function(blip, sampleCount) {\n\t\tvar sfx = createSfxState(blip, null, false);\n\n\t\tvar minFreq = makePitchFrequency({ note: Note.C, octave: Octave[2] });\n\t\tvar maxFreq = makePitchFrequency({ note: Note.B, octave: Octave[5] });\n\n\t\t// sample the frequency of the sound\n\t\tvar frequencySamples = [];\n\t\tfor (var i = 0; i < sampleCount; i++) {\n\t\t\tif (sfx.frequencies.length > 0) {\n\t\t\t\tvar t = Math.floor((i / sampleCount) * sfx.duration);\n\t\t\t\t// get frequency at time\n\t\t\t\tvar freq = sfxFrequencyAtTime(sfx, t);\n\t\t\t\t// normalize the sample\n\t\t\t\tfreq = freq / (maxFreq - minFreq);\n\n\t\t\t\tfrequencySamples.push(freq);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tfrequencySamples.push(0);\n\t\t\t}\n\t\t}\n\n\t\t// sample the volume envelope\n\t\tvar amplitudeSamples = [];\n\t\tfor (var i = 0; i < sampleCount; i++) {\n\t\t\tvar t = Math.floor((i / sampleCount) * sfx.duration);\n\t\t\tamplitudeSamples.push(sfxVolumeAtTime(sfx, t) / maxVolume);\n\t\t}\n\n\t\treturn {\n\t\t\tfrequencies: frequencySamples,\n\t\t\tamplitudes: amplitudeSamples\n\t\t};\n\t};\n}", "font.js": "/*\nTODO:\n- can I simplify this more now that I've removed the external resources stuff?\n*/\n\nfunction FontManager(packagedFontNames) {\n\nvar self = this;\n\nvar fontExtension = \".bitsyfont\";\nthis.GetExtension = function() {\n\treturn fontExtension;\n}\n\n// place to store font data\nvar fontResources = {};\n\n// load fonts from the editor\nif (packagedFontNames != undefined && packagedFontNames != null && packagedFontNames.length > 0\n\t\t&& Resources != undefined && Resources != null) {\n\n\tfor (var i = 0; i < packagedFontNames.length; i++) {\n\t\tvar filename = packagedFontNames[i];\n\t\tfontResources[filename] = Resources[filename];\n\t}\n}\n\n// manually add resource\nthis.AddResource = function(filename, fontdata) {\n\tfontResources[filename] = fontdata;\n}\n\nthis.ContainsResource = function(filename) {\n\treturn fontResources[filename] != null;\n}\n\nfunction GetData(fontName) {\n\treturn fontResources[fontName + fontExtension];\n}\nthis.GetData = GetData;\n\nfunction Create(fontData) {\n\treturn new Font(fontData);\n}\nthis.Create = Create;\n\nthis.Get = function(fontName) {\n\tvar fontData = self.GetData(fontName);\n\treturn self.Create(fontData);\n}\n\nfunction Font(fontData) {\n\tbitsy.log(\"create font\");\n\n\tvar name = \"unknown\";\n\tvar width = 6; // default size so if you have NO font or an invalid font it displays boxes\n\tvar height = 8;\n\tvar chardata = {};\n\n\t// create invalid char data at default size in case the font is missing\n\tvar invalidCharData = {};\n\tupdateInvalidCharData();\n\n\tthis.getName = function() {\n\t\treturn name;\n\t}\n\n\tthis.getData = function() {\n\t\treturn chardata;\n\t}\n\n\tthis.getWidth = function() {\n\t\treturn width;\n\t}\n\n\tthis.getHeight = function() {\n\t\treturn height;\n\t}\n\n\tthis.hasChar = function(char) {\n\t\tvar codepoint = char.charCodeAt(0);\n\t\treturn chardata[codepoint] != null;\n\t}\n\n\tthis.getChar = function(char) {\n\n\t\tvar codepoint = char.charCodeAt(0);\n\n\t\tif (chardata[codepoint] != null) {\n\t\t\treturn chardata[codepoint];\n\t\t}\n\t\telse {\n\t\t\treturn invalidCharData;\n\t\t}\n\t}\n\n\tthis.allCharCodes = function() {\n\t\tvar codeList = [];\n\t\tfor (var code in chardata) {\n\t\t\tcodeList.push(code);\n\t\t}\n\t\treturn codeList;\n\t}\n\n\tfunction createCharData() {\n\t\treturn { \n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t\toffset: {\n\t\t\t\tx: 0,\n\t\t\t\ty: 0\n\t\t\t},\n\t\t\tspacing: width,\n\t\t\tdata: [],\n\t\t};\n\t}\n\n\tfunction updateInvalidCharData() {\n\t\tinvalidCharData = createCharData();\n\t\tfor (var y = 0; y < height; y++) {\n\t\t\tfor (var x = 0; x < width; x++) {\n\t\t\t\tif (x < width-1 && y < height-1) {\n\t\t\t\t\tinvalidCharData.data.push(1);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tinvalidCharData.data.push(0);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction parseFont(fontData) {\n\t\tif (fontData == null) {\n\t\t\treturn;\n\t\t}\n\n\t\tbitsy.log(\"split font lines\");\n\t\t// NOTE: this is where we run out of memory - split creates a lot of memory issues\n\t\t// var lines = fontData.split(\"\\n\");\n\t\tbitsy.log(\"after split lines\");\n\n\t\tvar isReadingChar = false;\n\t\tvar isReadingCharProperties = false;\n\t\tvar curCharLineCount = 0;\n\t\tvar curCharCode = 0;\n\n\t\tvar lineStart = 0;\n\t\tvar lineEnd = fontData.indexOf(\"\\n\", lineStart) != -1\n\t\t\t? fontData.indexOf(\"\\n\", lineStart)\n\t\t\t: fontData.length;\n\n\t\t// for (var i = 0; i < lines.length; i++) {\n\t\t// \tvar line = lines[i];\n\t\twhile (lineStart < fontData.length) {\n\t\t\tvar line = fontData.substring(lineStart, lineEnd);\n\t\t\t// bitsy.log(\"parse font xx \" + line);\n\n\t\t\tif (line[0] === \"#\") {\n\t\t\t\t// skip comment lines\n\t\t\t}\n\t\t\telse if (!isReadingChar) {\n\t\t\t\t// READING NON CHARACTER DATA LINE\n\t\t\t\tvar args = line.split(\" \");\n\t\t\t\tif (args[0] == \"FONT\") {\n\t\t\t\t\tname = args[1];\n\t\t\t\t}\n\t\t\t\telse if (args[0] == \"SIZE\") {\n\t\t\t\t\twidth = parseInt(args[1]);\n\t\t\t\t\theight = parseInt(args[2]);\n\t\t\t\t}\n\t\t\t\telse if (args[0] == \"CHAR\") {\n\t\t\t\t\tisReadingChar = true;\n\t\t\t\t\tisReadingCharProperties = true;\n\n\t\t\t\t\tcurCharLineCount = 0;\n\t\t\t\t\tcurCharCode = parseInt(args[1]);\n\t\t\t\t\tchardata[curCharCode] = createCharData();\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// CHAR PROPERTIES\n\t\t\t\tif (isReadingCharProperties) {\n\t\t\t\t\tvar args = line.split(\" \");\n\t\t\t\t\tif (args[0].indexOf(\"CHAR_\") == 0) { // Sub-properties start with \"CHAR_\"\n\t\t\t\t\t\tif (args[0] == \"CHAR_SIZE\") {\n\t\t\t\t\t\t\t// Custom character size - overrides the default character size for the font\n\t\t\t\t\t\t\tchardata[curCharCode].width = parseInt(args[1]);\n\t\t\t\t\t\t\tchardata[curCharCode].height = parseInt(args[2]);\n\t\t\t\t\t\t\tchardata[curCharCode].spacing = parseInt(args[1]); // HACK : assumes CHAR_SIZE is always declared first\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (args[0] == \"CHAR_OFFSET\") {\n\t\t\t\t\t\t\t// Character offset - shift the origin of the character on the X or Y axis\n\t\t\t\t\t\t\tchardata[curCharCode].offset.x = parseInt(args[1]);\n\t\t\t\t\t\t\tchardata[curCharCode].offset.y = parseInt(args[2]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (args[0] == \"CHAR_SPACING\") {\n\t\t\t\t\t\t\t// Character spacing:\n\t\t\t\t\t\t\t// specify total horizontal space taken up by the character\n\t\t\t\t\t\t\t// lets chars take up more or less space on a line than its bitmap does\n\t\t\t\t\t\t\tchardata[curCharCode].spacing = parseInt(args[1]);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tisReadingCharProperties = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// CHAR DATA\n\t\t\t\tif (!isReadingCharProperties) {\n\t\t\t\t\t// READING CHARACTER DATA LINE\n\t\t\t\t\tfor (var j = 0; j < chardata[curCharCode].width; j++)\n\t\t\t\t\t{\n\t\t\t\t\t\tchardata[curCharCode].data.push( parseInt(line[j]) );\n\t\t\t\t\t}\n\n\t\t\t\t\tcurCharLineCount++;\n\t\t\t\t\tif (curCharLineCount >= chardata[curCharCode].height) {\n\t\t\t\t\t\tisReadingChar = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlineStart = lineEnd + 1;\n\t\t\tlineEnd = fontData.indexOf(\"\\n\", lineStart) != -1\n\t\t\t\t? fontData.indexOf(\"\\n\", lineStart)\n\t\t\t\t: fontData.length;\n\t\t}\n\n\t\t// re-init invalid character box at the actual font size once it's loaded\n\t\tupdateInvalidCharData();\n\t}\n\n\tbitsy.log(\"parse font\");\n\tparseFont(fontData);\n\n\tbitsy.log(\"create font\");\n}\n\n} // FontManager\n", "transition.js": "var TransitionManager = function() {\n\tvar transitionStart = null;\n\tvar transitionEnd = null;\n\n\tvar isTransitioning = false;\n\tvar transitionTime = 0; // milliseconds\n\tvar minStepTime = 125; // cap the frame rate\n\tvar curStep = 0;\n\n\tthis.BeginTransition = function(startRoom, startX, startY, endRoom, endX, endY, effectName) {\n\t\tbitsy.log(\"--- START ROOM TRANSITION ---\");\n\n\t\tcurEffect = effectName;\n\n\t\tvar tmpRoom = player().room;\n\t\tvar tmpX = player().x;\n\t\tvar tmpY = player().y;\n\n\t\tif (transitionEffects[curEffect].showPlayerStart) {\n\t\t\tplayer().room = startRoom;\n\t\t\tplayer().x = startX;\n\t\t\tplayer().y = startY;\n\t\t}\n\t\telse {\n\t\t\tplayer().room = \"_transition_none\"; // kind of hacky!!\n\t\t}\n\n\t\tvar startRoomPixels = createRoomPixelBuffer(room[startRoom]);\n\t\tvar startPalette = getPal(room[startRoom].pal);\n\t\tvar startImage = new PostProcessImage(startRoomPixels);\n\t\ttransitionStart = new TransitionInfo(startImage, startPalette, startX, startY);\n\n\t\tif (transitionEffects[curEffect].showPlayerEnd) {\n\t\t\tplayer().room = endRoom;\n\t\t\tplayer().x = endX;\n\t\t\tplayer().y = endY;\n\t\t}\n\t\telse {\n\t\t\tplayer().room = \"_transition_none\";\n\t\t}\n\n\t\tvar endRoomPixels = createRoomPixelBuffer(room[endRoom]);\n\t\tvar endPalette = getPal(room[endRoom].pal);\n\t\tvar endImage = new PostProcessImage(endRoomPixels);\n\t\ttransitionEnd = new TransitionInfo(endImage, endPalette, endX, endY);\n\n\t\tisTransitioning = true;\n\t\ttransitionTime = 0;\n\t\tcurStep = 0;\n\n\t\tplayer().room = endRoom;\n\t\tplayer().x = endX;\n\t\tplayer().y = endY;\n\n\t\tbitsy.graphicsMode(bitsy.GFX_VIDEO);\n\t}\n\n\tthis.UpdateTransition = function(dt) {\n\t\tif (!isTransitioning) {\n\t\t\treturn;\n\t\t}\n\n\t\ttransitionTime += dt;\n\n\t\tvar maxStep = transitionEffects[curEffect].stepCount;\n\n\t\tif (transitionTime >= minStepTime) {\n\t\t\tcurStep++;\n\n\t\t\tvar step = curStep;\n\t\t\tbitsy.log(\"transition step \" + step);\n\n\t\t\tif (transitionEffects[curEffect].paletteEffectFunc) {\n\t\t\t\tvar colors = transitionEffects[curEffect].paletteEffectFunc(transitionStart, transitionEnd, (step / maxStep));\n\t\t\t\tupdatePaletteWithTileColors(colors);\n\t\t\t}\n\n\t\t\tbitsy.fill(bitsy.VIDEO, tileColorStartIndex);\n\n\t\t\tfor (var y = 0; y < bitsy.VIDEO_SIZE; y++) {\n\t\t\t\tfor (var x = 0; x < bitsy.VIDEO_SIZE; x++) {\n\t\t\t\t\tvar color = transitionEffects[curEffect].pixelEffectFunc(transitionStart, transitionEnd, x, y, (step / maxStep));\n\t\t\t\t\tbitsy.set(bitsy.VIDEO, (y * bitsy.VIDEO_SIZE) + x, color);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ttransitionTime = 0;\n\t\t}\n\n\t\tif (curStep >= (maxStep - 1)) {\n\t\t\tisTransitioning = false;\n\t\t\ttransitionTime = 0;\n\t\t\ttransitionStart = null;\n\t\t\ttransitionEnd = null;\n\t\t\tcurStep = 0;\n\n\t\t\tif (transitionCompleteCallback != null) {\n\t\t\t\ttransitionCompleteCallback();\n\t\t\t}\n\t\t\ttransitionCompleteCallback = null;\n\n\t\t\tbitsy.graphicsMode(bitsy.GFX_MAP);\n\t\t}\n\t}\n\n\tthis.IsTransitionActive = function() {\n\t\treturn isTransitioning;\n\t}\n\n\t// todo : should this be part of the constructor?\n\tvar transitionCompleteCallback = null;\n\tthis.OnTransitionComplete = function(callback) {\n\t\tif (isTransitioning) { // TODO : safety check necessary?\n\t\t\ttransitionCompleteCallback = callback;\n\t\t}\n\t}\n\n\tvar transitionEffects = {};\n\tvar curEffect = \"none\";\n\tthis.RegisterTransitionEffect = function(name, effect) {\n\t\ttransitionEffects[name] = effect;\n\t}\n\n\tthis.RegisterTransitionEffect(\"none\", {\n\t\tshowPlayerStart : false,\n\t\tshowPlayerEnd : false,\n\t\tpaletteEffectFunc : function() {},\n\t\tpixelEffectFunc : function() {},\n\t});\n\n\tthis.RegisterTransitionEffect(\"fade_w\", { // TODO : have it linger on full white briefly?\n\t\tshowPlayerStart : false,\n\t\tshowPlayerEnd : true,\n\t\tstepCount : 6,\n\t\tpixelEffectFunc : function(start, end, pixelX, pixelY, delta) {\n\t\t\treturn delta < 0.5 ? start.Image.GetPixel(pixelX, pixelY) : end.Image.GetPixel(pixelX, pixelY);\n\t\t},\n\t\tpaletteEffectFunc : function(start, end, delta) {\n\t\t\tvar colors = [];\n\n\t\t\tif (delta < 0.5) {\n\t\t\t\tdelta = delta / 0.5;\n\n\t\t\t\tfor (var i = 0; i < start.Palette.length; i++) {\n\t\t\t\t\tcolors.push(lerpColor(start.Palette[i], [255, 255, 255], delta));\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tdelta = ((delta - 0.5) / 0.5);\n\n\t\t\t\tfor (var i = 0; i < end.Palette.length; i++) {\n\t\t\t\t\tcolors.push(lerpColor([255, 255, 255], end.Palette[i], delta));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn colors;\n\t\t},\n\t});\n\n\tthis.RegisterTransitionEffect(\"fade_b\", {\n\t\tshowPlayerStart : false,\n\t\tshowPlayerEnd : true,\n\t\tstepCount : 6,\n\t\tpixelEffectFunc : function(start, end, pixelX, pixelY, delta) {\n\t\t\treturn delta < 0.5 ? start.Image.GetPixel(pixelX, pixelY) : end.Image.GetPixel(pixelX, pixelY);\n\t\t},\n\t\tpaletteEffectFunc : function(start, end, delta) {\n\t\t\tvar colors = [];\n\n\t\t\tif (delta < 0.5) {\n\t\t\t\tdelta = delta / 0.5;\n\n\t\t\t\tfor (var i = 0; i < start.Palette.length; i++) {\n\t\t\t\t\tcolors.push(lerpColor(start.Palette[i], [0, 0, 0], delta));\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tdelta = ((delta - 0.5) / 0.5);\n\n\t\t\t\tfor (var i = 0; i < end.Palette.length; i++) {\n\t\t\t\t\tcolors.push(lerpColor([0, 0, 0], end.Palette[i], delta));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn colors;\n\t\t},\n\t});\n\n\tthis.RegisterTransitionEffect(\"wave\", {\n\t\tshowPlayerStart : true,\n\t\tshowPlayerEnd : true,\n\t\tstepCount : 12,\n\t\tpixelEffectFunc : function(start, end, pixelX, pixelY, delta) {\n\t\t\tvar waveDelta = delta < 0.5 ? delta / 0.5 : 1 - ((delta - 0.5) / 0.5);\n\n\t\t\tvar offset = (pixelY + (waveDelta * waveDelta * 0.2 * start.Image.Height));\n\t\t\tvar freq = 4;\n\t\t\tvar size = 2 + (14 * waveDelta);\n\t\t\tpixelX += Math.floor(Math.sin(offset / freq) * size);\n\n\t\t\tif (pixelX < 0) {\n\t\t\t\tpixelX += start.Image.Width;\n\t\t\t}\n\t\t\telse if (pixelX >= start.Image.Width) {\n\t\t\t\tpixelX -= start.Image.Width;\n\t\t\t}\n\n\t\t\tvar curImage = delta < 0.5 ? start.Image : end.Image;\n\t\t\treturn curImage.GetPixel(pixelX, pixelY);\n\t\t},\n\t\tpaletteEffectFunc : function(start, end, delta) {\n\t\t\treturn delta < 0.5 ? start.Palette : end.Palette;\n\t\t},\n\t});\n\n\tthis.RegisterTransitionEffect(\"tunnel\", {\n\t\tshowPlayerStart : true,\n\t\tshowPlayerEnd : true,\n\t\tstepCount : 12,\n\t\tpixelEffectFunc : function(start, end, pixelX, pixelY, delta) {\n\t\t\tif (delta <= 0.4) {\n\t\t\t\tvar tunnelDelta = 1 - (delta / 0.4);\n\n\t\t\t\tvar xDist = start.PlayerCenter.x - pixelX;\n\t\t\t\tvar yDist = start.PlayerCenter.y - pixelY;\n\t\t\t\tvar dist = Math.sqrt((xDist * xDist) + (yDist * yDist));\n\n\t\t\t\tif (dist > start.Image.Width * tunnelDelta) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\treturn start.Image.GetPixel(pixelX, pixelY);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (delta <= 0.6) {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tvar tunnelDelta = (delta - 0.6) / 0.4;\n\n\t\t\t\tvar xDist = end.PlayerCenter.x - pixelX;\n\t\t\t\tvar yDist = end.PlayerCenter.y - pixelY;\n\t\t\t\tvar dist = Math.sqrt((xDist * xDist) + (yDist * yDist));\n\n\t\t\t\tif (dist > end.Image.Width * tunnelDelta) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\treturn end.Image.GetPixel(pixelX, pixelY);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tpaletteEffectFunc : function(start, end, delta) {\n\t\t\treturn delta < 0.5 ? start.Palette : end.Palette;\n\t\t},\n\t});\n\n\tfunction lerpPalettes(start, end, delta) {\n\t\tvar colors = [];\n\n\t\tvar maxLength = (start.Palette.length > end.Palette.length) ?\n\t\t\tstart.Palette.length : end.Palette.length;\n\n\t\tfor (var i = 0; i < maxLength; i++) {\n\t\t\tif (i < start.Palette.length && i < end.Palette.length) {\n\t\t\t\tcolors.push(lerpColor(start.Palette[i], end.Palette[i], delta));\n\t\t\t}\n\t\t\telse if (i < start.Palette.length) {\n\t\t\t\tcolors.push(lerpColor(\n\t\t\t\t\tstart.Palette[i],\n\t\t\t\t\tend.Palette[end.Palette.length - 1],\n\t\t\t\t\tdelta));\n\t\t\t}\n\t\t\telse if (i < end.Palette.length) {\n\t\t\t\tcolors.push(lerpColor(\n\t\t\t\t\tstart.Palette[start.Palette.length - 1],\n\t\t\t\t\tend.Palette[i],\n\t\t\t\t\tdelta));\n\t\t\t}\n\t\t}\n\n\t\treturn colors;\n\t}\n\n\tthis.RegisterTransitionEffect(\"slide_u\", {\n\t\tshowPlayerStart : false,\n\t\tshowPlayerEnd : true,\n\t\tstepCount : 8,\n\t\tpixelEffectFunc : function(start, end, pixelX, pixelY, delta) {\n\t\t\tvar pixelOffset = -1 * Math.floor(start.Image.Height * delta);\n\t\t\tvar slidePixelY = pixelY + pixelOffset;\n\n\t\t\tif (slidePixelY >= 0) {\n\t\t\t\treturn start.Image.GetPixel(pixelX, slidePixelY);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tslidePixelY += start.Image.Height;\n\t\t\t\treturn end.Image.GetPixel(pixelX, slidePixelY);\n\t\t\t}\n\t\t},\n\t\tpaletteEffectFunc : lerpPalettes,\n\t});\n\n\tthis.RegisterTransitionEffect(\"slide_d\", {\n\t\tshowPlayerStart : false,\n\t\tshowPlayerEnd : true,\n\t\tstepCount : 8,\n\t\tpixelEffectFunc : function(start, end, pixelX, pixelY, delta) {\n\t\t\tvar pixelOffset = Math.floor(start.Image.Height * delta);\n\t\t\tvar slidePixelY = pixelY + pixelOffset;\n\n\t\t\tif (slidePixelY < start.Image.Height) {\n\t\t\t\treturn start.Image.GetPixel(pixelX, slidePixelY);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tslidePixelY -= start.Image.Height;\n\t\t\t\treturn end.Image.GetPixel(pixelX, slidePixelY);\n\t\t\t}\n\t\t},\n\t\tpaletteEffectFunc : lerpPalettes,\n\t});\n\n\tthis.RegisterTransitionEffect(\"slide_l\", {\n\t\tshowPlayerStart : false,\n\t\tshowPlayerEnd : true,\n\t\tstepCount : 8,\n\t\tpixelEffectFunc : function(start, end, pixelX, pixelY, delta) {\n\t\t\tvar pixelOffset = -1 * Math.floor(start.Image.Width * delta);\n\t\t\tvar slidePixelX = pixelX + pixelOffset;\n\n\t\t\tif (slidePixelX >= 0) {\n\t\t\t\treturn start.Image.GetPixel(slidePixelX, pixelY);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tslidePixelX += start.Image.Width;\n\t\t\t\treturn end.Image.GetPixel(slidePixelX, pixelY);\n\t\t\t}\n\t\t},\n\t\tpaletteEffectFunc : lerpPalettes,\n\t});\n\n\tthis.RegisterTransitionEffect(\"slide_r\", {\n\t\tshowPlayerStart : false,\n\t\tshowPlayerEnd : true,\n\t\tstepCount : 8,\n\t\tpixelEffectFunc : function(start, end, pixelX, pixelY, delta) {\n\t\t\tvar pixelOffset = Math.floor(start.Image.Width * delta);\n\t\t\tvar slidePixelX = pixelX + pixelOffset;\n\n\t\t\tif (slidePixelX < start.Image.Width) {\n\t\t\t\treturn start.Image.GetPixel(slidePixelX, pixelY);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tslidePixelX -= start.Image.Width;\n\t\t\t\treturn end.Image.GetPixel(slidePixelX, pixelY);\n\t\t\t}\n\t\t},\n\t\tpaletteEffectFunc : lerpPalettes,\n\t});\n\n\t// todo : move to Renderer()?\n\tfunction createRoomPixelBuffer(room) {\n\t\tvar pixelBuffer = [];\n\n\t\tfor (var i = 0; i < bitsy.VIDEO_SIZE * bitsy.VIDEO_SIZE; i++) {\n\t\t\tpixelBuffer.push(tileColorStartIndex);\n\t\t}\n\n\t\tvar drawTileInPixelBuffer = function(sourceData, frameIndex, colorIndex, tx, ty, pixelBuffer) {\n\t\t\tvar frameData = sourceData[frameIndex];\n\n\t\t\tfor (var y = 0; y < bitsy.TILE_SIZE; y++) {\n\t\t\t\tfor (var x = 0; x < bitsy.TILE_SIZE; x++) {\n\t\t\t\t\tvar color = tileColorStartIndex + (frameData[y][x] === 1 ? colorIndex : 0);\n\t\t\t\t\tpixelBuffer[(((ty * bitsy.TILE_SIZE) + y) * bitsy.VIDEO_SIZE) + ((tx * bitsy.TILE_SIZE) + x)] = color;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t//draw tiles\n\t\tfor (i in room.tilemap) {\n\t\t\tfor (j in room.tilemap[i]) {\n\t\t\t\tvar id = room.tilemap[i][j];\n\t\t\t\tvar x = parseInt(j);\n\t\t\t\tvar y = parseInt(i);\n\n\t\t\t\tif (id != \"0\" && tile[id] != null) {\n\t\t\t\t\tdrawTileInPixelBuffer(\n\t\t\t\t\t\trenderer.GetDrawingSource(tile[id].drw),\n\t\t\t\t\t\ttile[id].animation.frameIndex,\n\t\t\t\t\t\ttile[id].col,\n\t\t\t\t\t\tx,\n\t\t\t\t\t\ty,\n\t\t\t\t\t\tpixelBuffer);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t//draw items\n\t\tfor (var i = 0; i < room.items.length; i++) {\n\t\t\tvar itm = room.items[i];\n\t\t\tdrawTileInPixelBuffer(\n\t\t\t\trenderer.GetDrawingSource(item[itm.id].drw),\n\t\t\t\titem[itm.id].animation.frameIndex,\n\t\t\t\titem[itm.id].col,\n\t\t\t\titm.x,\n\t\t\t\titm.y,\n\t\t\t\tpixelBuffer);\n\t\t}\n\n\t\t//draw sprites\n\t\tfor (id in sprite) {\n\t\t\tvar spr = sprite[id];\n\t\t\tif (spr.room === room.id) {\n\t\t\t\tdrawTileInPixelBuffer(\n\t\t\t\t\trenderer.GetDrawingSource(spr.drw),\n\t\t\t\t\tspr.animation.frameIndex,\n\t\t\t\t\tspr.col,\n\t\t\t\t\tspr.x,\n\t\t\t\t\tspr.y,\n\t\t\t\t\tpixelBuffer);\n\t\t\t}\n\t\t}\n\n\t\treturn pixelBuffer;\n\t}\n\n\tfunction lerpColor(colorA, colorB, t) {\n\t\treturn [\n\t\t\tcolorA[0] + ((colorB[0] - colorA[0]) * t),\n\t\t\tcolorA[1] + ((colorB[1] - colorA[1]) * t),\n\t\t\tcolorA[2] + ((colorB[2] - colorA[2]) * t),\n\t\t];\n\t};\n}; // TransitionManager()\n\n// todo : is this wrapper still useful?\nvar PostProcessImage = function(imageData) {\n\tthis.Width = bitsy.VIDEO_SIZE;\n\tthis.Height = bitsy.VIDEO_SIZE;\n\n\tthis.GetPixel = function(x, y) {\n\t\treturn imageData[(y * bitsy.VIDEO_SIZE) + x];\n\t};\n\n\tthis.GetData = function() {\n\t\treturn imageData;\n\t};\n};\n\nvar TransitionInfo = function(image, palette, playerX, playerY) {\n\tthis.Image = image;\n\n\tthis.Palette = palette;\n\n\tthis.PlayerTilePos = {\n\t\tx: playerX,\n\t\ty: playerY\n\t};\n\n\tthis.PlayerCenter = {\n\t\tx: Math.floor((playerX * bitsy.TILE_SIZE) + (bitsy.TILE_SIZE / 2)),\n\t\ty: Math.floor((playerY * bitsy.TILE_SIZE) + (bitsy.TILE_SIZE / 2))\n\t};\n};", "script.js": "function Script() {\n\nthis.CreateInterpreter = function() {\n\treturn new Interpreter();\n};\n\nthis.CreateUtils = function() {\n\treturn new Utils();\n};\n\nvar Interpreter = function() {\n\tvar env = new Environment();\n\tvar parser = new Parser( env );\n\n\tthis.SetDialogBuffer = function(buffer) { env.SetDialogBuffer( buffer ); };\n\n\t// TODO -- maybe this should return a string instead othe actual script??\n\tthis.Compile = function(scriptName, scriptStr) {\n\t\tvar script = parser.Parse(scriptStr, scriptName);\n\t\tenv.SetScript(scriptName, script);\n\t}\n\tthis.Run = function(scriptName, exitHandler, objectContext) { // Runs pre-compiled script\n\t\tvar localEnv = new LocalEnvironment(env);\n\n\t\tif (objectContext) {\n\t\t\tlocalEnv.SetObject(objectContext); // PROTO : should this be folded into the constructor?\n\t\t}\n\n\t\tvar script = env.GetScript(scriptName);\n\n\t\tscript.Eval( localEnv, function(result) { OnScriptReturn(localEnv, exitHandler); } );\n\t}\n\tthis.Interpret = function(scriptStr, exitHandler, objectContext) { // Compiles and runs code immediately\n\t\t// bitsy.log(\"INTERPRET\");\n\t\tvar localEnv = new LocalEnvironment(env);\n\n\t\tif (objectContext) {\n\t\t\tlocalEnv.SetObject(objectContext); // PROTO : should this be folded into the constructor?\n\t\t}\n\n\t\tvar script = parser.Parse(scriptStr, \"anonymous\");\n\t\tscript.Eval( localEnv, function(result) { OnScriptReturn(localEnv, exitHandler); } );\n\t}\n\tthis.HasScript = function(name) { return env.HasScript(name); };\n\n\tthis.ResetEnvironment = function() {\n\t\tenv = new Environment();\n\t\tparser = new Parser( env );\n\t}\n\n\tthis.Parse = function(scriptStr, rootId) { // parses a script but doesn't save it\n\t\treturn parser.Parse(scriptStr, rootId);\n\t}\n\n\tthis.Eval = function(scriptTree, exitHandler) { // runs a script stored externally\n\t\tvar localEnv = new LocalEnvironment(env); // TODO : does this need an object context?\n\t\tscriptTree.Eval(\n\t\t\tlocalEnv,\n\t\t\tfunction(result) {\n\t\t\t\tOnScriptReturn(result, exitHandler);\n\t\t\t});\n\t}\n\n\tfunction OnScriptReturn(result, exitHandler) {\n\t\tif (exitHandler != null) {\n\t\t\texitHandler(result);\n\t\t}\n\t}\n\n\tthis.CreateExpression = function(expStr) {\n\t\treturn parser.CreateExpression(expStr);\n\t}\n\n\tthis.SetVariable = function(name,value,useHandler) {\n\t\tenv.SetVariable(name,value,useHandler);\n\t}\n\n\tthis.DeleteVariable = function(name,useHandler) {\n\t\tenv.DeleteVariable(name,useHandler);\n\t}\n\tthis.HasVariable = function(name) {\n\t\treturn env.HasVariable(name);\n\t}\n\n\tthis.SetOnVariableChangeHandler = function(onVariableChange) {\n\t\tenv.SetOnVariableChangeHandler(onVariableChange);\n\t}\n\tthis.GetVariableNames = function() {\n\t\treturn env.GetVariableNames();\n\t}\n\tthis.GetVariable = function(name) {\n\t\treturn env.GetVariable(name);\n\t}\n\n\tfunction DebugVisualizeScriptTree(scriptTree) {\n\t\tvar printVisitor = {\n\t\t\tVisit : function(node,depth) {\n\t\t\t\tbitsy.log(\"-\".repeat(depth) + \"- \" + node.ToString());\n\t\t\t},\n\t\t};\n\n\t\tscriptTree.VisitAll( printVisitor );\n\t}\n\n\tthis.DebugVisualizeScriptTree = DebugVisualizeScriptTree;\n\n\tthis.DebugVisualizeScript = function(scriptName) {\n\t\tDebugVisualizeScriptTree(env.GetScript(scriptName));\n\t}\n}\n\n\nvar Utils = function() {\n\t// for editor ui\n\tthis.CreateDialogBlock = function(children,doIndentFirstLine) {\n\t\tif (doIndentFirstLine === undefined) {\n\t\t\tdoIndentFirstLine = true;\n\t\t}\n\n\t\tvar block = new DialogBlockNode(doIndentFirstLine);\n\n\t\tfor (var i = 0; i < children.length; i++) {\n\t\t\tblock.AddChild(children[i]);\n\t\t}\n\t\treturn block;\n\t}\n\n\tthis.CreateOptionBlock = function() {\n\t\tvar block = new DialogBlockNode(false);\n\t\tblock.AddChild(new FuncNode(\"say\", [new LiteralNode(\" \")]));\n\t\treturn block;\n\t}\n\n\tthis.CreateItemConditionPair = function() {\n\t\tvar itemFunc = this.CreateFunctionBlock(\"item\", [\"0\"]);\n\t\tvar condition = new ExpNode(\"==\", itemFunc, new LiteralNode(1));\n\t\tvar result = new DialogBlockNode(true);\n\t\tresult.AddChild(new FuncNode(\"say\", [new LiteralNode(\" \")]));\n\t\tvar conditionPair = new ConditionPairNode(condition, result);\n\t\treturn conditionPair;\n\t}\n\n\tthis.CreateVariableConditionPair = function() {\n\t\tvar varNode = this.CreateVariableNode(\"a\");\n\t\tvar condition = new ExpNode(\"==\", varNode, new LiteralNode(1));\n\t\tvar result = new DialogBlockNode(true);\n\t\tresult.AddChild(new FuncNode(\"say\", [new LiteralNode(\" \")]));\n\t\tvar conditionPair = new ConditionPairNode(condition, result);\n\t\treturn conditionPair;\n\t}\n\n\tthis.CreateDefaultConditionPair = function() {\n\t\tvar condition = this.CreateElseNode();\n\t\tvar result = new DialogBlockNode(true);\n\t\tresult.AddChild(new FuncNode(\"say\", [new LiteralNode(\" \")]));\n\t\tvar conditionPair = new ConditionPairNode(condition, result);\n\t\treturn conditionPair;\n\t}\n\n\tthis.CreateEmptySayFunc = function() {\n\t\treturn new FuncNode(\"say\", [new LiteralNode(\"...\")]);\n\t}\n\n\tthis.CreateFunctionBlock = function(name, initParamValues) {\n\t\tvar parameters = [];\n\t\tfor (var i = 0; i < initParamValues.length; i++) {\n\t\t\tparameters.push(new LiteralNode(initParamValues[i]));\n\t\t}\n\n\t\tvar node = new FuncNode(name, parameters);\n\t\tvar block = new CodeBlockNode();\n\t\tblock.AddChild(node);\n\t\treturn block;\n\t}\n\n\t// TODO : rename ParseStringToLiteralNode?\n\tthis.CreateLiteralNode = function(str) {\n\t\tif (str === \"true\") {\n\t\t\treturn new LiteralNode(true);\n\t\t}\n\t\telse if (str === \"false\") {\n\t\t\treturn new LiteralNode(false);\n\t\t}\n\t\telse if (!isNaN(parseFloat(str))) {\n\t\t\treturn new LiteralNode(parseFloat(str));\n\t\t}\n\t\telse {\n\t\t\treturn new LiteralNode(str);\n\t\t}\n\t}\n\n\tthis.CreateVariableNode = function(variableName) {\n\t\treturn new VarNode(variableName);\n\t}\n\n\tthis.CreatePropertyNode = function(propertyName, literalValue) {\n\t\tvar varNode = new VarNode(propertyName);\n\t\tvar valNode = new LiteralNode(literalValue);\n\t\tvar node = new FuncNode(\"property\", [varNode, valNode]);\n\t\tvar block = new CodeBlockNode();\n\t\tblock.AddChild(node);\n\t\treturn block;\n\t}\n\n\tthis.CreateElseNode = function() {\n\t\treturn new ElseNode();\n\t}\n\n\tthis.CreateStringLiteralNode = function(str) {\n\t\treturn new LiteralNode(str);\n\t}\n\n\t// TODO : need to split up code & dialog blocks :|\n\tthis.CreateCodeBlock = function() {\n\t\treturn new CodeBlockNode();\n\t}\n\n\tthis.ChangeSequenceType = function(oldSequence, type) {\n\t\tif(type === \"sequence\") {\n\t\t\treturn new SequenceNode(oldSequence.children);\n\t\t}\n\t\telse if(type === \"cycle\") {\n\t\t\treturn new CycleNode(oldSequence.children);\n\t\t}\n\t\telse if(type === \"shuffle\") {\n\t\t\treturn new ShuffleNode(oldSequence.children);\n\t\t}\n\t\treturn oldSequence;\n\t}\n\n\tthis.CreateSequenceBlock = function() {\n\t\tvar option1 = new DialogBlockNode( false /*doIndentFirstLine*/ );\n\t\toption1.AddChild(new FuncNode(\"say\", [new LiteralNode(\"...\")]));\n\n\t\tvar option2 = new DialogBlockNode( false /*doIndentFirstLine*/ );\n\t\toption2.AddChild(new FuncNode(\"say\", [new LiteralNode(\"...\")]));\n\n\t\tvar sequence = new SequenceNode( [ option1, option2 ] );\n\t\tvar block = new CodeBlockNode();\n\t\tblock.AddChild( sequence );\n\t\treturn block;\n\t}\n\n\tthis.CreateCycleBlock = function() {\n\t\tvar option1 = new DialogBlockNode( false /*doIndentFirstLine*/ );\n\t\toption1.AddChild(new FuncNode(\"say\", [new LiteralNode(\"...\")]));\n\n\t\tvar option2 = new DialogBlockNode( false /*doIndentFirstLine*/ );\n\t\toption2.AddChild(new FuncNode(\"say\", [new LiteralNode(\"...\")]));\n\n\t\tvar sequence = new CycleNode( [ option1, option2 ] );\n\t\tvar block = new CodeBlockNode();\n\t\tblock.AddChild( sequence );\n\t\treturn block;\n\t}\n\n\tthis.CreateShuffleBlock = function() {\n\t\tvar option1 = new DialogBlockNode( false /*doIndentFirstLine*/ );\n\t\toption1.AddChild(new FuncNode(\"say\", [new LiteralNode(\"...\")]));\n\n\t\tvar option2 = new DialogBlockNode( false /*doIndentFirstLine*/ );\n\t\toption2.AddChild(new FuncNode(\"say\", [new LiteralNode(\"...\")]));\n\n\t\tvar sequence = new ShuffleNode( [ option1, option2 ] );\n\t\tvar block = new CodeBlockNode();\n\t\tblock.AddChild( sequence );\n\t\treturn block;\n\t}\n\n\tthis.CreateIfBlock = function() {\n\t\tvar leftNode = new CodeBlockNode();\n\t\tleftNode.AddChild( new FuncNode(\"item\", [new LiteralNode(\"0\")] ) );\n\t\tvar rightNode = new LiteralNode( 1 );\n\t\tvar condition1 = new ExpNode(\"==\", leftNode, rightNode );\n\n\t\tvar condition2 = new ElseNode();\n\n\t\tvar result1 = new DialogBlockNode();\n\t\tresult1.AddChild(new FuncNode(\"say\", [new LiteralNode(\"...\")]));\n\n\t\tvar result2 = new DialogBlockNode();\n\t\tresult2.AddChild(new FuncNode(\"say\", [new LiteralNode(\"...\")]));\n\n\t\tvar ifNode = new IfNode( [ condition1, condition2 ], [ result1, result2 ] );\n\t\tvar block = new CodeBlockNode();\n\t\tblock.AddChild( ifNode );\n\t\treturn block;\n\t}\n\n\tthis.ReadDialogScript = function(lines, i) {\n\t\tvar scriptStr = \"\";\n\t\tif (lines[i] === Sym.DialogOpen) {\n\t\t\tscriptStr += lines[i] + \"\\n\";\n\t\t\ti++;\n\t\t\twhile(lines[i] != Sym.DialogClose) {\n\t\t\t\tscriptStr += lines[i] + \"\\n\";\n\t\t\t\ti++;\n\t\t\t}\n\t\t\tscriptStr += lines[i];\n\t\t\ti++;\n\t\t}\n\t\telse {\n\t\t\tscriptStr += lines[i];\n\t\t\ti++;\n\t\t}\n\t\treturn { script:scriptStr, index:i };\n\t}\n\n\t// TODO this.ReadCodeScript (reads through code open and close symbols), and this.ReadScript\n\n\tthis.EnsureDialogBlockFormat = function(dialogStr) {\n\t\t// TODO -- what if it's already enclosed in dialog symbols??\n\t\tif(dialogStr.indexOf('\\n') > -1) {\n\t\t\tdialogStr = Sym.DialogOpen + \"\\n\" + dialogStr + \"\\n\" + Sym.DialogClose;\n\t\t}\n\t\treturn dialogStr;\n\t}\n\n\tthis.RemoveDialogBlockFormat = function(source) {\n\t\tvar sourceLines = source.split(\"\\n\");\n\t\tvar dialogStr = \"\";\n\t\tif(sourceLines[0] === Sym.DialogOpen) {\n\t\t\t// multi line\n\t\t\tvar i = 1;\n\t\t\twhile (i < sourceLines.length && sourceLines[i] != Sym.DialogClose) {\n\t\t\t\tdialogStr += sourceLines[i] + (sourceLines[i+1] != Sym.DialogClose ? '\\n' : '');\n\t\t\t\ti++;\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\t// single line\n\t\t\tdialogStr = source;\n\t\t}\n\t\treturn dialogStr;\n\t}\n\n\tthis.SerializeDialogNodeList = function(nodeList) {\n\t\tvar tempBlock = new DialogBlockNode(false);\n\t\t // set children directly to avoid breaking the parenting chain for this temp operation\n\t\ttempBlock.children = nodeList;\n\t\treturn tempBlock.Serialize();\n\t}\n\n\tthis.GetOperatorList = function() {\n\t\treturn [Sym.Set].concat(Sym.Operators);\n\t}\n\n\tthis.IsInlineCode = function(node) {\n\t\treturn isInlineCode(node);\n\t}\n}\n\n\n/* BUILT-IN FUNCTIONS */ // TODO: better way to encapsulate these?\nfunction deprecatedFunc(environment,parameters,onReturn) {\n\tbitsy.log(\"BITSY SCRIPT WARNING: Tried to use deprecated function\");\n\tonReturn(null);\n}\n\nfunction sayFunc(environment, parameters, onReturn) {\n\tif (parameters[0] != undefined && parameters[0] != null) {\n\t\tvar textStr = \"\" + parameters[0];\n\t\tenvironment.GetDialogBuffer().AddText(textStr);\n\t\tenvironment.GetDialogBuffer().AddScriptReturn(function() { onReturn(null); });\n\t}\n\telse {\n\t\tonReturn(null);\n\t}\n}\n\nfunction linebreakFunc(environment, parameters, onReturn) {\n\t// bitsy.log(\"LINEBREAK FUNC\");\n\tenvironment.GetDialogBuffer().AddLinebreak();\n\tenvironment.GetDialogBuffer().AddScriptReturn(function() { onReturn(null); });\n}\n\nfunction pagebreakFunc(environment, parameters, onReturn) {\n\tenvironment.GetDialogBuffer().AddPagebreak(function() { onReturn(null); });\n}\n\nfunction drawFunc(environment, parameters, onReturn) {\n\tvar drawingId = parameters[0];\n\tenvironment.GetDialogBuffer().AddDrawing(drawingId);\n\tenvironment.GetDialogBuffer().AddScriptReturn(function() { onReturn(null); });\n}\n\nfunction drawSpriteFunc(environment, parameters, onReturn) {\n\tvar spriteId = parameters[0];\n\n\t// check if id parameter is actually a name\n\tif (names.sprite[spriteId] != undefined) {\n\t\tspriteId = names.sprite[spriteId];\n\t}\n\n\tvar drawingId = sprite[spriteId].drw;\n\tdrawFunc(environment, [drawingId], onReturn);\n}\n\nfunction drawTileFunc(environment, parameters, onReturn) {\n\tvar tileId = parameters[0];\n\n\t// check if id parameter is actually a name\n\tif (names.tile[tileId] != undefined) {\n\t\ttileId = names.tile[tileId];\n\t}\n\n\tvar drawingId = tile[tileId].drw;\n\tdrawFunc(environment, [drawingId], onReturn);\n}\n\nfunction drawItemFunc(environment, parameters, onReturn) {\n\tvar itemId = parameters[0];\n\n\t// check if id parameter is actually a name\n\tif (names.item[itemId] != undefined) {\n\t\titemId = names.item[itemId];\n\t}\n\n\tvar drawingId = item[itemId].drw;\n\tdrawFunc(environment, [drawingId], onReturn);\n}\n\nfunction printFontFunc(environment, parameters, onReturn) {\n\tvar allCharacters = \"\";\n\tvar font = fontManager.Get(fontName);\n\tvar codeList = font.allCharCodes();\n\tfor (var i = 0; i < codeList.length; i++) {\n\t\tallCharacters += String.fromCharCode(codeList[i]) + \" \";\n\t}\n\tsayFunc(environment, [allCharacters], onReturn);\n}\n\nfunction itemFunc(environment,parameters,onReturn) {\n\tvar itemId = parameters[0];\n\n\tif (names.item[itemId] != undefined) {\n\t\t// id is actually a name\n\t\titemId = names.item[itemId];\n\t}\n\n\tvar curItemCount = player().inventory[itemId] ? player().inventory[itemId] : 0;\n\n\tif (parameters.length > 1) {\n\t\t// TODO : is it a good idea to force inventory to be >= 0?\n\t\tplayer().inventory[itemId] = Math.max(0, parseInt(parameters[1]));\n\t\tcurItemCount = player().inventory[itemId];\n\n\t\tif (onInventoryChanged != null) {\n\t\t\tonInventoryChanged(itemId);\n\t\t}\n\t}\n\n\tonReturn(curItemCount);\n}\n\nfunction toggleTextEffect(environment, name) {\n\tif (environment.GetDialogBuffer().hasTextEffect(name)) {\n\t\tenvironment.GetDialogBuffer().popTextEffect(name);\n\t}\n\telse {\n\t\tenvironment.GetDialogBuffer().pushTextEffect(name, []);\n\t}\n}\n\nfunction color1Func(environment, parameters, onReturn) {\n\ttoggleTextEffect(environment, \"clr1\");\n\tonReturn(null);\n}\n\nfunction color2Func(environment, parameters, onReturn) {\n\ttoggleTextEffect(environment, \"clr2\");\n\tonReturn(null);\n}\n\nfunction color3Func(environment, parameters, onReturn) {\n\ttoggleTextEffect(environment, \"clr3\");\n\tonReturn(null);\n}\n\nfunction colorFunc(environment, parameters, onReturn) {\n\tenvironment.GetDialogBuffer().pushTextEffect(\"clr\", parameters);\n\tonReturn(null);\n}\n\nfunction colorPopFunc(environment, parameters, onReturn) {\n\tif (environment.GetDialogBuffer().hasTextEffect(\"clr\")) {\n\t\tenvironment.GetDialogBuffer().popTextEffect(\"clr\");\n\t}\n\tonReturn(null);\n}\n\nfunction rainbowFunc(environment, parameters, onReturn) {\n\ttoggleTextEffect(environment, \"rbw\");\n\tonReturn(null);\n}\n\nfunction rainbowPopFunc(environment, parameters, onReturn) {\n\tif (environment.GetDialogBuffer().hasTextEffect(\"rbw\")) {\n\t\tenvironment.GetDialogBuffer().popTextEffect(\"rbw\");\n\t}\n\tonReturn(null);\n}\n\nfunction wavyFunc(environment, parameters, onReturn) {\n\ttoggleTextEffect(environment, \"wvy\");\n\tonReturn(null);\n}\n\nfunction wavyPopFunc(environment, parameters, onReturn) {\n\tif (environment.GetDialogBuffer().hasTextEffect(\"wvy\")) {\n\t\tenvironment.GetDialogBuffer().popTextEffect(\"wvy\");\n\t}\n\tonReturn(null);\n}\n\nfunction shakyFunc(environment, parameters, onReturn) {\n\ttoggleTextEffect(environment, \"shk\");\n\tonReturn(null);\n}\n\nfunction shakyPopFunc(environment, parameters, onReturn) {\n\tif (environment.GetDialogBuffer().hasTextEffect(\"shk\")) {\n\t\tenvironment.GetDialogBuffer().popTextEffect(\"shk\");\n\t}\n\tonReturn(null);\n}\n\nfunction propertyFunc(environment, parameters, onReturn) {\n\tvar outValue = null;\n\n\tif (parameters.length > 0 && parameters[0]) {\n\t\tvar propertyName = parameters[0];\n\n\t\tif (environment.HasProperty(propertyName)) {\n\t\t\t// TODO : in a future update I can handle the case of initializing a new property\n\t\t\t// after which we can move this block outside the HasProperty check\n\t\t\tif (parameters.length > 1) {\n\t\t\t\tvar inValue = parameters[1];\n\t\t\t\tenvironment.SetProperty(propertyName, inValue);\n\t\t\t}\n\n\t\t\toutValue = environment.GetProperty(propertyName);\n\t\t}\n\t}\n\n\tbitsy.log(\"PROPERTY! \" + propertyName + \" \" + outValue);\n\n\tonReturn(outValue);\n}\n\nfunction endFunc(environment,parameters,onReturn) {\n\tisEnding = true;\n\tisNarrating = true;\n\tdialogRenderer.SetCentered(true);\n\tdialogRenderer.DrawTextbox();\n\tonReturn(null);\n}\n\nfunction exitFunc(environment, parameters, onReturn) {\n\tvar destRoom;\n\tvar destX;\n\tvar destY;\n\n\tif (parameters.length >= 1) {\n\t\tdestRoom = parameters[0];\n\n\t\t// is it a name?\n\t\tif (names.room[destRoom] != undefined) {\n\t\t\tdestRoom = names.room[destRoom];\n\t\t}\n\t}\n\n\tif (parameters.length >= 3) {\n\t\tdestX = parseInt(parameters[1]);\n\t\tdestY = parseInt(parameters[2]);\n\t}\n\n\tif (parameters.length >= 4) {\n\t\tvar transitionEffect = parameters[3];\n\n\t\ttransition.BeginTransition(\n\t\t\tplayer().room,\n\t\t\tplayer().x,\n\t\t\tplayer().y,\n\t\t\tdestRoom,\n\t\t\tdestX,\n\t\t\tdestY,\n\t\t\ttransitionEffect);\n\t\ttransition.UpdateTransition(0);\n\t}\n\n\tvar movePlayerAndResumeScript = function() {\n\t\tif (destRoom != undefined && destX != undefined && destY != undefined) {\n\t\t\t// update world state\n\t\t\tplayer().room = destRoom;\n\t\t\tplayer().x = destX;\n\t\t\tplayer().y = destY;\n\t\t\tstate.room = destRoom;\n\n\t\t\t// update game state\n\t\t\tinitRoom(state.room);\n\t\t}\n\n\t\tif (dialogRenderer) {\n\t\t\tdialogRenderer.updateTextboxPosition();\n\t\t}\n\n\t\t// resume dialog script\n\t\tonReturn(state.room);\n\t};\n\n\t// TODO : this doesn't play nice with pagebreak because it thinks the dialog is finished!\n\tif (transition.IsTransitionActive()) {\n\t\ttransition.OnTransitionComplete(movePlayerAndResumeScript);\n\t}\n\telse {\n\t\tmovePlayerAndResumeScript();\n\t}\n}\n\nfunction tuneFunc(environment, parameters, onReturn) {\n\tif (parameters.length > 0) {\n\t\tvar tuneId = parameters[0];\n\n\t\t// check if id parameter is actually a name\n\t\tif (names.tune[tuneId] != undefined) {\n\t\t\ttuneId = names.tune[tuneId];\n\t\t}\n\n\t\tif (soundPlayer) {\n\t\t\tif (tuneId === \"0\") {\n\t\t\t\tsoundPlayer.stopTune();\n\t\t\t}\n\t\t\telse if (state.tune != tuneId) {\n\t\t\t\tsoundPlayer.playTune(tune[tuneId]);\n\t\t\t}\n\t\t}\n\n\t\tstate.tune = tuneId;\n\t}\n\n\tonReturn(state.tune);\n}\n\nfunction blipFunc(environment, parameters, onReturn) {\n\tif (parameters.length > 0) {\n\t\tvar blipId = parameters[0];\n\n\t\t// check if id parameter is actually a name\n\t\tif (names.blip[blipId] != undefined) {\n\t\t\tblipId = names.blip[blipId];\n\t\t}\n\n\t\tsoundPlayer.playBlip(blip[blipId]);\n\t}\n\n\t// if a dialog skip is happening, stop it and force a redraw of the textbox\n\tif (dialogBuffer) {\n\t\tif (dialogBuffer.tryInterruptSkip()) {\n\t\t\tdialogRenderer.Draw(dialogBuffer, 0, true /* disableOnPrint */);\n\t\t}\n\t}\n\n\tonReturn(null);\n}\n\n/*\n// TODO : use later?\nfunction yakFunc(environment, parameters, onReturn) {\n\tif (parameters.length > 0) {\n\t\tvar blipId = parameters[0];\n\n\t\t// check if id parameter is actually a name\n\t\tif (names.blip[blipId] != undefined) {\n\t\t\tblipId = names.blip[blipId];\n\t\t}\n\n\t\tenvironment.GetDialogBuffer().pushTextEffect(\"yak\", [blipId]);\n\t}\n\n\tonReturn(null);\n}\n\nfunction yakPopFunc(environment, parameters, onReturn) {\n\tif (environment.GetDialogBuffer().hasTextEffect(\"yak\")) {\n\t\tenvironment.GetDialogBuffer().popTextEffect(\"yak\");\n\t}\n\n\tonReturn(null);\n}\n*/\n\nfunction paletteFunc(environment, parameters, onReturn) {\n\tif (parameters.length > 0) {\n\t\tvar palId = parameters[0];\n\n\t\t// check if id parameter is actually a name\n\t\tif (names.palette[palId] != undefined) {\n\t\t\tpalId = names.palette[palId];\n\t\t}\n\n\t\tupdatePalette(palId);\n\t}\n\n\tonReturn(state.pal);\n}\n\nfunction avatarFunc(environment, parameters, onReturn) {\n\tif (parameters.length > 0) {\n\t\tvar sprId = parameters[0];\n\n\t\t// check if id parameter is actually a name\n\t\tif (names.sprite[sprId] != undefined) {\n\t\t\tsprId = names.sprite[sprId];\n\t\t}\n\n\t\t// override the avatar's current appearance\n\t\tstate.ava = sprId;\n\n\t\t// redraw the avatar with its new appearance\n\t\tdrawRoom(room[state.room], { redrawAvatar: true });\n\t}\n\n\tonReturn(state.ava);\n}\n\n/* BUILT-IN OPERATORS */\nfunction setExp(environment,left,right,onReturn) {\n\t// bitsy.log(\"SET \" + left.name);\n\n\tif(left.type != \"variable\") {\n\t\t// not a variable! return null and hope for the best D:\n\t\tonReturn( null );\n\t\treturn;\n\t}\n\n\tright.Eval(environment,function(rVal) {\n\t\tenvironment.SetVariable( left.name, rVal );\n\t\t// bitsy.log(\"VAL \" + environment.GetVariable( left.name ) );\n\t\tleft.Eval(environment,function(lVal) {\n\t\t\tonReturn( lVal );\n\t\t});\n\t});\n}\nfunction equalExp(environment,left,right,onReturn) {\n\t// bitsy.log(\"EVAL EQUAL\");\n\t// bitsy.log(left);\n\t// bitsy.log(right);\n\tright.Eval(environment,function(rVal){\n\t\tleft.Eval(environment,function(lVal){\n\t\t\tonReturn( lVal === rVal );\n\t\t});\n\t});\n}\nfunction greaterExp(environment,left,right,onReturn) {\n\tright.Eval(environment,function(rVal){\n\t\tleft.Eval(environment,function(lVal){\n\t\t\tonReturn( lVal > rVal );\n\t\t});\n\t});\n}\nfunction lessExp(environment,left,right,onReturn) {\n\tright.Eval(environment,function(rVal){\n\t\tleft.Eval(environment,function(lVal){\n\t\t\tonReturn( lVal < rVal );\n\t\t});\n\t});\n}\nfunction greaterEqExp(environment,left,right,onReturn) {\n\tright.Eval(environment,function(rVal){\n\t\tleft.Eval(environment,function(lVal){\n\t\t\tonReturn( lVal >= rVal );\n\t\t});\n\t});\n}\nfunction lessEqExp(environment,left,right,onReturn) {\n\tright.Eval(environment,function(rVal){\n\t\tleft.Eval(environment,function(lVal){\n\t\t\tonReturn( lVal <= rVal );\n\t\t});\n\t});\n}\nfunction multExp(environment,left,right,onReturn) {\n\tright.Eval(environment,function(rVal){\n\t\tleft.Eval(environment,function(lVal){\n\t\t\tonReturn( lVal * rVal );\n\t\t});\n\t});\n}\nfunction divExp(environment,left,right,onReturn) {\n\tright.Eval(environment,function(rVal){\n\t\tleft.Eval(environment,function(lVal){\n\t\t\tonReturn( lVal / rVal );\n\t\t});\n\t});\n}\nfunction addExp(environment,left,right,onReturn) {\n\tright.Eval(environment,function(rVal){\n\t\tleft.Eval(environment,function(lVal){\n\t\t\tonReturn( lVal + rVal );\n\t\t});\n\t});\n}\nfunction subExp(environment,left,right,onReturn) {\n\tright.Eval(environment,function(rVal){\n\t\tleft.Eval(environment,function(lVal){\n\t\t\tonReturn( lVal - rVal );\n\t\t});\n\t});\n}\n\n/* ENVIRONMENT */\nvar Environment = function() {\n\tvar dialogBuffer = null;\n\tthis.SetDialogBuffer = function(buffer) { dialogBuffer = buffer; };\n\tthis.GetDialogBuffer = function() { return dialogBuffer; };\n\n\tvar functionMap = {};\n\n\t// dialog\n\tfunctionMap[\"say\"] = sayFunc;\n\tfunctionMap[\"br\"] = linebreakFunc;\n\tfunctionMap[\"pg\"] = pagebreakFunc;\n\n\t// text effects\n\tfunctionMap[\"wvy\"] = wavyFunc;\n\tfunctionMap[\"/wvy\"] = wavyPopFunc;\n\tfunctionMap[\"shk\"] = shakyFunc;\n\tfunctionMap[\"/shk\"] = shakyPopFunc;\n\tfunctionMap[\"rbw\"] = rainbowFunc;\n\tfunctionMap[\"/rbw\"] = rainbowPopFunc;\n\tfunctionMap[\"clr\"] = colorFunc;\n\tfunctionMap[\"/clr\"] = colorPopFunc;\n\t// drawing text effects\n\tfunctionMap[\"drwt\"] = drawTileFunc;\n\tfunctionMap[\"drws\"] = drawSpriteFunc;\n\tfunctionMap[\"drwi\"] = drawItemFunc;\n\n\t// room\n\tfunctionMap[\"end\"] = endFunc;\n\tfunctionMap[\"exit\"] = exitFunc;\n\tfunctionMap[\"pal\"] = paletteFunc;\n\tfunctionMap[\"ava\"] = avatarFunc;\n\n\t// inventory & variables\n\tfunctionMap[\"item\"] = itemFunc;\n\tfunctionMap[\"property\"] = propertyFunc;\n\n\t// sound\n\tfunctionMap[\"tune\"] = tuneFunc;\n\tfunctionMap[\"blip\"] = blipFunc;\n\n\t// legacy\n\tfunctionMap[\"clr1\"] = color1Func;\n\tfunctionMap[\"clr2\"] = color2Func;\n\tfunctionMap[\"clr3\"] = color3Func;\n\tfunctionMap[\"print\"] = sayFunc;\n\tfunctionMap[\"printTile\"] = drawTileFunc;\n\tfunctionMap[\"printSprite\"] = drawSpriteFunc;\n\tfunctionMap[\"printItem\"] = drawItemFunc;\n\n\t// DEBUG\n\tfunctionMap[\"_debugOnlyPrintFont\"] = printFontFunc;\n\n\t// EXPERIMENTAL\n\t// functionMap[\"yak\"] = yakFunc;\n\t// functionMap[\"/yak\"] = yakPopFunc;\n\n\tthis.HasFunction = function(name) { return functionMap[name] != undefined; };\n\tthis.EvalFunction = function(name,parameters,onReturn,env) {\n\t\tif (env == undefined || env == null) {\n\t\t\tenv = this;\n\t\t}\n\n\t\tfunctionMap[name](env, parameters, onReturn);\n\t}\n\n\tvar variableMap = {};\n\n\tthis.HasVariable = function(name) { return variableMap[name] != undefined; };\n\tthis.GetVariable = function(name) { return variableMap[name]; };\n\tthis.SetVariable = function(name,value,useHandler) {\n\t\t// bitsy.log(\"SET VARIABLE \" + name + \" = \" + value);\n\t\tif(useHandler === undefined) useHandler = true;\n\t\tvariableMap[name] = value;\n\t\tif(onVariableChangeHandler != null && useHandler){\n\t\t\tonVariableChangeHandler(name);\n\t\t}\n\t};\n\tthis.DeleteVariable = function(name,useHandler) {\n\t\tif(useHandler === undefined) useHandler = true;\n\t\tif(variableMap[name] != undefined) {\n\t\t\tvariableMap.delete(name);\n\t\t\tif(onVariableChangeHandler != null && useHandler) {\n\t\t\t\tonVariableChangeHandler(name);\n\t\t\t}\n\t\t}\n\t};\n\n\tvar operatorMap = {};\n\toperatorMap[\"=\"] = setExp;\n\toperatorMap[\"==\"] = equalExp;\n\toperatorMap[\">\"] = greaterExp;\n\toperatorMap[\"<\"] = lessExp;\n\toperatorMap[\">=\"] = greaterEqExp;\n\toperatorMap[\"<=\"] = lessEqExp;\n\toperatorMap[\"*\"] = multExp;\n\toperatorMap[\"/\"] = divExp;\n\toperatorMap[\"+\"] = addExp;\n\toperatorMap[\"-\"] = subExp;\n\n\tthis.HasOperator = function(sym) { return operatorMap[sym] != undefined; };\n\tthis.EvalOperator = function(sym,left,right,onReturn) {\n\t\toperatorMap[ sym ]( this, left, right, onReturn );\n\t}\n\n\tvar scriptMap = {};\n\tthis.HasScript = function(name) { return scriptMap[name] != undefined; };\n\tthis.GetScript = function(name) { return scriptMap[name]; };\n\tthis.SetScript = function(name,script) { scriptMap[name] = script; };\n\n\tvar onVariableChangeHandler = null;\n\tthis.SetOnVariableChangeHandler = function(onVariableChange) {\n\t\tonVariableChangeHandler = onVariableChange;\n\t}\n\tthis.GetVariableNames = function() {\n\t\tvar variableNames = [];\n\n\t\tfor (var key in variableMap) {\n\t\t\tvariableNames.push(key);\n\t\t}\n\n\t\treturn variableNames;\n\t}\n}\n\n// Local environment for a single run of a script: knows local context\nvar LocalEnvironment = function(parentEnvironment) {\n\t// this.SetDialogBuffer // not allowed in local environment?\n\tthis.GetDialogBuffer = function() { return parentEnvironment.GetDialogBuffer(); };\n\n\tthis.HasFunction = function(name) { return parentEnvironment.HasFunction(name); };\n\tthis.EvalFunction = function(name,parameters,onReturn,env) {\n\t\tif (env == undefined || env == null) {\n\t\t\tenv = this;\n\t\t}\n\n\t\tparentEnvironment.EvalFunction(name,parameters,onReturn,env);\n\t}\n\n\tthis.HasVariable = function(name) { return parentEnvironment.HasVariable(name); };\n\tthis.GetVariable = function(name) { return parentEnvironment.GetVariable(name); };\n\tthis.SetVariable = function(name,value,useHandler) { parentEnvironment.SetVariable(name,value,useHandler); };\n\t// this.DeleteVariable // not needed in local environment?\n\n\tthis.HasOperator = function(sym) { return parentEnvironment.HasOperator(sym); };\n\tthis.EvalOperator = function(sym,left,right,onReturn,env) {\n\t\tif (env == undefined || env == null) {\n\t\t\tenv = this;\n\t\t}\n\n\t\tparentEnvironment.EvalOperator(sym,left,right,onReturn,env);\n\t};\n\n\t// TODO : I don't *think* any of this is required by the local environment\n\t// this.HasScript\n\t// this.GetScript\n\t// this.SetScript\n\n\t// TODO : pretty sure these debug methods aren't required by the local environment either\n\t// this.SetOnVariableChangeHandler\n\t// this.GetVariableNames\n\n\t/* Here's where specific local context data goes:\n\t * this includes access to the object running the script\n\t * and any properties it may have (so far only \"locked\")\n\t */\n\n\t// The local environment knows what object called it -- currently only used to access properties\n\tvar curObject = null;\n\tthis.HasObject = function() { return curObject != undefined && curObject != null; }\n\tthis.SetObject = function(object) { curObject = object; }\n\tthis.GetObject = function() { return curObject; }\n\n\t// accessors for properties of the object that's running the script\n\tthis.HasProperty = function(name) {\n\t\tif (curObject && curObject.property && curObject.property.hasOwnProperty(name)) {\n\t\t\treturn true;\n\t\t}\n\t\telse {\n\t\t\treturn false;\n\t\t}\n\t};\n\tthis.GetProperty = function(name) {\n\t\tif (curObject && curObject.property && curObject.property.hasOwnProperty(name)) {\n\t\t\treturn curObject.property[name]; // TODO : should these be getters and setters instead?\n\t\t}\n\t\telse {\n\t\t\treturn null;\n\t\t}\n\t};\n\tthis.SetProperty = function(name, value) {\n\t\t// NOTE : for now, we need to gaurd against creating new properties\n\t\tif (curObject && curObject.property && curObject.property.hasOwnProperty(name)) {\n\t\t\tcurObject.property[name] = value;\n\t\t}\n\t};\n}\n\nfunction leadingWhitespace(depth) {\n\tvar str = \"\";\n\tfor(var i = 0; i < depth; i++) {\n\t\tstr += \" \"; // two spaces per indent\n\t}\n\t// bitsy.log(\"WHITESPACE \" + depth + \" ::\" + str + \"::\");\n\treturn str;\n}\n\n/* NODES */\nvar TreeRelationship = function() {\n\tthis.parent = null;\n\tthis.children = [];\n\n\tthis.AddChild = function(node) {\n\t\tthis.children.push(node);\n\t\tnode.parent = this;\n\t};\n\n\tthis.AddChildren = function(nodeList) {\n\t\tfor (var i = 0; i < nodeList.length; i++) {\n\t\t\tthis.AddChild(nodeList[i]);\n\t\t}\n\t};\n\n\tthis.SetChildren = function(nodeList) {\n\t\tthis.children = [];\n\t\tthis.AddChildren(nodeList);\n\t};\n\n\tthis.VisitAll = function(visitor, depth) {\n\t\tif (depth == undefined || depth == null) {\n\t\t\tdepth = 0;\n\t\t}\n\n\t\tvisitor.Visit(this, depth);\n\t\tfor (var i = 0; i < this.children.length; i++) {\n\t\t\tthis.children[i].VisitAll( visitor, depth + 1 );\n\t\t}\n\t};\n\n\tthis.rootId = null; // for debugging\n\tthis.GetId = function() {\n\t\t// bitsy.log(this);\n\t\tif (this.rootId != null) {\n\t\t\treturn this.rootId;\n\t\t}\n\t\telse if (this.parent != null) {\n\t\t\tvar parentId = this.parent.GetId();\n\t\t\tif (parentId != null) {\n\t\t\t\treturn parentId + \"_\" + this.parent.children.indexOf(this);\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\treturn null;\n\t\t}\n\t}\n}\n\nfunction DialogBlockNode(doIndentFirstLine) {\n\tTreeRelationship.call(this);\n\n\tthis.type = \"dialog_block\";\n\n\tthis.Eval = function(environment, onReturn) {\n\t\t// bitsy.log(\"EVAL BLOCK \" + this.children.length);\n\n\t\tif (isPlayerEmbeddedInEditor && events != undefined && events != null) {\n\t\t\tevents.Raise(\"script_node_enter\", { id: this.GetId() });\n\t\t}\n\n\t\tvar lastVal = null;\n\t\tvar i = 0;\n\n\t\tfunction evalChildren(children, done) {\n\t\t\tif (i < children.length) {\n\t\t\t\t// bitsy.log(\">> CHILD \" + i);\n\t\t\t\tchildren[i].Eval(environment, function(val) {\n\t\t\t\t\t// bitsy.log(\"<< CHILD \" + i);\n\t\t\t\t\tlastVal = val;\n\t\t\t\t\ti++;\n\t\t\t\t\tevalChildren(children,done);\n\t\t\t\t});\n\t\t\t}\n\t\t\telse {\n\t\t\t\tdone();\n\t\t\t}\n\t\t};\n\n\t\tvar self = this;\n\t\tevalChildren(this.children, function() {\n\t\t\tif (isPlayerEmbeddedInEditor && events != undefined && events != null) {\n\t\t\t\tevents.Raise(\"script_node_exit\", { id: self.GetId() });\n\t\t\t}\n\n\t\t\tonReturn(lastVal);\n\t\t});\n\t}\n\n\tif (doIndentFirstLine === undefined) {\n\t\tdoIndentFirstLine = true; // This is just for serialization\n\t}\n\n\tthis.Serialize = function(depth) {\n\t\tif (depth === undefined) {\n\t\t\tdepth = 0;\n\t\t}\n\n\t\tvar str = \"\";\n\t\tvar lastNode = null;\n\n\t\tfor (var i = 0; i < this.children.length; i++) {\n\n\t\t\tvar curNode = this.children[i];\n\n\t\t\tvar shouldIndentFirstLine = (i == 0 && doIndentFirstLine);\n\t\t\tvar shouldIndentAfterLinebreak = (lastNode && lastNode.type === \"function\" && lastNode.name === \"br\");\n\n\t\t\tif (shouldIndentFirstLine || shouldIndentAfterLinebreak) {\n\t\t\t\tstr += leadingWhitespace(depth);\n\t\t\t}\n\n\t\t\tstr += curNode.Serialize(depth);\n\n\t\t\tlastNode = curNode;\n\t\t}\n\n\t\treturn str;\n\t}\n\n\tthis.ToString = function() {\n\t\treturn this.type + \" \" + this.GetId();\n\t};\n}\n\nfunction CodeBlockNode() {\n\tTreeRelationship.call(this);\n\n\tthis.type = \"code_block\";\n\n\tthis.Eval = function(environment, onReturn) {\n\t\t// bitsy.log(\"EVAL BLOCK \" + this.children.length);\n\n\t\tif (isPlayerEmbeddedInEditor && events != undefined && events != null) {\n\t\t\tevents.Raise(\"script_node_enter\", { id: this.GetId() });\n\t\t}\n\n\t\tvar lastVal = null;\n\t\tvar i = 0;\n\n\t\tfunction evalChildren(children, done) {\n\t\t\tif (i < children.length) {\n\t\t\t\t// bitsy.log(\">> CHILD \" + i);\n\t\t\t\tchildren[i].Eval(environment, function(val) {\n\t\t\t\t\t// bitsy.log(\"<< CHILD \" + i);\n\t\t\t\t\tlastVal = val;\n\t\t\t\t\ti++;\n\t\t\t\t\tevalChildren(children,done);\n\t\t\t\t});\n\t\t\t}\n\t\t\telse {\n\t\t\t\tdone();\n\t\t\t}\n\t\t};\n\n\t\tvar self = this;\n\t\tevalChildren(this.children, function() {\n\t\t\tif (isPlayerEmbeddedInEditor && events != undefined && events != null) {\n\t\t\t\tevents.Raise(\"script_node_exit\", { id: self.GetId() });\n\t\t\t}\n\n\t\t\tonReturn(lastVal);\n\t\t});\n\t}\n\n\tthis.Serialize = function(depth) {\n\t\tif(depth === undefined) {\n\t\t\tdepth = 0;\n\t\t}\n\n\t\t// bitsy.log(\"SERIALIZE BLOCK!!!\");\n\t\t// bitsy.log(depth);\n\t\t// bitsy.log(doIndentFirstLine);\n\n\t\tvar str = \"{\"; // todo: increase scope of Sym?\n\n\t\t// TODO : do code blocks ever have more than one child anymore????\n\t\tfor (var i = 0; i < this.children.length; i++) {\n\t\t\tvar curNode = this.children[i];\n\t\t\tstr += curNode.Serialize(depth);\n\t\t}\n\n\t\tstr += \"}\";\n\n\t\treturn str;\n\t}\n\n\tthis.ToString = function() {\n\t\treturn this.type + \" \" + this.GetId();\n\t};\n}\n\nfunction isInlineCode(node) {\n\treturn isTextEffectBlock(node) || isUndefinedBlock(node) || isMultilineListBlock(node);\n}\n\nfunction isUndefinedBlock(node) {\n\treturn node.type === \"code_block\" && node.children.length > 0 && node.children[0].type === \"undefined\";\n}\n\nvar textEffectBlockNames = [\"clr1\", \"clr2\", \"clr3\", \"wvy\", \"shk\", \"rbw\", \"printSprite\", \"printItem\", \"printTile\", \"print\", \"say\", \"br\"];\nfunction isTextEffectBlock(node) {\n\tif (node.type === \"code_block\") {\n\t\tif (node.children.length > 0 && node.children[0].type === \"function\") {\n\t\t\tvar func = node.children[0];\n\t\t\treturn textEffectBlockNames.indexOf(func.name) != -1;\n\t\t}\n\t}\n\treturn false;\n}\n\nvar listBlockTypes = [\"sequence\", \"cycle\", \"shuffle\", \"if\"];\nfunction isMultilineListBlock(node) {\n\tif (node.type === \"code_block\") {\n\t\tif (node.children.length > 0) {\n\t\t\tvar child = node.children[0];\n\t\t\treturn listBlockTypes.indexOf(child.type) != -1;\n\t\t}\n\t}\n\treturn false;\n}\n\n// for round-tripping undefined code through the parser (useful for hacks!)\nfunction UndefinedNode(sourceStr) {\n\tTreeRelationship.call(this);\n\n\tthis.type = \"undefined\";\n\tthis.source = sourceStr;\n\n\tthis.Eval = function(environment,onReturn) {\n\t\ttoggleTextEffect(environment, \"_debug_highlight\");\n\t\tsayFunc(environment, [\"{\" + sourceStr + \"}\"], function() {\n\t\t\tonReturn(null);\n\t\t});\n\t\ttoggleTextEffect(environment, \"_debug_highlight\");\n\t}\n\n\tthis.Serialize = function(depth) {\n\t\treturn this.source;\n\t}\n\n\tthis.ToString = function() {\n\t\treturn \"undefined\" + \" \" + this.GetId();\n\t}\n}\n\nfunction FuncNode(name, args) {\n\tTreeRelationship.call(this);\n\n\tthis.type = \"function\";\n\tthis.name = name;\n\tthis.args = args;\n\n\tthis.Eval = function(environment,onReturn) {\n\t\tif (isPlayerEmbeddedInEditor && events != undefined && events != null) {\n\t\t\tevents.Raise(\"script_node_enter\", { id: this.GetId() });\n\t\t}\n\n\t\tvar self = this; // hack to deal with scope (TODO : move up higher?)\n\n\t\tvar argumentValues = [];\n\t\tvar i = 0;\n\n\t\tfunction evalArgs(args, done) {\n\t\t\t// TODO : really hacky way to make we get the first\n\t\t\t// symbol's NAME instead of its variable value\n\t\t\t// if we are trying to do something with a property\n\t\t\tif (self.name === \"property\" && i === 0 && i < args.length) {\n\t\t\t\tif (args[i].type === \"variable\") {\n\t\t\t\t\targumentValues.push(args[i].name);\n\t\t\t\t\ti++;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\t// first argument for a property MUST be a variable symbol\n\t\t\t\t\t// -- so skip everything if it's not!\n\t\t\t\t\ti = args.length;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (i < args.length) {\n\t\t\t\t// Evaluate each argument\n\t\t\t\targs[i].Eval(\n\t\t\t\t\tenvironment,\n\t\t\t\t\tfunction(val) {\n\t\t\t\t\t\targumentValues.push(val);\n\t\t\t\t\t\ti++;\n\t\t\t\t\t\tevalArgs(args, done);\n\t\t\t\t\t});\n\t\t\t}\n\t\t\telse {\n\t\t\t\tdone();\n\t\t\t}\n\t\t};\n\n\t\tevalArgs(\n\t\t\tthis.args,\n\t\t\tfunction() {\n\t\t\t\tif (isPlayerEmbeddedInEditor && events != undefined && events != null) {\n\t\t\t\t\tevents.Raise(\"script_node_exit\", { id: self.GetId() });\n\t\t\t\t}\n\n\t\t\t\tenvironment.EvalFunction(self.name, argumentValues, onReturn);\n\t\t\t});\n\t}\n\n\tthis.Serialize = function(depth) {\n\t\tvar isDialogBlock = this.parent.type === \"dialog_block\";\n\t\tif (isDialogBlock && this.name === \"say\") {\n\t\t\t// TODO this could cause problems with \"real\" print functions\n\t\t\treturn this.args[0].value; // first argument should be the text of the {print} func\n\t\t}\n\t\telse if (isDialogBlock && this.name === \"br\") {\n\t\t\treturn \"\\n\";\n\t\t}\n\t\telse {\n\t\t\tvar str = \"\";\n\t\t\tstr += this.name;\n\t\t\tfor(var i = 0; i < this.args.length; i++) {\n\t\t\t\tstr += \" \";\n\t\t\t\tstr += this.args[i].Serialize(depth);\n\t\t\t}\n\t\t\treturn str;\n\t\t}\n\t}\n\n\tthis.ToString = function() {\n\t\treturn this.type + \" \" + this.name + \" \" + this.GetId();\n\t};\n}\n\nfunction LiteralNode(value) {\n\tTreeRelationship.call(this);\n\n\tthis.type = \"literal\";\n\tthis.value = value;\n\n\tthis.Eval = function(environment,onReturn) {\n\t\tonReturn(this.value);\n\t};\n\n\tthis.Serialize = function(depth) {\n\t\tvar str = \"\";\n\n\t\tif (this.value === null) {\n\t\t\treturn str;\n\t\t}\n\n\t\tif (typeof this.value === \"string\") {\n\t\t\tstr += '\"';\n\t\t}\n\n\t\tstr += this.value;\n\n\t\tif (typeof this.value === \"string\") {\n\t\t\tstr += '\"';\n\t\t}\n\n\t\treturn str;\n\t};\n\n\tthis.ToString = function() {\n\t\treturn this.type + \" \" + this.value + \" \" + this.GetId();\n\t};\n}\n\nfunction VarNode(name) {\n\tTreeRelationship.call(this);\n\n\tthis.type = \"variable\";\n\tthis.name = name;\n\n\tthis.Eval = function(environment,onReturn) {\n\t\t// bitsy.log(\"EVAL \" + this.name + \" \" + environment.HasVariable(this.name) + \" \" + environment.GetVariable(this.name));\n\t\tif( environment.HasVariable(this.name) )\n\t\t\tonReturn( environment.GetVariable( this.name ) );\n\t\telse\n\t\t\tonReturn(null); // not a valid variable -- return null and hope that's ok\n\t} // TODO: might want to store nodes in the variableMap instead of values???\n\n\tthis.Serialize = function(depth) {\n\t\tvar str = \"\" + this.name;\n\t\treturn str;\n\t}\n\n\tthis.ToString = function() {\n\t\treturn this.type + \" \" + this.name + \" \" + this.GetId();\n\t};\n}\n\nfunction ExpNode(operator, left, right) {\n\tTreeRelationship.call(this);\n\n\tthis.type = \"operator\";\n\tthis.operator = operator;\n\tthis.left = left;\n\tthis.right = right;\n\n\tthis.Eval = function(environment,onReturn) {\n\t\t// bitsy.log(\"EVAL \" + this.operator);\n\t\tvar self = this; // hack to deal with scope\n\t\tenvironment.EvalOperator( this.operator, this.left, this.right, \n\t\t\tfunction(val){\n\t\t\t\t// bitsy.log(\"EVAL EXP \" + self.operator + \" \" + val);\n\t\t\t\tonReturn(val);\n\t\t\t} );\n\t\t// NOTE : sadly this pushes a lot of complexity down onto the actual operator methods\n\t};\n\n\tthis.Serialize = function(depth) {\n\t\tvar isNegativeNumber = this.operator === \"-\" && this.left.type === \"literal\" && this.left.value === null;\n\n\t\tif (!isNegativeNumber) {\n\t\t\tvar str = \"\";\n\n\t\t\tif (this.left != undefined && this.left != null) {\n\t\t\t\tstr += this.left.Serialize(depth) + \" \";\n\t\t\t}\n\n\t\t\tstr += this.operator;\n\n\t\t\tif (this.right != undefined && this.right != null) {\n\t\t\t\tstr += \" \" + this.right.Serialize(depth);\n\t\t\t}\n\n\t\t\treturn str;\n\t\t}\n\t\telse {\n\t\t\treturn this.operator + this.right.Serialize(depth); // hacky but seems to work\n\t\t}\n\t};\n\n\tthis.VisitAll = function(visitor, depth) {\n\t\tif (depth == undefined || depth == null) {\n\t\t\tdepth = 0;\n\t\t}\n\n\t\tvisitor.Visit( this, depth );\n\t\tif(this.left != null)\n\t\t\tthis.left.VisitAll( visitor, depth + 1 );\n\t\tif(this.right != null)\n\t\t\tthis.right.VisitAll( visitor, depth + 1 );\n\t};\n\n\tthis.ToString = function() {\n\t\treturn this.type + \" \" + this.operator + \" \" + this.GetId();\n\t};\n}\n\nfunction SequenceBase() {\n\tTreeRelationship.call(this);\n\n\tthis.Serialize = function(depth) {\n\t\tvar str = \"\";\n\t\tstr += this.type + \"\\n\";\n\t\tfor (var i = 0; i < this.children.length; i++) {\n\t\t\tstr += leadingWhitespace(depth + 1) + Sym.List + \" \";\n\t\t\tstr += this.children[i].Serialize(depth + 2);\n\t\t\tstr += \"\\n\";\n\t\t}\n\t\tstr += leadingWhitespace(depth);\n\t\treturn str;\n\t};\n\n\tthis.VisitAll = function(visitor, depth) {\n\t\tif (depth == undefined || depth == null) {\n\t\t\tdepth = 0;\n\t\t}\n\n\t\tvisitor.Visit(this, depth);\n\t\tfor (var i = 0; i < this.children.length; i++) {\n\t\t\tthis.children[i].VisitAll( visitor, depth + 1 );\n\t\t}\n\t};\n\n\tthis.ToString = function() {\n\t\treturn this.type + \" \" + this.GetId();\n\t};\n}\n\nfunction SequenceNode(options) {\n\tSequenceBase.call(this);\n\n\tthis.type = \"sequence\";\n\tthis.AddChildren(options);\n\n\tvar index = 0;\n\tthis.Eval = function(environment, onReturn) {\n\t\t// bitsy.log(\"SEQUENCE \" + index);\n\t\tthis.children[index].Eval(environment, onReturn);\n\n\t\tvar next = index + 1;\n\t\tif (next < this.children.length) {\n\t\t\tindex = next;\n\t\t}\n\t}\n}\n\nfunction CycleNode(options) {\n\tSequenceBase.call(this);\n\n\tthis.type = \"cycle\";\n\tthis.AddChildren(options);\n\n\tvar index = 0;\n\tthis.Eval = function(environment, onReturn) {\n\t\t// bitsy.log(\"CYCLE \" + index);\n\t\tthis.children[index].Eval(environment, onReturn);\n\n\t\tvar next = index + 1;\n\t\tif (next < this.children.length) {\n\t\t\tindex = next;\n\t\t}\n\t\telse {\n\t\t\tindex = 0;\n\t\t}\n\t}\n}\n\nfunction ShuffleNode(options) {\n\tSequenceBase.call(this);\n\n\tthis.type = \"shuffle\";\n\tthis.AddChildren(options);\n\n\tvar optionsShuffled = [];\n\tfunction shuffle(options) {\n\t\toptionsShuffled = [];\n\t\tvar optionsUnshuffled = options.slice();\n\t\twhile (optionsUnshuffled.length > 0) {\n\t\t\tvar i = Math.floor(Math.random() * optionsUnshuffled.length);\n\t\t\toptionsShuffled.push(optionsUnshuffled.splice(i,1)[0]);\n\t\t}\n\t}\n\tshuffle(this.children);\n\n\tvar index = 0;\n\tthis.Eval = function(environment, onReturn) {\n\t\toptionsShuffled[index].Eval(environment, onReturn);\n\t\t\n\t\tindex++;\n\t\tif (index >= this.children.length) {\n\t\t\tshuffle(this.children);\n\t\t\tindex = 0;\n\t\t}\n\t}\n}\n\n// TODO : rename? ConditionalNode?\nfunction IfNode(conditions, results, isSingleLine) {\n\tTreeRelationship.call(this);\n\n\tthis.type = \"if\";\n\n\tfor (var i = 0; i < conditions.length; i++) {\n\t\tthis.AddChild(new ConditionPairNode(conditions[i], results[i]));\n\t}\n\n\tvar self = this;\n\tthis.Eval = function(environment, onReturn) {\n\t\t// bitsy.log(\"EVAL IF\");\n\t\tvar i = 0;\n\t\tfunction TestCondition() {\n\t\t\tself.children[i].Eval(environment, function(result) {\n\t\t\t\tif (result.conditionValue == true) {\n\t\t\t\t\tonReturn(result.resultValue);\n\t\t\t\t}\n\t\t\t\telse if (i+1 < self.children.length) {\n\t\t\t\t\ti++;\n\t\t\t\t\tTestCondition();\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tonReturn(null);\n\t\t\t\t}\n\t\t\t});\n\t\t};\n\t\tTestCondition();\n\t};\n\n\tif (isSingleLine === undefined) {\n\t\tisSingleLine = false; // This is just for serialization\n\t}\n\n\tthis.Serialize = function(depth) {\n\t\tvar str = \"\";\n\t\tif(isSingleLine) {\n\t\t\t// HACKY - should I even keep this mode???\n\t\t\tstr += this.children[0].children[0].Serialize() + \" ? \" + this.children[0].children[1].Serialize();\n\t\t\tif (this.children.length > 1 && this.children[1].children[0].type === Sym.Else) {\n\t\t\t\tstr += \" \" + Sym.ElseExp + \" \" + this.children[1].children[1].Serialize();\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tstr += \"\\n\";\n\t\t\tfor (var i = 0; i < this.children.length; i++) {\n\t\t\t\tstr += this.children[i].Serialize(depth);\n\t\t\t}\n\t\t\tstr += leadingWhitespace(depth);\n\t\t}\n\t\treturn str;\n\t};\n\n\tthis.IsSingleLine = function() {\n\t\treturn isSingleLine;\n\t};\n\n\tthis.VisitAll = function(visitor, depth) {\n\t\tif (depth == undefined || depth == null) {\n\t\t\tdepth = 0;\n\t\t}\n\n\t\tvisitor.Visit(this, depth);\n\n\t\tfor (var i = 0; i < this.children.length; i++) {\n\t\t\tthis.children[i].VisitAll(visitor, depth + 1);\n\t\t}\n\t};\n\n\tthis.ToString = function() {\n\t\treturn this.type + \" \" + this.mode + \" \" + this.GetId();\n\t};\n}\n\nfunction ConditionPairNode(condition, result) {\n\tTreeRelationship.call(this);\n\n\tthis.type = \"condition_pair\";\n\n\tthis.AddChild(condition);\n\tthis.AddChild(result);\n\n\tvar self = this;\n\n\tthis.Eval = function(environment, onReturn) {\n\t\tself.children[0].Eval(environment, function(conditionSuccess) {\n\t\t\tif (conditionSuccess) {\n\t\t\t\tself.children[1].Eval(environment, function(resultValue) {\n\t\t\t\t\tonReturn({ conditionValue:true, resultValue:resultValue });\n\t\t\t\t});\n\t\t\t}\n\t\t\telse {\n\t\t\t\tonReturn({ conditionValue:false });\n\t\t\t}\n\t\t});\n\t};\n\n\tthis.Serialize = function(depth) {\n\t\tvar str = \"\";\n\t\tstr += leadingWhitespace(depth + 1);\n\t\tstr += Sym.List + \" \" + this.children[0].Serialize(depth) + \" \" + Sym.ConditionEnd + Sym.Linebreak;\n\t\tstr += this.children[1].Serialize(depth + 2) + Sym.Linebreak;\n\t\treturn str;\n\t};\n\n\tthis.VisitAll = function(visitor, depth) {\n\t\tif (depth == undefined || depth == null) {\n\t\t\tdepth = 0;\n\t\t}\n\n\t\tvisitor.Visit(this, depth);\n\n\t\tfor (var i = 0; i < this.children.length; i++) {\n\t\t\tthis.children[i].VisitAll(visitor, depth + 1);\n\t\t}\n\t};\n\n\tthis.ToString = function() {\n\t\treturn this.type + \" \" + this.GetId();\n\t};\n}\n\nfunction ElseNode() {\n\tTreeRelationship.call(this);\n\n\tthis.type = Sym.Else;\n\n\tthis.Eval = function(environment, onReturn) {\n\t\tonReturn(true);\n\t};\n\n\tthis.Serialize = function() {\n\t\treturn Sym.Else;\n\t};\n\n\tthis.ToString = function() {\n\t\treturn this.type + \" \" + this.mode + \" \" + this.GetId();\n\t};\n}\n\nvar Sym = {\n\tDialogOpen : '\"\"\"',\n\tDialogClose : '\"\"\"',\n\tCodeOpen : \"{\",\n\tCodeClose : \"}\",\n\tLinebreak : \"\\n\", // just call it \"break\" ?\n\tSeparator : \":\",\n\tList : \"-\",\n\tString : '\"',\n\tConditionEnd : \"?\",\n\tElse : \"else\",\n\tElseExp : \":\", // special shorthand for expressions (deprecate?)\n\tSet : \"=\",\n\tOperators : [\"==\", \">=\", \"<=\", \">\", \"<\", \"-\", \"+\", \"/\", \"*\"], // operators need to be in reverse order of precedence\n};\n\nvar Parser = function(env) {\n\tvar environment = env;\n\n\tthis.Parse = function(scriptStr, rootId) {\n\t\tvar rootNode = new DialogBlockNode();\n\t\trootNode.rootId = rootId;\n\t\tvar state = new ParserState(rootNode, scriptStr);\n\n\t\tif (state.MatchAhead(Sym.DialogOpen)) {\n\t\t\t// multi-line dialog block\n\t\t\tvar dialogStr = state.ConsumeBlock(Sym.DialogOpen + Sym.Linebreak, Sym.Linebreak + Sym.DialogClose);\n\t\t\trootNode = new DialogBlockNode();\n\t\t\trootNode.rootId = rootId; // hacky!!\n\t\t\tstate = new ParserState(rootNode, dialogStr);\n\t\t\tstate = ParseDialog(state);\n\t\t}\n\t\telse {\n\t\t\t// single-line dialog block\n\t\t\tstate = ParseDialog(state);\n\t\t}\n\n\t\treturn state.rootNode;\n\t};\n\n\tvar ParserState = function( rootNode, str ) {\n\t\tthis.rootNode = rootNode;\n\t\tthis.curNode = this.rootNode;\n\n\t\tvar sourceStr = str;\n\t\tvar i = 0;\n\t\tthis.Index = function() { return i; };\n\t\tthis.Count = function() { return sourceStr.length; };\n\t\tthis.Done = function() { return i >= sourceStr.length; };\n\t\tthis.Char = function() { return sourceStr[i]; };\n\t\tthis.Step = function(n) { if(n===undefined) n=1; i += n; };\n\t\tthis.MatchAhead = function(str) {\n\t\t\t// bitsy.log(str);\n\t\t\tstr = \"\" + str; // hack to turn single chars into strings\n\t\t\t// bitsy.log(str);\n\t\t\t// bitsy.log(str.length);\n\t\t\tfor (var j = 0; j < str.length; j++) {\n\t\t\t\tif (i + j >= sourceStr.length) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\telse if (str[j] != sourceStr[i+j]) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t\tthis.Peak = function(end) {\n\t\t\tvar str = \"\";\n\t\t\tvar j = i;\n\t\t\t// bitsy.log(j);\n\t\t\twhile (j < sourceStr.length && end.indexOf(sourceStr[j]) == -1) {\n\t\t\t\tstr += sourceStr[j];\n\t\t\t\tj++;\n\t\t\t}\n\t\t\t// bitsy.log(\"PEAK ::\" + str + \"::\");\n\t\t\treturn str;\n\t\t}\n\t\tthis.ConsumeBlock = function(open, close, includeSymbols) {\n\t\t\tif (includeSymbols === undefined || includeSymbols === null) {\n\t\t\t\tincludeSymbols = false;\n\t\t\t}\n\n\t\t\tvar startIndex = i;\n\n\t\t\tvar matchCount = 0;\n\t\t\tif (this.MatchAhead(open)) {\n\t\t\t\tmatchCount++;\n\t\t\t\tthis.Step(open.length);\n\t\t\t}\n\n\t\t\twhile (matchCount > 0 && !this.Done()) {\n\t\t\t\tif (this.MatchAhead(close)) {\n\t\t\t\t\tmatchCount--;\n\t\t\t\t\tthis.Step( close.length );\n\t\t\t\t}\n\t\t\t\telse if (this.MatchAhead(open)) {\n\t\t\t\t\tmatchCount++;\n\t\t\t\t\tthis.Step(open.length);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthis.Step();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (includeSymbols) {\n\t\t\t\treturn sourceStr.slice(startIndex, i);\n\t\t\t}\n\t\t\telse {\n\t\t\t\treturn sourceStr.slice(startIndex + open.length, i - close.length);\n\t\t\t}\n\t\t}\n\n\t\tthis.Print = function() { bitsy.log(sourceStr); };\n\t\tthis.Source = function() { return sourceStr; };\n\t};\n\n\t/*\n\t\tParseDialog():\n\t\tThis function adds {print} nodes and linebreak {br} nodes to display text,\n\t\tinterleaved with bracketed code nodes for functions and flow control,\n\t\tsuch as text effects {shk} {wvy} or sequences like {cycle} and {shuffle}.\n\t\tThe parsing of those code blocks is handled by ParseCode.\n\n\t\tNote on parsing newline characters:\n\t\t- there should be an implicit linebreak {br} after each dialog line\n\t\t- a \"dialog line\" is defined as any line that either:\n\t\t\t- 1) contains dialog text (any text outside of a code block)\n\t\t\t- 2) is entirely empty (no text, no code)\n\t\t\t- *or* 3) contains a list block (sequence, cycle, shuffle, or conditional)\n\t\t- lines *only* containing {code} blocks are not dialog lines\n\n\t\tNOTE TO SELF: all the state I'm storing in here feels like\n\t\tevidence that the parsing system kind of broke down at this point :(\n\t\tMaybe it would feel better if I move into the \"state\" object\n\t*/\n\tfunction ParseDialog(state) {\n\t\tvar curLineNodeList = [];\n\t\tvar curText = \"\";\n\t\tvar curLineIsEmpty = true;\n\t\tvar curLineContainsDialogText = false;\n\t\tvar prevLineIsDialogLine = false;\n\n\t\tvar curLineIsDialogLine = function() {\n\t\t\treturn curLineContainsDialogText || curLineIsEmpty;\n\t\t}\n\n\t\tvar resetLineStateForNewLine = function() {\n\t\t\tprevLineIsDialogLine = curLineIsDialogLine();\n\t\t\tcurLineContainsDialogText = false;\n\t\t\tcurLineIsEmpty = true;\n\t\t\tcurText = \"\";\n\t\t\tcurLineNodeList = [];\n\t\t}\n\n\t\tvar tryAddTextNodeToList = function() {\n\t\t\tif (curText.length > 0) {\n\t\t\t\tvar sayNode = new FuncNode(\"say\", [new LiteralNode(curText)]);\n\t\t\t\tcurLineNodeList.push(sayNode);\n\n\t\t\t\tcurText = \"\";\n\t\t\t\tcurLineIsEmpty = false;\n\t\t\t\tcurLineContainsDialogText = true;\n\t\t\t}\n\t\t}\n\n\t\tvar addCodeNodeToList = function() {\n\t\t\tvar codeSource = state.ConsumeBlock(Sym.CodeOpen, Sym.CodeClose);\n\t\t\tvar codeState = new ParserState(new CodeBlockNode(), codeSource);\n\t\t\tcodeState = ParseCode(codeState);\n\t\t\tvar codeBlockNode = codeState.rootNode;\n\t\t\tcurLineNodeList.push(codeBlockNode);\n\n\t\t\tcurLineIsEmpty = false;\n\n\t\t\t// lists count as dialog text, because they can contain it\n\t\t\tif (isMultilineListBlock(codeBlockNode)) {\n\t\t\t\tcurLineContainsDialogText = true;\n\t\t\t}\n\t\t}\n\n\t\tvar tryAddLinebreakNodeToList = function() {\n\t\t\tif (prevLineIsDialogLine) {\n\t\t\t\tvar linebreakNode = new FuncNode(\"br\", []);\n\t\t\t\tcurLineNodeList.unshift(linebreakNode);\n\t\t\t}\n\t\t}\n\n\t\tvar addLineNodesToParent = function() {\n\t\t\tfor (var i = 0; i < curLineNodeList.length; i++) {\n\t\t\t\tstate.curNode.AddChild(curLineNodeList[i]);\n\t\t\t}\n\t\t}\n\n\t\twhile (!state.Done()) {\n\t\t\tif (state.MatchAhead(Sym.CodeOpen)) { // process code block\n\t\t\t\t// add any buffered text to a print node, and parse the code\n\t\t\t\ttryAddTextNodeToList();\n\t\t\t\taddCodeNodeToList();\n\t\t\t}\n\t\t\telse if (state.MatchAhead(Sym.Linebreak)) { // process new line\n\t\t\t\t// add any buffered text to a print node, \n\t\t\t\t// and add a linebreak if we are between two dialog lines\n\t\t\t\ttryAddTextNodeToList();\n\t\t\t\ttryAddLinebreakNodeToList();\n\n\t\t\t\t// since we've reached the end of a line\n\t\t\t\t// add stored nodes for this line to the parent node we are building,\n\t\t\t\t// and reset state for the next line\n\t\t\t\taddLineNodesToParent();\n\t\t\t\tresetLineStateForNewLine();\n\n\t\t\t\tstate.Step();\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// continue adding text to the current text buffer\n\t\t\t\tcurText += state.Char();\n\t\t\t\tstate.Step();\n\t\t\t}\n\t\t}\n\n\t\t// to make sure we don't leave anything behind:\n\t\t// add buffered text to a print node and add all nodes\n\t\t// to the current parent node\n\t\ttryAddTextNodeToList();\n\t\ttryAddLinebreakNodeToList();\n\t\taddLineNodesToParent();\n\n\t\treturn state;\n\t}\n\n\tfunction ParseDialogBlock(state) {\n\t\tvar dialogStr = state.ConsumeBlock( Sym.DialogOpen, Sym.DialogClose );\n\n\t\tvar dialogState = new ParserState(new DialogBlockNode(), dialogStr);\n\t\tdialogState = ParseDialog( dialogState );\n\n\t\tstate.curNode.AddChild( dialogState.rootNode );\n\n\t\treturn state;\n\t}\n\n\t/*\n\t\tParseConditional():\n\t\tA conditional contains a list of conditions that can be\n\t\tevaluated to true or false, followed by more dialog\n\t\tthat will be evaluated if the condition is true. The first\n\t\ttrue condition is the one that gets evaluated.\n\t*/\n\tfunction ParseConditional(state) {\n\t\tvar conditionStrings = [];\n\t\tvar resultStrings = [];\n\t\tvar curIndex = -1;\n\t\tvar requiredLeadingWhitespace = -1;\n\n\t\t// TODO : very similar to sequence parsing - can we share anything?\n\t\tfunction parseConditionalItemLine(state) {\n\t\t\tvar lineText = \"\";\n\t\t\tvar whitespaceCount = 0;\n\t\t\tvar isNewCondition = false;\n\t\t\tvar encounteredNonWhitespace = false;\n\t\t\tvar encounteredConditionEnd = false;\n\n\t\t\twhile (!state.Done() && !(state.Char() === Sym.Linebreak)) {\n\t\t\t\t// count whitespace until we hit the first non-whitespace character\n\t\t\t\tif (!encounteredNonWhitespace) {\n\t\t\t\t\tif (state.Char() === \" \" || state.Char() === \"\\t\") {\n\t\t\t\t\t\twhitespaceCount++;\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tencounteredNonWhitespace = true;\n\n\t\t\t\t\t\tif (state.Char() === Sym.List) {\n\t\t\t\t\t\t\tisNewCondition = true;\n\t\t\t\t\t\t\twhitespaceCount += 2; // count the list seperator AND the following extra space\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if this is the condition, we need to track whether we've\n\t\t\t\t// reached the end of the condition\n\t\t\t\tif (isNewCondition && !encounteredConditionEnd) {\n\t\t\t\t\tif (state.Char() === Sym.ConditionEnd) {\n\t\t\t\t\t\tencounteredConditionEnd = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// add characters one at a time, unless it's a code block\n\t\t\t\t// since code blocks can contain additional sequences inside\n\t\t\t\t// them that will mess up our list item detection\n\t\t\t\tif (state.Char() === Sym.CodeOpen) {\n\t\t\t\t\tlineText += state.ConsumeBlock(Sym.CodeOpen, Sym.CodeClose, true /*includeSymbols*/);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tif (!encounteredConditionEnd) { // skip all characters including & after the condition end\n\t\t\t\t\t\tlineText += state.Char();\n\t\t\t\t\t}\n\t\t\t\t\tstate.Step();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (state.Char() === Sym.Linebreak) {\n\t\t\t\tstate.Step();\n\t\t\t}\n\n\t\t\treturn { text:lineText, whitespace:whitespaceCount, isNewCondition:isNewCondition };\n\t\t}\n\n\t\t// TODO : this is copied from sequence parsing; share?\n\t\tfunction trimLeadingWhitespace(text, trimLength) {\n\t\t\tvar textSplit = text.split(Sym.linebreak);\n\t\t\ttextSplit = textSplit.map(function(line) { return line.slice(trimLength) });\n\t\t\treturn textSplit.join(Sym.linebreak);\n\t\t}\n\n\t\twhile (!state.Done()) {\n\t\t\tvar lineResults = parseConditionalItemLine(state);\n\n\t\t\tif (lineResults.isNewCondition) {\n\t\t\t\trequiredLeadingWhitespace = lineResults.whitespace;\n\t\t\t\tcurIndex++;\n\t\t\t\tconditionStrings[curIndex] = \"\";\n\t\t\t\tresultStrings[curIndex] = \"\";\n\t\t\t}\n\n\t\t\t// to avoid extra newlines in nested conditionals, only count lines\n\t\t\t// that at least match the whitespace count of the initial line\n\t\t\t// NOTE: see the comment in sequence parsing for more details\n\t\t\tif (lineResults.whitespace >= requiredLeadingWhitespace) {\n\t\t\t\tvar trimmedText = trimLeadingWhitespace(lineResults.text, requiredLeadingWhitespace);\n\n\t\t\t\tif (lineResults.isNewCondition) {\n\t\t\t\t\tconditionStrings[curIndex] += trimmedText;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tresultStrings[curIndex] += trimmedText + Sym.Linebreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// hack: cut off the trailing newlines from all the result strings\n\t\tresultStrings = resultStrings.map(function(result) { return result.slice(0,-1); });\n\n\t\tvar conditions = [];\n\t\tfor (var i = 0; i < conditionStrings.length; i++) {\n\t\t\tvar str = conditionStrings[i].trim();\n\t\t\tif (str === Sym.Else) {\n\t\t\t\tconditions.push(new ElseNode());\n\t\t\t}\n\t\t\telse {\n\t\t\t\tvar exp = CreateExpression(str);\n\t\t\t\tconditions.push(exp);\n\t\t\t}\n\t\t}\n\n\t\tvar results = [];\n\t\tfor (var i = 0; i < resultStrings.length; i++) {\n\t\t\tvar str = resultStrings[i];\n\t\t\tvar dialogBlockState = new ParserState(new DialogBlockNode(), str);\n\t\t\tdialogBlockState = ParseDialog(dialogBlockState);\n\t\t\tvar dialogBlock = dialogBlockState.rootNode;\n\t\t\tresults.push(dialogBlock);\n\t\t}\n\n\t\tstate.curNode.AddChild(new IfNode(conditions, results));\n\n\t\treturn state;\n\t}\n\n\tfunction IsSequence(str) {\n\t\t// bitsy.log(\"IsSequence? \" + str);\n\t\treturn str === \"sequence\" || str === \"cycle\" || str === \"shuffle\";\n\t}\n\n\t/*\n\t\tParseSequence():\n\t\tSequence nodes contain a list of dialog block nodes. The order those\n\t\tnodes are evaluated is determined by the type of sequence:\n\t\t- sequence: each child node evaluated once in order\n\t\t- cycle: repeats from the beginning after all nodes evaluate\n\t\t- shuffle: evaluate in a random order\n\n\t\tEach item in a sequence is sepearated by a \"-\" character.\n\t\tThe seperator must come at the beginning of the line,\n\t\tbut may be preceded by whitespace (in any amount).\n\n\t\tAbout whitespace: Whitespace at the start of a line\n\t\tis ignored if it less than or equal to the count of\n\t\twhitespace that preceded the list separator (\"-\") at\n\t\tthe start of that item. (The count also includes the\n\t\tseperator and the extra space after the seperator.)\n\t */\n\tfunction ParseSequence(state, sequenceType) {\n\t\tvar itemStrings = [];\n\t\tvar curItemIndex = -1; // -1 indicates not reading an item yet\n\t\tvar requiredLeadingWhitespace = -1;\n\n\t\tfunction parseSequenceItemLine(state) {\n\t\t\tvar lineText = \"\";\n\t\t\tvar whitespaceCount = 0;\n\t\t\tvar isNewListItem = false;\n\t\t\tvar encounteredNonWhitespace = false;\n\n\t\t\twhile (!state.Done() && !(state.Char() === Sym.Linebreak)) {\n\t\t\t\t// count whitespace until we hit the first non-whitespace character\n\t\t\t\tif (!encounteredNonWhitespace) {\n\t\t\t\t\tif (state.Char() === \" \" || state.Char() === \"\\t\") {\n\t\t\t\t\t\twhitespaceCount++;\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tencounteredNonWhitespace = true;\n\n\t\t\t\t\t\tif (state.Char() === Sym.List) {\n\t\t\t\t\t\t\tisNewListItem = true;\n\t\t\t\t\t\t\twhitespaceCount += 2; // count the list seperator AND the following extra space\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// add characters one at a time, unless it's a code block\n\t\t\t\t// since code blocks can contain additional sequences inside\n\t\t\t\t// them that will mess up our list item detection\n\t\t\t\tif (state.Char() === Sym.CodeOpen) {\n\t\t\t\t\tlineText += state.ConsumeBlock(Sym.CodeOpen, Sym.CodeClose, true /*includeSymbols*/);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tlineText += state.Char();\n\t\t\t\t\tstate.Step();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (state.Char() === Sym.Linebreak) {\n\t\t\t\tstate.Step();\n\t\t\t}\n\n\t\t\treturn { text:lineText, whitespace:whitespaceCount, isNewListItem:isNewListItem };\n\t\t}\n\n\t\tfunction trimLeadingWhitespace(text, trimLength) {\n\t\t\t// the split and join is necessary because a single \"line\"\n\t\t\t// can contain sequences that may contain newlines of their own\n\t\t\t// (we treat them all as one \"line\" for sequence parsing purposes)\n\t\t\tvar textSplit = text.split(Sym.linebreak);\n\t\t\ttextSplit = textSplit.map(function(line) { return line.slice(trimLength) });\n\t\t\treturn textSplit.join(Sym.linebreak);\n\t\t}\n\n\t\twhile (!state.Done()) {\n\t\t\tvar lineResults = parseSequenceItemLine(state);\n\n\t\t\tif (lineResults.isNewListItem) {\n\t\t\t\trequiredLeadingWhitespace = lineResults.whitespace;\n\t\t\t\tcurItemIndex++;\n\t\t\t\titemStrings[curItemIndex] = \"\";\n\t\t\t}\n\n\t\t\t// to avoid double counting closing lines (empty ones ending in a curly brace)\n\t\t\t// we only allow lines that have at least as much whitespace as the start of the list item\n\t\t\t// TODO : I think right now this leads to a bug if the list item's indentation is less than\n\t\t\t// its parent code block... hopefully that won't be a big deal for now\n\t\t\t// (NOTE: I think the bug could be fixed by only applying this to the FINAL line of an item, but\n\t\t\t// that would require more consideration and testing)\n\t\t\tif (lineResults.whitespace >= requiredLeadingWhitespace) {\n\t\t\t\tvar trimmedText = trimLeadingWhitespace(lineResults.text, requiredLeadingWhitespace);\n\t\t\t\titemStrings[curItemIndex] += trimmedText + Sym.Linebreak;\n\t\t\t}\n\t\t}\n\n\t\t// a bit hacky: cut off the trailing newlines from all the items\n\t\titemStrings = itemStrings.map(function(item) { return item.slice(0,-1); });\n\n\t\tvar options = [];\n\t\tfor (var i = 0; i < itemStrings.length; i++) {\n\t\t\tvar str = itemStrings[i];\n\t\t\tvar dialogBlockState = new ParserState(new DialogBlockNode(false /* doIndentFirstLine */), str);\n\t\t\tdialogBlockState = ParseDialog(dialogBlockState);\n\t\t\tvar dialogBlock = dialogBlockState.rootNode;\n\t\t\toptions.push(dialogBlock);\n\t\t}\n\n\t\tif (sequenceType === \"sequence\") {\n\t\t\tstate.curNode.AddChild(new SequenceNode(options));\n\t\t}\n\t\telse if (sequenceType === \"cycle\") {\n\t\t\tstate.curNode.AddChild(new CycleNode(options));\n\t\t}\n\t\telse if (sequenceType === \"shuffle\") {\n\t\t\tstate.curNode.AddChild(new ShuffleNode(options));\n\t\t}\n\n\t\treturn state;\n\t}\n\n\tfunction ParseFunction(state, funcName) {\n\t\tbitsy.log(\"~~~ PARSE FUNCTION \" + funcName);\n\n\t\tvar args = [];\n\n\t\tvar curSymbol = \"\";\n\t\tfunction OnSymbolEnd() {\n\t\t\tcurSymbol = curSymbol.trim();\n\t\t\t// bitsy.log(\"PARAMTER \" + curSymbol);\n\t\t\targs.push( StringToValue(curSymbol) );\n\t\t\t// bitsy.log(args);\n\t\t\tcurSymbol = \"\";\n\t\t}\n\n\t\twhile( !( state.Char() === \"\\n\" || state.Done() ) ) {\n\t\t\tif( state.MatchAhead(Sym.CodeOpen) ) {\n\t\t\t\tvar codeBlockState = new ParserState(new CodeBlockNode(), state.ConsumeBlock(Sym.CodeOpen, Sym.CodeClose));\n\t\t\t\tcodeBlockState = ParseCode( codeBlockState );\n\t\t\t\tvar codeBlock = codeBlockState.rootNode;\n\t\t\t\targs.push( codeBlock );\n\t\t\t\tcurSymbol = \"\";\n\t\t\t}\n\t\t\telse if( state.MatchAhead(Sym.String) ) {\n\t\t\t\t/* STRING LITERAL */\n\t\t\t\tvar str = state.ConsumeBlock(Sym.String, Sym.String);\n\t\t\t\t// bitsy.log(\"STRING \" + str);\n\t\t\t\targs.push( new LiteralNode(str) );\n\t\t\t\tcurSymbol = \"\";\n\t\t\t}\n\t\t\telse if(state.Char() === \" \" && curSymbol.length > 0) {\n\t\t\t\tOnSymbolEnd();\n\t\t\t}\n\t\t\telse {\n\t\t\t\tcurSymbol += state.Char();\n\t\t\t}\n\t\t\tstate.Step();\n\t\t}\n\n\t\tif(curSymbol.length > 0) {\n\t\t\tOnSymbolEnd();\n\t\t}\n\n\t\tstate.curNode.AddChild( new FuncNode( funcName, args ) );\n\n\t\treturn state;\n\t}\n\n\tfunction IsValidVariableName(str) {\n\t\tvar reg = /^[a-zA-Z_$][a-zA-Z_$0-9]*$/;\n\t\tvar isValid = reg.test(str);\n\t\t// bitsy.log(\"VALID variable??? \" + isValid);\n\t\treturn isValid;\n\t}\n\n\tfunction StringToValue(valStr) {\n\t\tif(valStr[0] === Sym.CodeOpen) {\n\t\t\t// CODE BLOCK!!!\n\t\t\tvar codeStr = (new ParserState( null, valStr )).ConsumeBlock(Sym.CodeOpen, Sym.CodeClose); //hacky\n\t\t\tvar codeBlockState = new ParserState(new CodeBlockNode(), codeStr);\n\t\t\tcodeBlockState = ParseCode( codeBlockState );\n\t\t\treturn codeBlockState.rootNode;\n\t\t}\n\t\telse if(valStr[0] === Sym.String) {\n\t\t\t// STRING!!\n\t\t\t// bitsy.log(\"STRING\");\n\t\t\tvar str = \"\";\n\t\t\tvar i = 1;\n\t\t\twhile (i < valStr.length && valStr[i] != Sym.String) {\n\t\t\t\tstr += valStr[i];\n\t\t\t\ti++;\n\t\t\t}\n\t\t\t// bitsy.log(str);\n\t\t\treturn new LiteralNode( str );\n\t\t}\n\t\telse if(valStr === \"true\") {\n\t\t\t// BOOL\n\t\t\treturn new LiteralNode( true );\n\t\t}\n\t\telse if(valStr === \"false\") {\n\t\t\t// BOOL\n\t\t\treturn new LiteralNode( false );\n\t\t}\n\t\telse if( !isNaN(parseFloat(valStr)) ) {\n\t\t\t// NUMBER!!\n\t\t\t// bitsy.log(\"NUMBER!!! \" + valStr);\n\t\t\treturn new LiteralNode( parseFloat(valStr) );\n\t\t}\n\t\telse if(IsValidVariableName(valStr)) {\n\t\t\t// VARIABLE!!\n\t\t\t// bitsy.log(\"VARIABLE\");\n\t\t\treturn new VarNode(valStr); // TODO : check for valid potential variables\n\t\t}\n\t\telse {\n\t\t\t// uh oh\n\t\t\treturn new LiteralNode(null);\n\t\t}\n\t}\n\n\tfunction CreateExpression(expStr) {\n\t\texpStr = expStr.trim();\n\n\t\tfunction IsInsideString(index) {\n\t\t\tvar inString = false;\n\t\t\tfor(var i = 0; i < expStr.length; i++) {\n\t\t\t\tif(expStr[i] === Sym.String)\n\t\t\t\t\tinString = !inString;\n\n\t\t\t\tif(index === i)\n\t\t\t\t\treturn inString;\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\n\t\tfunction IsInsideCode(index) {\n\t\t\tvar count = 0;\n\t\t\tfor(var i = 0; i < expStr.length; i++) {\n\t\t\t\tif(expStr[i] === Sym.CodeOpen)\n\t\t\t\t\tcount++;\n\t\t\t\telse if(expStr[i] === Sym.CodeClose)\n\t\t\t\t\tcount--;\n\n\t\t\t\tif(index === i)\n\t\t\t\t\treturn count > 0;\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\n\t\tvar operator = null;\n\n\t\t// set is special because other operator can look like it, and it has to go first in the order of operations\n\t\tvar setIndex = expStr.indexOf(Sym.Set);\n\t\tif( setIndex > -1 && !IsInsideString(setIndex) && !IsInsideCode(setIndex) ) { // it might be a set operator\n\t\t\tif( expStr[setIndex+1] != \"=\" && expStr[setIndex-1] != \">\" && expStr[setIndex-1] != \"<\" ) {\n\t\t\t\t// ok it actually IS a set operator and not ==, >=, or <=\n\t\t\t\toperator = Sym.Set;\n\t\t\t\tvar variableName = expStr.substring(0,setIndex).trim(); // TODO : valid variable name testing\n\t\t\t\tvar left = IsValidVariableName(variableName) ? new VarNode( variableName ) : new LiteralNode(null);\n\t\t\t\tvar right = CreateExpression( expStr.substring(setIndex+Sym.Set.length) );\n\t\t\t\tvar exp = new ExpNode( operator, left, right );\n\t\t\t\treturn exp;\n\t\t\t}\n\t\t}\n\n\t\t// special if \"expression\" for single-line if statements\n\t\tvar ifIndex = expStr.indexOf(Sym.ConditionEnd);\n\t\tif( ifIndex > -1 && !IsInsideString(ifIndex) && !IsInsideCode(ifIndex) ) {\n\t\t\toperator = Sym.ConditionEnd;\n\t\t\tvar conditionStr = expStr.substring(0,ifIndex).trim();\n\t\t\tvar conditions = [ CreateExpression(conditionStr) ];\n\n\t\t\tvar resultStr = expStr.substring(ifIndex+Sym.ConditionEnd.length);\n\t\t\tvar results = [];\n\t\t\tfunction AddResult(str) {\n\t\t\t\tvar dialogBlockState = new ParserState(new DialogBlockNode(), str);\n\t\t\t\tdialogBlockState = ParseDialog( dialogBlockState );\n\t\t\t\tvar dialogBlock = dialogBlockState.rootNode;\n\t\t\t\tresults.push( dialogBlock );\n\t\t\t}\n\n\t\t\tvar elseIndex = resultStr.indexOf(Sym.ElseExp); // does this need to test for strings?\n\t\t\tif(elseIndex > -1) {\n\t\t\t\tconditions.push( new ElseNode() );\n\n\t\t\t\tvar elseStr = resultStr.substring(elseIndex+Sym.ElseExp.length);\n\t\t\t\tvar resultStr = resultStr.substring(0,elseIndex);\n\n\t\t\t\tAddResult( resultStr.trim() );\n\t\t\t\tAddResult( elseStr.trim() );\n\t\t\t}\n\t\t\telse {\n\t\t\t\tAddResult( resultStr.trim() );\n\t\t\t}\n\n\t\t\treturn new IfNode( conditions, results, true /*isSingleLine*/ );\n\t\t}\n\n\t\tfor( var i = 0; (operator == null) && (i < Sym.Operators.length); i++ ) {\n\t\t\tvar opSym = Sym.Operators[i];\n\t\t\tvar opIndex = expStr.indexOf( opSym );\n\t\t\tif( opIndex > -1 && !IsInsideString(opIndex) && !IsInsideCode(opIndex) ) {\n\t\t\t\toperator = opSym;\n\t\t\t\tvar left = CreateExpression( expStr.substring(0,opIndex) );\n\t\t\t\tvar right = CreateExpression( expStr.substring(opIndex+opSym.length) );\n\t\t\t\tvar exp = new ExpNode( operator, left, right );\n\t\t\t\treturn exp;\n\t\t\t}\n\t\t}\n\n\t\tif( operator == null ) {\n\t\t\treturn StringToValue(expStr);\n\t\t}\n\t}\n\tthis.CreateExpression = CreateExpression;\n\n\tfunction IsWhitespace(str) {\n\t\treturn ( str === \" \" || str === \"\\t\" || str === \"\\n\" );\n\t}\n\n\tfunction IsExpression(str) {\n\t\tvar tempState = new ParserState(null, str); // hacky\n\t\tvar textOutsideCodeBlocks = \"\";\n\n\t\twhile (!tempState.Done()) {\n\t\t\tif (tempState.MatchAhead(Sym.CodeOpen)) {\n\t\t\t\ttempState.ConsumeBlock(Sym.CodeOpen, Sym.CodeClose);\n\t\t\t}\n\t\t\telse {\n\t\t\t\ttextOutsideCodeBlocks += tempState.Char();\n\t\t\t\ttempState.Step();\n\t\t\t}\n\t\t}\n\n\t\tvar containsAnyExpressionOperators = (textOutsideCodeBlocks.indexOf(Sym.ConditionEnd) != -1) ||\n\t\t\t\t(textOutsideCodeBlocks.indexOf(Sym.Set) != -1) ||\n\t\t\t\t(Sym.Operators.some(function(opSym) { return textOutsideCodeBlocks.indexOf(opSym) != -1; }));\n\n\t\treturn containsAnyExpressionOperators;\n\t}\n\n\tfunction IsLiteral(str) {\n\t\tvar isBool = str === \"true\" || str === \"false\";\n\t\tvar isNum = !isNaN(parseFloat(str));\n\t\tvar isStr = str[0] === '\"' && str[str.length-1] === '\"';\n\t\tvar isVar = IsValidVariableName(str);\n\t\tvar isEmpty = str.length === 0;\n\t\treturn isBool || isNum || isStr || isVar || isEmpty;\n\t}\n\n\tfunction ParseExpression(state) {\n\t\tvar line = state.Source(); // state.Peak( [Sym.Linebreak] ); // TODO : remove the linebreak thing\n\t\t// bitsy.log(\"EXPRESSION \" + line);\n\t\tvar exp = CreateExpression(line);\n\t\t// bitsy.log(exp);\n\t\tstate.curNode.AddChild(exp);\n\t\tstate.Step(line.length);\n\t\treturn state;\n\t}\n\n\tfunction IsConditionalBlock(state) {\n\t\tvar peakToFirstListSymbol = state.Peak([Sym.List]);\n\n\t\tvar foundListSymbol = peakToFirstListSymbol < state.Source().length;\n\n\t\tvar areAllCharsBeforeListWhitespace = true;\n\t\tfor (var i = 0; i < peakToFirstListSymbol.length; i++) {\n\t\t\tif (!IsWhitespace(peakToFirstListSymbol[i])) {\n\t\t\t\tareAllCharsBeforeListWhitespace = false;\n\t\t\t}\n\t\t}\n\n\t\tvar peakToFirstConditionSymbol = state.Peak([Sym.ConditionEnd]);\n\t\tpeakToFirstConditionSymbol = peakToFirstConditionSymbol.slice(peakToFirstListSymbol.length);\n\t\tvar hasNoLinebreakBetweenListAndConditionEnd = peakToFirstConditionSymbol.indexOf(Sym.Linebreak) == -1;\n\n\t\treturn foundListSymbol && \n\t\t\tareAllCharsBeforeListWhitespace && \n\t\t\thasNoLinebreakBetweenListAndConditionEnd;\n\t}\n\n\tfunction ParseCode(state) {\n\t\tif (IsConditionalBlock(state)) {\n\t\t\tstate = ParseConditional(state);\n\t\t}\n\t\telse if (environment.HasFunction(state.Peak([\" \"]))) { // TODO --- what about newlines???\n\t\t\tvar funcName = state.Peak([\" \"]);\n\t\t\tstate.Step(funcName.length);\n\t\t\tstate = ParseFunction(state, funcName);\n\t\t}\n\t\telse if (IsSequence(state.Peak([\" \", Sym.Linebreak]))) {\n\t\t\tvar sequenceType = state.Peak([\" \", Sym.Linebreak]);\n\t\t\tstate.Step(sequenceType.length);\n\t\t\tstate = ParseSequence(state, sequenceType);\n\t\t}\n\t\telse if (IsLiteral(state.Source()) || IsExpression(state.Source())) {\n\t\t\tstate = ParseExpression(state);\n\t\t}\n\t\telse {\n\t\t\tvar undefinedSrc = state.Peak([]);\n\t\t\tvar undefinedNode = new UndefinedNode(undefinedSrc);\n\t\t\tstate.curNode.AddChild(undefinedNode);\n\t\t}\n\n\t\t// just go to the end now\n\t\twhile (!state.Done()) {\n\t\t\tstate.Step();\n\t\t}\n\n\t\treturn state;\n\t}\n\n\tfunction ParseCodeBlock(state) {\n\t\tvar codeStr = state.ConsumeBlock( Sym.CodeOpen, Sym.CodeClose );\n\t\tvar codeState = new ParserState(new CodeBlockNode(), codeStr);\n\t\tcodeState = ParseCode( codeState );\n\t\tstate.curNode.AddChild( codeState.rootNode );\n\t\treturn state;\n\t}\n\n}\n\n} // Script()", "dialog.js": "function Dialog() {\n\nthis.CreateRenderer = function() {\n\treturn new DialogRenderer();\n};\n\nthis.CreateBuffer = function() {\n\treturn new DialogBuffer();\n};\n\nvar DialogRenderer = function() {\n\t// TODO : refactor this eventually? remove everything from struct.. avoid the defaults?\n\tvar textboxInfo = {\n\t\twidth : 104,\n\t\theight : 8+4+2+5, //8 for text, 4 for top-bottom padding, 2 for line padding, 5 for arrow\n\t\ttop : 12,\n\t\tleft : 12,\n\t\tbottom : 12, //for drawing it from the bottom\n\t\tpadding_vert : 2,\n\t\tpadding_horz : 4,\n\t\tarrow_height : 5,\n\t};\n\n\tvar font = null;\n\tthis.SetFont = function(f) {\n\t\tfont = f;\n\t\ttextboxInfo.height = (textboxInfo.padding_vert * 3) + (relativeFontHeight() * 2) + textboxInfo.arrow_height;\n\n\t\t// todo : clean up all the scale stuff\n\t\tvar textboxScaleW = textboxInfo.width * getTextScale();\n\t\tvar textboxScaleH = textboxInfo.height * getTextScale();\n\t\tbitsy.textbox(false, 0, 0, textboxScaleW, textboxScaleH);\n\t}\n\n\tthis.GetPixelsPerRow = function() {\n\t\treturn (textboxInfo.width - (textboxInfo.padding_horz * 2)) * getTextScale();\n\t}\n\n\t// todo : cache this value? it shouldn't really change in the middle of a game\n\tfunction getTextScale() {\n\t\treturn bitsy.textMode() === bitsy.TXT_LOREZ ? 1 : 2;\n\t}\n\n\tfunction relativeFontWidth() {\n\t\treturn Math.ceil(font.getWidth() / getTextScale());\n\t}\n\n\tfunction relativeFontHeight() {\n\t\treturn Math.ceil(font.getHeight() / getTextScale());\n\t}\n\n\tthis.ClearTextbox = function() {\n\t\tbitsy.fill(bitsy.TEXTBOX, textBackgroundIndex);\n\t};\n\n\tvar isCentered = false;\n\tthis.SetCentered = function(centered) {\n\t\tisCentered = centered;\n\t};\n\n\t// todo : I can stop doing this every frame right?\n\tthis.DrawTextbox = function() {\n\t\tif (isCentered) {\n\t\t\t// todo : will the height calculations always work?\n\t\t\tbitsy.textbox(true, textboxInfo.left, ((bitsy.VIDEO_SIZE / 2) - (textboxInfo.height / 2)));\n\t\t}\n\t\telse if (player().y < (bitsy.MAP_SIZE / 2)) {\n\t\t\t// bottom\n\t\t\tbitsy.textbox(true, textboxInfo.left, (bitsy.VIDEO_SIZE - textboxInfo.bottom - textboxInfo.height));\n\t\t}\n\t\telse {\n\t\t\t// top\n\t\t\tbitsy.textbox(true, textboxInfo.left, textboxInfo.top);\n\t\t}\n\t};\n\n\tvar arrowdata = [\n\t\t1,1,1,1,1,\n\t\t0,1,1,1,0,\n\t\t0,0,1,0,0\n\t];\n\n\tthis.DrawNextArrow = function() {\n\t\t// bitsy.log(\"draw arrow!\");\n\t\tvar text_scale = getTextScale();\n\t\tvar textboxScaleW = textboxInfo.width * text_scale;\n\t\tvar textboxScaleH = textboxInfo.height * text_scale;\n\n\t\tvar top = (textboxInfo.height - 5) * text_scale;\n\t\tvar left = (textboxInfo.width - (5 + 4)) * text_scale;\n\t\tif (textDirection === TextDirection.RightToLeft) { // RTL hack\n\t\t\tleft = 4 * text_scale;\n\t\t}\n\n\t\tfor (var y = 0; y < 3; y++) {\n\t\t\tfor (var x = 0; x < 5; x++) {\n\t\t\t\tvar i = (y * 5) + x;\n\t\t\t\tif (arrowdata[i] == 1) {\n\t\t\t\t\t//scaling nonsense\n\t\t\t\t\tfor (var sy = 0; sy < text_scale; sy++) {\n\t\t\t\t\t\tfor (var sx = 0; sx < text_scale; sx++) {\n\t\t\t\t\t\t\tvar px = left + (x * text_scale) + sx;\n\t\t\t\t\t\t\tvar py = top + (y * text_scale) + sy;\n\t\t\t\t\t\t\tbitsy.set(bitsy.TEXTBOX, (py * textboxScaleW) + px, textArrowIndex);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\tfunction drawCharData(charData, textScale, top, left, width, height, color) {\n\t\tfor (var y = 0; y < height; y++) {\n\t\t\tfor (var x = 0; x < width; x++) {\n\t\t\t\tvar i = (y * width) + x;\n\t\t\t\tif (charData[i] == 1) {\n\t\t\t\t\tbitsy.set(bitsy.TEXTBOX, ((top + y) * (textboxInfo.width * textScale)) + (left + x), color);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tthis.DrawChar = function(char, row, col, leftPos) {\n\t\t// characters with effects need to be redrawn every frame\n\t\tif (char.effectList.length > 0) {\n\t\t\tchar.redraw = true;\n\t\t}\n\n\t\t// skip characters that are already drawn and don't need to be updated\n\t\tif (!char.redraw) {\n\t\t\treturn;\n\t\t}\n\t\tchar.redraw = false;\n\n\t\tvar text_scale = getTextScale();\n\t\tvar charData = char.bitmap;\n\t\tvar top;\n\t\tvar left;\n\n\t\tif (char.effectList.length > 0) {\n\t\t\t// clear the pixels from the previous frame\n\t\t\ttop = (4 * text_scale) + (row * 2 * text_scale) + (row * font.getHeight()) + Math.floor(char.offset.y);\n\t\t\tleft = (4 * text_scale) + leftPos + Math.floor(char.offset.x);\n\t\t\tdrawCharData(charData, text_scale, top, left, char.width, char.height, textBackgroundIndex);\n\t\t}\n\n\t\t// compute render offset *every* frame\n\t\tchar.offset = {\n\t\t\tx: char.base_offset.x,\n\t\t\ty: char.base_offset.y\n\t\t};\n\t\tchar.SetPosition(row, col);\n\t\tchar.ApplyEffects(effectTime);\n\n\t\ttop = (4 * text_scale) + (row * 2 * text_scale) + (row * font.getHeight()) + Math.floor(char.offset.y);\n\t\tleft = (4 * text_scale) + leftPos + Math.floor(char.offset.x);\n\n\t\tdrawCharData(charData, text_scale, top, left, char.width, char.height, char.color);\n\n\t\t// TODO : consider for a future update?\n\t\t/*\n\t\tif (soundPlayer && char.blip && char.hasPlayedBlip != true) {\n\t\t\tsoundPlayer.playBlip(blip[char.blip], { isPitchRandomized: true });\n\t\t\tchar.hasPlayedBlip = true;\n\t\t}\n\t\t*/\n\n\t\t// call printHandler for character\n\t\tif (!disableOnPrintHandlers) {\n\t\t\tchar.OnPrint();\n\t\t}\n\t};\n\n\tvar effectTime = 0; // TODO this variable should live somewhere better\n\n\tvar shouldUpdateTextboxSettings = true;\n\tvar shouldClearTextbox = true;\n\tvar shouldDrawArrow = true;\n\n\tvar disableOnPrintHandlers = false;\n\n\tthis.Draw = function(buffer, dt, disableOnPrint) {\n\t\tdisableOnPrintHandlers = (disableOnPrint === true);\n\n\t\t// bitsy.log(\"draw dialog\");\n\t\tif (buffer.DidFlipPageThisFrame()) {\n\t\t\tshouldClearTextbox = true;\n\t\t\tshouldDrawArrow = true;\n\t\t}\n\n\t\teffectTime += dt;\n\n\t\tif (shouldUpdateTextboxSettings) {\n\t\t\tbitsy.log(\"draw textbox\");\n\t\t\tthis.DrawTextbox(); // todo : rename to something more accurate\n\t\t\tshouldUpdateTextboxSettings = false;\n\t\t}\n\n\t\tif (shouldClearTextbox) {\n\t\t\t// bitsy.log(\"clear textbox\");\n\t\t\tthis.ClearTextbox();\n\t\t\tshouldClearTextbox = false;\n\t\t}\n\n\t\t// bitsy.log(\"draw chars\");\n\t\tbuffer.ForEachActiveChar(this.DrawChar);\n\n\t\tif (buffer.CanContinue() && shouldDrawArrow) {\n\t\t\t// bitsy.log(\"draw next arrow\");\n\t\t\tthis.DrawNextArrow();\n\t\t\tshouldDrawArrow = false;\n\t\t}\n\n\t\tif (buffer.DidPageFinishThisFrame() && onPageFinish != null) {\n\t\t\tbitsy.log(\"page finished\");\n\t\t\tonPageFinish();\n\t\t}\n\n\t\t// bitsy.log(\"draw dialog end\");\n\t};\n\n\t/* this is a hook for GIF rendering */\n\tvar onPageFinish = null;\n\tthis.SetPageFinishHandler = function(handler) {\n\t\tonPageFinish = handler;\n\t};\n\n\tthis.Reset = function() {\n\t\teffectTime = 0;\n\t\t// TODO - anything else?\n\n\t\tshouldUpdateTextboxSettings = true;\n\t\tshouldClearTextbox = true;\n\t\tshouldDrawArrow = true;\n\t}\n\n\tthis.updateTextboxPosition = function() {\n\t\tshouldUpdateTextboxSettings = true;\n\t};\n\n\t// this.CharsPerRow = function() {\n\t// \treturn textboxInfo.charsPerRow;\n\t// }\n}\n\nvar DialogBuffer = function() {\n\tvar buffer = [[[]]]; // holds dialog in an array buffer\n\tvar pageIndex = 0;\n\tvar rowIndex = 0;\n\tvar charIndex = 0;\n\tvar nextCharTimer = 0;\n\tvar nextCharMaxTime = 50; // in milliseconds\n\tvar isDialogReadyToContinue = false;\n\tvar activeTextEffects = [];\n\tvar activeTextEffectParameters = [];\n\tvar font = null;\n\tvar arabicHandler = new ArabicHandler();\n\tvar onDialogEndCallbacks = [];\n\n\tthis.SetFont = function(f) {\n\t\tfont = f;\n\t};\n\n\tthis.SetPixelsPerRow = function(n) {\n\t\tpixelsPerRow = n;\n\t};\n\n\tthis.CurPage = function() { return buffer[ pageIndex ]; };\n\tthis.CurRow = function() { return this.CurPage()[ rowIndex ]; };\n\tthis.CurChar = function() { return this.CurRow()[ charIndex ]; };\n\tthis.CurPageCount = function() { return buffer.length; };\n\tthis.CurRowCount = function() { return this.CurPage().length; };\n\tthis.CurCharCount = function() { return this.CurRow().length; };\n\n\tthis.ForEachActiveChar = function(handler) { // Iterates over visible characters on the active page\n\t\tvar rowCount = rowIndex + 1;\n\t\tfor (var i = 0; i < rowCount; i++) {\n\t\t\tvar row = this.CurPage()[i];\n\t\t\tvar charCount = (i == rowIndex) ? charIndex+1 : row.length;\n\t\t\t// bitsy.log(charCount);\n\n\t\t\tvar leftPos = 0;\n\t\t\tif (textDirection === TextDirection.RightToLeft) {\n\t\t\t\tleftPos = 24 * 8; // hack -- I think this is correct?\n\t\t\t}\n\n\t\t\tfor(var j = 0; j < charCount; j++) {\n\t\t\t\tvar char = row[j];\n\t\t\t\tif(char) {\n\t\t\t\t\tif (textDirection === TextDirection.RightToLeft) {\n\t\t\t\t\t\tleftPos -= char.spacing;\n\t\t\t\t\t}\n\t\t\t\t\t// bitsy.log(j + \" \" + leftPos);\n\n\t\t\t\t\t// handler( char, i /*rowIndex*/, j /*colIndex*/ );\n\t\t\t\t\thandler(char, i /*rowIndex*/, j /*colIndex*/, leftPos)\n\n\t\t\t\t\tif (textDirection === TextDirection.LeftToRight) {\n\t\t\t\t\t\tleftPos += char.spacing;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tthis.Reset = function() {\n\t\tbuffer = [[[]]];\n\t\tpageIndex = 0;\n\t\trowIndex = 0;\n\t\tcharIndex = 0;\n\t\tisDialogReadyToContinue = false;\n\n\t\tafterManualPagebreak = false;\n\n\t\tactiveTextEffects = [];\n\n\t\tonDialogEndCallbacks = [];\n\n\t\tisActive = false;\n\t};\n\n\tthis.DoNextChar = function() {\n\t\tnextCharTimer = 0; //reset timer\n\n\t\t//time to update characters\n\t\tif (charIndex + 1 < this.CurCharCount()) {\n\t\t\t//add char to current row\n\t\t\tcharIndex++;\n\t\t}\n\t\telse if (rowIndex + 1 < this.CurRowCount()) {\n\t\t\t//start next row\n\t\t\trowIndex++;\n\t\t\tcharIndex = 0;\n\t\t}\n\t\telse {\n\t\t\t//the page is full!\n\t\t\tisDialogReadyToContinue = true;\n\t\t\tdidPageFinishThisFrame = true;\n\t\t}\n\n\t\tif (this.CurChar() != null) {\n\t\t\tif (this.CurChar().isPageBreak) {\n\t\t\t\t// special case for page break marker character!\n\t\t\t\tisDialogReadyToContinue = true;\n\t\t\t\tdidPageFinishThisFrame = true;\n\t\t\t}\n\t\t\t\n\t\t\tthis.CurChar().OnPrint(); // make sure we hit the callback before we run out of text\n\t\t}\n\t};\n\n\tthis.Update = function(dt) {\n\t\tdidPageFinishThisFrame = false;\n\t\tdidFlipPageThisFrame = false;\n\t\t// this.Draw(dt); // TODO move into a renderer object\n\t\tif (isDialogReadyToContinue) {\n\t\t\treturn; //waiting for dialog to be advanced by player\n\t\t}\n\n\t\tnextCharTimer += dt; //tick timer\n\n\t\tif (nextCharTimer > nextCharMaxTime) {\n\t\t\tthis.DoNextChar();\n\t\t}\n\t};\n\n\tvar isSkipping = false;\n\n\tthis.Skip = function() {\n\t\tbitsy.log(\"SKIPPP\");\n\t\tisSkipping = true;\n\n\t\tdidPageFinishThisFrame = false;\n\t\tdidFlipPageThisFrame = false;\n\n\t\t// add new characters until you get to the end of the current line of dialog\n\t\twhile (rowIndex < this.CurRowCount() && isSkipping) {\n\t\t\tthis.DoNextChar();\n\n\t\t\tif (isDialogReadyToContinue) {\n\t\t\t\t//make sure to push the rowIndex past the end to break out of the loop\n\t\t\t\trowIndex++;\n\t\t\t\tcharIndex = 0;\n\t\t\t}\n\t\t}\n\n\t\tif (isSkipping) {\n\t\t\trowIndex = this.CurRowCount() - 1;\n\t\t\tcharIndex = this.CurCharCount() - 1;\n\t\t}\n\n\t\tisSkipping = false;\n\t};\n\n\tthis.tryInterruptSkip = function() {\n\t\tif (isSkipping) {\n\t\t\tisSkipping = false;\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t};\n\n\tthis.FlipPage = function() {\n\t\tdidFlipPageThisFrame = true;\n\t\tisDialogReadyToContinue = false;\n\t\tpageIndex++;\n\t\trowIndex = 0;\n\t\tcharIndex = 0;\n\t}\n\n\tthis.EndDialog = function() {\n\t\tisActive = false; // no more text to show... this should be a sign to stop rendering dialog\n\n\t\tfor (var i = 0; i < onDialogEndCallbacks.length; i++) {\n\t\t\tonDialogEndCallbacks[i]();\n\t\t}\n\t}\n\n\tvar afterManualPagebreak = false; // is it bad to track this state like this?\n\n\tthis.Continue = function() {\n\t\tbitsy.log(\"CONTINUE\");\n\n\t\t// if we used a page break character to continue we need\n\t\t// to run whatever is in the script afterwards! // TODO : make this comment better\n\t\tif (this.CurChar().isPageBreak) {\n\t\t\t// hacky: always treat a page break as the end of dialog\n\t\t\t// if there's more dialog later we re-activate the dialog buffer\n\t\t\tthis.EndDialog();\n\t\t\tafterManualPagebreak = true;\n\t\t\tthis.CurChar().OnContinue();\n\t\t\treturn false;\n\t\t}\n\t\tif (pageIndex + 1 < this.CurPageCount()) {\n\t\t\tbitsy.log(\"FLIP PAGE!\");\n\t\t\t//start next page\n\t\t\tthis.FlipPage();\n\t\t\treturn true; /* hasMoreDialog */\n\t\t}\n\t\telse {\n\t\t\tbitsy.log(\"END DIALOG!\");\n\t\t\tbitsy.textbox(false);\n\t\t\t//end dialog mode\n\t\t\tthis.EndDialog();\n\t\t\treturn false; /* hasMoreDialog */\n\t\t}\n\t};\n\n\tvar isActive = false;\n\tthis.IsActive = function() { return isActive; };\n\n\tthis.OnDialogEnd = function(callback) {\n\t\tif (!isActive) {\n\t\t\tcallback();\n\t\t}\n\t\telse {\n\t\t\tonDialogEndCallbacks.push(callback);\n\t\t}\n\t}\n\n\tthis.CanContinue = function() { return isDialogReadyToContinue; };\n\n\tfunction DialogChar() {\n\t\tthis.redraw = true;\n\n\t\tthis.effectList = [];\n\t\tthis.effectParameterList = [];\n\n\t\tthis.color = textColorIndex; // white\n\t\tthis.offset = { x:0, y:0 }; // in pixels (screen pixels?)\n\n\t\tthis.col = 0;\n\t\tthis.row = 0;\n\n\t\tthis.SetPosition = function(row,col) {\n\t\t\t// bitsy.log(\"SET POS\");\n\t\t\t// bitsy.log(this);\n\t\t\tthis.row = row;\n\t\t\tthis.col = col;\n\t\t};\n\n\t\tthis.ApplyEffects = function(time) {\n\t\t\t// bitsy.log(\"APPLY EFFECTS! \" + time);\n\t\t\tfor (var i = 0; i < this.effectList.length; i++) {\n\t\t\t\tvar effectName = this.effectList[i];\n\t\t\t\t// bitsy.log(\"FX \" + effectName);\n\t\t\t\tTextEffects[effectName].doEffect(this, time, this.effectParameterList[i]);\n\t\t\t}\n\t\t};\n\n\t\tvar printHandler = null; // optional function to be called once on printing character\n\t\tthis.SetPrintHandler = function(handler) {\n\t\t\tprintHandler = handler;\n\t\t};\n\t\tthis.OnPrint = function() {\n\t\t\tif (printHandler != null) {\n\t\t\t\t// bitsy.log(\"PRINT HANDLER ---- DIALOG BUFFER\");\n\t\t\t\tprintHandler();\n\t\t\t\tprintHandler = null; // only call handler once (hacky)\n\t\t\t}\n\t\t};\n\n\t\tthis.bitmap = [];\n\t\tthis.width = 0;\n\t\tthis.height = 0;\n\t\tthis.base_offset = { // hacky name\n \t\t\tx: 0,\n\t\t\ty: 0\n\t\t};\n\t\tthis.spacing = 0;\n\t}\n\n\tfunction DialogFontChar(font, char, effectList, effectParameterList) {\n\t\tDialogChar.call(this);\n\n\t\tthis.effectList = effectList.slice(); // clone effect list (since it can change between chars)\n\t\tthis.effectParameterList = effectParameterList.slice();\n\n\t\tvar charData = font.getChar(char);\n\t\tthis.char = char;\n\t\tthis.bitmap = charData.data;\n\t\tthis.width = charData.width;\n\t\tthis.height = charData.height;\n\t\tthis.base_offset.x = charData.offset.x;\n\t\tthis.base_offset.y = charData.offset.y;\n\t\tthis.spacing = charData.spacing;\n\t\tthis.blip = null;\n\t\tthis.hasPlayedBlip = false;\n\t}\n\n\tfunction DialogDrawingChar(drawingId, effectList, effectParameterList) {\n\t\tDialogChar.call(this);\n\n\t\tthis.effectList = effectList.slice(); // clone effect list (since it can change between chars)\n\t\tthis.effectParameterList = effectParameterList.slice();\n\n\t\t// get the first frame of the drawing and flatten it\n\t\tvar drawingData = renderer.GetDrawingSource(drawingId)[0];\n\t\tvar drawingDataFlat = [];\n\t\tfor (var i = 0; i < drawingData.length; i++) {\n\t\t\tdrawingDataFlat = drawingDataFlat.concat(drawingData[i]);\n\t\t}\n\n\t\tthis.bitmap = drawingDataFlat;\n\t\tthis.width = 8;\n\t\tthis.height = 8;\n\t\tthis.spacing = 8;\n\t}\n\n\tfunction DialogScriptControlChar() {\n\t\tDialogChar.call(this);\n\n\t\tthis.width = 0;\n\t\tthis.height = 0;\n\t\tthis.spacing = 0;\n\t}\n\n\t// is a control character really the best way to handle page breaks?\n\tfunction DialogPageBreakChar() {\n\t\tDialogChar.call(this);\n\n\t\tthis.width = 0;\n\t\tthis.height = 0;\n\t\tthis.spacing = 0;\n\n\t\tthis.isPageBreak = true;\n\n\t\tvar continueHandler = null;\n\n\t\tthis.SetContinueHandler = function(handler) {\n\t\t\tcontinueHandler = handler;\n\t\t};\n\n\t\tthis.OnContinue = function() {\n\t\t\tif (continueHandler) {\n\t\t\t\tcontinueHandler();\n\t\t\t}\n\t\t};\n\t}\n\n\tfunction AddWordToCharArray(charArray, word, effectList, effectParameterList) {\n\t\t// bitsy.log(\"add char array\");\n\t\tfor (var i = 0; i < word.length; i++) {\n\t\t\tcharArray.push(new DialogFontChar(font, word[i], effectList, effectParameterList));\n\t\t}\n\t\t// bitsy.log(\"add char array end\");\n\t\treturn charArray;\n\t}\n\n\tfunction GetCharArrayWidth(charArray) {\n\t\tvar width = 0;\n\t\tfor(var i = 0; i < charArray.length; i++) {\n\t\t\twidth += charArray[i].spacing;\n\t\t}\n\t\treturn width;\n\t}\n\n\tfunction GetStringWidth(str) {\n\t\tvar width = 0;\n\t\tfor (var i = 0; i < str.length; i++) {\n\t\t\tvar charData = font.getChar(str[i]);\n\t\t\twidth += charData.spacing;\n\t\t}\n\t\treturn width;\n\t}\n\n\tvar pixelsPerRow = 192; // hard-coded fun times!!!\n\n\tthis.AddScriptReturn = function(onReturnHandler) {\n\t\tvar curPageIndex = buffer.length - 1;\n\t\tvar curRowIndex = buffer[curPageIndex].length - 1;\n\t\tvar curRowArr = buffer[curPageIndex][curRowIndex];\n\n\t\tvar controlChar = new DialogScriptControlChar();\n\t\tcontrolChar.SetPrintHandler(onReturnHandler);\n\n\t\tcurRowArr.push(controlChar);\n\n\t\tisActive = true;\n\t}\n\n\tthis.AddDrawing = function(drawingId) {\n\t\t// bitsy.log(\"DRAWING ID \" + drawingId);\n\n\t\tvar curPageIndex = buffer.length - 1;\n\t\tvar curRowIndex = buffer[curPageIndex].length - 1;\n\t\tvar curRowArr = buffer[curPageIndex][curRowIndex];\n\n\t\tvar drawingChar = new DialogDrawingChar(drawingId, activeTextEffects, activeTextEffectParameters);\n\n\t\tvar rowLength = GetCharArrayWidth(curRowArr);\n\n\t\t// TODO : clean up copy-pasted code here :/\n\t\tif (afterManualPagebreak) {\n\t\t\tthis.FlipPage(); // hacky\n\n\t\t\tbuffer[curPageIndex][curRowIndex] = curRowArr;\n\t\t\tbuffer.push([]);\n\t\t\tcurPageIndex++;\n\t\t\tbuffer[curPageIndex].push([]);\n\t\t\tcurRowIndex = 0;\n\t\t\tcurRowArr = buffer[curPageIndex][curRowIndex];\n\t\t\tcurRowArr.push(drawingChar);\n\n\t\t\tafterManualPagebreak = false;\n\t\t}\n\t\telse if (rowLength + drawingChar.spacing <= pixelsPerRow || rowLength <= 0) {\n\t\t\t//stay on same row\n\t\t\tcurRowArr.push(drawingChar);\n\t\t}\n\t\telse if (curRowIndex == 0) {\n\t\t\t//start next row\n\t\t\tbuffer[curPageIndex][curRowIndex] = curRowArr;\n\t\t\tbuffer[curPageIndex].push([]);\n\t\t\tcurRowIndex++;\n\t\t\tcurRowArr = buffer[curPageIndex][curRowIndex];\n\t\t\tcurRowArr.push(drawingChar);\n\t\t}\n\t\telse {\n\t\t\t//start next page\n\t\t\tbuffer[curPageIndex][curRowIndex] = curRowArr;\n\t\t\tbuffer.push([]);\n\t\t\tcurPageIndex++;\n\t\t\tbuffer[curPageIndex].push([]);\n\t\t\tcurRowIndex = 0;\n\t\t\tcurRowArr = buffer[curPageIndex][curRowIndex];\n\t\t\tcurRowArr.push(drawingChar);\n\t\t}\n\n\t\tisActive = true; // this feels like a bad way to do this???\n\t}\n\n\t// TODO : convert this into something that takes DialogChar arrays\n\tthis.AddText = function(textStr) {\n\t\tbitsy.log(\"ADD TEXT >>\" + textStr + \"<<\");\n\n\t\t//process dialog so it's easier to display\n\t\tvar words = textStr.split(\" \");\n\n\t\t// var curPageIndex = this.CurPageCount() - 1;\n\t\t// var curRowIndex = this.CurRowCount() - 1;\n\t\t// var curRowArr = this.CurRow();\n\n\t\tvar curPageIndex = buffer.length - 1;\n\t\tvar curRowIndex = buffer[curPageIndex].length - 1;\n\t\tvar curRowArr = buffer[curPageIndex][curRowIndex];\n\n\t\tfor (var i = 0; i < words.length; i++) {\n\t\t\tvar word = words[i];\n\t\t\tif (arabicHandler.ContainsArabicCharacters(word)) {\n\t\t\t\tword = arabicHandler.ShapeArabicCharacters(word);\n\t\t\t}\n\n\t\t\tvar wordWithPrecedingSpace = ((i == 0) ? \"\" : \" \") + word;\n\t\t\tvar wordLength = GetStringWidth(wordWithPrecedingSpace);\n\n\t\t\tvar rowLength = GetCharArrayWidth(curRowArr);\n\n\t\t\tif (afterManualPagebreak) {\n\t\t\t\tthis.FlipPage();\n\n\t\t\t\t// hacky copied bit for page breaks\n\t\t\t\tbuffer[curPageIndex][curRowIndex] = curRowArr;\n\t\t\t\tbuffer.push([]);\n\t\t\t\tcurPageIndex++;\n\t\t\t\tbuffer[curPageIndex].push([]);\n\t\t\t\tcurRowIndex = 0;\n\t\t\t\tcurRowArr = buffer[curPageIndex][curRowIndex];\n\t\t\t\tcurRowArr = AddWordToCharArray(curRowArr, word, activeTextEffects, activeTextEffectParameters);\n\n\t\t\t\tafterManualPagebreak = false;\n\t\t\t}\n\t\t\telse if (rowLength + wordLength <= pixelsPerRow || rowLength <= 0) {\n\t\t\t\t//stay on same row\n\t\t\t\tcurRowArr = AddWordToCharArray(curRowArr, wordWithPrecedingSpace, activeTextEffects, activeTextEffectParameters);\n\t\t\t}\n\t\t\telse if (curRowIndex == 0) {\n\t\t\t\t//start next row\n\t\t\t\tbuffer[curPageIndex][curRowIndex] = curRowArr;\n\t\t\t\tbuffer[curPageIndex].push([]);\n\t\t\t\tcurRowIndex++;\n\t\t\t\tcurRowArr = buffer[curPageIndex][curRowIndex];\n\t\t\t\tcurRowArr = AddWordToCharArray(curRowArr, word, activeTextEffects, activeTextEffectParameters);\n\t\t\t}\n\t\t\telse {\n\t\t\t\t//start next page\n\t\t\t\tbuffer[curPageIndex][curRowIndex] = curRowArr;\n\t\t\t\tbuffer.push([]);\n\t\t\t\tcurPageIndex++;\n\t\t\t\tbuffer[curPageIndex].push([]);\n\t\t\t\tcurRowIndex = 0;\n\t\t\t\tcurRowArr = buffer[curPageIndex][curRowIndex];\n\t\t\t\tcurRowArr = AddWordToCharArray(curRowArr, word, activeTextEffects, activeTextEffectParameters);\n\t\t\t}\n\t\t}\n\n\t\t//destroy any empty stuff\n\t\tvar lastPage = buffer[buffer.length-1];\n\t\tvar lastRow = lastPage[lastPage.length-1];\n\t\tif (lastRow.length == 0) {\n\t\t\tlastPage.splice(lastPage.length-1, 1);\n\t\t}\n\t\tif (lastPage.length == 0) {\n\t\t\tbuffer.splice(buffer.length-1, 1);\n\t\t}\n\n\t\t//finish up \n\t\tlastPage = buffer[buffer.length-1];\n\t\tlastRow = lastPage[lastPage.length-1];\n\t\tif (lastRow.length > 0) {\n\t\t\tvar lastChar = lastRow[lastRow.length-1];\n\t\t}\n\n\t\t// bitsy.log(buffer);\n\n\t\tbitsy.log(\"add text finished\");\n\n\t\tisActive = true;\n\t};\n\n\tthis.AddLinebreak = function() {\n\t\tvar lastPage = buffer[buffer.length-1];\n\t\tif (lastPage.length <= 1) {\n\t\t\t// bitsy.log(\"LINEBREAK - NEW ROW \");\n\t\t\t// add new row\n\t\t\tlastPage.push([]);\n\t\t}\n\t\telse {\n\t\t\t// add new page\n\t\t\tbuffer.push([[]]);\n\t\t}\n\t\t// bitsy.log(buffer);\n\n\t\tisActive = true;\n\t}\n\n\tthis.AddPagebreak = function(onReturnHandler) {\n\t\tvar curPageIndex = buffer.length - 1;\n\t\tvar curRowIndex = buffer[curPageIndex].length - 1;\n\t\tvar curRowArr = buffer[curPageIndex][curRowIndex];\n\n\t\t// need to actually create a whole new page if following another pagebreak character\n\t\tif (afterManualPagebreak) {\n\t\t\tthis.FlipPage(); // hacky\n\n\t\t\tbuffer[curPageIndex][curRowIndex] = curRowArr;\n\t\t\tbuffer.push([]);\n\t\t\tcurPageIndex++;\n\t\t\tbuffer[curPageIndex].push([]);\n\t\t\tcurRowIndex = 0;\n\t\t\tcurRowArr = buffer[curPageIndex][curRowIndex];\n\n\t\t\tafterManualPagebreak = false;\n\t\t}\n\n\t\tvar pagebreakChar = new DialogPageBreakChar();\n\t\tpagebreakChar.SetContinueHandler(onReturnHandler);\n\n\t\tcurRowArr.push(pagebreakChar);\n\n\t\tisActive = true;\n\t}\n\n\tthis.hasTextEffect = function(name) {\n\t\treturn activeTextEffects.indexOf(name) != -1;\n\t};\n\n\tthis.pushTextEffect = function(name, parameters) {\n\t\tactiveTextEffects.push(name);\n\t\tactiveTextEffectParameters.push(parameters);\n\t};\n\n\tthis.popTextEffect = function(name) {\n\t\tvar i = activeTextEffects.lastIndexOf(name);\n\t\tactiveTextEffects.splice(i, 1);\n\t\tactiveTextEffectParameters.splice(i, 1);\n\t};\n\n\t/* this is a hook for GIF rendering */\n\tvar didPageFinishThisFrame = false;\n\tthis.DidPageFinishThisFrame = function(){ return didPageFinishThisFrame; };\n\n\tvar didFlipPageThisFrame = false;\n\tthis.DidFlipPageThisFrame = function(){ return didFlipPageThisFrame; };\n\n\t// this.SetCharsPerRow = function(num){ charsPerRow = num; }; // hacky\n};\n\n/* ARABIC */\nvar ArabicHandler = function() {\n\n\tvar arabicCharStart = 0x0621;\n\tvar arabicCharEnd = 0x064E;\n\n\tvar CharacterForm = {\n\t\tIsolated : 0,\n\t\tFinal : 1,\n\t\tInitial : 2,\n\t\tMiddle : 3\n\t};\n\n\t// map glyphs to their character forms\n\tvar glyphForms = {\n\t\t/*\t\t Isolated, Final, Initial, Middle Forms\t*/\n\t\t0x0621: [0xFE80,0xFE80,0xFE80,0xFE80], /* HAMZA */ \n\t\t0x0622: [0xFE81,0xFE82,0xFE81,0xFE82], /* ALEF WITH MADDA ABOVE */ \n\t\t0x0623: [0xFE83,0xFE84,0xFE83,0xFE84], /* ALEF WITH HAMZA ABOVE */ \n\t\t0x0624: [0xFE85,0xFE86,0xFE85,0xFE86], /* WAW WITH HAMZA ABOVE */ \n\t\t0x0625: [0xFE87,0xFE88,0xFE87,0xFE88], /* ALEF WITH HAMZA BELOW */ \n\t\t0x0626: [0xFE89,0xFE8A,0xFE8B,0xFE8C], /* YEH WITH HAMZA ABOVE */ \n\t\t0x0627: [0xFE8D,0xFE8E,0xFE8D,0xFE8E], /* ALEF */ \n\t\t0x0628: [0xFE8F,0xFE90,0xFE91,0xFE92], /* BEH */ \n\t\t0x0629: [0xFE93,0xFE94,0xFE93,0xFE94], /* TEH MARBUTA */ \n\t\t0x062A: [0xFE95,0xFE96,0xFE97,0xFE98], /* TEH */ \n\t\t0x062B: [0xFE99,0xFE9A,0xFE9B,0xFE9C], /* THEH */ \n\t\t0x062C: [0xFE9D,0xFE9E,0xFE9F,0xFEA0], /* JEEM */ \n\t\t0x062D: [0xFEA1,0xFEA2,0xFEA3,0xFEA4], /* HAH */ \n\t\t0x062E: [0xFEA5,0xFEA6,0xFEA7,0xFEA8], /* KHAH */ \n\t\t0x062F: [0xFEA9,0xFEAA,0xFEA9,0xFEAA], /* DAL */ \n\t\t0x0630: [0xFEAB,0xFEAC,0xFEAB,0xFEAC], /* THAL */ \n\t\t0x0631: [0xFEAD,0xFEAE,0xFEAD,0xFEAE], /* RAA */ \n\t\t0x0632: [0xFEAF,0xFEB0,0xFEAF,0xFEB0], /* ZAIN */ \n\t\t0x0633: [0xFEB1,0xFEB2,0xFEB3,0xFEB4], /* SEEN */ \n\t\t0x0634: [0xFEB5,0xFEB6,0xFEB7,0xFEB8], /* SHEEN */ \n\t\t0x0635: [0xFEB9,0xFEBA,0xFEBB,0xFEBC], /* SAD */ \n\t\t0x0636: [0xFEBD,0xFEBE,0xFEBF,0xFEC0], /* DAD */ \n\t\t0x0637: [0xFEC1,0xFEC2,0xFEC3,0xFEC4], /* TAH */ \n\t\t0x0638: [0xFEC5,0xFEC6,0xFEC7,0xFEC8], /* ZAH */ \n\t\t0x0639: [0xFEC9,0xFECA,0xFECB,0xFECC], /* AIN */ \n\t\t0x063A: [0xFECD,0xFECE,0xFECF,0xFED0], /* GHAIN */ \n\t\t0x063B: [0x0000,0x0000,0x0000,0x0000], /* space */\n\t\t0x063C: [0x0000,0x0000,0x0000,0x0000], /* space */\n\t\t0x063D: [0x0000,0x0000,0x0000,0x0000], /* space */\n\t\t0x063E: [0x0000,0x0000,0x0000,0x0000], /* space */\n\t\t0x063F: [0x0000,0x0000,0x0000,0x0000], /* space */\n\t\t0x0640: [0x0640,0x0640,0x0640,0x0640], /* TATWEEL */ \n\t\t0x0641: [0xFED1,0xFED2,0xFED3,0xFED4], /* FAA */ \n\t\t0x0642: [0xFED5,0xFED6,0xFED7,0xFED8], /* QAF */ \n\t\t0x0643: [0xFED9,0xFEDA,0xFEDB,0xFEDC], /* KAF */ \n\t\t0x0644: [0xFEDD,0xFEDE,0xFEDF,0xFEE0], /* LAM */ \n\t\t0x0645: [0xFEE1,0xFEE2,0xFEE3,0xFEE4], /* MEEM */ \n\t\t0x0646: [0xFEE5,0xFEE6,0xFEE7,0xFEE8], /* NOON */ \n\t\t0x0647: [0xFEE9,0xFEEA,0xFEEB,0xFEEC], /* HEH */ \n\t\t0x0648: [0xFEED,0xFEEE,0xFEED,0xFEEE], /* WAW */ \n\t\t0x0649: [0xFEEF,0xFEF0,0xFBE8,0xFBE9], /* ALEF MAKSURA */ \n\t\t0x064A: [0xFEF1,0xFEF2,0xFEF3,0xFEF4], /* YEH */ \n\t\t0x064B: [0xFEF5,0xFEF6,0xFEF5,0xFEF6], /* LAM ALEF MADD*/\n\t\t0x064C: [0xFEF7,0xFEF8,0xFEF7,0xFEF8], /* LAM ALEF HAMZA ABOVE*/\n\t\t0x064D: [0xFEF9,0xFEFa,0xFEF9,0xFEFa], /* LAM ALEF HAMZA BELOW*/\n\t\t0x064E: [0xFEFb,0xFEFc,0xFEFb,0xFEFc], /* LAM ALEF */\n\t};\n\n\tvar disconnectedCharacters = [0x0621,0x0622,0x0623,0x0624,0x0625,0x0627,0x062f,0x0630,0x0631,0x0632,0x0648,0x0649,0x064b,0x064c,0x064d,0x064e];\n\n\tfunction IsArabicCharacter(char) {\n\t\tvar code = char.charCodeAt(0);\n\t\treturn (code >= arabicCharStart && code <= arabicCharEnd);\n\t}\n\n\tfunction ContainsArabicCharacters(word) {\n\t\tfor (var i = 0; i < word.length; i++) {\n\t\t\tif (IsArabicCharacter(word[i])) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\tfunction IsDisconnectedCharacter(char) {\n\t\tvar code = char.charCodeAt(0);\n\t\treturn disconnectedCharacters.indexOf(code) != -1;\n\t}\n\n\tfunction ShapeArabicCharacters(word) {\n\t\tvar shapedWord = \"\";\n\n\t\tfor (var i = 0; i < word.length; i++) {\n\t\t\tif (!IsArabicCharacter(word[i])) {\n\t\t\t\tshapedWord += word[i];\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tvar connectedToPreviousChar = i-1 >= 0 && IsArabicCharacter(word[i-1]) && !IsDisconnectedCharacter(word[i-1]);\n\n\t\t\tvar connectedToNextChar = i+1 < word.length && IsArabicCharacter(word[i+1]) && !IsDisconnectedCharacter(word[i]);\n\n\t\t\tvar form;\n\t\t\tif (!connectedToPreviousChar && !connectedToNextChar) {\n\t\t\t\tform = CharacterForm.Isolated;\n\t\t\t}\n\t\t\telse if (connectedToPreviousChar && !connectedToNextChar) {\n\t\t\t\tform = CharacterForm.Final;\n\t\t\t}\n\t\t\telse if (!connectedToPreviousChar && connectedToNextChar) {\n\t\t\t\tform = CharacterForm.Initial;\n\t\t\t}\n\t\t\telse if (connectedToPreviousChar && connectedToNextChar) {\n\t\t\t\tform = CharacterForm.Middle;\n\t\t\t}\n\n\t\t\tvar code = word[i].charCodeAt(0);\n\n\t\t\t// handle lam alef special case\n\t\t\tif (code == 0x0644 && connectedToNextChar) {\n\t\t\t\tvar nextCode = word[i+1].charCodeAt(0);\n\t\t\t\tvar specialCode = null;\n\t\t\t\tif (nextCode == 0x0622) {\n\t\t\t\t\t// alef madd\n\t\t\t\t\tspecialCode = glyphForms[0x064b][form];\n\t\t\t\t}\n\t\t\t\telse if (nextCode == 0x0623) {\n\t\t\t\t\t// hamza above\n\t\t\t\t\tspecialCode = glyphForms[0x064c][form];\n\t\t\t\t}\n\t\t\t\telse if (nextCode == 0x0625) {\n\t\t\t\t\t// hamza below\n\t\t\t\t\tspecialCode = glyphForms[0x064d][form];\n\t\t\t\t}\n\t\t\t\telse if (nextCode == 0x0627) {\n\t\t\t\t\t// alef\n\t\t\t\t\tspecialCode = glyphForms[0x064e][form];\n\t\t\t\t}\n\n\t\t\t\tif (specialCode != null) {\n\t\t\t\t\tshapedWord += String.fromCharCode(specialCode);\n\t\t\t\t\ti++; // skip a step\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// hacky?\n\t\t\tif (form === CharacterForm.Isolated) {\n\t\t\t\tshapedWord += word[i];\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tvar shapedCode = glyphForms[code][form];\n\t\t\tshapedWord += String.fromCharCode(shapedCode);\n\t\t}\n\n\t\treturn shapedWord;\n\t}\n\n\tthis.ContainsArabicCharacters = ContainsArabicCharacters;\n\tthis.ShapeArabicCharacters = ShapeArabicCharacters;\n}\n\n/* TEXT EFFECTS */\nvar TextEffects = {};\n\nfunction RainbowEffect() {\n\tfunction positiveModulo(number, divisor) {\n\t\treturn ((number % divisor) + divisor) % divisor;\n\t}\n\n\tthis.doEffect = function(char, time, parameters) {\n\t\tchar.color = rainbowColorStartIndex + Math.floor(positiveModulo((time / 100) - char.col * 0.5, rainbowColorCount));\n\t};\n}\n\nTextEffects[\"rbw\"] = new RainbowEffect();\n\nfunction ColorEffect(index) {\n\tthis.doEffect = function(char, time, parameters) {\n\t\tif (parameters && parameters.length > 0) {\n\t\t\tchar.color = tileColorStartIndex + parameters[0];\n\t\t}\n\t\telse {\n\t\t\tchar.color = tileColorStartIndex + index;\n\t\t}\n\t};\n}\n\nTextEffects[\"clr\"] = new ColorEffect();\nTextEffects[\"clr1\"] = new ColorEffect(0);\nTextEffects[\"clr2\"] = new ColorEffect(1);\nTextEffects[\"clr3\"] = new ColorEffect(2);\n\nfunction WavyEffect() {\n\tthis.doEffect = function(char, time, parameters) {\n\t\tchar.offset.y += Math.sin((time / 250) - (char.col / 2)) * 2;\n\t};\n}\n\nTextEffects[\"wvy\"] = new WavyEffect();\n\nfunction ShakyEffect() {\n\tfunction disturb(func, time, offset, mult1, mult2) {\n\t\treturn func((time * mult1) - (offset * mult2));\n\t}\n\n\tthis.doEffect = function(char, time, parameters) {\n\t\tchar.offset.y += 1.5\n\t\t\t\t\t\t* disturb(Math.sin, time, char.col, 0.1, 0.5)\n\t\t\t\t\t\t* disturb(Math.cos, time, char.col, 0.3, 0.2)\n\t\t\t\t\t\t* disturb(Math.sin, time, char.row, 2.0, 1.0);\n\t\tchar.offset.x += 1.5\n\t\t\t\t\t\t* disturb(Math.cos, time, char.row, 0.1, 1.0)\n\t\t\t\t\t\t* disturb(Math.sin, time, char.col, 3.0, 0.7)\n\t\t\t\t\t\t* disturb(Math.cos, time, char.col, 0.2, 0.3);\n\t};\n}\n\nTextEffects[\"shk\"] = new ShakyEffect();\n\n/*\n// TODO : maybe use this in a future update?\nfunction YakEffect() {\n\tthis.doEffect = function(char, time, parameters) {\n\t\tif (char.char != \" \") {\n\t\t\tchar.blip = parameters[0];\n\t\t}\n\t};\n}\n\nTextEffects[\"yak\"] = new YakEffect();\n*/\n\nvar DebugHighlightEffect = function() {\n\tthis.doEffect = function(char, time, parameters) {\n\t\tchar.color = tileColorStartIndex;\n\t};\n}\n\nTextEffects[\"_debug_highlight\"] = new DebugHighlightEffect();\n\n} // Dialog()", - "renderer.js": "function TileRenderer() {\nbitsy.log(\"!!!!! NEW TILE RENDERER\");\n\nvar drawingCache = {\n\tsource: {},\n\trender: {},\n};\n\n// var debugRenderCount = 0;\n\nfunction createRenderCacheId(drawingId, colorIndex) {\n\treturn drawingId + \"_\" + colorIndex;\n}\n\nfunction renderDrawing(drawing) {\n\t// debugRenderCount++;\n\t// bitsy.log(\"RENDER COUNT \" + debugRenderCount);\n\n\tvar col = drawing.col;\n\tvar bgc = drawing.bgc;\n\tvar drwId = drawing.drw;\n\tvar drawingFrames = drawingCache.source[drwId];\n\n\t// initialize render cache entry\n\tvar cacheId = createRenderCacheId(drwId, col);\n\tif (drawingCache.render[cacheId] === undefined) {\n\t\t// initialize array of frames for drawing\n\t\tdrawingCache.render[cacheId] = [];\n\t}\n\n\tfor (var i = 0; i < drawingFrames.length; i++) {\n\t\tvar frameData = drawingFrames[i];\n\t\tvar frameTileId = renderTileFromDrawingData(frameData, col, bgc);\n\t\tdrawingCache.render[cacheId].push(frameTileId);\n\t}\n}\n\nfunction renderTileFromDrawingData(drawingData, col, bgc) {\n\tvar tileId = bitsy.tile();\n\n\tvar backgroundColor = tileColorStartIndex + bgc;\n\tvar foregroundColor = tileColorStartIndex + col;\n\n\tbitsy.fill(tileId, backgroundColor);\n\n\tfor (var y = 0; y < bitsy.TILE_SIZE; y++) {\n\t\tfor (var x = 0; x < bitsy.TILE_SIZE; x++) {\n\t\t\tvar px = drawingData[y][x];\n\t\t\tif (px === 1) {\n\t\t\t\tbitsy.set(tileId, (y * bitsy.TILE_SIZE) + x, foregroundColor);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn tileId;\n}\n\n// TODO : move into core\nfunction undefinedOrNull(x) {\n\treturn x === undefined || x === null;\n}\n\nfunction isDrawingRendered(drawing) {\n\tvar cacheId = createRenderCacheId(drawing.drw, drawing.col);\n\treturn drawingCache.render[cacheId] != undefined;\n}\n\nfunction getRenderedDrawingFrames(drawing) {\n\tvar cacheId = createRenderCacheId(drawing.drw, drawing.col);\n\treturn drawingCache.render[cacheId];\n}\n\nfunction getDrawingFrameTileId(drawing, frameOverride) {\n\tvar frameIndex = 0;\n\n\tif (drawing != null && drawing.animation.isAnimated) {\n\t\tif (frameOverride != undefined && frameOverride != null) {\n\t\t\tframeIndex = frameOverride;\n\t\t}\n\t\telse {\n\t\t\tframeIndex = drawing.animation.frameIndex;\n\t\t}\n\t}\n\n\treturn getRenderedDrawingFrames(drawing)[frameIndex];\n}\n\nfunction getOrRenderDrawingFrame(drawing, frameOverride) {\n\t// bitsy.log(\"frame render: \" + drawing.type + \" \" + drawing.id + \" f:\" + frameOverride);\n\n\tif (!isDrawingRendered(drawing)) {\n\t\tbitsy.log(\"frame render: doesn't exist \" + drawing.id);\n\t\trenderDrawing(drawing);\n\t}\n\n\treturn getDrawingFrameTileId(drawing, frameOverride);\n}\n\nfunction deleteRenders(drawingId) {\n\tfor (var cacheId in drawingCache.render) {\n\t\tif (cacheId.indexOf(drawingId) === 0) {\n\t\t\tvar tiles = drawingCache.render[cacheId];\n\t\t\tfor (var i = 0; i < tiles.length; i++) {\n\t\t\t\tbitsy.delete(tiles[i]);\n\t\t\t}\n\t\t\tdelete drawingCache.render[cacheId];\n\t\t}\n\t}\n}\n\n/* PUBLIC INTERFACE */\nthis.GetDrawingFrame = getOrRenderDrawingFrame;\n\n// todo : leave individual get and set stuff for now - should I remove later?\n// todo : better name for function?\nthis.SetDrawings = function(drawingSource) {\n\tdrawingCache.source = drawingSource;\n\t// need to reset entire render cache when all the drawings are changed\n\tdrawingCache.render = {};\n};\n\nthis.SetDrawingSource = function(drawingId, drawingData) {\n\tdeleteRenders(drawingId);\n\tdrawingCache.source[drawingId] = drawingData;\n};\n\nthis.GetDrawingSource = function(drawingId) {\n\treturn drawingCache.source[drawingId];\n};\n\nthis.GetFrameCount = function(drawingId) {\n\treturn drawingCache.source[drawingId].length;\n};\n\n// todo : forceReset option is hacky?\nthis.ClearCache = function(forceReset) {\n\tif (forceReset === undefined || forceReset === true) {\n\t\t// delete all tiles from system memory before clearing the cache\n\t\tfor (var cacheId in drawingCache.render) {\n\t\t\tvar tiles = drawingCache.render[cacheId];\n\t\t\tfor (var i = 0; i < tiles.length; i++) {\n\t\t\t\tbitsy.delete(tiles[i]);\n\t\t\t}\n\t\t}\n\t}\n\n\tdrawingCache.render = {};\n};\n\nthis.deleteDrawing = deleteRenders;\n\n} // Renderer()", - "bitsy.js": "/* WORLD DATA */\nvar room = {};\nvar tile = {};\nvar sprite = {};\nvar item = {};\nvar dialog = {};\nvar end = {}; // for backwards compatibility\nvar palette = { // start off with a default palette\n\t\t\"default\" : {\n\t\t\tname : \"default\",\n\t\t\tcolors : [[0,0,0],[255,255,255],[255,255,255]]\n\t\t}\n\t};\nvar variable = {}; // these are starting variable values -- they don't update (or I don't think they will)\nvar tune = {};\nvar blip = {};\nvar playerId = \"A\";\nvar fontName = defaultFontName;\nvar textDirection = TextDirection.LeftToRight;\n\n/* NAME-TO-ID MAPS */\nvar names = {\n\troom : {},\n\ttile : {},\n\tsprite : {},\n\titem : {},\n\tdialog : {},\n\tpalette : {},\n\ttune : {},\n\tblip : {},\n};\n\n// todo : this is basically a copy of the one in world.js - can I remove it?\nfunction updateNamesFromCurData() {\n\n\tfunction createNameMap(objectStore) {\n\t\tvar map = {};\n\n\t\tfor (id in objectStore) {\n\t\t\tif (objectStore[id].name != undefined && objectStore[id].name != null) {\n\t\t\t\tmap[objectStore[id].name] = id;\n\t\t\t}\n\t\t}\n\n\t\treturn map;\n\t}\n\n\tnames.room = createNameMap(room);\n\tnames.tile = createNameMap(tile);\n\tnames.sprite = createNameMap(sprite);\n\tnames.item = createNameMap(item);\n\tnames.dialog = createNameMap(dialog);\n\tnames.palette = createNameMap(palette);\n\tnames.tune = createNameMap(tune);\n\tnames.blip = createNameMap(blip);\n}\n\n/* GAME STATE */\nvar state = {}\nfunction resetGameState() {\n\tstate.room = \"0\";\n\tstate.ava = playerId; // avatar appearance override\n\tstate.pal = \"0\"; // current palette id\n\tstate.tune = \"0\"; // current tune id (\"0\" === off)\n\tstate.exits = []; // exits in current room\n\tstate.endings = []; // endings in current room\n}\n\n// title helper functions\nfunction getTitle() {\n\treturn dialog[titleDialogId].src;\n}\nfunction setTitle(titleSrc) {\n\tdialog[titleDialogId] = { src:titleSrc, name:null };\n}\n\n/* FLAGS */\nvar flags = createDefaultFlags();\n\n// feature flags for testing purposes\nvar engineFeatureFlags = {\n\tisSoundEnabled : true,\n\tisFontEnabled : true,\n\tisTransitionEnabled : true,\n\tisScriptEnabled : true,\n\tisDialogEnabled : true,\n\tisRendererEnabled : true,\n};\n\nfunction clearGameData() {\n\troom = {};\n\ttile = {};\n\tsprite = {};\n\titem = {};\n\tdialog = {};\n\tpalette = { //start off with a default palette\n\t\t\"default\" : {\n\t\t\tname : \"default\",\n\t\t\tcolors : [[0,0,0],[255,255,255],[255,255,255]]\n\t\t}\n\t};\n\tisEnding = false; //todo - correct place for this?\n\tvariable = {};\n\n\tupdateNamesFromCurData();\n\n\tfontName = defaultFontName; // TODO : reset font manager too?\n\ttextDirection = TextDirection.LeftToRight;\n\n\tresetGameState();\n\n\tisGameLoaded = false;\n\tisGameOver = false;\n}\n\n// engine event hooks for the editor\nvar onInventoryChanged = null;\nvar onVariableChanged = null;\nvar onGameReset = null;\nvar onInitRoom = null;\n\nvar isPlayerEmbeddedInEditor = false;\n\nvar renderer;\nif (engineFeatureFlags.isRendererEnabled) {\n\trenderer = new TileRenderer();\n}\n\nvar curGameData = null;\nvar curDefaultFontData = null;\n\nvar isGameLoaded = false;\nvar isGameOver = false;\n\nfunction load_game(gameData, defaultFontData, startWithTitle) {\n\t// bitsy.log(\"game data in: \\n\" + gameData);\n\n\tcurGameData = gameData; //remember the current game (used to reset the game)\n\n\tif (dialogBuffer) {\n\t\tdialogBuffer.Reset();\n\t}\n\n\tif (scriptInterpreter) {\n\t\tscriptInterpreter.ResetEnvironment(); // ensures variables are reset -- is this the best way?\n\t}\n\n\tloadWorldFromGameData(gameData);\n\n\tbitsy.log(\"world loaded\");\n\n\tif (fontManager && !isPlayerEmbeddedInEditor && defaultFontData) {\n\t\tbitsy.log(\"load font\");\n\n\t\tcurDefaultFontData = defaultFontData; // store for resetting game\n\n\t\t// todo : consider replacing this with a more general system for requesting resources from the system?\n\t\t// hack to ensure default font is available\n\t\tfontManager.AddResource(defaultFontName + fontManager.GetExtension(), defaultFontData);\n\n\t\tbitsy.log(\"load font end\");\n\t}\n\n\t// request text mode\n\tif (flags.TXT_MODE === 1) {\n\t\tbitsy.textMode(bitsy.TXT_LOREZ);\n\t}\n\telse {\n\t\t// default to 2x scale for text rendering\n\t\tbitsy.textMode(bitsy.TXT_HIREZ);\n\t}\n\n\tif (fontManager && dialogBuffer) {\n\t\tbitsy.log(\"get font\");\n\n\t\tvar font = fontManager.Get( fontName );\n\t\tdialogBuffer.SetFont(font);\n\t\tdialogRenderer.SetFont(font);\n\n\t\tbitsy.log(\"get font end\");\n\t}\n\n\tif (dialogBuffer) {\n\t\t// this feels a little silly to me - oh well??\n\t\tdialogBuffer.SetPixelsPerRow(dialogRenderer.GetPixelsPerRow());\n\t}\n\n\tsetInitialVariables();\n\n\tbitsy.log(\"ready\");\n\n\tonready(startWithTitle);\n\n\tisGameLoaded = true;\n}\n\nfunction loadWorldFromGameData(gameData) {\n\tbitsy.log(\"load world from game data\");\n\n\tvar world = parseWorld(gameData);\n\n\tbitsy.log(\"parse world done\");\n\n\t// move world data into global scope\n\tpalette = world.palette;\n\troom = world.room;\n\ttile = world.tile;\n\tsprite = world.sprite;\n\titem = world.item;\n\tdialog = world.dialog;\n\tend = world.end; // back compat endings\n\tvariable = world.variable;\n\tfontName = world.fontName;\n\ttextDirection = world.textDirection;\n\ttune = world.tune;\n\tblip = world.blip;\n\tflags = world.flags;\n\tnames = world.names;\n\n\tif (renderer) {\n\t\trenderer.SetDrawings(world.drawings);\n\t}\n\n\t// find starting room and initialize it\n\tvar roomIds = Object.keys(room);\n\n\tif (player() != undefined && player().room != null && roomIds.indexOf(player().room) != -1) {\n\t\t// player has valid room\n\t\tstate.room = player().room;\n\t}\n\telse if (roomIds.length > 0) {\n\t\t// player not in any room! what the heck\n\t\tstate.room = roomIds[0];\n\t}\n\telse {\n\t\t// uh oh there are no rooms I guess???\n\t\tstate.room = null;\n\t}\n\n\tif (state.room != null) {\n\t\tbitsy.log(\"INIT ROOM \" + state.room);\n\t\tinitRoom(state.room);\n\t}\n}\n\nfunction reset_cur_game() {\n\tif (curGameData == null) {\n\t\treturn; //can't reset if we don't have the game data\n\t}\n\n\tstopGame();\n\tclearGameData();\n\n\tif (isPlayerEmbeddedInEditor && onGameReset != null) {\n\t\tonGameReset();\n\t}\n}\n\nfunction onready(startWithTitle) {\n\tbitsy.log(\"game ready!\");\n\n\tif (startWithTitle === undefined || startWithTitle === null) {\n\t\tstartWithTitle = true;\n\t}\n\n\tif (startWithTitle) { // used by editor \n\t\tstartNarrating(getTitle());\n\t}\n}\n\nfunction setInitialVariables() {\n\tif (!scriptInterpreter) {\n\t\treturn;\n\t}\n\n\tfor(id in variable) {\n\t\tvar value = variable[id]; // default to string\n\t\tif(value === \"true\") {\n\t\t\tvalue = true;\n\t\t}\n\t\telse if(value === \"false\") {\n\t\t\tvalue = false;\n\t\t}\n\t\telse if(!isNaN(parseFloat(value))) {\n\t\t\tvalue = parseFloat(value);\n\t\t}\n\t\tscriptInterpreter.SetVariable(id,value);\n\t}\n\tscriptInterpreter.SetOnVariableChangeHandler( onVariableChanged );\n}\n\nfunction getOffset(evt) {\n\tvar offset = { x:0, y:0 };\n\n\tvar el = evt.target;\n\tvar rect = el.getBoundingClientRect();\n\n\toffset.x += rect.left + el.scrollLeft;\n\toffset.y += rect.top + el.scrollTop;\n\n\toffset.x = evt.clientX - offset.x;\n\toffset.y = evt.clientY - offset.y;\n\n\treturn offset;\n}\n\nfunction stopGame() {\n\tif (soundPlayer) {\n\t\tsoundPlayer.stopTune();\n\t}\n\tbitsy.log(\"stop GAME!\");\n}\n\nfunction update(dt) {\n\tif (!isGameLoaded) {\n\t\tload_game(bitsy.getGameData(), bitsy.getFontData());\n\t}\n\n\tif (state.room == null) {\n\t\t// in the special case where there is no valid room, end the game\n\t\tstartNarrating( \"\", true /*isEnding*/ );\n\t}\n\n\tif (!transition || !transition.IsTransitionActive()) {\n\t\tupdateInput();\n\t}\n\n\tif (transition && transition.IsTransitionActive()) {\n\t\t// transition animation takes over everything!\n\t\ttransition.UpdateTransition(dt);\n\t}\n\telse {\n\t\tif (bitsy.graphicsMode() != bitsy.GFX_MAP) {\n\t\t\tbitsy.graphicsMode(bitsy.GFX_MAP);\n\t\t}\n\n\t\tif (soundPlayer) {\n\t\t\tsoundPlayer.update(dt);\n\t\t}\n\n\t\tif (!isNarrating && !isEnding) {\n\t\t\t// draw world if game has begun\n\t\t\tvar didAnimate = updateAnimation(dt);\n\n\t\t\t// test whether player moved so we can redraw just the avatar\n\t\t\tplayerCurX = player().x;\n\t\t\tplayerCurY = player().y;\n\t\t\tvar didPlayerMove = (playerPrevX != playerCurX) || (playerPrevY != playerCurY);\n\n\t\t\tdrawRoom(room[state.room], { redrawAnimated: didAnimate, redrawAvatar: didPlayerMove });\n\n\t\t\t// store player's position for next frame\n\t\t\tplayerPrevX = playerCurX;\n\t\t\tplayerPrevY = playerCurY;\n\t\t}\n\t\telse {\n\t\t\tclearRoom();\n\t\t}\n\n\t\tif (dialogBuffer && dialogBuffer.IsActive() && !(soundPlayer && soundPlayer.isBlipPlaying())) {\n\t\t\t// bitsy.log(\"update dialog\");\n\t\t\t// bitsy.log(\"renderer\");\n\t\t\tdialogRenderer.Draw(dialogBuffer, dt);\n\t\t\t// bitsy.log(\"buffer\");\n\t\t\tdialogBuffer.Update(dt);\n\t\t\t// bitsy.log(\"update dialog end\");\n\t\t}\n\n\t\t// keep moving avatar if player holds down button\n\t\tif ((!dialogBuffer || !dialogBuffer.IsActive()) && !isEnding) {\n\t\t\tif (curPlayerDirection != Direction.None) {\n\t\t\t\tplayerHoldToMoveTimer -= dt;\n\n\t\t\t\tif (playerHoldToMoveTimer <= 0) {\n\t\t\t\t\tmovePlayer(curPlayerDirection, false /* isFirstMove */);\n\t\t\t\t\tplayerHoldToMoveTimer = 150;\n\t\t\t\t\t// playerHoldToMoveTimer = 16; // PERF TEST\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// clean up state if the game is ending\n\tif (isGameOver) {\n\t\tbitsy.log(\"game over\");\n\t\treset_cur_game();\n\t}\n\n\treturn true;\n}\n\nvar isAnyButtonHeld = false;\nvar isIgnoringInput = false;\n\nfunction isAnyButtonDown() {\n\treturn bitsy.button(bitsy.BTN_UP) ||\n\t\tbitsy.button(bitsy.BTN_DOWN) ||\n\t\tbitsy.button(bitsy.BTN_LEFT) ||\n\t\tbitsy.button(bitsy.BTN_RIGHT) ||\n\t\tbitsy.button(bitsy.BTN_OK);\n}\n\nfunction updateInput() {\n\tif (dialogBuffer && dialogBuffer.IsActive()) {\n\t\tif (!(soundPlayer && soundPlayer.isBlipPlaying())) {\n\t\t\tif (!isAnyButtonHeld && isAnyButtonDown()) {\n\t\t\t\t/* CONTINUE DIALOG */\n\t\t\t\tif (dialogBuffer.CanContinue()) {\n\t\t\t\t\tvar hasMoreDialog = dialogBuffer.Continue();\n\t\t\t\t\tif (!hasMoreDialog) {\n\t\t\t\t\t\t// ignore currently held keys UNTIL they are released (stops player from insta-moving)\n\t\t\t\t\t\tisIgnoringInput = true;\n\t\t\t\t\t\tcurPlayerDirection = Direction.None;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tdialogBuffer.Skip();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\telse if (isEnding) {\n\t\tif (!isAnyButtonHeld && isAnyButtonDown()) {\n\t\t\t// tell game to restart\n\t\t\tisGameOver = true;\n\t\t}\n\t}\n\telse if (!isIgnoringInput) {\n\t\t/* WALK */\n\t\tvar prevPlayerDirection = curPlayerDirection;\n\n\t\tif (bitsy.button(bitsy.BTN_UP)) {\n\t\t\tcurPlayerDirection = Direction.Up;\n\t\t}\n\t\telse if (bitsy.button(bitsy.BTN_DOWN)) {\n\t\t\tcurPlayerDirection = Direction.Down;\n\t\t}\n\t\telse if (bitsy.button(bitsy.BTN_LEFT)) {\n\t\t\tcurPlayerDirection = Direction.Left;\n\t\t}\n\t\telse if (bitsy.button(bitsy.BTN_RIGHT)) {\n\t\t\tcurPlayerDirection = Direction.Right;\n\t\t}\n\t\telse {\n\t\t\tcurPlayerDirection = Direction.None;\n\t\t}\n\n\t\tif (curPlayerDirection != Direction.None && curPlayerDirection != prevPlayerDirection) {\n\t\t\tmovePlayer(curPlayerDirection, true /* isFirstMove */);\n\t\t\tplayerHoldToMoveTimer = 500;\n\t\t\t// playerHoldToMoveTimer = 32; // PERF TEST\n\t\t}\n\t}\n\n\tif (!isAnyButtonDown()) {\n\t\tisIgnoringInput = false;\n\t}\n\n\t// quit if the user ever presses the restart button\n\t// todo : should I rename it bitsy.BTN_RESTART or bitsy.BTN_QUIT or bitsy.BTN_OFF?\n\tif (bitsy.button(bitsy.BTN_MENU)) {\n\t\tisGameOver = true;\n\t}\n\n\tisAnyButtonHeld = isAnyButtonDown();\n}\n\nvar animationCounter = 0;\nvar animationTime = 400;\nfunction updateAnimation(dt) {\n\tanimationCounter += dt;\n\t// bitsy.log(\"anim \" + animationCounter);\n\tif (animationCounter >= animationTime) {\n\t\t// animate sprites\n\t\tfor (id in sprite) {\n\t\t\tvar spr = sprite[id];\n\t\t\tif (spr.animation.isAnimated) {\n\t\t\t\tspr.animation.frameIndex = (spr.animation.frameIndex + 1) % spr.animation.frameCount;\n\t\t\t}\n\t\t}\n\n\t\t// animate tiles\n\t\tfor (id in tile) {\n\t\t\tvar til = tile[id];\n\t\t\tif (til.animation.isAnimated) {\n\t\t\t\ttil.animation.frameIndex = (til.animation.frameIndex + 1) % til.animation.frameCount;\n\t\t\t}\n\t\t}\n\n\t\t// animate items\n\t\tfor (id in item) {\n\t\t\tvar itm = item[id];\n\t\t\tif (itm.animation.isAnimated) {\n\t\t\t\titm.animation.frameIndex = (itm.animation.frameIndex + 1) % itm.animation.frameCount;\n\t\t\t}\n\t\t}\n\n\t\t// reset counter\n\t\tanimationCounter = 0;\n\n\t\t// updated animations this frame\n\t\treturn true;\n\t}\n\n\t// did *not* update animations this frame\n\treturn false;\n}\n\nfunction resetAllAnimations() {\n\tfor (id in sprite) {\n\t\tvar spr = sprite[id];\n\t\tif (spr.animation.isAnimated) {\n\t\t\tspr.animation.frameIndex = 0;\n\t\t}\n\t}\n\n\tfor (id in tile) {\n\t\tvar til = tile[id];\n\t\tif (til.animation.isAnimated) {\n\t\t\ttil.animation.frameIndex = 0;\n\t\t}\n\t}\n\n\tfor (id in item) {\n\t\tvar itm = item[id];\n\t\tif (itm.animation.isAnimated) {\n\t\t\titm.animation.frameIndex = 0;\n\t\t}\n\t}\n}\n\nfunction getSpriteAt(x, y, roomId) {\n\tif (roomId === undefined) {\n\t\troomId = state.room;\n\t}\n\n\tfor (id in sprite) {\n\t\tvar spr = sprite[id];\n\t\tif (spr.room === roomId) {\n\t\t\tif (spr.x == x && spr.y == y) {\n\t\t\t\treturn id;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn null;\n}\n\nvar Direction = {\n\tNone : -1,\n\tUp : 0,\n\tDown : 1,\n\tLeft : 2,\n\tRight : 3\n};\n\nvar curPlayerDirection = Direction.None;\nvar playerHoldToMoveTimer = 0;\nvar playerPrevX = 0;\nvar playerPrevY = 0;\n\nfunction movePlayer(direction, isFirstMove) {\n\tdidPlayerMove = false;\n\tvar roomIds = Object.keys(room);\n\n\tif (player().room == null || roomIds.indexOf(player().room) < 0) {\n\t\treturn; // player room is missing or invalid.. can't move them!\n\t}\n\n\tvar spr = null;\n\n\tif (direction == Direction.Left && !(spr = getSpriteLeft()) && !isWallLeft()) {\n\t\tplayer().x -= 1;\n\t}\n\telse if (direction == Direction.Right && !(spr = getSpriteRight()) && !isWallRight()) {\n\t\tplayer().x += 1;\n\t}\n\telse if (direction == Direction.Up && !(spr = getSpriteUp()) && !isWallUp()) {\n\t\tplayer().y -= 1;\n\t}\n\telse if (direction == Direction.Down && !(spr = getSpriteDown()) && !isWallDown()) {\n\t\tplayer().y += 1;\n\t}\n\n\tvar ext = getExit( player().room, player().x, player().y );\n\tvar end = getEnding( player().room, player().x, player().y );\n\tvar itmIndex = getItemIndex( player().room, player().x, player().y );\n\n\t// only play one sound effect per \"turn\"\n\tvar blipId = null;\n\n\t// do items first, because you can pick up an item AND go through a door\n\tif (itmIndex > -1) {\n\t\tvar itm = room[player().room].items[itmIndex];\n\t\tvar itemRoom = player().room;\n\n\t\t// play sound on pitck up item\n\t\tif (item[itm.id].blip != null) {\n\t\t\tblipId = item[itm.id].blip;\n\t\t}\n\n\t\tstartItemDialog(itm.id, function() {\n\t\t\t// remove item from room\n\t\t\troom[itemRoom].items.splice(itmIndex, 1);\n\n\t\t\t// update player inventory\n\t\t\tif (player().inventory[itm.id]) {\n\t\t\t\tplayer().inventory[itm.id] += 1;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tplayer().inventory[itm.id] = 1;\n\t\t\t}\n\n\t\t\t// show inventory change in UI\n\t\t\tif (onInventoryChanged != null) {\n\t\t\t\tonInventoryChanged(itm.id);\n\t\t\t}\n\t\t});\n\t}\n\n\tif (end) {\n\t\tstartEndingDialog(end);\n\t}\n\telse if (ext) {\n\t\tmovePlayerThroughExit(ext);\n\t}\n\telse if (spr) {\n\t\t// play sound on greet sprite\n\t\tif (sprite[spr].blip != null) {\n\t\t\tblipId = sprite[spr].blip;\n\t\t}\n\n\t\tstartSpriteDialog(spr /*spriteId*/);\n\t}\n\n\t// TODO : maybe add in a future update?\n\t/*\n\t// play sound when player moves (if no other sound selected)\n\tif (isFirstMove && blipId === null && sprite[state.ava].blip != null) {\n\t\tblipId = sprite[state.ava].blip;\n\t\trandomizeBlip = true;\n\t\tblipChannel = bitsy.SOUND2; // play walking sfx *under* the tune melody\n\t}\n\t*/\n\n\tif (soundPlayer && blipId != null && blip[blipId]) {\n\t\tsoundPlayer.playBlip(blip[blipId]);\n\t}\n}\n\nvar transition;\nif (engineFeatureFlags.isTransitionEnabled) {\n\ttransition = new TransitionManager();\n}\n\nfunction movePlayerThroughExit(ext) {\n\tvar GoToDest = function() {\n\t\tif (transition && ext.transition_effect != null) {\n\t\t\ttransition.BeginTransition(\n\t\t\t\tplayer().room,\n\t\t\t\tplayer().x,\n\t\t\t\tplayer().y,\n\t\t\t\text.dest.room,\n\t\t\t\text.dest.x,\n\t\t\t\text.dest.y,\n\t\t\t\text.transition_effect);\n\n\t\t\ttransition.UpdateTransition(0);\n\n\t\t\ttransition.OnTransitionComplete(function() {\n\t\t\t\tplayer().room = ext.dest.room;\n\t\t\t\tplayer().x = ext.dest.x;\n\t\t\t\tplayer().y = ext.dest.y;\n\t\t\t\tstate.room = ext.dest.room;\n\t\t\t\tinitRoom(state.room);\n\t\t\t});\n\t\t}\n\t\telse {\n\t\t\tplayer().room = ext.dest.room;\n\t\t\tplayer().x = ext.dest.x;\n\t\t\tplayer().y = ext.dest.y;\n\t\t\tstate.room = ext.dest.room;\n\n\t\t\tinitRoom(state.room);\n\t\t}\n\t};\n\n\tif (ext.dlg != undefined && ext.dlg != null) {\n\t\t// TODO : I need to simplify dialog code,\n\t\t// so I don't have to get the ID and the source str\n\t\t// every time!\n\t\tstartDialog(\n\t\t\tdialog[ext.dlg].src,\n\t\t\text.dlg,\n\t\t\tfunction(result) {\n\t\t\t\tvar isLocked = ext.property && ext.property.locked === true;\n\t\t\t\tif (!isLocked) {\n\t\t\t\t\tGoToDest();\n\t\t\t\t}\n\t\t\t},\n\t\t\text);\n\t}\n\telse {\n\t\tGoToDest();\n\t}\n}\n\n/* PALETTE INDICES */\nvar backgroundIndex = 0;\nvar textBackgroundIndex = 1;\nvar textArrowIndex = 2;\nvar textColorIndex = 3;\n\n// precalculated rainbow colors\nvar rainbowColorStartIndex = 4;\nvar rainbowColorCount = 10;\nvar rainbowColors = [\n\t[255,0,0],\n\t[255,217,0],\n\t[78,255,0],\n\t[0,255,125],\n\t[0,192,255],\n\t[0,18,255],\n\t[136,0,255],\n\t[255,0,242],\n\t[255,0,138],\n\t[255,0,61],\n];\n\nfunction updatePaletteWithTileColors(tileColors) {\n\t// the screen background color should match the first tile color\n\tif (tileColors.length > 0) {\n\t\tvar color = tileColors[0];\n\t\tbitsy.color(backgroundIndex, color[0], color[1], color[2]);\n\t}\n\telse {\n\t\t// as a fallback, use black as the background\n\t\tbitsy.log(\"no tile colors!\");\n\t\tbitsy.color(backgroundIndex, 0, 0, 0);\n\t}\n\n\t// textbox colors\n\tbitsy.color(textBackgroundIndex, 0, 0, 0); // black\n\tbitsy.color(textArrowIndex, 255, 255, 255); // white\n\tbitsy.color(textColorIndex, 255, 255, 255); // white\n\n\t// rainbow colors\n\tfor (var i = 0; i < rainbowColorCount; i++) {\n\t\tvar color = rainbowColors[i];\n\t\tbitsy.color(rainbowColorStartIndex + i, color[0], color[1], color[2]);\n\t}\n\n\t// tile colors\n\tfor (var i = 0; i < tileColors.length; i++) {\n\t\tvar color = tileColors[i];\n\t\tbitsy.color(tileColorStartIndex + i, color[0], color[1], color[2]);\n\t}\n}\n\nfunction updatePalette(palId) {\n\tstate.pal = palId;\n\tvar pal = palette[state.pal];\n\tupdatePaletteWithTileColors(pal.colors);\n}\n\nfunction initRoom(roomId) {\n\tbitsy.log(\"init room \" + roomId);\n\n\tupdatePalette(getRoomPal(roomId));\n\n\t// update avatar appearance\n\tstate.ava = (room[roomId].ava != null) ? room[roomId].ava : playerId;\n\n\tif (renderer) {\n\t\trenderer.ClearCache();\n\t}\n\n\t// init exit properties\n\tstate.exits = [];\n\tfor (var i = 0; i < room[roomId].exits.length; i++) {\n\t\tvar exit = createExitData(\n\t\t\t/* x \t\t\t*/ room[roomId].exits[i].x,\n\t\t\t/* y \t\t\t*/ room[roomId].exits[i].y,\n\t\t\t/* destRoom \t*/ room[roomId].exits[i].dest.room,\n\t\t\t/* destX \t\t*/ room[roomId].exits[i].dest.x,\n\t\t\t/* destY \t\t*/ room[roomId].exits[i].dest.y,\n\t\t\t/* transition \t*/ room[roomId].exits[i].transition_effect,\n\t\t\t/* dlg \t\t\t*/ room[roomId].exits[i].dlg);\n\t\texit.property = { locked: false };\n\n\t\tstate.exits.push(exit);\n\t}\n\n\t// init ending properties\n\tstate.endings = [];\n\tfor (var i = 0; i < room[roomId].endings.length; i++) {\n\t\tvar end = createEndingData(\n\t\t\t/* id */ room[roomId].endings[i].id,\n\t\t\t/* x */ room[roomId].endings[i].x,\n\t\t\t/* y */ room[roomId].endings[i].y);\n\t\tend.property = { locked: false };\n\n\t\tstate.endings.push(end);\n\t}\n\n\tif (soundPlayer) {\n\t\tif (!room[roomId].tune || room[roomId].tune === \"0\" || !tune[room[roomId].tune]) {\n\t\t\t// stop music\n\t\t\tstate.tune = \"0\";\n\t\t\tsoundPlayer.stopTune();\n\t\t}\n\t\telse if (room[roomId].tune != state.tune) {\n\t\t\t// start music\n\t\t\tstate.tune = room[roomId].tune;\n\t\t\tsoundPlayer.playTune(tune[state.tune]);\n\t\t}\n\t}\n\n\tvar drawArgs = { redrawAll: true };\n\tdrawRoom(room[roomId], drawArgs);\n\n\tif (onInitRoom) {\n\t\tonInitRoom(roomId);\n\t}\n}\n\nfunction getItemIndex( roomId, x, y ) {\n\tfor( var i = 0; i < room[roomId].items.length; i++ ) {\n\t\tvar itm = room[roomId].items[i];\n\t\tif ( itm.x == x && itm.y == y)\n\t\t\treturn i;\n\t}\n\treturn -1;\n}\n\nfunction getSpriteLeft() { //repetitive?\n\treturn getSpriteAt( player().x - 1, player().y );\n}\n\nfunction getSpriteRight() {\n\treturn getSpriteAt( player().x + 1, player().y );\n}\n\nfunction getSpriteUp() {\n\treturn getSpriteAt( player().x, player().y - 1 );\n}\n\nfunction getSpriteDown() {\n\treturn getSpriteAt( player().x, player().y + 1 );\n}\n\nfunction isWallLeft() {\n\treturn (player().x - 1 < 0) || isWall( player().x - 1, player().y );\n}\n\nfunction isWallRight() {\n\treturn (player().x + 1 >= bitsy.MAP_SIZE) || isWall(player().x + 1, player().y);\n}\n\nfunction isWallUp() {\n\treturn (player().y - 1 < 0) || isWall( player().x, player().y - 1 );\n}\n\nfunction isWallDown() {\n\treturn (player().y + 1 >= bitsy.MAP_SIZE) || isWall(player().x, player().y + 1);\n}\n\nfunction isWall(x, y, roomId) {\n\tif (roomId == undefined || roomId == null) {\n\t\troomId = state.room;\n\t}\n\n\tvar tileId = getTile(x, y, roomId);\n\tif (tileId === '0') {\n\t\treturn false; // Blank spaces aren't walls, ya doofus\n\t}\n\n\tif (tile[tileId].isWall === undefined || tile[tileId].isWall === null) {\n\t\t// No wall-state defined: check room-specific walls\n\t\tvar i = room[roomId].walls.indexOf(getTile(x, y, roomId));\n\t\treturn (i > -1);\n\t}\n\n\t// Otherwise, use the tile's own wall-state\n\treturn tile[tileId].isWall;\n}\n\nfunction getItem(roomId,x,y) {\n\tfor (i in room[roomId].items) {\n\t\tvar item = room[roomId].items[i];\n\t\tif (x == item.x && y == item.y) {\n\t\t\treturn item;\n\t\t}\n\t}\n\treturn null;\n}\n\n// todo : roomId isn't useful in these functions anymore! safe to remove?\nfunction getExit(roomId, x, y) {\n\tfor (i in state.exits) {\n\t\tvar e = state.exits[i];\n\t\tif (x == e.x && y == e.y) {\n\t\t\treturn e;\n\t\t}\n\t}\n\treturn null;\n}\n\nfunction getEnding(roomId, x, y) {\n\tfor (i in state.endings) {\n\t\tvar e = state.endings[i];\n\t\tif (x == e.x && y == e.y) {\n\t\t\treturn e;\n\t\t}\n\t}\n\treturn null;\n}\n\nfunction getTile(x, y, roomId) {\n\t// bitsy.log(x + \" \" + y);\n\tvar t = getRoom(roomId).tilemap[y][x];\n\treturn t;\n}\n\nfunction player() {\n\treturn sprite[playerId];\n}\n\n// Sort of a hack for legacy palette code (when it was just an array)\nfunction getPal(id) {\n\tif (palette[id] === undefined) {\n\t\tid = \"default\";\n\t}\n\n\treturn palette[ id ].colors;\n}\n\nfunction getRoom(id) {\n\treturn room[id === undefined ? state.room : id];\n}\n\nfunction isSpriteOffstage(id) {\n\treturn sprite[id].room == null;\n}\n\nfunction serializeNote(note, key, useFriendlyName) {\n\tvar isSolfa = (key != undefined && key != null);\n\tvar noteType = (isSolfa === true) ? Solfa : Note;\n\n\tif (isSolfa && key.scale.indexOf(note) === -1) {\n\t\t// no matching note in key\n\t\treturn null;\n\t}\n\n\tif (isSolfa && useFriendlyName != true) {\n\t\tfor (var name in Solfa) {\n\t\t\tif (Solfa[name] === note) {\n\t\t\t\treturn name.toLowerCase();\n\t\t\t}\n\t\t}\n\n\t\t// no solfa note found\n\t\treturn null;\n\t}\n\n\t// for a solfa note's \"friendly name\" convert to the chromatic equivalent\n\tif (isSolfa && useFriendlyName === true) {\n\t\tnote = key.notes[note];\n\t}\n\n\t// from this point on, we know the note we're looking for is chromatic\n\tfor (var name in Note) {\n\t\tif (Note[name] === note) {\n\t\t\tname = name.replace(\"_SHARP\", \"#\");\n\t\t\tif (useFriendlyName === true && name === \"H\") {\n\t\t\t\tname = \"C\";\n\t\t\t}\n\t\t\treturn name;\n\t\t}\n\t}\n\n\t// no note found\n\treturn symbol;\n}\n\nfunction serializeOctave(octave) {\n\tfor (var symbol in Octave) {\n\t\tif (Octave[symbol] === octave) {\n\t\t\treturn symbol;\n\t\t}\n\t}\n\n\t// default to middle octave\n\treturn \"4\";\n}\n\n//TODO this is in progress and doesn't support all features\nfunction serializeWorld(skipFonts) {\n\tif (skipFonts === undefined || skipFonts === null) {\n\t\tskipFonts = false;\n\t}\n\n\t// update version flags\n\tflags.VER_MAJ = version.major;\n\tflags.VER_MIN = version.minor;\n\n\tvar worldStr = \"\";\n\t/* TITLE */\n\tworldStr += getTitle() + \"\\n\";\n\tworldStr += \"\\n\";\n\t/* VERSION */\n\tworldStr += \"# BITSY VERSION \" + getEngineVersion() + \"\\n\"; // add version as a comment for debugging purposes\n\tif (version.devBuildPhase != \"RELEASE\") {\n\t\tworldStr += \"# DEVELOPMENT BUILD -- \" + version.devBuildPhase;\n\t}\n\tworldStr += \"\\n\";\n\t/* FLAGS */\n\tfor (f in flags) {\n\t\tworldStr += \"! \" + f + \" \" + flags[f] + \"\\n\";\n\t}\n\tworldStr += \"\\n\"\n\t/* FONT */\n\tif (fontName != defaultFontName) {\n\t\tworldStr += \"DEFAULT_FONT \" + fontName + \"\\n\";\n\t\tworldStr += \"\\n\"\n\t}\n\tif (textDirection != TextDirection.LeftToRight) {\n\t\tworldStr += \"TEXT_DIRECTION \" + textDirection + \"\\n\";\n\t\tworldStr += \"\\n\"\n\t}\n\t/* PALETTE */\n\tfor (id in palette) {\n\t\tif (id != \"default\") {\n\t\t\tworldStr += \"PAL \" + id + \"\\n\";\n\t\t\tfor (i in getPal(id)) {\n\t\t\t\tfor (j in getPal(id)[i]) {\n\t\t\t\t\tworldStr += getPal(id)[i][j];\n\t\t\t\t\tif (j < 2) worldStr += \",\";\n\t\t\t\t}\n\t\t\t\tworldStr += \"\\n\";\n\t\t\t}\n\t\t\tif (palette[id].name != null) {\n\t\t\t\tworldStr += \"NAME \" + palette[id].name + \"\\n\";\n\t\t\t}\n\t\t\tworldStr += \"\\n\";\n\t\t}\n\t}\n\t/* ROOM */\n\tfor (id in room) {\n\t\tworldStr += \"ROOM \" + id + \"\\n\";\n\t\tif ( flags.ROOM_FORMAT == 0 ) {\n\t\t\t// old non-comma separated format\n\t\t\tfor (i in room[id].tilemap) {\n\t\t\t\tfor (j in room[id].tilemap[i]) {\n\t\t\t\t\tworldStr += room[id].tilemap[i][j];\t\n\t\t\t\t}\n\t\t\t\tworldStr += \"\\n\";\n\t\t\t}\n\t\t}\n\t\telse if ( flags.ROOM_FORMAT == 1 ) {\n\t\t\t// new comma separated format\n\t\t\tfor (i in room[id].tilemap) {\n\t\t\t\tfor (j in room[id].tilemap[i]) {\n\t\t\t\t\tworldStr += room[id].tilemap[i][j];\n\t\t\t\t\tif (j < room[id].tilemap[i].length-1) worldStr += \",\"\n\t\t\t\t}\n\t\t\t\tworldStr += \"\\n\";\n\t\t\t}\n\t\t}\n\t\tif (room[id].name != null) {\n\t\t\t/* NAME */\n\t\t\tworldStr += \"NAME \" + room[id].name + \"\\n\";\n\t\t}\n\t\tif (room[id].walls.length > 0) {\n\t\t\t/* WALLS */\n\t\t\tworldStr += \"WAL \";\n\t\t\tfor (j in room[id].walls) {\n\t\t\t\tworldStr += room[id].walls[j];\n\t\t\t\tif (j < room[id].walls.length-1) {\n\t\t\t\t\tworldStr += \",\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tworldStr += \"\\n\";\n\t\t}\n\t\tif (room[id].items.length > 0) {\n\t\t\t/* ITEMS */\n\t\t\tfor (j in room[id].items) {\n\t\t\t\tvar itm = room[id].items[j];\n\t\t\t\tworldStr += \"ITM \" + itm.id + \" \" + itm.x + \",\" + itm.y;\n\t\t\t\tworldStr += \"\\n\";\n\t\t\t}\n\t\t}\n\t\tif (room[id].exits.length > 0) {\n\t\t\t/* EXITS */\n\t\t\tfor (j in room[id].exits) {\n\t\t\t\tvar e = room[id].exits[j];\n\t\t\t\tif ( isExitValid(e) ) {\n\t\t\t\t\tworldStr += \"EXT \" + e.x + \",\" + e.y + \" \" + e.dest.room + \" \" + e.dest.x + \",\" + e.dest.y;\n\t\t\t\t\tif (e.transition_effect != undefined && e.transition_effect != null) {\n\t\t\t\t\t\tworldStr += \" FX \" + e.transition_effect;\n\t\t\t\t\t}\n\t\t\t\t\tif (e.dlg != undefined && e.dlg != null) {\n\t\t\t\t\t\tworldStr += \" DLG \" + e.dlg;\n\t\t\t\t\t}\n\t\t\t\t\tworldStr += \"\\n\";\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (room[id].endings.length > 0) {\n\t\t\t/* ENDINGS */\n\t\t\tfor (j in room[id].endings) {\n\t\t\t\tvar e = room[id].endings[j];\n\t\t\t\t// todo isEndingValid\n\t\t\t\tworldStr += \"END \" + e.id + \" \" + e.x + \",\" + e.y;\n\t\t\t\tworldStr += \"\\n\";\n\t\t\t}\n\t\t}\n\t\tif (room[id].pal != null && room[id].pal != \"default\") {\n\t\t\t/* PALETTE */\n\t\t\tworldStr += \"PAL \" + room[id].pal + \"\\n\";\n\t\t}\n\t\tif (room[id].ava != null) {\n\t\t\t/* AVATAR SPRITE */\n\t\t\tworldStr += \"AVA \" + room[id].ava + \"\\n\";\n\t\t}\n\t\tif (room[id].tune != null && room[id].tune != \"0\") {\n\t\t\t/* TUNE */\n\t\t\tworldStr += \"TUNE \" + room[id].tune + \"\\n\";\n\t\t}\n\t\tworldStr += \"\\n\";\n\t}\n\t/* TILES */\n\tfor (id in tile) {\n\t\tworldStr += \"TIL \" + id + \"\\n\";\n\t\tworldStr += serializeDrawing( \"TIL_\" + id );\n\t\tif (tile[id].name != null && tile[id].name != undefined) {\n\t\t\t/* NAME */\n\t\t\tworldStr += \"NAME \" + tile[id].name + \"\\n\";\n\t\t}\n\t\tif (tile[id].isWall != null && tile[id].isWall != undefined) {\n\t\t\t/* WALL */\n\t\t\tworldStr += \"WAL \" + tile[id].isWall + \"\\n\";\n\t\t}\n\t\tif (tile[id].col != null && tile[id].col != undefined && tile[id].col != 1) {\n\t\t\t/* COLOR OVERRIDE */\n\t\t\tworldStr += \"COL \" + tile[id].col + \"\\n\";\n\t\t}\n\t\tif (tile[id].bgc != null && tile[id].bgc != undefined && tile[id].bgc != 0) {\n\t\t\t/* BACKGROUND COLOR OVERRIDE */\n\t\t\tif (tile[id].bgc < 0) {\n\t\t\t\t// transparent background\n\t\t\t\tworldStr += \"BGC *\\n\";\n\t\t\t}\n\t\t\telse {\n\t\t\t\tworldStr += \"BGC \" + tile[id].bgc + \"\\n\";\n\t\t\t}\n\t\t}\n\t\tworldStr += \"\\n\";\n\t}\n\t/* SPRITES */\n\tfor (id in sprite) {\n\t\tworldStr += \"SPR \" + id + \"\\n\";\n\t\tworldStr += serializeDrawing( \"SPR_\" + id );\n\t\tif (sprite[id].name != null && sprite[id].name != undefined) {\n\t\t\t/* NAME */\n\t\t\tworldStr += \"NAME \" + sprite[id].name + \"\\n\";\n\t\t}\n\t\tif (sprite[id].dlg != null) {\n\t\t\tworldStr += \"DLG \" + sprite[id].dlg + \"\\n\";\n\t\t}\n\t\tif (sprite[id].room != null) {\n\t\t\t/* SPRITE POSITION */\n\t\t\tworldStr += \"POS \" + sprite[id].room + \" \" + sprite[id].x + \",\" + sprite[id].y + \"\\n\";\n\t\t}\n\t\tif (sprite[id].inventory != null) {\n\t\t\tfor(itemId in sprite[id].inventory) {\n\t\t\t\tworldStr += \"ITM \" + itemId + \" \" + sprite[id].inventory[itemId] + \"\\n\";\n\t\t\t}\n\t\t}\n\t\tif (sprite[id].col != null && sprite[id].col != undefined && sprite[id].col != 2) {\n\t\t\t/* COLOR OVERRIDE */\n\t\t\tworldStr += \"COL \" + sprite[id].col + \"\\n\";\n\t\t}\n\t\tif (sprite[id].bgc != null && sprite[id].bgc != undefined && sprite[id].bgc != 0) {\n\t\t\t/* BACKGROUND COLOR OVERRIDE */\n\t\t\tif (sprite[id].bgc < 0) {\n\t\t\t\t// transparent background\n\t\t\t\tworldStr += \"BGC *\\n\";\n\t\t\t}\n\t\t\telse {\n\t\t\t\tworldStr += \"BGC \" + sprite[id].bgc + \"\\n\";\n\t\t\t}\n\t\t}\n\t\tif (sprite[id].blip != null && sprite[id].blip != undefined) {\n\t\t\t/* BLIP */\n\t\t\tworldStr += \"BLIP \" + sprite[id].blip + \"\\n\";\n\t\t}\n\t\tworldStr += \"\\n\";\n\t}\n\t/* ITEMS */\n\tfor (id in item) {\n\t\tworldStr += \"ITM \" + id + \"\\n\";\n\t\tworldStr += serializeDrawing( \"ITM_\" + id );\n\t\tif (item[id].name != null && item[id].name != undefined) {\n\t\t\t/* NAME */\n\t\t\tworldStr += \"NAME \" + item[id].name + \"\\n\";\n\t\t}\n\t\tif (item[id].dlg != null) {\n\t\t\tworldStr += \"DLG \" + item[id].dlg + \"\\n\";\n\t\t}\n\t\tif (item[id].col != null && item[id].col != undefined && item[id].col != 2) {\n\t\t\t/* COLOR OVERRIDE */\n\t\t\tworldStr += \"COL \" + item[id].col + \"\\n\";\n\t\t}\n\t\tif (item[id].bgc != null && item[id].bgc != undefined && item[id].bgc != 0) {\n\t\t\t/* BACKGROUND COLOR OVERRIDE */\n\t\t\tif (item[id].bgc < 0) {\n\t\t\t\t// transparent background\n\t\t\t\tworldStr += \"BGC *\\n\";\n\t\t\t}\n\t\t\telse {\n\t\t\t\tworldStr += \"BGC \" + item[id].bgc + \"\\n\";\n\t\t\t}\n\t\t}\n\t\tif (item[id].blip != null && item[id].blip != undefined) {\n\t\t\t/* BLIP */\n\t\t\tworldStr += \"BLIP \" + item[id].blip + \"\\n\";\n\t\t}\n\t\tworldStr += \"\\n\";\n\t}\n\t/* DIALOG */\n\tfor (id in dialog) {\n\t\tif (id != titleDialogId) {\n\t\t\tworldStr += \"DLG \" + id + \"\\n\";\n\t\t\tworldStr += dialog[id].src + \"\\n\";\n\t\t\tif (dialog[id].name != null) {\n\t\t\t\tworldStr += \"NAME \" + dialog[id].name + \"\\n\";\n\t\t\t}\n\t\t\tworldStr += \"\\n\";\n\t\t}\n\t}\n\t/* ENDINGS (for backwards compability only) */\n\tfor (id in end) {\n\t\tworldStr += \"END \" + id + \"\\n\";\n\t\tworldStr += end[id].src + \"\\n\";\n\t\tworldStr += \"\\n\";\n\t}\n\t/* VARIABLES */\n\tfor (id in variable) {\n\t\tworldStr += \"VAR \" + id + \"\\n\";\n\t\tworldStr += variable[id] + \"\\n\";\n\t\tworldStr += \"\\n\";\n\t}\n\t/* TUNES */\n\tfor (id in tune) {\n\t\tif (id === \"0\") {\n\t\t\tcontinue;\n\t\t}\n\n\t\tworldStr += \"TUNE \" + id + \"\\n\";\n\t\tfor (var i = 0; i < maxTuneLength && i < tune[id].melody.length; i++) {\n\t\t\t// MELODY\n\t\t\tfor (var j = 0; j < barLength; j++) {\n\t\t\t\tvar noteStr = serializeNote(tune[id].melody[i][j].note, tune[id].key);\n\t\t\t\tif (noteStr === null) {\n\t\t\t\t\ttune[id].melody[i][j].beats = 0;\n\t\t\t\t}\n\t\t\t\tif (tune[id].melody[i][j].beats != 1) {\n\t\t\t\t\tworldStr += tune[id].melody[i][j].beats;\n\t\t\t\t}\n\t\t\t\tif (tune[id].melody[i][j].beats > 0) {\n\t\t\t\t\tworldStr += noteStr;\n\t\t\t\t}\n\t\t\t\tif (tune[id].melody[i][j].beats > 0 && tune[id].melody[i][j].octave != Octave[4]) {\n\t\t\t\t\tworldStr += serializeOctave(tune[id].melody[i][j].octave);\n\t\t\t\t}\n\t\t\t\tif (tune[id].melody[i][j].beats > 0 && tune[id].melody[i][j].blip != undefined) {\n\t\t\t\t\t// todo : create constant for the blip separator?\n\t\t\t\t\tworldStr += \"~\" + tune[id].melody[i][j].blip;\n\t\t\t\t}\n\t\t\t\tif (j < 15) {\n\t\t\t\t\tworldStr += \",\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tworldStr += \"\\n\";\n\n\t\t\t// HARMONY\n\t\t\t// todo : lots of copy-pasting - I could probably make some helper functions to simplify this\n\t\t\tfor (var j = 0; j < barLength; j++) {\n\t\t\t\tvar noteStr = serializeNote(tune[id].harmony[i][j].note, tune[id].key);\n\t\t\t\tif (noteStr === null) {\n\t\t\t\t\ttune[id].harmony[i][j].beats = 0;\n\t\t\t\t}\n\t\t\t\tif (tune[id].harmony[i][j].beats != 1) {\n\t\t\t\t\tworldStr += tune[id].harmony[i][j].beats;\n\t\t\t\t}\n\t\t\t\tif (tune[id].harmony[i][j].beats > 0) {\n\t\t\t\t\tworldStr += noteStr;\n\t\t\t\t}\n\t\t\t\tif (tune[id].harmony[i][j].beats > 0 && tune[id].harmony[i][j].octave != Octave[4]) {\n\t\t\t\t\tworldStr += serializeOctave(tune[id].harmony[i][j].octave);\n\t\t\t\t}\n\t\t\t\tif (tune[id].harmony[i][j].beats > 0 && tune[id].harmony[i][j].blip != undefined) {\n\t\t\t\t\tworldStr += \"~\" + tune[id].harmony[i][j].blip;\n\t\t\t\t}\n\t\t\t\tif (j < 15) {\n\t\t\t\t\tworldStr += \",\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tworldStr += \"\\n\";\n\n\t\t\tif (i < (tune[id].melody.length - 1)) {\n\t\t\t\tworldStr += \">\";\n\t\t\t\tworldStr += \"\\n\";\n\t\t\t}\n\t\t}\n\t\tif (tune[id].name != null) {\n\t\t\t/* NAME */\n\t\t\tworldStr += \"NAME \" + tune[id].name + \"\\n\";\n\t\t}\n\t\tif (tune[id].key != undefined && tune[id].key != null) {\n\t\t\tworldStr += \"KEY \";\n\t\t\tfor (var i = 0; i < Solfa.COUNT; i++) {\n\t\t\t\tworldStr += serializeNote(tune[id].key.notes[i]);\n\t\t\t\tif (i < Solfa.COUNT - 1) {\n\t\t\t\t\tworldStr += \",\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tworldStr += \" \";\n\t\t\tfor (var i = 0; i < tune[id].key.scale.length; i++) {\n\t\t\t\tworldStr += serializeNote(tune[id].key.scale[i], tune[id].key);\n\t\t\t\tif (i < tune[id].key.scale.length - 1) {\n\t\t\t\t\tworldStr += \",\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tworldStr += \"\\n\";\n\t\t}\n\t\tworldStr += \"TMP \";\n\t\tswitch (tune[id].tempo) {\n\t\t\tcase Tempo.SLW:\n\t\t\t\tworldStr += \"SLW\";\n\t\t\t\tbreak;\n\t\t\tcase Tempo.MED:\n\t\t\t\tworldStr += \"MED\";\n\t\t\t\tbreak;\n\t\t\tcase Tempo.FST:\n\t\t\t\tworldStr += \"FST\";\n\t\t\t\tbreak;\n\t\t\tcase Tempo.XFST:\n\t\t\t\tworldStr += \"XFST\";\n\t\t\t\tbreak;\n\t\t}\n\t\tworldStr += \"\\n\";\n\t\tworldStr += \"SQR \";\n\t\tswitch (tune[id].instrumentA) {\n\t\t\tcase SquareWave.P8:\n\t\t\t\tworldStr += \"P8\";\n\t\t\t\tbreak;\n\t\t\tcase SquareWave.P4:\n\t\t\t\tworldStr += \"P4\";\n\t\t\t\tbreak;\n\t\t\tcase SquareWave.P2:\n\t\t\t\tworldStr += \"P2\";\n\t\t\t\tbreak;\n\t\t}\n\t\tworldStr += \" \";\n\t\tswitch (tune[id].instrumentB) {\n\t\t\tcase SquareWave.P8:\n\t\t\t\tworldStr += \"P8\";\n\t\t\t\tbreak;\n\t\t\tcase SquareWave.P4:\n\t\t\t\tworldStr += \"P4\";\n\t\t\t\tbreak;\n\t\t\tcase SquareWave.P2:\n\t\t\t\tworldStr += \"P2\";\n\t\t\t\tbreak;\n\t\t}\n\t\tworldStr += \"\\n\";\n\t\tif (tune[id].key != undefined && tune[id].key != null && tune[id].arpeggioPattern != ArpeggioPattern.OFF) {\n\t\t\tswitch (tune[id].arpeggioPattern) {\n\t\t\t\tcase ArpeggioPattern.UP:\n\t\t\t\t\tworldStr += \"ARP UP\\n\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase ArpeggioPattern.DWN:\n\t\t\t\t\tworldStr += \"ARP DWN\\n\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase ArpeggioPattern.INT5:\n\t\t\t\t\tworldStr += \"ARP INT5\\n\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase ArpeggioPattern.INT8:\n\t\t\t\t\tworldStr += \"ARP INT8\\n\";\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tworldStr += \"\\n\";\n\t}\n\t/* BLIP */\n\tfor (id in blip) {\n\t\tif (id === \"0\") {\n\t\t\tcontinue;\n\t\t}\n\n\t\tworldStr += \"BLIP \" + id + \"\\n\";\n\t\t// pitches\n\t\tif (blip[id].pitchA.beats > 0) {\n\t\t\tworldStr += serializeNote(blip[id].pitchA.note);\n\t\t\tif (blip[id].pitchA.octave != Octave[4]) {\n\t\t\t\tworldStr += serializeOctave(blip[id].pitchA.octave);\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tworldStr += blip[id].pitchA.beats;\n\t\t}\n\t\tworldStr += \",\";\n\t\tif (blip[id].pitchB.beats > 0) {\n\t\t\tworldStr += serializeNote(blip[id].pitchB.note);\n\t\t\tif (blip[id].pitchB.octave != Octave[4]) {\n\t\t\t\tworldStr += serializeOctave(blip[id].pitchB.octave);\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tworldStr += blip[id].pitchB.beats;\n\t\t}\n\t\tworldStr += \",\";\n\t\tif (blip[id].pitchC.beats > 0) {\n\t\t\tworldStr += serializeNote(blip[id].pitchC.note);\n\t\t\tif (blip[id].pitchC.octave != Octave[4]) {\n\t\t\t\tworldStr += serializeOctave(blip[id].pitchC.octave);\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tworldStr += blip[id].pitchC.beats;\n\t\t}\n\t\tworldStr += \"\\n\";\n\t\tif (blip[id].name != null) {\n\t\t\t/* NAME */\n\t\t\tworldStr += \"NAME \" + blip[id].name + \"\\n\";\n\t\t}\n\t\t// envelope\n\t\tworldStr += \"ENV \" + blip[id].envelope.attack\n\t\t\t+ \" \" + blip[id].envelope.decay\n\t\t\t+ \" \" + blip[id].envelope.sustain\n\t\t\t+ \" \" + blip[id].envelope.length\n\t\t\t+ \" \" + blip[id].envelope.release + \"\\n\";\n\t\t// beat\n\t\tworldStr += \"BEAT \" + blip[id].beat.time\n\t\t\t+ \" \" + blip[id].beat.delay + \"\\n\";\n\t\t// instrument (square wave type)\n\t\tworldStr += \"SQR \";\n\t\tswitch (blip[id].instrument) {\n\t\t\tcase SquareWave.P8:\n\t\t\t\tworldStr += \"P8\";\n\t\t\t\tbreak;\n\t\t\tcase SquareWave.P4:\n\t\t\t\tworldStr += \"P4\";\n\t\t\t\tbreak;\n\t\t\tcase SquareWave.P2:\n\t\t\t\tworldStr += \"P2\";\n\t\t\t\tbreak;\n\t\t}\n\t\tworldStr += \"\\n\";\n\t\t// other parameters\n\t\tif (blip[id].doRepeat === true) {\n\t\t\tworldStr += \"RPT 1\\n\";\n\t\t}\n\t\t// TODO : consider for future update\n\t\t// if (blip[id].doSlide === true) {\n\t\t// \tworldStr += \"SLD 1\\n\";\n\t\t// }\n\t\tworldStr += \"\\n\";\n\t}\n\t/* FONT */\n\t// TODO : support multiple fonts\n\tif (fontManager && fontName != defaultFontName && !skipFonts) {\n\t\tworldStr += fontManager.GetData(fontName);\n\t}\n\n\treturn worldStr;\n}\n\nfunction serializeDrawing(drwId) {\n\tif (!renderer) {\n\t\treturn \"\";\n\t}\n\n\tvar drawingData = renderer.GetDrawingSource(drwId);\n\tvar drwStr = \"\";\n\tfor (f in drawingData) {\n\t\tfor (y in drawingData[f]) {\n\t\t\tvar rowStr = \"\";\n\t\t\tfor (x in drawingData[f][y]) {\n\t\t\t\trowStr += drawingData[f][y][x];\n\t\t\t}\n\t\t\tdrwStr += rowStr + \"\\n\";\n\t\t}\n\t\tif (f < (drawingData.length-1)) drwStr += \">\\n\";\n\t}\n\treturn drwStr;\n}\n\nfunction isExitValid(e) {\n\tvar hasValidStartPos = e.x >= 0 && e.x < bitsy.MAP_SIZE && e.y >= 0 && e.y < bitsy.MAP_SIZE;\n\tvar hasDest = e.dest != null;\n\tvar hasValidRoomDest = (e.dest.room != null && e.dest.x >= 0 && e.dest.x < bitsy.MAP_SIZE && e.dest.y >= 0 && e.dest.y < bitsy.MAP_SIZE);\n\treturn hasValidStartPos && hasDest && hasValidRoomDest;\n}\n\nfunction setTile(mapId, x, y, tileId) {\n\tbitsy.set(mapId, (y * bitsy.MAP_SIZE) + x, tileId);\n}\n\nfunction drawTile(tileId, x, y) {\n\tsetTile(bitsy.MAP1, x, y, tileId);\n}\n\nfunction drawSprite(tileId, x, y) {\n\tsetTile(bitsy.MAP2, x, y, tileId);\n}\n\nfunction drawItem(tileId, x, y) {\n\tsetTile(bitsy.MAP2, x, y, tileId);\n}\n\n// var debugLastRoomDrawn = \"0\";\n\nfunction clearRoom() {\n\tvar paletteId = \"default\";\n\n\tif (room === undefined) {\n\t\t// protect against invalid rooms\n\t\treturn;\n\t}\n\n\tif (room.pal != null && palette[paletteId] != undefined) {\n\t\tpaletteId = room.pal;\n\t}\n\n\t// clear background & foreground\n\tbitsy.fill(bitsy.MAP1, 0);\n\tbitsy.fill(bitsy.MAP2, 0);\n}\n\nfunction drawRoomBackground(room, frameIndex, redrawAnimatedOnly) {\n\tif (!redrawAnimatedOnly) {\n\t\t// clear background map\n\t\tbitsy.fill(bitsy.MAP1, 0);\n\t}\n\n\t// NOTE: interestingly the slowest part of this is iterating over all the tiles, not actually drawing them\n\tfor (var y = 0; y < bitsy.MAP_SIZE; y++) {\n\t\tfor (var x = 0; x < bitsy.MAP_SIZE; x++) {\n\t\t\tvar id = room.tilemap[y][x];\n\n\t\t\tif (id != \"0\" && tile[id] == null) { // hack-around to avoid corrupting files (not a solution though!)\n\t\t\t\tid = \"0\";\n\t\t\t\troom.tilemap[y][x] = id;\n\t\t\t}\n\n\t\t\tif (id != \"0\" && (!redrawAnimatedOnly || tile[id].animation.isAnimated)) {\n\t\t\t\tdrawTile(getTileFrame(tile[id], frameIndex), x, y);\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction drawRoomForeground(room, frameIndex, redrawAnimatedOnly) {\n\tif (!redrawAnimatedOnly) {\n\t\t// clear foreground map\n\t\tbitsy.fill(bitsy.MAP2, 0);\n\t}\n\n\t// draw items\n\tfor (var i = 0; i < room.items.length; i++) {\n\t\tvar itm = room.items[i];\n\t\tif (!redrawAnimatedOnly || item[itm.id].animation.isAnimated) {\n\t\t\tdrawItem(getItemFrame(item[itm.id], frameIndex), itm.x, itm.y);\n\t\t}\n\t}\n\n\t// draw sprites\n\tfor (id in sprite) {\n\t\tvar spr = sprite[id];\n\t\tif (id != playerId && spr.room === room.id && (!redrawAnimatedOnly || spr.animation.isAnimated)) {\n\t\t\tdrawSprite(getSpriteFrame(spr, frameIndex), spr.x, spr.y);\n\t\t}\n\t}\n}\n\nfunction drawRoomForegroundTile(room, frameIndex, x, y) {\n\t// draw items\n\tfor (var i = 0; i < room.items.length; i++) {\n\t\tvar itm = room.items[i];\n\t\tif (itm.x === x && itm.y === y) {\n\t\t\tdrawItem(getItemFrame(item[itm.id], frameIndex), itm.x, itm.y);\n\t\t}\n\t}\n\n\t// draw sprites\n\tfor (id in sprite) {\n\t\tvar spr = sprite[id];\n\t\tif (id != playerId && spr.room === room.id && spr.x === x && spr.y === y) {\n\t\t\tdrawSprite(getSpriteFrame(spr, frameIndex), spr.x, spr.y);\n\t\t}\n\t}\n}\n\nfunction drawRoom(room, args) {\n\tif (room === undefined || isNarrating) {\n\t\t// protect against invalid rooms\n\t\treturn;\n\t}\n\n\tvar redrawAll = args && (args.redrawAll === true);\n\tvar redrawAnimated = args && (args.redrawAnimated === true);\n\tvar redrawAvatar = args && (args.redrawAvatar === true);\n\tvar frameIndex = args ? args.frameIndex : undefined;\n\n\t// if *only* redrawing the avatar, first clear its previous position\n\tif (redrawAvatar) {\n\t\tsetTile(bitsy.MAP2, playerPrevX, playerPrevY, 0);\n\t\t// also redraw any sprite or item that might be \"under\" the player (todo: possible perf issue?)\n\t\tdrawRoomForegroundTile(room, frameIndex, playerPrevX, playerPrevY);\n\t}\n\n\t// draw background & foreground tiles\n\tif (redrawAll || redrawAnimated) {\n\t\t// draw tiles\n\t\tdrawRoomBackground(room, frameIndex, redrawAnimated);\n\t\t// draw sprites & items\n\t\tdrawRoomForeground(room, frameIndex, redrawAnimated);\n\t}\n\n\t// draw the player's avatar at its current position\n\tif ((redrawAll || redrawAnimated || redrawAvatar) && sprite[playerId] && sprite[playerId].room === room.id) {\n\t\tvar spr = sprite[playerId];\n\t\tvar x = spr.x;\n\t\tvar y = spr.y;\n\n\t\t// get the avatar override sprite (if there is one)\n\t\tif (state.ava && state.ava != playerId && sprite[state.ava]) {\n\t\t\tspr = sprite[state.ava];\n\t\t}\n\n\t\tdrawSprite(getSpriteFrame(spr, frameIndex), x, y);\n\t}\n}\n\n// TODO : remove these get*Image methods\nfunction getTileFrame(t, frameIndex) {\n\tif (!renderer) {\n\t\treturn null;\n\t}\n\treturn renderer.GetDrawingFrame(t, frameIndex);\n}\n\nfunction getSpriteFrame(s, frameIndex) {\n\tif (!renderer) {\n\t\treturn null;\n\t}\n\treturn renderer.GetDrawingFrame(s, frameIndex);\n}\n\nfunction getItemFrame(itm, frameIndex) {\n\tif (!renderer) {\n\t\treturn null;\n\t}\n\treturn renderer.GetDrawingFrame(itm, frameIndex);\n}\n\nfunction curDefaultPal() {\n\treturn getRoomPal(state.room);\n}\n\nfunction getRoomPal(roomId) {\n\tvar defaultId = \"default\";\n\n\tif (roomId == null) {\n\t\treturn defaultId;\n\t}\n\telse if (room[roomId].pal != null) {\n\t\t//a specific palette was chosen\n\t\treturn room[roomId].pal;\n\t}\n\telse {\n\t\tif (roomId in palette) {\n\t\t\t//there is a palette matching the name of the room\n\t\t\treturn roomId;\n\t\t}\n\t\telse {\n\t\t\t//use the default palette\n\t\t\treturn defaultId;\n\t\t}\n\t}\n\treturn defaultId;\n}\n\nvar isDialogMode = false;\nvar isNarrating = false;\nvar isEnding = false;\n\nvar dialogModule;\nvar dialogRenderer;\nvar dialogBuffer;\nif (engineFeatureFlags.isDialogEnabled) {\n\tdialogModule = new Dialog();\n\tdialogRenderer = dialogModule.CreateRenderer();\n\tdialogBuffer = dialogModule.CreateBuffer();\n}\n\nvar fontManager;\nif (engineFeatureFlags.isFontEnabled) {\n\tfontManager = new FontManager();\n}\n\n// TODO : is this scriptResult thing being used anywhere???\nfunction onExitDialog(scriptResult, dialogCallback) {\n\tisDialogMode = false;\n\tbitsy.textbox(false);\n\n\tif (isNarrating) {\n\t\tisNarrating = false;\n\n\t\t// redraw the room\n\t\tdrawRoom(room[state.room], { redrawAll: true });\n\t}\n\n\tif (isDialogPreview) {\n\t\tisDialogPreview = false;\n\n\t\tif (onDialogPreviewEnd != null) {\n\t\t\tonDialogPreviewEnd();\n\t\t}\n\t}\n\n\tif (dialogCallback != undefined && dialogCallback != null) {\n\t\tdialogCallback(scriptResult);\n\t}\n\n\tif (soundPlayer) {\n\t\tsoundPlayer.resumeTune();\n\t}\n}\n\n/*\nTODO\n- titles and endings should also take advantage of the script pre-compilation if possible??\n- could there be a namespace collision?\n- what about dialog NAMEs vs IDs?\n- what about a special script block separate from DLG?\n*/\nfunction startNarrating(dialogStr, end) {\n\tbitsy.log(\"NARRATE \" + dialogStr);\n\n\tif(end === undefined) {\n\t\tend = false;\n\t}\n\n\tisNarrating = true;\n\tisEnding = end;\n\n\tif (isEnding && soundPlayer) {\n\t\tsoundPlayer.stopTune();\n\t}\n\n\t// clear the room tiles before narrating\n\tbitsy.fill(bitsy.MAP1, 0);\n\tbitsy.fill(bitsy.MAP2, 0);\n\n\tstartDialog(dialogStr);\n}\n\nfunction startEndingDialog(ending) {\n\tisNarrating = true;\n\tisEnding = true;\n\n\tvar endingScriptId = ending.id;\n\tvar endingDialogStr = dialog[ending.id].src;\n\n\t// compatibility with pre-7.0 endings\n\tif (flags.DLG_COMPAT === 1 && end[ending.id]) {\n\t\tendingScriptId = \"end_compat_\" + ending.id;\n\t\tendingDialogStr = end[ending.id].src;\n\t}\n\n\tvar tmpTuneId = null;\n\tif (isEnding && soundPlayer) {\n\t\ttmpTuneId = soundPlayer.getCurTuneId();\n\t\tsoundPlayer.stopTune();\n\t}\n\n\tstartDialog(\n\t\tendingDialogStr,\n\t\tendingScriptId,\n\t\tfunction() {\n\t\t\tvar isLocked = ending.property && ending.property.locked === true;\n\t\t\tif (isLocked) {\n\t\t\t\tisEnding = false;\n\n\t\t\t\t// if the ending was cancelled, restart the music\n\t\t\t\t// todo : should it resume from where it started? (right now it starts over)\n\t\t\t\tif (tmpTuneId && soundPlayer && !soundPlayer.isTunePlaying()) {\n\t\t\t\t\tsoundPlayer.playTune(tune[tmpTuneId]);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tending);\n}\n\nfunction startItemDialog(itemId, dialogCallback) {\n\tvar dialogId = item[itemId].dlg;\n\t// bitsy.log(\"START ITEM DIALOG \" + dialogId);\n\tif (dialog[dialogId]) {\n\t\tvar dialogStr = dialog[dialogId].src;\n\t\tstartDialog(dialogStr, dialogId, dialogCallback);\n\t}\n\telse {\n\t\tdialogCallback();\n\t}\n}\n\nfunction startSpriteDialog(spriteId) {\n\tvar spr = sprite[spriteId];\n\tvar dialogId = spr.dlg;\n\n\t// back compat for when dialog IDs were implicitly the same as sprite IDs\n\tif (flags.DLG_COMPAT === 1 && (dialogId === undefined || dialogId === null)) {\n\t\tdialogId = spr.id;\n\t}\n\n\t// bitsy.log(\"START SPRITE DIALOG \" + dialogId);\n\tif (dialog[dialogId]){\n\t\tvar dialogStr = dialog[dialogId].src;\n\t\tstartDialog(dialogStr, dialogId);\n\t}\n}\n\nfunction startDialog(dialogStr, scriptId, dialogCallback, objectContext) {\n\tbitsy.log(\"START DIALOG\");\n\n\tif (soundPlayer) {\n\t\tsoundPlayer.pauseTune();\n\t}\n\n\tif (dialogStr.length <= 0) {\n\t\tonExitDialog(null, dialogCallback);\n\t\treturn;\n\t}\n\n\tif (!dialogBuffer) {\n\t\tbitsy.log(dialogStr);\n\t\tonExitDialog(null, dialogCallback);\n\t\treturn;\n\t}\n\n\tif (!scriptInterpreter) {\n\t\tdialogRenderer.Reset();\n\t\tdialogRenderer.SetCentered(isNarrating /*centered*/);\n\t\tdialogBuffer.Reset();\n\t\tdialogBuffer.AddText(dialogStr);\n\t\tdialogBuffer.OnDialogEnd(function() {\n\t\t\tonExitDialog(null, dialogCallback);\n\t\t});\n\t\tbitsy.log(\"dialog start end\");\n\t\treturn;\n\t};\n\n\tisDialogMode = true;\n\n\tdialogRenderer.Reset();\n\tdialogRenderer.SetCentered(isNarrating /*centered*/);\n\tdialogBuffer.Reset();\n\tscriptInterpreter.SetDialogBuffer(dialogBuffer);\n\n\tvar onScriptEnd = function(scriptResult) {\n\t\tdialogBuffer.OnDialogEnd(function() {\n\t\t\tonExitDialog(scriptResult, dialogCallback);\n\t\t});\n\t};\n\n\tif (scriptId === undefined) { // TODO : what's this for again?\n\t\tscriptInterpreter.Interpret(dialogStr, onScriptEnd);\n\t}\n\telse {\n\t\tif (!scriptInterpreter.HasScript(scriptId)) {\n\t\t\tscriptInterpreter.Compile(scriptId, dialogStr);\n\t\t}\n\t\t// scriptInterpreter.DebugVisualizeScript(scriptId);\n\t\tscriptInterpreter.Run(scriptId, onScriptEnd, objectContext);\n\t}\n\n}\n\nvar isDialogPreview = false;\nfunction startPreviewDialog(script, dialogCallback) {\n\tif (!scriptInterpreter || !dialogBuffer) {\n\t\treturn;\n\t}\n\n\tisNarrating = true;\n\n\tisDialogMode = true;\n\n\tisDialogPreview = true;\n\n\tdialogRenderer.Reset();\n\tdialogRenderer.SetCentered(true);\n\tdialogBuffer.Reset();\n\tscriptInterpreter.SetDialogBuffer(dialogBuffer);\n\n\t// TODO : do I really need a seperate callback for this debug mode??\n\tonDialogPreviewEnd = dialogCallback;\n\n\tvar onScriptEndCallback = function(scriptResult) {\n\t\tdialogBuffer.OnDialogEnd(function() {\n\t\t\tonExitDialog(scriptResult, null);\n\t\t});\n\t};\n\n\tscriptInterpreter.Eval(script, onScriptEndCallback);\n}\n\n/* NEW SCRIPT STUFF */\nvar scriptModule;\nvar scriptInterpreter;\nvar scriptUtils;\n// scriptInterpreter.SetDialogBuffer( dialogBuffer );\nif (engineFeatureFlags.isScriptEnabled) {\n\tbitsy.log(\"init script module\");\n\tscriptModule = new Script();\n\tbitsy.log(\"init interpreter\");\n\tscriptInterpreter = scriptModule.CreateInterpreter();\n\tbitsy.log(\"init utils\");\n\tscriptUtils = scriptModule.CreateUtils(); // TODO: move to editor.js?\n\tbitsy.log(\"init script module end\");\n}\n\n/* SOUND */\nvar soundPlayer;\nif (engineFeatureFlags.isSoundEnabled) {\n\tsoundPlayer = new SoundPlayer();\n}\n\n/* EVENTS */\nbitsy.loop(update);", + "renderer.js": "function TileRenderer(debugName) {\nbitsy.log(\"!!!!! NEW TILE RENDERER: \" + debugName);\n\nvar drawingCache = {\n\tsource: {},\n\trender: {},\n};\n\n// var debugRenderCount = 0;\n\nfunction createRenderCacheId(drawingId, colorIndex) {\n\treturn drawingId + \"_\" + colorIndex;\n}\n\nfunction renderDrawing(drawing) {\n\t// debugRenderCount++;\n\t// bitsy.log(\"RENDER COUNT \" + debugRenderCount);\n\n\tvar col = drawing.col;\n\tvar bgc = drawing.bgc;\n\tvar drwId = drawing.drw;\n\tvar drawingFrames = drawingCache.source[drwId];\n\n\t// initialize render cache entry\n\tvar cacheId = createRenderCacheId(drwId, col);\n\tif (drawingCache.render[cacheId] === undefined) {\n\t\t// initialize array of frames for drawing\n\t\tdrawingCache.render[cacheId] = [];\n\t}\n\n\tfor (var i = 0; i < drawingFrames.length; i++) {\n\t\tvar frameData = drawingFrames[i];\n\t\tvar frameTileId = renderTileFromDrawingData(frameData, col, bgc);\n\t\tdrawingCache.render[cacheId].push(frameTileId);\n\t}\n}\n\nfunction renderTileFromDrawingData(drawingData, col, bgc) {\n\tvar tileId = bitsy.tile();\n\n\tvar backgroundColor = tileColorStartIndex + bgc;\n\tvar foregroundColor = tileColorStartIndex + col;\n\n\tbitsy.fill(tileId, backgroundColor);\n\n\tfor (var y = 0; y < bitsy.TILE_SIZE; y++) {\n\t\tfor (var x = 0; x < bitsy.TILE_SIZE; x++) {\n\t\t\tvar px = drawingData[y][x];\n\t\t\tif (px === 1) {\n\t\t\t\tbitsy.set(tileId, (y * bitsy.TILE_SIZE) + x, foregroundColor);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn tileId;\n}\n\n// TODO : move into core\nfunction undefinedOrNull(x) {\n\treturn x === undefined || x === null;\n}\n\nfunction isDrawingRendered(drawing) {\n\tvar cacheId = createRenderCacheId(drawing.drw, drawing.col);\n\treturn drawingCache.render[cacheId] != undefined;\n}\n\nfunction getRenderedDrawingFrames(drawing) {\n\tvar cacheId = createRenderCacheId(drawing.drw, drawing.col);\n\treturn drawingCache.render[cacheId];\n}\n\nfunction getDrawingFrameTileId(drawing, frameOverride) {\n\tvar frameIndex = 0;\n\n\tif (drawing != null && drawing.animation.isAnimated) {\n\t\tif (frameOverride != undefined && frameOverride != null) {\n\t\t\tframeIndex = frameOverride;\n\t\t}\n\t\telse {\n\t\t\tframeIndex = drawing.animation.frameIndex;\n\t\t}\n\t}\n\n\treturn getRenderedDrawingFrames(drawing)[frameIndex];\n}\n\nfunction getOrRenderDrawingFrame(drawing, frameOverride) {\n\t// bitsy.log(\"frame render: \" + drawing.type + \" \" + drawing.id + \" f:\" + frameOverride);\n\n\tif (!isDrawingRendered(drawing)) {\n\t\tbitsy.log(\"frame render: doesn't exist \" + drawing.id);\n\t\trenderDrawing(drawing);\n\t}\n\n\treturn getDrawingFrameTileId(drawing, frameOverride);\n}\n\nfunction deleteRenders(drawingId) {\n\tfor (var cacheId in drawingCache.render) {\n\t\tif (cacheId.indexOf(drawingId) === 0) {\n\t\t\tvar tiles = drawingCache.render[cacheId];\n\t\t\tfor (var i = 0; i < tiles.length; i++) {\n\t\t\t\tbitsy.delete(tiles[i]);\n\t\t\t}\n\t\t\tdelete drawingCache.render[cacheId];\n\t\t}\n\t}\n}\n\n/* PUBLIC INTERFACE */\nthis.GetDrawingFrame = getOrRenderDrawingFrame;\n\n// todo : leave individual get and set stuff for now - should I remove later?\n// todo : better name for function?\nthis.SetDrawings = function(drawingSource) {\n\tdrawingCache.source = drawingSource;\n\t// need to reset entire render cache when all the drawings are changed\n\tdrawingCache.render = {};\n};\n\nthis.SetDrawingSource = function(drawingId, drawingData) {\n\tdeleteRenders(drawingId);\n\tdrawingCache.source[drawingId] = drawingData;\n};\n\nthis.GetDrawingSource = function(drawingId) {\n\treturn drawingCache.source[drawingId];\n};\n\nthis.GetFrameCount = function(drawingId) {\n\treturn drawingCache.source[drawingId].length;\n};\n\n// todo : forceReset option is hacky?\nthis.ClearCache = function(forceReset) {\n\tif (forceReset === undefined || forceReset === true) {\n\t\t// delete all tiles from system memory before clearing the cache\n\t\tfor (var cacheId in drawingCache.render) {\n\t\t\tvar tiles = drawingCache.render[cacheId];\n\t\t\tfor (var i = 0; i < tiles.length; i++) {\n\t\t\t\tbitsy.delete(tiles[i]);\n\t\t\t}\n\t\t}\n\t}\n\n\tdrawingCache.render = {};\n};\n\nthis.deleteDrawing = deleteRenders;\n\n} // Renderer()", + "bitsy.js": "/* WORLD DATA */\nvar room = {};\nvar tile = {};\nvar sprite = {};\nvar item = {};\nvar dialog = {};\nvar end = {}; // for backwards compatibility\nvar palette = { // start off with a default palette\n\t\t\"default\" : {\n\t\t\tname : \"default\",\n\t\t\tcolors : [[0,0,0],[255,255,255],[255,255,255]]\n\t\t}\n\t};\nvar variable = {}; // these are starting variable values -- they don't update (or I don't think they will)\nvar tune = {};\nvar blip = {};\nvar playerId = \"A\";\nvar fontName = defaultFontName;\nvar textDirection = TextDirection.LeftToRight;\n\n/* NAME-TO-ID MAPS */\nvar names = {\n\troom : {},\n\ttile : {},\n\tsprite : {},\n\titem : {},\n\tdialog : {},\n\tpalette : {},\n\ttune : {},\n\tblip : {},\n};\n\n// todo : this is basically a copy of the one in world.js - can I remove it?\nfunction updateNamesFromCurData() {\n\n\tfunction createNameMap(objectStore) {\n\t\tvar map = {};\n\n\t\tfor (id in objectStore) {\n\t\t\tif (objectStore[id].name != undefined && objectStore[id].name != null) {\n\t\t\t\tmap[objectStore[id].name] = id;\n\t\t\t}\n\t\t}\n\n\t\treturn map;\n\t}\n\n\tnames.room = createNameMap(room);\n\tnames.tile = createNameMap(tile);\n\tnames.sprite = createNameMap(sprite);\n\tnames.item = createNameMap(item);\n\tnames.dialog = createNameMap(dialog);\n\tnames.palette = createNameMap(palette);\n\tnames.tune = createNameMap(tune);\n\tnames.blip = createNameMap(blip);\n}\n\n/* GAME STATE */\nvar state = {}\nfunction resetGameState() {\n\tstate.room = \"0\";\n\tstate.ava = playerId; // avatar appearance override\n\tstate.pal = \"0\"; // current palette id\n\tstate.tune = \"0\"; // current tune id (\"0\" === off)\n\tstate.exits = []; // exits in current room\n\tstate.endings = []; // endings in current room\n}\n\n// title helper functions\nfunction getTitle() {\n\treturn dialog[titleDialogId].src;\n}\nfunction setTitle(titleSrc) {\n\tdialog[titleDialogId] = { src:titleSrc, name:null };\n}\n\n/* FLAGS */\nvar flags = createDefaultFlags();\n\n// feature flags for testing purposes\nvar engineFeatureFlags = {\n\tisSoundEnabled : true,\n\tisFontEnabled : true,\n\tisTransitionEnabled : true,\n\tisScriptEnabled : true,\n\tisDialogEnabled : true,\n\tisRendererEnabled : true,\n};\n\nfunction clearGameData() {\n\troom = {};\n\ttile = {};\n\tsprite = {};\n\titem = {};\n\tdialog = {};\n\tpalette = { //start off with a default palette\n\t\t\"default\" : {\n\t\t\tname : \"default\",\n\t\t\tcolors : [[0,0,0],[255,255,255],[255,255,255]]\n\t\t}\n\t};\n\tisEnding = false; //todo - correct place for this?\n\tvariable = {};\n\n\tupdateNamesFromCurData();\n\n\tfontName = defaultFontName; // TODO : reset font manager too?\n\ttextDirection = TextDirection.LeftToRight;\n\n\tresetGameState();\n\n\tisGameLoaded = false;\n\tisGameOver = false;\n}\n\n// engine event hooks for the editor\nvar onInventoryChanged = null;\nvar onVariableChanged = null;\nvar onGameReset = null;\nvar onInitRoom = null;\n\nvar isPlayerEmbeddedInEditor = false;\n\nvar renderer;\nif (engineFeatureFlags.isRendererEnabled) {\n\trenderer = new TileRenderer(\"bitsy\");\n}\n\nvar curGameData = null;\nvar curDefaultFontData = null;\n\nvar isGameLoaded = false;\nvar isGameOver = false;\n\nfunction load_game(gameData, defaultFontData, startWithTitle) {\n\t// bitsy.log(\"game data in: \\n\" + gameData);\n\n\tcurGameData = gameData; //remember the current game (used to reset the game)\n\n\tif (dialogBuffer) {\n\t\tdialogBuffer.Reset();\n\t}\n\n\tif (scriptInterpreter) {\n\t\tscriptInterpreter.ResetEnvironment(); // ensures variables are reset -- is this the best way?\n\t}\n\n\tloadWorldFromGameData(gameData);\n\n\tbitsy.log(\"world loaded\");\n\n\tif (fontManager && !isPlayerEmbeddedInEditor && defaultFontData) {\n\t\tbitsy.log(\"load font\");\n\n\t\tcurDefaultFontData = defaultFontData; // store for resetting game\n\n\t\t// todo : consider replacing this with a more general system for requesting resources from the system?\n\t\t// hack to ensure default font is available\n\t\tfontManager.AddResource(defaultFontName + fontManager.GetExtension(), defaultFontData);\n\n\t\tbitsy.log(\"load font end\");\n\t}\n\n\t// request text mode\n\tif (flags.TXT_MODE === 1) {\n\t\tbitsy.textMode(bitsy.TXT_LOREZ);\n\t}\n\telse {\n\t\t// default to 2x scale for text rendering\n\t\tbitsy.textMode(bitsy.TXT_HIREZ);\n\t}\n\n\tif (fontManager && dialogBuffer) {\n\t\tbitsy.log(\"get font\");\n\n\t\tvar font = fontManager.Get( fontName );\n\t\tdialogBuffer.SetFont(font);\n\t\tdialogRenderer.SetFont(font);\n\n\t\tbitsy.log(\"get font end\");\n\t}\n\n\tif (dialogBuffer) {\n\t\t// this feels a little silly to me - oh well??\n\t\tdialogBuffer.SetPixelsPerRow(dialogRenderer.GetPixelsPerRow());\n\t}\n\n\tsetInitialVariables();\n\n\tbitsy.log(\"ready\");\n\n\tonready(startWithTitle);\n\n\tisGameLoaded = true;\n}\n\nfunction loadWorldFromGameData(gameData) {\n\tbitsy.log(\"load world from game data\");\n\n\tvar world = parseWorld(gameData);\n\n\tbitsy.log(\"parse world done\");\n\n\t// move world data into global scope\n\tpalette = world.palette;\n\troom = world.room;\n\ttile = world.tile;\n\tsprite = world.sprite;\n\titem = world.item;\n\tdialog = world.dialog;\n\tend = world.end; // back compat endings\n\tvariable = world.variable;\n\tfontName = world.fontName;\n\ttextDirection = world.textDirection;\n\ttune = world.tune;\n\tblip = world.blip;\n\tflags = world.flags;\n\tnames = world.names;\n\n\tif (renderer) {\n\t\trenderer.SetDrawings(world.drawings);\n\t}\n\n\t// find starting room and initialize it\n\tvar roomIds = Object.keys(room);\n\n\tif (player() != undefined && player().room != null && roomIds.indexOf(player().room) != -1) {\n\t\t// player has valid room\n\t\tstate.room = player().room;\n\t}\n\telse if (roomIds.length > 0) {\n\t\t// player not in any room! what the heck\n\t\tstate.room = roomIds[0];\n\t}\n\telse {\n\t\t// uh oh there are no rooms I guess???\n\t\tstate.room = null;\n\t}\n\n\tif (state.room != null) {\n\t\tbitsy.log(\"INIT ROOM \" + state.room);\n\t\tinitRoom(state.room);\n\t}\n}\n\nfunction reset_cur_game() {\n\tif (curGameData == null) {\n\t\treturn; //can't reset if we don't have the game data\n\t}\n\n\tstopGame();\n\tclearGameData();\n\n\tif (isPlayerEmbeddedInEditor && onGameReset != null) {\n\t\tonGameReset();\n\t}\n}\n\nfunction onready(startWithTitle) {\n\tbitsy.log(\"game ready!\");\n\n\tif (startWithTitle === undefined || startWithTitle === null) {\n\t\tstartWithTitle = true;\n\t}\n\n\tif (startWithTitle) { // used by editor \n\t\tstartNarrating(getTitle());\n\t}\n}\n\nfunction setInitialVariables() {\n\tif (!scriptInterpreter) {\n\t\treturn;\n\t}\n\n\tfor(id in variable) {\n\t\tvar value = variable[id]; // default to string\n\t\tif(value === \"true\") {\n\t\t\tvalue = true;\n\t\t}\n\t\telse if(value === \"false\") {\n\t\t\tvalue = false;\n\t\t}\n\t\telse if(!isNaN(parseFloat(value))) {\n\t\t\tvalue = parseFloat(value);\n\t\t}\n\t\tscriptInterpreter.SetVariable(id,value);\n\t}\n\tscriptInterpreter.SetOnVariableChangeHandler( onVariableChanged );\n}\n\nfunction getOffset(evt) {\n\tvar offset = { x:0, y:0 };\n\n\tvar el = evt.target;\n\tvar rect = el.getBoundingClientRect();\n\n\toffset.x += rect.left + el.scrollLeft;\n\toffset.y += rect.top + el.scrollTop;\n\n\toffset.x = evt.clientX - offset.x;\n\toffset.y = evt.clientY - offset.y;\n\n\treturn offset;\n}\n\nfunction stopGame() {\n\tif (soundPlayer) {\n\t\tsoundPlayer.stopTune();\n\t}\n\tbitsy.log(\"stop GAME!\");\n}\n\nfunction update(dt) {\n\tif (!isGameLoaded) {\n\t\tload_game(bitsy.getGameData(), bitsy.getFontData());\n\t}\n\n\tif (state.room == null) {\n\t\t// in the special case where there is no valid room, end the game\n\t\tstartNarrating( \"\", true /*isEnding*/ );\n\t}\n\n\tif (!transition || !transition.IsTransitionActive()) {\n\t\tupdateInput();\n\t}\n\n\tif (transition && transition.IsTransitionActive()) {\n\t\t// transition animation takes over everything!\n\t\ttransition.UpdateTransition(dt);\n\t}\n\telse {\n\t\tif (bitsy.graphicsMode() != bitsy.GFX_MAP) {\n\t\t\tbitsy.graphicsMode(bitsy.GFX_MAP);\n\t\t}\n\n\t\tif (soundPlayer) {\n\t\t\tsoundPlayer.update(dt);\n\t\t}\n\n\t\tif (!isNarrating && !isEnding) {\n\t\t\t// draw world if game has begun\n\t\t\tvar didAnimate = updateAnimation(dt);\n\n\t\t\t// test whether player moved so we can redraw just the avatar\n\t\t\tplayerCurX = player().x;\n\t\t\tplayerCurY = player().y;\n\t\t\tvar didPlayerMove = (playerPrevX != playerCurX) || (playerPrevY != playerCurY);\n\n\t\t\tdrawRoom(room[state.room], { redrawAnimated: didAnimate, redrawAvatar: didPlayerMove });\n\n\t\t\t// store player's position for next frame\n\t\t\tplayerPrevX = playerCurX;\n\t\t\tplayerPrevY = playerCurY;\n\t\t}\n\t\telse {\n\t\t\tclearRoom();\n\t\t}\n\n\t\tif (dialogBuffer && dialogBuffer.IsActive() && !(soundPlayer && soundPlayer.isBlipPlaying())) {\n\t\t\t// bitsy.log(\"update dialog\");\n\t\t\t// bitsy.log(\"renderer\");\n\t\t\tdialogRenderer.Draw(dialogBuffer, dt);\n\t\t\t// bitsy.log(\"buffer\");\n\t\t\tdialogBuffer.Update(dt);\n\t\t\t// bitsy.log(\"update dialog end\");\n\t\t}\n\n\t\t// keep moving avatar if player holds down button\n\t\tif ((!dialogBuffer || !dialogBuffer.IsActive()) && !isEnding) {\n\t\t\tif (curPlayerDirection != Direction.None) {\n\t\t\t\tplayerHoldToMoveTimer -= dt;\n\n\t\t\t\tif (playerHoldToMoveTimer <= 0) {\n\t\t\t\t\tmovePlayer(curPlayerDirection, false /* isFirstMove */);\n\t\t\t\t\tplayerHoldToMoveTimer = 150;\n\t\t\t\t\t// playerHoldToMoveTimer = 16; // PERF TEST\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// clean up state if the game is ending\n\tif (isGameOver) {\n\t\tbitsy.log(\"game over\");\n\t\treset_cur_game();\n\t}\n\n\treturn true;\n}\n\nvar isAnyButtonHeld = false;\nvar isMenuButtonHeld = false;\nvar isIgnoringInput = false;\n\nfunction isAnyButtonDown() {\n\treturn bitsy.button(bitsy.BTN_UP) ||\n\t\tbitsy.button(bitsy.BTN_DOWN) ||\n\t\tbitsy.button(bitsy.BTN_LEFT) ||\n\t\tbitsy.button(bitsy.BTN_RIGHT) ||\n\t\tbitsy.button(bitsy.BTN_OK);\n}\n\nfunction updateInput() {\n\tif (dialogBuffer && dialogBuffer.IsActive()) {\n\t\tif (!(soundPlayer && soundPlayer.isBlipPlaying())) {\n\t\t\tif (!isAnyButtonHeld && isAnyButtonDown()) {\n\t\t\t\t/* CONTINUE DIALOG */\n\t\t\t\tif (dialogBuffer.CanContinue()) {\n\t\t\t\t\tvar hasMoreDialog = dialogBuffer.Continue();\n\t\t\t\t\tif (!hasMoreDialog) {\n\t\t\t\t\t\t// ignore currently held keys UNTIL they are released (stops player from insta-moving)\n\t\t\t\t\t\tisIgnoringInput = true;\n\t\t\t\t\t\tcurPlayerDirection = Direction.None;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tdialogBuffer.Skip();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\telse if (isEnding) {\n\t\tif (!isAnyButtonHeld && isAnyButtonDown()) {\n\t\t\t// tell game to restart\n\t\t\tisGameOver = true;\n\t\t}\n\t}\n\telse if (!isIgnoringInput) {\n\t\t/* WALK */\n\t\tvar prevPlayerDirection = curPlayerDirection;\n\n\t\tif (bitsy.button(bitsy.BTN_UP)) {\n\t\t\tcurPlayerDirection = Direction.Up;\n\t\t}\n\t\telse if (bitsy.button(bitsy.BTN_DOWN)) {\n\t\t\tcurPlayerDirection = Direction.Down;\n\t\t}\n\t\telse if (bitsy.button(bitsy.BTN_LEFT)) {\n\t\t\tcurPlayerDirection = Direction.Left;\n\t\t}\n\t\telse if (bitsy.button(bitsy.BTN_RIGHT)) {\n\t\t\tcurPlayerDirection = Direction.Right;\n\t\t}\n\t\telse {\n\t\t\tcurPlayerDirection = Direction.None;\n\t\t}\n\n\t\tif (curPlayerDirection != Direction.None && curPlayerDirection != prevPlayerDirection) {\n\t\t\tmovePlayer(curPlayerDirection, true /* isFirstMove */);\n\t\t\tplayerHoldToMoveTimer = 500;\n\t\t\t// playerHoldToMoveTimer = 32; // PERF TEST\n\t\t}\n\t}\n\n\tif (!isAnyButtonDown()) {\n\t\tisIgnoringInput = false;\n\t}\n\n\t// quit when the user releases the restart button\n\t// todo : should I rename it bitsy.BTN_RESTART or bitsy.BTN_QUIT or bitsy.BTN_OFF?\n\tif (isMenuButtonHeld && !bitsy.button(bitsy.BTN_MENU)) {\n\t\tisGameOver = true;\n\t}\n\n\tisAnyButtonHeld = isAnyButtonDown();\n\tisMenuButtonHeld = bitsy.button(bitsy.BTN_MENU);\n}\n\nvar animationCounter = 0;\nvar animationTime = 400;\nfunction updateAnimation(dt) {\n\tanimationCounter += dt;\n\t// bitsy.log(\"anim \" + animationCounter);\n\tif (animationCounter >= animationTime) {\n\t\t// animate sprites\n\t\tfor (id in sprite) {\n\t\t\tvar spr = sprite[id];\n\t\t\tif (spr.animation.isAnimated) {\n\t\t\t\tspr.animation.frameIndex = (spr.animation.frameIndex + 1) % spr.animation.frameCount;\n\t\t\t}\n\t\t}\n\n\t\t// animate tiles\n\t\tfor (id in tile) {\n\t\t\tvar til = tile[id];\n\t\t\tif (til.animation.isAnimated) {\n\t\t\t\ttil.animation.frameIndex = (til.animation.frameIndex + 1) % til.animation.frameCount;\n\t\t\t}\n\t\t}\n\n\t\t// animate items\n\t\tfor (id in item) {\n\t\t\tvar itm = item[id];\n\t\t\tif (itm.animation.isAnimated) {\n\t\t\t\titm.animation.frameIndex = (itm.animation.frameIndex + 1) % itm.animation.frameCount;\n\t\t\t}\n\t\t}\n\n\t\t// reset counter\n\t\tanimationCounter = 0;\n\n\t\t// updated animations this frame\n\t\treturn true;\n\t}\n\n\t// did *not* update animations this frame\n\treturn false;\n}\n\nfunction resetAllAnimations() {\n\tfor (id in sprite) {\n\t\tvar spr = sprite[id];\n\t\tif (spr.animation.isAnimated) {\n\t\t\tspr.animation.frameIndex = 0;\n\t\t}\n\t}\n\n\tfor (id in tile) {\n\t\tvar til = tile[id];\n\t\tif (til.animation.isAnimated) {\n\t\t\ttil.animation.frameIndex = 0;\n\t\t}\n\t}\n\n\tfor (id in item) {\n\t\tvar itm = item[id];\n\t\tif (itm.animation.isAnimated) {\n\t\t\titm.animation.frameIndex = 0;\n\t\t}\n\t}\n}\n\nfunction getSpriteAt(x, y, roomId) {\n\tif (roomId === undefined) {\n\t\troomId = state.room;\n\t}\n\n\tfor (id in sprite) {\n\t\tvar spr = sprite[id];\n\t\tif (spr.room === roomId) {\n\t\t\tif (spr.x == x && spr.y == y) {\n\t\t\t\treturn id;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn null;\n}\n\nvar Direction = {\n\tNone : -1,\n\tUp : 0,\n\tDown : 1,\n\tLeft : 2,\n\tRight : 3\n};\n\nvar curPlayerDirection = Direction.None;\nvar playerHoldToMoveTimer = 0;\nvar playerPrevX = 0;\nvar playerPrevY = 0;\n\nfunction movePlayer(direction, isFirstMove) {\n\tdidPlayerMove = false;\n\tvar roomIds = Object.keys(room);\n\n\tif (player().room == null || roomIds.indexOf(player().room) < 0) {\n\t\treturn; // player room is missing or invalid.. can't move them!\n\t}\n\n\tvar spr = null;\n\n\tif (direction == Direction.Left && !(spr = getSpriteLeft()) && !isWallLeft()) {\n\t\tplayer().x -= 1;\n\t}\n\telse if (direction == Direction.Right && !(spr = getSpriteRight()) && !isWallRight()) {\n\t\tplayer().x += 1;\n\t}\n\telse if (direction == Direction.Up && !(spr = getSpriteUp()) && !isWallUp()) {\n\t\tplayer().y -= 1;\n\t}\n\telse if (direction == Direction.Down && !(spr = getSpriteDown()) && !isWallDown()) {\n\t\tplayer().y += 1;\n\t}\n\n\tvar ext = getExit( player().room, player().x, player().y );\n\tvar end = getEnding( player().room, player().x, player().y );\n\tvar itmIndex = getItemIndex( player().room, player().x, player().y );\n\n\t// only play one sound effect per \"turn\"\n\tvar blipId = null;\n\n\t// do items first, because you can pick up an item AND go through a door\n\tif (itmIndex > -1) {\n\t\tvar itm = room[player().room].items[itmIndex];\n\t\tvar itemRoom = player().room;\n\n\t\t// play sound on pitck up item\n\t\tif (item[itm.id].blip != null) {\n\t\t\tblipId = item[itm.id].blip;\n\t\t}\n\n\t\tstartItemDialog(itm.id, function() {\n\t\t\t// remove item from room\n\t\t\troom[itemRoom].items.splice(itmIndex, 1);\n\n\t\t\t// update player inventory\n\t\t\tif (player().inventory[itm.id]) {\n\t\t\t\tplayer().inventory[itm.id] += 1;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tplayer().inventory[itm.id] = 1;\n\t\t\t}\n\n\t\t\t// show inventory change in UI\n\t\t\tif (onInventoryChanged != null) {\n\t\t\t\tonInventoryChanged(itm.id);\n\t\t\t}\n\t\t});\n\t}\n\n\tif (end) {\n\t\tstartEndingDialog(end);\n\t}\n\telse if (ext) {\n\t\tmovePlayerThroughExit(ext);\n\t}\n\telse if (spr) {\n\t\t// play sound on greet sprite\n\t\tif (sprite[spr].blip != null) {\n\t\t\tblipId = sprite[spr].blip;\n\t\t}\n\n\t\tstartSpriteDialog(spr /*spriteId*/);\n\t}\n\n\t// TODO : maybe add in a future update?\n\t/*\n\t// play sound when player moves (if no other sound selected)\n\tif (isFirstMove && blipId === null && sprite[state.ava].blip != null) {\n\t\tblipId = sprite[state.ava].blip;\n\t\trandomizeBlip = true;\n\t\tblipChannel = bitsy.SOUND2; // play walking sfx *under* the tune melody\n\t}\n\t*/\n\n\tif (soundPlayer && blipId != null && blip[blipId]) {\n\t\tsoundPlayer.playBlip(blip[blipId]);\n\t}\n}\n\nvar transition;\nif (engineFeatureFlags.isTransitionEnabled) {\n\ttransition = new TransitionManager();\n}\n\nfunction movePlayerThroughExit(ext) {\n\tvar GoToDest = function() {\n\t\tif (transition && ext.transition_effect != null) {\n\t\t\ttransition.BeginTransition(\n\t\t\t\tplayer().room,\n\t\t\t\tplayer().x,\n\t\t\t\tplayer().y,\n\t\t\t\text.dest.room,\n\t\t\t\text.dest.x,\n\t\t\t\text.dest.y,\n\t\t\t\text.transition_effect);\n\n\t\t\ttransition.UpdateTransition(0);\n\n\t\t\ttransition.OnTransitionComplete(function() {\n\t\t\t\tplayer().room = ext.dest.room;\n\t\t\t\tplayer().x = ext.dest.x;\n\t\t\t\tplayer().y = ext.dest.y;\n\t\t\t\tstate.room = ext.dest.room;\n\t\t\t\tinitRoom(state.room);\n\t\t\t});\n\t\t}\n\t\telse {\n\t\t\tplayer().room = ext.dest.room;\n\t\t\tplayer().x = ext.dest.x;\n\t\t\tplayer().y = ext.dest.y;\n\t\t\tstate.room = ext.dest.room;\n\n\t\t\tinitRoom(state.room);\n\t\t}\n\t};\n\n\tif (ext.dlg != undefined && ext.dlg != null) {\n\t\t// TODO : I need to simplify dialog code,\n\t\t// so I don't have to get the ID and the source str\n\t\t// every time!\n\t\tstartDialog(\n\t\t\tdialog[ext.dlg].src,\n\t\t\text.dlg,\n\t\t\tfunction(result) {\n\t\t\t\tvar isLocked = ext.property && ext.property.locked === true;\n\t\t\t\tif (!isLocked) {\n\t\t\t\t\tGoToDest();\n\t\t\t\t}\n\t\t\t},\n\t\t\text);\n\t}\n\telse {\n\t\tGoToDest();\n\t}\n}\n\n/* PALETTE INDICES */\nvar backgroundIndex = 0;\nvar textBackgroundIndex = 1;\nvar textArrowIndex = 2;\nvar textColorIndex = 3;\n\n// precalculated rainbow colors\nvar rainbowColorStartIndex = 4;\nvar rainbowColorCount = 10;\nvar rainbowColors = [\n\t[255,0,0],\n\t[255,217,0],\n\t[78,255,0],\n\t[0,255,125],\n\t[0,192,255],\n\t[0,18,255],\n\t[136,0,255],\n\t[255,0,242],\n\t[255,0,138],\n\t[255,0,61],\n];\n\nfunction updatePaletteWithTileColors(tileColors) {\n\t// the screen background color should match the first tile color\n\tif (tileColors.length > 0) {\n\t\tvar color = tileColors[0];\n\t\tbitsy.color(backgroundIndex, color[0], color[1], color[2]);\n\t}\n\telse {\n\t\t// as a fallback, use black as the background\n\t\tbitsy.log(\"no tile colors!\");\n\t\tbitsy.color(backgroundIndex, 0, 0, 0);\n\t}\n\n\t// textbox colors\n\tbitsy.color(textBackgroundIndex, 0, 0, 0); // black\n\tbitsy.color(textArrowIndex, 255, 255, 255); // white\n\tbitsy.color(textColorIndex, 255, 255, 255); // white\n\n\t// rainbow colors\n\tfor (var i = 0; i < rainbowColorCount; i++) {\n\t\tvar color = rainbowColors[i];\n\t\tbitsy.color(rainbowColorStartIndex + i, color[0], color[1], color[2]);\n\t}\n\n\t// tile colors\n\tfor (var i = 0; i < tileColors.length; i++) {\n\t\tvar color = tileColors[i];\n\t\tbitsy.color(tileColorStartIndex + i, color[0], color[1], color[2]);\n\t}\n}\n\nfunction updatePalette(palId) {\n\tstate.pal = palId;\n\tvar pal = palette[state.pal];\n\tupdatePaletteWithTileColors(pal.colors);\n}\n\nfunction initRoom(roomId) {\n\tbitsy.log(\"init room \" + roomId);\n\n\tupdatePalette(getRoomPal(roomId));\n\n\t// update avatar appearance\n\tstate.ava = (room[roomId].ava != null) ? room[roomId].ava : playerId;\n\n\tif (renderer) {\n\t\trenderer.ClearCache();\n\t}\n\n\t// init exit properties\n\tstate.exits = [];\n\tfor (var i = 0; i < room[roomId].exits.length; i++) {\n\t\tvar exit = createExitData(\n\t\t\t/* x \t\t\t*/ room[roomId].exits[i].x,\n\t\t\t/* y \t\t\t*/ room[roomId].exits[i].y,\n\t\t\t/* destRoom \t*/ room[roomId].exits[i].dest.room,\n\t\t\t/* destX \t\t*/ room[roomId].exits[i].dest.x,\n\t\t\t/* destY \t\t*/ room[roomId].exits[i].dest.y,\n\t\t\t/* transition \t*/ room[roomId].exits[i].transition_effect,\n\t\t\t/* dlg \t\t\t*/ room[roomId].exits[i].dlg);\n\t\texit.property = { locked: false };\n\n\t\tstate.exits.push(exit);\n\t}\n\n\t// init ending properties\n\tstate.endings = [];\n\tfor (var i = 0; i < room[roomId].endings.length; i++) {\n\t\tvar end = createEndingData(\n\t\t\t/* id */ room[roomId].endings[i].id,\n\t\t\t/* x */ room[roomId].endings[i].x,\n\t\t\t/* y */ room[roomId].endings[i].y);\n\t\tend.property = { locked: false };\n\n\t\tstate.endings.push(end);\n\t}\n\n\tif (soundPlayer) {\n\t\tif (!room[roomId].tune || room[roomId].tune === \"0\" || !tune[room[roomId].tune]) {\n\t\t\t// stop music\n\t\t\tstate.tune = \"0\";\n\t\t\tsoundPlayer.stopTune();\n\t\t}\n\t\telse if (room[roomId].tune != state.tune) {\n\t\t\t// start music\n\t\t\tstate.tune = room[roomId].tune;\n\t\t\tsoundPlayer.playTune(tune[state.tune]);\n\t\t}\n\t}\n\n\tvar drawArgs = { redrawAll: true };\n\tdrawRoom(room[roomId], drawArgs);\n\n\tif (onInitRoom) {\n\t\tonInitRoom(roomId);\n\t}\n}\n\nfunction getItemIndex( roomId, x, y ) {\n\tfor( var i = 0; i < room[roomId].items.length; i++ ) {\n\t\tvar itm = room[roomId].items[i];\n\t\tif ( itm.x == x && itm.y == y)\n\t\t\treturn i;\n\t}\n\treturn -1;\n}\n\nfunction getSpriteLeft() { //repetitive?\n\treturn getSpriteAt( player().x - 1, player().y );\n}\n\nfunction getSpriteRight() {\n\treturn getSpriteAt( player().x + 1, player().y );\n}\n\nfunction getSpriteUp() {\n\treturn getSpriteAt( player().x, player().y - 1 );\n}\n\nfunction getSpriteDown() {\n\treturn getSpriteAt( player().x, player().y + 1 );\n}\n\nfunction isWallLeft() {\n\treturn (player().x - 1 < 0) || isWall( player().x - 1, player().y );\n}\n\nfunction isWallRight() {\n\treturn (player().x + 1 >= bitsy.MAP_SIZE) || isWall(player().x + 1, player().y);\n}\n\nfunction isWallUp() {\n\treturn (player().y - 1 < 0) || isWall( player().x, player().y - 1 );\n}\n\nfunction isWallDown() {\n\treturn (player().y + 1 >= bitsy.MAP_SIZE) || isWall(player().x, player().y + 1);\n}\n\nfunction isWall(x, y, roomId) {\n\tif (roomId == undefined || roomId == null) {\n\t\troomId = state.room;\n\t}\n\n\tvar tileId = getTile(x, y, roomId);\n\tif (tileId === '0') {\n\t\treturn false; // Blank spaces aren't walls, ya doofus\n\t}\n\n\tif (tile[tileId].isWall === undefined || tile[tileId].isWall === null) {\n\t\t// No wall-state defined: check room-specific walls\n\t\tvar i = room[roomId].walls.indexOf(getTile(x, y, roomId));\n\t\treturn (i > -1);\n\t}\n\n\t// Otherwise, use the tile's own wall-state\n\treturn tile[tileId].isWall;\n}\n\nfunction getItem(roomId,x,y) {\n\tfor (i in room[roomId].items) {\n\t\tvar item = room[roomId].items[i];\n\t\tif (x == item.x && y == item.y) {\n\t\t\treturn item;\n\t\t}\n\t}\n\treturn null;\n}\n\n// todo : roomId isn't useful in these functions anymore! safe to remove?\nfunction getExit(roomId, x, y) {\n\tfor (i in state.exits) {\n\t\tvar e = state.exits[i];\n\t\tif (x == e.x && y == e.y) {\n\t\t\treturn e;\n\t\t}\n\t}\n\treturn null;\n}\n\nfunction getEnding(roomId, x, y) {\n\tfor (i in state.endings) {\n\t\tvar e = state.endings[i];\n\t\tif (x == e.x && y == e.y) {\n\t\t\treturn e;\n\t\t}\n\t}\n\treturn null;\n}\n\nfunction getTile(x, y, roomId) {\n\t// bitsy.log(x + \" \" + y);\n\tvar t = getRoom(roomId).tilemap[y][x];\n\treturn t;\n}\n\nfunction player() {\n\treturn sprite[playerId];\n}\n\n// Sort of a hack for legacy palette code (when it was just an array)\nfunction getPal(id) {\n\tif (palette[id] === undefined) {\n\t\tid = \"default\";\n\t}\n\n\treturn palette[ id ].colors;\n}\n\nfunction getRoom(id) {\n\treturn room[id === undefined ? state.room : id];\n}\n\nfunction isSpriteOffstage(id) {\n\treturn sprite[id].room == null;\n}\n\nfunction serializeNote(note, key, useFriendlyName) {\n\tvar isSolfa = (key != undefined && key != null);\n\tvar noteType = (isSolfa === true) ? Solfa : Note;\n\n\tif (isSolfa && key.scale.indexOf(note) === -1) {\n\t\t// no matching note in key\n\t\treturn null;\n\t}\n\n\tif (isSolfa && useFriendlyName != true) {\n\t\tfor (var name in Solfa) {\n\t\t\tif (Solfa[name] === note) {\n\t\t\t\treturn name.toLowerCase();\n\t\t\t}\n\t\t}\n\n\t\t// no solfa note found\n\t\treturn null;\n\t}\n\n\t// for a solfa note's \"friendly name\" convert to the chromatic equivalent\n\tif (isSolfa && useFriendlyName === true) {\n\t\tnote = key.notes[note];\n\t}\n\n\t// from this point on, we know the note we're looking for is chromatic\n\tfor (var name in Note) {\n\t\tif (Note[name] === note) {\n\t\t\tname = name.replace(\"_SHARP\", \"#\");\n\t\t\tif (useFriendlyName === true && name === \"H\") {\n\t\t\t\tname = \"C\";\n\t\t\t}\n\t\t\treturn name;\n\t\t}\n\t}\n\n\t// no note found\n\treturn symbol;\n}\n\nfunction serializeOctave(octave) {\n\tfor (var symbol in Octave) {\n\t\tif (Octave[symbol] === octave) {\n\t\t\treturn symbol;\n\t\t}\n\t}\n\n\t// default to middle octave\n\treturn \"4\";\n}\n\n//TODO this is in progress and doesn't support all features\nfunction serializeWorld(skipFonts) {\n\tif (skipFonts === undefined || skipFonts === null) {\n\t\tskipFonts = false;\n\t}\n\n\t// update version flags\n\tflags.VER_MAJ = version.major;\n\tflags.VER_MIN = version.minor;\n\n\tvar worldStr = \"\";\n\t/* TITLE */\n\tworldStr += getTitle() + \"\\n\";\n\tworldStr += \"\\n\";\n\t/* VERSION */\n\tworldStr += \"# BITSY VERSION \" + getEngineVersion() + \"\\n\"; // add version as a comment for debugging purposes\n\tif (version.devBuildPhase != \"RELEASE\") {\n\t\tworldStr += \"# DEVELOPMENT BUILD -- \" + version.devBuildPhase;\n\t}\n\tworldStr += \"\\n\";\n\t/* FLAGS */\n\tfor (f in flags) {\n\t\tworldStr += \"! \" + f + \" \" + flags[f] + \"\\n\";\n\t}\n\tworldStr += \"\\n\"\n\t/* FONT */\n\tif (fontName != defaultFontName) {\n\t\tworldStr += \"DEFAULT_FONT \" + fontName + \"\\n\";\n\t\tworldStr += \"\\n\"\n\t}\n\tif (textDirection != TextDirection.LeftToRight) {\n\t\tworldStr += \"TEXT_DIRECTION \" + textDirection + \"\\n\";\n\t\tworldStr += \"\\n\"\n\t}\n\t/* PALETTE */\n\tfor (id in palette) {\n\t\tif (id != \"default\") {\n\t\t\tworldStr += \"PAL \" + id + \"\\n\";\n\t\t\tfor (i in getPal(id)) {\n\t\t\t\tfor (j in getPal(id)[i]) {\n\t\t\t\t\tworldStr += getPal(id)[i][j];\n\t\t\t\t\tif (j < 2) worldStr += \",\";\n\t\t\t\t}\n\t\t\t\tworldStr += \"\\n\";\n\t\t\t}\n\t\t\tif (palette[id].name != null) {\n\t\t\t\tworldStr += \"NAME \" + palette[id].name + \"\\n\";\n\t\t\t}\n\t\t\tworldStr += \"\\n\";\n\t\t}\n\t}\n\t/* ROOM */\n\tfor (id in room) {\n\t\tworldStr += \"ROOM \" + id + \"\\n\";\n\t\tif ( flags.ROOM_FORMAT == 0 ) {\n\t\t\t// old non-comma separated format\n\t\t\tfor (i in room[id].tilemap) {\n\t\t\t\tfor (j in room[id].tilemap[i]) {\n\t\t\t\t\tworldStr += room[id].tilemap[i][j];\t\n\t\t\t\t}\n\t\t\t\tworldStr += \"\\n\";\n\t\t\t}\n\t\t}\n\t\telse if ( flags.ROOM_FORMAT == 1 ) {\n\t\t\t// new comma separated format\n\t\t\tfor (i in room[id].tilemap) {\n\t\t\t\tfor (j in room[id].tilemap[i]) {\n\t\t\t\t\tworldStr += room[id].tilemap[i][j];\n\t\t\t\t\tif (j < room[id].tilemap[i].length-1) worldStr += \",\"\n\t\t\t\t}\n\t\t\t\tworldStr += \"\\n\";\n\t\t\t}\n\t\t}\n\t\tif (room[id].name != null) {\n\t\t\t/* NAME */\n\t\t\tworldStr += \"NAME \" + room[id].name + \"\\n\";\n\t\t}\n\t\tif (room[id].walls.length > 0) {\n\t\t\t/* WALLS */\n\t\t\tworldStr += \"WAL \";\n\t\t\tfor (j in room[id].walls) {\n\t\t\t\tworldStr += room[id].walls[j];\n\t\t\t\tif (j < room[id].walls.length-1) {\n\t\t\t\t\tworldStr += \",\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tworldStr += \"\\n\";\n\t\t}\n\t\tif (room[id].items.length > 0) {\n\t\t\t/* ITEMS */\n\t\t\tfor (j in room[id].items) {\n\t\t\t\tvar itm = room[id].items[j];\n\t\t\t\tworldStr += \"ITM \" + itm.id + \" \" + itm.x + \",\" + itm.y;\n\t\t\t\tworldStr += \"\\n\";\n\t\t\t}\n\t\t}\n\t\tif (room[id].exits.length > 0) {\n\t\t\t/* EXITS */\n\t\t\tfor (j in room[id].exits) {\n\t\t\t\tvar e = room[id].exits[j];\n\t\t\t\tif ( isExitValid(e) ) {\n\t\t\t\t\tworldStr += \"EXT \" + e.x + \",\" + e.y + \" \" + e.dest.room + \" \" + e.dest.x + \",\" + e.dest.y;\n\t\t\t\t\tif (e.transition_effect != undefined && e.transition_effect != null) {\n\t\t\t\t\t\tworldStr += \" FX \" + e.transition_effect;\n\t\t\t\t\t}\n\t\t\t\t\tif (e.dlg != undefined && e.dlg != null) {\n\t\t\t\t\t\tworldStr += \" DLG \" + e.dlg;\n\t\t\t\t\t}\n\t\t\t\t\tworldStr += \"\\n\";\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (room[id].endings.length > 0) {\n\t\t\t/* ENDINGS */\n\t\t\tfor (j in room[id].endings) {\n\t\t\t\tvar e = room[id].endings[j];\n\t\t\t\t// todo isEndingValid\n\t\t\t\tworldStr += \"END \" + e.id + \" \" + e.x + \",\" + e.y;\n\t\t\t\tworldStr += \"\\n\";\n\t\t\t}\n\t\t}\n\t\tif (room[id].pal != null && room[id].pal != \"default\") {\n\t\t\t/* PALETTE */\n\t\t\tworldStr += \"PAL \" + room[id].pal + \"\\n\";\n\t\t}\n\t\tif (room[id].ava != null) {\n\t\t\t/* AVATAR SPRITE */\n\t\t\tworldStr += \"AVA \" + room[id].ava + \"\\n\";\n\t\t}\n\t\tif (room[id].tune != null && room[id].tune != \"0\") {\n\t\t\t/* TUNE */\n\t\t\tworldStr += \"TUNE \" + room[id].tune + \"\\n\";\n\t\t}\n\t\tworldStr += \"\\n\";\n\t}\n\t/* TILES */\n\tfor (id in tile) {\n\t\tworldStr += \"TIL \" + id + \"\\n\";\n\t\tworldStr += serializeDrawing( \"TIL_\" + id );\n\t\tif (tile[id].name != null && tile[id].name != undefined) {\n\t\t\t/* NAME */\n\t\t\tworldStr += \"NAME \" + tile[id].name + \"\\n\";\n\t\t}\n\t\tif (tile[id].isWall != null && tile[id].isWall != undefined) {\n\t\t\t/* WALL */\n\t\t\tworldStr += \"WAL \" + tile[id].isWall + \"\\n\";\n\t\t}\n\t\tif (tile[id].col != null && tile[id].col != undefined && tile[id].col != 1) {\n\t\t\t/* COLOR OVERRIDE */\n\t\t\tworldStr += \"COL \" + tile[id].col + \"\\n\";\n\t\t}\n\t\tif (tile[id].bgc != null && tile[id].bgc != undefined && tile[id].bgc != 0) {\n\t\t\t/* BACKGROUND COLOR OVERRIDE */\n\t\t\tif (tile[id].bgc < 0) {\n\t\t\t\t// transparent background\n\t\t\t\tworldStr += \"BGC *\\n\";\n\t\t\t}\n\t\t\telse {\n\t\t\t\tworldStr += \"BGC \" + tile[id].bgc + \"\\n\";\n\t\t\t}\n\t\t}\n\t\tworldStr += \"\\n\";\n\t}\n\t/* SPRITES */\n\tfor (id in sprite) {\n\t\tworldStr += \"SPR \" + id + \"\\n\";\n\t\tworldStr += serializeDrawing( \"SPR_\" + id );\n\t\tif (sprite[id].name != null && sprite[id].name != undefined) {\n\t\t\t/* NAME */\n\t\t\tworldStr += \"NAME \" + sprite[id].name + \"\\n\";\n\t\t}\n\t\tif (sprite[id].dlg != null) {\n\t\t\tworldStr += \"DLG \" + sprite[id].dlg + \"\\n\";\n\t\t}\n\t\tif (sprite[id].room != null) {\n\t\t\t/* SPRITE POSITION */\n\t\t\tworldStr += \"POS \" + sprite[id].room + \" \" + sprite[id].x + \",\" + sprite[id].y + \"\\n\";\n\t\t}\n\t\tif (sprite[id].inventory != null) {\n\t\t\tfor(itemId in sprite[id].inventory) {\n\t\t\t\tworldStr += \"ITM \" + itemId + \" \" + sprite[id].inventory[itemId] + \"\\n\";\n\t\t\t}\n\t\t}\n\t\tif (sprite[id].col != null && sprite[id].col != undefined && sprite[id].col != 2) {\n\t\t\t/* COLOR OVERRIDE */\n\t\t\tworldStr += \"COL \" + sprite[id].col + \"\\n\";\n\t\t}\n\t\tif (sprite[id].bgc != null && sprite[id].bgc != undefined && sprite[id].bgc != 0) {\n\t\t\t/* BACKGROUND COLOR OVERRIDE */\n\t\t\tif (sprite[id].bgc < 0) {\n\t\t\t\t// transparent background\n\t\t\t\tworldStr += \"BGC *\\n\";\n\t\t\t}\n\t\t\telse {\n\t\t\t\tworldStr += \"BGC \" + sprite[id].bgc + \"\\n\";\n\t\t\t}\n\t\t}\n\t\tif (sprite[id].blip != null && sprite[id].blip != undefined) {\n\t\t\t/* BLIP */\n\t\t\tworldStr += \"BLIP \" + sprite[id].blip + \"\\n\";\n\t\t}\n\t\tworldStr += \"\\n\";\n\t}\n\t/* ITEMS */\n\tfor (id in item) {\n\t\tworldStr += \"ITM \" + id + \"\\n\";\n\t\tworldStr += serializeDrawing( \"ITM_\" + id );\n\t\tif (item[id].name != null && item[id].name != undefined) {\n\t\t\t/* NAME */\n\t\t\tworldStr += \"NAME \" + item[id].name + \"\\n\";\n\t\t}\n\t\tif (item[id].dlg != null) {\n\t\t\tworldStr += \"DLG \" + item[id].dlg + \"\\n\";\n\t\t}\n\t\tif (item[id].col != null && item[id].col != undefined && item[id].col != 2) {\n\t\t\t/* COLOR OVERRIDE */\n\t\t\tworldStr += \"COL \" + item[id].col + \"\\n\";\n\t\t}\n\t\tif (item[id].bgc != null && item[id].bgc != undefined && item[id].bgc != 0) {\n\t\t\t/* BACKGROUND COLOR OVERRIDE */\n\t\t\tif (item[id].bgc < 0) {\n\t\t\t\t// transparent background\n\t\t\t\tworldStr += \"BGC *\\n\";\n\t\t\t}\n\t\t\telse {\n\t\t\t\tworldStr += \"BGC \" + item[id].bgc + \"\\n\";\n\t\t\t}\n\t\t}\n\t\tif (item[id].blip != null && item[id].blip != undefined) {\n\t\t\t/* BLIP */\n\t\t\tworldStr += \"BLIP \" + item[id].blip + \"\\n\";\n\t\t}\n\t\tworldStr += \"\\n\";\n\t}\n\t/* DIALOG */\n\tfor (id in dialog) {\n\t\tif (id != titleDialogId) {\n\t\t\tworldStr += \"DLG \" + id + \"\\n\";\n\t\t\tworldStr += dialog[id].src + \"\\n\";\n\t\t\tif (dialog[id].name != null) {\n\t\t\t\tworldStr += \"NAME \" + dialog[id].name + \"\\n\";\n\t\t\t}\n\t\t\tworldStr += \"\\n\";\n\t\t}\n\t}\n\t/* ENDINGS (for backwards compability only) */\n\tfor (id in end) {\n\t\tworldStr += \"END \" + id + \"\\n\";\n\t\tworldStr += end[id].src + \"\\n\";\n\t\tworldStr += \"\\n\";\n\t}\n\t/* VARIABLES */\n\tfor (id in variable) {\n\t\tworldStr += \"VAR \" + id + \"\\n\";\n\t\tworldStr += variable[id] + \"\\n\";\n\t\tworldStr += \"\\n\";\n\t}\n\t/* TUNES */\n\tfor (id in tune) {\n\t\tif (id === \"0\") {\n\t\t\tcontinue;\n\t\t}\n\n\t\tworldStr += \"TUNE \" + id + \"\\n\";\n\t\tfor (var i = 0; i < maxTuneLength && i < tune[id].melody.length; i++) {\n\t\t\t// MELODY\n\t\t\tfor (var j = 0; j < barLength; j++) {\n\t\t\t\tvar noteStr = serializeNote(tune[id].melody[i][j].note, tune[id].key);\n\t\t\t\tif (noteStr === null) {\n\t\t\t\t\ttune[id].melody[i][j].beats = 0;\n\t\t\t\t}\n\t\t\t\tif (tune[id].melody[i][j].beats != 1) {\n\t\t\t\t\tworldStr += tune[id].melody[i][j].beats;\n\t\t\t\t}\n\t\t\t\tif (tune[id].melody[i][j].beats > 0) {\n\t\t\t\t\tworldStr += noteStr;\n\t\t\t\t}\n\t\t\t\tif (tune[id].melody[i][j].beats > 0 && tune[id].melody[i][j].octave != Octave[4]) {\n\t\t\t\t\tworldStr += serializeOctave(tune[id].melody[i][j].octave);\n\t\t\t\t}\n\t\t\t\tif (tune[id].melody[i][j].beats > 0 && tune[id].melody[i][j].blip != undefined) {\n\t\t\t\t\t// todo : create constant for the blip separator?\n\t\t\t\t\tworldStr += \"~\" + tune[id].melody[i][j].blip;\n\t\t\t\t}\n\t\t\t\tif (j < 15) {\n\t\t\t\t\tworldStr += \",\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tworldStr += \"\\n\";\n\n\t\t\t// HARMONY\n\t\t\t// todo : lots of copy-pasting - I could probably make some helper functions to simplify this\n\t\t\tfor (var j = 0; j < barLength; j++) {\n\t\t\t\tvar noteStr = serializeNote(tune[id].harmony[i][j].note, tune[id].key);\n\t\t\t\tif (noteStr === null) {\n\t\t\t\t\ttune[id].harmony[i][j].beats = 0;\n\t\t\t\t}\n\t\t\t\tif (tune[id].harmony[i][j].beats != 1) {\n\t\t\t\t\tworldStr += tune[id].harmony[i][j].beats;\n\t\t\t\t}\n\t\t\t\tif (tune[id].harmony[i][j].beats > 0) {\n\t\t\t\t\tworldStr += noteStr;\n\t\t\t\t}\n\t\t\t\tif (tune[id].harmony[i][j].beats > 0 && tune[id].harmony[i][j].octave != Octave[4]) {\n\t\t\t\t\tworldStr += serializeOctave(tune[id].harmony[i][j].octave);\n\t\t\t\t}\n\t\t\t\tif (tune[id].harmony[i][j].beats > 0 && tune[id].harmony[i][j].blip != undefined) {\n\t\t\t\t\tworldStr += \"~\" + tune[id].harmony[i][j].blip;\n\t\t\t\t}\n\t\t\t\tif (j < 15) {\n\t\t\t\t\tworldStr += \",\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tworldStr += \"\\n\";\n\n\t\t\tif (i < (tune[id].melody.length - 1)) {\n\t\t\t\tworldStr += \">\";\n\t\t\t\tworldStr += \"\\n\";\n\t\t\t}\n\t\t}\n\t\tif (tune[id].name != null) {\n\t\t\t/* NAME */\n\t\t\tworldStr += \"NAME \" + tune[id].name + \"\\n\";\n\t\t}\n\t\tif (tune[id].key != undefined && tune[id].key != null) {\n\t\t\tworldStr += \"KEY \";\n\t\t\tfor (var i = 0; i < Solfa.COUNT; i++) {\n\t\t\t\tworldStr += serializeNote(tune[id].key.notes[i]);\n\t\t\t\tif (i < Solfa.COUNT - 1) {\n\t\t\t\t\tworldStr += \",\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tworldStr += \" \";\n\t\t\tfor (var i = 0; i < tune[id].key.scale.length; i++) {\n\t\t\t\tworldStr += serializeNote(tune[id].key.scale[i], tune[id].key);\n\t\t\t\tif (i < tune[id].key.scale.length - 1) {\n\t\t\t\t\tworldStr += \",\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tworldStr += \"\\n\";\n\t\t}\n\t\tworldStr += \"TMP \";\n\t\tswitch (tune[id].tempo) {\n\t\t\tcase Tempo.SLW:\n\t\t\t\tworldStr += \"SLW\";\n\t\t\t\tbreak;\n\t\t\tcase Tempo.MED:\n\t\t\t\tworldStr += \"MED\";\n\t\t\t\tbreak;\n\t\t\tcase Tempo.FST:\n\t\t\t\tworldStr += \"FST\";\n\t\t\t\tbreak;\n\t\t\tcase Tempo.XFST:\n\t\t\t\tworldStr += \"XFST\";\n\t\t\t\tbreak;\n\t\t}\n\t\tworldStr += \"\\n\";\n\t\tworldStr += \"SQR \";\n\t\tswitch (tune[id].instrumentA) {\n\t\t\tcase SquareWave.P8:\n\t\t\t\tworldStr += \"P8\";\n\t\t\t\tbreak;\n\t\t\tcase SquareWave.P4:\n\t\t\t\tworldStr += \"P4\";\n\t\t\t\tbreak;\n\t\t\tcase SquareWave.P2:\n\t\t\t\tworldStr += \"P2\";\n\t\t\t\tbreak;\n\t\t}\n\t\tworldStr += \" \";\n\t\tswitch (tune[id].instrumentB) {\n\t\t\tcase SquareWave.P8:\n\t\t\t\tworldStr += \"P8\";\n\t\t\t\tbreak;\n\t\t\tcase SquareWave.P4:\n\t\t\t\tworldStr += \"P4\";\n\t\t\t\tbreak;\n\t\t\tcase SquareWave.P2:\n\t\t\t\tworldStr += \"P2\";\n\t\t\t\tbreak;\n\t\t}\n\t\tworldStr += \"\\n\";\n\t\tif (tune[id].key != undefined && tune[id].key != null && tune[id].arpeggioPattern != ArpeggioPattern.OFF) {\n\t\t\tswitch (tune[id].arpeggioPattern) {\n\t\t\t\tcase ArpeggioPattern.UP:\n\t\t\t\t\tworldStr += \"ARP UP\\n\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase ArpeggioPattern.DWN:\n\t\t\t\t\tworldStr += \"ARP DWN\\n\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase ArpeggioPattern.INT5:\n\t\t\t\t\tworldStr += \"ARP INT5\\n\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase ArpeggioPattern.INT8:\n\t\t\t\t\tworldStr += \"ARP INT8\\n\";\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tworldStr += \"\\n\";\n\t}\n\t/* BLIP */\n\tfor (id in blip) {\n\t\tif (id === \"0\") {\n\t\t\tcontinue;\n\t\t}\n\n\t\tworldStr += \"BLIP \" + id + \"\\n\";\n\t\t// pitches\n\t\tif (blip[id].pitchA.beats > 0) {\n\t\t\tworldStr += serializeNote(blip[id].pitchA.note);\n\t\t\tif (blip[id].pitchA.octave != Octave[4]) {\n\t\t\t\tworldStr += serializeOctave(blip[id].pitchA.octave);\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tworldStr += blip[id].pitchA.beats;\n\t\t}\n\t\tworldStr += \",\";\n\t\tif (blip[id].pitchB.beats > 0) {\n\t\t\tworldStr += serializeNote(blip[id].pitchB.note);\n\t\t\tif (blip[id].pitchB.octave != Octave[4]) {\n\t\t\t\tworldStr += serializeOctave(blip[id].pitchB.octave);\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tworldStr += blip[id].pitchB.beats;\n\t\t}\n\t\tworldStr += \",\";\n\t\tif (blip[id].pitchC.beats > 0) {\n\t\t\tworldStr += serializeNote(blip[id].pitchC.note);\n\t\t\tif (blip[id].pitchC.octave != Octave[4]) {\n\t\t\t\tworldStr += serializeOctave(blip[id].pitchC.octave);\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tworldStr += blip[id].pitchC.beats;\n\t\t}\n\t\tworldStr += \"\\n\";\n\t\tif (blip[id].name != null) {\n\t\t\t/* NAME */\n\t\t\tworldStr += \"NAME \" + blip[id].name + \"\\n\";\n\t\t}\n\t\t// envelope\n\t\tworldStr += \"ENV \" + blip[id].envelope.attack\n\t\t\t+ \" \" + blip[id].envelope.decay\n\t\t\t+ \" \" + blip[id].envelope.sustain\n\t\t\t+ \" \" + blip[id].envelope.length\n\t\t\t+ \" \" + blip[id].envelope.release + \"\\n\";\n\t\t// beat\n\t\tworldStr += \"BEAT \" + blip[id].beat.time\n\t\t\t+ \" \" + blip[id].beat.delay + \"\\n\";\n\t\t// instrument (square wave type)\n\t\tworldStr += \"SQR \";\n\t\tswitch (blip[id].instrument) {\n\t\t\tcase SquareWave.P8:\n\t\t\t\tworldStr += \"P8\";\n\t\t\t\tbreak;\n\t\t\tcase SquareWave.P4:\n\t\t\t\tworldStr += \"P4\";\n\t\t\t\tbreak;\n\t\t\tcase SquareWave.P2:\n\t\t\t\tworldStr += \"P2\";\n\t\t\t\tbreak;\n\t\t}\n\t\tworldStr += \"\\n\";\n\t\t// other parameters\n\t\tif (blip[id].doRepeat === true) {\n\t\t\tworldStr += \"RPT 1\\n\";\n\t\t}\n\t\t// TODO : consider for future update\n\t\t// if (blip[id].doSlide === true) {\n\t\t// \tworldStr += \"SLD 1\\n\";\n\t\t// }\n\t\tworldStr += \"\\n\";\n\t}\n\t/* FONT */\n\t// TODO : support multiple fonts\n\tif (fontManager && fontName != defaultFontName && !skipFonts) {\n\t\tworldStr += fontManager.GetData(fontName);\n\t}\n\n\treturn worldStr;\n}\n\nfunction serializeDrawing(drwId) {\n\tif (!renderer) {\n\t\treturn \"\";\n\t}\n\n\tvar drawingData = renderer.GetDrawingSource(drwId);\n\tvar drwStr = \"\";\n\tfor (f in drawingData) {\n\t\tfor (y in drawingData[f]) {\n\t\t\tvar rowStr = \"\";\n\t\t\tfor (x in drawingData[f][y]) {\n\t\t\t\trowStr += drawingData[f][y][x];\n\t\t\t}\n\t\t\tdrwStr += rowStr + \"\\n\";\n\t\t}\n\t\tif (f < (drawingData.length-1)) drwStr += \">\\n\";\n\t}\n\treturn drwStr;\n}\n\nfunction isExitValid(e) {\n\tvar hasValidStartPos = e.x >= 0 && e.x < bitsy.MAP_SIZE && e.y >= 0 && e.y < bitsy.MAP_SIZE;\n\tvar hasDest = e.dest != null;\n\tvar hasValidRoomDest = (e.dest.room != null && e.dest.x >= 0 && e.dest.x < bitsy.MAP_SIZE && e.dest.y >= 0 && e.dest.y < bitsy.MAP_SIZE);\n\treturn hasValidStartPos && hasDest && hasValidRoomDest;\n}\n\nfunction setTile(mapId, x, y, tileId) {\n\tbitsy.set(mapId, (y * bitsy.MAP_SIZE) + x, tileId);\n}\n\nfunction drawTile(tileId, x, y) {\n\tsetTile(bitsy.MAP1, x, y, tileId);\n}\n\nfunction drawSprite(tileId, x, y) {\n\tsetTile(bitsy.MAP2, x, y, tileId);\n}\n\nfunction drawItem(tileId, x, y) {\n\tsetTile(bitsy.MAP2, x, y, tileId);\n}\n\n// var debugLastRoomDrawn = \"0\";\n\nfunction clearRoom() {\n\tvar paletteId = \"default\";\n\n\tif (room === undefined) {\n\t\t// protect against invalid rooms\n\t\treturn;\n\t}\n\n\tif (room.pal != null && palette[paletteId] != undefined) {\n\t\tpaletteId = room.pal;\n\t}\n\n\t// clear background & foreground\n\tbitsy.fill(bitsy.MAP1, 0);\n\tbitsy.fill(bitsy.MAP2, 0);\n}\n\nfunction drawRoomBackground(room, frameIndex, redrawAnimatedOnly) {\n\tif (!redrawAnimatedOnly) {\n\t\t// clear background map\n\t\tbitsy.fill(bitsy.MAP1, 0);\n\t}\n\n\t// NOTE: interestingly the slowest part of this is iterating over all the tiles, not actually drawing them\n\tfor (var y = 0; y < bitsy.MAP_SIZE; y++) {\n\t\tfor (var x = 0; x < bitsy.MAP_SIZE; x++) {\n\t\t\tvar id = room.tilemap[y][x];\n\n\t\t\tif (id != \"0\" && tile[id] == null) { // hack-around to avoid corrupting files (not a solution though!)\n\t\t\t\tid = \"0\";\n\t\t\t\troom.tilemap[y][x] = id;\n\t\t\t}\n\n\t\t\tif (id != \"0\" && (!redrawAnimatedOnly || tile[id].animation.isAnimated)) {\n\t\t\t\tdrawTile(getTileFrame(tile[id], frameIndex), x, y);\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction drawRoomForeground(room, frameIndex, redrawAnimatedOnly) {\n\tif (!redrawAnimatedOnly) {\n\t\t// clear foreground map\n\t\tbitsy.fill(bitsy.MAP2, 0);\n\t}\n\n\t// draw items\n\tfor (var i = 0; i < room.items.length; i++) {\n\t\tvar itm = room.items[i];\n\t\tif (!redrawAnimatedOnly || item[itm.id].animation.isAnimated) {\n\t\t\tdrawItem(getItemFrame(item[itm.id], frameIndex), itm.x, itm.y);\n\t\t}\n\t}\n\n\t// draw sprites\n\tfor (id in sprite) {\n\t\tvar spr = sprite[id];\n\t\tif (id != playerId && spr.room === room.id && (!redrawAnimatedOnly || spr.animation.isAnimated)) {\n\t\t\tdrawSprite(getSpriteFrame(spr, frameIndex), spr.x, spr.y);\n\t\t}\n\t}\n}\n\nfunction drawRoomForegroundTile(room, frameIndex, x, y) {\n\t// draw items\n\tfor (var i = 0; i < room.items.length; i++) {\n\t\tvar itm = room.items[i];\n\t\tif (itm.x === x && itm.y === y) {\n\t\t\tdrawItem(getItemFrame(item[itm.id], frameIndex), itm.x, itm.y);\n\t\t}\n\t}\n\n\t// draw sprites\n\tfor (id in sprite) {\n\t\tvar spr = sprite[id];\n\t\tif (id != playerId && spr.room === room.id && spr.x === x && spr.y === y) {\n\t\t\tdrawSprite(getSpriteFrame(spr, frameIndex), spr.x, spr.y);\n\t\t}\n\t}\n}\n\nfunction drawRoom(room, args) {\n\tif (room === undefined || isNarrating) {\n\t\t// protect against invalid rooms\n\t\treturn;\n\t}\n\n\tvar redrawAll = args && (args.redrawAll === true);\n\tvar redrawAnimated = args && (args.redrawAnimated === true);\n\tvar redrawAvatar = args && (args.redrawAvatar === true);\n\tvar frameIndex = args ? args.frameIndex : undefined;\n\n\t// if *only* redrawing the avatar, first clear its previous position\n\tif (redrawAvatar) {\n\t\tsetTile(bitsy.MAP2, playerPrevX, playerPrevY, 0);\n\t\t// also redraw any sprite or item that might be \"under\" the player (todo: possible perf issue?)\n\t\tdrawRoomForegroundTile(room, frameIndex, playerPrevX, playerPrevY);\n\t}\n\n\t// draw background & foreground tiles\n\tif (redrawAll || redrawAnimated) {\n\t\t// draw tiles\n\t\tdrawRoomBackground(room, frameIndex, redrawAnimated);\n\t\t// draw sprites & items\n\t\tdrawRoomForeground(room, frameIndex, redrawAnimated);\n\t}\n\n\t// draw the player's avatar at its current position\n\tif ((redrawAll || redrawAnimated || redrawAvatar) && sprite[playerId] && sprite[playerId].room === room.id) {\n\t\tvar spr = sprite[playerId];\n\t\tvar x = spr.x;\n\t\tvar y = spr.y;\n\n\t\t// get the avatar override sprite (if there is one)\n\t\tif (state.ava && state.ava != playerId && sprite[state.ava]) {\n\t\t\tspr = sprite[state.ava];\n\t\t}\n\n\t\tdrawSprite(getSpriteFrame(spr, frameIndex), x, y);\n\t}\n}\n\n// TODO : remove these get*Image methods\nfunction getTileFrame(t, frameIndex) {\n\tif (!renderer) {\n\t\treturn null;\n\t}\n\treturn renderer.GetDrawingFrame(t, frameIndex);\n}\n\nfunction getSpriteFrame(s, frameIndex) {\n\tif (!renderer) {\n\t\treturn null;\n\t}\n\treturn renderer.GetDrawingFrame(s, frameIndex);\n}\n\nfunction getItemFrame(itm, frameIndex) {\n\tif (!renderer) {\n\t\treturn null;\n\t}\n\treturn renderer.GetDrawingFrame(itm, frameIndex);\n}\n\nfunction curDefaultPal() {\n\treturn getRoomPal(state.room);\n}\n\nfunction getRoomPal(roomId) {\n\tvar defaultId = \"default\";\n\n\tif (roomId == null) {\n\t\treturn defaultId;\n\t}\n\telse if (room[roomId].pal != null) {\n\t\t//a specific palette was chosen\n\t\treturn room[roomId].pal;\n\t}\n\telse {\n\t\tif (roomId in palette) {\n\t\t\t//there is a palette matching the name of the room\n\t\t\treturn roomId;\n\t\t}\n\t\telse {\n\t\t\t//use the default palette\n\t\t\treturn defaultId;\n\t\t}\n\t}\n\treturn defaultId;\n}\n\nvar isDialogMode = false;\nvar isNarrating = false;\nvar isEnding = false;\n\nvar dialogModule;\nvar dialogRenderer;\nvar dialogBuffer;\nif (engineFeatureFlags.isDialogEnabled) {\n\tdialogModule = new Dialog();\n\tdialogRenderer = dialogModule.CreateRenderer();\n\tdialogBuffer = dialogModule.CreateBuffer();\n}\n\nvar fontManager;\nif (engineFeatureFlags.isFontEnabled) {\n\tfontManager = new FontManager();\n}\n\n// TODO : is this scriptResult thing being used anywhere???\nfunction onExitDialog(scriptResult, dialogCallback) {\n\tisDialogMode = false;\n\tbitsy.textbox(false);\n\n\tif (isNarrating) {\n\t\tisNarrating = false;\n\n\t\t// redraw the room\n\t\tdrawRoom(room[state.room], { redrawAll: true });\n\t}\n\n\tif (isDialogPreview) {\n\t\tisDialogPreview = false;\n\n\t\tif (onDialogPreviewEnd != null) {\n\t\t\tonDialogPreviewEnd();\n\t\t}\n\t}\n\n\tif (dialogCallback != undefined && dialogCallback != null) {\n\t\tdialogCallback(scriptResult);\n\t}\n\n\tif (soundPlayer) {\n\t\tsoundPlayer.resumeTune();\n\t}\n}\n\n/*\nTODO\n- titles and endings should also take advantage of the script pre-compilation if possible??\n- could there be a namespace collision?\n- what about dialog NAMEs vs IDs?\n- what about a special script block separate from DLG?\n*/\nfunction startNarrating(dialogStr, end) {\n\tbitsy.log(\"NARRATE \" + dialogStr);\n\n\tif(end === undefined) {\n\t\tend = false;\n\t}\n\n\tisNarrating = true;\n\tisEnding = end;\n\n\tif (isEnding && soundPlayer) {\n\t\tsoundPlayer.stopTune();\n\t}\n\n\t// clear the room tiles before narrating\n\tbitsy.fill(bitsy.MAP1, 0);\n\tbitsy.fill(bitsy.MAP2, 0);\n\n\tstartDialog(dialogStr);\n}\n\nfunction startEndingDialog(ending) {\n\tisNarrating = true;\n\tisEnding = true;\n\n\tvar endingScriptId = ending.id;\n\tvar endingDialogStr = dialog[ending.id].src;\n\n\t// compatibility with pre-7.0 endings\n\tif (flags.DLG_COMPAT === 1 && end[ending.id]) {\n\t\tendingScriptId = \"end_compat_\" + ending.id;\n\t\tendingDialogStr = end[ending.id].src;\n\t}\n\n\tvar tmpTuneId = null;\n\tif (isEnding && soundPlayer) {\n\t\ttmpTuneId = soundPlayer.getCurTuneId();\n\t\tsoundPlayer.stopTune();\n\t}\n\n\tstartDialog(\n\t\tendingDialogStr,\n\t\tendingScriptId,\n\t\tfunction() {\n\t\t\tvar isLocked = ending.property && ending.property.locked === true;\n\t\t\tif (isLocked) {\n\t\t\t\tisEnding = false;\n\n\t\t\t\t// if the ending was cancelled, restart the music\n\t\t\t\t// todo : should it resume from where it started? (right now it starts over)\n\t\t\t\tif (tmpTuneId && soundPlayer && !soundPlayer.isTunePlaying()) {\n\t\t\t\t\tsoundPlayer.playTune(tune[tmpTuneId]);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tending);\n}\n\nfunction startItemDialog(itemId, dialogCallback) {\n\tvar dialogId = item[itemId].dlg;\n\t// bitsy.log(\"START ITEM DIALOG \" + dialogId);\n\tif (dialog[dialogId]) {\n\t\tvar dialogStr = dialog[dialogId].src;\n\t\tstartDialog(dialogStr, dialogId, dialogCallback);\n\t}\n\telse {\n\t\tdialogCallback();\n\t}\n}\n\nfunction startSpriteDialog(spriteId) {\n\tvar spr = sprite[spriteId];\n\tvar dialogId = spr.dlg;\n\n\t// back compat for when dialog IDs were implicitly the same as sprite IDs\n\tif (flags.DLG_COMPAT === 1 && (dialogId === undefined || dialogId === null)) {\n\t\tdialogId = spr.id;\n\t}\n\n\t// bitsy.log(\"START SPRITE DIALOG \" + dialogId);\n\tif (dialog[dialogId]){\n\t\tvar dialogStr = dialog[dialogId].src;\n\t\tstartDialog(dialogStr, dialogId);\n\t}\n}\n\nfunction startDialog(dialogStr, scriptId, dialogCallback, objectContext) {\n\tbitsy.log(\"START DIALOG\");\n\n\tif (soundPlayer) {\n\t\tsoundPlayer.pauseTune();\n\t}\n\n\tif (dialogStr.length <= 0) {\n\t\tonExitDialog(null, dialogCallback);\n\t\treturn;\n\t}\n\n\tif (!dialogBuffer) {\n\t\tbitsy.log(dialogStr);\n\t\tonExitDialog(null, dialogCallback);\n\t\treturn;\n\t}\n\n\tif (!scriptInterpreter) {\n\t\tdialogRenderer.Reset();\n\t\tdialogRenderer.SetCentered(isNarrating /*centered*/);\n\t\tdialogBuffer.Reset();\n\t\tdialogBuffer.AddText(dialogStr);\n\t\tdialogBuffer.OnDialogEnd(function() {\n\t\t\tonExitDialog(null, dialogCallback);\n\t\t});\n\t\tbitsy.log(\"dialog start end\");\n\t\treturn;\n\t};\n\n\tisDialogMode = true;\n\n\tdialogRenderer.Reset();\n\tdialogRenderer.SetCentered(isNarrating /*centered*/);\n\tdialogBuffer.Reset();\n\tscriptInterpreter.SetDialogBuffer(dialogBuffer);\n\n\tvar onScriptEnd = function(scriptResult) {\n\t\tdialogBuffer.OnDialogEnd(function() {\n\t\t\tonExitDialog(scriptResult, dialogCallback);\n\t\t});\n\t};\n\n\tif (scriptId === undefined) { // TODO : what's this for again?\n\t\tscriptInterpreter.Interpret(dialogStr, onScriptEnd);\n\t}\n\telse {\n\t\tif (!scriptInterpreter.HasScript(scriptId)) {\n\t\t\tscriptInterpreter.Compile(scriptId, dialogStr);\n\t\t}\n\t\t// scriptInterpreter.DebugVisualizeScript(scriptId);\n\t\tscriptInterpreter.Run(scriptId, onScriptEnd, objectContext);\n\t}\n\n}\n\nvar isDialogPreview = false;\nfunction startPreviewDialog(script, dialogCallback) {\n\tif (!scriptInterpreter || !dialogBuffer) {\n\t\treturn;\n\t}\n\n\tisNarrating = true;\n\n\tisDialogMode = true;\n\n\tisDialogPreview = true;\n\n\tdialogRenderer.Reset();\n\tdialogRenderer.SetCentered(true);\n\tdialogBuffer.Reset();\n\tscriptInterpreter.SetDialogBuffer(dialogBuffer);\n\n\t// TODO : do I really need a seperate callback for this debug mode??\n\tonDialogPreviewEnd = dialogCallback;\n\n\tvar onScriptEndCallback = function(scriptResult) {\n\t\tdialogBuffer.OnDialogEnd(function() {\n\t\t\tonExitDialog(scriptResult, null);\n\t\t});\n\t};\n\n\tscriptInterpreter.Eval(script, onScriptEndCallback);\n}\n\n/* NEW SCRIPT STUFF */\nvar scriptModule;\nvar scriptInterpreter;\nvar scriptUtils;\n// scriptInterpreter.SetDialogBuffer( dialogBuffer );\nif (engineFeatureFlags.isScriptEnabled) {\n\tbitsy.log(\"init script module\");\n\tscriptModule = new Script();\n\tbitsy.log(\"init interpreter\");\n\tscriptInterpreter = scriptModule.CreateInterpreter();\n\tbitsy.log(\"init utils\");\n\tscriptUtils = scriptModule.CreateUtils(); // TODO: move to editor.js?\n\tbitsy.log(\"init script module end\");\n}\n\n/* SOUND */\nvar soundPlayer;\nif (engineFeatureFlags.isSoundEnabled) {\n\tsoundPlayer = new SoundPlayer();\n}\n\n/* EVENTS */\nbitsy.loop(update);", "icon_about.svg": "\n\n\n\n", "icon_add.svg": "\n\n\n\n", "icon_animation.svg": "\n\n\n\n", diff --git a/editor/script/system/input.js b/editor/script/system/input.js index 84adc896..71828ee3 100644 --- a/editor/script/system/input.js +++ b/editor/script/system/input.js @@ -112,6 +112,8 @@ function InputSystem() { // bitsyLog("KEYUP -- " + event.keyCode, "system"); pressed[event.keyCode] = false; ignored[event.keyCode] = false; + + isRestartComboPressed = false; } this.ontouchstart = function(event) { diff --git a/editor/script/tools/blip.js b/editor/script/tools/blip.js index e55df509..a17b194d 100644 --- a/editor/script/tools/blip.js +++ b/editor/script/tools/blip.js @@ -32,7 +32,7 @@ function makeBlipTool() { // todo : how do I feel about these being functions? should I rename the property? tool.name = function() { - return localization.GetStringOrFallback("blip_tool", "blip-o-matic"); + return localization.GetStringOrFallback("blip_sfx", "blip"); }; tool.icon = "blip"; @@ -40,7 +40,7 @@ function makeBlipTool() { tool.data = "BLIP"; tool.worldData = "blip.bitsy"; tool.insertBefore = "findCheck"; - tool.aboutPage = "./tools/blipomatic"; + tool.aboutPage = "./tools/blip"; tool.soundPlayer = new SoundPlayer(); tool.soundPlayer.tag = "blip_tool"; // for debugging @@ -88,7 +88,6 @@ function makeBlipTool() { function generate() { var curBlip = blip[selectedId]; - curBlip.name = CreateDefaultName(blipNames[curGenerator], blip); switch (curGenerator) { case BlipGenerator.PICKUP: @@ -381,12 +380,44 @@ function makeBlipTool() { tool.menu.push({ control: "button", icon: "play", - text: localization.GetStringOrFallback("play_game", "play"), + // text: localization.GetStringOrFallback("play_game", "play"), description: "play blip", onclick : function(e) { tool.soundPlayer.playBlip(curBlip); }, }); + + tool.menu.push({ + control: "label", + text: localization.GetStringOrFallback("blip_tool", "blip-o-matic"), + description: "sound generator for regenerating or adding blips (" + blipNames[curGenerator] + ": " + blipDescriptions[curGenerator] + ")" + }); + + // todo : I don't need to generate these each time do I? + var blipTypeOptions = [] + for (var i = BlipGenerator.NONE + 1; i < BlipGenerator.COUNT; i++) { + blipTypeOptions.push({ text: blipNames[i], description: blipDescriptions[i], value: i }); + } + + tool.menu.push({ + control: "select", + description: "select sound effect category", + name: "blipRandomType", + value: curGenerator, + options: blipTypeOptions, + onchange: function(e) { + curGenerator = parseInt(e.target.value); + } + }); + + tool.menu.push({ + control: "button", + icon: "blip", + description: "regenerate blip", + onclick : function(e) { + generate() + }, + }); tool.menu.pop({ control: "group" }); tool.menu.push({ control: "group" }); @@ -491,34 +522,6 @@ function makeBlipTool() { } }); tool.menu.pop({ control: "group" }); - - tool.menu.push({ control: "group" }); - - tool.menu.push({ - control: "label", - icon: "blip", - text: localization.GetStringOrFallback("blip_generator", "generator"), - description: "type of sound to generate when adding blips (" + blipNames[curGenerator] + ": " + blipDescriptions[curGenerator] + ")" - }); - - // todo : I don't need to generate these each time do I? - var blipTypeOptions = [] - for (var i = BlipGenerator.NONE + 1; i < BlipGenerator.COUNT; i++) { - blipTypeOptions.push({ text: blipNames[i], description: blipDescriptions[i], value: i }); - } - - tool.menu.push({ - control: "select", - description: "select sound effect category", - name: "blipRandomType", - value: curGenerator, - options: blipTypeOptions, - onchange: function(e) { - curGenerator = parseInt(e.target.value); - } - }); - - tool.menu.pop({ control: "group" }); }; tool.onSelect = function(id) { @@ -543,6 +546,7 @@ function makeBlipTool() { } selectedId = nextId; + blip[selectedId].name = CreateDefaultName(blipNames[curGenerator], blip); generate(); }; diff --git a/editor/script/tools/game.js b/editor/script/tools/game.js index 9c8dc937..7bd45eca 100644 --- a/editor/script/tools/game.js +++ b/editor/script/tools/game.js @@ -9,6 +9,7 @@ function makeGameTool() { // TODO : where is the right place for this metadata? tool.size = "m"; tool.insertBefore = "roomCheckSpan"; // todo : need a better way of defining the order of the tool buttons + tool.aboutPage = "./tools/game"; tool.loop = function(dt) {}; diff --git a/editor/script/tools/room.js b/editor/script/tools/room.js index 94e62ea8..ea8fa734 100644 --- a/editor/script/tools/room.js +++ b/editor/script/tools/room.js @@ -52,8 +52,9 @@ function makeRoomTool() { var prevAreExitsVisible = false; /* VISIBILITY SETTINGS */ - var isGridVisible = true; - var areWallsVisible = false; + // TODO : ultimately I want to combine all tool settings (panel settings, export settings, language setting) into one settings object + var isGridVisible = (getPanelSetting("roomPanel", "grid") != false); + var areWallsVisible = (getPanelSetting("roomPanel", "walls") == true); var areExitsVisible = false; function animate(tileName) { @@ -611,7 +612,10 @@ function makeRoomTool() { text: localization.GetStringOrFallback("grid_toggle_visible", "grid"), description: "show/hide tile grid", checked: isGridVisible, - onclick: function(e) { isGridVisible = e.target.checked; } + onclick: function(e) { + isGridVisible = e.target.checked; + setPanelSetting("roomPanel", "grid", isGridVisible); + } }); tool.menu.push({ @@ -621,7 +625,10 @@ function makeRoomTool() { text: localization.GetStringOrFallback("walls_toggle_visible", "walls"), description: "show/hide wall tiles", checked: areWallsVisible, - onclick: function(e) { areWallsVisible = e.target.checked; } + onclick: function(e) { + areWallsVisible = e.target.checked; + setPanelSetting("roomPanel", "walls", areWallsVisible); + } }); tool.menu.pop({ control: "group" }); diff --git a/editor/script/tools/tune.js b/editor/script/tools/tune.js index 8a175844..4f6cdbc8 100644 --- a/editor/script/tools/tune.js +++ b/editor/script/tools/tune.js @@ -1736,7 +1736,7 @@ function makeTuneTool() { tool.onGameDataChange = function() { // force render refresh // todo : need to think about the architecture of sharing renderers if (tool && tool.renderer) { - tool.renderer.ClearCache(true); + tool.renderer.ClearCache(); melodyBarTileIds = null; harmonyBarTileIds = null; blipTileIds = []; diff --git a/package.json b/package.json index 9a05186a..04756958 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "bitsy", - "version": "8.11.0", + "version": "8.12.0", "description": "make tiny games, worlds, and stories", "author": "Adam Le Doux", "devDependencies": {