From 64a1d56e2fc4d7153f123bed86de38b9c590392a Mon Sep 17 00:00:00 2001 From: "PC-PAUL\\paulf" Date: Tue, 4 Mar 2025 14:02:35 +0100 Subject: [PATCH] Ajout de la page de connexion --- em2rp/.vscode/launch.json | 31 ++++----- em2rp/assets/EM2_NsurB.jpg | Bin 0 -> 94394 bytes em2rp/assets/Google__G__logo.svg | 1 + em2rp/assets/google.png | Bin 0 -> 16277 bytes em2rp/lib/firebase_options.dart | 29 ++++++--- em2rp/lib/main.dart | 55 ++++++++++++---- em2rp/lib/utils/colors.dart | 8 +++ em2rp/lib/views/login_page.dart | 106 +++++++++++++++++++++++++++++++ em2rp/pubspec.yaml | 5 +- 9 files changed, 198 insertions(+), 37 deletions(-) create mode 100644 em2rp/assets/EM2_NsurB.jpg create mode 100644 em2rp/assets/Google__G__logo.svg create mode 100644 em2rp/assets/google.png create mode 100644 em2rp/lib/utils/colors.dart create mode 100644 em2rp/lib/views/login_page.dart diff --git a/em2rp/.vscode/launch.json b/em2rp/.vscode/launch.json index cc069e5..bafe1d0 100644 --- a/em2rp/.vscode/launch.json +++ b/em2rp/.vscode/launch.json @@ -3,21 +3,22 @@ // Hover to view descriptions of existing attributes. // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", - "configurations": [ - { - "name": "Launch Edge", - "request": "launch", - "type": "msedge", - "url": "http://localhost:8080", - "webRoot": "${workspaceFolder}" - }, - { - "name": "Attach to Edge", - "port": 9222, - "request": "attach", - "type": "msedge", - "webRoot": "${workspaceFolder}" - }, + "configurations": [ + + { + "name": "Launch Edge", + "request": "launch", + "type": "msedge", + "url": "http://localhost:8080", + "webRoot": "${workspaceFolder}" + }, + { + "name": "Attach to Edge", + "port": 9222, + "request": "attach", + "type": "msedge", + "webRoot": "${workspaceFolder}" + }, { "name": "em2rp", "request": "launch", diff --git a/em2rp/assets/EM2_NsurB.jpg b/em2rp/assets/EM2_NsurB.jpg new file mode 100644 index 0000000000000000000000000000000000000000..06ea79cc42841f41b47d36dd15242cc795da6c2c GIT binary patch literal 94394 zcmeEv2V4`|wtkQj0U@9ir9}lrK|rZW3l=~`q$r@EMCnDqMv;>Ra%fx7gz#$MOR`6=SU-18bF>PaJVP%7EXXoGqKTyg8*#@3_8w)clD+>$w zX@Bs22n#Rk&V9#Dvh6ay0o{L_Pd@N*+II0%MGgEWT|@~5>pMa090G#7_Xr(0D0%3x zl%kTd%JCDbr_X5X=$_R(ckz;`nfc`_7B;qa_709t&Uf#5czSu?_X&Ow5*qgKQFv_J zllX+hr_YkoGcvQXb6)1YdQ)6dT2@|BS=HFo+|t_i_TBr>-92A=`}zk4$HpfnzfDcg z%+8TkR@c_a8^Gq)_jWNsnE%kMKep^w?cxR7wT%V5rO@x~V%p{fF3h|vtox3!?L27= zy>WZje)+)de5W3#6*aJnE0_@Zt?zVk2uLW79Uy&g+D|R}`x+MXpK9438}_Gm4MKJ> zGl36}nHPe90Fuq4EAq~x>of#C(z&BRZWsFPyF7H?8UwO*EKm8xw(vv0{ZfTxqFw}| zi1)Q!Zu3uWi`OQj@(Yuc4m5`Cc(Hh^QIX~7-o>kH{O!hC@C-ZzPbl!oe!fEt zPD@jl9gNLm5h6#2$FZ&_eI2`sS>A`-xZ8mW^-};^h;0)B5n^~^cWae>t>cVnNX=+n zghuA0*CedHk;`Up0S*fEwT!~n=iT|d#ha6&!(I(4&$unP3GET=u`}GewwI{OV*R|H z9^;5>hXufiX72nmu42IyE$@3SWTaGfY1aNGFCG!NvY2?H<}0H}F=2JoL#hNoA|_8H zgeGk?!G$in@Wy{Ao1@4Ubb2JPH9tgUKwnDSy#)2w<}+gYw^(d|yjC%Oq9#V=p`YEj zhRT_4nbujib@li0HOaKw2f(PczX6Rxihm<#mQU?X&3V8Y_xi`x--% zs2d9Brbcgvj?nj#1Omql4*GjFZ+(f5%dwQ5EnIdJ*qtG^)XaqBqWUo)L50-gM4u5y z1oN612~{9A(|xJhEX*Kk%gwksF2G-zd7ucHj1;WXq+SJP^U*i`E|5y;g+_6#d7AB( zH_74rjgmb(QYZVcCKY0dqzrO2&_dC2K8Ex&BE|RSaFvAWTe38pd4AAgkLGU-j#d#V zQ|n7I);`P1XRP&`FE_o_=sJrqdZXFsmXeEDnYt(gBJLT+fZULFrwNtRhyB$78S|T8 z-!Jchlecek-F{+p0bA|ZHD9Byb!jsg>$i~h2F07I{P*@^J{CK^fYs5N7?6g`n)|%X z^j$e8vO`mkbhC-8md0FG+8(y?{HS;`10tfa;$uF8YrqYv5k}i;4>==uP+jd_zR!EM zwkiCswj8nc8QK&`|HOKMn;kb@S2(lPTRb*=PSmDpt90oZ`ewseRdI#4{iCo`g%9Mh zx17GhW>v$fkpPqdVKoDC2@a*7=n765ty}We%5{IcE^PR_FOM5yMfMYmvTELH>EG8xtE;{x^zFitvHaCSgEoi(D?ihMtXjtG2T}g~5a!R7=ggVQfLv1Ecw%e8Eg)>%D@sZ9&Wyu*z078Td0Kz^ zRS6r~Cxy|26-kG3A?e|Vez&Cn14X|bPGdm&&kZpkIt4bpZNd0Sw@(bn!U0zXB*W|} z50FgPF|efLa~P1Ws4Jyeoie?Tm|q_PQDrfm|KmxknO8*ogPS8opJPSVUe@YJ0St9sWNm6M|atn4IxNJ6MJoWYH^iAU(HDLoM+fdT0qZ89q{$jJLr1_Jy zRKKGMo(-O|`21!ud$&dY@7C%DJW*gVx(Q|PO( zh%{kE-J<$~?Rn*QiL|Bwpb6vzb*`+lEf%zA4n5xtwfYCReHU44MZ9F8v&dGtK@~!0 z{WWzf5HPkxKT~M64Qeoae*ZWFV$ISXV<`NPa~YY!fWXm&d^k^yML7x%2&ZAT&%Uu& z`hqi+?0K$Xd_R1rE@jg5`h8r8QmvN-NjCR(0T5wc^F>KGdsO4g|v$h#U=x3tf#f%*p(;7XaD*Bm9$MGor~lZRSH|c zLcMKF`{a&m>R_D?GzIv^1jJ}`Ky12@I^L)0?2DAE-fiu%Lt{!GpSeq3S$Apo)yn9} zz&}N^D$NfXQg`km2UI<>?N#?DsBLS<%Bm$-4j87<8ZmE^JekKVq}RmhBJ(6^dW2*s znz(I(>MV=}#PKbr#$-f99bbI)BN;a%)O95R=2dby1!)C7rE~Od)vGd^@rB;PSL!!! zl=T$ukFP>^I`Tqk>w`7e7WixPMb|L}ac4N|y35l~*b%4hp^;p%jCYTtHD3rFfd&{` ziX9}nN7M*T|XvTZ5_go zHMZ|UDT#@M2qiQ-XoDj?<7}JojYLgb3GSx{bUnnwY2rUw9U%ZpO0)j#(P88bZ$58| zYREsA$MOL^9o4!0E7`SR24+FMkpA6_*gQTEWgGRStKQD;1dG@Mv9&qsUI0dMqoQco zmeglscz)%Av7ys}Y0i{F88h{jq7^Z?Ya~RSu!{YR3_uc1Is*~A4+ftk-RvZ2pp5u$ zd^y1O(QB#bYXBeoGCDOay0z*oDWw&Ei?$m=ev=!sD(-^4^t%i+R% z*syMNBh%RQ`~9;k2|cz*^D07`=HrmIJdbn&Dv^4RR!C>1cP1#5N2}jp*{YITx~FkG zB4XB(lEpWU*vOR9SPeiQM@j;!$peqnV-4>b_k874O~}f15ejL|%Xb!3=_|jpr%=|- z&dDym^T6}|*yhyClrPSQGXLSbXcbI^j+teViYEj^PfFKm^3s|3TXU}<5VrajzjBg3on4&h&>VGO zqmcm-n787obkoji5G13u;5%_WZ%5Bjs={9&1nUl?8;+u#aAC6tHbU2GRa(jH?_7l@ zTpKao2L_udI#>HXh)EL>ku~fu(RSY5ja6k~ULW`M9GMJ^RwW$YLzUjr%E#~YwrtXr z@0ubqAQ3fc+4DZv+P3C3bb8euN^E5W<*Z~~MwUNc=o}8^Ufm5?f;SIswj2l{=Ead9b~}diiL-MfA6C;#1<3hkI)C z=9c^W=s@QQbU}g7p|BxL-S#Dcp62b+q$x&p z3vn33ayXXxT!_m#v#+$cIK(=fPc;70bswyWp5kZb31lFecy2jZb6cp4<#@{^U9I;P zd%1t_);&qu)1KuRO0^B`G13|^Zy4D{lzl7~NWkxy^$|!Gly=D(%&O7aP&0z)Eg4GI z-ZZ}S%YMn`Svxig12PQabV&FpB7Y{hx^~X6$XLuK+4Y-d>Z*Tm{X8d3^F;JD8t#?{PTF%0ZnHU~Uh7YQduK-yT z1@B}Eymia5;&b6s2E=~e>;>o|ZZUrmxjv=bw8Pf+1_pB};Kzr{2QmAVmsvD#(=fWC z;)o{iECb!lyz|@revNEDlT@gYN#!)OA?TJ06+8W+v;4B-{L8kP7SY>4!(oU)7LT+e zwgI&{UBSz)f|oAdwZ3r2Gi_f+=Uw5$8uM!yf+UrnnUL7RR{RMiE)GDE*qgpMiB-i} zTk!TxFtSH6Fv0fT^9)Ga|tTF7V(+pTON}tX5BBnvqQCJ_os$jzNPy)2Uiad zWI#$C+F%1@q8@Rh)$4F}F|+bx-{gor=*2h@kn(WiD6f-V^CG~h{HMp@&8#J#=yI2_ z+ve{)7QU9?R8o1BRQ;iK<|Ja2)x0{jWC{9J(bPcB>~m>{rl{qao<${2>3A4dM}GSe zlfyHnJuyvRh04$W^C8>eJ@I_iuT70(4Ydw2IZ01pF{4Byxd1rR6!uJP!O;`A+dfi zHopE|te#?&;%9~G=N~@Y(OZ{T&+gLR`=9k3AneDPCHj^-7akF_=sV~i>6}FEZ?A(* z3^d$JCEE6{Ol-W#U6-=7M-SjyVFQSMz6xK+NrL98iPL8QDB(FY2Zb~g~^u9nicCl=)rYEZ@=A4kJy`Xt1}QAAA+hhl>kls#lOUh zF+T?a!TGm=0pY7T@X{OJ<|A5Hkl}oL(@S7gZhViSsmF1trWmdLcmedy<^Iv;(Kp~^ z&AJ|}p9=_Ie$Ifr@z^O(6vNwB)Yr#wM|IV|ZD4_Y4WFtLr>YULEohcGka2O%K0wFh zYhAB+RE6`nhiIIumw!E@mHDNfe#a4KPRm9+jP62p;Q5u{VOuNh8VRWGj5!&xFLlM% zo@dqEc1zXYv(qTDGB)|;l*MEz#?62{u0G9xypAuYM_IJ}nmatY??)5uqW=Sv|BnN+ z--(ZgzVs8IWziM=n0i7snvlX)S1eD^=*cHm7u=u}qq<9Qa^em(UStLwq$UV?ST4UC zqGe&EYF#vRZsClBNvRpu;0XhAKTQ7g+P)_q!^qgRixu$CR$=2@oGn7v>MF--o!d;i z3uE+HhvOR!cD(Z8zbC=Frj&;4M1Z|uka>KgKFUc67pkdP_c?l@!``x^q*Ao^GW^iM zdh1vZ&wX4MVt@gmbF>j~y!k$`wqX{)#c0!1DN0#6sTFxq!tWjXmOB(%{i!-|i&NXy z+q{J?K)h&zeP26?84Za=;)qO4UTcK`lAW>*%bWa>x&1IguPQ; z9+@2fB;erL_)=6)G7F-av?Aeb`#9cI=gLz86LQ~A(X6L_?0^B+NF2cz2N>4q3fP=g z90(|iqHHE!meN{_)HD?FfP*m-IKs6PgDu(7=`arG(~NpyyU?ZR>Ede*qpt5=2C+rm zSiA3EVb+F@Z9}Tm$M!!+iaonlBP^^cQH>S6XR!+OQOiLZU3QlYPxWk85$ z;Y@|OB>h$-udK{QVPK|iPUED5ZMli<#HWS8uuoVE+ErX6p75lO6$3*4V)fKR2|Thj zmW9`>mfJce&j@Vqp|C}p!IzUL%DLZB&JXOb^f%a$AbFjLTo`k?O<3kAz&}Lo)#n+o zsYv!euA(P<#dqQ{j~Zsr;C9IvS}orF5Q=@MlZYMDSg-AjcC$JB^4f&YOqZ%(rl&&8 zNeD56C0Yyjw&1i;-4|R=PpSU9rKP1zCx_JgobROLVn4LS>Mc1bL-j~%<2X#+F`#U@ zb(FV8&m-Tt{N{yC%Z*z&$MKUZt-)_zGLxn%Rl(o|PKTCC=X4n@fwn|(jwJ+7>C!Tk zDf3wdjUPKsB-spw%%!#FTwdw^%-YNp6t-Ybfgrgoc)id`Rg z?+!B{y=91+fR&O@a5I3jo-P8o5QgFPDBdDV4e>Lj`udl{j9zK3iY>GqF}$N!uyyFw zUoyHs?`NKd4dsy?OK2IITqCEm29`)(q4DdYY-gD76+)L~Ft6TbFn2YIHN%^9%%YM` z@Z}wDI=p-DmJmH5kK{$?xJKMlx6{uD+p?t{5Y{xJZvI7PP^nSZd%K|V^?PdJ@75Cg zKVSEY(&qaU;{6|pbbpP!nTDvcKp*KMp{`i0n%Letm=JQSP;?^H;FCf0=f;8PlMC-% z)(`|iDu3R|FH^xy3`hwqR3}Q|(8)rl?Vl|L)|0mBw`zRCf8usonF{w}-clnXnqe$d z{ZIQyh5_mqv*))iO}-kweD%o7-5zEQ?_V$Fuz2x*GG9$2PLH=WV;=atB|)2zd*)K% zwG(#-Ivym7vOG@73?2yN-+~cgbdDjGD2Fl7(h4@V?)Pk_@9naAKb`YTsqBu1UL@9b z@d5$$#Q17k)99m780gO)9(ND3lI`}OouFS-N*SY;wR%?3Cf&)GnXhU5C%E8ONo56D zGpep1iwm92s{BJz>|G-Aa?K8b_!kQ5XGq6|EB0n=C$Wbv7|?xGLzHUpAXa?c{u5 zjB*O8FWD@&`@*12-Asv#NW%??NWgyRRNF>MvG3;!c-D6_OL&Q7q3>zColaFSBav$= zwaBseeQrwJPNPea?>hXg0u7Fq8qYRZ%RdXpp`Z2E{jHK+}j%h-G3 z3FYnOmD_*+o&Lst~C$yX_6R2d{p7a6P~H#j}PDu6@v1t8!zD!J+=aCI=^u7Szk$b#ji59aKGAZSKad1Mo(vfEFY39JM<9HAhIJ!sG?W4V*OV1;Bsh_Od z=P#Lf!~V0ofSIFVJO}prowLkGKKOpVeoHkwH`m1{zPBhJY3S?kD{XlD?(Kc|4?K>( z@(d#pdpFM1F+KCUa|QFGJwiK>X=!!pj&$Lkd@D4!6N~d8sbRaT&5eip+^H_{7fv)- ztJoUpW}g69E)8kI*}OS~G6AI&3A?% z_|?scBbyQL#)d7X8f>L8%8GZyW4If-U10Y7Z9RW9F#ijT=g)0r>H=WnD$(@aE{}o4 zv5g2N8D zq@jJ5Jx||LByBeF+D8%TxKQ+N&D~V%E_6A4572GUw@@$UFknZUJTW8jlm5&2S`_-Y z7#FE65+ybt10>du9PBBPG2z}h*Z3_hPP8W;A)j(5XYU682BsbXNb82*+wEF|Agwk@ zHVeExg?4jter(0Mp0MlTr1+O}VkcNuK}(urd==h^i^j5}l$~tM0Go;DDpw=--oGAh zP|o8}5>qE}dfoWix4*-V=41GP>P9-WE1M)3>32G3rpm73L%CNU=MH@aWScdc|4U}8 zV!zYlhA=>1w~_=6SIU!-JYRfmL(nTO-&hARXup>OQ28D;PHfN=b{U0Hp~QLb1iE@_ zQg3Dfcd9U@tL5>L7rvXpE(aE-JzjIPrFZu}J3eH?dHC_&q5Fq-YeWXsSm3SEghVXF7O)}OBOj&i?e>fE zZEKOWUKQMkna#!S^MCM6exky0^=-W)thiv2P*NV=+shZe+elZ$vEq`^Q3&&kZJFue zFMgN>{z_OEu?J6hB?fipp!ZyKDYAT0PBM#d%FPRGI+sj{ap>ESGA!l*$arG}p(vF< zdZH1{?dK{Y-ci&eSMpARIW|sLBpmkoXc=NevvkwTDKP)<9o_#=$RV5oWQ)~7 z;)P0=ad+ta#+Gb>?a<=#O;B8#p~1c9>~ZlRRi3lz=3f~Q2pDq~(ZpEI&1)DH?TBp=?>LGoYyI<)LdQc`RF4FUQzR&W)wR+mE^qLGp;^JwdAvv%+ zq^}7pWO>!kiI`H#6O}jr0giTA~`)f$p|CPT+1@`?#Sf7$Ep`@9jyMyZ*O|Bt;0e z-!QM=DQ!-ZHs~A!9BsEjOgk{$*fJ@RLzNKfu{|WJ!1Z!6bu80OEp2gggCq%pV|2vU zDv&sC9_gWhqP^iQoH`Pd3(9IRu}TbxofcmqbOztH3`m;=XSaELKiqPYgK5>fD33+! zgV6*27SbqDTEvq!Fq%qT0SZ9<8m4vlw%x43r?UE?dI`Sc$|itJcq zKE9{pHlIlaNGALSfqhVjT~`Ylm&>zwH(GwaY)z^A!Xl?}9b9Vb_<=s?@8+g-$D1`?`HI84Dr|2Or%jN|3xjK@`b$HuO6_L7=F?z!{yZC7bsiJPkOZ(>ev@RQN?a)6X!Dv_<@y`C{{ZcD0t&1>L9J4$d^yiJrN2bUrNEvlVc(o1-4m&Z04T!sco7(T*{ zTC)qQa~Y7{%q^|1DyocLX`Qn4eRx^@PV+a>-S_r|?WIXCzyr|4i@0b62fZbYs&!+6 z0fAXAMn-IUIv;DJcl5HyV78ohrzVFPEkPFw_{XqJV3cY(0AI2{3mZ%|D-#+s=uCGW za>Z$ox1DQ`rdukjjn{qzeFAe%(Np>Q6@E7DYBhy$ z-D`h<+TcXpLF#qDf#|N4+>GB@W0&n{W-R+na2HI~22{50xo=5(V&bh4i2I1d;E84! ze&@bjGw9;wu#0DkAUWibf}I^+`(~?-pNKxH=00M$hx2nCJE-1Kzc#VxJkgx0OgflV z=tDa& zhecfo2)N%_(sYX)kKs7(p_Oz`>7ohYTcO-Rxe~O8;8J?@`xl26q?6O*|2Ree{Gk8Y zYyJ%=btjyD!Mqtsmasz4dW85PkhbWCL(Af&v{yT1KX8qPmTor}ed`Uz1NYGm2T~-p z`AmN~qM3*=DqlDGWS`~%iy^8f;EN z6VbYnkq`NzzS5{nL7CHQ@Ue}BFwjMpsWLd-fQG6gT<-G@i+<@b@K@LUa-h;l6h_H3 z$3gg5jROw7hA?TFLYVY_MREQuq3bGqFzBNiI9cJxqf(M@OFmG#k#MaaVH*>Su?Ysu zSHB^usR5aJ>tw55Zo*SvSwrE`kxNz{k`b(xBeV_N4MqsxS{vo#Yeh2`<_IfWVyrT zkNi%R>64ZTUuw&O$E7n#qhT+u3-p;ktLxi|_EgIkWd3yg)=>!LHu7NCc~~v|IJ)5q zO2WHr#9xqr549$`rsTe!GmlI(pBA4wlzHFyZVb1`28$S$3y5eDlOToWDOZly`Wp2r z2?sxO!xdWHN6vlJ%YXk}>wfr`{rorEHt)s~4GON5;D?0kyQXmgD`|H{uW3i=SizJc)IiR<&1i>+vII^2~WTz^~8@_p(U3)%8qRQih zwJx<7>O5UJRc8jes_7sOqFMl!Bndr`W2cO(gw~wB!GKsKS>Lldpuf?j{w|RBPdSF! zXpp+L#9<<*A!?)=~K^NuK_zY__+v*)rc z@50GkmsSSE1}_8`qkjP1;gb?mPJO4!iz@EiIbYWF*4psS`TGb9^0^<0*uUa}b5OxE z1{I(_?{XQDDyF4U59dvv?@}HC9%y|v@M$`xHR-{dwnNw8qr!XAmLTP%pKVv&HmW!Y z)=ax0;J%P&ePl7hm0~(XechBgloFZxo_!J7Ir_*?I}fOCw!nsaP_nCfN_{Kc-KN~$ z=!*;3Y{uyYCV%gE=GmwZbd?@WQ7W1Uizpci3)MI9`Fz3?i)VSWJ^S=RS9R`I-?KhT zVwhpY7nC%hU{Gq(eH92cd<5C^PGvhQNWIM+N`LuFnG8&nR-|++lirTtTYCC(Rb9^C zWpx|6?~L{0=rpe0nbr(8HF_S|k1raK`9ElhY{;N z<|FICW6ApCm7E4kq_6p6?ceLb-S=8N zMk>BQ!_s$nM~s_}XO^3p(Jwr6YlA!1#(fLXOpcxcy?KiOgerpY3XHBPcz2H>jPeIlI*yZo9bSrujf-jF>K*&2;##MNf@x0TKwlQstXWyD+6+otr}a z3=RcPgo)lO)4d=B-pjG&MQ49UY@th_zKHFqtO&#!60y(5IkVfC(%==-^y(7bnd~}i zTt6H*fUQ49oF*)`wYWNeiL)flA1NE_V-uBE-`wjZW+NDr8sdjPpAbNC{x!Kc4kpeD zl+v&i`N3J~gS}t;^c?nFrF}b-a0;Px5ip-9MP;BHY-&!G(Rl#ZG1KI!x}H)_vX<{j zk+baZD<3sO@v_dB|42FfDxb6z^Xu_){q&C+Y`uv;;Jx35xcEJ?$p3}sU|(=ATx*~A z*Eg*2mMu7-Hx|z=bb>D^A7;Is4UYypCj$~m21AdUP{3wfYbAlc(qlPSq`hH{k6>2~ zj0-u!c}RWH4mUkj2g(A1ZqPs9_LBzER2nh-bJ;L1@9{JGX7LP&hs!Hig7O+t(OTaB z%zc8bB6LBN??++ne>k3zF?ix7%%B`yK&9o7CO6<xDFq*9AD4IcyLOFlqiEC4xX#4n7u0P+px>; zb-HF$RBpnD^`+Gels|GI49mhtdV7^ZcUv3fia0||jgEswCzwCiG?ATXSaoTNvY%`> z9S+>nz3tWVu^{)puNa;51RAr!ag_g3T&b4m9mBjo5B$MnkVLalLA?T0mjxmuBUza) zO8m-ULtkuO)fdOMBE(m44_!b>hMW8DoG85W^24ep^3V3Y`I4*`IgKFAq_ee^0sVBP zG5#Ze6w>^9}0yE{B z1^v?~tgjIz+mpe7JfJikJ>vDg->gR_?0w=n)m@*?LUkGlM{)Tso9_Wv61)}8?&p$4 z)gsE`WS{3dDdc~8ANK7w)wpWSyWj4LAQ zB_nfkGQg+(;0a!whWsUwZsyK9VX87Irv_)tW#WXOdu zLNfE+SJwhO44h|AR@L5~^U>YCC`8T3ZQt3}@AO^2_M`AL-%!LmX|w^gqtEY}=cUu> zv*jww)oHvsotV#M^WX5mVYy};V2*!N{xE+rd%%DEUD_v^&1u_$I&{;!Xzi`nFJLV) z<|fs>9{L?NM$e|I>MCNVoJ78*>RNwj-ipu)6{BZq< zr%-;!^w6P2*0v)Vw1gcsx1dVq%;eVaO$?!r%BM?q0V-YGxuzoo8wQ)7UIEh;dE|!z zz_J2{*u#CF5-!fA*F6my7k+6nK4_bC_>%e^ord@)E8E3`4hJ6iA?5FqmmrTt(}9kj zuBIL5tn?(VzY0Gg5m(RL8z7O7+z}J$XNfk z5D$rf6G|%#2w0ruuu47hfpYO|9dA!!Tit$8|8nnHe8GPAD~0#3`s&tDnBG#WX=!-p z(TLHK>=JiBkAh9rGxF|5pB7d{<8f)6DQ~GM)v;ewu3u-prO`n=+&Y#p2VKAhj1v#wLli0KP;5Vz7_G}=316^(RG^IR zRuFuvTY;P2SzaSKu`J@vy-GRVpefs{C>?ZC-f82F)@97K2M(m{r|_;texR7xPUrBT z7y(eb!rDToI>pylVbT^QVs|iPhcKJCCCdDqVJMzx-Wlps^LPL(LgZ24?W5b6+#!Fa zuKeQHs)XN#~%EPHE`3qPT$5HpgzH54_KQ_5ZE^^aTHrdm&v7_>x8^ zBpaXS5m(2}@M+Bj)eGdlsL5S();H6r+P6R)GAIUypn?ifpX&rdWYn)XjbV46skN^y zQtp%R)u`T&x*ccL{sQ#)O2{1Q#zf6A7)cqMFKsg;b`1LwFaI*<7UJr?PC$Bkfui~4 zOAXTmMaP=$MrrXg^HjZq-!4F3D|KA~Eu1;R&ZU6vMLnpTd>f;td$Ag45L<5O=YeZ| zf2aapWD!Q?PbOb`v#QyV?L7x(UMbVCdI9bqRqw~;82a5Sl>VNt-RyTPHd@lw z))^APr^x~ojmyZ7h}`$YJ1bbe6n!ASbl%q$rvMgLSOeU_3%Lh0y=daXG~<|OG!I8> z3a#{cgmh!fIIH%fhqd|FC7a-Yl=(vEL{vhZRAsL^uivfhUu67-?A^7KxB#)GTx8_; ztc5OY5bBWM2_VjeJPH9O&h(8l-vyIJbQM6;j&L9kDKc&Y|?=K@e)u-uamz})JpJ{jwI7o1M{+lf!r^fmv}!ONgb zY}Oc=gomLCMLchs+({S5IHlJT=Cx|xYR5Yd10qE$akpT9#vuixr?{9BupJ@j|zVoWn^Ag4j>C<)tmP0*~@ zL->S5RZWUso!PFlFH(+*Lf|33=G3E|3vmp{8M!9>6Fl{r8WW(Pjao%F?V!Iytev8& zZGtX!OBVyOLxCazW|(pkm%qs|Ac7a_Q9HVjHKW8P#2Z5z51yND0tO{KtR~2uw3wx* zdXn|DJ!f~*hFd<^tX$Co^P{&r;)XH6bvVdV&>u!8g5F9wmg@88dm@+sLv7Rox(PxD z#XoCj?%}CiHJ|{m=g;?ChBf*~Z`jaxL&*pRBwZZTXcJtg84$6IKi`#JkJ{CRtcDZo z5k(9LjaL+G1hYE=SpV}q0?fqJaN2!ZAxO(32NK7o7ltSBLf$H4n%Ha?3$v8sE5mIb zcRDyXy9%|O&ZV-8M6YjhY3GA3#6Pa){&gzYzeyRX^xv`4)^Bhw<_#nn%sGzJ2D}&$ zD+ToInfSE>ej5}f^t*H_7$C>(!LOyC+uE7`%TUBGw_&WbYW!pu>L9xR0D8^O6wpA{ zAj-X{Npj7d6c!vE6OM=GeiyX;BuoG0H~;4L|Ix7j0y-8pjPB>88wie#(!4tukgT2N zpW;_X7g!mPgAv4KdW}6Og?J=A^Ou8g>Vjl2gBI*i&lr&FAmiFaGAFE~i1gvn6-WFo z#KKPemZlU{>=#mszZSv!^?UyovWuLX{y_#&uVcZ2wc;;3#}TR!*WYS_`xhJ+UInJ_ z3W5W?3BN@Gd8Km_xHRc${Gauj>wiiA6coJOW1*MKRJ zv`S}}%$nOZ>>W(@C7p80AIlVCD;8JZSG5>Q*fs~#lHgkEpWXaMk|Qu6&7;9p-Hz~` zRKeUC!5iT@gXy%d70V(KPhxy?_v6!FHIpzwe&Qrftx6&;T3sc_B}u!Vw*Gv*szaE! z>vdD8=xOeglR}=%oA`A6#X7K{&_Q+SLdC(2de~0UZHwg!j!AhXWp2X{E<$V{`X0UA z$*R?Y^76Y3>>{}kP_GB&nwMFeRgWZxx2Qj=8$^3&pR&2V=3aRCGB?LRA^G?Bi3+#? z=8a-fq}C$AFsks_u&!lK4g+HDa^vRexe>~xT^JuqHCXLqr%P+0p)EN3)#ce#7Go?9$ya&llcI1)B+X{XB) z94u;e4)I7+F?z@f7|lmF?#X(4T2!_tb1UW163Q`6!e{x$u99d$km`*Y8-1)p3E!LbdD30<5V#)l+6N28Ui*1imR#< z^^|p0kHkUC_7^g?h?-}0)(RiHLOQjiS6|^TBM7gtE4qF#5X6E2=Sb-$LNDNZ=EyHe z30fa5;5&>FWkC8ON4Ja*__JGaQnt5BnTGU&CGZY|VsyW>rTXyn~O0*-bU8_aZAj*|C-Wkqf}g2FYhip)7|NS#XP zge4%Is}fY2em!yJ z*@7f|;X{UVIfbjVw&+~_eeK^Wso@u0>mTWcfBNj4rkI}`5JIwP<^hmnoew-T&?e7= zHqCA&TyCHrhA*{dRG;8bOQJD-FNntymtZJuMN3ydZzCcMle-toKuU#q z@jR^4kQIQnVtGp|{7w)IIh}pTS!%5ME}Zu9l}r7*jpr^v8s6c+lGo^l10F+^2v=Wn zC`oFz?8cd>7c-yp6J>ou5++!AxW|}xeca>IH&fn(4nc6EcmR|fCz!Vz`uxRgmq&E( z5%q#@zgUr)$lLA54pzPQWPS*k6EBXrH)!wx=rK&t8jXAKl#o}bddID%41H<4NsZeT zDV{B!YkyD|!UF%?E+F&a#LI@8;&o64r05xbEy03{&HavJeqh!R_YpUcn~IoFBpHg> zQa!ifL&Wr((+$MO5@~^*^yt{yk^eIif2Axx@*gx3KjTP#q)~SX&En%V#HFJ0n$qXz z^jVwrCGH%a+jE&mw>KaBRRcahKM)C8`UwG#$-};5uI=8iYgqYw9^I+gSiL@{;JuA7 z!{L~`0oXYz0r*A{_w%HsPAPbAG!$#belU}9Fzo1v*s|A#S4+Nm%a?kKTY6(Kt){r7 zN5<|=U1|8#h}~fcg}wJYG)`V@fP*#6HeaRV?KQzlBJwCUszuVY6;X3JY-?@P-c|Xl z#sl13Z>3S?^0)Z)2BpnX(hyk=tR&9|>8wlgQH228>&&N95xr8Y z^&QeoV^4n7+kR^$_g_4|bSbtccbq>#bjt|ImMCIWi?h zgc%72#KFwFSUP{#SXm$1(U3>flcF|s`m=qku%c*!eqh-ZSYb!N-JoHoz|D4I8)3P5 zIkIZb+iMIPw65W^_>^5}aMxr#jHG|K@l4%<)?zRI6bfYb8zk1+F9loC()^6v?T@=J za0#7yELT#luHeHTDT}CcSrcy5GhTrP-7gm0h;ky&NKfz5A}< zl_zrwQLYKMjVk|XjMxVTIN4`?*pjz}Tt4F3d$fPz?&J2Nr4RaIlYP3s${zrB(K*?{ z3CpXV0U;}>&|}+?aqC+RAW8m!0f|*3pecJm&qvP=_iiiU*K8N_MjV+R^nlL-pk(Pf z$kAtH;=FL%X(8yz&zgJC{UTtQWe(QYFZnu5Dz7JzBXPOj7SDIaHU=iD%)1?JJ_)|F{ zS1Jqec6HuLxY&K0clga>E2m@3E(&5RgRwl=dxtJu(8G1$Fv!>VMJ6Jv+q&!BCgf0^ zNLjmbWd>X7u=ql^EOXP+WmhPGVWH1|mIrHb7`<--3%;7XhIh#DQ#`1&-Fo}_gyfD4N^5+;X8O-a@UMA{zsY+(W&Xan+-6X3Xgl|bq38XJNHG5Z z0y5bkDG#Gcm05r>c!S$D=C2MOh&x;45PU(GK9AV>0kjpj#2)bWEp@<7cBw05HKYMv zXN$WPDW(Hl1u2|-#u#l=2nYT`y}h?rlcp#!G>$EJ>>5YY+3teGo62Qo^E=LJ#B1^A z{K^FUJPQBM6s-N>cZ~i;mE!-)rr;N20tzykaQt<2077(eNiK`H0$4WRDSGVjTtF#g zxKr|DgxJ*=sg+E%yUnMT!PG!WL|bRjs=+Hq)r;N}P2rqTr*$7Cd0+BO8cMtvJzMMF zFpj_ZGQA$Hm|q~Qc;~R$#ZZ%@C)X6?Db=KDG8|wg(cIQyJixVkXx^(qP1m}}4IWdT zPHY?o%e8vqY0$@;mER3T4p?_}n?a$s&aj{F*xHc}pWXS5J&CGT(N+JBDO` zmp!8Z$6ot#*WEssHu-i`<#m*0iY-`3F@_4p6M}50T!7hY7bK6kCW5qW>`{+6XHH`i zCE;t>)?3RQru#Y95eg_a)LRBb6yd1<(y|@}OVHS_J9M!8<9QimRt*_=y z2;$>y<8$Wc)v7mT4uC93S$J+MOwM+ylEt#cXUvj&mCau64;mai5Pc}-o~bG1kXTT` z-zd_r$pSX25&ce-h@eG+y(sfd-y{w78r^UMF&PcO>8;;+@hdJXs6P~?_}O@TU(+Uk zJ@wBw{@Q`~`%_weO^E;E{|Np+;}7aUy5`sLAm)!z>3@faG%6R}Ac~$$rh+rc>u)%E zToSe5KOzygcKx0Cbxh+(QM?T<08Da_@3=pKVJ|2vmtql`N-!Iw-8x#0b-Hp?m7PBT z*D;F063@e<@SMHV*MK|i6N_y7Kbn0!CYH7XRp4g0j97eTGy4D7d-HfG_x^u;q?(YX zg%mLrAxm1wZd6B-B$bAe(IO4)H$E;-Tmti4_q^IZF9Zf@7L@3dOn{oXGtF3WVY~dLQZl{wT5E#psH@q z!G~{4G*_(MyzaHfwk^+$ieqSWdNBP_KrY-MIvYAi7R&J6@}jS`PVKNeG)ESDJ+4jo zQKq9@*f2bbgYIE_Gu|GLo{w0PbMz~BH7TdAE7ZGgHCPgMBjpmI?b_R>&@>A_Brq@| z!9_a#)IEz^U6GD;RNn)Qis?_z!~$-+qr()!_WS>U24S(a?Nycg3M@>ov51MUI!g=% zAu{k?Id)NfpW#%`Ed`He1QT~`3o4U+xpV~c;L;u>Nn)TWQlNl<_f6~tfSt(0ix2NP z#}$(m(;DUXN4{LozEyC8)p%r{r$OTJB$P8cEi6Zc(0mx5V`L%uF@kZIH53pvm0On@ zJW=f~>a{>_Zz1JlaLxlAS``k6)-5Q0)G50%Y7KVYrBSj>=1!~Mo+|1le=uKl%az>0 zAKPGA)h-ijYteX&ET+eNW9~|w)t_2_nn1$qQA8iu#FVXC`qL3tZ zM(}6Uqh@d+fj12VgB`lG=M4ftw(!>*!IWwv0igfe3z9%dvjTrp)5>JiU%9JtJK1+R zPKY|2o99Me0G4het)$=&}%}|wWWp7qc^1e{5E6=Jjrp$wU%L;R=L046VC!u z2 zWR=aGH~m@53?%R-sRAy>zZqiSN`fU*EzdWLCD($8*UD4s`O|dwUK71t_33MmU3c); zp}i^xSfm*&<9W=?qulRA9};1ix98UW%?eVL_#Yz9y~po7eR$|e&1+ow6V)9>ax>Yc z{#pr?X`TfI4Htvrw=Xk$(EG4??k0-0!!$##bm`v_HX!q(JNIU!pLrj?w&A>V_&y`Q zX=X8#x5QmEyJZs_eB*5ou;VuC#-8A|g3Mr+d22=y!{wo8{##FMK?(z{j5prSStr<& z_G}lG>%8TnS1aKbBn0io`w>#OCB6)xI4*hU+Bvz$)z#2$BW%-awKUEWI6?u#Y2J>W)b1^yGPsQ*p z*s6IioEy?FC23_oJy$AKzI?&km zp%@F0iaC$pl8H~!B!UilhBVG)P;SMZBCsa7qxz;}H<;uKPR7D`n9&2JQUn--xuCJ$ zEQsAe7`tH!wp&~h5r9*572JZ_g<8t_7y!IntQ^1P5b))pfuP-+)FVHFF~&`XS|-x@ z$F4wmI|wdQFCb9fX$X{d_{V}y@`OytCQv~W?5x3^$)5oZo~=!Ca`?$x;j+x1X#7~no*Um!3((o>}bBIGIH zA>2Vl4Z+2G#KH^VvD?92YUKEjU~X#U;Sn)_8vi4fTdKZLGAqFQcf@5ng1cwUNWIupl< zy>?i^smX@eMgfnJ0_~h;SX3cCrT6^V`?PS=<2vnmLKE~McSMl_b>l=lo^d_e*sS^{tUSeDz z=cnf9opYkhkN+n233Lwh{)AX@h08sOOzqQy>cU$t9Gq^yddtfVEe38wd)H91Zc$Er z_!3Wy?NtNWTkL8crus^4d}j%&XuPgMbbb!#fC$#eWaMeOpaqX@1mxh8yqGACjkPL`+QI)OPWY1OK4ODqW#eYfB+T%%ufrz?}mc-l>ibqA-t>b0jQ{54`Co) zg};*amWn9fZ~Z+M^$$N2Ctd_U`kpd zbA7g)pV?Cb$CB*=`B*=~4bpiSiz@oa)RhFFik{k=D>U$m8fhlH$2A_#x8|B*pM=_Z zK&H*hS=y&^7PN;T?j=TZt38^Q?+H)K$*|pGcy%&<@z5MC*74DU!e_NQXa=iT*usK> zp_#%9+qWkeqX=Y^v)i|f0D1lrBf0LJg=oscK1`GcdWDlq!O@X3_>BRGB5utBCG!^O=!u9XxJpWzP$jA*$NP$pk4AO-@ zZh$(rS|e_x#{`y@<*+7R7OK~`6sQEk;_<&&9{d#o!S`U|SK72+f8V8S(=!GuTHR*0 z6_7P54rtw2(sQiL$@gH&59qaR6Zd*x?*Uba4;VWBmI$sW#DeBC1+)%Ln>_J`q9EE$ zZ!O4QQI}oihx;kU%K~|vKn!{UU5b|D=a7XvX?J`!076T6^sb9C?@23PwN{iYe=j3{ zeXsUCY+!#N8tRdaGhwd`^@u@&)}_>HHnzXiUU~eITE)wN_$NzM3SI{y0j<6KnQ@Hc z7biCK=J{FyFa30zj=qmni>us8JQmeMEz9@Szys{NGm@RKG`tTVOvPx4sFURp#gBE* zj9z=}*wyy>)e66DjxA2ShiTcyG?m|KG~JOU%qnMMi_~2V^jW?6(s$2kVO0#GWRCe> z)0x!x5tMXN3x!UVVUB2Jx4=S3HFM=-sk2#FhOha~T18%Z`pO>F);p~iCA_bT3PeYn zlTQrE^inri#aoTsGo3TRl!XQ<+C<+}d@PSSwrh@2c{993KgEzK{f5PQa~%(41qhg~8K2to z{8^UxN3VZ<2Kh?>@fR{k;Scn2(E|_E+9rW0C3F?LUT`E8fZF#GSPkPr?O#9kzxTK5 zHzB1|9Y;>9fA2OPb#}&8M2>M}`lGM(b6yjD5`OJY*LL6Hum>)j`Z}Uj>Xt^k{6|G9 zGyD@TOmQ%sID;hh(`>Pwk4J*$aqIJU&=BLaI*_J2U0kv9nl?{y-r1nnH*--&52p#V z@x!spIc7*3&xo`xT94&X7)i46cxY%*bRnU4A*G4R*(=)o`a{-_@NL(G9XqY8l*VoYv4x^iE)YXoHMhgBZH}i!@4(vK@^z^<>Q`Qe%2!Wrw@f{Gq)~?^4&qVC zW*r41Utw+ zr~tG|lDY3%|7htpo+jZ*0HH|ju81@*c>=sPXOuq1*ND5NH`F7{G_C7hKF2w7L$GA* ziStfOGo$lKxNWrTEPM-f3ZGEXlLdNsiFY)}ML0iQkd~Zb6KB;{aq)C_uG^1mKj6EIr3C!LB(e_yac?1d(TipI#SYDe-5|Lf7@41gy$^ z?t(?(uu|9Hso&tJjEnxUYxb~bF(*ej&8FT#x(Zi@CoOpvb81VpPAkd8+5yAe3c3xY z87V=PYuTpgv?T=O$$MatZ8d@s+rm69kZ_lPT9~b%eOMei`)*+`SGidkOrb?3K=)>s zEg@6`<<}rLMldEaMR-If6A<&;M=)pZv-QzHZGcA~J`5Cd^%^D^5B!*eq&NX5(8<(H z0BJ~O?Kyz&_0sF9I>==VC+Y=aKEeziAMnxGvQ`>jnMOd~<5@XIIzUUZk6n*S5UKnh zGq)=X10BK{HoF83(!L0@VzYoU?h2HTAmD6GqDn}Jl|96M&Tx*I)`d!yl;F8)%>X9O z59|l<(dgy1wo(MM-DM$$2@v6ysGf=S(<^gj(u>?@x}-QaFGQl4Wkk!&k{d4G5ADjQ zUY#HO?BmuJKQGyY&@b%k{!KWy|DDzL&nqmCCkhHHo|QQlEp~3R%`F*Q*)^)T)wszy z8xbA|1>PWH>=4&%?}BX)TP#6Qy|~Nl47o&s+8k1UTGt@tjL5qX3ttx#jE^`=8x>i> z>dHT&n8HpeeB@dDQCC|rYPVcnF2=L@O}}IL#J*GMxb3`%0mKJ#dmC~mJY=HdELZ_$6`N4UijQB&eyrV9fy(@Q$nT%BxL--R7F&O3i2NC$dl zQ50YYY53qQ?K_~y1$|0y??AA9(~|DQkiN=o&et7nCSO_lY!Fj>AKry;_#h%Jg~-rm z+XL%k{7Ks>gfmMGqyvZCkzG(jBYMv19MlKc@lvMzrEm{O9e!9*NEil@S5OR2BsRMd zokQZJgV8vbiRYjCSpuuU+W}Qh1>CGvqhnq;-hrXYK84GHKu?I19#VJfge zmG+fDue*z94OLENLnua?z_>uzPvg#S2B2!Lu(6zmiMJ_#SwN39xN4aq0EA-ztbKN= zARcZ%s>?@P2ihgytE{{2&_^lbx0rsfM}St z2H?SkVA}d7-f8VkeY1yiHO=7>S`N>!Nh<%yU*VHjd(C2v4_JRX>LyIG9O7zT9#$nwy?MH z@sSIyhswAA3h(@0(){{@@?R;R{?U8CqI5186~6a@o-rWou?19?%H7%iS79mQ2SCJCafa+j>~QDLc16MD zAb5%AQD|iY4HRUu>91M z!3_U8#Su*IMc$J}5R7`6GqY0rOaDtNh4`JkRFu(1CKY+*lZQckblgqFAmA2_y5Z3<& z*GFr3$8X7rB83MO$9M$)Q*r#?z27g-3vhIJ)KbRcI0F&{tt4^Ph)G1sZ>*qyk2tLi zkEqr2!92#hN*KbEBCWYQ0CX5Rf{6sn^ARlC+SR}Q7u@hW7Wmubq0hky|IYV(1=I}c z7JEi8!&-EZzj4&wK<&x)dG=;Jg~l{mcMkmk91i-89RP~i6>>2&unl;A%I)4M39MM9U#9s%(w;gp( zJj1Z$N_S@e-aH+;f=W=XL5Q+2{oX$m9)DH1%f$-9pmz=A*&v~cyA9~t%Zc&CF!VXx z=SC2Nx~-~!r`9bHI;Q2*DYAJl z`tze>gxeEdyf8GXbM0B(DdXyTbh(9Q)x>obQ^WTe0JB(E2Ccyo6%AwcGe$5}2K6K- z9bHi`^`qH+{TX+5Xj@*npao*)<6>xK2T2&MB&7!w!wq^|Z)m1#@GZn8YDf-WZCA2C zUe7C_cVkoOk84j%>afSHZ#hPl%vk~8t48KpHnFgGcC+j8H|`4SR~H<7uy*sDD-(k~ z=PA$4edQYT@4jNA8TGdii~rM^{}Ac56S}b;SSp+iKm$XvRI=+iVAzGGjjF15-2|)L ztvlFWt>4oA{z~xor6mY#E_Iv{1g#D?4zM3%@i{6KsUUO%L|3tzm4OzGS}U4`WN(Hs zNAV4cCXJPQx=kFaN0 z30i02U)}_k*h7(le4rXX+bu{Wv_EzQ2*FD{{~!f9Sl-Zz28F{T7$5L(7K7zB>nO3M zjjs(lLW0Hp1!)A6;{eKH0EjcPQaGTB7yF(zf}t;k*iV*Vdu1gN-4TrV8=f6hIV!sDy-Glu@T?|kT8ThP9YTiz zfDv4Ih~U{y%R``p?hRb#-i!>SiMiPEvj0MbL!$!>Ls5w2nFE0Z2s$QBL6Xv=RX{J; z*23l~tilVA)Uz%bd+2BOzj_vFuzE_1=Jozd7xW^82lN6T-n9kA?$?d41&Pe|Jn51) zJEP&fxy5Y@xMx1pAV;pp?8OLpYc1{0l@~gY~eyFdsTMEIoe>h{a}Wrm$$yT ze5>E`6Uy@@&BH9kfQGqsfCEG2OVF7aMHKx4NHn}PH(J{5c~zb^f5S%*ppn5NzIhpc z+4aE}a;I8FKtB*Ums>6hmxER;E8Xp-5L#31Jj(F=)MN7-K_UO4YTAFYaGHnUEcC92 z42%|>q4xW#`3X(XF6yv83AnXLfo*rq5cW zl<90B&uYv+&TWocfyti&?6)RRTf^7%{cwu+(wOfoe2I2ca0A}s9!y9*(^m%+_SJ8cTg3KRhW6Xn#BQ#9wsuZq(eqrrlm4WM{>3?z*uXzd1WO$+&S`eJWz%Y+ z_Oe9CxYNvVlIQWB89YZH2|-lPR5`W!v$vTd5>dWb3&-%D|_|o z*myQrdrWq(Z+n{L22mF>N{QyOBdVWV93Q1SsaiLo$B#o zKxZq9TB#EGcb3=n@3BaYnCBI`#HZ?R$Yrj>qiAXbUK)0$1i`7(QlFH775i*m-e>q^h zSAg7bGw}@Z30gqtI|c(iq$Xit>y=!=hc6X#{29voHR0=jCX@teGWFj6`lOC0JA;ef zHx-;?WMrJb6|&Y)(t4EwbroqXxeQ7o6;m4)^l0VXrHUa&PLl@9*3XtZ>RXm-pjncn zyY&_Mpz7crj+cN!76a{+g|cL09&(;8Jb9S5U*%CVd~a>>0!z-OsqE{Q0U3#bdlQF> zkXkk7Xwd>;XE7ibhA1qearR7|9ohFFp5^Ycs)+x7q_>W&x_zN&J!CNtnY|_c)?IcTuF{Q!j-* zwbugohIa19AxFxKdbz4{xDgDjP2!u7X;$lV$(w*2Et;$WRobv1!7!lkFqJ|2WWWbI zj7@F<@ku|J`U;7igFrs{96xp+cvc%Vh(55*01sBlgD?^(u#XKA8eTJkndXH6FFlhz zAP^e*&;?qV#G&*0+1_Yi2?$Sm%Rt;RgOpHXt|807>hxcz}A0p&MAYzYeBm7GBG zC9~kb=4ty%o=fY;hzuFomb@n=41o9FC=Vuyc+gM6GY6?>&_y+B8foe?TFvezJ2}tG za-H9>)B1@{CssF6E+-h&bk0JhbRT0Nvkf8%76s<~_>;};Pm9erLI3%!RqgNGCixLg zD(Byz0qwImP9V9+)7qQX4InEeSI}gn0DO%mW*czL`~PO5<-fzkF9$zGRV@q1bJ@5H zX)g#{_I6jS~zZ3ZbH(3psY9rM{GfxE3QnQ9W)>ZuX;`v%hp+eaQGHylj*X07bFR@8_#0o-28$TLbNaIZb#eoh5 z$^OA#WKrJ=N8`_>F`vcZ924OE@|iIUVi?1E%ph4x@B#o&%s)|J|C)mNTR{*i3QQwi zS=xDWi&)U<0}s-uGZCi^HEBE7CGw)K-A%t}yF%X4|KOg}bF5Alc?-Nsy1_iG*uhFc z3m<}IVcjm8X~N$UiIZodbZVa`ekR<#z#X`=Tq2g&4&Zu*!OU`!t%~LY42o+u$wx5S z{`OyK)Aw}grwHd;O_ziOq9E?-J4h8Hbgu`I<-l3#ffN0dH#F3un&Bikza5WWDzK+) z`@`_`Gs9mjLu34tL^2-##LWjw<-eRlzaw~lqTeopcX#|WMbi<0()PP1quJ2wFn~UG zOx0>1{NvR2Gbw4`r>@T@wfrY38x2vuPhI1w^JAyG?^D+oMNR)(Qy0+ZIMEwswQQuY zq!{U!6MS~DJZ=n9PHTF*MtKb;91WSf`T3%w9_nEZx&FA-s-T>3HcSu=w`X{QEE}6n z=kK(U3pMe|;A_&l2SJMVG#BvX4bwsD-cgBGky74;sJXD8=JKw#IN7J;@1MX7oKW=# z+8hB(9t|S-!K_;;|I+55$PDmtS}qCM3}Aisb4;&uq8KVQluO~NlP7=*e@OYy;v8O! zsbDrN1ToA&!JtH0I6F2|10m5T5ZcoaKn4~yC!o5fe2w0d_<`;GN#IzEs3VwpG1EAK zEieP}0Vru~eTxQvu^Kp2ARdBqCPJ02EGbkX9OD1zr{D1T=eMxFH6l;He%Two1M7$G zxWhJCtDFmQ_6i9ER;JNR0BKpVDCo2v7^oY%?j@R{QrLVFSH%ciXkJssPnwD)xYO{! zRv-Bh%&DjDK;59%sd^claULrI4WyigSjU0lVzjN8*eQmFKoSqmz2#%$sQ6;qlfZWn z!~x3BW#NH|Iu@M@Ry^iCaMCAR2wd4z z9DgoI)r&Sw7D%21=PjHI4d^@Lk>vqEHVAZLSU-~SS zK={d0=G&mE{TcT8wXds=DVwn3$4rV>@mV#0(PZt9R06+#?aLJdes8S%=U)DKn03fmgBClUBc5%-?7VtE4&jv>Q=O5p|e$*E+iE(GkeX36XIJo^AK1s@s?0T0q$148j(7(7Eum#x$rU5r-;1(Nh+_K6WEz z+~-{5V*PZzDQBot-KU#+vD)(cWAyz?;~JB&^^;UG_>1Awgn{)w;J*9olhB1vrIm$Q z`kbn2%_b?%9fWebo$H$x9G0H6S;pIWn{pgUU1#g22^0s_BG)FuLCax%%kwZt+FdX^ zjN$PeHu^Q0Y)qK(?GV2zH9%f8ys#MqBt4|{z&T}IS9+pS3&g+dj)7j&ZbKak9*x$1 zzb+>b`}=v@pwcoQz-dT^t-)vRt8ypP+S)h|0M#uL0etH{_a%Ce%8^#qYdGL-Xj3)vq}J=iY0TAa|$ z+4S+O$E`kVY0wHoK)OUa&3ja(o zT^wV$Z_Jt?3_QTzfjgXv0IvEjFsW9$*h|@W@P33!8+^d(om36Ar_#i}J&WXDKV1LB z-`{Ah3O!E-nPus07FH0*C88mwJJSvmKw9}O$Ws_C@>K;aP5H!zPjyi+mD-SkZgged z6$Eo>XqXwPLJKkk%)NIZ<~%c>Z7y??25nDaT z&p>)igx}THqs49nU}_r)%lxbg{r=?tsbS$S71qCFB>WFO`S7Hk4{3;g%Z?qV->4Z$ zSIc`0>~ftWPdU*Y|B1L+b+|`xhw$#5kt+1MHxbl4d};+E#QsL!2B`Fz4~Vmp={v!a zHGF@mK|`SOeGDxVZn*^a{YVCYRkB?F2*$iymC?WpLPf+t9af1+;?3wK4CLfr#nUv$ zAP0Eq@lSdJ#}pL>oF2tQn6m;z$lQswNYlUk^(Dtm@~XoETDuqr46)E%2v|sWUyJ}{ z;8F{ru5pL*$ET;g*h#LXODK3?Xy=qDlppdbm9B+dZ{P#v!+Nwp0%tk6u6FBIt?!Z9 z|3+j67g!D}8A*bLeGvscx4uI)3IPw4LR&t}nV1Y#f03PwJ~iHj4B^xg{`G(&cb@DZ zU7!&OdWNFjkPBs47Z*t9=y$i_+mk40Y^fJ(Rs8yJ@xodM7M^lIZ1j$>pI z*cM{XH82LPfyY;|IV=#(+Ls;0c?kwfJQ4?D%tdtcjQxu5N~|QYdZC6P^juFbirqe1 z=^-$h0Y9u)Fr$&qpO!XS4e}eV%VC1#c{Pa3N|6Y((7RlqkwgQDM}Rk44-c5SLoB^| zP!1y2(peVp8~4_XJp9G&y@99_BHH>x)knV4k-G(l7Zom_oay>PS90k^OVwG|Tk+}` z^5x1g{C*!-pgI8r(@-LbH#ZfCT_)`3AEY&s5aqUfz!U{l8rX?vIR)_W0B=4XKciu% zg{$z|2kKRGhm3Y!aaeZ2qg-nk)NH2C;@Lx$xH^cnaP-Wo96ZG(d+Dq^LRy<(y1;1! zGeI3ffLGL*4f72q!!aY6Hx$%@#?Tg=Q4K1i-TUyme}$ci(@e9u^DnJ`bUCj?qC)n)#HU>H|fvh=Zr0SfA;_5@xyP1o-WMQ9=C)Yfy4>#t|LS=H=Mv-pnB`?@eyIEj$0_~ z%Xs^s(pn!Y5a)&Tf`x}R_j{^5Hp%!_6NX?^8Ya$K`@E978el_1jfmd>n(!Gl}tpkKn0cU+onPTPVhUBF6#0R#yN^IZW;zsQ)dh^MlxBgr6qIB>Jp!$gtDJxZ3uYk13J^*lFxTDsQBESdr9jFFUD&5U%%8CWe&=<3d0P)ac$5s;M6_72WdyU{ zJ}WwV4+kWFq0vafXj$z(D647MTYht($9EggKWes&hWM-)!7OYJ8^PEwh1$~|s+6(H z`9UX$0#7h=$JV8O3UPlaOAdtyu9m~Py@4>GKTx@w2j2~L;nVK&uMZWGcrt^Qg2gBL zPW=D8(em#K-o|E1|409SO%sKIPzH5)_5h8`J_X{Ahc4UPfyu;M*Yl{nnVO|L+>C{M`%S@9pm^ z7RFmtV36=E<2Gnbis!1ku7{~tq5brRea#B~cuKV4MV*?3DqTbKmFHn5qgOzn?W)n> zjb0Qk0e^0?1IVfeQJ5sY{}L1fkSeja-8qq1{meBEs*h1V*fC3^Kl$C zoX_P_|Mzn+NTAAiH`9AcIoBn;P4=*Uv&iVzN=_GE<8(lEU7`blH)1@VOTY|j^fwry$3UrFo%IFU(LF$q}?%=>!NBoUAUh==jE zLX{`j5$M!t3UYwf5QhfUUw~PA2kdb4{i-Y_R7RC^56swuts4BfhIrN+QktniiZ&N& zDFr@9IW@!<%TISrU_65NQ@9%Tz-uBe6!;PO-lOGGKiM@@;7G2;57=ip0*1L#YzvuZ zMLL;8ZosEGW<~FXnvG62_kx6jX z;4aAlMNSyR5QQM?5zphVQo>I>naLBMqbx6N7-Q5}0E-~fedc!37d z&O^PO5F302&GD)%;@HF3WC(!IQ;@YIr8PXO@yT$|L~3~ZD`nsowUx+_;%jI0c!OgV zfJ@GGC81j2=wr5kOK*yWr@)MC*p<#*B3*(CkD~g3pg(5A670twNyG%4XAckH?Uje> z2rOxkACB7lkK1%em)cN`ZuDl-0KwuedL`S-&;^MqjBLB$v*x}ht+3&A1UH@Lv8bn~ z#t*a)oRjic6!ZeKoRIQUThnids{efgOuhyWgm33lf8{s*>%#Ki{r9(^zWwfHee#!H zR^xlz;F9@Z0-TsEh)Xrs8FZgq9)mo2?z!1BysoReUdItDJ}+0;U z9i9is3w;dh`Gh6ww&f&;=)5aAdMWs#Va;VyrAcCovAweB<>6 z1j|}=`;x868CmI}0cSnKe{hdanqO;!`|v1G(16_FVbK><$%&zz^r;6@gN8bMZ!Sx^ zg5R9X)HeDUOj7d!DXYIhW7Z0LA9>_a2^?Yc z0dL|V=bu9y?cO%=3c_GeSN1dDKu!Fd?HZ~RFC5UoB@thmc74FzCO@uRp9>k#X8;*# zc`$WK?H%MitAtePW}Pm0~x zlNXSSsVN$T@2_Q9u>#iYxRw%?ZL~7^y7o{;?iM9j7n`YRgUfAD9h6~W`7^rmiS}+K zpe!FGedl_Kx@`L6{SoVMj{OT~T+(-Pk#Ek~hJf6DB2y5bBWtF130a7jcwJJ}Uof=# z-O>?E;)a>KfEy-RG0bl`FtCb^J)331Fx+S%Rirm9F0OO>2*( zvxUr$TABPgQt#B2BU@o$b*C&AiCR-V=w`$?R_5Y+Ahclqz}`b!(S@nXF}SNa;9<+R%&;3eO01eSR!LVQLiMab26k8Zx%n#y8C$ zu&thXk26(&a}vH>U6R`c9Hm55S=xmaFAlSMi=>B6_3pT0JJ&;O)nM@R(qVIi_?$i+ zZV4l#-aTFCN)a(S)hgrJXMKP+DXl<5aD=+Q?X@naOjU?|L$U^`2BVV}pdDg^^yliK zCp8aj4PIjzE~)eJ!E?!gOa+l{kph&bNH#=vyWC}A&uQZ3yryx}`o)9a$gxYWmM|93!qJ6% zEKf`IF)xFEKt*sYrI+LOGvWyGT)39XO@~Bs?@_>eZ#0_ z8M?3{Y?|-&r5suqDi7t!@wGf8hDf4hRl3c_<-1bq)wg+GB!u`) zo*4zlo5k7N(pm(YoflWSSq_Gwa3FU>ONDA(i#lX9^YTNQUmLFQE)CApsfw+w*$z#7GBdy(Uqkg%U^-M;C36D#v(stzl2xbv%RPJ8)zzHQ4T2Me#5o!B*<`6B1!J3ina`Vv|7 zoOgla`porsxk6eFY14JyccZE)#L^OHQ)X}uzf+9Q~gi)r^z zKqktwft+z7<>D}9z!zH_`6FBD+Kl8ZdBL^V=MddWyJkx!K1q{Uga`!l0StkcqfFQV_tp^0BB8f; zUtb7xIQFINUPzxVM|hXX2f0l$jR?y9rLJcZyIM>55%_adj#ej7Jld)sO2hnn|KA2p zm3teYa~@zeaR<%e3&LUUM%TXd-{PZU+bzbZ)IM9c@lWeQ{$&4O-W=!?P{7>P%VUq; zPTQU4?wWg-m(IH4D1UR}k18t4!tM9~LPiAW1^7zmp(Y$i?5#B4^_B8wKE}FXsVJZoNPrzunxt;niILx=; zqeQ+B<;g?Tyg_yJQ8}vzljXuqX5c9xTXwi)eE{jW!h046< zg;>lMW|J7SZaiM_Xi9Z=OPasYY~?*uf(9@STL-?#-d}jQdE7`kP8zpj-TRMU z);Hp)K7K5b!qUdCS}rk!)z1Hr>;7Mnw0y~XztGiR#oSZjNoHW3n)|gnt?~__C#`Cm zq|h}h@q>d>=-I_5x$3M&bjsj;^La!_%1CWTcEYQayq#d?kUa@zF3eq*=Jx|#@sy@)l8{Y2Qm3TJL);k3+jMs>;oC=)E0ijz0y7GBbP_9{A~Rujz2oPhY^Vb~Ne& zj8Lt_Sxjt+`zc6lL5TY~!ptl}?3|P8;zgZaZL;Bu6xSN%nbC@%^P~)=o>lDix^7zK zfls2TdzPwjPN+goh0jkUcC`n zV$?;}Gl1!Y&no6{+%vOlYpHHZnJz+?a1R`K#8OaMfLrcUQ{mu6(Ku01Wn7Y1Izuta zwapF`9rn8fIcC?+>LAHhu5US-qk}}S#hCkUX;IGEudL&ndOj9ea@%)N-UU3v_}yu_ z7bop%e{KyE`?C$m_kiY0f{%aVGhZ0csJiA6`gGgz9EmhQMozFvOKYJH&l|w;L_tBn zz4i`v;M8a5P*!D!#Z&jWo)1y34|j5iAuDESFr9jecp7}wkR2A@%sbcak%}(WZC8by z*FVrp@Y4OkeV>D~aI-S4j2eh%+33%?6<*TPmjC#m)SR8>g;GW~R`8_(ZI z8Mh^8M{Ll^K_$My3r;bR3xqj>?^Fzjt}q?9g`{3-lFJQ6j)3UtH0J*}g?4gmQ)wX3`7dil|CPa|Y7r_=enUth=SoRNg+^oT6{o)rIC-Fqr*B z5h#Cp&gu=%J;bh-+;hQPpg!>A(9SyFKBNzy!^`F@_t}~m(#n)7gr~di-fX_+@Cnqo z-0{r1VADtUB=i5>?Co>pE8l`7<#Vp%Yu@usI(z@saYR!=&hxgC%kiQwlaW>?J)ryG z{AVF`GL$sC`?6VAg>!t9jpY(d$Ub~iu&Tp8dR6Zt%NfTDb~@SbeSZ7H{pGgCZM^3} z+0REX*{M9yVN>RDzQkQ%DSuw=vJ0x3$~qf8JfVJ7+KhSLWedEH3^*9xx5K@m&PM2Y zITNa0rM0?Cy6B1fwf0B{zdP1$8M9=qWzvTn$5ER9Bt5}ZBYcU1^t7~lNcASWGp9__ zj5Zl&SS~4S{1{c9MqY_fitH8HXK!)KgACT(ch&Cm?TX^vjo#ApxKxMp;K>p!9Y2%M zl1QJOmiZwCacVKd6)bzU@^({~mf*SfJ^kHS!Mj~OBxRp9f?GKTKHK_{etLid?CO}} z`s-3QW=PeWO@xN3FR8Mhf;B^e$GORV8B%c5RhoF}!Szd*ojG1tG_tCtcKg=5R}f!D zFJ;#UljnDq(LB3~o|K&Pkdm>eyX(E^r5|*3Mab%lxrg*OXW~;x5`>mp@T2+yXn9>p zQN58y%@+CYW_4)1ZS4+*m{;xi5<2GgDV>F3vLwqAVgCLk` zIU7)4EHXfIHq&ui0J0|(3lm@lxGE8Vl7x7I_f2qvN87QD+q4ARE-pDN04ZbuVmX5O zA+!iaX1M{20IT2FbckT=Oe^n2d$&XYo_HZXKmI9wiYzs5qIsaA)t)9z%>uQmT?*+GwkZ+yv?}zD9YzB@mtv!N~iOuzKH1P#R+G#fh_n@}cd_1BFJ`YYmfO8WxKch^6S}I|rX|`~y zifT6<@xb+foe|`wgM-FF>?eeAhe*QDwIb~U4jA{K{rF*o6@ZG%02c^=HGO&raF?G4 zCf~EQxI=&2Q7_}uXd69u<@Mm_h4aV@6RN&7X2Guk&VS# z2g1?PXh04ID#ao|cd`2-1sv({7UScoKev7OGNp`UH6JV*AyEuG4`%~)tR^noNyw)U zFV2|(m{NlQ=#@nnXzi6Tx-^M2+ORO-G}k|Xxk9uL#s6P>*B%#B-v1}D=FE4#eLvsN`}6+Xu#>f(E_A;BujAXh7e41V5ZI$@GVo<*M0r%`!! zz18CZ;tMBjpgE~FI{y}Ja;{lfk{a=%CB7Z*j-7W=#TJ-_bt zw%qI7e4)%3Nfr2Gz2aGW8pC^d>qdI*ng4Xjwi`RezZEBLzieq$WB zW=c9h_4_a-C@5Z6(F(Hj65!5uupg-?(nU$=NVYH8b@}a4#8E?X@-bh$eI(`swW2`T zEJGCoQ=q_A>Jk8iUD--=_O|72@wRd+7-7dzj)!w*2H~| zua9QM{pZ4T6-7MS6P5M=7{EKXfX*$04sb>`n6l#&nC-(q0{%Qxz7l}Goj;NQWYN%6 zsBu>DM8Z%SSzwaT=P9M!-B`(aRJ>*@jo2R|P|Vmck?|{N6$tTVo+WeKdVz^@0CPtv zUP$`ZRa^ZJ#(J)Gb#uv_wjgrVv+3;_nfcTZXI3&x1c>aSEz!egC>T&q>K5a$$Ed_X ztTON=(x^bmG0+mPC+~x0!H8pEii7IY=}w>7>iNVXU)G$Qw;z$Qme14=zSpLWy5ywOwp%NW|Lae=Wb zp81Ne{dI`euUw3Da_2tfYJHvNuY~06Hd@du5`bkKt0t{P;EQy}7nE{$6)ih(?xfcm zQk?zFF0W2!8^lEBnQk$FHgk) z85jmb7^N6=6-3B`=`(bSn_7x^gH7B4F#VyiC8)Ab7~ra9+$;sL7!I$SXjXp_LhQ>0 zuyc`LK{&RcIGIkOMACu13#}RdGgO}Kv@rb_Xq}E$M9b{Sw1*7E%)>fFUuY+^xH;&b z^$@GjL!p!@ppVLLu&}=5A$*ecCPlYX<8m*5U-Ntudt&!Pp7Qv&7=})$3<$+6VDIQ|Rlj)dvV|W)3gC&>A z<=0%UpO#ucspLOoEGU&sPpr4TL5QLDkZ%*D{ddn|R?%Z}1`4J90)9A6246>!0)j$5 z6o_GS(a{>`0z`7GT23~@-rDv8vp%gg0d?;tecL;ba-xl zS_Vkm*!CtO9dH5iuy#ezD(?lDwrHQCYj8VUY*H z8J`UBAlYY!g9&l69p;Rdz#%O*ecehl1P+PFXl_nSE7BRND{;|m1X=Gyb{Ro(OKD0t z{>k#{`pK9h&~=v>RU{bP*8%ptnt)lGsf%w+>$24e_gjTkmmx$)rX-A}00jaCK9|8$ z=DZv-1%6|`A37a=RE$%j-7Fo6vz>a1?@$R6#?`-w1tc7u+V$L-h28B3291a{i3XB6 zC`(1DjzUMx{PL1MKgEFkn9qEa-=!6U+on;^dpszS4Ip0|^3j@Az}epO45i?HAYc^p zB6NvB{zIN0K9I@?%g5 zJ-z>IP*}xScopf3da~syp3VXUWb=%trx=*dHyl8i7tkwTvC!deZa zD*_?diVfmArHoDNiWd-c8_ptTl@;CtBkgF=io551R5Is5J|j}|OBkW3XhBc|+7T`0 zt0;{ORw!Kohhm4{R1~IYH&KhKDC-*JC*Jg>biIdGm@iXNSUo^rPsUC@LJNi}Be5_x z?FQdP8s^zYCpy{RW@v=*4em=5tA>?iWz5700jAN-1DdJzbGN7{41jI?spRq#XSqnZ z7*$jX?mV!e!2jp<AWqN4uggZE}6mv`q|OWRQC# z*lkrQbbNBbgkHEEm=w46>)$PUrA$lA@?q=U7Mj_+ZNL2MI*Cm-Zz5w0nkL|Yobbkq zHa}bU#+2Bdg2QHu+*~5eE(c41nHmpC#~*efgx-mPp>25sXK<(Z$OHiVg{gug8DKMT zce+D3-!rXo2>eslVdP%HPRu+A>PvnD@qx;mmV@^A_{MUS=!H=^Oa{I_MGvA48;`ae z43cdVLhPYpD5o2K9+5rsHiFNAa4sw4euY{rO zYt1Fh4Wor`|@a`Uhv{3~(>+Os8~*P_g0-(S)HJe1=58y;rZP+E z%*o_*AYu*D9Lt@$d;Y+}2R|1*Mpsxby`yvr#yAaYj!!Nh5Pgk7_NR)h$N+D>ZO(iDn z4qJj3$hy}Lt>Ob)tG5ypO=oOZERXU$I|YQ&Fg_%BNYx)wneqJL)J9H0rL|(6F_w%H#DOH_+lRR`xy_!sJQ>Ez`v`5{y){=Rr|b#RDJI#xJ7HxbncJOIG`N(#t&SLw8<8 z#+)$@x)9O%7v>4r!(+X@)kI1;8}9+sQC)9TYve|Kws}6#lgCmf05wyWNOnAr%0Nt7 zzNUQXR}lw6-N6Z(6`M%xE80zN*W*Becg@wHD{=rBWr>0UuF;h?qXWxn-Kt!S<#lw4 zVA%r;w@#ZzPVp})>DO<7&)J9xmzs%&P6d{bh=+o!pQY@*(TNzkl|*9|I>b4wf=`-( zcPR>*RgC4=6K?>R8UxS?nl}Z`N18|gNR*+XOe^EQ@W)OFeHr3Oq>=hFQBY~7-<vGV^de?D$UjPcBO&gBRvgD=d0D&(zT}lj=OA;g1r@pDvZ6 z#J+igJNI=Pvo%!j`&b;^tX3=}rbJiiie_=~xoW#;4%kJTxi1vKa38aY>K$UPMIEy8 z^t5fMvk_y9-tups*g8ZLS1g>Xx#uCdX-3mRevEnB%C%or;Ge4geX6rfRiGv#XH!;C zi^Q?{`#qW}Jn|74&Hw+9^!vp5J?|aZa;UhI<&e9Xhm)7)cMYYGp3RPP zi_)hXM>HG+=oj{ z!(#6~PTlS+H684H1G^h!pgZ@4qt+YtxP>r~A(^f27Pd1mh_npc zPU!PkcaLh02gzIo`bcH8+Bl{fFz`hNx(bU(?3k72I75_}G7RO-0HUy)B_e}p|5xFy zP=_ytDW={I4{Dy@Z?M|qHsor;m3`^fy*z@itsi7)mhIZU$0PoT>B(vn>b1Avzo-&7 zLvgoCy}HMxm5ad&-xdB3(AS4SFOK;;^y1tZuH+;p)*u{8?(ldzrvR&!#bg-rwJ;7cT+>QDgHF4D>%NPz8E3DDSyO*`^)KmV^uKw0?X*-~oV?%L^fvuDWsBD|FL zJd2uN46Qdom!uH;6$i@7W|f>a9K3b}nZ->w6G6+yWE;4*FvT!8Fzs#_0g-YSgX69; z&I>p>${O>ASph)Gamjwwbyj4cfj=txrVP45H~$DRN8MPP3EbsI*-_BPfoX_LcOArJ z^UGL-z7@oemFT5&Vw@q+26Wi&A8-!<*#K^EqPacx@^nlpFuv@6cjJ~2!<-|tyxN!d668r&vKAKDC9=8XAtAxT+B-@=1h1jE6wn`8q_PBRgUj8=buK`*Yu=`9ljcue_I$i-+N%)H%Cg5fMQzR z)GKTAR~AjZvTWPt!BJzTE&aXEBeNYpQO4 z4$UE~=b6)Mk=1DF^YAzU(c2SZ{kpSIb$?8a0o(yxZAy5bW=$M`Loy0H$t63KZyIE3 zjWNsSLfMQDp93V1LC8p2F0vGSBzy=X9GC)ee{(G`ymzwH_PCR!Q-Hy|>V3lCG{ts? zQ%F110k>1nXD`fWFcFAVUP7NG$D(2jhDdDnD47hjC0(y3LgW~~R9(O036w4|s96My z0TC@0PhG*A?ha?>K~B0rvH%l5Ex_dZSU0FL!YM=3GO;B>#V~<5n~TEU9jOz5-m#Eopyj+>^gFp?Cm zF(ELiTF#i$AN-ueodn>#_i}D02ISIihi&YVTK~&x2df;Pq`cDEurR3@ER016LuR2~ z7rJbLdJ0bD06k@YP!_8$fX%fUjzmN7p=u6sZ)U?huA(9l`;m|gT(+C+!p77YMlD}+ z^qpZE_hD6baxzef>o7#*>H|49YTeRu#9VX{T&1tV@o`4dv9L0Q5EQuMu~40gq&dR! zJM6p`0dHw(i2$~jehv-S7l3CknOa+}9Q@?ROZIgcKX!iF{?{kpa?E%;kRGg^68L}@ zeBdfXq@oH-7b;P23yD6^fR-z@hi`ipfeJ=}yA1CadF%!OCaHh5+Fww4#huZ3M}V)1 z^Z|sWpv)142S1`5kit#i?Dr;A~^IFDObEj{=%N#Zhe|gw>*1OmR*8xyb z`(W}Eh=)3oNbYyZ&@A#Zd{CV&zArS9K!G5S>U+u4@s>b5(nHWdAml!e+&3|q|EBix zyKnnnz0R##34kT52p%#PcS!Z>~jX^Pkvg=kB=ciuD6b&rmd3 z5U+%-XiZwVRX2P*5#dcOXX^`yz^S~1GnT?N<1V9S#&=ykc4Sm`7>-0_n?DbddA+FF z1_BJn&Udz$`Yh8Jh$->0vh!ApS3e>MtpvFB%mhS2-M?3JWbK5bktyl}-~cBBlK|)v z2g9vzpV1ykVmR_xP!uQwSt?Kf?vhUjC{PahoEifQX{Rc=P!*^=JWfc^QT$}_n2^v)HJtK;xx>?#rzo@^b^XORm%FLF6__$AegKRg}YF0(A#u zjRB~!D%h{tMBd7p(vQ literal 0 HcmV?d00001 diff --git a/em2rp/assets/Google__G__logo.svg b/em2rp/assets/Google__G__logo.svg new file mode 100644 index 0000000..088288f --- /dev/null +++ b/em2rp/assets/Google__G__logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/em2rp/assets/google.png b/em2rp/assets/google.png new file mode 100644 index 0000000000000000000000000000000000000000..1d4d40d6c7c891ecb0f4e87d1f57071cc49f57bf GIT binary patch literal 16277 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 AK>z>% literal 0 HcmV?d00001 diff --git a/em2rp/lib/firebase_options.dart b/em2rp/lib/firebase_options.dart index 80a9580..40a0874 100644 --- a/em2rp/lib/firebase_options.dart +++ b/em2rp/lib/firebase_options.dart @@ -42,11 +42,12 @@ class DefaultFirebaseOptions { static const FirebaseOptions web = FirebaseOptions( apiKey: 'AIzaSyARQL4P-t5l-cNjQNP9cMokQrLJ8BorF0U', - appId: '1:341201262902:web:bb70b5ff45df80935a3b97', + appId: '1:341201262902:web:c9f26c7729df8e915a3b97', messagingSenderId: '341201262902', projectId: 'em2rp-951dc', authDomain: 'em2rp-951dc.firebaseapp.com', - databaseURL: 'https://em2rp-951dc-default-rtdb.europe-west1.firebasedatabase.app', + databaseURL: + 'https://em2rp-951dc-default-rtdb.europe-west1.firebasedatabase.app', storageBucket: 'em2rp-951dc.firebasestorage.app', ); @@ -55,7 +56,8 @@ class DefaultFirebaseOptions { appId: '1:341201262902:android:8c9a9e340ecb58665a3b97', messagingSenderId: '341201262902', projectId: 'em2rp-951dc', - databaseURL: 'https://em2rp-951dc-default-rtdb.europe-west1.firebasedatabase.app', + databaseURL: + 'https://em2rp-951dc-default-rtdb.europe-west1.firebasedatabase.app', storageBucket: 'em2rp-951dc.firebasestorage.app', ); @@ -64,10 +66,13 @@ class DefaultFirebaseOptions { appId: '1:341201262902:ios:767281c23dd9e76a5a3b97', messagingSenderId: '341201262902', projectId: 'em2rp-951dc', - databaseURL: 'https://em2rp-951dc-default-rtdb.europe-west1.firebasedatabase.app', + databaseURL: + 'https://em2rp-951dc-default-rtdb.europe-west1.firebasedatabase.app', storageBucket: 'em2rp-951dc.firebasestorage.app', - androidClientId: '341201262902-opnuh9ri7ao77qlhebjhshsavplb7vsl.apps.googleusercontent.com', - iosClientId: '341201262902-22rdtoljpgk65lj76bqbk52v861d9lt0.apps.googleusercontent.com', + androidClientId: + '341201262902-opnuh9ri7ao77qlhebjhshsavplb7vsl.apps.googleusercontent.com', + iosClientId: + '341201262902-22rdtoljpgk65lj76bqbk52v861d9lt0.apps.googleusercontent.com', iosBundleId: 'com.em2.erp', ); @@ -76,10 +81,13 @@ class DefaultFirebaseOptions { appId: '1:341201262902:ios:767281c23dd9e76a5a3b97', messagingSenderId: '341201262902', projectId: 'em2rp-951dc', - databaseURL: 'https://em2rp-951dc-default-rtdb.europe-west1.firebasedatabase.app', + databaseURL: + 'https://em2rp-951dc-default-rtdb.europe-west1.firebasedatabase.app', storageBucket: 'em2rp-951dc.firebasestorage.app', - androidClientId: '341201262902-opnuh9ri7ao77qlhebjhshsavplb7vsl.apps.googleusercontent.com', - iosClientId: '341201262902-22rdtoljpgk65lj76bqbk52v861d9lt0.apps.googleusercontent.com', + androidClientId: + '341201262902-opnuh9ri7ao77qlhebjhshsavplb7vsl.apps.googleusercontent.com', + iosClientId: + '341201262902-22rdtoljpgk65lj76bqbk52v861d9lt0.apps.googleusercontent.com', iosBundleId: 'com.em2.erp', ); @@ -89,7 +97,8 @@ class DefaultFirebaseOptions { messagingSenderId: '341201262902', projectId: 'em2rp-951dc', authDomain: 'em2rp-951dc.firebaseapp.com', - databaseURL: 'https://em2rp-951dc-default-rtdb.europe-west1.firebasedatabase.app', + databaseURL: + 'https://em2rp-951dc-default-rtdb.europe-west1.firebasedatabase.app', storageBucket: 'em2rp-951dc.firebasestorage.app', ); } diff --git a/em2rp/lib/main.dart b/em2rp/lib/main.dart index deaa405..cd58dc6 100644 --- a/em2rp/lib/main.dart +++ b/em2rp/lib/main.dart @@ -1,28 +1,61 @@ +import 'package:em2rp/views/login_page.dart'; import 'package:flutter/material.dart'; import 'package:firebase_core/firebase_core.dart'; import 'firebase_options.dart'; +import 'utils/colors.dart'; void main() async { - WidgetsFlutterBinding - .ensureInitialized(); // Assure que Flutter est initialisé + WidgetsFlutterBinding.ensureInitialized(); await Firebase.initializeApp( - options: - DefaultFirebaseOptions.currentPlatform, // Utilise firebase_options.dart + options: DefaultFirebaseOptions.currentPlatform, ); - runApp(const MainApp()); + runApp(const MyApp()); } -class MainApp extends StatelessWidget { - const MainApp({super.key}); +class MyApp extends StatelessWidget { + const MyApp({super.key}); @override Widget build(BuildContext context) { - return const MaterialApp( - home: Scaffold( - body: Center( - child: Text('Hello World!'), + return MaterialApp( + title: 'EM2 ERP', + theme: ThemeData( + primarySwatch: Colors.red, + primaryColor: AppColors.noir, + colorScheme: + ColorScheme.fromSwatch().copyWith(secondary: AppColors.rouge), + textTheme: const TextTheme( + bodyMedium: TextStyle(color: AppColors.noir), + ), + // Personnalisation de l'InputDecorationTheme pour les text fields + inputDecorationTheme: InputDecorationTheme( + focusedBorder: OutlineInputBorder( + // Bordure lorsqu'il est focus + borderSide: + BorderSide(color: AppColors.rouge), // Couleur rouge quand focus + ), + enabledBorder: OutlineInputBorder( + // Bordure par défaut (non focus) + borderSide: + BorderSide(color: AppColors.gris), // Couleur grise par défaut + ), + labelStyle: TextStyle(color: AppColors.noir), // Couleur du label + hintStyle: TextStyle(color: AppColors.gris), // Couleur du hint text + // Tu peux personnaliser d'autres propriétés ici : + // fillColor, filled, iconColor, prefixStyle, suffixStyle, etc. + ), + elevatedButtonTheme: ElevatedButtonThemeData( + style: ElevatedButton.styleFrom( + foregroundColor: + AppColors.blanc, // Couleur du texte du bouton (ici blanc) + backgroundColor: AppColors + .noir, // Couleur de fond du bouton (si tu veux aussi changer le fond) + // Autres styles possibles pour les boutons : + // textStyle, padding, shape, elevation, etc. + ), ), ), + home: const LoginPage(), ); } } diff --git a/em2rp/lib/utils/colors.dart b/em2rp/lib/utils/colors.dart new file mode 100644 index 0000000..d5df0c8 --- /dev/null +++ b/em2rp/lib/utils/colors.dart @@ -0,0 +1,8 @@ +import 'package:flutter/material.dart'; + +class AppColors { + static const Color noir = Color(0xFF000000); // Noir + static const Color blanc = Color(0xFFFFFFFF); // Blanc + static const Color rouge = Color(0xFFFF0000); // Rouge + static const Color gris = Color(0xFF808080); // Gris (gris moyen) +} diff --git a/em2rp/lib/views/login_page.dart b/em2rp/lib/views/login_page.dart new file mode 100644 index 0000000..94c47ca --- /dev/null +++ b/em2rp/lib/views/login_page.dart @@ -0,0 +1,106 @@ +import 'package:flutter/material.dart'; +import 'package:firebase_auth/firebase_auth.dart'; + +class LoginPage extends StatefulWidget { + const LoginPage({super.key}); + + @override + State createState() => _LoginPageState(); +} + +class _LoginPageState extends State { + final _emailController = TextEditingController(); + final _passwordController = TextEditingController(); + String _errorMessage = ''; + bool _isLoading = false; + + @override + void dispose() { + _emailController.dispose(); + _passwordController.dispose(); + super.dispose(); + } + + Future _signInWithEmailAndPassword() async { + setState(() { + _errorMessage = ''; + _isLoading = true; + }); + try { + await FirebaseAuth.instance.signInWithEmailAndPassword( + email: _emailController.text.trim(), + password: _passwordController.text, + ); + // Navigation vers la page principale après connexion réussie (à implémenter) + // Par exemple : Navigator.of(context).pushReplacementNamed('/home'); + } on FirebaseAuthException catch (e) { + setState(() { + _errorMessage = "Erreur de connexion: ${e.message}"; + _isLoading = false; + }); + } + } + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: const Text('Connexion'), + ), + body: Center( + child: SingleChildScrollView( + // Pour éviter le débordement sur les petits écrans + padding: const EdgeInsets.all(20.0), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Image.asset( + 'assets/EM2_NsurB.jpg', + height: 150, + ), + const SizedBox(height: 20), + const Text( + 'Bienvenue !', + style: TextStyle(fontSize: 24, fontWeight: FontWeight.bold), + ), + const SizedBox(height: 20), + TextField( + controller: _emailController, + keyboardType: TextInputType.emailAddress, + decoration: const InputDecoration( + labelText: 'Email', + border: OutlineInputBorder(), + ), + ), + const SizedBox(height: 10), + TextField( + controller: _passwordController, + obscureText: true, + decoration: const InputDecoration( + labelText: 'Mot de passe', + border: OutlineInputBorder(), + ), + ), + const SizedBox(height: 20), + ElevatedButton( + onPressed: _isLoading + ? null + : _signInWithEmailAndPassword, // Désactiver pendant le chargement + child: _isLoading + ? const CircularProgressIndicator() // Indicateur de chargement + : const Text('Se connecter'), + ), + const SizedBox(height: 10), + const SizedBox(height: 10), + if (_errorMessage.isNotEmpty) + Text( + _errorMessage, + style: const TextStyle(color: Colors.red), + ), + ], + ), + ), + ), + ); + } +} diff --git a/em2rp/pubspec.yaml b/em2rp/pubspec.yaml index 6df8bd2..27bd93f 100644 --- a/em2rp/pubspec.yaml +++ b/em2rp/pubspec.yaml @@ -12,11 +12,14 @@ dependencies: firebase_core: ^3.12.1 firebase_auth: ^5.5.1 cloud_firestore: ^5.6.5 + google_sign_in: ^6.2.2 dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^4.0.0 + flutter_lints: ^5.0.0 flutter: uses-material-design: true + assets: + - assets/