From ae08a42f8a5ebfa5c7ef6936ec0a294b0134534b Mon Sep 17 00:00:00 2001 From: tobiasKaminsky Date: Wed, 19 Feb 2020 08:59:57 +0100 Subject: [PATCH] Enhance conflict dialog - fix bug - add ui tests - add instrumented tests Signed-off-by: tobiasKaminsky --- .idea/codeStyles/Project.xml | 4 + ...client.ConflictsResolveActivityIT_test.png | Bin 0 -> 2765 bytes ...ty.ConflictsResolveActivityIT_keepBoth.png | Bin 0 -> 17018 bytes ...onflictsResolveActivityIT_keepExisting.png | Bin 0 -> 17050 bytes ...ity.ConflictsResolveActivityIT_keepNew.png | Bin 0 -> 17061 bytes ...ictsResolveActivityIT_screenshotImages.png | Bin 0 -> 24948 bytes ...sResolveActivityIT_screenshotTextFiles.png | Bin 0 -> 16943 bytes ...tivity.ConflictsResolveActivityIT_test.png | Bin 0 -> 2765 bytes ...ivity.ConflictsResolveActivityIT_test2.png | Bin 0 -> 12557 bytes scripts/updateScreenshots.sh | 2 +- src/androidTest/assets/image.jpg | Bin 0 -> 75003 bytes .../android/files/services/FileUploaderIT.kt | 379 ++++++++++++++++++ .../activity/ConflictsResolveActivityIT.java | 328 +++++++++++++++ .../owncloud/android/datamodel/OCFile.java | 2 + .../operations/UploadFileOperation.java | 12 +- .../ui/activity/ConflictsResolveActivity.java | 43 +- .../ui/dialog/ConflictsResolveDialog.java | 296 ++++++++++++-- .../res/layout/conflict_resolve_dialog.xml | 110 +++++ src/main/res/values/strings.xml | 9 +- 19 files changed, 1140 insertions(+), 45 deletions(-) create mode 100644 screenshots/com.nextcloud.client.ConflictsResolveActivityIT_test.png create mode 100644 screenshots/com.owncloud.android.ui.activity.ConflictsResolveActivityIT_keepBoth.png create mode 100644 screenshots/com.owncloud.android.ui.activity.ConflictsResolveActivityIT_keepExisting.png create mode 100644 screenshots/com.owncloud.android.ui.activity.ConflictsResolveActivityIT_keepNew.png create mode 100644 screenshots/com.owncloud.android.ui.activity.ConflictsResolveActivityIT_screenshotImages.png create mode 100644 screenshots/com.owncloud.android.ui.activity.ConflictsResolveActivityIT_screenshotTextFiles.png create mode 100644 screenshots/com.owncloud.android.ui.activity.ConflictsResolveActivityIT_test.png create mode 100644 screenshots/com.owncloud.android.ui.activity.ConflictsResolveActivityIT_test2.png create mode 100644 src/androidTest/assets/image.jpg create mode 100644 src/androidTest/java/com/owncloud/android/files/services/FileUploaderIT.kt create mode 100644 src/androidTest/java/com/owncloud/android/ui/activity/ConflictsResolveActivityIT.java create mode 100644 src/main/res/layout/conflict_resolve_dialog.xml diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml index 59ad8e8d54..c0a4361543 100644 --- a/.idea/codeStyles/Project.xml +++ b/.idea/codeStyles/Project.xml @@ -73,6 +73,7 @@ + + \ No newline at end of file diff --git a/screenshots/com.nextcloud.client.ConflictsResolveActivityIT_test.png b/screenshots/com.nextcloud.client.ConflictsResolveActivityIT_test.png new file mode 100644 index 0000000000000000000000000000000000000000..1f6a3ff78a8b1266a0e846672b06ba8a1c363c53 GIT binary patch literal 2765 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
  • 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 literal 0 HcmV?d00001 diff --git a/screenshots/com.owncloud.android.ui.activity.ConflictsResolveActivityIT_keepExisting.png b/screenshots/com.owncloud.android.ui.activity.ConflictsResolveActivityIT_keepExisting.png new file mode 100644 index 0000000000000000000000000000000000000000..238267d295c885cd91dd258e4dba09001adfdead GIT binary patch literal 17050 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⁣e zSA>M0g>IjbP_;*SGY>HBPekoR8Hj2{37I27h$MXt`~c$?i?p(fY0bw6C&M20VXV>o zw730BN0^5@>iU+mTIk5ze3~IQ$I_eXoyb)AFz{ka6!p6WQ(%d)bUz|9 zW*lR_u!vv+l$V`6>8Y1m`5LNJpn!ZaZ^>7u zGdqdZ;3+buIJoC%K~hCJ$n zTFrwUxFVBPSER2nSL1tLSJ^d9;Ya4_I{Lp>Su=nUSH4wG_1T2ICUMjt8cK{6*@M1U z;V+5M9}9D#+n$(=9a|J|FQ9_itCqb6sqdPB$|G|t&}vR z(6^^-AG2J)1;(Pw$W0QAQ_gA7K^9 z0%NY(IYBuVg+O-AD zyw|=Rqh-I(MQR(}5d6$hc6GHJvc4qm>&`9DLl-3jOS8tuW+p?T40Cs9?7D$|hvRWr zrG=v#gFy9o_swfE^7j?wu^cHie83j;a|ml5%#}Tq@_qa0)oPFM0 u6z|j4zfGV2eP#N8q}KnHh(xEKeZ- literal 0 HcmV?d00001 diff --git a/screenshots/com.owncloud.android.ui.activity.ConflictsResolveActivityIT_keepNew.png b/screenshots/com.owncloud.android.ui.activity.ConflictsResolveActivityIT_keepNew.png new file mode 100644 index 0000000000000000000000000000000000000000..e289daff5890b37d784a2a379a8e364a7d69c2d8 GIT binary patch literal 17061 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 Sm4U++NkUXcq*Umu&;J6w5`;AX literal 0 HcmV?d00001 diff --git a/screenshots/com.owncloud.android.ui.activity.ConflictsResolveActivityIT_screenshotImages.png b/screenshots/com.owncloud.android.ui.activity.ConflictsResolveActivityIT_screenshotImages.png new file mode 100644 index 0000000000000000000000000000000000000000..d9d7e56ee87828372d2cf8501f6041683bcfc827 GIT binary patch literal 24948 zcmb5VWmMe3vo=Tw?he6%1cyO_I|O%km*DOm+#z^y_rY~=cXxLQ5FqH_?Bsv(g zPg+bw&2#NM8~%sd;@!}6X1YG_Trq7P8G^>2PNQA}(@3WK0jwlTtXNj{dAYCZrY3LJ zCd(^6z?I;r6p8}qf;^lLbnRbn-oSj9TU;LBOD_Pe?Y=?{#vTR%E|;$tJm3wVpc%3d z3{fd~%0W$G1o9AQNywnI0~s)oh#`Y$ASGm=b^Kog0&ET99b43pKcUkoDthz0lapN}tDndmiXqAy)Z^FTnlkZfTl@t((3Z8; zVyijj1laLLi(2Z|?VQlBSE=GL+(4i!V#OW{FHuDZ1I}xoCW=&EY%6=syQV63 z-*KF0@&2WrS}`tr*{zi?{(43NTivwkuT}E^9(55)x}tm@3=lH+4vRaE!65Bg?RmJ= zlw(HesXtpRu0A>=HJ%F1*|^e0)!t{uwI5}mo?6&eT=NzHJ(W$WFA%b6r(1cah9sLF z1x=gpkLNCIZ$C|uvMp(mSAhZ~&Ah%zpglZCv#lfeeV#Y)_1eIAJh)MJUbp!?y2w0{ z_+gW8wD>vp`))x`6Cl{fJr#0h31GbHpPEMp$QzXNLXiOh-bX?Ffj(AC6t5m&OutOG zP3+j(o#SYuw|ez@S9OU1A-m`Nx%-GU3gn3hMA@GFMn?<-cGmj%bZlf=*Q z_!i~k4*gyFhZ7`W<=vZ3$3&mUi+G~V)!r|zQ|z2Y;Xl6$IQRigCNb9rOVA!AC=c5>gvS zzu5GXxLe+`s@O3|tCkt(V4l*byt@f&jQPDTAGhjUYujXScqMu3|8AdyiN`V3zCHBu zT5mMeNbbme{;Pk$th08hOZJ~;=ZQf9rkbI(yyN?G+vf#(h0p1-tPL zX*<0?RBsttZb{}=JGY&{*m2TY{|vZVL3uP%o*L`kJ4v7G_UU{v%2gKEw_Uv0&bkER zRL*Jp;nP~Yw!03K=nJ5cvX!%bEH*l&o?N<5&-9|vn#%G0f zh0Fd(B7z3{TRtFGqjb7e(Xj{M>7toyHx2}3y){b zW(|hQ)H59COdjyJd1n*9%_5$s%W9%q4paq|kBU%)qcYIodCAi8c+#94@M^cg+sw;E zf{)@Rpc&<=%l&=a<$8ARMaCC|IiIUQU`N;VWeYmT+Fly>E z^%Q&1=Fc;NUvcoQj?)R^u+?*KOpjAhf$M_%&C89%?p)iu11=tMxpiyTI^$gkIKkYe z{3LcE(1i>*YxY0jEgRgI1xin<=KbmUi_f2x8ynsu@O`J%%0?qsZR%xZP$XmXJ1v-HiqK=FuZ$Aq}D5> z@!CB&zMy~3DOs|jtGv0U`Cit#n67aeAMQZUhki+^dc>Skv;Fuz$hG?r2M)&8eRA*C4lbw1{&)X!?w^x*TkLOOR8ZX~mRBKak8r+AdzQ!mLA_@&AQSU3qMj@iBabvl@hZEWM2 ziN=npKSpWGm>1q+*f#+Elk8up=d3OU)CACjphddP-gB14I1bE3d4tCsf-t_X z8<=i=Ov>fWo{F(b=DFp*{pBrKRXsw<;6l(%cXdueXj#R;W_6kMHEH_LBRnRhlk>FH z?dlKT*37Z6(&)jB$8I{3s<(D<122VGoEalIcGrH^AUNPTa8T@3Q8| zUq;6N1aoo76MaLNC%Tj2*y#+DFPFoo#}IQ#$T(D!8v`tLxMUTLBf-Dxlg#w__AxvP zd3+GR^+?acGuO8g1^OKB)dsWGke^hW!*J8-mtO62SOU>d7Cb7e_d&o7Vc_zy1W8cv zFj{hcXW^M)$FhXATONFO0jugQ;mUmrzTnLE)rMmxbn7@qx<_AZ&C&UL!*GEQuT81( zl~3REb1CLx_WKKvpL1W;jqjWVSg!l&(%8auRLF*x)e(~~u>EE-{&pL?nRJeRxg6FL zxq0EzEs|&31h-Yv4kY#wt?pYbHe(1r@OM6|JKnfG<F(Zl(K`|?cx=7Wvtog$Y8 zM;sFlcXD}j2bUqLE z%D>&K%E9n0<4FdM21g^8jCtC1bKm>>;9VO(}FZ>5F0f$^^S5LsK9$BrrNw z>X+h?31e`#P8*wVJumUU5)1gderF*K_dpy+{=>(s>8`Nq?)T~uhS{(#e{8vXEg@~u zP*0zu?S&c}BHW-m*fPvo`>5<4E@_5~t@@BWY9NT&PH za}Z7AYlV?>m+L&mrwWJ{8dO((uHjF@aXy{>2n`#$-lr;tzd_%2&1)ON_yWa6cEnUp zW!mLq;nq0hX8i%c9MdmgOz6nS|Mv$bI}Dw#UmB__Bbv#JpDC)MFSB(7m>{7627}h^ zdNS$mS8Dx#?S0h6Wk1ILL)cOBa!TxK#+WwU-DVmeP@ptSTR7vm6&&rRqez-7BJD zpPrcGlXB$d?N7|e(&9p;3g2>`Lw<(t32)`%+=+Q~i zUnS6I;1DolYSwp9wgpxRm&-#*ZT6P?}XO$>nZ#s z$~^Yo@9XI2#pklM?o(bgHaa^q2zjK8?43+vGP@qzu#s1sVz1;ftj_tjqtTYObO=yo zig0s35n~T)zbNt>OAF($h~V5Tby?0tw4GqLUN(5ppPPud?#(Yv21~$SXuKFH`EOk2 zERh0o&Wr3arVxqODx<^9`t3qaU_cutacDBnXe)Fg%mMD+MvL|HdEAMgI#!SxAcL zxcXLjQ_|3wBGJ^;_0@4?#qDrPwK?VH!dG>8e7fV@?VPxW4OrZ2{q3&%(%g6?@M5LBEiQD90$OtRDi>%arLm8plbvW{g!^sp*>B}9 zmfOHCzGQNskuuY>-G*UzK+G(Kj5E<$wR_M}-@IS^$JBmNGMT~?Vk4BPKq({q+j+f~ zLI>r?i*6mTL)9e;nJ4Vv?=<+hStwRHd7it}<%8a@%{Ap6OZ5)<>zEhr8$u=YFJo}+ zw=Cx}yL#HLPZ-(JoW(4^qm_0vh!EJFK77HJIEMEo8^aP1g&}_cOfDVFy>c#b05Dlt zPVwVy;_*_E33b(yW$*3z@&|-Cz({8w$YIzv5fQ6AM^$P{w@A>V6L6 zy}Bqzoqo7D0pdV68@qnQ`dF4>or2a{A?@QNYW zn{9m_QfGBqfsJ~3jF_YcRE8;_66#F!M=`eD>9~@#j$%xqr|pd73IQnPzQxe$wIs@M z{5cU{>CJE@fp*2(ITcM0rM>)}A{_xw;e^Td9^1Y(rvOc%sNCGQB4cg2)!oLj2WN^~lme-TvaeR-W9f5j#J7?rE_?4q%OZap?~@j9$O*q2 z64yGds!PxKbiFs8AKtDT%)`Mii}e3}{>GWGk6eP7*Xw(~p?{F+(M<>L;847%1Mo5q z-dBDcw#G5x@Lfgt2m?^!+UcQQw*jGPbP0R%P>^2v?ZI!;Fb-Y{uryUXuMQyekrCDY z*!LwH!f3rBy0e@6`F8SmG6pwohP8ayLaegKNbkg@oo!^r)<3S`$?QA(iw0&q!r}mg8G$SuL6yBOEI))v8Pw11v!>b z{W0Wf?M0?rA-Tp!`vj9|?b90-a8%AC>Tvx0U`8E~00?($kDMkT`Y{~t*k@m|LMq>> z-+%Ear{C<^qnpd%_#<_&@UR3+oU2|!XvGzZM|ORcM71#rs=X4UqWXAi5)ohTMv=*^ zUy~kuK)>4^lj$G@bc?PZJsJ$CYygQmbcfg_piyzwZhO@<=OFJwwL=k?dR&JlN)=jnji8o}B>3#NTKI>ZNtjqo#0%Igf zn|j!WvIbR@Q)$sH{;&YGqZ_f2^unQRl=eymenjcfuK|^Qzgz)zs=_cih@*!Jc~B9C zP&U1@{BO-t6JFc=jJKzMFV;qI^3oD5{*_C)cewCqZX2_ydgeWI5C)IkHD@gc zK^Q12bqoT>1GgmC32Y7Opl@*`Tp`S1|7fi9OcoRljE_bg$jG{1KT!Q6uGRz`0~H=G zNHa1lfY})GQdAd0c6`~T+SAt%#;b^_->jxcL&s*2@V}8@|BcQ1@BG*Q4{i2eGyYF# zGv2HoCaqfGE&pe`@|v2o^Oo%{{m$exLw{|~4aaXMo9$q0o&e6w6zL@D(Um&WVju8@ z-F;S-n_;9_f&8YTO=sz%zCs0PiYC{WV!lK^X=q5|6T9V4+m5Rtn?~aH%cX9Oy0hlR z>s8EgDl7BA=jnhq%8zg;KlR;L#orB@ZPWF<4pZvSo7ZK!{a@EMWxZ}^B@bl{pH!j= z!={Da^^oo2Nd+=&$IaNBpU+#yACGgl|Mcm3zOkU_`c5tO;%e%VhZ8$T#1QjbBZJ;f zeHE*e6?B|QBGz-?ZfRD%j^EHTgE<>J-Y8RZ8#7 z_{f#cUv0Y_Pc6ck_k|$ZoJYTIzrWGQrZUdLw93EaY`}l^CClb@OAP!7Ka|@$7}UM2Z9(!% zbTJ9u4loSZHVQ`FlL^UrSSVLre4Pck9Jk`P`#w5<;+9XJgR}ky^H%UX$zoQE zqD5cB!?CDsx|iRD@wZ-%0{n(NjwBt(u8dcWyz0Fgh05G;o)M z)6kAg9bds)$ldGK`c8*iKIPz<4L02v>n*q9Yprr7=k==#$IG&P&l+yhLl|)6{$If6 z)nX%J(}HY0Aq-jywBb~RdS#;%oojraW4>sP`K^jwUBANK@J^PVf=3o`_4}% zrDt`&U$>lwN$UI2_$>2%|MtQk{%M$ALQ-9k1vG8j)O3~v>>FGWLzLK^<$YSNGjm0% zQLR^gX|zzLEDn1y#do<7HY#w;I!sKNXcc;GUeOA>J9AV0!kM4$Yq1oE}*VZ$Y zYui_qkdQD6NsnVX1RVOze^QjR=M&a`^}PMw74_j15J&X&dyG98q6<3k)_7<5QR-@+ zht_#}wHhfyllX(d#ubLh26K*I%clE$+|=LQ{w9=t|0({PiHfxloii$JROoO6SVEjz z&-)eAc(DE|9Wresu_?ViZgydoN)NS(Cy z7Y~Ve3Nb*4P+HAaYoly{K#~bO;d9=U_7-d50oK0|DD2~*_iL&C_`_-41Z;Tj=9_Vo zGbYe&$mvTjKtwpMVt)9yA6*ku5OPOMWns3Fz27ZIWCA5nVg;-9t7FvZhu^;D8;401 zvWBG~_WoIKsd1-w+^!W<($uHP=SlXy^prf@`sOkYeD_VMR*q3QtkW5a|D5ZgSkwL1 zmWt>~;5hmD{b5)qOdlv(&iUc6JJnlSBdJFnIuu&~>sF$9-JXx5O8%Q@9*R{T>0l%lR&qh1h{Ed!+PD zh%5-!?==4iOR`-uH9f_PzRu_cC!&tD)hzdrU6*qSv}c1?FruObb?KBj3``&I4~J znz}3^5(`1o2ipN0%T|C3-bt@FndvZ>GAr0Ta zQ$!-3lw>==CYU@Hq7xqT<|P|7StdJW7dl()|7Zb++gHSqnIB?i&U=wGL%IFvsFi4@ zOl5jd06Hz-DGRi#o>me)c*`$4){db~j(P_bmDO`(Fety<3^=@PThY8L;sx%1wJ|Db zZF`?F34E`tY94FPRe9chQ{E+?`}Gd*ftCYrkFY`Mt@{^T=%Hafu?LChX~Af`QUSxB zD0&W-S~C%9-sp>2-Ndz|MjwoAf0q@;Rh*`0Gl15>e^gJ}tJI{&_2K(IRHAK5=fmos z`BXI9E?nETx|i1nT@sU3prdl@DIf?s=C;5=PGDo(aW`K9WGO=&%{sKmv)G3y0Rqot zv7HGSax9mbBNVMQm*I^y{R=PGut>zhHAMDsT))v~pz^Wu+4Q|nil06WalF*w`94B? zX#-kU!ExA7^)Gaibp`HS7&r6$K#@!MeRu+*Ubi^zJp`|vK=_0Dalkxuh-lP@fL!Ni zW1FW#$ z=r*RI$0B5S6im9&Iys1_T+q@+9Ia>{#^Cj;D(6YyWScXO;bASdM8R%CrrN4}m4myb1}eLrN}cSG^5YdRC#VPOdbEV7VMGab}-cxn0V z6Wao+qXBJY6|We#K^TTOr+rskID#8AadarA!~PKL2zrZ?ARI0{KGr2j+4@#@)9%7M z6R}r{Qzk6*II5W8YjBZ{T%&v4w^%{4D6UmYnQ8lu=Wh5c+LN-b1zQ`50D%&a7Y%7k>~>6 zbvYhDO*-BHNDbUoxtWk@lJDqv>2!o=0xCs z+x}A&d-X`svBQK4S4P^j_bQb*mhkbaP`~Kx$_zcr#jbdnZS^W1U`7&OEQaV>Xiv&` z-NCVVUn7)U)ByVjxv0UpuPM#JGG0H&4l#Tl57XT4-|yEQY5)@KJNBbF&c{QYn!HQO z^zXXG#KwYv7L9Tj^(5q~j4bO#f6c{%+P-#6g$s631S@=KO}jWMpu|P$a&HBiR`fKL z0%J>O2ESCXGiQF_P+y&Y4gjbdUhFSi?CWqCcSo1%0aS^rRl(+fNV=qFS-d6Lw5`s> z1GJvZmOvmsm)NP8tP61^M`LfU)xwb5O+BS=`oEX!tqSwGTCTd;v^cz$Qs-^PN^uTJ z89!M%kgZ_F*Ku*N=c$-9Ud-CC3c;AOhpFb_Nqym$9Gr7#WJgcTT}STIrhn5gySbD5dX}UtbXNCF6;z4T$!v z-oEB8jfE~{Jl4{83PE-b{?E>1_Khas1l}XDX@qEUwdHui4~eJ<*mE>%rkmDc6A zn`C)#y}VWFPMH{@OTT&ot(_TrDKc1$gE*%`z2fNYYN*gvjHgNKwjjBoMofO04kVS zNm(zQyFWS-sYo^~-vCweaQdfHUB_`)_*SfdtVcmhbC(qwQJq3jMC3)^5cGJQM9Tci zuL@+=5y?Y-a?&|s0D#`J8|VKTMl%1u-5>v}jpP5_H1faY%m4GV|H`m68hSb*$$;}& zRm)g`cyxxF@8wqKAtaMY#iW$@n@K@Jx`Z#fmeA8wR1ZxY?c#gsv%SwH&dU#E4r!ze zbV<3p9%pt~y4rrd@X%G;MYK|^?ZTLggR!?WUTd_v-U&t@i^63vgT(x_kLdg?Tka4a zJ#OEAPTe1lejH749>$?}GENQy;zIJkC^qGsSmor<-(mpY5@gu>EqxWh1vU6iY;-spk~>r)k;19Q=Gc zuc$r)heoV*Q)ep)sqG9wpwJ-%d@n&e4PZ(RuS9-=59e&zqAVkV_#9m55r`u1S5cK8E*h&8Ei6ueaI%_31DhJcw_Y z{4Z%5gkE;sAr$brPnPG}WPd|3_yqyRa!a}nofW6prvSliNNTxn;rFl`Zk{C1sf=uS zu>tZH+H7-6VnJyl-6!x3XeIg|J zl6zcR?xIG5tI+WBdht8mb=j@6LR(!g>SG-B2ARzweV7#r7y# zQK}_!%1+`n1RADwLE5KJ-@?(%rN7wVAV~Z9brM4|UFR7Qcq>!CK13QE+`eyUJYvn; z{ywXgg|P?YhHuV;^(gpTs9YO)eUZE_y|DNPDK01^d4hg-m4@oz1IYc(1Mh`g<@j7A zgp+zpy-R!x==lI|sSj)xygQkfgoF$s(9>z9daaS$E98P|wtVJ312!yd!Yj8PB+9Dk z?L30^`NMOkN28tl1y#kAfcNL^dWgNB zS-82m=^!Wyy}IH`;dEVWw%hEA#v^yiX@xO&-X>~51^A-p)fWa8kWmCx5g%5+C*{6` zP$dABXY%3+MbsXPn|a6(0}0ky^YIGToISRs6cLF=a$dgw*J&cPmn3OiR-BlsmMt9vuS48(*!-QsynGt? zK%bYZ;X?@bU^m;D(k@7DgC$2L+>h+>=|?njEH#j+^(uFxr(b8rh2VDhLuTbM%FR4a~TK${x<^OW99#E#f~`tZ}@$5Yvv z`l%2alBxS?v1Y-fUyH!e)DVgsjPUaZt|ns{tlTda5hi+s^|Y>ADw4~JCP8C47T)Y9i_-`75@7)Y>2#hi)auRC8LlYdPfT zK%nk@n1TFs*6gJ%wf+wUjBzjM>TKPiTOSq~!mX+d7h!nEOAz*dK!CpL^)u$jAdx3t z&w2{k!JLQ>rGXbACdlpnQ$Kz^73jCy7m^ZTg+*W*K6nV^(vl%i99SXdoof2Q>f3<~ z&O#s)*+KnJEP&Dsj*fCoB>}Rc@E3Z7ZlQ0mP94XI#tLJFK(+V9Y!T~0M_5~o(5`f&VC&+_NC&!vC>9z_ruCE@>;Zq3a77@(Yf=MKh%% z-7I~GxIK>xvVjKQLEWq+n&%LCH+#%Ak%WS#nOg==g&~sm{;(wPDRO)xA`tLyoI?Nh z7jYvVBlz>{Z%MD`9W4YWP=25a_=hm=G3ditO?Q_;G z+md$ao{z{EPJdq;yZ0*3K)0H#>M8^#-eK`(fCa0 z60=WE;Vr*FgJ4_dB>3ZMM8-6+nEUxpgIgRiqsT9pkdnj`1uqatOi3zt}3r35HDybA7E_W-v4rL%Exy?r)^XvgNP^GRKH7CfDMkT80QGj{kGH;{R#&{ohdAe|7o(&(r?X9Q=P!m zkUTneOZX#$I2jQ1j{X&E2MqN-o-vJeRFnM1w5k+DR{4zhhB_H;EW@@dB@L4)^9x~e zYcvj=^Y@SR^Eb%%em2Vz5IV_p+xeHs{2Z}HM)N|3o`(sIlQ6YSm>p$A zwvyBIyqni}u~ldI>rr|=AW7rzKSAf5v%5OA$%izIB9Pm)I!8n z7kJi%IrXC7#hB!DcE=>X%Nb1)9G9@KFIMzAk!>c~c^5ZqXiV%gF1m2pB*JhbBIV#_ccQ z3@!GmDo;n~M#uwCEnj>QPY{A+IK_RixmfJh*k98qAWO|)v%^FRw~8J|A=~aqOB7O5 z83S8vDeA9lefmI@4c5D%3I`^kHXw{-NPRqz(%jNvPa=V`Qhb~2d);E{>~y^`4k`C# zgID5Y$s#ZEIk!HJ=N=}qnkA3& zj#PL!M1p8;$37{ky!j9HyiZF%Cr0GwFMpadq*g?j_e)KXIl7e>y;Xfh_;ais+lFG+ z{sFcAonZC`1`*%YqzW_>O45cQM&wmaQ-Pfwv@>+E;b#t?`QE-ryq0|}5lD%{BWm3{ zY3@>x7&#za5V>YucXGKZRZ*`!N>B($mpd`LV6my<5uiv8lM8ya>%u%DTMtNTJ0r^by$oIir8B9KrkCW-^XC6_9#dn!nFlt5YJU5_O$K}`uZ`=wMKv|!FAaWH2kU3{HcDAu>)B609nRZ}x< zzM7xaMb^)(iW?O04VQ=UEXBnz3}koZ|Ibv#;~IY`RTam)GL-M(wWiQi{ltyRinbl- zerpaPG#j-9%1=lB9#`O*MS2GAk} zj0_q8O;+S{U(Q0K1WPl@akL<~z~HXH_t9=er zG*u2ptdB=mr^hG6FHgnnNj`iv3Ejbb5$4WnI?{DsNu`m}5S~M*QNuTvajwj7b!w4t zlRVP%-fGQ^(#v+^k^nYvHXkVql zsD7AO5(mr`1ky-bVMSoAY;YLsGd3FkMrMFKpNJyXw(0HQ40(fJ4Usn@R8}~Mg3DP^ z`pGS$a!q4<46_KAHgKjL#*;70P7vs9V-V*4!o&aw7O^jAUC)US2M8<4ST-btee$pS z&rP%8OBhUH)zG6M@peho${*q3%Dt?fh|Wv46wGRa-lvtSqc~t{uhG!^C0jyx0Id4G zZ0l;9kG z?Yvhc0}D@~d2IgaFR*$hKJj)l?qRv*8i|5>pT~9T$%W!~b$b1=9`f9s(vFm@m3^(G zE;bJmF`Y!CrIZZYs>JK^XGNFR?d*28fC;8TljCObXjVyR?AT)R0U_MjSXk*yx{bJD z5RZ#-Bf&3SHpZxdi2O51yg^(94YqWuH z_#jNInJBcGl z{lBZlf6JrAzaWwIiruOwa`Y{gYpQsoDtg%~3DGC*J3`KOLeN?IU^FT2+i7PkTK!4~4pf zBV{p4&nQ@0v~JubRD^f|fy-p5+7k=Jc2mXRA#XTB{3b)! zRhLTi-gkFeWVM6%?_tl94%>-D;kQ^v7(()KPE0m8LpTxa1O^m-Wlbt*S#}ZbqeWw% z&eflsx#Fg#kz^h~-R1hMpP&eZW2D$Y%u0Ea-J_o3{kq2k*9<6$%la1+I!K&vA`uhd z6z0Yn(vgJ`ui`kaxGki4?ZGw#7T7}5YaUsoGyy48XU|n_IdD8k4M#S%<$)c^`k(>W zhJllhgzQ0VGdy0s*7120n;-wlxJDXjndnZ9EzV0FI|J+9$CY|9*Ws{&w@@C67m*1~ zrtGb%<<-{eq#`7%RY~tEYZV$xIQMxl^NUIJ%w#@8%!+HO9-T)qc2CjwhaQ3ZjNt)CiJ^`=^YW@?qE zDzgV?woBrC-|ad~Xv@jUDY#0!xIw=H-jDMd_k4k|!Lj{n?YMN%Eg3o^P?5`sJiiz8pJ@Q&Z1XzvwMt!R{!-Lu=PL zkjCVASUe#$Umu1yf~iMP;wFb3fBFc-wb>Ny2RV-O42}dqDJ3vfbd4sEwJH&j(%!f+ zqsS7)Y>i!*4wsG586{9QtRPiy$QF5bEO}&XbY&moHUV+&dw0>BS=C5+C5xQwnr*Oh z#93&LFiy!X9hEbNFurR6KrQxZ;xvm3W(3BdS-ojQPvXk+1W*|h7~SZqji8dTu_$jb z(r1p04475xp|yq>rW7BA*np{he&qm>yJlIp$n1hA>)$J{-P67j${?AzLl439`liNrNQ{5;2q=~ae4a=b7XRH@)&@C=T7!e@qZ>{b}vQP(nha)&cZc7>ZlFghAM>(}O@l47D%5gwm5LMwA8ZPfzb4xV{kY zKE1}mYVlReYV)tC12(EU$A$VGJeG;plD2q3yqQiL*3_E`|IYN8+WNQwE7X7>6UEe8 z#H@-(mpWTsQaRDRh=E8#VG=l&YX$tt$dRC=%UoYfA!$J!q4xu^-By#`AT_fUHO;&n zVa$XAUsAJ#(!<=S-=KiVE&A&^BMc$ki8;z}_DQqCoY^3@#ptRnTnKc_QV$fyTtfQu zCG7Po{J5*0JS91Ho%2f#jTK<(o+5Q67>Nd|r&x#v z(tFS2i2o~M@ZH#JGkz9e-PW?#K7+N zP(4s*j1yV5OK(ivSaU2LZdHz~Z=FM%*B|+d+3YdZT*=#SOw69mGemb~RohA9cfGrI zO-E6g!Xws}Ql>6yXj1z>4;c6D$5o5c9~SN80`_?$U`0`!lkqo8&6jZ8GQNL?;#m| z?r{10)dfzK8Wy*Q`Hr^D)Z__#P7&oGntla|j@`dYI$XCC!_7eu&8YqPfU!-i5symj zOZLvM+h7ulRVj2twG&nqMdIQPR;*dF)I&k&ul^Be#zc;e87gh|)`4}d z89F=rf|gu)GGj{m*K+85+@7MzXu>tKazqCJaWiC#S@4qob`}uWfGEA22&|FisLOz2 zMAyNP|on=0MgP!$#-gYzipZnKnvfCXflmaXW*)8P(9!!dSz7 zzQJrYe#yQQFSSM5PSkvW?gu&c6+8FNF%|_L`}gnZd63Y_8`h&;$!J_in?1slKT5^z zreUCx)`+yn@=RN*11IYUs|;h_NFl|UBl>g56`GHS-x>9YM(9qwdPR?$#@Pv4ZSiZv zBq@>SZcF(Q-jp-VePAoo~i!rZlhRvdz_?X@qD0FdzEH|6X zW3pM)7TtcFtP{hNfX(3QewgT)e`xDlL+F_(uY)|pgp=J8L-il%!LTaFiI=&tqWcAd zz~g54V1rE?qaOv26D?6=q~P}$Fx$wk)OB5rZx+Zc#z_rqO08u`e}Fz(DsiRIq-W03 z@#6W)(0oFsVcfx4+_bdOno0T-N9gZBBw=Ev#B7dq1>rwpqYlCCYEMi*Z{H%Ln{T9w z6AQ%9X}d1M-UJ00jd|q4{qpBQ=YSVwUurBSN`g(QqBYdM{D=%+PleVwbT$Pbudv0> zk7+Y1o;3Omzhkf7YnUQsq^cYEF*ez3=qNE>RT&fb$5Wjrvi@7b5zIR51;?)?`u#3NeCzkLP$q zZU!eKwK-Dt=+h&hb<}{s#ZO|rEP>c;EoNzePV+?oP_s7{S{cioIqmDzP$-<&SGci0 zE9ifpB{ILsb@-BAT=^xbDy;}Juti&5y%U|)y(gVzO_RwA-k1Lv5xN-qL<0;xjvo!( zGIMm012jsja{LWR>Y#J9!9>|3BS}{vT2B9Nh&@dvQ2ymlRugTIU}M878z%;9K44Vr zXB3bn^HCRexSAW0Joq(PgMkj|WCplvY@~X$vPf4o2uJR+AJE02$*nkrFJxid*Fwm>^7T*y5?WEoAt@KLDW10q10^bcA0fBu*xi2IHvgu&JMJ0pnYQ?$}S ztE||*y}K<_?X!ixlpv%d|AwlwCnk@hGW!#0c0BtBLeS z4-Se5NZV#Q)b_%HO=;~w%tvP2T_O5+Z$7{Rl!k=7Y^pagOaN#DvCi({!!k*F>R*= zQP|ms41D1NJl!RQ&yM3RgQq#o!wc&TR2fC%S7{j0p)>C>7jpl;9E%mzM&f3lF`1s4 z!V(uWP(w!~iWRG2ZYm34Ncc(B!67a-+_955AvU~9)wZ!=CC2x(3jJ~jQgb9Ca?{q) zv-%h#V17xf>p_4hT52Y<2xTvv63$Y;6f_f|=hqq46GbX}5L`(kJp^ZKR&@uH@U78| zI!6`{Hth?0Jr-uHRnrdiw9a^@m;sqHMz;x_3&a5{p{IkLKlJP!!je&aQ9|%Y7Cq?#r?@Td4!u1Kply?$8e>zc*P`h5cvR|Yw z(tSLQK`97O=LWu+Esizpdx*TX;tt4E)j`WvJDvan09os)v$hBKdRMi2WngS8TO5&c za+cMZk~7Tqy~s{bk2$=@JbcE3AmYE9N*a07yGs3kHFlO^RfK!Lrn_6|PHBlnmmpoz z9Reb-=n#ZODBYdXOQjZ|l(cjsB`mr_5Rk4j%l+~p?wU3?hknVDyv_|JX+ zu*}$2l^Ei37(w&VG_x&}t0PoIX0e&g!uund(X)V_-^j>6B1H5|XcMl=)|M#lYcG&d zLT|ncZ1-4MNJS<-F1;0Wh-%tJ;WDV{PrgdeeH@_eC2>g6><^aTj{|P#t{=+w$a~T# zh0~ym4}-E)o2I5;J~2*W=b$fC?Ldn{BcJ0-!uCyG7V8L({9erL33p}=87NzKZEL9= zx8DubH7kSUV*EUoKL*xU!3F%JrXKEtH29JOM(&?uJikZeHwu^&0CUlYFF!WH_GFXk zj{Gx^&5|RWr9nf3^vp4p)rudS+)0{sRYYp%x*Q3NMIzIeRrl<`&Q=j0IpQZ@u4%IF zWmlN2g%2Bhw2fbSuEHh7TPB|A&2w&Lf0W3PS*3QJdR>f>;mFq9@w};3+$pv$SO_>J za04OWb>oOm8dqu_Zc8tCbaD|R^DakDNZoIJBc>sI-sg5CksfbMD`7LnrA{cC`f4K) zdP%r>rQ7Ah1Ad39H(8#>HchWctncNvnGPv>tEc_sUngnVRhN&rMRC z9AFVmQ=&Er@*Qe~3`hJ&CP_2CZpwh8fwzwH{KiZ-$m314%{KQc5 zxSK_&sa~{=ttX}76jiIsk4bdn>x7AibqaJKI)=ydF*2f?eT6Itq^WGhxjVf?Lh~vS zI?gmpC79lfk1=46Iw%b%7idtai~E3=;vNrqo!iSsQfp_N^Xm8kptkt<8@AXQPe?euFK1Gm5H-;|NLfjR8$7&30PLSDCNDw7Eq zvqN@*#G^e>DntXae$vDEPOv`drl})^!GcbW{T+485Fsz8de)Ee@ej@x*9BLetNI%U zEFSnqQKwBxynXx@#yzI)+%>k&T+POAVW#tW@{)~xmZn+BVv5H zqRS%%>J~dye}w#RJa?F^RX1i5@E&{47*&8Hu(kEjA?!=Thl!nt4*@FgSEs2DXP>eh zTjpto$HN03QPY0hmw83T5~^He=4PGvr9dg2@Lb8qjc1~iBEK=bRE|t8D!e$#QN)ai zxYyQyG@1Kl zR;%>4LPk(gQ(^LIqWvfTb*G){V%g!dTe^tk9Z7NgiM~t|sLfW1x=^5+s)x{|{29_a z;H~kZGg3Pa=$|p^ZZuuZ%&jYmW_zZg=sJK`B&gu5)cJImLVISTJPR(_Fo(ZeKf>Ec z!xpqTbVrSm%O(qPUIqvcqpi`r76ZwBz?-;=NFmvnTw<{yR3$Z&_=viy63*t-H%@0%H5?QA_0PdPk&tc95WVwOhMNflyCi8`sc;u5i@z)-nT5Q!>Ne6dNDyG20L9U3MK_<@qS!)8?fN~>97^w z%Ml%_ZN|&5ze~Z(j*|hJUBEa9Af`{&#rg4^Q7PM z4Yi!6vL3w4F_8a7My*c%gc%a;5H9mRP&`ah;|28jK?MHKeCiVMU zh5CS8N`{2@yxqI>p8Bv5KTBz4)r?^VVM}nkYEmomXNTlrRitfWn-qT8!Zm>%gBsP{ zM`MYVSp;7cMmZ3%WE+L}lMbAr`0VmVg{r}?R4Zk(D3zRSjm6?Z5X)EgSlX5-v!Ju5 zpD&pDeij(mlw65_OB*FuY<^))AC1`A{#WK0VkiCIgU9|ostg#U|0}QTpAf?r3TRCo@I$Qv1vUb+ujZ^evL^7L~ zECoO!tzo!xreBiKVPfGZVs&|UwjP*d8RLph%Q&`nw~Gc zaRXRRt%?2XZFC|HtY5%*xVfGnjoPJN$0GYu zDTc!7h_EUOfOu8L@}<^YpxOve66d{YxJCK0XW+x##n}bE$Q(meP2*B3r=Hh?aotNN zQ~~gcta0$&+36wf!q!Mmc^|n5L)zg_2LOaPnNX(R1)TnKz)^r>p7&jGNnsklk-G}3 zIRG>@4*)A7TiiaIwalpeIni*3%?dC`5v-^3{#w1$kCSurMsVS9rhtMbXqRPV5o2N=P~z-PHU_v}6Y1Svego)9 zz$wiUoFUn$8KzBffp!y^9$@Tb!*j(Fp^l7Q%{FP5lJ)Y`98{A>W| zWaZ?$0C+q73&8c<53c1M{MI2DC<(V`J|2Q}Vc0)*v5J!Sm9 zEYGn-FIU@HrQ7bg$C%uV#Y$D!3lUd%V-X6bfI?F^E5H^6NxTn&EvbjQ*4A3#pj_ilhcjt1J zKlU6!)ri*R-C0UBuxW5O;Vi(cmv6u!yaw>O4d-IV{}KyLOp$E<0Aiuj7oVK<&nBa9-WD^d7;a@$m(HFCHK}L^v5a znUsx#cV{IUEZk}xM5Ouv0zh8*Kw2#Grfm*;f#i7nK{Al#j&@pYeVJB4l|6NSobI8< z6uB2xo)VTCF0GQ00YETMjIIO9G801doZfz7m*+jB15@0t41TzW)f5qsqk6vqt|DF{ znn=`8hPDc>x1y3mDMmI9K#`x&(K;crG(L0I&G=P)rD_?kswbMHwF{5Mx$w}su<7Rj zzWk367Jfi{TN>(W^Kmcrnb@rJ*_&!;r0XpbZznmoL4SV|^JzfbG`x=R(7XNa{Kpbo z0Njrtm-1q(Ds1d_|MIX;bxgqTw^e$_mqcayAbp=jZ^K={YD_P;=|DwpuolqX;-7g3 zYd}WD*l~c0?r5+6Wus*jwtpe~*Y>=QR0%f$ZMT(VMP>4?h*b}6D4tXnSrer1JiqmJKd@hAH3S6Wrr8<$bf#CTlzdoXeQBcW$ccvBfe zKqv{wiiCLu2!p)x&W4UO5+C%g&3`+W!-K?BHwV8^DsPWb9`sY@M+g~BvTY#CDi10i?P(t8+YW=q4 z(zIXyM_i>3l|m{UyGp(t_WpNatlY}VlMvBjaN8p^qIGW$!=2cxg^8r_#?G#jO3(^C zqIA?WE(4=$6BLAy0pg!i`fLSed_<*{HA)~drp%34cCRKAo7_Sta83GL)vVe_I&SM_ zfP=%=+q!}icmV6Gr;H4ZZxRv1Ajhyp|NWDB4Tt;=K=~)~+0ckr`>5DG!&brUMb;s> z<5y>DkY^~i7ErJleGvZbvP*UgJQy?suzFkR%g%}DIY+Md=DVMd&D~~y@LIF z+otF=%-s}=Vo-W;yySVx27ti4TFVP@CcUBe-$?Sewc;q}Xs@Zzo*^;{B_JP-33#`x zme-IT&jTs|%gH-hL#`P*&~=6*Tz#?l4w2UcGt{Q@-ISr@7c`S4AEvi^up?2KMu80ub7mgGzrBbYP!GPe?bPLC8svXX(2cy-R|_R zk@?y}=b=^*RuNj07Q||5H#Hk!fl$rMPiFGA7N3iEf#jpJVzo0!qkvCi3&&I*^5LYkC>T zphj<3-!}qz5sVX1tTt}KbP6tZxQOfRh|J-4Qmt6b)w}g^+t%BYq0>X;wMcqQrnVX; z)KUCd!tcHGW_-X%4DR{RfK92sdMoNsdNm6{-$tvM^dt&BS;?>;9^vtNKsNG?ux}%p z!i^;ShE7Bxqgy-WA7lk7WH!N5yi0$rsJ_^=5{j$p`W{+@FUtm|x>0hfYvPP~>Nzw2rQPEN< z#_+SKL=jeS=0n7kDDOwkbUgXSKp1wOQ6B+m`Q2u8jTa%sDFr!-xEYm<%TSoG6W0p26SV`~uvK@{Q6fB%_!8l{xP>s}g_U#L(8sC;OPM z#*!O2Mp^rdR*XbmhrK5KXVYNdA|Zq2_tYgc{jl?+;0M!q&>qxJ=|R^DzXhSuP{y#9 zFhjglRWJ@HxLyV^mEdFNqKc2QY2{atV>*wfnJ%J!zV40-J)?$!`~~>mg;;Rc;#n0M zRZNbNQI`}W&oT?zx8%AYPA3QHUU^!J+R>Nbj-(IbkvGF*Azlo+SoFT@1?F~<=X$7M z9^D~^Jp6!?{$dP6{8|XgxWp55 zE^1lF(+cCddfoiMlL6KryGSKDopZ>Hw8)CeOr(-!7&X$wlh4ozY%zi5RxTcmn6^0` zRG3PF122NNCmfq}Bip%Z;&l&@5Mp^NE?+Q#)lpjOIKku(ggTsVT@y{_Bjk{27cpRB zn_-uq|J1=4d&O;e6%7Z*VnjHBQ-q>wKrFUCD#mz%^tIy^pe|LA)1^Iz18ES~VHO-* z5@zC=zg1PPia>evNcyR6tAb%mkD|^^cmf>n4WTY*d z%(`|5Y#Bt`>Ci@z+ok_@W&(CZ!0|sf4FBr%h|)SDCkFWOKW7^QtMC8oVSkVKpAY-D z6aA+R4N%|${``O6(EO`?K#}PGw|(;jYKEny&gQzwQ6EN@Y;D<6f%x9k5sdTHJCVcX zvO|}jpJJ!VQ9f$1A+BkX;__mMeh`SbrDcTMy4 zb8jE9Nr7NZ+Y~r20$E|_F+Fe0_ zFGM}RMR73`GtS%)<81ipQo$qZZx6rxYxA6Twx5`@KIGhG!K|7;JtZaclPq|!N|L;| zXWDi8PHHfB-P*k268vUK(BE#JJwS$Z_&g4Wr|@g2e~`z$l-m#xkDHE&Q1zCsSxVk+Z;N>?0)6lL;5VQue&1_o zzmB|U-?@!H$(fcYUQn3|B+ovPnR6(? zmSlH;Z_2N_ zdGHedQEm0@?r)6+xaVJpBws6z2*TKlax7;Xw33N@yj;NJoTxS22JX!J_UrltM%*JO zp*0)8A3u(D4sqCQ=6+HCS8q%nKO9d<-pZ$J&+b?`IAK$$($SnHfLu}>S zhx*&!g-$2GvlfQBHsd_voh}pRZ4%*rw+54r>Ls)fm$7CxXvfEOKCeBG+?Hy0?kbl* zd#1QhwFmC6mug4{k72DP&1&fGUqyF|OvEEfFY+c?{1vY4_lx_RqbUtZ>@Rr|Wn@m< zo|$&7-8c?>V!P>@^w7z)jh&Mcyi4(00P@Av6xdR28)zzmeUDO8Z?u**)2r0?m-)tw zd16M6fRN2}Q?{|`G5&WE40vdE^I$J;t&vzH8s&~y*Z+ME>KLi`KF*48k~23yNr zXTL|N0dILC#bkr2xm^^`2qjk|hUJ4}RK-GT3f`|pC4=mCVlRLki!!Zd4{DiF#{Z^o z&|gtr6qBw@kwD+LmQX!n`q(AdaWBw+t2N?yJBQ$avq03Y#9{mE^q*#=G}QH3C-1&tGPzoVowRzB&Q|E-gdn79$z5e*&G-wxTrK zZS`D7^pNo4QK_xh_VV4=c;|TI28q896=u&6s|rf$OzBtmuE4!MHf!nZ0-Wy0rbma{k*$t4yOhpNwNH%?%KL{(eR2%lD!S zQH^V_k11~HQSsqa77v^5wP!~KGas_I+uA&H9wi{kXCO4kRDm}12?#*DI^FiaeY`l^ zqPEec7`~3kqPLWmR=9UU+wLF1*qaLFJk6N)dQ$P*JqLy|@!`mO8W%)>&b@7j86Wl7 zz|&pbulJi|apA6?%)}IEQcis4JR)h35)MndhaK%F%al(9YYA4tI?kv|Qe-fkeEIX9dg$U}UWJ)@mQ#>IWFAZBGAHary5+2-GUotu zc4J|AQK9dSpJMy{Y#4D+%iwoUpJb(8lCD}aaN)Ha)m-~;kfpFCo#=P0MWU?s*J*7M zvjQ9?$0w*cfj;+#)O%W{p@?s#+8v7`k_0C$%isxPHdG6=F*9ucnk|8FbBEZ7JB9@btQp3W! z(*XP#-^T??L?dRyu&~~v<)q$gc+Kr);C^mBYuVwgsR~XewI`%v5E}R zF@?=2ety$WpP)mQQ*O_hj~%{m81a{DLKwzonMvwk$sBS0+zsaUYUKL0d1=O2Zgx~-kv*i~3H@cw z7?&3&{}1?3g_1*^#^mke?W1uwjKw*BbEB&w1|y_+ba_4ycWJWjk=Ev1uWcEjlV)RH zBBv+kz=WM55@}pDh1)99>ucnXkkiU@s~oN3A>@ajJDT%n7w_-e@eNXta#9~2e`xlZ zF*ttH!N2HV^{BzD!SqCeTFk#1DgcHKHJ462SZT09cQz`9K^UA0Hxof^ zCy*EA^CrGOv{*H_OGIwdC4Q8BZJ5c3mNg^sI|D*v}_geri&rRa)c|+v)Fx zQWkZ_-=x37Gw3w35{m(s2knD9PmQB8IEOVgz_8FSo`ty+eiP(Xl_PobYB2&lL$=-Au zF~xP34;yYcFQu1S2_7}jYuS0;corK!)9;1uf1}zzu&U^Jef$2KM%s>sI}R$7SoQk! zz=6bAh3gU0`sodgBVXZgXTI0c*T3QjchBXD_ZCu-4+U|!Jh$}PTA+NUP(@)TJ&EO} zSz!JA&1flizEdf(WZjiGB|?I{gR4q{3JLpN;Eh3pJ)zNuk17Ezm zSgAcbsVQQ=d3|?!Mnv0iBFue&dF|@@s#z0~P}!aI9`P%Qv()XR=x{cWlizJxSijD^ zJc(O%vPq!i6O7K7(c;NDJ)*p-dy(%=iN?6Yz5&M|wDqRC+oQdiN7$jfhay3EIP*ox z-<|Qd$k~GUjM);ki(_FrI_ zeHzxb{8l}OG>-$%u{&)>MfGKv*JJRJojpv6$N7qf((xN4;`tE4J%=&lR$Xh3`n}p? zJuTvTh@->G*`bE}Pc#O$gVwG>e$bCaLPzU~`z zE`1FGY@P+us{P2*Tx@H2tjIEU@nfs0C`Eo;Ewwn>*1)%`>}t5oamQdnPix5S37^u< zbzbSb_u0zE^LHW1jwk!n3{H&_DIkjUcHcH1a5AoJI*fOSkN22=-vghmc7UQj6L#Pd zRTi4az-w`BfhmT4^0HS5P4UyQziIxJkum+Mx>vxXV?$*nnA=JI^2y)f5p)*p%e|+< zwos^$Z-(!if+(apvunCj@Q{&XCifiG#dS1GO*Z&zxYhu&UrfX~55x5}ip7bl7rcX9 z*YyK?PUC{RL}1G0Hjj3mvSzzAv*Ny7r;V{pxw(y!qX&ZYqSKTL=Cm-P%J9MKR!%>2jx$k&olan{}wi#^DP-j$g zJL#X&RN&pz|JI=3vQK%6*7DuE8u*B@zAAf(@%28^6KU2p$7~%XYvpXc zc25%a-O5+dVxb=DAt}ej2o)~m@3bsonYn?q%w@Et6VIwKfvM_QC!8IOb6%E;0WS1x zaepo&Rqiow0XIohTfc2We&L7r*#Z^zQ!1ndKQ?JU417`hdh~Z2wYR&GWLUlw{P0+e zlykwmeC%7VBN3AW?;rmY+s_#`Db)wio(%zdZYSJhfsv(y9X%GA-gE663x3NkE)fiB zb{}I)$$uJI9JyJTQbR2A==Ay2UCp~c>m;$=qdiH4GpWUY9CS7g47W7vZ!}(`C#03; zn?UQA7t)+1p9`O(^A9=Z(aIo5okZIhC_~vRs`0ntUVpVOwSGPBy8ZN=p$DcQD5Mla zul#XRWhec5CO^yeHwB1pB?)mE1-2UnyY3>9b26gCdG^J#2R)pqmK&l?pL7KK(A9M% z%qc9`NV$hHA)SWhDTr^F{5J(0J*!r3nS-mAy&iM3Ge6n&awTc#6!JhJp~y>2zpWkx zAB&h5vtC<(XQkA*iCucO;GSC?h>EAy_oEor+wZCRVluSz-NdI{8#|ga$qFo4%ABxI zlUSbE^j)nLpW@b?fH?9>><*tlEPu9mQOKn*#fKlaGw4*_>n5>RB?p6rxHqkkz;d=PK{rwU@njjHbbMR5S(FB zIrQJiCaJNH0qWy&zuNci2k|pHuRBjk8a2{!f8QzP{+ilqA@k?>>^N(2f|CX2k@bMG zvp{Q(?@f$1@ztvlr?1#48LI_xgxM-t;#--K?N`^ap2f#42xJicp3Jjf;2tiI#bU($ zKSn9Dm~qC31m2CKnlTq#xe3cx$Kb9wkQuk~@X4;@mc}4Q%Ae6JDyN{uG89z|gTJ7g z63nfHj-4e5;XmxSfnu-8gEUuwUn2NW(yiq1B-EeuF9^IX4ZZdZmx@%`NgbH;!@0u3C-&73!D(7$(20z zc9)maT*l59Mmbd|l`bx)KM>Zrdg63=Y`C#ddd9c!WF9Fh*|Oi@uK)r-6hvI zO2G$(sYs8L0mZQ==9a~$W#~?B|I8aDLt9TTl29-7pAWjj6b~8_pOc=gfz}PUw|kS| zh9h!D`H`yltlcE2;J4!BN`D`HZ2BPg3ZI_-h@N|<@!->>YivmCt_r(5qGG@g$yRH~ zT`Hw>;pY*ZKv1_UcPjO!x+CHB&%;Ob2=%1XQpXWz`18Gx(1L(* zG1a@wmpC~Zz@pZmm|^kI02$QZFuTjpx<_HbAeTi`IZy%2BNwJVHo;l@>9 zx31oz#MQhUIhO{}75B)e57qbN<4V(aXHPOeUtcM8@X-~Wu5Nv_vpcDsq|ECM&-V!{ z5u3S&tp1#uDu&bv7q?q~Jc2Q9SO%v-U7-urj_;OSD8iC(l)~saNrPCfdL%ltIz9!l zX$a-h$-k0A-`OJ?3~l;&cVby$J;!pAOs+?EO|bBj@6Y`F!=F}m=-+Zt?FbB?vmDid zx0p(l<#u@>jKN@oZ-&&Zd=tbTH&Y`bHkuYDMpEt2%e_f%{pZ*F?)b7w16S4rPO`gm z8kKMvZnxf~pML}=N4FO-(CAxpOfpUgrjyy7tlTk2^Ovg)?4N){{At?ektPl`GSCl4 z&FiVyu;PAhxmWUuO+GW}FK63lnFV$<*auzEO~yS>H@`&*y-+tk&87cXL%}` zYGs5?EtRzl#p6xCTY5oy-=NHO;92E37C1vP%KDXQSv|~2cIl1MuL0d`*{o3=8TR`m zP6sod433Dzcl?{g88%J00%Q~lkBRYXdcHt*YkS|O){lJ{g0F$Pjv7Kn7C*fXrg5BN zWQxKWl)|U1yl=5)k4W*GIVuIe_UABs3CdyW&6ddtS9*|GxD~R_Woyir*DHsMGCTQH z1B$1jRuj}VkxnY)B~E&kTi>)*Ns8~B@rBW8{qIL-TYYE^crZjt&m43VF;T^|N5iRR zm@GzRo*Y8fLw?w>t5T&1Y>_Ri7i#sUm3yP-G9YJ(kRRp-h8%8oZ;wf2^p++i<7w?? zUE3EkY8QRqmM(K+dp4cw>iTnER|wbmy~^RqXMOndyXWW?L0rjVsjkTiWt1VxYRUGT(HS#*qPE^iPkjo5Z`(U0Qo77nw zmffR&YHV6F5I=dA$L-d3Zf3$N2KD@OsW@U&xXNIdK`(2p{i5QAWGd3`1MMJ=glh+# zauqUv2ZGOx-~aZ;#lmz`g>$h5CdT#i&6U}XEiV%He6l#Fi9e%_PSfj1#jD!xuv0gk zFzZ3XbDRsPv-zTASUc^r6D_hEG3Sn+PEtA6;*WCoxpH;OeFkD~FpIo?{K%F_o8Z)=Ko_k!kzU6Xdsn)~77IRXkb?@T z(#;h{(_^;TbvMc)sq{nR=dy?KS;ZZ1>&@2-dR2eaQJn^*p&NL|2Cb9gX=yT#y$3kN z#i$F2I)3?|cL;+eD(sLDmF&JuXb<D&4 zrO{|GvQ|XGF<$Q5pWb_qL!?UkvO-fpPYB!#huI^a+Q~B0k=f?`L5NvY+NvbI%j(7A z#fBnxfAXj^YqAoe=LIZ8@RlBxpK25v9OlB5yTu4SHH@1pg24M~VJrhrG(9Y`ftb}q zD-|ZH*m5!3=pZDZbRa@YWlHG(@Qjn5yGFpW#MRWv)lnosi!MNfSGMLFZMY#q1;*_` z_`F#*3s=FH@?igz(;v9I~-><{KXmpz~X!s#=zWX}m`mack?0eFaDO z1QX`r#`2AOxc;vWDuUfsP`!KV|2(e#GT#3RTjmeM%(X3|mNz_W>6K>YYij?%S1thpWzMhVu#0a>r zDpMu=SmGNdIAyPP30Z950g{JmA6s_a&g>qRg4J+2g`?miMI>$C47 zC&)2>7fz+1-6swtJ|7p*Pe+@=sb8OTb-D;9(t3N=H$B`lkfKK1#o^Lc31vEK?RSEl z5GnbOeRoms4Q(S8Don-@W^cNkP)36rFu|(^roUdk&a)4()O_KZF1w}M5ZT+zdE?cV<63h z=)@RcbifC44^zav^u$gn@r5WHNvxK?DUCR>J(?nIZu3w*rkP@!4g2j;2zPXbxrSTn zk4=yCi=}z_u7$MUIDL>jP06_UvD=iL?5TJFnHo3uDY7hCbgy}-Foj3Vr@^He`50J9 z{BgZyZI@q&8qKl8u*jO0ytH^(U&3DE$7q|B?*2LY$)g-pn;pbb4W@|#!bptaX}%^` zirVXn13VJzO<|2{I^`&KNQ>lfrtAa*3o`m?TJE9D2wYJu5_2WZVsOpsk~5z z*hNwCRmmr@uMb?4(urD$U!UdF+Dr`$By*-&o~9NZvl}!xL4-3klGGhw2~yG3epjG0 z5zn$cL>t0py2P4OuSPH%HPcq#VJa=`U{soUuhK{&{NDc6DWcwHsz?`BX1H)lE8;P8 zJRMq z;s4>ohv?H(>Pu9)f353?80^OzYZr~^%(V5ya8P{0s_Z-jyf1_t&x=UnHeP(pZImv( zq_teHc7Tu7_u@pzf)E`-?^j_DuWQ6* z5Z@QqH1L=;*J^ZG#|G0!zc}6;spq$!qu~<~nLB;F6nftvw$>IVtgJ?tCXq;xh9lOP zr;wr-M#fz7A&M#sLH>E{lz@W0;ef!AOSkH`uLCfPzRk<{0{LE`esFP|QL_S~B@ zM;X%+Gjt#D&%_{@}Bqx17eG@P6 zv2W5lbzVdhc=`^eUHQ3tl;^o&^}z9Frhgp>wbOV!?ptcu?D5AXxgn9ua4x9G)G(pV zF=@HVeDFEMzXkJDNojy>tSPSVDqK@LP-%H*s(1ml<<-=xvn9w*D3sj9kIDwjvsT8@ zLdOhJ6b_LHA`nVLG4in68b*v(YFPL+h9KZllFpR_VtPVm^}`>Y$5lmZ)34S_U%Mn_ z3>)&7xlEypScH}B^Q%tkm2(wkd$^ua;wXK{N~`ufFoHFF3z5-iG>e59flD!5IX>s> zDSI7w^h99`%?GWvESWx4&Cc}xmzBrlnhz({eNa={du7f01e)PNgp^IxbaG2Qkxy6I z^IPUqUt7)rvvzL4<+$=(# zttBYi{axxP%Pyut@6N6c{M4TEB$u_h8ZE-*AjIKQ>Xbyp zGtJjuQR`?JK_oJM-YcxcRHd&JHXX%KS*9pe%rRB0U623h#mr=(`rg@Uj3-HUU6iNj z?Dx)c0{iVbH_mE{p(|sp!)0cXh>kdUbZ&$#@6$ z*}vIOb=G4SgsF{!!;;-wE}oQgj{6?gr`+H1ao@{_fQnq*sNPsD?NkhJULebr3lwFi z|9KNeK~&`4qWKvfb0&l4G)-YgQcQkD(-9FZp}{4el?8poozVvS++*bv z!S_|b&&$Mh1Ok6I^YbN-?F^i6W*$g+jsAR}1qt1cXz}MW8&hHY^})C|TC;a$YITXP z&?H&5m`96SJuo#nc_W=5qaO6UN)sX1M=~~GXii>CQ>AbD6-IgRBra5o{!yMx44v+< zHL&c;l=@6YdFZ{@9%_eN83b9`2k!Xudf+!QIUTC3C(1l`T>Je<+0D?l4f}kV34x?2 z`sfHnB_DH{+u_fG0RUCX;us3I<{Ta9S@khRSrDUyFVa6Kp*7ePQ1*@G?68Vr(f|YAj7E>f4Chb zw#X+Ve4w*V!?XxRjfl*hvw+g2!aUNY%EV`F)w`%l%d8Nuf1Tud}WF`^w8V+nZl}LP*%+%4f!&bF%V63`u);; zS8ZBV#^PgjZq;Rhg|8YbDd6Ypu@k~+;Z@NV%7v_7b?hZPc9?0H1JoPdFW9@6Yg+TE z?15zon)`B8*B>1jyL0!aG^V9@e z`4d4Q=4n*#+>7bj!ujke3jBUbW1nRS%~o30%VhcZ#urnBVPATZ01v*tle4=HxWZ~6 zFoXjOvoxS8}5#A|54%&fOGQ2#OG`awStv zUaqXzM39f)AA^-FXOSS1Nm|lOo^$vDgv|hO_c%;!AMZGEUxTvJs za>N7fwmZW!crK-{yvhAFMHYE39^~pKMj*LGvu@9}$bIl~?t6DV!q0Xy-8C9ha`+@@ zak8S|VVE{a*sl2F9kBwu+{&ywcL9oM$d6TM%!P#PV6o@*xK3}JQ-O9qm~8Q@Qe8S( zDRsX=S~P8G*%pM*994KnyHBnk@A{ySA=OsxO#hkaY+|Njp*>&E_p}(jv%rVIK2!(x zVM-rQ{8MbX8cz9O;2r+k)W5Yj1U<6ba~jj;7A3#A6>h((RMs6;_z1! zl19}m%j3q`e0elz$f`gb*+L&hZ)GRd+qe`+Xg67)iU#&-13|8Q(VZKH%IOK-jFhS$ zt(Qj%uy=!JP439Y;hBT_K3iEK29NcaM%3=Ejl9K_ye4@XL4PfmOVfFp`LU=jhRXb@ z#@}bVQiCtzTu8VFyS$CC6k)f!3Lf)Yyv!>^XLJC>ZWQEpphhKnzm;LWEu0oNiF*y~zSxy>N zwvXa-corifx|UV(736;1ZrkvxuW!F`lWw!Nm$1G7d(d^db+Y0fm_j(3J?17BqcW3Fuft5&Ds6F<@INdF2%Lh>ZJ^?u*ZDn(aHbxb!(>5XblNkclC5>{Um5d=qtY z+pNsL%cjLf8g{B~b!=}~*-1d`+Wf9Q2lM1)jcR1CG8QpZcH)M;2>z|dJ$F5Y)l2<* z`n;RBMhBMKckL>{EBE?vKxoW%VAwfvcH^{2T~}#Vjw;;Ker!ON*rp|KKSZg8y5&XSsPK!*?BvBtoj@O{?=b^9Uwj?}R<{*);H(Fs% zpNAMJ9Q7aCUe|lMemg&NwY6T5#mJj+)kqC8E<)u!NQ!s=WZ+`Oa^rAK(fppPvnSGW7*hz8hBSm;r9F_st%D9hLCC4+%>*isPwir# zZJfZuI*Mv%7VeGzMR=%cT1*!a&vvQpF0Bvg6O|p?uv61f+$8gHG<@ar*p{x)3*N)H zNMlmD;U=>Cf?0@C&tr4`NY3qlP1_NNOT_i%y-lI;H&-8&Hs2Er?=de&Ci`Xf`8duh zE{LnS!kLc$4|RF>=!lucAnSvyweSl0Rv=XBj+ z-}a^Ddo?~vJ@(D6aBV*wUwb{Tcn;~F|7Y%&mDWQ z<3Fz*T4Yw0uSI1JlQ+%inC#(g{{8}%2~z5&R%FsqG2L*_7W=NSH#hnoo8p8B?QGYw zyd5KE`4(`_H!5aiu1k+S))&SXPS4|nk|!B=Ch}u!)4Kp;)QhHi$98Vo73tL$5kKW+ z8oZRJYL+)c9RBOo+`}Ixq_8%w+%O`O2ti{ z*TXd}e3)$MNtf$&%+WpP`5Ych@Oq%dboOaxcul$4hQZ)AR6bdDJ*45zyMPA`IxE>4 z7^_w3!{obISZi_t2~OLkl(U8;SXi+v_kd5V0HFNc67cXq@IO5O8TS9Q&P8|WF_(eW zK`W-rez8SJAFf@b(a+U-_Sts6fya}8Ky-%i-CMGT^e4rmb#uMGrwhFqf!L&I?AREb zVS(xVOg~|LI07gZ;`RD+iStkSzK+TMd?P>T#0m}t*WX6?;kTGwK+QA)4=IVEG;BwI z-nn=0JeX0}k@BU^r`vp)m`3n#sDVBR)I`ClcM|HTAQISa9sxv{k@4~IUBu0GJq5c4 z>j}pH24k#k0^qs~1B!a34B^?*`b8T)+v%Fa)n3cO?=hlBp;t)bo9xdL5Yzs6=IL5n zZE64@xo?j%4^{#FZH{C*j))%rdHAS-gjRUQ_~t?zIa_V{2gPqUvxHL$WTJBa^qm*E z2d{^RK4dfqY5?MxMB4$pe#B#cKDD^_`Zn+GB;>B?rT0&t!#NKpeS6kULMOUK)9w_& z(bs~S)}Jm=&1pbhZHnJiCUI!b-CQAVn4z3|_pwvdltlL4G+&|N88Ui6()ry8scr1L z-bo||I&oSYud$veaa!)=ddVu1TF31fj+ zA$*Rbrpk>G!XCR%>bVAg{Zh`{-<2K&nvFMaL-^l7hko!4h6P10=a?n}Y`|QN^`i?# z)$euoa6N!{Agf}TE%Os!jeIQu6SnyC#CD;n7I_Dl#z2O0DzEuVM#iq$%DOSfs>AU- zg=Uoh#WoAP#yX*T@AZi21Z@{W3zp}iI`j7yb5U?;HJ~M-6%2a(V6RC~W+Z751Cl;9hL@nS@13rMlG|PlsHyU=U zPZ9oz()`#c3GAaqjX3j?(|OmJ;)3_docbG`Pj=X@0edJJtWy-jo)mumAmRrFp$fvB zq~c=9xsB#8P)N&LtYurm-FA5tD&YkLdA-fyj8f}~Umn|eDLtiw1k2F#jWi`e^Vgn> z-j>OrvaGwa6XpI_wv-SWKAS`lO5-Qu7h8-N0J$!B@|{>_xF=V4OYIf9tPf1rI~s$5 zR?o{vg7D~lM#CbWi+6>P)&oi8KrJI#i#u|97BF_Yy~0c8 z7uR)EWU7s_B}#(JIQ1V%&~V2#S^`c0It`-R?~*nkC$IP0Zv5btrXfS$dA@q!1Smkn zFPBM&n|BdyZO09PR!bg05{~YncGLlq#RbRia0=I?zfH(8SM0(8?K(SM?Z!3d{y~iq zr}135VXVMautX2nT}^2XT>Y1yX>Z14=<{B5K9nX|0J74(=ae9ieMf(czEr?*BeJa7 z;6A63Ve(ftlh}l5{*xi^)B!yfvHs_IO@d{n>ho@f?sY zIs&|y`~c*Zaq=9lGRKc7)2^d6J6MFG^Tn_FnHvgD^B`-Ee#g`>*NGe9;BS1%_DGt` zO3ARAZ@Sp|CJ7;QAl57r$(%Ar8fj?z_Rc;h3CGqef>I?aXy0Rpzsah|L$2V|=8I$mp9gdkQ_gk0n0H_SP zaWqrhSRL6N{BySabeEa8@`yBlynyVu&~L;0V(!-pNR@eQ)wbxrj^qXw&vWH0u#CCKKrOxG&a z_NEv?>q*)MBZ?CFm7TjY37rYtt!LTQ>sAFUOwTl8jt4l(-9EF12zU+m|3oUE2wMY2 z%~kDNpS8?%ue24H`+ZurhUz;rb6YM5lpU@4Xp&r{S=>|+L?pF53@q{Wt(Fy9`X$*c zo(hruhAwGNAMzI(4N7ql@yrSq&0O5Zt@GDsz2Z%DX+53a#L>)&F6B7*sFml;wV`i) zFB<5QzU=`drpu~f|6D>(jT`}APi6O4TXi_I8l_zR)6bH~#qvT-iekLmViTZc zOBj993^MRLP!wa1VzIGPigx9-A~H5#HqIxLP4tokq8fmEsV+-o+br`JzvDvI4f`>w zf;};f#cCXJQf%#h=E(y2v0tiwsEt)e-Y(AoyUzf@5`to%tQfSIyx;q%LC0NJtOkf0 zQ$dsfAG(gt!}SK(Xb1hUP?`^XJ^t6nnG0uW!4!#NPo%^If{2yHuTFAD-apeZ54tdo zB>Q?x0J-A7J;+~-{bn=^!6Tt@f^rJg49t;Ji6^{b2jxhmnt?tq!wOv!t20VeZq3Z^ zFyGL{{pYn#9(_m%F}bVui+IuAzg&J^!3jj|F@-XcMiwOpR1*p(XIPC<5*}msE&kp^ z+A~pyYNjwhA>(BJ{!RSm#Sa0;eF&-gQCMdT*;jxz7913w(~_XEwPKhPVpZ*qnGXe$ z!6sAbCjPM0Z_0xdokY=4Ya-)kANQI8X4H95I(6oP5M7se3D|OYiV`&U5QhskT5aEf zR~J*edUwskP;2XDe8WBP^SI<A&IlLGBY?|lqVieR&)@fZ{4}}nn$*KP!0&dA4D;5+|R?%oTy`%fhfNmVxx+PpNPF+jXEt@#4|#0?y8{y_KzXzt4x zHWoUt{m$(-;4JhLPAoL`eFMK|&0k^OLsmRG?MAnK{ZAolz}KAqxbN3F3@ul8{u#%= zq2K>(i)ia7qqzSJ_1{tPf5FNB`9J^FDZ?gB*tWO}wqrEbKNbQi{;P#?NRF_GOVJuCLhc1Kt1MC-bj~|2Gr; zZ|nY31A_{7^9^G_s%`?nf-JCpq&^saSx z1ZDnnV3n!FJ^|pFB1Ci+VCO&CPM3r=L7tP4ksE*eY|kP-PZ|nXfRB zEH-F#+42&2N`3 zA=IS0JpkoH@KxAP0kf)}Qkv~d7T)GYmIvU|eRl-Fo@-f(Ux=(Hs_!N!zXiO5|NZ&z zJf;SW+>)t6uD^V*&o@05++n&vN@ah2dCu>1=0rLESCZn^pK6xqj0FjtTmhnwM{uru zc|~xfY%m(2cACt|7`+2h3_VgGMSsO373Qu2fR$Fh60M~yqfE5hATX5WVL7@&(TU*< z5s`A&;dG(lcaMZN8IInV{{+xY%OjqQ5dZ6yTa6KjVw1Eop9@E*iW`9JY2io*cBl6R zYG*2}PgmNd(Z3-E2_0 zb-9ZM4T9KfYys-bQ!~@I*l}gg=C@4b6O&tk5P<+6h*1kV{Y2X1hm8TEO9@~krBSZN zH8L0n*$z}r#f)YyBw6ma6oBUp3)br34ur&N9LWbUg>o%sI%I<0QDi@s(7XeHs=&W5 zgcoHf!G4$ajg?9Ptk!(+F-tO;9j%PSQ_*2hgfFFV^f#_)cPS(f_MbF?ktus=ezGhe z-T_Gf|E8H{sovDpufE`&i@2Hc7`tYL6s~77sw*4t{21edhk|{_*!cv2d*^`NjbD;w z7#2AYt^b(S3v5Y|@-b3h+4PfUq7T^1gqebezaK3)l2Lg_cNj%~LjpOo3;ev&_r@Rb z;Og*h5RT`;qP^meH~lMoFImDf``l^g%7=%$JsVd- ziabDN=9Q{O8-;M9BwN5(#h2%#RS}Gpz^#ItYs|qOAU!YPN_0FB%%c0z^PAj-2FSqw zQBXpev<4E7dNY0AkmQ-~RNhmMzIp=vRs?JX-DEktlQbM=s%yctwga8*zOiAUEma%; z9ekUQibjrwYI%S@>q(Pg>rr+$+J5bFcfN4~g-&=s{Jk@#iazQd$IG&BG4qR#DxxB8 zTd~rYK44YHp##1Ps5r_3`>3|GErUqC_prD1^Rqi+-;JCwQX{$uU-IyC04MIo$Rqvh1U?o)G0h=527vJW= z3gXEO>{mLgX4jt@I>UNtJ<|#ATsU7@<>mngzqp^Kqw{<@O5*#3@D6*46W%!C!@10;I$ex>mj(##I8}mvv!*&@A&y9rWU^3_*>EZ zT(HVLN+A=x-?%UOMv0Re>vowL4FDP3ey7jTzS({GyVE)eqTPgC4ejQy-vUd^VM!MP zzZC+bQy$ zYWT?8a<&q|^{0Gy31Ajpuhpzi`vuX+PWg+w@}^f03lEx;il46~DAAxo1Jm`s0LGRe zZUdQ;5qR5m3~)P-dBK1oWIV%>^xm;H^uI!JJ?x_QCv@-xa)t)q@FkBOT`@q0(j9)k zQXo!m?z0_5G*{mlL6)|(1S)YQ$ySMMQ4IRjndyHFw(eLhz}qDJbnB6+QC@3j_r|JI zmzUe5>W)=C9GF~e+sYmu+HC?mGqTAbyNLgt(&t=R{CAMYf^GFHG3wIK4cY^L&vCH? z{&Wpzk`IHps;K1bZT_Q^f2DID{hkfV0THXRm*0)14IIf|54n1Aw|pbehr_9t9Yp=L zhw=@7)`Ps?oZkxoGW@@X)pk z77o{)lgpG}t%odpQ-eB5T=d%kO3+>Bbw@H@BK@+uw-q%VoHc zA7hOR?=x*HykeweiTJ3@>+r|RtWPpeFc2#!QRnK?$(EY8Q9azq5t zMyDQtTMS;jW)xBTCWW2!Z*9vlaC2Y2w}ko{n?&kZMb`rGwhNc&$pcW1|C=k{ik;3l&zXFNB&?A6psvygTsaUW7Q6bzGW*M)AYzaI#6+2 zCj-bor)5@_^;?e7&qz(~@G1R^)X#Sbgs(MJt~C@p{X>dz*z*S&@oCWa?;FsVN&TRG z#{=pDMW_3&FV5m3$q`J<$;gf*d*gRFVWQi!ke1J1#1m)(aC8kk1sEvY6+lpZp!&b0c1C+*E%N)+}FCUd%ea0d>K z$YdzVST#NEzP>}iE5D}Vas~Pgv5d1#Sm^e z54Tv#hK!6$6V0u0@lSNxZ>dfIP}Go$UykCZ|H{?=D6aao74Q&y2mUwB5yuKl-N2ER zh0GS&u>43Z(%8G?ZizqhEN3A;M{<+|iDK@1bA0B5l``*^;@?@1gu{`kf=}O-ux+ET ztOezjyw8?HOv~=7jK+Qu1$K&rlB9%}ztLvSpu% zl$uC`_tSf(-;`=VL||8tcCj}Og~aLUKkmA+4ASOsHbZ!JJ;otJ$c3aGxrH&KwKtB1d$ZI=<4~>l3X#Q}1 zYWb$36ihOclgVBC+9<<%B80|qU4c9+_VeGx5@L_T(aciQp(^xjWFcCt`6^-d9ry0u*cgUdw;UyBl?#{U-Ri?llM*&u=M&){}|N|PVdb-YSUk3(T1 zJ|_|8T5S^e@XCWP@R6Bfc+*w5_OFs!Tjr048- zDR>X9ZWHobF@3fqUXw%p&)bZ)*+&gs^$9snNEX5czBV_b2~kf&;N`A?r@<>P0>yZ; z=;qE#$0ZOjkVLHs%#Sh<#wjI(XltrLtZCRFa3k~6vqP*@O64S zsLvqonc3l)p>>&CBNw~<2!SpP`_InfjFNP-K%TMSeTK2JOq9!_RlDJ zTl~XRpmsdefXYhU{HglNdqo~zC$KQNd`x}DK%mNA!6GLh-^AkNa zf9k><-f-oBLbJRmo!RFVvQ6Z$C|A@+`l&0+$~}QhuQ%>0wVe=1%l>$|b~PBP(n1EU zQIl3oEASNFD5`r{FSCS&NQ~%%hgY6+hWbKZ+rzBogN3`R$|7fCdVy3 z=i?qz^G^)3v7Z`PPLzFoM);x(rx)haacS4_m?gNwoqTxmyP;9`huJ?k@#aS5FVokJ z9BZ}CS3<6g3e8k8J56ZxKq4QyWb@@EqMl=~PThtPxU^oFtBB&&nnfx`rdRhvb{0lS z+*|DaTn>3G>Wj}FU;UUNW|?-AdxqdbI5-kpE#n(#)(_LS8bMADskDb_CiEMuV={E| z(=nH0=}~oKk6LYowN8^Q!xv}`ZQw&0wn263yfVw8XI8p{MR{T@KO2ZM8W$nE3k>8A z8s4So^x%lONnyJ*CHDb6q)ndTjFzd}sTZ^X62+mXe_(WbtDa2)I2E0tHR3=I?TaEb z^fTatw}>n-2Tq=VSSag<$g6p~UxStCM;5kvk`wK!PTvKCqdA_Q_+-Q@&|y9oKGI^& zF%bU@F`R5FdL+nfSa5i=(2&RFQ&{<4EJwS<$>jEuws+YjIqy^sg*I`fCDb_8TEIJd zH^o@Gy#5?s=AP}q!Q*q4z2UJ!sBVZol1nYTmU<`%ct`>qf*84i#7mybeB!eF$y%d( zm=G8^;XXe8NQP1Q4mYBt2DpJ$@A^aABj&M`e0FHi;$I%OPYTVSXK0X^xt9VY?nZ-e zFi72~1s8J{cJOhyiED;c=r3#Lz4ha?_1UB5qlO)izdswLz7L9Kk+Dp3S#qNtsd&zr zLU~o_k+bdgm@lW4dvVye-a4%y|5=uLU2YHTIf@Cg4e#UY8L%tSIr{seA_;ap;MJm^ zjQBug<2wV&Kqgju*Sou{+5I5M;c1%6E`s2>&vI4SHG*kXM>e&!-~dOi?-7{4osNzre<(Eqx|ex6fZrkDBh{&F z*3VtAsn0RYx1QGYMF+N+%P6h)W zmV+!>o4Fn>=h8AM71TK6vEzJ^WT`bn!+Kp|hK2>q3{89t999epFF**vhX_IWa3w%K zLJ2|(v*Y{CYZ(~iz{U`%2Vy2k){v$}je)_DoqC?Bo_#HX1S zpp^q)E2`hj8KF@`5r!IP1CWG$84!iSAc!MG zIYZZ!fl`>|F%5j~MM?=YEvbl2e^jeJs1vQgs)UBM330{DY=(i)y-0=GAgK0O?y^wO zu%J%LfS7`4-XQa#H6bMBAe7KHF^#;Y$uZlcNP&Oi_RA&$o2d+*u6{1-oD!MiNQej$HF^-ew_%JD5xuv; zn8B;JA=*ro;XK~=`@VO7*FI-o=i2+6Ke)!To>})=_r312e)mtfj+P4b71k?cWMtH; z&lI1Nk)5jpepD_|08d6}OoGYC9*(Li%Im+x;L|9-=#L$Q$zcQ=iPP{39R{6^tgH$3 zVqF_LF=x^CbVpI;NLG4In>lc#uFVDozca)2@>|c9q=(^Kfu}^@J*`a|5wER{enF9* zBiW7CO)L!K8?+p-j6LXPe0hV6>-nvla!-v-&`{*tk%3cEK@F{7Pow+`F*5NO#l zf=C!EnjjBEVUnQ9bpv$qRAgiuHm~6>YmZSg>z#VrVX|rXB}+X1P$(Azk1)jWdnICe ztD+x_ygOZXYpP=F(DG`Q*!|gP(N~CQp|9_Ph)?*k)nY2YfBh=CSZOoB;TBpaApWV7 zADo^*OLoaznbWW|b>A)SC1EJbl#zJ4I{ndZCpi-4ipsTX`jwGf@tqW`uuDN$+77gF z?UEj#5faVjcSZJ2m$%h79)=$U4zGrp4b+P{9RLQfi^2HCyDWS?J8tZSK4O`uD@BQ?d0y^mO`CVXG(?(NFUv{#MTr&1xcL${Z4LPJzn>=~d(AH( zYh3*Zk;$zw>&hm9+f0*04LS(H(@4ANv($2bTq`oaePB9L`sO@ny%{_e{MhO}b4+lb zrHdQKc*joT`rTV{oHCOqvVroMyOt@ny&P%M1G3VqpT5BNrM8gthHm8p31u}E{NtF- zH>YW*3m-2Mni6xfQ_#M1guysug$-9iDNGJUVBlt~Q(UCGOKW;+UK6OYG2u16JQqa{ z@;@I2xWV~EpM3hnI;V6W?X7loUWmy#XhfZIL zlZ^P+uze?;sV4IZbkO#s1mU%W*~q?x|F|6fa_mpd0c5iqGpN9hOCkd0-^-9vV^x(V zXZ(KUEg znfLpcu+Kci+N5=fNhi)Iuki-Yy_V?*<;ezRZ|lzi%N8E(N`&v=8)c0gP6y;EzxkBO z9Y6F!O`r&9atvyw#?QKCsRTAM;Y9exqgHTX^AApYopEo-{O0X?bm``WRbP60soIPS zn@y@Sa?2g;W_8VgT?oUV75sop98a!iY9{kcspf0wu`h7AGKraY}4IUbd zU10=V&=811KDeoGK7muo1|=~(F(9fdF2ifo75F3TEFy7=Dgk9On3HBIow!DjfxB#U z`?%7pxKoJ1N%lk(x=}49->yWlUFB_>~ zU7g{uj@Rs0N+KAOllmTBzL3DkzFL5eW{0oLW?N_dDVy!b74~ zWkAps$vpfiOnO?xDuJFE|Ket{EhJbqMvJ5HqWu^7@q1?u@D4j(8$t5j<}+)sOW9`= z$6QV|f0rQyUbi>bEL!4WlmtSl1$K#{uNTw!yJElCXyhJTBqPVH*34&1wpk`W7PK`z zorWhV@w;rc3!wj4j4lDUN^gq2c3Kxl&eL)Z_pL1$VR-DWiP82I8o-3|_)S~xa|YP4 zI~!K{QV@Matj;vrGf2}u5JpoD4w4-U?E`O0``xa^vdc)<`Sv`|#P4vXz09{DO-gKH zaw3{$!Y4cEyE`Ze)f_&MpFgd7yT}`Nb6+ad4wK#|j1^8a21-vI;8XBbj{tL(n8T~q4pL-2yUU-!v@org~*1ZDji{i6}9J>j4LVgt+M*23AJ-1e*9&O#DR z;>uP%6}~cOhtX6sn)yzAfKHWI22ERn=-xFgo;J3ST=0Z6#LpCAL!$lDD-QIhaoc(9 z>A$3md?EOtxyhGZmoE>1;X|{}76E-PSjyxWaHTYR6w%{Z<1byj1ROkcwlA)p!6sX! zmCtXJ=PL3JF&^}Y-fxiAVmYwan|Rb3sO7bqCMQZ1e@2PfM^BAE5`^i&0r4j1+P z607lXih-Lw;&ch6QrOzP5un0$InFwMFrlw?nlJ=;xUl2NCWhni&PtJ z%;4(vQdGZX;JyLsIv2|Xm=Z6}%8Cg3OI#|X_5BT1Y3iSJ{bB0y+nn#~Z zebA*AAkhA(UWsnDGCYlVxL#(~8cGeF{r-A$OEX1$az0wlHSln+;&6X`+1$eZ2kiM6 zaTAA%u*ldZ&KNtzT75SnpE0`uj>$&5hla?Y5e#C?!%@^W38Nf z?yTX4C8lHHCOruPX>;0X(qsOF4X53uzKF}I_U=$j^?lL(G%2s#5^(c0tAwkIfNAx6 zcD-}!>7L{7?RpX>f4rkgd)3WIcT@FSeRTA&aPUdMctI!ix1phAF$lH>P>SZ4vKq)Z z28;BQ~ z`e|r}k1IY5tUQvd=`~=$@^d_Lv&y>dN+QiznEkMPtw!OzZuf(sk6OfH3lz*nIlee3 zmYpggXXl%VDX?uDyoz7*uOC!4!M=dTWq;3x=p@Es!Wu5CW$zU3(DuJoD>})p#_QWL zwZUR0J&ob-YxjRw(pKdu61DSAb^HxzTBLPOM$?ZSxVx*|DA$gg4hp)Znzqyv z@*c9O*Ou|QN-06vqty%($)yuwAY;)NG8kgZ_UWT(v)ip zAEq6l&D@ZmBfwuh|L9!IREVM4118YEELixm3aCJXgrzs97nE!PoxN zr4%<8VCu^kwVVR+HRBtfp3->4mn?(*7UN6hn@>-UO68rzCGENyj(*Qa<9B+5qJ3`3 znkIfqF2?jqL9iM$7)CVC6zL86&&`yKVq(#e{AUI)y+U4*Ipw2uyD0+cC{JsXLCUTDZ4d z%-m1e_#%BtPP@dc7RC`FG5xYNJQ>Y1>UZ&->OjPR(VaN$8f~1mU!?DDydfz<9||%^ zQmRR_MchPl1n5t*rXC(VUQYGGKDkqTlMV+CLFSXfHhhnNZ&yg`SQMC-H65i2EJX&#(r=|7PeswTFcMIN@K*v&F6Qrl=D6q+2{m?tR|q;Rt>qXJI`hWpCFGc zRtJ4r=2<66%W|h4khm7zgbPZcCD&u5<$QGbz${ND0*B?<(?53kib2S9fEev?ix2KI z;a|$y@KHU~{p4V|Lpg5k+ub?m1zA%)HGK(FN&_iKb#lHe9lLg3@0);~E}nk7psu@# zlC4?>%_uvM|CyjHN;Wd9FrLd7rifP!!2!zOEb!s2 z@$kVUd#LL#G^)ifXGhCoNF@zNt6B#AEwbFjuB3BM9|vJnIst- zl&MZc4HfceR4#sv@>oZgl*a5OfnT(=`65jh>Ys^b>4dE_r>;!ZmK{B)qqqUf@E+W6 zx>ZC+x}qn`XIQ*)RgLSm*aI;Ju;aYN-EJ@UOi4*QB95#jDXe?#9kZpoA5A}>oepb` zbKJLv9)Uk3s>_e^$)i4`XZw$SlyB~NV*ACvRGK^dtsJ?L-&Kys6Mb0jw|xAIMo!`2 zj6QwbH$8h8`YIoyKpql&dNfnIarf~mBGMa^kLiC+$+6<{)pu*!^;TYU z>rN^!PWR|jdHw!K+5?hqMr^-jgyKMW%xNmKq@5*u)}x&3xytMc@!3PgiUM^f3BB@m(zzdAN) zSnxbY=VYW{KA+)knRCP=WgiXCoX{~hV_e6)Tj9?7l<#={Q_V$j&BWotQ(Gv=8TmFI z`p8W1N=xN{trRyTyOL4>nct|L{&>>QD{GH=HO^}=^h0vqi^J^4dHKHw?yH@6Y0c`t zNX~RJEz}L2`CVD7L<>5_BRXW;*y@U@X5_GXLqQi=yCtAFTWy z(%u2{B%6~&`bn={mlSKC|*? zXg*E#=1r{PXTE`Oia!AJW>pij9_Mi%^*rKoZ?cAL4{=&tDH+I*2|?W-kzY4lGq#)X zcX(E%SORqv$oh6cYhYAk32-7$S4kf_3?pAg9V=nxgdkCixU)@AG1%t1gA5(L?-VG{ zSmxdH@Xf%Wqq(dn`1hjP;4_(_(kEg!k&1D?Q0HgMvTKh;V}~A?v41fC5Jbrm-L3Dc z!cJUQx4S(P=ss0G(~EQ*;gNr-4T3#ZSspvNLqS;!bQ4#iF4# zl$l~1x1WaA&Dfa*O{za^?Y`Yj(#uTBwSQu&@_4dvCn5UA`dnR2Sd=h<=;^9~H% zdRiqtrh0r;8t3@|BkpNATfM@%^+EsK{asA{CzoX{KJUikc1&h=-}(Ax)=8@{c0=on zSq|wzhpVoX3o=CP{BTMCAJrpTUfGQJpCjI2>L*;xCF*TLYU><8dEz64D54*A)Q+?W z@;R-$@brfVPap#9 zO5tWm_6{Xyz+ikP#f7FRvs2G81?Y z?KpF8&TVbEwQ5sdj#3n_LvYl%WW{*}m@w5ehRLX$&(#!Rt!|?-uV0LFJ@GP}t$u&- zot$=K-|tw9^?tyypYzJ$Hu7L8g{m)9bSFW#{Rlt|>A9zsSWkU_CDC!SM4u|S4o-|d z5v4N-(Ou-(b%0ozOudhHjr=lpZQ+zg_Gz{Uu7fittVG`F=OW5CYg*-p_lTwhQrC=u zSs|b`E|a^^sKm)hw7~l!P#dfpD}VJa2%x79qGOLXwcj2X?-b*eELfA66b?4bl^&#; zR0{!@$%_^}LsJAEi>G}{xFp#6 zA%-K3dFFt}Q!Ym#Qn|@H(qCKlVBroU5U_d(n6D@R?Jg|6t(yPUZPL|L4Q>CTOD3z$g6sHD8s;^GWA21 zlVdY;9f`3dV?~Cyk$mB3ICD?e;nujmD(us!TpUG<5SDlSmb*z5_G&HGlj>qc8Fd>y zLUD#)l|=q07K`L@zspX`*X>2HE3TboUZco}UqK={zy;qj15Q*ttS=?l9=Etem{90s zoi`e;82yo6Rc6z8(MIy(zh3N8+$gJ50A9_lM@Uu>=BD5tTNgj=pRX;O9Iu!r_*~_A z<<0BbTlNAj1levSdmXXBp~_grZxB#xE8HIQxy#tCMf4jzn}BSn9>b40{=58PS?#%M zigA@R5gj1PqP^ zuQNS;Xn+f~;D2--GT^o)Eiu%X_49UwDTkF$yeq03U1#@+>pU}46~BoFZ{v$EeC@`M z9kO^XcvLvP>R*Fu!GS_5#SHx3+v< zcQ~Q=W~=q3&^A+bALu8Ic8t1rnfLssyZq7lKJi+p?j=A8D5TJLDDLUh7_e2a_Q8pD=?<*Bqrj1+HW(ZF5k*8 zZYSfmcR?I?pESpb+D9v=9E0Pu;P5!CqUtZf62;50(&i} zf@xn~CvDJrm$^inQApi#w-WxiAfe4fuhy>?hEl81|Hfxvu<%a)Gr%!HA&i#|qxn2v!uY zvrDxGy%^fm!&=YoPP*Brf6kxPp7GZi?}}pPf$9QI_Ms+W4fFC53qfaCmdPYg4OrQ;u}H7G|zTSnX;M~ z-!^WL1y>4BGByYCs-e^jf{ZMD7{PL(-<5cJ2hw`q8DIgeb+u0@B|Qk^J?ODDNmT4b z0=}wL(#m^46LG)ew`xX5OsD9MZoZwI~L$PEq2h+MpX%LaUW%f z^DAe5b(5}c?ncpIO?`(zEmlEOK8X^3uJiWm-N=2QWab^-Z$8;Ci?I7ehP*&H|LN)Z z+UAEg?N{MjjYJpV>VU3t&<3r3i?!}Z4qDP?lSRk{Fas+X>Vc~ z1luU@OOZ%isggVX^%OM!QDg&vw{pegwYJ;Y+$Pdx;8?PUmb2ZDgc^Rmsew+3?=|FQ z1YwwjEM0<6b~8qr5`r$g?%`Fr>G77dli2LdH5^LKmV2`%>Za5%k|j!djaR}nS<)jb zUI;vmy!dlxu?M=;n*^J%3PU#6LZ_BkXMy6|#-LC?90%$BB1||~&Opt(HSQ;%X3jvL zd~L4A`~gZ{=&17I_RHh#jx!VwF+GM0MiItNoHhVkOZN{4mHFrYn%;yPikj^AP{u12O{vt zWu7{R-{X8>K4v6!^Y1w-vuelB>vE!0R9Q9ve(3`;i_g1Ee{Z6qgTrj)=Hc}Vf^nRu zzdHyml$;Z8LAz{6Q!^(C-f`Y-j7Ad!K?D)AM*kXIz;0iuhh~N>4lfG_z)+l@=Va&I zuR|%Ul^^$WQ(Qf%#X14xGL`MANSo70u9U}EzHwE%BDKimt{K8bRsHRAC54#8L?%xEn!h|f9B)o_@3wcX`y*5VZ>~;R znU`_0m)9?I033t*>fb+p18@)qKnHO%Yb)B1w-p^CbnykQxO(xIzh1!S!g*3(IHC9R z+#1Kkp%~j(9_?IC`Pt#+rlU=-?4Hc0 zVfELIt_ff*{a14cXSZSC(u;M7=QHq(`~_f9zUK?tjT-%Z#_L4qhI#cwS}SZiq{%Op zZe3|L5kNeQ@5_*z>0^>RSfB^tt4E3fV>nHY z0N1Fs;Rj|3<-E<6_*+x8ZnbhJ+tIEe5%%C@)ss2qW_J+@QklauW4%el@N5~o+PAyC zbdmxoSO5fhw^Q(%2nKA@xG4{W3MB=>tC6Fn$R$=DHTeaa&+8tf!~OmV#dlX2Q{NX@ z-3<8EA|7=7QsT<mQ&$P}Hw>vne#*Dxg#nn0fvQM0{j4qFEcU#{>$j@zDCB^mt7~KPvY^U1s*vML6ld&6b}?0 z)45_A{_1T*@aYL0$0Y~s_{AB*FlCo$v1DHmEkiIiwPSfuX5W`Q8Fya~yXEf$cA{Dm zp@;bHaUE5BKghm~WUbB}1Yq2WWmes;+R}o6YX^hxu+*MYop-Z77rxcxl0!Zh{SdH; zT>cPWTE0vk$8?4o9)YXGGcYv}5K8r)yY5sax_U1QiJsxss4siV{jvnzsRykY|F{CU zQ&vdT-~yem3Z>;hF$|P?ELpt}1T!vx+%0@LN~`(MO<~0tPrD zsO()d_O0i5mzOTmbMa2?;yWs442d|iW$$82MSp@x987>iKMg(*9Li<#0Adx2CH^hG zS7g9@-C`9Ji>{7iMqUoyF9J`l3}q8NbxX}^`}=qov&N!_zu`~$607>9i;V4x_Z!Ot z&O)_P7Jz?mHnJim7eyx;KFe)u>%qj}#b+&s4Bv#ai9 zIAHKw65qrP8g{z*-$`3S?+qOezQ4{zFm2Y#6F3505DVEIF9QR84j$vIz$1dIrkdH- zm?}i-Ny?KqycVXkqfhk4ncC8;{S>!4x?{67Z<=N_132Rq+|%XmcLgR{ma&7ZD0}mh z4NZ}|B|OehE%IgWLDr`39|L*fpB(3@&y;(8!TFc3(xC{buf6(L@ld?7oM*>xSzj?{ zDEAQ4i)LYnC{N-mn3$clebU+iS4mMPqkaqi>qD<})3#e_o?>6)4vi%DsodBjH3>iK*dNhA8oO=mGAJJJXKY8qy*azXSLpSzYq@i~d@sci|eCF20`uMuL z{)^{4^=B6fI~B=PUXjjiEFKZZ_hNiao(L5(i|t)sc=g?h=XwkCIiPrY#Pd(C&)*cE z|I7pWAC3J7ZV`T51IUN%A6aaGf@MNzCk4oFLYK@SB*Nz{~-U2)Ipik`H@8g+f(Y#^K3LG>XEAew&H$h`j6-5S**WQPz*pv za;Z0&|9V!*Hj@)W6MIjy@-;c-^OtAq2gp4_N(U#6K=Ef){*MQz@2f>i&waQ2NA>%) zP85QEfCsoXxO%aRloM2h^OwwF*@@4KjLKY7#GxMoB4O{&y%3t90&s$8rte|2oE)oI z|NXV=(;R18zgCBR!llvHc*U#Hals!bY;<1yC1{c6aI*nuN=^Y`i@qK#?X$MfD~^6}B6DCgLoG!+AB=0KLHFXKxAEUY&Hl_Q)`h_N#KI z3cC+O{6%1CZ@$ZKW(y(5BPCuZtQe>>t zb!#@Y1*}Ed_aen7rO%TQ-Zb8F*C}jIR?Vh1Qz857Y^aSH zi&#|`bNw~?DZbs*Jll>PIQ3_%EEYp&u?nnT`fGOE#)@3X->-_avyM5MsQhE^%OAx) z3{^(`L#h@lgzxWZQpM4V%0)AOzZ)qw?f4H7k8FzN&s1=BPP^kO&Y#);T>F(*jldzi z!GER*Y)}`_#?`t__UF)lLA+b!=t~xxa%=u#;79rAgry&ctDW>fJDprmpx!>}BTg(X zE>6BWM{Yj-mvsJC?@jC^iR@2(1Dt?=IrYCj{BOv8|BbPK_pX1R^S?3n?-TrgW+VPb zs^i}ZI$OfO3;v&v{Zp~F!fde3N@qrX<9D8mmEw^g!bSzLU0GpiwM%;ff z(Wt3m(TF!1pkmsRYxfzyXl9e^VRD&vKCq+=R2=aqIG%2zGwo}N)z|xFF2Xv-MK*?` z1S*whElI8gxScW4lt!xvRZNr<`uoXnbBa%)LF1sGPddA6Nb+da>CLGQQe)BA@1a4z z;v+2)?UvGqFW9gR=YS=Cx}W}~>3fj0eBHW8X|kQk`h7y8tyA?7?TxK<*$n3` zL369%l@Te(PwLm?uO7Wlp^i*(g+laed?|@lYKzUjn&_S~+vR}A)0SzdQ9=CZ9oR`Q zb6Mqf(KtwAY0xmT#IL5i!UkY>R!b}iRGmbwO;id@;UgF!B_R?aQYAh%5xy^@cI+P< z7Q`D3g}$sR2bfn3(z1Si6!3xd-~9enU9qO3)%`U^4t58AZ4MGa2PI;qF>cvfn{Eb; zp4aJ6^fR0gTCH>&TJ~YFKWd@_K?5Z7iKZkRwkXhWkqTIJs>2#45@9_>gDQWz`=u^C z_VJJ(>B}@)b~fvA@XrfykA7>m!Mf5u)8@$_(xNC^pjt3!aJ{#UPJ2|4r`i>rO57IeKT%YHc`>vyS<6oCFWA`1u*z+r;-(Hlc~S9jZaQTzPb8rmG6d=_g*`6-7g{l^-kRKGjCB!B&K z$qh4So{VbTIq1p6m3T6_K9ip%yS4oJl2WE_d;r|n9eng+NDcn7+q`zFQUQ7D^Gp5^ zE>iIU^KO+iaxdb#x=~wHAR?dyzsKPpbhNa&#Tw6tL3I$l)`P483f<i6oyirMQt^vQRZh#Uwf2dcq9<15;r6-P5B6mB4%+kprgP-Y;Tfbg=MDu`@W~PgRSIVV zEORT?8=w!Z`B#P4GCin;A9)K0vupxvxs6fUj>&m)|A~S6>PlU8;LgR5#!#tntX$B- zN_fC90}x_s@^mV7N{L$tW|JtfEL1y|{)<#+6EU&94zI2$sz*dw%w#qLhqfdvBwU$u15Er@0GSY?}3cS=%XP4wA$in3JrS zP39EYZtqv}%F^S7N2CymhjlL(6hQ=>&_;J@Nt00Xwnzy=V(Qo+8m3wne?xYe`o`gj zLp8vkZHScFFE2KU29U_F8n=iOg4)HK`}VeFeP&CR`WyfoS!StkS`6qQkv^?c+48)ak8sj$4*U}mt|e^)?JnACN()9ZQ`lG`R?0WUQDFDzc*Pv zf4Jde*&JE}U7A$EJl`@gjVNN8uoRL;7uthq*jKO#{@U7X=5MA|(>PC41N-hyZ|r8# z2)In5p_Y>d@2RiOP5MkuuQn~dB5d-c0C4PAjm)%YfLE#I7d5?K=*;+Nr(sqifIG`F z$Wkjl1AU1e%GcF}cqIi82$ODZ=v??e=e>XCufP8_;P0IHe>G-%?v!?8l`8Tc!$uHL QjgYA-X(^T}ym<4!02*;n7QyW4TFLLS1yrA~9s`J8h;pXYf$@8|tIN0uhbQiwEj zS-uoOrcOl+5CmzBs48?o6yc|C@U>6@L6qTt_)qbpz18D$wMgQH8(lg)d~>>cwlFmM`vQ{m0~93pXrZxxUv@r?tIYMhrs+4;nmZ z)S$tmj7Ib_G8$!UG-}9D#N5frVdWA8>EL++QIQ`WQJCj>^wZBv_V1S;UU}%q!N~r7 z4SwF+;AizupI^0Kt!|ibu$}sKKQD%{Da$_(m!hy?uhOTVcLgccUy2HHM(OjuL5lU; z6`$`{{B-;i`xOxNx^bR`>!mJRdC=g&gW!Mor_dF?Ek+I>+B*8^BlxlNP6SaZZ0W*V z+6Ma%knfLZS5W)OGLa6J6D=kp@J!(0z&F_&WCEh7K>ee>D^mZIm8kD3%F0U0tyEgI zl7FeHwQi-VrrN4i>o%>`)Tw{)Q`La52DynL8+sH>>fggajM9N2ZOEsr=X~$tkOyqhS3H-5DBwRK}iV)tpX#4PrJk4 z5#^35oq8LMYt?zi0@Xgw8iTj(JJniud_b#tYYas;PI;>Z;vMub+PZ0R}^c z4jVpV^pE`_DOx7B5-qux$B?b?Y~5+~l%(i`RDV9X>mE`R+e( zFyK(&;Uh;+2cJ26F64aZg)3LDMP84JzHu}D?!AQji4Pt=N=`|A`HG+RIz1~pCpRy@ zps?tJu)LzOs=5XjiK**SK$L1P3%<8_T^-@N6sc#RN?n(N;wJb~>Zq*J+o)BiaWhmG zICt(dcw1|Y@%v6i#Hr~T&lG4bT>C=3OWz?`dP3^bN_6ZN_bi^W$sOf2tIZcoB z>fziqj=kX1%xlFmWRUyOyc>o7t`a&{QH30a%`*aEglnTSQ((xc3Ugr#D~P4C!?Z0v z9ZQW|AVba+u@Lx7SXr584*473+gv(%7F|3oKt%J+s8E$5&S>@BN^W}@lFuOD%8)nD z4*B-yCLTpCd+a$$%bIq+=)vnuQZsyH#=E@=_Swf~T3gm=u0qoLpT4?G(YOD_bOq|~ z8Xx?RQy-s`azgqV(fl|dQf~;?dDioG@Suim?SI<$Y0%Fcj&T~FCqs0VGph14#NGJl zJgxXDrF)$_$`I34GUQaa$LmU$Swf%RWJq*|m~B&Wl_kzI6s{*SuIOL?G~;06 z1;dnK-l6aPHB&@BY3fhY(#-7AY_eTp_UQHi24!11N`^e4FTJsPi|$D>F@unf?MIC@ z18X(Ww7rWBmKs$%>68KzTg8g;VTbXNSu@c>y9gPQyq^1ju#q8$tt7i-$aVTzmrXLn zh*e!czF%)M!^~ss3-RTaenYZdathhv<@Vf?*CyyB<4 z%AuDQ-eh?{J>fAQE1-VmzVYxs!1L2y%#xbQkkl=SCyv7Ni^U9|d@MZeD?_ZC zZ~fV?k)CH}+H6-enqpvv4ZP;+DZhx%^X`&e&K=cED?cBp%Iu7syJopJ7$ST^x#Eqw z31>^$GRkNLspr+%s9E)vaO=S3d~&{I=;L)Sdel_I)fW^mzBFR!Uifra`UZHWrcc+t ztu!AaW%EShty7ww2DwzfWq#c>Ki|S>+stWtB+`@U-W4C6n-Z7A%0V@+Oe2 zZ#a3r@BIEA2cNidV>$DIIBSwzzq|u(ovHb_mr7=#BVUtM8ljTur`gz-Y-3a+1~_bE)O1 zK+2MBSj(bgx!dqmEcI+C21YE=k5v+h#>16i90zs?x{7*^;w_uYC<8(!}GV`R)588Tsx^jP7?@SOI4 z!lm%4bV3W3^2!Z4k1Iw$>VKM-l9B^1KImt^+S|hv&Kt&Fvv!yZ>OErXM1xWCpB$%c zs#&b4*=PTmULAcG%mmZU*pG_&rB#C>*X=04-;dw7 z+KIOkwG@<*3wfnU(wL%Ur+tad!Ih`}0VwuqR(%86-8A&hC?7OchSxlqW$9qKUicF%HKZ1tr2(p2i|R1xif&73QgzD1 zPM)2^l=N&8BMh#8lAmJ)1(6(p|NYaWQ7F>Vto-57#Jxtacu{5n6%A~pq5%Qm0mm|~ z*K)SkNljhS`xafQZ%MEdtVG)ZR5x*{W&nkA+tJVdG7$E?nC>QP2fdtLZ_4rkyUl&g z&sQbgYE4^IVbN$j?vR-bNhxdSQa^${s>J^umwMR1OmEUyU5)rN%};Wy)|lmWpbO-hkA9=`ptOjw9(!8^7z$yW4NVF z$Vd^?>Tc;+ZJhPEq-==D; zZb+<2B^)^_9>aT5M}ApdrHQ7^t~~(yvPYDtpoUBSfxEzGjma_V;j_2mS$IzXY7bIV zU=)w>8W=^H8kV_%PmSX3dK+v(7Iu`iMTYc}AvS9>3OMh1qR!d7Q5>*NV#4l6H-($F zr?GFwiwpFN$vq^-Q4zkWUM1w0R7nq+IEF1B&Ppe-*SsqQ0o5XV`_lJ|m-~r!`#JEY z$&k|l&<*iDD~9|ET49DZq%5LN!X$?(t{VoYjxkW zJ#I%Pz#{1oAWDNnbDzr)&)@Abqqf&X=#w3fwYS15sbI%?xk)#7_YgA8BOoh-NWk83 zB%4#}!(-O|Asz>ZQ86?CI|!5IPH|L2DnrH9ca_Cd##`HKN?_uj20>tPby+($4M%N+ zng`y$emnNU{)2sH&0mX**;W-MLj)J$v51JPGK2?q_1-Hk08FiO05IDh3{2Uzrfw%<3v()obJsDZDCpMA6OT~ug=ZN+h0g9=Z}hmri? zsu2?ex9;`iLU>)4BSVBkID)X43BZ3G!fF5};z!H+bAx2auBn1z(lY|)2A!O~M0#sC zIa``UJfo4Cn|5Lacn7|8SgW6@bb?)#{IiqD3`m#RwF)ecxM#a2}%)T!s)+ z=}j)8tp8aU^pPxnOM{MsL0%Hl2omsEMxqSKc4Wn!Z2Qt=Ck^WA_s4}7`FYkShHE9Mje9ropndYHIg{;HUvpV#Ja=Nh z-Dmq=l(23~ynzvk(V0KPOansWpZZdG65NP?1l=Fn=48eabnO39SF!-F_kV6vn=ma&M9I@*9ua|sjmQW%|DDujg_*DIAt5qdopAg z;3)UdCqIj(zO}y`Z4J2Q>Ln*-?kO5Iq;Hx>n4gK6<70I-8&Eh3>iaBa0tOot3N&Lt zxf7wOvDihI%*G_kS${Gg!aBF z3@{6|;uf&IOf~3L17}n7;f@}}3ld3Yv<%rjG;0P#jxXhrlmS zqTacEE%uX>#BjW;%f7(sGxBKo06|V1TGI(=>N(;ETPMmlrRR_x_F^COfKiN$I~KO2 zLgcYbID$?7@e(V|kPe{hHFNX$f%5F;oL6)5={3Y?i-7{TP~8Lr1a+o}fij+#E?w2c z0R3QhSx#eh0*rrj;Tn_{6iM|w8;u~6W%xIv>xRP};#A%cP z+@D^{r2XYr{+H=-g?EG@;^Kjc2`8zFWALR-Sw6(>3b~bF%+tg!*>}et-hyRQq6H@O z+zx$lD*V6S2178crbQp5q{7 zkeRP{pd1e${l=)gXEo+5PeEvfEDW?cpLjGzj{1s%=TcvSpy%YliA$of6gLh zD|Bs`Z)y%D7`YtWVEzNaaB4YKC&ymr?w28%p-Q@UWC%say_r*9VN2dc0o@)4Sk`9+ zueyvp$PV~{bcTls5#4fPt&u~i&6@mgQHEuvTG)fz!=)a>$*qye%;Amv1CMXm4$XbH zIHOw42Lj?jrk%CP8f(I;VgW?+>Br-KGCu|}?^kndwfVDS=F#$G&DVVXkC+G+IJdYN z6U{x*kNU8{0;&SsI5I?KoVHGDinahF5pc|~T8-chX*3`9Q{-GDwCA=!pIVEd$hTk>Z`#2tUwy?%q6}n0(P6rppA2ygCG|y@!C{w9n}7P}6AoWX zSSSU;X+-ma-+s;KH^}5SiIbZ{iP-7jA2{tzzzjGWLZomJbOG{hCoZ8`YO3UEmc((c z_RZ@ountX}!=H7|;Zp*Py9@pOdt5>I{^-nC<6v)Y)9ly>1tZuTE5QdF3D(62lV@+y zfKkJHK+dd&A9pP=E=heKBx z%CG#-c%Qib;$v<8>HDICCYFL>n4qI5(Dzr?y&tQd9En|BEg4>Yj-#0vaI5=uk?+QW z6$L%ljA2;Hl?paD3=&_bGVK@JoSk;9hk@A;@z4!5J&xdQ1pU`|sN>c$M6K9~91eKe zyNy7X+!+EqsNm#v8IrSsVu&F+p{c+ojPtJ) z)Ud440N(Exp;;VK0ee9cu*uGcc*N?P9}IM8aIhwO{?1X1Rq40`z=su~U&_PZZ90m2 zn=nEOtFL#_(Z0N+^{V6%3wAu!)EyhG9@G|8K?=!Nih}{Qvb*w%!G-Fwg4XD_S##ed zqRrqtGq?{QJ}wq@U#e9B$q{^pHiIzKYwJ=nO`Wj?$@ z6$crz^&zQ&#gEP^6Dt67kvSOio_jhLGKjsoK3HYHcr0rSogB-)1T0NKZfp&?1jWtW zAZt68ffB8(1i@s-3>x-aJxPWr93TwxG_ZR^flJz+1{V_yJfkY#2&*V(xyq2i96~o% z2jUw|4ymM%L%h{+2%2ksS;BTEBS8`}3~s*~Md>J1Jz)_<;Cm1)gu>VW^vJ8=r+4RP4c*y%D8KQ%*rKg}qid=+=ppC|}8(l)! z!I?5-r(;%zRP8bcw=$O@dujjj<@&#R_UyiKyMQxmPK{)AQc)IX+8mt0TCn5p0>NyT z1p>kJ5ar;m33^=<82u9lcAEUhpH|djD|`KF>;K)U=)YtN27EKFV45$G zAv#7FUyq!4<56J=nseV!oXdN_|6t#h;qFAjyeKVbZ(Krvk*2)ztP$gXaj2yDjpKiR z8dV-p{#|ahL3XyG!I+!3ej{C&qa|I-%5|)wwGD`kk|E$gsw;f7t39w&10l$`(4+S^ zP~o>w30OXbUAFtg7y>@u*NQ6&?9TS%{b zhy{3rWt|4B1qc4;Q8sl{A@E$N%+NHCRsTej>A3k2OGeY98H4dHPMf`gvjf@Or)Ef0r}? zXL@Nev1eVti!=bt)o(|n#{`{ zO;^FKtc5$mG_Ke!pX0_4R9hW%%e<5E<>`}DE{ACMa)>UrWlS9S@O7Uh{o{Y1xpDGF z*6CPxR4~(On=ZgHO#ndcz<~EnrsD(9JKF$h1@1-#tpLC7cifXL;8c{Okk2(fAh8+< zc<4Fg%K}B5aW7b7;PcEoVCX)7emRZMxRu!-QgG%8JX{H2?8BinO$saTlki18)hF#B zb$CjKY%{Dd-B~Y4bIZpv&!Gyc#3NHU!JY0b(jpXo$UMhF^7oE+8<2g+YW%BVZzWjb zQ%9?w-Yb$r>9+$vu~D1o6$2>M781@A^$X1z z1bC9Vph08`pzlglphr49*I*`vkm?qKzSxrx*j+)s`vjm9^zja8{!F0*iM+wer!Ez` zScydR+t^`jc^Ght*~wJtiTdpV^_#Z!h%^UT*g)VF=d z=Y!fR?QP%HL7AVi##~bnYf;56?cv_72XQ<$`C{*sRHk>raeYz) zpnL8E@kv9{{qaW!3$t~Y;2ISXm~P_Kl%n_rwDE!NSwcMEGs24K5BK=lO+I&$(x|ahzru+7;+v?^8rF{X?gtm1sK)TdiJqEIA+~FH zY3G}cf(ix#AjR8$4F{hA!N37pXg0(?Z)5Y$WQR1+>l@{EXyc**(r*H7^Ii?W*aO$p4Dci?~O|+Iy&&YUqh-P$hifITH`K*;3dGTUy1~HIM!;(%ENF`RJ0lV=S4Dns|J+bEn5YKvR zV4^|)>O<|%jr=7!jc?>J7>96y0^T_X*89v_{Wa5SE-!In(jBfg1FP5lAL@5jutC=_ z4?8g8Dk|#o3e+>aejdxH3=<_onFbPjO5PmXf!O*N<1*-`}& zO{umh?I&eaEy=JH9=~Ay?(u?iJtKkZB}2LmW&7B76V&*GM5K^OxsTl)M_ayM60^2v zg8qz}<2i`4|7}Mffbtj{pu8ct;mmfxr1s^Pn@xGFq!w+tC43l`yPRqIXjy8&$keM- zL(W98bW3kCvH=tUUabVY3X)Ld9bj9?7{^VH9m5tKbOSPa>u?rvV0KK30+3)Zjy~us zlVhX@0Jkf^7=P?rC#YuLRVCFI2`jND!C8ic!c7WvpG+jxmk5&`%2%7{XAQCtwZ3vA zt{T|plabeq{ZzsSkTk+ey67RVpp2YsSZ?~R1s!&IoE*4s04xurw!#hSuup`WN<~7> zef!R-M9&K@4tEDQUMQ;g^R0!G!Q>WIZ<2LA>yL*pXU_Mbz9?Cwft;w z3E@9?qx->Eake4qfvX2kwpg7~Zql`xM(6?k_;y+D!AJvMN*R6_Qw4G!{(jJzPMpV+N{-(Zp_-(_1~ZU?UUQoOD0m}Q zQwow(d3@kQx&bv*2FDWG@Uj=004_eoA!mRvFo=Bk1U(>RS+rI4hX%BZ=H^I!vBOQf)Kq19Vf(**`c(1WgWKdbAXHUpau~JdRZRtS6-MoUIrzGm%b7n7wKb2{9$IP!oI zcU!`OQ%`3Ovs=xZ$O5-oX}lM_@DHaEiC5AnK0VTKS6mV44MmO9nfn7kXT!%DU`9Y1fzeRYf`o)IUs2A=9zK``n_W({rMB zrtu`o9P(t4%j*Kk8SEaf-%6nKNpDVnAoPE@?#N?>#~Uq3F1DMOz1sqWpzNM|ib-!( zI;*0pJUcp*e~NquhEIE5_Hmf6Y-+wbG?SDG-Wy6kP_n$FBx6*hJxhl4;0n?;#CphQakgtRqOk|z>OkW!+Q z4mdigk*;z(1xz;7R_1dbQlvt_I1a-v!}B ztmv@}nH0p;r7HcYsVY~HHk_(I5@{5S_-_4ulj6(2L7~++c=yl7-t%J+O=F7>m7tX;7@2Fqe`T;*rBFI|b7`B6DAhTJ z?#rowFtb_b7+*+YKj?;9Hjo}P)h6p5C%C_7d8+E9Jz$d6rS`XKP-*m;jPi3lf^l9E8tHca;FdMhm`5iE_ zf3Xblx27e6tG)}{Oh0X7-j*R97J)}8sG<|<7;&*0&F<*{xgt)6Avsn$?lkXrcBz7p zz@DxXVx-0<7P0m)wv3*xj6GdXZ3u)7A!M&84J_#cifceE-fZmNsAq7zJT#U?Y!e@p zCyu#~DkS5`=MzXrt{*Bm0}*phfYUT-u<007JTxhh*5zZNznj^HqzGvNV2D?y?VQKY z3RuzN0e3*z2tR)uE)teFL!iThjN6QPnDCJw;f7a_fcut_ok8@!#KZIG!d5OE5`z@M zoe&5(?vlMKs4Y45Tg-`Z{`wG% zq+)^r5cq&A-nrof#43+4H=anTs+BKs6TPOID3l>XlOXkg&v*xeSs)F~5VNDb(bfCf1z5lK8Xnp$TepY`=6+ZRlUbI-;6WkQk9jz(ems zr8*!Xm1tlrtjI~rA+@mGnBX+^JPu;_w6igh)Le!rf})r~!+rkDAc&9}aD;o&X@%S; zorN_yg|LgyZk`}mzRO*>>Kp-VV%Kj9fSW$z%Qro>8>76Cd`_n)5`0t(24hYQW`Ixi zHffMK!KczbSr+o~VcBh*%?UCXvZhuLYWffpEtZ`V}NYjCYl`!Lexb=8p;=Ot6m{C6Q6;m}voeUcy^wApjsJml?!q$bx z{I>28BHMR!c#9rPP0YTKe6Y7;`J+{ml7rc z=0?Risg*6XB6NrKI0=ieh_w$tm+Ue`ENP-%K3Ct0iPskd?VmxnLLNOzmrD!|^i?{J zCGLC(y5vGe#RKjlRuC`hylS<%a5ikBOAS4FChK9rH)?rC9uv%qim!t7C3+Tssx|5W zdEq|-(Bd3;(DN;s5$7LO51r3lG$WwIvFdJ_WnHn)g|)Z$0PyREZ2gXFUkUquq2by= z`H@$|+20Rlq&qFvSNh!JsA>A_x@Gm3dL}g*{W9o|RNJ8G zICaj%R$F^f*!u-bFu5wRROKR;b_yi}=3w4#-=U z7W2MQTrC}0IeC_lI{f?t5Z0#Bx|_(5^=v#a_o*)=-kx90`<9-urN7gjTD@6Vg=U4t z%ve4g*jJA)GdH`uRMasF$6?K9q#bra7 zzpaJP&h-lo=dih^mH+liZ1PZlVDw}47-^|XT)SPC8>=By$C#m&=0s<0XSjn*C@GwX zNev>oC&7?aqC{ssOTy!21$eSOiLl=JaW1gB`wlat^vOkO^nv#|C44W6WR;rS%1?QKfW034NzaLVLo6 zRL_)NqOpG=o32!$UtI{XSdxZAh?qvjVt-JxVZQVRlN=nD0L*)cp|p=@4Am2pb=QSg zBQH`$O`ZTSU1CS9C0@61d%x6qlYcy$^6T>FbNtdj-N&ikf8@@1V^`bt51AZF&LWt|FEnLH?1V7G&T@r$q`jilGaC}3Ol zti(9XpTiyMwJo1otVmZ%lK)<(`0YFVB}3A}Qk3`onno?n9Ivs>M~}3SDY(6-%H5R9rgnSK z+#~m}H$3rNt7u^K$VtnH4qw(W{2Qc8uw+q!zAw7ms$+4iw%>&y)qUNt(o$DQm=(Ov)xT@1t4$ZM-`DLr(ak7(8t3!xu4>cGj5XQSJ~bE}R~;?% z%&1U-*a(#z$rF1V$Tp`t+=f0cS( zHtn0)LOwI74*QzjjUZ3lHf+9her$q#;Bd@-JAG>Q9UzArQta9jLq{YT{o}Q zaqZ@u7*Y*)S&6;-!?X-YddhEdN>);b^<;buTnVg2b;-J{;d^2_pL6Rkcy;1Des{8` zD@J>5Zqhm9KDYZtb?rYVFYd6m^_X^UAIJ5W!O~CItR;SQo~(E+F6pQY87yZ378mC&ks?_T2`|E=OZlSbTaM9IfzRpLhg9iaTZ~V){hG# zw9Q~#%!eE5SHg84pDll8^UAHrx6a}jp`)?Iz|159(Km)w{YL2HHPq?#x_jxcw%!fP z-)x$2rHyOhyEj^wJ8$iJ;Euk4o0NTfkGrZc6wBs+m=AY>F6|MJsp8rVklw`u5>>rW zpX%c^=kr|cT;k^N-PxsBu#XOQZ+xcTv_)0ef`_|KnA&@|rUz)-6PGhizKWV!mE0r- zimjA_GV;G^B_bq3|I)h~%RcGeBzX%=6YXiA_MTkn=!FVe3Zf}k?`A}W4I6&Z+ zi=LO*a#_#@9JlH`kUX=n4A}4Hfu3hw-(-epV6b2uAjF2PlNqssSrNhME(_nkFSfnz zZ5r(K_4toZ8mQRcLEsGFYlb_iWb<_ZBCP889=ipn79W*657=oA7~-j;iB1dV-1KOQh8aufM}7b{s#6(54+FCCsD%gam6U1W+mhrLKA0(xTn+* zWE_L7h#O#nR0E{jpm#D#!}UY4_z6%%O8XORz9qJYF4zlla<5ky-iecA&orAXp8tki z%n_}VA@8$3?R4Q=J1wyL;!f>f*Ph9c=&M7Ay3#xjsm#Us0oGI(qyFracEcU^V|htX zt>sg#Dm5X{%#&xKvQ*UvsE?6gMYb`>A&pPJ*&RBc&q2>hdHEJHBoLL}K`*041%TI; zs|*|6i(s-7sH&fDfuk#06ONAxL$N8{u_s^$e#azlKksGr&Ap(TK(oEVrkY#v-c`53 zm%iRZPC0eG;M^LQB5Nicq+Sc@)sJO}!=-p$2r(*$UM2Cme52-awdotq+x&vO+|W^& z)^AQ8lL-U<_3O8U5iZz;Y(2}G$jB-tF#EA-`7J3V(cwkj&JRNNnrkpcA6}5o*UTr` zbezWUH`6ooOV>@%C=c>oYVg~HS^esr(N0}ouJyP<3-TUpE^(Y>DK?%xO>C43KGK@< zu15!)9yLD5*BQ`)!EZ}n==2Yv9K(!--6HCZ)$wsXY_}X$^P>GeA!*T^@yr)T<2SwV zht@8APJ+F*c`>zPvZk`NZ_Yl88HQ%M^tK>BJ!ZtkKlC3nuc zcJt#dnx!s34<-F>br@o>PzW-$=dM|%NST<%nbDSHoe^Jp*}+VTUW*6=TMs9pI@-!# zd0>+Vze5P7pg@V*!8>`fE}_c?E+P}u;L0zg5R8KTlxgb>OCx?B?^-J^^!SAgzu4B1 z1%(a7UQlVkIt!Wa7S#=VXuK2rBUTyB+1Rjm7N#ffvh3MZ%?sqx&-6@adbsv?vryt5 zS{g_u&GU8!0|2i}=q*E5@~XF#Fr;Is#@(akjk_mZbXy7tKo?q$^a3utI`~=3i)DUG zlTe13WHAbpDt3I|M4YM|=M&hwAR?rLxu$(R$a}RnpmOQu6P1fX>z1SK5bHnIdymt| z2C!i>`{`+u8CC|Z&n-NCZ|K5h{o0z`ppDrx!gIuhs`_(d#sJz_rmeD)8trHyKl`P*&wW8p+y1Xle@Za+sk=x}ORdJz zzSKu#fShf9=_y}hRA>G;?rAjh@MAVx%#%_{?;_i9w`yht_Y}CYBL>WzYA#2tu^O$s z@G7>=J;*`!j=*YYfDZ16Ru2J6*r8)>*FW1kKFgilWFEbr}z5oq4dbZ@HL+A3VtFBnKZ!tJcsZEzkrfqSJC75y9OGCMe2+jTI;%>p1|T9h!5@`gL22d9`P<<)TRnqfFh1M zLHAxqp$*r021FUj5V>ga5oIRDrd3fIxOtgsQljrJtJ7k5<(q7R{$MD%T#fh)N zU5w(3N!BblAlTkVPtj}@K|pwEG28^8Rzx!-3$e_cvb5PWkse(Ws~dDMDsZkT`E9Uy zJli*;?%2D%U48wy&XYkp0{1NGLk6yaie~e&Rn`O&kRX9D!x|!S^U?uOhq0HpU^*Cm zbxw8^sWv2ooSkAt^zf0WgH`YQX&XN~&OSSs@fN6$odZAL0z-V8i7wD4pGPSmezoVu3ZWGLyV77lZDRtinL4D$zQ_~Vn>~3GQSI>V*6P90 z&!(X#;^F-;K(54HQCB5?Pr~qtyc!0}@V42OrB2Fg3l&@5T$}GV&Qty;-|s_X4J91-0cp%rRM43 zTO_amxbZGWoT_xSF!845QOf%IF3+rotLUCT-rrNiHbs{V;)$0=a1X-L zuVNEj-n9nL7)(q-tAT1y8M?>q3^SVRmt`f=6QEW3f#hCxKqgqezTk|+!pSmZ>b*UHyB&#YLdtVJ1I`kZUb=!~43Ty)9`~yV3jcLEeeV#4slfm|lG*}5o|hccmAlA3L-<5Vz_C>&4`YRR zaa=R$gXB`zRhfG71wBdJ@j78}KZEpIffe}~HHsi0c)0xNKV6L0U)RO_y(mv1%}pN) z8GLF1+-2xh`I%|JLU`u3PO7!9$qChD`#r^S7odT;5DR&vZjNiAxt6LB7*&-^v49s; zrs2m{8N~tZ|NE;d_&$)WS)OH|9Scj_GxK*WGc<$hkbK^dJhIX;zuoBR6-Fv|-7?}6 zdG@A}!s9TezSot=7ywbp9m|h{QRwSG58md}AL7mE1C5qrO;Ru;;A`viZ(8HLS!ib3 zeDKd@b^bX3Y=IQem)F9vAQN`3UEYqFCID*oYiZX%;AbX)YYw=Ady59qx$1|?`n+F5 z0+IFLc|fIuaQjzy3$}*!BhLYc&quVIT~9ks>*a57yFTO#@69NDx?pr+qP2R?KC52- z{Vyy#x3fsyb3lUggEQwNj+xVi53qy_FBJe4)5T*L1)dc7r727phudCopjLGy_avoM ztR@D9Z{^^eTy|CG!au^ZW(_Cr%GYrVGKeolHy%65d(DL=e{Xi1;wop?idm=^r^tI( zgiyab#|5=kZ`xtErB|EU-~ZBUvMd`CqLiMgoqI>{(D&!MVJ|`BHlsE*Qg8)u3{V@& z4`=e|k#6vklVF$y5XA}XVg5dBw_Ey5%4j~SVU`xPHPu^8SwWfOzPWP;RiRV94 z)>9k{hWr!L(U^o!;Rauc@_Owc1$ryhH{?FNf^87zaXAo&yyYgDEeLLu@E5R#GkQZa z%X4m1Ykl#+J#Ht#7l)&nQIDZVwnKyX%LLq=c05)-c|KbF)KJ=+J|K=)J}FOzRAsZt zW4j!ifN#dzStISUxy#dij_mxsdp_A^j96I3brTO>DEF_x@=~!1u)OkU;9{*QfJY>E z&6nk#Sp(jc+ZfTec+em<-=@c4e&7<_yFeHjUkce`M;Wpm`a0Ga3tl?;9vh zps=}8wkJ;!(x@Nl0-K6r4zGQTKdnQFp&QTaQtx3$=Nytosi0rqYtAq^|ED(Ul|VCL@? z%rveS{kc>@Pb@w_sgxv{kQ#7bi>mWrVaW+iK2z)tuO${x?<;CfXsUhzeA5MXk$}C= zx=od1?ML)nD@?BWHvaY2ikbZib}f8Qr`Qqe+Y3 zcx22B0O!jZfn-L8sb6Fh_5$|r!F6U{E1mGsdGtc{M;Mf_YjLB76c!C4{Lhg8wu z;@KHhlgV~_=VI}ty5w1|^btRAmwh(R2FrY{qC{#r@CaR&B!Ih3h?0|5)~TS-QP6R1 zDmh$^zSA8(?5WQo5W5!P5&u{oL;EqY5+Mer0+2d~Qf@mLd`=502Z?|8S$Aq#*4>qQ z4O!MEzL6V*UY_)~yGQC>lK(@=La{li7IfBQ%!j+=SzxWGT*Q1zLYT}GOqTGEy6a-?|Z1SL;LQ zyqB+MKodYDHAwZ16_2`3^n7dxdIg|YBO1}GNiEW=b>^?LLLI3-n|$ z9UpkJBdlq2Xnax92Bw!|H_;@yujZ6b&ctecH3Q~dxy2I7SqFl%o-2=|4QkmvW~_V1 zMjNK9gg3_V%ec<7^P2INTl+P3)=iE9@i)ZL^?trfWBb7WP)2m`e+tXmxJbT`nYpK6 zA`^{XzcWP-rSiiPnqni z)Ln(!?%_#WrGi!My0B5MoAn2_AfTmm_qX__*Nh*?_fhYw`3Fl_xTkrUflxx#W;UqN z$Adie8qm$6Tre=KKY$_~6zEi{5C)l8c?Amp4t@$^!xk0k?{+qPAM(TXRFmAytv~#t ztM6^eByawvbQ!mTm&(&5uw<_C7l6n4oNk0g>*0UlefvC44aBoE8FcNVP>vRl89so# zi1d5~BuSdR?3k9bj%+i}4H|=<5DrUU;xdy~X#$RT4i@JWhze|ycAdde zwP2!MA6mW{7&K$x*mDov!T3j6;_;@|URdtF$1ASctdr{@$Ujnn6kmTH# zEPU8N1uATYNE*0r$MR^nt_zr8<-%>CEsla062a1sRZURwP)UH-6{6D7N)?U8_xI5A zctWSej0?9fku2q2av631U8o6ldSz_f6*V@)v=&LDdFq4ttPSbyul(+UB($_vz|a(|{)9rC@l% z2r{02IXZ{zdMk@bb}xm9!;g9HleRV5*-2xJ&ZxRWE^lv~of!NCU`u8?huD|L5x~A& zskT!*hZvsjBtyEMqo<9o?$U#u7WMgP7dx11*qRz-v&A%k2wo1ru4<8RU}@X>1Lg7r zaT%9Gq}mRj4s-^+>`>CroH)XwHr=F-&4ofRGpG*ZC(tYDb^tb#z_s*-Mg-XN`#iE; zC>&R3vJ7e4T>^2}ivTyk?RQ;4>>>2E!r_^ilYSvt=4AJGpn&jWhJ(P@Xa;%R*-EPV z3J};;xJ7;$U4?6*dHNoV=m|-X{U-6Wv_;ig3-TUHy1E%8EdnSDX-R0*ppheK?Gc~D z#ut`(vv8+t)I&a2FGyaIl@K$%(glPV!!TmsnGs35b=ZTraN#Ska`QvjUD%UXxrC>V z2{J(UvhXH*2TQ?2#jS(H86POHi$B?sOeyDG!?L;xsv>>TiQ6RWSnkBwr5Q%mAD<1s zZgk+}H4s)tBov6MhiyNfZM4BbHD<}owbPz`D7t>)C@<9CcqhJ_?sJH)=@&Nhc(}`> zGkIDL8`i&>_OxHjXDwxRnqba9rmQ~ByMKok|85Fh47U)JW$uhL{&TEbAUV+E98GEj z59^^l0wTodtjLvZc_7f}i=F3>LNkVe#5xZJdkDb`HhnmskGoQr?|I};IEW4kD)HM z978=7*K2{vE!VK)tA3R<|DS^=Ur|Vtm^cb*Pkc8+VX3v*kcMSK zBcO<80y%Kj`C4KQ;&)1bRmk->pv8w<*VhZk8=gdEd9PHKA+>&nGhWY0J)+*v?4Gj$ z^c1E~*S@VZA0uV+MB*=!ZN-)5)x8_3W90h!f0%FkJ6py$7P9evgL86704odqYL&}l z0-z8b!~0nV;L@-H(z`pGYA_*ZXX|qEQ5-3GpIQKJKjRu;EfDlJDlpghIMJt zO=WB++y<76aQ!)?QHJNGu9kdifOnD1Q2ewXiI+H@)00Mh_xj zO}HaH&SCLVTpi7iasiO3&R{`{tO9p-g>zWXjwS#z@`c(w7!_x04hNri5~K~amphB=O}J*FJ%BtCY{%bN zyfS?pRf@je;>XmPR#N&dFXGLKaKEa!N>Ia0JoImr^yQik2i`-SYeTO}q{{SIV{chTyPv9l(U8}H(l|(lRkAPC>)W^$Clf{2|I@htnt=RdnyZ?XN|ttQ&$aW{<>qpU~OwB6O-dxT zz(Te<90KABtWv65yy8<#z8+%ocE2hn|F2x0OT<+>9x6CJvaG}%B>kz1jU)vBmCJv- zTt2V`QZTVq%i3X9IxQ`wuvx>$u~75yFRt#YK%&!&jewIOHeJI5zj}~TdRO@no!(Jf z*VTJlx6KW_?IdDTVwq^j4Y{{X^>yG6s&8-9FsjB*3*N-9vK)#3HqFcDXg;wPnoLm)D^DA@0aeXl4Jm7zLTN zc7fh&!WS^}V+u1f%rm{H?lgZN->dYs!;LC~Z1?AivP43^LA46EvbeA$JhS@GmdcH- zTGqqOZKi$ncEwfMXGJQg=LKdwXXyDj-P99!ocfs^CZGGG2`<}Hh&piOO;{A51~&F{g+n%hx;i1 zmsbDjt^uTdOUw8{v(D+M>IpyKyr*~mCq1|LDyimn=5wqY;G5$`RrALg2GRw`vA1%R zU2fPD(#om%XpJi92UE~q!U}TgFi;n+p-}XPn{{2P7(_t?xvF8Gs9&3m8j0=MO835b z7_CeMBI~T17;>*c6V3W9zf*DbU1c$q@s?R`2QC>%^QS>jvvqaZ zSKk}@oqTu$&1?I_tZ{u=UT+>z4L-Py>qF1e&1YqJ-GJFxR70Mb)tDLovt?%dN&Qo< ze}P?CwO93c%C9wk^v%QJZL?cwe;b|og~mmS?%GCm2dzKTdF|!|8FbNa+I#F`GqA`n zhO~xy0MPC^Xce@xd2yho@figa(uNU4kJ{~|mNhf*28h*J983QqeFoT>r3&aZ4 zIyDx`5FK7_O8x+#tvFJ2k~qCS2Zfy&NH0+OPk{cSM@_XUO!@zTW&B@4xM4y#uXq}- zLiP0}yOTQ$co8*FD)VK`%7>*qiT09&JA z>v15LYke(U2m9n|lhK|+2|4w5xvQ<}bEN9Y=M>%N&X25uDbR0@bo!OeAAt++;X}*` zpH3IUkU{)Jk^k^6jvh92?>Xn{Vq&>Ha=NRYrUte4a(8RG-SWNWqB?imQX1e30VKbW zT{8YVIHJbS^Cx@C{o0&2{{>wzWl3V9ltohg{;6^>S4uzzdBQ0H455UXBvl_yry4)1 zWMf}y{J8c7wAu27He0_uS@iiWknL|ZXvYBa03L3GYOqn_(F~U{wT&MyG;aKOpykGo zf%Vx#?oAre8O`ix1jpP2Z=D*&hn)5WSOv<@aJA?7EqIYvPe?pJc=-}KG!?{i#9g7q zQ8#%1@A;6NvhBRe!O(DO1e>&Rvu@gGlzP`E|1~Bk;ccCrNa(#E2<@qgS>(j9Lm7gp zW!t)&95G>K$D1o06~BQ{UhllU2|g393OwaOIAM7ZoBh7?81x#id=CbPr(T;U7bw)g zrF*V)YhCCDEux9`kQ>fj;Y5sPW)7n+!D%-t7zG*ceHVDyqp9rL1UeB6vef`h7=Bqi z_IddDnz|fW*vE-*#N~vl5;-xW%Oa8&&J%S5HmQ9w-o_7$x64kdI}1ywV*-Br6q}p@ zf%hYCIATq_Q-dQe`*cJvxPM8w8tgs~-h0+Qk{TrN<#EQbit9~(7dnxukO?mzYKXH< zAxHllpmTq??|I`rO!3JuWro*B%#B{{9QeJ(przGK(b& zxvXn+SeuA#kP4+?TT-bM5!D>GMAB^Tmo!K!sX>ycM(Ki(bT2hcNjGVx%XDVu%<1=> znWCxK{qC~g-|zSGN3Y#U^EsdMIp_0yp6C5M&-)FNOT(1pMvs9!eUD;nP~?*n$;8AT zx2dzjZ=?0=Jj>EOb%@P~a4{RW;d@~c?(|GCTta#|gQTEVERwd3iH%Er=t3SsF0(`@KT~W*3_M0Ny-(!T>t#wp=TW1dHq5N8FI#T?d~3yg zWuxuF)T5S@T+yUrik0)T=;5{6SpxT40v9X#x|=6*R;)DjG0%=jGj5;_i(SuaID*eh zDc`+$R)JaQJE7IPn#Fk3Wz8F*DOwpv_eAB}vC-Bh0=@~Oblf+z;~U!X7Yk883rv2t z1$gck=1463z~z>%O?fN+$E9xn7?J2N-01G`a$g&mPBL3{W=gydunI0p4K`wgvs= zx>Skx5VB@07&A*BOG0v*MDK$S&@KHTU;xLH3>cJ?RX$B+{cdr(GB3E5%ZXSPtSi2a z^yt{rAtZZ`tKLH68jUzGav5Yi|CH>@uF4tcF3AjnW~>4YnQS5RJD==Wu{B zW+SHJ3wgv*D~X?A{+LDlV@*LfhBscAL-~EBVaSDx`MwHiQ#Fq-6`mxkQ=_d{if!E? z5%kD26y=MEpVRQsrOVS4mkl!vSNq=2C%as?VCf7uV_U(VY6-Q>KRUr-{PStmvkPW~ zgqR%MeBxxC&DgQhf6ix{qRZP=ZP1=2NMaF(*G^(PcQfhuP?#->4yJS1(euvkFB81N z!X992@P%11HK`&ZibLr+J7|*KN{9`EA^1yQtf$0xxlseS$;0bteW1vK)H`8c7$SBd ziZl#r1NkuMfSy560#-d!@&Ix0AB@=R0EP877aalt?QRFC8E>!Mt(MGgAiM}AV~Er# zuSkX^bcVH{R&xJ7qi`7zOpnljn3a*KQd=Z;X`&PtppGhq(Ie;uQfg|hEsE2_t2ohhwdv!2xF@+2 zul1f7iVSp_yoV2nf{pz8Js(p-8@BF6oC@9tmQxD}dI~jg+QM5%G_5uxi(Y^LOLvJa z4W|b>7DfuH62_3v1Lmnr&a)9s8d}O|FA2WS0;*+^O0>iT5w4Vs2fZ1y22<35Qy3Nk z6VXPw30Z7RLO%%r!~;}=n2W>N?g@B6-{3McZ+yK3z>Z!}gzSj_NQ{bMi#5+lg5K`7 zbU#-9zP_v|T0Jl3g_3K2^C9(SmGT+W`~AAkXkb*9MPc*RE8(tVAFMa^@=CHC;xw%P z?@ik$nygzDOg&va?ZTP3v1-3p1wAm!w!w&#zsa;Zgi(yNb^oGr&bKoAFQ7F2i8A}A ze5x<*#;Y(|Z^x}W7G>W@u=e2K^_2xacW=l3GF???_yjG(&=jXr$~RfV56`AiQr7BQ zFqOuqgqyE@9!1${=C>16M+KKt zDR&sY0M3TT!HXZIE(t|!Cpw9jy4FGSL?MUJr9nM-(oLs2Ne?cYHG}2G4zh=<)GiWJ%NPYn zDh)HWMEM0iL>6*~m@Ns!0rd0SRMDcK5lDnuJU}Y0 zFf+l*#;R)W$;_p?cJ&P&DS+nl`)hov{o@PwYhZbRh8D4Kd+kyiN|O>~fq^jf5)g~t zAlccvQml|Nrna%LO-SIhlCS||s=gdS8gRL6`a+ycpJrXlz7m&g1x$F++_9`OB!0Q;wHU_G52!`LV6d+af zdRxKWp0YTZc3CUh)0HD8*&?n@Np`*`ho^cdO7?eRQ4Il}dGxJHq($`nLFuSf9YMbf z1*U&MZX>J!cD-D;=-&VJL{AYa$yX8Hv7eEuCbY4)_5w(MtYHtM1&*Ck3=JzVNJ^AR-vFKCFR(w?fct0v5;Sp;q(?0Z8)%a0YjU6J zyLn?TAO&@t)*VRIZP2P-LQ56+xJ(E1UR2qQuMNQ#1I=t{wPc*=E4bs^1sf)kvvjS;ZdP2P{i6SeA!HcdGce z)n6Dw>H3UAO)Uz4v=uIYU}VlcN~vF9g~&*xV%oIi*nZ~`pYK0Gp78hN)egu~$paxkc`5Qq+gjXm?sD(x#M3ON(m6 z>bUoEGi04l1U+g4{HR+mYsA|ME4e6{pJV7kpi6 z;-I6Sv~h1t+CC4+6|A9QPpMvWs^{&7bFylyiFhgPDChQ524;(R(FA&1WR~S+E|2kQ zADZHJ2$~qSpj8DG1w4+}M@nuZm%tJh``5jH-29N`^lRvZAUE&3d+k+MuDzqY@v}Yc z0TK<9SPfZEdxy%sm0efvrBvWU?+dB8nr^B6om6Gw#|P%Q#E*C9nWcHUc|#Fn-@P&5 z7K3F1Aq&zx>9_kVe-W9y5LAI#M5kxK%R5X~k*B}C z=?3X9k-|mtF4EqP2CsXhq1gVe5_aM z;N(>0X5^bEyo)5t&}x0-vgtJ8chqtruxZfl1c0QWszQe!MH~!cg5w{6TW0EwV~V@M z?mL|lPlXET9461aJRMh?-Y&W#m-(7&mT+s>K!Y}nLZW5#z;nJa~Ny=h^Kf(6>>?$VG? zwkRFKikW;n7laC+00_%4`#@`h-6KTi6Z;XDJ$kFfYNxd6>2})M*^QclL7jS#{}=Js zZiJisf?_jZi53AGn>B`DN`0RD^>N3XnM2`SPn^*U0t%^lVqFHMGYWw5(d@=^lGX6i+3C*0R$cO7 zb6Wcs47g@Egi53U@O`*8HJ;I@Sf!PbTZ<{j$bG46Hn}n@qVG;N{|>7iE$=>{<%Mdw z{YB%Dl2F=^C2hi1<&d;>w+1WtL}wpFRzI;D54r~{qff>{5+m0e5!uVj*tk_>oR;Ui z{|xd18l$a5{412?Afb-hIAq-1PR-8LyIIW_2=)u)IKsDd`wcWGL(zoWeHqw#ARLxi zp9TLVDJQ&d|q#UTDElOn8>w&ZGh*nM0 zQwHv{kM$5GQfwtX=SHhPLr+0RpZZh0g;Z(k5Tb2?u*{bPeaN@7qnop$w>Jsle7p?E zK9PRY=(fwk=Kx&*mQwfJG#gC@aW9px(4XA*Iwz*O>qf^o`n%RFDM-cGnZK2g5h|;; zKYar6G_6HJ{a0Sa{8+cvaBTIl02MARk+by4*wnl&Y*9}y;$nmc3%nqyj`e~z4+oul z$F1yRau zWwVXj%kj7(GC7`A;JG=;gDuVJSLA=8@R!`7EY&}OC&cK}Exx~+{3Ti4xVaZX^PGzt#=o3XKrIvoGE(f|Z z)%sqg-o)Z9#FVd9)Me$5J(+^^Z5m&WG&};fzuXVe4%&nMZZsrOq~f-6;4ZM`y@QVKZC^Lc`MN~@ogASjc!!|s zAw-iF%;c*r3f{JZm_iSlq?@5=B!G{8O%yStiq~~Y?d%6*IA68u3mwknt*a>qje)u&cQZ#&u;aCkH0*dD zpEeoHNfiy7+^vFC9+}M$?UzMc8{~b7u7v$KGF?Bpu!+>~i}_p}^@Z?c?ItUt{~-l5 z@%;y1MQBRu_c>xSe^dl4xlMAQdoo2h%84mc?8D2F*}_@(WRcV*I%{E9rEvH$pbtgA z`*~M}FIn{xuyDl6)fvBjQQ9J>Z;f96kbgUOf;@KoH{vLH^p|ag_$?z9ojdv>=KlfY z^2Ot(j`nUqy1*PTWgRaAA~=o$Dx<%#@~iPpk~71IX$QFZB+vsP2?_MrvOV=qq!H6! z&ypNi1XNr(dbx+dZ70Pbf4JhUEsP7~d`?Q`3u~V=Kp3Gk4C1CAi5w)VuJ&@7N`W>v zI7!DVXRgj+B$7zAi?BVDQKab?TxhP>61M1xK|cN~_nk-`IcL258Ln#KecI5?%%Ar<}Cv@!Hx=f30Qq;JDNGbrxY2llXz& z&NuG+_Br+aWYx>xjVsfQQoX{mJz|+=KDLrRX)T&?58~`CG_8u#^u*%^MUJ&`%a|;D z*>xyY>sdm)F5&adL7rehln!BLR;$z&*F@xD*~uz1EZ5sp#0a(Vhh(V2fNfDs2aiWhRPN;Z&xTPbhfVQOXhW;h`x);yI0)R0cCCB8t|>Pb6gu5{iS!``-vYmILAt&lyT~n3dFl z?^o_Z&pVYm`gkxghN_CDpGUBM;JR-__!_P;Xqq<#>rW-t(Z^A+nH)h)I;H&=r@**( znbFqJUe^bK*}*;CXWJWs3^Dxg;p}9j;Vpycju2}W@i|A&;P>D_+nWVf3@*(+gAZqj zcY4-G&?n*(e)Py83bSHFa1-}~5T1id?F$u(TD%%sQX`w-%hex1bbgrk$i@%1y(pDF z@wBg}3f>bQ?<7PGLQxO#j-42b7Y3pfd(N~dXontyg(#*Mjq&5t$Vbv7eI&sAtZ&X| zdLtFjDR@s5zsbgY{mo%T+a88LJPdYWSadQ2L^h-kgJui2s{yNafu@0$1TcBG5bh2v zGVweUAIr(7IgkjvtSDn^U!8k4J@PlI29FVT0c^IX^SeGQ4PHelNw=^4-Z(7edG0 zH_NDM_G<<3zE#Uvbxlh5XKgS4O=^&Jgp%a^JU8)byTQ0F<`z~pbJyLSsVk4K-@M!E zaFWlhKl(X6-nDtt?35`g^A(>#6!DVDTi!ILtT+OxUIl3d!*IKl(gB*OJcpHLvlA9i z3p30y{x!K_>B6GLE8UhBJh!tKpinQjOlOMXAN%o;~kkW{3b~#oE(1Qhcs+Dq{!aPmFQf#EYZY-?M8Ye zF^96bpW>ScgSX|u_@D~GwL!ag>CNYj+L&=D*eyL*G63pD3}^+e5GXa5&~SB2v|fYG z$Rv5cv@SPZDoc6C%X7rLv04-+t9+Q$1$(&uc1bXgifaad%bakk0`4!%n&?$7UO^Eu z=k*3#r_CW2v0h!bu`CUjXwGhbe+Syl3ar)sS@bMT!kW_!EqO|=NmVe>D_6X7klZc1 zh)ndCiKtEh44&OOi%>L!%#gAudLLoqQG+v{kAVqok%T;k1!;bWwl0Vbj6IFWx{5xQ zl<45{#Kyg1A23H^18-J7 zGLEaLA-q;muraLKdFWd=o(|EEg$M_*4XPf4hN0RD(F&)sovxjylnzTk;~7#5bhx=G zNFRJr4sKKOWNV|&;5^%5P6gG&?6s5oCobW3Ul%gb#7OZ6YxObV9+FkYhRte1+DNAy z$I_mT{ZgkM95s8PvEljS46T!IF049PR5vRp=kA5*s*;nCLYk#MxNw|CRBY--v zoxTsjPnfy4Gn={#9AT?fqQyd*c)m;1V_XXsuSG#7gt(qo)ttdKPr$p%_KfT@+aru# zvU-paDc6Grm?F;whxz*RLPnqSJ~}Y_$fdJW>fg*0{8ZYjH0*=U(5u1mJ~>0;eO%hW z0pL3K{UcqJ;|jg zhFBG%uUBDI9xK3*EF7WYLwfHdUVhJR?S+JrU2n=Kxj^$sjNB+hc0S=}$jm>zmr^Sw znaQ1Y1Y%!~k4#tP;ODqNn=7lsp=eUZ1uCzN&FGQ~6ffGp;ZfQj4SAUmak1LO*X;0y zgRDU0#dlv(KlZtS0Lr;42EogC7=T8r6_*nG){>zyCdy#wdtK zD^~)D0A#zE&Jb{&4<*a;qutBzWfDvM4ai=!pd|5W@A0fRri_Fyw@v<>1@H?O<_MYM zB}Hkx?PZ%Id1a447_y3ET|YK{c#z|?;yFg87ZwWr%M_e^T-nIdOcr}5g4pMo92M;(5+(WX@MyVPF_ikj)xC1>mU-<#|^Gko^OttYRZ zVH^L>X?}4xwN${KzI)ir(;Jxgip?8pn*m#3hM(Y1PwGxsylYXY1C!1-Nd$S7>w*sU zKSr|7%kde+5{Eq!DUINtp8&|>&5ID6%I^g(t1cpjP8Hl_FWg!+`x{&-bP5R~g8?nez0DdOVL}Z^U$TcDN#hEM~ zL~YnDG-+;0oe1I~^4iwsR(vh$U!x&J*lhDMWvhcec)mOB#5$ zj?Mq;L{S4c=V*MDdy9yD?D{=S{9HEW2mz8s71k{ZbPgnJLei636b3Sc+ap^P*p4j< z$)cjk5X?$e+B`!Mywdt8D!;2T_Y%0$)y(etFn(WT?9#Ql643`)DDA6(HmPRiXe` z#G&wA3qWcXu%#ES*-F>3YnbJ?-DY!d@v(BY9tUNC>=rU)-U6ijMeB4dCcqG^PMe-) z3iqK+jB4(MzMMr+jp22e8^}kJ#GKb(rhrL^WbdD64iE4bzG={P+ape)HbZlbuMSx}$a2Z4 zyzx_y_gtE?RIiC&MOtA3n~an`cU=uxQW*Sd70usu-?_5e)G!Z2cYnM&L$~lWXRt?c zYT-8Pg8`Jy#he<~$qtt0^!n>jLROT1{)lvZTJ$5fsJ|V84I0*>@O>bmZqCh>^o(NS zy&$7{%q%E_c0q4yslHT&rhW}tuL;{FsV^^*@C0bk6rSG1d0b=@$17;(%%~g8pB+X+ zAKvOZY!l0i*{Gg_@n%yyy z)A1wsr9|F9IT#zuo=&LSaVsP}T^OxXxt0mBsH4y9V`v)ey3-W=Fq+h#_u%71^lT-p zctzLg3A9MB!|v1|+dU^w6ndQa&Ei+}MfcyU&gnK~&(yk{cnVqPTA5m#qbNBMyGlhe z8}d~<)Pz}Z%t)FO{nLh@-`2G5UTDKoljBBDY@R4*OnygPXL9_xgLllkD+q z6`SJX1bUm0fhSq=5OA|Aso1zZe*8K!O49_Y^!Ve^$HDtQ=xA$}KFui@KQWsj-Ua!H zBh6%8=ac@F{qWzesYD;B9;l{kKq558L` zHux^MYddSXbQM8ZZ2Lrwx5C-h!|J-TtduBA@h?&4b`HmH!^V3Id(xz~V|l~^Qe(=D zgZ5mkH-I#9(J~{~9fJON5jOKIHix?ksWiU@F2N4gV|+DWaa8e<7KOW%AXj*orqToz zMDdQ*EA{CMGDIstgYUuuxps(kkT?Hf-U&g?LJ)GkT*?%~i~FilyWu9#QD5OiFHjb& z;4eWMA$=0`(yYS9GKGE3{d-fcH>XKN6X{PEpaa-%mKqcBh-4fra0w6y`DV|tOo7v< zKmE2xm165jWU?Qg^kUd-P*(}ims}6ue-nvb3A{ZCw}X~I7rV8K7LQMf*Fb??>%4tvN6Hw~)+)I-!nrrrkKH*M4 zf4%t37KN>dA+L`3ja{2AiLLT(RxLPw9;!EoOctyYxy;igDUDjYf`taOcz#s|HI53}dR*?|yJ6r8; z)?35pQ4%k%lxA?Wg_FttGkoAj+S;B_l6_$Tkg#ojIiNi=Ru1`x3LW~?6#t?E<4#KN z&vld3Wn`Ntyq4t`tlD>zM13N^5Gvkk8H~@^TyBy&Y;K5Rtyp?tl(aB>RyoyZJh^6up4V1Lxq)CUe{w&+o`MALd`$S;LLQK4he} z8`?s{F8aeisp{4vxfKNepy}3`Djy2eT7#`MZ8ic*-e^L(22GNw_Y>s#(8VZ=w?0tk zLk)}UHy_VE>18FovGG%3M_Um=7gQvghPX(&&vg=3GWHWgS`=<=hG1{$D>j8sBQ}5( zrzTO>ZjV{bESMhN<7QAn$ z)&D2d>V$ZQ4!+6SdwQls85&YAu||`x?oImZFsRQoDTP=k^9ML$XsuV3B|tdO%p@^TX?1ZD#D|QZ=qEe7@*mAX zH{UpJoeCDVeS5DaVT>rS_z##=6-(Jd5+nKy{HV|VSa$N+} z;Au2s)_M;$&Vd(^{&!CV9Zbp!9$L4>Xr)Q*e)>TJ@h; z#ZTTlQ+VlUWV2)-yBErx18bu6( z$v8_Vvk8=7Oc~y;7tv=fj`(ndSb{`vXN&p(B(*OMe}NF{;u00fz&e09xpP|Yh)GvK zGy3toh#{xhxWj#s_N-)!73{Zjqlx}Z=yatN#&9G`5Pv-cLZne(fSbh#n$eg1`APpd+qn z4acX6wos{kT}SM{j+Ow{Je>iAPIL^e{EKcPf*GwNSCxucbM{gi7tMoP zJy=dYu84T==X^6&9ieYH)LB>qxS=d~4X|=B_lRKX2KGXG_CYAPVsC50et{y$i_! zewFTt2-y_1rXzuSShLt2`K)M>!`d-1{%SV#4{YUaoEnTXs8+NTABTQ6nMVs+_ z>Q5KvW><`l%RG7BW2ZymF(?2@-cs`CX@>t?Y^ZY*M4845S|CQ*rvO9ErCBf%Swa-B z0J6p;n_zm3REwp^I1EhW)rS^#&0zpf$PNs_^M!BW`H#`!l%09|w7k^;`;bhE@g3cn;OGB{1NW!k zBdF1Tf~jaZc`(Kk{e0X<@It`uJIL(5GQ^G^O+5RlyzPls(U;LyQV`n@15-4G*$h5m z`zWt67J$$ zOlXdm4`;e=ju(cD9U~B1+K>a8B=`>A%vkdHjUWmi5!22j3Bg6yk&NCSO9FhfM`t-!W_W2Wt z_ZJ4x|L$;KmXz9-UN{V_M*sDtN0&k>ouP58hVWFT&>EWROYfEB-X`)n%EV+WOmL1r zE{@Caq>s+p>Y$hU#&XS;$mgmTwsMW5GJ4J4urQ%yzpfe61~M6X^KVN6YD&%=-HuOo z*L6wHZ6-s0%yAgeWQKfr z;_gNcy$D2mjEYeH{kUL!ASOr?xUu$IPD;7`adl&_THI1_%?K zkY;s}nHSms?t%kaTX8iI_}`4fPQgOv@@Ry2^C6Vy<_MYc%s{M=x7L?~nHQ`7=&ynW z6gI#cocrcZ1-jFq$^fW|uH}M{*!M(9WsAc3TU<7-Q3&tRjvOqNx6N5^A_jvf104vy z-h9E1)n>EcPtTN8NYt49p{)Bor$yl?IGdi&d5(m4?jbgBH+jt*d&O57YxW>Xb%$Up z1ZKn{{2`0tA6(Eg2@eSCcUw=<%G316l5R%2-RzvdxKLzg->vIouXE+F+!=qPu(II! z>(Ql|OJh#Y6thP3dnl+@j@tZEEhLP|^ToV~y=F|ZgN18=kBJAz`;uA(w4h+7_KGG_ zP|_6PYVcJg3M_=|!AbN#uY7pVOwZj=hMi8Rh0oy>{h|64faRC4txy_#T?4*83o};n znzt}(%P!f_rY}|h^lC=lUvuNJ$*3*44Q-3`n$U`)QXM?Q}#5eWt)jy8h4uV+`yLH. + */ +package com.owncloud.android.files.services + +import com.evernote.android.job.JobRequest +import com.nextcloud.client.account.UserAccountManager +import com.nextcloud.client.account.UserAccountManagerImpl +import com.nextcloud.client.device.PowerManagementService +import com.nextcloud.client.network.ConnectivityService +import com.owncloud.android.AbstractIT +import com.owncloud.android.datamodel.OCFile +import com.owncloud.android.datamodel.UploadsStorageManager +import com.owncloud.android.db.OCUpload +import com.owncloud.android.lib.resources.files.ReadFileRemoteOperation +import com.owncloud.android.lib.resources.files.model.RemoteFile +import com.owncloud.android.operations.UploadFileOperation +import com.owncloud.android.utils.FileStorageUtils.getSavePath +import junit.framework.Assert.assertEquals +import junit.framework.Assert.assertFalse +import junit.framework.Assert.assertTrue +import org.junit.Before +import org.junit.Test + +class FileUploaderIT : AbstractIT() { + var uploadsStorageManager: UploadsStorageManager? = null + + val connectivityServiceMock: ConnectivityService = object : ConnectivityService { + override fun isInternetWalled(): Boolean { + return false + } + + override fun isOnlineWithWifi(): Boolean { + return true + } + + override fun getActiveNetworkType(): JobRequest.NetworkType { + return JobRequest.NetworkType.ANY + } + } + + private val powerManagementServiceMock: PowerManagementService = object : PowerManagementService { + override val isPowerSavingEnabled: Boolean + get() = false + + override val isPowerSavingExclusionAvailable: Boolean + get() = false + + override val isBatteryCharging: Boolean + get() = false + } + + @Before + fun setUp() { + val contentResolver = targetContext.contentResolver + val accountManager: UserAccountManager = UserAccountManagerImpl.fromContext(targetContext) + uploadsStorageManager = UploadsStorageManager(accountManager, contentResolver) + } + + /** + * uploads a file, overwrites it with an empty one, check if overwritten + */ + @Test + fun testKeepLocalAndOverwriteRemote() { + val ocUpload = OCUpload(getSavePath(account.name) + "/chunkedFile.txt", + "/testFile.txt", + account.name) + + assertTrue(UploadFileOperation( + uploadsStorageManager, + connectivityServiceMock, + powerManagementServiceMock, + account, + null, + ocUpload, + FileUploader.NameCollisionPolicy.DEFAULT, + FileUploader.LOCAL_BEHAVIOUR_COPY, + targetContext, + false, + false) + .setRemoteFolderToBeCreated() + .execute(client, storageManager).isSuccess) + + val result = ReadFileRemoteOperation("/testFile.txt").execute(client) + assertTrue(result.isSuccess) + + assertEquals(14000000, (result.data[0] as RemoteFile).length) + + val ocUpload2 = OCUpload(getSavePath(account.name) + "/empty.txt", "/testFile.txt", account.name) + + assertTrue(UploadFileOperation( + uploadsStorageManager, + connectivityServiceMock, + powerManagementServiceMock, + account, + null, + ocUpload2, + FileUploader.NameCollisionPolicy.OVERWRITE, + FileUploader.LOCAL_BEHAVIOUR_COPY, + targetContext, + false, + false) + .execute(client, storageManager).isSuccess) + + val result2 = ReadFileRemoteOperation("/testFile.txt").execute(client) + assertTrue(result2.isSuccess) + + assertEquals(0, (result2.data[0] as RemoteFile).length) + } + + /** + * uploads a file, overwrites it with an empty one, check if overwritten + */ + @Test + fun testKeepLocalAndOverwriteRemoteStatic() { + FileUploader.uploadNewFile( + targetContext, + account, + getSavePath(account.name) + "/chunkedFile.txt", + "/testFile.txt", + FileUploader.LOCAL_BEHAVIOUR_COPY, + null, + true, + UploadFileOperation.CREATED_BY_USER, + false, + false, + FileUploader.NameCollisionPolicy.DEFAULT) + + Thread.sleep(20000) + + val result = ReadFileRemoteOperation("/testFile.txt").execute(client) + assertTrue(result.isSuccess) + + assertEquals(14000000, (result.data[0] as RemoteFile).length) + + val ocFile2 = OCFile("/testFile.txt") + ocFile2.setStoragePath(getSavePath(account.name) + "/empty.txt") + + FileUploader.uploadUpdateFile( + targetContext, + account, + ocFile2, + FileUploader.LOCAL_BEHAVIOUR_COPY, + FileUploader.NameCollisionPolicy.OVERWRITE) + + Thread.sleep(5000) + + val result2 = ReadFileRemoteOperation("/testFile.txt").execute(client) + assertTrue(result2.isSuccess) + + assertEquals(0, (result2.data[0] as RemoteFile).length) + } + + /** + * uploads a file, uploads another one with automatically (2) added, check + */ + @Test + fun testKeepBoth() { + var renameListenerWasTriggered = false + + val ocUpload = OCUpload(getSavePath(account.name) + "/chunkedFile.txt", + "/testFile.txt", + account.name) + + assertTrue(UploadFileOperation( + uploadsStorageManager, + connectivityServiceMock, + powerManagementServiceMock, + account, + null, + ocUpload, + FileUploader.NameCollisionPolicy.DEFAULT, + FileUploader.LOCAL_BEHAVIOUR_COPY, + targetContext, + false, + false) + .setRemoteFolderToBeCreated() + .execute(client, storageManager).isSuccess) + + val result = ReadFileRemoteOperation("/testFile.txt").execute(client) + assertTrue(result.isSuccess) + + assertEquals(14000000, (result.data[0] as RemoteFile).length) + + val ocUpload2 = OCUpload(getSavePath(account.name) + "/empty.txt", + "/testFile.txt", + account.name) + + assertTrue(UploadFileOperation( + uploadsStorageManager, + connectivityServiceMock, + powerManagementServiceMock, + account, + null, + ocUpload2, + FileUploader.NameCollisionPolicy.RENAME, + FileUploader.LOCAL_BEHAVIOUR_COPY, + targetContext, + false, + false) + .addRenameUploadListener { + renameListenerWasTriggered = true + } + .execute(client, storageManager).isSuccess) + + val result2 = ReadFileRemoteOperation("/testFile.txt").execute(client) + assertTrue(result2.isSuccess) + + assertEquals(14000000, (result2.data[0] as RemoteFile).length) + + val result3 = ReadFileRemoteOperation("/testFile (2).txt").execute(client) + assertTrue(result3.isSuccess) + + assertEquals(0, (result3.data[0] as RemoteFile).length) + assertTrue(renameListenerWasTriggered) + } + + /** + * uploads a file, uploads another one with automatically (2) added, check + */ + @Test + fun testKeepBothStatic() { + FileUploader.uploadNewFile( + targetContext, + account, + getSavePath(account.name) + "/chunkedFile.txt", + "/testFile.txt", + FileUploader.LOCAL_BEHAVIOUR_COPY, + null, + true, + UploadFileOperation.CREATED_BY_USER, + false, + false, + FileUploader.NameCollisionPolicy.DEFAULT) + + Thread.sleep(20000) + + val result = ReadFileRemoteOperation("/testFile.txt").execute(client) + assertTrue(result.isSuccess) + + assertEquals(14000000, (result.data[0] as RemoteFile).length) + + val ocFile2 = OCFile("/testFile.txt") + ocFile2.setStoragePath(getSavePath(account.name) + "/empty.txt") + + FileUploader.uploadUpdateFile( + targetContext, + account, + ocFile2, + FileUploader.LOCAL_BEHAVIOUR_COPY, + FileUploader.NameCollisionPolicy.RENAME) + + Thread.sleep(5000) + + val result2 = ReadFileRemoteOperation("/testFile.txt").execute(client) + assertTrue(result2.isSuccess) + + assertEquals(14000000, (result2.data[0] as RemoteFile).length) + + val result3 = ReadFileRemoteOperation("/testFile (2).txt").execute(client) + assertTrue(result3.isSuccess) + + assertEquals(0, (result3.data[0] as RemoteFile).length) + } + + /** + * uploads a file with "keep server" option set, so do nothing + */ + @Test + fun testKeepServer() { + val ocUpload = OCUpload(getSavePath(account.name) + "/chunkedFile.txt", + "/testFile.txt", + account.name) + + assertTrue(UploadFileOperation( + uploadsStorageManager, + connectivityServiceMock, + powerManagementServiceMock, + account, + null, + ocUpload, + FileUploader.NameCollisionPolicy.DEFAULT, + FileUploader.LOCAL_BEHAVIOUR_COPY, + targetContext, + false, + false) + .setRemoteFolderToBeCreated() + .execute(client, storageManager).isSuccess) + + val result = ReadFileRemoteOperation("/testFile.txt").execute(client) + assertTrue(result.isSuccess) + + assertEquals(14000000, (result.data[0] as RemoteFile).length) + + val ocUpload2 = OCUpload(getSavePath(account.name) + "/empty.txt", + "/testFile.txt", + account.name) + + assertFalse(UploadFileOperation( + uploadsStorageManager, + connectivityServiceMock, + powerManagementServiceMock, + account, + null, + ocUpload2, + FileUploader.NameCollisionPolicy.CANCEL, + FileUploader.LOCAL_BEHAVIOUR_COPY, + targetContext, + false, + false) + .execute(client, storageManager).isSuccess) + + val result2 = ReadFileRemoteOperation("/testFile.txt").execute(client) + assertTrue(result2.isSuccess) + + assertEquals(14000000, (result2.data[0] as RemoteFile).length) + } + + /** + * uploads a file with "keep server" option set, so do nothing + */ + @Test + fun testKeepServerStatic() { + FileUploader.uploadNewFile( + targetContext, + account, + getSavePath(account.name) + "/chunkedFile.txt", + "/testFile.txt", + FileUploader.LOCAL_BEHAVIOUR_COPY, + null, + true, + UploadFileOperation.CREATED_BY_USER, + false, + false, + FileUploader.NameCollisionPolicy.DEFAULT) + + Thread.sleep(20000) + + val result = ReadFileRemoteOperation("/testFile.txt").execute(client) + assertTrue(result.isSuccess) + + assertEquals(14000000, (result.data[0] as RemoteFile).length) + + val ocFile2 = OCFile("/testFile.txt") + ocFile2.setStoragePath(getSavePath(account.name) + "/empty.txt") + + FileUploader.uploadUpdateFile( + targetContext, + account, + ocFile2, + FileUploader.LOCAL_BEHAVIOUR_COPY, + FileUploader.NameCollisionPolicy.CANCEL) + + Thread.sleep(5000) + + val result2 = ReadFileRemoteOperation("/testFile.txt").execute(client) + assertTrue(result2.isSuccess) + + assertEquals(14000000, (result2.data[0] as RemoteFile).length) + } +} diff --git a/src/androidTest/java/com/owncloud/android/ui/activity/ConflictsResolveActivityIT.java b/src/androidTest/java/com/owncloud/android/ui/activity/ConflictsResolveActivityIT.java new file mode 100644 index 0000000000..576932f8ac --- /dev/null +++ b/src/androidTest/java/com/owncloud/android/ui/activity/ConflictsResolveActivityIT.java @@ -0,0 +1,328 @@ +/* + * + * Nextcloud Android client application + * + * @author Tobias Kaminsky + * Copyright (C) 2020 Tobias Kaminsky + * Copyright (C) 2020 Nextcloud GmbH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +package com.owncloud.android.ui.activity; + +import android.content.Intent; + +import com.facebook.testing.screenshot.Screenshot; +import com.nextcloud.client.account.UserAccountManagerImpl; +import com.nextcloud.java.util.Optional; +import com.owncloud.android.AbstractIT; +import com.owncloud.android.R; +import com.owncloud.android.datamodel.FileDataStorageManager; +import com.owncloud.android.datamodel.OCFile; +import com.owncloud.android.db.OCUpload; +import com.owncloud.android.lib.resources.files.UploadFileRemoteOperation; +import com.owncloud.android.operations.RefreshFolderOperation; +import com.owncloud.android.ui.dialog.ConflictsResolveDialog; +import com.owncloud.android.utils.FileStorageUtils; + +import org.junit.Rule; +import org.junit.Test; + +import java.io.File; +import java.io.IOException; + +import androidx.test.espresso.intent.rule.IntentsTestRule; + +import static androidx.test.espresso.Espresso.onView; +import static androidx.test.espresso.action.ViewActions.click; +import static androidx.test.espresso.matcher.ViewMatchers.withId; +import static androidx.test.espresso.matcher.ViewMatchers.withText; +import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentation; +import static junit.framework.TestCase.assertTrue; +import static org.junit.Assert.assertEquals; + +public class ConflictsResolveActivityIT extends AbstractIT { + @Rule public IntentsTestRule activityRule = + new IntentsTestRule<>(ConflictsResolveActivity.class, true, false); + private boolean returnCode; + + @Test + public void screenshotTextFiles() throws InterruptedException { + OCUpload newUpload = new OCUpload(FileStorageUtils.getSavePath(account.name) + "/nonEmpty.txt", + "/newFile.txt", + account.name); + + OCFile existingFile = new OCFile("/newFile.txt"); + existingFile.setFileLength(1024000); + existingFile.setModificationTimestamp(1582019340); + + FileDataStorageManager storageManager = new FileDataStorageManager(account, targetContext.getContentResolver()); + storageManager.saveNewFile(existingFile); + + Intent intent = new Intent(targetContext, ConflictsResolveActivity.class); + intent.putExtra(ConflictsResolveActivity.EXTRA_FILE, existingFile); + intent.putExtra(ConflictsResolveActivity.EXTRA_CONFLICT_UPLOAD, newUpload); + + ConflictsResolveActivity sut = activityRule.launchActivity(intent); + + ConflictsResolveDialog.OnConflictDecisionMadeListener listener = decision -> { + + }; + + ConflictsResolveDialog dialog = new ConflictsResolveDialog(listener, + existingFile, + newUpload, + Optional.of(UserAccountManagerImpl + .fromContext(targetContext) + .getUser() + )); + dialog.showDialog(sut); + + getInstrumentation().waitForIdleSync(); + + Thread.sleep(2000); + + Screenshot.snap(dialog.getDialog().getWindow().getDecorView()).record(); + } + + @Test + public void screenshotImages() throws InterruptedException, IOException { + FileDataStorageManager storageManager = new FileDataStorageManager(account, + targetContext.getContentResolver()); + + OCUpload newUpload = new OCUpload(FileStorageUtils.getSavePath(account.name) + "/nonEmpty.txt", + "/newFile.txt", account.name); + + File image = getFile("image.jpg"); + + assertTrue(new UploadFileRemoteOperation(image.getAbsolutePath(), + "/image.jpg", + "image/jpg", + "10000000").execute(client).isSuccess()); + + assertTrue(new RefreshFolderOperation(storageManager.getFileByPath("/"), + System.currentTimeMillis(), + false, + true, + storageManager, + account, + targetContext + ).execute(client).isSuccess()); + + OCFile existingFile = storageManager.getFileByPath("/image.jpg"); + + Intent intent = new Intent(targetContext, ConflictsResolveActivity.class); + intent.putExtra(ConflictsResolveActivity.EXTRA_FILE, existingFile); + intent.putExtra(ConflictsResolveActivity.EXTRA_CONFLICT_UPLOAD, newUpload); + + ConflictsResolveActivity sut = activityRule.launchActivity(intent); + + ConflictsResolveDialog.OnConflictDecisionMadeListener listener = decision -> { + + }; + + ConflictsResolveDialog dialog = new ConflictsResolveDialog(listener, + existingFile, + newUpload, + Optional.of(UserAccountManagerImpl + .fromContext(targetContext) + .getUser() + )); + dialog.showDialog(sut); + + getInstrumentation().waitForIdleSync(); + + Thread.sleep(10000); + + Screenshot.snap(dialog.getDialog().getWindow().getDecorView()).record(); + } + + @Test + public void cancel() { + returnCode = false; + + OCUpload newUpload = new OCUpload(FileStorageUtils.getSavePath(account.name) + "/nonEmpty.txt", + "/newFile.txt", + account.name); + OCFile existingFile = new OCFile("/newFile.txt"); + existingFile.setFileLength(1024000); + existingFile.setModificationTimestamp(1582019340); + + FileDataStorageManager storageManager = new FileDataStorageManager(account, targetContext.getContentResolver()); + storageManager.saveNewFile(existingFile); + + Intent intent = new Intent(targetContext, ConflictsResolveActivity.class); + intent.putExtra(ConflictsResolveActivity.EXTRA_FILE, existingFile); + intent.putExtra(ConflictsResolveActivity.EXTRA_CONFLICT_UPLOAD, newUpload); + + ConflictsResolveActivity sut = activityRule.launchActivity(intent); + + ConflictsResolveDialog.OnConflictDecisionMadeListener listener = decision -> { + assertEquals(decision, ConflictsResolveDialog.Decision.CANCEL); + returnCode = true; + }; + + ConflictsResolveDialog dialog = new ConflictsResolveDialog(listener, + existingFile, + newUpload, + Optional.of(UserAccountManagerImpl + .fromContext(targetContext) + .getUser() + )); + dialog.showDialog(sut); + + getInstrumentation().waitForIdleSync(); + + onView(withText("Cancel")).perform(click()); + + assertTrue(returnCode); + } + + @Test + public void keepExisting() { + returnCode = false; + + OCUpload newUpload = new OCUpload(FileStorageUtils.getSavePath(account.name) + "/nonEmpty.txt", + "/newFile.txt", + account.name); + OCFile existingFile = new OCFile("/newFile.txt"); + existingFile.setFileLength(1024000); + existingFile.setModificationTimestamp(1582019340); + + FileDataStorageManager storageManager = new FileDataStorageManager(account, targetContext.getContentResolver()); + storageManager.saveNewFile(existingFile); + + Intent intent = new Intent(targetContext, ConflictsResolveActivity.class); + intent.putExtra(ConflictsResolveActivity.EXTRA_FILE, existingFile); + intent.putExtra(ConflictsResolveActivity.EXTRA_CONFLICT_UPLOAD, newUpload); + + ConflictsResolveActivity sut = activityRule.launchActivity(intent); + + ConflictsResolveDialog.OnConflictDecisionMadeListener listener = decision -> { + assertEquals(decision, ConflictsResolveDialog.Decision.KEEP_SERVER); + returnCode = true; + }; + + ConflictsResolveDialog dialog = new ConflictsResolveDialog(listener, + existingFile, + newUpload, + Optional.of(UserAccountManagerImpl + .fromContext(targetContext) + .getUser() + )); + dialog.showDialog(sut); + + getInstrumentation().waitForIdleSync(); + + onView(withId(R.id.existing_checkbox)).perform(click()); + + Screenshot.snap(dialog.getDialog().getWindow().getDecorView()).record(); + + onView(withText("OK")).perform(click()); + + assertTrue(returnCode); + } + + @Test + public void keepNew() { + returnCode = false; + + OCUpload newUpload = new OCUpload(FileStorageUtils.getSavePath(account.name) + "/nonEmpty.txt", + "/newFile.txt", + account.name); + OCFile existingFile = new OCFile("/newFile.txt"); + existingFile.setFileLength(1024000); + existingFile.setModificationTimestamp(1582019340); + + FileDataStorageManager storageManager = new FileDataStorageManager(account, targetContext.getContentResolver()); + storageManager.saveNewFile(existingFile); + + Intent intent = new Intent(targetContext, ConflictsResolveActivity.class); + intent.putExtra(ConflictsResolveActivity.EXTRA_FILE, existingFile); + intent.putExtra(ConflictsResolveActivity.EXTRA_CONFLICT_UPLOAD, newUpload); + + ConflictsResolveActivity sut = activityRule.launchActivity(intent); + + ConflictsResolveDialog.OnConflictDecisionMadeListener listener = decision -> { + assertEquals(decision, ConflictsResolveDialog.Decision.KEEP_SERVER); + returnCode = true; + }; + + ConflictsResolveDialog dialog = new ConflictsResolveDialog(listener, + existingFile, + newUpload, + Optional.of(UserAccountManagerImpl + .fromContext(targetContext) + .getUser() + )); + dialog.showDialog(sut); + + getInstrumentation().waitForIdleSync(); + + onView(withId(R.id.new_checkbox)).perform(click()); + + Screenshot.snap(dialog.getDialog().getWindow().getDecorView()).record(); + + onView(withText("OK")).perform(click()); + + assertTrue(returnCode); + } + + @Test + public void keepBoth() { + returnCode = false; + + OCUpload newUpload = new OCUpload(FileStorageUtils.getSavePath(account.name) + "/nonEmpty.txt", + "/newFile.txt", + account.name); + OCFile existingFile = new OCFile("/newFile.txt"); + existingFile.setFileLength(1024000); + existingFile.setModificationTimestamp(1582019340); + + FileDataStorageManager storageManager = new FileDataStorageManager(account, targetContext.getContentResolver()); + storageManager.saveNewFile(existingFile); + + Intent intent = new Intent(targetContext, ConflictsResolveActivity.class); + intent.putExtra(ConflictsResolveActivity.EXTRA_FILE, existingFile); + intent.putExtra(ConflictsResolveActivity.EXTRA_CONFLICT_UPLOAD, newUpload); + + ConflictsResolveActivity sut = activityRule.launchActivity(intent); + + ConflictsResolveDialog.OnConflictDecisionMadeListener listener = decision -> { + assertEquals(decision, ConflictsResolveDialog.Decision.KEEP_SERVER); + returnCode = true; + }; + + ConflictsResolveDialog dialog = new ConflictsResolveDialog(listener, + existingFile, + newUpload, + Optional.of(UserAccountManagerImpl + .fromContext(targetContext) + .getUser() + )); + dialog.showDialog(sut); + + getInstrumentation().waitForIdleSync(); + + onView(withId(R.id.existing_checkbox)).perform(click()); + onView(withId(R.id.new_checkbox)).perform(click()); + + Screenshot.snap(dialog.getDialog().getWindow().getDecorView()).record(); + + onView(withText("OK")).perform(click()); + + assertTrue(returnCode); + } +} diff --git a/src/main/java/com/owncloud/android/datamodel/OCFile.java b/src/main/java/com/owncloud/android/datamodel/OCFile.java index e383de9742..1f3f700267 100644 --- a/src/main/java/com/owncloud/android/datamodel/OCFile.java +++ b/src/main/java/com/owncloud/android/datamodel/OCFile.java @@ -160,6 +160,7 @@ public class OCFile implements Parcelable, Comparable, ServerFileInterfa ownerDisplayName = source.readString(); mountType = (WebdavEntry.MountType) source.readSerializable(); richWorkspace = source.readString(); + previewAvailable = source.readInt() == 1; } @Override @@ -193,6 +194,7 @@ public class OCFile implements Parcelable, Comparable, ServerFileInterfa dest.writeString(ownerDisplayName); dest.writeSerializable(mountType); dest.writeString(richWorkspace); + dest.writeInt(previewAvailable ? 1 : 0); } public String getDecryptedRemotePath() { diff --git a/src/main/java/com/owncloud/android/operations/UploadFileOperation.java b/src/main/java/com/owncloud/android/operations/UploadFileOperation.java index 20fd02d8b6..e5802816e9 100644 --- a/src/main/java/com/owncloud/android/operations/UploadFileOperation.java +++ b/src/main/java/com/owncloud/android/operations/UploadFileOperation.java @@ -285,8 +285,10 @@ public class UploadFileOperation extends SyncOperation { return mLocalBehaviour; } - public void setRemoteFolderToBeCreated() { + public UploadFileOperation setRemoteFolderToBeCreated() { mRemoteFolderToBeCreated = true; + + return this; } public boolean wasRenamed() { @@ -348,8 +350,10 @@ public class UploadFileOperation extends SyncOperation { } } - public void addRenameUploadListener(OnRenameListener listener) { + public UploadFileOperation addRenameUploadListener(OnRenameListener listener) { mRenameUploadListener = listener; + + return this; } public Context getContext() { @@ -946,7 +950,9 @@ public class UploadFileOperation extends SyncOperation { mWasRenamed = true; createNewOCFile(mRemotePath); Log_OC.d(TAG, "File renamed as " + mRemotePath); - mRenameUploadListener.onRenameUpload(); + if (mRenameUploadListener != null) { + mRenameUploadListener.onRenameUpload(); + } break; case OVERWRITE: Log_OC.d(TAG, "Overwriting file"); diff --git a/src/main/java/com/owncloud/android/ui/activity/ConflictsResolveActivity.java b/src/main/java/com/owncloud/android/ui/activity/ConflictsResolveActivity.java index 9180a86f43..ebb6a8fefe 100644 --- a/src/main/java/com/owncloud/android/ui/activity/ConflictsResolveActivity.java +++ b/src/main/java/com/owncloud/android/ui/activity/ConflictsResolveActivity.java @@ -36,6 +36,9 @@ import com.owncloud.android.ui.dialog.ConflictsResolveDialog.OnConflictDecisionM import javax.inject.Inject; +import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentTransaction; + /** * Wrapper activity which will be launched if keep-in-sync file will be modified by external @@ -58,6 +61,10 @@ public class ConflictsResolveActivity extends FileActivity implements OnConflict private OCUpload conflictUpload; private int localBehaviour = FileUploader.LOCAL_BEHAVIOUR_FORGET; + + // TODO rotate when conflict dialog open + // TODO cancel leads to white activity?! + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -76,14 +83,21 @@ public class ConflictsResolveActivity extends FileActivity implements OnConflict } @Override - public void conflictDecisionMade(Decision decision) { - if (decision == Decision.CANCEL) { - return; - } + protected void onSaveInstanceState(Bundle outState) { + super.onSaveInstanceState(outState); + outState.putParcelable(EXTRA_CONFLICT_UPLOAD, conflictUpload); + outState.putInt(EXTRA_LOCAL_BEHAVIOUR, localBehaviour); + } + + @Override + public void conflictDecisionMade(Decision decision) { OCFile file = getFile(); switch (decision) { + case CANCEL: + // nothing to do + break; case KEEP_LOCAL: // Upload FileUploader.uploadUpdateFile( this, @@ -137,12 +151,21 @@ public class ConflictsResolveActivity extends FileActivity implements OnConflict finish(); } else { // Check whether the file is contained in the current Account - if (getStorageManager().fileExists(file.getRemotePath())) { - ConflictsResolveDialog dialog = new ConflictsResolveDialog(this, !this.shouldDeleteLocal()); - dialog.showDialog(this); - } else { - // Account was changed to a different one - just finish - finish(); + Fragment prev = getSupportFragmentManager().findFragmentByTag("conflictDialog"); + + FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); + if (prev == null) { + if (getStorageManager().fileExists(file.getRemotePath())) { + ConflictsResolveDialog dialog = new ConflictsResolveDialog(this, + getFile(), + conflictUpload, + getUser() + ); + dialog.show(fragmentTransaction, "conflictDialog"); + } else { + // Account was changed to a different one - just finish + finish(); + } } } } else { diff --git a/src/main/java/com/owncloud/android/ui/dialog/ConflictsResolveDialog.java b/src/main/java/com/owncloud/android/ui/dialog/ConflictsResolveDialog.java index a231792fba..02d1a3ba3b 100644 --- a/src/main/java/com/owncloud/android/ui/dialog/ConflictsResolveDialog.java +++ b/src/main/java/com/owncloud/android/ui/dialog/ConflictsResolveDialog.java @@ -23,11 +23,36 @@ package com.owncloud.android.ui.dialog; import android.app.Dialog; import android.content.DialogInterface; +import android.graphics.Bitmap; import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.widget.CheckBox; +import android.widget.ImageView; +import android.widget.TextView; +import android.widget.Toast; +import com.nextcloud.client.account.User; +import com.nextcloud.java.util.Optional; import com.owncloud.android.R; +import com.owncloud.android.datamodel.FileDataStorageManager; +import com.owncloud.android.datamodel.OCFile; +import com.owncloud.android.datamodel.ThumbnailsCacheManager; +import com.owncloud.android.db.OCUpload; +import com.owncloud.android.lib.common.utils.Log_OC; +import com.owncloud.android.utils.BitmapUtils; +import com.owncloud.android.utils.DisplayUtils; +import com.owncloud.android.utils.MimeTypeUtil; +import com.owncloud.android.utils.ThemeUtils; + +import org.jetbrains.annotations.NotNull; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AppCompatActivity; import androidx.fragment.app.DialogFragment; @@ -40,6 +65,12 @@ import androidx.fragment.app.FragmentTransaction; */ public class ConflictsResolveDialog extends DialogFragment { + private OCFile existingFile; + private File newFile; + private OnConflictDecisionMadeListener listener; + private User user; + private List asyncTasks = new ArrayList<>(); + public enum Decision { CANCEL, KEEP_BOTH, @@ -47,42 +78,116 @@ public class ConflictsResolveDialog extends DialogFragment { KEEP_SERVER, } - private final OnConflictDecisionMadeListener listener; - private final boolean canKeepServer; + public ConflictsResolveDialog() { + // needed by Android + existingFile = null; + newFile = null; + listener = null; + user = null; + } - public ConflictsResolveDialog(OnConflictDecisionMadeListener listener, boolean canKeepServer) { + public ConflictsResolveDialog(OnConflictDecisionMadeListener listener, + OCFile file, + OCUpload conflictUpload, Optional user) { this.listener = listener; - this.canKeepServer = canKeepServer; + this.existingFile = file; + this.newFile = new File(conflictUpload.getLocalPath()); + this.user = user.get(); + } + + @Override + public void onStart() { + super.onStart(); + + int color = ThemeUtils.primaryAccentColor(getContext()); + + AlertDialog alertDialog = (AlertDialog) getDialog(); + + if (alertDialog == null || user == null) { + Toast.makeText(getContext(), "Failed to create conflict dialog", Toast.LENGTH_LONG).show(); + return; + } + + alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).setTextColor(color); + alertDialog.getButton(AlertDialog.BUTTON_NEGATIVE).setTextColor(color); + } + + @Override + public void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + if (savedInstanceState != null) { + newFile = (File) savedInstanceState.getSerializable("file"); + existingFile = savedInstanceState.getParcelable("ocfile"); + user = savedInstanceState.getParcelable("user"); + listener = (OnConflictDecisionMadeListener) getActivity(); + } + } + + @Override + public void onSaveInstanceState(@NonNull Bundle outState) { + super.onSaveInstanceState(outState); + + outState.putSerializable("file", newFile); + outState.putParcelable("ocfile", existingFile); + outState.putParcelable("user", user); } @NonNull @Override public Dialog onCreateDialog(Bundle savedInstanceState) { - AlertDialog.Builder builder = new AlertDialog.Builder(requireActivity(), R.style.Theme_ownCloud_Dialog) - .setIcon(R.drawable.ic_warning) - .setTitle(R.string.conflict_title) - .setMessage(getString(R.string.conflict_message)) - .setPositiveButton(R.string.conflict_use_local_version, - (dialog, which) -> { - if (listener != null) { - listener.conflictDecisionMade(Decision.KEEP_LOCAL); - } - }) - .setNeutralButton(R.string.conflict_keep_both, - (dialog, which) -> { - if (listener != null) { - listener.conflictDecisionMade(Decision.KEEP_BOTH); - } - }); + // Inflate the layout for the dialog + LayoutInflater inflater = getActivity().getLayoutInflater(); + View view = inflater.inflate(R.layout.conflict_resolve_dialog, null); + int accentColor = ThemeUtils.primaryAccentColor(getContext()); - if (this.canKeepServer) { - builder.setNegativeButton(R.string.conflict_use_server_version, - (dialog, which) -> { - if (listener != null) { - listener.conflictDecisionMade(Decision.KEEP_SERVER); - } - }); - } + // Build the dialog + AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); + builder.setView(view) + .setPositiveButton(R.string.common_ok, ((dialog, which) -> { + if (listener != null) { + CheckBox newFile = view.findViewById(R.id.new_checkbox); + CheckBox existingFile = view.findViewById(R.id.existing_checkbox); + + if (newFile.isSelected() && existingFile.isSelected()) { + listener.conflictDecisionMade(Decision.KEEP_BOTH); + } else if (newFile.isSelected()) { + listener.conflictDecisionMade(Decision.KEEP_LOCAL); + } else { + listener.conflictDecisionMade(Decision.KEEP_SERVER); + } + } + })) + .setNegativeButton(R.string.common_cancel, ((dialog, which) -> { + if (listener != null) { + listener.conflictDecisionMade(Decision.CANCEL); + } + })) + .setTitle(ThemeUtils.getColoredTitle(getResources().getString(R.string.conflict_message_headline), + accentColor)); + + // set info for new file + TextView newSize = view.findViewById(R.id.new_size); + newSize.setText(DisplayUtils.bytesToHumanReadable(newFile.length())); + + TextView newTimestamp = view.findViewById(R.id.new_timestamp); + newTimestamp.setText(DisplayUtils.getRelativeTimestamp(getContext(), newFile.lastModified())); + + ImageView newThumbnail = view.findViewById(R.id.new_thumbnail); + newThumbnail.setTag(newFile.hashCode()); + setThumbnail(newFile, newThumbnail); + + // set info for existing file + TextView existingSize = view.findViewById(R.id.existing_size); + existingSize.setText(DisplayUtils.bytesToHumanReadable(existingFile.getFileLength())); + + TextView existingTimestamp = view.findViewById(R.id.existing_timestamp); + existingTimestamp.setText(DisplayUtils.getRelativeTimestamp(getContext(), + existingFile.getModificationTimestamp())); + + ImageView existingThumbnail = view.findViewById(R.id.existing_thumbnail); + existingThumbnail.setTag(existingFile.getFileId()); + setThumbnail(existingFile, view.findViewById(R.id.existing_thumbnail)); return builder.create(); } @@ -99,7 +204,7 @@ public class ConflictsResolveDialog extends DialogFragment { } @Override - public void onCancel(DialogInterface dialog) { + public void onCancel(@NotNull DialogInterface dialog) { if (listener != null) { listener.conflictDecisionMade(Decision.CANCEL); } @@ -108,4 +213,137 @@ public class ConflictsResolveDialog extends DialogFragment { public interface OnConflictDecisionMadeListener { void conflictDecisionMade(Decision decision); } + + private void setThumbnail(OCFile file, ImageView thumbnailView) { + if (file.isFolder()) { + thumbnailView.setImageDrawable(MimeTypeUtil + .getFolderTypeIcon(file.isSharedWithMe() || file.isSharedWithSharee(), + file.isSharedViaLink(), + file.isEncrypted(), + file.getMountType(), + getContext())); + } else { + if (file.getRemoteId() != null && file.isPreviewAvailable()) { + // Thumbnail in cache? + Bitmap thumbnail = ThumbnailsCacheManager.getBitmapFromDiskCache( + ThumbnailsCacheManager.PREFIX_THUMBNAIL + file.getRemoteId() + ); + + if (thumbnail != null && !file.isUpdateThumbnailNeeded()) { + if (MimeTypeUtil.isVideo(file)) { + Bitmap withOverlay = ThumbnailsCacheManager.addVideoOverlay(thumbnail); + thumbnailView.setImageBitmap(withOverlay); + } else { + BitmapUtils.setRoundedBitmap(thumbnail, thumbnailView); + } + } else { + // generate new thumbnail + if (ThumbnailsCacheManager.cancelPotentialThumbnailWork(file, thumbnailView)) { + try { + FileDataStorageManager storageManager = + new FileDataStorageManager(user.toPlatformAccount(), + requireContext().getContentResolver()); + final ThumbnailsCacheManager.ThumbnailGenerationTask task = + new ThumbnailsCacheManager.ThumbnailGenerationTask(thumbnailView, + storageManager, + user.toPlatformAccount(), + asyncTasks, + true); + + if (thumbnail == null) { + thumbnail = BitmapUtils.drawableToBitmap( + MimeTypeUtil.getFileTypeIcon(file.getMimeType(), + file.getFileName(), + user.toPlatformAccount(), + getContext())); + } + final ThumbnailsCacheManager.AsyncThumbnailDrawable asyncDrawable = + new ThumbnailsCacheManager.AsyncThumbnailDrawable(getResources(), + thumbnail, task); + thumbnailView.setImageDrawable(asyncDrawable); + task.execute(new ThumbnailsCacheManager.ThumbnailGenerationTaskObject(file, + file.getRemoteId())); + } catch (IllegalArgumentException e) { + Log_OC.d(this, "ThumbnailGenerationTask : " + e.getMessage()); + } + } + } + + if ("image/png".equalsIgnoreCase(file.getMimeType())) { + thumbnailView.setBackgroundColor(getResources().getColor(R.color.bg_default)); + } + } else { + thumbnailView.setImageDrawable(MimeTypeUtil.getFileTypeIcon(file.getMimeType(), + file.getFileName(), + user.toPlatformAccount(), + getContext())); + } + } + } + + private void setThumbnail(File file, ImageView thumbnailView) { + if (file.isDirectory()) { + thumbnailView.setImageDrawable(MimeTypeUtil.getDefaultFolderIcon(getContext())); + } else { + thumbnailView.setImageResource(R.drawable.file); + + /* Cancellation needs do be checked and done before changing the drawable in fileIcon, or + * {@link ThumbnailsCacheManager#cancelPotentialThumbnailWork} will NEVER cancel any task. + */ + boolean allowedToCreateNewThumbnail = ThumbnailsCacheManager.cancelPotentialThumbnailWork(file, thumbnailView); + + + // get Thumbnail if file is image + if (MimeTypeUtil.isImage(file)) { + // Thumbnail in Cache? + Bitmap thumbnail = ThumbnailsCacheManager.getBitmapFromDiskCache( + ThumbnailsCacheManager.PREFIX_THUMBNAIL + file.hashCode() + ); + if (thumbnail != null) { + thumbnailView.setImageBitmap(thumbnail); + } else { + + // generate new Thumbnail + if (allowedToCreateNewThumbnail) { + final ThumbnailsCacheManager.ThumbnailGenerationTask task = + new ThumbnailsCacheManager.ThumbnailGenerationTask(thumbnailView); + if (MimeTypeUtil.isVideo(file)) { + thumbnail = ThumbnailsCacheManager.mDefaultVideo; + } else { + thumbnail = ThumbnailsCacheManager.mDefaultImg; + } + final ThumbnailsCacheManager.AsyncThumbnailDrawable asyncDrawable = + new ThumbnailsCacheManager.AsyncThumbnailDrawable( + getResources(), + thumbnail, + task + ); + thumbnailView.setImageDrawable(asyncDrawable); + task.execute(new ThumbnailsCacheManager.ThumbnailGenerationTaskObject(file, null)); + Log_OC.v(this, "Executing task to generate a new thumbnail"); + + } // else, already being generated, don't restart it + } + } else { + thumbnailView.setImageDrawable(MimeTypeUtil.getFileTypeIcon(null, file.getName(), getContext())); + } + } + } + + @Override + public void onStop() { + super.onStop(); + + for (ThumbnailsCacheManager.ThumbnailGenerationTask task : asyncTasks) { + if (task != null) { + task.cancel(true); + if (task.getGetMethod() != null) { + Log_OC.d(this, "cancel: abort get method directly"); + task.getGetMethod().abort(); + } + } + } + + asyncTasks.clear(); + } } diff --git a/src/main/res/layout/conflict_resolve_dialog.xml b/src/main/res/layout/conflict_resolve_dialog.xml new file mode 100644 index 0000000000..b74bf9fbf4 --- /dev/null +++ b/src/main/res/layout/conflict_resolve_dialog.xml @@ -0,0 +1,110 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml index 179883444a..203edf1d5f 100644 --- a/src/main/res/values/strings.xml +++ b/src/main/res/values/strings.xml @@ -328,7 +328,7 @@ /InstantUpload /AutoUpload File conflict - Which files do you want to keep? If you select both versions, the local file will have a number appended to its name. + Keep both local version server version @@ -924,6 +924,11 @@ Free up space %1$s is %2$s, but there is only %3$s available on device. Not enough space - + Which files do you want to keep? + If you select both versions, the local file will have a number appended to its name. + New file + Already existing file + Thumbnail for new file + Thumbnail for existing file Invalid URL