From fa9e587a7eb26553171334f779f476c12ae97b6b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?La=C3=ABtitia=20VAL?= Date: Mon, 23 Mar 2026 12:03:12 +0100 Subject: [PATCH] MAJ - affichage verrous & EtatJeu --- src/main/java/sae/chuzzle/EtatJeu.java | 55 +++++- src/main/java/sae/chuzzle/VueGrille.java | 208 ++++++++++------------- src/main/res/drawable/chaine.png | Bin 0 -> 30762 bytes 3 files changed, 143 insertions(+), 120 deletions(-) create mode 100644 src/main/res/drawable/chaine.png diff --git a/src/main/java/sae/chuzzle/EtatJeu.java b/src/main/java/sae/chuzzle/EtatJeu.java index 4d5f670..a4c905f 100644 --- a/src/main/java/sae/chuzzle/EtatJeu.java +++ b/src/main/java/sae/chuzzle/EtatJeu.java @@ -21,6 +21,9 @@ public class EtatJeu { private boolean partieTerminee = false; private boolean hardMode = false; + // Ajout pour les objectifs : comptage des séries par couleur au dernier coup + private final int[] seriesParCouleurDernierCoup = new int[NB_TYPES]; + //- // CONSTRUCTEURS @@ -52,6 +55,10 @@ public class EtatJeu { return partieTerminee; } + public int[] getSeriesParCouleurDernierCoup() { + return seriesParCouleurDernierCoup; + } + // - // SAUVEGARDE ET RESTAURATION @@ -214,6 +221,10 @@ public class EtatJeu { } nbCoups++; + + // Reset des séries du dernier coup + for (int i = 0; i < NB_TYPES; i++) seriesParCouleurDernierCoup[i] = 0; + score += resoudreEtRemplir(); // Verrou après chaque coup ; 2 verrous en hard mode (plus difficile) @@ -297,7 +308,7 @@ public class EtatJeu { public int resoudreEtRemplir() { int baseTotal = 0; - int nbSeries = 0; + int nbSeriesTotal = 0; List series = trouverSeries(); @@ -305,7 +316,11 @@ public class EtatJeu { // Accumuler les points de base et le nombre de séries sur toutes les vagues baseTotal += calculerPointsBase(series); - nbSeries += compterNbSeries(series); + + // On compte les séries par couleur spécifiquement + compterSeriesParCouleur(series); + + nbSeriesTotal += compterNbSeries(series); boolean[][] aSupprimer = new boolean[NB_LIGNES][NB_COLONNES]; @@ -342,13 +357,45 @@ public class EtatJeu { series = trouverSeries(); } - if (nbSeries == 0) return 0; + if (nbSeriesTotal == 0) return 0; // Bonus : +50% par série supplémentaire après la première (spec SAÉ) - double bonus = 1.0 + (nbSeries - 1) * 0.5; + double bonus = 1.0 + (nbSeriesTotal - 1) * 0.5; return (int) (baseTotal * bonus); } + private void compterSeriesParCouleur(List series) { + boolean[][] masque = new boolean[NB_LIGNES][NB_COLONNES]; + for (int[] pos : series) masque[pos[0]][pos[1]] = true; + + // Horizontales + for (int l = 0; l < NB_LIGNES; l++) { + int c = 0; + while (c < NB_COLONNES) { + if (masque[l][c]) { + int type = grille[l][c]; + int fin = c + 1; + while (fin < NB_COLONNES && masque[l][fin] && grille[l][fin] == type) fin++; + if (fin - c >= 3) seriesParCouleurDernierCoup[type]++; + c = fin; + } else c++; + } + } + // Verticales + for (int col = 0; col < NB_COLONNES; col++) { + int l = 0; + while (l < NB_LIGNES) { + if (masque[l][col]) { + int type = grille[l][col]; + int fin = l + 1; + while (fin < NB_LIGNES && masque[fin][col] && grille[fin][col] == type) fin++; + if (fin - l >= 3) seriesParCouleurDernierCoup[type]++; + l = fin; + } else l++; + } + } + } + private int calculerPointsBase(List series) { boolean[][] masque = new boolean[NB_LIGNES][NB_COLONNES]; diff --git a/src/main/java/sae/chuzzle/VueGrille.java b/src/main/java/sae/chuzzle/VueGrille.java index 8768302..3d92922 100644 --- a/src/main/java/sae/chuzzle/VueGrille.java +++ b/src/main/java/sae/chuzzle/VueGrille.java @@ -1,8 +1,11 @@ package sae.chuzzle; import android.content.Context; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Paint; +import android.graphics.RectF; import android.util.AttributeSet; import android.view.View; @@ -10,9 +13,7 @@ import androidx.annotation.NonNull; public class VueGrille extends View { - // ========================================================= // Constantes - // ========================================================= private static final int NB_LIGNES = 6; private static final int NB_COLONNES = 6; @@ -21,48 +22,30 @@ public class VueGrille extends View { /** Symboles pour le mode daltonien, un par type. */ private static final String[] SYMBOLES = {"●", "■", "▲", "✚", "★", "♦", "✿"}; - // ========================================================= + // Données métier - // ========================================================= - /** Grille reçue depuis MainActivity (tableau brut). */ private int[][] grille = new int[NB_LIGNES][NB_COLONNES]; - - /** Verrous reçus depuis MainActivity. */ private boolean[][] verrous = new boolean[NB_LIGNES][NB_COLONNES]; - private boolean modeDaltonien = false; // ========================================================= - // État de l'animation de glissement + // État du glissement // ========================================================= - /** - * true = on anime une ligne, - * false = on anime une colonne, - * null = pas d'animation en cours. - */ private Boolean animEstLigne = null; - - /** Index de la ligne ou colonne en cours de glissement. */ private int animIndex = 0; - - /** - * Décalage courant en pixels (positif = droite/bas, - * négatif = gauche/haut). - */ private float animDecalagePx = 0f; - // ========================================================= + // Outils de dessin - // ========================================================= - private final Paint pinceauCase = new Paint(); - private final Paint pinceauSymbole = new Paint(); + private final Paint pinceauCase = new Paint(); + private final Paint pinceauSymbole = new Paint(); + private final Paint pinceauSelection = new Paint(); + private Bitmap imageChaine; - // ========================================================= // Constructeurs - // ========================================================= public VueGrille(Context contexte) { super(contexte); @@ -81,17 +64,18 @@ public class VueGrille extends View { pinceauSymbole.setAntiAlias(true); pinceauSymbole.setColor(0xFF000000); pinceauSymbole.setTextAlign(Paint.Align.CENTER); + + pinceauSelection.setAntiAlias(true); + pinceauSelection.setStyle(Paint.Style.STROKE); + pinceauSelection.setStrokeWidth(12f); + pinceauSelection.setColor(0xFFFFFFFF); + + // Chargement de l'image de la chaine + imageChaine = BitmapFactory.decodeResource(getResources(), R.drawable.chaine); } - // ========================================================= // API publique - // ========================================================= - /** - * Reçoit une copie de la grille depuis MainActivity. - * VueGrille ne sait pas d'où viennent ces données, - * elle sait juste les dessiner. - */ public void definirGrille(int[][] nouvelleGrille) { for (int l = 0; l < NB_LIGNES; l++) { System.arraycopy(nouvelleGrille[l], 0, grille[l], 0, NB_COLONNES); @@ -111,17 +95,9 @@ public class VueGrille extends View { invalidate(); } - // ========================================================= - // API animation de glissement (appelée par GestionnaireTactile) - // ========================================================= - /** - * Déclenche l'animation de glissement en temps réel. - * - * @param estLigne true = on déplace une ligne, false = une colonne - * @param index index de la ligne ou colonne (0-based) - * @param decalagePx décalage courant en pixels (peut être négatif) - */ + // API animation de glissement (appelée par GestionnaireTactile) + public void definirGlissement(boolean estLigne, int index, float decalagePx) { this.animEstLigne = estLigne; this.animIndex = index; @@ -129,22 +105,43 @@ public class VueGrille extends View { invalidate(); } - /** - * Annule l'animation de glissement et revient à l'affichage normal. - */ public void annulerGlissement() { this.animEstLigne = null; invalidate(); } - // ========================================================= + /** + * Vérifie si la sélection actuelle (ligne ou colonne) contient au moins un verrou. + */ + private boolean estSelectionBloquee() { + if (animEstLigne == null) return false; + if (animEstLigne) { + for (int c = 0; c < NB_COLONNES; c++) { + if (verrous[animIndex][c]) return true; + } + } else { + for (int l = 0; l < NB_LIGNES; l++) { + if (verrous[l][animIndex]) return true; + } + } + return false; + } + // Dessin - // ========================================================= @Override protected void onDraw(@NonNull Canvas canvas) { super.onDraw(canvas); + // Mise à jour de la couleur du contour de sélection si bloqué + if (animEstLigne != null) { + if (estSelectionBloquee()) { + pinceauSelection.setColor(0xFF000000); // Noir + } else { + pinceauSelection.setColor(0xFFFFFFFF); // Blanc + } + } + int largeur = getWidth(); int hauteur = getHeight(); @@ -156,50 +153,41 @@ public class VueGrille extends View { float margeGauche = (largeur - tailleCase * NB_COLONNES) / 2f; float margeHaut = (hauteur - tailleCase * NB_LIGNES) / 2f; + // - On limite le dessin à la zone de la grille + canvas.save(); + canvas.clipRect(margeGauche, margeHaut, + margeGauche + NB_COLONNES * tailleCase, + margeHaut + NB_LIGNES * tailleCase); + pinceauSymbole.setTextSize(tailleCase * 0.4f); for (int ligne = 0; ligne < NB_LIGNES; ligne++) { for (int colonne = 0; colonne < NB_COLONNES; colonne++) { - // -------------------------------------------------- - // Calcul de l'offset d'animation pour cette case - // -------------------------------------------------- float offsetX = 0f; float offsetY = 0f; if (animEstLigne != null) { + int nbCases = Math.round(animDecalagePx / tailleCase); if (animEstLigne && ligne == animIndex) { - // Décalage horizontal de toute la ligne - offsetX = animDecalagePx; + offsetX = nbCases * tailleCase; } else if (!animEstLigne && colonne == animIndex) { - // Décalage vertical de toute la colonne - offsetY = animDecalagePx; + offsetY = nbCases * tailleCase; } } - // -------------------------------------------------- - // Position de base de la case - // -------------------------------------------------- float x1 = margeGauche + colonne * tailleCase + 6 + offsetX; float y1 = margeHaut + ligne * tailleCase + 6 + offsetY; float x2 = margeGauche + (colonne + 1) * tailleCase - 6 + offsetX; float y2 = margeHaut + (ligne + 1) * tailleCase - 6 + offsetY; - // -------------------------------------------------- - // Dessin avec wrap-around (la case qui sort d'un - // côté réapparaît de l'autre côté) - // -------------------------------------------------- dessinerCase(canvas, ligne, colonne, x1, y1, x2, y2, tailleCase, margeGauche, margeHaut, offsetX, offsetY); } } + canvas.restore(); } - /** - * Dessine une case à la position donnée. - * Si la case sort des bords (wrap-around), elle est aussi dessinée - * du côté opposé de la grille. - */ private void dessinerCase(Canvas canvas, int ligne, int colonne, float x1, float y1, float x2, float y2, @@ -208,66 +196,50 @@ public class VueGrille extends View { float offsetX, float offsetY) { int type = grille[ligne][colonne]; - - // Bornage de la grille (en pixels) - float borneGaucheGrille = margeGauche; - float bordDroiteGrille = margeGauche + NB_COLONNES * tailleCase; - float borneHautGrille = margeHaut; - float bordBasGrille = margeHaut + NB_LIGNES * tailleCase; - - // Largeur totale de la ligne / hauteur totale de la colonne en pixels float largeurGrille = NB_COLONNES * tailleCase; - float hauteurGrille = NB_LIGNES * tailleCase; + float hauteurGrille = NB_LIGNES * tailleCase; - // Dessine la case principale + // Dessin case principale dessinerRectCase(canvas, type, ligne, colonne, x1, y1, x2, y2); - // Wrap-around horizontal (pour les lignes) + // --- Wrap-around (réapparition de l'autre côté) --- if (offsetX != 0f) { - float wrapX1 = x1, wrapX2 = x2; - - if (x2 > bordDroiteGrille) { - // La case déborde à droite → réapparaît à gauche - wrapX1 = x1 - largeurGrille; - wrapX2 = x2 - largeurGrille; - dessinerRectCase(canvas, type, ligne, colonne, wrapX1, y1, wrapX2, y2); - } else if (x1 < borneGaucheGrille) { - // La case déborde à gauche → réapparaît à droite - wrapX1 = x1 + largeurGrille; - wrapX2 = x2 + largeurGrille; - dessinerRectCase(canvas, type, ligne, colonne, wrapX1, y1, wrapX2, y2); + float bordD = margeGauche + largeurGrille; + float bordG = margeGauche; + if (x2 > bordD) { + dessinerRectCase(canvas, type, ligne, colonne, x1 - largeurGrille, y1, x2 - largeurGrille, y2); + } else if (x1 < bordG) { + dessinerRectCase(canvas, type, ligne, colonne, x1 + largeurGrille, y1, x2 + largeurGrille, y2); } } - - // Wrap-around vertical (pour les colonnes) if (offsetY != 0f) { - float wrapY1 = y1, wrapY2 = y2; - - if (y2 > bordBasGrille) { - // La case déborde en bas → réapparaît en haut - wrapY1 = y1 - hauteurGrille; - wrapY2 = y2 - hauteurGrille; - dessinerRectCase(canvas, type, ligne, colonne, x1, wrapY1, x2, wrapY2); - } else if (y1 < borneHautGrille) { - // La case déborde en haut → réapparaît en bas - wrapY1 = y1 + hauteurGrille; - wrapY2 = y2 + hauteurGrille; - dessinerRectCase(canvas, type, ligne, colonne, x1, wrapY1, x2, wrapY2); + float bordB = margeHaut + hauteurGrille; + float bordH = margeHaut; + if (y2 > bordB) { + dessinerRectCase(canvas, type, ligne, colonne, x1, y1 - hauteurGrille, x2, y2 - hauteurGrille); + } else if (y1 < bordH) { + dessinerRectCase(canvas, type, ligne, colonne, x1, y1 + hauteurGrille, x2, y2 + hauteurGrille); } } } /** * Dessine le rectangle coloré d'une case + verrou + symbole daltonien. + * Ajoute un contour gras si la case est sélectionnée. */ private void dessinerRectCase(Canvas canvas, int type, int ligne, int colonne, float x1, float y1, float x2, float y2) { - // Couleur de fond definirCouleur(type); canvas.drawRoundRect(x1, y1, x2, y2, 20, 20, pinceauCase); + if (animEstLigne != null) { + if ((animEstLigne && ligne == animIndex) || (!animEstLigne && colonne == animIndex)) { + canvas.drawRoundRect(x1, y1, x2, y2, 20, 20, pinceauSelection); + } + } + // Assombrir si verrouillée if (verrous[ligne][colonne]) { pinceauCase.setARGB(120, 0, 0, 0); @@ -275,24 +247,28 @@ public class VueGrille extends View { } float cx = (x1 + x2) / 2f; - float cy = (y1 + y2) / 2f - - (pinceauSymbole.descent() + pinceauSymbole.ascent()) / 2f; + float cy = (y1 + y2) / 2f - (pinceauSymbole.descent() + pinceauSymbole.ascent()) / 2f; - // Symbole daltonien if (modeDaltonien) { canvas.drawText(SYMBOLES[type % NB_TYPES], cx, cy, pinceauSymbole); } - // Cadenas par-dessus si verrouillée - if (verrous[ligne][colonne]) { + // Dessin de l'image de la chaine si verrouillée + if (verrous[ligne][colonne] && imageChaine != null) { + float size = (x2 - x1); + float chainSize = size * 0.55f; // Taille de chaque morceau de chaine + + // Dessin d'une chaine en haut à gauche + canvas.drawBitmap(imageChaine, null, new RectF(x1, y1, x1 + chainSize, y1 + chainSize), null); + + // Dessin d'une chaine en bas à droite + canvas.drawBitmap(imageChaine, null, new RectF(x2 - chainSize, y2 - chainSize, x2, y2), null); + } else if (verrous[ligne][colonne]) { + // Fallback si l'image n'est pas trouvée canvas.drawText("🔒", cx, cy, pinceauSymbole); } } - // ========================================================= - // Utilitaire privé - // ========================================================= - private void definirCouleur(int type) { switch (type % NB_TYPES) { case 0: pinceauCase.setARGB(255, 200, 200, 200); break; @@ -304,4 +280,4 @@ public class VueGrille extends View { case 6: pinceauCase.setARGB(255, 255, 90, 90); break; } } -} \ No newline at end of file +} diff --git a/src/main/res/drawable/chaine.png b/src/main/res/drawable/chaine.png new file mode 100644 index 0000000000000000000000000000000000000000..da042e89c8b515375a5132d2b63c9234ac8ff6a1 GIT binary patch literal 30762 zcmeAS@N?(olHy`uVBq!ia0y~yU}6Aa4mJh`hA$OYelajGuoOFahH!9jaMW<5bTBY5 za29w(7BevL9RXp+soH$f3=9mCC9V-A!TD(=<%vb94CUqJdYO6I#mR{Use1WE>9gP2 zNHH)dFnGE+hE&XXbGLFv$kmxYKIVtM|8nZm8-?o48d@AX7IZK*Ddk1>qzRo(DV^kF zbTZ}B>=dKPGhEd>3w_l(4Uefv^acvL3OYIlPN=mJH_{e9XJ$QPWUh;a2T*jaPhFQG1WH8IruMF@^n|%G&8LW z7e2kd?2voZ-cOcJP@`tX$)u;1&1)Ml0mhNKy-?;IE-d)B!XU|(b zxa_d6+FnbsML_8@FN+-GERXsP-#!(K{NM|CbFSYP>?LLcruvpI?9W5${21@M2{9_R z2*moB_pJQKc1gbHvaRw5SB2v@`-3?YTR!afPiEOy!X9s5doAILk$@A2;-+%}4@@t~ z=luP3(V&cX%FVxw+=?v%bwUjL_)I4MQ<%*;Us=MnwMD?GqvtAn#mq14SABkOImcGA z`Jb}56NloZY_kC8U(K0n_1hR0ule_&RlupEgd<_ihj7n&hO=${%pVNB>zU0?W;Qr+ zD8A8Rd&d0vl4ZxAKQ&e1-lqJlhZfud6jRD4Xt zRK>al`Px^kUHvq~*L3+R|DsL5RJN9GU9oD`Ir~X`cewxfpI&dP$k`y^#9{r5QJ-=8 zl3&M`sxIY`v}t+h>~2tXC4-Gu!bRahoW*66UghI`8_NI7eS3HR^tagCob89#ea%03 zzwvy6h+olM6$U2`#WhmBg;Dn(gxuXwzn{@(p25tIkB?p6?teezu9$&P6LUM?hQ!Zo z*YYBqYn^Mg^7qRmw=F&RwojE&z=^irPxjJ%hnQ6B9I#r>MPaf{s`}IJnM7K_?GT7;x)sjWNzkK)9myK8A$eQeRj~{&$ z7v^ExyJxEM#f&NCVSCSBdg^T%Tz~BK?cAdlMn9KC%X%>>v6GyQH;?uIL+5tm z>|Z+PxyY*}|-=oHr-0>xM=*D>q=Mfz6q z7xEeA@A*2pN5bq<_q$-X>!o39Bae2k-{X)Ryf}P&WV500g9_gUaL8Caiu|CjrIYmT zjr7d2qbBkGU!z6&+9QA5@?KL>&N^#ZWnuSrgKI2D=9DObyws6m!~HK<&F|qf>HMW@ zOsdZxvMl<-QD6Np^PB9A=dR!D+3dQTtr&~cHVQa(xY%(1b8U6KQ+oXFnVFXDO-)SZ zyT8rdw8=Vo)d`3+s^FC&?4Zp#avMNNBEALFCR2E|NJ%m-&DcF ze>N`F7iDT>SnL*JSoFhV+xt6yCQ_xFf3G$?$A2R)J14Ktg+tNhSn=PJ_5vIRe@|ua zsC;+!$+IWBuI3)g%*c7*|9O7OZ@uV`Rx^zcs2unt(tL)2L$M{}Y1IdQw&pt@KU&YM zefwrj)Qfa?M@PoVYCenhZEQU3&bRYwuA%{Ng;2m6lPN3?9EvOz25;xjo_+dmd0n5T z@bVp3Q;%`8F!jir&)c)7rtHnVhhf`m4f)cda+Xd62WyP}r{I8q1L1b%{Ng>k4@~`M z66<_5B*fP-^y;+u?2KI-&+0i$;8`Vm_9QyjN%kjK0Z@4rmXj|U>S8nA`9n5<^OIfLc z(m;vtI{)9>+5Z3g%NCKf{I%7^h?W40mQ`ALw!Dior3zL3VmgI+SWa?2`%!f7_a4XR z3s$=kl!vYNqd;)3I6V>Cei`S4`!{;LnxzqVTFA>rD&+q8$@ z)XXd>INCQiRySShRp;@?E=q|9ZcK}~vvx+F>(MW-Zg$_Bx_9N9P|xj)^49eq*7Chv z@#TB}hUDqmyP4myJS#701V!7$(jQ7cR|qbf4{Fs!mMfHVRys4Gds4Zvheou{`oT9e&NE49~0}@8!tMj++>}^0IDG#bU#?X zf@@*Gi7TuA^|d%Dn&sU*v23lhWzCNbkN@2|b@pWHn-?2niax67?Rub8R2&?=x8V1> zw>H0ayWjDcu#eSd!kgJ(gTBq?+2c2>xjv>-n5$jp?)NV*t?t#mmj#tpHt+tuZvJ-a z^r@M3PfcSgZ%!2v6|Jn>AI2S5Iq~ReovU9xpRgG4aH#)Uro$xS)bYlQFT!h9_-||8 ze`gn_#Z|sdofrKGGN!{w?}ay_=H1^M&o%Jtx87L}l}NZ%@z16A!z8I(UwM z#d`b4OJ)l#kXr0;!7_!-fkScA^?(Pm3-(9LF0=aade^yETUSSH%ISQ3liB>s%e(FV zcm8-D3+es%C$7C;?%6-~_r$>Y^w-nO;o9Jnw_nVpq!90J)iOav#|7)eE;&-MI6&!zxPp8FT?tyj|;Em zMI1iB*!&{)=IyWlm>U_U+G^k2Qo8uEsX*YZxq=E{&HXPA%x4InwsN`EkNvxzgic!< zk+wS5YUQd^zkFXy+7xV1_iR|TiiL@BxhPXRGe4vJwU}w3qG*$|eUEGX(!7#seGm30 zJuQmP{p)bO)GYVzkrjfW>-O^ngibvbH+4S8-q>1a>g#^lG$b_j{lC3_ySkFrurkEVQWJ9Gm>4#n zHLql`GUvZ@ChfB-|E#>fdsnWZgo)R;n5vUYpFDqV{qmLDgTuRy88Iug2+Yi7_#hPU zV$0%3c}Hs=Yu`_4V5xVPl9J|Vcb;Q^Y;NofMy4Z=3_pGPv|{DTvQ4I&q(6uiFo0d= z^WFRb)AG3@A|fBI>euxiWM-e8_xSUJ^^CI(&pA}cRcw6vS!{z`vUiMOz{8_w`Q_|R zY*0MB@=fT=J)0Ti^E%I*KArsd8LwZJb=$_UmMe0FDlGzse9f7zTfbE?H=nM5_iJj~ zy!3q;3l?eB@&5B}v`;?MHOH**ufT)k19uNZn6rO+(|!KK-u(LccVyBRnq63y^}i!g zSwl~6+0LCe^U94I|FcAbJ*dV1W2dz2-H#isC2X^{ynHPhy3jI3pP^FXPyDe67E9)2 z?IklG@EMEC?Hu#AU8V~rFZbJ2@-ry>7Z*#9ih=}B(ZL%Z{dUcAIDIexoWIj{ zv9Bn)b@Ge$^5U0EPW!~aKm4GcOS#}aM^4Fwem_T>sc0+|dd9wdDF^l45>xuyrGxiRy_eZxr%x4XK#cfRi1?K?kLKKxM~_dk8+ z%^BhM@403-p3V%mIKD1bdzz)~ndN6c+dp~o#Gv9rrQfc}k_?J1Cmd1_OrKj;^n300 z;J~~*#yyi+>(}eYzH$8!-?Fjbd|+XXFdx%(ruI1{mu_4+v23m1J->!^?B{;%oyt0! zvxgm2^DAAh5p9pYzRYLNp(EXThNWv)t!i=l7XEwx&u_E0-70&a`arB_RoTh{mL0t9 z*-ZE1zwbMoIH%U)l0iDBL;Zr?pt5_S38^UplLxaGh1 zf#Zdljq_NuGjCd@U;h?+J2NY*DAU3q<3U1Ek<8RjlG@u=v8g-OR(*?<`g8Dx?1K!kgzs|fuQ`Q%4t;rZ@p4^#!91`QNxg-sAE(8d$JS4N z8Tx->#*w1`kurax_ck>;%b&sI@12=5=Gj)=e8&$CpX8czo{vE--)*O2mfp_L z$*O#{pPQxLVBX>XDccK6eN7*3_`1lUv&r6J{k*<3hF{*Gc>Nd7Qgh0a-Ta(ceN@5g zgT`sP(fhV&v-}S`Z<$%M>DQ8{X1k_U2&VPF>l12_1Es~5|93l@*VaGhwdxO4cAL4& zY}t{ErJq;-3tu05c9Qw@8?sSGb-e!)=E!cipZ7S}bh*xUPc!M@kcgCW2}qIFQt2n< zzyFie^=ee!9i}eJ~gYpU6@3uYc_OZ}l?h^7D(cdH?NN_xX$cys{#-TBVsne;8N2HQTalACtpH zA$116bZ~jYF~8X4uYKjAl*`w(X6CT#v2`+QoDJ(M^sVnEHE59^B(=G;9tJ;vnXrLVK@RWg0Jb?JJ?jf(!cE^2J`47W`y zxVhFmN@(El@K{v34l zeAZQ@{Zyvp3g5DyvT6*x5FI!D7>viIYcnU~Aj83WSuidP6Yb%bcM|GJTDlk!2p`+B)qR%I?!!v2NwFkgZ>(zRf*xJi^DE{Re-~;w z>eOwwRK2Cj-rh_t*YM+ElVjV)WWFSs;q4uknD6D7&u5~89#a7H4 z;)NI#TRx~~7yrnOh|IVa=I3|LGX8Su+{5ntw`IGe+mheN{4frfw9N1ebKUbL&5F(K z0XI*_B#DJ5&CNS)Q~1f^W5w}o7ORioX6!@%y>HCcyvfXGQ&2y+(6My+>pN@yJU_C$ zvGl+Tk^9@FKky%j3%i;$>87z{Nykwu{x`qp&OKTnWuXQt2Y&?n@8&&y`c%%=)2D6A z*&h7pd|cN4ur=_2wS=fpu%dhg8~ay@0})dyPad5XBnmvLG9!>RKQ1nu!>`qY@-xYN&iSI(!WQ>INRt6Ru- zG2{7W-CgU7A3R`Gcdn8LwFWr$Z~Du%V9Aaf-+VuRK6kJ7`i(0IyY=}+lh<%>*c-4( zc{ZwTe*{cMN6WXAXWzU8Wtij7!mfeh%INCht)Nu`mlFi(;j0W$2&DPK~ zG*SEzRHcVLdOpQ<0>csBV_fj8fb6b|a zS|Yt&s!Q<1eDlh^uMgS_a1OOiXYsc6(Z{Y=bh)W*wWJW_XihW)Y!Rm=b7CP)#^SSo*x((_wdWL z&4yXu%a2TcVE_2l%ri4Bk6+okYn?DxwErcUD#jK0zgZ!%`9_^Vt-tfD(vN;=>ppk+ zU#3&l`c(3&Ph2=5xcJBU_cinX*r<2^e97kX`oZsctpB6)_guYm)T%{U(S+Onb8K~4 z;e!i|)y=<8On$o`QqW9(Yh3Z#=L|!I=pXq%PY+L-VbSdnc%|5Hue9l=uKHb%js4mu zzUgWB!d|Z+)Gri%X76|Q$Ds#Luh-pTyk*lqc1_Ho5Cj>YHo1>-w$pwTG8|&AIhx$D4eP#Xdz&;5wo{cgyX9l`VaGVA^nm!9g8$<{@%Hq z=kwQ`;d^;WV+fOo6UYBea~ZCfU-^8e>3PNLx#pMU|D3-f+&P0kWBDq7OWEQ@a~ZZR z)%wA_XV;U^K3V&$ov}>cFCM&X4{j~hrCBpFRD6D$n%B#`Vc#wJsQG`^+Mdn3vE|;Y z3pUB6TlY_Xu)peU*1g!hmx^|?^fB<4mQCElB;dsH->Nn6i0a!l>%O&5Q~$4W`>)le zN3zFL^J5b$x9)F#u>WiG+C5LsRo6G#zEf5alx08%q!UYqEcR@W0Pr$-2)!*6VIBj@D}a z-#Phs<*WR9w~YaEJDATN2tOOA1Fo!Y8!gb3HQ)C4Nq+Jzd!gQf`}%cWxw*Yhx8-@I zez326rBYw;>&bNNI#ecs1tG>ChcsEGb z)298eW@Y{RaOJUy>F#N_b=m5&mpb-Emy0=ZJe;W%qnCbrVqx;}j~~{{E!}eDP?P=a z%l{^3w8-E8uDmVhcGAwZvx9a%c>iSOR z#{2iKlRA5t-zKYe>;ALq|L5QNuWXioH)rSC+3V(-DW@LXziZj7`}RMrrDjX%ZufOM z%<*qpdgl|-1_7rZ@xsRzn$3IFb+G=L>1HF#AIvrUv)6Zk2ULs>KW)$sO%mF;_tyPq zP5Z$vT2^?=UV^9SckcY8S4)F^w-;Ky{r_Wr-TP--><@fCaC}46r2uecqg0&3d~Da< zOs(%fe=Gi&K5a_T^||H7X;&mJ=hjI4xy}%tyy$_yQ4m)IhoaGOuNXgupq=OM^B=5# z@?m1lyUYK5DkFEkG_&LR$KF_J!SN4VKBaW&Gt4jF?0kFc-&~*H+w;D9hkwx5(n@+) zT0FDt=v9{HXVdrp%vmk(U~0f_@oOU__wYHL2f@vtl=VRgJO)B5vVPtVJiyVD zkbhP4fkpv~1V zj)}Ha%)yP?(RSh!X9@e8CYWzn_jI$!jg-amoc}m0B>#wpDvI#kjC#pGQ}z$YYc6Th zEH#`vcqQgO+qk7vq+;vS&uqu+U&&5hv@nETH0$JrOFF53J#uz1R}X|wVkKS`Jm$$h13wR9OiKRc8Bt;cfRSMlDX9Y+^s z?0U9B-uH4v?aicV`#0ZNI=YHY0FX*d2We``l2Gq>1Y zmm_JV2l$rQLj9Jsyutt4t5={vc;q!F!sgkl>Yt!aW?io0?Cm>$cP(z!ZvvO&Cv-|* z$~DCItdlyszV2UuS5v)-)YIkP@4v44FyB0V-qQ!`A!G4@0io4be^0ttI@k2|^$)Km zxwQsQqJ#IiuZ^4m1liQN=okj z$e7i)Zgs}2d!GUWO!J#+qd~FQYd*c;$BRV${KvZ=@Po2N%{%k`zs?HyKAx?0>pAm< zx6h>W(vGi_)zI_*pVpMa@o#hbnZ#2|G)+v(!enn+cP-jbc-rk=?A}R_)orRD<(Ep$ zU|#d>ms{9LZ3e{_{lDK9-scMoeS7@H9mn0ywPEYxPX5{d|7u|3^gDNAyu7_Mbv0G> z_51hi*~7noxdzw9h@JuqpWqcI-%eV;4dimO(pjr(qYB^r2sF#NccRVrbtd1=sKfR% zCrkMME8}bbGzTaXD>8sXy~pW!z`r5{@lCIz?MUN8`!M=g)+>+O6KKU$n>i zIj@w@e!IUf?ytA6{rzR}qCJO#6nb5h=h)TG+GSiSV_nyye4MZN$qPZhu=y_D2Te-N zSpItot1q_!4Wds>cE7Q+T7CBRyhXc~Sxwz;&vE9^iXSh$L4&Iwdhh@FWL{jl*z8|r z+PeI_yk~Q-zTfb*dF>pFQkmGxD>c?9Txf9YkumI=c-TGY=H^SAKe{arEPH?ZY+tPP zjh)r($NglAWAe7`&EfdB*2~*l(y)Z(a64c6g9gWtZ>v-!cy?XeziO3?ec>FC10P&q z{PyPVfA^t#Z!|uxt zauZn`I36z3JfQ7x{+u2UTXVn7r_aY0^B+_4#{0_~%rDytXct-Sci~X< znaQNXwrlpzi0fZ9@1E9PCudWzf#tuM%8&Fptp~n391~q$kpHz+V3Bq<@4u&EQo0da z4y>NEdfwy*_n(?F#UF`yQ*LxNd7~?6kiyUR2**FsFzI8D41axldHTRV=DYG!+r!pX zwePq6Zyw(KA5L*6WRysA+2h|_?@jh|OZQ11)!yY6)(0BOd-|%S$Na5xf{(p~;_ohE!`2UV!!h`u& z${T+ha#_T-Zj^l|w&28D>7@>~A9Oybe8{V6pA-d3Zf6Q?e}qp7|FE+E?!z7Op}~P7 zqM^YTO?iDUU$|(`bE}bog~_q0QQ=_1ggJ9!ii(Rl*sS81br0IFy!L?K?d0vJy7Ps4 zL_cj$p40UF`B7P3iRhp6*u^fg&if{O@&;FoQ^%A-+aJ@XO!?5OU*G)iZ_bqe*Bvj4 zJo;!+sG4W(z~1cm>C>kZr_U;@SCn~*aQ^e$%KJ}NlWiU2vji39!*}I6T&*^6MqK(7 z$>?&~N=Y76*bzFU94!omMB zeogg8%#DTzCQLhD>5zJQxq3jC;NmE4pRAgao)X<-+xA#JuqY6)V0gp4ZDMQmw>_YC zlG4OZiQuK{Y?t2T{I_eJaA#ZR(Z_kb$}3G@-+SKLs=r`&#iZAu#P{dGV$GEw#CzR- zp8RY7Y0;tk-y7%exVzHB9@H*-`}5Js_^TmK4+Um*U;evmU2t^x>5Y$%Ta-Q0Fx_fu zVrm+A|Axcgna1nb>MK8q*Qs+h2rSZ#XQ_7$|_g?ah*vD^C{A zpF8n^z7c4!sv~S4$G<{XMUlL+n)ip@`8KEh{hf1f+sq7;Qto}KKe~NDi$Iuq%Kv$P zJUF?&_(bG~``hdF^L64+{bT+u^EJ7hrGBC(D1nDC<|nV&SJt{${lCS+f)n3t{X^#` z9bClv=Jx*UW%7O=AH-+6X)$tL+{$|>;_duv57w{fdi!9#2G{9n`l&~EYX^kpZ|77~ zJ{X^(G?P(a(d$)5R&+eOm8iF}?$i2}YZL$7e_s6Oh+*{GyAxCo{%0__^470)zbBJ| z%k?SzdpKj>f#(pTx8**R*SDR1iM8%+s^^FNQr6fv26NWwE&uG@A`tmP@IlyiEAP?| z_3!_d|2*#f-yu*W`t4nVU0Ejle?JL&c?ShQdA|Jn{nKLao9rd{Tl6a{nIGyKF)O%S zFBbpc4$)eB^YxycNi)}O%R9MA{ePIRL;Zq_ucbNbLBlt@rgand*7Y)vwoL9`4)1|XUTLG2B#9)?~gC-eDjjypLW=~4Og$}CLd3Ex~0B4 z{Nu%!)k>$qK~cb4&@U}pdi25l?fLO_h4=M0+x}?&n3Yjxm8TQrFT|j@DPHpfdrZWa z=#Ypb*Z2MSIz{y7N9PaxEKGl1uz$a_clXc96OB!NY~N)#*IaxhXbH{D_sb6mET8-2 z`SarQ&)+9rXmDJ1`^eNCZ*Tpp?tK<5|%E}sJ^iU}H`Y+ud>~r>h+<9efA;83&puvf{a#J~e9XlIJ09(R@L%ZIx8u%b))`q@UcYR8uUgdp;D`?zJCnL zZI)gPZH%>dBqo2*k9?`=@{KcL&f9kwJiGG<<$@D-~XDuBj=O5@por7enknMMVYhi>K$iPzbi5O zgZfNH0j1w(4nEX+CwSNmwC=_ycJ)iEvkL_hY$cW{{9vB5;dWqfu(Ev4{cjK7FP^Be z)pYsF_4yw{KkWb67Cocz>&@3DpFV$nd3E#j$$9QpQd2(IdNQ<}u={`B^KpW~iMQMD z`6(piiB?+3I9;!m{=?YE`0buALw8(l>#;VsRsL5Cp842z32ndXZzA3`Abw^kEDQ-jCzj(08k@L)0j0*!0JvL2xy)E{bdwy$T9S*s-S4^$N1 zTrADkUp&{cR;;zPb=kUJ7v*Wo|6LaO!+5W#sQIn6-Ghhm_8FF(8Ch9R-0gqMpKrEr zST^6<`QlBpV}4&sFGc*A|At9Gsk(+oV>5V;EHm84xODBZ%pHw)2*g8pI85POHF<6xBmX_eE$6vAL=dZ9__drtu{sDhw~5sPhU1kBN9nTbHWPTMto>RH(d!PFv!H}~xF%cV!Ec5q#ZM(ZrHQDS3^N~g^ znRk7lxs|P|>o487;SiZAd3X1Bi|ma{R%zw@P0+5d{G};Z|LMDlnW@#zyOxt!>l-3; z%KU^T%$|MP`u*PCRkykxGCoL@2?-MUr)JFHl+s>zAhb+cTuiL!=akdFv8!M2TDtsy zsr0o^w22$eQ^KP|BUlXs~%U_oIB*Izp>z=_mrvA0&lLK^k|aMtJkkruCq(s zE$5VO#r2P&s!5W;ps%3MZSDH285fyXY`q=vV>T#zx9?QB#h!L4b+X>#4F~S*u6OO7 zUH85I$BV?cil3|{(xyyS3F<$X*BpxAF4!8)oSBicVByAtYu`zI>kYhV6gY|K7P> zu9+!%KUS;!PM#TiWoFAxs|!lXpaSyQYqlBo>(rCeE!(K-+Kd?tIo+(eaxMwWZtuanj3d zQ(x~LxAyFvySsc-X^GhQFq9~&%7DPb4o znJC$?Mvb#UVCMTx=kz^uo_v@%MP&MneRemUHg5y1DSUakw5k4jpIG-U{yPUHF{Wc6HBMN!i%C4<8&?Wv_b6xBP121M340GFRSie|Y@B z*M`UT4Z+Q9JZ80PS7plXo0gfeqCBW&rQG6{O(%jt@pm(4{!P1-4+7F_C#5sIHea{d zddfC7M(KvV4$N)>w^(c#Ya}I}9rK-3!Mj6Xv7f`OG-ftliIiVat}iPlEm?LhQ1rf( zdT;B0aDaGcG70dg{Zn_oURw4BG(#z?$$X5toO%C251wnuXM`-QUg>o{J}~z{NzWoj z&CsYIule_Ced6U`Kk;dcO6NSl2s7!K*71Wg-(I`_-`QZokNG{1)%$jD{c*mhyYaVS zoVZP!`SWY~$5*U35dFb@;mJYUbB1MKEH1B46$y2Gozh?LyLPd;)b2SZV&JlF=IJ{( z_i~Dei3EjZi>zdvt6O-NN@Tlw7uT(01V&b4^H2vq!M`c=T*O=rh3vdYWuw1zHmffc6 z&x*SXcPte7A$e@uL2H9J;T>xwEA~BQK6dzWLeKu@pq`XB;SFymmveD(?MQgTx@_Im z65gegU)K9xwkZ2EOiOk7ZSI;DrT<@)jm zaZ<;uKV3awEwP!UukY^cii@ht`rq{)wT_=t|LF?nBeiv}5BR~uZ_`|cDbr@?|GyoV zm-jDnf4Ioemr2IvQ=v&a ze#{4zQhK-hKOPl(^?&>H*|UqUIc;6G%x(W%i|O4Pb3f$uzn{!+!+oas*2RuQWl6Im zcleHH*j&nVb!&*Nma#ps{*Zd>#FlbUT~%DV{q}`Zj1F&EIVQ~iez9tI+p;NZ|7}-d z_`|p3;NpML&HsJ#O3c3R+PQ3<@w|W5@%0k@$8Xjb?4PW-_w|yECwM?9bZ3tKqqC=r zwd*7@{%$s5UWjhHKef{~N+4qu9Ub-&(_36f-2kUoicfD}+!Ti~i zPpjwuU9vLUG}e6USN?>{(|rBfMA`3^UuuLo#JzBJI)lolw7b9eYN$1X3E?d{D{n79H-|e@yCC|S6ww`;giP%hMAqK@=3s!Wt zrkn)zuhWgRe>8v8dcbaWdzaiFZfTYtP;K+3JV5sHowB{|sGSU3*^q+Z?fe?t>~&Gq>j1xAQaB9h2yFv$FZLeXX-Q zU*V4ziRy=McfI-l-e`%)27#HY&*dHVxbjChReOEY|CVlbgYt8|F=a1PLqck{Z2ov= z=H)%xU)jdR{7{-bS2rvBD(?@bg83(3$MXMUkl+7PIHu&_QIOZVUbfaVyk8fUSst-A zuHaVV2^p{pbEeJ?038V zKhG4+wfOG!?PNJH`GI}%K7@ZnwO5sa|pJb=D6m zKhDpwn=G9^TVG0|uSNIond$q!x-CD>T>eORkEMs_k13#>u}*3??`yx=)swy{{pgo9 z?rX3AsRH-{0B(_*Y) z=U2W8&bjsKhv`XSKWl-Ru0jloM$_LOjrz*_^@#P&uxFtk>R&Xr`%YE5W;!?E#T(5J z??mtZ{I$R4@JoY9zScjKejHB<^nU-BQEczOuFLzE8y~QrQ=(wh4|bYz!`i2R=FSxb zPn^ndEzEp=@Bblgy`(=sAJ64UO=?>IQ|ZTX(bf$|S!dnemY@7Q@3{JRyT-Hsr@1@> z^(4+LefVH*?xwd%+TnX2SAAG76?$}i-M?vCGPwWW9$qg>Ig&J#AESiV_yJ9mZ#BdGoMdH(G8 zzb5}*%>Q@RrcFk{*I)1Q`#bX&-*JP7i#q*INls@F)!l!N{U6_*ob8)k(){M1%>A5a zT)THw=Co$}1KIg|j=eNquDd<^x#oijm;GFxO$1ei+YaX){3?)Em%n8#dZ`PL;x zO_N2%C2e!;kJ#&_W$*5JTF89z{m>t=qVoQYl(jPgt+^W+{j4(dLl4GZHknuZPf|)s z=I>9&MF+mmDN`~6bzoDr2_L9SSTXmQzJ8pCZ?5k#*8j_%sm+=tGdE)P#Dnq=zNU8H zjrhv{!64|za_`CE3{EL_w>L9fHN7e+{)f>lC+7X^%N)Uyf6R059_cC%i^!XPK=Xlm zUWp3CaJ%E`2X-ii9+XeG8SSmR{iBms^Z$Fb)fMkt!|(lWE;K3HD=pi322?D~%n#hf zKH=1Z{coGs=G@qFugH4)QllU8mQ^kG_Mg*5j@DE@;M>D)^Ulp(X)~yve`d{)<9GdR zu;d?UDd~zA8{;GMo^K0b`#*WP->2jI?Ho(m4J zUbmg^#qFPleAPUidw0sK2mgQD|9v;dSWxDN-GftHP7{BEDh=x;HjEph?upM~1?AK}+SKDRHITfXyVRqFwjd#+ypy3BH}UlMWp;U!?f!Q*rEY|!5) z_3vx#Q(kY=opyVdrmX)zJ+}Xs52&Qvo}Zx%>03Cl?_$2ZXJ24A&%e#l>o_~!F4bo|M51ci>leDY%{Ib7{|JdczVt`o$_6_+V>kY28-RU{rx$uO~CoYGMH$q2e zyekb2=l-|1>f58$@qeTqyY(C2J=T7(-q?VD!@ubYyI3r_9Xj4zI{ub#chraZCW%7Z z@Bh;5>gw{@{xR{xefBeMtNwQKc`zxseEY$qm;d>d*ZV)()nT7b-p)(Uxfkt6g+cZJ6L zbF7c`5>6e_%C?%UhQ9|AHyGOI^u0b< zf9FP_&5zS(`2LySFW}z1Zsyah`D;sJ)nz&b!jrb$^8O%Rr^4CrV%4Wc&I3yiL?nm= zuzo3B`JZFM?x&l%BYHpbf8}id3!TJVrM0kt!*_eQkAKtt589p#F5!VJG2Mj`=TZ;2 zEHL1Ge1m@v`A|4 z`a<6Wrw=eC=$?$1_W0m`U^Qqy>|q9rYv=8Ek8gZTw)r^S-s6M#K2^?!6J~cCZa17~ z44)XO9w*24ucL6){ex!l(;v)l5I-32t}fPnGw#Lptp5l9+I;;oKj-frD}{scJG_J# zChDp&{^z;FH)VOHj$h^h=>v}?HcRj;9{jHp2O9kBbUCzQ)~gls-&$|~{H6GF=kd4a za+Q~glw;sr_Bz+V zio}PX*WBN7uXW;F*QWg+dQ=#cF2}I{5i+O`*gYZhznGO(*CK)LqcNO+7>@hPJfHde z|FM(7>aj1^^K$+>6kH@R;e<%&fxQQgU$&j#6KuMwi~XPZ=Ke2p&C};Cey~1MYh%Tn z2%EImALhA~#6G`!_5G(?((4!P`0#6iEa$&N#YW5uf7Xfo;QSz}lDKt^w*Al5v$_^( z9GPmd>Qzo+eD!gEna4-Nw zX&n(|bq&1}*TL?fB9wM=ws*wVw5jTUl@G=*nP3yhX|KifPx?o>QMUa4{2u5$Xqeyc z*Do?=wXMt4nANsSOJmimTUY9oHb(S-Wt>%e4Uhet7;wE**7y2_(z}-(?#HPJJ^Ndl9r5v9(RS@$Th$N7FPWpl zaLC_|`;Yv~l^5rWZc_Ylex6}_X7KWzx0Z)qHNCoLca`dE^R?pdlhAwJ zTxgN5Cqs+;6J~yf|C8P|GJyI>H&;)ZXIm8%73JnxXn6Fl*NOAz?O*ST(DAYmQWWaE zaN~x<+m}&Uud`O>uke2voTUxggkfsFvGR4AS?=8v4-dEJ$}^-~EKCsFU@B@Zyht~a zS>e)Jp$f(wO0wqq+PcXvDxEF!KM1t($vN%c_g7QfG+sk};trwbH$EoISQT{~cIVsp z{(xQIT#ILyI)qQRJ%|sCbF7S%?Dg%PGHuGPTjff-))hZ`!ddqA=FxR~cUu$`><{Pu zJ?SQE4F4P7r@pNjs>TdTbJ-ZzGcOJe@?nY?(c8j1@-s;eR+F%`kp;D?zLtnCIyeKaQ4Yq zADXz>-J<5pgz4PBtTxN+5MAMYouOrdB*R3#P>F-}8?Kvku`uyS8_n?)Rx|u~s8d8- zyt?*u@sz341Up++u3TNX^?nY|KL&OGxi+ge#WgUfE>-=q;)SEDE34|!rI49MkGi^p zmXCQ_XJzL7yfW9$H#fHTcKc_GkM2FY#4eWbyOiV_F)Lh3Wcr|W;r8j-B4Q#%Cy!1y z_`53m#r5U$r*D6CUcTWfo*o zVH8+t&Kl9v?*47s^r^A?az+yvm1?;m!5i?0%+ijFoT?&G-23 z(2}9Lp20=S_ejO3?^LE33)_+_pGUd7jrk&tv_|Wv)|KGuc3DM8) z9ol+1ZO7H6tDl_Qe>#%!4_5@kN=p+5j_saI3U{7WeK>#q{PWNAe=)!FQ52RpFgW%KXbpr@1L$>C%*i5=Bh8W{UI(YRtTCe_;Eq7@AoAWUff5&SK&ui`s;6ge9T4w)ac7wQ)3jpA<$TO0LRPJi#G zN!rHTYgK-fYq3jk%whk+UbU^}RKvB!0^SBqJGwsJ`)3lseuc^Oz`<$$d)<>olpcF9 zDZKgQ`r*1sZ-7eADy=-;$2wh$F5J1}Q=4r2`y2nkqi@SqHE_=UVf+t-iKq(XM5;0^`FxKZra1XgtHfvH2MD=|-;YR$IP5kyjVlw%=J>u77jYTdis9 zWBh`HUuEwCnf9ag3o_QsWHwRrH)WE42b(%5?7D`mLst zdLDT7i|pljt_S6NQa)I%w-R?+GEId+X=b(Iz3;n}t{$v^x@zj4O+Ql4fBP`o5Hzc3 z|3PEv(xr3b?;Lt*UEd#HoN>UQr>n}TgJ=5WcZ?kIv)KPgO&2;6!v6pIy^5)-r{lI? zy{7y4Sl{D^@wQ%>o>@)*_kRC7LHC~R&+S|ZQ!dq>el5+ZxJTWXVbR`+2c%+dy`KN- z!T(p2!Xq~p?F3IqX8!-imnd^%^1hX#iY?krFXb9OOjY>6lF9SWPwda$eI$7|!{RK|FB} zmw;1>fhPmYf$)Ndd-LM*UuXf?)mly_SMH^*6qF)7<&JqL;mzO~DvwCrHFZ=wzS7KS1o|#QKB6^?ozv_XQ-MyzzTj|YQ@Y*WfZ~n*75A%(S z`7ST>Oa8GzkY!FT%cMvKMWY!i46)ZG9*C*SvM@2)75`4x)Y394-MdJuZ?ps~^;#z7xIU*Q)Guzh+I9mF5hwl$s!*v{r@j#Vj_)`9+r;*U#I#qp~dn`*0lk$(|i40e6zkRd!>S~67(5cUsrDbJhW#naT`}+Lrsy*-b zSbm;iS$oY=^v~KW*&Yc?CLeR^_%exQLG~{`zWaac|2*@bFnxCVt6K#sJ*y(?g}$xW z^WIxxz1^a>`|^Hw+-BvDU$Sjm->g?rvu4e@Xj1+BNk!f@~XWIR_w%h*I z{2N)mspgs|yLgZEdDdiogVME&Rvmd%c>24?!7cUGuiupI%KYqh zZC!MBb-;tSTmGMUx!LYd?eECWeYL-4#T}UGVE90zSpb}VV$UCE{Ji|?7GWN?ou%*A zE?dvpey2fWqMsDE;w5*X zhIP-2{iOWoSz76UFn(i{o^vPT{5{*6-~azg&)%M6RQh)t|F%zW-`7p%-FRs|S zm1*t<=|9nTxlMMN%e-ByO3t247fNsVF@R<~KK$YKjbFd2Yvt={ zy78wz3Lk&Vr!Bbrp!@@tV~U=V2Xj8Kf3DYe>R9I})Ua+L&y1|?A6uWtd(`dwd8o0g z^Ju-g|J)~Uzu((ty~O1X$G^38oO|9o+0WY~^v5*T+e$mRbak5bx_!F^otE^eFvK1f zkFxh555OH|^&Z)Ag`Y&2652P+o!WPGf&O>zSFB$4fr2U$FWSX&qCq$k`wu z=_S;#?xE3c-p`*u`_BJy-Ru1lv48Vwt8dgN%)hI+^?BKc{H@}T52(bSn>}0i=pC(f zD*uxsZf=~|pkHt2)N#&}>4IrY-u8!}l2-oL!<6+XO&yL-D-dJeC~RN^2djl z-}$tO%lo>v?3+^=e5TftU3-5Wck0+OnML6@t6?1D4WnhJew{nmw`>Y%ANjxL-*5Sr zuT5G0Yv)`21J6HRoSbJMv1H4YnvZg!!56K5SaY_noqzp88#tmp88+SLIB@H6lJsJ? zkjU%{CpUkZ^)>qq-_o_;8~h*Lom^k-pP(YWFGBdj?oH-9EuT#<(UA4|&)hQSEW;Ix zOq~`Fc~6E-^N(`;o7mLE^y}-(^tFKuOrEQF-4_RL%PFq8Rx44#vO{DB2T#eZg`WD% z!UY968=^ri&X>Q=bs1f~X>)Xg>soMWH8JSG&GWao_L;HqO86LL*t+wuC|vCM{B5qh zK(}RGhCb7??Z2apH^^47R|r2&*}vhkwCV=-WZR?L8{RV>mAkVzI84hZYu2rYdEBwr zSFSAHGRWwdcMtrfC=-Zdk@>hy@7$~jIvjDzrP<(E0I|CX7hEs z)N?g)=Zoc1($;SkZ|1-MKCXK0d#>dVL0QdE@1V{0CrY(EngMC*{Cq!>h?N3U0BKoBKul&HKMOcXsXX z-ZX}LMwvQFGncX`Y_F{QrLU`5YJ2t0y1`+h+2- z6ulJQ8R!z^!0C|p`Oo*+*AIv7OA!?pW!#YVwtI`r*wjt*C82 zx#3nJmrmyihGn3b=zBEn=4D0g@U;&Pw#&WQF5oLxX`i;Vxt9N*=whvk^QG@gOLLVb z7Hs__zhK|OdnLc`7a0XGMY{X}N2A^+xxNZ}?{o&X`hrPI-&f_lt_Js=h2?*#sH&>2 zTgTt({H0p#v!VXJJ-152o&|!OEL$R#koURfT(-rVw~YEz5AI*FqT|)YWC_C>3*EJA zub5xCeC^rmcTJ}ojT=inw|uny!Op~Zul_Q7%=};Cy{?_nfA#+`bF@0`+4j(M@!Gf%hfW3O*W?Vh$%?`L*oSkTE^x30&T*-rXdx!~RsX2FwuUJOOi z#^?4FT*_v&a*}mfEXc*(9TPjh>w$e$iRt#b&tYk2ZT232&))2qc5cSemCJjczhb@q z;jwl7iDhSxUCo^S@Cy42eXnIIKlFFhFowsyT9>h)*Vlc=;jbliCQ_+SvmPJ){e5Pc zg3?XLY=)v}o)0GOdAH4c+wb}+EK&O5Ki{nR_q$*B@o)@q1&Woh4kH9hR&y}S~o$B7RVC-b?eRBJGvsGY}O zlV3KGVTsa@^E2$4=l}Vzyhp}z)BSAahbL}38ra*+h_KpyxTGIzq}ZN#Qsdz z-F5Ek*NGV|GrEiR&pq@|Kz~i$!P6IZ{j&ArOb|TD=*3Vp|9RE=ue_zTb@rhL{~zD} z|H{`$mfXAZGCqI)yz}Sh_;(*Y9;wW^fBO1nr62B(4G&FxB9>|Q`A(6Qlk7>pwY#f* ztpz5&S;(UBz0!~2+qaG3HquS?79whL)`bt_LsLb$*X=l!qLKdX!`3w%|29_i1Wan& z^DRMFe{WJv!Trw-7r!wIp40=of+gX8<2>Pp9FBjS+K%4Y?@voVi!GXYvY?G=@vc91 z+D-dYBTH0vS|8q)D_8j_@$#nq4BNp$?#k)#?)Iy#4;SugR?m?<-S!~=wwZgM+)=+T zc5Nq3C;RrB*!{e*{-)p`VX?Oh%kGH%ez~RSs@J!7_h&zO;rBu7Lr*Kfg)15!CTU2dnjo9*@wV=_V;gr|n&$Vq#M^n5%ywC9e^}OywfbQw} z-&ONozl>L5*JM0V%id@kC!K$98|R5d59*(2Ox&=0)_3PNo{v^04I2+^=DF}dzWZp! zhxPnPk?;7}UmbpZAl}znaN?WAP7ck7yAQ04lghidO?7os{f*QQ>=~JsuTnGS*0D~R zRdOMASJVF7+kc*3v=0uy|6Px7`o5Onf8j1gJ!uSV?c#gQ?$js5m$Cd`tn118KSIZ? zc5mR(Ta1!_7~>-LUiz}*zF$9M{rAPnf+y`}F-pkTs58{bzna{qUf*DDzIW!AxSt`O z=^yTINfoZI{+92#{k0>{k4^HjogQVEcn&<+AZIX(|GTr*yg$~u-_<#!ywgA2-rcA?g_5T5%{6F3<%Srw^E7WuQ=V+_u`nLz8 z>i+)z-FfuRboO_L`5s8um8dA)^yWP9;A6zHygBPKL8WR~-v5vMHT9(v*OajR-}TGt zUG;-|OZr&fIWs-CNLd`*46(*$9+Tgi*|U>g&iU5wqV(r_ef@OjQufJtua}pw|F3?x z|Mr(D``5i==sC|LHu25$FP0yT7TB^&Ts`6IW;Oqh@!AN7u|NAi@6AuO`4MmU{?r!M|82+E-u?Zm z|Ci@q;)A^!Ke~COW-&^{oN9 zKpkYh)htGd8a<|eGrRgO|2$_eJ?~FdXo>uBWz$tAHOJVxw;u z>;Kga;eX$RxUi||GM%aA`lrV$Yc%C$@N(ngTRv%i^IZ!AH$LB&^wDBrKp5M9Q?Q}a zg&OWGdvL$`)25=f>HN#rteLZ_OY7KNlfFXr-o;fVri~3h`?aKcg}Pd7wuXKXpICBH zyW!4P&l)4~eexoITvd#xFj#aoEIqKhplRRw)*_o* z3^uGbyla>q>D|)!@m(SG;QeE2LY&p}KC!db3!aowWhhWCU^lS3%>43jV1ng`^aq0X zDz{#k+EmXUB>Ly^M~Q_VGhCD&?(Cm-O{}i${M;>Dw*0U#Vyzb}Oy8i+@Sm?n{c^KM zknsoW2X+Z}H?G(G@m)dmpnc-)mcz0~9_6W}{3`qZzV7I=wXmg`$VZyZrP2v@ zA1?dwA7bC!Ut6>ILA{Oi>Y=T%+azAxZ|xFA1UHq!a{?%LBja zWNj#3z|C4O_%UaL8pFxC&u2YmtNyTENbDnM7iL>-b^O)&J&DfkGs_k}&{uM6`WruK za?tMz^9G({5AttsD~|BDaPf}T&V8HPvUuVa*7^gVIh&7b{OIo3cyJcOlK%lebxb0f z>Xjxch;<8bwP(K1SiW`b)V=`gixDPk9rv%6yqp#k74>TA%BKAtKa}(@Gka{G|Nq5v z;WWS5rI%k#5Bs^Rs&2u_)(7=(O}%#}-J7Z+#3|ItGA&hb`=cX|43j_;)-44lPAXE0 zV*SagIzp0MKkhz#{yaD)WKNDO1ISxv7kDz%75>&gx98a_*Zar$?%3|B`4Rb*xAcnK znzLUv7%7Q2{Xg`Rd*_QkJ6)0k)gQ?JKC;$gTIxg(m72TTrgJ^^pSj`LP0{-LBir77 zj)}R~61*zvV7yDs#LwLf?|(du-Tdjz5&oPVt6t}=lU~2KbMEf)OIPkp*?BP4VI9kV zZ@pR1v**7Q;b0MB{rU6$uBWf#f1OW`uM%Fa^t2;x)*t2{5*xI64+~FpR7%%oy!Z8f zd1wUVYcr0Tmbf&lS+k^n9^Jct!M6#!XErDo1-=|MIktZ@?*(?9NSH90^T7H1|37;LenHpsk!srExb4FQj6ympE*aKbWWCtyLX#;mU*X3lXEHi&AsL3 zv$yA_o!+LqW!u(YRsDWD1^zIztXQ`$?a_};ADQ^WKZ1`3hlD(NZM!QgCoARqy}NI2 z?VZfb&VQk1$IPZbOj=r6GmJ8|iqFmaT=wYt`~(F7eI1=Y*UrZ8{&{T*Z-k2qC$l1> z1ZNCi53`WP}-56vCRk>bSwSDxJlvS4qa%&3X9r@MJHZTeog!WM(eh zx3F*5FRNEluPg$p8>U^`=l@b$PcQMMskdeFHObnz>GQ)kDCK)R*ri|l()(;}oQBdQ zx0`bqdJb0V|8n$;SuMa+$5_Mtd__!M+3){*tQ-Co&uK|?h}xOO%5V2&!TRp&MW#Q# zFW<3a#-&L?US3`rC-fEU|Ihv3y6B=t;ps(d_fGxxtxV_ir<(Z;jO${zOtE}^#`0nH z&!4Q(&6RtePg{R?)4KL$N=lMb*K!`Pv{3)r`}X;+v#F`6-g&>DeYfZP7Jk`a-IU0k zRjT~|zVdVZV-ARmlbiqd$^S&3uM!NOK69IivV7Y2;pqDM!pgRGHKj|dbMCMju>X(_ zc=zbm%2w7^=|c|#JPQj8yV|E(as6YSof@fA|4;IFviy%DUb|2HdJ_Kc>$KdNa+5ne z>Nn-GDa?HEf7{RLx(PQIrLL3=?9%-4oQL~)Pvi6&u=QS%2ELf+fsl@EPO@(1zv%Q0fRO0V*Z~yga92NOfJZb-L7gv`c4QU~U#SiYU z+_>`K{EJH(o9fTKs=mLV!$a(33DX1b59}x2t$P1H;KTVyvkzIz*cFu?g{cWM+;6gX zIC>(mu4Hl$*FVd*nOhhFT-YY~s50zh``^^Wl%;m%$HmZ78b7{gZND#@<{&#@f% z{=mNEML^!aGt(uEt9q7y+ZZt=L&xook@X~Vef{}|nwYq_xHw9FPSpDGebw>@_hVH* z=p`r`%ztC`I8pn9`kc=id?^(=N=oyVXft|ve)#`r`Ti3(4AoVyp4*nYXrso(j4Pj~ z)a5g=Xz1uHS+Su*Jg&y^;QsWyruy>A1Ca+@55zohnsa#3rGrdn%-a36VGQh-OY#LL zPVsbSnqYd+UanuTtHo305AUD5d$)X3m8<-e$ogNnlJno*l}vv2-)8d6x%PDOn~4iT1Uqht*e|4VJ!91vja4IbmYEfOYDu>T*ljP_mN{;|5Q$q zKa~Xr8f`ZH|eHb<={fM6C>b^r+)&Flhzj<)= zifPL3{g-ZCJM>Vwz4CAGbw*0CM zs=Vsd8J;tqpTK%>zw(vDlKamNpS9Wl$@1F%ee){r#*U0k1hx9xh+zUT$&V1xL6+I=QTk8r?X_B|8#YA|NPV6 zpZDS(j)uJk`0Onl6f9H*kAfP?B9)f^DcSi zzRr%086T~f3s}#^)yMZ``<8#Ge|B^K$3NWXtFvBDUm3jY(`EU4CpRR%uoJ5gTYhiX#uE1b%ct2N?W+HGI5>L$8Bp*3--~lw zY<`ye{a*g?E2AwLQeDgZ{BlkzNK8xWvlwIULy41-tzzYp;JTG-R8OQ;Qq_3Ii*TUN|RbARkD64 zuHpE{`jfThSMq9 za?JLVtq<&TUzzCbteE%ub+N(^W}OpX7+hSIl;;UG2-U25TX%S?xk2@{nd{cezu^97 z6}vS-v9V$Ic3tLzgYo%U*EYOA$G{-o47wwr;2L8`hlg0vWQH0^iS(+)+RtK7E-ltC zuHE}`a{aRJKg&z+Sw7#n>)ex*|F7NtclmqmzvuHx*Li+sFgU(^VMj;D`Cr})s~YP~ z_nut&*zf7B>~*EJwPJq1_orN{@cBBUZrujUDwW;K{;uCwq=P_r)t$d`zUgcij(R{hz%)^3r#k4Qo2%g7o5Z^A204@2c*fvq5-E`z>49bCVA}s8<#^YWd*VhU$w7SV&MnK*FW17p++Y1wDK32{rUTR$-i{yDLlZY3kE;>v~-lA6Z** z>AT0ptpDzfsdFNZl}*3SCtv+1kWXgC(x(~R6Fshc7Cf>t>h1n7vr=PfpB|FiFV4fZ za@{Jkmvx&wlR<{g6KYWKJ6nJLSdZM{J>7bxrE7CQ+ zZ}YM;V8Xu4|1L^}hfG657yITt-1lm7N5>Lhf6fC_8!nz&KYQ9;m$-SmC$}kIEV$%< zM3UnlgZ}K2e+S;zoxPSDZL`()x%Gb+{(5ocQ|+_w9NW>>($Vo_{c@HEi`8WP=2^_t zoV;w;u4|RQ-s|4`rsI52K0)=uyRU2)Bc}ZSb+G)#w%Y8Vw|z3Uhw5v7OJ{QayYQLk zK*vL6pFGn`OEz|NEOGnJlEAXz%96uBZCR$?b4fbM`u};j-Sm|Y_yw5e8ST9IP`Ul* zFZ2D!lKt(xZ0`M^)gB%fds_E@nK5XNbmv>nD(-&_+iH`T4DRHxIdC>~c!<4_u z?%}D^&x^0U*(_Q9NfUJSLjUoV`76@@9xGi_@lZbJ=B}Gh!fan@|7hMUyLtB{p~cP$ zQyDrsQWn1BJn&U*?%Dl0jjx^abxyx3+_h6ZdVBuUhw5_2-tBWg>$B;g`~$-Tb%TRn zo_*#0`sdxj`=55R*K<1*1{yx>*uJ(g@2mJ9MxED3_D|lYCAn(>i-U^_cWEtaK-*@9 z3zHu{Rko=9c5~hO{^NH;_h;wkKK1ASd$DxWgGtjL@Fy_Ze=Am)yGilK?QOnFg-MBv z7A;bm94+lD-_hZbRpQI=jCtPwrS{*~6vwXr!yfbY_x9Y`_J6+e@11t(>xt|S?@Pod z-0|ASQ!M;v;d9mo2G*Z$tqnDEw+RXg)|dD**jPV5Q#@&x-Md9B@4VNqNqoLeHm?1O z@Z|^RH*VYh!+6e>V(CAOYh2EI&b)reb?#YTsqPMstRIsYLc&9h^*U#L%v<)^+R7^8 z-=6i||Ejd!zrOnT!1|gO>PzqGy?-6Fr~UhXuvf)P)fkp1ZP@U3&gMI^KQ6CaKK0pM z+pT{*t*rLU<+;&(@6_*EKV&wXJ^ru8wEEhcxYNJC9eb6Uz3BXFeHRxM?h-Wyx98jD zm;Q?MjLld7Ri}|-cjrvDbeyqdPC;GL6R5qs6r+PFoW z)p}iBR7|ae8!Y3jHKfCiy->+M`hEM{_pMj8|5m;73H|VX3u{D+W9xwsO?~fm75?$9 zowuxe{#E$GHGbYx7GS*a*w=gY=C^L$u1KBxytsT<)toDA|NZnI=FC5{%E7$IrReti z*hPOCg1L_e{{de-uxOv@ySJR z8z1{w-TbV)9pn0Wcu%Qb?7HwW_M8)WJzDXkP_xg-Am{jwD+ zIyPQSp1ePE!*XYig&S8+{JZt{UcTj*k2f|in_F>(t%hTV*oUnRjz)ggPq!?IJMHq@ za^gh;#ucVeLylGF#zY3beEGND;6m}y1G&~c3UZemnX804@B1YuGU&*vz41gLBgU?EaCaPxpD1Geg|jf z&nkJa+2Dil0=5cszn}-{vQ2Sk=RC7x>~Q-nHz_spiusk9JnGrmsvR9XX+KjG7#U8S zKCdiToxXa0?(H}CHlHr8KTv$2YBFDt3frHLHBku^8ftTWKANcWG)V&Q{&1D=0BD}T-@-}ZZ!-^03P{~62P-_12pGMix{ zCOGj5C)2#eJ5E}DY;$h1MwBIlALo9LrGauGSVE>@<`KYl^cIW|_h({1B# z%gG0~GA5P+#hw{IY;hr>y?$}-r3agE%^KX%fGJodTa4K ziIr4RvOKTBXi$^?|C~Zo<&M+?gJ_Zy%7{=h!xg@N6-#{S(}$8(Z}xprG$GnecC ze5>ucPusN)F@~;=l&uPEm!Ic_P1+qAWprf8&UR(a%cs6Skmq6h`Qo>|Tjk8%%`(ap zIXYebbN@e3`71x)JnHX%mUBuDf`TW593OOCKQ^&r_tBKR9;v5$R|pjJ#Xt67yx(kp zpn841ez3ZKX=(1AF7>Hv*4AZCy`ETFb!7{)prGekg$r-C7P@OZx$WR4Jw^1G<;4#n z^V=RRpThFrHC+GMqR-EF?Yg!t*UIVLGEltSKXuUAZMmj-VbaQELBW$oZk!E?U-vy$ zDQ@u9&-;=rW9Q}hVSfG1ntP`IW7n;J&#`rP)Ytnj-~Ts=+w(t~?b|zb~2pmTlW@yzUKSpc7DkZ{sXnk zWIH-MUa>arjgvMv`8Az^!DrRXoJ%!o5B^=WDBYy=!#(-pl6$|^g*fL`zLV53pDW3h@^SFW>Zu>RxH`MUY?&*^8M|5Clad*8pe59S{!vu{}J-v8;u||Ew z6cC)qxX76CLrvcAb9b#{r_U%|ykJ4YX}x`C`qwRESnUxz^}xmhn-3`2TYoir`(E`& z^t7Y$|9-I_^3)T185|0GdxRT2R1U4P-CZNqmweB4dQeQv8~1SahboNm$L`-{ z^ltom;HTZUncE)lfB12^fAj76`?vpR;QM`XVn@dk|LZIVJ}3WK{W|_@y2JWq z@M-m*SL+0RFmB+B=!x98ptvAT*M>zRRQHwM+=KORSL<(1TdUvxb#Lpof1MpX9&}%o4Bk z5BGP~YWLgx^tkl4s*wA^eY*fbLC@Li{10zujQ@J;;&Z#NmCJnRrP(dgyLao8Soyu$ z_Vu-8o7vS@~dp6x=@x>*#zdaDFiTk6W zr1Wy~^{4xVExvx)TRKJjNzcsm8T~7|Pjz`k-M)QebAJE&zh#CpGx%b9KBw%Lh~S9n z3JzJ(CBq4tcPf0JU+1av=(MHn*#o8)oRd2`cpPF+zuVhz@MOblvvuCP{;ZL{uD^5M zWPhuh-|LKZ=N{a@ZeL&gzh81r|77p~v7B?NUP;Nwp>#guj6UPHbGKC3_+@%(3Lp3X zlA190Q&XkS%9)35UB4#OeYEDSb?_zGKks+`&%1T|_T;?V-R%wkUx%kFDNT~ByjwS) z;oj@5o1077cb2?cy6o#8e}j}00axz@J6FuF7`|Ur$-?w+{oK{7);yXr*+22Hv^3il9|r}2gp<41rGC8H z9lQPHrU(4zrtP=?b#q}yM~dHf7KS;^jdpLh9{%>NtZh2K|4AJN3(o^nJcDn3IQENi zqnd&Q&!@)Ob~8dMAM5b^+kZ5ndqqb_%KUpm4Xg(&*3W%+YjZdE^B9*z$A!-uzos7f zAb4h;>1^5EWfv~pnl!2U$HJTl$@#xtET2*PYv#J!DTyEIMR)K$7j5Y1c+xRXh@n8N z^6rDJmos#{bi`7RZJ8Oj`^EJMmlR_P-m$hQKMc9X`60*atcczBmFJ5uMSPEz@NKGh zPG;V}=fB*oTeWv*?U$X=pY^x9xAsf!U|R07siWh`f_;lZI5!BdFxz?XYPep?$wR7Yu_~$} zd>f0tdd-Xf854DlT|`W*@Zub9&=gCLjG@uXZ(&M))$Z-|r*1P%mVR?%YxAs+!Yd_06EF2*r z`scT9eEN+GiE4K%uHCzME_(L;q}zRKbMEh)>-@ES(!0fb*39t~RyWRc;x%4&_RE(o z_d|8WmL7h5lT(xLU-q9jAucYPCeIeXD$h`tT($UR@UqV{{cEm$H#!*C;-vUW`gLZ; zn&lgJb{1H;XvnA~MzSz5dU<(i>gc2#`5+h)8WI>9`SgC0o3zqJgNG}&2mb^O=^f$E z6KYU6H|2xnGV|RT=Un%^KlXijO<=;dO}VoJEL?Qn<$Bk4HT@5qb95ePc(2(bKAXYn z<^ih*k7ep>3NC$yj%0j)MnbBjn72SAydGCB)y*o2E`)hH;tZ(9il1J{S zF)*xd;7gr>W+msm|c|uL5Q-G^nBG>-T)@t?dwgvJFCv3mV zwD-c6{T&@DQyCcEFu5fZ#1w?j-j<^z)^C`4>B^l5i45m6T^9vk8LV^raqXFT<%5Il z9d3Ki%YAY1|EHwHq%xm@VGYAHhQ)s+4)n!ZTNHiaFkXIE=7Oh#jofnOH$LC1HQ!vm z+O5C;#C-XG!qcAS9!$^&h4_=)IOTUL3AzFAt~)IAoq5dt-uH_=qTHX3wCxa8mg)T= zwC3?g3xD1ENmupPeoHJk9{53AaN^?`Hbweua)xgnTO4lVdwlr)UxUlb&wW^Zddh~} z*%3BgCQ_gGtX;qR*fO`e|IhCSR&TgA{ogK70-PvZQOSBCQ`_&u{wwnrI+#eMzTLGo z;-kf6HNSJ~!kNsD2p1l@Xt1!LqrxW7=IZ^-yKUEhe0~4^`H73l`@URnZQ9?_@#TaH zBSX5a18>1D{^ZKr-(qi9X1`YRv;7%z>Qs%^!PlL>Hgf7hy+VC0oyQib2>p}Qx^n5( zA?Ntyix0nvc81EjOp$M6JnAkY!JS|Ion0a@sMAFs*cX-PhVf|GY1V%d|WQS zc;QCH(CuI&>wf;6w3q1z`-DxRHOlTiPYzj%@14t0BC7D=+pI>13qSL%FaG>e_r~(x zu@wgW;oEXICtv3Soo4iG?d+gRZPt20!NQ~OL(8rnC`wp%{;wP;cgI*fcRFYPy{4<% zJE&4yd0OhmhhM+0iP<}8*RNe6_t!~AaO|1$O1iV-#DVEusoxeiEdTiM$Af<&qN0Y$ zw|vgcsAMx0&I;P+c3|z_t-o)6_{Cm*FPSMUcdQaFRzK2>9V)?4&==V z{=042=VeMtMjMtEEv{88;Qz2ttJ!{VaQDaZa`1ZL_bu zU*Fu^-u~8l`^Mt$ez$Jlu6=FKssDINs^8Dwtb&3kbyu$2BFwOlvBsG9`>W8nI639E z{)8(h0z-OMElIkf;l?BHndzz7+S&@*Oc@j7dss`rxMs|PPGDw~*@ zU%GO~B{^8w_iXQxq>Vm*3$6aLs_%St0yJghQni^Qed4UO{U6o&{;*Gw<(6}CarqU< zyhi;qV~IjNALDe@-_7EJf+x2mJuo|<^!Z@Pg4%g($JG8Sg9PQm8LCg#1jusCH+yh7 zrGU4!qoZSf+k-P~M^4sEID75<;{%y;_4|~Rlp^2C%z2wLlW*J2FE^QE(my$i3JOYc zFdgVU;AbRXWBfDoaOA`Jd%yO&y0`=_VEG|bFyRdQ-KSCgnfB13No9o-Dh0pudsLNdCay z8mk8OhMz0C=67^>T;eKBWBn(dq4c?N@BRh<4gAjj`xNrWz{SO7kHm|ksh=9V8(9xb zJrJ4l?`4(thw?es#p;ho-qcr8niR@b#dP5=$Ag-La~tE+C*JzBv%S&0Ve5hJ15yd~ zT<_JDlpb}*cr#QPG0oufIkIw9xt0N&#LcI|ENx7z7Qx@$`?lJ46?Y{HpL4XSF6{d9 ohUp$t*5xnh0)m1cul{GZXy|0)=@+nKU|?YIboFyt=akR{0Fq%dng9R* literal 0 HcmV?d00001