From f69cf6b8f713b00f2841edb1efcc5be9172814e0 Mon Sep 17 00:00:00 2001 From: Yves Rizoud Date: Tue, 17 Mar 2009 19:09:43 +0000 Subject: [PATCH] More manual translations, to make the bulk process easier git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@683 416bcca6-2ee7-4201-b75f-2eb2f807beb1 --- aide.c | 22 ++-- boutons.c | 104 +++++++-------- boutons.h | 2 +- brush.c | 12 +- brush.h | 4 +- divers.c | 28 ++-- divers.h | 9 +- erreurs.h | 2 +- files.c | 44 +++---- global.h | 45 +------ graph.c | 154 +++++++++++----------- graph.h | 4 +- init.c | 136 +++++++++---------- io.c | 28 ++-- io.h | 10 +- loadsave.c | 270 +++++++++++++++++++------------------- main.c | 10 +- moteur.c | 144 ++++++++++---------- moteur.h | 14 +- op_c.c | 108 +++++++-------- op_c.h | 28 ++-- operatio.c | 94 ++++++------- palette.c | 24 ++-- palette.h | 2 +- pxdouble.c | 82 ++++++------ pxdouble.h | 2 +- pxsimple.c | 82 ++++++------ pxsimple.h | 2 +- pxtall.c | 76 +++++------ pxtall.h | 2 +- pxwide.c | 92 ++++++------- pxwide.h | 2 +- readini.c | 14 +- readini.h | 2 +- readline.c | 6 +- saveini.c | 2 +- saveini.h | 2 +- shade.c | 58 ++++---- struct.h | 45 ++++++- texte.c | 14 +- texte.h | 2 +- translat/translations.xls | Bin 265216 -> 268288 bytes windows.c | 126 +++++++++--------- windows.h | 4 +- 44 files changed, 954 insertions(+), 959 deletions(-) diff --git a/aide.c b/aide.c index a92f48c2..81c3517f 100644 --- a/aide.c +++ b/aide.c @@ -243,7 +243,7 @@ void Afficher_aide(void) short Repeat_Menu_Facteur_Y; short Pos_Reel_X; short Pos_Reel_Y; - byte * Curseur; + byte * char_pixel; short Largeur; // Largeur physique d'une ligne de texte char TypeLigne; // N: Normale, T: Titre, S: Sous-titre // -: Ligne inférieur de sous-titre @@ -310,32 +310,32 @@ void Afficher_aide(void) if (TypeLigne=='T') { if (Ligne[Indice_de_caractere/2]>'_' || Ligne[Indice_de_caractere/2]<' ') - Curseur=&(Fonte_help_norm['!'][0][0]); // Caractère pas géré + char_pixel=&(Fonte_help_norm['!'][0][0]); // Caractère pas géré else if (Indice_de_caractere & 1) - Curseur=&(Fonte_help_t2[(unsigned char)(Ligne[Indice_de_caractere/2])-' '][0][0]); + char_pixel=&(Fonte_help_t2[(unsigned char)(Ligne[Indice_de_caractere/2])-' '][0][0]); else - Curseur=&(Fonte_help_t1[(unsigned char)(Ligne[Indice_de_caractere/2])-' '][0][0]); + char_pixel=&(Fonte_help_t1[(unsigned char)(Ligne[Indice_de_caractere/2])-' '][0][0]); } else if (TypeLigne=='-') { if (Ligne[Indice_de_caractere/2]>'_' || Ligne[Indice_de_caractere/2]<' ') - Curseur=&(Fonte_help_norm['!'][0][0]); // Caractère pas géré + char_pixel=&(Fonte_help_norm['!'][0][0]); // Caractère pas géré else if (Indice_de_caractere & 1) - Curseur=&(Fonte_help_t4[(unsigned char)(Ligne[Indice_de_caractere/2])-' '][0][0]); + char_pixel=&(Fonte_help_t4[(unsigned char)(Ligne[Indice_de_caractere/2])-' '][0][0]); else - Curseur=&(Fonte_help_t3[(unsigned char)(Ligne[Indice_de_caractere/2])-' '][0][0]); + char_pixel=&(Fonte_help_t3[(unsigned char)(Ligne[Indice_de_caractere/2])-' '][0][0]); } else if (TypeLigne=='S') - Curseur=&(Fonte_help_bold[(unsigned char)(Ligne[Indice_de_caractere])][0][0]); + char_pixel=&(Fonte_help_bold[(unsigned char)(Ligne[Indice_de_caractere])][0][0]); else if (TypeLigne=='N' || TypeLigne=='K') - Curseur=&(Fonte_help_norm[(unsigned char)(Ligne[Indice_de_caractere])][0][0]); + char_pixel=&(Fonte_help_norm[(unsigned char)(Ligne[Indice_de_caractere])][0][0]); else - Curseur=&(Fonte_help_norm['!'][0][0]); // Un garde-fou en cas de probleme + char_pixel=&(Fonte_help_norm['!'][0][0]); // Un garde-fou en cas de probleme for (X=0;X<6;X++) for (Repeat_Menu_Facteur_X=0;Repeat_Menu_Facteur_X=Position_lien diff --git a/boutons.c b/boutons.c index 6856584b..892f51e7 100644 --- a/boutons.c +++ b/boutons.c @@ -530,7 +530,7 @@ void Bouton_Clear_colore(void) } //---------- Menu dans lequel on tagge des couleurs (genre Stencil) ---------- -void Menu_Tag_couleurs(char * En_tete, byte * Table, byte * Mode, byte Cancel, const char *Section_aide) +void Menu_Tag_couleurs(char * En_tete, byte * Table, byte * Mode, byte can_cancel, const char *Section_aide) { short Bouton_clicke; byte Backup_table[256]; @@ -540,7 +540,7 @@ void Menu_Tag_couleurs(char * En_tete, byte * Table, byte * Mode, byte Cancel, c byte Ancien_Mouse_K; byte Couleur_taggee; byte Couleur; - byte Click; + byte click; Ouvrir_fenetre(176,150,En_tete); @@ -548,7 +548,7 @@ void Menu_Tag_couleurs(char * En_tete, byte * Table, byte * Mode, byte Cancel, c Fenetre_Definir_bouton_palette(6,38); // 1 Fenetre_Definir_bouton_normal( 7, 19,78,14,"Clear" ,1,1,SDLK_c); // 2 Fenetre_Definir_bouton_normal(91, 19,78,14,"Invert",1,1,SDLK_i); // 3 - if (Cancel) + if (can_cancel) { Fenetre_Definir_bouton_normal(91,129,78,14,"OK" ,0,1,SDLK_RETURN); // 4 Fenetre_Definir_bouton_normal( 7,129,78,14,"Cancel",0,1,TOUCHE_ESC); // 5 @@ -610,13 +610,13 @@ void Menu_Tag_couleurs(char * En_tete, byte * Table, byte * Mode, byte Cancel, c { case SDLK_BACKQUOTE : // Récupération d'une couleur derrière le menu case SDLK_COMMA : - Recuperer_couleur_derriere_fenetre(&Couleur,&Click); - if (Click) + Recuperer_couleur_derriere_fenetre(&Couleur,&click); + if (click) { Effacer_curseur(); Couleur_taggee=Couleur; - Table[Couleur_taggee]=(Click==A_GAUCHE); - Stencil_Tagger_couleur(Couleur_taggee,(Click==A_GAUCHE)?CM_Noir:CM_Clair); + Table[Couleur_taggee]=(click==A_GAUCHE); + Stencil_Tagger_couleur(Couleur_taggee,(click==A_GAUCHE)?CM_Noir:CM_Clair); Stencil_Actualiser_couleur(Couleur_taggee); Afficher_curseur(); Attendre_fin_de_click(); @@ -687,7 +687,7 @@ void Bouton_Mask_Menu(void) //------------------------------- Paramètres --------------------------------- -void Settings_Afficher_config(struct S_Config * Conf) +void Settings_Afficher_config(T_Config * Conf) #define YES "YES" #define NO " NO" { @@ -749,7 +749,7 @@ void Settings_Afficher_config(struct S_Config * Conf) Afficher_curseur(); } -void Settings_Sauver_config(struct S_Config * Conf) +void Settings_Sauver_config(T_Config * Conf) { if (Sauver_CFG()) Erreur(0); @@ -758,7 +758,7 @@ void Settings_Sauver_config(struct S_Config * Conf) Erreur(0); } -void Settings_Charger_config(struct S_Config * Conf) +void Settings_Charger_config(T_Config * Conf) { if (Charger_CFG(0)) Erreur(0); @@ -772,7 +772,7 @@ void Bouton_Settings(void) int Sensibilite_X; int Sensibilite_Y; short Bouton_clicke; - struct S_Config Config_choisie; + T_Config Config_choisie; char Chaine[3]; byte On_a_recharge_la_config=0; @@ -1888,7 +1888,7 @@ void Bouton_Degrades(void) byte Premiere_couleur; byte Derniere_couleur; byte Couleur; - byte Click; + byte click; Traiter_pixel_de_degrade=Pixel; @@ -2046,8 +2046,8 @@ void Bouton_Degrades(void) { case SDLK_BACKQUOTE : // Récupération d'une couleur derrière le menu case SDLK_COMMA : - Recuperer_couleur_derriere_fenetre(&Couleur,&Click); - if (Click) + Recuperer_couleur_derriere_fenetre(&Couleur,&click); + if (click) { Effacer_curseur(); Couleur_temporaire=Couleur; @@ -2392,7 +2392,7 @@ char * Nom_correspondant_le_mieux_a(char * Nom) char * Pointeur_Meilleur_nom; Element_de_liste_de_fileselect * Element_courant; byte Lettres_identiques=0; - byte Compteur; + byte counter; strcpy(FFF_Meilleur_nom,Principal_Nom_fichier); Pointeur_Meilleur_nom=NULL; @@ -2403,10 +2403,10 @@ char * Nom_correspondant_le_mieux_a(char * Nom) || (Config.Find_file_fast==(Element_courant->Type+1)) ) { // On compare et si c'est mieux, on stocke dans Meilleur_nom - for (Compteur=0; Nom[Compteur]!='\0' && tolower(Element_courant->NomComplet[Compteur])==tolower(Nom[Compteur]); Compteur++); - if (Compteur>Lettres_identiques) + for (counter=0; Nom[counter]!='\0' && tolower(Element_courant->NomComplet[counter])==tolower(Nom[counter]); counter++); + if (counter>Lettres_identiques) { - Lettres_identiques=Compteur; + Lettres_identiques=counter; strcpy(FFF_Meilleur_nom,Element_courant->NomComplet); Pointeur_Meilleur_nom=Element_courant->NomComplet; } @@ -2864,12 +2864,12 @@ byte Bouton_Load_ou_Save(byte Load, byte Image) if (Config.Bookmark_directory[Bouton_clicke-10]) { // On enlève les "..." avant l'édition - char Bookmark_label[8+1]; - strcpy(Bookmark_label, Config.Bookmark_label[Bouton_clicke-10]); - if (Bookmark_label[7]==CARACTERE_SUSPENSION) - Bookmark_label[7]='\0'; - if (Readline_ex(Dropdown_bookmark[Bouton_clicke-10]->Pos_X+3+10,Dropdown_bookmark[Bouton_clicke-10]->Pos_Y+2,Bookmark_label,8,8,0)) - strcpy(Config.Bookmark_label[Bouton_clicke-10],Bookmark_label); + char bookmark_label[8+1]; + strcpy(bookmark_label, Config.Bookmark_label[Bouton_clicke-10]); + if (bookmark_label[7]==CARACTERE_SUSPENSION) + bookmark_label[7]='\0'; + if (Readline_ex(Dropdown_bookmark[Bouton_clicke-10]->Pos_X+3+10,Dropdown_bookmark[Bouton_clicke-10]->Pos_Y+2,bookmark_label,8,8,0)) + strcpy(Config.Bookmark_label[Bouton_clicke-10],bookmark_label); Afficher_bookmark(Dropdown_bookmark[Bouton_clicke-10],Bouton_clicke-10); Afficher_curseur(); } @@ -3517,11 +3517,11 @@ void Bouton_Reload(void) void Nom_fichier_backup(char * Nom, char * Nom_backup) { - short Curseur; + short i; strcpy(Nom_backup,Nom); - for (Curseur=strlen(Nom)-strlen(Principal_Nom_fichier); Nom_backup[Curseur]!='.'; Curseur++); - Nom_backup[Curseur+1]='\0'; + for (i=strlen(Nom)-strlen(Principal_Nom_fichier); Nom_backup[i]!='.'; i++); + Nom_backup[i+1]='\0'; strcat(Nom_backup,"BAK"); } @@ -4362,7 +4362,7 @@ byte Smooth_Matrice_defaut[4][3][3]= void Bouton_Smooth_Menu(void) { short Bouton_clicke; - short X,Y,I,J; + short X,Y,i,j; byte Matrice_choisie[3][3]; T_Bouton_special * Matrice_Zone_saisie[3][3]; char Chaine[3]; @@ -4376,18 +4376,18 @@ void Bouton_Smooth_Menu(void) for (X=11,Y=0; Y<4; X+=31,Y++) { Fenetre_Definir_bouton_normal(X,22,27,27,"",0,1,SDLK_LAST); // 3,4,5,6 - for (J=0; J<3; J++) - for (I=0; I<3; I++) - Print_char_dans_fenetre(X+2+(I<<3),24+(J<<3),'0'+Smooth_Matrice_defaut[Y][I][J],CM_Noir,CM_Clair); + for (j=0; j<3; j++) + for (i=0; i<3; i++) + Print_char_dans_fenetre(X+2+(i<<3),24+(j<<3),'0'+Smooth_Matrice_defaut[Y][i][j],CM_Noir,CM_Clair); } Fenetre_Afficher_cadre(6,58, 69,45); - for (J=0; J<3; J++) - for (I=0; I<3; I++) + for (j=0; j<3; j++) + for (i=0; i<3; i++) { - Matrice_Zone_saisie[I][J]=Fenetre_Definir_bouton_saisie(10+(I*21),62+(J*13),2); // 7..15 - Num2str(Matrice_choisie[I][J]=Smooth_Matrice[I][J],Chaine,2); - Fenetre_Contenu_bouton_saisie(Matrice_Zone_saisie[I][J],Chaine); + Matrice_Zone_saisie[i][j]=Fenetre_Definir_bouton_saisie(10+(i*21),62+(j*13),2); // 7..15 + Num2str(Matrice_choisie[i][j]=Smooth_Matrice[i][j],Chaine,2); + Fenetre_Contenu_bouton_saisie(Matrice_Zone_saisie[i][j],Chaine); } Display_Window(142,109); @@ -4403,17 +4403,17 @@ void Bouton_Smooth_Menu(void) { memcpy(Matrice_choisie,Smooth_Matrice_defaut[Bouton_clicke-3],sizeof(Matrice_choisie)); Effacer_curseur(); - for (J=0; J<3; J++) - for (I=0; I<3; I++) + for (j=0; j<3; j++) + for (i=0; i<3; i++) { - Num2str(Matrice_choisie[I][J],Chaine,2); - Fenetre_Contenu_bouton_saisie(Matrice_Zone_saisie[I][J],Chaine); + Num2str(Matrice_choisie[i][j],Chaine,2); + Fenetre_Contenu_bouton_saisie(Matrice_Zone_saisie[i][j],Chaine); } Afficher_curseur(); } else { - I=Bouton_clicke-7; X=I%3; Y=I/3; + i=Bouton_clicke-7; X=i%3; Y=i/3; Num2str(Matrice_choisie[X][Y],Chaine,2); Readline(Matrice_Zone_saisie[X][Y]->Pos_X+2, Matrice_Zone_saisie[X][Y]->Pos_Y+2, @@ -4776,7 +4776,7 @@ void Bouton_Spray_Menu(void) word Ancien_Mouse_Y; byte Ancien_Mouse_K; byte Couleur; - byte Click; + byte click; memcpy(Old_Spray_Multi_flow,Spray_Multi_flow,256); @@ -5030,15 +5030,15 @@ void Bouton_Spray_Menu(void) { case SDLK_BACKQUOTE : // Récupération d'une couleur derrière le menu case SDLK_COMMA : - Recuperer_couleur_derriere_fenetre(&Couleur,&Click); - if (Click) + Recuperer_couleur_derriere_fenetre(&Couleur,&click); + if (click) { Effacer_curseur(); Stencil_Tagger_couleur(Couleur_selectionnee,(Spray_Multi_flow[Couleur_selectionnee])?CM_Noir:CM_Clair); Stencil_Actualiser_couleur(Couleur_selectionnee); // Mettre la couleur sélectionnée à jour suivant le click Couleur_selectionnee=Couleur; - if (Click==2) + if (click==2) Spray_Multi_flow[Couleur_selectionnee]=0; else if (Spray_Multi_flow[Couleur_selectionnee]==0) @@ -5669,7 +5669,7 @@ void Bouton_Effets(void) Afficher_sprite_effet(3,154,96); Afficher_etat_effets(); - Print_dans_fenetre(12,117,"Click: Left:Switch / Right:Edit",CM_Fonce,CM_Clair); + Print_dans_fenetre(12,117,"click: Left:Switch / Right:Edit",CM_Fonce,CM_Clair); Display_Window(270,152); Afficher_curseur(); @@ -5934,7 +5934,7 @@ void Bouton_Texte() { static char Chaine[256]=""; static int Taille_police=32; - static int AntiAlias=1; + static int antialias=1; static short Debut_liste=0; // Indice de le premiere fonte dans le selector static short Position_curseur=0; // Indice de la ligne active dans le selector static short Style_Bold=0; @@ -5964,7 +5964,7 @@ void Bouton_Texte() Fenetre_Afficher_cadre_creux(182,34,100,68); Print_dans_fenetre(199,31,"TrueType", CM_Fonce, CM_Clair); // AA - Fenetre_Definir_bouton_normal(188,58,13,11,AntiAlias?"X":" ",0,1,SDLK_a); // 2 + Fenetre_Definir_bouton_normal(188,58,13,11,antialias?"X":" ",0,1,SDLK_a); // 2 Print_dans_fenetre(206,60,"AntiAlias", CM_Fonce, CM_Clair); // Bold Fenetre_Definir_bouton_normal(188,72,13,11,Style_Bold?"X":" ",0,1,SDLK_b); // 3 @@ -6023,7 +6023,7 @@ void Bouton_Texte() Bouton_preview->Largeur*Menu_Facteur_X, Bouton_preview->Hauteur*Menu_Facteur_Y, CM_Clair); - Nouvelle_Brosse = Rendu_Texte(Chaine_preview, Position_curseur+Debut_liste, Taille_police, AntiAlias, Style_Bold, Style_Italic, &Nouvelle_Largeur, &Nouvelle_Hauteur); + Nouvelle_Brosse = Rendu_Texte(Chaine_preview, Position_curseur+Debut_liste, Taille_police, antialias, Style_Bold, Style_Italic, &Nouvelle_Largeur, &Nouvelle_Hauteur); if (Nouvelle_Brosse) { Affiche_brosse( @@ -6203,9 +6203,9 @@ void Bouton_Texte() break; case 2: // AA - AntiAlias = (AntiAlias==0); + antialias = (antialias==0); Effacer_curseur(); - Print_dans_fenetre(191,60,AntiAlias?"X":" ", CM_Noir, CM_Clair); + Print_dans_fenetre(191,60,antialias?"X":" ", CM_Noir, CM_Clair); A_previsionner=1; break; @@ -6308,7 +6308,7 @@ void Bouton_Texte() // On passe en brosse: Afficher_curseur(); - if (AntiAlias || !TrueType_fonte(Position_curseur+Debut_liste)) + if (antialias || !TrueType_fonte(Position_curseur+Debut_liste)) Changer_la_forme_du_pinceau(FORME_PINCEAU_BROSSE_COULEUR); else Changer_la_forme_du_pinceau(FORME_PINCEAU_BROSSE_MONOCHROME); diff --git a/boutons.h b/boutons.h index c93d7f12..9865e3e5 100644 --- a/boutons.h +++ b/boutons.h @@ -622,7 +622,7 @@ void Save_picture(byte Image); /*! Generic color tagging menu, for various effects. */ -void Menu_Tag_couleurs(char * En_tete, byte * Table, byte * Mode, byte Cancel, const char *Section_aide); +void Menu_Tag_couleurs(char * En_tete, byte * Table, byte * Mode, byte can_cancel, const char *Section_aide); /*! diff --git a/brush.c b/brush.c index d52040a5..c6715758 100644 --- a/brush.c +++ b/brush.c @@ -1566,7 +1566,7 @@ void Calculer_quad_texture(int X1,int Y1,int Xt1,int Yt1, -void Tourner_brosse(float Angle) +void Tourner_brosse(float angle) { byte * New_Brosse; int New_Brosse_Largeur; // Largeur de la nouvelle brosse @@ -1575,8 +1575,8 @@ void Tourner_brosse(float Angle) short X1,Y1,X2,Y2,X3,Y3,X4,Y4; int Debut_X,Fin_X,Debut_Y,Fin_Y; int Xmin,Xmax,Ymin,Ymax; - float cosA=cos(Angle); - float sinA=sin(Angle); + float cosA=cos(angle); + float sinA=sin(angle); // Calcul des coordonnées des 4 coins: // 1 2 @@ -1725,12 +1725,12 @@ void Dessiner_quad_texture_preview(int X1,int Y1,int Xt1,int Yt1, } -void Tourner_brosse_preview(float Angle) +void Tourner_brosse_preview(float angle) { short X1,Y1,X2,Y2,X3,Y3,X4,Y4; int Debut_X,Fin_X,Debut_Y,Fin_Y; - float cosA=cos(Angle); - float sinA=sin(Angle); + float cosA=cos(angle); + float sinA=sin(angle); // Calcul des coordonnées des 4 coins: // 1 2 diff --git a/brush.h b/brush.h index 0f02b187..6a74b0d2 100644 --- a/brush.h +++ b/brush.h @@ -51,13 +51,13 @@ void Etirer_brosse_preview(short X1, short Y1, short X2, short Y2); /*! Rotates the brush to the right from the given angle. */ -void Tourner_brosse(float Angle); +void Tourner_brosse(float angle); /*! Stretch the brush to fit the given rectangle. Uses fast approximation for the preview while changing the angle. */ -void Tourner_brosse_preview(float Angle); +void Tourner_brosse_preview(float angle); /*! Remap the brush palette to the nearest color in the picture one. diff --git a/divers.c b/divers.c index 267815c7..c1d4cd74 100644 --- a/divers.c +++ b/divers.c @@ -343,7 +343,7 @@ void Set_mouse_position(void) void Remplacer_toutes_les_couleurs_dans_limites(byte * Table_de_remplacement) { int Ligne; - int Compteur; + int counter; byte* Adresse; byte Ancien; @@ -352,9 +352,9 @@ void Remplacer_toutes_les_couleurs_dans_limites(byte * Table_de_remplacement) for(Ligne = Limite_Haut;Ligne <= Limite_Bas; Ligne++) { // Pour chaque pixel sur la ligne : - for (Compteur = Limite_Gauche;Compteur <= Limite_Droite;Compteur ++) + for (counter = Limite_Gauche;counter <= Limite_Droite;counter ++) { - Adresse = Principal_Ecran+Ligne*Principal_Largeur_image+Compteur; + Adresse = Principal_Ecran+Ligne*Principal_Largeur_image+counter; Ancien=*Adresse; *Adresse = Table_de_remplacement[Ancien]; } @@ -599,14 +599,14 @@ void Zoomer_une_ligne(byte* Ligne_originale, byte* Ligne_zoomee, word Facteur, word Largeur ) { - byte Color; + byte color; word X; // Pour chaque pixel for(X=0;X=0;Indice--) { - Chaine[Indice]=(Nombre%10)+'0'; - Nombre/=10; - if (Nombre==0) + Chaine[Indice]=(number%10)+'0'; + number/=10; + if (number==0) for (Indice--;Indice>=0;Indice--) Chaine[Indice]=' '; } @@ -727,15 +727,15 @@ short Round_div_max(short Numerateur,short Diviseur) } // Retourne le minimum entre deux nombres -int Min(int A,int B) +int Min(int a,int b) { - return (AB)?A:B; + return (a>b)?a:b; } diff --git a/divers.h b/divers.h index 1e6b61bb..1d2e4697 100644 --- a/divers.h +++ b/divers.h @@ -70,9 +70,6 @@ byte Pixel_dans_cercle(void); // Cercle_Curseur_Y<0 = en haut) du centre se trouve dans le cercle en // cours. -byte Bit(byte Octet, byte Rang); -// Extrait un bit d'un certain rang à partir d'un octet. - // Gestion du chrono dans les fileselects void Initialiser_chrono(dword Delai); void Tester_chrono(void); @@ -103,15 +100,15 @@ byte Nouvelle_preview; // Bool unsigned long Memoire_libre(void); -void Num2str(dword Nombre,char * Chaine,byte Taille); +void Num2str(dword number,char * Chaine,byte Taille); int Str2num(char * Chaine); short Round(float Valeur); short Round_max(short Numerateur,short Diviseur); short Round_div_max(short Numerateur,short Diviseur); -int Min(int A,int B); -int Max(int A,int B); +int Min(int a,int b); +int Max(int a,int b); char* Libelle_mode(int Mode); int Conversion_argument_mode(const char *Argument); diff --git a/erreurs.h b/erreurs.h index 9ceedb80..647a7ba8 100644 --- a/erreurs.h +++ b/erreurs.h @@ -27,6 +27,6 @@ #define UNTESTED printf("%s %d %s à tester !\n",__FILE__,__LINE__,__func__); -void Erreur_fonction(int, const char *, int, const char *); +void Erreur_fonction(int error_code, const char *Nom_fichier, int Numero_ligne, const char *Nom_fonction); #define Erreur(n) Erreur_fonction(n, __FILE__,__LINE__,__func__) diff --git a/files.c b/files.c index 78339250..360ddbe8 100644 --- a/files.c +++ b/files.c @@ -102,7 +102,7 @@ void Detruire_liste_du_fileselect(void) char * Nom_formate(char * Nom, int Type) { static char Resultat[13]; - int Curseur; + int c; int Autre_curseur; int Pos_DernierPoint; @@ -114,34 +114,34 @@ char * Nom_formate(char * Nom, int Type) { // Fichiers ".quelquechose" ou lecteurs: Calé à gauche sur 12 caractères maximum. strcpy(Resultat," "); - for (Curseur=0;Nom[Curseur]!='\0' && Curseur < 12;Curseur++) - Resultat[Curseur]=Nom[Curseur]; + for (c=0;Nom[c]!='\0' && c < 12;c++) + Resultat[c]=Nom[c]; // Un caractère spécial pour indiquer que l'affichage est tronqué - if (Curseur >= 12) + if (c >= 12) Resultat[11]=CARACTERE_SUSPENSION; } else { strcpy(Resultat," . "); // On commence par recopier la partie précédent le point: - for (Curseur=0;( (Nom[Curseur]!='.') && (Nom[Curseur]!='\0') );Curseur++) + for (c=0;( (Nom[c]!='.') && (Nom[c]!='\0') );c++) { - if (Curseur < 8) - Resultat[Curseur]=Nom[Curseur]; + if (c < 8) + Resultat[c]=Nom[c]; } // Un caractère spécial pour indiquer que l'affichage est tronqué - if (Curseur > 8) + if (c > 8) Resultat[7]=CARACTERE_SUSPENSION; // On recherche le dernier point dans le reste du nom - for (Pos_DernierPoint = Curseur; Nom[Curseur]!='\0'; Curseur++) - if (Nom[Curseur]=='.') - Pos_DernierPoint = Curseur; + for (Pos_DernierPoint = c; Nom[c]!='\0'; c++) + if (Nom[c]=='.') + Pos_DernierPoint = c; // Ensuite on recopie la partie qui suit le point (si nécessaire): if (Nom[Pos_DernierPoint]) { - for (Curseur = Pos_DernierPoint+1,Autre_curseur=9;Nom[Curseur]!='\0' && Autre_curseur < 12;Curseur++,Autre_curseur++) - Resultat[Autre_curseur]=Nom[Curseur]; + for (c = Pos_DernierPoint+1,Autre_curseur=9;Nom[c]!='\0' && Autre_curseur < 12;c++,Autre_curseur++) + Resultat[Autre_curseur]=Nom[c]; } } return Resultat; @@ -176,28 +176,28 @@ void Ajouter_element_a_la_liste(char * Nom, int Type) int VerifieExtension(const char *NomFichier, char * Filtre) { int Pos_DernierPoint = -1; - int Curseur = 0; + int c = 0; if (Filtre[0] == '*') return 1; // On recherche la position du dernier . dans le nom - for (Curseur = 0; NomFichier[Curseur]!='\0'; Curseur++) - if (NomFichier[Curseur]=='.') - Pos_DernierPoint = Curseur; + for (c = 0; NomFichier[c]!='\0'; c++) + if (NomFichier[c]=='.') + Pos_DernierPoint = c; // Fichier sans extension (ca arrive) if (Pos_DernierPoint == -1) return (Filtre[0] == '\0'); // Vérification caractère par caractère, case-insensitive. - Curseur = 0; + c = 0; do { - if (Filtre[Curseur] != '?' && - tolower(Filtre[Curseur]) != tolower(NomFichier[Pos_DernierPoint + 1 + Curseur])) + if (Filtre[c] != '?' && + tolower(Filtre[c]) != tolower(NomFichier[Pos_DernierPoint + 1 + c])) return 0; - Curseur++; - } while (Filtre[Curseur++] != '\0'); + c++; + } while (Filtre[c++] != '\0'); return 1; } diff --git a/global.h b/global.h index 528b1029..2862801f 100644 --- a/global.h +++ b/global.h @@ -42,50 +42,7 @@ #include #include "struct.h" -GFX2_GLOBAL struct S_Config -{ - byte Fonte; - int Lire_les_fichiers_caches; - int Lire_les_repertoires_caches; -// int Lire_les_repertoires_systemes; - byte Afficher_limites_image; - byte Curseur; - byte Maximize_preview; - byte Auto_set_res; - byte Coords_rel; - byte Backup; - byte Adjust_brush_pick; - byte Auto_save; - byte Nb_pages_Undo; - byte Indice_Sensibilite_souris_X; - byte Indice_Sensibilite_souris_Y; - byte Mouse_Facteur_de_correction_X; - byte Mouse_Facteur_de_correction_Y; - byte Mouse_Merge_movement; - byte Valeur_tempo_jauge_gauche; - byte Valeur_tempo_jauge_droite; - long Chrono_delay; - Composantes Coul_menu_pref[4]; - int Nb_max_de_vertex_par_polygon; - byte Clear_palette; - byte Set_resolution_according_to; - byte Ratio; - byte Fast_zoom; - byte Find_file_fast; - byte Couleurs_separees; - word Palette_Cells_X; - word Palette_Cells_Y; - byte FX_Feedback; - byte Safety_colors; - byte Opening_message; - byte Clear_with_stencil; - byte Auto_discontinuous; - byte Taille_ecran_dans_GIF; - byte Auto_nb_used; - byte Resolution_par_defaut; - char *Bookmark_directory[NB_BOOKMARKS]; // independant malloc of adaptive size - char Bookmark_label[NB_BOOKMARKS][8+1]; -} Config; +GFX2_GLOBAL T_Config Config; // Tableau des touches spéciales GFX2_GLOBAL word Config_Touche[NB_TOUCHES_SPECIALES][2]; diff --git a/graph.c b/graph.c index a9eb4652..7d1fa61e 100644 --- a/graph.c +++ b/graph.c @@ -1225,15 +1225,13 @@ void Rectifier_coordonnees_a_45_degres(short AX, short AY, short* BX, short* BY) else if ( tan > 0.4142 && tan < 2.4142) { // Cas 2 : dy=dx - int nBY = AY - dx; - *BY = (*BY + nBY)/2; + *BY = (*BY + AY - dx)/2; *BX = AX + AY - *BY; } else if (tan < -0.4142 && tan >= -2.4142) { // Cas 8 : dy = -dx - int nBY = AY + dx; - *BY = (*BY + nBY)/2; + *BY = (*BY + AY + dx)/2; *BX = AX - AY + *BY; } else @@ -1321,27 +1319,27 @@ void Tracer_ligne_General(short Debut_X,short Debut_Y,short Fin_X,short Fin_Y, b void Tracer_ligne_Definitif(short Debut_X,short Debut_Y,short Fin_X,short Fin_Y, byte Couleur) { - int L = Fin_X-Debut_X, H = Fin_Y - Debut_Y; + int w = Fin_X-Debut_X, h = Fin_Y - Debut_Y; Pixel_figure=Pixel_figure_Definitif; Tracer_ligne_General(Debut_X,Debut_Y,Fin_X,Fin_Y,Couleur); - Mettre_Ecran_A_Jour((Debut_XLimite_Droite) Fin_X=Limite_Droite; for (; Pos_X<=Fin_X; Pos_X++) - Pixel_figure(Pos_X,c,Color); + Pixel_figure(Pos_X,c,color); edge = edge->next->next; } } @@ -2216,12 +2214,12 @@ void Polyfill_General(int Vertices, short * Points, int Color) } -void Polyfill(int Vertices, short * Points, int Color) +void Polyfill(int Vertices, short * Points, int color) { int Indice; byte *FX_Feedback_Ecran_avant_remplissage; - Pixel_clippe(Points[0],Points[1],Color); + Pixel_clippe(Points[0],Points[1],color); if (Vertices==1) { Mettre_Ecran_A_Jour(Points[0],Points[1],1,1); @@ -2234,7 +2232,7 @@ void Polyfill(int Vertices, short * Points, int Color) FX_Feedback_Ecran=Ecran_backup; Pixel_figure=Pixel_clippe; - Polyfill_General(Vertices,Points,Color); + Polyfill_General(Vertices,Points,color); // Remarque: pour dessiner la bordure avec la brosse en cours au lieu // d'un pixel de couleur premier-plan, il suffit de mettre ici: @@ -2242,8 +2240,8 @@ void Polyfill(int Vertices, short * Points, int Color) // Dessin du contour for (Indice=0; Indice=Debut) && (C<=Fin) && (Debut!=Fin)) + if ((color>=Debut) && (color<=Fin) && (Debut!=Fin)) { Largeur=1+Fin-Debut; if ( ((Shade_Table==Shade_Table_gauche) && Sens) || ((Shade_Table==Shade_Table_droite) && (!Sens)) ) - C-=Quick_shade_Step%Largeur; + color-=Quick_shade_Step%Largeur; else - C+=Quick_shade_Step%Largeur; + color+=Quick_shade_Step%Largeur; - if (CFin) + if (color>Fin) switch (Quick_shade_Loop) { case MODE_SHADE_NORMAL : return Fin; - case MODE_SHADE_BOUCLE : return (C-Largeur); + case MODE_SHADE_BOUCLE : return (color-Largeur); default : return Couleur; } } - return C; + return color; } // -- Effet de Tiling -- @@ -2440,95 +2438,95 @@ byte Effet_Tiling(word X,word Y,__attribute__((unused)) byte Couleur) byte Effet_Smooth(word X,word Y,__attribute__((unused)) byte Couleur) { - int R,V,B; - byte C; + int r,g,b; + byte color; int Poids,Poids_total; byte X2=((X+1)h); + } while (Yh); printf("Error in skin file: Was looking down from %d,%d for a '%s', and reached the end of the image\n", *Debut_X, *Debut_Y, Section); Erreur(ERREUR_GUI_CORROMPU); } -void Chercher_droite(SDL_Surface *GUI, int *Debut_X, int Debut_Y, byte Couleur_neutre, char * Section) +void Chercher_droite(SDL_Surface *gui, int *Debut_X, int Debut_Y, byte Couleur_neutre, char * Section) { byte Couleur; int X; @@ -106,21 +106,21 @@ void Chercher_droite(SDL_Surface *GUI, int *Debut_X, int Debut_Y, byte Couleur_n do { - Couleur=Sdl_Get_pixel_8(GUI,X,Debut_Y); + Couleur=Sdl_Get_pixel_8(gui,X,Debut_Y); if (Couleur!=Couleur_neutre) { *Debut_X=X; return; } X++; - } while (Xw); + } while (Xw); printf("Error in skin file: Was looking right from %d,%d for a '%s', and reached the edege of the image\n", *Debut_X, Debut_Y, Section); Erreur(ERREUR_GUI_CORROMPU); } -void Lire_bloc(SDL_Surface *GUI, int Debut_X, int Debut_Y, void *Dest, int Largeur, int Hauteur, char * Section, int Type) +void Lire_bloc(SDL_Surface *gui, int Debut_X, int Debut_Y, void *Dest, int Largeur, int Hauteur, char * Section, int Type) { // Type: 0 = normal GUI element, only 4 colors allowed // Type: 1 = mouse cursor, 4 colors allowed + transparent @@ -132,7 +132,7 @@ void Lire_bloc(SDL_Surface *GUI, int Debut_X, int Debut_Y, void *Dest, int Large byte Couleur; // Verification taille - if (Debut_Y+Hauteur>=GUI->h || Debut_X+Largeur>=GUI->w) + if (Debut_Y+Hauteur>=gui->h || Debut_X+Largeur>=gui->w) { printf("Error in skin file: Was looking at %d,%d for a %d*%d object (%s) but it doesn't fit the image.\n", Debut_X, Debut_Y, Hauteur, Largeur, Section); @@ -143,7 +143,7 @@ void Lire_bloc(SDL_Surface *GUI, int Debut_X, int Debut_Y, void *Dest, int Large { for (X=Debut_X; Xformat || GUI->format->BitsPerPixel != 8) + if (!gui->format || gui->format->BitsPerPixel != 8) { printf("Not a 8-bit image"); Erreur(ERREUR_GUI_CORROMPU); } - SDLPal=GUI->format->palette; + SDLPal=gui->format->palette; if (!SDLPal || SDLPal->ncolors!=256) { printf("Not a 256-color palette"); @@ -235,59 +235,59 @@ void Charger_DAT(void) } // Carré "noir" - CM_Noir = Sdl_Get_pixel_8(GUI,Curseur_X,Curseur_Y); + CM_Noir = Sdl_Get_pixel_8(gui,Curseur_X,Curseur_Y); do { - if (++Curseur_X>=GUI->w) + if (++Curseur_X>=gui->w) { printf("Error in GUI skin file: should start with 5 consecutive squares for black, dark, light, white, transparent, then a neutral color\n"); Erreur(ERREUR_GUI_CORROMPU); } - Couleur=Sdl_Get_pixel_8(GUI,Curseur_X,Curseur_Y); + Couleur=Sdl_Get_pixel_8(gui,Curseur_X,Curseur_Y); } while(Couleur==CM_Noir); // Carré "foncé" CM_Fonce=Couleur; do { - if (++Curseur_X>=GUI->w) + if (++Curseur_X>=gui->w) { printf("Error in GUI skin file: should start with 5 consecutive squares for black, dark, light, white, transparent, then a neutral color\n"); Erreur(ERREUR_GUI_CORROMPU); } - Couleur=Sdl_Get_pixel_8(GUI,Curseur_X,Curseur_Y); + Couleur=Sdl_Get_pixel_8(gui,Curseur_X,Curseur_Y); } while(Couleur==CM_Fonce); // Carré "clair" CM_Clair=Couleur; do { - if (++Curseur_X>GUI->w) + if (++Curseur_X>gui->w) { printf("Error in GUI skin file: should start with 5 consecutive squares for black, dark, light, white, transparent, then a neutral color\n"); Erreur(ERREUR_GUI_CORROMPU); } - Couleur=Sdl_Get_pixel_8(GUI,Curseur_X,Curseur_Y); + Couleur=Sdl_Get_pixel_8(gui,Curseur_X,Curseur_Y); } while(Couleur==CM_Clair); // Carré "blanc" CM_Blanc=Couleur; do { - if (++Curseur_X>=GUI->w) + if (++Curseur_X>=gui->w) { printf("Error in GUI skin file: should start with 5 consecutive squares for black, dark, light, white, transparent, then a neutral color\n"); Erreur(ERREUR_GUI_CORROMPU); } - Couleur=Sdl_Get_pixel_8(GUI,Curseur_X,Curseur_Y); + Couleur=Sdl_Get_pixel_8(gui,Curseur_X,Curseur_Y); } while(Couleur==CM_Blanc); // Carré "transparent" CM_Trans=Couleur; do { - if (++Curseur_X>=GUI->w) + if (++Curseur_X>=gui->w) { printf("Error in GUI skin file: should start with 5 consecutive squares for black, dark, light, white, transparent, then a neutral color\n"); Erreur(ERREUR_GUI_CORROMPU); } - Couleur=Sdl_Get_pixel_8(GUI,Curseur_X,Curseur_Y); + Couleur=Sdl_Get_pixel_8(gui,Curseur_X,Curseur_Y); } while(Couleur==CM_Trans); // Reste : couleur neutre CM_Neutre=Couleur; @@ -295,10 +295,10 @@ void Charger_DAT(void) Curseur_X=0; Curseur_Y=1; - while ((Couleur=Sdl_Get_pixel_8(GUI,Curseur_X,Curseur_Y))==CM_Noir) + while ((Couleur=Sdl_Get_pixel_8(gui,Curseur_X,Curseur_Y))==CM_Noir) { Curseur_Y++; - if (Curseur_Y>=GUI->h) + if (Curseur_Y>=gui->h) { printf("Error in GUI skin file: should start with 5 consecutive squares for black, dark, light, white, transparent, then a neutral color\n"); Erreur(ERREUR_GUI_CORROMPU); @@ -306,18 +306,18 @@ void Charger_DAT(void) } // Menu - Chercher_bas(GUI, &Curseur_X, &Curseur_Y, CM_Neutre, "menu"); - Lire_bloc(GUI, Curseur_X, Curseur_Y, BLOCK_MENU, LARGEUR_MENU, HAUTEUR_MENU,"menu",0); + Chercher_bas(gui, &Curseur_X, &Curseur_Y, CM_Neutre, "menu"); + Lire_bloc(gui, Curseur_X, Curseur_Y, BLOCK_MENU, LARGEUR_MENU, HAUTEUR_MENU,"menu",0); Curseur_Y+=HAUTEUR_MENU; // Effets for (i=0; i= MAX_MODES_VIDEO-1) { - DEBUG("Erreur! Tentative de créer un mode de trop! Limite:", MAX_MODES_VIDEO); + DEBUG("Error! Attempt to create too many videomodes. Maximum is:", MAX_MODES_VIDEO); return; } if (!Fullscreen) diff --git a/io.c b/io.c index 490b7023..9edb6838 100644 --- a/io.c +++ b/io.c @@ -65,9 +65,9 @@ int read_byte(FILE *Fichier, byte *Dest) } // Ecrit un octet // Renvoie -1 si OK, 0 en cas d'erreur -int write_byte(FILE *Fichier, byte Byte) +int write_byte(FILE *Fichier, byte b) { - return fwrite(&Byte, 1, 1, Fichier) == 1; + return fwrite(&b, 1, 1, Fichier) == 1; } // Lit des octets // Renvoie -1 si OK, 0 en cas d'erreur @@ -95,12 +95,12 @@ int read_word_le(FILE *Fichier, word *Dest) } // Ecrit un word (little-endian) // Renvoie -1 si OK, 0 en cas d'erreur -int write_word_le(FILE *Fichier, word Mot) +int write_word_le(FILE *Fichier, word w) { #if SDL_BYTEORDER != SDL_LIL_ENDIAN - Mot = SDL_Swap16(Mot); + w = SDL_Swap16(w); #endif - return fwrite(&Mot, 1, sizeof(word), Fichier) == sizeof(word); + return fwrite(&w, 1, sizeof(word), Fichier) == sizeof(word); } // Lit un word (big-endian) // Renvoie -1 si OK, 0 en cas d'erreur @@ -115,12 +115,12 @@ int read_word_be(FILE *Fichier, word *Dest) } // Ecrit un word (big-endian) // Renvoie -1 si OK, 0 en cas d'erreur -int write_word_be(FILE *Fichier, word Mot) +int write_word_be(FILE *Fichier, word w) { #if SDL_BYTEORDER != SDL_BIG_ENDIAN - Mot = SDL_Swap16(Mot); + w = SDL_Swap16(w); #endif - return fwrite(&Mot, 1, sizeof(word), Fichier) == sizeof(word); + return fwrite(&w, 1, sizeof(word), Fichier) == sizeof(word); } // Lit un dword (little-endian) // Renvoie -1 si OK, 0 en cas d'erreur @@ -135,12 +135,12 @@ int read_dword_le(FILE *Fichier, dword *Dest) } // Ecrit un dword (little-endian) // Renvoie -1 si OK, 0 en cas d'erreur -int write_dword_le(FILE *Fichier, dword Mot) +int write_dword_le(FILE *Fichier, dword dw) { #if SDL_BYTEORDER != SDL_LIL_ENDIAN - Mot = SDL_Swap32(Mot); + dw = SDL_Swap32(dw); #endif - return fwrite(&Mot, 1, sizeof(dword), Fichier) == sizeof(dword); + return fwrite(&dw, 1, sizeof(dword), Fichier) == sizeof(dword); } // Lit un dword (big-endian) @@ -156,12 +156,12 @@ int read_dword_be(FILE *Fichier, dword *Dest) } // Ecrit un dword (big-endian) // Renvoie -1 si OK, 0 en cas d'erreur -int write_dword_be(FILE *Fichier, dword Mot) +int write_dword_be(FILE *Fichier, dword dw) { #if SDL_BYTEORDER != SDL_BIG_ENDIAN - Mot = SDL_Swap32(Mot); + dw = SDL_Swap32(dw); #endif - return fwrite(&Mot, 1, sizeof(dword), Fichier) == sizeof(dword); + return fwrite(&dw, 1, sizeof(dword), Fichier) == sizeof(dword); } // Détermine la position du dernier '/' ou '\\' dans une chaine, diff --git a/io.h b/io.h index 8709ed45..3ad475da 100644 --- a/io.h +++ b/io.h @@ -23,20 +23,20 @@ word endian_magic16(word x); dword endian_magic32(dword x); int read_byte(FILE *Fichier, byte *Dest); -int write_byte(FILE *Fichier, byte Byte); +int write_byte(FILE *Fichier, byte b); int read_bytes(FILE *Fichier, void *Dest, size_t Taille); int write_bytes(FILE *Fichier, void *Dest, size_t Taille); int read_word_le(FILE *Fichier, word *Dest); -int write_word_le(FILE *Fichier, word Mot); +int write_word_le(FILE *Fichier, word w); int read_dword_le(FILE *Fichier, dword *Dest); -int write_dword_le(FILE *Fichier, dword Mot); +int write_dword_le(FILE *Fichier, dword dw); int read_word_be(FILE *Fichier, word *Dest); -int write_word_be(FILE *Fichier, word Mot); +int write_word_be(FILE *Fichier, word w); int read_dword_be(FILE *Fichier, dword *Dest); -int write_dword_be(FILE *Fichier, dword Mot); +int write_dword_be(FILE *Fichier, dword dw); void Extraire_nom_fichier(char *Destination, const char *Source); void Extraire_chemin(char *Destination, const char *Source); diff --git a/loadsave.c b/loadsave.c index 39121142..4416e4e3 100644 --- a/loadsave.c +++ b/loadsave.c @@ -243,7 +243,7 @@ fonction_afficheur_24b Pixel_Chargement_24b; // Chargement des pixels dans le buffer 24b -void Pixel_Chargement_dans_buffer_24b(short Pos_X,short Pos_Y,byte R,byte V,byte B) +void Pixel_Chargement_dans_buffer_24b(short Pos_X,short Pos_Y,byte r,byte g,byte b) { int index; @@ -251,23 +251,23 @@ void Pixel_Chargement_dans_buffer_24b(short Pos_X,short Pos_Y,byte R,byte V,byte if ((Pos_X> 5) << 5) | - ((V >> 5) << 2) | - ((B >> 6)); + Couleur=((r >> 5) << 5) | + ((g >> 5) << 2) | + ((b >> 6)); Pixel(Preview_Pos_X+(Pos_X/Preview_Facteur_X), Preview_Pos_Y+(Pos_Y/Preview_Facteur_Y), Couleur); @@ -1061,7 +1061,7 @@ void Load_PKM(void) T_Header_PKM Head; byte Couleur; byte Octet; - word Mot; + word len; word Indice; dword Compteur_de_pixels; dword Compteur_de_donnees_packees; @@ -1229,12 +1229,12 @@ void Load_PKM(void) else // ... nombre de pixels tenant sur un word { Lire_octet(Fichier, &Couleur); - read_word_be(Fichier, &Mot); - for (Indice=0; Indice=0)?Temp:0; } - if ((I-7)&2) + if ((i-7)&2) { - Temp=Principal_Palette[J].V-16; + Temp=Principal_Palette[j].V-16; Principal_Palette[Couleur].V=(Temp>=0)?Temp:0; } - if ((I-7)&4) + if ((i-7)&4) { - Temp=Principal_Palette[J].B-16; + Temp=Principal_Palette[j].B-16; Principal_Palette[Couleur].B=(Temp>=0)?Temp:0; } } } } // Ici, il reste les 16 dernières couleurs à modifier - for (I=240,J=0; J<16; I++,J++) + for (i=240,j=0; j<16; i++,j++) { - Temp=Principal_Palette[J].R+8; - Principal_Palette[I].R=(Temp<63)?Temp:63; - Temp=Principal_Palette[J].V+8; - Principal_Palette[I].V=(Temp<63)?Temp:63; - Temp=Principal_Palette[J].B+8; - Principal_Palette[I].B=(Temp<63)?Temp:63; + Temp=Principal_Palette[j].R+8; + Principal_Palette[i].R=(Temp<63)?Temp:63; + Temp=Principal_Palette[j].V+8; + Principal_Palette[i].V=(Temp<63)?Temp:63; + Temp=Principal_Palette[j].B+8; + Principal_Palette[i].B=(Temp<63)?Temp:63; } } else if (Image_HAM==8) { - for (I=1; I<=3; I++) + for (i=1; i<=3; i++) { // On recopie la palette de base - memcpy(Principal_Palette+(I<<6),Principal_Palette,192); + memcpy(Principal_Palette+(i<<6),Principal_Palette,192); // On modifie les teintes de cette palette - for (J=0; J<64; J++) + for (j=0; j<64; j++) { - Couleur=(I<<6)+J; - switch (I) + Couleur=(i<<6)+j; + switch (i) { case 1 : - Temp=Principal_Palette[J].R+16; + Temp=Principal_Palette[j].R+16; Principal_Palette[Couleur].R=(Temp<63)?Temp:63; break; case 2 : - Temp=Principal_Palette[J].V+16; + Temp=Principal_Palette[j].V+16; Principal_Palette[Couleur].V=(Temp<63)?Temp:63; break; default: - Temp=Principal_Palette[J].B+16; + Temp=Principal_Palette[j].B+16; Principal_Palette[Couleur].B=(Temp<63)?Temp:63; } } @@ -1613,12 +1613,12 @@ void Test_LBM(void) } else // Image 64 couleurs sauvée en 32. { - for (I=0; I<32; I++) + for (i=0; i<32; i++) { - J=I+32; - Principal_Palette[J].R=Principal_Palette[I].R>>1; - Principal_Palette[J].V=Principal_Palette[I].V>>1; - Principal_Palette[J].B=Principal_Palette[I].B>>1; + j=i+32; + Principal_Palette[j].R=Principal_Palette[i].R>>1; + Principal_Palette[j].V=Principal_Palette[i].V>>1; + Principal_Palette[j].B=Principal_Palette[i].B>>1; } } } @@ -1758,7 +1758,7 @@ void Load_LBM(void) dword Taille_image; short Pos_X; short Pos_Y; - short Compteur; + short counter; short Taille_ligne; // Taille d'une ligne en octets short Vraie_taille_ligne; // Taille d'une ligne en pixels byte Couleur; @@ -1912,14 +1912,14 @@ void Load_LBM(void) { Lire_octet(LBM_Fichier, &Couleur); B256=(short)(256-Octet); - for (Compteur=0; Compteur<=B256; Compteur++) + for (counter=0; counter<=B256; counter++) if (Pos_X>4); + Pixel_de_chargement(Pos_X,Pos_Y,b>>4); else - Pixel_de_chargement(Pos_X,Pos_Y,B&0xF); + Pixel_de_chargement(Pos_X,Pos_Y,b&0xF); Pos_X++; } else // Absolute mode - switch (B) + switch (b) { case 0 : //End of line Pos_X=0; @@ -2484,32 +2484,32 @@ void Load_BMP(void) case 1 : // End of bitmap break; case 2 : // Delta - Lire_octet(Fichier, &A); - Lire_octet(Fichier, &B); - Pos_X+=A; - Pos_Y-=B; + Lire_octet(Fichier, &a); + Lire_octet(Fichier, &b); + Pos_X+=a; + Pos_Y-=b; break; default: // Nouvelle série (B 1/2 pixels bruts) - for (Indice=1; ((Indice<=B) && (!Erreur_fichier)); Indice++,Pos_X++) + for (Indice=1; ((Indice<=b) && (!Erreur_fichier)); Indice++,Pos_X++) { if (Indice&1) { - Lire_octet(Fichier, &C); - Pixel_de_chargement(Pos_X,Pos_Y,C>>4); + Lire_octet(Fichier, &c); + Pixel_de_chargement(Pos_X,Pos_Y,c>>4); } else - Pixel_de_chargement(Pos_X,Pos_Y,C&0xF); + Pixel_de_chargement(Pos_X,Pos_Y,c&0xF); } // On lit l'octet rendant le nombre d'octets pair, si // nécessaire. Encore un truc de crétin "made in MS". - if ( ((B&3)==1) || ((B&3)==2) ) + if ( ((b&3)==1) || ((b&3)==2) ) { byte Dummy; Lire_octet(Fichier, &Dummy); } } - Lire_octet(Fichier, &A); - Lire_octet(Fichier, &B); + Lire_octet(Fichier, &a); + Lire_octet(Fichier, &b); } /*Close_lecture();*/ } @@ -3234,7 +3234,7 @@ void Save_GIF(void) byte Block_indicateur; // Code indicateur du type de bloc en cours word Chaine_en_cours; // Code de la chaîne en cours de traitement - byte Caractere; // Caractère à coder + byte current_char; // Caractère à coder word Indice; // Indice de recherche de chaîne @@ -3354,14 +3354,14 @@ void Save_GIF(void) do { - Caractere=GIF_Pixel_suivant(); + current_char=GIF_Pixel_suivant(); // On regarde si dans la table on aurait pas une chaîne // équivalente à Chaine_en_cours+Caractere while ( (Indice1) || (Last_pixel>=0xC0) ) - Ecrire_octet(Fichier,Compteur|0xC0); + if ( (counter>1) || (Last_pixel>=0xC0) ) + Ecrire_octet(Fichier,counter|0xC0); Ecrire_octet(Fichier,Last_pixel); } @@ -4831,10 +4831,10 @@ void Save_SCx(void) void PI1_8b_to_16p(byte * Src,byte * Dst) { int i; // Indice du pixel à calculer - word Mask; // Masque de decodage + word byte_mask; // Masque de decodage word w0,w1,w2,w3; // Les 4 words bien ordonnés de la source - Mask=0x8000; + byte_mask=0x8000; w0=(((word)Src[0])<<8) | Src[1]; w1=(((word)Src[2])<<8) | Src[3]; w2=(((word)Src[4])<<8) | Src[5]; @@ -4844,11 +4844,11 @@ void PI1_8b_to_16p(byte * Src,byte * Dst) // Pour décoder le pixel n°i, il faut traiter les 4 words sur leur bit // correspondant à celui du masque - Dst[i]=((w0 & Mask)?0x01:0x00) | - ((w1 & Mask)?0x02:0x00) | - ((w2 & Mask)?0x04:0x00) | - ((w3 & Mask)?0x08:0x00); - Mask>>=1; + Dst[i]=((w0 & byte_mask)?0x01:0x00) | + ((w1 & byte_mask)?0x02:0x00) | + ((w2 & byte_mask)?0x04:0x00) | + ((w3 & byte_mask)?0x08:0x00); + byte_mask>>=1; } } @@ -4857,21 +4857,21 @@ void PI1_8b_to_16p(byte * Src,byte * Dst) void PI1_16p_to_8b(byte * Src,byte * Dst) { int i; // Indice du pixel à calculer - word Mask; // Masque de codage + word byte_mask; // Masque de codage word w0,w1,w2,w3; // Les 4 words bien ordonnés de la destination - Mask=0x8000; + byte_mask=0x8000; w0=w1=w2=w3=0; for (i=0;i<16;i++) { // Pour coder le pixel n°i, il faut modifier les 4 words sur leur bit // correspondant à celui du masque - w0|=(Src[i] & 0x01)?Mask:0x00; - w1|=(Src[i] & 0x02)?Mask:0x00; - w2|=(Src[i] & 0x04)?Mask:0x00; - w3|=(Src[i] & 0x08)?Mask:0x00; - Mask>>=1; + w0|=(Src[i] & 0x01)?byte_mask:0x00; + w1|=(Src[i] & 0x02)?byte_mask:0x00; + w2|=(Src[i] & 0x04)?byte_mask:0x00; + w3|=(Src[i] & 0x08)?byte_mask:0x00; + byte_mask>>=1; } Dst[0]=w0 >> 8; Dst[1]=w0 & 0x00FF; @@ -5208,7 +5208,7 @@ void PC1_4pb_to_1lp(byte * Src0,byte * Src1,byte * Src2,byte * Src3,byte * Dst) { int i,j; // Compteurs int ip; // Indice du pixel à calculer - byte Mask; // Masque de decodage + byte byte_mask; // Masque de decodage byte b0,b1,b2,b3; // Les 4 octets des plans bits sources ip=0; @@ -5220,14 +5220,14 @@ void PC1_4pb_to_1lp(byte * Src0,byte * Src1,byte * Src2,byte * Src3,byte * Dst) b2=Src2[i]; b3=Src3[i]; // Pour chacun des 8 bits des octets - Mask=0x80; + byte_mask=0x80; for (j=0;j<8;j++) { - Dst[ip++]=((b0 & Mask)?0x01:0x00) | - ((b1 & Mask)?0x02:0x00) | - ((b2 & Mask)?0x04:0x00) | - ((b3 & Mask)?0x08:0x00); - Mask>>=1; + Dst[ip++]=((b0 & byte_mask)?0x01:0x00) | + ((b1 & byte_mask)?0x02:0x00) | + ((b2 & byte_mask)?0x04:0x00) | + ((b3 & byte_mask)?0x08:0x00); + byte_mask>>=1; } } } @@ -5240,7 +5240,7 @@ void PC1_1lp_to_4pb(byte * Src,byte * Dst0,byte * Dst1,byte * Dst2,byte * Dst3) { int i,j; // Compteurs int ip; // Indice du pixel à calculer - byte Mask; // Masque de decodage + byte byte_mask; // Masque de decodage byte b0,b1,b2,b3; // Les 4 octets des plans bits sources ip=0; @@ -5248,16 +5248,16 @@ void PC1_1lp_to_4pb(byte * Src,byte * Dst0,byte * Dst1,byte * Dst2,byte * Dst3) for (i=0;i<40;i++) { // Pour chacun des 8 bits des octets - Mask=0x80; + byte_mask=0x80; b0=b1=b2=b3=0; for (j=0;j<8;j++) { - b0|=(Src[ip] & 0x01)?Mask:0x00; - b1|=(Src[ip] & 0x02)?Mask:0x00; - b2|=(Src[ip] & 0x04)?Mask:0x00; - b3|=(Src[ip] & 0x08)?Mask:0x00; + b0|=(Src[ip] & 0x01)?byte_mask:0x00; + b1|=(Src[ip] & 0x02)?byte_mask:0x00; + b2|=(Src[ip] & 0x04)?byte_mask:0x00; + b3|=(Src[ip] & 0x08)?byte_mask:0x00; ip++; - Mask>>=1; + byte_mask>>=1; } Dst0[i]=b0; Dst1[i]=b1; diff --git a/main.c b/main.c index 7ac33a95..150c004c 100644 --- a/main.c +++ b/main.c @@ -94,13 +94,13 @@ void Afficher_syntaxe(void) // ---------------------------- Sortie impromptue ---------------------------- -void Erreur_fonction(int Code, const char *Nom_fichier, int Numero_ligne, const char *Nom_fonction) +void Erreur_fonction(int error_code, const char *Nom_fichier, int Numero_ligne, const char *Nom_fonction) { T_Palette Palette_temporaire; int Indice; - printf("Error number %d occured in file %s, line %d, function %s.\n", Code, Nom_fichier,Numero_ligne,Nom_fonction); + printf("Error number %d occured in file %s, line %d, function %s.\n", error_code, Nom_fichier,Numero_ligne,Nom_fonction); - if (Code==0) + if (error_code==0) { // L'erreur 0 n'est pas une vraie erreur, elle fait seulement un flash rouge de l'écran pour dire qu'il y a un problème. // Toutes les autres erreurs déclenchent toujours une sortie en catastrophe du programme ! @@ -113,7 +113,7 @@ void Erreur_fonction(int Code, const char *Nom_fichier, int Numero_ligne, const } else { - switch (Code) + switch (error_code) { case ERREUR_GUI_ABSENT : printf("Error: File gfx2gui.gif is missing!\n"); printf("This program cannot run without this file.\n"); @@ -164,7 +164,7 @@ void Erreur_fonction(int Code, const char *Nom_fichier, int Numero_ligne, const } SDL_Quit(); - exit(Code); + exit(error_code); } } diff --git a/moteur.c b/moteur.c index 56753c32..cb11698c 100644 --- a/moteur.c +++ b/moteur.c @@ -347,10 +347,10 @@ void Desenclencher_bouton(int Numero) //-Enclenchement d'un bouton (et désenclenchement de ceux de la même famille)- -void Enclencher_bouton(int Numero,byte Click) +void Enclencher_bouton(int Numero,byte click) { int Famille; - int Curseur; + int b; int Icone; Effacer_curseur(); @@ -371,7 +371,7 @@ void Enclencher_bouton(int Numero,byte Click) Icone=16;break; } if (Icone!=-1) - Afficher_sprite_dans_menu(Numero,Icone+(Click==A_DROITE)); + Afficher_sprite_dans_menu(Numero,Icone+(click==A_DROITE)); // On note déjà la famille du bouton (La "Famiglia" c'est sacré) Famille=Bouton[Numero].Famille; @@ -384,36 +384,36 @@ void Enclencher_bouton(int Numero,byte Click) case FAMILLE_INTERRUPTION: // Petit cas spécial dans la famille "Interruption": if ((Numero!=BOUTON_LOUPE) || (!Loupe_Mode)) // Pour chaque bouton: - for (Curseur=0; CurseurPos_X+2,Enreg->Pos_Y+2,Contenu,Enreg->Largeur/8,CM_Noir,CM_Clair); + Print_dans_fenetre_limite(Enreg->Pos_X+2,Enreg->Pos_Y+2,content,Enreg->Largeur/8,CM_Noir,CM_Clair); } //------------ Effacer le contenu (caption) d'une zone de saisie ------------ @@ -1453,13 +1453,13 @@ void Fenetre_Effacer_bouton_saisie(T_Bouton_special * Enreg) T_Bouton_normal * Fenetre_Definir_bouton_normal(word Pos_X, word Pos_Y, word Largeur, word Hauteur, char * Titre, byte Lettre_soulignee, - byte Clickable, word Raccourci) + byte clickable, word Raccourci) { T_Bouton_normal * Temp=NULL; Nb_boutons_fenetre++; - if (Clickable) + if (clickable) { Temp=(T_Bouton_normal *)malloc(sizeof(T_Bouton_normal)); Temp->Numero =Nb_boutons_fenetre; @@ -1474,7 +1474,7 @@ T_Bouton_normal * Fenetre_Definir_bouton_normal(word Pos_X, word Pos_Y, Fenetre_Liste_boutons_normal=Temp; } - Fenetre_Dessiner_bouton_normal(Pos_X,Pos_Y,Largeur,Hauteur,Titre,Lettre_soulignee,Clickable); + Fenetre_Dessiner_bouton_normal(Pos_X,Pos_Y,Largeur,Hauteur,Titre,Lettre_soulignee,clickable); return Temp; } //------ Rajout d'un bouton à la liste de ceux présents dans la fenêtre ------ @@ -1482,13 +1482,13 @@ T_Bouton_normal * Fenetre_Definir_bouton_normal(word Pos_X, word Pos_Y, T_Bouton_normal * Fenetre_Definir_bouton_repetable(word Pos_X, word Pos_Y, word Largeur, word Hauteur, char * Titre, byte Lettre_soulignee, - byte Clickable, word Raccourci) + byte clickable, word Raccourci) { T_Bouton_normal * Temp=NULL; Nb_boutons_fenetre++; - if (Clickable) + if (clickable) { Temp=(T_Bouton_normal *)malloc(sizeof(T_Bouton_normal)); Temp->Numero =Nb_boutons_fenetre; @@ -1503,7 +1503,7 @@ T_Bouton_normal * Fenetre_Definir_bouton_repetable(word Pos_X, word Pos_Y, Fenetre_Liste_boutons_normal=Temp; } - Fenetre_Dessiner_bouton_normal(Pos_X,Pos_Y,Largeur,Hauteur,Titre,Lettre_soulignee,Clickable); + Fenetre_Dessiner_bouton_normal(Pos_X,Pos_Y,Largeur,Hauteur,Titre,Lettre_soulignee,clickable); return Temp; } @@ -1575,7 +1575,7 @@ T_Bouton_special * Fenetre_Definir_bouton_saisie(word Pos_X,word Pos_Y,word Larg return Temp; } -T_Bouton_dropdown * Fenetre_Definir_bouton_dropdown(word Pos_X,word Pos_Y,word Largeur,word Hauteur,word Largeur_choix,char *Libelle,byte Affiche_choix,byte Affiche_centre,byte Affiche_fleche,byte Bouton_actif) +T_Bouton_dropdown * Fenetre_Definir_bouton_dropdown(word Pos_X,word Pos_Y,word Largeur,word Hauteur,word Largeur_choix,char *Libelle,byte display_choice,byte display_centered,byte display_arrow,byte active_button) { T_Bouton_dropdown *Temp; @@ -1585,19 +1585,19 @@ T_Bouton_dropdown * Fenetre_Definir_bouton_dropdown(word Pos_X,word Pos_Y,word L Temp->Pos_Y =Pos_Y; Temp->Largeur =Largeur; Temp->Hauteur =Hauteur; - Temp->Affiche_choix =Affiche_choix; + Temp->Affiche_choix =display_choice; Temp->Premier_choix=NULL; Temp->Largeur_choix=Largeur_choix?Largeur_choix:Largeur; - Temp->Affiche_centre=Affiche_centre; - Temp->Affiche_fleche=Affiche_fleche; - Temp->Bouton_actif=Bouton_actif; + Temp->Affiche_centre=display_centered; + Temp->Affiche_fleche=display_arrow; + Temp->Bouton_actif=active_button; Temp->Next=Fenetre_Liste_boutons_dropdown; Fenetre_Liste_boutons_dropdown=Temp; Fenetre_Dessiner_bouton_normal(Pos_X,Pos_Y,Largeur,Hauteur,"",-1,1); if (Libelle && Libelle[0]) Print_dans_fenetre(Temp->Pos_X+2,Temp->Pos_Y+(Temp->Hauteur-7)/2,Libelle,CM_Noir,CM_Clair); - if (Affiche_fleche) + if (display_arrow) Fenetre_Afficher_sprite_drive(Temp->Pos_X+Temp->Largeur-10,Temp->Pos_Y+(Temp->Hauteur-7)/2,6); return Temp; @@ -1862,14 +1862,14 @@ short Attendre_click_dans_palette(T_Bouton_palette * Enreg) // -------------- Récupération d'une couleur derrière un menu ---------------- -void Recuperer_couleur_derriere_fenetre(byte * Couleur, byte * Click) +void Recuperer_couleur_derriere_fenetre(byte * Couleur, byte * click) { short Largeur=Fenetre_Largeur*Menu_Facteur_X; short Hauteur=Fenetre_Hauteur*Menu_Facteur_Y; short Ancien_X=-1; short Ancien_Y=-1; short Indice; - short A,B,C,D; // Variables temporaires et multitâches... + short a,b,c,d; // Variables temporaires et multitâches... byte * Buffer; char Chaine[25]; byte Cacher_curseur_avant_recuperation; @@ -1884,19 +1884,19 @@ void Recuperer_couleur_derriere_fenetre(byte * Couleur, byte * Click) for (Indice=0; IndicePremier_choix,Indice_choix=0; Choix!=NULL; Choix=Choix->Next,Indice_choix++) { - byte C1; - byte C2; + byte color_1; + byte color_2; if (Indice_choix==Indice_selectionne) { - C1=CM_Blanc; - C2=CM_Fonce; + color_1=CM_Blanc; + color_2=CM_Fonce; Block(Fenetre_Pos_X+3*Menu_Facteur_X, Fenetre_Pos_Y+((2+Indice_choix*8)*Menu_Facteur_Y), (Bouton->Largeur_choix-5)*Menu_Facteur_X,(8)*Menu_Facteur_Y,CM_Fonce); } else { - C1=CM_Noir; - C2=CM_Clair; + color_1=CM_Noir; + color_2=CM_Clair; } - Print_dans_fenetre(3,2+Indice_choix*8,Choix->Libelle,C1,C2); + Print_dans_fenetre(3,2+Indice_choix*8,Choix->Libelle,color_1,color_2); } UpdateRect(Fenetre_Pos_X,Fenetre_Pos_Y,Fenetre_Largeur*Menu_Facteur_X,Fenetre_Hauteur*Menu_Facteur_Y); Afficher_curseur(); diff --git a/moteur.h b/moteur.h index b5e67ec6..fd455d6f 100644 --- a/moteur.h +++ b/moteur.h @@ -22,7 +22,7 @@ void Gestion_principale (void); void Tracer_cadre_de_bouton_du_menu(byte Numero,byte Enfonce); void Desenclencher_bouton (int Numero); -void Enclencher_bouton (int Numero,byte Click); +void Enclencher_bouton (int Numero,byte click); void Annuler_les_effets (void); void Restaurer_les_effets (void); void Ouvrir_fenetre (word Largeur,word Hauteur, char * Titre); @@ -32,7 +32,7 @@ void Ouvrir_popup (word Pos_X, word Pos_Y, word Largeur, word H void Fermer_popup (void); void Fenetre_Dessiner_bouton_normal(word Pos_X,word Pos_Y,word Largeur,word Hauteur, - char * Titre,byte Lettre_soulignee,byte Clickable); + char * Titre,byte Lettre_soulignee,byte clickable); void Fenetre_Enfoncer_bouton_normal(word Pos_X,word Pos_Y,word Largeur,word Hauteur); void Fenetre_Desenfoncer_bouton_normal(word Pos_X,word Pos_Y,word Largeur,word Hauteur); void Fenetre_Dessiner_bouton_palette(word Pos_X,word Pos_Y); @@ -41,18 +41,18 @@ void Calculer_hauteur_curseur_jauge(T_Bouton_scroller * Enreg); void Fenetre_Dessiner_jauge(T_Bouton_scroller * Enreg); void Fenetre_Dessiner_bouton_scroller(T_Bouton_scroller * Enreg); -void Fenetre_Contenu_bouton_saisie(T_Bouton_special * Enreg, char * Contenu); +void Fenetre_Contenu_bouton_saisie(T_Bouton_special * Enreg, char * content); void Fenetre_Effacer_bouton_saisie(T_Bouton_special * Enreg); void Fenetre_Dessiner_bouton_saisie(word Pos_X,word Pos_Y,word Largeur_en_caracteres); T_Bouton_normal * Fenetre_Definir_bouton_normal(word Pos_X, word Pos_Y, word Largeur, word Hauteur, char * Titre,byte Lettre_soulignee, - byte Clickable, word Raccourci); + byte clickable, word Raccourci); T_Bouton_normal * Fenetre_Definir_bouton_repetable(word Pos_X, word Pos_Y, word Largeur, word Hauteur, char * Titre,byte Lettre_soulignee, - byte Clickable, word Raccourci); + byte clickable, word Raccourci); T_Bouton_palette * Fenetre_Definir_bouton_palette(word Pos_X, word Pos_Y); void Fenetre_Effacer_tags(void); @@ -65,12 +65,12 @@ T_Bouton_scroller * Fenetre_Definir_bouton_scroller(word Pos_X, word Pos_Y, word Position_initiale); T_Bouton_special * Fenetre_Definir_bouton_special(word Pos_X,word Pos_Y,word Largeur,word Hauteur); T_Bouton_special * Fenetre_Definir_bouton_saisie(word Pos_X,word Pos_Y,word Largeur_en_caracteres); -T_Bouton_dropdown * Fenetre_Definir_bouton_dropdown(word Pos_X,word Pos_Y,word Largeur,word Hauteur,word Largeur_choix,char *Libelle,byte Affiche_choix,byte Affiche_centre,byte Affiche_fleche,byte Bouton_actif); +T_Bouton_dropdown * Fenetre_Definir_bouton_dropdown(word Pos_X,word Pos_Y,word Largeur,word Hauteur,word Largeur_choix,char *Libelle,byte display_choice,byte display_centered,byte display_arrow,byte active_button); void Fenetre_Dropdown_choix(T_Bouton_dropdown * Dropdown, word Numero, const char *Libelle); void Fenetre_Dropdown_vider_choix(T_Bouton_dropdown * Dropdown); byte Fenetre_click_dans_zone(short Debut_X,short Debut_Y,short Fin_X,short Fin_Y); short Attendre_click_dans_palette(T_Bouton_palette * Enreg); -void Recuperer_couleur_derriere_fenetre(byte * Couleur, byte * Click); +void Recuperer_couleur_derriere_fenetre(byte * Couleur, byte * click); short Fenetre_Bouton_clicke(void); int Numero_bouton_sous_souris(void); diff --git a/op_c.c b/op_c.c index 46f43e7d..8c094399 100644 --- a/op_c.c +++ b/op_c.c @@ -98,21 +98,21 @@ void RGBtoHSL(int r,int g,int b,byte * hr,byte * sr,byte* lr) *sr = (s*255.0); } -void HSLtoRGB(byte H,byte S,byte L, byte* R, byte* G, byte* B) +void HSLtoRGB(byte h,byte s,byte l, byte* r, byte* g, byte* b) { float rf =0 ,gf = 0,bf = 0; float hf,lf,sf; float p,q; - if(S==0) + if(s==0) { - *R=*G=*B=L; + *r=*g=*b=l; return; } - hf = H / 255.0; - lf = L / 255.0; - sf = S / 255.0; + hf = h / 255.0; + lf = l / 255.0; + sf = s / 255.0; if (lf<=0.5) q = lf*(1+sf); @@ -158,16 +158,16 @@ void HSLtoRGB(byte H,byte S,byte L, byte* R, byte* G, byte* B) else bf = p; - *R = rf * (255); - *G = gf * (255); - *B = bf * (255); + *r = rf * (255); + *g = gf * (255); + *b = bf * (255); } ///////////////////////////////////////////////////////////////////////////// ///////////////////////////// Méthodes de gestion des tables de conversion // ///////////////////////////////////////////////////////////////////////////// -Table_conversion * TC_New(int nbb_r,int nbb_v,int nbb_b) +Table_conversion * TC_New(int nbb_r,int nbb_g,int nbb_b) { Table_conversion * n; int Taille; @@ -177,18 +177,18 @@ Table_conversion * TC_New(int nbb_r,int nbb_v,int nbb_b) { // On recopie les paramŠtres demand‚s n->nbb_r=nbb_r; - n->nbb_v=nbb_v; + n->nbb_g=nbb_g; n->nbb_b=nbb_b; // On calcule les autres n->rng_r=(1<rng_v=(1<rng_v=(1<rng_b=(1<dec_r=nbb_v+nbb_b; + n->dec_r=nbb_g+nbb_b; n->dec_v=nbb_b; n->dec_b=0; n->red_r=8-nbb_r; - n->red_v=8-nbb_v; + n->red_v=8-nbb_g; n->red_b=8-nbb_b; // On tente d'allouer la table @@ -251,7 +251,7 @@ void TO_Init(Table_occurence * t) memset(t->table,0,Taille); // On initialise … 0 } -Table_occurence * TO_New(int nbb_r,int nbb_v,int nbb_b) +Table_occurence * TO_New(int nbb_r,int nbb_g,int nbb_b) { Table_occurence * n; int Taille; @@ -261,18 +261,18 @@ Table_occurence * TO_New(int nbb_r,int nbb_v,int nbb_b) { // On recopie les paramŠtres demand‚s n->nbb_r=nbb_r; - n->nbb_v=nbb_v; + n->nbb_g=nbb_g; n->nbb_b=nbb_b; // On calcule les autres n->rng_r=(1<rng_v=(1<rng_v=(1<rng_b=(1<dec_r=nbb_v+nbb_b; + n->dec_r=nbb_g+nbb_b; n->dec_v=nbb_b; n->dec_b=0; n->red_r=8-nbb_r; - n->red_v=8-nbb_v; + n->red_v=8-nbb_g; n->red_b=8-nbb_b; // On tente d'allouer la table @@ -691,12 +691,12 @@ ClusterSet * CS_New(int nbmax,Table_occurence * to) if (n!=0) { // On recopie les paramŠtres demand‚s - n->nbmax=TO_Compter_couleurs(to); + n->nb_max=TO_Compter_couleurs(to); // On vient de compter le nombre de couleurs existantes, s'il est plus grand que 256 on limit à 256 (nombre de couleurs voulu au final) - if (n->nbmax>nbmax) + if (n->nb_max>nbmax) { - n->nbmax=nbmax; + n->nb_max=nbmax; } // On tente d'allouer la table @@ -793,7 +793,7 @@ void CS_Generer(ClusterSet * cs,Table_occurence * to) Cluster Nouveau2; // Tant qu'on a moins de 256 clusters - while (cs->nbnbmax) + while (cs->nbnb_max) { // On récupère le plus grand cluster CS_Get(cs,&Courant); @@ -829,7 +829,7 @@ void CS_Trier_par_chrominance(ClusterSet * cs) int index; Cluster * nc; - nc=(Cluster *)malloc(cs->nbmax*sizeof(Cluster)); + nc=(Cluster *)malloc(cs->nb_max*sizeof(Cluster)); // Initialisation de la table d'occurence de chaque octet for (index=0;index<256;index++) @@ -863,7 +863,7 @@ void CS_Trier_par_luminance(ClusterSet * cs) int index; Cluster * nc; - nc=(Cluster *)malloc(cs->nbmax*sizeof(Cluster)); + nc=(Cluster *)malloc(cs->nb_max*sizeof(Cluster)); // Initialisation de la table d'occurence de chaque octet for (index=0;index<256;index++) @@ -914,10 +914,10 @@ void CS_Generer_TC_et_Palette(ClusterSet * cs,Table_conversion * tc,Composantes void DS_Init(DegradeSet * ds,ClusterSet * cs) { - ds->degrades[0].nbcouleurs=1; - ds->degrades[0].min=cs->clusters[0].h; - ds->degrades[0].max=cs->clusters[0].h; - ds->degrades[0].hue=cs->clusters[0].h; + ds->gradients[0].nb_colors=1; + ds->gradients[0].min=cs->clusters[0].h; + ds->gradients[0].max=cs->clusters[0].h; + ds->gradients[0].hue=cs->clusters[0].h; // Et hop : le 1er ensemble de d‚grad‚s est initialis‚ ds->nb=1; } @@ -930,11 +930,11 @@ DegradeSet * DS_New(ClusterSet * cs) if (n!=NULL) { // On recopie les paramŠtres demand‚s - n->nbmax=cs->nbmax; + n->nb_max=cs->nb_max; // On tente d'allouer la table - n->degrades=(Degrade *)malloc((n->nbmax)*sizeof(Degrade)); - if (n->degrades!=0) + n->gradients=(Degrade *)malloc((n->nb_max)*sizeof(Degrade)); + if (n->gradients!=0) // C'est bon! On initialise DS_Init(n,cs); else @@ -950,7 +950,7 @@ DegradeSet * DS_New(ClusterSet * cs) void DS_Delete(DegradeSet * ds) { - free(ds->degrades); + free(ds->gradients); free(ds); } @@ -969,7 +969,7 @@ void DS_Generer(DegradeSet * ds,ClusterSet * cs) mdiff=99999999; for (id=0;idnb;id++) { - diff=abs(cs->clusters[ic].h - ds->degrades[id].hue); + diff=abs(cs->clusters[ic].h - ds->gradients[id].hue); if ((mdiff>diff) && (diff<16)) { mdegr=id; @@ -981,24 +981,24 @@ void DS_Generer(DegradeSet * ds,ClusterSet * cs) if (mdegr!=-1) { // On met … jour le d‚grad‚ - if (cs->clusters[ic].h < ds->degrades[mdegr].min) - ds->degrades[mdegr].min=cs->clusters[ic].h; - if (cs->clusters[ic].h > ds->degrades[mdegr].max) - ds->degrades[mdegr].max=cs->clusters[ic].h; - ds->degrades[mdegr].hue=((ds->degrades[mdegr].hue* - ds->degrades[mdegr].nbcouleurs) + if (cs->clusters[ic].h < ds->gradients[mdegr].min) + ds->gradients[mdegr].min=cs->clusters[ic].h; + if (cs->clusters[ic].h > ds->gradients[mdegr].max) + ds->gradients[mdegr].max=cs->clusters[ic].h; + ds->gradients[mdegr].hue=((ds->gradients[mdegr].hue* + ds->gradients[mdegr].nb_colors) +cs->clusters[ic].h) - /(ds->degrades[mdegr].nbcouleurs+1); - ds->degrades[mdegr].nbcouleurs++; + /(ds->gradients[mdegr].nb_colors+1); + ds->gradients[mdegr].nb_colors++; } else { // On cr‚e un nouveau d‚grad‚ mdegr=ds->nb; - ds->degrades[mdegr].nbcouleurs=1; - ds->degrades[mdegr].min=cs->clusters[ic].h; - ds->degrades[mdegr].max=cs->clusters[ic].h; - ds->degrades[mdegr].hue=cs->clusters[ic].h; + ds->gradients[mdegr].nb_colors=1; + ds->gradients[mdegr].min=cs->clusters[ic].h; + ds->gradients[mdegr].max=cs->clusters[ic].h; + ds->gradients[mdegr].hue=cs->clusters[ic].h; ds->nb++; } cs->clusters[ic].h=mdegr; @@ -1006,7 +1006,7 @@ void DS_Generer(DegradeSet * ds,ClusterSet * cs) // On redistribue les valeurs dans les clusters for (ic=0;icnb;ic++) - cs->clusters[ic].h=ds->degrades[cs->clusters[ic].h].hue; + cs->clusters[ic].h=ds->gradients[cs->clusters[ic].h].hue; } @@ -1094,7 +1094,7 @@ void Convert_bitmap_24B_to_256_Floyd_Steinberg(Bitmap256 Dest,Bitmap24B Source,i Bitmap24B S_moins1; Bitmap24B Suivant; Bitmap24B S_plus1; - Bitmap256 D; + Bitmap256 d; int Pos_X,Pos_Y; int Rouge,Vert,Bleu; float ERouge,EVert,EBleu; @@ -1105,7 +1105,7 @@ void Convert_bitmap_24B_to_256_Floyd_Steinberg(Bitmap256 Dest,Bitmap24B Source,i C_plus1 =Courant+1; // Le pixel à droite S_moins1=Suivant-1; // Le pixel en bas à gauche S_plus1 =Suivant+1; // Le pixel en bas à droite - D =Dest; + d =Dest; // On parcours chaque pixel: for (Pos_Y=0;Pos_YV; Bleu =Courant->B; // Cherche la couleur correspondant dans la palette et la range dans l'image de destination - *D=TC_Get(tc,Rouge,Vert,Bleu); + *d=TC_Get(tc,Rouge,Vert,Bleu); // Puis on calcule pour chaque composante l'erreur dûe à l'approximation - Rouge-=palette[*D].R; - Vert -=palette[*D].V; - Bleu -=palette[*D].B; + Rouge-=palette[*d].R; + Vert -=palette[*d].V; + Bleu -=palette[*d].B; // Et dans chaque pixel voisin on propage l'erreur // A droite: @@ -1174,7 +1174,7 @@ void Convert_bitmap_24B_to_256_Floyd_Steinberg(Bitmap256 Dest,Bitmap24B Source,i S_moins1++; Suivant++; S_plus1++; - D++; + d++; } } diff --git a/op_c.h b/op_c.h index 12408e1c..29f34a50 100644 --- a/op_c.h +++ b/op_c.h @@ -35,19 +35,19 @@ typedef byte * Bitmap256; typedef struct { int nbb_r; // Nb de bits de précision sur les rouges - int nbb_v; // Nb de bits de précision sur les verts + int nbb_g; // Nb de bits de précision sur les verts int nbb_b; // Nb de bits de précision sur les bleu int rng_r; // Nb de valeurs sur les rouges (= 1<0) X--;} - if (dY<0) Y++; else {if (dY>0) Y--;} + dx=Pinceau_X-Debut_X; + dy=Pinceau_Y-Debut_Y; + if (dx<0) X++; else {if (dx>0) X--;} + if (dy<0) Y++; else {if (dy>0) Y--;} Etirer_brosse_preview(Debut_X,Debut_Y,X,Y); } else @@ -3474,8 +3474,8 @@ void Tourner_brosse_1_5(void) short Ancien_X; short Ancien_Y; short Etat_prec; - float Angle; - int dX,dY; + float angle; + int dx,dy; Operation_POP(&Etat_prec); Operation_POP(&Ancien_Y); @@ -3485,20 +3485,20 @@ void Tourner_brosse_1_5(void) { if ( (Brosse_Centre_rotation_X==Pinceau_X) && (Brosse_Centre_rotation_Y==Pinceau_Y) ) - Angle=0.0; + angle=0.0; else { - dX=Pinceau_X-Brosse_Centre_rotation_X; - dY=Pinceau_Y-Brosse_Centre_rotation_Y; - Angle=acos(((float)dX)/sqrt((dX*dX)+(dY*dY))); - if (dY>0) Angle=M_2PI-Angle; + dx=Pinceau_X-Brosse_Centre_rotation_X; + dy=Pinceau_Y-Brosse_Centre_rotation_Y; + angle=acos(((float)dx)/sqrt((dx*dx)+(dy*dy))); + if (dy>0) angle=M_2PI-angle; } if (Menu_visible) { if (Config.Coords_rel) { - Num2str((int)(Angle*180.0/M_PI),Chaine,3); + Num2str((int)(angle*180.0/M_PI),Chaine,3); Print_dans_menu(Chaine,7); } else @@ -3506,7 +3506,7 @@ void Tourner_brosse_1_5(void) } Afficher_ecran(); - Tourner_brosse_preview(Angle); + Tourner_brosse_preview(angle); Afficher_curseur(); Operation_Taille_pile-=2; @@ -3537,8 +3537,8 @@ void Tourner_brosse_0_5(void) short Calcul_Y=0; byte Changement_angle; short Etat_prec; - float Angle=0.0; - int dX,dY; + float angle=0.0; + int dx,dy; Operation_POP(&Etat_prec); Operation_POP(&Ancien_Y); @@ -3548,20 +3548,20 @@ void Tourner_brosse_0_5(void) { if ( (Brosse_Centre_rotation_X==Pinceau_X) && (Brosse_Centre_rotation_Y==Pinceau_Y) ) - Angle=0.0; + angle=0.0; else { - dX=Pinceau_X-Brosse_Centre_rotation_X; - dY=Pinceau_Y-Brosse_Centre_rotation_Y; - Angle=acos(((float)dX)/sqrt((dX*dX)+(dY*dY))); - if (dY>0) Angle=M_2PI-Angle; + dx=Pinceau_X-Brosse_Centre_rotation_X; + dy=Pinceau_Y-Brosse_Centre_rotation_Y; + angle=acos(((float)dx)/sqrt((dx*dx)+(dy*dy))); + if (dy>0) angle=M_2PI-angle; } if (Menu_visible) { if (Config.Coords_rel) { - Num2str(Round(Angle*180.0/M_PI),Chaine,3); + Num2str(Round(angle*180.0/M_PI),Chaine,3); Print_dans_menu(Chaine,7); } else @@ -3578,14 +3578,14 @@ void Tourner_brosse_0_5(void) Calcul_Y=Brosse_Centre_rotation_Y; switch (Touche_ANSI) { - case '6': Angle= 0.0 ; Calcul_X++; break; - case '9': Angle=M_PI*0.25; Calcul_X++; Calcul_Y--; break; - case '8': Angle=M_PI*0.5 ; Calcul_Y--; break; - case '7': Angle=M_PI*0.75; Calcul_X--; Calcul_Y--; break; - case '4': Angle=M_PI ; Calcul_X--; break; - case '1': Angle=M_PI*1.25; Calcul_X--; Calcul_Y++; break; - case '2': Angle=M_PI*1.5 ; Calcul_Y++; break; - case '3': Angle=M_PI*1.75; Calcul_X++; Calcul_Y++; break; + case '6': angle= 0.0 ; Calcul_X++; break; + case '9': angle=M_PI*0.25; Calcul_X++; Calcul_Y--; break; + case '8': angle=M_PI*0.5 ; Calcul_Y--; break; + case '7': angle=M_PI*0.75; Calcul_X--; Calcul_Y--; break; + case '4': angle=M_PI ; Calcul_X--; break; + case '1': angle=M_PI*1.25; Calcul_X--; Calcul_Y++; break; + case '2': angle=M_PI*1.5 ; Calcul_Y++; break; + case '3': angle=M_PI*1.75; Calcul_X++; Calcul_Y++; break; default : Changement_angle=0; } @@ -3598,7 +3598,7 @@ void Tourner_brosse_0_5(void) { // On efface la preview de la brosse Afficher_ecran(); - Tourner_brosse_preview(Angle); + Tourner_brosse_preview(angle); Afficher_curseur(); Operation_Taille_pile-=2; @@ -3623,8 +3623,8 @@ void Tourner_brosse_2_5(void) { short Calcul_X; short Calcul_Y; - int dX,dY; - float Angle; + int dx,dy; + float angle; // On efface la preview de la brosse @@ -3637,17 +3637,17 @@ void Tourner_brosse_2_5(void) // Calcul de l'angle par rapport à la dernière position calculée if ( (Brosse_Centre_rotation_X==Calcul_X) && (Brosse_Centre_rotation_Y==Calcul_Y) ) - Angle=0.0; + angle=0.0; else { - dX=Calcul_X-Brosse_Centre_rotation_X; - dY=Calcul_Y-Brosse_Centre_rotation_Y; - Angle=acos(((float)dX)/sqrt((dX*dX)+(dY*dY))); - if (dY>0) Angle=M_2PI-Angle; + dx=Calcul_X-Brosse_Centre_rotation_X; + dy=Calcul_Y-Brosse_Centre_rotation_Y; + angle=acos(((float)dx)/sqrt((dx*dx)+(dy*dy))); + if (dy>0) angle=M_2PI-angle; } // Et enfin on stocke pour de bon la nouvelle brosse étirée - Tourner_brosse(Angle); + Tourner_brosse(angle); // Simuler l'appui du bouton "Dessin" @@ -3878,7 +3878,7 @@ void Cercle_degrade_0_6(void) short Centre_X; short Centre_Y; short Couleur; - short Click; + short click; short Rayon; Operation_POP(&Tangente_Y); @@ -3887,11 +3887,11 @@ void Cercle_degrade_0_6(void) Operation_POP(&Centre_X); Operation_POP(&Couleur); - Operation_POP(&Click); + Operation_POP(&click); - if (Click==A_GAUCHE) + if (click==A_GAUCHE) { - Operation_PUSH(Click); + Operation_PUSH(click); Operation_PUSH(Couleur); Operation_PUSH(Centre_X); @@ -4129,7 +4129,7 @@ void Ellipse_degradee_0_6(void) short Centre_X; short Centre_Y; short Couleur; - short Click; + short click; //short Rayon; short Rayon_horizontal; short Rayon_vertical; @@ -4140,11 +4140,11 @@ void Ellipse_degradee_0_6(void) Operation_POP(&Centre_X); Operation_POP(&Couleur); - Operation_POP(&Click); + Operation_POP(&click); - if (Click==A_GAUCHE) + if (click==A_GAUCHE) { - Operation_PUSH(Click); + Operation_PUSH(click); Operation_PUSH(Couleur); Operation_PUSH(Centre_X); diff --git a/palette.c b/palette.c index e0fbe6af..790243cd 100644 --- a/palette.c +++ b/palette.c @@ -66,9 +66,9 @@ void Set_Palette_RGB_Scale(int Grad) Graduations_RGB = Grad; } -byte Palette_Scale_Component(byte Comp) +byte Palette_Scale_Component(byte comp) { - return ((Comp+128/Graduations_RGB)*(Graduations_RGB-1)/255*255+(Graduations_RGB&1?1:0))/(Graduations_RGB-1); + return ((comp+128/Graduations_RGB)*(Graduations_RGB-1)/255*255+(Graduations_RGB&1?1:0))/(Graduations_RGB-1); } // Définir les unités pour les graduationss R G B ou H S V @@ -81,10 +81,10 @@ void Unite_Composantes(int Count) void Modifier_HSL(T_Palette Palette_depart, T_Palette Palette_arrivee, byte Couleur, short Difference_H, short Difference_S, short Difference_L) { - byte H, S, L; - RGBtoHSL(Palette_depart[Couleur].R,Palette_depart[Couleur].V,Palette_depart[Couleur].B,&H,&S,&L); + byte h, S, l; + RGBtoHSL(Palette_depart[Couleur].R,Palette_depart[Couleur].V,Palette_depart[Couleur].B,&h,&S,&l); // La teinte (Hue) est cyclique - H=(Difference_H+256+H); + h=(Difference_H+256+h); // Pour les autres (Saturation, Lightness), au lieu d'additionner, // on va faire un ratio, cela utilise mieux la plage de valeurs 0-255 if (Difference_S<0) @@ -92,10 +92,10 @@ void Modifier_HSL(T_Palette Palette_depart, T_Palette Palette_arrivee, byte Coul else if (Difference_S>0) S=255-(255-Difference_S)*(255-S)/255; if (Difference_L<0) - L=(255+Difference_L)*L/255; + l=(255+Difference_L)*l/255; else if (Difference_L>0) - L=255-(255-Difference_L)*(255-L)/255; - HSLtoRGB(H,S,L,&Palette_arrivee[Couleur].R,&Palette_arrivee[Couleur].V,&Palette_arrivee[Couleur].B); + l=255-(255-Difference_L)*(255-l)/255; + HSLtoRGB(h,S,l,&Palette_arrivee[Couleur].R,&Palette_arrivee[Couleur].V,&Palette_arrivee[Couleur].B); } void Modifier_Rouge(byte Couleur, short Nouvelle_teinte, T_Palette Palette) @@ -748,7 +748,7 @@ void Bouton_Palette(void) static short Reduce_Nb_couleurs=256; short Couleur_temporaire; // Variable pouvant reservir pour différents calculs intermédiaires dword Temp; - byte Couleur,Click; // Variables pouvant reservir pour différents calculs intermédiaires + byte Couleur,click; // Variables pouvant reservir pour différents calculs intermédiaires short Bouton_clicke; word Ancien_Mouse_X; word Ancien_Mouse_Y; @@ -1959,11 +1959,11 @@ void Bouton_Palette(void) case SDLK_BACKQUOTE : // Récupération d'une couleur derrière le menu case SDLK_COMMA : - Recuperer_couleur_derriere_fenetre(&Couleur,&Click); - if (Click) + Recuperer_couleur_derriere_fenetre(&Couleur,&click); + if (click) { Effacer_curseur(); - if (Click==A_DROITE) + if (click==A_DROITE) { if (Back_color!=Couleur) { diff --git a/palette.h b/palette.h index 7dc862f1..861d2c6d 100644 --- a/palette.h +++ b/palette.h @@ -26,5 +26,5 @@ void Set_Palette_RGB_Scale(int); // Scale a component (R, G or B) according to the current RGB graduations // The resulting range is [0-255] -byte Palette_Scale_Component(byte Comp); +byte Palette_Scale_Component(byte comp); diff --git a/pxdouble.c b/pxdouble.c index 21384f06..6689e9ca 100644 --- a/pxdouble.c +++ b/pxdouble.c @@ -63,10 +63,10 @@ void Afficher_partie_de_l_ecran_Double (word Largeur,word Hauteur,word Largeur_i { byte* Dest=Ecran; //On va se mettre en 0,0 dans l'écran (Dest) byte* Src=Principal_Decalage_Y*Largeur_image+Principal_Decalage_X+Principal_Ecran; //Coords de départ ds la source (Src) - int dx; + int y; int dy; - for(dx=Hauteur;dx!=0;dx--) + for(y=Hauteur;y!=0;y--) // Pour chaque ligne { // On fait une copie de la ligne @@ -152,13 +152,13 @@ void Display_brush_Color_Double(word Pos_X,word Pos_Y,word Decalage_X,word Decal // Src = Position dans la brosse byte* Src = Brosse + Decalage_Y * Largeur_brosse + Decalage_X; - word DX,CX; + word x,y; // Pour chaque ligne - for(DX = Hauteur;DX > 0; DX--) + for(y = Hauteur;y > 0; y--) { // Pour chaque pixel - for(CX = Largeur;CX > 0; CX--) + for(x = Largeur;x > 0; x--) { // On vérifie que ce n'est pas la transparence if(*Src != Couleur_de_transparence) @@ -187,12 +187,12 @@ void Display_brush_Mono_Double(word Pos_X, word Pos_Y, // l'écran byte* Src=Largeur_brosse*Decalage_Y+Decalage_X+Brosse; // Src = adr ds // la brosse - int dx,cx; + int x,y; - for(dx=Hauteur;dx!=0;dx--) + for(y=Hauteur;y!=0;y--) //Pour chaque ligne { - for(cx=Largeur;cx!=0;cx--) + for(x=Largeur;x!=0;x--) //Pour chaque pixel { if (*Src!=Couleur_de_transparence) @@ -214,13 +214,13 @@ void Clear_brush_Double(word Pos_X,word Pos_Y,__attribute__((unused)) word Decal { byte* Dest=Ecran+Pos_X*2+Pos_Y*4*Largeur_ecran; //On va se mettre en 0,0 dans l'écran (Dest) byte* Src = ( Pos_Y + Principal_Decalage_Y ) * Largeur_image + Pos_X + Principal_Decalage_X + Principal_Ecran; //Coords de départ ds la source (Src) - int dx; - int cx; + int y; + int x; - for(dx=Hauteur;dx!=0;dx--) + for(y=Hauteur;y!=0;y--) // Pour chaque ligne { - for(cx=Largeur;cx!=0;cx--) + for(x=Largeur;x!=0;x--) //Pour chaque pixel { *(Dest+Largeur_ecran*2+1)=*(Dest+Largeur_ecran*2)=*(Dest+1)=*Dest=*Src; @@ -238,20 +238,20 @@ void Clear_brush_Double(word Pos_X,word Pos_Y,__attribute__((unused)) word Decal } // Affiche une brosse (arbitraire) à l'écran -void Affiche_brosse_Double(byte * B, word Pos_X,word Pos_Y,word Decalage_X,word Decalage_Y,word Largeur,word Hauteur,byte Couleur_de_transparence,word Largeur_brosse) +void Affiche_brosse_Double(byte * brush, word Pos_X,word Pos_Y,word Decalage_X,word Decalage_Y,word Largeur,word Hauteur,byte Couleur_de_transparence,word Largeur_brosse) { // Dest = Position à l'écran byte* Dest = Ecran + Pos_Y * 4 * Largeur_ecran + Pos_X * 2; // Src = Position dans la brosse - byte* Src = B + Decalage_Y * Largeur_brosse + Decalage_X; + byte* Src = brush + Decalage_Y * Largeur_brosse + Decalage_X; - word DX,CX; + word x,y; // Pour chaque ligne - for(DX = Hauteur;DX > 0; DX--) + for(y = Hauteur;y > 0; y--) { // Pour chaque pixel - for(CX = Largeur;CX > 0; CX--) + for(x = Largeur;x > 0; x--) { // On vérifie que ce n'est pas la transparence if(*Src != Couleur_de_transparence) @@ -273,13 +273,13 @@ void Remap_screen_Double(word Pos_X,word Pos_Y,word Largeur,word Hauteur,byte * { // Dest = coords a l'écran byte* Dest = Ecran + Pos_Y * 4 * Largeur_ecran + Pos_X * 2; - int dx,cx; + int x,y; // Pour chaque ligne - for(dx=Hauteur;dx>0;dx--) + for(y=Hauteur;y>0;y--) { // Pour chaque pixel - for(cx=Largeur;cx>0;cx--) + for(x=Largeur;x>0;x--) { *(Dest+Largeur_ecran*2+1)=*(Dest+Largeur_ecran*2)=*(Dest+1)=*Dest= Table_de_conversion[*Dest]; @@ -303,10 +303,10 @@ void Afficher_une_ligne_ecran_fast_Double(word Pos_X,word Pos_Y,word Largeur,byt void Afficher_une_ligne_ecran_Double(word Pos_X,word Pos_Y,word Largeur,byte * Ligne) /* On affiche une ligne de pixels en les doublant. */ { - int dx; + int x; byte *Dest; Dest=Ecran+Pos_X*2+Pos_Y*4*Largeur_ecran; - for(dx=Largeur;dx>0;dx--) + for(x=Largeur;x>0;x--) { *(Dest+Largeur_ecran*2+1)=*(Dest+Largeur_ecran*2)=*(Dest+1)=*Dest=*Ligne; Dest+=2; @@ -320,9 +320,9 @@ void Afficher_une_ligne_transparente_mono_a_l_ecran_Double( // Utilisé par les brosses en mode zoom { byte* Dest = Ecran+ Pos_Y*ZOOMX*Largeur_ecran + Pos_X*ZOOMX; - int Compteur; + int x; // Pour chaque pixel - for(Compteur=0;Compteur 0); + x--; + }while (x > 0); Src += Largeur_image; } // ATTENTION on n'arrive jamais ici ! @@ -387,7 +387,7 @@ void Display_brush_Color_zoom_Double(word Pos_X,word Pos_Y, byte * Buffer) { byte* Src = Brosse+Decalage_Y*Largeur_brosse + Decalage_X; - word DX = Pos_Y; + word y = Pos_Y; byte bx; // Pour chaque ligne @@ -397,11 +397,11 @@ void Display_brush_Color_zoom_Double(word Pos_X,word Pos_Y, // On affiche facteur fois la ligne zoomée for(bx=Loupe_Facteur;bx>0;bx--) { - Afficher_une_ligne_transparente_a_l_ecran_Wide(Pos_X,DX*ZOOMX,Largeur*Loupe_Facteur,Buffer,Couleur_de_transparence); + Afficher_une_ligne_transparente_a_l_ecran_Wide(Pos_X,y*ZOOMX,Largeur*Loupe_Facteur,Buffer,Couleur_de_transparence); // TODO: pas clair ici - memcpy(Ecran + (DX*ZOOMY+1)*ZOOMX*Largeur_ecran + Pos_X*ZOOMX, Ecran + DX*ZOOMX*ZOOMY*Largeur_ecran + Pos_X*ZOOMX, Largeur*ZOOMX*Loupe_Facteur); - DX++; - if(DX==Pos_Y_Fin) + memcpy(Ecran + (y*ZOOMY+1)*ZOOMX*Largeur_ecran + Pos_X*ZOOMX, Ecran + y*ZOOMX*ZOOMY*Largeur_ecran + Pos_X*ZOOMX, Largeur*ZOOMX*Loupe_Facteur); + y++; + if(y==Pos_Y_Fin) { return; } @@ -422,7 +422,7 @@ void Display_brush_Mono_zoom_Double(word Pos_X, word Pos_Y, { byte* Src = Brosse + Decalage_Y * Largeur_brosse + Decalage_X; - int DX=Pos_Y*ZOOMY; + int y=Pos_Y*ZOOMY; //Pour chaque ligne à zoomer : while(1) @@ -441,13 +441,13 @@ void Display_brush_Mono_zoom_Double(word Pos_X, word Pos_Y, { // On affiche la ligne zoomée Afficher_une_ligne_transparente_mono_a_l_ecran_Double( - Pos_X, DX, Largeur * Loupe_Facteur, + Pos_X, y, Largeur * Loupe_Facteur, Buffer, Couleur_de_transparence, Couleur ); // On passe à la ligne suivante - DX++; + y++; // On vérifie qu'on est pas à la ligne finale - if(DX == Pos_Y_Fin*ZOOMX) + if(y == Pos_Y_Fin*ZOOMX) { UpdateRect( Pos_X, Pos_Y, Largeur * Loupe_Facteur, Pos_Y_Fin - Pos_Y ); @@ -467,7 +467,7 @@ void Clear_brush_zoom_Double(word Pos_X,word Pos_Y,word Decalage_X,word Decalage // En fait on va recopier l'image non zoomée dans la partie zoomée ! byte* Src = Principal_Ecran + Decalage_Y * Largeur_image + Decalage_X; - int DX = Pos_Y; + int y = Pos_Y; int bx; // Pour chaque ligne à zoomer @@ -479,12 +479,12 @@ void Clear_brush_zoom_Double(word Pos_X,word Pos_Y,word Decalage_X,word Decalage // Pour chaque ligne do{ // TODO a verifier - Afficher_une_ligne_ecran_fast_Double(Pos_X,DX, + Afficher_une_ligne_ecran_fast_Double(Pos_X,y, Largeur * Loupe_Facteur,Buffer); // Ligne suivante - DX++; - if(DX==Pos_Y_Fin) + y++; + if(y==Pos_Y_Fin) { UpdateRect(Pos_X,Pos_Y, Largeur*Loupe_Facteur,Pos_Y_Fin-Pos_Y); diff --git a/pxdouble.h b/pxdouble.h index 717b154e..be58fea3 100644 --- a/pxdouble.h +++ b/pxdouble.h @@ -39,6 +39,6 @@ void Display_brush_Color_zoom_Double (word Pos_X,word Pos_Y,word Decalage_X,word Decalage_Y,word Largeur,word Pos_Y_Fin,byte Couleur_de_transparence,word Largeur_brosse,byte * Buffer); void Display_brush_Mono_zoom_Double (word Pos_X,word Pos_Y,word Decalage_X,word Decalage_Y,word Largeur,word Pos_Y_Fin,byte Couleur_de_transparence,byte Couleur,word Largeur_brosse,byte * Buffer); void Clear_brush_zoom_Double (word Pos_X,word Pos_Y,word Decalage_X,word Decalage_Y,word Largeur,word Pos_Y_Fin,byte Couleur_de_transparence,word Largeur_image,byte * Buffer); - void Affiche_brosse_Double (byte * B, word Pos_X,word Pos_Y,word Decalage_X,word Decalage_Y,word Largeur,word Hauteur,byte Couleur_de_transparence,word Largeur_brosse); + void Affiche_brosse_Double (byte * brush, word Pos_X,word Pos_Y,word Decalage_X,word Decalage_Y,word Largeur,word Hauteur,byte Couleur_de_transparence,word Largeur_brosse); void Afficher_une_ligne_ecran_fast_Double (word Pos_X,word Pos_Y,word Largeur,byte * Ligne); diff --git a/pxsimple.c b/pxsimple.c index 79448aa9..279f2632 100644 --- a/pxsimple.c +++ b/pxsimple.c @@ -56,9 +56,9 @@ void Afficher_partie_de_l_ecran_Simple (word Largeur,word Hauteur,word Largeur_i { byte* Dest=Ecran; //On va se mettre en 0,0 dans l'écran (Dest) byte* Src=Principal_Decalage_Y*Largeur_image+Principal_Decalage_X+Principal_Ecran; //Coords de départ ds la source (Src) - int dx; + int y; - for(dx=Hauteur;dx!=0;dx--) + for(y=Hauteur;y!=0;y--) // Pour chaque ligne { // On fait une copie de la ligne @@ -122,11 +122,11 @@ void Ligne_horizontale_XOR_Simple(word Pos_X,word Pos_Y,word Largeur) void Ligne_verticale_XOR_Simple(word Pos_X,word Pos_Y,word Hauteur) { int i; - byte Color; + byte color; for (i=Pos_Y;i 0; DX--) + for(y = Hauteur;y > 0; y--) { // Pour chaque pixel - for(CX = Largeur;CX > 0; CX--) + for(x = Largeur;x > 0; x--) { // On vérifie que ce n'est pas la transparence if(*Src != Couleur_de_transparence) @@ -171,12 +171,12 @@ void Display_brush_Mono_Simple(word Pos_X, word Pos_Y, // l'écran byte* Src=Largeur_brosse*Decalage_Y+Decalage_X+Brosse; // Src = adr ds // la brosse - int dx,cx; + int x,y; - for(dx=Hauteur;dx!=0;dx--) + for(y=Hauteur;y!=0;y--) //Pour chaque ligne { - for(cx=Largeur;cx!=0;cx--) + for(x=Largeur;x!=0;x--) //Pour chaque pixel { if (*Src!=Couleur_de_transparence) @@ -198,9 +198,9 @@ void Clear_brush_Simple(word Pos_X,word Pos_Y,__attribute__((unused)) word Decal { byte* Dest=Ecran+Pos_X+Pos_Y*Largeur_ecran; //On va se mettre en 0,0 dans l'écran (Dest) byte* Src = ( Pos_Y + Principal_Decalage_Y ) * Largeur_image + Pos_X + Principal_Decalage_X + Principal_Ecran; //Coords de départ ds la source (Src) - int dx; + int y; - for(dx=Hauteur;dx!=0;dx--) + for(y=Hauteur;y!=0;y--) // Pour chaque ligne { // On fait une copie de la ligne @@ -214,20 +214,20 @@ void Clear_brush_Simple(word Pos_X,word Pos_Y,__attribute__((unused)) word Decal } // Affiche une brosse (arbitraire) à l'écran -void Affiche_brosse_Simple(byte * B, word Pos_X,word Pos_Y,word Decalage_X,word Decalage_Y,word Largeur,word Hauteur,byte Couleur_de_transparence,word Largeur_brosse) +void Affiche_brosse_Simple(byte * brush, word Pos_X,word Pos_Y,word Decalage_X,word Decalage_Y,word Largeur,word Hauteur,byte Couleur_de_transparence,word Largeur_brosse) { // Dest = Position à l'écran byte* Dest = Ecran + Pos_Y * Largeur_ecran + Pos_X; // Src = Position dans la brosse - byte* Src = B + Decalage_Y * Largeur_brosse + Decalage_X; + byte* Src = brush + Decalage_Y * Largeur_brosse + Decalage_X; - word DX,CX; + word x,y; // Pour chaque ligne - for(DX = Hauteur;DX > 0; DX--) + for(y = Hauteur;y > 0; y--) { // Pour chaque pixel - for(CX = Largeur;CX > 0; CX--) + for(x = Largeur;x > 0; x--) { // On vérifie que ce n'est pas la transparence if(*Src != Couleur_de_transparence) @@ -249,13 +249,13 @@ void Remap_screen_Simple(word Pos_X,word Pos_Y,word Largeur,word Hauteur,byte * { // Dest = coords a l'écran byte* Dest = Ecran + Pos_Y * Largeur_ecran + Pos_X; - int dx,cx; + int x,y; // Pour chaque ligne - for(dx=Hauteur;dx>0;dx--) + for(y=Hauteur;y>0;y--) { // Pour chaque pixel - for(cx=Largeur;cx>0;cx--) + for(x=Largeur;x>0;x--) { *Dest = Table_de_conversion[*Dest]; Dest ++; @@ -280,9 +280,9 @@ void Afficher_une_ligne_transparente_mono_a_l_ecran_Simple( // Utilisé par les brosses en mode zoom { byte* Dest = Ecran+ Pos_Y * Largeur_ecran + Pos_X; - int Compteur; + int x; // Pour chaque pixel - for(Compteur=0;Compteur 0); + x--; + }while (x > 0); Src += Largeur_image; } // ATTENTION on n'arrive jamais ici ! @@ -341,10 +341,10 @@ void Afficher_une_ligne_transparente_a_l_ecran_Simple(word Pos_X,word Pos_Y,word byte* Src = Ligne; byte* Dest = Ecran + Pos_Y * Largeur_ecran + Pos_X; - word cx; + word x; // Pour chaque pixel de la ligne - for(cx = Largeur;cx > 0;cx--) + for(x = Largeur;x > 0;x--) { if(*Src!=Couleur_transparence) *Dest = *Src; @@ -362,7 +362,7 @@ void Display_brush_Color_zoom_Simple(word Pos_X,word Pos_Y, byte * Buffer) { byte* Src = Brosse+Decalage_Y*Largeur_brosse + Decalage_X; - word DX = Pos_Y; + word y = Pos_Y; byte bx; // Pour chaque ligne @@ -372,9 +372,9 @@ void Display_brush_Color_zoom_Simple(word Pos_X,word Pos_Y, // On affiche facteur fois la ligne zoomée for(bx=Loupe_Facteur;bx>0;bx--) { - Afficher_une_ligne_transparente_a_l_ecran_Simple(Pos_X,DX,Largeur*Loupe_Facteur,Buffer,Couleur_de_transparence); - DX++; - if(DX==Pos_Y_Fin) + Afficher_une_ligne_transparente_a_l_ecran_Simple(Pos_X,y,Largeur*Loupe_Facteur,Buffer,Couleur_de_transparence); + y++; + if(y==Pos_Y_Fin) { return; } @@ -395,7 +395,7 @@ void Display_brush_Mono_zoom_Simple(word Pos_X, word Pos_Y, { byte* Src = Brosse + Decalage_Y * Largeur_brosse + Decalage_X; - int DX=Pos_Y; + int y=Pos_Y; //Pour chaque ligne à zoomer : while(1) @@ -414,13 +414,13 @@ void Display_brush_Mono_zoom_Simple(word Pos_X, word Pos_Y, { // On affiche la ligne zoomée Afficher_une_ligne_transparente_mono_a_l_ecran_Simple( - Pos_X, DX, Largeur * Loupe_Facteur, + Pos_X, y, Largeur * Loupe_Facteur, Buffer, Couleur_de_transparence, Couleur ); // On passe à la ligne suivante - DX++; + y++; // On vérifie qu'on est pas à la ligne finale - if(DX == Pos_Y_Fin) + if(y == Pos_Y_Fin) { UpdateRect( Pos_X, Pos_Y, Largeur * Loupe_Facteur, Pos_Y_Fin - Pos_Y ); @@ -439,7 +439,7 @@ void Clear_brush_zoom_Simple(word Pos_X,word Pos_Y,word Decalage_X,word Decalage { // En fait on va recopier l'image non zoomée dans la partie zoomée ! byte* Src = Principal_Ecran + Decalage_Y * Largeur_image + Decalage_X; - int DX = Pos_Y; + int y = Pos_Y; int bx; // Pour chaque ligne à zoomer @@ -450,12 +450,12 @@ void Clear_brush_zoom_Simple(word Pos_X,word Pos_Y,word Decalage_X,word Decalage // Pour chaque ligne do{ - Afficher_une_ligne_ecran_Simple(Pos_X,DX, + Afficher_une_ligne_ecran_Simple(Pos_X,y, Largeur * Loupe_Facteur,Buffer); // Ligne suivante - DX++; - if(DX==Pos_Y_Fin) + y++; + if(y==Pos_Y_Fin) { UpdateRect(Pos_X,Pos_Y, Largeur*Loupe_Facteur,Pos_Y_Fin-Pos_Y); diff --git a/pxsimple.h b/pxsimple.h index 47ad2ad2..7a6195f3 100644 --- a/pxsimple.h +++ b/pxsimple.h @@ -39,7 +39,7 @@ void Display_brush_Color_zoom_Simple (word Pos_X,word Pos_Y,word Decalage_X,word Decalage_Y,word Largeur,word Pos_Y_Fin,byte Couleur_de_transparence,word Largeur_brosse,byte * Buffer); void Display_brush_Mono_zoom_Simple (word Pos_X,word Pos_Y,word Decalage_X,word Decalage_Y,word Largeur,word Pos_Y_Fin,byte Couleur_de_transparence,byte Couleur,word Largeur_brosse,byte * Buffer); void Clear_brush_zoom_Simple (word Pos_X,word Pos_Y,word Decalage_X,word Decalage_Y,word Largeur,word Pos_Y_Fin,byte Couleur_de_transparence,word Largeur_image,byte * Buffer); - void Affiche_brosse_Simple (byte * B, word Pos_X,word Pos_Y,word Decalage_X,word Decalage_Y,word Largeur,word Hauteur,byte Couleur_de_transparence,word Largeur_brosse); + void Affiche_brosse_Simple (byte * brush, word Pos_X,word Pos_Y,word Decalage_X,word Decalage_Y,word Largeur,word Hauteur,byte Couleur_de_transparence,word Largeur_brosse); void Afficher_une_ligne_transparente_mono_a_l_ecran_Simple( word Pos_X, word Pos_Y, word Largeur, byte* Ligne, diff --git a/pxtall.c b/pxtall.c index 92879709..eeb02659 100644 --- a/pxtall.c +++ b/pxtall.c @@ -58,9 +58,9 @@ void Afficher_partie_de_l_ecran_Tall (word Largeur,word Hauteur,word Largeur_ima { byte* Dest=Ecran; //On va se mettre en 0,0 dans l'écran (Dest) byte* Src=Principal_Decalage_Y*Largeur_image+Principal_Decalage_X+Principal_Ecran; //Coords de départ ds la source (Src) - int dx; + int y; - for(dx=Hauteur;dx!=0;dx--) + for(y=Hauteur;y!=0;y--) // Pour chaque ligne { // On fait une copie de la ligne @@ -130,11 +130,11 @@ void Ligne_horizontale_XOR_Tall(word Pos_X,word Pos_Y,word Largeur) void Ligne_verticale_XOR_Tall(word Pos_X,word Pos_Y,word Hauteur) { int i; - byte Color; + byte color; for (i=Pos_Y*2;i<(Pos_Y+Hauteur)*2;i++) { - Color=*(Ecran+Pos_X+i*Largeur_ecran); - *(Ecran+Pos_X+i*Largeur_ecran)=~Color; + color=*(Ecran+Pos_X+i*Largeur_ecran); + *(Ecran+Pos_X+i*Largeur_ecran)=~color; } } @@ -145,13 +145,13 @@ void Display_brush_Color_Tall(word Pos_X,word Pos_Y,word Decalage_X,word Decalag // Src = Position dans la brosse byte* Src = Brosse + Decalage_Y * Largeur_brosse + Decalage_X; - word DX,CX; + word x,y; // Pour chaque ligne - for(DX = Hauteur;DX > 0; DX--) + for(y = Hauteur;y > 0; y--) { // Pour chaque pixel - for(CX = Largeur;CX > 0; CX--) + for(x = Largeur;x > 0; x--) { // On vérifie que ce n'est pas la transparence if(*Src != Couleur_de_transparence) @@ -180,12 +180,12 @@ void Display_brush_Mono_Tall(word Pos_X, word Pos_Y, // l'écran byte* Src=Largeur_brosse*Decalage_Y+Decalage_X+Brosse; // Src = adr ds // la brosse - int dx,cx; + int x,y; - for(dx=Hauteur;dx!=0;dx--) + for(y=Hauteur;y!=0;y--) //Pour chaque ligne { - for(cx=Largeur;cx!=0;cx--) + for(x=Largeur;x!=0;x--) //Pour chaque pixel { if (*Src!=Couleur_de_transparence) @@ -210,9 +210,9 @@ void Clear_brush_Tall(word Pos_X,word Pos_Y,__attribute__((unused)) word Decalag { byte* Dest=Ecran+Pos_X+Pos_Y*2*Largeur_ecran; //On va se mettre en 0,0 dans l'écran (Dest) byte* Src = ( Pos_Y + Principal_Decalage_Y ) * Largeur_image + Pos_X + Principal_Decalage_X + Principal_Ecran; //Coords de départ ds la source (Src) - int dx; + int y; - for(dx=Hauteur;dx!=0;dx--) + for(y=Hauteur;y!=0;y--) // Pour chaque ligne { // On fait une copie de la ligne @@ -228,20 +228,20 @@ void Clear_brush_Tall(word Pos_X,word Pos_Y,__attribute__((unused)) word Decalag } // Affiche une brosse (arbitraire) à l'écran -void Affiche_brosse_Tall(byte * B, word Pos_X,word Pos_Y,word Decalage_X,word Decalage_Y,word Largeur,word Hauteur,byte Couleur_de_transparence,word Largeur_brosse) +void Affiche_brosse_Tall(byte * brush, word Pos_X,word Pos_Y,word Decalage_X,word Decalage_Y,word Largeur,word Hauteur,byte Couleur_de_transparence,word Largeur_brosse) { // Dest = Position à l'écran byte* Dest = Ecran + Pos_Y * 2 * Largeur_ecran + Pos_X; // Src = Position dans la brosse - byte* Src = B + Decalage_Y * Largeur_brosse + Decalage_X; + byte* Src = brush + Decalage_Y * Largeur_brosse + Decalage_X; - word DX,CX; + word x,y; // Pour chaque ligne - for(DX = Hauteur;DX > 0; DX--) + for(y = Hauteur;y > 0; y--) { // Pour chaque pixel - for(CX = Largeur;CX > 0; CX--) + for(x = Largeur;x > 0; x--) { // On vérifie que ce n'est pas la transparence if(*Src != Couleur_de_transparence) @@ -264,13 +264,13 @@ void Remap_screen_Tall(word Pos_X,word Pos_Y,word Largeur,word Hauteur,byte * Ta { // Dest = coords a l'écran byte* Dest = Ecran + Pos_Y * 2 * Largeur_ecran + Pos_X; - int dx,cx; + int x,y; // Pour chaque ligne - for(dx=Hauteur*2;dx>0;dx--) + for(y=Hauteur*2;y>0;y--) { // Pour chaque pixel - for(cx=Largeur;cx>0;cx--) + for(x=Largeur;x>0;x--) { *Dest = Table_de_conversion[*Dest]; Dest ++; @@ -306,12 +306,12 @@ void Afficher_partie_de_l_ecran_zoomee_Tall( // Pour chaque ligne à zoomer while(1) { - int CX; + int x; // On éclate la ligne Zoomer_une_ligne(Src,Buffer,Loupe_Facteur,Largeur); // On l'affiche Facteur fois, sur des lignes consécutives - CX = Loupe_Facteur*2; + x = Loupe_Facteur*2; // Pour chaque ligne do{ // On affiche la ligne zoomée @@ -327,8 +327,8 @@ void Afficher_partie_de_l_ecran_zoomee_Tall( Largeur*Loupe_Facteur,Hauteur); return; } - CX--; - }while (CX > 0); + x--; + }while (x > 0); Src += Largeur_image; } // ATTENTION on n'arrive jamais ici ! @@ -343,7 +343,7 @@ void Display_brush_Color_zoom_Tall(word Pos_X,word Pos_Y, byte * Buffer) { byte* Src = Brosse+Decalage_Y*Largeur_brosse + Decalage_X; - word DX = Pos_Y; + word y = Pos_Y; byte bx; // Pour chaque ligne @@ -353,10 +353,10 @@ void Display_brush_Color_zoom_Tall(word Pos_X,word Pos_Y, // On affiche facteur fois la ligne zoomée for(bx=Loupe_Facteur;bx>0;bx--) { - Afficher_une_ligne_transparente_a_l_ecran_Simple(Pos_X,DX*2,Largeur*Loupe_Facteur,Buffer,Couleur_de_transparence); - memcpy(Ecran + (DX*2 +1) * Largeur_ecran + Pos_X, Ecran + DX*2* Largeur_ecran + Pos_X, Largeur*Loupe_Facteur); - DX++; - if(DX==Pos_Y_Fin) + Afficher_une_ligne_transparente_a_l_ecran_Simple(Pos_X,y*2,Largeur*Loupe_Facteur,Buffer,Couleur_de_transparence); + memcpy(Ecran + (y*2 +1) * Largeur_ecran + Pos_X, Ecran + y*2* Largeur_ecran + Pos_X, Largeur*Loupe_Facteur); + y++; + if(y==Pos_Y_Fin) { return; } @@ -377,7 +377,7 @@ void Display_brush_Mono_zoom_Tall(word Pos_X, word Pos_Y, { byte* Src = Brosse + Decalage_Y * Largeur_brosse + Decalage_X; - int DX=Pos_Y*2; + int y=Pos_Y*2; //Pour chaque ligne à zoomer : while(1) @@ -396,13 +396,13 @@ void Display_brush_Mono_zoom_Tall(word Pos_X, word Pos_Y, { // On affiche la ligne zoomée Afficher_une_ligne_transparente_mono_a_l_ecran_Simple( - Pos_X, DX, Largeur * Loupe_Facteur, + Pos_X, y, Largeur * Loupe_Facteur, Buffer, Couleur_de_transparence, Couleur ); // On passe à la ligne suivante - DX++; + y++; // On vérifie qu'on est pas à la ligne finale - if(DX == Pos_Y_Fin*2) + if(y == Pos_Y_Fin*2) { UpdateRect( Pos_X, Pos_Y, Largeur * Loupe_Facteur, Pos_Y_Fin - Pos_Y ); @@ -421,7 +421,7 @@ void Clear_brush_zoom_Tall(word Pos_X,word Pos_Y,word Decalage_X,word Decalage_Y { // En fait on va recopier l'image non zoomée dans la partie zoomée ! byte* Src = Principal_Ecran + Decalage_Y * Largeur_image + Decalage_X; - int DX = Pos_Y; + int y = Pos_Y; int bx; // Pour chaque ligne à zoomer @@ -432,12 +432,12 @@ void Clear_brush_zoom_Tall(word Pos_X,word Pos_Y,word Decalage_X,word Decalage_Y // Pour chaque ligne do{ - Afficher_une_ligne_ecran_Tall(Pos_X,DX, + Afficher_une_ligne_ecran_Tall(Pos_X,y, Largeur * Loupe_Facteur,Buffer); // Ligne suivante - DX++; - if(DX==Pos_Y_Fin) + y++; + if(y==Pos_Y_Fin) { UpdateRect(Pos_X,Pos_Y, Largeur*Loupe_Facteur,Pos_Y_Fin-Pos_Y); diff --git a/pxtall.h b/pxtall.h index 058327a6..d9d64e1c 100644 --- a/pxtall.h +++ b/pxtall.h @@ -39,4 +39,4 @@ void Display_brush_Color_zoom_Tall (word Pos_X,word Pos_Y,word Decalage_X,word Decalage_Y,word Largeur,word Pos_Y_Fin,byte Couleur_de_transparence,word Largeur_brosse,byte * Buffer); void Display_brush_Mono_zoom_Tall (word Pos_X,word Pos_Y,word Decalage_X,word Decalage_Y,word Largeur,word Pos_Y_Fin,byte Couleur_de_transparence,byte Couleur,word Largeur_brosse,byte * Buffer); void Clear_brush_zoom_Tall (word Pos_X,word Pos_Y,word Decalage_X,word Decalage_Y,word Largeur,word Pos_Y_Fin,byte Couleur_de_transparence,word Largeur_image,byte * Buffer); - void Affiche_brosse_Tall (byte * B, word Pos_X,word Pos_Y,word Decalage_X,word Decalage_Y,word Largeur,word Hauteur,byte Couleur_de_transparence,word Largeur_brosse); + void Affiche_brosse_Tall (byte * brush, word Pos_X,word Pos_Y,word Decalage_X,word Decalage_Y,word Largeur,word Hauteur,byte Couleur_de_transparence,word Largeur_brosse); diff --git a/pxwide.c b/pxwide.c index f4b1cd93..3a51f182 100644 --- a/pxwide.c +++ b/pxwide.c @@ -57,10 +57,10 @@ void Afficher_partie_de_l_ecran_Wide (word Largeur,word Hauteur,word Largeur_ima { byte* Dest=Ecran; //On va se mettre en 0,0 dans l'écran (Dest) byte* Src=Principal_Decalage_Y*Largeur_image+Principal_Decalage_X+Principal_Ecran; //Coords de départ ds la source (Src) - int dx; + int y; int dy; - for(dx=Hauteur;dx!=0;dx--) + for(y=Hauteur;y!=0;y--) // Pour chaque ligne { // On fait une copie de la ligne @@ -129,13 +129,13 @@ void Ligne_horizontale_XOR_Wide(word Pos_X,word Pos_Y,word Largeur) void Ligne_verticale_XOR_Wide(word Pos_X,word Pos_Y,word Hauteur) { int i; - byte Color; + byte color; byte *Dest=Ecran+Pos_X*2+Pos_Y*Largeur_ecran*2; for (i=Hauteur;i>0;i--) { - Color=~*Dest; - *Dest=Color; - *(Dest+1)=Color; + color=~*Dest; + *Dest=color; + *(Dest+1)=color; Dest+=Largeur_ecran*2; } } @@ -147,13 +147,13 @@ void Display_brush_Color_Wide(word Pos_X,word Pos_Y,word Decalage_X,word Decalag // Src = Position dans la brosse byte* Src = Brosse + Decalage_Y * Largeur_brosse + Decalage_X; - word DX,CX; + word x,y; // Pour chaque ligne - for(DX = Hauteur;DX > 0; DX--) + for(y = Hauteur;y > 0; y--) { // Pour chaque pixel - for(CX = Largeur;CX > 0; CX--) + for(x = Largeur;x > 0; x--) { // On vérifie que ce n'est pas la transparence if(*Src != Couleur_de_transparence) @@ -182,12 +182,12 @@ void Display_brush_Mono_Wide(word Pos_X, word Pos_Y, // l'écran byte* Src=Largeur_brosse*Decalage_Y+Decalage_X+Brosse; // Src = adr ds // la brosse - int dx,cx; + int x,y; - for(dx=Hauteur;dx!=0;dx--) + for(y=Hauteur;y!=0;y--) //Pour chaque ligne { - for(cx=Largeur;cx!=0;cx--) + for(x=Largeur;x!=0;x--) //Pour chaque pixel { if (*Src!=Couleur_de_transparence) @@ -209,13 +209,13 @@ void Clear_brush_Wide(word Pos_X,word Pos_Y,__attribute__((unused)) word Decalag { byte* Dest=Ecran+Pos_X*2+Pos_Y*2*Largeur_ecran; //On va se mettre en 0,0 dans l'écran (Dest) byte* Src = ( Pos_Y + Principal_Decalage_Y ) * Largeur_image + Pos_X + Principal_Decalage_X + Principal_Ecran; //Coords de départ ds la source (Src) - int dx; - int cx; + int y; + int x; - for(dx=Hauteur;dx!=0;dx--) + for(y=Hauteur;y!=0;y--) // Pour chaque ligne { - for(cx=Largeur;cx!=0;cx--) + for(x=Largeur;x!=0;x--) //Pour chaque pixel { *(Dest+1)=*Dest=*Src; @@ -233,20 +233,20 @@ void Clear_brush_Wide(word Pos_X,word Pos_Y,__attribute__((unused)) word Decalag } // Affiche une brosse (arbitraire) à l'écran -void Affiche_brosse_Wide(byte * B, word Pos_X,word Pos_Y,word Decalage_X,word Decalage_Y,word Largeur,word Hauteur,byte Couleur_de_transparence,word Largeur_brosse) +void Affiche_brosse_Wide(byte * brush, word Pos_X,word Pos_Y,word Decalage_X,word Decalage_Y,word Largeur,word Hauteur,byte Couleur_de_transparence,word Largeur_brosse) { // Dest = Position à l'écran byte* Dest = Ecran + Pos_Y * 2 * Largeur_ecran + Pos_X * 2; // Src = Position dans la brosse - byte* Src = B + Decalage_Y * Largeur_brosse + Decalage_X; + byte* Src = brush + Decalage_Y * Largeur_brosse + Decalage_X; - word DX,CX; + word x,y; // Pour chaque ligne - for(DX = Hauteur;DX > 0; DX--) + for(y = Hauteur;y > 0; y--) { // Pour chaque pixel - for(CX = Largeur;CX > 0; CX--) + for(x = Largeur;x > 0; x--) { // On vérifie que ce n'est pas la transparence if(*Src != Couleur_de_transparence) @@ -268,13 +268,13 @@ void Remap_screen_Wide(word Pos_X,word Pos_Y,word Largeur,word Hauteur,byte * Ta { // Dest = coords a l'écran byte* Dest = Ecran + Pos_Y * 2 * Largeur_ecran + Pos_X * 2; - int dx,cx; + int x,y; // Pour chaque ligne - for(dx=Hauteur;dx>0;dx--) + for(y=Hauteur;y>0;y--) { // Pour chaque pixel - for(cx=Largeur;cx>0;cx--) + for(x=Largeur;x>0;x--) { *(Dest+1) = *Dest = Table_de_conversion[*Dest]; Dest +=2; @@ -296,10 +296,10 @@ void Afficher_une_ligne_ecran_fast_Wide(word Pos_X,word Pos_Y,word Largeur,byte void Afficher_une_ligne_ecran_Wide(word Pos_X,word Pos_Y,word Largeur,byte * Ligne) /* On affiche une ligne de pixels en les doublant. */ { - int dx; + int x; byte *Dest; Dest=Ecran+Pos_X*2+Pos_Y*2*Largeur_ecran; - for(dx=Largeur;dx>0;dx--) + for(x=Largeur;x>0;x--) { *Dest=*Ligne; Dest++; @@ -315,9 +315,9 @@ void Afficher_une_ligne_transparente_mono_a_l_ecran_Wide( // Utilisé par les brosses en mode zoom { byte* Dest = Ecran+ Pos_Y*2 * Largeur_ecran + Pos_X*2; - int Compteur; + int x; // Pour chaque pixel - for(Compteur=0;Compteur 0); + x--; + }while (x > 0); Src += Largeur_image; } // ATTENTION on n'arrive jamais ici ! @@ -379,10 +379,10 @@ void Afficher_une_ligne_transparente_a_l_ecran_Wide(word Pos_X,word Pos_Y,word L byte* Src = Ligne; byte* Dest = Ecran + Pos_Y * 2 * Largeur_ecran + Pos_X * 2; - word cx; + word x; // Pour chaque pixel de la ligne - for(cx = Largeur;cx > 0;cx--) + for(x = Largeur;x > 0;x--) { if(*Src!=Couleur_transparence) { @@ -403,7 +403,7 @@ void Display_brush_Color_zoom_Wide(word Pos_X,word Pos_Y, byte * Buffer) { byte* Src = Brosse+Decalage_Y*Largeur_brosse + Decalage_X; - word DX = Pos_Y; + word y = Pos_Y; byte bx; // Pour chaque ligne @@ -413,9 +413,9 @@ void Display_brush_Color_zoom_Wide(word Pos_X,word Pos_Y, // On affiche facteur fois la ligne zoomée for(bx=Loupe_Facteur;bx>0;bx--) { - Afficher_une_ligne_transparente_a_l_ecran_Wide(Pos_X,DX,Largeur*Loupe_Facteur,Buffer,Couleur_de_transparence); - DX++; - if(DX==Pos_Y_Fin) + Afficher_une_ligne_transparente_a_l_ecran_Wide(Pos_X,y,Largeur*Loupe_Facteur,Buffer,Couleur_de_transparence); + y++; + if(y==Pos_Y_Fin) { return; } @@ -436,7 +436,7 @@ void Display_brush_Mono_zoom_Wide(word Pos_X, word Pos_Y, { byte* Src = Brosse + Decalage_Y * Largeur_brosse + Decalage_X; - int DX=Pos_Y; + int y=Pos_Y; //Pour chaque ligne à zoomer : while(1) @@ -455,13 +455,13 @@ void Display_brush_Mono_zoom_Wide(word Pos_X, word Pos_Y, { // On affiche la ligne zoomée Afficher_une_ligne_transparente_mono_a_l_ecran_Wide( - Pos_X, DX, Largeur * Loupe_Facteur, + Pos_X, y, Largeur * Loupe_Facteur, Buffer, Couleur_de_transparence, Couleur ); // On passe à la ligne suivante - DX++; + y++; // On vérifie qu'on est pas à la ligne finale - if(DX == Pos_Y_Fin) + if(y == Pos_Y_Fin) { UpdateRect( Pos_X, Pos_Y, Largeur * Loupe_Facteur, Pos_Y_Fin - Pos_Y ); @@ -480,7 +480,7 @@ void Clear_brush_zoom_Wide(word Pos_X,word Pos_Y,word Decalage_X,word Decalage_Y { // En fait on va recopier l'image non zoomée dans la partie zoomée ! byte* Src = Principal_Ecran + Decalage_Y * Largeur_image + Decalage_X; - int DX = Pos_Y; + int y = Pos_Y; int bx; // Pour chaque ligne à zoomer @@ -491,12 +491,12 @@ void Clear_brush_zoom_Wide(word Pos_X,word Pos_Y,word Decalage_X,word Decalage_Y // Pour chaque ligne do{ - Afficher_une_ligne_ecran_fast_Wide(Pos_X,DX, + Afficher_une_ligne_ecran_fast_Wide(Pos_X,y, Largeur * Loupe_Facteur,Buffer); // Ligne suivante - DX++; - if(DX==Pos_Y_Fin) + y++; + if(y==Pos_Y_Fin) { UpdateRect(Pos_X,Pos_Y, Largeur*Loupe_Facteur,Pos_Y_Fin-Pos_Y); diff --git a/pxwide.h b/pxwide.h index bb68c622..c1981559 100644 --- a/pxwide.h +++ b/pxwide.h @@ -39,7 +39,7 @@ void Display_brush_Color_zoom_Wide (word Pos_X,word Pos_Y,word Decalage_X,word Decalage_Y,word Largeur,word Pos_Y_Fin,byte Couleur_de_transparence,word Largeur_brosse,byte * Buffer); void Display_brush_Mono_zoom_Wide (word Pos_X,word Pos_Y,word Decalage_X,word Decalage_Y,word Largeur,word Pos_Y_Fin,byte Couleur_de_transparence,byte Couleur,word Largeur_brosse,byte * Buffer); void Clear_brush_zoom_Wide (word Pos_X,word Pos_Y,word Decalage_X,word Decalage_Y,word Largeur,word Pos_Y_Fin,byte Couleur_de_transparence,word Largeur_image,byte * Buffer); - void Affiche_brosse_Wide (byte * B, word Pos_X,word Pos_Y,word Decalage_X,word Decalage_Y,word Largeur,word Hauteur,byte Couleur_de_transparence,word Largeur_brosse); + void Affiche_brosse_Wide (byte * brush, word Pos_X,word Pos_Y,word Decalage_X,word Decalage_Y,word Largeur,word Hauteur,byte Couleur_de_transparence,word Largeur_brosse); void Afficher_une_ligne_ecran_fast_Wide (word Pos_X,word Pos_Y,word Largeur,byte * Ligne); void Afficher_une_ligne_transparente_a_l_ecran_Wide(word Pos_X,word Pos_Y,word Largeur,byte* Ligne,byte Couleur_transparence); diff --git a/readini.c b/readini.c index 845448b7..0afac58a 100644 --- a/readini.c +++ b/readini.c @@ -104,7 +104,7 @@ int Charger_INI_Seek_pattern(char * Buffer,char * Pattern) -int Charger_INI_Reach_group(FILE * File,char * Buffer,char * Group) +int Charger_INI_Reach_group(FILE * file,char * Buffer,char * Group) { int Arret; char * Group_upper; @@ -122,7 +122,7 @@ int Charger_INI_Reach_group(FILE * File,char * Buffer,char * Group) do { // On lit une ligne dans le fichier: - if (fgets(Buffer,1024,File)==0) + if (fgets(Buffer,1024,file)==0) { free(Buffer_upper); free(Group_upper); @@ -146,7 +146,7 @@ int Charger_INI_Reach_group(FILE * File,char * Buffer,char * Group) return 0; } -int Charger_INI_Get_string(FILE * File,char * Buffer,char * Option,char * Retour) +int Charger_INI_Get_string(FILE * file,char * Buffer,char * Option,char * Retour) { int Arret; char * Option_upper; @@ -165,7 +165,7 @@ int Charger_INI_Get_string(FILE * File,char * Buffer,char * Option,char * Retour do { // On lit une ligne dans le fichier: - if (fgets(Buffer,1024,File)==0) + if (fgets(Buffer,1024,file)==0) { free(Buffer_upper); free(Option_upper); @@ -317,7 +317,7 @@ int Charger_INI_Get_value(char * String,int * Index,int * Value) -int Charger_INI_Get_values(FILE * File,char * Buffer,char * Option,int Nb_values_expected,int * Values) +int Charger_INI_Get_values(FILE * file,char * Buffer,char * Option,int Nb_values_expected,int * Values) { int Arret; char * Option_upper; @@ -337,7 +337,7 @@ int Charger_INI_Get_values(FILE * File,char * Buffer,char * Option,int Nb_values do { // On lit une ligne dans le fichier: - if (fgets(Buffer,1024,File)==0) + if (fgets(Buffer,1024,file)==0) { free(Buffer_upper); free(Option_upper); @@ -397,7 +397,7 @@ int Charger_INI_Get_values(FILE * File,char * Buffer,char * Option,int Nb_values -int Charger_INI(struct S_Config * Conf) +int Charger_INI(T_Config * Conf) { FILE * Fichier; char * Buffer; diff --git a/readini.h b/readini.h index 19c23a8f..15df58d8 100644 --- a/readini.h +++ b/readini.h @@ -18,6 +18,6 @@ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -int Charger_INI(struct S_Config * Conf); +int Charger_INI(T_Config * Conf); int Charger_INI_Seek_pattern(char * Buffer,char * Pattern); void Charger_INI_Clear_string(char * String); diff --git a/readline.c b/readline.c index ac30659c..5666464a 100644 --- a/readline.c +++ b/readline.c @@ -71,7 +71,7 @@ void Inserer_caractere(char * Chaine, char Lettre, byte Position) Chaine[Position]='\0'; } -int CaractereValide(int Caractere) +int CaractereValide(int c) { // Sous Linux: Seul le / est strictement interdit, mais beaucoup // d'autres poseront des problèmes au shell, alors on évite. @@ -86,11 +86,11 @@ int CaractereValide(int Caractere) #endif int Position; - if (Caractere < ' ' || Caractere > 255) + if (c < ' ' || c > 255) return 0; for (Position=0; Position<(long)sizeof(CaracteresInterdits); Position++) - if (Caractere == CaracteresInterdits[Position]) + if (c == CaracteresInterdits[Position]) return 0; return 1; } diff --git a/saveini.c b/saveini.c index 149b7182..39abb535 100644 --- a/saveini.c +++ b/saveini.c @@ -387,7 +387,7 @@ void Sauver_INI_Flush(FILE * Old_file,FILE * New_file,char * Buffer) -int Sauver_INI(struct S_Config * Conf) +int Sauver_INI(T_Config * Conf) { FILE * Ancien_fichier; FILE * Nouveau_fichier; diff --git a/saveini.h b/saveini.h index 9009797c..43e9fde4 100644 --- a/saveini.h +++ b/saveini.h @@ -18,4 +18,4 @@ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -int Sauver_INI(struct S_Config * Conf); +int Sauver_INI(T_Config * Conf); diff --git a/shade.c b/shade.c index 9a25f6ca..b4b4c90d 100644 --- a/shade.c +++ b/shade.c @@ -67,7 +67,7 @@ void Bouton_Quick_shade_Mode(void) void Shade_Blocs_degrades(void) { - word Curseur=0; + word cursor=0; word Nb_shades=0; short Shade_traite,Ancien_shade_traite; word Taille_shade=0; @@ -77,17 +77,17 @@ void Shade_Blocs_degrades(void) short Debut_X,Debut_Y,Fin_X,Fin_Y; // On commence par compter le nombre de shades - while (Curseur<512) + while (cursor<512) { - while ((Curseur<512) && (Shade_Liste[Shade_Actuel].Liste[Curseur]&0xFF00)) - Curseur++; + while ((cursor<512) && (Shade_Liste[Shade_Actuel].Liste[cursor]&0xFF00)) + cursor++; - if (Curseur<512) + if (cursor<512) { Nb_shades++; - while ( (Curseur<512) - && (!(Shade_Liste[Shade_Actuel].Liste[Curseur]&0xFF00)) ) - Curseur++; + while ( (cursor<512) + && (!(Shade_Liste[Shade_Actuel].Liste[cursor]&0xFF00)) ) + cursor++; } } @@ -101,7 +101,7 @@ void Shade_Blocs_degrades(void) Fin_X=Debut_X+Taille_X; Fin_Y=Debut_Y+Taille_Y; - Curseur=0; + cursor=0; Ancien_shade_traite=-1; for (Pos_Y=Debut_Y;Pos_YAncien_shade_traite) { // On commence par sauter tous les vides jusqu'au prochain shade - while ((Curseur<512) && (Shade_Liste[Shade_Actuel].Liste[Curseur]&0xFF00)) - Curseur++; - Debut_shade=Curseur; + while ((cursor<512) && (Shade_Liste[Shade_Actuel].Liste[cursor]&0xFF00)) + cursor++; + Debut_shade=cursor; // puis regarde sa taille - while ((Curseur<512) && (!(Shade_Liste[Shade_Actuel].Liste[Curseur]&0xFF00))) - Curseur++; - Taille_shade=Curseur-Debut_shade; + while ((cursor<512) && (!(Shade_Liste[Shade_Actuel].Liste[cursor]&0xFF00))) + cursor++; + Taille_shade=cursor-Debut_shade; Ancien_shade_traite=Shade_traite; } @@ -283,7 +283,7 @@ void Supprimer_shade(word Select_Debut,word Select_Fin) void Inserer_shade(byte Premiere_couleur, byte Derniere_couleur, word Select_Debut) { - word Curseur,Limite; + word cursor,Limite; word Temp; if (Derniere_couleur=512) Temp=512-Select_Debut; - for (Curseur=511;Curseur>=Limite;Curseur--) - Shade_Liste[Shade_Actuel].Liste[Curseur]=Shade_Liste[Shade_Actuel].Liste[Curseur-Temp]; + for (cursor=511;cursor>=Limite;cursor--) + Shade_Liste[Shade_Actuel].Liste[cursor]=Shade_Liste[Shade_Actuel].Liste[cursor-Temp]; - for (Curseur=Select_Debut+Temp;Select_Debut=512) return; - for (Curseur=511;Curseur>Position;Curseur--) - Shade_Liste[Shade_Actuel].Liste[Curseur]=Shade_Liste[Shade_Actuel].Liste[Curseur-1]; + for (cursor=511;cursor>Position;cursor--) + Shade_Liste[Shade_Actuel].Liste[cursor]=Shade_Liste[Shade_Actuel].Liste[cursor-1]; Shade_Liste[Shade_Actuel].Liste[Position]=0x0100; } @@ -450,7 +450,7 @@ int Menu_Shade(void) word * Buffer_Undo; // Buffer du Undo word * Pointeur_temp; byte Couleur; - byte Click; + byte click; Buffer =(word *)malloc(512*sizeof(word)); @@ -952,8 +952,8 @@ int Menu_Shade(void) case SDLK_BACKQUOTE : // Récupération d'une couleur derrière le menu case SDLK_COMMA : - Recuperer_couleur_derriere_fenetre(&Couleur,&Click); - if (Click) + Recuperer_couleur_derriere_fenetre(&Couleur,&click); + if (click) { Effacer_curseur(); Couleur_temporaire=Couleur; diff --git a/struct.h b/struct.h index e3753d0a..f20994f6 100644 --- a/struct.h +++ b/struct.h @@ -204,7 +204,50 @@ typedef struct word Touche2; } __attribute__((__packed__)) Config_Infos_touche; - +typedef struct +{ + byte Fonte; + int Lire_les_fichiers_caches; + int Lire_les_repertoires_caches; +// int Lire_les_repertoires_systemes; + byte Afficher_limites_image; + byte Curseur; + byte Maximize_preview; + byte Auto_set_res; + byte Coords_rel; + byte Backup; + byte Adjust_brush_pick; + byte Auto_save; + byte Nb_pages_Undo; + byte Indice_Sensibilite_souris_X; + byte Indice_Sensibilite_souris_Y; + byte Mouse_Facteur_de_correction_X; + byte Mouse_Facteur_de_correction_Y; + byte Mouse_Merge_movement; + byte Valeur_tempo_jauge_gauche; + byte Valeur_tempo_jauge_droite; + long Chrono_delay; + Composantes Coul_menu_pref[4]; + int Nb_max_de_vertex_par_polygon; + byte Clear_palette; + byte Set_resolution_according_to; + byte Ratio; + byte Fast_zoom; + byte Find_file_fast; + byte Couleurs_separees; + word Palette_Cells_X; + word Palette_Cells_Y; + byte FX_Feedback; + byte Safety_colors; + byte Opening_message; + byte Clear_with_stencil; + byte Auto_discontinuous; + byte Taille_ecran_dans_GIF; + byte Auto_nb_used; + byte Resolution_par_defaut; + char *Bookmark_directory[NB_BOOKMARKS]; // independant malloc of adaptive size + char Bookmark_label[NB_BOOKMARKS][8+1]; +} T_Config; // Structures utilisées pour les descriptions de pages et de liste de pages. // Lorsqu'on gèrera les animations, il faudra aussi des listes de listes de diff --git a/texte.c b/texte.c index ff7d5d2b..eae926b0 100644 --- a/texte.c +++ b/texte.c @@ -368,7 +368,7 @@ int Support_TrueType() #ifndef NOTTF -byte *Rendu_Texte_TTF(const char *Chaine, int Numero_fonte, int Taille, int AntiAlias, int Bold, int Italic, int *Largeur, int *Hauteur) +byte *Rendu_Texte_TTF(const char *Chaine, int Numero_fonte, int Taille, int antialias, int bold, int Italic, int *Largeur, int *Hauteur) { TTF_Font *Fonte; SDL_Surface * TexteColore; @@ -390,11 +390,11 @@ byte *Rendu_Texte_TTF(const char *Chaine, int Numero_fonte, int Taille, int Anti Style=0; if (Italic) Style|=TTF_STYLE_ITALIC; - if (Bold) + if (bold) Style|=TTF_STYLE_BOLD; TTF_SetFontStyle(Fonte, Style); // Couleurs - if (AntiAlias) + if (antialias) { Couleur_Avant = Conversion_couleur_SDL(Fore_color); Couleur_Arriere = Conversion_couleur_SDL(Back_color); @@ -407,7 +407,7 @@ byte *Rendu_Texte_TTF(const char *Chaine, int Numero_fonte, int Taille, int Anti // Rendu du texte: crée une surface SDL RGB 24bits - if (AntiAlias) + if (antialias) TexteColore=TTF_RenderText_Shaded(Fonte, Chaine, Couleur_Avant, Couleur_Arriere ); else TexteColore=TTF_RenderText_Solid(Fonte, Chaine, Couleur_Avant); @@ -429,7 +429,7 @@ byte *Rendu_Texte_TTF(const char *Chaine, int Numero_fonte, int Taille, int Anti TTF_CloseFont(Fonte); return NULL; } - if (!AntiAlias) + if (!antialias) { // Mappage des couleurs for (Indice=0; Indice < Texte8Bit->w * Texte8Bit->h; Indice++) @@ -501,7 +501,7 @@ byte *Rendu_Texte_SFont(const char *Chaine, int Numero_fonte, int *Largeur, int // Crée une brosse à partir des paramètres de texte demandés. // Si cela réussit, la fonction place les dimensions dans Largeur et Hauteur, // et retourne l'adresse du bloc d'octets. -byte *Rendu_Texte(const char *Chaine, int Numero_fonte, int Taille, int AntiAlias, int Bold, int Italic, int *Largeur, int *Hauteur) +byte *Rendu_Texte(const char *Chaine, int Numero_fonte, int Taille, int antialias, int bold, int Italic, int *Largeur, int *Hauteur) { T_FONTE *Fonte = Liste_fontes_debut; int Indice=Numero_fonte; @@ -515,7 +515,7 @@ byte *Rendu_Texte(const char *Chaine, int Numero_fonte, int Taille, int AntiAlia if (Fonte->EstTrueType) { #ifndef NOTTF - return Rendu_Texte_TTF(Chaine, Numero_fonte, Taille, AntiAlias, Bold, Italic, Largeur, Hauteur); + return Rendu_Texte_TTF(Chaine, Numero_fonte, Taille, antialias, bold, Italic, Largeur, Hauteur); #else return NULL; #endif diff --git a/texte.h b/texte.h index 024c0307..efefdeef 100644 --- a/texte.h +++ b/texte.h @@ -27,7 +27,7 @@ int Support_TrueType(void); // Ajout d'une fonte à la liste. void Ajout_fonte(char *Nom); // Crée une brosse à partir des paramètres de texte demandés. -byte *Rendu_Texte(const char *Chaine, int Numero_fonte, int Taille, int AntiAlias, int Bold, int Italic, int *Largeur, int *Hauteur); +byte *Rendu_Texte(const char *Chaine, int Numero_fonte, int Taille, int antialias, int bold, int Italic, int *Largeur, int *Hauteur); // Trouve le libellé d'affichage d'une fonte par son numéro char * Libelle_fonte(int Indice); // Trouve le nom d'une fonte par son numéro diff --git a/translat/translations.xls b/translat/translations.xls index 1a3d4896ea312d800772099ba224484523ae58d0..50ba58cb9ec8c195fcdcfd9fef02357a7101e250 100644 GIT binary patch literal 268288 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%0A>SDRNumsYq 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 literal 265216 zcmeFaON^{rcITDXzGaue?e?SFw2diF-Ez093YT@yxsSRfyW5V8jLZz*$c%JEUi*LkpML2d{X75pum9tNt^fYc!A~Fj-#_`egP$qj zU*r4zp9+9qJRtrjKT# z_P_rzpG@IDW)lCi_y1c><-z~Tzdt^B1RD-sP4AxlQ~U4G+AtI<9sKS0e*WM+!asfR zwS)I*;lIuIFC6@uweOeh@2}Y3|I||d*PiF#m&y5855D}}fA^c8@dZ{MT>aD^Sh~M& ze?PFlzrf%34*pBa^S>D6`N6Lr{CA}P$-nw<3ZMD!YwtA=;lb?SpIR&(->vuk zgP%W8tJJW4vA?-D_8ag21|#>+9UOe?x4-qR5C8bt2ge`$?jL_I2fp$CHyPF6sKx)? z-emmu>WMx$_}PPhAtd^p59{T`@HgK7t%I*0e6XFWEG;Mf-GlEQe0p$Deeb)^a$~CR z(Y7ssQhe~e53J?HSKs@C>U-aK|FeVd9DG#EULDtSTR3G7AaDO+%7&HQ?Z}I`@09dgUP}8;P1VofZsp(_n6M2fZw6+ch$Zf|Bd(C2md}T zePvO^D%jMide=6r2n88PtUKve{i6`-+2G4gZ~g5 zdZN;bN$@P1hTST2yizGXS6GjW)%|M+{}E`nr@HOoc&gg{>FU-0{=x6Rv(Nv^!GFvs zzOxaz^}9XKO~|SCH=rKxWAKj-{+iL$|NSS=?AQPNH_rqYRWtZMiBa!{Yj4<>{wcUh z-IxCV%kcNW%KV>?r}p@NBF=4VoPYKS_mK5jZJ5RuW`w94WpMd||Uby&8 zYyZ#J>rL>l*Wn6T`u8*Z-}3V!57-{}dkNzxt7I?Pm^- zC!6W)g&<$QgHr2{noBaQO9sK&U$G>rK@B{dnzjAPJyqK>i)%|4l zSgl`dg+JN~f6Taf`uXDFW;sdGtGBE5#8HGD;~>UJ`pte2BtA$B>L z+z;pD>TEHdJbzJrSiMleHE8v``fwj`Pf7~dP5ENC%oqF06mX|ZGVhit;7-bqX#Df- z+CSP?(MKxt=MD}|+Q(I6xty#SXnh}UZf_^czv_V|15yn~>&;~L3l3?`8ME1NG@1Of z4hS>xOCCCztgAWr#B_`&uxKi={h;Zbq>R;ivV54%Cz>e5cZREVb@O%|OFX}+Zl>#1 zDDix;c{Less>kV@$t<+@Vz^pOLi~l`)oL@(y{@Lcy2QF&H_UR5vyz4C~2cIjLH&z?=vAQ}vHJ23)PDi+T09oX$tn$Kh=9*OgL5 zfwHUWcDZ<{ZkC(Xy_y7kI)B`(HNwl`cr#SqRn#Fr;y3T0>klC63iKfDfSXPb0 z-T*9%!Q+co5o(_gilqJ4$;%=*X!XvRff)pBvS z96mfuICG^~kiK7arcmaJ<^Ra)U4a4h=nJ4*KySwuaCE<1%op3h#r$@9S2l<$$CI1Q zI=A=x^%`gNg~3?!Lz{dUR}htuP3??b`Sxzk_3%aokm_MGTTdUsUmFz7P#kBPAf%{X zvFaC^>LMbIB9x(oKQ1S)rjysKuszTUbl9q3HNCsH)w^W%wC5|x$+8*^mylRKZ4M%g zWu}%?;~~^xbw3=7T*fRG{;tC0W4oN+QO?xpY^FjLq~>P1fFGDG<~9Q)eq78*x(1s- zyJw*Uy0LaN8*eJ@zih2gFHMr6>Z=J`F}c7L5$VrCj=TAUt>#nKTnuUBtOvJZzt0ZS zIXnwH4CN>gwhs{ALl8DPJz8vLEZh~tEwJ|GYB_nFtXUJ*7eNO@dS=OQr!$RC2NotR zcZH`n6Q#Hnr$WG5_{p*(P9HiKN;PhK0MAu zFZSmi3}>?^BfkLco{aqAV)39^u|9$q>_DNZDN79+8u~<}HP^&0J?R(06z9L4WW zyLAqJ8hp^Y8njZNJ?L4Wb8*_J4qJnUVtOal<@sg5bp$WcsE&Hw_Ml~-CymSIX$ww8 zDW8Ym7a;gy_j1rZuUhBF-ScKE1A47agB*-xv(alb*{WMr|FVD4I`6l;=gevb4|?s! z`AMhc^|564M0x$t*=F~$)4J?c$L;26yVa}CyS=kUXHP`G)oC@wJfs}m^CLAU7C^9S zUiSKw2F}#LUg$Q|OH}(p5xv$$t2gMj>6+)*ALscPnwZZ4pi2e}E-#9(%@o8U##=Zx zmU(L4Z{}ZB;-i>}qt@Z&2}f-Ey<#MeTFnk)K46@yLF15t)$~*U(RB4V8@{ca6C*1K z(LN%p{eH~qJ=RPyx?s@{yWO+uqM`5O#^r$49k)BJ^Tt`Lf6-_Pb&fUk1NOf|wz&|< z83gmQSJharms7U==X+o;SVu8kVB`u&p!MI#X`EpR%uqF6E*{}D=TOL4NIk(^=f)XK z)Bb3&@oWW8mcQaq&EB$nvVhg&WCZ`F(FvWs(5YlAe9eMBIlg*Popic~hOH;PhQiIp zfJM@;`t6hRMyC(Poif%w1BWoN{T7J9s72^;``lsRb%dR@&Mz6V7`$k+4jY%?L4@=# zdMx9JJ}iN)h@)QnWvi$0zU%wSCcPYqdpa zXjKg6Rz=88tF|IytG2+Q+_T12b=Ey%=w5=`U6A{%H8=%OU0xhD1}$c^4yev9JA-!B zgC-cUfdXwM5b8EBNya+Zj_S19=Pg#lNeh`3^;V6}fYH!bbI|KRZS~ndZ66O9nX~TY z`Ji=F9W${5R>)E7B?LP{Pg;XBqR$69!PkLps3^(GLt!onW{VG;M^Dh7W9wbk0Mn%#3KJP1?3I^D)m9nx>S6vZHo zMtaZ{_3wk#0J;!8BQAX}SfkQs+c@efE$Bs>i}qEk(>EGI+*$jat^)QsrwvYaJ%0q+ zgoiRCtaW_c8idA1m@uGTTtF@#iqKYXM+i`HtJ!XJT78Hr?HKe##;S{6%dxrDN33?< zRjEiN{Gb&jN6c;a><|n;Z1fp>|Ms1cOx+tqXx*ENy1^eNwK{6|z>JH=;8erGj9hdt zdre{(rs`#@r|pj&{i4^s==O|8+tT^=!NDJ0HqHlHsf<^fO^pqa@79@ZFbz#yzty7z zx`s%i-|V$o=hbP&dhc8wwT>9gev3wc{j5sni(;s#f7+m!oQys|ZB85KM;*4$0Rti& z6<+wpdIWy7T76YggVVB}jo+Zr?$9=`AnwBqU4(bfm>~ka7PSW;BhhC03{Dx38YmH~ z0KH(3DKHHBGw9OJ1~jd@s)Z!&@#(GLO)k${ISl1wH83S1zSVE4eTKwP4fvb0_7UBu z?2y4v%mFPQ z0BQ4_O&_bPYPNVio4lILBILS+v=IM|kdAKVb|zwf+k#X#liLMiu+b11)ePJU;v1dG z?>KJG$IR}ziFvD|NoDf6l~$mGI_;wz&!K8&%(rNa#|O4mTr`kX#o1UVq|tN*fenHh zR$dg@NX!?%uSEfaxKL+2cDfjxBZA9kTPqu}q7H|L2*+0wPVkmAL#n`Y?1>4yhjk;A z5)zl7kgBYU(>QgBSgMt(OUK7D#dZEn}G>5=uZ1 zO2B+k-LkkCtpX~6lYwiw`>^PtvVp`ZtRv;I?}&OeSU@L@3hAz(6y13>tVR;WPLO{u ztM2FEssWc1WJ1V7su>APjHA9h4o5nn`Y;F$x{s6jbbePoAS8Bi9uSunBJOxVP&KiU ze3WoRgKi(y=8;qy;pOzM5{0u5NkR32VBci#@%vgE;Q0xPB5{lGE*Hb`bNji|%t?+& zH&zt7oPwrGEs)J6omF53eqRh{tbhKBD~H^Nuj=`yBgeG*lsOCw7nTQF82#^qn zu4tb~VFE9g(^r!Ta}yyhTV#AA03wCt>lM8-UMCERT15s@yI)zvOY zTWd`97>-zFSi8d6a5|4d;}}F?C?yUEW3e3QCX;y#vBRNN1WznZ@hxK(_@`z&OkyRuEqMUZF-(uaF~q z0@lfV#lldRMS_&@wW)k;l2itpxrEl5ZYy)NSS-iWIh&RgRSrwJ;0`3-8mE|@@dO|K zXd^9{iNs-K7LQvX^^6{rsRXLCF~Jezai%#~>~$xN5zqP{*-u`bcZn zqs^Lu)4H9DPCf&#_|h(<=Fv znbbo&id3s1JKCf=wYdh1nk?)$&~8L35R>L?Lq|kX!x#EZfl*7&=OUubq%+qVZf;PH zK*gJ`c(1OpGB_gh(F7IIc;cDa2iL>ukYfDnB^g_X5Q^VB__b&Heu+#N@_r1e=m(~Q zVoqrI$z_|uPOFJAnA2NUOyHVm@Jic!dp=rPt$#?C&jGlo6I6-B2zvup>1nxX62%&# z_hl~5C$9}B$>y9SAKLmWQ5bER*Cf)fkeKWj-Olxis1q{-5zE}abM20}S#F=B0?W7Lj4fDx*$l@IDcPiXMvdWs&yl{^fZ zC_78?C8%YCs4#=#VUQQn&+J`24Bzl`9e<`eOkAV8uV~oynm;$s^+)Zz`AC1p`g5y4 z_hh^wBi|z>8oi)BVe!+%k&x{$e!L{X_?jHT1jcDRc?D-{TOmmZEgsjP5CoHicdF#> zmI#gxoJ44okz?8)cHL?+wn6-ogkP$0U#fAlTZ)*?ztX1|YO_;NN=lk<9#HrYvzY16 zia(EP^`mk>zGXswMC;fS)SuNY->a{tkMwALKV7lh0lf0a*UI)<*7p+vug-9B{lEC8N_g_*W{R308S-$>wzRO#c8*F z#qqtv$V5=5)hNqA0&!^Kn-GuOtlvJ*mAaTk1Sd%IP3%&6+rYg5MgZJt(w;g*BDLI_ z<4(7Gq=Y#Uvd*I*whILbqHKATJ|{mOVXB*zSF%ltAG%c#3>KR1(K4%pq1+b zP<2|zMWY1iA@mq9RjCZgfF#l=GP*S4swlgCp|Xo?(39<95sgug^B@GO)9U9A{?TQ- zs6B}xi%!y%ZZQV^#w9|4+?4(Wcu@`t^00=up3ouF5#;(LkJFZLdU^gi!kyz2O0ob# zB@MqxcpT8WG69lMsM}M69DLHFPpuR@YxMuz-X)g5&{e^2T1(XK}QPLfODVp}7FTVgb1-q;xwe1&b-+7eZBr&%n>l5W5L= z13U=#a+@U5MxY0UIBE~jCWUl`qUorO`lWZ7%QieYY4pg*cb(r4)xFCL5ke+0f*~kv(SjHrbh{li z2CS7RkY+8INE&PnN~FWHiyUaSIyr#7Rt~h!PIBP$W)XwkK#pPY7lG#UGN40B)Lga8 zn9s`s&Wn2b%{O3x^3;Z_1`FbCjaW(-WYp5n84wA+DNYk5fcdRO^c(CaP0>mC?pjRJ zmm-l4I@)hOl|-tZ%9W>@XEi5E->YUD0VIgA2Z~ttyd{gu-3-X~jV7j6h2DB`G1dx5 zU8*O+;6Zp(EBY8^?dfh~PP@JK58;U#oqusVhv{<=wzG|Zap$ehPIJ@H%EV%)pS>>P zZRD}t9&4uFm_CwObjzvvVeU}+v>K-F-HkzT-|sZ~r>U7Sk88(rKUz{HTG#6-p!I`x zlNzMTtj8ON0QE5W{B8vvebzniHcugO(&W_(K%L%eK}_~QT@#XKBR1&>g*}NG6AIe`ep0>ogxx4YPmiSailOt?;EQhWa|oZPu+c)>uvpqgmR*s; zvV|Y3!(90fNh{KwGgj*U`Q=%Q8Imd|P*zAzR-ut81%e)f;mIJeTc!xIJsaY&6NRp! zea=+vL`X5ptQT-&0~r~cn*P4HkN3r)Bh%=k=`~cVwa+<8kdp;)e#sKd)rBZFtPopk zeTcQDpm5FETAfb&0!2w+Q$!PXBdyb|T7fa2y3P75@(dsnvGL4qjuF#VD_#KfwrVe9 zRU4oXWxO7v0RrT5u#FSL3NB@sL24y9Q(H+Dh~`d=O_5p*ZmrBfWm%dzl`8i+0I}*| zHE$P4LwA6jhU)`|bpXTd<<=%J)6Xy$weI9tn~d5x<~Yp;>o7OA*Frmn{fIb#3`LpQ zwIf3T5_?-KRdaHlW)eQqw9M5}_mX{#W$i)JO{d7dDdSjj9?3=`X21hq&^AOy;mpSJ zL~D3vCx@yr7;p}g4i9>}mB0=XMG8hGrqJBdz?_@WPjMYF#5$KS9(ACV$P!LaG2-nX zO8I*(PHz_ufdcs>yuJuQtQ67i4^T2Qs}WM?^{oPyM2tOV=~X)Z)Bu`=2*7v&RJrV* zvPg7V0B2KFuYF_%?!ag*D>A3!#M|!0-2)7dG3|5hf*8ZJUTTwxU|A=4rA5gcM>vEq zK07dKD>9q97aaLQCJ3=a2X4)U18pwA&3e+yi(bs*9xWGiAZvH^tB4ANC+s&ot3^RLn;CP82@TBL^Uppk&>;YS@L^eobA65T z>&nc4iZW#K;&m1a)CrT}Pf3*?Wme6iDgP>28Wl<`tSSq0fhOGqw zD#2FTQ*kP;7^;x3hUN)o1r=zXBUDN`f@W%>MY#*C&vO5?`$csM{k6kLw^ydu>NkYh z1=g2#{|qUYS%H;hK;Yxr;?U z=w57ZEpYmAF)DU@Un#0KTTHj+aRH-SXF>^>!@>21bE|=omFZ5j^n87fDL}Qt{BnK= z!RSdcjGhSv3Znk8-zDJeh!opQ?kiW1aTjc4>Y6(#L8Po=DteR0m?~($Xn%7yLPM-1*$&dxDO5D~D35{$3DS!vfXS^C%*elG z%fM#tmxjE(j7zw16cf;4Aap5JBI*AMl|Znz7UBB6dsJv>d9TlWg12|fm!{{7!?QZ7EKJA_W6dk*|jjgwqfI^lC5DupC**!^2U5R z;=)SKg1DKn*5x~Rn((EoeMJb%bp}7ig_>SZky2}%(WOZz6{BSwKvNh+v^BFh7>u)m z&n9nl-R9YN^5qa*>P@f)@QWi=Us@e2C&LDVV{1l&Pz)9)+#t!iPxh{(A=;y)_ax0x zRE$<7ZeH1Wa+kNH78g7#paYnM?`Kf7fLSR&XXO69fP>kDuOvj6fNZJ}(KOf}OV zzABri&07%30&h{y-D{#FU^y9%?kn}jKR=GDym(e=Dt6| zY)hIm*6-@=19R3lOXf<((#UW_X!Dq3bj6orb%=3%R$DxuZpUc#N~gMFLIXG{uSppv z&+ZDZ&=@l~8moZq+~OLm{207PfvQf$u;_v{Po>v@8>vDQh?ZfJZ7Iv_0lax+DqRhW z!bVi>)pY&V@=GaQ$5hLY*1m?V*5tKc62r`r!4#$9%kQREpNa7T5{RI#bV4@K7e=^W zP|J8N))#XY5Rpx5|0I>C;;mjdSfs{)n z6+p8~NZD3vtZPyT&6?SGdU}OqHy=V!HrapXkSvZuh@NS19u}kdc`=OaNiox4ExuMk;ps zk^u{#m5^Nx+AJ}DF+!=!=@{b7#$wD~Gx0_kAbQRw$aR3t1mkdKMmujSTP)Iv4cKQe z36qkU?>n<+kXlK=&nllGk7|@1ejSKc)4ev_WGEvub}&78%ooA4-D+Te&j zS#Toawr2`QoJp|R78Vsjt{8s8kkmlBNw}TtdG*OQ=tcDjQ(Vhwx{s#Iky#cR2u^Ya3-3VIi~+F-c^g0#=9?II(s`)!B#LoFv32MB@a5o)2|8xuRk!lsu}xw*v!-{K17TDD6a))eh9Q(Oh!yb zoL>8+VDx1(euuf7e1(Wy24c!iwxSmviuG;*>@vNl$PFvP77tUuqL24>$ArnMg%ci$ zM6ihWMml2-T3_UYloy9IaR(NQ^rQB>Qh2#qkzsuU-AOa;nmH)fO?N zmZC5UMgTFM{PzBo#slq1&O9Gt@cotLg;+OnxDvQw1A(F?$j%9pbl8H74R`j=SRso- zL%c6aa+p|XJ>FWULSbC?#H5T6fzw5FJRr@tEkP@j9Y`jfy5?Vx5Sa=C?Cl(zOM;?} zvXIwSA4bvRe=}#>iVtJ3Q_R-rdi)2un63C*xfAk4zmpS{v%7E3JOhi!XU&7)P&r8s zgwU73TC26&*2cu=&NG6u`yy=;QqlDk)>4l{AGIg0$V}b)=FoF9!Mn5QQS{lb3wRKU z<}$6?tQD)tCmTE2nRe&U+pVcoY%xPyv0=!zirAV)#im81z}6xXX#XNojM$ew6QQUA zLCf`JBN+;ui_L-i7n{dDvDiHFU5hOhy=R_1?j4IQ)xB@7 zJ#z12^Qg4gJh;8sQX;c_=Q z$QxDqwn%W!0nvqsw}ZLZ2evG9q#kGOVj%WFV+P}8qWEyEYgm$H)}Y2sMy@FC+01*s zZ83ai8MK!_`}TD49Y{hbfgQd^!uG}Zc*D}~o6@XVNqN@o#?JsjA2eChIhu>#AQZ4 zU=Qse5O%;i%)3iY>#nC$N9z!E5%kGv;y8GQ?9PrgmJ_*~yW7cRtP@Wdde+f)3QmnC z$@jT2WkqVU6>ay2LVn2Hc7B!4SbKI*w}@ZNbPcN`bx*JHh1_ou?*bX!qS9d;ygwVR zzOpHy*XzZ2@$7N9dUiKk+ze-+pT+vF&BTrtk8eqKD8GSuE}`ZI@nm!G^37}UkcIWms9V|$saFL)ocWc}ifc$F{I_0P9d?ye3KxW9 zxS)Cf$tPoSgyUI#w*ox_d}U|Q;c_x$64Lq5HX5B$OJKS&4ADs`K`Vq2O3FaI1cMhA z009uOn{ut1ESKg%RAL%f|cC8Kx^+@w^=r|tXq-)~ljWeYHjo~ZxTL~9tUeQON9sNQUt|B8#oUR6Tsfag9sbu*M+E(LL1gw)eIrn`KT`EqgxN;l1qVl{ergpP!OiPn+$nA0aP z)qbU6RqlM=1R0A^aLBd=?Av19VzCEo4O^fuz=bW47-tPiuFy94P|v;?uS__zokun9 zgR5GWPjj|d;Yl_)&9rvd4acg%wY<0Z0p~HV2v9Rcs3CA#)FhK#0SraB)VHe8j>BYNW+DB8 z={1Eh_AywH#l$fJ3wI1n9`30k#B&Pcb1K#-E*)S=)JE%X zDj+mYJdrqh%VVB+W%+=cFlnP-eDdjc-Vs+F&lYd-#-Qoss-DD(&Bdek^}f*zE7!s! z#1+tJdGrfzB(0qm=L#G1sp(hD4G)SaTu#sA4J4G!sRxpUnAZ$Xrju`{7sZJ(6On@RQ2 z$1dgL#=ZF|+yj<6VF%2fu^(Kfjz!}}`njQG2 zK*lXBOuo3V%-T;a8hORE>qs_EIDytO@|CWWt^s8^0iu}O0sa~p0J)C>TX48of_?2d z0{bZqmTbQs)n`xkC@$&5sI)WT!GfI^J*2dI!wmzUlK3@iNfkm>N5PdwB%d^Ojn@%# zL{?Ork_Al(t2CC-mKy-}RM?suwR=@$E8^@*cF~l!5fv%1pC!q47s<%LM_`hGgZMan~|B7-O|EeyGJ^4~wnJ#>pL-xMyq7F?b#? zqr!;CMzUL^$@tNRBU11IEL@fkV;j&=>dLHagz{3@Oyr$5<#mdvO@AWxt`3JGOr%n~ zR*Lp zsho2ZmhYAq{RQuf694!_E@ASHu+W=gBH<&`YP>6jH%b`0r%_gh*xGl+t9c^)wftvT z*9dcWfMJOC$9ZE!cXsos8T(_@fc-IQ|Bf_NO)HuFcO>xk>`2aY32M|kq66n2d*fms zLvZ(4tM;Ktb~uN55~4*PiLp9j?U?bLTr;^{)#g#tP=^~ifEjc@=}*Kb3agbMgN($% z!G{{)qKRWYI6BT_Ej>2?A7H=Yd11i)+i3;s(1RQY@RudU+Ac@}AX2fMzzqL@_?gQh z%%>z=3c!V&q(O;s)8|Z+ALQ-Se&MtoN|9onhYS(ylqtgb52hkQqMYD~lAM)}bd;kL zUTbj;f{5x$uG+9J!cxjUG)GJg&S}`p%sJTLenQ_z)fM2YYA9d1QsH0660TLkwV_zf zC6qnEB@3aO8&Th8B!LJ*W zTuY7l#N-WCJYpvN%#U<`ww-1sgKj8zEu#dOwA%!f5*Eo`1YEQ*GOt@kZhkY;iBqi1 zNYWV_5BH{D2ieJ)juojelYpFOKnIjJGY*YzD$Jma0$dea{j;1#(i=o( z`h9&rJc82tk&iX~z6ie`h2M|E?%Nj<|ph7KKvmFMWJCN=hzpwF8l2Af`c#Y_7%2u>3!v^A9FX z;mbV8I`9S40aVtf`hopiK?EfbR}gfSufUhcA{j3wg|@3k^B6Vrmo^|srN<~o8~Vbg zy}oBM-81Y8r-t{8_!T~puH+r*>IHGyEifR{ZXu8yG+lj6|F0@p*xJVrecyc7*Oed~MaIF?!s}tI=tP>7WC$2x%pNbA#+k*@=C^{OYjrb9>4qTTV zxW>Hf4GXIe#YE)CIZ=}Gq1o0M$hX>THeUd3?*Y+0uO~!rgY3ZE62kO)OuCPOx<-ys ztE;D@lkX>Um zSmmJ^hNpxC!`dy-o>ZT4%qUaIEHCIk(0f2)(5Gf=S*bawsb!XzZa^y#^u1|njCh#l zT@iG840{0Q(RB?_jw!W8_rpiY9a2#c3HLiD6`Br|;EHK4(R0L4lpOIBr2?pL32dI( zjVvH#10n)sx31D)e@<`=!UL44sXX06Y8cLZQQUt;5su zxS}8PLSCt!kW5Kp!CA^U$s7|LL4S~Hk_oU2q(_L)xI~}{WrXGv32Rcun5c|r4syI7 zGx89G*V%I80ifwN`Y89MDQAZ2{$?E<%?`kT6afvL=)A?@G{K@oNShsm)*iZ&oGK>( zZrgV;N$4`goYayDfVOv~gICUM&Pq)vH1n$=W&2HHB*HwA-EYby8FSemllmfrH5QST zkP-%AqeMu`^E*#RNl=bVk8?2QA*fyb{Sg@SqAXWjAP);7L>F_sJB=eBT>Cr9(Q*FW zDTI{YerFkWrk{j0@E1zzE&E%4ky6#bzfeN8v&7t>v@Vf7fLt*Uh8YT#hsU3B%!-2& z?IY`$Qv2o7oH(!kc=6O1McJs;TU^b)(b*>zvljb}sM!#xoC<%-Oo%&?fFg|VyHfbD zmOb7sL!bYa%!zei8oH7c!wRgr|=U6#=wg*%9=G_x3r@5hCG~Rwl zg|BHy%TCW_kTSu$@Oq^>biHfL_GTXPeN_b#%7(u$))tHwUCbH8`Bs32do$WVSXIGu zh5Y!-zG$qWOD;4-L2XOzBEU)GqfzCJTIn@Sk?6Q+N =z8v9r;9Hj`HfIOhIDp* z=QN?f<`K1>e_&uR86`a@dk(ka?E1lsloKsw z7Md_dvV>>S;boY4YjPlQoMX&N9>&kDvFhN#T`2)m6gTawW2t-tqzO+;XSIzo z-w{|dv0}Hc!_6?NC?ZQ)A-*x`y-ap)m?@jJ?Fexs7NL={0YI_<-(J*ZY`mqBW-2C% z_92PJvnCUR1&^_v?u?G@1H*f;f>LU31ZuhGac`P%cm=&kX{7#NaU`E&nP$vO9@n4- z6*m)-ySh)P<$0q!Zf%Jv^NI zaRH9xS?915b$y}c2r+&*H(X#-|K+JnAWNF@4!EB6$cPgFAUWFfu>^lb;wkUI+8a5s ze$6g}QM574cO7zvp)LpWkgI$TKqK-*3LKpqvc5(@{V_Ee;1xdmEeUFS|Jq}2A zp)(TEJk~kNusV-Wj;Nz`Z!#{huxCDP@=*5>JIXDLT)BkC+1<(9CxYuC79mFAA)FaU z`a{;Cu94Si7d5v8`|R?;5uq7$a7|%)`T34Sj=K1!c}S9f73G{W2#D z$}Il@xo`F&Pf>?G(4*ptBpe}iunVIR)_|Gn$=E+Li4? zLM}Di0}`&)LNfggaZNN7FjY%keCPCUV#Ft+uC-LW#O+*eO{bv`@maB{d39iBDEGjw zHFBPgv10KdK1*!mzPRYgO0+!WGa;+iUKx%olL(H(gW@g&vdS)`;K7NQEmw_~r7feC zy>Wp<^Dep$nkRe3>&fhf3IYsM&j-d{v{0lx!Sg8X2kRNDoEn|+P;a7U$nNMp5gi9m z%QMw}Y-8x?5gO{CI36NFDRq4B!vu7-Ol>5nX1*_}wNdGmDU7xYRD||9M!23Py}Ei= zej!jUIE|#Z;qx5BK97gc&dnkk zC+Kw>Z?n)YY%iP1_7Ysnfojmy$tO$$#L%MbWt?Q62?+a4k7M`q`~yrUrAgG0k0S<_ z8#Iqioy0k6wh0mJKGD1RQGU3R;b{8lBN%)#4Rt^;9p@Yg>-|(L$|`(a<-!6x2VR82 zqG)Q!krNq#ivSUY?u|}oR8DryA%|uwC)m%M_}b*WSogU=i&JPC`f%Pw<-`WeX%~kq zaC0)|ER&Sx!rv*P#!+ZcoYLXtlGxw+9~zPlsu*^2g9QusvK_mzWGSs%W^EB$@e^+`h#$mvwo^odCj8M1jEg6 zmScV86fQT0cqCA1p=q-m#=r#iEbk_ohk~86(XK&I&m+0v>|%*Ar-oCVpj-CCQqxbb zVWZC>DZfGpjUTq~{^HseNSfyWvg@5XnuKr^7of32v2Pa?b+buATwY5#mqY$%*jM0H z@ELL|Qy@H>tQCAUTuz6<^N?*S>>z$Eie;}WTPlYk(sit?HPcy}oszor{*xV?A8YsK_o%M{fAayV6n7%urEAdzhN)+SHuSrV69WRS%-7uhCxCLja9_>nQ5k`E$W|0Bm0ajgW zSuQt^G6c<$SOO$%Bt)8NwCk3OSUfYVcN`yd5#`a(UFso{q2LNs*CAD~2JP7c4~#v# zSqZ*6go|g>_k<%a@=4p`&inQPUo< zl0-i?3*!ym2*W(t)Ugd=LJ&)^fu3aEn@+unJl7k+n=GV$_OnFUrnF@BxDI07>dN8OLx1p{ZfCPBKA+1yd+c0Sg zSmmD1{4T3W)=O&P;0FW2YmPpqtM7%B41G{<4z=l&%9$Fc8r!Axd87Wem4dX3QIrwL z(hX9@!lm4S#nZx#VmBYBaCwJId9^So{oNuh`y&gR3naBNIno5erc-|^*lt0GnmGp< zd@65VJzZ3)On_zMmO?e>%ppaEb7o6LXX7mz-T#ESE_M|tnO$AF z30Zr%la3tWzb2C){*pwc1c zij4s;LK3h|mMWJ=TX?)GoIL4z0N9&$IcP7pfkz=$3dfu|yc(hCm*>6U%^IeyFD0T4 zehk=^{2ahwOg&MurCE<1%gHsvSb*513WKsDLX3U7tiKm7!?djkvtnb#>;tc$=>^=F z6u4u{!ZoqS`{9lGUJYrC>}l2zeOEj*7e9GsE`IXJT>RvTx%kNgbMcdFz44RB<34K$loG}1HIuz?ST&jm3(>0N);USG}y4P^O^5$=Q3yI}{p-MnaAwc64 zAqc`%g7M%YAK^?{@)3?45PkbY&JKxDdOO)#n{}0s6ROU&_A-NYoq_YC91JeW-Enx* z7CTwDF%418;84S3v_NB~uoyf7I!DAt?5it$8b*w@3{C$d{l26cW+Gr%W8jXiI%vIn^4|*x|NZNMhd*q!%dy4k~@SD#{aasebr2Wl?W560ZG=uE@27 z9fE83sd*>Yk~2^~T-lAlRFWJ|r;?ICbP-!uovS{fvj%7>*VokuD`gYssm%$x(wY&j2e;)g zJjrc2rwCoDP>1Ec+>(CV1F&Z}*VX;VmC;Ae=PN&YNJj2Q2J#Jf__Aeh%P=#@&)vTP z#F%gBwtu+990){%VHvb}7l+5w^qMIh7<3_+?ye;A(#%W&O)r>BoCiGD(T#O@W(N&%HW#v23pd3I$43wg(&G&YR<9N- zAag(9g&j1o7;{b~3x=rJ-7c42!xaqVwaghA`*cReKAn-VPiJK8(-|52bVkNLosscR zV`Rdo7#aUGM#evlk?~JsWb6}0#u`U+#v2W{x=-VT%jVWd9d!TgnaJ&di4qt3c<5#k z!hgUwo*lTlBfH%ZhS=RSW%WyHa_-JL2_ci;uL9Eq0SAmPifAUmwo?a4(ji=~r80M1 zyGe2Mz6-?FyD+AnpL3>MFnAj=eYb1BC~Hu4jcmcojuC9Q2}*sp0N3gX3ARnw>Tr{M zXtZjnP4W@lirhlu_C%j>y5@bP{gFoZC$HfvVorL6o0e2&(Lj$0#qGd%O5(sLr|^-r zknld#5o6pM3~IXtulGvp$~ztNS$t^66S1K+nkLU{hNih&LY^`rl(r2H#lVr(QU|bH z#^)*V8j2|CHF8e&+#O4zP-u>dmP9)d>axfMH}|yU0=wp=8^rxOf?pvDwvWX2B8dG) zPD;zxEMEd&p?$%^+W34hWfntVXWP@7k$f0+vk=;CWR0*H6on69b0}}+NY7e3I7DHV zH9^jO5N66YOe;3N@PRyNE#6<(Nwaz6e1e$zl2;R49EN!~SCXNtFpN4>=*kb5l$VmU zU1F}ows?tF1JO}*Jzr#~=YT?8vI)rx5rlY!p4B|x`<>MuQ$|<(vTE32O(n&a>V^_~ zW7*=}B%0|#Tc^FGr#IKQoIb@^bO@Qyg{lzs;J5tD<)Ku2wv90YT;P--vlU(1vwj1} zgk!c{B*hqH{0lIndU>b=t9`<&QOOrW{Ho|p4c)ypQREL@XsjP5AQ{t>ZJ0ggBblmu z%r61vF&}x`9*_A{TJxCy<>Kv%Yp7DRaS6>m=7VwRTXv@wh+gdLVe_7E@!5NR4w_GX zf-@dJ(M?qZeR>WiIMQD(YL4_*JYt58w;buyfY<&i2@Yq;mjk*mdz&KCDZT2dYhs<9MJ6!3-kDZj;luQ|i^2$0#bjnBso(Qvovo}67J)zY@@`$p!pHT@#!)5i6 z@)r%3q!s-&nA3E50Rct;W|c(dhR+U#v$ZgYI9_Fw4pnRlLy`esP2NhdWBrm3tl*K> z`hYS>6Ja%zSAs`t20SR0T4D@%DwMAh(37I>Y;PxS+u5GY1Lop=V@NfnIL1X70=c(( zd{6+n?tlu+wK_z^5;}A-pS{&2E9)Z!mH{xYuWaHD3(p0lGKPA#&*62{Xq7730+-v^XRYb(2Cd3&K^ zRCm*Ue=qb0a4*NQZrN%WiTyHkt+^yt!S)o*Z1I}C0M2wiF2S5jBba`e@%vrOqSv#8 zLt#}$IJ=Zhi7$P7x6W!5Oya$;g(ka%V$J~hP}!9`p7(J0$uF64H>n1D=eZA|1% zB9%h+ak9=}Qd0z%WruG|0Fu(_2#iiC#yqqMgENLDPB6qNOFen%F%T1E5hA~i$+ncT zzc|KGN2N3EMgGu9#8c@Jf@Y1b**FChk0ZfaH*je>6yulzixZ0!SfhpX@CJ0(%TBrD z9F*%b?h@wuPHV>A(%d`@zntEw_gcp;JHQbp9xyZ|B5q-N$EYMn+?CR+TT+0?EJ^Z8 zB(ve#JB3(8%%M0C&tNf~UuC0cgKAB=>5nNpb&bT}S(68GkV!Db#NDxY>;dL#57bWW z8mXG+EZrz#K6inZ{5=eteu{tcZPAeb$ct_JA|?yIIyKa?|l^H##CV5!12%kt7Ogug(%gg1WUhE^2K?lSV9S0p6#>O;Ca zT zwi2o%V?M@L)IW|sNAw-tcTm36{uD^FtDEq<48O17f`Qu=NCr55RxYY$dJ{xC6&g_s z!|0cwnXEg^H%?3?zbsMEu7=>rNk7=osm+>-@f-bl%VpO*s!Uad(n z(VyEf_+`XEvu-Peq_-F9UmoF(j)(Ul7D#5}k zxL=YLevWKYQcdM7W%@#Y)YPeJ#&Wj6Fb2@PT`@!a!f!I@`hbwl<%$LInKC}=kLsPO zw^PBsd`=}ZK4wGe*PzkBFm{xtOGV}~$W4Zn1d^Z#SlrvO!i)JGKO(MxABHO&#ZV*s zr3K$SOde?6g9hGy8FlbbJ)XRhJt703z~5&kX{V~Bw{zj%{04q5{Hk#ZzoKz+?qxSn zg{bozx?;ZwSCv!8TuHc9{6eq)B5!61*!3$qqmcZ9(tAEvZ)K{N#j-%t@>|?9)Ux(n z%q6bn3jrr5J=(7I9EzlB80Cj4wF=QFz|JTtR*ucs3cz#P!tt3E!lpB_my`8$gR($N z6}c8hF*B5{`CpDHmR;7muU~avzoJeu?2_L$JHWpJsCvo1G`wGG(a80vQgXD_0P5FD z;P(|(NRPEb>B=*ujx=)ek{qo{e94CSTB@k z@u*Z_7sIX}NGYw+qj-jM)TKdWb|_VIw9#69#TXFtno?eWNbzP92|!d(JWj(o2RV;I z0tmfsfXrxc>8qI;#Jy=GOsB4q1d>a+y(xYW_4|U<^rT|#MRXvm>iAW-M$&!%Dw*=NvHrDcd7

(f#e{b7^&^$ufyczcu7eguTbJpE!s38+{WdQ6*yp`X-dfbqm9mR zrV?SOW06v9G4(NM8rB?Mo8q8Iu7^Zm*jhn^93>3C2Z)DFF*e2Sdow0>kPO^oD$DoH z9L{%SI8ltJ5HU6lgaKp5Jm%4X+aAoTr=V^f3knBRpE7whkPdTuVEfX2#<+ze+axrf zlO&n_z*fK*4LpNOsKtKfuhVeA5oax72%bRjzr8P(_8yyjS8^slus|DKFl3So2uDkg zs(`?>1e{fXm2bf67SnI-59DbxN(|h3WY#3eG{W1QP)O5TMd^~g(|{UuqTA-iu+yJf z7zKj zf-LNf*71auxi`*@-S$RJqo2ET^QLn|b4)t~eZGb?gyfRj;M?#~!o`p$ zH$ahdUEkn*W)i&IZbii-tHcX{8>bySa}xA7!Zfr+Ea0?K~4Ns*=Fqwh(MAYij#e69|DL#U0B8bNX%I0!x36}44NF428jGQ!;j>7UHz_jKtt;ZYAn|&hDwzJHa4@Dz;f@PsQWa-tW0-OG*}^vw_HC%m z^b_FF$_C2wLj3hZIVX)XJCgIalH+Cl>f+j2xLj(=D_0nR@DZ8{;KJ4pj9KLRfIUK} z0~-z2D};U%gjdx#)|`ofYr+!J2t4lYK=d}9rHSTGSK9y$lcnIMpjrG|lPNWZ{W1dB zT}u@V0m3Z}jgVT>7fWxwBY+`P8l6~ZFn0=r#*ACGKx(0+Ww2fa>mxd{iGzTXVIA^J zK@Y)+(dT+fCwUsTn(f|4%bepisy}2!W$3WNy_#Ked(Z*=%tQ$M^*Q8M4hDn~P!v&S z4$8@9S>0BQsfM6f1g5tYOfvL2+9gD=Y|%uv!&abCcP0OlJMt5GI7wk{k7<@-G&d3M zbWTbDRQ{rDDI6|uLn8da!Z_EoOn&j%FF>B^>d%RnTWQb#dHT9aUoz41SmtiN)@(?Z z;iqX-8XQ1jC|B%190m14+1XpkM(78G{((UXj~da>^XZN8f=jLtP>wDrS~KMv9yzS} zIDFulqc@eFj4bajIw@uDN}$exh`Cs>1{GIJTm4(kmbH8pTH6-P9(FD>6K=}Q)6;}r zu8xovCwsntp`cX)nZ^Q1gs}x>+HlZdtj;$NFBk(=!i#B3w57%i%DS9`5_mS1Oii){ z^NSF^%`rmwX3$0w9VyM(Rs7Hk34+L3LP$7}ea&wH=Hi2C)0pkVg4!)MdXcxt-z-zQ znVAs!mSd4&CEv1bRN?6N%-#f)OW)N+_ky`B!k7KiI)L36+L%*>r7rmmvz*~>$!7us z-EjsrSt2>wn=b0ko3+VJ?5wE-n^!!! z5pR`&g#ln3Bk_Lk*;MEsKk9i|0r-+m{rT(>8X!OuTtfh4(0*u5fP@1!*`83Z?28)mVnO{)i7Zvzjw+8uk$5_Vlc>2)G@7HIewZ0Ew(rT(nRtz%rf;n9Ja+ z!p|d@+&AmzPer@{<7znqN3abJjKR0IQahjNOB+Tr9GMX%)yk}=@?+2k?@aUPeSdd# zagD#bsBk)F3Dw$k0TV8Fi90}Tat4H2$ByM&trzYcM0l8A+1mk%lZe1$8UAr-t%c); zj!<0q5el`WA<7(EuutuaTSU49E3z;CF}aV6v0+w)@S(0Sp~ABOL21tc8+s4{10?NQ zU?E;g!}xs-9gE+P0Z^2ykHw(8J6evdc5{a|?u`qrWj71{y^xVTx2Bq-JhM(NBB3os zh?g6!7K%*LC}FCx8)2l5kf|lLHKX3=c;Th8_=s$T>mnA5Meh=(gosH=v!WW^j zvlN3JBHE^wENx12L4J0CtXZqQpuiug8zn$Ybq!GXvyD@(m!LwL2-5AI05UfYZ1N#^ zrSbI|+?_*?y3WG_17mx*8^GqmOwJB1^AfNJ2=a+w<(a^l$4MY8=1^pYfle)^hgw;=65qKng(~=8?)(9I_*YyG*;2@pwc`x%%lPG)4=PiSagXXc~}bONR1be zT}IXcDoa7B>td9P63xZBUSW-m)GV7TBsR#o-Np~yLg96YLhO*u5M|im6?^HSe1}AX zF>{6~-I|~PDM(+uZFdx0;|?UV9Bw$4ga}Y5_l>wS$gYfWeS5@DN}4dI?CsFZ4U*Ovb4MMnfs5>kHgzO~ga;jl~}??B?%J zK2;9++fq$_rqGX_S{P%CozA~v4t2k;#QFe|APzmf9aK~XxyWY5{1&Jv z-?hW0mN&%lzM4K*UAL=`y$Q#bC2Qx-JJyVGfBA##Q_yPalZtJ!XJs;yb1?8B+u_slN>QFdQ;Kz5Mhq-%#z8W@W>Y@eL8deudP zIgjLYvnsDymN z8IiSSpwpuxFx@`STZ1pUz0b*hf_`(#{>)ksgG@VuQYPv)i%626A68a?yPfDW07bAm zZQ)odt9pTH{NyX z*Xht$a0&Yhut^kLMlY{erVH4Kb}C5;cKX^^g3Ie+E`m6Ie?eg{vcurMQbN4i%Ak80 z?qwg^?ZFG*&R9vcaAgcB6R`&xbQ@1Zx|W0WzAvZr9Zy6_^O43mvOdYe zUm0tuTETFeIm25V$GJL0)2RW?Y1S?~ z5+OFq$o9HP`w`ePvgNK#m+GCkaT$(DN@UQ3xXeL;>3c78S*GMPCh-{uyR>JAJlF%; z?f5{s7~NXFu;ZkiBIF8Sd%bqM6^fIMzyYR~;ePhMA{BLm2mss((F|FDJUG<3U9~% zfW?*4hkNT9p;#gcFcij;7TH~F*%PHW6LaLK*btDSY>0woLqa$F(3Te{AxZFmM2k$IQ>~B+-;1S)5%I>iq2^3hCt}*5XizM!8e_*A6%G~|HL=ni zMJ$ObQrYir!%U9tJXmD{bB%ow_S-x^KDQZAV_zP3W90h#cP?`HJAQ~Bc=Zu z1bIrjxDhC`ZSljph6O;;rQOi$R!nOL~GC1oG!78P9FR*c?ZbvJx5hiU=Q=5mMz z{TL$jhPsT`mQOgtcKG6_PxCXhd zr3o8lFqKmZP9U`uv1dh+?TVttr>tnZn7TEj*^x2W^_qh2X9pE|Zd!|si3V=vh|#9p(ZT46_@v;`YJMWkNW7D-)lJOXaFOa!$5gGK z3=?~$BN1$pVO{D-H2Z&7q#mo?&FPx}1GXDwTL65BZx1t>J8{TMyQTr)Ds3oLww*&G zl$4CQ9&JdwVT?i;Z-)G!!DJ%q-g?eQr%Y)(jM-FTh!g#?+Co^(FT>fdI96&;#Gq{6 zz)im+!D=cyjMV&4S1y~Q#BBDCXvQy}He+sIK%< zJ8U55x>$6IpMCSSZ-y&M6Zw}r_gAFGL=gAbZgk?j-NVwD_9aIJmIj{0Sd@Cuo-xm4 z1)k?QHQOQ03614p0&5`Cu9gt=t+wSQ`s8~aXjG=U+6rsOZ=%-ZR`X+EZ%A<}K0Ss> zag18VZ&w>H#3&d9dOMNnw0_+X)?5!=I44wb-QDcq@U3S_wEc*+)jlAdke+(Ufr=v8 zD1~V$f%!p@I6;fSpy5DjBdB5^Nr*Wmth4CVa>TZizEgfl?MR?&kM^s|LhaY34Q(j* zI+Po#4QInjgQx5vUqL-4u|ungXUwF;xN~JMDTF`>d`?ZZqgS-N~9(R^&E~ z%M3Skci^kZoj5)3iGoXs z@+;(87#_n(%oY2dSR9ThO<-2d0j58vP=k~VE)(J78d4~HEh?Yb#u_6S*j>p{pGXk9 zUn?V6G6XLot|G0KQBM%d&@5)Zsm3$oyXDR_MOq)x5|2dTS$BVA33<)MT9+I7o4hQ& z2Qx`TuW@C6CDiF1+V`P-zdU4IQ|jQJv^Fl;{|;KqKDDo)T*m`Q0u~C zZF0+iZZ`JPbx)AT#V}&b0m}_N_CEooq-8dsghU{C`o^3S^=;*iK|&xoSr0l;$uyy7 zmwoIBz2tK7>It~FlikUDm$M-%b8uu{Ix)4@rI@g8*vpFK@kkgj$GVwvJjOM(4GvCH zt)u7{Brdek;@j3O3r}@;0CFdknaH?-zmw&wN`9Wh=Zo|?(Jf}63*8j3UnI@aQX?*P zt2U3f2WW^l#jOpYgipdHgrZ6k%zo`x^jb!wYN|F%*ec!V?XyBKqK{sOp#ptBvZgPs z_3#qpNSmB2E&8S&2Y1*RRDcKD2xCCZ5IT!~S91b+Q?=6MEZjCVyMt?vg}E{roS88W zedAPvFKaQam9(Nj?KT&a5I^ZvB!hM~jQ70+mM}_M+A{3}Eye|mI_E~s>WqJxGifzH z2JNk9v(Jd2*+wdazI%(dg`?gS!RK3H>A*ugD@g<4i3!NkDu-S$Ykgj6w*1+rwDv23 zqmOC5kgYT7vhYF2sG*PMhWdH|nw$MR<~q6s*CU7-fJ-(SkIgufs9 z&vXB=-Y-WVX-M$b6&kL>F~c;n*q5Upm8RcH_9W_q1={f8Q+a;vZ>BQi5u*5)d@uxe zxiZYh=Q-U$H|nQ(+Guhs=%)SZo#}?e(~Nlr0HohJoSvUfAUCssrYA^qh~7tX@C-2x zj}F5b4azlx5~4fOYrP%?9r)RpBkxT$TJGM57@2DJ?9Y2~s{9h`k&;ZydY z142&Z2`#n2^qFNTGGs2B$W;64FN+TI4`oONp{W>}t4H%YDJm{(2v&A)YMI?ew3eCk zgiB=0PRCP5tvRHWSX0Y9)vecm%HlLqrb(-H)wY3hG~63|*|h$nJWSPc+2SilY#?6| zW$m&8VqIBlw41+*O%Y{Pc(Rm&DB_KvFpl<~iP%;xC=C~Inaub%g3VY(F!j-Oj)A$d zV4eEMQTpn$OdVzfKYZ$36F#Hbk|iG?qx;SLD;rtRM(s?}Qkwz;(o$V?gmBpaM40SK z3&5t*RmvilZUx%wIM!v$<+@no;<@aWGlzt^S>{WDv(*u1^+Advb0-*1;!=dcD z{j?Yc=+G{>(ry2!WWOl$#SA&rg%_Tyr^b*bl7|>H2YOToB@H00W=<(ZNS;r01V)&f zlf|da{gQ1*&jaSj4x*@BM!Y2zIHjCSt1mZ}WtLt8_fjLop7;iHLz@InuYu>32C}4# zcutDrp0bi~mM^N^>6#W;ZX`^oJ(ukj_3XLq94ik7xh%F?doLl6cRx683GLD9$&ofa zOmT?x+0re1dlOXpXaliMJPMx-EIt30Vx$awLZ?MSZfwe>>7kLm@K_UA0KT}ymFk1& z)s&|M3;Crmr3hZLWR8MofyX4})GkT4D~$2tXZyU3AljgOnzBw}0(``9YjGI-u4p?} zKErxiC*xr3;A9A>t=m{QrEy-4o4XK&5RlAf^GI!t>C$?rMH3okFKpqekK+I`jp2=m zWsI}5EY`-DM=qn>zB+B3!576eD`THm_7F?qW3&v ziix{8k?$VeQ`!gCt>p-h_iFWc;96E7DMCUQiBdqc2y;b-SnCMUFcz8YD$?z6C3R_N zVTTktO6V7v(t zP`{bemSFVDi>WcBukE6Jk=uRE*tLNba@<%`Mnxf+=VEMD6yAd!k5Voa=(c)`cJECw z!BSq?kZV=o(Lu)-_F{d4(3A>$zOXr>3k`V)1FI}-Qc6g#8Mem=?KzBmLw6yGq`TwgH9EF&4svh2aVinRgbnC#KsAwKJyPA&IF(DvGc% z1O5y^OhJ9Y#eb|1+|><7+fGwK`+!ovDy2EjjOFctNrAI(D_1@yVRt8g7`lysUJFtM z8f_kvH8C?o=oZMq@L#OBdDJ!=7-3;pR*=Fv+!x|nY!;2QIJ~K8)-5Z``+N}!{g$If zcKNWsK7fq_G-@ozHhJxb55>PJ^CCUEc?$#5{!3g6ARA_~>4*WFVnR z8?vAg0{;Ruj9Gx^T58^+K=_cn?OvlbHW~r2DMV=Z!Sp@%HIJw1=Zl!!B=MHo=*3Ei z5cw#d4e#dD+qbzh<~~7#unl4WGU#MEWm%Idmmf;nf+A+X`eJ6#+_QpQsgT^W3&~D- z<{9tQzV~G;v>9?WPj0^WYYuw3|L~yEeVNtyL=2tL3iL4$-&%>z^LR|~mzC$tW)kG| zqhc;D%w>wno%7jD5xKDlC}nd5Z3z|IS<^(085e-zs2BfB;z#qq1i>JSKD>#LOK}O4 z#&HKmHw&0OwWXzz2Q@r;rOdm)+Kk&Sq0H?zz#C4?4s zepu?QN{Nu&2V-^hWXv^6mHm0Jd$Iefld;I16&udoYMO;%kc6!J37E`u71 z{05>8A-e^2))CKQ0WGi8AUS~pkh>!Q1!_$6DfUbrC`jXcWQ<7D#OcILIMU5I5x7)- zf{JZ2#!ZBI^JwB^3x}Da#U8)1Ls<&?h{1U_<-8AbT7)xvLL{~R_zGg6D9)j)%>`m- zJEkGS#ZGHxSU67Zb@p7Pe3@$gIK$Y#tt!q0j7=OMJSL63~2@ZyWvUI*n;U zmj#9&ee<_Kh z0hBvI@`P8?ckYAxXwQaI8+Gn$TL1a2dg)8Pv{1|eyL!Qr2%n{mL{8u%skAo5mg_p_ zs##W~T-UmZeI$g^g=0R}a`=4Ywzi;C_^Nd4Dt_yL7r)KjoDFFGy0ulXvK`7M0va`a zgz133pw5s8Pe0h0XeSfUU2f|KxwkLE9H>q;>nX14)PsE%%@Mvu(XDZTL7cgEQo9(< zg$4MkSch4>AWwkN;=FXFmc@XL*%a4PzKo8RIKGub7gn`9_TyTs85pQ%!N&)SGJax5 zzxe85xco{@iC!}$h;eExzwAfmx}Lw%m+>Qg89&mO@uN$tM{+Q(bt~V}M{@DrI+8lQ zWvhlUYmGpcrD1d}B-J@GE*L)sL4(`6gVE$p1-e=Av=w9yBh*bO)o6BvBq>OdYUK(y zc-NRJK#%}qw{ChlNL!4|m=1!rf`{7RVn7yLmeikl3((HuH8|G7JdP*2>I=&6YP_|%>z*YU2j7R0a(PM*Rv>!TaL%Uiz}z^B2=06b-JO<2JbryB?a4YN{UwG@)91u4;k3_&E6xYN|xtA zM_WtBfjvT9R{^hd94@ag;O0LamV7mNxIx{m$&0aIHcBG?F&@WoALno%U<;pIHB~M4 zp?>?<3y)+}!7Q}a47f}}bbVUCvRTmYA)7r|ug^@=w*j)GImkqYeVP^nR?LbyXL)PwT4&e2O*=Dh#_#>} z20!7}`c<8{ckOek>Qr$7Zk$3TPOcK~(~O{%ynT&qwZl_5bq->~;Z<_MR6N5?o`eya z)|Z|uh@|zr7R=1g2vDutznoGJBbM=q7L$36p5G6ibR-zU$4$3q8O-C- zI2(5Y|7!XQqg-d=fdYx>LzGWZX{%E`Tuz#YuFurrfw| z7^n*;&~_0W_?VAcTmtH=ap+68HHcB|6sa+1i8dil9ao~M%a%7Q9y+#Y6Wpe22&Hs& zURa=K_6LM?klIa=5Wf_JZ>bpD4-(d$DHhP@IDKl`P0=HKx;DILXXFd z0t`*7U|F78<9Gdx0BljwKR! z`1Y?2tHQzz>`ID)51WWde7j?x*D4OxG3OyNavCclW? zeAW~$E-_+~t?N;R6R1)f^rQ*6P*rhJCd~VeSjAOl=tUZ$i9^i?YsO&{#e#jofMd&Z z=sgXWu~?anx-U=DKBNj*Cj6-K4u_R6>AJohA4EvWKJ(q5GmWi;Ew zmCG}tgS6;$;^5{YAsPv<7P|7{T)r^>Dj&oq6Tt1QvK4CZm>hp_?nm1f>)R+{;w{#e zSPZ9e2CpuvNhdl!Pu=hb#tkT=Ue3B1&vc?xUTI#HMr8;tQLLEB*I_)vo95KO|1qV-%4i*4Uju+-2j+$mMT}a7|6nV$%b%T|2Ts%?u(`p=42Y|?-*GRZ^MgP7DEy8i< zs=Ud{&&F7C951F~!!1D*7=i;wf5W!(S%j^>g4@*m!;G4-v1QF>RZfbS^5TU`?`5#? zBu|cWe!*Zhj>L9oZ7y-zTO%_kqDsai=g4VXiwS@8;eh|}$&>#Mz{TRf7O-Ya!X36$ z{GhWDE`iYln8X(k3urilg_ClYo;bGvubaK`u@lwWKw=WVd9Xy7HQD<6XW^yL4uq|9 zBc~NVT%v0W0?J?@Z2ZtvU$bD5VJ~Q?{4qnyP|W{RQ3J~u)qwNINbAAzhS2|!YQW1Uj$glUwrCE5+i@sjuCc;{ zv2w6rF6luI_aRqyyZee&g{H+pe<^G#foJ{Nly>S>mBv2c}JH6|X@|qhEa* z?_u1WwfN{n?9&cZ#n^JJDLH~TCQzfICdT>@Sd1oKJRADLnXAy0#$zILGnIVSYB7ZZ9QE*+iH*Gurg{HV}?SSR&L7 zDX&FU-b5Tdaa!ZlNwe|L**qA4u7D;ay{GATRB!V_VvkB$*B~mKVo5d&KQ>jbb~^M_ z#Y;&0p;5;V*>lfXKZLFEr*C~<3|pDr7f%CyCpY%R;%t5Gov<$^Tt;oucl?T+7`CsC zVTAkit)GPfw$ULb;BAtRTb%F+9d$Nx0~X07XG*X%t|8MleS(bu6iZ;Q*$(0k~wPDrenjPHZM8Hn4Ec0Sj*vpWH2+lj1_#MB#@lbqi<EK$^i2Q6wo}5~o<`w)l_Rq?}Qt-yqbLXbY8(4#Bs8nJKSC>>kf) zxK|oP8G9*lHI=r0NBHT?Y2&BKPvOUwnmTRjYCBJ!)=tdIv4R_)&C(}#Y5zx(tS6@HGDKO4B zF(sV9vio+^G21gU?8LYpq1g_VpC{IVoM@)Zhp>2>m6gQ8sO#3-w`gXbj`S3Vm_e;-FO2 z1B?-4*if3UGD!_bjMgTM^+7djLkB40#VHrrp~r!Mu_2nn7#f%PM`|_ic*|6@2{RhkCnAm z6-bQX^pJHml|w3!tEysX{0(ayG`6-D6I_lSQ&Ce>F$7*IVN69;ML85)lsGwRWli1S z;pJnnfM3NJ*hk!8?U+iNH#8xd8aKZ%!6hG6JqA;3)?s4N3QY2e`Al(-Yp^41b4Zbj znjkF%7&BtC3oQ}oM4N3|hC^%ejW=a{JdX!6q>_`ER*%^xZVspBg_S*mOv9owH$_L@Zhg1x%!gb`7wYa!rZB{beX0EwbS3kY69@k_@ z#nAGxRkd|RYbMe-rSkF(<-yltKU>9u_P9}+*NvVUB zI!#|2cU*LhYS>0HsAyi^JSU7Add=|aF|~uo<_F_5_U3Zj9&51*R&5nqRwPU3LwtO= z!UeAxUOuFHtGYqesP;x;+e%w?h9kv%#hj=aCsem(#h4oSD4JFfENeM0aWak3W2#5v zfPi8DxE7VH)<#y0WHnM-jXPFTF=k6%`_bjK!&5n2+#1YyjLE6XYs+I*fy0baEoQ`RXwT#mxez#uihq_1{%zmuBaJ|OUqv)F{yUN$jTu@sw!}uT-j=PMMV{^=qQ|9 zsW^5tq+wOngK%lKEJvU~?B+ z12)1MlfdDH0C%l+;-u;0>$ucd{KaYXYwUw}|A>LHitnr2@GUh@Y|R8tVKiP`x2eN4 zGkI?gu0+((Ks*x*6-)vAH=6ZyWF^_j`6C3-a%ZGq{P_~ZSfTs*>fA)&s}P?@kOQC z#>YocSW0m=8~f^lwNw@FFm^uSc^pyIb7@O@nB{a6xJ8M^B{+)rV?zguH;Y%!arp9X zDqogTK|Le0t83|I^rEX|59WBlU8ro#V>4iIGq8KlQXj7!jvBMiuurMBF1F)p6#lMHZd|Q=u8TOW zrfsvyY9@3&U#D?!e6zF{He19H6|J;50EBiO^9<%k+kBpg$>OCT=pQz6$fjnrPuP*P zcUJq<8>Priu)Ww@B%V86%~$z_S5M%w77ixb(rLDVp?=nAheW@~6uXG%nv4rpTgOH` z;bLiAyh&AjSIs|@f&+6NiJkeLg*6xQ>@f`6R%=QYm$qy*rO$zuEq}L-CGEIJu}w8! zmD)0KKoCFV!Q=Dv`n~L0+5BGCT!C9wi#0Yd-52^C)r~(CpNrH*x5XwcWeZH3S)zPY zqMf6Dw50hQZk{F3=4*S*p|$+s)uFhc{LX4=oL>o|(c{2Ob0^C;W^S18$=(U!*a!fY z8!rgsVUzY7)dx-~FNW{A>N&Sz$&R9<@f&ONML60&U_5&^L+s$KB#gQOP2HGk2KTlC zU#ZQq!G&yezy;&Se0t2}#7QZ+b!pPZ&eqt6vpj7M!NbQ*Hd}HN6_ zkIA~~2@}{p%9YlNv+;F#=0sfC5|N8Xl?eP?vP2lqC|Rm-s-+S|yX0q^C3=iNFhoXK z8)BfZ0Icd@!>F~$m>sG=uC8&sjYz>OwfSruo`h4bts8;-<4lD2HmwxVlZvJ@?8M#~M%&407y8Mj-t z8qBMfD+HUp+ezdJ<^!!6%9bhqh3+^uYU7_h@$Ca*@_7Dhbpf%RU##@%uo7}{a`Xs3 zi_=f**))!}FH2%UWl6S?s+u8#u+`eS${~Y{mn{8=CDoU-+!rZzOx zaVE3r_&k*Vj&B?n({P2I?YeWk`7pC=e&AMIui~L!&3Yv=uFkkwXsaEDo#}Cs4Gy>n zN|g`Ud~6My3zW7cQHnCh&?Y#zatt2Diylp@s>_F<2FvmA>gpPMQ%T#$8{d}2CAjzw zY(*vX?uUaf-hKW`2+xzuM{4do9jC381AAA7xGqj*MbTRV-uJNL&#)SJr81>A^oklh z4h@P;4*pS?RcY~iL|kH(@x^s2#-zRZ+B)e7wXjanwW%rJvgqw0U*#rUS~d!y{NUkZ zM~$fC+e#%~;JB1bu2c^3#K`g*_BBLO)K1_T@Pfr%$9IImY(hYGrMOa5WlasP1#U~y z&@PBelhT9nW-)d&nhbFAQMDI4tcz5M7hd1ou(6f-=DavHFYYq069pG)3uU2@=#$Ad9aQ$)0oSUPmgoD6A z4lN&9S+z}F_0YV@17;~rW|@S_QFt{TRg2S54!lESFSuNIQN?waT3c-|az&{@@O3Z9Y?N^=Nz3#YHYYv^q4YRBnrLH04#e5GACxe9W+lT0G{Is>3U>KvJ`) z$gS{vv2dv(-t;Kgw-7f9`za||jyL43HVUhD!I_l+Yb}cwg8Mb9yb6toB^kI)e>F$L z&BBoDQK2mELsMB}i{x|%p00M0AVVB^m6wW)9^bA7kCsxQt53ZBrdwS>bb>&IgbzDW~s z&`p31#lV9xzwB>L>|J%(y+2ZQBer}x^7s}k9?z?qaN zVM!rO89okurS>T`T6r*m!gMZ2F$F`QFtC?H5jjYK?TYr5A52eK@QB|e6OVN2xcc!J z5=g7#xa@qY0Og_9gi=P=Y(2J#O+WTuFOu<$=!TU{hROToBA+OM}RjscA?c40K+9LDC;_EN)a z{p6XrY$+XQDK#61=Ole{;{*)5qdy|_BpFSgT(%H_E@?9+PMW}3t49v5+iD`ZCE`zX zc}-+9CDb99BOr=cn|+*q;yG_B`!ff#ku_dDyW2Bh?$F{2ZnmyjQ7VSn*gR^hd+3hw z7GUfG=Kya&`z!`nBKC5^1DsP4m^`aUj-x`*pi$=!+}O3v(-v(SCuynVYG@4{%Ewb~ zRmZ&hEKL8UA&aPEayga3A)}F%U+y*XJFYy#wB2Un89q+n70-%ao8)vLj0^tFA=P^{ zE|+w>A)1+p!vs@5*tF?N`Y%e}?AZMOK{rj8=@AFE1Kr`LspsP@6<2 zTp{7LFf1O=ZSgj8Y(0jT+d%!?jq~kTnlBxB4^R%QlHqrZgE2oU27$&t8u(sG8odZJ zC$fT=!Je`$QK?|UJWQ$yAGb%t!8UoGJ>k)qJhe6(On61>2Cfw^FxGI0!y6Y;o6D=A zkWKOqs4L2wZx%!7Ifh<)OX}J*ow$Kq#EZb1Yc2@iw^=@1gQ~G(D1_}%E#6hOZ0Ly7 z+qKo;!qM2&=WUk_$H7Ft?66o^7FXopP77MC1cN#fK6D>~VxMlEdj5smynXlgMpdEZ z>8hS5wA>Y@^W+lq+D*hwdaQTfP`y$J*DlpQe6w;0{RpCG^jbpic{Sf}j7A%;*Q3$KxA|A9^2oH8|5gr&ELfH~6 z!m&d`c&7Ka*Nv~9_VkV+e2Xh{cYO%+5F~#ZAHw1|x78w%fe^ z*atI0_@G@OJU%Og$2+|K*!(?0nBTE|cziFUvHd^x#sAp;X9wYbY`61a_#fNtb0q%n zQwUv-!M;KWdmSIb4lNJ;WXMS&^lQ@?t~)h^Q`(n>*U!K)EwaIg#m))gx6TV%Ep>hf zExHX3bLWI`bocJzwTp0{dcOGBzL$ouQ?GWR$K}``?#1LQLs&Ju5Z<{ag!5Yb6^^_f zRY~iYpD4Qt*RAb~j}>kW;Q?HSzi$uW-cF5S{X4P!?BH!qxC`O1%kz&Ne>bjK*98mS zz9)op7w!CH>-$1@v|ER8@%`vX=srE%^-u`=EIu=Icr1jcdWW#~lQ@s1`i9G&Mg>(i zDO5bi>prjb{1;#!Z5D(MuY_<#`vqZ**KwcVT}Qkb!t$N_g;U-RVa=|Molko=gn`{Q z`QhUC5vO|`)%oL(LO5iJ7wZ=J6n516#kzw&$GyY$kNOhlUp6tU`7QKTW#P>q(3R4z zZ#ekp5dQ4&Yx~cBMGsS_wqfxSGF#M<$CXP+d;U8fAl%=Ym0 z%DUY%dswa9bUI&wxhw#p7g^;z_?1_{57s5lWMi1C-U?CjW zHnbhJP9YrFVf!bBtzQUxb?W`(*Bcf>-!AnxR&7!U`!5>Wu2x=>zA}P)N3C$I*-b+a8PYfAMns zZ+k4-A9XSQw>|d%MSCn>i$c4$s3==^4!t`)-R6k{@e^8yG6V+wSsxFb%SOh7Q+4WP)B`Q2uFTZ2=D$-2y6Xb2>XVzFt2r47_vxNID65u@WJ9` zVdcJMVfqSXq0?$*Vf?_daP|6Sq0eSzVZzX|aBWptXo=6btF|c%7uA)8))UIY_LIv( z?e1k^5p1h~rx=t9nf>m9zY%vs+wkWV-@Q1pVf3bTrmt-JD)#rmrW}Yo`Jd&>@Zb;@ zgo8jHXvsQmG5mjs$`PF?|yL zo&kL{(#3xYEz4TH9Ud;LSrEz!psc^iu@0E2LI=O9=5~DQ^o%#&^e4=t3~K{B=1lB!|T-a zPmeE7-Up9h_!CR!ITqla;*w3|59` z)Bd5*)wJko)EeMzEli_b#(eluXfTbI8MQT`tz#Ou8@1mL3WatZxex9zm5uvl&D~UM z;~Mu{X4_*Om-5B^;>AzeddN4x@-aH3e9zc^@zNj-?^uP;3p^HHvzQO>S%v9ssNo@B z8s4=Et7p`BtztgBZxz06NsS&FHN0~b7VkifS1@XL?<#z2`@o~9G`xEi?z4U1QB)ew zEnb5~T{{ogK5DGHZTASrij^7rU5rt*M>tN5cA14g#2Ar!gyY3%pIP`* ztfetJ1NR3J>@Tra#`=oUUbFDGSZiZl#Avr!SRmHM*cvblZj<&4yFu}o;;}rhoU~(n z=_%IE%C&-_Fek4J{8o(D0@no_Bcoksp@monV<+nTXx~|ADaQ7Z9^oW0`~%iXY!PE8 zi_zXukBD_L_5&^?_eZ_nX({UQq;#1=JnhRV@Dvd~eio3S&+=qFiNL~Jo*XNl2Yvd~GayRoyy=r>u&#CjOJ zRE++Uh0bCl4Ir>!=78UDd>|!zcR~EX7^)_~i z82u~@i-|31tRNetzh$AjSRZ3ci_!10&_iq~V_m^s3q#B@CztgO|C9e%2lT~0Vm*`M z$kMK{{)lm88Q1Vbab#K7QXE;%wG>B|ca3FZow7nR8XwV8eHr6OKi60`)=?|Dmg30D zt}$PXBdfTU;>fD5r8u&hYblPb?plf?Yq*x;NPpK-9KqGld89Zpz_nB-4|FZX5k7&Z zdOyaIwOwP`7)RD|Eya;_T}yEUSEy)v@%pXrT8bkZxR&C`hOVV!X4^|Tz8FU~F45vX zHgPS*kxgC057+_gsJ{4_g`TqUzGmb7RR_}!v#_|>(#H70#B#L9EG!|mjIm|JXqQ>& zCAO@wMa5{JS?DdcoH0(^!)?+|v#_Mt^2QF453gXXkJt*v=8Dm7v#^xdipH)Kqy1)~ zuUJ20C#$ZZ9cN)_v6YNnrE;|AEG#3ova##MXxCX-R%{hxH;B=`v#^}ls>W^&%z2~s~cNZjCP-e6~)#t)=iA|pM`#6d}QbmIO`FwC;cD`D~YXXtfk7) zAF{Br*Z^Y#RgQj)-!gKt|$E{3!I{uXS=?!o5ko)S>VjfWE&W}MT~xxg@Ixl z8oO1D{*{Hb#5OW^n;88p3u}vQZ0un%`db#(5!=MrBVzQsEUYWGsj)}F{>?bD8TQdM zj+DE``Xk1XL9XG4>hr;_r8qLgwG>AxTw~c7M}{_|4RekAjd5hSYb+bCTa4p4=F|P64;x(voEya;q*YHE{ zBV%1-*%(K*bS=e^tz1iSWNX*(L)UK`*XGX2-$%A}Eya=TTuaBiy=(YUh;d|x5-r}N z9bHRtq|P;#jUKicer91k+4yE={+p)#x@ZfYV0{N+HDp#6&q&kc`@2=7B&+bZtMjy z+Hn@j#VU_+V)Uyl)QD|otWJ#nm4#Zd z?Tx)IMnB8KSg{?9y&*<_%fgmoXhOlUyeUS%%feP-b;jNT`#0mrPS{7&I8yH#>yH>m z@T=%KG}aa4TuX6eylW|rG`fZ#szWCCDxt8L{Zmy*`vb$?3j!bur=N9A04A)W|ndusSD2~i>jb&pT z*~7IINA`3r#gW;r;fJo@UaqA$vbSp~j_l)FI_7;{!we}WABLJh`_cLYcRHx80|6(+lh@c_O2N1GYi{`p?MPi z_P!YHGz&Y3v3ajY_&{ueu^q)G82eC+cAJGdv7L=^oF3~F+HV$i5}Ro3Ju%vG7V5<& z8Jj0Yd(J|G*e=FC7NcEfVVoG6Q*oRhiP65Z!0&Il_sPb-5SwC*6P1%qF?Na=?L7+< z#HJeiM2vQyg`LHw8T(X>_Me4`V!IjpOpJbzg-K#);>B?`h|wRiu#4DqW8=i=7g^wh z-aO73#y%ILe`H~@*i2(wdyhHkCs~*xHp>{tVUp2bvM^O_4`b(u(QmRaO>9qN^Tp^t zS=dc%wy_Cf^rI~7F1DAkFU9CjS(q-ix3RCp=vP_b6v;fYeT;oAM*qqJCqp6I*Vs2= z^s_9?65G$%w_^0SEbJk+zp?Mc=yzGzQ|tg^--G>|apXYkqiGyD$TijfaUM-Fu@#gW5YW7$}T9^Q<0glpVyj3Y<7#gxTapZW{QXDzKwG>BAbS=e^lUz%2ek<;fJo@S+1oxa<*$Jj-2CKI_7g-!w??Mtv0cPy zr&-uf>@Z_oFNXU&+}QqNhZ~zLM!U_z0b)lOn<7U0&BB3VM;iN4jCP!bgT#(9_LCUx zISU7i9c^r?80|U>hlm|xY?>JDI}3-39c%1ovEz&#CU%^$U&LtdSvXwmcw@hc(eATw zgxCqjb`zuhXW>Y(6OH{QMnA~HQDP?<`(2FwkcFegPB!+382us($B3O`>`yWJM;4A1 zJJs0kV)T?TV}Fa$f3k3**qO!_h|!O-aFWA#aV^D>OI>5x zSclGSM!U>4?l;Df%UxsHSVvvqT8blAy2gAlj$GwhiX&IMmg2}YuBA9~t!pWcT<2Pf zBiFl@;>ZoIr8shD0axES6-LBz>;>bNETD(X1x|ZU|eXg-=wEsEynT0cD<8#c$Tgm=uhgmpF z>_TI$#V#^-w%A3++KACEvv7{s#m3r-(LS?quGl5UX32+Xr&%~p>{4UxRBo=Z^Tp;G zYcEE-&B6s@ml^9IM*Gde9I?xdbrho=XW>GzD~v57Mtjb}MPgSP>m)|I&celFR~g$w z=Ro_;!X;u?8_QIVcAkYx#jY{dMeJH*bH%PTwx}5GJ`0zLU1zMT80|j`my2C*Z1XPh z-qH`UaD~_n#`e;2(jT&LrPz(e_7H;LV4tf#g~|H{J6Vs{%`LX3Wvgq!|4!3%7~gXRHs{ zzZpmF$3B|Ikq2C3{So8HgRbF+>Z6BTOL633*HRpL#5I!>GOOL62$*O)KHk*8csapY;&QXF~4wG>C5buGn_=Uhv19cJMUu?LK;AoifKJH;L}wz3%Q zG7EQ!J!EVZG1_Mq?iPF4*s5Z*(=6O0_K307#2z(vuh^r;?o_=%yUoIVVviZSON{oL zh5N-GH@3RANjuKM17c4YTU?CxoP`I)o;21=jCP%chs2&TwuTt(I|~nsJ#FmCR`FWX z&a?1{*fYkS5_{Izqhik*dq#|QpM}T7o-_8e80|j`kBdET>{&7TK^C46d%@UqV)TbB zJSp~~v9hl5IO!KzcuMRgV?m7mk%gzlUN(kdruIxuKgq%~Vy_r$Ax3}6!n0zp8e37< zjDC}a=fqw!)>7r@KUsKQ>~&-9#pp*_ctPw9V;#ikPg!_T>`h}G#pqXAcuDLnW39#L zUs-rr>}_LT>YCBdvha%7JH{4KIr>``UKM-SSe~NaW#Kik_l$KyxqmZ`%)>sK#*z13 zWBn21$Oo?Bhw7sbT}yG~BiB+K`Pem*HRq$#kCYiesv8$bp3vFEya=FT}yEUTaj&~WB$`M{7@YEt3-?U=x^6j z99iHR%SPXyho4z^T{b??Y&?^1&YYI*WZ^>`k!`jCB#CU1s4eu@8-P6{CG- z;cc;xj4digJI%s7VjmmpCiaQ3cf~$2wwM_0HVf~GeQK<`80|O1cS7-OKQq=tjCP!b z_r*Rp)>Dl3oP`g><{QgXwCgNorRCYzBIOk80|a@AB%luEKkwiv+#-7 z*T(V`?LG^iihW}&PtpFf@R``R#_|;XAPb+1eP^tfj^%q}^Tob5)?18zk%ceBelWJA z82uv)UyA)`?5h^>>e5fL@Rit4#=aJ#zhvQSv7e27BSyc;!Z%{S82eU?{*#4o#eOyR zof!Qn3*U+TX6$=0`coFZ7yI221_Ls5c z#OQAszL$+x;%{Tii_!10@Qc_2V=I9Dn{fmiT_}zeTx0za;|M+vQ$8G&>Z2B}r8t6* zos}=ekyfs;Y^+1^F?7-PqSnSW?l;Dfwyvf9;sa`xO>v~XYs?qpNC($a9KlD|Dx2cS zBCe%4(#f?HNARJx%BDEd*|ii$y116&2tMvs*;FSl>RO5;-CW~&==%}ZST@Fy?yjXc zf)B>Ej}%9Gx|XgVJ}6hdxpVUIT1&W=;z%#o(lO)XbCu=x^!-SQ7UM`C*HRq82kS*; zqs7x6@coEvJizpNgcW7~v_pJ9B33ZgPmK1Mh2O=>jIAU_yTtb+Vl9lVEJpjp_akC0 zjjbX^JH_`SVy%p=Dn@(7_akDhjV&!kyT$h-Vr`7I5u^QPA+(8S+t%1>VzlEd6vWyY zTV0IyjPFOp+8bL#jCPIhN5nc9;}V)|C#QYm`w_8@#yB|#8SNb3kBBW|>}5Uc(%$j? zh*&3MuZYp^@%@NcX6#il+CRP@5$kO1H8J`D`i)w~y>~J8x)}Wd{YGM4jlCg8zd*l{ z*rLYX6r+Ej-$<;RvA4uHYXJI<#1=F5wix{d{YGNljlCmAzsbU3Vm*w#D@Ol8zmZr^ zWABO4kI-)(ox*QfR&d=srDNX6HEvJekCbRJj%?yuiX)r4#HU3(byScv|sdpiuE&grWoxQ{hwkh89Pgi_Kbcbv6W*vrD)ga zH}Vu?Z=RxkXW?wIRjpi}qMf7PNNhD@ZIq(DqugQ)JzhqWx##d{2@6 zs%LWg0s4)^){MuZ^P@kY-$-nLv9?OlFVJt~DQ>f$QuGh>8+nSXhf-@ByVz4?zv)=$ zFX%TCTgUcyj*f+XgMK5ib&Z`XM*qpeT(R|xohL>=LcfvN`tckTv*}OhHxk>x*!e0) zze2x}*oMX~5Tk#g-$-mDV;72TZ0strjg8F_qraiwNNf{h7m3mD&~GHRsj*AI{>?bD z8TQdMj+DE``Xk1XL9V6xXs~N3jtp@v#gPivV*SCGF|-+Nm}}f`j3dKcOZ%;KEya<| zU1Po&M@G1o;z*TiDUOVEEya;huBA9q?OKW>qg_jJWDD0)92w(Us*`J6OL3&uHJ(R| zBV%1-*%(K*bS=e^tz1iSWNX*b_1ng^6i2poEya=TTuaBiy=&Z_z8@*kVjS7gwG>C{ zTw~c-Khyru|0x^a%xwH(*+1=_JVzf*2e~Jw@c9|IM6aAlJ zLyTQ6Mmt6Sr&xutJVkp&|EJhcV^^pg?H2u?V#ADGDMtH6|EJh+V^@jMj?w=qR%z^N zG1@cwjl?!Lc8wVA8vRCMBaB@uM*GgfonlqSt`no3qu)quq_OM8Xz%DZ5*uag1~J+_ z`i;b@jom0l`_IC?Vxx`SBt}0#zmeD$#%>m)KcL@8Y>cs6#ON33HxjEccB>fu1N}x~ zwZ?7}qo1JPNNlXJ+r{WF=r*HRoA?^=o@jjqM|gK=a+ zGuqCsalbK+Omr>ncam!6i24Hmg2~6uBAA# zyK5HU}H};|!?GgQ- zVhzS#5~E$B|5I$7vAgB_v`_SZij6n6yHd1M^nZGa&$D@o_KN;bu?bf09&M9$i~dis zo#X!0&rbVA|EJi*SWb*~jQ&rtNye@gqdlYFNNg8l*ND-s(QhQStFb&q`_96fVv~*C ztK+1dqu)quin05|Xz%DZ5}Ru5elglT`i;b<8GAsC_Me4!#db6HmF@%m0R2W{yBm8@ z<>(LSHxip}>>)Aw1^SJ|W*B=$jQ)XsBe9vro)x2?px;Prma*r==r8Cu65GSr^J4TH z^c#uoY3v0t`Vabz#AX|NQH*|sej~BHjJ+gAe?q^J*xtro7NcLG-$-m9W3PzOzp^l2 zY+qxqiqX%|ZzQ&#vDd`tZ|FA?+uzvhV)Q%o8;KoY>`kzLGmadHeKd_D2f4=jBgT<~ zT}$=RA+Du3a;R%5jvVG%tUnk>4sS*~!Zq$U#*rgkOZz>_wG>B=c8&RB9683d6i1GA zEya=JTuX7}c-K-KIl;9QM^1Dt#gUU-OL636*HWE)ifbv3oa!3SBgT=_Tw~c7M^1Mw z#gQ{yOL62(*V6Sn%e53o&UP)uk#k&2$9%49++K_$=apzNj-2mWiX#`e# zDH}h~Z2S$`KkX3xpJE3YdrOS=i2hHpgN?l{M!Q7+r`RFJR#gi=?Gyc zDf&Of4m0+Swn=+M|EJjD#=cg4NxMb=r`Qq3-c>o;FZw^ljx_e380{GSpJGQDn z#7;2wi5Tr4{YGLZ8v9g?et>=>v6GB_CPsfizmcxs$;LhxqhFxkNbD42^Tp^N=r(QXIL)wG>CLbuGn_>s(85G9J$T46i04%EnUAmTuX7}PS;W#xy!Y5%y+xS?Zr59 zPl*=e$i1$mIC7tBEF0qp?GN+k$;RiHjen_nfp&=b^TaMR)=sq&?Gf|miCtuDB{AA1 z=Fbzm*jP_7+9&4E6T8IN?=9l7&`vRbp4g?vzS6PKUNL{3*j!`nwN2VB=Fbzm%-G6e zv|r4hCw959#l>jHm_JYK3S)ohSZL3fcTDU`V_)l7XxEr`OzbLS9kfl_H|8A^yV}?) zVzhJ2J0^CGu_eT4@0fQ?>{?@g>R4#^n0HL!i$dj%yUyLJ9 zxt8L{)2^jB@{DUKjy&sHiX+dtmg30s&|(};apVQpQXF~FwNxj+xn&X>|HV1IQqo9#4GWHv3JC1>*x~~d(zn3VzhbmiHkjDY$+WJZ6AH& zVow{Jr*iZG^off-W9$Pl`U3jI#hx|xz8HN1ed1!z8T(L-zJWe*vFD9_Bt{>>x0GTp z82ea^zJfk+u@{YfB1WG}6wliavxsaj{p7y{W}K5#A7RUf*xCi2BOi**b4`$;p}r>=3oF~)r6 zTH5dDuB8|=-!exNLl$+4%Ref7&7X#Kqn>_JbJh5q;uf9~jG1v`h4f zi+yP9CzYdpqEB4xBV#{`(N57PF7~mppT%ge=o1(F#8_v2<3_thpSakk#(q&b+AsRV z#Xd9ks~GJVed1!D8~aU+_KZGpvH8Y+7o%OHPh9K^V}FRzzR@Qx_NB2u#c1c~6Bql+ z*k59_cl3#ieQoS-G1@))#Kpcbwm^*bk3Mm+Z;j#cz@8E42j~+Q`_32^05e8^K%cnS z_r}V^=ojb{7yH3j3o-f!`ozV4G?u66C+HIw`^i{Km7~9)Ph9M0W39yKH|P@=`^8vm zG5Qbs#KnF!)<%qegl{RuelylqjQ)f^ak1ZxwG*RXp-)`w4`T=Dy@LLQzC^JH~j$mOvZ7Z%Nr8v^dwFW=t-mY|?l5Pjle1!E_7h>Z4#K5?-!W0}g)F3~40*1}k4 zv6jYO6>Dj%ix}+`ed1!RjCB>Gz2c2WthKR4#b~$a6Blb^teY6^7k%PlZH+A^Mmt8I zxL7-5-Nk6n=o1%fZ>)zH?HYaJVjYb26r+8kPh6~{vBkw`=jam`Tg2EBVzhVkiHmhI z)=P|bk3Mm+%vf(R+CTcl#X1{XQjC6pK5?-wU_C=0G5Q1g#KpQ=xxQlb3-pPLEo$Yk zNUYfe{R4gCV%@CV(qi-z^offtW^5TT`V0ER#kw0?R*ZgwK5?-g#+DPK|DaD?tf#T% z#pp+vM^x{ciyK=(jQ)hJ^m$3sCM|#1q)0;KD4M(k62zt6B{>x+FfeLGp&wFY>9 zj4I2xmTISEU0W0RVpLhqwG>sBcP-W?-0up_Xe+wbfbGSo($BTD-<4cTQDtS$GA{b*}%0FRW@|3!H;<(*SNhHRW>fsVpQ40 zwG>r0b&X|XEkXOkh!oj)U$gPmWdF27j7Sk%+Sux1v`6&hi!Ebp4Kdm!dh*4VHP&B@ z_KBW+vE_{ADcUJ|^2L@nmZxa1=*bsb!C0Q6-J&O7Y(-;viuQ}1e6fDU@)YeDJ^5lQ z8Ou|&XY}NYt!yk$(XP>xFSd%YzPg^YZ}jAgt!iv(G1@tL^2Js&mZxa%=*bsb-PkfJ zN4rN)zStVZmKCG@qbFaizp>@S=m+S@7hBU9TlUzxxu(^gx1m#>DS8L`^_6pg<-9|T zUV?sov4O_!6r;D`XUDjewT#^*Mz2A?zS!Ev?h&K+;3xiY@9P-5SBzeSa$@TmyHAYX z#PtJXx%G_QEk>`xcmT2WjomIr@4|Qhu?>vfFGerJcmS~t!HQFiF^?!GeUGaf#=UQ3 zTgg-OL5vO%+t}EnDo0<$=m4=zj6EhspTy_@u}zI}{qy1$u>UN^lzOEIR(wG?AUx|ZHtM!A+^Otot%#*B6?y}4}RT8c4aTx;-aP~%#9bE$QW z=MiJfSl3uK#+WT#OEG3E*HVnx+O>53ws9@JxoqoNiZR={*5Jpyy=&ZFj4?ZuXwf!y zbS=f0I@ee>dJ63iqg)`++cz^Ce?s<8JH#j#v2tTiiqRf1%0+CDv8Tjnml)+DHrUwH zVzf_;4iFn+>=`lIDMkl~RTz6#jP{Dr0b)aqJts!H#pnRBVaA>pqy1uZfY@+jFN@KR zF*-o3(%1`Pv}cSC5Zm0?OJcNZj1CYRVeCaQ+BZfAh*cTOQ?zr84iFn@>=l)xy<>EM z*eGMKiqY;dIzX)2*lS|6e~bDK5Zm6^hhp?Ij1Can!Pv)Q z^f!zS5Zlq%Ct~zFj1Ca1GxjOizu5w|6ZX+Gj?}x>0Dq5hq`@^Dj^fBT*HRoA?^=o@ zjjpk5j3X18(ROyN0r_Gandn;D?bJ$xwc9B#OMIA@x~6}`qXWbmjpZrYE5-we zO)xfJ+oauM1c2Di#=a1v{bB@w*hFJriqVcS0zhn%v9H8v&lmw9wu`Z^#c0VzhItt|vCd*mq*IcdSY#Hr3eoVzhg#N+veV*bic~{|u`J#{0LM zu^+|g2UwL%YPt)SW5A2;TPqkH(`x3<(zFfe{;s1zbZu^!-{3fxtHbq-C1!? zdLGsIoY)azXqqcmg3K;uJJr#{5j1vmW}b}bk|b+ zIm5LSf6jC*UB9zjOY!Gy*HZjB$F&AO=5t-+_G0`wuSAQsalUIQ{#@W1%f=du_J>vZ zATa(MXg2=0?4NdsRr$mYGPXdB_J~#a#11yb*9>ljc8OK_#11i55Tku!RX(vpjjfAU z5SF8zVpTq|!;Ha2jL}}PDxcWl##)HcZm}w#*b&BBiqU?tDxcVq##)Kdj zi_xC3DxcWV#@dL{uCXeg*fGZ1iqXEYDxcV~#@dO|&ao<=*m1_%i_zY(nwi+~#yW`6 z?y;Jg*a^luiqZbj3n6x*u|>q_2UyKa>?C8I#OM!L%}nfMW0@HJ0;`#conoxB82uv) zJBpoZtcw`^1gn{eoo1}782tsSnTeflY*8`#4OTM~JHuEvG5QZyGZQ=0*kWSzBdlg7 zc9ya3V)Q4hW+ryFu^wXdt1L8%onx%082t;YnTefiY;iIA8CEkBJI~k>V)QqxW+ryN zv0h^IJFI3Vc7d_pVE^WO%pB~aX&kxGwFdZmj3XDhhQm=Dx!AQ7M=o(K#gR*0W7!x- z<~E~U=2`>t#W-@gYiYk%xR&C`m98;gj3ZaMmg30OuBA9~jcX~6T;>h*T zn!d-};980!H@eo~*Wf1CQXIM2HJ(R|Be%H5vN4X_>RO5;x4D+$$nCDB>vxB1DURIf zT8blgxz^yve79@dUW_C6lxQ)I-0ND3Blo$+vax=q{b5x;2&~EHn2j$f`==dZRX(u` zjs2`RLVLujd}0?F>!WhCORUN#cCoRg#Au&bl~3#vV|~SFr&yIw>{4UvDaO!Vu_~X~ zTw_bC9PJjX@`+t$>|8X*@r-D{Sd~xga%1O-(T=eypV$?~&KILSV^uz}D~&Cq{n4(m zDxcU@U_HY$H0X1Gv~R4+Cw8@!TUO<0=UA0b>>6W>s2uGbtC@*iYiu zZ!y|`7WNjq-q_zQ;<3;Vu$r0J4aSz!vCto|nwi**#+DbOUtl#ev73x_(*EclS=e9f zW@D?1(N8cdrPwXTmK3AEWZ^)uTa7Kyanf%vE2Y?N##Yg>+*ZaniB*-NH(`!S<-FZ; zt{_IQ!W@-icNkkyjNXMgD#h+J)=!LHhB+$5?lQKL7`+X1REphgY-KTe9pIv#zD6@|MS`~ZH*g9ggOU$(@_K>l4#b}?H zqf+c)W9y00PBBNN*dxZ)7o)wR1+0BM&PR=HAV#}I3z*nr#x@kA{h|d->~UioiP4VH z0w(r^u{nw=v}d${i9KoT^tN&Dv}?40i9KcP0+pkEqXkUtX=9scf3$P7fQdb0Y-2In zJ6gcRo;9|qGuEt|DMc?pdzf-QXE{&Pk;+?k#ONJp4-6^hj9!ISF0nU^Z7xRdLc5mOo5n_n(aX@TCH9uFDlvK++O@>qHa1d>UWaxq zv3HD(5~KH_T}$j;W7T5xLbL~ny=QDR*ncgmG>sv7EJ^<|g3QA{n!c;N?^*-AKSq@g zT!Ygos(k2LiYgzumZHkXuCZ*4DxWl?ed<~R^2Mm~nQLjkpSzZ#%6!+DFGiIwTuV{q zOV?6V`O38vRlasDMU`({OHt)p*HTpZ&b1U(zIUy`ufY$lrKs|wYdnt_Reo}fWn)zN z*|ii^esL{Dm0w*;*Y7viQdIffwG>tUaIL|Q`A^rly%<&gD$!z8`P;P=RTj9$vayDw z{h?h;Ha^d6d<)q>?GWu+V(%LpD@J=nyO!7o#%jfAmuS}#`_Nd880{17T4Em=8zV+L zMZ1>R$Hul4qrIYCOY9S4d5U(6b}g|_<2IF|{i0pVQ|$ZAQ?z5WYl(es#J(_=r)b}3*An~ESe~Mtqg_kvD`RxjRAD~@J>^oz5ivEChEwS&7ZKZ2Xzd*Z|*bm0?6#WD3T4FyM%Tx3dv}=j| zWGqk7U(l{4_Or2v_1;UrLA#dNFUGdkvCx0et|j)Xu{p9``Vrc-#C|h&p&0!M?OI~L z8@p7DeuZ`|u|JGmBu4*2yO!9W#x544pP^k#>@Q=Nh|%BBt|j)jv2An?^gFZ%h%GS2 z)W6y0#es26-%b!Zq&2|bV;m`SE!9UYTuX7JrE4jUv~n%hABCXxR&BbSJ!xMF_tds zT8bmxT;qAfII@^)EF0rUch^!J>ET+6BRyS9*Kcvx=FZ8#v|qxt6i0fwmX5i%YusLp zBTJTOF^=?cEyaRE@Jc@w0VhjGq$T3eF$w{Vv8A@EJj~Ko0nL3V^hTFQ)uN9 z>tSrF7<~(^Tw*%yBDRXLlwxh2&s{@n$GR-axvJ&dS7$`4$GR+Hs~O8vw0^A1BDT7* z{Zx)#fOT2K)-ble7`*{=(1`Un)~{2%)AS0=K_j-Nv36~8#-nbp6nzCV(kSNu%h^GU zK7$!)#0DDcC`RAGj5K0v8Cyh*K7<)*#MU;}NsPXP8EM4UF_wwZr!XUp*t*6#i_y0* zBaPU4#_|+>3^US*t#7Q0%F)*_BaPSw#=45p=P)CU*oMZsi_!NmBaPTb#ugQ$4`N0d zv5k%8Df%L2q!HW1Se~L!Vn!OVO^tQKHdBmAZCk~^isMT0@8UfC&ANUw?4xOnDR+%^ zON=ptTuXJ;VAoQN8RA-sF%_=Gx`q24+Ke{LHSRaYnBlIa{Z_h`V$9~QF<*=^BV0={ zrpmPxV@A4`V$3MlQjDo~EybA8(3vMFDaO>g#`B0VW~^&08)M9t zuB8~Wm1`-+Z0%aQe%rVdeRuU^W)yj#Vr+4h zqn%=AC9w))ONh~4F|(4`P-Cl!(QYv#jo2__tBcWoF(ZxGaAUp1Xvdh5My%3UZ!y|4 zW~33@+}M(0v}?>rBR0ZVA2HfDW~33TGPaa6*5rMaqSa%58s!{mIr9{)AM?|QjWV{1 zQuG4MPva@Rc`mJO(i<>8jo4@_w~QFQ0`t>|ZDDL#F?t8)rx6=tY+%P|A@mZ=Pa{@i zY&n&qw_tu6v07uxi_vQ^KaJQ}V|j|+gZXL1wltQf=tY>HMrqp_95=!KY{My$@*TDaE#c`wU<6iZTUVeP&X_R+MLrQS8xCNZisxRz?CajvDP zGTyZmRT^E3wF&n-p&4yw*SOypRVKQY_B+Y76jgR{jrn3!+10faRVKTZqRJH4QdF7h zT8b*uTuV`9H`mge%kHkFs50HPR71~jEk%`?uJJr#RGH-(%f_g(hifUS?CDyHDzjZn z*KaS^=FZ8Z%HFP}sIrf1>6rI*joXV+Wxo?Gy7XiH$e5z8LKk^DK!q8rwjO z_KJCy#3mTqP>gnq`Dw&&NL_n4nXY?`q_VzhtE zPb0RQvB6^W1I$k&w!5(*V)O^hPa`(n*u5HmK)=BJG-5N1-6ux>!2C2~GmTYfoAeXR zPa`(V*ibS03+AU0+r!u}G5QVWrxDxJ*l;oW59X&4n{BL8jDCdqX~gz2wv^t}=ueoR zMr?0m%ZkyjFz<`lKE^iJHtAoO_eE@9VAKM0Fw=|J{>Ba#qu*hs z7qJ73RbiX|W-rTu*hkYia*%7RKVlp?*tJw29pYMwBZs<{;>cmH#rlJBBA zb}iM(r?{5l$f>UJJYpO<%{7*dapZK@QXDzMwG>CrbS+)Kvs{}yCyyg%yO!d}Ij*H+ zKG!vFFUFDcO0*b9&UY=vkqca7*%(J?f0(gIHh!Sl_(=H;?GQ7)h#h2Xlo;(1Grfo% zY^++0c8Qr@#11jGrx@)MGrfo%YHYR`?G!V;h#h8ZFEQFHW_l4j+}Pe?v|G&dB6fta zeZ*+LXlGLI%#p_S6{8)aok{E{WBZBGp3%-EcC@iPMY~2jlh`rFMynj{8|_SD#~Ry0 zjCPKeC9&g-jS-{0qh(3#cw;qUw0pEHiJf4qR*d$KmL;(hjg1wfAE0GP>?C8E+REq; zXju|F+1QpUN54SJlGrK6wi2U%pk+zyRAXC<(NEB_BzBsyZN%s=Xju|F-PpEb^c%D+ ziJf6=J2CnXT9(AlG`77M{Rk~fVrLoKL5%){mL;*XjqNB#zrq{2*g3}P#OPmmBNsc@ z*iK^fGrW<~E~U<{I}KZoIr8shc~Tr8siCYw7yk;o96ec^tXZwG>D0axES6-L7$aF^=3*qQy9JuWKoe+~*q0#yCRz zL(7tEe2&?8z5IrDh?XU>3yn31(H_yVBzBRpabmPfv@D5TY;3$3?Gr6aVwV_e6r-J@ zWl8K(V-v(^uV`5kn`>-mG1@I!mc%YIcA1_9X}_39N;xk#cC8rg81qPpU14mZQnY8x zBjqW!CFLpFHD-q90(!9Z!)>Q;Pn88FxHIwwqG)3(UCVDY868|G~3RuihhO}cf{^7HeD(D8)n?`6whIXQuI5_xZ^3Z znMnPcapZpNqiGy@z%|w%F^)XwTB?s8axKM?hh0l?DULkjT8bmjx|ZU|bFQU0@;tPbwmwaYBQLm?;>e4x zr8@Z~*HRpL*)^U=j3ckO#hc+rR(>GYjfx1apXFDbQ?x_O93}REu{=e4#LQ7*4;sr; zv`fq!CH9c9SxV79F>{os=u>+rMLWgJQJx~(Un$xvdKx@Mc7Rf}Tg)8gDY65VqWxm# zC{K|cq!jHKGe>!f>|mv6&zL#NQ)DOWn$fN?bClRqc7CUb(Y`Trl-Se8P8Fk_W9BHa zXN;XDMtjH1QDV;;J6()+kC~&yo-=la80{Z3?ub2a?3-5c-qH^+C8J$w@!OcTvju zuH`&mIo~bGN$fHhbDNzV;LQ!q`>XAMG1o`-y#N>}oOEIllH2`^wlgVzhUB?I-rN zv1`R>_xRdR>>Fd(iP8S?wV&9x#;zBmAK+_0vG0uCAVz<{*M4H(8@tgNM;zRw6ukuB z{we1VmUB^P{Jxgnf^YxCel*rij9!Cpro?_SmZ#`F_-0D%XJdJaUW9L^#C|chn6^o8 z!Z%Z5zZ&ZGc+7<(LyQRTn>75+c>>a%v|B+pHwO2IYOCNZj% zxt40D7OthJ($cjQRa&_gYZLCbbu(HU*SOypRoc3i_RH02<1weG(%v=Zi&2HEwZ?oY zs&LiRsHLdF`7NTBq6+7dh+2v&Y(0)ziYlF5OHrkZYbmO9buHD9z2mFk66zvq>{)x3R)>Dl3if{kKS{qwjjCPA}|HRrDTSAQX zi*NtL+8XO6Mmxs0e`4*7x9-jfZoyrGL(t$(f?KfQ&cWT?-Q7J{aCdii zE2IP{!J*Iss-U>N_u0o7a5(M0`?r?Y+Pm%L|10d?zqR&SduNQ<&)I9vwY?wf9&7*1 z`iV_r#`?$FKeKVgLa`69_RnlQu~6&>to<_^Un~^+0&D-wCJ^Is_;1Aiz}i2v3B~3% zW1nEnl-WdLtU2z-e!(g!vx&v#^j%WeH&`WQHi=k&zdrU4R!NynDmJYd`v|L~%qA0? z&W!zpRZ?b?i%oCFzQQUgvnj-8Fk^pVm6X|(Vl$et&#+3$Y$~yt%-C;OC1p0X*vw{p z53owgY#Omyz((XJXZ>-Ep7V^SO^@S8%aQ5QtMO?1^eRVYNUw5a#`N0w!5o>X7jNeD zc-)pFv!qwYoi)A6kpby(yOtxfrB^vJdwP{4bEH=}GG}^~BfM(X-mA(H)^HmyD@S;z zp5|4K%#&V?$@8XHIWk{*d>t)E=1-6Nwj5a?y~>dV)2kd=D7||B7EW*Yu*i``(yJU< zG`%|K#nR*RwH#UeH(tw;CDN-LSu#ED+xnaJht+I;@W)Pdhj8%)Ze`Yg+{aW$pv0{X^jFo`i zawa{?Tz(eTG}iu^&8%lB_3LM0rDG+ax12@KGPj?F6_1sGX0wV7G-KuW>l|t}Kx`f} zb^ulan$0HG-@oIq6R;A{Y<963%-9iF31~Kl*t~vDb_P}gn$0OTpBXy@D*?^s5}V(Q zor0BsW^;=j?EuNG@DOsA@9eI z!U`(0`Ncx9v#^57Yyq)Q>@cjLGFwnA6gv$osLU1;3&oDZ3M#XO#X_<3u!72L5wTG0 zK&+rLTU0C*I}t0W%oY<1#g4=ZDznAKLa{Tkg34?Ou~6(#te`SmQfy(oXH1*{{yZ#x zFX4aVam_OR-#_BWKM2RDpD^3~!v?3vk)|ciQt8#mwRC!wILoA0iL-2aZKUCGm+Qq_ zK0O|{CC&=z)p1u$uM%ga^tfG1oR!n7#91Z1N}M6-RpP9gUM0?I=~d#ao?a!+8tGNy zteIYo-b2%?#91pnzK)hSYp2J3TjH#fUM0@D=~d#amtMVp>!&w-SR~E{=~d!vm|mUp zM(OeSTHbTZHdGB!%9Hc_#oBzXIhgkb(HdyR2-<^Z?h&fqi zONl*d#=69uEVHG>7V%ia`ox?pvt`5<`SzGFwY56#E2ovdq>N3&noHoGi0-#6q!eFel4wU9nK? zAI!-zTTd($`v`Ng%+?nR#eTwE7PAe+Lb0zfm&I&Du~6(U%w;j#NGufl44)I4Z7ddw z{f49z5L zIkI&x-Zts+xGhJvO|Oo-U3!%x+o#9vT8`|HUggM+=~a&GlwRe?&goT-?2=yP$gb&C zj_j6R<;d>o)tJ0TdX*!4rpMROa%8XcxNpmmz0<24*(bfqk$uyv_iw-Sh7XGz*+0F? zkpt4Jb3QOVK3~g`gMQ<+9630>%8^6T&agX(g z^?hdDVxd@+;fo3Wm;zRzrXu@%f%*I3_Ywu9J;W~^_l?=#y`Y;7~v zIo9`??IgC68S5SE`^POhILV92aB!evGu`5WR4t)WAyw4?6CAWezY7pJiQu^j!3U^ z39s~kB#J#N=>ksSuT;qqT#y4>N zvktMo&+IU3N2&<&b&JlaqzkRWruu978T(L*Y*i~31Wp|rONf`RjS;OUZu*7=~b%SlwPIE&FR%| zC%2?msd8(2HA3H(UZu+I>G5^6RJkKP?%Pu3&h#o(?n! z<-YXlobOMM&(~7rf!}y7RUS;QQstraxNl1p)*rst-8DW;HNKbYpLK}u?=!npY;QBx zBfhcE>@u-^%vhKBUU#$0#r8F0ed2rF&8`sJ&y017?{zo3QtS{j)+@f(-E6qn!Dg&m ze6PFNRbmI3v3~JQ?q*ku9cacn#y7c}T_bj=8S5Dz+Id#NwPFXDv99rr>}J=A?Qh2V z#!4Eq>%~H`&asll>;|#JydUcwD{0Jb6g%9Eb&r)aW;cl)VaEE$N*c49#f~&%A7CYo z*)3qD*bi7qV|J_dJIed9FR+rv>^8BZ&DbAUNn>`q*fD186Re~$yF=_)GxiHs(wN;T z7K(j?l{98|iG^bSU?q*&-D1c2IoU^8Nn>`8*zsoUC#<9~yI1T4Gxil$(wN;RcA^>k z3oB{N?iV}BjD3ccG-eNooovQ_!%7;n2gOb?W8YyVjoCwDr-F^h-%cLJF?#06Bk6Jc zXgTs|dNm$BmR{w^b%_;WW{-)TX~z1*N*c4r#m+Kg zonj@8*%M-Co3UQ8lE&;wv2)B=w^&JI_LSJUW~^VVq%nJ1>^w8pF;>!;JtKC$8S5D< zY0RD#yTFWfjg>TJ&xu`V#`?xe8nfrcE;3`CV z!de!yKZ=E7e_{2C*`LHhvCptx#q7^wq1bO&pG5^6RQWDF?%Pu3U+Gnnk4vww&UPsZ-M%8J#C6)N8H18sS=8LJp8RLnjU zyT**wj1?+oABkOS#;V2&6|;}Ut}|nGV}**@Ct}x|vC6SR#q3kD8_ZbkSfOI}nb?hH zta_|aG5cKXCNow)R;ZYLAyz8JA}#>x%-Aznp`&R4@GxiWxsF-~xcBdJ82`g00{v~#o z8G8yVRLs5?yW5Ptg%v7hKZxC9#va286|*13?lohtVTFp>zs2q|W6xoQirIg}?l)ua zVTFp>Pht<4u?Mk2#q4LX2hG@vSfOI}U$KYG*ppbHV)l#J!(hyqc9;B0mEV67_Iszc zZjU(Dcd)9m=Wi~3(&O0DGNvoN8ms!IR~a)>dX+IFr`N_79(R;pyiwERaa+cWmR=oq z^zFbwTu}vy~>!e(yNRaJH5)7anh@d>6cz*%((D+{^l}XdX+Kbr&r_k1nE`A zOqd>DN6VOr(&N4@VzWDq|*1uin4O(i=W3GG_AhDr2Tdug-bO^!R)&W2X9z z*D_}6^eSVfNss%sjA8v@g^FvuGcs4GJmUIi9b$!wSs$@S%~+3Ep<>o0_Lv##5-U{9 z`iebn#`?qx6|<4Vo-kvbVugy?$YM{Lv0kx4#cUL@r_5NlSfOGzs@T(JtY559F&j$zWNGqW+oo-<=zV}**@m}1YHvA(fF#cV9G7tC1aSfOGzw%Chi ztaq$XF&jthB{SANR;ZZu6MNZ=^^X-QX5)&zV#Yqe3Kg^Q#9lRHKVXH5+4y3wnXxah zLd9$Xu~6&}tWYtVQ0#T@$3DRd6|;%N-Y{doV133-ZEofVTFp>6k?&+Us$1HHl^6x-j98T6)I*^ zf&E(jI{DdsSg+zOr`EHCVi#h)irF+`R3qXy7iJDe_x?CW&s3Q6NUu_5 z&h#o(=1Q+pW$yIqy2`-xDplr5uSV#3)2mdOFFn4FmMZh7$9-F>ERbHM%7W=tsw|XV zd;j>;CjZT`M#Od1U)33k|MplTVm7U6E);73t3u4C6Fb%&##+Ft5VPsU-f=guCa@~R zYzDDEnz1&p4#aFmu|JuyMz9XVY$mZko3U1~4#aF`vA>wHX0Y6ODVP><5y>G^v!paY`*~R{9#@fQl53@PM{$|D+!^#h{ zImP~N##+P553{+zO0nj!^22Oy?e`Dw$J)cn53_+{ADFQQvGT)g9o`^1d3ij^N`3yOVe#+t>-53_~D zJ_CERvq0x&{G|O}pPoM-|3B#^y2kI^Im#Gaoz5V%LHwBtN9j8mOmtOevMxTt-9vFf z2S03&GHz$eah@ObnM3gq-k4oia1~jSLeKIx;pRQ)YX~w&aTdG_jh&f!MA1i!M9DX_)=HrG<+}e+xX7mY4KgB z+u?geZ^3tT{)q3t9E|UeJPyO{E2H-9Og2v6&gK*L?OZc?-_BS4`*s$dxo_vNIr?^< znYV9eyhZwU)*sZj^W1WMJBttL+j)Cv-_Eof^zCf7S>Mh%TlejZjRCz+XDs}^C0-yO zkB7fIopC#(b$+_$t5=6~ufF7_@(0MDO@ALQ=TK}De`f5$3&l;W4g+~)qzUnOBK+?N zZGEKv9-=Sb8`{~tvr}h}&R(6JJKJ>ncZPIU>CDj?*qI;yo4d1VXF>cuH~gWUtvb7R zw!`0h#39;$M_Rq}dgsW#eRtu%!|1r(>U^VZiASS$*6ZTguh)ft`~R2z@O{D0xB8<( z@Z65R$JqNej z((JeY8H$Aezv0gcKFRnu{lDRy|NnZ9LpR@PkG*!@rvH#t<`_8tz_~YFaPGPL58Z0_ z?Y8ppaA{{c)G9{;{$Cfyf%UqMpK7t6em?l!CF8$+I%|WB(K!g?9sk@pFGsvCX;nA$ zDA1iQ%#Feyj@|qipnbtAANTy>mzC4JZZw!bQb`XF`m|r0`5bM#`r(&P-n{zZ7g=VH z`?ljUQQCIpu_x=e{zxS~Zr6^>K5pC955G*UdOm-ol3xAr%lD{lS3msX=Qn%x!!O^f zwq5=3%dw$(^}{a)B7612?|A9e55ME5$M>|o2NR@MKm0Od>UH=dmGro;KT=7re)ydv zz53yI()94a@84wU4Ih>tsigO-k5tmDbDlCiJn-w7D!n?Fsne@-o+iDvFMkl{A57x& z4?29xQmjKv;xl6{m+BJx+KeMVru12{E-|&=Kf3i5`^Jp*iK+c&BZ+-$#yZ6$zEph9 zP^?!>`}cmMXul_|ShtuM<^4t#d&&$Z*!O0mi9KzG|A2kt+qI7_cBOxr;5&oKhGt`k zJ>&flU|`>wjVbo58S5M8Vm6l8b7rh_oQv7mV$Ykg-Z4qbY#gx{%vkrBq-BQbOi(YH zvHmeh%WPb+m(17)n51Pkp4iJ~><3KJG8XAoi*m`va4-%qA3j&5S>r zVUm{FL}IU-O)S>&qRffGChfdo#=gO;GMhyEeTI`~eX@Tro|;W6_PH7R2tPiXO(yn* z+2mp)nN2SCPqQh+MmC#5>`OED7shL|DaF1rW1nGKmf2KdUz@StFiFd7YO!z3*mszu zWj2l2257DkIjN{Wj?u;~euUbVU{9MK#{hqbk{%v-Jeoeef$$d4hcYvyS2;3cdfc~- zp)>X3&72;O>km=Vq?VXW{lf^R>12VBYj9N9Icp58^|V^ti7-L`kp4ZvI@|j!`*+cgP+d`2AZr zy~>eA(yJUk^X<&88Roml^95lMT&g5c}SYb&AP`W;2TYV8(jIWJ9x= z#C|km-D0w#+00`9Hk(Cke6v}^{$s{E#$-dYS;a!Jo-x_bY=GEL-fuRsiOgmb3&r}z zBrUVq#eVjFtaD7#GMhsz6zd(6w9Mud3&py}BrUVK#6q$DF-gk|L&&exK(Q&z28xAZ zKVXuU**s$Z^?9-{FiFd7Ua?=y*dLgrWj3E!sQJaFF`Hj3)B*lWR48NF?#06;Pf~Kv>aI~Jv{Juv~+r?80W|`=~a#_ zn;!RVW9V|dc+029NQ_ejOX9SLd=xdUej5rq}jm9t^@mOg40l4^oYXVjW_#q1j-u zP)mu;Znl(IDApw=8=5UG7K-(W$%bajh=pREVzQyxvSOiFub6CTwwzcf)-5I*nk_FD ziuH@hhGr{>g<>6JvZ2|EVxd^im~3dal31vf#pX9#Su7Om8`HAPRuK!uI>)puvms)k zSnrsYWwxqVDAqluWtpue7K-(cX<25gi-lqzU|N>h8e*Z?515E$wx(Dp_5~(lnGF>S z#s0uVEVH%5La|RU5zB0Cu~6(6OvExew(iB- zCOsav<;b?_ao?6B+oe}IvVD5ouI0!M=~a&Gm|o?`PU%&S?3`ZZ$S&zsj_jIV<;ZU7 zRgUbQ9$#C_kv-C@9N9BHJaCTel^*wPIkIEVIjzx~py9N9m;%8>)o zt8+duJv{L1I4He3mxI%*b3P=!wl8yJGd#o;Lf80as_{`>|ExnyAvD`uY&0`GE7&S# z-D06wmzY9mwuM+I)+eSAn(-6kQmj)Xq4!Vxd^)n0jTllUOL$JEmTl z?JO3Gb&si6X1j=mV*O+4mD#Rhq1XqQdS$koSSa=bre2xtE*6S?fvHz!dx(W%e_-mB z*`8vd*e95JWww`CDE14cUYYGJ7K(j?saIzEh=pSRVCt3GzG9)+N0@qLwx3ui_7kRF zne8tYihYHtS7rx@g<^kU>Xq4nVxib)n0jS)kXR`88>U{F9V`}#eTS)6W`~GTjmR81 z6vyb9BZsBOF`(th;pyRl$Ddj)2kdgDZR>(lhdmlIVHWykyF#F962q$%8}F4<7;d0!5QgQ zj+~hu9ymwNN{{=t9639^8oSR)uX5zv^zgv%-+Ad(j+~!f<;Vr;)j4079v=90T$Em& z%f;!{IbV`q+m|_VC>~-8p=y2KPhvm?Ypu|6?{ z(CkRDP^?o-Av8NmEEMY%QwYtD77N9?#S}ubW5hzSesSw6vtz|Vv5s-;DzoFnLb0B4 z>ngM3#X_ARcAwb^Vxd^yxOJ7;iDIEx=eTv1*-2udSns%XmD$N+p;-60b(PsEVxd_7 zxOJ7;sbZnn2e@^W*=b^-*blgMmD%ZHq1YF=zGZfXSSa=fu5X#0DHe)-f@@f2XNiSk zzu?wYW@n3qV&CA_Rc7aig<}8U)>UTbiiKhy;nr1V=ZS@4KjHVuaoeY`=Zl46U*Wb^ z-tPjjQ0y<<*2?Tcu~6(Y+}6tMBC$~HH{90B>|(J{>^of1GP^{KYDDJ9FdU<2j$E1^ z$AFe2m!*dX9*-_huX5yy^eRWLOpp7vF?4t@-c{-GxGhJnPLKPx9JwaF%8_f+<901a zu1l|S3a^%MJDo1WguX5z(^eRVgNw0F`*7W$=+Iw(YdX*!$r-uj5kvr1k zzAZ=YOs~f7yV9#1xjQ{P@cVa9dX*#hrdK&~UwU=U_os&kejN{_SLgCzdUehZrPual zjts*?+@8%fK1?+pigk$Fvzc8g7V0vwSIjOG3&py`?b*yO7YoJu#O>M4t`G~wI>qhT z%&rs*#d^i<+02HEg<{>}wpM0WiG^bQ;prE3=!#Lb3jFBP+9;#X_+U za3d?TTf{=KA8;cpvs=YNu`h5VE3@0gLa{$^BP+Ap#X_-9a3d?TJH$e`v;#{n%ylHihYF7EY0o_3&noIXO?F7iiKidA!E$$6AQ)u!UAct z`^7@B&+wV0*#lys*l+mE((FO8Q0zN=W@+}27}bc(k%w`No;mVJdK?28}@^pIKx8=w)=~a$An;y4oIr3b3l_SrmS2^-R zdX*zDrdK)gQhJpmFQ->I@=AJ@Bd?~%*Vf*H*V3yTc|AQmaE`o@9`|iI@`vLu|@=kh{BY#Y<&iPO2;elVrpVO;z`Ad3r&hMtz_GOMdjEDH_-8KHO zYCII{5TCu9Jt7wBQL#nM9u*74y2NMiW{-)5VtwMXceBUELa|Qq*}K^jVxd^C`0U;6 zNwH9@TYUCz_LNvC)-OJLH+xzv6zdqDy_-EF7K-(Z&)&_R6${0>#%J$l&xwU%edDut zv**P^vCi??yV(n3p?_k4Jw?uX5z?=~a&WBR%fh z#?TLX@jgtC$89IzD|#?t-S}|q*poeZF+d%9QiIi?%Q(YU+LA@{e60sBR`~v2Y&y4Os{g} z-|1D3;8|Q7bR+e)+IiBH~X7dDAp%FdpG;LSSZ#hK6^L&hgc}qD?WQS`#>xd>lUBAn|&x2 ziuH@n-pxJ|3&lFdXYXboi-lr6*}ug?v9GYu+3Y`Jq1azo=xp|rSSa=x7OR^5EEbCWhQ+F8{}l_xzQbZw zvtPuhMr4lQNq?6kebVC?&~l_JJ)D%sBYcak_pKbkeM9V3j$rkpJ?`7a&{2BvMoo{$ zZ8BjcyX z*Vf*H3DT<^nJ_)R4zC|ckNdV9nK-=~yC+Gna%9r<>iwH6y~>fv)2kerBE352DbwTg zwbwCKdUY;Sr&s4ZO?qu#<_Mnyi>_Vc9h6=v)*%*MoAnV3#d^e|YqKt~P^?QVx;E=8 z7K-(WMb~B{iG^aFV$rqP$YP;buUK?#Hi}p%)-4uYn~f?KiuH>{*Jh)Mg<>6J(Y4v= zVxd^iSafYRhFB=pH5Of)jVTt2^^IlLW@CwkVx42rwb|HWp;+%&bZs_{SSZ##7G0b5 z6AQ)q$D(Vqam7Nh53uOkY&@}0><28mHXC0o6#D{;uFWP83&sAxqHD7W#X?OacCy(- zVxibC__{r_iN!*(Z}4?{W|N48V*lXl_RJ;~3&lRd*X@~2CKihQgs5pUd{C#BF z^f(5z9GNb?8jq$=uX1FD^eRVYOs~eCnR@YNPLIcJIWkLnb=+Cgs~j1S9=B^bGFy6; zBeSPhIWk9jl_PVeS2;3QdX*z{r&l>LFulr=dD5#fdEWFYN9Ie9ufsRtNUz4^1=6dr zd%^T7M;1!2-oJ&@s~lM*y~>eA)2nk{EImG7%aO&?t8-Z*y*lS5(`)-OM_7OOx;@u; zf7N&>)*-%b&um(;P^?FM-JaQWVxd@<__{r_>BT~^KJj&XW;2NWG;aH3oOOz?+cTR{ zEEMY%U$7!>-NlM6${0B#@Fqc4G;^(y2jV- znaw5^iuH}J+cTS8EEMY;U$Bg<^l;>-Nm%6ALxJ*o|iMi-lsp;Oq9x77z=? zzQNb+nJp+5iv5GH+cR58EEM|)U$??fTp4p;eq1a#ex;?YS z#6q#p@HJ&-i;IO~zu{}j%$5)f#lFK_53?o3s77Rt48k#b=E&gmI0m#FSt`96kCsla za%7qGDo2)0ug0F`dhwP|kH>8}vO;=w+!fQS99bznZr5^T<@72?R!OgNWJr3IBdexY zIkH-Ml_RUCS2?mqdX*zD8FLPI@(VubW=w$a?A3`?r32 zl_MLZS2?m_dUehlrN`%MIkItjbuOEvSLeKGdTn3k2k(hKXSS4BDApzBESW7W7K-(WIZI~Ch=pREV$PD;vSOiFub8uBwwzcf)-C2NnJq6C ziuH>*OJ*yGg<>6J&XU=RVxd^in6qTIl2|C#HRddttt=Lb^^G}8W~+#WVx42olGzZk zP^@>%Su$HyEEMY=bC%3j6AQ)q$DAdz)x|=w4=^vuYz?tc><7$CGFwwD6#D}6lFWvR zg<^kTUXs~bVxib4n3rU>wpb|k3+8i}ts@qSeS`TNX6uTDV*lXl_RQ833&lRdd=9hq z#X_;4FrUM01F=x-E6nFG+fXbN`wR0q%r+7W#XiG)4zrELLb2a4pTleuu~6(g%;zxM zRE%mw=E!C^M$a7CJUxy9El0Z3tMO=y^eRWTOs{fetMqE@*}4~RoAh|xmLuDySI6Bh zy~>g8)8lq6M|McBa%9K!Do1uouX1GP^eRVoNw0Eb*Yqk!c1y2vWcT!HOx`2C%8@3&r}!7wnns zDi(@;fG^lH+f6JK`vG6DXSTaoDE0-uV9#t1u~6&}e8HaCo?@ZcC-{Orv%SPZv0v~7 zduDr!g<{{}ZailDh=pSR;BGu-`-+8PAK`91X8VbSVn5-YH)i{bg<@afo;PL(h=pQ* z;hr~U2a1JapW&W2W(SFdV!z>@H)aQmg<{{~o;PNPh*6Em961!n=$RvjrN=R#<;dab z)p&G7dX*zbrdK&~RC+b`9Nmj|OnN+S%aLQ#tK%M*UggN~>2bT3BPXO+IdWopl_Mvm zS2=QWdX*!mq*pm|YI>C;r=?dpa(a3-CZCaB<;a=o@pZHuIV-&ylh01C#_n^{s~kBu zy?X!7ORsX|{PZeEE=aG=`NH)0d@V;VO0Ul4;`HjAFG;WM%N$|-;oeQI@k3SPp;(8w zcazy+Vxd@%xObD;;bNg!m$-M6*%4x)Sf99eli87Cp;)K5cazysVxd^CxObD;(PE)k zxBc}0d_~8I(V$}e_UrUX#p^$zSjV_`li6|FFBIz;_ii#fUMv*r8egzyc7j+a);GRj z&+J68P^@#@yUFY%u~4jc+`Gx_WU)}Jd)&Lp>=dz3tbg3Q$?R0IQ0xQT^TzBnu~6&> z-1Ellbg@wE3w*(z*%@M?*dMs(joF!Eq1Y$5=Z)D}VxibCxaW=8*1kxSF#7|?R$vh->^x;(wgkt@=x9Jw;R z8heKK;$4*h$Wk*Q8fDa&3CtuI0#e=~a$gpI+t24e3>m+?ZbF$W7^0j@+DH z<;X4RRgT=6UX97OrB^v}dwP5wEl2K1ug2s%)2p%juJkHL?oO}XzkAZF9Jx2W%8~oh zt8>0TJw9K{kq6SNb9pemI_HPdYx{DXW&PpaO|J1_s_{^)L)^Q`>{78%tVevop4nw$ zpN`kYZq_C4-DGyTSSZ#f?%iZ|g;*%oDem25cBNP-)+@eX&uq9@DAsMiPJgqj#6q!t z`*o%@yIL$1>lpWLGP_1B6zduHZZf-8EEMY+_ii$~PAnAb8~1K9yIw35>m2uPGP^-6 z6zd)LZZf-3EEMY=_ii$~Nh}oWANOuDyICw0`vCX6F}p=96#D`9yfM2~EEM|!U$AF( zn^-9J2kv=ecDq<8_6hEJV|IsFDE15Pd1H2`SSa=l){mIoC3c6enX!Mce#Go#O!{tQ0z0TA2EACEEM|<>qpEU6br?^ z!}<}khs4eqbHwJz!#GCI9C;)?jsY!49!;;tqsP*#9CZkr&ge9C<0d%8{4Ts~mYHy~>eS)2lK0 zwe%`SUQds&qvgmO>D8G0hxBUfelxwwk+;&T_wViWDo5T)uX5y%>D4*^DLp=4%aK2) zSLgDV^y-}7O|R|C9AW)o{fKM)Vbypj)*;r9m^~sEiuH(lH<>*u7K(L=^&@7FiG^Z) zV*QBO<6@y$r&vE?_Jmj{)+^SJm^~>LigktKVtT(SSa=d){mIICKihQf%PM1uZx9ZpJ4rn*&AY^ z*e_T=V)h5IQ0yD5A2EAVEEM|(>qpGq5(~vX!uk=jx5YxSpRj(!>>aUC>?^DvG5e!f zDE1fDkC^>QEEM|;>qpG~EEbCWhV>(6e-R7CzQg(vvvI0m#F z`D=PL9{nx7%8|dPS2^;J^lI$+pcn7M^myEsBOj$#$Nf0H%8^gf<901aK25K3D9UXH@!ONU(##)GDlc{SU=(#e@`_Y zigk$fBWCZ5g#QG7lzlnunePaEH+26%Nu}-mm#Oxnpp;)h2KVtTQ zSSZ#l){mHdC>DzKi}fRBABlxx9b^57*~em`SkG8LV)ltxDAqOBkC=Tb7K-(a^&@7V ziG^aFWBrKP=VGB)@3?o9*%xA=Soc^zV)jq5P^^EfA2ItqpGK5(~wC!1@uh zuf;;KFR*^Z>>IIA><_FTG5c056#E40N6fwx3&noH`Vq5#iG^a{VEu^M_hO;gKUhCv z_Jdd`_7T>PnEfagiv5K3BWC{=3&p;|`Vq7Lh=pQ*Vf~2NPhz3iXIMXC_OnQ>Mq~YdJDidUY;Sr^kKUIZu;b+m|_l6G4sd=Nj*HY5j;5>k#WlQjvvXJ!1Wc zS(o+;#k$1$5wpHxp;(_-KVmkLSSZ#h){mHtEEbCOiuEIAqlkrK-D3TS*{EWnSie|5 zVm6vsDAqC7kC=@v7K-(Z^&@6uh=pQZWBrKPm|~$=-&j9lHkMc@);ZRXn2jwKiuI25 zBWB}>g<{=f{fJpVu~4jktRFEOS1c6!0P9E0#uE$0e!%(>v+>13u`jTG#B2hwQ0xz^ zA2FLyEEM|$U)pCjkyxmS#ZEDsSS%F#2J1)6CJ_t8{=xbYvq{B5v5&BR#B4ILQ0ynH zA2FL;EEM|+>qpF{5DUfr!uk=jDaAsu&#->PY$~x(>^H0*F`HT}6#EYAN6e-XqZ*Mp z(jUj@`TNMU>2+faXgM-ndNm$RpI+t24Cz&l%$Qz{Ju~&<&7590j@xo%mh|elv!+)$ zG9W!}*K%aG^eRVYPp@)hj`S)==1i}0WUlloN9Inia%5n7l_T?{*NyXQc#B46HP^^Ef zA2FL-EEM|y>qpE6iiKi7VEu^MJYu2P7g#@HHm_JH_6OFFn9U~^iha_rbEDb(VxibC zSU+O6fLJK@4c3pCEhrX>{e$%*W($dhVjp4sh}ptoq1aDYKVr6sSSa=t){mGiDi(_U zh4mw5i;0C|pJDxo+2UfM*l)NlhK^)cEg=?)eTVB}W=o1ujmR7sgk$u~k-_P8V+?3H zvQ&CC9xa_-<;XJWRgNs1UX4A=_2Mm`UN?^0a%6?{>bNVWS2?m$dfcw%$ja$ej;xYi z<;alqDo0jLuX1Fy^eRVIPp@)hjr1x<)=aM(=hw#Hq3KnQtd$;LN6V45)8oEvOkO9w z8oSp`uX1F)^y>XvKfTJ44brO|*)YBCJm-zl#^ z^v2JmF*KB#QP^@2E-!)r7EEMY)*LTfU6br?A#`RsZmBd1^u5o?WY-O=f ztZ!W3HCsh26zd$>FGcGh0_I z6#EC)#mv?d3&lR_rxj4Ff@(yJWVJ-u$6UmJh-NUw5a&-C~@T8`|M9`|iy^4{sy*u77Bl_UG6SMT3` z=~a&GpI+t20qJ$;IUkrFpRc`+gVL*WIXFG;+s^rr^xD4cKGq+u@4Ch}Q;mmW9pd_~ z+2&%QSdX~AYt}6migk(WyJlO6g<^f;`mWiQVxd^47)w1} z+OOF*Vxd^Sxb|zdtyn15F|PfZZ6_9r^^9x3X4{K}VqN3fuh|Y_p;+Iz_G`AISSZ#x zuKk+rBo>PGj%&YWJBx*4-Q(J?*)C$CSpT^8YqqOcDE0xa{hIA27K;6VYrkf@i-lre z;F_7)9%7-`AGl^_wx?Jq_6e?;ne8POiv5CXW@dYfg<{{}nwi-?VxibSxMpUyuUIJd z5w4k;?I#wB{e){~X8VhUVqf8!nb`qiq1a!zW@dJvSSa=xu9=w~Bo>POhHGYK2aAPb z-{G2>*&$+7BQi%0#W8y3$YJSqV+?3Ha(H?*9vzWh<;aogRgN5$UX49R_u?IsUN?^0 za^%?b>bS?HS2=Qgdfcw%$O-9Hj+~fY<;Y3tRgRpTUggLs=~a%LnqK9|Y3WstoSt4c z&aaKXXQWp-a%Osb9W6)BN{{=tG5PHDYV1BIy~>eu)2sLIy!0wZ&QGs$`!zdUEEMY! z*M7~85DUfn#I;|uBgI0oPI2wm>?pBNtXEw7H9J}?6zdk(e$9>%3&r}ywO_Mi#X_-; zaqZXaII&QyXI%R=J6

l)X7%}x*t#rnpzU$Ya%Lb1+q?bqxiu~4jcT>CXUSu7Om z9@l=&P7w>m`p30jvs1-Fu@7+V*X%U0Q0xa>`!zdVEEM|!*UZe$5DUfrz*RD{GsQx& zPjJo5>@2ZR>=#@!Gdo)>6#E9(%*@Ua3&sAyH8Znw#X_-(Z+nxjwzhksH#h9Jw*Q%8{GWs~ovGy~>eW(yJV~HN9?}UmJgKORsX|_VoBVT8`Y2 z9`|iy@}23`*nL-el_PhjSMT3F=~a&0n_lI}ed%@QIp3cipRc`+2hyu^c`!Zh+s^r+ z^xD465!N5B{kq17sm4RG4sq?*>{78%tVdk?HM>kK6zdY#e$6fy3&r}xwO_L<#6q!7 zaqZXaO0iI^S6urw8!i@#b&G4iW><-YV*TRUui4dNp;*Vbcc9rdVxd^ixb|yytyn15 zHLm@dT_+Zb^^LJ+toAwi^mL6`W;cn2V*TUa z$n0jZQ0xQz8=2iA7K;6Ve@QrOH@jaf6#ER<=gl4v3&noJ^?9=g#X_;~aDCqFAu*~EnIjM57(H|3k@UJT2DBV` zG`$*+9!sxsN1jNp#-1m8@t#Vr8^>)q@^pH2+-K6O9ClG z?a^$7-Do0*UuX5y-^eRVQO|Kj0*T&!1(yJVKJw3jTmLqSZ$9>zF{D<^v z?0z%7%8|FytM~8i^eRW*Nw0F`kLh*iIsYj=K3{tse@?H?k#uy%pMU7#d^f`d9z2wLa{D!ectRbu~4i}T%R|4Tr3pp6xZj?o)8Pg zdd2m5vnRzuv2JmF-s~x{P^@2EpErA2EEMY)*XPZi5evn7#`Sr#XT?IXu5o?d>^ZSe ztZ!VOH+xmFB6H+D9HVEByq{h-#(bM`LS2^-Ydfcw%$fxO5j(nD0<;dshRgQd-UggL?)2kf$ zGQG-?uhOd=`8vIBoL?J%ze%rhU&TVPE^&WHv%iUjVtwNNj%I%s3&lFc{TEn*CEO6zd=Na5Vc;EEM|y_i!}(N-Pxn0rzk;`&uj% z`vUiHH2X#@6#E1Ba5Vc?EEM|$_i!}(PAnAr1@~|?`?_>E(d<8Bq1a!zhojj~Vxib)xQC2bT3BV(plIWksyl_O)PS2;3HdX*#n(yJU9H@(V{@zSdt z89zO~wl@AwkY44;gz52hv>cfzJ?`7abF3&H9Li zVm;y>j%HnAp;(u=hof0vu~4i}+{4jqB(YGeQ{2PRY-F)etXJH_(QFj4P^??r!_jP1 zu~4jE+{4jqG_g>uW8A~hY;>_utY_TA(QFK{P^@d*!_jO^u~4jU+{4jqEU{3mbIf(Z z-+brC77N9C$Ne3>-#B8SSogTUqgg+(P^^F4-_dMbu~6&-+~3h`Jh4#h2i)J$Y<#g$ z>-Q0x!f-_dMBu~6(2+~3h`BC$~H7u?^`Y+|uc>>J$Q(QFd2Q0yPv-_dMR zu~6(I+~3h`GO?_>g(QFE_Q0y<<-_dMJu~6(Y+~3h`DzQ-PH{9RR zY-+Jk>^t1w(QFzqsu7tZ{c((*zmH6t9>;)|Bh#f<DAaXQ!n1k z>G8NNM`lT{jyr35l_LYv<901aW=pSfWcKtbN9IVca%9f*Do5r@uX1GW^eRUNrdK&K zPkJ>b&zoN5$b9MXb+jCrKfM~07f7$h?gi7U99by6djA$qZ}_mtkwwz09N`$#YNO71 zvGn+SEk_nlug+zO^y-|KOt0V!7u?}&cQnP8rLa`oke@CBT~^K5>6Xvl+xfu}*P+N3$8lLa|mK)aG@DB-6zd=NcQl(@EEM|y_jfcKC>DzSfcra|%_A0yeS!Nsn$0T~ ziv5B6JDSZW7K(j>`#YM=FBXdZg8Ms~Eg%+(eS`Zunk^_6iv5H8JDM#d7K(j@`#YK~ zEEbCWg!?<1Eg}|*eTDlwnk_08iv5NAJDM#f7K(j_`#YK~E*6UYhWk63Eg=?)eTVxy znk^|tH6n9l5RTC^M+T?IF`(thQt8!rv~+rvBg>>$IkIeeHTEpmi?@7wJZ{U871FEY zu9#ls$V%yPyOtv>r&l?$N_v$eL(;1pSv9@Nk=4?x99ccR%8@nFs~lM~y&98;rdK(# zR(gCLEl1W)ug2tc(yOt1-SjF))=RJ6zxC4_J}h!%gY+s#HcYS1d873Bd@V;dPOr{o zll1DGH%+hY%N$|-;Xb9V@jt|6{hMSSa=d*8i9d6${1w!1^DvwZuZPPq6;SY;Cbn z>=&&6FQwveX&sNC#?T5+dwQ7`wHuS%r+DY z#s0$jAG3|bLb1=V{>N-%u~6(c%vm?vL@X5h4(or+HWi~9kvXy%j?ptmHcyXZK+BQt z^lCiXBE8CyEz_$U*($vnd$#Vy+a^68x8=yT>D6(!ORsWd`}DY7%aI+@s~p)ey~>fD z(yJWVIlan}UDB%@*)_e&k=@d(9N9g+8k6@(uX1G1^!Pejj_j3QjmdkbS7Y}+=~a&G zn_j(t`=vL0Smen5=~a##kY1hhf$8!2T8D4(Ol3v@FIl}tGIyTq%W~%W} ztV670GuvD&6zdV|*vz`cLa{Efj?HWfu~4i}e70k@rC2D|Db}%>Z6y|p^@??DW?PGe zV%=gLo7pyEp;*6I$7Z&zSSZ$Uzs?}D?ZiT{p8ItMn{6)^igk^3Y-T%%g<^eU9h=#X zVxd^)SjT3zlUOL$JJzw8?JO3Gb&qvyX1j=mV*O+NkJ+wbq1Xpl|6{hBSSa=b*8iC8 zE*6S?f%QLTdx(W%e_;KO*`8vd*e6)yW44!ADE151_?Yc27K(j?H9lthh=pSRV2zL2 zzG9)+M_A)ywx3ui_7m3lnC&kXihYGOK4u4qg<^kUjgQ%ZVxib)SmR@MkXR`88`k)k z9V`}#eTOwZW`~GTjmR816vyb9BZsBOF`(th;px?QbVPcUBS)rJIdW8bHTE3ci+4Z7ry&99xPOrx9bJD9EIXAs}|ISNq_^`;4^V6#wxgfnd=L^&0 z^R*ngD7`wDi_@!fz9hZ2FLQ+ThqY?1@k3SPp;(7lt7dkXSSZ#b)~cBuE*6S)iM48G zM~H=DePXTJ$nDddBgI0oPO(?pBNtXHg6Gdo%=6zdji)y$3&3&r}yS~as{#X_-; z`*k)mJ5DSV>$zWNbF<^cLb0x~R?X}Lu~4jUtW`5RQ7jbe9Bb9gP7({nddFHdvy;U_ zvF@?P$LtibP^^Ef@i9A9EEM|yYkbU36AQ(Dz#1R3)5SuuFR;eP><_H*F*{Q% z6#E2ge9X=g3&noH8XvQ>#X_-fu*S#i9I;UBAFS~)J69|e`v_}%%+3=F#eTvXAG7nt zLb0!~#>eaeu~6(Utno3sP%ISt3~PMME)omHe#06cvx~(p^IT%~9oG1mT_Q#`B6DOI zj?ptmE=`YPK+BQK(yQ_4^7JZ4u1K$P>1vRcU5{kZp)FY)2riNlV0V>wdrxY zmLu1tS2=QhdX*zLq*pm|V|tY%H>FoOa&vl>Be$eiIdW@yH74JdUggN`>G5^69JwRC z8k6r#ug31X(yJV~JH2}U?n!U>u*i{n)2kf0FTFbF`_tp|wH$dMy*if%)2nlSD805X zbAMVXE;^tV66-GrLqQ6zdUd)yysv3&py`S~auF#X_+@u~yCO3b9bEQ>;}p zyHYF^>lJI&%!Z4FV%=h`n%Pxip;*6It7dk!SSZ#p)~cCZBNmGFjJ0ZJ*NTN=U1P19 z*>z%}Sl?JbVs^b)DAqaFkC@#c7K-(b^&@6CiiKj`WBrKPO=6)~|5!g_cC%P0_5s$9 znB5{4iv57~BWAaXg<@Y|{fOCZVxia{SU+NRyI3gp3D%F8-60l={etx)W_OB(V&7o> zh}m6Yq1ZoIKVo*bSSa=p){mIoBNmGNg!Ln4_lkvLUt#@-*?nT6*k4#bVs^h+DE1lF zkC;6m7K;6b^&@5viiKj|Vf~2NLt<1TGDjZ9F?#06Bk6GrXgTs|dNm$BmR{w^KkWSmek% z=~a&WF}*tHKc&a#YdP}g^y*yxl3tzjyXm!knIo(}tRHcWKdc%L#X7|L5wl0cLa`pP ze#Goiu~4i_tRFFZOe_@Z6YEFJ9v2J6I>q`CvnRwtv0kx$#Oz72P^??5A2EAMEEMY( z>qpF<77N8X?$;S+_Ka94)-%?Rm^~{Nigk_kBWBNug<^eU{fOD~Vxd^)SU+O+f>qk@TbzG5eF)qE_rPtRG3m^IXh|{f6};smMaH z@34Nv>|H(QGEgHjN8ZCRdgjRc>2VBbIr7)^YCQT|dX*!8Pp@+1AL-TD^Fc4(hw1US zEk`~|ua5h1dX*!eq{r=Aj(nP4<;Z90RgQd~UggLa=~a&WGrh`@FVm|W`6|82k+0LM zG5MSHDo4IekFTTU$am@0nEbEwYV7_#y~>dv(yRCH$Ml8|iyZlPdX*#pNw3cNr}X%I zEk}M%ug>Ma>D4*^l3v@FIl}tG`VrUod#dqJtV66HF?(NZuodeO>qkl5oo%>FJGigk+hBWC{)3&ncH`Vq4a#6q!d`*j{P`%o+t>lbTF%svte#X82? z60?uRLb0B)w#4icvBj-e*H~MUimyEs>lmF-MQt^08TCx7Iwj>o(OU%9&3&p;`JiXD{XOG{Ag<^kT zo}SsaVxib4n5SpDzSgn4>q{}v0yzQR1c(cA0$k60-77v|}i{UjEOeTI2@WvLhhVV<7Zf5k$v z?=Vl#>=!Yr5t$>Mk$#^eebVC?&~l_Jy&8}DrdK&KQhJpmBd1qm&nUfkqo&8>wj3EP zy*lpb=~a%5ksh~eIWlH?l_O)NS2;3vdX*#Nq*po8FTKiuW6U=- z8(l0E>lyP+&BhQ5#k$6PQ?oI}Lb1Lv-_&d@u~4jY%r`X~TPzgo9rI1i#t{p}y2pG| zvwmWsSpS%BYBsJ|DE0y7o0^R$7K;6Vd3t8!i-lreV4j}Y1Y)JSz~&mSjlt{|%-Zvo z6Kcy)>>AA4Gn+`P6rW`|kHPFE%;EEv6Kl&*>?zFQGn+nhJE_{=61EA{Imu;VbJ z&s$EWEkm*MFr&|Ga`KC`LBLa{S3qt9$=u~6(# z%;+?g|5@&9BJrieOdX+fyq*tT&yy;cq%$FWtM@yXf)2q>Yf%IyWUogE&oQ2Y>_iy3! zDsdJ`uM%g`^y-`!OOMaj5@+%B>Rgscug-bN^xD2m9M&IZrn<)atHwjI4ly&;Y+A8U ztVhgDHJeT>6zdW*Q_ZFq3&r}x%v7@(#6q!7F*DU{MzQ%kwy|C@Gu3P+u~4jA%uF?# zS!{WaW~^V#Of{QDY(+EHF=nQk%__En8S5D%tJwgtmCRVzn3-xen^-8;H)f`q%`O&- zb&i>-W^;&zV!dN#s@a@kp;-5rnQAtdSSZ#%W~Q3WEf$J>fSIXg1I0qIA26fOY#y;v z9IaROt7Vs9exJ9TS6hZ+x8PGQv-!kAv1{-tm)ZPcq1Zi`-)FXfSSWT8K3OtbP%IR? z3G@5R77`1^uEP92vxUV%vAgiwp4lQ|q1a`Z-)FX{SSWTI=J%N`CKifahxvVGi;IO~ z_hEjY*%D%<`0lRacb7eh*?!(~No`pww)~$ZPRp7|nfmX54ije(j@U-bwdU^h8DHMu z^f+3y#91o68o8EEuM%gO^eSZJSBbM;diDOTpI#--2I*DeY?xl1^G50M`C8&^oL-&FCh65VZ<=1)mx;sr!yHyu z{2*0)DApl<5;Yqv7K-(VIjm+&iG^ZaVh*d>(qf@lpP0jHwv1RP)+y$&nk_39iuH<7 z&}=!eP^??@u-Worp;*6|!)msISSZ#p=CGQrC>DzKj5(}kD~W|-U1JWb*~(&}Sl^h# zYPO14DUKkkdaPm9V@9jD9HK2lvHCHi)ofLHS2 zHN--(J1`T_Y)!FH>=MibG#e@wirs>lfM#ong<{uWCZO5cVxibQmpg9b+>kso{UE`an#zV0VF)!9^bFnqu8>~mni#6*O8*0Y7 z#JpIuEyO~xJ~1!WY)i3FtW(U3HQP!o6zdi9V$HS|3&py{yjZhs#6q!tF)!9^Td`2A zW6X;++fFPL>lyQ6&9)Z{#k$74ShF3(Lb1LvFV<{Fu~4jY%!@VKNh}oW9rI$%b`}f8 zy2rd&vt7hOvHmeH)@)a?Q0xQDi#6L#EEM|z^9jv%7YoI{z8)H%qKM4 zQ*15&yR%O)pU`YCu~6(6%qKM4TPzg&2J;Ec_7Mxk{=s}gvwg)vv5zpH&}=`kQ0ynn zCp6n%EEM~yU*}M>1H?kHzxs6!GdoZ$6#ESG3C#`?3&noJd_uE>#X_;~FrU!u5HYF| zc^&6a9HVEB9F`u(fR-bNr&r_A5$RQq9GPC_$WiIl*mHC*-ZAO%xGhJHO|Oo7TzZuw z$EU~bT8^BMUggM%=~a%LlwRe?$>~*&oRVJU$f@a7j+~ZW<;dyj)tG!ndX*z*rpMRO za^$S^YD_*my&AjENw0F`-1O@GJ1@P;k@M559JwI9I_C@1tl5!bp;)Jw z7i)HuSSZ#j=Ea&FEf$J(i+QnT$B2bu{bF9M*|B1wSjU(bYj&JiDAqIP#hM*27K(L^ zd9h|Eh=pQ(V_vM;iDIEx=a?63c9K{q);s3Knw=~bigk~9v1X@;g<}0XCzwxYc9vKu_6z0{nw>2c zihYCmgl6Z6g<}6;KB3vUVxibam``YSp4hy8ee5U9Cp0@>EEM|+^9ju^5DUfr!hAxr z3&ldQ&oH0R>>{yH>^ICOG`m2VBbIdWNgH6C4_ zUggLY=~a$gnO==O!+Y_rN{`2FIdXM+b=+&xs~ovDJ#N=>t|ZcVSo9uoVKCrGZ-_^A{Otl+|^@aJaW|xYEVx3{WtJ!5@ zp;&L2?`n3rSSZ#VX1JPNAr^}Dhxx8%SBiyV9b&$#*>JH?tVhguHM>eI6zdZ6UCpi* zE5%P0*7i@ytX9l-^_JIY%TTOZ%zibyRxA{&7qef@t`jT8Bdp^iu%~e$Ekm)k zF&EbC2C-6nmUaCsta!|f^_Dkk%TTO*%#1a=Nh}mQ0CQo@ZWas0PQc7qvs=VMu_G{} z(Ck*RQarQud}izu%rEqow`t2z>=(=^G`n3a6#EAA3(f8j3&sAy{6e!k#X_-@LhU^pFXM7xC5ZXTeOoik1 zooJ*k=sul^M#7^mOz`Q9J{sl@jxug%%5k0_^_fHQ5Z;(wGvM#`=QRB1^={8H1WGZy~d5>L*@eV6Lt1r2! z`~mW3)8B{7ITYK(pBcMwu9&8E7|0_dO^C-6;eSVH>m&8|rJd=tMIRiaPiLe)IQg#Q zr&{c%pAUX_$@p)d&f3^^jLtzgBmP-&Af_i_TWan_-38t08b_S3jB(nAMLzEND;h>j zd);``TD0=@we9erPq!{t@j04T(aKlUyoy%*yZ&n5c3i&S^?c16H9a1;MJwN}+O8cJ z^DjCneDYr{TpvBoy#=oao;vs3Xjl3r{Zr0GHqNc_q1MY z0>yeIV=d!SxmlOk>1OOf{4#)laBj)E#IGA>eZ>~?eymUYx?whwSSZ#he%&w|Su7Om z6-O`|MQmX|C+il!ZkUZKwul+)7r$ zH_XNqTg;60jbAs+I0E28y&3Bqziya~Ew+Ri>m9#tn2jU0q#5fTziyaeLNU}JGyDf? znAx~ugU#3n_;tfOAik`eoUWU<;V=_RgTP<9`|kI%uKy_GpEPnwj7xyJ?`6b zWY+W+f;W%Gr~&D5yOtxfrB^vJdwP{4bEH=}GG}^~BXgx!IWjlA-%X%PuX1Fb^!VD^ zdoXW$l_T?|hX?)@ZT|GQZyWa)NRQjK_hrHKxLwN;yhA>}%8`ZBs~lM*y*kFC=?%v7 zwK`ZVJv{Jn7f-KpWQpH+Ek~A2kNdVUzds)07ZLo;1n93C4>hgWEoRe-g_=(6UJO;- zZ#uCbFfdcGF7a!L_nTg9RrC!R>l43-n9U#-igk)#M9gLs3&ncHFCu0$iLK`6WZmKy z5wn@ahMKW{@r#JrEMjY#v5xVphuN%RYnid0@vDc~0I{{rSl9T~!)!LOb<9}b_|?N~ zcCmHMSm*fF!)y+*^~_lB_+`UvPOFJak} zw_HG5Zs_x5Phr`U*@9vlnX$L9(8+8ev5n2xV_5cNwy@ZlW40P(uVLAf*&cunz*eAba?iji8DAojy`RqSt>m|@JO?CdZ?{F3uxqDCcR3WWz*xn zZM0pk7jOCWc-)paE2PJL+sL|NdX+dUrN`}B;;furCC)18RpJauuM%g~^eS;yORo}V zb$C4!XN~kKan?+audTfYL({9oSt~s}aN?|;9`|jDvrc;4uDvhorpN7C;;ffmCC>Wk zRpM-rUL9k@^iUD5gN@R|10Q$e^eS;S`Hj~SXVdh!Z|lB6c!)2G!r#n;L8|dBT>m&K z*vn>v#m;iqE+zJg*-~O#dOy}Bz9`CUX|b)$SfBW!D6?h6wl-s(;)|lpmKEE^jP;5y ziZWYHY+EzdExstqYDzKj4#+RTS+Vw>l$CMW45wb zDAqT=V8?6~u~4jYe8G;{5V26KcYMK)*{WipSoipX9kbQMLai?LuG#8h+xxY%5AX#$ zW^0IrVn5&ucFfik+rj&>FYpCBW<$kxG-H3@3wF%b65Gj)eS$C8F zSSa=lzC_1tU9nQX9_86h_(~mbxt_KR#je6v>X@xBwu{e<-G#5zG21|FXESygzEa0* zL$O`W*lqYq9kY$Z&Tt2?>+qF2W*dv`=Ka`x_(~nKO~iILV;ABpb<8#u+XIZLGR`Rf z=L>=2Bg0=O3q7XFW_b3Vsj_)`9AR3j;E}h(1CJ(Kq*tl3WqOq=TcyW++lab#FWxrk z@whEjwoQ-ww$XFD^cI5GevjEcJ#N=hWry@CRd!6TQe~&~Dpht)uTo`~^eR<$O|L!= z+bz9HmEF_hYisYp9_dx8?3o@OI92vakNdV%**iUM*WQ?BGTTyYAMeLH#aBa_Z6&s^8S52a4P~~q z*nVcLTYNQ?**0RKSiks69kXr4La~mqRNrhnu~4jMEY&yLUMv*r8cX%fb`aa&=fe8N zQhl=>#SSoIonxuK*-l~ynz7!oRNri8u~4jgEY&yLMeHE&x2xDMX1j`oVjuL&f9c)C z@R$Cj|5tnG0cS;(rSYO06a@qo!xMof7)jlLVy2rY3W8$52n{rd0_~8*NX{7yh&cz$ zIg2^xfLY8rPjXykzwg}do+~}Ly8B~ic6MI#`{+97U-jy}`|hbzb#I+&#sfyy+~W1m zsd`Pu1;+5jM%#81#26o#;1C;QY@!(B1f}|7V~tG`W4xfKS!|rK$zqHf%pr&!Z)}Pf z;|C?qV&jcX6=NKs#98bFW6@$fp~PA2L}SrnT%p8S>?C8;^qPz>lsJo>Y;3w1;|wLv zVy76JA;x$^iL=<##eFG{ zOm$z%Bh%c+ZNo8i`dWN5+{gWfJTlXL+%_C9XSr_|_(C3;?LMv-^2i+br93j%eJPL3 zb6?6M^WB&7$O8AJJhISzA&>BAI1xUSpX+;@Xy4mxeWz?&l%I=DG8QeiG0M-yCL4BgeP?*irLVl#|Ii{A;#&&6gM zo1@Ri?*`@PVzZ1zi{B9n&c$XMix$5t6r79AF%~U;XDBfjn`v|2nf`?cR;iWe`FmGVFR*c5Le zUJgAJm$X=_wjq|+KE+!cx3a|c;IzW*$2o;r=f#EDoTY`?i{}+)4K6Lr1}!hlmfujA z-E_-8bGjEFq*|QjjlZi-_cq^Q&FS9eJLGKoH%|95ee+Nh4i90O35lmBq3V$B77kTB zJcPp%*AG4{=w zdVk@tRLgzouvFW9>9ADCed(~Yk^9nN38`B9NQWgvqkQS~c4POY)7wql$IlkpU{m*{ z)7$#)!-7t4H*+7i4X3x8yN~OIcG<#xIK9z6wsc=Qz0J8Vo!)NczO;`9?kmIVg?_NL z`>>#WG;|;L5#C=T_odfs?7pxq58?d5A)p|f^zbEf*<2ms@bX|qV%3c8hQ{S~aDp`v zD=@aZ82crjD)vQ#@BftcJ0@#Moa^k1w{Kv5sQwx2VS# zTi;lz82c~k@x^Kyo2SpmevEp2u?>usX*;$I>hZ-kG}cLs{TlW7VzrEQ7GwWLJ-%3N zV_n49&ry#rR>xRZG4^-VKR)ohL;8_7UOhp zE?XqVctAbA7^i!4*)|m#4Qy*hkgV+a~TC=*N$y?!$tPTg}{80$&(>Z|=U7N49Yvw++Y8 zZP()4&VAf($RpdkkK2ah(yNqJ;f z_oY0toBR0w!ajC)Um1KMkL=+-Ea-FW>AsXl_Hti(y^ih++cF;%VG&P~Cix%Snwa{Xm?#*Qf>Af&6P**R;>E2v+uo&Y5b@gJL?#*R~i0x$T zKrv46=CXcbj2GM`EygL`Tz04!;|BLPi*ZUfmmMa?_`zMvVw}>=WrvF~j&R?w7^ie| z*%4xlC)~L!#wp!gcBB~N3U&2joYKu@M~N}MP**R;N!(o4UyN~vN_sI);^wjeVvIM` z&WmvpH}B zk^Q}0QXVF7&tdp^Fu};R$)p4Eu63=-M>ujt-+jTKENUV#oA!1#P4HoNaY^Yc_V-;fEj2$i3 z-PjPZ?#70R?QLwR*xtsD5$j>>Xt5r~juqR-*f6nu!fVRf*Vr*`@t6^lt2C zRxe}2-Qsr9+RxYsvHfhjX!SNWQmnVJX!S8xDb~kWwDvc4oERr@b6K<)52%P2<0Nj* zEye{Z;>9?Ln{$itfr@xBPU7a=I>^`zZF;3g&vJqm8BUHqTaoRSQjTB=%p(0+4)3&*+QjBqhig+7+3XEXecU!2Lx-%zH`IOHZ@3;g+I`$M9508t4`&PcX5v- zp6no2VeCXP_E%KIiw!Y$k{J6fD&ob48ar8x{TCJSVn-W0MU4Fz74c%jjGZcWjImi_ z#~7O+cC4}4Vw|?kWfR4Q8=E6G+}I?s5ys|<`8kigDUDm(39yWo(hyC}Xq5MjKl!#%bGJHcM=bu_a=hw#{WT#l{*t zO^nmFxon2mIAf=aaoRSQO&4R_phQKC)3z8}6=VFML`96#wz+Jc7~=>fDq@_r#dftq zPi8!!L`96#w%AULafK2UF;3g&viV|+FO;Z=aoQGRh+>R0l&FYt+BTOh6l1)hL`96# zws=jwPsSZeRKzBP*92Rad1NB?Q8kZDa^FBdeoS^B7IZwH;=U62LLQmwzLZC%xsTh1 zJTiSPz8UW0enTFa={{~7^2jXrr93j*eO&LKH*L#XsuuZsN!KHb-N(-s+F*(M()Gw` z?!$tvM^1Miw++YmGu+4ZLc5&lzLZCnx-aFCv)q^R$TIh(eVpySGVCLaYn|ghEa-Eb z>%Npn&U0USz4P4{wq+ifh((lI6@=)UXnlO4`u`+j7l=(Vwn%KUu?xi}8(S>Keu+{m zu_?x)#r}y>E3v7@mS{WnQ^E3uiz zmWr_-qtr@lma#L%*q>2qB{tjGSz>dHT_wgT?p(G^Y_758Vsnj+(y?Zqv8%;6#f@`$ zvH8ZX5u0ypjMxHW*NQDLHdbt*vFpSZ8XG6J$k_E_i;NvF#&|$=yx3x6(PCVn3`J~- zv1lF zooDP+F~%LrP{htRHUVs1=8+4qkE(g(LiY{y)e;-N3M5Y8rQnPeJPLJ=ste7&;~cTFXfS&-G>F`kz3ryZ9^Wp)qPwqw99SoOL^pW z_oX~?hx<|3P8+$@* zxv^-mf1^lB>}q4tVn0Wbl-M=KqQ(A>A}O(JjYW(79z{}O*BOfz`#*|H#I83MEye+g zOT=z47A?j@-Rya>8;wm zXfbY3Tq1Uxv1l=VP+TH*yRm37j!;}8c89TOF`iIdB6g>-nfiQ;D-@TA-DNCVj4u?I zh}~^0T8uLkmx$eCELw~=6qktIYb;ufI~13Q-Dix}y38Xhu#c*FbCHAEQauTtZ zjYW&`f^rhESByoAaf5Oav6aT6#rQ!viP)>gqQy8uIf>Y7#-hb|LOF@p>&BwRxI#IJ z*c-;8#rQ%wiP)RQqQy8vIf>X?#-hb|Lph1q+s2~BxI;OK*gM8(t;;;J3j3&6j-el|#rLuMxZjXRK5-wn4adt*-IwynXYS*A zA&-3SzLZD4a9_$JU%D^lk+0mB^2pcjOL^oQ_oY1Yt@~0Q`Oba(Y@rRlcVEaOJg%;S z4}a0KARJd$*>@f-elK4p-f2ZBV*Cx_lSGX#XdF`Eq>`PcEzA+Xp_6wAvh<$4;TI?SvMG^bXShUzrP>Le2;MH1WNMXg_Et2_QzMG{4Es|?*Z+xf1-Z1(+y*$a;rW?MZ|m^}df zH$cmVpKAWu!z*#U!D4Iv>WlpHukf?C z-emYZ{|fK;-}gQCEgvy@?8u=-y?VAP*{P(se~04YqP`WQhE?eBz$a{Ofd0r{ibrJP zIMDAmpRk#2!IG;2d*Y_`ZrBBkY&~I<$4txL_C$fOyc)mOEV&BLUctJ$bmNgB_^_Z; zARd!~FP(bfU?^WY^??<9gxL3xTfn z(y3Q%_oY*>I_^uSUK_bDoqF-u5cZo+y>K9sFP(aA?7npBwTb)KrlAcsbzi!KukXHe zIlP(sxNW$E-`ss^y)E3AF5$Oy9~RVpOupfB@Dl#INt_1V%6;kK)eYR2-t*S(!$P(1 zx^mlwYxu(HaU=J!Uxm-x*nQkKoFrlirxiE5#me%Z(5O7QgcH^+V(iPf5D{a4#59l? zkNh}c6=T1|G>}-KF+2pu+NC1?w@fdd8x~sKDU1*v7`9 z#puBEz{EB&7A-~z2DimFH5M&K3kJ8v>KnUN?}br=!ELe4jNK^4=)vH&*yhHf#VEqy zw%8WNqQz*!;I`P7#-hcj!r-L9R|0>8XCJs+cm`T9?#p9#aP5px7KWAYetJPiJ@+>#>Qyz@_uV{`l^4vy6RJD zeytXoey+>oLlO2-_42-n`*>^#!-GxThXoz0nz^q8zA)X`+Y~wy|8;&>IuEn>V z`?%kbW43o6w++Xy9o(04%#QBkdLhTOa9_$XE!~%LOe^=L9Mjr;DaW*NU&=AX?n^la zt)VteIfm!Sp`H2JLL0PmU&=A<-IsF5PVVEjA;;|OzO)|Cxx+qEjzJ5_hXu9YuI@`Y zW;gex9J9Oo(tF;+eOOSA*>eqF_>T5+U&=8Z-N$XiF~10ln6hz;kr}Nf#$Fd|V*USW z#Z6OVZ-_ND7A^KmOv{KhGj_SQWBLQ8)MO8f5mXN*tW(l({}8) zc;=VbcE&CdWB%@H6Js1;cv-B( zShN@q7+w}@Yb;uf3k)xdwKEni#s`L%#o8N-7UKlN%VIkjix%Sr!^>hj8;cg>2E)r@ z9gIbb@q^)Iv0aQsi*bbEWwBk2MT_x-;bpPij75uah2dqf-HkwFuW|*(HO0DIZRxNeN@dOW$xqgBjk}z?!$tPN1ff5@<GZ^$EiyN}z3V^k0Kr985a`?y}nBm259<&mE5OL?T1`%)g+ z&wVM6^mbp$BYoVL^2q+~OL^n~_wloZHt6fVlt&J9U&;>$xsTh1JaVx6(t3xuFXfSb z?!$uG?@;%pJaU-(QXVpyICu6I{IvI-=`z6k(3&NV6jYW(76X(}rU5rJG{S?>rVqJ|zi~SYD z>0;fCMT`9w!|7t(jYW(77sKgddmD=u`!U89#CjNu7W*@X)5Z2N7A^K`45y3jYb;vq z-xy98>uD@n?B^Ix7wcs#TI}x_P8ZwHShU#hF`O>e+gP;N|1q2{*2h@17zY?m7u(-h zv=|Qjv>0D_vXj^m#-hbI z!;_uFjx-i6#v7jOBzBasXff{aWGAuy#%Qg}JTd_LsG3L0-8T^NUT9+lTn|r@(t8p`KCH{gAx2un9pD@+I3|Ntaj$37ASi0}o!Yubn zVOIHOVfHcfkDKPG`lo&{Kl7WCr;}_2i5(|TqC1N-Z zfHiQ7+eM3g8~24{a}IHa!O6|EW_4rth=sw)&BbaMyH6|(POj8N(0ayRc8mLaRo42( zUUG}<4Oumfz2X+x>#{a5_M%&4ugTib*cN(cVK{P2w>b24o7P10z?Uc%ty z#r7&RD%c8lz5S(_Vs#4WNPWHE{` z^y?PcUuA7+>`}MK{vs=9>|wXazLB++vAf+O`?IVD#_n~C>`$_on=tI{7TF(VH8i%u zEwb-rH8S>)TV&tLYHaL5x5&PO#q|H{57GYpgOYJLGE9G@tkMMg4L%;l(r{$(0qQ8$ z%-1V{FAYbA_0nY|hk4SrA)9e{r>c*`I>E>NhRa9}=cM(*(UZeC!Iv&0Iee4WOT&@D zmo6hYToZihGLpkI!I!d1YxkwB(#C!1GO`%Hs#yiC@poCJt^4@dLL0PmU&<=&-G>Eb zke%GeZL1DPa=p+l9oASc{V|~M{&=|={-_*J!h$c|waVd>;7j}1-F;=)N9YH8xDN~3 zFNaCOw(LXUvvGJN`O+T)3O;Tdj`>Ac#Ie*Z_VGG8)-*A;ky~VSWi>Tc%Pq3nve+-v z5MUUNd`D3fh9lq8{=#tNDlzs`OlY{p*Zf2l`zuc2wTCbqnJgaV+la9j;~9r;@l~S5 z-i&D&y=EAkd{-8GHKv5z;&va(V(-S3kXvLQ$ZBEiNw>(}m&M+WDIvGW-jl^%k7pz5 zeTKowXtDR>*@$9ca57qq0!;1bRl?xpN3x2Iz2z47_qMDOV;`yI!{B5i?SavO3qZHH zU9=b_cn+ml7@XWu7NZ5vnskfXwUouEshbtKMb<)A7@TbG7Flaqj3PYy(JiuQ;dle9 znOGQ{Y$c0Pg);AFHIZI~)k3x>hTXff(A zH76DZCqI_O=)=9zYU?mKxvBQh(by+qVQ{iO*xIwo@6RT2@{3ue6#GcgzlpU7eYlv_ zyC}8uM_Ma!gGMn}rb|SAH>EW7W0!~=;o&i(EB@i+->m=d|NV?>n(7?psq%wwE?YJ2 z{O^9~eRRF$i)v;qw!7&yHsDf-C%ELL5Ko{vip3M#10kNe4S;y6IUeF^u%UQxa}FZrISjTSouNdJP*is&aJYkTFGF#}BF)9=@zkZ~S!ed5>2s1)tdT+`IZ; z^f(em{wLo8`4-5xK)wa?Es$@4d<*1TAm0M{7Ra|iz6J6vkZ*zCYJp$7{^xai!OKs- zd`{~I^_HB8>;INNT-yb{8dZEfF%ZDN>Bh+`jtTUEI3?5%;?&7th*MI-Azs&yfjAa$ zGQ??@sSw8q=0Y4ZcnkXF7y)0CKfKPrsZLFME!uod{#5(MDY0Kc<4>~DppS44!-7eU+ebx!Jc&#uMvn&2}z*2iuIJSe`3ZxT!WmxJ8Ul*%< z?1rsa0m*-DQIC}W$+tkh1@bMBZ-IOZ-+UC(R(Eg{|p$=e-y zTO)5@YzXmEnztPmK~12hP&24G#M`5I8x(JF;*CtaVTm^;wSZbetsvew#2bW)p%REU z_Oyd|qYiJ#;WamJu-OIT4KutkhBv_QMi<`D!fSEfpi&C)s=E`^8R`P@&W~fdh(0J$s=tSrwh+{4s z6F3!`08NA@L6e~=&{Sv|G##1&&4gw_v!OZATxcFNA6ft{gcd=Ip(W61(CN?_(3#Lu z=qzX%bT)JjbS`urbUt(ebRl#RbTM=ZbSZQhbUAbdbR~2Zv>dt`x(2!yx(>P?x&gWo zx(T`&x&^uwx(&J=x&yisx(m7+x(B)!x(`|b-48tgJqSGnJq$epJqkSrJq|qqJqbMp zJq|jUqW9&UqjzO-$LI(-$Q?d{sjFQ`U~_|=m+R;(2vl6KtDl0L#rVU zNL7OhphBoRR0CQMS|74;J^bDfss+`C>OdPob)kCD#?U6vrcixoGiY;Y3usFy2W-jnnT+_+d|tx+e14*J3=j>mQX9GHPi+whDxBeP&=qSv=g*5 z)B)NB+7;Rj+8x>h+7sFf>IjuWD1^y6L7ky4P*H+No?F(_Nvlp}<)Envp z?GGIQ^@R?E4uTGb4uSeXheC%zheJm|M?yzI{h# z&46Y?v!L0~9B3{y51J1xfEGfFpvBM<=rrhb=nUvgXeo3SvhR zUV&CZuR^auuS0J@Z$fWDZ$s}utDtwG_n`No51ub`h- zuU`EPet!#n2YnCy5&9GKXNdf-`27R)H|R&`KcJtWpDFO4)*|}zKmR^0Z~)FEDskpe zgfpL!_&v(b7?>P>-_PdA7_qequt^b1jq$U>{({QY}3Z1h&4ty%+TZewv)H6kmw&)x&AFvQ*yJ!5eGRcYs2zxKM@WB&*z poA>#>`~R97)C;dz181F;IQ!#!sIYI~zxRH2`5%1#zx-nV{|P#(HID!Q diff --git a/windows.c b/windows.c index a3b5b741..1f021965 100644 --- a/windows.c +++ b/windows.c @@ -386,7 +386,7 @@ void Print_general(short X,short Y,const char * Chaine,byte Couleur_texte,byte C word Indice; int Pos_X; int Pos_Y; - byte *Caractere; + byte *font_pixel; short Reel_X; short Reel_Y; byte Repeat_Menu_Facteur_X; @@ -399,10 +399,10 @@ void Print_general(short X,short Y,const char * Chaine,byte Couleur_texte,byte C for (Indice=0;Chaine[Indice]!='\0';Indice++) { // Pointeur sur le premier pixel du caractère - Caractere=Fonte+(((unsigned char)Chaine[Indice])<<6); + font_pixel=Fonte+(((unsigned char)Chaine[Indice])<<6); for (Pos_X=0;Pos_X<8;Pos_X+=1) for (Repeat_Menu_Facteur_X=0;Repeat_Menu_Facteur_X> 2 & 2) | (x >> 4 & 4) | (x >> 6 & 8) | \ (x >> 8 & 16) | (x >> 10 & 32) | (x >> 12 & 64) | (x >> 14 & 128)) - byte Caractere[14][8] = { + byte thin_font[14][8] = { { // 0 Ob(00011100), Ob(00110110), @@ -729,7 +729,7 @@ void Print_compteur(short X,short Y,const char * Chaine,byte Couleur_texte,byte { for (Pos_X=0;Pos_X<6;Pos_X++) { - byte Couleur = (Caractere[Numero_car][Pos_Y] & (1 << (6-Pos_X))) ? Couleur_texte:Couleur_fond; + byte Couleur = (thin_font[Numero_car][Pos_Y] & (1 << (6-Pos_X))) ? Couleur_texte:Couleur_fond; Pixel_dans_fenetre(X+(Indice*6+Pos_X),Y+Pos_Y,Couleur); } } @@ -2138,7 +2138,7 @@ void Afficher_ecran(void) -byte Meilleure_couleur(byte R,byte V,byte B) +byte Meilleure_couleur(byte r,byte g,byte b) { short Coul; int Delta_R,Delta_V,Delta_B; @@ -2150,9 +2150,9 @@ byte Meilleure_couleur(byte R,byte V,byte B) { if (!Exclude_color[Coul]) { - Delta_R=(int)Principal_Palette[Coul].R-R; - Delta_V=(int)Principal_Palette[Coul].V-V; - Delta_B=(int)Principal_Palette[Coul].B-B; + Delta_R=(int)Principal_Palette[Coul].R-r; + Delta_V=(int)Principal_Palette[Coul].V-g; + Delta_B=(int)Principal_Palette[Coul].B-b; if (!(Dist=(Delta_R*Delta_R*30)+(Delta_V*Delta_V*59)+(Delta_B*Delta_B*11))) return Coul; @@ -2341,7 +2341,7 @@ void Remapper_ecran_apres_changement_couleurs_menu(void) void Calculer_couleurs_menu_optimales(Composantes * Palette) { byte Table[4]; - short I,J,K; + short i,j,k; Old_Noir =CM_Noir; @@ -2399,9 +2399,9 @@ void Calculer_couleurs_menu_optimales(Composantes * Palette) if ( ((Palette[CM_Clair].R*30)+(Palette[CM_Clair].V*59)+(Palette[CM_Clair].B*11)) < ((Palette[CM_Fonce].R*30)+(Palette[CM_Fonce].V*59)+(Palette[CM_Fonce].B*11)) ) { - I=CM_Clair; + i=CM_Clair; CM_Clair=CM_Fonce; - CM_Fonce=I; + CM_Fonce=i; } // On cherche une couleur de transparence différente des 4 autres. @@ -2416,54 +2416,54 @@ void Calculer_couleurs_menu_optimales(Composantes * Palette) || (CM_Trans!=Old_Trans) ) { // Sprites du curseur - for (K=0; K