premier jeu, Last Defenders (nom provisoire) : aides en tout genre

General

JFT

5 years ago

Bonjour,
Je suis en train de porter un jeu que j'avais créé sur TI89 en TI-BASIC.
Jeu un peu typé arcade où le but est de gagner un max de point en protégeant une "machine" attaquée par des ennemis.
Je vous en parlera plus si vous le souhaitez :)

J'ai déjà demandé un peu d'aide dans d'autres topics mais mieux vaut  que je créé le mien désormais.

JFT

NEW 5 years ago

Premièrement,

Je souhaiterais savoir comment avoir une chaîne de caractères contenant une valeur de variable.
Cela me sera sûrement utile pour la gestion de mes sprites.
Par exemple j'ai 3 sprites nommés sp1, sp2 et sp3.
En fonction de la valeur d'une variable i (qui va de 1 à 3), je souhaite afficher gb.display.drawImage(x, y, "sp+i"); .
Comment gérer cela ?

Idem si je souhaite avoir plusieurs fichiers .INO avec le même préfixe, par exemple truc1.INO, truc2.INO, truc3.INO.
Puis-je appeler un fichier en fonction de la variable i ? "truc+i"();

Cela m'avait été utile de faire ça sur ma TI89 et j'aimerais bien savoir si c'est possible pour ma Gamebuino car j'aime bien cette méthode.

Merci d'avance

Codnpix

5 years ago

En fonction de la valeur d'une variable i (qui va de 1 à 3), je souhaite afficher gb.display.drawImage(x, y, "sp+i"); .
Comment gérer cela ?

Bonjour, en général je crois que quand tu es dans une situation ou tu voudrais pouvoir fabriquer une chaîne de caractères pour appeler une variable il faut penser : "je devrais plutôt faire un tableau". Par exemple tu fais un tableau dont chaque élément pointe vers chacun de tes sprites et tu le parcours avec ton "i" pour accéder à celui que tu veux.

Pour les fichiers .ino par contre je ne suis pas sûr de comprendre ce que tu veux faire. En tout cas dans l'IDE Arduino tu ne peux pas "réellement" avoir plusieurs fichiers, tu peux juste découper ton fichier en plusieurs morceaux et donner l'impression que tu travailles sur plusieurs fichiers, mais ensuite au moment de compiler, les morceaux sont recollés dans l'ordre alphabétique de leur nom. Du coup il faut bien faire attention à comment tu les nommes pour ne pas avoir d'erreur de compilation. Mais tu ne peux pas faire vraiment une programmation modulaire juste en utilisant des .ino. Pour faire ça il vaut mieux créer des fichiers .h et .cpp puis faire des #include aux bons endroits.

J'espère que ça t'aide un peu :). Bon courage pour le développement de ton jeu !

Codnpix

NEW 5 years ago

JFT JFT

En fonction de la valeur d'une variable i (qui va de 1 à 3), je souhaite afficher gb.display.drawImage(x, y, "sp+i"); .
Comment gérer cela ?

Bonjour, en général je crois que quand tu es dans une situation ou tu voudrais pouvoir fabriquer une chaîne de caractères pour appeler une variable il faut penser : "je devrais plutôt faire un tableau". Par exemple tu fais un tableau dont chaque élément pointe vers chacun de tes sprites et tu le parcours avec ton "i" pour accéder à celui que tu veux.

Pour les fichiers .ino par contre je ne suis pas sûr de comprendre ce que tu veux faire. En tout cas dans l'IDE Arduino tu ne peux pas "réellement" avoir plusieurs fichiers, tu peux juste découper ton fichier en plusieurs morceaux et donner l'impression que tu travailles sur plusieurs fichiers, mais ensuite au moment de compiler, les morceaux sont recollés dans l'ordre alphabétique de leur nom. Du coup il faut bien faire attention à comment tu les nommes pour ne pas avoir d'erreur de compilation. Mais tu ne peux pas faire vraiment une programmation modulaire juste en utilisant des .ino. Pour faire ça il vaut mieux créer des fichiers .h et .cpp puis faire des #include aux bons endroits.

J'espère que ça t'aide un peu :). Bon courage pour le développement de ton jeu !

JFT

NEW 5 years ago

Salut, Merci. Pour le tableau, c'est fait, j'en ai un pour gérer mes ennemis.
Simplement, comme j'ai des boucles d'animation faites manuellement, j'appelle plusieurs images à la suite. Et donc, en fonction de l'avancement de mon anim, je voulais appeler la bonne image. Imaginons que j'ai 3 étapes d'anim, au lieu de faire un "if étape = 1, 2 ou 3" alors afficher image1, image2 ou image3 je souhaite faire tout simplement "afficher 'image'+'variable comprise entre 1 et 3'". Donc juste rassembler la chaîne de caractères "image" et le chiffre correspondant au numéro d'image (variable).
Je vais continuer à faire mes recherches :)

Steph

5 years ago

I think I understood what you were trying to reproduce: -)

You are referring to the notion of a dynamic variable that is found, for example, in PHP :
http://php.net/manual/en/language.variables.variable.php

This notion does not exist in C++. You can imitate it by using tables, as Jicehel told you.

You can also review the documentation suggested by makerSquirrel and orient yourself towards the use of Spritesheets. In particular, the void Image::setFrame(uint16_t frame) function will allow you to easily display the sprite of your choice at the desired time.

jicehel

NEW 5 years ago

Tu peux mettre tes noms d'images dans des tableaux de chaines.

Si par exemple tu as une animation que tu vas appeler "Marche", tu peux faire

string Marche[3];

Marche[0]="image1";

Marche[1]="image4";

Marche[2]="image7";

Tu peux même le paramétrer de manière plus rapide lors de la création de ton tableau.

Comme ça: string Marche[3]={"image1","image4","image7"};




JFT

5 years ago

@jicehel :
My images are not BMP but created in the code with const uint16_t myimageData[].
If I use string Marche[3]={"image1","image4","image7"}; :
How can I call image4 for example, as gb.display.drawImage(X,Y, Marche[4]); is not working ?

Steph understood what I wanted to do, but he said it's not possible...
I'm not very good for explaning, sorry.
Let's take a simple example to make understand what was I wanted :
I create 2 images defined with const uint16_t img0Data[] and  const uint16_t img1Data[]
short r = random(2);
gb.display.drawImage(X,Y, "img+r");
// "img+r" is not correct, just a way to represent what I wanted
// I wanted to get the string of the r variable and add it at the end of the string "img" to have the name of one of the 2 images (img0 or img1) to call them, so with only 1 line I can display an image among severals thanks to 1 variable

JFT

NEW 5 years ago

Ah je n’avais pas pensé à ça. Je vais regarder merci.

makerSquirrel

NEW 5 years ago

I am looking forward to your game! Sounds pretty interesting, for help I think our french-speaking friends here will help you much more than I could, so:

bonne chance!

JFT

NEW 5 years ago

Thank you MakerSqirrel ! I should talk only English.

JFT

NEW 5 years ago

I think I’ll release at first a playable version then I’ll try to enhance it with better graphics.

jicehel

NEW 5 years ago

Nice  ;) 


JFT

NEW 5 years ago

Can I use my string element in gb.display ?
I would like to do this for example :
gb.display.drawImage(X,Y, Marche[1]);
But it doesn't work.

makerSquirrel

5 years ago

Is the string a path/filename like "texture.bmp" that you place on the SD card? if yes, simply do something like that:

gb.display.drawImage(X,Y, Image(Marche[1]));

If you mean something else, sorry I do not understand ;)

(more details in that tutorial: https://gamebuino.com/academy/standalone/add-images-to-your-games , reminder: if you have a tutorial page open, you can switch between english and french explanation by scrolling to the page end and click on the corresponding language button)

makerSquirrel

NEW 5 years ago

JFT JFT

Is the string a path/filename like "texture.bmp" that you place on the SD card? if yes, simply do something like that:

gb.display.drawImage(X,Y, Image(Marche[1]));

If you mean something else, sorry I do not understand ;)

(more details in that tutorial: https://gamebuino.com/academy/standalone/add-images-to-your-games , reminder: if you have a tutorial page open, you can switch between english and french explanation by scrolling to the page end and click on the corresponding language button)

Steph

NEW 5 years ago

JFT JFT

I think I understood what you were trying to reproduce: -)

You are referring to the notion of a dynamic variable that is found, for example, in PHP :
http://php.net/manual/en/language.variables.variable.php

This notion does not exist in C++. You can imitate it by using tables, as Jicehel told you.

You can also review the documentation suggested by makerSquirrel and orient yourself towards the use of Spritesheets. In particular, the void Image::setFrame(uint16_t frame) function will allow you to easily display the sprite of your choice at the desired time.

Sorunome

NEW 5 years ago

grumbles something about templates and that it should auto-create a temporary image

https://github.com/Gamebuino/Gamebuino-META/blob/master/src/utility/Graphics/Graphics.h#L106-L120

JFT

NEW 5 years ago

jicehel jicehel

@jicehel :
My images are not BMP but created in the code with const uint16_t myimageData[].
If I use string Marche[3]={"image1","image4","image7"}; :
How can I call image4 for example, as gb.display.drawImage(X,Y, Marche[4]); is not working ?

Steph understood what I wanted to do, but he said it's not possible...
I'm not very good for explaning, sorry.
Let's take a simple example to make understand what was I wanted :
I create 2 images defined with const uint16_t img0Data[] and  const uint16_t img1Data[]
short r = random(2);
gb.display.drawImage(X,Y, "img+r");
// "img+r" is not correct, just a way to represent what I wanted
// I wanted to get the string of the r variable and add it at the end of the string "img" to have the name of one of the 2 images (img0 or img1) to call them, so with only 1 line I can display an image among severals thanks to 1 variable

Alban

5 years ago

Hi JFT,

If you look at the interface of drawImage (https://gamebuino.com/academy/reference/graphics-drawimage), you'll see that it doesn't take a string as its 3rd argument, but an Image. "img12" is a string. "Image foobar" (without quotes) declares a container to an in-memory buffer.

So, if you want to loop over in-memory images for a walk animation, you could probably do something like :


Image img1 = ...
...
Image img4 = ...
Image animation[] = {img1, img2, img3, img4};
#define IMAGE_COUNT 4
uint32_t iteration(0)
[...]
// game loop
{
[...]
gb.display.drawImage(X,Y, animation[iteration%IMAGE_COUNT]);
++iteration;
[...]
}

And if for some reason you need to write an index within a string (which is NOT what you have to do in your case), up to index 9 you can do something like :

char * myString = "foobarX"; // character 'X' is at position 6, 0-based

int index = 4;

myString[6] = '0'+index; // myString holds "foobar4", as we have replaced the 6th character by character '0' offset by 4 units, which is character '4'

Steph

5 years ago

I believe that a concrete example, treated in its entirety, will allow you to better understand how to apply everything that has been said:-) Here is a spritesheet that breaks down the progress of a well-known character, which includes 10 images (right-click and then "save image as" to retrieve it):


You will find the original spritesheet on spriters-resource.com. Thanks to Ittan-Momen.

The animation has 10 frames. Each frame measures 20x32 pixels. You can convert this spritesheet to C++ using the Image to code converter tool of our friend gouz. All frames are oriented to the left, but it is useless to copy them by symmetry to obtain the versions oriented to the right. Indeed, you will see below that the drawImage function accepts two optional parameters (w2 and h2) that will allow you to reverse images horizontally.

You will find below a small code detailing an animation technique of the character walking, controllable with the BUTTON_LEFT and BUTTON_RIGHT buttons on the console. Here is a screenshot of what it looks like:

Here is the corresponding code:

#include <Gamebuino-Meta.h>

#define SCREEN_WIDTH            80
#define SCREEN_HEIGHT           64

#define MARIO_WIDTH             20
#define MARIO_HEIGHT            32
#define MARIO_FRAMES            10
#define MARIO_DEFAULT_FRAME     4
#define MARIO_ORIENTATION_LEFT  true
#define MARIO_ORIENTATION_RIGHT false

const uint16_t mariodata[] = {
    MARIO_WIDTH,  // frame width
    MARIO_HEIGHT, // frame height
    MARIO_FRAMES, // number of frames
    0,            // animation speed (no animation)
    0xF81F,       // transparent color
    0,            // color mode: RGB565
    // colored pixels data
     0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xec66,0xec66,0xec66,0xe184,0xe184,0x0,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xec66,0xec66,0xe184,0xe184,0xe184,0xe184,0xe184,0xe184,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xec66,0xe184,0xffdf,0xffdf,0xffdf,0xe184,0xe184,0xe184,0xe184,0xe184,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xe184,0xe184,0xffdf,0xffdf,0xffdf,0xffdf,0xe184,0xe184,0xe184,0xe184,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xe184,0xe184,0xffdf,0xffdf,0xffdf,0xe184,0xe184,0xe184,0x80c1,0x80c1,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe184,0x80c1,0x80c1,0x80c1,0x0,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80c1,0x80c1,0xe184,0xe184,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0xf616,0xf616,0xf616,0xf616,0xf616,0xf616,0x0,0x0,0x0,0x80c1,0x80c1,0x80c1,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xffdd,0x0,0xffdd,0x0,0xffdd,0xff5a,0xf616,0x0,0x0,0x0,0x80c1,0x80c1,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0xff5a,0x0,0xffdd,0xff5a,0xf616,0xf616,0x0,0xf616,0x0,0x80c1,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0x0,0xffdd,0xffdd,0xffdd,0x0,0xffdd,0xff5a,0xff5a,0xff5a,0xf616,0xf616,0x0,0xf616,0xf616,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xffdd,0xffdd,0xf616,0xf616,0x0,0x0,0x0,0x0,0x0,0xf616,0x0,0xf616,0xf616,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf616,0xf616,0xf616,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf616,0xf616,0xf616,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xf616,0xf616,0xf616,0xf616,0xf616,0xf616,0x0,0x0,0x0,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80c1,0xe184,0xe184,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x949e,0x0,0xe184,0xe184,0x0,0x949e,0x0,0x80c1,0x80c1,0xe184,0xe184,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x949e,0x0,0xe184,0xe184,0xe184,0x0,0x949e,0x0,0x0,0x0,0x80c1,0xe184,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x949e,0x0,0xe184,0xe184,0x0,0x949e,0x949e,0x0,0xec66,0xffdf,0x0,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x949e,0x949e,0x0,0x0,0x0,0x949e,0x949e,0x0,0xffdf,0xffdf,0xffdf,0xffdf,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x949e,0xffdf,0x949e,0x949e,0xffdf,0xffdf,0x949e,0x0,0xff50,0xffdf,0xffdf,0xffdf,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x949e,0xffdf,0x949e,0x949e,0xffdf,0xffdf,0x949e,0x0,0xff50,0xff50,0xff50,0xff50,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x7399,0x949e,0x949e,0x949e,0x949e,0x949e,0x949e,0x7399,0x0,0xff50,0xff50,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x4a51,0x7399,0x7399,0x7399,0x7399,0x7399,0x7399,0x0,0x0,0x0,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x4a51,0x4a51,0x4a51,0x4a51,0x4a51,0x0,0xec66,0xe184,0xe184,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0xec66,0xe184,0xe184,0x80c1,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0xe184,0x80c1,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x80c1,0x80c1,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xec66,0xec66,0xe184,0x0,0x80c1,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xe184,0xe184,0xe184,0x0,0x80c1,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xec66,0xec66,0xec66,0xe184,0xe184,0x0,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xec66,0xec66,0xe184,0xe184,0xe184,0xe184,0xe184,0xe184,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xec66,0xe184,0xffdf,0xffdf,0xffdf,0xe184,0xe184,0xe184,0xe184,0xe184,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xe184,0xe184,0xffdf,0xffdf,0xffdf,0xffdf,0xe184,0xe184,0xe184,0xe184,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xe184,0xe184,0xffdf,0xffdf,0xffdf,0xe184,0xe184,0xe184,0x80c1,0x80c1,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe184,0x80c1,0x80c1,0x80c1,0x0,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80c1,0x80c1,0xe184,0xe184,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0xf616,0xf616,0xf616,0xf616,0xf616,0xf616,0x0,0x0,0x0,0x80c1,0x80c1,0x80c1,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xffdd,0x0,0xffdd,0x0,0xffdd,0xff5a,0xf616,0x0,0x0,0x0,0x80c1,0x80c1,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0xff5a,0x0,0xffdd,0xff5a,0xf616,0xf616,0x0,0xf616,0x0,0x80c1,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0x0,0xffdd,0xffdd,0xffdd,0x0,0xffdd,0xff5a,0xff5a,0xff5a,0xf616,0xf616,0x0,0xf616,0xf616,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xffdd,0xffdd,0xf616,0xf616,0x0,0x0,0x0,0x0,0x0,0xf616,0x0,0xf616,0xf616,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf616,0xf616,0xf616,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf616,0xf616,0xf616,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xf616,0xf616,0xf616,0xf616,0xf616,0xf616,0x0,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x949e,0x0,0xe184,0xe184,0x0,0x0,0xe184,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x949e,0x0,0xe184,0xe184,0xe184,0x0,0x0,0xe184,0xe184,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x949e,0x0,0xe184,0xe184,0x0,0x949e,0x0,0x80c1,0xe184,0xe184,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x949e,0x949e,0x0,0x0,0x0,0x949e,0x949e,0x0,0x0,0x0,0x0,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x949e,0xffdf,0x949e,0x949e,0xffdf,0xffdf,0x949e,0x0,0xffdf,0xffdf,0xffdf,0xffdf,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x949e,0xffdf,0x949e,0x949e,0xffdf,0xffdf,0x0,0xff50,0xffdf,0xffdf,0xffdf,0xffdf,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x7399,0x949e,0x949e,0x949e,0x949e,0x949e,0x0,0xec66,0xff50,0xffdf,0xffdf,0xffdf,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x4a51,0x7399,0x7399,0x7399,0x7399,0x7399,0x7399,0x0,0xec66,0xff50,0xffdf,0xec66,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0x4a51,0x7399,0x7399,0x0,0x0,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0xec66,0xe184,0x80c1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xec66,0xec66,0xe184,0xe184,0xe184,0x80c1,0x0,0xF81F,0xF81F,0x0,0x0,0x80c1,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xff50,0xff50,0xe184,0xe184,0x80c1,0x80c1,0x0,0x0,0x0,0x80c1,0x80c1,0x80c1,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0xff50,0xff50,0xff50,0xff50,0x0,0xec66,0xe184,0x80c1,0x80c1,0x80c1,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0xe184,0xe184,0xe184,0x80c1,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xec66,0xec66,0xec66,0xe184,0xe184,0x0,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xec66,0xec66,0xe184,0xe184,0xe184,0xe184,0xe184,0xe184,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xec66,0xe184,0xffdf,0xffdf,0xffdf,0xe184,0xe184,0xe184,0xe184,0xe184,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xe184,0xe184,0xffdf,0xffdf,0xffdf,0xffdf,0xe184,0xe184,0xe184,0xe184,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xe184,0xe184,0xffdf,0xffdf,0xffdf,0xe184,0xe184,0xe184,0x80c1,0x80c1,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe184,0x80c1,0x80c1,0x80c1,0x0,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80c1,0x80c1,0xe184,0xe184,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0xf616,0xf616,0xf616,0xf616,0xf616,0xf616,0x0,0x0,0x0,0x80c1,0x80c1,0x80c1,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xffdd,0x0,0xffdd,0x0,0xffdd,0xff5a,0xf616,0x0,0x0,0x0,0x80c1,0x80c1,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0xff5a,0x0,0xffdd,0xff5a,0xf616,0xf616,0x0,0xf616,0x0,0x80c1,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0x0,0xffdd,0xffdd,0xffdd,0x0,0xffdd,0xff5a,0xff5a,0xff5a,0xf616,0xf616,0x0,0xf616,0xf616,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xffdd,0xffdd,0xf616,0xf616,0x0,0x0,0x0,0x0,0x0,0xf616,0x0,0xf616,0xf616,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf616,0xf616,0xf616,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf616,0xf616,0xf616,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xf616,0xf616,0xf616,0xf616,0xf616,0xf616,0x0,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x949e,0x0,0xe184,0xe184,0x0,0x949e,0x0,0xe184,0xe184,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x949e,0x0,0xe184,0xe184,0xe184,0x0,0x949e,0x0,0xe184,0xe184,0xe184,0xe184,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x949e,0x0,0xe184,0xe184,0x0,0x949e,0x949e,0x0,0x80c1,0x0,0x0,0x0,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x949e,0x949e,0x0,0x0,0x0,0x949e,0x949e,0x949e,0x0,0x80c1,0x0,0xffdf,0xffdf,0xffdf,0xffdf,0x0,0xF81F,0xF81F,0xF81F,0x0,0x949e,0xffdf,0x949e,0x949e,0xffdf,0xffdf,0x949e,0x949e,0x7399,0x0,0xff50,0xffdf,0xffdf,0xffdf,0xffdf,0x0,0xF81F,0xF81F,0xF81F,0x0,0x949e,0xffdf,0x949e,0x949e,0xffdf,0xffdf,0x949e,0x949e,0x7399,0x0,0xec66,0xff50,0xffdf,0xffdf,0xffdf,0x0,0xF81F,0xF81F,0xF81F,0x0,0x7399,0x949e,0x949e,0x949e,0x949e,0x949e,0x949e,0x7399,0x7399,0x7399,0x0,0xff50,0xff50,0xffdf,0xff50,0x0,0xF81F,0xF81F,0x0,0x0,0x0,0x7399,0x7399,0x7399,0x7399,0x7399,0x7399,0x7399,0x7399,0x7399,0x4a51,0x0,0xff50,0xff50,0x0,0xF81F,0xF81F,0x0,0xff50,0xec66,0x0,0x4a51,0x4a51,0x4a51,0x4a51,0x4a51,0x7399,0x7399,0x0,0x0,0x0,0xF81F,0x0,0x0,0xF81F,0xF81F,0xF81F,0x0,0xff50,0xff50,0xe184,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xec66,0xe184,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xff50,0xff50,0xe184,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xec66,0xe184,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xff50,0xff50,0x80c1,0x80c1,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0x0,0xe184,0x80c1,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xff50,0xff50,0x80c1,0x80c1,0x0,0xF81F,0xF81F,0x0,0xec66,0xe184,0x80c1,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xff50,0xff50,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0x0,0xe184,0x80c1,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xec66,0xec66,0xec66,0xe184,0xe184,0x0,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xec66,0xec66,0xe184,0xe184,0xe184,0xe184,0xe184,0xe184,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xec66,0xe184,0xffdf,0xffdf,0xffdf,0xe184,0xe184,0xe184,0xe184,0xe184,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xe184,0xe184,0xffdf,0xffdf,0xffdf,0xffdf,0xe184,0xe184,0xe184,0xe184,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xe184,0xe184,0xffdf,0xffdf,0xffdf,0xe184,0xe184,0xe184,0x80c1,0x80c1,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe184,0x80c1,0x80c1,0x80c1,0x0,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80c1,0x80c1,0xe184,0xe184,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0xf616,0xf616,0xf616,0xf616,0xf616,0xf616,0x0,0x0,0x0,0x80c1,0x80c1,0x80c1,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xffdd,0x0,0xffdd,0x0,0xffdd,0xff5a,0xf616,0x0,0x0,0x0,0x80c1,0x80c1,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0xff5a,0x0,0xffdd,0xff5a,0xf616,0xf616,0x0,0xf616,0x0,0x80c1,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0x0,0xffdd,0xffdd,0xffdd,0x0,0xffdd,0xff5a,0xff5a,0xff5a,0xf616,0xf616,0x0,0xf616,0xf616,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xffdd,0xffdd,0xf616,0xf616,0x0,0x0,0x0,0x0,0x0,0xf616,0x0,0xf616,0xf616,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf616,0xf616,0xf616,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf616,0xf616,0xf616,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xf616,0xf616,0xf616,0xf616,0xf616,0xf616,0x0,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x949e,0x0,0xe184,0xe184,0x0,0x0,0xe184,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x949e,0x0,0xe184,0xe184,0xe184,0x0,0x0,0xe184,0xe184,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x949e,0x0,0xe184,0xe184,0x0,0x949e,0x0,0x80c1,0xe184,0xe184,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x949e,0x949e,0x0,0x0,0x0,0x949e,0x949e,0x0,0x0,0x0,0x0,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x949e,0xffdf,0x949e,0x949e,0xffdf,0xffdf,0x949e,0x0,0xffdf,0xffdf,0xffdf,0xffdf,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x949e,0xffdf,0x949e,0x949e,0xffdf,0xffdf,0x0,0xff50,0xffdf,0xffdf,0xffdf,0xffdf,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x7399,0x949e,0x949e,0x949e,0x949e,0x949e,0x0,0xec66,0xff50,0xffdf,0xffdf,0xffdf,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x4a51,0x7399,0x7399,0x7399,0x7399,0x7399,0x7399,0x0,0xec66,0x0,0x0,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x4a51,0x4a51,0x4a51,0x4a51,0x4a51,0x7399,0x7399,0x0,0xec66,0xec66,0xe184,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe184,0xe184,0xe184,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xec66,0xec66,0xe184,0x0,0xF81F,0xF81F,0xF81F,0x0,0x80c1,0x80c1,0x80c1,0xe184,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xff50,0x0,0xe184,0x80c1,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0x0,0x0,0x80c1,0xe184,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xff50,0x0,0x0,0x80c1,0x80c1,0x0,0xF81F,0xF81F,0x0,0x80c1,0x80c1,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xff50,0xff50,0x0,0x80c1,0x0,0xF81F,0xF81F,0x0,0x80c1,0x80c1,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xec66,0xec66,0xec66,0xe184,0xe184,0x0,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xec66,0xec66,0xe184,0xe184,0xe184,0xe184,0xe184,0xe184,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xec66,0xe184,0xffdf,0xffdf,0xffdf,0xe184,0xe184,0xe184,0xe184,0xe184,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xe184,0xe184,0xffdf,0xffdf,0xffdf,0xffdf,0xe184,0xe184,0xe184,0xe184,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xe184,0xe184,0xffdf,0xffdf,0xffdf,0xe184,0xe184,0xe184,0x80c1,0x80c1,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe184,0x80c1,0x80c1,0x80c1,0x0,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80c1,0x80c1,0xe184,0xe184,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0xf616,0xf616,0xf616,0xf616,0xf616,0xf616,0x0,0x0,0x0,0x80c1,0x80c1,0x80c1,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xffdd,0x0,0xffdd,0x0,0xffdd,0xff5a,0xf616,0x0,0x0,0x0,0x80c1,0x80c1,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0xff5a,0x0,0xffdd,0xff5a,0xf616,0xf616,0x0,0xf616,0x0,0x80c1,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0x0,0xffdd,0xffdd,0xffdd,0x0,0xffdd,0xff5a,0xff5a,0xff5a,0xf616,0xf616,0x0,0xf616,0xf616,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xffdd,0xffdd,0xf616,0xf616,0x0,0x0,0x0,0x0,0x0,0xf616,0x0,0xf616,0xf616,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf616,0xf616,0xf616,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf616,0xf616,0xf616,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xf616,0xf616,0xf616,0xf616,0xf616,0xf616,0x0,0x0,0x0,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80c1,0xe184,0xe184,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x949e,0x0,0xe184,0xe184,0x0,0x949e,0x0,0x80c1,0x80c1,0xe184,0xe184,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x949e,0x0,0xe184,0xe184,0xe184,0x0,0x949e,0x0,0x0,0x0,0x80c1,0xe184,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x949e,0x0,0xe184,0xe184,0x0,0x949e,0x949e,0x0,0xec66,0xffdf,0x0,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x949e,0x949e,0x0,0x0,0x0,0x949e,0x949e,0x0,0xffdf,0xffdf,0xffdf,0xffdf,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x949e,0xffdf,0x949e,0x949e,0xffdf,0xffdf,0x949e,0x0,0xff50,0xffdf,0xffdf,0xffdf,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x949e,0xffdf,0x949e,0x949e,0xffdf,0xffdf,0x949e,0x0,0xff50,0xff50,0xff50,0xff50,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x7399,0x949e,0x949e,0x949e,0x949e,0x949e,0x949e,0x7399,0x0,0xff50,0xff50,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x4a51,0x7399,0x7399,0x7399,0x7399,0x7399,0x7399,0x7399,0x7399,0x0,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x4a51,0x4a51,0x4a51,0x4a51,0x4a51,0x7399,0x7399,0x0,0xec66,0xe184,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xec66,0xe184,0xe184,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xe184,0x80c1,0x80c1,0x80c1,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0xF81F,0xF81F,0x0,0x80c1,0x0,0x80c1,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xec66,0xec66,0xe184,0x80c1,0x0,0x0,0x0,0x0,0x0,0x80c1,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xe184,0xe184,0xe184,0xe184,0x80c1,0x80c1,0x0,0xF81F,0xF81F,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xec66,0xec66,0xec66,0xe184,0xe184,0x0,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xec66,0xec66,0xe184,0xe184,0xe184,0xe184,0xe184,0xe184,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xec66,0xe184,0xffdf,0xffdf,0xffdf,0xe184,0xe184,0xe184,0xe184,0xe184,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xe184,0xe184,0xffdf,0xffdf,0xffdf,0xffdf,0xe184,0xe184,0xe184,0xe184,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xe184,0xe184,0xffdf,0xffdf,0xffdf,0xe184,0xe184,0xe184,0x80c1,0x80c1,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe184,0x80c1,0x80c1,0x80c1,0x0,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80c1,0x80c1,0xe184,0xe184,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0xf616,0xf616,0xf616,0xf616,0xf616,0xf616,0x0,0x0,0x0,0x80c1,0x80c1,0x80c1,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xffdd,0x0,0xffdd,0x0,0xffdd,0xff5a,0xf616,0x0,0x0,0x0,0x80c1,0x80c1,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0xff5a,0x0,0xffdd,0xff5a,0xf616,0xf616,0x0,0xf616,0x0,0x80c1,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0x0,0xffdd,0xffdd,0xffdd,0x0,0xffdd,0xff5a,0xff5a,0xff5a,0xf616,0xf616,0x0,0xf616,0xf616,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xffdd,0xffdd,0xf616,0xf616,0x0,0x0,0x0,0x0,0x0,0xf616,0x0,0xf616,0xf616,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf616,0xf616,0xf616,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf616,0xf616,0xf616,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xf616,0xf616,0xf616,0xf616,0xf616,0xf616,0x0,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x949e,0x0,0xe184,0xe184,0x0,0x0,0xe184,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x949e,0x0,0xe184,0xe184,0xe184,0x0,0x0,0xe184,0xe184,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x949e,0x0,0xe184,0xe184,0x0,0x949e,0x0,0x80c1,0xe184,0xe184,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x949e,0x949e,0x0,0x0,0x0,0x949e,0x949e,0x0,0x0,0x0,0x0,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x949e,0xffdf,0x949e,0x949e,0xffdf,0xffdf,0x949e,0x0,0xffdf,0xffdf,0xffdf,0xffdf,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x949e,0xffdf,0x949e,0x949e,0xffdf,0xffdf,0x0,0xff50,0xffdf,0xffdf,0xffdf,0xffdf,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x7399,0x949e,0x949e,0x949e,0x949e,0x949e,0x0,0xec66,0xff50,0xffdf,0xffdf,0xffdf,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x4a51,0x7399,0x7399,0x7399,0x7399,0x7399,0x0,0x0,0x0,0xff50,0xffdf,0xec66,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x4a51,0x4a51,0x4a51,0x4a51,0x0,0xec66,0xe184,0xe184,0x0,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0xec66,0xe184,0xe184,0x80c1,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xe184,0x80c1,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x80c1,0x80c1,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xec66,0xec66,0xe184,0x0,0x80c1,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xe184,0xe184,0xe184,0x0,0x80c1,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xec66,0xec66,0xec66,0xe184,0xe184,0x0,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xec66,0xec66,0xe184,0xe184,0xe184,0xe184,0xe184,0xe184,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xec66,0xe184,0xffdf,0xffdf,0xffdf,0xe184,0xe184,0xe184,0xe184,0xe184,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xe184,0xe184,0xffdf,0xffdf,0xffdf,0xffdf,0xe184,0xe184,0xe184,0xe184,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xe184,0xe184,0xffdf,0xffdf,0xffdf,0xe184,0xe184,0xe184,0x80c1,0x80c1,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe184,0x80c1,0x80c1,0x80c1,0x0,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80c1,0x80c1,0xe184,0xe184,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0xf616,0xf616,0xf616,0xf616,0xf616,0xf616,0x0,0x0,0x0,0x80c1,0x80c1,0x80c1,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xffdd,0x0,0xffdd,0x0,0xffdd,0xff5a,0xf616,0x0,0x0,0x0,0x80c1,0x80c1,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0xff5a,0x0,0xffdd,0xff5a,0xf616,0xf616,0x0,0xf616,0x0,0x80c1,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0x0,0xffdd,0xffdd,0xffdd,0x0,0xffdd,0xff5a,0xff5a,0xff5a,0xf616,0xf616,0x0,0xf616,0xf616,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xffdd,0xffdd,0xf616,0xf616,0x0,0x0,0x0,0x0,0x0,0xf616,0x0,0xf616,0xf616,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf616,0xf616,0xf616,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf616,0xf616,0xf616,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xf616,0xf616,0xf616,0xf616,0xf616,0xf616,0x0,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x949e,0x0,0xe184,0xe184,0x0,0x949e,0x0,0xe184,0xe184,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x949e,0x0,0xe184,0xe184,0xe184,0x0,0x949e,0x0,0xe184,0xe184,0xe184,0xe184,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x949e,0x0,0xe184,0xe184,0x0,0x949e,0x949e,0x0,0x80c1,0x0,0x0,0x0,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x949e,0x949e,0x0,0x0,0x0,0x949e,0x949e,0x949e,0x0,0x80c1,0x0,0xffdf,0xffdf,0xffdf,0xffdf,0x0,0xF81F,0xF81F,0xF81F,0x0,0x949e,0xffdf,0x949e,0x949e,0xffdf,0xffdf,0x949e,0x949e,0x7399,0x0,0xff50,0xffdf,0xffdf,0xffdf,0xffdf,0x0,0xF81F,0xF81F,0xF81F,0x0,0x949e,0xffdf,0x949e,0x949e,0xffdf,0xffdf,0x949e,0x949e,0x7399,0x0,0xec66,0xff50,0xffdf,0xffdf,0xffdf,0x0,0xF81F,0xF81F,0xF81F,0x0,0x7399,0x949e,0x949e,0x949e,0x949e,0x949e,0x949e,0x7399,0x7399,0x7399,0x0,0xff50,0xff50,0xffdf,0xff50,0x0,0xF81F,0xF81F,0xF81F,0x0,0x4a51,0x7399,0x7399,0x7399,0x7399,0x7399,0x7399,0x7399,0x7399,0x7399,0x4a51,0x0,0xff50,0xff50,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x4a51,0x0,0x0,0x0,0x0,0x7399,0x7399,0x7399,0x4a51,0x0,0xF81F,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0xec66,0xe184,0x80c1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xec66,0xec66,0xe184,0xe184,0xe184,0x80c1,0x0,0xF81F,0xF81F,0x0,0x0,0x80c1,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xff50,0xff50,0xe184,0xe184,0x80c1,0x80c1,0x0,0x0,0x0,0x80c1,0x80c1,0x80c1,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0xff50,0xff50,0xff50,0xff50,0x0,0xec66,0xe184,0x80c1,0x80c1,0x80c1,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0xe184,0xe184,0xe184,0x80c1,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xec66,0xec66,0xec66,0xe184,0xe184,0x0,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xec66,0xec66,0xe184,0xe184,0xe184,0xe184,0xe184,0xe184,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xec66,0xe184,0xffdf,0xffdf,0xffdf,0xe184,0xe184,0xe184,0xe184,0xe184,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xe184,0xe184,0xffdf,0xffdf,0xffdf,0xffdf,0xe184,0xe184,0xe184,0xe184,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xe184,0xe184,0xffdf,0xffdf,0xffdf,0xe184,0xe184,0xe184,0x80c1,0x80c1,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe184,0x80c1,0x80c1,0x80c1,0x0,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80c1,0x80c1,0xe184,0xe184,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0xf616,0xf616,0xf616,0xf616,0xf616,0xf616,0x0,0x0,0x0,0x80c1,0x80c1,0x80c1,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xffdd,0x0,0xffdd,0x0,0xffdd,0xff5a,0xf616,0x0,0x0,0x0,0x80c1,0x80c1,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0xff5a,0x0,0xffdd,0xff5a,0xf616,0xf616,0x0,0xf616,0x0,0x80c1,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0x0,0xffdd,0xffdd,0xffdd,0x0,0xffdd,0xff5a,0xff5a,0xff5a,0xf616,0xf616,0x0,0xf616,0xf616,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xffdd,0xffdd,0xf616,0xf616,0x0,0x0,0x0,0x0,0x0,0xf616,0x0,0xf616,0xf616,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf616,0xf616,0xf616,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf616,0xf616,0xf616,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xf616,0xf616,0xf616,0xf616,0xf616,0xf616,0x0,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x949e,0x0,0xe184,0xe184,0x0,0x0,0xe184,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x949e,0x0,0xe184,0xe184,0xe184,0x0,0x0,0xe184,0xe184,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x949e,0x0,0xe184,0xe184,0x0,0x949e,0x0,0x80c1,0xe184,0xe184,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x949e,0x949e,0x0,0x0,0x0,0x949e,0x949e,0x0,0x0,0x0,0x0,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x949e,0xffdf,0x949e,0x949e,0xffdf,0xffdf,0x949e,0x0,0xffdf,0xffdf,0xffdf,0xffdf,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x949e,0xffdf,0x949e,0x949e,0xffdf,0xffdf,0x0,0xff50,0xffdf,0xffdf,0xffdf,0xffdf,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x7399,0x949e,0x949e,0x949e,0x949e,0x949e,0x0,0xec66,0xff50,0xffdf,0xffdf,0xffdf,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x7399,0x7399,0x7399,0x7399,0x7399,0x7399,0x0,0xec66,0xff50,0xffdf,0xec66,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xff50,0xec66,0x0,0x4a51,0x4a51,0x4a51,0x4a51,0x7399,0x7399,0x0,0x0,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xff50,0xff50,0xe184,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xec66,0xe184,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xff50,0xff50,0xe184,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xec66,0xe184,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xff50,0xff50,0x80c1,0x80c1,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0x0,0xe184,0x80c1,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xff50,0xff50,0x80c1,0x80c1,0x0,0xF81F,0xF81F,0x0,0xec66,0xe184,0x80c1,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xff50,0xff50,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0x0,0xe184,0x80c1,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xec66,0xec66,0xec66,0xe184,0xe184,0x0,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xec66,0xec66,0xe184,0xe184,0xe184,0xe184,0xe184,0xe184,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xec66,0xe184,0xffdf,0xffdf,0xffdf,0xe184,0xe184,0xe184,0xe184,0xe184,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xe184,0xe184,0xffdf,0xffdf,0xffdf,0xffdf,0xe184,0xe184,0xe184,0xe184,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xe184,0xe184,0xffdf,0xffdf,0xffdf,0xe184,0xe184,0xe184,0x80c1,0x80c1,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe184,0x80c1,0x80c1,0x80c1,0x0,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80c1,0x80c1,0xe184,0xe184,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0xf616,0xf616,0xf616,0xf616,0xf616,0xf616,0x0,0x0,0x0,0x80c1,0x80c1,0x80c1,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xffdd,0x0,0xffdd,0x0,0xffdd,0xff5a,0xf616,0x0,0x0,0x0,0x80c1,0x80c1,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0xff5a,0x0,0xffdd,0xff5a,0xf616,0xf616,0x0,0xf616,0x0,0x80c1,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0x0,0xffdd,0xffdd,0xffdd,0x0,0xffdd,0xff5a,0xff5a,0xff5a,0xf616,0xf616,0x0,0xf616,0xf616,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xffdd,0xffdd,0xf616,0xf616,0x0,0x0,0x0,0x0,0x0,0xf616,0x0,0xf616,0xf616,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf616,0xf616,0xf616,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf616,0xf616,0xf616,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xf616,0xf616,0xf616,0xf616,0xf616,0xf616,0x0,0x0,0x0,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80c1,0xe184,0xe184,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x949e,0x0,0xe184,0xe184,0x0,0x949e,0x0,0x80c1,0x80c1,0xe184,0xe184,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x949e,0x0,0xe184,0xe184,0xe184,0x0,0x949e,0x0,0x0,0x0,0x80c1,0xe184,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x949e,0x0,0xe184,0xe184,0x0,0x949e,0x949e,0x0,0xec66,0xffdf,0x0,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x949e,0x949e,0x0,0x0,0x0,0x949e,0x949e,0x0,0xffdf,0xffdf,0xffdf,0xffdf,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x949e,0xffdf,0x949e,0x949e,0xffdf,0xffdf,0x949e,0x0,0xff50,0xffdf,0xffdf,0xffdf,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x949e,0xffdf,0x949e,0x949e,0xffdf,0xffdf,0x949e,0x0,0xff50,0xff50,0xff50,0xff50,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x7399,0x949e,0x949e,0x949e,0x949e,0x949e,0x949e,0x7399,0x0,0xff50,0xff50,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x4a51,0x7399,0x7399,0x7399,0x7399,0x7399,0x7399,0x7399,0x7399,0x0,0x0,0x0,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x4a51,0x4a51,0x4a51,0x4a51,0x4a51,0x7399,0x7399,0x7399,0x0,0xec66,0xec66,0xe184,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe184,0xe184,0xe184,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0xec66,0xec66,0xe184,0x0,0xF81F,0xF81F,0xF81F,0x0,0x80c1,0x80c1,0x80c1,0xe184,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xff50,0x0,0xe184,0x80c1,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0x0,0x0,0x80c1,0xe184,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xff50,0x0,0x0,0x80c1,0x80c1,0x0,0xF81F,0xF81F,0x0,0x80c1,0x80c1,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xff50,0xff50,0x0,0x80c1,0x0,0xF81F,0xF81F,0x0,0x80c1,0x80c1,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xec66,0xec66,0xec66,0xe184,0xe184,0x0,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xec66,0xec66,0xe184,0xe184,0xe184,0xe184,0xe184,0xe184,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xec66,0xe184,0xffdf,0xffdf,0xffdf,0xe184,0xe184,0xe184,0xe184,0xe184,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xe184,0xe184,0xffdf,0xffdf,0xffdf,0xffdf,0xe184,0xe184,0xe184,0xe184,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xe184,0xe184,0xffdf,0xffdf,0xffdf,0xe184,0xe184,0xe184,0x80c1,0x80c1,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe184,0x80c1,0x80c1,0x80c1,0x0,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80c1,0x80c1,0xe184,0xe184,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0xf616,0xf616,0xf616,0xf616,0xf616,0xf616,0x0,0x0,0x0,0x80c1,0x80c1,0x80c1,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xffdd,0x0,0xffdd,0x0,0xffdd,0xff5a,0xf616,0x0,0x0,0x0,0x80c1,0x80c1,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0xff5a,0x0,0xffdd,0xff5a,0xf616,0xf616,0x0,0xf616,0x0,0x80c1,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0x0,0xffdd,0xffdd,0xffdd,0x0,0xffdd,0xff5a,0xff5a,0xff5a,0xf616,0xf616,0x0,0xf616,0xf616,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xffdd,0xffdd,0xf616,0xf616,0x0,0x0,0x0,0x0,0x0,0xf616,0x0,0xf616,0xf616,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf616,0xf616,0xf616,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf616,0xf616,0xf616,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xf616,0xf616,0xf616,0xf616,0xf616,0xf616,0x0,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x949e,0x0,0xe184,0xe184,0x0,0x0,0xe184,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x949e,0x0,0xe184,0xe184,0xe184,0x0,0x0,0xe184,0xe184,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x949e,0x0,0xe184,0xe184,0x0,0x949e,0x0,0x80c1,0xe184,0xe184,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x949e,0x949e,0x0,0x0,0x0,0x949e,0x949e,0x0,0x0,0x0,0x0,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x949e,0xffdf,0x949e,0x949e,0xffdf,0xffdf,0x949e,0x0,0xffdf,0xffdf,0xffdf,0xffdf,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x949e,0xffdf,0x949e,0x949e,0xffdf,0xffdf,0x0,0xff50,0xffdf,0xffdf,0xffdf,0xffdf,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x7399,0x949e,0x949e,0x949e,0x949e,0x949e,0x0,0xec66,0xff50,0xffdf,0xffdf,0xffdf,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x4a51,0x7399,0x7399,0x7399,0x7399,0x7399,0x7399,0x0,0x0,0x0,0xffdf,0xec66,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x4a51,0x4a51,0x4a51,0x4a51,0x4a51,0x7399,0x0,0xec66,0xe184,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0x0,0xec66,0xe184,0xe184,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xe184,0x80c1,0x80c1,0x80c1,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0xF81F,0x0,0x80c1,0x0,0x80c1,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xec66,0xec66,0xe184,0x80c1,0x0,0x0,0x0,0x0,0x0,0x80c1,0x80c1,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0xe184,0xe184,0xe184,0xe184,0x80c1,0x80c1,0x0,0xF81F,0xF81F,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F,0xF81F
};

typedef struct {
    uint8_t           x;
    uint8_t           y;
    uint8_t           w; // width
    uint8_t           h; // height
    bool    orientation; // left | right
    int8_t           vx; // horizontal velocity
    uint8_t       frame; // current frame
    uint8_t      frames; // number of frames
    Image         sheet; // spritesheet
} Sprite;

Sprite mario = {
    .5*(SCREEN_WIDTH  - MARIO_WIDTH),  // x
    .5*(SCREEN_HEIGHT - MARIO_HEIGHT), // y
    MARIO_WIDTH,                       // w
    MARIO_HEIGHT,                      // h
    MARIO_ORIENTATION_RIGHT,           // orientation
    0,                                 // vx
    MARIO_DEFAULT_FRAME,               // frame
    MARIO_FRAMES,                      // frames
    Image(mariodata)                   // sheet
};

void setup() {
    gb.begin();
}

void loop() {
    while (!gb.update());
    gb.display.clear();

    checkButtons();
    moveMario();
    drawMario();
}

void checkButtons() {
    if (gb.buttons.repeat(BUTTON_LEFT, 0)) {
        mario.orientation = MARIO_ORIENTATION_LEFT;
        mario.vx = -2;
    } else if (gb.buttons.repeat(BUTTON_RIGHT, 0)) {
        mario.orientation = MARIO_ORIENTATION_RIGHT;
        mario.vx = 2;
    } else if (gb.buttons.released(BUTTON_LEFT) || gb.buttons.released(BUTTON_RIGHT)) {
        mario.vx    = 0;
        mario.frame = MARIO_DEFAULT_FRAME;
    }
}

void moveMario() {
    if (mario.vx != 0) {
        mario.x += mario.vx;
        if (mario.x < 0 || mario.x + mario.w > SCREEN_WIDTH-1) {
            mario.x -= mario.vx;
        }
        mario.frame = ++mario.frame % mario.frames;
    }
}

void drawMario() {
    mario.sheet.setFrame(mario.frame);
    gb.display.drawImage(
        mario.x,
        mario.y,
        mario.sheet,
        mario.w * (mario.orientation == MARIO_ORIENTATION_LEFT ? 1 : -1),
        mario.h
    ); 
}

I hope you'll see it through now. Feel free to come back to us if you have any new questions ;-)

Alban

NEW 5 years ago

JFT JFT

Hi JFT,

If you look at the interface of drawImage (https://gamebuino.com/academy/reference/graphics-drawimage), you'll see that it doesn't take a string as its 3rd argument, but an Image. "img12" is a string. "Image foobar" (without quotes) declares a container to an in-memory buffer.

So, if you want to loop over in-memory images for a walk animation, you could probably do something like :


Image img1 = ...
...
Image img4 = ...
Image animation[] = {img1, img2, img3, img4};
#define IMAGE_COUNT 4
uint32_t iteration(0)
[...]
// game loop
{
[...]
gb.display.drawImage(X,Y, animation[iteration%IMAGE_COUNT]);
++iteration;
[...]
}

And if for some reason you need to write an index within a string (which is NOT what you have to do in your case), up to index 9 you can do something like :

char * myString = "foobarX"; // character 'X' is at position 6, 0-based

int index = 4;

myString[6] = '0'+index; // myString holds "foobar4", as we have replaced the 6th character by character '0' offset by 4 units, which is character '4'