From 672155cdd6f75d31e626e407ab09ed83d9385ef8 Mon Sep 17 00:00:00 2001 From: ghassmo Date: Thu, 22 Sep 2022 14:43:41 +0400 Subject: [PATCH] doc/book: update tau page --- doc/src/assets/mv_event.png | Bin 0 -> 72314 bytes doc/src/misc/tau.md | 88 +++++++++++++++++++++++++++++++++++- 2 files changed, 86 insertions(+), 2 deletions(-) create mode 100644 doc/src/assets/mv_event.png diff --git a/doc/src/assets/mv_event.png b/doc/src/assets/mv_event.png new file mode 100644 index 0000000000000000000000000000000000000000..df895df68f1e90cc537c88bd5ae0a4aa32374fde GIT binary patch literal 72314 zcmeFZcUY5I`z{Iy7O;*KD_F)tFCi3>7E0)$CLu^CAt5BR6bRB()Uja$1Vlg#HS`{& zSW%i7I)c~%X%?E)ylf(lFx_viKQ-gxSd2H^@ypn=0!Wo79^xXgtcm7~yT;sbr>ZZAdm}g|OT`j98kQ%8s7krU)gaI; z-UzOYK-&c%De4B`?hwINFl*yL0>hu^LGiL8x*LR8ICupG1(+&XkW7dqBchcd#XV4! z;0RYmVSUI9J9TwWO|-hFwK3gXA5Et+gEc%t{Cz-6;6H{n3+@hn#4k9A5n>IRH>M!1 z^}U(a6zFerw3;eHNrj+>rKvECG*wV2lt}=dL^C(@w)3JeRB%)qA7T(g17l{P#3Wlf zc!TdyjgWqZ2uFWqB_mBQds|0S2Fcz-Ma`57=H1vx#SvrS7fc4fjKPDoh;Ya2`OMgzb!%0;qqPS?(>Q=( zr(#Vp!0RKe>@YSOnyO4&WpxbM%!C5Nn4pbppgTYjHEgK%C=EYTeG{xD1FgXTjhbq} z=p?WXOl@pE90T=nL{GA(63oz$;^&QWKzMl?`CFSQnOWN_JF4OIHBAgySp5)n490?P zZ|Gr8Q@17BDwziRv-C}Hp7ujR6Owhns7}F#?TC<&SVBrY?wAyjy^CI z2XCgWJKh&=VQc0=M3~Z181Q|Brk@ebBp8OaMZtrK=5&fV*^3U|hFbRZ_V+Wvg1=Nq z6a$nGl7bc>!nhZvf9g;?0C5R}|mAx7rDAt-ZY zTNt=7#9b9Mh(uWj`GWs5Onj8k{z@bz4HeY@n*gMyH!GN81wK$kfnaF^3kqR+5V6+Q zC@(zPPbnlgFvQ;!Gy=mQtyJu61IY%+;9wsgtcs=M&D5HxqJcER;#8^Tns{henxKinFzDBf3FbDI z4)g#|qQ93h(hG-oN7&jim_8(Xv^^SUW31^-Kzq3x8Pokx7-f4~cYRH?pEWcLOqjlf zCXK8@4LypcMBU!3ttk(-`pD;NTjO}ZOuIGZE1!WGaNhs;Yn9PsHke1 zsM~vjm0%FyZ5Bu~vO+4Mj8rI&mhPG)q&3q5YY474a92nAxSNCoAZbcW4R@x2F@Y6K z1?u zAvWs94vq|46_f|f6q-nAEr40Gb-;N08TkaGy;TBCJw5Dw;I{52YJs-FrY4^1Ar54t zU=|u$dcJTBm>y#x@x~C_?!H(o>Pk^aoZ2c^~apr+4 zUY;x?3za}~raprf;%5x=qN{->Xt-cwim|bysu$hE$QPlEwz7s+Il@!TFUXYQ9^{TP zp&L7ZeT}fOb@UAM^fCoQuVRF-)1aZug90r4P@1L;JdBFQ>f^Bp5BDIJZ3rRQ+*d_a zL)Cyt^tSZ#H)P>$aWDe|mYtWM6(Z2nf{D^+x~n13KKAA|{$7Su%|Ha16=;k!V5-^J zsaudV13W#{Npy-D8Ry}F^0Bw|Ho#e`tC8I)W`;fiwj@U@XfNWBeq>KWLkkdN5hT!M z(;!DPB85T(vuaHCrTd$QK*7tMfx&=*({NYw@^H5!LLpm|q-<*F?Wd$p@$(2l2KZt; zSk_p5q=^sJFNDZIs+xOw2QY&vmc~IE7Akh24SRP3n5wEK!Pp&T$goDbYXq_=GqFQ9^8J6f6R5rfCg&h4rBX z8F>V-?2Rm_c!CBh#8bte;BEw#ID(FK_hM=)YhVn~>aaknr)q#TPKl<1rWo5%9MMX~ zwpQk925KSJMhsP|eu%ZbgM%f?)()djbx`y0#DZvT9PD7?q3;d?hcOi$5)xveYNv!# zX4sn;+4$R_J(w^vV|`6)OEd$ijP|Ax5tv{vva&v&&Sa_^gfK0Pm4nRO9Wd?z`d(hP zL=3_>$kaW=TnVOcpiD)YIC^1}jll(`wrHk}yD<$~?he5WWfN6~hjOsGua^bMFF+rI zCRnnR;4qkm8H(~}phlRRsv|*{m;lWg0ze1;{E6wl13d8h2QY;hN&OyH%*VHf&(u)g zKG+{PN`27q=?5ADp5&V7jyCyXYb7V9pLh$8W*3A30}Q6`(V% zlIt#R;1}Gi$M=_iqHYLtj3dR`8{6dm;Zy!YdXbOx{`Mu%#@RAHel(}a;O*a=qUx zlce|GN&0hb{C6jP-&p_MN&gLZ{|>+Z&p9c2tHxO21CDE5_<=)nb8lnvLcV^GO)iXB zS!TS7S`&ACJimIP*e2aLnwNEi{;}usUW5K3E_0Hqc=r>cwLyFC)yeTVCu%@}Uwg*I znw8}R&B-Q_EkD9?)M23=YQ9A0Y6d-XjK@A-^QBQ%HaR>-d#3Q-$u-pl8+NEZkv#rM zzj|S!nlf24TVC;!)znu`*@+L*lmOXsvlGZOJ#nW`@3qE8@%Xz2BUUI4yO}rT9gFY0 zduW$wRklIBzwq6pAT~O09TNFxs*HNK&c489;Go3~H!`Q_wD$aPI%71iBERFQh(cvO zuH2Wz6({#s7RlpE&+^HJJcyLs8>zPzq}#oF0@n&27d^b&EqhZhQ;6A%mtd|@3f*7- zrHEI${YQE{C-47)Qqjx5X4k9x+3i+Z6!wSpQab&N0XilL=6%VT_S|S9G_kB~y36SW z#x)F&()s39l=SQy7?LRLT99gQuU8d_8Wt*E#Zj!CyU*xxU(+tsQ8W8;bVm@+^iZ!D z=9qiJ5^0Q2s9_w?HMC9Mhnf~N3O{wFu66^ba{ZTr}n>+M9XVuyWsdT6FU=vlA9CT;sb z3(36~!teSU|47D9TwguhiYk>YxXau93S3ksBqCm^>sR~j!vX$SM1H{A$5jQJb|2~R z>CPXQRPWgExH*HI4SRO9UC5EhDKvt`Zj z_7tO>v^`-oO2_4)~7Nj`g1Rcx3z!3BI_%Wab7nx0&Z95Kc_!GyJdfW z6FrYj&KHwKS2|+A8mn1gIr7Jy$lbX6Naf_px1p5s4~b;1uI!VK{Z%DN_vqj@UxW-L z59Oy_()_T^soXcgDZ;#=ON})}+^ON8N~v3#naD_2i^d2S^?e_-aOnd^ zH@X7nhSOuluG?8jue&7~u^0fp*x*|+zz8aEW)9E?0$}`c;?k5ZPQudi!X#C^Yw_FH z@l#u^{Fx$Uc*%g@>t)(fUlsnmf2F7-D);F|&3BtaX9t*;qb{WOH6Mq$A1|uEJiIP* zY8vdcj3nwufkQ1`-7QAD&C_ly7i`DO>+K9HyeJ;tE%2#Np?1zANjtQ>S~F|AQy-xv z5g+fu$`+}}ullfK79LGZc*Su`9;$~B+%G%p$;Pz&x@8vA+p6S_>cFv>4LL$l%7I&g(+V8sl;$pfI z$B0u+igi8LrR|O#?#x6)7>@v8#^>xKsg%QH$~#Hu3I-8 zi&&Z-fZw3*(pj2npXj5Ow5SDj6NL-<%E&{KMvI`k1C~fNu#f83@C(RExs$RELg~us|LCZ1_|tj-fG}deTfM8p$8m6>P1?Ms93+p(5cZh!xtldDm}0 z!jiDexdV$fV~K>#pO{B4fYZxqog)R?;O9b3C4M^0&hX zH}acQ_nUWna-U~KzZ0X46y2|x>1%4Klu{*H>o2t2g926|;57HIzSCG6e9-zxJxnGRp+mWMo{n2cNT5^mD3ctX}Q8IQV{eWXL}>CqTxdTf#J1|cJDIp)W&obqGb5H})H6vDRg}JqbM|b+FO8mHqn~?OoQBRrGN%6DY8Kkkq zKiHlh_gUDDl&q4=^JAk7?9XO=vKZAO?hSG7A*I>2Y;0F$3UCD0uif~^51J(;(Z)HH zM~|&qZM&J>u*Q6iE!*2o`a17zIM-Ao@SO>BoV}^-`P)dGl=-O7$OHe{<#}@VnP%?o z`4U2*Y!(mkiR*ZySJlZJRt7~tepj%Nj%SOG8}9LnDi+|#=2zZ#HY7D2M_lScf_yu& zzzxl+K8vSpI{GPcgXGbkFmnkEuB`^0hm)pvn;NeWLC zs^0zPRO!E$AN|BL>cI~tsz(#R?YCE7S4R4FDz~7P6?-jyW8suQ7$WGrxO_huz7Td1 z-sQhSYCp8Wrz@1uei6~q$BSE9cLsOOp6pI)XJyWN8GPT&5@0jC${1;FS?id};WIBu zQ57*u>awW(+Nw1mkb)P&vRb4wZ+bLHMchp~z#bXGX_=RBN-INWGO90dWh)267phQ? zo^x^B$j0X8kArm)Pv=FrT3NlA`EA4UxC7qLk(Ga*irUd3H$7%K>Ps4srOc}i0r2!}smgD# zmNEDGOttQ45yH8;2pW%CfH%I`O85Po)gSR6;_P?qLCR%EXTJF5y&sZ7q$0pVwf5&2 z`~FVurN#Etn~`3RsQq2acy%6ZHpST6$$xKA&kV45TU;>r;@?^P+&;a?_vUQkp})6y z*%qL`>*BYl`~TjN|K8ePhVs9&_E$yh|DpvcbDPnX@BE^#l;lbO*inRUit7c)-3>yx zO8~WODSNe|+u{;Bj+Z#*A5}(qQNCxWb$YJbHKGPemowmxypBt?VGDf#*B~fPAk_J` zz`IM+49=Wp9ou;NuS?|_*x))C#dqbhZ8nG7>mnjT-^XG&AjWio6t@7FMjmtWrDifj zD}oA|1YOuGx7ziWXKx=9$UsQBTG~Xyy<2zf)MEHLB&Kwe*A;&8@I3UNqF&S~0C^AG zt#=rC3GgZY+0m~Tv}bxe4^&gidkGA{^!loXZjsA;I*ZRM*7huAT9%YTaB4aK@(`dx zC0%(=)tkqj?2kD%GO1WIb(KEcc5kEhl=T7tx8rGNB#X1{GP!RpZXNBNpBnL;9_?nP z_1-bP);~J|U}COI4Yy|Q&3VRnS$BR%EN>|E?L~DCxjP?S;G*qR?DfYB^`OPo8+KGC z9D|rhOCr39${jhVo+Ps{_xAC{lD!6}dtRTBqBg}Vy1qa5UI;7iR9-q>{-Tvy`FeH5 zvx(}-iFsb3yFso~MgHhl0F-_F>Xyp23i`S#13X{&*9THs^4C zAAk(bZBtJVrBv$4E=>0MWhOI<$@x`}%liY(AwMINQl5hkQ<~#T4b-ol}B_+(4Aq@&OQ?@S%NfZt; zMpB`k`{}+&9;rQJ=D{Z2o>+{_2tr#s=jnRRjU~6XU4L01Ke+HCzlR&O#@zNJFVV=_ zu@w&DZY{U8U#MO)O+uuM)sfMd0+*U&H`4O}*QaJ&yDue#6=qDaC|eI&6apIXLdfQQ zUX;W99KcvX3&+2I1;BwTBdu3R85n>i2WA0)(eI&D3>Zf`EJ_Ih zb^Sk*)Mf*apSFp!w^{bNo!l@6*m=3z@?!%Q&qvUoG5Nnp!O>v7DGoe9iu3a*qcj38MPT;PeG<*FD~6v3=uU^J|7Ry5j-K zKH4&8dp2W_|EE{?sOZ?P2aTMIWqm%m34|(0O;G5uO;UYpwi8w;tdXUu`X9p|skaZH z%HM1r`yWY5Ktr^{32Bys$V#wu=F$RICIMIPPXx7eW8GS6nhB^-AjM=SCIsV18Vq56!#K1sEX%8g-E>&9&!j}KJ{pWN6(lowrCNM8r2LNv`(Az!=Y!`AAPEsjJS6yYE z^05MtiJjW4QV~25L24Q=^8fcac6MhXg+*qqKYc;wqe5s%1h+7{v z+?F=+`4Irx9&ARO&hq1(eq-X%gWf4&{rgWoIK3e#W{T8~vrk-N_j=(@nwJ!b)>A59 zpFYqa1^2O!PC*3sxSy$Fc>4+Gsgz{Vs6rkr8lZAljD^s`V>*kU3?zEwk5&4|@{RU* z#?Y&W?Y2%ojmDwOb>?IKUT^!~X^_eiZmZGFB8Ff8IwF91mV*4j4ijvP_}g&l?fC$r zrLyAYmVYRX@f7qTV`sMLt^8CVe=ti(g}DK#Fn9G-H~ss)pMRNDgR)*9l5gpUg!uD) zXr??slVV>5o*(^(o{WQ@kfivhq<;OvpLcV%3N-ou%FUU?)km$7Bo3uS)I!SA3{Wxp zKx**&jt)RVyh1OvNu3p} z5pQhzHhp(9bgO%Ifyn2-OH=rl4H+v8=}~I5Ve8TEf|R8p-IXGsfj$FL@dP67gIDRdmzBFM(ViRe&Y*SU$S#{xH$mXHhlS;_X4=Zz$5X^w^$#g zlaxIl%M@TD+5Y6^#c!IsWuKg1TXti;QORr;nOP?F#Co&z~^KfN>4cw88q%jbqoS)X*<|Eff z@+-{o$fe0at(xc(f@L)jD;vktU0wirE7!HIHe2V~K}!{(a3}(k4)#FVzAxy_ABVWT zKEnIpUo9Fg1RivbT`i?(3|9M537|LJja2>jimsR9*H)WrGuTvx92Y%zJ^Zd^jD!oL z7teTlAilCe1W3dL2@mO`+m8kpLa1xz)yYlV&Frv+83o_Iz$SS}lVfx`V5%l%Eo_zU zM4H_@Cs0r^nm-EE3yI-a@4UB`H#MG5a7Ps+b^#F7bxCKQ2r0REf*Ymy>A@KQ zKCww^l(8hg+JL1LCHE5-rF37W@SB=LktGHso})72mj4EFpIqIb`UMaNp3U@nO95RX zP5Wyz43dO_*fV%+?KGJ7*rWHE54RvIw;RlJ@25fXe)Qo!(fdU4xJzlKfIwWr7F8W~*MA54AP#D`Veftly>427zRP6sg^}U}@&Xvs+;^y|DrufVir* zI|?&Or4RE`=sM8`M^3jouyToYjRG7V+3l$v>}7e6hls?ybXNO%#U;l}ELw>iSt!`Y zGe%O|cV?_N{}17e4k_&~H`W!3Zj`Ye9jLCTS^UzZP$*lo8iQXx{(Uj*VS+v1pBH@K zmpvaPnB$O3kVSL+S4OVXaOtDm=ni-j5*8x5nF3@|>Wl+nVdjOOGnW0RX`1LdlhJFq zvNRdte3o}NBxp8oH?#ja0M(~&0=4fI?=6irhJxJ(8L#AiBl(QvD*LPq|IDelgebV* z%cG(5Bbnou4K_-L{Lz=O$5f<2c9##3yF>exLhbh0KM#);!iwcZu_I9;@5vjA2bhBc z+LBloDJ|y2SYK9yc*Ok3q3(yp0&-!_X=%-B12j7ckC7Wd>kms+zTf&?vcQAW>u52r_j&C^}zzBv)-Xb8Ibsww+Zbc1<*QqC}rR= z(9)*6T?adjqf$;3fvDQiiQc;#l0GB#=0I+GofK&JOWJA_?ST*jVsL&EtjThC7xn=t z&kc(Qbl)GxsUFk6O4vFQP!D9YK5d`O?S_fb?CBC!J2Uc;k*%x5h$Mnt2!EVFA+F4) z_oil0W8M=$)yQCfR5=ZqjyjR-4m+T=L>VJ=fciEMFMfT-gjI?*OV{(>o++rANhDWD z(mOcH(Z=AOWkP%lX&ToD3eU}m{N_g5tsoTHXQjJDtI!J%3G3J&3nsGCQ z?)4Hb6dfMF)}Tzs3)oa~bw zgCEB@MzXit2xk6{d}+Qa`lDE*vuvs%#-M1HDzRzzPRo&W`*e*DZcIznj*kufWIs z_8|$POitPANtE)0Fz^fSX9|1x<90BBZqxTncf}WQac@(tBvq0J091ve7>A0S)mTtZ zV-Br+$5IY}7mQ_R-YN!#AI=vRV9^yHo~5L;7oE5ZYT#!j7yhF4o`Squ7FoKt;`divnjx@1xx-pga}> z!LN+%?nfG$6JVB6j?ZpsQvk25IA9*v0|FQo6tiw?H2_D#7%0M3yl;vx=$KiW9UNp$ z4Z8z@1oyOi&Bk3sy9|pWP*SeaNe=mtkUtClx@-lz-GNMY zO*&DFlni;OQ29zgYkBVNKzD{!vd`?x(1JW{(S1?1Y)j#%R@&3{3qTw)Ypt9Am>XY} z(#HdmS-1N3TJTbKn*G0rV;?y|#PWgf>HS5vj(WfU$)8wk|6psfR&`$lzzx7f&|S4s z^4IOXITmbDd!FP?WK=U45%T2SudOn9VF1G&OHD5%K~+zC*3@(4!1_Fw8djB_F@L9W z!!FOETcPKL2u^iQ6FZbbY>60$wMa~0+Gj~CVMW{N zctBa~lyqtJyQ}77K#Zi9G>dwSd`4&ATKH%Lh`(pyj141X zqjiCh<3D6~c?zhUNhjE2pUgIJh`QUK;`m*F0L5qSo_1fYMWg-T+bjE#T)l$3Ix_XP zhqI8zVz0D8;g!)OUs1{MepbH&?sNU3q;_A1Wzq*1Spy-@KSSv+(Z}!rSkSSw=4a`t z$h7Da$;FZ)cSrN9`{krt8n>$wFN?&L!ijD5LMY*2l_bQjrKQMK8w;TVn*w)u->keg zH`5U(oC@IvCoU~p=;H$=)HS%Lb22cpW*eTkO!wr#idECvUGy}|j(mlpNG zN{u}E-4!I)8o4*&1iU4K$AIwQ*TWa=F0*xVF7}lU0#Ah}fCBQ4 ztIXZofy6aRa3Mh`-U(wqWY^P?@2oZS3$_Cr&W{0hO&?H)+&AgWrIIrddP|NJn_(?36qf>C9eZtv3ojG`|$-5V7rTkNom()eGe7xYk@Z(ltx9fRe%~leZGC$6piH<0TVv zpSS~OkbeWQr!Z|G`0YiiyrMQD3%RbMm#|Z!(W@NDtX=an{IhxizJs+jq3da_H#Mn@ZcvTg`JwGC_LsHuy|7?^7}!nuq_?!CM+#?| zMfjw4-L@^fjTD$(7oM1%e%UxlfK$?XqzOp)Zn^&-=ls=!%qX1~4z~pI zd=*aQaB~3m2(D#f726So<2c8BCT$56LiX|}5VlHRu+g~F zu)fTsN<6H4ea;z4))ViZlJ zJNkv3S&P=>6C;a>&+nkd+AR(wJH;sZ1cXc*jUuFnpR;TL9F_B19Y=u2R=5H=)yI}K zpeS?}S8bNm2P^<3-p^yZ8-Se$IL1D9eYI_w-o}>P-oeEuI%e=$m$Zv392@TXtvwM7 z#mmS|0=TazsiXJ*T`zi70TklFX<61N+#E@^m8N<8sk!Z;3e4MMTJGTgEx~eX?@qUN2pFPmar&;@JzIO`z z^Q%YpG8TOIVO-p$pII07i;Z7T1u*@qHb~abd%%N|y0YBAaIP14c_97L)X#hPRqE99 z04wP?C)|;r*huzN@tA7n}Zn2l?M;BmVy~$Pe{Wjn0cRfJ_@#`VLs-$_wh2`)&cZ706}_zTdvQ zS0)~?gx1#LRv_;c5QHdz;9SfL8fq=~cyund^=pS6$}vSJ453{SUR6-_ArZ*9Z4Q^T z7-LvSi-i;>*{}jYVHto@Rj(XG-P+|7N-G4dzql3rW?j+|y3f-hW`6*3r_S-p-68L; zge0RVokC3)w!=KypN*aN1!7QFfvYZLccXwxk8GI@Mfc6w{m0~sD}I!%zkE6Dm#H;T z`9L!G6@L<(jLvF!?*=4ZDnG%EUA;Ud8RfBdc*iU#H9(Jgjsv)HA9cT3ots@FCyyw=>^A2ff{D1KF|RHI;TQ6{il~|LTAfQ zZang2es(hD24C*BrRMyHkOdGZ>B$2?PtU#X#NP#!4vQ#{G<5+ELL}(8AWs_X%T{hX zS@4{6D*4y|t#hTMqDi5;dHLJ32pkX$(ev{FRg+!ArX7@%nyVlduLxqu-NSaYiyTnM z1&*&gP}F4fkus}RLuDv667Tm}^SKz^z#>E_V*DEO&qBYwzP-Iluu9@zq`-iDQMr zzIa$+7uIt_H)^~Nz{OsW2Hk}_Mygeo5XU<|+kI&)QL_`r61C$qsVU`Tv=i`k>2p!D$SQWfY= zwIgf8PPI}@^EciOz4K510 zMsbXLzVy5QLBY)?=Rg{+$ zIw6&Lq2r$)NhF0yC&jm5r>3~EBXV^i(F9yN`pjc>`NJuLP+(ND1D+gy8W~OG6XVssQJIDcQ`5|TnNep5*5!N|A3r|ga@nNcIoOjKoLA4v+#)WBS~$RhDfrx z4mXtroNLaOE)h%grdv@CxA2!9+=z$r@c}50uLcfr9Pn?lccwyhbke%j&WB{K^XPT} z0v~I;v-3Xpb1rhDm=(ks!2HxzjapK;R35w}e=oh|&Q30Odsb4Ia0ac04wRGXotfN? zb|#(Kc84JI^FWoA=6liEBhK+3S;q$L_%gmaOx0u!Xh?z7YMlTU5*{JF5FSEy1I*lc zB0dALZXnNwm`-Y&FX>|N`iu^x94}7#9c=_C)|$1&TvM^Le!&t!|&t ziN^QQkk&dmFTml0*Mv6GU1Ga$E+9)<=g0VRk2YOj(%?A@ZeFVo5SXChMgWBzemh)q zHk9Dqf`DX@fvx<)g&?|(DpA1JxmCS4w@s!*GAlnw3UY6sM0Y=%zjf=>6OKdfsD^XQ z2oBqQhnt;6MpK{ynMfJ!Bu1S^4@(M}*Nc(+s5@Xm>CShq8qBrL3{eKNusI6Mg5VRK z%)mf8FpBRn9=9pH(;!Ih;y41;Iqt^H^NdOI^MIC(xx`%G)m=co8%7jEF6d~i zPZD8^bZRz`YDGRyMda;dFORmyBX&ot&ZC@WZcile<+d$#2wljyG8&*m0iLY@*liV9 z*O!DS_FEz&R>u@so)ZAdZv94AA73H#fex0^(%5?-6)$Mec8;wJT&ayEQzPDgl<$kw zI|>rS8=Ez_D7{2MGsQRgwd90T&FPWz)dHN|jGlYi$*Gnl(=e$Wci5ULN%_k3#|Dy2<^Mmr6Lxe53J*5&f&$^7Jz}&vQN~$ zgPf+xX|poDXMh`3Ax=QX@{eUu~G} z4R0}yhI38YjLs0GMxL8#9tX!yCidxzCl(z@=cOR9=tzg*@Rz`|Lv7>|&Xd|XGM$Jt zTaavIa1Wi^U&FVe8aj=xBD8j6M&0pUk9k7Z720$FiF1%^6fPt@yXBmZ_tIT^b1lE% zZ~H+`zG2JTB6xSpVZRNWv5kl8c^6$;jJq?o+a;#ulT`(tCqHsLz21I!Bi zoODrOU~hZolf&D1Tny{3E&mnC5Xj#&aOfGaMxabSo-cRvQnQ-FTxR*2}h`|~_;_9{8Yk0)}DHuWP_3LvPoi~=0% z3W&2dBJZ}kkp^U(lSbxk)W4RFBszf821yR}>;t<%VP@(oTcK5J@@U2JGm=8h{e~SD ziWJ=bQRsk)x@g%!pv8ud=G&B!x?**HH|;(Rj<2Aq2HVsBfM})OO=xx7U))w|ly*(> zYh&%#bOLF{;zN35%#n|WXGy0rZ?STc&T%YDVpQ3VF`uNBcr3ele9l|^8mw?>DM|j| zl7~ZN+AH%FydNmo5R?JJXl5H6Wi+gp0POd^O5Pu_^V>d8uf}e4&GuWv4u+uo^V58~16bmz_C$^sY z?zhE9F;1#YR&d!SmDRfYRQW+A9fH~%H&ux!!L?v;vtK0k79>67b~z}qcgAo}w@+Wy zdG2(+f@~_hy&P4q~^0s?D;fkEYc2tO&jS74r<*C0Gy>3OxHbPDzqe#Z|aF^JyYpAV!7 zZpJ$78RRqH8+%_SuNMc51XuaYq%7`ON}1g$!p<))LhqKyXY=K zenDFZB{vqglYTI8lT;AH1FY%>V4def3{T zu%$;j1@1Ova2IKkKid24chFv{2Tx2_Xs$tw{?#rLz5mr2zR9BSjz7@A>*fouKbHEy zu0r5mAXX3|{>mHfWxerVkJS)0jpWNU`E*k}>H@guFF|tF>bj%Gx$TGQpZU!DSjGHs zBkW0llvIvv%@>o%h+`r498QMq|L8(F0Xg0CM!9zK^`X8wO{k%t?dgN|*2x@n{%i-@ zvr*R-BEkVi{Uo`QV+B%SF;D?kYpo64Z*BGpc-o6WVgJnuJsZJbS6SiEH>k!1oa%vt z_2(WZl1dZxQ^;c~{G;ZTlWOs5<=q=dXa}Q>a|8n0-p@ z`UFsD7UJb81degU`WbM=(Ca{le?ef((E)|*0Ld7Qe)A8vYplS(^O z1eW(|S^4mLi#j^lX5brP#W{+W{ZsAVJx8{U>u7cOkacA7Wsd zu%yo-9~xeQ=eI=7t@~6fUYGcLn$d+^Vvb3q*hQGPergtf7gYY+eS}sBRoMH;1r)`) z#o_@_k%Y{m#^?m7da4GURFzG(8;1<-kS16TsM~if@4I`zg(5q7G-NmDMDpALvGT(W z2B}I=Z-f5Nw-5eK$X#~};@}~!ru;9TvzE7_n0FqywnQRFpQMg7dfm1E= zK?M*=9|tD)99kVuG3#*s4&ZABl#5J_hp5i!_1itPSyM`3yC@Doa?3gQnI(8tzFr7l zIDfEr^6dUgg*svL8mSO&2E6_HZye|h1at^{b`~&kmCV6-ys3AqGLY1&U!UG7Bmel* z>j#u>XJ*+!%fucacsY)YhK1>0ZHO&^o7z>kt1SZ$840Ro?)I z0l`SlD3-WeK-!5BS|dLs2p!NEy1RA}mD=XVfV^5z&H31!(Nf3&l^pPRI|KZTVwwZ1370=MeGJn9Ur+371E=YMZW*OD2vjOZ+lZF>MsTw6BLAw@J#(Mm zjstsP*@KN*%?jYL47upM#2O%_F#utxPVmHsIgiUs9(CVTiRhLen+ZHB$dduvy0Gz3 zucB7{)vMukVc^1zV?b47sN0uraTD5UfFDnO7a&$Ej$H4w$MWqYuz%8DSLN3X0ZkH! zwCNOJL7kXidUIZ}9Ee`JzArl@6)oT9+%P&=FO#7&Wc+Gno#=c^J`g%*KxO|0IF{5n zm4CQC2Nbdw-e=UC=(htIgaeK&mV>G6I}m^D4Iywu!ejDf4F#O&nE_@_$lx&{kl(ys zQOLvZ?&s4Pt*VUFFrKH9}R@+dGc+y_!=hTDxX=Y5wm0vwu)x4Mbh zr3CHYtRKl%8U~%GNxa2V#J~~J?n)?`e1f-zYf80vYqF95IOrccHVV3H3oAngd|xp@KgFn82gI3&>z?LUwNt z$khTJCD8{`QWpbKgC#@9+*88mvz>yz+&-@mSSJM+L5v>tS@Dd~?pmsCPd^IT_7a5d z?LT$zv25u6%jfm34t5tW6ySAftDMZE00~{V_}xDajLV+D-dqkuWQX}$``(4F`lwYD z;MAb07l~aW&E(wbYugXS1G>Ti(}!f9O8z-#IdDD&6ZtjM1=?JY#aZGhkSfjpD3feR z0@mBm_0|%+1mxOoAVbfdw}NF&t$ht5+#5;hW+a$_EuVVvovM?QCxyH zdx5dkz&1*|Qxpv)U4#Q_6piy!Q+69f9{&I;Pu z*0kBjkoEIc_&hkZe1g>beIQZ44kUNscCSUEK0CpB9-kpXTe>~+vZlKFau<0jJAzws z96050(4?*}r0M5}(W45Ga-b68cXG`pMg!QZ(6cVWfVV=n^Da0xMO$<1eCy~$*|Ku# zWlN?%%?dac>vK5;qYC8$oZ{B4GkUVLf%{a&27^6$P~ONres!sMmE2PLDD+s7?#aHDQJu3`DQk{gF7`$U7K=WHX{ zo2;HEUI7CqexdvAH=KDf@LqzWgfUe+Ed{Z^tVOd~SMuYJ+UBEu1V3(g_rkTV`n=(= z5y;(WYj?Z4&B?bY+Ns@)ncS2V#r7PQxGL`3o$NUclrh~(~$>B{^;vD>4j8}ekGx-w=DXs-rO9zh?h=UMV;y7hz0*__SlRljrS)0bFDUn(&z~LUzrK7W1HKJjjg4t0?|uSqA?5+( zh*1Fk->5!Xkcs+nT9A?Y`9wJR19kZ5r}|YB3%CXw^&n6f$+$qkg@GVM?FyR7*a>5a zUg4AN3C8;g25vF=vVdc(lo^lLEl(F*ot{@2Y)_0}6+D02GCxJFQIDOiy;Fdhsf}G% zIQ8^BS2MrYgJ)1xWDBfzrj_HYDT?pGl{F_a^K)#2=0h@{pM| z0$UtBRRK35bxio`)Y+O7vf8V!?RJyC!Fw~7Xfu6ZM6ojA9?RDmRxq`9-+UcmGxR(_t+~Zo$doAc?$ge7W}B?@$KujfBpQKEAkf zC~mNA-vlTO#x9hLAM5U(-j;?q6#eymjpE42g~pc^YYUfA+VXE@GNp2aq{&D+ydaJGId`2rB2^Cb{N%;+zb`;fEg5wfkqX3#m`iB^w++7Qk42C)j{$qn z`gvMEIMl{PHFfUSOnk&felD{vmV|YrPxq;uuarI9?s-}`w-g=Mmm1+UGyMF)t%&6i z0gl^)*qSX*Orb!;<`=z5?!5>C;|p;)>?@s99?-L9$aB(>&zg^bZIxX-D=z?|_Ra85 z2-X&Uw8`aNtD}w!@utjGUDGutkOOb9VtuFTbD&VLQ_OS*Jj7$fX2(*d&_J0>x{luO z0CwCFH|*+$o*4p_+4?iLfWlx6^+TK*cpyv}8M6S+50PAte~$iMt_0HYi=b!PLj=z} zP@JZ=BtYjZ!w{dq2AvQ;(Y>#+FZh(wFDqtbSr*%!d1+J|nQ}SD%{fNsWBZea7^%q< zd5tgQWfpY!!4xUzGTm!V^U2DYUOK6FOMo*ZP&>j9x&xVTi)!vtCH@_LEsK~h>Dyoo9q02oxH~}BReAj4)La@2*i+fu3Efm zhSeXj@(`MH+Kx#B&K`f@X z*Lop;e=!o9y#|-Gko}j^T+f9;$#%|+TjD!iroZNg+!Yuc_&2AgV4C#aH|=frPqLk| z`sPivDY1vlYTnP^v-h13T{B%Ln2hr)_1r8p;|09*OPk@g;V@$ z19Q%#{Zk`|DD{CMLWo)}H3&Fm-^ZUQbJOja%J~f^h+k*50%$%&9pZ~Kf4n{!Bx-o- z_A2J3$A7D${Lkd2Sc19>PM`4BvaJQ76j z2*j~ssS86YJkXvX?(D=Y?M3Rvw!UtLZ-FCKv6B}*O4BxQ>qTDU6>&}A5 z@91}{$RV3lRd)RovZyG3zEeXtEn#N=>+jj;?W@5!UJO?w)*#6qT^A5;lZs3Ecyc-j z=+{A-`vp`vPd-%=`an8P8V@6sf?a@6exy96Ddy$pzrQ&|_q0xR`k$G1h}J%X2*wUk z&*9pt4V^%k?ZB?7(TEdf-=BBG{dorrWJRrO2riZUtbb~% z`U0e%_$kV+H;hph`1x{CXuOpH$ngt-u-6CNHwywQ=O1_#siX#qfBBSxy$*`+UPRUm zYJ}^UPocK>2t2TNQLHKZ(^Bw1n-*f!QE?{+&>*Q{eqFG3#|?qT&VVTQ{hSHznOU%A z{1`75c6M>4lpEc0WWoRSzdUB3@|Ff`J@An!twH2Qpjp5*yt!RW==aR!*T4g0bG-3c zD**gZMv*>3gz^@gCj}9*+n6=G{Cmyzi<@D~Mq(D;?C*uAQ@qZF=8f^iozf5J&A4y` zyk9QtPrJvA6%ZYY5mFlFYdFxvq3ZvWjcC(CjqpsqLqHmdIk5l%od=QrD^OdX#H=je zd)C5NWX}r4nFE$nsGn~DhCi?W)yW6rn}pMjssYj2W!M-SQSeE8Bop;;;p--Klf@bj zns`zLK1b*RW~dVWnW0JsUrf;34$=ylG1Yy3eB&PC5Q9(!fiS9OHpMXw(Z28%NEZBv zQAq3r?7GAM;^7iZbYvc}8ilD4!5l6Kg8iZfXexZ|fKbBG^$bMUvY3km9*Fs@*o-%o zuvawxnZ3e`wu8VE@s*@Z61bVI9Z=>nqKMcRElbfUMEzdcvMHl+*=sdF7v}u@23|R* zAUk#dXqDEEUrH_U4XVNd=gz=^gCF=$9S7hD0(`fXc{toKH%&;;9oYAj786Eb$s#kd z_lgllQw|x;3ttl9bngADr?c|%(T?i_WU`yX9aRzL!m2xq`FV%rYV~Q1x7IAT@$89^ znRg)libyEw%37J^a&~Qe^yg0_KmG7Yvo9 zvkGe|izja%oqZ&pJka?UPkYMu*^csIU%#QE=yX1>$ZBAI_~s4%bmoQy=l-Vq;p{)U zgONW@JIs*s2NxjrMia*u5y#yJ;irCdYe!Yjz%|o(w)|C;^u=ONihSGdEB6eM-(@P6OF><8~(nn%80@ICeiC;H6qH{XBT`MuEF)#3EZ z2S2g9?_0RxitORF=0w3$SbczBJ0f_YfO$QzKMDq&{&7 zuDiW9XAA7^!miXDJO6x-MeH~IO{eL?(^JFXL_GfEm;d6wINzpu*acwSJOHm3WEuVP z##t-_Ad5O8j?Pe-=?9w`2XL2pd0()q8L>-E8WXSu^5=U4q5jyVG;Y9N9{2hib(e1DOuX8sz+<2yvyWgxGu_#_AAtE?u<)?2~C zuchFfqmVd%L8k$5@H12O`en6}tQ7%5tHmGj#)ms7Ng$NZ`!Z=&^J3+_tOv9rjARa zZ_C@H=K2vw7XlXV)HSf4R*fQ`mC*n0jH0A$8-lnv>6!ae3Bo@=^m^Y6D32XLHCQx= z;Z>uqwk5^8Z{>gamPBrXrh_a8+l_j@13Y4%n{J`6Gj{B+RlW7UJ9_pHU90AUXOz0J zKd05lpC@}bouytqkMh%pmNLIO@-Jpb8b48u`US?{t$6yoKQ~@MjjtW9036#=@O=4l zkA}|y(L{)~Ni<-pA7;R@tU8)d<~fyoBjKv=113qg%#d;SLK9ehbFL&?Qn32YlSeWa zLjDKKM{x3I0t=llqS1gNToKCWLlqS8^ogh7ldh>~f3}6p#MLF=j*$?R#~U*>_s5=W zeHroSJ1u7Zu29^3b{w;UWnR;KcG~}9{6|xFyZXM##B&Th@WFk)jx5z8hhpo(3u~a( zer<%ydVBQ|c;*=)_9?H+P#AX(dBna4>})=|K>_QWc7?uAHxIKPXbHelWxAR~zjtr) zb~?okSb*$aDM~a(`)3Q?%I)vq+)@e)yA6W-$ssytFzust6Y5=!apYaq|K`DA zXHciPfBe@;v2+DuP8O2fL_BGA%!0$4^FB{NhPfy*oM`8TVW-uxDM<;h5#rB0H`gC9 z>ANffZa%T6oCfajhc6H#y2tFoU2e(%{d} z()e-T=ND4H*oC6yLcnBnS*(H`1l{I>;6A^;zKez%`q_0B(h+g$jNt{hqvN4x^W`o zAiBZv7!(})bDUl>buhXK#l$F-N`Dsyec5KDv>(b&W4YN4dCv3u4$iDi6;Y0n1*u6n z!+#_m4-Y0D_s+}yi>En+?h%3|Z*C*kyktp`TY3<3ydp@6;`RZg+`-j+P z^H=eP!0=^_fuEeJf)^e=?K%^COp##1&m>Zfu1fo<2j|%;RrXE|-i)Wv)RcFEiYr>s zn{0x5mQA%@l7@>nR(aR|$Ifoe?yq&HAG?KRlP2y(#Zz(Z?$4gQnWA^E{z3n3yU*`a zocmVjC#u3nv5$O}vovw}&&(DWxfi%biWsZq@Ka0UFwI3-e~`L69v%z-kaV-*!;aya zyv=v5+gs!3%ctwjt#R+{znEXKh#}P&JN3Pt>hPmjkq4hjYn##h4BP+y<$sUHKe0BJ zjx~Z4rKR0Kxd0g6L}^0Pgl*s)%>W@P6JVCyL1={#0BD9f(9gQtY~Xsn2LE;va9Brk z6Q%;g;vi^dF{&Jz7`#oQM%onDV5OeYPASwB=jk@yVt~u9_Q95S8oG0IgLqUKFjeF7 zaHr~}b0F4Bd2}3L9@R~3q&bWG+NB~B$%HevP6LP>0tP;br?SCZrstKjxzudVb3%z{ zfCWgo49nMu*wi!9YIFMwZs9nK*|udsD#B}6p-`vM(UGP!1DJOP&?ORBe5Tp+bTf$^ zhpOXQ{5CCt*>@>@lTqv{sXjc%xUkT?_8CM%l&AG8+l0)jEAnz_1ul#o_Z`tXb8H%bVjENc9OnSg*#6PS0F3ZhA4jq z(77yd0_ueHO*QTpa7eiB!T$}w)^mX6gEcf#x3-83!2;-5+B*PJwV>pg{+LURx6SLv zP+?;pe7&CQ{S<{^ALwl}Gnwd2yVr$V076(@V8!)nsYdgjjgs9y4!wzj+3H<}+b5>P zxh#4Mjm1ADsMb%3cZ8{PPrR4U`azzi3240;4wL<$=ZC2z_sFW0YY1^N?8c_xTO4+o z4`&Jbz%=D7ylqXD_`8NkO3rf~z?V9U@DzO(5xbWzfE6=Xj*ZmdeLDeSQ36vir_#&O zW}hG+59^jj71eCp*?p}lqiS*SkCO$XC#{OGYB2Qcy`wd#QqS@nOnhc7#rMp-f!;&3 z;k0<4;48rJq=?<*tl1GixvlXdy{1T$iQN7!m3UE`X~-9!gO^%J4dB5O1QNxk7kC!g zXmJd|AzKrYyR6Goz!}pezjgIPoC0KIdhW~j=r$_jYF)?9)qkS{Vk9%7rw+a)J7_;@ zxd4d!!u<28s=f3>aHmiwonVagmV8(6g!584hlP=q>_vsCH3E}I9A~FNzjo0ab!&Y- ztt(TFFAdATBLx^-9+2eZ2;BkdR-Vvt8HIYfRxp+7rDLcuT;g&AASG9*1Qf(Mavq%w zPu)}R6Pouyu5`(qe{)$$?Nkj~H>eH>hl>8cety$e(edLvGK4C%U8W0>v#X#>Kq{qRKPEc^r^uxZIf?{S8&u3LzyuhWE}UZyKA0@Lqg6y@)9a4tB^6~lieERd~Q70>tgD!I6(e8!Y0evy>i)TIghN5ljEx?^Fie%j^<6!(!ld94)3|KaF$VkrY~ zipr|-KzeXg0qoHm%Twd9RGI;{_p9yxdlx?n>7)mL=}s{xFaQ|gsX$H6;#0gSZ24;v z0P;tB2YL##-5dF~iT%;}N|6q@NXF?@$EucweBh;ML2K2iB>I!Fiyx>5I#4;;@MO0E74>ZkDwvOnGCAyDThwip?#2W*)_vxcuRk!vq^&hVhynUXi+|Jhej6 z*yp*6cUNSJDN;nGF1}>s@1jsK8V^6?YY0nv?QO7o&SDR)dFph*QLxab!WVXNqVNkX zq9HsM7bQeDKh?xqvH4ui6dlA$TBA&j%Ac`>Daz6q)F;95)^=^z*+l< z$l36V*cM4EYgO}NFn=%igUA#(4NeSNZZ#Mbt_lQuTZQs?Af)^+@1h4-(YZV0ZKwHcS3ioTX*J3<7!wo-wCPgQM`2Kd|_{>d(*}AQiWEXl8Q{Y8f!(E(kn_94@I=< znPzlSPucI!3aaP2B?FLKSx}Q29gfFx{qPFXg1$ zp&FG)=CL;XZUPGE7lk{D2^QKU#z;dLv02VJVH;=;R@`kkd^k9_2Wh>i$FkT+B_3Sy z`9c}m`ZdQh+|ksX>T_8>BBl@`wie=$2$`WDc-fIyc5S(DZ5=KN=~$Z*cX-qC$3(tZ zq>~w|r(rGXs0-Hgtv2D_H9WjSx`CG1W1BK2y!h*Zllx%Un1U$&0;`tP%&~2VTzVR$ zl9WQ)+(!)LPIZa1Lq&D zKV}TGlp@#(he_}U23+De*T0XE5NnySi7NEe(~(ydEFZBDW;H)LGZsW5sLg>@lcS4c z#ZZ&#;zj8@s>b-$Z1dMnm5uIt{9VMVq>LJV-(>7zh z*eRzX6exmGSZ$s0!7*-w!ty3)gK8v@gnj7|F5PB3!8#9Ee4R8FXC0|CV7Ww1&1_FWjb?pzl0!wJ_ORB1OCRpeSm>hx_667F*o)}; zDOx5=lH)}*Oq(!+ACFmZjjS-PuL$m6;IoXi_2!EaO7oE`HZpab7xq3J>!E4n4p*bN z>Eawg$1qYuXGK|6vqFV(SwEu8E0fVMGUeTT|JL=vi;5Ht8=?#5Y#x>@RcVWhbQ?hx ztmp;{Lgk9s3yx!IHvB>ggvBEx_Ol&cG9B-B=~=kb^NGn5JKsnCQrV#PViGF!oxF;jg_4biJS>%dwSIO(iaIt@XUMqiNmrj zavh^Bx76ftNQ#3PJwA;14>N4lJ-{ccX?#HC6zNvu$<4zWznCydj&0B;h6>;6jveMmhNQ;xkVdMjmuwM zir;ig9u>sAkj6eOpQ?JMv5`SnVv2}7ap`f!>MM$Rab+>47Xd}ftB)>H)Z=LR(v9q~ zY*=hcA9A%eW^Lphw6)R*zvSIacuQur;ilo{FOY|PPYq5dA>p87As(%v_UFuqv_U^Q z+8>RzL@Xh~c6!8_F#Otdb1W{ER)55_6YNF;yi`Ae@_Dd=!@(A35!jR zimqhcgx?Et=lxVRY;wUAZ%P$8Xr$&tP-}&$2>K+XJe#C`3eYDxo{V6_o|9(Xdy4X| zqP@t!Bt4|E()qR+n)>d&-up0?@Ac*`d%=7oyb?H~-CQ`!Mu*#KT)0f|Y|(A%nD=Bh zOpy8MwR95swT~X}oScx?D?XB18F0NiYxjEn{jY=K)x}5hDg(xqqU1+}B>d~6U1*Z9 z;%6RX!BJ>ye()%y#Zr4>`%Ul}GKSglZT%lHZ|jA9l1>=;eGTv8#Gj$!UW%va9{NsG z9^b*6(klOgJEc0yD{)D*TLwqhzfLlG?y^f!Mp2M^rr1SXe&%(>{%wN}%%pI5YGx(C zFs2;QRphrr-jh95A|CTEn&*j%bDX`Ew8yUG!Fzg*Xhq2twg3J!??L-hF%$815E(fu9(i{xWYW8X>0Vbldt3A9xnsc)2G*yr z_*)5J$MncA(?6WMyzHh+!SNU-`s{x?(MKY!DgWRC{Cm>>@1FGUu>tzP!1_|@o}F=K zgtXaHV1&r(=(C>aVSNq)U<;X)!MXMv|ug&w+2(fWmbTml759Dd>JYatc)ak57RV6X;?VRqp&v z^SMeCw?}?>08KTS$;YSdb}o}4m=nkA>b<{>(&%-}!S~b=UeJ=_6P+a6j zWda~kf|Mt(#xt3CzzZ|{1h8qNM8^&N-AvW|99;|Y$6xxm1Op1wlHiQzh&&^vi{&N* zvXSqTet4XQ9Aif5><13^Z;O}HPc4f+j%w~Xp@aZ|Mm%Z=peK1o1>o3hfZKFHj(QD9 zB1W}TSZdjizkhZskc$+VyYiIN4E{0R99>9g7!$X#e;T*ze&H0dMjreq&`1<>kgAhI8jAJBjSIr%b6RsQzF*DxP@ExbAc`Np&OSKoJtSI1m?P#rPODeB1q z@)g^U3DytXBN&LjcV&`5ujmMTGNw3tKe+S^)-RK|Vm|8F-T%dplCkSKe!0e168N^# z?SnA;|L=U!y)E$ZNd*#xHpp+U1FE$(sgKKVZ}XyzB70j6YXYF9#}cE+KO#*&!&}_F zNnPsPFwW>2Eca%Xaxb_RMcOhXe3mrPWY<6*P~@gvHYh?bG-RxYY=8J~Lb! ztPs)9(GEoHCeygFaX>oF3nYy@0E^SrT~e;-f@I!*!xl|xPS2Vnbh9^;; zR}(t{+-sn2=)RdX3H^rovc11OttSpp>b$nsN1-qPByDvb0jtD!@E5ly9`>|H$d(MA zacOK7nXFi*%QmM(jb8aw`~!Ge9RQrGBdY4L^H*-NGC&I!#vDj-PJ$~l>xjKIL>^I! zu)8+-&iA<~<;H6Kxv#lJCc!P<^vou@uMWsGnmk-qiFdHze^ukSo5FBg@8+#x1Z{Dh z6c+r(Ve$5@1NP1kbVNWDy5RxQ0VbRDL4<}rMs)CiT2Y%83bUI-K+HX(V)gMER%Kd` z8oSCKG6P(Z-cM-V0mh$BurEpjin|gIja4E64s65Nb6v7x+u_R_Xrx9n)@IGLcNTr` zPH*sLxkZUGK{;L5@Nh1GYL6LM zimLIoh}NTj*~0pJV@Cm_DED7X(^W|vwQS;*S2S2^DFes+uCD4#d=Esl@ zf1948FRMeev#D0fktcl0fG0efSlE9;bgjhhy#N}X*O9k3V2hr1=x4)@8I#$p@&!=` zA;BYfdLg!^?ADcfNiSg6-kn6d^HGB5cEHI^SZ$X`_TlUpiBS!o4>2UQ7c6%!@jZe@+ZpGB)P0 zTlZix{^M?KWuFA0_5(2DP6G^C%I;H9VVn6=S797zSdk7zp<_Wu$<|_@9EW{-Eb+k6 zUKIBV<@Czw>ooXlWC6+lvY|!{1%8Q`HZ%bD979}ciB3_{Q(*C7U%$=`0t#&C+!Kmy z@BeJ6S2mh}OKUyO2teYU&(7Qu%{p;C`5Xhzx(9abwwe|>fU+(3|MB5SJq!4CX_D@f zhQA-~0v@Cn;rzbd{E%Hy0~cQzeNR3CW-o(A8<{;d{y%3=@@)hG2lU0z8Q2!{q(G{2 z@7En9d(H3B{Nu%pe5fF90o1`1Ub$7i&kbOhIDpFXO$ro%`g5bpe{UtlxAvMqFuR&}3mP0Z zRlw{m9r&iVS^`++XM6K6f=Tf-czk|xAI~i#Gv=! z5dQS^kI(Bv&~4F{1Et+dAB+v@%uAr{R~pv z`=8Argdi=QzeA9ZYgkVp#f)}nkFnlG0;1nkS0+Mrqm2JN&tdRtnLyEyw734Mwi80(o>IsW zW;660tgi;_&(DLu`|)aLyzdZY+ECwQ__l0`2}O@wf8T*bp!}T_@E;e?ako59gUtBa z!G~Oo1m_DS=nt3%&Z+kUqVMuI)lTh)pJM+Qe*O&oq|0#D?Au$RalKZja$7qp7GqaH0u#xT79(<1*1KMiHGe(w8Nk!wf@Q{WEq!qsG^ z$`Tr^R;ra6no?(PfoPp^8{gJ2Ok}K?aRANnZD5Q)t`_>3{7ky!GTrG(aAMJ(Xo(7TmERPFG?k%WMsz}ENkEEFgEb`4Y<`!D3voR@R$Va$+Qe+AJ$3?lRk4tf*7^99 zh{hznySiSuF#)MdK`lz;b#+mut`8U>>w*es8uVMl$rC7VB_WDCSWR)(sq9{{5NT*G z{Sq8DR`}}!Yia$C)#rEVfBI2$n5Q2$?GU|b#(By$0y8*urr~DKf>vk=WK0qi5-})m z9O+0`4tQXOl8G_0a6%q@p78t*t!+4}`+;VFUkV=8P<#AzL%|#vQECiiw>pcd4IElG zL&Z;X9F|-cU`22j+vA1Bl^Cv5e*mM~JfoRX>D$S3kYoy|?A5A_k~2c+-Lccv|6xj)TFIPQYbawFvC z%T6eCN&;jn)1WJ)z-o27O}9Fsj4pXPf}&$qvwT|~0eB8)*F)>y+at8=Xd)vfMLb-= z-c&PkO4-=K=@_d|kK4GA!-q|!7m6Xov*d+6hE*OXAdr0w#^!3ENz4H0P_FogH*jHl zKy$w%<$G!N#9>|yEQ)k~>(Dkz7lZ`YLHuC12OjK%1C%RY6yq+FyI*uJHZHxUlamqh zma*lg`V+}_Oh;%&`>=p?22Zbg;5UZ z2WOM=z`3XkZfWXD{X9J#xrS=5?_WC4Yz#j48-i;GBvH&@V8g41DcSXwAB})AcBhuy zZpNM|u#~E1^YZm)JL(@1Eov?)-Xxx$}%vabw4Pty;G^17q zsb0}6+aNdruFCGQrlQa4fETcL_vSd(qU%@<)d!% z#W3*Y1CO07v`f$eoY}lCNG`xr9rVFI##n3>q=_4}k^O z+BeYH(0l$EN(Q|EKa}t(AdyUn5i&0#bJhBRu3v8eT0|F|W_nGuWcI8QE*9m%!^7)f zhNyk_lEfoIy>7V_>c-N21;$l5q{0*Z$GF0)lHL3AoC`pOr}O{xZu=wMg{)VS zYT$|pdjFF4Ja9=HSq;4kT0i_EQ}kYSg!2}HB-b|IExqzL_`}(o^N7uRZ8(xn{w-ca z*g3@-w7-d+MpFlZHw>{8P$1st&8?d;AYGf=Cr#T3jZ-wTvR89l#A6z+5OLq z{NJxA_3u&q_geh-cJYrvFxUT29y&lZ0_7R>>UK(plBXfkqV68h$Zf`aP;FdyI3YjIaIFgN2qC%w`_;AULu zHsMfK?zihR3kv*468GqYitO@$>RY*u^sLl(d4L6-=j8>M<`)PS@dK-DTHhBKxwE>E!y?}vQ ze>rHxEm9sXN@NINP@0tIYzGlfk~~G5F2e6f#Xo$s1EFgoz9WQ&#Wu%fo8o85u|Gf~ z`D=i66yrWh3Gf6*Jt{kQ=t)_6t&@Y-sN|UE_b<`F+SNePvFDLe_n>l9Wak2wq<3jh zCQAfZ`Cul{Q|WFS{aQCuwG;T(c@;r~4S{m8pK6~5=tHn=V$WK?06l3^XMd!Hu>kNF z!>3%WDQ5a>)HJ#F1}5*z*8L6SHl8+u&<#`5NIn45#Kg7hb==&=x&%3e4_J62;iIYq zuW3~&)zL))8Yy0+r%TWwl-Kvmy&-{-(cntb0YugrkYHwl>tYNzGKy4zA3_eq$)%PJ z_-kPc2t|%!8JxYkp!rOW|F6AO5Vd!M^J)5Il3U9O)t=dbS3;mlGlT@>l(k#D`dTa$ z-JmBt7k8SMFhUEiXWa&azbxo9lzVgs=1)Jn1%$3SfIQ`$e)YFZBG1PM#`NjeovoGY zn~Ni#Q@=v<0liFBnxiMLY4^3W*8_h(0%~CB(Xy5PiVE5qw{dLt#>tr<&qRLux$p-Uz?iU(T?LEpg+NcG>94)LjoSS0A9BP=J?7KeT)q;+ z$lW<)LVzTUc^4>ARu#fVZt*kQwkJr-TV2MUy8}6 z^r?XuuBNJzw-4TXDx*c;UzM#vIEC1><&>lRjD$qf?}Fq5$ml&xGg(U>+@wfjJE`DX z->imKC0_%3Tz%71;1%>*DvSgt%x+_*TgB5gGZYe!dt9M5qP^yR*rZh}3z&TD1u(Kz zk%TN*>g6oL5A000Cbyb`&SPoHJs>`o-<1)^;^UD?dV{~@34P6sYNZgCAhS5|sy*E- zU1(6FlR~e^3IGnxk5u)r$U28vEO#uzd=h1ER|OH&6#-~BYis$!KfatIYx4*eUnt2F zuGsh@|CoA<*Aa_Nr#D({jb{H25)M zw9=@N!j7p`536WTIHmR`^Dsv@_#gHfbRD44!HENjoqc^U(d-S$CTLguyu86mnxp)h zf;L*xv7hRGA&Lo?K6Yn<8nsw?_6B!(!06?=z*^KNx#~iyvcST^{&ivn8q>__dYEp^ zCu-K4T&>#U;vZ}b;oRX8)kfhPyPIgb-Gj4|p97*mQEyf7*SxeX**qrQnAi{~H9U7Y3JlH_fs zRNcjEFEaTQkV=#@NY@8pL} zRyyxh2us}Jc@Y{ChQ-7tW-7{-(mOm)a;aY51%DpMfURWh4ALn65KBjf%6_BgQXPuF zff#JAk0ZyB%+dY4Mr!8m2F7seuqS{Zjg$D-Z5=5J&L1XiR*xlZwml{BbDuFKErubR z!3Oh=v2n9SzY=0a{=S+|GKSRTyu-!p+%>jRxTij)1bncZzs3iHC#O>ziEo+zSjV6X_BEI)HQha7<%fLTtg?%Ufs@~4qr85Er#5k4+7mB|8ijy`z zu(d=p#kG)<6}ItDgN~Y!!zP50+}r!9wYwgEU@V5Mf|h5}SUvoLGXY14Z;Mb}zvxIv z?eNZfgT&u7x2p-Z^0Pt`*>0vJ`%E|wAdqA>m=PL(BmM&97S+1?f%1s5VX{t!jxFf36F&>_cjmcmL0StcY{Z{gz?rPw7K(;r7s zT$vEn-|QaKD%g@Sd<`lYBL9MKpjYba4m|~GCUwxEmDZGh#Jf~rs4)C_?crR)94YmO zwalXVaUe=a%cv2=a6PkOkQKk@I@z*H7k=H})k=J106`elEh4(ZoV~}!yMmnoox6`= zzkQslX$%R_hu{NYFMw09E-wFlR@%xUqhkZlGc$_jj~OFB3lx^Swnm}t53G_ZMR)P6 zzL+QVYiyoIxPM3J$5uxeha@UbjuZB=#OoI|H9iG`a{{Bg?Z=(m;(Aye62eW`Ag+8uB7XKaVt9e_AWKxdTJtvQ!Dl(0Vq8!Fu1G$_HxMq#%>ul68|)zv+0}_9LPaeo zn#_P#x~d*B!zV2(y`t1mC^wL>7f_9YVpIXFaI%oB2ZGZQ zE)rJ-hah2naFK&5;8Ut9X!hm7<%31?4#}^epjGPpO?Ki3M4?C?slS9nNm4D3mIBYg z9IzKs9ZY~`keA85yI)Z#>Ot@!g_H;njhGsj*F#K!wBCCn`ce*567}*81njyp z?owsx;*3)6{e;~1xv^7aNX@UkTWfrTvYX;n1#GHc!O16&k%;q2K=dqrgUM!?Is8bo zs;6@_zme`+ybahJ@+%*cr7sb=Qq&7~Fo29~ zv>Q5X%7ctCnQ8%3K|xXo{a4f|3lpE2Ox04QS7f*apw8+5Z2E;?SQ~G+F(A{e+@N`| zhorlOM_G80q^|wlLtyj8`~#bhe~G_!ye+`lToxIL*i|VE75Uqyn$%E6)0FXUd|Mdo zZk<1Nw>aah_+L;Cn&%Z#E+fOf%PFCOa0+SPKU(T5Z%A@ zLmHZPfkasgG=afXsNtUoX}`Apm<3W5_1oLBJq1G5Q;uJrg5_U9`A#M|;pNS*LvL>B ztMoz1Q7@aiDv|A|bj(pXzv?fu63`^Lte2eGsJ|_oOkgu~ z@##^yoy9v}s0gu0>;dD@+a)$Ww)7(jyAKg1Zw$JVkNmm&7?*j6S@n#fke@mr1QE}5wYMWQaV;ijqT z`IciAne7@xh7w0ef~d+#ty1sIWIWMKhm+=9a%+g7fCB;GBhu0R>mbGDtvei~+=i7x zF;njJHP0`^3HncLtGx{qc(m!f`L4VL(ok(r{gI^np3fKwG4t)!&QiyL(_9uK5yFH9 z^p!-0VN7n}UrOSn_(&C*g5?WrtdAA%ISj{~8nuz1bxjbcXJpVQkG zsrv`Ut<&*%9jU>D54i6nZUdUGDX6g-<2zm4{79~GejvyAl^|d9g@XJX>^=m@XuFR< zKTi+gu;bfmoLTKq$|E5jSZCXd0KS|309$Yh%mkQkrAZ~bMJBml#HLl|WFn1f_ynCi z`M3-b*B!f`9Awc=1_~hJkt{ztT2KH9>=ownXEmB24$VFPh-0=|Fv&cGtON>^e8t35 zH_{SGaR#_LGea8Yift(Dt@GJYR?^3$$^p_rg~Wxvd_mETIKz6%pJ}VBf-JVM$CYYM z=!i>Yk&RXJ?hnbn=v#gDDs0#W-fbL4n@Gs>K#!XC!S9N*k^1e7OiUSx>iGS0AR9RE zn2`yxforXzqknJ}oT;qII4u+g16}ay2&a@39!icyi0N${Det$GW+CGWLqY6q+X(`^ z^tMLGz5`V~HFb!c=asUlhW5gKWkw~r7ne~^=_@cb(4HkUph#XUmuoDuX{EJ^bVqei zhL9B=(UeedycIlL3KlE*kc9N6Xspm%mvRGtyW@xl`u zxBeGOHA%*i9U8&nlvZlVq_V$(DLvf(1)c!V0<%@0*!-q`{9jj9V!``9FuZ;)DJY3G zSMJR`v46d}A^!L_T}<)jByc!cUj4~C!*E^y3skQtF4i+75WDTrkZ3os&44jxiluUt zyc#gv+*iAZt;93D#(d#nA{>M{d5|Fj1fZF6uusT>j5-c%$*weV4L$RQ%O5$iDL#LL zwoK;$d&&ZKiY^q0bD?Vfc}Rl(v#a7^Nep+X>!2;gr4OxD_3~J@!w6gmjg)~fF47LI zX*dwziNoUTxYmc@Kx*VA4iM@vAEr)d7(z^wPQ|6#0c?_&AyfwFpeT@5cLFWo5U&|M};j8y@7~S@3og>9ym$g27b^JbL981A49!pNAXq3)n-b!6`=gqqs`6VCu`E?cZ!=84b7 zf(Bwsi`1>bqwyk_qUU_S4v|HFIuJB4VPF;A9YQ=Td#JLj8mivClv~yMIS?-*+#SZ^ zq{p=Ogg-Qx-`Wlfz$1mh$3~(EXz?Y;RijXittCNg2_cVErqhSt%q`0U8f*8I75Z=N`rN%&1hz`K*T*nk1s?wnrJIKG9%uJan5*`J6hLIa!wn4TA z(A*YmzoXEIz{JzqvJ}#;NDnQ<_m&{q7|bBB zza-xn%AJHjNzXGtA)uvQ4ws+s+PB*q$+J=o3^^xQ!-eeZ(z)pOJhAj`K<@ zvpyPpVhMzi$^`)ZnZ3r#^yfto&RrS$5vF>85f3~c$TfcDgv7X9R+g_>qzZMhkua=> zRv`j5Xuf|eufFPCH5>x652_;NYYGwYosg}mh=22aNfoDy!$G6W?%@U0lnZwa=t*e# zwM`A-=k$NweoF)0Tw~4ha0|eF`jV$cW{PteG(1CsI4acT(rXIP=J(<`EWX=sR+YZ4 ztV9{I2dBLz0i`Pn)k`@BMUZrI*-aoSJ|LHBYLCD-=`C*l{-Eto(*+X|p*dn4yd&TE7m4-v~}vrtgBgJdeE0?`|JX3>y2HdRr)U;L58S*tYIjaRUyp?L2K^zi-&i>!ZvaNV(Ixuh!=&=)`j5RFBX$IHC?p}qNe#JO2UJ%Q7!KW=Jz+QnIH?NUz#~%`NU;ugg^<-Rl z^0XtkC=V=cas@&TA3fR3Z874I*TY~aagEv5Vgz-A&`<)GWq_L9H_d$xy29xUP*AFX z>~@ri%uDhrzA~ zn1?hgB}Ky8Xa@8H`e*p*0;cD@fzC|a9&bp9Q;FF#o^=P-(cJiXhbM1=M1%OC^hy3r ztn%k2|FAz144W=-hvH zej&_$6he%@TPFO_O5W-CnqA-lvgUuysQlx*axRzU`8bw1ut&sPqeP`IaU0ajYr?DO zzTlSlLrQ|-VcvBtq2K3vzLz=>!~L<{0(tfGI-s+ZIzl=dK0g-7gKZ#FeecpQ`iCIH zN%~8Ko4upGBrRf;F6Twax-TS6d^G;0R`$@6icBKsm*^qH`MRS zmG4rO+J6%KQtR)3`sLGrGGGkXE7d~@QX*nNW(pX8!SDK$H`n7a)*r=mPNXCd9^vGU z>e5r-hqGBAVTlJM#l+0NIr>%{q~rAgKwpo>`}6Xtd^=cr{i3IwdykGvCtOrLI8_J> z9t!T7K()+*!c8L7>J=Ko$g@GKH1%@@DO+v5zVQQNF$GLI{p~4mUOK|9o{G>pA?k=e zAL7sI{z0VFV@5X*6i8>FeT|*dEY=7VbEm=A=2C6`KgLF--I^DRkr)83Dbcd4U|u#2 z(PK03E2N@{L<|rtq&#g0I$y%_Js}$pn1uXS>efK@41sE#P@c~7&{2GQ$nmFmL!peU z)0uv@H-XO7altM>&cR08h@OoV$I zm7_(_OWYC{F6=AW+}bFGvg7VkpGcR=>re=eOebTOqEHs_;C}=5K^{=u??RGGUGJ}+ zpK_gYfiTLny7KluT{q}MiWcr8$keG?l_-|kZ_`%*r$MTsP!XFcX%)PvLMR_sFHgF8 zrmyXUg=0TTA=xr|Thi*wOIvcJgKJOC?OSW^9xBkM(YOc7t-g2#!1kD6F!y;dNsU6V zzbe2edZ|6~5u+(Y9+x0}Ll6;@LW6;PzpzNraCeFl6Ee-U*wMQP>+V17LNo_XMe6qH z*}g)1(vn5n2vyf(q=vT0nRa~YkNg_GorH#086ju@C;GDE$2$_GkREf@t0zlEBLLbJ zwQqnhrOdTQ$t<7e;xP3d2{BqJ7NA^VUxzM0vDD=&U<(xtJzJ^Q*o04^c8j!9WM}07 zHxx7~QNDYXewwhMwwQL|j;`_UqO^m4qt8uG3*e8-e%tI)fbU%Fp!#Y?Pca01%T!?` zEX(8jf7<){S(uk$=F{q5Y@x8g~X?Or5bQT}7Y-;H=-`7PSP+f&$Zw-}iF8aFy|;L3LMk z#7@o6IU%otZiv3@E@IxLg9Bkt;n``>70HZ`LEjiGyDAcKeY_m#8^Y~!IYlaO<|x~M zS1nH@A3Zg@!6x#=P@-dUia^XH_1xh#qp}))8QyWdhV&&BHb+tm(0Mn=V+?l#o=SVP0e;-cA){)iCK6)(PV?V7`k4Sky}l{eXVT@kupdMT zdsT0DiC`A8A`ko_O9)~y8WJiQAV%ts;X)>c?8)n}BQpwO9r||Co_aGlnI6I$hyzAQ z?L*9V|K;?kC@il#SqQaqT9KK=8%>5+^8@(VkD_o-=vmDIIv5s?7 zcANtUeKh;Xcr)oDyPmLZKe+(3MWdVBboMp!iaM?{`b8lcMOQ=(d}rpHO!;wiK=>yOZy?r# zr+ATM;6Vv4{^Iygcdnx=5e}~_v>j}cPHn8OJ^?91KQxZbnP{$F25wYH3`rv8buF+B z0-wh={o{b)97c;5?MUK+uDG0Mj(ezcbQN_$kKe*xkp-seo+0((7e;g~U;HoKL43VB zB3{H2Gx?Pu^@c5|X!KKpTjvekwIz4^eUeUV`&Flw_nPyFi!(%vnBPW)m=Q}2AV8lc z`NQo-{WBj2PIoxGfo-~H5n*-DMTuHb*f-V;wx;{e`Q)8#c;!Rndy0`_o7?t4MugjC z??-*KdT9HkY{(LuRmhEi5)b)jQV0%)Wh7G+wl!0{5=En9a%o?aTH%WeT~Q{coiq6) z6eXJ$ggK``Rsi^Sq1K__dG$}r7*YKC?lq+%_h`sGo+lv1RWq@Sz0-UiFCWf(obYg` zIU&9B#;hy$6J3Slr`Ih|Zkm5v_fiT%Jo^BJMRid8wYjN5eiuqS9lPgpmxbS4Dne{B zEOkm@&;*n`v+T*4?_B1kWjPl70%Z*3+jlFDODU#u7U7d#3XfA1I!y9Ur-0G>!cc+)}d3UtD5H;_luZt?%EsSu4{CFUqXeVI}?K6 zV}*?BZ~?kAPHr^eArMcebpmHNQlwYqME0#5I!#SAuWD1SQ1q3}>2!Gaio_R!0saYx z-iL>6^z~KD(K0WGwhtYgl7uIC_&@>@4@UCLAzkJZ%)g$%V#HBP;_si}Yk(<$G+{nr zy8#jbQJqT0CF~E)L<`u?kAtW~&zkf2PM)(x5^Sbf9lu zXQ13EtGJyam7j(?5Y;b~ zwppD>XnlKlXaCGTX%2??JtR6!>tA;r8C!xcVI6|zV@b3h7XKl6e`7|4s- z!}{quN^3N8Q0PP7r8{)qT_6Z1%Du9{<#t^o9o2Wz7;-*9bd_hbfA;Y|h3{#}? zQw-~obDf=q5a7l_&52eD5F1MSewqSLG~3M@)?L#Ut03>9sZ4HwZMr}Do`jz-^RIJJ z^vTCSoBo;IoEov*5vX+QiZ%yCkFvCuh<&WQ-Sskc(FRzXX;A8MDc?>2t@eBH*L?C8 zDxG=mFL%?vv+Kx;c7Mo<_;s0n0Bv6GsTxCOikEU-Hj2#sj_Hj z;KfVau_1;&qT;R>TYR|4R|e)~qI?hA)jP5!)(uhgolX<6huYM@m(8F=b@oA|qt1jdP06O>YH)iFl!(1AKuT+Y zIrk8RS;PJ`yTPXw<6)Bn6ffmM0dATStDhHZX{Mh!KNL!t`Ne|yVPm*Qe?lZQ&PVyr zfhNgM_BFT)4d5@c1>W%$F9-32$)hhiU`4T8+Wim+M2*+J#`pR9e+hu{a0=Y%X(8EQ zLmRZ|uOOdH0#pCkFqIkyZx%LS7UblM+P!C=0h-38bP?p_h zh3ima&nu>OBgsu5I`HdWKj_1%?D~RJ$U%S|x3RJO$gk;kU$Lr$4T5{I3GvrP!JLcD zVzenpo{9~0Z`(9gveYO-je$x`F1qA|2(njd2Y-f{_BxiQrtyFl%N;>Yg85f6DDjV9 zVyOTN;V=o3uT<8{=D|IHcC{BNP)J3QTab}|FTU8WcI&88&`#~S8D|P{bO7W7z(7b* zO!0O$B)&Q0s=z~-3^jE)Pw;_#(UAqx@)isXI^b8Sd3Xr(HGk446 zQn^0U=ThJR6EtSM)V*({44Qj?S%4SpT}c)%jfDBn7fh1RS4(~Qrua@tv1oQ=()NG) zZPFSw@z)2ghwKX!Lq|JA$&wYxBWU}@YkZAO84yH&>3xn}qqU?f%WHP?7rccI#keP0 zQFf;Tm_}g?SqirI#Q3S}=G(NX*E!LT+(x4_)Tv2iS}Ob-_uIac$L^4Njlo!SbCK?) ziG6p|PPi-eu4PS7`lN4ScJdK5ndwX`=?o{FZ%vjuG6$tP zGenAzh+gvKsZcR2X;$(X`5`o!<*$&wCh8(r4oLU>4mpP6;Qn9GdHE9<>PvnV8}H-a z$Zh-ZhL3*^mu{Lt2kqd)X)InO(0G&$qTrtS04A@Z&z6bh6B6 zn|2yRj~NA&Ci;l`FgRgz0)P+~UmS{liCOyk8lYGK4hDqt)A`F$!KBzm0PQs^X1lJBnD z0Js8-Y|om*|^j8Q&B}61+IuCa={Np z{__-*CFen3R0W%|y(;?(tmGyPgwOseWof82ND=E#c%-&jY`o=^iom>OgJ+nBLqF|{ zI}}pl7%DIlgR2>BMiiX17SGxGy2wOn##9q;>~HsFJdH5L-?B##TYtGtKEqpjoR zJnHM0K&}w2M@BzjTdb?h2(S6z_J`=#d7iTfrL}8DjFp-D;-TIQcA53L%eEfk1xN+BoDApx>!-LE|EVOSKWIT#O{xSj@%C%-N^Q_+A$ zJ*LdxL79>E7}zxDO-NOD$Wka?eP{~!Gy%vXx<(6mN@$}IjHSi3-fg>#6Ch#Rx06;d zpv2EPF>jklnvegD4^MmPi5X~pRaBTAQs`c7d$IlNfYw!)%P4V66=QTUMlDf+pV167 zxsWCVT8uNjEIqx+7x`!hy^nYr7N&ZQE~)xOZDW%tkrqZ#ce6j0Mnf`m?^>W;dI@utN%^(e^Zc31RC@)nFkQsDx0_f{-{@CD^)Vy+%6QoIv>S8z4zwN6x{AVH*^k+8DiuEHyI%Yrrx&A#PKvMv z-9`Csx2X{g)$z8-1DAQ4%2?+=;k$Wne@;w6)ba`SrJLdms+O;AA~D}-$G?#r2Gujc zO|W?UYAAi|rr>>afJO4^zCQu0|6X>Dcse*j&4BTa0RmxWOfDk{!NsWEv4F!Oa{8g5XaAWWD}d1@Av2l0Hg5v(WgOHWkA<@Jcwr zz;y(Y(8-jb-vD?f)TB2H1npz*clQ=0c%BmzeSuW74~}r&s@jF(zh!Vg$`AGO*Nna- z9G+?vFMmzBGvJmbvM}twEsV3NB$9U!e98A{RUrvZ1(aVi3MLTMgsf4C11A!b%>yUz zY$=~j}H2!1JC3Qejgpktm8r@z7(p02m0QhAZv=l>x zW7cz#o#hBlL#YQLliu8$JFF^*Dh{MWen>qDAW{w}$3}o2OcBIdDbPXFj1u>T{Yvb| zz7p>ZuOEo;ZQw>mXOlqF=?jOT8#2Jc_hYU#h`vdacpxLO$(oq(`TN@Zzxyh&oyN=W zdJnbN{IX=EODGab0r&N=8H##LEzxEYmOKU0SnVpWwbO6jBRvSJIK?dRP0-ah>|VIc zYz+BV${}XI!!BNf{eff9;83U66#Y>|Eka<^5kDvqFi=F;!ta_{l$&!v)0d5v~XE zo-Z+|-civ8AgeT(y1hIRc6BI#H5F-SGBN%A(_O5!$N(9IwM0487bYk<;zkFnph>g_ z0$c^z&konlL!ZVGRxHv1nt#g9z+VZO}w`$u@IiqT+6 z-sRN=h&*E6Bc_zPvuNMYHCfML@mxR>>ZTC#;4U+d`!cID3XD5mWkEZ_1LEUx)zei= zqpXGg4$x&#EwB2m27VbHs=ebigqZ1#LV*^MCYM<(vj6G(87-8CHlJw|$ieO%<27f8 zcE1w>WXDurZRfDdn;E7H2&82Z^Fv~d41crQ^ ztFL3s2h)Wb8$5aS0Vtt`}B3jvL{Hn!8LFh{5kSVeSG| zgT@&E_}(O=+mof3Hh;gr9I~_Yxk3@3l_w1$3}&eld+5*z`>=h@^~JVbX$OmeHz=`4 zHD)nbx!wBwV4j<8IO!g9&E>5!XgbMX@1mGUB9cK0ONNgPqKMEj!>Bl?%(2?Y+5tZf zJ$16ml4ina#jV7997uo%`Uv3>!5-4n{Niw#`11@|EaH};KPGsLd7>PB%| zVv@*OVn9o)rw1rd8m@{K*LE8=ex0!HNlUPz`i3r>DFDT3C~%RY+K>D5hIEBQbu!7b zoeW~lfV$V2Gs9U0jY&`gIMI7-4aoSn7(j6w351AjKMC6fC>SRoE;hlu*wwQqvrZzZ z9OnIk@aq(6KbtM(BJKwp^)=fuB1qRI=!u=t=W(MT{M+Xb zkF^qRP;I%hq?1UCHb;cKJci9S4CgUVEUW~(o{7b)+YdEZRBa~%?tN<5Uw)2dOU(CyTmrq*nn%v#y4-bz z6JYTg158(}ghEf9q=U!`WDRYX71@r3OmVUiBe&YZx8pA7*A}Zbc-WYCyFk~JHqDEs zNDr*~{pJ?xynTG6FYIB}ZVdi$J5Krrg>>sw8Bj`dgg&zxLeDq#!v3$N9*E zZWi2Ch3%%dZljJDj6D2oRZL`Bo7Puhc+#JP7mBooTWIgUOHG-n8!#@ zLhduPDptrY*Tly)+VM ze+mel4QWtJU?xwbc81Cd$%;aG|HfEd$T~v6AoTK74?)Zi*AcNyeJb-mdzN3**`B3I zu?zGv381ui57B;u)RoT~6HSi9RO7QCBxHalY3y-l87=Vpe`RbJL`iXAAdlj^zyCH1 zlK92J`o!bL8hzUIX8B2onUsNma{+RzLsqYE50kTt$fsBNDAqpHLY6y;fA$Q0-d9Z-%4f-rCT0Ndk95Q?Vif>x?D z^bf7n4kHU6%AZ3OCY%Mss^l?+q4x+N_5HmSrlhbf2E6Wlhnr6B%0quaaw5c(7vyiD zfSlj+AX-x71Gy++OYZqY5BTHxx5R+)?=30vO6;$aXzkTy2GL(ucaWoBUW7yTFnD?wU0w_4}G2W;j0r{w*5a$v<;M)9qN8+ZpNN56AMhS_7R1>-T4~H zBzZLdrh|a-y9N!sTFor*lo6`S1t1dVRKGXGg1FN2@5Gh=_N!PRGq)ozPX|bf7eG@n z4;*fQ!mf*_%TjY+EAazM^kh)~1z7(W=MT{5FSaJ(D{n{XL5yqoYTa9IbJTH=?-4@P zg%W|-&C8)>=%?eI)mpO;m(G7QodJ>G<_C!kg#CP1|Mi2@>^0{sDrl4nMoPAj>M#N? z=bc_jVn;Y^{K)@c<9n}ij{Wc<7l^MPPUTPY*~X193j&@a!YepkD_-6Bw0UcK7|??* zUnY}Wg^!r&O_pjywcLqc+x6|dLHrb}=_G0Wb$#Rwc>Ivd8}`ox`Akk6sCzkDe!hcdaMQ{d|KO2mX@J#nt6qYlGj9ZANz}-@@K)~pTIU6 zIt><5cU)$NgD(M!oer=#(qWC8$qD&rRW>WyAaG}3f3jKtW{Op@)RuHC_k^V@lBqY< z!y*HrsD2snkNw48un)CFL>9|V#R$fb4%Vs@##t2`xfR!ZJCd^Y$X03#3F_`bGj2=o zIZ)~^@RqT#ZJ7~=QYNMH55*ks8DcmmPbTj}>??;6-^R7wkDGe$JtJ*0s{P#eEpVAW z*R_0!OV_%aydM?#I7>{^G##C8@QR;)-eJEmDbm!?7hlou*7W>gwDXYSI^96&8-WG0 zw$lQy*$#`7;be3Mv(Nf4n!c-*kVDDLuLgz0$8%)TpU}lTTePpt7F;&C{UOzkY3`j) z15KVs+4PVN(6}b;c-Rh|zqdL_=Y3)n6Is%UeB#dk+9wJxegx9`Y2cdhK(E4+Q+KGJ zDMc&`U#w%Y3W;GQ5#UIl=@7$H<&K_VOYrd;_y1NmW_G4p_}LU^za<03m&kRG&c>wp znkdhSbE5qMH4Q}dsVhm@CgoS3dMwqOg%mlWit2PWlr%am8?>FRd`7q!`wYo&gYB`m z>E-Y~cqs7jKqWrh$iAXo?wMbp+~sZZD=D)5;d$fMqUYkv3>w7MMGxX<36(uIrNsQj z+F^qE^KrKra;J|l%@r~i*gtB;H4*V|cMZ8kL`*S^Huq5q#@ypTc_q#}Kim9>1Alx( zaP9~TZprms>$QDV(cx9%!Apj>OVNc5i=xctBSv9soIXUvZs?NPI{p!$|BX^*9mC}Z z=WYA$-xS!87V8=X^KrG_m(MPq7c~nO-IWxvBtu4$ zo0g{i$5)&X;Nq1M?LJ~V+CMTUDuPP{}vuuDx=CD@C} z>RWnfjYq-GIUoyRpwcqG|9DHzm;S0M+x|*vCoiZ^hha_Klt8Y*?544s^<4T!(x|=Y zXj-W#e)c|z2OBl2Y< z$pW}a_4(y54)R1OI%I+IEB!jZ9v}I3u3($TG#Y1rOC2EM#BPG zo|QJf>_VEn*3hvM3XBgCiGVwi?<-_^?{;l&;fym|zx8(LqcKSqf{a0MdjQV&Wn}a1F4LWe%&^z^pwRmJ}kUz~G63_sC%!kr8nf{oHb!zm;E7l!WSl9Ah7{#i3wh zc=8Uv`u5ZBh9s*k8^{b3PX^ND3FzO6qL)h;-!{*J>ygLJpWXL@m|}(+%us%97GyH+ z*A$LyM-&NTdpf)T#H$Cs;6+ivT?JbMyYUwT)AGe1?O!@&0Id$1@JZ_EnVravk^B28 z6J|5_96cC+|M^szI_Q`=t()QsqjWAb{Fph*|8VA<$#K9^jRYQ0?Rd*$!6!QV&IPX_ z@AA2)f8NYKC?;tixgp|Jd4h^<3$jvr`CGqr#_>`uQ6^~Efx*n=21PQ#C)##D#=fGlW7^*T^|V1_M@~2mZ-da3iI)^TgNBKtE8h?-{M+R% zD^k9*+v)p^Mdsi^yqK|M@EAp~sF5u_8ICDaxq$+sH4pE9P~|Ib90u7PH~w~aSY9e3 z71-SH8Fqhu9=UDsZ_m?_&T`>}!@NR%9Y2O}A1G(Ni}2Z6_jbXp_bH_?0;O*_%eD(e zikyLTn0qD2TSss7H*ek3BSyqq%c@uWr^OKAO5iw=SOJLd4#T=(qh#V`%+S)@*scqg zYg5mD-Q|RwT&-JgCcRAokNMLLz#avJ%R>EvU1&@)y*M@ccAOG4LC8CJO4!m!?yqa+W zjF3ze({RWf6CQ#V!i5cS(ngQ~n@+6*mxfQg*X04*(aR@+L4-kCYg)03+f_cj9M}As z$?8<#_1-5Kn5&`Jv7>I;&?i9*aL)^EY4_P=y^Nu+FDGz>g7gR_ORqn=$+H^WmgEdl zyi!lZuWfocgowBXvo#+~3U@h9Y&ZAgpvF%j&X_VFN4W-?A(NR*cIz3F1_3HcwQDTan!E)zebBq`Xc&hE8;N~>{ z>VXy?4fbq-0zo>f0KqK3Ez%41zN%TuYxOFNluH`$(A4@o<}?gS91?ATd<{l%Q#ZBA z>GmM(g*qsPo&moeF))`Xwu8J%%x!jft}dA*6KYkaNUh4N5-u6>SMK1v&lP#luJZns z*nyicoA+**?84zKH)`%kzMG4Qn?{@kK2&*EwdI&}ukj23o9ivOxb4MC{q|3|o|+uQ ztKE)Z=kk$zO5yj-cc)=xO>63~uN(t0QxmzPRfn*9r?K;$a$qK<_)T`^MnbDr)tPJ7zjm^CviEs04QQg)JZ1)7o&>r*S0#c81HIbf}!DTJn}*V5U=0^skIqB_8#0bLs7ICrP~6RG$!X6Nf{ zpUd!YhzQ#?T!`xg>d$s;3nYi?V5{BBm}X$C&Q`M z=9`hC`F8s@%iNQ%FFwCJToHXj4nMSnv1?$2Z3G>n=f8A!_O7QkIkg;bhg9>-R8MI> z5Z79TFQjV5M?mdL6*R$Thu_|x8iSiqNZ@{-P>I{zIfG)mM=QJ)>|dddcn=gL$~ou$ z!7Lw^rpqy{D04ASQE>Nc9Do|>f4ET^7xF&ws7Jg7XGfT3Ah6trQeZ8#Qy7c$N8A7x zeTJY3%n9J;3Q6Hxg&metrm8!6WtUV-L1Zuj$(ZXTl;hqg^gK9!=G!g2B(Y-?y#an} z2Y?o~%y|TOV?t1?zYl=#iMxBGd$PN<&0y}!`nih>n4LrSsD62f($~rV499$sGUgdw za`UWUj4}^BDFbrM2C_Q4H3hWkU3+`2HrzzJo<+Pr zZAHWBD4ZsQ7nRifKhHD`j-DKB6P!tOiz0+;8r3M1uF#TTmVzxXq8PbW;s_gz@pA{1Iv%y0MkWa&??jhd2X4 zUnVwz2F*LIh7gtsx`n_!e2&z~6GI@fX^fT3hx=2}sqQcy@eM{&PWI=3rOZN6vkufR zyg*caM#Cnd1uh4BA(4Cl#ilwC^P~WA*a=1-{5poeUorGdDh1}A>W?Ap?Em+oU6>o8 zBlwFDfYGpsDMDm9;?({^8^XymVAv}LegYTTGs4S(`jYQ3DE}eP;>IESK4T~6V$zrKj=(meDZ(hF|;;7nG*|iJE?G>!L z*bZ^dV!Ta9R(i7xw(=a6N&*FDKoBBWb4W_%4Ym^cf0~S$D`Pszb(D(H6M`N9M?L^j zLM?QwNQSI_O7b+w2OdCkNvRv~1kd9MmtjLjKq0g=o^H=E98@&+gHM1UyLq8~zbROc zjjwyY3Z$P+r1MN`V8lTn1B6!rfPY=FUanI;A54~9pJH=7-t7#L1ANQ~0wg&r+Ak^C zZbNs2&;06@uMD3;(D36oK@H%$1<38lZ1Z3%w9!d{woI+yfypB2G^|99+qKWMPtb1}{|yO3j3`{a zGqJfs>^P+PymYP&6vAops6HyO(V!k83w@+OZQsSLr0155y+ML=!g3o*;x$y61Sm{fjF>^uGC^kG-TC614;1+J80%?V!u zfM#|NY9FQiMe`P)rDCNPQ?TaXudPkXAtL}hm{KI0i}U@;00fQhG?jNtFb1f2?ntw$=s(M+LA(Tr71%Wp~}o;N$azbKeX&a9@TZ2l69xk(v2 zKfN3Vy%i~o-#fBTgH%Y>XYK{h)2Dm^M4qtk_RDRgq??t$d6G+|Yea_gcO2yd^bWTb zTpjL-@e2V+C6+E}hjXTe3;*(gGDf3OGoSTfyE-?)GDc6v-a2b_z%bpjl!$yWr1C3r zRD%7Om?&=g5=B%adCOp4^?@=XqbK|E*AAD-=;M@j@ij!i7WmYljh4gbK_=LjIAT+B zn35gPGYJkw-q*qfJZpc;>ji4E(d%7Arww3R2FkOoy!H756PX4=i(uqC|uq zpPX3><^ol-_l1dF(@zPR)ol=5{@imEUr6>p^VnXzFOdt-kFguCZrwOWIcIsi~^(^XYi84hR*|wobX{fi7!J9@8n(0p%`^+78v9v3^Wv67ORBTzlO5N<; zq9K{9RGgHXWVB>kOH{9Nw~zvZ_S;H@SrvCY;3kgb!!Kc^*pNvwuRpZyYOZqUn?Jn_ z6klE*{e58LuaHUd5q!UMpklWP2Y*%)_0Ds!BEK!0_CiKdyve89HqO7BTLZN$ ztg$vEeZ*5Q>f_(641&}ATA6zij`zqDa<2-vkKvZI z*xHnx4mJ!@#J8y7-8$&j93$mCmjXz~VkzPk{t;~({ zmZ6FR49J!Vc=;c08D?aX^3KK(mt!AKTKVg__*TP;{I-yT?1q&;7SbFf_^kjNzPkGo zRn5>+9L;vV>`DVYtHa*H^Px-NCd@9wz-~Ifl4+V)p*{@OkF+MrWdq5h+ zO!iz?_=}%zVu^nY49a`SHQ`ET8QoiQk?nwFN695`PMA|{yivCF+o_l_amGVzfbbdUm?TI|M`W?Hg6&M`w=6XCK_2K!YrEYPtOBC zMT!!CF+Klck;3KZ00J|zt6IDK;n{@;Q1~%{fRG138S3SY{$l(12Yuk_amsPE?i;n2 z*EGlKjQSiKTk3{W9OlDsU*{_abHJl@l^w6h-ofqg{p8f_O;$SxM}nMiCv{c6{P&TG zn4k@I+0|9jRsA;v*($E5yZ;!h?+~N8k6w8p&%r-WdjcOR^2y5Uo!|1)9CI?N>8d=c z1PQXT+N)G!V^_HKf7|O?<**?c(k{gcU!!D`dGP%9!LaIFTgtCb30~?*i$!F zLtb6{?OTGdupPg4L^S+)9ek4j5D%AQSu*RcPkLRNK_$C7yH=FEv8wo$KQ_MqKJLyR z>n-<{N(8T#P~=$onFo1#u|_Sbs(hYTO}W`$Up8st?OkKn=Z-RD{`PwFnZo|8F)|YS zi?=689!5occG&xpaPaQ2j03AP^^4u1>vKD5avi+9R4fnwwgGDRVaxh{e7%$(i61;z zS}&onf3+?GEn8Itofu?MRqc+;P17f`l>b<*gsZSvjA=#SP!kHhL+YV~>e@%oadiOo zq3Dv4X%h3%%UP#$O-;yXn6=8PnmnhRTcIbg+xNi$E)IoH0QVLlIn@155b3Ez2$>v! z(8tMUZtZ}+tm_ImPY49iaa=xwgu4*XQmlOHBO;>Puc~sUWQdp0hR zRX$$@0-7`!2&@k68UZ64H_1kT1kZvDNX&bEwRNo*w57AFb4~S-5$z%{Bk}3c>2lr5 zg=~AJkEY@mfm#VUkxEX*H$%6TFU3glH3F!RVzbM9tW23^z~&fHH(L&!3`U$J)|Z;R z>%frnKo#f;ALl9dJ;C)?0n;~n6+{3L5NtlOPLwVIr<}Jkwt;^vEfH}kOxMVfpb90o z4V&j)zLOsc#@t?}bRBJcDo2iUk3}#skXTI?3AGVTLa8VMEFGhTdP^!wz1Xk}VX5hpz%BD_u2mD;^>D&tUjcFYNU-crMFD zqZWwQa@XrL@M$N=)TF`?U!SvJJ3RZ6W4(EMp3A-Y_FON$zQxMLQqKFd(7@*7 zh+X^pFAEnb*Y;*?JW=qY^B5qRDmqZHJkoW!yOnm>{e z%AaQntsWv%zdh~Sm%h^O8@|UG6!AIzNIjub959+ID;qE9yfFOwSq|Oj*A}c}ZqU9~ zGhLou-qVUQ49&G%;J5cl86$d!os7@LKCSeI=$RboZgexKnp#sx8b$Ke=VA;9%RBmgF_sUxpnIXI5h-&NkqpV@ZF{YS% zt3u_(>W}6xmc*|P^NvZ2*L6bPK_UC~mS#z1v&DmNcRHpw)~7d+_MUcK$-)(Cnz=Ep z-tRM?sx6<$%|QHrd)rS#-GRU8*_ey$M_o9!FGH@&pA8kaQL_AHP!#*JwoSwUpjL{C zu5_uAlF%dZw2Sz5wHB{-O?}0zpMyu(B=@B-`)j@VYR#T&bMnah_{t=rqvwMNUedHGHQ{~&toKQM*#%dGV54iK3s#UjNY&{Me z8p>r8cBuzo<%;)0_wwdm;^g9QgfDVZ#;ryfYGicotdU+zoyQ-TvN%ua36v?5Q|x{N z@}J&z)8$tFOcy@aDMpdy0qY7X<=mJSYXQP!@3dF3$4Ym<%=GbQN4rGI+T3z$b5AJ2 zUb#V55tBVUGKp;=QeROEh=4Ml3s#dbBX3W5Z@4k8BJ0FCzRR^j{-pO4&t%WXxwB+A z_p{-&Rtu$a?t0+>BU#717q9%fz4%nXe)nS)p4tFVWVJ`qzLQx<*DTGRZYFJ z(Nmm7d(O4%%2c}$a84aoI=at)&Fso8M@4j~#`EZ>8BqwvZ=Mh3-aEdZu#EgI9^B~< zu_JM~Xs5z$*^Q;9=Yyf^;qvV3<)7H69h!<-t+fd4IH}XkMs=VDxpjg>Ktnx12fCa^ zZo&{}<}(B<1huO^7u$3;_J*Xav|H;FE(I-PtSi{H><_nP8Xh_aYisKI80$^Qle3pR zx_IQ-UC+-}c6^D&q2c8&R}+faz-wj6oiVfDA71W#1he~Xz6pK#(Ye^1fRahP4taq4 zwFH^FU%*S`iUK#g<%HR{_hXs_Jw10u{V-I->+G+S1!*o_8QvFk;~%AXrW6|yD(|vM z4&_j_4Q8y59B02waPD(C@nj=MIt@@7bi&Yo* zxIee8G_9FHZUcK&{VSeiX0cWBG4-WzvBSKVdVIg~Td0SAiv;(@+Mfl5E>jyLXb!)z zi+Mt^2_e#roqKfxTjlh|_CtQk^AWWT4UU`~?+Y3MxLu~cDI`Q|)B!xj=!j!9rn&j8 znPu}!3d<>{b2FN|i{_)1kZ=c!`wUgmdCn;*e6vNg%w5&0)yXebQX7z|6CcDTcmHZwKfOuMkg(LbE+w|=Z8W)_qv!Wg$CGtM@u*{lf@2L$rpKp`? z!t6;CW-r?KH(a`&Je2_^{g}!AK(i${*ITVS({oKNmZrTox}}@4hS@@M*PnMC%*%@3 z5c) z6HUqtzmfdv>PIlb|HlbPxYnfw>R_23!;O57jg5^ffpgVaw$lS+i>8os9BO*wxP150 zZ}Gca0_5HTWyC*6`1{TAKZ!Atp!~N^jDZRD7r4Rypck9l{Qnj7;{Ufr^4%csAX|*% UxtEnn1plcjol?w^H^2VB0Ezcg=l}o! literal 0 HcmV?d00001 diff --git a/doc/src/misc/tau.md b/doc/src/misc/tau.md index 69800ba35..7260578f1 100644 --- a/doc/src/misc/tau.md +++ b/doc/src/misc/tau.md @@ -1,7 +1,7 @@ # Tau -Encrypted tasks management app using peer-to-peer network and raft consensus. -multiple users can collaborate by working on the same tasks, and all users will have synced task list. +Encrypted tasks management app using peer-to-peer network. +Multiple users can collaborate by working on the same tasks, and all users will have synced task list. ## Install @@ -196,3 +196,87 @@ Note: All filters from the previous section could work with mod commands. ```shell % tau switch darkfi # darkfi workspace needs to be configured in config file ``` + +## Tau Architecture + +Tau using Model–view software architecture. All the operations, main data structures, +and handling messages from network protocol, happen in the Model side. +While keeping the View independent of the Model and focusing on getting update +from it continuously, and preserve and apply rules to received data. + +### Model + +The Model consist of chains(EventNodes) structured as a tree, each chain has Event-based +list. To maintain strict order each event dependent on the hash of the previous event +in the chain's events. All the chains will shared a root event to preserve the tree +structure. check the diagram bellow + +On receiving new event from the network protocol, the event will be added to the +orphans list, then a process of reorganizing the events in orphans list will +start, if the Model doesn't have the ancestor event it will ask the network +for the missing events, otherwise the event will be added to a chain in the +model according to its ancestor. For example, in the diagram below, +if new event (Event-A2) received, it will be added to the first chain. + +### View + +The view's responsibility is to checking the chains in the Model and asking for +new events, while keeping a list of event ids which have been imported +previously to prevent importing the same event twice, then order these events +according to the timestamp attached to each event, the last step is +dispatching these events to the clients. + check the diagram bellow + + +![data structure](../assets/mv_event.png) + + +## Structures + +### EventId + +Hash of all the metadata in the event + + type EventId = [u8; 32]; + +### EventAction + +The event could have many actions according to the underlying data. + + enum EventAction { ... }; + +### Event + +| Description | Data Type | Comments | +|----------------------- | -------------- | --------------------------- | +| previous_event_hash | `EventId` | Hash of the previous event | +| Action | `EventAction` | event's action | +| Timestamp | u64 | event's timestamp | + +### EventNode + +| Description | Data Type | Comments | +|--------------- | ---------------------- | ---------------------------------------- | +| parent | Option<`EventNode`> | Only current root has this set to None | +| Event | `Event` | The event itself | +| Children | Vec<`EventNode`> | The events followed this event | + +### Model + +| Description | Data Type | Comments | +|-------------- | -------------------------------- | --------------------------- | +| current_root | `EventId` | The root event for the tree | +| orphans | Vec<`Event`> | Recently added events | +| event_map | HashMap<`EventId`, `EventNode`> | The actual tree | + +### View + +| Description | Data Type | Comments | +|-------------- | -------------------- | ------------------------------------------ | +| seen | HashSet<`EventId`> | A list of events have imported from Model | + + + + + +