From c9506415d533c61a9607c5b61a1993747bafb406 Mon Sep 17 00:00:00 2001
From: Scott Main
The title introduces the content of your dialog. It can, for example, identify the name of a - setting that the user is about to change, or request a decision.
-Dialog content varies widely. For settings dialogs, a dialog may contain UI elements such as - sliders, text fields, checkboxes, or radio buttons that allow the user to change app or system - settings. In other cases, such as alerts, the content may consist solely of text that provides - further context for a user decision.
-Action buttons are typically Cancel and/or OK, with OK indicating the preferred or most likely action. However, if the options consist of specific actions such as Close or Wait rather than a confirmation or cancellation of the action described in the content, then all the buttons should be active verbs. Order actions following these rules:
-The title introduces the content of your dialog. It can, for example, identify the name of a + setting that the user is about to change, or request a decision.
+Dialog content varies widely. For settings dialogs, a dialog may contain UI elements such as + sliders, text fields, checkboxes, or radio buttons that allow the user to change app or system + settings. In other cases, such as alerts, the content may consist solely of text that provides + further context for a user decision.
+Action buttons are typically Cancel and/or OK, with OK indicating the preferred or most likely + action. However, if the options consist of specific actions such as Close or Wait rather than + a confirmation or cancellation of the action described in the content, then all the buttons + should be active verbs. As a rule, the dismissive action of a dialog is always on the left + whereas the affirmative actions are on the right.
+
diff --git a/docs/html/design/building-blocks/index.jd b/docs/html/design/building-blocks/index.jd
index e554775679156..d915aae51abfe 100644
--- a/docs/html/design/building-blocks/index.jd
+++ b/docs/html/design/building-blocks/index.jd
@@ -11,7 +11,7 @@ footer.hide=1
#text-overlay {
position: absolute;
left: 0;
- top: 520px;
+ top: 472px;
width: 450px;
}
diff --git a/docs/html/design/building-blocks/progress.jd b/docs/html/design/building-blocks/progress.jd
index 7342387a28f4f..03fc09c7302cb 100644
--- a/docs/html/design/building-blocks/progress.jd
+++ b/docs/html/design/building-blocks/progress.jd
@@ -1,14 +1,19 @@
-page.title=Progress & Activity
+page.title=Progress and Activity
@jd:body
-Progress bars and activity indicators signal to users that something is happening that will take a moment.
-When an operation of interest to the user is taking place over a relatively long period of time, +provide visual feedback that it's still happening and in the process of being completed.
+Progress bars are for situations where the percentage completed can be determined. They give users a quick sense of how much longer an operation will take.
+If you know the percentage of the operation that has been completed, use a determinate progress bar +to give the user a sense of how much longer it will take.
-A progress bar should always fill from 0% to 100% and never move backwards to a lower value. If multiple operations are happening in sequence, use the progress bar to represent the delay as a whole, so that when the bar reaches 100%, it doesn't return back to 0%.
+The progress bar should always travel from 0% to 100% completion. Avoid setting the bar to a lower +value than a previous value, or using the same progress bar to represent the progress of multiple +events, since doing so makes the display meaningless. If you're not sure how long a particular +operation will take, use an indeterminate progress indicator.
Activity indicators are for operations of an indeterminate length. They ask users to wait a moment while something finishes up, without getting into specifics about what's happening behind the scenes.
+If you don't know how much longer an operation will continue, use an indeterminate progress +indicator. There are two styles available: a flat bar and a circle. Use the one that best fits the +available space.
-Two styles are available: a bar and a circle. Each is offered in a variety of sizes, in both Holo Light and Holo Dark themes. Choose the appropriate style and size for the surrounding context. For example, the largest activity circle works well when displayed in a blank content area, but not in a smaller dialog box. Each operation should only be represented by one activity indicator.
In this example, an activity bar (in Holo Dark) appears when a user first requests a download. There's an unknown period of time when the download has not yet started. As soon as the download starts, this activity bar transforms into a progress bar.
++ +An indeterminate activity bar is used at the start of an application download because the Play Store +app hasn't been able to contact the server yet, and it's not possible to determine how long it will +take for the download to begin. + +
In this example, an activity circle (in Holo Light) is used in the Gmail application when a message is being loaded because it's not possible to determine how long it will take to download the email.
-When displaying an activity circle, do not include text to communicate what the app is doing. The moving circle alone provides sufficient feedback about the delay, and does so in an understated way that minimizes the impact.
+-
-
- The standard progress bar and activity indicators work well for most situations and should be used whenever possible to provide a consistent experience across Android. However, some situations may call for something more custom.
- -Here's an example:
-In all of the Google Play apps (Music, Books, Movies, Magazines), we wanted the current download state of each item to be visible at all times at the top-level screen. These states are:
-
We also needed to indicate progress from one download state to another, because downloading is not instantaneous.
-This presented a challenge, because the Google Play apps use a variety of different layouts, and some of them are highly space-constrained. We didn't want this information to clutter the top-level screens, or compete too much with the cover art.
-So we designed a custom indicator that could show all of the information in a tiny footprint, with the flexibility to appear on top of content if necessary.
- -
-
-The color indicates whether it's downloaded (blue) or not (gray). The appearance of the pin indicates whether the download is permanent (white, upright) or temporary (gray, diagonal). And when state is in the process of changing, progress is indicated by a moving pie chart.
- -
- If you find that the standard indicators aren't meeting your needs (due to space constraints, state complexities), by all means design your own. Make it feel like part of the Android family by injecting some of the visual characteristics of the standard indicators. In this example, we carried over the circular shape, the same shade of blue, and the flat and simple style.
+You should only use one activity indicator on screen per activity, and it should appropriately sized +for the surrounding context. For example, the largest activity circle works well when displayed in a +blank content area, but not in a smaller dialog box.
diff --git a/docs/html/design/building-blocks/tabs.jd b/docs/html/design/building-blocks/tabs.jd index 8a2eb41455b55..19ed1c3ff1354 100644 --- a/docs/html/design/building-blocks/tabs.jd +++ b/docs/html/design/building-blocks/tabs.jd @@ -6,7 +6,6 @@ page.title=TabsTabs in the action bar make it easy to explore and switch between different views or functional aspects of your app, or to browse categorized data sets.
-For details on using gestures to move between tabs, see the Swipe Views pattern.
Fixed tabs display all items concurrently. To navigate to a different view, touch the tab, or swipe left or right.
+Fixed tabs display all items concurrently. To navigate to a different view, touch the tab.
The Android Design Team was pleased to present five fantastic design-oriented sessions at Google I/O 2012. Visit these pages to view the videos and presentations from the conference.
-
-
-You have a great idea for an Android app. You want it to stand out among hundreds of thousands. You want your users to love it and tell everyone they know. The Android User Experience team is here to help. We talk about the Android Design guide and other tricks of the trade for creating apps that delight users and help them accomplish their goals. No design background is required.
- -Design isn't black magic, it's a field that people can learn. In this talk two elite designers from Google give you an advanced crash course in interactive and visual design. Topics include mental models, natural mappings, metaphors, mode errors, visual hierarchies, typography and gestalt principles. Correctly applied, this knowledge can drastically improve the quality of your work.
- -An app is useless if people can't find their way around it. Android introduced big navigation-support changes in 3.0 and 4.0. The Action Bar offers a convenient control for Up navigation, the Back key's behavior became more consistent within tasks, and the Recent Tasks UI got an overhaul. In this talk, we discuss how and why we got where we are today, how to think about navigation when designing your app's user experience, and how to write apps that offer effortless navigation in multiple Android versions.
- -The Android Design Guide describes how to design beautiful Android apps, but not how to build them. In this talk we give practical tips for how to apply fit & finish as you implement your design, we show you how to avoid some common pitfalls, we describe some useful patterns, and show how tools can help.
- -Best-in-class application designers and developers talk about their experience in developing for Android, showing screenshots from their app, exploring the challenges they faced, and offering creative solutions congruent with the Android Design guide. Guests are invited to show examples of visual and interaction patterns in their application that manage to keep it simultaneously consistent and personal.
- -Videos for the entire Design Track can also be found on the Android Developers Channel on YouTube.
\ No newline at end of file diff --git a/docs/html/design/media/accessibility_contentdesc.png b/docs/html/design/media/accessibility_contentdesc.png deleted file mode 100644 index 651571152ba84d2815a64e3f5bc3edbfe0328daa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 200466 zcmbTdRa9I-w=RmiL(m{WgS)%C1b1(sad&rjcY+0LAV_eRKyY`rpp82m^6$ORy$|P} zhudSU(W_=puWwe>s#P7Oq9l!qM2G|d0f8zjBcTcb0eSavRU^QCP?+Ds7(c!UTqU(# z)f_BbJxrVd5TfP|rT{WoI}=NQD!|0t%V`84009AQ0aVv^)mBvCGjp(GGWo~D49KP)$c%r4ZuT4LmOBd24L!B=&)Y)|E?S8`jm=DCIR1y@kFSVtOJ&sShhloF| z`zu2G91R;3f587g3s%pn1RhVO|14ZTNcc-1VgHA&-R{KefA_1;@T?n7EQbAS0C+8dABYX>p$end%sgqGl`uc)8lJYnch$gcd_Dd(pLLZjF6nB{a` zyM#FH>h)sYFL>@c)&l|M{k00SrcPl_)t__+Z{yHUg%)?v)&KA z=n61a6-Z}`8_cGs;{A)9345{ihVC#Wr}?)#?CJK;o(a2H`C7q{wX=(4rl>fRTeKc} zJoS@VuAF&v&eP*M6G|)|HFjg57OCQcYA1{BC_p^mn$5c(ihomc@p{@Od}#wnZkL@2 z^5N0CQ$cfE8X5}n5K3vRDB24nvVVKBdTXA3DYe>Fn74YPBe8ZJT7b(IHeAxl?&b?B zC$bly%2q-SNl)mgon9lTH^oWttZv1aFT##NYgHk{t8Pv0K@fle#q5Ye-SZ=?wPs !{xjJAR|`zebzt3R(L_DtX% z`H+wtH8{PCgxd#WmFXAzd_UeMoxlT24bnJn^2}eM*qMzRZ9RKBri6KXILpWx06D&? zJvg{oz`R2_S n1#9RQ@l5DGt{joIHgUhN7~Qf= z(izRkW#uILr}$}|0#^%CZs5vQEOC+KFcy9rCytRHA+g6AdP4)Ag*1Asd0PcTBib-} zeZy?un ZTx9%r|Eb@-9Pb{{Nbw;|*}CvxNX2=1m~E*QIAJ?(qwHv9r= zqt}k^$v$ZhcXCO*v#D@PuEVLIoEfgS#|`^a*^2wQN5LD%S8%0KzZAjP+@^ftTM==d zOs32Au BkaSk07_x@;Do;qW8MR>U8 zETuI#f%bMhyW*eW+a+ZlkbN1IFc7o_MHF10Tp=$A6}~72kmiE6wW$KV@)kQRgW8ti zHh2^5_yej@05Xz(jx2HALTW{i35tLI#04Ilpv{!E=HKMUQ^H|s#I`j$fr>@Y4aE?# zLhtXW6HCtA>UTI5Gdnh#%Q*$s9Jm+11uYG!r7$rqKw%cj>$V;xks+#IFApQU+-MTP zTl)Fh%!!UhY5@e&zd=2~2mP{Nh6-QPY<*Z^KWcgP$8Tlgc?3p{B7N5w`Lu`KXn9f0 zxrXmhyxA?NFS>y`fJCLB6*4e$bkg|JC 9t!u(t0jC_{1mW;dPf&fu|^QL1)Ca zjzUkXI=2k#-CGMOz_Bu#md3Vzqe6uI4T(Ov&R02?%$5%4h2RCt #wMdIy&&C_h$$%#bEwg%t_Hpa6(e&rBc-LUxh50BshCXC)bc0j{xWRhg+ zzD5Ff0g2sdDf85x*^%3D#DfeQrR#E|bBTKIZSLT(6N2@bH97w3IH^ygHp|NC#FZJr zmu&B?26lr5gXB=rzNw;!v4xbQI>l1+ PX!JCNJ_>+;{@0gYt3#DCMmzAo}}$GY2g+pA@w~Hr^H&)Ehq^>KN9Q zu## qoX$HU)S+9Dt7&*(M> usESsTQqygMDK9vzqj$}hg`1pcg2cHgk zjUmmpO=Q-ixAK80AYz z9FPsARINB~K#Gn^UC%pifs0)p!z2|YyS8Ss%>d-H&2G(yr{^68D#>vK90K3Eoa}pF zyhwxuQl;={#b67##TbY@-w&X%6A~7|vp}L8L{DpfjK_{XNfgb%$Up{hn>cLb{0@~q z`Y?#6Cfv<0nBYWXUd^^;xuRd=sAXm{({EvCh>+vsh^YOI^_B=$DIBe&U*IOj9@}@B z4Cx;p#{Fn-ri21g1K&1Cus4ZaSd?N5UXM{a0z5~W1b|fiSPU+8I8#O++UG6_rPIvsdH}j+?JUWYzZx%I+K<(FH1`RX$mxpI} zOVbqg*$Vq7vwd#hlb)sJakE?2M^=`x| zH~A)TcP9d#@uJq@5YPOF@(-3ie1M{N$3~=NC)0RePqGjqAgJ5%JB&fXx6W2fnJ;`= z$d~2A7MHX9E?BTe2INv-Qsat8q+W(91oE@5jP(vUE$L0YMo?a@HU{~*sUq$41~T&` zw ws;e?r%{1h zyZk=p&gHUnEGfS4T&PAoTyes@Y;n@=d*CYWrLQePR!8hN*DjR4ythZttNc#i#>Pbg zMh7J3d$lG~6Vb;{_{d^I5RJy3zmn$k!vC_kWOg_z4BL(2O*?#GR>omHA;QYR$e}uf z%khpGSbKj`M-;9X?0L(-As^acS=JCB-4xOrs2UKdl~i#sq^}`h%5ys3$ilGl57Bs5nI0jL@c8bU5|WK>C{D zvGQ WAUwj17Pulz )E_!-kaX*v}^8<54nL@>9F^-;LBMm_}4Zysb`cR2C`Zb9LSxzjbOu z<_Ge+yM2_;w3QHFG?|_e&S;K%zZ)x4JfX!q9vm`H9Rh%D4m5WTjppQyqozWjOWso# zVX@7}q%X)uMD7xS!xj%GHY_G<8BJ3_X1`7L#x8erh0ob;wP 4ji^}TbeK UVotYliVRb5J!Tt%2oH>JgGHe5Ydt7p&UvPELg4m)@re0^|-S z^Qd(vK@b)zV{-w1%2>NMhIgApSYJz{zE2KwYBF{gyf2V@U0HARhrE{gD#!j^+}wI? z?_SNf3_pb6-S~w{mGIu(&K 2>LYIeM4fw8{d1j4TW (%1jwiZ!5pL<8dDX!S%{8qa-g^(viKmQG!Tbn|W88zz1PV zA|Mld;pQEh^u0f19gjv1Qpl%drFv^*RC!QKF-O}It9d6Nzp|LQC`y&%?8kA@3u1uV zgeabD5f<^a TN`?uWQ
PL; zj=Za62bBwdZ&@0tp;a|Hbm6Z7TBD lE7|$y>#P=JRNMk*`c l#U@SP )UMcT09&51C*?@?88W&mPSzM_9Jp(-TjjAi!mprw9Mmj9o)!%+ja#; zVDBng=k4c1jptchdNS1gcjn23%hBq9b*}T)jWkyf-~Fis@jHj=U_~ Yph=(Ve zF8}oqtjW!jK?v#1-$r7669v*)-6{$6PE80Q46LK1h73EcKy {-?ufNpPqfp z(BeOp*N41IzCNWz^=ps@_;!4?A#Wv%ivy69H#^m>yh{&* z`RW(+Fp?R#_ ^pgJ$*H(I zj<2=sxC7`jhpPkweCa;lG-5(cFCB}w#F^Z!5>lV0KkkCQeX$b}WH4<()Bo{^g^VTs zJoK5ha9A8-L))+`E6G7n+u^aFt+W_^gt7gb_v<6)>pAKt+ESB=0&4VZ`}PL-ikf!J zWG?oLru1Q{rLH%r-0n{kyHc6m5JX?gH&`gg6>Sf6JCz+w!g$-A8 z{~%gsDsexh_^v@Fc2J`T$c`IY%4l~yZ}@`;l7q8$SRTZl+@(@>>z_2*lDx)yX8O;* zPqV^b3GYQk@`&{;M4-rERK5+B#@NYi-!5$9rPN%B%`S^awy@x0lsZQM$vCN&!j_V~ z)5+w&U8M}F6n0{nvyRp*-P4KKiUSLq2hM|A@9j&d6>Wt)(bs_PR%k!OVx799<9xNq zS$`y>#peDP0nP58710}v1}uyxZ6I6xj}59_wkR<^X^HK03xIOBu9QlZm@;J;i+)Z| zS3DjGb736!Qwp57tsk_4QRJ>6)+WM%NGJaf)AD`tG=<*gaf^nif8Nx00I<^V*C0do z&aK0fMhj1fNp&wTKkurM^3wZ1?vI5l8lx|6_obY;Za00ra@F&KteF%@S0S}yPe5*W ztJe6+zisIlc7X?dS3wr%!0*RHTBdosK_D15xpH6mb>z4-VY5u*lGO*R{dQDO74ZlE z1ZShe#(+ HxkB$GQ2V4WN#K^y@Ab#k9;Sx-0!vjue_qq-9T9ml >8HXHHEA1Kfu?>-R%1(ic ogW7XkfSE6CoB d16x#yijY)-spzj+li-xP3eC+Jo4H%+wE0) zkR;w?HdPm$X^r2huA?4_cso)L=Ff-55Z4bjU8jW@gB^59wTF?Fx7ZhE$rXqWu{b7e z+@Q=!bWri2#%G4P5`fokqQCoA)QB`}t{|v5n(pQkU|?P_HVqHGK0g+8%l7?F{~7TG zG5AdHSCKZ8iM0h>cJEd(1+YAHqzw(3Ap=G~(3LMvu1Ri^w@$Wasf~92l3`Z$8b{G0 z4Vk?Tqcos9P3a3z2kh&OPCOhu>|_NJ^Dl_kr;d@UmvAXhMs6+WxbPw` W#h+n4CD4*dwg%F*AmzNMwi>WJPV(bk~|5^pQT$ydA1 z+XKE_JnQA3Qmdm&UOAN7!Ruieh^OBGpyt~~jheHte)26dc!fU*978yoeSkVCCfe zXAI|$ jKa6a_UQkr7ymT7Uo+tJc$o;(tWl5Y((TYgf-rKE0QW- zz;4SywYT>}#D;D~ktm$290C-ZZX@3X0wULyRe-H)o>sp5WXo8!Xe;d~xascA>*_&z zF-a|E9p28BW&gCx-{*K*hPm?-)E@9;8b)it*b=}Jif?#xn(%3ZSY60Iz=MOYS+4Oa zO)ti%k!p7A^}*{ZYvOESd=t`zuY`Bw&{^qdoz=xZUpsU{-Szf+?H|p}a*Bt>gPfUN z4LLsIRfvm=mgFl$1*L!;-H;(YmUf0nIVSCE!hZt3%Rw;$iH?3BAnehz32RIijRU@j zqIYp?c2Zvz=#247nwH3*KzGPPg@7~9i{s+sIm&2gR2b7WP#_Vh{5L4J`-oy}Hi^=i zCSwMJa0LUX8#W~Rq)JuO3Vas5-VFWsHB@aC+R!qTa>DEb-^O#23i2>b3@KS^=k-h2 zWpnvG!Y4mNL%&jXaCTgc(!+p>DVKmu9fTHTmVdpmS{@e!8_P%W39<(MFn6z+zuHvJ zEssd1CqG78JIc0VG^=}9MPl1kv?0o?gL9a}`>4XIAPjS6SrF#j`gLIlb@>md7=$oH zK6w>+U2!qdd?pJjrWwB6O_}{lAst->J0xUyH&&<`9#>f#g=38Nc}kZ7o(r-woJ6-h z|8Jo-jiZO4DjXEh^V4xS1kZ3UevxXSw$83Bo3;(EBn1Xunvxt7_Zp&aMLx4_79+3s z4~XpAiDJYbGyQdlQz3k3@~Q~clxI;mqxQt*)cWQV8j0uYl+h6Y#{k7_qBxLbr9o(4 z+oOk~9^sPsdc=&x8ZSTwZC nRftyRb}Nqg^o3O8j0mj(NzFB$Gj8-)O= zz3NVktC?L;-hF;qZNMk&IGGG7HhWrR3GAg?nJR<0eeW+1lUZ_y_SS{dl0I6!M$&!i z+%*Srb0AGDjpA;v7=kQDL~v8t_d%u!GG7FxV~Vuf6bu#eJEe& z6*A>Em&*sq1w0!NbK|=O#iN<9xH+hXnkakd1};z*!LKJxdBi{%z5MbO%vavZ-Ai{F zp!QA2pW$Qx685P+xb#ORsgDAv){ #WR`IHH48ZW zSBplhrZ&>SsW=fe1SO%i>s*1ojCzjSYb vcq_w zwh5;lVxXbiIZO;=h&Ry?X!Lh@OqzW&&j}{B!4^nILS~?;I7W3}`Xu^2YruNa=<8OP zS$`%X!?(tn##-!j6##2JJR19s3WLm8xI8FoHpMmIsCuS3VO*9-)-a>dzlwt(tSv-f zU6^aLVdmUt6o&*!r7mYk%UNuK5reJgkeXp$#ny1V;)}xa;)7RQb22lMgk^H3Fc7)q zuCKz!6}1uFWcPQL4wOH!!=`ZPxzdwFvp-O3V4ib1 >p| zougqfmXb9wW2eP{HD+@+x9;p@c@vdkjfA?5nvvMS=oH0db@R}(L^~ZTN8Cl8#~I_H z$;2vq91({DRK|2;-`!op!gKkf*2pArR%A95Rfk;Hos_P+%N6YG92AP)tJ2D6;B@2T zPo)@ynRx_!OACxjEH}Qh4*mEgkIwInj$AZwQZOyJh_nR|Ez#=KF*x-=P>o@g<~OG* z(^2!g(?qtOtx2(^R54~sM;Q@naZQ9Z8I~g$-A|9Xi9E`kN*6SNI0OSf=cwUM+o4ua z(!)nK_vp9KKDAt1UeoY)QOw$6|F$`QvRR;Y5>Hf>P*^X$ASEFYEmByNLK=S zMN zLOf-SR-Qdb{=V`!#Z=*`irDk2vl$S{S!wS?3)n}_$V5I6fdQMubW+UW1m;M6wK1US zBhNb)D|NlJv8@O`iTXKyxHToU&13@Sm(W`{X)YG5Ca(Gw>N6jIOjj4fxxA&x^dleC zY1bI`pHgZ~8{LMVrYCE#0^fAai{@@{$MV<*C*k+yb9NrD F0AObkf8Y?PDvT*dWLDF>9<9l->(&gCjB_d7pFpEcs8ulT zGviVYKLhQ|yKp?NW< {(fRrjq7M{-SMER?qPa*A2)g_G<$VT{OJwvQ+V z$b%BiEA>=%Tid;@2;kbhs=_T$ZYx})*bJpB*ZrNTg)h>r+$XngsrxxGWo2f%wCGIu z<%n^GHM~`?uWxX0E`K=En!c!-^MIKY0}VhL-$1EhRBmn_*iefmGaZzXQ4K~yqQR`@ zcjC3>XQ5b1t|TbIc_TPtSmyTX_yyfL1YXfSs}u)&$&MTfioW1#1r~^(Bd5+c-?{k% ze3zGPk)T&293Q|$rb6v!&3XWTw9Y$kibkkecD08kY2oPh^ET|-PXEmKR@D5Ho##!T zShV@6)%gT(PGzxqaq1LtCvxV|>FHwW>FMd#yRrw|ms#Dj+^3zh# XBS2R9lYl-V#ZxaNy z(7NfiXG;c-v(nqHe*pyEtK;J*g$2i(P^C*Y^g>vD6)(gc%${ uB>G$dXi0}xMUDNs5qNrigz!nNEc=0G^b<|P feH5%4D zDrnRH`AkL+F_n(Wc4aPR)>3J@=}CqLwc}~@&sUtQAE_s QU!Njg%wUr -xOrbG0d1{8$Cc2 z5geUD>?wGK7Iy}<3j;L2ZL?tu9(E9qY?}BgL8eFcO-gcsrUa(}_eb}-oz#oE9{Nz- zxnD6&%$WcIS@L~y_z2G&z&vVM*`wp*WCWKSZPf`SEQoXj6hSmVVA@a0-%Q&3jF!z4 zfp3p$RNt6{8)#wze$_&AC%Jd30 +5;=50wtHOk#R&T=jqM51Dj`B;F$Beu z>K82qH3w7ZH_kRum0Sp1XyG?=H*puB=%wn{yjnJjLV9Ttk?!tv;x&ImXrx9|i7qj{ zvL&eG7osk!^4z|?{)!u9*pA)2A4BkD+8UZ923y+3)a7v3Tzd4FUlL}IytH8Qojye* zeaWXUc1^4eDbp<%LL+5KNYn+77LC1R54TFlTIiSZoyr};i_RrCFJ|1j8q9(H52!O9 zZN %D0h}&&f2hOHWicvtTkEVykGa|zP;f$U{2x{j_}Xnd z4nd+EY~_Ts9>~zkjj)s XS7;1QhVEs4=(cPT{>~WG?y8qe;+WO$R-O>>xUUI<3#@5%xD_R z$y?4>52P^)l){QuTf(nfW}bNC&A@l#Re79m&I bySr-mgoJ%PJr qyhD~3`Oih2pysqT5ppC2F-RjEVtcOB9*h~2WtY)2z-{9Wav8N zUNM_^ulkChP% IE-T%MesejZ9AQfgb3P3jB^gll>aus-rOb zo}le#xgbJU5rV+4+PH5Um4>=KqboC|tAJ4jS`;)rfq8+MA--vltL{)o-omG@_jt+^ zD)2B!QhY06sbi~p4$mdk^MmnaR79$^+Hq!6XQ3sv{PDwo(Ia%d!K=VPJ-4XDD>+U% zIwUTpB&W;S8S2^Nwy<{C-uzEDZOUz0WtAf%8nw19r1_mcWp{JX^ug$2H`nIk0@5B) z2V5*}bLeO&(pp;hitz-a8=3k~IUlJ2$)>I*Eq@-aAX0(MiUwM*rh24(T}CJsgJ6fu z? (V8E1HC`QhqUX{cnvglDY ztEQBu7)k(k$H);&HK01L l9kQg|DN$%B!L%CncbVYZ%95Ys(-;sD$=v1m!P6iZ zikGI%ibiDy)lRJa| z7ncnP1v;E=@1>V@Gb6Y0{?-_5a3c<+oyfB>?mP=E192B>2u`KSb<`lVpDgw&f6CI( zfrqyh;>2B{Um_VsxsR `ej?SWhW m!{S;7Wnv|SjM`DnT>C)U(tj; zt29Ipm63L%l4x^z_$7OU=2&PzJVSIO4)z=jm7AnBphwFb`ljXXeGb-|`LSYCIH*rw z`Zx4>O57G(97Bh*oJx38z~ nLjCKK3$+ zhye7=Y6w3o4mYt_>K`ANl|U1uRW5rz=4ZRddZ&vP1@8Ev<6AOmmC%D_Is}f^&Y)#i zxnMtAEGsvx%-MPJ8SkGJCIEy+9=94fBq+RJ+f} A}n*t!n05++x3Hhj4XobI$y^%cxZw5PF2UlCe!8I z^MkE)J^LX8kIgV-JSOAp!0hX}WvM@smJED{>Xq2fck6)@@t+NS&N%mwVQtsDP@nHM zMC5vbu`@nP5p6d2_O_c{24mM@VwlVV?=PR=x*U_*K_-aE+4I9I9rc`4php5#TepqF z(R^KGUx#I8QJbRbI?TBy5xgh}!C27O!dn1F2$~=^g_=fg{*NMslQR7;rSnacrE!8w zpMQ_E?l;>PM^GM3REO69O*a}F8TG_h&<1AGex`;++@lOnYSXEr=W3tIT~cMF!o_pf z=WsHJnLbmg9!D!h+9xXt4pf$(KwiO&u~SxCoB+^5@EU}qJ6z7AzSe6 n1X)*GBQH^-+FFAMDghn_+ri za9vaE29$?VOXz34pI`9~u8y<-=>ajZ;joT1PzSmfQLU*L)~(!~O;YO3>PUP) |uR%yLl|(1Y~NHuGl`9SeE=8zh0IMYW`4_AU_g9W!g5_jqw9*Z6y{K)LOLB|D(l zUvj37e81{jsRAuoHOvq2W?F)jE)ukt*>(MXNb#OlCE4YzMkVK({}u$v !?3r0vY2-qrFW`tepGgwi z?;tlr6u3enHs0S*JMIsNN>Tv|?QCpR`ls(kf45rI_aw0wUY;sq@EI4rU7?Hs58XgE z>8E~Zqm6c^hcNznh~wNTffL$Y)m~`0O^l!+t3TQH>cV?t7*SzlBFY#}Q@0|em6#zG zv#pq=S@k~j;tX9OGVsjHOne!Tn<8Ng*V?7gQQ0vugM{^-s6yC@LvAi%%1oZ>7RY*7 zn!$I~Ekg>l-n&h6vs(}Xpz7jT*0Q{T