From c413e16ff3e3b86e1914c5ebb13e4a6e1f1bfb29 Mon Sep 17 00:00:00 2001 From: Erik Lumme Date: Wed, 13 Sep 2017 10:51:21 +0300 Subject: [PATCH] Migrate MarkRequiredFieldsAsSuch --- .../MarkRequiredFieldsAsSuch.asciidoc | 40 ++++++++++++++++++ documentation/articles/contents.asciidoc | 1 + documentation/articles/img/errortooltip.png | Bin 0 -> 12613 bytes documentation/articles/img/reqfield.png | Bin 0 -> 10837 bytes 4 files changed, 41 insertions(+) create mode 100644 documentation/articles/MarkRequiredFieldsAsSuch.asciidoc create mode 100644 documentation/articles/img/errortooltip.png create mode 100644 documentation/articles/img/reqfield.png diff --git a/documentation/articles/MarkRequiredFieldsAsSuch.asciidoc b/documentation/articles/MarkRequiredFieldsAsSuch.asciidoc new file mode 100644 index 0000000000..c80132db2c --- /dev/null +++ b/documentation/articles/MarkRequiredFieldsAsSuch.asciidoc @@ -0,0 +1,40 @@ +[[mark-required-fields-as-such]] +Mark required fields as such +---------------------------- + +Don’t make your users guess which fields in your form are required. Mark +them as such: + +[source,java] +.... +TextField tfFirstName = new TextField("First name"); +tfFirstName.setRequired(true); +tfFirstName.setRequiredError("First name must be filled in!"); +.... + +Required fields get a small *asterisk* after the caption (or after the +field itself, if it doesn’t have a caption), which is quite universally +understood to mean “required”. Of course, it certainly doesn’t hurt to +have “footnote” somewhere in your form that explains it anyway. + +image:img/reqfield.png[Required field with asterisk] + +Marking a field as required also implicitly adds a non-empty validator +to the field, preventing the form from being submitted unless a value +has been entered. The error message associated with that validator can +be set with the *setRequiredError()* method: + +[source,java] +.... +TextField tfFirstName = new TextField("First name"); +tfFirstName.setRequired(true); +tfFirstName.setRequiredError("First name must be filled in!"); +.... + +image:img/errortooltip.png[Required field with error] + +Think carefully about which fields really are required, though. For +instance, asking unnecessary questions in a sign-up form has a tendency +to make people either cancel signing up, or enter nonsense information +in fields they deem nonessential. Only mark as required fields that you +really need the user to fill in, right there and then. diff --git a/documentation/articles/contents.asciidoc b/documentation/articles/contents.asciidoc index dfc2790ffe..24f563e5c3 100644 --- a/documentation/articles/contents.asciidoc +++ b/documentation/articles/contents.asciidoc @@ -67,5 +67,6 @@ are great, too. - link:UseTooltipsToClarifyFunctions.asciidoc[Use tooltips to clarify functions] - link:EnableAndDisableButtonsToIndicateState.asciidoc[Enable and disable buttons to indicate state] - link:ChangingThemeOnTheFly.asciidoc[Changing theme on the fly] +- link:MarkRequiredFieldsAsSuch.asciidoc[Mark required fields as such] - link:CreatingAUIExtension.asciidoc[Creating a UI extension] - link:CreatingAThemeUsingSass.asciidoc[Creating a theme using Sass] diff --git a/documentation/articles/img/errortooltip.png b/documentation/articles/img/errortooltip.png new file mode 100644 index 0000000000000000000000000000000000000000..730058c554370c8880e3e3ecddead1090feb8110 GIT binary patch literal 12613 zcmaiaWmFtZ*DVk{5G=R`26uPYK?4Mb;O_431a~Ka!GgODPH=a3cLopkk>_3a_x;hc zx@VoPI#u1ZYoFdb@~fgWDl!2w6ciLHP)0%p3JO~9{oDx={{8n74rUVy3Kn1~F8&oL zE>8B<$==M;#uN&Q2P0H%!+z!4XQ4=Y6%dXvnWl7j)SoIfRhf{K24U{c|kEKcFk zA{}6tk2|uI5Mkx0@wbw9AUFIow8+v2G#P;}sPIPKOLtxMK-F-%-#{7f!#=bxRA+E% zTWxMe)T({Dw|_@?H+T>D55BKR2GIe9$kDqK2M_(d2gc9QM{y8;mmF92RNV{S6k|A04`w54W8*h+4e zP*;&?=rpm#9Ou}?`i91o<$80f7p(b|UD#sWj25|0fA_5;Qh1@^hUikRTED6VXy_03 z5chZ52gZX``KC0{*Jb@cT3^57^E&)GocEMN@kfOxD_2%;BD|WZTgsF4K?m*ex+rcYhq@jMrW!Fueof= zeeF_Q0+einA)&n^hOFdD)0j4Ep1g5810m71xb2Mj%7y#`RSum)HJZYzOVH1xMs=qw zgyvYFYVO6XQ$)FLzV1(O$WFF=*mN_#G`H7aCD(5_e2QNo&mz7w5z6CB7X*LD;$Fit ztL5l#D3m5yIdsmj$PlnBT)C%(imk1MPd^C^!?!(*pLJMUyF5Ey$E^LZ9pI|A>u>CN zSgfjHe704A;WzM#O8qr_>DGhfK|w623q3=LdSbt+HMy*^TvJeZ{1`Y%LDelhC^S0V zvNiepHUG8Lu0+2CcXor{Dg>Xu2;fWSOaDUSOYO`2A|K_V)k^*X&`aq^V1naqyJ*j& zT=cHeH^f?t(zBSe&f}z3RUG!-#obGO20zyd5LSO~(I-hN-fh1;MYlO=-&M3oKEusydUMj@*kc^n6MHmV?#=BzKMDXH!Q`=rqU%o`l5T4#w&yw$;cq?s zC+ZeDC0M>^=(n8&%VC#_KKtzXKM-zP+qVx2WOm^bRQakmo`{d+w%1&mraS`f)h4JV z_({15-YU5X`1Q%(aHdSJg|(m@J!}Z+vEE?=$w5ZT843y)^WOn&o;UrDDhvZa3DIvJ z&}VuG0cw9*UYlxTYHvc}QrCaTDvOAs(xjG1C@=t{HS?LfHS>i~C&V!2X7O_S|K?lR zU{I=m{hU(rP1!5FP{y2gr033e<35kS&766pb$ETGeMH#dKAYWqKQF_6-{*Ql*m=J% z*;5f285vYv{ndeX9|c;x3!McvmMAbi9Sm(0TQ|FSWZ=#t@%HqcS|Uv@{@g#YU`8WHa(48ull z_`fVD^sGPp7Z8F0O|ixjWDCUq*8@6fDf+C*58w)jTE%(-V)}1%;$-ANTzeWh8ylMx z{yal^S;mh@O;mlS$lqVr*>|PFcSe>PX{B6dQ}(9OOL$>0fUT@#gy)0eL8$X)JKNj! zF5rQRX{&9QB&2x8UR5Swj-^C7{e}!lpLH9Cqz$K5KT05JkjR+kNw~~wprcIu>g9bf znoxX;^MS0GSddjcVB_WKe&lefV9tIW?8#;}nl77F#g5{yNa&^&@gpv2)wiYAdVy(Z zbo4VO_l#o*2~qAfSPjT@98aMR#j=p_kOLomL@n>Vo=HQQie?- zLTS>arG@|eH_E!ZHs{Wfd5ptE9@mUH5p`Ux=NQ}MRmYPF!iXq-EQk|o`hJj0*{I1b zwGUV&YpISvOT;US#1r;JQYRt>MoxQSh0VtfjG)jHF1|TgP*UVSbgw@9#AZC2*o?(lu01FEu{fvY+)sePaB=oj38 zMP=$0Dk_v1m0ERDk?rOaxw27?jy1J*YkXR5ZWW2HZEj~Eg)AAf>SESf#D}8{ zUukGlcXck3^L6~0;mo5GANJ%5>lJip%hCX>07qe&sbvVmMpzeXl*sB?(}o}S2nj8h zVj{W%vcAt%s5;URt+{*b?%9OuHB2Wvhx5LC28U&0G@o;_d^V5ry7z^kR*g|;yu*7| zj1vOa(TQuvb7iK>^_F7!x~(pyiPkHPXCT$$SlL>DgH@S*`)#Vg(`lX4<)$e5;djry z6piFr@7rTa=l#(H;n%CU#Kc5$e)sd_p(N^H7JixcDdHT@vhOIp!eP)PV>cT`F9O2k zz7DwzEu~OU=X&J#XR#Ot{Z+O0zh84N1SU~g9UG7c#5Bn#=J|=KRJF^3w6G%I+>(+_ z8xxwbM*z3ma-hR|~5fgY6=zI9Vq8&+T+gW@U248On%R3t%OnH}oU!F?tSx zk-B>7s@F+HV3jo$omN7%OvFxqOp;U#!H_tbFkmc`Gl{;kS*%wfgH2M~tUj52LO@jk z=OEiT_Amc+P+7ftg?4F7v*-0bU7Yq&1O^2NG4sH6L64e3I`*?)R}w7PV#?@f;euz( zJWt5ilEF|$>}D0KXk>e4K>p-(+!rn;~}5Lj+`$YGnu=n zL^I0!F7e^K9q@SX9tGk~eHeJH#Qp|L&J^5_GPj7hpq5UI8b~Agjw5LjvN7=zo>zZx z>6fPB1mQSUmx0DcU`kWKj$v;Y?bdV{pHrVq!`iyz05M;P@XO5%pujZDX028Ym}w%X zu*^GLs1;Zg&>ur+-3qX^8V4-xh*Wam3fxSJTP-hE8wO9_bj1cXF1@}yS?88eIww}T zp3G+oyAjlHsW=zijX<7vNZ%$+N@G;HsNqYm#NtJ6Q+qJXBTgq$X7MK>XuH;niH5;@ zT`3x}mQ5u2ZhC2s`~)yzBHzf-6F_nRVEOwhNMW#O0#IYx0WBjl;bc7gq!|ujq_a4N z((YFGM$$$~lnZu$msP4v@52)8VSnEB?$ajL-y+#_42oGkx;dKJ17D9PIZp^`Sa|)k zO$XtBR9N91zDxS)e&$M)JX5MlJ!gY}N&tG4RaBf;43yiM-P-xdawlUsA*6D%a$@@C z%pBB?CVQpCoCGet08U9B$XWh~7SW{8MMHeDMwFn2Nhm(@LN36pG?%&@MOG{WjLwpm zvQ8(Y=eP~AthKqPQRn%nXndI*mvt7qCs|7Y+#9pSVmWYVeZ6+gWbBQnxkZ2!31BiQ zz|K18dmT|y>SUtx&<;cjSpAlt7&7?2D9VGH);AU#Bt48L><1RO?D}A(xVgKU!h#z%%``=uF`ZXPf4{*}pA1A2$$h5m)qMZV?{R zA2MLV=mYr&&V`#B7fLG3{5EOl4@fcl2w?^NgN0gNq;lZe1=F%dIio!j?6V>OHxs?_ z>O1D9Wuc|x*p??xMDn!0V=Qe(n@9F2#a7}ZFGi!&-Y_Hu0iejFRp7H9DltadtNO`w z`qS8_fRUASq3b?Mdw}D8e#Y%N{RY92m&lU7IGGpv zrn6$DOj#ZkhIDI40{$*~u5@uIpU06j+y2Cov>s2`mq6A^O#I4HPZh$uCw7vZ$vEk- zVq+e@pk8k<6)nFfK>gKY%;zdsZe_^b&?C+XFV=ID_gek{(&yY?=0NuSm3nCUCcp#R z9%OkK_0!GloeU@kLwS%2Q^ptFe|KL#9LZ*B!xYA;P#{*Vnk!$LsXc9XVk9Iz;X zhhhOfn=;%Go7OHBV9Y5V&qC5q;n+bUN7h*9@d>>)Z$JNogPzO7`wwcV`cFHox_?~v z1o-@^4;&Vf6%KliBri#ep`V7aiFP$R+!jej@HCeSu>Nh7n9AjfIG%lr~#Ur6s z5dEdVza*AS!jS_b$n}I|kdQopKdVc8APnE&xLc;)BO;auYJMpLS@jcZ#(DXyA&XGOtr-P46~mu`4>q+PpMFJt&HpP&;NG{RiYmL)Tt;Sj&)ac#REF0vA!M<7m9 z);O8vjg&qZ^;#C^R6bEpZjh8%SV(OR6#C%e6vFOG~!-vqgw^U-djKbfqAN^|Jg5A~%-P$mQ`j(FztX&A!<$n}0&;T~tB^aZ|`adcw7V#d4*v&chA8CZ8 zFaQxoN9Ym$#~H=m1H}<5Bf0)#w|MV-(m>+$e{GLbswL^Z2>ZFF!;V&fP3*Z^XC?v^(IP~HicqNJ`M4OSmNaG9~C%~#! zeHZkh!WeoUgSt zh}Tp_S97NSpn@frnqlm(<`opw6PD-ozO%8M21R1Zas=W>ffHGP<$jE5jk<1%fVEUc zo!?r4mRNPxRWA(;+Vz@t&0FxddBXl3e&B=WLkP^FY8d z#%QE(h(^3g)iRIq-x~NzLBZM>*lxwCG7c1HH3^=`s!GF<}MfdByxv zc*ZIW(bjT!A)eVop6K)WimbV4H0bSZstK8T4#M62edNwCIr2U8!6Up_EbCdngRv~? z0;!n9NG$5%CG)%rScRTS{mza)>OMI!aPgxQ{Z%a%ThA>gCVvb8EP0qqBpy-#8s<>9 zE*wl>U)A1py@*2Et{mi@1J87gueZ3KsB?102lzjZ=npT}81MZ(snXE7h$ZF^$*ifv zV2@?z{RYB&G@n}3k`Vfx+Ur1ut_&K1S?P7LXn3OTUDf;RIK~u5OG|rvCXB#u{~4Nx(+&fVAM?KDa!Ej>rguQSbGo9BMpB*MFbi~&2z*Fz57Y`M^fIxV`=UdJuipy`+4s4131XzDmy65x*$E-E1<$&) zWOo0nt3pWLabeQfr;nD0Ee44}X3y0onp@^q;|bAFooFz8t^J13E&0^>Qk^u3=Pm~C zRUek?_L${BcEC!lsa%VcJh}T3kLN!S3tX1&l4-hQMU9b2w|)T~suMk&)#wWKr+jqr zQ4Y#vTKmWh{<+MsaL*>7&tjmdSgVY+FAMM5$gteo{Yn7yMWV~5^$Tnhmn8pKYTwCV z+Ai?m&R}qSe4cYW&;PY0+i94#HMPldrU=r9r8GD|>R)c{TDk?n~{&5FBhcjQ6}Pt;<--T$k0lU+p>be#-}_B3wIIIL<{YxrM06B$a^5?xyKnWzWG`A!)0>Yj$E^GbZ1fIC#Jbb*;n zP2Sl;zOD6^Gg9BZ&p7dUoj@q0Lb|=yQMyrKq`Zyt3&&pHuGd;>(8EM_DMWtYVs8yx;!=Ng~Am)Z+dSw!Jj$z z)pvPTqNQWL{qn2kAhWbb-svw=f87)jM$HEG2xl`yu3Gb4PpRcbTl#}M|BeorQB-G{ zMP3h9quWeQ6&$h~8H@Ni3PX3)z>7#IDTgb^n&}E}cgrwar8U0W3);Pi;OiDpP_nwP zg8Yo25l=4#8P)uZicipkC;?T{rOvtq-)JkwAWz0r@O?t!ZO5; zQnz}-9gH56DbzqR*q{4UfMKraQ>V+{0+pMwOj~RSQmqnSWV7p9`VoG|EX-<`c26g` z06VZh9guzJTMh(HDt@HGuX`a5$q++^6vEn9mFi2H@Uz3_6F>`nbfhd)fpR8Vn<~~p zQ>4&C3m<$dBf|f{h@H2z)fs?OhB{(Cve)o75Y$o)(6wrdo^a;s)uhxXu}qBc!D9#y z6H&nE%7o+cvwh=?!HRW|YTXiP!I>sgmPKjMM6XgZc3rNZ(55OhgWpK-lWmr*w+V-y z-jC_!1?*Lrl<+~BvMB5i47OTDi)|B@;8qFFiXnG+70J)H42K;;oH^PlN>7fr)!mt! zUDnB%{&JhKO`}#WMRZikJH+}dIlSzS0Grt4>v^5_d~>~*E2LWm792e4KRMoP`^I~x zd^+)j>utpIu|`EY;mw^T;1?1YO)55B;8|wHswN_xHKrW!G7Lx35fBPSIo-ne3{rW> z)GZO1hJqC}Luo=nO)tC2*4LrJ=oPpXKhD&ee6Iakh|Rw}l~?&pGE-j3z(BV`!Me5o zG8cL)A$_V(u@+I0dCV?_dCQ+j6B#Ys%4YHBJbQr&{C3Deu+Hor9UC^5#&ow$klx%*uZi>BX(}wb*~@3Y2EMN(xmzx17ml>p)8&nfKTlf*jSU?W zI4mct6SE1-D2#%Zth+E&u{VS%0224k`yYy5Ab8>78gT;mFW*K`$!*iTX!Bsvw}V_y zK!23{sn#kx)HC&;RbO12A#}Ii&u8v8TLN3$#-@L{Kf>B;%COesVb(S!k0tG=HmE&_ z8;c3K?VhHhbv~NPc#nn>1YnG3IHCO7DS~<6-7#vvhIOB=^c@E6c$WI(p7aLjg^Gog^|?7A~6gT6g|L!IbY5@&=%Z6U@I-QO_r#y**1?&ZBE1 zod4NLF(J-X5fA24@4o~F`g&nd!(#;$BB05jJiG0kC$YaieH!w=w`D4eSFxD0vfAto zJjNjk&ylkkHvmP(JXa39Bud+E zjo!!j-t$LAb;0?03QXFX7>wq}z?UWx<{;_|mrDj1qn=S+df*U%ko=f}8YzD?Gg*!O z^Bv!SfYx})V+>sD6CL?LiSS8Q_r+wX+P5v+d11}zGN%b0kr^z~<{VqaZz9H}pl+RRZ&^@&FJ}GT;YfV5%}l~d!Dqi?q>$T+ zhFHf`MoK-kDK^dNL3an5sc(5e@5!kUL+I^$1j70CpX);YJ9o`$w~E=`UZ3NDz*>h# zk1|&)b=aU0t84eAW(!U!Z{SI>ftHW*mn2@x^Lt zLc-dr#d=`m%Qqh<8q|#-ilOsv>k0NW#$cRA1o8RLM>D_LUBoKJ8wdVMVARwFCx>r%QOoCS23Te1II$wN{{aaxgKFSB8e2bJ9~T zRR(h~d3kNYBdLlPB3SOuJk&oRY+g`~dgXOX+ibU7-cqjHCe<+2E$Dq%+rj37o;RLL zLCnSmB4#O6@LAucWb>b+qohwY{2G^AYdq5gL2BGOMfLgqw5y8G=@7snQ-(&4&{E)2 z-Zp=9q^a3ONz*(_7C^EQlLga^kfft5MpiQkWw7hFZc_a2bB5y!E;^jl(zty@6_M&u;x|uA zcvlkE{GQI-*)K>Cm9>#a+<0MpG*{!4Xiw(!+9*B@Z2i*d^hyC-tk7pXsAnohC#V8h z$P_*~=5_-Wzj!+B7mTltuRU6d4SE--f!#O=$*JU6r1Xq`zB-4k?|Y| z)hPUc`!TF(?bk|=2MkMCa=O6DJmJfqn2HFXTP2&WIutbQhCQq{_oOhg9u;)n$N+wj z-s`3~*?yG?F(f{mv#-&r(j4zTevoyKHvvBy_w?UhhJJz5h8c5TS-q zw@H!YVc~=gWUVn|vChDPeehyKoqAHx$ye zkvi7qHnc?jDbc+no6_IwR_*ces8~*{UE)Ud4;y4$SSGKW;b^`g%ZJ0e@%ipTNk%Sy z%g+V9?*MkQKcV+}rfA5^qOCsfQ~ycX^Q8qXr<6s2XIIYs!7r?#?ubCgs>h9iLQ^ja zu-2kDaPNy2p(e+-*1?#vP;NM5QPZ= zdcj}B?zVZ9{LW6h?n(l*N#^4!-fx|q*|hd#&v6K!lKp7%jFqhJe0*PU{XOxVVI!wI zt#Mm6*RLQ~&s7cUXb&gEeLqM5-5P&!Gvx zhbNpm=a#=!al<{-d6N&$B6h+3>tu1{8>lLYzf8HWe-TmWX*cxKK$SuL6jcljTk3SC z#`nLS3(AneUoVccs>skf+bxGu`$)l(QF- z*(U{Ie8!5Y^=@c z8`E2S@&t4SN6`Lop(NvF^(&r9G7_Xn3uNkL+@Pd#l8!nfJrag$az30=>u|=Wmm-?< z2SI-#jVPUkfV(H2$noY#3LXOaxSO98F6%r9LQT{@0v@6-|DyPXnz;|}N`pMcCuxOn z3)U1;B$~=Ai25=qE4|@dh4W^!>yBQ3lJxWTnxv+PUg9-L)P0<4AVuYT4{?UgcSL!~Dc$oeSDx)XsWRy}peI_i-_f<>jMoz%+HvAAnVB=i^PeM1`DN&G363Y0Yvlds-@4gPEd6Xn)jF*#b|d$FEJZ;p!h zb9rAE9hLMupCZ(BW0Zu$AF$W*7vKj~Vd%uGp4uI zCjsdtj%oiW&e5qLJ@ohnrDY}=X-+oGJYXDvGBG16MZ|aAV3&B;)D>yi@^@2u;5O;* z5KnVH1a?tLu!gQptXV^GKJu**7tw!fA^~fJjLbe$bup4fArt>Q`1YQU^^S3ny9{nj zO?NB^{2|K(r4;Ret}ygt#l1+2r;>&=Y~{|B@-b*-D?~D~Gr=zT+qdRA;8?9tnDcC- zOmm?wG?Y@Kzar?;a1Vv=<&fuQm+J7V;jL%}@(L5Rq+ht-$iAcnkuNj zPg-Ze#|cxiflTR>DP`CCA$QE>C+Y*9jB8}7jYflrr~YPP8LupP+Q3x)tquDlUzUW# zgb^&$t86T>K$~M%y6`$0goaIp$^1$o>tv2ld>H(+hIFW`I-^1kvG9U2GO}PaVdBVf z=B(Zu2pA$HsvMr-86t?t_-zJG`CoO0t?-?iE)-0 z%hJyRN5kKV_(y&gSNs3egXXYWiADpMs9t`dP#+dBX|I=Du)48eF*`p)Kj8CDe9F#c zfK#(ycl-S?-DuQ7SEWoM9uy%7QyRdyQcM{kn#*S8HxE{^WQjN?V~q|p_?~z$i9|~)-GX0_ z3VhpG4tqYrGW@WXq%_1KA5a)D%lp^kxcz=NCQc~z^pW zq+K0@OAl?#ow|HY_RL5g>m_@M@rvP%vxw{$c0+jPNA5kjUb@Ax)9{VJOVEDkR=DvU zn3|(#jVwn)gl;2%=857(KNjyx(l1NYJ`^6Ti2%Wb-LAovU)a>ayJ1EuR3w=?c1%Da zDZh}pPnM_z!z_#H)Z+AS_qh7UA=7Zd2qU)#xu}e}nfzh1B-|F+3M=l1bkIx{2$@eqL^m?N(%cB-?YQ$nz}xyVJ0Pa6bNjgYHd@w!2&w zjiqFQiXxvRGhQ!((Hc~D65F2!q7$yaR^rWn+5WwQgxrMs;6VOk1??Ye;$=c(iej=Cfth2t?cznrI@r?DiMkI}$G#AgI929-Q#(LM zamYL2;l0`W0F?w4sb$*=ppWOPDxGplUn6nr08}=CT7t9z=Z?I1q#oR01|=AfK2sXX z4n&L{7Sfl7#$_b4f|6uFOLT73+=45&K|>F{H~q}Q>>~dI?!&Kdbhsv8vRVZyKbsy* zS8%<>U{j$(PuUKUz9mUNt3ZgJ&w`ray<~}k<@Iw;Of>zsvm9#mmf9JQSF*%S@Mf*I| z73?I|hw)t@=#;~3nif1)k&=2@3Fbe$l>2Y@dj#@bLB?AdX9_g|ihAy&Uul$3_C)(D zv-Pa>$6=RxW_m~GkWBfdTl!+}VJt0PFfN<~wA?Sh*5M2faE0``^Ga>yV&pOFl0CKE z#;Ym{Y4KNxFR!>G{SJNVi(IK*PNT4b9_6DALd|5vL7Unlsc=v01cp3#l(G=pv4V^9+;To z01~ZqCanIgL?0o1+k2?{pULajwsSYVP9XgtEI zNrd{ywDuf5{)#qrp(3{vW1>eP0&BdG8_Lm7BmqfR})< z^806}VJzhAhl|GvJ)X|Ix7D?{o`QGXSzX(r76r!z&CZrGARP2;h>}`*A0%k)p%=Pp zpi=e=z^sW4>Ckw#g3-vTI-ah87Rt4OE$>ltuZr5-*eGiSi)#WGC2xW+l?EyQR_t3T57wnt@#1ul?MObT{iP=KYE6uwnsF zmZ{A8<=x9We(he;C|ApgHR#{mKtBLmDl?3I4BQLLPD7Yg?~VmmRA@D(>d!IEdjNy> z8tbPmChD06O5-gl!Jui?85jal!E$TcP;PLv14W4w1ARj*6jEFi-2He&NTc0;sCL!% zA^KqdfRyH7q2&8cZwwVEL#Eqf1M)`UXzayiRUz2gf|$RCiRei{T^wY*OY#2oWLyiWnEWS6y1_Qf zv!~{9?suU7KhLgMcz_dQ-+)uNXDzdS3cL9~V?)4~uWg9&I*$!l9d1gvAJA-i^Z^K0 zhN6Dyib#v!HkKvVK=0~k7wZoZfe!q%=m|Q=WJproQirI`ySoP~rC4Z!6$^zHin}`$Dem54#frPTLxJM%Ufc;TFa5pm zPx#h*S?gwHk~2B?+}U@|o;^2I1tO38^7Tt3BqUr#1z9yDBxF6r=Lk%6#5<1xVLcKO z8iV=UwU?!QaXO@7_N?}Efu^qfB#cV+rZ<#aUuK#R+O7=T` z{eum#iOwXpx-{;y!{|D9w0%AAGd@?U^X1{k0PXvdd972)yXd>Y4|~nOfy+bHy5Ikx&_{o1&mZ3U zit$ydrnIHt#qflfFn>15IatfmrmXPILfH=;RqRK;?;!o?->lZniCqcQLwHRtS>!_` zN`2#dOunTi9;So~b1#}RNEc!tjp<;-<6f6hmdd@ zP8TYHa#b?;5_($Ygv1&7eg}T*9{S8n2c00YT6PzW-s}&Is3L9U%vQ|<^_SbV4^(PP zsm~)nP#abs@&HW%xfQ~5sfU>0PO(nB7cU*G#a^*Zdb7YUTAGWWK5xE?0 z-7i#O(^uDZGgn^8`CzSv0{Y|;mXtMk>e7YfMo%fBhdjxMdtke!Gq#|%P??jrf9p3! z&(taPTk_9DC`I7B9I*Pi@}@CoBff+o7tQDQ8~;>r-|;7;bUT3 zEY}Os=9AV;#yQV&gU^8Fu#aZbmYIUg>X1RtEz<3Thn9ybabN{;qXAWX{#NVhA=cF} z&Ld?jnbXT^i}$sjoM&ic0{D#R>FBe48ohzVP9!>uneo5WgnswUUDD^f=%sBZg}I4k zgfT0Go`get`ZxGd>N8qy^lz9dexbsj;sHEjVr$kM%8bAHH`2xIHQ!ynbV?l?{^*0g zikGce>@p)X_)2TOyr`TN%WJTK@8h(5@T*~gSEJi3Laq(1UEw(lZ2@#qyKh$R+upe> z<5(ZVWP_i(KnI#;umXVh5dpmY^+M1o#Op7Ab~pySsdZx~M_~&+R$Z)O^`3GMys_+5 zKkoMR`ok!*EQnh8^>dlVZ@FA5`p+k= zg9~kft)WVysA34Rim?9;hSSHmRF+aJ*Khr^S>$Ox+T@=&qCh&ZMEvdu?K(@T!T<9U zxZ_1V2i5A{zi|cB$fQeml}_OQ##N!|*$r)+rT?!v{cJp3QC$(8%cQ)}AwzX6BK@WYDym+^Z1~6g;9U3Sr`2GB-DmeR_H-T3HR3Pc?Y>O>`Qc){clYn`dE8~|^$JY#aSu8)36H!nxS#?0VFvfBU zH3^AqelTq~_6elGs~1b)wV!OC-I=Ubi8gKhvP){o$7W3erIq=iVA8zJ`L^e$`*l*b z(?HmVw2Ak7UD!S!5(wVP3dRrMxOGudQl9q!pugYZOE3VKAxrN#&Qc0VVF_<9bNmN= zJS{=aRnZSt%-r`kBUfrd9KMy2>F79y;iM}|bbG={;Gwtp3KrcSssVJm`OJurzfP6j z5ZAN&A@8x~hcWowG=tUixN!%f&p~yB#hgYH&kV(*I_--D8c*aZp08t24<0w4lr1DA z)vtK42U4+sj0cJ5TihMz>dYsZblQEq2~0swA+%j>i#E*z^3>kMXg<*rSC|KZ+yol? z9q5LGk}E51&IdCp!AJ7H3-MuxIh-}IS9E>K6mG{gwhJ}pog`OpeF z!*4yiSS$BqodJs#4cBA^6O=Oo%R27#uK+V1lu%+lqYwf*$km&an-W+(goIn4!!+Gl zlc3D9tWnNn_y=SA?Xd0E1eiO~;ORX1e93VXOP_ONux?}o;{Nx$slRm9bBa+E)(XoN zL2Iv+HpllX<4$3H6Ym90FGL8c?IbQ7@#Fh=U>4)sljr_Yq%|!k!t@(k;>U8h5a_OnOeh7E9`3;`fE=}Y0is$yUmO-LA zM3gavgX*}lp9{*81HK5M`YPUcE1E^A_Qn>Kj9n|-^?Z#t6D zeB8ut)%)^dTC`SsDoD0IG{g%a6?`s`)}qmRZmaAwdh9uiSj3fN2D zZp8dTmhAfn zjG`q-y0Dj!yl%IXyK`eF>IyA6A2Eg#IbEN%nVyceC(gNDLzOe=s@&t9KHlQ)we7ZB z!UUs=<0E{qtgn6l1(4%k0A&d}8LvDd^zTmclFuU_|{o? z3;jMe6=&&Q9E2{17wL@Np9g}0J|`^~kP6=pWDGR>d_CQZEkUL<{YDuky$eqBw&yok zZvw7_Ug^bNE!rd}tSB5vUUOff|B(C~oBznwv`%v?1^MZR$)IMpE?@99uwRL#6D>Ja zGlZA3=y?Wan>gxoRh@<7KF|;ChJ`I`f~bk;qNG<` zSG^sUoo8P_le9U7+!s2~rU%DNWK(*CWS3;WyPY#j-3|~WeFDZKKW_Yml?T17(R_qv zdTD!9U+UjXul3eFb$^(ELs#SLf}h_1m;%no^G;PQsj`R zTNc;^$pkexY~pmjZE2wG6*{L4>`@Dy9?6h^Q6aEPP;Cs#mM>Tjp^w7cP$VZ3DzID& zMPBZke2Ga1r95mtX*;jZd{ov)fZHx7qJNUWB}1A9f7_h&b65fH!dJ>JT!Wh~(yhO# zwpbZF+l2NT9e8Qu7T>h~Mfuv0y@O?Yf2xb%lFhE}RRXHitaU@N&6Z>(x+~-vW#afiq#x-J| zL3OCatDYF3X)vXWwwskzcM$G*7dCfb1=0$Wd+p|Hi{CGhmu=f0Whh8&f211qgg0L1 zm-SQoiep}xN?v?dk;>q%GsgxmC`ekJivY#lE&MAmyQ1IExO@1wggianpGXn3k$qat zb^Ix*zLdMM@-VVE;d)9t(LO2}N0(dW?N9dmz~CQtS^mRr_>d3Rz?oA3k6ZpdK++ zi|z$w%DYsf3= zHu(!xuBPbo68Ud&aI>%lBTuL0!*@e4ojRT6x>YNA>zLI;Vqakxh;zD3$lomt`v~&s z-;T=V*Ynb5lMbGQAOLGY5QgKBQH(_Z(%a)gAQ=GdPxE%KjQI5*$MMdg<=d=y-f^vyo;ms$vQ9>>VBw+a;ufnQ zu$*K@nlvlQgFTin<*t@=-tJ9ZE|EgSnjG>xHRIZ_n*&NOT1whcH24txH5dw^*+U~@ zZ5WSdzLVJFY4z@gb})UWChZ5_Qk7zQeMvfkNGhmcv+mbSI&RN6M~l=j81Wi z{ddiX>^eC^dxifq_Mr$e_y6CC=+;Bd^9A*Cq))l;^|E0O(W(7-fxL}ZJ;>gFDD+GF z<=Tlj|1IHqm!tCjJ%rSqJDC;F)1p92y1Gg}56-h6>C(<< z528!^Ztgb!=(zMSB0iRKJ1_o2@$^5k9hJP}@{fB@DI?-z;-o+JkL{~aB7*wA>O@A^ zSu551#eB8c^4I^JP(vQ6blq4xH+OfWq76~-4iuBPf39hL5kWc?^I*G<8kGLzN3Iu< z&cA>K)#eo{5y?!yy}4lxVc*PdZI$qHD|dlHqbmd?LF&N9+Rub~2gL159k6x+JrJ+< z&UAQdYpegM?n>-|1D_=y-sxutf82nc)v(%4x6Y6r@IE=LY55M9yN86gvPUvC zEsh5SYnJoC!XUD;k}*Val>`O4RGf9+_6DE5Kd#V z>P0`0%jFMdHWNS@!csjd7vv#R);_F_pvU@L5x}3e7^zbT$kS*YA7JHC+LIoC?sM=b z3_a^w)T2T%ne=dbIEAMq zaTM)Jt0_*EFeD&v35hP;$Z2w8Q3&(B;lBaKeKesSHTH)calOr7S1+*D$Os8l|*9JzK$iO+R602dFsT=9tw73KNbP@==BZ@VsS-o9cNNr zTD;3qE3U9bMO`=cZg`_%F{yG5qgIx-pro0>Ll5Sa(f-qRWZRPm?+mOaqT=N@1O(nGsID7V#Kd`=j|mxl*+fvDDk?OX0hUbMe`mykGZu(JuzM`D*`8>SoTp<5nXw2NQLW zzC{SK88NKnj{ZuIjdtEIr*irwCq}!5ku?yh7;a|u=~F5`t0Hq0yfg{WD~@XfZLctj zkTErSh(DMe%4zFb-pfrF7g!~mrmNwp0u*XW^6<_mZmP2bM_wGnM^cYy0j2DjnFbAm z@d3o<0;Aju0q7q*?q~!wp8ZgvG-FpAE~%U&`3)XHlzl)KRs*Za{mAB}cXq>O8fKfC zYF=aPi8)+E0iEb_daC(p(-_2o4Qk#ADBSiCmMpZ>_z zEY}T>a3|RlZ7W-$15@n}r+zTkq!zcNtb?PdDK;?a>$=^>*`a~LQ8r}ZB3DCjcWFCL z0LGHZR}tJSJtw&uRI95E4%WAP^_h3bM8ek=KZ4dm@F1|4~K)tiL`f6rk)?!HeV=bn&V1`x= z)f|t{;90~~j=mwFR_7RGo#$=OWPIM`2R-|uSBHnIe%iiAx!x=iYHzqSK%Ja5Perg) z@TrGaM!xji!vkaPof|INkjPQiTl&4qG04KJZ4;Ft&I4YzNJ3}F^9~l94ej}_I=5 zq<$+6&yosxm>I@qL57zZU|@mxx&>G?7NkV~tPMI03w7y{Xx|_1ivsxf=c|GCB_JJ! z;v!r%v?K2C$pMcIMhto1UeePz@F;mR0>dOJn9U0BtWpJ|{XPc>9OnrLkrlXX;PmF? zP+}5o5bmh;FBqHvdJpB2XM{lRYZ~Tby6%HBmJVGc@CExKO*3LYp~%k{UO z5%|oBl|qa5$(ndfA;5@@OUK+kDCbUcdbxs$O!2 zX_svMTfaAk(mWzJJ;;V|{(@T?4wG>2OLExX7dlT4V4&Gtb$|xfv%*nzUB~Y`z;z0r zT?GDPI1_~U@Qg*XiFL*Ea9A^rj6BmKTA1TdFH6cRnkjX+0vIg3ZEsg0s4D}smRgOB zjHHZmUDEI>DW#|*&~4CA!sJwr>p&$D`nygbZ))W=hG8U1)1WB6mWUT}l+VxbbuP5q zFESMeCjbo?xjU}8U(8z-j{&(9gk+bbOXK(q@-6mrLUquWKj}l$gm7G`K(r#UT|K#@ z7r)fcZe*F64trXae?f(=4lU@SMDT^f4ey&P3Jnia%Ipp|9V*Yd_{_yWbvD$u^@w8Z zHh<*(<-{oUgUj=*lXAZa7f-gcN4V@gJCIq5V3@w}mmbAp_xIqsI06zQjo~eg_XbBj zejfz4gQ}kst>kaf)~D@>`%^p15+mt}B57)ROG;(2!fTJkzewI)JUbjeo`SwZV1THYmH>9$-6_NPmyh1QM)ag z4|;Djr62<Z&8{j zkF>5yZ%gfm6&|7b-l(u{nmPTVaz+V6BL>-9kW(I!< zBUN}lKa)|hFk~z>=6iROFhLClI&|)lLO(U zSV%Nga@42_dDZ)M2Y$)GZW&}8)ZRrp353f@*bll5$F7 z@G1s_cAbAlTz8XaZsI28w5vedt-nYfL@TJ)2B;(;Q`tJ5lPCMb#6_~Z zP&k?|`R$T?#koEsQKzO6kc%&zvDD;6wV&~h;%N#I3hIhiX*^pjo9y6i_R2Ev_Yi|b zYG>lN9Qr!?(5)$F{Vg%Dc^DuhZ9taAlOf9F$ut%>rra~Ti5`h7ArthQhyd!_i0-}- z&cI}QqqL0#N_O`M+zGhGlbgTQ9x)$(fLjp9q>!-rfAq; zu+PqR(sk%Bv+`K-mwgx?7+%`=?wpb`Zq-`YC!y3S!%v8fdKhrH=jrXLco)BV8wzmW zJK<{f3P7xl{w>X|>8cCu-~sf**5ac3fph03dv7pli0~c;?a&vOE$&3uf<>8+Z2q-O zcjJrnoTCqFYL>GkvceYN>--sC7VGD$pEVM8?Z0PAQ3B$y?l^j0g}r6Y=A;?qjU@ zLi}uuG{L)N3M(21y({{%!^x{H(_@3(gR7)(FHjmA`7g6B{w^}!-(Te3=8-a%X4ol7 z=%{6Jlg&KWQrAe-81)^>P>(&1p_hUe(?@q1YM=G9+B=c7a4tXKqLJ9i?n)r~Q9M>? zajXpsAJIxaymRczp3FVy>wSZB9!$+nT{=kGx||R_oUt69MQ_L8BF+8 zc0W2gc@(WMS@dDzB6Adz%IQANH)$!uQ)!enU+JRneVmVN;uk5$K!H+iT2Amu;=@$o z#6uVM1Y9fG62l=*=fPXi_tfu_(mCNWqlyKy!D@x$`=U+kWs`GUY6(CtUwkmiN}0jw#GUV^Y$wc?MkW-*gC^A?vm0y_p*Se zP8^<4v*c?~F@1UGVD9r^@2rL`GuLAEU7+>Bfo1k#pMBzPv-z!p-;LQ{OJC06=aUzE z_tE{NJy(P6$qy@&dG||>dGG~W@KE)r0z_ir4}Kf>`-QfQN$Bh&Kf_}xX}xEzE=FjR zfOuTG6e3zzu}=Z`u`2*b!c-G}uJfMv!j;g`>czxWWVzBcxoN?5dwY%V&f@FM#{!xe z@78Yw{$V?T#m`#1^4Hnl;`UQ=QJ&g7_Fj9qoqQb7drC&gpD24z8{gwH#dUOwt|dCE z#)zM1|Ft!V6n?Eu$iK=sr1hm)Y&(B7@VIgkcuUo_iwlN=RG`{38>5 zGZjCo_;xa!_R<33XCnuYJp8muN9fkCBIJJFK$(oa7^NLU>RBCJ|nWfMOunG46QiMD#Ll`Wq>D zbO)MP<59{fyqp~yT9P}34Uu>b^B6oStZ$anwQ1CEYQGYmxZdl|+i_%8wCT*El_l)K z>zwq!M5x%590*NoIzUpdN}j3|&>tJOY82fSS!Wz=N#PlnyW-0o`0mHkHpE=FnkmFw z>0XY7q1C5VVA(76(ra&&@tztlKI2=yB82{>TgNSHGx+HmFDZ#RBWB5`I?wkR6}!@A zneuLMA|8?Eota~lJ8?G(lZWv+5*67>3SSK|N*Vp=1LcR8co~RE`u?a{b?c4-YJO6! zRDwH!kEgy(G~NWqN!;U@Kh8rxNWaX0DRFNbPf*1jYvS9D=QN{!p;8{{>BsmQwZQtJ%6az6%ij=xdnjdkDbROp=71b6WDY!R$AZw(0| z-wppFmb>#em7%>kjF;Ekuv-i(Fy-v3(Jw|OWYVNS7>HJXQS=P3QE;IUloD?x*cg0G zjdylPuozj>-;R(_RY*}nBiDm~((2bqZSR=D*Nncb02_6`hiU#Q>oY0E`*c^O2p9$zZM`)IztGR)fV3V zr95NzM(%EBB=J~Elr@AAB~}04Z%c|-UYF|m+vN#J-KfMP{-iP3dE>?+*0fM=7rQH2 z6S~-T03cm@7%aM8{H1SmlC54_w#-8Q!sxi2x9I)6$F>N)E45D<=!q@J8eS9Q`SL^GH;!J}8 zOfT$%E$4mVi@4T3%}Ch(a7M4N(*AsM?(_A|&`i!{A!>{2g>=AJp>*X)JnrlE!{_v9 z#Zi1;n(y!O6*V_Ymv_>b0h#VfVh{<%yXPC(SX^p_>)vFg@;*J7%|nKh*SbcleU0?H zBKDBi85XPSzGODK&S}?-xa5CceV2eqK)n%y?#I{7oGc|CF$Wq2r_!|)l{;m?lNc9V z^%}h*nKJ8r&^gPVDBNkU@z9nb$J+d@vaI^^%^9D+R}}{!Qj+?;>L%2G;_2 zVDojuX6|jMym9?zRLr5d0kOMhqto*!`=y*wvE)-NmpJ3Nlu^*-!{h2;U`}-GjN`}> zA>W#PO`qne&qdiICQc3)T#_CwpQmGZQf`KQTgyuHS{xkr7rx` zVgKy!ulJKX`t=GIskXcHTB(fnCqA!Nmq9(|lLxbk7YF5Fml+OopG{nEnKkrzk4>py zZ7$)IkZ2S9F_HWrf-Xwm+UZQgK+q0 zMo#kiYnL%ef!4>U+*;20`D*_;BEvQAL3DAYJLN?wJ@!Yo6>-%vYzqVajnFg933oJ$1cpGNw3`xKU#5)HMu5nSic%Qv317dj# zD*1Ee@;ONiQm3wLAw?nAU1#UuixE7XhznFyFx7!@D(>n`B0ffd#C%( z#hzR{dZEgTO~kzQB2#TNI>lDu@AmiiLO(d~N8-GCt-HAjHGr5`a&Qidb`=ZLRFk1| zozzlJP1hRAaq*cbvo^mf0a>Z>2hHf(-sFGe@w@aU=5b8(>&dS#)lSjQi2ji)1W8b! z`7S)XKi66GzA%`K>ukBZ_;otzzlVdw{rF~gwy~r3TDj_s?oK^+(mKo#y$4FpbNzBe zirXroprUw$B=uKLdl5mU0naK|YBCqzzzhvo$_g+}20O z$1|=@2iz~`?hX3+DNmaJjra*c3!$mmkH)GwD7VMQ