From c2fc583752a443cb6adc8b918d1c3f442137885a Mon Sep 17 00:00:00 2001 From: gaillaro Date: Sun, 8 Aug 2004 11:29:43 +0000 Subject: Changement de la prise en charge des differents mode de couleur --- 2004/i/nono/src/ovision/comm.cc | 15 ++++++--- 2004/i/nono/src/ovision/convertImg.cc | 47 +++++++++++++++++++++++++--- 2004/i/nono/src/ovision/convertImg.h | 8 ++++- 2004/i/nono/src/ovision/imagelist | 1 + 2004/i/nono/src/ovision/img.cc | 23 +++++++++++--- 2004/i/nono/src/ovision/img.h | 2 +- 2004/i/nono/src/ovision/imgFile.cc | 3 +- 2004/i/nono/src/ovision/imgFile.h | 2 +- 2004/i/nono/src/ovision/oconfig.cc | 30 ++++++------------ 2004/i/nono/src/ovision/oconfig.h | 2 ++ 2004/i/nono/src/ovision/ovision.cc | 54 ++++++++++++++++++++++++--------- 2004/i/nono/src/ovision/ovision.h | 3 ++ 2004/i/nono/src/ovision/segmNN.cc | 4 +-- 2004/i/nono/src/ovision/segmTable.cc | 7 ++++- 2004/i/nono/src/ovision/space.cc | 2 -- 2004/i/nono/src/ovision/test.rgb | 2 +- 2004/i/nono/src/ovision/test_ovision.cc | 22 +++++++++----- 17 files changed, 161 insertions(+), 66 deletions(-) (limited to '2004') diff --git a/2004/i/nono/src/ovision/comm.cc b/2004/i/nono/src/ovision/comm.cc index 415d477..c312e70 100644 --- a/2004/i/nono/src/ovision/comm.cc +++ b/2004/i/nono/src/ovision/comm.cc @@ -69,10 +69,18 @@ Comm::Comm(char *filename) group = new Group(&img, segm); SegmAndGroup(); - // Affichage de l'image pilote en RGB et YUV + // Affichage de l'image pilote avec la couleur d'aquisition et en RGB tex[1] = LoadImage(img.width, img.height, data[0], tex[1]); - tex[4] = LoadImage(img.width, img.height, data[1], tex[4]); - + + if (img.colorMode != RGB) + { + ConvertImg conv; + conv.ConvertToRGB (img); + tex[4] = LoadImage(img.width, img.height, data[1], tex[4]); + img.LoadRGB(filename, 0, 360, 296); + } + + yuvSwitch = 0; imgLeft[1] = NULL; } @@ -403,7 +411,6 @@ Comm::ExecuteUiCmds(char *buffer) yuvSwitch++; - cout << img.yuv << endl; // Conversion en YUV et stockage img.LoadRGB(fname, 0, 360, 296); if (yuvSwitch%3 == 1) diff --git a/2004/i/nono/src/ovision/convertImg.cc b/2004/i/nono/src/ovision/convertImg.cc index 111e4a8..d5c6f21 100644 --- a/2004/i/nono/src/ovision/convertImg.cc +++ b/2004/i/nono/src/ovision/convertImg.cc @@ -16,8 +16,6 @@ ConvertImg::RGBtoYUV (Img &img) { unsigned char r,g,b; - img.yuv = true; - // Parcours du tableau et conversion des valeurs RGB en YUV for (unsigned long i=0; i'9') || (argu[0] < '0')) && strcmp(var, "Source") && strcmp(var, "imgPath")) @@ -168,22 +177,8 @@ OConfig::LoadNNFile (char *filePath) // Parcours des lignes et analyse numNode=0; - // Recherche mode de couleur rewind(file); - if (fgets(ligne, 50, file)) { - switch (ligne[0]) { - case 'Y': colorMode = YUV; - break; - - case 'R': colorMode = RGB; - break; - - case 'H': colorMode = HSI; - break; - } - } - // Recherche couleur des balles if (fgets(ligne, 50, file)) { cut[0] = strtok(ligne, " \t\n"); @@ -236,14 +231,7 @@ OConfig::CreateNNFile (const char *filename, int mode, int nbOutput) FILE *file; file = fopen(filename, "w+"); - // Espace de couleur (RGB, YUV, HSI) char buf[50]; - if (colorMode == RGB) strcpy(buf, "RGB\n"); - else if (colorMode == YUV) strcpy(buf, "YUV\n"); - else if (colorMode == HSI) strcpy(buf, "HSI\n"); - - fprintf(file, buf); - // Couleur des balles sprintf(buf, "%i // Index de la couleur des balles\n", groupColor); fprintf(file, buf); diff --git a/2004/i/nono/src/ovision/oconfig.h b/2004/i/nono/src/ovision/oconfig.h index 1fe43cd..cccc156 100644 --- a/2004/i/nono/src/ovision/oconfig.h +++ b/2004/i/nono/src/ovision/oconfig.h @@ -30,6 +30,7 @@ #define RGB 0 #define YUV 1 #define HSI 2 +#define BGR 3 /// Constantes pour les sources d'acquisition @@ -49,6 +50,7 @@ class OConfig { int colorMode; + int colorAcquisition; /////////////////////////////// RESEAU DE NEURONES /////////////////////////////////////////////////// diff --git a/2004/i/nono/src/ovision/ovision.cc b/2004/i/nono/src/ovision/ovision.cc index a80d62f..63c55e7 100644 --- a/2004/i/nono/src/ovision/ovision.cc +++ b/2004/i/nono/src/ovision/ovision.cc @@ -3,6 +3,27 @@ /// Constructeur OVision::OVision () +{ + oconfig = NULL; + img = NULL; + segm = NULL; + group = NULL; + map = NULL; +} + +/// Destructeur +OVision::~OVision () +{ + delete oconfig; + delete img; + delete segm; + delete group; + delete map; +} + +/// Iniialisatoin de toutes les classes +void +OVision::Init () { // Initialisation des classes oconfig = new OConfig; @@ -10,7 +31,22 @@ OVision::OVision () // Initialisation camra Video4Linux::ColorSpace cs; - cs = Video4Linux::rgb; + + switch (oconfig->colorAcquisition) + { + case RGB: + cs = Video4Linux::rgb; + break; + + case BGR: + cs = Video4Linux::bgr; + break; + + case YUV: + cs = Video4Linux::yuv; + break; + } + v4l = new Video4Linux ("/dev/video", cs, 60000); v4l->calibrate (); @@ -27,9 +63,6 @@ OVision::OVision () segm->BuildNN (oconfig->nn_NbCouleurs, LOAD_FROM_FILE); // Calibration des longueurs - - - space->AddSetupPoint (314, 6, 100, 400); space->AddSetupPoint (237, 224, 100, 900); space->AddSetupPoint (275, 113, 100, 550); @@ -42,21 +75,12 @@ OVision::OVision () segm->CreateColorTableFile (); } - - step = 0; -} -/// Destructeur -OVision::~OVision () -{ - delete oconfig; - delete img; - delete segm; - delete group; - delete map; + std::cout << "Chargement OVision ................ OK" << std:endl; } + /// Prends une image avec la camra void OVision::TakeShoot () diff --git a/2004/i/nono/src/ovision/ovision.h b/2004/i/nono/src/ovision/ovision.h index 84ffc23..306abd3 100644 --- a/2004/i/nono/src/ovision/ovision.h +++ b/2004/i/nono/src/ovision/ovision.h @@ -52,6 +52,9 @@ class OVision /// Destructeur ~OVision (void); + + /// Iniialisatoin de toutes les classes + void Init (); /// Prends une image avec la camra void TakeShoot (); diff --git a/2004/i/nono/src/ovision/segmNN.cc b/2004/i/nono/src/ovision/segmNN.cc index 5667e75..05c8564 100644 --- a/2004/i/nono/src/ovision/segmNN.cc +++ b/2004/i/nono/src/ovision/segmNN.cc @@ -67,7 +67,7 @@ SegmNN::WinnerOutput (unsigned char *x) tmp = node[j*3+k]-x[k]; // Si on est en yuv ou hsi et que c'est la composante de luminosite on ajoute un poids sur son influence - if ((img->yuv && k==0) || (img->hsi && k==2)) + if (((img->colorMode == YUV) && k==0) || ((img->colorMode == HSI) && k==2)) output[j] += (int) oconfig->nn_influ_lum * tmp * tmp; // Sinon calcul normal else @@ -146,7 +146,7 @@ SegmNN::FindColorNN (unsigned char *x, bool testOutputMax) tmp = node[j*3+k]-x[k]; // Si on est en yuv ou hsi et que c'est la composante de luminosite, on ajoute un poids pour affecter son influence - if ((img->yuv && k==0) || (img->hsi && k==2)) + if (((img->colorMode == YUV) && k==0) || ((img->colorMode == HSI) && k==2)) output[j] += (int) oconfig->nn_influ_lum * tmp * tmp; // Sinon calcul normal else diff --git a/2004/i/nono/src/ovision/segmTable.cc b/2004/i/nono/src/ovision/segmTable.cc index aa252c2..706cad1 100644 --- a/2004/i/nono/src/ovision/segmTable.cc +++ b/2004/i/nono/src/ovision/segmTable.cc @@ -38,6 +38,8 @@ SegmTable::~SegmTable () void SegmTable::DoColorTable (bool testOutputMax, char colorMode) { + std::cout << "SegmTable:: Creation de la table" << std::endl; + unsigned char x[3]; delete [] colorTable; @@ -79,8 +81,9 @@ SegmTable::GiveColor (unsigned char *x, bool testOutputMax, bool indexProcess) void SegmTable::CreateColorTableFile (char *filename) { + std::cout << "SegmTable:: Ecriture de la table" << std::endl; + std::ofstream file; - file.open (filename); if (file) @@ -101,6 +104,8 @@ SegmTable::LoadColorTableFile (char *filename) delete [] colorTable; colorTable = new unsigned char[COLOR_TAB_SIZE_TOTAL]; + std::cout << "SegmTable:: Chargement de la table" << std::endl; + std::ifstream file; file.open (filename); diff --git a/2004/i/nono/src/ovision/space.cc b/2004/i/nono/src/ovision/space.cc index dbcc50b..92b4e2b 100644 --- a/2004/i/nono/src/ovision/space.cc +++ b/2004/i/nono/src/ovision/space.cc @@ -117,8 +117,6 @@ Space::Setup(double a, double b, double c) FindCoeffLine (65, 9, 118, 180, a1, b1); FindCoeffLine (198, 10, 192, 180, a2, b2); - cout << a1 << " " << b1 << " " << a2 << " " << b2 << endl; - // Allocation de la mmoire delete []tabY; tabY = new double[imgHeight]; diff --git a/2004/i/nono/src/ovision/test.rgb b/2004/i/nono/src/ovision/test.rgb index d90c62e..509a0bb 100644 --- a/2004/i/nono/src/ovision/test.rgb +++ b/2004/i/nono/src/ovision/test.rgb @@ -1 +1 @@ -z~zv{~{wsuxz}|||zy{~~~xxz~zv{~{wsuxz}|||zy{~~~xx}}y|~{vm|etbp~~~`lyz|amy|cny}bmy|bmy{~^jw{Zgu{^ky~cp}}an|_m|}~^lz}^kx~_mzao}ao}~zzbp~|zznnar}vll`t|zrjj[l~~~{rjjVeu|}{~z}sjj\iu|~|~{skkclv|~~~}}}~~yrllly~}{skkv{}sjj|~{}sjj~{}|~tjj~~}}rhh~{}qffw}rhhju~}~tjjeq}~~tjj`mz}~tjjbmy~zrkkdnyvqllbp~{riiar~~tgg_p}||~~}rgg^n~}y~z{|zyphh_p}z|~~}yungg`r~}|{z~xrlggao~|z~|wskbbbmy~~~z~ywui^^amz~||zxmbban{}{qgg`m{~~~zvnff_m{}~}~~~~~xrlff^m}}ytnhh]n{}{vpjj_n~~ytpkkan|}~~}xspmmao}~~ytnhhap~~}z~zulcc`o~~}}ytldd`o~~|xtmff_o~~~}|{z}{wslee^p~}}|zyxxxywu{}{vrkdd]p}||||}~{yvsw{}~}wqjdd\p|||~zvrsu{wpjee]o|vpp_o||_n|`ly^m{]m~\jx|[gsw|`my}fsl{r{{~xspmhdba``][\^]]`ciou{woljihc_^^\ZXVWXYZ[]afjnv~ojfb^_aaabd_Z[\XTRQQRUXWWZ]_bfkhejpށwoheabbegfdcb]WXYUQONOPQSRRV[]_acbafkryta\X]b_]bgjnkhda[UVWRNMLMNNONMSYZ\\\]^bgdaeju{kaWVV[aaafklnkic^XRQQPPMKKLMNNOSVZ^^^bfgifdddjo~aXPONQTZacfjoooljb[UOMLORNKJJKMORSTZa``gomkigc___diy}gQNKKKOTW[^adfgifc^YUPMJLNMLJIKNNORVY\_afllljiea\X]clvԀgOzHBzDGGHNUUUY]]^`c_\ZXURMIIJKMJHKOMLRYXX]cfikmlkgcZQW]_bktz^ߐS{IzCׂ>|A܅DބEFKQRSVYZ\^`_^ZVROLJJJHGHIIJKLOSUW[`bdbaaa]YUPRUX[`f{oUۄv:q>zBvCۂDކHMORSUX[\]_aZTPMLKJJFBFJ}HFILMNRVZ^^_ZUVWSPPPNMPTVXak|tT{Er7p9tuDsBx@|DȁI~F́D~FЂHЀEB{@{>u?t@k?q>q>p>n=qyBvCE}EEINKHEBw@}>>?z@B|CE{DDDEGIS^u޾cKn4f2i1c1h2c1i0d2k4f5f6h6m6l:q>o=q=q?uBtAu@s?v?t=sq@vBvA|@zB}EyCwBy@{?v>y=x|?@ABDFNUeuoПBf8d.Z/`1^0`0Z0]1]3b6a3b0e1e3e5i8h9h:d:j;j?ADHMU^}zzܶap>CIOUl|vvpʀSo7c1a,],[,S,X-R.T/P.X.X.X.T/V0U0\0[1]3\3]3]3^4[4^5\3^2Y4`6]7^8[5`3\1_0Z0_1`3_5]2^0\2^4\2_1c3b5Z3`2g6f;e;e;_7e3d3h4i6h9g4k0i2k4h6m8m:ti0^/\.T+Z(U)V*Q)U(U(W)T(W(T(T)Q*V+R.X1X-V*R*X*V*W+S,W-X.[/W/W/Q-Y+Z+Y+R.U1Q.W,U-Z.[-Z,Z+Y*Y+X,W,W-S-Y.U/Z0U-]+Y.\1Y.`,b-c.b1e4e1d/d0l1p4r7s8z:{;=DLk~~~tkk}ؠL|=j.b,]*Z(_&X'Z)V(W'U(Z*V*^*V)W'U)\+W,].Y-Z,W+b*Y+\+W+W+W,Z-W-Z-U-Y-W+X)U+W-T,Z+V,Y-W,Z+V+V,V+T+V,[,W-[-X-^-Z,c+Y,[-Z,],\,^-`.f/c/c.e/l0k2l4o6w8y8ڄ9@Ga{|zrkk|׭LrO_~~xqkkyγB}9q1a-d)a'[%S'X)S,V0P*Q$K$N%M&O(O'O'K&N%L&M'M&P%N#K"F%J)J(N(M(L(K(L(M'M'J%O#N%P(R%N#K#M$K$P%R(P+L(S&R'S(R'U'P'W'X&Y&[(Y+V,Y.Y,]*_-d0f1e2f0k.m0w2x6ێ;Od{uoo[G|3p/m,f)e'_(d*\+]-W)Z%R%S%O&O'Q'T'Q'T(Q'R&P$S#N#N"I%I'K&S$M&N'L'M&M'T'O%V$O&S(P&N$N$O%N%U&R'R)R(['U'V(U([)X)[)Y(]'[)^+[+^,\+_)a-j1g0h0i/n/r2ā4Ȇ:?[w{skku٧U5v2p/g,f)a*b,^+\*X(V&Q%T%P%R&S&T'T)U+U(S%N#O"K"K#I$J&H#M!H$L'K&J%G&N(K&M%H&O(M'O&R&O&J&P'R'R(Q(V(T(U(S)Y+[+[+W)Z(Y)\+\+]+[*^)\-e2f0i.h/o1n4Ȁ7ҍ=Dg~~}|qgglӔK>y1n-l*f*g*a)_(\'W%W$]"T#W%V&V'V)Y*U'Z$Q$P$M$M$L$N%N$S"N$R%M%L$J%R'M%M#M$U%P&R&P&Q&O&R'R'V'T&Y&V'Z'X(])[*a+\)^&\'^)])b*_*c*c-i0l/q-q/z1{5̆9ݥEQ~{xxyyzwuutuwtqtwtrnjlnopqrtwtrpne]]aJ4m/n+f*f)`(b'b&\%W"W L"T$X&U(U)T*O'T$O%P&N%M%N%N%O$P$K$N$K$K$E%M&M#N!M"Q#M%P'N&Q&R&R'Q&T&Q%V%S&Y'X'Y(V*\,\(^%\&^'[(^)^*d,g-l/p.q-r/z16ؚ;L^}{|}zwsomllmjgdaabeid_chfd]VX[_cbbeigeb`YSSaB~8{/o,l)g)i*b)b(\%\#V#X#V%S&U&V'T&Y%R%T%P%N%P$P$P$U%P$R#O#R#L$R&N%R%Q$X#R$U%Q%T%Q&U'T'Y'U'\&Y'a'[)[+Z*]*_(e'a)c+_*`)b+h.j.q.r/q0u25˒?Hhzuuvxz{|zyxwuswzxvusuwvvsponnomlkijkmpmjmqnlighjmqppsvtromd[[wPB~4r/n*g+g-\,_,[)[&X$Y#W$W%W$V$S%T&L%R%S%S&V$Q#N$Q&O$P"N"N#I$M&I(N*N'Q$Q$R$O$R$L%Q'Q(S)N(V(U([(Y+\.[+](^(a)a,a/^,b*d-g0h/p.w0v3u6Ԋ:HV}{ywusqppmjt|ytopromoqppooliijgdefdccdfijlllkjhgjmmnmlnqsusqpppqqrrrsuvwvuwzwtvyyy|~}zodd}aE9s.n-p-d,f,`)_'[&`&[&^&Z&Y%U(Z,S(U%R%U%T&R(P(S(P&R$O#O#N%S'N)P+O(M&R%T$S&Y(R'S'T(V)T)Y*X)^)\)b*\)a(`(c)b*e,c-h-h-j-k.p/u2|4̇;C]w܂|zxyyuqonjgqzzyz|~}{|{zzz{}{zz{|}|{zyyyxxy{|}|||}~{|}|||||||}~~|~{|}~~~|rhhVĊD3q0l-`,c,a*](W(\)W(\(['Y'P,U2R,T&N%R$T(T-P+R*N(R&P$P#O%Q(N*Q-Q*R(V&U$R(U,P)T'V(V)U*X,U+Z+Z([&R'])_)b)`)d*c-i1k-l*l-t1t3҉6ߔALruvxxxz}}}||}zvzxquyz|||zx{~xrolhemvxzvmmw`ɓI=r1i.f+b)_(](c)^(c(_(a)W*X+V([&U%T$U'])U(W'T(X)S&U$R%U'T(U)T(V&U&Y&V(Z+W)Y(X(Z([)`*\*^+])a(\(e(c(i)f*j,i-p/n.o-u0ā3ʌ;ޡDZq}zukk|`ՕK6o0j*e)b)[)_)[(_(`)]+U'W$T%X'X&U%R%U&P%T%T)T-R)R%O&T'Y&W&U%T%R&U(T)X*Z*Y*W)Z(^(_(`)`+^*_*Z)b(b(e)f+j.h.o.n/s1z3ь6DRtuiiweԱSDp6m/j)e*f+`*^*]*^+Y([%X&[(X&Y%W'U(T'W%T'T)T'U%T%V&X&['U&T&S&V&V'[(Z(\(X'[%\(^,a*f)_*e+a*j)e)f*h+p-m/v2r3v4Ƈ9ޛ>Oaz~rffqYBu6t*i+h-d,`,[,[,W)Z'Y([)V'Y&\(X+U(W&T&W&V&V&V%U%V'X)Q(S'R%U$U%X'W'Y'U%[#\)^0b,_(V*^,]+d+c+f+e,h-g1p6q6Ʌ7֑>F[q}}~|occ}vgXJҜHR[hu}}ynbb~z{|un^OËA4j/g+c+`+^,^.[+])Z*Z,V*W(U'Y&W(Z+W)W'S&S%P'X*X)X(S)V*T)X(Y)Y*X)[)Y)[*]*\+[)\(Z)]*\+b,a.j0o2ē4שGZequz~~{wlbb{uh[NB:i2f.`*^+c,])\'Z(^(Y(Z'X(](X(\)W'Y&V&X%U'])Y(`&Y'Y)V(['X'Z'Y'^(Y)[*Z)\'X'Y'Y)[+]+b,l2r8<@MZdnsx}~~~{pee{|qg\QE9n1h)Y)\*[(X&V%Y%Y&W'W)V+R)V'P&T&T&S&O'T)Q'V%X&U(R'U'S&V%V&V'R)T+T'T$S%V&W)Z,],m,|6@FMT[clqvx{~~{}tii~yof[QɷG>7{0l.Y-Y*T&U&Z'U&T&S&T'T&[&S&U'Q%Q#P%T'Q%R#Q$S%Q%U&V%W#S#T#Q'R*P&P"P#}W%zW'|Y*~g-{18?E¼KPU]flrx~~}~~tjj~zvnf[QJC=74m1|],xX'tS(sR)sO'xO%}N$}Q#}P$R%N&~O({M$}N O"~P%|P#}M!~J!}N"}M$|Q&{Y$zQ"yK!xM wM%tM*rK%pL!nG"pS$qU&v^)zm/x6:>CILOW`gnw}~}tllztkcZQIA<63}z0sf+m^'hU&eM&bL$lK"vM!sR!qL"sO#uJ#rM$oJ"rK vI!sM#qJ"rJ!sI pQ mJ kL!iK!gL!eHdKdI!bJ%`L#^O"\P#bY%iY&p](wk.w469>D¶GIR[dmyzsll{ri`YRI@;6~t2vm/nd+i^'eY%aP$]K!aKeJaH ^A!`E"a@!_E ]F `D!c@!`D!^C!]D!]B ]E\?[BZ<[C \?[G[C\J!]M"_Q#bR$hZ&n\'se(yn-z334:@BȼDMWal{}xrmm|skc\VME=~6vr2pe.jc+f`(bY&]Q$XQ#VN"TK"PF"LE!MD!ND!MA"LC N?PA M@ KC IB HC!JB!LB KAKDOF!SJ SP SN"VO$ZS%aX&i\%nd%sg)wn-|u/147=BEȸIR\gs~{rii~umf`ZRK@6r2wl.nc,ka*h\'f[%e]%`X&\P%ZO$XL"WL!VK"TK$SG!THUFSG RH RI SG"TJ$VF"WL!YP![S"]U#_W$bV%eZ'h[(ob)ve'ym%}n,v3v1/5;@õEзINWamz~rff|smg`YTNG@:~y5st0qh+of*pe)re)ke)e]'d]%dW%aV$^U$\Z%[U#[V![R"ZQ"YR$[T&^T&_Y%`V$dY#h\#ha$ha%lb&qe)ti,wl,}s,u,,1678>EJPTX`gqz~tjj{qmiaYURNKC<4,p,v-m-xm-qe*od'm_'k_(jZ'i`&h`%g^%g\%f]%f^)i^-l\*la'ma&pd%sg&tl'vm'{o(t,y1z0/}147:>ŻBHOU[_chnt{~voo|tnic^[XURLGC?=;98~4zr1vt/vp.wq/vn0un.ti+sk+si,sl-vl/zm/zq/zr.|q-~w/|0~0y/5;<>@CĿEHLQV\_cgkqw|sjj~wpifc`^\ZVRRRMIFD?;858;6223~22}47668:87>EIMPSTV[aeijkosyzpff|vpnmjfb^]\[[VRRQOLKJMPKFILLLNOOOQSSSW\`cdfghmquz|~~{qgg|wwxsoicdfed`\]_^^^_be_Z_efgghhhjmnoqtwzyyz{~}|rhh|vqqpoonmmnnnopppnmqvtruxwvvwxy}~zrjj}{zz|~~~~~~{}}xrmm~{~xqjj}yphhzqii|sjjzpff|~~|xmcczpff|sjj}ss}}rkyds|ap^m}`n}bo}]kz~Xgw|[k|^o}^o~_o}{}_n|~`ly_m{~~_n}||||}\jxy{Zfsvz|Zfrx~ZfrzZfsx}Zgtvx}Wgxyz|~~}Uh||}|{{|~~}Vfvy{{|zx|}{~~z~Wdquz{}xty}|zx{{x|Veux|{{ywz}~~}|}~|z{{}~Vgy{~|zz{{|~}}}zw{~||}~Ufwz~zwy|{z}~~}{{{|~}|~Uevz~yuy}{y|~}~}z|~}}}}|}Vetx{wtwzz{}|y{}zxz|}~}Xesvyvsuwz~{vxzxvwy}~Vcotyxvvwwwz|yuwyxwxy|U`lszzzxwtquywuvxxxxy{~~}||}~~~~U`kpuvxxwusw|ywvvwyyzzzz{|}|{|||}|{zz}V`kmpswwxvuz|ywuwz{|yvutw{zz{}||ywwwy{{z}Xbmoqqrtwvux{yxwvvvx{yxvux|{{zzz{yxz}}~~||}~{y|Zepqromqvuuvxwwwwtrvzzzxvy}}}zwy{zy~~{|}}~{yxxxy|~Xdppooprtvwxxxwwxtquxy{zyz{{|{z{|||}}~|xyzyx{Vcqompsssvzyyxxxyuqtwy||}{yz|}~}}~|z}|xz}zx{Uboopqsssvyyyyxxxvux||}~}{{|{{{{zzyy{}|{|}~|{{{{}Uampsstssvyyzyyxwxz}}||zyyywvwxyzxwwx|}z|~~~~T`lossstuvwwwxxvtvx{~|{|~|{{{|}{zyxz||{zyyz{}~}|~~}~}T`losssuwvvuuvxtqtwy{yxy{zzzz}~{{{~}|{|}{y{~~~|~~{}S_kmprsssstuwvvuswzyyz{ywy{zzz{yxy{|}{yyy{|{yz|~~~~~~~~~S^jlnqtqopruywuuvz~zw{ysw|{zxvuux{zzxvwxz|{zzzz}~}||Q^klnpsqoqsuwusuwwwxxxywuwz{|ywvuwxyzyxyzzz{|||~}{{|~}z~P^lmnprqpruuusquyuquzvsuwxy|{xwvvvxzzz{}zx{~~}}||zy~~y~Q`nnnqsqoqstvtruyuqtxusvyxxyzzzxwwxyyyyyzz{}~}}}~|y}~Sbqporuqnoqtwusvzuqtwusw{yxwvy|zxy{zyxxxx{~~||}~z|~R_lnprtqoprtvutvxuruywuvxyzxvxzzzz{ywwvww{~~}||{{|}|{|~Q\hlqrsrqrstvuuuvtsw{ywvvy|ywwxz|{{xvuuvw{}{{|zyyy{}}~~~}M[jnrqqrtssstttvywuuvwywuwyxwwxz|zxwvvwwx{~|{{{zyyyz{{|~}~J[losqoswusssssw|ywtqv{wtuwwwwxz}yvvwxyyz{}||{zyyyzyyz{}||}~~M[jotsrsusqrsstuwvtsruywvxyyzyxyzzzxwxzzz{|}}}|{yyyyzzz{||}|{|}}~Q\hnuuuttrpqstutsrrrsuwxyz||}zxxx{~zwy|{z{|}|zyxy{zywvy}|{{{|~~~}||S]hmsrpqrqqqrrrrsrqrtuvuuvwwxwwxyyyxxyzyxyz{||}{zzzyyyywvxzz{zz|~}}~~~U^hmrolnpqsrqpoqtrpruuvsqqrrstvxzwuwyxxwwwxyzz{{{{|zxyzxvvwy{zy|}{~S]hlqnlmopqrrqopprsrqstttrqrsuwvuwyxxxxyzyxxyyx{~{yxxvuvwwxz|{{{{{{|~Q\hlqnlmooprtrpnmrwrnpsuwtqrsuxtqw}zxxy{~{xxywv{|wwxtquyyy{}}}zxz|{{~~Q]ilpnmnpooprqqpoqtrpqrsuuusqsusruywvxzyyxxxxyyz{xvwxvsuxwwuty~{y|~~Q]jmponprpnoqqrqqqrrrqqrsvzupqrrstuttw{wtvxxxz}yvuuwywvvwvuplu}{~N\ikmlknqqqpoqsrrrrrrstsqrtrpqssstvwxwvwxxxyz|zvvvvvvuuuttrqz}~LZiijiimqrtqnqtssrrrruxtponopruttuwy|vqw}zxz|~|wwwuttuttssuw~}}}N\jhfhjkmmnnnopqrqprtuwusqnpqsutsuvwx{zzyxz|{zxvvwwwwwvuxz~}~|z}~Q^lgcgkjjihknmmoqonrvvvvwsoqstvtstvutyz|xtvxz}yvxzyyyzyx{~}y}|wz~~~~NZfgijljikmmnnnopooruttvxsnqtuvutuvutvwxwvvvwyxxy{zyxxxxz}~~}|{~}y{~~~LVahonnkhmspnopoopqsusruysnrvvwvvvwutssssstvxvttuwz{|zywvwxz|{zzz|~|}~~~KWdhlllkjlnmmmmnoooqsqoswrnpstvtrrssttttutstutsttwy{|{zywz~|{|}|z{|~{{z{}~JYhijjkkljikmkjlonnpromqvrnopruqnoprttuvwtrrrrsstvy{}||zy~z}~{{{}}{ywy|||~~~L[iklkkjjlnopnmpsqoprporuqnprtusqqqsuuuuvutuvutuuuuwzyyz{}|z{}{z|~zzzz{{|}}|}O]kmomkjintssrqtxtqqrqqsuqnquuvuutsuwvuuuuvxzxvvwtqtxwvy}{zzzyyyy~z{}|{{|zyyz}}}}OZfhklmljnrpmprstqnoppqqqpooorvvvuttusrrruwxxvtttrqtxxwy|zyxwxyz|~~zwy{zyyy{|{z|OXadhlpnlnqlhntrpmklnprpnopmjpvwxwvtsqooptyxwusrqqquyyyz{zywuwy|~}zxvtwzxwww{}z|~}NXcehkonnnnlknqonmlmnnomkmomjnqrssstusrqquyurrrrrstvx{}}|yuuuwy{}||ywvuwyxxxy{~~~~~MYefhknopmklnnomlmnnnmmkilomklmnoopswvutsvysmoqrtvxxx}~xrtvxzz{{{ywwwwxxyz{{|~LXdgiknmmmllknppponnnnonmnpnllkmopprtturpsvtqrtsrtuwz{|||xttux{zzz{yxxyyyxxy{|~LXdgklnlklnkimrstqonnoqqrqqonljmppqqqsuqnqtuvvwtqrsw|ywy{xvuux|{zz{zzz{{{ywy|~OZeimllkkkkklnqrsqonnqtrpqsqponopqrqqsttssttutsssuwyzzy|zuvvy|{z{}{z{|{z{|{z}S]gkoljkljilopqqrpoooswrnqutsrrqqrsrrstvyvtttrpsvy|zyz||uvxz}|{}}{|}{z~}y|R\gjnljlomknpnmnooooosvsqrsrqrsrrrssrssuxxxyzwtvxz}{yyx|zvxz||y{}zxz|zx}}Q\gjmkjnspnprmikmnpppsvutrqpprutsstssssuwy|~|xy{|~|zwux{ywy|~|wy{xux|yw}MYfhkjjjkmpqspmnoprstsrpmopoorutsrprsstvyz{zzxvvvxywtwyxxwvwy||xyzyxyzxw}IWegiijfcjrstrqqqsuvxsokgkponrvutpmpttux|{zwuttsrsurov~yuuuvw{|yyz{|zyxw|}{yz|}}KXdhkjjgejprtqooooortrpnlnpooprrspmpsuvwwwwwwvuttttsrtwvvvvwwxzzzzz{|{yyxz}}~}}~~NYdinljihknqtqnnnljmqqqqrqqppooprpnpsuxustuwyxwvvuttusqtwwxxxvux|{z{}{zzzyx{~z}~}NXcgllljikmoppoqrolnqrrqppoopppooooqttuuuvxz|xuvvvvtsrqsvx{xvxz{{{{}~{xz}||~}~~}}~~}}NXbfklnljkmmmoqtwrnprstqonnopqrolnprutsuwy{}ytuwxyuqqqsuy~yuz}{|}~{v{~~|}~~|~{{MWbdfilllmnoppprsolosturonnoppqolorsttuuuvx|ystutsrrrrstvywvy|zxz{}|y|~}~{|}}}~}|}}MWbbbfjlnnoqsqpppmjouvwsooooppqomptttuwuttu{yrrspnpsssssstvxxywvxz|~}|}|z}|yz{}||}LU_bdeghiijlmmnnojflsturpnmnoqspmorstttsrsux{wstvsqrsssrrqpsvxzxvy||||{|}zw{|yz{{{}}|}~||KT]bgedddefghjlmnhcjqrsrqnkmoruqnoprusrqpsvvvuuwyvtttssrqomqux{ywz~|{{{{{wty|yz|zxyz{}~~~zzLV`cfedeghihhkomljhloopnlmnooqssrqpsvuttsvyxwusvywvvwvuttroqsuwxy{}|zzzyyvsyzux{zyz{|}}}~~~NXcdeddgkkljhmrnklnnnmmjhmrqpqrtwspswwwwwz}zxtquyyyyzxwwxurrrstw{|}{zyyxxusyxrvzz{|}}}|{~~~~~{MWaehgfhklmjhknmllmmmllkjlmnnqstutsuwwwvvz|ywuwyyywtttuwustvutvxz|{z{|ywutwyvtwzyxz|||||}}|~~LV`fljhiklnkhiklmmmmmlklmkikmqutsuwwxxxvu{~{zzzzzztoprtvutw{xuuux|{z|zvvvutuvxzxvy|{{|}}~|z~}}~{{{{{MWafjiiijkljiklmmmlllmomlkklmorqqsvvwwwusvzxvvvvvxzuqrsssttuwvvvwy{zy{}yvvwwxyz{|zxz|{{|~}||}~~~~}}NXcfiijjjjjjklnnnmlkkosollmmnnoopruvwvvsqrsrqqrrsvzvstusqsutsuxxyz{yxz|yvwxz|}~~|z{}|{}|z}zJWcccdehkkkjiklmnljjklnmlmnnooopqqqqprtrpqqqqqqqrstttuvutuutsuxxxxyxxyyvstuz{xyzyy{~~~|zz{~~GUda^_afllmjhiklnkhikjijlmoopppqspnljnsqppppqqqqqporuvwwxwvutvxwwwwxyxwspqrzyqsvwy|{vy|DSa_^`ceghjhgggikjhiijlpuroooopppnlllorpnnnprpnoqomorrruwvusruyxxvuvxy{vrrqw}xttuvxz|}~|z{|~~~~~~BP_^^aecbdgffdcfiiihhkowwponoponlklnprolllptplnqnkmponrwutrquzyyvtuw{zusquyxwutuwxyz{}~}}}{z|~~}|~~}}EQ^]]aedcccefedefeefgikrzuqponnnnmlmmnpnlnopppooomlnpompttttsvywutruxxxvuuvvuuutsuwwxz{zzzz|}||||~}{{|}~~{{HR]]]aeeeb`cgffedbacfghnusrqpnmnonnmmmnmmpspmpspmmmoqomoqsuuvwxurqquzvrsux|wrrsssuwwxz|xuvx{~~~|z{}~}zyy{~~~~~~|zy|~|zzHS^_`ceeecbcddcegdbdghintrpoomlkjklmnoppoopmkmnmmmmnoqsrrrrtuvwuttuvwwwwxxyursuttvwxy|~|yxwz|}~}}}~~~~~|{zz|~~~}}~}}||}}HT`bdefeeddcbaafkgcehijnspnnomkhfhkmpqsrromkjjjkmmnmmsyvtrpruuvvvwyvtx}|{ywtrtwvvwxy{~~zwy{|~~|}zwz~~}~|~}|{}IT`acegecegffedeffffghilpmklmlljijjkknponmklnmlmomjmpsvspooqstuutuvvvwyyzywtrtvvwvuwz{}||zxz||}||}~|{|~|yxwz~}}~~~|~~}}~~~~}|~~}||JU`acehebfkjjhgdbfjhfghjmjhiklmmmkjhgjnlkjjnrpnprlgmtttplmopqsutsssuxvuwzyxurtvwxusvyyyyzzz{}||zy{}{zzzxvwx{~}|{z|}||}|{}~}||}~}}~~~|~yyIT_`bbcdeeeefc`abdfffffhjiijllmlljiiiknmlmnnnljlnkintrqonnnnoruuutsuwustuwyuqstttttwzyxwwwwy||{zyzz|}|zzzyy{}||{z|~}|}~}}~~|}}{{|}~}}~||IT_`a_^chd`ab^Z^cbbdgfefgiklmmmlkihiklnnnpsokhfhjklptqnopnmmmqvwxustvtrqquzuqrsrqsux{ywvuttx|{{zzyx|~{|~|z{||}{z|~}}~~|}xy{|}|||GPZ]a`_adcabda_bedcehhhhhikkllljigfjomlllnplhhgjmmnoqonopnmnosvuttutssrqorurprsqpsvwxxwvvvvwxxyz{zz{|zyz|yvwy{}{y{~}|}~|z}~|z|}{yyy||x~~FMU[ba``abcdfeefgedgjkljijkklkkihfdksokjjkmifgimqppoonnoqomortwtqtwtqrspnoppprtqoswvvwxwwwxvtvxz|||ywwxyzvrtvy}zx{}||}yvzz{}~{vvvy|xu||}~~GOW\bbbbccdefdcfhecfihhhhijiiknmligkpnlkkklkjjjlooonnnnmmmmnptxvtuvutssrqrssrsusqsvvvwxwvxzxwxz{|||zyxwyzxuwzyyyx{~~}zx}||}~|zyxz}{y}}IQY]bcddeeeefdbfjfbehfefhhihglqppmjkmmnmlllmomklnnnnnnnkikmnotzxwvuvwuttuvwvuuvtstvvvwywvy}{z{||}||||ywy{zy{~zvwy{}}|{~}}}~~~|{|~~~~{{JT^_abbceefggecfigfghfeefhigfimmmkjlnmllllmnonmmmmnnonnlkmpqsx}yvvvuuuuuuuuwyxwvuuvvwwxwwz~|{|~}{{{}|yyyyyz|zxxwy{~}|{~}}~}~~~}{~zzLWcbaaacefhhifdfiijihfeeegjgegijkjjmpmkklmnnoopnlmooponnnpsuw{zuvxustvvvtsx~{yxwwwwxwwxy|}|~}zzz~|zxyzzzz{xvxz{}}~}|}|~}|y~yyJU`abcddcegikhfeefgikigedfihghijkihknljlnmlnponljklmnnnoprstvwyvttusqsutsttx{yvvuwyxxxwwwz}||}xyz||zxvxzyyyzxwy{zyz|}}~~|~||HS^adfhebdgjmjhdabdinkifdfhijjjjkigjmkimqnknroljiijkmmnpssttusrrsrrqprtrqsvwyvtttw{zyxxwvy|||~wxz{|zywux{yxxyxxz|xux{}~{~~~}~DP]_abca_befgeca`abfjgeeeeefhgfghhhijhgjmkjlmjhggfehlllmnpspnprrrolnpppooruuurpqqtxwvvuutwzyx{{xxxusssrqsutsuwutvyxwxzz{|}yux{zzz{{{{|zxxyz{{|zy|@N]]^^_^]`dcb`^_```cfdbdfdcdfdcdegjhgfegiijiifddecafkjjiimrlglrqqlglqommmqusqomnoruttssssvyvtvyyywvpklmmmnponqusqsvwyyzxwxytpruuvuuuuuuroqsuwy{wsw{@KWY\[[[\_b`_\Y[\\[_b`^`ca__```aba`beb_`bcedbaa_]]^adcbbcgkfafkihfdgjhggghijjihhiknnnmmnpqrrrrrqpqrnjjjjjkllkmomknqsutsqoprpnnoprqqqpqrpnnnnnprqprtw{zzAIQUZXWY[]`^\XUWYXW[_\Z]`][[[\^_`[W]c^YZ[^a^\]^YUX[\^\Z[]`d_[_db``abcbbbb`^adddccegghggjmllnpnljhknljhggghiiiijgehlnqnligilllkjlnnnmlnpnmkigegikmmmor|uu}@̆CȅB΋B՘JRexwypWҏ>g;k8i=uCvDσFԊGَIޏKڍM׃K׃J{IH؁GډFܑJߎOO݋PׁMօJւI|HtCy?q@wBw=x8t<|AÀ?Dž=̉CߠJYi}}}tynUz=n:q7n{>w@vB{A?ĆBԏESax}}rylΝT|v;v:u9u?xEyDuDuC|B}AϋAܘMZs}}qvfQsu?r?vA|B@ʊ>ԠJVnqs`Nzĉ=͛FOf~rlYJvtC{HΆHЎH҇F́EwEyEtEE˅GɂIuJyKuBq9o;p>km;t8x9t;p;x<{=Ɖ?ϛELd}t~kXK{>m:m6d5e4i6t9r=xA}CʉFЁDʀBvA~@wAxAyByCrAr?oȆ=љFOcxv}jWKw@hnn>n>k9n4k7g:h:m:m=nAkLJ;ϔGScsn~lYǘJxg9i5j8f;d8b5a6c7a8c9]6_4Z7b;d9h8a6f4g3h3e4p6s7y9{<ɇ@ҔHQg~~|}{qhh`m{{gǦOx6n6l6e6]6_4d2^1b0c4n7e7d6c7e8_6]3^3d4^4^5^3e1^3b6c6l5c5e4g5f5i4s4s6z8}<͉@؜HPi~~|z{{}ysleeYgu{~{zy}tϜT5l5i6d4_2[/[-U+Z*X-_1]4]8Y7]6Y4Y2W1\1V1Z1Y/\.Y0^2]2b3\4e5m6k8i5n2n5x8x<̌AٟHOl~~yz|zyxxy{|~{yrlgccYdpv|zywvy}}}~]۳LZw~~}}}}|{||||||xtmff^gquzvsuxz}}}}~~{~}\J8t2p-h,e,c.b0]-^+X,Z-a*\(Z'\&^-`4[3_2c2c3^0d-d2i7d1o,p3~;<ѡ>Pb~~|~{wxz{|{z}ztj``Yfrvzyxz|}~~~}|}~kVB8|/o/i/f/e0`-b*\*_*_*^*])`)`,e0_/`/b/i/d.l.i0r2n2w2y7<ŗBܵH_u|y~}|zzz|~{y{}yuk``Udtwz|~}{|~}|}{cͬL>z1o1m2j1f1^-^)W(^(^*_-\,`,^,`,\,],\+e+`-h0e/m.m3v9y;=ǠHSn~~~~~zw}{|~|{}|yyzxwlaaUdtwzz{~~|}~}zz{{||kZH7v5r3o2l1e0c.`/d/a.f-b.g.b-b,`,_-c-q-j0o3j1p0q4{9BùQair~||}}}{z|~~~}}{z|~yuy~|xtkbbXftvyyyz|}~}|{{{~|~~{}~}~ysl^QG|>w9t4k3o2c2a3^/a*a,f.b-g-c-b-^-a-e1i6h3m0n6y=ADQ]iu~}}}}}zxxy{}|{zyyyvtx}|{|}|{wsjaa\htvxxyxx}}~|{}}z|~|~}}ywvsqkeVªGz?t7d3g0[0^0\+^'`)^,Z-^._-]-T,]+`1d7f2j.f7ADGPZixzy}|{{|~~~~~~}}}}yvuuy}{yyyvtttx|wrtwxzvriaaZfrtvwxyz|~{y|~~}}~}}|}~~}{~}zxvtqonn^OC8o2p-b,`,[)^'[)[*W)Y(\(_)Z)a)^-a1h0r0w6=@CLVet~~~~}|}~|yvvwxzzzyywuuuwyvtx|||wsjaaYdpruvwz}{ywvxzzz}|x{~~~~y~{yxxuromrwgXH9i2e+~_)}Z({U(}W(V(~U)~Q&|V#z\$zW%{V&|Z(}X)z`+wi/|r3~69@ISct}z}~~|zyywvxzzzxwxz{|{{~yskcc\ivtsrqrsw{|}~|yz|{{}zvy|yw}{wxyxxvtle`[NBo9rb0fY.cV,aS,aQ-bI'aM"aH$`O&_K&aQ'dQ*fZ.i]-ng-th0|v38>@BƵJSex|~~{|}~~}{ywuwyz{ywz~ysleeYfstvxzyyyz{||}|{{|}~}{yxyzxwz~}||{zywspjd^YMB:wc3d_0_W-[V,YU+WR(VQ%VR&VU'WV)][*c],gb/kj/uw0w3|6GOW_hr||}~z}}{}}{||zy{}}yxwy|zy{}yvnffT`mpsvywvx{yxwwww}}}}{yxxwv{~}}~|sjhf]TPLHE@<:8z7}6z5~54469<@EEEHKNR[cksz~}|{zz}|zzz{}}}}}zwxz{||{zzrjj]jwxyz{zz~~~~xsz|y|}{{|~~|vnfff_YRLPTPMHCLVTRTW\bhnt{~~~|z~~yz{}{vz~zwxy||yyyrllYftwz{{{z}|z~~}}~xqpniea]`b`^ZW^fdcfjnrz~}~~{}|zz{}zuxzzyzz}}{xuoiiUcqv|||{{}}}~z}zwtqpopqpomkpvutx}|~~|{}|{{{{{|}~yuvwy|||~~xrlffXftvxy{{|}~~}~~|}|z{|yvtsw|}~}}|{|{z{||||{zyyz|~}|}}{ywumff\iwvuwz{}{y{~{yz{~~~|{~}}~}|{}{z{}}}{y{}}~}|{xuvxoffYgvwxxxz|}~xz|~~}|z{{{{|}{yyz|~}|}~}|{{xumeeWfux|ywy{xz}}~~||}||zxz}{z|~|zxw{{x|~}yrkddXgwy|zxxy~~~~|zy{~}||}||zxz{|~}|}~{ulddYiyz|zyxx}~~}{z|~~}}}~|zyx~~y|}yndd]htvyyyxx{~~~}|{{{}}{{{zyyxz||}~~zvnffahpsvwyxxxy{}~~}~}xyz{|}|yyywuvw|~}}}xsnii\htssuxyzzz{|~{{|{z~~|||zxyyz{|~}|}}{ywumeeXhxtpswz}|{{|}}~~~~{y~~|||xuvwxy{~yuvxlaaWgwvuvxz}}}|{}~~}~~}|zy|}|{zzy{|xsuxxxyzxvtskddWgwy{zy{}~}{~~{}~~}~z}~~~~~}}~|{zyyzzzwuvwz}wruyxxwvvwrnjgg\iwvvwx{}~~~{{{{|~}~|}~~||||}|{{{{{ywwwxyxxyzxvxzyysniddblwtqtx{~}}vx{zy~||}}||}|~~|{z|~}|||}{zxwvvz~|{xuy~|{tngaa^itssvy{|~}uy~|z}~}~|}~}|{{}~|||zx{~yuttwzyyurw}|{tmf``[frsux{{{|tz~|}~{{{{|}}|||~~{|}xt{{ssstvvwspv|{{slf``[huttx|}~~~}|z|}|{}~}~z|~~~|z|~{yz{ywy{xvtsvzyyvsvy{~umgbb[ixusx}}yxw|}zz{}~}||zx}~~|~z}}yz|ywxzzzvsvyvty~|{xvvv|xniee^hsuvxyz{yxxx{}|{{|~~{}~}||}~}}|{zyyxvuwywtx|ywy{yxy{xulddahotzxvuuvwxzzz{|}~~~|}~|zvvw}~|yxwwwxzwuwzwtz}zwuy}pccZdosxwuvvwyyzyxwwz~}}}}{}}}|yvwwz}{yxvwxvuwxwurptxvtvyz{wstukaaTaoswvuvxy{{{ywtrx~ytwz{||{|}}}||{zxwwxxxvuqmrwutwzuqnkpvuusqw}wqomf__KWcehhilonnnnnopqsuqnnoopsvtrv{yvvwy{}~~xxyyzyx|zusrtwvvsqppqspnquttuuqloqqqqponqtoknqlhijklllifffgihhfeeehkkllmjgdbgllmkjlnljfc]WWBLWXZ[]afcaabdgkpnljifddegihhlqmjjkpvtrsutstjaabbbaabc_[[[`eddb`[WZ^ZW]db```]Z^c`]ZXY[ZZXVWXVUVWY[\]XSTUX[YXWVY]^`bdba_][Y]bdfdca`ac^YTOODNXZ\]_aca`cgghknkihfgggffefhjlkjnrsurpruuv}xtuvusuxtpoosvuuttpmpspnqtrqsvtstvtrollllljhijiijllmmmiehjiihhhijklnmllmieeehkmnljlmmlf`[VVGPZ\_`aaa`_eljijligedgkihebehhhijqyvtqoruwy}}~|z{}}}~}zx|{wxyz|{z{|xtvysnoqsuvwtrv{xvngb^^LZggfhijkklptssvyvspnprrrrqstttvy|}{zx|}}|~|y{~zwxyuqqqtwy|ywz}|{vqh__Rcuqnprtvwy{}}}|yyz{}~y|}zyywusquy}}~~{naaTanpsstuwvuwyyx~|{zz{|}{~|xy{xvvwz~~~}|~|ymaaW_gpywvwyurtvut}}}~|zz{|~~}}~~{vy}zxz}|{{~~zwlbbYbls{ywy{ywz}{y~|||{{~~}}~}}|~}y}}y{~~{|~}|}~zvmdd[frw}zxz}}}~}{zz{|~}{|~~}}~|z{~}{}|z~}x{zumffYfsvywvwyz{~}||{zzz|~}}~}~y|~z|~|zzz~y}|xoggXfttuuuuuwz{||}zxxyz{~}~|xz}|y{}yvxz{~|rhhWdqsuvxwvxyz{{{|}{z{|~}~~~~~}zwxz|qffWbnqux|zxxyyzzz~|}~~~~}y{~~~~{xyz}pddXeruwxzyyzzyyxw{~~}{}~}}~~~{xz{~}}}|}~~~{umffYhwxzyxy{{|zxvux|~}y}~{|~|{yxxy~}xz}|w}~vnkhh\grw{zxz{{zzzxwy{{|||{|}|||}}~~~}}~|zzz{}}|{y|ytlee`gnu}{yz|zy{}{yyzyx{{{||}~~~}yz{{|ywxzxwy||}~}zncc\fquzywvtvxxyyyyxyz|~}{{|}~~}}~}{{|||{{zywvx{}|yoeeXftvxwvqmrxvuwzxwy|}~|{{|||}}~|||~~|~~~}}||~|xvux{|ypgg[fquywusptwwwy{ywwxz}}}||}|~{}~|||~{wwxz}}~~~zvmdd^fou{xuttuwxy{}zwvux|}}||{|~|{{{~zvy|}|z{|xtkbb]fosxvtvxvuvxxxyzwux{~~|~}~~~{xz||}~}{{|ywz|{zzzwulcc]foruttx|xtuwutx}yvx{~}}~~z~~zvz~{xz|zx}zsvzzzyxwvmdd`hpruuvwxyyzzxvy}|{}~~~zwz}~|wz}zwz}|{yxvumeecjrsuvxvuz~~{xz}~~~~{xz}~vwxz|~~|zxvungg]hstuvxvtz|y}}~}~|y{|}~|yyxy{}~|zxtqjccWetuvwxvtz{u}~}{{{}zu{}zyxz}{yyz}~|zysmf__Xftwyzzwuz|x~}}~}~~|wy{{|}~|zzyzzzz{||{zxtph``Yguy}}}yvz~}|}~~}}y~zwuvx}}yvy|{zyyz{yxusjbbZfsw|{{|}}}||~}~~}}yz{}}zyxz{{|zxyzyxtqjcc[fqv{zz||}}}~~}{y~~~~~~zwy{{{|~{xxyyytoiddXcoswxx}|zy}~|}~~}}|{~}~~}yvxyz{zxwvx{ywtqiaaUamptuw|}yuz~|z}~x|~}~~~|y||y|~|yvwxz|wsstx}yutsh^^Xeqsux||}||{{|}}}||~}|~}||||{{{{{{{{yxyzxwwxwvvux|zxwwl``\ivvv{}yz{~}z{}}~}}~~|~}zx{{wz~zwwwutyzvuuwzxwy{{{{|occ[huwz{|||{{}~{}~||}~}|||{|}|{|}~~~}{ynddZgty~{x|}{}~}{|}{}zvmeebq|ttk|z~~~}}~~x{{xusvyyz{|}~|{wtx}|x|}{{{}|z{|{zzyz{zzzz{{{{zz|~|}{yxxxy{}{z{}~~|zyyyyz{~}{|~~}}yxvtrrstvwyz{|}||{{ywxy{||||||~{xvutpllmnotyyyz{zz{|xuwz|~zw}|{~xustvusqopqqrtwy|zyz{zzzz|~{y~vvvsptyz{vqrsokpvy}{yz{}|z|~|{~vwwuty~}}yvtrposx{}{zzz{{yxz||}~wxyxx}}{vrrsw{|~|{zzyxwvx{}~{~|~{tuvxy|}|zxxwxxy{|~~~~}{yw{~~|z|~{vrstw{{{zywvy}}~|{}|y~}wrz~vuuuuy}}~}}|||zxyy}~{yx|yqtxwvz|{{xvut{y{~~~}wruxyzzy|~|ywvu|{~~|xvtvy|ytw{|}~}{yxw}}~{~z~vuswz{{yvx{{{{{y{~zwz~}}~{~s{xutsw|zxxyz{zzxw|{u|}wxy{~|x|wywuuux{}{x{~~~zw{~~~|{{|}~}~~{xvuvwy{x}|wz}}}}}}}}~z~~y|yxwvuy|}~zw{}|}~~~}wyyzzzwty~zwvvy|||}}~~{}z{}z|vwxz|zxz||{zyzz|}~~}~~}}xsuw{~}|{}~}{y|~~|{~~~}|{wsvxy{{{zy{|}~{xy{~}~}{~yvtwzxwxzyxxy|{wwx~~~~~}x}{zxwy{ywz~{xwwz~zwy{~vwy{{{|}zw|}ywuy}zx{~~}y||yxxxxyyvsx|{yyy|}{}}}~|yvx{xvvvvvspswxz|~~}zz{~{w||||tsrsuvxwuxzxvvwxy|~~~~~~~}}|~mnooou{xuz}|ywxy|~}|~}y|airqquxxw{|ywvz~}}~~~~}~~|~~~}}}~}{}Ueuttuvxz|zvvv||}~z}{v|}{yxxy{{{{||}~z|~Tcrsuvxww{zvvw{{xz}~~}z~}xz}{zyyyx|~|~Saorvxzwty{wwxy{wtx|}~}}|{{yxwwxzyy~|~~Saosxxywvy|{zz{zyxxxxz|{zyy|~}{yv{}{{{~}Taotzyxxyyy{}~{wy|xuwzxwwxyz{|xu~}}~}}}~~S`lsyvtvywvxz{||}{yz{zzxwy|{z{{{|}~~}~~S^jqytptyvtvxyz~}w|}zxw|~{{{~{x}|||}T`lpurpruuvxzxvz~yuy}{xxwz|||{{}~{}~|zzz{}}}{z|~Uanprqppqtxz|wruyvsvzxwwxxxz}|{|~zw{|zxwvvy|zx{{x{~T`kosrqporuvvspqsssstttvyyyxwwwxzyxz{zzwtwyyxxw|~||}~~T^ioutspnpsrqponmpsqoprvzzzuqrsuwxzyxyzvrw}yuvw|~|~z}|}U^hlppqpopqsurpnmoqqrolptturpqssttuwxyywvwxwwxz|~|z{|~}V^gikmpppppuzuqomnprumfjoopooqsrqqquyyyyzvsvy{~|{wtx}Yaiijkmnpooqtsrolmnruqmnoqtttsrsusrw|{zxwvuwz{|{zwuwz}|}~\ckjjjjmponnoqsoklmqvutqosxxyuquyvsy~|xtuwy{zzyywvwx{|w|x|~~|{|~Vamkijllmoqqqrspnmmpsstttuvvwusuwxxyz{|zwy|}~|zzzwtw{|~~}zw|}~~{Q`okhknljotssssrqomnprtwzwtuvvvvvz~ytx}|{~~{{|wsx~~~{yxx|}~~{|~}wy|Uamkjnqmjpwvuttrppqsvuuwzxvwxxxwuxzwtwzz{|~|}}zxz}|{|~|z|~~}|{|}Ybklmquojrzxwvurorvy|yvxzyxyzz{xuvwvuvwy|{{~~~}}}zx}}}}{|}{}Ycnoqppppruuuuuroruvwusuwxzyyyyxwwwxxz{zy{|}~}|~}|{{{}}{}~}~}~Zeqsupkpvsqrtuvsprtsrqqrtx}zxwwxyxxz|~{wz~{yz{~~|z|~}}{y}}}~{~Wdqqpoopqqqrstusquyuqtwtqw}zxvtuvwxyzzzywy|{z{|~{{{}}|||}~~|||~}|}Ucrolospmorrrsusrx~wpv}vov}{yurstvyyywuvxyz{||}}xz}~}{}}||~|~yyy}}z}~Q_mllnponoqonprrrstsqtwtqv|{zwttuvwxzxwyzyxy{{|||zyzz}}{}~~~~~|z}~|z~||N[hjmmnnopqmjloqsokosrrrsw{{{xvvwvux{zz{}yvxz{|xux{yx|~|~|~}~}}z~|}~{{{~y}}zN\kklmnlklmllmoqtokpuspsvwwwwvuvwwwxxxxy{ywz}zwxy}{vz~~}}}{y{}}}}~}{}~}|O^nlklnkhijlnnoruplrxsotzwtsstuvxyzxvvvxzyx|zsx}}tx|~|z~~|xwvy|~|}~}|}P^llmnomkmoppporuroswsorvutrqsvvwxzxwvvwxyz{}yvxy{}{yz|{|}~~{zz|~~}|{zz}~Q^kmooponqutsqprutsuwspqrsuroswwwxzyxwwwwz}{yyzxvuty~}}}x|~||}}~~|~~~~|{zzxw}}O\iknnmnnopqsrrsttsstsrqpqrpnpsvyxvuuvxwvwxxxyzxwvux{{{~}yz{|}{y{}}}~~}{}~|||||{z}}{|~}}MZgjnlkmomlosstttttrqsuroopnmnou|wsrrvzwuttvxyzyywvwxxy}~{xvx{xvz~}|}~~~~|~~|yz{{{~~z|~~~~~}|zyz{yx}}MYdinmmmnlimprsrpomnnprqqrsqooosxusqosxurtuvwy{{{ywxywvxyyzxvwywvy|||{{|}~}}{{{|}|{~|wxyyy{}{zzzz{yw||NXbhnnonnjgjnpspmjgilnpqstvtrqprtttplqwspswwwy||}{yyzwtsruywvwxwvx{{|zxz}~||}~~{|}~}{wz~~|{ttuttx|zyz|{{ywy|||QZdhmlklljgjmnomlighjmponpqqqqpsurppquxurrrtvvwwxvtvxwvtrsuuuuvwxy{{|}~~~}}~}~~{}~|z{}}~|z|~ysrrsuvwxzzzyxwwy|}}T]fimjhikihjmlkkkighilpmjkmoqqqtwqlqwxzwuqnrvtrstrpswwxusrqrtttw{{{{|~{}|}x}~}|}~}|||zyz{wsqoswtrw|zywuvxz|S[cfjgehjigikjihhijihjmnonmmmoqpopqrtuvuuqnqtsrsuroprqqrtqoprtvwwyzzz~~~~~~}|{|}|}}y}~}|~~|{{yxwvustux|xuwzxvvwvux|||SZadgecfjhghjhgffimjhijouqnljmqlgnvsqqrsuqnpsrrtwrnnnljouqmoquyvtwzyy|~}~}|}}{{{wstu{}xz}}}~~}z}|~~{~~}}}{zyxurstx|~}yxxvtvyurw|yyPZdegfehljijkjjiikmmlkjlnoqnklmkjnrqorusrpmpttusrpopqpoqtqonmszz{zzz{|}}}}~}z{|||zxxwutx|}}{xz}~~~~}|~{{|}~~~~~{y{|zxwwvuy}~~{wwwwwxyvtuv~{{NZgghggjnlkklmnmlmnoqmjhgnupljiknnonnsxtpnmquvxsnopruuutsrqmir|~{|}{z{}||~}yyyyywvuttu|~yyy{}}~~~|}~~zyx|~{~}zxvz|yz|yw{}|yvvvx{zywvsqv|~~LXdefffimlkkjkllkkkmnnnjfkplijklmnnoppqqrqprsvxsnoppqpppponmmv~}{zyxw{}|}~}|{yyxwwwwvuz|zywz}~~}}}}}{|~~}{|}{xz|zxxywvy|zyxwwxxxxwvvutwz}}JUabdefillljijkkkjijloslfilifjnmmmnprnjotttsruysnopnmlllmllnqz{{|yvuu{|{{}}zyxxxyzwuwz{|yvy}}~{y}~}|}}}}~}|zy|{zyxwwwvuwyxwxyyzxvvvvvvwwx}}LXdbadghihhhiijiiiilooolijkjjklllllmorrsrrtwtqrrrqonoqpoty}~z{{xusrx}|{zz{}}zxvy{xvy|zxwvz~~}||{|~|y{}}~{xyyxwxyxwxyxwxyxxtqrrstqoty~~~N[hc^chgfedgjiihhijnrollmkjlomkklkkklqqrrrtvuuuuuvsprusrz}zz{wtrptyyzyyz{}yuy}zw{ytuvz}~~|}~|{~x|}zzzyywvxzxwy{zzzzxwxywvqmnoprlgpz|~KXfedgjhfhjjkjihfgiloljkmkiknmmnoljlmoooprqpqqrtuwuttutswz{|zy{}zwsptwy{zy{~~|ywxywuy}{z|~~}}}~~|~}y{~|{{{zzyxz}{yxvvvwywuwywuqnopppnlpuz~~HVehkklifkqnlkjgefhjljikmjhjmnoprnjlomllmmmornklnpsuxxywuuutsuxxx|}zuqsvy|zy}~z{|zywvtsw{~}|}~|u~z~~|}~}}}|{{{|}||{{zz}~|wrrruxusvzwtqoprpopqqqy~~HUbdfghgghihgggfefgijigilifhjlnlkighjjikmnopqnlmoqtuwxyvtw{wtx}zwy|zxvsstx|zy}~yyy{}{yvtvy|~}~|{}|x}}~~|}}~{w{~|zxz||}{zvstux{xvxzwtrprtsrsutsvy||HS_`abdfiebbbcddefghigfhkhefgjnidddeffgjnoqppnmnpsvvvwyvtz{u||vwxwwvvtrw|zy~~ywv{}yuvxz|~|y{~~~}|}}~|~~|||}~|s{|xuz|yxxvtvy||yyzwtrqtwvvwywvtrz{{HUccddefgfeeeefgihhhhhiknjegijljigfhjhghjosrqppppqqrsssssvyvtw{yvxzxwvuuuwzzy|~|yyz{}}~{xy{}~|yz|}~~}|~}||ywz|z}}zwux{|}zxtqsvxyyxyyvrrstvvwxyvtrpv}zzIXgggffffghhhhikmkjhgilorlfilkjlnkhkokgggnvtsssrqomnponprrrrsstuwy|zxvtvxxyyzzzzz|~{y|}|}~|}~~{}}}z}}zzz|~~{{|}~~{~}xz|wsw{~|zxwvvw||xsnqtttvxxyuqsuuuvxxyvspnsxyyJVacfgigfghfegjjkighijlmnjgikmppqnkmolihhovtsqpppomnpqrqqppsvvvy|{zwuuvwxwvwxyzz{zz{{{|ywy|~}|}~{x~|}}{yx|~~|y{}yvxz}~|{{xvwyz|xutstuvwvuwxvuvwutttvxusqnrvwwLT\`ehlifgiebfkjigehklmlkihijpvutqnnomkjipwuspnoponopsvspootyyy}|xuruxxxvtuwxz{|ywz~{yurvz~}zz{xv|~~}|yw|{}~|z|~|zzzyy}}}~zvx{yxuruxwwxzvsuxxyyyvtrqtwutqoru}vvHR]_bfjighigdfihgggikjjihjlkjlooponmmmmkjospmkilooponprpnoqtwxyz|xtsstvvwvuwyz{{|zy{~|zxvx{{||||}||{{xvwx|~}z|~~|y|{}|{~~{zyyy|~}}}zwy|zxy{zxwvwywuttvxwuuvutttrponqtzvvDQ^^_diiiijhgggfegijkigffkqnkihjlmnmlmomlnplhfdinpromnomlostvxzxwspruttuvvvx{{|||{{}}|{z{|yvwxwwwxz|wrv{|}}}}~}||}yuy~~{|~{~||}|zyyz|~~~}}zxz}zx~ywvwxwwsptxuruxwwtrommnpsuxvvGTaaaejjjhgedfihhhhijhfggkomjigkonnljkmlklmmmljlmkiknmllkmoopswutsrrrsuttttvyz{zyyyz|}}|{ywxxy{ywxyyzzyzzzz}~|||~|w|~{||~||}|{{|}~}|yvwxxxyzyxyyz|zx{{wutuvuusqtwtqsusrqpmjmpoorv~uuKXeddgkkkgdcbfkklighigfgiknljhglrpnkhjlkjjkosrqomgaholjjkklkjotsrstrpsvtrrrtwxzxwwwxz|~}xsw{|~zwxzyy}}zyx}{{|y~}|{{{|}|~}yxxyz{|zxz|wsuwtrtvutw{{{zyyywvtrstttsrtvsqqrpnnokhmrolpt{ttNYddcdfghecdehkklifgijjhfjmlkkknqnkkjkklnnopqonmmjhjljiklmomlqusrtvsqsuplptuvwxxyxvz~{yxwvvy||{zxz{yw{|z{{~{z~~|}}|~}{xz}|{yxyzyxxwwvxzxwxzywvtvxxxtprtuvsqrtsrpoppomlknqnlnq{zzQZdccbacedcfijklmiegjloidhmmmnooplikmlknrrsqomllmnoliiiknprposwtruxurstmgnvuuuvy|yv|{trquy{~{yyz{}yuy}|{}{{~~~~{}}y|}{yxxx{~{xy{|~|zzzwtrptxyztoruwytpqssspmpsolmoopnmmnt{MWacffffgedgjhgfefgikklkjjjjkmnpqommnmlmoprqqolllmomljiknopruttrqsvspqrnkotuvwyz{ywz|xttsuw{|zzzyyxwz}}}~~||}~~~}|{~~}|{yxy{xvwx{~zwy{ywvtuwvutsssvzuqqpsvqlmnmkmoqtqnmmqv}}IS^djjkjigehlgc`]cjklkjmpkghjlnpsrqppnmmmoqrtpmlkmoopliknnnu|vqpprtqnopooqsuwy|{{zyxwvuuvuuz~|{zxvxz{}~~~{y}~{|~}z{|~~}~~z|}~~~{xxxvuuuy~ytx}|{zywvsqtwtqv{wspntzslkjjkmotytomlnq}zzHR\^adgdbehijihebgllkjijjihhikmnonnnnmlnpqrqqomkijlmnnooopqrtsrpnpqqrqppqtwutuvx{zzxuvvtstvy{zxxxxx{~}|}~~yz|}~}||~~|~}|||}~}~}|~|z{|}~|{yxwvwxwvwyxxwwvtttuwtqtxussssspnmklmnoqtsqomnpz~wwHQ[YX]c_\ckjiknkhkomkjigegiiijlllkkklkkosssqonnkhhijlpusqrtpmpspmnorvspqsw|vqqqv{{|xtvxtptxwwvuvwy{~~{|}~~|~ty}|}|z~}z}{|~|{zzxw}~|~|}|{|}}}yuwy~~}|zxuruxwvuuuvtsuxwwtqsutsuxrlnqomnooooprtqnopw~}uuHR\]^ada_chhhhihfgghhiiihikjijkjjjkkklnnopqppooljhgikmnpsrrpnnnnnoprusqqqsvtrsuuvwxwwvusrtvuuwyxwxz}}{zyz|~~{|~|z||z~~}}{ywusry~}{|}}}}~zwxy}|||{{wtvxxxwwwwurstttttsrrqqqommmmmmmnonmpsolllqw|uuIS^addedcdefgfeeeb`cfhjkllmkjjkihikkknqnlmoprqpnlifhkihnusqppmjloprstsrqpppqsvyuqrtw{vrstttssx~zwxy{~}|xuwy{}||}{y|}{~}~~~|ywspnmu~}~}~~~~~~|z|~}~|zzz|}{{|}~zvwxy{zyyyurqqqrtwspppmjlnkiknlkmpmknrnjiilp{uuKRZ_eeeddefeefghjgdgjkmljjikllljijkkknpomnnprommnljkmkjnrqqomoprtsrsuroprsttutsrrrsuxvuuvvvwxz}{yyyz{zywvwy{}{z|~~{yz|}}||}}}}yvtrposw}}z{|~~}|~}z{}{z|~zwz}}||{{{||xuwyz{ywy{wrqqsuttssqponnmmmnppopqnjlnljjknrwwMRW^feeeefgedfiloliknoqmigfjonmkjjkklnpoonnprnjmponopnlnppqnkqwxyvstvqlptvxwwrmpssstuvxxxxx{~}|||zyxxwvwxxy{}{y|}z{}~|yyz~|vz~|{}|~zvutsrqpz|~|~~|}~xxx~~zz{~~{{{yxz}xtz}z{|{{{{wtwzz{xvz~xsrqtxtqtwspqspmoqrsstssnjjjjjkmpt}yyMT[^`bdfhhhiihghjhfhklmiefgjnnmkhiijlmonmnprtplnqnklmmmnopqonqtssrqsusprsssvxtpruuvvwwvwxvuwyxwxywuwyxwxxz|||||~}}}}}zxyz|~{x|}{}~|}xstusqx~~~}}{|}|z~}zz{~|zyzzzzxwxzzzzyyyxxwvvuuvtrtwusqnqtsstusqqqomqusqqrrsnjkmnnkhlpxxxNW`][_dgkjjlojeefdcfiijeadhknnnjgghjlmnlknrtvrnprmhijlonnoqqqqqonnoruuutsqotzwtuwxyyzwuwyurstsstvtrvzyyyy|}{}}{zyxy{zzz{~|}~~~~~}}}|suxurv{{|~|z|}~z|}x{~{s{}~~|{{{}zxz}zwxzwtw{ywwwvvwyuqqqonoprtplnqsutsssqonmsytppprtojmqrskchmsyxxLT\]^addeddgjhffgdaejiigfeehlmokhiikmmmmlnopqnlnpnllklljijlmnpqppqrstrqrtplpusqsvuuvwwwwwusttuuuuvwxzxvwwz|zyz|}~~~~}{zy{}|{~}}}~~|vy}xsvz|~}|y~}~~~~~z}|x{|z{}|{yx{~zwxywvxzvsuxwwxywuwzupqrrrqpqqpoprtusqqrqppprutsrrqpmjotpmjfilpt}uuJQX\abda_^^bffghid`ekjijkgcfjmpmjjklnmmmnmmllkklnoqomkjgdfhjlorrrtvtspmqvoilpoorusqrtwzxvuuuuvxvux|{zwtuvxzxwwxz|{zy|yt}}|{}~|~~}z~{twz}~~|}x|~|~{{{}~}~}}|{yxyzyxvu|zvuuuuwzvstuvwy{wtw{uoqstvsqpoprstuvropqqrrsrrtwutplkjpwohijjkmoz|rrJS\]_`ba`aaceeeddcbdfgihhhhijlnnokhjlmnmklnnnkilonmnpnmjgffilmoopsvtsqoqsoknqomqvuuuuvwutuuttvxuruyz{wrssuwvuvwxz}}{zx{yt{{{|}~~}~{{{}~~||~}{}~~|zyyxxxy|yttttuvwusuwwwwwutuwsprusqpnnnooppqrqpqsqprusqqqsuqnljoupklmllmnv~ttJU`_^_`abceddcca_becbeigeinlkklpumegjmplilooplhlpmjnsqpmjgehlllmorvtsrqppnmornkqxxywvutsstvtsuxsoswz}wqqqrtttuvwy|~{xz|zx{ytz}z{}~{{{~}}}||~~}}~}~|~|zxxxz}}}~yssstuuutsvyxwusstttrqtxrmllmnmmmmnoprsuqnrwspmkpvspmjotqnoponnnrvwwIS]_bbbbcegdba`bdefdceggfhihgjmnpliiikniejpnmkiloljkmmmmmiekqnklnruspqrponlmomlpttsssrrtuuutsvzwtuvy}wrrrstvxtqrty}~}{zyyyyy||xz|zyz||{zz}}~|}}~|}}}~~|~}~~z|~}}||yvy|xtwz|~~~}{yxxxyzvsstuvwwvtuuutsruyupnmlklnopnmnpqrpopqonmlnqnklmnoooljkllmpsuuHQ[`feddegid`^]cihgedefghfeddinmllmkijlfaiqnkkklnljhghjmqkfnvpjlnquqnpsqomlllmnoqonoppqtxvutsw|zywuy}xssttuy}tlnpu{{|zxyzxwy{~~|zxxxz|zxvuwyyy{{||{yxyz}||}~~zwz~|~|}~}{}}}vxzyxwwtqxxpsw{~}zxz}}}~xrsuttvxwvvwvutsw{wtqnkhlpqsolmnnopqnklmmnmlifkpmkmpjegjkmoq~|ssLS[`eedcbceca``cfffedfhfeddddgjjjklllkjfcfjiihhijklhdhlmmkhjmmmoqrsqooonmnpoopqrtrpppqsuwustuwywvwxy{zzyxyyyxsmoquzyxwvx{xux||}{yxxxxxyyyz{{|zy|~{}}~}|}~}{z~~~{xz}~}~~}}~~{~|xxywutsuv{zttux|{zyx{~{yyyvtvyuqrtttuvvuutuvspmjkmoromlklmnpnmmmnpnllmlklmkiklhefhiilpz|ttPV\`eeeb_`bbbcddddeddgjfcccdeefghjlmokhfedcegfffgjngaholjjkgdjprtsrqpnlllptsrsuvwusqpruuvsqtwwwusw{zz}}}~ytqoprvzwtttx}xtx}{yxwwxxywvx{~|yyy}}~~}}z|~}|}~~~~}|~zw{~}||}~|z{|}~~}z|z~|z{}{zyyvsqpv|}|yvsvyxxxy|zuttuvz~vnopqstvvvvvtroliflrstmghjkmoqmjloqtojlnoqnkihhigefgffjow{vvLRY]aaaaacdbabcccdedcccbabdefecfijkihijfcccegggfegigfimllkkiglrqqponnmmljmpswtqqqqrqpsusqqpsvuurpsvwy|~}|zxvusqrtuvvwwxy{xuy}zwxzzzyxwwz}|z{{yxww|~|||||}~~}}||}~}}}~~}~}{~}~~|{{}}}}}}||||{zzywusqrtvyxxyzzyz{zyz{ywvuuux{tnprrrstttsrqpnlkjnrqpkfhklmlkklmnoqolllkklnkijlighiiikmpt}uuHOVY]]^adegc`acbbcecb_\^`befhdafkkkfaflgbbceghifddehkkklnlkjjotqnmlllmolijlt}umllnqqqsvqmnprutspmoquyz|||wrtwusuwusvz{}{ywvz~yuy~}|ywwx|ztvxwwvu{}y}~{zy{}~~}z|~{~~}~~{w~~|zyz|||||{z{|}~|{{{zzxwusolosuw|~z|~|zyxyzxwvuwysnqtsrrsssqonnmlmoqspmieimmniejonmnoooljhfkqnkmoljjkklkkjj|ttDOYZ[^`acccbaa``abca`__acdefgfefhggebglgbcdfhgffeeehkkklnmllmorrromllnpliijouronnmmmnprrrqpqrqponoqrtvyyytpswvuvxwwwxz|ywwxz|zy{}{zxwy{{|zyyyyzxw{~|{{{|}||}~~|~~|z}}~|yv{~zzzzyzz{{|}{zzz{}|{zyxwvvtrpnquvx{~|z{}{zyxxyvrrruxtqrsssssqpoonnnnopppmkjilomlifjnoqnloqnjkmnomlmomkjjkmlljiy{rrAO][Z^cbba`ac`^_`ab`^`bdfffffhjgeddddhlgbcegjgdegffhkkklnnnopppsvrnmlnqmihhknprqplijklnsxtqponmnppqppsvvvrnsxwwxyz{xvy|xuwzzz{}}}zxxx{~{y{~|z{}{z{||}yvz}{~~}~~~|~{zy{~}}~~ywvy|}zuwyyzyyz{|~|{yxz}||zxvtuvtrqqtwxyyzzz{|{zyxxysnnoswvusrsuttpmnponopqromkikmoqnkihknquojotokotpmmmnpnlkjlnnnkhvxqqCO\\]afdca`aca`abbbbaabdgffgihhijhgedgkhdfhfefgfefghjjklmnopqppqromnpppmklnnooonnmmmnopqrqpqrpnprrrstuuuuttuwvuwzyyxwy{ywz}|z{{}}{{|~|y{}{z{||}|{}~|~~~}~~~~}}~}{zyyz|~}}}}~|{zyz|yuvwvuuvutvyxwwx{}}}}~{yxvsqrstuutsqqrrsqpqsqoppqrolkimpppooljnrsurppqomnokhiikmlkjiiikmkiuzppFP[^aeifdb`bdcbcdccdecbehgfiligkoljgdgkigike`ekgcfiiijllmoqqrqponmlptqonmptrpnlllorqqrspmnorurprtssvywuuuwzxvtsw{yxxyz{zz}~{zz~~~z{}{zz{}}z~~}~~~zzz}|~yuy}xsvzwuwzyxy{xuvw|~~{wtttvxvtttrqpoqssstvsqqqqrolkjotqoqtplqvuuuvroopmjgdefhkkkjigeimlks||ppFQ\_bcedda_`baadgecdedcehgfimkiijihhhjmkjiigfghgfhjhgjnnooopqpooonnoppppoprrrrsqoqssttuuvsqsusrrrssuvwxwwxyz{wtx}{zyyz{zyz{}~}}}~|z{|zxyz}}z{}~~~}{~~~y|~}}}}||}~}}~~|xuz{vxzwtwzzzz{{{{{}~~~}{ywvuuvvvuuutturprutruxsnoppponnoqsqnquropqqrstqnoplhfdddfhiijkjhikklsz|rrFR^`cbbcda__```ejgddeddfhggjnlkheefilmonmjgjmifhjjkhfkpqromoqonoppqomorrrqprtwzvrsuvwwx{ystuttrqrtttw{zzyy|{vz~}{yz|zywu|~xz}}}}}{zz{xvxz~~{ywz}|||||}~{~~~~~}w|~|ztx}zx|~{yz{}|zxv|~zzzwtwz{|{{~~|}zutsuwwxvtuwvuwyuqtxurvzslmonnoprtsspnrvtrolnpqrpnoqlgfecbdfghknmljiknsy|uuJT__`bdcbceeecadgffedfhijhfhjihgfeefhikjjigjmkhjlhehknqomlklmllllmooopqqrqqrstuttsrsutsvzvrsutsqpppqqsutsux||xz|{zzy{}}}yv{~{{||||}}}~|z{|}|||zyxwz}~}|~~~~~~~}}}yz{{|{z{{ywz|}~|{zzxwz}{y{}{yyy{~}}}}{z{|}}yutsstuvsooprtttsrtwvtttojloljnqqrrspnqusqqqrromllnpkfeddcbacfhjjjklllos{{rrNWa_]bgc`flkjfcdefhechmmmifffeefhfdddegghhhknlklng`hpqsmhijjjjjiikmorqqqrrsssqpswspqspnqusqsvtsqonmnooomlrx{}{zyxxyz||x{~~}||||}~~~{ywusx}}}}}|}~z~|z}ztvywvz~}|ywy{yxxxxx|~{y||ywuy}||yvutrqsupkjinsqpqsuwwwsolilokgmsqpqspnqurpswvunhikmojfedde`\`eefgilomklmv{ooKU^]\_aaaceeecacecbcdfgijhgggfefgdbcdfhijlnmmjhikfbjqpnkiiihghjklllnqpopqrrrqqqsusprtrpppppqrrrrrpnqtqonmptwz{|zyxxwwy{}|yyz{}||||||{z~~|zzyxxy{{{{|~~~~~}~~~}~zuvvvvy|{{zz{|ywxzxwz~~~~}|~}{zxyyyzxwvurpppooljlnprstuuvvtqolnpmjlooppqppqsqpsvvwrmllnpnlifghfefghhfdgkklkkqxrrIR\\\\\_ca__```bea]afdbehhhhigffgc`bdgjkmquplifghfelsnjjjiifdgkmomknqomoqqrqpqsstrqsvtsolmoooprsurptytponopruy}{zyxvuvx{|zxvwyyz{}}}zx}~~}{z{||}{yyzz{}~~~z{{{}~z~{wutuwxzz{|}}}yvy}yvx{~~y|~}|yvwxxywvspnlosolkjotuvutuvutrpqromlkmpppqrqqppruwyurpnoqqrmhikmoljjke_chjmkimq|vvJRZ]```ab_]_aaacfb_cfffgghhijihfdccehhihhlpmigdgkjinsojlmkijjkklmlknqnlnoqrpnprrsrrstrqomoqpoprvzvstvrooponnnsyz{zywuvwxzz{{zxuy|}~|zyx|~|}~~~}{zz{{{~~|}~~~~~~~}}~|zxwwwwxxyz{{zxwy|yux{|~}z|~}}{yxwwvvwvuttsrrrpnnmqtvyvttuttttqoqtqnnoopqrstqoprsusqpoppomlkjjkmjfjniddehkjhlq{xxKQX^eddba^\_cccegdbdgikighijlkjfbdfiljhfdhligechnmmptoknqmjmqnlkkklnqnlmnpspmoqqrrsrrqponqtqoqsy{vutqnpromjhnuy}|{xvvwvuy}~xrx{xxy{}|{~~{~|xxy{~}}~}~~}|||~z}~|x}}}~|zyxwvvwxzyxxxz|xux|{{|}|{{||}zwxywuuuuuvxxyurqqqqsux|xutttuwyrlt|wrpnopqrtwrnoppqqqqqppliknkijlgcjqmiebfjihlqz{{JS\_cdecbaacecacedcdfghgggggghigeeegjkligjmlkihknmmnpmkkljimqpooomlorqpoorvropqrsqpqrsurpsvtrsuy}zwwwtrqqqqppsuvxz|{{zywv{~}yty}{zzyx{}|z|~~~}~~~}{}~}~~}}}~}}~}{}|ywvtsvyxxwwwvvuz}z{}~~}}}zvvwvuuuuvvwwwwvtrrrtwxzwuuvtsuwsosxsomklnoqrtsrommmoqsuromlllkjhgffilkjhgghhhjkt}xxJU`abdgecegggc`bdddefeefgffdbeiiifdfhlpmkmoopnmmnnnmlllighimqqrrspmptttrptyuqqrsuqmpsvzvsvywuvwy{zyyzxvspruwywvtsx}~{yx}|yw{{xz|zx{~|zz{~}||~~~}~~|{|~~~}}zxvsptyxxwwtqsv}z{}~~zvuuuuuvvwvvvvx{wsssvzyxwvwxurtvtrstpmkijlnqqqsvpkjjmquztnnoljjkfbeihhikklifgigfnw~uuJT_adcabbdgffc`digfeedcddfgfefhggffhjlnlkmprupllmmmmmnplhjkortvtrsttuvwusuwwvusttqmpsuxvtvxvtvxyyzz|}yvtrsuvxxywvxy}~zz{{|~|xz}{yyzyxy{{{|~~~}~~~||{|}}}~~~{yvtruyxxvuuvvw{zuy}~{uuvuuuvxyyxyyxwvuvxwwxywux{ywxzvstvtrrrrqqpqstvrooopqsvtrnkklllhdfhijjkigkokhhhnt~ssKT^bga\_bdgffc`gnkhfdcbbbeiiihgfefhjlllkknrvzrkkllmnoqtojlnqtwzuqv{xvx{xvvvy|xuttqnpsuwvuvwutwzyxz|~{vuttuvwy|{zxv|~z|~zv}~yz|{{yxxxxyz|~~~z~~|zyxwxz{||zyz||||}zwutvyxxusw{yxy{upw~}||}|tuwvuvwy|{{|}xtuwz}yux{xuz~}}~ytvxxxz|ywspruuvutttrqqrtvohknnnjgghjlkkfbmxogiknrrrJS]bgdabdefghecgjgefgdbbbcefgghgffehljhkmlkotqnlkkjklorqooopqsusrtvuuvvutvwy{vrqprsssttsrsutsx}yvx{|~|zxvvuvwy|{zyy|{xz}zwz~|{zyz|zyyyyxz}~zvrtw{|y|~}||{{|~}|zyzzzzzzwtwzxwz~yty}zx}}wwwvuxz{{{{|~xsvyyzwuvxxy|}{ywvux{xtw{xurnqssrtwutrqqqstrpooprmhjmkijkhejokghhkn{~rrJS\agffffffhjhgggdbfjfcbbaacegjihecglhejpjeinoqnkihijmqsusqonoprtrqsusrrsvyyzupnmsyvtsrpoqtsryztw{{{|~{ywvvwz}|{{|||ywy|zxxy{}yvy}|{{{yx{~~~{}~~}|xrlqw~~wy|}|z}}{{|~~||}yvxzxv|}y{}xt{ywvvz~|{{{}ysw|ywvuuuy}}zupsw{xquzwtpmorpotzwusqqqrsuxtqsvoimrlgiljhggghgfhju|ssGR]_bcdccefedcba__^bfc`aaaabdefedccfhfdgkihijiihhgfhkklmnnolilopqnlorqppprttspmllpttsrqnkorpotzwuvxwvxyxwtqrsuxwwxyyyyyz|zxvuwyursuvxvuuuvw{~}z||zz{zz|~|~~~|}}{{{wtpmt|~~|||||{{zz|~}||||||}||zxyzwuwywtuwtrz}yxwtrstvxwvwxz{zxxxvuttuuwxwuwzwtrqsvsqrrqpnmnonmnpqrpoprqpqrolmoljmokgikhefhgfedefr~zrrER_^]_baadgc_^^[XY[_c`^_aaabdcca`bddedcdfiligdaceddhligghjmhdionnkhkonnnnopnmlkkkmpqsqplhlqnlpuuvvvtrsuuuqmnpqssstvvwy{{|zxursuqnmmquroprqqsvy}yvwywvtruyyyz||}}|{|}||{{zzzz|~|{~~|{{|}yuuvspoox~}{yxwxz{|}~}|zx{~}|{zzzwtrqpppqqquztoqspnpsrrrrtvwx{~yutsstuvutojrzyxrllmornkkllmmmllifjonmpspnmmjgghjllmjhikgcfigecbbco{xrrFOYZ[ZY]`bea]ZXWVWX\`\Y[\]^^^^^^]\[]`][]_cgdb`^_`abbcbaaadhebfkhfdbfiihggfefgfedcfhikjihhjmlkmoooprqppqonmmmloqpnnnpssrqqrsqpoonnmlmooonnopnmpsqoqsqonmorstssuwxyxwwwvuttuutttuvwwxz|{zxwxy{|zxvtvxxyyzwtturoprpomlqvvwwxvtsrrrsttuvwvvsprtttsrrrrrolmnmmnooonnnonmnonmmmmnoqsuronnnomlkjgejomljhgghjgefhijiihggfhihgffghggebaabcdfcabccbcddca_^]enu}}vooGMSVYUQX`ac_\WRSTUVY]YUVXZ\ZXYZZ[VRV[WSUX]c`]\\[[]`][[\[[_ca`dhc^]]`dcca`][^a``^\^abcbbeiiiijiihhknnnmmjgjnkilpmjhfkpmjhfjnnnkiknlkjiloljloidfiiiknkihhikmoljmqqrpnprpomlmonmoqrtrqsvvvutrqsvsqmjmpqruxrmmnljlnnnljjknqpomllllmmnnooppplhijklkkkknqlhjljikmhdinlklmlljiiigfhjkmkiijjjfba```beb`becabca_adfhfedcegedba]Y]bbb`^\ZZZ]`]Z[\_ba`ab_\ZX\airux~~~{sllAFLORPNRUWZVRPNOPPQRSQNPSSTRQQQRTPLPTQMOQUYVSSSSTUVVVUTUVXZYW[_[XWVWYYZYYYYYZYYXXYZYYYY\`_]_aa`_^`cbaaa`_adbaabaa`_did`__`abcb`ceeda^acbbaa_]_a``aba``abccbccegffeefhgfedfggfghijihknnnkigehkjjeaeihhjlheddfhfddcbbbcegggfecbbbdfedccehd`__acbaaadheabccccca_accccccc`^_```aaaa``__`a_^][[\[[[[ZZZZ[[YVY[]`]Z[]^`^\\\YWY[YWUTTTTSWZVSSSTUUUUVTRRRUX_fmsuvwxyywtvwwwspicc;@FHKKLKKNQLHIJKLLMKJIHKNMLKJIIKMJGJNKHIJMPMJJJKMLLNQOMORRRPORVTRPONNOQQRTWUTSRSTSSQPPPTXURUYXXVUVXVUUVWXYZYYWUVXXY^c\VWXVUWYXXZ]]^YTVXYZVSTVXZXWVVVWY[[\YVY]]^\Z[]]^^^]]^```__`a``cfffb^\Z]`bd^X]b`__`^][Z`f`[ZYYZZ[\^^_^^[YXW[_\ZXV[`\XVTW[YXWW[`][ZZ\^[YZ[ZYZ\[ZZZWTVXY[ZYWUVXVTVXY[YWWXTQSVSPRTTTQNPSUXSOSWXYWUVXVUUUPLKKMONMQUPLKKJIJKJJIIJLMOU[eokhgfmunhlqnkhf`ZZ \ No newline at end of file diff --git a/2004/i/nono/src/ovision/test_ovision.cc b/2004/i/nono/src/ovision/test_ovision.cc index 05647fa..8d517b0 100644 --- a/2004/i/nono/src/ovision/test_ovision.cc +++ b/2004/i/nono/src/ovision/test_ovision.cc @@ -1,23 +1,29 @@ #include "ovision.h" #include +#include int main() { OVision ovision; - ovision.TakeShoot (); + while (1) + { + ovision.TakeShoot (); - /// Analyse une image - ovision.Update (); + /// Analyse une image + ovision.Update (); - /// Affiche d'info sur l'update - ovision.ShowInfo (); + /// Affiche d'info sur l'update + // ovision.ShowInfo (); - double x, y; - if (ovision.GetBall (x, y)) - std::cout << x <<"----" << y << std::endl; + double x, y; + if (ovision.GetBall (x, y)) + std::cout << x <<"----" << y << std::endl; + + sleep (1); + } return 0; } -- cgit v1.2.3