From dd8deabfe859eab04864dc08af21354b93903230 Mon Sep 17 00:00:00 2001 From: ereio Date: Mon, 5 Oct 2020 19:48:48 -0400 Subject: [PATCH 01/45] branding sketch tweaks --- assets/design/branding.sketch | Bin 3964986 -> 3978939 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/assets/design/branding.sketch b/assets/design/branding.sketch index d980d7d2473d7394712aa8ac5afcc5c9f5cbfd73..d56688b23b12bf79176736198e2b7a5b776bc80c 100644 GIT binary patch delta 547605 zcmb@tWo#tvnq_NdW-McwnVFgGGP}&oE@K(9%*@Qp%*@Qp%uMMr)A&25`?gv$b7ypQ zQwrr9e?k$;P{gzLUfK2s2-L8@F3$LV3f^>`zjZo`@`v>Jg8_`ekp6GQx6M5=$qVG>aqr(Mda~ zU;%Aep2umORL|PJQAm`(o;Svse!`c=IoR}2&cNfJ-8^{_%-ALk1v&;mBY{ArQX>`4 zu!zF=j@uW&B#kJoN$RW0rZ%sz?7o}tgpj@76lkLlEX=Mr`Y;3$9(5yrc%tDIDk`Ok zp-o@JcVWm-f}NM*#w2546IL+{EScqN`pFuK88e0#K)l_Y-ih9rdn>* zM4H7M;T)9vE>phw#c_aDODveBnVA07(h>X!??qdHfObz&*KV}Ty{7;K5Y7C{F%x; z)|#tXfY;yF_t3M{^FU)nenEGHpfj3So1b}3!+14}Lj;rW)gGZ0N-r8!%*4LZH(*R1 zD=SyAFNPl*2S^8`G2aQG^gPOE*W4dEy2M_4@m{(v?nbWe&u6=9Y-IYidn~CAuV{SE z1isP8;WU^#B{%yBKp-r{CDU#{GzDW3>Lr*1g}<91uMmagCUTB3_CCf}JTlt$bY}RZ z`E;G(6X{*ro@4jMO6%IUd#OKv2pSRv^~7AgN~ZJJwlr!|86pjFC}R|c_E9zBGXGQ| zNePRhI28;*!@Sc(4J4Pt-jiYZUBD6?u^6V=ADBmXHf#W(XKW^Xum#z+UY=+C@Aq$G zAwQF?6%@#iL;qQ@;8`%xuMMnu77QG-6+laX3bg8Wr)7G)iUymyVqg@Q{M_GrINS3e z;Z^^ou&TN|IiiSbIVs+?t>1MGMYzOeR~hno=s&W`D67h$KN53}IP+%OeGRVRjD$%n z#sOkr(3y89skc>gvTAAGtkJT(hI35Ki^z1DV#6}katZQ=1f|oRo_%LWaXRV|h z;91#|^IXiF_R#z8H(_k_3OV?RWC3u9ACz>L{&aM^6Xtq4k6J%RVwgH9xh|<7pj8SVo0w7xl&12$B z`x~n5t}r&K5x1u>?w%D=uJ6~=`6QD$iOjn?z_NYipqGB)468FKdZpd22|d;q_m z1pxNfIa*t*@a+~}reZc_0XP^%C73#t0FEYCR8qVt^&_Vng-$u(gQ*J|IsX;T*axeG zB2GCB&B;R9R2}w@%`%EK0F`wZyVzs@)Grl6P{=0EF_CygX5|#q26f1xCTT>S$%kOZ zO|!Qaf@T)8{-KNUdUjZz^C;w#RxwWZD*2E)RlH>Dp&FSkD-7ZFvnHecv$#JwAy>?K zo`t@GWfxQUXL&jx&`q|C5&e!ztyGo_Y4}bwh{bY*G{%ISSlMa{faL5Z5A7%w3HUsx z%z}l8&;a|e4b-kw7)&jFT061FY8CXJ#21Of8_#r?!{!$W+V1YGmvLyVg$|?uEE^`$ z7B@tz_G}y6g{Cb*$>Ht8!9^{2H|kC;yvO6Z^Q$Ak&$Y99OjGpD#=lOw-k$takDTX> z&QV=%kDS>^&TZo9fMwt;@+#!RmDS{3P&73`%Btb=p4(rJo1D^hxkW20tfcGn^z!!S zXi`Kh1e@pM_qUfS{Ou{9ZQF9!PBVk|t!WL}bd}>tUcMVA`rIz9zK=MZPwMYOpPT6P z9XHJrc#yX?{5|(x9~AZZQ$YZy_q)mL{>YLz}cFCK_ za70>1Jyk`sXKW5VR2`jm_}(S1lI)-#0eSN|ix5DAu5ty&Br&(%g;4{ z6@k41!pTyofOC>X8&yXaG;x8~y|fGL)7;8CT4W?x2KQx^c z{2Dp<0xpqfY=62>T)hs8*KLbCO4_{Lx5eY%Y3Q!>I}b~t>-{k{(em0JQm&KLZE#3% z&YUJch31h#g88)&5+n52>fD7MPyUAH7glX$2w`!n6LjJS*c0uX23fC^gXF!-V72KrWvBUq0@*KEKw|IFEpr__lyn zvES#%-A|m@Pvbh(oA@=uA_Un%=x@rw57k@)k1uVXcFWm5`)r>r3OC-vveScwglQJm z`x$vlq0JjT;NxHbFZg`IP*_1UJw2no<)oM;POP6}K?4z~5DechwN1tOU9r+o(jRaK z13p=UvFri^J!uSg6X~AT=?rh-7Zdp?xvzM$`(8G7Z(MXslOeQ(|BeY@g z(7yDdN5d`u#3$A%$6#4Dlc!m#Qm0=XkY7l&yLSqQ`#in_M8id+YMa~SdtLgAWNO9+ zN#N=lmk<|~v3g|syC6k5*p(3orFQ_iTW~uK2N5;GbPkW&45y+U)T*RU>cE#)`>6B$O|mex1ftg!jyFe5ZN)o)!A$b~9-s*Iz(e=+e*a zP^`ubdl%uN!;7k$weCo+!WSf?`ukRwQF(XJt@Ei$@V?|`zXz>@a}6fLCeV$>=3JsM z@?W-vFFwa@DM1KeZ`@ zTt$=od{qUNyD3AeJfJi#k!nreMh>aLR>$O_va)-)I;@frtOOt0|M6jU-F5%~l`MNTB5Fg%^kC1;hBGHotFImpyRK0CvG1KLJ zed}VgA+wKvHa*|XYSR@%efat`lw{eD*UIBDqAYQu)XS~@i-{ADH0=6jAC@&jg%^8O zLv@Q2d`l))>)4fJT}wnOV^+_Y$B1UA867A#fQbSPH*0ZkT@RE2Wd&>}e&xg8SUmWP zNjYA52!qDqiMJ=WYE`|CkQ0CQ3qF+EcaKlAE#4XRBp7#L2H+N(@c?jA=ms8;81`sR806mrlrhS5<^!R&mP4DrYYiYEDySOUcSW};#6=Wj~upW|EYS3|J}Hhs-Tf3HK+3?Rt- zHURD!r{2c_N!y#Cu6XcT4C^A}aU|pX^VfYnZrs~0mx*+#TE}CKMJ(T=>52_7E6U)^ z2u6buz8#=9TO5J6LIU&efeO_6tEY;DPa^m4zXX z?cr{d8TKxxiG~S!Z2CL> zL^`4O5Ah&Z>~K1)rN1s8bJ{@CG&ql&tE21d5_d}f28PD68v}B_$MY`K0bNRRX>y|; zM*CfwwT=MZY)h%*-C4LX%5UT1d7=$lDjrfbTPkmE2KV{F4MeBkyzg(1WVnD@{hhYp zfTVK8KzxoqYj*R?Pm>9A?CYfKWazeo>PxtcQ~Yx2=Qj`V8rODB(7$|P0D%H3{a zLr>5ikWmK2m-^dwxc)V}i2|SXx?5-20c|br-M?MPHWX_DEnGz$Zf}zd zb3%Aidj`)BH=hT2-?w@p13H{~bXeeR&SlQm-Pv!kDB$aasuV^F>n~U*b%8h?^HnVU z-g@buCIg6~+!w}bCb)<0Y_k;ROgtPve;JM}ev^ehfoG4uSV5@=<7aj^mMu|FuVh$F zfJ|tT0LW6$AZMrdKl!lR-(?`C*H3R(L|%uZzi8eIW=!Xnu*4^G;5t*~@gg@;d+D}p zERjSz(fDaON26|9N4^M~Hh(L*GXp2kRm0Amdqn{+8B9_cK{RK_gL2LDAB3~Lr++4U zZ(yB!wmT@jmG=!&7sE+qSxW6y`H=jRcr8n#1=Ec6$4m+%@TAh33lm#%a zh!sKU_9_H?^Kt}jrr3^Be#9v7^%xwaBt4RWr` z&{^Kzk{jEcJc5sOyB=;&N0#K#T|bf&coBZr6V$W&y){T)zn?XGePFz!C)=!Bc0bpU z1h_a)ACDd<631&mu(?0p1il!vc1QAeajV~(P4^siCMVOTtL*pj@~t_M<#uV$eR8*c z{E(^oY^T)j*flqe^!x3~+n#jIluIE$jBQ z)uPxhGs`{R)?_nt9!?)Os;Oiqj?wXm0U&tem4U0U2V7lx<@>W$R|QP$>)du*YT^>o zb09?vly-Y?4moq&^x4IO3Z^9zp0gMMi>iPYOlG48%;+~-!*f57GQ5-3AMO{gz8%SJ zr`J`D0=nQXF1k{^WtddpJ;h+M)-<+lWE@DeWqM*%X5PT{A<`7)yKO8BI7F2l0aGs+ zMhiO@&e36F?Dpu~L=Ee5Bchqv8^UXCM91VAzE%v8b-s|pdX5kx`_!&y8dkWou z`z2>3v0kSgJZamsj$H3K`19XS0R@13xVy&rY>()I++NrY(epGq3t(3G7N~?g-0sLd z4Y#(d2znrod{AtGAx`Ck^FL4i%|0kuh#lL75bxCp#t1t-v4}JsdNE?7ZR{9Aa7{*? z03*1JwG^We7E=`V?7X7ef!f}-j!#iO_8mUbKm&29n)qDf_=24i5`6-|FIL+$Fx?!3 zI_0EY@)F3}6j0h_}i)3cs-!BHY?UK7?0D5d|;}v{9wN#lf zbK>!j_LywV=pd1#w);E)7!Tj1CEpoO64&UXiovLJFcy~4!_iY4yY5uxQ5eFdGhk$;MFkmJjx@>aWf&mL4^ zWYR}7llboFeQ;Dl*K_V;#}|HYcJR?<6=J@E+JTye59y*7sG0h#nQ1RU(M^|)q+-Yb z*IOo#iZ&H-FwFx4`l;+5fXg06c$#m#hIB>OxTTh47&#fbyv?5V zo!$83(g2#Tq7|vgMz!eob_)5H-+sA&oZF}WMTz>x#6JK|m^?gzed}N;nRZfNZJfcU z%SDsVr)fX>JFM3r$(&+;4VUUJ!BGcgz=na~e&Q!ozlb^kfCoq}L781Z7;mB}v{H$5 zAJWXpP%XmZZ#~tjwyKZts~@W_kLnb7EK{6Ga|A-eMmHgMMge z6P)|v^V}&JN6tiUG1PZpc-ps-qxBLTOvw3N`m%e*YJf^nC0*qNT?NPhF=wOw4VwH+ zaM45+cb-87fKFrDxMjHmW~X0U&9XEqVN7F~Nz7p=w=-IG6g(pNjeV$BY$(E=_?FsK z9B)kej$8A1^A9O?aasfo?wt79v(}lhm_j-8S!@J7`gc?Abd9t7Kmr*Pxz;q_f#MDI zi@9X_P5s0R)p%u2RNVrK3aVlLS{U#%;w%dmvqm0ifP5)vN<+tel7UXs5O2|?^+hEp zSHegM-k<&u#T0OnawEZ73l(4vn-vliIxZ_Tc&H*3gyc6jWY~x6vmf$981Cof>>Xnq zBDsyikrWDSDauSX^r@O*38g}RmkG>_M_E~uX8bxp@*^3SABy0y@oe*`N^4WdHDQ(= z@Rk?101F&g7~MA!KKQxP(Me}y;K?xXKcpxTM6%NPmU_ji!t*A6IABgtB&-Gi6FQwB zs>pKc@#1{tFD89$ddLU~wFcCTV3e=(XE~W;#9~RHcK?dVEG!tV%}zaaE#y+GDUrd` zqOeT0QE1kMF8_@Y5enuAQy^?HABoaLB<-bu1I#s1Pp{P9zC77=?&Pl8=>6;5*qI*Tze2V-PSri>%8oYYs7# zLsllu344SI*ocyvjbn-U1yNezsLSk#rBJbO!|ggs!U35PwHSeVNMa3m!e{#>w{9v> zfE!rTzjW*V7YRB1>|7TURp>pd5!+~5u_@nlV+t?1L6x<|lc1=zZ>l0QqV)FH2%wB) zf0YOy{C1x+_n z*o+*uE0AJh|y6_f$7bq!zfBxD|Z2?+!t>juRjAM+xaEH~U}V@*UUV>9${{Eh_v2nZ0@srUTJ zklN&(t0T#a@R-+VATxbcTKiEYDfWm)4ZE)KI4Hl(2K()St%-StQ2R%rXe!|M>Z~$j z{aZnJIe!oq1U6AR4Knf#R(u|&(00NeE_EJc_r=AECmzi>&5O1}_^qntNCU-GlE0~A z(q~d)O&`xh(Af20IW5=y$TlpA4TVsRI7aHMn#mN>YR5{B=R7&vRWOvIy5E_3yeyWfUV;g{mEgov{ld93x zP=W$p32!Rkb5VdN8n1lC>OKJ1{rWYkxM7dQZKyo5Oh(I=V)Jg-d z{5~V&-i7WwIhqUt8z4k*{N_hyL-)JKW7;3FOIcLUs{s$$&nVy)gTiA9F=-25!NpD_ zGnmCxT=&^yh>LY7wVz$`Nob6@IgidjMG}j9qv!p!sBJxBoO4m!+7Cfu$>w5790f7b za02F9*hFroUuX}R7dnQN^@7iA0K<9icMk4J4*wwcpGTQrYyj+OSKd|}Eqm=(p*tVT zC@yCtsNNIbhGKVUn{ca!4`}}7(OZM9J^QV!1+Ox?P zd7+A_smkPp#$KIM9H^T*#*Sz^gf*W4*75a3tFmA=b;D$0G-3!>IvlAIVE6Xpn$g@TAd;*{@A$(#P#uPtU>Zvn`0M4Iqy)htAfr zjU?ZWRBbew3+kK4CSS27pV2XyW9LN;$Eo>29C)oc6E} z8&NU@^&R_Y*1~4$@R$RZxbT#b?hj1j>bIyS*zsFB9Ei@5pV;)`3S{{(l%VWIAT6)!f9XyUh6`Le{9IO` zMTh;SJOQvK$`ifNg4#`*yS^91n2ur00ZaMbYr$@t00!obZPvK0M8 zHQ2@858`LMf_hKS7+SuIWuV*d*ePY&uor>zcnjz=e0#{05FQ~1BcyA4ZUPB+5ga&3 zlB9s2VqnN!f(YMFJ%T9CsMubnR+um%WfkyzQ`yF{_!PP~L7*0-^qY31?!I~9sy6LD zW-KIUQb23~#EVV=*4C;=I0Z7QQd8pja;Qd0rho1;^e{~#V;iA5mSM2Qhe1pc@2Gkco%=jOBBvsld_BJd#3qT zZRrTZWUOd4E<54GJb#GAGuLlOTdCNYG~~rd#2QfXScTsS?IfC!s$*kV_ud~%e3LTy zX?GwzP;5G;@frkTj!_Vve`LTF8=DFYM#=7jWoONxXu1==iIjbBfBBlaGHSvX3@)Pb zavbyk{?tEmPt7~o!Qvpkhth!Lp)bW=Mr?MYUm*Q5By7eM#B7L9W9|i*PS}lC&=8tY zV3MDi0Bu?-W)imA(NrqoZX;IBCj=y^CtMbYehi;hZZNkg4D;)<@j;*h-Pv--Sjl)q z4C`VJDP$QGxfe5NvP}Qp#m)YK$0oHqN4|JrmeW?o^qsSl%T=t zU`>(%jR1p@OOkx9U+8e-2v3<_Y&Ac93rHrXhR^|I6i~zDIAo-bnQj^Qg0aC7MGVIo z8(dpQu&zCAk+P|Cr&UhVDR1T_tfE_~eN=BZSZ1<6)csX|;=s zdL98dLy#wwWdlR(RVqzq3*b`|9|18RPSZk}-og@z_JGv_=S)nc9DQGcxE=Gpvk5`?z>+1eqH+!>?-UFHX|_w$?pj{b7uS zutbeF#gzg^k41fe!YXJT1E`1M4mR7s7Y)CX#%M4oBKDkX$n@?-_!`0gFl`o4j94Sy zqR1=l2w`-NBg3+B&zeMdx=@x*dAen`nlH(;4>(%ch=L5b#tx0k?FOdI+z#WEw^ zeT~wv88dkYdC{6Enaok?{<~rlkO~N70);@9984KGt3%96C!wBMKq!UrLWF_}dIh!i zukeGICk(RiwKc)CulqQnD1G4$KHD*Gz#m~+vYOkiRB-A*EF9HoL)x-WX$2CS&HxNS zpwUXN0EG{VU4nF+$XmyPE0!7jo0JzAe9XJmXc*78#u(3WlPg~6{?G_R^skemzTX40 z?8T~F%0PSh;P);AjN))?OIyLIqE5obfe;TflOl2DeqFpD%@^k}m zUrc{pLd0*XTUe)>{yRMUi4yKFCYm5XAQv!1T4A;3zXwSQL3{icI7C#(FC1qJetMN0 z65$MNZEbnII9zmn14dZ?Ey8j)i?Oois_Ed$K4g~!FxYya4b?32b}rR)fBxOGZywh# z6lKI?o$xiRSoAe-U*V}BRn~3@sw~=jSz?m-h6NUgTvo}85AkShj1#_twJwt2!Tq9H z%2?{)el>#OA_b+Jl-dy%NNtnlSAW27biTvb?`Iq7NxFYBJRY+ z)vRz|^K>?!C%A0Giq#m=pWm!??&j^Rzy0nWKzEjm?VHI`b_n#iTdth5{rJT3y04si z1ioCwsJs^0psfZIB?Gkex)(QX?sIG^+GxGnKOW3_+&I%2*+4$`Hz$MrTXmYbSI6@>Fk5ibtIbE3P4~S; zvgUqyBKJy7MKEvpry60QTGaVH{^=$g^KEuJ8Uj6u&Ly(51#kU zs&&lNDaD1wLY=+i5gy_Yp&+IMfjGTB90rlI>ag6h7d53CfaGbUs=DBgHk~2~Pmq<2 ztR}@L*GP#_=CA@Hm4Uce9;Ym>X59VWnPV{MmZ{oSu80!Uw$utHn)v;9eK;S$gcLni za2EINw*9hwtc$@URNvgqtvR_`V3R(5^Y*xYa=Uu^KycaKdi7iS<3mVitm4?=aQON- zvfHKDMXWaLNWFGIpR9Y;^FHuxdE42W@l)1cMCzz(-#u{3>Jgmiy~U=;JQAa>e7t%2 z+Ensw*s)Wn`FOIIJ8RuPx*;7Vl~g&ku)s*sD0_@b>?aE+b-!{r+_CAv2dYFxzte`Sqmp_P%WU`-?d zw`sE3!3l5fm2w?=2m{>;%8s6J9)dPGo)LmlJg%gX1m!o0JhtP@n9Nh5Kx zv)cR#*tziN)KDtNrNj#`sa9rA z%nF`boPN5bLp+|=u^?XgeJKr9N+>-#p|k z%cd`3;NlnWI~xcLUSRY%mA&Z@M>w%jlq>~Il){d6&b!-&yu{T*9{XwJ0Tle{!B6E(i){+_m%>xQ?% zf0|*<0F?~HHX096ircMhw8S%m;p_FZ=WCNf&IGN3V~k8B;$HJ1?mmbcGzXFH&%=Ef zR9C@L`qwnJrK~nc>+{9#FJtqcljbz_bOQA)?G=~8>grG812D0c zJFpE2^xTVqiKSe({{6RHXrRfcz0VwoY6Ll{>nr+j{+@!&k8!k%cYGxa^ng)m!KP~C z%Lcy`>8JgpMftjU9`)_w$!QvHK!F8k^@jDxcf*;{O27_ABx=#-KYYq3JxC7cR z=t@B#VU*ysi!z7I?Ez?cG}!GOdMGfChW1-;L%A0;vZYxVbLV#NkB#r8k>xPKJaAGP zbpmfz&@>Qht`fEGxBI>x@axBuflDh$D7NyrO~oepk{((|AxZklYzMj6CygzkoUjP7kTFmS3r4u(m@CJ zN%J5pm70u)oEVbf*&t9!Eu<(7YFwZwnoaFc*lt-8OswcRwAGUi=5bFaq|A|u36+xt z*&vz$e#B1Z-Z$@ZKvApfQXIB?P3kj0 zm(Xj5`lP*(YtbZP=9HX$V>Pf0g+?DQ-CSFv|2PPi_J_)ii!w%)6&mxDHV}q&E>65N zvaTc9lO5tapaLNY94DO_pRScjYhZ$$Ay=$HQ=>kK&w5mmYo&)fd2Y&H(hk$@pdO^- z9g~C$s~+ybwEYeq**n;QYT|O&0^eS48cb{^e8**0<$z5lO|ioqMFH$Ti4LQa43YVw zKhHS!*t@`yp<_wCmWA1f4Q#M-)KLeADo#k{j%C4}KNv)SbNwHt+boL1vngN!isb0t zM0S^s?c-oOCM-4IS(mfZ<5<|%VMvoq0p)}mUFVmm2S%-$t~iyNXYVK%7KpzgdkBuvn3qa|LcilAe0Qw384vqvoNiP zWaQ0;k;MPS`%Pdmd*k{dZR;RR7g6H74j%>EV7lf4Dk=WKhL)@C^UG_54Ogi0$B?L$ zBJR74Dy$3!Bwf|d#rXBziq4P3ux!f?sJ}h#VsOAvr>H3Z%`e8C-)<%gsF% zog`PxWjtioqK??zJnS|6=)N?7^zm3kC^pW`2EBY$AcL4+Gujz9*npLVnYK5?NGQnG zOy1#p0tDoc(v-&m>pa~ZFO_?mL*bSmxKxvBM!cLBiFNuSC z%t(DamaRvg1~(hwhgQl7aXGh}yTCBp)Y`%PB1N`Cm8Ecep51TmEU|YoDzuz*B92oVf zc>q6Ga_m^zQ})XP9TL>U{d_t{ZDddgiRi|)FhKQYDh6(y^su2eN01Q<$q!dP$Q0+Bdy|#+ipMpS2 z))gr?xxnB^Uf)CXk!n0@{wc-%TVDl48)eMy^9j2ScnThP8xQV$CALmW!MrGYmG&RM=wo1X*Ifu4NH*eBq$07?LT zhRDWhmaBoH4zATQC?3YekRQcyDZS%p`QGL2ESwfrQ%T3sNJQ?;2z&{mn$k$Nl2#u< z-2N)VgUh8+Irq~Nf-$z|>rL?IycKb`=d4HJ=?isjb`nw56k`$*zzgu<+IlEi}i~mWF3NQctQFcrLN_APshTS6+_Y{e^zszit(97Q)BRvFDak!2zk@`P;ys_BuiM zM(0ftyR(jy>oLKan*E{d&ynF2w4I!Rv@F%5zHk|YiRK?`!}qP@YdVta|s7JeKr8kaX zVLsj6AFnEWJ=5(wI$tjP+ux4n8}mSvKZPrc|5$;-NWZg$;L-kJdBfaV{{@Ksb(wJ0 zl`o-zI`#ZK$Y^h$Xji|1Kb?-{PT=*j?{Z&_)qClEK777+b~Jzf`R3r_)V1IKW4z=2 z_UL^H=~h^19$3}UF+CwOH(91G&1c=-0ozV>4Mk)VM8rrY4n@!g;0E;%ChjWy8-vqT_yoBAb0djtDLBXf za<)I2SaVVzl(`OtNw1L&$7^GW6;}Vdr`1JyRAlmN!bS@UH693r|+y4}tS?!}&`^VpDQ;Bz~7M1}# zB5-#{3~~wwVcErupctlfiU5Sq8~!QDUVqDrZLEFwJoTr5H^!0Y`;o-*$==cX-eRPK zU@v;!4Q%h=uzr#s-<1g%c6GAbG4}OePv}Q9;8gFW(}XQ*?>K-*)0zo0F}I_EqP%tl zl=`kf;X1mP_makNZ_!|d z5M#zHzK)-R98Kovd7QkKkfn7)0@(XaD|f`T#vRA>Y7O`6+hp2D7gugHc^iAnsHa9s z-`78f)N*z^5QYGSJSIY=H11uz+2W5lvz_XtM5?amzC89EJ+W(pDc`YaKyyRIea0!K zjJ0sngL#xKTMusNTdDsgrH%a~rRB9bs}V-lXCbulq!QG!kSJ+=KW@$Njxx*6=U*zc zcbQD;>ehM*@1>{kutNCrny|)sC^ymycx`!`A0w!CO|Y$49y@n=znpB? z*tF@IX?geQXn%GnSZuVNI>;wlAbHq73_919W8u3>eOC~Gx@!Er-l)weZ#~iV??~-H zc)agFBenIEgLHp2dsjr8El>B>IvVz_&i;NOPL{KBHSm=BE5X8w*KW@|H9{YCz!6o7 zc`^9%_@T9_WF*Pw(aYhae$wY#X{XLimCpv*wvW8w=4`Wb@O9)XTg`;XUohH{CmwXn zQ3{q+`ixpN$gM@S$mj0-rJk3M<1IaI9;v%CnGwD&!q0T5q}f@cec01@o;tUDIdgEv z3l704}ahassyL1iDwWUd;LWCjUa}KhkkMm^bFmsyF9r zf~ehR3c312OVI6$|fem-qS)@*ro#N5LFGuXn$vtF1j0 zo6EGqw(HT4l!qdF!*^SYV|$0~IsVtCJ7;;a)^*Mm{WkgS|DA;PZwKuz@5@1B?w2Me z)?O}wu9M?%B@f0xioyE|4G zJ4HHO!oYKu))yPR{w<*a{=-6}>aj4!8k^aP7=SsVz)3S^U(9~`;0i{zt z6m&I(BxO#;&RBV|@AkMo{CVo}bo;sPu4<%|E$0;*7XTN(9u`TAO|FB5aFuRU`(GX! z^uIi`%6#w|$TTHPgPMUk6H~nuJYueKoLboQY^~GBNtteQ;|;H3-acZZZg&3>uR_o5 zF_u@s-0>|Gqv$IBj1g!5e(Ak_Oa75nC^R;GAdO79SpS~B}S)VlH>;Yl?Anp^_}#{m@5 zaF>e{bR-<72{KFr-fiQV`)0w-B7W!W15>EUzA=1Cp#vUVBI1i_We(Y&5~Vl&5D$%HvW;Fm8VMd|4E|rytFR>4;8*V2U>t`457Ta%{|&w@ks6ERu`m}Wz8Ax9 zG~+E*Ehn`KUcbOA$m-5^8l8ilA5fM2{N#v{XK5G)i%O*(5!nvyxbnGt%)p#7lH!N~ z9vYnuZf)zh4h`|=V7oK?V42u4+KpbG<$e6#C`06N(0}(TUB00_kK_+=eI1n<`D^^&k`m?S9^c{tTtlgTm5L^+ z^s!$=Jgq`R=BOR19BpEgN<}@s+M!a-c%VdTe75q142Mld$z3+5AC9J9Em2$O2`Rgw zIQLbkIF1tW?H6g6FG^d<{OT!iscwc?_u$xKw$(Sb|J9Q#CV>e}AmP|=J!uG1Jmrj># zSxz$&zBV-!XKqH93+WEj(XYCc$7Wz#6H`_(W|po&soG_$D(@_{rK9rM#eL@xiT^ep zut$~<*qB&Kla5d4Wd|frXEiG=n)s?MR}Eb`a``N;34G6C04EheCI;x9PQ>^(Qj(Hb zzY=jo7G5p>ele1=Nr*64XAByGh948rV<#z+X6*uq8{}!q1^7e|m@1x5*77N#iQ1a`nE6 z1vBe>%!HA^SrW!l6|>k+)MgGVkb3`cXgPqlWz;psZLh#;(3XKdrGBYF3{9cefq})# zDlycg_C+_$8#$l~7$>A28D=x-9P#8vnYDr_jm{t1md5R&Oqi{=L9YAZ_pq>2!`iL@ zV$SL#Ya(vs(W{zVeh*FpMpc?Tbq`Js3QWGc2d4$Av`Hp@04D)mOcr_g+Qmvuw*UGD z3;+!hV25U+O-Lohu2C2M<`_L3&~1InAs6!R(inZ2B`2;HEl@G&H>Tn{l(Mk1_ck{r zq!Rvd-sCFpr(Z#=iZ{_}5A58Js#U+gS~yWK(r66}jtJQS_^=bRLiZSG54&j$q*pu8 z5|culmT0A-V{jd6mTb~hI;If{F?r#D*;iNS5MorVvZh$FlnzKFHe6)v_ZigNnNg`#)Cpw&gAuH zqY^GfEfrh8p>E0+klW~QVsm=WlmA|sUl|f|vye|jGTk$klv-xz17tlUt5+`gpvC5eBU2KLp&l$>3CSmiDqaK!8jVqG~-b9 z!Pe95EtULGfRR2=CNd<6gS}j1{IvceC_YjBr-=|OWT^9#2$*bxpL&A`xh8%_9I8`6 zW84upTObfBa~Z7X+0GmDqAetVFaIVpn@g$m;)eXRfDKj#LfEtY^Clcl4E`)|`d@)~ zZorywfVG_-r6sg*0)4M$dNzl0b|l8-QKO=$dMB5|+8JoEMZ}+>{x;6RAMy=VE$(2* zI3KmgYfNbQd|w8M&&X_lCp0`VM-yeHtUGa6BQE9%Gu|vzBO05!1mH5BVoj!}n;t?p z0C!uU9uBV$EWb=7?Qq3^&^FIln>+%~p-rZ8X>UDY!NoMvj)eaA`ih`lqT_?WbbjMd zn`-FQ_mL!cWQx0SUp4LN zbL1!9swFaHN;EAZUoYB?B9%W!^b7-FP!GKvRD)lJZgX#iGp zNDd+hR=hH?&&!ZYZD~O(hdub~6syMHp<`Q!AUZq*OJw5(%WBi)7@NS* zxEFlM^PA00Bpv{`mmg?7r1@k5AKy;L3B$puB`oc$kVyj;$n#}zF;5XxarZ&1M74@L zr!2&ZBXK$a+DflD_JQ&)vuVWsvF!NmE~sLn#yG5fo+!BJf4`EE{wdIc5d_|7TxQ5j zwr>_tJQj+-kXC5HR`mGRFAt1NIxR23CtnM>_hz_pAOQK$b6H1(HD6}r3(?=7l*9h+ z;l})3Y*vyzC6u5jNx8RGX(i-;vv$dlt4lcdIY4W9c$@W9mZ0nljd6O$yKV&9m@QsW zr|9f8%1Xb@X$I>0N&P`tsjV0IpB1kEmB9u0|Eh4^(1K)BR&b|`sM*Gdnw2=V8qTig z9?%?EE=6aj`p})(7SvE1Qt`PT!}Zi|TMU=?VMZ-Lv-0FD(2VG5wbUdvEY%Xp3abOE zO^4ajV}>naY-}ATGJa8`+l3d>hI8K^{Qqrmy}}%zl#dl|;3FEdXu>udPr&^!ZJLq{ zfIJrG-yRkGzjL@K!pL6AToX%4VU;irZ0ch2sn2Mjqa&d&l2=~Ae*sE3t^XHVRoOUs zWF2MnygjE7hI8a!Q}`&h>)vExQ+%Ik=}MuCxO?(Fvk6V@W3YQP*wc*Nur=fw52p4Y!(Jkv)-LO8OkDYOpu`s;kBQdwi{rj_Z;QiGE6yETDH37DoZ2!>&5M1-t?UGAyV`?=k3KRj67B3oO$MwFlj`yUAV5|tHQt8L! zE039$3skiZ%5TIvam~ll{U5ZwWl&sizor{BxI2xzyIXLA21syscejN@aCdiicY=G6 z;O_1ceE7fbo|-)~yN=X3^JP_cS65eiJ;Qcg;Qs-k8!TMeBuqdeQp62J^iWSGsuSM@%)NE2Mqt+6_B zKJy?C1F*;z|3750|IHPnKhiS(5k}!I_a_o;0bjzyxut zk+Jks>9E2KxJsEKYL#l*kj=H0K}QoCt&PM$?=LVfn7vJRH+=x~dL~|k(Ln$ka-P%E z*-1nCWB%83pfgoSNBa5O3G1Cnmt$OaMpUjNjbxD_w?=ZVSzj!j!?<*OIT`;x1)kig zja4wF`awPaAg;BSEh=6)NN%3P3?ftWQ_mpXZ8?@M$ zTDA49E(1RqdX06h1iFPpfVyJpxRMEV5Gzv*^Mt<}R{wu(pncrhO~Ria_-!D~LU}g< z!9bdliOp05Rh!nLC|L%{n7S2gQ0KW1-QO7gUx ze*6ep?MM#eH3EvL&LrM$h45r9?!(~kJWn(zh7_9NEOu*CUFN=0N-|hol;9jW1B|HreE?riy@Q6pZ?Q5@I>D10pXgC|_$ z(!hU+Ir@`-8n%xJg^)k|_-Xz-c8H}{D{pOpFmKV?WO;VvjzuLSl>XRBoL+VeLbLsk z>Pia4{kVpLfbahjJN!F!0HAA|o4K+DL8`TkW4}c95n;wT)W|vA_x))M6=B-xv=oIR zwJ6G6Ju3Bq_oII|yFzr>O;RBG)XE{ITxy-w#Pb@=5H;ln?ke>o_~{|xh`wvOa>ASs z4Kic(GBgEI-#OgI(i@634I2bg7ULm;V+NPEael)Dh4nPj9RLLs^~P4d#uaNnvAa9G zsKzhP+9#AaI}|5(K65BW65bA#3D3x#R1+&RQOGn_2;re$xB~=lcAU$t_=GWP@Dl^Y}-?oiI3*!;ZPBdId z;@NnfmcMJ*;{oAnp}}nRGxim?hl-h^KWrLPYlC|U>$S|?eEvnjvF^sgd*pHdIJkE{ zo~Rsgz5@tdPbvqV?%u9arQXV%KTrEU`j`yW8^<NE#$rfcuq&Ca(Dl!&vt)-{*PYfSehV?aw z@&_Fq9fm2$NP1OCgTu^y=rXU3AN}1cAXJ6M_s0q4 zKYI+0I@=VQkgJJ_O`SmEuE3=F)_kfteYiIKM9Hzve$kxEim?rzsez$-pCJjKIHEMl zQXNq~H%(JNSu@4@sLa<_D4qfkWSTfm?)b^H`@Yh)`bgIDzL^yo6ZkOiOxqGg|KjGS zjW3h&=)Y*XpnYzOq43FETU*oVdU9&EavAzhQHQao)%ptAy@Vi5G7*yvlhA4-daa}d z1@V*xDjd^Z>wfgujV>^I*ZIPP2uG6o9Cd)nTfTfOio_H)SZ%-Z_{0J;=*Z&<@V7<=3$6`HweIBX~ z5ioa|U0}rka^bWylYjV`S^ZECIL*jClr|Kdun?9QKfo}Z8dn1Ki6mi}MQ&|F{}QLl z?yt-RQe5Z<^uhEO1YW0Ywj7exb@OrJT*P?oY4XIJO|lU?1Q-PkhSKx&u11sp^9)#6OJshDk>$_yPv_|d<6Xw zL#JQ1(d(>Eryuxps>VP5rUw_~EPjPKtfGfA6JwnG2MAGm#fmK3K(i7s?F0;$y9VE$ z7$AN|ly9(xeq^M?4Yc>@;j|RU(*G$rRm1on9E5VRAbxIh(?@d-BV$Sqv1(>HJaq(( z8$wGXJ+bhvHS_3OWM$%qCL&%N=>pwKDQ$4~BA zgB?RqT;y6I?n|{8JXD9NThEnC2Sgw4?eFuR6SH^FI!bO@d-Fa8FqQ)xAUZCZA59HV zupQ~~D?VHgf+X}-fqkCYyVwP-ZSz7$C+iT2wWDQW0n-)w&=5(K^@IqfrNd#nV>n^B z!{cA}k4)O`u%z^x5g9#TtkLdq(nf2_7uM+^0;nUTS(tsV6F~5iyIXIDK_U1ce$m|r zBlIG2ljxPBVz4jN+y_8~sjOfer!z$Shzs$IyfnJ(2#ek-LQwixB@{F^$X2(O%GQ_) z6~zwU?!fu``l$TOvk7m}S8mSAuhm5jsGg{+=iM<+F^tb^WM3;!BT^u%s&!!p{Wd;? zCYNdGa2zl*&pER%qpcs__S%k9Y?>Y>vQZzoA5Y9L9M8WfqXEDjlS5FnIF>Bz@zHMi zFPJ%bN+Unk!L;MNth?$9iFXJ1P@i)1#u5F!${=mkrzZ=G__jnj|?;n5y~B@1xR{;_^`z3A-VN&06|* zr7P9$qtZ1Q^gmU)q67#v{u0yOtgeg(qOk>N2r@B+jkajz$fSlR?H@=tO(CrE>ieOt zwINj^wkKMl56W!?{MiF1*AZi=uLWG<)jYpmCIugUj}CTFo=@OqQ4i|XQ%t7Z`G$WP ztM$W~Hx%7yVy0{J*#y@HjKV{(_@z@?$k<7Xt*_zh>wXTpE*%l`+T zR`(hyfsPwusd_Skd~}eLRah%B2-3T}I6B8Z-WW^HI{u)?IO&=PeJ8?c-)@;@Pj|0I zQ!Io=F)T;$duPt6Sh^y2W&Awk*9ZU<@A^^ea{iB6*Eq%MziV9$)VGs{60*Wnk)PB2 zkd~Fu7)6$$NgaQ^^fxv;mX`gF=`nSw=zfL6@bRyQr18>(`WyHUHo#Zufx31GH-hYG z;@++#uUf@|+721}iKNEx|E%o?sL8lg`I08KjvW8OldWafco=b`7WdDs&bhBodg*8| zQnV$5>ZS<HwEoIyl&(bY-=UqTQINCKUJwoRg!5mJCB~A3 zSAhq(pCf2UQXY(^k}`>wh5zyxHz|D?w_31?)pAOgwy2369ftRF>E(JWqK!7x8dlWU zn5?dxZ_vwWoY44QH54}l{K))VX2Hz4r|4q#1AhjlhrgUP?mW3EE#Te6{Uva(HZ33R z^WGDVfsw^F6gOPdU6wV>&*um;77C`t1qjE4d|Z4q8sAfZ$^Sn(Uh4mJyl_4`Uf@^m z#_=Q$)E#}{p;1|lafZhYjWV}LCVuV8xLlR+_1ToFe*W9mJ5Mpv6hYXr_2_n(u)z-?ac1oTo?M9u{ zzWgTimGyqS(SkQ-cb(cd>2G<| zdiHx|S*u80V{aA54NHnGOju8R#l;xFm$c`Xl^FNq^+qct6 z>3^{U%~*L0+ODfuLCQ4vv6Un7#3P%-`_8e_pFRp^^!eFU$+pOlx z%Ja&lF`eyQyV2h+Z2b$!l?uedFvj9&jWvth!0heNQm5jFWoY9KqHGz0AQp}j^ZHT? zQ7P-gc)E1pLK+L_kpN0AgMjNq%G~-v`R|6iF|6iasRoGCe&y1DrYM2}o&v8GSQ2G z3gsa!qW=(D!i5ysnf<=1S!L0E^1oTW6NhoRYD zqNyXTD3E(>=hGtBP0^rFrcKDsfoFuJ#J}L6@F2JJe6j-*GzA@`aPH@Gqi6BZgl8%OSf(yi=iJVOXqZ zL?1|M>}wn2g8sfMIs~Wa{(_H3h1px=okPt^oNfs>j{l1zf(F^}45nJ|U2>3Y zvKRO}Kr0K`=lefXim02twtYE(b>11&OuEsrV^Ih6Dz6h0O3YDH;U%qY2Sj44{Djh55Ax6y3lp9Ws3I761b52A+|8`td3b zJ6eVIb2t_~V?^imrh22*0(Rp+ZL&ld@29xP+*uRx>^?Oi-L2^QJdepG0ew98v*}Y8 zlY&-9vsqrJII`v-geDYhzcZ(v7bkMYWMK?IffR;ICx(A-sy3Mg}j?X zrSTtZ5$^jQLz+#Qri8rT&rg$YEae*hS{gUK-*3NrTpa)xw!nJUyWQK(N+b?L8iB$W*51_q~z1B?)$h9d>DVdsi~>{<>5^>aTo9V(VwYm?hgKNq0gTM z2eX0TrI3g2(AK!}XD>l^o#*I__e-Yf%51Nfoizn)+wNp-ucnkiL<%N+%GMFw6iQYc z<&QB}dU#Z%zJOYpbF}VAUt-)8kzj|wdo}Q;`+hgYB!)5B?Rm9-R((M9!|&o)&#G@6 zT0Z%!i|R4|0C#=M@5A*8JNsK<&IyAyi%rR+@3iaolYWw2rU>hLB}Pifz5TG|h*-+0 z4IYVv-lw@+y1F!Zxj06L0|?@;^fqrw3X}O<-kErqOh8_eno}NG9|ff$)rMu6@~zEb zzi#rerE>?o`}Iz`>cRWe(hAc-c(u;Z^3F160l%m$k0hruK0#}H&lxG+x-1XO=6xj9 zex>xHpmfgb^;q!~_Qm?k#m&XK*PHzM)mnRfcNz40uHUroiIy!kT=FkcE8HU|lr*hO z--xL>Nx(Btuf>raNjd-qM+v@6_eb~n@9KB<1xqH*!1Jdi5>ci-KApX(Y@x2lqp^dV z$J@8Ffj=A7I>P}E-A<_+e;h3XUg@hFZWNe4?m#|LgK%&cEH{|c!3^l zudwi6%s~4LkT2H8-i(+wKF|Bf4;NyS?-w_~IQCoL(op@Q+_KgnK2xMRgAjl8gO}_5 z1J^}Y$8$W)PPdMd1K&peMYAAqe_y%U?DBTAl-!&RfS5A6v#Vc*J|?=lzh5g&jaC=~ zT-~}UO&e8b+FfrBI42%1hCddHx~{grVTQX_F8zG>=w`=o%)g2bXCe|>Yw3G`Ph-Uw z)!N`$`iad{eHH+7%XCvTcV84!(jkE9j^A>GY^p2vWpe)pc#gimI<*CS-n0F=1-o8D zIxGo~T+CT?MkYM2q92%afeyF#{n1!yz(i8=CYIxhx_a5ZZA;Zjb=-Egl$j0l?3X@^8wn6M+^=zg+ z{WN$~CX?0Bvt{7p?1bfpXpX+9k3M21a>J$lIhJ~WlIm2H?P~+`k8Us20&m!E#>QFw zY~8*?es5J{SJygp1#MD^H_qtjr%@NhnM zU_Y%rJ}^~B^xkqkzmcS|IXK_-_XozV9L>2AgK)&)AfwXwE~4Z3pkXsuZjr&P^2{=z zqgBwRd|t_MW=_|en=S!lA6gVenW5C;$TQ<&!?c><8_W!Pe=Zw~tX}pg6(!NGTpa6U zIXYy!sIoh{uBK>?8!G;m*&T70Wq5QKi=_}26H4sE`#u{tjP%`s0H+fHwbkq44;0YV z;?c)1A+dNDf^X^in2LQpLnLuKT+F3vvAL&+B7MsVdL>u%!#~jel(xsfB47yab!*C#S@ZH_UNd4O_ ze?;-ShxMY;hr9i^dcB2alo9d5l1t=5OwN%6RAopS-qQTWlM7up(m&1- zvLdc{7fs&WKrd~^owTlXJ$S(pOLr#Mfx<1)u#|hJh=7Ncb($88x;EeOvO9lOW^Li* zK3dJz#ua@WeS{`EIc`Qv%J?Qi3oMOn=iqID2oBKFF>@j1e6VJdg)>tU#39mvlj^TY zvs-gDdPMLAibSbsM3z$`U@rXYV!Pkz&M>mcNgeH@@xc(>%I*=+DkcHlaCkYd69x^`(a~_{G$eE}}C#GHsjN`_4dj_WN0gc*bnX zadG1owk98eos5FlbRst`W_Y0SbmI_;P3 zKJ=4>_rj}V5)ws}&k$RH5(yR-YeJ$UUHzWZw-~2#ajURC)O4LMByhb>&W$!Hp2R6z znLQJF>}oR2-B_S+87V#O8`sNIaCK0;9fymeY&@MIv}KU zpPXe12@No%oS8AVd^I&`e-=C+v2BWQIxJlD)D82lk!dw9K#bZ2u%mYCrx+egyb^VB z&{LI2@HMrfdm<~1_oSw73QXf+8F*%}?r$IDI2$&l@W+q7gJ>wO8DYGm8>jGDHR72~ zA=VmM_33*(_M}E*F_>v3m7)qrt3h9RW>mMNqJgczq4#wv{%&MX{R$q8rlP%+z)qBu z>0iULu?(sqRX>VP_tfi>^=2bTMRQX8B|A)*G<8rTC&<<)p|1sV$+pD_N+L}au!fQ# zTIEGlDe2-yr&ANWSqSjhpvor9pEZn`;Pw(asXY~ARqyjo#h1qF^_Vo_ON>rYC1SsY zFax-XQq z`|+eup+!nQ-HfaJ<6@P+4Szm)0VSoxeFPoUnp-eTuLp9dz56k{9=MvA@aQypzxdiX z$sHk&9XL`JjJzs*?lW(#!l1+oq5&dhG$VSv>m0}t`AzdQ+ifY~#6~(9MI90Zj70?{ zBUp399g$;9giSxNEc-$Ak9(%Y=UkC1+J$0)ire$+?umACK6R*Tyu)7MDE-0$fA*dK zsa}`m9yJ@VH~m*xugx_N=Oqe${bMyR`g{-dP%8(%EyK~t#cIZojv>RvzzgPB8(XQ^ z`|1e!kOWl_FAkp90DV4`84{BM#9dBNv|!KU8AsRYF^g!q@M8#5E){KtGWa#y)sa5- zs!){)_s=yO)%-A3YK}KAgma4s;#CMc$6TXpP;{z3)M@t3dk*>X0FM$?2OFAccIcbj z1IqM;z&a!Nc_9zAR%&bV$5{IUbx0BN zS@@oHlsR~`MCf<5g2rT(#TFWulIdU?q0*jGo}`7I(g42diej&C8r;VOLFzF6TMVCJ zdc3w(I=*P3u^ZAwJ!wv+Ltaz=oqG-3CFMyDw}g~epo$0~?48+_EyqFRd>r`MCj8|R z3Xb;@Zl_xtr(5b8iC;!+a%TH+*8eY3XB%M~>|90fuW6&P3AeI9H6FbxxNXdSI)6o! zYT}RA=>Io9SK9EZXE=wRpg;(R)Dsx#lQfX8K;fSxNh3* zLZ3=*qUVaMyzpAu*DEbIhnZ4rbL>==%kdPP*&WPqgpZqR6Px0vP4G$v zy;v7%p-M$9#*$u$6`V2~Ly%UHpxlT#c!hx{6lXVAlWW)+<_cXCAVG573oqiEB1PP{ zdI4G>{SxQc4jAq};P2!({oaAgimK3R>iN2l{d+nk)85A0r+wLA!!)5U&g)1J(;DPC zP7rBJM#+Pos%61a1>Ul_=bD8vE95GBfi!r_6<{l`V%#7pjZ*Jtl-^sKHxd&-BXBE= z-ZH07(kbFGzy^1OIdg*bO{zNP4L|4>5pEA=Ko0~Z!kc5PoS{Hz=rTtt$3tBJoW~Hp z_Qv=?ZgZ2@dJCes^Q%+fS7@u5;y*5Nz&*(7)yWQ!6P45PN2PyD2D5?00BnWtfETx` zy*?8RfxA*lOS#@sJU<7rs~UyD5JGSBKfF;2G+}S2eIf5YWXBiX0Pnk(3;G(9I8 z23H5irmeKy1Z$!6{U?AUSeQ?f|D)TIJAH*}Lgvlq&|>&gRJ{?bOxRLb!=B%=KRMyL zGtnG=Va!5gf-l-uEiC4u*k0`^6!Xl*j#E|Er(oJOUyY(2QtSy#A>Q^1=h&`Ij>WIE z#+jwcSV4$je=K|-XCDvV8(WTUhTb;}xV%x|A1t~X30<$EjNJgcpBdFBB1_#bC(+eV zQ!m#~$KU|&r9{Q?K(e#@Ycuvnx97v&janol+l%`6CXwp;)5^?Wo2p#~pKlQ)kLGA6 zzAmgVxuf|?2s{NQjx}BP#k-%ibqYL$FE0IgPfTxgWc?&*q><^qh6odPMz7ankAgdX zf`~CO60PA+Xn+TtmNWVSeM#~;wDP2kN=6DeIc8TeTEY0FbTkWnZZ7v=HhO=yqu6k& zgrsLKZ+;W;`VR2pS+jT<4E;jRkV!wgvYC0-6ttIW`rQ;8bqE7Ip!Ma-cug4*jVqrg zRH7a(Bd8q6GQteD=~Pa1jTqZDX5Hg6XPv8a5@O%5eT?Hj<%gNVPIoir%T&mB&usqH z9j`XV&6Nc$A;T96>!pV;(HcH*MKXy7<&>Wd&6Yt=9`lrds>$ly^69rD7eXuUg-oCd zkJ9Kd!Z%Z2UWhr|%fA_5-9%ySOI3>@44J(y?6mDeI1is`pQF5~2e0eRMnZNa!yA3K zR(rG*LvSjA-x4)nH#79w+z!xIEfYMM{Ij8QYhgpdC2_M3qpqTl=;S6PDRF0b?8s)< z0@bhiQ7RLGe8-6EKlYz9x;DOi&N;Q#{lqrKBB4$^UFxqz&Df=984+t0pf+-wsEk)u*)$;6jGzb>jb+wA&&>TOyP4x0h6> z^&KEdzG0PixTZ%9r4hm%wZ_uI?lSJ^(c02KL|iFNUoHANr%;(%{uD81dTTa4SW1BR z?o`8Md21DjVT_y)A;aj_J=X3#CW!?9X^C}iD`_=8I^VD?x(DV<#|o6oiX>9a1GdPT^ENUzB9WVXcA33uj7vJtYEHo7s+V?AX3a1x z<@8q~Zn{Lre{s;35%}1+q?ll+*|?!-p7uGvHT9u-`%$x^&T?b4^)bk?@j=SJA#%eJ z?~I7xf_a*+;ScMa+Mz3rtJS6U6rHQ<0bjl~H!N>ST7?KKh4zjl<)e_~Y*>fbJ`W2c z&032R?2SidoiVeIZTPllE`7XhDQuo&--gsKGMk?C#=Nq3^mWVYc~bC1SaA9wsrb;Q zK-k&Vp&}l0NJ3oA4R-1cWUIt*-FqiH`un(#fq`U;sQmP&HQKxU&}lp@?bA;%z;vBZ z;##JIWtTo@Zn5IBmx!{JOA)pvS{pP@+Ol?Id-PxK#Yx{v*I0;~;Q{F+7q z#v?MLThQMAMixB5A~fz%M|-ot1q?v;{^9Z3vfPHy`%=^Jn|aFWb2wH> zRUtwV9#jbC_k(20#eal9l`xcrp9p#WXu{i!OC;0Z@8=lGzA3s;u=hn~3P;Ri zZ212q(CjB}8N_ZZ*(ed$c2G(-3qFKA91M-MdTPUJvKDs=I0NMCHGtOW!`S#9vZgC%F!McQdKGygW{vm5T?q3At`Crr@xmk@5{u! zZFJVT!~OaZD4|nUCJM#n><1IP!e9(|yfw(deqv_2hkig068g?AZWjwFP7<^bW!&#V z_O!W9=%FKeGJkfpMjF(#0Xh!3thu9d=sSD-?|OEOKWXrzi0*BocSb(m=J6aG+~Zc< zx$1Ac`%GN$h7qQ_@q4Fxx{~V657oz{PymfCd?c{*=VC(v&}~i#Z}xuIDYzOde}B2W z-?kDLdtM3eemxoZeV06oX6gJdKGQU}B)J6nezP(Yn90OB`3#)Y0&P6?oyWXtE-bL3 zd8l?|SpF)se2c?I;%l0fvc9%0%mNZmP)X6U?l+`EW|F+9%6 zh|lKM^@h5z4;am|CeSpQm)#b~tG;)%NEuf>sHERF1OYNZD5mLkDBrR>QNEp07AGL; z4`qmgIt#yR6BaSLvRm*rfgw^fgXY~3*8>hT<)lvEo7M)k&NH4##n1OKiI^XD+QqHa#o7(mnpbH(58GA@>jj$_w$B{9 z?^M=Y&sW-K-s&2i6K~@2^{-4u^Mlnh+Vm~U%`5k_(B(6-zY`8*RGZ5z6YLcjcAR%H z1N;U8pLKCLr!%X{tx`Se*Kt3kBZ`ppRZ%IY76GB15=+#hKjs>5%(VCnWilry^k%!! ze-8;pdC71rlBE3Nz#9~!4sC2}r4~v}0)(`5j$8}cZfv-w%$76bh7LnxX<8ax*12?e zIw7e4P8Pbx3Z0}$k@6{)&B--Tga0g5Kq&jJu>EO9eoZ>GJ6C><${Ay6DehXWCpH%A ze(mF&QbG&(P|lWSpD(H}=sfy=BzKMUlt|)(3EbxQoFu|_2nhikbJP4~hug2w*zZ1X z%|uvRiiTy`^TE0u)^?$hu86R@?dL1%2ot_clX{qf@!n8uk0!<2|a!_k?_TPzzP@xZ|$;;xw^n@tB@R`S&8uNT?yZ5{}k{qr6em2xvgLh+iyH*p| zSsEKz3I_`Q1t98-b-4Jp)sxFiAqj!gZ?GC%za80NXi|Sg%2u|*A5PeaC`H}!D|m3G z{*EKF)>i;Fj6~t18hSJ2T{_k^2fpQfW!a|gxj-ydkv)$sIY48vWGr(ahl&`DO&}{B zruzU5x6a%%hTL0M-4C!+7kxSvdq_%v{SmGyD10`E%N&KeewFVbTND)<)=4uqo+QTeggxT2)cK4*R@eT zl`+$(4#p^rr{aCy2V4{*P6xaDWDH;R9ZXy?N@vO^oTfun<**OXLWJUC-m({>B&&f`BK`E~}w5T>Onld*Z z%aycCQmWFy^#>2!kmz__koiud;_0gl^?$&O&w;%b&x8i`JK1NS6hen$(3(&dKR3va$K8!P zW)RXl)(QWMQn;{hbPW-Q1mB;*pBL{Isi5QSYaz(5rTH_Y>nIHf_F{Ob*u8^#JB?FZ zp(%)^EjQPfz%J00(cW4ifrnoj`KO9l2oj;NNryVnpO!NFlX^6{)ni{Em5sj`^mJB*QaCqL%ilcA#_R_6o6;kN{h?bl$#`EO zL3pz+2C33F*9>NO1A2keRPlV2qP-7BV~4H-$=P0zSP*P8!O5myAvpl=9qTY+o@k>q z_;q3rONW%S56*WV3K}b5ep?B;3MaqlsTbR&XUGy_3B8bNB*V8MKt#*^ikWsr=qTlk zMqNUzBiuoX19b(r?F>&HDufuCEtyM%xP5`Q=Y}Hm00@CX58QAv;h@im`~Vmw(+Grn;NM_8Zx6~lg0eBlb)7A73m=Vu-N4Shi)M)eC%K76O%DlVpY zB37>8jBU=YB_`_nCdvjI=HbFi~WEwMIK(wk)2Lm7Za?6}6m@~B)Cax!pcPNH7&Fg$ zqQDNGT)`$nQz=eS7-h@qDNIRqNz7ZTsK@PR(I?cN`)+|&k_~KKL90)N2KZt)99G8| z2xvJpG@q59#bVp(cxIGEZf(U*ULOv+wSm?C+wf>hqM9+2p#_^q_rEV+&V2l)N&d#W zFGKZk^lm^`oIs17Q?7szzh!|Ml{9M*5hGgQyJXp3{G!%rd_U?(tFs*&4XfKT?0cN?JeFy;uW1%|G-1at#(Th*qc}9%T z=#8j959RjErBBtyT~sm4Xm1ruf3FaX%0|Xyuq9A(rc9@9v!wYmUd~m(H-Fc!jYjik ztX51s%#@y+h%tcsg8|1g$pgV3k<>V)H1;bvDX4m1czyp+(R9)9?sH$7kQ&Ap$nXVR zrDZjhpf~*cPkjNNz6xtHSne5pJT*~qraC4H8p+_$@Q_)r)ID}=0;slbQbE9?+ZQ^Q z6oMiQaqe-PA-FU9`M7~kdDN>}k74+ck`LMYs9grBx)CbB!y=&lonBT=_zd)|HotWZ zM!uh^!NG4X4wjeBIAFvb#Kzb6#twOFB-xl)pYz=-5~you=+-GP>h&L9ox|&3xKN2@ z6RSn}>%Zu`J|-~ld>FgFD)j9Ls$+~b6GT^9zp&)nFei$N1V zkO+ar4IdI7E`oWkF@)NcCL?#{nb>R&Eej8U?d>uo(vs8*cj;}vW4D?P&O&bOYxaIr z#IFD2zv|7Rc{b;Lfyv)6z2tMzoci8wNM(k#%0kK@NCPv=<3+#LCnq&-JQCE(yeDk=XHq`awD z;%@od(>5%?NTe=b5zUA%mXJrF*o=zE49hF57hVbHD=ZyelIb`gnyW*=?)}HH2yR+l zSy+@K>?hMwl&ZFzV#^kiSDOwnm zBbdonXh_$k{lf`9{}+Cxm2ZpA;+e&rGudJ4EJw|wbcp;|yO*ba@g6=>*^*NR(eZhl zM#v<5R3`Rm8a9ZRiTl_K%4JQG`&Mu=eH~Go`U~Lx-;=}JlSh!qo7>gJ0r0%FJ@%~X zEci#kvX5z_=*G77_>{Wss6NaH>icHA{ub4AN7L}MBzo=aeM4ta}vA7ng@}n&G zntg#+vYKn1#C_kP7~yb@TzoGK1q&eZ#R*OpGliD`YC$(J(pVL^(oiU!>L;G0Z#tzP$&BQ?(og7+bj^6GdT6H z<;Amtm8;`SXD!_AUBa+ug|28a3zbWBAIu2g{e=d&Y2aeDAC4 z9UxV^d&Q=^_m`$X*8}(;&u<>5**23_Ofq^)1G_2IMUX%B|6qg?5Qj@~esP$T0Gu5t z|G^QA15yYsn}rLihi;!@qR&ommUz?JJzU1`W|f+~-EWRxq?E>9+WLQoc>Bn4LxEnM z?C-DsV13rh-}gZKq*5ttv;`ynmZ9gs7#Mtsf%nix7iIV1hTu+kPKDsUcg($4+ zMEv!P2}}leffN8*emZ-J%U}U7-Y^OEF4KG|%o*c5h@GqywsK=xALATs(ReMD3gEs= zUW^r^a8~@>-jL4wJ5X(E%T=(LgqOQ(P!dAi!NVKh9&>>Al)x%)&~d8laQ5PEADc$# zW7}x1kp7v_!MTSsMJK*wOwFH0Kyo(T+665$wWO?V4rB-1>1I%W2C=_ByAiD)!%NvU zqOLyOw9(9!KHOz`)PFb-H>k69P-8`&!)qmo2N|Xx8iW?%zLg`6^}OFog^GIunWduO z<^DgIAyq51o@rqJf8*Lh9njaJ>NXF+i= zO+;c@C?Fzw4gZuejs4G8H|gBvMNv-;aj*lgGrsEYdz11sEIJ1}<3v+zc1f>ATD+L5 zSCy@+mdsjDQqA@QyTfaXXg$d~b)O*jXg_QSaE?zSRGN6~v!0mC3}G|Fz(79|PH|6) zw2!phbCrl|7ulao*LHUUsrm%|sJ!vvo4B&%GQjC3ahA{b1;azePc9rr6fIz+cX|4t z0z64&&;3UkmHj6InNSkwh@_NEs${z$6sEuDnEFwwfs2-Ko9I_)OB_toG4HlT4|62X zza}?XQxyNsm<6>T{Ac~40@~O7Qwp?iW|fQHC4X5%>Y*i@nj>3biy5V=1~7_geWj4_ zkI3L!j{`0=gNP>TwEl=n=Q?6QKd~qt{ZmvVHi{?w%En}A5;Ga(4g>9zj zAG?X285x~_B}a8$$c&jZE%!NWrCXl@_>RWs6+r#}waNfV5btcvnqn$SLuRp27nI(YfIpX&OiT=~e#I^ zwaeyqnW5Esn)E7y#DyH?eG%2MUb)`tYGNI=vEoZnf;dfhScei8LwDYuYS+Xyo#xlc zz$oPtBLmpUoINXU*IYgVNP`AQ=TT{gEZmVR`G_Mpfz~Rbn!Utnu>P$GH8GypFG?`n zR0KTuQ&|-~Mj_C>3Y33vLX1@6wJRlZZeVEBLmd_WCu0HL!n0Ey5q(LX#+j_A1m8;b zx`cZc1!8g2^HiaX=x;Wpm(M{$^cn5pAe;2pT@IEyQ!Sd0%VIF|o?jxyl#9X8d%~m^ zaRh|5<|Z;8aKw-@d;_Tb<5^f4)p$SVEAZja)8O2DXNdf@1>fT+!N)^WZ7G?YRPyNgrbho3a&u4KMZJhTGx#-$Vx90j%Iz0fkN^lb_(*nryXX z_HqKKRR4ei%wFnHRg{kntMJR$WIW9elc7wI3t`FbdPy%eMM2dAk$LqT?LZzCVm3_>{&ABqUwb#(Th-LZl>xh7uXY{AC@Sb^9W;M_ z1elA&8`zmRq|`T?l@=%GN<%UdMV>oI)y^2DD%uGI) zh7<*U)*Q9gBMwB2QbMnlSkH=bY-%8{g-p`W76Ioe>jV);w$K|H6{FPh1ES8*-r4VE zl=k50c*|>yceKGQkr8H^B30RHUkOn=jM)!!;bS-dwxs{my&CgjS`u;Y;P%{quT94? zW0hh|->ykj1kHXFA~2r+y@5}i0@_=C9$^!yN&$b)J~+o;_m>ynGas-Sg~i|S^ubAO z96ZsJ%d%^Bh_Ny?KXi6}5&Av}|mxK;1OyL1A3EfmHkc#A*(hpi`36q2%LJ{0&CmHNusQ zbb!!}ATB0W=@28^K8n1lMa{c`(YY%-{v%naYU|3D@0y@YF&h>Q?I@-U?leoson21A zWc#P`UeVycvG$J9mBrh(Z*1GP%}T|#ZB}e2D^A5m#kOr!>{M*qHg0O~eeS;ZymQ`t zx3%|Ww6SKJt*zDO`ZD|P-^b`P`|M?AoyzqqzYYz*1=f(@dWcTlzlHJspDaYm-O1R z3M1QbNixSlHteDB%20>fr!q&&j!$aUVFA&#@hM|)dd6JvPmrz+uyj)a(3rTe;lWm( zS_@s-!h-^ZpK&-pnvJRH{ETs{i=@UBC9*Ir_N?vq9I~ql)5Frg+yE-dYM6&9X9=)a z%$^;u0ho>J!7VRj<7vi`Ux79$cF#AvJma34WWSPSCb_X$&%08ONI;;>qOvmHgdx|< zwZ(XZzBO;W{v5`GwwC!0FuLmazfkcj|L-augMslsMEt)se8OK1ulV0+c)*v4m-_!z z#Ai<)vc-X-uCZZ*>C0Z^re>7Wce$^6&k7eEV%Xvu7G|yIv6Bhlw4aqZkKYskHWIAs z!BU7xooO(S5{H}6B7Uuanf1S8s0; zOErf9*K8s?%mI67mA4y_#jq|8XgoQNZ(F-}mXuGq`#+Q)$DZN6=FC3pVA2y?dufIx z)@wm)qmomo%Sw15`VS~j zJ0~EFn~Owvak3ZK7!kDq5wo{seDa25aI;tFSgA(9i*qv#%Bd_{14>IZ*>Nxk(HLf5Q>=`Wb z>?f$jkw=+I3HWqkF1Wt&GzI+C@V$REe8886e|$mZmW-!o1l)LC3C;*9WKVL>)b6iW zjW!1>PDZJ52!rz&{PZ5Hq4~5YE;{p$0Vu%%(ddcS>~O3{km_b{YOyTZfWDVwb$#GrV@#%XOL= z5GagKKgIcB7c#?>oDX$x_|kWFO_;>kenG)EZk2K}b`((2a(^q3jXThjU|kPNP#0je zflTAfR^KY^x!voT9rzUygXV3UzG@7d(+n6tSM;0KzBpb4&l{6`Lok?I%qTj^1U@uy z4g*rAse@K_UY7rv+iHg&$+L3^EvB3yO2Fj=ivupsnmyg#lWc^w!#!;w#TxD8F0}_N zmpl+6bF`W$+w)v%j61;V!;)FV(zvH==Xp}nqT*1xqcl($E{&e@omB@%$E|6Fp$L#2 zur-4so0lb9wT!M$JU6)cjUj4^O{wqo*Cs)+fA17Yk1BdFIE{-d2Av+dPEJDZj8+Xg zEtB(2BaU+%9A?#*-xt3qgjq$jP@f+|ZfgHtN6)Y%YwWbOBWsKhjyn?La{Lacr~865fo0EJa?tg%(4Tue4Z3oXuHCI8E9#pn58cTAS$>I!->0vUiv zP;*TlkrJZud3U^Xo-%dFXrfQ&7qHa4U;cR$ig*cl?wj|dCm3Pxc7J|(TSu9pr_Ytx zGP*x3a%iRM<^y`Kxk&S*`*?aqq5{@1R6JmD;6dNLI$EOK?j!~TvL01(!f|0|Q=asU z$YW&z?N0Aq*paus?kv_frz?#skB|(7IE_J2#vMjRQarHHm^YZ5CXALn-R_XE7rt&- z&Sr7M@cNtE=3-xhhP63QkP!yfq9)2|v{{ugu!m~DV^WT7FWjB)`nZ=f67|lD*`H3G z7AX{OEV`Xc7{LMlVKewiu;z@|ihIA7arXR;R)%1ISS#_ZojZm1 zu#3vW{Wcsim6vYfV|)I-i7s!w_Cnh>iO+fcy!PI``QJu^l+!MGV*W!U9+_n}sXs(7 zl2{R!5T5n;!}qb-bJVvP)jo$wWoyf`WL1E>ur&TG^QEib&AW03E5HFi5dtOWy#fWF z?6KdaiO{l(Q+-U;s`9EbDHWO-57LUY+P0O%as$j{n-pXS8t<&qT9)1tS59?B552|9 zcrRUVhw-xt_Z-la#ER_kak}>ZYX7sj5jkZRu6s))OEzpuHaynG5&2)NWlDTupnxL{ zAvk7(hW@kvZ3v=Y@Af(CXUcGuM_9-kfb~5OVHwjEBBe1Th!Hr*hjVmg>RwE69Y=ms z-Gm)T2DFC_=*)y0V(XU>j#N9ln$hfM<-b9M>cqFPkRNc&qo;Sg9z+a9P6ncQ-jcB+cmW%spc!>c z+^0%ZPQE2;+X=t>?~MevV)5ntEeVs>@BM;rW@8eedf}aqg-ej_iP~Z-TM{2`fNhCF zIgW#kNS8)jXA4<`U+~cGrCG4bUnT*We^?Ame~ilhFJlZQzfk90a4XmYenkjQP3&FN z^(vHSi?KmDV;7N+=amPCrRR4}6=!1^=?38!+C42zkQhr3qR|qKkdm1yGvgfAW``*8Tc|#MEqp~QvsdU^f^0ifoSg*Aj$E9TV_Eu z8oM=zX}FIg#l<2zV!-GV(rZa6?x+4^J^?dbEB*j!So%JZb>|Y2l3#Vy#O#5&ZzlN_EGt}`7&p}7N@HufQ(_s*(_vicn^+av zjdV+R|5`*BJHk{?dbM}oIa&gl&Ze~#7a9uQkG|HNrp5F>j-@a-MjS|ZI2HN6-S-JyKaKCic58413oLXES z3Dbo&bk1w92b#;BgbSNA|3aJ5L^gf!Psy&)%v?`w&ign9y}>&K_Oc@mFV!z)siG$p z>gBB8#4~O`#1iU%=;3Hkr`h@s3H)JbN77?ymX`Ii$x5ZJxG;RAJtxgdxh>;bqEwcdp97Oxm`EW;Wp^&*oBqI);sk#KK%x~sFd zQvn4cD{@S;hwsS}E1uoIrj^RcWEE|VU)HiQ7zB~P6!YzJIOj<3Pp1&B z=wtZB7ZGUV$N4|elbuLA^L#!J0?ytMBP0LJ7;kZogY z18eB~PFquDs@mRo(#8=bq1Qx^;sXsm&|-v(j=HQH!5`ZtZfIu2P$A8DL_oJccx&D7 z@OSoPdKV&@UThud=S@~SP750}1mfCB+=A)D*U($Pr0d>?K(2D04u({m;3l3Jl#^N`=-Jv4h@)m9HiHNs)I7I;frCgGiAxRhbO8l>Yn44s(z( zz5{d$C9b}~{iA`1K(NWO$GXK6?Yraxl)YWiJew4PLW!11sj|J9kw|wP&vh4 z8;o7A@A~WnZ5b04r(Te^cBHTt8o_viz93qj@m1B~4FL~OuSHW0He8Gi17j=%)-~?y z!aBqNlz_>U+!5#m>Z=%kWY#hfqj}#Ci5)TkmUejYxFWOgg&G1#@hvQ%~m!%mF`o>ErI#wLZhKq z+Yn~VL8tROXRLS6s1jN^9bi;*_VXCJ=LTE5Kzw=rl>7dRR7}$E{gYIT{*zQJy3|d5 zk&3|ojZ_o@lJWmVDxx{*w$=!5hAL0$(TVYZ3`#KVm^e5}HOxIp^@~s(!}h873EzhX zRsnA$x5_cYx;AKml)&#;RUjVf0O!*5;G-oTTv0j$#U)Jh$(s@$n@oG{21*79h{@to zvN$2)eu!C%^Du1Lbn8=Y2l;3J3_`WWv-%5Hw?tZV++8KLmpx5tym6`Syv7Yr&p1JQ z3ON&{?077zELeX~=62DIIfRlLDsTfPVekp^N93peK8*M1n+?=X}vi=a|)sw$8t$54g%+dFDwx_wlParM|ilDk4i5j5Wfu^ z>(Fol)rlS(rbEp#y+v@R$6WILSB2TR&IgDFuIQE)aQs-lw*f`4Ar~lcxtC{rh8!CZoer&u`Tf4arhQJEqiKd ziZ;=XkF`;l)pQ(-3x%|6Xy)a|-avm$u^bwPH390p`CV{`ExE((bww?wsMYrFcuL?x8 z%$a+l32eInz)HejK*8#Y2n}(~DAuFTv^Ee~5JD32rj+l?aU0lABplThf|OA+$H(&UtBkm$$%J<1BMs%x}e{yM)**CR;u;A?<)w(=j#TR8RXxs z=NqsJl)bEbVt08_KT?`K%Y%lP$~<|II6x#*De;E^B@Y=}$cdJ^0|q+omTK(da^_QM zIAK4w6Qph&{E(HCEZpS~$dtXJeS(JUR#CqGZe50M7wi@rWJIp=B_~&Lcb`RYzh8Dq zo9!K4r;lOEEiSb9_G-14TjH6j*7J&Pyf@93zXK;}2$U*qY6+4bx!g55QMVAkCoQqe zFk|BYtcV6YH;i&X&*GYuEZ3Vi{yPiAc zC?5!XOzPK69?~~z&Y4%}^aWAlbK~m-E3B33{}>?qEY)&nJzcl=Wei$u(u%Eya^3Eo zn?*KRq+-Llag2@y%8v6HZCM-$(Cw2*tulH7MEo9Emnpot!+Dd$E9MbYc1>zbtrXaT zB*8Po@O&62M68 zbs+44Xh5&ueCs%>qh!d`Eq1iuzrfeL5pzDFn$ar`PGOf{P)+F#L;K2}bFt^Essc4m z$eb83AZ1e&P{}y~z&EGDg&4uRt&aN<`by(+G9Uz8`po9AmS?gf=abd^O! z$Rxny<7>C_e3(9_|IXF_dgvd@ad`dl_BKDQ(VaE*=l8#C=L}sP0M$d(&xQy3h-Ub` z=Ig3j=moWH*R$iG4kxr4O>6Q%q`Hwx^S}%#nnttV50%F9Tjo;xz~)dK>j-@7b?ZrP z_JAD%br42r;BnFjLb!!knUO?Uc&5TgYDZ%5G#EB?3z}(_oKgX0|ATzswAY5h3--Iu zzKv!M&iLJ>kEF0??@}TGKd?t_7Q%Y`+V;o6yEEU_C42RDLgxAX@QX5!ezDI-SQ=AJ z>cWg;nGw_WqpP_Rn}|`9_#SQ|`)Q@fB0!~3@kOUi)Xt=d($In%2M2M`A{gtY&xiA4 zAL4$=kpsLH0^%^rZwzVAb_e83RgYmC#lmR_(AC#uTcJgvUvto`G)+Nme@rb(S!bwM z{k3W-r4zi0Qxft6SoFt6;y~||$T{FuqSEH4(_kvFWWMjWr6*gxjV`~gvQ+}r2m(e# z4Id%Y;Ayo7`;-z+Bg&k0+R^+I%iAf+GipnroH`Sf1ND~~o)pfGVZ1zV6!Rb3W6w@H zM7#|&-vReBwA~E-kHN^Bz3$o07oRI$QcFu6egORw@7JW4BoX&BiX|#FK?^ydyHv!D zM_wWkJ7KvCC*WT@zAs~PRKz(}p#Z-#*r@jZs*h?-?%^#E92xgbYY=C z3afJz^Bd_jt!+-Z(K~O8zOh)FRM^DL*UY0HEOor%U@HZ+m{HLTWIY)JT=FNkVF)a#SXTf13?5&C+xLMtaqGWQ@|G zQ;&&Kehw2@aA6e+nOwC*aXA^^cmE2FX8NnFEgC3a?cTQmB2fYHc1l!iCN{2&o?=J zb3US!##~Ke+33mlhM|7!fVY)3?>20smUsEv#*e0Yn{2?x$HNBV=$lPwMoK53h6|m* z$IUI}E$qvvTwU6{H!&1*V17S-us+q@WIs%wPdJTt$He9Ql_l7YJF$C^~$|3r6+s3NIcyy%Sd4tPzcJFb!E zNLQEhjY~i@z>$}I_bmpD%A*r^#0pL-v>p$`<2T>A31R63NYS=s2?~=jnkoY2Q`|X~5bk0Tio?or%WP8$Z>@T%u(6wYDa~lE3nB zHBnI`6dl(DCa9HgVK}LCGt?D!>1-;L#W(hfxc&A#Y+GO+T@ypYyGVQ0$cI z0hrSRhgg53i^vhGlz;@|LN(gq6GV8Gh{a{u{rywlT4fj^PsrmvMWkB1Xu)>tdx9b~ zs$X`yB7{C7Zt&=W`+F~mc6_(gjk@GVo7R9J>bY}q=-h!fo`L9t8+LrUyG|$ZB}rc)a%Pkr-Jva%qVG`T+}BdRZ$Gn~1^YgCXZTX1{%qnkrN#c)qYDZ zl~oQeFK7&95|?I_rsATuK(h;0VxPUOcNs_;nIVhKi%`{orI&1XBx@H;h_UK~c6^vhZ^g&HDow zmM|T~IRSpCG!-aWBF@nsE_ZQaynG|hJ&b6Bxo;jz zGs%e)w@Oxh-r6~anp7AwDrWLky6ilM{1u(0ZrxNyfrT!yVry1t#Ebz!*XPleEiX#@ z$Cl8aQ4DuzwDT^|Z9ZY%ag#O}(fX4+U8q)l)Y5df4syZg&~bt=x}5%@l(rZ!Y2b(y zh*&UMVA>RxSTHI8%25~Oc0szI(}L?{-4d{q5IAJs0&mSXJs1|RpXL~>9Il{>i7xgH z{+hX*tpve=_hc5GR3eCHgq@v~QFRU877WRDKC6EHgKS4M!b%a6dx4T!_dGZX1rKE_ z)z-D%k{McS9;O;My|svQq_0tr;oFt&S458Ma&%E+XvA@VYpIL+1tBJ(rPL!I6a;Fi z5*SCu;m)4qfHhc0M(rG;N7zES()-R&l*>Mj{tO3BI8RVnu(E8X(b+%eOtj!HOiyXv z)ZaR^T;x_GT>QQXDiZi?2E69=?Lt_sS9y9*NV0w5hi2ykBKQEHkc!}L0AnzrC#1qH+DAYaQ1LO!wLx*#mK>!jV*wSwAdlP8 z3!xi`ueiGsunQZ_NK~}-6tMgCy<8tcTv-STj$m3?k=gvCQh12HC{+X3&VD(6CJ_hu zAG#X3^zbRa!4EAWd^0LTqjFHfW3)ySZ45~(E7O8wFFcqhAI8Mv_uq|~SK22M{BA3u zn976<81}iRwN;o7tWjpd!2ewdyeN%=U%aYQsTveK*@PEaJc(0AV^{Sc}EMyW4x7y-_W#T8&e~kC+VN6E@sY~geR_-_u zAOtnQ5tLCqNrX^sS4RJ!ET*ZpHzqHcxLKA6K*FiYG`3=p2m<(2RVk#qK@qnc&P)2DPWBK zunN9IYe9dA0v_poPK*x|s`SSx<54_{Efjd+L^vLy54qz;h76m36O&E=-=?HFS=|9<+#oakrH>ajc|;N{hpk)XBPhG|bezo|Z| z$$wO}=w1QWGJ!p*I>SL%U9*a$sk;2>=ySdE^DxHKhaB%l15xzS-T0U&;;{!1yAy(! z3$~wk_VZ;YAASXBay0|J`~$s8+k1}(H?Ld)-!m}88=S%sC;_h~iRKxJQN`ONBFv}V z=RytKVX#GQJHI+B=C{%Jm&hv5yR|&xq11aMZQJ|5QmBS`$T2YMw)qkX949% zT;t*SS$7nfUQx6GBUmJ!k-hnk8_za`^YA33+UE2J6ihGOVLzt11)>oEok&DfBd3Lb z=$~v*u^%i%1JY+_?;0wc9=6Ioo7&b6lnBZ4qF#`do7befBbb;peCF`Z#|@q}W*6cR z^($Pb(uo)d^$#H$z?f$${Xc;EfMXRdrlC#phmN)H+750`pai#nm|RB?Z2yW=t60e= z?_FKlMiNCvXHI}cwk{|IsPeWw2sL4oLc2I-iNKcuy^~ ziMQwPU>*W`)%dytNK#ON;_f!Nf|U|?Xk1kv3Tl!nV|W`96r*P{;QSo5w+jtxp4D4H zY7atufp|I`LBgvb_ZY^2Aq@pbc&vS4>Rw9p6qw81a=-wHHH0RsroTYIK=8>JOq5xN z^o9fi7IPh0g|AMa93VgyiK?(T^Wq^g1;I}uj^~C$tJ|>myQT206>N*f67t8lLXI4Z zrF`DFLyA~CQ{|!}8;l&H`MiRU$9K?l_N&&2c)!nZ&M{xyPp+xpGJ7VQ0I(pE9 zEG>+v?i?u6gkf2+Pq0(tkY0bP%rytv+LUjx56NOEmHslW{`nXsdwn#|kCAef0)_#I z8SoCBlFZ|8Pr}Gh8OQgYmmDaG^86ObZwZZ=siHGe5#^3Z%Nng4Vhggi!x|PBw~%NG zClKz!vXjFnQ#rLwnChtDB$@(UR9$c3~Ed$8W4kB#_Z(?_B=>>TR%x*7Lz5d z5&h%+2c7jd&h+%3s^JDC4orJaZBdng%|(NgEP9dTQ+nJYgt`qEt9;E7>Gk1FR)MT$1B5I)`eM zN1DIo#WKFGv{cw4eRK|P0m=2G0==T7esHC+E9!S`hI%J6^)GCMm(j4LFhHrSjj^n> zQ0tgwl_0o+i9{)dX*gQ?PDBJFLs!ewPW(?@lv-&LSIK^cuqATjb~2+Bk+Xka%!0C3 zZCbEnK^HWJYGDnZu$J>YZ&P94qT$C`sw1zu=b6fM2F4F+MCudslw}WzQph%zU4*d+ z#;7$DBF&W!p##K8qFK%ciB&pS37h&rTO|3Z{i8^hF-Xpnm$s3qrWBmStLVm;Nh`Vh z`=a~!<-b7L;VG?bf#rN4@_bzZ1CIm1;1%S}3=opici*rfhlYz4S|Y}S6i zt+P14w=Qj4@SIAeFE(5ii;9zRoss|m!{MA~bzvrGh9yVjE4pyZucObl$!g1;`E`Z7 z`eK?b3SIbjQYqfzU~{i}rGb_3V_L;gHsZyd&><+qa<{Cu$K#!YsS zTVR;JT8`^$2lA>bpr(X*)tkiA(U8f-u;%W!!F_P=TyXCUY#=(OSuw*nLubuLln3@_ z?Dpg~x_3+G`}fs??sZ$k9{r1t-G@s+*X!H%tEX3OH~iq`C!KIxLigyHxBcOvVBr!C zyVM2zYQNNkveKt6`(SHgTbc+!k;3OZ2W2k`#raFtKqlEP`j2kASd|4lCjG1*A%+d2L#q2{Pigjf%CS01MQyr4z6K_sd9mie; zFE~KPf&bAIH_>9UF`xS(7{cibf9-$auhCk4o_OQ#aZLlEu-Ym(X^b@4xik%z%39TR z&Ekfx+!rf;*hsrXx7gJu(hUcDv?a<*lxd2)P=J3Pz{maTO$PRKsp;7JiXt9NxXM!I z4DV~F2+pRvWgcyR0a8N1Fbp$we}Q$Nkj&p^FA5n|dy!}+x7Ow~F;&8brWg$zREk!U zdZtyqAWYQ}Z4v)x1`_JeI^@tDUAScMmwa=heYV9N^3f3R79mtiLt&fqC^i>!l$J7p zQ4kHrdWGYf&X$>fI=C%Hi{{qBm|yzmI;_S~c2T+;U}E{(Gh>sNdolZ>aCZLJ%Tn(9 z5E9P=;9&xCoj<$#b1LTY(iUOwr0vlS@VVFy=XqhL9JhL2d~oRYj9}|KZ}Z;WeYv$} zV`s_#E%JT+I%(ntjALv%hba_`SU3Rys-ENPM~|$Hh+I!{^&PIbx*jiP3}!q$-5O!^ zy+OPW8}Lu?mDl{ggRj5b>(@WI7w#ALx;=d?9=Jj(*HW@ssVawmUP+T8Nv$g9VRSjv zrmQX%-TiNH7{K*iWbQ8yL-@bvVGGLt3lGEGB7ewnEc=WB>^CdOHlx^n#eQO%ot`zw+S?c^GSRTuCo*^@A=hIV;BBnKkwPG%T>L{`4avX;H}W|*Au zR0?=|FGEsetn~G!kJ0n0hV%6vf~~@L)$?u5IvXZi3G*QIP;ou(SZ&mrFivp)Seg1> zR;>5>-Z52bZd-%kf@zfyuM*N?8%Y%2JL!?WqSXeY|DE2SkA8Wkp1yDGxVAIRw; znlj_L1nh;GVObfybjQ^Z^?fRs`JPGcQ(7Oet*1?<$j*^*2v2qgef?g(cn|(WoMeE( zV5IJ)oLGFY;F}l5A9^t|mFqn|@%cC8K>Tj`a9so(FiDlyFUF!x1-?mh)$uPbjZ%SC zHa6?Q22eWXK{`y$!eYYT=VZfyEjK&lFm_=heoZ%kHan!Ij~!OoGMJC7*JF+0_HI#0 zU7RBLjv3+ER&bs6IzXwtUomKq;T{5z!l+?M2g}(nqMNGnPluoSO{k7Zl6ZbPOb(S1 z>kgv9j#1MU3$*@r%nIADn0P>f3H9-5SQ6Q}i+xO- zjO;Q-?#9Ocaa_4Xxf$NMRGEQ&97Nj6s2r6klrK`kyhc7A|7}B}-vX;&2!QHiVWiGA zv-<6r+f>L4{R;KrE=HMS&Zz+Pz_~FYheCCPqp~)!&_*)F3cQvXTA;?svylNkT7^pq zI5L>@t4a3WmIx;0gBACLru=pxoqgqv{eU8rRG=yYh3wQfh9OhYlUC)_6o}QX(iq&? zA^EUlvu2NUg_q|h@*$uGIN9U0tR1kOhM1ZZ6*4=9ZI}1;WDlb*A71oFIgL*03@YLn zaj>F+BxaKZLDX21He>`JMSoCQlGeNl?nL`)#cRi_R$T84n>%@hD^x_Oc#T-Bl z@B{l7y1#(hz0!XMYKt(9_$N1TE;c_cSpYLM6JnPrg-|H95|wD9N>|#sbis9rsz8(&%()Y*m=zfZ zHQB0j?gvgxrfUkb;7E-^U4T3+d3r0C^Zk1JpPwAIh5oRjwAx$b3JtFxfsb(KObN#{ zXcJ|#Zp2G~NbtD{-i`R2H(|3F5e$W$T}{o~A&o@8=CD3S!i89r+N}YPx)R$Fo;Z5B zM>R67YNqvE90*Q_zFSDmv=vUwHO|sTNx=-{25TxQn}Yg<5>nU7<|89g@U?DHdpqzZ zK0)l%U7)r6iL380;``aW_SF^aM+E2t1~O=dp%*Rypy~AyBkYXe@~}Nxpsy#(!EW9O zy-r0DEGJXG#>#Vf64DlM0o%qnU6k`0aPfsMjz0ba?}5(?d9^_v1i>JHITc0!7jzF9 z{2z3$z+x#v=&tAE&#Ko9mGoHXfsx12w0b}#u#f2+z)Owd078v^fMGAIxXYoM+QBkn zUwUV5XOgxr9x>V{hhW*RLmkd;AP_Q+)@`HkNY{c_dEOsRay|{Fm7~iwmiAB>-CFPh zycKgvDb`Ey!W0&5&o_6Dy0Pm~f5&GjB$f3dM9?lLOyC|>%!8*5->gu85JEqJF*sDc zeDa4EpcWyPl4>;nQrlkN*?rBRa#b~EYNGiEs<@b)R!NV7O}=DeKU?FRi=)jv7Y)@*smg$92zc?E;d(}A=rcUBs+85vppeE|_d-~!? zKf4irZkpv*LtMv1)e-dD?QW)kUZW)YKjlBBSQUb?0q>{e6oOF!Bc+TKg5d&UI_>DA z)rX+v`>s=Qe@PC6&=$v*`VWfS_k<|#mPF04M*&=*Z@`D-x1Nj}Rk$T$V{nzwC}hAK z_20vB(e|Bx%k^qFLp4L_FiJXS*gDZ$%M)0tI~Z$S(h6(1P`E1mQmL0!h3$%KGI;&s zZ8guomk9n+w=W3CnMiV(2_ON3ibH3y-kmgz1x7(GcG^3Psx85D&fNM@HHw~Yx{AJv zKq+}jIb69yT)0m`#j@|ObxuTC9n2Y%3 zx>_*`5E%+{vJJK7<|UB_L~>1ZnlQgsqqj2r1xfs!$E~(gzAsI)w&=|fn{}bN;$1AKVDL@=j1=0 zW_|hJQrC;pPTQyYLZ2=-0srE0jZ4S#pE)7V|KM?xWrTdG;@=$P^eT9PP)ox@a1bcC z%VfX^wMQxAxi*q!yClSQHs5bD(@MW0Wo)|kQOv#C7@HR9Rjqz`lcYrcL=~<)jbz$` zvtA6sk))yVZF$<>35_89D0{0Rg_hG|W*=OLZJw0KGdTfBk<_n@T8_!fy)&Wl>%3jf zzS|%A945s6(7}YO_1uGr=VT|}8|EN3y6zi5#Qb~5;$G;$KpJ&kDUKzaWaT(kC1-AF zJ(0J#WSV+^=;!A8E8wFfMIG;I8u)VMbmLWj2=|bVIA8S=a_S;V7#D0g;fL-ieCu>t zYW#=rIG|U}ApbI)lVPL9eRn5nvxt*m;-g}z)u51NdfpNvsjfscagYrQ+)7>avkj)r zl~Ysa+W0G$?sX>-Ma$L_6<60I{4p z{p?S8P#nY`-nN$#qJ^_w%qby)DgWkYL6VgcLS~mSpV@E75D?`tY4b@ld7<8bgFehh z=sj7a6x2@_SroxYXR93fcV{3nvT#1XM33D&dQV*^50@Y$dQpt-BjhaX9|L84S|}Z= zy0D6P#Q$P|{|y3sYf{{wzG?%g^Wpc@a<1 zEd#>@ybZq(Z5!{@;~pQ=8XQbVkmF9_l+-uFnon#gXEW$574>R{-aJj%&9YyjpN|{SkvMNt~Umiwh`K6_g7l3_8 z^=AZ0LULqBVCk(~$6u5Dl)w+6y23B-l(==QGBJRMDY3%vvRI%zCQDGUTpcI~Y6;OO ztVh{TASbXt*xT}8>6A<2iU&=LaZ6G21P&oDOGnXGq!6Ab5M~||wd@P_y0Es|DA;pQ z@y_m#D4Nv>JHvbr`2K+>I{Qmc22dgleVYUP)!OOx0e^+v{Fr*0N17$@qB1{N>ahkTFnDy$-NZEm4^A9$>6H!bu%r8Y5+=1 z!nM9|g6x0`!`d+7uvij;=8SA>Y_3_YeJ1A6P;=oS#vZGFT7A5Vgw2CG$BlJEM8T7; zeWNn1qSA;wLyPoCTU%rPGq^LgVWorEuBm)Wq`khgOhIY{uqZuU;An>ctuEsR*x%vYjXHT^6MUBN>n0z`WjmI@bquYVMe z%0O;t0#;8PIV`-lhh$JfomRP0P|$7_Ti>Dlim0KeE>-5IEP0h|rdwBr5Zaiw9Puc1 zKPFf3QhUWIp0L3%;0J{FXik#9CISk2A`2<43c}|hVhga#2Atk;L7Myfb!F|hLb&Jt zTnuN+%xB~oK);TdkFD*_mGq9S`8O8G!;QKvy`j*y9zH`dFqf6QuSH5mAeTk_3(8LP7F>?436h}!DDG; z_%tl;{0H-j+t^JJss>}y zQa@c#byE!--GIwePoDE&E8UmV7addWV{pyIJ3?oAkwUn`vGvRIbKux#2z#M%99H9O zlntKakbN1I{9J8l1IihkH#;^cT#O?aubTRm%>0z5^uFzGa9yc&!ZxHh>4j0WDd zW4LQtBF-n5ndDU{g|h~X0@yA^uLg_}*fJ%$28@$+Atyj(h3jx2JOvAy9_*d_TUOuW zU2axnR`v@rEgFm*s|cpd2`^48*thuCIvfry4N)uS0E&S}+FSq!iIwFdBd! z1VW}1k57SDu`E>(J7Ny~-XHV75C$YEUHW8?H=Y;T+;|8%Ub>H%%y#4ujaU#k z5cqi0O^tu<$o&E0fH6X^cJz}m^%4a=dv!;^F-PaV}&QNqm)e^2}kUCFE*;Wi;gG*$cNcIxC#-~WJ8%W!xR@MzYi9E*nlSg zi4V?To_FIhSSr~Tg**YJJKDHN_l*yzT?_BayDtgUrGBBH-?0)bp53Gx68}+qgfky z)c?S8Wv8_s#raI-{DCEd_c=8~Czf+A`38g}2VCcRsY3eZ5r>XC831tW5T+qW{Vt>#uCvEtmXLPGEcYwV~@HT(7jQzVS7ukYTZ_VYUSNbc}l*ProvtzN&w* z$p#L5727eF1sc${GACDouKpaZ7sw+IE$T~;GO_FVBy^TG7pDkUd)~Z~8eYo+Po~}4 z)OgH}CAWqF3gGy%L` z$GrYJ(La_2yj~Qq>btfZVLqu8uTQ;lptPkYZ89nregbkp&I?jj-D>$IK*)bBN@Y_Z z%9h2P&MYx2tywxTD%V$|AI+Y`vJP`W$DJLN2vO2br!ipS7MrFp z^$)nafqxLjKeqdPds3z*&EzU2T#;Rg{U$yy2}?iEATnFjG%+u?pdz#}r(04QR|Vn? z4_~#JxD0q31q0u$g&O%Djy$w484b`wIF#N$N-4*KZ=?*6lUa>ZHIHgUE=DUKERxQv zX~3XK%C{?boSUV9D|mg#O8-r9wOx&n!S&nhs=R!l5|0z4sZ4e(b@nLMMG_>f=wKK+ z6H#GDZJ@M!Yn;;V7qdGhlFj(9?BYBjcV~)y5+DExMC}-L$7hXOamahQb6xF2To5|=6*V798gK9Dn>cztdZRH&REe$Oc1UILFeCh z!XhuZd<5R@NiK|am2g1B!R9dYO~)8@-Dl?!SQKVNT8F_lB0h=FCeGML9I;3F7%w1YXuME6yjQmop@ zR_>`)wfO{Wn!&YTU2Tn3r31k()QP&#wE=-Oi?L!tw*|6CqN4hNS#-K!IAhkLt{?#N z%ERXf#9^OBH8?;+{|8g=7@SGiwQDDt*c02fZJQHKY}>qJ+qP}n_QbYretDkv-QV7S zR(17{?&_+ptNQA79OnXuBYGg4D*KFr*tR6oI}Qy%ZZbX~eK^!_haj>y~`pLqUc4^7>Fa#UO;-ZImb%Jtx zTt`@5G2Q8#g%@k7&VQbTJ@7UD3j7Jw1zeEZr;Fz0!r+qR_r3~d^ZbHN91YUSEW^um zf$||1rqA*7MM#z5FQ0K%Yv8kcWD2@G>4jCYg#iB8N;p8DAQMRW{JLtWI}KTq=X$BH z7+Zee4zC5d_eC+#svup|;q=Pp zk5MY1p%A@q3=uE4bZlk72d9lXbg0kjH2vyd=SQsA{+}JXmSi3v!YdyQSTb+Sp}xNRKWq#9 zGs16`@V45R2>hwe)2(&e?D~j!iDe3vNE)i3$AgD9H1_0LjD_xcDYO>U0i?$SPZ+L< zqM@zTss{wA{m@sQ_1EBkpaJgw=g~3#1F?R(CY#fd-jdBQ7At|A@qayVEzs|=hI2Mi zmKQc1N6|1`{L=Uq>muA~NIWe#HU$f_-g1`_HQt?_mJdfN-JYr{2tat-U>P7} z|NRbaVN|Pq@S7nVk29{&GuyJ}Z{txfMo|OK+SwyaKFKR=UmVC?HUgY1@8_jWOA)^^ z{lcr&#!k806yzz=EnMxx!CXfb5I@B{_je7qa2|W2`1kG|xpjD!QC1L1KmZ{T(!#uR z+c$6?fryT@HIN$VGw5=nzk%>^7~Mc}Ax8!7C!f9sRuJ&Q;adn3u)V+RI`#{(W@-9t zp!p2GjvN{3fZ+|lp9C<8jnR)62eTHij}RC{VT&FQ-lcfny8TNipiLX%>GWoNP7098 z4*JgI{E??>s3&`RK_CrpB_8tk_a%Pt>l@|2bN-EogyT6IasHNDNMqr3K__U0&KymQ zixk1imL48khzO-Yj*ZtqMKn;J978O~U^)gm z4H$7s-o+6v6B)n&jeW?^_9zu>BA-Vh@DR4DYLhIhSlGKgtEJAaWq_%5miMa!FC?D;L)-VDg8P+9U7eWTQ`wwBB^i z7Ct=ISt!#u71HJDTG68*H2rRsjmj=)sO;h$yDr{wMqitQ-z14G$Mf1vo5JsXVRhHk zZI=?z%H7U#MQ`6ChL&v`&A-q$3SB(V{*l!8ufzH|L-KMXQ<6xhhL$2kByIiS;{jZp z|D&AU(JFbm%h(UK{bBQBQlmI=Is%z}e-7v{@VFEvkO(X@LxItOxq!H83~63_2X`d) zekfPorTHflphcO*SdiHd6ko`O*}%~-H46){lShdLS<9g7a74;?Pm*aQGmU2?Iezf( z*f+67dP!zt7uL7iD==jGZ*lM7halQy-_P@AQfv$eJVyA}$;z_PR9nLPMK?;{Kt z7f1O=HqWX9H{G z7^y+rci+F(TdpW7ygmywc@y)?Sa93@&zIYQ56&k&)TS=lSWa4lqRHdR9&dwynEMt; z1oJypjyIXy#XNGbhCz9@KAD7C<6a72qcuvjkUx}D-Ql%NDAgac0YU?W*#y3Ok0V6n zcHBop86TY!l7lkSUipwRl@ula%^%Ti-PMj;BE}yiv_a7=n~)>Rzs;~F4Fn{}E)f-U zG3bFotg6Jp!uX3V$8g~wZ0Uu7@4$jvrAkX@3*^3-BkcUQ2G4O zTeluR1fMajg|j>UioRA?X#z=YB&Bz^weerBE+cRo*EyfSi35Jen1YksVo>JIkg9`q zd}MI`F~;XDLeJS04tAZRt%hFx^v2Z1f~wVDzwz|;_~C=uxVTxrGGtde*1}k-q=hAR zm$ftYt4Z^U1#cIk7_ias)@-$u?jBGaLft$23M7i4x#w+o^R*ETsJ*9cPB_n7_w%&8 zr30LT(Selr9#Bz$=hAwJMhk#z5Cp^NvO{eUb6~(#moVQdAR0P3=j(-e1QJ0v4jm%I zG^(pOpG#x|5OGl-2_Zow6IOAM8^!zLVhZ8zkp*RU^KQHSe2j(ZF{MGq1^a%D2Xvs^ z7SJC}sU3tEfZ+CBW!0oBVe#h~t#_i|fca1iLU)56xL6oK9A%?DEh^&iQmjKHbL_1< zaZt={F7_DoZW}qTrUmb!q>fhl?-=`Jx1*+anp6>jbIfv_u6btsHaGHz+HDWwj<*dg zT1B&Y39Qn6W)Q~%<(dgea_4wukyi_Jba-JvNBbScClewZ(+xczX(M`0fHMv(BP9}v z38u#>bA|wLYWuVzMkqg38`8(ow8igk2_jZL>?hXQF*thLdjY)w(vkyDi+#}F1ax>p zh3qEVp%0ptEI)T5Gr;6UMcGq^x;#SF3Tuas*<9=gz#gVa?D!K{TivK6#g(8;z(*FF zrc#CC8GHVs!Sr|CbY55l@^Ck|$O$}rU@5Ox5R2f6*la~Im3iK?eq*FR$Ad*|tm zY#rPSOGU3}eUahV3$cCVtu+%>5BIvcL_C@v?EDCCE2xob+X=Y7n4Y=56j!E;#qUPF z8@dlR5gZQU%l~X?*K)PTw%@Ac-xBa#%%M30_fhQNKX=hPa4~Uf=FE7ZVrRj^^!&J$ z5laA=xUl!=otSx*M2hj^uiNgwyRd+G=6$-%ot&mxXGDg?U|bfZ@$KUSHsAd)w+t!M z`CNq^5q!!L$TaiCgUqZmAy^F; zwvi}3DLd+sk1p|PXt}vxG*=;odcF>U8WIf0)>XVGQ=ge6ZZ~X4K79J*?Ro6OZQ!Di z0Xct`m6okJ$;p_H<55rRq+CuI&j}Abnu6^02U8KE-(L4uQU*kv_2>>j=*O`t&L02; zv`ROE^?GV@LC#$+#y|fhT_WgwAMJxIe2WgI)GJtKD%TGBnoV6V7H2Eoym!3p{B!lMaSm zt$TCJ{jp~s5nfMW9DY9X7$#6yonI+!1EB689l9wjgP>L*uKX$agP>x-eJQ7dpnB-+ zB`(1Tl+U?h?*tP8Zxk|xvL~q17fmU8L!kJ;q$$2bp!A~R%ohP5Z)OEtT#qVF&GmMI zYr${471eTMq00QI^g5`i6;{Hdc7Nj#+Ph_~aFVy>&gLQ!kRB-8v=+~qKVV@xo~OEc zQyzvuoq`j!A6G#uGjPQT9 zxBOz3GewI4(CdB#*VllI$sW`z)NF?1%CM?1@zw3N3=eLKfkZIdQR=DQI*TR5{#NNV})XR#+EC;1kbcxX`WkWQUe zzGG5@W$rSVq=4wW1!rSicW60X@6~nQe%>wWZM__+bV;z-I!$P^q_dlh7h3|$S6$El z?Y)iZx%%vdovCd_yP1TWk`)p*PY9SzP0c+|m@Qw@G<4Re6Y3t_NG54)NeVnVEww+& zgQOX_VgFY6bzr~kc%M=<_Vdbsr3{UMasYp(e2sz9fLv*&(2Rr1Bc0@B>jrXKgpgDF z!?({JqkFZbM2&-DAcV->A)!5KU~SIDT6W_trZkTK1gw6mFC$Kdn7n&J$I$qL6?q66 zTy2&g%mpAVMDX`mfkHYGa81k|cr-h%8|B+DQ~Mx6lr*xTn?5`96fEgUs@!e-_w}!m z%I2TUFF&Z58N}pg)K2EPOD=LALw`^*RXw86b93^Gk^6w;P*+XmaeZL*I45?oK;hu~ zo5EuPU>YH~Ft*ync+12NI89${+c+W_L5B+(Pe*BGRY7$M8LZALr)ErLuO1BVe@L^8@ejNk!;VgZB}Vlkirga7%G z4LlxNHF*MIs$#g&2W)ph-&x|REceW%(-jl5 za11nv;9yNhZU|tMEJ_H&2LnQmmm-(;bu2$ql{KfXLZN$kpo1n9bKS;(^E*MC@Q+uoG`H;NJPn=Rdav`ut&~h zOvUG(l^6dCXsUuMQjKJpO&4qJOI5OpPehc4s_R7SBE{d&Sk&YKif)U%ko1>!(oOFf zL0k1>)>5!P?V~ke5WBi_5JsqFl+Kj#FJKOr)=aYM(_zBCjSrVDL4TQ4W{|fxw~CFR zq|^3>-^kM`bxz0<5QoScr~-ut&}js)F+CNbq+Denw|m-c&je`Zw+3z?YlZNxcV+G% z4f@Si?N30_#qDdm4nq`~2TQi)DfSi33DOa_vM~KDvnhMkH19XW6z$|tboLjfI|8_D z3AYocw0*mu>#cOJdRkQGRuKFuX2%Mfm<_X!V2{ak7T{>IeKcJ~n8|j4wypWcW4*;3 zehpjmHDbDD&GtfJo`Mz@kh7z6THx%U6m%r5b`mBn+SWuz|L~o8XRs84PQkvSlDQiD zp(5$p|I~>~MmMfy{|H9v*4nYak_NI?9P#$?&7C==hlQA6JH#gO7Ik}bqe5v)x?8!< z{>#6F4^gFiMofos2LPm}QMR`MW<-2C^0q=vF1$?6Dobj6k~Sm#_K^t%J<7_HTPC6s zC(hf#ExOf^CA3#}koJ-=^1kZBC&7fMOe~lbW%+t>95ZdgUNZrpliGDuuy2xAk_*lr zT&aOzyT0CkqhNgZD3j1yQSc6Bz5gDMd-*aYkE+Gj7rw#nBmq9H2E^J*eC9?s(qrV8 zLbEO>f)_>;!}hO*yVb_KFyrKK0U-Wf_HB7nyW|IQ0&IMe3S%Q~K8Y~qG*QuC7xxU( zVdkeIlPIR`4>GVQ!cMsR`KXNL9W0h)Xcb)A9z?@I*I zXUI(Q1y@FClYj-%pT_(KY2QQf&v*Ccal-{xsd zDctU2nYNtmO>YLX9S+TEfTv{gI_U%@`F6>O@j(+UfU{6%UD9={>2CY1S_NH46uIye z*7-ta&q&tt*WoX<%1>$q$2B9~O7=wHmW-g~WRPY0VOPNCguKP7&xbhxUsJdw3XuJWrF39P zRXWxRXeSHFgQ+`AvE|++oOrqV7xp9s!T=X`IM zPun&>NQrC7RL3V?=Qg$N_V?o#8UH5k+2NtK-Se$k{nhq;)z?`JX8iZl{nltzMgei6 z&ynE{CBES^zM(6=Az;R7CkFq@=j-wboAvAaM9}d&C+Fvy%~`sib0a<(PVcNh?>T_a z!{g_c?edv1{*O;%&XYMRf*rOc>&9_w9881twDKyhg73o)UlkQ@Dis0S$d$?a>E*{^ zRU%h759IaS!ZoTcH1mM6iejNX0-C!2pdJxF%*V@W=WR+k2Js=8k+)qhlE}st2kVQ( zh4*M!9EbbQ(7ghG7&L9W=~pjRGk}Ac7F?OH5oR-uMct)jEr|@zGuCn@SYRr40$2>6 z^wDD)St_+~WdoXH9uGuzcqBv!4z35G0MM3HoQ(pmj8Bga_1Z>?#V+T;&z>Lmx|OCi z4*_XTZ2FR?IL6fhm*aR1ehk{j#e}}5ZlUF;TkpXf%r1DBCo{_``5!e4a0+wYa03b@ z2?|_4H^b3)7cVbo2ub)ioW|!CYH3u0TJ>@+e#bgmJ#?=g4fMy&B9m8`sr*EwaD9nj zJg76K*1keMZVPDT&y3TW`(ndU43yJ0N-GTqa)g z6-T+VOC-R-9wn~}>R4mTAe#MV2ltRatw<;at8_#;Pkd@8 zpXL!}jfLY}0k0>;c>$ChVEF%&7&~TI7nyKeo;Rx??0A7x>tSQK1F-hm*yft1wb60N z2HNB_c~vc_YvGmalFKY2B^gp5e8Z%Tgrd1RPCX8Cf7XXv3DoEURNjlx$X!#nvM=#J z5o=IE68=)@x=x==KLPiNJUtNP799#J=8a`;= zwO)mfE@4~*BRk5J1F|xPC{#6(T1v+B-{!VJg9vA)Va51_-58|!A;JF|ST*6L^uC!@ zxtS#Gc+uxOugIM2%V7e_qMGAvJOM7x+*nR^zQ=Dh>%XPL1QnDKL!^6kAXFN zH2fP-3hNC1t)N>4$?mG##1%08I%H&VFrc;>S+7e9-$re-csOP+_UWM7{~PS8ZA^LA z7$#zDaa6)m>RdeAd$da4F|Uvy0?uBE+{r2k!nO(?Dv?``@?49;hv^waZMG~gY?bN+ zUn6x)V5T=Ru-l93NC^Lj#BkhZ43`dDoU8+=iM$UNyFHxY!#u++_qIuD*~u~9pQ(y? zg}?~B30=%RzMFx6@BA-|;rL$`qvXFR#_fMl49EXPF-#lf_#KdU&~hXqBO8nJZGn_3 z6MjQnl2gkBS8Qx{yaL0=1?`@!rnL4;!NEm(qd@VQln!5v{XPI-$4ty{rKR$|nZ1sG zr=%Z69hv1Iy^I;ve9D{{!RnUiC zcs7|1$`;njk1pXh{0#nqyZ>jPSEtCnsK?X{*S1z9MJ9MIv$;sf*!)LR(?E|DT=hTY z=^u$Pd0FQaDZg)S^Q^-DDhc_LQ}Y?fa+!2fVnPM`Qu=P#^xOF9>a0i(%vO}OmNDcg zrNN-tER5=F;S!nJfBen=ikvChOQ7iH(jG37Gjyk`$m74ts+BjL$X;WKVYSj$^ch}X z@+3>;tu=vk{IzV41;YEAGfwELMRUKz@%~2lvsI(ATaCf{yv=+pxHUXffm#&Al_gzO`Uy9VN*1L z19U$@zBLfL{ z9WB#bxg@&r#kBH3}lnfT9#|^j4PCb{2IH^V&1O{DskZ_mKCSi|lLts`3hRXD~ub%eLwHL(4iX z!OO%ZVB_m^#x;lEOV^hErKOMj0g&9cIi`CE#^3sWf5XJWS6E#~_EOG>;$Z1d=6hOi zmO1b8DfrwpARXHxxyWh76Ii!bVOV&2&8;T-Gid_t*C3q~(~7$>xASKDNx2!|tXwuP zuDY+eun0v@!`B!%8B87R=im?>DA_Sxe3=qPwnPtWyA*!}QKml`PH~^%h0Wfs21@n+ zz$kq)`?yON!s(7W&Kee2Y;B=Cd>mmNJ0zwWXT0r&6sP?}ONlJUi)ByHKi+P|f&J0bqU34ZPVmQ<)(6S+8tL^(YNy?8c=4x{`T0CZ2 zWo#-3oCgX@a8||@(n})3g4U(JUkiWchCsW`JIYgMijM9N3dC$(2*dtKj@6}mJ}rK$ z&E(#l3z_L+OCEpKaF3Kmc>X9@YCj5A)Bh@1B>;G;`Tc-@`1vh_B?oQ3KMvNT zF?wR{bkhLWQ_!%}1q|HDkApS!<6tEk_KX7SUv^aY8_AX?dMM1Q84RTlCKI=5L4Nmb80%Xj#VjrB9^2NPWz9h zs)=b>RBPjf_7ic#sH)%6n5?<1qLYP8ag*X(VoSnli$z7^#L?4uH$F{0Iv%E)rnP=& z+@Bhz+6$`nuE+Bb`g6hQ{;Gyknf!am1>sr*aO4r`_^@uv*Z6(HxVKZ&{hGUeeE%SFtmj}x-bl^VR7nP*(E1O?acs-o@IM#_+~l@PtJ~^3#JQ6GoGZYUy~hVo zt`ZK9q_(8zG_9b=pcJH6>tcl+xwHOuh%dN<_q^@(@xp(7?bG?5b8S=q`jzAQ-T8XM ze{JjI4R0LxAH@pze-x|D{~I~v`Cup5wekN%4xRl!kwdlXufp1qp8+deqkzrA51+6` z)%RR8|74Ffeg7A}3|6;^WdmHI?DVDlJoQt4L4V1eUZ)MNzVdse9)D#7O^%V}`0h6e zZk==CWu^%GYC~a-402X&VC58kOaGhb7CjSwJ<+%lE2h3*M?ViS|Pc%bUBp9)rKpP3P%ahyBw9Gsg1{ z4;*;KrNz3LC+$E=nmO#pwrgN2I;FCPlGM0ERee43m6l2pifG(#-HmPnx&o*qa$#q| z;0Z+7X34Ob+&Z>y_Yt^DB&Qnk%`7I*f=yW#dkyGf)Vd!x#~7bm2Oy@K)_mg!y)GpD zm=RNuiE96N`rZ?s`gVq(dqR8tj|5pmo7jSbmr}Ou9+ELn9rJV*h_AJ|aIjyHWC4Z1 zthQILwc1kIjb51|yj{v%ZKC7v*1x;zWB|DZr`vLTO*}9VIk0^mG>NDln(X`xZK(W+ut)v z12?JMyl|A?#D%{Q@{JLGSHbiRiOlh)qQ+4z4>p^_{T31ShXBa-v0|R5=aa%O4OEx9 zigr<-X)E^di}J3Cby%-6=~>Han<*e*p)3q}E`&B#Q@Y`|t*)E(FvGm+uzso+X|3$c z2AQc_?u~IFmQtLxIiRXUA#{WHP#@J;G)>kv zxJc`&3`v951VJ6MMs8_tZ@Ls0LEnYBpOfG0nv@l$NCUV|JXsaEcWzWT&ynlP83JX3G1 z)jZ#Tsy^TOLax=#fyXTgx*JN4-(`aE zl_PG`kbV@NGQBZ4Y%XlA8`^zgJ2I4R)DC2B;c3A&?`6NJu^E8_Z)*1%^JAqGRV zmxCLv(b+|fzfBkrdAP_c@>b&cMCf(n`hW}33(=vkfdWJ{hv?-$DdGy zzLPCxkG4ot?1jVv52uh3J+OO7rvOOFNV%Tb)O5~1)TKp*L4`@V^zOj4hkMvT37J*g zq=Rz;am~6?E?KlS#h-MB-3x5Zy}8w%gG=lyKh20%0vSd}7iygD0l3~t_UCJ9c)<3q z;~t6)UJ;o7f4;||l_SSXQ@mda;_Vbu4W#SX@_A`yLfc^ff$r@24*qQXo{kX<)enAy z;p$lc;9WWK{(S(2+z8n|Tu@fWDhUG{>WcW&LzOeSI{?29Z{9V4AUBB5uxJTq_=sUE zR$|*}c_=r-VN%7(Vva8fWOV*A19&UmnI=Ymc3~Xg>jWI0-aq-9v!&qtaV8>eICssx zdBaA{4&73&j%UjK&C>{cphuiA<5Vl4tuBZv(R%`>z&{FycGeE1bDHL>@U4tVmkO6y z6aX!Rtm$=+Bin&(b4MQjJUsqR)f*ClS$!u$B4{6L~h)vib@|VPLmrwL^+BGr4^r}NAz4fDvar^ z@{bVfT+$9$k;OR32+`o5p0c~R=hY>h!}I6>p1Yf_$U1`ogC?Wx(A9N(9tVk{0_VMy z%Payz;B^cumq6iQa= zv|ROX-QtaI)5Lf8w&R#?H{3c2@zw6R0qiPP6{T2NUP9+&Y(pD_Xcxhl!rS{8 z0g5xJ@TvJLep$yTspRgbBR%z@Wjo#0^IkOHj(FLUaglqC_!J%|30(jhw2=aVowPNsp-|+Az;UJp8+%=R_ zob^ld^x}KO*LY}!hw|76`ueUine|o-7J5?_8el2TK5I*-hTsOWZTrdW1 z-B9Wt>*)d*aEge7tAOUMK?PM=!e%*v?;{Pk8HW1_U7xRqmYz$(&Xh7NtCLD@5u{0s z_nZ2NOLu>xxI@4l80RYsF?KatOJ}|nlN?1Oy zWA9M-+YQR)Hu3|K9^xMvLilhtpv}IO!onenb*yAwVIpXEF&uctnb-{o+G=9ccN^~I zzoqN<)fS|yZQ%QfSnIukP-6M;a(>l0k=dNPBBqVDF%`bH9{H2UM9*`of=3SIe1ZCU zI38GiT?}9e;WvpJaMA$~20=*R0n8n<{8~Orz`j)jKk$e^*sP{gZ2!K+Oa>cK10`ZS zfy_DFyPhmA?jIG4v-%0x?cYby46cD~#FNhv3>{|>jF)LiJ|i9>H&#|JCHyxDrkBsv z|BzHkT)$o;2u%9aUH7v(YU=Vg)N~0wo}@ei8EFB36S+q;k|9`KKV;GOV*}6#>Y9u= zXFp*W`G(md7}%Z+m_{_$uck#?9WyVZM@|en;VSat%|RTjX_ECyZ{|i5Xkdf?uvEMB zL3rG&cz6=6B2@stQihKS=nN&wf+G7IhsyVftu9N-Ks>CP`6A|U_%;ac``2IM8?)%e zDFp$V8LFG-V&ROS>x=5@fOP+r-5j_S=(A(}Pic9$O5WO>j{#3rrZlE+{J{r{^8;A( z>ZTEg)<~lDr2G(<45DJgyHvKhE&oBBMd6O&?@g|g)BC5SG;mlvvn$)@^i5(!bBGsD~lx3 zVj!pGQ>>6IH$pnEvw?OfZ6)1RC%P7OK3}fCKV5piKXrS1Zg+RtZf~{NUatdM{-5*o zZmsF@=StZzP;)84rLx5|$f<#UQu63#h3_#*g)iZ&$5Q{?Iiyds_(}?Ea=vZ{*jR5aTjZ2XnYzDMi^_b+AgiSE`l z=i{6+vNxsbTb0}U8GfJlWnCYitK#Pw-OR7gf9Q9+`^#06*AESSdVqxO#TkC@*Zmg$ zk4#>cfV^n1v7V2|^_~oX_m75n&3A$yMi7V3UEeeQsij*z55eful@U$gSMfK6`V6Mv z9*{U4op-)%BtCaI1GuDJQ9ME0_I`gHxi&uj?wJv&D^dXPQ_xV~6 z(d~YJrEho4=68vB-PiT`INVPWUoEq|$w^t}{`eRe8i%EGdz9wAd##y9>i*^d$DH2O z%|_RNpDv-F+56}S&}7u&oAY+;ygNGC0HopjyuK!!uy&ofewPA1Zgju5M*zq}U;D1# zvDZ$&s|!Nkq?SG+0A3$I(Kr0wA5SI6-{0#wJ+FKCKR>@0F!{Ycvo4~Ps8^i~zVG>o z%D;DRmjQ1B--9CG4-gQyYDpJV;yns&_qXTS>qz%p54dU2r6R{k_}w2JWV@Dr0IlP0 zUN_+ep`Mq^9DcU%ti0Ksny-(#x2pwu-OqJ|ZSS|)`;zARKi}sGHp#>oC^UB;j-Qt) z?NazYiT}QHbP<3KIbjxJOcNiMC&H%I80X0RR>mlE5$N8wlEXfAV?!3Q?FVu!oBE+v z%7#DdzHaVA2yr++{~W(A^c8$g09tf;@d+mtnP}d>fYzX~Ud~Gp_NR|tU$X`tKkX7Y;rvUaTPyXVA1yze9Vl>2!sXM$i=JN{VGpQR?A3PmSk z)FbTwtR$>?l17LD?19EVsYmg<<<{#8MP$Xe`&SsxmkdiWuHb%a+z?I7fFz}8C9^(; z0`}Niphj6Mi*HV-X$1a{8~mRqe_QCVfp>6@`=AyD27I0_xPnmioFJB7Ht*i=wh)bd z-JkPkt5N~tGrsmFY_og#GsA^P)e~KGp6PxaR@o7Vsc19U zNOU!XW#rg7)B0b>3-ikXXU$f?nmrR|+NwQOdz<{5W`}>=rr=qt36i^Dt)xg;rp0Me zg;!B-wYePtDT&y>+9c%%YZQy9nd%`+L9JIBgAGKB162o$pI3s>#+II@N+`RT>(c1I zxFwZ0#zX4J*{+PRdw#Eiw-Rw!O8=T=#AT6kJ*8R*&yNO*E2wb+)JHv|I>SAnC|^4- zZKCAlUw@aE3~Mj%bo`7=D{~G}QT`>a3_5oyqGFD5X6B`$TwW(glfH@dwpsDWp2><= z`Ai3HB*Er><~B}$=e{AzCok@~pE-{ga?m%Vs5E@Ok#(+h<7^ZsFGENa+$%wF0^W|& z6?j1eD*YPpjO_F=OV-z_cg-69p?p{ci9`a zF}Q*y^&aqmVR!sd;gjunkKG%DCW-LtLd`wSH%W3H8$50Gbtmnk{p%+(4UE&0+K|Pt zw+p@U4|QNmQKEj)>Ty8Dk0bgZc;t({_eUcLS+uLKdzL!~JT)9bE(u0%CA8p<1gP0~ zNz4`a*u@rSo9J0HTS0X#;X1O*=5)d#W?2ng32QyE(7GRkE4IdZl>Gcu7A(S}}vhXp_!nx_rMa}M^(xa%G-+7ShRd8(Y1 zam%dh12sbdI#30EH+?QI;`M$ZF1cz7aH~D*PKdC% zwShNwf;gJML>%i#Jy+y4)cbAI=*>0GOf{&MfBi{#${?4X6Yvb zBytVWl;dI$a%;c8jtE?9e1S;&OEb~(`%V>b7?~dKP(!aG#}dsk?ywM4c;)rE&%y-9 z9S{isnJi&G>dip)m-4PP{bUHVYG+*+RBQyBS!@nYc?&0*=AE@QkjV0Lz+u((Y$BF~ zBJ|X;GeA$e_jgw{Xub&fkGXKlt%OCYG`*NyBZ>8y&Ma=S^=)vrsQXilSMw2f3TB-lU^Bb3Jjllf=;tlJ(Zob zhFSzTPAlh9+%G&ZYj9BmQ{9&2wobzt#p%bf{40|t%r#Bp-N7x3vFvG*QhhVA4$6@% z38o7_L>`-nzI=LS`;8sWVZFC(;SUNhL`LHqJ2zhlMM%n}f1X>5yZxtLhSFa!C!%7$ zHnjC2pWLZF2$c*8WKWL>q(PbsgsX0z5H}^GD9C*9C!)5Z zU&i+VA%e_3GzSoiEm!b(gBTDt-OhykKz*F1n?h;(CKQkTB(PW5Tqo_0$h?npGeUU~ z)z`;C7lGm3wtg^fx?lkR866`H6HbJ*wH$Co2lk;iIMcSW?(EEA2Ch+%>a;dyuS?NZ zC)X{;agdN>OPXJO3Sh;gp1VXvA@wze!%UMz!|B{F;VQM+L-6r=!oInkckb*6S*-R{ zAZ9ai^3*r~ihm{OVHNt&3=F7RRW^8v(kC4D_lEV^lNKb8id+Cl?`7J4)myow)V;jh z)?k|)PDkwj2RUreKfHMa~C=eNfC75Jugw9QmK6G4x>1cCS4QXmU@w$N|@e+F7iQo?B2nT67W+wO` z?ELYpObz7~48##d0!f})7o1*fQ0RT-V)+98{z*seimmm&+NnTVty)RqgBD5#6Fk@N zUrp;FK8gYmSj?|9Bkw>*D6h)18)*E<4q4p%lmphY$w7i_QV*P5+?`^2{9vx)EyMQV zA-wer-JD-C5X9VuGEHYNb4LRO8Rz$B126johWhx!Iy=oy+4 zGb#UaU?@Vd%W0FQoGm}eHu`YP;rS!eL+R+nyFkBu^wpxwbT32vo&&{erd0U`UJ_^7>p;$9z|W%3 zV*|h`Fo_A*F+_|7@%h^gyfVv7>#tksVWag~*W!o@*ZP=6+WkFcD{=8#u*rWT|321% z#e2L)9xLX;f*>>h*Et$>F1B#h?J9zp5m&K!w0;wM){}s*zaQ?n{wz`hy6-+nOIPtc znc(W^+&y7%5A8`u)VS``MohssY4y8x+y@|v6}zcYXRVW+ZL~D2MPP3-`>>*BFiET3 zFqJg_3{}9sHjD7A?j=s*KWYX$r zTfeW?#m8%nI-tK<&Q6H=D%U$GwM!z}vw`%s8kPxei>SQfCo#GodF+mqgErpAexvR7 z>N}kT)oMqh z;myS>wPmGEVvZoNBl#@9)9Z)T(W=8dTb&VFx;O1AFcd%vVr-pQs`hEbhZi&#YSBkD zZDE_pj#n6Swt+%;3V~hw{ygIPy8Pqr?h5*Kb4s2=OA-Y_9z1ahkX;p~$SukV3!-kQ zHoQg(iLW5hYkE$9f{%v%-IjxXxyhu?Z0k|u@y>AmR1=~O6oBXb?9ZXh)8iNvs*dfX zSnKt@uZB&Wtvg2V0zZT0DJ$wMbM;`tXM~9mE0Rg1rdSen*>!tF@VuPn8?*ZW-_~+E zI%{c=2CvQ2#SAnHDAlT|H4IlHEXK&^?jHI(g)JF)CJ6$nqi#jktayERk9M<&J`cZq zs6`@v%x)acpz*9si!A3#D4!1_Z=1sL<4(vaX&sd&9b=zbC9$4mn(>jF?vsQM-UavcaRn`2JRT(8*lV)q;phe80z^li zB@=z1kGt(wXorCZwSkzUJ#+1hu7@UsjcrIB`g8+UE36Y*p|D32X%g}vGgwO~fsO5@ z^251>8AAYsnBD%PPBcA%t1}Jz+H*@!!H4~*6Nm$;j};XRxrA*;LY;ImolLv7|6@+z z=z8Po1?w8z3QgXtSal;we0`v8{)%u3EIRPCbz*QOJvvmI#PwDg54!GB$=c>yr!Usx z0QkThNVkAZ`A5RIiO&!p@Aaa3863u9vPVH7CNh%{B$ml2N?xwCEs5Mf1L(zq%LEjkf9Hd zbR?JBoU<~ndeUm_MymYDBR>?L_hh}`{q&aWPjgl9)SPW5l2}^!#5?YG+^f1G5?8_h>@5D2o5|(v%iYIFiuOyI8 zYlR58gR*yUjj3*jKUD8-!rfo3OmA== z;)$3&*Yi+#>Lc+EP1>2@AG+kNEKUD23qJ_RBgknDn+^>$Hy|crXx+T5@6g_I3hyGH zno^`e!1#=0V#*l2Lc5V?Q$UQe*uO)0zy0yjYCw-g%{6RM7fb**Y^rn52EpDa0y$Pl zqU7!2HmYcJ66=UvrlSAC82yQG=8shT{u*N!^qULv!8>NGu+a2m9TZ^VlZ-11(VoFU z^Y8axc{`H7j7tMGBkX53XtT=*zxCDp7i=Y{5V=Zh^IHo9cw8d@Ea z?|r#`s}`+UHnpt?TIgHO@<4Rl%Dm3fK048BCb{HpnB`6ZY!T{v?Uu1qPQ!+T=?FG4 zJir)}%vcF74SOr2Up8Xi{V|N|o1#9-QWY63$73IX;WYrbdTFFJWO_=_EQdZWsbM{K zrPZS~=f>qRm#zOG`=^*ckoZ?u2nOfbjzN{2&0x{gBaeEK$GQVO2f9+otk%p?(62 z+en#ZT5bT3f0YZrSkT~3&`RK=bl&4y9EL(TzoJN;Qn9zC2xef{Hf4M@mibKPIXP!X zBPTG6M#TRPkw?O^aXjQxtkTtWFVfUYDWpa*tW3Yn^Y9A^+OP$pAjoaP#b9jMTK1VF zqgv50?D|wdH8;fJIk2OQ2;b$zrgWSr#)hqs7cC-4r~Q4mifIOpaoPizASRo^a+*?UFFdV~cl>97=^+ zXQ7ljL|^BW93p;>-ya@}+dav5>6--AmTPyq=@`bhNb<=uvh54@JOLZ~_!WUqh7WdlVDFKS3pW4`J`7LUrDVGvsyK zZ#>Fy+_WWWDG+uv3c&ZZDJ_~!#1NJa42Ki^_PLFg9Cv$X!}Ukcw#5uCKM$^}{TQM) z`7TeBLYsE1OPy!NYAAx9SCb1EbBoZyCVwtF3p=z-Chq1M26<&CR*bBLs<18lcU?#&htk}vS_ud`QQ~}IW?=rW&bwHMbWN%)o@$v% zzgB;4LG$;rt}R3k3iAg+ZBcSJ8!0k!O*;lMaBj}0Siw&!dU`mmoFt+)e=uR|zPzkhclZ+~vcWXQB>PSPLVW1qjQ8t+j2dBXXe+G|N3hHhxmSo3;bH+Xai|A&f*U>@J7v))-iRlVXb4Tv`3PUvoP&H=R+I z=m{8`ZQn&|nvcohfyXge-TZ+d1o1f)lX8mC7ir@;JR1)xmT7?^E@FZOwj-trUo6kr zm)YO;Py3;~SRZZ$L#8NLnx*w@pP5aYYC*g9c5SXEm1LoM-&!S7+9blVywXfd zu~)F_Gqt#P=-oA--yLwxO#GD~n_!qd1%(v8VHhzZRsd~JVM4!!YK4!PF!Rj_3RM+wyStRTd0pIFpuYRZNJij;oKfvWQBeP;?e~eNwDJCD{vFWJMv-Q z3g+;nTob-SQZ##+Fo`05szor8keDeKtUZ_At1(_d`C;&pyraKLN%a7mOmSt%KUu6~ z8BN_@>k6ykl6hsiL8QF(5)|Xx+nByy?5_7O#zq)%cFz98y}Npf@XZqRNdQhA5xjj_ z^twaeWN@==~-^Fd+P5%P#8<7uQvEFx6^ygCRN3)H9vFg(Ma}3=^BQT#GKmd z0>&uUsT=nAx$%?UW2&gkMWTH<3_(-$DdR5+-qiiPx)53iWPDb}oIizuEWgfmslbvxrqG; zmi-ZABlb@c%RE^2NGWx#2a=*Q%3-v$6GFgEi({x|M>p{OZKaX%2{6j0wLFE~kZqj% z?(Qbz(nY#4TViZ9gEq0Pn@I|ncEcdxha`FTwB{o_hv&$%F`Ej11-&r~Tb4D|0(nl^ zxf!ZHCoEX@A;WMdT2@!t7Y-~tvm;-1Ss0%_c|sBCknT#VS+Zta2ReIEb?IngB5iyAc7Pl4-kHhB7y6sA9GcG$@BlzZSUJ725b2qM@b1YBK zYc0hJj2bKnpTL7l5<&>S*=b_*>)%Q@Dr75GzLCOrc4Sj`hKf*c+O6zALRim5Tjh7BTt$j_yiiL|zmGz5pEajJ zA*?ltG7Ob=fiXz}*&jc8o_QyXjdj{l*hVv&4I;oz!cR?FETp2Z8Gq|U3|1-VG7WIg z%pC$Vx$?K<{*O>RKT)UVQqi`XmGbgE@zkltEpnSNUVff`kKVToHO`X1X}m*PJ2GFL zEN^W?aC~iCJrV1axM>VQcg#Mpl%?AC$}OdDa?dTL$t?wXM!*`dmz@kh9*@$9Ygj>r z=XNT#F-!gnN&%)SgT<(86DesQ5pb{fY9kV)eAro z5Xc^kI&EbfeN_C>@beB6LfAyFf=+B6bY@wO7$%DHP~$+1I4hG zJ;79@X5h9W2<`@`1mMO_U}*;V!A^tAozBAJ&9DcF8sdpSF|6`3bZpbe>4pMfdfgdH zbXjZ!G;%s&FZ@0$_r7OsgoSnPXW&QupV_=TB0qQUMK1b{m&-Ne4Igf+zXx{XQ3)n2 zJSbUYt%vGZLPEf)-=7aCPo=i2l=ojqz2g1Qp&^+t=j(Zp1U0zCBC9`7I) zH(C)_?=B~&jvp=j)IV*zm9&qK0WOyf_4+*{6=6Z1({j%HnM2g74w8N0NsXi zMq1@178mxGCTX(_LYr|)Fqr-97+b!lZ&Usks&{}AaBo_ybB1}Bb2^PhXjb}B?Sz7bS zy?M9>Eg2#ttaDNqUJgrrj!<(H4TobE%#a%txz;3h4_BHENXSy?QYB34|&uFvPYwvDWZwU+}b$NbgQVNpi>#4 zkfWFnbV68HaSY-l74P!U$9n!l5H1?nz-^eN3=Wi?qUJJFrboA}FTJoN-b2d$1B^10 zvAYM-u_A>5g;Gxhn=03GGa4~tX#=0DFoQ=qd`z@l8CYLWDVzlvX%jB91c{Y&$-BYYqCYK0PiHS-vF0xO;^9+BC zy|rA)pgRNMci*`8MJ(u#nZ)uxBg7C=@>~vcK0pDia0q)h6HnFg@?!O(k7&$3()=-_ z@d%LIncRE_{*y$npJfQFb;($37;{Khyi~cZqHD)X%;234E7zLty7hEN#~l*|kl^-| z9J!xb({oMfgpGJ=4OCZniLouJ*|ZYu$s8N0T+@&ouEZYd6co#0)l+m-$IaQ*8v8Kl zKj;Ay`uc_%%z(O%UN`Kea|n>7>tY>hf2I)DhAJ>i%oL{Wp!(1^Ks-IMnM6G>k|r7g zPupysvuQz>q5ZHf)|i0B3FAFnq+tn;6G)}Iq-BfHMrnMqE)2$v9pChls6F#Qn^wz6 zThi+bB3bY!+1Ib>$F^2Q9a@RB{;mBp z22U0`I5a;p2+D71^%!$o5U-K1%$4F|PL1XCL##G2s3qGXM8%YYdaE#Y;`qJ6kGkoq zO%Ilb*hlGkoBK`bG(sU~iPVi<8H;2y`1&ySLA0n#_6s(e`RoiE$`=-FJqiXS2!Q9W z249M@j@8%S1l}Pn_BIhx-#-#N>|0^%7`6ks2Pc-RFCRa1fgQ}A&Ah!BPlDoGj__P@ zv!Gj`WZ@uu@?Rek(=btI|L5!R&FwoNH-I&7bMah`2x=?w@`%m zKX6g^|HMUs|A`lUyZ%WA;zfxWJf2EDJy+CSBp6^Oh4rDu^7W?*z|heKbp$YbXK|2gDwM6#x;NmWHgmiCw&P>e3?jmdrCq=9 z&0&Vnh^^q18PCkGM{=+F8g(GsDDJESUFP0+4`*7M6!{6h+IXlZ)ue_$w+^$*MWG64 zO{gCvGcRi1`g4xo`ry{4t?;D7OOPPgN4@&e*D;~#F}rCp7u4@+M&0GRrGC0~byB%p zz^!?UKIBe!{g=bHhNSV3`2`74)fWh)CKNeiLm*S-USrO~DjT6A=|n%Ij@pe-7TJ#h zVn)cv&Kf?)kWRo;*6nf*I8>bb!LQ#$AZVe_Orf(JwyUEmK2_qd(5wz6O&_{8*W}&q zrnq>1^!KLuq4P|@-g|0g{l6UM+Nmm0*|dtQE*7v3q{{)cw9ICKp?KSrs6GlbD;rS~ z?^`DaU9x@SJo*QeP=faj&7xlLf2Xe>1ErptM>Nc4I43>AN0n%^X<8#nOu_fHipjK> zUNBF)tGVWDg{Kz7?2z?Fr<)7OLjD%@mhBFu(2U{8p_^FOlUrmy@<1WJH@TPMOCUwx zZ0XCW5a$A5SLE_@sts?81>lH+p1fQPb%N-<;dM>Ol^%{}88VFv;)cyKvf`oj@+E_6 zV#Nh7jhdaOXl}J0%R5MUVx3z>6GZ3^`K7y3Rqvy*aZxLLlU({zCD5v>LB*;;NdJAH zuKF_x2@2aCnZFTUO@v0+k~=JJYRa(O1$dr1_$>OmH}~QBUJJb4jt|#X*!>bhs)_%Q z+uHnNcoa&!`erMvlj6Fz?D z+7dg#izUUwQet)cG|?U+ywoG-0 z0$kmeGy-PqXC-$Be=mx0!7XJkt;W%XdfTxQmS%PD@KOBF_3R96kCFV(T4ysQg#Lb5 zGbK8Rlqe_bN^=XLWx@&N-JGdetboXjn#IaSo8yPzUd2zvbgwgZi4xWx=slUEE}Ode zXr>=!*TEX6?&9dwL!m3vjZ5d-&gGAt?emAf89BYXyxbL1?H+1_9O?4hgYIK+8-uR= zQkyPZ9|U=Z-Onw=-7mKV!&!@d4@W)ki&TTW!yOpC_x}QQUY|ff zo$8xV50TQUb7~{;l*Mgr8oD<}*X3`xciPWS|3S{_@x7^if0`31d%Hf)rx}#R@!4JhO|VVv$f;}UoZOspNFFp z#gD5+WZKS;opHeD@$r#AeG0k0tF z65wahc_)8(9ZcKc2Y_C87y;@PW}!d@79y;@MWl+_(+q8>s&T@4#86NPWk1P~)G|?u zED#$tn~5Xyox0g*tk4b#+ciM#@9gsw35K!z_zqG@>%PP)XTNKwF<7~Djn(KQmbKWV zj;ay0T*WxrUmW8cQ2(2jp!E62vt;aYM-71%Z6oNN-O#cKTKGb6RLA_Yi*M|mY%>hb z=DxlfbwnJ}y6mVOoyyuLVwxR8#p;!@4sZ{6Gq*w;qTn2?aLDH{D5Jqag6S`?jrjp_ zjFZ&h(d`?7q>1L8_QzgDLS)q4%m@_%(vyV>mAypHEuihu5xJYx9bDRtx| zw+5B=)jobRs7%bF4F0PYa}AG83S>6Wbd`?_bF@elHiqH46~Bk-jzXObj=_z@+gxMJ zx&8|5u(%F@>*c{-evapF<<9)&ur|HZF0$G_A4ye$f+}W29?mJU*g^%`{_0bC-+UWb zvxo{y=e9JY*v4UbxQ*>Y=kv80(Bc9BC*zSy#yy>Mcb& zs`B#>vL@2DW6?LgQ{dBU;(_-ewiM_6y5*W*GeIA3_>A{82$fs0GCaZ%IEI0-Jhp@m z{W^)}b;dWj#_oH~DeTgK33MPkF3&aY<{~eY2|f}eabZatwp1epp)t@JS_=a0QnpGMA^h`wPWrkp>0wE4 z{A-B2w61v};7`RZNQ0y0G0y%CZ(Afz`zzA)bo+}CEm%r3%p8UXH6#^7VZ8_eA~*s= zqy2Cw(Xoh52qZV+yvOP10Qpa?((G-J#!!R162uL>_6<}J(D8RhTpP8pXb;oPhZ%?q zp(eFXH;{c0E>12aE}AHaLbub?18B@6xd}aT#;_8%Kmi{V=Vq^V<0VdbmoKw6W@~X( zrNpPts|1!Qoc!>A5hDjCyBP=C|4V*P;Yk_sw*}W;E4p;307~GnEsNHz8D%U!zhb@l z_04J4RN>{qoy5cU`g2UKeP?u-bCF!9!AQ~*s6NstRurgRZrL!PAjKrj)@nS6AuOJC zh|mKyQFqa&<3R2T0%U8B`=mPd1gGongTdv38*DavHngOx(?Jp_kN+wDs~7I^<_+F+ zp5xd;(%f7N7C!+2+wvdBOHX?CdvOQjsX2w^BM$L}Z#ivI&*^)e=2=u`!==O?`BW_d zs-@-B5T7|MWiL;GM}k5EgJy)#?X~^EyC7Q`OU&tr^k*$HF=^#;-_pgR6Ry_obS%;Z zdA9c4ChIvBZ}&~b(JVF0iI6&daF+r8n}#iAPtuX^$#}m;rQ#rrD8+CS0=&NtyVIep zYWI(arDNfB`sPLJ6@skI4?%VM+)+EEDl85@v-31Kgycm4IJy4eD^cD?DtJ7}?BrN~ zbKz%wPD*a4jThn_@(Fy{U(qAW%Lb1-C}M5IdxUzkBwSWA2W-9US}U$bdCzR_h5j9M zh<$>JAwuF-h($DO1g6rxZZ2h*>+c0wOibkyJ-{K=&Ws1M5FZe%B?fw%g9XmQ5OUu5 zFYoq`p!k3~!bO@7)y=LOXH#VT)2K@FEaP9p;9ZB+BRw{Lm&_LXX(6xv&kJjPK{z|T zzgrl0VMw?Ss&w1Kur2>z`MrPey))=!Ct(TsqHYFZRqsuDu0M-Ob2ySPZ5w}hyhCfd z0NAwiNj^#K%}bvcGZLJN-bPaQ;Mb)}V*O&B9$n7ORZA{u3MuSUq zAkjsSM@oJg$3*w=Y5izB`_(vV7oGaSAoaYW^6mjf2wS><>o%i5 zZBc3$VUGPu+D~Lylp23A*HcF^j5*TBbeCVIVH52hip~TqU(P6PD{uO|sBohFjlZY# zK~iEM5q{44MqIQ`-s{mYh^o@SzlOQH$bM`tzU{kU5 z;k?5AC=ms>W~r@=Jq&qiB@Pl&K%A$#O!|9r65M2%h?GhAzs6z=Lr>HiR?6?l4diCm zTh_wHEo@O3s_xLjjKo)BX1`U9jNeH>%D(eWIx=`E9BQuw{ju^`Pvhf-^ zK!mDBH^RV+Od~Z{`ubdSHBtlpi-xz(t{$SDWgagNBrGm5$=t`$@Sd?mhNQ+>Dj|QB*HJf_lem2~0-@qE((E6!7eq8+9+axIZuO|Ze z(FYRPhC|h6 zH*=Wve4W}NcYrP(Q_WVPCZB;~fxmC&iFoo4BxC+N;Fn9%YVeP)SQ`Q&z@Z2cqEM7I z8uf^Vvq|e+V`qsScLtA`T)evECKCY%4lDKhYWl|3dXi1tF7R4my!KNV{RmT(aapln zR&L)m_M&J9@+MU$wUxIU>UqcN+h_&U^l{aXAe3q^m{R{H%Hu#vAJ1`}tN~};{OF?Z zG5Y^2!{_{?+I6~;C3nxo1LNmaJw&o|o?or6;%Ti@?93zxxMh1Jvtr;$Vm+1LZX z-57!P673ZPK3#KbK}kdjca=o@_`hF}PXu6zs={M8O%} zTnW9?xRdoLz$?2J8{HjD!$;maEiO`lzD&*5C{an;V%eGB*1JjKl+*FX8B|;@8=) z+z4B*2*WIm%0h|J>nv0*Gz+*LEK>@Vl^E`YiP#4T^mP16D0kXIWvI(&T_?!%C-fhe zrb_zasWr?+L_-iN1;I7&eeuS74JtikdT3|~zEHpi{4^eWn>Lvn;m0zm06L2e?CcP< zp*pUot?_ceG$K(6e4$iz7kFwki_z+&%1^OE$qvQ=X7jgWT11PlHEjS&?f92kxkud} z^kZ)6Jj0rXFzH)qTAe62KA2gxkcmP)5)ZwFgx_eM*6|4^^dmf2k4iU9L16A8ORFH(SocYXOwYk%+?$p(6}YcO5W(8=9Mobp7(RQCnI} zM)QgVqH;W3{}& zPgRzZvc{jsT!A#d81A0JHal6li^1wzi4*<7Rgl?|Mr`sHO4tJKowspFmWtkdwgX(m z>?W*{;FF@hCF;wnwcKT0Zsu{m(YkWmRk)HdkW@m>yXmahs>1^UK>Spo{Rr3G?y@=S;PS*<)%=M0p-637JnUq z1Sy?eq;*}EU8%fBMq2;dSD-3Ax?!X!bB58D7@GRQ6YU8?i%qrjK7{Wax?|FWh`W`V zv#EkAp@JJwA$Ke9R3?I;iotIns2r%{hIOm%TvXR3mW)(bl;@O+JtAX+j;vUOqa>#K z#52nrh&1*omqwj0O^iDLtjNqFB*S;O0e{5lGHke<2xjkSY{g7|PkG<|oO9KYJD7QG zMe)b8z+?ROEXrH^WVFBt$s-L6fhaGb+j0?ihFLOz_WwP`_YcLVV^?p1D`yFg)P$5} z+9cJaN3&e$q&2h#{O>6~R5?$P-#q|5;3&yUw*w?Gg`L)aNzPDy98*}ZxAqe#ImP{i) z{3B9#u}?9XHMD0^L@~q);8+yJ8+ev6VH?&seP*V3PSO2W{?B$QX`?tKh0$;TI|Qw6 zt?n0Z5@Ak66WTVx{H+;#R4^T8HNBx<# z8F-7vb?X`>WDmwi7E7lnASUMC^rYVnVj!bA?mTXYJqp&h zapSkQfAuzjqZ(J%aQp8LK3<$6*)pzQ^ax}CD4#q8*Ogt`w3wE}i0^6&co}c!pka=S z#4t7oSmtgKDvnuPC4!r5!q#)_NcKThHshD8-1z2ogp%_Zs4O}v6YEJ!9o|nUYsP{6 z#2ouTG)}w|YCiFF>qx3DzB_CxT0_*d?^m`=SueSD=Ghz zBFNm4QJt;P4w-ek z>{c=jxT;^je#26y5b~k0JB&DL*iERVua;d`l3iQM_~E}bh$Ps4`DN2c``h*E%;IG= z5I0h;y!mLXf1N%;5LCA^(#~?rvj{V%Hc59AYH5p(7~mQ@+7e2gvT8*4E6JUBg73g& z`$sK>fMwjG=B`nsL=`;vDP>y&vre3Cq4eyU(Y+Z-VjM+%rO!w4|aKrg6Be zgx=(1Ik_3xskoKG1qax@RT@yM#5C9h9j?cQZHfxQ*+Ijf{(udCLK3AE&Y-k7${;cr zee|_!VaZpk>&*7ESpR3uF?1NV|M_RU-(eq}BicK9uOC#r;W#yW!yLhiARqJ5MRd3j2S%ffAZ2?7jy6yH+ynxpaDSZFdlRCsG2;?K;>2G{ zfwTwYRM+{}sZO_N)-o%80vj@tBapSQzuGx-aH)bpg2qUO||pB2|sS<>Qql8a^|}1^vnJ_Bk#*K$*Y& zH#pI!BxeB{wbqi7LwR`W68fRP$u%+1Dl=Zm&ZOJc4@I3nZLkPRiXH(tKML`O-L(_* zpUEN^`auiq(gHr5DUz`YtZKTNO@Wyp4JTvj+TeBDB|}K^I>m+xGPf1(vVO3v3;l1Q zZwTs}M4YC2pw?U{li-y(q?~U*RQ@rl<44O9%5rwdWt^?1M$0b#1E!}Bx3Y7Nm`BSZ z8-6;y3DL7BD-YoY@q*bq-!KRTQh1<>8 zOSOt0BCp|2$;}Z_9)(K6rGc30PzOuX!{4xJvjy}W0Gx~m_Ew^zCzRJ|omI5`a0}$y zON*ucbsx9->=Imennmf<`DyZ@msoeP{9tb(MfzY1yBL7Rc%bX`iWhx+)A5vA!m;ht zUCe;FjnrL?s>GFN54S4s(T2J;n>ymav6Z+Fc@``iN1+$^_!%zkoULaFH?6s@`=2YH zi9=5{RF<|zUHwS#OEu-vq@>r#T5D7_P6;tmTfpM_mhn(=LPE2#-ZjiMJb$C;NKDx* z$fgbj>?MwmaEACHk`J6wr|o_%HJGr}*Ns3Jqd=GwFbIW|b(DxpL**?#8%b)=YdBcI zdgkxj^4*nouxMMeZYU_PuOswM?5Yb`z=VkAh4g=3tDz3{E9K)R|DFxiQrVkD@x{#VDve|Z_eHubp z9=4l_#o5!(Y(k6D&S^FXcPuQO`5};XC=GUn;AH+Kx0Hcmz_vh8q?;th^M2Kq*t95$xk^>H>?g*W~WE2_YSx(m9(`&ey_J@ic_H^n{vY_^T2%GKyFFR#$NbBjA#%g(c3)?Hi0V$E2?FInAv=Z)dvT>qQsx-f z61-jGSs7Ndy$YOWUiU|3czNynWytzRCu7ciNYAsHrB-Lv#r zuyo3cA{-5VeXjRvN7B<+Ept;)Ks+d6)J#ab?Zdpv0(lREG-nIg7^my?_zo zyigFNbvAjbPj$iT2`rA*79|06p+rukiCQACxnJ0bW*1Gq?uv!$gdbC$kW%yFvqbLx z0~Kn3T>9{%IM*+!PUJLGBL2L@qV) zppM(bWnS2kSxa^nT++1K??}6K&w1;BqbwDShu>?o>1v0;<I&t*TKoZA^shYfTr#O##gAUZV8m_u%vKgXnO;lBt0lq>3+9vN_H{_*r zaPI>m<~S^A2Zdj~qzxxV`ReeTBI4Bt=2DQ0K_aKN`)!7jXxW+zWIfFVf$xgYauoShJUMP;BdN9=lU{KyM)9U z`Hk`)ywJr_hJPY(rK!~IAG{Ext4vs6#*O6%*(kerijDul3zt*PY(O^3YDBmqr0&5( zy%7#R5KCHBUJ!nShh^|JU0P^LIC@}0BPm%EYS%*77PwKcEGOh}KE<5uuBQO8q_XSX zTSTo*;RwGl*uJ;?+TvRU%l5pGe7J}Th6_3vpjqXY0o`(jF~lsvNl|8cxs;;VDr6o^ zHMSM^mTOYPQAYQV`h@o7OEswyo1ZFm|E4CZ?Y z^2fw{056FOJKlbkL5Pl-#rsydIlcgsRR(<)i^V||2m828zp0AmL<{Gla>?SDq3sfv z!USM~ehRD2bGM35!%u!G#YssVrE9C4Ey?|BRiFAbU`e)xHf;l@1Dzix993#xo zxTUg?mRbe1lIUI;4CZS8tI;U|Cq))s8@s7KV3}y!3#r-2fX$%;W8Xcza1P`BNub$) zs!{`aC(Q1X9_AsRCLg2q+&mFt+Y+9LUX1jlvG!5}#>_hp6ybmHazx^oeJ>atTQuVE z)UZPcaw=P1C>_%DD0Qb@Xe|-AfjLXAj~FS*La@{@7>$WR$jXSOXC^zM^F~YkfdI0T za)1W}EaY#`<%)PYtKFoer!)pmdSd`t@U$;X;IR&d*nsQNVOAq9Lhuo_Lf>?JCW>Q- z2J+tF@-zx_Vr)ZNS{GHTeyqgf%LTqAT-L4t$X6-!lEBFnq#3?gja~D6vHCcc2+iM* zUD}b!6ul-7rrZ>a)n}#q^AuBV0>~HW?7Hh)VfF-^VYFR_-}?0BxS$O?p_lu4J=$pg zZe7{alM)i)OH2IPz>vS+f4zEoqQkuScv=mp>hXCNn)O4iI-jv9V)8 zLg}EwuR5t~bECW%TlkT!>M{`d_fN?C5*i|{$a=#H$ClMA3rlqIba7?-(iuABTeiqX~ zELKbVuPcQ&p{`V`WNwOPO#pxDqwRBlTt+kZyzU(+0xv5>!QL6xecMTkr*`0Rxq5|c z&8HslgeXx7METeLT~C9%d$1sFh?kS*ES>)!<*1IHc)X{{kCr0w01DHRwl1 zeO?J|eKh5(8EeqFB&gnzM2+ANl}b&E@|SYemd06#P1GwWV-|Q8CpEA1y#^~k5$4z2 zHf$dr%sN)Mtp4-2@z<@TN18iaMH_WrK%w3`*6m;A0Zp~5q;t# zZi1(Vyq+2w!e*Ix6I+XMJMS7WCh$ygV(Wx1@dvr&%0Q1yX^7Nopeq3hU{D$ zR{*x3^;;i)0kks45foV3DJUx&SOc8ndqvE_kohQ_e%5ctbDjn{AQ~lx zns^d~$tPn39j%8Fe9=QV3a(b#qlu7#Fx#_PK{M0e^-%#LhSL_k*KI zQ*wf%FvK@xEDj*Fh#MwtE{Aa_sOFW@R{(0@^>@e@t66i$)RbksJGmB!nD*qy#(d>$ z(x|UY7XLz0Hk~TR#|L=m;zi@bTfleqNugWefKkm3LBJ63!&0+!W35-wM&}k5%E>gT z(i3E>`Cj}z#K&>67VXP|vd8MwzTDTGrLRTaRaGrGNovV$RzEwAo^dTuezy1R?f@z* zB6_M(W>oX!5d>exo`S1`=S`sxW_~jEk<@@>%Ny?X#}(;b=TWMR3T@nb+sU#mowE$J zF5`4-*E0X*@U!c9P_yiG!OtpjDVDm*_RSnM+jHNQm+qsUe7!QXO&$KE!cN=;gtE4= zY@$LyHyGb2PcA_t9A+yJ$RyEdJV#CBIkCUP7HgE{MC%KNb!CCBUD>vhQo%T`idriV zsU|3=bNWSI6N+ad*5%U1I8%%EM*Ht2=US$;bC#yoWsL6sIlMSIPv*Lb>?+CA-spVE zDo)UjeCQQ!2K@aH=lP$`xGp+?Sn!%rL*E;NnGaBP(LorSLG@@bkDybr{Q4Wz zpm(hK)!gVws{I2>&CjFfrFEb7j8M={Nz=)ztL&H`@N)FB;_Y?&V5?-m_Ci(pw7*k& zac(E**F*f%=A=1nBKA)T_jNV*WQ@E1pWPZobxr5D=bzV?q!ykxTm6Q9-7j0`OdD%B zPp{)0AKjiGX?ga7-QxZIjssJuBdag*SDMZ3Jui3X2OENGew8aGh;GzU8}Ijq?~hw= z$be5e(0)bLbzr~o=J7JldE97r(~dI?!!rGH1~UJ{g=k(77nU4aVuUy*zb%c*#vK3o zRgn7vUF6oy>L^lSMHPvzr>ZXCDylu*j@Ec;ak( zkB>jBFJEJaVxqZ+Li<7S_kycBx@$r2+rQ>3e>n)gmoQ z?yA+7$*AHf~lPq_KID!yb}(XrD?V`DVi@n99pzko#7 z;=bOJ^F!}XtN>RH+Cckxer;BBT|w$RXsS#eJ}gXkcGY)0O{aY zq>i_N&(vo=ZZ?p9LIFE+5H*?Lq~iWB6rq01lKeT~fZLJ0xXeOieAio@rX{9%L)G;; zA4!d8_X;`PwdaBEr0!HMn@4cANzq}L@#tZ-u$WV$A5t)htRfqWsi-2U4mdJ$8ZN~% zB(5vXXQ5qJ#W_`RITW8ra8&|*Ko)ZS>GRVB#uv(&?}2@@C_|!O;ge|m9WI|@UDam> zQnkaY8ccD>6^Yb}T(M+pNvX{77VpwcB}^-D<2JriIBwoIu#nTq!S*9Uax`@q%3710 ze%{)tgLGN{+lIS*@3a5Uq`N_ z3DjJUmmcNqJKERd7UEjR3E)$3IbpJcfy7k}t`eJ|&#!^G-E=I+OexBfK6v_(%U2Sr zDSrqG_~l5kKS6Vxza7jE@7Ut6P?L_NVsIa<7N}}+)9MJ%(navjNQAvE$?yBy;l93l zJeb=I72GAcb-!wx-8J+2n)5|6$4&kql3a2P{w3>rcU;-oA`Dk#g9n7~5W#jB4x81T z$%EO;pDf_Zcn!(quz<%+^F&3vVOd@`QAe?M{fW;b+__a7`oeT!c0ruG{!wp|T_flH z2ABSvLEmTvH8KDh9ex&0!%Z1+vs6Eo4xw@>YXbs4n_m^mA8JqsD45ALDj8G1<6-dk zy(I<0_3IwMnMK0vlmX#v5@H8yA6=iAtviZKdR4!)j)d<+i=;zf>5SSRfYPfXya;d( znXOm+HV{nct(jCMUp?=;C12+FVzXThg_w`GDi}lWCylv1zc;(c$5|O$%KUJoaVSltKlP7y=%J@f z>WoyzkCxdW@dC)ds245WBqzkwZdj%n0OY5#~G{q zm7(i%Q;etl&eXSvlcV!xGX&J;fDD%T`WVkDa&If{eubi(q5MS*?b4e=ySibU>Y31v zc$Q0CD%8V4Gk+|0b*bLbs6R8&0aG+%TdtKxR_kxvZH_>Lob)6FFV6^LDo#OB`}|t| zqVXZuR!xS+7fwC%A;RVpGlq?v0o5T1tIzup^#Y#`sRg3iH-idw^c%j&$RCkP5@Ym& zj2))X>mt04=>frULE0(1KD&p|5FtliQsF<>`=umX_EPpA$_Xq&1;? z4r(tFL3``c)j5k{XMYH{zfyAF*xd>pNThT9UzB}iP+e`4E$;5_4nczxGz52dcXwx_ z!QI{6-Q6X)yL%uITrcl8^Ua;AJ2h4JPgmDIr%s*c`LkEAwYr-nh@8yqmUo1Boh@-* zVT*$T(X)Vm&;glQ=IEZUR<1)W`phpxE;YbMm*-vF*HY$mRcMJ|WeUmVM*hCtY{W|BkFHIPSChRia))(06c`ik2sff7lFvn3X_|1gz`z+y)gsp9Csea6k0=} z$>##I`<8+a(Jh;KJRI;lmXZeVTYwx-Z~8+~6f&$nf;w-XI5=1rn8O0kUw=bF$U`Yk zHN#VVWKm1Slm+rUl3SwocxF;DMxL+`yFxh~C zgk!_T|1Cn`?f$1fl^L}=QP=hS_gtG&?{Qg++1ZM1pTa%KhhadSJVc@!y$1g2k?Wvw zgZJet(HR}__S;?qLf6zTju!zrM*$NizjuDi@mYR+|H-!)Ym35h)-*8xTGj>wv=jX6 zE@|+#LF&-j;r3Iy-X-=pEwi9Wl?~OYme|@;r*jbtw%eun#)i4ntjqb1JGoCg z`Z|#x2IsXXYZHJe#i6tPBLuUdfQm{DUVT2V7(V}fP|as-fiZ2ZhEr*s42eGiPe3pU9&YpdBtwbLMF8qb!OW#H= z&1zvn{Zu$vz_q!u^w`9lmjw=@s$w>I&6NrD4(%qlXC#1We0+vZ@|=n>fWG=fXfxe} zxgn}^e8v$!m+P<2L?dY`kAopD!KI1x$}FjjQSv9d&pfe6xMqR(o9my3`sJ?pu~bZ~ z^B@Rf1JZu(ZZYnte)D>88|6m0ioeUmwu23nnFAgy-YovD#)v>XVGJLU0Q8lwp0T zyBAkc$L1yGV*z+pL5U4_9M?-xru5%it-@tuY)ydpgSeE({)E~TDvw(ds~d_Me&|Bu zERCwvA!d-_^f)e;rA`Q{Xkz0b0s`Jg+!2@uX8AX=g2<=Q>B@Z(gIiLYr(MgIH0=rc z-PAYWV#O?ImCH;DSEXk-mjrUJ-Us}TMTll$>)IXP-_zx;tS)lD9Y& zTpg$aAaG-5QUacgLt;gC!SQ(hw61}EV_V?%e;x~!erQW`Qva=ANCXpLsE^Q&TUmVp zVy}%_(ekRHkVwcSwnem|hjsfcW*j->{CM^w-TloZ?v>4nW1Kk?aEE*iBH^-9)as z@n;{kLN0@=T-EUF)J;E}`o(!@lpEk9mPAf$rM5^>ZC4Q#&c%GEIHfYtc6RT+|xC_eul|c1uFIOs)pf%(_LQA6|&6Dh5Dp; zdB1UaqHYTWNIIU?Ukz|(N6N=pF)LWgVfk}eHHXYQlPGC!4cX+?156`2TM@t(KY`23 zi%4ZJ?{c?SaB@6x&&V@!5$0_n!PD)CoiUk!uY@)sB){c_(^*l&&H(3Mju3Y;&#aU} zB?g{-x9)+4z)W3HFqV>#tFQMU8Mx1xB2oyc#NA>b`XhF{Ciqh2uo{lz?jKc+&f4OZ z%ESzUdr3vck^!#Wd#w;;zwrPIgkwrIn7Mtwgj`ayQ z?V*+Y+tM-HMm|lLe7}tea+H)=_$pASMd?Txk5z)G_abXKs>q~sYUPf{LWXu`)aL-FjxVcHnG54N znD(%<)E|%E5`!5q!KdB*BhtY!R%-sW^d);iy%K5z@kUd>-aNOrnzM{C<7mGP9)8(N04E zCoHaaJh`)>^F3>-r4w_X=xxED%zCKlT(*-g{`yWuYAXM-($A^K3c2hN7A`hsBu`F5 zjscu$su8y5)EZcC?i=h#{8KK2ovCG2wK5crOD|$d==e?OIo?%~Wkf(66F;ig%2klT zQg7e+^xz7>PWMuI4;s(h8*jhlbfqrF^dQD_oELuitu9fu3G={W;Sg5o1*3oOEIZ4E z-CdUkftQUi!`}OrEerQ8vJ+}&GPF1`)Yl8l*wFx8Bpw?x(U4hU(b_dGAb+IJCPZzj zG(q|Z_igP`ALW*xSlTzbK>Mraddth=&NO@)wQMSoq@3ZUSb=9c-j~gDm5b~@goLEg zlEhre54rBPb-buzCpK>Ww>ZLxZvkHQs_#K*%JI6x^)!(fONECCVIOk`Ynrx-m^Ir zuovC?$-`gMExRfnn|ZJY>8C26(XeX~%#Sn7QOjD@sFRqTMoe+81gF}QfdCvOZ9YYJ z^!Hq$-H3S^MW9 zR@ZEKI79C68K{HH&CG?F-d{lVzL4p7yY9!+O@B)~4QrqalafA1V~9qitSldE$lc!T zU-B$ULIND`ew0OpdcA?}NGy+eG6D%4?Pwp3Vq!>9TYk#1_0mho7M#qfrX9mcI7Vyc zUFRi;lznlvHvDvV<<*L&9FMOKp0KraU*6i{reLqdc*S~A(~7TS!99R{$Ci@`X9Rhr zVF*`XF#T`gmrx)G~sE| zy3U`iZtI&a)7(JT6qvR6<*T7<%IN+6o!!;E)VplwA$z4FGX=2ZaLTSNZRiBR>Q&7= z-sfw)cp>BkgY;zMz?f@Kj(igG$w6 z@%60@1s`)x_9+TBLBjP7qXfU>BUx{=H%U~w_j=Yr*#)4bY`ah6PXufBYOr-x@=4)JFr0ol-wg%c!f{07?4K&Rgg--3w>?*Jn1 z>WXGxJvrsIne=%E_gf{xC>2D+aBwb6*k78inm-m|iS*E1YAf4-YG# z_|YgFlYM}rP-2!i(Ex?V@#S4eWJS{-!{&iQ6vf=S4JKI(E$6W;uijWb3H?dtR}!(W zk�Aa)C{;c9V)@W&uF8;|uZ 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�m6U zwdpDFxH#Z}!bgU5qyA*`m|L~#=25^oSqQS2H|&Fyr@EP(N%j#^EBPWC#RsSW!D50oIgc!kZu1U7%gWb4%ia+uVy$RK-!`& z`B?~6qV~v)!u6$yOFzobuY(ta$ z^89IfbRH}UtGU6js%-CnED*NO0`dJw!?=2>52z?HY!~yU67FJKMTAMKVO`5#B%WNL z_q{-2{9u9%eTIDJvX`1aWYY0>(WX~icdLwX3Gw`e8C0p2Cs3-Tj6JTj{$-6&vH{%x z#>b5W|9;faQPM}iG+Zn7wq7>3x-_=;Sb>%1P+2iOEecA}Bkn0i1Nn!TqZQhuw^}~weDLG0 zIKoYPpp&Hz)}V()kL#Fw;IU=B&Yb|Ncy6J#zCN1(p7=hT<5he9*8AB`lieagHRH}i zxbNOw7`a0NoS_ZJj(DX=`QgKdskJrgK`#n)n$5&2z2-1p3M7z_Q129FLompR0_Y}k zPqZ|R6!DN3g3BZVaO{ox4x4r5IsLXy@X;$W`iUl?5^#IxzelsNVV#oyMp!YTHL zHjp8YYdwA))UbCqQ?9Wgpq)OkZU_(SnhARu`@>Dgs=3^jW7&yNC{%oR%PGJf^JhFq zJtQ8UxjvO&>Xuplp(Q~5RWj>Uu*j*(lJz_RGwPDGAjNaGC5Mv5m6s>No$#TgO?bd86P{K!IX-r6-y8DV41CuT>aK7s zNn)_WTMYZ~bJJj9scw^Ulsf!6xLFCg90uGWO?CvM-_SL~OqER)*Jo+Y) zZwo+_?aJPr=7U%ZHdg60P>C?9rbJ47586u!PLN5r?GrqZ5j`?aND1;CYITS&I$I)g z>rbsxc|YyGKaj#U=e_=AkCrQ)Jp0c7h3uhps9voi&SIpWah_={w&3_i6ptYwMgImnYa2 zb3V{58_A*bewSD(DPLPhfGKqGnVi?Fr59Gxxh?K88^#h-x|dt*5pqMNO*Yj|mSt%AGv zzeJ>Rjxp9$_Wg(HFCG#|?oIEf57aGr0Zw(dNgViyI{DR2^8dct0?4Xy z*hts}sdap9q!PH4=$a9H=v)@sJkgYOV}k&?#-Jd&fW^wH^8jUFckW4t-HG8~u7@P# z9hbxp$x%92uaeOwe>=E;Qx>redSMVjozWVC*L%rTZ;8KK2)?5zD-W?cCE zS1lEA5uz~wzp6bX4dV!0Qr)q&t$*jFsXmk z%N;*qsN&QC$%HWoF@AW>Qx}9R&L&$`kUnZ@6<{j;B)$rt&BDi>xum-Z!ijTPN4xjD z%x)Rgc)DLuwD>379=CWD1q$6PxKjR*5pbaS6HJk8c}tF?^v6?xWZkM8&e`XG8h>N! z+AcCh{NF;0|K~P%hA45Y4O^-x0?&%omq4<8P8=2=4sb`xJ-bvuT@T$~Y})uecJKv? zX%WW{mX={F(;VZY>?v9GU`C@e)bwKMuYBy1WK;Fqf?m=tfMcmJXoCL4v`|s6T+b5) zzJ2kZJb*=DK*z7#P#cNV&@>e*O~Tk;wa^2@Iz4|kM|<5-;&ZhJ|6}w@85EK;Ji`Rb zge*MsQO&T45UXJ0V3I8;ygoPZMQDs9F49Xn!UAjw9Bw#`fh3NWgzZvQTl;4F-Jlxv z^(S(_o0L9`K#&!h_xA4{DnmBkazX%WVHyYJ(?l+Q^oRIGM0!5L!$5S4dXV*q#IIwv zU;W;%N3KJBE$z6KBPHIYp!D<2XD_bCXjr7`EqFzkUD4zZ?R9p0p)wshsQ)qX7ZU?kfoZNwE5t|2Ghtu~-NO$&?iV=)q_nbAo%zrJ-4| zdT7>)FiJYD#GJX}a_m>eT&cEh&a?jTt0z4~xZeRgMCfka>}ShL`1*h=twR5_5m$d? z(D~zfv}htp_jJFghrj^G7^*(NW0yGgcAIQbWIWeJ-)AZ-D{Jp9w94VR>GW~Z*c*w* z63a&{QcUO;4gw~MlL&DaYmHQHrZ(F(q^?}gh>McyICNywU9g!i$HDyGUiiTN9Q9P*%o?HyBx^lp4998) zFPIb}dA%m2x6`7a(Dg&yC?lj9V`RDd+E6d9^Ou*oTBv48iDIV1vb#)wS*Nd;j!C9( zTd79p!pgTj)^k3K4&<{(cu3{%ZS~_d(oGWNTNFO3&ycM@2&GSKfk1Iko+Xd$_l9-`a4w`e}-JEjA1sOp&) z!*>4Y7E{#zcN<(`v1a`n0T)VCBSyyXS6~M1G3i4wV{uYSaUA;mX=+p$8Dnl%&oQj_ z4dYp(UGrh=p-=h7CeqLpBa4q)$1w?zaBG&4GR zK&G*C@&-q~rutW@xXjgf@XATx`C3XQI}6@Sau7sbf`~e~L)HojpxbY0gP+&J%l0yn;`I zLn-#Z`K`d~IB{>U^5eUSJVgu1lP_mBJGO?j)`x1Vcf{0FZ&x^A8M>F0mpE)>NT!E3 zu$^kY`}8=A^7rEj6b84rVCws|PL6wP#wS>Lhfe3z3X|ijsaaT)dgozbmK*vP|wAnJD{ctFa@ zN6^2KDWmh?cT@JkxTlK9h5Pv2obSl*xlZ_vRRO=TR3ntpS>@hDKSOYK+-AIeQPjRd zJ?ds58G&Mq1hmA9(2ud_h-|dr+r0~T=i3*3@Dbu7!c!@_T%*~c)peFmgov(Fpe0Tq ziNG@^XwkcYT9EmGsGerp&*OzRSTf#WjDx(-tqA?o;<_Pf0$pHpZ?nXq7Nr28vcwpS z)!N?E+jMELDCuav}~>AEa|^ze2BpY1OVW z&OoXP$#?N#^V)h#p&6IrR@X}~Q-Oh7vsSk&i{a>ILSW3j-y}q2j7rLD-FwY_-oQjB z@Zq!#;1rO`tS21TIHa%p^+^~GF=?Kn?A9;+AU&tSjcq&C&?#%R!3mvLHLMlMdF-nU zXPr*^PrIKAvBFEc8>EGM{|zMkTPx=tD6S=$lLR|U<8?>+$f*v7TFTp)bY|aebtO1o z<9Irw6rkfdJax5l%BOV>mZ^*+)d1HG()BwP-cQ1@WF9q#(DbA!YslRC5{mM#szQ1Y zT+AaY&?dwp5di=k3T{ zWIf&Whoqubd0nxjprJSR6*BlFzMJ1;tn@TyS>%Ms!Rf#e?#D{v+BbdNgg02`m3Sh> zU%%2wA<s-7`poF8&o_*o z<%%%CX5F3n`t%3>&s*Ycq`1t7;$!HbNRn=);nb1R^IY#}yN!YvxK*q!znk;rDf5QtUdw1NnF0Y_4OU~b=c(Yn(qqkF zxHsMUr(5sJvtK4P{dFy_GcexAQ>W3(?*H|J(bzAHdjYg|g+dfzy>ycZPlR=8FsGGS zGp+%MSQ|V%t!;aM+n9?HIk^R}HbO`L`wwSOAsXt_M;fZ@tzH$Ui-vnhFaLBdXqrkY zGi)%w;4AR*Z|6oAk94yxDw-xcY_08*1-X}h8{u6TZm@=*LGqo|Z3gM7^zcZCdP-Vn zfuilZ)4v|e9zwdPTE|<=TQu8zNxMxp9tw1;k-S{@pn%>v*jiSlWP(3 zkO$%NPTeqo({O4B!ReXyN;hqM_&zF|Ggk@DHodIM;E%8`Dpl|@BmLOJK*F8~f^o7p z#tj$kF*%M?2#6qZgXP9QNc|0$HshH)4)eZ;rfln1KS@j|zB^Zm-4CgRJ>gpiy$Rvs zLx-t+5lsI|P08bG-wQVCXla_bPRBwtXq56VY*$_dJ~T>3UH#;uUaU4!>TG|sxR=qc zXxE`c#KGyGlgW%{=iK@))BBgSvXP>x`oR_QXrv4VEIm4T4{yKan}dBhJ`ew%I+t}! z>i6sd`iTWAE+C(?(ue{%a-7e*#hcsp$%Jn|^8yom!oBhg#{+J} zrXJZr)tP!u3iJ3gsgkLG;vOer=kuwKsVI)q{UAPtszy;?8jeO*{(8THWjK3@csg6J zWgDxpUPHWhz9l{z9kW?W-#@F@Ylw%b0G5nNzJ3Q+n^5lZ>2z-9u!p=Nmx@mY)tm{A z(~t2leRfq}u*PLg*Kgy;5_JpW0FowoN z4=RDc>%7Hrhw_O5fzTX~Fil8-yz)`%0(AkwGz)cnR#|Dn9z|LpZ5z`)5?k=BZ3K(0Hm z?}BMcIc0zAkmFT}GOL3vf)hE!raAb2jsxD(G(N+&x8txT^KE=iARHl-!9#}(doiYIq- z*Ne)c7u)5?;@@IySFO@HNV&c}PFW!q;G;C;^Lj1*;tB)M$AAAe@Z8FKdL#PLJLqWa z^H0POM(u*F5a0eKi5+lON~kUvZ2LTL&x&LScjh#41w+D3R~9sDy3hGVWiZ{nUpc4q zmA7l3h1VD_=aawsH1#xBD)p?+>$6rTO;FH$u@3lA34Pl-qST13JWbE_d6BwNLC$=- z<=W9n0^kTZPQBH?Q#jg0uf#zy)Px6nC$IfrALhS228j~?JJK(pqkk`1y19jwo6YDO zjysh@48E-)gHz>%YKrzmmK_t$+!_Ya#wpTDiPDCU4bnq&rW9Ei$J-QTmO$HoWJPOJ zW-FgBo43vx%-_kO=XAa%YltGReQ)^{7VLimNIpNCOi#Q3m)}@e&z#jnf+yb3QU8Dr zHqL9orY6}?6{Jd!T7%Y(4-(cU&WJ8R^q`sA2e(ImsP$|YeW|L$%o_XJ!BLVa1j#HN zgaefxv5qBBW&K^)3pUBw@ox_6>#`18lfB5W{qwK8TK#fm&u!|^TU%tk6a z9L>AeJ%UrHj5F=&N4w$aku~ws;pV>w#rImgb)IJ%Jfenj_3-ARf(EN6b!rWup<{AO z%Du+Thp=&I`V+d_fzT1m${__9=Y1PC0jqTXeLED2PQS$VOU85bOELSe8zu8vvFf${ zF)M~(pv6hTTPAGh?W|t0ZdWtA`%2_e-;Z!N_}<~Xnc3OU#j+y&n{2!TqA_7L9ThzR zB)q_rlM@Y-eGGiKA$wDq7&F{M7t@zWyy59?Kny35^IJu#+57|)p49|sK?qWI?S#*6 zQR0wO`bYyh{4CaA7$3k_O~sKMjMo;U%4W6N$gk)YcJ1&Y(*X*1_N9B7tqsrk8vOl# z?i~5Vrl-#jH)Z?Y54a9o2@2?l#w%%zf+Fu~$Apz*)r#qY!tVa2xXnYV?nMYq7V-$s#Jy8ex$dajNOXlbak*X|kp$ z*55OWa--j6MW?(CMfK~qqKFfj-FIjCQxJBu4i#tBP}Kzt9kkl*Z-BMCjH`;ViYSHP zB}-XOoBcVp$iswu)|GPQ;xT2FbX%Uw?X8o&VC3##0F?arTLD7v3;3&A*3Fk~jlL!0 zzHT{0_-=?|NnOxL>!^wrIiDv)2bJN;ALmrxvrTjKDXW()Y!SJ)6j@j}28LHE>!J26 zfw}UdT@^SlWBlNyIUrnVrwOYMrBMTDKHKwA74X00W}ek}+yNo~pZNF|opDGwK0p#C z1rZw+l)qn18$sv7_ka^czWFlrMa#fISX0pHb z2c#xH{xOY!PZx0^*qelv7(C;;z{b43>u=4B^S&x~cb%gwlC(D+<#pHdc#|t>ipQ6c zTqo@8wepU9iekCYWPT}}WLfq6&|BWb-@$r!3b0Xu>=xRe0ZkjAs{*g95`*>mW+&`<1 z2Z}puf?P-U-RsQhfx0));viV;$9N`E~+Si>6m$YemY{*+tn zr$(v$_(i}kb8Nw@2Bgjllu7ox!EGQK&HU?w;OA@S>9*7Fb`BIn#9RFr+KWF$xBE@= z4aHqH`Q(C-PuBG4fJHZnr*HQ~SWHlhIw@?|`hVC$HbSK0aUkulB+FQJ0`hCQM9aEW z2nK0)+Q4qjJRJg|Jte>Ml?OYT9T$nGy4Dt7Q?IyY`5N>B`u^uvv@J!-h>DEZ0F>!K z%ta#X%baWju|*av?~u|(iJsNB;3V6({gjL`mS?BN7QS+QoGRg=X@$*5b?TCuGbiT@ zdxz#i_1m_PFj$iRt!y0YB9Ql_^*NAWoQZmV5aEXI1zneVSJxN=vAfK)Ne2#fhnr}b zT9Y0yv-b<=_%k|Di+dk$wtpPDF?2>c;C_I>sz^10KyxpDbYyvg+!}X+d1;D+9kK{S z$~Z=Ipq^LseF%h>o|%J$cK)#CqDi^XECpeVAp9Ch=+q2?%7$H;?Hl+9m@y!g(A^!oQ_-aY(D4>A!euB>$ZwXErOp z=wsSbSO9uqr>Hv})!dnkDa4jmvCET*v9ExwmYQtZZB_@1HtJn7=%Z-SS%4$^tJLGG zRA+>*oc>~L{V#Jmu+J@qLgDLV*j{XUJ->+2K(L*tN9l#*?%Se0Ht!TT3&6`DA|nS_ z(&zYT3grFfS+@HsME+<+IZeq^@AdiPnUTRw&!GEhV_L0)*XK$dNI#mntU~6o94ql` z#@J|5QShw7r~umD)tA@u(}T%`(}_2btj`UFtosx9Y<^EW2abIzukK;S+RNr+DmAGw zubitVDLDr=vT!(NLu+;+G9P-JT3ki}srq!tN7?EoX89>6xW_jDke`*p+*%xbtVJIT!_g8TU$$1s5EQnuf)SAMvo)E0R$H z{}z}0t+H>75ibcdta#|)=g=XJO8Emlff#_17`N|eA1~@(oDLngG?9*t{=jR8{9#reu3}Fii}GEC{uAOpP3Rdq~t4w^Mhk zz^D-U%}t^!9ISJ#=B{3)P4~jf5AMLU9YFOOY3T)@=L&5%LUL}fEpJA8lk4--D`G2J za)td6rzlC0^Ny{Ogl6R#Re%t&uL2?k8yoM@iD6IQPCP)31Bs!FfRbGBr!K{Gg3lc? zSdt$>UnSBzA`U}hte?d1x^(Hy#g#nwW1bb5;eRmhkZj|a{)tQu^N(?q#vsG9Ih7IsvOYGq)2w*!b2srz{_X-} zz^friJlm8aR8BrySqud*WZZtA{6-0c=>NQFNs?UtUC4bc-ni#*=!Hu0mG_=!?O(f@ z(E51E$E9Fx2rn;DJ2?!=*Fi3$t=hYAd;bP;+rYdrP@nPx5 zPG+Kd1T&n_z58Du^6SBWoNTz%DH8^gNlcuE7HVaN&7Y(lfV-P#6Q`*WE0;=0Uc#f# z-y7|p)3D*M)W|5m=Nuzg@hg5w{MCY+qr9zH&Rx@7%iq2N`$)Wds<^6aGfl1iJAE=l zZrYIden`C-|18A6CTnKlq40|LN&9G&mi$H4?)S*17cpF)UprKDdPLV zLu@l)rp~fX48Z%~CJLAyg#XRYG;Wu#;5EtkK2w{j`r`c#(J)h8@UYk3m0!3p9_HSH z=US!A#@k!y(zjJzvE_sn^h>s$E$P0-_6t~@LtR^BhQ-aitHwlSrqo8z&pDf zQPjvopj-F2Fk7+fl5bfiILt#b=K+Y)y%lK_5iAtrD8hv0g2iTL?poRw$dE7*{w4QF z;_CsiXlQH;_22q~^5T>80*vZbL}>Z2U2jd4EX$mtN|gI9j^2FI@F$_E=8uC`u!|oo zW|P3JZSzG{hl0qFEJxnc8XZi^3w^sJS;N1&s3c3jd#^;_6@U}tPU)DLat5-#0_O?E z_(GmuNYkwCxw$gUB}|rCNlAI+`Lxt%M8X+}ehr9)rJs>umj$MjVj*6=q*{gKP5s3SSKJ zQ6(YJ7}6%H#YKsasAaE`p=n}PBqymV2s{x@<0 zA6xq>%sKuTl5WO@MWZmQGIzT&DGb;UWP)Bb9!cUIEAz*qAdjIrY$1jZi*)(wH^$|* z$8^(v_uLGEoP=qh#&kWt<)Kw`Vo}0Fwk0sOE17RP7L8+@AG)m6!l_pt`|_9sk}ps* zMVZQw-4rhq1zBKtJdn20xvCeePZt9Z9ySD(EUFHe&+H*M3pGW#APN8G7u>U|a1Ig< znr@9NPA(kI>-V&S*6RvCnFHBN&aGI+(oVT7Ur;9fL6e8!BZ@9E%TZ0mg+~E~oc$>6 zCxjJWHyuh@9VuIEtjZqLyR>foFO^Q<&#!+o*3sJS6b~$#;$;v~cHYasNdm zRgvHh3O-;eEw*v*$(Um>0G*X7<@(M~UR&0_LoLPU94yh$JaG5qTE+{k=$8gu*1}^A z3=L^LazUp=Wt-6%q=oMjyD5F$IXqDdDhmwTYsS6vd_)6I#pfq;!JPD=LJZxJW zVk=VCUwqr>VK4dh5EHFS@XTfNn=(-lO=j`!0Cr9me6U`r7n?J+%E)&iQLMS{;#;>P zV+kjt5fkLeMb`T!%oEboErnmUkS&5JU*-lBbHjnfXX%rvscsx`!OECe{ieh`D9V0r z4vnmf1&1|1Gjbm*&;~@^ln^n$Z%Q=xqQ>0n#=(-1Lq*=S(}k__%(KBXy<6KPRuS{D zl;8esE-k&#rTu>pdN}l5m8zPzvn||0x|w^Qv@*Zgms1y=Ud)`{MoiOTYV)D;Qh_(W z$x39Ueb~7AOj~S!b<%ai&7_#mZ}60h3S|D-OJo&9@IvsVs~R%$U+(eQwx~Zi*}LVG z<4H2c8hpth`(8_MYtK4kHGR9Pi;8BE5qQ z*GT#)m5utqqKwkf=7E!xiv`Ene=%tTomCBUGqAz?Q*MhMW3@{xSWM7)d4!P?)pl~8 zJ-7ageXb1SD@B+{p@GNT(1wW|(5Hb5hfdaPNMar;+g%&MxM&)Sazk=+yEg@ra(&vk z<*enCd)4}e+Lu9bIF?x9057ay9EPC;SN>h(r4tcpJu_lCBYUtiWx2Dh1i-J`8pN1l zv90JAN?iJ;DeyRVcqR^GYdDRM94Sym+76lHgzp>SOcVDQiM(m1N<>`nHjD!V#iHQV|VDQv38J@ODuKzD$*Z_{_c?KqH*1(vrzez+EXe{sRLK^#>@7M z)sNa_tksBBV%mTqnZ^)k-bniXZS`1qEy8!5Is_Wh>Uc9aRJ;HY0^a$a%U!|_rG+S+ z|D2RBF##d(8C}L5j~B0#h)AgmtBUUXeZ&aSN-wdcagR7fQHXm!m;yyKZp!(5Q5LK+ zEh0JYJ1(t1cBbBnY~RheXlLQno|Roq)Vw=g)nU(y9w^O-53e|0sjt?V%8Z;5EdQ8_#KORAWEk)tDz_TLs9uDh8l4|GFKHS%s}bqgu%|x$f{V{TsTF zq-{8BTPyc8UT1RY+i-Vw{GzINV_UwW2b3sVKV*q>(iu2lN zAw59#e%4rFz4*mdQ}fKlgfZj{b~dkkdJybMxw0GB7!wnt?AN_Wl?+!zkdT_{qag)% zlH#rL$Rtm!;x1c;8KbRCKLuiPXI<{^HXQds>PUr>#1Qx55fFqJpj6H*EwNoy6}UJ! zXbL*8H>(+B4y2C<_UYz?9L+=U`d&Fcp#i@58yPkbW!xz!0p;lB+r+4Pp4TVnGVPBg z&PZbV(&P?-_6CeNX7FxWeMHf&SQO-cJw#SlnCKr^ZR%R2`UA3Iqn?*J!Gm*9#qrp? z#NO9eMsBDsbSoZ0bJR|bAv9!Qu0`xdL8|CsHBQSP4~>?p9sf_wyFfO@63?`;n@C@omoyQruM#NNMM-=KNSC{!7d0S`}vl3_Ev z2F{iH{=&Ek7RKa(K^6{Jt9;FQ&5y=y5Oa&B!(?KDjxBQt{!JV6O%MGPaly#>PAY9h zL%E3Dv2(em8A5!XhF+lQ$IJ%yHJjgP_6_P!_3Xb7O1=`4v82(N+(;R zI;_I>8QIp{-3@=7AViAh4U$PG+ix7S(6{6@iyPt{ z3GV{G3jDrEL9wm}cLk8mEzbrgOuL$6k@2p7AH})j1UCw2j1RPH^yO((FL{lYVoE&a zM3)mJ{3K7*+6h0EZx9v7ZODsO5M*jett=`^*xj|W#Zvq2K$wx7oWD5%-Q69-$*N;5 zEcJmD0(IXCbcN8&TD}%e!Y$>>2_3j+?d)e}_88pg@X*}7gQO81f=rbtE)*O+@uoqA z3sg!UT_V^XHU!_sR1W+Ex6=*_)wnndan9yfxfty@I(m<>5J)>Ies)=I(tNSsPR4_S zDmy-r{ANLp0Qg)dd(MADed`TwzW4hXPZ>o21R8%cT@%c?v-k3u>Jk2cN;s`iUW+yw zd3J)-Yw7TJK+IB8`0|)KS>L@~y<6l@8!2Su<)bKqF8|b6_C|fLAHGsV4w*9xc=xiP zC$fbb0*yc?F&TileYyXPKZiX>bf9tA#Z1-bujS3C{w;3({!`@S0MaTvWiLIREtp7T z6~M}P^OG_Zxf6>@+3AmFRWKMwycc)?6^VuQk8c)M>)@JzZz+2 zxPr40Eb$=C3`0jTTi_Mz4_8$k*oGckuf~2MJjujCm&RJQAkG-qWsleAE3DY(hGFr2 zXA+&>`d^DSPN)XfL-FCu;2v%jot6;x#G~N}>`c&8wD-`EGRQ+cC z9L1*l-fQhocWcx`U}B3R&MnENR{;I9&=>XDwwQUjK%FyoZxh%{t~oS!p+~X#stuD` zA3#=Nw)HY=BtN4oG?DXn9^G!D(?FEI5>Chg_x@be_k*W~#V=iinY@bqYmA|<1RP(Y zNI5=YZ@{JwdVGvaPD^z-rOWT^)@atzLe*QE=53pC?YY-N>pcTJ@;|2?7IRKL#}Joe zwKfz@5D2VyNC|Z7-JvF7tRj{lx`eFXyBT987k>E{>>XMq*A<10E|l6Pz`RADqwe#p z5c*br?}+B8DG+!rIWwsn#}@r zx|AnA{Jl}?Oq*Y?@Y)p~d+1}(^4p^HAT&M=jC$8Xm6=b%&tiAK6@B&Vp`ZZK)l?h= z7`gpT_n#Z+FB~L3!-Tz!DB0vCl=-mVV84H1>x;I2F-x4&bvG}XxkUs}B++=!$AHuB zWmuJ-c5X>zcDjAKSz~7R<)y>nxOW!|PQ~5ej&B~$oUUOOsfS*ekpK?)eJ|Sqk_o;^;)@5(lHyb7;d%Sxi#VE+(b_x=+ z7<@uVMQN$F-T}zVp;=A(yUmOH`~!oCNWkX=8G6vkg1B|3<7AesNX(0)pAL<^y?sJS z3G0lvlG0Ed5Bz{6T|-%!YW~+ih8X1<^MR!IoiDrdB`)!iAVy$7-YOLx1H@+-t&A)> zd*bgO+;;tayt*1Q8D7wCEYcxe;9-YEn)Wd3!m!#ZQcIEsS4ETalKUF;I|fvKMP<9< zBT&$MZaAP#s=j}Gf0o3*#;a}d_1+kU%o!Lc)G`9fX8H@O|9uw^KMhTVwEEUslT6~>v{<5+Vpf@ zMSjm{8i?#DN2RQr)a zny2@hqWj4fco!6o4%*Q7QcvBI0}5{D(LRVflsVLBuq^y8mpUKJ8yaSkZgRLvC|Xjk zbeEuXT~R$!`ysjMC zU)_O7Z{h*4hLV*(JNxe^g~Eg4;f)KhCLC&($HtAK@1Hev$H!(H&huyK1WyTO6Z#S8 z#I_%KS&^Bc2SgNUWcA?e>!o7jA;Z&1Hbu8@dZrBy^_mL`_j7p4Um-MIpO2^4XBT6y z0$rW;hDmiMt1b#Y;^I}t`8}}Uv|PSAB~N;5g>wo-g*^4zaa;%(JWTyvTk>y6fj%)m z;jNL==XORPpc2-^m%^l5zjbh~M}mxf?K^T%>cep%F;Q zC6g1_;F@m&G5$M4xYIkTTZ4VPPi+L$)Er*bKThGOJZ6ykxhq_83K7Y&CnK0d&N5T~ z1~|U*^1AP2wzQwmUCYnWT?ng*T-og$Fmy zF_k|lsX~zEB6uq;UzF+KclDo{vP_ZNG(+mMIna=v9%98)VkW$&hr2kB#v@qygEH1bP;Yb6N8h9PD|TU|^Sw}id-o`4mjiZX?s zRD~z;?h+?k$*7c2_@Ig%I^=mhdiMd0sH3wkTKB7cwZ`mCBs4QZf{@@+c>SATgT@u< z?=zI#@<_U;D}xwbF)pCYv{euHs_(nR7m+zv2Z!P^<3=?jV`IV`^?aNP0J0@&Zo(wW zxG>IFp=%~$;^J@W_NA7~41>KF#xX7y{V*E=BHC8LL=A|FjsGG?@gOzb3#TMFU@g`! zE%Y*a1$}2qY+dE7uJrvJJx9@{jrZK2w9iY5f&3cYhg@r(mmL_xEtJi9W{ykl5pviN z_2c0F4L?;})^+EaH3whGlCq&5v-=j0{aBIj%<6f-4uXMV7rdh^+(_pMQ%Q&CA{KsVKV5mn7C1T@0f!+T%xj&MIh2J<&Y+i zFdyS1M=!+W#X5wci;Krj+0dfO(cpzH0TQRAQusL`d{0K&_lW6G%uG)CK70~>DbE>R z9^7%b*ZC+(T{RnyomKvSujyFC!KhV}cnx~FTwt=7>&iR#WA?hO($k;MNP}(I>$&UY zt~UVj@=vN5Zd(0cpux&i7YMb*(=n>{>O86Y2EbNz@A6~oH4a#UbDzJ}vnL-zhNTJr zLv1j!GVzVi^vKO;y^$rnDQp&^FRkOIu0z4x%Qa?(tr+NJjO<;sG?bxeEVnXivC*dL zS`xzS=4DItod;*f8FbWC%%bHxWOZ)cq2=!4ir-t^)T<#phc`vHHiX7^Qp~ldKlZ+P zrvbYTs*EfD2D5*(V#84Lc27u)D0v@@SY=j`@spK{79vLSv%WcP>JC?`d(&-ZrHOHi z9_Qjy`ZAXLbCfN)sGfSS*hAU~7=lszd0Rw-r05dQf6$u#_qYCn>xUaZjs~3X3|-e$ zO%I)2atpr~8}Y}@Js$xIX$I3H22miT{`JirySIcie0u!};T7y!(*V|ro^`Yuqk$+g zn^7XlwGsujP#^zT;YGaUM%AMiNPx~HPec?t=2i$p|I94^-&%4PP1QG?Z?q`Om_NqV zSI<{;46E{7sg}Y*t3HWr-i7x%4#k{3J=HT8d}?+TkJjdkQTu6bypsqtfoK)k-s7c# zUMWSSq^7bt+O!-q6{~^a*cHMOAC@86O#9<4braB_kR7F(TGQ)p(I85m49>}7jjjeo z`5LZ<92um9G8^NvTtXDz-=5b>=P7**&>rgsbz8Xjv?J{ot?9$iWnpJ!SbsvBQ+J zM2o(4J=uFv<5M#X2~}?@M*NhM=2HxglB=@pux7@Ne1-WDf#{jSDlp1)Q`guw-S!PQfurO_=NPH9D_9jeq(&_`&yR-4BD88y(KlTN+0C z8ZA)YfjZ521w^UWEYNKQL+=x+-{@ZlgL;OKybbh%7)t?ziWie6V9z0=_Iumjyy2r} zYq0|^WV)~mzbBCmECSLAdu4GT30|J4GdIiZUHr~z=Ms$){ZhY8LSAP+Ho*3IJB;<^ zLCjyjD55d+hT2!g$F|`WJQ($K_zBdbV3KOg=(tg`rkify;#03TGD`F2RgT4`l48@c zX`LD;5-xD6<3iqsbVyVo<8w~D{p|5RIuMH%e%=LBce5Z8TPACm9dZ-a)ZAg21;ZR> z&+&_!5c^U7Z~A$P6`GeT@JUQysj-JMzecidt!|T9h||{DR$2UJ;tIeO<$TodMo&!% z6j4J5@m2c?{j= z8W^qC`b0b+w~^A67-uUC+*1@GqyXQXN3AIvN|&straXmKurI!kJ$V^Yd1OKL3JqJd zTAiY;M&FB}KjgnrFLX1fKH#oO=PZ4xOGq51c|ehO1 z2Ob~)EFsO|%&{%42l_p_nnG@~jLZ}N`md8Q;ZmD+sJ1*vJz-<9V#8hTl90!0U}HLj zJ-4*BYOKP~Jqg~}drS+V`#jU*;bR~p$1!mBbABy$n0&QEaV;djLu9eg@*Gmvc^QTI zVw-@FgzrlUxN@fRR_jACAC&h)9NcJXb94LPWfakQp*93rDF=%{%sGgMv_F{>bF4p!M^ns8_-*9f9Pr(XpVoE%X_Xf| z-M%B>Jm>D`T}}5qg{uuBktV+FG_N+y+&@Tg%to#1jg4G*tWpEOu`_yyvz;8Q*a$EZ z*d9=mD+YP)yZrrGzg=2|t+tZJ?#SyCi{qEHG3?>gP?~mT4t3{n<0}!VF{+qV!nUyY zJVDYH^d>ngC~QNCiIe%1nG7bjn3;_HN5N*^BH1~+QhXckh=Z`(eUyv~i;YeX)2Kj{ zgNxTq`rb`v22zfLJlFA;CNVv0?&{}hDKGna6KvQO5<`wc>Q`R(t+nVo#qo^I^&g^P z{#(VhN#&lT?fCW-@j7ezsYjdG|uUziCsn^BW0PxMh*3tH3o6qZ^3v>Bwvn1UnWh(9&_W7 zMBkI}NFFqKGp@x&;QIqe*+HrtO$U+*!crRJ&6@r5I~NabNDD9PKC`<9^tixzkYHo$ zev2FYg?5PZ7ogxAeK+-#hFZwR%J& zTmbsHn;J^A#UF7RO;mVE=>XJua9rIm&7w6W`q@E%S8E(aQH0~Yf!C3Hpos)~uV1yq z@e+nRgWbDkS>hcf&~W^gKUwKVf`QD(O{ar&;W-i);M5k6)`Wl9t@;F_W6UTD7uWk~ z3(GHf9gMIxuf1aV&D!$sR^TY0KG)OF3#WtiMW937; z+8-iqsOHWFH52;-iw+IR-wnTv53vp@}S49C}gjzB_lz)#r4HBxXw4?CR5!1uU`P@d- zi_z$)dvE9w1io?qB=YCZLrv`ZXZP#1JAZ@xHT_0)&QWtlN4zrx;_Se3r*@NbV3w$v zdKkr=*-WhTtv{J>N8!6*jLqkn)tB{~#}q1*B88{K`^Vbhd;bKtRgu@R2$BMuejRXN zsXaq?% zQCCgttazKV zp9gfiKm`y$HYtclT-lvu@Jn_0Y5okKK@M$9jbI+;0k{@Hz>AQ@94J>bIdnledtUBK zIE*|G`sN8@?oPk}#>>$cSt^POl@mUfq22GiH< zcB{=d_|k9M%RmoW9TXI7kh=4|pXV@Edh>_Dfp@blX(shMyIQfJc)`~x8_hKRP6}CU z1)2s?)=+gY@D=*yA)Wf+JvsY;D+UEUcp?5+;VnTJAlR6aLS*}8yhBLg3tH>etzhBs z@UX+AxU?T+{q}p|MGX1CFt-3dKkF}IF_e^@WnW4h{DyJ=N1AhmDQysgkeqx7mgxjN zMg?qRl1dqV>pSXWdT0U?n#K=!&GO}yDdEmW^-cd*fK40rFnX6OMe^o;3-#lLvFvt{ z_A8@B5b_4fBsbG_At8zHv3!ic z4`sBy9C6lu-(rQZ#1zBc3Qc++GhD>ff6+d2y%@TC9~|5!PQfw&^< zr}R_?;IHr7P^oSB)9<2U-7&3Tc~T)8E{DIY z;s(mQ71)&0fju=x0{N^M&=+4lfYN zwma1}P~&v)`KNnxp?75)FTJ`R{ce!Nbk6g#9v8TNR(Wf%iUQFwQbdo6zOWElgrnLy za0^S`-U91YOu))d)Z2Y}4=|I*#Pw^nBh!Aqgd!aO56GEdlO2(l8raAmE|;#W&NLs< zxlJ>$#J3c-lV2z2iy1YJD-IBQG~j*jXC3=TQ}tL_QN6rb--WYK8~%hx*GE)|2?Q|C z|C>GA(PvBakE^{^c)7lkg0zyza4lC%LMo+zS)-An+2o4&OFCk;lMaIbwWupDzE675N=_COfPX6uL0gH%L{ zbVD5vKHFqT$AHROrCV={$JoYaTre>9g?eOHab7Uri;wUf*K(M~52T9#1pfLH4o+DQ zPFcVmna_3kk{#KIy;bJJy{JdJziMCF$0`o=ize}=nI8TH{wagZkJaKgETU$p8-gS~ zRtK}?AC4yIBm1LCw3KXKJQ-`=k5j!BkB>oT>I-SAVIOfT-}jJDHvnHiMT?SpI7V<^ z?k9Kexx7V(j7+a9!-)>j^VVSFKre=ZQVt+%LqAO)r&~}(L*?p*4Tgh2Kx4Pgr29w7 zsAXSK<09XC7L3NLkscg}iv%V-?!|7|c2cmNQU0n9lKY+qY~sb3b}D~SF`V{@Ya9D~ z&cG_5;#ABsc~`4oQ&*wMg5rAI4Izn1Oq$13GXKhK-AiK3o)q0r&ydf9I4ppB8U^;;5?YJo9|v_^3}lJo~Hh@)1Py0a21NE~Xc%xxUKQ z!b6fDbEv|rC*Rd!?GJ1D_>07QSH)JkSN$9q%Q26?VwP^*3H&rOoXke3siOnrZxUthFD3PS@yO8sW>${=r+ALy2)#WZE7 zd7FFbJ;3gbK4qBVrReXTp&=;#nNfyG5+c4d#T+2{q~Ios{;1?T5u3O@$egdE-rGrR zIjw^rzFzCw2!>bskP-di4eGP~dD^?`ps|dtxt_qWSmRv>OwXsl#(Rq9*{P!%uBSl4 z{+9QC<*pXx?=#ZgW<2;)m{|LFQ1k}gdw=v09{@lDH^(cbv;9$6J7L) zo9yBoOmAgCwphyW_v8#OQC2?e!bfr3CM`}qUU6lf%6FO_e@Ql}?JC-cSy8eZg$n&; zdy*crD_d56!;JTpI{JJ(mb&SKHt*@A1Atn)R~~Y6**!$%KwjDXL?X)bdsj_*zJ0Es z*P6gA+MXvoQj(TEjQDT=5O?M4$$>eGQ3->ic{iCa4X`uYR;4Bue~4p^%8p%=vbsC1 zs$r%;RMv*f^_m%@>GSXn2bmpC$;K#R+tp6D*N)9MEq4ZK_BUb8D)698)1 zIIwR0ymD(_Zi|G?Di1H2>t^HJx~l<~JvkU;z^nHQmrV;ebk?L|w%>RjEqFY|snX+& zq6^Vglng@2;Sh(HOJzIo99Wf`*gNO`h-&X^^pBG5 zlZY{YtP@l|kc=bX&&qM@!R3mQ#v1H21jAL~2#Mc%*oUOYXU8Qk4${_^#7H+h27 ze|8h>Og(d<%p6+wqx)8?sr|q1D|~nto~$H3s*2?YSa3@cuv<$o7IQ%1Z~17XtIL3l zj6B?vf|SdcrF1-bp4|6luPP+5kLsZ6{gin05C5;sn5sqSW{GMWt!Z&`LEScxu z3rAen7Ar;Q7Ju-^xXp#%0=8A;YilzsT|yxN?tyDwi0#p*gEb!yQb*T?u)`qNQ)~HV{m<`B_EPd6CUEPotFdF<-%5s`@3Lnzo$CN zWH;4;Wz0=#x`{+(SjIF*BvU4e@zr+71y(WT8b+BQ&~*CGfHM`;Qc7Ox+?STYKlH(Pu=#Fr z?jy}vW%S!l5x>{ldoy0GIMzka35Wa%^;w}K3lEEbbp}JU6J56&70JZ^PLXjUE}hir z7`p$ikg^CywFzavqf&eTZ^7$H{5CKyA|r)xS!9SixUH>yLJ3nTX<*q&rY5e`bq1FM zUbB4+!@Q+xNebD6?i>WV_OuTFO=vj~e5KHrOEO%jk8L^1&SSR<%CMGGQO#JX+r__W zmzm*(&;312f$*0T?+e}1iHHbXDokT_qME(GT|zE>&RRFzUv2pDJ-$^#uFEWvG#?1Mdz)jB`!iMY&lfq)*s- z*fA`ATeQ60Azx)Pqeqky-wfa71?2E~kA9&rrhR+cM($-Am&tO#+y2VT++0G&yOwL# zQiQ#?URuTDB|_OEvEsi0ZwsM0T#r-7To7F1VoAFoZPx(!Yk>|$Gbcz_;2VMdlY%3W z&Rm6eCYTJ*L6tQFE)T}`0dX?w@InWRu#fD`j2L?w7v)Q6WTTbgJ*d|Li|s$Z^!Y~j)#9M zZ>>q0ZOxtl=!*1bF1?R*VK>MWRLM!N+yk|S@geJE)O;T10+jyv<%v^_7ZfbHtz6d`Ea z$0l{PrJEX)unDX+WF-|gfzsvpy3Vf6FVtNx6-AiTdbwAjGG`g9X(SiDk7V=q^{%qp zI`Xd!Ky+n}mfZW}*8}&|AuJ8g9JxGQafGmKiYEE7;0yENrO3Bj_#ovvIr0j8F3DWq zCT^>LU-3i~p>;anFp)|!4h)BCuq}hBJ{Bh@YSo@@WQ*BM8GkW|nCV44SM>M-)6WUm z>9z2rGS*|SDHkSrhrImC^zk{{z8*%gniK^j`v-Kr^Z&U1_mHQV4&y@LKVSbpO+D8H zS5#~EK!)d)ccDniG*>J24wGTgaHcI&x?)Nq=wOG?-_%2acz5>-2w(>gl(aJwnoRWc zo9U~%yZKx$6MRbUmB>&)%1kB#-wS`W=9iFAz{4x{yj zv+x}ynFjY%u9O<0B zl1UqTtO|sRIopPoPY!^c(sa!5?mk}nurG(#xw=gD`UIwQo4?KH%O=3aG5fJ{`kE{@ zK>e$jrjZ+0u2r1gr%-TEOkH%8G~=JOw}0Zy5eq+8zp=fi`Xt7b1pl{R+Il_oIE<4* zLWb0pXakfZ6tKZ3!%Gz2WhuRWna3ia+48`>9O&XKOtXekEPM#;$d`>6H+CL5r%3ef z96pEGx8okWl&?~#g&lb3!db|T96rQLMi`$zyHs5l&OE~#JdZQv`Z6~WDkEU`)?bO8 zzH$xzFjmG&dio~8HkPPgwPARQ4V?NerD^(P`Q|gMmijm%?mw9_vOEnPB03!WNH;O( zTmhAHg_cqyP&N;0)O~TH@E$FP+gt2683=S}wOn}RS5PY#9P=a&#|2lcQHLHm?@@Eg zV}$>?;PJyn=(WFnpSq$GlF7;jgP=|g9_QKdNl_vfG({;+E|f#(@w+$He-@1X6ZhE} zk#<#*YF~uUrqz!kQbz-tu6miUOq&cnI17NR{H}S%fr98^zpkyVo#8&%#*4YIN{U zmZ1)_wD8y<@?uewqB1uGD~Bq*`*xFv8-XizyTTl!KMb!UxgX7g`(^LG>L@xCjWB|- zm{t-DqB*Q~!bV^G)c1&l{JOyKM#HZySDO)6IfV1cFf}OvrS0Y^w^YfmWuguLL}5#& zck^)nmw~j*2lcNz$4iXK&KSHrE9k(E)q)TB*ow5Bv`~sB4p%WMDoHnZ_0J22PW+9_ zxp|{herTG;GqL>us}kpZX1KF&SF!PL z*Z!;Xs^n;x(czBYD;zwp_1r)AHs?bkQmaZ;W+Ng*JKnS^>M`XF4qO1K8^|ouR8A$H z64^BQ!j{c=uce89tT_}XsoN3`UEPhy@Pou1#cG@q(H$_JOEf?rLbbWMRm^Fy2a6uT(M5@8ga)KGFDCVh+(zKfYr~-KNfz`Gd|cuBk8!} z9>L8KucVua_V3Eh@V>Qi~JxnJ5N!cv#-9Ry5C>O?UaZa z#RuXYJ=X8a|9?XO z4Gt2l-MluFwh=*Ub=ve0mAQsf70oQ@`(jBA`IoT0Xw_*sD%E%#07#{(NeY)2YKFufkLK!09uSd>B%BEi8 zIOrGgJyz`PVeTgp8@+pV z(s245$r1L+C-dekxD@n?kEGp`al?vfHOE;>qD{S3@LNSoH_$?c5*q!VIGHwhYdG>} z;wmFR6jb*npE)hAu1*CQPaGfYTYuArPBBbN;WTp?$%~LOgFDvCXU+ScV;*Wj?|PcU zI?s`I{qG~`+LWT{si@Bk7qM%xdw8eva)HUeJV>KHILE+xO`J4K^+3soM#3_Px=!c5 zBffYtTPWVI8KL}=!?_&PQyNk3l?5Y?wZ7mcC3oc?AjU|w9ERoH)`YE`$Vet3kxtpM zL6*~`kCTX!H2uE97;x=(x~3Tk>~qQGY32;ti!`p^aGBv9tZmNdaab8bBtO+?d~rC- z;@}OZhldB=Nn>tLW>eV!nROs+B}Vz{AVSAWntUB`1U2))5 ze6Y`dIa{B3Wzbl8zyr=CA5$Ao-pzr(gG#1ehCIC&>X#}E#UH9gfCV&&8LEv9e*HE- z!MxzXZex~~vu&nXudoT(WFX39T3i$XEvB%H;NSsGZzQ~4afuP@Vm})|^QOv-9sTs# z4V^3QXB!Y!=B(Y064#1R7!_p=Twe}N9RJglOJWx3K;~xbs#6Uc1P>1<49=6x@S7y>m4zE8QO}=$o_FVA z*lBBw<)EjedMaGh@aSoh|3IEctc(y|>6|tuGC$BA6;=yvc^x+O;kJI$xt+a_`3pjq zbhgv|KjX^(lUG^bpsFJsM*9PbX#J8(Jr{Dj^i#9XEu#ho@#f(gaOUOn1&OfLly1`v zxn_pizXREi<3#02OQqhdw&7YyXbo}3W^ck*8Y++e+;@68$ySVu?A2=qjzD!4xoMC7nm>`T!hvbJhF)_jmXF}^mtbh6P zg@=zXZ&sq0=4E$R(a*0ruQ2@0%XlFvDXFGy5lI)%#aGR~H*=Q624JGOx~_tA_$4OV zrMbDnVb`^Kt`tf{+F^iyK4oRJRjkrfOfO~U0U~afl`iLORbzsXf8u0Z*EYWzHsO-X z13$}-J8;L}N`aro&QxHdh^d^IjTPyt`iK~GUa3!&s=pSfhj&JmWs=0&p3%-Tfx~oS z=+i-9<|+RB&mW21JgD?#?gblmcmD2Y8`w<~%Iz2SQC$r4F(`;j5 zVS%Nx^Qi@P?9-X}!gnaS8W6&DtnjH&cw$Z`225g?&)ZxNKEu21at%{O@>pAuQ))YA zg2X?w{alMWum|eOP5Yyw7|7;KJdGgheW5Vw)U%G@rYD!=vuo#=JnmRWUwL1Qs(i*= zvxd0Y>E>Tw%-|SZzg#`;pYWiwJ(p>#C4B1%{GL7XEY3_lz10Fdz9S8?j`8wYqYRPJRduqnxlwg8*@`IzHnzK zcV1fXp}8_RE3h%JR_*mF|0gc`C(IAS_nlheXa~<)4^kMI9h|F%b@F5L4>b~_RDc$= zuaB=8#NncMU*Bwdo_K9Uh`t`ZH}d}!c}d~%C_+CcgV5?YX0Zpjk*&=Nu)-yaaA~;Z zVxM0O;r|a?Zyguqx3v$`AxNVj-QC?tm$Y<;h?I15(1H;Ta z`aREi&iTF1pYvfp%zdxD_S);Z)>_vd4njoj-$=gN555-S8l_g~_i}()PFu zj_T^_R$Rl{e)&2U7W8DJ=@}SUE_3>yy1N4b>NolkMIT@@E#)(di_EgJvgL1>U&bGw z?eE8*o;uEY7#L(8ra4rbd^h;;;X_ettA6_UC9S>?N^IQRVsUYC`SYd;am8sDQW#_N z!JaiKGn08>VBp&+J}#x3^33$k(|Kjuk^rj+t^xbAR0tOuvU*}R<>(1|G}=jT3-@aR z;7B~gTU-HiPUkdf#V{w8OFqu+x>-rykbnSQ)2gUk%12ArY;2Du3^_3>8-D^>@hLf( zAPm`=y4CS5%DP^LoTx(E%qK*}4;DR_uwlLEczRWBG_=7dt*zcVXA>V$`>aPJ<(r$E zLqF$ZS~0RDRqs`OHg`)gJbYq0KAM$8;1w~;s6FwA@wT64PD0}2U;3fNX(r4SI#rtK zwYe}!zsB*%-(NgenP74q+FofXDT)CBogberhxl8@TX%d)_Ar_2_HPu=h()oD=C!Lg z8hc&%Qr;%QTW5COBULsqNe77hfO>)3eA{I6NICWNnF`fqq5_p6ip+$P8)kUs0M%F8 zJOa4MQ&#v?RuU}}`tiYc8U5+Y=<}i}=ns$!is93PwB4u@I#nD;SA;!%AiQ+^Tb9KYd8`Ipx`0(l@PF_zFn*>x@iirq75^~M zxg79o;9)KLcVn>~On+IdX8D=HjQ@&+7@NGR!cP~&?7F3DMrK_T6p!cEKic}Wn|Hu( zFfS|CIwCH*Y9UTRH_&-jSbR^I!Jpajw{5+QIDPSj7s|E<44h9ZS|jKx4h}`u>{Q1e zk=!vk!3l!{?Sx$I|04Z=?ME{vYDqkrY`XOA6!)ABai=4_mq(pF_vc@PSZ-mr%tmL^ zc~`7F@#G>=qFdoL!+6x_bJ`4L>Wol!woyfer0b%2IJ^_uM_c_j1Mp3oVHYFk41yjWysHSw%%LF4y#@UI4o*1>M+2jy zqic|TmBXZP%ex6fym?XD-*hBav@UuNTtLM2{m!%{$;(o*Z4TB3!rVyL9`8#djmTp9 z_hsF$HBAi*cyjxBCa}3CLE24uH^LJ_<|X6rKfv3FJE= zo!HT+m*)?|;)ey03;1rt!e zn6=a|>D^1#QcWNe@%YLohfEloVfTs1RoVR2JbzrPs*pgn-LtyASFiz~q?4s)7HmY= zG;PR5=bOZ7o+2Irc{z>P1rc+VM3tRaiT5AROefrbdXQTFkk5GEF4O;eJqn?rI(TQY zYdCLiz{G$SHofkwJ;zvJ{JejMf*Br=u{aSt%qpG`a`)G2rT^fkd8|IRF6!l=6{*EJ zkMhz*yt;9AD3_K=NcJ2KZYN2)bd!5i)(;IV_ux~UZ&6C>b@cooBp7ubDQu6boKtNx zPQsu7C)OMxJ?=ORK}WV&;FX3AZ12A*oc3GxsA8d%=oi4HZxr~zHsU@nH7$o$4gPRMk#y|Csj&9&t zKdospQAD%@6*pb(qHAGGkgn^7k@T*u{%i5%91bVtk2Qi9pks^HibjLZ-wmb#8f{aH zjlch77k?caHh=ktBsfP5%1gosi0RQ5>OhNM;M=4?pdD_sy8|^zQtKNoC*`fQd)81x z6h;z>=*!BCACo3&hbLP08^~>PGr=|_+BlR46TAilshK=Dyrp( z4N^kUG52AfCg6$%!Qv)F5zPI01leFA&d&eK-soK0?$9||eqD)DcI^Xs(97Ti+=vA^ z>H$aP#QtEH19wRf0undZo;P*f_?1+ppg;}>tRmq$xfciO&mgK}hs|F4eQqAVvL5S9 zr2-s9O=%&pGO_CzWIqZv8NZjYN+b9J@1P+t&KXwCk|}kQZ-{cW(37+DDJCpBPhRXh z&M5=;_&}m{($@uT57ZEHkNBq1JIL3lrZJ|U3bu;a$jM(!YZf;&xXDq4yKX#eEwqle zvbUtR$hE32@ZSlUR==)R+{Fi&lWNtN0YscMs+RS%V_qBx8agLeY&^Cx9v6Z;nvv(! zIXyADY^Y*`M3nFdH@QQhrI}O;JV!93AT>n+sRK@>J2N}9U1THei)#E7*xAparBhJ6 z3N}|jHlF0Vp|-VK&1O2YASb8OMC$(V8!s#M^AUzku4@DDx_L_~-Y2K|aCMqufJCjk z@g<#8=eg6ep?uywoNQc*b>eNpoieyip6VJc83AX|yb?b8E$~!&E%B5cbBDbS2E|2c z!0Gwf4a6+`Zz1@PTT?2asl>+k_`JNVh%oJY07yCHC@w6XYDgePQ%WFto22VaYe4*x ztHGFv0&j&YC;G7zW3IQOTJM@)7@`_5Xc}q%tGW zA_g0NHEIO!b2+EH^a(f^w zZlPkoAl{sfcz4rkMRwEyo9ovZ)2Aout+RE>egtb=1nvb}Zi-KYosx*77uoosjld-# z0J!yZ+^?xGPESs2dN~3vFm|ffa-9Je6(f9t@h1xCeMARnH)}*w9HB*?@0#)M@zU*8 zGLF4Ph~cd{qiTG^-osKC(4~pA@$k<7GZokFa{BEEOU+lIdX8PYjR)VuvQh$e+T|48 zD1f171|9?}oWl_%5$S=hYAT+az{#yA0tnIYL}iY>cWme6L!u0m;R5-Z;lPU=njCCL zra4h^S4hw^n|h1BcTsP0FKYwG`@^q9XX!N7fjJP$oj%Rv#iL>FQJ|f8d!OuOVdKi1I&KFND01-KYdm0pcl&?D z2wuqDY&vT^P=_4812&Y0*OL$OZ)5+_$N8s89}{6C2F_$Mm`>*is@>7>la6U}zq6y( z==AGvKHaGdFl#?uN2M8PtgiVBz9#oh%Qhy+`AJ-e{Lv5hdAN+qJ@gV+0jk=8yE^A0 zsSi#2z16|*Zn>%il9i{~ocozid{&aev6Je3&7KE*0z?bdJLfg&1Sko*Dbk$ghTqx! zXWsD-g?k?aht5L-p^}_lHO-&>#&FDszJDT?=v}?zRXJmP)HdpxRZEvZCcRd|%NN-Xd^zW)1jzk@eAKd}Ay|cR0EW_v< zqXWy7AmIH0wy&rAkLgC?zMuR!)R~rf2*EFWEYdFq^V)L7QT=b)A{RfzC`7m8ZGC$- z?kqVFq>rG6uH!u1`0l4uZhCtqgXybUX4aO}=FQ#Ay(8xaF$3<)PtI6@SJ(HNT6if1 z(ntjG3tg_5=4|nMfjzMRh1R({BZfh&oe$pHw7vSi;>2(SLU%yah)P9dVX|O+OJ;GUDfF+6{r*D$ zVxnPUp;pbTbwA`f?nxYm+;p8@`wI0p>D2=B>Sg5)c%`{X?U>2ub4!zAyAvBK z>{jgKs>YSyLRS)(3opi}j0&7{E0)cNbIAeDdB40X$~ld7dIxoc^d2(XgJCW3yACmw zYHS>CBqcn2%2Af1G`;sktB>#npTVp`$qPhLk)IL*yjqW6-^aZfw$;puX9dEzfKk_T z6dZVLI!4S&u>9&>O$6l5{6jbqyeB!_aza1NM?zQc6IIY`{hO9pDdi~#ibE|O4XPX; zJpr}5E*)>(4^3dW3yURit<22HcDLqvM>4Db*QV;Hu@P8vHm=Wy~PtFc=7?7u=}Bvv028i4l-|inQ^>0 z-RJ^3ZDljzr!N_9%|LD|S6gzAD!YUYBY+g20)%M9hDwE93G1aveDh`Xp#l`~$~@1k zev{5Yee89u2uHs=G}f;UjSPQ5@z8@l~y~%W= zz*$(EVG@HErFonjz|{|>c&qwjM1p$Hk>25d<3V=gZT~-Z{CnM1m$$&hBiXhaN8L^>i~IQqNCJ zzg78dT$4(K$YU!PDq{pXI7fxYUWh~SQnS_rLONslhmn3)IVfi?30q^PLhC5|O1(yz z3j9cw;1Uv)Lu@Fu6h>g&G1jB7h!q|=&Y*Ccbwitpeer0KkC)^JvZs1sDp_vJt^T=) zNjmkw^df3WIHLPo_tCf{+wxEbgsua})TnYr?>x5<+9jzi^uSc;SqPu@yw|zWVK@Vj zi7IdHYI)^nX62!heB-QG4?G>Xz{Ja;U!Mb_#so-MO&YHfbZDYrR~>oMvgH zBXl^KP~a(Wh$7z6!TRo>tLQMvE^kZJi0VM5XUYlSKgjJh#jr)krnE=T|3IByHcYLj z_}gyqn$jK@EfJx+kgf61>9N>*6xbD;{rPbQc%kqB^eU|-ou}-z)i>tUe=jlB&}L8T z0A+)Vt9tB&Okr0Ugb#QS5x@n&A3^2b%dV}5xOe8D=H_P(lo!UO!YkW)rZW@Q|(FNjzMcAfjR+@j55^!bZ*#-emEY39iSmtWHmJkJ5QdlCgfY#*4AZ zb`H-DcsQ6|USAe0+w_&5o$9x-LL6 z^dr*XLxQ?YzI-E;O;?5!kgG*OBc{+z@%>9p zvB=&U-s2R&)RWKm(4g3+Ee3W)xhgAUfLgy-hYu_pAtG*BUfv8oO~e1>|Cf^*;ieyF zlR5p&b;jBZxZ|vXy6)OMIh`CGCi2x6x4+r18~$RHZd}A0w6gOvMdwu-_gv#(AKrow|o|d#?h?>||}tU+wCmSxn2x z9QUK}m+7e~s=~rTsbF@Z0t<~oV;J$f;E~tsp%9t4O+rGVRlS7haP@JHL5_CD)_BYt zS$SVpat#$LD&y3K!9ETMWh4}7k$dsTM-k08!8a^;)*o$1j>@d;{8NiKl2%NN9?6bO zf4*ZC8|BvM$mpsAK(?z4ieW*J@zQcgDf)iXMo=xLbj;bG9^c60r^9G|jh;eEPg=+gUi7eyYEbNjrL4e*XkMUif3U7u(-pOa-30`-6e7qY@T3NrQ4GHgVIIrhav=(B8hzI>6Km71Ig`X7!{x(}j;< z&>?3~>-qWc5;(g3A^y?{-rnu`;qu!CopEPpP)))j-!g~IiSGc7M&4)!Y}%FtLBgRX zNkWQgU$wFkJ4CNei4=0b9DF|rV;**(a(aQKY$Nog3?-xfbVpWf5QX-np?tJ!S;kgg zL9)~OH<^Fo7#al@Zo_JLJ5FS8F5BnYBr_9w#0aVDh~XQ#)<&SHM*wr?YJ9Ur=i9g5%%+a3HyuNJ z7B4ohQoCM&o41^H>U>S&*Lr7C|2wId7e>fILrIkEc>ye5^LCoW{cHf5YtiCke0NfG zLtotVP!}lno-8&hw?Y}v$-dI@;!>gCZGPfVvbHX!*0Zy-3z4d4XI(_~r9poa^A#yR zJDZf?2xwAuLckWgj@OL;8btD7hQ^i)eVFf3($q|>4}M1!IKY~(ch&zM##z-nt%(<_ zOBaZ!>wmDzQNsOmRV)A_x$}oY&03%ggGN`_65!f4U}^>}#SVdRwK>OY6W!fGQ;|W> z^0}1}m_#(%_h{9jW<=7o#_Gk3C^2#3`8JYZw)oiIVs>)>>~#s$cHyGd-M|I`zA;9D zDUBUHr!Gv$BQkMSC9a`MLCluu=SE5yNsd!BKl^7mFACvs*Z~ZxK<8g^@rd^Ae91>IKkMx)_ z$QKA6pxtsb(c7e1HdS&L6d>_*N~qaoPqTAPLq~sGk&Rl>@NJIDQFwD^^_LOV_gcy# zfgq=zf`^e~yeJ@8F1cc|`~lXF1$u4QD1Rx@L+4Q?a^x`Y@$+I@jxyZw9jB~k%@UhB z+JnN4hj(6~>M5HEhn*SIhZGmaN^l|A%bTDGLZ*HVvQQzzvj_Z6_3 zIVhhkt$0mOdjAVly?7M_nO{r3b{#)&Uy^8=9R+?9dnXc@c@@X?2}3#FR}Ad@j@|Y* zaEn>nvK+wtCBZ_Yn-hvBNjZ%zVC8bTglKDF;?8iMcEm4w=SKi|>Ws}in0mUo8P)sY zjnrX#{5mSqHxzf!Q0z7pLgA=*S-dmy`P^sg^sKV$B-7`=nF&0EoJdbVjaGa{Y?g{W z=g@YnV|Lbh%;SKv`$qCIvFLp*0o(#Ty7~#X2+`c6z2(^|>~IW3q8Oes!|{)}Qc2V+ zqDFMy^9!c3w}D-Edq^%x7h;AstUjnyI?K<6ooW+g7V|TgA9h^Y-l$QxH8#2rVgyQ9 zew)*ew#%_At*g`6AgBaxhWWZ|CUWwsy<!ml@%n_%1^Zs%MGN-ASFwhiY^bqr+1RV;*-40ecoonhV5Z}`vM+8 zj52g(SoXmCl3kC-A2oF4&aix7qoLo5 zL*4brYA2?UJqvfg7$)z)1h-TT8tR&-?Xl;8yt_f;O&^*m{0|5>NZt@$cHQrTS9M0;SG@+Ehb*sy%x$%x@-S2D!7?OT6 zH9}}Y*9@g-Za6P>DG`VYD_G}4Lq4C4cHkKp$xC+E033(^un1f+h2BLVYzYp@=F(nv>Ey=b{ctO$e2dUm%Qos(X3HYVTT?1j!DmKqB#N8ZzayE~^HanGPxY|1_L`0UeKhy-`$Cs!ZR$ zhxMCi?51VXA>m8LoHbN?^mf zhkGLF?aioqLtgJdg?h(1eaxpv{P+q6+LCeRChG)m{d7Jr*Y%eOWg1fv@B3VhJDP5- zKvjc8$CQxK2X$wot9aPF7YN z@x_}vPsewihrT3>MFqhkPI8@N01^9e_R4Cmte>roxb>}N0O{GVuSqiC!YEzY|4mhh zbKA*U1)&3hR-xnQQ(_j@WzdE0W$LJad9hQ94CD9J>@#1lF!=0=XQ7V5aK+CY4?y8c z&roZN5eC;oFW}7v=Kr?6eL{qn;TPXtp)!(pJgwjGc{kP)YlU>}TG<>o(>CV!F|%Ua z2(xcs-Xp%me&SA)-4W7LJg9pR4}|824OP2sTtXMsXyoUx=h*6UQbY2bo!8 znx{;?^XQMeqmB9f#&cZ)LBsz!YtX@51GWhYWO9c3Zasw8a>*CJ?e?9R!3VmHt#1tZ zd?G1$snLEob5qwyk^+sMy<%MqaTtb@yATwp1h|>AYJC`qIQ|C&d&+&4|rC{nQg>!S2 z!853sM;DM0fo)N*qI+B^Pgc~aP3A_*%xJ+J_z61U$^6Kp;P7){n*wBl>q7UGYk=yzQ- zV=6o!i_e`5U%ORS_GdS02ClM))Cclyk2MO7ZbNQ`ZL_OK9|X3mlI=%97K@Y$5T$id z*>lSZ1qf4p*FeGkaF-p+@ddNnxDZVI>QFrn>>k?{Wxw{{eFXzROdzClT^RLEPCL!~ zN^xCh_12;eXRO%GLG_7xY@abe@4%0c;6?EOngGN_rbt0C-G{Rk{_IBv=dg+)*Ft;n z=9V+8BpyeH&Gv$j(E6hU!HZliC1vG5Ux}ap)VkJEu({-{G-4kD6CNjHl|>FT^La0{ za5=rk^9)WI3Xq~&hnF%~|Cnnm{V}l~3puI{{2+hqq;`qNdSx0s@Zh(N(BII7&!xSR z5Z3kuYws%Z(xV?3aP?Nlhn~Hkn zuza`%!Sf9eD%#RVkzRpwng)janRqoy`qPuJirENfPhh7r>>N?V_=lP2j>_V+RCiV{ znoTAm^-kI-|8QxYPEF+sUAt&yLg~Yz^;0$5Q~jv;8`Qz<%bD<}OFiY2?3^sU0QLj$<2P4AbRTgs#%1Jz z5uOXo(JrQn65|^?W$-gbg-K<&;Rk_;haJFqeO~CvPr0}m&zCeAah(lL0%H82?jxR4 zSN==z>b$uYQ>h-)RGKB=&9xT176u`PR1EcI1CYB|1xwv|* zF2(0IR_3_t{zH|ZumPjH)T}JK+Ich9%@e;IKCC@n>^niREE@_{ZIv~6n(nybI@|hm#F~Orqj^W zSpmc&L&<5F@E}f*haTJX&xW^O2^yX&y_N_a!mfUa$6PJt^g^39e;zCRdfkH}@`V~+ zgfF(3rV(lwylxyph=USSEG_hzXxEp|uCHB8DZWvt zX+AFws#w=Qs`&Wnf4ZJ5&0E@KbEDHs#aX zBe4bvQjZ$6qxk3k5O_{tV6Ji^DC(^Z8%P>tQh6shIQu)PnG=MU3d%P-RyKUUOH3h-ho&I4q2Qfnj+if5#{TT*$3{=$&; zkCf}j2Pr@f(8XwLlXK{K*Ki5D(L!sx`6r(XART7Zw&mR_*sLwC+oFkgvAk1po)LX_ zK*X{At+c7!3>lFB$?jcPGpdE#HN6DAPBy&>*07Z}N(47pgHGO(RU4%HIBX@A8Abj<%TAmu=VX5%QQ{Ezf#x3Jxw|pEE z>7d2n|J3jPyrUCL?|pFhXI5CgGE5*U1jY*5ATSejK%dTZH_*v_kGWuX76CU7lH^Jn zic|~?^5bH6M#X6A8X8ov&PrI(5YdEQNC9m>!eJiOxJ}dFV#k@AA~7ddkz;~6AqzuC zsZDuV`{?6cPgP6T2=bgquRruST6gC=H23=zTzpaa71Zg{O>JDre)V^MB5epGsUl{n zmrDUrOV?(8fyIj*(X(ID8UQX=K_DXg z@%AdLqF+49(?Z0g+K;%5EFkI{Aqn+e^Q~%H8a}+-YRe0%=(9jP2;dQ_A>Bb$JU|_0kLYL?9JT^_~EG+wnun zX_rHs#itDccY_Zl9e}obDlT8t;Cm;D%X*{K1cv5Rr{t8^G2`?iQt&y3YNT-^wX->n zGGm#Q_Uj(v((;!i#0#<2EPtLNl{*L+W(wX|GGJ;hCh9wu@ktiRiu-Y9cr;K^0;lYK z=x(pneHKb^znbuV%we~E7}N_(d^=-nhTbA5NuvLK6M&jVa=-^xyhu(<`!t0A1#QcZ z-HbPAbJN0E_=`m|#n~?+MW-Z~C;|(Ma{ae&#oxahZ_-cg$xeF+y7MAP3O1xF=wF$O zoaf)+d7YZXr;0eFLojf-vo|0ITznaV>jw~bFWDy?a~PH8p*D9awQ?FHzrglGZFF*f zjZvRv9-z$bn(fPc8V@z^zU%&s`%)bF3_SE8EKNTCN7QO}nwd#Hech}#`?xvy1`wb~ z?VQ?Q1_zVLH?uuQ5Q!jld4TN2D8R*_#S@w}Tym&?Jzn*SO~3~MhOuZ`a4HNW_GPbA zpqPz*G%=b1p}a4L7+$7Vzg?+8N)E(JH$;#IB4VSrey7oHRchJztuOamfpYm6MnuwI zz>$MYg}|Ajzf3rCYnEwQj>~u)*A~0i+6{J6+x(~bm4)^Vfv3P2DuP8njNGbfmaoYy zX4>9})XFO}E38YmqHLzj26VY0K~{JWqHR~lbsk6Fhn2|pZ+JiW=aurk`e{q@XAOWL zI(aj)m~uzS#muV6a7#i6`Ko%W286IHqPd&XF@om0E2QdVzaCE=;ZsDn)ft%(f_Q1h z`?SYr3$@%$IiVErbp(IRM8vC=bV%7G=5QTu~ zHEh0@#$m)X&cVaoo!I})n>Q(gz@VISYl-UJNe$@^G9O$d_vFAYquQ56n8*SCJ$3z!Gm?^4MCA+{zxp-ctUt6_MMnE_U*b zda`)i?ej|oClO5eTN02h;%NGjVf_3pe}k*)Vt*RrZa@IExcR3S6nk!U?ywC(|d(v5a4dAjR~jns?=)xhm%0=^9is42zeU8sMWW^&&x{n>ZEnu<#a z0y6_SbjBcLSu?XU_yeEoGmR51QB2mgxCXecH5l#Rf$M#A<|xjr+W~11oh8c z&*djg27LV=E199_`5UMbX&QR^95VU&J9Z@F{FuKD;!zGZr8$TvOkfzg?A)3w*P;2; zUrv0!)chlNg z%Rm2ZCzkWw(NXMhkLS1YUN=_O&Z3#hIi#?Lc%sSI7%^zT%^w#pZyIWRF4g(Mdl=~0 zcz)SgkfJH7_@PQxP!u?+$4eJLpkOyP;hCxPa#Y9t7g$pLD-` zzGU-y>=J0d7sS{T4Xs~^&W^f1%vI^A&4dt3HSy%a+WX2Y7=zy9n|bV=QH@>rudul& z>!);}?v=kybdFoFQvT+6$uYwjHpu>*<|=7oa1Gb^?{=06>Q?Zq;eFb6Wa`>jWNh&8 z!v{*K3Z}msjwkpU#Ey`uZ_gw_4-?y{NGg*f+E(?#5{wm449XJ> zChF5a+P~bS`bZu_Bmu8xDYtC)@L6!ood>99c!eZ7H_PhDPlj7s;;AQ!UoQ4V7lCk? zi97Vs5*4#pfYCp4V~4gVIV!0831fN491V_NP5y3*geC_Y(lY{rPv3`{rUz^@x} zc3Xv(SC~!Sk`Xl#cCT|UIFXpXI18LUSZou!Eaz!6-+qD7T)Z#=yp62Bu{BaFE!q3= zB0?POQA5j57Z(@doTqWSXa%+ECXs>ITu1!=Cw?CJJ-DRF|G3SwZy z;wwx`epJX{<4D#wjOWGTg)5?qziF|XW*h37Jl~y7`{F7_@8j5WClUke*5+(z>uns{R_^F_>JKA%&{~RbnQoZ9GkPL zRS$28WGF|kkE!(sgzGiKv~1?Ib=m9U`|N~Fx+cYr2YS0GrP-|Y3#j_pve)CAIqa2A zUi5R)70ft@Cv2RzIK#VsHno!%wY>1}7L}0<1USg-AV=->8>bXXQYNZMY@s^EIOOrr z=36W8&Sq)H@Vl*>S&^O3=X&po=zNq-TJ73@g(Xl^HWaEFm)k6P*hawjTM)`=+#6iH zlD>dmJovj{=NLne-={&@O;{*KYtlI@*(YlK>go&vrlP>V@Nf4=EasuzT{0bxnGiESHNIf($#*Y!q6Go2Blc04c#^NVbP=Hh*n}DpdN|Q8Te0o{QVh>lx~F@>DbkKSQliW6VMYqeP>Vjxl=fQ`Ao(t zuiCu%V#U_4y@;8v??)Cm?t&9~(&w71GqAEi-MH4l_o^@Zj$emL`-a9&EhWOoU?+(a z>0YK!oQ7_O@LZ*M`S%p1>C`W!D{-}NQ}E(79X0QZMW<$|*D97cgwUg2V@ucUcocCw zygxAb9m0qcgaW|56^xkP+}x(n3Z;u1s)LAqlMDz<#!tTMtG#SjSSl_+O2rGRvV~pM zHtgQ-{BDq8q|w@L=Y+E|e@Z22Ml|a_==K&8A&P9kiG)CA z$Ps_s5{jcl&cclp*L;E~c8SWUMlNfzqk7hVo-?F$nD{5~nc3p)1O7F?AZK^QmxF46 znvi5?dJ*?j>4GPyGk^Pz=?-*~2s`z*vhL=>7<0%YNFT1}`$fDuEZ&JfETt+YU}0?7wyG7@Ums|}}ZL|#*E72P0M zrqo0-ad&;XCPE%%iCo}OD|h4dP$&RU`bdfs6qas07GIzt@V2lHHhqzP!q3@5JetNy z8j6ZIoS`X%Fe3CklrJTB`{Dg~{ftlxLHefaTb@xhiy=c9{1p7y<=mO8d8i)>=5EH~ zu7?aZC*f0>g5v$JGN=W?cZvfc$LbZEs*=$^2`xTCNr8lVtHjC!cTZuTHUjWJKr~rW z59t>iC94s}w~tgN24O5?4DGIH&j7}2BD}YRkPWO$VlBo`lHa$JnM}@p(8C`3l&!f}v%BpmF&oML(UA zWRtu6Jj$>468=Mlz^8`*A>nP_WN3AGNuFi)#OErs843sM@4C;8_gt0sju&`c0@O5$ z!Nr9dv4W`dqyo4jcTiSShS?DRX#!dT(1IRj^#NDk(WJIQ2S0 zl3+3KV~+O&y$5l~{t``ef&A5> zFt{=BS~3On$ug%Q?ce6YzDRb<1soI@Y9YZvp5kgcXdffkj z1XwUh&yn0Z@r-T;B$dQ(dk!!-67g0$;f37#-f-9YLa7hxJhae5<<`*%uFh0zIG^Qa z=dd}AvnM+MThSm^8TCR`?y#ttd(U5PWz9spfS4wNA8T{}*P#aZgL_{yPRe5Wt@GNt zTxbKO|G@6HHjS)gZ5!*1!0tv`G@f2E(y@X$ZrOsFWMKg;=h~#rd-gOSw58Xfv3k_vYqtJA#mejyzv_ zDPrZ4v7?mY&>^h1OFpFx!?7vVCW43^R9#K)4X8#X7+w|kn6#Ew=tF`hA?`n<|8p5^7*iDEJ_7g*L!O?!db`w(# zx(Q0WOp=5tam^+aa?lV#+Fl<%sPr>xoLyA@BSzkR>14|#985!mU_vWdNe1h^^aFMY z>^dhR3lb4TNJgdOh1U}NfcxA3i0uDf^*;~9^Jn3CdYeBopLsqX;d5_)sTz^$r4}&# zo6-|-<5NN~xqZGtR{*nQB$BvZyE3HEquDE?%Y({8{jumTwNiv641FlVY;G8it^ri> zTBu<@BbNf4j@n%w&2g3vglg}3fH5#n&ey?;aGJ(!e#T+>iIB7(uZ{X55l zhOc|({xtZ4cjsKa>smU4f-xfh8nBZCVhN}%x;b!#hVQdjO7#-Y1>oYGeQlC7iV?%p z=4q&xYJ3cE-A@+QP=1)j?A2-%+Sj%%OIsrU%kBQciofCQujyg0Et3@Z3Qi`eq^YqI zjgv62j?Xy2#xN_Xo#=RBG}sT#QquviPlYsUa1GqR>@1; zYiRsIX~2Iy{68Ngd0{D#B(LoU!~a^w(eOX$iL?zO$8_J^tat$!(bY9=Ba3->`X~MJ zf8@`<2!<`;2$Ci)1i&BwgO5XTyAd7SU7Q{3D#sP^v181dN^EGPB){Z?&#uVNKoW!` z4@ZDu3RElQ`LaM#Tad#++n*EqU(D$L81(Nm(bK?OC@Ep;XkKry(47>qT}@*jy&jSiod(S_6yH=o4y+tvNIS07j4GLx;V~*Vkw_OdLpys+ z0Pn^cd6Sc~)cHqWD;zmEX4nhLL`a6%DX7NPmZ8j>h4M9K{vTFRk(Yc9S3*R(G2i9}?QoBQkMTg~erASs4N6*nphz0Sie`m?a{H0XS5`XLL|x}}gs`11!AB{N)H zK#-f4a{kz#d==u48*yYR(>Ghq9OO-No|RhY;;7R}K>NG*Fa$qbP{L7=NQaEA^55Lp z|Jo@ZA7+?IeOtxvF0Ob1-JRd}@1|7WO;#WbT_TAt`g${x6sL=Y!chSXN{94&2c6-$qPN?*3>P(Lf0x zNl4tzvd}*Ls!H^@L{IeCq>pNh*yAGh!f9H8ULM^a;|;~?S{GG_)JFcp`osQjBtj4u zKq8>+7+*scKz6`KI@lE8bp@1qPxtRWhy5aF8WOWZnaf@Y z&khF+PZx$GPV;dC_N1MILX;E|=ZV=#863Igm5KG+1eU%NkxOWI(4kutp?7kW7IB}G zu+yqjSuk`Jq$)XFx{o-q?tMLvjIiY6ivNEOp_ll_#v07-NtyvV4igwZSIoi{>Zm!l6l-F)<*iJEt>;v^~?acv$d@ey#+0 zN&1C5k`Z2~RkTJM^3DFsHZ46!;LOc!*rwd`Vd>&*68XO^_jenkWx?Wc=w}s{|F!vl z#t;B@ID>HS2NPCYtTl=&>q`}tj5_=}{JwY4bg6XeHk;<0UdWbQ#C#rh{Z2O2^E)w< z3AXOZ<-ahYo&3#OjukbjLv5K)OKz|K^IiWH!rsZjHtD-THM_s`-~Z*E`T)+t#=hh| zRL^J>3^mmK)Pdm+EP5%VKhVd#lB242)k?4fhp-W&!(RZ7Bd+Ednd_bxPPY$)M6%aG3<$^ zVaF{<9j&I~Kz;fyJ*w-s?4l)+dWGs&2?x7_Lj26qSLrCs&nFt9+~|*7KgGy@%e-=p z8d6j1y_iCs=qE66T}%^fSEzjRAUD*{6Ni2D+j;arRYZWN5(Un+@BicLE5qvAmSut9 z?k>UI-5r7xAi>>&%ffBq?oO}}JP?ArLvV-S?gV#-x3bUP=e>LHx$htFEo{vmqr0oC ztF+_(t_1)4!=Ve1R$33h8cRuMqi|qfekD-~1I*DQN&o%V(F9z3ztA7Eq3a?~xo(C? zQ2Lje*|uYctGhA`w5$5{FuDs<`>JxW!V(A_m{j#EXYY8?k19klusyt6tKMiDsGxVO)=K$}1NbSVarg zVSd>82uK!O3_JVT{b)V;++lh1@=d6!6h%y9PZRvCBGrl1|3|3(>p*u-k*`|yiL!G1FX zD1#sH-}!zx5PVfIMOn>?|KG3u^A_UL1W*MNj%4+#1|cO4jdBGn3|C3MF;07GJ&)JZt#>O$ zR_V_JG|Hjp0H`<{R91=V>zQ zy1f5$?No9hcqAl!mQh~Q_O5;^IDhL*UKX-Bm1RYe0)9DCwwMrdhA`%faJm(o%sG39 zC71GU!ENXo+*W!m&|~r8(wl}PB7o4HDRJV72If-mLV3gt-$Eb!fx)Ly$3L}TV{dKi zf6br&y*dIz3-nM;2!m7Ggo(5m*V|+(b{8+39~7*81n~d7znv1)j&j!ZS;<*6%;7A* z_%>4&rkuAEUI1mf3sWkr_a!-mM+vtUxI+oXv@RE>)ijeda8+3`zTo46+-c;hpQs;d zJWwaXE*%@qSBP`mSlLd^|Ka4sE(P^;ptdKjevm>#VaKKW-M41UUB5bqG2HqUYyu4o4 zL=DUQYVx<$Nkt-q!@C7;sv+b_*mGYaWG^iZtZZV$*NTuAfuLHZkh4UURL^e%rl1Ey_o;7 zSrqvcknyJu%{ZT4{3ka5d$|1bY$^v3t~|r2S=qI3kgtaJKH4THO;zLFhvNdb2kbgo z@l;Bx+rSPvcMz6*I}_cLfDmOUh`HhYU>a5~L`d?uBoCx~1)oo10%|GR5{Igvt8*l= zqj(;iT(?_2Z!U+w-_QKGuuxbtQ)}2h4jM{Tjpnxe#K0GhhhDmR>Ysg)re;zCGJ4fh zsgW~+lv5{ea!%DKLk%9LuRgIoUbbGgN!*XiA%I_z=|b#|#E4;?%>+JHO6`3*XY7hj z5h^_|ZlXumOVg_ILU5B@Y)q0xgZdO(jz^Z@0z$-QH=jUW$yl@kTVHpruKh^*^i~4Y zvLtSzqk)I-RWxG<(q>Wt-}!u&BQj~0_f`FPr?X&1j8t^eo*{qo5jVc~+9#^jy^Z&G zdw|goANmG0(tVq>;c4fXEr6;;YOyOr2Euze$k|xF-d5guSYLIwg8=r8Ze?7gCBu!U zeYVwje9#HGRnHA(GzccT*@N}V`_9i&EiQZ{({9$~AXO@sk0z}8tfp% zD@8p{xPkx032v^jm=8^?5b5aKXB2V*2vy?_7J7r#)SO@f^n=i;6T(H}e~A$Q;u^11 z_@aD{xnG?-u(xy(c;MJ}#S5-=19pTeZGs?sn+y0%?Ulvvh3SSp7vWQhs(jywFw^C8 zJpL*2ZU_!B{Iu{_`Vf&Vi+! z9_Q?iB$&e&E&0*1z(Sr9d$3e>UM<3t2bm8x58Ia1P11NLA%*Uclmu)Jr0nA!wvHmC z+q=XTYCw1MXzYT?NN~X`mGxzl4+9ajKUe@GKgY=d+Mz>+E^#E40SpgM6GZ4{8SUsx z1eqkONa?%MaU-)56OHMBo`Y6Ys879g92yh~B(4 zQigk{lL`DD$dGE3J;TGZc;gZ$Gx*34?+}rpW06rJQTiZb#>58$O?<(xw+-HaPub73 zvkKkw!ARa@W}{=@3!cLqZxR22H#Zobyf_W>+w`EXi6^pZJmdn%WeRh&&r*Lx#0x?c ze*R%onwq~axO4Dezz>7*#;w^0gi)&oO(c8jy;8#ckhy;FLq-tR+}2?!IJJNOo~+VN zBH-Oex18g$Usp9-Hk@E%>+vqO&NEM_ zy4&y0%k?=S=F6tQ@u9QU$2a~vY{LRF|0Kfy{bGp<7Zb(4m0h2-8B#dIEGiZit~e-E zq6SeWAC#Wy6*asXCvyvrxbr`5@Sk3yE5}47LDKQj7pm5xjReTnEbJMr9kB}EZJGEW zK2@8wB#UX}DeZUVhP7WleAz$(LY_wXOS`Unz|)&b^f}mk?s@iD z)GYVbKKx$+uv{Q|hg!=ae)^2FD+df+MPdrfUVPupraFc$3%w35BR-70XOeWdSR3YO zTmLZxQzdEs=qA1c81wD=+`f7X(K_!AqTguKJf$(M2Q$2xCmFm-%zT(6P-Y_N$+ z$5}d4oGf|ofEWYm^~I+U*;uq^Ox-RMQJU$E$F!~>Ezcwyx=}_5g+{m9dqq>E(A(k! zn0!dK+9&`1s1g)}YGa`oNOe+2CKfuzJ)I`vfhY{Bl6`Q*;yk1JD9exIvi5CtyAc9L z6Go=+uvB(@cu`+IjdgjZ@WYzI;hQ-c5b8_L+b7lDd8{>Jpk~vP_=LWZlbMM?js_|U zuw^Lp_jyxpd+_l<4Rc+foQ;BH?|@TTmJSHb+N(ODs{kZiAXvNmz`dSj?quAtWZOl^G9o2&Cqg)sm}y9j zG27X4{G0r*m;y>CPPIe1kAj836Jb=a@6m$~K@gmeqTjb(14!ye^l05LXR%eZk+T5K5JVHd&=mYA`GI%kuPDH4e7mhVyWRz%mn%xi7Gg*UYQ`L6K>lyQ0lxv zhL{*9#Gjj(2=2q@;%TBN>ue15c<#+}glRoCB>0^KC54%e^u}M%>vPO>faU?qt^e}u z3LT77#Aa{$zPSPFn=qRMRDa(*pbPDYd0SZu=}R8kqrw&>Tq-{rC&sBm0xX2VNn#FD zz6xn#mF6TXZSqORJFCe!Q^|Yb8w%`Gm$0z+5Dk-Jop&zXx}rooP!ii=E4epeQUYX` zAveW|9oI_~2n&4gjXSZ^5Me}-6;J_!Q1}*Ka}y&bq9`r1jT2Y& z^qhb_{&=O01z+|p%4qt_2E8fMCAYj>GVO$<`Y)hKgl853Lt zH|?|;#r9R7XfA_B?l_aZibMrqN{+q0NVIgSpX z6Qq8EDZjasY}4BQ5sT^x%q3{zD!Ah*ie}U5*BU)k6AP$Cp-X@8&M`ohjQNdkxax@e zvfmRF_lM2)pYvkpS6WAi)9>{3ss^~!UeTW*^!8eg!@fM__XC{mrFunEqHwSfBb+MI zG?Y*i@Ly2LCx}*9@L{P4%(Ze2fZvzQA*$aHT|$$MuQC$xO*va9GrV&os83R_n4GqJ zeHpMPSXzIqLF}-k*di%GsY9^o^pu^5P(BImt!LHR-pc}M7(>|y5OgfIxeoj!p}5!# zvBGRj^a0`sIIoHy;t_+QpgeB+P06N}w&NDQ5Xo`h5nb}Gdj5Wod2E%40IbMCVgJ5* zx-~h$XZH8Pl|fHuBwv7S)wQrjrmg*!fe&y%`Weq zPy-~q%iHG~MgZN%n4PK)5ZS~wuc+1!M*IoVi zW=A&e&a-f=DQM$MDA`4^QxF78rnz_jt&{F(_$g_>c}f#yr3Y67sNYPEG$L&dQVXtq zdp|Mlp?TX?tDs4u)+LKU5T5z|<5vH1@)hwGh@*RJ!pJBOvFH9w9FPOge9fR*4X%Yy zfY2*;3Lgs{$^QW5fd`#$JJDx-&`PUY;jdyCukTh&-a`;#_ZdR-Z~R=2MGGPA`iN#; zX6YGsn65TyJ6FP`@~X9#N2UO=eyAuQ5vi^`EC%l|M9dKH3y1t_7^-s`HnouK3v3xY z>u(J$(mn{p=nJb-u~Hegd#fkLZ>=N~d$g#RFO@*3gptFVcRz`fnJB57g-!a?XMpe@ za{CJeZp=LnGpBfcgihP#TBk-216N;)(&upJ%2q^zh(Wo3NQae`2uylP$KAX2pS=3x z#o}Ce2Dh@AD}@9tGO)fwo^3n=6Gpk`O$~*8@HimY@?Ct`z2$Nr%0RK&*uvxgjF|p? z3MyOS&z>ozV<1xJT3LTi3S=u2h||4#c$hC8-xTsmktF@=yfC5vfi=WvC_b-z**lXw zM!B0&7@b(&9XHncdMs?$2hgI-+TrbD4|+#^1QP+7OaH&W^b0f%r4hrUk^=x*VRGPx zV!O>SALV#xYeeY1MUyv?tm$o9|E01Ow*dbnmWf#__&NSX_4 zQ&*=13*{yzCsQ>wH6;T6TbJrOIt={${3bOEPfHe6f*8En>-%ZJMYBzrnVV1qgM-nH z9qJ#hClHwQbxyEhyW3ia(h-f2+R%x-`9>X!V?q zzN#cUbBdC&<~Q|{2sE}xezO&kSb)b~{5H=od1cv5Dh@=XUApr7b#c`&&_RSka!!_> z)pspsN;jn~B1GUdBQ+ztWmM6-@S2i>&Hs!a3;_?eednHv65_mMe$K)8v!?fi(Fc#$ ziM}56vn<*L@^Xb$xcz^<4*y_RNMZh^BbITBA?>c2b;U&(5W`LjOqR1XslRr9O1_1S zY^lXFNUAN)!5ati2%XR#E*vs1iTE%x9F0h#4}(o}8S13Nf8%sD$fJ&hs>K?ps; z<_`;1RORpL1F9Qo8ua)LBlp;kN?`vf^7pdVUdUF}m=fUTS&E!>3wz)@o$)?9Gbe|% z>9C?@`v>q`R$E&eKD;yRPBxI_i*RIUL;zYj;+=bQII*4&Hp*jZzcaa?2oo_IDb;o; zT4N`TGcz*Sb+$ip%cM%hm36f@F``m$?vVNTa)NOnqQgk4TODA5yd=BwQ6F#SvFJT| z-L}RN(F0(ct0u@p|K0>Ei4874@wdz1fz8Lk7e>~k`Z^qP`ijFXxa~)CxSgM~L6~8R z@J?)0XPp~vbZjt#Tv(P-D#_3VQTWn(LaL31jTg}OMoJmU-bI=|Th2-PNBEh$b`zu{5(JvMzB|tD5s)+n9@ORN-O}ZueC4EqpY_J5_=NU*SENTv0*j~ zY$rbgDK|yE$H>1;D!996~}zr)i$3yu7?bR*)v9rZJ$;kw6jr7jX!bH=o{ix^hZDpg@1Z z?~JozLianB_|erwzj6~;d%Vi%+tvo+;mr_6rSDsgE}GBh;oSztg>MJmpb5Q&LnV$6 z2!QN)Ysx?cn{IqK zxt5@X4H5m3(DAgxT5UdzyCtyL=H1|P+p?B|mFrRL>`@KHxiKZd3woc5CKaPKI09F}pkC&NJw3XD-F-m%Gc@K0UmJ)yK zC+fLNiCj&_4P~xg(F_g@pjS5@RSy?5H+yySixME^?EPrHh}_=WBf4$R7IYsvPG9@J z^ujc*@A@4+np?vn4vgfFkS_6C-50jA+;@C#Q#;IBQhiN8juj0APOVe+yacu-3(IzV z0cl2RQeL`$PeA@-iI>U>$-rLDk-{;m6FVH>`sViVp_>*R$>H@$|JSC7hm==KbMLWC zi4}Z`j}YF-Wq>@5*NvBu0cEsEN@-W{9<=arsZXYS3D;qW#1d@WmJeOiqsl5({#H)E zI`9k0l?*2+43&f<*+L&b?bkHeu;sDy_^5_onL&{MBSXyX(E=r!$laH!TyuQxFV)p* zV1==06=~^^H8y|O5f>#-~;ygKP>u-RcVi8k6h#Q*{DkqK$*7Iso zHs&3K#>bi$#bA*7(}h9CVN)K4v;+1Y4eaVphCXWWz%5}PhGnjAJ=w75UN)`a%S9Rr zb+c#1y}J(Xz(tIMPkxs35PfI@jC+;6rDgHcNgP_2Q5SjkG(LpOlF(GnZi;)(3xM0S z|267KhA<-|u(7b6Dy2%QXl*w+9~7nyfw%2rj?0JZ)9t?=lX(aC)43?wK}@hG zGoosK*7Lm5>| z$*o1(mG{$mQ?W4^^D!}AN2s_3ketoBrIFlFfe{JWYC7*D+8GC4YMfSyh-mM_o*TCl z70kebOfQ&R?>^bsB!%TlOJUTm8EXArD@K~61#?m+Ed^+qIhJ1=tie(tXXS>rn-V2) zONV7U39&TyzrQh8^SioT+%fU6EE@htbnWl?e`OZDY95v%0M_{Bkb&#Ad-BabAtQjrYBy=RBn{51BI zj03yu#0gQl6FNc&)hZQpybh(G{Ba6syN!2dbmu~w1Wu+T1brJn4@2gdUAqAd9!^`K zM;TU2N^6MJ(u#aM{{H8O!yiOBZMIP+O0;5V``{&~_sV=5(2~ZM*x_enAbWvk@96gQ zQDRWj8Ut5?cdVfMabhc*(io9aC#F z9PxKpP}zCtp#NIyp4L*;Ne#eKgB-UoKTk&z?)Y9!ZS(eRLn@NxLRMzc;BKgCKrc&R zQ9sW(h zsfD;bC2<@`L+xM~Z4|?;VYBXfU3v`kDfc1y3R$i-B01Uqzm5OF_yz#x$v_5tqCZ}U z9onQqN0Mf(T?wW5B@n0Kqkt^31rmfZzyAb;tzl&%UVMU2sTl#GDFl7u+H(jR+NI6) zQG?wyp?ZF*k$QmZU7292FbG37UBD)6rJ}J2A6`PDZdp20EdClj zdTBKKG50T1e(CRNO?(n)`zqItNqbB8re~@RxW>5aCG%lriq8uD(z z;cG*Kw#3a4#=~hD^vd;=c5MNHjp#GN>guct<&wu3o&`5L923AKMs4y0Zt0R_ZSF-w zpWr9AtVO`wpoXi&O26Nkz}eYL1xMMRQNzb`nU3>6EG;ymZ$E>G9@Ws%BzRVI8Vn6& z7=m7PTm#KIzo|?Ar_K#b4kdzO-8^-YIY5$T8D>miL}Z}B-dT#+^IF;gz;wXc4H%G9 zqW(9vsh#AjEQB4Ge|}770d!wV-hB#=^Up95x}WC#-4g2Lvg|3w33U7AuI0y0o)AM< z9WO6vsue0EsoqoVDpf&47GA!4t;d*hr8?BlD6WY@98^s#1w3NGhCi_6K|T+LtJIXE zcKD`3E)xSgC_e!roUtd>44ct=;e`$49a6q2_3VCg{m@LqDw7bOeMz#&`|($K&B57%}cxD$^^yyBa;EHkI{I|MbJ0( zLTFYb#fZ!^QycqV|Dr|zk2d5jA@qX~WwrYk-hv|K!Ss@uA0U*Wm@vbn=Wq>tx?;=S zK_#}U@vh-df2I6RKm%G4=1mIe?uEwAo7;?QEq5Lq+JOFF*ZY|3PuZ{a!#km66{)SQ zt@}J8(l#0#X?wea$TkE=cM%wGSj1R zzGEtagQGxk2<(Qlz?<&j+&;*h69cE&nc?+SYXWH(C_>m^fT9&O9h7qbm*crh;Cbr3 zMpO;OrS+JV`SsiN=E))NS4>AeD=RDKpE#NW&8~+9aOC@^Z#q&_akmI93ZM{&Glunw zr&!sXAsf_@VT2w=FOEb}pc=FEwIFu9TvEtKOjo^EVK{t#e?0$Mw(8WzgeFPdjwf%l zhC%S5%hG349XNS>5LoGuA;H}gMtR+#rHR6VC9?|QPkgznnf`!gBf3{)bj?8Eb~U`; ztmgE*2a|Z$f=6`{5|kKj$(FWc?ntZ7VR7#me2pIv7)o8l+sM!B3BN-c(-aYMEd?e` zT$0$ob`uP{n70wgCHfz_h&*mF`7*i`+A>L9#viDnztY!0txyyX?QPzyNCTx75P= zQ|DDnas1(C1?N?vB;xQm?&ldNp z2yp!SE6U5cB>dFx0d&(`#VRZN;;9VJ?hFZXH{4br{$PbTH-m=%fIuxd%T|h=un(j} zc!mCRkbYwDEheN&=Dfw}XNzF?}?&oAxhk~ z2QYd7HY$yuEPE!;57#nONMj_2DXFRQVB?wIF4MKFnh0S;5K4b#fUm|P;^oBbW>rKu z6lPICaGhUms_AB8{x6N*V=8}1s9ha%CoI*`-(U&7dBMTAOg;7jPt8Y2CQ73D6)M-m zW<1351gR)>SqmrFYr-B{_a@h67r#DanuBxz9{7JrO8n0;Hb{K^Dq2r+;nhR4CgJN3 z67uJUB1>{R!&|4YjEbk5YZQkCO_{$Mu_lipm;^~QbI~t&jIM4IV#+cJ?HvzdhN+m?#}?RkKSg)Y-BMus zg$ISPB7>AZGS5+ZX=q6MCb0je=su*6yySGcis)rTi=S#xE!Nt%)a`~|x{+gR33PURThtco);9l0hjXnRCxsPRUsJU z!|>#Oyl5_EW+W^Fxi0j$OCx}2f@yz_s(?B+-RbRB%NH`E+<+A-5Z=wcQV=>bkBrzv zY}6OtPueGei1_u17`@deO<5$W)o4CcjRVu(@0*k*PU z=o46CBdmNuB4Xcyi>NngH`O|LGXu$mJ|9|Fge4lvOTN;@JC{XA+YK-F zPkHd)SX$}&P*zUoY`x=&<#$p|Un{%$=5t;Q?&Y?`7t%ima6w}AJaz2va}DXGt5e0f zaSfu)=0>^$<5e=@OJ%o0v}CM?v<)-IX>$)PzaWg#5gMl zd)+oKC%OzFn4In>=FQ!_+t`5Z@fM_}rd~dQV^%S*EEPLBJxyylX;%37!+<&HhP?Dg zMG{7IP$^tFriXA?_o7#p>X2?6-tUXg1sa2L%DMH8A8rHa*>*e2%~mY!k)A9FSa+vT zCF6R{fEK6et@d4Q#;#0Vt`gx*r2O)s;4 zkA3Nh`@8Eel7t(+$__3?(|KWDaIIe-jqp2b1@-pa+N1Xz+(sICjpQUEslI;CFWCzP zlPG{t*G;K=zu=8=+ryNaaS`40OFtTuY@#Hrj)TIr#YJnbQCC8yGoUPe=lha`cKvJ( zOPHE_Gl%VI^AH2S&GbQ^5dO~KtZJ5ureNUnr_Xvh2ZX7*CNG%cZ;~`Ov=l{5_eI0V z(*eTw=`v~`DUm@7<(!_wShtlzho9{}UylN(5rsXv`N}14X}b17T#HC&&^yfjPan z`<`c`l-_2v5<3~2NL;2R`=d%2zK`}_ws-~gjQsKg&ZC%NfD*${JpgYv`5nQ<${B$6 zjN72@#wW0iX6LFFC%PQ7co)WNamkzAaky-M6jfr`ep4=kinkm;W{t%tK#i6!Chf5DQjkVGIz1n*1olq4+S& z+QFo$@0x;*gBNv3rV`%JCW$FO)ay3pIW@Ur8T_8La;cDl(U4`3Ig#%vwwf$DUJx3t zY0rDn7=Hqd5;Co7HO`I;`fpg%5xb+yX#h|Wjs67XM^b#=gAx?5fsuFnYD;$x zV|`oYoD|$p>*m%5-&)@j$$LGSasyXg`5{j>;$VTA=2?eA2h2QbQBh57jiFpY!tG*| zUsFL*)3*Iu_@eKamZYUka~H(m*NVWb!ATx`G9O$S2zOhdo`E*3M#H)P%&`yHM{ne7 z&;nb!Cyi^ICeJiN2UC-VB#9wVTpbIXKx6`HoG5SnTZ7G-_=>ee>QAK$&u1GmajdmXA8=t;YPdC>I~{u}330-?4Wg&aKNbt!EcnHRVym zNgvLeW;$U%Mhyu(;-bL~Ap_olt-{4R2G>*rIWt^x3JPf{jGFj+kT@NG0(BskM3Bbg zGBevqaE45~f5=sxj|Z&9Uzep#Gv(0Baz;ciwb*BNJwLwPdqAQnn~)k5$$Xej3zoS! zW^aU}>V$`oBQGjH31L6Bm4}K36=$}*bMe`@%D8Q!l970y@d3&jfM6^0=yC8tdr@si zLA)94<%0ThjUsucUev5*rEQVSiSx=N`ofM|>7yf4;ZyAsl(*ggyFjAsr2(vv2{Ukd z`)6MT(EV=gG;pJ63guU$8!hH?RBUXL^s;5jIgNDpvNgNjod(x1OC}ax@NFH&rR=}7 ztN{*<|lX8-2TE zz{KQ&_>$%d)`jn-rjp<6`@VSq_J5e)ln9W~zDQu9{bkRI-FLNW!RMRGN=J7Va@4Qj z)^6C){@5UHCDY?i{M7D8V{WpjN15F@z(xUkHTbg1!k?8z9+sGt|Me-(>}j$b>$u5y ztt47WSuT;OMIq6S#H0b|9R+qGk9Tym5h=2Y)d+cqWD159*KQbyj0n!$K@n&*Q;3{5 z!BqM%Qcj=NZv@RjXql9TIi6Y{3`_h&-^<$@+$G?Lik**xqWh3FHZQXZ$RYasjy3u& zGM_C7{4RU!A|lST!W{Lus5WlEDwVGR#dAc?yd85fET5aS(*Xn=3v7(3!tkLUYZwqm^JzkD8%wYBbRJs`B=# zMe{1|J2Nc05qvHyiPs0A#>zg|M@VX)vi1ogNWvR`qI}P$Gjj5M=}3~1!P|&P6lb@O z;uBkn_3SVP5M-=B5*vE(*Wp|rqgAD5tB(-l9FBurUwh4QW#rsk5P^Hal0qQdZ7AvmdC}@30(^wWYsDe zH?;<*Q9bpTGo-E_Ky0YRRO$c}_p0U*XTBYDd>7ku?xDw^176@kre>TYK@H0*C^VUc zCy71X!iTxyrWARoLusHhgH*a!Du$m}&2Do7596*mMPvtw+3N4ML4@OLzbVb2JmeB$Zv z{%!CSLqx>MKuN!on00_lo3m3ga(aBsJ;q8Jw?{S3&2mZ1jq{+l$I+pL1_qveQ@1z( zQSd6+>62qd_wl?DlkCfQIu(H&W(fmFoqR$At`_GuF4m?|Ij6T3A=D%Hf|sIRb(aT^ zmZIB8=kd&&-Z#s(*8!0St`SaZpMP_*Aqcfs$cFvd{|z(M(7FFON@^uO@Tdw+19cbI ze%WttSR@dON1Yav=@8#{bm#Qwcuoj-x*HevsyKlx=<-Cgj(((5=^27oRDCR0O7BcN zB-_y>{RQUyUq4wG&I=d8R5H}WwC7QI9}tCgEG8ov$_{kF)#os3d!%bKBqBwPj^mam zqwS>1u^7arPa)rk9+#w@*8O@XT7C=O)c3*S?=PgTj)cS0DEIY&KPJ{tgF0@1CH zyF%PwihO@MRWm5=F~}-$gkRgFm?E014Lii1gOkie=-mP^wH^yBsE z4%Mf2WUqfsMZSZ0^6uaQ7VPoQfO6YxGu@Z5Y%TS-BZD{fa=(^wKAv1mGozoS-x@pPTn1a=ykW zEe@rUMD)DlTMim^=Yn*fQCCpr;Nr3aHtJp2<6T4#9M;L&u;=&h-&4R-k;zm2(>4Ae z7*dJh}}1 zB4NTTwd}tOzBLRA>oUR9QGK@b3t5Jij8?>lgqCN&sC?2K)VaqW@+qy-IXSY<>SV2K ztzZmTpb(=>aY(C3L)%S$AoJsypV}^UEglxu2WvNlK2Js3{2QJJF9WRyvhR!&p(y~c zLUybAs`O+l4U(UYT^=b5Rvxgw8v9;!D#&>JR*1j#Vn=!nFaD}S-3&dD!U{#}O;Fd+ zp=sZJ887dG!1iIelt0880$sm6ss2Vr3g&5v9#6S>tvM*?C7^pha7_P4 zCG}QS&XnPEc}$2}pN>IV8Y<+NFbZIJpiOqPoId!@v=v@!sP(*B8Fc59}Qq zF#dFY#G6Yy3YuGVw=d>cV_>p;KFgTVSe$(8?^fuo=_$1OlvU7NXro z+_D4s1+hGOW3YG>6 z(cV`S;Y5#SZCMS=s2YvDG0la|c-jk3O8ow-zOP@q%x*Qt=NvMVuIQ)*Tp-{{2lI zb;>M5^fK0E*UrH8iRJmz;@e#CzxnCu+h2>5TFTIy=dzxCRO3&>5kawFU5kKwaxru0 zpBfSwYrAfjOBx@wy{%H~?5B4MRs0bh{XRj9#oh1At%L0%biunmllihcBb?)jV0#_{ zeEj&XF7d&U5w2*rQMN-155NyDXI!s%GkwlKL&jei_$==<;znni>$!M&aS_YO!iLCH z3CufyqKSWau4E=)_zcObXQF41C9$SlS;TtR57`w3E}N14o*cQbSR1{G{c#$#>G*V$ z0S4&GzJ1%SomNg78&kdqlQHbscHENa)gjElHe!1?hKc(!DZLXj$D-J>eBtHx;Gg^Cz)C;d!GWm*&WYnumQ9js@z zGLzQ5Dc9t|$T8K=s|~$eudErg*!ATMlntNCorKD}oQl_ceuO)djMurK7MAx>fBZdQJ{EZK+JC5$>r&8qMs{eMxI~2d4$pb~ zk$Ro6ps%$^UM9d%=C&leto)Oe#q$C-)&sYPsoUG4D$p> zU|30vbo)quTC*neE!ew0OE^c6wlXiIrJaXf+Md2FaoFe`Mnx8KPmJYkF8M83CwLDa zLVMRUaP$Npyu`}f!G(|&&Gw3X3ovxQsL=Yn_prH_p^W)i=jy#3(zSZyY;Gl@`WsMgZpoa-a{OYNl9d90*-NA=h)cT_(RsQNn0vPN;t*S z^kDgEKiJ97L`ge$%$86pCp8x+d+8P}c{2!wihRVSdb|8rIk&B{42+C1bOag`4Gj$n z+S(a;SA_vE<4De<rZT>A)a+Qx4MTR%_E>P zEU$bC;Eb0)REKxQIq!v6Wk$Q3_-n z9h?Sy_4{!|giN|R;6+@|9+-LN09JdXJnQYK2W;CgSW@lXPT%(-v0h%J!yUK;a5nd$bnbq zA@|(DEW0gDr!uZEoXVOf)b{#jN8Y2fjbwwMBc}Rw&PyY!vRCar)FefG1n3%&pBuK~E|3;aNGNfyJ+~mkb3IgFG9Rx=y2_aFi*60z}(L?{p{4m0&pX3M&4YXQc~6 z^?2|!gQpNrh-5nD>J{|bl+**V&#U_5iXJc9?fGMn_c#~&ud)Y(_kvS~+;4GaSF`|P znY2IJ6ujgOb^qXukicI}=Q0LcifEBZ=M#@NdZWGl+-adi=R>N;1N&rV3Zjw>)Ox>{ zU;6MaKew+99R_urCc_0mXzuE)Mkgn>kCjzvo{>4wIPwVsTL$ivy*&^1`V$KiQ?l#f zEWu;N86tzUMOqyUli|nsgSP;+jG<8eJLWsM4G~#lkH7F8D=m-wYdU8r1 zRC-o!ooT~{g?J&$_#&IT7L%2UwwEfN*ZlD!kPf(95FC4M(1{yxk9X_h_A>=m7Faue z+a?o5%?;2RbH(EuaT!Uzb~L%PZNu?v z3iI&-{x;7=yOJFKHg~f(I`@dt8Y1eI&fWKea6L9gLT9n%5ciXDj(+IOYH>ZKG#KlI2eBr@)P>%#(~%=ffpNs>(W~LgiYwK4}+hg_ZVfIk9mq}T&6tD+r|Jg18Ca6V&BK86o zEN`OrupbBPxHL96`a8`*t!6#WOez~q19sS{8~w=(=|nYl&pF;uSqtTj`1A_lDa(yo zgSApbxxnM%`TO#@}{>q58?hGNdiX=)sK z?W@6@KX8jqirg{dqI%L@=R<_-&+-nOsJA3gFPL75OT{VzAd#n`T7S=gKu~Z0D0+wi z;Nq$T^HY%Vp}WoPpt=W7tvs=TypQWITz~EBA@S?nxBA){_;mRX3@Y>*jcV*R6(FLt zQlH{mkgso&&%MH0ASS>m?&to>ijFAS^8?y^;Y;An@fvylcA!!sD1bqb+h zgUgIGVbE(DLmRGKEAM|k>fkr<%S6;<0d?GO+%=8xl(ZI3LJU_j%aCccd8H&^iDb2h z>CXQCMQW{IrYY3l=QOR59cf)Ly_B`dYu$Orw(ve9vr|N^3(P-P99GrVwz>*ATpshR zTFq6IggBu!tpLSZ^>*>+J0fR!o4zEhEu)YGfNZ6fCwjEBCntLNc%cNjf?RWu{;+9L z@?me*gxp7H2&}rdhe3S;JQeDVqsw!1{X*v=(jE79_2zy=*A`axBc}Vewpi=LkGr1w zCRxcpw@8D20rTR7o$1~dEoh4`wts{L7AS}$TEP0XQEzgtFd|Mr_o8I*S|os#e+KGy z4tL_(j+1z9v3t(vj?+E{pUcRn(EnKdt_qujGVV(x5qL_npJE3e^gD;*YG7^R<|c=S zJ}52u__gMi1j6})`O>NFY1{2lkv*owejaqeJ5H?$Km{GT3yMO%?(*LEu8fXB>Hl!` z6i%*NemRTIOt7^FwS$x^$ueQ29Im(<*ou5~nzod6PZQ0FwSmJg* z&Ddpis}EZDGh=q6Dx@nKOgeeDZfeWLMW-xe{Q1&T*2|$ocTheF{#&ud9An9kBO~Hf zm@LqdcW7cO5s(YZHrFII0@v=L^}@u6sB_2$vRl=6iMt>fO^4a;U*T&A^=IXZ@RuCDy0>=vqpIE?`aLb_`mP@2j&}{g zH-Wb+W{)rDcN0w2{LRn#Z?`cRY~pUgEeWa{;Ix7@o|-L!dbsxUy8rG#1}-Diwpo59 zb^l?N91QaaL4a{R^SOB}WV(l2DKa{+PSOnbrKXRmyb7dN_pQ$k6p%=ypuJc02FTC2GN3D4*CTg z#Qan2CT2@@m>V3f*=gaqX7t#jeu5k&8!;S81DX5H6sZn9+zjxB6(+k_LaopojY)1< zmyT7Bob`c@2NsnOdKP3s?tKUjfxaWHvsAVUdoUrj9mU0tBp`xM+ zgpYbITdg45;b$h%hH?aMEgVi&Xc$h;YU~(4x0BePf@3a3u+a{`9Db>cyPGk4_eFTN z*W+}B=f-oP*1ewh(*B-|auy$yQ}eLV;g?ZXA$+`s@#wln4=UVA$ql zphlbMelZf;3v>Oa6v3n0w@|Nls{}-SrA zNc>)5#p#~2^fo()#+M=2AFO7eII(_=YR?+Mpn|Y6d$)ksH#?BkYBxVWOIL8_<&YCZ zXsI7~1JJ*!RC;7Wc`&ML5TbG$JoGu9Khe~w+qAg<{K4;uT^v3i+_AtEF*_0iL+K|S zXg__L*tGs*nO`0#-5x$Sm4xB^b4IeK^x{nMC_l%I(LHG}{K?LTy4qSd^XapGcuh1F zS>LeA8@Il2@pjW@bjzWC-4SeJxb$3w2cX4UFwii!MtikOF6XVg#fj?u>jd~4thuI_ z+3l+=6F4Qskp%Y6Z3xl&%c=pf?%Kn${eX?zYGd(F^{OTO)uqdH=l^j_{^!rTA~dsF z#Fb8KUaWi~lc00NF>x9Rqf^bwrZu`BAS%?+wcVJA@~V};1ZI+oY-?+4FP5A~`$HMB z-t>=~Y&>o9;7(}LQx`2!MaA6?$jDsfyYMegB|%QE#}Nfthspw(ql;m3d6|UvIBn?Q zbh9Vn#k{wm$?gHVWu&08g9AN}6To(Y=?eNf8ix2=q5O>bddIwh9?nXDeZf-_x{^82a&oFV*YETn-7>`DiV9hTol7Ii+@9Orp#LPp1D(PuR)jfnSF(Cn=1f7Yc$1GZy9_kyV zWoAwsD*C*y>~zww`^$6CQ-Xz9BtY)X0zB$tY-}v&G?p|U{Qy@iU!YQk4IW?OXeUnF zBA-3*>C>mJt4ZbL;dI`TKR-WrJ+_~cpXll8s#~M(6iA0nOsHb^fHZ8@sB4r$(q3>08abxrmUIVfa~Hdg{0OB0(M^DLNdH&6DnX3y^gA z*})(cr26VlMMtpb6d0+8d5`-^jqv3#4xHbC;rDBg=DT0(s!1q=4eIl3vb~CO#k-Yf z_g_w=&wicJYO6vB<%m}$Wr9j3(Sx>rX}D3^hZOmaQei$`pK+b3YlUA|@xMcHlUj4} z($ZIZwi8 z7L=NHE{Kv_&4Xu&Re?HNDEX&;Ed!wV;KPOKA4X<4R(aCK+u}z!oG~PX;z= zCw=x(1|Tr36G^O7U>j!ZX}Y|+(qH16qIi&CNGi1%-sY zT)WpEJGZJUg7n=@6>(e2q9D&sEg3Dn>P98;_&}YnUu$RvW%lB`CZEU5raW&VXH%k0 z6}3?BButY|R-j>>+a|KS0y(EXp6|y!|7?r2@tw+eI7d~Lwo;UOZilWh^ZV zFFyVLcC0Ja#XSWpYV{P+a=(-AwB*>^FZyzhHD75G@Okl%BDCC3%3*?WD24hNR9THu z*jQVunC?D{-_cOS7SB@MTDhMwF-b{< zXAFc-6zjsdPF+y%o(c}_D)Z3BI(6-oLKtiZEPcfNvVboi$BUbr^-X^JJbO&gdTtz312yM&(59*KL9T zs!+9QQ*Q(_k&%rEiYjE13WB#>I$$+JTZMVD1Jpi%?rr7Ep71GP1$OrAvd$&xJ$c=Y zXREvyR^JD&s?-l4V;l{R((#b6xtvI3T*|9CZ%=sJFKS+!OXpR2luOPb+B<*w+U^qV_g&xV3`FpPZOHbZ)j&c^7E;aVlw&0+NOWHGTIQ#v zS6o<+gxNi~uIy+l8_z

D|36srB4?nMo@i&3gr6=%MeQejRiHb0K`%p4TS`FI?p~ zY714TB&ypjOZbWn(d6e5(fE^;#p2p7-_3hCxSNk}R`xH)QP==5^v8jW5B+(OkK4OE z78AVkGO2@3VHP$D&0bLKHJGhi)V-iuDy#i*n`r$2GF+~??`SLER?f8rBa9@3Xfeg! zZU+91TKvLe?(`26Q>f?Kzuz^q7!sk*G3_yXl^RGFv_*&dMsbXbl|@K_yWO> z{jlkxOWq#nlQ9T?;t^H80cEpDw{KrhZ+2hs5Gy2h(f4V|&oFHpw)Bh$h)ef^3UZ|$ zoLOe7n%9ad?Q761fzJ5q{5rRIjN>KxYp6h(dV_q`s&iTw)y%s^dfBn8zxn5dr9sj{XxI>9MMhF+{etoJgv*H=F>Ie6;$ zG)Dl%xLv63;s7bkq|BQ0q};oVPJzg0T0)^Bxc53b^B@W``AQMqZ+tObt9Ut_zo1*SE|hrt93=Y$_y zEt0@}N{uEvgnv=jX3()fFuFMLmnL}OH1<98E2y9hufO zuPoQ6kUG-fyFM=p>u-LIGma85RpCJ>^D47b$sJMiqzE*8-2J&q!iVh1%m3+CeGBlv z7``yAxUED_RcX9aT0v`|;jzDHcW0v^@xlZ#C&ILT)S~}F^>mz1R`1AdihULgMht!J z!&q1!m2)pIz_M)?nq*?b}gpS6%ITFD&!ctRhO}1_(CGa~n$XOXNE_u_u;E zJaD!^`qp9t^A^*aIu3=PB!^}WA5Ne|drx>1Y3dyL%>eO#i+BcvKb;c8t|qBQQD@54 zsGU0AO!mc3RdyBXVvMZV_v=4cdPtDgYZBPG9k$V<8^ib_EqDmMYtT z?Xv7}6XZzgeHBf^Q(Ng_#E2zwj^ClnAY*M%61eHPA{x^gM~FpeZf143xY?})YFi(=Fu|yVip9^b4BUH0B3at3^Kq%=acyL2uN)Ck(=N$x5U99<3!g<4xatQ3v3(g zgp~zGm{0h3za1|W2vLj~i0oobT9*y`a8iz@CTFwbLeyc__zjkwvvBh6TY0m3Z2w^e zy81WNx31$)=?mr%N^dL}IRaC?eq-VOi)1Aj8`7Rg6k(d7J;m~74XN`9`}E>AFjGOj`sHu~)E z)DD!~>+rlz>Pjnu*NmT4KZQEa>)y*!m(s4k2Q#^=z&v>Of4rzGhjKu=^(O4|z~;mD zQU7v9H9n^XBO)@@6H0Z<(dj>^#m>Z^HAu}u9+4il+8@xA=PeaafsV(w&_~wrHB%@+ z1>XK!oja=9&4M4O5Fdt2G~XVok!SXTZc7%CXrL~yi^ePeMSD$qe-#7&U>MW4|glC#JL0n(8`Nk`zj!( zoH22Eac31;fcbT7iTUk|?(1ljU=KQ-M3SRFIt-H zQfKfNZ=Y<-KHb3OW$xLK6MVIh-&ALNb{xlgck=k~9 zl*jJb*?dY=3JiZ^sLB%i5h_V~&^&WdO>XO??^yxk8}A%`eeO{yc^mCP;5yYKQ)8yT zW(`XU2e9xVS)fpG`!gOj)j~c4<=N@RH=|P)*c>Pd)Ex2d8I6`vJE(rc1}j83!tcV_ zwXS_r`oK~jTtmBw?0)F@MEy450Mwg)R7d`Vm^7!PQA zq!sVjZmLB3GeG|6D&y|TobAW75gk&l7e2)218}PdSxs$ucI-}|dygI^#S_kp4jIwO z`z?MJpSV8ppLXI|Xrf^I^#WTOL5$$_eoe;hW^Aji=&3x}@v#J&miv^^XNRbc%NlHk zov?Ox32fY*6sIxW%PJ;4+%Mdmfn>6}LxTSB?{OBfzyGX?#@>lQeYfLdQsMtuD*)Ij zVrx9jMoygTi&V-BIbx5}Z=^)#^=XGkQp1Up&DmoKRQOuR${{U`Xm@aIoiG{j6Fauu zw%b3B+0hJM^nwO?7&_snrK`iY`063{;(!lq1w5q$rD`M*472*q+&{aF|BhzXxZ%=< z%wZL|-f8jnr4h&j?}J17_-1NIdp>~hkTkqoph(;Bihl3gXC%U*@=BO(Md7N7Jb7_6 zuJ?ZehRDGl0-tro8<9af+sj;%$%pBK+Z%(TZ>%!htHS59_6#^!s%)s2S60eRUa+|HJ0@-!rxBjiDsmN;Ls`n?(81(AA`Rz5|N2rGdkQ( z{wiz4#o-nN=3FA0DR*|T4ztVMws{tq-m#)OOUfQzPM?kVKKhF^-42&4s!XVIS0T4m zAgPd^41-9%H5BcLahybYqJtoHr;Dt0!nbDo#3xDNTCK`#g2$a385~PnZuK9jJGCs( zHo%d$nVSG924#GU*_SxdxHtRMY;49NJst1HD^+Dq+o>C0U1T#6a&zvac(oXvq|9fI z_PQM{=&0LZ1`DEQ#r6H@7{T~P0`~#dn1l@7`N9$mDnE=R?vu{`3Mqs3oT6 zHqyO?ZKPMhx9DC6xLPXd`q%$W=M^Y1+K_ikXOrF+L8*urv8Cb-G_J+XbK@WYur7_` zr7yii&((IZ3laOWWXHm?#Ux)fM>DulL=mHNQ~tfHbWDEz1R>sz%+v$W&0(tV(h~LdQxgF(Pz{0i__u zv+C8!8>!YrNO#u0JZNyeToJww8GLrE%*`Ws6*slOyxRh4xmXWhL5|CG94XqvDQ|Al zT!p6uw6v1LP7SrS-<+SHUxXVysUj^L(p8ujWVnpD%KM8p(6U;6QehEyo_IVa`uwZLbv4?(5{b33Rkcrd-K9V=$(W*8V=~$<^G-|+F&un zohE9P_BY*A}XhvkLO z7tcL%4Q$mib|WlFDB%n^tqMM9a`2RreSQ_N@e}T|!DNTgV#_mS9AF#H?rqjtwUwB0KdP!7}b-SfHZntcRwI-0#frptLZ zLHC}9gQz0`E|8gj&WyUZqY`iRVWw`&ADvCb`RG?kd0bi=iLA1+*4)7vKAHTtZ}0Fe zbrY)4e&0xGN1-v^-`^i(P0!3I5u|VKTK@VW<%Exg4!mLFcUmI|#Pz>~@)Ub_D&A9l zMvOn2OMw8R+yVM;?82SZX#pXbQ|e44tPw zJ6%sFj;zmbpA~dAJvI_4z`|7Ua5rut@PA@pUORbOWsXYz{00ReLIKu4;^wGBk8)bI74 zrb4K`po=>SBZ)us{7_{K?q#BFms&$`({B1*sctC!Cc=5r83Y^F4b?`LEpbL!;RxFb zK`A0+i6&}4ZYUo9@0Es*Kp-gEvYHeXdTk%Rz(K)H19UHyG+ezsYo^P^(Y@yQvogL1 zwa&V~LJYk^X%Yc~d#nk53^|x}DzE*4Ww{8w#jCbnZuzk?q5dy%zhy(uRhutRY$B8s z#{G^}5j(C@%%aru-#v=)o_jDeF{#SII3Hule$~xAtc2tCB-ReA^NAIs_Z#JOr0r2S zJU-UoJIi=BB{^L0agOU}k^Yg5hJD1_@4P`oL{yZ3RKo?lH*UGnmy2eg(K0^EZ<{D=uvU<*@75F7Xo=c1(JDeXZmc4GK0^EZy7DH zy|KPKW8vGl*?;99eWTdc;rKB$r?F9&(Z!*h^c)LT8h=VGYN)+ARRufr?Nup&lD70h zV{Dny_I()O6fNU{i*wR!g_aa|D_G3+#%b@(Z6)%{KwUOsk&)dI~gegwi>@{gBL0q-M1CSG;H0?a1{P? z(t0N6WMPT12v$!Ck+cj}SE?GRsPwqO^RarL>MIb?&}5Unq<-j>eq*-j(8ldl{k*C_tDEs>2vt9sMa>}nhAgT!=EZrplJ}y$I4S+fZ zsLC|dc|?DW#-u!{OgVr3-(t104|@!u03PJX$BW(Hj%{!n(dfn1n*Q;VE?nrBxO|YV zjm7ioYQ5ASt(tz7T}D;a1o#O-T{JW_de#-2GG&^?nVqG0^KHWK))(0)cl$cV)Irbo z_V!wepS<`n4>{R&N1K4AqKM$1m16QPaS$jIEG%D1MkZy5(ktAZNFV?{V8F~@^KB&) zsdW;=)Hx1HD;7%ZEw7S3)wM{K)Czlp#6n$@$}!Vm)NX?VRuT$kCg6`}m` zGsSL{7Vff5^<8wPD1J$K4~?#I2Qsj>TIkpE4q-+u39Uvr4&oP4gO){r`K|$*@S(lt zsgBf$n($>L81V)#Q}J7}V%mFSLIkpl+M@#Qi->i)n<7>Xad}9&4htFOv2{#QQyR{W zX@eIrmp7=N^(5^QtbFZo|Fzhq zqC$9Au**2Rhk=8wFbg@!q@I87Un;oZ4J0Pc4A(68>_)!7Z(AUtBM<9hpf8XY<|vm) zK`a@2^(<8>3Dj0gb^NZp7MGqhPeHJ4rFT>A`>I9=)EMsm=83+Z6J9mt1F-O!1%fj> zIIK`rN)0!54E#)ph@<@4Fp+a&+Mj?=#i_8bI2n>wy3%?*j>;k$ETLWEf7Z^%)Yw!u zvKQ*7vLc^;Bpt^GPJ_5FV_|k(3dhqjJQW+cD(Jts=qS!9MIqj&GN_Cr2rZh6Y6Du9 zA4n1e;_2R+7fS|C!WkOVovNBsy;o3%B_nzqjOb+uCY4F);yR z^Pz5bZm1;bUZC!`VB$qUTP0qxIV3%p7S4l1{7u^Pcs4ec^QNuQxtTZ1VXGw#R23UK zr#9D`r6*)1FuK3)d-*Z^k<66eP660$nZDNEWgR^DYB0KVi|K;Z`Y>HF@Y*UPS0B;_ zl`;FJJHpKB;q@RC(?YPm>C#ppMW*nZHR*O$yl%SCgd`B2d~P`a+T|Z2Yn!&T zzSLge1>*9}vnKfRkOh?=Cfu3x<2nY^F3oEfV-2tTC&G(Ri%C^8iw%e(mOSkm(|L~$ zn0Yhp+7}AD(Z9IfzjHt8i@a!$@VbZBUt=e{*VD_yF!eihmCm41V)?KjOUy#7*-JOT zd(+BF2_v%Gt_JvOe5i!E5nDFAKZxU**|O<9aVP$?PTDQ4Fj$?UG@>w^#L~P8e0>b> zaJOSnmo%~VT}-BY#SVMTjSthIaw6v?vPajMuAf+^->TDKVDX#6li95N|HKeu>=bqc znFv)Gt_cl()GrkA3Uuuw!cf2J%9@@TLs$S853iuOSk_>db2D9yI6PDHW?@>S;x~m| z%~*6~q{h8^(_00JpT1&2l0s!=+}zwjGlxgKi>T*euO>)Li3X@t?<8@-0IaoKn^UF^|p;O|**+(=!!tx}eahKN;?z$S(Kx^~>3P_d0(y29edyOoL18l0p3Q0sTf@W0w6)<*5zGV5#2 zGndr=bk7`iRi(IX1F7x&IC1UXG7PYXEN?*B5zoxvEPL1Db(|^;v=oee@MUd%U25z{ zrYRT+ewB%}a}#oWp49`pY{H4*7M4rG58WF+7_yiPjGe+frvEtr=xm3I7{%H&7R1Op zD4Q@Dmbwe#mVI%~W^HWB31E88 z*!a=lYTMqhuThT`ctiIo_yh#9a&lpRxAHe9%gn{a#Z`Z|envN)ay=K?(aEpkyQWPQ zXKlWD;!boGLWMM#n3*)5TzdktvBtGKP+Q4x9OKAR9heph>)_w8WB6M~1rK^Q$78(* zUV~>}JP&q%Vhpw+Q{W)TsMHT_uhiFZPV;_S3cdZ}k?!Eml-c-B>O^l)ufkIx2H-a~q*;cF{v&MI*jl;fST^#I?y=u6Mno z!$)Pq!q7_ot@G)w>96*s_@IVG?$^0NfQ{?;p9$V@!7s{S1aPS5uY(+Atgod55ZT>Cs~I{@AH zu<)}{YrKTUz=L{bed}L5?lteT<7m~j{TEHPM?9V365ue2)|+2YI+!`TI_ybrhKXlf zf=bL0`}&9j0DCz4R;IT5C|xg zgs;^LzOGSwV#lp-P(U;#DVUkV-To7=n1Ob zZ~!ony{xUkkR=kXe@}R-OjH$al`k0HUU4J2nsaEX(SYb6Eg;dkJ{Qp;3}7@%d)Vze zb!l%7*)F+Z38Nn7@JaOK`;^M7N|@4(b8dGhUyirDQg*qI_qmz38boEt$Vqrl;d5tF zfPzg)Ss_B?fpL}5ZsyavM;_22JlPT{dkX}tV^mdD<^TRYp7^$RG_pJyYCWjy%nCk# zKN*WiT#`(Wfnf;dmt=d5=!@9;@!71L9RSi?hHi2)3aTVd0tPUVIV{k4aMxDik*o^i1}(en7!6AX=)uh3lFTwyY;yF$ zJp5eg@10V6<5Z47$6?PH zb99FhX-F5tfX}aMZfHNloxtPEW$w>fWGiItYF;5J2w|!n z4pMFNZYpIqperjoOA7iO+hrvpY~@DjKE&TMhTE)lB2I^~f{c5xez*KKhK$}mYIZQK z5+gLgv^I(JjS#Z@lr{`brx=up@DbXmr~|96M|0FouBV#28ERx$!k--M9J40m5hmSQ zZD-kRY;Dt@GTaVH6Rr1-JAzEkP9y97>>lfad^YK&Lut85E?=*{#_DN)`Izviypqru*dWRRTEBSa6GB`j4Zd=x5Dn>!R6vehBVrUAZ` zO&3wzGMnNBt`OF6VE8t1)C6T+3Kb?Jg%wpT*SmiBKevqog#`f)L@GO=sj10?n-m5E z8jrHb%G6pA2>0NVy z0O7-6SFbX?8J^hR2u?>pGpLQi`KWMQin*%?{2uXt{HEs5%1ha1^ zUW{B~Au6qF=|ZK1vIim3?<3W5?$)`+HYMwWKW60F#X$0?ZhJrI=YEj&2$2$Vgs}j6 za$v+Pe8)}R;05N2n7<~qv<^ut`p5nE*WD#sJ3GzGh)cgqs9LYw&FQM> z{<(klD`BL2mefGtlOd)X!`D^vLmW1EzBi6vL%$v}Ury8%Pf=Co z{B1B0gY=9E;8}UIyRX5Qr_3Q1mLhMw?YOL8A3vDPvZs4ZR^5wuTyNmiyrhTy&o>}O z!2EzPqCBWE18G~Tb^UOQB!(ZKVs&)YfWn#%=(X8@AZSt90Sa)zMJAaqD9x{Gpb=`F z<;p*&77HwIX>D;voFEhn>Q>yAgbnT`DMm`#0d%q1ab>7c$#)~U%fN2}`h znC0-M;fjY+M|Sx>ZRL+S%t2Qs>a#2|JKW%NDaDvmGSXe47NxPp4&+>4RfGy;-S0)2 zTxgti!AMl=z^DV7l5vuM(E3@Zic0HK@P)eOZTr!`Hpu@3>HWP;OtK?!OS9+0vPayR zUCg1nCyb!ZRHdq$9CaS#+oHd_hqBF zy3+9Hos<+if+$&ZN2=HI9jO-eqeDYeKypCiuBX{&8UHOweECZUo)I!!64*hXy};mJ zK67hh_26|xV`9x`xjDtF<$2L@BTNZb1Im)$4Y(odK7^?vhFTVv=S0VW+w$r+8dXfB zXefAcv}q`}l2@LGlojW#I&`n5+9=9-gzI}TEtVm7o6&JJs}4g9+CE=!_P4z+c`s)4r4`BS zfakx>`rm`)L%{}L0Ll9N>$ok1Y>?wE`?Bi`lP)EraK3Xtw9SS1H?{H7q&Fq?N9u5Q zn5LtYBNrlWYHRjHy8CL@=g+%Ix&#ba`DgAn{PCI_-Q(v~7zk}mXRn0OL88AKk1zd0#e$s70xyH@x^15l~#>DWX_9c~T@5DFPX zL)A}#`=}h+%h_p|&<@|hcs2m$SK7vq8#Z1wCq_!-I1dpmBFW7;ucfoyVmMm@b3tR3 zifFa=Db{V1kl@&}XeZNCLj#htPh(Z1$gR4jQQaR~C?4U`PmD|4w3%{18Uu(WA_(B1 zhC|HvaYtPTq+a|_K|YlK#@_fzP{Jz89ke`tmobbxE2iKMR}O->2f?`belc<)_p*vilx^= zakGBTewlqI*Fort4cwSwl+9fO-eFBoM0W$2@DcRXMb93szZ{%jv=d~%oO*JjpM3p5Ze)ih$ngq?kOU$aungi>tPp4bR*Z_^f zbsLXWDxiO3D=ZWVHeqO_(%82q_Z^J#V_PG+zfG|Fyo6cWtKYoatP=xsa zd#wn0g&$r{b{x8-m;eW?DChtx2xKfO6dBEbkkF z^eG!cHYCjdKc8X2Hr_IPd>UNlE`yZi6{O!G&u08gjw?;J6!w8nI{MmvA{$(J<|4Y0 z57_j7az`resbc_Lt5(Dwjs75KtbgS;wKUIBW7Xmnskdtl}CfmehFjzBbl^Wo~ zSi2(cZ0@Z*^BnR%hlIeEc)6}(x-{0c_5LYswPQ7d-lld*Dw0D6Evl^nx_NmJT(71{ z3U)B~4x<&I@b4uI{xTlMIpg)8-9MCAAX6B(rJ$^w4YHJ-aYtVsF?Vg zZPphXgRxN(2@;+93zFX;q8PCK^t`GoZc|z*UZ7EgpPt~HVUl$T06>n}ylGDy#N_|Io-P&qNJYoCQHpa?j-^m-_{a5sb1Zyp_Z|bKxFD9PO){fxSQlx19>IV^ z=Ks5p_p?{QARK;5bo2>5Kn`pRiWQX^U53%ctd#L3-+>?b{vVho@Q<7YUJr%o-)2s@ z282tqj>{m|eXiFoj3r~}#yrQ-G3w9jl3pJ6+b>J{%*mES%<^{?N%q%C*D}RX~1R0Nj5O3QM9A(8}t3Cvd+%*R$JRPX5tgSijxkq zGAcRMF(qQV5rEOGEOr-A^Gqe&#dST)_(6Mw8L*(L6U-slhqtB= zEk>ViTr@p~xGpRap|%kDFl7Z9%A4Nq!c$Iw7S-E8QufT;>({U2GBa6)g@wal3Z3Bk zwG^?Pg_f42;wJCrC0WYJ2G3|e@IQ?R z2MSp;^gIuNp71ui+jJ2Z;G)-oKv~`ySZM>I>u(;hlYQRh{s51D8r)ixk4{MZjao%o zK941BGr;+eCjN_l*N{YrJTj4oLJTus|*7(S+H(o-RU) zK!^_;yg6V0IF0zlnUm*cs>*D;x$CO??G_^Gp;v6NU%9OFno^P4!omWGkx}+XUY>@~ z&B=+K6kB{L1HX})S{}|_VluJ>zLK>rK{G6ljcf1LeqdhXK3=#@;vD1kTSe_}GEsIqyWlro_F}%Oa zhOp%oqhu$fmsEa%0^kQ2Gbn{ts;#0=hc63ND`!nu9~kgq0Dm5e5tEh6d+Zs(um`JT z#_hEE%ZKdFf_iR2Q%r&lJ2+=ZdTMQ8iO=c$T`Do6-9uBaryZo?z>`buxgXM~fI5nT z(DA{ud{{q~z;7#*FRI$I#(Yhhd{q6qvIewBF(H+eS;L1MB>J65&Vzm<@L@5Fgr4>O zTB17|ZO2p!*plX^FL}RK`C$$HwUm=9o__zu@sjd7{A2ZgklQlve`b1qYcyhq5axBH zhttZVtLbf#vZB*~k{8l7rDYWTpXMO=5#gr5=FO}Ff$m6S#oVaRC0#L{RGa|tX^9t4oIojhd-W6Ut zVov~Q!&qP87yrEwE~I{GElIv*ca;*rL-B_cX;a6bq6E(wGWekFDkFJU>et}dJ1va$ zjgk*-roUlxv5~*SMkN=?!k@8GB*csflu`5`!C@utN7|<4&k7ucv@(zt$KFf)B^Xiu z`NKnGI)1c`=_UI>dq=o!wfsEzR^)5pJ4&;!3;oq!u2m0;kXj6cTl0^7A31tbFeDRx zbVkIE7^-pgkUv%Ym|wh3%5$C~D&w-}x%*b;`PJv`rkCyVmcSDB-TN1&1{NNz^5T{C zWM=TDG0xqjKM&x9fAino75g*7h~j8$Mjvs5&#h(KFQ3w4IS~Zj>!6R-O)mNJ*M_32 zC3_ZYS&6*^oZtIf8=8hITFKE;f!`jTxnskf<SDjga@R-yW^ zr!?b+Li7SST6Z{ZHttAWBHQ|bDD`hjWIDb8gmeu*-9*H}&B%tv6s0996biw;Rz`bQ zQ_}Hv|C(oqBf{QJyRP;wqlep~q29^D5$x7L2`cklX5NwcT%%g0+PUSwg)U>LKsqI| z4uuWqmnt$FRb>56xVv91?CE|j4-WV8qngJ(;@{}#IMPNw?+`b9bQ=*-rS{zf%76V* zwec7dh!&g|;dud{MjrSMQ*Ov0!Z49ko?c&H%Y6)3A*rdX0F9(3r(eHtVhw&wrKYF< z5E-&r6bHY2C{3lHYh?PfnNyRwAoq2ZkdWDrg|+A)0>Pf1?eXE$zMZX4Hk4oG@Djvn zXldx+E(6SrS3^Y~r8D^L>#ef+0ZicvV$0N-`H!6A{usDP8E;G&`*Cq88K`5|@*KRq z`WW*JP^hs zU7~C!I|=MS-c|PUa%hG)j+|3)AKl9+K$FV_c7N^GUt~RoHFDj4vWc=y_H~Q!dj&w{6@;O_CcDmOcqt zhjy8sX4O+*fHAuvb|VU-rE*wsy|2a%t|p3+md+p>60Wv zb~Ir|70E_c`yej?R-=}^M%ORwt#|^@Aho4Kj@^F&`77&ja^iLq8|1esRjkW8oVzJs zcQ;L7-JYt0TI!rUvGty#hj~`2<_tZ{N;IJG!I0?#wEM0mpki)^GxXoAwP^4@)m|G+ z2}IwG^qd|FF6__LXv)XT;;2c`I!)?L|CN}Wtft20a#7=rfsa<+etY@IeX)IVU~pkS zW!Ckd9pyKapS9KiQ9c6`4NgVbJkNU}Dg8-p5B(oM3O#o$Ubk?vM>Ea{hw3N}Z~<8T z-ng|OJI3Y@T#?WPLK*kOBtu0p2KrfuBrmE3ZboCp=cMOte$=l~p}SYOU{31@H-qGL zm%>YZ&yU6pBT9iV#zC+vq=eU?BXojyaq;nq1%lDE4#2+0q!e1&Uh5v*s>FmVk^@`5BGBhLQ z@6sl23HfGU_+LpnTaTph`3;@=JnG3RDkfSCCMj+l+h)#qHQPf+j!7XD9)L^+>TfPN zDI{B@^iA{7IFMDn(0QGxyza*+GUp-APa-4W{=!lN++CFZODIKi@N!g?ogtV=2Ce!1 z5dHqSQYad^hWBV+Ukp?>b>wyU#f6jm-FgTeqopJlZt%zK#TM7YDdM|7<6HRiH&b{Q zpFP6{^d5KK@}Ug9+YOiuE4IM(6C;2j zd+)~KRpit(g?ZJ#tu3~VwQfAvwn$nDZj@LMs-L@jN!&Py9EA6U2&3a`LG*A@odJ#? zaVY8RL#)~|FMmn$A}qglCGKGEKVLUh%~qjsQ68rVU>PCYO>XP~nUL5Di{!rKsxZ0< zT=77xOXd9S{>ON(ZCj}5Qftzu565ZvK3Nqq!||uvWeIQ7$LKrV`Wyf9M5}Z4gClB( zL3TU;;&LK9Nw1M$WXU9Yrw7C5bnFtV~HetiSWk`Mu2D{5=A z@0lw-Rt^lUqc7fM#2xP@c2KCv-@UuMyd((j`U`RDfPX1?mpA_!6_m#Nc`iprm&s;q z+npGnW$AQQ9WV%knQ_+qb?Hoo5t%b_7LuVPgle>+m-q{!AUav>JYS6k)T|VBi|(TG z77+N#%^MlcKF@gCdL9V$P^MuitFDS2YVeW5zJyj8cg4e6rW5%pc<-jWsR^|7>;G^o{Iu8Xl zN*rxm?(2dbGn~XP7};j7biS}&#!Gap9Zg8%_9RSO`+syBkO-T0eU~PUuurb_bc^34d541kkE*K+}+(FXmAhi?%(Do@4c^TirPQet(l&_-F^F>b9#ioWd73lYjYcxW=^Ca1mt4W z`xgibtLD%%R#JmN_LKV z_XXc2RB_!-cXM1w`xyAtTZeu+IZbdq153f9I1bg5zhbu<_`F#|Xn6)|r)tYaDgNTu zfVXttB-axa^?mEhy6g`DdWTwql{ir3mvG{NIh$9Z75iJ+CeK>^%N-9%`&7QQpA^|+ z1}8FZi35K{eg-d4HQBeegjc;gl;_KIC(SzzITeu`5CJBLY2l?B@!m=8g;g5)E162E zSxi88mwhakRu&Mn>z_TFB0WFY9dulC^9M!ucNg0NB!xy8A%e69mH?s!0}Z#Y=_^{l zy@Qe(&-A$%iugsR6OeA$3_Y4vT|mp|LCt>M!GL&M8ySt2O2?h{MQ z%Ht4^_d1kc@6h)%NQU1EE{J*Ef*$al9dmQ)eQLm@avGP?M!@?$69U>UobFm4E+V_D zY9YQKjlw?rLjk+#LOWSR*n7#H5iNv7&5(y29C^E*+9fxW7B}|S2eVGw@sh>&1D=ED zj!bW5#w9nU72pW4cNupnF&VoZ#&BT^5@tsz&By2*gUBf$L=dA)Ry3dSk&?f-mQb=$ z>tp~ViA&SUrgy;_S8<=KQ6c+3OI9TB9U+JRQe%p_k!PL9!43niQoCOq%7eaDTvg^I z8?*PS;s{mfdA<)dX3OcVEEa=xuBHHGcPs?qq=*#`X(Ud>xtrkSJGN?MY@ONVE}D;( zFNSlU&kXbTrhPf!hSJt2yi5$}Bu>D`V?G23n$|jF2h_BxylABmTuw*A2g8TxUalo7J#Z;#V;{#o66sEht z&?KHmid4hxdchLs<2nh;V=1aUZ(#}oDB)Z*N$l#E;=#t!TW8 zxDz|4{9$V|pH1GMLwty)xxT=L6c{3Lnb~IL5Ls(|Rm@afH$6y9x1N&b^!l(PwJ=4T> z#@dJ})L&;7DAoq`>9Qv(W0m&w`={?ok_0T(o(XB3t`=zg_nZopra2b1SKcwY2-FBZ zyD(pq3bt+lY@pJwc+Ka^ubziwS+T*6O@S8h8i2mmq$5G;l zb74p9#mWIuV|-T0Q*EIvk-+A=eNH3$--rdY_TbFMU<{Ht(|JTFWsZ9~CAyBy2qo9P z=YI$LvZ~Fj3f0I0p1*p-i3AMzaFr;oeoZ026-HP`jh@XRq{1S>dVgcS_g7)KZYbeT zzwTp?nj+Tq&7B8DupwO54Mj4oL}5N&k?%_(j^jvXgl;;u{k zJ_C5UueP40bL7dieo^AiudGBff>^{{P@s$iZ;K1|Ca0#pmDd?(C#BKyi!V$ir%)&% zoSy|kRA7pN`5*nuME&jfHtnR2RSEDVzLPCeM40;+xhJP*A|~I=N@*0jooYI9jiC0& z%E(rE<(WBFz6|I|vA;+CAZZ$OL9w3IH|@#Q{{=gXCT-)~Lo(o3Jr{B```w3Xx+O zKh6D*d`+t;Uk#*n=HoXAA@{o{c<<%AaOXrtpKu?f@~bTCAIaI>gjS*W=OYyo2Q%ke zb@(YjYxcr@L@Or;w&S__$9{%YXcrZ74~Q2?!BRj?gNi?lv>aqWGIQ;S{nGd%WghRt z>Ymms+%rH|=HYO(CrXeV?pVz=FnkJmk}ONK7nJtsG1Ef!!RU7|jBFEn`6My){ykp5 z3ALUkayvrR46v$9?oLM0=_#G1H@TQ>v4{aw-gMxS!rXAf@tG;@?^5ND>^LObV48&6 zikmnR6p{EP_>nkI5Oc;d^J{1ATgTfNWg2Xdy7X>kMqkLfM?NWxvo@{D83i*lSTuRU zlcYyg_}GKFE#P@(2UqTaD5Jr5F-^QcU8~@N<=sN3Ny5KJq_6=ZG+GxZm%s_;z(*9m z5mloS+@nX3mS)qMtV z0f@%+TV>C8`Rv@V{ia>tvVYlYt0&G_9J%+$RTLK|1On#33UD3TIhF zVJvOj(d!mb+Kb+5zgN!3U!-#6hqtk7&T_wHS^q%@7dqI0Zn^Qa;0+5ygQtYKhdLN{o@-R=U^DjcrU@1sJfNVOTetqYMRbcQ?{ z4DpI_CqUjhOUPvn<+}}>5N&O<)@lif$~k=4lGmyfw;!O}cfu!yO==Pw%6Rr(WCKKHv&oFT#sk=#oeGAiD{v|gIfd28Pl$H|rk0@BWu7pQeHVtzV zWcWhw^fff;f{B(d1*81-=RfeX%cuwt6D7w5)}xlPglvq^bAIRAU;ECSsE%3=8VPyW z2A(p%zXHtPw_T8On6+F1x9K2_RBQ*%7)gv! z{)+Q2!w?kqu7LR=(vm4|LfbLnaYBgZ4Mh#MM8D8nXg408o=DR;oZ!|QA!6L<8%N^) z&;d$5CXs##f7*U2XfsKg#i=E=7+_@}u>4bH6$ zt|=ISQ^-@o(*d86r>G&)E536uZ|nzu_$wi=n`{XC`WG&Fy0A%J2uyV@gXWfI3Tx@y zE7LA~7(Vr&WTw=(BiW%&Z(Tjv{HuoAAt_1f(&x8ih8k&HOH29K6tkMXpQA(rgx-o> zqI~(WMq&t{!Q%wnze*rA+JxG7<^3=U3new+dO|mqe4ibRl$ZUP{uGH7aa(fI5OAl*#Y?1yKb!% z^JIdIWr@qJa|g8 zmeqi*G)1CD?2jONzMvtG{5E~NAdAS5jr*T?b@-{$|4-v1{9UPHQ zaVve(QhIMfNsXAohH+4!%J)4u5V8$Gd1|W@p3Oa+s>-`(dMKbQQS+Rwy#E`^jl~Tm z*-JTcJQACr+IX7}<)3->n4G1BlNAh$R3k0z(yAN6!n6ossG|`2RM@V3vwmC7=?U5U zGNK8rJDYsKMf~Qyzp%(U|F0ec6_neyyBSbX+lg-t^22Uqj=Ti+-$uIwc-im8I$5w% zaW8om-_kvvuTHE%pP2o!9y!Z7IzCiFglNVd=C2btcUF+G);^i;P8TswPI=W{9_Xu= zVt1}6o8aG>-JjzhQQGjQV8(>NvG(5p{Z@hOleZodGR2_r-J2A z^=4D*iy|E8DQjrZa64TsgFgq;)Q3h!RMan2k#j0-iCS(0c6+nFwp8lVy_?i^;&PE~ z?uVmXeH-k_U68Y(pY2Wfk^#-M&d zccE}4^2<2yQda)sKCM=bna<=P#pNj-O)^*?Z5uYOgyQiyXc*GH%l1L^*!4niVPrd^ zmd|W#?sIV5qtF9TVpQR>`RnVGhEvLNR>MaC(Wt;7E;_kE&o8mQ5sjwH zy+>svCYgEza@%Wk)|yjBI=Ww!WdC()mf@AzqA7hIwUe!L{@^BzlkzhG4bn1XK|rj? zP^Y}xmiL}By!crKQ9IZFh*DaB8smCzr?%z_Xsh?;T`{K+6gV>--Zv2fS(eL`gcCVX zn#c4okm4r;bR#~^C#XFwc_|f)S|x8Dt2Dne-e=p`bc(?BAWfDCtwlL#H#6Ms!`nKG zZqRX$$T`lX5B%LV2D9_f-Y|sU((&d!$ zy1vw$<9}J}xMDg>1n{0doGW9u_0{4Ao1kPa{MCL45Je17s|t6R&!#ea=HI&=6}M_% zao@o0Y}}^Mm3~pd^$&4;|KWbfvphiKy&aqBK~Z;<%qqH6EfpmtEs~S1p4_1i9gIiK zfktmxLj=FB3Ac9102uATKTZlHHfmPHM>@vJ#3t&$Dk(;&gv53QSFzkY4y)F^l`nGpP zA7Ik#JYDM`_I0E+QFQzqff>;$35J^=TM4f*|K7pE$1nL{gReTONQ!G|8_V~6o?Go& zDx4BrC@l^A3JRU|#6bd&<*kZ6>QL97w3-uOjqYw$@@zuSg0X{Pda+vO)}1FI+^4;; zwoFC7z8ZEQNB)?*#R4lH9zW-Hw1J7&z`^h)D;d2iSg6Y>tKa0f1}w;j1A_W^9?+2|XTkNJFfY5-L5!&IFWZ>MrZ&7z?2aw^4|J<*0@ zJ+BJ%9-L35Fby+Yu{vP-B~j}z1YNtf71?xn7rPGuIRU3rxzieFXlXoGhhbP6KlB%` zN~%dL3cX)D7zO3C0_z|dGxlHBmVADO8mx7d#_y z0YI^J%YXxj2q_&Ylo5*4glOtQkmz!hjyQ;H2uzf}7z=S~%CjOiF8*N;WrMZf-J0J3 z0hTCw_?11ukff8#u)g|ca$s|^$Wu) z=RJ`xZ!4sSSE?Q4P>(H=aj-uc5~cYv?K!gT?0}*d-t0@7Q+hqg+bPa1v(5IM zyq~Hznxo<`gCavkq6Ac6S6qL5!9YD0?!*7^RQ@cbp8L=)?~m@EIa#y$`1a)t83*PG zeHBC`Jcwh^ituaJZ0esq&-%KkKgf*eowq%MCaum!pUtn&;vIl?|0WbiN{y7V%3YKL zw*H2FU|wZbdaM^mZpr0>mh+*_>J3GFWJCmofPlU}@a&4|oC$gcGjBgg4^Q*@w*d@b zP>}H`OJw#~`^9v1ci3FI0SMvI@kRupWWKd!GG1$oOc%vQYjjLQd! zLhWzLfmftYnCL7^%HWpU(WR`VQv8;Dyt!n zmd!BNl5^yyov9lq;1LD?*-g8E5I0N%E%VsDPY~_$R5b{;~ zpoJi~ix@>Qz5eGrxsm?KIJ@W7jbe2$&SK!%Wo@MCXfp@`C%nA81>e6*#XqBnMmYRJpeqx)-Fz=+FwxseJHA&+dE%cX zG2`qX9cGP>O-bO?pxF<_4&|b8IMe_2_R;OS@{JyVT7f~FGK&b^EIY-;uoEzn

pR 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

  • >sKyl2hm~ykq&gpyzKK#o0^M(9 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 jruD-3(iSu^S!XL1X>;?@1;t)j}x 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 z᱓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 za87hF;65�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 {{)DyT!pFa7E5 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 Date: Mon, 5 Oct 2020 21:32:58 -0400 Subject: [PATCH 02/45] fixing consistent intro screen layouts --- ios/Flutter/.last_build_id | 2 +- lib/views/login/index.dart | 299 +++++++++++++++++++------------------ pubspec.lock | 23 ++- pubspec.yaml | 5 +- 4 files changed, 173 insertions(+), 156 deletions(-) diff --git a/ios/Flutter/.last_build_id b/ios/Flutter/.last_build_id index 8b6e1b8d1..f270c7956 100644 --- a/ios/Flutter/.last_build_id +++ b/ios/Flutter/.last_build_id @@ -1 +1 @@ -0ec68b01ef371337af2fda1b7201140f \ No newline at end of file +0ba394d31a93c82e2297852cf07156a9 \ No newline at end of file diff --git a/lib/views/login/index.dart b/lib/views/login/index.dart index 1570b156a..9978d4b6f 100644 --- a/lib/views/login/index.dart +++ b/lib/views/login/index.dart @@ -111,172 +111,179 @@ class LoginState extends State { ), ), Flexible( - flex: 2, - child: Flex( - direction: Axis.vertical, - mainAxisAlignment: MainAxisAlignment.center, - children: [ - FittedBox( - fit: BoxFit.fitWidth, - child: Text( - tr('title-login'), - textAlign: TextAlign.center, - style: Theme.of(context) - .textTheme - .headline4 - .copyWith( - color: Colors.white, - ), - ), - ), - ]), - ), - Flexible( - flex: 3, + flex: 4, fit: FlexFit.loose, child: Flex( direction: Axis.vertical, - mainAxisAlignment: MainAxisAlignment.end, + mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Container( - width: Dimensions.contentWidth(context), - height: Dimensions.inputHeight, - margin: const EdgeInsets.symmetric( - vertical: 8, - ), - constraints: BoxConstraints( - minWidth: Dimensions.inputWidthMin, - maxWidth: Dimensions.inputWidthMax, - ), - child: TextFieldSecure( - maxLines: 1, - label: 'username', - disableSpacing: true, - hint: props.usernameHint, - controller: usernameController, - onSubmitted: (text) { - FocusScope.of(context) - .requestFocus(passwordFocus); - }, - onChanged: (username) { - props.onChangeUsername(username); - }, - suffix: IconButton( - highlightColor: Theme.of(context).primaryColor, - icon: Icon(Icons.help_outline), - tooltip: Strings.tooltipSelectHomeserver, - onPressed: () { - Navigator.pushNamed( - context, - '/search/homeservers', - ); - }, + margin: const EdgeInsets.only(top: 64), + child: FittedBox( + fit: BoxFit.fitWidth, + child: Text( + tr('title-login'), + textAlign: TextAlign.center, + style: Theme.of(context) + .textTheme + .headline4 + .copyWith( + color: Colors.white, + ), ), ), ), - Container( - width: Dimensions.contentWidth(context), - height: Dimensions.inputHeight, - margin: const EdgeInsets.symmetric( - vertical: 8, - ), - constraints: BoxConstraints( - minWidth: Dimensions.inputWidthMin, - maxWidth: Dimensions.inputWidthMax, - ), - child: TextFieldSecure( - label: 'password', - focusNode: passwordFocus, - obscureText: !visibility, - textAlign: TextAlign.left, - onChanged: (password) { - props.onChangePassword(password); - }, - suffix: GestureDetector( - onTap: () { - if (!passwordFocus.hasFocus) { - // Unfocus all focus nodes - passwordFocus.unfocus(); + Column( + children: [ + Container( + width: Dimensions.contentWidth(context), + height: Dimensions.inputHeight, + margin: const EdgeInsets.only( + bottom: 8, + ), + constraints: BoxConstraints( + minWidth: Dimensions.inputWidthMin, + maxWidth: Dimensions.inputWidthMax, + ), + child: TextFieldSecure( + maxLines: 1, + label: 'username', + disableSpacing: true, + hint: props.usernameHint, + controller: usernameController, + onSubmitted: (text) { + FocusScope.of(context) + .requestFocus(passwordFocus); + }, + onChanged: (username) { + props.onChangeUsername(username); + }, + suffix: IconButton( + highlightColor: + Theme.of(context).primaryColor, + icon: Icon(Icons.help_outline), + tooltip: Strings.tooltipSelectHomeserver, + onPressed: () { + Navigator.pushNamed( + context, + '/search/homeservers', + ); + }, + ), + ), + ), + Container( + width: Dimensions.contentWidth(context), + height: Dimensions.inputHeight, + margin: const EdgeInsets.only( + top: 8, + bottom: 16, + ), + constraints: BoxConstraints( + minWidth: Dimensions.inputWidthMin, + maxWidth: Dimensions.inputWidthMax, + ), + child: TextFieldSecure( + label: 'password', + focusNode: passwordFocus, + obscureText: !visibility, + textAlign: TextAlign.left, + onChanged: (password) { + props.onChangePassword(password); + }, + suffix: GestureDetector( + onTap: () { + if (!passwordFocus.hasFocus) { + // Unfocus all focus nodes + passwordFocus.unfocus(); - // Disable text field's focus node request - passwordFocus.canRequestFocus = false; - } + // Disable text field's focus node request + passwordFocus.canRequestFocus = false; + } - // Do your stuff - this.setState(() { - visibility = !this.visibility; - }); + // Do your stuff + this.setState(() { + visibility = !this.visibility; + }); - if (!passwordFocus.hasFocus) { - //Enable the text field's focus node request after some delay - Future.delayed(Duration(milliseconds: 100), - () { - passwordFocus.canRequestFocus = true; - }); - } - }, - child: Icon( - visibility - ? Icons.visibility - : Icons.visibility_off, + if (!passwordFocus.hasFocus) { + //Enable the text field's focus node request after some delay + Future.delayed( + Duration(milliseconds: 100), () { + passwordFocus.canRequestFocus = true; + }); + } + }, + child: Icon( + visibility + ? Icons.visibility + : Icons.visibility_off, + ), + ), ), ), - ), - ), + ], + ) ]), ), - Container( - margin: const EdgeInsets.only(top: 24), - child: ButtonSolid( - text: Strings.buttonLogin, - loading: props.loading, - disabled: !props.isLoginAttemptable, - onPressed: () => props.onLoginUser(), + Flexible( + flex: 0, + child: Flex( + direction: Axis.vertical, + mainAxisAlignment: MainAxisAlignment.end, + children: [ + Container( + padding: const EdgeInsets.only(top: 8, bottom: 12), + child: ButtonSolid( + text: Strings.buttonLogin, + loading: props.loading, + disabled: !props.isLoginAttemptable, + onPressed: () => props.onLoginUser(), + ), + ), + ], ), ), - Container( - height: Dimensions.inputHeight, - constraints: BoxConstraints( - minHeight: Dimensions.inputHeight, - ), - margin: const EdgeInsets.only( - left: 8, - right: 8, - top: 16, - bottom: 24, - ), - child: TouchableOpacity( - activeOpacity: 0.4, - onTap: () => Navigator.pushNamed( - context, - '/signup', + Flexible( + flex: 1, + child: Container( + height: Dimensions.inputHeight, + constraints: BoxConstraints( + minHeight: Dimensions.inputHeight, ), - child: Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Text( - Strings.buttonLoginCreateQuestion, - textAlign: TextAlign.center, - style: TextStyle( - fontSize: 18, - fontWeight: FontWeight.w100, - ), - ), - Container( - padding: const EdgeInsets.only(left: 4), - child: Text( - Strings.buttonLoginCreateAction, + child: TouchableOpacity( + activeOpacity: 0.4, + onTap: () => Navigator.pushNamed( + context, + '/signup', + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text( + Strings.buttonLoginCreateQuestion, textAlign: TextAlign.center, - style: Theme.of(context) - .textTheme - .bodyText2 - .copyWith( - color: Theme.of(context).primaryColor, - decoration: TextDecoration.underline, - ), + style: TextStyle( + fontSize: 18, + fontWeight: FontWeight.w100, + ), ), - ), - ], + Container( + padding: const EdgeInsets.only(left: 4), + child: Text( + Strings.buttonLoginCreateAction, + textAlign: TextAlign.center, + style: Theme.of(context) + .textTheme + .bodyText2 + .copyWith( + color: Theme.of(context).primaryColor, + decoration: TextDecoration.underline, + ), + ), + ), + ], + ), ), ), ), diff --git a/pubspec.lock b/pubspec.lock index f0ccd1df0..9a98c7bf3 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -119,7 +119,7 @@ packages: name: characters url: "https://pub.dartlang.org" source: hosted - version: "1.0.0" + version: "1.1.0-nullsafety.3" charcode: dependency: transitive description: @@ -154,7 +154,7 @@ packages: name: collection url: "https://pub.dartlang.org" source: hosted - version: "1.14.13" + version: "1.15.0-nullsafety.3" convert: dependency: "direct main" description: @@ -493,12 +493,19 @@ packages: source: hosted version: "0.6.2" json_annotation: - dependency: transitive + dependency: "direct main" description: name: json_annotation url: "https://pub.dartlang.org" source: hosted - version: "3.0.1" + version: "3.1.0" + json_serializable: + dependency: "direct dev" + description: + name: json_serializable + url: "https://pub.dartlang.org" + source: hosted + version: "3.5.0" logging: dependency: transitive description: @@ -519,7 +526,7 @@ packages: name: meta url: "https://pub.dartlang.org" source: hosted - version: "1.1.8" + version: "1.3.0-nullsafety.3" mime: dependency: "direct main" description: @@ -925,7 +932,7 @@ packages: name: typed_data url: "https://pub.dartlang.org" source: hosted - version: "1.2.0" + version: "1.3.0-nullsafety.3" unorm_dart: dependency: transitive description: @@ -981,7 +988,7 @@ packages: name: vector_math url: "https://pub.dartlang.org" source: hosted - version: "2.0.8" + version: "2.1.0-nullsafety.3" vm_service: dependency: transitive description: @@ -1039,5 +1046,5 @@ packages: source: hosted version: "2.2.1" sdks: - dart: ">=2.9.0-14.0.dev <3.0.0" + dart: ">=2.10.0-110 <2.11.0" flutter: ">=1.18.0-6.0.pre <2.0.0" diff --git a/pubspec.yaml b/pubspec.yaml index 78ad2afe3..54186c4cd 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -89,7 +89,7 @@ dependencies: # flutter_apns: 1.1.0 # TODO: extract only the iOS code and remove # Converters - # json_serializable: 3.3.0 + json_annotation: ^3.1.0 # Desktop UI Only - UNCOMMENT FOR BUILDS # window_utils: 1.0.2 @@ -109,11 +109,14 @@ dependencies: flutter_local_notifications: 1.4.0 flutter_material_color_picker: ^1.0.5 palette_generator: 0.2.3 + dev_dependencies: flutter_launcher_icons: "^0.7.5" build_runner: ^1.10.1 hive_generator: 0.7.1 + json_serializable: ^3.5.0 + # TODO: build fixes - remove later build_resolvers: 1.3.10 # <- modified to solve build_runner From 8d424309326bd3ae75726ee3aa66ed108ce17cdc Mon Sep 17 00:00:00 2001 From: ereio Date: Mon, 5 Oct 2020 21:33:50 -0400 Subject: [PATCH 03/45] yarn.lock --- pubspec.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/pubspec.lock b/pubspec.lock index f0ccd1df0..f6f80c12a 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -119,7 +119,7 @@ packages: name: characters url: "https://pub.dartlang.org" source: hosted - version: "1.0.0" + version: "1.1.0-nullsafety.3" charcode: dependency: transitive description: @@ -154,7 +154,7 @@ packages: name: collection url: "https://pub.dartlang.org" source: hosted - version: "1.14.13" + version: "1.15.0-nullsafety.3" convert: dependency: "direct main" description: @@ -519,7 +519,7 @@ packages: name: meta url: "https://pub.dartlang.org" source: hosted - version: "1.1.8" + version: "1.3.0-nullsafety.3" mime: dependency: "direct main" description: @@ -925,7 +925,7 @@ packages: name: typed_data url: "https://pub.dartlang.org" source: hosted - version: "1.2.0" + version: "1.3.0-nullsafety.3" unorm_dart: dependency: transitive description: @@ -981,7 +981,7 @@ packages: name: vector_math url: "https://pub.dartlang.org" source: hosted - version: "2.0.8" + version: "2.1.0-nullsafety.3" vm_service: dependency: transitive description: @@ -1039,5 +1039,5 @@ packages: source: hosted version: "2.2.1" sdks: - dart: ">=2.9.0-14.0.dev <3.0.0" + dart: ">=2.10.0-110 <2.11.0" flutter: ">=1.18.0-6.0.pre <2.0.0" From 177dd5d7af2f7fbe8659a72cd88a4a9394b9fd0c Mon Sep 17 00:00:00 2001 From: ereio Date: Mon, 12 Oct 2020 19:58:16 -0400 Subject: [PATCH 04/45] ui tweak --- ios/Flutter/.last_build_id | 2 +- lib/views/login/index.dart | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ios/Flutter/.last_build_id b/ios/Flutter/.last_build_id index f270c7956..dd69892df 100644 --- a/ios/Flutter/.last_build_id +++ b/ios/Flutter/.last_build_id @@ -1 +1 @@ -0ba394d31a93c82e2297852cf07156a9 \ No newline at end of file +4d17cbc20ae4e206cdf903cbe1c6faf1 \ No newline at end of file diff --git a/lib/views/login/index.dart b/lib/views/login/index.dart index 9978d4b6f..76ec645dd 100644 --- a/lib/views/login/index.dart +++ b/lib/views/login/index.dart @@ -233,7 +233,7 @@ class LoginState extends State { mainAxisAlignment: MainAxisAlignment.end, children: [ Container( - padding: const EdgeInsets.only(top: 8, bottom: 12), + padding: const EdgeInsets.only(top: 24, bottom: 12), child: ButtonSolid( text: Strings.buttonLogin, loading: props.loading, From 5e80bc087fd9903faded7b98a36f79ce52301b61 Mon Sep 17 00:00:00 2001 From: ereio Date: Mon, 12 Oct 2020 20:05:13 -0400 Subject: [PATCH 05/45] fix building on latest version of flutter stable w/ hive --- pubspec.lock | 10 +++++----- pubspec.yaml | 23 +++++++++++------------ 2 files changed, 16 insertions(+), 17 deletions(-) diff --git a/pubspec.lock b/pubspec.lock index 9a98c7bf3..baf002cc8 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -14,7 +14,7 @@ packages: name: analyzer url: "https://pub.dartlang.org" source: hosted - version: "0.39.14" + version: "0.39.16" android_alarm_manager: dependency: "direct main" description: @@ -493,19 +493,19 @@ packages: source: hosted version: "0.6.2" json_annotation: - dependency: "direct main" + dependency: transitive description: name: json_annotation url: "https://pub.dartlang.org" source: hosted - version: "3.1.0" + version: "3.0.1" json_serializable: - dependency: "direct dev" + dependency: "direct main" description: name: json_serializable url: "https://pub.dartlang.org" source: hosted - version: "3.5.0" + version: "3.3.0" logging: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 54186c4cd..e40bc15e6 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -57,10 +57,9 @@ dependencies: url: https://gitlab.com/famedly/libraries/dart-olm ref: f66975bd1b5cb1865eba5efe6e3a392aa5e396a5 - # Domain / Store + # State Management expandable: 3.0.1 equatable: 1.2.4 - crypt: 3.0.1 canonical_json: 1.0.0 convert: 2.1.1 device_info: ^0.4.2 @@ -69,15 +68,21 @@ dependencies: redux_persist: 0.8.3 redux_persist_flutter: 0.8.2 flutter_redux: 0.6.0 - hive: 1.4.4 - hive_flutter: 0.3.1 - flutter_secure_storage: 3.3.3 mime: 0.9.7 path_provider: 1.6.14 package_info: 0.4.3 + + # Encryption + crypt: 3.0.1 # steel_crypt: 1.7.1 # cryptography: 1.2.1 + # Cache + hive: 1.4.4 + hive_flutter: 0.3.1 + flutter_secure_storage: 3.3.3 + json_serializable: 3.3.0 + # Services http: ^0.12.0+2 html: ^0.13.3+3 @@ -87,9 +92,6 @@ dependencies: flutter_dotenv: 2.1.0 android_alarm_manager: 0.4.5+11 # flutter_apns: 1.1.0 # TODO: extract only the iOS code and remove - - # Converters - json_annotation: ^3.1.0 # Desktop UI Only - UNCOMMENT FOR BUILDS # window_utils: 1.0.2 @@ -109,21 +111,18 @@ dependencies: flutter_local_notifications: 1.4.0 flutter_material_color_picker: ^1.0.5 palette_generator: 0.2.3 - dev_dependencies: flutter_launcher_icons: "^0.7.5" build_runner: ^1.10.1 hive_generator: 0.7.1 - json_serializable: ^3.5.0 - # TODO: build fixes - remove later build_resolvers: 1.3.10 # <- modified to solve build_runner # TODO: build fixes - remove later dependency_overrides: path: 1.7.0 - analyzer: 0.39.14 + analyzer: 0.39.16 dart_style: 1.3.4 flutter_icons: From 5692246d3f8a23da3b7611164bf4cb9861b1a381 Mon Sep 17 00:00:00 2001 From: ereio Date: Mon, 12 Oct 2020 21:05:11 -0400 Subject: [PATCH 06/45] fixing fdroid metadata --- .../android/en-US/full_description.txt | 8 ++++++++ .../android/en-US/images/featureGraphic.png | Bin 39073 -> 36227 bytes .../metadata/android/en-US/images/icon.png | Bin 13948 -> 57382 bytes .../android/en-US/long_description.txt | 10 ---------- 4 files changed, 8 insertions(+), 10 deletions(-) create mode 100644 fastlane/metadata/android/en-US/full_description.txt delete mode 100644 fastlane/metadata/android/en-US/long_description.txt diff --git a/fastlane/metadata/android/en-US/full_description.txt b/fastlane/metadata/android/en-US/full_description.txt new file mode 100644 index 000000000..c0c515860 --- /dev/null +++ b/fastlane/metadata/android/en-US/full_description.txt @@ -0,0 +1,8 @@ +Please be aware Syphon is in Open Alpha. + +Syphon is a privacy centric matrix chat client built on the foundations of privacy, branding, and user experience +in an effort to pull others away from proprietary chat clients to the matrix protocol. + +Syphon is a not for profit effort, and will always be a community driven application with a mission to help others communicate freely. + +Email us with any questions, concerns, or to get involved for hello@syphon.org. \ No newline at end of file diff --git a/fastlane/metadata/android/en-US/images/featureGraphic.png b/fastlane/metadata/android/en-US/images/featureGraphic.png index ca9a27522d53e04e7c8d5637abb1b0381b16c47d..a8def4077f09e09e4c01033b932a4fc9eea83808 100644 GIT binary patch literal 36227 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%0Dw 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 z zxv=peN*(`TzwAnGr)hd=8v1$-RYx<60Yl=yCP_*lrcA>I*M!TP9^W@zl~Xkp^jZNo zSTXCuym6M67PE5mxNt`y7N9k<=)mIISvwD6Rvt~TFwVk{GN_po5X?;>_-y>PWv3*H zKR0^>m{4TA;KF=jOWOCQDy9$T$VF%Sc+XJ7D3K{!oxfc-_v5P_cby#NU<#U{Qu!$l ze_(3SL=d$T2_entSX5V`#0lcoLF2|fmx7VN*#C9Kw66S=-an;X53iFIFee?30l#ZjYh;FF2$Ri0%Zo0tK>jKL*2(e z&m}F{!l7k(hi73hcGqB8M6bEBHgpY|a{Y=P#j%;Xo(@KSB#bCDhx_+_wS_(~nCOXd zY`=#HjRN2of~!aF4SypasxZB0+T_9%_9|uXRScRQz76Tu1LqM=;_lx+<&i> zGY(m!b%xD7BP_je!y4`}t%W-ay>^j5>+YevtYa)0-L&CBbfz9Bi|upHd-H8)EKx~& zG9K}JobB@fH{32w%>oQzVS;jk&JbmjZeNtV_sGOYuferliIrk#Umx>-`&X+Dql#0Qd%FU$XMYO?BlEqNUk5{Ub zNP~_91s?TA9NK)_@Qe%o|G{*9we1>DT{fny9RsI>-_V-59;1#Jc zjwJ@;CfcKnB!Or_MKi&XmswO_FD9Kr)K!@ww%B78^IR1E2@Wtp?LB!aIDq_v{b1ho zrEv5~P+Mqn}8cK&mBx+P!~iU){Xx3yHlB50y~)D^!H*JXV{0j?Szf##;8T)Qm#vmI5BWa{GEArd literal 13948 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 Wy!%i*>TvV`0000 Date: Mon, 12 Oct 2020 21:13:09 -0400 Subject: [PATCH 07/45] adding reset password http call --- lib/global/libs/matrix/auth.dart | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/lib/global/libs/matrix/auth.dart b/lib/global/libs/matrix/auth.dart index 3aa80c169..bfaec25c4 100644 --- a/lib/global/libs/matrix/auth.dart +++ b/lib/global/libs/matrix/auth.dart @@ -301,4 +301,33 @@ abstract class Auth { return await json.decode(response.body); } + + /** + * Register New User + * + * inhibit_login automatically logs in the user after creation + */ + static FutureOr resetPassword({ + String protocol, + String homeserver, + String clientSecret, + String email, + int sendAttempt = 1, + }) async { + String url = + '$protocol$homeserver/_matrix/client/r0/account/password/email/requestToken'; + + Map body = { + "email": email, + "client_secret": clientSecret, + "send_attempt": sendAttempt, + }; + + final response = await http.post( + url, + body: json.encode(body), + ); + + return await json.decode(response.body); + } } From f0fb68fc14fe8ac64a63ea0fb294995404015655 Mon Sep 17 00:00:00 2001 From: ereio Date: Mon, 12 Oct 2020 22:07:04 -0400 Subject: [PATCH 08/45] initial or stale loading indicator working with cache, will need quicker cache (hive refactor) to always work --- lib/main.dart | 25 +++++++++++++++++++------ lib/store/sync/actions.dart | 20 ++++++++++++++++++++ lib/store/sync/reducer.dart | 5 +++++ lib/store/sync/state.dart | 26 +++++++++++++++++++------- lib/views/home/index.dart | 9 +++++++-- pubspec.lock | 2 +- pubspec.yaml | 2 +- 7 files changed, 72 insertions(+), 17 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index d9f8cb235..a9fc2e2e9 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -22,6 +22,7 @@ import 'package:syphon/store/auth/actions.dart'; import 'package:syphon/store/index.dart'; import 'package:syphon/store/settings/actions.dart'; import 'package:syphon/store/settings/state.dart'; +import 'package:syphon/store/sync/actions.dart'; import 'package:syphon/store/sync/background/service.dart'; import 'package:syphon/views/home/index.dart'; import 'package:syphon/views/intro/index.dart'; @@ -72,12 +73,8 @@ void main() async { // init state cache (hot) final store = await initStore(); - // the main thing - runApp( - Syphon( - store: store, - ), - ); + // the app + runApp(Syphon(store: store)); } class Syphon extends StatefulWidget { @@ -119,6 +116,22 @@ class SyphonState extends State with WidgetsBindingObserver { onMounted(); } + @override + void didChangeAppLifecycleState(AppLifecycleState state) async { + switch (state) { + case AppLifecycleState.resumed: + case AppLifecycleState.inactive: + break; + break; + case AppLifecycleState.paused: + store.dispatch(setBackgrounded(true)); + break; + case AppLifecycleState.detached: + store.dispatch(setBackgrounded(true)); + break; + } + } + @protected void onMounted() { // init auth listener diff --git a/lib/store/sync/actions.dart b/lib/store/sync/actions.dart index 9689629a8..9f7f7d603 100644 --- a/lib/store/sync/actions.dart +++ b/lib/store/sync/actions.dart @@ -38,6 +38,11 @@ class SetOffline { SetOffline({this.offline}); } +class SetBackgrounded { + final bool backgrounded; + SetBackgrounded({this.backgrounded}); +} + class SetSyncing { final bool syncing; SetSyncing({this.syncing}); @@ -160,6 +165,20 @@ ThunkAction initialSync() { }; } +/** + * + * Set Backgrounded + * + * Mark when the app has been backgrounded to visualize loading feedback + * + */ +ThunkAction setBackgrounded(bool backgrounded) { + return (Store store) async { + print('set backgrounded ${backgrounded}'); + store.dispatch(SetBackgrounded(backgrounded: backgrounded)); + }; +} + /** * * Fetch Sync @@ -245,6 +264,7 @@ ThunkAction fetchSync({String since, bool forceFull = false}) { final nextBackoff = backoff != 0 ? backoff + 1 : 5; store.dispatch(SetBackoff(backoff: nextBackoff)); } finally { + store.dispatch(setBackgrounded(false)); store.dispatch(SetSyncing(syncing: false)); } }; diff --git a/lib/store/sync/reducer.dart b/lib/store/sync/reducer.dart index 1b543831e..26a632890 100644 --- a/lib/store/sync/reducer.dart +++ b/lib/store/sync/reducer.dart @@ -17,6 +17,10 @@ SyncStore syncReducer([SyncStore state = const SyncStore(), dynamic action]) { return state.copyWith( unauthed: action.unauthed, ); + case SetBackgrounded: + return state.copyWith( + backgrounded: action.backgrounded, + ); case SetOffline: return state.copyWith( offline: action.offline, @@ -28,6 +32,7 @@ SyncStore syncReducer([SyncStore state = const SyncStore(), dynamic action]) { synced: action.synced, syncing: action.syncing, lastSince: action.lastSince, + lastAttempt: DateTime.now().millisecondsSinceEpoch, lastUpdate: action.synced ? DateTime.now().millisecondsSinceEpoch : state.lastUpdate, diff --git a/lib/store/sync/state.dart b/lib/store/sync/state.dart index d51b5658b..2740216fc 100644 --- a/lib/store/sync/state.dart +++ b/lib/store/sync/state.dart @@ -32,13 +32,18 @@ class SyncStore extends Equatable { final bool unauthed; final Timer syncObserver; + @HiveField(6) final int lastAttempt; // last attempt to sync + @HiveField(7) + final bool backgrounded; + const SyncStore({ this.synced = false, this.syncing = false, this.unauthed = false, this.offline = false, + this.backgrounded = false, this.lastUpdate = 0, this.lastAttempt = 0, this.backoff = 0, @@ -53,6 +58,7 @@ class SyncStore extends Equatable { offline, backoff, unauthed, + backgrounded, lastUpdate, lastAttempt, lastSince, @@ -60,12 +66,13 @@ class SyncStore extends Equatable { ]; SyncStore copyWith({ - synced, - syncing, - offline, - backoff, - unauthed, - lastUpdate, + int backoff, + bool synced, + bool syncing, + bool offline, + bool unauthed, + bool backgrounded, + int lastUpdate, lastAttempt, syncObserver, lastSince, @@ -76,9 +83,14 @@ class SyncStore extends Equatable { offline: offline ?? this.offline, unauthed: unauthed ?? this.unauthed, lastUpdate: lastUpdate ?? this.lastUpdate, - lastAttempt: lastAttempt ?? this.lastAttempt, + lastAttempt: lastAttempt ?? + this.lastAttempt ?? + 0, // TODO: remove after version 0.1.4 lastSince: lastSince ?? this.lastSince, syncObserver: syncObserver ?? this.syncObserver, + backgrounded: backgrounded ?? + this.backgrounded ?? + false, // TODO: remove after version 0.1.4 backoff: backoff ?? this.backoff, ); } diff --git a/lib/views/home/index.dart b/lib/views/home/index.dart index cc8b63aef..d7cbf2e55 100644 --- a/lib/views/home/index.dart +++ b/lib/views/home/index.dart @@ -645,24 +645,29 @@ class _Props extends Equatable { syncing: () { final syncing = store.state.syncStore.syncing; final offline = store.state.syncStore.offline; + final backgrounded = store.state.syncStore.backgrounded; final loadingRooms = store.state.roomStore.loading; final lastAttempt = DateTime.fromMillisecondsSinceEpoch( - store.state.syncStore.lastAttempt); + store.state.syncStore.lastAttempt ?? 0); // See if the last attempted sync is older than 60 seconds final isLastAttemptOld = DateTime.now() .difference(lastAttempt) .compareTo(Duration(seconds: 60)); + // syncing for the first time since going offline if (syncing && offline) { return true; } + + // joining or removing a room if (loadingRooms) { return true; } - if (syncing && 0 < isLastAttemptOld) { + // syncing for the first time in a while or restarting the app + if (syncing && (0 < isLastAttemptOld || backgrounded)) { return true; } diff --git a/pubspec.lock b/pubspec.lock index baf002cc8..8ca209927 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -421,7 +421,7 @@ packages: name: hive_generator url: "https://pub.dartlang.org" source: hosted - version: "0.7.1" + version: "0.8.1" html: dependency: "direct main" description: diff --git a/pubspec.yaml b/pubspec.yaml index e40bc15e6..52e79a4ef 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -115,7 +115,7 @@ dependencies: dev_dependencies: flutter_launcher_icons: "^0.7.5" build_runner: ^1.10.1 - hive_generator: 0.7.1 + hive_generator: 0.8.1 # TODO: build fixes - remove later build_resolvers: 1.3.10 # <- modified to solve build_runner From 94746fe02c9dfbb784905088960db04d1082ee45 Mon Sep 17 00:00:00 2001 From: ereio Date: Mon, 12 Oct 2020 22:35:42 -0400 Subject: [PATCH 09/45] increasing the timeout --- lib/views/home/index.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/views/home/index.dart b/lib/views/home/index.dart index d7cbf2e55..1a53a6653 100644 --- a/lib/views/home/index.dart +++ b/lib/views/home/index.dart @@ -654,7 +654,7 @@ class _Props extends Equatable { // See if the last attempted sync is older than 60 seconds final isLastAttemptOld = DateTime.now() .difference(lastAttempt) - .compareTo(Duration(seconds: 60)); + .compareTo(Duration(seconds: 90)); // syncing for the first time since going offline if (syncing && offline) { From 895abc587ac0154643409f5d871b0da78ea7ddca Mon Sep 17 00:00:00 2001 From: ereio Date: Thu, 15 Oct 2020 18:55:19 -0400 Subject: [PATCH 10/45] added avatar shape theme option --- lib/store/crypto/actions.dart | 21 +- lib/store/crypto/magnolia/index.dart | 199 ------------------ lib/store/settings/actions.dart | 24 ++- lib/store/settings/reducer.dart | 4 + lib/store/settings/state.dart | 8 +- lib/views/home/chat/details-all-users.dart | 4 +- lib/views/home/chat/details-chat.dart | 4 +- lib/views/home/groups/invite-users.dart | 8 +- lib/views/home/index.dart | 150 +++++++------ lib/views/home/profile/details-user.dart | 4 +- lib/views/home/profile/index.dart | 4 +- lib/views/home/search/search-groups.dart | 4 +- lib/views/home/search/search-rooms.dart | 4 +- lib/views/home/search/search-users.dart | 6 +- lib/views/home/settings/theming.dart | 20 ++ .../settings/widgets/profile-preview.dart | 4 +- lib/views/search/search-homeservers.dart | 6 +- lib/views/widgets/appbars/appbar-chat.dart | 4 +- lib/views/widgets/avatars/avatar-app-bar.dart | 4 +- lib/views/widgets/avatars/avatar-circle.dart | 124 ----------- lib/views/widgets/avatars/avatar.dart | 156 ++++++++++++++ .../widgets/lists/list-user-bubbles.dart | 4 +- .../widgets/messages/message-typing.dart | 4 +- lib/views/widgets/messages/message.dart | 4 +- .../widgets/modals/modal-user-details.dart | 4 +- pubspec.yaml | 4 +- 26 files changed, 334 insertions(+), 448 deletions(-) delete mode 100644 lib/store/crypto/magnolia/index.dart delete mode 100644 lib/views/widgets/avatars/avatar-circle.dart create mode 100644 lib/views/widgets/avatars/avatar.dart diff --git a/lib/store/crypto/actions.dart b/lib/store/crypto/actions.dart index ad278baa8..76302090b 100644 --- a/lib/store/crypto/actions.dart +++ b/lib/store/crypto/actions.dart @@ -1,8 +1,3 @@ -/** - * - * TODO: not sure if we ever need unsigned keys - */ - // Dart imports: import 'dart:convert'; import 'dart:io'; @@ -20,7 +15,6 @@ import 'package:olm/olm.dart' as olm; import 'package:path_provider/path_provider.dart'; import 'package:redux/redux.dart'; import 'package:redux_thunk/redux_thunk.dart'; -import 'package:syphon/global/algos.dart'; // Project imports: import 'package:syphon/global/libs/matrix/encryption.dart'; @@ -422,10 +416,19 @@ ThunkAction signOneTimeKeys(Map oneTimeKeys) { ThunkAction updateOneTimeKeyCounts(Map oneTimeKeysCounts) { return (Store store) async { - store.dispatch( - SetOneTimeKeysCounts(oneTimeKeysCounts: oneTimeKeysCounts), - ); + final accessToken = store.state.authStore.user.accessToken; + + // Confirm user is authenticated still + if (accessToken == null) { + return; + } + + // Confirm user is authenticated still + store.dispatch(SetOneTimeKeysCounts( + oneTimeKeysCounts: oneTimeKeysCounts, + )); + // Confirm user has generated an olm account final olmAccount = store.state.cryptoStore.olmAccount; if (olmAccount == null) { return; diff --git a/lib/store/crypto/magnolia/index.dart b/lib/store/crypto/magnolia/index.dart deleted file mode 100644 index e270d9e3a..000000000 --- a/lib/store/crypto/magnolia/index.dart +++ /dev/null @@ -1,199 +0,0 @@ -/** - * - * Magnolia - * - * Eventually, a dart native implimentation of double ratchet - * - * these are just actions created while I was trying to - * implement double ratchet alongside the matrix protocols - * needs, they no longer work within syphon and are just - * there for documentation - */ - -/* - -// Dart imports: -import 'dart:convert'; - -// Package imports: -import 'package:canonical_json/canonical_json.dart'; -import 'package:redux/redux.dart'; -import 'package:redux_thunk/redux_thunk.dart'; - -// Project imports: -import 'package:syphon/global/libs/matrix/encryption.dart'; -import 'package:syphon/store/alerts/actions.dart'; -import 'package:syphon/store/crypto/actions.dart'; -import 'package:syphon/store/crypto/model.dart'; -import 'package:syphon/store/index.dart'; -import 'package:syphon/store/user/model.dart'; - -ThunkAction initKeyEncryption(User user) { - return (Store store) async { - // fetch device keys and pull out key based on device id - final ownedDeviceKeys = await store.dispatch( - fetchDeviceKeysOwned(), - ); - - // check if key exists for this device - if (!ownedDeviceKeys.containsKey(user.deviceId)) { - // generate a key if none exist locally and remotely - if (store.state.cryptoStore.deviceKeysOwned.isEmpty) { - await store.dispatch(initOlmEncryption(user)); - } - - final deviceId = store.state.authStore.user.deviceId; - final deviceKey = store.state.cryptoStore.deviceKeysOwned[deviceId]; - - // upload the key intended for this device - await store.dispatch(uploadIdentityKeys(deviceKey: deviceKey)); - } else { - // if a key exists remotely, mark that it does - // the user will be prompted to import in "home" - // if they have no local keys - store.dispatch(toggleDeviceKeysExist(true)); - } - - // append all keys uploaded remotely - store.dispatch(setDeviceKeysOwned(ownedDeviceKeys)); - }; -} - -ThunkAction exportDeviceKeysOwned() { - return (Store store) async { - try { - final directory = await getApplicationDocumentsDirectory(); - - final currentTime = DateTime.now(); - - final formattedTime = - DateFormat('MMM_dd_yyyy_hh_mm_aa').format(currentTime).toLowerCase(); - - final fileName = - '${directory.path}/app_key_export_$formattedTime.json'; - - var file = File(fileName); - - final user = store.state.authStore.user; - final deviceKey = store.state.cryptoStore.deviceKeysOwned[user.deviceId]; - - file = await file.writeAsString( - json.encode(deviceKey.toMap(), - ); - - } catch (error) { - store.dispatch(addAlert(type: 'warning', message: error)); - } - }; -} -/** - * - * Generating Device Keys - * - * https://matrix.org/docs/spec/client_server/latest#id427 - * https://matrix.org/docs/guides/end-to-end-encryption-implementation-guide - * https://pub.dev/documentation/cryptography/latest/ - * https://matrix.org/docs/spec/appendices#id7 - * https://matrix.org/docs/spec/appendices#id2 - * - */ -ThunkAction generateDeviceKeyManual() { - return (Store store) async { - try { - final authUser = store.state.authStore.user; - // final Device currentDevice = await store.dispatch(generateDeviceId()); - - // fingerprint keypair - ed25519 - final fingerprintKeyName = - '${Algorithms.ed25519}:${authUser.deviceId}'; - final fingerprintKeyPair = await ed25519.newKeyPair(); - - // identity key pair - curve25519 - final identityKeyName = - '${Algorithms.curve25591}:${authUser.deviceId}'; - final identityKeyPair = await x25519.newKeyPair(); - - // unpadded base64 encode - final encodedFingerprintPublicKey = base64Encode( - fingerprintKeyPair.publicKey.bytes, - ).replaceAll("=", ''); - - final encodedIdentityPublicKey = base64Encode( - identityKeyPair.publicKey.bytes, - ).replaceAll("=", ''); - - // formatting json for the signature required by matrix - var deviceKeys = { - 'device_keys': { - 'algorithms': [ - Algorithms.olmv1, - Algorithms.megolmv1, - ], - 'device_id': authUser.deviceId, - 'keys': { - identityKeyName: encodedIdentityPublicKey, - fingerprintKeyName: encodedFingerprintPublicKey, - }, - 'user_id': authUser.userId, - } - }; - - // figerprint signature key pair generation for upload - final deviceKeyJsonBytes = canonicalJson.encode(deviceKeys); - final fingerprintSignature = await ed25519.sign( - deviceKeyJsonBytes, - fingerprintKeyPair, - ); - final encodedFingerprintSignature = base64Encode( - fingerprintSignature.bytes, - ).replaceAll("=", ''); - - // figerprint signature key pair appended for upload - deviceKeys['device_keys']['signatures'] = { - authUser.userId: { - fingerprintKeyName: encodedFingerprintSignature, - } - }; - - // Cache the private device keys - final fingerprintPrivateKey = - await fingerprintKeyPair.privateKey.extract(); - final identityPrivateKey = await identityKeyPair.privateKey.extract(); - - final Map privateKeys = { - fingerprintKeyName: base64Encode(fingerprintPrivateKey), - identityKeyName: base64Encode(identityPrivateKey), - }; - - // converting to deviceKey model - final deviceKeysOwned = DeviceKey.fromJson( - deviceKeys['device_keys'], - privateKeys: privateKeys, - ); - - // cache current device, device key for authed user - store.dispatch(SetDeviceKeysOwned( - deviceKeysOwned: { - authUser.deviceId: deviceKeysOwned, - }, - )); - } catch (error) { - store.dispatch(addAlert(type: 'warning', message: error)); - } - }; -} - -ThunkAction setDeviceKeysOwned(Map deviceKeys) { - return (Store store) async { - var currentKeys = Map.from( - store.state.cryptoStore.deviceKeysOwned, - ); - - deviceKeys.forEach((key, value) { - currentKeys.putIfAbsent(key, () => deviceKeys[key]); - }); - - store.dispatch(SetDeviceKeysOwned(deviceKeysOwned: currentKeys)); - }; -} -*/ diff --git a/lib/store/settings/actions.dart b/lib/store/settings/actions.dart index 2da3d7120..ab8485969 100644 --- a/lib/store/settings/actions.dart +++ b/lib/store/settings/actions.dart @@ -1,5 +1,4 @@ // Flutter imports: -import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; // Package imports: @@ -32,6 +31,11 @@ class SetPrimaryColor { SetPrimaryColor({this.color}); } +class SetAvatarShape { + final String avatarShape; + SetAvatarShape({this.avatarShape}); +} + class SetAccentColor { final int color; SetAccentColor({this.color}); @@ -333,6 +337,24 @@ ThunkAction incrementTheme() { }; } +ThunkAction incrementAvatarShape() { + return (Store store) async { + final currentShape = store.state.settingsStore.avatarShape; + var newShape; + + switch (currentShape) { + case "Circle": + newShape = 'Square'; + break; + default: + newShape = "Circle"; + break; + } + + store.dispatch(SetAvatarShape(avatarShape: newShape)); + }; +} + final languages = ['English', "Russian"]; ThunkAction incrementLanguage(context) { diff --git a/lib/store/settings/reducer.dart b/lib/store/settings/reducer.dart index a1d90fe42..811f7ebaf 100644 --- a/lib/store/settings/reducer.dart +++ b/lib/store/settings/reducer.dart @@ -30,6 +30,10 @@ SettingsStore settingsReducer( return state.copyWith( fontSize: action.fontSize, ); + case SetAvatarShape: + return state.copyWith( + avatarShape: action.avatarShape, + ); case SetAppBarColor: return state.copyWith( appBarColor: action.color, diff --git a/lib/store/settings/state.dart b/lib/store/settings/state.dart index b3fe0f9b4..80ab0233b 100644 --- a/lib/store/settings/state.dart +++ b/lib/store/settings/state.dart @@ -12,7 +12,7 @@ import './chat-settings/model.dart'; part 'state.g.dart'; -// Next Field ID: 20 +// Next Field ID: 21 @HiveType(typeId: SettingsStoreHiveId) class SettingsStore extends Equatable { @HiveField(0) @@ -49,6 +49,8 @@ class SettingsStore extends Equatable { final String fontSize; @HiveField(9) final String language; + @HiveField(20) + final String avatarShape; @HiveField(12) final List devices; @@ -76,6 +78,7 @@ class SettingsStore extends Equatable { this.fontName = 'Rubik', this.fontSize = 'Default', this.language = 'English', + this.avatarShape = 'Circle', this.enterSend = false, this.smsEnabled = false, this.readReceipts = false, @@ -102,6 +105,7 @@ class SettingsStore extends Equatable { fontName, fontSize, language, + avatarShape, smsEnabled, enterSend, readReceipts, @@ -126,6 +130,7 @@ class SettingsStore extends Equatable { String fontName, String fontSize, String language, + String avatarShape, bool smsEnabled, bool enterSend, bool readReceipts, @@ -150,6 +155,7 @@ class SettingsStore extends Equatable { fontName: fontName ?? this.fontName, fontSize: fontSize ?? this.fontSize, language: language ?? this.language, + avatarShape: avatarShape ?? this.avatarShape, smsEnabled: smsEnabled ?? this.smsEnabled, enterSend: enterSend != null ? enterSend : this.enterSend, readReceipts: readReceipts != null ? readReceipts : this.readReceipts, diff --git a/lib/views/home/chat/details-all-users.dart b/lib/views/home/chat/details-all-users.dart index 5b2824e80..b19370e88 100644 --- a/lib/views/home/chat/details-all-users.dart +++ b/lib/views/home/chat/details-all-users.dart @@ -23,7 +23,7 @@ import 'package:syphon/store/index.dart'; import 'package:syphon/store/search/actions.dart'; import 'package:syphon/store/user/model.dart'; import 'package:syphon/store/user/selectors.dart'; -import 'package:syphon/views/widgets/avatars/avatar-circle.dart'; +import 'package:syphon/views/widgets/avatars/avatar.dart'; class ChatUsersDetailArguments { final String roomId; @@ -106,7 +106,7 @@ class ChatUsersDetailState extends State { elevation: 0, child: Container( child: ListTile( - leading: AvatarCircle( + leading: Avatar( uri: user.avatarUri, alt: user.displayName ?? user.userId, size: Dimensions.avatarSizeMin, diff --git a/lib/views/home/chat/details-chat.dart b/lib/views/home/chat/details-chat.dart index 34f68187b..05c92cac1 100644 --- a/lib/views/home/chat/details-chat.dart +++ b/lib/views/home/chat/details-chat.dart @@ -24,7 +24,7 @@ import 'package:syphon/store/rooms/selectors.dart' as roomSelectors; import 'package:syphon/store/settings/chat-settings/actions.dart'; import 'package:syphon/store/settings/chat-settings/model.dart'; import 'package:syphon/store/user/model.dart'; -import 'package:syphon/views/widgets/avatars/avatar-circle.dart'; +import 'package:syphon/views/widgets/avatars/avatar.dart'; import 'package:syphon/views/widgets/dialogs/dialog-color-picker.dart'; class ChatSettingsArguments { @@ -185,7 +185,7 @@ class ChatDetailsState extends State { children: [ Opacity( opacity: headerOpacity, - child: AvatarCircle( + child: Avatar( size: height * 0.15, uri: props.room.avatarUri, alt: props.room.name, diff --git a/lib/views/home/groups/invite-users.dart b/lib/views/home/groups/invite-users.dart index ef30b6caf..fccbb5822 100644 --- a/lib/views/home/groups/invite-users.dart +++ b/lib/views/home/groups/invite-users.dart @@ -26,7 +26,7 @@ import 'package:syphon/store/index.dart'; import 'package:syphon/store/search/actions.dart'; import 'package:syphon/store/user/model.dart'; import 'package:syphon/store/user/selectors.dart'; -import 'package:syphon/views/widgets/avatars/avatar-circle.dart'; +import 'package:syphon/views/widgets/avatars/avatar.dart'; import 'package:syphon/views/widgets/dialogs/dialog-start-chat.dart'; import 'package:syphon/views/widgets/modals/modal-user-details.dart'; @@ -272,7 +272,7 @@ class InviteUsersState extends State { labelPadding: EdgeInsets.only(left: 8), padding: EdgeInsets.zero, visualDensity: VisualDensity.comfortable, - avatar: AvatarCircle( + avatar: Avatar( margin: EdgeInsets.zero, padding: EdgeInsets.zero, uri: user.avatarUri, @@ -353,7 +353,7 @@ class InviteUsersState extends State { child: ListTile( enabled: creatingRoomDisplayName != searchable, - leading: AvatarCircle( + leading: Avatar( uri: attemptableUser.avatarUri, alt: attemptableUser.displayName ?? attemptableUser.userId, @@ -411,7 +411,7 @@ class InviteUsersState extends State { ), child: Stack( children: [ - AvatarCircle( + Avatar( uri: user.avatarUri, alt: user.displayName ?? user.userId, diff --git a/lib/views/home/index.dart b/lib/views/home/index.dart index 1a53a6653..85386133a 100644 --- a/lib/views/home/index.dart +++ b/lib/views/home/index.dart @@ -32,7 +32,7 @@ import 'package:syphon/store/user/model.dart'; import 'package:syphon/views/home/chat/details-chat.dart'; import 'package:syphon/views/home/chat/index.dart'; import 'package:syphon/views/widgets/avatars/avatar-app-bar.dart'; -import 'package:syphon/views/widgets/avatars/avatar-circle.dart'; +import 'package:syphon/views/widgets/avatars/avatar.dart'; import 'package:syphon/views/widgets/containers/menu-rounded.dart'; import 'package:syphon/views/widgets/containers/ring-actions.dart'; @@ -75,94 +75,92 @@ class HomeViewState extends State { } @protected - Widget buildAppBarRoomOptions({BuildContext context, _Props props}) { - return AppBar( - backgroundColor: Colors.grey[500], - automaticallyImplyLeading: false, - titleSpacing: 0.0, - title: Row( - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - Container( - margin: EdgeInsets.only(left: 8), - child: IconButton( - icon: Icon(Icons.close), - color: Colors.white, - iconSize: Dimensions.buttonAppBarSize, - onPressed: onDismissMessageOptions, - ), - ), - ], - ), - actions: [ - IconButton( - icon: Icon(Icons.info_outline), - iconSize: Dimensions.buttonAppBarSize, - tooltip: 'Chat Details', - color: Colors.white, - onPressed: () { - Navigator.pushNamed( - context, - '/home/chat/settings', - arguments: ChatSettingsArguments( - roomId: selectedRoom.id, - title: selectedRoom.name, + Widget buildAppBarRoomOptions({BuildContext context, _Props props}) => AppBar( + backgroundColor: Colors.grey[500], + automaticallyImplyLeading: false, + titleSpacing: 0.0, + title: Row( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Container( + margin: EdgeInsets.only(left: 8), + child: IconButton( + icon: Icon(Icons.close), + color: Colors.white, + iconSize: Dimensions.buttonAppBarSize, + onPressed: onDismissMessageOptions, ), - ); - }, - ), - IconButton( - icon: Icon(Icons.archive), - iconSize: Dimensions.buttonAppBarSize, - tooltip: 'Archive Room', - color: Colors.white, - onPressed: () async { - await props.onArchiveRoom(room: this.selectedRoom); - this.setState(() { - selectedRoom = null; - }); - }, + ), + ], ), - Visibility( - visible: true, - child: IconButton( - icon: Icon(Icons.exit_to_app), + actions: [ + IconButton( + icon: Icon(Icons.info_outline), iconSize: Dimensions.buttonAppBarSize, - tooltip: 'Leave Chat', + tooltip: 'Chat Details', color: Colors.white, - onPressed: () async { - await props.onLeaveChat(room: this.selectedRoom); - this.setState(() { - selectedRoom = null; - }); + onPressed: () { + Navigator.pushNamed( + context, + '/home/chat/settings', + arguments: ChatSettingsArguments( + roomId: selectedRoom.id, + title: selectedRoom.name, + ), + ); }, ), - ), - Visibility( - visible: this.selectedRoom.direct, - child: IconButton( - icon: Icon(Icons.delete_outline), + IconButton( + icon: Icon(Icons.archive), iconSize: Dimensions.buttonAppBarSize, - tooltip: 'Delete Chat', + tooltip: 'Archive Room', color: Colors.white, onPressed: () async { - await props.onDeleteChat(room: this.selectedRoom); + await props.onArchiveRoom(room: this.selectedRoom); this.setState(() { selectedRoom = null; }); }, ), - ), - IconButton( - icon: Icon(Icons.select_all), - iconSize: Dimensions.buttonAppBarSize, - tooltip: 'Select All', - color: Colors.white, - onPressed: () {}, - ), - ], - ); - } + Visibility( + visible: true, + child: IconButton( + icon: Icon(Icons.exit_to_app), + iconSize: Dimensions.buttonAppBarSize, + tooltip: 'Leave Chat', + color: Colors.white, + onPressed: () async { + await props.onLeaveChat(room: this.selectedRoom); + this.setState(() { + selectedRoom = null; + }); + }, + ), + ), + Visibility( + visible: this.selectedRoom.direct, + child: IconButton( + icon: Icon(Icons.delete_outline), + iconSize: Dimensions.buttonAppBarSize, + tooltip: 'Delete Chat', + color: Colors.white, + onPressed: () async { + await props.onDeleteChat(room: this.selectedRoom); + this.setState(() { + selectedRoom = null; + }); + }, + ), + ), + IconButton( + icon: Icon(Icons.select_all), + iconSize: Dimensions.buttonAppBarSize, + tooltip: 'Select All', + color: Colors.white, + onPressed: () {}, + ), + ], + ); @protected Widget buildAppBar({BuildContext context, _Props props}) => AppBar( @@ -378,7 +376,7 @@ class HomeViewState extends State { margin: const EdgeInsets.only(right: 12), child: Stack( children: [ - AvatarCircle( + Avatar( uri: room.avatarUri, size: Dimensions.avatarSizeMin, alt: formatRoomInitials(room: room), diff --git a/lib/views/home/profile/details-user.dart b/lib/views/home/profile/details-user.dart index 1cd44ca6d..adc05e2a2 100644 --- a/lib/views/home/profile/details-user.dart +++ b/lib/views/home/profile/details-user.dart @@ -14,7 +14,7 @@ import 'package:syphon/views/widgets/modals/modal-user-details.dart'; import 'package:syphon/global/dimensions.dart'; import 'package:syphon/store/index.dart'; import 'package:syphon/store/user/model.dart'; -import 'package:syphon/views/widgets/avatars/avatar-circle.dart'; +import 'package:syphon/views/widgets/avatars/avatar.dart'; import 'package:syphon/views/widgets/dialogs/dialog-color-picker.dart'; /** @@ -167,7 +167,7 @@ class UserDetailsState extends State { children: [ Opacity( opacity: headerOpacity, - child: AvatarCircle( + child: Avatar( size: height * 0.15, uri: user.avatarUri, alt: user.displayName ?? user.userId ?? '', diff --git a/lib/views/home/profile/index.dart b/lib/views/home/profile/index.dart index 95be9dff6..8e477da2c 100644 --- a/lib/views/home/profile/index.dart +++ b/lib/views/home/profile/index.dart @@ -11,7 +11,7 @@ import 'package:flutter_redux/flutter_redux.dart'; import 'package:redux/redux.dart'; import 'package:syphon/global/colours.dart'; import 'package:syphon/global/themes.dart'; -import 'package:syphon/views/widgets/avatars/avatar-circle.dart'; +import 'package:syphon/views/widgets/avatars/avatar.dart'; import 'package:syphon/views/widgets/input/text-field-secure.dart'; import 'package:touchable_opacity/touchable_opacity.dart'; @@ -98,7 +98,7 @@ class ProfileViewState extends State { final double imageSize = Dimensions.avatarSizeDetails; // Space for confirming rebuilding - Widget avatarWidget = AvatarCircle( + Widget avatarWidget = Avatar( uri: props.user.avatarUri, alt: formatUsername(props.user), size: imageSize, diff --git a/lib/views/home/search/search-groups.dart b/lib/views/home/search/search-groups.dart index ad2f14098..4df2c3e7e 100644 --- a/lib/views/home/search/search-groups.dart +++ b/lib/views/home/search/search-groups.dart @@ -19,7 +19,7 @@ import 'package:syphon/store/rooms/actions.dart'; import 'package:syphon/store/rooms/room/model.dart'; import 'package:syphon/store/rooms/room/selectors.dart'; import 'package:syphon/store/search/actions.dart'; -import 'package:syphon/views/widgets/avatars/avatar-circle.dart'; +import 'package:syphon/views/widgets/avatars/avatar.dart'; class GroupSearchView extends StatefulWidget { const GroupSearchView({Key key}) : super(key: key); @@ -103,7 +103,7 @@ class GroupSearchState extends State { header: ListTile( leading: Stack( children: [ - AvatarCircle( + Avatar( uri: room.avatarUri, alt: room.name, size: Dimensions.avatarSizeMin, diff --git a/lib/views/home/search/search-rooms.dart b/lib/views/home/search/search-rooms.dart index 1739e1bc6..7b72e5360 100644 --- a/lib/views/home/search/search-rooms.dart +++ b/lib/views/home/search/search-rooms.dart @@ -26,7 +26,7 @@ import 'package:syphon/store/rooms/actions.dart'; import 'package:syphon/store/rooms/room/model.dart'; import 'package:syphon/store/rooms/room/selectors.dart'; import 'package:syphon/store/search/actions.dart'; -import 'package:syphon/views/widgets/avatars/avatar-circle.dart'; +import 'package:syphon/views/widgets/avatars/avatar.dart'; import 'package:syphon/views/widgets/dialogs/dialog-start-chat.dart'; class RoomSearchArguments { @@ -190,7 +190,7 @@ class RoomSearchState extends State { margin: const EdgeInsets.only(right: 12), child: Stack( children: [ - AvatarCircle( + Avatar( uri: room.avatarUri, size: Dimensions.avatarSizeMin, alt: formatRoomInitials(room: room), diff --git a/lib/views/home/search/search-users.dart b/lib/views/home/search/search-users.dart index c63933d86..1f36de844 100644 --- a/lib/views/home/search/search-users.dart +++ b/lib/views/home/search/search-users.dart @@ -28,7 +28,7 @@ import 'package:syphon/store/search/actions.dart'; import 'package:syphon/store/user/model.dart'; import 'package:syphon/store/user/selectors.dart'; import 'package:syphon/views/home/chat/index.dart'; -import 'package:syphon/views/widgets/avatars/avatar-circle.dart'; +import 'package:syphon/views/widgets/avatars/avatar.dart'; import 'package:syphon/views/widgets/dialogs/dialog-start-chat.dart'; class SearchUserView extends StatefulWidget { @@ -204,7 +204,7 @@ class SearchUserState extends State { child: Container( child: ListTile( enabled: creatingRoomDisplayName != searchable, - leading: AvatarCircle( + leading: Avatar( uri: attemptableUser.avatarUri, alt: attemptableUser.displayName ?? attemptableUser.userId, size: Dimensions.avatarSizeMin, @@ -264,7 +264,7 @@ class SearchUserState extends State { child: Container( child: ListTile( enabled: creatingRoomDisplayName != user.displayName, - leading: AvatarCircle( + leading: Avatar( uri: user.avatarUri, alt: user.displayName ?? user.userId, size: Dimensions.avatarSizeMin, diff --git a/lib/views/home/settings/theming.dart b/lib/views/home/settings/theming.dart index e1f9a1a46..c3ebf749b 100644 --- a/lib/views/home/settings/theming.dart +++ b/lib/views/home/settings/theming.dart @@ -197,6 +197,17 @@ class Theming extends StatelessWidget { ), onTap: () => props.onToggleRoomTypeBadges(), ), + ListTile( + onTap: () => props.onIncrementAvatarShape(), + contentPadding: Dimensions.listPadding, + title: Text( + 'Avatar Shape', + style: Theme.of(context).textTheme.subtitle1, + ), + trailing: Text( + props.avatarShape, + ), + ), ], ), ), @@ -216,6 +227,7 @@ class Props extends Equatable { final String language; final String fontName; final String fontSize; + final String avatarShape; final bool roomTypeBadgesEnabled; @@ -226,6 +238,7 @@ class Props extends Equatable { final Function onIncrementFontSize; final Function onIncrementTheme; final Function onToggleRoomTypeBadges; + final Function onIncrementAvatarShape; Props({ @required this.primaryColor, @@ -235,6 +248,7 @@ class Props extends Equatable { @required this.language, @required this.fontName, @required this.fontSize, + @required this.avatarShape, @required this.roomTypeBadgesEnabled, @required this.onSelectPrimaryColor, @required this.onSelectAccentColor, @@ -243,6 +257,7 @@ class Props extends Equatable { @required this.onIncrementFontSize, @required this.onIncrementTheme, @required this.onToggleRoomTypeBadges, + @required this.onIncrementAvatarShape, }); @override @@ -254,6 +269,7 @@ class Props extends Equatable { language, fontName, fontSize, + avatarShape, roomTypeBadgesEnabled, ]; @@ -271,6 +287,7 @@ class Props extends Equatable { language: store.state.settingsStore.language ?? 'English', fontName: store.state.settingsStore.fontName ?? 'Rubik', fontSize: store.state.settingsStore.fontSize ?? 'Default', + avatarShape: store.state.settingsStore.avatarShape ?? 'Circle', roomTypeBadgesEnabled: store.state.settingsStore.roomTypeBadgesEnabled ?? true, onToggleRoomTypeBadges: () => store.dispatch( @@ -297,5 +314,8 @@ class Props extends Equatable { onIncrementTheme: () => store.dispatch( incrementTheme(), ), + onIncrementAvatarShape: () => store.dispatch( + incrementAvatarShape(), + ), ); } diff --git a/lib/views/home/settings/widgets/profile-preview.dart b/lib/views/home/settings/widgets/profile-preview.dart index 0ca4beb4b..b26ce31b8 100644 --- a/lib/views/home/settings/widgets/profile-preview.dart +++ b/lib/views/home/settings/widgets/profile-preview.dart @@ -12,7 +12,7 @@ import 'package:syphon/global/dimensions.dart'; import 'package:syphon/store/index.dart'; import 'package:syphon/store/user/model.dart'; import 'package:syphon/store/user/selectors.dart'; -import 'package:syphon/views/widgets/avatars/avatar-circle.dart'; +import 'package:syphon/views/widgets/avatars/avatar.dart'; class ProfilePreview extends StatelessWidget { ProfilePreview({Key key}) : super(key: key); @@ -28,7 +28,7 @@ class ProfilePreview extends StatelessWidget { width: Dimensions.avatarSize, height: Dimensions.avatarSize, margin: EdgeInsets.only(right: 16), - child: AvatarCircle( + child: Avatar( uri: props.avatarUri, alt: props.user.displayName ?? props.user.userId, size: Dimensions.avatarSize, diff --git a/lib/views/search/search-homeservers.dart b/lib/views/search/search-homeservers.dart index 0adbd32f6..e1c329798 100644 --- a/lib/views/search/search-homeservers.dart +++ b/lib/views/search/search-homeservers.dart @@ -14,7 +14,7 @@ import 'package:redux/redux.dart'; import 'package:syphon/global/colours.dart'; import 'package:syphon/global/string-keys.dart'; import 'package:syphon/views/widgets/appbars/appbar-search.dart'; -import 'package:syphon/views/widgets/avatars/avatar-circle.dart'; +import 'package:syphon/views/widgets/avatars/avatar.dart'; import 'package:touchable_opacity/touchable_opacity.dart'; // Project imports: @@ -109,7 +109,7 @@ class SearchHomeserversState extends State { hasIcon: true, tapHeaderToExpand: false, header: ListTile( - leading: AvatarCircle( + leading: Avatar( size: Dimensions.avatarSizeMin, url: homeserver['favicon'], alt: homeserver['hostname'], @@ -222,7 +222,7 @@ class SearchHomeserversState extends State { Navigator.pop(context); }, child: ListTile( - leading: AvatarCircle( + leading: Avatar( alt: props.searchText ?? '', size: Dimensions.avatarSizeMin, background: props.searchText.length > 0 diff --git a/lib/views/widgets/appbars/appbar-chat.dart b/lib/views/widgets/appbars/appbar-chat.dart index 792523390..f3825d8fe 100644 --- a/lib/views/widgets/appbars/appbar-chat.dart +++ b/lib/views/widgets/appbars/appbar-chat.dart @@ -10,7 +10,7 @@ import 'package:syphon/store/rooms/room/model.dart'; import 'package:syphon/store/rooms/room/selectors.dart'; import 'package:syphon/views/home/chat/details-chat.dart'; import 'package:syphon/views/home/chat/index.dart'; -import 'package:syphon/views/widgets/avatars/avatar-circle.dart'; +import 'package:syphon/views/widgets/avatars/avatar.dart'; import 'package:syphon/views/widgets/containers/menu-rounded.dart'; class AppBarChat extends StatefulWidget implements PreferredSizeWidget { @@ -134,7 +134,7 @@ class AppBarChatState extends State { children: [ Hero( tag: "ChatAvatar", - child: AvatarCircle( + child: Avatar( uri: widget.room.avatarUri, size: Dimensions.avatarSizeMin, alt: formatRoomInitials(room: widget.room), diff --git a/lib/views/widgets/avatars/avatar-app-bar.dart b/lib/views/widgets/avatars/avatar-app-bar.dart index d72bd0c6a..c825570b9 100644 --- a/lib/views/widgets/avatars/avatar-app-bar.dart +++ b/lib/views/widgets/avatars/avatar-app-bar.dart @@ -6,7 +6,7 @@ import 'package:flutter/material.dart'; import 'package:syphon/global/dimensions.dart'; import 'package:syphon/global/themes.dart'; import 'package:syphon/store/user/model.dart'; -import 'package:syphon/views/widgets/avatars/avatar-circle.dart'; +import 'package:syphon/views/widgets/avatars/avatar.dart'; class AvatarAppBar extends StatelessWidget { AvatarAppBar({ @@ -36,7 +36,7 @@ class AvatarAppBar extends StatelessWidget { children: [ IconButton( padding: EdgeInsets.all(4), - icon: AvatarCircle( + icon: Avatar( uri: user.avatarUri, alt: user.displayName ?? user.userId, background: Colors.grey, diff --git a/lib/views/widgets/avatars/avatar-circle.dart b/lib/views/widgets/avatars/avatar-circle.dart deleted file mode 100644 index a6c6fdc67..000000000 --- a/lib/views/widgets/avatars/avatar-circle.dart +++ /dev/null @@ -1,124 +0,0 @@ -// Flutter imports: -import 'package:flutter/foundation.dart'; -import 'package:flutter/material.dart'; -import 'package:flutter_svg/svg.dart'; -import 'package:syphon/global/assets.dart'; - -// Project imports: -import 'package:syphon/global/dimensions.dart'; -import 'package:syphon/global/strings.dart'; -import 'package:syphon/store/user/selectors.dart'; -import 'package:syphon/views/widgets/image-matrix.dart'; - -class AvatarCircle extends StatelessWidget { - AvatarCircle({ - Key key, - this.uri, - this.url, - this.alt, - this.size = 40, - this.force = false, - this.margin, - this.padding, - this.background, - this.selected = false, - }) : super(key: key); - - final bool force; - final bool selected; - final String uri; - final String url; - final String alt; - final double size; - final Color background; - final EdgeInsets margin; - final EdgeInsets padding; - - @override - Widget build(BuildContext context) { - Color backgroundColor = - uri != null || url != null ? Colors.transparent : Colors.grey; - - dynamic avatarWidget = Text( - formatInitials(alt), - style: TextStyle( - color: Colors.white, - fontSize: Dimensions.avatarFontSize(size: size), - fontWeight: FontWeight.w500, - letterSpacing: 0.9, - ), - ); - - if (url != null) { - avatarWidget = ClipRRect( - borderRadius: BorderRadius.circular(size), - child: Image( - image: NetworkImage(url), - width: size, - height: size, - fit: BoxFit.fill, - ), - ); - } - - if (uri != null) { - avatarWidget = ClipRRect( - borderRadius: BorderRadius.circular(size), - child: MatrixImage( - mxcUri: uri, - width: size, - height: size, - fit: BoxFit.fill, - fallbackColor: Colors.transparent, - ), - ); - } - - return Container( - width: size, - height: size, - margin: margin, - padding: padding, - color: Colors.transparent, - child: Stack( - children: [ - CircleAvatar( - radius: size / 2, - child: avatarWidget, - backgroundColor: uri == null && url == null && !force - ? background ?? backgroundColor - : Colors.transparent, - ), - Visibility( - visible: selected, - child: Positioned( - right: 0, - bottom: 0, - child: ClipRRect( - child: Container( - decoration: BoxDecoration( - color: Theme.of(context).accentColor, - border: Border.all( - color: Colors.white, - width: 1, - ), - borderRadius: - BorderRadius.circular(Dimensions.badgeAvatarSize), - ), - width: Dimensions.badgeAvatarSize, - height: Dimensions.badgeAvatarSize, - margin: EdgeInsets.only(left: 4), - child: Icon( - Icons.check, - size: Dimensions.iconSizeMini, - color: Colors.white, - ), - ), - ), - ), - ), - ], - ), - ); - } -} diff --git a/lib/views/widgets/avatars/avatar.dart b/lib/views/widgets/avatars/avatar.dart new file mode 100644 index 000000000..33d6755a8 --- /dev/null +++ b/lib/views/widgets/avatars/avatar.dart @@ -0,0 +1,156 @@ +// Flutter imports: +import 'package:equatable/equatable.dart'; +import 'package:flutter/foundation.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_redux/flutter_redux.dart'; +import 'package:redux/redux.dart'; + +// Project imports: +import 'package:syphon/global/dimensions.dart'; +import 'package:syphon/store/index.dart'; +import 'package:syphon/store/user/selectors.dart'; +import 'package:syphon/views/widgets/image-matrix.dart'; + +class Avatar extends StatelessWidget { + Avatar({ + Key key, + this.uri, + this.url, + this.alt, + this.size = Dimensions.avatarSizeMin, + this.force = false, + this.margin, + this.padding, + this.background, + this.selected = false, + }) : super(key: key); + + final bool force; + final bool selected; + final String uri; + final String url; + final String alt; + final double size; + final Color background; + final EdgeInsets margin; + final EdgeInsets padding; + + @override + Widget build(BuildContext context) => StoreConnector( + distinct: true, + converter: (Store store) => _Props.mapStateToProps(store), + builder: (context, props) { + Color backgroundColor = + uri != null || url != null ? Colors.transparent : Colors.grey; + + var borderRadius = BorderRadius.circular(size); + + if (props.avatarShape == 'Square') { + borderRadius = BorderRadius.circular(size / 3); + } + + dynamic avatarWidget = ClipRRect( + borderRadius: borderRadius, + child: Text( + formatInitials(alt), + style: TextStyle( + color: Colors.white, + fontSize: Dimensions.avatarFontSize(size: size), + fontWeight: FontWeight.w500, + letterSpacing: 0.9, + ), + ), + ); + + if (url != null) { + avatarWidget = ClipRRect( + borderRadius: borderRadius, + child: Image( + image: NetworkImage(url), + width: size, + height: size, + fit: BoxFit.fill, + ), + ); + } + + if (uri != null) { + avatarWidget = ClipRRect( + borderRadius: borderRadius, + child: MatrixImage( + mxcUri: uri, + width: size, + height: size, + fit: BoxFit.fill, + fallbackColor: Colors.transparent, + ), + ); + } + + return Container( + width: size, + height: size, + margin: margin, + padding: padding, + color: Colors.transparent, + child: Stack( + children: [ + Container( + width: size, + height: size, + child: Center(child: avatarWidget), + decoration: BoxDecoration( + borderRadius: borderRadius, + color: uri == null && url == null && !force + ? background ?? backgroundColor + : Colors.transparent), + ), + Visibility( + visible: selected, + child: Positioned( + right: 0, + bottom: 0, + child: ClipRRect( + child: Container( + decoration: BoxDecoration( + color: Theme.of(context).accentColor, + border: Border.all( + color: Colors.white, + width: 1, + ), + borderRadius: + BorderRadius.circular(Dimensions.badgeAvatarSize), + ), + width: Dimensions.badgeAvatarSize, + height: Dimensions.badgeAvatarSize, + margin: EdgeInsets.only(left: 4), + child: Icon( + Icons.check, + size: Dimensions.iconSizeMini, + color: Colors.white, + ), + ), + ), + ), + ), + ], + ), + ); + }, + ); +} + +class _Props extends Equatable { + final String avatarShape; + + _Props({ + @required this.avatarShape, + }); + + @override + List get props => [avatarShape]; + + static _Props mapStateToProps(Store store) => _Props( + avatarShape: store.state.settingsStore.avatarShape, + ); +} diff --git a/lib/views/widgets/lists/list-user-bubbles.dart b/lib/views/widgets/lists/list-user-bubbles.dart index 63bc1dbe4..e191f58d9 100644 --- a/lib/views/widgets/lists/list-user-bubbles.dart +++ b/lib/views/widgets/lists/list-user-bubbles.dart @@ -9,7 +9,7 @@ import 'package:syphon/store/user/model.dart'; import 'package:syphon/store/user/selectors.dart'; import 'package:syphon/views/home/chat/details-all-users.dart'; import 'package:syphon/views/home/groups/invite-users.dart'; -import 'package:syphon/views/widgets/avatars/avatar-circle.dart'; +import 'package:syphon/views/widgets/avatars/avatar.dart'; import 'package:syphon/views/widgets/modals/modal-user-details.dart'; /** @@ -73,7 +73,7 @@ class ListUserBubbles extends StatelessWidget { left: index == 0 ? 12 : 4, right: index == users.length ? 12 : 4, ), - child: AvatarCircle( + child: Avatar( uri: user.avatarUri, alt: user.displayName ?? user.userId, size: Dimensions.avatarSize, diff --git a/lib/views/widgets/messages/message-typing.dart b/lib/views/widgets/messages/message-typing.dart index 8fc0ee698..2550f6892 100644 --- a/lib/views/widgets/messages/message-typing.dart +++ b/lib/views/widgets/messages/message-typing.dart @@ -7,7 +7,7 @@ import 'package:syphon/global/colours.dart'; // Project imports: import 'package:syphon/store/user/model.dart'; import 'package:syphon/global/dimensions.dart'; -import 'package:syphon/views/widgets/avatars/avatar-circle.dart'; +import 'package:syphon/views/widgets/avatars/avatar.dart'; class MessageTypingWidget extends StatefulWidget { final bool typing; @@ -123,7 +123,7 @@ class MessageTypingState extends State margin: const EdgeInsets.only(right: 8), child: userTyping.userId == null ? null - : AvatarCircle( + : Avatar( uri: userTyping.avatarUri, alt: userTyping.displayName ?? userTyping.userId, diff --git a/lib/views/widgets/messages/message.dart b/lib/views/widgets/messages/message.dart index 678870c7d..a6e7ba0a1 100644 --- a/lib/views/widgets/messages/message.dart +++ b/lib/views/widgets/messages/message.dart @@ -10,7 +10,7 @@ import 'package:syphon/global/formatters.dart'; import 'package:syphon/global/strings.dart'; import 'package:syphon/global/themes.dart'; import 'package:syphon/store/rooms/events/model.dart'; -import 'package:syphon/views/widgets/avatars/avatar-circle.dart'; +import 'package:syphon/views/widgets/avatars/avatar.dart'; class MessageWidget extends StatelessWidget { MessageWidget({ @@ -196,7 +196,7 @@ class MessageWidget extends StatelessWidget { }, child: Container( margin: const EdgeInsets.only(right: 8), - child: AvatarCircle( + child: Avatar( margin: EdgeInsets.zero, padding: EdgeInsets.zero, uri: avatarUri, diff --git a/lib/views/widgets/modals/modal-user-details.dart b/lib/views/widgets/modals/modal-user-details.dart index c2fa9e793..946ccfb90 100644 --- a/lib/views/widgets/modals/modal-user-details.dart +++ b/lib/views/widgets/modals/modal-user-details.dart @@ -22,7 +22,7 @@ import 'package:syphon/store/user/selectors.dart'; import 'package:syphon/views/home/chat/index.dart'; import 'package:syphon/views/home/profile/details-user.dart'; import 'package:syphon/views/home/search/search-rooms.dart'; -import 'package:syphon/views/widgets/avatars/avatar-circle.dart'; +import 'package:syphon/views/widgets/avatars/avatar.dart'; import 'package:syphon/views/widgets/dialogs/dialog-start-chat.dart'; class ModalUserDetails extends StatelessWidget { @@ -125,7 +125,7 @@ class ModalUserDetails extends StatelessWidget { children: [ Container( padding: EdgeInsets.only(bottom: 16), - child: AvatarCircle( + child: Avatar( uri: props.user.avatarUri, alt: props.user.displayName ?? props.user.userId, size: Dimensions.avatarSizeDetails, diff --git a/pubspec.yaml b/pubspec.yaml index 52e79a4ef..169ecccd2 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -7,7 +7,7 @@ description: a privacy focused matrix client # $ flutter pub get # $ flutter pub global run devtools # $ flutter pub run build_runner build -# $ flutter pub run build_runner watch +# $ flutter pub run build_runner watch --delete-conflicting-outputs # $ flutter pub run build_runner build --delete-conflicting-outputs # troubleshooting @@ -43,7 +43,7 @@ description: a privacy focused matrix client # The following defines the version and build number for your application. # A version number is three numbers separated by dots, like 1.2.43 # followed by an optional build number separated by a +. -version: 0.1.3+104 +version: 0.1.4+140 environment: sdk: ">=2.9.0-13.0 <3.0.0" # <- modified to solve build_runner From 713eeb32028e34c922fec45e123cd1588e7b9e72 Mon Sep 17 00:00:00 2001 From: ereio Date: Thu, 15 Oct 2020 22:14:18 -0400 Subject: [PATCH 11/45] lazy_load_members enabled for the initial full sync --- lib/global/libs/matrix/index.dart | 2 + lib/global/libs/matrix/rooms.dart | 83 +++++++++++++++- lib/main.dart | 3 +- lib/store/alerts/actions.dart | 2 +- lib/store/auth/actions.dart | 6 +- lib/store/crypto/actions.dart | 29 ++---- lib/store/rooms/actions.dart | 131 ++++++++++++++----------- lib/store/rooms/room/model.dart | 8 +- lib/store/sync/actions.dart | 21 ++-- lib/store/sync/background/service.dart | 8 +- 10 files changed, 188 insertions(+), 105 deletions(-) diff --git a/lib/global/libs/matrix/index.dart b/lib/global/libs/matrix/index.dart index 8436e2e7f..beb9ec2f8 100644 --- a/lib/global/libs/matrix/index.dart +++ b/lib/global/libs/matrix/index.dart @@ -35,6 +35,8 @@ abstract class MatrixApi { static final joinRoom = Rooms.joinRoom; static final leaveRoom = Rooms.leaveRoom; static final forgetRoom = Rooms.forgetRoom; + static final fetchFilter = Rooms.fetchFilter; + static final createFilter = Rooms.createFilter; // Events static final sendEvent = Events.sendEvent; diff --git a/lib/global/libs/matrix/rooms.dart b/lib/global/libs/matrix/rooms.dart index 57e09db2c..d2515d73d 100644 --- a/lib/global/libs/matrix/rooms.dart +++ b/lib/global/libs/matrix/rooms.dart @@ -24,6 +24,7 @@ abstract class Rooms { bool fullState = false, String setPresence, int timeout = 10000, + String filter, }) async { String url = '$protocol$homeserver/_matrix/client/r0/sync'; @@ -32,6 +33,10 @@ abstract class Rooms { url += since != null ? '&since=$since' : ''; url += setPresence != null ? '&set_presence=$setPresence' : ''; url += timeout != null ? '&timeout=$timeout' : ''; + url += filter != null ? '&filter=$filter' : ''; + url += since == null && filter == null + ? '&filter={"room":{"state": {"lazy_load_members":true}, "timeline": {"lazy_load_members":true}}}' + : ''; Map headers = { 'Authorization': 'Bearer $accessToken', @@ -57,6 +62,7 @@ abstract class Rooms { String since = params['since']; bool fullState = params['fullState']; int timeout = params['timeout']; + String filter = params['filter']; return await sync( protocol: protocol, @@ -65,6 +71,7 @@ abstract class Rooms { since: since, fullState: fullState, timeout: timeout, + filter: filter, ); } @@ -219,9 +226,7 @@ abstract class Rooms { final response = await http.post( url, headers: headers, - body: json.encode( - body, - ), + body: json.encode(body), ); return await json.decode( @@ -337,4 +342,76 @@ abstract class Rooms { reponse.body, ); } + + /** + * Create Room Filter (Lazy Loading) - POST + * + * https://matrix.org/docs/spec/client_server/latest#post-matrix-client-r0-user-userid-filter + * + * Create a filter to use when fetching room state, messages, or /sync'ing + * + * TODO: failing, giving a too many requests error (?) won't return from matrix + */ + static Future createFilter({ + String protocol = 'https://', + String homeserver = 'matrix.org', + String accessToken, + String userId, + bool lazyLoading = false, + Map filters, + }) async { + String url = '$protocol$homeserver/_matrix/client/r0/user/$userId/filter'; + + Map headers = { + 'Authorization': 'Bearer $accessToken', + }; + + Map body = filters; + + if (lazyLoading) { + body = { + "room": { + "state": {"lazy_load_members": true}, + } + }; + } + + final response = await http.post( + url, + headers: headers, + body: json.encode(body), + ); + + return await json.decode(response.body); + } + + /** + * Create Room Filter (Lazy Loading) - POST + * + * https://matrix.org/docs/spec/client_server/latest#post-matrix-client-r0-user-userid-filter + * + * Create a filter to use when fetching room state, messages, or /sync'ing + */ + static Future fetchFilter({ + String protocol = 'https://', + String homeserver = 'matrix.org', + String accessToken, + String roomAlias, + String filterId, + String userId, + }) async { + String url = + '$protocol$homeserver/_matrix/client/r0/user/$userId/filter/$filterId'; + + Map headers = { + 'Authorization': 'Bearer $accessToken', + }; + + final reponse = await http.post( + url, + headers: headers, + ); + + return await json.decode(reponse.body); + } } diff --git a/lib/main.dart b/lib/main.dart index a9fc2e2e9..0c280a43b 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -20,7 +20,6 @@ import 'package:syphon/global/themes.dart'; import 'package:syphon/store/alerts/actions.dart'; import 'package:syphon/store/auth/actions.dart'; import 'package:syphon/store/index.dart'; -import 'package:syphon/store/settings/actions.dart'; import 'package:syphon/store/settings/state.dart'; import 'package:syphon/store/sync/actions.dart'; import 'package:syphon/store/sync/background/service.dart'; @@ -39,7 +38,7 @@ void main() async { WidgetsFlutterBinding.ensureInitialized(); await DotEnv().load(kReleaseMode ? '.env.release' : '.env.debug'); - // + // disable debugPrint when running in release mode if (kReleaseMode) { debugPrint = (String message, {int wrapWidth}) {}; } diff --git a/lib/store/alerts/actions.dart b/lib/store/alerts/actions.dart index afb993a1b..5da9ba2ee 100644 --- a/lib/store/alerts/actions.dart +++ b/lib/store/alerts/actions.dart @@ -96,7 +96,7 @@ ThunkAction addAlert({ error, }) { return (Store store) async { - debugPrint('[$origin|error] $error'); + debugPrint('[$origin] $error'); final alertsObserver = store.state.alertsStore.alertsObserver; final alert = new Alert(type: type, message: message); diff --git a/lib/store/auth/actions.dart b/lib/store/auth/actions.dart index d77c1a5b8..c5cdc29f2 100644 --- a/lib/store/auth/actions.dart +++ b/lib/store/auth/actions.dart @@ -169,7 +169,6 @@ ThunkAction startAuthObserver() { final user = store.state.authStore.user; final Function onAuthStateChanged = (User user) async { - debugPrint('[startAuthObserver] $user'); if (user != null && user.accessToken != null) { await store.dispatch(fetchUserCurrentProfile()); @@ -348,11 +347,12 @@ ThunkAction logoutUser() { if (store.state.authStore.user.homeserver == null) { throw Exception('Unavailable user data'); } - + final temp = '${store.state.authStore.user.accessToken}'; + store.state.authStore.authObserver.add(null); final data = await MatrixApi.logoutUser( protocol: protocol, homeserver: store.state.authStore.user.homeserver, - accessToken: store.state.authStore.user.accessToken, + accessToken: temp, ); if (data['errcode'] != null) { diff --git a/lib/store/crypto/actions.dart b/lib/store/crypto/actions.dart index 76302090b..581729a86 100644 --- a/lib/store/crypto/actions.dart +++ b/lib/store/crypto/actions.dart @@ -416,24 +416,22 @@ ThunkAction signOneTimeKeys(Map oneTimeKeys) { ThunkAction updateOneTimeKeyCounts(Map oneTimeKeysCounts) { return (Store store) async { + // Confirm user has generated an olm account final accessToken = store.state.authStore.user.accessToken; - - // Confirm user is authenticated still if (accessToken == null) { return; } - // Confirm user is authenticated still - store.dispatch(SetOneTimeKeysCounts( - oneTimeKeysCounts: oneTimeKeysCounts, - )); - // Confirm user has generated an olm account final olmAccount = store.state.cryptoStore.olmAccount; if (olmAccount == null) { return; } + store.dispatch(SetOneTimeKeysCounts( + oneTimeKeysCounts: oneTimeKeysCounts, + )); + final int maxKeyCount = olmAccount.max_number_of_one_time_keys(); final int signedCurveCount = oneTimeKeysCounts[Algorithms.signedcurve25519] ?? 0; @@ -464,9 +462,6 @@ ThunkAction updateOneTimeKeys({type = Algorithms.signedcurve25519}) { 'one_time_keys': newOneTimeKeys, }; - // debugPrint('[updateOneTimeKeys] json:'); - // printJson(payload); - final data = await MatrixApi.uploadKeys( protocol: protocol, homeserver: store.state.authStore.user.homeserver, @@ -474,18 +469,11 @@ ThunkAction updateOneTimeKeys({type = Algorithms.signedcurve25519}) { data: payload, ); + // Recoverable error from matrix if (data['errcode'] != null) { - debugPrint( - '[uploadIdentityKeys] error: ${data}', - ); - throw data['error']; } - debugPrint( - '[uploadIdentityKeys] one time key count: ${data['one_time_key_counts']}', - ); - // save account state after successful upload olmAccount.mark_keys_as_published(); await store.dispatch(saveOlmAccount()); @@ -493,10 +481,7 @@ ThunkAction updateOneTimeKeys({type = Algorithms.signedcurve25519}) { // register new key counts store.dispatch(updateOneTimeKeyCounts(data['one_time_key_counts'])); } catch (error) { - store.dispatch(addAlert( - error: error, - origin: 'updateOneTimeKeys', - )); + store.dispatch(addAlert(error: error, origin: 'updateOneTimeKeys')); } }; } diff --git a/lib/store/rooms/actions.dart b/lib/store/rooms/actions.dart index 7e642b3d2..b6eeed042 100644 --- a/lib/store/rooms/actions.dart +++ b/lib/store/rooms/actions.dart @@ -274,8 +274,8 @@ ThunkAction fetchRooms() { * Fetches both state and message of direct rooms * found from account_data of current authed user * - * @riot-bot:matrix.org: [!ajJxpUAIJjYYTzvsHo:matrix.org], - * alekseyparfyonov@gmail.com: [!muTrhMUMwdJSrYlqic:matrix.org] + * Have to account for multiple direct rooms with one user + * @riot-bot:matrix.org: [!ajJxpUAIJjYYTzvsHo:matrix.org, !124:matrix.org] */ ThunkAction fetchDirectRooms() { return (Store store) async { @@ -292,67 +292,80 @@ ThunkAction fetchDirectRooms() { } // Mark specified rooms as direct chats - final directRooms = data as Map; - - // TODO: refactor more functional - // Fetch room state and messages by roomId - directRooms.forEach((userId, roomIds) { - roomIds.forEach((roomId) async { - try { - final stateEvents = await MatrixApi.fetchStateEvents( - protocol: protocol, - homeserver: store.state.authStore.user.homeserver, - accessToken: store.state.authStore.user.accessToken, - roomId: roomId, - ); + final directRoomMap = data as Map; + final List directRoomList = []; - if (!(stateEvents is List) && stateEvents['errcode'] != null) { - throw stateEvents['error']; - } - - final messageEvents = await compute( - MatrixApi.fetchMessageEventsMapped, - { - "protocol": protocol, - "homeserver": store.state.authStore.user.homeserver, - "accessToken": store.state.authStore.user.accessToken, - "roomId": roomId, - "limit": 20, - }, - ); + // Parse room map to allow for pulling by roomId (keeping userId) + directRoomMap.forEach((userId, roomIds) { + roomIds.forEach((roomId) { + directRoomList.add({userId: roomId}); + }); + }); - if (messageEvents['errcode'] != null) { - throw messageEvents['error']; - } - - // Format response like /sync request - // Hacked together to provide isDirect data - await store.dispatch(syncRooms({ - '$roomId': { - 'state': { - 'events': stateEvents, - }, - 'timeline': { - 'events': messageEvents['chunk'], - 'prev_batch': messageEvents['from'], - }, - 'account_data': { - 'events': [ - { - "type": 'm.direct', - 'content': { - '$userId', - } - } - ], - } - }, - })); - } catch (error) { - debugPrint('[fetchDirectRooms] $error'); + // Fetch room state and messages by userId/roomId + final directRoomData = directRoomList.map((directRoom) async { + print('[fetchDirectRooms]'); + print(directRoom); + + final userId = directRoom.keys.elementAt(0); + final roomId = directRoom.values.elementAt(0); + try { + final stateEvents = await MatrixApi.fetchStateEvents( + protocol: protocol, + homeserver: store.state.authStore.user.homeserver, + accessToken: store.state.authStore.user.accessToken, + roomId: roomId, + ); + + if (!(stateEvents is List) && stateEvents['errcode'] != null) { + throw stateEvents['error']; } - }); + + final messageEvents = await compute( + MatrixApi.fetchMessageEventsMapped, + { + "protocol": protocol, + "homeserver": store.state.authStore.user.homeserver, + "accessToken": store.state.authStore.user.accessToken, + "roomId": roomId, + "limit": 20, + }, + ); + + if (messageEvents['errcode'] != null) { + throw messageEvents['error']; + } + + // Format response like /sync request + // Hacked together to provide isDirect data + await store.dispatch(syncRooms({ + '$roomId': { + 'state': { + 'events': stateEvents, + }, + 'timeline': { + 'events': messageEvents['chunk'], + 'prev_batch': messageEvents['from'], + }, + 'account_data': { + 'events': [ + { + "type": 'm.direct', + 'content': { + '$userId', + } + } + ], + } + }, + })); + } catch (error) { + debugPrint('[fetchDirectRooms] $error'); + } }); + + // Wait for all room data to be pulled + await Future.wait(directRoomData); } catch (error) { debugPrint('[fetchDirectRooms] $error'); } finally { diff --git a/lib/store/rooms/room/model.dart b/lib/store/rooms/room/model.dart index b93b403dc..08011cdde 100644 --- a/lib/store/rooms/room/model.dart +++ b/lib/store/rooms/room/model.dart @@ -274,7 +274,9 @@ class Room { lastHash = json['timeline']['last_hash']; prevHash = json['timeline']['prev_batch']; - debugPrint('[LIMITED from /sync] ${limited}'); + if (limited != null) { + debugPrint('[fromSync] LIMITED IS NOT NULL ${limited}'); + } final List timelineEventsRaw = json['timeline']['events']; @@ -399,7 +401,6 @@ class Room { case 'm.room.join_rules': joinRule = event.content['join_rule']; - debugPrint('[Room.fromStateEvents] $joinRule'); break; case 'm.room.canonical_alias': @@ -474,8 +475,7 @@ class Room { if (namePriority != 0 && users.isNotEmpty && (direct || badRoomName)) { namePriority = 0; - // Filter out number of non current users to show preview of total and who - + // Filter out number of non current users to show preview of total and wh final nonCurrentUsers = users.values.where( (user) => user.displayName != currentUser.displayName && diff --git a/lib/store/sync/actions.dart b/lib/store/sync/actions.dart index 9f7f7d603..dd2ad6e59 100644 --- a/lib/store/sync/actions.dart +++ b/lib/store/sync/actions.dart @@ -153,6 +153,8 @@ ThunkAction stopSyncObserver() { * initial syncing terribly. It's incredibly cumbersome to load thousands of events * for multiple rooms all at once in order to show the user just some room names * and timestamps. Lazy loading isn't always supported, so it's not a solid solution + * + * TODO: potentially re-enable the fetch rooms function if lazy_load fails */ ThunkAction initialSync() { return (Store store) async { @@ -174,7 +176,6 @@ ThunkAction initialSync() { */ ThunkAction setBackgrounded(bool backgrounded) { return (Store store) async { - print('set backgrounded ${backgrounded}'); store.dispatch(SetBackgrounded(backgrounded: backgrounded)); }; } @@ -189,19 +190,23 @@ ThunkAction setBackgrounded(bool backgrounded) { ThunkAction fetchSync({String since, bool forceFull = false}) { return (Store store) async { try { + debugPrint('[fetchSync] starting sync'); store.dispatch(SetSyncing(syncing: true)); final isFullSync = since == null; + var filterId; + if (isFullSync) { - debugPrint('[fetchSync] fetching full sync'); + debugPrint('[fetchSync] running full sync'); } - // Matrix Sync to homeserver + // Normal matrix /sync call to the homeserver (Threaded) final data = await compute(MatrixApi.syncBackground, { 'protocol': protocol, 'homeserver': store.state.authStore.user.homeserver, 'accessToken': store.state.authStore.user.accessToken, 'fullState': forceFull || store.state.roomStore.rooms == null, 'since': forceFull ? null : since ?? store.state.roomStore.lastSince, + 'filter': filterId, 'timeout': 10000 }); @@ -209,9 +214,9 @@ ThunkAction fetchSync({String since, bool forceFull = false}) { if (data['errcode'] == MatrixErrors.unknown_token) { store.dispatch(SetUnauthed(unauthed: true)); // TODO: signin prompt needed here - } else { - throw data['error']; } + + throw data['error']; } final nextBatch = data['next_batch']; @@ -244,7 +249,7 @@ ThunkAction fetchSync({String since, bool forceFull = false}) { lastSince: nextBatch, )); - if (!kReleaseMode && isFullSync) { + if (isFullSync) { debugPrint('[fetchSync] full sync completed'); } } catch (error) { @@ -253,7 +258,9 @@ ThunkAction fetchSync({String since, bool forceFull = false}) { try { // try to understand the error message message = (error.message as String); - } catch (error) {} + } catch (error) { + debugPrint(error); + } if (message.contains('SocketException')) { debugPrint('[fetchSync] IOException $error'); diff --git a/lib/store/sync/background/service.dart b/lib/store/sync/background/service.dart index 598318aff..d7597e657 100644 --- a/lib/store/sync/background/service.dart +++ b/lib/store/sync/background/service.dart @@ -122,10 +122,10 @@ FutureOr syncLoop({ } /** - * Check last since and see if any new messages arrived in the payload - * No need to update the hive store for now, just do not save the lastSince - * to the store and the next foreground fetchSync will update the state - */ + * Check last since and see if any new messages arrived in the payload + * No need to update the hive store for now, just do not save the lastSince + * to the store and the next foreground fetchSync will update the state + */ final data = await MatrixApi.sync( protocol: protocol, homeserver: homeserver, From 38bad58a54cfb841606e1d51985548a2cae8421b Mon Sep 17 00:00:00 2001 From: ereio Date: Sun, 18 Oct 2020 13:25:16 -0400 Subject: [PATCH 12/45] json encoding working without hive serialization --- lib/store/auth/actions.dart | 4 +- lib/store/auth/credential/model.dart | 32 ++++--- lib/store/auth/state.dart | 61 +++++++------ lib/store/index.dart | 52 +++++++---- lib/store/search/actions.dart | 2 +- lib/store/user/model.dart | 10 ++- lib/store/user/state.dart | 30 ++++--- pubspec.lock | 10 +-- pubspec.yaml | 125 +++++++++++++-------------- readme.md | 62 ++++++------- 10 files changed, 215 insertions(+), 173 deletions(-) diff --git a/lib/store/auth/actions.dart b/lib/store/auth/actions.dart index c5cdc29f2..e3ea95c9d 100644 --- a/lib/store/auth/actions.dart +++ b/lib/store/auth/actions.dart @@ -320,7 +320,7 @@ ThunkAction loginUser() { } await store.dispatch(SetUser( - user: User.fromJson(data), + user: User.fromMatrix(data), )); store.state.authStore.authObserver.add( @@ -591,7 +591,7 @@ ThunkAction createUser({enableErrors = false}) { return completedAll; } - store.dispatch(SetUser(user: User.fromJson(data))); + store.dispatch(SetUser(user: User.fromMatrix(data))); store.state.authStore.authObserver.add( store.state.authStore.user, diff --git a/lib/store/auth/credential/model.dart b/lib/store/auth/credential/model.dart index 46f79eb92..80eeac8fd 100644 --- a/lib/store/auth/credential/model.dart +++ b/lib/store/auth/credential/model.dart @@ -1,9 +1,13 @@ // Package imports: import 'package:equatable/equatable.dart'; +import 'package:json_annotation/json_annotation.dart'; // Project imports: import 'package:syphon/global/libs/matrix/auth.dart'; +part 'model.g.dart'; + +@JsonSerializable() class Credential extends Equatable { final String type; final String value; @@ -25,22 +29,26 @@ class Credential extends Equatable { ['url']; } - Credential copyWith({ - type, - value, - params, - }) { - return Credential( - type: type ?? this.type, - value: value ?? this.value, - params: params ?? this.params, - ); - } - @override List get props => [ type, value, params, ]; + + Credential copyWith({ + type, + value, + params, + }) => + Credential( + type: type ?? this.type, + value: value ?? this.value, + params: params ?? this.params, + ); + + Map toJson() => _$CredentialToJson(this); + + factory Credential.fromJson(Map json) => + _$CredentialFromJson(json); } diff --git a/lib/store/auth/state.dart b/lib/store/auth/state.dart index a83fb31f9..6b2b52b00 100644 --- a/lib/store/auth/state.dart +++ b/lib/store/auth/state.dart @@ -4,6 +4,7 @@ import 'dart:async'; // Package imports: import 'package:equatable/equatable.dart'; import 'package:hive/hive.dart'; +import 'package:json_annotation/json_annotation.dart'; // Project imports: import 'package:syphon/global/libs/hive/type-ids.dart'; @@ -14,8 +15,10 @@ import 'package:syphon/store/user/model.dart'; part 'state.g.dart'; @HiveType(typeId: AuthStoreHiveId) +@JsonSerializable(ignoreUnannotated: true) class AuthStore extends Equatable { @HiveField(0) + @JsonKey(name: 'user') final User user; User get currentUser => user; @@ -25,6 +28,7 @@ class AuthStore extends Equatable { // Interactive Auth Data final String session; + final Credential credential; final List completed; final Map interactiveAuths; @@ -78,6 +82,33 @@ class AuthStore extends Equatable { this.verificationNeeded = false, }); + @override + List get props => [ + user, + authObserver, + username, + password, + passwordConfirm, + passwordCurrent, + agreement, + captcha, + homeserver, + completed, + session, + loginType, + isEmailValid, + isEmailAvailable, + isUsernameValid, + isPasswordValid, + isHomeserverValid, + isUsernameAvailable, + interactiveAuths, + credential, + loading, + creating, + verificationNeeded, + ]; + AuthStore copyWith({ user, email, @@ -133,30 +164,8 @@ class AuthStore extends Equatable { ); } - @override - List get props => [ - user, - authObserver, - username, - password, - passwordConfirm, - passwordCurrent, - agreement, - captcha, - homeserver, - completed, - session, - loginType, - isEmailValid, - isEmailAvailable, - isUsernameValid, - isPasswordValid, - isHomeserverValid, - isUsernameAvailable, - interactiveAuths, - credential, - loading, - creating, - verificationNeeded, - ]; + Map toJson() => _$AuthStoreToJson(this); + + factory AuthStore.fromJson(Map json) => + _$AuthStoreFromJson(json); } diff --git a/lib/store/index.dart b/lib/store/index.dart index 5702ec197..4847d7bba 100644 --- a/lib/store/index.dart +++ b/lib/store/index.dart @@ -1,4 +1,5 @@ // Dart imports: +import 'dart:convert'; import 'dart:typed_data'; // Flutter imports: @@ -130,7 +131,7 @@ Future initStore() async { initialState = await persistor.load(); // debugPrint('[Redux Persist] persist loaded successfully'); } catch (error) { - debugPrint('[Redux Persist] error $error'); + debugPrint('[Redux Persist] $error'); } final Store store = Store( @@ -151,10 +152,15 @@ class HiveSerializer implements StateSerializer { @override Uint8List encode(AppState state) { // Fail whole conversion if user fails - Cache.state.put( - state.authStore.runtimeType.toString(), - state.authStore, - ); + + try { + Cache.state.put( + state.authStore.runtimeType.toString(), + json.encode(state.authStore), + ); + } catch (error) { + debugPrint('[Hive Serializer Encode] $error'); + } try { Cache.state.put( @@ -163,7 +169,7 @@ class HiveSerializer implements StateSerializer { ); // debugPrint('[Hive Storage] caching syncStore'); } catch (error) { - debugPrint('[Hive Storage] $error'); + debugPrint('[Hive Serializer Encode] $error'); } try { @@ -173,7 +179,7 @@ class HiveSerializer implements StateSerializer { ); // debugPrint('[Hive Storage] caching roomStore'); } catch (error) { - debugPrint('[Hive Storage] $error'); + debugPrint('[Hive Serializer Encode] $error'); } try { @@ -183,7 +189,7 @@ class HiveSerializer implements StateSerializer { ); // debugPrint('[Hive Storage] caching mediaStore'); } catch (error) { - debugPrint('[Hive Storage] $error'); + debugPrint('[Hive Serializer Encode] $error'); } try { @@ -193,7 +199,7 @@ class HiveSerializer implements StateSerializer { ); // debugPrint('[Hive Storage] caching settingsStore'); } catch (error) { - debugPrint('[Hive Storage] $error'); + debugPrint('[Hive Serializer Encode] $error'); } try { @@ -203,7 +209,7 @@ class HiveSerializer implements StateSerializer { ); // debugPrint('[Hive Storage] caching cryptoStore'); } catch (error) { - debugPrint('[Hive Storage] $error'); + debugPrint('[Hive Serializer Encode] $error'); } // Disregard redux persist storage saving @@ -219,10 +225,18 @@ class HiveSerializer implements StateSerializer { SettingsStore settingsStoreConverted = SettingsStore(); UserStore userStore = UserStore(); - authStoreConverted = Cache.state.get( - authStoreConverted.runtimeType.toString(), - defaultValue: AuthStore(), - ); + try { + authStoreConverted = AuthStore.fromJson( + json.decode( + Cache.state.get( + authStoreConverted.runtimeType.toString(), + defaultValue: AuthStore(), + ), + ), + ); + } catch (error) { + debugPrint('[Hive Serializer Decode] $error'); + } try { syncStoreConverted = Cache.state.get( @@ -230,7 +244,7 @@ class HiveSerializer implements StateSerializer { defaultValue: SyncStore(), ); } catch (error) { - debugPrint('[Hive Storage] $error'); + debugPrint('[Hive Serializer Decode] $error'); } try { @@ -239,7 +253,7 @@ class HiveSerializer implements StateSerializer { defaultValue: CryptoStore(), ); } catch (error) { - debugPrint('[Hive Storage] $error'); + debugPrint('[Hive Serializer Decode] $error'); } try { @@ -248,7 +262,7 @@ class HiveSerializer implements StateSerializer { defaultValue: RoomStore(), ); } catch (error) { - debugPrint('[Hive Storage] $error'); + debugPrint('[Hive Serializer Decode] $error'); } try { @@ -257,7 +271,7 @@ class HiveSerializer implements StateSerializer { defaultValue: MediaStore(), ); } catch (error) { - debugPrint('[Hive Storage] $error'); + debugPrint('[Hive Serializer Decode] $error'); } try { @@ -266,7 +280,7 @@ class HiveSerializer implements StateSerializer { defaultValue: SettingsStore(), ); } catch (error) { - debugPrint('[Hive Storage] $error'); + debugPrint('[Hive Serializer Decode] $error'); } return AppState( diff --git a/lib/store/search/actions.dart b/lib/store/search/actions.dart index a6e3d1994..d7049d3be 100644 --- a/lib/store/search/actions.dart +++ b/lib/store/search/actions.dart @@ -239,7 +239,7 @@ ThunkAction searchUsers({String searchText}) { final List rawUsers = data['results']; final List searchResults = - rawUsers.map((room) => User.fromJson(room)).toList(); + rawUsers.map((room) => User.fromMatrix(room)).toList(); store.dispatch(SetSearchResults( since: data['next_batch'], diff --git a/lib/store/user/model.dart b/lib/store/user/model.dart index 4922d509f..0502b4cbd 100644 --- a/lib/store/user/model.dart +++ b/lib/store/user/model.dart @@ -2,6 +2,7 @@ import 'package:equatable/equatable.dart'; import 'package:flutter/material.dart'; import 'package:hive/hive.dart'; +import 'package:json_annotation/json_annotation.dart'; // Project imports: import 'package:syphon/global/libs/hive/type-ids.dart'; @@ -9,6 +10,7 @@ import 'package:syphon/global/libs/hive/type-ids.dart'; part 'model.g.dart'; @HiveType(typeId: UserHiveId) +@JsonSerializable() class User extends Equatable { @HiveField(0) final String userId; @@ -69,7 +71,11 @@ class User extends Equatable { avatarUri, ]; - factory User.fromJson(dynamic json) { + Map toJson() => _$UserToJson(this); + + factory User.fromJson(Map json) => _$UserFromJson(json); + + factory User.fromMatrix(dynamic json) { try { var idserver; var homeserver; @@ -97,7 +103,7 @@ class User extends Equatable { avatarUri: json['avatar_url'] as String, ); } catch (error) { - debugPrint('[User.fromJson] $error'); + debugPrint('[User.fromMatrix] $error'); return User(); } } diff --git a/lib/store/user/state.dart b/lib/store/user/state.dart index 5410e00b5..f3fbdb6bb 100644 --- a/lib/store/user/state.dart +++ b/lib/store/user/state.dart @@ -1,6 +1,7 @@ // Package imports: import 'package:equatable/equatable.dart'; import 'package:hive/hive.dart'; +import 'package:json_annotation/json_annotation.dart'; // Project imports: import 'package:syphon/global/libs/hive/type-ids.dart'; @@ -9,6 +10,7 @@ import 'package:syphon/store/user/model.dart'; part 'state.g.dart'; @HiveType(typeId: UserStoreHiveId) +@JsonSerializable(nullable: true, includeIfNull: true) class UserStore extends Equatable { final bool loading; @@ -24,22 +26,26 @@ class UserStore extends Equatable { this.loading = false, }); - UserStore copyWith({ - bool loading, - List invites, - Map users, - }) { - return UserStore( - users: users ?? this.users, - invites: invites ?? this.invites, - loading: loading ?? this.loading, - ); - } - @override List get props => [ users, invites, loading, ]; + + Map toJson() => _$UserStoreToJson(this); + + factory UserStore.fromJson(Map json) => + _$UserStoreFromJson(json); + + UserStore copyWith({ + bool loading, + List invites, + Map users, + }) => + UserStore( + users: users ?? this.users, + invites: invites ?? this.invites, + loading: loading ?? this.loading, + ); } diff --git a/pubspec.lock b/pubspec.lock index 8ca209927..1bff4b16f 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -128,7 +128,7 @@ packages: source: hosted version: "1.1.3" checked_yaml: - dependency: transitive + dependency: "direct main" description: name: checked_yaml url: "https://pub.dartlang.org" @@ -493,19 +493,19 @@ packages: source: hosted version: "0.6.2" json_annotation: - dependency: transitive + dependency: "direct main" description: name: json_annotation url: "https://pub.dartlang.org" source: hosted - version: "3.0.1" + version: "3.1.0" json_serializable: - dependency: "direct main" + dependency: "direct dev" description: name: json_serializable url: "https://pub.dartlang.org" source: hosted - version: "3.3.0" + version: "3.5.0" logging: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 169ecccd2..2cf2141cc 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -5,7 +5,7 @@ description: a privacy focused matrix client # $ flutter create --org org.tether.tether # $ flutter run --no-fast-start # $ flutter pub get -# $ flutter pub global run devtools +# $ flutter pub global run devtools # $ flutter pub run build_runner build # $ flutter pub run build_runner watch --delete-conflicting-outputs # $ flutter pub run build_runner build --delete-conflicting-outputs @@ -42,21 +42,21 @@ description: a privacy focused matrix client # The following defines the version and build number for your application. # A version number is three numbers separated by dots, like 1.2.43 -# followed by an optional build number separated by a +. +# followed by an optional build number separated by a +. version: 0.1.4+140 environment: - sdk: ">=2.9.0-13.0 <3.0.0" # <- modified to solve build_runner + sdk: ">=2.9.0-13.0 <3.0.0" # <- modified to solve build_runner dependencies: flutter: sdk: flutter - olm: + olm: git: url: https://gitlab.com/famedly/libraries/dart-olm ref: f66975bd1b5cb1865eba5efe6e3a392aa5e396a5 - + # State Management expandable: 3.0.1 equatable: 1.2.4 @@ -79,9 +79,10 @@ dependencies: # Cache hive: 1.4.4 - hive_flutter: 0.3.1 + hive_flutter: 0.3.1 flutter_secure_storage: 3.3.3 - json_serializable: 3.3.0 + json_annotation: ^3.1.0 + checked_yaml: 1.0.2 # Services http: ^0.12.0+2 @@ -102,22 +103,23 @@ dependencies: flutter_svg: 0.18.1 file_picker: 1.13.3 image_picker: ^0.6.7+7 - flutter_swiper : 1.1.6 - webview_flutter: ^0.3.21 + flutter_swiper: 1.1.6 + webview_flutter: ^0.3.21 touchable_opacity: 1.0.2 fab_circular_menu: ^1.0.0 flutter_recaptcha_v2: 0.1.0 smooth_page_indicator: 0.1.1 flutter_local_notifications: 1.4.0 - flutter_material_color_picker: ^1.0.5 + flutter_material_color_picker: ^1.0.5 palette_generator: 0.2.3 dev_dependencies: + json_serializable: ^3.5.0 flutter_launcher_icons: "^0.7.5" build_runner: ^1.10.1 hive_generator: 0.8.1 # TODO: build fixes - remove later - build_resolvers: 1.3.10 # <- modified to solve build_runner + build_resolvers: 1.3.10 # <- modified to solve build_runner # TODO: build fixes - remove later dependency_overrides: @@ -134,7 +136,6 @@ flutter_icons: # The following section is specific to Flutter. flutter: - # The following line ensures that the Material Icons font is # included with your application, so that you can use the icons in # the material Icons class. @@ -143,71 +144,67 @@ flutter: fonts: - family: Poppins fonts: - - asset: assets/fonts/Poppins-Italic.ttf + - asset: assets/fonts/Poppins-Italic.ttf - asset: assets/fonts/Poppins-Regular.ttf - - asset: assets/fonts/Poppins-Medium.ttf - - asset: assets/fonts/Poppins-Light.ttf - - asset: assets/fonts/Poppins-Thin.ttf + - asset: assets/fonts/Poppins-Medium.ttf + - asset: assets/fonts/Poppins-Light.ttf + - asset: assets/fonts/Poppins-Thin.ttf - family: Rubik - fonts: + fonts: - asset: assets/fonts/Rubik-Regular.ttf - - asset: assets/fonts/Rubik-Medium.ttf - - asset: assets/fonts/Rubik-Light.ttf + - asset: assets/fonts/Rubik-Medium.ttf + - asset: assets/fonts/Rubik-Light.ttf - family: Inter fonts: - - asset: assets/fonts/Inter-Italic.ttf + - asset: assets/fonts/Inter-Italic.ttf - asset: assets/fonts/Inter-Regular.ttf - - asset: assets/fonts/Inter-Medium.ttf - - asset: assets/fonts/Inter-Light.ttf + - asset: assets/fonts/Inter-Medium.ttf + - asset: assets/fonts/Inter-Light.ttf # To add assets to your application, add an assets section, like this: # On release, change .env.debug to .env - assets: - - ./.env.debug - - ./.env.release - - assets/translations/en.json - - assets/translations/ru.json - - assets/graphics/undraw_sync_files.svg - - assets/graphics/undraw_accept_terms.svg - - assets/graphics/undraw_mobile_user.svg - - assets/graphics/undraw_messaging_fun.svg - - assets/graphics/undraw_connection.svg - - assets/graphics/undraw_group_chat.svg - - assets/graphics/undraw_people.svg - - assets/graphics/undraw_site_content.svg - - assets/graphics/undraw_escaping.svg - - assets/graphics/undraw_message_sent.svg - - assets/graphics/undraw_new_message.svg - - - assets/graphics/undraw_in_thought.svg - - assets/graphics/undraw_profile_data.svg - - assets/graphics/undraw_mention.svg - - assets/graphics/undraw_not_found.svg - - assets/icons/current/app_icon_cyan.svg - - assets/icons/current/app_icon_cyan.png - - assets/icons/current/app_icon_white.png - - assets/icons/global/being-check.svg - - assets/icons/global/being-person-add.svg - - assets/icons/global/being-group-add.svg - - assets/icons/global/being-public-add.svg - - assets/icons/global/being-search-public.svg - - assets/icons/global/being-search-public-condensed.svg - - assets/icons/global/being-message-syphon.svg - - assets/icons/global/being-send.svg - - assets/icons/global/being-send-solid.svg - - assets/icons/global/being-send-lock.svg - - assets/icons/global/being-send-lock-solid.svg - - assets/icons/global/being-send-unlock.svg - - assets/icons/global/being-chevrons-right.svg - - assets/icons/global/feather-message-circle.svg - - + assets: + - ./.env.debug + - ./.env.release + - assets/translations/en.json + - assets/translations/ru.json + - assets/graphics/undraw_sync_files.svg + - assets/graphics/undraw_accept_terms.svg + - assets/graphics/undraw_mobile_user.svg + - assets/graphics/undraw_messaging_fun.svg + - assets/graphics/undraw_connection.svg + - assets/graphics/undraw_group_chat.svg + - assets/graphics/undraw_people.svg + - assets/graphics/undraw_site_content.svg + - assets/graphics/undraw_escaping.svg + - assets/graphics/undraw_message_sent.svg + - assets/graphics/undraw_new_message.svg + + - assets/graphics/undraw_in_thought.svg + - assets/graphics/undraw_profile_data.svg + - assets/graphics/undraw_mention.svg + - assets/graphics/undraw_not_found.svg + - assets/icons/current/app_icon_cyan.svg + - assets/icons/current/app_icon_cyan.png + - assets/icons/current/app_icon_white.png + - assets/icons/global/being-check.svg + - assets/icons/global/being-person-add.svg + - assets/icons/global/being-group-add.svg + - assets/icons/global/being-public-add.svg + - assets/icons/global/being-search-public.svg + - assets/icons/global/being-search-public-condensed.svg + - assets/icons/global/being-message-syphon.svg + - assets/icons/global/being-send.svg + - assets/icons/global/being-send-solid.svg + - assets/icons/global/being-send-lock.svg + - assets/icons/global/being-send-lock-solid.svg + - assets/icons/global/being-send-unlock.svg + - assets/icons/global/being-chevrons-right.svg + - assets/icons/global/feather-message-circle.svg # An image asset can refer to one or more resolution-specific "variants", see # https://flutter.dev/assets-and-images/#resolution-aware. - # For details regarding adding assets from package dependencies, see # https://flutter.dev/assets-and-images/#from-packages - # To add custom fonts to your application, add a fonts section here, # in this "flutter" section. Each entry in this list should have a # "family" key with the font family name, and a "fonts" key with a diff --git a/readme.md b/readme.md index f16e7b573..2e2b041c0 100644 --- a/readme.md +++ b/readme.md @@ -44,18 +44,18 @@ a privacy centric matrix client - now in open alpha*


    -## why +## 🤔 Why **Syphon aims to be built on the foundations of privacy, branding, and user experience** -
    in an effort to pull others away from proprietary chat clients to the matrix protocol. +
    in an effort to pull others away from proprietary chat platforms to the matrix protocol. -We need to decentralize the web, but also provide a means of freedom within that system. Matrix has the potential to be a standardized peer-to-peer chat protocol, [and in a way already is,](https://matrix.org/blog/2020/06/02/introducing-p-2-p-matrix) that will allow people to communicate and transfer their data at will. Email has been standardized this way for a long time, as you can always email someone regardless of their provider. Most popular proprietary chat clients do not adhere to a publically available protocol and have too much control over users data. +Matrix has the potential to be a standardized peer-to-peer chat protocol, [and in a way already is,](https://matrix.org/blog/2020/06/02/introducing-p-2-p-matrix) that allows people to communicate and control their conversation data. Email has been standardized in this way for a long time. For example, someone using Outlook can still email someone using Gmail. Most popular proprietary chat platforms do not adhere to a federated or decentralized protocol, and as a result have too much control over users data. -Additionally, if the goal for Matrix is adoption to make instant messaging communication go the way of email, a network effect is required for this paradigm shift. Syphon makes the bet that the best way to attract new users is through strong branding and user experience. I hope that contributing and maintaining Syphon will help kick start this process and help those in need. +If the goal for Matrix is adoption, a network effect is required for this paradigm shift. Syphon makes the bet that the best way to attract new users is through strong branding and user experience. I hope that contributing and maintaining Syphon will help kick start this process and help those in need. Syphon will always be a not for profit, community driven application. -## features +## ✨ Features - no analytics. period. - no proprietary third party services - iOS will have APNS support, but will be made clear to the user @@ -65,14 +65,14 @@ Syphon will always be a not for profit, community driven application. - all indicators of presence are opt-in only (typing indicators, read receipts, etc) - customize themes and colors throughout the app -## goals +## 🚀 Goals - [ ] desktop clients meet parity with mobile - [ ] screen lock and pin protected cache features - [ ] P2P messaging through a locally run server on the client - [ ] allow transfering user data from one homeserver to another, or from local to remote servers - [ ] cli client using ncurses and the same redux store contained here (common) -## getting started +## 🏗️ Building You may notice Syphon does not look very dart-y (for example, no \_private variable declarations, or using redux instead of provider) in an effort to reduce the learning curve from other languages or platforms. The faster one can get people contributing, the easier it will be for others to maintain or oversee a tool that does not exploit the user. ### environment @@ -93,7 +93,7 @@ You may notice Syphon does not look very dart-y (for example, no \_private varia - ```flutter pub get``` - ```flutter pub run build_runner build``` -## building +### configuration - ios and android should follow normal flutter building instructions - linux: @@ -123,36 +123,38 @@ dependency_overrides: 6. Confirm build works with running ```$SYPHON_ROOT/build/linux/release/bundle/syphon``` +## 📐 Architecture + ### store (current) - state (redux) -- state cache (redux_persist + hive) -- cold storage (hive) +- state cache (redux_persist + [hive](https://github.com/hivedb/hive)) +- cold storage ([hive](https://github.com/hivedb/hive)) ### store (future) - state (redux) -- state cache (redux_persist + json_serializable + sembast) -- cold storage (sqlcipher) +- state cache (redux_persist + json_serializable + [sembast](https://pub.dev/packages/sembast)) +- cold storage ([sqlcipher](https://pub.dev/packages/sqflite_sqlcipher)) -### store references -- [hive](https://github.com/hivedb/hive) -- [sembast](https://pub.dev/packages/sembast) -- [sqlcipher](https://pub.dev/packages/sqflite_sqlcipher) +### assets +- Looking for branding or design files? They can all be found [here](https://github.com/syphon-org/syphon/tree/main/assets), in the top level assets folder. + +### integrations +- Notifications + - utitlizes [android_alarm_manager](https://pub.dev/packages?q=background_alarm_manager) on Android to run the matrix /sync requests in a background thread and display notifications with [flutter_local_notifications](https://pub.dev/packages/flutter_local_notifications) + - no third party notification provider will ever be used outside Apples APNS for iOS only +- Equatable + - This library allows comparisons of objects within Flutter to tell if they have changed. +- JsonSerializable + - Unfortunately, Json is not integrated directly in Dart/Flutter for your own objects. Code generation is required, for now, and will convert Syphon's custom objects to a 'Map' of respective json fields +- Freezed (future) + - Because every object in Syphon is immutable, freezed will help create objects doing the same thing all the 'copyWith' helper functions do today, with the improvement of allowing 'null' values to overwrite non-null values +- Fastline Directory + - fastline is not used as tool, but is there to provide a schema of metadata to FDroid + +### references - [Redux vs. Bloc](https://github.com/ereio/state) - [Redux Tutorial](https://www.netguru.com/codestories/-implement-redux-with-flutter-app) - [Redux Examples](https://github.com/brianegan/flutter_architecture_samples/blob/master/firestore_redux/) - -### local notifications (android only) -- utitlizes [android_alarm_manager](https://pub.dev/packages?q=background_alarm_manager) on Android to run the matrix /sync requests in a background thread and display notifications with [flutter_local_notifications](https://pub.dev/packages/flutter_local_notifications) -- no third party notification provider will ever be used outside Apples APNS for iOS only - -### quirks -- fastlane is not used, it's there for f-droid - -### assets -- [paid icon](https://thenounproject.com/search/?q=polygon&i=2596282) -- [iOS icons](https://github.com/smallmuou/ios-icon-generator) - -### generic references - [End-To-End Encryption implimentation guide from Matrix.org](https://matrix.org/docs/guides/end-to-end-encryption-implementation-guide) - [iOS file management flutter](https://stackoverflow.com/questions/55220612/how-to-save-a-text-file-in-external-storage-in-ios-using-flutter) - [scrolling With Text Inputs](https://github.com/flutter/flutter/issues/13339) @@ -169,7 +171,7 @@ decoration: BoxDecoration( - understanding why olm chose the world 'pickle' for serialization, [its from python](https://gitlab.matrix.org/matrix-org/olm/-/tree/master/python) -## contributing +## 📝 contributing - email contact@syphon.org if you'd like to get involved. there's a lot to do. - donations are welcome, but not required. Syphon will always be a not for profit, community driven application not owned or sold by a corporation. From 77b3f6daf81bb5b269caa32755eb47c67e42baf3 Mon Sep 17 00:00:00 2001 From: ereio Date: Sun, 18 Oct 2020 14:30:19 -0400 Subject: [PATCH 13/45] combined cache loop --- lib/store/index.dart | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/lib/store/index.dart b/lib/store/index.dart index 4847d7bba..9e010fc99 100644 --- a/lib/store/index.dart +++ b/lib/store/index.dart @@ -153,6 +153,27 @@ class HiveSerializer implements StateSerializer { Uint8List encode(AppState state) { // Fail whole conversion if user fails + // final stores = [ + // state.authStore, + // state.syncStore, + // state.roomStore, + // state.mediaStore, + // state.settingsStore, + // state.cryptoStore, + // ]; + + // Cache each store asyncronously + // Future.wait(stores.map((store) async { + // try { + // Cache.state.put( + // store.runtimeType.toString(), + // json.encode(store), + // ); + // } catch (error) { + // debugPrint('[Hive Serializer Encode] $error'); + // } + // })); + try { Cache.state.put( state.authStore.runtimeType.toString(), From 2b60d3b5f6298d160f90b8b8a8788591f96fe268 Mon Sep 17 00:00:00 2001 From: ereio Date: Sun, 18 Oct 2020 15:39:09 -0400 Subject: [PATCH 14/45] adding SyncStore json serialization and messing with steel_crypt --- lib/store/auth/actions.dart | 12 +++++------- lib/store/sync/state.dart | 12 +++++++++++- pubspec.lock | 23 ++++++++++++++++++++++- pubspec.yaml | 3 ++- 4 files changed, 40 insertions(+), 10 deletions(-) diff --git a/lib/store/auth/actions.dart b/lib/store/auth/actions.dart index e3ea95c9d..148ba9d37 100644 --- a/lib/store/auth/actions.dart +++ b/lib/store/auth/actions.dart @@ -9,10 +9,12 @@ import 'package:flutter/material.dart'; // Package imports: import 'package:crypt/crypt.dart'; +import 'package:crypto/crypto.dart'; import 'package:device_info/device_info.dart'; import 'package:flutter_dotenv/flutter_dotenv.dart'; import 'package:redux/redux.dart'; import 'package:redux_thunk/redux_thunk.dart'; +import 'package:steel_crypt/steel_crypt.dart'; // Project imports: import 'package:syphon/global/libs/matrix/auth.dart'; @@ -246,20 +248,16 @@ ThunkAction generateDeviceId({String salt}) { } // hash it - final deviceIdHashed = Crypt.sha256( - deviceId, - rounds: 1000, - salt: salt, - ); + final cryptHash = Crypt.sha256(deviceId, rounds: 1000, salt: salt).hash; // make it easier to read - final deviceIdFriendly = deviceIdHashed.hash + final deviceIdHash = cryptHash .toUpperCase() .replaceAll(RegExp(r'[^\w]'), '') .substring(0, 10); device = Device( - deviceId: deviceIdFriendly, + deviceId: deviceIdHash, deviceIdPrivate: deviceId, displayName: Values.appDisplayName, ); diff --git a/lib/store/sync/state.dart b/lib/store/sync/state.dart index 2740216fc..2892f9e55 100644 --- a/lib/store/sync/state.dart +++ b/lib/store/sync/state.dart @@ -4,6 +4,7 @@ import 'dart:async'; // Package imports: import 'package:equatable/equatable.dart'; import 'package:hive/hive.dart'; +import 'package:json_annotation/json_annotation.dart'; // Project imports: import 'package:syphon/global/libs/hive/type-ids.dart'; @@ -11,31 +12,40 @@ import 'package:syphon/global/libs/hive/type-ids.dart'; part 'state.g.dart'; @HiveType(typeId: SyncStoreHiveId) +@JsonSerializable(ignoreUnannotated: true) class SyncStore extends Equatable { @HiveField(0) + @JsonKey(name: 'synced') final bool synced; @HiveField(3) + @JsonKey(name: 'lastUpdate') final int lastUpdate; // Last timestamp for actual new info @HiveField(4) + @JsonKey(name: 'lastSince') final String lastSince; // Since we last checked for new info static const default_interval = 1; @HiveField(5) + @JsonKey(name: 'interval') final int interval = default_interval; + @JsonKey(name: 'offline') + final bool offline; + final int backoff; final bool syncing; - final bool offline; final bool unauthed; final Timer syncObserver; @HiveField(6) + @JsonKey(name: 'lastAttempt') final int lastAttempt; // last attempt to sync @HiveField(7) + @JsonKey(name: 'backgrounded') final bool backgrounded; const SyncStore({ diff --git a/pubspec.lock b/pubspec.lock index 1bff4b16f..c824471e0 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -36,6 +36,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.6.0" + asn1lib: + dependency: transitive + description: + name: asn1lib + url: "https://pub.dartlang.org" + source: hosted + version: "0.6.5" async: dependency: transitive description: @@ -177,7 +184,7 @@ packages: source: hosted version: "3.0.1" crypto: - dependency: transitive + dependency: "direct main" description: name: crypto url: "https://pub.dartlang.org" @@ -634,6 +641,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.0.3" + pc_steelcrypt: + dependency: transitive + description: + name: pc_steelcrypt + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.1" pedantic: dependency: transitive description: @@ -842,6 +856,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.9.5" + steel_crypt: + dependency: "direct main" + description: + name: steel_crypt + url: "https://pub.dartlang.org" + source: hosted + version: "2.2.2+1" stream_channel: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 2cf2141cc..272696d0a 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -74,7 +74,8 @@ dependencies: # Encryption crypt: 3.0.1 - # steel_crypt: 1.7.1 + crypto: ^2.1.5 + steel_crypt: ^2.2.2+1 # cryptography: 1.2.1 # Cache From 266903c154034f7ce88148b7c4826e20fd67ee3b Mon Sep 17 00:00:00 2001 From: ereio Date: Sun, 18 Oct 2020 15:49:30 -0400 Subject: [PATCH 15/45] added commented synchronous json decoder --- lib/store/index.dart | 39 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/lib/store/index.dart b/lib/store/index.dart index 9e010fc99..2bc528147 100644 --- a/lib/store/index.dart +++ b/lib/store/index.dart @@ -156,10 +156,11 @@ class HiveSerializer implements StateSerializer { // final stores = [ // state.authStore, // state.syncStore, + // state.cryptoStore, // state.roomStore, // state.mediaStore, // state.settingsStore, - // state.cryptoStore, + // state.userStore, // ]; // Cache each store asyncronously @@ -246,6 +247,42 @@ class HiveSerializer implements StateSerializer { SettingsStore settingsStoreConverted = SettingsStore(); UserStore userStore = UserStore(); + // final types = [ + // AuthStore, + // SyncStore, + // CryptoStore, + // RoomStore, + // MediaStore, + // SettingsStore, + // UserStore, + // ]; + + // final stores = [ + // authStoreConverted, + // syncStoreConverted, + // cryptoStoreConverted, + // mediaStoreConverted, + // roomStoreConverted, + // settingsStoreConverted, + // userStore, + // ]; + + // // Decode each store cache synchronously + // types.forEach((type) { + // try { + // final index = types.indexOf(type); + // final dynamic store = stores[index]; + // stores[index] = store.fromJson(json.decode( + // Cache.state.get( + // store.runtimeType.toString(), + // defaultValue: store[index](), + // ), + // )); + // } catch (error) { + // debugPrint('[Hive Serializer Decode] $error'); + // } + // }); + try { authStoreConverted = AuthStore.fromJson( json.decode( From 9b8881e0270f1ffa8747a4fd6a0fce05a960b556 Mon Sep 17 00:00:00 2001 From: ereio Date: Sun, 18 Oct 2020 17:07:20 -0400 Subject: [PATCH 16/45] encrypting and decrypting state without flutter dependencies (dart only) --- lib/global/algos.dart | 26 ++++++++++++++ lib/global/libs/hive/index.dart | 46 ++++++++++++++++++++++++ lib/store/index.dart | 63 ++++++++++++++++++++++++++------- 3 files changed, 122 insertions(+), 13 deletions(-) diff --git a/lib/global/algos.dart b/lib/global/algos.dart index 5eb5fa934..3930b0edd 100644 --- a/lib/global/algos.dart +++ b/lib/global/algos.dart @@ -2,6 +2,7 @@ import 'dart:convert'; import 'package:flutter/material.dart'; +import 'package:steel_crypt/steel_crypt.dart'; /** * Clock functions in code @@ -28,3 +29,28 @@ void printJson(Map jsonMap) { String prettyEvent = encoder.convert(jsonMap); debugPrint(prettyEvent, wrapWidth: 2048); } + +// TODO: not sure if needed because the decryption of the cache will always be needed synchonously +Future decryptJsonBackground(Map params) async { + String ivKey = params['ivKey']; + String cryptKey = params['cryptKey']; + String json = params['json']; + + final cryptor = AesCrypt(key: cryptKey, padding: PaddingAES.pkcs7); + + final decryptedJson = cryptor.gcm.decrypt(enc: json, iv: ivKey); + + return jsonDecode(decryptedJson); +} + +Future encryptJsonBackground(Map params) async { + String ivKey = params['ivKey']; + String cryptKey = params['cryptKey']; + String json = params['json']; + + final cryptor = AesCrypt(key: cryptKey, padding: PaddingAES.pkcs7); + + final encryptedJson = cryptor.gcm.encrypt(inp: json, iv: ivKey); + + return encryptedJson; +} diff --git a/lib/global/libs/hive/index.dart b/lib/global/libs/hive/index.dart index a33e6aaad..e7d6d7f22 100644 --- a/lib/global/libs/hive/index.dart +++ b/lib/global/libs/hive/index.dart @@ -1,4 +1,5 @@ // Dart imports: +import 'dart:convert'; import 'dart:io'; // Flutter imports: @@ -9,6 +10,7 @@ import 'package:convert/convert.dart'; import 'package:flutter_secure_storage/flutter_secure_storage.dart'; import 'package:hive/hive.dart'; import 'package:path_provider/path_provider.dart'; +import 'package:steel_crypt/steel_crypt.dart'; // Project imports: import 'package:syphon/global/themes.dart'; @@ -33,9 +35,13 @@ class Cache { static Box state; static Box stateRooms; static Box stateMedia; + static String ivKey; + static String cryptKey; static LazyBox sync; static const group_id = '${Values.appNameLabel}'; + static const ivKeyLocation = '${Values.appNameLabel}@ivKey'; + static const cryptKeyLocation = '${Values.appNameLabel}@cryptKey'; static const encryptionKeyLocation = '${Values.appNameLabel}@publicKey'; static const syncKey = '${Values.appNameLabel}_sync'; @@ -151,6 +157,46 @@ Future> unlockEncryptionKey() async { return hex.decode(encryptionKey); } +Future unlockCryptKey() async { + // Check if storage has been created before + final storageEngine = FlutterSecureStorage(); + + var cryptKey = await storageEngine.read( + key: Cache.encryptionKeyLocation, + ); + // Create a encryptionKey if a serialized one is not found + if (cryptKey == null) { + cryptKey = CryptKey().genFortuna(); + + await storageEngine.write( + key: Cache.encryptionKeyLocation, + value: cryptKey, + ); + } + + return cryptKey; +} + +Future unlockIVKey() async { + // Check if storage has been created before + final storageEngine = FlutterSecureStorage(); + + var ivKey = await storageEngine.read(key: Cache.ivKeyLocation); + + // Create a encryptionKey if a serialized one is not found + if (ivKey == null) { + ivKey = CryptKey().genDart(); + + debugPrint(ivKey); + await storageEngine.write( + key: Cache.ivKeyLocation, + value: ivKey, + ); + } + + return ivKey; +} + /** * openHiveState UNSAFE * diff --git a/lib/store/index.dart b/lib/store/index.dart index 2bc528147..26f078153 100644 --- a/lib/store/index.dart +++ b/lib/store/index.dart @@ -11,6 +11,7 @@ import 'package:equatable/equatable.dart'; import 'package:redux/redux.dart'; import 'package:redux_persist/redux_persist.dart'; import 'package:redux_thunk/redux_thunk.dart'; +import 'package:steel_crypt/steel_crypt.dart'; // Project imports: import 'package:syphon/global/libs/hive/index.dart'; @@ -35,12 +36,6 @@ import './search/reducer.dart'; import './settings/reducer.dart'; import './settings/state.dart'; -// Temporary State Store - -// Persisted State Stores - -// Reducers for Stores - class AppState extends Equatable { final bool loading; final AuthStore authStore; @@ -107,6 +102,7 @@ AppState appReducer(AppState state, action) { * the Hive Serializer has been impliemented */ Future initStore() async { + // Configure redux persist instance final persistor = Persistor( storage: MemoryStorage(), serializer: HiveSerializer(), @@ -124,6 +120,11 @@ Future initStore() async { }, ); + // Configure cache encryption/decryption instance + // TODO: offload init to thread and cache keys in RAM + Cache.ivKey = await unlockIVKey(); + Cache.cryptKey = await unlockCryptKey(); + // Finally load persisted store var initialState; @@ -176,10 +177,29 @@ class HiveSerializer implements StateSerializer { // })); try { + final plaintextJson = json.encode(state.authStore); + Cache.state.put( state.authStore.runtimeType.toString(), - json.encode(state.authStore), + plaintextJson, ); + + debugPrint( + '[Hive Serializer Encode] keys - ${Cache.cryptKey} ${Cache.ivKey}', + ); + debugPrint( + '[Hive Serializer Encode] plaintext - ${plaintextJson}', + ); + + final aes = AesCrypt(key: Cache.cryptKey, padding: PaddingAES.pkcs7); + + final encryptedJson = aes.gcm.encrypt( + inp: plaintextJson, + iv: Cache.ivKey, + ); + + debugPrint('[Hive Serializer Encode] encrypted - $encryptedJson'); + Cache.state.put('testing', encryptedJson); } catch (error) { debugPrint('[Hive Serializer Encode] $error'); } @@ -267,17 +287,19 @@ class HiveSerializer implements StateSerializer { // userStore, // ]; - // // Decode each store cache synchronously + // // // Decode each store cache synchronously // types.forEach((type) { // try { // final index = types.indexOf(type); // final dynamic store = stores[index]; - // stores[index] = store.fromJson(json.decode( - // Cache.state.get( - // store.runtimeType.toString(), - // defaultValue: store[index](), + // stores[index] = store.fromJson( + // json.decode( + // Cache.state.get( + // store.runtimeType.toString(), + // defaultValue: store[index](), + // ), // ), - // )); + // ); // } catch (error) { // debugPrint('[Hive Serializer Decode] $error'); // } @@ -292,6 +314,21 @@ class HiveSerializer implements StateSerializer { ), ), ); + + final encryptedJson = Cache.state.get( + 'testing', + defaultValue: AuthStore(), + ); + + final aes = AesCrypt(key: Cache.cryptKey, padding: PaddingAES.pkcs7); + + debugPrint('[Hive Serializer Decode] encrypted - $encryptedJson'); + + final decrpytedJsonString = aes.gcm.decrypt( + enc: encryptedJson, + iv: Cache.ivKey, + ); + debugPrint('[Hive Serializer Decode] plaintext - $decrpytedJsonString'); } catch (error) { debugPrint('[Hive Serializer Decode] $error'); } From 088fd1af39d53cb2ccecb805d07a969f83f28e38 Mon Sep 17 00:00:00 2001 From: ereio Date: Sun, 18 Oct 2020 18:30:20 -0400 Subject: [PATCH 17/45] encrypting auth state off the main thread (manually) --- lib/global/algos.dart | 8 + lib/global/libs/hive/index.dart | 24 ++- lib/main.dart | 2 + lib/store/auth/state.dart | 3 +- lib/store/index.dart | 259 ++++++++++++++++---------------- 5 files changed, 161 insertions(+), 135 deletions(-) diff --git a/lib/global/algos.dart b/lib/global/algos.dart index 3930b0edd..6fe377145 100644 --- a/lib/global/algos.dart +++ b/lib/global/algos.dart @@ -48,9 +48,17 @@ Future encryptJsonBackground(Map params) async { String cryptKey = params['cryptKey']; String json = params['json']; + Stopwatch stopwatchNew = new Stopwatch()..start(); + + print('[encryptJsonBackground] ${ivKey} ${cryptKey} ${json}'); + final cryptor = AesCrypt(key: cryptKey, padding: PaddingAES.pkcs7); final encryptedJson = cryptor.gcm.encrypt(inp: json, iv: ivKey); + final endTime = stopwatchNew.elapsed; + print( + '[encryptJsonBackground] encryption took $endTime', + ); return encryptedJson; } diff --git a/lib/global/libs/hive/index.dart b/lib/global/libs/hive/index.dart index e7d6d7f22..930109faa 100644 --- a/lib/global/libs/hive/index.dart +++ b/lib/global/libs/hive/index.dart @@ -33,6 +33,7 @@ import 'package:syphon/store/user/model.dart'; // Global cache class Cache { static Box state; + static Box stateUnsafe; static Box stateRooms; static Box stateMedia; static String ivKey; @@ -215,10 +216,17 @@ Future openHiveStateRoomsUnsafe() async { * For testing purposes only - should be encrypting hive */ Future openHiveStateUnsafe() async { - return await Hive.openBox( - Cache.stateKeyRoomsUNSAFE, - compactionStrategy: (entries, deletedEntries) => deletedEntries > 2, - ); + try { + return await Hive.openBox( + Cache.stateKeyRoomsUNSAFE, + compactionStrategy: (entries, deletedEntries) => deletedEntries > 2, + ); + } catch (error) { + debugPrint('[openHiveStateUnsafe] $error'); + return await Hive.openBox( + Cache.stateKeyUNSAFE, + ); + } } /** @@ -266,12 +274,12 @@ Future openHiveState() async { return await Hive.openBox( Cache.stateKey, - crashRecovery: false, + crashRecovery: true, encryptionCipher: HiveAesCipher(encryptionKey), compactionStrategy: (entries, deletedEntries) => deletedEntries > 1, ); } catch (error) { - debugPrint('[openHiveState] open failure: $error'); + debugPrint('[openHiveState] $error'); return await Hive.openBox( Cache.stateKeyUNSAFE, ); @@ -294,7 +302,7 @@ Future openHiveStateRooms() async { compactionStrategy: (entries, deletedEntries) => deletedEntries > 1, ); } catch (error) { - debugPrint('[openHiveState] open failure: $error'); + debugPrint('[openHiveStateRooms] open failure: $error'); return await Hive.openBox( Cache.stateKeyUNSAFE, ); @@ -317,7 +325,7 @@ Future openHiveSync() async { compactionStrategy: (entries, deletedEntries) => deletedEntries > 1, ); } catch (error) { - debugPrint('[openHiveState] failure $error'); + debugPrint('[openHiveSync] failure $error'); return await Hive.openLazyBox( Cache.syncKeyUNSAFE, ); diff --git a/lib/main.dart b/lib/main.dart index 0c280a43b..6def6e795 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -52,11 +52,13 @@ void main() async { Cache.sync = await openHiveSync(); Cache.state = await openHiveState(); Cache.stateRooms = await openHiveStateRooms(); + Cache.stateUnsafe = await openHiveStateUnsafe(); } if (Platform.isLinux || Platform.isWindows || Platform.isLinux) { Cache.state = await openHiveStateUnsafe(); Cache.stateRooms = await openHiveStateRoomsUnsafe(); + Cache.stateUnsafe = await openHiveStateUnsafe(); } if (Platform.isAndroid) { diff --git a/lib/store/auth/state.dart b/lib/store/auth/state.dart index 6b2b52b00..67f90ce27 100644 --- a/lib/store/auth/state.dart +++ b/lib/store/auth/state.dart @@ -10,13 +10,14 @@ import 'package:json_annotation/json_annotation.dart'; import 'package:syphon/global/libs/hive/type-ids.dart'; import 'package:syphon/global/values.dart'; import 'package:syphon/store/auth/credential/model.dart'; +import 'package:syphon/store/index.dart'; import 'package:syphon/store/user/model.dart'; part 'state.g.dart'; @HiveType(typeId: AuthStoreHiveId) @JsonSerializable(ignoreUnannotated: true) -class AuthStore extends Equatable { +class AuthStore extends Equatable implements JsonStore { @HiveField(0) @JsonKey(name: 'user') final User user; diff --git a/lib/store/index.dart b/lib/store/index.dart index 26f078153..e93d579c4 100644 --- a/lib/store/index.dart +++ b/lib/store/index.dart @@ -12,6 +12,7 @@ import 'package:redux/redux.dart'; import 'package:redux_persist/redux_persist.dart'; import 'package:redux_thunk/redux_thunk.dart'; import 'package:steel_crypt/steel_crypt.dart'; +import 'package:syphon/global/algos.dart'; // Project imports: import 'package:syphon/global/libs/hive/index.dart'; @@ -36,6 +37,10 @@ import './search/reducer.dart'; import './settings/reducer.dart'; import './settings/state.dart'; +abstract class JsonStore { + JsonStore.fromJson(Map json); +} + class AppState extends Equatable { final bool loading; final AuthStore authStore; @@ -154,55 +159,58 @@ class HiveSerializer implements StateSerializer { Uint8List encode(AppState state) { // Fail whole conversion if user fails - // final stores = [ - // state.authStore, - // state.syncStore, - // state.cryptoStore, - // state.roomStore, - // state.mediaStore, - // state.settingsStore, - // state.userStore, - // ]; + final stores = [ + state.authStore, + // state.syncStore, + // state.cryptoStore, + // state.roomStore, + // state.mediaStore, + // state.settingsStore, + // state.userStore, + ]; // Cache each store asyncronously - // Future.wait(stores.map((store) async { - // try { - // Cache.state.put( - // store.runtimeType.toString(), - // json.encode(store), - // ); - // } catch (error) { - // debugPrint('[Hive Serializer Encode] $error'); - // } - // })); - - try { - final plaintextJson = json.encode(state.authStore); - - Cache.state.put( - state.authStore.runtimeType.toString(), - plaintextJson, - ); + Future.wait(stores.map((store) async { + try { + // TODO: remove - testing time elapsed + Stopwatch stopwatchNew = new Stopwatch()..start(); + + // Encrypt json off the main thread + final encryptedStore = await compute(encryptJsonBackground, { + 'ivKey': Cache.ivKey, + 'cryptKey': Cache.cryptKey, + 'json': json.encode(store), + }); + + // Cache the encrypted string of data + await Cache.stateUnsafe.put( + store.runtimeType.toString(), + encryptedStore, + ); + + // TODO: remove - testing time elapsed + final endTime = stopwatchNew.elapsed; + print( + '[Hive Serializer Encode] MANUAL ${store.runtimeType.toString()} $endTime', + ); + } catch (error) { + debugPrint('[Hive Serializer Encode] MANUAL $error'); + } + })); - debugPrint( - '[Hive Serializer Encode] keys - ${Cache.cryptKey} ${Cache.ivKey}', - ); - debugPrint( - '[Hive Serializer Encode] plaintext - ${plaintextJson}', - ); + // TODO: working! remove after codeblock above proves positive + // try { + // final plaintextJson = json.encode(state.authStore); - final aes = AesCrypt(key: Cache.cryptKey, padding: PaddingAES.pkcs7); + // Cache.state.put(state.authStore.runtimeType.toString(), plaintextJson); - final encryptedJson = aes.gcm.encrypt( - inp: plaintextJson, - iv: Cache.ivKey, - ); + // final encryptedJson = + // aes.gcm.encrypt(inp: plaintextJson, iv: Cache.ivKey); - debugPrint('[Hive Serializer Encode] encrypted - $encryptedJson'); - Cache.state.put('testing', encryptedJson); - } catch (error) { - debugPrint('[Hive Serializer Encode] $error'); - } + // Cache.state.put('testing', encryptedJson); + // } catch (error) { + // debugPrint('[Hive Serializer Encode] $error'); + // } try { Cache.state.put( @@ -259,84 +267,83 @@ class HiveSerializer implements StateSerializer { } AppState decode(Uint8List data) { + final aes = AesCrypt(key: Cache.cryptKey, padding: PaddingAES.pkcs7); + AuthStore authStoreConverted = AuthStore(); - SyncStore syncStoreConverted = SyncStore(); - CryptoStore cryptoStoreConverted = CryptoStore(); - MediaStore mediaStoreConverted = MediaStore(); - RoomStore roomStoreConverted = RoomStore(); - SettingsStore settingsStoreConverted = SettingsStore(); - UserStore userStore = UserStore(); - - // final types = [ - // AuthStore, - // SyncStore, - // CryptoStore, - // RoomStore, - // MediaStore, - // SettingsStore, - // UserStore, - // ]; - - // final stores = [ - // authStoreConverted, - // syncStoreConverted, - // cryptoStoreConverted, - // mediaStoreConverted, - // roomStoreConverted, - // settingsStoreConverted, - // userStore, - // ]; - - // // // Decode each store cache synchronously - // types.forEach((type) { - // try { - // final index = types.indexOf(type); - // final dynamic store = stores[index]; - // stores[index] = store.fromJson( - // json.decode( - // Cache.state.get( - // store.runtimeType.toString(), - // defaultValue: store[index](), - // ), + SyncStore syncStoreConverted; + CryptoStore cryptoStoreConverted; + MediaStore mediaStoreConverted; + RoomStore roomStoreConverted; + SettingsStore settingsStoreConverted; + UserStore userStore; + + final List stores = [ + authStoreConverted, + // syncStoreConverted, + // cryptoStoreConverted, + // mediaStoreConverted, + // roomStoreConverted, + // settingsStoreConverted, + // userStore, + ]; + + // Decode each store cache synchronously + stores.forEach((store) { + try { + var decodedJson = {}; + + // pull encrypted state from cache + final encryptedJson = Cache.stateUnsafe.get( + store.runtimeType.toString(), + defaultValue: null, + ); + + if (encryptedJson != null) { + // decrypt encrypted state after loaded from RAM + final decryptedJson = aes.gcm.decrypt( + enc: encryptedJson, + iv: Cache.ivKey, + ); + // decode json to a Map + decodedJson = json.decode(decryptedJson); + } + + print( + '[Hive Serializer Decode] MANUAL ${decodedJson}', + ); + // this stinks, but dart doesn't allow reflection for factories/contructors + switch (store.runtimeType.toString()) { + case 'AuthStore': + authStoreConverted = AuthStore.fromJson(decodedJson); + break; + default: + break; + } + + // decode json after decrypted and set to store + } catch (error) { + debugPrint('[Hive Serializer Decode] $error'); + } + }); + + // TODO: working! remove after codeblock above proves positive + // try { + // authStoreConverted = AuthStore.fromJson( + // json.decode( + // Cache.state.get( + // authStoreConverted.runtimeType.toString(), + // defaultValue: AuthStore(), // ), - // ); - // } catch (error) { - // debugPrint('[Hive Serializer Decode] $error'); - // } - // }); - - try { - authStoreConverted = AuthStore.fromJson( - json.decode( - Cache.state.get( - authStoreConverted.runtimeType.toString(), - defaultValue: AuthStore(), - ), - ), - ); - - final encryptedJson = Cache.state.get( - 'testing', - defaultValue: AuthStore(), - ); - - final aes = AesCrypt(key: Cache.cryptKey, padding: PaddingAES.pkcs7); - - debugPrint('[Hive Serializer Decode] encrypted - $encryptedJson'); - - final decrpytedJsonString = aes.gcm.decrypt( - enc: encryptedJson, - iv: Cache.ivKey, - ); - debugPrint('[Hive Serializer Decode] plaintext - $decrpytedJsonString'); - } catch (error) { - debugPrint('[Hive Serializer Decode] $error'); - } + // ), + // ); + // } catch (error) { + // debugPrint('[Hive Serializer Decode] $error'); + // } try { syncStoreConverted = Cache.state.get( syncStoreConverted.runtimeType.toString(), - defaultValue: SyncStore(), + defaultValue: null, ); } catch (error) { debugPrint('[Hive Serializer Decode] $error'); @@ -345,7 +352,7 @@ class HiveSerializer implements StateSerializer { try { cryptoStoreConverted = Cache.state.get( cryptoStoreConverted.runtimeType.toString(), - defaultValue: CryptoStore(), + defaultValue: null, ); } catch (error) { debugPrint('[Hive Serializer Decode] $error'); @@ -354,7 +361,7 @@ class HiveSerializer implements StateSerializer { try { roomStoreConverted = Cache.stateRooms.get( roomStoreConverted.runtimeType.toString(), - defaultValue: RoomStore(), + defaultValue: null, ); } catch (error) { debugPrint('[Hive Serializer Decode] $error'); @@ -363,7 +370,7 @@ class HiveSerializer implements StateSerializer { try { mediaStoreConverted = Cache.state.get( mediaStoreConverted.runtimeType.toString(), - defaultValue: MediaStore(), + defaultValue: null, ); } catch (error) { debugPrint('[Hive Serializer Decode] $error'); @@ -372,7 +379,7 @@ class HiveSerializer implements StateSerializer { try { settingsStoreConverted = Cache.state.get( settingsStoreConverted.runtimeType.toString(), - defaultValue: SettingsStore(), + defaultValue: null, ); } catch (error) { debugPrint('[Hive Serializer Decode] $error'); @@ -380,13 +387,13 @@ class HiveSerializer implements StateSerializer { return AppState( loading: false, - authStore: authStoreConverted, - syncStore: syncStoreConverted, - cryptoStore: cryptoStoreConverted, - roomStore: roomStoreConverted, - userStore: userStore, // not cached - mediaStore: mediaStoreConverted, - settingsStore: settingsStoreConverted, + authStore: authStoreConverted ?? AuthStore(), + syncStore: syncStoreConverted ?? SyncStore(), + cryptoStore: cryptoStoreConverted ?? CryptoStore(), + roomStore: roomStoreConverted ?? RoomStore(), + userStore: userStore ?? UserStore(), // not cached + mediaStore: mediaStoreConverted ?? MediaStore(), + settingsStore: settingsStoreConverted ?? SettingsStore(), ); } } From e116fc5fab0c2c1fd1044200912751e32c863e21 Mon Sep 17 00:00:00 2001 From: ereio Date: Sun, 18 Oct 2020 18:32:43 -0400 Subject: [PATCH 18/45] removing this config change to hive for now --- lib/global/libs/hive/index.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/global/libs/hive/index.dart b/lib/global/libs/hive/index.dart index 930109faa..701e87d9d 100644 --- a/lib/global/libs/hive/index.dart +++ b/lib/global/libs/hive/index.dart @@ -274,7 +274,7 @@ Future openHiveState() async { return await Hive.openBox( Cache.stateKey, - crashRecovery: true, + crashRecovery: false, encryptionCipher: HiveAesCipher(encryptionKey), compactionStrategy: (entries, deletedEntries) => deletedEntries > 1, ); From cc3962d7519dd064f88a7531bf2830308cd8ced7 Mon Sep 17 00:00:00 2001 From: ereio Date: Mon, 19 Oct 2020 21:38:43 -0400 Subject: [PATCH 19/45] caching and encrypting settings and media stores --- lib/global/formatters.dart | 2 +- lib/global/libs/ripper/index.dart | 141 +++++++++++ lib/store/auth/state.dart | 3 +- lib/store/index.dart | 229 ++++++------------ lib/store/media/actions.dart | 4 +- lib/store/media/state.dart | 45 +++- lib/store/settings/actions.dart | 5 +- lib/store/settings/chat-settings/model.dart | 6 + .../settings/devices-settings/model.dart | 25 +- .../settings/notification-settings/model.dart | 23 +- .../notification-settings/pushers/model.dart | 30 ++- .../notification-settings/rules/model.dart | 25 +- lib/store/settings/state.dart | 11 +- lib/store/sync/state.dart | 5 + lib/store/user/state.dart | 1 + 15 files changed, 341 insertions(+), 214 deletions(-) create mode 100644 lib/global/libs/ripper/index.dart diff --git a/lib/global/formatters.dart b/lib/global/formatters.dart index e214a6d94..fa95f51fb 100644 --- a/lib/global/formatters.dart +++ b/lib/global/formatters.dart @@ -11,7 +11,7 @@ String formatUserId(String displayName, {String homeserver = 'matrix.org'}) { } String formatLanguageCode(String language) { - switch (language.toLowerCase()) { + switch ((language ?? 'english').toLowerCase()) { case 'english': return 'en'; case 'russian': diff --git a/lib/global/libs/ripper/index.dart b/lib/global/libs/ripper/index.dart new file mode 100644 index 000000000..000f42a58 --- /dev/null +++ b/lib/global/libs/ripper/index.dart @@ -0,0 +1,141 @@ +import 'dart:convert'; + +import 'package:flutter/material.dart'; +import 'package:http/http.dart' as http; +import 'package:syphon/global/libs/hive/index.dart'; +import 'package:syphon/store/auth/state.dart'; +// Project imports: +import 'package:syphon/global/libs/hive/index.dart'; +import 'package:syphon/store/crypto/state.dart'; +import 'package:syphon/store/index.dart'; +import 'package:syphon/store/media/state.dart'; +import 'package:syphon/store/rooms/state.dart'; +import 'package:syphon/store/settings/state.dart'; +import 'package:syphon/store/sync/state.dart'; +import 'package:syphon/store/user/state.dart'; + +/** + * + * Ripper API (temp) + * + * One way convertion of the Hive cache to a manually encrypted / encoded state cache + */ +class Ripper { + static Future encodeHive(AppState state) async { + try { + Cache.state.put( + state.syncStore.runtimeType.toString(), + state.syncStore, + ); + // debugPrint('[Hive Storage] caching syncStore'); + } catch (error) { + debugPrint('[Hive Serializer Encode] $error'); + } + + try { + Cache.stateRooms.put( + state.roomStore.runtimeType.toString(), + state.roomStore, + ); + // debugPrint('[Hive Storage] caching roomStore'); + } catch (error) { + debugPrint('[Hive Serializer Encode] $error'); + } + + try { + Cache.state.put( + state.mediaStore.runtimeType.toString(), + state.mediaStore, + ); + // debugPrint('[Hive Storage] caching mediaStore'); + } catch (error) { + debugPrint('[Hive Serializer Encode] $error'); + } + + try { + Cache.state.put( + state.settingsStore.runtimeType.toString(), + state.settingsStore, + ); + // debugPrint('[Hive Storage] caching settingsStore'); + } catch (error) { + debugPrint('[Hive Serializer Encode] $error'); + } + + try { + Cache.state.put( + state.cryptoStore.runtimeType.toString(), + state.cryptoStore, + ); + // debugPrint('[Hive Storage] caching cryptoStore'); + } catch (error) { + debugPrint('[Hive Serializer Encode] $error'); + } + } + + static Future decodeHive() async { + AuthStore authStoreConverted = AuthStore(); + SyncStore syncStoreConverted = SyncStore(); + CryptoStore cryptoStoreConverted = CryptoStore(); + MediaStore mediaStoreConverted = MediaStore(); + RoomStore roomStoreConverted = RoomStore(); + SettingsStore settingsStoreConverted = SettingsStore(); + UserStore userStore = UserStore(); + + try { + authStoreConverted = Cache.state.get( + authStoreConverted.runtimeType.toString(), + defaultValue: null, + ); + } catch (error) { + debugPrint('[Hive Serializer Decode] $error'); + } + + try { + syncStoreConverted = Cache.state.get( + syncStoreConverted.runtimeType.toString(), + defaultValue: null, + ); + } catch (error) { + debugPrint('[Hive Serializer Decode] $error'); + } + + try { + cryptoStoreConverted = Cache.state.get( + cryptoStoreConverted.runtimeType.toString(), + defaultValue: null, + ); + } catch (error) { + debugPrint('[Hive Serializer Decode] $error'); + } + + try { + roomStoreConverted = Cache.stateRooms.get( + roomStoreConverted.runtimeType.toString(), + defaultValue: null, + ); + } catch (error) { + debugPrint('[Hive Serializer Decode] $error'); + } + + try { + mediaStoreConverted = Cache.state.get( + mediaStoreConverted.runtimeType.toString(), + defaultValue: null, + ); + } catch (error) { + debugPrint('[Hive Serializer Decode] $error'); + } + + try { + settingsStoreConverted = Cache.state.get( + settingsStoreConverted.runtimeType.toString(), + defaultValue: null, + ); + } catch (error) { + debugPrint('[Hive Serializer Decode] $error'); + } + } + + static Future convertToManual() async {} +} diff --git a/lib/store/auth/state.dart b/lib/store/auth/state.dart index 67f90ce27..6b2b52b00 100644 --- a/lib/store/auth/state.dart +++ b/lib/store/auth/state.dart @@ -10,14 +10,13 @@ import 'package:json_annotation/json_annotation.dart'; import 'package:syphon/global/libs/hive/type-ids.dart'; import 'package:syphon/global/values.dart'; import 'package:syphon/store/auth/credential/model.dart'; -import 'package:syphon/store/index.dart'; import 'package:syphon/store/user/model.dart'; part 'state.g.dart'; @HiveType(typeId: AuthStoreHiveId) @JsonSerializable(ignoreUnannotated: true) -class AuthStore extends Equatable implements JsonStore { +class AuthStore extends Equatable { @HiveField(0) @JsonKey(name: 'user') final User user; diff --git a/lib/store/index.dart b/lib/store/index.dart index e93d579c4..0ee10ccac 100644 --- a/lib/store/index.dart +++ b/lib/store/index.dart @@ -32,15 +32,11 @@ import './auth/state.dart'; import './media/state.dart'; import './rooms/reducer.dart'; import './rooms/state.dart'; -import 'search/state.dart'; +import './search/state.dart'; import './search/reducer.dart'; import './settings/reducer.dart'; import './settings/state.dart'; -abstract class JsonStore { - JsonStore.fromJson(Map json); -} - class AppState extends Equatable { final bool loading; final AuthStore authStore; @@ -154,19 +150,30 @@ Future initStore() async { * * Only reliance on redux is when too save state */ +// TODO: working! remove after codeblock above proves positive +// try { +// final plaintextJson = json.encode(state.authStore); + +// Cache.state.put(state.authStore.runtimeType.toString(), plaintextJson); + +// final encryptedJson = +// aes.gcm.encrypt(inp: plaintextJson, iv: Cache.ivKey); + +// Cache.state.put('testing', encryptedJson); +// } catch (error) { +// debugPrint('[Hive Serializer Encode] $error'); +// } class HiveSerializer implements StateSerializer { @override Uint8List encode(AppState state) { - // Fail whole conversion if user fails - final stores = [ state.authStore, - // state.syncStore, + state.syncStore, // state.cryptoStore, // state.roomStore, - // state.mediaStore, + state.mediaStore, // state.settingsStore, - // state.userStore, + state.userStore, ]; // Cache each store asyncronously @@ -198,99 +205,48 @@ class HiveSerializer implements StateSerializer { } })); - // TODO: working! remove after codeblock above proves positive - // try { - // final plaintextJson = json.encode(state.authStore); - - // Cache.state.put(state.authStore.runtimeType.toString(), plaintextJson); - - // final encryptedJson = - // aes.gcm.encrypt(inp: plaintextJson, iv: Cache.ivKey); - - // Cache.state.put('testing', encryptedJson); - // } catch (error) { - // debugPrint('[Hive Serializer Encode] $error'); - // } - - try { - Cache.state.put( - state.syncStore.runtimeType.toString(), - state.syncStore, - ); - // debugPrint('[Hive Storage] caching syncStore'); - } catch (error) { - debugPrint('[Hive Serializer Encode] $error'); - } - - try { - Cache.stateRooms.put( - state.roomStore.runtimeType.toString(), - state.roomStore, - ); - // debugPrint('[Hive Storage] caching roomStore'); - } catch (error) { - debugPrint('[Hive Serializer Encode] $error'); - } - - try { - Cache.state.put( - state.mediaStore.runtimeType.toString(), - state.mediaStore, - ); - // debugPrint('[Hive Storage] caching mediaStore'); - } catch (error) { - debugPrint('[Hive Serializer Encode] $error'); - } - - try { - Cache.state.put( - state.settingsStore.runtimeType.toString(), - state.settingsStore, - ); - // debugPrint('[Hive Storage] caching settingsStore'); - } catch (error) { - debugPrint('[Hive Serializer Encode] $error'); - } - - try { - Cache.state.put( - state.cryptoStore.runtimeType.toString(), - state.cryptoStore, - ); - // debugPrint('[Hive Storage] caching cryptoStore'); - } catch (error) { - debugPrint('[Hive Serializer Encode] $error'); - } - // Disregard redux persist storage saving return null; } + // TODO: working! remove after codeblock above proves positive + // try { + // authStore = AuthStore.fromJson( + // json.decode( + // Cache.state.get( + // authStore.runtimeType.toString(), + // defaultValue: AuthStore(), + // ), + // ), + // ); + // } catch (error) { + // debugPrint('[Hive Serializer Decode] $error'); + // } AppState decode(Uint8List data) { final aes = AesCrypt(key: Cache.cryptKey, padding: PaddingAES.pkcs7); - AuthStore authStoreConverted = AuthStore(); - SyncStore syncStoreConverted; - CryptoStore cryptoStoreConverted; - MediaStore mediaStoreConverted; - RoomStore roomStoreConverted; - SettingsStore settingsStoreConverted; - UserStore userStore; - - final List stores = [ - authStoreConverted, - // syncStoreConverted, - // cryptoStoreConverted, - // mediaStoreConverted, - // roomStoreConverted, - // settingsStoreConverted, - // userStore, + AuthStore authStore = AuthStore(); + SyncStore syncStore = SyncStore(); + CryptoStore cryptoStore = CryptoStore(); + MediaStore mediaStore = MediaStore(); + RoomStore roomStore = RoomStore(); + SettingsStore settingsStore = SettingsStore(); + UserStore userStore = UserStore(); + + final List stores = [ + authStore, + syncStore, + cryptoStore, + mediaStore, + roomStore, + settingsStore, + userStore, ]; // Decode each store cache synchronously stores.forEach((store) { try { - var decodedJson = {}; + Map decodedJson = {}; // pull encrypted state from cache final encryptedJson = Cache.stateUnsafe.get( @@ -314,7 +270,25 @@ class HiveSerializer implements StateSerializer { // this stinks, but dart doesn't allow reflection for factories/contructors switch (store.runtimeType.toString()) { case 'AuthStore': - authStoreConverted = AuthStore.fromJson(decodedJson); + authStore = AuthStore.fromJson(decodedJson); + break; + // case 'SyncStore': + // syncStore = SyncStore.fromJson(decodedJson); + // break; + // case 'CryptoStore': + // cryptoStore = CryptoStore.fromJson(decodedJson); + // break; + case 'MediaStore': + mediaStore = MediaStore.fromJson(decodedJson); + break; + // case 'RoomStore': + // roomStore = RoomStore.fromJson(decodedJson); + // break; + // case 'SettingsStore': + // settingsStore = SettingsStore.fromJson(decodedJson); + // break; + case 'UserStore': + userStore = UserStore.fromJson(decodedJson); break; default: break; @@ -326,74 +300,15 @@ class HiveSerializer implements StateSerializer { } }); - // TODO: working! remove after codeblock above proves positive - // try { - // authStoreConverted = AuthStore.fromJson( - // json.decode( - // Cache.state.get( - // authStoreConverted.runtimeType.toString(), - // defaultValue: AuthStore(), - // ), - // ), - // ); - // } catch (error) { - // debugPrint('[Hive Serializer Decode] $error'); - // } - - try { - syncStoreConverted = Cache.state.get( - syncStoreConverted.runtimeType.toString(), - defaultValue: null, - ); - } catch (error) { - debugPrint('[Hive Serializer Decode] $error'); - } - - try { - cryptoStoreConverted = Cache.state.get( - cryptoStoreConverted.runtimeType.toString(), - defaultValue: null, - ); - } catch (error) { - debugPrint('[Hive Serializer Decode] $error'); - } - - try { - roomStoreConverted = Cache.stateRooms.get( - roomStoreConverted.runtimeType.toString(), - defaultValue: null, - ); - } catch (error) { - debugPrint('[Hive Serializer Decode] $error'); - } - - try { - mediaStoreConverted = Cache.state.get( - mediaStoreConverted.runtimeType.toString(), - defaultValue: null, - ); - } catch (error) { - debugPrint('[Hive Serializer Decode] $error'); - } - - try { - settingsStoreConverted = Cache.state.get( - settingsStoreConverted.runtimeType.toString(), - defaultValue: null, - ); - } catch (error) { - debugPrint('[Hive Serializer Decode] $error'); - } - return AppState( loading: false, - authStore: authStoreConverted ?? AuthStore(), - syncStore: syncStoreConverted ?? SyncStore(), - cryptoStore: cryptoStoreConverted ?? CryptoStore(), - roomStore: roomStoreConverted ?? RoomStore(), + authStore: authStore ?? AuthStore(), + syncStore: syncStore ?? SyncStore(), + cryptoStore: cryptoStore ?? CryptoStore(), + roomStore: roomStore ?? RoomStore(), userStore: userStore ?? UserStore(), // not cached - mediaStore: mediaStoreConverted ?? MediaStore(), - settingsStore: settingsStoreConverted ?? SettingsStore(), + mediaStore: mediaStore ?? MediaStore(), + settingsStore: settingsStore ?? SettingsStore(), ); } } diff --git a/lib/store/media/actions.dart b/lib/store/media/actions.dart index e01358de0..54b16eeca 100644 --- a/lib/store/media/actions.dart +++ b/lib/store/media/actions.dart @@ -126,9 +126,11 @@ ThunkAction fetchThumbnail( final bodyBytes = data['bodyBytes']; + debugPrint("FETCH THUMBNAIL ${bodyBytes.runtimeType.toString()}"); + debugPrint(bodyBytes.runtimeType.toString()); store.dispatch(UpdateMediaCache( mxcUri: mxcUri, - data: bodyBytes, + data: bodyBytes as List, )); } catch (error) { debugPrint('[fetchThumbnail] $mxcUri $error'); diff --git a/lib/store/media/state.dart b/lib/store/media/state.dart index f9cd5a47b..baeac60d4 100644 --- a/lib/store/media/state.dart +++ b/lib/store/media/state.dart @@ -4,6 +4,7 @@ import 'dart:typed_data'; // Package imports: import 'package:equatable/equatable.dart'; import 'package:hive/hive.dart'; +import 'package:json_annotation/json_annotation.dart'; // Project imports: import 'package:syphon/global/libs/hive/type-ids.dart'; @@ -11,6 +12,10 @@ import 'package:syphon/global/libs/hive/type-ids.dart'; part 'state.g.dart'; @HiveType(typeId: MediaStoreHiveId) +// NOTE: custom json converter to allow Uint8List when in cache +// TODO: figure out how to make image-matrix.dart play nice with in component coonversions +// Would repeatedly update even if a locally cached version matched +// @JsonSerializable(nullable: true, includeIfNull: true) class MediaStore extends Equatable { @HiveField(0) final bool fetching; @@ -29,22 +34,42 @@ class MediaStore extends Equatable { this.mediaChecks = const {}, }); + @override + List get props => [ + fetching, + mediaCache, + mediaChecks, + ]; MediaStore copyWith({ fetching, mediaCache, mediaChecks, - }) { + }) => + MediaStore( + fetching: fetching ?? this.fetching, + mediaCache: mediaCache ?? this.mediaCache, + mediaChecks: mediaChecks ?? this.mediaChecks, + ); + + factory MediaStore.fromJson(Map json) { return MediaStore( - fetching: fetching ?? this.fetching, - mediaCache: mediaCache ?? this.mediaCache, - mediaChecks: mediaChecks ?? this.mediaChecks, + fetching: json['fetching'] as bool, + mediaCache: (json['mediaCache'] as Map)?.map( + (k, e) => MapEntry( + k, Uint8List.fromList((e as List)?.map((e) => e as int)?.toList())), + ), + mediaChecks: (json['mediaChecks'] as Map)?.map( + (k, e) => MapEntry(k, e as String), + ), ); } - @override - List get props => [ - fetching, - mediaCache, - mediaChecks, - ]; + Map toJson() => _$MediaStoreToJson(this); + Map _$MediaStoreToJson(MediaStore instance) => + { + 'fetching': instance.fetching, + 'mediaCache': instance.mediaCache + .map((key, value) => MapEntry(key, value as List)), + 'mediaChecks': instance.mediaChecks, + }; } diff --git a/lib/store/settings/actions.dart b/lib/store/settings/actions.dart index ab8485969..d0937e0a7 100644 --- a/lib/store/settings/actions.dart +++ b/lib/store/settings/actions.dart @@ -124,8 +124,9 @@ ThunkAction fetchDevices() { } final List jsonDevices = data['devices']; - final List devices = - jsonDevices.map((jsonDevice) => Device.fromJson(jsonDevice)).toList(); + final List devices = jsonDevices + .map((jsonDevice) => Device.fromMatrix(jsonDevice)) + .toList(); store.dispatch(SetDevices(devices: devices)); } catch (error) { diff --git a/lib/store/settings/chat-settings/model.dart b/lib/store/settings/chat-settings/model.dart index dc253bbe5..4707cef18 100644 --- a/lib/store/settings/chat-settings/model.dart +++ b/lib/store/settings/chat-settings/model.dart @@ -1,6 +1,7 @@ // Package imports: import 'package:equatable/equatable.dart'; import 'package:hive/hive.dart'; +import 'package:json_annotation/json_annotation.dart'; // Project imports: import 'package:syphon/global/colours.dart'; @@ -9,6 +10,7 @@ import 'package:syphon/global/libs/hive/type-ids.dart'; part 'model.g.dart'; @HiveType(typeId: ChatSettingsHiveId) +@JsonSerializable() class ChatSetting extends Equatable { @HiveField(0) final String roomId; @@ -52,4 +54,8 @@ class ChatSetting extends Equatable { primaryColor: primaryColor ?? this.primaryColor, notificationsEnabled: notificationsEnabled ?? this.notificationsEnabled, ); + Map toJson() => _$ChatSettingToJson(this); + + factory ChatSetting.fromJson(Map json) => + _$ChatSettingFromJson(json); } diff --git a/lib/store/settings/devices-settings/model.dart b/lib/store/settings/devices-settings/model.dart index e1500a98b..fe06c7dbf 100644 --- a/lib/store/settings/devices-settings/model.dart +++ b/lib/store/settings/devices-settings/model.dart @@ -1,6 +1,7 @@ // Package imports: import 'package:equatable/equatable.dart'; import 'package:hive/hive.dart'; +import 'package:json_annotation/json_annotation.dart'; // Project imports: import 'package:syphon/global/libs/hive/type-ids.dart'; @@ -8,6 +9,7 @@ import 'package:syphon/global/libs/hive/type-ids.dart'; part 'model.g.dart'; @HiveType(typeId: DevicesHiveId) +@JsonSerializable() class Device extends Equatable { @HiveField(0) final String deviceId; @@ -43,17 +45,16 @@ class Device extends Equatable { String displayName, String lastSeenIp, int lastSeenTs, - }) { - return Device( - deviceId: deviceId ?? this.deviceId, - deviceIdPrivate: deviceIdPrivate ?? this.deviceIdPrivate, - displayName: displayName ?? this.displayName, - lastSeenIp: lastSeenIp ?? this.lastSeenIp, - lastSeenTs: lastSeenTs ?? this.lastSeenTs, - ); - } + }) => + Device( + deviceId: deviceId ?? this.deviceId, + deviceIdPrivate: deviceIdPrivate ?? this.deviceIdPrivate, + displayName: displayName ?? this.displayName, + lastSeenIp: lastSeenIp ?? this.lastSeenIp, + lastSeenTs: lastSeenTs ?? this.lastSeenTs, + ); - factory Device.fromJson(dynamic json) { + factory Device.fromMatrix(dynamic json) { try { return Device( deviceId: json['device_id'], @@ -65,4 +66,8 @@ class Device extends Equatable { return Device(); } } + + Map toJson() => _$DeviceToJson(this); + + factory Device.fromJson(Map json) => _$DeviceFromJson(json); } diff --git a/lib/store/settings/notification-settings/model.dart b/lib/store/settings/notification-settings/model.dart index 64f8df121..bd0827b7f 100644 --- a/lib/store/settings/notification-settings/model.dart +++ b/lib/store/settings/notification-settings/model.dart @@ -1,6 +1,7 @@ // Package imports: import 'package:equatable/equatable.dart'; import 'package:hive/hive.dart'; +import 'package:json_annotation/json_annotation.dart'; // Project imports: import 'package:syphon/global/libs/hive/type-ids.dart'; @@ -10,6 +11,7 @@ import './rules/model.dart'; part 'model.g.dart'; @HiveType(typeId: NotificationSettingsHiveId) +@JsonSerializable() class NotificationSettings extends Equatable { @HiveField(0) final List pushers; @@ -17,10 +19,7 @@ class NotificationSettings extends Equatable { @HiveField(1) final List rules; - const NotificationSettings({ - this.pushers, - this.rules, - }); + const NotificationSettings({this.pushers, this.rules}); @override List get props => [ @@ -31,10 +30,14 @@ class NotificationSettings extends Equatable { NotificationSettings copyWith({ pushers, rules, - }) { - return NotificationSettings( - pushers: pushers ?? this.pushers, - rules: rules ?? this.rules, - ); - } + }) => + NotificationSettings( + pushers: pushers ?? this.pushers, + rules: rules ?? this.rules, + ); + + Map toJson() => _$NotificationSettingsToJson(this); + + factory NotificationSettings.fromJson(Map json) => + _$NotificationSettingsFromJson(json); } diff --git a/lib/store/settings/notification-settings/pushers/model.dart b/lib/store/settings/notification-settings/pushers/model.dart index e919ca432..e9c17d409 100644 --- a/lib/store/settings/notification-settings/pushers/model.dart +++ b/lib/store/settings/notification-settings/pushers/model.dart @@ -1,6 +1,7 @@ // Package imports: import 'package:equatable/equatable.dart'; import 'package:hive/hive.dart'; +import 'package:json_annotation/json_annotation.dart'; // Project imports: import 'package:syphon/global/libs/hive/type-ids.dart'; @@ -8,6 +9,7 @@ import 'package:syphon/global/libs/hive/type-ids.dart'; part 'model.g.dart'; @HiveType(typeId: PusherHiveId) +@JsonSerializable() class Pusher extends Equatable { @HiveField(0) final String key; @@ -18,7 +20,12 @@ class Pusher extends Equatable { @HiveField(3) final String appDisplayName; - const Pusher({this.key, this.kind, this.appId, this.appDisplayName}); + const Pusher({ + this.key, + this.kind, + this.appId, + this.appDisplayName, + }); @override List get props => [ @@ -33,16 +40,15 @@ class Pusher extends Equatable { kind, appId, appDisplayName, - }) { - return Pusher( - key: key ?? this.key, - kind: kind ?? this.kind, - appId: appId ?? this.appId, - appDisplayName: appDisplayName ?? this.appDisplayName, - ); - } + }) => + Pusher( + key: key ?? this.key, + kind: kind ?? this.kind, + appId: appId ?? this.appId, + appDisplayName: appDisplayName ?? this.appDisplayName, + ); - factory Pusher.fromJson(dynamic json) { + factory Pusher.fromMatrix(dynamic json) { try { return Pusher( key: json['pushkey'], @@ -56,4 +62,8 @@ class Pusher extends Equatable { ); } } + + Map toJson() => _$PusherToJson(this); + + factory Pusher.fromJson(Map json) => _$PusherFromJson(json); } diff --git a/lib/store/settings/notification-settings/rules/model.dart b/lib/store/settings/notification-settings/rules/model.dart index aa17d3533..3e3b23a77 100644 --- a/lib/store/settings/notification-settings/rules/model.dart +++ b/lib/store/settings/notification-settings/rules/model.dart @@ -1,6 +1,7 @@ // Package imports: import 'package:equatable/equatable.dart'; import 'package:hive/hive.dart'; +import 'package:json_annotation/json_annotation.dart'; // Project imports: import 'package:syphon/global/libs/hive/type-ids.dart'; @@ -8,6 +9,7 @@ import 'package:syphon/global/libs/hive/type-ids.dart'; part 'model.g.dart'; @HiveType(typeId: RuleHiveId) +@JsonSerializable() class Rule extends Equatable { @HiveField(0) final String id; // rule_id @@ -39,23 +41,26 @@ class Rule extends Equatable { actions, ]; + Map toJson() => _$RuleToJson(this); + + factory Rule.fromJson(Map json) => _$RuleFromJson(json); + Rule copyWith({ id, enabled, isDefault, conditions, actions, - }) { - return Rule( - id: id ?? this.id, - enabled: enabled ?? this.enabled, - isDefault: isDefault ?? this.isDefault, - conditions: conditions ?? this.conditions, - actions: actions ?? this.actions, - ); - } + }) => + Rule( + id: id ?? this.id, + enabled: enabled ?? this.enabled, + isDefault: isDefault ?? this.isDefault, + conditions: conditions ?? this.conditions, + actions: actions ?? this.actions, + ); - factory Rule.fromJson(dynamic json) { + factory Rule.fromMatrix(dynamic json) { try { return Rule( id: json['rule_id'], diff --git a/lib/store/settings/state.dart b/lib/store/settings/state.dart index 80ab0233b..47be1f261 100644 --- a/lib/store/settings/state.dart +++ b/lib/store/settings/state.dart @@ -1,6 +1,7 @@ // Package imports: import 'package:equatable/equatable.dart'; import 'package:hive/hive.dart'; +import 'package:json_annotation/json_annotation.dart'; // Project imports: import "package:syphon/global/themes.dart"; @@ -14,6 +15,7 @@ part 'state.g.dart'; // Next Field ID: 21 @HiveType(typeId: SettingsStoreHiveId) +@JsonSerializable() class SettingsStore extends Equatable { @HiveField(0) final int primaryColor; @@ -54,6 +56,7 @@ class SettingsStore extends Equatable { @HiveField(12) final List devices; + // Map @HiveField(11) final Map customChatSettings; @@ -64,9 +67,10 @@ class SettingsStore extends Equatable { @HiveField(14) final String alphaAgreement; // a timestamp of agreement for alpha TOS + @JsonKey(ignore: true) // temp final String pusherToken; // NOTE: can be device token for APNS - // Temporary + @JsonKey(ignore: true) // temp final bool loading; const SettingsStore({ @@ -174,4 +178,9 @@ class SettingsStore extends Equatable { alphaAgreement: alphaAgreement ?? this.alphaAgreement, pusherToken: pusherToken ?? this.pusherToken, ); + + Map toJson() => _$SettingsStoreToJson(this); + + factory SettingsStore.fromJson(Map json) => + _$SettingsStoreFromJson(json); } diff --git a/lib/store/sync/state.dart b/lib/store/sync/state.dart index 2892f9e55..1d8f49511 100644 --- a/lib/store/sync/state.dart +++ b/lib/store/sync/state.dart @@ -104,4 +104,9 @@ class SyncStore extends Equatable { backoff: backoff ?? this.backoff, ); } + + Map toJson() => _$SyncStoreToJson(this); + + factory SyncStore.fromJson(Map json) => + _$SyncStoreFromJson(json); } diff --git a/lib/store/user/state.dart b/lib/store/user/state.dart index f3fbdb6bb..9b0cbd10e 100644 --- a/lib/store/user/state.dart +++ b/lib/store/user/state.dart @@ -12,6 +12,7 @@ part 'state.g.dart'; @HiveType(typeId: UserStoreHiveId) @JsonSerializable(nullable: true, includeIfNull: true) class UserStore extends Equatable { + @JsonKey(ignore: true) final bool loading; @HiveField(0) From 1ee084695765a3652e0cf3b0fe769fcf02151e22 Mon Sep 17 00:00:00 2001 From: ereio Date: Mon, 19 Oct 2020 22:35:18 -0400 Subject: [PATCH 20/45] room store being encrypted on background thread --- lib/global/algos.dart | 2 +- lib/store/index.dart | 28 ++++----- lib/store/media/actions.dart | 7 +-- lib/store/media/state.dart | 2 +- .../rooms/events/ephemeral/m.read/model.dart | 17 +++-- lib/store/rooms/events/model.dart | 63 +++++++++---------- lib/store/rooms/room/model.dart | 21 ++++--- lib/store/rooms/state.dart | 36 ++++++----- lib/store/search/actions.dart | 2 +- 9 files changed, 95 insertions(+), 83 deletions(-) diff --git a/lib/global/algos.dart b/lib/global/algos.dart index 6fe377145..de506b56e 100644 --- a/lib/global/algos.dart +++ b/lib/global/algos.dart @@ -56,7 +56,7 @@ Future encryptJsonBackground(Map params) async { final encryptedJson = cryptor.gcm.encrypt(inp: json, iv: ivKey); - final endTime = stopwatchNew.elapsed; + final endTime = stopwatchNew.elapsed.inSeconds; print( '[encryptJsonBackground] encryption took $endTime', ); diff --git a/lib/store/index.dart b/lib/store/index.dart index 0ee10ccac..037c15a45 100644 --- a/lib/store/index.dart +++ b/lib/store/index.dart @@ -170,9 +170,9 @@ class HiveSerializer implements StateSerializer { state.authStore, state.syncStore, // state.cryptoStore, - // state.roomStore, + state.roomStore, state.mediaStore, - // state.settingsStore, + state.settingsStore, state.userStore, ]; @@ -198,10 +198,10 @@ class HiveSerializer implements StateSerializer { // TODO: remove - testing time elapsed final endTime = stopwatchNew.elapsed; print( - '[Hive Serializer Encode] MANUAL ${store.runtimeType.toString()} $endTime', + '[Hive Serializer ENCODE] ${store.runtimeType.toString().toUpperCase()} $endTime', ); } catch (error) { - debugPrint('[Hive Serializer Encode] MANUAL $error'); + debugPrint('[Hive Serializer ENCODE] $error'); } })); @@ -265,28 +265,28 @@ class HiveSerializer implements StateSerializer { } print( - '[Hive Serializer Decode] MANUAL ${decodedJson}', + '[Hive Serializer DECODE] ${store.runtimeType.toString().toUpperCase()}', ); // this stinks, but dart doesn't allow reflection for factories/contructors switch (store.runtimeType.toString()) { case 'AuthStore': authStore = AuthStore.fromJson(decodedJson); break; - // case 'SyncStore': - // syncStore = SyncStore.fromJson(decodedJson); - // break; + case 'SyncStore': + syncStore = SyncStore.fromJson(decodedJson); + break; // case 'CryptoStore': // cryptoStore = CryptoStore.fromJson(decodedJson); // break; case 'MediaStore': mediaStore = MediaStore.fromJson(decodedJson); break; - // case 'RoomStore': - // roomStore = RoomStore.fromJson(decodedJson); - // break; - // case 'SettingsStore': - // settingsStore = SettingsStore.fromJson(decodedJson); - // break; + case 'RoomStore': + roomStore = RoomStore.fromJson(decodedJson); + break; + case 'SettingsStore': + settingsStore = SettingsStore.fromJson(decodedJson); + break; case 'UserStore': userStore = UserStore.fromJson(decodedJson); break; diff --git a/lib/store/media/actions.dart b/lib/store/media/actions.dart index 54b16eeca..c8351b665 100644 --- a/lib/store/media/actions.dart +++ b/lib/store/media/actions.dart @@ -126,12 +126,7 @@ ThunkAction fetchThumbnail( final bodyBytes = data['bodyBytes']; - debugPrint("FETCH THUMBNAIL ${bodyBytes.runtimeType.toString()}"); - debugPrint(bodyBytes.runtimeType.toString()); - store.dispatch(UpdateMediaCache( - mxcUri: mxcUri, - data: bodyBytes as List, - )); + store.dispatch(UpdateMediaCache(mxcUri: mxcUri, data: bodyBytes)); } catch (error) { debugPrint('[fetchThumbnail] $mxcUri $error'); store.dispatch(UpdateMediaChecks(mxcUri: mxcUri, status: 'failure')); diff --git a/lib/store/media/state.dart b/lib/store/media/state.dart index baeac60d4..324e91b58 100644 --- a/lib/store/media/state.dart +++ b/lib/store/media/state.dart @@ -11,11 +11,11 @@ import 'package:syphon/global/libs/hive/type-ids.dart'; part 'state.g.dart'; -@HiveType(typeId: MediaStoreHiveId) // NOTE: custom json converter to allow Uint8List when in cache // TODO: figure out how to make image-matrix.dart play nice with in component coonversions // Would repeatedly update even if a locally cached version matched // @JsonSerializable(nullable: true, includeIfNull: true) +@HiveType(typeId: MediaStoreHiveId) class MediaStore extends Equatable { @HiveField(0) final bool fetching; diff --git a/lib/store/rooms/events/ephemeral/m.read/model.dart b/lib/store/rooms/events/ephemeral/m.read/model.dart index f0bbbcf67..57cabba88 100644 --- a/lib/store/rooms/events/ephemeral/m.read/model.dart +++ b/lib/store/rooms/events/ephemeral/m.read/model.dart @@ -1,5 +1,6 @@ // Package imports: import 'package:hive/hive.dart'; +import 'package:json_annotation/json_annotation.dart'; // Project imports: import 'package:syphon/global/libs/hive/type-ids.dart'; @@ -7,6 +8,7 @@ import 'package:syphon/global/libs/hive/type-ids.dart'; part 'model.g.dart'; @HiveType(typeId: ReadStatusHiveId) +@JsonSerializable() class ReadStatus { @HiveField(0) final int latestRead; @@ -44,10 +46,13 @@ class ReadStatus { ReadStatus copyWith({ usersRead, latestRead, - }) { - return ReadStatus( - userReads: usersRead ?? this.userReads, - latestRead: latestRead ?? this.latestRead, - ); - } + }) => + ReadStatus( + userReads: usersRead ?? this.userReads, + latestRead: latestRead ?? this.latestRead, + ); + + Map toJson() => _$ReadStatusToJson(this); + factory ReadStatus.fromJson(Map json) => + _$ReadStatusFromJson(json); } diff --git a/lib/store/rooms/events/model.dart b/lib/store/rooms/events/model.dart index d42edbc60..a7bec9dd6 100644 --- a/lib/store/rooms/events/model.dart +++ b/lib/store/rooms/events/model.dart @@ -1,5 +1,6 @@ // Package imports: import 'package:hive/hive.dart'; +import 'package:json_annotation/json_annotation.dart'; // Project imports: import 'package:syphon/global/libs/hive/type-ids.dart'; @@ -58,6 +59,7 @@ class MediumType { } @HiveType(typeId: EventHiveId) +@JsonSerializable() class Event { @HiveField(0) final String id; // event_id @@ -99,34 +101,34 @@ class Event { stateKey, content, timestamp, - }) { - return Event( - id: id ?? this.id, - type: type ?? this.type, - sender: sender ?? this.sender, - roomId: roomId ?? this.roomId, - stateKey: stateKey ?? this.stateKey, - timestamp: timestamp ?? this.timestamp, - content: content ?? this.content, - ); - } + }) => + Event( + id: id ?? this.id, + type: type ?? this.type, + sender: sender ?? this.sender, + roomId: roomId ?? this.roomId, + stateKey: stateKey ?? this.stateKey, + timestamp: timestamp ?? this.timestamp, + content: content ?? this.content, + ); - factory Event.fromJson(Map json) { - return Event( - id: json['event_id'] as String, - userId: json['user_id'] as String, - roomId: json['room_id'] as String, - type: json['type'] as String, - sender: json['sender'] as String, - stateKey: json['state_key'] as String, - timestamp: json['origin_server_ts'] as int, - content: json['content'] as dynamic, - ); - } + Map toJson() => _$EventToJson(this); + factory Event.fromJson(Map json) => _$EventFromJson(json); + factory Event.fromMatrix(Map json) => Event( + id: json['event_id'] as String, + userId: json['user_id'] as String, + roomId: json['room_id'] as String, + type: json['type'] as String, + sender: json['sender'] as String, + stateKey: json['state_key'] as String, + timestamp: json['origin_server_ts'] as int, + content: json['content'] as dynamic, + ); } // TODO: make this actually inherit Event but also allow immutability (dart says no?) @HiveType(typeId: MessageHiveId) +@JsonSerializable() class Message { @HiveField(0) final String id; // event_id @@ -175,6 +177,7 @@ class Message { * TODO: content will not always be a string? configure parsing data * or more complex objects */ + @JsonKey(ignore: true) final dynamic content; const Message({ @@ -199,6 +202,10 @@ class Message { this.failed = false, }); + Map toJson() => _$MessageToJson(this); + factory Message.fromJson(Map json) => + _$MessageFromJson(json); + factory Message.fromEvent(Event event) { try { return Message( @@ -238,14 +245,4 @@ class Message { ); } } - @override - String toString() { - return '${this.runtimeType}{ \n' + - 'id: $id,\n' + - 'userId: $userId,\n' + - 'roomId: $roomId,\n' + - 'type: $type,\n' + - 'content: $content,\n' + - 'body: $body,\n'; - } } diff --git a/lib/store/rooms/room/model.dart b/lib/store/rooms/room/model.dart index 08011cdde..ec023b8b0 100644 --- a/lib/store/rooms/room/model.dart +++ b/lib/store/rooms/room/model.dart @@ -4,6 +4,7 @@ import 'dart:collection'; // Package imports: import 'package:flutter/material.dart'; import 'package:hive/hive.dart'; +import 'package:json_annotation/json_annotation.dart'; // Project imports: import 'package:syphon/global/libs/hive/type-ids.dart'; @@ -21,8 +22,8 @@ class RoomPresets { static const public = 'public_chat'; } -// Next Hive Field 30 @HiveType(typeId: RoomHiveId) +@JsonSerializable() class Room { @HiveField(0) final String id; @@ -84,7 +85,9 @@ class Room { final List outbox; // Not cached + @JsonKey(ignore: true) final bool userTyping; + @JsonKey(ignore: true) final List usersTyping; @HiveField(23) @@ -99,8 +102,10 @@ class Room { @HiveField(27) final bool invite; + @JsonKey(ignore: true) final bool limited; + @JsonKey(ignore: true) String get type { if (joinRule == 'public' || worldReadable) { return 'public'; @@ -217,7 +222,9 @@ class Room { ); } - factory Room.fromJson(Map json) { + Map toJson() => _$RoomToJson(this); + factory Room.fromJson(Map json) => _$RoomFromJson(json); + factory Room.fromMatrix(Map json) { try { return Room( id: json['room_id'], @@ -256,14 +263,14 @@ class Room { final List stateEventsRaw = json['state']['events']; stateEvents = - stateEventsRaw.map((event) => Event.fromJson(event)).toList(); + stateEventsRaw.map((event) => Event.fromMatrix(event)).toList(); } if (json['invite_state'] != null) { final List stateEventsRaw = json['invite_state']['events']; stateEvents = - stateEventsRaw.map((event) => Event.fromJson(event)).toList(); + stateEventsRaw.map((event) => Event.fromMatrix(event)).toList(); invite = true; } @@ -281,7 +288,7 @@ class Room { final List timelineEventsRaw = json['timeline']['events']; final List timelineEvents = List.from( - timelineEventsRaw.map((event) => Event.fromJson(event)), + timelineEventsRaw.map((event) => Event.fromMatrix(event)), ); // TODO: make this more functional, need to split into two lists on type @@ -301,14 +308,14 @@ class Room { final List ephemeralEventsRaw = json['ephemeral']['events']; ephemeralEvents = - ephemeralEventsRaw.map((event) => Event.fromJson(event)).toList(); + ephemeralEventsRaw.map((event) => Event.fromMatrix(event)).toList(); } if (json['account_data'] != null) { final List accountEventsRaw = json['account_data']['events']; accountEvents = - accountEventsRaw.map((event) => Event.fromJson(event)).toList(); + accountEventsRaw.map((event) => Event.fromMatrix(event)).toList(); } return this diff --git a/lib/store/rooms/state.dart b/lib/store/rooms/state.dart index 919e64301..07fbaa42c 100644 --- a/lib/store/rooms/state.dart +++ b/lib/store/rooms/state.dart @@ -4,6 +4,7 @@ import 'dart:async'; // Package imports: import 'package:equatable/equatable.dart'; import 'package:hive/hive.dart'; +import 'package:json_annotation/json_annotation.dart'; // Project imports: import 'package:syphon/global/libs/hive/type-ids.dart'; @@ -12,7 +13,9 @@ import './room/model.dart'; part 'state.g.dart'; @HiveType(typeId: RoomStoreHiveId) +@JsonSerializable() class RoomStore extends Equatable { + @JsonKey(ignore: true) final bool loading; @HiveField(0) @@ -28,10 +31,12 @@ class RoomStore extends Equatable { @HiveField(5) final Map rooms; - // TODO: actually archive - final Map archive; + @JsonKey(ignore: true) + final Map archive; // TODO: actually archive + @JsonKey(ignore: true) final List roomsHidden; + @JsonKey(ignore: true) final Timer roomObserver; bool get isSynced => lastUpdate != null && lastUpdate != 0; @@ -68,16 +73,19 @@ class RoomStore extends Equatable { lastSince, roomObserver, roomsHidden, - }) { - return RoomStore( - rooms: rooms ?? this.rooms, - synced: synced ?? this.synced, - archive: archive ?? this.archive, - loading: loading ?? this.loading, - lastUpdate: lastUpdate ?? this.lastUpdate, - lastSince: lastSince ?? this.lastSince, - roomObserver: roomObserver ?? this.roomObserver, - roomsHidden: roomsHidden ?? this.roomsHidden, - ); - } + }) => + RoomStore( + rooms: rooms ?? this.rooms, + synced: synced ?? this.synced, + archive: archive ?? this.archive, + loading: loading ?? this.loading, + lastUpdate: lastUpdate ?? this.lastUpdate, + lastSince: lastSince ?? this.lastSince, + roomObserver: roomObserver ?? this.roomObserver, + roomsHidden: roomsHidden ?? this.roomsHidden, + ); + + Map toJson() => _$RoomStoreToJson(this); + factory RoomStore.fromJson(Map json) => + _$RoomStoreFromJson(json); } diff --git a/lib/store/search/actions.dart b/lib/store/search/actions.dart index d7049d3be..01a6ee670 100644 --- a/lib/store/search/actions.dart +++ b/lib/store/search/actions.dart @@ -200,7 +200,7 @@ ThunkAction searchPublicRooms({String searchText}) { final List rawPublicRooms = data['chunk']; final List convertedRooms = - rawPublicRooms.map((room) => Room.fromJson(room)).toList(); + rawPublicRooms.map((room) => Room.fromMatrix(room)).toList(); store.dispatch(SetSearchResults( since: data['next_batch'], From e89e07f86ac2ec9c0a44fcdea1ff1562b0f8c8f6 Mon Sep 17 00:00:00 2001 From: ereio Date: Mon, 19 Oct 2020 23:44:52 -0400 Subject: [PATCH 21/45] migrating cache to separate containers to allow for a cache transition from hive, testing out chacha20 for cipher --- lib/global/algos.dart | 21 +++-- lib/global/libs/hive/index.dart | 146 ++++++++++++++++++++++---------- lib/main.dart | 6 ++ lib/store/index.dart | 74 ++++++++-------- readme.md | 1 + 5 files changed, 159 insertions(+), 89 deletions(-) diff --git a/lib/global/algos.dart b/lib/global/algos.dart index de506b56e..c62b9e2d0 100644 --- a/lib/global/algos.dart +++ b/lib/global/algos.dart @@ -47,18 +47,29 @@ Future encryptJsonBackground(Map params) async { String ivKey = params['ivKey']; String cryptKey = params['cryptKey']; String json = params['json']; + String type = params['type']; - Stopwatch stopwatchNew = new Stopwatch()..start(); + final keyGen = CryptKey(); + final iv8 = keyGen.genDart(len: 8); + final key32 = keyGen.genFortuna(); - print('[encryptJsonBackground] ${ivKey} ${cryptKey} ${json}'); + Stopwatch stopwatchOne = new Stopwatch()..start(); + final encryptor = LightCrypt(key: key32, algo: StreamAlgo.chacha20_12); + final encyptedPayload = encryptor.encrypt(inp: json, iv: iv8); + final stopwatchOneTime = stopwatchOne.elapsed.inSeconds; - final cryptor = AesCrypt(key: cryptKey, padding: PaddingAES.pkcs7); + print( + '[encryptJsonBackground] ENCRYPTION CHACHA-POLY ${type} $stopwatchOneTime', + ); + Stopwatch stopwatchTwo = new Stopwatch()..start(); + + final cryptor = AesCrypt(key: cryptKey, padding: PaddingAES.pkcs7); final encryptedJson = cryptor.gcm.encrypt(inp: json, iv: ivKey); - final endTime = stopwatchNew.elapsed.inSeconds; + final stopwatchTwoTime = stopwatchTwo.elapsed.inSeconds; print( - '[encryptJsonBackground] encryption took $endTime', + '[encryptJsonBackground] ENCRYPTION AES ${type} $stopwatchTwoTime', ); return encryptedJson; } diff --git a/lib/global/libs/hive/index.dart b/lib/global/libs/hive/index.dart index 701e87d9d..91e631946 100644 --- a/lib/global/libs/hive/index.dart +++ b/lib/global/libs/hive/index.dart @@ -30,25 +30,54 @@ import 'package:syphon/store/settings/state.dart'; import 'package:syphon/store/sync/state.dart'; import 'package:syphon/store/user/model.dart'; -// Global cache +/** + * Global Cache References + */ class Cache { + // encryption references + static String ivKey; + static String cryptKey; + + // cache refrences + static Box cacheMain; + static Box cacheRooms; + static Box cacheCrypto; + static Box cacheSync; + + // cache storage identifiers + static const mainCacheKey = '${Values.appNameLabel}-main-cache'; + static const roomCacheKey = '${Values.appNameLabel}-room-cache'; + static const cryptoCacheKey = '${Values.appNameLabel}-crypto-cache'; + + // cache key identifiers + static const ivKeyLocation = '${Values.appNameLabel}@ivKey'; + static const cryptKeyLocation = '${Values.appNameLabel}@cryptKey'; + static const encryptionKeyLocation = '${Values.appNameLabel}@publicKey'; + + // background data identifiers + static const roomNames = 'room_names'; + static const syncData = 'sync_data'; + static const protocol = 'protocol'; + static const homeserver = 'homeserver'; + static const accessTokenKey = 'accessToken'; + static const lastSinceKey = 'lastSince'; + static const currentUser = 'currentUser'; + + // DEPRRECATE - after version 0.1.4 static Box state; static Box stateUnsafe; static Box stateRooms; static Box stateMedia; - static String ivKey; - static String cryptKey; static LazyBox sync; static const group_id = '${Values.appNameLabel}'; - static const ivKeyLocation = '${Values.appNameLabel}@ivKey'; - static const cryptKeyLocation = '${Values.appNameLabel}@cryptKey'; - static const encryptionKeyLocation = '${Values.appNameLabel}@publicKey'; + // DEPRRECATE - ENCRYPTED - HIVE DEPENDENT static const syncKey = '${Values.appNameLabel}_sync'; static const stateKey = '${Values.appNameLabel}_cache'; static const stateRoomKey = '${Values.appNameLabel}_cache_2'; + // DEPRRECATE - UNENCRYPTED - HIVE DEPENDENT static const syncKeyUNSAFE = '${Values.appNameLabel}_sync_unsafe'; static const stateKeyUNSAFE = '${Values.appNameLabel}_cache_unsafe'; static const stateKeyRoomsUNSAFE = @@ -56,14 +85,6 @@ class Cache { static const backgroundKeyUNSAFE = '${Values.appNameLabel}_background_cache_unsafe_alt'; - - static const roomNames = 'room_names'; - static const syncData = 'sync_data'; - static const protocol = 'protocol'; - static const homeserver = 'homeserver'; - static const accessTokenKey = 'accessToken'; - static const lastSinceKey = 'lastSince'; - static const currentUser = 'currentUser'; } /** @@ -138,30 +159,10 @@ Future initHiveConfiguration(String storageLocationPath) async { Hive.registerAdapter(SettingsStoreAdapter()); } -Future> unlockEncryptionKey() async { - // Check if storage has been created before - final storageEngine = FlutterSecureStorage(); - - var encryptionKey = await storageEngine.read( - key: Cache.encryptionKeyLocation, - ); - // Create a encryptionKey if a serialized one is not found - if (encryptionKey == null) { - encryptionKey = hex.encode(Hive.generateSecureKey()); - - await storageEngine.write( - key: Cache.encryptionKeyLocation, - value: encryptionKey, - ); - } - - return hex.decode(encryptionKey); -} - Future unlockCryptKey() async { - // Check if storage has been created before final storageEngine = FlutterSecureStorage(); + // Check if storage has been created before var cryptKey = await storageEngine.read( key: Cache.encryptionKeyLocation, ); @@ -198,6 +199,69 @@ Future unlockIVKey() async { return ivKey; } +Future unlockMainCache() async { + try { + return await Hive.openBox( + Cache.mainCacheKey, + crashRecovery: true, + compactionStrategy: (entries, deletedEntries) => deletedEntries > 1, + ); + } catch (error) { + debugPrint('[Unlock Main Cache] $error'); + return null; + } +} + +Future unlockRoomCache() async { + try { + return await Hive.openBox( + Cache.roomCacheKey, + compactionStrategy: (entries, deletedEntries) => deletedEntries > 1, + ); + } catch (error) { + debugPrint('[Unlock Room Cache] $error'); + return null; + } +} + +Future unlockCryptoCache() async { + try { + return await Hive.openBox( + Cache.cryptoCacheKey, + crashRecovery: true, + compactionStrategy: (entries, deletedEntries) => deletedEntries > 1, + ); + } catch (error) { + debugPrint('[Unlock Crypto Cache] $error'); + return null; + } +} + +/** + * DEPRERCATED + * + * original secure key reference for Hive + */ +Future> unlockEncryptionKey() async { + final storageEngine = FlutterSecureStorage(); + + // Check if storage has been created before + var encryptionKey = await storageEngine.read( + key: Cache.encryptionKeyLocation, + ); + // Create a encryptionKey if a serialized one is not found + if (encryptionKey == null) { + encryptionKey = hex.encode(Hive.generateSecureKey()); + + await storageEngine.write( + key: Cache.encryptionKeyLocation, + value: encryptionKey, + ); + } + + return hex.decode(encryptionKey); +} + /** * openHiveState UNSAFE * @@ -229,18 +293,6 @@ Future openHiveStateUnsafe() async { } } -/** - * openHiveState UNSAFE - * - * For testing purposes only - should be encrypting hive - */ -Future openHiveSyncUnsafe() async { - return await Hive.openLazyBox( - Cache.syncKeyUNSAFE, - compactionStrategy: (entries, deletedEntries) => deletedEntries > 2, - ); -} - /** * openHiveState UNSAFE * diff --git a/lib/main.dart b/lib/main.dart index 6def6e795..21b843f39 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -49,6 +49,7 @@ void main() async { await initHive(); if (Platform.isAndroid || Platform.isIOS) { + // TODO: deprecate after conversion Cache.sync = await openHiveSync(); Cache.state = await openHiveState(); Cache.stateRooms = await openHiveStateRooms(); @@ -61,6 +62,11 @@ void main() async { Cache.stateUnsafe = await openHiveStateUnsafe(); } + // NOTE: new state cache containers - compat with any plat + Cache.cacheMain = await unlockMainCache(); + Cache.cacheRooms = await unlockRoomCache(); + Cache.cacheCrypto = await unlockCryptoCache(); + if (Platform.isAndroid) { final backgroundSyncStatus = await BackgroundSync.init(); debugPrint('[main] background service started $backgroundSyncStatus'); diff --git a/lib/store/index.dart b/lib/store/index.dart index 037c15a45..7d4c28665 100644 --- a/lib/store/index.dart +++ b/lib/store/index.dart @@ -106,8 +106,9 @@ Future initStore() async { // Configure redux persist instance final persistor = Persistor( storage: MemoryStorage(), + transforms: Transforms(), serializer: HiveSerializer(), - throttleDuration: Duration(seconds: 6), + throttleDuration: Duration(seconds: 4), shouldSave: (Store store, dynamic action) { switch (action.runtimeType) { case SetSyncing: @@ -145,24 +146,6 @@ Future initStore() async { return Future.value(store); } -/** - * Hive Serializer - * - * Only reliance on redux is when too save state - */ -// TODO: working! remove after codeblock above proves positive -// try { -// final plaintextJson = json.encode(state.authStore); - -// Cache.state.put(state.authStore.runtimeType.toString(), plaintextJson); - -// final encryptedJson = -// aes.gcm.encrypt(inp: plaintextJson, iv: Cache.ivKey); - -// Cache.state.put('testing', encryptedJson); -// } catch (error) { -// debugPrint('[Hive Serializer Encode] $error'); -// } class HiveSerializer implements StateSerializer { @override Uint8List encode(AppState state) { @@ -179,23 +162,37 @@ class HiveSerializer implements StateSerializer { // Cache each store asyncronously Future.wait(stores.map((store) async { try { - // TODO: remove - testing time elapsed Stopwatch stopwatchNew = new Stopwatch()..start(); // Encrypt json off the main thread final encryptedStore = await compute(encryptJsonBackground, { 'ivKey': Cache.ivKey, 'cryptKey': Cache.cryptKey, + 'type': store.runtimeType.toString(), 'json': json.encode(store), }); // Cache the encrypted string of data - await Cache.stateUnsafe.put( + if (store.runtimeType == RoomStore) { + // TODO: change to cacheRooms + await Cache.cacheMain.put( + store.runtimeType.toString(), + encryptedStore, + ); + } + + if (store.runtimeType == CryptoStore) { + await Cache.cacheCrypto.put( + store.runtimeType.toString(), + encryptedStore, + ); + } + + await Cache.cacheMain.put( store.runtimeType.toString(), encryptedStore, ); - // TODO: remove - testing time elapsed final endTime = stopwatchNew.elapsed; print( '[Hive Serializer ENCODE] ${store.runtimeType.toString().toUpperCase()} $endTime', @@ -209,19 +206,6 @@ class HiveSerializer implements StateSerializer { return null; } - // TODO: working! remove after codeblock above proves positive - // try { - // authStore = AuthStore.fromJson( - // json.decode( - // Cache.state.get( - // authStore.runtimeType.toString(), - // defaultValue: AuthStore(), - // ), - // ), - // ); - // } catch (error) { - // debugPrint('[Hive Serializer Decode] $error'); - // } AppState decode(Uint8List data) { final aes = AesCrypt(key: Cache.cryptKey, padding: PaddingAES.pkcs7); @@ -248,8 +232,25 @@ class HiveSerializer implements StateSerializer { try { Map decodedJson = {}; + var encryptedJson; + + if (store.runtimeType == RoomStore) { + // TODO: change to cacheRooms + encryptedJson = Cache.cacheMain.get( + store.runtimeType.toString(), + defaultValue: null, + ); + } + + if (store.runtimeType == CryptoStore) { + encryptedJson = Cache.cacheCrypto.get( + store.runtimeType.toString(), + defaultValue: null, + ); + } + // pull encrypted state from cache - final encryptedJson = Cache.stateUnsafe.get( + encryptedJson = Cache.cacheMain.get( store.runtimeType.toString(), defaultValue: null, ); @@ -260,7 +261,6 @@ class HiveSerializer implements StateSerializer { enc: encryptedJson, iv: Cache.ivKey, ); - // decode json to a Map decodedJson = json.decode(decryptedJson); } diff --git a/readme.md b/readme.md index 2e2b041c0..a478964a7 100644 --- a/readme.md +++ b/readme.md @@ -162,6 +162,7 @@ dependency_overrides: - [keyboard dismissal](https://stackoverflow.com/questions/55863766/how-to-prevent-keyboard-from-dismissing-on-pressing-submit-key-in-flutter) - [changing transition styles](https://stackoverflow.com/questions/50196913/how-to-change-navigation-animation-using-flutter) - [animations](https://flutter.dev/docs/development/ui/animations) +- [serialize Uint8List bytes](https://stackoverflow.com/questions/63716036/how-to-serialize-uint8list-to-json-with-json-annotation-in-dart) - adding a border without needing ctrl-p ```dart decoration: BoxDecoration( From 992b54e349e5759ef2c072b22f24253c27a3a564 Mon Sep 17 00:00:00 2001 From: ereio Date: Tue, 20 Oct 2020 22:34:42 -0400 Subject: [PATCH 22/45] caching crypto store containing olm/megolm accounts --- lib/global/algos.dart | 25 ++++----------- lib/store/crypto/actions.dart | 10 +++--- lib/store/crypto/keys/model.dart | 6 ++++ lib/store/crypto/model.dart | 44 +++++++++++-------------- lib/store/crypto/state.dart | 55 ++++++++++++++++++-------------- lib/store/user/model.dart | 7 ++-- 6 files changed, 70 insertions(+), 77 deletions(-) diff --git a/lib/global/algos.dart b/lib/global/algos.dart index c62b9e2d0..501be924a 100644 --- a/lib/global/algos.dart +++ b/lib/global/algos.dart @@ -38,7 +38,7 @@ Future decryptJsonBackground(Map params) async { final cryptor = AesCrypt(key: cryptKey, padding: PaddingAES.pkcs7); - final decryptedJson = cryptor.gcm.decrypt(enc: json, iv: ivKey); + final decryptedJson = cryptor.ctr.decrypt(enc: json, iv: ivKey); return jsonDecode(decryptedJson); } @@ -49,27 +49,14 @@ Future encryptJsonBackground(Map params) async { String json = params['json']; String type = params['type']; - final keyGen = CryptKey(); - final iv8 = keyGen.genDart(len: 8); - final key32 = keyGen.genFortuna(); - - Stopwatch stopwatchOne = new Stopwatch()..start(); - final encryptor = LightCrypt(key: key32, algo: StreamAlgo.chacha20_12); - final encyptedPayload = encryptor.encrypt(inp: json, iv: iv8); - final stopwatchOneTime = stopwatchOne.elapsed.inSeconds; - - print( - '[encryptJsonBackground] ENCRYPTION CHACHA-POLY ${type} $stopwatchOneTime', - ); - Stopwatch stopwatchTwo = new Stopwatch()..start(); final cryptor = AesCrypt(key: cryptKey, padding: PaddingAES.pkcs7); - final encryptedJson = cryptor.gcm.encrypt(inp: json, iv: ivKey); + final encryptedJson = cryptor.ctr.encrypt(inp: json, iv: ivKey); + + final stopwatchTwoTime = stopwatchTwo.elapsed; + + print('[encryptJsonBackground] ENCRYPTION AES ${type} $stopwatchTwoTime'); - final stopwatchTwoTime = stopwatchTwo.elapsed.inSeconds; - print( - '[encryptJsonBackground] ENCRYPTION AES ${type} $stopwatchTwoTime', - ); return encryptedJson; } diff --git a/lib/store/crypto/actions.dart b/lib/store/crypto/actions.dart index 581729a86..ba6834384 100644 --- a/lib/store/crypto/actions.dart +++ b/lib/store/crypto/actions.dart @@ -315,7 +315,7 @@ ThunkAction generateIdentityKeys() { }; // cache current device key for authed user - final deviceKeysOwned = DeviceKey.fromJson( + final deviceKeysOwned = DeviceKey.fromMatrix( deviceKeysPayload['device_keys'], ); @@ -338,7 +338,7 @@ ThunkAction uploadIdentityKeys({DeviceKey deviceKey}) { return (Store store) async { try { final deviceKeyMap = { - 'device_keys': deviceKey.toMap(), + 'device_keys': deviceKey.toMatrix(), }; // upload the public device keys @@ -1030,7 +1030,7 @@ ThunkAction fetchDeviceKeys({Map users}) { deviceKeys.forEach((userId, devices) { devices.forEach((deviceId, device) { - final deviceKey = DeviceKey.fromJson(device); + final deviceKey = DeviceKey.fromMatrix(device); if (newDeviceKeys[userId] == null) { newDeviceKeys[userId] = {}; @@ -1081,7 +1081,7 @@ ThunkAction exportDeviceKeysOwned() { var exportData = { 'account_key': store.state.cryptoStore.olmAccountKey, - 'device_keys': deviceKey.toMap(), + 'device_keys': deviceKey.toMatrix(), }; file = await file.writeAsString(json.encode(exportData)); @@ -1114,7 +1114,7 @@ ThunkAction importDeviceKeysOwned() { store.dispatch( SetDeviceKeysOwned( deviceKeysOwned: { - authUser.deviceId: DeviceKey.fromJson( + authUser.deviceId: DeviceKey.fromMatrix( importData['device_keys'], ), }, diff --git a/lib/store/crypto/keys/model.dart b/lib/store/crypto/keys/model.dart index 89ecc60f0..2e017fae0 100644 --- a/lib/store/crypto/keys/model.dart +++ b/lib/store/crypto/keys/model.dart @@ -1,6 +1,7 @@ // Package imports: import 'package:equatable/equatable.dart'; import 'package:hive/hive.dart'; +import 'package:json_annotation/json_annotation.dart'; // Project imports: import 'package:syphon/global/libs/hive/type-ids.dart'; @@ -32,6 +33,7 @@ part 'model.g.dart'; } */ @HiveType(typeId: OneTimeKeyHiveId) +@JsonSerializable() class OneTimeKey extends Equatable { @HiveField(0) final String userId; @@ -60,4 +62,8 @@ class OneTimeKey extends Equatable { keys, signatures, ]; + + Map toJson() => _$OneTimeKeyToJson(this); + factory OneTimeKey.fromJson(Map json) => + _$OneTimeKeyFromJson(json); } diff --git a/lib/store/crypto/model.dart b/lib/store/crypto/model.dart index 278ec566a..6b64913a9 100644 --- a/lib/store/crypto/model.dart +++ b/lib/store/crypto/model.dart @@ -1,6 +1,7 @@ // Package imports: import 'package:equatable/equatable.dart'; import 'package:hive/hive.dart'; +import 'package:json_annotation/json_annotation.dart'; // Project imports: import 'package:syphon/global/libs/hive/type-ids.dart'; @@ -9,6 +10,7 @@ import 'package:syphon/global/libs/matrix/encryption.dart'; part 'model.g.dart'; @HiveType(typeId: DeviceKeyHiveId) +@JsonSerializable() class DeviceKey extends Equatable { @HiveField(0) final String userId; @@ -48,7 +50,20 @@ class DeviceKey extends Equatable { privateKeys, ]; - factory DeviceKey.fromJson(dynamic json) { + Map toMatrix() { + return { + 'algorithms': [ + Algorithms.olmv1, + Algorithms.megolmv1, + ], + 'device_id': deviceId, + 'keys': keys, + 'signatures': signatures, + 'user_id': userId, + }; + } + + factory DeviceKey.fromMatrix(dynamic json) { try { return DeviceKey( userId: json['user_id'], @@ -63,28 +78,7 @@ class DeviceKey extends Equatable { } } - toMap() { - return { - 'algorithms': [ - Algorithms.olmv1, - Algorithms.megolmv1, - ], - 'device_id': deviceId, - 'keys': keys, - 'signatures': signatures, - 'user_id': userId, - }; - } - - @override - String toString() { - return '{' + - 'user_id: $userId,' + - 'device_id: $deviceId,' + - 'algorithms: $algorithms,' + - 'keys: $keys,' + - 'signatures: $signatures,' + - 'extras: $extras,' + - '}\n'; - } + Map toJson() => _$DeviceKeyToJson(this); + factory DeviceKey.fromJson(Map json) => + _$DeviceKeyFromJson(json); } diff --git a/lib/store/crypto/state.dart b/lib/store/crypto/state.dart index 5ffefcf27..f40f1f6bd 100644 --- a/lib/store/crypto/state.dart +++ b/lib/store/crypto/state.dart @@ -1,6 +1,7 @@ // Package imports: import 'package:equatable/equatable.dart'; import 'package:hive/hive.dart'; +import 'package:json_annotation/json_annotation.dart'; import 'package:olm/olm.dart'; // Project imports: @@ -12,11 +13,13 @@ part 'state.g.dart'; // Next Hive Field Number: 14 @HiveType(typeId: CryptoStoreHiveId) +@JsonSerializable() class CryptoStore extends Equatable { - // Active olm account + // Active olm account (loaded from olmAccountKey) + @JsonKey(ignore: true) final Account olmAccount; - // Serialized old account + // Serialized olm account @HiveField(3) final String olmAccountKey; @@ -65,6 +68,7 @@ class CryptoStore extends Equatable { // @HiveField(?) TODO: consider saving generated keys? // the private key for one time keys is saved in olm? // Map deviceKeys + @JsonKey(ignore: true) final Map oneTimeKeysOwned; const CryptoStore({ @@ -117,26 +121,29 @@ class CryptoStore extends Equatable { oneTimeKeysOwned, oneTimeKeysClaimed, oneTimeKeysCounts, - }) { - return CryptoStore( - olmAccount: olmAccount ?? this.olmAccount, - olmAccountKey: olmAccountKey ?? this.olmAccountKey, - inboundMessageSessions: - inboundMessageSessions ?? this.inboundMessageSessions, - outboundMessageSessions: - outboundMessageSessions ?? this.outboundMessageSessions, - messageSessionIndexNEW: - messageSessionIndexNEW ?? this.messageSessionIndexNEW, - messageSessionIndex: messageSessionIndex ?? this.messageSessionIndex, - inboundKeySessions: inboundKeySessions ?? this.inboundKeySessions, - outboundKeySessions: outboundKeySessions ?? this.outboundKeySessions, - deviceKeys: deviceKeys ?? this.deviceKeys, - deviceKeysOwned: deviceKeysOwned ?? this.deviceKeysOwned, - oneTimeKeysOwned: oneTimeKeysOwned ?? this.oneTimeKeysOwned, - oneTimeKeysClaimed: oneTimeKeysClaimed ?? this.oneTimeKeysClaimed, - deviceKeysExist: - deviceKeysExist != null ? deviceKeysExist : this.deviceKeysExist, - oneTimeKeysCounts: oneTimeKeysCounts ?? this.oneTimeKeysCounts, - ); - } + }) => + CryptoStore( + olmAccount: olmAccount ?? this.olmAccount, + olmAccountKey: olmAccountKey ?? this.olmAccountKey, + inboundMessageSessions: + inboundMessageSessions ?? this.inboundMessageSessions, + outboundMessageSessions: + outboundMessageSessions ?? this.outboundMessageSessions, + messageSessionIndexNEW: + messageSessionIndexNEW ?? this.messageSessionIndexNEW, + messageSessionIndex: messageSessionIndex ?? this.messageSessionIndex, + inboundKeySessions: inboundKeySessions ?? this.inboundKeySessions, + outboundKeySessions: outboundKeySessions ?? this.outboundKeySessions, + deviceKeys: deviceKeys ?? this.deviceKeys, + deviceKeysOwned: deviceKeysOwned ?? this.deviceKeysOwned, + oneTimeKeysOwned: oneTimeKeysOwned ?? this.oneTimeKeysOwned, + oneTimeKeysClaimed: oneTimeKeysClaimed ?? this.oneTimeKeysClaimed, + deviceKeysExist: + deviceKeysExist != null ? deviceKeysExist : this.deviceKeysExist, + oneTimeKeysCounts: oneTimeKeysCounts ?? this.oneTimeKeysCounts, + ); + + Map toJson() => _$CryptoStoreToJson(this); + factory CryptoStore.fromJson(Map json) => + _$CryptoStoreFromJson(json); } diff --git a/lib/store/user/model.dart b/lib/store/user/model.dart index 0502b4cbd..d1f2e9409 100644 --- a/lib/store/user/model.dart +++ b/lib/store/user/model.dart @@ -71,10 +71,6 @@ class User extends Equatable { avatarUri, ]; - Map toJson() => _$UserToJson(this); - - factory User.fromJson(Map json) => _$UserFromJson(json); - factory User.fromMatrix(dynamic json) { try { var idserver; @@ -107,4 +103,7 @@ class User extends Equatable { return User(); } } + + factory User.fromJson(Map json) => _$UserFromJson(json); + Map toJson() => _$UserToJson(this); } From 2f6a876b3d0a43857f8221da65c79dd3561730dc Mon Sep 17 00:00:00 2001 From: ereio Date: Tue, 20 Oct 2020 22:49:18 -0400 Subject: [PATCH 23/45] progress on recoverable encrypted storage in case of force close --- lib/global/libs/hive/index.dart | 40 ++++++-- lib/store/index.dart | 170 ++++++++++++++++++++------------ 2 files changed, 137 insertions(+), 73 deletions(-) diff --git a/lib/global/libs/hive/index.dart b/lib/global/libs/hive/index.dart index 91e631946..30f392532 100644 --- a/lib/global/libs/hive/index.dart +++ b/lib/global/libs/hive/index.dart @@ -36,6 +36,7 @@ import 'package:syphon/store/user/model.dart'; class Cache { // encryption references static String ivKey; + static String ivKeyNext; static String cryptKey; // cache refrences @@ -51,6 +52,7 @@ class Cache { // cache key identifiers static const ivKeyLocation = '${Values.appNameLabel}@ivKey'; + static const ivKeyNextLocation = '${Values.appNameLabel}@ivKeyNext'; static const cryptKeyLocation = '${Values.appNameLabel}@cryptKey'; static const encryptionKeyLocation = '${Values.appNameLabel}@publicKey'; @@ -179,24 +181,42 @@ Future unlockCryptKey() async { return cryptKey; } +String createIVKey() => CryptKey().genDart(); + +Future saveIVKey(String ivKey) async { + // Check if storage has been created before + return await FlutterSecureStorage().write( + key: Cache.ivKeyLocation, + value: ivKey, + ); +} + +Future saveIVKeyNext(String ivKey) async { + // Check if storage has been created before + return await FlutterSecureStorage().write( + key: Cache.ivKeyNextLocation, + value: ivKey, + ); +} + Future unlockIVKey() async { // Check if storage has been created before final storageEngine = FlutterSecureStorage(); - var ivKey = await storageEngine.read(key: Cache.ivKeyLocation); + final ivKeyStored = await storageEngine.read(key: Cache.ivKeyLocation); // Create a encryptionKey if a serialized one is not found - if (ivKey == null) { - ivKey = CryptKey().genDart(); + return ivKeyStored == null ? createIVKey() : ivKeyStored; +} - debugPrint(ivKey); - await storageEngine.write( - key: Cache.ivKeyLocation, - value: ivKey, - ); - } +Future unlockIVKeyNext() async { + // Check if storage has been created before + final storageEngine = FlutterSecureStorage(); - return ivKey; + final ivKeyStored = await storageEngine.read(key: Cache.ivKeyNextLocation); + + // Create a encryptionKey if a serialized one is not found + return ivKeyStored == null ? createIVKey() : ivKeyStored; } Future unlockMainCache() async { diff --git a/lib/store/index.dart b/lib/store/index.dart index 7d4c28665..7b072d779 100644 --- a/lib/store/index.dart +++ b/lib/store/index.dart @@ -77,20 +77,18 @@ class AppState extends Equatable { ]; } -AppState appReducer(AppState state, action) { - return AppState( - loading: state.loading, - authStore: authReducer(state.authStore, action), - alertsStore: alertsReducer(state.alertsStore, action), - mediaStore: mediaReducer(state.mediaStore, action), - roomStore: roomReducer(state.roomStore, action), - syncStore: syncReducer(state.syncStore, action), - userStore: userReducer(state.userStore, action), - searchStore: searchReducer(state.searchStore, action), - settingsStore: settingsReducer(state.settingsStore, action), - cryptoStore: cryptoReducer(state.cryptoStore, action), - ); -} +AppState appReducer(AppState state, action) => AppState( + loading: state.loading, + authStore: authReducer(state.authStore, action), + alertsStore: alertsReducer(state.alertsStore, action), + mediaStore: mediaReducer(state.mediaStore, action), + roomStore: roomReducer(state.roomStore, action), + syncStore: syncReducer(state.syncStore, action), + userStore: userReducer(state.userStore, action), + searchStore: searchReducer(state.searchStore, action), + settingsStore: settingsReducer(state.settingsStore, action), + cryptoStore: cryptoReducer(state.cryptoStore, action), + ); /** * Initialize Store @@ -106,9 +104,8 @@ Future initStore() async { // Configure redux persist instance final persistor = Persistor( storage: MemoryStorage(), - transforms: Transforms(), - serializer: HiveSerializer(), - throttleDuration: Duration(seconds: 4), + serializer: CacheSerializer(), + throttleDuration: Duration(milliseconds: 2500), shouldSave: (Store store, dynamic action) { switch (action.runtimeType) { case SetSyncing: @@ -123,8 +120,8 @@ Future initStore() async { ); // Configure cache encryption/decryption instance - // TODO: offload init to thread and cache keys in RAM Cache.ivKey = await unlockIVKey(); + Cache.ivKeyNext = await unlockIVKeyNext(); Cache.cryptKey = await unlockCryptKey(); // Finally load persisted store @@ -146,61 +143,91 @@ Future initStore() async { return Future.value(store); } -class HiveSerializer implements StateSerializer { +/** + * Cache Serializer + * + * Handles serialization, encryption, and storage for caching redux stores + */ +class CacheSerializer implements StateSerializer { @override Uint8List encode(AppState state) { final stores = [ state.authStore, state.syncStore, - // state.cryptoStore, + state.cryptoStore, state.roomStore, state.mediaStore, state.settingsStore, state.userStore, ]; - // Cache each store asyncronously - Future.wait(stores.map((store) async { - try { - Stopwatch stopwatchNew = new Stopwatch()..start(); - - // Encrypt json off the main thread - final encryptedStore = await compute(encryptJsonBackground, { - 'ivKey': Cache.ivKey, - 'cryptKey': Cache.cryptKey, - 'type': store.runtimeType.toString(), - 'json': json.encode(store), - }); - - // Cache the encrypted string of data - if (store.runtimeType == RoomStore) { - // TODO: change to cacheRooms + // Queue up a cache saving will wait + // if the previously schedule task has not finished + Future.microtask(() async { + // create a new IV for the encrypted cache + Cache.ivKey = createIVKey(); + // backup the IV in case the app is force closed before caching finishes + await saveIVKeyNext(Cache.ivKey); + + // run through all redux stores for encryption and encoding + await Future.wait(stores.map((store) async { + try { + Stopwatch stopwatchNew = new Stopwatch()..start(); + + var jsonData; + + // encode the store contents to json + // HACK: unable to pass both listed stores direct to an isolate + final sensitiveStorage = [AuthStore, SyncStore, CryptoStore]; + if (!sensitiveStorage.contains(store.runtimeType)) { + jsonData = await compute(jsonEncode, store); + } else { + jsonData = json.encode(store); + } + + // encrypt the store contents previously converted to json + final encryptedStore = await compute(encryptJsonBackground, { + 'ivKey': Cache.ivKey, + 'cryptKey': Cache.cryptKey, + 'type': store.runtimeType.toString(), + 'json': jsonData, + }); + + // cache the encrypted json representation of the redux store + if (store.runtimeType == RoomStore) { + await Cache.cacheRooms.put( + store.runtimeType.toString(), + encryptedStore, + ); + } + + // cache the encrypted json representation of the redux store + if (store.runtimeType == CryptoStore) { + await Cache.cacheCrypto.put( + store.runtimeType.toString(), + encryptedStore, + ); + } + + // cache the encrypted json representation of the redux store await Cache.cacheMain.put( store.runtimeType.toString(), encryptedStore, ); - } - if (store.runtimeType == CryptoStore) { - await Cache.cacheCrypto.put( - store.runtimeType.toString(), - encryptedStore, + final endTime = stopwatchNew.elapsed; + print( + '[Hive Serializer ENCODE] ${store.runtimeType.toString().toUpperCase()} $endTime', ); + } catch (error) { + debugPrint( + '[Hive Serializer ENCODE] ${store.runtimeType.toString().toUpperCase()} $error'); } + })); - await Cache.cacheMain.put( - store.runtimeType.toString(), - encryptedStore, - ); - - final endTime = stopwatchNew.elapsed; - print( - '[Hive Serializer ENCODE] ${store.runtimeType.toString().toUpperCase()} $endTime', - ); - } catch (error) { - debugPrint('[Hive Serializer ENCODE] $error'); - } - })); + // Rotate encryption for the next save + await saveIVKey(Cache.ivKey); + }); // Disregard redux persist storage saving return null; @@ -235,8 +262,7 @@ class HiveSerializer implements StateSerializer { var encryptedJson; if (store.runtimeType == RoomStore) { - // TODO: change to cacheRooms - encryptedJson = Cache.cacheMain.get( + encryptedJson = Cache.cacheRooms.get( store.runtimeType.toString(), defaultValue: null, ); @@ -255,17 +281,35 @@ class HiveSerializer implements StateSerializer { defaultValue: null, ); + // attempt to decrypt encrypted state after loaded from RAM if (encryptedJson != null) { - // decrypt encrypted state after loaded from RAM - final decryptedJson = aes.gcm.decrypt( - enc: encryptedJson, - iv: Cache.ivKey, - ); - decodedJson = json.decode(decryptedJson); + try { + final decryptedJson = aes.ctr.decrypt( + enc: encryptedJson, + iv: Cache.ivKey, + ); + decodedJson = json.decode(decryptedJson); + } catch (error) { + print('[Hive Serializer DECODE] ${store.runtimeType.toString()}'); + } + } + + // decryption may fail if force closed, attempt with new iv generated before close + if (decodedJson == null) { + try { + // decrypt encrypted state after loaded from RAM + final decryptedJson = aes.ctr.decrypt( + enc: encryptedJson, + iv: Cache.ivKeyNext, + ); + decodedJson = json.decode(decryptedJson); + } catch (error) { + print('[Hive Serializer DECODE] ${store.runtimeType.toString()}'); + } } print( - '[Hive Serializer DECODE] ${store.runtimeType.toString().toUpperCase()}', + '[Hive Serializer DECODE] ${store.runtimeType.toString()}', ); // this stinks, but dart doesn't allow reflection for factories/contructors switch (store.runtimeType.toString()) { From e3df874fc203a3af3fa1a99e4eb5bf348f960a76 Mon Sep 17 00:00:00 2001 From: ereio Date: Tue, 20 Oct 2020 23:08:49 -0400 Subject: [PATCH 24/45] clean up and disabling iv rotation for now --- lib/global/libs/hive/index.dart | 12 +- lib/global/libs/ripper/index.dart | 2 - lib/main.dart | 3 - lib/store/index.dart | 221 +-------------------------- lib/store/serializer.dart | 241 ++++++++++++++++++++++++++++++ 5 files changed, 246 insertions(+), 233 deletions(-) create mode 100644 lib/store/serializer.dart diff --git a/lib/global/libs/hive/index.dart b/lib/global/libs/hive/index.dart index 30f392532..7e0d76ea7 100644 --- a/lib/global/libs/hive/index.dart +++ b/lib/global/libs/hive/index.dart @@ -185,18 +185,14 @@ String createIVKey() => CryptKey().genDart(); Future saveIVKey(String ivKey) async { // Check if storage has been created before - return await FlutterSecureStorage().write( - key: Cache.ivKeyLocation, - value: ivKey, - ); + return await FlutterSecureStorage() + .write(key: Cache.ivKeyLocation, value: ivKey); } Future saveIVKeyNext(String ivKey) async { // Check if storage has been created before - return await FlutterSecureStorage().write( - key: Cache.ivKeyNextLocation, - value: ivKey, - ); + return await FlutterSecureStorage() + .write(key: Cache.ivKeyNextLocation, value: ivKey); } Future unlockIVKey() async { diff --git a/lib/global/libs/ripper/index.dart b/lib/global/libs/ripper/index.dart index 000f42a58..8b1b3e47a 100644 --- a/lib/global/libs/ripper/index.dart +++ b/lib/global/libs/ripper/index.dart @@ -136,6 +136,4 @@ class Ripper { debugPrint('[Hive Serializer Decode] $error'); } } - - static Future convertToManual() async {} } diff --git a/lib/main.dart b/lib/main.dart index 21b843f39..0f29d5c4c 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -233,9 +233,6 @@ class SyphonState extends State with WidgetsBindingObserver { child: EasyLocalization( path: 'assets/translations', useOnlyLangCode: true, - // startLocale: store.state.settingsStore.language == languages[0] - // ? null - // : Locale(formatLanguageCode(store.state.settingsStore.language)), startLocale: Locale(formatLanguageCode(store.state.settingsStore.language)), fallbackLocale: Locale('en'), diff --git a/lib/store/index.dart b/lib/store/index.dart index 7b072d779..41a120a07 100644 --- a/lib/store/index.dart +++ b/lib/store/index.dart @@ -1,7 +1,3 @@ -// Dart imports: -import 'dart:convert'; -import 'dart:typed_data'; - // Flutter imports: import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; @@ -11,8 +7,6 @@ import 'package:equatable/equatable.dart'; import 'package:redux/redux.dart'; import 'package:redux_persist/redux_persist.dart'; import 'package:redux_thunk/redux_thunk.dart'; -import 'package:steel_crypt/steel_crypt.dart'; -import 'package:syphon/global/algos.dart'; // Project imports: import 'package:syphon/global/libs/hive/index.dart'; @@ -21,6 +15,7 @@ import 'package:syphon/store/auth/reducer.dart'; import 'package:syphon/store/crypto/reducer.dart'; import 'package:syphon/store/crypto/state.dart'; import 'package:syphon/store/media/reducer.dart'; +import 'package:syphon/store/serializer.dart'; import 'package:syphon/store/sync/actions.dart'; import 'package:syphon/store/sync/reducer.dart'; import 'package:syphon/store/sync/state.dart'; @@ -142,217 +137,3 @@ Future initStore() async { return Future.value(store); } - -/** - * Cache Serializer - * - * Handles serialization, encryption, and storage for caching redux stores - */ -class CacheSerializer implements StateSerializer { - @override - Uint8List encode(AppState state) { - final stores = [ - state.authStore, - state.syncStore, - state.cryptoStore, - state.roomStore, - state.mediaStore, - state.settingsStore, - state.userStore, - ]; - - // Queue up a cache saving will wait - // if the previously schedule task has not finished - Future.microtask(() async { - // create a new IV for the encrypted cache - Cache.ivKey = createIVKey(); - // backup the IV in case the app is force closed before caching finishes - await saveIVKeyNext(Cache.ivKey); - - // run through all redux stores for encryption and encoding - await Future.wait(stores.map((store) async { - try { - Stopwatch stopwatchNew = new Stopwatch()..start(); - - var jsonData; - - // encode the store contents to json - // HACK: unable to pass both listed stores direct to an isolate - final sensitiveStorage = [AuthStore, SyncStore, CryptoStore]; - if (!sensitiveStorage.contains(store.runtimeType)) { - jsonData = await compute(jsonEncode, store); - } else { - jsonData = json.encode(store); - } - - // encrypt the store contents previously converted to json - final encryptedStore = await compute(encryptJsonBackground, { - 'ivKey': Cache.ivKey, - 'cryptKey': Cache.cryptKey, - 'type': store.runtimeType.toString(), - 'json': jsonData, - }); - - // cache the encrypted json representation of the redux store - if (store.runtimeType == RoomStore) { - await Cache.cacheRooms.put( - store.runtimeType.toString(), - encryptedStore, - ); - } - - // cache the encrypted json representation of the redux store - if (store.runtimeType == CryptoStore) { - await Cache.cacheCrypto.put( - store.runtimeType.toString(), - encryptedStore, - ); - } - - // cache the encrypted json representation of the redux store - await Cache.cacheMain.put( - store.runtimeType.toString(), - encryptedStore, - ); - - final endTime = stopwatchNew.elapsed; - print( - '[Hive Serializer ENCODE] ${store.runtimeType.toString().toUpperCase()} $endTime', - ); - } catch (error) { - debugPrint( - '[Hive Serializer ENCODE] ${store.runtimeType.toString().toUpperCase()} $error'); - } - })); - - // Rotate encryption for the next save - await saveIVKey(Cache.ivKey); - }); - - // Disregard redux persist storage saving - return null; - } - - AppState decode(Uint8List data) { - final aes = AesCrypt(key: Cache.cryptKey, padding: PaddingAES.pkcs7); - - AuthStore authStore = AuthStore(); - SyncStore syncStore = SyncStore(); - CryptoStore cryptoStore = CryptoStore(); - MediaStore mediaStore = MediaStore(); - RoomStore roomStore = RoomStore(); - SettingsStore settingsStore = SettingsStore(); - UserStore userStore = UserStore(); - - final List stores = [ - authStore, - syncStore, - cryptoStore, - mediaStore, - roomStore, - settingsStore, - userStore, - ]; - - // Decode each store cache synchronously - stores.forEach((store) { - try { - Map decodedJson = {}; - - var encryptedJson; - - if (store.runtimeType == RoomStore) { - encryptedJson = Cache.cacheRooms.get( - store.runtimeType.toString(), - defaultValue: null, - ); - } - - if (store.runtimeType == CryptoStore) { - encryptedJson = Cache.cacheCrypto.get( - store.runtimeType.toString(), - defaultValue: null, - ); - } - - // pull encrypted state from cache - encryptedJson = Cache.cacheMain.get( - store.runtimeType.toString(), - defaultValue: null, - ); - - // attempt to decrypt encrypted state after loaded from RAM - if (encryptedJson != null) { - try { - final decryptedJson = aes.ctr.decrypt( - enc: encryptedJson, - iv: Cache.ivKey, - ); - decodedJson = json.decode(decryptedJson); - } catch (error) { - print('[Hive Serializer DECODE] ${store.runtimeType.toString()}'); - } - } - - // decryption may fail if force closed, attempt with new iv generated before close - if (decodedJson == null) { - try { - // decrypt encrypted state after loaded from RAM - final decryptedJson = aes.ctr.decrypt( - enc: encryptedJson, - iv: Cache.ivKeyNext, - ); - decodedJson = json.decode(decryptedJson); - } catch (error) { - print('[Hive Serializer DECODE] ${store.runtimeType.toString()}'); - } - } - - print( - '[Hive Serializer DECODE] ${store.runtimeType.toString()}', - ); - // this stinks, but dart doesn't allow reflection for factories/contructors - switch (store.runtimeType.toString()) { - case 'AuthStore': - authStore = AuthStore.fromJson(decodedJson); - break; - case 'SyncStore': - syncStore = SyncStore.fromJson(decodedJson); - break; - // case 'CryptoStore': - // cryptoStore = CryptoStore.fromJson(decodedJson); - // break; - case 'MediaStore': - mediaStore = MediaStore.fromJson(decodedJson); - break; - case 'RoomStore': - roomStore = RoomStore.fromJson(decodedJson); - break; - case 'SettingsStore': - settingsStore = SettingsStore.fromJson(decodedJson); - break; - case 'UserStore': - userStore = UserStore.fromJson(decodedJson); - break; - default: - break; - } - - // decode json after decrypted and set to store - } catch (error) { - debugPrint('[Hive Serializer Decode] $error'); - } - }); - - return AppState( - loading: false, - authStore: authStore ?? AuthStore(), - syncStore: syncStore ?? SyncStore(), - cryptoStore: cryptoStore ?? CryptoStore(), - roomStore: roomStore ?? RoomStore(), - userStore: userStore ?? UserStore(), // not cached - mediaStore: mediaStore ?? MediaStore(), - settingsStore: settingsStore ?? SettingsStore(), - ); - } -} diff --git a/lib/store/serializer.dart b/lib/store/serializer.dart new file mode 100644 index 000000000..13de1d59f --- /dev/null +++ b/lib/store/serializer.dart @@ -0,0 +1,241 @@ +// Dart imports: +import 'dart:convert'; +import 'dart:typed_data'; + +// Flutter imports: +import 'package:flutter/foundation.dart'; +import 'package:flutter/material.dart'; + +// Package imports: +import 'package:redux_persist/redux_persist.dart'; +import 'package:steel_crypt/steel_crypt.dart'; +import 'package:syphon/global/algos.dart'; + +// Project imports: +import 'package:syphon/global/libs/hive/index.dart'; +import 'package:syphon/store/crypto/state.dart'; +import 'package:syphon/store/index.dart'; +import 'package:syphon/store/sync/state.dart'; +import 'package:syphon/store/user/state.dart'; +import './auth/state.dart'; +import './media/state.dart'; +import './rooms/state.dart'; +import './settings/state.dart'; + +/** + * Cache Serializer + * + * Handles serialization, encryption, and storage for caching redux stores + */ +class CacheSerializer implements StateSerializer { + @override + Uint8List encode(AppState state) { + final stores = [ + state.authStore, + state.syncStore, + state.cryptoStore, + state.roomStore, + state.mediaStore, + state.settingsStore, + state.userStore, + ]; + + // Queue up a cache saving will wait + // if the previously schedule task has not finished + Future.microtask(() async { + // TODO: re-enable IV rotation + // // create a new IV for the encrypted cache + // Cache.ivKey = createIVKey(); + // // backup the IV in case the app is force closed before caching finishes + // await saveIVKeyNext(Cache.ivKey); + + // run through all redux stores for encryption and encoding + await Future.wait(stores.map((store) async { + try { + Stopwatch stopwatchNew = new Stopwatch()..start(); + + var jsonData; + + // encode the store contents to json + // HACK: unable to pass both listed stores direct to an isolate + final sensitiveStorage = [AuthStore, SyncStore, CryptoStore]; + if (!sensitiveStorage.contains(store.runtimeType)) { + jsonData = await compute(jsonEncode, store); + } else { + jsonData = json.encode(store); + } + + // encrypt the store contents previously converted to json + final encryptedStore = await compute(encryptJsonBackground, { + 'ivKey': Cache.ivKey, + 'cryptKey': Cache.cryptKey, + 'type': store.runtimeType.toString(), + 'json': jsonData, + }); + + // cache the encrypted json representation of the redux store + if (store.runtimeType == RoomStore) { + await Cache.cacheRooms.put( + store.runtimeType.toString(), + encryptedStore, + ); + } + + // cache the encrypted json representation of the redux store + if (store.runtimeType == CryptoStore) { + await Cache.cacheCrypto.put( + store.runtimeType.toString(), + encryptedStore, + ); + } + + // cache the encrypted json representation of the redux store + await Cache.cacheMain.put( + store.runtimeType.toString(), + encryptedStore, + ); + + final endTime = stopwatchNew.elapsed; + print( + '[Hive Serializer ENCODE] ${store.runtimeType.toString().toUpperCase()} $endTime', + ); + } catch (error) { + debugPrint( + '[Hive Serializer ENCODE] ${store.runtimeType.toString().toUpperCase()} $error'); + } + })); + + // TODO: re-enable IV rotation + // // Rotate encryption for the next save + // await saveIVKey(Cache.ivKey); + }); + + // Disregard redux persist storage saving + return null; + } + + AppState decode(Uint8List data) { + final aes = AesCrypt(key: Cache.cryptKey, padding: PaddingAES.pkcs7); + + AuthStore authStore = AuthStore(); + SyncStore syncStore = SyncStore(); + CryptoStore cryptoStore = CryptoStore(); + MediaStore mediaStore = MediaStore(); + RoomStore roomStore = RoomStore(); + SettingsStore settingsStore = SettingsStore(); + UserStore userStore = UserStore(); + + final List stores = [ + authStore, + syncStore, + mediaStore, + roomStore, + cryptoStore, + settingsStore, + userStore, + ]; + + // Decode each store cache synchronously + stores.forEach((store) { + try { + Map decodedJson = {}; + + var encryptedJson; + + if (store.runtimeType == RoomStore) { + encryptedJson = Cache.cacheRooms.get( + store.runtimeType.toString(), + defaultValue: null, + ); + } + + if (store.runtimeType == CryptoStore) { + encryptedJson = Cache.cacheCrypto.get( + store.runtimeType.toString(), + defaultValue: null, + ); + } + + // pull encrypted state from cache + encryptedJson = Cache.cacheMain.get( + store.runtimeType.toString(), + defaultValue: null, + ); + + // attempt to decrypt encrypted state after loaded from RAM + if (encryptedJson != null) { + try { + final decryptedJson = aes.ctr.decrypt( + enc: encryptedJson, + iv: Cache.ivKey, + ); + decodedJson = json.decode(decryptedJson); + } catch (error) { + print('[Hive Serializer DECODE] ${store.runtimeType.toString()}'); + decodedJson = {}; + } + } + + // decryption may fail if force closed, attempt with new iv generated before close + if (decodedJson.isEmpty) { + try { + // decrypt encrypted state after loaded from RAM + final decryptedJson = aes.ctr.decrypt( + enc: encryptedJson, + iv: Cache.ivKeyNext, + ); + decodedJson = json.decode(decryptedJson); + } catch (error) { + print('[Hive Serializer DECODE] ${store.runtimeType.toString()}'); + decodedJson = {}; + } + } + + // if all else fails, just pass back a fresh store to avoid a crash + if (decodedJson.isEmpty) return; + + // this stinks, but dart doesn't allow reflection for factories/contructors + switch (store.runtimeType.toString()) { + case 'AuthStore': + authStore = AuthStore.fromJson(decodedJson); + break; + case 'SyncStore': + syncStore = SyncStore.fromJson(decodedJson); + break; + case 'CryptoStore': + cryptoStore = CryptoStore.fromJson(decodedJson); + break; + case 'MediaStore': + mediaStore = MediaStore.fromJson(decodedJson); + break; + case 'RoomStore': + roomStore = RoomStore.fromJson(decodedJson); + break; + case 'SettingsStore': + settingsStore = SettingsStore.fromJson(decodedJson); + break; + case 'UserStore': + userStore = UserStore.fromJson(decodedJson); + break; + default: + break; + } + + // decode json after decrypted and set to store + } catch (error) { + debugPrint('[Hive Serializer Decode] $error'); + } + }); + + return AppState( + loading: false, + authStore: authStore ?? AuthStore(), + syncStore: syncStore ?? SyncStore(), + cryptoStore: cryptoStore ?? CryptoStore(), + roomStore: roomStore ?? RoomStore(), + userStore: userStore ?? UserStore(), + mediaStore: mediaStore ?? MediaStore(), + settingsStore: settingsStore ?? SettingsStore(), + ); + } +} From 06f59269498b2df4d30b72d6cbf708513d0b7bf3 Mon Sep 17 00:00:00 2001 From: ereio Date: Sun, 25 Oct 2020 10:42:46 -0400 Subject: [PATCH 25/45] refactoring --- lib/global/algos.dart | 32 --- lib/global/cache/index.dart | 232 ++++++++++++++++++ lib/{store => global/cache}/serializer.dart | 133 +++++----- lib/global/cache/threadables.dart | 34 +++ .../{ripper/index.dart => hive/encoder.dart} | 3 +- lib/global/libs/hive/index.dart | 210 ++++------------ lib/main.dart | 44 ++-- lib/store/index.dart | 10 +- lib/store/sync/background/service.dart | 101 ++++---- 9 files changed, 465 insertions(+), 334 deletions(-) create mode 100644 lib/global/cache/index.dart rename lib/{store => global/cache}/serializer.dart (67%) create mode 100644 lib/global/cache/threadables.dart rename lib/global/libs/{ripper/index.dart => hive/encoder.dart} (98%) diff --git a/lib/global/algos.dart b/lib/global/algos.dart index 501be924a..5eb5fa934 100644 --- a/lib/global/algos.dart +++ b/lib/global/algos.dart @@ -2,7 +2,6 @@ import 'dart:convert'; import 'package:flutter/material.dart'; -import 'package:steel_crypt/steel_crypt.dart'; /** * Clock functions in code @@ -29,34 +28,3 @@ void printJson(Map jsonMap) { String prettyEvent = encoder.convert(jsonMap); debugPrint(prettyEvent, wrapWidth: 2048); } - -// TODO: not sure if needed because the decryption of the cache will always be needed synchonously -Future decryptJsonBackground(Map params) async { - String ivKey = params['ivKey']; - String cryptKey = params['cryptKey']; - String json = params['json']; - - final cryptor = AesCrypt(key: cryptKey, padding: PaddingAES.pkcs7); - - final decryptedJson = cryptor.ctr.decrypt(enc: json, iv: ivKey); - - return jsonDecode(decryptedJson); -} - -Future encryptJsonBackground(Map params) async { - String ivKey = params['ivKey']; - String cryptKey = params['cryptKey']; - String json = params['json']; - String type = params['type']; - - Stopwatch stopwatchTwo = new Stopwatch()..start(); - - final cryptor = AesCrypt(key: cryptKey, padding: PaddingAES.pkcs7); - final encryptedJson = cryptor.ctr.encrypt(inp: json, iv: ivKey); - - final stopwatchTwoTime = stopwatchTwo.elapsed; - - print('[encryptJsonBackground] ENCRYPTION AES ${type} $stopwatchTwoTime'); - - return encryptedJson; -} diff --git a/lib/global/cache/index.dart b/lib/global/cache/index.dart new file mode 100644 index 000000000..256d8f3fb --- /dev/null +++ b/lib/global/cache/index.dart @@ -0,0 +1,232 @@ +import 'dart:io'; + +import 'package:flutter/material.dart'; +import 'package:flutter_secure_storage/flutter_secure_storage.dart'; +import 'package:hive/hive.dart'; +import 'package:path_provider/path_provider.dart'; +import 'package:steel_crypt/steel_crypt.dart'; +import 'package:syphon/global/values.dart'; + +class CacheSecure { + // encryption references + static String ivKey; + static String ivKeyNext; + static String cryptKey; + + // cache refrences + static Box cacheMain; + static Box cacheRooms; + static Box cacheCrypto; + static Box cacheBackground; + + // cache storage identifiers + static const cacheKeyMain = '${Values.appNameLabel}-main-cache'; + static const cacheKeyRooms = '${Values.appNameLabel}-room-cache'; + static const cacheKeyCrypto = '${Values.appNameLabel}-crypto-cache'; + static const cacheKeyBackground = '${Values.appNameLabel}-background-cache'; + + // cache key identifiers + static const ivKeyLocation = '${Values.appNameLabel}@ivKey'; + static const ivKeyNextLocation = '${Values.appNameLabel}@ivKeyNext'; + static const cryptKeyLocation = '${Values.appNameLabel}@cryptKey'; + static const encryptionKeyLocation = '${Values.appNameLabel}@publicKey'; + + // background data identifiers + static const roomNames = 'room_names'; + static const syncData = 'sync_data'; + static const protocol = 'protocol'; + static const homeserver = 'homeserver'; + static const accessTokenKey = 'accessToken'; + static const lastSinceKey = 'lastSince'; + static const currentUser = 'currentUser'; +} + +Future initCache() async { + // Init storage location + final String storageLocation = await initStorageLocation(); + + // Init configuration + Hive.init(storageLocation); + + CacheSecure.cacheMain = await unlockMainCache(); + CacheSecure.cacheRooms = await unlockRoomCache(); + CacheSecure.cacheCrypto = await unlockCryptoCache(); + CacheSecure.cacheBackground = await unlockBackgroundCache(); +} + +Future initCacheBackground() async { + try { + // Init storage location + final storageLocation = await getApplicationDocumentsDirectory(); + + // Init hive cache + adapters + Hive.init(storageLocation.path); + + return await Hive.openBox(CacheSecure.cacheKeyBackground); + } catch (error) { + debugPrint('[initCacheBackground] $error'); + return null; + } +} + +// // Closes and saves storage +void closeCache() async { + if (CacheSecure.cacheMain != null && CacheSecure.cacheMain.isOpen) { + CacheSecure.cacheMain.close(); + } + + if (CacheSecure.cacheRooms != null && CacheSecure.cacheRooms.isOpen) { + CacheSecure.cacheRooms.close(); + } + + if (CacheSecure.cacheCrypto != null && CacheSecure.cacheCrypto.isOpen) { + CacheSecure.cacheCrypto.close(); + } + + // shouldn't be open on main thread + if (CacheSecure.cacheBackground != null && + CacheSecure.cacheBackground.isOpen) { + CacheSecure.cacheBackground.close(); + } +} + +Future initStorageLocation() async { + var storageLocation; + + try { + if (Platform.isIOS || Platform.isAndroid) { + storageLocation = await getApplicationDocumentsDirectory(); + return storageLocation.path; + } + + if (Platform.isMacOS) { + storageLocation = await File('cache').create().then( + (value) => value.writeAsString( + '{}', + flush: true, + ), + ); + + return storageLocation.path; + } + + if (Platform.isLinux) { + storageLocation = await getApplicationDocumentsDirectory(); + return storageLocation.path; + } + + debugPrint('[initStorageLocation] no cache support'); + return null; + } catch (error) { + debugPrint('[initStorageLocation] $error'); + return null; + } +} + +String createIVKey() { + return CryptKey().genDart(); +} + +Future saveIVKey(String ivKey) async { + // Check if storage has been created before + return await FlutterSecureStorage() + .write(key: CacheSecure.ivKeyLocation, value: ivKey); +} + +Future saveIVKeyNext(String ivKey) async { + // Check if storage has been created before + return await FlutterSecureStorage() + .write(key: CacheSecure.ivKeyNextLocation, value: ivKey); +} + +Future unlockIVKey() async { + // Check if storage has been created before + final storageEngine = FlutterSecureStorage(); + + final ivKeyStored = await storageEngine.read(key: CacheSecure.ivKeyLocation); + + // Create a encryptionKey if a serialized one is not found + return ivKeyStored == null ? createIVKey() : ivKeyStored; +} + +Future unlockIVKeyNext() async { + // Check if storage has been created before + final storageEngine = FlutterSecureStorage(); + + final ivKeyStored = + await storageEngine.read(key: CacheSecure.ivKeyNextLocation); + + // Create a encryptionKey if a serialized one is not found + return ivKeyStored == null ? createIVKey() : ivKeyStored; +} + +Future unlockCryptKey() async { + final storageEngine = FlutterSecureStorage(); + + // Check if storage has been created before + var cryptKey = await storageEngine.read( + key: CacheSecure.encryptionKeyLocation, + ); + // Create a encryptionKey if a serialized one is not found + if (cryptKey == null) { + cryptKey = CryptKey().genFortuna(); + + await storageEngine.write( + key: CacheSecure.encryptionKeyLocation, + value: cryptKey, + ); + } + + return cryptKey; +} + +Future unlockMainCache() async { + try { + return await Hive.openBox( + CacheSecure.cacheKeyMain, + crashRecovery: true, + compactionStrategy: (entries, deletedEntries) => deletedEntries > 1, + ); + } catch (error) { + debugPrint('[Unlock Main CacheSecure] $error'); + return null; + } +} + +Future unlockRoomCache() async { + try { + return await Hive.openBox( + CacheSecure.cacheKeyRooms, + compactionStrategy: (entries, deletedEntries) => deletedEntries > 1, + ); + } catch (error) { + debugPrint('[Unlock Room CacheSecure] $error'); + return null; + } +} + +Future unlockCryptoCache() async { + try { + return await Hive.openBox( + CacheSecure.cacheKeyCrypto, + crashRecovery: true, + compactionStrategy: (entries, deletedEntries) => deletedEntries > 1, + ); + } catch (error) { + debugPrint('[Unlock Crypto CacheSecure] $error'); + return null; + } +} + +Future unlockBackgroundCache() async { + try { + return await Hive.openBox( + CacheSecure.cacheKeyBackground, + crashRecovery: true, + compactionStrategy: (entries, deletedEntries) => deletedEntries > 1, + ); + } catch (error) { + debugPrint('[Unlock Crypto CacheSecure] $error'); + return null; + } +} diff --git a/lib/store/serializer.dart b/lib/global/cache/serializer.dart similarity index 67% rename from lib/store/serializer.dart rename to lib/global/cache/serializer.dart index 13de1d59f..9e78feb87 100644 --- a/lib/store/serializer.dart +++ b/lib/global/cache/serializer.dart @@ -9,18 +9,18 @@ import 'package:flutter/material.dart'; // Package imports: import 'package:redux_persist/redux_persist.dart'; import 'package:steel_crypt/steel_crypt.dart'; -import 'package:syphon/global/algos.dart'; +import 'package:syphon/global/cache/index.dart'; +import 'package:syphon/global/cache/threadables.dart'; // Project imports: -import 'package:syphon/global/libs/hive/index.dart'; import 'package:syphon/store/crypto/state.dart'; import 'package:syphon/store/index.dart'; import 'package:syphon/store/sync/state.dart'; import 'package:syphon/store/user/state.dart'; -import './auth/state.dart'; -import './media/state.dart'; -import './rooms/state.dart'; -import './settings/state.dart'; +import 'package:syphon/store/auth/state.dart'; +import 'package:syphon/store/media/state.dart'; +import 'package:syphon/store/rooms/state.dart'; +import 'package:syphon/store/settings/state.dart'; /** * Cache Serializer @@ -67,41 +67,43 @@ class CacheSerializer implements StateSerializer { // encrypt the store contents previously converted to json final encryptedStore = await compute(encryptJsonBackground, { - 'ivKey': Cache.ivKey, - 'cryptKey': Cache.cryptKey, + 'ivKey': CacheSecure.ivKey, + 'cryptKey': CacheSecure.cryptKey, 'type': store.runtimeType.toString(), 'json': jsonData, }); - // cache the encrypted json representation of the redux store - if (store.runtimeType == RoomStore) { - await Cache.cacheRooms.put( - store.runtimeType.toString(), - encryptedStore, - ); + // cache redux store to main cache storage + // caching room and crypto stores with additional hive level error handling + switch (store.runtimeType) { + case RoomStore: + await CacheSecure.cacheRooms.put( + store.runtimeType.toString(), + encryptedStore, + ); + break; + case CryptoStore: + await CacheSecure.cacheCrypto.put( + store.runtimeType.toString(), + encryptedStore, + ); + break; + default: + await CacheSecure.cacheMain.put( + store.runtimeType.toString(), + encryptedStore, + ); + break; } - // cache the encrypted json representation of the redux store - if (store.runtimeType == CryptoStore) { - await Cache.cacheCrypto.put( - store.runtimeType.toString(), - encryptedStore, - ); - } - - // cache the encrypted json representation of the redux store - await Cache.cacheMain.put( - store.runtimeType.toString(), - encryptedStore, - ); - final endTime = stopwatchNew.elapsed; print( - '[Hive Serializer ENCODE] ${store.runtimeType.toString().toUpperCase()} $endTime', + '[Hive Serializer Encode] ${store.runtimeType.toString()} $endTime', ); } catch (error) { debugPrint( - '[Hive Serializer ENCODE] ${store.runtimeType.toString().toUpperCase()} $error'); + '[Hive Serializer Encode] ${store.runtimeType.toString()} $error', + ); } })); @@ -115,7 +117,7 @@ class CacheSerializer implements StateSerializer { } AppState decode(Uint8List data) { - final aes = AesCrypt(key: Cache.cryptKey, padding: PaddingAES.pkcs7); + final aes = AesCrypt(key: CacheSecure.cryptKey, padding: PaddingAES.pkcs7); AuthStore authStore = AuthStore(); SyncStore syncStore = SyncStore(); @@ -135,43 +137,48 @@ class CacheSerializer implements StateSerializer { userStore, ]; - // Decode each store cache synchronously + // decode each store cache synchronously stores.forEach((store) { try { Map decodedJson = {}; var encryptedJson; - if (store.runtimeType == RoomStore) { - encryptedJson = Cache.cacheRooms.get( - store.runtimeType.toString(), - defaultValue: null, - ); - } - - if (store.runtimeType == CryptoStore) { - encryptedJson = Cache.cacheCrypto.get( - store.runtimeType.toString(), - defaultValue: null, - ); + // fetch from main cache storage + // fetching room and crypto store has additional hive level error handling + switch (store.runtimeType) { + case RoomStore: + encryptedJson = CacheSecure.cacheRooms.get( + store.runtimeType.toString(), + defaultValue: null, + ); + break; + case CryptoStore: + encryptedJson = CacheSecure.cacheCrypto.get( + store.runtimeType.toString(), + defaultValue: null, + ); + break; + default: + encryptedJson = CacheSecure.cacheMain.get( + store.runtimeType.toString(), + defaultValue: null, + ); + break; } - // pull encrypted state from cache - encryptedJson = Cache.cacheMain.get( - store.runtimeType.toString(), - defaultValue: null, - ); - // attempt to decrypt encrypted state after loaded from RAM if (encryptedJson != null) { try { final decryptedJson = aes.ctr.decrypt( enc: encryptedJson, - iv: Cache.ivKey, + iv: CacheSecure.ivKey, ); decodedJson = json.decode(decryptedJson); } catch (error) { - print('[Hive Serializer DECODE] ${store.runtimeType.toString()}'); + print( + '[Hive Serializer Decode] ${store.runtimeType.toString()} ${error}', + ); decodedJson = {}; } } @@ -182,11 +189,13 @@ class CacheSerializer implements StateSerializer { // decrypt encrypted state after loaded from RAM final decryptedJson = aes.ctr.decrypt( enc: encryptedJson, - iv: Cache.ivKeyNext, + iv: CacheSecure.ivKeyNext, ); decodedJson = json.decode(decryptedJson); } catch (error) { - print('[Hive Serializer DECODE] ${store.runtimeType.toString()}'); + print( + '[Hive Serializer Decode] ${store.runtimeType.toString()} ${error}', + ); decodedJson = {}; } } @@ -195,26 +204,26 @@ class CacheSerializer implements StateSerializer { if (decodedJson.isEmpty) return; // this stinks, but dart doesn't allow reflection for factories/contructors - switch (store.runtimeType.toString()) { - case 'AuthStore': + switch (store.runtimeType) { + case AuthStore: authStore = AuthStore.fromJson(decodedJson); break; - case 'SyncStore': + case SyncStore: syncStore = SyncStore.fromJson(decodedJson); break; - case 'CryptoStore': + case CryptoStore: cryptoStore = CryptoStore.fromJson(decodedJson); break; - case 'MediaStore': + case MediaStore: mediaStore = MediaStore.fromJson(decodedJson); break; - case 'RoomStore': + case RoomStore: roomStore = RoomStore.fromJson(decodedJson); break; - case 'SettingsStore': + case SettingsStore: settingsStore = SettingsStore.fromJson(decodedJson); break; - case 'UserStore': + case UserStore: userStore = UserStore.fromJson(decodedJson); break; default: diff --git a/lib/global/cache/threadables.dart b/lib/global/cache/threadables.dart new file mode 100644 index 000000000..271bdd828 --- /dev/null +++ b/lib/global/cache/threadables.dart @@ -0,0 +1,34 @@ +import 'dart:convert'; + +import 'package:steel_crypt/steel_crypt.dart'; + +// NOTE: deserialization is required synchronous by redux_persist :/ +Future decryptJsonBackground(Map params) async { + String ivKey = params['ivKey']; + String cryptKey = params['cryptKey']; + String json = params['json']; + + final cryptor = AesCrypt(key: cryptKey, padding: PaddingAES.pkcs7); + + final decryptedJson = cryptor.ctr.decrypt(enc: json, iv: ivKey); + + return jsonDecode(decryptedJson); +} + +Future encryptJsonBackground(Map params) async { + String ivKey = params['ivKey']; + String cryptKey = params['cryptKey']; + String json = params['json']; + String type = params['type']; + + Stopwatch stopwatchTwo = new Stopwatch()..start(); + + final cryptor = AesCrypt(key: cryptKey, padding: PaddingAES.pkcs7); + final encryptedJson = cryptor.ctr.encrypt(inp: json, iv: ivKey); + + final stopwatchTwoTime = stopwatchTwo.elapsed; + + print('[encryptJsonBackground] ${type} $stopwatchTwoTime'); + + return encryptedJson; +} diff --git a/lib/global/libs/ripper/index.dart b/lib/global/libs/hive/encoder.dart similarity index 98% rename from lib/global/libs/ripper/index.dart rename to lib/global/libs/hive/encoder.dart index 8b1b3e47a..49389b525 100644 --- a/lib/global/libs/ripper/index.dart +++ b/lib/global/libs/hive/encoder.dart @@ -20,7 +20,7 @@ import 'package:syphon/store/user/state.dart'; * * One way convertion of the Hive cache to a manually encrypted / encoded state cache */ -class Ripper { +class LegacyEncoder { static Future encodeHive(AppState state) async { try { Cache.state.put( @@ -80,7 +80,6 @@ class Ripper { MediaStore mediaStoreConverted = MediaStore(); RoomStore roomStoreConverted = RoomStore(); SettingsStore settingsStoreConverted = SettingsStore(); - UserStore userStore = UserStore(); try { authStoreConverted = Cache.state.get( diff --git a/lib/global/libs/hive/index.dart b/lib/global/libs/hive/index.dart index 7e0d76ea7..4842eb963 100644 --- a/lib/global/libs/hive/index.dart +++ b/lib/global/libs/hive/index.dart @@ -1,5 +1,4 @@ // Dart imports: -import 'dart:convert'; import 'dart:io'; // Flutter imports: @@ -10,7 +9,6 @@ import 'package:convert/convert.dart'; import 'package:flutter_secure_storage/flutter_secure_storage.dart'; import 'package:hive/hive.dart'; import 'package:path_provider/path_provider.dart'; -import 'package:steel_crypt/steel_crypt.dart'; // Project imports: import 'package:syphon/global/themes.dart'; @@ -30,56 +28,20 @@ import 'package:syphon/store/settings/state.dart'; import 'package:syphon/store/sync/state.dart'; import 'package:syphon/store/user/model.dart'; -/** - * Global Cache References - */ +// Global cache class Cache { - // encryption references - static String ivKey; - static String ivKeyNext; - static String cryptKey; - - // cache refrences - static Box cacheMain; - static Box cacheRooms; - static Box cacheCrypto; - static Box cacheSync; - - // cache storage identifiers - static const mainCacheKey = '${Values.appNameLabel}-main-cache'; - static const roomCacheKey = '${Values.appNameLabel}-room-cache'; - static const cryptoCacheKey = '${Values.appNameLabel}-crypto-cache'; - - // cache key identifiers - static const ivKeyLocation = '${Values.appNameLabel}@ivKey'; - static const ivKeyNextLocation = '${Values.appNameLabel}@ivKeyNext'; - static const cryptKeyLocation = '${Values.appNameLabel}@cryptKey'; - static const encryptionKeyLocation = '${Values.appNameLabel}@publicKey'; - - // background data identifiers - static const roomNames = 'room_names'; - static const syncData = 'sync_data'; - static const protocol = 'protocol'; - static const homeserver = 'homeserver'; - static const accessTokenKey = 'accessToken'; - static const lastSinceKey = 'lastSince'; - static const currentUser = 'currentUser'; - - // DEPRRECATE - after version 0.1.4 static Box state; - static Box stateUnsafe; static Box stateRooms; static Box stateMedia; static LazyBox sync; static const group_id = '${Values.appNameLabel}'; + static const encryptionKeyLocation = '${Values.appNameLabel}@publicKey'; - // DEPRRECATE - ENCRYPTED - HIVE DEPENDENT static const syncKey = '${Values.appNameLabel}_sync'; static const stateKey = '${Values.appNameLabel}_cache'; static const stateRoomKey = '${Values.appNameLabel}_cache_2'; - // DEPRRECATE - UNENCRYPTED - HIVE DEPENDENT static const syncKeyUNSAFE = '${Values.appNameLabel}_sync_unsafe'; static const stateKeyUNSAFE = '${Values.appNameLabel}_cache_unsafe'; static const stateKeyRoomsUNSAFE = @@ -87,10 +49,23 @@ class Cache { static const backgroundKeyUNSAFE = '${Values.appNameLabel}_background_cache_unsafe_alt'; + + static const roomNames = 'room_names'; + static const syncData = 'sync_data'; + static const protocol = 'protocol'; + static const homeserver = 'homeserver'; + static const accessTokenKey = 'accessToken'; + static const lastSinceKey = 'lastSince'; + static const currentUser = 'currentUser'; } /** - * openHiveState UNSAFE + * TODO: Whole cache with this configuration will be deprecated after 0.1.4 + */ + +/** + * + * Init Hive * * For testing purposes only - should be encrypting hive */ @@ -98,8 +73,22 @@ Future initHive() async { // Init storage location final storageLocation = await initStorageLocation(); + // Init hive cache + // Hive.init(storageLocation); + // Init configuration - await initHiveConfiguration(storageLocation); + await initHiveConfiguration(); + + if (Platform.isAndroid || Platform.isIOS) { + Cache.sync = await openHiveSync(); + Cache.state = await openHiveState(); + Cache.stateRooms = await openHiveStateRooms(); + } + + if (Platform.isLinux || Platform.isWindows || Platform.isLinux) { + Cache.state = await openHiveStateUnsafe(); + Cache.stateRooms = await openHiveStateRoomsUnsafe(); + } } Future initStorageLocation() async { @@ -135,9 +124,8 @@ Future initStorageLocation() async { } } -Future initHiveConfiguration(String storageLocationPath) async { - // Init hive cache - Hive.init(storageLocationPath); +Future initHiveConfiguration() async { +// Future initHiveConfiguration(String storageLocationPath) async { // Init Custom Models Hive.registerAdapter(ThemeTypeAdapter()); @@ -161,107 +149,10 @@ Future initHiveConfiguration(String storageLocationPath) async { Hive.registerAdapter(SettingsStoreAdapter()); } -Future unlockCryptKey() async { - final storageEngine = FlutterSecureStorage(); - - // Check if storage has been created before - var cryptKey = await storageEngine.read( - key: Cache.encryptionKeyLocation, - ); - // Create a encryptionKey if a serialized one is not found - if (cryptKey == null) { - cryptKey = CryptKey().genFortuna(); - - await storageEngine.write( - key: Cache.encryptionKeyLocation, - value: cryptKey, - ); - } - - return cryptKey; -} - -String createIVKey() => CryptKey().genDart(); - -Future saveIVKey(String ivKey) async { - // Check if storage has been created before - return await FlutterSecureStorage() - .write(key: Cache.ivKeyLocation, value: ivKey); -} - -Future saveIVKeyNext(String ivKey) async { - // Check if storage has been created before - return await FlutterSecureStorage() - .write(key: Cache.ivKeyNextLocation, value: ivKey); -} - -Future unlockIVKey() async { - // Check if storage has been created before - final storageEngine = FlutterSecureStorage(); - - final ivKeyStored = await storageEngine.read(key: Cache.ivKeyLocation); - - // Create a encryptionKey if a serialized one is not found - return ivKeyStored == null ? createIVKey() : ivKeyStored; -} - -Future unlockIVKeyNext() async { - // Check if storage has been created before - final storageEngine = FlutterSecureStorage(); - - final ivKeyStored = await storageEngine.read(key: Cache.ivKeyNextLocation); - - // Create a encryptionKey if a serialized one is not found - return ivKeyStored == null ? createIVKey() : ivKeyStored; -} - -Future unlockMainCache() async { - try { - return await Hive.openBox( - Cache.mainCacheKey, - crashRecovery: true, - compactionStrategy: (entries, deletedEntries) => deletedEntries > 1, - ); - } catch (error) { - debugPrint('[Unlock Main Cache] $error'); - return null; - } -} - -Future unlockRoomCache() async { - try { - return await Hive.openBox( - Cache.roomCacheKey, - compactionStrategy: (entries, deletedEntries) => deletedEntries > 1, - ); - } catch (error) { - debugPrint('[Unlock Room Cache] $error'); - return null; - } -} - -Future unlockCryptoCache() async { - try { - return await Hive.openBox( - Cache.cryptoCacheKey, - crashRecovery: true, - compactionStrategy: (entries, deletedEntries) => deletedEntries > 1, - ); - } catch (error) { - debugPrint('[Unlock Crypto Cache] $error'); - return null; - } -} - -/** - * DEPRERCATED - * - * original secure key reference for Hive - */ Future> unlockEncryptionKey() async { + // Check if storage has been created before final storageEngine = FlutterSecureStorage(); - // Check if storage has been created before var encryptionKey = await storageEngine.read( key: Cache.encryptionKeyLocation, ); @@ -296,17 +187,22 @@ Future openHiveStateRoomsUnsafe() async { * For testing purposes only - should be encrypting hive */ Future openHiveStateUnsafe() async { - try { - return await Hive.openBox( - Cache.stateKeyRoomsUNSAFE, - compactionStrategy: (entries, deletedEntries) => deletedEntries > 2, - ); - } catch (error) { - debugPrint('[openHiveStateUnsafe] $error'); - return await Hive.openBox( - Cache.stateKeyUNSAFE, - ); - } + return await Hive.openBox( + Cache.stateKeyRoomsUNSAFE, + compactionStrategy: (entries, deletedEntries) => deletedEntries > 2, + ); +} + +/** + * openHiveState UNSAFE + * + * For testing purposes only - should be encrypting hive + */ +Future openHiveSyncUnsafe() async { + return await Hive.openLazyBox( + Cache.syncKeyUNSAFE, + compactionStrategy: (entries, deletedEntries) => deletedEntries > 2, + ); } /** @@ -347,7 +243,7 @@ Future openHiveState() async { compactionStrategy: (entries, deletedEntries) => deletedEntries > 1, ); } catch (error) { - debugPrint('[openHiveState] $error'); + debugPrint('[openHiveState] open failure: $error'); return await Hive.openBox( Cache.stateKeyUNSAFE, ); @@ -370,7 +266,7 @@ Future openHiveStateRooms() async { compactionStrategy: (entries, deletedEntries) => deletedEntries > 1, ); } catch (error) { - debugPrint('[openHiveStateRooms] open failure: $error'); + debugPrint('[openHiveState] open failure: $error'); return await Hive.openBox( Cache.stateKeyUNSAFE, ); @@ -393,7 +289,7 @@ Future openHiveSync() async { compactionStrategy: (entries, deletedEntries) => deletedEntries > 1, ); } catch (error) { - debugPrint('[openHiveSync] failure $error'); + debugPrint('[openHiveState] failure $error'); return await Hive.openLazyBox( Cache.syncKeyUNSAFE, ); diff --git a/lib/main.dart b/lib/main.dart index 0f29d5c4c..cda3d9c2d 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -12,6 +12,7 @@ import 'package:flutter/scheduler.dart'; import 'package:flutter_dotenv/flutter_dotenv.dart'; import 'package:flutter_redux/flutter_redux.dart'; import 'package:redux/redux.dart'; +import 'package:syphon/global/cache/index.dart'; import 'package:syphon/global/formatters.dart'; // Project imports: @@ -36,51 +37,39 @@ void _enablePlatformOverrideForDesktop() { void main() async { WidgetsFlutterBinding(); WidgetsFlutterBinding.ensureInitialized(); + + // load correct environment configurations await DotEnv().load(kReleaseMode ? '.env.release' : '.env.debug'); - // disable debugPrint when running in release mode + // disable debugPrint when in release mode if (kReleaseMode) { debugPrint = (String message, {int wrapWidth}) {}; } + // init platform overrides for compatability with dart libs _enablePlatformOverrideForDesktop(); - // init cold cache (mobile only) - await initHive(); - - if (Platform.isAndroid || Platform.isIOS) { - // TODO: deprecate after conversion - Cache.sync = await openHiveSync(); - Cache.state = await openHiveState(); - Cache.stateRooms = await openHiveStateRooms(); - Cache.stateUnsafe = await openHiveStateUnsafe(); - } - - if (Platform.isLinux || Platform.isWindows || Platform.isLinux) { - Cache.state = await openHiveStateUnsafe(); - Cache.stateRooms = await openHiveStateRoomsUnsafe(); - Cache.stateUnsafe = await openHiveStateUnsafe(); + // init window mangment for desktop builds + if (Platform.isMacOS) { + // await WindowUtils.setSize(Size(720, 720)); } - // NOTE: new state cache containers - compat with any plat - Cache.cacheMain = await unlockMainCache(); - Cache.cacheRooms = await unlockRoomCache(); - Cache.cacheCrypto = await unlockCryptoCache(); - + // init background sync for Android only if (Platform.isAndroid) { final backgroundSyncStatus = await BackgroundSync.init(); debugPrint('[main] background service started $backgroundSyncStatus'); } - // * DESKTOP ONLY - if (Platform.isMacOS) { - // await WindowUtils.setSize(Size(720, 720)); - } + // init cold cache (mobile only) + await initCache(); + + // TODO: remove after 0.1.4 + await initHive(); - // init state cache (hot) + // init hot cache final store = await initStore(); - // the app + // start! runApp(Syphon(store: store)); } @@ -209,6 +198,7 @@ class SyphonState extends State with WidgetsBindingObserver { @override void deactivate() { closeStorage(); + closeCache(); WidgetsBinding.instance.removeObserver(this); store.dispatch(stopAuthObserver()); store.dispatch(stopAlertsObserver()); diff --git a/lib/store/index.dart b/lib/store/index.dart index 41a120a07..60bad5650 100644 --- a/lib/store/index.dart +++ b/lib/store/index.dart @@ -7,15 +7,15 @@ import 'package:equatable/equatable.dart'; import 'package:redux/redux.dart'; import 'package:redux_persist/redux_persist.dart'; import 'package:redux_thunk/redux_thunk.dart'; +import 'package:syphon/global/cache/index.dart'; // Project imports: -import 'package:syphon/global/libs/hive/index.dart'; import 'package:syphon/store/alerts/model.dart'; import 'package:syphon/store/auth/reducer.dart'; import 'package:syphon/store/crypto/reducer.dart'; import 'package:syphon/store/crypto/state.dart'; import 'package:syphon/store/media/reducer.dart'; -import 'package:syphon/store/serializer.dart'; +import 'package:syphon/global/cache/serializer.dart'; import 'package:syphon/store/sync/actions.dart'; import 'package:syphon/store/sync/reducer.dart'; import 'package:syphon/store/sync/state.dart'; @@ -115,9 +115,9 @@ Future initStore() async { ); // Configure cache encryption/decryption instance - Cache.ivKey = await unlockIVKey(); - Cache.ivKeyNext = await unlockIVKeyNext(); - Cache.cryptKey = await unlockCryptKey(); + CacheSecure.ivKey = await unlockIVKey(); + CacheSecure.ivKeyNext = await unlockIVKeyNext(); + CacheSecure.cryptKey = await unlockCryptKey(); // Finally load persisted store var initialState; diff --git a/lib/store/sync/background/service.dart b/lib/store/sync/background/service.dart index d7597e657..0e85d248f 100644 --- a/lib/store/sync/background/service.dart +++ b/lib/store/sync/background/service.dart @@ -8,6 +8,7 @@ import 'package:flutter/material.dart'; // Package imports: import 'package:android_alarm_manager/android_alarm_manager.dart'; +import 'package:syphon/global/cache/index.dart'; // Project imports: import 'package:syphon/global/libs/hive/index.dart'; @@ -24,7 +25,6 @@ import 'package:path_provider/path_provider.dart'; import 'package:syphon/global/libs/matrix/index.dart'; import 'package:syphon/global/notifications.dart'; import 'package:syphon/store/rooms/room/model.dart'; -import 'package:syphon/store/sync/state.dart'; import 'package:syphon/store/user/selectors.dart'; /** @@ -88,6 +88,57 @@ class BackgroundSync { } } +/** + * Background Sync Job (Android Only) + * + * Fetches data from matrix in background and displays + * notifications without needing google play services + * + * NOTE: https://github.com/flutter/flutter/issues/32164 + */ +void notificationSyncIsolate() async { + try { + // Init storage location + var storageLocation; + try { + storageLocation = await getApplicationDocumentsDirectory(); + } catch (error) { + print('[notificationSyncIsolate] storage location failure - $error'); + } + + // init cache in background mode + // initCacheBackground(); + + // Init hive cache + adapters + Hive.init(storageLocation.path); + Box backgroundCache = await Hive.openBox(Cache.backgroundKeyUNSAFE); + + // Init notifiations for background service and new messages/events + FlutterLocalNotificationsPlugin pluginInstance = await initNotifications(); + + showBackgroundServiceNotification( + notificationId: BackgroundSync.service_id, + pluginInstance: pluginInstance, + ); + + final cutoff = DateTime.now().add( + Duration(seconds: BackgroundSync.serviceTimeout), + ); + + while (DateTime.now().isBefore(cutoff)) { + await Future.delayed(Duration(seconds: 2)); + print('[notificationSyncIsolate] syncing'); + await syncLoop( + cache: backgroundCache, + pluginInstance: pluginInstance, + ); + print('[notificationSyncIsolate] sync completed - waiting'); + } + } catch (error) { + print('[notificationSyncIsolate] init failed $error'); + } +} + /** * Save Full Sync */ @@ -180,51 +231,3 @@ FutureOr syncLoop({ print('[notificationSyncIsolate] sync failed $error'); } } - -/** - * Background Sync Job (Android Only) - * - * Fetches data from matrix in background and displays - * notifications without needing google play services - * - * NOTE: https://github.com/flutter/flutter/issues/32164 - */ -void notificationSyncIsolate() async { - try { - // Init storage location - var storageLocation; - try { - storageLocation = await getApplicationDocumentsDirectory(); - } catch (error) { - print('[notificationSyncIsolate] storage location failure - $error'); - } - - // Init hive cache + adapters - Hive.init(storageLocation.path); - Box backgroundCache = await Hive.openBox(Cache.backgroundKeyUNSAFE); - - // Init notifiations for background service and new messages/events - FlutterLocalNotificationsPlugin pluginInstance = await initNotifications(); - - showBackgroundServiceNotification( - notificationId: BackgroundSync.service_id, - pluginInstance: pluginInstance, - ); - - final cutoff = DateTime.now().add( - Duration(seconds: BackgroundSync.serviceTimeout), - ); - - while (DateTime.now().isBefore(cutoff)) { - await Future.delayed(Duration(seconds: 2)); - print('[notificationSyncIsolate] syncing'); - await syncLoop( - cache: backgroundCache, - pluginInstance: pluginInstance, - ); - print('[notificationSyncIsolate] sync completed - waiting'); - } - } catch (error) { - print('[notificationSyncIsolate] init failed $error'); - } -} From e8229d935d2150090eafeec6d5a4440ac5405b82 Mon Sep 17 00:00:00 2001 From: ereio Date: Sun, 25 Oct 2020 11:05:30 -0400 Subject: [PATCH 26/45] refactoring - attempting flutter secure storage access off main thread --- lib/global/cache/index.dart | 2 +- lib/global/cache/serializer.dart | 17 +++++++++-------- lib/global/cache/threadables.dart | 31 ++++++++++++++++++++++++++++--- lib/main.dart | 17 +++++------------ 4 files changed, 43 insertions(+), 24 deletions(-) diff --git a/lib/global/cache/index.dart b/lib/global/cache/index.dart index 256d8f3fb..892f15b72 100644 --- a/lib/global/cache/index.dart +++ b/lib/global/cache/index.dart @@ -8,7 +8,7 @@ import 'package:steel_crypt/steel_crypt.dart'; import 'package:syphon/global/values.dart'; class CacheSecure { - // encryption references + // encryption references (in memory only) static String ivKey; static String ivKeyNext; static String cryptKey; diff --git a/lib/global/cache/serializer.dart b/lib/global/cache/serializer.dart index 9e78feb87..2fe625b91 100644 --- a/lib/global/cache/serializer.dart +++ b/lib/global/cache/serializer.dart @@ -54,23 +54,24 @@ class CacheSerializer implements StateSerializer { try { Stopwatch stopwatchNew = new Stopwatch()..start(); - var jsonData; + var jsonEncoded; + var jsonEncrypted; // encode the store contents to json // HACK: unable to pass both listed stores direct to an isolate final sensitiveStorage = [AuthStore, SyncStore, CryptoStore]; if (!sensitiveStorage.contains(store.runtimeType)) { - jsonData = await compute(jsonEncode, store); + jsonEncoded = await compute(jsonEncode, store); } else { - jsonData = json.encode(store); + jsonEncoded = json.encode(store); } // encrypt the store contents previously converted to json - final encryptedStore = await compute(encryptJsonBackground, { + jsonEncrypted = await compute(encryptJsonBackground, { 'ivKey': CacheSecure.ivKey, 'cryptKey': CacheSecure.cryptKey, 'type': store.runtimeType.toString(), - 'json': jsonData, + 'json': jsonEncoded, }); // cache redux store to main cache storage @@ -79,19 +80,19 @@ class CacheSerializer implements StateSerializer { case RoomStore: await CacheSecure.cacheRooms.put( store.runtimeType.toString(), - encryptedStore, + jsonEncrypted, ); break; case CryptoStore: await CacheSecure.cacheCrypto.put( store.runtimeType.toString(), - encryptedStore, + jsonEncrypted, ); break; default: await CacheSecure.cacheMain.put( store.runtimeType.toString(), - encryptedStore, + jsonEncrypted, ); break; } diff --git a/lib/global/cache/threadables.dart b/lib/global/cache/threadables.dart index 271bdd828..8ad03570d 100644 --- a/lib/global/cache/threadables.dart +++ b/lib/global/cache/threadables.dart @@ -1,6 +1,7 @@ import 'dart:convert'; import 'package:steel_crypt/steel_crypt.dart'; +import 'package:syphon/global/cache/index.dart'; // NOTE: deserialization is required synchronous by redux_persist :/ Future decryptJsonBackground(Map params) async { @@ -21,14 +22,38 @@ Future encryptJsonBackground(Map params) async { String json = params['json']; String type = params['type']; - Stopwatch stopwatchTwo = new Stopwatch()..start(); + Stopwatch stopwatch = new Stopwatch()..start(); final cryptor = AesCrypt(key: cryptKey, padding: PaddingAES.pkcs7); final encryptedJson = cryptor.ctr.encrypt(inp: json, iv: ivKey); - final stopwatchTwoTime = stopwatchTwo.elapsed; + final stopwatchTime = stopwatch.elapsed; - print('[encryptJsonBackground] ${type} $stopwatchTwoTime'); + print('[encryptJsonBackground] ${type} $stopwatchTime'); return encryptedJson; } + +// responsibile for json serialization and encryption +Future serializeJsonBackground(Object store) async { + try { + Stopwatch stopwatch = new Stopwatch()..start(); + + final ivKey = await unlockIVKey(); + final cryptKey = await unlockCryptKey(); + final jsonEncoded = jsonEncode(store); + + final cryptor = AesCrypt(key: cryptKey, padding: PaddingAES.pkcs7); + final jsonEncrypted = cryptor.ctr.encrypt(inp: jsonEncoded, iv: ivKey); + + print( + '[serializeJsonBackground] ${store.runtimeType.toString()} ${stopwatch.elapsed}', + ); + return jsonEncrypted; + } catch (error) { + print( + '[serializeJsonBackground] ${store.runtimeType.toString()} ${error}', + ); + return null; + } +} diff --git a/lib/main.dart b/lib/main.dart index cda3d9c2d..58a4f57cb 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -28,12 +28,6 @@ import 'package:syphon/views/home/index.dart'; import 'package:syphon/views/intro/index.dart'; import 'package:syphon/views/navigation.dart'; -void _enablePlatformOverrideForDesktop() { - if (!kIsWeb && (Platform.isMacOS || Platform.isWindows || Platform.isLinux)) { - debugDefaultTargetPlatformOverride = TargetPlatform.fuchsia; - } -} - void main() async { WidgetsFlutterBinding(); WidgetsFlutterBinding.ensureInitialized(); @@ -47,7 +41,9 @@ void main() async { } // init platform overrides for compatability with dart libs - _enablePlatformOverrideForDesktop(); + if (!kIsWeb && (Platform.isMacOS || Platform.isWindows || Platform.isLinux)) { + debugDefaultTargetPlatformOverride = TargetPlatform.fuchsia; + } // init window mangment for desktop builds if (Platform.isMacOS) { @@ -66,11 +62,8 @@ void main() async { // TODO: remove after 0.1.4 await initHive(); - // init hot cache - final store = await initStore(); - - // start! - runApp(Syphon(store: store)); + // init hot cache and start + runApp(Syphon(store: await initStore())); } class Syphon extends StatefulWidget { From 78c9790eb6e8eed3f1917de045353a4da0aaeedc Mon Sep 17 00:00:00 2001 From: ereio Date: Sun, 25 Oct 2020 15:43:09 -0400 Subject: [PATCH 27/45] cache working in isolates with rotating IV for ctr mode --- ios/Podfile.lock | 6 ++++++ lib/global/cache/index.dart | 4 +++- lib/global/cache/serializer.dart | 22 ++++++++++++++++++---- lib/global/cache/threadables.dart | 21 ++++++++++++++++++--- pubspec.yaml | 2 ++ 5 files changed, 47 insertions(+), 8 deletions(-) diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 03f677c16..1e9bb7f67 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -39,6 +39,8 @@ PODS: - Flutter - FLAnimatedImage (1.0.12) - Flutter (1.0.0) + - flutter_isolate (0.0.1): + - Flutter - flutter_local_notifications (0.0.1): - Flutter - flutter_plugin_android_lifecycle (0.0.1): @@ -90,6 +92,7 @@ DEPENDENCIES: - device_info (from `.symlinks/plugins/device_info/ios`) - file_picker (from `.symlinks/plugins/file_picker/ios`) - Flutter (from `Flutter`) + - flutter_isolate (from `.symlinks/plugins/flutter_isolate/ios`) - flutter_local_notifications (from `.symlinks/plugins/flutter_local_notifications/ios`) - flutter_plugin_android_lifecycle (from `.symlinks/plugins/flutter_plugin_android_lifecycle/ios`) - flutter_secure_storage (from `.symlinks/plugins/flutter_secure_storage/ios`) @@ -127,6 +130,8 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/file_picker/ios" Flutter: :path: Flutter + flutter_isolate: + :path: ".symlinks/plugins/flutter_isolate/ios" flutter_local_notifications: :path: ".symlinks/plugins/flutter_local_notifications/ios" flutter_plugin_android_lifecycle: @@ -170,6 +175,7 @@ SPEC CHECKSUMS: file_picker: 3e6c3790de664ccf9b882732d9db5eaf6b8d4eb1 FLAnimatedImage: 4a0b56255d9b05f18b6dd7ee06871be5d3b89e31 Flutter: 0e3d915762c693b495b44d77113d4970485de6ec + flutter_isolate: 0edf5081826d071adf21759d1eb10ff5c24503b5 flutter_local_notifications: 9e4738ce2471c5af910d961a6b7eadcf57c50186 flutter_plugin_android_lifecycle: dc0b544e129eebb77a6bfb1239d4d1c673a60a35 flutter_secure_storage: 7953c38a04c3fdbb00571bcd87d8e3b5ceb9daec diff --git a/lib/global/cache/index.dart b/lib/global/cache/index.dart index 892f15b72..43ca054c2 100644 --- a/lib/global/cache/index.dart +++ b/lib/global/cache/index.dart @@ -29,7 +29,8 @@ class CacheSecure { static const ivKeyLocation = '${Values.appNameLabel}@ivKey'; static const ivKeyNextLocation = '${Values.appNameLabel}@ivKeyNext'; static const cryptKeyLocation = '${Values.appNameLabel}@cryptKey'; - static const encryptionKeyLocation = '${Values.appNameLabel}@publicKey'; + static const encryptionKeyLocation = + '${Values.appNameLabel}@publicKey'; // TODO: remove // background data identifiers static const roomNames = 'room_names'; @@ -197,6 +198,7 @@ Future unlockRoomCache() async { try { return await Hive.openBox( CacheSecure.cacheKeyRooms, + crashRecovery: true, compactionStrategy: (entries, deletedEntries) => deletedEntries > 1, ); } catch (error) { diff --git a/lib/global/cache/serializer.dart b/lib/global/cache/serializer.dart index 2fe625b91..8a0363608 100644 --- a/lib/global/cache/serializer.dart +++ b/lib/global/cache/serializer.dart @@ -5,6 +5,7 @@ import 'dart:typed_data'; // Flutter imports: import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; +import 'package:isolate_handler/isolate_handler.dart'; // Package imports: import 'package:redux_persist/redux_persist.dart'; @@ -45,9 +46,12 @@ class CacheSerializer implements StateSerializer { Future.microtask(() async { // TODO: re-enable IV rotation // // create a new IV for the encrypted cache - // Cache.ivKey = createIVKey(); + CacheSecure.ivKey = createIVKey(); // // backup the IV in case the app is force closed before caching finishes - // await saveIVKeyNext(Cache.ivKey); + await saveIVKeyNext(CacheSecure.ivKey); + + CacheSecure.ivKeyNext = await unlockIVKeyNext(); + debugPrint('[New Iv Key Next] ${CacheSecure.ivKeyNext}'); // run through all redux stores for encryption and encoding await Future.wait(stores.map((store) async { @@ -108,9 +112,8 @@ class CacheSerializer implements StateSerializer { } })); - // TODO: re-enable IV rotation // // Rotate encryption for the next save - // await saveIVKey(Cache.ivKey); + await saveIVKey(CacheSecure.ivKey); }); // Disregard redux persist storage saving @@ -176,6 +179,10 @@ class CacheSerializer implements StateSerializer { iv: CacheSecure.ivKey, ); decodedJson = json.decode(decryptedJson); + + print( + '[Hive Serializer Decode] ${store.runtimeType.toString()} used CacheSecure.ivKey', + ); } catch (error) { print( '[Hive Serializer Decode] ${store.runtimeType.toString()} ${error}', @@ -193,6 +200,10 @@ class CacheSerializer implements StateSerializer { iv: CacheSecure.ivKeyNext, ); decodedJson = json.decode(decryptedJson); + + print( + '[Hive Serializer Decode] ${store.runtimeType.toString()} used CacheSecure.ivKeyNext', + ); } catch (error) { print( '[Hive Serializer Decode] ${store.runtimeType.toString()} ${error}', @@ -232,6 +243,9 @@ class CacheSerializer implements StateSerializer { } // decode json after decrypted and set to store + print( + '[Hive Serializer Decode] ${store.runtimeType.toString()} success', + ); } catch (error) { debugPrint('[Hive Serializer Decode] $error'); } diff --git a/lib/global/cache/threadables.dart b/lib/global/cache/threadables.dart index 8ad03570d..3cd6ff223 100644 --- a/lib/global/cache/threadables.dart +++ b/lib/global/cache/threadables.dart @@ -1,5 +1,13 @@ import 'dart:convert'; +import 'dart:async'; +import 'dart:isolate'; +import 'dart:ui'; +import 'package:uuid/uuid.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; + +import 'package:flutter_secure_storage/flutter_secure_storage.dart'; import 'package:steel_crypt/steel_crypt.dart'; import 'package:syphon/global/cache/index.dart'; @@ -34,13 +42,20 @@ Future encryptJsonBackground(Map params) async { return encryptedJson; } -// responsibile for json serialization and encryption +// responsibile for both json serialization and encryption Future serializeJsonBackground(Object store) async { + WidgetsFlutterBinding.ensureInitialized(); + window.onPlatformMessage = BinaryMessages.handlePlatformMessage; + try { Stopwatch stopwatch = new Stopwatch()..start(); - final ivKey = await unlockIVKey(); - final cryptKey = await unlockCryptKey(); + final storageEngine = FlutterSecureStorage(); + + final ivKey = await storageEngine.read(key: CacheSecure.ivKeyLocation); + final cryptKey = + await storageEngine.read(key: CacheSecure.encryptionKeyLocation); + final jsonEncoded = jsonEncode(store); final cryptor = AesCrypt(key: cryptKey, padding: PaddingAES.pkcs7); diff --git a/pubspec.yaml b/pubspec.yaml index 272696d0a..469a568c8 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -84,6 +84,8 @@ dependencies: flutter_secure_storage: 3.3.3 json_annotation: ^3.1.0 checked_yaml: 1.0.2 + # isolate_handler: 0.3.1 + # flutter_isolate: 1.0.0+14 # Services http: ^0.12.0+2 From bb3f045417f68b7a330861924f4cad0799d2d4d0 Mon Sep 17 00:00:00 2001 From: ereio Date: Sun, 25 Oct 2020 19:47:15 -0400 Subject: [PATCH 28/45] converting existing caches to new cache --- ios/Podfile.lock | 6 ---- lib/global/cache/serializer.dart | 17 ++++++++--- lib/global/cache/threadables.dart | 8 +++-- lib/global/libs/hive/encoder.dart | 14 +++++++-- lib/global/libs/hive/index.dart | 51 +++++++++++++++++++++++++++++++ 5 files changed, 81 insertions(+), 15 deletions(-) diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 1e9bb7f67..03f677c16 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -39,8 +39,6 @@ PODS: - Flutter - FLAnimatedImage (1.0.12) - Flutter (1.0.0) - - flutter_isolate (0.0.1): - - Flutter - flutter_local_notifications (0.0.1): - Flutter - flutter_plugin_android_lifecycle (0.0.1): @@ -92,7 +90,6 @@ DEPENDENCIES: - device_info (from `.symlinks/plugins/device_info/ios`) - file_picker (from `.symlinks/plugins/file_picker/ios`) - Flutter (from `Flutter`) - - flutter_isolate (from `.symlinks/plugins/flutter_isolate/ios`) - flutter_local_notifications (from `.symlinks/plugins/flutter_local_notifications/ios`) - flutter_plugin_android_lifecycle (from `.symlinks/plugins/flutter_plugin_android_lifecycle/ios`) - flutter_secure_storage (from `.symlinks/plugins/flutter_secure_storage/ios`) @@ -130,8 +127,6 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/file_picker/ios" Flutter: :path: Flutter - flutter_isolate: - :path: ".symlinks/plugins/flutter_isolate/ios" flutter_local_notifications: :path: ".symlinks/plugins/flutter_local_notifications/ios" flutter_plugin_android_lifecycle: @@ -175,7 +170,6 @@ SPEC CHECKSUMS: file_picker: 3e6c3790de664ccf9b882732d9db5eaf6b8d4eb1 FLAnimatedImage: 4a0b56255d9b05f18b6dd7ee06871be5d3b89e31 Flutter: 0e3d915762c693b495b44d77113d4970485de6ec - flutter_isolate: 0edf5081826d071adf21759d1eb10ff5c24503b5 flutter_local_notifications: 9e4738ce2471c5af910d961a6b7eadcf57c50186 flutter_plugin_android_lifecycle: dc0b544e129eebb77a6bfb1239d4d1c673a60a35 flutter_secure_storage: 7953c38a04c3fdbb00571bcd87d8e3b5ceb9daec diff --git a/lib/global/cache/serializer.dart b/lib/global/cache/serializer.dart index 8a0363608..e85334534 100644 --- a/lib/global/cache/serializer.dart +++ b/lib/global/cache/serializer.dart @@ -5,13 +5,14 @@ import 'dart:typed_data'; // Flutter imports: import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; -import 'package:isolate_handler/isolate_handler.dart'; // Package imports: import 'package:redux_persist/redux_persist.dart'; import 'package:steel_crypt/steel_crypt.dart'; import 'package:syphon/global/cache/index.dart'; import 'package:syphon/global/cache/threadables.dart'; +import 'package:syphon/global/libs/hive/encoder.dart'; +import 'package:syphon/global/libs/hive/index.dart'; // Project imports: import 'package:syphon/store/crypto/state.dart'; @@ -44,14 +45,12 @@ class CacheSerializer implements StateSerializer { // Queue up a cache saving will wait // if the previously schedule task has not finished Future.microtask(() async { - // TODO: re-enable IV rotation // // create a new IV for the encrypted cache CacheSecure.ivKey = createIVKey(); // // backup the IV in case the app is force closed before caching finishes await saveIVKeyNext(CacheSecure.ivKey); CacheSecure.ivKeyNext = await unlockIVKeyNext(); - debugPrint('[New Iv Key Next] ${CacheSecure.ivKeyNext}'); // run through all redux stores for encryption and encoding await Future.wait(stores.map((store) async { @@ -112,7 +111,7 @@ class CacheSerializer implements StateSerializer { } })); - // // Rotate encryption for the next save + // Rotate encryption for the next save await saveIVKey(CacheSecure.ivKey); }); @@ -141,6 +140,16 @@ class CacheSerializer implements StateSerializer { userStore, ]; + // TODO: remove after most have upgraded to 0.1.4/0.1.5 + if (Cache.state != null || Cache.stateRooms != null) { + debugPrint( + '[Legacy Cache Found] ***** FOUND ****** loading and removing cache', + ); + final legacyAppState = LegacyEncoder.decodeHive(); + deleteLegacyStorage(); + return legacyAppState; + } + // decode each store cache synchronously stores.forEach((store) { try { diff --git a/lib/global/cache/threadables.dart b/lib/global/cache/threadables.dart index 3cd6ff223..08c390ea2 100644 --- a/lib/global/cache/threadables.dart +++ b/lib/global/cache/threadables.dart @@ -1,9 +1,7 @@ import 'dart:convert'; -import 'dart:async'; -import 'dart:isolate'; import 'dart:ui'; -import 'package:uuid/uuid.dart'; +import 'dart:async'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; @@ -42,6 +40,10 @@ Future encryptJsonBackground(Map params) async { return encryptedJson; } +// TODO: needs plugins that work in isolates, still having +// issues using path_provider or any equivalent in threads +// while still being able to pass the entire store object +// to the isolate // responsibile for both json serialization and encryption Future serializeJsonBackground(Object store) async { WidgetsFlutterBinding.ensureInitialized(); diff --git a/lib/global/libs/hive/encoder.dart b/lib/global/libs/hive/encoder.dart index 49389b525..e87f6aaf4 100644 --- a/lib/global/libs/hive/encoder.dart +++ b/lib/global/libs/hive/encoder.dart @@ -1,7 +1,6 @@ import 'dart:convert'; import 'package:flutter/material.dart'; -import 'package:http/http.dart' as http; import 'package:syphon/global/libs/hive/index.dart'; import 'package:syphon/store/auth/state.dart'; // Project imports: @@ -73,7 +72,7 @@ class LegacyEncoder { } } - static Future decodeHive() async { + static AppState decodeHive() { AuthStore authStoreConverted = AuthStore(); SyncStore syncStoreConverted = SyncStore(); CryptoStore cryptoStoreConverted = CryptoStore(); @@ -134,5 +133,16 @@ class LegacyEncoder { } catch (error) { debugPrint('[Hive Serializer Decode] $error'); } + + return AppState( + loading: false, + authStore: authStoreConverted ?? AuthStore(), + syncStore: syncStoreConverted ?? SyncStore(), + cryptoStore: cryptoStoreConverted ?? CryptoStore(), + roomStore: roomStoreConverted ?? RoomStore(), + mediaStore: mediaStoreConverted ?? MediaStore(), + settingsStore: settingsStoreConverted ?? SettingsStore(), + userStore: UserStore(), + ); } } diff --git a/lib/global/libs/hive/index.dart b/lib/global/libs/hive/index.dart index 4842eb963..2024933ff 100644 --- a/lib/global/libs/hive/index.dart +++ b/lib/global/libs/hive/index.dart @@ -306,3 +306,54 @@ void closeStorage() async { Cache.sync.close(); } } + +// Wipe all old cached files to deprecate old storage caches +Future deleteLegacyStorage() async { + try { + (await Hive.openBox(Cache.syncKeyUNSAFE)).deleteFromDisk(); + } catch (error) { + debugPrint('[deleteStorage] deleting Cache.state'); + } + + try { + (await Hive.openBox(Cache.stateKeyUNSAFE)).deleteFromDisk(); + } catch (error) { + debugPrint('[deleteStorage] deleting Cache.state'); + } + + try { + (await Hive.openBox(Cache.stateKeyRoomsUNSAFE)).deleteFromDisk(); + } catch (error) { + debugPrint('[deleteStorage] deleting Cache.state'); + } + + try { + (await Hive.openBox(Cache.backgroundKeyUNSAFE)).deleteFromDisk(); + } catch (error) { + debugPrint('[deleteStorage] deleting Cache.state'); + } + + try { + (await Hive.openBox(Cache.syncKey)).deleteFromDisk(); + } catch (error) { + debugPrint('[deleteStorage] deleting Cache.state'); + } + + try { + (await Hive.openBox(Cache.stateKey)).deleteFromDisk(); + } catch (error) { + debugPrint('[deleteStorage] deleting Cache.state'); + } + + try { + (await Hive.openBox(Cache.stateRoomKey)).deleteFromDisk(); + } catch (error) { + debugPrint('[deleteStorage] deleting Cache.state'); + } + + Cache.sync = null; + Cache.state = null; + Cache.stateRooms = null; + + return true; +} From 08f99014ea0d0c6a0c750de04571c9904870b333 Mon Sep 17 00:00:00 2001 From: ereio Date: Sun, 25 Oct 2020 20:21:38 -0400 Subject: [PATCH 29/45] separated the SetPassword actions from signup for login, added stopgap to provide excess auth requests --- lib/store/auth/actions.dart | 32 +++++++++- lib/store/auth/state.dart | 3 + lib/views/login/index.dart | 7 +-- pubspec.yaml | 121 +++++++++++++++++------------------- 4 files changed, 95 insertions(+), 68 deletions(-) diff --git a/lib/store/auth/actions.dart b/lib/store/auth/actions.dart index c5cdc29f2..78b011e53 100644 --- a/lib/store/auth/actions.dart +++ b/lib/store/auth/actions.dart @@ -71,6 +71,11 @@ class SetUsernameValid { SetUsernameValid({this.valid}); } +class SetStopgap { + final bool stopgap; + SetStopgap({this.stopgap}); +} + class SetPassword { final String password; SetPassword({this.password}); @@ -223,6 +228,15 @@ ThunkAction stopAuthObserver() { */ ThunkAction generateDeviceId({String salt}) { return (Store store) async { + // Wait at least 2 seconds until you can attempt to login again + // includes processing time by authenticating matrix server + store.dispatch(SetStopgap(stopgap: true)); + + // prevents people spamming the login if it were to fail repeatedly + Timer(Duration(seconds: 2), () { + store.dispatch(SetStopgap(stopgap: false)); + }); + final defaultId = Random.secure().nextInt(1 << 31).toString(); var device = Device( deviceId: defaultId, @@ -298,6 +312,9 @@ ThunkAction loginUser() { addInfo( message: Strings.errorCheckHomeserver, ); + // sometimes, people leave an extra forward slash in the m.homeserver field + } else if (homeserver.endsWith('/')) { + homeserver = homeserver.replaceRange(homeserver.length - 1, null, ''); } } catch (error) {/* still attempt login */} @@ -329,7 +346,11 @@ ThunkAction loginUser() { store.dispatch(ResetOnboarding()); } catch (error) { - store.dispatch(addAlert(message: error, error: error)); + store.dispatch(addAlert( + origin: "loginUser", + message: error, + error: error, + )); } finally { store.dispatch(SetLoading(loading: false)); } @@ -829,6 +850,15 @@ ThunkAction setUsername({String username}) { }; } +ThunkAction setLoginPassword({String password}) => + (Store store) { + store.dispatch(SetPassword(password: password)); + + store.dispatch(SetPasswordValid( + valid: password != null && password.length > 0, + )); + }; + ThunkAction setPassword({String password, bool ignoreConfirm}) { return (Store store) { store.dispatch(SetPassword(password: password)); diff --git a/lib/store/auth/state.dart b/lib/store/auth/state.dart index a83fb31f9..4efaf4683 100644 --- a/lib/store/auth/state.dart +++ b/lib/store/auth/state.dart @@ -42,6 +42,7 @@ class AuthStore extends Equatable { // temp state statuses for signup final bool loading; + final bool stopgap; final bool creating; final bool verificationNeeded; final bool isEmailValid; @@ -73,6 +74,7 @@ class AuthStore extends Equatable { this.isPasswordValid = false, this.isHomeserverValid = true, this.credential, + this.stopgap = false, this.creating = false, this.loading = false, this.verificationNeeded = false, @@ -129,6 +131,7 @@ class AuthStore extends Equatable { interactiveAuths: interactiveAuths ?? this.interactiveAuths, credential: credential ?? this.credential, creating: creating ?? this.creating, + stopgap: stopgap ?? this.stopgap, verificationNeeded: verificationNeeded ?? this.verificationNeeded, ); } diff --git a/lib/views/login/index.dart b/lib/views/login/index.dart index 76ec645dd..49993bded 100644 --- a/lib/views/login/index.dart +++ b/lib/views/login/index.dart @@ -327,7 +327,8 @@ class _Props extends Equatable { password: store.state.authStore.password, isLoginAttemptable: store.state.authStore.isPasswordValid && store.state.authStore.isUsernameValid && - !store.state.authStore.loading, + !store.state.authStore.loading && + !store.state.authStore.stopgap, usernameHint: Strings.formatUsernameHint( store.state.authStore.homeserver, ), @@ -351,9 +352,7 @@ class _Props extends Equatable { } }, onChangePassword: (String text) { - store.dispatch( - setPassword(password: text, ignoreConfirm: true), - ); + store.dispatch(setLoginPassword(password: text)); }, onIncrementTheme: () { store.dispatch(incrementTheme()); diff --git a/pubspec.yaml b/pubspec.yaml index 169ecccd2..197279b5e 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -5,7 +5,7 @@ description: a privacy focused matrix client # $ flutter create --org org.tether.tether # $ flutter run --no-fast-start # $ flutter pub get -# $ flutter pub global run devtools +# $ flutter pub global run devtools # $ flutter pub run build_runner build # $ flutter pub run build_runner watch --delete-conflicting-outputs # $ flutter pub run build_runner build --delete-conflicting-outputs @@ -42,21 +42,21 @@ description: a privacy focused matrix client # The following defines the version and build number for your application. # A version number is three numbers separated by dots, like 1.2.43 -# followed by an optional build number separated by a +. +# followed by an optional build number separated by a +. version: 0.1.4+140 environment: - sdk: ">=2.9.0-13.0 <3.0.0" # <- modified to solve build_runner + sdk: ">=2.9.0-13.0 <3.0.0" # <- modified to solve build_runner dependencies: flutter: sdk: flutter - olm: + olm: git: url: https://gitlab.com/famedly/libraries/dart-olm ref: f66975bd1b5cb1865eba5efe6e3a392aa5e396a5 - + # State Management expandable: 3.0.1 equatable: 1.2.4 @@ -79,7 +79,7 @@ dependencies: # Cache hive: 1.4.4 - hive_flutter: 0.3.1 + hive_flutter: 0.3.1 flutter_secure_storage: 3.3.3 json_serializable: 3.3.0 @@ -102,14 +102,14 @@ dependencies: flutter_svg: 0.18.1 file_picker: 1.13.3 image_picker: ^0.6.7+7 - flutter_swiper : 1.1.6 - webview_flutter: ^0.3.21 + flutter_swiper: 1.1.6 + webview_flutter: ^0.3.21 touchable_opacity: 1.0.2 fab_circular_menu: ^1.0.0 flutter_recaptcha_v2: 0.1.0 smooth_page_indicator: 0.1.1 flutter_local_notifications: 1.4.0 - flutter_material_color_picker: ^1.0.5 + flutter_material_color_picker: ^1.0.5 palette_generator: 0.2.3 dev_dependencies: @@ -117,7 +117,7 @@ dev_dependencies: build_runner: ^1.10.1 hive_generator: 0.8.1 # TODO: build fixes - remove later - build_resolvers: 1.3.10 # <- modified to solve build_runner + build_resolvers: 1.3.10 # <- modified to solve build_runner # TODO: build fixes - remove later dependency_overrides: @@ -134,7 +134,6 @@ flutter_icons: # The following section is specific to Flutter. flutter: - # The following line ensures that the Material Icons font is # included with your application, so that you can use the icons in # the material Icons class. @@ -143,71 +142,67 @@ flutter: fonts: - family: Poppins fonts: - - asset: assets/fonts/Poppins-Italic.ttf + - asset: assets/fonts/Poppins-Italic.ttf - asset: assets/fonts/Poppins-Regular.ttf - - asset: assets/fonts/Poppins-Medium.ttf - - asset: assets/fonts/Poppins-Light.ttf - - asset: assets/fonts/Poppins-Thin.ttf + - asset: assets/fonts/Poppins-Medium.ttf + - asset: assets/fonts/Poppins-Light.ttf + - asset: assets/fonts/Poppins-Thin.ttf - family: Rubik - fonts: + fonts: - asset: assets/fonts/Rubik-Regular.ttf - - asset: assets/fonts/Rubik-Medium.ttf - - asset: assets/fonts/Rubik-Light.ttf + - asset: assets/fonts/Rubik-Medium.ttf + - asset: assets/fonts/Rubik-Light.ttf - family: Inter fonts: - - asset: assets/fonts/Inter-Italic.ttf + - asset: assets/fonts/Inter-Italic.ttf - asset: assets/fonts/Inter-Regular.ttf - - asset: assets/fonts/Inter-Medium.ttf - - asset: assets/fonts/Inter-Light.ttf + - asset: assets/fonts/Inter-Medium.ttf + - asset: assets/fonts/Inter-Light.ttf # To add assets to your application, add an assets section, like this: # On release, change .env.debug to .env - assets: - - ./.env.debug - - ./.env.release - - assets/translations/en.json - - assets/translations/ru.json - - assets/graphics/undraw_sync_files.svg - - assets/graphics/undraw_accept_terms.svg - - assets/graphics/undraw_mobile_user.svg - - assets/graphics/undraw_messaging_fun.svg - - assets/graphics/undraw_connection.svg - - assets/graphics/undraw_group_chat.svg - - assets/graphics/undraw_people.svg - - assets/graphics/undraw_site_content.svg - - assets/graphics/undraw_escaping.svg - - assets/graphics/undraw_message_sent.svg - - assets/graphics/undraw_new_message.svg - - - assets/graphics/undraw_in_thought.svg - - assets/graphics/undraw_profile_data.svg - - assets/graphics/undraw_mention.svg - - assets/graphics/undraw_not_found.svg - - assets/icons/current/app_icon_cyan.svg - - assets/icons/current/app_icon_cyan.png - - assets/icons/current/app_icon_white.png - - assets/icons/global/being-check.svg - - assets/icons/global/being-person-add.svg - - assets/icons/global/being-group-add.svg - - assets/icons/global/being-public-add.svg - - assets/icons/global/being-search-public.svg - - assets/icons/global/being-search-public-condensed.svg - - assets/icons/global/being-message-syphon.svg - - assets/icons/global/being-send.svg - - assets/icons/global/being-send-solid.svg - - assets/icons/global/being-send-lock.svg - - assets/icons/global/being-send-lock-solid.svg - - assets/icons/global/being-send-unlock.svg - - assets/icons/global/being-chevrons-right.svg - - assets/icons/global/feather-message-circle.svg - - + assets: + - ./.env.debug + - ./.env.release + - assets/translations/en.json + - assets/translations/ru.json + - assets/graphics/undraw_sync_files.svg + - assets/graphics/undraw_accept_terms.svg + - assets/graphics/undraw_mobile_user.svg + - assets/graphics/undraw_messaging_fun.svg + - assets/graphics/undraw_connection.svg + - assets/graphics/undraw_group_chat.svg + - assets/graphics/undraw_people.svg + - assets/graphics/undraw_site_content.svg + - assets/graphics/undraw_escaping.svg + - assets/graphics/undraw_message_sent.svg + - assets/graphics/undraw_new_message.svg + + - assets/graphics/undraw_in_thought.svg + - assets/graphics/undraw_profile_data.svg + - assets/graphics/undraw_mention.svg + - assets/graphics/undraw_not_found.svg + - assets/icons/current/app_icon_cyan.svg + - assets/icons/current/app_icon_cyan.png + - assets/icons/current/app_icon_white.png + - assets/icons/global/being-check.svg + - assets/icons/global/being-person-add.svg + - assets/icons/global/being-group-add.svg + - assets/icons/global/being-public-add.svg + - assets/icons/global/being-search-public.svg + - assets/icons/global/being-search-public-condensed.svg + - assets/icons/global/being-message-syphon.svg + - assets/icons/global/being-send.svg + - assets/icons/global/being-send-solid.svg + - assets/icons/global/being-send-lock.svg + - assets/icons/global/being-send-lock-solid.svg + - assets/icons/global/being-send-unlock.svg + - assets/icons/global/being-chevrons-right.svg + - assets/icons/global/feather-message-circle.svg # An image asset can refer to one or more resolution-specific "variants", see # https://flutter.dev/assets-and-images/#resolution-aware. - # For details regarding adding assets from package dependencies, see # https://flutter.dev/assets-and-images/#from-packages - # To add custom fonts to your application, add a fonts section here, # in this "flutter" section. Each entry in this list should have a # "family" key with the font family name, and a "fonts" key with a From f850ed03faae0b7f2390ebedec981b42f315966b Mon Sep 17 00:00:00 2001 From: ereio Date: Sun, 25 Oct 2020 21:10:18 -0400 Subject: [PATCH 30/45] several fixes for migration from hive to manual serialization --- lib/global/cache/index.dart | 3 +- lib/global/cache/serializer.dart | 7 +-- lib/global/libs/hive/index.dart | 90 +++++++++++--------------------- 3 files changed, 37 insertions(+), 63 deletions(-) diff --git a/lib/global/cache/index.dart b/lib/global/cache/index.dart index 43ca054c2..e2225f562 100644 --- a/lib/global/cache/index.dart +++ b/lib/global/cache/index.dart @@ -168,9 +168,10 @@ Future unlockCryptKey() async { var cryptKey = await storageEngine.read( key: CacheSecure.encryptionKeyLocation, ); + // Create a encryptionKey if a serialized one is not found if (cryptKey == null) { - cryptKey = CryptKey().genFortuna(); + cryptKey = CryptKey().genFortuna(len: 32); // 256 bits await storageEngine.write( key: CacheSecure.encryptionKeyLocation, diff --git a/lib/global/cache/serializer.dart b/lib/global/cache/serializer.dart index e85334534..22298a7b1 100644 --- a/lib/global/cache/serializer.dart +++ b/lib/global/cache/serializer.dart @@ -50,8 +50,8 @@ class CacheSerializer implements StateSerializer { // // backup the IV in case the app is force closed before caching finishes await saveIVKeyNext(CacheSecure.ivKey); - CacheSecure.ivKeyNext = await unlockIVKeyNext(); - + print(CacheSecure.ivKey); + print(CacheSecure.cryptKey); // run through all redux stores for encryption and encoding await Future.wait(stores.map((store) async { try { @@ -141,7 +141,8 @@ class CacheSerializer implements StateSerializer { ]; // TODO: remove after most have upgraded to 0.1.4/0.1.5 - if (Cache.state != null || Cache.stateRooms != null) { + if ((Cache.state != null || Cache.stateRooms != null) && + Cache.migration == null) { debugPrint( '[Legacy Cache Found] ***** FOUND ****** loading and removing cache', ); diff --git a/lib/global/libs/hive/index.dart b/lib/global/libs/hive/index.dart index 2024933ff..48ce550ce 100644 --- a/lib/global/libs/hive/index.dart +++ b/lib/global/libs/hive/index.dart @@ -35,6 +35,8 @@ class Cache { static Box stateMedia; static LazyBox sync; + static String migration; + static const group_id = '${Values.appNameLabel}'; static const encryptionKeyLocation = '${Values.appNameLabel}@publicKey'; @@ -57,6 +59,8 @@ class Cache { static const accessTokenKey = 'accessToken'; static const lastSinceKey = 'lastSince'; static const currentUser = 'currentUser'; + + static const migrationKey = 'migrationKey'; } /** @@ -70,8 +74,9 @@ class Cache { * For testing purposes only - should be encrypting hive */ Future initHive() async { + // NOTE: done in initCache // Init storage location - final storageLocation = await initStorageLocation(); + // final storageLocation = await initStorageLocation(); // Init hive cache // Hive.init(storageLocation); @@ -79,16 +84,14 @@ Future initHive() async { // Init configuration await initHiveConfiguration(); - if (Platform.isAndroid || Platform.isIOS) { + final storageEngine = FlutterSecureStorage(); + Cache.migration = await storageEngine.read(key: Cache.migrationKey); + + if ((Platform.isAndroid || Platform.isIOS) && Cache.migration == null) { Cache.sync = await openHiveSync(); Cache.state = await openHiveState(); Cache.stateRooms = await openHiveStateRooms(); } - - if (Platform.isLinux || Platform.isWindows || Platform.isLinux) { - Cache.state = await openHiveStateUnsafe(); - Cache.stateRooms = await openHiveStateRoomsUnsafe(); - } } Future initStorageLocation() async { @@ -156,6 +159,7 @@ Future> unlockEncryptionKey() async { var encryptionKey = await storageEngine.read( key: Cache.encryptionKeyLocation, ); + // Create a encryptionKey if a serialized one is not found if (encryptionKey == null) { encryptionKey = hex.encode(Hive.generateSecureKey()); @@ -169,42 +173,6 @@ Future> unlockEncryptionKey() async { return hex.decode(encryptionKey); } -/** - * openHiveState UNSAFE - * - * For testing purposes only - should be encrypting hive - */ -Future openHiveStateRoomsUnsafe() async { - return await Hive.openBox( - Cache.stateKeyUNSAFE, - compactionStrategy: (entries, deletedEntries) => deletedEntries > 2, - ); -} - -/** - * openHiveState UNSAFE - * - * For testing purposes only - should be encrypting hive - */ -Future openHiveStateUnsafe() async { - return await Hive.openBox( - Cache.stateKeyRoomsUNSAFE, - compactionStrategy: (entries, deletedEntries) => deletedEntries > 2, - ); -} - -/** - * openHiveState UNSAFE - * - * For testing purposes only - should be encrypting hive - */ -Future openHiveSyncUnsafe() async { - return await Hive.openLazyBox( - Cache.syncKeyUNSAFE, - compactionStrategy: (entries, deletedEntries) => deletedEntries > 2, - ); -} - /** * openHiveState UNSAFE * @@ -244,9 +212,7 @@ Future openHiveState() async { ); } catch (error) { debugPrint('[openHiveState] open failure: $error'); - return await Hive.openBox( - Cache.stateKeyUNSAFE, - ); + return null; } } @@ -267,9 +233,7 @@ Future openHiveStateRooms() async { ); } catch (error) { debugPrint('[openHiveState] open failure: $error'); - return await Hive.openBox( - Cache.stateKeyUNSAFE, - ); + return null; } } @@ -290,9 +254,7 @@ Future openHiveSync() async { ); } catch (error) { debugPrint('[openHiveState] failure $error'); - return await Hive.openLazyBox( - Cache.syncKeyUNSAFE, - ); + return null; } } @@ -311,49 +273,59 @@ void closeStorage() async { Future deleteLegacyStorage() async { try { (await Hive.openBox(Cache.syncKeyUNSAFE)).deleteFromDisk(); - } catch (error) { debugPrint('[deleteStorage] deleting Cache.state'); + } catch (error) { + debugPrint('[deleteStorage] ${error}'); } try { (await Hive.openBox(Cache.stateKeyUNSAFE)).deleteFromDisk(); + debugPrint('[deleteStorage] deleting Cache.stateKeyUNSAFE'); } catch (error) { - debugPrint('[deleteStorage] deleting Cache.state'); + debugPrint('[deleteStorage] ${error}'); } try { (await Hive.openBox(Cache.stateKeyRoomsUNSAFE)).deleteFromDisk(); + debugPrint('[deleteStorage] deleting Cache.stateKeyRoomsUNSAFE'); } catch (error) { - debugPrint('[deleteStorage] deleting Cache.state'); + debugPrint('[deleteStorage] ${error}'); } try { (await Hive.openBox(Cache.backgroundKeyUNSAFE)).deleteFromDisk(); + debugPrint('[deleteStorage] deleting Cache.backgroundKeyUNSAFE'); } catch (error) { - debugPrint('[deleteStorage] deleting Cache.state'); + debugPrint('[deleteStorage] ${error}'); } try { (await Hive.openBox(Cache.syncKey)).deleteFromDisk(); + debugPrint('[deleteStorage] deleting Cache.syncKey'); } catch (error) { - debugPrint('[deleteStorage] deleting Cache.state'); + debugPrint('[deleteStorage] ${error}'); } try { (await Hive.openBox(Cache.stateKey)).deleteFromDisk(); + debugPrint('[deleteStorage] deleting Cache.stateKey'); } catch (error) { - debugPrint('[deleteStorage] deleting Cache.state'); + debugPrint('[deleteStorage] ${error}'); } try { (await Hive.openBox(Cache.stateRoomKey)).deleteFromDisk(); + debugPrint('[deleteStorage] deleting Cache.stateRoomKey'); } catch (error) { - debugPrint('[deleteStorage] deleting Cache.state'); + debugPrint('[deleteStorage] ${error}'); } Cache.sync = null; Cache.state = null; Cache.stateRooms = null; + final storageEngine = FlutterSecureStorage(); + await storageEngine.write(key: Cache.migrationKey, value: 'yes'); + return true; } From feb98133a5866f92581d8c4112cd85925da0ea40 Mon Sep 17 00:00:00 2001 From: ereio Date: Sun, 25 Oct 2020 21:34:45 -0400 Subject: [PATCH 31/45] several small bug fixes surrounding overwritting legacy key on first 0.1.4 run --- lib/global/cache/index.dart | 6 ++---- lib/global/cache/serializer.dart | 3 +++ lib/global/libs/hive/index.dart | 4 ++++ 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/lib/global/cache/index.dart b/lib/global/cache/index.dart index e2225f562..af66bcacb 100644 --- a/lib/global/cache/index.dart +++ b/lib/global/cache/index.dart @@ -29,8 +29,6 @@ class CacheSecure { static const ivKeyLocation = '${Values.appNameLabel}@ivKey'; static const ivKeyNextLocation = '${Values.appNameLabel}@ivKeyNext'; static const cryptKeyLocation = '${Values.appNameLabel}@cryptKey'; - static const encryptionKeyLocation = - '${Values.appNameLabel}@publicKey'; // TODO: remove // background data identifiers static const roomNames = 'room_names'; @@ -166,7 +164,7 @@ Future unlockCryptKey() async { // Check if storage has been created before var cryptKey = await storageEngine.read( - key: CacheSecure.encryptionKeyLocation, + key: CacheSecure.cryptKeyLocation, ); // Create a encryptionKey if a serialized one is not found @@ -174,7 +172,7 @@ Future unlockCryptKey() async { cryptKey = CryptKey().genFortuna(len: 32); // 256 bits await storageEngine.write( - key: CacheSecure.encryptionKeyLocation, + key: CacheSecure.cryptKeyLocation, value: cryptKey, ); } diff --git a/lib/global/cache/serializer.dart b/lib/global/cache/serializer.dart index 22298a7b1..fab4d1908 100644 --- a/lib/global/cache/serializer.dart +++ b/lib/global/cache/serializer.dart @@ -140,6 +140,9 @@ class CacheSerializer implements StateSerializer { userStore, ]; + print( + '[CacheSecure.decode] ${Cache.state} || ${Cache.stateRooms} && ${Cache.migration}', + ); // TODO: remove after most have upgraded to 0.1.4/0.1.5 if ((Cache.state != null || Cache.stateRooms != null) && Cache.migration == null) { diff --git a/lib/global/libs/hive/index.dart b/lib/global/libs/hive/index.dart index 48ce550ce..680d79d52 100644 --- a/lib/global/libs/hive/index.dart +++ b/lib/global/libs/hive/index.dart @@ -87,6 +87,8 @@ Future initHive() async { final storageEngine = FlutterSecureStorage(); Cache.migration = await storageEngine.read(key: Cache.migrationKey); + print('[initHive] ${Cache.migration}'); + if ((Platform.isAndroid || Platform.isIOS) && Cache.migration == null) { Cache.sync = await openHiveSync(); Cache.state = await openHiveState(); @@ -327,5 +329,7 @@ Future deleteLegacyStorage() async { final storageEngine = FlutterSecureStorage(); await storageEngine.write(key: Cache.migrationKey, value: 'yes'); + print('[deleteLegacyStorage] ran and saved migration status'); + return true; } From e8a2afc2f86aef52328e46bb0a53f7c75c716f93 Mon Sep 17 00:00:00 2001 From: ereio Date: Sun, 25 Oct 2020 21:44:10 -0400 Subject: [PATCH 32/45] oops --- lib/global/cache/threadables.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/global/cache/threadables.dart b/lib/global/cache/threadables.dart index 08c390ea2..6be2e95b6 100644 --- a/lib/global/cache/threadables.dart +++ b/lib/global/cache/threadables.dart @@ -56,7 +56,7 @@ Future serializeJsonBackground(Object store) async { final ivKey = await storageEngine.read(key: CacheSecure.ivKeyLocation); final cryptKey = - await storageEngine.read(key: CacheSecure.encryptionKeyLocation); + await storageEngine.read(key: CacheSecure.cryptKeyLocation); final jsonEncoded = jsonEncode(store); From 62bd3f1d05d8400cc1f7f80a26f3503bae2cf179 Mon Sep 17 00:00:00 2001 From: ereio Date: Sun, 25 Oct 2020 22:00:15 -0400 Subject: [PATCH 33/45] trying again, lost something --- ios/Runner/AppDelegate.swift | 2 +- lib/global/libs/hive/index.dart | 13 +++++++------ 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/ios/Runner/AppDelegate.swift b/ios/Runner/AppDelegate.swift index 70693e4a8..5fc161ba3 100644 --- a/ios/Runner/AppDelegate.swift +++ b/ios/Runner/AppDelegate.swift @@ -10,4 +10,4 @@ import Flutter GeneratedPluginRegistrant.register(with: self) return super.application(application, didFinishLaunchingWithOptions: launchOptions) } -} +} \ No newline at end of file diff --git a/lib/global/libs/hive/index.dart b/lib/global/libs/hive/index.dart index 680d79d52..ed3adb523 100644 --- a/lib/global/libs/hive/index.dart +++ b/lib/global/libs/hive/index.dart @@ -76,7 +76,7 @@ class Cache { Future initHive() async { // NOTE: done in initCache // Init storage location - // final storageLocation = await initStorageLocation(); + final storageLocation = await initStorageLocation(); // Init hive cache // Hive.init(storageLocation); @@ -84,12 +84,13 @@ Future initHive() async { // Init configuration await initHiveConfiguration(); + // ignore if already migrated cache final storageEngine = FlutterSecureStorage(); Cache.migration = await storageEngine.read(key: Cache.migrationKey); - print('[initHive] ${Cache.migration}'); + if (Cache.migration != null) return; - if ((Platform.isAndroid || Platform.isIOS) && Cache.migration == null) { + if ((Platform.isAndroid || Platform.isIOS)) { Cache.sync = await openHiveSync(); Cache.state = await openHiveState(); Cache.stateRooms = await openHiveStateRooms(); @@ -213,7 +214,7 @@ Future openHiveState() async { compactionStrategy: (entries, deletedEntries) => deletedEntries > 1, ); } catch (error) { - debugPrint('[openHiveState] open failure: $error'); + debugPrint('[openHiveState] $error'); return null; } } @@ -234,7 +235,7 @@ Future openHiveStateRooms() async { compactionStrategy: (entries, deletedEntries) => deletedEntries > 1, ); } catch (error) { - debugPrint('[openHiveState] open failure: $error'); + debugPrint('[openHiveState] $error'); return null; } } @@ -255,7 +256,7 @@ Future openHiveSync() async { compactionStrategy: (entries, deletedEntries) => deletedEntries > 1, ); } catch (error) { - debugPrint('[openHiveState] failure $error'); + debugPrint('[openHiveState] $error'); return null; } } From 0532286ed5a40c0d0f00fef50484f19b0f5b3367 Mon Sep 17 00:00:00 2001 From: ereio Date: Sun, 25 Oct 2020 22:36:55 -0400 Subject: [PATCH 34/45] cache migration is working with error handling, lots of debug code cleanup --- lib/global/algos.dart | 24 +++++++++++------ lib/global/cache/index.dart | 14 +++++++--- lib/global/cache/serializer.dart | 37 +++----------------------- lib/global/cache/threadables.dart | 32 +++++----------------- lib/global/libs/hive/index.dart | 6 ++--- lib/store/crypto/events/actions.dart | 6 ----- lib/store/rooms/actions.dart | 3 --- lib/store/rooms/room/model.dart | 2 +- lib/store/sync/background/service.dart | 31 ++++++++++----------- 9 files changed, 55 insertions(+), 100 deletions(-) diff --git a/lib/global/algos.dart b/lib/global/algos.dart index 5eb5fa934..5db973ac7 100644 --- a/lib/global/algos.dart +++ b/lib/global/algos.dart @@ -3,14 +3,6 @@ import 'dart:convert'; import 'package:flutter/material.dart'; -/** - * Clock functions in code - * - * final stopwatch = Stopwatch()..start(); - * print('[fetchRooms] TIMESTAMP ${stopwatch.elapsed}'); - * stopwatch.stop(); - */ - List fibonacci(int n) { if (n == 0) { return [0]; @@ -28,3 +20,19 @@ void printJson(Map jsonMap) { String prettyEvent = encoder.convert(jsonMap); debugPrint(prettyEvent, wrapWidth: 2048); } + +// time functions by wrapping them here - needs testing +Future timeWrapper( + Future Function() function, { + String name, +}) async { + Stopwatch stopwatch = new Stopwatch()..start(); + + dynamic result = await function(); + + final stoptime = stopwatch.elapsed; + + debugPrint('[$name TIMER] ${function.runtimeType} $stoptime'); + + return result; +} diff --git a/lib/global/cache/index.dart b/lib/global/cache/index.dart index af66bcacb..07e98a1d8 100644 --- a/lib/global/cache/index.dart +++ b/lib/global/cache/index.dart @@ -162,10 +162,16 @@ Future unlockIVKeyNext() async { Future unlockCryptKey() async { final storageEngine = FlutterSecureStorage(); - // Check if storage has been created before - var cryptKey = await storageEngine.read( - key: CacheSecure.cryptKeyLocation, - ); + var cryptKey; + + try { + // Check if crypt key already exists + cryptKey = await storageEngine.read( + key: CacheSecure.cryptKeyLocation, + ); + } catch (error) { + debugPrint('[unlockCryptKey] ${error}'); + } // Create a encryptionKey if a serialized one is not found if (cryptKey == null) { diff --git a/lib/global/cache/serializer.dart b/lib/global/cache/serializer.dart index fab4d1908..fed64d50b 100644 --- a/lib/global/cache/serializer.dart +++ b/lib/global/cache/serializer.dart @@ -50,13 +50,9 @@ class CacheSerializer implements StateSerializer { // // backup the IV in case the app is force closed before caching finishes await saveIVKeyNext(CacheSecure.ivKey); - print(CacheSecure.ivKey); - print(CacheSecure.cryptKey); // run through all redux stores for encryption and encoding await Future.wait(stores.map((store) async { try { - Stopwatch stopwatchNew = new Stopwatch()..start(); - var jsonEncoded; var jsonEncrypted; @@ -99,14 +95,9 @@ class CacheSerializer implements StateSerializer { ); break; } - - final endTime = stopwatchNew.elapsed; - print( - '[Hive Serializer Encode] ${store.runtimeType.toString()} $endTime', - ); } catch (error) { debugPrint( - '[Hive Serializer Encode] ${store.runtimeType.toString()} $error', + '[Cache Serializer Encode] $error', ); } })); @@ -140,9 +131,6 @@ class CacheSerializer implements StateSerializer { userStore, ]; - print( - '[CacheSecure.decode] ${Cache.state} || ${Cache.stateRooms} && ${Cache.migration}', - ); // TODO: remove after most have upgraded to 0.1.4/0.1.5 if ((Cache.state != null || Cache.stateRooms != null) && Cache.migration == null) { @@ -192,14 +180,8 @@ class CacheSerializer implements StateSerializer { iv: CacheSecure.ivKey, ); decodedJson = json.decode(decryptedJson); - - print( - '[Hive Serializer Decode] ${store.runtimeType.toString()} used CacheSecure.ivKey', - ); } catch (error) { - print( - '[Hive Serializer Decode] ${store.runtimeType.toString()} ${error}', - ); + debugPrint('[Cache Serializer Decode] $error'); decodedJson = {}; } } @@ -213,14 +195,8 @@ class CacheSerializer implements StateSerializer { iv: CacheSecure.ivKeyNext, ); decodedJson = json.decode(decryptedJson); - - print( - '[Hive Serializer Decode] ${store.runtimeType.toString()} used CacheSecure.ivKeyNext', - ); } catch (error) { - print( - '[Hive Serializer Decode] ${store.runtimeType.toString()} ${error}', - ); + debugPrint('[Cache Serializer Decode] $error'); decodedJson = {}; } } @@ -254,13 +230,8 @@ class CacheSerializer implements StateSerializer { default: break; } - - // decode json after decrypted and set to store - print( - '[Hive Serializer Decode] ${store.runtimeType.toString()} success', - ); } catch (error) { - debugPrint('[Hive Serializer Decode] $error'); + debugPrint('[Cache Serializer Decode] $error'); } }); diff --git a/lib/global/cache/threadables.dart b/lib/global/cache/threadables.dart index 6be2e95b6..3600623bd 100644 --- a/lib/global/cache/threadables.dart +++ b/lib/global/cache/threadables.dart @@ -9,35 +9,25 @@ import 'package:flutter_secure_storage/flutter_secure_storage.dart'; import 'package:steel_crypt/steel_crypt.dart'; import 'package:syphon/global/cache/index.dart'; -// NOTE: deserialization is required synchronous by redux_persist :/ -Future decryptJsonBackground(Map params) async { +Future encryptJsonBackground(Map params) async { String ivKey = params['ivKey']; String cryptKey = params['cryptKey']; String json = params['json']; final cryptor = AesCrypt(key: cryptKey, padding: PaddingAES.pkcs7); - final decryptedJson = cryptor.ctr.decrypt(enc: json, iv: ivKey); - - return jsonDecode(decryptedJson); + return cryptor.ctr.encrypt(inp: json, iv: ivKey); } -Future encryptJsonBackground(Map params) async { +// TODO: deserialization is required synchronous by redux_persist :/ +Future decryptJsonBackground(Map params) async { String ivKey = params['ivKey']; String cryptKey = params['cryptKey']; String json = params['json']; - String type = params['type']; - - Stopwatch stopwatch = new Stopwatch()..start(); final cryptor = AesCrypt(key: cryptKey, padding: PaddingAES.pkcs7); - final encryptedJson = cryptor.ctr.encrypt(inp: json, iv: ivKey); - - final stopwatchTime = stopwatch.elapsed; - print('[encryptJsonBackground] ${type} $stopwatchTime'); - - return encryptedJson; + return cryptor.ctr.decrypt(enc: json, iv: ivKey); } // TODO: needs plugins that work in isolates, still having @@ -50,8 +40,6 @@ Future serializeJsonBackground(Object store) async { window.onPlatformMessage = BinaryMessages.handlePlatformMessage; try { - Stopwatch stopwatch = new Stopwatch()..start(); - final storageEngine = FlutterSecureStorage(); final ivKey = await storageEngine.read(key: CacheSecure.ivKeyLocation); @@ -61,16 +49,10 @@ Future serializeJsonBackground(Object store) async { final jsonEncoded = jsonEncode(store); final cryptor = AesCrypt(key: cryptKey, padding: PaddingAES.pkcs7); - final jsonEncrypted = cryptor.ctr.encrypt(inp: jsonEncoded, iv: ivKey); - print( - '[serializeJsonBackground] ${store.runtimeType.toString()} ${stopwatch.elapsed}', - ); - return jsonEncrypted; + return cryptor.ctr.encrypt(inp: jsonEncoded, iv: ivKey); } catch (error) { - print( - '[serializeJsonBackground] ${store.runtimeType.toString()} ${error}', - ); + debugPrint('[serializeJsonBackground] $error'); return null; } } diff --git a/lib/global/libs/hive/index.dart b/lib/global/libs/hive/index.dart index ed3adb523..a64834831 100644 --- a/lib/global/libs/hive/index.dart +++ b/lib/global/libs/hive/index.dart @@ -87,9 +87,9 @@ Future initHive() async { // ignore if already migrated cache final storageEngine = FlutterSecureStorage(); Cache.migration = await storageEngine.read(key: Cache.migrationKey); - print('[initHive] ${Cache.migration}'); if (Cache.migration != null) return; + // otherwise, open and load the previous hive cache if ((Platform.isAndroid || Platform.isIOS)) { Cache.sync = await openHiveSync(); Cache.state = await openHiveState(); @@ -303,7 +303,7 @@ Future deleteLegacyStorage() async { } try { - (await Hive.openBox(Cache.syncKey)).deleteFromDisk(); + (await Hive.openLazyBox(Cache.syncKey)).deleteFromDisk(); debugPrint('[deleteStorage] deleting Cache.syncKey'); } catch (error) { debugPrint('[deleteStorage] ${error}'); @@ -330,7 +330,7 @@ Future deleteLegacyStorage() async { final storageEngine = FlutterSecureStorage(); await storageEngine.write(key: Cache.migrationKey, value: 'yes'); - print('[deleteLegacyStorage] ran and saved migration status'); + debugPrint('[deleteLegacyStorage] ran and saved migration status'); return true; } diff --git a/lib/store/crypto/events/actions.dart b/lib/store/crypto/events/actions.dart index 24bae3eae..099539742 100644 --- a/lib/store/crypto/events/actions.dart +++ b/lib/store/crypto/events/actions.dart @@ -307,16 +307,10 @@ ThunkAction syncDevice(Map toDeviceRaw) { switch (eventType) { case EventTypes.encrypted: try { - print('[syncDevice] olm payload before decryption'); - printJson(event); - final eventDecrypted = await store.dispatch( decryptKeyEvent(event: event), ); - print('[syncDevice] megolm payload after decryption received'); - printJson(eventDecrypted); - if (EventTypes.roomKey == eventDecrypted['type']) { return await store.dispatch( saveSessionKey( diff --git a/lib/store/rooms/actions.dart b/lib/store/rooms/actions.dart index b6eeed042..55f94953f 100644 --- a/lib/store/rooms/actions.dart +++ b/lib/store/rooms/actions.dart @@ -304,9 +304,6 @@ ThunkAction fetchDirectRooms() { // Fetch room state and messages by userId/roomId final directRoomData = directRoomList.map((directRoom) async { - print('[fetchDirectRooms]'); - print(directRoom); - final userId = directRoom.keys.elementAt(0); final roomId = directRoom.values.elementAt(0); try { diff --git a/lib/store/rooms/room/model.dart b/lib/store/rooms/room/model.dart index ec023b8b0..957dbcc71 100644 --- a/lib/store/rooms/room/model.dart +++ b/lib/store/rooms/room/model.dart @@ -580,7 +580,7 @@ class Room { // Filter to find startTime and endTime final messagesAll = List.from(messagesMap.values); - // TODO: remove after 0.1.4 - message catchup works + // TODO: remove after 0.1.5 :( - message catchup works if (true) { // print('[fromMessageEvents] ${this.name}'); // print('[limited] ${limited}'); diff --git a/lib/store/sync/background/service.dart b/lib/store/sync/background/service.dart index 0e85d248f..e4eccb79b 100644 --- a/lib/store/sync/background/service.dart +++ b/lib/store/sync/background/service.dart @@ -54,12 +54,12 @@ class BackgroundSync { final box = await openHiveBackgroundUnsafe(); - await box.put(Cache.protocol, protocol); - await box.put(Cache.homeserver, homeserver); - await box.put(Cache.accessTokenKey, accessToken); - await box.put(Cache.lastSinceKey, lastSince); - await box.put(Cache.currentUser, currentUser); - await box.put(Cache.roomNames, roomNames); + await box.put(CacheSecure.protocol, protocol); + await box.put(CacheSecure.homeserver, homeserver); + await box.put(CacheSecure.accessTokenKey, accessToken); + await box.put(CacheSecure.lastSinceKey, lastSince); + await box.put(CacheSecure.currentUser, currentUser); + await box.put(CacheSecure.roomNames, roomNames); await box.close(); @@ -83,7 +83,7 @@ class BackgroundSync { static void updateRooms({Map roomNames}) async { final box = await openHiveBackgroundUnsafe(); - await box.put(Cache.roomNames, roomNames); + await box.put(CacheSecure.roomNames, roomNames); await box.close(); } } @@ -106,12 +106,9 @@ void notificationSyncIsolate() async { print('[notificationSyncIsolate] storage location failure - $error'); } - // init cache in background mode - // initCacheBackground(); - // Init hive cache + adapters Hive.init(storageLocation.path); - Box backgroundCache = await Hive.openBox(Cache.backgroundKeyUNSAFE); + Box backgroundCache = await Hive.openBox(CacheSecure.cacheKeyBackground); // Init notifiations for background service and new messages/events FlutterLocalNotificationsPlugin pluginInstance = await initNotifications(); @@ -149,23 +146,23 @@ FutureOr syncLoop({ try { // Check isolate id and maybe see if a new one is created final String protocol = cache.get( - Cache.protocol, + CacheSecure.protocol, ); final String homeserver = cache.get( - Cache.homeserver, + CacheSecure.homeserver, ); final String accessToken = cache.get( - Cache.accessTokenKey, + CacheSecure.accessTokenKey, ); final String lastSince = cache.get( - Cache.lastSinceKey, + CacheSecure.lastSinceKey, ); final String currentUser = cache.get( - Cache.currentUser, + CacheSecure.currentUser, ); if (accessToken == null || lastSince == null) { @@ -189,7 +186,7 @@ FutureOr syncLoop({ final Map rawRooms = data['rooms']['join']; try { - await cache.put(Cache.lastSinceKey, lastSinceNew); + await cache.put(CacheSecure.lastSinceKey, lastSinceNew); rawRooms.forEach((roomId, json) { // Filter through parsers From 69fd716416f8805f75e245d6b45d2518332959cf Mon Sep 17 00:00:00 2001 From: ereio Date: Sun, 25 Oct 2020 23:45:11 -0400 Subject: [PATCH 35/45] build failing due to generated file --- lib/global/cache/index.dart | 29 +++++---- lib/store/index.dart | 2 +- lib/store/sync/background/service.dart | 84 +++++++++++++++++++------- 3 files changed, 82 insertions(+), 33 deletions(-) diff --git a/lib/global/cache/index.dart b/lib/global/cache/index.dart index 07e98a1d8..10db62d49 100644 --- a/lib/global/cache/index.dart +++ b/lib/global/cache/index.dart @@ -128,21 +128,27 @@ String createIVKey() { Future saveIVKey(String ivKey) async { // Check if storage has been created before - return await FlutterSecureStorage() - .write(key: CacheSecure.ivKeyLocation, value: ivKey); + return await FlutterSecureStorage().write( + key: CacheSecure.ivKeyLocation, + value: ivKey, + ); } Future saveIVKeyNext(String ivKey) async { // Check if storage has been created before - return await FlutterSecureStorage() - .write(key: CacheSecure.ivKeyNextLocation, value: ivKey); + return await FlutterSecureStorage().write( + key: CacheSecure.ivKeyNextLocation, + value: ivKey, + ); } Future unlockIVKey() async { // Check if storage has been created before final storageEngine = FlutterSecureStorage(); - final ivKeyStored = await storageEngine.read(key: CacheSecure.ivKeyLocation); + final ivKeyStored = await storageEngine.read( + key: CacheSecure.ivKeyLocation, + ); // Create a encryptionKey if a serialized one is not found return ivKeyStored == null ? createIVKey() : ivKeyStored; @@ -152,8 +158,9 @@ Future unlockIVKeyNext() async { // Check if storage has been created before final storageEngine = FlutterSecureStorage(); - final ivKeyStored = - await storageEngine.read(key: CacheSecure.ivKeyNextLocation); + final ivKeyStored = await storageEngine.read( + key: CacheSecure.ivKeyNextLocation, + ); // Create a encryptionKey if a serialized one is not found return ivKeyStored == null ? createIVKey() : ivKeyStored; @@ -191,7 +198,7 @@ Future unlockMainCache() async { return await Hive.openBox( CacheSecure.cacheKeyMain, crashRecovery: true, - compactionStrategy: (entries, deletedEntries) => deletedEntries > 1, + compactionStrategy: (entries, deletedEntries) => deletedEntries > 3, ); } catch (error) { debugPrint('[Unlock Main CacheSecure] $error'); @@ -204,7 +211,7 @@ Future unlockRoomCache() async { return await Hive.openBox( CacheSecure.cacheKeyRooms, crashRecovery: true, - compactionStrategy: (entries, deletedEntries) => deletedEntries > 1, + compactionStrategy: (entries, deletedEntries) => deletedEntries > 3, ); } catch (error) { debugPrint('[Unlock Room CacheSecure] $error'); @@ -217,7 +224,7 @@ Future unlockCryptoCache() async { return await Hive.openBox( CacheSecure.cacheKeyCrypto, crashRecovery: true, - compactionStrategy: (entries, deletedEntries) => deletedEntries > 1, + compactionStrategy: (entries, deletedEntries) => deletedEntries > 3, ); } catch (error) { debugPrint('[Unlock Crypto CacheSecure] $error'); @@ -230,7 +237,7 @@ Future unlockBackgroundCache() async { return await Hive.openBox( CacheSecure.cacheKeyBackground, crashRecovery: true, - compactionStrategy: (entries, deletedEntries) => deletedEntries > 1, + compactionStrategy: (entries, deletedEntries) => deletedEntries > 3, ); } catch (error) { debugPrint('[Unlock Crypto CacheSecure] $error'); diff --git a/lib/store/index.dart b/lib/store/index.dart index 60bad5650..7904386b7 100644 --- a/lib/store/index.dart +++ b/lib/store/index.dart @@ -100,7 +100,7 @@ Future initStore() async { final persistor = Persistor( storage: MemoryStorage(), serializer: CacheSerializer(), - throttleDuration: Duration(milliseconds: 2500), + throttleDuration: Duration(milliseconds: 4500), shouldSave: (Store store, dynamic action) { switch (action.runtimeType) { case SetSyncing: diff --git a/lib/store/sync/background/service.dart b/lib/store/sync/background/service.dart index e4eccb79b..a7e173d75 100644 --- a/lib/store/sync/background/service.dart +++ b/lib/store/sync/background/service.dart @@ -1,5 +1,6 @@ // Dart imports: import 'dart:async'; +import 'dart:convert'; import 'dart:io'; import 'dart:isolate'; @@ -8,6 +9,8 @@ import 'package:flutter/material.dart'; // Package imports: import 'package:android_alarm_manager/android_alarm_manager.dart'; +import 'package:flutter_secure_storage/flutter_secure_storage.dart'; +import 'package:steel_crypt/steel_crypt.dart'; import 'package:syphon/global/cache/index.dart'; // Project imports: @@ -24,7 +27,10 @@ import 'package:path_provider/path_provider.dart'; // Project imports: import 'package:syphon/global/libs/matrix/index.dart'; import 'package:syphon/global/notifications.dart'; +import 'package:syphon/store/auth/state.dart'; import 'package:syphon/store/rooms/room/model.dart'; +import 'package:syphon/store/sync/state.dart'; +import 'package:syphon/store/user/model.dart'; import 'package:syphon/store/user/selectors.dart'; /** @@ -99,11 +105,53 @@ class BackgroundSync { void notificationSyncIsolate() async { try { // Init storage location + var ivKey; + var cryptKey; var storageLocation; + var storageSecured; + + AuthStore authStore; + SyncStore syncStore; + try { + storageSecured = FlutterSecureStorage(); storageLocation = await getApplicationDocumentsDirectory(); } catch (error) { - print('[notificationSyncIsolate] storage location failure - $error'); + print('[notificationSyncIsolate] $error'); + } + + try { + // Pull encryption key and iv + ivKey = await storageSecured.read( + key: CacheSecure.ivKeyLocation, + ); + + cryptKey = await storageSecured.read( + key: CacheSecure.cryptKeyLocation, + ); + + // Configure getters + Box cacheMain = await Hive.openBox(CacheSecure.cacheKeyMain); + final cryptor = AesCrypt(key: cryptKey, padding: PaddingAES.pkcs7); + + final authStoreEncrypted = cacheMain.get((AuthStore).toString()); + final syncStoreEncrypted = cacheMain.get((SyncStore).toString()); + + final authStoreDecrypted = + cryptor.ctr.decrypt(enc: authStoreEncrypted, iv: ivKey); + final syncStoreDecrypted = + cryptor.ctr.decrypt(enc: syncStoreEncrypted, iv: ivKey); + + authStore = jsonDecode(authStoreDecrypted); + syncStore = jsonDecode(syncStoreDecrypted); + } catch (error) { + print('[notificationSyncIsolate] $error'); + } + + try { + authStore.user.accessToken; + } catch (error) { + print('[notificationSyncIsolate] $error'); } // Init hive cache + adapters @@ -125,9 +173,17 @@ void notificationSyncIsolate() async { while (DateTime.now().isBefore(cutoff)) { await Future.delayed(Duration(seconds: 2)); print('[notificationSyncIsolate] syncing'); + await syncLoop( cache: backgroundCache, pluginInstance: pluginInstance, + params: { + 'protocol': 'https://', + 'homeserver': (authStore.user ?? User()).homeserver, + 'accessToken': (authStore.user ?? User()).accessToken, + 'lastSince': syncStore.lastSince, + 'currentUser': (authStore.user ?? User()).userId, + }, ); print('[notificationSyncIsolate] sync completed - waiting'); } @@ -142,28 +198,14 @@ void notificationSyncIsolate() async { FutureOr syncLoop({ Box cache, FlutterLocalNotificationsPlugin pluginInstance, + Map params, }) async { try { - // Check isolate id and maybe see if a new one is created - final String protocol = cache.get( - CacheSecure.protocol, - ); - - final String homeserver = cache.get( - CacheSecure.homeserver, - ); - - final String accessToken = cache.get( - CacheSecure.accessTokenKey, - ); - - final String lastSince = cache.get( - CacheSecure.lastSinceKey, - ); - - final String currentUser = cache.get( - CacheSecure.currentUser, - ); + final protocol = params['protocol']; + final homeserver = params['homeserver']; + final accessToken = params['accessToken']; + final lastSince = params['lastSince']; + final currentUser = params['currentUser']; if (accessToken == null || lastSince == null) { return; From 5021c2343a125f252f7501fb6c7842f51c0b3aec Mon Sep 17 00:00:00 2001 From: ereio Date: Mon, 26 Oct 2020 21:04:54 -0400 Subject: [PATCH 36/45] android background sync working without Hive and has access to room name map for better notifications --- lib/global/cache/index.dart | 81 +++------ lib/global/cache/serializer.dart | 12 +- lib/store/index.dart | 28 +++- lib/store/settings/actions.dart | 4 + lib/store/sync/actions.dart | 8 +- lib/store/sync/background/service.dart | 224 ++++++++++++------------- lib/views/home/index.dart | 2 +- pubspec.lock | 9 +- pubspec.yaml | 3 +- 9 files changed, 184 insertions(+), 187 deletions(-) diff --git a/lib/global/cache/index.dart b/lib/global/cache/index.dart index 10db62d49..c034ff8c4 100644 --- a/lib/global/cache/index.dart +++ b/lib/global/cache/index.dart @@ -17,7 +17,6 @@ class CacheSecure { static Box cacheMain; static Box cacheRooms; static Box cacheCrypto; - static Box cacheBackground; // cache storage identifiers static const cacheKeyMain = '${Values.appNameLabel}-main-cache'; @@ -31,13 +30,12 @@ class CacheSecure { static const cryptKeyLocation = '${Values.appNameLabel}@cryptKey'; // background data identifiers - static const roomNames = 'room_names'; - static const syncData = 'sync_data'; - static const protocol = 'protocol'; - static const homeserver = 'homeserver'; + static const roomNamesKey = 'roomNamesKey'; + static const protocolKey = 'protocol'; + static const homeserverKey = 'homeserver'; static const accessTokenKey = 'accessToken'; static const lastSinceKey = 'lastSince'; - static const currentUser = 'currentUser'; + static const userIdKey = 'userId'; } Future initCache() async { @@ -50,43 +48,6 @@ Future initCache() async { CacheSecure.cacheMain = await unlockMainCache(); CacheSecure.cacheRooms = await unlockRoomCache(); CacheSecure.cacheCrypto = await unlockCryptoCache(); - CacheSecure.cacheBackground = await unlockBackgroundCache(); -} - -Future initCacheBackground() async { - try { - // Init storage location - final storageLocation = await getApplicationDocumentsDirectory(); - - // Init hive cache + adapters - Hive.init(storageLocation.path); - - return await Hive.openBox(CacheSecure.cacheKeyBackground); - } catch (error) { - debugPrint('[initCacheBackground] $error'); - return null; - } -} - -// // Closes and saves storage -void closeCache() async { - if (CacheSecure.cacheMain != null && CacheSecure.cacheMain.isOpen) { - CacheSecure.cacheMain.close(); - } - - if (CacheSecure.cacheRooms != null && CacheSecure.cacheRooms.isOpen) { - CacheSecure.cacheRooms.close(); - } - - if (CacheSecure.cacheCrypto != null && CacheSecure.cacheCrypto.isOpen) { - CacheSecure.cacheCrypto.close(); - } - - // shouldn't be open on main thread - if (CacheSecure.cacheBackground != null && - CacheSecure.cacheBackground.isOpen) { - CacheSecure.cacheBackground.close(); - } } Future initStorageLocation() async { @@ -122,6 +83,21 @@ Future initStorageLocation() async { } } +// // Closes and saves storage +void closeCache() async { + if (CacheSecure.cacheMain != null && CacheSecure.cacheMain.isOpen) { + CacheSecure.cacheMain.close(); + } + + if (CacheSecure.cacheRooms != null && CacheSecure.cacheRooms.isOpen) { + CacheSecure.cacheRooms.close(); + } + + if (CacheSecure.cacheCrypto != null && CacheSecure.cacheCrypto.isOpen) { + CacheSecure.cacheCrypto.close(); + } +} + String createIVKey() { return CryptKey().genDart(); } @@ -198,7 +174,7 @@ Future unlockMainCache() async { return await Hive.openBox( CacheSecure.cacheKeyMain, crashRecovery: true, - compactionStrategy: (entries, deletedEntries) => deletedEntries > 3, + compactionStrategy: (entries, deletedEntries) => deletedEntries > 1, ); } catch (error) { debugPrint('[Unlock Main CacheSecure] $error'); @@ -211,7 +187,7 @@ Future unlockRoomCache() async { return await Hive.openBox( CacheSecure.cacheKeyRooms, crashRecovery: true, - compactionStrategy: (entries, deletedEntries) => deletedEntries > 3, + compactionStrategy: (entries, deletedEntries) => deletedEntries > 1, ); } catch (error) { debugPrint('[Unlock Room CacheSecure] $error'); @@ -224,20 +200,7 @@ Future unlockCryptoCache() async { return await Hive.openBox( CacheSecure.cacheKeyCrypto, crashRecovery: true, - compactionStrategy: (entries, deletedEntries) => deletedEntries > 3, - ); - } catch (error) { - debugPrint('[Unlock Crypto CacheSecure] $error'); - return null; - } -} - -Future unlockBackgroundCache() async { - try { - return await Hive.openBox( - CacheSecure.cacheKeyBackground, - crashRecovery: true, - compactionStrategy: (entries, deletedEntries) => deletedEntries > 3, + compactionStrategy: (entries, deletedEntries) => deletedEntries > 1, ); } catch (error) { debugPrint('[Unlock Crypto CacheSecure] $error'); diff --git a/lib/global/cache/serializer.dart b/lib/global/cache/serializer.dart index fed64d50b..b8653facd 100644 --- a/lib/global/cache/serializer.dart +++ b/lib/global/cache/serializer.dart @@ -58,12 +58,12 @@ class CacheSerializer implements StateSerializer { // encode the store contents to json // HACK: unable to pass both listed stores direct to an isolate - final sensitiveStorage = [AuthStore, SyncStore, CryptoStore]; - if (!sensitiveStorage.contains(store.runtimeType)) { - jsonEncoded = await compute(jsonEncode, store); - } else { - jsonEncoded = json.encode(store); - } + // final sensitiveStorage = [AuthStore, SyncStore, CryptoStore]; + // if (!sensitiveStorage.contains(store.runtimeType)) { + // jsonEncoded = await compute(jsonEncode, store); + // } else { + jsonEncoded = json.encode(store); + // } // encrypt the store contents previously converted to json jsonEncrypted = await compute(encryptJsonBackground, { diff --git a/lib/store/index.dart b/lib/store/index.dart index 7904386b7..51c15bcef 100644 --- a/lib/store/index.dart +++ b/lib/store/index.dart @@ -95,6 +95,25 @@ AppState appReducer(AppState state, action) => AppState( * this is why the "storage: MemoryStore()" property is set and * the Hive Serializer has been impliemented */ +// Future initStore() async { +// // Configure redux persist instance +// final persistor = Persistor( +// storage: MemoryStorage(), +// serializer: CacheSerializer(), +// throttleDuration: Duration(milliseconds: 4500), +// shouldSave: (Store store, dynamic action) { +// switch (action.runtimeType) { +// case SetSyncing: +// case SetSynced: +// // debugPrint('[Redux Persist] cache skip'); +// return false; +// default: +// // debugPrint('[Redux Persist] caching'); +// return true; +// } +// }, +// ); + Future initStore() async { // Configure redux persist instance final persistor = Persistor( @@ -103,13 +122,16 @@ Future initStore() async { throttleDuration: Duration(milliseconds: 4500), shouldSave: (Store store, dynamic action) { switch (action.runtimeType) { - case SetSyncing: case SetSynced: - // debugPrint('[Redux Persist] cache skip'); + if (action.synced) { + return true; + } return false; + // debugPrint('[Redux Persist] cache skip'); + case SetSyncing: default: // debugPrint('[Redux Persist] caching'); - return true; + return false; } }, ); diff --git a/lib/store/settings/actions.dart b/lib/store/settings/actions.dart index d0937e0a7..db3e35457 100644 --- a/lib/store/settings/actions.dart +++ b/lib/store/settings/actions.dart @@ -416,6 +416,9 @@ ThunkAction toggleNotifications() { )) { store.dispatch(ToggleNotifications()); final enabled = store.state.settingsStore.notificationsEnabled; + final Map roomNames = store.state.roomStore.rooms.map( + (roomId, room) => MapEntry(roomId, room.name), + ); if (enabled) { await BackgroundSync.init(); BackgroundSync.start( @@ -424,6 +427,7 @@ ThunkAction toggleNotifications() { accessToken: store.state.authStore.user.accessToken, lastSince: store.state.syncStore.lastSince, currentUser: store.state.authStore.user.userId, + roomNames: roomNames, ); showBackgroundServiceNotification( diff --git a/lib/store/sync/actions.dart b/lib/store/sync/actions.dart index dd2ad6e59..ab3566229 100644 --- a/lib/store/sync/actions.dart +++ b/lib/store/sync/actions.dart @@ -87,7 +87,7 @@ ThunkAction startSyncObserver() { Duration(seconds: interval), (timer) async { if (store.state.syncStore.lastSince == null) { - debugPrint('[Sync Observer] skipping sync, needs full sync'); + debugPrint('[startSyncObserver] skipping sync, needs full sync'); return; } @@ -104,7 +104,7 @@ ThunkAction startSyncObserver() { ); debugPrint( - '[Sync Observer] backoff at ${DateTime.now().difference(lastAttempt)} of $backoffFactor', + '[startSyncObserver] backoff at ${DateTime.now().difference(lastAttempt)} of $backoffFactor', ); if (backoffLimit == 1) { @@ -118,11 +118,11 @@ ThunkAction startSyncObserver() { } if (store.state.syncStore.syncing) { - debugPrint('[Sync Observer] still syncing'); + debugPrint('[startSyncObserver] still syncing'); return; } - debugPrint('[Sync Observer] running sync'); + debugPrint('[startSyncObserver] running sync'); store.dispatch(fetchSync(since: store.state.syncStore.lastSince)); }, ); diff --git a/lib/store/sync/background/service.dart b/lib/store/sync/background/service.dart index a7e173d75..8546054d4 100644 --- a/lib/store/sync/background/service.dart +++ b/lib/store/sync/background/service.dart @@ -9,30 +9,25 @@ import 'package:flutter/material.dart'; // Package imports: import 'package:android_alarm_manager/android_alarm_manager.dart'; +import 'package:flutter_dotenv/flutter_dotenv.dart'; import 'package:flutter_secure_storage/flutter_secure_storage.dart'; -import 'package:steel_crypt/steel_crypt.dart'; import 'package:syphon/global/cache/index.dart'; -// Project imports: -import 'package:syphon/global/libs/hive/index.dart'; - // Dart imports: import 'dart:math'; // Package imports: import 'package:flutter_local_notifications/flutter_local_notifications.dart'; import 'package:hive/hive.dart'; -import 'package:path_provider/path_provider.dart'; // Project imports: import 'package:syphon/global/libs/matrix/index.dart'; import 'package:syphon/global/notifications.dart'; -import 'package:syphon/store/auth/state.dart'; import 'package:syphon/store/rooms/room/model.dart'; -import 'package:syphon/store/sync/state.dart'; -import 'package:syphon/store/user/model.dart'; import 'package:syphon/store/user/selectors.dart'; +final protocol = DotEnv().env['PROTOCOL']; + /** * Background Sync Service (Android Only) * static class for managing service through app lifecycle @@ -58,16 +53,34 @@ class BackgroundSync { // android only background sync if (!Platform.isAndroid) return; - final box = await openHiveBackgroundUnsafe(); - - await box.put(CacheSecure.protocol, protocol); - await box.put(CacheSecure.homeserver, homeserver); - await box.put(CacheSecure.accessTokenKey, accessToken); - await box.put(CacheSecure.lastSinceKey, lastSince); - await box.put(CacheSecure.currentUser, currentUser); - await box.put(CacheSecure.roomNames, roomNames); - - await box.close(); + final secureStorage = FlutterSecureStorage(); + + await Future.wait([ + secureStorage.write( + key: CacheSecure.protocolKey, + value: protocol, + ), + secureStorage.write( + key: CacheSecure.homeserverKey, + value: homeserver, + ), + secureStorage.write( + key: CacheSecure.accessTokenKey, + value: accessToken, + ), + secureStorage.write( + key: CacheSecure.lastSinceKey, + value: lastSince, + ), + secureStorage.write( + key: CacheSecure.userIdKey, + value: currentUser, + ), + secureStorage.write( + key: CacheSecure.roomNamesKey, + value: jsonEncode(roomNames), + ) + ]); await AndroidAlarmManager.periodic( Duration(seconds: serviceTimeout), @@ -86,12 +99,6 @@ class BackgroundSync { debugPrint('[BackgroundSync] Failed To Stop $error'); } } - - static void updateRooms({Map roomNames}) async { - final box = await openHiveBackgroundUnsafe(); - await box.put(CacheSecure.roomNames, roomNames); - await box.close(); - } } /** @@ -104,60 +111,31 @@ class BackgroundSync { */ void notificationSyncIsolate() async { try { - // Init storage location - var ivKey; - var cryptKey; - var storageLocation; - var storageSecured; - - AuthStore authStore; - SyncStore syncStore; + String protocol; + String homeserver; + String accessToken; + String lastSince; + String userId; + Map roomNames; try { - storageSecured = FlutterSecureStorage(); - storageLocation = await getApplicationDocumentsDirectory(); - } catch (error) { - print('[notificationSyncIsolate] $error'); - } + final secureStorage = FlutterSecureStorage(); - try { - // Pull encryption key and iv - ivKey = await storageSecured.read( - key: CacheSecure.ivKeyLocation, - ); + protocol = await secureStorage.read(key: CacheSecure.protocolKey); + homeserver = await secureStorage.read(key: CacheSecure.homeserverKey); + accessToken = await secureStorage.read(key: CacheSecure.accessTokenKey); + lastSince = await secureStorage.read(key: CacheSecure.lastSinceKey); + userId = await secureStorage.read(key: CacheSecure.userIdKey); - cryptKey = await storageSecured.read( - key: CacheSecure.cryptKeyLocation, + roomNames = jsonDecode( + await secureStorage.read(key: CacheSecure.roomNamesKey), ); - // Configure getters - Box cacheMain = await Hive.openBox(CacheSecure.cacheKeyMain); - final cryptor = AesCrypt(key: cryptKey, padding: PaddingAES.pkcs7); - - final authStoreEncrypted = cacheMain.get((AuthStore).toString()); - final syncStoreEncrypted = cacheMain.get((SyncStore).toString()); - - final authStoreDecrypted = - cryptor.ctr.decrypt(enc: authStoreEncrypted, iv: ivKey); - final syncStoreDecrypted = - cryptor.ctr.decrypt(enc: syncStoreEncrypted, iv: ivKey); - - authStore = jsonDecode(authStoreDecrypted); - syncStore = jsonDecode(syncStoreDecrypted); + // Init hive cache + adapters } catch (error) { print('[notificationSyncIsolate] $error'); } - try { - authStore.user.accessToken; - } catch (error) { - print('[notificationSyncIsolate] $error'); - } - - // Init hive cache + adapters - Hive.init(storageLocation.path); - Box backgroundCache = await Hive.openBox(CacheSecure.cacheKeyBackground); - // Init notifiations for background service and new messages/events FlutterLocalNotificationsPlugin pluginInstance = await initNotifications(); @@ -172,23 +150,21 @@ void notificationSyncIsolate() async { while (DateTime.now().isBefore(cutoff)) { await Future.delayed(Duration(seconds: 2)); - print('[notificationSyncIsolate] syncing'); await syncLoop( - cache: backgroundCache, pluginInstance: pluginInstance, params: { - 'protocol': 'https://', - 'homeserver': (authStore.user ?? User()).homeserver, - 'accessToken': (authStore.user ?? User()).accessToken, - 'lastSince': syncStore.lastSince, - 'currentUser': (authStore.user ?? User()).userId, + 'protocol': protocol, + 'homeserver': homeserver, + 'accessToken': accessToken, + 'lastSince': lastSince, + 'userId': userId, + 'roomNames': roomNames, }, ); - print('[notificationSyncIsolate] sync completed - waiting'); } } catch (error) { - print('[notificationSyncIsolate] init failed $error'); + print('[notificationSyncIsolate] $error'); } } @@ -205,12 +181,27 @@ FutureOr syncLoop({ final homeserver = params['homeserver']; final accessToken = params['accessToken']; final lastSince = params['lastSince']; - final currentUser = params['currentUser']; + final userId = params['userId'] ?? params['currentUser']; + final Map roomNames = params['roomNames']; if (accessToken == null || lastSince == null) { return; } + var lastSinceNew; + + // Try to pull new lastSince if available + try { + final secureStorage = FlutterSecureStorage(); + + lastSinceNew = await secureStorage.read( + key: CacheSecure.lastSinceKey, + ); + // Init hive cache + adapters + } catch (error) { + print('[syncLoop] $error'); + } + /** * Check last since and see if any new messages arrived in the payload * No need to update the hive store for now, just do not save the lastSince @@ -220,53 +211,62 @@ FutureOr syncLoop({ protocol: protocol, homeserver: homeserver, accessToken: accessToken, - since: lastSince, + since: lastSinceNew ?? lastSince, timeout: 10000, ); - final lastSinceNew = data['next_batch']; + // Parse sync response + lastSinceNew = data['next_batch']; final Map rawRooms = data['rooms']['join']; + // Save new 'since' value for the next sync try { - await cache.put(CacheSecure.lastSinceKey, lastSinceNew); - - rawRooms.forEach((roomId, json) { - // Filter through parsers - final room = Room().fromSync(json: json, lastSince: lastSinceNew); - - if (room.messages.length == 1) { - final String messageSender = room.messages[0].sender; - final formattedSender = trimAlias(messageSender); - - if (!formattedSender.contains(currentUser)) { - if (room.direct) { - return showMessageNotification( - messageHash: Random.secure().nextInt(20000), - body: '$formattedSender sent a new message.', - pluginInstance: pluginInstance, - ); - } - - if (room.invite) { - return showMessageNotification( - messageHash: Random.secure().nextInt(20000), - body: '$formattedSender invited you to chat', - pluginInstance: pluginInstance, - ); - } + final secureStorage = FlutterSecureStorage(); + + await secureStorage.write( + key: CacheSecure.lastSinceKey, + value: lastSinceNew, + ); + // Init hive cache + adapters + } catch (error) { + print('[syncLoop] $error'); + } + // Filter each room through the parser + rawRooms.forEach((roomId, json) { + final room = Room().fromSync(json: json, lastSince: lastSinceNew); + + if (room.messages.length == 1) { + final String messageSender = room.messages[0].sender; + final String formattedSender = trimAlias(messageSender); + + if (!formattedSender.contains(userId)) { + if (room.direct) { return showMessageNotification( messageHash: Random.secure().nextInt(20000), - body: '$formattedSender sent a new message', + body: '$formattedSender sent a new message.', pluginInstance: pluginInstance, ); } + + if (room.invite) { + return showMessageNotification( + messageHash: Random.secure().nextInt(20000), + body: '$formattedSender invited you to chat', + pluginInstance: pluginInstance, + ); + } + + final roomName = roomNames[roomId]; + return showMessageNotification( + messageHash: Random.secure().nextInt(20000), + body: '$formattedSender sent a new message in $roomName', + pluginInstance: pluginInstance, + ); } - }); - } catch (error) { - print('[notificationSyncIsolate] to cache new lastSince'); - } + } + }); } catch (error) { - print('[notificationSyncIsolate] sync failed $error'); + print('[syncLoop] $error'); } } diff --git a/lib/views/home/index.dart b/lib/views/home/index.dart index 85386133a..a02ec7f29 100644 --- a/lib/views/home/index.dart +++ b/lib/views/home/index.dart @@ -302,7 +302,6 @@ class HomeViewState extends State { } else if (roomColorDefaults.containsKey(room.id)) { primaryColor = roomColorDefaults[room.id]; } else { - debugPrint('[ListView.builder] generating new color'); primaryColor = Colours.hashedColor(room.id); roomColorDefaults.putIfAbsent( room.id, @@ -310,6 +309,7 @@ class HomeViewState extends State { ); } + // highlight selected rooms if necessary if (selectedRoom != null) { if (selectedRoom.id != room.id) { backgroundColor = Theme.of(context).scaffoldBackgroundColor; diff --git a/pubspec.lock b/pubspec.lock index c824471e0..61c9da5f9 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -21,7 +21,7 @@ packages: name: android_alarm_manager url: "https://pub.dartlang.org" source: hosted - version: "0.4.5+11" + version: "0.4.5+15" archive: dependency: transitive description: @@ -746,6 +746,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "0.3.0" + sembast: + dependency: "direct main" + description: + name: sembast + url: "https://pub.dartlang.org" + source: hosted + version: "2.4.7+7" shared_preferences: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 469a568c8..0135fbfa2 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -81,6 +81,7 @@ dependencies: # Cache hive: 1.4.4 hive_flutter: 0.3.1 + sembast: 2.4.7+7 flutter_secure_storage: 3.3.3 json_annotation: ^3.1.0 checked_yaml: 1.0.2 @@ -94,7 +95,7 @@ dependencies: http_parser: 3.1.4 easy_localization: 2.3.3 flutter_dotenv: 2.1.0 - android_alarm_manager: 0.4.5+11 + android_alarm_manager: 0.4.5+15 # flutter_apns: 1.1.0 # TODO: extract only the iOS code and remove # Desktop UI Only - UNCOMMENT FOR BUILDS From 20cb79b4b55933f86e0973b777734cb1104b0a12 Mon Sep 17 00:00:00 2001 From: ereio Date: Mon, 26 Oct 2020 21:28:32 -0400 Subject: [PATCH 37/45] cleanup and bug fix for showing permissions error on invite --- lib/store/rooms/actions.dart | 2 +- lib/store/sync/background/service.dart | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/store/rooms/actions.dart b/lib/store/rooms/actions.dart index 55f94953f..dc5d6ae3b 100644 --- a/lib/store/rooms/actions.dart +++ b/lib/store/rooms/actions.dart @@ -788,7 +788,7 @@ ThunkAction inviteUser({ return true; } catch (error) { store.dispatch( - addAlert(error: error, origin: 'inviteUser'), + addAlert(error: error, message: error, origin: 'inviteUser'), ); return false; } finally { diff --git a/lib/store/sync/background/service.dart b/lib/store/sync/background/service.dart index 8546054d4..7aaa60a77 100644 --- a/lib/store/sync/background/service.dart +++ b/lib/store/sync/background/service.dart @@ -96,7 +96,7 @@ class BackgroundSync { try { await AndroidAlarmManager.cancel(service_id); } catch (error) { - debugPrint('[BackgroundSync] Failed To Stop $error'); + debugPrint('[BackgroundSync] $error'); } } } @@ -148,6 +148,8 @@ void notificationSyncIsolate() async { Duration(seconds: BackgroundSync.serviceTimeout), ); + print('[notificationSyncIsolate] enabled background sync'); + while (DateTime.now().isBefore(cutoff)) { await Future.delayed(Duration(seconds: 2)); From b3d2777f2dfa44c2ebcec6b92a9791afa7a65ec3 Mon Sep 17 00:00:00 2001 From: ereio Date: Mon, 26 Oct 2020 21:43:36 -0400 Subject: [PATCH 38/45] allow background sync initialization to fail gracefully --- lib/store/sync/background/service.dart | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/store/sync/background/service.dart b/lib/store/sync/background/service.dart index 7aaa60a77..0862e4cd0 100644 --- a/lib/store/sync/background/service.dart +++ b/lib/store/sync/background/service.dart @@ -39,7 +39,11 @@ class BackgroundSync { static Isolate backgroundIsolate; static Future init() async { - return await AndroidAlarmManager.initialize(); + try { + return await AndroidAlarmManager.initialize(); + } catch (error) { + debugPrint('[BackgroundSync.init] ${error}'); + } } static void start({ From d41beff336515c0e486d2b2419f364bca98f1f34 Mon Sep 17 00:00:00 2001 From: ereio Date: Mon, 26 Oct 2020 21:52:59 -0400 Subject: [PATCH 39/45] removing sembast dependency, was testing --- pubspec.lock | 7 ------- pubspec.yaml | 2 +- 2 files changed, 1 insertion(+), 8 deletions(-) diff --git a/pubspec.lock b/pubspec.lock index 61c9da5f9..c351ee290 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -746,13 +746,6 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "0.3.0" - sembast: - dependency: "direct main" - description: - name: sembast - url: "https://pub.dartlang.org" - source: hosted - version: "2.4.7+7" shared_preferences: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 0135fbfa2..5fb754df6 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -81,10 +81,10 @@ dependencies: # Cache hive: 1.4.4 hive_flutter: 0.3.1 - sembast: 2.4.7+7 flutter_secure_storage: 3.3.3 json_annotation: ^3.1.0 checked_yaml: 1.0.2 + # sembast: 2.4.7+7 # isolate_handler: 0.3.1 # flutter_isolate: 1.0.0+14 From 826b5ec7fa903f05fbc6d64c87bc8c10d7f46c6a Mon Sep 17 00:00:00 2001 From: ereio Date: Mon, 26 Oct 2020 22:55:29 -0400 Subject: [PATCH 40/45] fixing the strange room name issues for when sending invites or loading rooms for the first time --- lib/store/rooms/actions.dart | 19 ++++- lib/store/rooms/room/model.dart | 127 +++++++++++++++----------------- 2 files changed, 76 insertions(+), 70 deletions(-) diff --git a/lib/store/rooms/actions.dart b/lib/store/rooms/actions.dart index dc5d6ae3b..c6a2f8126 100644 --- a/lib/store/rooms/actions.dart +++ b/lib/store/rooms/actions.dart @@ -9,6 +9,7 @@ import 'package:flutter/foundation.dart'; import 'package:flutter_dotenv/flutter_dotenv.dart'; import 'package:redux/redux.dart'; import 'package:redux_thunk/redux_thunk.dart'; +import 'package:syphon/global/algos.dart'; // Project imports: import 'package:syphon/store/rooms/selectors.dart' as roomSelectors; @@ -391,7 +392,7 @@ ThunkAction createRoom({ String preset = RoomPresets.private, }) { return (Store store) async { - var room; + Room room; try { store.dispatch(SetLoading(loading: true)); await store.dispatch(stopSyncObserver()); @@ -414,10 +415,20 @@ ThunkAction createRoom({ throw data['error']; } - room = Room( - id: data['room_id'], + // Create a room object with a new room id + room = Room(id: data['room_id']); + + // Add invites to the user list beforehand + final userInviteMap = Map.fromIterable( + invites, + key: (user) => user.userId, + value: (user) => user, ); + room = room.copyWith(users: userInviteMap); + + printJson(userInviteMap); + if (avatarFile != null) { await store.dispatch( updateRoomAvatar(roomId: room.id, localFile: avatarFile), @@ -440,6 +451,8 @@ ThunkAction createRoom({ await store.dispatch(toggleRoomEncryption(room: room)); } + await store.dispatch(SetRoom(room: room)); + return room.id; } catch (error) { store.dispatch( diff --git a/lib/store/rooms/room/model.dart b/lib/store/rooms/room/model.dart index 957dbcc71..2dd466318 100644 --- a/lib/store/rooms/room/model.dart +++ b/lib/store/rooms/room/model.dart @@ -5,6 +5,7 @@ import 'dart:collection'; import 'package:flutter/material.dart'; import 'package:hive/hive.dart'; import 'package:json_annotation/json_annotation.dart'; +import 'package:syphon/global/algos.dart'; // Project imports: import 'package:syphon/global/libs/hive/type-ids.dart'; @@ -187,40 +188,39 @@ class Room { prevHash, nextHash, // state, - }) { - return Room( - id: id ?? this.id, - name: name ?? this.name, - alias: alias ?? this.alias, - topic: topic ?? this.topic, - joinRule: joinRule ?? this.joinRule, - avatarUri: avatarUri ?? this.avatarUri, - homeserver: homeserver ?? this.homeserver, - draft: draft ?? this.draft, - invite: invite ?? this.invite, - direct: direct ?? this.direct, - sending: sending ?? this.sending, - syncing: syncing ?? this.syncing, - limited: limited ?? this.limited, - lastRead: lastRead ?? this.lastRead, - lastUpdate: lastUpdate ?? this.lastUpdate, - namePriority: namePriority ?? this.namePriority, - totalJoinedUsers: totalJoinedUsers ?? this.totalJoinedUsers, - guestEnabled: guestEnabled ?? this.guestEnabled, - encryptionEnabled: encryptionEnabled ?? this.encryptionEnabled, - userTyping: userTyping ?? this.userTyping, - usersTyping: usersTyping ?? this.usersTyping, - isDraftRoom: isDraftRoom ?? this.isDraftRoom, - outbox: outbox ?? this.outbox, - messages: messages ?? this.messages, - users: users ?? this.users, - messageReads: messageReads ?? this.messageReads, - lastHash: lastHash ?? this.lastHash, - prevHash: prevHash ?? this.prevHash, - nextHash: nextHash ?? this.nextHash, - // state: state ?? this.state, - ); - } + }) => + Room( + id: id ?? this.id, + name: name ?? this.name, + alias: alias ?? this.alias, + topic: topic ?? this.topic, + joinRule: joinRule ?? this.joinRule, + avatarUri: avatarUri ?? this.avatarUri, + homeserver: homeserver ?? this.homeserver, + draft: draft ?? this.draft, + invite: invite ?? this.invite, + direct: direct ?? this.direct, + sending: sending ?? this.sending, + syncing: syncing ?? this.syncing, + limited: limited ?? this.limited, + lastRead: lastRead ?? this.lastRead, + lastUpdate: lastUpdate ?? this.lastUpdate, + namePriority: namePriority ?? this.namePriority, + totalJoinedUsers: totalJoinedUsers ?? this.totalJoinedUsers, + guestEnabled: guestEnabled ?? this.guestEnabled, + encryptionEnabled: encryptionEnabled ?? this.encryptionEnabled, + userTyping: userTyping ?? this.userTyping, + usersTyping: usersTyping ?? this.usersTyping, + isDraftRoom: isDraftRoom ?? this.isDraftRoom, + outbox: outbox ?? this.outbox, + messages: messages ?? this.messages, + users: users ?? this.users, + messageReads: messageReads ?? this.messageReads, + lastHash: lastHash ?? this.lastHash, + prevHash: prevHash ?? this.prevHash, + nextHash: nextHash ?? this.nextHash, + // state: state ?? this.state, + ); Map toJson() => _$RoomToJson(this); factory Room.fromJson(Map json) => _$RoomFromJson(json); @@ -395,6 +395,10 @@ class Room { final timestamp = event.timestamp ?? 0; lastUpdate = timestamp > lastUpdate ? event.timestamp : lastUpdate; + print("[event.id] sender ${event.sender}"); + print("[event.id] content"); + printJson(event.content); + switch (event.type) { case 'm.room.name': if (namePriority > 0) { @@ -444,21 +448,6 @@ class Room { ); } - // likely an invite room - // attempt to show a name from whoever sent membership events - // if nothing else takes priority - if (namePriority == 4 && event.sender != currentUser.userId) { - if (displayName == null) { - namePriority = 4; - name = trimAlias(event.sender); - avatarUri = memberAvatarUri; - } else if (displayName != currentUser.displayName) { - namePriority = 4; - name = displayName; - avatarUri = memberAvatarUri; - } - } - break; case 'm.room.encryption': encryptionEnabled = true; @@ -471,33 +460,37 @@ class Room { }); } catch (error) {} - // direct room naming check try { - final badRoomName = - name == currentUser.displayName || name == currentUser.userId; - // what happens if you name a direct chat after the // person you're sending it to? bad stuff, this tries // to force the senders name on the room just in case - if (namePriority != 0 && users.isNotEmpty && (direct || badRoomName)) { - namePriority = 0; + final badRoomName = + name == currentUser.displayName || name == currentUser.userId; - // Filter out number of non current users to show preview of total and wh - final nonCurrentUsers = users.values.where( + // no name room check + if ((namePriority > 3 && users.isNotEmpty && direct) || badRoomName) { + // Filter out number of non current users to show preview of total + final otherUsers = users.values.where( (user) => - user.displayName != currentUser.displayName && - user.userId != currentUser.userId, + user.userId != currentUser.userId && + user.displayName != currentUser.displayName, ); - final hasMultipleUsers = - nonCurrentUsers.isNotEmpty && nonCurrentUsers.length > 1; - final shownUser = users.values.elementAt(0); + if (otherUsers.isNotEmpty) { + // check naming options when direct/group without room name + final shownUser = otherUsers.elementAt(0); + final hasMultipleUsers = otherUsers.length > 1; + + // set name and avi to first non user or that + total others + name = hasMultipleUsers + ? '${shownUser.displayName} and ${users.values.length - 1}' + : shownUser.displayName; - // set name and avi to first non user or that + total others - name = hasMultipleUsers - ? '${shownUser.displayName} and ${users.values.length - 1}' - : shownUser.displayName; - avatarUri = shownUser.avatarUri; + // set avatar if one has not been assigned + if (avatarUri == null) { + avatarUri = shownUser.avatarUri; + } + } } } catch (error) {} From e80425fce7e26ae4ca996e90dfda9c4918f6445b Mon Sep 17 00:00:00 2001 From: ereio Date: Mon, 26 Oct 2020 23:11:49 -0400 Subject: [PATCH 41/45] small fix for avatars --- lib/store/rooms/room/model.dart | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/lib/store/rooms/room/model.dart b/lib/store/rooms/room/model.dart index 2dd466318..316b9d259 100644 --- a/lib/store/rooms/room/model.dart +++ b/lib/store/rooms/room/model.dart @@ -395,10 +395,6 @@ class Room { final timestamp = event.timestamp ?? 0; lastUpdate = timestamp > lastUpdate ? event.timestamp : lastUpdate; - print("[event.id] sender ${event.sender}"); - print("[event.id] content"); - printJson(event.content); - switch (event.type) { case 'm.room.name': if (namePriority > 0) { @@ -487,7 +483,7 @@ class Room { : shownUser.displayName; // set avatar if one has not been assigned - if (avatarUri == null) { + if (avatarUri == null && this.avatarUri == null) { avatarUri = shownUser.avatarUri; } } From f2ae61a78b7cfdfc45eec39ac34e54a9cf933800 Mon Sep 17 00:00:00 2001 From: ereio Date: Tue, 27 Oct 2020 21:32:27 -0400 Subject: [PATCH 42/45] invite friends menu option works if you have permissions to invite users --- assets/cheatsheet.md | 29 ++++ lib/global/cache/index.dart | 6 +- lib/global/cache/serializer.dart | 8 +- lib/global/libs/jack/index.dart | 28 ++++ lib/global/print.dart | 19 +++ lib/global/strings.dart | 3 + lib/main.dart | 4 +- lib/store/auth/actions.dart | 24 +--- lib/store/auth/state.dart | 59 ++++---- lib/store/crypto/actions.dart | 4 +- lib/store/crypto/reducer.dart | 2 +- lib/store/index.dart | 13 +- lib/store/rooms/room/model.dart | 9 +- lib/store/sync/actions.dart | 32 +---- lib/store/user/state.dart | 1 + lib/views/home/chat/index.dart | 5 +- lib/views/home/groups/invite-users.dart | 131 ++++++++++++------ lib/views/home/profile/details-user.dart | 1 - lib/views/widgets/appbars/appbar-chat.dart | 10 +- .../widgets/dialogs/dialog-invite-users.dart | 128 +++++++++++++++++ .../widgets/lists/list-user-bubbles.dart | 2 +- 21 files changed, 372 insertions(+), 146 deletions(-) create mode 100644 assets/cheatsheet.md create mode 100644 lib/global/print.dart create mode 100644 lib/views/widgets/dialogs/dialog-invite-users.dart diff --git a/assets/cheatsheet.md b/assets/cheatsheet.md new file mode 100644 index 000000000..6cdb0dd37 --- /dev/null +++ b/assets/cheatsheet.md @@ -0,0 +1,29 @@ + + +### User Creation + +```dart +/** + * + * https://matrix.org/docs/spec/client_server/latest#id204 + * + * + * Email Request (?) + * https://matrix-client.matrix.org/_matrix/client/r0/register/email/requestToken + * + * Request Token + SID + * {"email":"syphon+testing@ere.io","client_secret":"MDWVwN79p5xIz7bgazVXvO8aabbVD0LN","send_attempt":1,"next_link":"https://app.element.io/#/register?client_secret=MDWVwN79p5xIz7bgazVXvO8aabbVD0LN&hs_url=https%3A%2F%2Fmatrix-client.matrix.org&is_url=https%3A%2F%2Fvector.im&session_id=yGElwHyWRFHwVkChpyWIJqMO"} + * + * Response Token + SID + * {"sid": "UTWiabjnSXWWTAPs"} + * + * + * Send Terms (?) + * {"username":"syphon2","password":"testing again to see","initial_device_display_name":"app.element.io (Chrome, macOS)","auth":{"session":"yGElwHyWRFHwVkChpyWIJqMO","type":"m.login.terms"},"inhibit_login":true} + * + * Send Email Auth (?) + * {"username":"syphon2","password":"testing again to see","initial_device_display_name":"app.element.io (Chrome, macOS)","auth":{"session":"yGElwHyWRFHwVkChpyWIJqMO","type":"m.login.email.identity","threepid_creds":{"sid":"UTWiabjnSXWWTAPs","client_secret":"MDWVwN79p5xIz7bgazVXvO8aabbVD0LN"},"threepidCreds":{"sid":"UTWiabjnSXWWTAPs","client_secret":"MDWVwN79p5xIz7bgazVXvO8aabbVD0LN"}},"inhibit_login":true} + * + */ +ThunkAction createUser({enableErrors = false}) {} +``` \ No newline at end of file diff --git a/lib/global/cache/index.dart b/lib/global/cache/index.dart index c034ff8c4..7e8fddbb5 100644 --- a/lib/global/cache/index.dart +++ b/lib/global/cache/index.dart @@ -177,7 +177,7 @@ Future unlockMainCache() async { compactionStrategy: (entries, deletedEntries) => deletedEntries > 1, ); } catch (error) { - debugPrint('[Unlock Main CacheSecure] $error'); + debugPrint('[unlockMainCache] $error'); return null; } } @@ -190,7 +190,7 @@ Future unlockRoomCache() async { compactionStrategy: (entries, deletedEntries) => deletedEntries > 1, ); } catch (error) { - debugPrint('[Unlock Room CacheSecure] $error'); + debugPrint('[unlockRoomCache] $error'); return null; } } @@ -203,7 +203,7 @@ Future unlockCryptoCache() async { compactionStrategy: (entries, deletedEntries) => deletedEntries > 1, ); } catch (error) { - debugPrint('[Unlock Crypto CacheSecure] $error'); + debugPrint('[unlockCryptoCache] $error'); return null; } } diff --git a/lib/global/cache/serializer.dart b/lib/global/cache/serializer.dart index b8653facd..2aa019fe8 100644 --- a/lib/global/cache/serializer.dart +++ b/lib/global/cache/serializer.dart @@ -97,7 +97,7 @@ class CacheSerializer implements StateSerializer { } } catch (error) { debugPrint( - '[Cache Serializer Encode] $error', + '[CacheSerializer.encode] $error', ); } })); @@ -181,7 +181,7 @@ class CacheSerializer implements StateSerializer { ); decodedJson = json.decode(decryptedJson); } catch (error) { - debugPrint('[Cache Serializer Decode] $error'); + debugPrint('[CacheSerializer.decode] $error'); decodedJson = {}; } } @@ -196,7 +196,7 @@ class CacheSerializer implements StateSerializer { ); decodedJson = json.decode(decryptedJson); } catch (error) { - debugPrint('[Cache Serializer Decode] $error'); + debugPrint('[CacheSerializer.decode] $error'); decodedJson = {}; } } @@ -231,7 +231,7 @@ class CacheSerializer implements StateSerializer { break; } } catch (error) { - debugPrint('[Cache Serializer Decode] $error'); + debugPrint('[CacheSerializer.decode] $error'); } }); diff --git a/lib/global/libs/jack/index.dart b/lib/global/libs/jack/index.dart index bee5a61ea..d9a70253a 100644 --- a/lib/global/libs/jack/index.dart +++ b/lib/global/libs/jack/index.dart @@ -34,3 +34,31 @@ class JackApi { return await json.decode(response.body); } } + +// // WARNING: ONLY FOR TESTING OUTPUT +// Future get _localPath async { +// final directory = await getApplicationDocumentsDirectory(); + +// return directory.path; +// } + +// // WARNING: ONLY FOR TESTING OUTPUT +// Future get _localFile async { +// final path = await _localPath; +// return File('$path/matrix.json'); +// } + +// // WARNING: ONLY FOR TESTING OUTPUT +// Future readFullSyncJson() async { +// try { +// final file = await _localFile; +// String contents = await file.readAsString(); +// return await jsonDecode(contents); +// } catch (error) { +// // If encountering an error, return 0. +// debugPrint('[readFullSyncJson] $error'); +// return null; +// } finally { +// debugPrint('** Read State From Disk Successfully **'); +// } +// } diff --git a/lib/global/print.dart b/lib/global/print.dart new file mode 100644 index 000000000..789dea1fa --- /dev/null +++ b/lib/global/print.dart @@ -0,0 +1,19 @@ +void printInfo(String content, {String title}) { + final body = title != null ? '[$title] $content' : content; + print('\u001b[32m$body\u001b[0m'); +} + +void printWarning(String content, {String title}) { + final body = title != null ? '[$title] $content' : content; + print('\u001b[34m$body\u001b[0m'); +} + +void printError(String content, {String title}) { + final body = title != null ? '[$title] $content' : content; + print('\u001b[31m$body\u001b[0m'); +} + +void printDebug(String content, {String title}) { + final body = title != null ? '[$title] $content' : content; + print(body); +} diff --git a/lib/global/strings.dart b/lib/global/strings.dart index 0e4d11eaa..3386535c4 100644 --- a/lib/global/strings.dart +++ b/lib/global/strings.dart @@ -108,6 +108,9 @@ class Strings { static const confirmationInvite = 'Are you sure you want to invite the following user to the following room?'; + static const confirmationInvites = + 'Are you sure you want to invite the selected users to the following room?'; + static const confirmationStartChat = 'Even if you don\'t send a message, ' + 'the user will still see your invite to chat.'; static const confirmationAttemptChat = 'Even if you don\'t send a message, ' + diff --git a/lib/main.dart b/lib/main.dart index 58a4f57cb..9df1407f8 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -3,7 +3,7 @@ import 'dart:async'; import 'dart:io'; // Flutter imports: -import 'package:easy_localization/easy_localization.dart'; +import 'package:easy_localization/easy_localization.dart' as localization; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter/scheduler.dart'; @@ -213,7 +213,7 @@ class SyphonState extends State with WidgetsBindingObserver { @override Widget build(BuildContext context) => StoreProvider( store: store, - child: EasyLocalization( + child: localization.EasyLocalization( path: 'assets/translations', useOnlyLangCode: true, startLocale: diff --git a/lib/store/auth/actions.dart b/lib/store/auth/actions.dart index 4071b4a2e..603e3130e 100644 --- a/lib/store/auth/actions.dart +++ b/lib/store/auth/actions.dart @@ -1,6 +1,5 @@ // Dart imports: import 'dart:async'; -import 'dart:convert'; import 'dart:io'; import 'dart:math'; @@ -9,12 +8,10 @@ import 'package:flutter/material.dart'; // Package imports: import 'package:crypt/crypt.dart'; -import 'package:crypto/crypto.dart'; import 'package:device_info/device_info.dart'; import 'package:flutter_dotenv/flutter_dotenv.dart'; import 'package:redux/redux.dart'; import 'package:redux_thunk/redux_thunk.dart'; -import 'package:steel_crypt/steel_crypt.dart'; // Project imports: import 'package:syphon/global/libs/matrix/auth.dart'; @@ -204,6 +201,7 @@ ThunkAction startAuthObserver() { store.dispatch(ResetSync()); store.dispatch(ResetRooms()); store.dispatch(ResetUser()); + store.dispatch(ResetCrypto()); } }; @@ -536,25 +534,9 @@ ThunkAction submitEmail({int sendAttempt = 1}) { /** * - * https://matrix.org/docs/spec/client_server/latest#id204 - * - * - * Email Request (?) - * https://matrix-client.matrix.org/_matrix/client/r0/register/email/requestToken - * - * Request Token + SID - * {"email":"syphon+testing@ere.io","client_secret":"MDWVwN79p5xIz7bgazVXvO8aabbVD0LN","send_attempt":1,"next_link":"https://app.element.io/#/register?client_secret=MDWVwN79p5xIz7bgazVXvO8aabbVD0LN&hs_url=https%3A%2F%2Fmatrix-client.matrix.org&is_url=https%3A%2F%2Fvector.im&session_id=yGElwHyWRFHwVkChpyWIJqMO"} - * - * Response Token + SID - * {"sid": "UTWiabjnSXWWTAPs"} - * - * - * Send Terms (?) - * {"username":"syphon2","password":"testing again to see","initial_device_display_name":"app.element.io (Chrome, macOS)","auth":{"session":"yGElwHyWRFHwVkChpyWIJqMO","type":"m.login.terms"},"inhibit_login":true} - * - * Send Email Auth (?) - * {"username":"syphon2","password":"testing again to see","initial_device_display_name":"app.element.io (Chrome, macOS)","auth":{"session":"yGElwHyWRFHwVkChpyWIJqMO","type":"m.login.email.identity","threepid_creds":{"sid":"UTWiabjnSXWWTAPs","client_secret":"MDWVwN79p5xIz7bgazVXvO8aabbVD0LN"},"threepidCreds":{"sid":"UTWiabjnSXWWTAPs","client_secret":"MDWVwN79p5xIz7bgazVXvO8aabbVD0LN"}},"inhibit_login":true} + * Create a user / Attempt creation * + * process references are in assets/cheatsheet.md */ ThunkAction createUser({enableErrors = false}) { return (Store store) async { diff --git a/lib/store/auth/state.dart b/lib/store/auth/state.dart index cc3e1e52a..6d60b9f08 100644 --- a/lib/store/auth/state.dart +++ b/lib/store/auth/state.dart @@ -136,36 +136,35 @@ class AuthStore extends Equatable { creating, verificationNeeded, authObserver, - }) { - return AuthStore( - user: user ?? this.user, - email: email ?? this.email, - loading: loading ?? this.loading, - authObserver: authObserver ?? this.authObserver, - username: username ?? this.username, - password: password ?? this.password, - agreement: agreement ?? this.agreement, - passwordCurrent: passwordCurrent ?? this.passwordCurrent, - passwordConfirm: passwordConfirm ?? this.passwordConfirm, - homeserver: homeserver ?? this.homeserver, - completed: completed ?? this.completed, - captcha: captcha ?? this.captcha, - session: session ?? this.session, - isEmailValid: isEmailValid ?? this.isEmailValid, - isEmailAvailable: isEmailAvailable ?? this.isEmailAvailable, - isUsernameValid: isUsernameValid ?? this.isUsernameValid, - isUsernameAvailable: isUsernameAvailable != null - ? isUsernameAvailable - : this.isUsernameAvailable, - isPasswordValid: isPasswordValid ?? this.isPasswordValid, - isHomeserverValid: isHomeserverValid ?? this.isHomeserverValid, - interactiveAuths: interactiveAuths ?? this.interactiveAuths, - credential: credential ?? this.credential, - creating: creating ?? this.creating, - stopgap: stopgap ?? this.stopgap, - verificationNeeded: verificationNeeded ?? this.verificationNeeded, - ); - } + }) => + AuthStore( + user: user ?? this.user, + email: email ?? this.email, + loading: loading ?? this.loading, + authObserver: authObserver ?? this.authObserver, + username: username ?? this.username, + password: password ?? this.password, + agreement: agreement ?? this.agreement, + passwordCurrent: passwordCurrent ?? this.passwordCurrent, + passwordConfirm: passwordConfirm ?? this.passwordConfirm, + homeserver: homeserver ?? this.homeserver, + completed: completed ?? this.completed, + captcha: captcha ?? this.captcha, + session: session ?? this.session, + isEmailValid: isEmailValid ?? this.isEmailValid, + isEmailAvailable: isEmailAvailable ?? this.isEmailAvailable, + isUsernameValid: isUsernameValid ?? this.isUsernameValid, + isUsernameAvailable: isUsernameAvailable != null + ? isUsernameAvailable + : this.isUsernameAvailable, + isPasswordValid: isPasswordValid ?? this.isPasswordValid, + isHomeserverValid: isHomeserverValid ?? this.isHomeserverValid, + interactiveAuths: interactiveAuths ?? this.interactiveAuths, + credential: credential ?? this.credential, + creating: creating ?? this.creating, + stopgap: stopgap ?? this.stopgap, + verificationNeeded: verificationNeeded ?? this.verificationNeeded, + ); Map toJson() => _$AuthStoreToJson(this); diff --git a/lib/store/crypto/actions.dart b/lib/store/crypto/actions.dart index ba6834384..4bbaea6c1 100644 --- a/lib/store/crypto/actions.dart +++ b/lib/store/crypto/actions.dart @@ -130,7 +130,7 @@ class DEBUGSetOutboundMessageSessionMap { DEBUGSetOutboundMessageSessionMap({this.nothing}); } -class ResetDeviceKeys {} +class ResetCrypto {} /** * Helper Actions @@ -172,7 +172,7 @@ ThunkAction setOneTimeKeysClaimed( ThunkAction deleteDeviceKeys() { return (Store store) async { try { - store.dispatch(ResetDeviceKeys()); + store.dispatch(ResetCrypto()); } catch (error) { store.dispatch( addAlert(error: error, origin: 'deleteDeviceKeys'), diff --git a/lib/store/crypto/reducer.dart b/lib/store/crypto/reducer.dart index 4c9588f06..8110740b7 100644 --- a/lib/store/crypto/reducer.dart +++ b/lib/store/crypto/reducer.dart @@ -101,7 +101,7 @@ CryptoStore cryptoReducer( return state.copyWith( deviceKeysExist: action.existence, ); - case ResetDeviceKeys: + case ResetCrypto: return CryptoStore(); default: return state; diff --git a/lib/store/index.dart b/lib/store/index.dart index 51c15bcef..46594eed8 100644 --- a/lib/store/index.dart +++ b/lib/store/index.dart @@ -11,7 +11,9 @@ import 'package:syphon/global/cache/index.dart'; // Project imports: import 'package:syphon/store/alerts/model.dart'; +import 'package:syphon/store/auth/actions.dart'; import 'package:syphon/store/auth/reducer.dart'; +import 'package:syphon/store/crypto/actions.dart'; import 'package:syphon/store/crypto/reducer.dart'; import 'package:syphon/store/crypto/state.dart'; import 'package:syphon/store/media/reducer.dart'; @@ -121,16 +123,22 @@ Future initStore() async { serializer: CacheSerializer(), throttleDuration: Duration(milliseconds: 4500), shouldSave: (Store store, dynamic action) { + // TODO: can remove once sqlcipher storage is in place switch (action.runtimeType) { case SetSynced: if (action.synced) { return true; } return false; - // debugPrint('[Redux Persist] cache skip'); + case SetOlmAccount: + case SetOlmAccountBackup: + case SetDeviceKeysOwned: + case SetUser: + case ResetCrypto: + case ResetUser: + return true; case SetSyncing: default: - // debugPrint('[Redux Persist] caching'); return false; } }, @@ -146,7 +154,6 @@ Future initStore() async { try { initialState = await persistor.load(); - // debugPrint('[Redux Persist] persist loaded successfully'); } catch (error) { debugPrint('[Redux Persist] $error'); } diff --git a/lib/store/rooms/room/model.dart b/lib/store/rooms/room/model.dart index 316b9d259..4cdb59d4d 100644 --- a/lib/store/rooms/room/model.dart +++ b/lib/store/rooms/room/model.dart @@ -2,6 +2,7 @@ import 'dart:collection'; // Package imports: +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hive/hive.dart'; import 'package:json_annotation/json_annotation.dart'; @@ -454,12 +455,12 @@ class Room { break; } }); - } catch (error) {} + } catch (error) { + debugPrint('[Room.fromStateEvents] ${error}'); + } try { - // what happens if you name a direct chat after the - // person you're sending it to? bad stuff, this tries - // to force the senders name on the room just in case + // checks to make sure someone didn't name the room after the authed user final badRoomName = name == currentUser.displayName || name == currentUser.userId; diff --git a/lib/store/sync/actions.dart b/lib/store/sync/actions.dart index ab3566229..4ddc04dfa 100644 --- a/lib/store/sync/actions.dart +++ b/lib/store/sync/actions.dart @@ -259,11 +259,11 @@ ThunkAction fetchSync({String since, bool forceFull = false}) { // try to understand the error message message = (error.message as String); } catch (error) { - debugPrint(error); + debugPrint('[fetchSync] $error'); } if (message.contains('SocketException')) { - debugPrint('[fetchSync] IOException $error'); + debugPrint('[fetchSync] $error'); store.dispatch(SetOffline(offline: true)); } @@ -276,31 +276,3 @@ ThunkAction fetchSync({String since, bool forceFull = false}) { } }; } - -// WARNING: ONLY FOR TESTING OUTPUT -Future get _localPath async { - final directory = await getApplicationDocumentsDirectory(); - - return directory.path; -} - -// WARNING: ONLY FOR TESTING OUTPUT -Future get _localFile async { - final path = await _localPath; - return File('$path/matrix.json'); -} - -// WARNING: ONLY FOR TESTING OUTPUT -Future readFullSyncJson() async { - try { - final file = await _localFile; - String contents = await file.readAsString(); - return await jsonDecode(contents); - } catch (error) { - // If encountering an error, return 0. - debugPrint('[readFullSyncJson] $error'); - return null; - } finally { - debugPrint('** Read State From Disk Successfully **'); - } -} diff --git a/lib/store/user/state.dart b/lib/store/user/state.dart index 9b0cbd10e..01c705b12 100644 --- a/lib/store/user/state.dart +++ b/lib/store/user/state.dart @@ -19,6 +19,7 @@ class UserStore extends Equatable { final Map users; @HiveField(1) + @JsonKey(ignore: true) final List invites; const UserStore({ diff --git a/lib/views/home/chat/index.dart b/lib/views/home/chat/index.dart index 0cab28ffc..484dbb413 100644 --- a/lib/views/home/chat/index.dart +++ b/lib/views/home/chat/index.dart @@ -713,10 +713,7 @@ class _Props extends Equatable { timeFormat24Enabled: store.state.settingsStore.timeFormat24Enabled ?? false, loading: (store.state.roomStore.rooms[roomId] ?? Room()).syncing, - room: roomSelectors.room( - id: roomId, - state: store.state, - ), + room: roomSelectors.room(id: roomId, state: store.state), messages: latestMessages( wrapOutboxMessages( messages: roomSelectors.room(id: roomId, state: store.state).messages, diff --git a/lib/views/home/groups/invite-users.dart b/lib/views/home/groups/invite-users.dart index fccbb5822..8fe954731 100644 --- a/lib/views/home/groups/invite-users.dart +++ b/lib/views/home/groups/invite-users.dart @@ -12,7 +12,10 @@ import 'package:flutter_svg/svg.dart'; import 'package:redux/redux.dart'; import 'package:syphon/global/assets.dart'; import 'package:syphon/global/values.dart'; +import 'package:syphon/store/rooms/actions.dart'; +import 'package:syphon/store/rooms/room/model.dart'; import 'package:syphon/store/user/actions.dart'; +import 'package:syphon/views/home/chat/dialog-invite.dart'; import 'package:syphon/views/widgets/appbars/appbar-search.dart'; import 'package:syphon/views/widgets/containers/card-section.dart'; @@ -27,6 +30,7 @@ import 'package:syphon/store/search/actions.dart'; import 'package:syphon/store/user/model.dart'; import 'package:syphon/store/user/selectors.dart'; import 'package:syphon/views/widgets/avatars/avatar.dart'; +import 'package:syphon/views/widgets/dialogs/dialog-invite-users.dart'; import 'package:syphon/views/widgets/dialogs/dialog-start-chat.dart'; import 'package:syphon/views/widgets/modals/modal-user-details.dart'; @@ -85,12 +89,12 @@ class InviteUsersState extends State { /** * - * User Invite + * Toggle User Invite * - * add user to invite list + * add/remove user to invite list */ @protected - void onInviteUser({User user}) async { + void onToggleInvite({User user}) async { final List invitesUpdated = List.from(this.invites); final userIndex = invitesUpdated.indexWhere((u) => u.userId == user.userId); @@ -117,57 +121,98 @@ class InviteUsersState extends State { /** * - * User Invite + * Attempt User Invite * - * add user to invite list + * attempt chating with a user + * by the name searched */ @protected - void onSubmitUsers(_Props props) async { - await props.onSubmitInvites( - users: this.invites, - ); - Navigator.pop(context); - } - - @protected - onShowUserDetails({ - BuildContext context, - User user, - }) async { - await showModalBottomSheet( + void onAttemptInvite({BuildContext context, _Props props, User user}) async { + return await showDialog( context: context, - isScrollControlled: true, - backgroundColor: Colors.transparent, - builder: (context) => ModalUserDetails( + builder: (BuildContext context) => DialogStartChat( user: user, + title: 'Try inviting ${user.displayName}', + content: Strings.alertInviteUnknownUser, + action: 'try invite', + onStartChat: () { + this.onToggleInvite(user: user); + Navigator.pop(context); + }, ), ); } /** * - * Attempt User Invite + * Confirm and save invite list * - * attempt chating with a user - * by the name searched + * also attempts to invite users directly if a room id already exists */ @protected - void onAttemptInvite({BuildContext context, _Props props, User user}) async { + void onConfirmInvites(_Props props) async { + final InviteUsersArguments arguments = + ModalRoute.of(context).settings.arguments; + final roomId = arguments.roomId; + + if (roomId != null && this.invites.length > 0) { + await this.onSendInvites(props); + } else { + await props.onAddInvites(users: this.invites); + Navigator.pop(context); + } + } + + /** + * Actually send invites to all listed users + */ + Future onSendInvites(_Props props) async { + FocusScope.of(context).unfocus(); + final InviteUsersArguments arguments = + ModalRoute.of(context).settings.arguments; + final store = StoreProvider.of(context); + + final roomId = arguments.roomId; + final room = store.state.roomStore.rooms[roomId]; + + final multiple = this.invites.length > 1; + final invitePlurialized = multiple ? 'Invites' : 'Invite'; + + // Confirm sending the invites with a dialog return await showDialog( context: context, - builder: (BuildContext context) => DialogStartChat( - user: user, - title: 'Try inviting ${user.displayName}', - content: Strings.alertInviteUnknownUser, - action: 'try invite', - onStartChat: () { - this.onInviteUser(user: user); + builder: (BuildContext context) => DialogInviteUsers( + users: this.invites, + title: 'Invite To ${room.name}', + content: Strings.confirmationInvites + + '\n\nSend ${this.invites.length} ${invitePlurialized.toLowerCase()} to ${room.name}?', + action: 'send ${invitePlurialized.toLowerCase()}', + onInviteUsers: () async { + await Future.wait(this.invites.map((user) async { + return props.onSendInvite(room: Room(id: roomId), user: user); + })); + + Navigator.pop(context); Navigator.pop(context); }, ), ); } + void onShowUserDetails({ + BuildContext context, + User user, + }) async { + await showModalBottomSheet( + context: context, + isScrollControlled: true, + backgroundColor: Colors.transparent, + builder: (context) => ModalUserDetails( + user: user, + ), + ); + } + @override Widget build(BuildContext context) => StoreConnector( distinct: true, @@ -210,7 +255,7 @@ class InviteUsersState extends State { elevation: 0, forceFocus: true, focusNode: searchInputFocusNode, - onBack: () => onSubmitUsers(props), + onBack: () => onConfirmInvites(props), onSearch: (text) => props.onSearch(text), onChange: (text) => this.setState(() { searchable = text; @@ -222,7 +267,7 @@ class InviteUsersState extends State { heroTag: 'fab5', tooltip: 'Add User Invites', backgroundColor: Theme.of(context).accentColor, - onPressed: () => onSubmitUsers(props), + onPressed: () => onConfirmInvites(props), child: Container( padding: EdgeInsets.only(left: 2), child: SvgPicture.asset( @@ -302,7 +347,7 @@ class InviteUsersState extends State { .bodyText1 .color, ), - onDeleted: () => onInviteUser(user: user), + onDeleted: () => onToggleInvite(user: user), ), ), ), @@ -399,7 +444,8 @@ class InviteUsersState extends State { padding: EdgeInsets.symmetric(vertical: 4), elevation: 0, child: InkWell( - onTap: () => this.onInviteUser(user: user), + onTap: () => + this.onToggleInvite(user: user), child: Container( child: ListTile( enabled: creatingRoomDisplayName != @@ -495,7 +541,8 @@ class _Props extends Equatable { final List searchResults; final Function onSearch; - final Function onSubmitInvites; + final Function onAddInvites; + final Function onSendInvite; _Props({ @required this.theme, @@ -504,7 +551,8 @@ class _Props extends Equatable { @required this.creatingRoom, @required this.searchResults, @required this.onSearch, - @required this.onSubmitInvites, + @required this.onAddInvites, + @required this.onSendInvite, }); static _Props mapStateToProps(Store store) => _Props( @@ -516,9 +564,14 @@ class _Props extends Equatable { onSearch: (text) { store.dispatch(searchUsers(searchText: text)); }, - onSubmitInvites: ({List users}) async { + onAddInvites: ({List users}) async { return store.dispatch(setUserInvites(users: users)); }, + onSendInvite: ({Room room, User user}) { + store.dispatch( + inviteUser(room: room, user: user), + ); + }, ); @override diff --git a/lib/views/home/profile/details-user.dart b/lib/views/home/profile/details-user.dart index adc05e2a2..228652a59 100644 --- a/lib/views/home/profile/details-user.dart +++ b/lib/views/home/profile/details-user.dart @@ -8,7 +8,6 @@ import 'package:flutter_redux/flutter_redux.dart'; import 'package:redux/redux.dart'; import 'package:syphon/global/colours.dart'; import 'package:syphon/views/widgets/containers/card-section.dart'; -import 'package:syphon/views/widgets/modals/modal-user-details.dart'; // Project imports: import 'package:syphon/global/dimensions.dart'; diff --git a/lib/views/widgets/appbars/appbar-chat.dart b/lib/views/widgets/appbars/appbar-chat.dart index f3825d8fe..cc4b210a3 100644 --- a/lib/views/widgets/appbars/appbar-chat.dart +++ b/lib/views/widgets/appbars/appbar-chat.dart @@ -10,6 +10,7 @@ import 'package:syphon/store/rooms/room/model.dart'; import 'package:syphon/store/rooms/room/selectors.dart'; import 'package:syphon/views/home/chat/details-chat.dart'; import 'package:syphon/views/home/chat/index.dart'; +import 'package:syphon/views/home/groups/invite-users.dart'; import 'package:syphon/views/widgets/avatars/avatar.dart'; import 'package:syphon/views/widgets/containers/menu-rounded.dart'; @@ -240,6 +241,14 @@ class AppBarChatState extends State { RoundedPopupMenu( onSelected: (ChatOptions result) { switch (result) { + case ChatOptions.inviteFriends: + return Navigator.pushNamed( + context, + '/home/user/invite', + arguments: InviteUsersArguments( + roomId: widget.room.id, + ), + ); case ChatOptions.chatSettings: return Navigator.pushNamed( context, @@ -271,7 +280,6 @@ class AppBarChatState extends State { child: Text('Chat Settings'), ), const PopupMenuItem( - enabled: false, value: ChatOptions.inviteFriends, child: Text('Invite Friends'), ), diff --git a/lib/views/widgets/dialogs/dialog-invite-users.dart b/lib/views/widgets/dialogs/dialog-invite-users.dart new file mode 100644 index 000000000..7189085f4 --- /dev/null +++ b/lib/views/widgets/dialogs/dialog-invite-users.dart @@ -0,0 +1,128 @@ +// Flutter imports: +import 'package:flutter/foundation.dart'; +import 'package:flutter/material.dart'; + +// Package imports: +import 'package:equatable/equatable.dart'; +import 'package:redux/redux.dart'; + +// Project imports: +import 'package:syphon/global/libs/matrix/auth.dart'; +import 'package:syphon/global/strings.dart'; +import 'package:syphon/store/auth/actions.dart'; +import 'package:syphon/store/index.dart'; +import 'package:syphon/store/user/model.dart'; +import 'package:syphon/views/widgets/buttons/button-text.dart'; + +class DialogInviteUsers extends StatelessWidget { + DialogInviteUsers({ + Key key, + this.users, + this.title = 'Invite Users', + this.content = Strings.confirmationAttemptChat, + this.action = 'invite users', + this.onCancel, + this.onInviteUsers, + }) : super(key: key); + + final String title; + final String content; + final String action; + final List users; + final Function onCancel; + final Function onInviteUsers; + + @override + Widget build(BuildContext context) { + bool creating = false; + + return StatefulBuilder( + builder: (context, setState) { + double width = MediaQuery.of(context).size.width; + + return SimpleDialog( + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(16), + ), + title: Text(title), + contentPadding: EdgeInsets.symmetric( + horizontal: width * 0.05, + vertical: 12, + ), + children: [ + Text(content), + Container( + padding: EdgeInsets.only(top: 8), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + ButtonText( + textWidget: Text( + Strings.buttonCancel, + style: Theme.of(context).textTheme.subtitle1, + ), + disabled: creating, + onPressed: () { + Navigator.pop(context); + }, + ), + ButtonText( + textWidget: Text( + action ?? Strings.buttonLetsChat, + style: Theme.of(context).textTheme.subtitle1, + ), + loading: creating, + disabled: creating, + onPressed: () async { + setState(() { + creating = true; + }); + if (onInviteUsers != null) { + await onInviteUsers(); + } + }, + ), + ], + ), + ) + ], + ); + }, + ); + } +} + +class Props extends Equatable { + final bool completed; + final String publicKey; + + final Function onCompleteCaptcha; + + Props({ + @required this.completed, + @required this.publicKey, + @required this.onCompleteCaptcha, + }); + + static Props mapStateToProps(Store store) => Props( + completed: store.state.authStore.captcha, + publicKey: () { + return store.state.authStore.interactiveAuths['params'] + [MatrixAuthTypes.RECAPTCHA]['public_key']; + }(), + onCompleteCaptcha: (String token, {BuildContext context}) async { + await store.dispatch(updateCredential( + type: MatrixAuthTypes.RECAPTCHA, + value: token.toString(), + )); + await store.dispatch(toggleCaptcha(completed: true)); + Navigator.of(context).pop(); + }, + ); + + @override + List get props => [ + completed, + publicKey, + ]; +} diff --git a/lib/views/widgets/lists/list-user-bubbles.dart b/lib/views/widgets/lists/list-user-bubbles.dart index e191f58d9..2be71cb00 100644 --- a/lib/views/widgets/lists/list-user-bubbles.dart +++ b/lib/views/widgets/lists/list-user-bubbles.dart @@ -99,7 +99,7 @@ class ListUserBubbles extends StatelessWidget { Navigator.pushNamed( context, '/home/user/invite', - arguments: InviteUsersArguments(roomId: roomId), + arguments: InviteUsersArguments(roomId: null), ); } else { Navigator.pushNamed( From bac214791754c666b9e91d8b12980f258df64379 Mon Sep 17 00:00:00 2001 From: ereio Date: Tue, 27 Oct 2020 23:32:26 -0400 Subject: [PATCH 43/45] fixed intermittent syncing issues, still need to test one edge cases (teddy fresh was limited) --- lib/global/cache/index.dart | 1 - lib/global/strings.dart | 2 +- lib/store/rooms/actions.dart | 13 +++++------ lib/store/rooms/events/actions.dart | 2 +- lib/store/rooms/room/model.dart | 34 ++++++++++++++--------------- 5 files changed, 24 insertions(+), 28 deletions(-) diff --git a/lib/global/cache/index.dart b/lib/global/cache/index.dart index 7e8fddbb5..439d9bbac 100644 --- a/lib/global/cache/index.dart +++ b/lib/global/cache/index.dart @@ -22,7 +22,6 @@ class CacheSecure { static const cacheKeyMain = '${Values.appNameLabel}-main-cache'; static const cacheKeyRooms = '${Values.appNameLabel}-room-cache'; static const cacheKeyCrypto = '${Values.appNameLabel}-crypto-cache'; - static const cacheKeyBackground = '${Values.appNameLabel}-background-cache'; // cache key identifiers static const ivKeyLocation = '${Values.appNameLabel}@ivKey'; diff --git a/lib/global/strings.dart b/lib/global/strings.dart index 3386535c4..fb3ee22a6 100644 --- a/lib/global/strings.dart +++ b/lib/global/strings.dart @@ -129,7 +129,7 @@ class Strings { 'Please be aware this app is still very much in Alpha.\n'; static const confirmationAlphaWarning = - 'Do not use, nor do I recommend using Syphon, where proven and independently verified security is required.\n'; + 'Do not use, nor do I recommend using, Syphon where proven and independently verified security is required.\n'; static const confirmationAlphaWarningAlt = 'You may lose data using this application as features and bugs are worked out.\n'; diff --git a/lib/store/rooms/actions.dart b/lib/store/rooms/actions.dart index c6a2f8126..7b2ce3b87 100644 --- a/lib/store/rooms/actions.dart +++ b/lib/store/rooms/actions.dart @@ -169,21 +169,18 @@ ThunkAction syncRooms( )); } - // fetch previous messages since last /sync if - // more than one batch needs to be fetched (a gap) // and is not already at the end of the last known batch // the end would be room.prevHash == room.lastHash final roomUpdated = store.state.roomStore.rooms[room.id]; - if (roomUpdated != null && - room.limited && - room.prevHash != null && - room.prevHash != room.lastHash) { + // fetch previous messages since last /sync (a gap) + // determined by the fromSync function of room + if (roomUpdated != null && room.limited) { + debugPrint('[syncRooms] fetchMessageEvents called due to limited'); store.dispatch( fetchMessageEvents( room: room, - to: room.lastHash, - from: room.prevHash, + from: room.lastHash, ), ); } diff --git a/lib/store/rooms/events/actions.dart b/lib/store/rooms/events/actions.dart index 002865a5e..8a0041631 100644 --- a/lib/store/rooms/events/actions.dart +++ b/lib/store/rooms/events/actions.dart @@ -87,7 +87,7 @@ ThunkAction fetchMessageEvents({ // messages.forEach((element) { // printJson(element); // }); - // debugPrint('[OLDEST] ${oldest}'); + debugPrint('[OLDEST] ${oldest}'); // reuse the logic for syncing await store.dispatch( diff --git a/lib/store/rooms/room/model.dart b/lib/store/rooms/room/model.dart index 4cdb59d4d..bf710b4e1 100644 --- a/lib/store/rooms/room/model.dart +++ b/lib/store/rooms/room/model.dart @@ -283,7 +283,9 @@ class Room { prevHash = json['timeline']['prev_batch']; if (limited != null) { - debugPrint('[fromSync] LIMITED IS NOT NULL ${limited}'); + debugPrint( + '[fromSync] LIMITED ${limited} ${lastHash} ${prevHash}', + ); } final List timelineEventsRaw = json['timeline']['events']; @@ -484,7 +486,9 @@ class Room { : shownUser.displayName; // set avatar if one has not been assigned - if (avatarUri == null && this.avatarUri == null) { + if (avatarUri == null && + this.avatarUri == null && + otherUsers.length == 1) { avatarUri = shownUser.avatarUri; } } @@ -521,7 +525,6 @@ class Room { }) { try { bool limited; - bool isUpdated = false; int lastUpdate = this.lastUpdate; List messagesNew = events ?? []; List outbox = List.from(this.outbox ?? []); @@ -539,19 +542,18 @@ class Room { } // Check to see if the new messages contain those existing in cache - if (messagesNew.isNotEmpty) { + if (messagesNew.isNotEmpty && + messagesExisting.isNotEmpty && + this.limited) { final messageLatest = messagesExisting.firstWhere( (msg) => msg.id == messagesNew[0].id, orElse: () => null, ); - isUpdated = messageLatest != null; - } - // Set limited (used to recursively sync) to false if - // - new messages contains old ones - // - it's the first full /sync (lastHash == null) - if (isUpdated != null || this.lastHash == null) { - limited = false; + // Set limited (used to recursively sync) to false if + // - new messages contains old ones + // - it's the first full /sync (lastHash == null) + limited = messageLatest != null || this.lastHash == null ? false : null; } // Combine current and existing messages on unique ids @@ -572,12 +574,10 @@ class Room { // TODO: remove after 0.1.5 :( - message catchup works if (true) { - // print('[fromMessageEvents] ${this.name}'); - // print('[limited] ${limited}'); - // print('[limited - cached] ${this.limited}'); - // print('[lastHash] ${lastHash}'); - // print('[lastHash - Cached] ${this.lastHash}'); - // print('[prevHash] ${prevHash}'); + // print('[fromMessageEvents] *** ${this.name} *** '); + // print('[limited] now ${limited}, before ${this.limited}'); + // print('[lastHash] now ${lastHash}, before ${this.lastHash}'); + // print('[prevHash] now ${prevHash}'); } return this.copyWith( From c7f18f669a734e60083cbe4be8f2d28e176f4a73 Mon Sep 17 00:00:00 2001 From: ereio Date: Wed, 28 Oct 2020 19:30:29 -0400 Subject: [PATCH 44/45] intermittent syncing fixed by recursively calling fetchMessageEvents until the most recent message batch is reached --- assets/cheatsheet.md | 36 ++++++++++++++++++++++ lib/store/index.dart | 19 ------------ lib/store/rooms/actions.dart | 19 +++++------- lib/store/rooms/events/actions.dart | 12 -------- lib/store/rooms/room/model.dart | 48 ++++++++++++++--------------- lib/views/home/chat/index.dart | 1 + pubspec.yaml | 1 + 7 files changed, 68 insertions(+), 68 deletions(-) diff --git a/assets/cheatsheet.md b/assets/cheatsheet.md index 6cdb0dd37..d7dc0544b 100644 --- a/assets/cheatsheet.md +++ b/assets/cheatsheet.md @@ -26,4 +26,40 @@ * */ ThunkAction createUser({enableErrors = false}) {} +``` + +```dart + +// needed to test the recursive messaging 'catch-up' +if (true) { + printError('[fromMessageEvents] *** ${this.name} *** '); + print('[limited] now ${limited}, before ${this.limited}'); + print('[lastHash] now ${lastHash}, before ${this.lastHash}'); + print('[prevHash] now ${prevHash}'); +} + +``` + +```dart + // original initStore function without much regar + // for action types. Ideally, it would have none. + Future initStore() async { + // Configure redux persist instance + final persistor = Persistor( + storage: MemoryStorage(), + serializer: CacheSerializer(), + throttleDuration: Duration(milliseconds: 4500), + shouldSave: (Store store, dynamic action) { + switch (action.runtimeType) { + case SetSyncing: + case SetSynced: + // debugPrint('[Redux Persist] cache skip'); + return false; + default: + // debugPrint('[Redux Persist] caching'); + return true; + } + }, + ); + ``` \ No newline at end of file diff --git a/lib/store/index.dart b/lib/store/index.dart index 46594eed8..384380812 100644 --- a/lib/store/index.dart +++ b/lib/store/index.dart @@ -97,25 +97,6 @@ AppState appReducer(AppState state, action) => AppState( * this is why the "storage: MemoryStore()" property is set and * the Hive Serializer has been impliemented */ -// Future initStore() async { -// // Configure redux persist instance -// final persistor = Persistor( -// storage: MemoryStorage(), -// serializer: CacheSerializer(), -// throttleDuration: Duration(milliseconds: 4500), -// shouldSave: (Store store, dynamic action) { -// switch (action.runtimeType) { -// case SetSyncing: -// case SetSynced: -// // debugPrint('[Redux Persist] cache skip'); -// return false; -// default: -// // debugPrint('[Redux Persist] caching'); -// return true; -// } -// }, -// ); - Future initStore() async { // Configure redux persist instance final persistor = Persistor( diff --git a/lib/store/rooms/actions.dart b/lib/store/rooms/actions.dart index 7b2ce3b87..90af3ef61 100644 --- a/lib/store/rooms/actions.dart +++ b/lib/store/rooms/actions.dart @@ -109,9 +109,7 @@ class AddArchive { * Helper action that will determine how to update a room * from data formatted like a sync request */ -ThunkAction syncRooms( - Map roomData, -) { +ThunkAction syncRooms(Map roomData) { return (Store store) async { // init new store containers final rooms = store.state.roomStore.rooms ?? Map(); @@ -171,20 +169,17 @@ ThunkAction syncRooms( // and is not already at the end of the last known batch // the end would be room.prevHash == room.lastHash - final roomUpdated = store.state.roomStore.rooms[room.id]; - // fetch previous messages since last /sync (a gap) // determined by the fromSync function of room + final roomUpdated = store.state.roomStore.rooms[room.id]; if (roomUpdated != null && room.limited) { - debugPrint('[syncRooms] fetchMessageEvents called due to limited'); - store.dispatch( - fetchMessageEvents( - room: room, - from: room.lastHash, - ), - ); + store.dispatch(fetchMessageEvents( + room: room, + from: room.prevHash, + )); } + // update room store.dispatch(SetRoom(room: room)); }); }; diff --git a/lib/store/rooms/events/actions.dart b/lib/store/rooms/events/actions.dart index 8a0041631..31f1cbf4b 100644 --- a/lib/store/rooms/events/actions.dart +++ b/lib/store/rooms/events/actions.dart @@ -11,13 +11,10 @@ import 'package:redux/redux.dart'; import 'package:redux_thunk/redux_thunk.dart'; // Project imports: -import 'package:syphon/global/algos.dart'; -import 'package:syphon/global/libs/matrix/encryption.dart'; import 'package:syphon/global/libs/matrix/index.dart'; import 'package:syphon/store/alerts/actions.dart'; import 'package:syphon/store/crypto/actions.dart'; import 'package:syphon/store/crypto/events/actions.dart'; -import 'package:syphon/store/crypto/keys/model.dart'; import 'package:syphon/store/index.dart'; import 'package:syphon/store/rooms/actions.dart'; import 'package:syphon/store/rooms/events/model.dart'; @@ -61,9 +58,6 @@ ThunkAction fetchMessageEvents({ try { store.dispatch(UpdateRoom(id: room.id, syncing: true)); - // debugPrint('[to] $to'); - // debugPrint('[from] $from'); - final messagesJson = await compute(MatrixApi.fetchMessageEventsMapped, { "protocol": protocol, "homeserver": store.state.authStore.user.homeserver, @@ -83,12 +77,6 @@ ThunkAction fetchMessageEvents({ // The messages themselves final List messages = messagesJson['chunk'] ?? []; - // TODO: remove after 0.1.3 is merged - // messages.forEach((element) { - // printJson(element); - // }); - debugPrint('[OLDEST] ${oldest}'); - // reuse the logic for syncing await store.dispatch( syncRooms({ diff --git a/lib/store/rooms/room/model.dart b/lib/store/rooms/room/model.dart index bf710b4e1..63c151b0d 100644 --- a/lib/store/rooms/room/model.dart +++ b/lib/store/rooms/room/model.dart @@ -76,8 +76,7 @@ class Room { @HiveField(17) final Message draft; - // TODO: removed until state timeline work can be done - // @HiveField(19) + // TODO: removed until state timeline work can be done // final List state; @HiveField(20) @@ -326,9 +325,9 @@ class Room { accountEvents, ) .fromStateEvents( - events: stateEvents, invite: invite, limited: limited, + events: stateEvents, currentUser: currentUser, ) .fromMessageEvents( @@ -389,10 +388,8 @@ class Room { bool direct = this.direct ?? false; int lastUpdate = this.lastUpdate; int namePriority = this.namePriority != 4 ? this.namePriority : 4; - Map users = this.users ?? Map(); - // room state event filter try { events.forEach((event) { final timestamp = event.timestamp ?? 0; @@ -541,19 +538,27 @@ class Room { lastUpdate = messagesNew[0].timestamp; } - // Check to see if the new messages contain those existing in cache - if (messagesNew.isNotEmpty && - messagesExisting.isNotEmpty && - this.limited) { - final messageLatest = messagesExisting.firstWhere( - (msg) => msg.id == messagesNew[0].id, - orElse: () => null, - ); + // limited indicates need to fetch additional data for room timelines + if (this.limited) { + // Check to see if the new messages contain those existing in cache + if (messagesNew.isNotEmpty && messagesExisting.isNotEmpty) { + final messageLatest = messagesExisting.firstWhere( + (msg) => msg.id == messagesNew[0].id, + orElse: () => null, + ); + // Set limited to false if they now exist + limited = messageLatest != null; + } - // Set limited (used to recursively sync) to false if - // - new messages contains old ones - // - it's the first full /sync (lastHash == null) - limited = messageLatest != null || this.lastHash == null ? false : null; + // Set limited to false false if + // - the oldest hash (lastHash) is non-existant + // - the previous hash (most recent) is non-existant + // - the oldest hash equals the previously fetched hash + if (this.lastHash == null || + this.prevHash == null || + this.lastHash == this.prevHash) { + limited = false; + } } // Combine current and existing messages on unique ids @@ -572,14 +577,7 @@ class Room { // Filter to find startTime and endTime final messagesAll = List.from(messagesMap.values); - // TODO: remove after 0.1.5 :( - message catchup works - if (true) { - // print('[fromMessageEvents] *** ${this.name} *** '); - // print('[limited] now ${limited}, before ${this.limited}'); - // print('[lastHash] now ${lastHash}, before ${this.lastHash}'); - // print('[prevHash] now ${prevHash}'); - } - + // Save values to room return this.copyWith( outbox: outbox, messages: messagesAll, diff --git a/lib/views/home/chat/index.dart b/lib/views/home/chat/index.dart index 484dbb413..b3e7b9b2f 100644 --- a/lib/views/home/chat/index.dart +++ b/lib/views/home/chat/index.dart @@ -810,6 +810,7 @@ class _Props extends Equatable { onLoadMoreMessages: () { final room = store.state.roomStore.rooms[roomId] ?? Room(); + // fetch messages beyond the oldest known message - lastHash store.dispatch(fetchMessageEvents( room: room, from: room.lastHash, diff --git a/pubspec.yaml b/pubspec.yaml index 5fb754df6..95799be15 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -22,6 +22,7 @@ description: a privacy focused matrix client # $ emulator -list-avds # $ emulator -avd Pixel_3a_API_29 # $ adb shell && run-as org.tether.tether # cache inspection +# $ adb logcat ActivityManager:I flutter:I *:S # desktop support options # $ flutter config --enable-macos-desktop From 5a2b5ce688cec6becb6b1fb2ed3759a5161b2a3f Mon Sep 17 00:00:00 2001 From: ereio Date: Wed, 28 Oct 2020 19:34:00 -0400 Subject: [PATCH 45/45] reset sendable status after sending a message and clearing the input --- lib/views/home/chat/index.dart | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/lib/views/home/chat/index.dart b/lib/views/home/chat/index.dart index b3e7b9b2f..8a3192c0a 100644 --- a/lib/views/home/chat/index.dart +++ b/lib/views/home/chat/index.dart @@ -21,7 +21,6 @@ import 'package:syphon/global/colours.dart'; import 'package:syphon/global/dimensions.dart'; import 'package:syphon/global/strings.dart'; import 'package:syphon/global/themes.dart'; -import 'package:syphon/store/auth/actions.dart'; import 'package:syphon/store/crypto/actions.dart'; import 'package:syphon/store/index.dart'; import 'package:syphon/store/rooms/actions.dart'; @@ -31,7 +30,6 @@ import 'package:syphon/store/rooms/events/selectors.dart'; import 'package:syphon/store/rooms/room/model.dart'; import 'package:syphon/store/rooms/selectors.dart' as roomSelectors; import 'package:syphon/views/home/chat/chat-input.dart'; -import 'package:syphon/views/home/chat/details-message.dart'; import 'package:syphon/views/home/chat/dialog-encryption.dart'; import 'package:syphon/views/home/chat/dialog-invite.dart'; import 'package:syphon/views/widgets/appbars/appbar-chat.dart'; @@ -144,13 +142,11 @@ class ChatViewState extends State { final atLimit = Platform.isAndroid ? limit < 1 : limit < -32; if (atLimit && !loadMore) { - debugPrint('[messagesController.addListener] loading set to true'); this.setState(() { loadMore = true; }); props.onLoadMoreMessages(); } else if (!atLimit && loadMore && !props.loading) { - debugPrint('[messagesController.addListener] loading set to false'); this.setState(() { loadMore = false; }); @@ -317,6 +313,9 @@ class ChatViewState extends State { ); editorController.clear(); FocusScope.of(context).unfocus(); + this.setState(() { + sendable = false; + }); } @protected