From 86798256962ca21f45b5b23c59447b37e4cb6474 Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Fri, 19 Feb 2010 03:16:04 +0000 Subject: [PATCH] [NTOSKRNL] - Put back the boot logo from the old bootvid - Rewrite the old broken progress bar code and enable the progress bar - The progress bar works now :) - NOTE: Someone should fix the copyright year on the boot logo svn path=/trunk/; revision=45618 --- reactos/ntoskrnl/inbv/inbv.c | 45 +++++++++++++------------------ reactos/ntoskrnl/inbv/logo/5.bmp | Bin 7786 -> 21632 bytes 2 files changed, 19 insertions(+), 26 deletions(-) diff --git a/reactos/ntoskrnl/inbv/inbv.c b/reactos/ntoskrnl/inbv/inbv.c index ef0faa03917..f498ddba6a6 100644 --- a/reactos/ntoskrnl/inbv/inbv.c +++ b/reactos/ntoskrnl/inbv/inbv.c @@ -407,38 +407,28 @@ VOID NTAPI InbvUpdateProgressBar(IN ULONG Progress) { - ULONG FillCount, Left = 0; + ULONG FillCount; /* Make sure the progress bar is enabled, that we own and are installed */ if ((ShowProgressBar) && (InbvBootDriverInstalled) && (InbvDisplayState == INBV_DISPLAY_STATE_OWNED)) { - /* Calculate the fill count */ - FillCount = InbvProgressState.Bias * Progress + InbvProgressState.Floor; - FillCount *= 18; - FillCount /= 10000; + FillCount = InbvProgressState.Bias * Progress * 121 + InbvProgressState.Floor; + FillCount /= 1000000; - /* Start fill loop */ - while (FillCount) - { - /* Acquire the lock */ - InbvAcquireLock(); - - /* Fill the progress bar */ - VidSolidColorFill(Left + ProgressBarLeft, - ProgressBarTop, - Left + ProgressBarLeft + 7, - ProgressBarTop + 7, - 11); - - /* Release the lock */ - InbvReleaseLock(); - - /* Update the X position */ - Left += 9; - FillCount--; - } + /* Acquire the lock */ + InbvAcquireLock(); + + /* Fill the progress bar */ + VidSolidColorFill(ProgressBarLeft, + ProgressBarTop, + ProgressBarLeft + FillCount, + ProgressBarTop + 12, + 11); + + /* Release the lock */ + InbvReleaseLock(); } } @@ -613,7 +603,7 @@ DisplayBootBitmap(IN BOOLEAN SosMode) /* Is the boot driver installed? */ if (!InbvBootDriverInstalled) return; - /* FIXME: TODO, display full-screen bitmap */ + /* Display full-screen bitmap */ Bitmap = InbvGetResourceAddress(5); if (Bitmap) { @@ -626,6 +616,9 @@ DisplayBootBitmap(IN BOOLEAN SosMode) else Top = (480 - BitmapInfoHeader->biHeight) / 2; InbvBitBlt(Bitmap, Left, Top); + + /* Set progress bar coordinates and display it */ + InbvSetProgressBarCoordinates(257, 352); } } diff --git a/reactos/ntoskrnl/inbv/logo/5.bmp b/reactos/ntoskrnl/inbv/logo/5.bmp index f0cce0e2fed13750e2369d850177add58d2c223d..b074e82903258e57f9b9851bfed5ada07398a97d 100644 GIT binary patch literal 21632 zcmeI4e{@^tdEeiAd3}9_;D8q(!!V4dP@?Dhq&W>qxU|yvSY9Ko>3VjSwW75(JsTy| zmw-as=~jyLk}h_Yf&imhcHP1N!(%z=j!J@TopnuY6XK4~ys-iaN`KXBOp*4Q9#>9D zfQ~y)@@U+Bp7#QzoUVWDukD=0Iv@$)-tY7K$NRkR_0Rs}$Brxg-x+@1#p^LssW%Lz z3}q?)RH4TA`l4HYbRYPb>N)uL)Tci6Q|h05rdxTR?^B6?`O9kJ*Z;YCW^z=`{<|sl zpI`Wv`m^%CSF4q>`ir%Sy8ivw)Vu%vZ&aOsUjys^)!!Y;Y_*iS^N70OtMfOn>R;O} z&-=fxl;xYRILh4S`|v)0+wrHZZRMzKwQVcqeA0jRWxnZdx!^CU{r<~*-m1=T3)-P= zb<=-NJ@Wn$J}|EC@CBdRetif%{4v_-0I^ls+xv$2JoK*p&b}eJqWxWU(n#-r%_x+~vkjks9ru(jH(sc{!UAv~a9yS3iXIHnfk5%%DdLCxLCdTGhzVzM*p})V96vF+oMvAIfjX z+&=$UDDbJyob$5!<`K0M--(N)c6g^3%VbYgt^T&QsJ-vGcT~7RYk$30oxh>p_0#nsq18I@hR~Wpvd%95 zo9dm{-{rp6hw<i*zR{s_K;wtODSFmj>KHRZw*WOg}YIz$@uEB|5 z@5by+H>D!a2H1G@Qp;6s-giXhj`!q@KEqi z-Dslg$m|Rv^ME?i+AA3W>^B0R1z)fW_xbyt+{Lz^6Kwmrecdf@2)6NxU@s~AWqGM* zcd;e<&_NJug?-O8u$!L**zdfh2xZ|Ll+N=v-oWGDh`23ph(@}%6@=eb#o3rd?EtmoAAHLL@Sz9&UXY z+L$)vUuc97-0W#tb+)Q~C_uk@WBAMVu5yv-auZiM5;339UaUQN*9WxBPu@FZKlRBW zeX+-Wa`AFI`upXYDv{?AlIu(^Zkh z53oMR{Sp&DgN5Yx*M9u_$9niX{NM)uZVqJUYigY8USG~9y44Q;()|1lHO>{0AAkOT zsD~fb=a1ts$U}dr^BFnXe#C#0c2b2u@<)DsrrYJOmUA_~+$&kmCkLvq@o3H8JS&yo z-BT)deCilA-=!it`}~_OciWx*j?lHQ zQt9{|y4T;)bd-I8ZihSUuloN@z6t0!UnsrUOU=0pD)-BMUthRix()j?rO%6g8#)-jHG&R3hQ`rY9*ISS5aJ6;yJ^r?9XiVN+*pYX3zz_JMXJhUqmu|rRD0~aP zgPsKc7hc@M7d}KQ{I)*sck-?US-^@M0a@hQ&o>&+zPVvVbQ{b^_Se#s8{cC~l^?eH)6 zfB6OYvu`WCc#F5ufjJHlZ3}|)MyoHD{aXl5>3)sy3oi=77x3RbO@MI3A?MUxc(rQp z1QNWA3jVe>L>jTKaPzSR$wI{3b9-1~6Uhwb%Yya%yMkr=k6{$SvJq_0K61r}N}^@4 zvH3ZRe74ZNhb8g(Nh~DSo!=3pus?LW|FR&7fa24Ejc!E}4y-TRAIN1ySmb%%RYw8~ zhmZKm^xqMjrZ4mNEirN{oAAAA7Q0k4IalZ@c_Z|hi+3~_75_&D$R-goTVawY@ zk1yW8c`GuptGOb7!Zqk$g)iaALBIdIycZ(A_wbwk_r({u$LT7);8u6hMSjhN6ZYTJ z+54klabJ<`ahj%g`RWMO^9V_>OS&MP%9j5p?d2T=j1zR11~F zH=m>mg`^5y><+5X_cgxh@LA+yuQ70y>W3y;sd~1;*Cl$*(zmr;zVX5jchN=92GJ`O zjH-A8O`O-2vR7BiNBC@L7w5|_X&i@K44>BAAAb->yb-?c-K*X$x_Up>sNRNDZ`SOZ zD@T2-^m#HIk=U)#O5gqBRS!W&Q(bsdOJ=sZzWM!AnmewK!Ig9y?f+)C+ko;vRX<<)Zu9yG zS?;DA+<~ocm)?gQ_C-3M$C}q*KYKIhs$bQ(eESjUvtFRjQr2yA#Ow>#pYo^cQ&_iYmLUC(g%m)q7lZL#}e#;$GU$Se_MkqW_4V)rnf%<|XZn3MajIpE7Rf zYgM}&_p*hla%FznDyT@>iyw^jx#}oAU^I3Jm{h@@HkYk3(~7*8aAm#5)R^96AXR9u zs0g3N5B5i8iWW1XJ+b&ec6wg96%{HM(p=BA>Tep?hbrcBgnMRliT<90t~yMVigF6Mgv<4EkKM-ScEy|y7p!TgqQZrA{7}DpHx`Zd9Ey8WPQ@yR3uf8o zzS&%#A+gEJHoSteD#|JsthD1~OK<|lr$p-J`v(Sikqah;}?>Ri((1NF&cz+Z>3rEdESCc$AqS8suKQd0D*Hsn*MVLg5GEn{BBpetlEn=bykY`+E8hMv;|( zsa&b#;=@^G<*kf0p+aNB-Y$hIXLy~0W9uh3YDr=Z&1sazUpunL(_TA~FYYWrqx$dydXD`I%lult+Co`=T@x;>sPNQ~L# zgoviPGEuA%YuTU` z>&RB>emNcQCzMsB2dfZJV)xH2pC$QCWDB$Nmo{qkopiE*2FEkrJ*$u@WX}8pjItYN z4n!o*`ay~H#FNv0y+Y)QL{yp>5>;xO!W(r+{4u1>j|W+s=qxc@ux72I3a?Z)YSr&K z8FlA)=FGsen$Sf0%rCa}#}DhQf;2)$*$0W5kRUS*yIQT3y(TTIO?=0x;vq5d%FdW1 z-wL|Pc`3W7VsrDCDjU^nvssj{Vma?zt-3OsM~h=tMj}^7rsQLSnDR=_ZA-0IB?IL8 zf~pDCj_FGIN+sPb>$U?r#)U*}#yh=2`CK+vu$DDjupshG;w#z@D=+0U*0|6}lQGe7 zxR4`0-A-b*B`N-nSDrMQy+zD8JY6YN#1G-YcB5^iG!;q~rYbcSFRJsh_mxU%VY#$Y zDbCvBEGfJ_bZr@zP{dMaCY_iR1xkFfZio>lf_K*4r4UV3%Gvn_1!N|rj%z|K!sa^1VwZP`j8xy!w-ww{V4 zADx`PRILko=uh#9OUj-%=PU}{A9&B!s}-%Wu1t2qJ6)}BRb~@dpqq(|@P4LH$@jW{ zfk*L*88+mSmCFfjAxS6j9?4{a=09=D>`~5to zyrw!<*O!u4;kp=b-E}5;1*UnI86WFy=wzyrK!<0WI%$u78lDHlpe`OmJ;N!KmC0ID z*l!LBf#&zucZ!v38{hMoUZG=j5-X;?0G>=tew#4Uq8a#4c!f%CkAFNSpBNCWL%}tu zDN@WOa_34b>l;<4rXtmAtLvNT5uMel*GfgaCsxdP&mzpiY>?^4anO_a4R)PcP7Iu` zC(u5*i}KrDP3Azx2jIvtXk_(T1wUsL0K!RbD=mtBWB)Q zo-H_1OY98x#qYK6#0OG)G@NL*LgrSEXo`yIy1R0)mJF>S2mW6*>k>~})wjIokp+s^ zRQOV9rR<%SJioP4q^j5%8(A{{3OaOh(`7+LMOvCSbfrI6NmI|1BN9Q2YO5s*i>J<& ztVI)fpj30J^x=Wl?CRF4Wcx^tl@B&2=7bVeV2mu4F?;DD_NdKYKG@Km({`?`<(e*g znihE}@Bp!pTUuNd$)rkIRgulQoRq3oudXZmnsV3w)Dwr3Xt(k+Qju-4m3daEnclpX zjezSDYRJ}M#PGfT_{j3vZpp;^wH5=hP@z@jSVTa_-t;brH&}JCTG#6O_i%GbwvB0De^eQl0=jEgI|-0*wSg+ckpe0C;fzYM)jJ=Lm!#NR9LD#)1Y#; zFLt={K`JAav%PHtmHa88(v6qXOXJ~}aJhP|F00HP?<#pY1htDPGM%-xVlAl1+(LS4 zwvbgZ{5zi+l5E~FkgX*8#58+ybQ(P)<=nxxxReyuc-kuC;@37pNPV?xb!Hh>?qTK* zb>aRk?{)FIPNY~MZ~sBESjdJlW}fcC%BIP`on)U%yf2olEcLkJX?S)=|LID)uO%+w zDw7JE97hakeTC*qNQ09JotsHlVkiBq&~WM`I(Ug(+SojEdNxn-HD!v?Avq!5*OHoF z>d`d-DoAoKCO6_E<+Hs|=yYjNhAA!R3X98{J$(UeZ4K2)oRsE@D;u@zUV&&7&&`Ih zw?_9WOYv@Pb&an17k@JF-ZY&vJI-Q>6qYD0N>&r}>nY*|}Ex4dj-%o@jMdjlHytV_4BN262xC~oMV5*JSVL1f2Y(LWjz?Y}xA8oG`jNtQM@ z>7KeoO{-PvG8J+he=;8z{5ZbUZ*-*asHO~uK%Pmcwt;CXypnYh0jt8rxz+Wm*j9V0 z@E>?A@v*NbWQ~BfYBnpO^z_OC6e5e&%?BUNj7gVhXC^TB zI8r<&baXy+qvEx_4LXMcPc`CH&_29rIIpmU!~*^#wz&9+$dP8=XHmyExO08DGFOC| z)#}o)^b%x3b3&pn|64*s`>V@}U@6}0T)KruuGfeUQ2bd(Cj)yB5Ry59Si{<48!{jg z;#0Yi1+w3i3eRtBdgIU`I>s&Nkbk^ySOv=mVrg1`iQn~*aZjqY#0V=B z>VM43yW7RE5lI*p5)|4qLlkn7H^;J*m zuY*idt*q>C2`!2HMAXn}xIya^Z8{|yal~SYM7P`UHOb_GG`T03Pl}&e8(N~JBrDJC zE?*kt=8<&+k*|8~23qIhv#+?HdYE8mSvSts@YB$@JrkQnp#HdQ=gfidv zCTA%f#P6l*n_k|^gvRl>tUB;{WegB`r(G7NJ z%5pv?I_s!zt#8!)zw(d-<>2*KFpu#RK5fiiA~k;wT3jGZ1`FX2S^WOv|;dO z(U!K0bu-m2-mE22w)h2Ez)pWrIwIv}r!G}r9nNP$P*L6a-vJ#N4vLeZH=*&SQlF3v ziFjfY+^aA(hZtyPSBmt74vERCimhL(*8J;U5zS)v$+?Xk@iIqj9xgm1uvS7vFvwRb ziIajI;0HFpb6}pNN_vqBMf8EcB#~m>NOfXy=^v_Fbar=CYxNw}j~-A*3m$BXE%Fj0 z_${nzgE#T-66JX8mnTL9e^T=wcxaGOy2xAF2CM5e>V|NSou}riJ04w}x(lbBK<@h` zH2PEvedEBv2Jd$T`AWqSsoXfc2h~+Le?oJ9x=Tm6y{-;0+<@x>*IcQ6Hwg`<4s@7!H_euI^~CUfyCG-(nzfr%KVvQ>aU3|0icMsgyD@rH*c~=G3yBcVP zZu%NkLbF^_QZeSP)ZX(X2IxSzud9$7$f5Fv>o>4FV)2x;9aL0VrzjVXWL10pwB~t4 zcqXTA;qBMfWQ`jZ&c9faF0iyn;Xcg_j{KUPVb#I{Qw~y0zcSF>Yt9-p_$>DoR!xgqhV&#WPG%xgKg$$Nv>iVM zsvzIlhPLtW=n32jRj*eso)7rFu)pbl&g$aoB9;u*{F})QlmkBX?XOa^l9@ZRg_Av; zP}eTrKy7d6+5KlSv5Mr2f4H$pm6uw4BPF=x;LrxVY7Q-WCceo%!3r~6BVA6-!fnUY zmne)V_#&Axz}22@S8}KH%wssn4aL&N(!-*O92}F~$tJ{%g&x*f5u=A2DVUYNoFzhE z=fue4QDxkj5^px$2G23_y0lwSx{h(?GzH4XnX8)To2dhuXLBn8!+Pz_bSQnHQRzee zd)@*QNur?eo33c0JP?=JFRzHy*L1JR>`rDslf~6P=b*1}d;Wmr4y%gCDQkVpS+_Re zT=NU7lIiW7)D1EC(-wVfn-mE>Qx;rvfHt?E`JreyM2zGv(8)@M_IHx%fX;fla&Hjb z8xAXY$?WN?)QpH<^KT?y(!GL}|6Pr(-7Vl*YuRCn(x$PU;@oRVkag`@dSpM6QxnLt zcGcbrv8EN=H(Af>E1Y_IidBG$WPcAu=zL+if?E{{B(m>D6Ea(vTYA{?na0>V^nvKN z*1^;Stnm9D3s?Eee)BZ7Mj|P#TCfe_42nh~X)fn}I?!qH5>o+c6V^tbuZ|E8R*h9+ ztQyjN=F$^D3HQ!>UJ?5%Hz#gIb_md#UPTu)rb6R|;^h<-M5Z0}^i`TgK?0FgsH~)^ z^x^lCY@iE=?YT*6$%F_hp48+HPdZodKu}`lgkQ0; zR9M|V$XO>nVY`vkaz_A0>Ud)(h#ikasyrNc(p1r7@Tb<+=tpVslA zt#II_vI2*gaGk!|vX;9LP4fW?U1D} zLjzh%;Wr;fO`@TWo5O`nUZU!hoCMc9c1~O3uwaI>v%`M<8f&-kr3!ukmtmQ9I9r?R ztL&GolD9y`&p65qzxED!2##g_ZPn8@9g_|#y@U6|Ko_y$iSfzYL;e;uU_pge{uI@z z14u7et1DI|%rr-)ETU=gIbW>iTx3`&8d*xw16WDz5wb7HixqYJ9zeb4>zfO7bKy&A znQRJ5OzMrbzRI-SURh?Ev1~3-6Kn=lC|x?2VDfR3l_a#E&dV7 zSfQC@t-7XbVHuUMphd~n2D-2|)|sB!E6lR3`B2eZVE=wi&!c4R;-s&lWzk0@oy{ko z_WA@>UUwM%_CzN4FgzEhia17f3mj{m%*t$JgE|1$_Hv}?$kd5UU}_CxH;(-(=gm|; zDN)ftYd4}F9?yEuSJ#THi6TYsYHh2sqS$E?8--Ta`6v5z4L+&q7Ski9XC{06h!XUl zfv&9`=7RKfRi;nxdHFcn5GwDoPvN#p#z@w-7G`H=XNcswc`bCwso2-haOhHHxiZhh z$e9gmJs{0SgKz4G?nE8N3>o%``al!J1BR7JKU7~U&Q4CH|E<3%vs}9}k1jD*WrdyY zOY9NN+eLTEVG=dRutyxD;T2ssMo5;79bWbNC})CsgY0c(P{cA(PA5Igb*ppbw5urto5(hU^;@M!;mRNK&u)=K*UZ^h5unKa#T2)VQi&NpE zv+NXQ*Vtj^#XNTg&UR;54Gp%ZuWYTat=F!{`x;oGxL4g;5Zy(xxsmGTEFJNb-kr0i zW?eMKeu155V#jPEYfXZQ?$%`fs&n?MzrD3yVhomu3m%#a8}WOqYqL_d3TK|JvsJ<_ zj0sn)LP3)k7GR3$Fqh@3P=1P4tek0~D-u*<2dOvKWj23hlVOpzvmnRfPhe*53Fp1~ z)&d%H3!zyoDt*WV^>v(nbw+$$ChgX`)M?P#)2r*Hg+*p(y<%BjU2X9zn+p`1-y4Bd zsv?<-8Ez+<6C`Jh6*5ItqD4nHSoW6gf7)OD4X`fB1VFHe6XZR7Wu*vLZq|F2&EJe( zDT+N~4b8C%o(R!d@EM52_gWZVqhU?0%M>wGkVRfIPk?v2vMjr9&I4EjTx(pW9QYts zV7JJYsV4i)$~rU3&(L@V?_(?)UL=!rvARhwmWnene%`}m@rxlubC`IAeaSKA8cee^ zu9b(^aK;`}u`^@CqhpyYcxc~RTMw<#?<}eVYb91>ul~kb@gmb^{IHRQI5kiy>lH}o z%oAHLVNAHnj31EovhX)%pHLBvS0b0LN7l$aog(*2@o9GW5`BV0=8eeenVl}_PeKn= z|9WOZg|Vh!wQGBrCu}V%qLvnk)S!ASqDgbnDXFf-TK!C^`1qZS6_L78C%Tw2RdT~) znRE)XC}+$(5gL>Aj9$~onrQ+m!{!6l2^Ah3qgNsGQtPVt-l7RMIykUUT&(%u{rbWX zYi0&myVx=xIeX7o=4;5U_mWS6B-zv$*(rCryK+*N!{w2 z+wgCs7P@1ejNkT<(P`qtCo&IQ*_;7t)Et99Yizh{%pNw+Sfkd1)*zoaeUsVA~qC z9}Equ@aQ-`uqvkM_JZscEV?WS7s2ss2x`=xfDlL$XabKt`kPN1n6>s?OF|(7sl6ZHs1MF(k zd#7sPA6C~y(}O5`a8zmST7wVTqsn=3^g+*hfR7$*7rNuDzyA9X=ai(-H4C`eiQ55a>7XyHRJ*JRz_BgW+S?Eky86N-kBQ;_TFb#1e=y$sv0yoOG#6Ct?k7z`gbkAfvUc8rN{l@_Rk z1-7Klw{_JqFGG7B4c*PP$^Mu`gDd%=JTW$k2RNfJ**@qTQ_j)jM~~S@&EwWF zGvJfcHClRWLGorOJBvb_9@qJ*P7cPMWb(#3NOkq=oj%DE`7r``RD}jl@Q=TU z5@;#=*wNz%0q;lAwCGu4nu?=rY{qPas$^q2=}bD$>LkI*s>;*-!ab`%Vp>O^Bw^Av zxz-kZ`vjE`udt6rjs`UFKk*FFh4zfB&ir&WcZe0&`U3Bj;Op0`ORzf)#-+J~3L)}| z5WJ&wq;STN!y3d6XbH|EqJ1KJlq5$q&@Y?JM#%om)UuOk{lDsb(J%AN%eY^#CdTvH zu&PXE@#SN9NqCe@tmEXk;2sMdwL~L0P=;>Jnl+h?P~oLuWp$R`|D5>UMGVTuabI^6 zH+H9N(hHq=yyGZ4%?iiB4zGDtfU7-J@91esGj5C{>p} zkF-g@0N>y<6k2oTq-_VQ(WiC9=b}wpc0|GNH5jpxmcX}+K|IkK8%OJOi{@0ISK{`8 z!DHd0Hs5NC%qnL_dZjVtQX!iDuFPX znIz3&IV}TTc|7nM^8twfl%7RJvMAttQ@RH%KpOlKR65uLW;+|}F7;_Sm|AsmF0yi_ zTWXFcJI*$4F4F-kLr+eWFVMqki`avqqhXPetjLgWhEsB**ddfDE^b_x69k=XK$PPy z#io3V3~kghH-_aCE*x0Lghwkwk4`NK6=(7jyp_yAHn5ISEggJFCYV-MIx|;13LQPE z@j*G&8x_xQ>ZpSgYHV`hn@l!2Rc_(k)>y_WhIC!gdbS@JJg!1SY?!D(C(MjZu(^^R zZR!u#f1sag!iUaP&K{JwI{86#SA4Xe6Mb|`C&n^G$yBk$(pss=4zHvIG9|GakxZuT z&xYd|RWyPi#l`h+%5xnZOue5zC;@PC_q-*%&!d$-?LnZ2ZWDBJm2@HJYr9HcHy}tS-IHn!ZW+@jrnGW(aC8wTt*rc(8IT#7%!IA=xoAZV@;w; zv~jnEufVNMAAo(u3-R^!*W|>OcwxCO%AtgRy@%@_)?CwExa}}niyWAe0znqAQi)d8G8k?MBwGalg!K>)t?$1h2r`kF6 zLFk!`CYc?6uj_Lf+H7cf`FHk^;dd5fNrrO9&G`wu6mG3GS=rc49V`3pqns$lv#GDr z$LUT(Yk8`)9-IOJeK{f8*yEd%d7_QGAkhxCfi6VDc-%~0@)ofo)-#XC235NhR~;ns zG+VoD%!@;uZTfJ#i$^E=I5HRS0Lz|~(>+c9A}fL9z+XGvPhkDh_gsCFM^`Y}Lq01R z6^*uIdySMo38k*j(Y}gpW~A4nTZquh1PKWS}<^Hl9^=PFMFvHZ9p76B)QEj*YZ zp1`n-B(sS?W0D7`QW1Irel~D0?(fUlHqJGGGrt#^?GpEC9Ximl$k?pU2^d|W$?C@? zFA_6jRL-fn@568`4?%8Fs9CnJp6&>i0iOu z_@!<+%cnDSYQ8+Qt6`&Mn&aKllkk5@=%A8X#KD;4h44{_`^ofTq2f!u-NFYHsT!Aq z3@m)KWH|@Ir+sqX(Ylj0q|_!;s)p7@AjRzchlKj0l_jbXCq$bXr4G#|bVGDVYJ{%H z)^Yk+eK&q5c0~)bpTDC)9rxf#n5GsCIlijzzeAbr^sV%PmSl#bw$2T*(k{;M5O8oe zBh(5f4tMY7Z36!LIAdxVW=n_;ReIj0)-uH$C-zMj-sSX5UfNpe<9N9pBwUOlCnO_0 z3li^(-hsm59SrUdGH5;#<785TjsGax5sb_D^2sI!+I)JtGII(G+MJGMb5DghtQ$S1 zI9jj|3r*qR+$_a@d_>dzeJc=SUJ$kee7m;7> z<_VVp8J94R@OXSc{8!EzU%8y3!0EnyTd)gD=c-gveI~nur%rg(qAaT-=_72ThX$Kq z`D`Dxu*>L=CplluNpD1#Od}^!s^!zOr$CZb6~2;tgah4lkYT$a~$Qb)(H5;4~E0!lN{;0iOQg z1R&@8m6Kp=lf4GplYJp(@k`8_WnIn-JAe9h|NU~oO0z~zQ_FaeXI`NXE2n8`srDmP zvano8MBS*-Ci~7IIo~aWwJxlIl$>gp9Vjq5c-SS&a|-XvPO8vhc0)h2$|=Z-Ofcu= z+A>ctpfdyRLvrGV_JyZake8<}%)?9)owTRr#6ohVC(kEY%VmeL)^z2HmSdBZG}!Xu zDW`Ll!l@JL9**75|9$1DNg%Ebpbkr>F5h^NFWx@S4V4~V#6Kc|eR zxIa{_Q)YIjl!l$%*j%>DDl)B|Pjk_Zlfn>QE8Zf=aEb4ur3P}iEKeZt+z8$)&qsxT z_ax5fpvxRRzp{CGs5zMq$5O-# SMlP8mU@Dd0h6EjkYv?dK5FG7PS5crIzchWrN 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 uF;i;5&Ax